kotonebot 0.4.0__py3-none-any.whl → 0.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. kotonebot/__init__.py +39 -39
  2. kotonebot/backend/bot.py +312 -312
  3. kotonebot/backend/color.py +525 -525
  4. kotonebot/backend/context/__init__.py +3 -3
  5. kotonebot/backend/context/task_action.py +183 -183
  6. kotonebot/backend/core.py +129 -129
  7. kotonebot/backend/debug/entry.py +89 -89
  8. kotonebot/backend/debug/mock.py +78 -78
  9. kotonebot/backend/debug/server.py +222 -222
  10. kotonebot/backend/debug/vars.py +351 -351
  11. kotonebot/backend/dispatch.py +227 -227
  12. kotonebot/backend/flow_controller.py +196 -196
  13. kotonebot/backend/ocr.py +535 -529
  14. kotonebot/backend/preprocessor.py +103 -103
  15. kotonebot/client/__init__.py +9 -9
  16. kotonebot/client/device.py +528 -503
  17. kotonebot/client/fast_screenshot.py +377 -377
  18. kotonebot/client/host/__init__.py +43 -12
  19. kotonebot/client/host/adb_common.py +107 -103
  20. kotonebot/client/host/custom.py +118 -114
  21. kotonebot/client/host/leidian_host.py +196 -201
  22. kotonebot/client/host/mumu12_host.py +353 -358
  23. kotonebot/client/host/protocol.py +214 -213
  24. kotonebot/client/host/windows_common.py +58 -58
  25. kotonebot/client/implements/__init__.py +71 -15
  26. kotonebot/client/implements/adb.py +89 -85
  27. kotonebot/client/implements/adb_raw.py +162 -158
  28. kotonebot/client/implements/nemu_ipc/__init__.py +11 -7
  29. kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +284 -284
  30. kotonebot/client/implements/nemu_ipc/nemu_ipc.py +327 -327
  31. kotonebot/client/implements/remote_windows.py +188 -188
  32. kotonebot/client/implements/uiautomator2.py +85 -81
  33. kotonebot/client/implements/windows.py +176 -172
  34. kotonebot/client/protocol.py +69 -69
  35. kotonebot/client/registration.py +24 -24
  36. kotonebot/config/base_config.py +96 -96
  37. kotonebot/config/manager.py +36 -36
  38. kotonebot/errors.py +76 -71
  39. kotonebot/interop/win/__init__.py +10 -3
  40. kotonebot/interop/win/_mouse.py +311 -0
  41. kotonebot/interop/win/message_box.py +313 -313
  42. kotonebot/interop/win/reg.py +37 -37
  43. kotonebot/interop/win/shortcut.py +43 -43
  44. kotonebot/interop/win/task_dialog.py +513 -513
  45. kotonebot/logging/__init__.py +2 -2
  46. kotonebot/logging/log.py +17 -17
  47. kotonebot/primitives/__init__.py +17 -17
  48. kotonebot/primitives/geometry.py +862 -290
  49. kotonebot/primitives/visual.py +63 -63
  50. kotonebot/tools/mirror.py +354 -354
  51. kotonebot/ui/file_host/sensio.py +36 -36
  52. kotonebot/ui/file_host/tmp_send.py +54 -54
  53. kotonebot/ui/pushkit/__init__.py +3 -3
  54. kotonebot/ui/pushkit/image_host.py +88 -87
  55. kotonebot/ui/pushkit/protocol.py +13 -13
  56. kotonebot/ui/pushkit/wxpusher.py +54 -53
  57. kotonebot/ui/user.py +148 -148
  58. kotonebot/util.py +436 -436
  59. {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/METADATA +82 -81
  60. kotonebot-0.5.0.dist-info/RECORD +71 -0
  61. {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/licenses/LICENSE +673 -673
  62. kotonebot-0.4.0.dist-info/RECORD +0 -70
  63. {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/WHEEL +0 -0
  64. {kotonebot-0.4.0.dist-info → kotonebot-0.5.0.dist-info}/top_level.txt +0 -0
@@ -1,81 +1,82 @@
1
- Metadata-Version: 2.4
2
- Name: kotonebot
3
- Version: 0.4.0
4
- Summary: Kotonebot is game automation library based on computer vision technology, works for Windows and Android.
5
- Requires-Python: >=3.10
6
- Description-Content-Type: text/markdown
7
- License-File: LICENSE
8
- Requires-Dist: opencv-python~=4.10
9
- Requires-Dist: rapidocr_onnxruntime~=1.4
10
- Requires-Dist: scikit-image~=0.25
11
- Requires-Dist: thefuzz~=0.22
12
- Requires-Dist: pydantic~=2.10
13
- Requires-Dist: ksaa-res~=0.2
14
- Requires-Dist: typing-extensions~=4.12
15
- Requires-Dist: python-dotenv~=1.0
16
- Requires-Dist: onnxruntime~=1.14
17
- Requires-Dist: numpy
18
- Provides-Extra: android
19
- Requires-Dist: adbutils>=2.8; extra == "android"
20
- Requires-Dist: uiautomator2>=3.2; extra == "android"
21
- Provides-Extra: windows
22
- Requires-Dist: pywin32; extra == "windows"
23
- Requires-Dist: ahk>=1.8; extra == "windows"
24
- Requires-Dist: win11toast>=0.35; extra == "windows"
25
- Requires-Dist: psutil>=6.1; extra == "windows"
26
- Provides-Extra: dev
27
- Requires-Dist: fastapi~=0.115; extra == "dev"
28
- Requires-Dist: uvicorn~=0.34; extra == "dev"
29
- Requires-Dist: python-multipart~=0.0; extra == "dev"
30
- Requires-Dist: websockets~=14.1; extra == "dev"
31
- Requires-Dist: psutil~=6.1; extra == "dev"
32
- Requires-Dist: twine~=6.1; extra == "dev"
33
- Requires-Dist: build; extra == "dev"
34
- Requires-Dist: snakeviz; extra == "dev"
35
- Requires-Dist: jinja2~=3.1; extra == "dev"
36
- Requires-Dist: tqdm~=4.67; extra == "dev"
37
- Provides-Extra: all
38
- Requires-Dist: kotonebot[android,dev,windows]; extra == "all"
39
- Dynamic: license-file
40
-
41
- # kotonebot
42
- > [!WARNING]
43
- > 本项目仍然处于早期开发阶段,可能随时会发生 breaking change。如果要使用,建议 pin 到一个具体的版本。
44
-
45
- kotonebot 是一个使用 Python 编写,基于 OpenCV、RapidOCR 等技术,致力于简化 Python 游戏自动化脚本编写流程的框架。
46
-
47
- ## 特性
48
- * 层次化引入
49
- * 包含 Library、Framework、Application 三个不同层次,分别封装到不同程度,可自由选择
50
- * 平台无关的输入输出(截图与模拟点击)
51
- * 基于代码生成的图片资源引用
52
- * 避免硬编码字符串
53
- * 图像/OCR 识别结果追踪 & 可视化查看工具
54
- * 开箱即用的模拟器管理(目前仅支持 MuMu12 与雷电模拟器)
55
-
56
- ## 安装
57
- 要求:Python >= 3.10
58
-
59
- ```bash
60
- # Windows Host, Windows Client
61
- pip install kotonebot[windows]
62
- # Windows Host, Android Client
63
- pip install kotonebot[android]
64
- # Development dependencies
65
- pip install kotonebot[dev]
66
- ```
67
-
68
- ## 快速开始
69
- WIP
70
-
71
- ### 协同开发
72
- 有时候你可能想以源码方式安装 kotonebot,以便与自己的项目一起调试修改。此时,如果你以 `pip install -e /path/to/kotonebot` 的方式安装,Pylance 可能无法正常静态分析。
73
- 解决方案是在 VSCode 里搜索 `python.analysis.extraPaths` 并将其设置为你本地 kotonebot 的根目录。
74
-
75
- ## 文档
76
- WIP
77
-
78
- ## 其他
79
- 本项目分离自 [KotonesAutoAssistant](https://github.com/XcantloadX/kotones-auto-assistant),因此 c69130 以前的提交均为 KotonesAutoAssistant 的历史提交。
80
-
81
- 由于使用 filter-repo 移除了大量无用文件,因此历史提交信息和更改的文件可能无法完全对应。
1
+ Metadata-Version: 2.4
2
+ Name: kotonebot
3
+ Version: 0.5.0
4
+ Summary: Kotonebot is game automation library based on computer vision technology, works for Windows and Android.
5
+ Requires-Python: >=3.10
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: opencv-python~=4.10
9
+ Requires-Dist: rapidocr_onnxruntime~=1.4
10
+ Requires-Dist: scikit-image~=0.25
11
+ Requires-Dist: thefuzz~=0.22
12
+ Requires-Dist: pydantic~=2.10
13
+ Requires-Dist: ksaa-res~=0.2
14
+ Requires-Dist: typing-extensions~=4.12
15
+ Requires-Dist: python-dotenv~=1.0
16
+ Requires-Dist: onnxruntime~=1.14
17
+ Requires-Dist: numpy
18
+ Requires-Dist: mouse>=0.7.1
19
+ Provides-Extra: android
20
+ Requires-Dist: adbutils>=2.8; extra == "android"
21
+ Requires-Dist: uiautomator2>=3.2; extra == "android"
22
+ Provides-Extra: windows
23
+ Requires-Dist: pywin32; extra == "windows"
24
+ Requires-Dist: ahk>=1.8; extra == "windows"
25
+ Requires-Dist: win11toast>=0.35; extra == "windows"
26
+ Requires-Dist: psutil>=6.1; extra == "windows"
27
+ Provides-Extra: dev
28
+ Requires-Dist: fastapi~=0.115; extra == "dev"
29
+ Requires-Dist: uvicorn~=0.34; extra == "dev"
30
+ Requires-Dist: python-multipart~=0.0; extra == "dev"
31
+ Requires-Dist: websockets~=14.1; extra == "dev"
32
+ Requires-Dist: psutil~=6.1; extra == "dev"
33
+ Requires-Dist: twine~=6.1; extra == "dev"
34
+ Requires-Dist: build; extra == "dev"
35
+ Requires-Dist: snakeviz; extra == "dev"
36
+ Requires-Dist: jinja2~=3.1; extra == "dev"
37
+ Requires-Dist: tqdm~=4.67; extra == "dev"
38
+ Provides-Extra: all
39
+ Requires-Dist: kotonebot[android,dev,windows]; extra == "all"
40
+ Dynamic: license-file
41
+
42
+ # kotonebot
43
+ > [!WARNING]
44
+ > 本项目仍然处于早期开发阶段,可能随时会发生 breaking change。如果要使用,建议 pin 到一个具体的版本。
45
+
46
+ kotonebot 是一个使用 Python 编写,基于 OpenCV、RapidOCR 等技术,致力于简化 Python 游戏自动化脚本编写流程的框架。
47
+
48
+ ## 特性
49
+ * 层次化引入
50
+ * 包含 Library、Framework、Application 三个不同层次,分别封装到不同程度,可自由选择
51
+ * 平台无关的输入输出(截图与模拟点击)
52
+ * 基于代码生成的图片资源引用
53
+ * 避免硬编码字符串
54
+ * 图像/OCR 识别结果追踪 & 可视化查看工具
55
+ * 开箱即用的模拟器管理(目前仅支持 MuMu12 与雷电模拟器)
56
+
57
+ ## 安装
58
+ 要求:Python >= 3.10
59
+
60
+ ```bash
61
+ # Windows Host, Windows Client
62
+ pip install kotonebot[windows]
63
+ # Windows Host, Android Client
64
+ pip install kotonebot[android]
65
+ # Development dependencies
66
+ pip install kotonebot[dev]
67
+ ```
68
+
69
+ ## 快速开始
70
+ WIP
71
+
72
+ ### 协同开发
73
+ 有时候你可能想以源码方式安装 kotonebot,以便与自己的项目一起调试修改。此时,如果你以 `pip install -e /path/to/kotonebot` 的方式安装,Pylance 可能无法正常静态分析。
74
+ 解决方案是在 VSCode 里搜索 `python.analysis.extraPaths` 并将其设置为你本地 kotonebot 的根目录。
75
+
76
+ ## 文档
77
+ WIP
78
+
79
+ ## 其他
80
+ 本项目分离自 [KotonesAutoAssistant](https://github.com/XcantloadX/kotones-auto-assistant),因此 c69130 以前的提交均为 KotonesAutoAssistant 的历史提交。
81
+
82
+ 由于使用 filter-repo 移除了大量无用文件,因此历史提交信息和更改的文件可能无法完全对应。
@@ -0,0 +1,71 @@
1
+ kotonebot/__init__.py,sha256=1xO-UaCDhT9sAdfKWV3KUwtvws-ONqI7QCTRnYsV48E,597
2
+ kotonebot/errors.py,sha256=biNgoJdU1RUxs3RwqKqbdvt2aXsZmkr_wpPjpxUrmS0,2503
3
+ kotonebot/util.py,sha256=Tiiwgxbj2YYeqFJtebafZlRfcK970bHBItn5SxUR9pA,13934
4
+ kotonebot/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ kotonebot/backend/bot.py,sha256=kmqWjxSXLHAbPXyKozBZv3s3sY6YSmkXDsIbq7QOWOE,11558
6
+ kotonebot/backend/color.py,sha256=kmDtYaWkofbg9QtdWpbMu41a-jorabcffFmtIu9gDR0,19600
7
+ kotonebot/backend/core.py,sha256=NAhveckuZLhu356WjpOUQOFXFjcLi5LwoV44IxbBeXY,3897
8
+ kotonebot/backend/dispatch.py,sha256=4IzA7pfyH4VFkoA5TLvHLZn_Is7MV9-wx78uVxMe1YQ,7196
9
+ kotonebot/backend/flow_controller.py,sha256=fNbZHiFVGkFoC0-MvLTJDKrEjtjDXfrJ7L9vYbTdnIU,6032
10
+ kotonebot/backend/image.py,sha256=jXYGVXa9K1zBCJBG1Btsf2AG5XI9A0DMy5uYy6KOusk,28111
11
+ kotonebot/backend/loop.py,sha256=e4STYQ6sbUp53xcYJXyhz4vOyEzXds1MKR0xebqU228,6638
12
+ kotonebot/backend/ocr.py,sha256=kgnPWnB-Sbl7pAM6_RSaq0NrhlmArL7wzB574TIURMw,17844
13
+ kotonebot/backend/preprocessor.py,sha256=ce2J70I4vbiyOly61KVPkfmsJf8Oeuj23Vnmbz_eCGk,3320
14
+ kotonebot/backend/context/__init__.py,sha256=TR8WdJt92k62HskPFyfuubyIWXcnJpT_ItGKH1daevY,165
15
+ kotonebot/backend/context/context.py,sha256=R91knq7Ry5MSWaFhOj3HIF13u8bomOOsGk59yPOG4aw,33780
16
+ kotonebot/backend/context/task_action.py,sha256=HZeYzKFbC3mgOQ1g3rodwhYCncImhqM5FenbKHNsHnc,6261
17
+ kotonebot/backend/debug/__init__.py,sha256=pcSpwzU2YwGrogOoHmsI035nkA_-kDLfm-lfBxHuQ-c,43
18
+ kotonebot/backend/debug/entry.py,sha256=Ohf42wPs0C6P5ZGEyAJiol0h531Lss6pKhATJMBnl0w,2744
19
+ kotonebot/backend/debug/mock.py,sha256=Owm86oYtKnlSfgwqb3n5undlshJjdgNTkFl7D33zWSQ,2040
20
+ kotonebot/backend/debug/server.py,sha256=-xZRDy6BSExQi2Zcx_HjuQ8TYviQB_776kPtt16Nooc,7295
21
+ kotonebot/backend/debug/vars.py,sha256=_Zj7s4CikU2XU3xKsKeLYhKmImH-vB9xwXYviuproZQ,10561
22
+ kotonebot/client/__init__.py,sha256=VlseblhIlmDtNehlxLjbaaSKiXGZSVZSs_RlS7VeKcw,183
23
+ kotonebot/client/device.py,sha256=83h2hqNjAyqpPfCnMGXmQMlHfyoVlwiYRP1TgyyEWTA,20828
24
+ kotonebot/client/fast_screenshot.py,sha256=v_57ZkEKOv98S0y8FHs_n4de5-k5neSiBJU4CEXDEd4,13270
25
+ kotonebot/client/protocol.py,sha256=H9SKCSVPuORn63GuSycFnRV4CMWAfqtEWXZF9YAjY7w,2231
26
+ kotonebot/client/registration.py,sha256=xHaCUDNOtA3o8enmSRAVsb1hVoSuv1GstyeM8MgONQM,824
27
+ kotonebot/client/host/__init__.py,sha256=1bWuQSObozMVF0JqtvtAm_Fn-A1MsEDaJHCMw42FbAY,1537
28
+ kotonebot/client/host/adb_common.py,sha256=OOu1ik3VzoCx1DdGKQPnebByxkAUtBiBp5f6EkBl8eg,3790
29
+ kotonebot/client/host/custom.py,sha256=dy49_-ZBosUoSM92CzaEJ7eEHkoooR4VFehDNnIoc98,4104
30
+ kotonebot/client/host/leidian_host.py,sha256=ydRJpyArD0F1bDNFcxp0w3ryIOGSfwv9_fzm-IfRg1I,7353
31
+ kotonebot/client/host/mumu12_host.py,sha256=lbLsSZJtyEYIyX2iFOVmBCBBMOEYIg1W8gj_5F-nqtU,13911
32
+ kotonebot/client/host/protocol.py,sha256=N5kRm_IVubsQQlAOkZvAHPrREbSaSnVYrLqyz9U8inc,7959
33
+ kotonebot/client/host/windows_common.py,sha256=kxCSachnMIyZEavl-0-MAwADTd0lqbZmgrUyvgjImXo,2373
34
+ kotonebot/client/implements/__init__.py,sha256=b9eaN16EdWPPu1WERA2HysWI1YHPYU9jtQ2wuAA8BvU,2205
35
+ kotonebot/client/implements/adb.py,sha256=nMGAIDlKTy9v2SKU3q5XSuE78b9M-wqEQPwN98eLtOU,3199
36
+ kotonebot/client/implements/adb_raw.py,sha256=QkYCeLnVHevc6q4qyxW34Y4MTSrhxS9_d7qfBW-QgBI,6292
37
+ kotonebot/client/implements/remote_windows.py,sha256=OhgpEcmTYhAsedqPY419BcJTlMvJW0ssJ8nHQjdlEuU,6568
38
+ kotonebot/client/implements/uiautomator2.py,sha256=BN1XRZi9LYZrvM9JKpPgs2F1PgXTsLWLzDhkRl-t2nw,2637
39
+ kotonebot/client/implements/windows.py,sha256=FduISikRDi72paLs5xpKcohXsC4HkM36AInp8j4Be10,6713
40
+ kotonebot/client/implements/nemu_ipc/__init__.py,sha256=9Q7ovvO4qf3sQTHAUTHHuUOgijmd6B8OTKSsdQkYrG0,310
41
+ kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py,sha256=TEz7DykLLa30Rb5r5JGt2Odus_OJw4X2HYfiNGsvOyQ,10359
42
+ kotonebot/client/implements/nemu_ipc/nemu_ipc.py,sha256=SV6JRShJ_z_f5tzh-0wRn6fhsrjmbsZKBl65j9CmGas,11755
43
+ kotonebot/config/__init__.py,sha256=-jATUOdrpUrBRT9RiTRQho2-2zeet50qQggsVMVpqNE,35
44
+ kotonebot/config/base_config.py,sha256=BwC3XWc78r8FhBsHhcSBlW2sjhomy5EhRksMDNRuuvA,3342
45
+ kotonebot/config/manager.py,sha256=Ybfv92yhM_l2kKKEw1VsKTYxundALlurSpZge7XIDxA,1025
46
+ kotonebot/interop/win/__init__.py,sha256=e6Pps5u7z88PabVFG8Vg11RHw3toCSa3GjuihgUcXtc,169
47
+ kotonebot/interop/win/_mouse.py,sha256=cMeIA3SaxTJYRfPC1a7M1dkzw-pa2Ctg7pxKAUZdtLI,10131
48
+ kotonebot/interop/win/message_box.py,sha256=YiT_CFS9SPCJjAXwrzHktHJ5elCLzmE83sUnPAC9s4o,8322
49
+ kotonebot/interop/win/reg.py,sha256=jWf-px_-iK4oJOqu5x955zHQGVDEcunNvuAPXt_DqvY,1310
50
+ kotonebot/interop/win/shortcut.py,sha256=ftt0ieKGWDgcozn63URUFBa5x5U8vdrRkUdt_7BnVcc,1721
51
+ kotonebot/interop/win/task_dialog.py,sha256=KO8yCelqcoP4K6Jgw18IsXnM5FK1wTCvZ6y-lWsOyx8,19678
52
+ kotonebot/logging/__init__.py,sha256=bpRRM3l35XLeFkD7Yxkh1DfzM5FTsfNl7pPjn0E9dW4,140
53
+ kotonebot/logging/log.py,sha256=e3Nr8viVSc3wIkPaLQBDRpWbc6nzpwtTmCUPIqSGDaE,538
54
+ kotonebot/primitives/__init__.py,sha256=V5NybWHUCIcIe_7m2_5tw_SRCLK7RnBVSUCjCO0QYZU,338
55
+ kotonebot/primitives/geometry.py,sha256=qhgms19KIVabyu9nZOphNw1E0q4F-t_pj9vbTiB9ZU4,25749
56
+ kotonebot/primitives/visual.py,sha256=eJyNKGynDJO_aI2b8zFcIGaYH7da9n5ICe0mwMpIe8Q,1965
57
+ kotonebot/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ kotonebot/tools/mirror.py,sha256=FnElklO_fKZtzKi72tnRCIuY0veQSU5jLfKv7_tObt0,13466
59
+ kotonebot/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
+ kotonebot/ui/user.py,sha256=RnswuO4EgFf2eTuOAcnfK9vcrW5F5hEjFyD-3fi5RXY,4337
61
+ kotonebot/ui/file_host/sensio.py,sha256=G6L4NqZT6T7wWF9_ZVuH9exa-W9qJ2OaLoB5mxGP_LY,878
62
+ kotonebot/ui/file_host/tmp_send.py,sha256=am7dLjbU9eb-7d1HBRp1eBI5ycWeeJamB3DlLELGna8,1748
63
+ kotonebot/ui/pushkit/__init__.py,sha256=icm_WYjlfbFhbxxdnKadn-gzYfm1XguTsiiZauqyN0E,70
64
+ kotonebot/ui/pushkit/image_host.py,sha256=7miupmjSZP_6krAcF9TxB0Ae7ZJf9OJljrytEaT3MzY,2503
65
+ kotonebot/ui/pushkit/protocol.py,sha256=h_1YICkrvviEiZYLAJ1QMnizXMWvqQnIrUY7zIyNWFQ,253
66
+ kotonebot/ui/pushkit/wxpusher.py,sha256=qqEmg17wJmHOt6EtKdfInaX22erkMgzkULt6T0pk1Ho,1696
67
+ kotonebot-0.5.0.dist-info/licenses/LICENSE,sha256=ixuiBLtpoK3iv89l7ylKkg9rs2GzF9ukPH7ynZYzK5s,35148
68
+ kotonebot-0.5.0.dist-info/METADATA,sha256=_Py_jZ16jYDtksdTSVRGHKL8OkXe8XVPQHszN40570E,3154
69
+ kotonebot-0.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
+ kotonebot-0.5.0.dist-info/top_level.txt,sha256=QUWAZdbBndoojkrs6RcNytLAn7a0ns4YNF4tLx2Nc4s,10
71
+ kotonebot-0.5.0.dist-info/RECORD,,