ksaa 2025.5.16.1__tar.gz → 2025.5.23.0__tar.gz

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 (663) hide show
  1. {ksaa-2025.5.16.1/ksaa.egg-info → ksaa-2025.5.23.0}/PKG-INFO +1 -1
  2. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/WHATS_NEW.md +18 -0
  3. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/__init__.py +0 -2
  4. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/bot.py +19 -34
  5. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/color.py +20 -17
  6. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/context/context.py +41 -8
  7. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/core.py +7 -30
  8. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/dispatch.py +1 -1
  9. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/image.py +26 -26
  10. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/ocr.py +18 -17
  11. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/preprocessor.py +0 -1
  12. ksaa-2025.5.23.0/kotonebot/client/__init__.py +8 -0
  13. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/device.py +7 -20
  14. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/factory.py +33 -5
  15. ksaa-2025.5.23.0/kotonebot/client/host/__init__.py +11 -0
  16. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/host/custom.py +7 -2
  17. ksaa-2025.5.23.0/kotonebot/client/host/leidian_host.py +200 -0
  18. ksaa-2025.5.23.0/kotonebot/client/host/mumu12_host.py +169 -0
  19. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/host/protocol.py +68 -38
  20. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/implements/adb.py +1 -1
  21. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/protocol.py +1 -1
  22. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/config/base_config.py +8 -3
  23. ksaa-2025.5.23.0/kotonebot/interop/win/reg.py +37 -0
  24. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/common.py +18 -2
  25. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/badge.py +6 -6
  26. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/common.py +6 -6
  27. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/commu_event_buttons.py +4 -3
  28. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/idols_overview.py +6 -6
  29. ksaa-2025.5.23.0/kotonebot/kaa/game_ui/schedule.py +162 -0
  30. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/scrollable.py +7 -6
  31. ksaa-2025.5.23.0/kotonebot/kaa/kaa_context.py +8 -0
  32. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/main/cli.py +7 -0
  33. ksaa-2025.5.23.0/kotonebot/kaa/main/dmm_host.py +53 -0
  34. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/main/gr.py +497 -298
  35. ksaa-2025.5.23.0/kotonebot/kaa/main/kaa.py +169 -0
  36. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/metadata.py +18 -0
  37. ksaa-2025.5.23.0/kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  38. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/game.db +0 -0
  39. ksaa-2025.5.23.0/kotonebot/kaa/resources/game_ver.txt +0 -0
  40. ksaa-2025.5.23.0/kotonebot/kaa/sprites/4503db6b-7224-4b81-9971-e7cfa56e10f2.png +0 -0
  41. ksaa-2025.5.23.0/kotonebot/kaa/tasks/R.py +562 -0
  42. ksaa-2025.5.23.0/kotonebot/kaa/tasks/daily/contest.py +179 -0
  43. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/mission_reward.py +4 -4
  44. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/end_game.py +2 -9
  45. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/produce/cards.py +7 -6
  46. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/produce/common.py +16 -12
  47. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/produce/in_purodyuusu.py +5 -5
  48. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/produce/p_drink.py +4 -3
  49. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/produce/produce.py +5 -3
  50. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/start_game.py +2 -2
  51. ksaa-2025.5.23.0/kotonebot/primitives/__init__.py +17 -0
  52. ksaa-2025.5.23.0/kotonebot/primitives/geometry.py +290 -0
  53. ksaa-2025.5.23.0/kotonebot/primitives/visual.py +63 -0
  54. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/util.py +20 -20
  55. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0/ksaa.egg-info}/PKG-INFO +1 -1
  56. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/ksaa.egg-info/SOURCES.txt +142 -134
  57. ksaa-2025.5.23.0/version +1 -0
  58. ksaa-2025.5.16.1/kotonebot/client/__init__.py +0 -1
  59. ksaa-2025.5.16.1/kotonebot/client/host/__init__.py +0 -4
  60. ksaa-2025.5.16.1/kotonebot/client/host/leidian_host.py +0 -0
  61. ksaa-2025.5.16.1/kotonebot/client/host/mumu_host.py +0 -0
  62. ksaa-2025.5.16.1/kotonebot/kaa/main/kaa.py +0 -93
  63. ksaa-2025.5.16.1/kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  64. ksaa-2025.5.16.1/kotonebot/kaa/resources/game_ver.txt +0 -0
  65. ksaa-2025.5.16.1/kotonebot/kaa/tasks/R.py +0 -558
  66. ksaa-2025.5.16.1/kotonebot/kaa/tasks/daily/contest.py +0 -145
  67. ksaa-2025.5.16.1/version +0 -1
  68. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/MANIFEST.in +0 -0
  69. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/README.md +0 -0
  70. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/__init__.py +0 -0
  71. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/context/__init__.py +0 -0
  72. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/context/task_action.py +0 -0
  73. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/debug/__init__.py +0 -0
  74. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/debug/entry.py +0 -0
  75. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/debug/mock.py +0 -0
  76. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/debug/server.py +0 -0
  77. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/backend/debug/vars.py +0 -0
  78. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/fast_screenshot.py +0 -0
  79. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/implements/__init__.py +0 -0
  80. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/implements/adb_raw.py +0 -0
  81. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/implements/remote_windows.py +0 -0
  82. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/implements/uiautomator2.py +0 -0
  83. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/client/implements/windows.py +0 -0
  84. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/config/__init__.py +0 -0
  85. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/config/manager.py +0 -0
  86. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/debug_entry.py +0 -0
  87. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/errors.py +0 -0
  88. {ksaa-2025.5.16.1/kotonebot/kaa → ksaa-2025.5.23.0/kotonebot/interop/win}/__init__.py +0 -0
  89. {ksaa-2025.5.16.1/kotonebot/kaa/resources → ksaa-2025.5.23.0/kotonebot/kaa}/__init__.py +0 -0
  90. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/clear_logs.py +0 -0
  91. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/db/__init__.py +0 -0
  92. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/db/constants.py +0 -0
  93. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/db/idol_card.py +0 -0
  94. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/db/sqlite.py +0 -0
  95. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/__init__.py +0 -0
  96. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/dialog.py +0 -0
  97. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/game_ui/toolbar.py +0 -0
  98. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/image_db/__init__.py +0 -0
  99. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/image_db/db.py +0 -0
  100. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/image_db/descriptors/__init__.py +0 -0
  101. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/image_db/descriptors/hist.py +0 -0
  102. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/main/__init__.py +0 -0
  103. {ksaa-2025.5.16.1/kotonebot/kaa/sprites → ksaa-2025.5.23.0/kotonebot/kaa/resources}/__init__.py +0 -0
  104. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-000_0.png +0 -0
  105. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-000_1.png +0 -0
  106. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-001_0.png +0 -0
  107. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-001_1.png +0 -0
  108. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-2-000_0.png +0 -0
  109. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-2-000_1.png +0 -0
  110. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-000_0.png +0 -0
  111. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-000_1.png +0 -0
  112. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-001_0.png +0 -0
  113. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-001_1.png +0 -0
  114. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-002_0.png +0 -0
  115. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-002_1.png +0 -0
  116. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-003_0.png +0 -0
  117. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-003_1.png +0 -0
  118. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-005_0.png +0 -0
  119. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-005_1.png +0 -0
  120. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-006_0.png +0 -0
  121. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-006_1.png +0 -0
  122. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-007_0.png +0 -0
  123. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-007_1.png +0 -0
  124. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-008_0.png +0 -0
  125. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-008_1.png +0 -0
  126. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-009_0.png +0 -0
  127. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-009_1.png +0 -0
  128. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-010_0.png +0 -0
  129. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-010_1.png +0 -0
  130. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-011_0.png +0 -0
  131. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-011_1.png +0 -0
  132. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-000_0.png +0 -0
  133. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-000_1.png +0 -0
  134. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-001_0.png +0 -0
  135. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-001_1.png +0 -0
  136. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-2-000_0.png +0 -0
  137. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-2-000_1.png +0 -0
  138. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-000_0.png +0 -0
  139. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-000_1.png +0 -0
  140. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-001_0.png +0 -0
  141. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-001_1.png +0 -0
  142. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-002_0.png +0 -0
  143. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-002_1.png +0 -0
  144. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-003_0.png +0 -0
  145. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-003_1.png +0 -0
  146. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-005_0.png +0 -0
  147. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-005_1.png +0 -0
  148. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-006_0.png +0 -0
  149. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-006_1.png +0 -0
  150. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-007_0.png +0 -0
  151. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-007_1.png +0 -0
  152. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-008_0.png +0 -0
  153. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-008_1.png +0 -0
  154. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-009_0.png +0 -0
  155. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-009_1.png +0 -0
  156. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-010_0.png +0 -0
  157. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-010_1.png +0 -0
  158. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-011_0.png +0 -0
  159. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-011_1.png +0 -0
  160. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-012_0.png +0 -0
  161. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-012_1.png +0 -0
  162. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-1-000_0.png +0 -0
  163. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-1-000_1.png +0 -0
  164. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-2-000_0.png +0 -0
  165. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-2-000_1.png +0 -0
  166. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-000_0.png +0 -0
  167. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-000_1.png +0 -0
  168. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-000_0.png +0 -0
  169. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-000_1.png +0 -0
  170. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-001_0.png +0 -0
  171. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-001_1.png +0 -0
  172. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-2-000_0.png +0 -0
  173. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-2-000_1.png +0 -0
  174. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-000_0.png +0 -0
  175. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-000_1.png +0 -0
  176. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-001_0.png +0 -0
  177. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-001_1.png +0 -0
  178. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-002_0.png +0 -0
  179. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-002_1.png +0 -0
  180. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-003_0.png +0 -0
  181. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-003_1.png +0 -0
  182. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-004_0.png +0 -0
  183. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-004_1.png +0 -0
  184. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-005_0.png +0 -0
  185. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-005_1.png +0 -0
  186. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-006_0.png +0 -0
  187. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-006_1.png +0 -0
  188. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-007_0.png +0 -0
  189. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-007_1.png +0 -0
  190. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-008_0.png +0 -0
  191. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-008_1.png +0 -0
  192. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-009_0.png +0 -0
  193. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-009_1.png +0 -0
  194. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-010_0.png +0 -0
  195. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-010_1.png +0 -0
  196. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-011_0.png +0 -0
  197. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-011_1.png +0 -0
  198. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-000_0.png +0 -0
  199. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-000_1.png +0 -0
  200. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-001_0.png +0 -0
  201. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-001_1.png +0 -0
  202. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-2-000_0.png +0 -0
  203. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-2-000_1.png +0 -0
  204. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-000_0.png +0 -0
  205. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-000_1.png +0 -0
  206. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-001_0.png +0 -0
  207. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-001_1.png +0 -0
  208. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-002_0.png +0 -0
  209. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-002_1.png +0 -0
  210. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-003_0.png +0 -0
  211. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-003_1.png +0 -0
  212. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-005_0.png +0 -0
  213. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-005_1.png +0 -0
  214. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-006_0.png +0 -0
  215. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-006_1.png +0 -0
  216. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-007_0.png +0 -0
  217. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-007_1.png +0 -0
  218. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-008_0.png +0 -0
  219. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-008_1.png +0 -0
  220. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-009_0.png +0 -0
  221. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-009_1.png +0 -0
  222. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-010_0.png +0 -0
  223. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-010_1.png +0 -0
  224. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-011_0.png +0 -0
  225. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-011_1.png +0 -0
  226. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-012_0.png +0 -0
  227. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-012_1.png +0 -0
  228. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-1-000_0.png +0 -0
  229. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-1-000_1.png +0 -0
  230. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-2-000_0.png +0 -0
  231. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-2-000_1.png +0 -0
  232. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-000_0.png +0 -0
  233. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-000_1.png +0 -0
  234. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-001_0.png +0 -0
  235. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-001_1.png +0 -0
  236. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-002_0.png +0 -0
  237. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-002_1.png +0 -0
  238. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-004_0.png +0 -0
  239. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-004_1.png +0 -0
  240. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-005_0.png +0 -0
  241. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-005_1.png +0 -0
  242. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-006_0.png +0 -0
  243. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-006_1.png +0 -0
  244. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-011_0.png +0 -0
  245. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-011_1.png +0 -0
  246. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-000_0.png +0 -0
  247. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
  248. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-2-000_0.png +0 -0
  249. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-2-000_1.png +0 -0
  250. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-000_0.png +0 -0
  251. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-000_1.png +0 -0
  252. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-002_0.png +0 -0
  253. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-002_1.png +0 -0
  254. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-003_0.png +0 -0
  255. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-003_1.png +0 -0
  256. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-004_0.png +0 -0
  257. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-004_1.png +0 -0
  258. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-005_0.png +0 -0
  259. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-005_1.png +0 -0
  260. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-006_0.png +0 -0
  261. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-006_1.png +0 -0
  262. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-010_0.png +0 -0
  263. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-010_1.png +0 -0
  264. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-000_0.png +0 -0
  265. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-000_1.png +0 -0
  266. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-001_0.png +0 -0
  267. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-001_1.png +0 -0
  268. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-2-000_0.png +0 -0
  269. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-2-000_1.png +0 -0
  270. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-000_0.png +0 -0
  271. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-000_1.png +0 -0
  272. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-001_0.png +0 -0
  273. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-001_1.png +0 -0
  274. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-002_0.png +0 -0
  275. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-002_1.png +0 -0
  276. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-003_0.png +0 -0
  277. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-003_1.png +0 -0
  278. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-004_0.png +0 -0
  279. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-004_1.png +0 -0
  280. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-005_0.png +0 -0
  281. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-005_1.png +0 -0
  282. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-006_0.png +0 -0
  283. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-006_1.png +0 -0
  284. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-007_0.png +0 -0
  285. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-007_1.png +0 -0
  286. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-008_0.png +0 -0
  287. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-008_1.png +0 -0
  288. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-009_0.png +0 -0
  289. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-009_1.png +0 -0
  290. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-010_0.png +0 -0
  291. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-010_1.png +0 -0
  292. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-011_0.png +0 -0
  293. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-011_1.png +0 -0
  294. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-000_0.png +0 -0
  295. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-000_1.png +0 -0
  296. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-001_0.png +0 -0
  297. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-001_1.png +0 -0
  298. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-2-000_0.png +0 -0
  299. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-2-000_1.png +0 -0
  300. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-000_0.png +0 -0
  301. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-000_1.png +0 -0
  302. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-001_0.png +0 -0
  303. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-001_1.png +0 -0
  304. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-002_0.png +0 -0
  305. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-002_1.png +0 -0
  306. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-004_0.png +0 -0
  307. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-004_1.png +0 -0
  308. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-005_0.png +0 -0
  309. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-005_1.png +0 -0
  310. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-006_0.png +0 -0
  311. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-006_1.png +0 -0
  312. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-007_0.png +0 -0
  313. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-007_1.png +0 -0
  314. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
  315. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_1.png +0 -0
  316. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-009_0.png +0 -0
  317. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-009_1.png +0 -0
  318. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-010_0.png +0 -0
  319. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-010_1.png +0 -0
  320. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-011_0.png +0 -0
  321. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-011_1.png +0 -0
  322. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-000_0.png +0 -0
  323. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-000_1.png +0 -0
  324. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-001_0.png +0 -0
  325. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-001_1.png +0 -0
  326. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-2-000_0.png +0 -0
  327. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-2-000_1.png +0 -0
  328. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-000_0.png +0 -0
  329. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-000_1.png +0 -0
  330. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-001_0.png +0 -0
  331. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-001_1.png +0 -0
  332. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-002_0.png +0 -0
  333. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-002_1.png +0 -0
  334. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-003_0.png +0 -0
  335. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-003_1.png +0 -0
  336. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-004_0.png +0 -0
  337. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-004_1.png +0 -0
  338. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-006_0.png +0 -0
  339. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-006_1.png +0 -0
  340. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-007_0.png +0 -0
  341. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-007_1.png +0 -0
  342. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-008_0.png +0 -0
  343. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-008_1.png +0 -0
  344. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-009_0.png +0 -0
  345. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-009_1.png +0 -0
  346. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-010_0.png +0 -0
  347. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-010_1.png +0 -0
  348. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-011_0.png +0 -0
  349. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-011_1.png +0 -0
  350. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-000_0.png +0 -0
  351. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-000_1.png +0 -0
  352. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-001_0.png +0 -0
  353. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-001_1.png +0 -0
  354. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-2-000_0.png +0 -0
  355. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-2-000_1.png +0 -0
  356. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-000_0.png +0 -0
  357. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-000_1.png +0 -0
  358. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-001_0.png +0 -0
  359. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-001_1.png +0 -0
  360. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-002_0.png +0 -0
  361. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-002_1.png +0 -0
  362. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-003_0.png +0 -0
  363. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-003_1.png +0 -0
  364. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-005_0.png +0 -0
  365. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-005_1.png +0 -0
  366. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-006_0.png +0 -0
  367. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-006_1.png +0 -0
  368. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-007_0.png +0 -0
  369. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-007_1.png +0 -0
  370. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-008_0.png +0 -0
  371. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-008_1.png +0 -0
  372. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-009_0.png +0 -0
  373. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-009_1.png +0 -0
  374. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-010_0.png +0 -0
  375. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-010_1.png +0 -0
  376. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-011_0.png +0 -0
  377. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-011_1.png +0 -0
  378. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-000_0.png +0 -0
  379. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-000_1.png +0 -0
  380. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-001_0.png +0 -0
  381. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-001_1.png +0 -0
  382. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-2-000_0.png +0 -0
  383. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-2-000_1.png +0 -0
  384. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-000_0.png +0 -0
  385. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-000_1.png +0 -0
  386. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-001_0.png +0 -0
  387. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-001_1.png +0 -0
  388. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-002_0.png +0 -0
  389. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-002_1.png +0 -0
  390. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-003_0.png +0 -0
  391. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-003_1.png +0 -0
  392. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-004_0.png +0 -0
  393. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-004_1.png +0 -0
  394. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-006_0.png +0 -0
  395. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-006_1.png +0 -0
  396. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-007_0.png +0 -0
  397. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-007_1.png +0 -0
  398. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-008_0.png +0 -0
  399. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-008_1.png +0 -0
  400. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-009_0.png +0 -0
  401. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-009_1.png +0 -0
  402. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-010_0.png +0 -0
  403. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-010_1.png +0 -0
  404. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-011_0.png +0 -0
  405. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-011_1.png +0 -0
  406. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-012_0.png +0 -0
  407. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-012_1.png +0 -0
  408. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/00551158-fee9-483f-b034-549139a96f58.png +0 -0
  409. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/03c9182c-b5ba-4404-b6f9-50b06a86e102.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/03a1da2f-c46d-47ce-a4a5-dbe3dee15154.png +0 -0
  410. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/05890a1b-8764-4e9f-9d21-65d292c22e13.png +0 -0
  411. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/97bbc57d-780a-40f4-8fe1-bcaef697b601.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/0590d364-2d8a-4743-b3c6-8b06a8902eba.png +0 -0
  412. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/bee4fbe2-365f-4145-b8f4-87c2c460cd71.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/059e36cb-256b-409d-af50-2d6bbcda2991.png +0 -0
  413. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f32e04e8-2e9a-49c2-9734-d0a02ed2d892.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/0712678b-e13f-49c2-b144-4a3d3e342836.png +0 -0
  414. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/0df088e0-737f-44ec-b39f-76239d087382.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/0888b793-4084-479b-a3bb-1ad5e0de1f63.png +0 -0
  415. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/08750a02-0881-443a-9c69-c90a2ccf2a63.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/0941ec23-b5c7-4513-b5d6-3e65a84eaec6.png +0 -0
  416. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/0949c622-9067-4f0d-bac2-3f938a1d2ed2.png +0 -0
  417. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7dec3bd9-f8ee-430f-af54-0c03c4c91546.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/0a9cf832-adb9-4f8e-9e19-a7283934ee51.png +0 -0
  418. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/0c0627be-4a09-4450-a078-1858d3ace532.png +0 -0
  419. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/0f7d581d-cea3-4039-9205-732e4cd29293.png +0 -0
  420. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7d778f82-f908-4edb-9b12-d8460589ab11.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/10dd5320-7d5c-4901-a9aa-3a8cdd6eee0f.png +0 -0
  421. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/ff493975-0f30-468f-a3ea-17505a2b0385.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/13530bef-a2cc-4ae4-b435-b56d370a08a4.png +0 -0
  422. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/135ee57a-d30d-4ba8-83f0-9f1681a49ff7.png +0 -0
  423. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/1652f06a-5417-49ef-8949-4854772d9ab7.png +0 -0
  424. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/16fbc93d-b294-4001-b4e9-ee2af181415f.png +0 -0
  425. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/de619141-10a4-4447-89b3-6cabcbf52d8a.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/17d6c160-56a9-46f3-bc08-e85e85984c29.png +0 -0
  426. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/a477c873-98bd-45f0-a9a6-324e714c69cd.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/18412951-a2a4-4098-ac93-e36f951fe6a3.png +0 -0
  427. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/4aed7e90-76b1-4837-a6ad-e2ed2e3240ec.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/191af9b6-75ec-4b9c-9cd8-acb8073670fc.png +0 -0
  428. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/1926f2f9-4bd7-48eb-9eba-28ec4efb0606.png +0 -0
  429. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/ad26884a-8371-420f-be89-7fe82ddaf1e8.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/1ab5a8b6-4a8d-4964-b867-e030dbcb8cea.png +0 -0
  430. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/2860421f-2db8-4850-9f0c-0aca8bbf16d0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/21e349ce-6b24-4978-800b-64bb023dac4c.png +0 -0
  431. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/a35aed53-ff78-41f0-9a19-c69fda40aeef.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/22a9c3ad-79f8-4840-badc-679ffb563862.png +0 -0
  432. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/23d88465-65d9-4718-8725-8dbf0a98a5a4.png +0 -0
  433. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f71df091-fc71-48d4-8124-b3c46f4c4436.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/24e2bee3-a981-4acb-a6d4-ba558ecdb447.png +0 -0
  434. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1373ec63-fd98-4be9-a925-08144f1d5ba5.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/24f4e1b3-3697-48c8-b253-147c32099c7d.png +0 -0
  435. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/25f00ee3-8dfe-42d1-a67e-191fa5c3df4b.png +0 -0
  436. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/04180b4a-1532-42dd-9280-0f47c1e68959.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/2683cb88-4e76-48df-875e-571c1be71262.png +0 -0
  437. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/278b7d9c-707e-4392-9677-74574b5cdf42.png +0 -0
  438. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/e73cacc9-08aa-4b7a-acd3-3dbe95d9f51c.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/292d2da1-f9a0-43e3-9ae2-b0d9dbc0eade.png +0 -0
  439. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7b07a31c-9e2b-4ce0-8998-ccc0592de5e0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/2aa3af38-e76b-46bd-b607-a1e0fa203e53.png +0 -0
  440. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/fa64ed03-4277-4ae2-a958-adb93c393457.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/2ab660e8-865a-41d9-acec-ab6b002f85bf.png +0 -0
  441. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/2bc00520-0afe-40e5-8743-d33fc6b2945a.png +0 -0
  442. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/2bd6fe88-99fa-443d-8e42-bb3de5881213.png +0 -0
  443. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/3f0b91e1-898a-4f44-b116-38483bc30461.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/2e01ea79-ed1b-46c6-a60d-61762e70356e.png +0 -0
  444. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/40e3dac1-74fb-4501-a20f-18422d070554.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/2fd3276f-de84-4696-83fd-233f6b8f3b65.png +0 -0
  445. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f9e0be54-237b-4092-8784-1a4d2eb43097.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3011e930-0a44-411a-a51c-9674559a7a79.png +0 -0
  446. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/303cccc1-c674-4d3a-8c89-19ea729fdbef.png +0 -0
  447. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/d4673e38-cf76-4062-9a71-0f31936fe49b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/305f4efc-44aa-40a3-829a-cbfb11667e70.png +0 -0
  448. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/30a6f399-6999-4f04-bb77-651e0214112f.png +0 -0
  449. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f4c8a757-674e-45ca-af2c-0bc409b7bca8.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/315be5ba-6a88-477d-829a-36d1a0c20d5b.png +0 -0
  450. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/50a9e2a0-1166-4f1d-ad15-d8493ce0e49e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/31e62cdf-febe-41d5-a9cb-864dd979c110.png +0 -0
  451. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/54d57991-e5d0-4346-b1f8-63e429d8a3fe.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/32173834-1127-4d24-ae38-7e39aa285383.png +0 -0
  452. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/666b1e8c-19fb-49e9-a761-1069f635f450.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3899fdd3-1e6c-426f-84fc-07fc7f142285.png +0 -0
  453. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/be7504d5-48e5-404c-a74d-f7fa86acf276.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3a9e305c-3bfb-4e03-b516-5d2f1fdde3ac.png +0 -0
  454. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/979c7468-d9ef-4cc1-9449-2aa716caabb0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3af1f5c7-bc33-48c8-96bd-9de2060a6cd2.png +0 -0
  455. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/3c8b477a-8eda-407e-9e9f-7540c8808f89.png +0 -0
  456. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/3eb037db-4cd8-4c00-a655-fa73f612adfd.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3da30a90-8e12-4467-9c2a-9f329b12fff3.png +0 -0
  457. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/39151ffc-365e-45b2-a2f4-9d4c76d41524.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3ea127da-166d-4ff1-9748-b52985b7a426.png +0 -0
  458. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/6fec0efa-336f-4726-b1d9-dc83c23b297d.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/3f0d4968-8c48-4f6a-ba8c-55fda72dc7e0.png +0 -0
  459. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/3f637e86-6b74-4693-9131-1fe411fc21e5.png +0 -0
  460. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/4096cffa-a889-4622-852e-760fc7022d93.png +0 -0
  461. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/bda40c0d-55a9-41ad-ba8a-e8aafc52608b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/41d5bd29-838b-4365-a2b8-0c7d3e6d8040.png +0 -0
  462. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/ba07fa5e-3451-4520-8b10-0b240e5decec.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/442d7deb-2dec-4b61-afb9-00c21a756724.png +0 -0
  463. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/447d0e44-5d87-4b7c-8e60-edb111fe1639.png +0 -0
  464. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/44ba8515-4a60-42c9-8878-b42e4e34ee15.png +0 -0
  465. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/420e4ff4-82a3-4ea3-98a7-63efe65003a6.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/4575ec70-0147-4287-b2ab-e78e9622072c.png +0 -0
  466. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f1a60528-1f35-451f-92e3-b1d5407e0f4e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/4586b495-4151-434b-ba97-693f31cfe017.png +0 -0
  467. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/4695f96b-c4f5-4bb6-a021-a13b6ceb2883.png +0 -0
  468. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/4883c564-f950-4a29-9f5f-6f924123cd22.png +0 -0
  469. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/edb144e1-7c82-4fcf-b426-c6294ad2112d.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/49dcd6ac-407a-415a-a237-2425a9aed30d.png +0 -0
  470. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/31271771-5149-447c-8fae-ccc308c0a838.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/4b2aa727-048b-4120-81a2-3c11e2492146.png +0 -0
  471. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/35e6ad3a-8020-4619-b8ec-6506a8aa51fc.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/4c315af5-32b9-43a4-8e7d-15cf353bcb03.png +0 -0
  472. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/fe7e4f2b-b795-43b6-bf0a-4e65c9133a40.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/4c9a62ad-7c12-4093-b8c9-b9074112bc41.png +0 -0
  473. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/639465a0-3c63-4307-a72c-4f9e543d2095.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/4d1dc493-9d1a-46a8-86a3-61b6eeb44166.png +0 -0
  474. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/4d78add6-1027-4939-bb51-f99fca7db2ce.png +0 -0
  475. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/50e23c8a-7ba2-4c9c-9cfb-196c260fa1d5.png +0 -0
  476. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/2fd33c51-b3a7-4ffb-9555-d25961186eee.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/52792418-b921-43ce-a359-5fe0c16e78d2.png +0 -0
  477. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/4a9e612b-9e52-4eb5-a851-3e5ad68030e9.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/54bd3138-a66a-45ee-950b-72e2aeb99143.png +0 -0
  478. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/582d36c0-0916-4706-9833-4fbc026701f5.png +0 -0
  479. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/a03e79b3-7f44-4211-b625-2510ba8031bc.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/59c4b7d6-b97d-4ef0-bd8c-fc4a524a2ec8.png +0 -0
  480. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/b332eb23-6653-4d17-b779-2451a3b261ab.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5a31f717-083b-4086-9eaf-ed131982f22f.png +0 -0
  481. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/a1c29e77-138c-4580-a777-666815039524.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5bb9b015-9895-4180-917f-cb01e549e3fd.png +0 -0
  482. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/45ae4d17-1887-4f2e-8cce-e5a4cc42e10b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5c68a4a5-c221-4095-ad60-bc15fd207b8b.png +0 -0
  483. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/bbcb97e2-89b7-4de2-b480-a0442fc33b1e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5ca2f04c-16ce-491a-ac5f-fe1426a3ba7f.png +0 -0
  484. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/8031a52b-afe1-4ebd-9599-1d123bc0e48b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5eba9fd5-edc8-4621-b97f-d2654cf9b64e.png +0 -0
  485. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/5ebcde3b-f0fd-4e5d-b3de-ada8f0b5e03b.png +0 -0
  486. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7971b595-44d3-4ce7-91ae-a8e5a25c543b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5f9b7109-335e-4b5a-b0e9-34590b693976.png +0 -0
  487. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/dff3509c-f0ec-44e2-8e0b-3c6b465d45f3.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/5fbede88-6f22-43c7-a6c5-e457470c30ce.png +0 -0
  488. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/45671af1-d731-4bb1-83f7-c9d23348308f.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/62cecda6-30aa-4e25-b74a-fe7726d3cd75.png +0 -0
  489. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/957dbdc4-8367-4a59-9bfc-d35ea11af9b8.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/65946928-f48f-48fa-b561-f44b8db7f5ef.png +0 -0
  490. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7d4d708f-c629-4f52-a0af-11aee7fcb878.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/66f9d590-ae1d-4c29-8b2b-72be465457ae.png +0 -0
  491. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/6720b6e8-ae80-4cc0-a885-518efe12b707.png +0 -0
  492. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7d5b4d44-cb46-49fb-96be-edaab5396836.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/6763a087-099a-425c-875d-1586f5d3d624.png +0 -0
  493. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f14cc536-f38c-4568-9812-d3ed95e639d3.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/6995892d-5f99-4e40-9849-3f9ef8bf7bdb.png +0 -0
  494. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/6b58d90d-2e5e-4b7f-bc01-941f2633de89.png +0 -0
  495. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/fb529219-fc53-43e1-83ca-2313d1d33636.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/6b6f0f50-086b-498b-89bc-b2abc0e2b723.png +0 -0
  496. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/6d4f414d-ccd8-4a25-aa32-1b77ce0035d6.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/6b7cb3b3-edff-4668-acaa-92cc3fa035f9.png +0 -0
  497. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1607c23d-3ab4-418b-8114-1a3bb782d246.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/6c793707-0535-4146-b53c-3d8c1c0d8c2f.png +0 -0
  498. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/9fd268df-96b7-4b48-a6d1-b5da2161da8e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/6e213f63-8915-4d69-922a-03e5f09c409d.png +0 -0
  499. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/17da97eb-93c5-438f-8688-0be5b0756019.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/71c7edb4-f638-4b87-a066-5ac6d0ceafcc.png +0 -0
  500. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/847cb208-a71c-42e3-97f1-18d4aa886b41.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/7283ab2c-0c5c-4d60-b86f-2e8382a2dca0.png +0 -0
  501. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/04b4ccde-a374-4df3-b0fa-552ae1518348.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/73b64703-2352-4a86-b40f-1e6e416fdd58.png +0 -0
  502. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/74ff07b3-d91c-4579-80cd-379ed7020622.png +0 -0
  503. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/dfe2fc89-eaf7-4027-bb53-dd17a9741e01.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/789ac59e-aeae-4f4b-9086-e075e7a05718.png +0 -0
  504. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/79abd239-5eed-4195-9fa8-d729daa874ca.png +0 -0
  505. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/6abe81b7-1a04-44e9-b390-affe47799c46.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/7ccc662f-6727-49eb-a7de-fe28e14b949f.png +0 -0
  506. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/bc64dd37-48ba-45a5-af6d-457a7fb2c9fd.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/7d7f5644-3de6-48b2-bb12-6ab61657997a.png +0 -0
  507. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/835489e2-b29b-426c-b4c9-3bb9f8eb6195.png +0 -0
  508. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/83d0a033-466c-463a-bb8c-be0f2953e9b2.png +0 -0
  509. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/8424ecdd-8857-4764-9fd0-d4bfa440c128.png +0 -0
  510. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/6e81e54e-b69b-434a-8bbf-6e2551bddeb8.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/8488a18d-98fb-4cb6-bc63-3055e746e3df.png +0 -0
  511. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/334d4915-4600-4c81-bbb0-c52291b7d089.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/84b1a4ed-f9d3-4627-a35a-0f38096b919c.png +0 -0
  512. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/027dd54f-09d8-452d-8eff-66b06aecd264.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/85ea2edc-b508-4b23-bcc8-1277e8cb05b2.png +0 -0
  513. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/ebcaaba7-57f8-4bcb-93da-a288a0fcc95e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/86033fa1-a02d-4307-8d01-ae37a873f650.png +0 -0
  514. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/868b97a9-492e-4712-b47f-82b97495b019.png +0 -0
  515. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1a0f2a10-c23b-47c7-aa7e-89b606f4d8ae.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/88708972-934e-4954-a502-87996823dc16.png +0 -0
  516. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/2b87ed7c-b01b-4ea7-ab34-ec4e37e036c0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/8b4a0233-ace4-4551-931f-ff15e33c1c2c.png +0 -0
  517. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/8c179a21-be6f-4db8-a9b0-9afeb5c36b1c.png +0 -0
  518. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/d11d8839-90ef-433c-8555-fad5478009a0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/8cd7630c-b343-42e1-8e12-bbddcc338e56.png +0 -0
  519. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/8ded6c98-85ea-4858-a66d-4fc8caecb7c5.png +0 -0
  520. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/9340b854-025c-40da-9387-385d38433bef.png +0 -0
  521. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/9f56889b-0251-4ec1-8ccb-5cfd3bddd396.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/947645a0-bce3-4807-8459-9f8cd958f09e.png +0 -0
  522. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/0f67c0a6-45d0-4953-b1a9-b5eb2c916173.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/95eeb164-9d4e-4cf6-b205-a8341a9b6bb0.png +0 -0
  523. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f790aed5-b9f3-4c93-a14f-47629f53052d.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9b4c05d7-868d-49c8-95d4-c0a84d39c025.png +0 -0
  524. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7e64561b-0dab-420a-8f79-45ed6801939b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9c965862-ec78-4b66-b9d8-8e606b502e5d.png +0 -0
  525. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/6d706642-441f-4bcc-b377-0fce3484be22.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9ce1fe0c-4aae-4efe-83fa-bf431ab62ab8.png +0 -0
  526. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/32793e3b-613b-4b6d-bc2e-25f9993f6274.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9db57c4d-d7d8-45a9-8a7c-b68e0bb113c8.png +0 -0
  527. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/608217f6-b880-42ab-9be9-b4d56df87be2.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9dfa0e51-2460-4c3c-8ea3-9fa6bc09c8aa.png +0 -0
  528. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/0de838fb-24e9-4fe8-8e2a-cc26bce6d7d8.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9f617ed4-118a-4ba0-a8bd-fe0c6b21d586.png +0 -0
  529. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/e941ae91-59bf-4a69-945b-1bcd7cf241c6.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/9fa1e7cb-e8b8-43c7-96e7-33ea86c60932.png +0 -0
  530. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
  531. {ksaa-2025.5.16.1/kotonebot/kaa/tasks → ksaa-2025.5.23.0/kotonebot/kaa/sprites}/__init__.py +0 -0
  532. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/36d712ce-9227-4aef-86ee-4f78415b0c80.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a0f13530-e3b0-459e-bcd5-18730e361485.png +0 -0
  533. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/5089ea64-3f32-4520-a252-4ee278815cdd.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a1189ca3-e642-4ed7-b935-40f63da46986.png +0 -0
  534. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/a1df3af1-a3e7-4521-a085-e4dc3cd1cc57.png +0 -0
  535. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/63f28640-766f-4698-b556-f0a0cbac6a1a.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a3cd94c6-978a-4092-bc1f-da669a9472e7.png +0 -0
  536. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
  537. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/b673cc06-14ef-4a22-b484-13a17b01b0d4.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a5b8f5ab-df6c-43db-adf7-5989220e48ca.png +0 -0
  538. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/99e95c59-d5da-448d-b839-51428b2686f0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a642cdd7-4ae6-4b30-be1b-db518541452d.png +0 -0
  539. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/c7a33e9e-2f1c-4171-b1f7-7d7dcc1a7bd3.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a66f022a-87e1-4607-b5f1-8dd4a110f48e.png +0 -0
  540. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/4fca090a-b94a-433a-8438-832a54ff65e8.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a6dedf3b-32fb-4ac0-b035-8466b375710d.png +0 -0
  541. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/a7f5abf1-982f-4a55-8d41-3ad6f56798e0.png +0 -0
  542. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/d2830bf7-e0c4-4d00-868a-6df22bdf6fcd.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a970297a-c7f1-42cd-a0ce-42f20a2c5571.png +0 -0
  543. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/9e110778-1b66-4700-b462-64c1dea368da.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/a9df4cf5-c960-48eb-96c0-2beb97ef0964.png +0 -0
  544. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/a9fcaf04-0c1f-4b0f-bb5b-ede9da96180f.png +0 -0
  545. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/e753b92e-99bf-4d81-9673-92b5f67d129b.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/aad5dc2d-8121-4f5e-8f4e-2a7b5cea8200.png +0 -0
  546. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7b195535-7362-492f-8d87-b8eed15c6fc0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/ac475d95-aa46-49f7-afda-e5bbbd3ef11b.png +0 -0
  547. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/5663551f-5abc-4ef8-a3fd-ba57b20cb35c.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/ad1655b1-93c1-4cee-88ad-83a833dbbfc1.png +0 -0
  548. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/adc533a7-970b-4c5b-a037-2181531a35d6.png +0 -0
  549. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/e97e58cb-3412-4a8c-9a9e-dd45daa5ae02.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/ae4a4dfd-01bc-4a8a-8807-241b0d158f2e.png +0 -0
  550. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/afa06fdc-a345-4384-b25d-b16540830256.png +0 -0
  551. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/b0283997-7931-476d-a92f-d7569f6ea34c.png +0 -0
  552. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/b2af59e9-60e3-4d97-8c72-c7ba092113a3.png +0 -0
  553. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/b2e1bf3c-2c36-4fb5-9db7-c10a29563a37.png +0 -0
  554. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/f89cafb7-657b-4ab4-8917-1964b242ff2e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b343a359-8311-499f-b96d-1a47f07916c3.png +0 -0
  555. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/8f39322e-92d2-4cc6-80ef-341884b0a598.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b38b3a91-49f6-4699-a3f0-dd7de89b2a42.png +0 -0
  556. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/5d912f4e-c319-4d45-85e6-de6e684a6278.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b3e0fc29-1664-4301-a92d-7b3371d566dc.png +0 -0
  557. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/b677c2ba-62da-4afd-8ba7-a9b40362b5bb.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b4569380-d0ba-48e2-b697-2fd0c3169819.png +0 -0
  558. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/b62bf889-da3c-495a-8707-f3bde73efe92.png +0 -0
  559. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/0b0e76ce-60cc-45cc-b204-227e59d39c26.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b62eeea5-48e7-47c3-bf00-355870190b40.png +0 -0
  560. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/b6b94f21-ef4b-4425-9c7e-ca2b574b0add.png +0 -0
  561. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/8e78e1f1-ea2f-4779-a8cd-56336f936c81.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b71b7873-29c1-4d7a-895b-9ca7f5c0313a.png +0 -0
  562. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/d3fa5988-1184-4478-abb9-1c9799bd4100.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b89facd5-f362-4ca8-b6be-b66f53a4081a.png +0 -0
  563. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/a3140a53-ffb4-4094-a39c-240e9fe42308.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/b9350939-5437-49b6-9ef4-eee3b9bd49e2.png +0 -0
  564. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/02e69560-ec42-4453-b771-8600b5726b93.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/baaf7380-6da7-4234-8368-d90f711e9ccd.png +0 -0
  565. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/bab6c393-692c-4681-ac0d-76c0d9dabea6.png +0 -0
  566. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/32a1072b-c359-4dad-80f6-c9ca558e5f99.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/bb681200-a6a1-49f3-a17b-0b8afbeaf69a.png +0 -0
  567. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/bc7155ac-18c9-4335-9ec2-c8762d37a057.png +0 -0
  568. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/c3f536d6-a04a-4651-b3f9-dd2c22593f7f.png +0 -0
  569. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/7383d7d0-8ee2-4413-b590-51cff541cab3.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/c409f292-8a99-4f34-b465-c42d6ed04cc7.png +0 -0
  570. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/2179ff5c-7964-42b1-9a95-c0bd8af1b692.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/c4510fd6-237c-4578-bee4-9e5c73fc5830.png +0 -0
  571. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/c5b7d67e-7260-4f08-a0e9-4d31ce9bbecf.png +0 -0
  572. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/39d57097-6839-4030-bb51-24d6cd880897.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/c5e79a80-3ebd-4786-a8c9-ede13e110a92.png +0 -0
  573. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/c78c38cc-7b61-4dc4-820d-0a5b684ef52e.png +0 -0
  574. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/0bd326fd-fad0-4e6c-957c-da08583ef231.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/c8ec4f98-3025-4366-9221-6fb69fd930d7.png +0 -0
  575. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/c948f136-416f-447e-8152-54a1cd1d1329.png +0 -0
  576. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/c954e153-d3e9-4488-869f-d00cfdfac5ee.png +0 -0
  577. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/d1a8f72b-813b-4d8a-a596-5576758d7fe2.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/cb8414fe-5ee1-4ae2-914c-f19d6271d8a6.png +0 -0
  578. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/cbf4ce9c-f8d8-4fb7-a197-15bb9847df04.png +0 -0
  579. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/89d6407a-982c-4dbc-8dd7-89cf79429eec.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/cc55d4ca-6d9a-40fd-be6b-8776d9381979.png +0 -0
  580. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/cc8a495d-330d-447d-8a80-a8a6ecc409c5.png +0 -0
  581. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/ccbcb114-7f73-43d1-904a-3a7ae660c531.png +0 -0
  582. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/669f9e7c-b665-47a8-b4f5-fb2748bf88af.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/ccd3e45a-67f9-4528-9c1e-3b271681a4f3.png +0 -0
  583. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/ce1d1d6f-38f2-48bf-98bd-6e091c7ca5b8.png +0 -0
  584. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/4dd7db2d-3107-4fc5-8f30-cfa70bc28de1.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/cf43d0d1-beb1-46e8-a0aa-be6d87d381ba.png +0 -0
  585. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/cfc9c8e8-cbe1-49f0-9afa-ead7f9455a2e.png +0 -0
  586. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d15959bf-d07b-4f07-948a-c0aeaf17756a.png +0 -0
  587. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d271a24f-efe8-424d-8fd5-f6b3756ba4ca.png +0 -0
  588. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/9cc7997f-3aeb-4b20-ae42-468ebfbc851e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/d3bbcccd-6b1f-4468-9e1d-78d9e3c5b50d.png +0 -0
  589. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d3cc3323-51af-4882-ae12-49e7384b746d.png +0 -0
  590. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/817c22a3-ecfe-4949-a784-59342e61a880.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/d443e15b-0869-404b-89cc-04a27f8602e6.png +0 -0
  591. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/c15ad104-3814-467c-a211-1e54be35fc66.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/d4d253c9-4fbf-4a62-b6c1-95ed1f35f752.png +0 -0
  592. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d6b64759-26b7-45b1-bf8e-5c0d98611e0d.png +0 -0
  593. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d7667903-7149-4f2f-9c15-d8a4b5f4d347.png +0 -0
  594. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d83f338d-dde3-494b-9bea-cae511e3517c.png +0 -0
  595. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/d982d2b5-4bc0-4ae9-a516-f29c2848d64b.png +0 -0
  596. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/da439e8c-3b74-4371-9657-0736d826c7d1.png +0 -0
  597. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/daf3d823-b7f1-4584-acf3-90b9d880332c.png +0 -0
  598. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/91940a9e-2cfc-423a-86d6-49429c051ea0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/db4308dd-294f-43e8-af8e-744125548b24.png +0 -0
  599. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/db7d3f03-1f7f-43bf-8125-f7c2d345fca2.png +0 -0
  600. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1b8b2a66-fb45-41d7-8441-04425a47bdeb.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/dc8be9f6-a45d-4d7f-bda1-f0cd7d5171cd.png +0 -0
  601. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/de325534-3fd3-480a-9eb8-eb47960a753a.png +0 -0
  602. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1e7924dc-9dd4-4d54-add8-b394c75af1c7.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/de629d6b-4d58-4065-8c21-435b6edcd205.png +0 -0
  603. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/9a5e7bc9-830f-4b01-8f94-6d4f589754c0.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/dede75f5-1b61-44c4-9a4d-5751ac529337.png +0 -0
  604. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/bf158b17-4d93-40f1-b9cf-4ae9226bcfc1.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/df643943-b856-4b6c-b898-bab41cea1cf2.png +0 -0
  605. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/df991b42-ed8e-4f2c-bf0c-aa7522f147b6.png +0 -0
  606. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/a0b83694-4945-4476-aa2e-f268841ac372.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/e11102ca-c2b1-4a7a-8995-0823ad354dbb.png +0 -0
  607. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/e4683def-8d1d-472b-a5ab-bb3885c0c98e.png +0 -0
  608. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/e5e84f9e-28da-4cf4-bcba-c9145fe39b07.png +0 -0
  609. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/60f292d1-6c2d-4cfb-af76-568610817722.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/e82e7eac-f541-42c7-97fc-7e7f5684e862.png +0 -0
  610. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/e88c9ad1-ec37-4fcd-b086-862e1e7ce8fd.png +0 -0
  611. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/e9ee330d-dfca-440e-8b8c-0a3b4e8c8730.png +0 -0
  612. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/ea1ba124-9cb3-4427-969a-bacd47e7d920.png +0 -0
  613. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/eaba6ebe-f0df-4918-aee5-ef4e3ffedcf0.png +0 -0
  614. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/76b0e3b3-3438-4e88-aca8-da18c8e50ddd.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/eb617da8-23bf-462a-98fc-d89e9a3063a2.png +0 -0
  615. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/ee4e512b-4982-49b6-9c71-31984b58e1d0.png +0 -0
  616. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/eef25cf9-afd0-43b1-b9c5-fbd997bd5fe0.png +0 -0
  617. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/096d3df5-2c95-41dd-bcc3-2e3afab47420.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/ef59c2b1-a915-4fe2-85b1-26dfb965a865.png +0 -0
  618. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/9e5c5ffc-450d-4ddc-a4ae-27c33267b056.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/f0e5c302-65c2-4976-b3ca-771b4ddd1922.png +0 -0
  619. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/f1f21925-3e22-4dd1-b53b-bb52bcf26c2b.png +0 -0
  620. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1a668ad4-d6b0-4aed-bb99-8b1ac85659d3.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/f3075a74-6297-418d-918a-896361e23703.png +0 -0
  621. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/5ed9bef4-ab11-4186-9b21-a479eec687ce.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/f34ea72e-ce20-4d30-b332-a2be3cb656ce.png +0 -0
  622. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/16576157-f99b-4a64-b41b-3ee712c2304e.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/f3874241-8c5f-4508-9577-f2966d4557dc.png +0 -0
  623. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/0c3cc689-90f5-4c29-be80-04e2f2ab799a.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/f40db0e0-09a3-48d0-a222-6b23984357a7.png +0 -0
  624. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/f43c313b-8a7b-467b-8442-fc5bcb8b4388.png +0 -0
  625. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/f6ca6bd3-543f-4779-8367-c5c883f04b95.png +0 -0
  626. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/sprites/fad5eec2-5fd5-412f-9abb-987a3087dc54.png +0 -0
  627. /ksaa-2025.5.16.1/kotonebot/kaa/sprites/1e6d734e-7bc5-4f3f-a717-3931f44a7709.png → /ksaa-2025.5.23.0/kotonebot/kaa/sprites/fe4bc939-7302-4b48-a6d3-e4e25b8fe112.png +0 -0
  628. {ksaa-2025.5.16.1/kotonebot/kaa/tasks/actions → ksaa-2025.5.23.0/kotonebot/kaa/tasks}/__init__.py +0 -0
  629. {ksaa-2025.5.16.1/kotonebot/kaa/tasks/daily → ksaa-2025.5.23.0/kotonebot/kaa/tasks/actions}/__init__.py +0 -0
  630. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/actions/commu.py +0 -0
  631. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/actions/loading.py +0 -0
  632. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/actions/scenes.py +0 -0
  633. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/actions/stats.py +0 -0
  634. {ksaa-2025.5.16.1/kotonebot/kaa/tasks/produce → ksaa-2025.5.23.0/kotonebot/kaa/tasks/daily}/__init__.py +0 -0
  635. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/acquire_activity_funds.py +0 -0
  636. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/acquire_presents.py +0 -0
  637. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/assignment.py +0 -0
  638. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/capsule_toys.py +0 -0
  639. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/club_reward.py +0 -0
  640. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/purchase.py +0 -0
  641. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/daily/upgrade_support_card.py +0 -0
  642. {ksaa-2025.5.16.1/kotonebot/primitives → ksaa-2025.5.23.0/kotonebot/kaa/tasks/produce}/__init__.py +0 -0
  643. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/tasks/produce/non_lesson_actions.py +0 -0
  644. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/util/paths.py +0 -0
  645. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/kaa/util/trace.py +0 -0
  646. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/logging/__init__.py +0 -0
  647. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/logging/log.py +0 -0
  648. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/tools/__init__.py +0 -0
  649. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/tools/mirror.py +0 -0
  650. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/__init__.py +0 -0
  651. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/file_host/sensio.py +0 -0
  652. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/file_host/tmp_send.py +0 -0
  653. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/pushkit/__init__.py +0 -0
  654. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/pushkit/image_host.py +0 -0
  655. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/pushkit/protocol.py +0 -0
  656. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/pushkit/wxpusher.py +0 -0
  657. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/kotonebot/ui/user.py +0 -0
  658. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/ksaa.egg-info/dependency_links.txt +0 -0
  659. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/ksaa.egg-info/entry_points.txt +0 -0
  660. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/ksaa.egg-info/requires.txt +0 -0
  661. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/ksaa.egg-info/top_level.txt +0 -0
  662. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/pyproject.toml +0 -0
  663. {ksaa-2025.5.16.1 → ksaa-2025.5.23.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ksaa
3
- Version: 2025.5.16.1
3
+ Version: 2025.5.23.0
4
4
  Summary: Kotones Auto Assistant(kaa) is a script for game 'Gakuen Idol M@ster' that automates the dailies and produces.
5
5
  Requires-Python: ~=3.10
6
6
  Description-Content-Type: text/markdown
@@ -1,5 +1,23 @@
1
1
  # 更新日志
2
2
  ## kaa
3
+ ### v2025.5.23.0
4
+ 脚本:
5
+ * [修复] 修复 OCR 错误导致无法开始 MASTER 培育(#b4b14fa)
6
+ * [修复] 修复标题包含“gakumas”的窗口会被误认为游戏窗口(#ac3be6a)
7
+ * [修复] 修改“技能卡自选强化”的选择技能卡逻辑(#a7b9dac)
8
+ * [新增] 为 DMM 控制适配 HostProtocol(#68bf47d)
9
+ * [重构] 重构竞赛(#dbe9cae)
10
+ * [重构] 使用基础类中的矩形与点重构任务(#b434278)
11
+
12
+ 界面:
13
+ * [新增] 新增命令行参数 --kill-dmm 与 --kill-game(#397c45b)
14
+ * [重构] 重构 save_config() 函数,移除冗长参数(#9a34749)
15
+
16
+ 框架:
17
+ * [新增] 整合雷电模拟器与 MuMu 模拟器控制到 kaa 中(#548ba04)
18
+ * [新增] 新增 Mumu12Host & LeidianHost 模拟器控制(#6b5f972)
19
+ * [新增] 新增一些基础数据类(#2999367)
20
+
3
21
  ### v2025.5.16.1
4
22
  修复了上一个版本打包时缺失了部分文件的问题。
5
23
 
@@ -17,13 +17,11 @@ from .backend.context import (
17
17
  wait
18
18
  )
19
19
  from .util import (
20
- Rect,
21
20
  cropped,
22
21
  AdaptiveWait,
23
22
  Countdown,
24
23
  Interval,
25
24
  until,
26
- crop_rect,
27
25
  )
28
26
  from .backend.color import (
29
27
  hsv_cv2web,
@@ -8,7 +8,7 @@ from typing_extensions import Self
8
8
  from dataclasses import dataclass, field
9
9
  from typing import Any, Literal, Callable, Generic, TypeVar, ParamSpec
10
10
 
11
- from kotonebot.ui import user
11
+ from kotonebot.client import Device
12
12
  from kotonebot.client.host.protocol import Instance
13
13
  from kotonebot.backend.context import init_context, vars
14
14
  from kotonebot.backend.context import task_registry, action_registry, Task, Action
@@ -130,49 +130,34 @@ class KotoneBot:
130
130
  logger.debug(f'Loading sub-module: {name}')
131
131
  try:
132
132
  importlib.import_module(name)
133
- except Exception as e:
133
+ except Exception:
134
134
  logger.error(f'Failed to load sub-module: {name}')
135
- logger.exception(f'Error: ')
135
+ logger.exception('Error: ')
136
136
 
137
137
  logger.info('Tasks and actions initialized.')
138
138
  logger.info(f'{len(task_registry)} task(s) and {len(action_registry)} action(s) loaded.')
139
139
 
140
- def check_backend(self):
141
- from kotonebot.client.host import create_custom
142
- from kotonebot.config.manager import load_config
143
- # HACK: 硬编码
144
- config = load_config(self.config_path, type=self.config_type)
145
- config = config.user_configs[0]
146
- logger.info('Checking backend...')
147
- if config.backend.type == 'custom' and config.backend.check_emulator:
148
- exe = config.backend.emulator_path
149
- if exe is None:
150
- user.error('「检查并启动模拟器」已开启但未配置「模拟器 exe 文件路径」。')
151
- raise ValueError('Emulator executable path is not set.')
152
- if not os.path.exists(exe):
153
- user.error('「模拟器 exe 文件路径」对应的文件不存在!请检查路径是否正确。')
154
- raise FileNotFoundError(f'Emulator executable not found: {exe}')
155
- self.backend_instance = create_custom(
156
- adb_ip=config.backend.adb_ip,
157
- adb_port=config.backend.adb_port,
158
- adb_emulator_name=config.backend.adb_emulator_name,
159
- exe_path=exe,
160
- emulator_args=config.backend.emulator_args
161
- )
162
- if not self.backend_instance.running():
163
- logger.info('Starting custom backend...')
164
- self.backend_instance.start()
165
- logger.info('Waiting for custom backend to be available...')
166
- self.backend_instance.wait_available()
167
- else:
168
- logger.info('Custom backend "%s" already running.', self.backend_instance)
140
+ def _on_create_device(self) -> Device:
141
+ """
142
+ 抽象方法,用于创建 Device 类,在 `run()` 方法执行前会被调用。
143
+
144
+ 所有子类都需要重写该方法。
145
+ """
146
+ raise NotImplementedError('Implement `_create_device` before using Kotonebot.')
147
+
148
+ def _on_after_init_context(self):
149
+ """
150
+ 抽象方法,在 init_context() 被调用后立即执行。
151
+ """
152
+ pass
169
153
 
170
154
  def run(self, tasks: list[Task], *, by_priority: bool = True):
171
155
  """
172
156
  按优先级顺序运行所有任务。
173
157
  """
174
- self.check_backend()
175
- init_context(config_path=self.config_path, config_type=self.config_type)
158
+ d = self._on_create_device()
159
+ init_context(config_path=self.config_path, config_type=self.config_type, target_device=d)
160
+ self._on_after_init_context()
176
161
  vars.interrupted.clear()
177
162
 
178
163
  if by_priority:
@@ -7,8 +7,8 @@ import cv2
7
7
  from cv2.typing import MatLike
8
8
 
9
9
  from .core import unify_image
10
+ from ..primitives import RectTuple, Rect
10
11
  from .debug import result as debug_result, debug, color as debug_color
11
- from ..util import Rect
12
12
 
13
13
  RgbColorTuple = tuple[int, int, int]
14
14
  RgbColorStr = str
@@ -131,6 +131,7 @@ def find(
131
131
  * rgb_dist:
132
132
  计算图片中每个点的颜色到目标颜色的欧氏距离,并以 442 为最大值归一化到 0-1 之间。
133
133
  """
134
+ _rect = rect.xywh if rect else None
134
135
  ret = None
135
136
  ret_similarity = 0
136
137
  found_color = None
@@ -167,8 +168,8 @@ def find(
167
168
  # 寻找结果
168
169
  matches: np.ndarray = dist <= (1 - threshold)
169
170
  # 只在rect范围内搜索
170
- if rect is not None:
171
- x, y, w, h = rect
171
+ if _rect is not None:
172
+ x, y, w, h = _rect
172
173
  search_area = matches[y:y+h, x:x+w]
173
174
  if search_area.any():
174
175
  # 在裁剪区域中找到最小距离的点
@@ -199,8 +200,8 @@ def find(
199
200
  (min(result_image.shape[1], x+20), min(result_image.shape[0], y+20)),
200
201
  (255, 0, 0), 2)
201
202
  # 绘制搜索范围
202
- if rect is not None:
203
- x, y, w, h = rect
203
+ if _rect is not None:
204
+ x, y, w, h = _rect
204
205
  # 红色圈出rect
205
206
  cv2.rectangle(result_image, (x, y), (x+w, y+h), (0, 0, 255), 2)
206
207
  debug_result(
@@ -219,7 +220,7 @@ def color_distance_map(
219
220
  image: MatLike | str,
220
221
  color: RgbColor,
221
222
  *,
222
- rect: Rect | None = None,
223
+ rect: RectTuple | None = None,
223
224
  ) -> np.ndarray:
224
225
  """
225
226
  计算图像中每个像素点到目标颜色的HSL距离,并返回归一化后的距离矩阵。
@@ -266,7 +267,7 @@ def color_distance_map(
266
267
  dist = np.sqrt((h_diff * 2)**2 + l_diff**2 + s_diff**2) / np.sqrt(6)
267
268
  return dist
268
269
 
269
- def _rect_intersection(rect1: Rect, rect2: Rect) -> Rect | None:
270
+ def _rect_intersection(rect1: RectTuple, rect2: RectTuple) -> RectTuple | None:
270
271
  """
271
272
  计算两个矩形的交集区域。
272
273
 
@@ -311,6 +312,7 @@ def find_all(
311
312
  :param max_results: 最大返回结果数量。如果为 None,则返回所有结果。
312
313
  :return: 结果列表。
313
314
  """
315
+ _rect: RectTuple | None = rect.xywh if rect is not None else None
314
316
  # 计算距离矩阵
315
317
  dist = color_distance_map(image, color)
316
318
  # 筛选满足要求的点,二值化
@@ -319,8 +321,8 @@ def find_all(
319
321
  def filter_by_point(binary: np.ndarray, target_color: RgbColor, dist: np.ndarray, rect: Rect | None = None, max_results: int | None = None) -> list[FindColorPointResult]:
320
322
  results = []
321
323
 
322
- if rect is not None:
323
- x, y, w, h = rect
324
+ if _rect is not None:
325
+ x, y, w, h = _rect
324
326
  search_area = binary[y:y+h, x:x+w]
325
327
  local_dist = dist[y:y+h, x:x+w]
326
328
 
@@ -370,8 +372,8 @@ def find_all(
370
372
  assert len(contour_rect) == 4
371
373
 
372
374
  # 如果指定了rect,计算轮廓外接矩形与rect的交集
373
- if rect is not None:
374
- intersection = _rect_intersection(contour_rect, rect)
375
+ if _rect is not None:
376
+ intersection = _rect_intersection(contour_rect, _rect)
375
377
  if intersection is None:
376
378
  continue
377
379
 
@@ -433,8 +435,8 @@ def find_all(
433
435
  (min(result_image.shape[1], x+10), min(result_image.shape[0], y+10)),
434
436
  (255, 0, 0), 1)
435
437
  # 绘制搜索范围
436
- if rect is not None:
437
- x, y, w, h = rect
438
+ if _rect is not None:
439
+ x, y, w, h = _rect
438
440
  cv2.rectangle(result_image, (x, y), (x+w, y+h), (0, 0, 255), 2)
439
441
 
440
442
  debug_result(
@@ -466,10 +468,11 @@ def dominant_color(
466
468
  :param count: 提取的颜色数量。默认为 1。
467
469
  :param rect: 提取范围。如果为 None,则在整个图像中提取。
468
470
  """
471
+ _rect: RectTuple | None = rect.xywh if rect is not None else None
469
472
  # 载入/裁剪图像
470
473
  img = unify_image(image)
471
- if rect is not None:
472
- x, y, w, h = rect
474
+ if _rect is not None:
475
+ x, y, w, h = _rect
473
476
  img = img[y:y+h, x:x+w]
474
477
 
475
478
  pixels = np.float32(img.reshape(-1, 3))
@@ -497,8 +500,8 @@ def dominant_color(
497
500
  if debug.enabled:
498
501
  origin_image = unify_image(image)
499
502
  result_image = origin_image.copy()
500
- if rect is not None:
501
- x, y, w, h = rect
503
+ if _rect is not None:
504
+ x, y, w, h = _rect
502
505
  cv2.rectangle(result_image, (x, y), (x + w, y + h), (0, 0, 255), 2)
503
506
  debug_result(
504
507
  'color.dominant_color',
@@ -25,7 +25,6 @@ import cv2
25
25
  from cv2.typing import MatLike
26
26
 
27
27
  from kotonebot.client.device import Device
28
- from kotonebot.util import Rect
29
28
  import kotonebot.backend.image as raw_image
30
29
  from kotonebot.backend.image import (
31
30
  TemplateMatchResult,
@@ -52,6 +51,7 @@ from kotonebot.backend.core import Image, HintBox
52
51
  from kotonebot.errors import KotonebotWarning
53
52
  from kotonebot.client.factory import DeviceImpl
54
53
  from kotonebot.backend.preprocessor import PreprocessorProtocol
54
+ from kotonebot.primitives import Rect
55
55
 
56
56
  OcrLanguage = Literal['jp', 'en']
57
57
  ScreenshotMode = Literal['auto', 'manual', 'manual-inherit']
@@ -174,11 +174,30 @@ def is_manual_screenshot_mode() -> bool:
174
174
 
175
175
  class ContextGlobalVars:
176
176
  def __init__(self):
177
- self.auto_collect: bool = False
178
- """遇到未知P饮料/卡片时,是否自动截图并收集"""
177
+ self.__vars = dict[str, Any]()
179
178
  self.interrupted: Event = Event()
180
179
  """用户请求中断事件"""
181
180
 
181
+ def __getitem__(self, key: str) -> Any:
182
+ return self.__vars[key]
183
+
184
+ def __setitem__(self, key: str, value: Any) -> None:
185
+ self.__vars[key] = value
186
+
187
+ def __delitem__(self, key: str) -> None:
188
+ del self.__vars[key]
189
+
190
+ def __contains__(self, key: str) -> bool:
191
+ return key in self.__vars
192
+
193
+ def get(self, key: str, default: Any = None) -> Any:
194
+ return self.__vars.get(key, default)
195
+
196
+ def set(self, key: str, value: Any) -> None:
197
+ self.__vars[key] = value
198
+
199
+ def clear(self):
200
+ self.__vars.clear()
182
201
 
183
202
  class ContextStackVars:
184
203
  stack: list['ContextStackVars'] = []
@@ -730,7 +749,13 @@ class ContextDevice(Device):
730
749
 
731
750
 
732
751
  class Context(Generic[T]):
733
- def __init__(self, config_path: str, config_type: Type[T], screenshot_impl: Optional[DeviceImpl] = None):
752
+ def __init__(
753
+ self,
754
+ config_path: str,
755
+ config_type: Type[T],
756
+ screenshot_impl: Optional[DeviceImpl] = None,
757
+ device: Optional[Device] = None
758
+ ):
734
759
  self.__ocr = ContextOcr(self)
735
760
  self.__image = ContextImage(self)
736
761
  self.__color = ContextColor(self)
@@ -744,7 +769,7 @@ class Context(Generic[T]):
744
769
  if screenshot_impl is None:
745
770
  screenshot_impl = self.config.current.backend.screenshot_impl
746
771
  logger.info(f'Using "{screenshot_impl}" as screenshot implementation')
747
- self.__device = ContextDevice(create_device(f'{ip}:{port}', screenshot_impl))
772
+ self.__device = ContextDevice(device or create_device(f'{ip}:{port}', screenshot_impl))
748
773
 
749
774
  def inject(
750
775
  self,
@@ -803,11 +828,12 @@ class Context(Generic[T]):
803
828
  def config(self) -> 'ContextConfig[T]':
804
829
  return self.__config
805
830
 
831
+ @deprecated('使用 Rect 类的实例方法代替')
806
832
  def rect_expand(rect: Rect, left: int = 0, top: int = 0, right: int = 0, bottom: int = 0) -> Rect:
807
833
  """
808
834
  向四个方向扩展矩形区域。
809
835
  """
810
- return (rect[0] - left, rect[1] - top, rect[2] + right + left, rect[3] + bottom + top)
836
+ return Rect(rect.x1 - left, rect.y1 - top, rect.w + right + left, rect.h + bottom + top)
811
837
 
812
838
  def use_screenshot(*args: MatLike | None) -> MatLike:
813
839
  for img in args:
@@ -854,7 +880,8 @@ def init_context(
854
880
  config_path: str = 'config.json',
855
881
  config_type: Type[T] = dict[str, Any],
856
882
  force: bool = False,
857
- screenshot_impl: Optional[DeviceImpl] = None
883
+ screenshot_impl: Optional[DeviceImpl] = None,
884
+ target_device: Device | None = None,
858
885
  ):
859
886
  """
860
887
  初始化 Context 模块。
@@ -867,11 +894,17 @@ def init_context(
867
894
  若为 `True`,则忽略已存在的 Context 实例,并重新创建一个新的实例。
868
895
  :param screenshot_impl: 截图实现。
869
896
  若为 `None`,则使用默认配置文件中指定的截图实现。
897
+ :param target_device: 目标设备
870
898
  """
871
899
  global _c, device, ocr, image, color, vars, debug, config
872
900
  if _c is not None and not force:
873
901
  return
874
- _c = Context(config_path=config_path, config_type=config_type, screenshot_impl=screenshot_impl)
902
+ _c = Context(
903
+ config_path=config_path,
904
+ config_type=config_type,
905
+ screenshot_impl=screenshot_impl,
906
+ device=target_device
907
+ )
875
908
  device._FORWARD_getter = lambda: _c.device # type: ignore
876
909
  ocr._FORWARD_getter = lambda: _c.ocr # type: ignore
877
910
  image._FORWARD_getter = lambda: _c.image # type: ignore
@@ -1,14 +1,13 @@
1
1
  import logging
2
2
  from functools import cache
3
- from typing import Callable, overload, TYPE_CHECKING
3
+ from typing import Callable
4
4
 
5
5
  import cv2
6
6
  from cv2.typing import MatLike
7
7
 
8
8
  from kotonebot.util import cv2_imread
9
+ from kotonebot.primitives import RectTuple, Rect, Point
9
10
  from kotonebot.errors import ResourceFileMissingError
10
- if TYPE_CHECKING:
11
- from kotonebot.util import Rect
12
11
 
13
12
  class Ocr:
14
13
  def __init__(
@@ -67,20 +66,7 @@ class Image:
67
66
  return f'<Image: "{self.name}" at {self.path}>'
68
67
 
69
68
 
70
- class HintBox(tuple[int, int, int, int]):
71
- def __new__(
72
- cls,
73
- x1: int,
74
- y1: int,
75
- x2: int,
76
- y2: int,
77
- *,
78
- source_resolution: tuple[int, int],
79
- ):
80
- w = x2 - x1
81
- h = y2 - y1
82
- return super().__new__(cls, [x1, y1, w, h])
83
-
69
+ class HintBox(Rect):
84
70
  def __init__(
85
71
  self,
86
72
  x1: int,
@@ -92,11 +78,7 @@ class HintBox(tuple[int, int, int, int]):
92
78
  description: str | None = None,
93
79
  source_resolution: tuple[int, int],
94
80
  ):
95
- self.x1 = x1
96
- self.y1 = y1
97
- self.x2 = x2
98
- self.y2 = y2
99
- self.name = name
81
+ super().__init__(x1, y1, x2 - x1, y2 - y1, name=name)
100
82
  self.description = description
101
83
  self.source_resolution = source_resolution
102
84
 
@@ -109,17 +91,12 @@ class HintBox(tuple[int, int, int, int]):
109
91
  return self.y2 - self.y1
110
92
 
111
93
  @property
112
- def rect(self) -> 'Rect':
94
+ def rect(self) -> RectTuple:
113
95
  return self.x1, self.y1, self.width, self.height
114
96
 
115
- class HintPoint(tuple[int, int]):
116
- def __new__(cls, x: int, y: int):
117
- return super().__new__(cls, (x, y))
118
-
97
+ class HintPoint(Point):
119
98
  def __init__(self, x: int, y: int, *, name: str | None = None, description: str | None = None):
120
- self.x = x
121
- self.y = y
122
- self.name = name
99
+ super().__init__(x, y, name=name)
123
100
  self.description = description
124
101
 
125
102
  def __repr__(self) -> str:
@@ -11,7 +11,7 @@ from typing_extensions import deprecated
11
11
  from dataclasses import dataclass
12
12
 
13
13
  from kotonebot.backend.ocr import StringMatchFunction
14
- from kotonebot.util import Rect, is_rect
14
+ from kotonebot.primitives import Rect, is_rect
15
15
 
16
16
  from .core import Image
17
17
 
@@ -1,16 +1,16 @@
1
1
  import os
2
2
  from logging import getLogger
3
- from typing import NamedTuple, Protocol, TypeVar, Sequence, runtime_checkable
3
+ from typing import NamedTuple, Protocol, Sequence, runtime_checkable
4
4
 
5
5
  import cv2
6
6
  import numpy as np
7
- from cv2.typing import MatLike, Size
7
+ from cv2.typing import MatLike, Rect as CvRect
8
8
  from skimage.metrics import structural_similarity
9
9
 
10
10
  from .core import Image, unify_image
11
- from ..util import Rect, Point
12
- from .debug import result as debug_result, debug, img
13
11
  from .preprocessor import PreprocessorProtocol
12
+ from kotonebot.primitives import Point as KbPoint, Rect as KbRect, Size as KbSize
13
+ from .debug import result as debug_result, debug, img
14
14
 
15
15
  logger = getLogger(__name__)
16
16
 
@@ -24,46 +24,46 @@ class TemplateNoMatchError(Exception):
24
24
  @runtime_checkable
25
25
  class ResultProtocol(Protocol):
26
26
  @property
27
- def rect(self) -> Rect:
27
+ def rect(self) -> KbRect:
28
28
  """结果区域。左上角坐标和宽高。"""
29
29
  ...
30
30
 
31
31
 
32
32
  class TemplateMatchResult(NamedTuple):
33
33
  score: float
34
- position: Point
34
+ position: KbPoint
35
35
  """结果位置。左上角坐标。"""
36
- size: Size
36
+ size: KbSize
37
37
  """输入模板的大小。宽高。"""
38
38
 
39
39
  @property
40
- def rect(self) -> Rect:
41
- """结果区域。左上角坐标和宽高。"""
42
- return (self.position[0], self.position[1], self.size[0], self.size[1])
40
+ def rect(self) -> KbRect:
41
+ """结果区域。"""
42
+ return KbRect(self.position[0], self.position[1], self.size[0], self.size[1])
43
43
 
44
44
  @property
45
- def right_bottom(self) -> Point:
45
+ def right_bottom(self) -> KbPoint:
46
46
  """结果右下角坐标。"""
47
- return (self.position[0] + self.size[0], self.position[1] + self.size[1])
47
+ return KbPoint(self.position[0] + self.size[0], self.position[1] + self.size[1])
48
48
 
49
49
  class MultipleTemplateMatchResult(NamedTuple):
50
50
  score: float
51
- position: Point
51
+ position: KbPoint
52
52
  """结果位置。左上角坐标。"""
53
- size: Size
53
+ size: KbSize
54
54
  """命中模板的大小。宽高。"""
55
55
  index: int
56
56
  """命中模板在列表中的索引。"""
57
57
 
58
58
  @property
59
- def rect(self) -> Rect:
59
+ def rect(self) -> KbRect:
60
60
  """结果区域。左上角坐标和宽高。"""
61
- return (self.position[0], self.position[1], self.size[0], self.size[1])
61
+ return KbRect(self.position[0], self.position[1], self.size[0], self.size[1])
62
62
 
63
63
  @property
64
- def right_bottom(self) -> Point:
64
+ def right_bottom(self) -> KbPoint:
65
65
  """结果右下角坐标。"""
66
- return (self.position[0] + self.size[0], self.position[1] + self.size[1])
66
+ return KbPoint(self.position[0] + self.size[0], self.position[1] + self.size[1])
67
67
 
68
68
  @classmethod
69
69
  def from_template_match_result(cls, result: TemplateMatchResult, index: int):
@@ -76,13 +76,13 @@ class MultipleTemplateMatchResult(NamedTuple):
76
76
 
77
77
  class CropResult(NamedTuple):
78
78
  score: float
79
- position: Point
80
- size: Size
79
+ position: KbPoint
80
+ size: KbSize
81
81
  image: MatLike
82
82
 
83
83
  @property
84
- def rect(self) -> Rect:
85
- return (self.position[0], self.position[1], self.size[0], self.size[1])
84
+ def rect(self) -> KbRect:
85
+ return KbRect(self.position[0], self.position[1], self.size[0], self.size[1])
86
86
 
87
87
  def _draw_result(image: MatLike, matches: Sequence[ResultProtocol] | ResultProtocol | None) -> MatLike:
88
88
  """在图像上绘制匹配结果的矩形框。"""
@@ -92,7 +92,7 @@ def _draw_result(image: MatLike, matches: Sequence[ResultProtocol] | ResultProto
92
92
  matches = [matches]
93
93
  result_image = image.copy()
94
94
  for match in matches:
95
- cv2.rectangle(result_image, match.rect, (0, 0, 255), 2)
95
+ cv2.rectangle(result_image, match.rect.xywh, (0, 0, 255), 2)
96
96
  return result_image
97
97
 
98
98
  def _img2str(image: MatLike | str | Image | None) -> str:
@@ -229,8 +229,8 @@ def template_match(
229
229
 
230
230
  matches.append(TemplateMatchResult(
231
231
  score=score,
232
- position=(int(x), int(y)),
233
- size=(int(w), int(h))
232
+ position=KbPoint(int(x), int(y)),
233
+ size=KbSize(int(w), int(h))
234
234
  ))
235
235
 
236
236
  # 如果达到最大结果数,提前结束
@@ -242,7 +242,7 @@ def template_match(
242
242
  def hist_match(
243
243
  image: MatLike | str,
244
244
  template: MatLike | str,
245
- rect: Rect | None = None,
245
+ rect: CvRect | None = None,
246
246
  threshold: float = 0.9,
247
247
  ) -> bool:
248
248
  """
@@ -15,8 +15,9 @@ from thefuzz import fuzz as _fuzz
15
15
  from rapidocr_onnxruntime import RapidOCR
16
16
 
17
17
 
18
+ from ..util import lf_path
19
+ from ..primitives import Rect, Point
18
20
  from .core import HintBox, Image, unify_image
19
- from ..util import Rect, lf_path
20
21
  from .debug import result as debug_result, debug
21
22
 
22
23
  logger = logging.getLogger(__name__)
@@ -65,16 +66,16 @@ class OcrResultList(list[OcrResult]):
65
66
  将所有识别结果合并为一个大结果。
66
67
  """
67
68
  if not self:
68
- return OcrResult('', (0, 0, 0, 0), 0, (0, 0, 0, 0))
69
+ return OcrResult('', Rect(0, 0, 0, 0), 0, Rect(0, 0, 0, 0))
69
70
  text = [r.text for r in self]
70
71
  confidence = sum(r.confidence for r in self) / len(self)
71
72
  points = []
72
73
  for r in self:
73
- points.append((r.rect[0], r.rect[1]))
74
- points.append((r.rect[0] + r.rect[2], r.rect[1]))
75
- points.append((r.rect[0], r.rect[1] + r.rect[3]))
76
- points.append((r.rect[0] + r.rect[2], r.rect[1] + r.rect[3]))
77
- rect = bounding_box(points)
74
+ points.append(Point(r.rect.x1, r.rect.y1))
75
+ points.append(Point(r.rect.x1 + r.rect.w, r.rect.y1))
76
+ points.append(Point(r.rect.x1, r.rect.y1 + r.rect.h))
77
+ points.append(Point(r.rect.x1 + r.rect.w, r.rect.y1 + r.rect.h))
78
+ rect = Rect(xywh=bounding_box(points))
78
79
  text = '\n'.join(text)
79
80
  if remove_newlines:
80
81
  text = text.replace('\n', '')
@@ -245,7 +246,7 @@ def _draw_result(image: 'MatLike', result: list[OcrResult]) -> 'MatLike':
245
246
  for r in result:
246
247
  # 画矩形框
247
248
  draw.rectangle(
248
- [r.rect[0], r.rect[1], r.rect[0] + r.rect[2], r.rect[1] + r.rect[3]],
249
+ [r.rect.x1, r.rect.y1, r.rect.x1 + r.rect.w, r.rect.y1 + r.rect.h],
249
250
  outline=(255, 0, 0),
250
251
  width=2
251
252
  )
@@ -257,8 +258,8 @@ def _draw_result(image: 'MatLike', result: list[OcrResult]) -> 'MatLike':
257
258
  text_height = text_bbox[3] - text_bbox[1]
258
259
 
259
260
  # 计算文本位置
260
- text_x = r.rect[0]
261
- text_y = r.rect[1] - text_height - 5 if r.rect[1] > text_height + 5 else r.rect[1] + r.rect[3] + 5
261
+ text_x = r.rect.x1
262
+ text_y = r.rect.y1 - text_height - 5 if r.rect.y1 > text_height + 5 else r.rect.y1 + r.rect.h + 5
262
263
 
263
264
  # 添加padding
264
265
  padding = 4
@@ -313,7 +314,7 @@ class Ocr:
313
314
  :return: 所有识别结果
314
315
  """
315
316
  if rect is not None:
316
- x, y, w, h = rect
317
+ x, y, w, h = rect.xywh
317
318
  img = img[y:y+h, x:x+w]
318
319
  original_img = img
319
320
  if pad:
@@ -338,8 +339,8 @@ class Ocr:
338
339
  # result_rect (x, y, w, h)
339
340
  if rect is not None:
340
341
  original_rect = (
341
- result_rect[0] + rect[0] - pos_in_padded_img[0],
342
- result_rect[1] + rect[1] - pos_in_padded_img[1],
342
+ result_rect[0] + rect.x1 - pos_in_padded_img[0],
343
+ result_rect[1] + rect.y1 - pos_in_padded_img[1],
343
344
  result_rect[2],
344
345
  result_rect[3]
345
346
  )
@@ -352,8 +353,8 @@ class Ocr:
352
353
  confidence = float(r[2])
353
354
  ret.append(OcrResult(
354
355
  text=text,
355
- rect=result_rect,
356
- original_rect=original_rect,
356
+ rect=Rect(xywh=result_rect),
357
+ original_rect=Rect(xywh=original_rect),
357
358
  confidence=confidence
358
359
  ))
359
360
  ret = OcrResultList(ret)
@@ -392,7 +393,7 @@ class Ocr:
392
393
  """
393
394
  if hint is not None:
394
395
  warnings.warn("使用 `rect` 参数代替")
395
- if ret := self.find(img, text, rect=hint):
396
+ if ret := self.find(img, text, rect=Rect(xywh=hint.rect)):
396
397
  logger.debug(f"find: {text} SUCCESS [hint={hint}]")
397
398
  return ret
398
399
  logger.debug(f"find: {text} FAILED [hint={hint}]")
@@ -430,7 +431,7 @@ class Ocr:
430
431
  # HintBox 处理
431
432
  if hint is not None:
432
433
  warnings.warn("使用 `rect` 参数代替")
433
- result = self.find_all(img, texts, rect=hint, pad=pad)
434
+ result = self.find_all(img, texts, rect=Rect(xywh=hint.rect), pad=pad)
434
435
  if all(result):
435
436
  return result
436
437
 
@@ -1,4 +1,3 @@
1
-
2
1
  from typing import Protocol, Literal
3
2
 
4
3
  import cv2