diff --git a/.gitattributes b/.gitattributes index 55a949bf0d6de503c4d954bc076721729a82d41b..9ecfa9a44982881b89594d999a22dc33580e4fd8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -57,6 +57,3 @@ resources/fonts/HiraginoMin-W5-90-RKSJ-H-2.ttc filter=lfs diff=lfs merge=lfs -te resources/fonts/NotoSansSC-Regular.otf filter=lfs diff=lfs merge=lfs -text resources/fonts/NotoSerifSC-Regular.otf filter=lfs diff=lfs merge=lfs -text *.png filter=lfs diff=lfs merge=lfs -text -*.gif filter=lfs diff=lfs merge=lfs -text -*.otf filter=lfs diff=lfs merge=lfs -text -*.ttf filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore index 55d3459833930b83e217b7e9dad6c4eda6199d4c..7320547895d616a132efd9bd18d1a182357d50fb 100644 --- a/.gitignore +++ b/.gitignore @@ -4,8 +4,6 @@ dist/ .idea/ venv/ .venv/ -node_modules/ -pdm.lock result.png result.jpg diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6a2373ea9fcb6ab57557d65f01c51b416187e759..c7123e76eaae968535af9071fcd087e48dfc634f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,26 +1,26 @@ +default_install_hook_types: [pre-commit, prepare-commit-msg] ci: - autofix_commit_msg: "style: auto fix by pre-commit hooks" + autofix_commit_msg: ":rotating_light: auto fix by pre-commit hooks" autofix_prs: true - autoupdate_branch: main - autoupdate_schedule: quarterly - autoupdate_commit_msg: "chore: auto update by pre-commit hooks" + autoupdate_branch: master + autoupdate_schedule: monthly + autoupdate_commit_msg: ":arrow_up: auto update by pre-commit hooks" repos: - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.5 + - repo: https://github.com/hadialqattan/pycln + rev: v2.1.3 hooks: - - id: ruff - args: [--fix, --exit-non-zero-on-fix] + - id: pycln + args: [--config, pyproject.toml] + + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort stages: [commit] - - id: ruff-format - - repo: https://github.com/pre-commit/mirrors-prettier - rev: v4.0.0-alpha.8 + - repo: https://github.com/psf/black + rev: 23.1.0 hooks: - - id: prettier - types_or: [javascript, jsx, ts, tsx, markdown, yaml, json] + - id: black stages: [commit] - exclude: | - (?x)^( - resources/resource_list.json| - docs/memes.md - )$ + diff --git a/Dockerfile b/Dockerfile index bd1ff1220d875e482e4053784ebd2dd60524e701..9a787703454d32b47309d7a125c40c2bfec248d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,24 +2,35 @@ FROM python:3.10 as tmp WORKDIR /tmp -RUN curl -sSL https://install.python-poetry.org | python - - ENV PATH="${PATH}:/root/.local/bin" COPY ./pyproject.toml ./poetry.lock* /tmp/ - -RUN poetry export -f requirements.txt --output requirements.txt --without-hashes +RUN pip install poetry \ + && poetry config virtualenvs.in-project true \ + && poetry install --only main --no-interaction --no-ansi FROM python:3.10-slim as app WORKDIR /app -EXPOSE 2233 +EXPOSE 7860 VOLUME /data +COPY --from=tmp /tmp/.venv /app/.venv + +COPY ./resources/fonts/* /usr/share/fonts/meme-fonts/ +RUN apt-get update \ + && apt-get install -y --no-install-recommends locales fontconfig fonts-noto-cjk fonts-noto-color-emoji gettext \ + && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8 \ + && fc-cache -fv \ + && apt-get purge -y --auto-remove \ + && rm -rf /var/lib/apt/lists/* + ENV TZ=Asia/Shanghai \ LC_ALL=zh_CN.UTF-8 \ + PATH="/app/.venv/bin:${PATH}" \ + VIRTUAL_ENV="/app/.venv" \ LOAD_BUILTIN_MEMES=true \ MEME_DIRS="[\"/data/memes\"]" \ MEME_DISABLED_LIST="[]" \ @@ -29,27 +40,12 @@ ENV TZ=Asia/Shanghai \ BAIDU_TRANS_APIKEY="" \ LOG_LEVEL="INFO" -COPY --from=tmp /tmp/requirements.txt /app/requirements.txt - -COPY ./resources/fonts/* /usr/share/fonts/meme-fonts/ - -RUN apt-get update \ - && apt-get install -y --no-install-recommends locales fontconfig fonts-noto-color-emoji gettext \ - && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8 \ - && fc-cache -fv \ - && apt-get purge -y --auto-remove \ - && rm -rf /var/lib/apt/lists/* \ - && pip install --no-cache-dir --upgrade -r /app/requirements.txt - COPY ./meme_generator /app/meme_generator - - COPY ./docker/config.toml.template /app/config.toml.template COPY ./docker/start.sh /app/start.sh RUN mkdir -p /.config RUN chmod -R 777 /.config RUN chmod +x /app/start.sh -RUN python -m meme_generator.cli CMD ["/app/start.sh"] diff --git a/Dockerfile.memebot b/Dockerfile.memebot deleted file mode 100644 index 365aaec810b93349c338123c907c17a72fe07f08..0000000000000000000000000000000000000000 --- a/Dockerfile.memebot +++ /dev/null @@ -1,58 +0,0 @@ -FROM python:3.10 as tmp - -WORKDIR /tmp - -RUN curl -sSL https://install.python-poetry.org | python - - -ENV PATH="${PATH}:/root/.local/bin" - -COPY ./pyproject.toml ./poetry.lock* /tmp/ - -RUN apt-get update \ - && apt-get install -y --no-install-recommends git \ - && poetry export -f requirements.txt --output requirements.txt --without-hashes \ - && git clone --depth=1 https://github.com/MeetWq/github-meme-bot - -FROM python:3.10-slim as app - -WORKDIR /app - -EXPOSE 2233 - -VOLUME /data - -ENV TZ=Asia/Shanghai \ - LC_ALL=zh_CN.UTF-8 \ - LOAD_BUILTIN_MEMES=true \ - MEME_DIRS="[\"/data/memes\"]" \ - MEME_DISABLED_LIST="[]" \ - GIF_MAX_SIZE=10.0 \ - GIF_MAX_FRAMES=100 \ - BAIDU_TRANS_APPID="" \ - BAIDU_TRANS_APIKEY="" \ - LOG_LEVEL="INFO" - -COPY --from=tmp /tmp/requirements.txt /app/requirements.txt -COPY --from=tmp /tmp/github-meme-bot/src /app/src -COPY --from=tmp /tmp/github-meme-bot/bot.py /app/bot.py -COPY --from=tmp /tmp/github-meme-bot/.env /app/.env - -COPY ./resources/fonts/* /usr/share/fonts/meme-fonts/ - -RUN apt-get update \ - && apt-get install -y --no-install-recommends locales fontconfig fonts-noto-color-emoji gettext \ - && localedef -i zh_CN -c -f UTF-8 -A /usr/share/locale/locale.alias zh_CN.UTF-8 \ - && fc-cache -fv \ - && apt-get purge -y --auto-remove \ - && rm -rf /var/lib/apt/lists/* \ - && pip install --no-cache-dir --upgrade -r /app/requirements.txt \ - && pip install --no-cache-dir --upgrade nonebot2 nonebot-adapter-github - -COPY ./meme_generator /app/meme_generator - -COPY ./docker/config.toml.template /app/config.toml.template -COPY ./docker/start_memebot.sh /app/start_memebot.sh -RUN chmod +x /app/start_memebot.sh -RUN python -m meme_generator.cli - -CMD ["/app/start_memebot.sh"] diff --git a/README.md b/README.md index 170c32639ad745f8d3ce76229f7d2d5f3933bc71..6448b446984a8d5f739174fb4de39b97c83b6160 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ emoji: 🌖 colorFrom: purple colorTo: indigo sdk: docker -app_port: 2233 pinned: false --- diff --git a/docker/config.toml.template b/docker/config.toml.template index 6c8c228abf1ecdb71392c0a7feb1de639a515cbd..ebf8de16c4d565b9ba050c72888f9d0e29389f56 100644 --- a/docker/config.toml.template +++ b/docker/config.toml.template @@ -13,7 +13,7 @@ baidu_trans_apikey = "$BAIDU_TRANS_APIKEY" [server] host = "0.0.0.0" -port = 2233 +port = 7860 [log] log_level = "$LOG_LEVEL" diff --git a/docker/start_memebot.sh b/docker/start_memebot.sh deleted file mode 100644 index 1a3cc3c2fb2df9d879cfd74fd57122f51f70cbc4..0000000000000000000000000000000000000000 --- a/docker/start_memebot.sh +++ /dev/null @@ -1,7 +0,0 @@ -#! /usr/bin/env bash - -mkdir -p ~/.config/meme_generator - -envsubst < /app/config.toml.template > ~/.config/meme_generator/config.toml - -exec python /app/bot.py diff --git a/docs/develop.md b/docs/develop.md index 1cd5f6337e586aa582165d7373b9aa38f96c2f58..89e8641e1b1c0abbcd88ddf31d64be407d1c02e4 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -72,6 +72,7 @@ add_meme( 也可以一个文件中注册多个表情,如:[gif_subtitle](../meme_generator/memes/gif_subtitle/__init__.py) + ## 参数定义 部分表情需要额外的参数。表情参数的类型定义如下: diff --git a/docs/docker.md b/docs/docker.md index 82c25073ac6443527650f1d0c3e0fb6aa326ea17..009ee8ca410293773e8e9acf97d0c0083c987585 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -14,17 +14,19 @@ docker run -d \ 运行后可通过 api 方式调用 + ### 环境变量 -| 变量名 | 默认值 | 说明 | -| -------------------- | ------------------- | ----------------------- | -| `MEME_DIRS` | `'["/data/memes"]'` | 额外表情路径 | -| `MEME_DISABLED_LIST` | `'[]'` | 禁用表情列表 | -| `GIF_MAX_SIZE` | `10.0` | 限制生成的 gif 文件大小 | -| `GIF_MAX_FRAMES` | `100` | 限制生成的 gif 文件帧数 | -| `BAIDU_TRANS_APPID` | `''` | 百度翻译 appid | -| `BAIDU_TRANS_APIKEY` | `''` | 百度翻译 apikey | -| `LOG_LEVEL` | `'INFO'` | 日志等级 | +| 变量名 | 默认值 | 说明 | +| --- | --- | --- | +| `MEME_DIRS` | `'["/data/memes"]'` | 额外表情路径 | +| `MEME_DISABLED_LIST` | `'[]'` | 禁用表情列表 | +| `GIF_MAX_SIZE` | `10.0` | 限制生成的 gif 文件大小 | +| `GIF_MAX_FRAMES` | `100` | 限制生成的 gif 文件帧数 | +| `BAIDU_TRANS_APPID` | `''` | 百度翻译 appid | +| `BAIDU_TRANS_APIKEY` | `''` | 百度翻译 apikey | +| `LOG_LEVEL` | `'INFO'` | 日志等级 | + ### 加载额外表情 @@ -34,6 +36,7 @@ docker run -d \ 将额外表情放置于 `/memes` 即可 + 完整的运行示例: ```shell diff --git a/docs/images/bluearchive.jpg b/docs/images/bluearchive.jpg deleted file mode 100644 index e58d81cccaaafccf20be38cc8891c13945e0d818..0000000000000000000000000000000000000000 Binary files a/docs/images/bluearchive.jpg and /dev/null differ diff --git a/docs/images/certificate.png b/docs/images/certificate.png deleted file mode 100644 index 4c582fe3b5aeaa7c64724cb14e4c9cdf0d015835..0000000000000000000000000000000000000000 --- a/docs/images/certificate.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2ba077918e7fed9ad1617e82e8b15e25833efe7a9381553fccf0ab24b2b87dec -size 1831588 diff --git a/docs/images/clown.png b/docs/images/clown.png deleted file mode 100644 index f756dfd25979c076200d4114847b1e9c605fce81..0000000000000000000000000000000000000000 --- a/docs/images/clown.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:017a9a7467b61b65c478f0b72e1e0f115f865746af196fb779115b6199d415d4 -size 467472 diff --git a/docs/images/clown_instance0.png b/docs/images/clown_instance0.png deleted file mode 100644 index 1805b896a31adc041bed92b8df1728ec38836ae4..0000000000000000000000000000000000000000 --- a/docs/images/clown_instance0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:610cd9e872c4c4c78731b4ac493f303ffe2ed6580c3091ffaae50d5528d08ee5 -size 476895 diff --git a/docs/images/clown_instance1.png b/docs/images/clown_instance1.png deleted file mode 100644 index fa64d010c427720b5c6d817c031b9cb4a623b1d1..0000000000000000000000000000000000000000 --- a/docs/images/clown_instance1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ea0f59962e0d5eaeecfa8eff729b0d65f7d8f8e1f97ca89b34d1d7e2d0fa022 -size 505503 diff --git a/docs/images/daynight.jpg b/docs/images/daynight.jpg deleted file mode 100644 index ee24b5fc24dd9a2ab37bda729acb2a8442d6fbee..0000000000000000000000000000000000000000 Binary files a/docs/images/daynight.jpg and /dev/null differ diff --git a/docs/images/dog_dislike.gif b/docs/images/dog_dislike.gif deleted file mode 100644 index 3115a6fe0bfd00f68b7518a040137596248d0881..0000000000000000000000000000000000000000 --- a/docs/images/dog_dislike.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bfa37e78e853a4d2f6418509a40ca5382f48089b72780810f5164540d786f52 -size 1173208 diff --git a/docs/images/dog_dislike_instance0.gif b/docs/images/dog_dislike_instance0.gif deleted file mode 100644 index 4f78fab94b7756fd5b37241344c49d798e2c174d..0000000000000000000000000000000000000000 --- a/docs/images/dog_dislike_instance0.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:251033bc6ed4dcce37943d46e5a02961da0cb69cb3055e307faaa1df56d2756d -size 1199406 diff --git a/docs/images/dog_dislike_instance1.gif b/docs/images/dog_dislike_instance1.gif deleted file mode 100644 index f00e3024776c2cd4236a58f19edb3de621c44264..0000000000000000000000000000000000000000 --- a/docs/images/dog_dislike_instance1.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab8738f588608466129783ad1618733512cb54fce594b88e2699a0e4eac9bb5d -size 1211406 diff --git a/docs/images/frieren_take.jpg b/docs/images/frieren_take.jpg deleted file mode 100644 index 7dd58b9434e0fc4108d8a5bd1bc4454b903d2119..0000000000000000000000000000000000000000 Binary files a/docs/images/frieren_take.jpg and /dev/null differ diff --git a/docs/images/lim_x_0.jpg b/docs/images/lim_x_0.jpg deleted file mode 100644 index 8f8638bc34a3e51ffdc3289e8f104805b94cfa3d..0000000000000000000000000000000000000000 Binary files a/docs/images/lim_x_0.jpg and /dev/null differ diff --git a/docs/images/listen_music.gif b/docs/images/listen_music.gif deleted file mode 100644 index 16edfea6e2f57ea1f9cc99f5d4867215a29f299b..0000000000000000000000000000000000000000 --- a/docs/images/listen_music.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a5c9e11105067999e47422feda856c9dd7e5d6817ff1b0264702d06419495d13 -size 777798 diff --git a/docs/images/little_angel.jpg b/docs/images/little_angel.jpg deleted file mode 100644 index 3852ec56d300ce8f138c29d4107a3e6c4ab6de9e..0000000000000000000000000000000000000000 Binary files a/docs/images/little_angel.jpg and /dev/null differ diff --git a/docs/images/loading.jpg b/docs/images/loading.jpg deleted file mode 100644 index 38fbb129987dd076dba21c2adefd4dab38032971..0000000000000000000000000000000000000000 Binary files a/docs/images/loading.jpg and /dev/null differ diff --git a/docs/images/look_flat.jpg b/docs/images/look_flat.jpg deleted file mode 100644 index a5c923987812d7cd3fe7c4fc330fb132957a605d..0000000000000000000000000000000000000000 Binary files a/docs/images/look_flat.jpg and /dev/null differ diff --git a/docs/images/look_this_icon.jpg b/docs/images/look_this_icon.jpg deleted file mode 100644 index 036c90cd21854fb7ccb7462fc2c4363da19eb65f..0000000000000000000000000000000000000000 Binary files a/docs/images/look_this_icon.jpg and /dev/null differ diff --git a/docs/images/lost_dog.jpg b/docs/images/lost_dog.jpg deleted file mode 100644 index ad0a5584f601af440589c34ce82834302c010875..0000000000000000000000000000000000000000 Binary files a/docs/images/lost_dog.jpg and /dev/null differ diff --git a/docs/images/love_you.gif b/docs/images/love_you.gif deleted file mode 100644 index d6ad132a3d04508257054df84e8846287b812b2b..0000000000000000000000000000000000000000 --- a/docs/images/love_you.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c2a50ea572f11f657fbc34293fa5b293d0fd8ed56e5b168ae391eafdbba5f999 -size 15236 diff --git a/docs/images/luoyonghao_say.jpg b/docs/images/luoyonghao_say.jpg deleted file mode 100644 index 5b02d242e4954afb2e5c9bf38bbc36a0aafe63c3..0000000000000000000000000000000000000000 Binary files a/docs/images/luoyonghao_say.jpg and /dev/null differ diff --git a/docs/images/luxun_say.jpg b/docs/images/luxun_say.jpg deleted file mode 100644 index 62803b2d5e7f9febb135aa5a846b6b61940c0243..0000000000000000000000000000000000000000 Binary files a/docs/images/luxun_say.jpg and /dev/null differ diff --git a/docs/images/maikease.gif b/docs/images/maikease.gif deleted file mode 100644 index 5b6b41a7c90cf8e780e30832db31716caf735b32..0000000000000000000000000000000000000000 --- a/docs/images/maikease.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bed930e075b151063738c9ed6915bcba2a746a37b3d2fbb3e4df66babbbdccc7 -size 2991448 diff --git a/docs/images/maimai_awaken.jpg b/docs/images/maimai_awaken.jpg deleted file mode 100644 index d2dcb3fd2627a62c682f4c05295e6a5685a9dc02..0000000000000000000000000000000000000000 Binary files a/docs/images/maimai_awaken.jpg and /dev/null differ diff --git a/docs/images/maimai_join.jpg b/docs/images/maimai_join.jpg deleted file mode 100644 index d6f3e23f0917912aefa54c704e8cce916558c7c5..0000000000000000000000000000000000000000 Binary files a/docs/images/maimai_join.jpg and /dev/null differ diff --git a/docs/images/make_friend.jpg b/docs/images/make_friend.jpg deleted file mode 100644 index 6f0becaebb4ad25e91c7179da8435874fb2d9572..0000000000000000000000000000000000000000 Binary files a/docs/images/make_friend.jpg and /dev/null differ diff --git a/docs/images/marriage.jpg b/docs/images/marriage.jpg deleted file mode 100644 index bcd0de484362b64475ade941dbc6f3092b2bf362..0000000000000000000000000000000000000000 Binary files a/docs/images/marriage.jpg and /dev/null differ diff --git a/docs/images/meteor.jpg b/docs/images/meteor.jpg deleted file mode 100644 index 9fbb3330831245acd3f4687882558e1e3c2a5eb4..0000000000000000000000000000000000000000 Binary files a/docs/images/meteor.jpg and /dev/null differ diff --git a/docs/images/mihoyo.png b/docs/images/mihoyo.png deleted file mode 100644 index ca31d9fe222d622dc0a50f5a5cac10aa1ff01ece..0000000000000000000000000000000000000000 --- a/docs/images/mihoyo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b6e53d99ee6206791821fea74de00f5dd29c1acc60864561fc833bd4d1923eb -size 146911 diff --git a/docs/images/mourning.jpg b/docs/images/mourning.jpg deleted file mode 100644 index a202374a67d086b2847e9d4829e156e1022a0317..0000000000000000000000000000000000000000 Binary files a/docs/images/mourning.jpg and /dev/null differ diff --git a/docs/images/mourning_instance0.jpg b/docs/images/mourning_instance0.jpg deleted file mode 100644 index 43c17cf1d6e2a9c61a4070014fe3a171460169dd..0000000000000000000000000000000000000000 Binary files a/docs/images/mourning_instance0.jpg and /dev/null differ diff --git a/docs/images/mourning_instance1.jpg b/docs/images/mourning_instance1.jpg deleted file mode 100644 index 96c6b784862b228857fababf497ec0fa576d4386..0000000000000000000000000000000000000000 Binary files a/docs/images/mourning_instance1.jpg and /dev/null differ diff --git a/docs/images/murmur.jpg b/docs/images/murmur.jpg deleted file mode 100644 index 01565987185aa3695ce4abc05a0dce0aaf4d02f1..0000000000000000000000000000000000000000 Binary files a/docs/images/murmur.jpg and /dev/null differ diff --git a/docs/images/my_friend.jpg b/docs/images/my_friend.jpg deleted file mode 100644 index 75ee9db95bf6de97fc0b914d3ac578191831756f..0000000000000000000000000000000000000000 Binary files a/docs/images/my_friend.jpg and /dev/null differ diff --git a/docs/images/my_wife.jpg b/docs/images/my_wife.jpg deleted file mode 100644 index 744dd4babcf51eeefc940a297c63439bd14e3353..0000000000000000000000000000000000000000 Binary files a/docs/images/my_wife.jpg and /dev/null differ diff --git a/docs/images/name_generator.jpg b/docs/images/name_generator.jpg deleted file mode 100644 index 622224b5b3bbc09be06b6443ffe46c8b1060ae2f..0000000000000000000000000000000000000000 Binary files a/docs/images/name_generator.jpg and /dev/null differ diff --git a/docs/images/need.jpg b/docs/images/need.jpg deleted file mode 100644 index 36bbb54605cab5f990657ff6451d2357f1dff910..0000000000000000000000000000000000000000 Binary files a/docs/images/need.jpg and /dev/null differ diff --git a/docs/images/nekoha_holdsign.jpg b/docs/images/nekoha_holdsign.jpg deleted file mode 100644 index 7ea5d40ac8cdf109f059dd25759adc1d88676664..0000000000000000000000000000000000000000 Binary files a/docs/images/nekoha_holdsign.jpg and /dev/null differ diff --git a/docs/images/nihaosaoa.gif b/docs/images/nihaosaoa.gif deleted file mode 100644 index 86acc4ac4399b6421f2eb23d658438d330534a20..0000000000000000000000000000000000000000 --- a/docs/images/nihaosaoa.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:40a3ba7497a2b7c4ba28d33d114b13102f77dbdb243fc3995a6578c5d5a4c217 -size 1107600 diff --git a/docs/images/nijika_holdsign.jpg b/docs/images/nijika_holdsign.jpg deleted file mode 100644 index 089c9e774af76e03acea4e2c099a0d4dafb861bd..0000000000000000000000000000000000000000 Binary files a/docs/images/nijika_holdsign.jpg and /dev/null differ diff --git a/docs/images/no_response.jpg b/docs/images/no_response.jpg deleted file mode 100644 index 282e250cba213db0f31a2130be1db1a9da3ad5db..0000000000000000000000000000000000000000 Binary files a/docs/images/no_response.jpg and /dev/null differ diff --git a/docs/images/nokia.jpg b/docs/images/nokia.jpg deleted file mode 100644 index 6ad3f9a43d7545353bbf4b745504e2fd5251fb10..0000000000000000000000000000000000000000 Binary files a/docs/images/nokia.jpg and /dev/null differ diff --git a/docs/images/not_call_me.png b/docs/images/not_call_me.png deleted file mode 100644 index 6d1210fb95352b437e514eba4f7ca8953696edcb..0000000000000000000000000000000000000000 --- a/docs/images/not_call_me.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8a826fb18ebf65b5b334e94eedfdc0848a09f579912f0b65c38d2a8b000a93f -size 131737 diff --git a/docs/images/note_for_leave.jpg b/docs/images/note_for_leave.jpg deleted file mode 100644 index 63568d2ea61eba764063d13c4ed56e193ef51f62..0000000000000000000000000000000000000000 Binary files a/docs/images/note_for_leave.jpg and /dev/null differ diff --git a/docs/images/oshi_no_ko.png b/docs/images/oshi_no_ko.png deleted file mode 100644 index 9cfef12bfd645f44fab716e392a65fe408fe090f..0000000000000000000000000000000000000000 --- a/docs/images/oshi_no_ko.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:975bac38ce96a7aa26d9e0b1079bed864d1bd443ae7f33bd83abaecc05ea88f2 -size 407363 diff --git a/docs/images/osu.png b/docs/images/osu.png deleted file mode 100644 index f6b0f43b011fdcfafa3c081b7ce6faf1a613d436..0000000000000000000000000000000000000000 --- a/docs/images/osu.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:376110880c05869d41df1eb100a5620dced4340aee202e8296ba5e634693be8c -size 46527 diff --git a/docs/images/overtime.jpg b/docs/images/overtime.jpg deleted file mode 100644 index b09433d2d80e01b712a09b20938ce4869be15a72..0000000000000000000000000000000000000000 Binary files a/docs/images/overtime.jpg and /dev/null differ diff --git a/docs/images/paint.jpg b/docs/images/paint.jpg deleted file mode 100644 index 56402526099097a894670738dc708566267abe2b..0000000000000000000000000000000000000000 Binary files a/docs/images/paint.jpg and /dev/null differ diff --git a/docs/images/painter.jpg b/docs/images/painter.jpg deleted file mode 100644 index b4e222d35a8a0eaedb4169b1adb600a77c91bf88..0000000000000000000000000000000000000000 Binary files a/docs/images/painter.jpg and /dev/null differ diff --git a/docs/images/pass_the_buck.gif b/docs/images/pass_the_buck.gif deleted file mode 100644 index a59f31a15fe82988019264233ba1cd404c719559..0000000000000000000000000000000000000000 --- a/docs/images/pass_the_buck.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5e610242bd7fed4b378b345deabaaba336e7df673be2b18639397d0843ef25e -size 15235 diff --git a/docs/images/pat.gif b/docs/images/pat.gif deleted file mode 100644 index f3d30f827b41ac08a08630a5dda5a939422485ea..0000000000000000000000000000000000000000 --- a/docs/images/pat.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7904e7cf5adcdc74980219672c593ca14705958419d1e416343deb7387111655 -size 170213 diff --git a/docs/images/perfect.jpg b/docs/images/perfect.jpg deleted file mode 100644 index f2c4ea02963b9cf53a122d03c589a179b899b967..0000000000000000000000000000000000000000 Binary files a/docs/images/perfect.jpg and /dev/null differ diff --git a/docs/images/petpet.gif b/docs/images/petpet.gif deleted file mode 100644 index e5c3fad60a5138246bd8304ef0a84d86f8f5990f..0000000000000000000000000000000000000000 --- a/docs/images/petpet.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6e9760e6f96a892c8ae1a18846599246c281955f21678b07aa644e8cf65e133 -size 20139 diff --git a/docs/images/petpet_instance0.gif b/docs/images/petpet_instance0.gif deleted file mode 100644 index e5c3fad60a5138246bd8304ef0a84d86f8f5990f..0000000000000000000000000000000000000000 --- a/docs/images/petpet_instance0.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6e9760e6f96a892c8ae1a18846599246c281955f21678b07aa644e8cf65e133 -size 20139 diff --git a/docs/images/petpet_instance1.gif b/docs/images/petpet_instance1.gif deleted file mode 100644 index 594aaf218795463b77459fa2d7684e2871cad4c9..0000000000000000000000000000000000000000 --- a/docs/images/petpet_instance1.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7529bfb0406845b4e738d5e226b151e2972be96b0d6e0775e51455ffdc3664e2 -size 21554 diff --git a/docs/images/pinch.jpg b/docs/images/pinch.jpg deleted file mode 100644 index 7b48b9692877433f5ca009e21b736d494327d562..0000000000000000000000000000000000000000 Binary files a/docs/images/pinch.jpg and /dev/null differ diff --git a/docs/images/play.gif b/docs/images/play.gif deleted file mode 100644 index 61982f7fdcf0e51cd4ae75e7e1f8443e2172bb6b..0000000000000000000000000000000000000000 --- a/docs/images/play.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60858f275432ff95ec27120ffe2227cb767442f6e2663f062ad96b64cd9c3bd2 -size 503142 diff --git a/docs/images/play_game.jpg b/docs/images/play_game.jpg deleted file mode 100644 index be49808e2ec4f9409d4eaa882fd14fef32cb2968..0000000000000000000000000000000000000000 Binary files a/docs/images/play_game.jpg and /dev/null differ diff --git a/docs/images/police.jpg b/docs/images/police.jpg deleted file mode 100644 index 04f3f575b7e7d0b54d135bccf9635e885aa2fb89..0000000000000000000000000000000000000000 Binary files a/docs/images/police.jpg and /dev/null differ diff --git a/docs/images/police1.jpg b/docs/images/police1.jpg deleted file mode 100644 index a3d2b984b1cbf01848e5260e1f14abe55e291148..0000000000000000000000000000000000000000 Binary files a/docs/images/police1.jpg and /dev/null differ diff --git a/docs/images/pornhub.jpg b/docs/images/pornhub.jpg deleted file mode 100644 index 2f62170606174a2d21bb4e1572b0d871df541236..0000000000000000000000000000000000000000 Binary files a/docs/images/pornhub.jpg and /dev/null differ diff --git a/docs/images/potato.jpg b/docs/images/potato.jpg deleted file mode 100644 index 06233a6ec5023fb82ec2b952f11b0af2414a4e29..0000000000000000000000000000000000000000 Binary files a/docs/images/potato.jpg and /dev/null differ diff --git a/docs/images/pound.gif b/docs/images/pound.gif deleted file mode 100644 index d53ca3191e7d30a7bce8fbcea66c59a2c9b99ee9..0000000000000000000000000000000000000000 --- a/docs/images/pound.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98a69ddacfdc5ca7e7c21a7c491b062e492edc526e40f0387b6c0e9a3b49c98c -size 68772 diff --git a/docs/images/printing.gif b/docs/images/printing.gif deleted file mode 100644 index 09ba923c12f574f324ff75c0022a8a5e58fa2dca..0000000000000000000000000000000000000000 --- a/docs/images/printing.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:464e8e96d656dc93dfe4c99fbe172421826edb57a6c3425ff174686cdba87a51 -size 1242393 diff --git a/docs/images/prpr.jpg b/docs/images/prpr.jpg deleted file mode 100644 index 4f91a417468bbc223b77f927b7ee1a1a335c6247..0000000000000000000000000000000000000000 Binary files a/docs/images/prpr.jpg and /dev/null differ diff --git a/docs/images/psyduck.gif b/docs/images/psyduck.gif deleted file mode 100644 index cca1bfb00c93469622c37c344d889205bba8af22..0000000000000000000000000000000000000000 --- a/docs/images/psyduck.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e74ee0ca287a067dcb93f9d53bcf3efaf9ae2bea1d9a249f41c34b0a06e844f -size 1076164 diff --git a/docs/images/punch.gif b/docs/images/punch.gif deleted file mode 100644 index e3d51788e21d6017bb9bffcb9896b64030a2e8d3..0000000000000000000000000000000000000000 --- a/docs/images/punch.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3404dcda031a7545a337cc36a818cfc94295c9b745d3aaa05e7f7318c14784d2 -size 140610 diff --git a/docs/images/qiegewala.gif b/docs/images/qiegewala.gif deleted file mode 100644 index d387d5e7d9ede6689a3996bdfa5825b86699abd9..0000000000000000000000000000000000000000 --- a/docs/images/qiegewala.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bd916ccc0df424df482614683bf29bd1856d3f467d8a8ba1008f36d7a6d533ff -size 1694119 diff --git a/docs/images/raise_image.jpg b/docs/images/raise_image.jpg deleted file mode 100644 index 3b2c63e811e864329ef5e9050a7650ea634b3253..0000000000000000000000000000000000000000 Binary files a/docs/images/raise_image.jpg and /dev/null differ diff --git a/docs/images/raise_sign.jpg b/docs/images/raise_sign.jpg deleted file mode 100644 index 7581c328691028aaeee494be0c7e8a4d3331b80e..0000000000000000000000000000000000000000 Binary files a/docs/images/raise_sign.jpg and /dev/null differ diff --git a/docs/images/read_book.jpg b/docs/images/read_book.jpg deleted file mode 100644 index 97b4a79e229f51f13a3b3819990c013354c63459..0000000000000000000000000000000000000000 Binary files a/docs/images/read_book.jpg and /dev/null differ diff --git a/docs/images/repeat.gif b/docs/images/repeat.gif deleted file mode 100644 index d974ee5273294bb1fd7537fc5addae61f9c5dd9c..0000000000000000000000000000000000000000 --- a/docs/images/repeat.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9ca2af90d3890734bc735f0927814d980030c680d060777775aeeed57c4d317f -size 4165998 diff --git a/docs/images/rip.jpg b/docs/images/rip.jpg deleted file mode 100644 index fc3604d68475feaa6c6f79a8182767403ab42bbc..0000000000000000000000000000000000000000 Binary files a/docs/images/rip.jpg and /dev/null differ diff --git a/docs/images/rip_angrily.jpg b/docs/images/rip_angrily.jpg deleted file mode 100644 index 9f591d2ca4f36fac1dbe7cc2106ce1c3e7270d89..0000000000000000000000000000000000000000 Binary files a/docs/images/rip_angrily.jpg and /dev/null differ diff --git a/docs/images/rise_dead.gif b/docs/images/rise_dead.gif deleted file mode 100644 index c652d85fcc765ac3489a818ed85a1bce3835ca9f..0000000000000000000000000000000000000000 --- a/docs/images/rise_dead.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:581410d76b72398f48ba89d4ffda4647f2b01145815c376b02a754d7d6865daa -size 418462 diff --git a/docs/images/roll.gif b/docs/images/roll.gif deleted file mode 100644 index 894c8c4d38b97102fc23cf2945cec9196b26d09c..0000000000000000000000000000000000000000 --- a/docs/images/roll.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:154695cbfeeb981c23b1b07a3520c9474ee4e065168d55430c577af328686520 -size 176758 diff --git a/docs/images/rub.gif b/docs/images/rub.gif deleted file mode 100644 index 65f68d4605c668110281a6eb4c15effa26b35edd..0000000000000000000000000000000000000000 --- a/docs/images/rub.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a16ed68aa37982ea8fd74f9fdd21a343951b363678feb4f8deb58a015cf9b978 -size 45574 diff --git a/docs/images/run.jpg b/docs/images/run.jpg deleted file mode 100644 index 4c949f424b0e25a65e2cd23e01fad645a01d7477..0000000000000000000000000000000000000000 Binary files a/docs/images/run.jpg and /dev/null differ diff --git a/docs/images/safe_sense.jpg b/docs/images/safe_sense.jpg deleted file mode 100644 index 4d45cdad47a74f5bca9ee66f2b9ac361d2e5efb9..0000000000000000000000000000000000000000 Binary files a/docs/images/safe_sense.jpg and /dev/null differ diff --git a/docs/images/scratch_head.gif b/docs/images/scratch_head.gif deleted file mode 100644 index 286157a1e21e334c45e7dbd639ddf77fd84565fa..0000000000000000000000000000000000000000 --- a/docs/images/scratch_head.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d26ce08de54318117fbcf61ad17f046cdf9c6fdfb70359c569f7b35c9930318 -size 13890 diff --git a/docs/images/scratchcard.jpg b/docs/images/scratchcard.jpg deleted file mode 100644 index b2ba06223c4113a84e251c20d90decf4bb47dbb9..0000000000000000000000000000000000000000 Binary files a/docs/images/scratchcard.jpg and /dev/null differ diff --git a/docs/images/scroll.gif b/docs/images/scroll.gif deleted file mode 100644 index 85befbf5fa84ab0c769d7d1aa04b8c7d575c051a..0000000000000000000000000000000000000000 --- a/docs/images/scroll.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38a04f7bbe9539329344c4ba292eca37ce6029970f88ebef7970b10dd420f104 -size 309041 diff --git a/docs/images/shishilani.gif b/docs/images/shishilani.gif deleted file mode 100644 index 71f9bed9f78fe7f1807107e257dfebe285486562..0000000000000000000000000000000000000000 --- a/docs/images/shishilani.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f71ef633e7d45ffe3bdc0097edd7af212562ca622341e9f839d202d514be81a7 -size 940553 diff --git a/docs/images/shock.gif b/docs/images/shock.gif deleted file mode 100644 index a0554504434f0787b6843123563376026ef660dc..0000000000000000000000000000000000000000 --- a/docs/images/shock.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2291ce3815f6d28ad57977674cf774b3c7fee6d38fb19d055028c150ab9e886a -size 568360 diff --git a/docs/images/shuifandui.gif b/docs/images/shuifandui.gif deleted file mode 100644 index cd27cdd48374273b45927390c91920f3802a8fc2..0000000000000000000000000000000000000000 --- a/docs/images/shuifandui.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f890ede246eca315351d0114e9fae4b0dfc91e8df4f9db30b84c404d9ea8ea9e -size 1163387 diff --git a/docs/images/shutup.jpg b/docs/images/shutup.jpg deleted file mode 100644 index e7c0d7c74c9822c7d0f95ec5c70558330689fe48..0000000000000000000000000000000000000000 Binary files a/docs/images/shutup.jpg and /dev/null differ diff --git a/docs/images/sit_still.jpg b/docs/images/sit_still.jpg deleted file mode 100644 index 84c0598fc587460998bfd7515a06098b9c7b26fc..0000000000000000000000000000000000000000 Binary files a/docs/images/sit_still.jpg and /dev/null differ diff --git a/docs/images/slap.jpg b/docs/images/slap.jpg deleted file mode 100644 index a2e0baebdca67abccf870bb1f74e7cf4a394299b..0000000000000000000000000000000000000000 Binary files a/docs/images/slap.jpg and /dev/null differ diff --git a/docs/images/slogan.jpg b/docs/images/slogan.jpg deleted file mode 100644 index e2d75006aa984e60e0aafe646eac88e5fa23bb0c..0000000000000000000000000000000000000000 Binary files a/docs/images/slogan.jpg and /dev/null differ diff --git a/docs/images/smash.jpg b/docs/images/smash.jpg deleted file mode 100644 index e2a9d2b8c9e3bcf085d629dd05731686505ef00a..0000000000000000000000000000000000000000 Binary files a/docs/images/smash.jpg and /dev/null differ diff --git a/docs/images/step_on.gif b/docs/images/step_on.gif deleted file mode 100644 index fe68477163910bf90f26b59e27734111159a3be7..0000000000000000000000000000000000000000 --- a/docs/images/step_on.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:462c4deb358e013634d1bf8576c9fa566af4dfb0ead09e6364643c1e2f1873d8 -size 44205 diff --git a/docs/images/stew.jpg b/docs/images/stew.jpg deleted file mode 100644 index e43cd64b14111c56c9c93634f0cecc39eb606cdd..0000000000000000000000000000000000000000 Binary files a/docs/images/stew.jpg and /dev/null differ diff --git a/docs/images/suck.gif b/docs/images/suck.gif deleted file mode 100644 index 62d8d6084f3370341ca7a2a69227ad3451af023e..0000000000000000000000000000000000000000 --- a/docs/images/suck.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b2fc6da6e5d34fae3c4638abbeb8562d4013f9c0ade6ba78b491dbc702e147b -size 100235 diff --git a/docs/images/support.jpg b/docs/images/support.jpg deleted file mode 100644 index 0cc5520435cdc6227bcf7ad88c9daa8c4b8b127a..0000000000000000000000000000000000000000 Binary files a/docs/images/support.jpg and /dev/null differ diff --git a/docs/images/symmetric.jpg b/docs/images/symmetric.jpg deleted file mode 100644 index fe28b31f52e87f84f4297ce3ced13fdaebf4e0d7..0000000000000000000000000000000000000000 Binary files a/docs/images/symmetric.jpg and /dev/null differ diff --git a/docs/images/symmetric_instance0.jpg b/docs/images/symmetric_instance0.jpg deleted file mode 100644 index 2e6542784f35439aa540698904227fc4f0b8a9f7..0000000000000000000000000000000000000000 Binary files a/docs/images/symmetric_instance0.jpg and /dev/null differ diff --git a/docs/images/symmetric_instance1.jpg b/docs/images/symmetric_instance1.jpg deleted file mode 100644 index 6f91985e7354438a65d916561ed4277f1fdbcc02..0000000000000000000000000000000000000000 Binary files a/docs/images/symmetric_instance1.jpg and /dev/null differ diff --git a/docs/images/symmetric_instance2.jpg b/docs/images/symmetric_instance2.jpg deleted file mode 100644 index afce2a2ede5f61a02636fdde3a081f266e0a8f42..0000000000000000000000000000000000000000 Binary files a/docs/images/symmetric_instance2.jpg and /dev/null differ diff --git a/docs/images/symmetric_instance3.jpg b/docs/images/symmetric_instance3.jpg deleted file mode 100644 index b0abe0923aeab8608d3f0642b6f07ddae158ff13..0000000000000000000000000000000000000000 Binary files a/docs/images/symmetric_instance3.jpg and /dev/null differ diff --git a/docs/images/tankuku_raisesign.gif b/docs/images/tankuku_raisesign.gif deleted file mode 100644 index 39e0dee6d38ce0833ada659fabe6dae463de9cf1..0000000000000000000000000000000000000000 --- a/docs/images/tankuku_raisesign.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e65823cfa0d76e6001f8aeba9dbede10442479808c0f7c52c4adad9c25317d82 -size 1833321 diff --git a/docs/images/taunt.jpg b/docs/images/taunt.jpg deleted file mode 100644 index 423c322b4168dc5c38c46b480fc7349065a79887..0000000000000000000000000000000000000000 Binary files a/docs/images/taunt.jpg and /dev/null differ diff --git a/docs/images/teach.jpg b/docs/images/teach.jpg deleted file mode 100644 index daa39f704ec24272ed958f9b6751920fdb2203db..0000000000000000000000000000000000000000 Binary files a/docs/images/teach.jpg and /dev/null differ diff --git a/docs/images/tease.gif b/docs/images/tease.gif deleted file mode 100644 index 82989bce655d4a50a0478352dba8fa99030a22c1..0000000000000000000000000000000000000000 --- a/docs/images/tease.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad0da441334c7d56e6480f0b4528345479cfbddf6cd007004c0a7b492c34b534 -size 717873 diff --git a/docs/images/telescope.gif b/docs/images/telescope.gif deleted file mode 100644 index 211f52b0ba2a8ff506eec978d1acd8c0e148ec9d..0000000000000000000000000000000000000000 --- a/docs/images/telescope.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63784076c9024b33b0d5e741e0dfe99e814b7c56d1b0b9ec72ecadd21ad187d4 -size 770454 diff --git a/docs/images/think_what.jpg b/docs/images/think_what.jpg deleted file mode 100644 index 1f2dd3b6c2e97f67fe5126c58c5923f8b35090fa..0000000000000000000000000000000000000000 Binary files a/docs/images/think_what.jpg and /dev/null differ diff --git a/docs/images/this_chicken.jpg b/docs/images/this_chicken.jpg deleted file mode 100644 index 05a4488c7ca60763da1f1eaee1ccd0711a82d4ad..0000000000000000000000000000000000000000 Binary files a/docs/images/this_chicken.jpg and /dev/null differ diff --git a/docs/images/throw.jpg b/docs/images/throw.jpg deleted file mode 100644 index 28cad282f13edde99cd8d887243d50f9e8f2ee11..0000000000000000000000000000000000000000 Binary files a/docs/images/throw.jpg and /dev/null differ diff --git a/docs/images/throw_gif.gif b/docs/images/throw_gif.gif deleted file mode 100644 index 6099d680c34539e6bfd0b7e9efe850bac31ab9c9..0000000000000000000000000000000000000000 --- a/docs/images/throw_gif.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15511119a80ea47d9223cfd2695a4909810834104ad30eba279a7785065ac7d8 -size 288190 diff --git a/docs/images/thump.gif b/docs/images/thump.gif deleted file mode 100644 index d463b1976860b6e1c0905f5e2ee5bc7b4e1cfa6c..0000000000000000000000000000000000000000 --- a/docs/images/thump.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7eab3b8bb640e74be34b9f2eba594eff642616eb4bbdc47106ae5190f49ea98d -size 31112 diff --git a/docs/images/thump_wildly.gif b/docs/images/thump_wildly.gif deleted file mode 100644 index 24b5f8ee3a3460c34c1d57fe08f79e021b277d44..0000000000000000000000000000000000000000 --- a/docs/images/thump_wildly.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79a27f5fe1c1bc6de8526b60e9ade096c830a5688ac82e258e585e6ea30869b9 -size 721040 diff --git a/docs/images/tightly.gif b/docs/images/tightly.gif deleted file mode 100644 index e1dc43b57d0751febef254c6554af23f2ae455ab..0000000000000000000000000000000000000000 --- a/docs/images/tightly.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31dedae4bdc18e4d475e212239b4786fab03739ec115fd825f4adfe61a13e2b1 -size 320978 diff --git a/docs/images/together.jpg b/docs/images/together.jpg deleted file mode 100644 index c0d0a164f59aa815aae73e17ef544d2135ea7ad6..0000000000000000000000000000000000000000 Binary files a/docs/images/together.jpg and /dev/null differ diff --git a/docs/images/tom_tease.gif b/docs/images/tom_tease.gif deleted file mode 100644 index 4132d806d1ea3e7f26846f448d651360269ed0c9..0000000000000000000000000000000000000000 --- a/docs/images/tom_tease.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd7fccd7dc72fd7fccf09bf768ee5c477ee63c785fcfdd177327be3807add2a7 -size 492916 diff --git a/docs/images/tomb_yeah.jpg b/docs/images/tomb_yeah.jpg deleted file mode 100644 index ed87bd2a623147408de77fb018ade3cee943fa0c..0000000000000000000000000000000000000000 Binary files a/docs/images/tomb_yeah.jpg and /dev/null differ diff --git a/docs/images/trance.jpg b/docs/images/trance.jpg deleted file mode 100644 index c917da2574f7a51e18540e21e15efd46fc567c98..0000000000000000000000000000000000000000 Binary files a/docs/images/trance.jpg and /dev/null differ diff --git a/docs/images/turn.gif b/docs/images/turn.gif deleted file mode 100644 index 724367e1681743e7b879afb39f9c49fca1c0fad1..0000000000000000000000000000000000000000 --- a/docs/images/turn.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9409149bce8113d9dc00a6fb3fffaaa8b0cede73112aabb367b1d3fbc5d8fe10 -size 328404 diff --git a/docs/images/twist.gif b/docs/images/twist.gif deleted file mode 100644 index 58935c92591819c7634c2b131c0f150a81c2e2f1..0000000000000000000000000000000000000000 --- a/docs/images/twist.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0c6470401a46ed8d68ebbbc1a4f54c08f86c3438450c50461c24d4c1493c5c10 -size 59992 diff --git a/docs/images/universal.jpg b/docs/images/universal.jpg deleted file mode 100644 index 6ca5b2d991c3710831e7fc0b5d10a474e55e2a4c..0000000000000000000000000000000000000000 Binary files a/docs/images/universal.jpg and /dev/null differ diff --git a/docs/images/vibrate.gif b/docs/images/vibrate.gif deleted file mode 100644 index 663d508b720cdcfc8066e53c0a8d6ac3073944dd..0000000000000000000000000000000000000000 --- a/docs/images/vibrate.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:adc51e235e58fbd80e7fd62cd4abeffd7d267a96fefc0986668cd8613d75bd55 -size 107507 diff --git a/docs/images/wakeup.jpg b/docs/images/wakeup.jpg deleted file mode 100644 index ca960065be69e6453018a214bd57fdcb0761b2d2..0000000000000000000000000000000000000000 Binary files a/docs/images/wakeup.jpg and /dev/null differ diff --git a/docs/images/wallpaper.gif b/docs/images/wallpaper.gif deleted file mode 100644 index 81325737a131092a1048b36389cda224f0b6d344..0000000000000000000000000000000000000000 --- a/docs/images/wallpaper.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:860c8e290239163d8b4b33f5a11c7a77041730804ba7d2c3656b529c46701bfd -size 915319 diff --git a/docs/images/walnut_pad.jpg b/docs/images/walnut_pad.jpg deleted file mode 100644 index 851e405bcbac454509fd89d436e5bbd7eac02067..0000000000000000000000000000000000000000 Binary files a/docs/images/walnut_pad.jpg and /dev/null differ diff --git a/docs/images/walnut_zoom.gif b/docs/images/walnut_zoom.gif deleted file mode 100644 index 540ef5d9efbe93e516666578b0d52f41d9ff98ee..0000000000000000000000000000000000000000 --- a/docs/images/walnut_zoom.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d09fd3dd02836d7ef16ccd26412743125bd5ae0c18a734ac373f95b24b9b9902 -size 1845692 diff --git a/docs/images/wangjingze.gif b/docs/images/wangjingze.gif deleted file mode 100644 index 50a9a0d1c1432bbc95676d7ed71d9608757a422f..0000000000000000000000000000000000000000 --- a/docs/images/wangjingze.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6152afcf8508018835846908d93e0b557e79eb4b948fb45534f1901fefc6a332 -size 1253180 diff --git a/docs/images/washer.gif b/docs/images/washer.gif deleted file mode 100644 index fb6bff897061bdacafe9c1247a45242e1829fdab..0000000000000000000000000000000000000000 --- a/docs/images/washer.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:457de7940e7ed0e44356889496a831d3ab0cdd8e75b82c8bb505848ddfcaef4b -size 183288 diff --git a/docs/images/wave.gif b/docs/images/wave.gif deleted file mode 100644 index 1a24ca266fedd62c5089961666830be945b83e6a..0000000000000000000000000000000000000000 --- a/docs/images/wave.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9cf963aee3cac62d5641e7bc3ffac9c006b043679664b26d403c0c848125e834 -size 239863 diff --git a/docs/images/weisuoyuwei.gif b/docs/images/weisuoyuwei.gif deleted file mode 100644 index 5f0d3213b59940bf84e9f85c64978f99453a5429..0000000000000000000000000000000000000000 --- a/docs/images/weisuoyuwei.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1ea536a5914ff995c7b6c2d43ed7d6f27314db2335438bad65802daadfc76ccf -size 3529449 diff --git a/docs/images/what_I_want_to_do.jpg b/docs/images/what_I_want_to_do.jpg deleted file mode 100644 index 3b4846c88ff2dca8d4f6bf05597063c99ec99de6..0000000000000000000000000000000000000000 Binary files a/docs/images/what_I_want_to_do.jpg and /dev/null differ diff --git a/docs/images/what_he_wants.jpg b/docs/images/what_he_wants.jpg deleted file mode 100644 index 072769751888e9224811c4f8a5fca7996abab1ed..0000000000000000000000000000000000000000 Binary files a/docs/images/what_he_wants.jpg and /dev/null differ diff --git a/docs/images/why_at_me.jpg b/docs/images/why_at_me.jpg deleted file mode 100644 index f4945d840358cf8a9dbf825625bff1dcd98eee59..0000000000000000000000000000000000000000 Binary files a/docs/images/why_at_me.jpg and /dev/null differ diff --git a/docs/images/why_have_hands.jpg b/docs/images/why_have_hands.jpg deleted file mode 100644 index 499b980e11c1f89ae726c6910292f5afe6e26e4f..0000000000000000000000000000000000000000 Binary files a/docs/images/why_have_hands.jpg and /dev/null differ diff --git a/docs/images/windmill_turn.gif b/docs/images/windmill_turn.gif deleted file mode 100644 index de9b4f81d811c73609da264feb625bdb97b4f06f..0000000000000000000000000000000000000000 --- a/docs/images/windmill_turn.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d3016348d3e2d83811ba9e4fd921d1682306f8085b07c2f43cdd0b36e705f317 -size 169312 diff --git a/docs/images/wish_fail.jpg b/docs/images/wish_fail.jpg deleted file mode 100644 index 1d03e7bfc09e3bc138480f58982465cedf42044c..0000000000000000000000000000000000000000 Binary files a/docs/images/wish_fail.jpg and /dev/null differ diff --git a/docs/images/wooden_fish.gif b/docs/images/wooden_fish.gif deleted file mode 100644 index d7f1efaa8cd7d240d5441decc861153277b172da..0000000000000000000000000000000000000000 --- a/docs/images/wooden_fish.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2eda25f56dd5f2e35bb37c9ddf8deca22dd482d08b918fdc1d0a0304c3e1bb4d -size 2894137 diff --git a/docs/images/worship.gif b/docs/images/worship.gif deleted file mode 100644 index e40612c5cf9f874ff69a235b33a20dd66219e8f2..0000000000000000000000000000000000000000 --- a/docs/images/worship.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:48ba4105bc077013fc475dc5013c323923c0a951d0421b89e726abb461f218e5 -size 209935 diff --git a/docs/images/wujing.jpg b/docs/images/wujing.jpg deleted file mode 100644 index 79082533bbfff4da1c7a864ae5d87f1a94992cc4..0000000000000000000000000000000000000000 Binary files a/docs/images/wujing.jpg and /dev/null differ diff --git a/docs/images/wunian.gif b/docs/images/wunian.gif deleted file mode 100644 index 7e37741e0db15848fd2af56de7d4df936c61775a..0000000000000000000000000000000000000000 --- a/docs/images/wunian.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e2a056b10ce5ee0c21140309adc4f691cdbf9b42d811849b2baf3bd44461403 -size 1352425 diff --git a/docs/images/yalidaye.gif b/docs/images/yalidaye.gif deleted file mode 100644 index 0f1c6e78f38bb12112858fd26130166ca4482a12..0000000000000000000000000000000000000000 --- a/docs/images/yalidaye.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc0a08f6fee57df2c18b1d17fae77d3e77837fd9f8d54c17c91ff25fe45aedb0 -size 1782162 diff --git a/docs/images/youtube.jpg b/docs/images/youtube.jpg deleted file mode 100644 index 4b75dfdbf6e02767d929c46a425d6c60a2dcca37..0000000000000000000000000000000000000000 Binary files a/docs/images/youtube.jpg and /dev/null differ diff --git a/docs/images/zengxiaoxian.gif b/docs/images/zengxiaoxian.gif deleted file mode 100644 index 138ff80981d0f884f98ce4a73a0bb65953c268c9..0000000000000000000000000000000000000000 --- a/docs/images/zengxiaoxian.gif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d5f8d2b2a024e9ba3fa952778d72acbc3780f64f09b523ca6a93578a7fa8802 -size 1158724 diff --git a/docs/install.md b/docs/install.md index 9c78c9331668e29447686ce7c335155bb1b7bf02..54cce4221e20f53f0dfadefb43b43e3c31197ab0 100644 --- a/docs/install.md +++ b/docs/install.md @@ -26,6 +26,7 @@ git clone https://github.com/MeetWq/meme-generator 通过 `python -m meme_generator.cli` 运行命令行程序 + ### 字体安装 为确保表情包中的文字生成正常,需要自行安装字体 @@ -35,11 +36,11 @@ git clone https://github.com/MeetWq/meme-generator > 字体安装后若文字仍显示不正常,可删掉 `matplotlib` 字体缓存文件重新运行程序 > > 缓存文件位置: -> > - Windows: `C:\Users\\.matplotlib\fontlist-xxx.json` > - Linux: `~/.cache/matplotlib/fontlist-xxx.json` > - Mac: `~/Library/Caches/matplotlib/fontlist-xxx.json` + #### 中文字体 和 emoji字体 安装 根据系统的不同,推荐安装的字体如下: @@ -48,6 +49,7 @@ git clone https://github.com/MeetWq/meme-generator 大部分 Windows 系统自带 [微软雅黑](https://learn.microsoft.com/zh-cn/typography/font-list/microsoft-yahei) 中文字体 和 [Segoe UI Emoji](https://learn.microsoft.com/zh-cn/typography/font-list/segoe-ui-emoji) emoji 字体,一般情况下无需额外安装 + - Linux: 部分系统可能自带 [文泉驿微米黑](http://wenq.org/wqy2/index.cgi?MicroHei) 中文字体; @@ -74,38 +76,38 @@ NotoSansSC:https://fonts.google.com/noto/specimen/Noto+Sans+SC Noto Color Emoji:https://github.com/googlefonts/noto-emoji + - Mac: 苹果系统一般自带 "PingFang SC" 中文字体 与 "Apple Color Emoji" emoji 字体 + #### 其他字体安装 某些表情包需要用到一些额外字体,存放于仓库中 [resources/fonts](https://github.com/MeetWq/meme-generator/tree/main/resources/fonts),需要自行下载安装 具体字体及对应的表情如下: -| 字体名 | 字体文件名 | 用到该字体的表情 | 备注 | -| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ----------------- | -| [Consolas](https://learn.microsoft.com/zh-cn/typography/font-list/consolas) | [consola.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/consola.ttf) | `charpic` | | -| [FZKaTong-M19S](https://www.foundertype.com/index.php/FontInfo/index/id/136) | [FZKATJW.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZKATJW.ttf) | `capoo_say` | 方正卡通 | -| [FZXS14](https://www.foundertype.com/index.php/FontInfo/index/id/208) | [FZXS14.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZXS14.ttf) | `nokia` | 方正像素14 | -| [FZSJ-QINGCRJ](https://www.foundertype.com/index.php/FontInfo/index/id/5178) | [FZSJ-QINGCRJ.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZSJ-QINGCRJ.ttf) | `psyduck`、`nijika_holdsign` | 方正手迹-青春日记 | -| [FZShaoEr-M11S](https://www.foundertype.com/index.php/FontInfo/index/id/149) | [FZSEJW.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZSEJW.ttf) | `raise_sign`、`nekoha_holdsign` | 方正少儿 | -| [NotoSansSC](https://fonts.google.com/noto/specimen/Noto+Sans+SC) | [NotoSansSC-Regular.otf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/NotoSansSC-Regular.otf) | `5000choyen` | | -| [NotoSerifSC](https://fonts.google.com/noto/specimen/Noto+Serif+SC) | [NotoSerifSC-Regular.otf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/NotoSerifSC-Regular.otf) | `5000choyen` | | -| [HiraginoMin](https://www.fonts.net.cn/font-36201269101.html) | [HiraginoMin-W5-90-RKSJ-H-2.ttc](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/HiraginoMin-W5-90-RKSJ-H-2.ttc) | `oshi_no_ko` | 明朝体 | -| [Aller](https://fonts.adobe.com/fonts/aller) | [Aller_Bd.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/Aller_Bd.ttf) | `osu` | | -| [Ro GSan Serif Std](https://www.morisawa.co.jp/fonts/specimen/1646) | [RoGSanSrfStd-Bd.otf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/RoGSanSrfStd-Bd.otf) | `bluearchive` | | -| [Glow Sans SC](https://github.com/welai/glow-sans) | [GlowSansSC-Normal-Heavy.otf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/GlowSansSC-Normal-Heavy.otf) | `bluearchive` | 未来荧黑 | +| 字体名 | 字体文件名 | 用到该字体的表情 | 备注 | +| --- | --- | --- | --- | +| [Consolas](https://learn.microsoft.com/zh-cn/typography/font-list/consolas) | [consola.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/consola.ttf) | `charpic` | | +| [FZKaTong-M19S](https://www.foundertype.com/index.php/FontInfo/index/id/136) | [FZKATJW.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZKATJW.ttf) | `capoo_say` | 方正卡通 | +| [FZXS14](https://www.foundertype.com/index.php/FontInfo/index/id/208) | [FZXS14.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZXS14.ttf) | `nokia` | 方正像素14 | +| [FZSJ-QINGCRJ](https://www.foundertype.com/index.php/FontInfo/index/id/5178) | [FZSJ-QINGCRJ.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZSJ-QINGCRJ.ttf) | `psyduck`、`nijika_holdsign` | 方正手迹-青春日记 | +| [FZShaoEr-M11S](https://www.foundertype.com/index.php/FontInfo/index/id/149) | [FZSEJW.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/FZSEJW.ttf) | `raise_sign`、`nekoha_holdsign` | 方正少儿 | +| [NotoSansSC](https://fonts.google.com/noto/specimen/Noto+Sans+SC) | [NotoSansSC-Regular.otf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/NotoSansSC-Regular.otf) | `5000choyen` | | +| [NotoSerifSC](https://fonts.google.com/noto/specimen/Noto+Serif+SC) | [NotoSerifSC-Regular.otf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/NotoSerifSC-Regular.otf) | `5000choyen` | | +| [HiraginoMin](https://www.fonts.net.cn/font-36201269101.html) | [HiraginoMin-W5-90-RKSJ-H-2.ttc](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/HiraginoMin-W5-90-RKSJ-H-2.ttc) | `oshi_no_ko` | 明朝体 | +| [Aller](https://fonts.adobe.com/fonts/aller) | [Aller_Bd.ttf](https://github.com/MeetWq/meme-generator/blob/main/resources/fonts/Aller_Bd.ttf) | `osu` | | + #### 字体安装方式 不同系统的字体安装方式: - Windows: - - - 双击通过字体查看器安装 - - 复制到字体文件夹:`C:\Windows\Fonts` + - 双击通过字体查看器安装 + - 复制到字体文件夹:`C:\Windows\Fonts` - Linux: diff --git a/docs/memes.md b/docs/memes.md index 1a39f0253ddaffe4d710e06ca6a653d78256ab22..2942de12f9e500f5649b543ce78f74d03ac803b9 100644 --- a/docs/memes.md +++ b/docs/memes.md @@ -22,196 +22,182 @@ 15. [beat_head (拍头)](#beat_head) 16. [bite (啃)](#bite) 17. [blood_pressure (高血压)](#blood_pressure) -18. [bluearchive (蔚蓝档案标题/batitle)](#bluearchive) -19. [bocchi_draft (波奇手稿)](#bocchi_draft) -20. [bronya_holdsign (布洛妮娅举牌/大鸭鸭举牌)](#bronya_holdsign) -21. [bubble_tea (奶茶)](#bubble_tea) -22. [call_110 (遇到困难请拨打)](#call_110) -23. [caoshen_bite (草神啃)](#caoshen_bite) -24. [capoo_draw (咖波画)](#capoo_draw) -25. [capoo_rip (咖波撕)](#capoo_rip) -26. [capoo_rub (咖波蹭/咖波贴)](#capoo_rub) -27. [capoo_say (咖波说)](#capoo_say) -28. [capoo_strike (咖波撞/咖波头槌)](#capoo_strike) -29. [captain (舰长)](#captain) -30. [certificate (奖状/证书)](#certificate) -31. [chanshenzi (馋身子)](#chanshenzi) -32. [charpic (字符画)](#charpic) -33. [chase_train (追列车/追火车)](#chase_train) -34. [china_flag (国旗)](#china_flag) -35. [clown (小丑)](#clown) -36. [confuse (迷惑)](#confuse) -37. [coupon (兑换券)](#coupon) -38. [cover_face (捂脸)](#cover_face) -39. [crawl (爬)](#crawl) -40. [cyan (群青)](#cyan) -41. [daynight (白天黑夜/白天晚上)](#daynight) -42. [decent_kiss (像样的亲亲)](#decent_kiss) -43. [dianzhongdian (入典/典中典/黑白草图)](#dianzhongdian) -44. [dinosaur (恐龙/小恐龙)](#dinosaur) -45. [distracted (注意力涣散)](#distracted) -46. [divorce (离婚协议/离婚申请)](#divorce) -47. [dog_dislike (狗都不玩)](#dog_dislike) -48. [dog_of_vtb (管人痴)](#dog_of_vtb) -49. [dont_go_near (不要靠近)](#dont_go_near) -50. [dont_touch (别碰)](#dont_touch) -51. [douyin (douyin)](#douyin) -52. [eat (吃)](#eat) -53. [fanatic (狂爱/狂粉)](#fanatic) -54. [fencing (击剑/🤺)](#fencing) -55. [fill_head (满脑子)](#fill_head) -56. [find_chips (整点薯条)](#find_chips) -57. [flash_blind (闪瞎)](#flash_blind) -58. [follow (关注)](#follow) -59. [frieren_take (芙莉莲拿)](#frieren_take) -60. [funny_mirror (哈哈镜)](#funny_mirror) -61. [garbage (垃圾/垃圾桶)](#garbage) -62. [genshin_start (原神启动)](#genshin_start) -63. [good_news (喜报)](#good_news) -64. [google (google)](#google) -65. [guichu (鬼畜)](#guichu) -66. [gun (手枪)](#gun) -67. [hammer (锤)](#hammer) -68. [high_EQ (低情商xx高情商xx)](#high_EQ) -69. [hit_screen (打穿/打穿屏幕)](#hit_screen) -70. [hold_grudge (记仇)](#hold_grudge) -71. [hold_tight (抱紧)](#hold_tight) -72. [hug_leg (抱大腿)](#hug_leg) -73. [hutao_bite (胡桃啃)](#hutao_bite) -74. [imprison (坐牢)](#imprison) -75. [incivilization (不文明)](#incivilization) -76. [interview (采访)](#interview) -77. [jiji_king (急急国王)](#jiji_king) -78. [jiujiu (啾啾)](#jiujiu) -79. [kaleidoscope (万花筒/万花镜)](#kaleidoscope) -80. [karyl_point (凯露指)](#karyl_point) -81. [keep_away (远离)](#keep_away) -82. [kick_ball (踢球)](#kick_ball) -83. [kirby_hammer (卡比锤/卡比重锤)](#kirby_hammer) -84. [kiss (亲/亲亲)](#kiss) -85. [klee_eat (可莉吃)](#klee_eat) -86. [knock (敲)](#knock) -87. [learn (偷学)](#learn) -88. [lim_x_0 (等价无穷小)](#lim_x_0) -89. [listen_music (听音乐)](#listen_music) -90. [little_angel (小天使)](#little_angel) -91. [loading (加载中)](#loading) -92. [look_flat (看扁)](#look_flat) -93. [look_this_icon (看图标)](#look_this_icon) -94. [lost_dog (寻狗启事)](#lost_dog) -95. [love_you (永远爱你)](#love_you) -96. [luoyonghao_say (罗永浩说)](#luoyonghao_say) -97. [luxun_say (鲁迅说/鲁迅说过)](#luxun_say) -98. [maikease (麦克阿瑟说)](#maikease) -99. [maimai_awaken (旅行伙伴觉醒)](#maimai_awaken) -100. [maimai_join (旅行伙伴加入)](#maimai_join) -101. [make_friend (交个朋友)](#make_friend) -102. [marriage (结婚申请/结婚登记)](#marriage) -103. [meteor (流星)](#meteor) -104. [mihoyo (米哈游)](#mihoyo) -105. [mourning (上香)](#mourning) -106. [murmur (低语)](#murmur) -107. [my_friend (我朋友说)](#my_friend) -108. [my_wife (我老婆/这是我老婆)](#my_wife) -109. [name_generator (亚文化取名机/亚名)](#name_generator) -110. [need (需要/你可能需要)](#need) -111. [nekoha_holdsign (猫羽雫举牌/猫猫举牌)](#nekoha_holdsign) -112. [nihaosaoa (你好骚啊)](#nihaosaoa) -113. [nijika_holdsign (伊地知虹夏举牌/虹夏举牌)](#nijika_holdsign) -114. [no_response (无响应)](#no_response) -115. [nokia (诺基亚/有内鬼)](#nokia) -116. [not_call_me (不喊我)](#not_call_me) -117. [note_for_leave (请假条)](#note_for_leave) -118. [oshi_no_ko (我推的网友)](#oshi_no_ko) -119. [osu (osu)](#osu) -120. [overtime (加班)](#overtime) -121. [paint (这像画吗)](#paint) -122. [painter (小画家)](#painter) -123. [pass_the_buck (推锅/甩锅)](#pass_the_buck) -124. [pat (拍)](#pat) -125. [perfect (完美)](#perfect) -126. [petpet (摸/摸摸/摸头/rua)](#petpet) -127. [pinch (捏/捏脸)](#pinch) -128. [play (顶/玩)](#play) -129. [play_game (玩游戏)](#play_game) -130. [police (出警)](#police) -131. [police1 (警察)](#police1) -132. [pornhub (ph/pornhub)](#pornhub) -133. [potato (土豆)](#potato) -134. [pound (捣)](#pound) -135. [printing (打印)](#printing) -136. [prpr (舔/舔屏/prpr)](#prpr) -137. [psyduck (可达鸭)](#psyduck) -138. [punch (打拳)](#punch) -139. [qiegewala (切格瓦拉)](#qiegewala) -140. [raise_image (举)](#raise_image) -141. [raise_sign (举牌)](#raise_sign) -142. [read_book (看书)](#read_book) -143. [repeat (复读)](#repeat) -144. [rip (撕)](#rip) -145. [rip_angrily (怒撕)](#rip_angrily) -146. [rise_dead (诈尸/秽土转生)](#rise_dead) -147. [roll (滚)](#roll) -148. [rub (贴/贴贴/蹭/蹭蹭)](#rub) -149. [run (快跑)](#run) -150. [safe_sense (安全感)](#safe_sense) -151. [scratch_head (挠头)](#scratch_head) -152. [scratchcard (刮刮乐)](#scratchcard) -153. [scroll (滚屏)](#scroll) -154. [shishilani (食屎啦你)](#shishilani) -155. [shock (震惊)](#shock) -156. [shuifandui (谁反对)](#shuifandui) -157. [shutup (别说了)](#shutup) -158. [sit_still (坐得住/坐的住)](#sit_still) -159. [slap (一巴掌)](#slap) -160. [slogan (口号)](#slogan) -161. [smash (砸)](#smash) -162. [step_on (踩)](#step_on) -163. [stew (炖)](#stew) -164. [suck (吸/嗦)](#suck) -165. [support (精神支柱)](#support) -166. [symmetric (对称)](#symmetric) -167. [tankuku_raisesign (唐可可举牌)](#tankuku_raisesign) -168. [taunt (嘲讽)](#taunt) -169. [teach (讲课/敲黑板)](#teach) -170. [tease (拿捏/戏弄)](#tease) -171. [telescope (望远镜)](#telescope) -172. [think_what (想什么)](#think_what) -173. [this_chicken (这是鸡/🐔)](#this_chicken) -174. [throw (丢/扔)](#throw) -175. [throw_gif (抛/掷)](#throw_gif) -176. [thump (捶)](#thump) -177. [thump_wildly (捶爆/爆捶)](#thump_wildly) -178. [tightly (紧贴/紧紧贴着)](#tightly) -179. [together (一起)](#together) -180. [tom_tease (汤姆嘲笑)](#tom_tease) -181. [tomb_yeah (上坟/坟前比耶)](#tomb_yeah) -182. [trance (恍惚)](#trance) -183. [turn (转)](#turn) -184. [twist (搓)](#twist) -185. [universal (万能表情/空白表情)](#universal) -186. [vibrate (震动)](#vibrate) -187. [wakeup (xx起来了)](#wakeup) -188. [wallpaper (墙纸)](#wallpaper) -189. [walnut_pad (胡桃平板)](#walnut_pad) -190. [walnut_zoom (胡桃放大)](#walnut_zoom) -191. [wangjingze (王境泽)](#wangjingze) -192. [washer (洗衣机)](#washer) -193. [wave (波纹)](#wave) -194. [weisuoyuwei (为所欲为)](#weisuoyuwei) -195. [what_I_want_to_do (我想上的)](#what_I_want_to_do) -196. [what_he_wants (最想要的东西)](#what_he_wants) -197. [why_at_me (为什么@我)](#why_at_me) -198. [why_have_hands (为什么要有手)](#why_have_hands) -199. [windmill_turn (风车转)](#windmill_turn) -200. [wish_fail (许愿失败)](#wish_fail) -201. [wooden_fish (木鱼)](#wooden_fish) -202. [worship (膜/膜拜)](#worship) -203. [wujing (吴京xx中国xx)](#wujing) -204. [wunian (五年怎么过的)](#wunian) -205. [yalidaye (压力大爷)](#yalidaye) -206. [youtube (yt/youtube)](#youtube) -207. [zengxiaoxian (曾小贤)](#zengxiaoxian) +18. [bocchi_draft (波奇手稿)](#bocchi_draft) +19. [bronya_holdsign (布洛妮娅举牌/大鸭鸭举牌)](#bronya_holdsign) +20. [bubble_tea (奶茶)](#bubble_tea) +21. [call_110 (遇到困难请拨打)](#call_110) +22. [caoshen_bite (草神啃)](#caoshen_bite) +23. [capoo_draw (咖波画)](#capoo_draw) +24. [capoo_rip (咖波撕)](#capoo_rip) +25. [capoo_rub (咖波蹭/咖波贴)](#capoo_rub) +26. [capoo_say (咖波说)](#capoo_say) +27. [capoo_strike (咖波撞/咖波头槌)](#capoo_strike) +28. [captain (舰长)](#captain) +29. [chanshenzi (馋身子)](#chanshenzi) +30. [charpic (字符画)](#charpic) +31. [chase_train (追列车/追火车)](#chase_train) +32. [china_flag (国旗)](#china_flag) +33. [confuse (迷惑)](#confuse) +34. [coupon (兑换券)](#coupon) +35. [cover_face (捂脸)](#cover_face) +36. [crawl (爬)](#crawl) +37. [cyan (群青)](#cyan) +38. [decent_kiss (像样的亲亲)](#decent_kiss) +39. [dianzhongdian (入典/典中典/黑白草图)](#dianzhongdian) +40. [dinosaur (恐龙/小恐龙)](#dinosaur) +41. [distracted (注意力涣散)](#distracted) +42. [divorce (离婚协议/离婚申请)](#divorce) +43. [dog_of_vtb (管人痴)](#dog_of_vtb) +44. [dont_go_near (不要靠近)](#dont_go_near) +45. [dont_touch (别碰)](#dont_touch) +46. [douyin (douyin)](#douyin) +47. [eat (吃)](#eat) +48. [fanatic (狂爱/狂粉)](#fanatic) +49. [fencing (击剑/🤺)](#fencing) +50. [fill_head (满脑子)](#fill_head) +51. [find_chips (整点薯条)](#find_chips) +52. [flash_blind (闪瞎)](#flash_blind) +53. [follow (关注)](#follow) +54. [funny_mirror (哈哈镜)](#funny_mirror) +55. [garbage (垃圾/垃圾桶)](#garbage) +56. [genshin_start (原神启动)](#genshin_start) +57. [good_news (喜报)](#good_news) +58. [google (google)](#google) +59. [guichu (鬼畜)](#guichu) +60. [gun (手枪)](#gun) +61. [hammer (锤)](#hammer) +62. [high_EQ (低情商xx高情商xx)](#high_EQ) +63. [hit_screen (打穿/打穿屏幕)](#hit_screen) +64. [hold_grudge (记仇)](#hold_grudge) +65. [hold_tight (抱紧)](#hold_tight) +66. [hug_leg (抱大腿)](#hug_leg) +67. [hutao_bite (胡桃啃)](#hutao_bite) +68. [imprison (坐牢)](#imprison) +69. [incivilization (不文明)](#incivilization) +70. [interview (采访)](#interview) +71. [jiji_king (急急国王)](#jiji_king) +72. [jiujiu (啾啾)](#jiujiu) +73. [kaleidoscope (万花筒/万花镜)](#kaleidoscope) +74. [karyl_point (凯露指)](#karyl_point) +75. [keep_away (远离)](#keep_away) +76. [kick_ball (踢球)](#kick_ball) +77. [kirby_hammer (卡比锤/卡比重锤)](#kirby_hammer) +78. [kiss (亲/亲亲)](#kiss) +79. [klee_eat (可莉吃)](#klee_eat) +80. [knock (敲)](#knock) +81. [learn (偷学)](#learn) +82. [lim_x_0 (等价无穷小)](#lim_x_0) +83. [listen_music (听音乐)](#listen_music) +84. [little_angel (小天使)](#little_angel) +85. [loading (加载中)](#loading) +86. [look_flat (看扁)](#look_flat) +87. [look_this_icon (看图标)](#look_this_icon) +88. [love_you (永远爱你)](#love_you) +89. [luoyonghao_say (罗永浩说)](#luoyonghao_say) +90. [luxun_say (鲁迅说/鲁迅说过)](#luxun_say) +91. [maikease (麦克阿瑟说)](#maikease) +92. [maimai_awaken (旅行伙伴觉醒)](#maimai_awaken) +93. [maimai_join (旅行伙伴加入)](#maimai_join) +94. [make_friend (交个朋友)](#make_friend) +95. [marriage (结婚申请/结婚登记)](#marriage) +96. [meteor (流星)](#meteor) +97. [mihoyo (米哈游)](#mihoyo) +98. [mourning (上香)](#mourning) +99. [murmur (低语)](#murmur) +100. [my_friend (我朋友说)](#my_friend) +101. [my_wife (我老婆/这是我老婆)](#my_wife) +102. [name_generator (亚文化取名机/亚名)](#name_generator) +103. [need (需要/你可能需要)](#need) +104. [nekoha_holdsign (猫羽雫举牌/猫猫举牌)](#nekoha_holdsign) +105. [nihaosaoa (你好骚啊)](#nihaosaoa) +106. [nijika_holdsign (伊地知虹夏举牌/虹夏举牌)](#nijika_holdsign) +107. [no_response (无响应)](#no_response) +108. [nokia (诺基亚/有内鬼)](#nokia) +109. [not_call_me (不喊我)](#not_call_me) +110. [note_for_leave (请假条)](#note_for_leave) +111. [oshi_no_ko (我推的网友)](#oshi_no_ko) +112. [osu (osu)](#osu) +113. [overtime (加班)](#overtime) +114. [paint (这像画吗)](#paint) +115. [painter (小画家)](#painter) +116. [pass_the_buck (推锅/甩锅)](#pass_the_buck) +117. [pat (拍)](#pat) +118. [perfect (完美)](#perfect) +119. [petpet (摸/摸摸/摸头/rua)](#petpet) +120. [play (顶/玩)](#play) +121. [play_game (玩游戏)](#play_game) +122. [police (出警)](#police) +123. [police1 (警察)](#police1) +124. [pornhub (ph/pornhub)](#pornhub) +125. [potato (土豆)](#potato) +126. [pound (捣)](#pound) +127. [printing (打印)](#printing) +128. [prpr (舔/舔屏/prpr)](#prpr) +129. [psyduck (可达鸭)](#psyduck) +130. [punch (打拳)](#punch) +131. [qiegewala (切格瓦拉)](#qiegewala) +132. [raise_image (举)](#raise_image) +133. [raise_sign (举牌)](#raise_sign) +134. [read_book (看书)](#read_book) +135. [repeat (复读)](#repeat) +136. [rip (撕)](#rip) +137. [rip_angrily (怒撕)](#rip_angrily) +138. [rise_dead (诈尸/秽土转生)](#rise_dead) +139. [roll (滚)](#roll) +140. [rub (贴/贴贴/蹭/蹭蹭)](#rub) +141. [run (快跑)](#run) +142. [safe_sense (安全感)](#safe_sense) +143. [scratch_head (挠头)](#scratch_head) +144. [scratchcard (刮刮乐)](#scratchcard) +145. [scroll (滚屏)](#scroll) +146. [shishilani (食屎啦你)](#shishilani) +147. [shock (震惊)](#shock) +148. [shuifandui (谁反对)](#shuifandui) +149. [shutup (别说了)](#shutup) +150. [sit_still (坐得住/坐的住)](#sit_still) +151. [slap (一巴掌)](#slap) +152. [slogan (口号)](#slogan) +153. [smash (砸)](#smash) +154. [step_on (踩)](#step_on) +155. [suck (吸/嗦)](#suck) +156. [support (精神支柱)](#support) +157. [symmetric (对称)](#symmetric) +158. [tankuku_raisesign (唐可可举牌)](#tankuku_raisesign) +159. [taunt (嘲讽)](#taunt) +160. [teach (讲课/敲黑板)](#teach) +161. [tease (拿捏/戏弄)](#tease) +162. [think_what (想什么)](#think_what) +163. [throw (丢/扔)](#throw) +164. [throw_gif (抛/掷)](#throw_gif) +165. [thump (捶)](#thump) +166. [thump_wildly (捶爆/爆捶)](#thump_wildly) +167. [tightly (紧贴/紧紧贴着)](#tightly) +168. [together (一起)](#together) +169. [trance (恍惚)](#trance) +170. [turn (转)](#turn) +171. [twist (搓)](#twist) +172. [universal (万能表情/空白表情)](#universal) +173. [vibrate (震动)](#vibrate) +174. [wakeup (xx起来了)](#wakeup) +175. [wallpaper (墙纸)](#wallpaper) +176. [walnut_pad (胡桃平板)](#walnut_pad) +177. [walnut_zoom (胡桃放大)](#walnut_zoom) +178. [wangjingze (王境泽)](#wangjingze) +179. [wave (波纹)](#wave) +180. [weisuoyuwei (为所欲为)](#weisuoyuwei) +181. [what_I_want_to_do (我想上的)](#what_I_want_to_do) +182. [what_he_wants (最想要的东西)](#what_he_wants) +183. [why_at_me (为什么@我)](#why_at_me) +184. [why_have_hands (为什么要有手)](#why_have_hands) +185. [windmill_turn (风车转)](#windmill_turn) +186. [wish_fail (许愿失败)](#wish_fail) +187. [wooden_fish (木鱼)](#wooden_fish) +188. [worship (膜/膜拜)](#worship) +189. [wujing (吴京xx中国xx)](#wujing) +190. [wunian (五年怎么过的)](#wunian) +191. [yalidaye (压力大爷)](#yalidaye) +192. [youtube (yt/youtube)](#youtube) +193. [zengxiaoxian (曾小贤)](#zengxiaoxian) ## 5000choyen @@ -418,17 +404,6 @@ options: -## bluearchive - -- 关键词:`蔚蓝档案标题`、`batitle` -- 需要图片数目:`0` -- 需要文字数目:`2` -- 默认文字:[`Blue`, `Archive`] -- 预览: -
- -
- ## bocchi_draft - 关键词:`波奇手稿` @@ -571,31 +546,6 @@ options: -## certificate - -- 关键词:`奖状`、`证书` -- 需要图片数目:`0` -- 需要文字数目:`3` ~ `4` -- 默认文字:[`小王`, `优秀学生`, `一年一班`] -- 其他参数: - - `time` - - 描述:指定时间 - - 类型:`string` - - 默认值:`` -- 其他参数(命令行选项): -```shell -usage: meme generate certificate [-h] [-t TIME] - -options: - -h, --help show this help message and exit - -t TIME, --time TIME 指定时间 -``` - -- 预览: -
- -
- ## chanshenzi - 关键词:`馋身子` @@ -637,36 +587,6 @@ options: -## clown - -- 关键词:`小丑` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 其他参数: - - `person` - - 描述:是否使用爷爷头轮廓 - - 类型:`boolean` - - 默认值:`False` -- 其他参数(命令行选项): -```shell -usage: meme generate clown [-h] [--person] - -options: - -h, --help show this help message and exit - --person, /爷 是否使用爷爷头轮廓 -``` - -- 预览: -> 参数:{"person":false} -
- -
- -> 参数:{"person":true} -
- -
- ## confuse - 关键词:`迷惑` @@ -732,16 +652,6 @@ options: -## daynight - -- 关键词:`白天黑夜`、`白天晚上` -- 需要图片数目:`2` -- 需要文字数目:`0` -- 预览: -
- -
- ## decent_kiss - 关键词:`像样的亲亲` @@ -793,36 +703,6 @@ options: -## dog_dislike - -- 关键词:`狗都不玩` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 其他参数: - - `circle` - - 描述:是否将图片变为圆形 - - 类型:`boolean` - - 默认值:`False` -- 其他参数(命令行选项): -```shell -usage: meme generate dog_dislike [-h] [--circle] - -options: - -h, --help show this help message and exit - --circle, /圆 是否将图片变为圆形 -``` - -- 预览: -> 参数:{"circle":false} -
- -
- -> 参数:{"circle":true} -
- -
- ## dog_of_vtb - 关键词:`管人痴` @@ -938,16 +818,6 @@ options: -## frieren_take - -- 关键词:`芙莉莲拿` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 预览: -
- -
- ## funny_mirror - 关键词:`哈哈镜` @@ -1446,16 +1316,6 @@ options: -## lost_dog - -- 关键词:`寻狗启事` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 预览: -
- -
- ## love_you - 关键词:`永远爱你` @@ -1865,16 +1725,6 @@ options: -## pinch - -- 关键词:`捏`、`捏脸` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 预览: -
- -
- ## play - 关键词:`顶`、`玩` @@ -2024,7 +1874,7 @@ options: - 关键词:`看书` - 需要图片数目:`1` -- 需要文字数目:`0` ~ `1` +- 需要文字数目:`0` - 预览:
@@ -2240,16 +2090,6 @@ options:
-## stew - -- 关键词:`炖` -- 需要图片数目:`1` -- 需要文字数目:`0` ~ `1` -- 预览: -
- -
- ## suck - 关键词:`吸`、`嗦` @@ -2358,16 +2198,6 @@ options: -## telescope - -- 关键词:`望远镜` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 预览: -
- -
- ## think_what - 关键词:`想什么` @@ -2378,17 +2208,6 @@ options: -## this_chicken - -- 关键词:`这是鸡`、`🐔` -- 需要图片数目:`1` -- 需要文字数目:`0` ~ `1` -- 默认文字:[`这是十二生肖中的鸡`] -- 预览: -
- -
- ## throw - 关键词:`丢`、`扔` @@ -2449,26 +2268,6 @@ options: -## tom_tease - -- 关键词:`汤姆嘲笑` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 预览: -
- -
- -## tomb_yeah - -- 关键词:`上坟`、`坟前比耶` -- 需要图片数目:`1` ~ `2` -- 需要文字数目:`0` -- 预览: -
- -
- ## trance - 关键词:`恍惚` @@ -2573,16 +2372,6 @@ options: -## washer - -- 关键词:`洗衣机` -- 需要图片数目:`1` -- 需要文字数目:`0` -- 预览: -
- -
- ## wave - 关键词:`波纹` diff --git a/meme_generator/app.py b/meme_generator/app.py index e14881c47f6b2e1ea6d004fe506853814adffbac..20a27306f38d2e7ea575874a0ff7b061b00526a8 100644 --- a/meme_generator/app.py +++ b/meme_generator/app.py @@ -1,4 +1,4 @@ -from typing import Any, Literal, Optional +from typing import Any, Dict, List, Literal, Optional, Tuple import filetype from fastapi import Depends, FastAPI, Form, HTTPException, Response, UploadFile @@ -20,7 +20,7 @@ class MemeArgsResponse(BaseModel): type: str description: Optional[str] = None default: Optional[Any] = None - enum: Optional[list[Any]] = None + enum: Optional[List[Any]] = None class MemeParamsResponse(BaseModel): @@ -28,14 +28,14 @@ class MemeParamsResponse(BaseModel): max_images: int min_texts: int max_texts: int - default_texts: list[str] - args: list[MemeArgsResponse] + default_texts: List[str] + args: List[MemeArgsResponse] class MemeInfoResponse(BaseModel): key: str - keywords: list[str] - patterns: list[str] + keywords: List[str] + patterns: List[str] params: MemeParamsResponse @@ -56,11 +56,11 @@ def register_router(meme: Meme): @app.post(f"/memes/{meme.key}/") async def _( - images: list[UploadFile] = [], - texts: list[str] = meme.params_type.default_texts, + images: List[UploadFile] = [], + texts: List[str] = meme.params_type.default_texts, args: args_model = Depends(args_checker), # type: ignore ): - imgs: list[bytes] = [] + imgs: List[bytes] = [] for image in images: imgs.append(await image.read()) @@ -94,16 +94,16 @@ default_meme_list = [ class RenderMemeListRequest(BaseModel): - meme_list: list[MemeKeyWithProperties] = default_meme_list + meme_list: List[MemeKeyWithProperties] = default_meme_list order_direction: Literal["row", "column"] = "column" columns: int = 4 column_align: Literal["left", "center", "right"] = "left" - item_padding: tuple[int, int] = (15, 2) - image_padding: tuple[int, int] = (50, 50) + item_padding: Tuple[int, int] = (15, 2) + image_padding: Tuple[int, int] = (50, 50) bg_color: ColorType = "white" fontsize: int = 30 fontname: str = "" - fallback_fonts: list[str] = [] + fallback_fonts: List[str] = [] def register_routers(): @@ -158,7 +158,7 @@ def register_routers(): if meme.params_type.args_type else MemeArgsModel ) - properties: dict[str, dict[str, Any]] = ( + properties: Dict[str, Dict[str, Any]] = ( args_model.schema().get("properties", {}).copy() ) properties.pop("user_infos") @@ -198,7 +198,7 @@ def register_routers(): return Response(content=content, media_type=media_type) @app.post("/memes/{key}/parse_args") - async def _(key: str, args: list[str] = []): + async def _(key: str, args: List[str] = []): try: meme = get_meme(key) return meme.parse_args(args) diff --git a/meme_generator/cli.py b/meme_generator/cli.py index 557f710281d44b5f85d82623717d1d499a0ed3df..d3398b3ed1edaeba7bf4df106f00ce509c7c364e 100644 --- a/meme_generator/cli.py +++ b/meme_generator/cli.py @@ -2,7 +2,7 @@ import asyncio import copy from argparse import ArgumentParser from pathlib import Path -from typing import Any +from typing import Any, Dict, List import filetype @@ -80,7 +80,7 @@ def meme_info(key: str) -> str: default_texts = ", ".join([f'"{text}"' for text in meme.params_type.default_texts]) - def arg_info(name: str, info: dict[str, Any]) -> str: + def arg_info(name: str, info: Dict[str, Any]) -> str: text = ( f' "{name}"\n' f" 描述:{info.get('description', '')}\n" @@ -94,7 +94,7 @@ def meme_info(key: str) -> str: if args := meme.params_type.args_type: model = args.model - properties: dict[str, dict[str, Any]] = model.schema().get("properties", {}) + properties: Dict[str, Dict[str, Any]] = model.schema().get("properties", {}) properties.pop("user_infos") args_info = "\n" + "\n".join( [arg_info(name, info) for name, info in properties.items()] @@ -134,7 +134,7 @@ def generate_meme_preview(key: str) -> str: def generate_meme( - key: str, images: list[str], texts: list[str], args: dict[str, Any] + key: str, images: List[str], texts: List[str], args: Dict[str, Any] ) -> str: try: meme = get_meme(key) @@ -166,23 +166,23 @@ def main(): handle = str(args.handle) if handle in ["list", "ls"]: - print(list_memes()) # noqa: T201 + print(list_memes()) elif handle in ["info", "show"]: key = str(args.key) - print(meme_info(key)) # noqa: T201 + print(meme_info(key)) elif handle in ["preview"]: key = str(args.key) - print(generate_meme_preview(key)) # noqa: T201 + print(generate_meme_preview(key)) elif handle in ["generate", "make"]: kwargs = vars(args) kwargs.pop("handle") key: str = kwargs.pop("key") - images: list[str] = kwargs.pop("images") - texts: list[str] = kwargs.pop("texts") - print(generate_meme(key, images, texts, kwargs)) # noqa: T201 + images: List[str] = kwargs.pop("images") + texts: List[str] = kwargs.pop("texts") + print(generate_meme(key, images, texts, kwargs)) elif handle in ["run", "start"]: run_server() @@ -193,7 +193,7 @@ def main(): loop.run_until_complete(check_resources()) else: - print(parser.format_help()) # noqa: T201 + print(parser.format_help()) if __name__ == "__main__": diff --git a/meme_generator/config.py b/meme_generator/config.py index 1bb8ea6994d70e84d481c724ea8ad7b570496dd1..cc78bb2fa342e0cebb2a60db5388f51b791ab241 100644 --- a/meme_generator/config.py +++ b/meme_generator/config.py @@ -1,6 +1,6 @@ import json from pathlib import Path -from typing import Optional, Union +from typing import List, Optional, Union import toml from pydantic import BaseModel, Extra @@ -12,13 +12,13 @@ config_file_path = get_config_file("config.toml") class MemeConfig(BaseModel): load_builtin_memes: bool = True - meme_dirs: list[Path] = [] - meme_disabled_list: list[str] = [] + meme_dirs: List[Path] = [] + meme_disabled_list: List[str] = [] class ResourceConfig(BaseModel): resource_url: Optional[str] = None - resource_urls: list[str] = [ + resource_urls: List[str] = [ "https://raw.githubusercontent.com/MeetWq/meme-generator/", "https://ghproxy.com/https://raw.githubusercontent.com/MeetWq/meme-generator/", "https://fastly.jsdelivr.net/gh/MeetWq/meme-generator@", @@ -41,7 +41,7 @@ class TranslatorConfig(BaseModel): class ServerConfig(BaseModel): host: str = "127.0.0.1" - port: int = 2233 + port: int = 7860 class LogConfig(BaseModel): diff --git a/meme_generator/dirs.py b/meme_generator/dirs.py index cecb6206f96919f32aa242f6ec0881a6df11ef38..d03aeedb99eff29cc9c0a2f3e9c0a15b9c35781b 100644 --- a/meme_generator/dirs.py +++ b/meme_generator/dirs.py @@ -23,6 +23,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ + import os import sys from pathlib import Path @@ -118,7 +119,7 @@ def user_config_dir(appname: str, roaming: bool = True) -> Path: # -- Windows support functions -- def _get_win_folder_from_registry( - csidl_name: Literal["CSIDL_APPDATA", "CSIDL_COMMON_APPDATA", "CSIDL_LOCAL_APPDATA"], + csidl_name: Literal["CSIDL_APPDATA", "CSIDL_COMMON_APPDATA", "CSIDL_LOCAL_APPDATA"] ) -> Path: """ This is a fallback technique at best. I'm not sure if using the @@ -142,7 +143,7 @@ def _get_win_folder_from_registry( def _get_win_folder_with_ctypes( - csidl_name: Literal["CSIDL_APPDATA", "CSIDL_COMMON_APPDATA", "CSIDL_LOCAL_APPDATA"], + csidl_name: Literal["CSIDL_APPDATA", "CSIDL_COMMON_APPDATA", "CSIDL_LOCAL_APPDATA"] ) -> Path: csidl_const = { "CSIDL_APPDATA": 26, diff --git a/meme_generator/download.py b/meme_generator/download.py index 967734fba35f5f07f653fa23fae3d4be55c49c60..6faa23f7c5150ec498fad093f6bf3c10a955d61c 100644 --- a/meme_generator/download.py +++ b/meme_generator/download.py @@ -3,6 +3,7 @@ import hashlib import json import time from pathlib import Path +from typing import List, Tuple import httpx from rich.progress import Progress @@ -17,13 +18,13 @@ def _resource_url(base_url: str, name: str) -> str: # https://github.com/mnixry/nonebot-plugin-gocqhttp/blob/main/nonebot_plugin_gocqhttp/process/download.py -async def get_fastest_mirror() -> list[str]: +async def get_fastest_mirror() -> List[str]: assert meme_config.resource.resource_urls, "No resource url specified." async def head_mirror(client: httpx.AsyncClient, base_url: str): begin_time = time.time() response = await client.head( - _resource_url(base_url, "resources/fonts/NotoSansSC-Regular.ttf"), timeout=5 + _resource_url(base_url, "resources/fonts/NotoSansSC-Regular.otf"), timeout=5 ) response.raise_for_status() elapsed_time = (time.time() - begin_time) * 1000 @@ -38,7 +39,7 @@ async def get_fastest_mirror() -> list[str]: return_exceptions=True, ) results = sorted( - (result for result in results if not isinstance(result, BaseException)), + (result for result in results if not isinstance(result, Exception)), key=lambda r: r["elapsed_time"], ) return [result["base_url"] for result in results] @@ -75,7 +76,7 @@ async def check_resources(): else: return - download_list: list[tuple[Path, str]] = [] + download_list: List[Tuple[Path, str]] = [] for resource in resource_list: file_name = str(resource["path"]) file_hash = str(resource["hash"]) diff --git a/meme_generator/manager.py b/meme_generator/manager.py index a75ede0c7ad9965acf56553d7637a2960947b798..78d1477ffdb9c7c0b7a7640e5e12ace363672680 100644 --- a/meme_generator/manager.py +++ b/meme_generator/manager.py @@ -2,14 +2,14 @@ import importlib import importlib.util import pkgutil from pathlib import Path -from typing import Optional, Union +from typing import Dict, List, Optional, Union from .config import meme_config from .exception import NoSuchMeme from .log import logger from .meme import Meme, MemeArgsType, MemeFunction, MemeParamsType -_memes: dict[str, Meme] = {} +_memes: Dict[str, Meme] = {} def path_to_module_name(path: Path) -> str: @@ -64,10 +64,10 @@ def add_meme( max_images: int = 0, min_texts: int = 0, max_texts: int = 0, - default_texts: list[str] = [], + default_texts: List[str] = [], args_type: Optional[MemeArgsType] = None, - keywords: list[str] = [], - patterns: list[str] = [], + keywords: List[str] = [], + patterns: List[str] = [], ): if key in _memes: logger.warning(f'Meme with key "{key}" already exists!') @@ -96,9 +96,9 @@ def get_meme(key: str) -> Meme: return _memes[key] -def get_memes() -> list[Meme]: +def get_memes() -> List[Meme]: return list(_memes.values()) -def get_meme_keys() -> list[str]: +def get_meme_keys() -> List[str]: return list(_memes.keys()) diff --git a/meme_generator/meme.py b/meme_generator/meme.py index 42033d04c8525fd489a2fd6f5d9d3346a5e017de..632a622ce11b312cd150dc1738fa8159bd020b12 100644 --- a/meme_generator/meme.py +++ b/meme_generator/meme.py @@ -1,6 +1,5 @@ import copy from argparse import ArgumentError, ArgumentParser -from collections.abc import Awaitable from contextvars import ContextVar from dataclasses import dataclass, field from io import BytesIO @@ -8,9 +7,13 @@ from pathlib import Path from typing import ( IO, Any, + Awaitable, Callable, + Dict, + List, Literal, Optional, + Type, TypeVar, Union, cast, @@ -37,14 +40,14 @@ class UserInfo(BaseModel): class MemeArgsModel(BaseModel): - user_infos: list[UserInfo] = [] + user_infos: List[UserInfo] = [] ArgsModel = TypeVar("ArgsModel", bound=MemeArgsModel) MemeFunction = Union[ - Callable[[list[BuildImage], list[str], ArgsModel], BytesIO], - Callable[[list[BuildImage], list[str], ArgsModel], Awaitable[BytesIO]], + Callable[[List[BuildImage], List[str], ArgsModel], BytesIO], + Callable[[List[BuildImage], List[str], ArgsModel], Awaitable[BytesIO]], ] @@ -74,8 +77,8 @@ class MemeArgsParser(ArgumentParser): @dataclass class MemeArgsType: parser: MemeArgsParser - model: type[MemeArgsModel] - instances: list[MemeArgsModel] = field(default_factory=list) + model: Type[MemeArgsModel] + instances: List[MemeArgsModel] = field(default_factory=list) @dataclass @@ -84,7 +87,7 @@ class MemeParamsType: max_images: int = 0 min_texts: int = 0 max_texts: int = 0 - default_texts: list[str] = field(default_factory=list) + default_texts: List[str] = field(default_factory=list) args_type: Optional[MemeArgsType] = None @@ -93,15 +96,15 @@ class Meme: key: str function: MemeFunction params_type: MemeParamsType - keywords: list[str] = field(default_factory=list) - patterns: list[str] = field(default_factory=list) + keywords: List[str] = field(default_factory=list) + patterns: List[str] = field(default_factory=list) async def __call__( self, *, - images: Union[list[str], list[Path], list[bytes], list[BytesIO]] = [], - texts: list[str] = [], - args: dict[str, Any] = {}, + images: Union[List[str], List[Path], List[bytes], List[BytesIO]] = [], + texts: List[str] = [], + args: Dict[str, Any] = {}, ) -> BytesIO: if not ( self.params_type.min_images <= len(images) <= self.params_type.max_images @@ -125,12 +128,12 @@ class Meme: except ValidationError as e: raise ArgModelMismatch(self.key, str(e)) - imgs: list[BuildImage] = [] + imgs: List[BuildImage] = [] try: for image in images: if isinstance(image, bytes): image = BytesIO(image) - imgs.append(BuildImage.open(image)) # type: ignore + imgs.append(BuildImage.open(image)) except Exception as e: raise OpenImageFailed(str(e)) @@ -143,7 +146,7 @@ class Meme: else: return await run_sync(cast(Callable[..., BytesIO], self.function))(**values) - def parse_args(self, args: list[str] = []) -> dict[str, Any]: + def parse_args(self, args: List[str] = []) -> Dict[str, Any]: parser = ( copy.deepcopy(self.params_type.args_type.parser) if self.params_type.args_type @@ -160,7 +163,7 @@ class Meme: finally: parser_message.reset(t) - async def generate_preview(self, *, args: dict[str, Any] = {}) -> BytesIO: + async def generate_preview(self, *, args: Dict[str, Any] = {}) -> BytesIO: default_images = [random_image() for _ in range(self.params_type.min_images)] default_texts = ( self.params_type.default_texts.copy() @@ -172,7 +175,7 @@ class Meme: else [random_text() for _ in range(self.params_type.min_texts)] ) - async def _generate_preview(images: list[BytesIO], texts: list[str]): + async def _generate_preview(images: List[BytesIO], texts: List[str]): try: return await self.__call__(images=images, texts=texts, args=args) except TextOrNameNotEnough: diff --git a/meme_generator/memes/5000choyen/__init__.py b/meme_generator/memes/5000choyen/__init__.py index 0538bd2017a5f9e4d25f14be80bb9d1ae976adf4..2f25662279cef91e9c425fbd9f488b0cc3bf3939 100644 --- a/meme_generator/memes/5000choyen/__init__.py +++ b/meme_generator/memes/5000choyen/__init__.py @@ -1,3 +1,5 @@ +from typing import List, Tuple + from PIL.Image import Image as IMG from PIL.Image import Resampling, Transform from pil_utils import BuildImage, Text2Image @@ -6,13 +8,13 @@ from pil_utils.gradient import ColorStop, LinearGradient from meme_generator import add_meme -def fivethousand_choyen(images, texts: list[str], args): +def fivethousand_choyen(images, texts: List[str], args): fontsize = 200 fontname = "Noto Sans SC" text = texts[0] pos_x = 40 pos_y = 220 - imgs: list[tuple[IMG, tuple[int, int]]] = [] + imgs: List[Tuple[IMG, Tuple[int, int]]] = [] def transform(img: IMG) -> IMG: skew = 0.45 @@ -24,7 +26,7 @@ def fivethousand_choyen(images, texts: list[str], args): Resampling.BILINEAR, ) - def shift(t2m: Text2Image) -> tuple[int, int]: + def shift(t2m: Text2Image) -> Tuple[int, int]: return ( pos_x - t2m.lines[0].chars[0].stroke_width @@ -32,7 +34,7 @@ def fivethousand_choyen(images, texts: list[str], args): pos_y - t2m.lines[0].ascent, ) - def add_color_text(stroke_width: int, fill: str, pos: tuple[int, int]): + def add_color_text(stroke_width: int, fill: str, pos: Tuple[int, int]): t2m = Text2Image.from_text( text, fontsize, fontname=fontname, stroke_width=stroke_width, fill=fill ) @@ -41,9 +43,9 @@ def fivethousand_choyen(images, texts: list[str], args): def add_gradient_text( stroke_width: int, - dir: tuple[int, int, int, int], - color_stops: list[tuple[float, tuple[int, int, int]]], - pos: tuple[int, int], + dir: Tuple[int, int, int, int], + color_stops: List[Tuple[float, Tuple[int, int, int]]], + pos: Tuple[int, int], ): t2m = Text2Image.from_text( text, fontsize, fontname=fontname, stroke_width=stroke_width, fill="white" diff --git a/meme_generator/memes/ace_attorney_dialog/__init__.py b/meme_generator/memes/ace_attorney_dialog/__init__.py deleted file mode 100644 index 3106104d31f47824e79ee22d85ae70eca65790f7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/ace_attorney_dialog/__init__.py +++ /dev/null @@ -1,119 +0,0 @@ -import math -from pathlib import Path - -from pil_utils import BuildImage, Text2Image - -from meme_generator import add_meme -from meme_generator.exception import TextOverLength - -img_dir = Path(__file__).parent / "images" - - -def ace_attorney_dialog(images, texts: list[str], args): - def shadow_text(text: str, fontsize: int) -> BuildImage: - fontname = "PangMenZhengDao-Cu" - inner = Text2Image.from_text( - text, - fontsize, - fill="#e60012", - fontname=fontname, - stroke_width=4, - stroke_fill="#500000", - ).to_image() - shadow_width = 10 - shadow = Text2Image.from_text( - text, - fontsize, - fill="#500000", - fontname=fontname, - stroke_width=shadow_width, - stroke_fill="#500000", - ).to_image() - dy = 30 - dx = 15 - img = BuildImage.new( - "RGBA", (inner.width + dx + shadow_width, inner.height + dy + shadow_width) - ) - img.paste(shadow, (dx - shadow_width, dy - shadow_width), alpha=True) - img.paste(inner, (0, 0), alpha=True) - return img - - text = texts[0] - text_imgs: list[BuildImage] = [] - for char in text: - text_imgs.append(shadow_text(char, 650)) - - total_width = sum(img.width for img in text_imgs) - if total_width > 4000: - raise TextOverLength(text) - - def combine_text(text_imgs: list[BuildImage]) -> BuildImage: - ratio = 0.4 - text_w = sum(img.width for img in text_imgs) - sum( - round(img.width * ratio) for img in text_imgs[1:] - ) - text_h = max(img.height for img in text_imgs) - text_img = BuildImage.new("RGBA", (text_w, text_h)) - x = 0 - for img in text_imgs: - text_img.paste(img, (x, round((text_h - img.height) / 2)), alpha=True) - x += img.width - round(img.width * ratio) - return text_img - - frame = BuildImage.open(img_dir / "bubble.png") - mark = BuildImage.open(img_dir / "mark.png") - - if total_width <= 2000: - text_img = combine_text(text_imgs) - max_width = 900 - if total_width > max_width: - text_img = text_img.resize( - (max_width, round(max_width / text_img.width * text_img.height)) - ) - text_img = text_img.rotate(10, expand=True) - frame.paste( - text_img, - ( - round((frame.width - text_img.width) / 2), - round((frame.height - text_img.height) / 2), - ), - alpha=True, - ) - frame.paste(mark, (630, 230), alpha=True) - - else: - index = math.ceil(len(text_imgs) / 2) - text_img1 = combine_text(text_imgs[:index]) - text_img2 = combine_text(text_imgs[index:]) - ratio = 0.6 - text_img1 = text_img1.resize( - (round(text_img1.width * ratio), round(text_img1.height * ratio)) - ) - text_img2 = text_img2.resize( - (round(text_img2.width * ratio), round(text_img2.height * ratio)) - ) - text_img1 = text_img1.rotate(10, expand=True) - text_img2 = text_img2.rotate(10, expand=True) - frame.paste( - text_img1, - (round((frame.width - text_img1.width) / 2) - 50, 775 - text_img1.height), - alpha=True, - ) - frame.paste( - text_img2, - (round((frame.width - text_img2.width) / 2) + 50, 325), - alpha=True, - ) - frame.paste(mark, (680, 320), alpha=True) - - return frame.save_png() - - -add_meme( - "ace_attorney_dialog", - ace_attorney_dialog, - min_texts=1, - max_texts=1, - default_texts=["表情包制作"], - keywords=["逆转裁判气泡"], -) diff --git a/meme_generator/memes/ace_attorney_dialog/images/bubble.png b/meme_generator/memes/ace_attorney_dialog/images/bubble.png deleted file mode 100644 index 22103960524900b425d1f96b0ef5dba930b63e32..0000000000000000000000000000000000000000 --- a/meme_generator/memes/ace_attorney_dialog/images/bubble.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9c762c91e86cddc92b04712d1c6d0c7156c55a7b81921df819c5c447418e6764 -size 61968 diff --git a/meme_generator/memes/ace_attorney_dialog/images/mark.png b/meme_generator/memes/ace_attorney_dialog/images/mark.png deleted file mode 100644 index 316abb92e7c8bdc598855e5fb939e52bcb5a6025..0000000000000000000000000000000000000000 --- a/meme_generator/memes/ace_attorney_dialog/images/mark.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7b5880eff0ef9441f13e4b4f4587ba14323fac4b6631ac946d9934b33e2e5edc -size 22984 diff --git a/meme_generator/memes/acg_entrance/__init__.py b/meme_generator/memes/acg_entrance/__init__.py index 64dba4be17aedddc80c86797ac453c0706512607..ead2405cc677132f304515a38a4b3bf6113cd91c 100644 --- a/meme_generator/memes/acg_entrance/__init__.py +++ b/meme_generator/memes/acg_entrance/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def acg_entrance(images: list[BuildImage], texts: list[str], args): +def acg_entrance(images: List[BuildImage], texts: List[str], args): text = texts[0] if texts else "走,跟我去二次元吧" frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/add_chaos/__init__.py b/meme_generator/memes/add_chaos/__init__.py index b5ff99f0defdc5b3205b7f2c1ec04a36b4759042..48c37f837af3cc93778d2d9d9e89047827940e18 100644 --- a/meme_generator/memes/add_chaos/__init__.py +++ b/meme_generator/memes/add_chaos/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def add_chaos(images: list[BuildImage], texts, args): +def add_chaos(images: List[BuildImage], texts, args): banner = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/addiction/__init__.py b/meme_generator/memes/addiction/__init__.py index 228a27ad569dfa4862296eef2fe4291d3768b5ba..650ea6fa7fa2b58d42daa8a6e0514aea8c5c8a50 100644 --- a/meme_generator/memes/addiction/__init__.py +++ b/meme_generator/memes/addiction/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def addiction(images: list[BuildImage], texts: list[str], args): +def addiction(images: List[BuildImage], texts: List[str], args): frame = BuildImage.open(img_dir / "0.png") if texts: diff --git a/meme_generator/memes/alike/__init__.py b/meme_generator/memes/alike/__init__.py index d17749f6f5eb022d8d0c4cfcaf48412b560a5c80..658d2c2fa03958a9871b454b38b50b5f1afa437c 100644 --- a/meme_generator/memes/alike/__init__.py +++ b/meme_generator/memes/alike/__init__.py @@ -1,10 +1,12 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import add_meme from meme_generator.utils import make_jpg_or_gif -def alike(images: list[BuildImage], texts, args): +def alike(images: List[BuildImage], texts, args): frame = BuildImage.new("RGBA", (470, 180), "white") frame.draw_text( (10, 10, 185, 140), "你怎么跟", max_fontsize=40, min_fontsize=30, halign="right" diff --git a/meme_generator/memes/always/__init__.py b/meme_generator/memes/always/__init__.py index 4dc615c3927e5453e6cb072fb952d07526992e74..271c77fdfaaa7b86ea98714b12b267b56ed38155 100644 --- a/meme_generator/memes/always/__init__.py +++ b/meme_generator/memes/always/__init__.py @@ -1,4 +1,4 @@ -from typing import Literal +from typing import List, Literal from pil_utils import BuildImage from pydantic import Field @@ -22,9 +22,7 @@ group.add_argument( default="normal", help=help, ) -group.add_argument( - "--circle", "/套娃", action="store_const", const="circle", dest="mode" -) +group.add_argument("--circle", "/套娃", action="store_const", const="circle", dest="mode") group.add_argument("--loop", "/循环", action="store_const", const="loop", dest="mode") @@ -92,7 +90,7 @@ def always_always(img: BuildImage, loop: bool = False): ) -def always(images: list[BuildImage], texts, args: Model): +def always(images: List[BuildImage], texts, args: Model): img = images[0] mode = args.mode diff --git a/meme_generator/memes/always_like/__init__.py b/meme_generator/memes/always_like/__init__.py index 4dc8ea1daca185beff461464ad66fd4ed9be31bd..55edf0349806ff39c085d517087ff5544d907615 100644 --- a/meme_generator/memes/always_like/__init__.py +++ b/meme_generator/memes/always_like/__init__.py @@ -1,5 +1,6 @@ import random from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image @@ -9,7 +10,7 @@ from meme_generator.exception import TextOrNameNotEnough, TextOverLength img_dir = Path(__file__).parent / "images" -def always_like(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def always_like(images: List[BuildImage], texts: List[str], args: MemeArgsModel): names = [info.name for info in args.user_infos] if len(images) > len(texts) + len(names): diff --git a/meme_generator/memes/anti_kidnap/__init__.py b/meme_generator/memes/anti_kidnap/__init__.py index d2e256ecb618a1922344f6b7f79f202cd1e93e12..c29cb6339c7f5ea09d92f87a0fceb98d25e0f67c 100644 --- a/meme_generator/memes/anti_kidnap/__init__.py +++ b/meme_generator/memes/anti_kidnap/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def anti_kidnap(images: list[BuildImage], texts, args): +def anti_kidnap(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((450, 450), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (30, 78), below=True) diff --git a/meme_generator/memes/anya_suki/__init__.py b/meme_generator/memes/anya_suki/__init__.py index 7d5d36d2d6800f579ad680b8cf6f6d2438b13d6d..1ed3aea45e5dc604e5081e4d4c0234b5ab5ebdc3 100644 --- a/meme_generator/memes/anya_suki/__init__.py +++ b/meme_generator/memes/anya_suki/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def anya_suki(images: list[BuildImage], texts: list[str], args): +def anya_suki(images: List[BuildImage], texts: List[str], args): text = texts[0] if texts else "阿尼亚喜欢这个" frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/applaud/__init__.py b/meme_generator/memes/applaud/__init__.py index 2f4ec0d690e16615dac614843d89ba05ffdb0622..d5ef0eb24c1fb13fd81ee8031c4e480391cc44ed 100644 --- a/meme_generator/memes/applaud/__init__.py +++ b/meme_generator/memes/applaud/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def applaud(images: list[BuildImage], texts, args): +def applaud(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((110, 110)) - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [ (109, 102, 27, 17), (107, 105, 28, 15), diff --git a/meme_generator/memes/ascension/__init__.py b/meme_generator/memes/ascension/__init__.py index bb9c2ed9a3dd387aeaada688fa4b7f44ebecd02d..933c575873e7af8e9fca21c857a2c19f99f0cbe1 100644 --- a/meme_generator/memes/ascension/__init__.py +++ b/meme_generator/memes/ascension/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def ascension(images, texts: list[str], args): +def ascension(images, texts: List[str], args): frame = BuildImage.open(img_dir / "0.png") text = f"你原本应该要去地狱的,但因为你生前{texts[0]},我们就当作你已经服完刑期了" try: diff --git a/meme_generator/memes/ask/__init__.py b/meme_generator/memes/ask/__init__.py index 2d7861dab7e50edb857806f420d5090414da82ee..71fd1828c3286eee2e2a4ad2884bdca84e88df11 100644 --- a/meme_generator/memes/ask/__init__.py +++ b/meme_generator/memes/ask/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from PIL import ImageFilter from pil_utils import BuildImage, Text2Image from pil_utils.gradient import ColorStop, LinearGradient @@ -6,7 +8,7 @@ from meme_generator import MemeArgsModel, add_meme from meme_generator.exception import TextOrNameNotEnough, TextOverLength -def ask(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def ask(images: List[BuildImage], texts: List[str], args: MemeArgsModel): if not texts and not args.user_infos: raise TextOrNameNotEnough("ask") diff --git a/meme_generator/memes/back_to_work/__init__.py b/meme_generator/memes/back_to_work/__init__.py index 79f4ad48eaaf7cfa44ff071fca2c4e1fed6dd6fe..25bd82ef140677eb4463d51d07192c575c211d97 100644 --- a/meme_generator/memes/back_to_work/__init__.py +++ b/meme_generator/memes/back_to_work/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def back_to_work(images: list[BuildImage], texts, args): +def back_to_work(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") img = ( images[0].convert("RGBA").resize((220, 310), keep_ratio=True, direction="north") @@ -17,9 +18,5 @@ def back_to_work(images: list[BuildImage], texts, args): add_meme( - "back_to_work", - back_to_work, - min_images=1, - max_images=1, - keywords=["继续干活", "打工人"], + "back_to_work", back_to_work, min_images=1, max_images=1, keywords=["继续干活", "打工人"] ) diff --git a/meme_generator/memes/bad_news/__init__.py b/meme_generator/memes/bad_news/__init__.py index 885fe488a7679fd321d0e9888523411511fcc2c4..9a56c6354289015f6404ee4ed77dce84a117d5e3 100644 --- a/meme_generator/memes/bad_news/__init__.py +++ b/meme_generator/memes/bad_news/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def bad_news(images, texts: list[str], args): +def bad_news(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/beat_head/__init__.py b/meme_generator/memes/beat_head/__init__.py index 2d0dc566c0ed659109819d6a3f2022a4daf69f79..bc139b07ae703f255375b4fdd146adf55c16bbea 100644 --- a/meme_generator/memes/beat_head/__init__.py +++ b/meme_generator/memes/beat_head/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -10,11 +11,11 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def beat_head(images: list[BuildImage], texts: list[str], args): +def beat_head(images: List[BuildImage], texts: List[str], args): text = texts[0] if texts else "怎么说话的你" img = images[0].convert("RGBA") locs = [(160, 121, 76, 76), (172, 124, 69, 69), (208, 166, 52, 52)] - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(3): x, y, w, h = locs[i] head = img.resize((w, h), keep_ratio=True).circle() diff --git a/meme_generator/memes/beat_up/__init__.py b/meme_generator/memes/beat_up/__init__.py deleted file mode 100644 index 3ba83d2fecd87e3632d04298b5cdd0b695f6846c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/beat_up/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -from pathlib import Path - -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import save_gif - -img_dir = Path(__file__).parent / "images" - - -def beat_up(images: list[BuildImage], texts, args): - self_head = images[0].convert("RGBA").circle().resize((55, 55)) - user_head = images[1].convert("RGBA").circle().resize((45, 45)) - self_locs = [(100, 43), (110, 46), (101, 40)] - user_locs = [(99, 136), (99, 136), (89, 140)] - frames: list[IMG] = [] - for i in range(3): - frame = BuildImage.open(img_dir / f"{i}.png") - frame.paste(user_head, user_locs[i], alpha=True) - frame.paste(self_head, self_locs[i], alpha=True) - frames.append(frame.image) - - return save_gif(frames, 0.1) - - -add_meme("beat_up", beat_up, min_images=2, max_images=2, keywords=["揍"]) diff --git a/meme_generator/memes/beat_up/images/0.png b/meme_generator/memes/beat_up/images/0.png deleted file mode 100644 index fbbb288c9b786bb230bdd44e88eb7f731637cf30..0000000000000000000000000000000000000000 --- a/meme_generator/memes/beat_up/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a60a42f56fcab0fff10d805716a05e4d5819b988975e5553c3a5b1a12ed6662f -size 81261 diff --git a/meme_generator/memes/beat_up/images/1.png b/meme_generator/memes/beat_up/images/1.png deleted file mode 100644 index 9abc1bfc3508534fca64cce6fd75b9ee3a3034ef..0000000000000000000000000000000000000000 --- a/meme_generator/memes/beat_up/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7aa42456a87f32d1033ea5d06634024e4dde96139a56eb8e383ff58ead97963c -size 85280 diff --git a/meme_generator/memes/beat_up/images/2.png b/meme_generator/memes/beat_up/images/2.png deleted file mode 100644 index 3bab30f7d1533bb584de01f03f357810f0a90e44..0000000000000000000000000000000000000000 --- a/meme_generator/memes/beat_up/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0c4704293099ef958d5320ea5831365ac186eebc9bd865e6d5a47910e294a94 -size 83550 diff --git a/meme_generator/memes/behead/__init__.py b/meme_generator/memes/behead/__init__.py index c5266cf3069d6eab0aeb63bbd0f6437acf47f22a..7c8c9ce630ac40a7f0b57592bfe955545b371f09 100644 --- a/meme_generator/memes/behead/__init__.py +++ b/meme_generator/memes/behead/__init__.py @@ -1,42 +1,34 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import save_gif -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def behead(images: list[BuildImage], texts, args): - img = images[0].convert("RGBA").square().resize((75, 75)) - # fmt: off - locs = [ - (80, 72, 0), (83, 73, 0), (82, 73, 0), - (78, 73, 0), (72, 74, 0), (72, 75, 0), - (73, 76, 0), (73, 76, 0), (73, 76, 0), - (74, 76, 0), (74, 76, 0), (70, 73, 12), - (61, 62, 25), (49, 40, 45), (46, 30, 65), - (50, 35, 85), (39, 34, 105), (19, 45, 135), - (9, 91, 155), (6, 161, 175), (-4, 248, 180), - ] - # fmt: on - frames: list[IMG] = [] - for i in range(21): - frame = BuildImage.open(img_dir / f"{i}.png") - x, y, angle = locs[i] - frame.paste(img.rotate(angle, expand=True), (x, y), below=True) - frames.append(frame.image) - return save_gif(frames, 0.05) - - -add_meme( - "behead", - behead, - min_images=1, - max_images=1, - keywords=["砍头", "斩首"], - date_created=datetime(2023, 7, 1), - date_modified=datetime(2023, 7, 1), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from meme_generator.utils import save_gif +from PIL.Image import Image as IMG +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def behead(images: List[BuildImage], texts, args): + img = images[0].convert("RGBA").square().resize((75, 75)) + # fmt: off + locs = [ + (80, 72, 0), (83, 73, 0), (82, 73, 0), + (78, 73, 0), (72, 74, 0), (72, 75, 0), + (73, 76, 0), (73, 76, 0), (73, 76, 0), + (74, 76, 0), (74, 76, 0), (70, 73, 12), + (61, 62, 25), (49, 40, 45), (46, 30, 65), + (50, 35, 85), (39, 34, 105), (19, 45, 135), + (9, 91, 155), (6, 161, 175), (-4, 248, 180), + ] + # fmt: on + frames: List[IMG] = [] + for i in range(21): + frame = BuildImage.open(img_dir / f"{i}.png") + x, y, angle = locs[i] + frame.paste(img.rotate(angle, expand=True), (x, y), below=True) + frames.append(frame.image) + return save_gif(frames, 0.05) + + +add_meme("behead", behead, min_images=1, max_images=1, keywords=["砍头", "斩首"]) diff --git a/meme_generator/memes/bite/__init__.py b/meme_generator/memes/bite/__init__.py index 103a4ee638e4644e9ae9d746ad752b8c139cef39..b04285449cce30c420ea7e822114af76abb6c4e3 100644 --- a/meme_generator/memes/bite/__init__.py +++ b/meme_generator/memes/bite/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def bite(images: list[BuildImage], texts, args): +def bite(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() - frames: list[IMG] = [] + frames: List[IMG] = [] # fmt: off locs = [ (90, 90, 105, 150), (90, 83, 96, 172), (90, 90, 106, 148), diff --git a/meme_generator/memes/blood_pressure/__init__.py b/meme_generator/memes/blood_pressure/__init__.py index 153fe8dd496ccc964d21344d17b0f307013c7567..ae263919b2f352875ad353d397aba3f9b37e15e3 100644 --- a/meme_generator/memes/blood_pressure/__init__.py +++ b/meme_generator/memes/blood_pressure/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def blood_pressure(images: list[BuildImage], texts, args): +def blood_pressure(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: @@ -18,6 +19,4 @@ def blood_pressure(images: list[BuildImage], texts, args): return make_jpg_or_gif(images[0], make) -add_meme( - "blood_pressure", blood_pressure, min_images=1, max_images=1, keywords=["高血压"] -) +add_meme("blood_pressure", blood_pressure, min_images=1, max_images=1, keywords=["高血压"]) diff --git a/meme_generator/memes/bluearchive/__init__.py b/meme_generator/memes/bluearchive/__init__.py index 9d2e2542b223b540aa0efc1ad23175364fb49153..f8d8213f016d838addc7eeb1417864040d06b2d6 100644 --- a/meme_generator/memes/bluearchive/__init__.py +++ b/meme_generator/memes/bluearchive/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from PIL.Image import Resampling, Transform @@ -11,7 +12,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def bluearchive(images, texts: list[str], args): +def bluearchive(images, texts: List[str], args): fontsize = 168 fontname = "Ro GSan Serif Std" fallback_fonts = ["Glow Sans SC"] + DEFAULT_FALLBACK_FONTS diff --git a/meme_generator/memes/bocchi_draft/__init__.py b/meme_generator/memes/bocchi_draft/__init__.py index 483e29dcf491fa7383f3b757ce407c69aba81eed..e740c626395da18c79052b83ee0074b98f14d2c9 100644 --- a/meme_generator/memes/bocchi_draft/__init__.py +++ b/meme_generator/memes/bocchi_draft/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def bocchi_draft(images: list[BuildImage], texts, args): +def bocchi_draft(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((350, 400), keep_ratio=True) params = [ (((54, 62), (353, 1), (379, 382), (1, 399)), (146, 173)), @@ -29,7 +30,7 @@ def bocchi_draft(images: list[BuildImage], texts, args): 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(23): frame = BuildImage.open(img_dir / f"{i}.png") points, pos = params[idx[i]] @@ -38,6 +39,4 @@ def bocchi_draft(images: list[BuildImage], texts, args): return save_gif(frames, 0.08) -add_meme( - "bocchi_draft", bocchi_draft, min_images=1, max_images=1, keywords=["波奇手稿"] -) +add_meme("bocchi_draft", bocchi_draft, min_images=1, max_images=1, keywords=["波奇手稿"]) diff --git a/meme_generator/memes/bronya_holdsign/__init__.py b/meme_generator/memes/bronya_holdsign/__init__.py index a5bcd386aa692c0dedbd31e97a6c4f4add8a517b..88477c851a82a4e6dda427495f4c45a4224894e6 100644 --- a/meme_generator/memes/bronya_holdsign/__init__.py +++ b/meme_generator/memes/bronya_holdsign/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def bronya_holdsign(images, texts: list[str], args): +def bronya_holdsign(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/bubble_tea/__init__.py b/meme_generator/memes/bubble_tea/__init__.py index 70f0317ab975e172f7b0c806359b7caeef478eb8..129e2fe9e596ba88260bb7fa68e57af58119751e 100644 --- a/meme_generator/memes/bubble_tea/__init__.py +++ b/meme_generator/memes/bubble_tea/__init__.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Literal +from typing import List, Literal from PIL.Image import Transpose from pil_utils import BuildImage @@ -26,19 +26,15 @@ group.add_argument( group.add_argument( "--right", "/右手", action="store_const", const="right", dest="position" ) -group.add_argument( - "--left", "/左手", action="store_const", const="left", dest="position" -) -group.add_argument( - "--both", "/双手", action="store_const", const="both", dest="position" -) +group.add_argument("--left", "/左手", action="store_const", const="left", dest="position") +group.add_argument("--both", "/双手", action="store_const", const="both", dest="position") class Model(MemeArgsModel): position: Literal["right", "left", "both"] = Field("right", description=help) -def bubble_tea(images: list[BuildImage], texts, args: Model): +def bubble_tea(images: List[BuildImage], texts, args: Model): frame = images[0].convert("RGBA").resize((500, 500), keep_ratio=True) bubble_tea = BuildImage.open(img_dir / "0.png") position = args.position diff --git a/meme_generator/memes/call_110/__init__.py b/meme_generator/memes/call_110/__init__.py index 87a3e94fccbebd937500cfbd1f272c31c499393b..241f6fcc37209a66dbd767b6630a211065f6780d 100644 --- a/meme_generator/memes/call_110/__init__.py +++ b/meme_generator/memes/call_110/__init__.py @@ -1,9 +1,11 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import add_meme -def call_110(images: list[BuildImage], texts, args): +def call_110(images: List[BuildImage], texts, args): img1 = images[0].convert("RGBA").square().resize((250, 250)) img0 = images[1].convert("RGBA").square().resize((250, 250)) diff --git a/meme_generator/memes/can_can_need/__init__.py b/meme_generator/memes/can_can_need/__init__.py index ea3e5192045a330a1a2f929c73439274657c40cf..b10f4784d0663ba7d59e726e9e97efb44dd19967 100644 --- a/meme_generator/memes/can_can_need/__init__.py +++ b/meme_generator/memes/can_can_need/__init__.py @@ -1,28 +1,20 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def can_can_need(images: list[BuildImage], texts, args): - frame = BuildImage.open(img_dir / "0.jpg") - frame.paste( - images[1].convert("RGBA").circle().resize((340, 340)), (120, 21), alpha=True - ).paste( - images[0].convert("RGBA").circle().resize((300, 300)), (611, 718), alpha=True - ) - return frame.save_jpg() - - -add_meme( - "can_can_need", - can_can_need, - min_images=2, - max_images=2, - keywords=["看看你的"], - date_created=datetime(2023, 3, 16), - date_modified=datetime(2023, 3, 16), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def can_can_need(images: List[BuildImage], texts, args): + frame = BuildImage.open(img_dir / "0.jpg") + frame.paste( + images[1].convert("RGBA").circle().resize((340, 340)), (120, 21), alpha=True + ).paste( + images[0].convert("RGBA").circle().resize((300, 300)), (611, 718), alpha=True + ) + return frame.save_jpg() + + +add_meme("can_can_need", can_can_need, min_images=2, max_images=2, keywords=["看看你的"]) diff --git a/meme_generator/memes/caoshen_bite/__init__.py b/meme_generator/memes/caoshen_bite/__init__.py index 4c19df1f1568fd0915dfe54ab84c640e263b7a56..ebae6800a42ea8b8b708525129952b713b569979 100644 --- a/meme_generator/memes/caoshen_bite/__init__.py +++ b/meme_generator/memes/caoshen_bite/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def caoshen_bite(images: list[BuildImage], texts, args): +def caoshen_bite(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((160, 140), keep_ratio=True) # fmt: off locs = [ @@ -21,7 +22,7 @@ def caoshen_bite(images: list[BuildImage], texts, args): (122, 351, 159, 129), (122, 353, 159, 127), (123, 355, 158, 125), ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(38): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i % len(locs)] diff --git a/meme_generator/memes/capoo_draw/__init__.py b/meme_generator/memes/capoo_draw/__init__.py index b015e5d6bd4e7296280333f0a0a04abfe4e977e1..da3c138d52e7f8ff8a311816bcf6fc629264738d 100644 --- a/meme_generator/memes/capoo_draw/__init__.py +++ b/meme_generator/memes/capoo_draw/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def capoo_draw(images: list[BuildImage], texts, args): +def capoo_draw(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((175, 120), keep_ratio=True) params = ( (((27, 0), (207, 12), (179, 142), (0, 117)), (30, 16)), @@ -20,7 +21,7 @@ def capoo_draw(images: list[BuildImage], texts, args): points, pos = params[i] raw_frames[4 + i].paste(img.perspective(points), pos, below=True) - frames: list[IMG] = [] + frames: List[IMG] = [] frames.append(raw_frames[0].image) for i in range(4): frames.append(raw_frames[1].image) diff --git a/meme_generator/memes/capoo_rip/__init__.py b/meme_generator/memes/capoo_rip/__init__.py index 976eddd099e6720a34786a8853275fcd4b86a363..5711280bc1c3fd1efed76725ff6698e7813067c1 100644 --- a/meme_generator/memes/capoo_rip/__init__.py +++ b/meme_generator/memes/capoo_rip/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def capoo_rip(images: list[BuildImage], texts, args): +def capoo_rip(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((150, 100), keep_ratio=True) img_left = img.crop((0, 0, 75, 100)) img_right = img.crop((75, 0, 150, 100)) @@ -39,7 +40,7 @@ def capoo_rip(images: list[BuildImage], texts, args): raw_frames[i + 6].paste(img_left.perspective(points1), pos1, below=True) raw_frames[i + 6].paste(img_right.perspective(points2), pos2, below=True) - new_frames: list[BuildImage] = [] + new_frames: List[BuildImage] = [] for i in range(3): new_frames += raw_frames[0:3] new_frames += raw_frames[3:] diff --git a/meme_generator/memes/capoo_rub/__init__.py b/meme_generator/memes/capoo_rub/__init__.py index 77bd6dbc342cd76f53e932b36a989d09396a1d12..4f25149fd03fce16ff8dba66670a422ebb3381fc 100644 --- a/meme_generator/memes/capoo_rub/__init__.py +++ b/meme_generator/memes/capoo_rub/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def capoo_rub(images: list[BuildImage], texts, args): +def capoo_rub(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((180, 180)) - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [ (178, 184, 78, 260), (178, 174, 84, 269), @@ -26,6 +27,4 @@ def capoo_rub(images: list[BuildImage], texts, args): return save_gif(frames, 0.1) -add_meme( - "capoo_rub", capoo_rub, min_images=1, max_images=1, keywords=["咖波蹭", "咖波贴"] -) +add_meme("capoo_rub", capoo_rub, min_images=1, max_images=1, keywords=["咖波蹭", "咖波贴"]) diff --git a/meme_generator/memes/capoo_say/__init__.py b/meme_generator/memes/capoo_say/__init__.py index 56ccc13a83c3fd020cb0a6b95ffae0365d89e49d..8cfe2c9a7a75e57197336fa1a2313c463e70e21f 100644 --- a/meme_generator/memes/capoo_say/__init__.py +++ b/meme_generator/memes/capoo_say/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -10,7 +11,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def capoo_say_one_loop(text: str) -> list[IMG]: +def capoo_say_one_loop(text: str) -> List[IMG]: text_frame = BuildImage.new("RGBA", (80, 80)) try: text_frame.draw_text( @@ -38,7 +39,7 @@ def capoo_say_one_loop(text: str) -> list[IMG]: None, ] - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(10): frame = BuildImage.open(img_dir / f"{i}.png") param = params[i] @@ -51,7 +52,7 @@ def capoo_say_one_loop(text: str) -> list[IMG]: return frames -def capoo_say(images, texts: list[str], args): +def capoo_say(images, texts: List[str], args): frames = sum([capoo_say_one_loop(text) for text in texts], []) return save_gif(frames, 0.1) diff --git a/meme_generator/memes/capoo_strike/__init__.py b/meme_generator/memes/capoo_strike/__init__.py index 739d6efc15d382234fa9ed5409c0d3ef4f093c80..f19055d85fcab12b981bd39a043aff88b768df6a 100644 --- a/meme_generator/memes/capoo_strike/__init__.py +++ b/meme_generator/memes/capoo_strike/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_g img_dir = Path(__file__).parent / "images" -def capoo_strike(images: list[BuildImage], texts, args): +def capoo_strike(images: List[BuildImage], texts, args): params = ( (((0, 4), (153, 0), (138, 105), (0, 157)), (28, 47)), (((1, 13), (151, 0), (130, 104), (0, 156)), (28, 48)), diff --git a/meme_generator/memes/captain/__init__.py b/meme_generator/memes/captain/__init__.py index 1aa6db32d27c94755e7350ac6c254bff9d4ea5fd..0256186fa6a9a0df8a394086e5b11cee6e87a0f3 100644 --- a/meme_generator/memes/captain/__init__.py +++ b/meme_generator/memes/captain/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def captain(images: list[BuildImage], texts, args): +def captain(images: List[BuildImage], texts, args): if len(images) == 2: images.append(images[-1]) diff --git a/meme_generator/memes/certificate/__init__.py b/meme_generator/memes/certificate/__init__.py index 965f8e26c1e71e7ca72567f2e392a6f1ca7a464e..234ee250c16710b93e50af43e1946e25fd1194a1 100644 --- a/meme_generator/memes/certificate/__init__.py +++ b/meme_generator/memes/certificate/__init__.py @@ -1,5 +1,6 @@ from datetime import datetime from pathlib import Path +from typing import List import dateparser from pil_utils import BuildImage @@ -19,7 +20,7 @@ class Model(MemeArgsModel): img_dir = Path(__file__).parent / "images" -def certificate(images, texts: list[str], args: Model): +def certificate(images, texts: List[str], args: Model): time = datetime.now() if args.time and (parsed_time := dateparser.parse(args.time)): time = parsed_time @@ -60,9 +61,7 @@ def certificate(images, texts: list[str], args: Model): try: frame.draw_text( (450, 850, 2270, 1080), - texts[3] - if len(texts) >= 4 - else "  在本学年第一学期中表现优秀,被我校决定评为", + texts[3] if len(texts) >= 4 else "  在本学年第一学期中表现优秀,被我校决定评为", allow_wrap=True, max_fontsize=80, min_fontsize=40, @@ -73,25 +72,22 @@ def certificate(images, texts: list[str], args: Model): raise TextOverLength(texts[3]) frame.draw_text( - (1565, 1525, 1700, 1600), + (1565, 1527), f"{time.year:04d}", allow_wrap=False, - max_fontsize=60, - min_fontsize=40, + fontsize=60, ) frame.draw_text( - (1752, 1525, 1816, 1600), + (1752, 1527), f"{time.month:02d}", allow_wrap=False, - max_fontsize=60, - min_fontsize=40, + fontsize=60, ) frame.draw_text( - (1865, 1525, 1930, 1600), + (1865, 1527), f"{time.day:02d}", allow_wrap=False, - max_fontsize=60, - min_fontsize=40, + fontsize=60, ) return frame.save_png() @@ -102,7 +98,11 @@ add_meme( certificate, min_texts=3, max_texts=4, - default_texts=["小王", "优秀学生", "一年一班"], + default_texts=[ + "小王", + "优秀学生", + "一年一班", + ], args_type=MemeArgsType(parser, Model), keywords=["奖状", "证书"], ) diff --git a/meme_generator/memes/charpic/__init__.py b/meme_generator/memes/charpic/__init__.py index 448bed9b41c3d481ac7638275b74796541f4b799..ee8f7bc6f491de848290b8453d20746657649b09 100644 --- a/meme_generator/memes/charpic/__init__.py +++ b/meme_generator/memes/charpic/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from PIL import Image, ImageDraw from pil_utils import BuildImage from pil_utils.fonts import Font @@ -6,7 +8,7 @@ from meme_generator import add_meme from meme_generator.utils import make_jpg_or_gif -def charpic(images: list[BuildImage], texts, args): +def charpic(images: List[BuildImage], texts, args): img = images[0] str_map = "@@$$&B88QMMGW##EE93SPPDOOU**==()+^,\"--''. " num = len(str_map) diff --git a/meme_generator/memes/chase_train/__init__.py b/meme_generator/memes/chase_train/__init__.py index ca780a6f7a13e7a13d5dc8deb2692961b7083a55..3a3d2b69958eae4be6afbe627c713b2459db87b1 100644 --- a/meme_generator/memes/chase_train/__init__.py +++ b/meme_generator/memes/chase_train/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def chase_train(images: list[BuildImage], texts, args): +def chase_train(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((42, 42)) - frames: list[IMG] = [] + frames: List[IMG] = [] # fmt: off locs = [ (35, 34, 128, 44), (35, 33, 132, 40), (33, 34, 133, 36), (33, 38, 135, 41), @@ -55,9 +56,5 @@ def chase_train(images: list[BuildImage], texts, args): add_meme( - "chase_train", - chase_train, - min_images=1, - max_images=1, - keywords=["追列车", "追火车"], + "chase_train", chase_train, min_images=1, max_images=1, keywords=["追列车", "追火车"] ) diff --git a/meme_generator/memes/china_flag/__init__.py b/meme_generator/memes/china_flag/__init__.py index b8a9b3501e892ce122692dfa112d7f45040a8d11..f02e2724b4702ed900a8885df7ea7c587a6f0aa3 100644 --- a/meme_generator/memes/china_flag/__init__.py +++ b/meme_generator/memes/china_flag/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def china_flag(images: list[BuildImage], texts, args): +def china_flag(images: List[BuildImage], texts, args): img = images[0].convert("RGBA") frame = BuildImage.open(img_dir / "0.png") frame.paste(img.resize(frame.size, keep_ratio=True), below=True) diff --git a/meme_generator/memes/clown/__init__.py b/meme_generator/memes/clown/__init__.py index 7ac633b76f1415ad6b15945df50a9ebc3d1c22b4..c0f50bac82b991771f158df1b288a92da9f7c914 100644 --- a/meme_generator/memes/clown/__init__.py +++ b/meme_generator/memes/clown/__init__.py @@ -1,5 +1,6 @@ from dataclasses import dataclass from pathlib import Path +from typing import List, Tuple from pil_utils import BuildImage from pydantic import Field @@ -14,9 +15,9 @@ PERSON_PATH = IMG_DIR / "person.png" @dataclass class PicInfo: frame_path: Path - avatar_size: tuple[int, int] + avatar_size: Tuple[int, int] avatar_rotate: int - avatar_left_center: tuple[int, int] # top right 直接算镜像 + avatar_left_center: Tuple[int, int] # top right 直接算镜像 CIRCLE_INFO = PicInfo(CIRCLE_PATH, (554, 442), 26, (153, 341)) @@ -33,7 +34,7 @@ class Model(MemeArgsModel): person: bool = Field(False, description=HELP_PERSON) -def clown(images: list[BuildImage], texts, args: Model): +def clown(images: List[BuildImage], texts, args: Model): info = PERSON_INFO if args.person else CIRCLE_INFO avatar = images[0].convert("RGBA").resize(info.avatar_size, keep_ratio=True) frame = BuildImage.open(info.frame_path).convert("RGBA") diff --git a/meme_generator/memes/confuse/__init__.py b/meme_generator/memes/confuse/__init__.py index 3fb570204919c33e6482a5e33cb6a2dea6d128ea..8bed6616b7c63a19eda84c1e429ea5486031b322 100644 --- a/meme_generator/memes/confuse/__init__.py +++ b/meme_generator/memes/confuse/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_g img_dir = Path(__file__).parent / "images" -def confuse(images: list[BuildImage], texts, args): +def confuse(images: List[BuildImage], texts, args): img_w = min(images[0].width, 500) def maker(i: int) -> Maker: diff --git a/meme_generator/memes/coupon/__init__.py b/meme_generator/memes/coupon/__init__.py index 736fd816a0d04dc15ef47d118516d5af041f6bdc..4616e994a866738cb5249ee1fe3e71a697f7c8bd 100644 --- a/meme_generator/memes/coupon/__init__.py +++ b/meme_generator/memes/coupon/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def coupon(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def coupon(images: List[BuildImage], texts: List[str], args: MemeArgsModel): img = images[0].convert("RGBA").circle().resize((60, 60)) name = args.user_infos[0].name if args.user_infos else "" text = (texts[0] if texts else f"{name}陪睡券") + "\n(永久有效)" diff --git a/meme_generator/memes/cover_face/__init__.py b/meme_generator/memes/cover_face/__init__.py index 208be3e2f26621ea33d16c8dcef55117180e237c..b28aa8e58319f5b20dd3594a7678137f240bf851 100644 --- a/meme_generator/memes/cover_face/__init__.py +++ b/meme_generator/memes/cover_face/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def cover_face(images: list[BuildImage], texts, args): +def cover_face(images: List[BuildImage], texts, args): points = ((15, 15), (448, 0), (445, 456), (0, 465)) img = images[0].convert("RGBA").square().resize((450, 450)).perspective(points) frame = BuildImage.open(img_dir / "0.png") diff --git a/meme_generator/memes/crawl/__init__.py b/meme_generator/memes/crawl/__init__.py index 67fc6f23a1e3b626f1dc9492b8a33d185c871c31..f4aced4e57c3232e75044fe47fbeb0b076805081 100644 --- a/meme_generator/memes/crawl/__init__.py +++ b/meme_generator/memes/crawl/__init__.py @@ -1,5 +1,6 @@ import random from pathlib import Path +from typing import List from pil_utils import BuildImage from pydantic import Field @@ -19,7 +20,7 @@ class Model(MemeArgsModel): number: int = Field(0, description=help) -def crawl(images: list[BuildImage], texts: list[str], args: Model): +def crawl(images: List[BuildImage], texts: List[str], args: Model): total_num = 92 if 1 <= args.number <= total_num: num = args.number diff --git a/meme_generator/memes/cyan/__init__.py b/meme_generator/memes/cyan/__init__.py index b0863382bbf782a88c6abbea9f7b1901c31e771a..62e511971bf32f7c928b17dc977ab3df4066544b 100644 --- a/meme_generator/memes/cyan/__init__.py +++ b/meme_generator/memes/cyan/__init__.py @@ -1,9 +1,11 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import add_meme -def cyan(images: list[BuildImage], texts, args): +def cyan(images: List[BuildImage], texts, args): color = (78, 114, 184) frame = images[0].convert("RGB").square().resize((500, 500)).color_mask(color) frame.draw_text( diff --git a/meme_generator/memes/daynight/__init__.py b/meme_generator/memes/daynight/__init__.py index 9ddfc9b99cb73d8b5dd452c796b220d259af6565..8c6ac0ee11bc80a66e51217c567f2f32fffb9d0b 100644 --- a/meme_generator/memes/daynight/__init__.py +++ b/meme_generator/memes/daynight/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def daynight(images: list[BuildImage], texts, args): +def daynight(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((333, 360), keep_ratio=True) img_ = images[1].convert("RGBA").resize((333, 360), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") @@ -16,6 +17,4 @@ def daynight(images: list[BuildImage], texts, args): return frame.save_jpg() -add_meme( - "daynight", daynight, min_images=2, max_images=2, keywords=["白天黑夜", "白天晚上"] -) +add_meme("daynight", daynight, min_images=2, max_images=2, keywords=["白天黑夜", "白天晚上"]) diff --git a/meme_generator/memes/decent_kiss/__init__.py b/meme_generator/memes/decent_kiss/__init__.py index 3ddcbd35700980633a91ac14f3289f4874ad8c05..d08423bcd0a1197f3439882b022dfe2ba61eebf1 100644 --- a/meme_generator/memes/decent_kiss/__init__.py +++ b/meme_generator/memes/decent_kiss/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,13 +8,11 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def decent_kiss(images: list[BuildImage], texts, args): +def decent_kiss(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((589, 340), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (0, 91), below=True) return frame.save_jpg() -add_meme( - "decent_kiss", decent_kiss, min_images=1, max_images=1, keywords=["像样的亲亲"] -) +add_meme("decent_kiss", decent_kiss, min_images=1, max_images=1, keywords=["像样的亲亲"]) diff --git a/meme_generator/memes/dianzhongdian/__init__.py b/meme_generator/memes/dianzhongdian/__init__.py index 557b509bd317c487c498be34150411a864a6d427..22afc158c4335191c3aecdc15bfbe96df6a0e639 100644 --- a/meme_generator/memes/dianzhongdian/__init__.py +++ b/meme_generator/memes/dianzhongdian/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import add_meme @@ -40,7 +42,7 @@ def _dianzhongdian(img: BuildImage, text: str, trans: str): return frame.save_jpg() -async def dianzhongdian(images: list[BuildImage], texts: list[str], args): +async def dianzhongdian(images: List[BuildImage], texts: List[str], args): if len(texts) == 1: text = texts[0] trans = await translate(text, lang_to="jp") diff --git a/meme_generator/memes/dinosaur/__init__.py b/meme_generator/memes/dinosaur/__init__.py index 9142e502b9f3c83256a78b277c941772e7ac9e01..6c870345c1814114e837e237ace51e05d6d7f6d2 100644 --- a/meme_generator/memes/dinosaur/__init__.py +++ b/meme_generator/memes/dinosaur/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def dinosaur(images: list[BuildImage], texts, args): +def dinosaur(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/distracted/__init__.py b/meme_generator/memes/distracted/__init__.py index 1fada404bed3d990e78d6ca9058d3976b203eced..eb52ad5156ca1277639a3bd27c14960662605635 100644 --- a/meme_generator/memes/distracted/__init__.py +++ b/meme_generator/memes/distracted/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def distracted(images: list[BuildImage], texts, args): +def distracted(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "1.png") label = BuildImage.open(img_dir / "0.png") diff --git a/meme_generator/memes/divorce/__init__.py b/meme_generator/memes/divorce/__init__.py index 7d640a90dd69423430b8a5a74f80be611539cb77..c2150680c935cdb262d5f7159dd8bd7638e7759f 100644 --- a/meme_generator/memes/divorce/__init__.py +++ b/meme_generator/memes/divorce/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,13 +8,11 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def divorce(images: list[BuildImage], texts, args): +def divorce(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") img = images[0].convert("RGBA").resize(frame.size, keep_ratio=True) frame.paste(img, below=True) return frame.save_jpg() -add_meme( - "divorce", divorce, min_images=1, max_images=1, keywords=["离婚协议", "离婚申请"] -) +add_meme("divorce", divorce, min_images=1, max_images=1, keywords=["离婚协议", "离婚申请"]) diff --git a/meme_generator/memes/do/__init__.py b/meme_generator/memes/do/__init__.py index 000a1ef1db5383dd338ebf146c9f3d293680c0db..4128da32c653f4c7416128fcc45081b086e489ef 100644 --- a/meme_generator/memes/do/__init__.py +++ b/meme_generator/memes/do/__init__.py @@ -1,46 +1,38 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import save_gif -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def do(images: list[BuildImage], texts, args): - self_locs = [(116, -8), (109, 3), (130, -10)] - user_locs = [(2, 177), (12, 172), (6, 158)] - self_head = ( - images[0] - .convert("RGBA") - .resize((122, 122), keep_ratio=True) - .circle() - .rotate(15) - ) - user_head = ( - images[1] - .convert("RGBA") - .resize((112, 112), keep_ratio=True) - .circle() - .rotate(90) - ) - frames: list[IMG] = [] - for i in range(3): - frame = BuildImage.open(img_dir / f"{i}.png") - frame.paste(user_head, user_locs[i], alpha=True) - frame.paste(self_head, self_locs[i], alpha=True) - frames.append(frame.image) - return save_gif(frames, 0.05) - - -add_meme( - "do", - do, - min_images=2, - max_images=2, - keywords=["撅", "狠狠地撅"], - date_created=datetime(2023, 3, 7), - date_modified=datetime(2023, 3, 7), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from meme_generator.utils import save_gif +from PIL.Image import Image as IMG +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def do(images: List[BuildImage], texts, args): + self_locs = [(116, -8), (109, 3), (130, -10)] + user_locs = [(2, 177), (12, 172), (6, 158)] + self_head = ( + images[0] + .convert("RGBA") + .resize((122, 122), keep_ratio=True) + .circle() + .rotate(15) + ) + user_head = ( + images[1] + .convert("RGBA") + .resize((112, 112), keep_ratio=True) + .circle() + .rotate(90) + ) + frames: List[IMG] = [] + for i in range(3): + frame = BuildImage.open(img_dir / f"{i}.png") + frame.paste(user_head, user_locs[i], alpha=True) + frame.paste(self_head, self_locs[i], alpha=True) + frames.append(frame.image) + return save_gif(frames, 0.05) + + +add_meme("do", do, min_images=2, max_images=2, keywords=["撅", "狠狠地撅"]) diff --git a/meme_generator/memes/dog_dislike/__init__.py b/meme_generator/memes/dog_dislike/__init__.py index b8e293698b527c27aa022960100cb479ea28bdbd..556ca18a3d95b3445d7b798d493fa452fdcad877 100644 --- a/meme_generator/memes/dog_dislike/__init__.py +++ b/meme_generator/memes/dog_dislike/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -19,7 +20,7 @@ class Model(MemeArgsModel): circle: bool = Field(False, description=help) -def dog_dislike(images: list[BuildImage], texts: list[str], args: Model): +def dog_dislike(images: List[BuildImage], texts: List[str], args: Model): location = [ (36, 408), (36, 410), @@ -59,7 +60,7 @@ def dog_dislike(images: list[BuildImage], texts: list[str], args: Model): head = images[0].convert("RGBA").resize((122, 122), keep_ratio=True) if args.circle: head = head.circle() - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(34): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(head, location[i], alpha=True) diff --git a/meme_generator/memes/dog_of_vtb/__init__.py b/meme_generator/memes/dog_of_vtb/__init__.py index e790a796032f927a86d0a86bbab72d4361b7ed2d..a4a98cff0f4c1091f671956131599590751bed12 100644 --- a/meme_generator/memes/dog_of_vtb/__init__.py +++ b/meme_generator/memes/dog_of_vtb/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def dog_of_vtb(images: list[BuildImage], texts, args): +def dog_of_vtb(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/dont_go_near/__init__.py b/meme_generator/memes/dont_go_near/__init__.py index 218370b7f759d4c8c175c494ef789be3032a595f..8675f01518412a8c0dd98887ed15586000308f03 100644 --- a/meme_generator/memes/dont_go_near/__init__.py +++ b/meme_generator/memes/dont_go_near/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def dont_go_near(images: list[BuildImage], texts, args): +def dont_go_near(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: @@ -18,6 +19,4 @@ def dont_go_near(images: list[BuildImage], texts, args): return make_jpg_or_gif(images[0], make) -add_meme( - "dont_go_near", dont_go_near, min_images=1, max_images=1, keywords=["不要靠近"] -) +add_meme("dont_go_near", dont_go_near, min_images=1, max_images=1, keywords=["不要靠近"]) diff --git a/meme_generator/memes/dont_touch/__init__.py b/meme_generator/memes/dont_touch/__init__.py index 9caa532ef92ddc6582c47e3c8f21eae729c5108b..22743662ed38de955166deb43852194e470e78e6 100644 --- a/meme_generator/memes/dont_touch/__init__.py +++ b/meme_generator/memes/dont_touch/__init__.py @@ -1,5 +1,6 @@ import random from pathlib import Path +from typing import List, Tuple from PIL.Image import Image as IMG from PIL.Image import Palette @@ -11,23 +12,23 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def get_dominant_colors(img: IMG) -> list[tuple[int, int, int]]: +def get_dominant_colors(img: IMG) -> List[Tuple[int, int, int]]: img = img.convert("P", palette=Palette.ADAPTIVE, colors=20) palette = img.getpalette() assert palette - color_indexs = sorted(img.getcolors(), reverse=True) # type: ignore + color_indexs = sorted(img.getcolors(), reverse=True) colors = [tuple(palette[i * 3 : i * 3 + 3]) for _, i in color_indexs] colors = list( filter(lambda c: c[0] * 0.299 + c[1] * 0.578 + c[2] * 0.114 < 200, colors) ) - return colors # type: ignore + return colors -def dont_touch(images: list[BuildImage], texts, args): +def dont_touch(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") mask = BuildImage.open(img_dir / "mask.png").convert("L") - def paste_random_blocks(img: BuildImage, colors: list[tuple[int, int, int]]): + def paste_random_blocks(img: BuildImage, colors: List[Tuple[int, int, int]]): x1, y1, x2, y2 = 200, 300, 400, 650 block_locs = [] for _ in range(150): diff --git a/meme_generator/memes/douyin/__init__.py b/meme_generator/memes/douyin/__init__.py index cefbd52c6916f215aa08af43b509fc582bce69e9..abed8dfa3fdc600f09971ee479f8facad0c164cd 100644 --- a/meme_generator/memes/douyin/__init__.py +++ b/meme_generator/memes/douyin/__init__.py @@ -1,5 +1,6 @@ import math import random +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage, Text2Image @@ -8,7 +9,7 @@ from meme_generator import add_meme from meme_generator.utils import save_gif -def douyin(images, texts: list[str], args): +def douyin(images, texts: List[str], args): text = texts[0] text = " ".join(text.splitlines()) fontsize = 200 @@ -32,7 +33,7 @@ def douyin(images, texts: list[str], args): frame_num = 10 devide_num = 6 seed = 20 * 0.05 - frames: list[IMG] = [] + frames: List[IMG] = [] for _ in range(frame_num): new_frame = frame.copy() h_seeds = [ diff --git a/meme_generator/memes/eat/__init__.py b/meme_generator/memes/eat/__init__.py index 1c4737357618671144d8553361e479eb4a4635a7..066a7278ac3c849938eb54d0353bbd0217c1e0d5 100644 --- a/meme_generator/memes/eat/__init__.py +++ b/meme_generator/memes/eat/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def eat(images: list[BuildImage], texts, args): +def eat(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((34, 34)) frames = [] for i in range(3): diff --git a/meme_generator/memes/empathy/__init__.py b/meme_generator/memes/empathy/__init__.py index 43bfa3d48a07506307dc14d92380110050396f46..6468a311d8d33e57d90b6e7fc91a244d0c0026c6 100644 --- a/meme_generator/memes/empathy/__init__.py +++ b/meme_generator/memes/empathy/__init__.py @@ -1,28 +1,20 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def empathy(images: list[BuildImage], texts, args): - frame = BuildImage.open(img_dir / "0.png") - frame.paste( - images[0].convert("RGBA").circle().resize((90, 90)).rotate(100), - (210, 425), - below=True, - ) - return frame.save_jpg() - - -add_meme( - "empathy", - empathy, - min_images=1, - max_images=1, - keywords=["换位思考"], - date_created=datetime(2023, 4, 27), - date_modified=datetime(2023, 4, 27), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def empathy(images: List[BuildImage], texts, args): + frame = BuildImage.open(img_dir / "0.png") + frame.paste( + images[0].convert("RGBA").circle().resize((90, 90)).rotate(100), + (210, 425), + below=True, + ) + return frame.save_jpg() + + +add_meme("empathy", empathy, min_images=1, max_images=1, keywords=["换位思考"]) diff --git a/meme_generator/memes/fanatic/__init__.py b/meme_generator/memes/fanatic/__init__.py index ab6f2f55d9e1ca23d1f976a34db86f6c8944af3e..66cbfcfffa3901e0992421d7012fdd1a4378b6b4 100644 --- a/meme_generator/memes/fanatic/__init__.py +++ b/meme_generator/memes/fanatic/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def fanatic(images, texts: list[str], args): +def fanatic(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/father_work/__init__.py b/meme_generator/memes/father_work/__init__.py deleted file mode 100644 index 5ce98fa0cb91c765b25f9960170b028419fe5ced..0000000000000000000000000000000000000000 --- a/meme_generator/memes/father_work/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -from pathlib import Path - -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.exception import TextOverLength -from meme_generator.utils import make_jpg_or_gif - -img_dir = Path(__file__).parent / "images" - - -def father_work(images: list[BuildImage], texts: list[str], args): - frame = BuildImage.open(img_dir / "0.png") - text = texts[0] if texts else "此处添加文字" - try: - frame.draw_text( - (195, frame.height - 110, frame.width - 10, frame.height - 20), - text, - min_fontsize=10, - max_fontsize=50, - fill="black", - allow_wrap=True, - lines_align="center", - ) - except ValueError: - raise TextOverLength(text) - - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA").resize((230, 120), keep_ratio=True, inside=True) - return frame.copy().paste(img, (252, 142), alpha=True) - - return make_jpg_or_gif(images[0], make) - - -add_meme( - "father_work", - father_work, - min_images=1, - max_images=1, - min_texts=0, - max_texts=1, - default_texts=["此处添加文字"], - keywords=["闭嘴", "我爸爸"], -) diff --git a/meme_generator/memes/father_work/images/0.png b/meme_generator/memes/father_work/images/0.png deleted file mode 100644 index 82c35000b7a9df4d1ff60d62bb189677758dd6cd..0000000000000000000000000000000000000000 --- a/meme_generator/memes/father_work/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f7f3c35eb8847c83a340ff935041372c97f933d932a894144e2890fa0672714f -size 157621 diff --git a/meme_generator/memes/fencing/__init__.py b/meme_generator/memes/fencing/__init__.py index 0cb016f8ac2724411a3b157e01f39423a767c431..dfe29c480f9d348db6719c6f545244f19b0ba7c4 100644 --- a/meme_generator/memes/fencing/__init__.py +++ b/meme_generator/memes/fencing/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def fencing(images: list[BuildImage], texts, args): +def fencing(images: List[BuildImage], texts, args): self_head = images[0].convert("RGBA").circle().resize((27, 27)) user_head = images[1].convert("RGBA").circle().resize((27, 27)) # fmt: off @@ -24,7 +25,7 @@ def fencing(images: list[BuildImage], texts, args): (30, 9), (17, 6), (12, 8), (11, 7), (8, 6), (-2, 10), (4, 9) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(19): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(user_head, user_locs[i], alpha=True) diff --git a/meme_generator/memes/fight_with_sunuo/__init__.py b/meme_generator/memes/fight_with_sunuo/__init__.py deleted file mode 100644 index 75b1ee4fd31416a1367a745d5ccb8b05d12d0972..0000000000000000000000000000000000000000 --- a/meme_generator/memes/fight_with_sunuo/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -from pathlib import Path - -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import make_jpg_or_gif - -img_dir = Path(__file__).parent / "images" - - -def fight_with_sunuo(images: list[BuildImage], texts, args): - frame = BuildImage.open(img_dir / "0.png") - - def make(img: BuildImage) -> BuildImage: - img = img.convert("L").resize((565, 1630), keep_ratio=True) - return frame.copy().paste(img, (0, 245), below=True) - - return make_jpg_or_gif(images[0], make) - - -add_meme( - "fight_with_sunuo", - fight_with_sunuo, - min_images=1, - max_images=1, - keywords=["我打宿傩", "我打宿傩吗"], -) diff --git a/meme_generator/memes/fight_with_sunuo/images/0.png b/meme_generator/memes/fight_with_sunuo/images/0.png deleted file mode 100644 index df1749b48ea4f83fda811a54f4980bd530001981..0000000000000000000000000000000000000000 --- a/meme_generator/memes/fight_with_sunuo/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0667a0400b67a8714a6765d7963c70bbb6819d7bd6be0b2a35aa915f2de4ca08 -size 989041 diff --git a/meme_generator/memes/fill_head/__init__.py b/meme_generator/memes/fill_head/__init__.py index 5799cae3608dfdfb4424fe0be6609867f3a41726..8deaee3d5f51be19e198292857cfb87866a4887f 100644 --- a/meme_generator/memes/fill_head/__init__.py +++ b/meme_generator/memes/fill_head/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def fill_head(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def fill_head(images: List[BuildImage], texts: List[str], args: MemeArgsModel): name = texts[0] if texts else (args.user_infos[0].name if args.user_infos else "它") text = f"满脑子都是{name}" frame = BuildImage.open(img_dir / "0.jpg") diff --git a/meme_generator/memes/find_chips/__init__.py b/meme_generator/memes/find_chips/__init__.py index 9226246a3c286af8fc83f8bd6f8b091382969dd1..837504f347601f3ea0cf0eb01dc9d168ea0974e7 100644 --- a/meme_generator/memes/find_chips/__init__.py +++ b/meme_generator/memes/find_chips/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List, Tuple from pil_utils import BuildImage @@ -8,10 +9,10 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def find_chips(images, texts: list[str], args): +def find_chips(images, texts: List[str], args): frame = BuildImage.open(img_dir / "0.jpg") - def draw(pos: tuple[float, float, float, float], text: str): + def draw(pos: Tuple[float, float, float, float], text: str): try: frame.draw_text( pos, text, max_fontsize=30, min_fontsize=12, allow_wrap=True diff --git a/meme_generator/memes/firefly_holdsign/__init__.py b/meme_generator/memes/firefly_holdsign/__init__.py deleted file mode 100644 index 43dfb1307720943aa9a006ffbfcbae0288b1e95a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/__init__.py +++ /dev/null @@ -1,84 +0,0 @@ -import random -from pathlib import Path - -from pil_utils import BuildImage -from pydantic import Field - -from meme_generator import MemeArgsModel, MemeArgsParser, MemeArgsType, add_meme -from meme_generator.exception import TextOverLength - -img_dir = Path(__file__).parent / "images" - - -help = "图片编号,范围为 1~21" - -parser = MemeArgsParser() -parser.add_argument("-n", "--number", type=int, default=0, help=help) - - -class Model(MemeArgsModel): - number: int = Field(0, description=help) - - -def firefly_holdsign(images, texts: list[str], args: Model): - text = texts[0] - total_num = 21 - if 1 <= args.number <= total_num: - num = args.number - else: - num = random.randint(1, total_num) - - params = [ - ((300, 200), (144, 322), ((0, 66), (276, 0), (319, 178), (43, 244))), - ((300, 250), (-46, -50), ((0, 83), (312, 0), (348, 243), (46, 314))), - ((300, 150), (106, 351), ((0, 0), (286, 0), (276, 149), (12, 149))), - ((250, 200), (245, -6), ((31, 0), (288, 49), (256, 239), (0, 190))), - ((500, 200), (0, 0), ((0, 0), (492, 0), (462, 198), (25, 198))), - ((350, 150), (74, 359), ((0, 52), (345, 0), (364, 143), (31, 193))), - ((270, 200), (231, -9), ((31, 0), (305, 49), (270, 245), (0, 192))), - ((350, 150), (64, 340), ((0, 44), (345, 0), (358, 153), (34, 197))), - ((230, 100), (57, 261), ((10, 0), (243, 38), (222, 132), (0, 99))), - ((240, 150), (-24, -20), ((0, 32), (235, 0), (254, 146), (24, 182))), - ((230, 140), (133, -35), ((40, 0), (267, 68), (227, 203), (0, 133))), - ((169, 124), (107, 236), ((0, 0), (169, 0), (169, 124), (0, 124))), - ((210, 140), (156, -7), ((24, 0), (227, 32), (204, 172), (0, 136))), - ((250, 123), (53, 237), ((0, 3), (250, 0), (250, 123), (0, 123))), - ((200, 140), (168, -9), ((29, 0), (222, 40), (192, 177), (0, 135))), - ((256, 96), (50, 264), ((0, 0), (256, 0), (256, 96), (0, 96))), - ((120, 200), (174, 130), ((116, 0), (240, 67), (117, 269), (0, 195))), - ((250, 140), (-42, -27), ((0, 77), (244, 0), (288, 132), (42, 210))), - ((230, 130), (-64, -42), ((0, 110), (229, 0), (294, 126), (64, 245))), - ((183, 133), (0, 227), ((0, 0), (183, 9), (183, 133), (0, 133))), - ((255, 106), (50, 254), ((2, 4), (256, 0), (257, 106), (0, 106))), - ] - size, loc, points = params[num - 1] - frame = BuildImage.open(img_dir / f"{num:02d}.png") - text_img = BuildImage.new("RGBA", size) - padding = 10 - try: - text_img.draw_text( - (padding, padding, size[0] - padding, size[1] - padding), - text, - max_fontsize=80, - min_fontsize=30, - allow_wrap=True, - lines_align="center", - spacing=10, - fontname="FZShaoEr-M11S", - fill="#3b0b07", - ) - except ValueError: - raise TextOverLength(text) - frame.paste(text_img.perspective(points), loc, alpha=True) - return frame.save_png() - - -add_meme( - "firefly_holdsign", - firefly_holdsign, - min_texts=1, - max_texts=1, - default_texts=["我超爱你"], - args_type=MemeArgsType(parser, Model), - keywords=["流萤举牌"], -) diff --git a/meme_generator/memes/firefly_holdsign/images/01.png b/meme_generator/memes/firefly_holdsign/images/01.png deleted file mode 100644 index 1ec0d14e3df2e989f4710bf608c296ca15614e4e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/01.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ede28860d0bae275a454e9bd6b394a89eef02c154d520522017e9eee4b13343a -size 183670 diff --git a/meme_generator/memes/firefly_holdsign/images/02.png b/meme_generator/memes/firefly_holdsign/images/02.png deleted file mode 100644 index d5cc5ecd683de6d2bd7583af28c5900d90a07d6d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/02.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:adccdfc24190de91c9ad8608a4acc9f66f1cfd94e0a0db70634b0908d51b9b38 -size 136052 diff --git a/meme_generator/memes/firefly_holdsign/images/03.png b/meme_generator/memes/firefly_holdsign/images/03.png deleted file mode 100644 index 34dd151da001c5e69065ce13de2483f34f6ea3de..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/03.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b71d9baee2399eb6a4ecf0ec6402bb2286a4dfeb6c5accacdcb6952a0a74e88 -size 170232 diff --git a/meme_generator/memes/firefly_holdsign/images/04.png b/meme_generator/memes/firefly_holdsign/images/04.png deleted file mode 100644 index 3851c47340c03354771c14c847d98a2680be067d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/04.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14a13c6f6c5c2b5b3c7207f64b75124cef135528dc4b48b135fab1677da54d7b -size 202794 diff --git a/meme_generator/memes/firefly_holdsign/images/05.png b/meme_generator/memes/firefly_holdsign/images/05.png deleted file mode 100644 index f8760643f9ebaee6f4334c579b764bde6b1f3eb6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/05.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c207ae21e500a804a7ca83da5379bcb86d36ef2344726dc7433b39850dc731d2 -size 128707 diff --git a/meme_generator/memes/firefly_holdsign/images/06.png b/meme_generator/memes/firefly_holdsign/images/06.png deleted file mode 100644 index b9857c59638322d5c4f5eeec7c34e875047cc647..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/06.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86e9a610d1cbe4f1be1ee2174ea0f11838fb6e2adc2a094c1cdc6dce36832569 -size 154067 diff --git a/meme_generator/memes/firefly_holdsign/images/07.png b/meme_generator/memes/firefly_holdsign/images/07.png deleted file mode 100644 index 9ae20052bbaba9b084547bb59abbde5bfeba8d2b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/07.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:71b4887cdff4e8442a489b2b523a85dfd6426a444283c9a894a14150a26d18b5 -size 190342 diff --git a/meme_generator/memes/firefly_holdsign/images/08.png b/meme_generator/memes/firefly_holdsign/images/08.png deleted file mode 100644 index bbf5886a1bc984649b275368153af1c2774fc9d7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/08.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3ec0f4369cc0dc711a1d7e47304768999f7dd85ba4d3ba8c7e7f0b3c530c3ed5 -size 163038 diff --git a/meme_generator/memes/firefly_holdsign/images/09.png b/meme_generator/memes/firefly_holdsign/images/09.png deleted file mode 100644 index 1de65948ab03b1a4f6f5ce7a30ddbd15aca5e3dd..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/09.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:381af8f2b911d55acbe0ac1202e4e433b55634b8fa0d5ade355dc9cebf0182f0 -size 159075 diff --git a/meme_generator/memes/firefly_holdsign/images/10.png b/meme_generator/memes/firefly_holdsign/images/10.png deleted file mode 100644 index 972ad3bd58ee87b413de1a66ed57c966ca9823cb..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6effa6dd524e8bc464f664801c5293a248813be2975e396e43ec871defe7cf90 -size 152028 diff --git a/meme_generator/memes/firefly_holdsign/images/11.png b/meme_generator/memes/firefly_holdsign/images/11.png deleted file mode 100644 index f30f316eaeeaccdd64355bfb52d2c413bf9aa7bb..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/11.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d565f111a5a962a386513493671d1edd7bc2a91a1a6d72a437916c21e9d78a79 -size 158935 diff --git a/meme_generator/memes/firefly_holdsign/images/12.png b/meme_generator/memes/firefly_holdsign/images/12.png deleted file mode 100644 index 0b690e438ac11443e737a1ac2a9f7d7b0fc2bb03..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/12.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0fdc0d81ddb276f0f76989bacf69567bd3e7d8472b2d9b7a2024ee358104d37e -size 158923 diff --git a/meme_generator/memes/firefly_holdsign/images/13.png b/meme_generator/memes/firefly_holdsign/images/13.png deleted file mode 100644 index 89298783266ab4588cd7eaead985008aa4274a67..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/13.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:92ba8e1d75f29762a2760ae95480fe0a2fb7da2778bda0ce028dfdda89945704 -size 153224 diff --git a/meme_generator/memes/firefly_holdsign/images/14.png b/meme_generator/memes/firefly_holdsign/images/14.png deleted file mode 100644 index ba577b26bb18752a222ab158f563ed750049a18e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/14.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bfdeda317b1544476daf5660888c7d7f1c789bebf28b9223d483fa6ec6f8af4f -size 124140 diff --git a/meme_generator/memes/firefly_holdsign/images/15.png b/meme_generator/memes/firefly_holdsign/images/15.png deleted file mode 100644 index 786a09aee160d7a1b496a0065983dab76beab68d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/15.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e5ceab93df3c9dc9170e61d5954514b58d55bee536c9530a5baaf6f385335d7e -size 159207 diff --git a/meme_generator/memes/firefly_holdsign/images/16.png b/meme_generator/memes/firefly_holdsign/images/16.png deleted file mode 100644 index 2c3127c0ee51ff656f3307dbdf75e56c6d99f568..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/16.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:83183bda881f0b7d7e5fa4796818ff215a927c0798e2a7e76733cc9864da4f17 -size 147663 diff --git a/meme_generator/memes/firefly_holdsign/images/17.png b/meme_generator/memes/firefly_holdsign/images/17.png deleted file mode 100644 index f9807e5601aa9be5979853e749e8c658fcfc2a56..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/17.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fc65510c63b92dc56455172ba34c442efd8f7693e125f129ecf675c1dd86fc2c -size 160749 diff --git a/meme_generator/memes/firefly_holdsign/images/18.png b/meme_generator/memes/firefly_holdsign/images/18.png deleted file mode 100644 index 595a86051295b5f97e74e61d73ee97006ff94e14..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/18.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f958c121aee4768dbd30eef2c847252c396ac9116b89dba1b42c86ca8fcaf5a3 -size 153216 diff --git a/meme_generator/memes/firefly_holdsign/images/19.png b/meme_generator/memes/firefly_holdsign/images/19.png deleted file mode 100644 index d5342d0a61a069d6cea3af9ec0731056a217f6d9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/19.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:06c7f5869e885e59a99b2758f31e176fdb6cc658dadcaf1cc536472da649cb79 -size 155161 diff --git a/meme_generator/memes/firefly_holdsign/images/20.png b/meme_generator/memes/firefly_holdsign/images/20.png deleted file mode 100644 index 0f58b86d538da29f4f5c54270a56acefb1f28961..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/20.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6851274ef987e1e1eb816db19a913ea43a25c416e97828cfb172ce9faa2ae60 -size 142941 diff --git a/meme_generator/memes/firefly_holdsign/images/21.png b/meme_generator/memes/firefly_holdsign/images/21.png deleted file mode 100644 index cfab2e260f717d7c1800bea0102abf354db9115d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/firefly_holdsign/images/21.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99e4d71327c545c66b93b3bf57c635be67c3539f2e6490a3293ab863d6e71505 -size 149052 diff --git a/meme_generator/memes/flash_blind/__init__.py b/meme_generator/memes/flash_blind/__init__.py index fc7a02818ca574ec442b5d8bf4582af92e6923fb..f639e288b10ec7949409809f34e48a7a770a440f 100644 --- a/meme_generator/memes/flash_blind/__init__.py +++ b/meme_generator/memes/flash_blind/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from PIL import ImageOps from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -7,9 +9,9 @@ from meme_generator.exception import TextOverLength from meme_generator.utils import save_gif -def flash_blind(images: list[BuildImage], texts: list[str], args): +def flash_blind(images: List[BuildImage], texts: List[str], args): img = images[0].convert("RGB").resize_width(500) - frames: list[IMG] = [] + frames: List[IMG] = [] frames.append(img.image) frames.append(ImageOps.invert(img.image)) img_enlarge = img.resize_canvas((450, img.height * 450 // 500)).resize( diff --git a/meme_generator/memes/fleshlight/__init__.py b/meme_generator/memes/fleshlight/__init__.py index 5a648f5afe6bac6ff4e323b9cb363dc9bd7e5005..625cdb8dfc3537e3b4457aa0a4b675ca1472601b 100644 --- a/meme_generator/memes/fleshlight/__init__.py +++ b/meme_generator/memes/fleshlight/__init__.py @@ -1,72 +1,64 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def fleshlight(images: list[BuildImage], texts, args): - params = [ - (((0, 6), (205, 0), (213, 157), (8, 171)), (117, 59)), - (((0, 6), (205, 0), (213, 157), (8, 171)), (117, 59)), - (((0, 6), (205, 0), (213, 157), (8, 171)), (117, 59)), - (((0, 7), (204, 0), (213, 157), (8, 172)), (118, 58)), - (((0, 6), (207, 0), (213, 158), (8, 173)), (119, 57)), - (((0, 6), (207, 0), (213, 158), (8, 173)), (119, 57)), - (((0, 6), (207, 0), (213, 158), (8, 173)), (119, 57)), - (((0, 6), (205, 0), (212, 157), (7, 171)), (121, 58)), - (((0, 6), (205, 0), (212, 157), (7, 171)), (121, 58)), - (((0, 6), (206, 0), (212, 158), (8, 172)), (121, 56)), - (((0, 6), (206, 0), (212, 158), (8, 172)), (121, 56)), - (((0, 6), (207, 0), (214, 157), (10, 171)), (121, 55)), - (((0, 7), (201, 0), (218, 154), (13, 169)), (121, 49)), - (((0, 7), (195, 0), (219, 147), (18, 162)), (118, 50)), - (((0, 4), (196, 0), (223, 133), (18, 143)), (114, 54)), - (((0, 0), (192, 1), (219, 121), (17, 124)), (115, 58)), - (((0, 0), (188, 5), (220, 110), (20, 107)), (112, 61)), - (((0, 0), (185, 15), (217, 86), (26, 73)), (108, 72)), - (((0, 0), (182, 19), (234, 67), (34, 44)), (102, 88)), - (((0, 0), (175, 25), (224, 55), (22, 23)), (111, 105)), - (((0, 0), (167, 29), (209, 49), (13, 14)), (121, 110)), - (((0, 0), (144, 27), (195, 46), (8, 8)), (135, 110)), - (((0, 0), (177, 36), (206, 59), (13, 18)), (129, 93)), - (((0, 0), (180, 38), (211, 69), (16, 25)), (126, 83)), - (((0, 0), (181, 28), (220, 70), (26, 39)), (119, 82)), - (((0, 0), (180, 17), (227, 65), (27, 45)), (115, 89)), - (((0, 0), (181, 15), (230, 63), (33, 46)), (110, 95)), - (((0, 0), (184, 24), (228, 73), (27, 47)), (91, 102)), - (((0, 0), (189, 8), (208, 73), (0, 66)), (83, 94)), - (((19, 0), (202, 25), (204, 85), (0, 58)), (63, 82)), - (((12, 0), (196, 18), (205, 70), (0, 50)), (70, 87)), - (((4, 0), (189, 17), (205, 74), (0, 53)), (82, 79)), - (((0, 0), (184, 18), (205, 72), (1, 51)), (91, 74)), - (((0, 0), (183, 17), (206, 69), (4, 52)), (92, 73)), - ] - - def maker(i: int) -> Maker: - def make(imgs: list[BuildImage]) -> BuildImage: - img = imgs[0].convert("RGBA").resize((210, 170), keep_ratio=True) - frame = BuildImage.open(img_dir / f"{i}.png") - points, pos = params[i] - frame.paste(img.perspective(points), pos, below=True) - return frame - - return make - - return make_gif_or_combined_gif( - images, maker, 34, 0.1, FrameAlignPolicy.extend_first - ) - - -add_meme( - "fleshlight", - fleshlight, - min_images=1, - max_images=1, - keywords=["飞机杯"], - date_created=datetime(2023, 4, 29), - date_modified=datetime(2023, 4, 29), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def fleshlight(images: List[BuildImage], texts, args): + params = [ + (((0, 6), (205, 0), (213, 157), (8, 171)), (117, 59)), + (((0, 6), (205, 0), (213, 157), (8, 171)), (117, 59)), + (((0, 6), (205, 0), (213, 157), (8, 171)), (117, 59)), + (((0, 7), (204, 0), (213, 157), (8, 172)), (118, 58)), + (((0, 6), (207, 0), (213, 158), (8, 173)), (119, 57)), + (((0, 6), (207, 0), (213, 158), (8, 173)), (119, 57)), + (((0, 6), (207, 0), (213, 158), (8, 173)), (119, 57)), + (((0, 6), (205, 0), (212, 157), (7, 171)), (121, 58)), + (((0, 6), (205, 0), (212, 157), (7, 171)), (121, 58)), + (((0, 6), (206, 0), (212, 158), (8, 172)), (121, 56)), + (((0, 6), (206, 0), (212, 158), (8, 172)), (121, 56)), + (((0, 6), (207, 0), (214, 157), (10, 171)), (121, 55)), + (((0, 7), (201, 0), (218, 154), (13, 169)), (121, 49)), + (((0, 7), (195, 0), (219, 147), (18, 162)), (118, 50)), + (((0, 4), (196, 0), (223, 133), (18, 143)), (114, 54)), + (((0, 0), (192, 1), (219, 121), (17, 124)), (115, 58)), + (((0, 0), (188, 5), (220, 110), (20, 107)), (112, 61)), + (((0, 0), (185, 15), (217, 86), (26, 73)), (108, 72)), + (((0, 0), (182, 19), (234, 67), (34, 44)), (102, 88)), + (((0, 0), (175, 25), (224, 55), (22, 23)), (111, 105)), + (((0, 0), (167, 29), (209, 49), (13, 14)), (121, 110)), + (((0, 0), (144, 27), (195, 46), (8, 8)), (135, 110)), + (((0, 0), (177, 36), (206, 59), (13, 18)), (129, 93)), + (((0, 0), (180, 38), (211, 69), (16, 25)), (126, 83)), + (((0, 0), (181, 28), (220, 70), (26, 39)), (119, 82)), + (((0, 0), (180, 17), (227, 65), (27, 45)), (115, 89)), + (((0, 0), (181, 15), (230, 63), (33, 46)), (110, 95)), + (((0, 0), (184, 24), (228, 73), (27, 47)), (91, 102)), + (((0, 0), (189, 8), (208, 73), (0, 66)), (83, 94)), + (((19, 0), (202, 25), (204, 85), (0, 58)), (63, 82)), + (((12, 0), (196, 18), (205, 70), (0, 50)), (70, 87)), + (((4, 0), (189, 17), (205, 74), (0, 53)), (82, 79)), + (((0, 0), (184, 18), (205, 72), (1, 51)), (91, 74)), + (((0, 0), (183, 17), (206, 69), (4, 52)), (92, 73)), + ] + + def maker(i: int) -> Maker: + def make(img: BuildImage) -> BuildImage: + img = img.convert("RGBA").resize((210, 170), keep_ratio=True) + frame = BuildImage.open(img_dir / f"{i}.png") + points, pos = params[i] + frame.paste(img.perspective(points), pos, below=True) + return frame + + return make + + return make_gif_or_combined_gif( + images[0], maker, 34, 0.1, FrameAlignPolicy.extend_first + ) + + +add_meme("fleshlight", fleshlight, min_images=1, max_images=1, keywords=["飞机杯"]) diff --git a/meme_generator/memes/follow/__init__.py b/meme_generator/memes/follow/__init__.py index f63664c51b9cfe7d103849982c3ce8f775ac5b2b..e71a0b030d5c3eb89a46e19a7a7b2c784d084dc0 100644 --- a/meme_generator/memes/follow/__init__.py +++ b/meme_generator/memes/follow/__init__.py @@ -1,10 +1,12 @@ +from typing import List + from pil_utils import BuildImage, Text2Image from meme_generator import MemeArgsModel, add_meme from meme_generator.exception import TextOverLength -def follow(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def follow(images: List[BuildImage], texts: List[str], args: MemeArgsModel): img = images[0].circle().resize((200, 200)) if texts: diff --git a/meme_generator/memes/forbid/__init__.py b/meme_generator/memes/forbid/__init__.py index 5ac420f72878ef1c2f23bec16ea79c58fe95bec1..c0aa89c8026592ace5a61e9bf577f40ed03b2a57 100644 --- a/meme_generator/memes/forbid/__init__.py +++ b/meme_generator/memes/forbid/__init__.py @@ -1,32 +1,22 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import make_jpg_or_gif -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def forbid(images: list[BuildImage], texts, args): - frame = BuildImage.open(img_dir / "0.png") - - def make(imgs: list[BuildImage]) -> BuildImage: - return frame.copy().paste( - imgs[0].convert("RGBA").resize((304, 324), keep_ratio=True), - (0, 0), - below=True, - ) - - return make_jpg_or_gif(images, make) - - -add_meme( - "forbid", - forbid, - min_images=1, - max_images=1, - keywords=["禁止", "禁"], - date_created=datetime(2023, 3, 12), - date_modified=datetime(2023, 3, 12), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from meme_generator.utils import make_jpg_or_gif +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def forbid(images: List[BuildImage], texts, args): + frame = BuildImage.open(img_dir / "0.png") + + def make(img: BuildImage) -> BuildImage: + return frame.copy().paste( + img.resize((304, 324), keep_ratio=True), (0, 0), below=True + ) + + return make_jpg_or_gif(images[0], make) + + +add_meme("forbid", forbid, min_images=1, max_images=1, keywords=["禁止", "禁"]) diff --git a/meme_generator/memes/frieren_take/__init__.py b/meme_generator/memes/frieren_take/__init__.py deleted file mode 100644 index edbebe4db3e8d399d752e0609e5edc73b22e8eb1..0000000000000000000000000000000000000000 --- a/meme_generator/memes/frieren_take/__init__.py +++ /dev/null @@ -1,56 +0,0 @@ -from pathlib import Path - -from pil_utils import BuildImage -from pydantic import Field - -from meme_generator import MemeArgsModel, MemeArgsParser, MemeArgsType, add_meme -from meme_generator.exception import TextOverLength -from meme_generator.utils import make_jpg_or_gif - -img_dir = Path(__file__).parent / "images" - -help = "是否使用默认文字" -default_text = "所谓的男人啊,只要送他们这种东西就会很开心" - -parser = MemeArgsParser(prefix_chars="-/") -parser.add_argument("-d", "--default", "/默认", action="store_true", help=help) - - -class Model(MemeArgsModel): - default: bool = Field(False, description=help) - - -def frieren_take(images: list[BuildImage], texts: list[str], args: Model): - frame = BuildImage.open(img_dir / "0.png") - text = default_text if args.default else texts[0] if texts else None - if text: - try: - frame.draw_text( - (100, frame.height - 120, frame.width - 100, frame.height), - text, - max_fontsize=50, - min_fontsize=20, - fill="white", - stroke_fill="black", - stroke_ratio=0.05, - ) - except ValueError: - raise TextOverLength(text) - - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA").resize((102, 108), keep_ratio=True) - return frame.copy().paste(img, (130, 197), below=True) - - return make_jpg_or_gif(images[0], make) - - -add_meme( - "frieren_take", - frieren_take, - min_images=1, - max_images=1, - max_texts=1, - default_texts=[default_text], - args_type=MemeArgsType(parser, Model, [Model(default=False), Model(default=True)]), - keywords=["芙莉莲拿"], -) diff --git a/meme_generator/memes/frieren_take/images/0.png b/meme_generator/memes/frieren_take/images/0.png deleted file mode 100644 index 8a7921a0d9f36bb7bc40210157a6aa547a0c11c9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/frieren_take/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2a5b838ca9bbe806a0862f61baf0585f25a4c8f660e1ac66b294d90cf20cff22 -size 556437 diff --git a/meme_generator/memes/funny_mirror/__init__.py b/meme_generator/memes/funny_mirror/__init__.py index 07e06868361cd7f82e5612aed1dff578602ddbed..5f9f425588845831be7dd284e2f3a1beb4af4f69 100644 --- a/meme_generator/memes/funny_mirror/__init__.py +++ b/meme_generator/memes/funny_mirror/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -5,9 +7,9 @@ from meme_generator import add_meme from meme_generator.utils import save_gif -def funny_mirror(images: list[BuildImage], texts, args): +def funny_mirror(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((500, 500)) - frames: list[IMG] = [img.image] + frames: List[IMG] = [img.image] coeffs = [0.01, 0.03, 0.05, 0.08, 0.12, 0.17, 0.23, 0.3, 0.4, 0.6] borders = [25, 52, 67, 83, 97, 108, 118, 128, 138, 148] for i in range(10): diff --git a/meme_generator/memes/garbage/__init__.py b/meme_generator/memes/garbage/__init__.py index 642bc6600416e1a8d02f714bac2498f222e7cf5d..c0c75d8c4055c555419af21fece78e12e3da94c6 100644 --- a/meme_generator/memes/garbage/__init__.py +++ b/meme_generator/memes/garbage/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def garbage(images: list[BuildImage], texts, args): +def garbage(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((79, 79)) # fmt: off locs = ( @@ -18,7 +19,7 @@ def garbage(images: list[BuildImage], texts, args): (37, 67), (37, 67), (39, 69), (37, 70), (37, 70)] ) # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(25): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(img, locs[i], below=True) diff --git a/meme_generator/memes/genshin_start/__init__.py b/meme_generator/memes/genshin_start/__init__.py index 050d0d74f27f9500b74fffacc97752fc54c32202..577b8ea1c978b9912a42ed5d9f61c6ee8ad4d9e5 100644 --- a/meme_generator/memes/genshin_start/__init__.py +++ b/meme_generator/memes/genshin_start/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def genshin_start(images: list[BuildImage], texts: list[str], args): +def genshin_start(images: List[BuildImage], texts: List[str], args): frame = BuildImage.open(img_dir / "0.png") if texts: text = texts[0] diff --git a/meme_generator/memes/gif_subtitle/__init__.py b/meme_generator/memes/gif_subtitle/__init__.py index 1452cf195018e11cc46cf82f0914c2d1eabf8a73..11de55ac9e503f777f7fc6580708bd10437096fc 100644 --- a/meme_generator/memes/gif_subtitle/__init__.py +++ b/meme_generator/memes/gif_subtitle/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List, Tuple from pil_utils import BuildImage @@ -11,16 +12,15 @@ img_dir = Path(__file__).parent / "images" def make_gif( key: str, - texts: list[str], - pieces: tuple[tuple[int, int], ...], + texts: List[str], + pieces: Tuple[Tuple[int, int], ...], fontsize: int = 20, padding_x: int = 5, padding_y: int = 5, ): img = BuildImage.open(img_dir / f"{key}.gif").image - frames: list[BuildImage] = [] - n_frames = getattr(img, "n_frames", 1) - for i in range(n_frames): + frames: List[BuildImage] = [] + for i in range(img.n_frames): img.seek(i) frames.append(BuildImage(img.convert("RGB"))) @@ -46,12 +46,12 @@ def make_gif( def add_gif_meme( key: str, - keywords: list[str], - pieces: tuple[tuple[int, int], ...], - examples: tuple[str, ...], + keywords: List[str], + pieces: Tuple[Tuple[int, int], ...], + examples: Tuple[str, ...], **kwargs, ): - def gif_func(images, texts: list[str], args): + def gif_func(images, texts: List[str], args): return make_gif(key, texts, pieces, **kwargs) text_num = len(pieces) @@ -94,14 +94,7 @@ add_gif_meme( "qiegewala", ["切格瓦拉"], ((0, 15), (16, 31), (31, 38), (38, 48), (49, 68), (68, 86)), - ( - "没有钱啊 肯定要做的啊", - "不做的话没有钱用", - "那你不会去打工啊", - "有手有脚的", - "打工是不可能打工的", - "这辈子不可能打工的", - ), + ("没有钱啊 肯定要做的啊", "不做的话没有钱用", "那你不会去打工啊", "有手有脚的", "打工是不可能打工的", "这辈子不可能打工的"), ) add_gif_meme( @@ -148,12 +141,7 @@ add_gif_meme( "wunian", ["五年怎么过的"], ((11, 20), (35, 50), (59, 77), (82, 95)), - ( - "五年", - "你知道我这五年是怎么过的吗", - "我每天躲在家里玩贪玩蓝月", - "你知道有多好玩吗", - ), + ("五年", "你知道我这五年是怎么过的吗", "我每天躲在家里玩贪玩蓝月", "你知道有多好玩吗"), fontsize=16, ) @@ -161,10 +149,5 @@ add_gif_meme( "maikease", ["麦克阿瑟说"], ((0, 22), (24, 46), (48, 70), (72, 84)), - ( - "美国前五星上将麦克阿瑟", - "曾这样评价道", - "如果让我去阻止xxx", - "那么我宁愿去阻止上帝", - ), + ("美国前五星上将麦克阿瑟", "曾这样评价道", "如果让我去阻止xxx", "那么我宁愿去阻止上帝"), ) diff --git a/meme_generator/memes/good_news/__init__.py b/meme_generator/memes/good_news/__init__.py index 064b0dc93aa2b7ccb421d5730334a20b7357d3cd..18137eda7e8099b2550557021e75e854f54a4d4f 100644 --- a/meme_generator/memes/good_news/__init__.py +++ b/meme_generator/memes/good_news/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def good_news(images, texts: list[str], args): +def good_news(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/google/__init__.py b/meme_generator/memes/google/__init__.py index f39d428a373a19f801270cf6ebe27808d4f549b1..2e0544d44ba347a347f97f8bd017a3295d08d3c1 100644 --- a/meme_generator/memes/google/__init__.py +++ b/meme_generator/memes/google/__init__.py @@ -1,9 +1,11 @@ +from typing import List + from pil_utils import BuildImage, Text2Image from meme_generator import add_meme -def google(images, texts: list[str], args): +def google(images, texts: List[str], args): text = texts[0] text = " ".join(text.splitlines()) colors = ["#4285f4", "#db4437", "#f4b400", "#4285f4", "#0f9d58", "#db4437"] diff --git a/meme_generator/memes/grab/__init__.py b/meme_generator/memes/grab/__init__.py index b5d01f4bedd0c4b88c5ff2850fcfe958459a3c75..d40c0c88560d21fb947e730fbd9980e23a49d34d 100644 --- a/meme_generator/memes/grab/__init__.py +++ b/meme_generator/memes/grab/__init__.py @@ -1,26 +1,18 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def grab(images: list[BuildImage], texts, args): - frame = BuildImage.open(img_dir / "0.png") - frame.paste( - images[0].convert("RGBA").resize((500, 500), keep_ratio=True), below=True - ) - return frame.save_jpg() - - -add_meme( - "grab", - grab, - min_images=1, - max_images=1, - keywords=["抓"], - date_created=datetime(2023, 3, 28), - date_modified=datetime(2023, 3, 28), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def grab(images: List[BuildImage], texts, args): + frame = BuildImage.open(img_dir / "0.png") + frame.paste( + images[0].convert("RGBA").resize((500, 500), keep_ratio=True), below=True + ) + return frame.save_jpg() + + +add_meme("grab", grab, min_images=1, max_images=1, keywords=["抓"]) diff --git a/meme_generator/memes/guichu/__init__.py b/meme_generator/memes/guichu/__init__.py index 0f17f72a4c934feaec26cbf1d26f94d796715479..e7281b4b484206fc09f9aeeab3a8f6727bc7362a 100644 --- a/meme_generator/memes/guichu/__init__.py +++ b/meme_generator/memes/guichu/__init__.py @@ -1,4 +1,4 @@ -from typing import Literal, NamedTuple +from typing import Dict, List, Literal, NamedTuple, Tuple from PIL.Image import Image as IMG from PIL.Image import Transpose @@ -20,9 +20,7 @@ group.add_argument( default="left", help=help, ) -group.add_argument( - "--left", "/左", action="store_const", const="left", dest="direction" -) +group.add_argument("--left", "/左", action="store_const", const="left", dest="direction") group.add_argument( "--right", "/右", action="store_const", const="right", dest="direction" ) @@ -38,18 +36,18 @@ class Model(MemeArgsModel): ) -def guichu(images: list[BuildImage], texts, args: Model): +def guichu(images: List[BuildImage], texts, args: Model): img = images[0].convert("RGBA") img_w, img_h = img.size class Mode(NamedTuple): method: Transpose - size1: tuple[int, int, int, int] - pos1: tuple[int, int] - size2: tuple[int, int, int, int] - pos2: tuple[int, int] + size1: Tuple[int, int, int, int] + pos1: Tuple[int, int] + size2: Tuple[int, int, int, int] + pos2: Tuple[int, int] - modes: dict[str, Mode] = { + modes: Dict[str, Mode] = { "left": Mode( Transpose.FLIP_LEFT_RIGHT, (0, 0, img_w // 2, img_h), @@ -90,7 +88,7 @@ def guichu(images: list[BuildImage], texts, args: Model): img_symmetric.copy().resize_width(img_w * 2), (-img_w // 2, -img_h // 2) ) - frames: list[IMG] = [] + frames: List[IMG] = [] frames += ( ([img.image] * 3 + [img_flip.image] * 3) * 3 + [img.image, img_flip.image] * 3 diff --git a/meme_generator/memes/gun/__init__.py b/meme_generator/memes/gun/__init__.py index 08acb4ce9497844a3c64590c89b4557b01a4cafa..59ef415204ee6d88dba5d2ecf6e474b815e47d1e 100644 --- a/meme_generator/memes/gun/__init__.py +++ b/meme_generator/memes/gun/__init__.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Literal +from typing import List, Literal from PIL.Image import Transpose from pil_utils import BuildImage @@ -23,22 +23,18 @@ group.add_argument( default="left", help=help, ) -group.add_argument( - "--left", "/左手", action="store_const", const="left", dest="position" -) +group.add_argument("--left", "/左手", action="store_const", const="left", dest="position") group.add_argument( "--right", "/右手", action="store_const", const="right", dest="position" ) -group.add_argument( - "--both", "/双手", action="store_const", const="both", dest="position" -) +group.add_argument("--both", "/双手", action="store_const", const="both", dest="position") class Model(MemeArgsModel): position: Literal["left", "right", "both"] = Field("left", description=help) -def gun(images: list[BuildImage], texts, args: Model): +def gun(images: List[BuildImage], texts, args: Model): frame = images[0].convert("RGBA").resize((500, 500), keep_ratio=True) gun = BuildImage.open(img_dir / "0.png") position = args.position diff --git a/meme_generator/memes/hammer/__init__.py b/meme_generator/memes/hammer/__init__.py index 523c7b691ef5448855651dbaac3e214446743b2d..9a5b31a955e8d12ceee501a3dca30a48bcba0817 100644 --- a/meme_generator/memes/hammer/__init__.py +++ b/meme_generator/memes/hammer/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def hammer(images: list[BuildImage], texts, args): +def hammer(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() # fmt: off locs = [ @@ -17,7 +18,7 @@ def hammer(images: list[BuildImage], texts, args): (54, 169, 174, 110), (69, 128, 144, 135), (65, 130, 152, 124), ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(7): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i] diff --git a/meme_generator/memes/high_EQ/__init__.py b/meme_generator/memes/high_EQ/__init__.py index ca6c3233b5783194fc06bacfa444cd1b89ac8276..febab3af7f19928cffdae37991309780f99e489b 100644 --- a/meme_generator/memes/high_EQ/__init__.py +++ b/meme_generator/memes/high_EQ/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List, Tuple from pil_utils import BuildImage @@ -8,10 +9,10 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def high_EQ(images, texts: list[str], args): +def high_EQ(images, texts: List[str], args): frame = BuildImage.open(img_dir / "0.jpg") - def draw(pos: tuple[float, float, float, float], text: str): + def draw(pos: Tuple[float, float, float, float], text: str): try: frame.draw_text( pos, diff --git a/meme_generator/memes/hit_screen/__init__.py b/meme_generator/memes/hit_screen/__init__.py index 1b4a62e4bc406774debe853ea2bff7abd12e060f..1ff85781315f5802402a3dab620f26d14bf1c55c 100644 --- a/meme_generator/memes/hit_screen/__init__.py +++ b/meme_generator/memes/hit_screen/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_g img_dir = Path(__file__).parent / "images" -def hit_screen(images: list[BuildImage], texts, args): +def hit_screen(images: List[BuildImage], texts, args): params = ( (((1, 10), (138, 1), (140, 119), (7, 154)), (32, 37)), (((1, 10), (138, 1), (140, 121), (7, 154)), (32, 37)), @@ -44,6 +45,4 @@ def hit_screen(images: list[BuildImage], texts, args): ) -add_meme( - "hit_screen", hit_screen, min_images=1, max_images=1, keywords=["打穿", "打穿屏幕"] -) +add_meme("hit_screen", hit_screen, min_images=1, max_images=1, keywords=["打穿", "打穿屏幕"]) diff --git a/meme_generator/memes/hold_grudge/__init__.py b/meme_generator/memes/hold_grudge/__init__.py index 99cb97a7490a6a7fef92b9218f601493a57ca528..be7c196b6cba6522e927429bf64274ed5cf34ca8 100644 --- a/meme_generator/memes/hold_grudge/__init__.py +++ b/meme_generator/memes/hold_grudge/__init__.py @@ -1,5 +1,6 @@ from datetime import datetime from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image @@ -9,7 +10,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def hold_grudge(images, texts: list[str], args): +def hold_grudge(images, texts: List[str], args): date = datetime.today().strftime("%Y{}%m{}%d{}").format("年", "月", "日") text = f"{date} 晴\n{texts[0]}\n这个仇我先记下了" text2image = Text2Image.from_text(text, 45, fill="black", spacing=10).wrap(440) diff --git a/meme_generator/memes/hold_tight/__init__.py b/meme_generator/memes/hold_tight/__init__.py index 2071fe6f843b56d1a0f6931ade4032a05fa9d8db..98dc735a4250c2e6e8b93cc89ce90646dad7fc15 100644 --- a/meme_generator/memes/hold_tight/__init__.py +++ b/meme_generator/memes/hold_tight/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def hold_tight(images: list[BuildImage], texts, args): +def hold_tight(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((159, 171), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (113, 205), below=True) diff --git a/meme_generator/memes/hug_leg/__init__.py b/meme_generator/memes/hug_leg/__init__.py index ce57d146d4f36abe033c1cd59fa0c5f5a1f7493e..18ddf1c0bdce5e500d96dbc61a3a69d6db8ba4e8 100644 --- a/meme_generator/memes/hug_leg/__init__.py +++ b/meme_generator/memes/hug_leg/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def hug_leg(images: list[BuildImage], texts, args): +def hug_leg(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() locs = [ (50, 73, 68, 92), @@ -19,7 +20,7 @@ def hug_leg(images: list[BuildImage], texts, args): (55, 44, 65, 106), (66, 85, 60, 98), ] - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(6): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i] diff --git a/meme_generator/memes/hutao_bite/__init__.py b/meme_generator/memes/hutao_bite/__init__.py index 2d166d056652ee19a88034148e286766f0eb2d95..9cfbf7497f6374d77bf28e2b5e5cde1de0c0850b 100644 --- a/meme_generator/memes/hutao_bite/__init__.py +++ b/meme_generator/memes/hutao_bite/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def hutao_bite(images: list[BuildImage], texts, args): +def hutao_bite(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((100, 100)) - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [(98, 101, 108, 234), (96, 100, 108, 237)] for i in range(2): frame = BuildImage.open(img_dir / f"{i}.png") diff --git a/meme_generator/memes/imprison/__init__.py b/meme_generator/memes/imprison/__init__.py index 8b64338298f1ecc71a70a6431ab5a30f223146d8..4033971bf33c636b961fbddce334f3b36ee9486f 100644 --- a/meme_generator/memes/imprison/__init__.py +++ b/meme_generator/memes/imprison/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def imprison(images, texts: list[str], args): +def imprison(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/incivilization/__init__.py b/meme_generator/memes/incivilization/__init__.py index 1a65ac11975a8d526e000bcea518e2911d42d407..5491bc824ab12ebe3db5abeb34a5c13869af0ce6 100644 --- a/meme_generator/memes/incivilization/__init__.py +++ b/meme_generator/memes/incivilization/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL import ImageEnhance from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def incivilization(images: list[BuildImage], texts: list[str], args): +def incivilization(images: List[BuildImage], texts: List[str], args): frame = BuildImage.open(img_dir / "0.png") points = ((0, 20), (154, 0), (164, 153), (22, 180)) img = images[0].convert("RGBA").circle().resize((150, 150)).perspective(points) diff --git a/meme_generator/memes/interview/__init__.py b/meme_generator/memes/interview/__init__.py index 77b3f0058c50af33722d2299acdde5ad61224d3c..a8d226fad8b20c09cbedc2e5dd0ecab0beb9b904 100644 --- a/meme_generator/memes/interview/__init__.py +++ b/meme_generator/memes/interview/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def interview(images: list[BuildImage], texts: list[str], args): +def interview(images: List[BuildImage], texts: List[str], args): if len(images) == 2: self_img = images[0] user_img = images[1] diff --git a/meme_generator/memes/jerk_off/__init__.py b/meme_generator/memes/jerk_off/__init__.py deleted file mode 100644 index 1d48d502a172badb6f5460844b1055a7236a1e29..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/__init__.py +++ /dev/null @@ -1,41 +0,0 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def jerk_off(images: list[BuildImage], texts, args): - jerk_w, jerk_h = BuildImage.open(img_dir / "0.png").size - img_w, img_h = images[0].size - if img_w / img_h > jerk_w / jerk_h: - frame_h = jerk_h - frame_w = round(frame_h * img_w / img_h) - else: - frame_w = jerk_w - frame_h = round(frame_w * img_h / img_w) - - def maker(i: int) -> Maker: - def make(imgs: list[BuildImage]) -> BuildImage: - frame = imgs[0].convert("RGBA").resize((frame_w, frame_h), keep_ratio=True) - jerk = BuildImage.open(img_dir / f"{i}.png") - frame.paste(jerk, ((frame_w - jerk_w) // 2, frame_h - jerk_h), alpha=True) - return frame - - return make - - return make_gif_or_combined_gif(images, maker, 8, 0.1, FrameAlignPolicy.extend_loop) - - -add_meme( - "jerk_off", - jerk_off, - min_images=1, - max_images=1, - keywords=["打胶"], - date_created=datetime(2024, 8, 4), - date_modified=datetime(2024, 8, 4), -) diff --git a/meme_generator/memes/jerk_off/images/0.png b/meme_generator/memes/jerk_off/images/0.png deleted file mode 100644 index ccd0fe884467d887e1354d232113def81e76a598..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1b6151a06a97d5f60f7dc91654a2caab300fc19a44040823836c837a1ae45a91 -size 68179 diff --git a/meme_generator/memes/jerk_off/images/1.png b/meme_generator/memes/jerk_off/images/1.png deleted file mode 100644 index 5b862b816095578c9e97261e42f112a693eb3a9b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:073195d36b376bef30f2ba7add6c2c9f2dba6337b8bd57dab4d214b2153f6725 -size 45220 diff --git a/meme_generator/memes/jerk_off/images/2.png b/meme_generator/memes/jerk_off/images/2.png deleted file mode 100644 index 40fe5947652fd13712a54957c9b56662a66fc6de..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4b7cfe3921e2967c82242fc8fa12cad2346bc6a867731096038b3fde46835484 -size 45246 diff --git a/meme_generator/memes/jerk_off/images/3.png b/meme_generator/memes/jerk_off/images/3.png deleted file mode 100644 index dcfa0fd299599d306884a94fa5aa22def18d735a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45438385592ff72b35e5e79fd0a859bf14bfd00bdc445b42ce7178e796e29414 -size 48795 diff --git a/meme_generator/memes/jerk_off/images/4.png b/meme_generator/memes/jerk_off/images/4.png deleted file mode 100644 index 1bee8ff0014f3aef66992c391a780a540020e802..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a48414e7b0fd9557d7a694355011dcec7134a759e1858d690a5cb68cd6e82ae1 -size 46341 diff --git a/meme_generator/memes/jerk_off/images/5.png b/meme_generator/memes/jerk_off/images/5.png deleted file mode 100644 index 093d6223422a3975b56b92c1fac223c495d516b1..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57004af2e560173e7a99ddf9320fac8f1069720044d4f2f4b331b5b839e087a7 -size 61782 diff --git a/meme_generator/memes/jerk_off/images/6.png b/meme_generator/memes/jerk_off/images/6.png deleted file mode 100644 index 947d8ea3a6c203ec0bfb4694b0acef52703cf9a4..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fd83d4f7bc72e6ab6ba6748cee9e927df702bf7e8cb59524be19fc4f2df0e916 -size 68474 diff --git a/meme_generator/memes/jerk_off/images/7.png b/meme_generator/memes/jerk_off/images/7.png deleted file mode 100644 index 87baa6ed678cc7f810b9066e8e7198ff10c2e55d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/jerk_off/images/7.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7650f259721a07258d37d00571623bf12648200b8889f72f8b6f01adf744a405 -size 65638 diff --git a/meme_generator/memes/jiji_king/__init__.py b/meme_generator/memes/jiji_king/__init__.py index ca73d7eb7e4978181d26f68fada4aa37d8d9ddc4..dd67f38d3a46b2d77a84514173aa963a142bf15a 100644 --- a/meme_generator/memes/jiji_king/__init__.py +++ b/meme_generator/memes/jiji_king/__init__.py @@ -1,5 +1,6 @@ import math from pathlib import Path +from typing import List from pil_utils import BuildImage from pydantic import Field @@ -19,7 +20,7 @@ class Model(MemeArgsModel): circle: bool = Field(False, description=help) -def jiji_king(images: list[BuildImage], texts: list[str], args: Model): +def jiji_king(images: List[BuildImage], texts: List[str], args: Model): block_num = 5 if len(images) >= 7 or len(texts) >= 7: block_num = max(len(images), len(texts)) - 1 diff --git a/meme_generator/memes/jiujiu/__init__.py b/meme_generator/memes/jiujiu/__init__.py index 058d66b5965f3f5d16f13cefaef7a9531426dfa3..22bc183b6ed83a32db82eb0619a358d97146785f 100644 --- a/meme_generator/memes/jiujiu/__init__.py +++ b/meme_generator/memes/jiujiu/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def jiujiu(images: list[BuildImage], texts, args): +def jiujiu(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((75, 51), keep_ratio=True) - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(8): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(img, below=True) diff --git a/meme_generator/memes/kaleidoscope/__init__.py b/meme_generator/memes/kaleidoscope/__init__.py index 4e2945f609d5b1a0d6fd2a2182375738c8485c68..ab17c0e0744f1e74deb281473b660263b474abef 100644 --- a/meme_generator/memes/kaleidoscope/__init__.py +++ b/meme_generator/memes/kaleidoscope/__init__.py @@ -1,4 +1,5 @@ import math +from typing import List from pil_utils import BuildImage from pydantic import Field @@ -16,7 +17,7 @@ class Model(MemeArgsModel): circle: bool = Field(False, description=help) -def kaleidoscope(images: list[BuildImage], texts, args: Model): +def kaleidoscope(images: List[BuildImage], texts, args: Model): def make(img: BuildImage) -> BuildImage: circle_num = 10 img_per_circle = 4 diff --git a/meme_generator/memes/karyl_point/__init__.py b/meme_generator/memes/karyl_point/__init__.py index 77120fc703c54c103f93fb7bce8c9621099f9957..5824b41f72d42ebe1bb8fb4533a68fec839ea3b7 100644 --- a/meme_generator/memes/karyl_point/__init__.py +++ b/meme_generator/memes/karyl_point/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def karyl_point(images: list[BuildImage], texts, args): +def karyl_point(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").rotate(7.5, expand=True).resize((225, 225)) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (87, 790), alpha=True) diff --git a/meme_generator/memes/keep_away/__init__.py b/meme_generator/memes/keep_away/__init__.py index 1d4963c718cd16f5cfd36198d06a5f991430e18f..ed47b292dd9d1b70d4f248a65e394c21e03d3c88 100644 --- a/meme_generator/memes/keep_away/__init__.py +++ b/meme_generator/memes/keep_away/__init__.py @@ -1,10 +1,12 @@ +from typing import List + from PIL.Image import Transpose from pil_utils import BuildImage from meme_generator import add_meme -def keep_away(images: list[BuildImage], texts: list[str], args): +def keep_away(images: List[BuildImage], texts: List[str], args): def trans(img: BuildImage, n: int) -> BuildImage: img = img.convert("RGBA").square().resize((100, 100)) if n < 4: diff --git a/meme_generator/memes/kick_ball/__init__.py b/meme_generator/memes/kick_ball/__init__.py index b53ea883766be807a28eadb38d6fc65ab66937b8..47fec9f3f8e50c733e6cd22084146d94325fe0b5 100644 --- a/meme_generator/memes/kick_ball/__init__.py +++ b/meme_generator/memes/kick_ball/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def kick_ball(images: list[BuildImage], texts, args): +def kick_ball(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((78, 78)) # fmt: off locs = [ @@ -18,7 +19,7 @@ def kick_ball(images: list[BuildImage], texts, args): (50, 136), (51, 176), (52, 169), (55, 181), (58, 153) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(15): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(img.rotate(-24 * i), locs[i], below=True) diff --git a/meme_generator/memes/kirby_hammer/__init__.py b/meme_generator/memes/kirby_hammer/__init__.py index 6f71e8f048d3b5be72a2ff439211b47c9ce7ec0c..808c491dd820b54b45294ce254ee06c0fcc8b912 100644 --- a/meme_generator/memes/kirby_hammer/__init__.py +++ b/meme_generator/memes/kirby_hammer/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage from pydantic import Field @@ -18,7 +19,7 @@ class Model(MemeArgsModel): circle: bool = Field(False, description=help) -def kirby_hammer(images: list[BuildImage], texts, args: Model): +def kirby_hammer(images: List[BuildImage], texts, args: Model): # fmt: off positions = [ (318, 163), (319, 173), (320, 183), (317, 193), (312, 199), diff --git a/meme_generator/memes/kiss/__init__.py b/meme_generator/memes/kiss/__init__.py index 02a7e56db722be2bb9bf8bcd696c13064103137f..d3263c16353c59490d0506b6f476d985cda3710a 100644 --- a/meme_generator/memes/kiss/__init__.py +++ b/meme_generator/memes/kiss/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def kiss(images: list[BuildImage], texts, args): +def kiss(images: List[BuildImage], texts, args): self_head = images[0].convert("RGBA").circle().resize((40, 40)) user_head = images[1].convert("RGBA").circle().resize((50, 50)) # fmt: off @@ -22,7 +23,7 @@ def kiss(images: list[BuildImage], texts, args): (98, 55), (35, 65), (38, 100), (70, 80), (84, 65), (75, 65) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(13): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(user_head, user_locs[i], alpha=True) diff --git a/meme_generator/memes/klee_eat/__init__.py b/meme_generator/memes/klee_eat/__init__.py index 1256e37d1ca2df0ad5e7574dae28a9c13d84d580..b34429b01d14f77e3f76a7a33bbed1438ca5ae21 100644 --- a/meme_generator/memes/klee_eat/__init__.py +++ b/meme_generator/memes/klee_eat/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def klee_eat(images: list[BuildImage], texts, args): +def klee_eat(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((83, 83)) # fmt: off locs = [ @@ -21,7 +22,7 @@ def klee_eat(images: list[BuildImage], texts, args): (0, 174), (0, 174), (0, 174), (0, 174), (0, 174), (0, 174) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(31): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(img, locs[i], below=True) diff --git a/meme_generator/memes/knock/__init__.py b/meme_generator/memes/knock/__init__.py index a3d0b900d48c5768a9aa90b521a2883c40af88cc..0a44b37fc5563deea8406c6ddf109860a56e9485 100644 --- a/meme_generator/memes/knock/__init__.py +++ b/meme_generator/memes/knock/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,13 +10,13 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def knock(images: list[BuildImage], texts, args): +def knock(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() # fmt: off locs = [(60, 308, 210, 195), (60, 308, 210, 198), (45, 330, 250, 172), (58, 320, 218, 180), (60, 310, 215, 193), (40, 320, 250, 285), (48, 308, 226, 192), (51, 301, 223, 200)] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(8): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i] diff --git a/meme_generator/memes/lash/__init__.py b/meme_generator/memes/lash/__init__.py deleted file mode 100644 index f61d8801750e41780f8200b7547f80baabde2372..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/__init__.py +++ /dev/null @@ -1,42 +0,0 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import save_gif -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def lash(images: list[BuildImage], texts, args): - self_head = images[0].convert("RGBA").circle().resize((22, 22)) - user_head = images[1].convert("RGBA").circle().resize((22, 22)) - # fmt: off - self_locs = [ - (84,25), (87,23), (87,27), (86,28), (62,26), - (59,28), (76,20), (85,24), (80,23), - ] - user_locs = [ - (12,69), (15,66), (14,67), (15,66), (17,67), - (14,63), (21,56), (15,62), (17,69) - ] - # fmt: on - frames: list[IMG] = [] - for i in range(9): - frame = BuildImage.open(img_dir / f"{i}.png") - frame.paste(self_head, self_locs[i], alpha=True) - frame.paste(user_head, user_locs[i], alpha=True) - frames.append(frame.image) - return save_gif(frames, 0.05) - - -add_meme( - "lash", - lash, - min_images=2, - max_images=2, - keywords=["鞭笞", "鞭打", "鞭挞", "鞭策"], - date_created=datetime(2024, 7, 23), - date_modified=datetime(2024, 7, 23), -) diff --git a/meme_generator/memes/lash/images/0.png b/meme_generator/memes/lash/images/0.png deleted file mode 100644 index 6c2475f4da8dca4c5f72b805040d578f02af9148..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c301ea475d3aea6e6f67c62ff1c16a46c310d1f6584ac49950422cac291f5c3a -size 4860 diff --git a/meme_generator/memes/lash/images/1.png b/meme_generator/memes/lash/images/1.png deleted file mode 100644 index ab25d18f31483add8264a04b288769113f18ed1d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba501a1a9fe4943ee03914c3dd4f02aa315b38f77f6890eb2ff560d83795a694 -size 5027 diff --git a/meme_generator/memes/lash/images/2.png b/meme_generator/memes/lash/images/2.png deleted file mode 100644 index ec4d080c60462360c7bbf37286b077bd116e9d53..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6a351e5967901cf25e41980ecf78cb878177e4b1b15973e571f76e2007a2f7a -size 4442 diff --git a/meme_generator/memes/lash/images/3.png b/meme_generator/memes/lash/images/3.png deleted file mode 100644 index b16ea72361704b0fb3f2b02af3fe5cb9b2ec26e7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:05d262322c50404ba2765392759a4bde5c1f8a755ae81c44f5020e093ce22ebb -size 4259 diff --git a/meme_generator/memes/lash/images/4.png b/meme_generator/memes/lash/images/4.png deleted file mode 100644 index 0fd5637c78177ecfe46348954798f8ae4dc3511a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:070e9a5aabe7bdb15e066cb1b9b6810df5dacf5b3ab9a9292faf3e8d104cef93 -size 4515 diff --git a/meme_generator/memes/lash/images/5.png b/meme_generator/memes/lash/images/5.png deleted file mode 100644 index 454e07f53e84b14db1fba8f1d518fa988100aede..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e4675ed85591a997a77bc2f799cad3db4ded8770ef24839a4cc1b6b8a3d883b -size 5293 diff --git a/meme_generator/memes/lash/images/6.png b/meme_generator/memes/lash/images/6.png deleted file mode 100644 index b532170e4f42612db415ac7594c8d3d6e32cc5b6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:70bf8deb7a233b986900bf84e80c5542993ca051b6f5b29b866c7d17e63d29d5 -size 5276 diff --git a/meme_generator/memes/lash/images/7.png b/meme_generator/memes/lash/images/7.png deleted file mode 100644 index 3715874c8d36b00ba35aa7c50144fc26bc16076b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/7.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6fb33db6009e4fbe487a0417fa34e7f04068e7511de7c9fd19712b8fadd08607 -size 5220 diff --git a/meme_generator/memes/lash/images/8.png b/meme_generator/memes/lash/images/8.png deleted file mode 100644 index 4c0f777a5561200484e9821a761d5a13a482199f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lash/images/8.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:966f411161602738d2b3bd0ed7563cdeaea9cce7dad903dbc4b5dfab95863aff -size 4710 diff --git a/meme_generator/memes/learn/__init__.py b/meme_generator/memes/learn/__init__.py index 6de43b828c8e54902cf1649847c4c04b9e3887b7..a3c2fad58b5d39e8f781fc6bc6dac7d03f0c3377 100644 --- a/meme_generator/memes/learn/__init__.py +++ b/meme_generator/memes/learn/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def learn(images: list[BuildImage], texts: list[str], args): +def learn(images: List[BuildImage], texts: List[str], args): text = texts[0] if texts else "偷学群友数理基础" frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/lim_x_0/__init__.py b/meme_generator/memes/lim_x_0/__init__.py index a07ef25a28521e7bc2c036cf4d7ad32a94ad01d0..0eafec0ed477caa4924ce8a4ee31b0f9732a522f 100644 --- a/meme_generator/memes/lim_x_0/__init__.py +++ b/meme_generator/memes/lim_x_0/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def lim_x_0(images: list[BuildImage], texts, args): +def lim_x_0(images: List[BuildImage], texts, args): img = images[0] frame = BuildImage.open(img_dir / "0.png") img_c = img.convert("RGBA").circle().resize((72, 72)) diff --git a/meme_generator/memes/listen_music/__init__.py b/meme_generator/memes/listen_music/__init__.py index 875f3d7ec7ce24e7873c8827c09a9d86282a524d..9e4f1de0954ad06afd641cc9ebe390170e0981db 100644 --- a/meme_generator/memes/listen_music/__init__.py +++ b/meme_generator/memes/listen_music/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,10 +10,10 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def listen_music(images: list[BuildImage], texts, args): +def listen_music(images: List[BuildImage], texts, args): img = images[0].convert("RGBA") frame = BuildImage.open(img_dir / "0.png") - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(0, 360, 10): frames.append( frame.copy() diff --git a/meme_generator/memes/little_angel/__init__.py b/meme_generator/memes/little_angel/__init__.py index 9fb8b9025af0149598edf61a8654804297ce476e..bbfe9c60b425be26ec9b1560f20f26fcbc948ede 100644 --- a/meme_generator/memes/little_angel/__init__.py +++ b/meme_generator/memes/little_angel/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import MemeArgsModel, add_meme @@ -5,7 +7,7 @@ from meme_generator.exception import TextOverLength from meme_generator.utils import make_jpg_or_gif -def little_angel(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def little_angel(images: List[BuildImage], texts: List[str], args: MemeArgsModel): img_w, img_h = images[0].convert("RGBA").resize_width(500).size frame = BuildImage.new("RGBA", (600, img_h + 230), "white") text = "非常可爱!简直就是小天使" diff --git a/meme_generator/memes/little_do/__init__.py b/meme_generator/memes/little_do/__init__.py deleted file mode 100644 index 0fc2ffd057eaf90ad5da7c658435b88f9c32f9f3..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/__init__.py +++ /dev/null @@ -1,32 +0,0 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import save_gif -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def little_do(images: list[BuildImage], texts, args): - self_head = images[0].convert("RGBA").circle().resize((21, 21)) - user_head = images[1].convert("RGBA").circle().resize((21, 21)).rotate(90) - frames: list[IMG] = [] - for i in range(7): - frame = BuildImage.open(img_dir / f"{i}.png") - frame.paste(self_head, (40, 4), alpha=True) - frame.paste(user_head, (6, 46), alpha=True) - frames.append(frame.image) - return save_gif(frames, 0.05) - - -add_meme( - "little_do", - little_do, - min_images=2, - max_images=2, - keywords=["小撅", "轻撅", "滑稽撅"], - date_created=datetime(2024, 7, 12), - date_modified=datetime(2024, 7, 12), -) diff --git a/meme_generator/memes/little_do/images/0.png b/meme_generator/memes/little_do/images/0.png deleted file mode 100644 index 5f2e3578e8edff02f50c808409b73951efe923c0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07508ed2c7a99413e24a25b942e78762b89450316079f8a1245f71335b21e892 -size 4576 diff --git a/meme_generator/memes/little_do/images/1.png b/meme_generator/memes/little_do/images/1.png deleted file mode 100644 index ea16eb9bbd7e35cf082d09122163389df1ac8c61..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:752dbe639c0fc9f103494e0f082662cd364d4878d63c1d0c67b7cd65eab9ced1 -size 4539 diff --git a/meme_generator/memes/little_do/images/2.png b/meme_generator/memes/little_do/images/2.png deleted file mode 100644 index b1a1ea29979e9108b2e6d0c3628a2947c6b61624..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d1462533b76984949efbddff18602d3a92a4a2f42aa5a9b628387fe557dd9e9 -size 4435 diff --git a/meme_generator/memes/little_do/images/3.png b/meme_generator/memes/little_do/images/3.png deleted file mode 100644 index dbbc02e7c70b90f82e7576f8a75b1e99e317be65..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:29379f60cb13c2afe8f6c19d508185782de8cc8dc87712c1a09547aac2c7d4fb -size 4521 diff --git a/meme_generator/memes/little_do/images/4.png b/meme_generator/memes/little_do/images/4.png deleted file mode 100644 index 1fbdabe06b2b9fac1494cd5ff70ab8fdf074bfb4..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2107d77681fdf44911a562e2c5aca05d0bbb2c77e86a5bac1007608eceea2e92 -size 4450 diff --git a/meme_generator/memes/little_do/images/5.png b/meme_generator/memes/little_do/images/5.png deleted file mode 100644 index 396f49c5d5d5b0e859e8f06abb20a08afb94e9c0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a679970e6fef3614b4ee69a90337116efad2f78d1db8060edb36c4459c3c0940 -size 4442 diff --git a/meme_generator/memes/little_do/images/6.png b/meme_generator/memes/little_do/images/6.png deleted file mode 100644 index eef43f965252285137af36d8e88df44074dcd6f6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/little_do/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:996e3f9a357cc5a8ed6193dc8b37d4ea9687303cf1475407c258b3ecf43b1c8f -size 4619 diff --git a/meme_generator/memes/loading/__init__.py b/meme_generator/memes/loading/__init__.py index acb094c90958040fe27a4fcab1751b5b63b3520a..32eb49f4f4df1a8023b4fdda26b2e63b2fad5ec1 100644 --- a/meme_generator/memes/loading/__init__.py +++ b/meme_generator/memes/loading/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL import ImageFilter from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def loading(images: list[BuildImage], texts, args): +def loading(images: List[BuildImage], texts, args): img_big = images[0].convert("RGBA").resize_width(500) img_big = img_big.filter(ImageFilter.GaussianBlur(radius=3)) h1 = img_big.height diff --git a/meme_generator/memes/look_flat/__init__.py b/meme_generator/memes/look_flat/__init__.py index 439d59088abacdd1eaca001e31bc3d4a8a2cf4a0..fd2af58ab7748628f2ac162778d76cdd314beed9 100644 --- a/meme_generator/memes/look_flat/__init__.py +++ b/meme_generator/memes/look_flat/__init__.py @@ -1,3 +1,5 @@ +from typing import List + from pil_utils import BuildImage from pydantic import Field @@ -15,7 +17,7 @@ class Model(MemeArgsModel): ratio: int = Field(2, description=help) -def look_flat(images: list[BuildImage], texts: list[str], args: Model): +def look_flat(images: List[BuildImage], texts: List[str], args: Model): text = texts[0] if texts else "可恶...被人看扁了" ratio = args.ratio diff --git a/meme_generator/memes/look_this_icon/__init__.py b/meme_generator/memes/look_this_icon/__init__.py index 9afc4eb342c081ff0c2b46b64fa8197ee10d032f..fab54612a3c469185e43f49682b3d7d2f2fda73b 100644 --- a/meme_generator/memes/look_this_icon/__init__.py +++ b/meme_generator/memes/look_this_icon/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def look_this_icon(images: list[BuildImage], texts: list[str], args): +def look_this_icon(images: List[BuildImage], texts: List[str], args): text = texts[0] if texts else "朋友\n先看看这个图标再说话" frame = BuildImage.open(img_dir / "nmsl.png") try: diff --git a/meme_generator/memes/lost_dog/__init__.py b/meme_generator/memes/lost_dog/__init__.py deleted file mode 100644 index 1179c865baed4ea3e6162711527eb5388c940386..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lost_dog/__init__.py +++ /dev/null @@ -1,38 +0,0 @@ -import math -from pathlib import Path - -from pil_utils import BuildImage - -from meme_generator import add_meme - -img_dir = Path(__file__).parent / "images" - - -def lost_dog(images: list[BuildImage], texts, args): - k = 2 - w_ = 663 * k - w = 540 * k - h = 540 * k - r = 466 * k - img = images[0].convert("RGBA").resize((w_, h), keep_ratio=True) - img_new = BuildImage.new("RGBA", (w, h)) - for x in range(w): - for y in range(h): - theta = math.asin(abs(x - w / 2) / r) - x_ = round(w_ / 2 + (x - w / 2) / math.cos(theta)) - y_ = round(h / 2 + (y - h / 2) / math.cos(theta)) - if 0 <= x_ < w_ and 0 <= y_ < h: - img_new.image.putpixel((x, y), img.image.getpixel((x_, y_))) - img_new = img_new.resize((w // k, h // k)) - frame = BuildImage.open(img_dir / "0.png") - frame.paste(img_new, (295, 165), below=True) - return frame.save_jpg() - - -add_meme( - "lost_dog", - lost_dog, - min_images=1, - max_images=1, - keywords=["寻狗启事"], -) diff --git a/meme_generator/memes/lost_dog/images/0.png b/meme_generator/memes/lost_dog/images/0.png deleted file mode 100644 index f6aba4e6e7d258644a79ac5cf28629885667daad..0000000000000000000000000000000000000000 --- a/meme_generator/memes/lost_dog/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5669c59c949284e9fdb71a1c0ea9c1de5385937bd690257606fe3518c38cdfc8 -size 368353 diff --git a/meme_generator/memes/love_you/__init__.py b/meme_generator/memes/love_you/__init__.py index 943aa6c333a2e44fcd864b7499342ee93bf738a9..2a579467811e3c8708416f2501c5df26a9fe094e 100644 --- a/meme_generator/memes/love_you/__init__.py +++ b/meme_generator/memes/love_you/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def love_you(images: list[BuildImage], texts, args): +def love_you(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [(68, 65, 70, 70), (63, 59, 80, 80)] for i in range(2): heart = BuildImage.open(img_dir / f"{i}.png") diff --git a/meme_generator/memes/luoyonghao_say/__init__.py b/meme_generator/memes/luoyonghao_say/__init__.py index b4b260177b3aa00b8a1a37ca3de54d6cb74a3adb..f09d378a09127843804bb79fbf9e1e3370ac88fb 100644 --- a/meme_generator/memes/luoyonghao_say/__init__.py +++ b/meme_generator/memes/luoyonghao_say/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL import ImageFilter from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def luoyonghao_say(images, texts: list[str], args): +def luoyonghao_say(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") text_frame = BuildImage.new("RGBA", (365, 120)) @@ -26,7 +27,7 @@ def luoyonghao_say(images, texts: list[str], args): raise TextOverLength(text) text_frame = text_frame.perspective( ((52, 10), (391, 0), (364, 110), (0, 120)) - ).filter(ImageFilter.GaussianBlur(radius=0.8)) # type: ignore + ).filter(ImageFilter.GaussianBlur(radius=0.8)) frame.paste(text_frame, (48, 246), alpha=True) return frame.save_jpg() diff --git a/meme_generator/memes/luxun_say/__init__.py b/meme_generator/memes/luxun_say/__init__.py index e5ded6bc992a44a43e7dbe3523faf1724c79f798..44db464aeded0cb248d917e30dd630fa25037856 100644 --- a/meme_generator/memes/luxun_say/__init__.py +++ b/meme_generator/memes/luxun_say/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def luxun_say(images, texts: list[str], args): +def luxun_say(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/maimai_awaken/__init__.py b/meme_generator/memes/maimai_awaken/__init__.py index ebc2147610b072f263886049af867273ea9e1459..ec62ba20f89ca9a3c853f9fa97b97c030d58c891 100644 --- a/meme_generator/memes/maimai_awaken/__init__.py +++ b/meme_generator/memes/maimai_awaken/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def maimai_awaken(images: list[BuildImage], texts, args): +def maimai_awaken(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: @@ -19,9 +20,5 @@ def maimai_awaken(images: list[BuildImage], texts, args): add_meme( - "maimai_awaken", - maimai_awaken, - min_images=1, - max_images=1, - keywords=["旅行伙伴觉醒"], + "maimai_awaken", maimai_awaken, min_images=1, max_images=1, keywords=["旅行伙伴觉醒"] ) diff --git a/meme_generator/memes/maimai_join/__init__.py b/meme_generator/memes/maimai_join/__init__.py index 7374204de2973e5a1e2c12eada4c606430f451c2..b923e7fb5dbc944a0560aa89ccf8ce215d5b8c58 100644 --- a/meme_generator/memes/maimai_join/__init__.py +++ b/meme_generator/memes/maimai_join/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def maimai_join(images: list[BuildImage], texts, args): +def maimai_join(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: @@ -18,6 +19,4 @@ def maimai_join(images: list[BuildImage], texts, args): return make_jpg_or_gif(images[0], make) -add_meme( - "maimai_join", maimai_join, min_images=1, max_images=1, keywords=["旅行伙伴加入"] -) +add_meme("maimai_join", maimai_join, min_images=1, max_images=1, keywords=["旅行伙伴加入"]) diff --git a/meme_generator/memes/make_friend/__init__.py b/meme_generator/memes/make_friend/__init__.py index b5a3ceb922a8aae2285467a8be28b7d322eb6357..a927339bd1d53e7e5869d1915200a3b03f165c47 100644 --- a/meme_generator/memes/make_friend/__init__.py +++ b/meme_generator/memes/make_friend/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image @@ -8,7 +9,7 @@ from meme_generator.exception import TextOrNameNotEnough, TextOverLength img_dir = Path(__file__).parent / "images" -def make_friend(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def make_friend(images: List[BuildImage], texts: List[str], args: MemeArgsModel): img = images[0].convert("RGBA") if not texts and not args.user_infos: diff --git a/meme_generator/memes/marriage/__init__.py b/meme_generator/memes/marriage/__init__.py index b3da13eef5b8c9eed2e3201fbb9cd299f9c07031..bf74da11f9645071ab158b904f16e21c54027399 100644 --- a/meme_generator/memes/marriage/__init__.py +++ b/meme_generator/memes/marriage/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def marriage(images: list[BuildImage], texts, args): +def marriage(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize_height(1080) img_w, img_h = img.size if img_w > 1500: @@ -23,6 +24,4 @@ def marriage(images: list[BuildImage], texts, args): return frame.save_jpg() -add_meme( - "marriage", marriage, min_images=1, max_images=1, keywords=["结婚申请", "结婚登记"] -) +add_meme("marriage", marriage, min_images=1, max_images=1, keywords=["结婚申请", "结婚登记"]) diff --git a/meme_generator/memes/meteor/__init__.py b/meme_generator/memes/meteor/__init__.py index a48c4826273c4369b9259107a9a3062d8b33bff3..cba5e488eb20a2027bf21c04db8931b47470f9b6 100644 --- a/meme_generator/memes/meteor/__init__.py +++ b/meme_generator/memes/meteor/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def meteor(images, texts: list[str], args): +def meteor(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.png") try: @@ -26,10 +27,5 @@ def meteor(images, texts: list[str], args): add_meme( - "meteor", - meteor, - min_texts=1, - max_texts=1, - default_texts=["我要对象"], - keywords=["流星"], + "meteor", meteor, min_texts=1, max_texts=1, default_texts=["我要对象"], keywords=["流星"] ) diff --git a/meme_generator/memes/mihoyo/__init__.py b/meme_generator/memes/mihoyo/__init__.py index 94cb73eb8bae180c61f3678ee4b73355418bb895..13d31a63c982377c571678c0aba342c7d1123833 100644 --- a/meme_generator/memes/mihoyo/__init__.py +++ b/meme_generator/memes/mihoyo/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_png_or_gif img_dir = Path(__file__).parent / "images" -def mihoyo(images: list[BuildImage], texts, args): +def mihoyo(images: List[BuildImage], texts, args): mask = BuildImage.new("RGBA", (500, 60), (53, 49, 65, 230)) logo = BuildImage.open(img_dir / "logo.png").resize_height(50) diff --git a/meme_generator/memes/mourning/__init__.py b/meme_generator/memes/mourning/__init__.py index aa58901af984b0142ff8889a1c069173983a3aac..c38c96cc015b8828db92f8ab1bade9ff56134a6c 100644 --- a/meme_generator/memes/mourning/__init__.py +++ b/meme_generator/memes/mourning/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage from pydantic import Field @@ -18,7 +19,7 @@ class Model(MemeArgsModel): black: bool = Field(False, description=help) -def mourning(images: list[BuildImage], texts, args: Model): +def mourning(images: List[BuildImage], texts, args: Model): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/murmur/__init__.py b/meme_generator/memes/murmur/__init__.py index e2a5afc265e01ced19c1d2f8c3bc4df2bdbe53b3..6c96123393d06e60e9d9ffc1f2923b7483af964a 100644 --- a/meme_generator/memes/murmur/__init__.py +++ b/meme_generator/memes/murmur/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def murmur(images, texts: list[str], args): +def murmur(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/my_friend/__init__.py b/meme_generator/memes/my_friend/__init__.py index 9307f5f4b3df25249990812b68fc9d18be3d06a2..000b5f015cc85e3ce6bcb2532bc3c04af22d9a9e 100644 --- a/meme_generator/memes/my_friend/__init__.py +++ b/meme_generator/memes/my_friend/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image from pydantic import Field @@ -18,7 +19,7 @@ class Model(MemeArgsModel): name: str = Field("", description=help) -def my_friend(images: list[BuildImage], texts: list[str], args: Model): +def my_friend(images: List[BuildImage], texts: List[str], args: Model): name = args.name or (args.user_infos[-1].name if args.user_infos else "") or "朋友" img = images[0].convert("RGBA").circle().resize((100, 100)) diff --git a/meme_generator/memes/my_wife/__init__.py b/meme_generator/memes/my_wife/__init__.py index 24e3c381d369fbac2759b0b69b046e3f57096bda..727bffabea0b8fcdb5d683c0bb24ca69d0211c2c 100644 --- a/meme_generator/memes/my_wife/__init__.py +++ b/meme_generator/memes/my_wife/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def my_wife(images: list[BuildImage], texts, args): +def my_wife(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize_width(400) img_w, img_h = img.size frame = BuildImage.new("RGBA", (650, img_h + 500), "white") @@ -49,6 +50,4 @@ def my_wife(images: list[BuildImage], texts, args): return frame.save_jpg() -add_meme( - "my_wife", my_wife, min_images=1, max_images=1, keywords=["我老婆", "这是我老婆"] -) +add_meme("my_wife", my_wife, min_images=1, max_images=1, keywords=["我老婆", "这是我老婆"]) diff --git a/meme_generator/memes/name_generator/__init__.py b/meme_generator/memes/name_generator/__init__.py index bd2b32df2efc5b51c0463a46fe572b1b936eff51..3acf6322c445d302ac9197b11387e2cbf882876f 100644 --- a/meme_generator/memes/name_generator/__init__.py +++ b/meme_generator/memes/name_generator/__init__.py @@ -1,5 +1,6 @@ import random from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def name_generator(images: list[BuildImage], texts, args): +def name_generator(images: List[BuildImage], texts, args): colors = ["#0000ff", "#ff00f7", "#00cc66"] # fmt: off el1 = ["废墟", "深海", "反应堆", "学园", "腐烂", "东京", "三维", "四次元", "少管所", "流星", "闪光", "南极", "消极", "幽浮", "网路", "暗狱", "离子态", "液态", "黑色", "抱抱", "暴力", "垃圾", "社会", "残暴", "残酷", "工口", "戮尸", "原味", "毛茸茸", "香香", "霹雳", "午夜", "美工刀", "爆浆", "机关枪", "无响应", "手术台", "麻风病", "虚拟", "速冻", "智能", "2000", "甜味", "华丽", "反社会", "玛利亚", "无", "梦之", "蔷薇", "无政府", "酷酷", "西伯利亚", "人造", "法外", "追杀", "通缉", "女子", "微型", "男子", "超", "毁灭", "大型", "绝望", "阴间", "死亡", "坟场", "高科技", "奇妙", "魔法", "极限", "社会主义", "无聊"] diff --git a/meme_generator/memes/need/__init__.py b/meme_generator/memes/need/__init__.py index c2abddd7b90f8225b68a2d9a79ecc410a4e57c8c..eed34e86e2f4989bc9be8719646c4e9e7f5b7530 100644 --- a/meme_generator/memes/need/__init__.py +++ b/meme_generator/memes/need/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def need(images: list[BuildImage], texts, args): +def need(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/nekoha_holdsign/__init__.py b/meme_generator/memes/nekoha_holdsign/__init__.py index 641ad65edbbfd3183dc5f7c0a30cf0ec869809b4..1d43ce8774b267a38322b9cffba2e9baa1dd8b87 100644 --- a/meme_generator/memes/nekoha_holdsign/__init__.py +++ b/meme_generator/memes/nekoha_holdsign/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def nekoha_holdsign(images, texts: list[str], args): +def nekoha_holdsign(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/nijika_holdsign/__init__.py b/meme_generator/memes/nijika_holdsign/__init__.py index 8b21c4e2b5c7dfd0666de774a12f88ef50c4388e..98b1bdcaf292be7f627b9ebd7b99f1df045c580e 100644 --- a/meme_generator/memes/nijika_holdsign/__init__.py +++ b/meme_generator/memes/nijika_holdsign/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def nijika_holdsign(images, texts: list[str], args): +def nijika_holdsign(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/no_response/__init__.py b/meme_generator/memes/no_response/__init__.py index df3c88522e780e6459b5319eaddde60fdcb31858..6797e7cd763fec3e4e57388df821a91f72d630fb 100644 --- a/meme_generator/memes/no_response/__init__.py +++ b/meme_generator/memes/no_response/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def no_response(images: list[BuildImage], texts, args): +def no_response(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((1050, 783), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (0, 581), below=True) diff --git a/meme_generator/memes/nokia/__init__.py b/meme_generator/memes/nokia/__init__.py index 0eb2697b58f7f008bf18dc34fce6d0d3962e5a75..18c75df78761dcd9d84c50b533c3f1a263f13d25 100644 --- a/meme_generator/memes/nokia/__init__.py +++ b/meme_generator/memes/nokia/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def nokia(images, texts: list[str], args): +def nokia(images, texts: List[str], args): text = texts[0][:900] text_img = ( Text2Image.from_text(text, 70, fontname="FZXS14", fill="black", spacing=30) diff --git a/meme_generator/memes/not_call_me/__init__.py b/meme_generator/memes/not_call_me/__init__.py index 9ef27e2dc098bb969a0bd053623173c658f79cbc..8cc1e9d0b6cc35f3addc9b8b137fcffa435ee1a8 100644 --- a/meme_generator/memes/not_call_me/__init__.py +++ b/meme_generator/memes/not_call_me/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def not_call_me(images, texts: list[str], args): +def not_call_me(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/note_for_leave/__init__.py b/meme_generator/memes/note_for_leave/__init__.py index 7baec98bd5b91f000cc08ce0e1fb28b46e256ede..6e58f0083ad5120b8db26945ac139eeb9caa50e2 100644 --- a/meme_generator/memes/note_for_leave/__init__.py +++ b/meme_generator/memes/note_for_leave/__init__.py @@ -1,4 +1,5 @@ from datetime import datetime +from typing import List import dateparser from pil_utils import BuildImage, Text2Image @@ -17,7 +18,7 @@ class Model(MemeArgsModel): name: str = Field("", description="指定名字") -def note_for_leave(images: list[BuildImage], texts: list[str], args: Model): +def note_for_leave(images: List[BuildImage], texts: List[str], args: Model): time = datetime.now() if args.time and (parsed_time := dateparser.parse(args.time)): time = parsed_time diff --git a/meme_generator/memes/operator_generator/__init__.py b/meme_generator/memes/operator_generator/__init__.py index 2f254c0e7b7e106b80bb2e44c35146975f3f27a7..462fd47df3500e282ef5948dbe8864c42ba5c61e 100644 --- a/meme_generator/memes/operator_generator/__init__.py +++ b/meme_generator/memes/operator_generator/__init__.py @@ -1,66 +1,64 @@ -import random -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def operator_generator(images: list[BuildImage], texts: list[str], args): - img = images[0].convert("RGBA").circle().resize((80, 80)) - name = texts[0] if texts else "你好" - - frame = BuildImage.new("RGBA", (640, 640), (160, 160, 160)) - frame.paste(img, (20, 10), alpha=True) - frame.draw_text( - (120, 0, 620, 100), - f"{name},你的干员信息如下:", - fontsize=80, - fill="white", - stroke_fill="black", - stroke_ratio=0.1, - weight="bold", - allow_wrap=True, - lines_align="center", - ) - - rrange = BuildImage.open( - img_dir / f"1范围/范围101-25-{random.randint(0, 24):04d}.jpg" - ).resize_width(320) - frame.paste(rrange, (0, 100)) - rcharacteristic = BuildImage.open( - img_dir / f"2特性/特性202-25-{random.randint(0, 24):04d}.jpg" - ).resize_width(320) - frame.paste(rcharacteristic, (320, 100)) - rvalue = BuildImage.open( - img_dir / f"3基础数值/基础数值3031-{random.randint(0, 24):04d}.jpg" - ).resize_width(320) - frame.paste(rvalue, (0, 280)) - rtalent = BuildImage.open( - img_dir / f"4天赋/天赋404-25-{random.randint(0, 24):04d}.jpg" - ).resize_width(320) - frame.paste(rtalent, (320, 280)) - rskill = BuildImage.open( - img_dir / f"5技能/技能505-25-{random.randint(0, 24):04d}.jpg" - ).resize_width(320) - frame.paste(rskill, (0, 460)) - rspecail = BuildImage.open( - img_dir / f"6亮点毒点/亮点毒点606-{random.randint(0, 24):04d}.jpg" - ).resize_width(320) - frame.paste(rspecail, (320, 460)) - - return frame.save_jpg() - - -add_meme( - "operator_generator", - operator_generator, - min_images=1, - max_images=1, - max_texts=1, - keywords=["合成大干员"], - date_created=datetime(2023, 3, 28), - date_modified=datetime(2023, 3, 28), -) +import random +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def operator_generator(images: List[BuildImage], texts: List[str], args): + img = images[0].convert("RGBA").circle().resize((80, 80)) + name = texts[0] if texts else "你好" + + frame = BuildImage.new("RGBA", (640, 640), (160, 160, 160)) + frame.paste(img, (20, 10), alpha=True) + frame.draw_text( + (120, 0, 620, 100), + f"{name},你的干员信息如下:", + fontsize=80, + fill="white", + stroke_fill="black", + stroke_ratio=0.1, + weight="bold", + allow_wrap=True, + lines_align="center", + ) + + rrange = BuildImage.open( + img_dir / f"1范围/范围101-25-{random.randint(0, 24):04d}.jpg" + ).resize_width(320) + frame.paste(rrange, (0, 100)) + rcharacteristic = BuildImage.open( + img_dir / f"2特性/特性202-25-{random.randint(0, 24):04d}.jpg" + ).resize_width(320) + frame.paste(rcharacteristic, (320, 100)) + rvalue = BuildImage.open( + img_dir / f"3基础数值/基础数值3031-{random.randint(0, 24):04d}.jpg" + ).resize_width(320) + frame.paste(rvalue, (0, 280)) + rtalent = BuildImage.open( + img_dir / f"4天赋/天赋404-25-{random.randint(0, 24):04d}.jpg" + ).resize_width(320) + frame.paste(rtalent, (320, 280)) + rskill = BuildImage.open( + img_dir / f"5技能/技能505-25-{random.randint(0, 24):04d}.jpg" + ).resize_width(320) + frame.paste(rskill, (0, 460)) + rspecail = BuildImage.open( + img_dir / f"6亮点毒点/亮点毒点606-{random.randint(0, 24):04d}.jpg" + ).resize_width(320) + frame.paste(rspecail, (320, 460)) + + return frame.save_jpg() + + +add_meme( + "operator_generator", + operator_generator, + min_images=1, + max_images=1, + max_texts=1, + keywords=["合成大干员"], +) diff --git a/meme_generator/memes/oshi_no_ko/__init__.py b/meme_generator/memes/oshi_no_ko/__init__.py index 92a39d57110547825e0be30ed622144c8d0c4cff..ec0bec1a451b4d3ce9d66afbf5a5221faa63f37c 100644 --- a/meme_generator/memes/oshi_no_ko/__init__.py +++ b/meme_generator/memes/oshi_no_ko/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image @@ -9,7 +10,7 @@ from meme_generator.utils import make_png_or_gif img_dir = Path(__file__).parent / "images" -def oshi_no_ko(images: list[BuildImage], texts: list[str], args): +def oshi_no_ko(images: List[BuildImage], texts: List[str], args): name = texts[0] if texts else "网友" text_frame1 = BuildImage.open(img_dir / "text1.png") diff --git a/meme_generator/memes/osu/__init__.py b/meme_generator/memes/osu/__init__.py index a75405b4a2128b3f1619c11391caaacbb407aa1a..29cb45e26c0ba8b046e397b84054298dfbba5a8f 100644 --- a/meme_generator/memes/osu/__init__.py +++ b/meme_generator/memes/osu/__init__.py @@ -1,5 +1,6 @@ from io import BytesIO from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def osu(images, texts: list[str], args) -> BytesIO: +def osu(images, texts: List[str], args) -> BytesIO: text = texts[0] frame = BuildImage.open(img_dir / "osu.png") try: diff --git a/meme_generator/memes/overtime/__init__.py b/meme_generator/memes/overtime/__init__.py index 20cba5ef52e8eb2cd4fefcbdf86f10a04cbc1d44..067319abcea57336203bf8032d4f730675d9af89 100644 --- a/meme_generator/memes/overtime/__init__.py +++ b/meme_generator/memes/overtime/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def overtime(images: list[BuildImage], texts, args): +def overtime(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") img = images[0].convert("RGBA").resize((250, 250), keep_ratio=True) frame.paste(img.rotate(-25, expand=True), (165, 220), below=True) diff --git a/meme_generator/memes/paint/__init__.py b/meme_generator/memes/paint/__init__.py index 8630a424d0f190693e12e986ac79b8440180268c..571758f7a7b9089fd6dd62acaa3eea38d67e7843 100644 --- a/meme_generator/memes/paint/__init__.py +++ b/meme_generator/memes/paint/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def paint(images: list[BuildImage], texts, args): +def paint(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((117, 135), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img.rotate(4, expand=True), (95, 107), below=True) diff --git a/meme_generator/memes/painter/__init__.py b/meme_generator/memes/painter/__init__.py index 90f45c27fad89f59bc616262d58518c8720195e9..e7bded8a742444c56faeed21099514e1a0add92b 100644 --- a/meme_generator/memes/painter/__init__.py +++ b/meme_generator/memes/painter/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def painter(images: list[BuildImage], texts, args): +def painter(images: List[BuildImage], texts, args): img = ( images[0].convert("RGBA").resize((240, 345), keep_ratio=True, direction="north") ) diff --git a/meme_generator/memes/pass_the_buck/__init__.py b/meme_generator/memes/pass_the_buck/__init__.py index 671a8d60e423b4fb9f78b32e1490ecb6b0f7996f..1711bb9a5f90b783aae12309a767b9a639d21f72 100644 --- a/meme_generator/memes/pass_the_buck/__init__.py +++ b/meme_generator/memes/pass_the_buck/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -10,9 +11,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def pass_the_buck(images: list[BuildImage], texts: list[str], args): +def pass_the_buck(images: List[BuildImage], texts: List[str], args): img = images[0].convert("RGBA").square().resize((27, 27)) - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [(2, 26), (10, 24), (15, 27), (17, 29), (10, 20), (2, 29), (3, 31), (1, 30)] for i in range(8): frame = BuildImage.open(img_dir / f"{i}.png") diff --git a/meme_generator/memes/pat/__init__.py b/meme_generator/memes/pat/__init__.py index c0f415de4092292b2150d4a35803027f88f981cd..1d7e7f68f99173c4a8ac021a95e1d1b6c2d71570 100644 --- a/meme_generator/memes/pat/__init__.py +++ b/meme_generator/memes/pat/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,10 +10,10 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def pat(images: list[BuildImage], texts, args): +def pat(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() locs = [(11, 73, 106, 100), (8, 79, 112, 96)] - img_frames: list[IMG] = [] + img_frames: List[IMG] = [] for i in range(10): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[1] if i == 2 else locs[0] diff --git a/meme_generator/memes/perfect/__init__.py b/meme_generator/memes/perfect/__init__.py index e1f2ecd33901d713fbf2868acad8f3cf85494de5..c942cbb51a214f2dc688108254be51d777168408 100644 --- a/meme_generator/memes/perfect/__init__.py +++ b/meme_generator/memes/perfect/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def perfect(images: list[BuildImage], texts, args): +def perfect(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") img = images[0].convert("RGBA").resize((310, 460), keep_ratio=True, inside=True) frame.paste(img, (313, 64), alpha=True) diff --git a/meme_generator/memes/petpet/__init__.py b/meme_generator/memes/petpet/__init__.py index 5d9054e9b70165a11c3cc40a397f4ae5b7e8cd21..f14c7d1e72581bee7b292a5103073019f6b012a0 100644 --- a/meme_generator/memes/petpet/__init__.py +++ b/meme_generator/memes/petpet/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -19,12 +20,12 @@ class Model(MemeArgsModel): circle: bool = Field(False, description=help) -def petpet(images: list[BuildImage], texts, args: Model): +def petpet(images: List[BuildImage], texts, args: Model): img = images[0].convert("RGBA").square() if args.circle: img = img.circle() - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [ (14, 20, 98, 98), (12, 33, 101, 85), diff --git a/meme_generator/memes/pinch/__init__.py b/meme_generator/memes/pinch/__init__.py index 224b0a2d0ca923beacaf2cfd5a1d7855990feefd..ee0a3b1473213d81fbe7efb80ba0211544d0c956 100644 --- a/meme_generator/memes/pinch/__init__.py +++ b/meme_generator/memes/pinch/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def pinch(images: list[BuildImage], texts, args): +def pinch(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/play/__init__.py b/meme_generator/memes/play/__init__.py index 16c812dda1ef4a055fbbb9c030f808602434580f..0a2395fbd9ae2b489af5891c78d8b04d77ae82f0 100644 --- a/meme_generator/memes/play/__init__.py +++ b/meme_generator/memes/play/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def play(images: list[BuildImage], texts, args): +def play(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() # fmt: off locs = [ @@ -20,10 +21,10 @@ def play(images: list[BuildImage], texts, args): (182, 59, 98, 92), (183, 71, 90, 96), (180, 131, 92, 101) ] # fmt: on - raw_frames: list[BuildImage] = [ + raw_frames: List[BuildImage] = [ BuildImage.open(img_dir / f"{i}.png") for i in range(38) ] - img_frames: list[BuildImage] = [] + img_frames: List[BuildImage] = [] for i in range(len(locs)): frame = raw_frames[i] x, y, w, h = locs[i] diff --git a/meme_generator/memes/play_game/__init__.py b/meme_generator/memes/play_game/__init__.py index 9460912b6fdd31a7bce7aea8994778cee9e9b090..a6b1c2dff5245faefdaf23e75cc9d1b2411d38c8 100644 --- a/meme_generator/memes/play_game/__init__.py +++ b/meme_generator/memes/play_game/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def play_game(images: list[BuildImage], texts: list[str], args): +def play_game(images: List[BuildImage], texts: List[str], args): text = texts[0] if texts else "来玩休闲游戏啊" frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/police/__init__.py b/meme_generator/memes/police/__init__.py index 1ba425c9af59d07db92b89217e46c3081ae9b05e..bffda044bc6484cdc09abd2f22241a6f1ddbd97e 100644 --- a/meme_generator/memes/police/__init__.py +++ b/meme_generator/memes/police/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,14 +8,14 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def police(images: list[BuildImage], texts, args): +def police(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((245, 245)) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (224, 46), below=True) return frame.save_jpg() -def police1(images: list[BuildImage], texts, args): +def police1(images: List[BuildImage], texts, args): img = ( images[0] .convert("RGBA") diff --git a/meme_generator/memes/pornhub/__init__.py b/meme_generator/memes/pornhub/__init__.py index d1b315b88bf4cd5af3dd2653139da35f0841096a..82f4245aeb2b68a15f1ceeda6993f5225f89240a 100644 --- a/meme_generator/memes/pornhub/__init__.py +++ b/meme_generator/memes/pornhub/__init__.py @@ -1,9 +1,11 @@ +from typing import List + from pil_utils import BuildImage, Text2Image from meme_generator import add_meme -def pornhub(images, texts: list[str], args): +def pornhub(images, texts: List[str], args): left_img = Text2Image.from_text(texts[0], fontsize=200, fill="white").to_image( bg_color="black", padding=(20, 10) ) diff --git a/meme_generator/memes/potato/__init__.py b/meme_generator/memes/potato/__init__.py index ae62f49a38ad77c240ec13ce24cf6922ed4469cc..4128c98ef8c702004fc6b23d1195154d3083aafb 100644 --- a/meme_generator/memes/potato/__init__.py +++ b/meme_generator/memes/potato/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def potato(images: list[BuildImage], texts, args): +def potato(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") img = images[0].convert("RGBA").square().resize((458, 458)) frame.paste(img.rotate(-5), (531, 15), below=True) diff --git a/meme_generator/memes/pound/__init__.py b/meme_generator/memes/pound/__init__.py index 9bb8f9e632c3ddd406a8beb5f8d3ad0b86583038..e58fccb369953bc4365fbc4f9e193b61a4a11b44 100644 --- a/meme_generator/memes/pound/__init__.py +++ b/meme_generator/memes/pound/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def pound(images: list[BuildImage], texts, args): +def pound(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() # fmt: off locs = [ @@ -17,7 +18,7 @@ def pound(images: list[BuildImage], texts, args): (148, 188, 106, 98), (146, 196, 110, 88), (145, 223, 112, 61), (145, 223, 112, 61) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(8): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i] diff --git a/meme_generator/memes/printing/__init__.py b/meme_generator/memes/printing/__init__.py index e3df6637ad8452ce39ffd34e467a1683e31f4994..99e79ae78745b417d55fc266449687653b715d81 100644 --- a/meme_generator/memes/printing/__init__.py +++ b/meme_generator/memes/printing/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def printing(images: list[BuildImage], texts, args): +def printing(images: List[BuildImage], texts, args): img = ( images[0] .convert("RGBA") diff --git a/meme_generator/memes/prpr/__init__.py b/meme_generator/memes/prpr/__init__.py index fcfff79b4f2a2ce25d51695143e1df4c4dd2e3c9..345ac9c946c59199b1c78fa5cc28e09d83bff387 100644 --- a/meme_generator/memes/prpr/__init__.py +++ b/meme_generator/memes/prpr/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def prpr(images: list[BuildImage], texts, args): +def prpr(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/psyduck/__init__.py b/meme_generator/memes/psyduck/__init__.py index b5f3eaf3347ebe6556494d466a358b09bcfc8b43..19692421cb56372bf2f4a391cd88acf110a1f5d1 100644 --- a/meme_generator/memes/psyduck/__init__.py +++ b/meme_generator/memes/psyduck/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -10,7 +11,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def psyduck(images, texts: list[str], args): +def psyduck(images, texts: List[str], args): left_img = BuildImage.new("RGBA", (155, 100)) right_img = BuildImage.new("RGBA", (155, 100)) @@ -51,7 +52,7 @@ def psyduck(images, texts: list[str], args): ("left", ((0, 12), (154, 0), (158, 90), (17, 109)), (35, 28)), ] - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(18): frame = BuildImage.open(img_dir / f"{i}.jpg") param = params[i] diff --git a/meme_generator/memes/punch/__init__.py b/meme_generator/memes/punch/__init__.py index db129dcc574deca332ee3085371ba858bee4aa6f..441df7f31cd30735c01ba5e2edb3e2bb3fbdc108 100644 --- a/meme_generator/memes/punch/__init__.py +++ b/meme_generator/memes/punch/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def punch(images: list[BuildImage], texts, args): +def punch(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((260, 260)) - frames: list[IMG] = [] + frames: List[IMG] = [] # fmt: off locs = [ (-50, 20), (-40, 10), (-30, 0), (-20, -10), (-10, -10), (0, 0), diff --git a/meme_generator/memes/raise_image/__init__.py b/meme_generator/memes/raise_image/__init__.py index ef4545644317af9741e449c0a467fd6b98f4a459..84094fd691206c2d7f64cc4d9857918b88089995 100644 --- a/meme_generator/memes/raise_image/__init__.py +++ b/meme_generator/memes/raise_image/__init__.py @@ -1,5 +1,6 @@ from io import BytesIO from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def raise_image(images: list[BuildImage], texts, args) -> BytesIO: +def raise_image(images: List[BuildImage], texts, args) -> BytesIO: inner_size = (599, 386) paste_pos = (134, 91) diff --git a/meme_generator/memes/raise_sign/__init__.py b/meme_generator/memes/raise_sign/__init__.py index 1e82d7eb2f7259297a66a4cc7c5d28345b753453..215077e17b30de1e8f44e47b72d2d102251cf73a 100644 --- a/meme_generator/memes/raise_sign/__init__.py +++ b/meme_generator/memes/raise_sign/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def raise_sign(images, texts: list[str], args): +def raise_sign(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") text_img = BuildImage.new("RGBA", (360, 260)) diff --git a/meme_generator/memes/read_book/__init__.py b/meme_generator/memes/read_book/__init__.py index e9165e5d3de784ed7c9713860c5533959fb8565b..44037fb29cc0ccc862b1446c568fa9a34665d2c0 100644 --- a/meme_generator/memes/read_book/__init__.py +++ b/meme_generator/memes/read_book/__init__.py @@ -1,5 +1,6 @@ import re from pathlib import Path +from typing import List from pil_utils import BuildImage, Text2Image @@ -9,7 +10,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def read_book(images: list[BuildImage], texts: list[str], args): +def read_book(images: List[BuildImage], texts: List[str], args): frame = BuildImage.open(img_dir / "0.png") points = ((0, 108), (1092, 0), (1023, 1134), (29, 1134)) img = ( @@ -23,7 +24,7 @@ def read_book(images: list[BuildImage], texts: list[str], args): text = texts[0] if texts else "エロ本" chars = list(" ".join(text.splitlines())) - pieces: list[BuildImage] = [] + pieces: List[BuildImage] = [] for char in chars: piece = BuildImage( Text2Image.from_text(char, 150, fill="white", weight="bold").to_image() diff --git a/meme_generator/memes/repeat/__init__.py b/meme_generator/memes/repeat/__init__.py index 926bf0d545714d5c1f4bb782fae2f678a0f60ef6..e400c69fb1cf1532287c66deefc7689dfb2b9108 100644 --- a/meme_generator/memes/repeat/__init__.py +++ b/meme_generator/memes/repeat/__init__.py @@ -1,5 +1,6 @@ from datetime import datetime from pathlib import Path +from typing import List, Tuple from PIL.Image import Image as IMG from pil_utils import BuildImage, Text2Image @@ -11,7 +12,7 @@ from meme_generator.utils import random_text, save_gif img_dir = Path(__file__).parent / "images" -def repeat(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def repeat(images: List[BuildImage], texts: List[str], args: MemeArgsModel): def single_msg(img: BuildImage, name: str) -> BuildImage: user_img = img.convert("RGBA").circle().resize((100, 100)) user_name_img = Text2Image.from_text(f"{name}", 40).to_image() @@ -29,7 +30,7 @@ def repeat(images: list[BuildImage], texts: list[str], args: MemeArgsModel): if text_img.width > 900: raise TextOverLength(text) - users: list[tuple[BuildImage, str]] = [] + users: List[Tuple[BuildImage, str]] = [] user_infos = args.user_infos for i, image in enumerate(images): name = user_infos[i].name if len(user_infos) > i else random_text() @@ -46,7 +47,7 @@ def repeat(images: list[BuildImage], texts: list[str], args: MemeArgsModel): self_img = images[0].convert("RGBA").circle().resize((75, 75)) input_img.paste(self_img, (15, 40), alpha=True) - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(50): frame = BuildImage.new("RGB", (1079, 1192), "white") frame.paste(msg_img_twice, (0, -20 * i)) diff --git a/meme_generator/memes/rip/__init__.py b/meme_generator/memes/rip/__init__.py index a51a24b20c30d129dd4d2965271c43a5f3e7d6db..5bb7c30d0e2974ecff118a97ca54a9f492b5b96f 100644 --- a/meme_generator/memes/rip/__init__.py +++ b/meme_generator/memes/rip/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def rip(images: list[BuildImage], texts, args): +def rip(images: List[BuildImage], texts, args): if len(images) >= 2: frame = BuildImage.open(img_dir / "1.png") self_img = images[0] diff --git a/meme_generator/memes/rip_angrily/__init__.py b/meme_generator/memes/rip_angrily/__init__.py index 3c40f734ef530fd173e7c7b537c9eedf7e70b454..3b567f0e62d60a4c5493e8309dad4b6a2fa230ee 100644 --- a/meme_generator/memes/rip_angrily/__init__.py +++ b/meme_generator/memes/rip_angrily/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def rip_angrily(images: list[BuildImage], texts, args): +def rip_angrily(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((105, 105)) frame = BuildImage.open(img_dir / "0.png") frame.paste(img.rotate(-24, expand=True), (18, 170), below=True) diff --git a/meme_generator/memes/rise_dead/__init__.py b/meme_generator/memes/rise_dead/__init__.py index ac23e37aa37761ed507a2805835fe2f384ca7e18..469d23a4863cf54c8efd30659b1f7bda7010c5e2 100644 --- a/meme_generator/memes/rise_dead/__init__.py +++ b/meme_generator/memes/rise_dead/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def rise_dead(images: list[BuildImage], texts, args): +def rise_dead(images: List[BuildImage], texts, args): locs = [ ((81, 55), ((0, 2), (101, 0), (103, 105), (1, 105))), ((74, 49), ((0, 3), (104, 0), (106, 108), (1, 108))), @@ -18,7 +19,7 @@ def rise_dead(images: list[BuildImage], texts, args): ] img = images[0].convert("RGBA").square().resize((150, 150)) imgs = [img.perspective(points) for _, points in locs] - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(34): frame = BuildImage.open(img_dir / f"{i}.png") if i <= 28: @@ -32,6 +33,4 @@ def rise_dead(images: list[BuildImage], texts, args): return save_gif(frames, 0.15) -add_meme( - "rise_dead", rise_dead, min_images=1, max_images=1, keywords=["诈尸", "秽土转生"] -) +add_meme("rise_dead", rise_dead, min_images=1, max_images=1, keywords=["诈尸", "秽土转生"]) diff --git a/meme_generator/memes/roll/__init__.py b/meme_generator/memes/roll/__init__.py index a4140da0d43fc324a95e1359fe003b325ffcad2d..05c5c0a56787c8ef969d218ad0d9aac138593fc7 100644 --- a/meme_generator/memes/roll/__init__.py +++ b/meme_generator/memes/roll/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def roll(images: list[BuildImage], texts, args): +def roll(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((210, 210)) # fmt: off locs = [ @@ -17,7 +18,7 @@ def roll(images: list[BuildImage], texts, args): (92, 75, -180), (92, 75, -225), (93, 76, -270), (90, 80, -315) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(8): frame = BuildImage.open(img_dir / f"{i}.png") x, y, a = locs[i] diff --git a/meme_generator/memes/rotate_3d/__init__.py b/meme_generator/memes/rotate_3d/__init__.py deleted file mode 100644 index fb3e76f20d643143e7f9f92bb65a43fda01062b5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/rotate_3d/__init__.py +++ /dev/null @@ -1,69 +0,0 @@ -import numpy as np -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif - - -def rotate_3d(images: list[BuildImage], texts, args): - tmp_img = images[0].convert("RGBA") - fov = 45 * np.pi / 180 - z = np.sqrt(tmp_img.width**2 + tmp_img.height**2) / 2 / np.tan(fov / 2) - w = round(tmp_img.width * 1.2) - h = round(tmp_img.height * 1.5) - bg = BuildImage.new("RGBA", (w, h)) - - def rotate_y(img: BuildImage, theta: float) -> BuildImage: - mat = np.array( - [ - [np.cos(theta), 0, np.sin(theta)], - [0, 1, 0], - [-np.sin(theta), 0, np.cos(theta)], - ] - ) - pc = np.array([img.width / 2, img.height / 2, 0]) - orgs = [ - np.array([0, 0, 0]), - np.array([img.width, 0, 0]), - np.array([img.width, img.height, 0]), - np.array([0, img.height, 0]), - ] - dsts = [] - for i in range(4): - dst = mat.dot(orgs[i] - pc) - dsts.append( - [ - dst[0] * z / (z - dst[2]) + pc[0], - dst[1] * z / (z - dst[2]) + pc[1], - ] - ) - min_x = min(dsts, key=lambda x: x[0])[0] - min_y = min(dsts, key=lambda x: x[1])[1] - for i in range(4): - dsts[i][0] -= min_x - dsts[i][1] -= min_y - return img.perspective(tuple(dsts)) - - def maker(i: int) -> Maker: - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA") - frame = bg.copy() - rotated = rotate_y(img, i * 12 * np.pi / 180) - frame.paste( - rotated, - ( - round((bg.width - rotated.width) / 2), - round((bg.height - rotated.height) / 2), - ), - alpha=True, - ) - return frame - - return make - - return make_gif_or_combined_gif( - images[0], maker, 30, 0.07, FrameAlignPolicy.extend_loop - ) - - -add_meme("rotate_3d", rotate_3d, min_images=1, max_images=1, keywords=["三维旋转"]) diff --git a/meme_generator/memes/rub/__init__.py b/meme_generator/memes/rub/__init__.py index 9d7a61c01d59580c54768c7567556ae221b3ae18..b92e454e9e1849c6b5f46bbc9ed9378d30a81d54 100644 --- a/meme_generator/memes/rub/__init__.py +++ b/meme_generator/memes/rub/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def rub(images: list[BuildImage], texts, args): +def rub(images: List[BuildImage], texts, args): self_head = images[0].convert("RGBA").circle() user_head = images[1].convert("RGBA").circle() # fmt: off @@ -22,7 +23,7 @@ def rub(images: list[BuildImage], texts, args): (65, 5, 75, 75, -20), (95, 57, 100, 55, -70), (109, 107, 65, 75, 0) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(6): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = user_locs[i] diff --git a/meme_generator/memes/run/__init__.py b/meme_generator/memes/run/__init__.py index 5d340ed01654a747c798edc6b5a8ed9689b7bb3e..744cc2e0a6af5d86fc7d8282872cbca58deb7d55 100644 --- a/meme_generator/memes/run/__init__.py +++ b/meme_generator/memes/run/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def run(images, texts: list[str], args): +def run(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.png") text_img = BuildImage.new("RGBA", (122, 53)) @@ -27,6 +28,4 @@ def run(images, texts: list[str], args): return frame.save_jpg() -add_meme( - "run", run, min_texts=1, max_texts=1, default_texts=["快跑"], keywords=["快跑"] -) +add_meme("run", run, min_texts=1, max_texts=1, default_texts=["快跑"], keywords=["快跑"]) diff --git a/meme_generator/memes/safe_sense/__init__.py b/meme_generator/memes/safe_sense/__init__.py index bc1f895f3d4497ed068b4654e9db516f45cb3a84..9819f1543953243d5b282971d97ccaa55f38293e 100644 --- a/meme_generator/memes/safe_sense/__init__.py +++ b/meme_generator/memes/safe_sense/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def safe_sense(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def safe_sense(images: List[BuildImage], texts: List[str], args: MemeArgsModel): img = images[0].convert("RGBA").resize((215, 343), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (215, 135)) diff --git a/meme_generator/memes/scratch_head/__init__.py b/meme_generator/memes/scratch_head/__init__.py index c7e7f1c14f998115dc51bd9713658dd7622e9ef1..7591b4f2a66f10a695a2b77cbc30bdb324d9022e 100644 --- a/meme_generator/memes/scratch_head/__init__.py +++ b/meme_generator/memes/scratch_head/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def scratch_head(images: list[BuildImage], texts, args): +def scratch_head(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((68, 68)) - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [ (53, 46, 4, 5), (50, 45, 7, 6), diff --git a/meme_generator/memes/scratchcard/__init__.py b/meme_generator/memes/scratchcard/__init__.py index 7cf160e00de4bba6221bf2a0cd16497750a94ace..a66e1fc16b9dd4c4142007f0c5da234926689cd7 100644 --- a/meme_generator/memes/scratchcard/__init__.py +++ b/meme_generator/memes/scratchcard/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def scratchcard(images, texts: list[str], args): +def scratchcard(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/scroll/__init__.py b/meme_generator/memes/scroll/__init__.py index f964053596b4fdb202db0db6fbd157e79c81d5a9..efb0c659a563bee19e592c2525b98118145cdfa7 100644 --- a/meme_generator/memes/scroll/__init__.py +++ b/meme_generator/memes/scroll/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage, Text2Image @@ -10,7 +11,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def scroll(images, texts: list[str], args): +def scroll(images, texts: List[str], args): text = texts[0] text2image = Text2Image.from_text(text, 40).wrap(600) if len(text2image.lines) > 5: @@ -37,7 +38,7 @@ def scroll(images, texts: list[str], args): for i in range(4): dialog.paste(box, (0, box_h * i)) - frames: list[IMG] = [] + frames: List[IMG] = [] num = 30 dy = int(dialog.height / num) for i in range(num): @@ -49,10 +50,5 @@ def scroll(images, texts: list[str], args): add_meme( - "scroll", - scroll, - min_texts=1, - max_texts=1, - default_texts=["你们说话啊"], - keywords=["滚屏"], + "scroll", scroll, min_texts=1, max_texts=1, default_texts=["你们说话啊"], keywords=["滚屏"] ) diff --git a/meme_generator/memes/shock/__init__.py b/meme_generator/memes/shock/__init__.py index f90e2bccc7134159a86c01b1106948a9a96f9517..e69a6ed6dd316ccac8d89be85c07a87c59210c80 100644 --- a/meme_generator/memes/shock/__init__.py +++ b/meme_generator/memes/shock/__init__.py @@ -1,4 +1,5 @@ import random +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -7,9 +8,9 @@ from meme_generator import add_meme from meme_generator.utils import save_gif -def shock(images: list[BuildImage], texts, args): +def shock(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((300, 300)) - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(30): frames.append( img.motion_blur(random.randint(-90, 90), random.randint(0, 50)) diff --git a/meme_generator/memes/shoot/__init__.py b/meme_generator/memes/shoot/__init__.py deleted file mode 100644 index 57da95b93a4d44d9b917b0030d1a5942e483c987..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/__init__.py +++ /dev/null @@ -1,34 +0,0 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def shoot(images: list[BuildImage], texts, args): - def maker(i: int) -> Maker: - def make(imgs: list[BuildImage]) -> BuildImage: - img = imgs[0].convert("RGBA").resize((160, 97), keep_ratio=True) - fluid = BuildImage.open(img_dir / f"{i}.png") - img.paste(fluid, alpha=True) - return img - - return make - - return make_gif_or_combined_gif( - images, maker, 13, 0.15, FrameAlignPolicy.extend_loop - ) - - -add_meme( - "shoot", - shoot, - min_images=1, - max_images=1, - keywords=["射", "🐍"], - date_created=datetime(2024, 8, 19), - date_modified=datetime(2024, 8, 19), -) diff --git a/meme_generator/memes/shoot/images/0.png b/meme_generator/memes/shoot/images/0.png deleted file mode 100644 index 8984765d5450d041ee85a3a79c07b8a7da7f232a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:be7cdead05e67b28e5c59a38a405770f096194cb789740d974e2b34eb79012f5 -size 1451 diff --git a/meme_generator/memes/shoot/images/1.png b/meme_generator/memes/shoot/images/1.png deleted file mode 100644 index a3f65f66960da8d6b0b5850d4a7c97b940cad3a0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bdd4aca9ec9d853331d2d07d7185146c023ea1e8c922cca0c5dc9e9a467b836b -size 2523 diff --git a/meme_generator/memes/shoot/images/10.png b/meme_generator/memes/shoot/images/10.png deleted file mode 100644 index 8ec30248df738805cb35e42ec60e56c8162c63b3..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8b8354a1c3ca16d44f872b4ed46280db24d2d21854ec8828b3e1e962a6d875ba -size 2820 diff --git a/meme_generator/memes/shoot/images/11.png b/meme_generator/memes/shoot/images/11.png deleted file mode 100644 index c583b9bf9637182ffc8a426dc3dfb74a61d10a5f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/11.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69f3ec9a5c9c3d932590131548ee57b4e1a59e83afaa64259f21d765ceb0954d -size 2836 diff --git a/meme_generator/memes/shoot/images/12.png b/meme_generator/memes/shoot/images/12.png deleted file mode 100644 index c3e9c5ec7d46d36178b6cba20b62ae499174e247..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/12.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c1f16fdbb75778a431349ea5892e23388c80558f5fd13a4d73e101c4007712fe -size 2864 diff --git a/meme_generator/memes/shoot/images/2.png b/meme_generator/memes/shoot/images/2.png deleted file mode 100644 index 41ddea25ce19b835aba2aa4864ee12dc1a48c524..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96e4247a9ecb986c6157827f1148e2b843322f51e5482dbc813f2b5fdda8109f -size 2479 diff --git a/meme_generator/memes/shoot/images/3.png b/meme_generator/memes/shoot/images/3.png deleted file mode 100644 index 2f3e40ae9c98f8cceeb5efee4369fba181136f48..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cf6eb6c9e006aaa61a164b2a38fa7b34aed08da69638f81215c55382206b8381 -size 2825 diff --git a/meme_generator/memes/shoot/images/4.png b/meme_generator/memes/shoot/images/4.png deleted file mode 100644 index 229190b4f97c2a95149745942b0a2acde4f3119e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0444e72b7851cb740c4286c73d95337657a6cc2bcf8b325fabe21da9ae87d6d9 -size 2637 diff --git a/meme_generator/memes/shoot/images/5.png b/meme_generator/memes/shoot/images/5.png deleted file mode 100644 index caae3475c5b606f8f3a14f998eb460ad16d11b32..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2ac55fc4cf2d0c79c38b1a61156daf78e5d8ad5ec973aac45c17943185ffd50 -size 2580 diff --git a/meme_generator/memes/shoot/images/6.png b/meme_generator/memes/shoot/images/6.png deleted file mode 100644 index 4b0b84581a7a078f49e5a3f6d3df892b132e2426..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e8f6e5bd72e7a6996e6000712f06e338cb465de5212e331b5bfe3384d0c690c3 -size 2682 diff --git a/meme_generator/memes/shoot/images/7.png b/meme_generator/memes/shoot/images/7.png deleted file mode 100644 index 55ee4232dc3c930f4ccae2d5f96f39bbe85f625a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/7.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6e862462910636e1c573f270d5eedcde55370c33c989370d48a8c4174c959e9c -size 2705 diff --git a/meme_generator/memes/shoot/images/8.png b/meme_generator/memes/shoot/images/8.png deleted file mode 100644 index 2e5502c1506d32af7ac6d77b4d8fb043e46945fc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/8.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f16c49a38b3b85ee5992e2353018fb27910062d9097acfa98be3aae427b099ce -size 2929 diff --git a/meme_generator/memes/shoot/images/9.png b/meme_generator/memes/shoot/images/9.png deleted file mode 100644 index 934a38c28049e9624c797e873e34abce5a0ffb90..0000000000000000000000000000000000000000 --- a/meme_generator/memes/shoot/images/9.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7db4e9f67a314e9e3dfb814d02ec05ff970d157386e6bb15527bd845973fa480 -size 2882 diff --git a/meme_generator/memes/shutup/__init__.py b/meme_generator/memes/shutup/__init__.py index 57c2fd04218c58987db512b087de60bbdfe522b2..381dd7b7822b4726b7c5b1afdc854e7f838c20cb 100644 --- a/meme_generator/memes/shutup/__init__.py +++ b/meme_generator/memes/shutup/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def shutup(images, texts: list[str], args): +def shutup(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/sit_still/__init__.py b/meme_generator/memes/sit_still/__init__.py index 5e44a774c9ab276d0768c4f9c4de217b59ba1d96..b532d7c0538b076911c6006e10a2b1f2440d9103 100644 --- a/meme_generator/memes/sit_still/__init__.py +++ b/meme_generator/memes/sit_still/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def sit_still(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def sit_still(images: List[BuildImage], texts: List[str], args: MemeArgsModel): name = texts[0] if texts else args.user_infos[0].name if args.user_infos else "" frame = BuildImage.open(img_dir / "0.png") if name: diff --git a/meme_generator/memes/slap/__init__.py b/meme_generator/memes/slap/__init__.py index a17396c246a848e02a2dbefccd6327e124ddc48c..607035155c1389dd46e51ef662fc4b1d0bbf8461 100644 --- a/meme_generator/memes/slap/__init__.py +++ b/meme_generator/memes/slap/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def slap(images, texts: list[str], args): +def slap(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/slogan/__init__.py b/meme_generator/memes/slogan/__init__.py index be4ac683f8179b2653b45f763051d3a376c463c2..88c36278f3f2efdc90aab0ef4746a01fb11ea897 100644 --- a/meme_generator/memes/slogan/__init__.py +++ b/meme_generator/memes/slogan/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List, Tuple from pil_utils import BuildImage @@ -8,10 +9,10 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def slogan(images, texts: list[str], args): +def slogan(images, texts: List[str], args): frame = BuildImage.open(img_dir / "0.jpg") - def draw(pos: tuple[float, float, float, float], text: str): + def draw(pos: Tuple[float, float, float, float], text: str): try: frame.draw_text( pos, text, max_fontsize=40, min_fontsize=15, allow_wrap=True @@ -34,13 +35,6 @@ add_meme( slogan, min_texts=6, max_texts=6, - default_texts=[ - "我们是谁?", - "浙大人!", - "到浙大来做什么?", - "混!", - "将来毕业后要做什么样的人?", - "混混!", - ], + default_texts=["我们是谁?", "浙大人!", "到浙大来做什么?", "混!", "将来毕业后要做什么样的人?", "混混!"], keywords=["口号"], ) diff --git a/meme_generator/memes/smash/__init__.py b/meme_generator/memes/smash/__init__.py index c1bc83a0fce2f0bdfee5b0116a40df8ffb6ae7f8..17d6823604fc2e251fbeb781c899c613d8e88966 100644 --- a/meme_generator/memes/smash/__init__.py +++ b/meme_generator/memes/smash/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def smash(images: list[BuildImage], texts, args): +def smash(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/step_on/__init__.py b/meme_generator/memes/step_on/__init__.py index fae445f6579f61cfdcbba302e3a8d9f8cd767596..aea65259d02482005b0b13eb3a247c938a28a274 100644 --- a/meme_generator/memes/step_on/__init__.py +++ b/meme_generator/memes/step_on/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def step_on(images: list[BuildImage], texts, args): +def step_on(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((100, 100), keep_ratio=True) - frames: list[IMG] = [] + frames: List[IMG] = [] locs = [ (104, 72, 32, 185, -25), (104, 72, 32, 185, -25), diff --git a/meme_generator/memes/stew/__init__.py b/meme_generator/memes/stew/__init__.py deleted file mode 100644 index d2a02f85b7498f2d29f9b07dfe1f9e21222df496..0000000000000000000000000000000000000000 --- a/meme_generator/memes/stew/__init__.py +++ /dev/null @@ -1,43 +0,0 @@ -from pathlib import Path - -from pil_utils import BuildImage - -from meme_generator import MemeArgsModel, add_meme -from meme_generator.exception import TextOverLength -from meme_generator.utils import make_jpg_or_gif - -img_dir = Path(__file__).parent / "images" - - -def stew(images: list[BuildImage], texts: list[str], args: MemeArgsModel): - name = texts[0] if texts else args.user_infos[0].name if args.user_infos else "群友" - text = f"生活不易,炖{name}出气" - - frame = BuildImage.open(img_dir / "0.png") - try: - frame.draw_text( - (2, frame.height - 30, frame.width - 2, frame.height), - text, - max_fontsize=30, - min_fontsize=6, - lines_align="center", - ) - except ValueError: - raise TextOverLength(name) - - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA").resize((181, 154), keep_ratio=True) - return frame.copy().paste(img, (9, -2), below=True) - - return make_jpg_or_gif(images[0], make) - - -add_meme( - "stew", - stew, - min_images=1, - max_images=1, - min_texts=0, - max_texts=1, - keywords=["炖"], -) diff --git a/meme_generator/memes/stew/images/0.png b/meme_generator/memes/stew/images/0.png deleted file mode 100644 index 7cf7d32f03fc3f33f8941633c46cc9dc6fda595b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/stew/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3680aa48ca8ed223c073e5f2b67d4477d07c52c4d4e47accc1b3d678a0cba3bc -size 12422 diff --git a/meme_generator/memes/stretch/__init__.py b/meme_generator/memes/stretch/__init__.py index 7403644e482c815f25446d49a4f76b0488f0ce86..d8c5fd26bbb635ad0e854572e25fc17723cf1af0 100644 --- a/meme_generator/memes/stretch/__init__.py +++ b/meme_generator/memes/stretch/__init__.py @@ -1,26 +1,18 @@ -from datetime import datetime -from pathlib import Path - -from meme_generator import add_meme -from pil_utils import BuildImage - -img_dir = Path(__file__).parent / "images" - - -def stretch(images: list[BuildImage], texts, args): - frame = BuildImage.open(img_dir / "0.png") - frame.paste( - images[0].convert("RGBA").resize((500, 500), keep_ratio=True), below=True - ) - return frame.save_jpg() - - -add_meme( - "stretch", - stretch, - min_images=1, - max_images=1, - keywords=["双手", "伸展"], - date_created=datetime(2023, 3, 28), - date_modified=datetime(2023, 3, 28), -) +from pathlib import Path +from typing import List + +from meme_generator import add_meme +from pil_utils import BuildImage + +img_dir = Path(__file__).parent / "images" + + +def stretch(images: List[BuildImage], texts, args): + frame = BuildImage.open(img_dir / "0.png") + frame.paste( + images[0].convert("RGBA").resize((500, 500), keep_ratio=True), below=True + ) + return frame.save_jpg() + + +add_meme("stretch", stretch, min_images=1, max_images=1, keywords=["双手", "伸展"]) diff --git a/meme_generator/memes/subject3/__init__.py b/meme_generator/memes/subject3/__init__.py deleted file mode 100644 index c78d4ba73419f18e75924626a8b6bccb3ce9a5da..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/__init__.py +++ /dev/null @@ -1,44 +0,0 @@ -from pathlib import Path - -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import save_gif - -img_dir = Path(__file__).parent / "images" - - -def subject3(images: list[BuildImage], texts, args): - self_head = images[0].convert("RGBA").circle().resize((120, 120)) - # fmt: off - locs = [ - (60, 71), (61, 73), (62, 71), (66, 70), (75, 69), - (87, 74), (87, 74), (85, 76), (79, 73), (76, 71), - (68, 69), (66, 73), (66, 74), (66, 74), (66, 71), - (76, 65), (80, 65), (91, 73), (91, 77), (91, 75), - (86, 71), (83, 69), (78, 68), (73, 67), (68, 74), - (68, 77), (71, 73), (81, 68), (88, 69), (96, 73), - (98, 78), (97, 79), (93, 76), (85, 71), (80, 66), - (71, 69), (69, 74), (68, 77), (68, 77), (80, 70), - (91, 68), (95, 71), (98, 78), (97, 79), (95, 78), - (86, 69), (77, 64), (71, 69), (71, 73), (69, 73), - (73, 67), (78, 65), (88, 65), (91, 72), (94, 77), - (91, 74), (89, 70), (83, 63), (75, 60), (69, 67), - (67, 74), (68, 73), (76, 64), (77, 60), (84, 62), - (92, 68), (92, 73), (90, 69), (86, 66), (80, 61), - (69, 63), (65, 67), (60, 76), (62, 73), (66, 68), - (75, 62), (77, 62), (85, 69), (86, 73), (85, 75), - (78, 70), (74, 67), (67, 67), (65, 72), (65, 79), - ] - # fmt: on - frames: list[IMG] = [] - for i in range(85): - frame = BuildImage.open(img_dir / f"{i}.png") - frame.paste(self_head, locs[i], alpha=True) - frames.append(frame.image) - - return save_gif(frames, 0.08) - - -add_meme("subject3", subject3, min_images=1, max_images=1, keywords=["科目三"]) diff --git a/meme_generator/memes/subject3/images/0.png b/meme_generator/memes/subject3/images/0.png deleted file mode 100644 index 86d888c3e984ad955d35c40c6cf75d642cfdbb3a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:75e270db3de7c3f6bc6b0677cc02063551ca5124c1e4a0ca0a10d9324b3db555 -size 122114 diff --git a/meme_generator/memes/subject3/images/1.png b/meme_generator/memes/subject3/images/1.png deleted file mode 100644 index 73a3b58329d308df1fa75180717fb965b21516aa..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:28b65f5606a2127b32df49b4c84c820f2525059504bc7148f38b6dcea5dd2123 -size 121997 diff --git a/meme_generator/memes/subject3/images/10.png b/meme_generator/memes/subject3/images/10.png deleted file mode 100644 index 3f247373eb5be2c25cbcff22277a13417ee0e19f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f89906187f02881bea9b178d0ffa8ee53b04117aa2a90c985ff18caebdd8256 -size 120547 diff --git a/meme_generator/memes/subject3/images/11.png b/meme_generator/memes/subject3/images/11.png deleted file mode 100644 index 76a155b4ff70b14be7e384c119a858f9d18e22e7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/11.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:eaf8fa8d17a3d026dc4eff9bc98bffb6d799893634b92d298ac432eebf6d319a -size 121590 diff --git a/meme_generator/memes/subject3/images/12.png b/meme_generator/memes/subject3/images/12.png deleted file mode 100644 index dfd0d8e348b0c781332b96214b02e7fc97d0515c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/12.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f1a6c1058b317fdd093f9db211448a4d26c177dcaae1cbd21c907f5076c46b3c -size 122875 diff --git a/meme_generator/memes/subject3/images/13.png b/meme_generator/memes/subject3/images/13.png deleted file mode 100644 index 31f4f2f6ff952e9606257c9d186a24121cf2cf09..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/13.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c12f37b1a17a6d3fe6b15289a451084a23969ff9a419c3958e1f4b13c1caebc4 -size 121766 diff --git a/meme_generator/memes/subject3/images/14.png b/meme_generator/memes/subject3/images/14.png deleted file mode 100644 index 5b02f01e3cd95a775ce0391d6a80047937b620a6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/14.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:915900bffe3ec838f33794ae0f02fa3ece065b139e336fdf07a590d0ab963e04 -size 122907 diff --git a/meme_generator/memes/subject3/images/15.png b/meme_generator/memes/subject3/images/15.png deleted file mode 100644 index 6726090fa6bba93a7823f9a178f21e0dc0e66d47..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/15.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:18d6973a7f5b1ae7177bb13ef622a47bdf2729394bf6a655b14941971e7dfe7e -size 122828 diff --git a/meme_generator/memes/subject3/images/16.png b/meme_generator/memes/subject3/images/16.png deleted file mode 100644 index 399b47a93d02d2e31dde084082ef3486fac1cc50..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/16.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6f0cc51266ece412311d71181fa2252bcd01802803f9fdea6cea3212156518b3 -size 120720 diff --git a/meme_generator/memes/subject3/images/17.png b/meme_generator/memes/subject3/images/17.png deleted file mode 100644 index 15ef388424f5707abc39948b3bc282839f1bc195..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/17.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9318eb68d24c8fc69d0e4bfd65f52a4f359092239ccca9dfcb08cbfc6827af97 -size 121336 diff --git a/meme_generator/memes/subject3/images/18.png b/meme_generator/memes/subject3/images/18.png deleted file mode 100644 index 2eab73c1817834cd5600057f21f0dd066c2e2b89..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/18.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3bd2db34248ac69fd105b99acf313490f418fbef923cba483e3de1c839d5ed42 -size 121687 diff --git a/meme_generator/memes/subject3/images/19.png b/meme_generator/memes/subject3/images/19.png deleted file mode 100644 index 174592149aab23cc869619c60f8efdd44f08e988..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/19.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce5a3d474a7a04ed6680a71164113e57879dabaecf49e02e763b701c2611d738 -size 122274 diff --git a/meme_generator/memes/subject3/images/2.png b/meme_generator/memes/subject3/images/2.png deleted file mode 100644 index 9c842cd0cec6f9f779015dd8374b4a189a9cbf2c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7732ea877d09c7699f44ace9f56322955730f8014104add37371f372450517ac -size 121269 diff --git a/meme_generator/memes/subject3/images/20.png b/meme_generator/memes/subject3/images/20.png deleted file mode 100644 index 2de8290a0966b9ee473c2974a0df524a605f5467..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/20.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e5e7fe38aa75e09f2b4470dcb9ef3d1049be2c8e363df906b9bfde2459cdd69b -size 122340 diff --git a/meme_generator/memes/subject3/images/21.png b/meme_generator/memes/subject3/images/21.png deleted file mode 100644 index cb473795b1b2cb405c42fc0f333fe42fc65640f5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/21.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1803362b87dd2dac6261c0b95de42c45646632a45270e6dab596fc124ccb8209 -size 121497 diff --git a/meme_generator/memes/subject3/images/22.png b/meme_generator/memes/subject3/images/22.png deleted file mode 100644 index 4e8ef50ec3baee1a7e3e08a9726badedf5bd4cb1..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/22.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e8c1948e2a83fa5b631ffea39a8c9d8b7c01bd484e14c756a28ec494d10dac12 -size 122589 diff --git a/meme_generator/memes/subject3/images/23.png b/meme_generator/memes/subject3/images/23.png deleted file mode 100644 index b064ab4525880475152e3f9fac39f085851d69eb..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/23.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ee3daf2db62b677da49b2a9a36c4749cdab61707b950a6d8daa84a84020b1aa -size 120293 diff --git a/meme_generator/memes/subject3/images/24.png b/meme_generator/memes/subject3/images/24.png deleted file mode 100644 index 98b9a0fb14bc75636ee55b76f0e065e9031aa032..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/24.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e97eccab76b993997751f8490a1cd8df897d901ac6009160144c3df25e77a4d4 -size 120285 diff --git a/meme_generator/memes/subject3/images/25.png b/meme_generator/memes/subject3/images/25.png deleted file mode 100644 index 777d7e588f0883799a33a45801460a380bbeb0d0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/25.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:baf7ceaa8110e18fb5151fae8ba4af07dca0f0c90c9493ab0d381a2c18f09847 -size 120586 diff --git a/meme_generator/memes/subject3/images/26.png b/meme_generator/memes/subject3/images/26.png deleted file mode 100644 index 112e38856dcab8c4ce8ef7c2c2afe59ab607bad4..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/26.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8522d49c33581565fbabbd6f474414eaf598b22c9d88bf46f93eb472144812a -size 120993 diff --git a/meme_generator/memes/subject3/images/27.png b/meme_generator/memes/subject3/images/27.png deleted file mode 100644 index b546c52e2a903c6240deec3769962241acd7c46b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/27.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c4420a42a346ac68dbb13b1b0c5a7619bd3fc47b354fc3c4e330c3a31e5d45c -size 121308 diff --git a/meme_generator/memes/subject3/images/28.png b/meme_generator/memes/subject3/images/28.png deleted file mode 100644 index 62a662e22d0992133decb09ae3e6ac4a16f4308e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/28.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7bd3f3f7b43d50e85b4e1f04edb41efefe9d2e2d82219ac6e4823d6a70660047 -size 119910 diff --git a/meme_generator/memes/subject3/images/29.png b/meme_generator/memes/subject3/images/29.png deleted file mode 100644 index 768b5820a69262fca7d02411fc9419051468d4b2..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/29.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:959ce3ff4fdeacc8141fc9f01ee0e745392467441b8cdc21c406012a4699807a -size 120770 diff --git a/meme_generator/memes/subject3/images/3.png b/meme_generator/memes/subject3/images/3.png deleted file mode 100644 index d92e7b6e29cfaa61c892f3818e64ea3f5d4da7f7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f1a1a8368a0bca0ec75486842f81818054cd6a219ac662a153b81022c033469c -size 120377 diff --git a/meme_generator/memes/subject3/images/30.png b/meme_generator/memes/subject3/images/30.png deleted file mode 100644 index 0094d00359119f6b7c245ce81604eeced58b80a2..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/30.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e57d3e04718b64ecfb260d7700bfdf015cadd822cf8409bf45219ee7ae4a4d2 -size 121491 diff --git a/meme_generator/memes/subject3/images/31.png b/meme_generator/memes/subject3/images/31.png deleted file mode 100644 index 822dd786e487ab20491f9bbbbf7b9d5628c8453e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/31.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c367e70f5d902fc70f7606d33260183b78958a63e47bef197fef832fdacdb58f -size 123093 diff --git a/meme_generator/memes/subject3/images/32.png b/meme_generator/memes/subject3/images/32.png deleted file mode 100644 index 4a6fe6e1df51b88e9840ce9289b3337a335472be..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/32.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5ddab347dbb37e79f0602d8ccec255d16bb5c9bd921e58555212728c7df73bef -size 123051 diff --git a/meme_generator/memes/subject3/images/33.png b/meme_generator/memes/subject3/images/33.png deleted file mode 100644 index 794b7ef3c0f73e54c7ced6ffc294b3e789120fb0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/33.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:41ebc8f16f5baa0563bcbd98904d0de8a4d45b4a05f2f426f8b5398aec27c8cf -size 123692 diff --git a/meme_generator/memes/subject3/images/34.png b/meme_generator/memes/subject3/images/34.png deleted file mode 100644 index dc3b6945747bdb9954e5238ca8d8c0891a248831..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/34.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65afaa6cbb54ec11c6a853da5dc150bd0851d6a0d3b681342941825b99da2181 -size 121206 diff --git a/meme_generator/memes/subject3/images/35.png b/meme_generator/memes/subject3/images/35.png deleted file mode 100644 index 30fa944c6ba937b3cbd126de6d739dc187e7c55a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/35.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d780056687595c1c043014cc5bcb09a84d284bf99654932f66d417db5815a470 -size 121118 diff --git a/meme_generator/memes/subject3/images/36.png b/meme_generator/memes/subject3/images/36.png deleted file mode 100644 index b510fbb3b5ae2f249c468936a8811c45153cde51..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/36.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:501b3f65a88e5ef23fcd0075a94827a081ec8a04a7a2874064f5da3f2de45dca -size 121435 diff --git a/meme_generator/memes/subject3/images/37.png b/meme_generator/memes/subject3/images/37.png deleted file mode 100644 index 077b61d521631a79df4f0649e3bfdaec1a16c014..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/37.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63876de5f5a686af1dffa4e1e02cc96b42787228b62b440159a0e4ee1b225cf8 -size 121256 diff --git a/meme_generator/memes/subject3/images/38.png b/meme_generator/memes/subject3/images/38.png deleted file mode 100644 index eed57ee5a93f85cbc2fcc3f0464102f53d94d5e0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/38.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b63942b56e121c4a2cfb57e8e46dfcd4ed771b916e8754e84a3133184a6c061f -size 120417 diff --git a/meme_generator/memes/subject3/images/39.png b/meme_generator/memes/subject3/images/39.png deleted file mode 100644 index fea8a28f78dfd8704cbd46d5abbfa389f777f232..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/39.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:340854ff202a53cd9a0fe43e1b8ea98181b20a42fe7dac192642e692fe99242d -size 120379 diff --git a/meme_generator/memes/subject3/images/4.png b/meme_generator/memes/subject3/images/4.png deleted file mode 100644 index 6d7018e8cc9350255aeb267af3bfb83ac7a9f786..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:50dbc78907f9b487403081b16f9d4228d81947d79efe57d29d13a8bd7974d9cb -size 120404 diff --git a/meme_generator/memes/subject3/images/40.png b/meme_generator/memes/subject3/images/40.png deleted file mode 100644 index e3f7f48faef81ae1687adacc665d5b71d18035f7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/40.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:323fa5d02b7d55f96f9d57262c48271689bc8474c4616536ea23d14ddd5bf923 -size 118903 diff --git a/meme_generator/memes/subject3/images/41.png b/meme_generator/memes/subject3/images/41.png deleted file mode 100644 index 4eda272a5d9bdb1df01ad8c9b5d6fee35dbae86b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/41.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:33256685ed4a03d26dcb1fcd4be20f5f655428b1c344fa453dea40160965b538 -size 121941 diff --git a/meme_generator/memes/subject3/images/42.png b/meme_generator/memes/subject3/images/42.png deleted file mode 100644 index 0f169f2bdba73c6def046bf9f22b65eba63fc452..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/42.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:748ca282501d35ed4d501ed13790d8da37b9ab52b1aa9f4203c575bc1820a721 -size 123277 diff --git a/meme_generator/memes/subject3/images/43.png b/meme_generator/memes/subject3/images/43.png deleted file mode 100644 index aea445ba4552120e58f4563134cd8e11a556089f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/43.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f318ac5a36b886006524d505c9685cc27bd19cae691fb5048c4bacfc38de1b2 -size 123353 diff --git a/meme_generator/memes/subject3/images/44.png b/meme_generator/memes/subject3/images/44.png deleted file mode 100644 index 5e5920bc6c622ab1f9ace3b3d3e43e5c40b10a79..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/44.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bf3e98be1871a24a841e55e09249d57de556555a0d685ef28763f95d1559da9c -size 123925 diff --git a/meme_generator/memes/subject3/images/45.png b/meme_generator/memes/subject3/images/45.png deleted file mode 100644 index 7a566bfb55d2e29739c3b3538c61532cae277e5b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/45.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d2e08ad91703597c44220c6c6bab346fcfa25a55868e73216e2184fba1080fca -size 123771 diff --git a/meme_generator/memes/subject3/images/46.png b/meme_generator/memes/subject3/images/46.png deleted file mode 100644 index 9cd63cef96e87de37b97065e7c701974281ffd12..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/46.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e43130de8332180f5459b7e449370446556ff88ebc6414a4088032347685d86c -size 123629 diff --git a/meme_generator/memes/subject3/images/47.png b/meme_generator/memes/subject3/images/47.png deleted file mode 100644 index 1194af6a4644767e1c4b7e7e9c38c0fdfa75b3ff..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/47.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0dfef72d0ca18013aefbde4bad5408dbe8862f93388480392640224ab4cf34ee -size 120993 diff --git a/meme_generator/memes/subject3/images/48.png b/meme_generator/memes/subject3/images/48.png deleted file mode 100644 index a84780f80cf2f0c5851b8cb4c29171eee9d0dad6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/48.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6ce80f2852b4f462014331a8ff5ec2c3b9559d0bc36d44c875e83bfca23ad4e -size 121928 diff --git a/meme_generator/memes/subject3/images/49.png b/meme_generator/memes/subject3/images/49.png deleted file mode 100644 index f5410c4f9cabccd6f1679dc5734f7b6b19265260..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/49.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7e12c874c38ae5c2958b6708c85ffe73889f8e5743b7835875c97556d5e41510 -size 121177 diff --git a/meme_generator/memes/subject3/images/5.png b/meme_generator/memes/subject3/images/5.png deleted file mode 100644 index 519de8902e930fd92e110a1bdb17d619f27019f3..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1ff26b48ceb8fa249cadf0681e10d7acda789fead5c7212d982d6cb9aaf3d1b0 -size 120064 diff --git a/meme_generator/memes/subject3/images/50.png b/meme_generator/memes/subject3/images/50.png deleted file mode 100644 index 580f37123b4aae767d0c2131621308fcf21700cb..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/50.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d4cfd254ebd92d35434fe59ea5a4764599b48d57584f72802f8839813a2054c7 -size 122067 diff --git a/meme_generator/memes/subject3/images/51.png b/meme_generator/memes/subject3/images/51.png deleted file mode 100644 index ae8c69f473709cda5de99810cb75d841faef5c63..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/51.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6aee9d2c577c8f0785f548190cf2d48d0f0e3680e6079a6f07355b14b405ded1 -size 121982 diff --git a/meme_generator/memes/subject3/images/52.png b/meme_generator/memes/subject3/images/52.png deleted file mode 100644 index 99a235e5248123e832dc0b9ed08bbb94a3a13315..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/52.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a3dcc9c7a5414d47038cd1a99c227486916a6d77f8ee157b09d025313f87d6ef -size 122572 diff --git a/meme_generator/memes/subject3/images/53.png b/meme_generator/memes/subject3/images/53.png deleted file mode 100644 index b7930852eb8a261f19dcea4d8911402cb06517d9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/53.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d5fb2edb537a1c85f33c1d5cdee02f55a85a889d6587343b944aa75e13e131c -size 123288 diff --git a/meme_generator/memes/subject3/images/54.png b/meme_generator/memes/subject3/images/54.png deleted file mode 100644 index ea90778e3e6ad5f3cb17e25d69de0ffbc85242fa..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/54.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db71f37d86cc0b6c6a262863c326b3b7753c2c03fe2f74bb0bc10ae934eb13a3 -size 125139 diff --git a/meme_generator/memes/subject3/images/55.png b/meme_generator/memes/subject3/images/55.png deleted file mode 100644 index d17b3986497d0a08a4815294f6f0607697b4bb42..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/55.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6538f424268c2b2cfdfdbf276541663d8bf595904266fced9a7016dd76dac8a -size 124889 diff --git a/meme_generator/memes/subject3/images/56.png b/meme_generator/memes/subject3/images/56.png deleted file mode 100644 index 713ac219c31dcca931c90bca17c8ec524712874c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/56.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:312e9957ba8c84265c324852111e81648e60c01ea9673226447d8639734192e2 -size 122981 diff --git a/meme_generator/memes/subject3/images/57.png b/meme_generator/memes/subject3/images/57.png deleted file mode 100644 index 4a4393975d121ed73e8de109d369bdbd4c2a72b5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/57.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:06e6cd664c5a5d02cbd3199a9754ba65c0ba6f6f1935f1892b14b62aded78515 -size 123445 diff --git a/meme_generator/memes/subject3/images/58.png b/meme_generator/memes/subject3/images/58.png deleted file mode 100644 index 652c6c157ef7a68dabe8b43e0e531815c66340d3..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/58.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1184d00df355ff1fae769c33dce182d9322f68560b630334f12a1a5a3db58f37 -size 121538 diff --git a/meme_generator/memes/subject3/images/59.png b/meme_generator/memes/subject3/images/59.png deleted file mode 100644 index 24936e5455b4e533f499edc20224886f922504c5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/59.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ce7fdb4d437869423b7074e5e7dadfbbe5ba14ad83bcfd8bbcda811ef354026 -size 121044 diff --git a/meme_generator/memes/subject3/images/6.png b/meme_generator/memes/subject3/images/6.png deleted file mode 100644 index 3d93ad9d7300c44c946e23cbfed8e1ddd1cdbbb9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4dc250889d69b7e673af49681c84b4ec9c3d345f716fe395bb955daee1492379 -size 121921 diff --git a/meme_generator/memes/subject3/images/60.png b/meme_generator/memes/subject3/images/60.png deleted file mode 100644 index 1f78bd0edc8d81216747d28416db20bd0f63fcc3..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/60.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9e4769c3e46171e9736c65034720effdf22be05bd1cbb5dad2f45088397198b5 -size 120536 diff --git a/meme_generator/memes/subject3/images/61.png b/meme_generator/memes/subject3/images/61.png deleted file mode 100644 index 5c4ca26a68e9cc2f0252ab67841872491ba6fe02..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/61.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3b2ca619b281333429f837de32d6f0579100495e815fd650e0d39594f8208f2 -size 121417 diff --git a/meme_generator/memes/subject3/images/62.png b/meme_generator/memes/subject3/images/62.png deleted file mode 100644 index f4c0a8afd0334225f69dcad5540c32e2af760459..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/62.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1cdce8de25f7b63ad47eb7a8555b6a96acea6b81449cfdad97d2b5a77379cd06 -size 121771 diff --git a/meme_generator/memes/subject3/images/63.png b/meme_generator/memes/subject3/images/63.png deleted file mode 100644 index 7d70945cab2eaa612b2ffb84de7f1c701b605694..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/63.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b1a482784630d606d0f7f38e4e15723d1ae81fb0448883b8b523481c7a0c9de1 -size 120905 diff --git a/meme_generator/memes/subject3/images/64.png b/meme_generator/memes/subject3/images/64.png deleted file mode 100644 index 0a44638d17d56fd0d424f8288f42540bcd7143de..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/64.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2554b91ab64ef3f00060e07cd168866f7bdafdd262c7b3b8eaa47efb82c3ee71 -size 121419 diff --git a/meme_generator/memes/subject3/images/65.png b/meme_generator/memes/subject3/images/65.png deleted file mode 100644 index f0d8ec40c3a1ae9e41b92aa87cfcad4724dd55ed..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/65.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0332d0e2f8fe4eef7993994ade1509eadcd5ff9e99a7029ede705fbef4f95274 -size 121668 diff --git a/meme_generator/memes/subject3/images/66.png b/meme_generator/memes/subject3/images/66.png deleted file mode 100644 index 2a84697fc0302b43e0d80358506b8bf6a1efd469..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/66.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72f60b9a962fe650172bcc79f2849a9ad2ac6abf3747a5859f34c424695d5548 -size 122342 diff --git a/meme_generator/memes/subject3/images/67.png b/meme_generator/memes/subject3/images/67.png deleted file mode 100644 index 80fe5b6e8139cb6776d669d20f319c6b61112748..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/67.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:117145b22c6bd351d41c5966e939ea08a93012f5c5ea6864143c7765fcc0c065 -size 123435 diff --git a/meme_generator/memes/subject3/images/68.png b/meme_generator/memes/subject3/images/68.png deleted file mode 100644 index d691ed63020f1fa184ed8b1e19b8286cac656b48..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/68.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f846d32ed0f1c744b2549b9b0c8edc80756beedba51257d3cb1d9e0360e81a45 -size 123141 diff --git a/meme_generator/memes/subject3/images/69.png b/meme_generator/memes/subject3/images/69.png deleted file mode 100644 index 07e6cd752807df521f6aabab86f436a5e8c9803d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/69.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a7a0afbe3faf82737ec2e53b06c375e35b9a864cb363126db2db6501415258ae -size 121214 diff --git a/meme_generator/memes/subject3/images/7.png b/meme_generator/memes/subject3/images/7.png deleted file mode 100644 index d4c4e232f17e705da70b236d68f2f2c0b7289c93..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/7.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e03dc46725881e755e810e596782358b89645701329751494b32da92ea77536 -size 122662 diff --git a/meme_generator/memes/subject3/images/70.png b/meme_generator/memes/subject3/images/70.png deleted file mode 100644 index 10825e6da688485d8d16fa554d42a7a1184185fd..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/70.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07ac4d23a9bcfb80282fd715781ac64b029c9cdf4c75c6093686a739941ff55c -size 121607 diff --git a/meme_generator/memes/subject3/images/71.png b/meme_generator/memes/subject3/images/71.png deleted file mode 100644 index dacaaa72465d45e1633667161fc4b65508a8e94e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/71.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a16d09a43ae64133ac1d8387884e4993c1a43b2d712ef6af5f0ee734c1068aa6 -size 121394 diff --git a/meme_generator/memes/subject3/images/72.png b/meme_generator/memes/subject3/images/72.png deleted file mode 100644 index bb2bed14c0a3f93608d97ddebed7e686734bd9d6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/72.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79cead8c17e213f432ebbc8e9c815b14df1e802884e902e54cb88b29f2b53d00 -size 121385 diff --git a/meme_generator/memes/subject3/images/73.png b/meme_generator/memes/subject3/images/73.png deleted file mode 100644 index 642805db8c4664754ad1e9dfc1e9ee50432b8e3c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/73.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:74f9bccfbd5ef9a14539b36d51f31ccef0add6af5ddc6ddc443ca0ab8c0a3e30 -size 121964 diff --git a/meme_generator/memes/subject3/images/74.png b/meme_generator/memes/subject3/images/74.png deleted file mode 100644 index 213183f075aea466444fb358551014a46214bfac..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/74.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e0ea491770de4d237106bf145400da8293748cd061e7260a0338874e870a60b6 -size 121411 diff --git a/meme_generator/memes/subject3/images/75.png b/meme_generator/memes/subject3/images/75.png deleted file mode 100644 index 6b92a391e5af8bcc58a7c97e6e1b278ef55ecf8d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/75.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a089222e863240a5cfb0150941c31613f5ba6a455359bdad597ecf2d28b0580c -size 120032 diff --git a/meme_generator/memes/subject3/images/76.png b/meme_generator/memes/subject3/images/76.png deleted file mode 100644 index beac5d5c99949d0ad00e94a9bc9ba5a977e97274..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/76.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f4da0715bc586c7349eaf93f2ab14366f9a69a352b1cba86d2f68dcd7d4237ab -size 121187 diff --git a/meme_generator/memes/subject3/images/77.png b/meme_generator/memes/subject3/images/77.png deleted file mode 100644 index c69d73bab1fc51ad0657f3956df0e027898a6879..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/77.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5b267cfd18bf85e91589d8aa386788a32551b1b1e3d6c73492124323413b9333 -size 120819 diff --git a/meme_generator/memes/subject3/images/78.png b/meme_generator/memes/subject3/images/78.png deleted file mode 100644 index dea65ebc49080b371c59a40acfef24f992dfd310..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/78.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dd348b16c485a0df94793306d53b0bdfeadb7baf789463472bd203d78bee95f1 -size 121120 diff --git a/meme_generator/memes/subject3/images/79.png b/meme_generator/memes/subject3/images/79.png deleted file mode 100644 index 0e861253c72cf211650082f675ed8a315ca1d7e9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/79.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d18e8f63949ebdc1ac829b0688b01d8661cd882a7dac18b0a7eda263d62d965 -size 120867 diff --git a/meme_generator/memes/subject3/images/8.png b/meme_generator/memes/subject3/images/8.png deleted file mode 100644 index 42cfe2fe856ae0a1cad348b795685f33c87a63dc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/8.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c2ccc57f24eaf644d7bc589804f1913504e54d201a243d83c685697d0e4f27b -size 122556 diff --git a/meme_generator/memes/subject3/images/80.png b/meme_generator/memes/subject3/images/80.png deleted file mode 100644 index e46228ab327f0ece2a1c79ceb4cb8c13605a2b6a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/80.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:88dd43b995217336a4574b012d8fced9250b9df646401980145928059bb7b6ae -size 121311 diff --git a/meme_generator/memes/subject3/images/81.png b/meme_generator/memes/subject3/images/81.png deleted file mode 100644 index 375d42347993cd9d0aebbb10b5ac119cddd82f8b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/81.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:38bb5c2cf1ad8bb90b08e26fbfcc9d3c9c4b211272f44d0ca7428f90b42c4d2e -size 120699 diff --git a/meme_generator/memes/subject3/images/82.png b/meme_generator/memes/subject3/images/82.png deleted file mode 100644 index 004eb50278d36892c56a19cdb68b79f501f9d5f0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/82.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ed65269dc4c83d3a8c45b31793f8b9a26d4a16aaa547531094c46b2a69e7fe0f -size 120535 diff --git a/meme_generator/memes/subject3/images/83.png b/meme_generator/memes/subject3/images/83.png deleted file mode 100644 index bf65090cdad9d8da70f954f89e9f0ffb14fc2f44..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/83.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cbf8c04cf5a7f4e75289382a1ba8d4e6f9e36de4737b18c076d908490579c44e -size 119488 diff --git a/meme_generator/memes/subject3/images/84.png b/meme_generator/memes/subject3/images/84.png deleted file mode 100644 index 1ee8a6376431296c14baefcc6ae04002bfba4cdc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/84.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:850246c6d84adeb7e2d776877a78b0b8e6a3bf78ae2e69e79bcfdb0ade15bef6 -size 119168 diff --git a/meme_generator/memes/subject3/images/85.png b/meme_generator/memes/subject3/images/85.png deleted file mode 100644 index 0a95d9b72de93d0ed0bb054b28f9da55ce081f69..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/85.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6ddfda6dc47b4f44dee381a2e0591f4232fe8f9d6484f8777a56d2a6d295cf5 -size 119732 diff --git a/meme_generator/memes/subject3/images/9.png b/meme_generator/memes/subject3/images/9.png deleted file mode 100644 index a0e5d0a7aaf6449980ce9745ee7885cc21f95150..0000000000000000000000000000000000000000 --- a/meme_generator/memes/subject3/images/9.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2b6a2de1e34ec7761501544c3d7fdb7e709e208a39f21ea2e7ab6679edadebf -size 122004 diff --git a/meme_generator/memes/suck/__init__.py b/meme_generator/memes/suck/__init__.py index 71268f1addb9ef75f65685afe72e685975f876fc..46532e87e41470b56a1d0020628d7cea6451a87f 100644 --- a/meme_generator/memes/suck/__init__.py +++ b/meme_generator/memes/suck/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,14 +10,14 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def suck(images: list[BuildImage], texts, args): +def suck(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() # fmt: off locs = [(82, 100, 130, 119), (82, 94, 126, 125), (82, 120, 128, 99), (81, 164, 132, 55), (79, 163, 132, 55), (82, 140, 127, 79), (83, 152, 125, 67), (75, 157, 140, 62), (72, 165, 144, 54), (80, 132, 128, 87), (81, 127, 127, 92), (79, 111, 132, 108)] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(12): bg = BuildImage.open(img_dir / f"{i}.png") frame = BuildImage.new("RGBA", bg.size, "white") diff --git a/meme_generator/memes/support/__init__.py b/meme_generator/memes/support/__init__.py index e2ed09ec3d2c7af33dd087a4c958e0c47ca2c357..4af76f06c59fc52f686f741c5c22d98f0ebf4f91 100644 --- a/meme_generator/memes/support/__init__.py +++ b/meme_generator/memes/support/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def support(images: list[BuildImage], texts, args): +def support(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((815, 815)).rotate(23, expand=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img, (-172, -17), below=True) diff --git a/meme_generator/memes/swirl_turn/__init__.py b/meme_generator/memes/swirl_turn/__init__.py deleted file mode 100644 index e1dd1ccabdc0f8cef27f06ac992a8bc73c633757..0000000000000000000000000000000000000000 --- a/meme_generator/memes/swirl_turn/__init__.py +++ /dev/null @@ -1,38 +0,0 @@ -import math - -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif - - -def swirl_turn(images: list[BuildImage], texts, args): - frame_num = 40 - - def maker(i: int) -> Maker: - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA").circle().resize((100, 100)) - start_angle = i * 360 / frame_num - frame = BuildImage.new("RGBA", (300, 300)) - num = 24 - for j in range(num): - angle = start_angle + j * 360 / num - x = 150 + 75 * math.cos(math.radians(angle)) - y = 150 + 75 * math.sin(math.radians(angle)) - frame.paste(img, (round(x - 50), round(y - 50)), alpha=True) - return frame - - return make - - return make_gif_or_combined_gif( - images[0], maker, frame_num, 0.02, FrameAlignPolicy.extend_loop - ) - - -add_meme( - "swirl_turn", - swirl_turn, - min_images=1, - max_images=1, - keywords=["回旋转", "旋风转"], -) diff --git a/meme_generator/memes/symmetric/__init__.py b/meme_generator/memes/symmetric/__init__.py index fa6af7b23711b4ad059b94cd85875cd541e1c573..73de733d9596bb7d69df23d32bf859a6a8c53e5d 100644 --- a/meme_generator/memes/symmetric/__init__.py +++ b/meme_generator/memes/symmetric/__init__.py @@ -1,4 +1,4 @@ -from typing import Literal, NamedTuple +from typing import Dict, List, Literal, NamedTuple, Tuple from PIL.Image import Transpose from pil_utils import BuildImage @@ -19,9 +19,7 @@ group.add_argument( default="left", help=help, ) -group.add_argument( - "--left", "/左", action="store_const", const="left", dest="direction" -) +group.add_argument("--left", "/左", action="store_const", const="left", dest="direction") group.add_argument( "--right", "/右", action="store_const", const="right", dest="direction" ) @@ -37,19 +35,19 @@ class Model(MemeArgsModel): ) -def symmetric(images: list[BuildImage], texts, args: Model): +def symmetric(images: List[BuildImage], texts, args: Model): img = images[0] img_w, img_h = img.size class Mode(NamedTuple): method: Transpose - frame_size: tuple[int, int] - size1: tuple[int, int, int, int] - pos1: tuple[int, int] - size2: tuple[int, int, int, int] - pos2: tuple[int, int] + frame_size: Tuple[int, int] + size1: Tuple[int, int, int, int] + pos1: Tuple[int, int] + size2: Tuple[int, int, int, int] + pos2: Tuple[int, int] - modes: dict[str, Mode] = { + modes: Dict[str, Mode] = { "left": Mode( Transpose.FLIP_LEFT_RIGHT, (img_w // 2 * 2, img_h), diff --git a/meme_generator/memes/tankuku_raisesign/__init__.py b/meme_generator/memes/tankuku_raisesign/__init__.py index 90e7447924f7d359d5dd52250d9c647371948db2..6c7f31ff5b7ae7428e7b701fe65b3b38b67e6adf 100644 --- a/meme_generator/memes/tankuku_raisesign/__init__.py +++ b/meme_generator/memes/tankuku_raisesign/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def tankuku_raisesign(images: list[BuildImage], texts, args): +def tankuku_raisesign(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((300, 230), keep_ratio=True) params = ( (((0, 46), (320, 0), (350, 214), (38, 260)), (68, 91)), @@ -28,7 +29,7 @@ def tankuku_raisesign(images: list[BuildImage], texts, args): (((0, 35), (200, 0), (224, 133), (25, 169)), (195, 17)), (((0, 35), (200, 0), (224, 133), (25, 169)), (195, 17)), ) - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(15): points, pos = params[i] frame = BuildImage.open(img_dir / f"{i}.png") diff --git a/meme_generator/memes/taunt/__init__.py b/meme_generator/memes/taunt/__init__.py index 866a63321a399bee262f1583720480eed0fc59c9..15710bc3bbb399c352725880afa58733024d18a2 100644 --- a/meme_generator/memes/taunt/__init__.py +++ b/meme_generator/memes/taunt/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def taunt(images: list[BuildImage], texts, args): +def taunt(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/teach/__init__.py b/meme_generator/memes/teach/__init__.py index 5bed359c77865f69b45708fb46fbb320da5e5508..a47e287488fc31897dcca24f2ff1e1f52d1e4a4c 100644 --- a/meme_generator/memes/teach/__init__.py +++ b/meme_generator/memes/teach/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def teach(images: list[BuildImage], texts: list[str], args): +def teach(images: List[BuildImage], texts: List[str], args): frame = BuildImage.open(img_dir / "0.png").resize_width(960).convert("RGBA") text = texts[0] if texts else "我老婆" try: diff --git a/meme_generator/memes/tease/__init__.py b/meme_generator/memes/tease/__init__.py index f776c6d4303e354bbb0a51b159cf44dc708d73e2..0914c3cdd185a36ed0d0c47738ff29aa79f5171f 100644 --- a/meme_generator/memes/tease/__init__.py +++ b/meme_generator/memes/tease/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def tease(images: list[BuildImage], texts, args): +def tease(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() - frames: list[IMG] = [] + frames: List[IMG] = [] params = [ ((21, 75), ((0, 0), (129, 3), (155, 123), (12, 142))), ((18, 73), ((0, 29), (128, 0), (149, 118), (30, 147))), diff --git a/meme_generator/memes/telescope/__init__.py b/meme_generator/memes/telescope/__init__.py deleted file mode 100644 index bb0539783e01f11a2b83e18c705a65662708d4bd..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/__init__.py +++ /dev/null @@ -1,43 +0,0 @@ -from pathlib import Path - -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif - -img_dir = Path(__file__).parent / "images" - - -def telescope(images: list[BuildImage], texts, args): - def maker(i: int) -> Maker: - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA").square() - img_big = img.resize((600, 600)) - img_small = img.resize((230, 230)) - frame = BuildImage.open(img_dir / f"{i}.png") - if 4 <= i < 18: - x = -167 + (i - 4) * 4 - y = -361 + (i - 4) * 7 - frame.paste(img_big, (x, y), below=True) - elif 23 <= i < 38: - x = -90 + (i - 23) * 5 - y = -245 + (i - 23) * 5 - frame.paste(img_big, (x, y), below=True) - elif 43 <= i < 46: - x = -15 - y = -210 - frame.paste(img_big, (x, y), below=True) - elif 46 <= i < 57: - x = 8 - y = -21 - frame.paste(img_small, (x, y), below=True) - return frame - - return make - - return make_gif_or_combined_gif( - images[0], maker, 69, 0.1, FrameAlignPolicy.extend_first - ) - - -add_meme("telescope", telescope, min_images=1, max_images=1, keywords=["望远镜"]) diff --git a/meme_generator/memes/telescope/images/0.png b/meme_generator/memes/telescope/images/0.png deleted file mode 100644 index 3fd485d548b3d17bd94da3b50fba3609ceec48ae..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:54acf1431db203117a8003557e57158ad9f2bf52a4fe0ddef7acd6703fb349b1 -size 38968 diff --git a/meme_generator/memes/telescope/images/1.png b/meme_generator/memes/telescope/images/1.png deleted file mode 100644 index b4dcb29846086690890c4461a83a3b1e89d6fb86..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69e8f740bf9f331d5bef627e2a5b73af1a6bf8f03ebd87f98e4a51de23081773 -size 38978 diff --git a/meme_generator/memes/telescope/images/10.png b/meme_generator/memes/telescope/images/10.png deleted file mode 100644 index 35a174169c2406326cdbdfe18382c9b550cef0c7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b53aa2c4d6b1669801fbd0b85f407bb95ed32f4fa99535b7b0e0f7617ef1ab20 -size 9243 diff --git a/meme_generator/memes/telescope/images/11.png b/meme_generator/memes/telescope/images/11.png deleted file mode 100644 index bf255ecdbe1bbb2c197d1b5d46163c661d2e6054..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/11.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d440bf1b965d267f8bd1370d7870a2f40338d99cc8476549dc4db967fb230d5 -size 9198 diff --git a/meme_generator/memes/telescope/images/12.png b/meme_generator/memes/telescope/images/12.png deleted file mode 100644 index 0c1175c22f5c2ab88e45ef2a32b1edd1f0eff7bd..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/12.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f458b1a3feb2311070e734715df1f6d1bb5e78c1a21c82ab83cdfc739f01b5a -size 9198 diff --git a/meme_generator/memes/telescope/images/13.png b/meme_generator/memes/telescope/images/13.png deleted file mode 100644 index 7d10c11b961429bc568f78ef09be0cedb9c56326..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/13.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f86706c85fb6a937ed0968033826690055430a3d102b8414c495a59dfdaace3b -size 9267 diff --git a/meme_generator/memes/telescope/images/14.png b/meme_generator/memes/telescope/images/14.png deleted file mode 100644 index 68d8b314d60327a6cf29ceb245c22c12a6b4b5d2..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/14.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c4cf5e9e8868f4a04e0600fbf54147d1b7ee2dec1e38b163014d1a38f108c45c -size 9311 diff --git a/meme_generator/memes/telescope/images/15.png b/meme_generator/memes/telescope/images/15.png deleted file mode 100644 index 12e283ef6305ca495721481a387f663f41f5caa4..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/15.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ed781c192823293aba64b122d0497d234280e23e832fdb2f9ba3dba4f5043be7 -size 9369 diff --git a/meme_generator/memes/telescope/images/16.png b/meme_generator/memes/telescope/images/16.png deleted file mode 100644 index 6c4451a937c3241cd4c2276791c48ef6c7290340..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/16.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f12e3d767af83e57b46b8a79bd10b2f9536ba92881df0c5030e2f25ef5c34f61 -size 9400 diff --git a/meme_generator/memes/telescope/images/17.png b/meme_generator/memes/telescope/images/17.png deleted file mode 100644 index c53b01a679c97676d3e969c4eab69bf6a55ff1b6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/17.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e02a3a90c729b47110276c4623c9db226d2ceec023c98be270a302f9866579d2 -size 9377 diff --git a/meme_generator/memes/telescope/images/18.png b/meme_generator/memes/telescope/images/18.png deleted file mode 100644 index 69886d3266359ebc6f14b038d08c826c09950bdc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/18.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:373b0a8e3c8cbe524c7a9008604097e0e49486c3faf61c6242c1aee8c5591456 -size 39922 diff --git a/meme_generator/memes/telescope/images/19.png b/meme_generator/memes/telescope/images/19.png deleted file mode 100644 index 18460b3d96f8c9bc0a96908ba6f57b5b5f908a19..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/19.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67132a335a13ae1322c2105e82b5b100d3a91748d2d21ec4b1512940aa3c98c7 -size 39472 diff --git a/meme_generator/memes/telescope/images/2.png b/meme_generator/memes/telescope/images/2.png deleted file mode 100644 index 2d4f01f42e13bc8f856e367e36da0b8f0f0f61eb..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff8bd318f837ea0ca09415fe9db28db525262e0a2ce159b1fb644581ead817f5 -size 39785 diff --git a/meme_generator/memes/telescope/images/20.png b/meme_generator/memes/telescope/images/20.png deleted file mode 100644 index ad0a3f17d47e70ea0e8ca49876c7111909791bd2..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/20.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f5f242ad660c86daed77a1b9cce58a8dbf65b1ef73ca700cc483eb72b7f537e3 -size 39830 diff --git a/meme_generator/memes/telescope/images/21.png b/meme_generator/memes/telescope/images/21.png deleted file mode 100644 index 3c8bc7e01c92f28cc1941ce10e62c0a3339cb40c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/21.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6d25e3f432d825d06263c3d920baef71a60823c48192f8fa95ba0964604842a -size 39924 diff --git a/meme_generator/memes/telescope/images/22.png b/meme_generator/memes/telescope/images/22.png deleted file mode 100644 index 1022ffd8fd659837e131e58f5102b922592e36b7..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/22.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce2aaca5e1709c151994e05c6e677a270a843e60b84a19a66570ae159fcb43b1 -size 39969 diff --git a/meme_generator/memes/telescope/images/23.png b/meme_generator/memes/telescope/images/23.png deleted file mode 100644 index 455e2f15ac0c077913801cb93d155cd38085747d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/23.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fcbc0bb3f3e4a65527632174d8aaa9c5e8363fff2fde8b2a572580ac97dcc32a -size 9731 diff --git a/meme_generator/memes/telescope/images/24.png b/meme_generator/memes/telescope/images/24.png deleted file mode 100644 index 5378efbc7f21e7d16fae5b547b7fca2d81bcd8fc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/24.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57f0efd3849200f4eae7a9de940c3d9bf2e21c4947b25ae8232e68260d78baab -size 9603 diff --git a/meme_generator/memes/telescope/images/25.png b/meme_generator/memes/telescope/images/25.png deleted file mode 100644 index 732e81e8d12d99e42a60de873a03962168e2364b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/25.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:421a7986dcda824712ff725cd1287169806bca5985d8eba34b800692714b173b -size 9813 diff --git a/meme_generator/memes/telescope/images/26.png b/meme_generator/memes/telescope/images/26.png deleted file mode 100644 index 48bc3685a041a13bfe2e1930880a76a068c245c5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/26.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a093eae5de95ccae5a00ddb75a9bbc7477c7e4fad18eb79d74d7a1411f4bcde2 -size 9634 diff --git a/meme_generator/memes/telescope/images/27.png b/meme_generator/memes/telescope/images/27.png deleted file mode 100644 index 18074a8f37c61e066d17a8097ada18d95a2b9224..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/27.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:818ffa721cb3534962754afba5d0b602e161d7a564d1bad8c5ade0b80ab812ad -size 9789 diff --git a/meme_generator/memes/telescope/images/28.png b/meme_generator/memes/telescope/images/28.png deleted file mode 100644 index 693af96ab4f0820ec6cbd7d863523c9e984f129c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/28.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2d9993cc35481b698937b28cbca117c70431b64aacfce4b38e6d08f63975960a -size 9615 diff --git a/meme_generator/memes/telescope/images/29.png b/meme_generator/memes/telescope/images/29.png deleted file mode 100644 index e201a2cef2126490ad2d005f72c486fa8344abb6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/29.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dfdb9017a0d446bd2540eb950fa4e074876035d33b104bdf413bdadd530f9185 -size 9624 diff --git a/meme_generator/memes/telescope/images/3.png b/meme_generator/memes/telescope/images/3.png deleted file mode 100644 index 8dc162ea700ce756b2ff8931256fd15a94a0ad25..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c6ae42cf050af5d87c7c63d9aa5431cbd71bbaa82edbfb212c3d2e72607c3b80 -size 41633 diff --git a/meme_generator/memes/telescope/images/30.png b/meme_generator/memes/telescope/images/30.png deleted file mode 100644 index b6e49c2cef9c25682078bf87706b17720f7c97ac..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/30.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d72eb1f64e258c311672a61e333e96f338e734272d15564b26ccac077c27495d -size 9520 diff --git a/meme_generator/memes/telescope/images/31.png b/meme_generator/memes/telescope/images/31.png deleted file mode 100644 index afb58bf47717ee8512c620fd3f5ca088284b145b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/31.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1df1a6ee95dff71a9a8ff941793d308db7a56154ac8a1e1ee179f550cde51498 -size 9579 diff --git a/meme_generator/memes/telescope/images/32.png b/meme_generator/memes/telescope/images/32.png deleted file mode 100644 index cb46346f86ada00c3250b4b7d3ee4fefc2d9a9a5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/32.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a2d3d902532f06ecb48863ee96dfebe0472c4d1a79bcccc8186f0f297ca887b -size 9546 diff --git a/meme_generator/memes/telescope/images/33.png b/meme_generator/memes/telescope/images/33.png deleted file mode 100644 index d0e229f1fb44bbfc14e1168a7f37495ca0521980..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/33.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:232db4b64c2aab3ec2ddc76f7773c4bc083d29558add537715b81779e003cc06 -size 9545 diff --git a/meme_generator/memes/telescope/images/34.png b/meme_generator/memes/telescope/images/34.png deleted file mode 100644 index 7743a7a7cd8b4610ed158418a96bcdc82513a19a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/34.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1963d0759c043631a4d5faf3db0e54753794379e10241c824fc4f96ba337e039 -size 9501 diff --git a/meme_generator/memes/telescope/images/35.png b/meme_generator/memes/telescope/images/35.png deleted file mode 100644 index 77f49f5cdf1cec0f7db6a58b460da639376bb728..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/35.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2066f23acb641d10ed862619aaa572ce037aa8e3a5e75b411da68c38cf676fa8 -size 9597 diff --git a/meme_generator/memes/telescope/images/36.png b/meme_generator/memes/telescope/images/36.png deleted file mode 100644 index 63dc4de0a755416fbb65b258c6f2b35954226cf2..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/36.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5be04aeaa50b781fe815e404e9eacc927697a5f7ead721a6f7c55bc7f0845362 -size 9612 diff --git a/meme_generator/memes/telescope/images/37.png b/meme_generator/memes/telescope/images/37.png deleted file mode 100644 index 8a79fde951fe3073bad186162fc3851f2e5c2424..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/37.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ee1850990cf8ef1de1a3fe225f9032d090bf014981c23da3b8ecd3f136b0db9f -size 9678 diff --git a/meme_generator/memes/telescope/images/38.png b/meme_generator/memes/telescope/images/38.png deleted file mode 100644 index 758963b8e956dc44e331bbd95ae4ee2605a14f57..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/38.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d22f4b570b2a64edda6bc2914cf8851bbe85c48becd061188af52ee0cd1bb5aa -size 36848 diff --git a/meme_generator/memes/telescope/images/39.png b/meme_generator/memes/telescope/images/39.png deleted file mode 100644 index a52a72b1b944c8f4295860202e21236aadb7d53e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/39.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c63fcb6380b63f421868c8eda2df3c187912f9624468887c4f80f7cd6c063855 -size 38138 diff --git a/meme_generator/memes/telescope/images/4.png b/meme_generator/memes/telescope/images/4.png deleted file mode 100644 index 4fe259dba0603641d3054332e9870d232872c4ca..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f378cbba77c41bc13ab7ad33ce016afdb850de227f351cbbc6fe8f04782c170f -size 9200 diff --git a/meme_generator/memes/telescope/images/40.png b/meme_generator/memes/telescope/images/40.png deleted file mode 100644 index d88b4660175891c9832ce6340ba2a848ec375d1d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/40.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:862c27e6bc8b5b027b45d25aedccf5861164dab0b110dc8df6a7ba08e6839319 -size 39184 diff --git a/meme_generator/memes/telescope/images/41.png b/meme_generator/memes/telescope/images/41.png deleted file mode 100644 index 1a8c02b019db3b3f580f3d4d174bc1b87b735a3e..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/41.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a244d6f2e8b62bba3abab426a034a6603a8e0fbe31c4c07184e3e8a6af4bc598 -size 39331 diff --git a/meme_generator/memes/telescope/images/42.png b/meme_generator/memes/telescope/images/42.png deleted file mode 100644 index 4a0b71426f397cc836a0b4636bd1ce1c7efb999d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/42.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:73e4023bece51bee1a6e4499003d54ceaa4eeeaf39622d57036e888e77a988c1 -size 39288 diff --git a/meme_generator/memes/telescope/images/43.png b/meme_generator/memes/telescope/images/43.png deleted file mode 100644 index abcdde20b7544d15b562ca59f5a4a5c8276220dc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/43.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bb3c319ac7f415994625e0aec1bb60aa8ea798a735c40e050de4b7ebb94f7da -size 9595 diff --git a/meme_generator/memes/telescope/images/44.png b/meme_generator/memes/telescope/images/44.png deleted file mode 100644 index 83a5153b83b21ca8524c18ecc51fc8a26fc660dc..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/44.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3314ac794dce55b24d1a89f65b6e9d70b48f2cb44a16f2a07c95cdf4c6b4a398 -size 9480 diff --git a/meme_generator/memes/telescope/images/45.png b/meme_generator/memes/telescope/images/45.png deleted file mode 100644 index dd546196a21e1be8ad69ee22200c538229f2e699..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/45.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2fc2edb2aecc924fea88ab724fc2c992eae21a9296a7baaded72a42ba8158902 -size 9356 diff --git a/meme_generator/memes/telescope/images/46.png b/meme_generator/memes/telescope/images/46.png deleted file mode 100644 index 37a767290730c4ef9a54be2b167c85d526f62688..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/46.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:69e6b477255eb5b99bc64456b9ae687613e9693be100eb9f286ca027b1db1285 -size 9456 diff --git a/meme_generator/memes/telescope/images/47.png b/meme_generator/memes/telescope/images/47.png deleted file mode 100644 index 38639dc032718cd1c0e100fea190dc31ce35260d..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/47.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a0aa29d97c1c70d18103cf95ea7f87aba3dbd7019b5f127d0a707350879e97b7 -size 9454 diff --git a/meme_generator/memes/telescope/images/48.png b/meme_generator/memes/telescope/images/48.png deleted file mode 100644 index 7666ad285e990d7b16f8ced0d7c8ce83ac23e219..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/48.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4f77e546a37160a6b8d6836e85c7f4b80452365e8c8d1b458bac4b028409af9c -size 9509 diff --git a/meme_generator/memes/telescope/images/49.png b/meme_generator/memes/telescope/images/49.png deleted file mode 100644 index 8c95fcdd8580b83b2ba6b4ecfd01977323d4a8f5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/49.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3d94bcaa7f28205ba87fe532d2d9f4b5bcd5771e22addd445e1b3224191128ed -size 9344 diff --git a/meme_generator/memes/telescope/images/5.png b/meme_generator/memes/telescope/images/5.png deleted file mode 100644 index 253ea1bc93a4c90d9e7ccc08f651643902bac4fa..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:33023b3ffb15aac9826aaef72da4e3d992b785dfbb61cc76c03f19939b59de02 -size 9740 diff --git a/meme_generator/memes/telescope/images/50.png b/meme_generator/memes/telescope/images/50.png deleted file mode 100644 index 05f2a913eee59b01e2004b9fb87bf6c4d5e38296..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/50.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cc13b97ebbe311d355947d28bd4b445ca231715a8f29adce7e7471fb1f9b478 -size 9465 diff --git a/meme_generator/memes/telescope/images/51.png b/meme_generator/memes/telescope/images/51.png deleted file mode 100644 index 0e27c5ad28761c671fa2dac1e005c764970b1815..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/51.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c363febae346a3c6e0df0f18aaf2603c1be41098bf54d171c85f77faf3af3129 -size 9469 diff --git a/meme_generator/memes/telescope/images/52.png b/meme_generator/memes/telescope/images/52.png deleted file mode 100644 index 02c0ebde31a24f22a62227afe9827b749968789a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/52.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:71ab9ec4e4e8bdbb5ea793926e16ce8961727261bae5c900def57960d82f25b7 -size 9531 diff --git a/meme_generator/memes/telescope/images/53.png b/meme_generator/memes/telescope/images/53.png deleted file mode 100644 index ec5c7d8e8205e1c7a103d798a660c09f79d9945b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/53.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b13ff2fbc1e0fd9b3b0d288ffd7de08dbb9acf8e0b8f3152e02c884f8c7668fb -size 9445 diff --git a/meme_generator/memes/telescope/images/54.png b/meme_generator/memes/telescope/images/54.png deleted file mode 100644 index eaf0e108d47e3ad72d7a1c65b3df66e808304e40..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/54.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de5fde98c1a026979fcace57171bdf844e9da2ee9e0f6aaf2da19d565f64b932 -size 9379 diff --git a/meme_generator/memes/telescope/images/55.png b/meme_generator/memes/telescope/images/55.png deleted file mode 100644 index 50b9f9bac08fbd19287c3642278433c6c67fa6bd..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/55.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5fb64f568202cf80ef21b0e26547cc2c99d9c09b3f9d4f18dc3251f324c13294 -size 9381 diff --git a/meme_generator/memes/telescope/images/56.png b/meme_generator/memes/telescope/images/56.png deleted file mode 100644 index 882773251c5f6b0a05297f8af96ea1971da53716..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/56.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e6fe994be1172354271adf57c2ea5503bd145dafeca511261c5a3752d19cb02d -size 9321 diff --git a/meme_generator/memes/telescope/images/57.png b/meme_generator/memes/telescope/images/57.png deleted file mode 100644 index db052bd4b18237604c5dc0f51095a004584a07b1..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/57.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:991a0d62115731219d8d2cac2a29d931f0efd20b2c457d858dc548e2a99a2cde -size 32481 diff --git a/meme_generator/memes/telescope/images/58.png b/meme_generator/memes/telescope/images/58.png deleted file mode 100644 index d644cdb515b0efc7c12dd743c510c13da332016a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/58.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e9f5abf4a966aeb9f71ff506ae3744e1b71d1360a14af75f497e8c5c7f5ee605 -size 33851 diff --git a/meme_generator/memes/telescope/images/59.png b/meme_generator/memes/telescope/images/59.png deleted file mode 100644 index 2de292345ac97cc934fc2cd99569e23fb68742b9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/59.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b48cc5079a30695a97a2c86a2bc950177b020a1c8cdb6d531961397fbc5313ab -size 33908 diff --git a/meme_generator/memes/telescope/images/6.png b/meme_generator/memes/telescope/images/6.png deleted file mode 100644 index efa209efaaadc674333d41b04ff813512b988931..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e1d43d2cc543384846d47375b317b68b347518c8374bb625d9d1feb9a0d891c -size 9432 diff --git a/meme_generator/memes/telescope/images/60.png b/meme_generator/memes/telescope/images/60.png deleted file mode 100644 index c098deee1c5f1c58f18980b0cfb30495e6cede59..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/60.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:83267aebd7fed5469e2ef391441b398b957aaf1f1a23530adaf76b342620f111 -size 30406 diff --git a/meme_generator/memes/telescope/images/61.png b/meme_generator/memes/telescope/images/61.png deleted file mode 100644 index 0f5e695d75302e057c80922642ab9dfc3d63e482..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/61.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:efa25d0b7aa681a5dc5ac2ad08746597d3cdd4737c29367fbaa8f51b4cb081f3 -size 30654 diff --git a/meme_generator/memes/telescope/images/62.png b/meme_generator/memes/telescope/images/62.png deleted file mode 100644 index 80fa035421a2e0dea885ff8769b28b4c61c0834a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/62.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:27b1f605942cbffa76b19bf439b17e29ff9d83c61f5309b71d6390b66c71aabc -size 30944 diff --git a/meme_generator/memes/telescope/images/63.png b/meme_generator/memes/telescope/images/63.png deleted file mode 100644 index 743e3d77b77996dcdf05a0608cbca8875247077b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/63.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1d28decc5b30caaa528c2d51f8a9c34c3f84a1b975ac8ed32c25098d444fb5c0 -size 31883 diff --git a/meme_generator/memes/telescope/images/64.png b/meme_generator/memes/telescope/images/64.png deleted file mode 100644 index ce1598269491c36eeed9389a0be58176d9637074..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/64.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c4338fff73b77d7cc01ed07c8372f1ef7472815b7a0c952a01f65b0b7c87bc5e -size 33076 diff --git a/meme_generator/memes/telescope/images/65.png b/meme_generator/memes/telescope/images/65.png deleted file mode 100644 index d568b1ef991e8b820102a4e4500ade3eba73f6b6..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/65.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fd70df8b958eeca09964f473017411665cb4f657de5c65c6fe604b1ab40dab2d -size 32010 diff --git a/meme_generator/memes/telescope/images/66.png b/meme_generator/memes/telescope/images/66.png deleted file mode 100644 index 1e4422a2030ebdc1a45ef9553593bf8bcb9bf833..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/66.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:74e5f1bf752eb00e20ddd8b9975069d50a324def857f1842f738b1c81e1dd0f3 -size 32010 diff --git a/meme_generator/memes/telescope/images/67.png b/meme_generator/memes/telescope/images/67.png deleted file mode 100644 index 8c02d6963f2a1b484be031fbeabd42cb79567c26..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/67.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b536cd00f5b22121e9bade91755d4c8128ee6ef0bce6057fb19bfd7e888bde8b -size 31862 diff --git a/meme_generator/memes/telescope/images/68.png b/meme_generator/memes/telescope/images/68.png deleted file mode 100644 index 83c59c390a52cd8e3243a42d0c6a339336e3b970..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/68.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1ff8cc62a89a5ef910077a870106c77188bf7c77f7d5c13323c7102cf7ac5af8 -size 31867 diff --git a/meme_generator/memes/telescope/images/7.png b/meme_generator/memes/telescope/images/7.png deleted file mode 100644 index dfe3336916b1c2c559cb5eacf0c55c5a0e6de7bf..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/7.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:28a33b49b57435efd94a7412fd5f0f8c4c9d326d463f74f2293e30f6178555b3 -size 9309 diff --git a/meme_generator/memes/telescope/images/8.png b/meme_generator/memes/telescope/images/8.png deleted file mode 100644 index cd7d2bd5d1449caea758319299fa723cf091d21a..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/8.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d1acf9f2ac90d2919d9051828e390d64c09746f062e0daccbabb83eb13d1c400 -size 9264 diff --git a/meme_generator/memes/telescope/images/9.png b/meme_generator/memes/telescope/images/9.png deleted file mode 100644 index 2096cae54b5ab5456f6bd9581c11c4e01760f91b..0000000000000000000000000000000000000000 --- a/meme_generator/memes/telescope/images/9.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:55c192b9058ab90c4272a09d3be111c1c5d3fd387f1b6a4e391cc2944965a691 -size 9179 diff --git a/meme_generator/memes/think_what/__init__.py b/meme_generator/memes/think_what/__init__.py index 0739df4da282c5cbad4738a1720003f1eb09f07d..8ec8609006b798412c5cae47c742bcd5ce6a7c02 100644 --- a/meme_generator/memes/think_what/__init__.py +++ b/meme_generator/memes/think_what/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def think_what(images: list[BuildImage], texts, args): +def think_what(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/this_chicken/__init__.py b/meme_generator/memes/this_chicken/__init__.py index 18818a3616647c2bb16641368f51d05d13c010e9..ac605a12bc2d4dfbbc198f3480e7fb553c7fd8c1 100644 --- a/meme_generator/memes/this_chicken/__init__.py +++ b/meme_generator/memes/this_chicken/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def this_chicken(images: list[BuildImage], texts, args): +def this_chichen(images: List[BuildImage], texts, args): text = texts[0] if texts else "这是十二生肖中的鸡" img = images[0].convert("RGBA").resize((640, 640), keep_ratio=True) @@ -34,8 +35,8 @@ def this_chicken(images: list[BuildImage], texts, args): add_meme( - "this_chicken", - this_chicken, + "this_chichen", + this_chichen, min_images=1, max_images=1, max_texts=1, diff --git a/meme_generator/memes/throw/__init__.py b/meme_generator/memes/throw/__init__.py index 63ae1b439ff367381b2ad717df3cd29c613a2d62..3d87571753ae0766966f8b27f6d16ed78939db33 100644 --- a/meme_generator/memes/throw/__init__.py +++ b/meme_generator/memes/throw/__init__.py @@ -1,5 +1,6 @@ import random from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def throw(images: list[BuildImage], texts, args): +def throw(images: List[BuildImage], texts, args): img = ( images[0] .convert("RGBA") diff --git a/meme_generator/memes/throw_gif/__init__.py b/meme_generator/memes/throw_gif/__init__.py index 567beba0ac52a57aee0ef28b5ee9bd65410d4fa0..da11e45e164f2d712a8e084f914b7b197d286668 100644 --- a/meme_generator/memes/throw_gif/__init__.py +++ b/meme_generator/memes/throw_gif/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def throw_gif(images: list[BuildImage], texts, args): +def throw_gif(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").circle() locs = [ [(32, 32, 108, 36)], @@ -21,7 +22,7 @@ def throw_gif(images: list[BuildImage], texts, args): [(35, 35, 259, 31)], [(175, 175, -50, 220)], ] - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(8): frame = BuildImage.open(img_dir / f"{i}.png") for w, h, x, y in locs[i]: diff --git a/meme_generator/memes/thump/__init__.py b/meme_generator/memes/thump/__init__.py index 2d85b299305cf71c1d66048d7288d2c781aec37e..240be22c7dc9cca48849a5aafe2053212fe14a6c 100644 --- a/meme_generator/memes/thump/__init__.py +++ b/meme_generator/memes/thump/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,12 +10,12 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def thump(images: list[BuildImage], texts, args): +def thump(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square() # fmt: off locs = [(65, 128, 77, 72), (67, 128, 73, 72), (54, 139, 94, 61), (57, 135, 86, 65)] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(4): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i] diff --git a/meme_generator/memes/thump_wildly/__init__.py b/meme_generator/memes/thump_wildly/__init__.py index e1e9b0d618e9211edb483d2add6dee706b1e78e4..bd77f0b83fa2e2f7801e1663b9b8a49c88f5dc55 100644 --- a/meme_generator/memes/thump_wildly/__init__.py +++ b/meme_generator/memes/thump_wildly/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def thump_wildly(images: list[BuildImage], texts, args): +def thump_wildly(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((122, 122), keep_ratio=True) raw_frames = [BuildImage.open(img_dir / f"{i}.png") for i in range(31)] for i in range(14): diff --git a/meme_generator/memes/tightly/__init__.py b/meme_generator/memes/tightly/__init__.py index 9645e738f69faa174dde38973a298fbfb29dfc1f..3c5270a4547e375d4b754f0b98b850f01f0aae4c 100644 --- a/meme_generator/memes/tightly/__init__.py +++ b/meme_generator/memes/tightly/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def tightly(images: list[BuildImage], texts, args): +def tightly(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((640, 400), keep_ratio=True) # fmt: off locs = [(39, 169, 267, 141), (40, 167, 264, 143), (38, 174, 270, 135), (40, 167, 264, 143), (38, 174, 270, 135), @@ -17,7 +18,7 @@ def tightly(images: list[BuildImage], texts, args): (5, 215, 333, 96), (10, 210, 321, 102), (3, 210, 330, 104), (4, 210, 328, 102), (4, 212, 328, 100), (4, 212, 328, 100), (4, 212, 328, 100), (4, 212, 328, 100), (4, 212, 328, 100), (29, 195, 285, 120)] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(20): frame = BuildImage.open(img_dir / f"{i}.png") x, y, w, h = locs[i] diff --git a/meme_generator/memes/together/__init__.py b/meme_generator/memes/together/__init__.py index 565b20109af38777e0b526c4a759663fd3ec91d3..f8023e19c585ff32a83c6a057b031e8ff1a651c5 100644 --- a/meme_generator/memes/together/__init__.py +++ b/meme_generator/memes/together/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def together(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def together(images: List[BuildImage], texts: List[str], args: MemeArgsModel): frame = BuildImage.open(img_dir / "0.png") name = args.user_infos[0].name if args.user_infos else "" text = texts[0] if texts else f"一起玩{name}吧!" diff --git a/meme_generator/memes/tom_tease/__init__.py b/meme_generator/memes/tom_tease/__init__.py deleted file mode 100644 index c1c18f42d43e2f627d377f6410b83783bb1964ae..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/__init__.py +++ /dev/null @@ -1,34 +0,0 @@ -from pathlib import Path - -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif - -img_dir = Path(__file__).parent / "images" - - -def tom_tease(images: list[BuildImage], texts, args): - def maker(i: int) -> Maker: - def make(img: BuildImage) -> BuildImage: - img = img.convert("RGBA").resize((400, 350), keep_ratio=True) - img = img.perspective(((0, 100), (290, 0), (290, 370), (0, 335))) - bg = BuildImage.open(img_dir / f"{i}.png") - frame = BuildImage.new("RGBA", bg.size, "white") - frame.paste(bg).paste(img, (258, -12), below=True) - return frame - - return make - - return make_gif_or_combined_gif( - images[0], maker, 11, 0.2, FrameAlignPolicy.extend_first - ) - - -add_meme( - "tom_tease", - tom_tease, - min_images=1, - max_images=1, - keywords=["汤姆嘲笑"], -) diff --git a/meme_generator/memes/tom_tease/images/0.png b/meme_generator/memes/tom_tease/images/0.png deleted file mode 100644 index 44e386313833933fa7ccc8d4294cedb3d7bf68a5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:041389342145a3b1b9fd3582d40489ba04890eec87d6e2680ed21ee24821d1be -size 48354 diff --git a/meme_generator/memes/tom_tease/images/1.png b/meme_generator/memes/tom_tease/images/1.png deleted file mode 100644 index d9f52446219a456bd2f0cdc49837ef127e028d7f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/1.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:808ac93ead7530cdc034c583b7907334af7356e34dc41a812f9b13dab8f2dfbe -size 47686 diff --git a/meme_generator/memes/tom_tease/images/10.png b/meme_generator/memes/tom_tease/images/10.png deleted file mode 100644 index df67ea02ef3b9e4df72af0e2487f9191bedafb5c..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/10.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:829019c546a96999bead56079f7eb058317088ea6e06cb74e3126ce47f4a66c3 -size 48334 diff --git a/meme_generator/memes/tom_tease/images/2.png b/meme_generator/memes/tom_tease/images/2.png deleted file mode 100644 index de75adce449f0807ccbe57d4888ac22355582031..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:66e40ee6164a31945fdb289d6256086eba349cde74db81915e105201c50f4f4a -size 48853 diff --git a/meme_generator/memes/tom_tease/images/3.png b/meme_generator/memes/tom_tease/images/3.png deleted file mode 100644 index d980fac53aee0261eb8d83fe6692070a01680f32..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/3.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d33042cbd9708d0f62cec599e90b6c969b621d649eb2ca648f36949586f2391d -size 48169 diff --git a/meme_generator/memes/tom_tease/images/4.png b/meme_generator/memes/tom_tease/images/4.png deleted file mode 100644 index 63f2ce5e289c3ed572c93376d4fe582fd45029df..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/4.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:35a7ba215c7b24834a065b6477a3d918d2b3f64d836e481f2145a065e049b9e9 -size 47801 diff --git a/meme_generator/memes/tom_tease/images/5.png b/meme_generator/memes/tom_tease/images/5.png deleted file mode 100644 index 3ad56cff3a28f3a2351e4954ddde8892e5ca829f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/5.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6f919d31e2dd2a76f5ec16cae4f93ccdbda09ce28115a0e40328f1ce3fc8fd93 -size 47901 diff --git a/meme_generator/memes/tom_tease/images/6.png b/meme_generator/memes/tom_tease/images/6.png deleted file mode 100644 index 22d0a34e705e16f94f8c373155da41187ee288e8..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/6.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2b135ad8c08862c472b1138b49e7f349d4f9cf46e0782d80786abf6379bbb6d0 -size 48722 diff --git a/meme_generator/memes/tom_tease/images/7.png b/meme_generator/memes/tom_tease/images/7.png deleted file mode 100644 index 39cd3c83a05014206fda595c4caf5480cdca42b9..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/7.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9011c957860473bfb4f6e30485ace1adec9f8a9207ec8214ae31e19cbf7c9cc5 -size 50121 diff --git a/meme_generator/memes/tom_tease/images/8.png b/meme_generator/memes/tom_tease/images/8.png deleted file mode 100644 index 18ea8fd054d3671a6eb546f23cadd1b51a673d9f..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/8.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:691b0dc1433a9aad5d802c21b13dc836dac49b2c4ee1f7a1c11477185ade9139 -size 47951 diff --git a/meme_generator/memes/tom_tease/images/9.png b/meme_generator/memes/tom_tease/images/9.png deleted file mode 100644 index 04dadcac0d73b58c091b362a9674349a30a46418..0000000000000000000000000000000000000000 --- a/meme_generator/memes/tom_tease/images/9.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f28856ed443a568091cab9509f18399a53468dc51c350dde766621cead83ca06 -size 48820 diff --git a/meme_generator/memes/tomb_yeah/__init__.py b/meme_generator/memes/tomb_yeah/__init__.py index e3c57b275ad89b282af901707ebef79d6d968990..6796027738f5916e724e7f422a2c2233d1cbbbf5 100644 --- a/meme_generator/memes/tomb_yeah/__init__.py +++ b/meme_generator/memes/tomb_yeah/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def tomb_yeah(images: list[BuildImage], texts, args): +def tomb_yeah(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.jpg").convert("RGBA") frame.paste( images[0].convert("RGBA").circle().resize((145, 145)), (138, 265), alpha=True @@ -21,6 +22,4 @@ def tomb_yeah(images: list[BuildImage], texts, args): return frame.save_jpg() -add_meme( - "tomb_yeah", tomb_yeah, min_images=1, max_images=2, keywords=["上坟", "坟前比耶"] -) +add_meme("tomb_yeah", tomb_yeah, min_images=1, max_images=2, keywords=["上坟", "坟前比耶"]) diff --git a/meme_generator/memes/trance/__init__.py b/meme_generator/memes/trance/__init__.py index 76bd322772346d8ed766163fd9187c1195e8dbde..0f46aa47e88469ace40a76dc2e0da0d307b4836d 100644 --- a/meme_generator/memes/trance/__init__.py +++ b/meme_generator/memes/trance/__init__.py @@ -1,9 +1,11 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import add_meme -def trance(images: list[BuildImage], texts, args): +def trance(images: List[BuildImage], texts, args): img = images[0] width, height = img.size height1 = int(1.1 * height) diff --git a/meme_generator/memes/turn/__init__.py b/meme_generator/memes/turn/__init__.py index 78dad7a5a5ffb3194d1d6ff3bcaf259ce930285d..398409165a0e07cb16d4cdc1c01bdf1586105f4d 100644 --- a/meme_generator/memes/turn/__init__.py +++ b/meme_generator/memes/turn/__init__.py @@ -1,4 +1,5 @@ import random +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -7,9 +8,9 @@ from meme_generator import add_meme from meme_generator.utils import save_gif -def turn(images: list[BuildImage], texts, args): +def turn(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").circle() - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(0, 360, 10): frame = BuildImage.new("RGBA", (250, 250), "white") frame.paste(img.rotate(i).resize((250, 250)), alpha=True) diff --git a/meme_generator/memes/twist/__init__.py b/meme_generator/memes/twist/__init__.py index ca80d671509bc2fce8645056b918b0f9e3844fa3..39b7228c745d3763064923f12f5ddf4c8796fa07 100644 --- a/meme_generator/memes/twist/__init__.py +++ b/meme_generator/memes/twist/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def twist(images: list[BuildImage], texts, args): +def twist(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").square().resize((78, 78)) # fmt: off locs = [ @@ -17,7 +18,7 @@ def twist(images: list[BuildImage], texts, args): (20, 69, 180), (22, 68, 240), (25, 66, 300) ] # fmt: on - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(5): frame = BuildImage.open(img_dir / f"{i}.png") x, y, a = locs[i] diff --git a/meme_generator/memes/universal/__init__.py b/meme_generator/memes/universal/__init__.py index 498e44d464f9c4ff1c6a2b2a53048a6a13c2ba08..a0990a96ed6e94e3b62e203ea823f05ffbbc4759 100644 --- a/meme_generator/memes/universal/__init__.py +++ b/meme_generator/memes/universal/__init__.py @@ -1,13 +1,15 @@ +from typing import List + from pil_utils import BuildImage, Text2Image from meme_generator import add_meme from meme_generator.utils import make_jpg_or_gif -def universal(images: list[BuildImage], texts: list[str], args): +def universal(images: List[BuildImage], texts: List[str], args): def make(img: BuildImage) -> BuildImage: img = img.convert("RGBA").resize_width(500) - frames: list[BuildImage] = [img] + frames: List[BuildImage] = [img] for text in texts: text_img = BuildImage( Text2Image.from_bbcode_text(text, fontsize=45, align="center") diff --git a/meme_generator/memes/vibrate/__init__.py b/meme_generator/memes/vibrate/__init__.py index 156f4f70cb87e65a0686d84dd5c733b222bce73a..f09639741c1a1d9a6cbd8b1585c6f5661f324a4e 100644 --- a/meme_generator/memes/vibrate/__init__.py +++ b/meme_generator/memes/vibrate/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_g img_dir = Path(__file__).parent / "images" -def vibrate(images: list[BuildImage], texts, args): +def vibrate(images: List[BuildImage], texts, args): def maker(i: int) -> Maker: def make(img: BuildImage) -> BuildImage: img = img.convert("RGBA").square() diff --git a/meme_generator/memes/wakeup/__init__.py b/meme_generator/memes/wakeup/__init__.py index d7f503c849071082001763237688246869974a75..ee0a7728e64bee200cdc29ca85e4116404e48989 100644 --- a/meme_generator/memes/wakeup/__init__.py +++ b/meme_generator/memes/wakeup/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def wakeup(images, texts: list[str], args): +def wakeup(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.jpg") try: diff --git a/meme_generator/memes/wallpaper/__init__.py b/meme_generator/memes/wallpaper/__init__.py index 06e717d81877775f392bad81f8df6a8ab4625106..700af86d7b34769f24d12a188845ab987703ed37 100644 --- a/meme_generator/memes/wallpaper/__init__.py +++ b/meme_generator/memes/wallpaper/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,9 +10,9 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def wallpaper(images: list[BuildImage], texts, args): +def wallpaper(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((515, 383), keep_ratio=True) - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(8): frames.append(BuildImage.open(img_dir / f"{i}.png").image) for i in range(8, 20): diff --git a/meme_generator/memes/walnut_pad/__init__.py b/meme_generator/memes/walnut_pad/__init__.py index de2cc0f8d9c41ef304161f5ce44ac0ffe2effb85..85b3d9f23b8f6f31ed4766e4412fb6b4f94bb4e3 100644 --- a/meme_generator/memes/walnut_pad/__init__.py +++ b/meme_generator/memes/walnut_pad/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def walnut_pad(images: list[BuildImage], texts, args): +def walnut_pad(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/walnut_zoom/__init__.py b/meme_generator/memes/walnut_zoom/__init__.py index f23b218085a7dc3719a775c9348fe23941db6bc3..e2e2f3b35215a6fb8ce1b4bafb118698e071505b 100644 --- a/meme_generator/memes/walnut_zoom/__init__.py +++ b/meme_generator/memes/walnut_zoom/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_g img_dir = Path(__file__).parent / "images" -def walnut_zoom(images: list[BuildImage], texts, args): +def walnut_zoom(images: List[BuildImage], texts, args): # fmt: off locs = ( (-222, 30, 695, 430), (-212, 30, 695, 430), (0, 30, 695, 430), (41, 26, 695, 430), diff --git a/meme_generator/memes/washer/__init__.py b/meme_generator/memes/washer/__init__.py deleted file mode 100644 index b31176932ec8c087fb5ab6143c0b35432ae176c0..0000000000000000000000000000000000000000 --- a/meme_generator/memes/washer/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -from pathlib import Path - -from PIL.Image import Image as IMG -from pil_utils import BuildImage - -from meme_generator import add_meme -from meme_generator.utils import save_gif - -img_dir = Path(__file__).parent / "images" - - -def washer(images: list[BuildImage], texts, args): - img = images[0].convert("RGBA") - frame = BuildImage.open(img_dir / "0.png") - frames: list[IMG] = [] - for i in range(0, 360, 30): - frames.append( - frame.copy() - .paste(img.rotate(-i).resize((74, 74)), (63, 56), below=True) - .image - ) - return save_gif(frames, 0.1) - - -add_meme("washer", washer, min_images=1, max_images=1, keywords=["洗衣机"]) diff --git a/meme_generator/memes/washer/images/0.png b/meme_generator/memes/washer/images/0.png deleted file mode 100644 index e9361aca3f9c9a02d0437c430d7589c28f6604d5..0000000000000000000000000000000000000000 --- a/meme_generator/memes/washer/images/0.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:beb9f4b460c460bc84e7ffcf3d93f4a11085d67bb5ef42f231fce02ea88bfdb9 -size 50559 diff --git a/meme_generator/memes/wave/__init__.py b/meme_generator/memes/wave/__init__.py index 9efecbf17a8a52e206be385fbc2e79d296e887fe..f0d6d5f8e5e652b7d06da2d5430408b87f1f091d 100644 --- a/meme_generator/memes/wave/__init__.py +++ b/meme_generator/memes/wave/__init__.py @@ -1,4 +1,5 @@ import math +from typing import List from pil_utils import BuildImage @@ -6,7 +7,7 @@ from meme_generator import add_meme from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif -def wave(images: list[BuildImage], texts, args): +def wave(images: List[BuildImage], texts, args): img = images[0] img_w = min(max(img.width, 360), 720) period = img_w / 6 diff --git a/meme_generator/memes/what_I_want_to_do/__init__.py b/meme_generator/memes/what_I_want_to_do/__init__.py index 2fe76999a7e7f5a892f3f2e1f555bb64f164f26a..e27ee2addc4891ac4cdc92ad0a5e94d39c6261de 100644 --- a/meme_generator/memes/what_I_want_to_do/__init__.py +++ b/meme_generator/memes/what_I_want_to_do/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def what_I_want_to_do(images: list[BuildImage], texts, args): +def what_I_want_to_do(images: List[BuildImage], texts, args): frame = BuildImage.open(img_dir / "0.png") def make(img: BuildImage) -> BuildImage: diff --git a/meme_generator/memes/what_he_wants/__init__.py b/meme_generator/memes/what_he_wants/__init__.py index 537fd4adc7f27a4c65192f95241b361b59ebbc2b..3ab506fbb72258a15d38edab75483f992d6a58c1 100644 --- a/meme_generator/memes/what_he_wants/__init__.py +++ b/meme_generator/memes/what_he_wants/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -9,7 +10,7 @@ from meme_generator.utils import make_jpg_or_gif img_dir = Path(__file__).parent / "images" -def what_he_wants(images: list[BuildImage], texts: list[str], args): +def what_he_wants(images: List[BuildImage], texts: List[str], args): date = texts[0] if texts else "今年520" text = f"{date}我会给你每个男人都最想要的东西···" frame = BuildImage.open(img_dir / "0.png") diff --git a/meme_generator/memes/why_at_me/__init__.py b/meme_generator/memes/why_at_me/__init__.py index b7a13deecf6f55ea7183ab55a413b63cf6eb2522..4a80362e6b62ccee5e07a62cd4d93da9bcf4a506 100644 --- a/meme_generator/memes/why_at_me/__init__.py +++ b/meme_generator/memes/why_at_me/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -7,7 +8,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def why_at_me(images: list[BuildImage], texts, args): +def why_at_me(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((265, 265), keep_ratio=True) frame = BuildImage.open(img_dir / "0.png") frame.paste(img.rotate(19), (42, 13), below=True) diff --git a/meme_generator/memes/why_have_hands/__init__.py b/meme_generator/memes/why_have_hands/__init__.py index 6c75d9a14743062a0fc1d2a107ede25ffebd2db0..93b54d5e9e2d487c99d7401613b742a5fe895ea9 100644 --- a/meme_generator/memes/why_have_hands/__init__.py +++ b/meme_generator/memes/why_have_hands/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOrNameNotEnough, TextOverLength img_dir = Path(__file__).parent / "images" -def why_have_hands(images: list[BuildImage], texts: list[str], args: MemeArgsModel): +def why_have_hands(images: List[BuildImage], texts: List[str], args: MemeArgsModel): img = images[0].convert("RGBA") if not texts and not args.user_infos: @@ -22,7 +23,7 @@ def why_have_hands(images: list[BuildImage], texts: list[str], args: MemeArgsMod ) frame.paste(img.resize((250, 170), keep_ratio=True), (275, 1100), below=True) frame.paste( - img.resize((300, 400), keep_ratio=True, inside=True, direction="west"), + img.resize((300, 400), keep_ratio=True, inside=True, direction="northwest"), (1100, 1060), alpha=True, ) diff --git a/meme_generator/memes/windmill_turn/__init__.py b/meme_generator/memes/windmill_turn/__init__.py index 24d06f077744b584a2b0305ff4162c403cf79246..9396f9745e4611ae8675c28c81158bed971457c8 100644 --- a/meme_generator/memes/windmill_turn/__init__.py +++ b/meme_generator/memes/windmill_turn/__init__.py @@ -1,10 +1,12 @@ +from typing import List + from pil_utils import BuildImage from meme_generator import add_meme from meme_generator.utils import FrameAlignPolicy, Maker, make_gif_or_combined_gif -def windmill_turn(images: list[BuildImage], texts, args): +def windmill_turn(images: List[BuildImage], texts, args): def maker(i: int) -> Maker: def make(img: BuildImage) -> BuildImage: img = img.convert("RGBA").resize((300, 300), keep_ratio=True) @@ -22,6 +24,4 @@ def windmill_turn(images: list[BuildImage], texts, args): ) -add_meme( - "windmill_turn", windmill_turn, min_images=1, max_images=1, keywords=["风车转"] -) +add_meme("windmill_turn", windmill_turn, min_images=1, max_images=1, keywords=["风车转"]) diff --git a/meme_generator/memes/wish_fail/__init__.py b/meme_generator/memes/wish_fail/__init__.py index a60c8271725b125a129eb3db1bc5c7560530fecf..700816f1361857d16cb9085dc679af7c766d0d8f 100644 --- a/meme_generator/memes/wish_fail/__init__.py +++ b/meme_generator/memes/wish_fail/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def wish_fail(images, texts: list[str], args): +def wish_fail(images, texts: List[str], args): text = texts[0] frame = BuildImage.open(img_dir / "0.png") try: diff --git a/meme_generator/memes/wooden_fish/__init__.py b/meme_generator/memes/wooden_fish/__init__.py index c63d0cb06e7b760a510b80363c1d3405b9175da4..6fcaad072dd00bb1271cb90244fe4cb580ea4045 100644 --- a/meme_generator/memes/wooden_fish/__init__.py +++ b/meme_generator/memes/wooden_fish/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from pil_utils import BuildImage @@ -8,7 +9,7 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def wooden_fish(images: list[BuildImage], texts, args): +def wooden_fish(images: List[BuildImage], texts, args): img = images[0].convert("RGBA").resize((85, 85)) frames = [ BuildImage.open(img_dir / f"{i}.png").paste(img, (116, 153), below=True).image diff --git a/meme_generator/memes/worship/__init__.py b/meme_generator/memes/worship/__init__.py index 336d72efe6793800a15cc09f2689a2ead90c1854..9f8a0fd20212fee07c330ea7511949e33735a6bd 100644 --- a/meme_generator/memes/worship/__init__.py +++ b/meme_generator/memes/worship/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Image as IMG from pil_utils import BuildImage @@ -9,11 +10,11 @@ from meme_generator.utils import save_gif img_dir = Path(__file__).parent / "images" -def worship(images: list[BuildImage], texts, args): +def worship(images: List[BuildImage], texts, args): img = images[0].convert("RGBA") points = ((0, -30), (135, 17), (135, 145), (0, 140)) paint = img.square().resize((150, 150)).perspective(points) - frames: list[IMG] = [] + frames: List[IMG] = [] for i in range(10): frame = BuildImage.open(img_dir / f"{i}.png") frame.paste(paint, below=True) diff --git a/meme_generator/memes/wujing/__init__.py b/meme_generator/memes/wujing/__init__.py index 15dd9c49f242f1de321426576ae438a713ecb4e9..cde63ea0a105f8b4938f97539aff4ab7915f5958 100644 --- a/meme_generator/memes/wujing/__init__.py +++ b/meme_generator/memes/wujing/__init__.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Literal +from typing import List, Literal, Tuple from pil_utils import BuildImage @@ -9,11 +9,11 @@ from meme_generator.exception import TextOverLength img_dir = Path(__file__).parent / "images" -def wujing(images, texts: list[str], args): +def wujing(images, texts: List[str], args): frame = BuildImage.open(img_dir / "0.jpg") def draw( - pos: tuple[float, float, float, float], + pos: Tuple[float, float, float, float], text: str, align: Literal["left", "right", "center"], ): diff --git a/meme_generator/memes/youtube/__init__.py b/meme_generator/memes/youtube/__init__.py index a4223edfef2439089188ccdef7c5c4dc24e5c791..fb10860d6bf9c736e6fc68dde0165c1354ec035b 100644 --- a/meme_generator/memes/youtube/__init__.py +++ b/meme_generator/memes/youtube/__init__.py @@ -1,4 +1,5 @@ from pathlib import Path +from typing import List from PIL.Image import Transpose from pil_utils import BuildImage, Text2Image @@ -8,7 +9,7 @@ from meme_generator import add_meme img_dir = Path(__file__).parent / "images" -def youtube(images, texts: list[str], args): +def youtube(images, texts: List[str], args): left_img = Text2Image.from_text(texts[0], fontsize=200, fill="black").to_image( bg_color="white", padding=(30, 20) ) @@ -48,7 +49,9 @@ def youtube(images, texts: list[str], args): ), (x1, y1 + 1), alpha=True, - ).paste(right_img, (x0, y0), alpha=True) + ).paste( + right_img, (x0, y0), alpha=True + ) return frame.save_jpg() diff --git a/meme_generator/utils.py b/meme_generator/utils.py index 9b6ea1a1e2536bc429a897f6ed5aa6e5e15884d1..4cc2294bd19df0646fa666385a380f050b1c24f5 100644 --- a/meme_generator/utils.py +++ b/meme_generator/utils.py @@ -4,7 +4,6 @@ import inspect import math import random import time -from collections.abc import Coroutine from dataclasses import dataclass from enum import Enum from functools import partial, wraps @@ -13,9 +12,12 @@ from typing import ( TYPE_CHECKING, Any, Callable, + Coroutine, + List, Literal, Optional, Protocol, + Tuple, TypeVar, ) @@ -61,7 +63,7 @@ def is_coroutine_callable(call: Callable[..., Any]) -> bool: return inspect.iscoroutinefunction(func_) -def save_gif(frames: list[IMG], duration: float) -> BytesIO: +def save_gif(frames: List[IMG], duration: float) -> BytesIO: output = BytesIO() frames[0].save( output, @@ -99,30 +101,30 @@ def save_gif(frames: list[IMG], duration: float) -> BytesIO: class Maker(Protocol): - def __call__(self, img: BuildImage) -> BuildImage: ... + def __call__(self, img: BuildImage) -> BuildImage: + ... class GifMaker(Protocol): - def __call__(self, i: int) -> Maker: ... + def __call__(self, i: int) -> Maker: + ... def get_avg_duration(image: IMG) -> float: if not getattr(image, "is_animated", False): return 0 total_duration = 0 - n_frames = getattr(image, "n_frames", 1) - for i in range(n_frames): + for i in range(image.n_frames): image.seek(i) total_duration += image.info["duration"] - return total_duration / n_frames + return total_duration / image.n_frames -def split_gif(image: IMG) -> list[IMG]: - frames: list[IMG] = [] +def split_gif(image: IMG) -> List[IMG]: + frames: List[IMG] = [] update_mode = "full" - n_frames = getattr(image, "n_frames", 1) - for i in range(n_frames): + for i in range(image.n_frames): image.seek(i) if image.tile: # type: ignore update_region = image.tile[0][1][2:] # type: ignore @@ -131,7 +133,7 @@ def split_gif(image: IMG) -> list[IMG]: break last_frame: Optional[IMG] = None - for i in range(n_frames): + for i in range(image.n_frames): image.seek(i) frame = image.copy() if update_mode == "partial" and last_frame: @@ -230,7 +232,7 @@ def make_gif_or_combined_gif( if not getattr(image, "is_animated", False): return save_gif([maker(i)(img).image for i in range(frame_num)], duration) - frame_num_in = getattr(image, "n_frames", 1) + frame_num_in = image.n_frames duration_in = get_avg_duration(image) / 1000 total_duration_in = frame_num_in * duration_in total_duration = frame_num * duration @@ -250,7 +252,7 @@ def make_gif_or_combined_gif( total_duration_base = total_duration total_duration_fit = total_duration_in - frame_idxs: list[int] = list(range(frame_num_base)) + frame_idxs: List[int] = list(range(frame_num_base)) diff_duration = total_duration_fit - total_duration_base diff_num = int(diff_duration / duration_base) @@ -276,7 +278,7 @@ def make_gif_or_combined_gif( ): break - frames: list[IMG] = [] + frames: List[IMG] = [] frame_idx_fit = 0 time_start = 0 for i, idx in enumerate(frame_idxs): @@ -338,9 +340,7 @@ async def translate(text: str, lang_from: str = "auto", lang_to: str = "zh") -> def random_text() -> str: - return random.choice( - ["刘一", "陈二", "张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十"] - ) + return random.choice(["刘一", "陈二", "张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十"]) def random_image() -> BytesIO: @@ -366,20 +366,20 @@ def default_template(meme: "Meme", number: int) -> str: def render_meme_list( - meme_list: list[tuple["Meme", TextProperties]], + meme_list: List[Tuple["Meme", TextProperties]], *, template: Callable[["Meme", int], str] = default_template, order_direction: Literal["row", "column"] = "column", columns: int = 4, column_align: Literal["left", "center", "right"] = "left", - item_padding: tuple[int, int] = (15, 6), - image_padding: tuple[int, int] = (50, 50), + item_padding: Tuple[int, int] = (15, 6), + image_padding: Tuple[int, int] = (50, 50), bg_color: ColorType = "white", fontsize: int = 30, fontname: str = "", - fallback_fonts: list[str] = [], + fallback_fonts: List[str] = [], ) -> BytesIO: - item_images: list[Text2Image] = [] + item_images: List[Text2Image] = [] for i, (meme, properties) in enumerate(meme_list, start=1): text = template(meme, i) t2m = Text2Image.from_text( @@ -402,7 +402,7 @@ def render_meme_list( .chars[0] ) num_per_col = math.ceil(len(item_images) / columns) - column_images: list[BuildImage] = [] + column_images: List[BuildImage] = [] for col in range(columns): if order_direction == "column": images = item_images[col * num_per_col : (col + 1) * num_per_col] @@ -411,7 +411,7 @@ def render_meme_list( item_images[num * columns + col] for num in range((len(item_images) - col - 1) // columns + 1) ] - img_w = max(t2m.width for t2m in images) + item_padding[0] * 2 + img_w = max((t2m.width for t2m in images)) + item_padding[0] * 2 img_h = (char_A.ascent + item_padding[1] * 2) * len(images) + char_A.descent image = BuildImage.new("RGB", (img_w, img_h), bg_color) y = item_padding[1] @@ -426,8 +426,8 @@ def render_meme_list( y += char_A.ascent + item_padding[1] * 2 column_images.append(image) - img_w = sum(img.width for img in column_images) + image_padding[0] * 2 - img_h = max(img.height for img in column_images) + image_padding[1] * 2 + img_w = sum((img.width for img in column_images)) + image_padding[0] * 2 + img_h = max((img.height for img in column_images)) + image_padding[1] * 2 image = BuildImage.new("RGB", (img_w, img_h), bg_color) x, y = image_padding for img in column_images: diff --git a/meme_generator/version.py b/meme_generator/version.py index 040835a6ba072aa7357f1d77c5b868f1c253e4c6..6561790f155f6bfd436e5b19b2f0a1e7f20c0259 100644 --- a/meme_generator/version.py +++ b/meme_generator/version.py @@ -1 +1 @@ -__version__ = "0.0.20" +__version__ = "0.0.15" diff --git a/poetry.lock b/poetry.lock index 4f0b9331d0cb8d08f87019f700434c85ce5212c6..c8091f1d2ae4d12ea42661824fe9802b2241b292 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,37 +1,67 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.5.0" description = "Reusable constraint types to use with typing.Annotated" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"}, + {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} + [[package]] name = "anyio" -version = "4.3.0" +version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, + {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, ] [package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] +test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (<0.22)"] + +[[package]] +name = "backports-zoneinfo" +version = "0.2.1" +description = "Backport of the standard library zoneinfo module" +optional = false +python-versions = ">=3.6" +files = [ + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, + {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, +] + +[package.extras] +tzdata = ["tzdata"] [[package]] name = "bbcode" @@ -44,15 +74,50 @@ files = [ {file = "bbcode-1.1.0.tar.gz", hash = "sha256:eac4fb1d0f6c7ce5c41e4b5c0522562b15a1ac036fb9131adc59e9a28c7dc1d0"}, ] +[[package]] +name = "black" +version = "22.12.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + [[package]] name = "certifi" -version = "2024.2.2" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, ] [[package]] @@ -82,91 +147,82 @@ files = [ [[package]] name = "contourpy" -version = "1.2.1" +version = "1.1.0" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" files = [ - {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"}, - {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"}, - {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"}, - {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"}, - {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"}, - {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"}, - {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"}, - {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, - {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, - {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, - {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, - {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, - {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, - {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, - {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"}, - {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"}, - {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"}, - {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"}, - {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"}, - {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"}, - {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, - {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, - {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, - {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, - {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, - {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, - {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, - {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"}, + {file = "contourpy-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89f06eff3ce2f4b3eb24c1055a26981bffe4e7264acd86f15b97e40530b794bc"}, + {file = "contourpy-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dffcc2ddec1782dd2f2ce1ef16f070861af4fb78c69862ce0aab801495dda6a3"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ae46595e22f93592d39a7eac3d638cda552c3e1160255258b695f7b58e5655"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17cfaf5ec9862bc93af1ec1f302457371c34e688fbd381f4035a06cd47324f48"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, + {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, + {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, + {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, + {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, + {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052cc634bf903c604ef1a00a5aa093c54f81a2612faedaa43295809ffdde885e"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9382a1c0bc46230fb881c36229bfa23d8c303b889b788b939365578d762b5c18"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, + {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, + {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, + {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, + {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, + {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62013a2cf68abc80dadfd2307299bfa8f5aa0dcaec5b2954caeb5fa094171103"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b6616375d7de55797d7a66ee7d087efe27f03d336c27cf1f32c02b8c1a5ac70"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, + {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, + {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, + {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, + {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, + {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f2931ed4741f98f74b410b16e5213f71dcccee67518970c42f64153ea9313b9"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30f511c05fab7f12e0b1b7730ebdc2ec8deedcfb505bc27eb570ff47c51a8f15"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, + {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, + {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, + {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, + {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, + {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, + {file = "contourpy-1.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a67259c2b493b00e5a4d0f7bfae51fb4b3371395e47d079a4446e9b0f4d70e76"}, + {file = "contourpy-1.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2b836d22bd2c7bb2700348e4521b25e077255ebb6ab68e351ab5aa91ca27e027"}, + {file = "contourpy-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084eaa568400cfaf7179b847ac871582199b1b44d5699198e9602ecbbb5f6104"}, + {file = "contourpy-1.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:911ff4fd53e26b019f898f32db0d4956c9d227d51338fb3b03ec72ff0084ee5f"}, + {file = "contourpy-1.1.0.tar.gz", hash = "sha256:e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21"}, ] [package.dependencies] -numpy = ">=1.20" +numpy = ">=1.16" [package.extras] bokeh = ["bokeh", "selenium"] -docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pillow"] +docs = ["furo", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.2.0)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] +test-no-images = ["pytest", "pytest-cov", "wurlitzer"] [[package]] name = "cycler" -version = "0.12.1" +version = "0.11.0" description = "Composable style cycles" optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, - {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, + {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, + {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, ] -[package.extras] -docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] -tests = ["pytest", "pytest-cov", "pytest-xdist"] - [[package]] name = "dateparser" -version = "1.2.0" +version = "1.1.8" description = "Date parsing library designed to parse dates from HTML pages" optional = false python-versions = ">=3.7" files = [ - {file = "dateparser-1.2.0-py2.py3-none-any.whl", hash = "sha256:0b21ad96534e562920a0083e97fd45fa959882d4162acc358705144520a35830"}, - {file = "dateparser-1.2.0.tar.gz", hash = "sha256:7975b43a4222283e0ae15be7b4999d08c9a70e2d378ac87385b1ccf2cffbbb30"}, + {file = "dateparser-1.1.8-py2.py3-none-any.whl", hash = "sha256:070b29b5bbf4b1ec2cd51c96ea040dc68a614de703910a91ad1abba18f9f379f"}, + {file = "dateparser-1.1.8.tar.gz", hash = "sha256:86b8b7517efcc558f085a142cdb7620f0921543fcabdb538c8a4c4001d8178e3"}, ] [package.dependencies] @@ -180,50 +236,15 @@ calendars = ["convertdate", "hijri-converter"] fasttext = ["fasttext"] langdetect = ["langdetect"] -[[package]] -name = "dnspython" -version = "2.6.1" -description = "DNS toolkit" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, - {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, -] - -[package.extras] -dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] -dnssec = ["cryptography (>=41)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] -doq = ["aioquic (>=0.9.25)"] -idna = ["idna (>=3.6)"] -trio = ["trio (>=0.23)"] -wmi = ["wmi (>=1.5.1)"] - -[[package]] -name = "email-validator" -version = "2.1.1" -description = "A robust email address syntax and deliverability validation library." -optional = false -python-versions = ">=3.8" -files = [ - {file = "email_validator-2.1.1-py3-none-any.whl", hash = "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"}, - {file = "email_validator-2.1.1.tar.gz", hash = "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84"}, -] - -[package.dependencies] -dnspython = ">=2.0.0" -idna = ">=2.0.0" - [[package]] name = "exceptiongroup" -version = "1.2.1" +version = "1.1.3" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, - {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, + {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, + {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, ] [package.extras] @@ -231,46 +252,22 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.111.0" +version = "0.103.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "fastapi-0.111.0-py3-none-any.whl", hash = "sha256:97ecbf994be0bcbdadedf88c3150252bed7b2087075ac99735403b1b76cc8fc0"}, - {file = "fastapi-0.111.0.tar.gz", hash = "sha256:b9db9dd147c91cb8b769f7183535773d8741dd46f9dc6676cd82eab510228cd7"}, + {file = "fastapi-0.103.0-py3-none-any.whl", hash = "sha256:61ab72c6c281205dd0cbaccf503e829a37e0be108d965ac223779a8479243665"}, + {file = "fastapi-0.103.0.tar.gz", hash = "sha256:4166732f5ddf61c33e9fa4664f73780872511e0598d4d5434b1816dc1e6d9421"}, ] [package.dependencies] -email_validator = ">=2.0.0" -fastapi-cli = ">=0.0.2" -httpx = ">=0.23.0" -jinja2 = ">=2.11.2" -orjson = ">=3.2.1" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -python-multipart = ">=0.0.7" -starlette = ">=0.37.2,<0.38.0" -typing-extensions = ">=4.8.0" -ujson = ">=4.0.1,<4.0.2 || >4.0.2,<4.1.0 || >4.1.0,<4.2.0 || >4.2.0,<4.3.0 || >4.3.0,<5.0.0 || >5.0.0,<5.1.0 || >5.1.0" -uvicorn = {version = ">=0.12.0", extras = ["standard"]} +starlette = ">=0.27.0,<0.28.0" +typing-extensions = ">=4.5.0" [package.extras] -all = ["email_validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] - -[[package]] -name = "fastapi-cli" -version = "0.0.3" -description = "Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀" -optional = false -python-versions = ">=3.8" -files = [ - {file = "fastapi_cli-0.0.3-py3-none-any.whl", hash = "sha256:ae233115f729945479044917d949095e829d2d84f56f55ce1ca17627872825a5"}, - {file = "fastapi_cli-0.0.3.tar.gz", hash = "sha256:3b6e4d2c4daee940fb8db59ebbfd60a72c4b962bcf593e263e4cc69da4ea3d7f"}, -] - -[package.dependencies] -fastapi = "*" -typer = ">=0.12.3" -uvicorn = {version = ">=0.15.0", extras = ["standard"]} +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "filetype" @@ -285,67 +282,59 @@ files = [ [[package]] name = "fonttools" -version = "4.51.0" +version = "4.42.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74"}, - {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308"}, - {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037"}, - {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716"}, - {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438"}, - {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039"}, - {file = "fonttools-4.51.0-cp310-cp310-win32.whl", hash = "sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77"}, - {file = "fonttools-4.51.0-cp310-cp310-win_amd64.whl", hash = "sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b"}, - {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74"}, - {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2"}, - {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f"}, - {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097"}, - {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0"}, - {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1"}, - {file = "fonttools-4.51.0-cp311-cp311-win32.whl", hash = "sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034"}, - {file = "fonttools-4.51.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1"}, - {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba"}, - {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc"}, - {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a"}, - {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2"}, - {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671"}, - {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5"}, - {file = "fonttools-4.51.0-cp312-cp312-win32.whl", hash = "sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15"}, - {file = "fonttools-4.51.0-cp312-cp312-win_amd64.whl", hash = "sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e"}, - {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e"}, - {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5"}, - {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e"}, - {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1"}, - {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14"}, - {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed"}, - {file = "fonttools-4.51.0-cp38-cp38-win32.whl", hash = "sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f"}, - {file = "fonttools-4.51.0-cp38-cp38-win_amd64.whl", hash = "sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7"}, - {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, - {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, - {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, - {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, + {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ed1a13a27f59d1fc1920394a7f596792e9d546c9ca5a044419dca70c37815d7c"}, + {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9b1ce7a45978b821a06d375b83763b27a3a5e8a2e4570b3065abad240a18760"}, + {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f720fa82a11c0f9042376fd509b5ed88dab7e3cd602eee63a1af08883b37342b"}, + {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db55cbaea02a20b49fefbd8e9d62bd481aaabe1f2301dabc575acc6b358874fa"}, + {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a35981d90feebeaef05e46e33e6b9e5b5e618504672ca9cd0ff96b171e4bfff"}, + {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:68a02bbe020dc22ee0540e040117535f06df9358106d3775e8817d826047f3fd"}, + {file = "fonttools-4.42.1-cp310-cp310-win32.whl", hash = "sha256:12a7c247d1b946829bfa2f331107a629ea77dc5391dfd34fdcd78efa61f354ca"}, + {file = "fonttools-4.42.1-cp310-cp310-win_amd64.whl", hash = "sha256:a398bdadb055f8de69f62b0fc70625f7cbdab436bbb31eef5816e28cab083ee8"}, + {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:689508b918332fb40ce117131633647731d098b1b10d092234aa959b4251add5"}, + {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e36344e48af3e3bde867a1ca54f97c308735dd8697005c2d24a86054a114a71"}, + {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19b7db825c8adee96fac0692e6e1ecd858cae9affb3b4812cdb9d934a898b29e"}, + {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:113337c2d29665839b7d90b39f99b3cac731f72a0eda9306165a305c7c31d341"}, + {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37983b6bdab42c501202500a2be3a572f50d4efe3237e0686ee9d5f794d76b35"}, + {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6ed2662a3d9c832afa36405f8748c250be94ae5dfc5283d668308391f2102861"}, + {file = "fonttools-4.42.1-cp311-cp311-win32.whl", hash = "sha256:179737095eb98332a2744e8f12037b2977f22948cf23ff96656928923ddf560a"}, + {file = "fonttools-4.42.1-cp311-cp311-win_amd64.whl", hash = "sha256:f2b82f46917d8722e6b5eafeefb4fb585d23babd15d8246c664cd88a5bddd19c"}, + {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:62f481ac772fd68901573956231aea3e4b1ad87b9b1089a61613a91e2b50bb9b"}, + {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2f806990160d1ce42d287aa419df3ffc42dfefe60d473695fb048355fe0c6a0"}, + {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db372213d39fa33af667c2aa586a0c1235e88e9c850f5dd5c8e1f17515861868"}, + {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d18fc642fd0ac29236ff88ecfccff229ec0386090a839dd3f1162e9a7944a40"}, + {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8708b98c278012ad267ee8a7433baeb809948855e81922878118464b274c909d"}, + {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c95b0724a6deea2c8c5d3222191783ced0a2f09bd6d33f93e563f6f1a4b3b3a4"}, + {file = "fonttools-4.42.1-cp38-cp38-win32.whl", hash = "sha256:4aa79366e442dbca6e2c8595645a3a605d9eeabdb7a094d745ed6106816bef5d"}, + {file = "fonttools-4.42.1-cp38-cp38-win_amd64.whl", hash = "sha256:acb47f6f8680de24c1ab65ebde39dd035768e2a9b571a07c7b8da95f6c8815fd"}, + {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb289b7a815638a7613d46bcf324c9106804725b2bb8ad913c12b6958ffc4ec"}, + {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:53eb5091ddc8b1199330bb7b4a8a2e7995ad5d43376cadce84523d8223ef3136"}, + {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46a0ec8adbc6ff13494eb0c9c2e643b6f009ce7320cf640de106fb614e4d4360"}, + {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cc7d685b8eeca7ae69dc6416833fbfea61660684b7089bca666067cb2937dcf"}, + {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:be24fcb80493b2c94eae21df70017351851652a37de514de553435b256b2f249"}, + {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:515607ec756d7865f23070682622c49d922901943697871fc292277cf1e71967"}, + {file = "fonttools-4.42.1-cp39-cp39-win32.whl", hash = "sha256:0eb79a2da5eb6457a6f8ab904838454accc7d4cccdaff1fd2bd3a0679ea33d64"}, + {file = "fonttools-4.42.1-cp39-cp39-win_amd64.whl", hash = "sha256:7286aed4ea271df9eab8d7a9b29e507094b51397812f7ce051ecd77915a6e26b"}, + {file = "fonttools-4.42.1-py3-none-any.whl", hash = "sha256:9398f244e28e0596e2ee6024f808b06060109e33ed38dcc9bded452fd9bbb853"}, + {file = "fonttools-4.42.1.tar.gz", hash = "sha256:c391cd5af88aacaf41dd7cfb96eeedfad297b5899a39e12f4c2c3706d0a3329d"}, ] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.0.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "pycairo", "scipy"] -lxml = ["lxml (>=4.0)"] +interpolatable = ["munkres", "scipy"] +lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=15.1.0)"] +unicode = ["unicodedata2 (>=15.0.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] @@ -361,88 +350,39 @@ files = [ [[package]] name = "httpcore" -version = "1.0.5" +version = "0.17.3" description = "A minimal low-level HTTP client." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"}, + {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"}, ] [package.dependencies] +anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" +sniffio = "==1.*" [package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] - -[[package]] -name = "httptools" -version = "0.6.1" -description = "A collection of framework independent HTTP protocol utils." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f"}, - {file = "httptools-0.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563"}, - {file = "httptools-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58"}, - {file = "httptools-0.6.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185"}, - {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142"}, - {file = "httptools-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658"}, - {file = "httptools-0.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b"}, - {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1"}, - {file = "httptools-0.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0"}, - {file = "httptools-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc"}, - {file = "httptools-0.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2"}, - {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837"}, - {file = "httptools-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d"}, - {file = "httptools-0.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3"}, - {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0"}, - {file = "httptools-0.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2"}, - {file = "httptools-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90"}, - {file = "httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503"}, - {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84"}, - {file = "httptools-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb"}, - {file = "httptools-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949"}, - {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3"}, - {file = "httptools-0.6.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb"}, - {file = "httptools-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97"}, - {file = "httptools-0.6.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3"}, - {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4"}, - {file = "httptools-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf"}, - {file = "httptools-0.6.1-cp38-cp38-win_amd64.whl", hash = "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084"}, - {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3"}, - {file = "httptools-0.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e"}, - {file = "httptools-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d"}, - {file = "httptools-0.6.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da"}, - {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81"}, - {file = "httptools-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a"}, - {file = "httptools-0.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e"}, - {file = "httptools-0.6.1.tar.gz", hash = "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a"}, -] - -[package.extras] -test = ["Cython (>=0.29.24,<0.30.0)"] [[package]] name = "httpx" -version = "0.27.0" +version = "0.24.1" description = "The next generation HTTP client." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, - {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, + {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"}, + {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"}, ] [package.dependencies] -anyio = "*" certifi = "*" -httpcore = "==1.*" +httpcore = ">=0.15.0,<0.18.0" idna = "*" sniffio = "*" @@ -454,49 +394,32 @@ socks = ["socksio (==1.*)"] [[package]] name = "idna" -version = "3.7" +version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, - {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] [[package]] name = "importlib-resources" -version = "6.4.0" +version = "6.0.1" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.4.0-py3-none-any.whl", hash = "sha256:50d10f043df931902d4194ea07ec57960f66a80449ff867bfe782b4c486ba78c"}, - {file = "importlib_resources-6.4.0.tar.gz", hash = "sha256:cdb2b453b8046ca4e3798eb1d84f3cce1446a0e8e7b5ef4efb600f19fc398145"}, + {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, + {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["jaraco.test (>=5.4)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-ruff (>=0.2.1)", "zipp (>=3.17)"] - -[[package]] -name = "jinja2" -version = "3.1.4" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "kiwisolver" @@ -613,13 +536,13 @@ files = [ [[package]] name = "loguru" -version = "0.7.2" +version = "0.7.0" description = "Python logging made (stupidly) simple" optional = false python-versions = ">=3.5" files = [ - {file = "loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb"}, - {file = "loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac"}, + {file = "loguru-0.7.0-py3-none-any.whl", hash = "sha256:b93aa30099fa6860d4727f1b81f8718e965bb96253fa190fab2077aaad6d15d3"}, + {file = "loguru-0.7.0.tar.gz", hash = "sha256:1612053ced6ae84d7959dd7d5e431a0532642237ec21f7fd83ac73fe539e03e1"}, ] [package.dependencies] @@ -627,7 +550,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.4.1)", "mypy (==v1.5.1)", "pre-commit (==3.4.0)", "pytest (==6.1.2)", "pytest (==7.4.0)", "pytest-cov (==2.12.1)", "pytest-cov (==4.1.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.0.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.3.0)", "tox (==3.27.1)", "tox (==4.11.0)"] +dev = ["Sphinx (==5.3.0)", "colorama (==0.4.5)", "colorama (==0.4.6)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v0.990)", "pre-commit (==3.2.1)", "pytest (==6.1.2)", "pytest (==7.2.1)", "pytest-cov (==2.12.1)", "pytest-cov (==4.0.0)", "pytest-mypy-plugins (==1.10.1)", "pytest-mypy-plugins (==1.9.3)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.2.0)", "tox (==3.27.1)", "tox (==4.4.6)"] [[package]] name = "markdown-it-py" @@ -653,110 +576,54 @@ profiling = ["gprof2dot"] rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] -[[package]] -name = "markupsafe" -version = "2.1.5" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, -] - [[package]] name = "matplotlib" -version = "3.8.4" +version = "3.7.2" description = "Python plotting package" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" files = [ - {file = "matplotlib-3.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014"}, - {file = "matplotlib-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106"}, - {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10"}, - {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0"}, - {file = "matplotlib-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef"}, - {file = "matplotlib-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338"}, - {file = "matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661"}, - {file = "matplotlib-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c"}, - {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa"}, - {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71"}, - {file = "matplotlib-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b"}, - {file = "matplotlib-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae"}, - {file = "matplotlib-3.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616"}, - {file = "matplotlib-3.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732"}, - {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb"}, - {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30"}, - {file = "matplotlib-3.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25"}, - {file = "matplotlib-3.8.4-cp312-cp312-win_amd64.whl", hash = "sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a"}, - {file = "matplotlib-3.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6"}, - {file = "matplotlib-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67"}, - {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc"}, - {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9"}, - {file = "matplotlib-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54"}, - {file = "matplotlib-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94"}, - {file = "matplotlib-3.8.4.tar.gz", hash = "sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, + {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, + {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, + {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, + {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, + {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, + {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, + {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, + {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, + {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, ] [package.dependencies] @@ -764,11 +631,11 @@ contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" importlib-resources = {version = ">=3.2.0", markers = "python_version < \"3.10\""} -kiwisolver = ">=1.3.1" -numpy = ">=1.21" +kiwisolver = ">=1.0.1" +numpy = ">=1.20" packaging = ">=20.0" -pillow = ">=8" -pyparsing = ">=2.3.1" +pillow = ">=6.2.0" +pyparsing = ">=2.3.1,<3.1" python-dateutil = ">=2.7" [[package]] @@ -782,152 +649,111 @@ files = [ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, ] +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + [[package]] name = "numpy" -version = "1.26.4" +version = "1.24.4" description = "Fundamental package for array computing in Python" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" files = [ - {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, - {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, - {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, - {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, - {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, - {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, - {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, - {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, - {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, - {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, - {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, - {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, - {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, - {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, - {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, - {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, - {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, - {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, - {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, - {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, - {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, - {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, - {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, + {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, + {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, + {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, + {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, + {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, + {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, + {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, + {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, + {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, ] [[package]] name = "opencv-python-headless" -version = "4.9.0.80" +version = "4.8.0.76" description = "Wrapper package for OpenCV python bindings." optional = false python-versions = ">=3.6" files = [ - {file = "opencv-python-headless-4.9.0.80.tar.gz", hash = "sha256:71a4cd8cf7c37122901d8e81295db7fb188730e33a0e40039a4e59c1030b0958"}, - {file = "opencv_python_headless-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:2ea8a2edc4db87841991b2fbab55fc07b97ecb602e0f47d5d485bd75cee17c1a"}, - {file = "opencv_python_headless-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:e0ee54e27be493e8f7850847edae3128e18b540dac1d7b2e4001b8944e11e1c6"}, - {file = "opencv_python_headless-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57ce2865e8fec431c6f97a81e9faaf23fa5be61011d0a75ccf47a3c0d65fa73d"}, - {file = "opencv_python_headless-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:976656362d68d9f40a5c66f83901430538002465f7db59142784f3893918f3df"}, - {file = "opencv_python_headless-4.9.0.80-cp37-abi3-win32.whl", hash = "sha256:11e3849d83e6651d4e7699aadda9ec7ed7c38957cbbcb99db074f2a2d2de9670"}, - {file = "opencv_python_headless-4.9.0.80-cp37-abi3-win_amd64.whl", hash = "sha256:a8056c2cb37cd65dfcdf4153ca16f7362afcf3a50d600d6bb69c660fc61ee29c"}, + {file = "opencv-python-headless-4.8.0.76.tar.gz", hash = "sha256:bc15726187dae26d8a08777faf6bc71d38f20c785c102677f58ba0e935003afb"}, + {file = "opencv_python_headless-4.8.0.76-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:f85d2e3b9d952db35d31f9db8882d073c903921b72b8db1cfed8bbc75e8d3e63"}, + {file = "opencv_python_headless-4.8.0.76-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:8ee3bf1c9086493c340c6a87899f1c7778d729de92bce8560b8c31ab8a9cdf79"}, + {file = "opencv_python_headless-4.8.0.76-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c675b8dec6298ba6a1eec2ce24077a393b4236a043f68dfacb06bf594354ce06"}, + {file = "opencv_python_headless-4.8.0.76-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:220d2e292fa45ef0582aab730460bbc15cfe61f2089208167a372ccf76f01e21"}, + {file = "opencv_python_headless-4.8.0.76-cp37-abi3-win32.whl", hash = "sha256:df0608de207ae9b094ad9eaf1a475cf6e9a069fb12cd289d4a18cefdab2f8aa8"}, + {file = "opencv_python_headless-4.8.0.76-cp37-abi3-win_amd64.whl", hash = "sha256:9c094faf6ec7bd360244647b26ebdf8f54edec1d9292cb9179fff9badcca7be8"}, ] [package.dependencies] numpy = [ - {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, - {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.17.3", markers = "(platform_system != \"Darwin\" and platform_system != \"Linux\") and python_version >= \"3.8\" and python_version < \"3.9\" or platform_system != \"Darwin\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_machine != \"aarch64\" or platform_machine != \"arm64\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_system != \"Linux\" or (platform_machine != \"arm64\" and platform_machine != \"aarch64\") and python_version >= \"3.8\" and python_version < \"3.9\""}, ] [[package]] -name = "orjson" -version = "3.10.3" -description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +name = "packaging" +version = "23.1" +description = "Core utilities for Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, - {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, - {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, - {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, - {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, - {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, - {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, - {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, - {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, - {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, - {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, - {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, - {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, - {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, - {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, - {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] [[package]] -name = "packaging" -version = "24.0" -description = "Core utilities for Python packages" +name = "pathspec" +version = "0.11.2" +description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] [[package]] name = "pil-utils" -version = "0.1.10" +version = "0.1.8" description = "A simple PIL wrapper and text-to-image tool" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "pil_utils-0.1.10-py3-none-any.whl", hash = "sha256:ff9459d7b4336e9b07a5e11e06b12a6e477ae68eae0124ac5710b28ae5d4d6d8"}, - {file = "pil_utils-0.1.10.tar.gz", hash = "sha256:4e6d08cc39cba3f65eb17847662d2c1e68e2ac12503e4a73e57d980b2dc77cda"}, + {file = "pil_utils-0.1.8-py3-none-any.whl", hash = "sha256:22b0ed4eeb532386fb61658795c88c77919440f6169ccea76428c83bb0257f72"}, + {file = "pil_utils-0.1.8.tar.gz", hash = "sha256:6223cb1451449a4c9ebc48d6a9e3705711ecf7c120db97d9cd4ca2bc9e0f0618"}, ] [package.dependencies] @@ -936,108 +762,106 @@ fonttools = ">=4.0.0,<5.0.0" matplotlib = ">=3.0.0,<4.0.0" numpy = ">=1.20.0,<2.0.0" opencv-python-headless = ">=4.0.0,<5.0.0" -Pillow = ">=10.0.0,<11.0.0" +Pillow = ">=9.2.0,<11.0.0" [[package]] name = "pillow" -version = "10.3.0" +version = "10.0.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, - {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, - {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, - {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, - {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, - {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, - {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, - {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, - {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, - {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, - {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, - {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, - {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, - {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, + {file = "Pillow-10.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f62406a884ae75fb2f818694469519fb685cc7eaff05d3451a9ebe55c646891"}, + {file = "Pillow-10.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d5db32e2a6ccbb3d34d87c87b432959e0db29755727afb37290e10f6e8e62614"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf4392b77bdc81f36e92d3a07a5cd072f90253197f4a52a55a8cec48a12483b"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:520f2a520dc040512699f20fa1c363eed506e94248d71f85412b625026f6142c"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:8c11160913e3dd06c8ffdb5f233a4f254cb449f4dfc0f8f4549eda9e542c93d1"}, + {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a74ba0c356aaa3bb8e3eb79606a87669e7ec6444be352870623025d75a14a2bf"}, + {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d0dae4cfd56969d23d94dc8e89fb6a217be461c69090768227beb8ed28c0a3"}, + {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22c10cc517668d44b211717fd9775799ccec4124b9a7f7b3635fc5386e584992"}, + {file = "Pillow-10.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:dffe31a7f47b603318c609f378ebcd57f1554a3a6a8effbc59c3c69f804296de"}, + {file = "Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485"}, + {file = "Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ed64f9ca2f0a95411e88a4efbd7a29e5ce2cea36072c53dd9d26d9c76f753b3"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b6eb5502f45a60a3f411c63187db83a3d3107887ad0d036c13ce836f8a36f1d"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd"}, + {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd25d2a9d2b36fcb318882481367956d2cf91329f6892fe5d385c346c0649629"}, + {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3b08d4cc24f471b2c8ca24ec060abf4bebc6b144cb89cba638c720546b1cf538"}, + {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737a602fbd82afd892ca746392401b634e278cb65d55c4b7a8f48e9ef8d008d"}, + {file = "Pillow-10.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f"}, + {file = "Pillow-10.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:bc2ec7c7b5d66b8ec9ce9f720dbb5fa4bace0f545acd34870eff4a369b44bf37"}, + {file = "Pillow-10.0.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:d80cf684b541685fccdd84c485b31ce73fc5c9b5d7523bf1394ce134a60c6883"}, + {file = "Pillow-10.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76de421f9c326da8f43d690110f0e79fe3ad1e54be811545d7d91898b4c8493e"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ff539a12457809666fef6624684c008e00ff6bf455b4b89fd00a140eecd640"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce543ed15570eedbb85df19b0a1a7314a9c8141a36ce089c0a894adbfccb4568"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:685ac03cc4ed5ebc15ad5c23bc555d68a87777586d970c2c3e216619a5476223"}, + {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d72e2ecc68a942e8cf9739619b7f408cc7b272b279b56b2c83c6123fcfa5cdff"}, + {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d50b6aec14bc737742ca96e85d6d0a5f9bfbded018264b3b70ff9d8c33485551"}, + {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:00e65f5e822decd501e374b0650146063fbb30a7264b4d2744bdd7b913e0cab5"}, + {file = "Pillow-10.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:f31f9fdbfecb042d046f9d91270a0ba28368a723302786c0009ee9b9f1f60199"}, + {file = "Pillow-10.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:1ce91b6ec08d866b14413d3f0bbdea7e24dfdc8e59f562bb77bc3fe60b6144ca"}, + {file = "Pillow-10.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:349930d6e9c685c089284b013478d6f76e3a534e36ddfa912cde493f235372f3"}, + {file = "Pillow-10.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3a684105f7c32488f7153905a4e3015a3b6c7182e106fe3c37fbb5ef3e6994c3"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4f69b3700201b80bb82c3a97d5e9254084f6dd5fb5b16fc1a7b974260f89f43"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f07ea8d2f827d7d2a49ecf1639ec02d75ffd1b88dcc5b3a61bbb37a8759ad8d"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:040586f7d37b34547153fa383f7f9aed68b738992380ac911447bb78f2abe530"}, + {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:f88a0b92277de8e3ca715a0d79d68dc82807457dae3ab8699c758f07c20b3c51"}, + {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c7cf14a27b0d6adfaebb3ae4153f1e516df54e47e42dcc073d7b3d76111a8d86"}, + {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3400aae60685b06bb96f99a21e1ada7bc7a413d5f49bce739828ecd9391bb8f7"}, + {file = "Pillow-10.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbc02381779d412145331789b40cc7b11fdf449e5d94f6bc0b080db0a56ea3f0"}, + {file = "Pillow-10.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9211e7ad69d7c9401cfc0e23d49b69ca65ddd898976d660a2fa5904e3d7a9baa"}, + {file = "Pillow-10.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:faaf07ea35355b01a35cb442dd950d8f1bb5b040a7787791a535de13db15ed90"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f72a021fbb792ce98306ffb0c348b3c9cb967dce0f12a49aa4c3d3fdefa967"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f7c16705f44e0504a3a2a14197c1f0b32a95731d251777dcb060aa83022cb2d"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:76edb0a1fa2b4745fb0c99fb9fb98f8b180a1bbceb8be49b087e0b21867e77d3"}, + {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:368ab3dfb5f49e312231b6f27b8820c823652b7cd29cfbd34090565a015e99ba"}, + {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:608bfdee0d57cf297d32bcbb3c728dc1da0907519d1784962c5f0c68bb93e5a3"}, + {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5c6e3df6bdd396749bafd45314871b3d0af81ff935b2d188385e970052091017"}, + {file = "Pillow-10.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:7be600823e4c8631b74e4a0d38384c73f680e6105a7d3c6824fcf226c178c7e6"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:92be919bbc9f7d09f7ae343c38f5bb21c973d2576c1d45600fce4b74bafa7ac0"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8182b523b2289f7c415f589118228d30ac8c355baa2f3194ced084dac2dbba"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:38250a349b6b390ee6047a62c086d3817ac69022c127f8a5dc058c31ccef17f3"}, + {file = "Pillow-10.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:88af2003543cc40c80f6fca01411892ec52b11021b3dc22ec3bc9d5afd1c5334"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c189af0545965fa8d3b9613cfdb0cd37f9d71349e0f7750e1fd704648d475ed2"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce7b031a6fc11365970e6a5686d7ba8c63e4c1cf1ea143811acbb524295eabed"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db24668940f82321e746773a4bc617bfac06ec831e5c88b643f91f122a785684"}, + {file = "Pillow-10.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:efe8c0681042536e0d06c11f48cebe759707c9e9abf880ee213541c5b46c5bf3"}, + {file = "Pillow-10.0.0.tar.gz", hash = "sha256:9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] -fpx = ["olefile"] -mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions"] -xmp = ["defusedxml"] + +[[package]] +name = "platformdirs" +version = "3.10.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, +] + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] [[package]] name = "pydantic" -version = "2.7.1" +version = "2.3.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"}, - {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"}, + {file = "pydantic-2.3.0-py3-none-any.whl", hash = "sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81"}, + {file = "pydantic-2.3.0.tar.gz", hash = "sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.18.2" +pydantic-core = "2.6.3" typing-extensions = ">=4.6.1" [package.extras] @@ -1045,90 +869,117 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.18.2" -description = "Core functionality for Pydantic validation and serialization" +version = "2.6.3" +description = "" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"}, - {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af"}, - {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857"}, - {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563"}, - {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38"}, - {file = "pydantic_core-2.18.2-cp310-none-win32.whl", hash = "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027"}, - {file = "pydantic_core-2.18.2-cp310-none-win_amd64.whl", hash = "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543"}, - {file = "pydantic_core-2.18.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3"}, - {file = "pydantic_core-2.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6"}, - {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c"}, - {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0"}, - {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664"}, - {file = "pydantic_core-2.18.2-cp311-none-win32.whl", hash = "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e"}, - {file = "pydantic_core-2.18.2-cp311-none-win_amd64.whl", hash = "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3"}, - {file = "pydantic_core-2.18.2-cp311-none-win_arm64.whl", hash = "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d"}, - {file = "pydantic_core-2.18.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"}, - {file = "pydantic_core-2.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72"}, - {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c"}, - {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241"}, - {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3"}, - {file = "pydantic_core-2.18.2-cp312-none-win32.whl", hash = "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038"}, - {file = "pydantic_core-2.18.2-cp312-none-win_amd64.whl", hash = "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438"}, - {file = "pydantic_core-2.18.2-cp312-none-win_arm64.whl", hash = "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec"}, - {file = "pydantic_core-2.18.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439"}, - {file = "pydantic_core-2.18.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70"}, - {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b"}, - {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761"}, - {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788"}, - {file = "pydantic_core-2.18.2-cp38-none-win32.whl", hash = "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350"}, - {file = "pydantic_core-2.18.2-cp38-none-win_amd64.whl", hash = "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e"}, - {file = "pydantic_core-2.18.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8"}, - {file = "pydantic_core-2.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0"}, - {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4"}, - {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399"}, - {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b"}, - {file = "pydantic_core-2.18.2-cp39-none-win32.whl", hash = "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e"}, - {file = "pydantic_core-2.18.2-cp39-none-win_amd64.whl", hash = "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b"}, - {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae"}, - {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374"}, - {file = "pydantic_core-2.18.2.tar.gz", hash = "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e"}, + {file = "pydantic_core-2.6.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad"}, + {file = "pydantic_core-2.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728"}, + {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb"}, + {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd"}, + {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e"}, + {file = "pydantic_core-2.6.3-cp310-none-win32.whl", hash = "sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7"}, + {file = "pydantic_core-2.6.3-cp310-none-win_amd64.whl", hash = "sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad"}, + {file = "pydantic_core-2.6.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973"}, + {file = "pydantic_core-2.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da"}, + {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b"}, + {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6"}, + {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50"}, + {file = "pydantic_core-2.6.3-cp311-none-win32.whl", hash = "sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8"}, + {file = "pydantic_core-2.6.3-cp311-none-win_amd64.whl", hash = "sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950"}, + {file = "pydantic_core-2.6.3-cp311-none-win_arm64.whl", hash = "sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2"}, + {file = "pydantic_core-2.6.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5"}, + {file = "pydantic_core-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5"}, + {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282"}, + {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d"}, + {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa"}, + {file = "pydantic_core-2.6.3-cp312-none-win32.whl", hash = "sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1"}, + {file = "pydantic_core-2.6.3-cp312-none-win_amd64.whl", hash = "sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881"}, + {file = "pydantic_core-2.6.3-cp312-none-win_arm64.whl", hash = "sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58"}, + {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6"}, + {file = "pydantic_core-2.6.3-cp37-none-win32.whl", hash = "sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b"}, + {file = "pydantic_core-2.6.3-cp37-none-win_amd64.whl", hash = "sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525"}, + {file = "pydantic_core-2.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b"}, + {file = "pydantic_core-2.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db"}, + {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170"}, + {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec"}, + {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb"}, + {file = "pydantic_core-2.6.3-cp38-none-win32.whl", hash = "sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc"}, + {file = "pydantic_core-2.6.3-cp38-none-win_amd64.whl", hash = "sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378"}, + {file = "pydantic_core-2.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465"}, + {file = "pydantic_core-2.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f"}, + {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3"}, + {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76"}, + {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef"}, + {file = "pydantic_core-2.6.3-cp39-none-win32.whl", hash = "sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a"}, + {file = "pydantic_core-2.6.3-cp39-none-win_amd64.whl", hash = "sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b"}, + {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7"}, + {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483"}, + {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d"}, + {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149"}, + {file = "pydantic_core-2.6.3.tar.gz", hash = "sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7"}, ] [package.dependencies] @@ -1136,27 +987,27 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pygments" -version = "2.18.0" +version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, ] [package.extras] -windows-terminal = ["colorama (>=0.4.6)"] +plugins = ["importlib-metadata"] [[package]] name = "pyparsing" -version = "3.1.2" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, - {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] [package.extras] @@ -1164,234 +1015,159 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "python-dateutil" -version = "2.9.0.post0" +version = "2.8.2" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, - {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] [package.dependencies] six = ">=1.5" -[[package]] -name = "python-dotenv" -version = "1.0.1" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, - {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - [[package]] name = "python-multipart" -version = "0.0.9" +version = "0.0.6" description = "A streaming multipart parser for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, - {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, + {file = "python_multipart-0.0.6-py3-none-any.whl", hash = "sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18"}, + {file = "python_multipart-0.0.6.tar.gz", hash = "sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132"}, ] [package.extras] -dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] +dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatch", "invoke (==1.7.3)", "more-itertools (==4.3.0)", "pbr (==4.3.0)", "pluggy (==1.0.0)", "py (==1.11.0)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-timeout (==2.1.0)", "pyyaml (==5.1)"] [[package]] name = "pytz" -version = "2024.1" +version = "2023.3" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.1" -description = "YAML parser and emitter for Python" -optional = false -python-versions = ">=3.6" -files = [ - {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, - {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, - {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, - {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, - {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, - {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, - {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, - {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, - {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, - {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, - {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, - {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, - {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, - {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, - {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, - {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, - {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, - {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, - {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, - {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, - {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, - {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, - {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, - {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, + {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, + {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, ] [[package]] name = "regex" -version = "2024.5.10" +version = "2023.8.8" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.8" +python-versions = ">=3.6" files = [ - {file = "regex-2024.5.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eda3dd46df535da787ffb9036b5140f941ecb91701717df91c9daf64cabef953"}, - {file = "regex-2024.5.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d5bd666466c8f00a06886ce1397ba8b12371c1f1c6d1bef11013e9e0a1464a8"}, - {file = "regex-2024.5.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32e5f3b8e32918bfbdd12eca62e49ab3031125c454b507127ad6ecbd86e62fca"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:534efd2653ebc4f26fc0e47234e53bf0cb4715bb61f98c64d2774a278b58c846"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:193b7c6834a06f722f0ce1ba685efe80881de7c3de31415513862f601097648c"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:160ba087232c5c6e2a1e7ad08bd3a3f49b58c815be0504d8c8aacfb064491cd8"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:951be1eae7b47660412dc4938777a975ebc41936d64e28081bf2e584b47ec246"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8a0f0ab5453e409586b11ebe91c672040bc804ca98d03a656825f7890cbdf88"}, - {file = "regex-2024.5.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9e6d4d6ae1827b2f8c7200aaf7501c37cf3f3896c86a6aaf2566448397c823dd"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:161a206c8f3511e2f5fafc9142a2cc25d7fe9a1ec5ad9b4ad2496a7c33e1c5d2"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:44b3267cea873684af022822195298501568ed44d542f9a2d9bebc0212e99069"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:560278c9975694e1f0bc50da187abf2cdc1e4890739ea33df2bc4a85eeef143e"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:70364a097437dd0a90b31cd77f09f7387ad9ac60ef57590971f43b7fca3082a5"}, - {file = "regex-2024.5.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:42be5de7cc8c1edac55db92d82b68dc8e683b204d6f5414c5a51997a323d7081"}, - {file = "regex-2024.5.10-cp310-cp310-win32.whl", hash = "sha256:9a8625849387b9d558d528e263ecc9c0fbde86cfa5c2f0eef43fff480ae24d71"}, - {file = "regex-2024.5.10-cp310-cp310-win_amd64.whl", hash = "sha256:903350bf44d7e4116b4d5898b30b15755d61dcd3161e3413a49c7db76f0bee5a"}, - {file = "regex-2024.5.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bf9596cba92ce7b1fd32c7b07c6e3212c7eed0edc271757e48bfcd2b54646452"}, - {file = "regex-2024.5.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45cc13d398b6359a7708986386f72bd156ae781c3e83a68a6d4cee5af04b1ce9"}, - {file = "regex-2024.5.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad45f3bccfcb00868f2871dce02a755529838d2b86163ab8a246115e80cfb7d6"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33d19f0cde6838c81acffff25c7708e4adc7dd02896c9ec25c3939b1500a1778"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0a9f89d7db5ef6bdf53e5cc8e6199a493d0f1374b3171796b464a74ebe8e508a"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c6c71cf92b09e5faa72ea2c68aa1f61c9ce11cb66fdc5069d712f4392ddfd00"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7467ad8b0eac0b28e52679e972b9b234b3de0ea5cee12eb50091d2b68145fe36"}, - {file = "regex-2024.5.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc0db93ad039fc2fe32ccd3dd0e0e70c4f3d6e37ae83f0a487e1aba939bd2fbd"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fa9335674d7c819674467c7b46154196c51efbaf5f5715187fd366814ba3fa39"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7dda3091838206969c2b286f9832dff41e2da545b99d1cfaea9ebd8584d02708"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:504b5116e2bd1821efd815941edff7535e93372a098e156bb9dffde30264e798"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:91b53dea84415e8115506cc62e441a2b54537359c63d856d73cb1abe05af4c9a"}, - {file = "regex-2024.5.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a3903128f9e17a500618e80c68165c78c741ebb17dd1a0b44575f92c3c68b02"}, - {file = "regex-2024.5.10-cp311-cp311-win32.whl", hash = "sha256:236cace6c1903effd647ed46ce6dd5d76d54985fc36dafc5256032886736c85d"}, - {file = "regex-2024.5.10-cp311-cp311-win_amd64.whl", hash = "sha256:12446827f43c7881decf2c126762e11425de5eb93b3b0d8b581344c16db7047a"}, - {file = "regex-2024.5.10-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:14905ed75c7a6edf423eb46c213ed3f4507c38115f1ed3c00f4ec9eafba50e58"}, - {file = "regex-2024.5.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4fad420b14ae1970a1f322e8ae84a1d9d89375eb71e1b504060ab2d1bfe68f3c"}, - {file = "regex-2024.5.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c46a76a599fcbf95f98755275c5527304cc4f1bb69919434c1e15544d7052910"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0faecb6d5779753a6066a3c7a0471a8d29fe25d9981ca9e552d6d1b8f8b6a594"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aab65121229c2ecdf4a31b793d99a6a0501225bd39b616e653c87b219ed34a49"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:50e7e96a527488334379e05755b210b7da4a60fc5d6481938c1fa053e0c92184"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba034c8db4b264ef1601eb33cd23d87c5013b8fb48b8161debe2e5d3bd9156b0"}, - {file = "regex-2024.5.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:031219782d97550c2098d9a68ce9e9eaefe67d2d81d8ff84c8354f9c009e720c"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62b5f7910b639f3c1d122d408421317c351e213ca39c964ad4121f27916631c6"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cd832bd9b6120d6074f39bdfbb3c80e416848b07ac72910f1c7f03131a6debc3"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:e91b1976358e17197157b405cab408a5f4e33310cda211c49fc6da7cffd0b2f0"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:571452362d552de508c37191b6abbbb660028b8b418e2d68c20779e0bc8eaaa8"}, - {file = "regex-2024.5.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5253dcb0bfda7214523de58b002eb0090cb530d7c55993ce5f6d17faf953ece7"}, - {file = "regex-2024.5.10-cp312-cp312-win32.whl", hash = "sha256:2f30a5ab8902f93930dc6f627c4dd5da2703333287081c85cace0fc6e21c25af"}, - {file = "regex-2024.5.10-cp312-cp312-win_amd64.whl", hash = "sha256:3799e36d60a35162bb35b2246d8bb012192b7437dff807ef79c14e7352706306"}, - {file = "regex-2024.5.10-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bbdc5db2c98ac2bf1971ffa1410c87ca7a15800415f788971e8ba8520fc0fda9"}, - {file = "regex-2024.5.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6ccdeef4584450b6f0bddd5135354908dacad95425fcb629fe36d13e48b60f32"}, - {file = "regex-2024.5.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:29d839829209f3c53f004e1de8c3113efce6d98029f044fa5cfee666253ee7e6"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0709ba544cf50bd5cb843df4b8bb6701bae2b70a8e88da9add8386cbca5c1385"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:972b49f2fe1047b9249c958ec4fa1bdd2cf8ce305dc19d27546d5a38e57732d8"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9cdbb1998da94607d5eec02566b9586f0e70d6438abf1b690261aac0edda7ab6"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7c8ee4861d9ef5b1120abb75846828c811f932d63311596ad25fa168053e00"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d35d4cc9270944e95f9c88af757b0c9fc43f396917e143a5756608462c5223b"}, - {file = "regex-2024.5.10-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8722f72068b3e1156a4b2e1afde6810f1fc67155a9fa30a4b9d5b4bc46f18fb0"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:696639a73ca78a380acfaa0a1f6dd8220616a99074c05bba9ba8bb916914b224"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea057306ab469130167014b662643cfaed84651c792948891d003cf0039223a5"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:b43b78f9386d3d932a6ce5af4b45f393d2e93693ee18dc4800d30a8909df700e"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c43395a3b7cc9862801a65c6994678484f186ce13c929abab44fb8a9e473a55a"}, - {file = "regex-2024.5.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0bc94873ba11e34837bffd7e5006703abeffc4514e2f482022f46ce05bd25e67"}, - {file = "regex-2024.5.10-cp38-cp38-win32.whl", hash = "sha256:1118ba9def608250250f4b3e3f48c62f4562ba16ca58ede491b6e7554bfa09ff"}, - {file = "regex-2024.5.10-cp38-cp38-win_amd64.whl", hash = "sha256:458d68d34fb74b906709735c927c029e62f7d06437a98af1b5b6258025223210"}, - {file = "regex-2024.5.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:15e593386ec6331e0ab4ac0795b7593f02ab2f4b30a698beb89fbdc34f92386a"}, - {file = "regex-2024.5.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ca23b41355ba95929e9505ee04e55495726aa2282003ed9b012d86f857d3e49b"}, - {file = "regex-2024.5.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2c8982ee19ccecabbaeac1ba687bfef085a6352a8c64f821ce2f43e6d76a9298"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7117cb7d6ac7f2e985f3d18aa8a1728864097da1a677ffa69e970ca215baebf1"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66421f8878a0c82fc0c272a43e2121c8d4c67cb37429b764f0d5ad70b82993b"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:224a9269f133564109ce668213ef3cb32bc72ccf040b0b51c72a50e569e9dc9e"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab98016541543692a37905871a5ffca59b16e08aacc3d7d10a27297b443f572d"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51d27844763c273a122e08a3e86e7aefa54ee09fb672d96a645ece0454d8425e"}, - {file = "regex-2024.5.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:853cc36e756ff673bf984e9044ccc8fad60b95a748915dddeab9488aea974c73"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4e7eaf9df15423d07b6050fb91f86c66307171b95ea53e2d87a7993b6d02c7f7"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:169fd0acd7a259f58f417e492e93d0e15fc87592cd1e971c8c533ad5703b5830"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:334b79ce9c08f26b4659a53f42892793948a613c46f1b583e985fd5a6bf1c149"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f03b1dbd4d9596dd84955bb40f7d885204d6aac0d56a919bb1e0ff2fb7e1735a"}, - {file = "regex-2024.5.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfa6d61a76c77610ba9274c1a90a453062bdf6887858afbe214d18ad41cf6bde"}, - {file = "regex-2024.5.10-cp39-cp39-win32.whl", hash = "sha256:249fbcee0a277c32a3ce36d8e36d50c27c968fdf969e0fbe342658d4e010fbc8"}, - {file = "regex-2024.5.10-cp39-cp39-win_amd64.whl", hash = "sha256:0ce56a923f4c01d7568811bfdffe156268c0a7aae8a94c902b92fe34c4bde785"}, - {file = "regex-2024.5.10.tar.gz", hash = "sha256:304e7e2418146ae4d0ef0e9ffa28f881f7874b45b4994cc2279b21b6e7ae50c8"}, + {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, + {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, + {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, + {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, + {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, + {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, + {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, + {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, + {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, + {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, + {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, + {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, + {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, + {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, + {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, + {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, + {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, + {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, + {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, + {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, + {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, + {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, + {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, ] [[package]] name = "rich" -version = "13.7.1" +version = "13.5.2" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, - {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, + {file = "rich-13.5.2-py3-none-any.whl", hash = "sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808"}, + {file = "rich-13.5.2.tar.gz", hash = "sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39"}, ] [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] -[[package]] -name = "shellingham" -version = "1.5.4" -description = "Tool to Detect Surrounding Shell" -optional = false -python-versions = ">=3.7" -files = [ - {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, - {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, -] - [[package]] name = "six" version = "1.16.0" @@ -1405,24 +1181,24 @@ files = [ [[package]] name = "sniffio" -version = "1.3.1" +version = "1.3.0" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, + {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, + {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, ] [[package]] name = "starlette" -version = "0.37.2" +version = "0.27.0" description = "The little ASGI library that shines." optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "starlette-0.37.2-py3-none-any.whl", hash = "sha256:6fe59f29268538e5d0d182f2791a479a0c64638e6935d1c6989e63fb2699c6ee"}, - {file = "starlette-0.37.2.tar.gz", hash = "sha256:9af890290133b79fc3db55474ade20f6220a364a0402e0b556e7cd5e1e093823"}, + {file = "starlette-0.27.0-py3-none-any.whl", hash = "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91"}, + {file = "starlette-0.27.0.tar.gz", hash = "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75"}, ] [package.dependencies] @@ -1430,7 +1206,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] [[package]] name = "toml" @@ -1444,386 +1220,75 @@ files = [ ] [[package]] -name = "typer" -version = "0.12.3" -description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" optional = false python-versions = ">=3.7" files = [ - {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"}, - {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"}, + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -[package.dependencies] -click = ">=8.0.0" -rich = ">=10.11.0" -shellingham = ">=1.3.0" -typing-extensions = ">=3.7.4.3" - [[package]] name = "typing-extensions" -version = "4.11.0" -description = "Backported and Experimental Type Hints for Python 3.8+" +version = "4.7.1" +description = "Backported and Experimental Type Hints for Python 3.7+" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] [[package]] name = "tzdata" -version = "2024.1" +version = "2023.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, ] [[package]] name = "tzlocal" -version = "5.2" +version = "5.0.1" description = "tzinfo object for the local timezone" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, - {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, + {file = "tzlocal-5.0.1-py3-none-any.whl", hash = "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f"}, + {file = "tzlocal-5.0.1.tar.gz", hash = "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803"}, ] [package.dependencies] +"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] - -[[package]] -name = "ujson" -version = "5.10.0" -description = "Ultra fast JSON encoder and decoder for Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd"}, - {file = "ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf"}, - {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6"}, - {file = "ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569"}, - {file = "ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770"}, - {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1"}, - {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5"}, - {file = "ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51"}, - {file = "ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518"}, - {file = "ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f"}, - {file = "ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00"}, - {file = "ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126"}, - {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8"}, - {file = "ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b"}, - {file = "ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9"}, - {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f"}, - {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4"}, - {file = "ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1"}, - {file = "ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f"}, - {file = "ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720"}, - {file = "ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5"}, - {file = "ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e"}, - {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043"}, - {file = "ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1"}, - {file = "ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3"}, - {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21"}, - {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2"}, - {file = "ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e"}, - {file = "ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e"}, - {file = "ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc"}, - {file = "ujson-5.10.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:618efd84dc1acbd6bff8eaa736bb6c074bfa8b8a98f55b61c38d4ca2c1f7f287"}, - {file = "ujson-5.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38d5d36b4aedfe81dfe251f76c0467399d575d1395a1755de391e58985ab1c2e"}, - {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67079b1f9fb29ed9a2914acf4ef6c02844b3153913eb735d4bf287ee1db6e557"}, - {file = "ujson-5.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7d0e0ceeb8fe2468c70ec0c37b439dd554e2aa539a8a56365fd761edb418988"}, - {file = "ujson-5.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59e02cd37bc7c44d587a0ba45347cc815fb7a5fe48de16bf05caa5f7d0d2e816"}, - {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2a890b706b64e0065f02577bf6d8ca3b66c11a5e81fb75d757233a38c07a1f20"}, - {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:621e34b4632c740ecb491efc7f1fcb4f74b48ddb55e65221995e74e2d00bbff0"}, - {file = "ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f"}, - {file = "ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165"}, - {file = "ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539"}, - {file = "ujson-5.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a984a3131da7f07563057db1c3020b1350a3e27a8ec46ccbfbf21e5928a43050"}, - {file = "ujson-5.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73814cd1b9db6fc3270e9d8fe3b19f9f89e78ee9d71e8bd6c9a626aeaeaf16bd"}, - {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61e1591ed9376e5eddda202ec229eddc56c612b61ac6ad07f96b91460bb6c2fb"}, - {file = "ujson-5.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2c75269f8205b2690db4572a4a36fe47cd1338e4368bc73a7a0e48789e2e35a"}, - {file = "ujson-5.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7223f41e5bf1f919cd8d073e35b229295aa8e0f7b5de07ed1c8fddac63a6bc5d"}, - {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc2fd6b3067c0782e7002ac3b38cf48608ee6366ff176bbd02cf969c9c20fe"}, - {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:232cc85f8ee3c454c115455195a205074a56ff42608fd6b942aa4c378ac14dd7"}, - {file = "ujson-5.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cc6139531f13148055d691e442e4bc6601f6dba1e6d521b1585d4788ab0bfad4"}, - {file = "ujson-5.10.0-cp38-cp38-win32.whl", hash = "sha256:e7ce306a42b6b93ca47ac4a3b96683ca554f6d35dd8adc5acfcd55096c8dfcb8"}, - {file = "ujson-5.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:e82d4bb2138ab05e18f089a83b6564fee28048771eb63cdecf4b9b549de8a2cc"}, - {file = "ujson-5.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dfef2814c6b3291c3c5f10065f745a1307d86019dbd7ea50e83504950136ed5b"}, - {file = "ujson-5.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4734ee0745d5928d0ba3a213647f1c4a74a2a28edc6d27b2d6d5bd9fa4319e27"}, - {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47ebb01bd865fdea43da56254a3930a413f0c5590372a1241514abae8aa7c76"}, - {file = "ujson-5.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dee5e97c2496874acbf1d3e37b521dd1f307349ed955e62d1d2f05382bc36dd5"}, - {file = "ujson-5.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7490655a2272a2d0b072ef16b0b58ee462f4973a8f6bbe64917ce5e0a256f9c0"}, - {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba17799fcddaddf5c1f75a4ba3fd6441f6a4f1e9173f8a786b42450851bd74f1"}, - {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:2aff2985cef314f21d0fecc56027505804bc78802c0121343874741650a4d3d1"}, - {file = "ujson-5.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad88ac75c432674d05b61184178635d44901eb749786c8eb08c102330e6e8996"}, - {file = "ujson-5.10.0-cp39-cp39-win32.whl", hash = "sha256:2544912a71da4ff8c4f7ab5606f947d7299971bdd25a45e008e467ca638d13c9"}, - {file = "ujson-5.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:3ff201d62b1b177a46f113bb43ad300b424b7847f9c5d38b1b4ad8f75d4a282a"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88"}, - {file = "ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7663960f08cd5a2bb152f5ee3992e1af7690a64c0e26d31ba7b3ff5b2ee66337"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8640fb4072d36b08e95a3a380ba65779d356b2fee8696afeb7794cf0902d0a1"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78778a3aa7aafb11e7ddca4e29f46bc5139131037ad628cc10936764282d6753"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0111b27f2d5c820e7f2dbad7d48e3338c824e7ac4d2a12da3dc6061cc39c8e6"}, - {file = "ujson-5.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c66962ca7565605b355a9ed478292da628b8f18c0f2793021ca4425abf8b01e5"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba43cc34cce49cf2d4bc76401a754a81202d8aa926d0e2b79f0ee258cb15d3a4"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ac56eb983edce27e7f51d05bc8dd820586c6e6be1c5216a6809b0c668bb312b8"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44bd4b23a0e723bf8b10628288c2c7c335161d6840013d4d5de20e48551773b"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c10f4654e5326ec14a46bcdeb2b685d4ada6911050aa8baaf3501e57024b804"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0de4971a89a762398006e844ae394bd46991f7c385d7a6a3b93ba229e6dac17e"}, - {file = "ujson-5.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1402f0564a97d2a52310ae10a64d25bcef94f8dd643fcf5d310219d915484f7"}, - {file = "ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1"}, -] +devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [[package]] name = "uvicorn" -version = "0.29.0" +version = "0.23.2" description = "The lightning-fast ASGI server." optional = false python-versions = ">=3.8" files = [ - {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, - {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, + {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"}, + {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"}, ] [package.dependencies] click = ">=7.0" -colorama = {version = ">=0.4", optional = true, markers = "sys_platform == \"win32\" and extra == \"standard\""} h11 = ">=0.8" -httptools = {version = ">=0.5.0", optional = true, markers = "extra == \"standard\""} -python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} -watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} -websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] -[[package]] -name = "uvloop" -version = "0.19.0" -description = "Fast implementation of asyncio event loop on top of libuv" -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e"}, - {file = "uvloop-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428"}, - {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8"}, - {file = "uvloop-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849"}, - {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957"}, - {file = "uvloop-0.19.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd"}, - {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef"}, - {file = "uvloop-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2"}, - {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1"}, - {file = "uvloop-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24"}, - {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533"}, - {file = "uvloop-0.19.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12"}, - {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650"}, - {file = "uvloop-0.19.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec"}, - {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc"}, - {file = "uvloop-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6"}, - {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593"}, - {file = "uvloop-0.19.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3"}, - {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd"}, - {file = "uvloop-0.19.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd"}, - {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be"}, - {file = "uvloop-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797"}, - {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d"}, - {file = "uvloop-0.19.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7"}, - {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b"}, - {file = "uvloop-0.19.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67"}, - {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7"}, - {file = "uvloop-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256"}, - {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17"}, - {file = "uvloop-0.19.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5"}, - {file = "uvloop-0.19.0.tar.gz", hash = "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd"}, -] - -[package.extras] -docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] -test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] - -[[package]] -name = "watchfiles" -version = "0.21.0" -description = "Simple, modern and high performance file watching and code reload in python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, - {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, - {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, - {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, - {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, - {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, - {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, - {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, - {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, - {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, - {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, - {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, - {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, - {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, - {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, - {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, - {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, - {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, - {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, - {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, - {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, - {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, - {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, - {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, - {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, - {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, - {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, - {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, - {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, - {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, - {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, - {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, - {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, -] - -[package.dependencies] -anyio = ">=3.0.0" - -[[package]] -name = "websockets" -version = "12.0" -description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" -optional = false -python-versions = ">=3.8" -files = [ - {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, - {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, - {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, - {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, - {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, - {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, - {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, - {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, - {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, - {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, - {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, - {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, - {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, - {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, - {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, - {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, - {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, - {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, - {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, - {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, - {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, - {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, - {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, - {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, - {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, - {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, - {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, - {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, - {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, - {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, - {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, - {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, - {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, - {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, - {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, - {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, - {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, - {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, - {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, - {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, - {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, - {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, - {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, - {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, - {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, - {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, - {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, - {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, - {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, - {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, - {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, - {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, - {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, - {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, - {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, - {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, - {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, - {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, - {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, - {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, - {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, - {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, - {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, - {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, - {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, - {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, - {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, - {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, - {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, - {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, - {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, - {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, -] - [[package]] name = "win32-setctime" version = "1.1.0" @@ -1840,20 +1305,20 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] [[package]] name = "zipp" -version = "3.18.1" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [metadata] lock-version = "2.0" -python-versions = "^3.9" -content-hash = "8bad2b89d555e80bc5f1edbf21bdc15ae9984fc709121c5523a2ea24438aa249" +python-versions = "^3.8" +content-hash = "a01e6b86fb598d6b337016a0b9c76a29ca49a9fde074b1ef18122aa785bb09ef" diff --git a/pyproject.toml b/pyproject.toml index 238de8ce82524493c68bcefbd6e61b735a24d9ea..82d9efc2a5d00546d876d09f14159a55f7141844 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "meme-generator" -version = "0.0.20" +version = "0.0.15" description = "Python package for making fun pictures" authors = ["meetwq "] license = "MIT" @@ -14,39 +14,28 @@ exclude = [ ] [tool.poetry.dependencies] -python = "^3.9" +python = "^3.8" httpx = ">=0.20.0,<1.0.0" loguru = ">=0.6.0,<1.0.0" -pil-utils = "^0.1.10" +pil-utils = "^0.1.8" toml = "^0.10.2" fastapi = ">=0.93.0,<1.0.0" uvicorn = ">=0.20.0,<1.0.0" -python-multipart = ">=0.0.9,<0.1.0" +python-multipart = "^0.0.6" filetype = "^1.2.0" rich = "^13.0.0" -dateparser = "^1.2.0" -typing-extensions = ">=4.4.0,<5.0.0" +dateparser = "^1.1.0" +typing-extensions = ">=4.0.0,<5.0.0" [tool.poetry.group.dev.dependencies] +black = "^22.1.0" [tool.poetry.scripts] meme = "meme_generator.cli:main" -[tool.pyright] -pythonVersion = "3.9" -pythonPlatform = "All" -typeCheckingMode = "basic" - -[tool.ruff] -line-length = 88 -target-version = "py39" - -[tool.ruff.lint] -select = ["E", "W", "F", "UP", "C", "T", "PYI", "PT", "Q"] -ignore = ["E402", "E501", "E711", "C901", "UP037"] - -[tool.ruff.lint.isort] -detect-same-package = true +[tool.isort] +profile = "black" +skip_gitignore = true [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/resources/fonts/GlowSansSC-Normal-Heavy.otf b/resources/fonts/GlowSansSC-Normal-Heavy.otf deleted file mode 100644 index 7ba6231c332c1f59899d0eeb562fbe3c4274856a..0000000000000000000000000000000000000000 --- a/resources/fonts/GlowSansSC-Normal-Heavy.otf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6f7c4704c1ebf564cbd5fbefed3f497fc7d735521364debe2feb3b38153ec321 -size 9241072 diff --git a/resources/fonts/NotoSansSC-Bold.ttf b/resources/fonts/NotoSansSC-Bold.ttf deleted file mode 100644 index 004f714c78a0d54a209a7b6b803f3499b19d5086..0000000000000000000000000000000000000000 --- a/resources/fonts/NotoSansSC-Bold.ttf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:297c1dd08c6176525405620d8425213906a7759cc3fe2b8dfa22991163bead36 -size 10550116 diff --git a/resources/fonts/NotoSansSC-Regular.ttf b/resources/fonts/NotoSansSC-Regular.ttf deleted file mode 100644 index 5a1c991338ec5750a635d811297c7be326eb95f9..0000000000000000000000000000000000000000 --- a/resources/fonts/NotoSansSC-Regular.ttf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ae82f4e2a55e1316a55bcc1d05e9555ce08d8bda07e893b486896b626fd852ff -size 10560380 diff --git a/resources/fonts/NotoSerifSC-Bold.otf b/resources/fonts/NotoSerifSC-Bold.otf deleted file mode 100644 index 80d40d5b40c34fc1aa7b3e847a15ba946606242d..0000000000000000000000000000000000000000 --- a/resources/fonts/NotoSerifSC-Bold.otf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fbb49fb1f7851e663b683d85d1cc8e81cda8c0a227f24964d067b188b8cba946 -size 11728184 diff --git a/resources/fonts/NotoSerifSC-Regular.otf b/resources/fonts/NotoSerifSC-Regular.otf index 136c690192cda61b1183a612c711790a40141e82..954b7883ab94a250f1fee8c614bd43cdc5ce94e4 100644 --- a/resources/fonts/NotoSerifSC-Regular.otf +++ b/resources/fonts/NotoSerifSC-Regular.otf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f05a61b6543b1e595cfdf98b915b8e80ae804d5d0df5aa6ab0ca75bac296699 -size 11214632 +oid sha256:66080541a111a7a31179700496013aac4b64a53cc41f570bd21c2628c75e4628 +size 11214568 diff --git a/resources/fonts/RoGSanSrfStd-Bd.otf b/resources/fonts/RoGSanSrfStd-Bd.otf deleted file mode 100644 index d4eb50608f0f499033963f655d692fb7ac7ec969..0000000000000000000000000000000000000000 --- a/resources/fonts/RoGSanSrfStd-Bd.otf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:299f361bd5ca959494799fe804046aa7ccae1748ceaebad927ad95a9737a312c -size 1347308 diff --git "a/resources/fonts/\345\272\236\351\227\250\346\255\243\351\201\223\347\262\227\344\271\246\344\275\223.ttf" "b/resources/fonts/\345\272\236\351\227\250\346\255\243\351\201\223\347\262\227\344\271\246\344\275\223.ttf" deleted file mode 100644 index 5bd1204ea5e1785e466ea4da05658b567159ef0e..0000000000000000000000000000000000000000 --- "a/resources/fonts/\345\272\236\351\227\250\346\255\243\351\201\223\347\262\227\344\271\246\344\275\223.ttf" +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:06b2048c592b1dae43b7ab895c941fbc7cfe11060da1c0cb8e68cb178ae6735a -size 11094836 diff --git a/resources/resource_list.json b/resources/resource_list.json index 316e8f6ee816fbe2322b62ee033cce4cd133144f..2ac3485fc6cec96a3668374de60cdef79071f054 100644 --- a/resources/resource_list.json +++ b/resources/resource_list.json @@ -1,6206 +1,5238 @@ [ - { - "path": "ace_attorney_dialog/images/bubble.png", - "hash": "dcfbf78adece47297792310e887d7960" - }, - { - "path": "ace_attorney_dialog/images/mark.png", - "hash": "a594ba5652eb3c9920ef612123fe10f4" - }, - { - "path": "acg_entrance/images/0.png", - "hash": "50d92b64bfdd6b7aa3872ba24bface4f" - }, - { - "path": "add_chaos/images/0.png", - "hash": "c9265d1d01b8d0746a544640f924e2c2" - }, - { - "path": "addiction/images/0.png", - "hash": "dc201145111b74eca4d09429afe0dfb9" - }, - { - "path": "always_like/images/0.png", - "hash": "7e4b3845cf80fa46942269d58bd64e9d" - }, - { - "path": "anti_kidnap/images/0.png", - "hash": "57991b7103cecbe1c13dc03cf4b7ed38" - }, - { - "path": "anya_suki/images/0.png", - "hash": "9a46dd33cc7a511a8368e768c6d4abb0" - }, - { - "path": "applaud/images/0.png", - "hash": "0e5f561f3abc093f8089ed5e3b4d4e51" - }, - { - "path": "applaud/images/1.png", - "hash": "948ee568b13be8427c0dd8d6de5740c3" - }, - { - "path": "applaud/images/2.png", - "hash": "ab191735e9c523517deca3e4c444bd81" - }, - { - "path": "applaud/images/3.png", - "hash": "46579d1329fa40685a264720bdb97593" - }, - { - "path": "applaud/images/4.png", - "hash": "26b72b155b645d5e8ed4f96948c48ba7" - }, - { - "path": "ascension/images/0.png", - "hash": "e09e50c266c1e8babfe2c73612ac4200" - }, - { - "path": "back_to_work/images/0.png", - "hash": "d85cf009fac3ce49ed90883e0c61e737" - }, - { - "path": "bad_news/images/0.png", - "hash": "960baf23d9d516c5ea6d13f48b67f070" - }, - { - "path": "beat_head/images/0.png", - "hash": "eacd07809b6ead153d7edd6630c18b57" - }, - { - "path": "beat_head/images/1.png", - "hash": "9c9c2eeee4dd11ce6af0e5ac9810ff9b" - }, - { - "path": "beat_head/images/2.png", - "hash": "94e491fbd91d9a8714ad87bd6dd2259f" - }, - { - "path": "beat_up/images/0.png", - "hash": "16d09b817c6d97dadca3fb386641f81e" - }, - { - "path": "beat_up/images/1.png", - "hash": "0727fd789b848978aec320303332e902" - }, - { - "path": "beat_up/images/2.png", - "hash": "4f5d498d7f9147b3e7fe03775096e5a2" - }, - { - "path": "bite/images/0.png", - "hash": "1bf01e9d335cea07f0fa41ac9b7cf1c4" - }, - { - "path": "bite/images/1.png", - "hash": "f39275eb62478b134d334cd12816ea8b" - }, - { - "path": "bite/images/10.png", - "hash": "3803c4e601226c29d9d5649fe4a14035" - }, - { - "path": "bite/images/11.png", - "hash": "0ecbeccbb0b56aba5141482308749688" - }, - { - "path": "bite/images/12.png", - "hash": "33294ff41e6106e9f058cb4c12774ecf" - }, - { - "path": "bite/images/13.png", - "hash": "0c146c08708ff40246876f6aab9ea7e5" - }, - { - "path": "bite/images/14.png", - "hash": "3803c4e601226c29d9d5649fe4a14035" - }, - { - "path": "bite/images/15.png", - "hash": "0ecbeccbb0b56aba5141482308749688" - }, - { - "path": "bite/images/2.png", - "hash": "ed49249ac247d237310faffb7d11c11e" - }, - { - "path": "bite/images/3.png", - "hash": "95d8fe8bfe6a6bafc0a02b7be64e7ea5" - }, - { - "path": "bite/images/4.png", - "hash": "a95502dae9f2a18b8be3dd2c68af10aa" - }, - { - "path": "bite/images/5.png", - "hash": "04449c3729ff7422bbd2f811e7ec9d89" - }, - { - "path": "bite/images/6.png", - "hash": "1924b0e63242af4a0280a5458e9cafda" - }, - { - "path": "bite/images/7.png", - "hash": "90bc4c8ad295a7a63123ebf98a39fe0f" - }, - { - "path": "bite/images/8.png", - "hash": "33294ff41e6106e9f058cb4c12774ecf" - }, - { - "path": "bite/images/9.png", - "hash": "0c146c08708ff40246876f6aab9ea7e5" - }, - { - "path": "blood_pressure/images/0.png", - "hash": "d5dd1ea44908952885ff14a283f99695" - }, - { - "path": "bluearchive/images/cross.png", - "hash": "bc36cde34cb165515ed4a80858861ab1" - }, - { - "path": "bluearchive/images/halo.png", - "hash": "5783e8f50adfae75ec19b8742893325d" - }, - { - "path": "bocchi_draft/images/0.png", - "hash": "680aea676a5f3d510ddee5c30201e59e" - }, - { - "path": "bocchi_draft/images/1.png", - "hash": "680aea676a5f3d510ddee5c30201e59e" - }, - { - "path": "bocchi_draft/images/10.png", - "hash": "7223660dff08058ebfd18abe91e3b4c1" - }, - { - "path": "bocchi_draft/images/11.png", - "hash": "5be40608585af14e81d1290a822bb765" - }, - { - "path": "bocchi_draft/images/12.png", - "hash": "10fe7523c888e2f9d58f63b529138c67" - }, - { - "path": "bocchi_draft/images/13.png", - "hash": "f04a0254f4cf76de4dcb15e006ce5251" - }, - { - "path": "bocchi_draft/images/14.png", - "hash": "e02a5bf9fd8c010dbbdbdfcfd68c88b2" - }, - { - "path": "bocchi_draft/images/15.png", - "hash": "c627cf848a3258c3f60f387f94424594" - }, - { - "path": "bocchi_draft/images/16.png", - "hash": "3ae22d0f4d647123a5a3d6463615894f" - }, - { - "path": "bocchi_draft/images/17.png", - "hash": "d3b524c173dae3f6f99a9280348c7c9f" - }, - { - "path": "bocchi_draft/images/18.png", - "hash": "89138ffaae09314d0d6ace6ea084dd35" - }, - { - "path": "bocchi_draft/images/19.png", - "hash": "5369cc29e4deab14936cae35cf6a039e" - }, - { - "path": "bocchi_draft/images/2.png", - "hash": "680aea676a5f3d510ddee5c30201e59e" - }, - { - "path": "bocchi_draft/images/20.png", - "hash": "23b17e86c34e6762c774f71cebef119b" - }, - { - "path": "bocchi_draft/images/21.png", - "hash": "23b17e86c34e6762c774f71cebef119b" - }, - { - "path": "bocchi_draft/images/22.png", - "hash": "23b17e86c34e6762c774f71cebef119b" - }, - { - "path": "bocchi_draft/images/3.png", - "hash": "d2fe56d893a8bf44d12fa43dc0d9616f" - }, - { - "path": "bocchi_draft/images/4.png", - "hash": "8c9b0855d8a752fb0c1969e5962035e2" - }, - { - "path": "bocchi_draft/images/5.png", - "hash": "3e1fe9c59bd56721b8e306b30fec11a1" - }, - { - "path": "bocchi_draft/images/6.png", - "hash": "81c83f74c8fb24c7aaf47c794c42f5b7" - }, - { - "path": "bocchi_draft/images/7.png", - "hash": "12d192f4487f6caf72c14328fbe62915" - }, - { - "path": "bocchi_draft/images/8.png", - "hash": "30c655e223bb9e6d2f5f60deec416941" - }, - { - "path": "bocchi_draft/images/9.png", - "hash": "ecd068db32969f4b587b992acce1fd65" - }, - { - "path": "bronya_holdsign/images/0.jpg", - "hash": "fc035e0ac02ee3bd44f4409f8df14ed9" - }, - { - "path": "bubble_tea/images/0.png", - "hash": "31c42e10985c1efa934d6b616b155c92" - }, - { - "path": "caoshen_bite/images/0.png", - "hash": "08420f435eb8e9b395fad3bc11823c70" - }, - { - "path": "caoshen_bite/images/1.png", - "hash": "f340d01ad0763eb5600a41c8008e03d5" - }, - { - "path": "caoshen_bite/images/10.png", - "hash": "a1d267b8c2dc8960145e809a6f369fab" - }, - { - "path": "caoshen_bite/images/11.png", - "hash": "9f9441dcc91f0062ca846ad3b0b8620c" - }, - { - "path": "caoshen_bite/images/12.png", - "hash": "ff19d6745c655440c5694ef5f295a65d" - }, - { - "path": "caoshen_bite/images/13.png", - "hash": "ef07e844622561ad41f0f385d1c6c9b3" - }, - { - "path": "caoshen_bite/images/14.png", - "hash": "897d566b8141a1bfc2511028cee4fe1f" - }, - { - "path": "caoshen_bite/images/15.png", - "hash": "fd6c58767115008172ab831f45094e17" - }, - { - "path": "caoshen_bite/images/16.png", - "hash": "601e9c86aa5c88f8f61eb1f864f646ed" - }, - { - "path": "caoshen_bite/images/17.png", - "hash": "7bd7c71a858fb17a79e9edad48c9eaa7" - }, - { - "path": "caoshen_bite/images/18.png", - "hash": "9cd95aa172f1ed3c7f05b09cc79ab782" - }, - { - "path": "caoshen_bite/images/19.png", - "hash": "75a0f0e5743b463fe2720fd2af485faf" - }, - { - "path": "caoshen_bite/images/2.png", - "hash": "6aad3b8f4033dbd8e8d3337543e13021" - }, - { - "path": "caoshen_bite/images/20.png", - "hash": "ea4d6d11dba51342bd1dabe6d88ba5e3" - }, - { - "path": "caoshen_bite/images/21.png", - "hash": "a567e86a31fcbe0253deb3feb774d4c5" - }, - { - "path": "caoshen_bite/images/22.png", - "hash": "05e08e612e618e33439e1d1d6e8fa175" - }, - { - "path": "caoshen_bite/images/23.png", - "hash": "18389bd829edb63d0ceae078bb1763ce" - }, - { - "path": "caoshen_bite/images/24.png", - "hash": "7891aac64cf87dc9d9434fac371a3407" - }, - { - "path": "caoshen_bite/images/25.png", - "hash": "ae02845905cb4dabc9fb895abd401c00" - }, - { - "path": "caoshen_bite/images/26.png", - "hash": "64edbdbe41176edca386c65f0f8af96f" - }, - { - "path": "caoshen_bite/images/27.png", - "hash": "f4cb93a0a4bec4e7d083a3d9933cf09c" - }, - { - "path": "caoshen_bite/images/28.png", - "hash": "97b63b42a2185e68226a7169d87b0b6e" - }, - { - "path": "caoshen_bite/images/29.png", - "hash": "1fd421c45721fd2e0d0f332b7f04292e" - }, - { - "path": "caoshen_bite/images/3.png", - "hash": "2e1d13692bf091b5c6f6f085949d68f8" - }, - { - "path": "caoshen_bite/images/30.png", - "hash": "b6eecaaab53ea23f05257ac999c418d0" - }, - { - "path": "caoshen_bite/images/31.png", - "hash": "7895a3b96748d299471d5ea7e29acd1a" - }, - { - "path": "caoshen_bite/images/32.png", - "hash": "651c3ed9a98818165d18e0c324824460" - }, - { - "path": "caoshen_bite/images/33.png", - "hash": "a040f062a3efc9a234cb086f434dafbf" - }, - { - "path": "caoshen_bite/images/34.png", - "hash": "34d89ed45313e5251253af64f616e8a1" - }, - { - "path": "caoshen_bite/images/35.png", - "hash": "655c475ad47f0badb51dccfca6e1aac7" - }, - { - "path": "caoshen_bite/images/36.png", - "hash": "0c5f969d05f730bedc7e2878e273b874" - }, - { - "path": "caoshen_bite/images/37.png", - "hash": "2d224e773965415953b7b4b8841b595c" - }, - { - "path": "caoshen_bite/images/4.png", - "hash": "ea4c10cdfb97252224814c92d8ecc175" - }, - { - "path": "caoshen_bite/images/5.png", - "hash": "cc4c6a030b0ba9a77ba559a49ce9d9be" - }, - { - "path": "caoshen_bite/images/6.png", - "hash": "d6f30de64fadec982c1e988a71dff7ed" - }, - { - "path": "caoshen_bite/images/7.png", - "hash": "b817fc07aa3cde720162bb693caca64c" - }, - { - "path": "caoshen_bite/images/8.png", - "hash": "5be01bb928ba4b553a7eb2256b5ec198" - }, - { - "path": "caoshen_bite/images/9.png", - "hash": "737d6062cd53c0133b361cb2c4543ffc" - }, - { - "path": "capoo_draw/images/0.png", - "hash": "f912144ee503cb4c193e6c109eb83637" - }, - { - "path": "capoo_draw/images/1.png", - "hash": "d85d94489c3a4ad1c418782ff5a9dafa" - }, - { - "path": "capoo_draw/images/2.png", - "hash": "dc3f3d37a5b985088388253ff7abecf4" - }, - { - "path": "capoo_draw/images/3.png", - "hash": "97034f01eed7f12767f224911e667a6f" - }, - { - "path": "capoo_draw/images/4.png", - "hash": "137787ff3e3df61f9238874ebe8ce46b" - }, - { - "path": "capoo_draw/images/5.png", - "hash": "f0480a00928db523221265376dfe7c07" - }, - { - "path": "capoo_rip/images/0.png", - "hash": "b9071375f262197ebb2a646875b8d819" - }, - { - "path": "capoo_rip/images/1.png", - "hash": "1e57ec96c106f137106eaf263f28ef4b" - }, - { - "path": "capoo_rip/images/2.png", - "hash": "6b30315d53652333e1587b7478242d27" - }, - { - "path": "capoo_rip/images/3.png", - "hash": "a949947118b16140c7efb35c5ed59abf" - }, - { - "path": "capoo_rip/images/4.png", - "hash": "c4337ead3d063740014be45c6b14eb1f" - }, - { - "path": "capoo_rip/images/5.png", - "hash": "983f0d7e0c9080479d29f646c0a406f8" - }, - { - "path": "capoo_rip/images/6.png", - "hash": "1258ad3db7914f7f2f955a6f2c910595" - }, - { - "path": "capoo_rip/images/7.png", - "hash": "c4d7613a7d578dd956e66edfbac23c89" - }, - { - "path": "capoo_rub/images/0.png", - "hash": "6fc3f9dd10f0a7de7f8c4c853166de26" - }, - { - "path": "capoo_rub/images/1.png", - "hash": "4ee09f4c274dac2d33c59f1a464591df" - }, - { - "path": "capoo_rub/images/2.png", - "hash": "3e4d4babbd4b9081682651510ad70680" - }, - { - "path": "capoo_rub/images/3.png", - "hash": "6d35b343f1bde5f1de4a5df94921b634" - }, - { - "path": "capoo_say/images/0.png", - "hash": "f068d28034bde7515340a58da0e4d9bf" - }, - { - "path": "capoo_say/images/1.png", - "hash": "3135e96c106a035153400d2ebe8f0be5" - }, - { - "path": "capoo_say/images/2.png", - "hash": "13c0e3e5db935829df8216518b951ebd" - }, - { - "path": "capoo_say/images/3.png", - "hash": "371b2e086c5949945a896c63a091fa7a" - }, - { - "path": "capoo_say/images/4.png", - "hash": "0c2bd48833523efb31917ad3d3b9b639" - }, - { - "path": "capoo_say/images/5.png", - "hash": "e55a0f719d1e6cd644f5ccff2cd783c0" - }, - { - "path": "capoo_say/images/6.png", - "hash": "a834e50a071769825efa5d37bc983f3e" - }, - { - "path": "capoo_say/images/7.png", - "hash": "7d3d97118846dea27983479710d91194" - }, - { - "path": "capoo_say/images/8.png", - "hash": "1079fa13aa6adcfb2d90c1a58d5d092d" - }, - { - "path": "capoo_say/images/9.png", - "hash": "b9b1b73405dd68d923930425a04fc26e" - }, - { - "path": "capoo_strike/images/0.png", - "hash": "3b7f60521294a0fd93c9a73b8d67a4e7" - }, - { - "path": "capoo_strike/images/1.png", - "hash": "c73899d2b67010fb4171d4aedcdaed81" - }, - { - "path": "capoo_strike/images/2.png", - "hash": "4c6643ac048d75df4103af4788be9053" - }, - { - "path": "capoo_strike/images/3.png", - "hash": "865082240baad33b6a1d58ba6187c026" - }, - { - "path": "capoo_strike/images/4.png", - "hash": "d9ae348ed2306b1fe04f7004078bb41f" - }, - { - "path": "capoo_strike/images/5.png", - "hash": "e33771e54e4204c5881ec955fa6a021d" - }, - { - "path": "capoo_strike/images/6.png", - "hash": "a4f9b749b5481a65220581eb7be03d8b" - }, - { - "path": "captain/images/0.png", - "hash": "f6cca0f44aa54c721f8b172f8ebb7f40" - }, - { - "path": "captain/images/1.png", - "hash": "2885566e47ef4fb40560149c795dca7f" - }, - { - "path": "captain/images/2.png", - "hash": "e230240d0929b774a985a301962d36b5" - }, - { - "path": "certificate/images/0.png", - "hash": "4fa571530f1c9b4701bdc3240a19fe25" - }, - { - "path": "chase_train/images/0.png", - "hash": "7bf7c41898169f70973a249905e1086c" - }, - { - "path": "chase_train/images/1.png", - "hash": "1db1364a8dbd84e6ef74079bb5ff17a8" - }, - { - "path": "chase_train/images/10.png", - "hash": "292dbe5e5d0e420b4ef258b19ac52172" - }, - { - "path": "chase_train/images/100.png", - "hash": "4ed64a045b8ab95aafea0eb4c5079fa6" - }, - { - "path": "chase_train/images/101.png", - "hash": "335739eb957573a9dec19dba2b16b3e7" - }, - { - "path": "chase_train/images/102.png", - "hash": "dd879e677cb54ea91a7e68f776c523a6" - }, - { - "path": "chase_train/images/103.png", - "hash": "739f501c7826edd93c77b66ec868b194" - }, - { - "path": "chase_train/images/104.png", - "hash": "ba51852201ecad21a3f76d7603bba4a5" - }, - { - "path": "chase_train/images/105.png", - "hash": "f165e50e13ba5ec1806ba56111ebadd9" - }, - { - "path": "chase_train/images/106.png", - "hash": "dddec974b82ae647fbdf1c2a09a3ee61" - }, - { - "path": "chase_train/images/107.png", - "hash": "542d308cbcf85cc202622a79588d3a49" - }, - { - "path": "chase_train/images/108.png", - "hash": "2b10c147fc987e17e8898f77e2bdcb14" - }, - { - "path": "chase_train/images/109.png", - "hash": "69f87ef8712a717ce6dbaa7aa95d8eea" - }, - { - "path": "chase_train/images/11.png", - "hash": "9c046b3902292b4737503161f2b62d02" - }, - { - "path": "chase_train/images/110.png", - "hash": "4e91a1f042ff3f4adb1a823b1e1f1fe2" - }, - { - "path": "chase_train/images/111.png", - "hash": "edd3d9ee22bf9e700ba6ddb4827afd3e" - }, - { - "path": "chase_train/images/112.png", - "hash": "ed5902b62cd2e1ac54d32ff19e30505e" - }, - { - "path": "chase_train/images/113.png", - "hash": "e65e849be18bfc610b60ac862cf9e1e5" - }, - { - "path": "chase_train/images/114.png", - "hash": "4d464c70883177e31f05a65ade9de13e" - }, - { - "path": "chase_train/images/115.png", - "hash": "353675889c312a1416055d01317069ba" - }, - { - "path": "chase_train/images/116.png", - "hash": "b207d15fdbb26087d5bf527f27e4f087" - }, - { - "path": "chase_train/images/117.png", - "hash": "36fe4bb2cce9974141030210144c3ad8" - }, - { - "path": "chase_train/images/118.png", - "hash": "4235c27a89563fea2d7f5b114233ef17" - }, - { - "path": "chase_train/images/119.png", - "hash": "dd2c42261479419e676f09c55ed8e79a" - }, - { - "path": "chase_train/images/12.png", - "hash": "98ea083aa53ff3f3af606e7e67033476" - }, - { - "path": "chase_train/images/13.png", - "hash": "a6f43b04aa305e5a320e20db5d850199" - }, - { - "path": "chase_train/images/14.png", - "hash": "37074ede0dea70240baf2d26dd77a373" - }, - { - "path": "chase_train/images/15.png", - "hash": "fae7dbfbfff28b3eae665d48c656d4ff" - }, - { - "path": "chase_train/images/16.png", - "hash": "47b500c96c779d4ac335b5c46bdb2e0a" - }, - { - "path": "chase_train/images/17.png", - "hash": "e69029fc7f4ed692e06c4794d6dac4ae" - }, - { - "path": "chase_train/images/18.png", - "hash": "71de33d9e84189ab458df8c053317b91" - }, - { - "path": "chase_train/images/19.png", - "hash": "8d36823b898e52b32cc25b9ffabcf339" - }, - { - "path": "chase_train/images/2.png", - "hash": "65a0830bc6d6a3127faf8e50822ac8b3" - }, - { - "path": "chase_train/images/20.png", - "hash": "f5734adff0f98aa2efa2f0b7d70884bc" - }, - { - "path": "chase_train/images/21.png", - "hash": "6815118e286fdbf9078e20f41e6112af" - }, - { - "path": "chase_train/images/22.png", - "hash": "01f3a8eb8983bc6e24634839bee85b55" - }, - { - "path": "chase_train/images/23.png", - "hash": "b02e49bd23246d91efac12cc777d7f78" - }, - { - "path": "chase_train/images/24.png", - "hash": "a0ee2dc52c4c1c473cc57092d942f7b2" - }, - { - "path": "chase_train/images/25.png", - "hash": "ab7a9e557e09314a8e5109dcf809e296" - }, - { - "path": "chase_train/images/26.png", - "hash": "b1cadf11b827d74f0ddf48ef0a5a5d28" - }, - { - "path": "chase_train/images/27.png", - "hash": "6348519826d61b471a8fece92e4ee516" - }, - { - "path": "chase_train/images/28.png", - "hash": "58f9a74fa74d3a4198510e005c4484ca" - }, - { - "path": "chase_train/images/29.png", - "hash": "521571b8b5b5654129ebb195066480c6" - }, - { - "path": "chase_train/images/3.png", - "hash": "3b9f749bc39286b7b5e0d9e726a1d4bd" - }, - { - "path": "chase_train/images/30.png", - "hash": "973241e42057f711fd370c36d466d683" - }, - { - "path": "chase_train/images/31.png", - "hash": "57bcfb0936d920907e0c84d8091f2384" - }, - { - "path": "chase_train/images/32.png", - "hash": "a475f33be6cff4fd435429165e7a89ab" - }, - { - "path": "chase_train/images/33.png", - "hash": "9fe7fc8f8b51e75b55ce58990615b8ae" - }, - { - "path": "chase_train/images/34.png", - "hash": "ca099830bd27ea5a263ec413032a731a" - }, - { - "path": "chase_train/images/35.png", - "hash": "48a37c15cb3f553178b8a322ee5498a4" - }, - { - "path": "chase_train/images/36.png", - "hash": "83ddc24949269dacee985c5dd08dfef0" - }, - { - "path": "chase_train/images/37.png", - "hash": "502d977a23285c42690e04e48133ef45" - }, - { - "path": "chase_train/images/38.png", - "hash": "c34f48052c67d8bd9eb57499da3fce44" - }, - { - "path": "chase_train/images/39.png", - "hash": "f8da1e9c2dea0e6d227412a70a556ada" - }, - { - "path": "chase_train/images/4.png", - "hash": "5869633c96666ef1bd22a23177e41a11" - }, - { - "path": "chase_train/images/40.png", - "hash": "4976ea014147cdf6beebb22e26011ad6" - }, - { - "path": "chase_train/images/41.png", - "hash": "00a733e04c08f01af4a76d470c9fa3e0" - }, - { - "path": "chase_train/images/42.png", - "hash": "4bbc5205e8c8368ef5aeaf964128c79d" - }, - { - "path": "chase_train/images/43.png", - "hash": "aea76edecc7a6115cca6a75e98005adc" - }, - { - "path": "chase_train/images/44.png", - "hash": "916f4fe46a610ad7a36fbd2dfe2b1a71" - }, - { - "path": "chase_train/images/45.png", - "hash": "ba8f249cbdb55c25b467134c0c486bd3" - }, - { - "path": "chase_train/images/46.png", - "hash": "c9b25bc88e55cfffc0fa86615fcfe81c" - }, - { - "path": "chase_train/images/47.png", - "hash": "65d9a4ca467b3586f07e51cc1eabbc98" - }, - { - "path": "chase_train/images/48.png", - "hash": "7206195dbce1db53e8824d6e9aec3080" - }, - { - "path": "chase_train/images/49.png", - "hash": "2b4c83f6bc3b23ee293e1aac1a7ccd03" - }, - { - "path": "chase_train/images/5.png", - "hash": "1752695309e244dbd1d9717da63c9129" - }, - { - "path": "chase_train/images/50.png", - "hash": "3e2a46aa34f81dcd11fd4231c6b05160" - }, - { - "path": "chase_train/images/51.png", - "hash": "3b52abcf06fef40c45f373791f38a7ae" - }, - { - "path": "chase_train/images/52.png", - "hash": "db480438656ac78c053bd986f88b8e20" - }, - { - "path": "chase_train/images/53.png", - "hash": "efca259de1ced624cf9f24f78ca4cec8" - }, - { - "path": "chase_train/images/54.png", - "hash": "dc0b5c1a5971e2141cbe4d9c56d0c128" - }, - { - "path": "chase_train/images/55.png", - "hash": "ad9da6c1dc641a6bede0f4b7c8e38f30" - }, - { - "path": "chase_train/images/56.png", - "hash": "235c74c051701ca383eb8dc390934ac3" - }, - { - "path": "chase_train/images/57.png", - "hash": "257a0e3debc5b5176dc5ea61880a9d2d" - }, - { - "path": "chase_train/images/58.png", - "hash": "e4aa8b6784dd697280065e967315afc9" - }, - { - "path": "chase_train/images/59.png", - "hash": "455619e428f24bc7297246ea509cdc8e" - }, - { - "path": "chase_train/images/6.png", - "hash": "a2e63edc5c56f8dc5a1f749eaba9ad1c" - }, - { - "path": "chase_train/images/60.png", - "hash": "06658ba5901219637dcb86687e878488" - }, - { - "path": "chase_train/images/61.png", - "hash": "7fbab76e20924d6d655d256cb2a7618e" - }, - { - "path": "chase_train/images/62.png", - "hash": "f00691c5671383d2040ebb3cc6d0fce6" - }, - { - "path": "chase_train/images/63.png", - "hash": "22dc12001b5237b196859a9f57c00486" - }, - { - "path": "chase_train/images/64.png", - "hash": "fb529e76863bc338b7c01d8d5d152a01" - }, - { - "path": "chase_train/images/65.png", - "hash": "d9da6224c137a9f20998acbe92740dc2" - }, - { - "path": "chase_train/images/66.png", - "hash": "b3d7c85a3af021ae09ccc111a271f67d" - }, - { - "path": "chase_train/images/67.png", - "hash": "f9e1bb5ab9160458dabfb2c814e5c96c" - }, - { - "path": "chase_train/images/68.png", - "hash": "34629b82b74ea3064f91cb5e2d3d2c35" - }, - { - "path": "chase_train/images/69.png", - "hash": "a3cc3bd6f43a9d57f7165db69409b785" - }, - { - "path": "chase_train/images/7.png", - "hash": "81a63cd5a80146039ead67df4dc6a00f" - }, - { - "path": "chase_train/images/70.png", - "hash": "25f0e2695b503b9712aa97586e2d2d68" - }, - { - "path": "chase_train/images/71.png", - "hash": "a730868e157a3cf19d522c5c522a6ebe" - }, - { - "path": "chase_train/images/72.png", - "hash": "5a2d4cad093f62729029e7b46267912b" - }, - { - "path": "chase_train/images/73.png", - "hash": "ded3cb4a8d95243f160aec398b1478d6" - }, - { - "path": "chase_train/images/74.png", - "hash": "779beb6f0109623be10b2384e14e5170" - }, - { - "path": "chase_train/images/75.png", - "hash": "e04087097cf67d87e5a1a845a7f4f2e4" - }, - { - "path": "chase_train/images/76.png", - "hash": "398d14e6939d3af6a56382d5e4798ea7" - }, - { - "path": "chase_train/images/77.png", - "hash": "04e0eab8bbe7812c340e6973796b5852" - }, - { - "path": "chase_train/images/78.png", - "hash": "24a19ab361acbceda3b74a920c116cf4" - }, - { - "path": "chase_train/images/79.png", - "hash": "c64f1273c6f0838c82f63644ba61f2b0" - }, - { - "path": "chase_train/images/8.png", - "hash": "6f905804a2dd792088fb020ed4ba1ec5" - }, - { - "path": "chase_train/images/80.png", - "hash": "9dbf7b98b1f900666a284ff8c2a53bb5" - }, - { - "path": "chase_train/images/81.png", - "hash": "b1fac283bebd34b8299b4f07796882d1" - }, - { - "path": "chase_train/images/82.png", - "hash": "838e37bd37a44ae626057b7f4112a4f4" - }, - { - "path": "chase_train/images/83.png", - "hash": "1fc3c2aac840addab4a7232fce8d2618" - }, - { - "path": "chase_train/images/84.png", - "hash": "11e70793a048c508b1fd7ce200f2305c" - }, - { - "path": "chase_train/images/85.png", - "hash": "c9dc1d6b9880738b34ed8c2523ab28fa" - }, - { - "path": "chase_train/images/86.png", - "hash": "7accb0d98b7a09033238757722c06481" - }, - { - "path": "chase_train/images/87.png", - "hash": "ad7a36af263b89b9fd93c560cd93c734" - }, - { - "path": "chase_train/images/88.png", - "hash": "78c6254f5bc50edae2ad5ae77276ad37" - }, - { - "path": "chase_train/images/89.png", - "hash": "bc84844fa4af35b09773caaa78fefda0" - }, - { - "path": "chase_train/images/9.png", - "hash": "ac728bb2724f1b87a858225df47fe1a7" - }, - { - "path": "chase_train/images/90.png", - "hash": "50dc68f1ce171eea7186f1c80a868ad8" - }, - { - "path": "chase_train/images/91.png", - "hash": "8781c486e83faad346335c7f10fcd4ec" - }, - { - "path": "chase_train/images/92.png", - "hash": "6bb85189d43d162ff52e37da13a2c090" - }, - { - "path": "chase_train/images/93.png", - "hash": "4b7bb7d0423d12aba6b52153cefd8a82" - }, - { - "path": "chase_train/images/94.png", - "hash": "43ce0d9a874c4d4452f19e87411b1b24" - }, - { - "path": "chase_train/images/95.png", - "hash": "f61a6df0cb1977cdbc0413b249d2fec1" - }, - { - "path": "chase_train/images/96.png", - "hash": "2ba4cdef4cd8822b36c6afdf65aa2ccf" - }, - { - "path": "chase_train/images/97.png", - "hash": "7334779ae38e8a0f1d76e7e6d576af5c" - }, - { - "path": "chase_train/images/98.png", - "hash": "d249d2f3aab8f4eec578465b76c50cad" - }, - { - "path": "chase_train/images/99.png", - "hash": "4571cc545e6885c3b564ab87336cfe8e" - }, - { - "path": "china_flag/images/0.png", - "hash": "aa64adae6f7ede5bceafe81a5273cafc" - }, - { - "path": "clown/images/circle.png", - "hash": "4c29378f4e6f76ba7755808945eead80" - }, - { - "path": "clown/images/person.png", - "hash": "f5f150ed84fc4425a90daa92458f933a" - }, - { - "path": "confuse/images/0.png", - "hash": "4758c555242fb3b8f3f7426e575dde95" - }, - { - "path": "confuse/images/1.png", - "hash": "36fad69b2f66b88282254a9faf57d1ac" - }, - { - "path": "confuse/images/10.png", - "hash": "6ce9115d8292edabd74a1b7fbdced670" - }, - { - "path": "confuse/images/11.png", - "hash": "9b1a1434e083320b58390a4f86aa8ac8" - }, - { - "path": "confuse/images/12.png", - "hash": "f53fca003ac5b66f64cf7546a56356bc" - }, - { - "path": "confuse/images/13.png", - "hash": "14e4c8f746f319f15cad7d02daa7dad0" - }, - { - "path": "confuse/images/14.png", - "hash": "ba413c63991f17e2bd0a28bc4c105bae" - }, - { - "path": "confuse/images/15.png", - "hash": "f61159552fa9ab7f9e452ff927fc8acb" - }, - { - "path": "confuse/images/16.png", - "hash": "f938d95975d5f1045c2823ad396b4979" - }, - { - "path": "confuse/images/17.png", - "hash": "6832dea7f470464c095f65925e3a6ba9" - }, - { - "path": "confuse/images/18.png", - "hash": "8a49ebf2ab4564f650e690bef420695d" - }, - { - "path": "confuse/images/19.png", - "hash": "9a6d5fe6538b795bba572e0c4ab55ecc" - }, - { - "path": "confuse/images/2.png", - "hash": "82364e42fbc865097412338837b2d328" - }, - { - "path": "confuse/images/20.png", - "hash": "c29dfedd885067b036f2fa6e6d353ff3" - }, - { - "path": "confuse/images/21.png", - "hash": "349a96211a03552d040d044eb3f6bdd8" - }, - { - "path": "confuse/images/22.png", - "hash": "02de93e56d54e4c0d5628f5261643203" - }, - { - "path": "confuse/images/23.png", - "hash": "5ef1795da2f86c4a64e67263e3edfd1a" - }, - { - "path": "confuse/images/24.png", - "hash": "cc16e54ef506cdb23d9e0cfad2294603" - }, - { - "path": "confuse/images/25.png", - "hash": "b031bdd75398a2c14913d3a9b0f434c2" - }, - { - "path": "confuse/images/26.png", - "hash": "b410f262a549e23bf0c7cade90ebb412" - }, - { - "path": "confuse/images/27.png", - "hash": "11e766fac91cef3a207fab7c6131790f" - }, - { - "path": "confuse/images/28.png", - "hash": "0e5c0d09536eeefd8648c820e3d6d802" - }, - { - "path": "confuse/images/29.png", - "hash": "e22c184a0b8fae0c34e135949bb8b988" - }, - { - "path": "confuse/images/3.png", - "hash": "349dd7216c0a55db11127d985d592b12" - }, - { - "path": "confuse/images/30.png", - "hash": "5cebf2a9d4fa49500885df77b759cf1b" - }, - { - "path": "confuse/images/31.png", - "hash": "1632f329095a83130e72f89ff37c8454" - }, - { - "path": "confuse/images/32.png", - "hash": "362d6ce1326c08436566b7944a8bd2f4" - }, - { - "path": "confuse/images/33.png", - "hash": "ab3516b03fb98be9785005958d2577a3" - }, - { - "path": "confuse/images/34.png", - "hash": "da4af5bbd2f6b8747965b300e421c902" - }, - { - "path": "confuse/images/35.png", - "hash": "ac38b4b0bd681bf5b13b37888d05992b" - }, - { - "path": "confuse/images/36.png", - "hash": "95a43fc43eac8a5bde512ddacf037c3d" - }, - { - "path": "confuse/images/37.png", - "hash": "0c8526d12f5764a860d01017f3fbebbc" - }, - { - "path": "confuse/images/38.png", - "hash": "43a4bf013712dd73830d728e024d03f3" - }, - { - "path": "confuse/images/39.png", - "hash": "df7f3cb11a4e3a964e6886fd91559bf0" - }, - { - "path": "confuse/images/4.png", - "hash": "935ae3c540c5fe3dbad3cc5900564272" - }, - { - "path": "confuse/images/40.png", - "hash": "86d07b123ce2d919aa0d1a11bc8c8af0" - }, - { - "path": "confuse/images/41.png", - "hash": "14c5dcda50d097e7c418d678314f762a" - }, - { - "path": "confuse/images/42.png", - "hash": "670d20b0d7bd9327d4314871972c8dc6" - }, - { - "path": "confuse/images/43.png", - "hash": "cd247bbbe553704b93a22d6a68d68db9" - }, - { - "path": "confuse/images/44.png", - "hash": "e1c0b8a37f6a14d4512e68a5aa9c8c7e" - }, - { - "path": "confuse/images/45.png", - "hash": "f5efa7ffa7d28a8d9734ac6da16fd1f8" - }, - { - "path": "confuse/images/46.png", - "hash": "3e8c31adbb8263e787417efd862c35bd" - }, - { - "path": "confuse/images/47.png", - "hash": "8813439d0c101eee39c62cea5ac7cc63" - }, - { - "path": "confuse/images/48.png", - "hash": "65b6c396ed0e069314d411a760c732d1" - }, - { - "path": "confuse/images/49.png", - "hash": "900a70773d6b7e2bed31a5dbe6e6e0eb" - }, - { - "path": "confuse/images/5.png", - "hash": "93251d796fc5ddaac7b7f11ad606cd93" - }, - { - "path": "confuse/images/50.png", - "hash": "0495631cee1906334eae549aa6cbdbbb" - }, - { - "path": "confuse/images/51.png", - "hash": "d41fbbcd92414fda29dd135c7e52dfd5" - }, - { - "path": "confuse/images/52.png", - "hash": "b28b841b05143a99b493a80a75285fe1" - }, - { - "path": "confuse/images/53.png", - "hash": "b1581543d5840dd8e0614a38eccc6480" - }, - { - "path": "confuse/images/54.png", - "hash": "dbcba662c117d08322de64ddd4fca0de" - }, - { - "path": "confuse/images/55.png", - "hash": "14e32fd9a2f9969e1c487dd7463300fc" - }, - { - "path": "confuse/images/56.png", - "hash": "9ba295cb92d8db271293d5a3ed4efbf9" - }, - { - "path": "confuse/images/57.png", - "hash": "bc7e5cbc5bbc0d2e819e26f86a4c0d15" - }, - { - "path": "confuse/images/58.png", - "hash": "55fe9b8439cf8db774e8edf1ba925220" - }, - { - "path": "confuse/images/59.png", - "hash": "cd2cbac3e51185bd1ab89f0e0f9663d4" - }, - { - "path": "confuse/images/6.png", - "hash": "912dba6537f249ab96329551eb79590e" - }, - { - "path": "confuse/images/60.png", - "hash": "565b13924f766b6d544dad432534e7f4" - }, - { - "path": "confuse/images/61.png", - "hash": "9456d0cf43bca9715dde029eb196852b" - }, - { - "path": "confuse/images/62.png", - "hash": "2c162ab10a9d01e0e8b0019f597cbcdf" - }, - { - "path": "confuse/images/63.png", - "hash": "81940aed3fda844dabe97f05a6636311" - }, - { - "path": "confuse/images/64.png", - "hash": "dbaa72fcd6f6677c569f73449f2a8790" - }, - { - "path": "confuse/images/65.png", - "hash": "b10625ffdd4f4bab57c5ed27b0a84cc9" - }, - { - "path": "confuse/images/66.png", - "hash": "d550962452fe6c383c62b973dc00aefc" - }, - { - "path": "confuse/images/67.png", - "hash": "2187819577b8acd5c170a8137c6eb2ce" - }, - { - "path": "confuse/images/68.png", - "hash": "68b37e77e5678b1382c755e683f600f1" - }, - { - "path": "confuse/images/69.png", - "hash": "7ee64ef710190844ae138beb7080c414" - }, - { - "path": "confuse/images/7.png", - "hash": "b529943d2a97ee24dc2af526d6afbf20" - }, - { - "path": "confuse/images/70.png", - "hash": "31ac37fdcd36c2cc8b444e9245843316" - }, - { - "path": "confuse/images/71.png", - "hash": "c009b05844a6f673baebb85d4ca810df" - }, - { - "path": "confuse/images/72.png", - "hash": "82a8077f34e7052d16ba32386a018534" - }, - { - "path": "confuse/images/73.png", - "hash": "9a8a39e0fb705f9b259e8323a533ff20" - }, - { - "path": "confuse/images/74.png", - "hash": "880a60d5d3e656116b0be4a37a1e56bb" - }, - { - "path": "confuse/images/75.png", - "hash": "589ba816911705a0b7d8f1f07833cfa4" - }, - { - "path": "confuse/images/76.png", - "hash": "b9bb3ce47bb157a8b1b9383df59c0a30" - }, - { - "path": "confuse/images/77.png", - "hash": "f40cca19853e6b29d10dbf6bc410c39e" - }, - { - "path": "confuse/images/78.png", - "hash": "e110e2ce944356056714fe26894ee509" - }, - { - "path": "confuse/images/79.png", - "hash": "6365cbb7ff7106e1c6334942ebebfa6e" - }, - { - "path": "confuse/images/8.png", - "hash": "8faa3341b8a1d86f60313a11215b5ace" - }, - { - "path": "confuse/images/80.png", - "hash": "9a47bd56b13059e349f6236c6dce605a" - }, - { - "path": "confuse/images/81.png", - "hash": "fd5b11c40f60da53da999cce18572552" - }, - { - "path": "confuse/images/82.png", - "hash": "7f6a76528a8a531d8d0fb88b42b1855c" - }, - { - "path": "confuse/images/83.png", - "hash": "d0c1125dbb10d75406c1d2cc88368766" - }, - { - "path": "confuse/images/84.png", - "hash": "cefb8ed958cb38f74db21ed4b390b175" - }, - { - "path": "confuse/images/85.png", - "hash": "508467fcf63c81e8202f6c24b0007032" - }, - { - "path": "confuse/images/86.png", - "hash": "831d56520f8378c8c8a525d8bf786c99" - }, - { - "path": "confuse/images/87.png", - "hash": "807e7b96ac60ffb65b9f28643d87c7ea" - }, - { - "path": "confuse/images/88.png", - "hash": "d1f27772cc238b348e82b5126bf6cbc9" - }, - { - "path": "confuse/images/89.png", - "hash": "fca1191b7a7dbc199f7cb9541c0cffc1" - }, - { - "path": "confuse/images/9.png", - "hash": "562ed906ec350b5f948f2dc5793cdb3f" - }, - { - "path": "confuse/images/90.png", - "hash": "647b0aca88439a8bc0c4fd5f56bb08db" - }, - { - "path": "confuse/images/91.png", - "hash": "6a9f58a786851e8d227255007716c9c3" - }, - { - "path": "confuse/images/92.png", - "hash": "d5bc05be5757a38b5c8ede86b3bbecd0" - }, - { - "path": "confuse/images/93.png", - "hash": "0aec630f9affb58fc244ebf867b6756f" - }, - { - "path": "confuse/images/94.png", - "hash": "7c8afaaacd83da90ef8ba815ae9c6adb" - }, - { - "path": "confuse/images/95.png", - "hash": "98ae73a5d37372b009d70abdcd80c016" - }, - { - "path": "confuse/images/96.png", - "hash": "4197a036a87ae517034548801297b6a4" - }, - { - "path": "confuse/images/97.png", - "hash": "cdc67752ea7f8d22eccf9070068ff91e" - }, - { - "path": "confuse/images/98.png", - "hash": "55dc9c90d7b95a6f6a8f45a10c0b5900" - }, - { - "path": "confuse/images/99.png", - "hash": "8342ce8812c3104f57871d590a2ca408" - }, - { - "path": "coupon/images/0.png", - "hash": "e7faf1dcc5a4ff24536b7e41a4faf733" - }, - { - "path": "cover_face/images/0.png", - "hash": "8e26cd9059e61526a04d87918f9744a7" - }, - { - "path": "crawl/images/01.jpg", - "hash": "cce6b6c568d5fab48dcae9278c46a989" - }, - { - "path": "crawl/images/02.jpg", - "hash": "7c3ee42c3ff9426fc8f4de5ab143d85c" - }, - { - "path": "crawl/images/03.jpg", - "hash": "2e76c43a6d3fdf6f545b03e78e9f9fbd" - }, - { - "path": "crawl/images/04.jpg", - "hash": "97fa4883794bf2897ed5c3bb77469efb" - }, - { - "path": "crawl/images/05.jpg", - "hash": "e43b84a3615f376de456dd3fc44ed7b9" - }, - { - "path": "crawl/images/06.jpg", - "hash": "325794814502c47c91342a01e99ae848" - }, - { - "path": "crawl/images/07.jpg", - "hash": "c4e44e1b0da434105ac7ec3e00a719ef" - }, - { - "path": "crawl/images/08.jpg", - "hash": "854f91dd72caf3570a270de49c6c3a3f" - }, - { - "path": "crawl/images/09.jpg", - "hash": "f2426f40201f0188986fbc581be93f7f" - }, - { - "path": "crawl/images/10.jpg", - "hash": "5e2ed1f0c9b2e1f22ca2996ca0c2c583" - }, - { - "path": "crawl/images/11.jpg", - "hash": "a319d42a631243b12ea5e23e395db053" - }, - { - "path": "crawl/images/12.jpg", - "hash": "b2673e18b7fb6dbb7a8a9b548a9fac67" - }, - { - "path": "crawl/images/13.jpg", - "hash": "c641beff5799a5448c8d599fd382a712" - }, - { - "path": "crawl/images/14.jpg", - "hash": "e8987c5f87145247abf7b71f68315c35" - }, - { - "path": "crawl/images/15.jpg", - "hash": "44333dd2980c8f0634ecb4b51df68883" - }, - { - "path": "crawl/images/16.jpg", - "hash": "c05fc5e54e081909959da84a79602c14" - }, - { - "path": "crawl/images/17.jpg", - "hash": "69072cff8bbf687c5933536df8d14fa2" - }, - { - "path": "crawl/images/18.jpg", - "hash": "5e29e097d7145108d22141c980d37549" - }, - { - "path": "crawl/images/19.jpg", - "hash": "2bf84016a2fc51beb1a3b51ca566129f" - }, - { - "path": "crawl/images/20.jpg", - "hash": "dc8f3e84d315c6e8fb0e81cf01fe9858" - }, - { - "path": "crawl/images/21.jpg", - "hash": "2088ed79ddaf4ba4e90c388151001ba0" - }, - { - "path": "crawl/images/22.jpg", - "hash": "8356a010b3739a423971aaed1c04b189" - }, - { - "path": "crawl/images/23.jpg", - "hash": "c31d7dab81d42449a67f64849c9b92e3" - }, - { - "path": "crawl/images/24.jpg", - "hash": "5c6e144005eee87ef930551887be1231" - }, - { - "path": "crawl/images/25.jpg", - "hash": "d31ab3575368eee91640a61690f96455" - }, - { - "path": "crawl/images/26.jpg", - "hash": "08d586461e3fcf195d33b3dedf4c975c" - }, - { - "path": "crawl/images/27.jpg", - "hash": "231134ba99805ff5df605b152df96b50" - }, - { - "path": "crawl/images/28.jpg", - "hash": "7b224d314e8c0f24909fb81cf4dd46ad" - }, - { - "path": "crawl/images/29.jpg", - "hash": "0438049dbe406a3f226601ee43ccbbc5" - }, - { - "path": "crawl/images/30.jpg", - "hash": "c53078e5fc9c8325e77b3cc8a90742e4" - }, - { - "path": "crawl/images/31.jpg", - "hash": "1180e67b8783a97bc9836f5452d8bc97" - }, - { - "path": "crawl/images/32.jpg", - "hash": "6beb7396a405776b059f2f2570c7ab88" - }, - { - "path": "crawl/images/33.jpg", - "hash": "13a8694e3309db4974941dbbfaa9efeb" - }, - { - "path": "crawl/images/34.jpg", - "hash": "718f66b3fb852638c6e558ac6439134d" - }, - { - "path": "crawl/images/35.jpg", - "hash": "2d1fd0826efdcf432fa4d31123cc29d4" - }, - { - "path": "crawl/images/36.jpg", - "hash": "5f919e2888ae358ebb0d276764677eb9" - }, - { - "path": "crawl/images/37.jpg", - "hash": "3d05ce7d26c64d31d42a1d41b42679b6" - }, - { - "path": "crawl/images/38.jpg", - "hash": "779884b7ea0ba7ea74678dd2b72ed724" - }, - { - "path": "crawl/images/39.jpg", - "hash": "6ca6621f9d24185849e2b04a3d2e48cc" - }, - { - "path": "crawl/images/40.jpg", - "hash": "79b7ade1d3b87e5d12bee2194b575a64" - }, - { - "path": "crawl/images/41.jpg", - "hash": "370414538e997f6ca8c71ceb765a334f" - }, - { - "path": "crawl/images/42.jpg", - "hash": "f8e0e017de609c1761bb480f2c556cfa" - }, - { - "path": "crawl/images/43.jpg", - "hash": "6a0ad1624348135b563d080ab957f194" - }, - { - "path": "crawl/images/44.jpg", - "hash": "cad8a91f4ad34e97c9df229134423d7e" - }, - { - "path": "crawl/images/45.jpg", - "hash": "20a16ca7ecc0c2515c3995658619324e" - }, - { - "path": "crawl/images/46.jpg", - "hash": "9db7359991714a5be0cd8a452d9ad10e" - }, - { - "path": "crawl/images/47.jpg", - "hash": "a759b94eca07f1a544a303aef20da203" - }, - { - "path": "crawl/images/48.jpg", - "hash": "3a3191d21f27ffb9671bcedf1538abcc" - }, - { - "path": "crawl/images/49.jpg", - "hash": "fc04ef2afa46d592658172dd8dc1cc94" - }, - { - "path": "crawl/images/50.jpg", - "hash": "3bdd6b0cd1571511ab68d3a7d65503c6" - }, - { - "path": "crawl/images/51.jpg", - "hash": "73dd26dcebfd8bdd3f8fd11c1bdecb93" - }, - { - "path": "crawl/images/52.jpg", - "hash": "6fecf8ebd4aecbd7edf001a7ad5bd6a8" - }, - { - "path": "crawl/images/53.jpg", - "hash": "6c728cb71eb019ef5dcf79ce276d7304" - }, - { - "path": "crawl/images/54.jpg", - "hash": "249ab6abbadd5775b4db345d4111a483" - }, - { - "path": "crawl/images/55.jpg", - "hash": "43a8723bab213740211b1704a45b3e7a" - }, - { - "path": "crawl/images/56.jpg", - "hash": "27d00835d39b95543421a1070fff1db9" - }, - { - "path": "crawl/images/57.jpg", - "hash": "e5276244ddf08c6b1ec4cd516b72b679" - }, - { - "path": "crawl/images/58.jpg", - "hash": "8bd116c9d35fd75d2dafd93f8fc41ba7" - }, - { - "path": "crawl/images/59.jpg", - "hash": "af9dba7059394fb29d6cde220b4a81bd" - }, - { - "path": "crawl/images/60.jpg", - "hash": "dc6f1aed35469d818a5baa2376b0d079" - }, - { - "path": "crawl/images/61.jpg", - "hash": "f31def3cd5162c00d30972897298cd46" - }, - { - "path": "crawl/images/62.jpg", - "hash": "515ba871787b905c32c2b9d6bfa80e45" - }, - { - "path": "crawl/images/63.jpg", - "hash": "39e88bc661516e766e9c8f3e67a121a6" - }, - { - "path": "crawl/images/64.jpg", - "hash": "f923d5b7efc1ae8779f1255aae1e2e6d" - }, - { - "path": "crawl/images/65.jpg", - "hash": "a93c9bf77017252a84d15f8eab26d4b2" - }, - { - "path": "crawl/images/66.jpg", - "hash": "acea84f25f75d60627c0ede058eed4b8" - }, - { - "path": "crawl/images/67.jpg", - "hash": "18d416a63e4963b4363ebd9289dd15fc" - }, - { - "path": "crawl/images/68.jpg", - "hash": "cb661d9cd0df77b2a8c5535287224f7f" - }, - { - "path": "crawl/images/69.jpg", - "hash": "8137e5b1174969fd131ea04789fca972" - }, - { - "path": "crawl/images/70.jpg", - "hash": "380c0b89c5baf7dbd0ffef38446a87e8" - }, - { - "path": "crawl/images/71.jpg", - "hash": "60428aa26541efa2250d37d74a874ba6" - }, - { - "path": "crawl/images/72.jpg", - "hash": "bee413357320f096a9853804edd5aeb2" - }, - { - "path": "crawl/images/73.jpg", - "hash": "0fc974698f0be98e9c9920e521f73ce6" - }, - { - "path": "crawl/images/74.jpg", - "hash": "5185af743a9e233a7bee56aa0f7d6a1b" - }, - { - "path": "crawl/images/75.jpg", - "hash": "53ad0b0dce7ff8d90b66336108123d75" - }, - { - "path": "crawl/images/76.jpg", - "hash": "cee00e8f49851ef8a002180100aff3b7" - }, - { - "path": "crawl/images/77.jpg", - "hash": "3b1821d3e01777cda96d1a750f0a5570" - }, - { - "path": "crawl/images/78.jpg", - "hash": "be506707b4730cb4e94480231b46a617" - }, - { - "path": "crawl/images/79.jpg", - "hash": "9ae5ed97053b61541afe79b1ccb11fb5" - }, - { - "path": "crawl/images/80.jpg", - "hash": "f890db4dab16bd14f844d20c9a506245" - }, - { - "path": "crawl/images/81.jpg", - "hash": "f768dcefda04786bbc1be87f1da99d26" - }, - { - "path": "crawl/images/82.jpg", - "hash": "1060692fef8cd0865ec65b71ab4b3598" - }, - { - "path": "crawl/images/83.jpg", - "hash": "6c0e706db231044a2ee659a9003453e2" - }, - { - "path": "crawl/images/84.jpg", - "hash": "b30571c5ec880a98048004a859cf90cf" - }, - { - "path": "crawl/images/85.jpg", - "hash": "9245e2da88ebc134b7e2292068a80cfb" - }, - { - "path": "crawl/images/86.jpg", - "hash": "ca01df832eae89b1501c05373cd67b3d" - }, - { - "path": "crawl/images/87.jpg", - "hash": "40c6e2bcdb0292a52df7215844acfed0" - }, - { - "path": "crawl/images/88.jpg", - "hash": "e1ae322f432c9aa97e3735eb917558d1" - }, - { - "path": "crawl/images/89.jpg", - "hash": "5954888d330068ae2cb700b191223e93" - }, - { - "path": "crawl/images/90.jpg", - "hash": "0cdbaec24ba2753083cb57c4ea94fed6" - }, - { - "path": "crawl/images/91.jpg", - "hash": "f15ef87ab6a4e79e0b9fca132a27d060" - }, - { - "path": "crawl/images/92.jpg", - "hash": "b50d7c226a506e9e91bce322219aa131" - }, - { - "path": "daynight/images/0.png", - "hash": "df437d27f9e78c71b191cdef45502705" - }, - { - "path": "decent_kiss/images/0.png", - "hash": "c7bf01f3d8177d267d9dfd0a61b67007" - }, - { - "path": "dinosaur/images/0.png", - "hash": "dc7945042837325b39b70119ae140d66" - }, - { - "path": "distracted/images/0.png", - "hash": "e43d4c7cd948c5784509e6b90f1588d2" - }, - { - "path": "distracted/images/1.png", - "hash": "795ebc988f75b5cda340dce94cb3f6d7" - }, - { - "path": "distracted/images/2.png", - "hash": "cc15e121923c705a0610099217ee3006" - }, - { - "path": "distracted/images/3.png", - "hash": "fd7036c95a7c1270bcf2d7130fdfc0d7" - }, - { - "path": "divorce/images/0.png", - "hash": "2b142fc47a2cc1cc723a4edb33f7efcf" - }, - { - "path": "dog_dislike/images/0.png", - "hash": "35827740a3ea65f97b93d2f061d83e1a" - }, - { - "path": "dog_dislike/images/1.png", - "hash": "ecc17e318faeb5d7021c929d17cb7c3f" - }, - { - "path": "dog_dislike/images/10.png", - "hash": "f5327b48c973cbd47786bfdee3f174d6" - }, - { - "path": "dog_dislike/images/11.png", - "hash": "9d95df9d048658b4a2125b2f8f5c047d" - }, - { - "path": "dog_dislike/images/12.png", - "hash": "8a0a31faf59a825c3e446f9e149d07d6" - }, - { - "path": "dog_dislike/images/13.png", - "hash": "26ba5b74ba4ad1c07d0b82c6324f20f4" - }, - { - "path": "dog_dislike/images/14.png", - "hash": "6609e749b79759e79ba33d8cfa972dea" - }, - { - "path": "dog_dislike/images/15.png", - "hash": "3a9cd5497911a9eae170c27b0d2103ab" - }, - { - "path": "dog_dislike/images/16.png", - "hash": "a838858849f3ecc6e445f7c7660b2135" - }, - { - "path": "dog_dislike/images/17.png", - "hash": "56872042e75dd8933db319cca6131a32" - }, - { - "path": "dog_dislike/images/18.png", - "hash": "bb71efe90cb233f90f113216464c371b" - }, - { - "path": "dog_dislike/images/19.png", - "hash": "7341f591e6f3579b810590580f2ccc5c" - }, - { - "path": "dog_dislike/images/2.png", - "hash": "15dc7ee7c7ddfe1a6812b42bcdf2b13e" - }, - { - "path": "dog_dislike/images/20.png", - "hash": "8f1115f8e0802e21d6a907e8c6fa4c6f" - }, - { - "path": "dog_dislike/images/21.png", - "hash": "a728c12affba988f97e7889954c5a234" - }, - { - "path": "dog_dislike/images/22.png", - "hash": "911536b2e5f4fa8ec9ed6f03d4d9a35c" - }, - { - "path": "dog_dislike/images/23.png", - "hash": "5bdf690505cc70556d98553c0ce23ed6" - }, - { - "path": "dog_dislike/images/24.png", - "hash": "ec27ee9ede5dc5a9356b7714aab61bf1" - }, - { - "path": "dog_dislike/images/25.png", - "hash": "7054d80e4ae8d79eda8a79704a3b9bdf" - }, - { - "path": "dog_dislike/images/26.png", - "hash": "bb40efd37de6c787792a496eeeda8b77" - }, - { - "path": "dog_dislike/images/27.png", - "hash": "fb19cfe9da5dbe434c5dc5def2274755" - }, - { - "path": "dog_dislike/images/28.png", - "hash": "8d5268184caedd1d3d5c84f579ce6c42" - }, - { - "path": "dog_dislike/images/29.png", - "hash": "62561634bea91d2e2ebd574119467ebf" - }, - { - "path": "dog_dislike/images/3.png", - "hash": "cb2643d1ee8f1a7dbce007f575080d57" - }, - { - "path": "dog_dislike/images/30.png", - "hash": "22caaa2988aae9d92360055d98922477" - }, - { - "path": "dog_dislike/images/31.png", - "hash": "214c0042dc02fca39c2a73ff0ee97b88" - }, - { - "path": "dog_dislike/images/32.png", - "hash": "f852bfd19909a257029313915cac61a9" - }, - { - "path": "dog_dislike/images/33.png", - "hash": "e91d2617174dee464a934e9d226f9a75" - }, - { - "path": "dog_dislike/images/4.png", - "hash": "24e4e99c621db5484739217d929baf79" - }, - { - "path": "dog_dislike/images/5.png", - "hash": "e925b4df8da18d9ec1c5692aabbdcfaa" - }, - { - "path": "dog_dislike/images/6.png", - "hash": "290c421afeafb3a2a58c5c79ee311108" - }, - { - "path": "dog_dislike/images/7.png", - "hash": "5b505a690bba483e1bc3baf30efd790c" - }, - { - "path": "dog_dislike/images/8.png", - "hash": "9913459bd6549513d207ee52682acbdc" - }, - { - "path": "dog_dislike/images/9.png", - "hash": "0a8181770a69adda9c08d45a39cd3d16" - }, - { - "path": "dog_of_vtb/images/0.png", - "hash": "19a16294341eb540a5f48f6972937fc3" - }, - { - "path": "dont_go_near/images/0.png", - "hash": "eb240a7e56142a9e5233f675430b7481" - }, - { - "path": "dont_touch/images/0.png", - "hash": "3ff591ee749dfc208e2c5bf617c47dbe" - }, - { - "path": "dont_touch/images/mask.png", - "hash": "5b3ffca1b7a588a02d2dc4939cd6d31f" - }, - { - "path": "eat/images/0.png", - "hash": "114a3680c42d8818ff645aad63fa5af6" - }, - { - "path": "eat/images/1.png", - "hash": "1d46ae1a4d0080b62554783bfcdbb177" - }, - { - "path": "eat/images/2.png", - "hash": "3248f754830433778ae06df6ba2735d8" - }, - { - "path": "fanatic/images/0.jpg", - "hash": "65803c47845cd55e16cc3b5155d14430" - }, - { - "path": "father_work/images/0.png", - "hash": "9c5703d1ffd27949e439359aeb82e83c" - }, - { - "path": "fencing/images/0.png", - "hash": "494d6744b2fe70a2a24fa5680eab62e7" - }, - { - "path": "fencing/images/1.png", - "hash": "c2352fea73085e5e30465bdbd14e967f" - }, - { - "path": "fencing/images/10.png", - "hash": "bb11fc489bf9c9a5d6d7b6216cf2add7" - }, - { - "path": "fencing/images/11.png", - "hash": "bd2f472a815021ffe09a038256fc3ed6" - }, - { - "path": "fencing/images/12.png", - "hash": "c38fc68dbffa8f811dde76d05e158000" - }, - { - "path": "fencing/images/13.png", - "hash": "05c025367c38dcb56cbddc25dcee5c2c" - }, - { - "path": "fencing/images/14.png", - "hash": "e630633af5f3554a665c7acc700d8062" - }, - { - "path": "fencing/images/15.png", - "hash": "1a992964b9dc0730e3b8e5f6fa8e33c6" - }, - { - "path": "fencing/images/16.png", - "hash": "b2f3d5aae539fb2be6bc93d70361d93c" - }, - { - "path": "fencing/images/17.png", - "hash": "b6305e03a78495edba1787a2fe33cad0" - }, - { - "path": "fencing/images/18.png", - "hash": "0cd2f141d092fe8c2bc703b222275ac0" - }, - { - "path": "fencing/images/2.png", - "hash": "8ef9f2964d620faf379ac3f9556d1ab1" - }, - { - "path": "fencing/images/3.png", - "hash": "b0353f65f1f5c6f0dff890e314fbf866" - }, - { - "path": "fencing/images/4.png", - "hash": "f7f92325df415688edd85295e8ffbf1b" - }, - { - "path": "fencing/images/5.png", - "hash": "d13f10788d9b40353a3e0ea69fe646a5" - }, - { - "path": "fencing/images/6.png", - "hash": "99691ce248fdb3f8ec6365185c88b944" - }, - { - "path": "fencing/images/7.png", - "hash": "8eefb0b92e25340030721db422658c0c" - }, - { - "path": "fencing/images/8.png", - "hash": "8d4c631bc83659ffa3ede9dbf604f65c" - }, - { - "path": "fencing/images/9.png", - "hash": "81f17c9e3396f1d236efdb4d7a45c92f" - }, - { - "path": "fight_with_sunuo/images/0.png", - "hash": "b83cc22fb0312f7834d021ad48be3c27" - }, - { - "path": "fill_head/images/0.jpg", - "hash": "343d9e2f99061c99b8a2cca8a8074c93" - }, - { - "path": "find_chips/images/0.jpg", - "hash": "a8b86967b35a34129dd70a6c81a565e4" - }, - { - "path": "firefly_holdsign/images/01.png", - "hash": "7cc1a60eceb0989692538cf28798fd43" - }, - { - "path": "firefly_holdsign/images/02.png", - "hash": "63ede3340688a2ced7de385410845b7e" - }, - { - "path": "firefly_holdsign/images/03.png", - "hash": "cdb666a91d5444388fd6c08552b0f4ad" - }, - { - "path": "firefly_holdsign/images/04.png", - "hash": "89affdd1429e1aa90eeb57b9772dc59e" - }, - { - "path": "firefly_holdsign/images/05.png", - "hash": "85767985c65b7c672bbda5dbb7d6a0f2" - }, - { - "path": "firefly_holdsign/images/06.png", - "hash": "b7186db1341adc0a92f49ab5cc8ccf57" - }, - { - "path": "firefly_holdsign/images/07.png", - "hash": "27ea5347bf2577a47d6362db307fb53b" - }, - { - "path": "firefly_holdsign/images/08.png", - "hash": "e4f049bcb9ae586ee2a4e3e19ca3aded" - }, - { - "path": "firefly_holdsign/images/09.png", - "hash": "34c1c16024c0d7bcda48b970d8e597c2" - }, - { - "path": "firefly_holdsign/images/10.png", - "hash": "8d68e069dfea09ab90531fd0fe64ca79" - }, - { - "path": "firefly_holdsign/images/11.png", - "hash": "6d4d15052c31dab20f19322049eca15b" - }, - { - "path": "firefly_holdsign/images/12.png", - "hash": "bce6821194e3db23d74d63b6169e59b4" - }, - { - "path": "firefly_holdsign/images/13.png", - "hash": "d5de1013844a1e150308c25e895b7493" - }, - { - "path": "firefly_holdsign/images/14.png", - "hash": "ce9cae7cb790a7a77b2c4013b50b4295" - }, - { - "path": "firefly_holdsign/images/15.png", - "hash": "57515dd9c04ff9dba8044fd172a67b04" - }, - { - "path": "firefly_holdsign/images/16.png", - "hash": "7d4ca2c1fa50946bd262bc934d500d85" - }, - { - "path": "firefly_holdsign/images/17.png", - "hash": "489934a26ef96f4473a696e685d6e63b" - }, - { - "path": "firefly_holdsign/images/18.png", - "hash": "753a3e64ba24536d42aa660519c36c28" - }, - { - "path": "firefly_holdsign/images/19.png", - "hash": "c6fd05c31a61ef08aa3847fcfc013e7a" - }, - { - "path": "firefly_holdsign/images/20.png", - "hash": "4340c4e4b1de81d5670b1958575b2d4e" - }, - { - "path": "firefly_holdsign/images/21.png", - "hash": "1af5ab4c7e521f0fb04caae395b37f96" - }, - { - "path": "frieren_take/images/0.png", - "hash": "e398b7c3f7088245e4b3772375757beb" - }, - { - "path": "garbage/images/0.png", - "hash": "15a74fc27fc5ad1b2c4f3145aea81be4" - }, - { - "path": "garbage/images/1.png", - "hash": "13ed796e6e5a0f098d385ff5aa9360e2" - }, - { - "path": "garbage/images/10.png", - "hash": "018e992e8409366305d368b0b60d77e8" - }, - { - "path": "garbage/images/11.png", - "hash": "f6ae17fafdfc956645fb3f04deb5dc75" - }, - { - "path": "garbage/images/12.png", - "hash": "db2999727594e3186602b674993955b7" - }, - { - "path": "garbage/images/13.png", - "hash": "8186573633635047b38a8251494e207a" - }, - { - "path": "garbage/images/14.png", - "hash": "0374fac3fc52836b22226b33e10e4651" - }, - { - "path": "garbage/images/15.png", - "hash": "33ca5a42d75a9fc836082f31f059cb07" - }, - { - "path": "garbage/images/16.png", - "hash": "e044d9ad65657d0fadddefa91fe9d9f6" - }, - { - "path": "garbage/images/17.png", - "hash": "a4bcdd0bd939287881e3f6ab0ec5ee9e" - }, - { - "path": "garbage/images/18.png", - "hash": "41a300f7ed6ac9c5258c79ae3b655c45" - }, - { - "path": "garbage/images/19.png", - "hash": "a9adcc4884bf0c54f6acc1c268e89259" - }, - { - "path": "garbage/images/2.png", - "hash": "76adaddd8f25c4ff87af41652fae8426" - }, - { - "path": "garbage/images/20.png", - "hash": "f702cab4e4fb5a12e5c927e081357b01" - }, - { - "path": "garbage/images/21.png", - "hash": "4a8d8ff86119d8765855cf7a4d6ddfb0" - }, - { - "path": "garbage/images/22.png", - "hash": "54a5c78b51335d5cca607eb61114c684" - }, - { - "path": "garbage/images/23.png", - "hash": "712228f18c3fd891779cc53637e51ecb" - }, - { - "path": "garbage/images/24.png", - "hash": "3146fd2df0be2e38b8971c58c51b6cdd" - }, - { - "path": "garbage/images/3.png", - "hash": "9b9b4f0dfc7de061341aa423bacc91f4" - }, - { - "path": "garbage/images/4.png", - "hash": "ed4545859014cbd5f88ff3d8d464406c" - }, - { - "path": "garbage/images/5.png", - "hash": "da3d51b91a7e166c4e6b1a71396dbad3" - }, - { - "path": "garbage/images/6.png", - "hash": "f0ef28426cfd2a62633da02c3e3867c3" - }, - { - "path": "garbage/images/7.png", - "hash": "0a36874457b495812f8a708dc2af5eba" - }, - { - "path": "garbage/images/8.png", - "hash": "6f7f69ba43029a2053bd12fabdcd7a43" - }, - { - "path": "garbage/images/9.png", - "hash": "6749dad6bd2ade275a157a205ef6b860" - }, - { - "path": "genshin_start/images/0.png", - "hash": "7b5b9156e3582217ac185d1b96059c80" - }, - { - "path": "gif_subtitle/images/chanshenzi.gif", - "hash": "1d691ef44c9015b90118d462d8254bcf" - }, - { - "path": "gif_subtitle/images/maikease.gif", - "hash": "6eb2aa718212b23329a43e4bfd70998c" - }, - { - "path": "gif_subtitle/images/nihaosaoa.gif", - "hash": "97d8904891a6c890778b7ff6c467f438" - }, - { - "path": "gif_subtitle/images/qiegewala.gif", - "hash": "286153b55f83fc13f4eb6c7d48252541" - }, - { - "path": "gif_subtitle/images/shishilani.gif", - "hash": "64a1c8167bfd0cb46898bba32225a49b" - }, - { - "path": "gif_subtitle/images/shuifandui.gif", - "hash": "3125a5b21d77fbe5176068f82a82f344" - }, - { - "path": "gif_subtitle/images/wangjingze.gif", - "hash": "96bc6eefc1ec523746ba3ddccfe79833" - }, - { - "path": "gif_subtitle/images/weisuoyuwei.gif", - "hash": "c835e2828b6c050e594592c4f44923e9" - }, - { - "path": "gif_subtitle/images/wunian.gif", - "hash": "ef27895e6f030f6a308d60189aba662d" - }, - { - "path": "gif_subtitle/images/yalidaye.gif", - "hash": "ce1a77bc761384d08324bc94a495d74f" - }, - { - "path": "gif_subtitle/images/zengxiaoxian.gif", - "hash": "aa3dde683bea08ee6fe5fee1d34ae8b1" - }, - { - "path": "good_news/images/0.jpg", - "hash": "bb1631780bd36ea5e2338611d2887800" - }, - { - "path": "gun/images/0.png", - "hash": "23e223aba69b4c42cd04dcae58aec254" - }, - { - "path": "hammer/images/0.png", - "hash": "b8e94050256fc70c57f7167a8bbe3842" - }, - { - "path": "hammer/images/1.png", - "hash": "e87bdd2e1ab714965594486ec7e59273" - }, - { - "path": "hammer/images/2.png", - "hash": "3db04d878be5d2bcc6385419464f8cbe" - }, - { - "path": "hammer/images/3.png", - "hash": "5926fc010853908f2fde98149b1cde26" - }, - { - "path": "hammer/images/4.png", - "hash": "9b10b4ee1c6980260d48489d2edb4b0d" - }, - { - "path": "hammer/images/5.png", - "hash": "4f183ced8935e58b63e65330bce6479a" - }, - { - "path": "hammer/images/6.png", - "hash": "fa99a2c0fd32fc12b53c29b34ecfdc5b" - }, - { - "path": "high_EQ/images/0.jpg", - "hash": "e82b03fd3c5e4b8671c76047c9bcc1ad" - }, - { - "path": "hit_screen/images/0.png", - "hash": "1b77c941f4e0be97f9209b1697af78a3" - }, - { - "path": "hit_screen/images/1.png", - "hash": "2f72e6b3a7ef135bab0d1791740e50ad" - }, - { - "path": "hit_screen/images/10.png", - "hash": "06ee8c86ee5a4fcf1c64f05178d7a9f1" - }, - { - "path": "hit_screen/images/11.png", - "hash": "d9a620a32c4d83ef5124acc4c8f44c0c" - }, - { - "path": "hit_screen/images/12.png", - "hash": "906e33a3efcd9939c8d101d7907ee8d6" - }, - { - "path": "hit_screen/images/13.png", - "hash": "1ab5a1f4460db339b769265eb611a984" - }, - { - "path": "hit_screen/images/14.png", - "hash": "2ab2826e31abfa85e9bed6bd9a29a0fb" - }, - { - "path": "hit_screen/images/15.png", - "hash": "fcf7244d01c15e81f1a10509a57f7421" - }, - { - "path": "hit_screen/images/16.png", - "hash": "f31617015d582e6fb0dc705f3ce9dda1" - }, - { - "path": "hit_screen/images/17.png", - "hash": "595266cf81b8d831defc869588f13866" - }, - { - "path": "hit_screen/images/18.png", - "hash": "edf5600790fb42cde74fc0e08f018d0b" - }, - { - "path": "hit_screen/images/19.png", - "hash": "e69e9768da626a01dda6d5a3d86160c6" - }, - { - "path": "hit_screen/images/2.png", - "hash": "52d6b3e7409df8b840f2b1b1ec096be7" - }, - { - "path": "hit_screen/images/20.png", - "hash": "8079c0064342788af30cd274a52dfa89" - }, - { - "path": "hit_screen/images/21.png", - "hash": "e7fb41be10bef52e718aa4022995732b" - }, - { - "path": "hit_screen/images/22.png", - "hash": "61fd0c02dbc2fee0fb6e47fee48b47bc" - }, - { - "path": "hit_screen/images/23.png", - "hash": "3bcec874887b5f1b730622cb22834cc9" - }, - { - "path": "hit_screen/images/24.png", - "hash": "4660c21bb748574a9cc1d4b25536814c" - }, - { - "path": "hit_screen/images/25.png", - "hash": "f8e28991d35af936974315a1035bcccf" - }, - { - "path": "hit_screen/images/26.png", - "hash": "2561fbdf6d86e0296b2954c28015bf24" - }, - { - "path": "hit_screen/images/27.png", - "hash": "746c182316953d7ab216f0aa960224ef" - }, - { - "path": "hit_screen/images/28.png", - "hash": "0c6dce8b6f078612bfcac807bec83779" - }, - { - "path": "hit_screen/images/3.png", - "hash": "15e94688ebc0649564df9344e900e0ad" - }, - { - "path": "hit_screen/images/4.png", - "hash": "f1dbc36604462cf90604f3143938ab0b" - }, - { - "path": "hit_screen/images/5.png", - "hash": "44dd57fa5d23ff5614a6d98656b31095" - }, - { - "path": "hit_screen/images/6.png", - "hash": "8c66d2df6ce945ef239d3b18a4774b3b" - }, - { - "path": "hit_screen/images/7.png", - "hash": "6e42ce15f6a148273e926e085307a3cc" - }, - { - "path": "hit_screen/images/8.png", - "hash": "e313e4047ff2973817e1a47064a32988" - }, - { - "path": "hit_screen/images/9.png", - "hash": "a6dd680de2644d2fba6dfeeff2c90d1b" - }, - { - "path": "hold_grudge/images/0.png", - "hash": "985187c5c54b553b0af9781bfa7a5514" - }, - { - "path": "hold_tight/images/0.png", - "hash": "6c52f7de5f1a4aca8f1a0e7c5f6dd89b" - }, - { - "path": "hug_leg/images/0.png", - "hash": "bc08d4fd4fa124712006354df0eb092d" - }, - { - "path": "hug_leg/images/1.png", - "hash": "31bd381c73cccd175f1c71497a752870" - }, - { - "path": "hug_leg/images/2.png", - "hash": "49214e16f3150aea1cbc4849576516cd" - }, - { - "path": "hug_leg/images/3.png", - "hash": "83f6f33ead609c270873287ee65b89ca" - }, - { - "path": "hug_leg/images/4.png", - "hash": "74bf0373ac3b8057326722a0cf8fc51c" - }, - { - "path": "hug_leg/images/5.png", - "hash": "3d12cc8ad857617351d2961790e031af" - }, - { - "path": "hutao_bite/images/0.png", - "hash": "bbd32543d177575053100e7b23ac1b27" - }, - { - "path": "hutao_bite/images/1.png", - "hash": "9b108ddc8654bda9c3a3922308be2e07" - }, - { - "path": "imprison/images/0.jpg", - "hash": "7afdc93efbe34a2a9c7e7fc60b8b57a4" - }, - { - "path": "incivilization/images/0.png", - "hash": "352c9534c4ff182174b0b29e7ff7df42" - }, - { - "path": "interview/images/huaji.png", - "hash": "3bb5ff24a83544995edab765c837bec3" - }, - { - "path": "interview/images/microphone.png", - "hash": "34775a82e4b8b7df44d2cf37a6e16ea5" - }, - { - "path": "jiji_king/images/0.png", - "hash": "346ae46e7697540a3bec08c30ad78969" - }, - { - "path": "jiujiu/images/0.png", - "hash": "781d5ebfc9f2309c4cf60ef7b93ecfb8" - }, - { - "path": "jiujiu/images/1.png", - "hash": "c01805a80c726fbc6f9bab364b82e867" - }, - { - "path": "jiujiu/images/2.png", - "hash": "a1bdbc3c5d4830ca6baf459d686e38e3" - }, - { - "path": "jiujiu/images/3.png", - "hash": "b972b1ea12948e76735bed4528dcab46" - }, - { - "path": "jiujiu/images/4.png", - "hash": "30caae291977d2a3121c0a15a3832683" - }, - { - "path": "jiujiu/images/5.png", - "hash": "281b8b7796f579ac907c5923bf8a368b" - }, - { - "path": "jiujiu/images/6.png", - "hash": "eddf5fe3cc1e7470c17e04c8db35168f" - }, - { - "path": "jiujiu/images/7.png", - "hash": "82f7556d03c3e847ec3dd3f1d0915d9f" - }, - { - "path": "karyl_point/images/0.png", - "hash": "9ab82387b8f3cce1acdb57499c49ebe7" - }, - { - "path": "kick_ball/images/0.png", - "hash": "d2b2916d37d2cccd5c9f12ea99da87a7" - }, - { - "path": "kick_ball/images/1.png", - "hash": "509da70e46d631c3353ad525431b7674" - }, - { - "path": "kick_ball/images/10.png", - "hash": "9535ff5344dbf99f1afbf27f0282b2d1" - }, - { - "path": "kick_ball/images/11.png", - "hash": "4af18499194c6436eca8ff0a24944643" - }, - { - "path": "kick_ball/images/12.png", - "hash": "95897fc9e72b3f9ada4cf3ae673cbcdc" - }, - { - "path": "kick_ball/images/13.png", - "hash": "0dd603137fc1de3b18e4c0fd65eda6bb" - }, - { - "path": "kick_ball/images/14.png", - "hash": "fd8164a80326bdd5eee1291767b05ed3" - }, - { - "path": "kick_ball/images/2.png", - "hash": "bd6d20fd03612ba751059157b1966fab" - }, - { - "path": "kick_ball/images/3.png", - "hash": "94990605389da96c2f8168b4c2561562" - }, - { - "path": "kick_ball/images/4.png", - "hash": "6b0071cb715b8bc853ba32cde58a0e73" - }, - { - "path": "kick_ball/images/5.png", - "hash": "80e2a119658a86b1d97a26c2b41d8481" - }, - { - "path": "kick_ball/images/6.png", - "hash": "f573f27a1d7ff5117f2855d34bd225a1" - }, - { - "path": "kick_ball/images/7.png", - "hash": "76d027ec89c7de2b0abeabe84497cd00" - }, - { - "path": "kick_ball/images/8.png", - "hash": "3865dacbe636cb2c56967b1d873752c3" - }, - { - "path": "kick_ball/images/9.png", - "hash": "ca06142edeeafb64a59cd83985d4afd5" - }, - { - "path": "kirby_hammer/images/0.png", - "hash": "4b3d751215727547c9d596370c0cadc6" - }, - { - "path": "kirby_hammer/images/1.png", - "hash": "3e9b3db1325109cd857498cf764ed8b3" - }, - { - "path": "kirby_hammer/images/10.png", - "hash": "252c83ec6328ca49a46bf2cf88481123" - }, - { - "path": "kirby_hammer/images/11.png", - "hash": "410b76d943885f08adbf10f7f054e75f" - }, - { - "path": "kirby_hammer/images/12.png", - "hash": "9ae6ca270a810714a8d7c9dd4099593a" - }, - { - "path": "kirby_hammer/images/13.png", - "hash": "ec99ad3043c7fd3ff77530ee38172eaa" - }, - { - "path": "kirby_hammer/images/14.png", - "hash": "096fe608b0490ed4fcb3f35bd0f74baa" - }, - { - "path": "kirby_hammer/images/15.png", - "hash": "d117358a362f2ddff2d4c22ed88c981a" - }, - { - "path": "kirby_hammer/images/16.png", - "hash": "d80a8e7ab1c123c5ece132d9770de968" - }, - { - "path": "kirby_hammer/images/17.png", - "hash": "9e4d604e25a2da6b99d1840fe7c75602" - }, - { - "path": "kirby_hammer/images/18.png", - "hash": "067baa4f017f15f90d36d15e89f9527f" - }, - { - "path": "kirby_hammer/images/19.png", - "hash": "3907359c33ea79883f36a5aaf2cffc81" - }, - { - "path": "kirby_hammer/images/2.png", - "hash": "2b9c78da812ace9ab756b3ac31bcc2c3" - }, - { - "path": "kirby_hammer/images/20.png", - "hash": "f72fb17d8f0187ab153021b44dd214d9" - }, - { - "path": "kirby_hammer/images/21.png", - "hash": "f2c1b689c31792c862208e0027f5eb3d" - }, - { - "path": "kirby_hammer/images/22.png", - "hash": "d2a986955f38ae165ab7ed5e9eff2c22" - }, - { - "path": "kirby_hammer/images/23.png", - "hash": "9e90dba73e5a018ca0fd222a004b1f5e" - }, - { - "path": "kirby_hammer/images/24.png", - "hash": "94a54a4bb46aef8764dc90b4a914c68e" - }, - { - "path": "kirby_hammer/images/25.png", - "hash": "54bd5065691abd93f8f67e6d4d82654b" - }, - { - "path": "kirby_hammer/images/26.png", - "hash": "984150c2897e2989bd89a4739ee17628" - }, - { - "path": "kirby_hammer/images/27.png", - "hash": "acf235c91c7ae0877531dd5eb1d05e9c" - }, - { - "path": "kirby_hammer/images/28.png", - "hash": "bb8829238a3bbdc892999a9bc3cc0035" - }, - { - "path": "kirby_hammer/images/29.png", - "hash": "de595b27464eac39b387f139daf0240c" - }, - { - "path": "kirby_hammer/images/3.png", - "hash": "f2298d7403dc43180713d7d31de47455" - }, - { - "path": "kirby_hammer/images/30.png", - "hash": "ed48b5f532f17d4419d2eac91787a6e2" - }, - { - "path": "kirby_hammer/images/31.png", - "hash": "e322d5ae9489235c164239ea0c80ea68" - }, - { - "path": "kirby_hammer/images/32.png", - "hash": "cca6150a0e930ac96985d7a33daa47ac" - }, - { - "path": "kirby_hammer/images/33.png", - "hash": "efb182d89025cb064a6d5ab7682975b5" - }, - { - "path": "kirby_hammer/images/34.png", - "hash": "99ca9df71e8a370f192374a057406d37" - }, - { - "path": "kirby_hammer/images/35.png", - "hash": "fdde0008b84eabbcff46a0e59c057105" - }, - { - "path": "kirby_hammer/images/36.png", - "hash": "45b4f1f245216b8670067b9df8df1ea6" - }, - { - "path": "kirby_hammer/images/37.png", - "hash": "206a72ca3b28cc1a50d4414364190bdc" - }, - { - "path": "kirby_hammer/images/38.png", - "hash": "9c5f7a67a182d73e0bc4a3a51b676938" - }, - { - "path": "kirby_hammer/images/39.png", - "hash": "c8eedcaacd133ac50373d45b56f007a7" - }, - { - "path": "kirby_hammer/images/4.png", - "hash": "9b7ab8b7137898c3a3ef680f27c5dac4" - }, - { - "path": "kirby_hammer/images/40.png", - "hash": "080e309ebc305fcd4ee2aabfaf40e6e0" - }, - { - "path": "kirby_hammer/images/41.png", - "hash": "fc6622b31b57c66e5b008d63e6409a94" - }, - { - "path": "kirby_hammer/images/42.png", - "hash": "1d003a0c7b75832ec11849d0192cabd3" - }, - { - "path": "kirby_hammer/images/43.png", - "hash": "fc56793262bf080fe9b8cef629a3acc2" - }, - { - "path": "kirby_hammer/images/44.png", - "hash": "cd3cc7029bffd42fe7119c687be44f2e" - }, - { - "path": "kirby_hammer/images/45.png", - "hash": "96419814c91e3082d1850793b5978f3f" - }, - { - "path": "kirby_hammer/images/46.png", - "hash": "f06d71ebed8e4410fe9139de30612e3e" - }, - { - "path": "kirby_hammer/images/47.png", - "hash": "ac9b4ae0523f7cc80f6ec8545436888c" - }, - { - "path": "kirby_hammer/images/48.png", - "hash": "3592a8851467f316e4b4186a85bbce27" - }, - { - "path": "kirby_hammer/images/49.png", - "hash": "9e5bc3797377a5f4f9385e8c9d55b8d6" - }, - { - "path": "kirby_hammer/images/5.png", - "hash": "3a5ec940f94e19c03879b3b2c21d9959" - }, - { - "path": "kirby_hammer/images/50.png", - "hash": "b0d440755b85428fc2d00537ab79caec" - }, - { - "path": "kirby_hammer/images/51.png", - "hash": "65757c46c224edd93ade8aadf0bfc3c0" - }, - { - "path": "kirby_hammer/images/52.png", - "hash": "c12fe7a7d87912155c9ded3b999752fb" - }, - { - "path": "kirby_hammer/images/53.png", - "hash": "5046fbe65e726be58b1ef243b7111a7d" - }, - { - "path": "kirby_hammer/images/54.png", - "hash": "3500fda8e30e5818cf16576e11be38d8" - }, - { - "path": "kirby_hammer/images/55.png", - "hash": "dec898961403796b4dff81f2af93767f" - }, - { - "path": "kirby_hammer/images/56.png", - "hash": "da4a03072d3f3ac6b2ef6bd0c129ff4c" - }, - { - "path": "kirby_hammer/images/57.png", - "hash": "054c7b45c34819d7c6f086da4b27cf3a" - }, - { - "path": "kirby_hammer/images/58.png", - "hash": "7f2f3d88c96d8f21f47087db40a3156a" - }, - { - "path": "kirby_hammer/images/59.png", - "hash": "4db1b3f61044fc795e6e859da2030321" - }, - { - "path": "kirby_hammer/images/6.png", - "hash": "98602b15bcd486f5d334910791a11ff5" - }, - { - "path": "kirby_hammer/images/60.png", - "hash": "e3e2b230e05b168aeb0c278ce6dea4ed" - }, - { - "path": "kirby_hammer/images/61.png", - "hash": "89e1a31ef24f68d5d8d7cdf5c0e245c5" - }, - { - "path": "kirby_hammer/images/7.png", - "hash": "85f414a42d7c8a991e55ef227ce44c22" - }, - { - "path": "kirby_hammer/images/8.png", - "hash": "3e5886543cdee36c21830fb681568ac1" - }, - { - "path": "kirby_hammer/images/9.png", - "hash": "83a12e09e4c29d23c634c0f11f1823b4" - }, - { - "path": "kiss/images/0.png", - "hash": "49c396692947a52148bcef0ea47f0491" - }, - { - "path": "kiss/images/1.png", - "hash": "f3587ef479ea9243d6370f7a6b30b68b" - }, - { - "path": "kiss/images/10.png", - "hash": "d396dfc1857882f82a5294a3af1d638b" - }, - { - "path": "kiss/images/11.png", - "hash": "84c8d3845fca2efe97cb5f6beb113376" - }, - { - "path": "kiss/images/12.png", - "hash": "9d50e3777af1b60b58fe30009ce29c24" - }, - { - "path": "kiss/images/2.png", - "hash": "97fd783dbe88877952a092199671d514" - }, - { - "path": "kiss/images/3.png", - "hash": "93c7d6c3ca56be70f10eabe92a828120" - }, - { - "path": "kiss/images/4.png", - "hash": "a6079d128ba4c0fb0f332823a36b780b" - }, - { - "path": "kiss/images/5.png", - "hash": "686562b06f7834f6328a2ece1931d85d" - }, - { - "path": "kiss/images/6.png", - "hash": "5d53fa7523b11b2c61450c0b57c5826f" - }, - { - "path": "kiss/images/7.png", - "hash": "e690eac3a3ba1c32f235a64de9f10263" - }, - { - "path": "kiss/images/8.png", - "hash": "2226d16df1e6f42535bb8814919b6e7c" - }, - { - "path": "kiss/images/9.png", - "hash": "2ddacd69e518cdc3b63dc682bffe4d1e" - }, - { - "path": "klee_eat/images/0.png", - "hash": "bd284652faeb1d17a9fe9a96a7eed219" - }, - { - "path": "klee_eat/images/1.png", - "hash": "434dd145519e680ea5a7efd6c46fc181" - }, - { - "path": "klee_eat/images/10.png", - "hash": "57f83d884ef3f5da1b7036e97a77ca31" - }, - { - "path": "klee_eat/images/11.png", - "hash": "8a5807ac9c701f1fe6d8f4acac72db36" - }, - { - "path": "klee_eat/images/12.png", - "hash": "2474538aae3536aa75f00bf49eba6587" - }, - { - "path": "klee_eat/images/13.png", - "hash": "c24d9702f74c06b1e14473542ca0ecea" - }, - { - "path": "klee_eat/images/14.png", - "hash": "ce03d5f6d09e6aba982272187701756e" - }, - { - "path": "klee_eat/images/15.png", - "hash": "30f24c72d721677136805ca01cfdc50e" - }, - { - "path": "klee_eat/images/16.png", - "hash": "36f15c4c9460e7d6b2d41a03ebfa7718" - }, - { - "path": "klee_eat/images/17.png", - "hash": "70023d2f2d0a6018b839a29c70f8710f" - }, - { - "path": "klee_eat/images/18.png", - "hash": "5206043658761fa5ec7479c518a8e369" - }, - { - "path": "klee_eat/images/19.png", - "hash": "c1a2d1db2ffafc850d2d859884437dae" - }, - { - "path": "klee_eat/images/2.png", - "hash": "a187d0bfec4b78787077b8780d91e7b0" - }, - { - "path": "klee_eat/images/20.png", - "hash": "3ba814841c09721cd37e30b8ef9683a5" - }, - { - "path": "klee_eat/images/21.png", - "hash": "578e23bba8cb885c377833aa14562f9d" - }, - { - "path": "klee_eat/images/22.png", - "hash": "8495aa8a2792ac60f6359553c29c1567" - }, - { - "path": "klee_eat/images/23.png", - "hash": "1746365398e99a42860a0a8154a63541" - }, - { - "path": "klee_eat/images/24.png", - "hash": "a594a3457c8c562e5891e721a692c324" - }, - { - "path": "klee_eat/images/25.png", - "hash": "92bbc0ca794e36e10b5e1049884df9ce" - }, - { - "path": "klee_eat/images/26.png", - "hash": "85a9bc64d2a974cb718b9c08c1f84a34" - }, - { - "path": "klee_eat/images/27.png", - "hash": "bd29cf8dd5ba31d77e69904d6456d1c9" - }, - { - "path": "klee_eat/images/28.png", - "hash": "1ff5c07022df2f08355b337209d5464e" - }, - { - "path": "klee_eat/images/29.png", - "hash": "97f45cae4dd2daa2a4d3f00ca561eb58" - }, - { - "path": "klee_eat/images/3.png", - "hash": "dcc1eca20924fcd31012dc38bc2b6429" - }, - { - "path": "klee_eat/images/30.png", - "hash": "8ac8286949b0c765fb8312fee62363a6" - }, - { - "path": "klee_eat/images/4.png", - "hash": "fe507dbb5c909e28c2919d26210225a4" - }, - { - "path": "klee_eat/images/5.png", - "hash": "4b65a362e8465945c7d439c64386abc5" - }, - { - "path": "klee_eat/images/6.png", - "hash": "76244ceeded4c6ea3ffb226cf717be3f" - }, - { - "path": "klee_eat/images/7.png", - "hash": "0e7ce4c9b664d253ec57c1eb579158ef" - }, - { - "path": "klee_eat/images/8.png", - "hash": "ead69b36f949b45cc4c7da801405ae38" - }, - { - "path": "klee_eat/images/9.png", - "hash": "6bc9f15771d52cf1c1bb09e09b9b76a7" - }, - { - "path": "knock/images/0.png", - "hash": "c4e73350a09ac862d8109995436734f4" - }, - { - "path": "knock/images/1.png", - "hash": "d241d1aee02c46b4b9947eb6685822f0" - }, - { - "path": "knock/images/2.png", - "hash": "cc7023dd828227ca6af658639b10ce7e" - }, - { - "path": "knock/images/3.png", - "hash": "06b3459243c79f4c499d3c52929a4b2c" - }, - { - "path": "knock/images/4.png", - "hash": "992619f101424f96cc972b537532d7ce" - }, - { - "path": "knock/images/5.png", - "hash": "9dde5fd9fe478412f51b26344114f33d" - }, - { - "path": "knock/images/6.png", - "hash": "14823b403ee6ade595c4b9c326bf72be" - }, - { - "path": "knock/images/7.png", - "hash": "fa158f632f04f81c4eeeb4766222df07" - }, - { - "path": "learn/images/0.png", - "hash": "548f528b25cfab4e79c36f901227cd59" - }, - { - "path": "lim_x_0/images/0.png", - "hash": "c2f71b246240a101195ab7bc653fc46f" - }, - { - "path": "listen_music/images/0.png", - "hash": "63252e976b3d821f982d8886bd2900c8" - }, - { - "path": "loading/images/icon.png", - "hash": "e85c326ab5c4ca55589761be7b7e990d" - }, - { - "path": "look_this_icon/images/nmsl.png", - "hash": "4f37b38d2a14cbe368b4e427c23aa28d" - }, - { - "path": "lost_dog/images/0.png", - "hash": "4b53a52b609b76f6fff60bd1ee499109" - }, - { - "path": "love_you/images/0.png", - "hash": "66ddcca5601fd9224a1e0d17909ade56" - }, - { - "path": "love_you/images/1.png", - "hash": "3e44083dd543e1380bdc03931b09984d" - }, - { - "path": "luoyonghao_say/images/0.jpg", - "hash": "dce3cd1bc790a4475744b525e728bdd2" - }, - { - "path": "luxun_say/images/0.jpg", - "hash": "fdf0252e7edea0a3186b908af557d2a7" - }, - { - "path": "maimai_awaken/images/0.png", - "hash": "e624223202cfeefff8c6be39f395c9d6" - }, - { - "path": "maimai_join/images/0.png", - "hash": "0b76b5df240115d862fb08425857363b" - }, - { - "path": "make_friend/images/0.png", - "hash": "9b20187a1eb50164c5963fc13146f4ea" - }, - { - "path": "marriage/images/0.png", - "hash": "700e73f2bfc52f205caa46c81c55a1fe" - }, - { - "path": "marriage/images/1.png", - "hash": "b118fe27aec8b9b05fe73cb8c942726e" - }, - { - "path": "meteor/images/0.png", - "hash": "16a32e5a514c4355a164afb05d510fb6" - }, - { - "path": "mihoyo/images/logo.png", - "hash": "681bf981d9181df226ca42354b7b7a85" - }, - { - "path": "mourning/images/0.png", - "hash": "931a7b0cda1cc6aa9dc2fcc6853dea35" - }, - { - "path": "murmur/images/0.jpg", - "hash": "2f37f330f2f6c83ef74505a405f25b87" - }, - { - "path": "my_friend/images/corner1.png", - "hash": "53a18e9da0e4723e876976b06aebe1a2" - }, - { - "path": "my_friend/images/corner2.png", - "hash": "5789f0bfbbfc745f5d5e37b77d911940" - }, - { - "path": "my_friend/images/corner3.png", - "hash": "e6a10dded6652680d878434ca1a19830" - }, - { - "path": "my_friend/images/corner4.png", - "hash": "40a04aa8c2ffb9243119c865ece04cc4" - }, - { - "path": "my_friend/images/label.png", - "hash": "9538d1dd1e7e3befadacc26bbb511754" - }, - { - "path": "my_wife/images/0.png", - "hash": "c6fd08ac07edee816f25a4713758f428" - }, - { - "path": "my_wife/images/1.png", - "hash": "d4f0dca879deb9a02a732c921c6a8abb" - }, - { - "path": "name_generator/images/title.png", - "hash": "770526d5d986cceb04c0516ec5e31bd1" - }, - { - "path": "need/images/0.png", - "hash": "1b1b6fb05731056fc52d9afd3b4877b9" - }, - { - "path": "nekoha_holdsign/images/0.jpg", - "hash": "2f218b1028744b120d6ee6b19664194b" - }, - { - "path": "nijika_holdsign/images/0.jpg", - "hash": "267732c79de6f2b26a7e98146237d67e" - }, - { - "path": "no_response/images/0.png", - "hash": "2d83def33dfe559dcad883f39bfee4cb" - }, - { - "path": "nokia/images/0.jpg", - "hash": "b15f3d10d3b28f9988deb9940b2084cb" - }, - { - "path": "not_call_me/images/0.png", - "hash": "27500542a606e46aa4c218686fd43077" - }, - { - "path": "oshi_no_ko/images/background.png", - "hash": "758bbb5a92d74f0869e64039be575a76" - }, - { - "path": "oshi_no_ko/images/foreground.png", - "hash": "7e0c9250c5294a062ab4e948dbe6261c" - }, - { - "path": "oshi_no_ko/images/text1.png", - "hash": "3819b528aa7d71a3243d95de6152183e" - }, - { - "path": "oshi_no_ko/images/text2.png", - "hash": "f6f7d087081b960c553acd1645d3d6a3" - }, - { - "path": "osu/images/osu.png", - "hash": "b4b0bc153542220204b590cf48736bdd" - }, - { - "path": "out/images/out.png", - "hash": "b6790307594c2b7d57a8bec9daf8b79e" - }, - { - "path": "overtime/images/0.png", - "hash": "ec2b3f45754ffef5dd334f1e2d21f652" - }, - { - "path": "paint/images/0.png", - "hash": "c819d7bdbada27cc825db68927157b98" - }, - { - "path": "painter/images/0.png", - "hash": "a9b282341ef7222e44ad66cd9a39819c" - }, - { - "path": "pass_the_buck/images/0.png", - "hash": "5f749373afdf58cde70ea2af2d30a714" - }, - { - "path": "pass_the_buck/images/1.png", - "hash": "c966daa812d79ec51ac14ea845b8b910" - }, - { - "path": "pass_the_buck/images/2.png", - "hash": "a85eeded320e6d73ca8681f1a09cb2ec" - }, - { - "path": "pass_the_buck/images/3.png", - "hash": "18e0ee5e536c311bbc89814e73c09e62" - }, - { - "path": "pass_the_buck/images/4.png", - "hash": "b9917d59c00d7c72cd15b44e6f5432cd" - }, - { - "path": "pass_the_buck/images/5.png", - "hash": "d2f837911a2a085538a2d4800dd4650e" - }, - { - "path": "pass_the_buck/images/6.png", - "hash": "b096dc7de13827c73013216d34358be7" - }, - { - "path": "pass_the_buck/images/7.png", - "hash": "30d2811477862856697b2b277390a022" - }, - { - "path": "pat/images/0.png", - "hash": "089f648471c168ed0eadcb5ad1a8a5b0" - }, - { - "path": "pat/images/1.png", - "hash": "7e2aa352d96eee79d7ead97f9f867c58" - }, - { - "path": "pat/images/2.png", - "hash": "8268e18385c30834fad22a44d26bfffd" - }, - { - "path": "pat/images/3.png", - "hash": "afbfb52f564d8e21275d5150ebd7bc19" - }, - { - "path": "pat/images/4.png", - "hash": "184b8669333285cbca11ff02bd5e7938" - }, - { - "path": "pat/images/5.png", - "hash": "f57fb66c9dc205f3a2d60039ed3e81f3" - }, - { - "path": "pat/images/6.png", - "hash": "0bca6a9528efd4c75e069aade9c5d70f" - }, - { - "path": "pat/images/7.png", - "hash": "981681b3d681ca561254e2cbb1b2908b" - }, - { - "path": "pat/images/8.png", - "hash": "92b0a66f1fa6818635772f03a6379788" - }, - { - "path": "pat/images/9.png", - "hash": "2ee0fda7d77e0b5d6c6d65e5974c70dc" - }, - { - "path": "perfect/images/0.png", - "hash": "52548c41f2774afb87bf7aad314e9938" - }, - { - "path": "petpet/images/0.png", - "hash": "aa8401e6dee45a90dd17efac4797355d" - }, - { - "path": "petpet/images/1.png", - "hash": "97cb8b8449b8000edaa5c4380594a611" - }, - { - "path": "petpet/images/2.png", - "hash": "5e2896e5971f1f18410353c63c35bfc5" - }, - { - "path": "petpet/images/3.png", - "hash": "73812f2ec03138254ffed2199d172c9b" - }, - { - "path": "petpet/images/4.png", - "hash": "4cc824d2d50fadc3e7aa83b8f8c01585" - }, - { - "path": "pinch/images/0.png", - "hash": "b7047527f307b338fea39ec386a09f50" - }, - { - "path": "play/images/0.png", - "hash": "4964c0cecc7d5536ac070356531a0f2a" - }, - { - "path": "play/images/1.png", - "hash": "44242083d7d62c88ce1c4df5fa7e2c18" - }, - { - "path": "play/images/10.png", - "hash": "0622967a345a44eb787cb0729430ed1f" - }, - { - "path": "play/images/11.png", - "hash": "d07943ca2dc901e87dd1de1fb57f1522" - }, - { - "path": "play/images/12.png", - "hash": "611d761e98d873f2e0a295273901cb9d" - }, - { - "path": "play/images/13.png", - "hash": "91807f3f15dbd8385022a3967029520d" - }, - { - "path": "play/images/14.png", - "hash": "873c8b4a9d05d1f6869f80ba0efaf4fa" - }, - { - "path": "play/images/15.png", - "hash": "b553976c6c0539afeb354315428211f1" - }, - { - "path": "play/images/16.png", - "hash": "b9eef848ee25631a033023c18f5fb711" - }, - { - "path": "play/images/17.png", - "hash": "b0319ca25761c7b036e81e555d0d350d" - }, - { - "path": "play/images/18.png", - "hash": "2c2d1c73ef7586f3bbaed7083f503171" - }, - { - "path": "play/images/19.png", - "hash": "2678692ef119d151594d6e6b72a21100" - }, - { - "path": "play/images/2.png", - "hash": "70194e8b049eaf52bf64137d402af5b7" - }, - { - "path": "play/images/20.png", - "hash": "e5d12ed9217f3df2d5e8d3f50f692ade" - }, - { - "path": "play/images/21.png", - "hash": "93e8b3a0197f707a0272013c296c45ad" - }, - { - "path": "play/images/22.png", - "hash": "d1e23a1e2f3f67a68f13d514222e8288" - }, - { - "path": "play/images/23.png", - "hash": "027cfd72da7425411f4fbfb45af76e75" - }, - { - "path": "play/images/24.png", - "hash": "ca73fe22c80e4d12f07854456e67500d" - }, - { - "path": "play/images/25.png", - "hash": "79a133301b5aadd29c00ae351eb70258" - }, - { - "path": "play/images/26.png", - "hash": "be4252f16c83933f0f843dbe65c41df1" - }, - { - "path": "play/images/27.png", - "hash": "ca73fe22c80e4d12f07854456e67500d" - }, - { - "path": "play/images/28.png", - "hash": "668b9f971b27685a1fcc06bc6d27d661" - }, - { - "path": "play/images/29.png", - "hash": "027cfd72da7425411f4fbfb45af76e75" - }, - { - "path": "play/images/3.png", - "hash": "1f5064e766aa07cbd0bcc6014e04a363" - }, - { - "path": "play/images/30.png", - "hash": "79a133301b5aadd29c00ae351eb70258" - }, - { - "path": "play/images/31.png", - "hash": "be4252f16c83933f0f843dbe65c41df1" - }, - { - "path": "play/images/32.png", - "hash": "668b9f971b27685a1fcc06bc6d27d661" - }, - { - "path": "play/images/33.png", - "hash": "027cfd72da7425411f4fbfb45af76e75" - }, - { - "path": "play/images/34.png", - "hash": "79a133301b5aadd29c00ae351eb70258" - }, - { - "path": "play/images/35.png", - "hash": "be4252f16c83933f0f843dbe65c41df1" - }, - { - "path": "play/images/36.png", - "hash": "f15c1afc1766b284662e2972caff927e" - }, - { - "path": "play/images/37.png", - "hash": "ca73fe22c80e4d12f07854456e67500d" - }, - { - "path": "play/images/4.png", - "hash": "931b04efcc1786137c24e532f42ed847" - }, - { - "path": "play/images/5.png", - "hash": "e1e185b4450a41b2f0b3a20e7822a87f" - }, - { - "path": "play/images/6.png", - "hash": "53c0d86f536a10a6ad551845e9cb477a" - }, - { - "path": "play/images/7.png", - "hash": "84855b20768e4a8baf8a904898759fa8" - }, - { - "path": "play/images/8.png", - "hash": "12febab0de29bfc49af8f11941eef7a3" - }, - { - "path": "play/images/9.png", - "hash": "8aaa0621bce8a04b4932d997c47bae03" - }, - { - "path": "play_game/images/0.png", - "hash": "aa9ba6ed9b53feb9b655a2db774fa0cf" - }, - { - "path": "police/images/0.png", - "hash": "31a60a25b44407b6a01a07b3cdd3c2de" - }, - { - "path": "police/images/1.png", - "hash": "57959e7d0b0ee6a36f7d6eb39fd37714" - }, - { - "path": "potato/images/0.png", - "hash": "46cc49cf59d8c234489c4493d4d2c6f2" - }, - { - "path": "pound/images/0.png", - "hash": "bc329e320843da1652fa8cbaebc547f6" - }, - { - "path": "pound/images/1.png", - "hash": "1287970496b73b9b8cc581efca214167" - }, - { - "path": "pound/images/2.png", - "hash": "5196cd4b0b7add30d6ee445ef3302bdc" - }, - { - "path": "pound/images/3.png", - "hash": "6de53f69220f12bd575962f98cfcbf89" - }, - { - "path": "pound/images/4.png", - "hash": "363bc7090b8a57a5eca03ce0903cd5be" - }, - { - "path": "pound/images/5.png", - "hash": "e82712a091010daf9805def5a3a87790" - }, - { - "path": "pound/images/6.png", - "hash": "2f577a122a2b94f6a9b13a2746203906" - }, - { - "path": "pound/images/7.png", - "hash": "bbb206934bdec99cc500ccc2cd2d801d" - }, - { - "path": "printing/images/0.png", - "hash": "ac3cff745bbaf446918b84aee688a750" - }, - { - "path": "printing/images/1.png", - "hash": "72da190ca388c9ae96eb884830b4481f" - }, - { - "path": "printing/images/10.png", - "hash": "129583017b8b02ace1340066433cf986" - }, - { - "path": "printing/images/100.png", - "hash": "b6e14377c005356ef57a2e4b07cf7292" - }, - { - "path": "printing/images/101.png", - "hash": "6b1cd000248a907c1291acb96361441e" - }, - { - "path": "printing/images/102.png", - "hash": "8ec22ccdbd0c9dbc858da3dfda4967ff" - }, - { - "path": "printing/images/103.png", - "hash": "b65ecfdbdae3bbc81148bf1228180c2f" - }, - { - "path": "printing/images/104.png", - "hash": "d1fa8d37a18f9f581e9f6b14622ca1a6" - }, - { - "path": "printing/images/105.png", - "hash": "941d0130b5581674813e8404f9509eff" - }, - { - "path": "printing/images/106.png", - "hash": "63adb8500c990b71f3cb77b50375e52f" - }, - { - "path": "printing/images/107.png", - "hash": "c1fe55f6eea0e8c4971f5038318fcdc1" - }, - { - "path": "printing/images/108.png", - "hash": "3620c7b0de8754f8de8708ceedba6b23" - }, - { - "path": "printing/images/109.png", - "hash": "65e3ab016ec0924e1a2739ecbf7d35d1" - }, - { - "path": "printing/images/11.png", - "hash": "2ca1c8654ca6de78f3c4bdcd7d663234" - }, - { - "path": "printing/images/110.png", - "hash": "7f0840cfc51722d11b1843144227efdf" - }, - { - "path": "printing/images/111.png", - "hash": "77031111c9e53996042ef6e908443c15" - }, - { - "path": "printing/images/112.png", - "hash": "1264df4ba6d1325af96ba15477533af7" - }, - { - "path": "printing/images/113.png", - "hash": "8af7d6b59d30692d4e260140603abd93" - }, - { - "path": "printing/images/114.png", - "hash": "2f27ca03f5bf1f601036e5b4de8d9950" - }, - { - "path": "printing/images/12.png", - "hash": "b3c65ab3c51c559928198e17df9badc8" - }, - { - "path": "printing/images/13.png", - "hash": "740fdc5053855d7f1278cba3593ea729" - }, - { - "path": "printing/images/14.png", - "hash": "f6adfc704b7839c3e391396995073af5" - }, - { - "path": "printing/images/15.png", - "hash": "40829d369a13a6b1bfaa38406e492cbe" - }, - { - "path": "printing/images/16.png", - "hash": "6a3c780a61dbfa06f737c597e2abcaf7" - }, - { - "path": "printing/images/17.png", - "hash": "7876c0a5e91d5fecadc61ef526fdab86" - }, - { - "path": "printing/images/18.png", - "hash": "b10a8f8602cf048399db9020bfdd1e75" - }, - { - "path": "printing/images/19.png", - "hash": "ffc2ae5e811fded5c8aefe2d60635ba8" - }, - { - "path": "printing/images/2.png", - "hash": "65c5675d45f77b42afd06f5d28cecdc5" - }, - { - "path": "printing/images/20.png", - "hash": "b5609cde715a76f2857a2f810db1a8df" - }, - { - "path": "printing/images/21.png", - "hash": "7f9e9f595867665d6e793dae66957b37" - }, - { - "path": "printing/images/22.png", - "hash": "94d1cfd2cc404470f4216b3b9d5c09c9" - }, - { - "path": "printing/images/23.png", - "hash": "555fbe5b32b8fabb4dec5b67de806416" - }, - { - "path": "printing/images/24.png", - "hash": "815f6cfa6c8b8bd67e22d25f592f9efb" - }, - { - "path": "printing/images/25.png", - "hash": "fbdb72c2c34bda528c658a64ea87929b" - }, - { - "path": "printing/images/26.png", - "hash": "2711343b873784e8339b1bdfc4fcfb17" - }, - { - "path": "printing/images/27.png", - "hash": "a0e1b20a162997030cca39394f753d83" - }, - { - "path": "printing/images/28.png", - "hash": "33bfd6b64103e85f8f7593df3083d3c6" - }, - { - "path": "printing/images/29.png", - "hash": "822ddd7bb4f08a790cc2dd12def9fd57" - }, - { - "path": "printing/images/3.png", - "hash": "dd7c0fd91b364ec6ab67424f9b290252" - }, - { - "path": "printing/images/30.png", - "hash": "26135ed3ba6a1ea2689d5d456bae8091" - }, - { - "path": "printing/images/31.png", - "hash": "a4618e6f0ba690e19f8eb46fa40c24d8" - }, - { - "path": "printing/images/32.png", - "hash": "0c6b1311b2b87ec4217965aaf0142a67" - }, - { - "path": "printing/images/33.png", - "hash": "9a5328b1a5a9a1661a6d4383485f38a0" - }, - { - "path": "printing/images/34.png", - "hash": "863b57994604481030eeb9fa07917025" - }, - { - "path": "printing/images/35.png", - "hash": "b89e61f0d769c422927e2870ee2a52f7" - }, - { - "path": "printing/images/36.png", - "hash": "b2a12f4258eb4263725b3e9626c1ce0f" - }, - { - "path": "printing/images/37.png", - "hash": "fe7e7592705cfb38f3554af6ce40e676" - }, - { - "path": "printing/images/38.png", - "hash": "b8e553c9741860aa57bb88f7555bf027" - }, - { - "path": "printing/images/39.png", - "hash": "bf27d396f0e0d04a4c93370089a42e27" - }, - { - "path": "printing/images/4.png", - "hash": "91731f63760d20e0f051d57976897bf7" - }, - { - "path": "printing/images/40.png", - "hash": "5eb837747fa0858effde2e64651a14c9" - }, - { - "path": "printing/images/41.png", - "hash": "605b3313f6d3e38949db0e45e5b1a985" - }, - { - "path": "printing/images/42.png", - "hash": "36807f6d13f4c28d35c22eb8f835e4c8" - }, - { - "path": "printing/images/43.png", - "hash": "687f41f2072c26536b70bf35cbc5009b" - }, - { - "path": "printing/images/44.png", - "hash": "2d64170cbc237d3334766ffcbd1e2c54" - }, - { - "path": "printing/images/45.png", - "hash": "d5234d8605636ee02a77780372c7987f" - }, - { - "path": "printing/images/46.png", - "hash": "53d08603e7fa7e02a3741b4635ec7cd3" - }, - { - "path": "printing/images/47.png", - "hash": "bc71ddd856dfd8b24208ab35b7eedc0c" - }, - { - "path": "printing/images/48.png", - "hash": "44ce15c87fea669d5cc48f41429abf12" - }, - { - "path": "printing/images/49.png", - "hash": "ed2ba817c893cd33f465bf7d2e60ecb2" - }, - { - "path": "printing/images/5.png", - "hash": "8a7f6f66b93e58e9feb6e2207bc7e97f" - }, - { - "path": "printing/images/50.png", - "hash": "a0aab0eb666a90665c9cad5951950143" - }, - { - "path": "printing/images/51.png", - "hash": "8ac53fb8acad20be4ac2a89f7fac5f5a" - }, - { - "path": "printing/images/52.png", - "hash": "4eb11b4cc5bed7f74144884253df1fd2" - }, - { - "path": "printing/images/53.png", - "hash": "c7eaa6de72c86e828dd2f128264e6687" - }, - { - "path": "printing/images/54.png", - "hash": "f7131c14f1a5cee663b8980a21a5bffe" - }, - { - "path": "printing/images/55.png", - "hash": "5d8559a47e8580724039777930942e6d" - }, - { - "path": "printing/images/56.png", - "hash": "be35cd4ddd47f5601ce37afbf14a84de" - }, - { - "path": "printing/images/57.png", - "hash": "c8d986b658968045fea08d94c52b15c4" - }, - { - "path": "printing/images/58.png", - "hash": "2c988b171455d149b0ee55bb37c10c80" - }, - { - "path": "printing/images/59.png", - "hash": "f9a40a01d0dc22f6afed309a42357d56" - }, - { - "path": "printing/images/6.png", - "hash": "a0a79ec55b3c75901bd92d6532fe077d" - }, - { - "path": "printing/images/60.png", - "hash": "61a95457564ceb9c76acd4a778ab6cb0" - }, - { - "path": "printing/images/61.png", - "hash": "6bf483eb9155431f7b8a0592818375c2" - }, - { - "path": "printing/images/62.png", - "hash": "2a7c1edb268391bdf1b3a1ec064103e1" - }, - { - "path": "printing/images/63.png", - "hash": "725821184a8defc249382043632f4848" - }, - { - "path": "printing/images/64.png", - "hash": "4f8839993c49489c7eccd0e7b93c3f50" - }, - { - "path": "printing/images/65.png", - "hash": "7de3f303bd6415f46fd9ca4c99c1c2c6" - }, - { - "path": "printing/images/66.png", - "hash": "be3d33ec8caa9ebe286e52480bab794c" - }, - { - "path": "printing/images/67.png", - "hash": "75e5257d44f16697a230dc959554f6c9" - }, - { - "path": "printing/images/68.png", - "hash": "e52e73c209f028c8b9bdd3baf7d025bf" - }, - { - "path": "printing/images/69.png", - "hash": "fa9f2b49b619559effea9e40f5d7ecd4" - }, - { - "path": "printing/images/7.png", - "hash": "001b10e11da922e3ae037074454be1d0" - }, - { - "path": "printing/images/70.png", - "hash": "a753a853c71e1c2f9d872556a14fabff" - }, - { - "path": "printing/images/71.png", - "hash": "8adf4cf372980a71cebd5a195f955e30" - }, - { - "path": "printing/images/72.png", - "hash": "5c45b2906aaee6a42e01fd1ba6799c32" - }, - { - "path": "printing/images/73.png", - "hash": "674d3c828ea55aef6f5403c5962bde88" - }, - { - "path": "printing/images/74.png", - "hash": "8697148fdb62eaf4fcb3ba5d6d6b0d45" - }, - { - "path": "printing/images/75.png", - "hash": "1f574ff3f9fa2fcaaed49348eceff336" - }, - { - "path": "printing/images/76.png", - "hash": "048b2aae09f83ad559ee9c4f733327b5" - }, - { - "path": "printing/images/77.png", - "hash": "adf05d6f80151eef426075490d542689" - }, - { - "path": "printing/images/78.png", - "hash": "b76784a51340993c26222076ae1c7e19" - }, - { - "path": "printing/images/79.png", - "hash": "a896795729718db13a6dddb410c9ce27" - }, - { - "path": "printing/images/8.png", - "hash": "ab3e1334d642043899b90a78c4fd61f9" - }, - { - "path": "printing/images/80.png", - "hash": "a7dc03466b6bd804c503610906c6f853" - }, - { - "path": "printing/images/81.png", - "hash": "bfbc2cc1c6dd88e45c3842fbd1b90873" - }, - { - "path": "printing/images/82.png", - "hash": "5ca48057a33ee011ce9da553da7f926f" - }, - { - "path": "printing/images/83.png", - "hash": "1c658cc34d088660d29ec36df3c39f0d" - }, - { - "path": "printing/images/84.png", - "hash": "ec9221b4772f36dec3f3511fef90bb89" - }, - { - "path": "printing/images/85.png", - "hash": "5717a74c5271a239b39b525d1f7c6601" - }, - { - "path": "printing/images/86.png", - "hash": "ae6aadc1a4ee31717601b6ae9a33b755" - }, - { - "path": "printing/images/87.png", - "hash": "588ab7fd8d58c05a7874b68f67af4363" - }, - { - "path": "printing/images/88.png", - "hash": "3ffc2d672a8e8feb3db6b184c6b8588e" - }, - { - "path": "printing/images/89.png", - "hash": "c8f92188f211f3d13b760ea63bd26f22" - }, - { - "path": "printing/images/9.png", - "hash": "f99c09832d7c0381625174e9a7e0d392" - }, - { - "path": "printing/images/90.png", - "hash": "6690eec00bce15cda128cf846ea212f0" - }, - { - "path": "printing/images/91.png", - "hash": "070ee6cd8529b919b716f07074e0d167" - }, - { - "path": "printing/images/92.png", - "hash": "14bd48c391ae0baad5d3ef3d242f2fb9" - }, - { - "path": "printing/images/93.png", - "hash": "2ea865e0b43b0eba043b6b1b72f6f5c5" - }, - { - "path": "printing/images/94.png", - "hash": "3475397d42b855ebf9fb6500d194761e" - }, - { - "path": "printing/images/95.png", - "hash": "7fa50ae1f73e19ffa7ab5acb84cf9947" - }, - { - "path": "printing/images/96.png", - "hash": "9111106b9cb4a836b81f250446b3142b" - }, - { - "path": "printing/images/97.png", - "hash": "76ba9e5d54ecdb4bb7913563d9d6b7aa" - }, - { - "path": "printing/images/98.png", - "hash": "61aff8c626615c3fcae399c4e9874030" - }, - { - "path": "printing/images/99.png", - "hash": "0cf63257d2a31dc023d15e718e433300" - }, - { - "path": "prpr/images/0.png", - "hash": "0375726f9e7c54b6993129b790e7adcc" - }, - { - "path": "psyduck/images/0.jpg", - "hash": "6202ec5410070dc4c555da8f96bed178" - }, - { - "path": "psyduck/images/1.jpg", - "hash": "4bbd69e7d760ceb020ea183703ee3c4f" - }, - { - "path": "psyduck/images/10.jpg", - "hash": "2b88c97afddc019a361948db1d294c09" - }, - { - "path": "psyduck/images/11.jpg", - "hash": "443509125b7c6bf2f8d7bd2de1850e8f" - }, - { - "path": "psyduck/images/12.jpg", - "hash": "450c7e24cd5782923d5fc43ed6059274" - }, - { - "path": "psyduck/images/13.jpg", - "hash": "4d3c4db8e6d5603a670c1fda698d2a65" - }, - { - "path": "psyduck/images/14.jpg", - "hash": "fb05987bc8e71c10ea14945f5773998f" - }, - { - "path": "psyduck/images/15.jpg", - "hash": "d41d59768debb11cce3b8ddd459d9f73" - }, - { - "path": "psyduck/images/16.jpg", - "hash": "cb748afc1be5c6a24631e834e65dc788" - }, - { - "path": "psyduck/images/17.jpg", - "hash": "c907167d37716a05f9b98f67c738b5f9" - }, - { - "path": "psyduck/images/2.jpg", - "hash": "bcdada499bee10b55bcf89f3c4203c41" - }, - { - "path": "psyduck/images/3.jpg", - "hash": "2c56d83e9c28ecff169f2bc2934b7e51" - }, - { - "path": "psyduck/images/4.jpg", - "hash": "7d2d686127e5ecbdca634859f044b245" - }, - { - "path": "psyduck/images/5.jpg", - "hash": "44ef8e53403baed0104ec7be98a255f1" - }, - { - "path": "psyduck/images/6.jpg", - "hash": "1e5a3c85df09b32b7ba5e8b3e62aaa67" - }, - { - "path": "psyduck/images/7.jpg", - "hash": "4447c7004f6a34fe1dfa973899b74593" - }, - { - "path": "psyduck/images/8.jpg", - "hash": "567f517d1674346c98bd223b11549c93" - }, - { - "path": "psyduck/images/9.jpg", - "hash": "5d9e85e3e70a8f2488070a19b703452d" - }, - { - "path": "punch/images/0.png", - "hash": "5c50071615149514b42f692aea9d9290" - }, - { - "path": "punch/images/1.png", - "hash": "84e6a624d4546bfcc85c5544ee252c2b" - }, - { - "path": "punch/images/10.png", - "hash": "8c6f3c2838078b5c7241fdd5316f4363" - }, - { - "path": "punch/images/11.png", - "hash": "f25db4a8ee3a9ab72d57f434aa0ca865" - }, - { - "path": "punch/images/12.png", - "hash": "85aee422feae35c368fed239a2b1b0e0" - }, - { - "path": "punch/images/2.png", - "hash": "4c8c9b99f640c78cc634ae4c34191070" - }, - { - "path": "punch/images/3.png", - "hash": "412ac6464392446a77af45c6980e5228" - }, - { - "path": "punch/images/4.png", - "hash": "58c5395c3275558187d0c07c8e59b8b1" - }, - { - "path": "punch/images/5.png", - "hash": "f6a16aaf1d0c0f7239fb12d8f10400a7" - }, - { - "path": "punch/images/6.png", - "hash": "e827982690eaa7703178649a9f7d035b" - }, - { - "path": "punch/images/7.png", - "hash": "0086c46b42a8910c475615ce6c5a98a1" - }, - { - "path": "punch/images/8.png", - "hash": "ee9f371aff7718d1ed2dce523d2f89a0" - }, - { - "path": "punch/images/9.png", - "hash": "f17f4a89f7fed4ff5360b7a566303cd1" - }, - { - "path": "raise_image/images/raise_image.png", - "hash": "53034eae1c09898b82c778c1ea420139" - }, - { - "path": "raise_sign/images/0.jpg", - "hash": "e8151cf81d9c6944e38de9652f5ac409" - }, - { - "path": "read_book/images/0.png", - "hash": "c0bfd676ec62f8ef1a2e2c98244681ba" - }, - { - "path": "repeat/images/0.jpg", - "hash": "b3dabf0c895201454e66011eb88459ff" - }, - { - "path": "rip/images/0.png", - "hash": "ce5cab4dddc51f7c1627e5d135dc6336" - }, - { - "path": "rip/images/1.png", - "hash": "91cfac98b3e2857988c727c03ce76418" - }, - { - "path": "rip_angrily/images/0.png", - "hash": "0c58878dfbe96bdc8a4f8cb3a5d9ae79" - }, - { - "path": "rise_dead/images/0.png", - "hash": "bb4da42954caf82707ae808e07101365" - }, - { - "path": "rise_dead/images/1.png", - "hash": "b10c173d27820716bfa62c906d2fdfe0" - }, - { - "path": "rise_dead/images/10.png", - "hash": "ebc7017ada9ba2d340988a41def17a31" - }, - { - "path": "rise_dead/images/11.png", - "hash": "064625a135258a8525e23cdc44040157" - }, - { - "path": "rise_dead/images/12.png", - "hash": "78c77f0495aa78756ed7e1909009b2f6" - }, - { - "path": "rise_dead/images/13.png", - "hash": "86b71d80dea3789312eba925ea7e3b56" - }, - { - "path": "rise_dead/images/14.png", - "hash": "05993f523cdcceb0ec8bc9e6656c1f49" - }, - { - "path": "rise_dead/images/15.png", - "hash": "ac00807a618031c7f76928526503451f" - }, - { - "path": "rise_dead/images/16.png", - "hash": "8983a7c0ffd8b6ebd12fc2339c2edfeb" - }, - { - "path": "rise_dead/images/17.png", - "hash": "f3f90643dacf3f515bb6524fc87c7535" - }, - { - "path": "rise_dead/images/18.png", - "hash": "5f0b03fe62967453b1b9020ac056440d" - }, - { - "path": "rise_dead/images/19.png", - "hash": "347769d325378397d07e3532969eb868" - }, - { - "path": "rise_dead/images/2.png", - "hash": "0bc0586166d67e6a316228514d4fcb7d" - }, - { - "path": "rise_dead/images/20.png", - "hash": "0b7b35f43230dd8978969173b394d5ee" - }, - { - "path": "rise_dead/images/21.png", - "hash": "0f2e2388b681dbbd1d31fda06684e0b5" - }, - { - "path": "rise_dead/images/22.png", - "hash": "db7f48285b432b21535e8c96cb9d184c" - }, - { - "path": "rise_dead/images/23.png", - "hash": "f5d5737d78644c9f67029da754ca0ebf" - }, - { - "path": "rise_dead/images/24.png", - "hash": "6145e4ab2f5b0f92586b68b7f85ddc5e" - }, - { - "path": "rise_dead/images/25.png", - "hash": "5585c88626e8412b78bf4c51d045c2c1" - }, - { - "path": "rise_dead/images/26.png", - "hash": "be925adadeb85d0a3dce380f522440ef" - }, - { - "path": "rise_dead/images/27.png", - "hash": "339666a1146653e04cb89991310afc60" - }, - { - "path": "rise_dead/images/28.png", - "hash": "b3136958aa2f24b4c74b21a0e79bcd64" - }, - { - "path": "rise_dead/images/29.png", - "hash": "89c73842fa2b0390acbcac79014b849b" - }, - { - "path": "rise_dead/images/3.png", - "hash": "425bb05e042774c00b77a697733f9902" - }, - { - "path": "rise_dead/images/30.png", - "hash": "b36b2c85161ac3d73ece81485a725b25" - }, - { - "path": "rise_dead/images/31.png", - "hash": "dd172233ca3a26d5729ca48f8e212362" - }, - { - "path": "rise_dead/images/32.png", - "hash": "b4a080295ec55dc4e790d7f2eeaa5c88" - }, - { - "path": "rise_dead/images/33.png", - "hash": "b65493e53df17f3a9637b3e73996c111" - }, - { - "path": "rise_dead/images/4.png", - "hash": "8496a9a5c3d2a82ddaabdb477096d213" - }, - { - "path": "rise_dead/images/5.png", - "hash": "325cc724fe6e4a38dc89c08bb95aee06" - }, - { - "path": "rise_dead/images/6.png", - "hash": "23490018d2317c7feae489de998ac222" - }, - { - "path": "rise_dead/images/7.png", - "hash": "08994770e161777e630fd5436eb1e418" - }, - { - "path": "rise_dead/images/8.png", - "hash": "03c5ca3f5c0a26ea9e7c95892ff4c391" - }, - { - "path": "rise_dead/images/9.png", - "hash": "401693c6a4e254609bd2bff9864ea0ce" - }, - { - "path": "roll/images/0.png", - "hash": "4b7bd23b3f9d4c2ab7d36885a6edf21a" - }, - { - "path": "roll/images/1.png", - "hash": "19aa54e138172a2ddf7f031da195ebf1" - }, - { - "path": "roll/images/2.png", - "hash": "fa009d3c3dc2645600b3b8ba2200c240" - }, - { - "path": "roll/images/3.png", - "hash": "72ddb67a4589290b6cc7c2591c163401" - }, - { - "path": "roll/images/4.png", - "hash": "3d0292a3e7bfc90e32aa320f85d906e0" - }, - { - "path": "roll/images/5.png", - "hash": "5767ba5025f85dc60b65c1e448f4c243" - }, - { - "path": "roll/images/6.png", - "hash": "b1babecdb8a977ba477c033b9d929b73" - }, - { - "path": "roll/images/7.png", - "hash": "c0475533dc1e6282dfa50e7ee5f6d150" - }, - { - "path": "rub/images/0.png", - "hash": "a9b12cb6b809ae7bce00f90776a0366b" - }, - { - "path": "rub/images/1.png", - "hash": "dcaa808bd4d89084ab341ee5589dab75" - }, - { - "path": "rub/images/2.png", - "hash": "8e8eb0d22991b02c96b4098210a861ee" - }, - { - "path": "rub/images/3.png", - "hash": "4039152492625de12a188e0d80a2fc9c" - }, - { - "path": "rub/images/4.png", - "hash": "b80153e63c7918ae5b59aa2287803a94" - }, - { - "path": "rub/images/5.png", - "hash": "910edf679e3b3bf292a7f3a86fe878c0" - }, - { - "path": "run/images/0.png", - "hash": "8504969b4b3d302c15e37ab7033591a7" - }, - { - "path": "safe_sense/images/0.png", - "hash": "83653a8efa58498ae0ff8ea806e523ad" - }, - { - "path": "scratch_head/images/0.png", - "hash": "a72596f3beff01eaa56d20458175cf7b" - }, - { - "path": "scratch_head/images/1.png", - "hash": "7e2ffe8187564dd18cdbd7826c4cc264" - }, - { - "path": "scratch_head/images/2.png", - "hash": "53293a097661db4412b2cd4fd4d50b49" - }, - { - "path": "scratch_head/images/3.png", - "hash": "473644e2d0a98e9e4c6149485c7f57c1" - }, - { - "path": "scratch_head/images/4.png", - "hash": "4dc269cf571fe1ed75082ccb90acb5d5" - }, - { - "path": "scratch_head/images/5.png", - "hash": "477528b65f0672b6c98a285455c727c3" - }, - { - "path": "scratchcard/images/0.png", - "hash": "0a9f099c2ff528543c6c8a7cfb2566aa" - }, - { - "path": "scratchcard/images/1.png", - "hash": "8b4dd8c62fe06b2accb2ca8d79102e3a" - }, - { - "path": "scroll/images/corner1.png", - "hash": "53a18e9da0e4723e876976b06aebe1a2" - }, - { - "path": "scroll/images/corner2.png", - "hash": "5789f0bfbbfc745f5d5e37b77d911940" - }, - { - "path": "scroll/images/corner3.png", - "hash": "e6a10dded6652680d878434ca1a19830" - }, - { - "path": "scroll/images/corner4.png", - "hash": "40a04aa8c2ffb9243119c865ece04cc4" - }, - { - "path": "shutup/images/0.jpg", - "hash": "79462d2472da56f64f056b7c16b43b04" - }, - { - "path": "sit_still/images/0.png", - "hash": "7c80de7e9f83c87b8f099fda676cafde" - }, - { - "path": "slap/images/0.jpg", - "hash": "bca036d3b7a5de25c57e92525891c3e7" - }, - { - "path": "slogan/images/0.jpg", - "hash": "93e06a80b22c3b796f3bb90c590f8cd6" - }, - { - "path": "smash/images/0.png", - "hash": "f14a1ff64015a1cd5cf752e80e5cf367" - }, - { - "path": "step_on/images/0.png", - "hash": "560c088afdbeff7f0321455b0640b938" - }, - { - "path": "step_on/images/1.png", - "hash": "9ce4e4cee75d6d30385d7bd1b50b3882" - }, - { - "path": "step_on/images/2.png", - "hash": "2c3531495de3bfb2c0a631db0e2a6bf1" - }, - { - "path": "step_on/images/3.png", - "hash": "a6a77178a80d9cffdb4292901dc6cb14" - }, - { - "path": "step_on/images/4.png", - "hash": "f052852fa07b20fa4d9d48a7d8249d87" - }, - { - "path": "stew/images/0.png", - "hash": "7c4a16eda8b772b6b544060169dd3525" - }, - { - "path": "subject3/images/0.png", - "hash": "a2a9cff20f2b7bed71b353bbca7e1b4e" - }, - { - "path": "subject3/images/1.png", - "hash": "0663e94289884c89e19d53f5f37a805e" - }, - { - "path": "subject3/images/10.png", - "hash": "7465300d786f17f1c61a0e61a7e86f9c" - }, - { - "path": "subject3/images/11.png", - "hash": "5450b1d166deb5fc111eaa613e0c9743" - }, - { - "path": "subject3/images/12.png", - "hash": "b57789a7cf2658f0e8fc804d7021dab9" - }, - { - "path": "subject3/images/13.png", - "hash": "479388433fa2da814d864aad806a6330" - }, - { - "path": "subject3/images/14.png", - "hash": "dde0972118efc053a1b508ade525ace0" - }, - { - "path": "subject3/images/15.png", - "hash": "9c4607e351ac617499bae3b386eadec4" - }, - { - "path": "subject3/images/16.png", - "hash": "7b862417570f1c5b30d79d7af5901ae8" - }, - { - "path": "subject3/images/17.png", - "hash": "b1cc964931fc649042b60ffe97615361" - }, - { - "path": "subject3/images/18.png", - "hash": "0f7cb596a95807a779611ec4caad12ac" - }, - { - "path": "subject3/images/19.png", - "hash": "829f8d0432d458aa7546fc1268743be0" - }, - { - "path": "subject3/images/2.png", - "hash": "861d45ce6209864c90154eb248348605" - }, - { - "path": "subject3/images/20.png", - "hash": "0bbc2b580a0a98865de529cc99361cc4" - }, - { - "path": "subject3/images/21.png", - "hash": "398443e5ad3112c9378693f9f5839369" - }, - { - "path": "subject3/images/22.png", - "hash": "afaa7835d8df20cf192005213d05ec99" - }, - { - "path": "subject3/images/23.png", - "hash": "74452f8dc5f6bb7f14301ca41d06c3ff" - }, - { - "path": "subject3/images/24.png", - "hash": "513566c22523f4702c6fe3ebbcaaa7b5" - }, - { - "path": "subject3/images/25.png", - "hash": "f341d86d2ea081a6ef43b3b51101228d" - }, - { - "path": "subject3/images/26.png", - "hash": "f7081169f718c531c8c5da8bbb84d610" - }, - { - "path": "subject3/images/27.png", - "hash": "19ee22adcc3db8180cc24f71fac3378b" - }, - { - "path": "subject3/images/28.png", - "hash": "8159497a83492ae196456b20af1e4faf" - }, - { - "path": "subject3/images/29.png", - "hash": "d9e60f62a1cbf0a949785311fa035855" - }, - { - "path": "subject3/images/3.png", - "hash": "320f7c2fe9c92f6ea5a36a9cda2c4c8b" - }, - { - "path": "subject3/images/30.png", - "hash": "24b03235f0b1fba3d31ed65821674217" - }, - { - "path": "subject3/images/31.png", - "hash": "08408f317e12acf00d15c43e0ed3124d" - }, - { - "path": "subject3/images/32.png", - "hash": "90e29fc26cea72644affea1e6d36a18d" - }, - { - "path": "subject3/images/33.png", - "hash": "7dd28f51416e23ed8d3cff765aa82ce6" - }, - { - "path": "subject3/images/34.png", - "hash": "fc0188d61f7ec8566a68cfe3bd0b9c0a" - }, - { - "path": "subject3/images/35.png", - "hash": "1dde573f5267736f2eda1850f670d797" - }, - { - "path": "subject3/images/36.png", - "hash": "611b06210be7b145d1a72682d1347e08" - }, - { - "path": "subject3/images/37.png", - "hash": "d4a7183252f48f1c5b7322f0f6358feb" - }, - { - "path": "subject3/images/38.png", - "hash": "9a8cc6024f11c08068915cc9cc387ebb" - }, - { - "path": "subject3/images/39.png", - "hash": "c4a4ed6eb1476164bf1ff270c8b0e7db" - }, - { - "path": "subject3/images/4.png", - "hash": "b310b77a4daa79da8ef621af5692dcc1" - }, - { - "path": "subject3/images/40.png", - "hash": "2734bb8a23e3519f8f9511d72d5ec735" - }, - { - "path": "subject3/images/41.png", - "hash": "3331072e0537e41ded19314e011acdaf" - }, - { - "path": "subject3/images/42.png", - "hash": "0fc6190c0c564e4cfac013f9fcbb02df" - }, - { - "path": "subject3/images/43.png", - "hash": "2e76d81806e0aaebe253e9424ad32b62" - }, - { - "path": "subject3/images/44.png", - "hash": "a87bd77a85a65305c1d51bc159ba930c" - }, - { - "path": "subject3/images/45.png", - "hash": "9d8cb18b4d60f221588d5b39b3809e28" - }, - { - "path": "subject3/images/46.png", - "hash": "750ac0e55e61b9c0b8131b6924ce8964" - }, - { - "path": "subject3/images/47.png", - "hash": "97e1c683e7ac52828e0204a0a974005f" - }, - { - "path": "subject3/images/48.png", - "hash": "3fa07c77118bf02a65fb43209b8ef4ce" - }, - { - "path": "subject3/images/49.png", - "hash": "921017b55d8858c1e6756b75ca26f8b2" - }, - { - "path": "subject3/images/5.png", - "hash": "21d0edcb7aebaa0216527a1c3b925693" - }, - { - "path": "subject3/images/50.png", - "hash": "e9b762a8465494a81caf226979d22c6f" - }, - { - "path": "subject3/images/51.png", - "hash": "c1427d774bb7554c94c8026581389b58" - }, - { - "path": "subject3/images/52.png", - "hash": "5c03b15bce49aa649e35b1c4143ded20" - }, - { - "path": "subject3/images/53.png", - "hash": "cb04bf2c1b92fe31678618af12c08c0b" - }, - { - "path": "subject3/images/54.png", - "hash": "bd3f8b1cdcbcaf3f0c83ed095f25b2b4" - }, - { - "path": "subject3/images/55.png", - "hash": "e148d4c35deb04683ae43bfe33fff51a" - }, - { - "path": "subject3/images/56.png", - "hash": "a659375330697c7bd50965ba8c8d7cf6" - }, - { - "path": "subject3/images/57.png", - "hash": "90753d51c0470c54b8389524dd91ce9c" - }, - { - "path": "subject3/images/58.png", - "hash": "57dd08e2d67a17609d16d5b200314c2e" - }, - { - "path": "subject3/images/59.png", - "hash": "a74615f1408aae72f5ee1f41266a6e29" - }, - { - "path": "subject3/images/6.png", - "hash": "81cbb0550c4727f80f12be78a3d5698b" - }, - { - "path": "subject3/images/60.png", - "hash": "dc3f4c57079c2b232066a86ef3cef1ce" - }, - { - "path": "subject3/images/61.png", - "hash": "9ecece5f83015702be89a29c77a45ed7" - }, - { - "path": "subject3/images/62.png", - "hash": "5b3836c66bdde7ae6fda23d885bbbe89" - }, - { - "path": "subject3/images/63.png", - "hash": "161b993dbf0d237b6d60361cd387943c" - }, - { - "path": "subject3/images/64.png", - "hash": "bac3b2d379c7aa4602980c0d8f7d61a3" - }, - { - "path": "subject3/images/65.png", - "hash": "fffb774444fd41fabd4508dbf78f88bb" - }, - { - "path": "subject3/images/66.png", - "hash": "9561fc424648ee78bfbb71ad89e9548b" - }, - { - "path": "subject3/images/67.png", - "hash": "0efd72fdf6139b1af810bf0ae13a4992" - }, - { - "path": "subject3/images/68.png", - "hash": "9999abe49aa4a36d2a61251a73f624bc" - }, - { - "path": "subject3/images/69.png", - "hash": "aeb64b3260daf9dca46c0f21e02b2ae9" - }, - { - "path": "subject3/images/7.png", - "hash": "12c3673d0b84385aaf097a60fe9572ac" - }, - { - "path": "subject3/images/70.png", - "hash": "4cfaca280333f492dc34b01f8c182464" - }, - { - "path": "subject3/images/71.png", - "hash": "91aa2eea32858278e932af4c5faa92b4" - }, - { - "path": "subject3/images/72.png", - "hash": "f1a70111aafe807d615ab8e71b4606fe" - }, - { - "path": "subject3/images/73.png", - "hash": "bc7cf26e319112f10e6688c609726a83" - }, - { - "path": "subject3/images/74.png", - "hash": "5c62b5550cc1c5c932ad251fca5baf71" - }, - { - "path": "subject3/images/75.png", - "hash": "734dbf4e53b1d282922d422b13c8c556" - }, - { - "path": "subject3/images/76.png", - "hash": "195167bd2922b29c14263400d2a40740" - }, - { - "path": "subject3/images/77.png", - "hash": "769ea9e852412b763cf887cd146fbea1" - }, - { - "path": "subject3/images/78.png", - "hash": "e687797b31bfcc9564b870fb88644a6f" - }, - { - "path": "subject3/images/79.png", - "hash": "868b4d5c5a1b111d8dba8e77276373fc" - }, - { - "path": "subject3/images/8.png", - "hash": "7ee09745900d78fb26052f8de1a62598" - }, - { - "path": "subject3/images/80.png", - "hash": "71e82ad6542d29a64ba162feedabf6dd" - }, - { - "path": "subject3/images/81.png", - "hash": "439112a41b4c9d8d9094168c1469eaef" - }, - { - "path": "subject3/images/82.png", - "hash": "484b1ba7b6c9f980bbe4bac216911f71" - }, - { - "path": "subject3/images/83.png", - "hash": "c39580af65bf6a9bbbc04e4790b49168" - }, - { - "path": "subject3/images/84.png", - "hash": "0dcda81a17df1288f21234d8e5181161" - }, - { - "path": "subject3/images/85.png", - "hash": "4a4f85acc530bdb9f4fd4efb03bf152b" - }, - { - "path": "subject3/images/9.png", - "hash": "29e9ee02fbabf687015fa83258679abe" - }, - { - "path": "suck/images/0.png", - "hash": "848d6fe194940dc2fef9db9a354fb126" - }, - { - "path": "suck/images/1.png", - "hash": "74739c77b17df646533133ab49174379" - }, - { - "path": "suck/images/10.png", - "hash": "76688f982ae2e1c7e878ba185fcddd7d" - }, - { - "path": "suck/images/11.png", - "hash": "d1723c022b984588853956ad454c0eba" - }, - { - "path": "suck/images/2.png", - "hash": "a13a413108cc0e319449d549df0533f2" - }, - { - "path": "suck/images/3.png", - "hash": "5663af4b29aed543cbab978154d46a6c" - }, - { - "path": "suck/images/4.png", - "hash": "e51457c880f8bac176d7adcce7c2374f" - }, - { - "path": "suck/images/5.png", - "hash": "1d7a90731644d866ca75975da0b9b074" - }, - { - "path": "suck/images/6.png", - "hash": "95f8124f3135e813c1273b6261a49855" - }, - { - "path": "suck/images/7.png", - "hash": "138eb577148a6e2ffa7e9b21de644395" - }, - { - "path": "suck/images/8.png", - "hash": "e58d096d494249b94565a122b6bfc1e6" - }, - { - "path": "suck/images/9.png", - "hash": "35d5c2a770ca62666d054f7de229c01b" - }, - { - "path": "support/images/0.png", - "hash": "f82b0d023e4aab41df6159db726f4ae3" - }, - { - "path": "tankuku_raisesign/images/0.png", - "hash": "e4eac3dbf019343f3dd02597e982707d" - }, - { - "path": "tankuku_raisesign/images/1.png", - "hash": "896acaf1cc2cab04833244b89cb8dca7" - }, - { - "path": "tankuku_raisesign/images/10.png", - "hash": "e775c695c9875a67106d5f7f421def85" - }, - { - "path": "tankuku_raisesign/images/11.png", - "hash": "067068e71e648e0e79ef280e1bc49fc2" - }, - { - "path": "tankuku_raisesign/images/12.png", - "hash": "0dcb44d94c9422d1c2f5b37b7d0409c7" - }, - { - "path": "tankuku_raisesign/images/13.png", - "hash": "41fd25672049e69721d9f626247d4ac8" - }, - { - "path": "tankuku_raisesign/images/14.png", - "hash": "f798a270ffe2a4992e8ac23c4e749dc4" - }, - { - "path": "tankuku_raisesign/images/2.png", - "hash": "d60603b9dce7924f237c7610c636b6d0" - }, - { - "path": "tankuku_raisesign/images/3.png", - "hash": "c9eaf5c44495cd5b2e3a53e92dca9037" - }, - { - "path": "tankuku_raisesign/images/4.png", - "hash": "eadb1e2419fe3b138b83ac72d26c175f" - }, - { - "path": "tankuku_raisesign/images/5.png", - "hash": "31511f3f3bd656f0481cc43579806f69" - }, - { - "path": "tankuku_raisesign/images/6.png", - "hash": "140f1de7f05e51ca0024b7147978e5a6" - }, - { - "path": "tankuku_raisesign/images/7.png", - "hash": "7c595f3e0855121586e0e1d132a570f6" - }, - { - "path": "tankuku_raisesign/images/8.png", - "hash": "cbfc69c8c36e6b40b1f6d2b5de48cdd7" - }, - { - "path": "tankuku_raisesign/images/9.png", - "hash": "7b43a1b2f5c738b821224919141318dc" - }, - { - "path": "taunt/images/0.png", - "hash": "5c7c1026ecca7ec754ecdf622bdbcec9" - }, - { - "path": "teach/images/0.png", - "hash": "d035c0cb0ffcc2487cc563d9222fe37e" - }, - { - "path": "tease/images/0.png", - "hash": "8251e76997777ce41acf17ff15af23fd" - }, - { - "path": "tease/images/1.png", - "hash": "9d647800cdeedc8f3c5b1b776a7cccb0" - }, - { - "path": "tease/images/10.png", - "hash": "057cfbfad82bb0b0908007ebfed287a5" - }, - { - "path": "tease/images/11.png", - "hash": "da37ae44aed77e31d728b67661617ad5" - }, - { - "path": "tease/images/12.png", - "hash": "7b5aed610a21aa724d51b42b72a65c38" - }, - { - "path": "tease/images/13.png", - "hash": "78cb78fd9a69b688f32035c04b823799" - }, - { - "path": "tease/images/14.png", - "hash": "f35d24e56efebef538d35710f00e6705" - }, - { - "path": "tease/images/15.png", - "hash": "208655c7486c4a84e431001034d34f36" - }, - { - "path": "tease/images/16.png", - "hash": "2885f985790cb8faa62245a6eae275d5" - }, - { - "path": "tease/images/17.png", - "hash": "0ea6cec2b18fdf9c1114e478327735ce" - }, - { - "path": "tease/images/18.png", - "hash": "8d5d40c3632d608229f4654598504c2c" - }, - { - "path": "tease/images/19.png", - "hash": "2af25b9cd739f125ed554da6d42a57e4" - }, - { - "path": "tease/images/2.png", - "hash": "7082394ff52b33cda2cb8331d13abdb0" - }, - { - "path": "tease/images/20.png", - "hash": "73555cf10c26253029e27d6357ff7a68" - }, - { - "path": "tease/images/21.png", - "hash": "1ed333486a248a18a84348c7f5629639" - }, - { - "path": "tease/images/22.png", - "hash": "180f319575c668818299fbb7354665e6" - }, - { - "path": "tease/images/23.png", - "hash": "41a81c881a2a9b2232f36d7fe7f640c3" - }, - { - "path": "tease/images/3.png", - "hash": "9df8b76fba5c7efad4d2d41182ed23ec" - }, - { - "path": "tease/images/4.png", - "hash": "ecca01e1ea93aacf2b993eeac4c8a9a3" - }, - { - "path": "tease/images/5.png", - "hash": "f8b89e4d9227c84aab6327595e262341" - }, - { - "path": "tease/images/6.png", - "hash": "3581909eee488e81c478575b83366856" - }, - { - "path": "tease/images/7.png", - "hash": "efade3fa3148c398d3f7dbf7cb0b7ce2" - }, - { - "path": "tease/images/8.png", - "hash": "b731fabc810ff894d8204bb3d5070068" - }, - { - "path": "tease/images/9.png", - "hash": "841db44a3ea19ca016ba21a0f4d71564" - }, - { - "path": "telescope/images/0.png", - "hash": "c41e9d05c444d778ac6c86db0d85f937" - }, - { - "path": "telescope/images/1.png", - "hash": "d5e42e7fe9212ec737ddb6e73613ab21" - }, - { - "path": "telescope/images/10.png", - "hash": "5bb50ce60aba42514a271503320b203f" - }, - { - "path": "telescope/images/11.png", - "hash": "3fdc0118fa8a71150675b7e70e3d7dd6" - }, - { - "path": "telescope/images/12.png", - "hash": "67a5fdb48731d80b958ba805b100dd74" - }, - { - "path": "telescope/images/13.png", - "hash": "446b870ace6e7c9e78792e8bc5c608a8" - }, - { - "path": "telescope/images/14.png", - "hash": "9ca7f58e9b07574d53528a10c8b5fc93" - }, - { - "path": "telescope/images/15.png", - "hash": "cce35b572e61fc70e6e265f40dd526be" - }, - { - "path": "telescope/images/16.png", - "hash": "3657a2c04641dc129b350836fe41e4aa" - }, - { - "path": "telescope/images/17.png", - "hash": "3f8da97862268ca384307636a996d556" - }, - { - "path": "telescope/images/18.png", - "hash": "0ea9033660f0fbb60c6a06ae108726a8" - }, - { - "path": "telescope/images/19.png", - "hash": "d500027a9ba87976598aeb234d24891f" - }, - { - "path": "telescope/images/2.png", - "hash": "8df0021b4326694de69062b51cb517ab" - }, - { - "path": "telescope/images/20.png", - "hash": "06e08ecea85d6b86dba79bf2b91d16b5" - }, - { - "path": "telescope/images/21.png", - "hash": "dcd0d48e26975676fccf6c863524a23f" - }, - { - "path": "telescope/images/22.png", - "hash": "0c24d750e8eab9e24e597bb4b0d907e4" - }, - { - "path": "telescope/images/23.png", - "hash": "c93bacb6b5e79b1f1da8580944e57fbe" - }, - { - "path": "telescope/images/24.png", - "hash": "2d8650c6e75f74a8db0103d8635de8d8" - }, - { - "path": "telescope/images/25.png", - "hash": "57ef55cebaa899f9695e26359df58089" - }, - { - "path": "telescope/images/26.png", - "hash": "aa5ffbbfe4360fd8c14726d13d7d692a" - }, - { - "path": "telescope/images/27.png", - "hash": "71ca4f6a38a46bb00bd81a1e755045b7" - }, - { - "path": "telescope/images/28.png", - "hash": "dece33149e54e3e94f5abfada94bc1f2" - }, - { - "path": "telescope/images/29.png", - "hash": "c2e917d6e003142516f6068e6f9cb49e" - }, - { - "path": "telescope/images/3.png", - "hash": "5cd191af1597680d28d675b1b4eb4378" - }, - { - "path": "telescope/images/30.png", - "hash": "6b4ea969d8c41440f94a675fcd85a4c1" - }, - { - "path": "telescope/images/31.png", - "hash": "17522a458bc5ddd75d79414568f171b0" - }, - { - "path": "telescope/images/32.png", - "hash": "c8343923db91cd85967fa0a0d4335247" - }, - { - "path": "telescope/images/33.png", - "hash": "a5e343f8d7e91e05c74b1327ee4f2b0c" - }, - { - "path": "telescope/images/34.png", - "hash": "3853c070a1af62d58de4083d6f04e7ca" - }, - { - "path": "telescope/images/35.png", - "hash": "535422a6063c069864421df59ddfb15e" - }, - { - "path": "telescope/images/36.png", - "hash": "9846f13d97b218f549b07807a7277968" - }, - { - "path": "telescope/images/37.png", - "hash": "60bc61a0b77914557b4f7d3284f2f95d" - }, - { - "path": "telescope/images/38.png", - "hash": "db53ced6558f9ba28bd181bf7f6f50b0" - }, - { - "path": "telescope/images/39.png", - "hash": "766a622239beeb73c7669552c73f49e3" - }, - { - "path": "telescope/images/4.png", - "hash": "663b56a5a899d4943360be75a9d53856" - }, - { - "path": "telescope/images/40.png", - "hash": "28fe99b118c43a866ffdd55e7cf238d0" - }, - { - "path": "telescope/images/41.png", - "hash": "bb3af2fb3610230f2cd3e3bbd311e6e2" - }, - { - "path": "telescope/images/42.png", - "hash": "35d25cc4cb886c788775538b0e72e70c" - }, - { - "path": "telescope/images/43.png", - "hash": "bbb676417efac800988dc52280ce97d3" - }, - { - "path": "telescope/images/44.png", - "hash": "84af1d5cd1ce5322f20c3db22f343e64" - }, - { - "path": "telescope/images/45.png", - "hash": "738a8c19b8e26957e9900f6bca6b8642" - }, - { - "path": "telescope/images/46.png", - "hash": "7f938fe9839f320f6803e010382ca970" - }, - { - "path": "telescope/images/47.png", - "hash": "ef2522dbbbbb6ead80b385d2291a5e7e" - }, - { - "path": "telescope/images/48.png", - "hash": "546585028688db040304f06aa46ba667" - }, - { - "path": "telescope/images/49.png", - "hash": "1922d2e593643751701a99580bad4562" - }, - { - "path": "telescope/images/5.png", - "hash": "ba77bcfd62b0a2638c02a230fee2a009" - }, - { - "path": "telescope/images/50.png", - "hash": "2992e0ac616466e3d718836336a65e2a" - }, - { - "path": "telescope/images/51.png", - "hash": "493805462c4ddd56d2c6306385a65fb4" - }, - { - "path": "telescope/images/52.png", - "hash": "359f24e690906ff6760ddf1bd3d3d0b1" - }, - { - "path": "telescope/images/53.png", - "hash": "607838cf2a597b475cd6a29c75ab7eba" - }, - { - "path": "telescope/images/54.png", - "hash": "63e469d400a4913d85adba44155f65a0" - }, - { - "path": "telescope/images/55.png", - "hash": "bb97c3206dbad69e82ba1acdb5139f0e" - }, - { - "path": "telescope/images/56.png", - "hash": "f2cf92bcae512b48eea03b04af141c9f" - }, - { - "path": "telescope/images/57.png", - "hash": "792144594600379d326b64b92aa380a2" - }, - { - "path": "telescope/images/58.png", - "hash": "9790ae7260c2e8fbbd8a899e6f012a26" - }, - { - "path": "telescope/images/59.png", - "hash": "f5cf648e96fa8876a1c0242b447abc69" - }, - { - "path": "telescope/images/6.png", - "hash": "d886c9af9f875db9db93c835d69a5738" - }, - { - "path": "telescope/images/60.png", - "hash": "7fe21f8f3339667a99436b04da11eb7e" - }, - { - "path": "telescope/images/61.png", - "hash": "75a5a387ff70ad55d3b8de40fc7bb12d" - }, - { - "path": "telescope/images/62.png", - "hash": "b85dd020220b0ea23299be533b3264c6" - }, - { - "path": "telescope/images/63.png", - "hash": "b04839373a4f2ab6b975718b443983af" - }, - { - "path": "telescope/images/64.png", - "hash": "ffc1fd5129af31e5ecec98326a735a23" - }, - { - "path": "telescope/images/65.png", - "hash": "feacc00332b05c643541d1adf7f425c6" - }, - { - "path": "telescope/images/66.png", - "hash": "510c6bf8bb18ed960dd093c61188f18b" - }, - { - "path": "telescope/images/67.png", - "hash": "4d3f87379a919d9ada48811a413ae1b1" - }, - { - "path": "telescope/images/68.png", - "hash": "df2f6728bb098b5911c1fdde2b3868ea" - }, - { - "path": "telescope/images/7.png", - "hash": "b4faee5ebd2c1a0060e8a33c5b8a0173" - }, - { - "path": "telescope/images/8.png", - "hash": "2fbea6ed0a789d20487180ad4a76532d" - }, - { - "path": "telescope/images/9.png", - "hash": "31443a497fbb036767f0c367f65f960d" - }, - { - "path": "think_what/images/0.png", - "hash": "550c3e7829033511873a12d0a8e25447" - }, - { - "path": "this_chicken/images/0.png", - "hash": "ed79b572dd871fa72d815bd646c4f48b" - }, - { - "path": "throw/images/0.png", - "hash": "b3e1c12b34acc44e1dd63ce05330025e" - }, - { - "path": "throw_gif/images/0.png", - "hash": "1f0eab0cb4b06609712c14e788209b58" - }, - { - "path": "throw_gif/images/1.png", - "hash": "8d7168433eaa08d827d4165a1f47f76a" - }, - { - "path": "throw_gif/images/2.png", - "hash": "aae0c868f80bdeb5a3345326757c129f" - }, - { - "path": "throw_gif/images/3.png", - "hash": "770abef39d642b721896fc92237beb7a" - }, - { - "path": "throw_gif/images/4.png", - "hash": "29ed013453ef3495b16f231a3c423dd4" - }, - { - "path": "throw_gif/images/5.png", - "hash": "144ba24b867fb739dd2c497e325fb508" - }, - { - "path": "throw_gif/images/6.png", - "hash": "ce41dd6517baf2a389093a2b9a9d1b4b" - }, - { - "path": "throw_gif/images/7.png", - "hash": "08d7b581c394979ab9d63e004b23d67a" - }, - { - "path": "thump/images/0.png", - "hash": "a3db460ecbc8ed4d14bb900d535bf6a5" - }, - { - "path": "thump/images/1.png", - "hash": "4fb3e391510555e146d506705ea0f242" - }, - { - "path": "thump/images/2.png", - "hash": "f004a475c1cd77b1c3852b3df5027f0f" - }, - { - "path": "thump/images/3.png", - "hash": "4e9ef84cdbd3833171f74727ae007aa3" - }, - { - "path": "thump_wildly/images/0.png", - "hash": "1f6e57bccf7f58f6b140abeb1c3b941c" - }, - { - "path": "thump_wildly/images/1.png", - "hash": "22aec171174bb5957d74390e87b6ef83" - }, - { - "path": "thump_wildly/images/10.png", - "hash": "6fcc6eb6320db0a166bee663d999eae5" - }, - { - "path": "thump_wildly/images/11.png", - "hash": "4c3db37b7014adaff0c836f39d4c964f" - }, - { - "path": "thump_wildly/images/12.png", - "hash": "827281875b7952487f338771a4209983" - }, - { - "path": "thump_wildly/images/13.png", - "hash": "a325da842b19d4fe31ab95e0656315f8" - }, - { - "path": "thump_wildly/images/14.png", - "hash": "4d6016470d4d7e461529663cec234cf0" - }, - { - "path": "thump_wildly/images/15.png", - "hash": "4b39fd5edfa9d053c00d2990cd20ff41" - }, - { - "path": "thump_wildly/images/16.png", - "hash": "c48b6254004e13e205a06b70f5ea300d" - }, - { - "path": "thump_wildly/images/17.png", - "hash": "920f35e60237244358c8f9a47d04b7c6" - }, - { - "path": "thump_wildly/images/18.png", - "hash": "09677cbd43ec5d7dc791855ba0e2842e" - }, - { - "path": "thump_wildly/images/19.png", - "hash": "66f6a4dc418a6955ba7b9a5df64dd2d1" - }, - { - "path": "thump_wildly/images/2.png", - "hash": "7efa3aea81c37808f950335be0922424" - }, - { - "path": "thump_wildly/images/20.png", - "hash": "2c2b482fb1154a3cf885ba38223aa2da" - }, - { - "path": "thump_wildly/images/21.png", - "hash": "673ec97403e5d92fc44788942b152642" - }, - { - "path": "thump_wildly/images/22.png", - "hash": "641d5f6862d18b43c2c8c4670f40eb74" - }, - { - "path": "thump_wildly/images/23.png", - "hash": "6af4359dea571c1f14f9f7fba43838d1" - }, - { - "path": "thump_wildly/images/24.png", - "hash": "c055a22db19722fb2f4ea5c4026d8fdd" - }, - { - "path": "thump_wildly/images/25.png", - "hash": "5ef2c5f1a390eb74147291d51ecbc5af" - }, - { - "path": "thump_wildly/images/26.png", - "hash": "b7005e93b8971a5d0e410b3a2fad6722" - }, - { - "path": "thump_wildly/images/27.png", - "hash": "c3a792b3c53f0c20e5d7e11b20ed4545" - }, - { - "path": "thump_wildly/images/28.png", - "hash": "a53192f9a057b5fac112a722a6df83b6" - }, - { - "path": "thump_wildly/images/29.png", - "hash": "12b2d0924e1d697f43a95024e2c5cc47" - }, - { - "path": "thump_wildly/images/3.png", - "hash": "eccebf3e49a818599407970f1835f951" - }, - { - "path": "thump_wildly/images/30.png", - "hash": "f2df7fed5364434fc87f2c200ee8230d" - }, - { - "path": "thump_wildly/images/4.png", - "hash": "0831aee0b3a2def7bef42ac7eae538f4" - }, - { - "path": "thump_wildly/images/5.png", - "hash": "af37e14eba37d272867bc16a650d6cc7" - }, - { - "path": "thump_wildly/images/6.png", - "hash": "af0eebbf35bdf5a9b0726c86322af301" - }, - { - "path": "thump_wildly/images/7.png", - "hash": "cf85f256a80234fbc2cb8dd5fb10a536" - }, - { - "path": "thump_wildly/images/8.png", - "hash": "01a470586d3ca7b4f5ce1701e4a2ea31" - }, - { - "path": "thump_wildly/images/9.png", - "hash": "d191535c58006ac23687e7910d84970e" - }, - { - "path": "tightly/images/0.png", - "hash": "a75986b79eb610e85c68d27a68e121ce" - }, - { - "path": "tightly/images/1.png", - "hash": "ffc5cd12eff13d205b5873810939d071" - }, - { - "path": "tightly/images/10.png", - "hash": "c3be7c205aca24c400e83a98a007a4b1" - }, - { - "path": "tightly/images/11.png", - "hash": "cd36590de435081542abc4f8b5e03ed7" - }, - { - "path": "tightly/images/12.png", - "hash": "dd3dc95f856c43fa3dcad347d7942506" - }, - { - "path": "tightly/images/13.png", - "hash": "5a57c97e80873ac64a2db11e71d0331c" - }, - { - "path": "tightly/images/14.png", - "hash": "d5f7e6eafabe6c1a17b1f985b154ff08" - }, - { - "path": "tightly/images/15.png", - "hash": "85075732dbd183a02b93b7b4eb8c2592" - }, - { - "path": "tightly/images/16.png", - "hash": "8ad15d7c72142b9b3f81146ced8196c8" - }, - { - "path": "tightly/images/17.png", - "hash": "43ec85f7f7fc18485acdb329a7b9c173" - }, - { - "path": "tightly/images/18.png", - "hash": "ba7ac479234cfada00bebe34d96ae8b4" - }, - { - "path": "tightly/images/19.png", - "hash": "7e562d467024416aea69a05e3214cc0e" - }, - { - "path": "tightly/images/2.png", - "hash": "91ab512732c81e4f1ee8a1ed85834523" - }, - { - "path": "tightly/images/3.png", - "hash": "991e06589dd243c45560f4259627c673" - }, - { - "path": "tightly/images/4.png", - "hash": "170d0a57327cb7dc19a44d6dd801a292" - }, - { - "path": "tightly/images/5.png", - "hash": "021d95cebbf539d14d258253d10e9370" - }, - { - "path": "tightly/images/6.png", - "hash": "7f7cb2d5f554dbc3df70128e53653c1f" - }, - { - "path": "tightly/images/7.png", - "hash": "68683eaeb8e1a2d4aa81f6b627738d09" - }, - { - "path": "tightly/images/8.png", - "hash": "dc63be99d968fe0007527d8fc4dcfcf1" - }, - { - "path": "tightly/images/9.png", - "hash": "23e00f03f6a6a883f2550b91646e9fd7" - }, - { - "path": "together/images/0.png", - "hash": "ed562d9d1bf0d345ce83b1b7a83524ac" - }, - { - "path": "tom_tease/images/0.png", - "hash": "fa85e87e37e9c4b504a1780a3c4c6b88" - }, - { - "path": "tom_tease/images/1.png", - "hash": "93def2c1c29dd20ded0f0d0edff718bb" - }, - { - "path": "tom_tease/images/10.png", - "hash": "61581cc55b7d12b42cbd0c1d262f7b76" - }, - { - "path": "tom_tease/images/2.png", - "hash": "788839a66c32cd720963f558496f2f07" - }, - { - "path": "tom_tease/images/3.png", - "hash": "d6017770501a67faade33c99a8b943bd" - }, - { - "path": "tom_tease/images/4.png", - "hash": "bda67a180a0b37cf03730c348f7340a1" - }, - { - "path": "tom_tease/images/5.png", - "hash": "01395809ca036069b2dab6a08fb74dc8" - }, - { - "path": "tom_tease/images/6.png", - "hash": "46c45cab9638783baa241c72b42fdbe8" - }, - { - "path": "tom_tease/images/7.png", - "hash": "4141b5f19e0cb49f0a5642e2ae7c7646" - }, - { - "path": "tom_tease/images/8.png", - "hash": "e975bf0e3a4650dc9794a1dd777e8399" - }, - { - "path": "tom_tease/images/9.png", - "hash": "c481a32e49ac00db55b57d36d65b0d67" - }, - { - "path": "tomb_yeah/images/0.jpg", - "hash": "bc2ac4c1bd62d19c7ec2f98f21d6101d" - }, - { - "path": "twist/images/0.png", - "hash": "f0b59e60d234e2b145e453f1f3ccac5b" - }, - { - "path": "twist/images/1.png", - "hash": "380855eda516a3be0401a5dee662378e" - }, - { - "path": "twist/images/2.png", - "hash": "07b9cf8a73ed851f4965522143c74a8b" - }, - { - "path": "twist/images/3.png", - "hash": "f15b4a115675e62d213d25f6bc7237e8" - }, - { - "path": "twist/images/4.png", - "hash": "946914bdada2b87e06172331e288db83" - }, - { - "path": "wakeup/images/0.jpg", - "hash": "2737c1fd3d312729ee917f5bee3f9016" - }, - { - "path": "wallpaper/images/0.png", - "hash": "5d91e3669643cd2d45fe64c6c9501696" - }, - { - "path": "wallpaper/images/1.png", - "hash": "12eab235d0dc3272884509f6e1ca2bf2" - }, - { - "path": "wallpaper/images/10.png", - "hash": "bd5589b1c64998359a7e1d7bae363aba" - }, - { - "path": "wallpaper/images/11.png", - "hash": "474c2eb9906581e94ce89fcc1636d961" - }, - { - "path": "wallpaper/images/12.png", - "hash": "eb823e78e4088b6abc8273f4466f31c4" - }, - { - "path": "wallpaper/images/13.png", - "hash": "fc6c90ca74d9a8de92bcda226749809b" - }, - { - "path": "wallpaper/images/14.png", - "hash": "22e92ab92d43a4b83d572e2f3d58d6be" - }, - { - "path": "wallpaper/images/15.png", - "hash": "d1a5f088684f0b400a792efbb34c00cb" - }, - { - "path": "wallpaper/images/16.png", - "hash": "7db94297b51c8766705325cc7aa51a09" - }, - { - "path": "wallpaper/images/17.png", - "hash": "edabb58ee911b3d7970afab119ec0b38" - }, - { - "path": "wallpaper/images/18.png", - "hash": "3d8ffcd34928a1bbd75134f1ccee7f04" - }, - { - "path": "wallpaper/images/19.png", - "hash": "41879caa381e4c7107c6f1810a2c308a" - }, - { - "path": "wallpaper/images/2.png", - "hash": "c13be05187841b4b03263e545fe24b76" - }, - { - "path": "wallpaper/images/3.png", - "hash": "7b711459f62b49211078c1473f938062" - }, - { - "path": "wallpaper/images/4.png", - "hash": "d16b19293ef50f06c5ccd192697eec71" - }, - { - "path": "wallpaper/images/5.png", - "hash": "18eb7e80f997eadb512c2151162788dc" - }, - { - "path": "wallpaper/images/6.png", - "hash": "4a3a35a985229434c62e82278a788630" - }, - { - "path": "wallpaper/images/7.png", - "hash": "94dc43c774b32afaa43b42e2fac96ad4" - }, - { - "path": "wallpaper/images/8.png", - "hash": "f123ff9994c6b73a00503a0f71bb61c4" - }, - { - "path": "wallpaper/images/9.png", - "hash": "c622e4dcaca983ed072022692373abc8" - }, - { - "path": "walnut_pad/images/0.png", - "hash": "1868d25967cc950d811b0218d313b42e" - }, - { - "path": "walnut_zoom/images/0.png", - "hash": "54f145f1d66d15726196e6ae690158dc" - }, - { - "path": "walnut_zoom/images/1.png", - "hash": "f61d350a4d95a56083924cd88dbbcd14" - }, - { - "path": "walnut_zoom/images/10.png", - "hash": "0114a2c7010d751674794e9d61febcb5" - }, - { - "path": "walnut_zoom/images/11.png", - "hash": "7ece5bcc469a441e7d3b3f5166ab450f" - }, - { - "path": "walnut_zoom/images/12.png", - "hash": "3ce53d39a6fdb411f88cfbc71a02d553" - }, - { - "path": "walnut_zoom/images/13.png", - "hash": "80f449d1aa5b37f19be05952e9ea4690" - }, - { - "path": "walnut_zoom/images/14.png", - "hash": "3484665c49f4f8e4843be3e016703c01" - }, - { - "path": "walnut_zoom/images/15.png", - "hash": "52017060b380dd4dcab6c330defea997" - }, - { - "path": "walnut_zoom/images/16.png", - "hash": "bd0575ed22a9c9e84da546e15f3eaa36" - }, - { - "path": "walnut_zoom/images/17.png", - "hash": "3354b0a41977265d7768344ed4a01798" - }, - { - "path": "walnut_zoom/images/18.png", - "hash": "097143f19e124348e8823ab11feb2356" - }, - { - "path": "walnut_zoom/images/19.png", - "hash": "98b50bc4b8b8de10fb552821faff3947" - }, - { - "path": "walnut_zoom/images/2.png", - "hash": "90849c6c92dd907cebd0caab396aa36d" - }, - { - "path": "walnut_zoom/images/20.png", - "hash": "4c2d68c5b9299513c8da7a99b320042a" - }, - { - "path": "walnut_zoom/images/21.png", - "hash": "02758244cb76dbbdb087931c0b3aaae2" - }, - { - "path": "walnut_zoom/images/22.png", - "hash": "b8681ce06bda9297986edfa87ba8b9e5" - }, - { - "path": "walnut_zoom/images/23.png", - "hash": "cadf3d90bfc3d9c9989013223604cbb5" - }, - { - "path": "walnut_zoom/images/3.png", - "hash": "7075b474c816617ee6ae77e7a31ded3a" - }, - { - "path": "walnut_zoom/images/4.png", - "hash": "f9c430517346247063fcf9a751c9b497" - }, - { - "path": "walnut_zoom/images/5.png", - "hash": "b41589e48ffe5d2f7ebccb0ccbeb15ae" - }, - { - "path": "walnut_zoom/images/6.png", - "hash": "c247af529838e071ee28bbf89c6884f0" - }, - { - "path": "walnut_zoom/images/7.png", - "hash": "304e586f1c14a677283bcba85d2846ef" - }, - { - "path": "walnut_zoom/images/8.png", - "hash": "d61f4ba636a50858c013b3d271805867" - }, - { - "path": "walnut_zoom/images/9.png", - "hash": "2b3a75dc7874fc47612a0ebe82ead577" - }, - { - "path": "washer/images/0.png", - "hash": "0751d5a44f68ff21f15f1276149971a4" - }, - { - "path": "what_I_want_to_do/images/0.png", - "hash": "6f6f0b5452555aa8c162745db59587f0" - }, - { - "path": "what_he_wants/images/0.png", - "hash": "3e9ca1ac6dacf6cb3dceb30c4d2ca74d" - }, - { - "path": "why_at_me/images/0.png", - "hash": "46a89eb5567c049e12722511653722f7" - }, - { - "path": "why_have_hands/images/0.png", - "hash": "96487155465f64e3b79ef5c7d2a1b882" - }, - { - "path": "wish_fail/images/0.png", - "hash": "ecf3e01a1091ef0d035dd2114e7c9a29" - }, - { - "path": "wooden_fish/images/0.png", - "hash": "6d9a3a2283fa7804c7d0053d7dfd2564" - }, - { - "path": "wooden_fish/images/1.png", - "hash": "e0209aed76388832884846769156dceb" - }, - { - "path": "wooden_fish/images/10.png", - "hash": "cec873d2011eb7939946b7b4b3bff9a3" - }, - { - "path": "wooden_fish/images/11.png", - "hash": "712b2bfd606eb5efbddf673862436008" - }, - { - "path": "wooden_fish/images/12.png", - "hash": "5839329d4d13278ec1dad21e601bf006" - }, - { - "path": "wooden_fish/images/13.png", - "hash": "7aace48b94ec939fccbe0123482193c7" - }, - { - "path": "wooden_fish/images/14.png", - "hash": "ecfca6644fbc21c8a0d1b65ddf10c5f7" - }, - { - "path": "wooden_fish/images/15.png", - "hash": "28ac570cd87020781c754eae7062c91e" - }, - { - "path": "wooden_fish/images/16.png", - "hash": "2361ffd34ff8bfcc4a70da139c92af4d" - }, - { - "path": "wooden_fish/images/17.png", - "hash": "884dee4b95f5e58348f0dbeb38e6120a" - }, - { - "path": "wooden_fish/images/18.png", - "hash": "c5fc69e1b72e4576fae6928b09d77942" - }, - { - "path": "wooden_fish/images/19.png", - "hash": "01bf0df0405a5f3bec8a88f1955c487f" - }, - { - "path": "wooden_fish/images/2.png", - "hash": "2d3f89df34bbbf50314030e19582ac82" - }, - { - "path": "wooden_fish/images/20.png", - "hash": "28c1e84abd5af68d67933cba7cb39293" - }, - { - "path": "wooden_fish/images/21.png", - "hash": "7433c06114ff44dcfdfa586d05b9e12a" - }, - { - "path": "wooden_fish/images/22.png", - "hash": "401386db0da8d0f451f037a83055fb97" - }, - { - "path": "wooden_fish/images/23.png", - "hash": "d88ca4f0cbe0baba69cc5124a26ac271" - }, - { - "path": "wooden_fish/images/24.png", - "hash": "6a0b876ccd4fc868da1b1482130724b2" - }, - { - "path": "wooden_fish/images/25.png", - "hash": "facabd578b33beecebaaad619a931cfc" - }, - { - "path": "wooden_fish/images/26.png", - "hash": "c9b3fbd6530cec0851ab8ad4f4f3e2dd" - }, - { - "path": "wooden_fish/images/27.png", - "hash": "e8e7f3d0cd8fcbc949162cfb513db643" - }, - { - "path": "wooden_fish/images/28.png", - "hash": "28345563148569bfc1c87bdaf15512cd" - }, - { - "path": "wooden_fish/images/29.png", - "hash": "6e509f0cf10d8d0eed6694ad4d67d417" - }, - { - "path": "wooden_fish/images/3.png", - "hash": "408ee9928d337a3e1093b360ce1f9c42" - }, - { - "path": "wooden_fish/images/30.png", - "hash": "e17e47ec541b137347ee5092f50b7af4" - }, - { - "path": "wooden_fish/images/31.png", - "hash": "c46afd5cfe31fbb0dff54a21b5275652" - }, - { - "path": "wooden_fish/images/32.png", - "hash": "c733975ec503cbab59083075fdac7df1" - }, - { - "path": "wooden_fish/images/33.png", - "hash": "6fd18280a7b3daeba31211ec357432ce" - }, - { - "path": "wooden_fish/images/34.png", - "hash": "3469e52d0176a91ab0bde381ac609b3e" - }, - { - "path": "wooden_fish/images/35.png", - "hash": "55a55c562ec107000c6a37cd0b6dc93a" - }, - { - "path": "wooden_fish/images/36.png", - "hash": "cfbd99fac76a8f4730aa2abd0d1f9fc7" - }, - { - "path": "wooden_fish/images/37.png", - "hash": "e0c36d441526f5f0ae1d4f7ebf33f783" - }, - { - "path": "wooden_fish/images/38.png", - "hash": "9b344ef9f6f5d0cef32f7fae1aeb867d" - }, - { - "path": "wooden_fish/images/39.png", - "hash": "0eaf38b4b65ba9d8acb18ddedb482c26" - }, - { - "path": "wooden_fish/images/4.png", - "hash": "7a2c835125447d2c2c91022e9da5bba0" - }, - { - "path": "wooden_fish/images/40.png", - "hash": "605ffccc8dd614b3776bcb1b68f8392d" - }, - { - "path": "wooden_fish/images/41.png", - "hash": "6c3942c1f933048da5842556d45b41fd" - }, - { - "path": "wooden_fish/images/42.png", - "hash": "de6cdb5e5dc569b93bd110e328ccee48" - }, - { - "path": "wooden_fish/images/43.png", - "hash": "a2590f5e678b4b49951d457bff4d7416" - }, - { - "path": "wooden_fish/images/44.png", - "hash": "e25bbc2b3d6b004107a78a07472a26bc" - }, - { - "path": "wooden_fish/images/45.png", - "hash": "f0b6b348a1e95793535a963cdec0c526" - }, - { - "path": "wooden_fish/images/46.png", - "hash": "feaf6200470ca2670250a5ecf1d82638" - }, - { - "path": "wooden_fish/images/47.png", - "hash": "f20eea970a4f715bed311fd3292b6ffe" - }, - { - "path": "wooden_fish/images/48.png", - "hash": "c131eac6cb07efb11fc0db34344375cd" - }, - { - "path": "wooden_fish/images/49.png", - "hash": "4d02f896bd3add73f0607efbd399405a" - }, - { - "path": "wooden_fish/images/5.png", - "hash": "9808b4dfc0739cc92801c07218c437a1" - }, - { - "path": "wooden_fish/images/50.png", - "hash": "79390633b41372c3697d0f5cb875c920" - }, - { - "path": "wooden_fish/images/51.png", - "hash": "094b6e5646bfe1ba46a5a37075316aa4" - }, - { - "path": "wooden_fish/images/52.png", - "hash": "110f85d76529735911de6f2aed883c8d" - }, - { - "path": "wooden_fish/images/53.png", - "hash": "a06dd450c09157782cb1dca8cad9ea88" - }, - { - "path": "wooden_fish/images/54.png", - "hash": "f8417b9eeb8dff82385cd20a5acdb5be" - }, - { - "path": "wooden_fish/images/55.png", - "hash": "db3b4b5518a00cc83db2d6cb1190b4b3" - }, - { - "path": "wooden_fish/images/56.png", - "hash": "0d3848e808467b632a273a51e4b94b94" - }, - { - "path": "wooden_fish/images/57.png", - "hash": "67c3ec213de1f043b3123262c2dcba24" - }, - { - "path": "wooden_fish/images/58.png", - "hash": "9c58d568c71c2724985853f7843ae11a" - }, - { - "path": "wooden_fish/images/59.png", - "hash": "d6e191f08943eeda4afd3d038447810a" - }, - { - "path": "wooden_fish/images/6.png", - "hash": "25d5ae7ef4a3cd3f4443f632fdd968e7" - }, - { - "path": "wooden_fish/images/60.png", - "hash": "e834e553cc5f24fbbe99c8dbd92d440e" - }, - { - "path": "wooden_fish/images/61.png", - "hash": "45491e4be378af118a0d55628837ae64" - }, - { - "path": "wooden_fish/images/62.png", - "hash": "d71f36fca51f8713105c1d2a855b89bb" - }, - { - "path": "wooden_fish/images/63.png", - "hash": "aeef95bbadaa5fb5f0e5845a96d82dbf" - }, - { - "path": "wooden_fish/images/64.png", - "hash": "8c2465ab4495a49e3be4fdc8a0e1c773" - }, - { - "path": "wooden_fish/images/65.png", - "hash": "c09e998c676b8d1982a1db064823bf6e" - }, - { - "path": "wooden_fish/images/7.png", - "hash": "01a98a53bda386901f09ed2e146c0c3c" - }, - { - "path": "wooden_fish/images/8.png", - "hash": "e16848c937770c31d310aa71661558aa" - }, - { - "path": "wooden_fish/images/9.png", - "hash": "64d52829d84b8f4a1aa98c0248be1380" - }, - { - "path": "worship/images/0.png", - "hash": "bd2f7121444b63365141cb292da532d5" - }, - { - "path": "worship/images/1.png", - "hash": "6145ed9f4c81b253d53fdedab1a63886" - }, - { - "path": "worship/images/2.png", - "hash": "c5e679727b7a5d5ca5a5f32bfba08f87" - }, - { - "path": "worship/images/3.png", - "hash": "56174982455efd6b7e7d41711cb72d0c" - }, - { - "path": "worship/images/4.png", - "hash": "661d4a2397fdf2f07d9ef4a48c825ed1" - }, - { - "path": "worship/images/5.png", - "hash": "6eeff86edfbe977e92ee1027ec68b011" - }, - { - "path": "worship/images/6.png", - "hash": "91ccfb9ae60b673e765a5e616c032a77" - }, - { - "path": "worship/images/7.png", - "hash": "e298d69f5c3eade7b741d6ec260f7a15" - }, - { - "path": "worship/images/8.png", - "hash": "9053063bc46e88f0a33c642037dafc39" - }, - { - "path": "worship/images/9.png", - "hash": "3861aae5494bd34ce6937d6224c48915" - }, - { - "path": "wujing/images/0.jpg", - "hash": "c187cfc302ce2c8583e7d18bfdde245a" - }, - { - "path": "youtube/images/corner.png", - "hash": "2f6f9a380e8c3045022d28fed799ff1c" - } -] + { + "path": "acg_entrance/images/0.png", + "hash": "50d92b64bfdd6b7aa3872ba24bface4f" + }, + { + "path": "add_chaos/images/0.png", + "hash": "c9265d1d01b8d0746a544640f924e2c2" + }, + { + "path": "addiction/images/0.png", + "hash": "dc201145111b74eca4d09429afe0dfb9" + }, + { + "path": "always_like/images/0.png", + "hash": "7e4b3845cf80fa46942269d58bd64e9d" + }, + { + "path": "anti_kidnap/images/0.png", + "hash": "57991b7103cecbe1c13dc03cf4b7ed38" + }, + { + "path": "anya_suki/images/0.png", + "hash": "9a46dd33cc7a511a8368e768c6d4abb0" + }, + { + "path": "applaud/images/0.png", + "hash": "0e5f561f3abc093f8089ed5e3b4d4e51" + }, + { + "path": "applaud/images/1.png", + "hash": "948ee568b13be8427c0dd8d6de5740c3" + }, + { + "path": "applaud/images/2.png", + "hash": "ab191735e9c523517deca3e4c444bd81" + }, + { + "path": "applaud/images/3.png", + "hash": "46579d1329fa40685a264720bdb97593" + }, + { + "path": "applaud/images/4.png", + "hash": "26b72b155b645d5e8ed4f96948c48ba7" + }, + { + "path": "ascension/images/0.png", + "hash": "e09e50c266c1e8babfe2c73612ac4200" + }, + { + "path": "back_to_work/images/0.png", + "hash": "d85cf009fac3ce49ed90883e0c61e737" + }, + { + "path": "bad_news/images/0.png", + "hash": "960baf23d9d516c5ea6d13f48b67f070" + }, + { + "path": "beat_head/images/0.png", + "hash": "eacd07809b6ead153d7edd6630c18b57" + }, + { + "path": "beat_head/images/1.png", + "hash": "9c9c2eeee4dd11ce6af0e5ac9810ff9b" + }, + { + "path": "beat_head/images/2.png", + "hash": "94e491fbd91d9a8714ad87bd6dd2259f" + }, + { + "path": "bite/images/0.png", + "hash": "1bf01e9d335cea07f0fa41ac9b7cf1c4" + }, + { + "path": "bite/images/1.png", + "hash": "f39275eb62478b134d334cd12816ea8b" + }, + { + "path": "bite/images/10.png", + "hash": "3803c4e601226c29d9d5649fe4a14035" + }, + { + "path": "bite/images/11.png", + "hash": "0ecbeccbb0b56aba5141482308749688" + }, + { + "path": "bite/images/12.png", + "hash": "33294ff41e6106e9f058cb4c12774ecf" + }, + { + "path": "bite/images/13.png", + "hash": "0c146c08708ff40246876f6aab9ea7e5" + }, + { + "path": "bite/images/14.png", + "hash": "3803c4e601226c29d9d5649fe4a14035" + }, + { + "path": "bite/images/15.png", + "hash": "0ecbeccbb0b56aba5141482308749688" + }, + { + "path": "bite/images/2.png", + "hash": "ed49249ac247d237310faffb7d11c11e" + }, + { + "path": "bite/images/3.png", + "hash": "95d8fe8bfe6a6bafc0a02b7be64e7ea5" + }, + { + "path": "bite/images/4.png", + "hash": "a95502dae9f2a18b8be3dd2c68af10aa" + }, + { + "path": "bite/images/5.png", + "hash": "04449c3729ff7422bbd2f811e7ec9d89" + }, + { + "path": "bite/images/6.png", + "hash": "1924b0e63242af4a0280a5458e9cafda" + }, + { + "path": "bite/images/7.png", + "hash": "90bc4c8ad295a7a63123ebf98a39fe0f" + }, + { + "path": "bite/images/8.png", + "hash": "33294ff41e6106e9f058cb4c12774ecf" + }, + { + "path": "bite/images/9.png", + "hash": "0c146c08708ff40246876f6aab9ea7e5" + }, + { + "path": "blood_pressure/images/0.png", + "hash": "d5dd1ea44908952885ff14a283f99695" + }, + { + "path": "bocchi_draft/images/0.png", + "hash": "680aea676a5f3d510ddee5c30201e59e" + }, + { + "path": "bocchi_draft/images/1.png", + "hash": "680aea676a5f3d510ddee5c30201e59e" + }, + { + "path": "bocchi_draft/images/10.png", + "hash": "7223660dff08058ebfd18abe91e3b4c1" + }, + { + "path": "bocchi_draft/images/11.png", + "hash": "5be40608585af14e81d1290a822bb765" + }, + { + "path": "bocchi_draft/images/12.png", + "hash": "10fe7523c888e2f9d58f63b529138c67" + }, + { + "path": "bocchi_draft/images/13.png", + "hash": "f04a0254f4cf76de4dcb15e006ce5251" + }, + { + "path": "bocchi_draft/images/14.png", + "hash": "e02a5bf9fd8c010dbbdbdfcfd68c88b2" + }, + { + "path": "bocchi_draft/images/15.png", + "hash": "c627cf848a3258c3f60f387f94424594" + }, + { + "path": "bocchi_draft/images/16.png", + "hash": "3ae22d0f4d647123a5a3d6463615894f" + }, + { + "path": "bocchi_draft/images/17.png", + "hash": "d3b524c173dae3f6f99a9280348c7c9f" + }, + { + "path": "bocchi_draft/images/18.png", + "hash": "89138ffaae09314d0d6ace6ea084dd35" + }, + { + "path": "bocchi_draft/images/19.png", + "hash": "5369cc29e4deab14936cae35cf6a039e" + }, + { + "path": "bocchi_draft/images/2.png", + "hash": "680aea676a5f3d510ddee5c30201e59e" + }, + { + "path": "bocchi_draft/images/20.png", + "hash": "23b17e86c34e6762c774f71cebef119b" + }, + { + "path": "bocchi_draft/images/21.png", + "hash": "23b17e86c34e6762c774f71cebef119b" + }, + { + "path": "bocchi_draft/images/22.png", + "hash": "23b17e86c34e6762c774f71cebef119b" + }, + { + "path": "bocchi_draft/images/3.png", + "hash": "d2fe56d893a8bf44d12fa43dc0d9616f" + }, + { + "path": "bocchi_draft/images/4.png", + "hash": "8c9b0855d8a752fb0c1969e5962035e2" + }, + { + "path": "bocchi_draft/images/5.png", + "hash": "3e1fe9c59bd56721b8e306b30fec11a1" + }, + { + "path": "bocchi_draft/images/6.png", + "hash": "81c83f74c8fb24c7aaf47c794c42f5b7" + }, + { + "path": "bocchi_draft/images/7.png", + "hash": "12d192f4487f6caf72c14328fbe62915" + }, + { + "path": "bocchi_draft/images/8.png", + "hash": "30c655e223bb9e6d2f5f60deec416941" + }, + { + "path": "bocchi_draft/images/9.png", + "hash": "ecd068db32969f4b587b992acce1fd65" + }, + { + "path": "bronya_holdsign/images/0.jpg", + "hash": "fc035e0ac02ee3bd44f4409f8df14ed9" + }, + { + "path": "bubble_tea/images/0.png", + "hash": "31c42e10985c1efa934d6b616b155c92" + }, + { + "path": "caoshen_bite/images/0.png", + "hash": "08420f435eb8e9b395fad3bc11823c70" + }, + { + "path": "caoshen_bite/images/1.png", + "hash": "f340d01ad0763eb5600a41c8008e03d5" + }, + { + "path": "caoshen_bite/images/10.png", + "hash": "a1d267b8c2dc8960145e809a6f369fab" + }, + { + "path": "caoshen_bite/images/11.png", + "hash": "9f9441dcc91f0062ca846ad3b0b8620c" + }, + { + "path": "caoshen_bite/images/12.png", + "hash": "ff19d6745c655440c5694ef5f295a65d" + }, + { + "path": "caoshen_bite/images/13.png", + "hash": "ef07e844622561ad41f0f385d1c6c9b3" + }, + { + "path": "caoshen_bite/images/14.png", + "hash": "897d566b8141a1bfc2511028cee4fe1f" + }, + { + "path": "caoshen_bite/images/15.png", + "hash": "fd6c58767115008172ab831f45094e17" + }, + { + "path": "caoshen_bite/images/16.png", + "hash": "601e9c86aa5c88f8f61eb1f864f646ed" + }, + { + "path": "caoshen_bite/images/17.png", + "hash": "7bd7c71a858fb17a79e9edad48c9eaa7" + }, + { + "path": "caoshen_bite/images/18.png", + "hash": "9cd95aa172f1ed3c7f05b09cc79ab782" + }, + { + "path": "caoshen_bite/images/19.png", + "hash": "75a0f0e5743b463fe2720fd2af485faf" + }, + { + "path": "caoshen_bite/images/2.png", + "hash": "6aad3b8f4033dbd8e8d3337543e13021" + }, + { + "path": "caoshen_bite/images/20.png", + "hash": "ea4d6d11dba51342bd1dabe6d88ba5e3" + }, + { + "path": "caoshen_bite/images/21.png", + "hash": "a567e86a31fcbe0253deb3feb774d4c5" + }, + { + "path": "caoshen_bite/images/22.png", + "hash": "05e08e612e618e33439e1d1d6e8fa175" + }, + { + "path": "caoshen_bite/images/23.png", + "hash": "18389bd829edb63d0ceae078bb1763ce" + }, + { + "path": "caoshen_bite/images/24.png", + "hash": "7891aac64cf87dc9d9434fac371a3407" + }, + { + "path": "caoshen_bite/images/25.png", + "hash": "ae02845905cb4dabc9fb895abd401c00" + }, + { + "path": "caoshen_bite/images/26.png", + "hash": "64edbdbe41176edca386c65f0f8af96f" + }, + { + "path": "caoshen_bite/images/27.png", + "hash": "f4cb93a0a4bec4e7d083a3d9933cf09c" + }, + { + "path": "caoshen_bite/images/28.png", + "hash": "97b63b42a2185e68226a7169d87b0b6e" + }, + { + "path": "caoshen_bite/images/29.png", + "hash": "1fd421c45721fd2e0d0f332b7f04292e" + }, + { + "path": "caoshen_bite/images/3.png", + "hash": "2e1d13692bf091b5c6f6f085949d68f8" + }, + { + "path": "caoshen_bite/images/30.png", + "hash": "b6eecaaab53ea23f05257ac999c418d0" + }, + { + "path": "caoshen_bite/images/31.png", + "hash": "7895a3b96748d299471d5ea7e29acd1a" + }, + { + "path": "caoshen_bite/images/32.png", + "hash": "651c3ed9a98818165d18e0c324824460" + }, + { + "path": "caoshen_bite/images/33.png", + "hash": "a040f062a3efc9a234cb086f434dafbf" + }, + { + "path": "caoshen_bite/images/34.png", + "hash": "34d89ed45313e5251253af64f616e8a1" + }, + { + "path": "caoshen_bite/images/35.png", + "hash": "655c475ad47f0badb51dccfca6e1aac7" + }, + { + "path": "caoshen_bite/images/36.png", + "hash": "0c5f969d05f730bedc7e2878e273b874" + }, + { + "path": "caoshen_bite/images/37.png", + "hash": "2d224e773965415953b7b4b8841b595c" + }, + { + "path": "caoshen_bite/images/4.png", + "hash": "ea4c10cdfb97252224814c92d8ecc175" + }, + { + "path": "caoshen_bite/images/5.png", + "hash": "cc4c6a030b0ba9a77ba559a49ce9d9be" + }, + { + "path": "caoshen_bite/images/6.png", + "hash": "d6f30de64fadec982c1e988a71dff7ed" + }, + { + "path": "caoshen_bite/images/7.png", + "hash": "b817fc07aa3cde720162bb693caca64c" + }, + { + "path": "caoshen_bite/images/8.png", + "hash": "5be01bb928ba4b553a7eb2256b5ec198" + }, + { + "path": "caoshen_bite/images/9.png", + "hash": "737d6062cd53c0133b361cb2c4543ffc" + }, + { + "path": "capoo_draw/images/0.png", + "hash": "f912144ee503cb4c193e6c109eb83637" + }, + { + "path": "capoo_draw/images/1.png", + "hash": "d85d94489c3a4ad1c418782ff5a9dafa" + }, + { + "path": "capoo_draw/images/2.png", + "hash": "dc3f3d37a5b985088388253ff7abecf4" + }, + { + "path": "capoo_draw/images/3.png", + "hash": "97034f01eed7f12767f224911e667a6f" + }, + { + "path": "capoo_draw/images/4.png", + "hash": "137787ff3e3df61f9238874ebe8ce46b" + }, + { + "path": "capoo_draw/images/5.png", + "hash": "f0480a00928db523221265376dfe7c07" + }, + { + "path": "capoo_rip/images/0.png", + "hash": "b9071375f262197ebb2a646875b8d819" + }, + { + "path": "capoo_rip/images/1.png", + "hash": "1e57ec96c106f137106eaf263f28ef4b" + }, + { + "path": "capoo_rip/images/2.png", + "hash": "6b30315d53652333e1587b7478242d27" + }, + { + "path": "capoo_rip/images/3.png", + "hash": "a949947118b16140c7efb35c5ed59abf" + }, + { + "path": "capoo_rip/images/4.png", + "hash": "c4337ead3d063740014be45c6b14eb1f" + }, + { + "path": "capoo_rip/images/5.png", + "hash": "983f0d7e0c9080479d29f646c0a406f8" + }, + { + "path": "capoo_rip/images/6.png", + "hash": "1258ad3db7914f7f2f955a6f2c910595" + }, + { + "path": "capoo_rip/images/7.png", + "hash": "c4d7613a7d578dd956e66edfbac23c89" + }, + { + "path": "capoo_rub/images/0.png", + "hash": "6fc3f9dd10f0a7de7f8c4c853166de26" + }, + { + "path": "capoo_rub/images/1.png", + "hash": "4ee09f4c274dac2d33c59f1a464591df" + }, + { + "path": "capoo_rub/images/2.png", + "hash": "3e4d4babbd4b9081682651510ad70680" + }, + { + "path": "capoo_rub/images/3.png", + "hash": "6d35b343f1bde5f1de4a5df94921b634" + }, + { + "path": "capoo_say/images/0.png", + "hash": "f068d28034bde7515340a58da0e4d9bf" + }, + { + "path": "capoo_say/images/1.png", + "hash": "3135e96c106a035153400d2ebe8f0be5" + }, + { + "path": "capoo_say/images/2.png", + "hash": "13c0e3e5db935829df8216518b951ebd" + }, + { + "path": "capoo_say/images/3.png", + "hash": "371b2e086c5949945a896c63a091fa7a" + }, + { + "path": "capoo_say/images/4.png", + "hash": "0c2bd48833523efb31917ad3d3b9b639" + }, + { + "path": "capoo_say/images/5.png", + "hash": "e55a0f719d1e6cd644f5ccff2cd783c0" + }, + { + "path": "capoo_say/images/6.png", + "hash": "a834e50a071769825efa5d37bc983f3e" + }, + { + "path": "capoo_say/images/7.png", + "hash": "7d3d97118846dea27983479710d91194" + }, + { + "path": "capoo_say/images/8.png", + "hash": "1079fa13aa6adcfb2d90c1a58d5d092d" + }, + { + "path": "capoo_say/images/9.png", + "hash": "b9b1b73405dd68d923930425a04fc26e" + }, + { + "path": "capoo_strike/images/0.png", + "hash": "3b7f60521294a0fd93c9a73b8d67a4e7" + }, + { + "path": "capoo_strike/images/1.png", + "hash": "c73899d2b67010fb4171d4aedcdaed81" + }, + { + "path": "capoo_strike/images/2.png", + "hash": "4c6643ac048d75df4103af4788be9053" + }, + { + "path": "capoo_strike/images/3.png", + "hash": "865082240baad33b6a1d58ba6187c026" + }, + { + "path": "capoo_strike/images/4.png", + "hash": "d9ae348ed2306b1fe04f7004078bb41f" + }, + { + "path": "capoo_strike/images/5.png", + "hash": "e33771e54e4204c5881ec955fa6a021d" + }, + { + "path": "capoo_strike/images/6.png", + "hash": "a4f9b749b5481a65220581eb7be03d8b" + }, + { + "path": "captain/images/0.png", + "hash": "f6cca0f44aa54c721f8b172f8ebb7f40" + }, + { + "path": "captain/images/1.png", + "hash": "2885566e47ef4fb40560149c795dca7f" + }, + { + "path": "captain/images/2.png", + "hash": "e230240d0929b774a985a301962d36b5" + }, + { + "path": "chase_train/images/0.png", + "hash": "7bf7c41898169f70973a249905e1086c" + }, + { + "path": "chase_train/images/1.png", + "hash": "1db1364a8dbd84e6ef74079bb5ff17a8" + }, + { + "path": "chase_train/images/10.png", + "hash": "292dbe5e5d0e420b4ef258b19ac52172" + }, + { + "path": "chase_train/images/100.png", + "hash": "4ed64a045b8ab95aafea0eb4c5079fa6" + }, + { + "path": "chase_train/images/101.png", + "hash": "335739eb957573a9dec19dba2b16b3e7" + }, + { + "path": "chase_train/images/102.png", + "hash": "dd879e677cb54ea91a7e68f776c523a6" + }, + { + "path": "chase_train/images/103.png", + "hash": "739f501c7826edd93c77b66ec868b194" + }, + { + "path": "chase_train/images/104.png", + "hash": "ba51852201ecad21a3f76d7603bba4a5" + }, + { + "path": "chase_train/images/105.png", + "hash": "f165e50e13ba5ec1806ba56111ebadd9" + }, + { + "path": "chase_train/images/106.png", + "hash": "dddec974b82ae647fbdf1c2a09a3ee61" + }, + { + "path": "chase_train/images/107.png", + "hash": "542d308cbcf85cc202622a79588d3a49" + }, + { + "path": "chase_train/images/108.png", + "hash": "2b10c147fc987e17e8898f77e2bdcb14" + }, + { + "path": "chase_train/images/109.png", + "hash": "69f87ef8712a717ce6dbaa7aa95d8eea" + }, + { + "path": "chase_train/images/11.png", + "hash": "9c046b3902292b4737503161f2b62d02" + }, + { + "path": "chase_train/images/110.png", + "hash": "4e91a1f042ff3f4adb1a823b1e1f1fe2" + }, + { + "path": "chase_train/images/111.png", + "hash": "edd3d9ee22bf9e700ba6ddb4827afd3e" + }, + { + "path": "chase_train/images/112.png", + "hash": "ed5902b62cd2e1ac54d32ff19e30505e" + }, + { + "path": "chase_train/images/113.png", + "hash": "e65e849be18bfc610b60ac862cf9e1e5" + }, + { + "path": "chase_train/images/114.png", + "hash": "4d464c70883177e31f05a65ade9de13e" + }, + { + "path": "chase_train/images/115.png", + "hash": "353675889c312a1416055d01317069ba" + }, + { + "path": "chase_train/images/116.png", + "hash": "b207d15fdbb26087d5bf527f27e4f087" + }, + { + "path": "chase_train/images/117.png", + "hash": "36fe4bb2cce9974141030210144c3ad8" + }, + { + "path": "chase_train/images/118.png", + "hash": "4235c27a89563fea2d7f5b114233ef17" + }, + { + "path": "chase_train/images/119.png", + "hash": "dd2c42261479419e676f09c55ed8e79a" + }, + { + "path": "chase_train/images/12.png", + "hash": "98ea083aa53ff3f3af606e7e67033476" + }, + { + "path": "chase_train/images/13.png", + "hash": "a6f43b04aa305e5a320e20db5d850199" + }, + { + "path": "chase_train/images/14.png", + "hash": "37074ede0dea70240baf2d26dd77a373" + }, + { + "path": "chase_train/images/15.png", + "hash": "fae7dbfbfff28b3eae665d48c656d4ff" + }, + { + "path": "chase_train/images/16.png", + "hash": "47b500c96c779d4ac335b5c46bdb2e0a" + }, + { + "path": "chase_train/images/17.png", + "hash": "e69029fc7f4ed692e06c4794d6dac4ae" + }, + { + "path": "chase_train/images/18.png", + "hash": "71de33d9e84189ab458df8c053317b91" + }, + { + "path": "chase_train/images/19.png", + "hash": "8d36823b898e52b32cc25b9ffabcf339" + }, + { + "path": "chase_train/images/2.png", + "hash": "65a0830bc6d6a3127faf8e50822ac8b3" + }, + { + "path": "chase_train/images/20.png", + "hash": "f5734adff0f98aa2efa2f0b7d70884bc" + }, + { + "path": "chase_train/images/21.png", + "hash": "6815118e286fdbf9078e20f41e6112af" + }, + { + "path": "chase_train/images/22.png", + "hash": "01f3a8eb8983bc6e24634839bee85b55" + }, + { + "path": "chase_train/images/23.png", + "hash": "b02e49bd23246d91efac12cc777d7f78" + }, + { + "path": "chase_train/images/24.png", + "hash": "a0ee2dc52c4c1c473cc57092d942f7b2" + }, + { + "path": "chase_train/images/25.png", + "hash": "ab7a9e557e09314a8e5109dcf809e296" + }, + { + "path": "chase_train/images/26.png", + "hash": "b1cadf11b827d74f0ddf48ef0a5a5d28" + }, + { + "path": "chase_train/images/27.png", + "hash": "6348519826d61b471a8fece92e4ee516" + }, + { + "path": "chase_train/images/28.png", + "hash": "58f9a74fa74d3a4198510e005c4484ca" + }, + { + "path": "chase_train/images/29.png", + "hash": "521571b8b5b5654129ebb195066480c6" + }, + { + "path": "chase_train/images/3.png", + "hash": "3b9f749bc39286b7b5e0d9e726a1d4bd" + }, + { + "path": "chase_train/images/30.png", + "hash": "973241e42057f711fd370c36d466d683" + }, + { + "path": "chase_train/images/31.png", + "hash": "57bcfb0936d920907e0c84d8091f2384" + }, + { + "path": "chase_train/images/32.png", + "hash": "a475f33be6cff4fd435429165e7a89ab" + }, + { + "path": "chase_train/images/33.png", + "hash": "9fe7fc8f8b51e75b55ce58990615b8ae" + }, + { + "path": "chase_train/images/34.png", + "hash": "ca099830bd27ea5a263ec413032a731a" + }, + { + "path": "chase_train/images/35.png", + "hash": "48a37c15cb3f553178b8a322ee5498a4" + }, + { + "path": "chase_train/images/36.png", + "hash": "83ddc24949269dacee985c5dd08dfef0" + }, + { + "path": "chase_train/images/37.png", + "hash": "502d977a23285c42690e04e48133ef45" + }, + { + "path": "chase_train/images/38.png", + "hash": "c34f48052c67d8bd9eb57499da3fce44" + }, + { + "path": "chase_train/images/39.png", + "hash": "f8da1e9c2dea0e6d227412a70a556ada" + }, + { + "path": "chase_train/images/4.png", + "hash": "5869633c96666ef1bd22a23177e41a11" + }, + { + "path": "chase_train/images/40.png", + "hash": "4976ea014147cdf6beebb22e26011ad6" + }, + { + "path": "chase_train/images/41.png", + "hash": "00a733e04c08f01af4a76d470c9fa3e0" + }, + { + "path": "chase_train/images/42.png", + "hash": "4bbc5205e8c8368ef5aeaf964128c79d" + }, + { + "path": "chase_train/images/43.png", + "hash": "aea76edecc7a6115cca6a75e98005adc" + }, + { + "path": "chase_train/images/44.png", + "hash": "916f4fe46a610ad7a36fbd2dfe2b1a71" + }, + { + "path": "chase_train/images/45.png", + "hash": "ba8f249cbdb55c25b467134c0c486bd3" + }, + { + "path": "chase_train/images/46.png", + "hash": "c9b25bc88e55cfffc0fa86615fcfe81c" + }, + { + "path": "chase_train/images/47.png", + "hash": "65d9a4ca467b3586f07e51cc1eabbc98" + }, + { + "path": "chase_train/images/48.png", + "hash": "7206195dbce1db53e8824d6e9aec3080" + }, + { + "path": "chase_train/images/49.png", + "hash": "2b4c83f6bc3b23ee293e1aac1a7ccd03" + }, + { + "path": "chase_train/images/5.png", + "hash": "1752695309e244dbd1d9717da63c9129" + }, + { + "path": "chase_train/images/50.png", + "hash": "3e2a46aa34f81dcd11fd4231c6b05160" + }, + { + "path": "chase_train/images/51.png", + "hash": "3b52abcf06fef40c45f373791f38a7ae" + }, + { + "path": "chase_train/images/52.png", + "hash": "db480438656ac78c053bd986f88b8e20" + }, + { + "path": "chase_train/images/53.png", + "hash": "efca259de1ced624cf9f24f78ca4cec8" + }, + { + "path": "chase_train/images/54.png", + "hash": "dc0b5c1a5971e2141cbe4d9c56d0c128" + }, + { + "path": "chase_train/images/55.png", + "hash": "ad9da6c1dc641a6bede0f4b7c8e38f30" + }, + { + "path": "chase_train/images/56.png", + "hash": "235c74c051701ca383eb8dc390934ac3" + }, + { + "path": "chase_train/images/57.png", + "hash": "257a0e3debc5b5176dc5ea61880a9d2d" + }, + { + "path": "chase_train/images/58.png", + "hash": "e4aa8b6784dd697280065e967315afc9" + }, + { + "path": "chase_train/images/59.png", + "hash": "455619e428f24bc7297246ea509cdc8e" + }, + { + "path": "chase_train/images/6.png", + "hash": "a2e63edc5c56f8dc5a1f749eaba9ad1c" + }, + { + "path": "chase_train/images/60.png", + "hash": "06658ba5901219637dcb86687e878488" + }, + { + "path": "chase_train/images/61.png", + "hash": "7fbab76e20924d6d655d256cb2a7618e" + }, + { + "path": "chase_train/images/62.png", + "hash": "f00691c5671383d2040ebb3cc6d0fce6" + }, + { + "path": "chase_train/images/63.png", + "hash": "22dc12001b5237b196859a9f57c00486" + }, + { + "path": "chase_train/images/64.png", + "hash": "fb529e76863bc338b7c01d8d5d152a01" + }, + { + "path": "chase_train/images/65.png", + "hash": "d9da6224c137a9f20998acbe92740dc2" + }, + { + "path": "chase_train/images/66.png", + "hash": "b3d7c85a3af021ae09ccc111a271f67d" + }, + { + "path": "chase_train/images/67.png", + "hash": "f9e1bb5ab9160458dabfb2c814e5c96c" + }, + { + "path": "chase_train/images/68.png", + "hash": "34629b82b74ea3064f91cb5e2d3d2c35" + }, + { + "path": "chase_train/images/69.png", + "hash": "a3cc3bd6f43a9d57f7165db69409b785" + }, + { + "path": "chase_train/images/7.png", + "hash": "81a63cd5a80146039ead67df4dc6a00f" + }, + { + "path": "chase_train/images/70.png", + "hash": "25f0e2695b503b9712aa97586e2d2d68" + }, + { + "path": "chase_train/images/71.png", + "hash": "a730868e157a3cf19d522c5c522a6ebe" + }, + { + "path": "chase_train/images/72.png", + "hash": "5a2d4cad093f62729029e7b46267912b" + }, + { + "path": "chase_train/images/73.png", + "hash": "ded3cb4a8d95243f160aec398b1478d6" + }, + { + "path": "chase_train/images/74.png", + "hash": "779beb6f0109623be10b2384e14e5170" + }, + { + "path": "chase_train/images/75.png", + "hash": "e04087097cf67d87e5a1a845a7f4f2e4" + }, + { + "path": "chase_train/images/76.png", + "hash": "398d14e6939d3af6a56382d5e4798ea7" + }, + { + "path": "chase_train/images/77.png", + "hash": "04e0eab8bbe7812c340e6973796b5852" + }, + { + "path": "chase_train/images/78.png", + "hash": "24a19ab361acbceda3b74a920c116cf4" + }, + { + "path": "chase_train/images/79.png", + "hash": "c64f1273c6f0838c82f63644ba61f2b0" + }, + { + "path": "chase_train/images/8.png", + "hash": "6f905804a2dd792088fb020ed4ba1ec5" + }, + { + "path": "chase_train/images/80.png", + "hash": "9dbf7b98b1f900666a284ff8c2a53bb5" + }, + { + "path": "chase_train/images/81.png", + "hash": "b1fac283bebd34b8299b4f07796882d1" + }, + { + "path": "chase_train/images/82.png", + "hash": "838e37bd37a44ae626057b7f4112a4f4" + }, + { + "path": "chase_train/images/83.png", + "hash": "1fc3c2aac840addab4a7232fce8d2618" + }, + { + "path": "chase_train/images/84.png", + "hash": "11e70793a048c508b1fd7ce200f2305c" + }, + { + "path": "chase_train/images/85.png", + "hash": "c9dc1d6b9880738b34ed8c2523ab28fa" + }, + { + "path": "chase_train/images/86.png", + "hash": "7accb0d98b7a09033238757722c06481" + }, + { + "path": "chase_train/images/87.png", + "hash": "ad7a36af263b89b9fd93c560cd93c734" + }, + { + "path": "chase_train/images/88.png", + "hash": "78c6254f5bc50edae2ad5ae77276ad37" + }, + { + "path": "chase_train/images/89.png", + "hash": "bc84844fa4af35b09773caaa78fefda0" + }, + { + "path": "chase_train/images/9.png", + "hash": "ac728bb2724f1b87a858225df47fe1a7" + }, + { + "path": "chase_train/images/90.png", + "hash": "50dc68f1ce171eea7186f1c80a868ad8" + }, + { + "path": "chase_train/images/91.png", + "hash": "8781c486e83faad346335c7f10fcd4ec" + }, + { + "path": "chase_train/images/92.png", + "hash": "6bb85189d43d162ff52e37da13a2c090" + }, + { + "path": "chase_train/images/93.png", + "hash": "4b7bb7d0423d12aba6b52153cefd8a82" + }, + { + "path": "chase_train/images/94.png", + "hash": "43ce0d9a874c4d4452f19e87411b1b24" + }, + { + "path": "chase_train/images/95.png", + "hash": "f61a6df0cb1977cdbc0413b249d2fec1" + }, + { + "path": "chase_train/images/96.png", + "hash": "2ba4cdef4cd8822b36c6afdf65aa2ccf" + }, + { + "path": "chase_train/images/97.png", + "hash": "7334779ae38e8a0f1d76e7e6d576af5c" + }, + { + "path": "chase_train/images/98.png", + "hash": "d249d2f3aab8f4eec578465b76c50cad" + }, + { + "path": "chase_train/images/99.png", + "hash": "4571cc545e6885c3b564ab87336cfe8e" + }, + { + "path": "china_flag/images/0.png", + "hash": "aa64adae6f7ede5bceafe81a5273cafc" + }, + { + "path": "confuse/images/0.png", + "hash": "4758c555242fb3b8f3f7426e575dde95" + }, + { + "path": "confuse/images/1.png", + "hash": "36fad69b2f66b88282254a9faf57d1ac" + }, + { + "path": "confuse/images/10.png", + "hash": "6ce9115d8292edabd74a1b7fbdced670" + }, + { + "path": "confuse/images/11.png", + "hash": "9b1a1434e083320b58390a4f86aa8ac8" + }, + { + "path": "confuse/images/12.png", + "hash": "f53fca003ac5b66f64cf7546a56356bc" + }, + { + "path": "confuse/images/13.png", + "hash": "14e4c8f746f319f15cad7d02daa7dad0" + }, + { + "path": "confuse/images/14.png", + "hash": "ba413c63991f17e2bd0a28bc4c105bae" + }, + { + "path": "confuse/images/15.png", + "hash": "f61159552fa9ab7f9e452ff927fc8acb" + }, + { + "path": "confuse/images/16.png", + "hash": "f938d95975d5f1045c2823ad396b4979" + }, + { + "path": "confuse/images/17.png", + "hash": "6832dea7f470464c095f65925e3a6ba9" + }, + { + "path": "confuse/images/18.png", + "hash": "8a49ebf2ab4564f650e690bef420695d" + }, + { + "path": "confuse/images/19.png", + "hash": "9a6d5fe6538b795bba572e0c4ab55ecc" + }, + { + "path": "confuse/images/2.png", + "hash": "82364e42fbc865097412338837b2d328" + }, + { + "path": "confuse/images/20.png", + "hash": "c29dfedd885067b036f2fa6e6d353ff3" + }, + { + "path": "confuse/images/21.png", + "hash": "349a96211a03552d040d044eb3f6bdd8" + }, + { + "path": "confuse/images/22.png", + "hash": "02de93e56d54e4c0d5628f5261643203" + }, + { + "path": "confuse/images/23.png", + "hash": "5ef1795da2f86c4a64e67263e3edfd1a" + }, + { + "path": "confuse/images/24.png", + "hash": "cc16e54ef506cdb23d9e0cfad2294603" + }, + { + "path": "confuse/images/25.png", + "hash": "b031bdd75398a2c14913d3a9b0f434c2" + }, + { + "path": "confuse/images/26.png", + "hash": "b410f262a549e23bf0c7cade90ebb412" + }, + { + "path": "confuse/images/27.png", + "hash": "11e766fac91cef3a207fab7c6131790f" + }, + { + "path": "confuse/images/28.png", + "hash": "0e5c0d09536eeefd8648c820e3d6d802" + }, + { + "path": "confuse/images/29.png", + "hash": "e22c184a0b8fae0c34e135949bb8b988" + }, + { + "path": "confuse/images/3.png", + "hash": "349dd7216c0a55db11127d985d592b12" + }, + { + "path": "confuse/images/30.png", + "hash": "5cebf2a9d4fa49500885df77b759cf1b" + }, + { + "path": "confuse/images/31.png", + "hash": "1632f329095a83130e72f89ff37c8454" + }, + { + "path": "confuse/images/32.png", + "hash": "362d6ce1326c08436566b7944a8bd2f4" + }, + { + "path": "confuse/images/33.png", + "hash": "ab3516b03fb98be9785005958d2577a3" + }, + { + "path": "confuse/images/34.png", + "hash": "da4af5bbd2f6b8747965b300e421c902" + }, + { + "path": "confuse/images/35.png", + "hash": "ac38b4b0bd681bf5b13b37888d05992b" + }, + { + "path": "confuse/images/36.png", + "hash": "95a43fc43eac8a5bde512ddacf037c3d" + }, + { + "path": "confuse/images/37.png", + "hash": "0c8526d12f5764a860d01017f3fbebbc" + }, + { + "path": "confuse/images/38.png", + "hash": "43a4bf013712dd73830d728e024d03f3" + }, + { + "path": "confuse/images/39.png", + "hash": "df7f3cb11a4e3a964e6886fd91559bf0" + }, + { + "path": "confuse/images/4.png", + "hash": "935ae3c540c5fe3dbad3cc5900564272" + }, + { + "path": "confuse/images/40.png", + "hash": "86d07b123ce2d919aa0d1a11bc8c8af0" + }, + { + "path": "confuse/images/41.png", + "hash": "14c5dcda50d097e7c418d678314f762a" + }, + { + "path": "confuse/images/42.png", + "hash": "670d20b0d7bd9327d4314871972c8dc6" + }, + { + "path": "confuse/images/43.png", + "hash": "cd247bbbe553704b93a22d6a68d68db9" + }, + { + "path": "confuse/images/44.png", + "hash": "e1c0b8a37f6a14d4512e68a5aa9c8c7e" + }, + { + "path": "confuse/images/45.png", + "hash": "f5efa7ffa7d28a8d9734ac6da16fd1f8" + }, + { + "path": "confuse/images/46.png", + "hash": "3e8c31adbb8263e787417efd862c35bd" + }, + { + "path": "confuse/images/47.png", + "hash": "8813439d0c101eee39c62cea5ac7cc63" + }, + { + "path": "confuse/images/48.png", + "hash": "65b6c396ed0e069314d411a760c732d1" + }, + { + "path": "confuse/images/49.png", + "hash": "900a70773d6b7e2bed31a5dbe6e6e0eb" + }, + { + "path": "confuse/images/5.png", + "hash": "93251d796fc5ddaac7b7f11ad606cd93" + }, + { + "path": "confuse/images/50.png", + "hash": "0495631cee1906334eae549aa6cbdbbb" + }, + { + "path": "confuse/images/51.png", + "hash": "d41fbbcd92414fda29dd135c7e52dfd5" + }, + { + "path": "confuse/images/52.png", + "hash": "b28b841b05143a99b493a80a75285fe1" + }, + { + "path": "confuse/images/53.png", + "hash": "b1581543d5840dd8e0614a38eccc6480" + }, + { + "path": "confuse/images/54.png", + "hash": "dbcba662c117d08322de64ddd4fca0de" + }, + { + "path": "confuse/images/55.png", + "hash": "14e32fd9a2f9969e1c487dd7463300fc" + }, + { + "path": "confuse/images/56.png", + "hash": "9ba295cb92d8db271293d5a3ed4efbf9" + }, + { + "path": "confuse/images/57.png", + "hash": "bc7e5cbc5bbc0d2e819e26f86a4c0d15" + }, + { + "path": "confuse/images/58.png", + "hash": "55fe9b8439cf8db774e8edf1ba925220" + }, + { + "path": "confuse/images/59.png", + "hash": "cd2cbac3e51185bd1ab89f0e0f9663d4" + }, + { + "path": "confuse/images/6.png", + "hash": "912dba6537f249ab96329551eb79590e" + }, + { + "path": "confuse/images/60.png", + "hash": "565b13924f766b6d544dad432534e7f4" + }, + { + "path": "confuse/images/61.png", + "hash": "9456d0cf43bca9715dde029eb196852b" + }, + { + "path": "confuse/images/62.png", + "hash": "2c162ab10a9d01e0e8b0019f597cbcdf" + }, + { + "path": "confuse/images/63.png", + "hash": "81940aed3fda844dabe97f05a6636311" + }, + { + "path": "confuse/images/64.png", + "hash": "dbaa72fcd6f6677c569f73449f2a8790" + }, + { + "path": "confuse/images/65.png", + "hash": "b10625ffdd4f4bab57c5ed27b0a84cc9" + }, + { + "path": "confuse/images/66.png", + "hash": "d550962452fe6c383c62b973dc00aefc" + }, + { + "path": "confuse/images/67.png", + "hash": "2187819577b8acd5c170a8137c6eb2ce" + }, + { + "path": "confuse/images/68.png", + "hash": "68b37e77e5678b1382c755e683f600f1" + }, + { + "path": "confuse/images/69.png", + "hash": "7ee64ef710190844ae138beb7080c414" + }, + { + "path": "confuse/images/7.png", + "hash": "b529943d2a97ee24dc2af526d6afbf20" + }, + { + "path": "confuse/images/70.png", + "hash": "31ac37fdcd36c2cc8b444e9245843316" + }, + { + "path": "confuse/images/71.png", + "hash": "c009b05844a6f673baebb85d4ca810df" + }, + { + "path": "confuse/images/72.png", + "hash": "82a8077f34e7052d16ba32386a018534" + }, + { + "path": "confuse/images/73.png", + "hash": "9a8a39e0fb705f9b259e8323a533ff20" + }, + { + "path": "confuse/images/74.png", + "hash": "880a60d5d3e656116b0be4a37a1e56bb" + }, + { + "path": "confuse/images/75.png", + "hash": "589ba816911705a0b7d8f1f07833cfa4" + }, + { + "path": "confuse/images/76.png", + "hash": "b9bb3ce47bb157a8b1b9383df59c0a30" + }, + { + "path": "confuse/images/77.png", + "hash": "f40cca19853e6b29d10dbf6bc410c39e" + }, + { + "path": "confuse/images/78.png", + "hash": "e110e2ce944356056714fe26894ee509" + }, + { + "path": "confuse/images/79.png", + "hash": "6365cbb7ff7106e1c6334942ebebfa6e" + }, + { + "path": "confuse/images/8.png", + "hash": "8faa3341b8a1d86f60313a11215b5ace" + }, + { + "path": "confuse/images/80.png", + "hash": "9a47bd56b13059e349f6236c6dce605a" + }, + { + "path": "confuse/images/81.png", + "hash": "fd5b11c40f60da53da999cce18572552" + }, + { + "path": "confuse/images/82.png", + "hash": "7f6a76528a8a531d8d0fb88b42b1855c" + }, + { + "path": "confuse/images/83.png", + "hash": "d0c1125dbb10d75406c1d2cc88368766" + }, + { + "path": "confuse/images/84.png", + "hash": "cefb8ed958cb38f74db21ed4b390b175" + }, + { + "path": "confuse/images/85.png", + "hash": "508467fcf63c81e8202f6c24b0007032" + }, + { + "path": "confuse/images/86.png", + "hash": "831d56520f8378c8c8a525d8bf786c99" + }, + { + "path": "confuse/images/87.png", + "hash": "807e7b96ac60ffb65b9f28643d87c7ea" + }, + { + "path": "confuse/images/88.png", + "hash": "d1f27772cc238b348e82b5126bf6cbc9" + }, + { + "path": "confuse/images/89.png", + "hash": "fca1191b7a7dbc199f7cb9541c0cffc1" + }, + { + "path": "confuse/images/9.png", + "hash": "562ed906ec350b5f948f2dc5793cdb3f" + }, + { + "path": "confuse/images/90.png", + "hash": "647b0aca88439a8bc0c4fd5f56bb08db" + }, + { + "path": "confuse/images/91.png", + "hash": "6a9f58a786851e8d227255007716c9c3" + }, + { + "path": "confuse/images/92.png", + "hash": "d5bc05be5757a38b5c8ede86b3bbecd0" + }, + { + "path": "confuse/images/93.png", + "hash": "0aec630f9affb58fc244ebf867b6756f" + }, + { + "path": "confuse/images/94.png", + "hash": "7c8afaaacd83da90ef8ba815ae9c6adb" + }, + { + "path": "confuse/images/95.png", + "hash": "98ae73a5d37372b009d70abdcd80c016" + }, + { + "path": "confuse/images/96.png", + "hash": "4197a036a87ae517034548801297b6a4" + }, + { + "path": "confuse/images/97.png", + "hash": "cdc67752ea7f8d22eccf9070068ff91e" + }, + { + "path": "confuse/images/98.png", + "hash": "55dc9c90d7b95a6f6a8f45a10c0b5900" + }, + { + "path": "confuse/images/99.png", + "hash": "8342ce8812c3104f57871d590a2ca408" + }, + { + "path": "coupon/images/0.png", + "hash": "e7faf1dcc5a4ff24536b7e41a4faf733" + }, + { + "path": "cover_face/images/0.png", + "hash": "8e26cd9059e61526a04d87918f9744a7" + }, + { + "path": "crawl/images/01.jpg", + "hash": "cce6b6c568d5fab48dcae9278c46a989" + }, + { + "path": "crawl/images/02.jpg", + "hash": "7c3ee42c3ff9426fc8f4de5ab143d85c" + }, + { + "path": "crawl/images/03.jpg", + "hash": "2e76c43a6d3fdf6f545b03e78e9f9fbd" + }, + { + "path": "crawl/images/04.jpg", + "hash": "97fa4883794bf2897ed5c3bb77469efb" + }, + { + "path": "crawl/images/05.jpg", + "hash": "e43b84a3615f376de456dd3fc44ed7b9" + }, + { + "path": "crawl/images/06.jpg", + "hash": "325794814502c47c91342a01e99ae848" + }, + { + "path": "crawl/images/07.jpg", + "hash": "c4e44e1b0da434105ac7ec3e00a719ef" + }, + { + "path": "crawl/images/08.jpg", + "hash": "854f91dd72caf3570a270de49c6c3a3f" + }, + { + "path": "crawl/images/09.jpg", + "hash": "f2426f40201f0188986fbc581be93f7f" + }, + { + "path": "crawl/images/10.jpg", + "hash": "5e2ed1f0c9b2e1f22ca2996ca0c2c583" + }, + { + "path": "crawl/images/11.jpg", + "hash": "a319d42a631243b12ea5e23e395db053" + }, + { + "path": "crawl/images/12.jpg", + "hash": "b2673e18b7fb6dbb7a8a9b548a9fac67" + }, + { + "path": "crawl/images/13.jpg", + "hash": "c641beff5799a5448c8d599fd382a712" + }, + { + "path": "crawl/images/14.jpg", + "hash": "e8987c5f87145247abf7b71f68315c35" + }, + { + "path": "crawl/images/15.jpg", + "hash": "44333dd2980c8f0634ecb4b51df68883" + }, + { + "path": "crawl/images/16.jpg", + "hash": "c05fc5e54e081909959da84a79602c14" + }, + { + "path": "crawl/images/17.jpg", + "hash": "69072cff8bbf687c5933536df8d14fa2" + }, + { + "path": "crawl/images/18.jpg", + "hash": "5e29e097d7145108d22141c980d37549" + }, + { + "path": "crawl/images/19.jpg", + "hash": "2bf84016a2fc51beb1a3b51ca566129f" + }, + { + "path": "crawl/images/20.jpg", + "hash": "dc8f3e84d315c6e8fb0e81cf01fe9858" + }, + { + "path": "crawl/images/21.jpg", + "hash": "2088ed79ddaf4ba4e90c388151001ba0" + }, + { + "path": "crawl/images/22.jpg", + "hash": "8356a010b3739a423971aaed1c04b189" + }, + { + "path": "crawl/images/23.jpg", + "hash": "c31d7dab81d42449a67f64849c9b92e3" + }, + { + "path": "crawl/images/24.jpg", + "hash": "5c6e144005eee87ef930551887be1231" + }, + { + "path": "crawl/images/25.jpg", + "hash": "d31ab3575368eee91640a61690f96455" + }, + { + "path": "crawl/images/26.jpg", + "hash": "08d586461e3fcf195d33b3dedf4c975c" + }, + { + "path": "crawl/images/27.jpg", + "hash": "231134ba99805ff5df605b152df96b50" + }, + { + "path": "crawl/images/28.jpg", + "hash": "7b224d314e8c0f24909fb81cf4dd46ad" + }, + { + "path": "crawl/images/29.jpg", + "hash": "0438049dbe406a3f226601ee43ccbbc5" + }, + { + "path": "crawl/images/30.jpg", + "hash": "c53078e5fc9c8325e77b3cc8a90742e4" + }, + { + "path": "crawl/images/31.jpg", + "hash": "1180e67b8783a97bc9836f5452d8bc97" + }, + { + "path": "crawl/images/32.jpg", + "hash": "6beb7396a405776b059f2f2570c7ab88" + }, + { + "path": "crawl/images/33.jpg", + "hash": "13a8694e3309db4974941dbbfaa9efeb" + }, + { + "path": "crawl/images/34.jpg", + "hash": "718f66b3fb852638c6e558ac6439134d" + }, + { + "path": "crawl/images/35.jpg", + "hash": "2d1fd0826efdcf432fa4d31123cc29d4" + }, + { + "path": "crawl/images/36.jpg", + "hash": "5f919e2888ae358ebb0d276764677eb9" + }, + { + "path": "crawl/images/37.jpg", + "hash": "3d05ce7d26c64d31d42a1d41b42679b6" + }, + { + "path": "crawl/images/38.jpg", + "hash": "779884b7ea0ba7ea74678dd2b72ed724" + }, + { + "path": "crawl/images/39.jpg", + "hash": "6ca6621f9d24185849e2b04a3d2e48cc" + }, + { + "path": "crawl/images/40.jpg", + "hash": "79b7ade1d3b87e5d12bee2194b575a64" + }, + { + "path": "crawl/images/41.jpg", + "hash": "370414538e997f6ca8c71ceb765a334f" + }, + { + "path": "crawl/images/42.jpg", + "hash": "f8e0e017de609c1761bb480f2c556cfa" + }, + { + "path": "crawl/images/43.jpg", + "hash": "6a0ad1624348135b563d080ab957f194" + }, + { + "path": "crawl/images/44.jpg", + "hash": "cad8a91f4ad34e97c9df229134423d7e" + }, + { + "path": "crawl/images/45.jpg", + "hash": "20a16ca7ecc0c2515c3995658619324e" + }, + { + "path": "crawl/images/46.jpg", + "hash": "9db7359991714a5be0cd8a452d9ad10e" + }, + { + "path": "crawl/images/47.jpg", + "hash": "a759b94eca07f1a544a303aef20da203" + }, + { + "path": "crawl/images/48.jpg", + "hash": "3a3191d21f27ffb9671bcedf1538abcc" + }, + { + "path": "crawl/images/49.jpg", + "hash": "fc04ef2afa46d592658172dd8dc1cc94" + }, + { + "path": "crawl/images/50.jpg", + "hash": "3bdd6b0cd1571511ab68d3a7d65503c6" + }, + { + "path": "crawl/images/51.jpg", + "hash": "73dd26dcebfd8bdd3f8fd11c1bdecb93" + }, + { + "path": "crawl/images/52.jpg", + "hash": "6fecf8ebd4aecbd7edf001a7ad5bd6a8" + }, + { + "path": "crawl/images/53.jpg", + "hash": "6c728cb71eb019ef5dcf79ce276d7304" + }, + { + "path": "crawl/images/54.jpg", + "hash": "249ab6abbadd5775b4db345d4111a483" + }, + { + "path": "crawl/images/55.jpg", + "hash": "43a8723bab213740211b1704a45b3e7a" + }, + { + "path": "crawl/images/56.jpg", + "hash": "27d00835d39b95543421a1070fff1db9" + }, + { + "path": "crawl/images/57.jpg", + "hash": "e5276244ddf08c6b1ec4cd516b72b679" + }, + { + "path": "crawl/images/58.jpg", + "hash": "8bd116c9d35fd75d2dafd93f8fc41ba7" + }, + { + "path": "crawl/images/59.jpg", + "hash": "af9dba7059394fb29d6cde220b4a81bd" + }, + { + "path": "crawl/images/60.jpg", + "hash": "dc6f1aed35469d818a5baa2376b0d079" + }, + { + "path": "crawl/images/61.jpg", + "hash": "f31def3cd5162c00d30972897298cd46" + }, + { + "path": "crawl/images/62.jpg", + "hash": "515ba871787b905c32c2b9d6bfa80e45" + }, + { + "path": "crawl/images/63.jpg", + "hash": "39e88bc661516e766e9c8f3e67a121a6" + }, + { + "path": "crawl/images/64.jpg", + "hash": "f923d5b7efc1ae8779f1255aae1e2e6d" + }, + { + "path": "crawl/images/65.jpg", + "hash": "a93c9bf77017252a84d15f8eab26d4b2" + }, + { + "path": "crawl/images/66.jpg", + "hash": "acea84f25f75d60627c0ede058eed4b8" + }, + { + "path": "crawl/images/67.jpg", + "hash": "18d416a63e4963b4363ebd9289dd15fc" + }, + { + "path": "crawl/images/68.jpg", + "hash": "cb661d9cd0df77b2a8c5535287224f7f" + }, + { + "path": "crawl/images/69.jpg", + "hash": "8137e5b1174969fd131ea04789fca972" + }, + { + "path": "crawl/images/70.jpg", + "hash": "380c0b89c5baf7dbd0ffef38446a87e8" + }, + { + "path": "crawl/images/71.jpg", + "hash": "60428aa26541efa2250d37d74a874ba6" + }, + { + "path": "crawl/images/72.jpg", + "hash": "bee413357320f096a9853804edd5aeb2" + }, + { + "path": "crawl/images/73.jpg", + "hash": "0fc974698f0be98e9c9920e521f73ce6" + }, + { + "path": "crawl/images/74.jpg", + "hash": "5185af743a9e233a7bee56aa0f7d6a1b" + }, + { + "path": "crawl/images/75.jpg", + "hash": "53ad0b0dce7ff8d90b66336108123d75" + }, + { + "path": "crawl/images/76.jpg", + "hash": "cee00e8f49851ef8a002180100aff3b7" + }, + { + "path": "crawl/images/77.jpg", + "hash": "3b1821d3e01777cda96d1a750f0a5570" + }, + { + "path": "crawl/images/78.jpg", + "hash": "be506707b4730cb4e94480231b46a617" + }, + { + "path": "crawl/images/79.jpg", + "hash": "9ae5ed97053b61541afe79b1ccb11fb5" + }, + { + "path": "crawl/images/80.jpg", + "hash": "f890db4dab16bd14f844d20c9a506245" + }, + { + "path": "crawl/images/81.jpg", + "hash": "f768dcefda04786bbc1be87f1da99d26" + }, + { + "path": "crawl/images/82.jpg", + "hash": "1060692fef8cd0865ec65b71ab4b3598" + }, + { + "path": "crawl/images/83.jpg", + "hash": "6c0e706db231044a2ee659a9003453e2" + }, + { + "path": "crawl/images/84.jpg", + "hash": "b30571c5ec880a98048004a859cf90cf" + }, + { + "path": "crawl/images/85.jpg", + "hash": "9245e2da88ebc134b7e2292068a80cfb" + }, + { + "path": "crawl/images/86.jpg", + "hash": "ca01df832eae89b1501c05373cd67b3d" + }, + { + "path": "crawl/images/87.jpg", + "hash": "40c6e2bcdb0292a52df7215844acfed0" + }, + { + "path": "crawl/images/88.jpg", + "hash": "e1ae322f432c9aa97e3735eb917558d1" + }, + { + "path": "crawl/images/89.jpg", + "hash": "5954888d330068ae2cb700b191223e93" + }, + { + "path": "crawl/images/90.jpg", + "hash": "0cdbaec24ba2753083cb57c4ea94fed6" + }, + { + "path": "crawl/images/91.jpg", + "hash": "f15ef87ab6a4e79e0b9fca132a27d060" + }, + { + "path": "crawl/images/92.jpg", + "hash": "b50d7c226a506e9e91bce322219aa131" + }, + { + "path": "decent_kiss/images/0.png", + "hash": "c7bf01f3d8177d267d9dfd0a61b67007" + }, + { + "path": "dinosaur/images/0.png", + "hash": "dc7945042837325b39b70119ae140d66" + }, + { + "path": "distracted/images/0.png", + "hash": "e43d4c7cd948c5784509e6b90f1588d2" + }, + { + "path": "distracted/images/1.png", + "hash": "795ebc988f75b5cda340dce94cb3f6d7" + }, + { + "path": "distracted/images/2.png", + "hash": "cc15e121923c705a0610099217ee3006" + }, + { + "path": "distracted/images/3.png", + "hash": "fd7036c95a7c1270bcf2d7130fdfc0d7" + }, + { + "path": "divorce/images/0.png", + "hash": "2b142fc47a2cc1cc723a4edb33f7efcf" + }, + { + "path": "dog_of_vtb/images/0.png", + "hash": "19a16294341eb540a5f48f6972937fc3" + }, + { + "path": "dont_go_near/images/0.png", + "hash": "eb240a7e56142a9e5233f675430b7481" + }, + { + "path": "dont_touch/images/0.png", + "hash": "3ff591ee749dfc208e2c5bf617c47dbe" + }, + { + "path": "dont_touch/images/mask.png", + "hash": "5b3ffca1b7a588a02d2dc4939cd6d31f" + }, + { + "path": "eat/images/0.png", + "hash": "114a3680c42d8818ff645aad63fa5af6" + }, + { + "path": "eat/images/1.png", + "hash": "1d46ae1a4d0080b62554783bfcdbb177" + }, + { + "path": "eat/images/2.png", + "hash": "3248f754830433778ae06df6ba2735d8" + }, + { + "path": "fanatic/images/0.jpg", + "hash": "65803c47845cd55e16cc3b5155d14430" + }, + { + "path": "fencing/images/0.png", + "hash": "494d6744b2fe70a2a24fa5680eab62e7" + }, + { + "path": "fencing/images/1.png", + "hash": "c2352fea73085e5e30465bdbd14e967f" + }, + { + "path": "fencing/images/10.png", + "hash": "bb11fc489bf9c9a5d6d7b6216cf2add7" + }, + { + "path": "fencing/images/11.png", + "hash": "bd2f472a815021ffe09a038256fc3ed6" + }, + { + "path": "fencing/images/12.png", + "hash": "c38fc68dbffa8f811dde76d05e158000" + }, + { + "path": "fencing/images/13.png", + "hash": "05c025367c38dcb56cbddc25dcee5c2c" + }, + { + "path": "fencing/images/14.png", + "hash": "e630633af5f3554a665c7acc700d8062" + }, + { + "path": "fencing/images/15.png", + "hash": "1a992964b9dc0730e3b8e5f6fa8e33c6" + }, + { + "path": "fencing/images/16.png", + "hash": "b2f3d5aae539fb2be6bc93d70361d93c" + }, + { + "path": "fencing/images/17.png", + "hash": "b6305e03a78495edba1787a2fe33cad0" + }, + { + "path": "fencing/images/18.png", + "hash": "0cd2f141d092fe8c2bc703b222275ac0" + }, + { + "path": "fencing/images/2.png", + "hash": "8ef9f2964d620faf379ac3f9556d1ab1" + }, + { + "path": "fencing/images/3.png", + "hash": "b0353f65f1f5c6f0dff890e314fbf866" + }, + { + "path": "fencing/images/4.png", + "hash": "f7f92325df415688edd85295e8ffbf1b" + }, + { + "path": "fencing/images/5.png", + "hash": "d13f10788d9b40353a3e0ea69fe646a5" + }, + { + "path": "fencing/images/6.png", + "hash": "99691ce248fdb3f8ec6365185c88b944" + }, + { + "path": "fencing/images/7.png", + "hash": "8eefb0b92e25340030721db422658c0c" + }, + { + "path": "fencing/images/8.png", + "hash": "8d4c631bc83659ffa3ede9dbf604f65c" + }, + { + "path": "fencing/images/9.png", + "hash": "81f17c9e3396f1d236efdb4d7a45c92f" + }, + { + "path": "fill_head/images/0.jpg", + "hash": "343d9e2f99061c99b8a2cca8a8074c93" + }, + { + "path": "find_chips/images/0.jpg", + "hash": "a8b86967b35a34129dd70a6c81a565e4" + }, + { + "path": "garbage/images/0.png", + "hash": "15a74fc27fc5ad1b2c4f3145aea81be4" + }, + { + "path": "garbage/images/1.png", + "hash": "13ed796e6e5a0f098d385ff5aa9360e2" + }, + { + "path": "garbage/images/10.png", + "hash": "018e992e8409366305d368b0b60d77e8" + }, + { + "path": "garbage/images/11.png", + "hash": "f6ae17fafdfc956645fb3f04deb5dc75" + }, + { + "path": "garbage/images/12.png", + "hash": "db2999727594e3186602b674993955b7" + }, + { + "path": "garbage/images/13.png", + "hash": "8186573633635047b38a8251494e207a" + }, + { + "path": "garbage/images/14.png", + "hash": "0374fac3fc52836b22226b33e10e4651" + }, + { + "path": "garbage/images/15.png", + "hash": "33ca5a42d75a9fc836082f31f059cb07" + }, + { + "path": "garbage/images/16.png", + "hash": "e044d9ad65657d0fadddefa91fe9d9f6" + }, + { + "path": "garbage/images/17.png", + "hash": "a4bcdd0bd939287881e3f6ab0ec5ee9e" + }, + { + "path": "garbage/images/18.png", + "hash": "41a300f7ed6ac9c5258c79ae3b655c45" + }, + { + "path": "garbage/images/19.png", + "hash": "a9adcc4884bf0c54f6acc1c268e89259" + }, + { + "path": "garbage/images/2.png", + "hash": "76adaddd8f25c4ff87af41652fae8426" + }, + { + "path": "garbage/images/20.png", + "hash": "f702cab4e4fb5a12e5c927e081357b01" + }, + { + "path": "garbage/images/21.png", + "hash": "4a8d8ff86119d8765855cf7a4d6ddfb0" + }, + { + "path": "garbage/images/22.png", + "hash": "54a5c78b51335d5cca607eb61114c684" + }, + { + "path": "garbage/images/23.png", + "hash": "712228f18c3fd891779cc53637e51ecb" + }, + { + "path": "garbage/images/24.png", + "hash": "3146fd2df0be2e38b8971c58c51b6cdd" + }, + { + "path": "garbage/images/3.png", + "hash": "9b9b4f0dfc7de061341aa423bacc91f4" + }, + { + "path": "garbage/images/4.png", + "hash": "ed4545859014cbd5f88ff3d8d464406c" + }, + { + "path": "garbage/images/5.png", + "hash": "da3d51b91a7e166c4e6b1a71396dbad3" + }, + { + "path": "garbage/images/6.png", + "hash": "f0ef28426cfd2a62633da02c3e3867c3" + }, + { + "path": "garbage/images/7.png", + "hash": "0a36874457b495812f8a708dc2af5eba" + }, + { + "path": "garbage/images/8.png", + "hash": "6f7f69ba43029a2053bd12fabdcd7a43" + }, + { + "path": "garbage/images/9.png", + "hash": "6749dad6bd2ade275a157a205ef6b860" + }, + { + "path": "genshin_start/images/0.png", + "hash": "7b5b9156e3582217ac185d1b96059c80" + }, + { + "path": "gif_subtitle/images/chanshenzi.gif", + "hash": "1d691ef44c9015b90118d462d8254bcf" + }, + { + "path": "gif_subtitle/images/maikease.gif", + "hash": "6eb2aa718212b23329a43e4bfd70998c" + }, + { + "path": "gif_subtitle/images/nihaosaoa.gif", + "hash": "97d8904891a6c890778b7ff6c467f438" + }, + { + "path": "gif_subtitle/images/qiegewala.gif", + "hash": "286153b55f83fc13f4eb6c7d48252541" + }, + { + "path": "gif_subtitle/images/shishilani.gif", + "hash": "64a1c8167bfd0cb46898bba32225a49b" + }, + { + "path": "gif_subtitle/images/shuifandui.gif", + "hash": "3125a5b21d77fbe5176068f82a82f344" + }, + { + "path": "gif_subtitle/images/wangjingze.gif", + "hash": "96bc6eefc1ec523746ba3ddccfe79833" + }, + { + "path": "gif_subtitle/images/weisuoyuwei.gif", + "hash": "c835e2828b6c050e594592c4f44923e9" + }, + { + "path": "gif_subtitle/images/wunian.gif", + "hash": "ef27895e6f030f6a308d60189aba662d" + }, + { + "path": "gif_subtitle/images/yalidaye.gif", + "hash": "ce1a77bc761384d08324bc94a495d74f" + }, + { + "path": "gif_subtitle/images/zengxiaoxian.gif", + "hash": "aa3dde683bea08ee6fe5fee1d34ae8b1" + }, + { + "path": "good_news/images/0.jpg", + "hash": "bb1631780bd36ea5e2338611d2887800" + }, + { + "path": "gun/images/0.png", + "hash": "23e223aba69b4c42cd04dcae58aec254" + }, + { + "path": "hammer/images/0.png", + "hash": "b8e94050256fc70c57f7167a8bbe3842" + }, + { + "path": "hammer/images/1.png", + "hash": "e87bdd2e1ab714965594486ec7e59273" + }, + { + "path": "hammer/images/2.png", + "hash": "3db04d878be5d2bcc6385419464f8cbe" + }, + { + "path": "hammer/images/3.png", + "hash": "5926fc010853908f2fde98149b1cde26" + }, + { + "path": "hammer/images/4.png", + "hash": "9b10b4ee1c6980260d48489d2edb4b0d" + }, + { + "path": "hammer/images/5.png", + "hash": "4f183ced8935e58b63e65330bce6479a" + }, + { + "path": "hammer/images/6.png", + "hash": "fa99a2c0fd32fc12b53c29b34ecfdc5b" + }, + { + "path": "high_EQ/images/0.jpg", + "hash": "e82b03fd3c5e4b8671c76047c9bcc1ad" + }, + { + "path": "hit_screen/images/0.png", + "hash": "1b77c941f4e0be97f9209b1697af78a3" + }, + { + "path": "hit_screen/images/1.png", + "hash": "2f72e6b3a7ef135bab0d1791740e50ad" + }, + { + "path": "hit_screen/images/10.png", + "hash": "06ee8c86ee5a4fcf1c64f05178d7a9f1" + }, + { + "path": "hit_screen/images/11.png", + "hash": "d9a620a32c4d83ef5124acc4c8f44c0c" + }, + { + "path": "hit_screen/images/12.png", + "hash": "906e33a3efcd9939c8d101d7907ee8d6" + }, + { + "path": "hit_screen/images/13.png", + "hash": "1ab5a1f4460db339b769265eb611a984" + }, + { + "path": "hit_screen/images/14.png", + "hash": "2ab2826e31abfa85e9bed6bd9a29a0fb" + }, + { + "path": "hit_screen/images/15.png", + "hash": "fcf7244d01c15e81f1a10509a57f7421" + }, + { + "path": "hit_screen/images/16.png", + "hash": "f31617015d582e6fb0dc705f3ce9dda1" + }, + { + "path": "hit_screen/images/17.png", + "hash": "595266cf81b8d831defc869588f13866" + }, + { + "path": "hit_screen/images/18.png", + "hash": "edf5600790fb42cde74fc0e08f018d0b" + }, + { + "path": "hit_screen/images/19.png", + "hash": "e69e9768da626a01dda6d5a3d86160c6" + }, + { + "path": "hit_screen/images/2.png", + "hash": "52d6b3e7409df8b840f2b1b1ec096be7" + }, + { + "path": "hit_screen/images/20.png", + "hash": "8079c0064342788af30cd274a52dfa89" + }, + { + "path": "hit_screen/images/21.png", + "hash": "e7fb41be10bef52e718aa4022995732b" + }, + { + "path": "hit_screen/images/22.png", + "hash": "61fd0c02dbc2fee0fb6e47fee48b47bc" + }, + { + "path": "hit_screen/images/23.png", + "hash": "3bcec874887b5f1b730622cb22834cc9" + }, + { + "path": "hit_screen/images/24.png", + "hash": "4660c21bb748574a9cc1d4b25536814c" + }, + { + "path": "hit_screen/images/25.png", + "hash": "f8e28991d35af936974315a1035bcccf" + }, + { + "path": "hit_screen/images/26.png", + "hash": "2561fbdf6d86e0296b2954c28015bf24" + }, + { + "path": "hit_screen/images/27.png", + "hash": "746c182316953d7ab216f0aa960224ef" + }, + { + "path": "hit_screen/images/28.png", + "hash": "0c6dce8b6f078612bfcac807bec83779" + }, + { + "path": "hit_screen/images/3.png", + "hash": "15e94688ebc0649564df9344e900e0ad" + }, + { + "path": "hit_screen/images/4.png", + "hash": "f1dbc36604462cf90604f3143938ab0b" + }, + { + "path": "hit_screen/images/5.png", + "hash": "44dd57fa5d23ff5614a6d98656b31095" + }, + { + "path": "hit_screen/images/6.png", + "hash": "8c66d2df6ce945ef239d3b18a4774b3b" + }, + { + "path": "hit_screen/images/7.png", + "hash": "6e42ce15f6a148273e926e085307a3cc" + }, + { + "path": "hit_screen/images/8.png", + "hash": "e313e4047ff2973817e1a47064a32988" + }, + { + "path": "hit_screen/images/9.png", + "hash": "a6dd680de2644d2fba6dfeeff2c90d1b" + }, + { + "path": "hold_grudge/images/0.png", + "hash": "985187c5c54b553b0af9781bfa7a5514" + }, + { + "path": "hold_tight/images/0.png", + "hash": "6c52f7de5f1a4aca8f1a0e7c5f6dd89b" + }, + { + "path": "hug_leg/images/0.png", + "hash": "bc08d4fd4fa124712006354df0eb092d" + }, + { + "path": "hug_leg/images/1.png", + "hash": "31bd381c73cccd175f1c71497a752870" + }, + { + "path": "hug_leg/images/2.png", + "hash": "49214e16f3150aea1cbc4849576516cd" + }, + { + "path": "hug_leg/images/3.png", + "hash": "83f6f33ead609c270873287ee65b89ca" + }, + { + "path": "hug_leg/images/4.png", + "hash": "74bf0373ac3b8057326722a0cf8fc51c" + }, + { + "path": "hug_leg/images/5.png", + "hash": "3d12cc8ad857617351d2961790e031af" + }, + { + "path": "hutao_bite/images/0.png", + "hash": "bbd32543d177575053100e7b23ac1b27" + }, + { + "path": "hutao_bite/images/1.png", + "hash": "9b108ddc8654bda9c3a3922308be2e07" + }, + { + "path": "imprison/images/0.jpg", + "hash": "7afdc93efbe34a2a9c7e7fc60b8b57a4" + }, + { + "path": "incivilization/images/0.png", + "hash": "352c9534c4ff182174b0b29e7ff7df42" + }, + { + "path": "interview/images/huaji.png", + "hash": "3bb5ff24a83544995edab765c837bec3" + }, + { + "path": "interview/images/microphone.png", + "hash": "34775a82e4b8b7df44d2cf37a6e16ea5" + }, + { + "path": "jiji_king/images/0.png", + "hash": "346ae46e7697540a3bec08c30ad78969" + }, + { + "path": "jiujiu/images/0.png", + "hash": "781d5ebfc9f2309c4cf60ef7b93ecfb8" + }, + { + "path": "jiujiu/images/1.png", + "hash": "c01805a80c726fbc6f9bab364b82e867" + }, + { + "path": "jiujiu/images/2.png", + "hash": "a1bdbc3c5d4830ca6baf459d686e38e3" + }, + { + "path": "jiujiu/images/3.png", + "hash": "b972b1ea12948e76735bed4528dcab46" + }, + { + "path": "jiujiu/images/4.png", + "hash": "30caae291977d2a3121c0a15a3832683" + }, + { + "path": "jiujiu/images/5.png", + "hash": "281b8b7796f579ac907c5923bf8a368b" + }, + { + "path": "jiujiu/images/6.png", + "hash": "eddf5fe3cc1e7470c17e04c8db35168f" + }, + { + "path": "jiujiu/images/7.png", + "hash": "82f7556d03c3e847ec3dd3f1d0915d9f" + }, + { + "path": "karyl_point/images/0.png", + "hash": "9ab82387b8f3cce1acdb57499c49ebe7" + }, + { + "path": "kick_ball/images/0.png", + "hash": "d2b2916d37d2cccd5c9f12ea99da87a7" + }, + { + "path": "kick_ball/images/1.png", + "hash": "509da70e46d631c3353ad525431b7674" + }, + { + "path": "kick_ball/images/10.png", + "hash": "9535ff5344dbf99f1afbf27f0282b2d1" + }, + { + "path": "kick_ball/images/11.png", + "hash": "4af18499194c6436eca8ff0a24944643" + }, + { + "path": "kick_ball/images/12.png", + "hash": "95897fc9e72b3f9ada4cf3ae673cbcdc" + }, + { + "path": "kick_ball/images/13.png", + "hash": "0dd603137fc1de3b18e4c0fd65eda6bb" + }, + { + "path": "kick_ball/images/14.png", + "hash": "fd8164a80326bdd5eee1291767b05ed3" + }, + { + "path": "kick_ball/images/2.png", + "hash": "bd6d20fd03612ba751059157b1966fab" + }, + { + "path": "kick_ball/images/3.png", + "hash": "94990605389da96c2f8168b4c2561562" + }, + { + "path": "kick_ball/images/4.png", + "hash": "6b0071cb715b8bc853ba32cde58a0e73" + }, + { + "path": "kick_ball/images/5.png", + "hash": "80e2a119658a86b1d97a26c2b41d8481" + }, + { + "path": "kick_ball/images/6.png", + "hash": "f573f27a1d7ff5117f2855d34bd225a1" + }, + { + "path": "kick_ball/images/7.png", + "hash": "76d027ec89c7de2b0abeabe84497cd00" + }, + { + "path": "kick_ball/images/8.png", + "hash": "3865dacbe636cb2c56967b1d873752c3" + }, + { + "path": "kick_ball/images/9.png", + "hash": "ca06142edeeafb64a59cd83985d4afd5" + }, + { + "path": "kirby_hammer/images/0.png", + "hash": "4b3d751215727547c9d596370c0cadc6" + }, + { + "path": "kirby_hammer/images/1.png", + "hash": "3e9b3db1325109cd857498cf764ed8b3" + }, + { + "path": "kirby_hammer/images/10.png", + "hash": "252c83ec6328ca49a46bf2cf88481123" + }, + { + "path": "kirby_hammer/images/11.png", + "hash": "410b76d943885f08adbf10f7f054e75f" + }, + { + "path": "kirby_hammer/images/12.png", + "hash": "9ae6ca270a810714a8d7c9dd4099593a" + }, + { + "path": "kirby_hammer/images/13.png", + "hash": "ec99ad3043c7fd3ff77530ee38172eaa" + }, + { + "path": "kirby_hammer/images/14.png", + "hash": "096fe608b0490ed4fcb3f35bd0f74baa" + }, + { + "path": "kirby_hammer/images/15.png", + "hash": "d117358a362f2ddff2d4c22ed88c981a" + }, + { + "path": "kirby_hammer/images/16.png", + "hash": "d80a8e7ab1c123c5ece132d9770de968" + }, + { + "path": "kirby_hammer/images/17.png", + "hash": "9e4d604e25a2da6b99d1840fe7c75602" + }, + { + "path": "kirby_hammer/images/18.png", + "hash": "067baa4f017f15f90d36d15e89f9527f" + }, + { + "path": "kirby_hammer/images/19.png", + "hash": "3907359c33ea79883f36a5aaf2cffc81" + }, + { + "path": "kirby_hammer/images/2.png", + "hash": "2b9c78da812ace9ab756b3ac31bcc2c3" + }, + { + "path": "kirby_hammer/images/20.png", + "hash": "f72fb17d8f0187ab153021b44dd214d9" + }, + { + "path": "kirby_hammer/images/21.png", + "hash": "f2c1b689c31792c862208e0027f5eb3d" + }, + { + "path": "kirby_hammer/images/22.png", + "hash": "d2a986955f38ae165ab7ed5e9eff2c22" + }, + { + "path": "kirby_hammer/images/23.png", + "hash": "9e90dba73e5a018ca0fd222a004b1f5e" + }, + { + "path": "kirby_hammer/images/24.png", + "hash": "94a54a4bb46aef8764dc90b4a914c68e" + }, + { + "path": "kirby_hammer/images/25.png", + "hash": "54bd5065691abd93f8f67e6d4d82654b" + }, + { + "path": "kirby_hammer/images/26.png", + "hash": "984150c2897e2989bd89a4739ee17628" + }, + { + "path": "kirby_hammer/images/27.png", + "hash": "acf235c91c7ae0877531dd5eb1d05e9c" + }, + { + "path": "kirby_hammer/images/28.png", + "hash": "bb8829238a3bbdc892999a9bc3cc0035" + }, + { + "path": "kirby_hammer/images/29.png", + "hash": "de595b27464eac39b387f139daf0240c" + }, + { + "path": "kirby_hammer/images/3.png", + "hash": "f2298d7403dc43180713d7d31de47455" + }, + { + "path": "kirby_hammer/images/30.png", + "hash": "ed48b5f532f17d4419d2eac91787a6e2" + }, + { + "path": "kirby_hammer/images/31.png", + "hash": "e322d5ae9489235c164239ea0c80ea68" + }, + { + "path": "kirby_hammer/images/32.png", + "hash": "cca6150a0e930ac96985d7a33daa47ac" + }, + { + "path": "kirby_hammer/images/33.png", + "hash": "efb182d89025cb064a6d5ab7682975b5" + }, + { + "path": "kirby_hammer/images/34.png", + "hash": "99ca9df71e8a370f192374a057406d37" + }, + { + "path": "kirby_hammer/images/35.png", + "hash": "fdde0008b84eabbcff46a0e59c057105" + }, + { + "path": "kirby_hammer/images/36.png", + "hash": "45b4f1f245216b8670067b9df8df1ea6" + }, + { + "path": "kirby_hammer/images/37.png", + "hash": "206a72ca3b28cc1a50d4414364190bdc" + }, + { + "path": "kirby_hammer/images/38.png", + "hash": "9c5f7a67a182d73e0bc4a3a51b676938" + }, + { + "path": "kirby_hammer/images/39.png", + "hash": "c8eedcaacd133ac50373d45b56f007a7" + }, + { + "path": "kirby_hammer/images/4.png", + "hash": "9b7ab8b7137898c3a3ef680f27c5dac4" + }, + { + "path": "kirby_hammer/images/40.png", + "hash": "080e309ebc305fcd4ee2aabfaf40e6e0" + }, + { + "path": "kirby_hammer/images/41.png", + "hash": "fc6622b31b57c66e5b008d63e6409a94" + }, + { + "path": "kirby_hammer/images/42.png", + "hash": "1d003a0c7b75832ec11849d0192cabd3" + }, + { + "path": "kirby_hammer/images/43.png", + "hash": "fc56793262bf080fe9b8cef629a3acc2" + }, + { + "path": "kirby_hammer/images/44.png", + "hash": "cd3cc7029bffd42fe7119c687be44f2e" + }, + { + "path": "kirby_hammer/images/45.png", + "hash": "96419814c91e3082d1850793b5978f3f" + }, + { + "path": "kirby_hammer/images/46.png", + "hash": "f06d71ebed8e4410fe9139de30612e3e" + }, + { + "path": "kirby_hammer/images/47.png", + "hash": "ac9b4ae0523f7cc80f6ec8545436888c" + }, + { + "path": "kirby_hammer/images/48.png", + "hash": "3592a8851467f316e4b4186a85bbce27" + }, + { + "path": "kirby_hammer/images/49.png", + "hash": "9e5bc3797377a5f4f9385e8c9d55b8d6" + }, + { + "path": "kirby_hammer/images/5.png", + "hash": "3a5ec940f94e19c03879b3b2c21d9959" + }, + { + "path": "kirby_hammer/images/50.png", + "hash": "b0d440755b85428fc2d00537ab79caec" + }, + { + "path": "kirby_hammer/images/51.png", + "hash": "65757c46c224edd93ade8aadf0bfc3c0" + }, + { + "path": "kirby_hammer/images/52.png", + "hash": "c12fe7a7d87912155c9ded3b999752fb" + }, + { + "path": "kirby_hammer/images/53.png", + "hash": "5046fbe65e726be58b1ef243b7111a7d" + }, + { + "path": "kirby_hammer/images/54.png", + "hash": "3500fda8e30e5818cf16576e11be38d8" + }, + { + "path": "kirby_hammer/images/55.png", + "hash": "dec898961403796b4dff81f2af93767f" + }, + { + "path": "kirby_hammer/images/56.png", + "hash": "da4a03072d3f3ac6b2ef6bd0c129ff4c" + }, + { + "path": "kirby_hammer/images/57.png", + "hash": "054c7b45c34819d7c6f086da4b27cf3a" + }, + { + "path": "kirby_hammer/images/58.png", + "hash": "7f2f3d88c96d8f21f47087db40a3156a" + }, + { + "path": "kirby_hammer/images/59.png", + "hash": "4db1b3f61044fc795e6e859da2030321" + }, + { + "path": "kirby_hammer/images/6.png", + "hash": "98602b15bcd486f5d334910791a11ff5" + }, + { + "path": "kirby_hammer/images/60.png", + "hash": "e3e2b230e05b168aeb0c278ce6dea4ed" + }, + { + "path": "kirby_hammer/images/61.png", + "hash": "89e1a31ef24f68d5d8d7cdf5c0e245c5" + }, + { + "path": "kirby_hammer/images/7.png", + "hash": "85f414a42d7c8a991e55ef227ce44c22" + }, + { + "path": "kirby_hammer/images/8.png", + "hash": "3e5886543cdee36c21830fb681568ac1" + }, + { + "path": "kirby_hammer/images/9.png", + "hash": "83a12e09e4c29d23c634c0f11f1823b4" + }, + { + "path": "kiss/images/0.png", + "hash": "49c396692947a52148bcef0ea47f0491" + }, + { + "path": "kiss/images/1.png", + "hash": "f3587ef479ea9243d6370f7a6b30b68b" + }, + { + "path": "kiss/images/10.png", + "hash": "d396dfc1857882f82a5294a3af1d638b" + }, + { + "path": "kiss/images/11.png", + "hash": "84c8d3845fca2efe97cb5f6beb113376" + }, + { + "path": "kiss/images/12.png", + "hash": "9d50e3777af1b60b58fe30009ce29c24" + }, + { + "path": "kiss/images/2.png", + "hash": "97fd783dbe88877952a092199671d514" + }, + { + "path": "kiss/images/3.png", + "hash": "93c7d6c3ca56be70f10eabe92a828120" + }, + { + "path": "kiss/images/4.png", + "hash": "a6079d128ba4c0fb0f332823a36b780b" + }, + { + "path": "kiss/images/5.png", + "hash": "686562b06f7834f6328a2ece1931d85d" + }, + { + "path": "kiss/images/6.png", + "hash": "5d53fa7523b11b2c61450c0b57c5826f" + }, + { + "path": "kiss/images/7.png", + "hash": "e690eac3a3ba1c32f235a64de9f10263" + }, + { + "path": "kiss/images/8.png", + "hash": "2226d16df1e6f42535bb8814919b6e7c" + }, + { + "path": "kiss/images/9.png", + "hash": "2ddacd69e518cdc3b63dc682bffe4d1e" + }, + { + "path": "klee_eat/images/0.png", + "hash": "bd284652faeb1d17a9fe9a96a7eed219" + }, + { + "path": "klee_eat/images/1.png", + "hash": "434dd145519e680ea5a7efd6c46fc181" + }, + { + "path": "klee_eat/images/10.png", + "hash": "57f83d884ef3f5da1b7036e97a77ca31" + }, + { + "path": "klee_eat/images/11.png", + "hash": "8a5807ac9c701f1fe6d8f4acac72db36" + }, + { + "path": "klee_eat/images/12.png", + "hash": "2474538aae3536aa75f00bf49eba6587" + }, + { + "path": "klee_eat/images/13.png", + "hash": "c24d9702f74c06b1e14473542ca0ecea" + }, + { + "path": "klee_eat/images/14.png", + "hash": "ce03d5f6d09e6aba982272187701756e" + }, + { + "path": "klee_eat/images/15.png", + "hash": "30f24c72d721677136805ca01cfdc50e" + }, + { + "path": "klee_eat/images/16.png", + "hash": "36f15c4c9460e7d6b2d41a03ebfa7718" + }, + { + "path": "klee_eat/images/17.png", + "hash": "70023d2f2d0a6018b839a29c70f8710f" + }, + { + "path": "klee_eat/images/18.png", + "hash": "5206043658761fa5ec7479c518a8e369" + }, + { + "path": "klee_eat/images/19.png", + "hash": "c1a2d1db2ffafc850d2d859884437dae" + }, + { + "path": "klee_eat/images/2.png", + "hash": "a187d0bfec4b78787077b8780d91e7b0" + }, + { + "path": "klee_eat/images/20.png", + "hash": "3ba814841c09721cd37e30b8ef9683a5" + }, + { + "path": "klee_eat/images/21.png", + "hash": "578e23bba8cb885c377833aa14562f9d" + }, + { + "path": "klee_eat/images/22.png", + "hash": "8495aa8a2792ac60f6359553c29c1567" + }, + { + "path": "klee_eat/images/23.png", + "hash": "1746365398e99a42860a0a8154a63541" + }, + { + "path": "klee_eat/images/24.png", + "hash": "a594a3457c8c562e5891e721a692c324" + }, + { + "path": "klee_eat/images/25.png", + "hash": "92bbc0ca794e36e10b5e1049884df9ce" + }, + { + "path": "klee_eat/images/26.png", + "hash": "85a9bc64d2a974cb718b9c08c1f84a34" + }, + { + "path": "klee_eat/images/27.png", + "hash": "bd29cf8dd5ba31d77e69904d6456d1c9" + }, + { + "path": "klee_eat/images/28.png", + "hash": "1ff5c07022df2f08355b337209d5464e" + }, + { + "path": "klee_eat/images/29.png", + "hash": "97f45cae4dd2daa2a4d3f00ca561eb58" + }, + { + "path": "klee_eat/images/3.png", + "hash": "dcc1eca20924fcd31012dc38bc2b6429" + }, + { + "path": "klee_eat/images/30.png", + "hash": "8ac8286949b0c765fb8312fee62363a6" + }, + { + "path": "klee_eat/images/4.png", + "hash": "fe507dbb5c909e28c2919d26210225a4" + }, + { + "path": "klee_eat/images/5.png", + "hash": "4b65a362e8465945c7d439c64386abc5" + }, + { + "path": "klee_eat/images/6.png", + "hash": "76244ceeded4c6ea3ffb226cf717be3f" + }, + { + "path": "klee_eat/images/7.png", + "hash": "0e7ce4c9b664d253ec57c1eb579158ef" + }, + { + "path": "klee_eat/images/8.png", + "hash": "ead69b36f949b45cc4c7da801405ae38" + }, + { + "path": "klee_eat/images/9.png", + "hash": "6bc9f15771d52cf1c1bb09e09b9b76a7" + }, + { + "path": "knock/images/0.png", + "hash": "c4e73350a09ac862d8109995436734f4" + }, + { + "path": "knock/images/1.png", + "hash": "d241d1aee02c46b4b9947eb6685822f0" + }, + { + "path": "knock/images/2.png", + "hash": "cc7023dd828227ca6af658639b10ce7e" + }, + { + "path": "knock/images/3.png", + "hash": "06b3459243c79f4c499d3c52929a4b2c" + }, + { + "path": "knock/images/4.png", + "hash": "992619f101424f96cc972b537532d7ce" + }, + { + "path": "knock/images/5.png", + "hash": "9dde5fd9fe478412f51b26344114f33d" + }, + { + "path": "knock/images/6.png", + "hash": "14823b403ee6ade595c4b9c326bf72be" + }, + { + "path": "knock/images/7.png", + "hash": "fa158f632f04f81c4eeeb4766222df07" + }, + { + "path": "learn/images/0.png", + "hash": "548f528b25cfab4e79c36f901227cd59" + }, + { + "path": "lim_x_0/images/0.png", + "hash": "c2f71b246240a101195ab7bc653fc46f" + }, + { + "path": "listen_music/images/0.png", + "hash": "63252e976b3d821f982d8886bd2900c8" + }, + { + "path": "loading/images/icon.png", + "hash": "e85c326ab5c4ca55589761be7b7e990d" + }, + { + "path": "look_this_icon/images/nmsl.png", + "hash": "4f37b38d2a14cbe368b4e427c23aa28d" + }, + { + "path": "love_you/images/0.png", + "hash": "66ddcca5601fd9224a1e0d17909ade56" + }, + { + "path": "love_you/images/1.png", + "hash": "3e44083dd543e1380bdc03931b09984d" + }, + { + "path": "luoyonghao_say/images/0.jpg", + "hash": "dce3cd1bc790a4475744b525e728bdd2" + }, + { + "path": "luxun_say/images/0.jpg", + "hash": "fdf0252e7edea0a3186b908af557d2a7" + }, + { + "path": "maimai_awaken/images/0.png", + "hash": "e624223202cfeefff8c6be39f395c9d6" + }, + { + "path": "maimai_join/images/0.png", + "hash": "0b76b5df240115d862fb08425857363b" + }, + { + "path": "make_friend/images/0.png", + "hash": "9b20187a1eb50164c5963fc13146f4ea" + }, + { + "path": "marriage/images/0.png", + "hash": "700e73f2bfc52f205caa46c81c55a1fe" + }, + { + "path": "marriage/images/1.png", + "hash": "b118fe27aec8b9b05fe73cb8c942726e" + }, + { + "path": "meteor/images/0.png", + "hash": "16a32e5a514c4355a164afb05d510fb6" + }, + { + "path": "mihoyo/images/logo.png", + "hash": "681bf981d9181df226ca42354b7b7a85" + }, + { + "path": "mourning/images/0.png", + "hash": "931a7b0cda1cc6aa9dc2fcc6853dea35" + }, + { + "path": "murmur/images/0.jpg", + "hash": "2f37f330f2f6c83ef74505a405f25b87" + }, + { + "path": "my_friend/images/corner1.png", + "hash": "53a18e9da0e4723e876976b06aebe1a2" + }, + { + "path": "my_friend/images/corner2.png", + "hash": "5789f0bfbbfc745f5d5e37b77d911940" + }, + { + "path": "my_friend/images/corner3.png", + "hash": "e6a10dded6652680d878434ca1a19830" + }, + { + "path": "my_friend/images/corner4.png", + "hash": "40a04aa8c2ffb9243119c865ece04cc4" + }, + { + "path": "my_friend/images/label.png", + "hash": "9538d1dd1e7e3befadacc26bbb511754" + }, + { + "path": "my_wife/images/0.png", + "hash": "c6fd08ac07edee816f25a4713758f428" + }, + { + "path": "my_wife/images/1.png", + "hash": "d4f0dca879deb9a02a732c921c6a8abb" + }, + { + "path": "name_generator/images/title.png", + "hash": "770526d5d986cceb04c0516ec5e31bd1" + }, + { + "path": "need/images/0.png", + "hash": "1b1b6fb05731056fc52d9afd3b4877b9" + }, + { + "path": "nekoha_holdsign/images/0.jpg", + "hash": "2f218b1028744b120d6ee6b19664194b" + }, + { + "path": "nijika_holdsign/images/0.jpg", + "hash": "267732c79de6f2b26a7e98146237d67e" + }, + { + "path": "no_response/images/0.png", + "hash": "2d83def33dfe559dcad883f39bfee4cb" + }, + { + "path": "nokia/images/0.jpg", + "hash": "b15f3d10d3b28f9988deb9940b2084cb" + }, + { + "path": "not_call_me/images/0.png", + "hash": "27500542a606e46aa4c218686fd43077" + }, + { + "path": "oshi_no_ko/images/background.png", + "hash": "758bbb5a92d74f0869e64039be575a76" + }, + { + "path": "oshi_no_ko/images/foreground.png", + "hash": "7e0c9250c5294a062ab4e948dbe6261c" + }, + { + "path": "oshi_no_ko/images/text1.png", + "hash": "3819b528aa7d71a3243d95de6152183e" + }, + { + "path": "oshi_no_ko/images/text2.png", + "hash": "f6f7d087081b960c553acd1645d3d6a3" + }, + { + "path": "osu/images/osu.png", + "hash": "b4b0bc153542220204b590cf48736bdd" + }, + { + "path": "overtime/images/0.png", + "hash": "ec2b3f45754ffef5dd334f1e2d21f652" + }, + { + "path": "paint/images/0.png", + "hash": "c819d7bdbada27cc825db68927157b98" + }, + { + "path": "painter/images/0.png", + "hash": "a9b282341ef7222e44ad66cd9a39819c" + }, + { + "path": "pass_the_buck/images/0.png", + "hash": "5f749373afdf58cde70ea2af2d30a714" + }, + { + "path": "pass_the_buck/images/1.png", + "hash": "c966daa812d79ec51ac14ea845b8b910" + }, + { + "path": "pass_the_buck/images/2.png", + "hash": "a85eeded320e6d73ca8681f1a09cb2ec" + }, + { + "path": "pass_the_buck/images/3.png", + "hash": "18e0ee5e536c311bbc89814e73c09e62" + }, + { + "path": "pass_the_buck/images/4.png", + "hash": "b9917d59c00d7c72cd15b44e6f5432cd" + }, + { + "path": "pass_the_buck/images/5.png", + "hash": "d2f837911a2a085538a2d4800dd4650e" + }, + { + "path": "pass_the_buck/images/6.png", + "hash": "b096dc7de13827c73013216d34358be7" + }, + { + "path": "pass_the_buck/images/7.png", + "hash": "30d2811477862856697b2b277390a022" + }, + { + "path": "pat/images/0.png", + "hash": "089f648471c168ed0eadcb5ad1a8a5b0" + }, + { + "path": "pat/images/1.png", + "hash": "7e2aa352d96eee79d7ead97f9f867c58" + }, + { + "path": "pat/images/2.png", + "hash": "8268e18385c30834fad22a44d26bfffd" + }, + { + "path": "pat/images/3.png", + "hash": "afbfb52f564d8e21275d5150ebd7bc19" + }, + { + "path": "pat/images/4.png", + "hash": "184b8669333285cbca11ff02bd5e7938" + }, + { + "path": "pat/images/5.png", + "hash": "f57fb66c9dc205f3a2d60039ed3e81f3" + }, + { + "path": "pat/images/6.png", + "hash": "0bca6a9528efd4c75e069aade9c5d70f" + }, + { + "path": "pat/images/7.png", + "hash": "981681b3d681ca561254e2cbb1b2908b" + }, + { + "path": "pat/images/8.png", + "hash": "92b0a66f1fa6818635772f03a6379788" + }, + { + "path": "pat/images/9.png", + "hash": "2ee0fda7d77e0b5d6c6d65e5974c70dc" + }, + { + "path": "perfect/images/0.png", + "hash": "52548c41f2774afb87bf7aad314e9938" + }, + { + "path": "petpet/images/0.png", + "hash": "aa8401e6dee45a90dd17efac4797355d" + }, + { + "path": "petpet/images/1.png", + "hash": "97cb8b8449b8000edaa5c4380594a611" + }, + { + "path": "petpet/images/2.png", + "hash": "5e2896e5971f1f18410353c63c35bfc5" + }, + { + "path": "petpet/images/3.png", + "hash": "73812f2ec03138254ffed2199d172c9b" + }, + { + "path": "petpet/images/4.png", + "hash": "4cc824d2d50fadc3e7aa83b8f8c01585" + }, + { + "path": "play/images/0.png", + "hash": "4964c0cecc7d5536ac070356531a0f2a" + }, + { + "path": "play/images/1.png", + "hash": "44242083d7d62c88ce1c4df5fa7e2c18" + }, + { + "path": "play/images/10.png", + "hash": "0622967a345a44eb787cb0729430ed1f" + }, + { + "path": "play/images/11.png", + "hash": "d07943ca2dc901e87dd1de1fb57f1522" + }, + { + "path": "play/images/12.png", + "hash": "611d761e98d873f2e0a295273901cb9d" + }, + { + "path": "play/images/13.png", + "hash": "91807f3f15dbd8385022a3967029520d" + }, + { + "path": "play/images/14.png", + "hash": "873c8b4a9d05d1f6869f80ba0efaf4fa" + }, + { + "path": "play/images/15.png", + "hash": "b553976c6c0539afeb354315428211f1" + }, + { + "path": "play/images/16.png", + "hash": "b9eef848ee25631a033023c18f5fb711" + }, + { + "path": "play/images/17.png", + "hash": "b0319ca25761c7b036e81e555d0d350d" + }, + { + "path": "play/images/18.png", + "hash": "2c2d1c73ef7586f3bbaed7083f503171" + }, + { + "path": "play/images/19.png", + "hash": "2678692ef119d151594d6e6b72a21100" + }, + { + "path": "play/images/2.png", + "hash": "70194e8b049eaf52bf64137d402af5b7" + }, + { + "path": "play/images/20.png", + "hash": "e5d12ed9217f3df2d5e8d3f50f692ade" + }, + { + "path": "play/images/21.png", + "hash": "93e8b3a0197f707a0272013c296c45ad" + }, + { + "path": "play/images/22.png", + "hash": "d1e23a1e2f3f67a68f13d514222e8288" + }, + { + "path": "play/images/23.png", + "hash": "027cfd72da7425411f4fbfb45af76e75" + }, + { + "path": "play/images/24.png", + "hash": "ca73fe22c80e4d12f07854456e67500d" + }, + { + "path": "play/images/25.png", + "hash": "79a133301b5aadd29c00ae351eb70258" + }, + { + "path": "play/images/26.png", + "hash": "be4252f16c83933f0f843dbe65c41df1" + }, + { + "path": "play/images/27.png", + "hash": "ca73fe22c80e4d12f07854456e67500d" + }, + { + "path": "play/images/28.png", + "hash": "668b9f971b27685a1fcc06bc6d27d661" + }, + { + "path": "play/images/29.png", + "hash": "027cfd72da7425411f4fbfb45af76e75" + }, + { + "path": "play/images/3.png", + "hash": "1f5064e766aa07cbd0bcc6014e04a363" + }, + { + "path": "play/images/30.png", + "hash": "79a133301b5aadd29c00ae351eb70258" + }, + { + "path": "play/images/31.png", + "hash": "be4252f16c83933f0f843dbe65c41df1" + }, + { + "path": "play/images/32.png", + "hash": "668b9f971b27685a1fcc06bc6d27d661" + }, + { + "path": "play/images/33.png", + "hash": "027cfd72da7425411f4fbfb45af76e75" + }, + { + "path": "play/images/34.png", + "hash": "79a133301b5aadd29c00ae351eb70258" + }, + { + "path": "play/images/35.png", + "hash": "be4252f16c83933f0f843dbe65c41df1" + }, + { + "path": "play/images/36.png", + "hash": "f15c1afc1766b284662e2972caff927e" + }, + { + "path": "play/images/37.png", + "hash": "ca73fe22c80e4d12f07854456e67500d" + }, + { + "path": "play/images/4.png", + "hash": "931b04efcc1786137c24e532f42ed847" + }, + { + "path": "play/images/5.png", + "hash": "e1e185b4450a41b2f0b3a20e7822a87f" + }, + { + "path": "play/images/6.png", + "hash": "53c0d86f536a10a6ad551845e9cb477a" + }, + { + "path": "play/images/7.png", + "hash": "84855b20768e4a8baf8a904898759fa8" + }, + { + "path": "play/images/8.png", + "hash": "12febab0de29bfc49af8f11941eef7a3" + }, + { + "path": "play/images/9.png", + "hash": "8aaa0621bce8a04b4932d997c47bae03" + }, + { + "path": "play_game/images/0.png", + "hash": "aa9ba6ed9b53feb9b655a2db774fa0cf" + }, + { + "path": "police/images/0.png", + "hash": "31a60a25b44407b6a01a07b3cdd3c2de" + }, + { + "path": "police/images/1.png", + "hash": "57959e7d0b0ee6a36f7d6eb39fd37714" + }, + { + "path": "potato/images/0.png", + "hash": "46cc49cf59d8c234489c4493d4d2c6f2" + }, + { + "path": "pound/images/0.png", + "hash": "bc329e320843da1652fa8cbaebc547f6" + }, + { + "path": "pound/images/1.png", + "hash": "1287970496b73b9b8cc581efca214167" + }, + { + "path": "pound/images/2.png", + "hash": "5196cd4b0b7add30d6ee445ef3302bdc" + }, + { + "path": "pound/images/3.png", + "hash": "6de53f69220f12bd575962f98cfcbf89" + }, + { + "path": "pound/images/4.png", + "hash": "363bc7090b8a57a5eca03ce0903cd5be" + }, + { + "path": "pound/images/5.png", + "hash": "e82712a091010daf9805def5a3a87790" + }, + { + "path": "pound/images/6.png", + "hash": "2f577a122a2b94f6a9b13a2746203906" + }, + { + "path": "pound/images/7.png", + "hash": "bbb206934bdec99cc500ccc2cd2d801d" + }, + { + "path": "printing/images/0.png", + "hash": "ac3cff745bbaf446918b84aee688a750" + }, + { + "path": "printing/images/1.png", + "hash": "72da190ca388c9ae96eb884830b4481f" + }, + { + "path": "printing/images/10.png", + "hash": "129583017b8b02ace1340066433cf986" + }, + { + "path": "printing/images/100.png", + "hash": "b6e14377c005356ef57a2e4b07cf7292" + }, + { + "path": "printing/images/101.png", + "hash": "6b1cd000248a907c1291acb96361441e" + }, + { + "path": "printing/images/102.png", + "hash": "8ec22ccdbd0c9dbc858da3dfda4967ff" + }, + { + "path": "printing/images/103.png", + "hash": "b65ecfdbdae3bbc81148bf1228180c2f" + }, + { + "path": "printing/images/104.png", + "hash": "d1fa8d37a18f9f581e9f6b14622ca1a6" + }, + { + "path": "printing/images/105.png", + "hash": "941d0130b5581674813e8404f9509eff" + }, + { + "path": "printing/images/106.png", + "hash": "63adb8500c990b71f3cb77b50375e52f" + }, + { + "path": "printing/images/107.png", + "hash": "c1fe55f6eea0e8c4971f5038318fcdc1" + }, + { + "path": "printing/images/108.png", + "hash": "3620c7b0de8754f8de8708ceedba6b23" + }, + { + "path": "printing/images/109.png", + "hash": "65e3ab016ec0924e1a2739ecbf7d35d1" + }, + { + "path": "printing/images/11.png", + "hash": "2ca1c8654ca6de78f3c4bdcd7d663234" + }, + { + "path": "printing/images/110.png", + "hash": "7f0840cfc51722d11b1843144227efdf" + }, + { + "path": "printing/images/111.png", + "hash": "77031111c9e53996042ef6e908443c15" + }, + { + "path": "printing/images/112.png", + "hash": "1264df4ba6d1325af96ba15477533af7" + }, + { + "path": "printing/images/113.png", + "hash": "8af7d6b59d30692d4e260140603abd93" + }, + { + "path": "printing/images/114.png", + "hash": "2f27ca03f5bf1f601036e5b4de8d9950" + }, + { + "path": "printing/images/12.png", + "hash": "b3c65ab3c51c559928198e17df9badc8" + }, + { + "path": "printing/images/13.png", + "hash": "740fdc5053855d7f1278cba3593ea729" + }, + { + "path": "printing/images/14.png", + "hash": "f6adfc704b7839c3e391396995073af5" + }, + { + "path": "printing/images/15.png", + "hash": "40829d369a13a6b1bfaa38406e492cbe" + }, + { + "path": "printing/images/16.png", + "hash": "6a3c780a61dbfa06f737c597e2abcaf7" + }, + { + "path": "printing/images/17.png", + "hash": "7876c0a5e91d5fecadc61ef526fdab86" + }, + { + "path": "printing/images/18.png", + "hash": "b10a8f8602cf048399db9020bfdd1e75" + }, + { + "path": "printing/images/19.png", + "hash": "ffc2ae5e811fded5c8aefe2d60635ba8" + }, + { + "path": "printing/images/2.png", + "hash": "65c5675d45f77b42afd06f5d28cecdc5" + }, + { + "path": "printing/images/20.png", + "hash": "b5609cde715a76f2857a2f810db1a8df" + }, + { + "path": "printing/images/21.png", + "hash": "7f9e9f595867665d6e793dae66957b37" + }, + { + "path": "printing/images/22.png", + "hash": "94d1cfd2cc404470f4216b3b9d5c09c9" + }, + { + "path": "printing/images/23.png", + "hash": "555fbe5b32b8fabb4dec5b67de806416" + }, + { + "path": "printing/images/24.png", + "hash": "815f6cfa6c8b8bd67e22d25f592f9efb" + }, + { + "path": "printing/images/25.png", + "hash": "fbdb72c2c34bda528c658a64ea87929b" + }, + { + "path": "printing/images/26.png", + "hash": "2711343b873784e8339b1bdfc4fcfb17" + }, + { + "path": "printing/images/27.png", + "hash": "a0e1b20a162997030cca39394f753d83" + }, + { + "path": "printing/images/28.png", + "hash": "33bfd6b64103e85f8f7593df3083d3c6" + }, + { + "path": "printing/images/29.png", + "hash": "822ddd7bb4f08a790cc2dd12def9fd57" + }, + { + "path": "printing/images/3.png", + "hash": "dd7c0fd91b364ec6ab67424f9b290252" + }, + { + "path": "printing/images/30.png", + "hash": "26135ed3ba6a1ea2689d5d456bae8091" + }, + { + "path": "printing/images/31.png", + "hash": "a4618e6f0ba690e19f8eb46fa40c24d8" + }, + { + "path": "printing/images/32.png", + "hash": "0c6b1311b2b87ec4217965aaf0142a67" + }, + { + "path": "printing/images/33.png", + "hash": "9a5328b1a5a9a1661a6d4383485f38a0" + }, + { + "path": "printing/images/34.png", + "hash": "863b57994604481030eeb9fa07917025" + }, + { + "path": "printing/images/35.png", + "hash": "b89e61f0d769c422927e2870ee2a52f7" + }, + { + "path": "printing/images/36.png", + "hash": "b2a12f4258eb4263725b3e9626c1ce0f" + }, + { + "path": "printing/images/37.png", + "hash": "fe7e7592705cfb38f3554af6ce40e676" + }, + { + "path": "printing/images/38.png", + "hash": "b8e553c9741860aa57bb88f7555bf027" + }, + { + "path": "printing/images/39.png", + "hash": "bf27d396f0e0d04a4c93370089a42e27" + }, + { + "path": "printing/images/4.png", + "hash": "91731f63760d20e0f051d57976897bf7" + }, + { + "path": "printing/images/40.png", + "hash": "5eb837747fa0858effde2e64651a14c9" + }, + { + "path": "printing/images/41.png", + "hash": "605b3313f6d3e38949db0e45e5b1a985" + }, + { + "path": "printing/images/42.png", + "hash": "36807f6d13f4c28d35c22eb8f835e4c8" + }, + { + "path": "printing/images/43.png", + "hash": "687f41f2072c26536b70bf35cbc5009b" + }, + { + "path": "printing/images/44.png", + "hash": "2d64170cbc237d3334766ffcbd1e2c54" + }, + { + "path": "printing/images/45.png", + "hash": "d5234d8605636ee02a77780372c7987f" + }, + { + "path": "printing/images/46.png", + "hash": "53d08603e7fa7e02a3741b4635ec7cd3" + }, + { + "path": "printing/images/47.png", + "hash": "bc71ddd856dfd8b24208ab35b7eedc0c" + }, + { + "path": "printing/images/48.png", + "hash": "44ce15c87fea669d5cc48f41429abf12" + }, + { + "path": "printing/images/49.png", + "hash": "ed2ba817c893cd33f465bf7d2e60ecb2" + }, + { + "path": "printing/images/5.png", + "hash": "8a7f6f66b93e58e9feb6e2207bc7e97f" + }, + { + "path": "printing/images/50.png", + "hash": "a0aab0eb666a90665c9cad5951950143" + }, + { + "path": "printing/images/51.png", + "hash": "8ac53fb8acad20be4ac2a89f7fac5f5a" + }, + { + "path": "printing/images/52.png", + "hash": "4eb11b4cc5bed7f74144884253df1fd2" + }, + { + "path": "printing/images/53.png", + "hash": "c7eaa6de72c86e828dd2f128264e6687" + }, + { + "path": "printing/images/54.png", + "hash": "f7131c14f1a5cee663b8980a21a5bffe" + }, + { + "path": "printing/images/55.png", + "hash": "5d8559a47e8580724039777930942e6d" + }, + { + "path": "printing/images/56.png", + "hash": "be35cd4ddd47f5601ce37afbf14a84de" + }, + { + "path": "printing/images/57.png", + "hash": "c8d986b658968045fea08d94c52b15c4" + }, + { + "path": "printing/images/58.png", + "hash": "2c988b171455d149b0ee55bb37c10c80" + }, + { + "path": "printing/images/59.png", + "hash": "f9a40a01d0dc22f6afed309a42357d56" + }, + { + "path": "printing/images/6.png", + "hash": "a0a79ec55b3c75901bd92d6532fe077d" + }, + { + "path": "printing/images/60.png", + "hash": "61a95457564ceb9c76acd4a778ab6cb0" + }, + { + "path": "printing/images/61.png", + "hash": "6bf483eb9155431f7b8a0592818375c2" + }, + { + "path": "printing/images/62.png", + "hash": "2a7c1edb268391bdf1b3a1ec064103e1" + }, + { + "path": "printing/images/63.png", + "hash": "725821184a8defc249382043632f4848" + }, + { + "path": "printing/images/64.png", + "hash": "4f8839993c49489c7eccd0e7b93c3f50" + }, + { + "path": "printing/images/65.png", + "hash": "7de3f303bd6415f46fd9ca4c99c1c2c6" + }, + { + "path": "printing/images/66.png", + "hash": "be3d33ec8caa9ebe286e52480bab794c" + }, + { + "path": "printing/images/67.png", + "hash": "75e5257d44f16697a230dc959554f6c9" + }, + { + "path": "printing/images/68.png", + "hash": "e52e73c209f028c8b9bdd3baf7d025bf" + }, + { + "path": "printing/images/69.png", + "hash": "fa9f2b49b619559effea9e40f5d7ecd4" + }, + { + "path": "printing/images/7.png", + "hash": "001b10e11da922e3ae037074454be1d0" + }, + { + "path": "printing/images/70.png", + "hash": "a753a853c71e1c2f9d872556a14fabff" + }, + { + "path": "printing/images/71.png", + "hash": "8adf4cf372980a71cebd5a195f955e30" + }, + { + "path": "printing/images/72.png", + "hash": "5c45b2906aaee6a42e01fd1ba6799c32" + }, + { + "path": "printing/images/73.png", + "hash": "674d3c828ea55aef6f5403c5962bde88" + }, + { + "path": "printing/images/74.png", + "hash": "8697148fdb62eaf4fcb3ba5d6d6b0d45" + }, + { + "path": "printing/images/75.png", + "hash": "1f574ff3f9fa2fcaaed49348eceff336" + }, + { + "path": "printing/images/76.png", + "hash": "048b2aae09f83ad559ee9c4f733327b5" + }, + { + "path": "printing/images/77.png", + "hash": "adf05d6f80151eef426075490d542689" + }, + { + "path": "printing/images/78.png", + "hash": "b76784a51340993c26222076ae1c7e19" + }, + { + "path": "printing/images/79.png", + "hash": "a896795729718db13a6dddb410c9ce27" + }, + { + "path": "printing/images/8.png", + "hash": "ab3e1334d642043899b90a78c4fd61f9" + }, + { + "path": "printing/images/80.png", + "hash": "a7dc03466b6bd804c503610906c6f853" + }, + { + "path": "printing/images/81.png", + "hash": "bfbc2cc1c6dd88e45c3842fbd1b90873" + }, + { + "path": "printing/images/82.png", + "hash": "5ca48057a33ee011ce9da553da7f926f" + }, + { + "path": "printing/images/83.png", + "hash": "1c658cc34d088660d29ec36df3c39f0d" + }, + { + "path": "printing/images/84.png", + "hash": "ec9221b4772f36dec3f3511fef90bb89" + }, + { + "path": "printing/images/85.png", + "hash": "5717a74c5271a239b39b525d1f7c6601" + }, + { + "path": "printing/images/86.png", + "hash": "ae6aadc1a4ee31717601b6ae9a33b755" + }, + { + "path": "printing/images/87.png", + "hash": "588ab7fd8d58c05a7874b68f67af4363" + }, + { + "path": "printing/images/88.png", + "hash": "3ffc2d672a8e8feb3db6b184c6b8588e" + }, + { + "path": "printing/images/89.png", + "hash": "c8f92188f211f3d13b760ea63bd26f22" + }, + { + "path": "printing/images/9.png", + "hash": "f99c09832d7c0381625174e9a7e0d392" + }, + { + "path": "printing/images/90.png", + "hash": "6690eec00bce15cda128cf846ea212f0" + }, + { + "path": "printing/images/91.png", + "hash": "070ee6cd8529b919b716f07074e0d167" + }, + { + "path": "printing/images/92.png", + "hash": "14bd48c391ae0baad5d3ef3d242f2fb9" + }, + { + "path": "printing/images/93.png", + "hash": "2ea865e0b43b0eba043b6b1b72f6f5c5" + }, + { + "path": "printing/images/94.png", + "hash": "3475397d42b855ebf9fb6500d194761e" + }, + { + "path": "printing/images/95.png", + "hash": "7fa50ae1f73e19ffa7ab5acb84cf9947" + }, + { + "path": "printing/images/96.png", + "hash": "9111106b9cb4a836b81f250446b3142b" + }, + { + "path": "printing/images/97.png", + "hash": "76ba9e5d54ecdb4bb7913563d9d6b7aa" + }, + { + "path": "printing/images/98.png", + "hash": "61aff8c626615c3fcae399c4e9874030" + }, + { + "path": "printing/images/99.png", + "hash": "0cf63257d2a31dc023d15e718e433300" + }, + { + "path": "prpr/images/0.png", + "hash": "0375726f9e7c54b6993129b790e7adcc" + }, + { + "path": "psyduck/images/0.jpg", + "hash": "6202ec5410070dc4c555da8f96bed178" + }, + { + "path": "psyduck/images/1.jpg", + "hash": "4bbd69e7d760ceb020ea183703ee3c4f" + }, + { + "path": "psyduck/images/10.jpg", + "hash": "2b88c97afddc019a361948db1d294c09" + }, + { + "path": "psyduck/images/11.jpg", + "hash": "443509125b7c6bf2f8d7bd2de1850e8f" + }, + { + "path": "psyduck/images/12.jpg", + "hash": "450c7e24cd5782923d5fc43ed6059274" + }, + { + "path": "psyduck/images/13.jpg", + "hash": "4d3c4db8e6d5603a670c1fda698d2a65" + }, + { + "path": "psyduck/images/14.jpg", + "hash": "fb05987bc8e71c10ea14945f5773998f" + }, + { + "path": "psyduck/images/15.jpg", + "hash": "d41d59768debb11cce3b8ddd459d9f73" + }, + { + "path": "psyduck/images/16.jpg", + "hash": "cb748afc1be5c6a24631e834e65dc788" + }, + { + "path": "psyduck/images/17.jpg", + "hash": "c907167d37716a05f9b98f67c738b5f9" + }, + { + "path": "psyduck/images/2.jpg", + "hash": "bcdada499bee10b55bcf89f3c4203c41" + }, + { + "path": "psyduck/images/3.jpg", + "hash": "2c56d83e9c28ecff169f2bc2934b7e51" + }, + { + "path": "psyduck/images/4.jpg", + "hash": "7d2d686127e5ecbdca634859f044b245" + }, + { + "path": "psyduck/images/5.jpg", + "hash": "44ef8e53403baed0104ec7be98a255f1" + }, + { + "path": "psyduck/images/6.jpg", + "hash": "1e5a3c85df09b32b7ba5e8b3e62aaa67" + }, + { + "path": "psyduck/images/7.jpg", + "hash": "4447c7004f6a34fe1dfa973899b74593" + }, + { + "path": "psyduck/images/8.jpg", + "hash": "567f517d1674346c98bd223b11549c93" + }, + { + "path": "psyduck/images/9.jpg", + "hash": "5d9e85e3e70a8f2488070a19b703452d" + }, + { + "path": "punch/images/0.png", + "hash": "5c50071615149514b42f692aea9d9290" + }, + { + "path": "punch/images/1.png", + "hash": "84e6a624d4546bfcc85c5544ee252c2b" + }, + { + "path": "punch/images/10.png", + "hash": "8c6f3c2838078b5c7241fdd5316f4363" + }, + { + "path": "punch/images/11.png", + "hash": "f25db4a8ee3a9ab72d57f434aa0ca865" + }, + { + "path": "punch/images/12.png", + "hash": "85aee422feae35c368fed239a2b1b0e0" + }, + { + "path": "punch/images/2.png", + "hash": "4c8c9b99f640c78cc634ae4c34191070" + }, + { + "path": "punch/images/3.png", + "hash": "412ac6464392446a77af45c6980e5228" + }, + { + "path": "punch/images/4.png", + "hash": "58c5395c3275558187d0c07c8e59b8b1" + }, + { + "path": "punch/images/5.png", + "hash": "f6a16aaf1d0c0f7239fb12d8f10400a7" + }, + { + "path": "punch/images/6.png", + "hash": "e827982690eaa7703178649a9f7d035b" + }, + { + "path": "punch/images/7.png", + "hash": "0086c46b42a8910c475615ce6c5a98a1" + }, + { + "path": "punch/images/8.png", + "hash": "ee9f371aff7718d1ed2dce523d2f89a0" + }, + { + "path": "punch/images/9.png", + "hash": "f17f4a89f7fed4ff5360b7a566303cd1" + }, + { + "path": "raise_image/images/raise_image.png", + "hash": "53034eae1c09898b82c778c1ea420139" + }, + { + "path": "raise_sign/images/0.jpg", + "hash": "e8151cf81d9c6944e38de9652f5ac409" + }, + { + "path": "read_book/images/0.png", + "hash": "c0bfd676ec62f8ef1a2e2c98244681ba" + }, + { + "path": "repeat/images/0.jpg", + "hash": "b3dabf0c895201454e66011eb88459ff" + }, + { + "path": "rip/images/0.png", + "hash": "ce5cab4dddc51f7c1627e5d135dc6336" + }, + { + "path": "rip/images/1.png", + "hash": "91cfac98b3e2857988c727c03ce76418" + }, + { + "path": "rip_angrily/images/0.png", + "hash": "0c58878dfbe96bdc8a4f8cb3a5d9ae79" + }, + { + "path": "rise_dead/images/0.png", + "hash": "bb4da42954caf82707ae808e07101365" + }, + { + "path": "rise_dead/images/1.png", + "hash": "b10c173d27820716bfa62c906d2fdfe0" + }, + { + "path": "rise_dead/images/10.png", + "hash": "ebc7017ada9ba2d340988a41def17a31" + }, + { + "path": "rise_dead/images/11.png", + "hash": "064625a135258a8525e23cdc44040157" + }, + { + "path": "rise_dead/images/12.png", + "hash": "78c77f0495aa78756ed7e1909009b2f6" + }, + { + "path": "rise_dead/images/13.png", + "hash": "86b71d80dea3789312eba925ea7e3b56" + }, + { + "path": "rise_dead/images/14.png", + "hash": "05993f523cdcceb0ec8bc9e6656c1f49" + }, + { + "path": "rise_dead/images/15.png", + "hash": "ac00807a618031c7f76928526503451f" + }, + { + "path": "rise_dead/images/16.png", + "hash": "8983a7c0ffd8b6ebd12fc2339c2edfeb" + }, + { + "path": "rise_dead/images/17.png", + "hash": "f3f90643dacf3f515bb6524fc87c7535" + }, + { + "path": "rise_dead/images/18.png", + "hash": "5f0b03fe62967453b1b9020ac056440d" + }, + { + "path": "rise_dead/images/19.png", + "hash": "347769d325378397d07e3532969eb868" + }, + { + "path": "rise_dead/images/2.png", + "hash": "0bc0586166d67e6a316228514d4fcb7d" + }, + { + "path": "rise_dead/images/20.png", + "hash": "0b7b35f43230dd8978969173b394d5ee" + }, + { + "path": "rise_dead/images/21.png", + "hash": "0f2e2388b681dbbd1d31fda06684e0b5" + }, + { + "path": "rise_dead/images/22.png", + "hash": "db7f48285b432b21535e8c96cb9d184c" + }, + { + "path": "rise_dead/images/23.png", + "hash": "f5d5737d78644c9f67029da754ca0ebf" + }, + { + "path": "rise_dead/images/24.png", + "hash": "6145e4ab2f5b0f92586b68b7f85ddc5e" + }, + { + "path": "rise_dead/images/25.png", + "hash": "5585c88626e8412b78bf4c51d045c2c1" + }, + { + "path": "rise_dead/images/26.png", + "hash": "be925adadeb85d0a3dce380f522440ef" + }, + { + "path": "rise_dead/images/27.png", + "hash": "339666a1146653e04cb89991310afc60" + }, + { + "path": "rise_dead/images/28.png", + "hash": "b3136958aa2f24b4c74b21a0e79bcd64" + }, + { + "path": "rise_dead/images/29.png", + "hash": "89c73842fa2b0390acbcac79014b849b" + }, + { + "path": "rise_dead/images/3.png", + "hash": "425bb05e042774c00b77a697733f9902" + }, + { + "path": "rise_dead/images/30.png", + "hash": "b36b2c85161ac3d73ece81485a725b25" + }, + { + "path": "rise_dead/images/31.png", + "hash": "dd172233ca3a26d5729ca48f8e212362" + }, + { + "path": "rise_dead/images/32.png", + "hash": "b4a080295ec55dc4e790d7f2eeaa5c88" + }, + { + "path": "rise_dead/images/33.png", + "hash": "b65493e53df17f3a9637b3e73996c111" + }, + { + "path": "rise_dead/images/4.png", + "hash": "8496a9a5c3d2a82ddaabdb477096d213" + }, + { + "path": "rise_dead/images/5.png", + "hash": "325cc724fe6e4a38dc89c08bb95aee06" + }, + { + "path": "rise_dead/images/6.png", + "hash": "23490018d2317c7feae489de998ac222" + }, + { + "path": "rise_dead/images/7.png", + "hash": "08994770e161777e630fd5436eb1e418" + }, + { + "path": "rise_dead/images/8.png", + "hash": "03c5ca3f5c0a26ea9e7c95892ff4c391" + }, + { + "path": "rise_dead/images/9.png", + "hash": "401693c6a4e254609bd2bff9864ea0ce" + }, + { + "path": "roll/images/0.png", + "hash": "4b7bd23b3f9d4c2ab7d36885a6edf21a" + }, + { + "path": "roll/images/1.png", + "hash": "19aa54e138172a2ddf7f031da195ebf1" + }, + { + "path": "roll/images/2.png", + "hash": "fa009d3c3dc2645600b3b8ba2200c240" + }, + { + "path": "roll/images/3.png", + "hash": "72ddb67a4589290b6cc7c2591c163401" + }, + { + "path": "roll/images/4.png", + "hash": "3d0292a3e7bfc90e32aa320f85d906e0" + }, + { + "path": "roll/images/5.png", + "hash": "5767ba5025f85dc60b65c1e448f4c243" + }, + { + "path": "roll/images/6.png", + "hash": "b1babecdb8a977ba477c033b9d929b73" + }, + { + "path": "roll/images/7.png", + "hash": "c0475533dc1e6282dfa50e7ee5f6d150" + }, + { + "path": "rub/images/0.png", + "hash": "a9b12cb6b809ae7bce00f90776a0366b" + }, + { + "path": "rub/images/1.png", + "hash": "dcaa808bd4d89084ab341ee5589dab75" + }, + { + "path": "rub/images/2.png", + "hash": "8e8eb0d22991b02c96b4098210a861ee" + }, + { + "path": "rub/images/3.png", + "hash": "4039152492625de12a188e0d80a2fc9c" + }, + { + "path": "rub/images/4.png", + "hash": "b80153e63c7918ae5b59aa2287803a94" + }, + { + "path": "rub/images/5.png", + "hash": "910edf679e3b3bf292a7f3a86fe878c0" + }, + { + "path": "run/images/0.png", + "hash": "8504969b4b3d302c15e37ab7033591a7" + }, + { + "path": "safe_sense/images/0.png", + "hash": "83653a8efa58498ae0ff8ea806e523ad" + }, + { + "path": "scratch_head/images/0.png", + "hash": "a72596f3beff01eaa56d20458175cf7b" + }, + { + "path": "scratch_head/images/1.png", + "hash": "7e2ffe8187564dd18cdbd7826c4cc264" + }, + { + "path": "scratch_head/images/2.png", + "hash": "53293a097661db4412b2cd4fd4d50b49" + }, + { + "path": "scratch_head/images/3.png", + "hash": "473644e2d0a98e9e4c6149485c7f57c1" + }, + { + "path": "scratch_head/images/4.png", + "hash": "4dc269cf571fe1ed75082ccb90acb5d5" + }, + { + "path": "scratch_head/images/5.png", + "hash": "477528b65f0672b6c98a285455c727c3" + }, + { + "path": "scratchcard/images/0.png", + "hash": "0a9f099c2ff528543c6c8a7cfb2566aa" + }, + { + "path": "scratchcard/images/1.png", + "hash": "8b4dd8c62fe06b2accb2ca8d79102e3a" + }, + { + "path": "scroll/images/corner1.png", + "hash": "53a18e9da0e4723e876976b06aebe1a2" + }, + { + "path": "scroll/images/corner2.png", + "hash": "5789f0bfbbfc745f5d5e37b77d911940" + }, + { + "path": "scroll/images/corner3.png", + "hash": "e6a10dded6652680d878434ca1a19830" + }, + { + "path": "scroll/images/corner4.png", + "hash": "40a04aa8c2ffb9243119c865ece04cc4" + }, + { + "path": "shutup/images/0.jpg", + "hash": "79462d2472da56f64f056b7c16b43b04" + }, + { + "path": "sit_still/images/0.png", + "hash": "7c80de7e9f83c87b8f099fda676cafde" + }, + { + "path": "slap/images/0.jpg", + "hash": "bca036d3b7a5de25c57e92525891c3e7" + }, + { + "path": "slogan/images/0.jpg", + "hash": "93e06a80b22c3b796f3bb90c590f8cd6" + }, + { + "path": "smash/images/0.png", + "hash": "f14a1ff64015a1cd5cf752e80e5cf367" + }, + { + "path": "step_on/images/0.png", + "hash": "560c088afdbeff7f0321455b0640b938" + }, + { + "path": "step_on/images/1.png", + "hash": "9ce4e4cee75d6d30385d7bd1b50b3882" + }, + { + "path": "step_on/images/2.png", + "hash": "2c3531495de3bfb2c0a631db0e2a6bf1" + }, + { + "path": "step_on/images/3.png", + "hash": "a6a77178a80d9cffdb4292901dc6cb14" + }, + { + "path": "step_on/images/4.png", + "hash": "f052852fa07b20fa4d9d48a7d8249d87" + }, + { + "path": "suck/images/0.png", + "hash": "848d6fe194940dc2fef9db9a354fb126" + }, + { + "path": "suck/images/1.png", + "hash": "74739c77b17df646533133ab49174379" + }, + { + "path": "suck/images/10.png", + "hash": "76688f982ae2e1c7e878ba185fcddd7d" + }, + { + "path": "suck/images/11.png", + "hash": "d1723c022b984588853956ad454c0eba" + }, + { + "path": "suck/images/2.png", + "hash": "a13a413108cc0e319449d549df0533f2" + }, + { + "path": "suck/images/3.png", + "hash": "5663af4b29aed543cbab978154d46a6c" + }, + { + "path": "suck/images/4.png", + "hash": "e51457c880f8bac176d7adcce7c2374f" + }, + { + "path": "suck/images/5.png", + "hash": "1d7a90731644d866ca75975da0b9b074" + }, + { + "path": "suck/images/6.png", + "hash": "95f8124f3135e813c1273b6261a49855" + }, + { + "path": "suck/images/7.png", + "hash": "138eb577148a6e2ffa7e9b21de644395" + }, + { + "path": "suck/images/8.png", + "hash": "e58d096d494249b94565a122b6bfc1e6" + }, + { + "path": "suck/images/9.png", + "hash": "35d5c2a770ca62666d054f7de229c01b" + }, + { + "path": "support/images/0.png", + "hash": "f82b0d023e4aab41df6159db726f4ae3" + }, + { + "path": "tankuku_raisesign/images/0.png", + "hash": "e4eac3dbf019343f3dd02597e982707d" + }, + { + "path": "tankuku_raisesign/images/1.png", + "hash": "896acaf1cc2cab04833244b89cb8dca7" + }, + { + "path": "tankuku_raisesign/images/10.png", + "hash": "e775c695c9875a67106d5f7f421def85" + }, + { + "path": "tankuku_raisesign/images/11.png", + "hash": "067068e71e648e0e79ef280e1bc49fc2" + }, + { + "path": "tankuku_raisesign/images/12.png", + "hash": "0dcb44d94c9422d1c2f5b37b7d0409c7" + }, + { + "path": "tankuku_raisesign/images/13.png", + "hash": "41fd25672049e69721d9f626247d4ac8" + }, + { + "path": "tankuku_raisesign/images/14.png", + "hash": "f798a270ffe2a4992e8ac23c4e749dc4" + }, + { + "path": "tankuku_raisesign/images/2.png", + "hash": "d60603b9dce7924f237c7610c636b6d0" + }, + { + "path": "tankuku_raisesign/images/3.png", + "hash": "c9eaf5c44495cd5b2e3a53e92dca9037" + }, + { + "path": "tankuku_raisesign/images/4.png", + "hash": "eadb1e2419fe3b138b83ac72d26c175f" + }, + { + "path": "tankuku_raisesign/images/5.png", + "hash": "31511f3f3bd656f0481cc43579806f69" + }, + { + "path": "tankuku_raisesign/images/6.png", + "hash": "140f1de7f05e51ca0024b7147978e5a6" + }, + { + "path": "tankuku_raisesign/images/7.png", + "hash": "7c595f3e0855121586e0e1d132a570f6" + }, + { + "path": "tankuku_raisesign/images/8.png", + "hash": "cbfc69c8c36e6b40b1f6d2b5de48cdd7" + }, + { + "path": "tankuku_raisesign/images/9.png", + "hash": "7b43a1b2f5c738b821224919141318dc" + }, + { + "path": "taunt/images/0.png", + "hash": "5c7c1026ecca7ec754ecdf622bdbcec9" + }, + { + "path": "teach/images/0.png", + "hash": "d035c0cb0ffcc2487cc563d9222fe37e" + }, + { + "path": "tease/images/0.png", + "hash": "8251e76997777ce41acf17ff15af23fd" + }, + { + "path": "tease/images/1.png", + "hash": "9d647800cdeedc8f3c5b1b776a7cccb0" + }, + { + "path": "tease/images/10.png", + "hash": "057cfbfad82bb0b0908007ebfed287a5" + }, + { + "path": "tease/images/11.png", + "hash": "da37ae44aed77e31d728b67661617ad5" + }, + { + "path": "tease/images/12.png", + "hash": "7b5aed610a21aa724d51b42b72a65c38" + }, + { + "path": "tease/images/13.png", + "hash": "78cb78fd9a69b688f32035c04b823799" + }, + { + "path": "tease/images/14.png", + "hash": "f35d24e56efebef538d35710f00e6705" + }, + { + "path": "tease/images/15.png", + "hash": "208655c7486c4a84e431001034d34f36" + }, + { + "path": "tease/images/16.png", + "hash": "2885f985790cb8faa62245a6eae275d5" + }, + { + "path": "tease/images/17.png", + "hash": "0ea6cec2b18fdf9c1114e478327735ce" + }, + { + "path": "tease/images/18.png", + "hash": "8d5d40c3632d608229f4654598504c2c" + }, + { + "path": "tease/images/19.png", + "hash": "2af25b9cd739f125ed554da6d42a57e4" + }, + { + "path": "tease/images/2.png", + "hash": "7082394ff52b33cda2cb8331d13abdb0" + }, + { + "path": "tease/images/20.png", + "hash": "73555cf10c26253029e27d6357ff7a68" + }, + { + "path": "tease/images/21.png", + "hash": "1ed333486a248a18a84348c7f5629639" + }, + { + "path": "tease/images/22.png", + "hash": "180f319575c668818299fbb7354665e6" + }, + { + "path": "tease/images/23.png", + "hash": "41a81c881a2a9b2232f36d7fe7f640c3" + }, + { + "path": "tease/images/3.png", + "hash": "9df8b76fba5c7efad4d2d41182ed23ec" + }, + { + "path": "tease/images/4.png", + "hash": "ecca01e1ea93aacf2b993eeac4c8a9a3" + }, + { + "path": "tease/images/5.png", + "hash": "f8b89e4d9227c84aab6327595e262341" + }, + { + "path": "tease/images/6.png", + "hash": "3581909eee488e81c478575b83366856" + }, + { + "path": "tease/images/7.png", + "hash": "efade3fa3148c398d3f7dbf7cb0b7ce2" + }, + { + "path": "tease/images/8.png", + "hash": "b731fabc810ff894d8204bb3d5070068" + }, + { + "path": "tease/images/9.png", + "hash": "841db44a3ea19ca016ba21a0f4d71564" + }, + { + "path": "think_what/images/0.png", + "hash": "550c3e7829033511873a12d0a8e25447" + }, + { + "path": "throw/images/0.png", + "hash": "b3e1c12b34acc44e1dd63ce05330025e" + }, + { + "path": "throw_gif/images/0.png", + "hash": "1f0eab0cb4b06609712c14e788209b58" + }, + { + "path": "throw_gif/images/1.png", + "hash": "8d7168433eaa08d827d4165a1f47f76a" + }, + { + "path": "throw_gif/images/2.png", + "hash": "aae0c868f80bdeb5a3345326757c129f" + }, + { + "path": "throw_gif/images/3.png", + "hash": "770abef39d642b721896fc92237beb7a" + }, + { + "path": "throw_gif/images/4.png", + "hash": "29ed013453ef3495b16f231a3c423dd4" + }, + { + "path": "throw_gif/images/5.png", + "hash": "144ba24b867fb739dd2c497e325fb508" + }, + { + "path": "throw_gif/images/6.png", + "hash": "ce41dd6517baf2a389093a2b9a9d1b4b" + }, + { + "path": "throw_gif/images/7.png", + "hash": "08d7b581c394979ab9d63e004b23d67a" + }, + { + "path": "thump/images/0.png", + "hash": "a3db460ecbc8ed4d14bb900d535bf6a5" + }, + { + "path": "thump/images/1.png", + "hash": "4fb3e391510555e146d506705ea0f242" + }, + { + "path": "thump/images/2.png", + "hash": "f004a475c1cd77b1c3852b3df5027f0f" + }, + { + "path": "thump/images/3.png", + "hash": "4e9ef84cdbd3833171f74727ae007aa3" + }, + { + "path": "thump_wildly/images/0.png", + "hash": "1f6e57bccf7f58f6b140abeb1c3b941c" + }, + { + "path": "thump_wildly/images/1.png", + "hash": "22aec171174bb5957d74390e87b6ef83" + }, + { + "path": "thump_wildly/images/10.png", + "hash": "6fcc6eb6320db0a166bee663d999eae5" + }, + { + "path": "thump_wildly/images/11.png", + "hash": "4c3db37b7014adaff0c836f39d4c964f" + }, + { + "path": "thump_wildly/images/12.png", + "hash": "827281875b7952487f338771a4209983" + }, + { + "path": "thump_wildly/images/13.png", + "hash": "a325da842b19d4fe31ab95e0656315f8" + }, + { + "path": "thump_wildly/images/14.png", + "hash": "4d6016470d4d7e461529663cec234cf0" + }, + { + "path": "thump_wildly/images/15.png", + "hash": "4b39fd5edfa9d053c00d2990cd20ff41" + }, + { + "path": "thump_wildly/images/16.png", + "hash": "c48b6254004e13e205a06b70f5ea300d" + }, + { + "path": "thump_wildly/images/17.png", + "hash": "920f35e60237244358c8f9a47d04b7c6" + }, + { + "path": "thump_wildly/images/18.png", + "hash": "09677cbd43ec5d7dc791855ba0e2842e" + }, + { + "path": "thump_wildly/images/19.png", + "hash": "66f6a4dc418a6955ba7b9a5df64dd2d1" + }, + { + "path": "thump_wildly/images/2.png", + "hash": "7efa3aea81c37808f950335be0922424" + }, + { + "path": "thump_wildly/images/20.png", + "hash": "2c2b482fb1154a3cf885ba38223aa2da" + }, + { + "path": "thump_wildly/images/21.png", + "hash": "673ec97403e5d92fc44788942b152642" + }, + { + "path": "thump_wildly/images/22.png", + "hash": "641d5f6862d18b43c2c8c4670f40eb74" + }, + { + "path": "thump_wildly/images/23.png", + "hash": "6af4359dea571c1f14f9f7fba43838d1" + }, + { + "path": "thump_wildly/images/24.png", + "hash": "c055a22db19722fb2f4ea5c4026d8fdd" + }, + { + "path": "thump_wildly/images/25.png", + "hash": "5ef2c5f1a390eb74147291d51ecbc5af" + }, + { + "path": "thump_wildly/images/26.png", + "hash": "b7005e93b8971a5d0e410b3a2fad6722" + }, + { + "path": "thump_wildly/images/27.png", + "hash": "c3a792b3c53f0c20e5d7e11b20ed4545" + }, + { + "path": "thump_wildly/images/28.png", + "hash": "a53192f9a057b5fac112a722a6df83b6" + }, + { + "path": "thump_wildly/images/29.png", + "hash": "12b2d0924e1d697f43a95024e2c5cc47" + }, + { + "path": "thump_wildly/images/3.png", + "hash": "eccebf3e49a818599407970f1835f951" + }, + { + "path": "thump_wildly/images/30.png", + "hash": "f2df7fed5364434fc87f2c200ee8230d" + }, + { + "path": "thump_wildly/images/4.png", + "hash": "0831aee0b3a2def7bef42ac7eae538f4" + }, + { + "path": "thump_wildly/images/5.png", + "hash": "af37e14eba37d272867bc16a650d6cc7" + }, + { + "path": "thump_wildly/images/6.png", + "hash": "af0eebbf35bdf5a9b0726c86322af301" + }, + { + "path": "thump_wildly/images/7.png", + "hash": "cf85f256a80234fbc2cb8dd5fb10a536" + }, + { + "path": "thump_wildly/images/8.png", + "hash": "01a470586d3ca7b4f5ce1701e4a2ea31" + }, + { + "path": "thump_wildly/images/9.png", + "hash": "d191535c58006ac23687e7910d84970e" + }, + { + "path": "tightly/images/0.png", + "hash": "a75986b79eb610e85c68d27a68e121ce" + }, + { + "path": "tightly/images/1.png", + "hash": "ffc5cd12eff13d205b5873810939d071" + }, + { + "path": "tightly/images/10.png", + "hash": "c3be7c205aca24c400e83a98a007a4b1" + }, + { + "path": "tightly/images/11.png", + "hash": "cd36590de435081542abc4f8b5e03ed7" + }, + { + "path": "tightly/images/12.png", + "hash": "dd3dc95f856c43fa3dcad347d7942506" + }, + { + "path": "tightly/images/13.png", + "hash": "5a57c97e80873ac64a2db11e71d0331c" + }, + { + "path": "tightly/images/14.png", + "hash": "d5f7e6eafabe6c1a17b1f985b154ff08" + }, + { + "path": "tightly/images/15.png", + "hash": "85075732dbd183a02b93b7b4eb8c2592" + }, + { + "path": "tightly/images/16.png", + "hash": "8ad15d7c72142b9b3f81146ced8196c8" + }, + { + "path": "tightly/images/17.png", + "hash": "43ec85f7f7fc18485acdb329a7b9c173" + }, + { + "path": "tightly/images/18.png", + "hash": "ba7ac479234cfada00bebe34d96ae8b4" + }, + { + "path": "tightly/images/19.png", + "hash": "7e562d467024416aea69a05e3214cc0e" + }, + { + "path": "tightly/images/2.png", + "hash": "91ab512732c81e4f1ee8a1ed85834523" + }, + { + "path": "tightly/images/3.png", + "hash": "991e06589dd243c45560f4259627c673" + }, + { + "path": "tightly/images/4.png", + "hash": "170d0a57327cb7dc19a44d6dd801a292" + }, + { + "path": "tightly/images/5.png", + "hash": "021d95cebbf539d14d258253d10e9370" + }, + { + "path": "tightly/images/6.png", + "hash": "7f7cb2d5f554dbc3df70128e53653c1f" + }, + { + "path": "tightly/images/7.png", + "hash": "68683eaeb8e1a2d4aa81f6b627738d09" + }, + { + "path": "tightly/images/8.png", + "hash": "dc63be99d968fe0007527d8fc4dcfcf1" + }, + { + "path": "tightly/images/9.png", + "hash": "23e00f03f6a6a883f2550b91646e9fd7" + }, + { + "path": "together/images/0.png", + "hash": "ed562d9d1bf0d345ce83b1b7a83524ac" + }, + { + "path": "twist/images/0.png", + "hash": "f0b59e60d234e2b145e453f1f3ccac5b" + }, + { + "path": "twist/images/1.png", + "hash": "380855eda516a3be0401a5dee662378e" + }, + { + "path": "twist/images/2.png", + "hash": "07b9cf8a73ed851f4965522143c74a8b" + }, + { + "path": "twist/images/3.png", + "hash": "f15b4a115675e62d213d25f6bc7237e8" + }, + { + "path": "twist/images/4.png", + "hash": "946914bdada2b87e06172331e288db83" + }, + { + "path": "wakeup/images/0.jpg", + "hash": "2737c1fd3d312729ee917f5bee3f9016" + }, + { + "path": "wallpaper/images/0.png", + "hash": "5d91e3669643cd2d45fe64c6c9501696" + }, + { + "path": "wallpaper/images/1.png", + "hash": "12eab235d0dc3272884509f6e1ca2bf2" + }, + { + "path": "wallpaper/images/10.png", + "hash": "bd5589b1c64998359a7e1d7bae363aba" + }, + { + "path": "wallpaper/images/11.png", + "hash": "474c2eb9906581e94ce89fcc1636d961" + }, + { + "path": "wallpaper/images/12.png", + "hash": "eb823e78e4088b6abc8273f4466f31c4" + }, + { + "path": "wallpaper/images/13.png", + "hash": "fc6c90ca74d9a8de92bcda226749809b" + }, + { + "path": "wallpaper/images/14.png", + "hash": "22e92ab92d43a4b83d572e2f3d58d6be" + }, + { + "path": "wallpaper/images/15.png", + "hash": "d1a5f088684f0b400a792efbb34c00cb" + }, + { + "path": "wallpaper/images/16.png", + "hash": "7db94297b51c8766705325cc7aa51a09" + }, + { + "path": "wallpaper/images/17.png", + "hash": "edabb58ee911b3d7970afab119ec0b38" + }, + { + "path": "wallpaper/images/18.png", + "hash": "3d8ffcd34928a1bbd75134f1ccee7f04" + }, + { + "path": "wallpaper/images/19.png", + "hash": "41879caa381e4c7107c6f1810a2c308a" + }, + { + "path": "wallpaper/images/2.png", + "hash": "c13be05187841b4b03263e545fe24b76" + }, + { + "path": "wallpaper/images/3.png", + "hash": "7b711459f62b49211078c1473f938062" + }, + { + "path": "wallpaper/images/4.png", + "hash": "d16b19293ef50f06c5ccd192697eec71" + }, + { + "path": "wallpaper/images/5.png", + "hash": "18eb7e80f997eadb512c2151162788dc" + }, + { + "path": "wallpaper/images/6.png", + "hash": "4a3a35a985229434c62e82278a788630" + }, + { + "path": "wallpaper/images/7.png", + "hash": "94dc43c774b32afaa43b42e2fac96ad4" + }, + { + "path": "wallpaper/images/8.png", + "hash": "f123ff9994c6b73a00503a0f71bb61c4" + }, + { + "path": "wallpaper/images/9.png", + "hash": "c622e4dcaca983ed072022692373abc8" + }, + { + "path": "walnut_pad/images/0.png", + "hash": "1868d25967cc950d811b0218d313b42e" + }, + { + "path": "walnut_zoom/images/0.png", + "hash": "54f145f1d66d15726196e6ae690158dc" + }, + { + "path": "walnut_zoom/images/1.png", + "hash": "f61d350a4d95a56083924cd88dbbcd14" + }, + { + "path": "walnut_zoom/images/10.png", + "hash": "0114a2c7010d751674794e9d61febcb5" + }, + { + "path": "walnut_zoom/images/11.png", + "hash": "7ece5bcc469a441e7d3b3f5166ab450f" + }, + { + "path": "walnut_zoom/images/12.png", + "hash": "3ce53d39a6fdb411f88cfbc71a02d553" + }, + { + "path": "walnut_zoom/images/13.png", + "hash": "80f449d1aa5b37f19be05952e9ea4690" + }, + { + "path": "walnut_zoom/images/14.png", + "hash": "3484665c49f4f8e4843be3e016703c01" + }, + { + "path": "walnut_zoom/images/15.png", + "hash": "52017060b380dd4dcab6c330defea997" + }, + { + "path": "walnut_zoom/images/16.png", + "hash": "bd0575ed22a9c9e84da546e15f3eaa36" + }, + { + "path": "walnut_zoom/images/17.png", + "hash": "3354b0a41977265d7768344ed4a01798" + }, + { + "path": "walnut_zoom/images/18.png", + "hash": "097143f19e124348e8823ab11feb2356" + }, + { + "path": "walnut_zoom/images/19.png", + "hash": "98b50bc4b8b8de10fb552821faff3947" + }, + { + "path": "walnut_zoom/images/2.png", + "hash": "90849c6c92dd907cebd0caab396aa36d" + }, + { + "path": "walnut_zoom/images/20.png", + "hash": "4c2d68c5b9299513c8da7a99b320042a" + }, + { + "path": "walnut_zoom/images/21.png", + "hash": "02758244cb76dbbdb087931c0b3aaae2" + }, + { + "path": "walnut_zoom/images/22.png", + "hash": "b8681ce06bda9297986edfa87ba8b9e5" + }, + { + "path": "walnut_zoom/images/23.png", + "hash": "cadf3d90bfc3d9c9989013223604cbb5" + }, + { + "path": "walnut_zoom/images/3.png", + "hash": "7075b474c816617ee6ae77e7a31ded3a" + }, + { + "path": "walnut_zoom/images/4.png", + "hash": "f9c430517346247063fcf9a751c9b497" + }, + { + "path": "walnut_zoom/images/5.png", + "hash": "b41589e48ffe5d2f7ebccb0ccbeb15ae" + }, + { + "path": "walnut_zoom/images/6.png", + "hash": "c247af529838e071ee28bbf89c6884f0" + }, + { + "path": "walnut_zoom/images/7.png", + "hash": "304e586f1c14a677283bcba85d2846ef" + }, + { + "path": "walnut_zoom/images/8.png", + "hash": "d61f4ba636a50858c013b3d271805867" + }, + { + "path": "walnut_zoom/images/9.png", + "hash": "2b3a75dc7874fc47612a0ebe82ead577" + }, + { + "path": "what_I_want_to_do/images/0.png", + "hash": "6f6f0b5452555aa8c162745db59587f0" + }, + { + "path": "what_he_wants/images/0.png", + "hash": "3e9ca1ac6dacf6cb3dceb30c4d2ca74d" + }, + { + "path": "why_at_me/images/0.png", + "hash": "46a89eb5567c049e12722511653722f7" + }, + { + "path": "why_have_hands/images/0.png", + "hash": "96487155465f64e3b79ef5c7d2a1b882" + }, + { + "path": "wish_fail/images/0.png", + "hash": "ecf3e01a1091ef0d035dd2114e7c9a29" + }, + { + "path": "wooden_fish/images/0.png", + "hash": "6d9a3a2283fa7804c7d0053d7dfd2564" + }, + { + "path": "wooden_fish/images/1.png", + "hash": "e0209aed76388832884846769156dceb" + }, + { + "path": "wooden_fish/images/10.png", + "hash": "cec873d2011eb7939946b7b4b3bff9a3" + }, + { + "path": "wooden_fish/images/11.png", + "hash": "712b2bfd606eb5efbddf673862436008" + }, + { + "path": "wooden_fish/images/12.png", + "hash": "5839329d4d13278ec1dad21e601bf006" + }, + { + "path": "wooden_fish/images/13.png", + "hash": "7aace48b94ec939fccbe0123482193c7" + }, + { + "path": "wooden_fish/images/14.png", + "hash": "ecfca6644fbc21c8a0d1b65ddf10c5f7" + }, + { + "path": "wooden_fish/images/15.png", + "hash": "28ac570cd87020781c754eae7062c91e" + }, + { + "path": "wooden_fish/images/16.png", + "hash": "2361ffd34ff8bfcc4a70da139c92af4d" + }, + { + "path": "wooden_fish/images/17.png", + "hash": "884dee4b95f5e58348f0dbeb38e6120a" + }, + { + "path": "wooden_fish/images/18.png", + "hash": "c5fc69e1b72e4576fae6928b09d77942" + }, + { + "path": "wooden_fish/images/19.png", + "hash": "01bf0df0405a5f3bec8a88f1955c487f" + }, + { + "path": "wooden_fish/images/2.png", + "hash": "2d3f89df34bbbf50314030e19582ac82" + }, + { + "path": "wooden_fish/images/20.png", + "hash": "28c1e84abd5af68d67933cba7cb39293" + }, + { + "path": "wooden_fish/images/21.png", + "hash": "7433c06114ff44dcfdfa586d05b9e12a" + }, + { + "path": "wooden_fish/images/22.png", + "hash": "401386db0da8d0f451f037a83055fb97" + }, + { + "path": "wooden_fish/images/23.png", + "hash": "d88ca4f0cbe0baba69cc5124a26ac271" + }, + { + "path": "wooden_fish/images/24.png", + "hash": "6a0b876ccd4fc868da1b1482130724b2" + }, + { + "path": "wooden_fish/images/25.png", + "hash": "facabd578b33beecebaaad619a931cfc" + }, + { + "path": "wooden_fish/images/26.png", + "hash": "c9b3fbd6530cec0851ab8ad4f4f3e2dd" + }, + { + "path": "wooden_fish/images/27.png", + "hash": "e8e7f3d0cd8fcbc949162cfb513db643" + }, + { + "path": "wooden_fish/images/28.png", + "hash": "28345563148569bfc1c87bdaf15512cd" + }, + { + "path": "wooden_fish/images/29.png", + "hash": "6e509f0cf10d8d0eed6694ad4d67d417" + }, + { + "path": "wooden_fish/images/3.png", + "hash": "408ee9928d337a3e1093b360ce1f9c42" + }, + { + "path": "wooden_fish/images/30.png", + "hash": "e17e47ec541b137347ee5092f50b7af4" + }, + { + "path": "wooden_fish/images/31.png", + "hash": "c46afd5cfe31fbb0dff54a21b5275652" + }, + { + "path": "wooden_fish/images/32.png", + "hash": "c733975ec503cbab59083075fdac7df1" + }, + { + "path": "wooden_fish/images/33.png", + "hash": "6fd18280a7b3daeba31211ec357432ce" + }, + { + "path": "wooden_fish/images/34.png", + "hash": "3469e52d0176a91ab0bde381ac609b3e" + }, + { + "path": "wooden_fish/images/35.png", + "hash": "55a55c562ec107000c6a37cd0b6dc93a" + }, + { + "path": "wooden_fish/images/36.png", + "hash": "cfbd99fac76a8f4730aa2abd0d1f9fc7" + }, + { + "path": "wooden_fish/images/37.png", + "hash": "e0c36d441526f5f0ae1d4f7ebf33f783" + }, + { + "path": "wooden_fish/images/38.png", + "hash": "9b344ef9f6f5d0cef32f7fae1aeb867d" + }, + { + "path": "wooden_fish/images/39.png", + "hash": "0eaf38b4b65ba9d8acb18ddedb482c26" + }, + { + "path": "wooden_fish/images/4.png", + "hash": "7a2c835125447d2c2c91022e9da5bba0" + }, + { + "path": "wooden_fish/images/40.png", + "hash": "605ffccc8dd614b3776bcb1b68f8392d" + }, + { + "path": "wooden_fish/images/41.png", + "hash": "6c3942c1f933048da5842556d45b41fd" + }, + { + "path": "wooden_fish/images/42.png", + "hash": "de6cdb5e5dc569b93bd110e328ccee48" + }, + { + "path": "wooden_fish/images/43.png", + "hash": "a2590f5e678b4b49951d457bff4d7416" + }, + { + "path": "wooden_fish/images/44.png", + "hash": "e25bbc2b3d6b004107a78a07472a26bc" + }, + { + "path": "wooden_fish/images/45.png", + "hash": "f0b6b348a1e95793535a963cdec0c526" + }, + { + "path": "wooden_fish/images/46.png", + "hash": "feaf6200470ca2670250a5ecf1d82638" + }, + { + "path": "wooden_fish/images/47.png", + "hash": "f20eea970a4f715bed311fd3292b6ffe" + }, + { + "path": "wooden_fish/images/48.png", + "hash": "c131eac6cb07efb11fc0db34344375cd" + }, + { + "path": "wooden_fish/images/49.png", + "hash": "4d02f896bd3add73f0607efbd399405a" + }, + { + "path": "wooden_fish/images/5.png", + "hash": "9808b4dfc0739cc92801c07218c437a1" + }, + { + "path": "wooden_fish/images/50.png", + "hash": "79390633b41372c3697d0f5cb875c920" + }, + { + "path": "wooden_fish/images/51.png", + "hash": "094b6e5646bfe1ba46a5a37075316aa4" + }, + { + "path": "wooden_fish/images/52.png", + "hash": "110f85d76529735911de6f2aed883c8d" + }, + { + "path": "wooden_fish/images/53.png", + "hash": "a06dd450c09157782cb1dca8cad9ea88" + }, + { + "path": "wooden_fish/images/54.png", + "hash": "f8417b9eeb8dff82385cd20a5acdb5be" + }, + { + "path": "wooden_fish/images/55.png", + "hash": "db3b4b5518a00cc83db2d6cb1190b4b3" + }, + { + "path": "wooden_fish/images/56.png", + "hash": "0d3848e808467b632a273a51e4b94b94" + }, + { + "path": "wooden_fish/images/57.png", + "hash": "67c3ec213de1f043b3123262c2dcba24" + }, + { + "path": "wooden_fish/images/58.png", + "hash": "9c58d568c71c2724985853f7843ae11a" + }, + { + "path": "wooden_fish/images/59.png", + "hash": "d6e191f08943eeda4afd3d038447810a" + }, + { + "path": "wooden_fish/images/6.png", + "hash": "25d5ae7ef4a3cd3f4443f632fdd968e7" + }, + { + "path": "wooden_fish/images/60.png", + "hash": "e834e553cc5f24fbbe99c8dbd92d440e" + }, + { + "path": "wooden_fish/images/61.png", + "hash": "45491e4be378af118a0d55628837ae64" + }, + { + "path": "wooden_fish/images/62.png", + "hash": "d71f36fca51f8713105c1d2a855b89bb" + }, + { + "path": "wooden_fish/images/63.png", + "hash": "aeef95bbadaa5fb5f0e5845a96d82dbf" + }, + { + "path": "wooden_fish/images/64.png", + "hash": "8c2465ab4495a49e3be4fdc8a0e1c773" + }, + { + "path": "wooden_fish/images/65.png", + "hash": "c09e998c676b8d1982a1db064823bf6e" + }, + { + "path": "wooden_fish/images/7.png", + "hash": "01a98a53bda386901f09ed2e146c0c3c" + }, + { + "path": "wooden_fish/images/8.png", + "hash": "e16848c937770c31d310aa71661558aa" + }, + { + "path": "wooden_fish/images/9.png", + "hash": "64d52829d84b8f4a1aa98c0248be1380" + }, + { + "path": "worship/images/0.png", + "hash": "bd2f7121444b63365141cb292da532d5" + }, + { + "path": "worship/images/1.png", + "hash": "6145ed9f4c81b253d53fdedab1a63886" + }, + { + "path": "worship/images/2.png", + "hash": "c5e679727b7a5d5ca5a5f32bfba08f87" + }, + { + "path": "worship/images/3.png", + "hash": "56174982455efd6b7e7d41711cb72d0c" + }, + { + "path": "worship/images/4.png", + "hash": "661d4a2397fdf2f07d9ef4a48c825ed1" + }, + { + "path": "worship/images/5.png", + "hash": "6eeff86edfbe977e92ee1027ec68b011" + }, + { + "path": "worship/images/6.png", + "hash": "91ccfb9ae60b673e765a5e616c032a77" + }, + { + "path": "worship/images/7.png", + "hash": "e298d69f5c3eade7b741d6ec260f7a15" + }, + { + "path": "worship/images/8.png", + "hash": "9053063bc46e88f0a33c642037dafc39" + }, + { + "path": "worship/images/9.png", + "hash": "3861aae5494bd34ce6937d6224c48915" + }, + { + "path": "wujing/images/0.jpg", + "hash": "c187cfc302ce2c8583e7d18bfdde245a" + }, + { + "path": "youtube/images/corner.png", + "hash": "2f6f9a380e8c3045022d28fed799ff1c" + } +] \ No newline at end of file diff --git a/resources/update_list.py b/resources/update_list.py index ed1d45d6cd2b0845dbceaf12f0355c67fec7a89e..d17db930d1276c97bdf5de3bf75c99b1fed9e0a4 100644 --- a/resources/update_list.py +++ b/resources/update_list.py @@ -9,7 +9,7 @@ memes_path = dir_path.parent / "meme_generator" / "memes" def update(): resource_list = [] for file in memes_path.rglob("*"): - if not file.is_file() or file.suffix not in [".jpg", ".png", ".gif"]: + if not file.is_file() or not file.suffix in [".jpg", ".png", ".gif"]: continue resource_list.append( { @@ -19,8 +19,7 @@ def update(): ) resource_list.sort(key=lambda i: i["path"]) with open(dir_path / "resource_list.json", "w", encoding="utf-8") as f: - json.dump(resource_list, f, ensure_ascii=False, indent=2) - f.write("\n") + json.dump(resource_list, f, ensure_ascii=False, indent=4) if __name__ == "__main__":