ksaa 2025.6.23.0__tar.gz → 2025.6.28.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 (699) hide show
  1. {ksaa-2025.6.23.0/ksaa.egg-info → ksaa-2025.6.28.0}/PKG-INFO +4 -1
  2. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/README.md +3 -0
  3. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/WHATS_NEW.md +32 -0
  4. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/context/context.py +0 -2
  5. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/__init__.py +1 -2
  6. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/device.py +155 -4
  7. ksaa-2025.6.28.0/kotonebot/client/host/adb_common.py +94 -0
  8. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/host/custom.py +27 -21
  9. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/host/leidian_host.py +14 -23
  10. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/host/mumu12_host.py +70 -24
  11. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/host/protocol.py +4 -1
  12. ksaa-2025.6.28.0/kotonebot/client/host/windows_common.py +55 -0
  13. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/implements/__init__.py +2 -1
  14. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/implements/adb.py +1 -44
  15. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/implements/adb_raw.py +2 -9
  16. ksaa-2025.6.28.0/kotonebot/client/implements/nemu_ipc/__init__.py +8 -0
  17. ksaa-2025.6.28.0/kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +280 -0
  18. ksaa-2025.6.28.0/kotonebot/client/implements/nemu_ipc/nemu_ipc.py +327 -0
  19. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/implements/remote_windows.py +8 -14
  20. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/implements/uiautomator2.py +5 -16
  21. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/implements/windows.py +5 -36
  22. ksaa-2025.6.28.0/kotonebot/client/registration.py +24 -0
  23. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/config/base_config.py +4 -2
  24. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/debug_entry.py +4 -2
  25. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/errors.py +7 -0
  26. ksaa-2025.6.28.0/kotonebot/kaa/main/dmm_host.py +60 -0
  27. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/main/gr.py +114 -27
  28. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/main/kaa.py +30 -3
  29. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/metadata.py +32 -0
  30. ksaa-2025.6.28.0/kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  31. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/R.py +132 -132
  32. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0/ksaa.egg-info}/PKG-INFO +4 -1
  33. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/ksaa.egg-info/SOURCES.txt +138 -133
  34. ksaa-2025.6.28.0/version +1 -0
  35. ksaa-2025.6.23.0/kotonebot/client/registration.py +0 -89
  36. ksaa-2025.6.23.0/kotonebot/kaa/main/dmm_host.py +0 -79
  37. ksaa-2025.6.23.0/kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  38. ksaa-2025.6.23.0/version +0 -1
  39. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/LICENSE +0 -0
  40. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/MANIFEST.in +0 -0
  41. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/__init__.py +0 -0
  42. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/__init__.py +0 -0
  43. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/bot.py +0 -0
  44. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/color.py +0 -0
  45. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/context/__init__.py +0 -0
  46. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/context/task_action.py +0 -0
  47. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/core.py +0 -0
  48. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/debug/__init__.py +0 -0
  49. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/debug/entry.py +0 -0
  50. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/debug/mock.py +0 -0
  51. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/debug/server.py +0 -0
  52. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/debug/vars.py +0 -0
  53. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/dispatch.py +0 -0
  54. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/flow_controller.py +0 -0
  55. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/image.py +0 -0
  56. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/loop.py +0 -0
  57. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/ocr.py +0 -0
  58. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/backend/preprocessor.py +0 -0
  59. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/fast_screenshot.py +0 -0
  60. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/host/__init__.py +0 -0
  61. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/client/protocol.py +0 -0
  62. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/config/__init__.py +0 -0
  63. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/config/manager.py +0 -0
  64. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/interop/win/__init__.py +0 -0
  65. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/interop/win/reg.py +0 -0
  66. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/__init__.py +0 -0
  67. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/common.py +0 -0
  68. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/db/__init__.py +0 -0
  69. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/db/constants.py +0 -0
  70. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/db/idol_card.py +0 -0
  71. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/db/sqlite.py +0 -0
  72. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/__init__.py +0 -0
  73. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/badge.py +0 -0
  74. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/common.py +0 -0
  75. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/commu_event_buttons.py +0 -0
  76. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/dialog.py +0 -0
  77. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/idols_overview.py +0 -0
  78. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/primary_button.py +0 -0
  79. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/schedule.py +0 -0
  80. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/scrollable.py +0 -0
  81. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/game_ui/toolbar.py +0 -0
  82. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/image_db/__init__.py +0 -0
  83. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/image_db/db.py +0 -0
  84. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/image_db/descriptors/__init__.py +0 -0
  85. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/image_db/descriptors/hist.py +0 -0
  86. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/kaa_context.py +0 -0
  87. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/main/__init__.py +0 -0
  88. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/main/cli.py +0 -0
  89. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/__init__.py +0 -0
  90. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/game.db +0 -0
  91. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/game_ver.txt +0 -0
  92. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-000_0.png +0 -0
  93. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-000_1.png +0 -0
  94. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-001_0.png +0 -0
  95. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-1-001_1.png +0 -0
  96. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-2-000_0.png +0 -0
  97. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-2-000_1.png +0 -0
  98. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-000_0.png +0 -0
  99. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-000_1.png +0 -0
  100. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-001_0.png +0 -0
  101. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-001_1.png +0 -0
  102. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-002_0.png +0 -0
  103. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-002_1.png +0 -0
  104. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-003_0.png +0 -0
  105. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-003_1.png +0 -0
  106. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-005_0.png +0 -0
  107. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-005_1.png +0 -0
  108. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-006_0.png +0 -0
  109. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-006_1.png +0 -0
  110. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-007_0.png +0 -0
  111. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-007_1.png +0 -0
  112. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-008_0.png +0 -0
  113. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-008_1.png +0 -0
  114. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-009_0.png +0 -0
  115. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-009_1.png +0 -0
  116. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-010_0.png +0 -0
  117. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-010_1.png +0 -0
  118. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-011_0.png +0 -0
  119. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-011_1.png +0 -0
  120. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-012_0.png +0 -0
  121. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-012_1.png +0 -0
  122. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-000_0.png +0 -0
  123. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-000_1.png +0 -0
  124. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-001_0.png +0 -0
  125. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-1-001_1.png +0 -0
  126. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-2-000_0.png +0 -0
  127. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-2-000_1.png +0 -0
  128. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-000_0.png +0 -0
  129. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-000_1.png +0 -0
  130. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-001_0.png +0 -0
  131. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-001_1.png +0 -0
  132. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-002_0.png +0 -0
  133. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-002_1.png +0 -0
  134. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-003_0.png +0 -0
  135. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-003_1.png +0 -0
  136. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-005_0.png +0 -0
  137. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-005_1.png +0 -0
  138. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-006_0.png +0 -0
  139. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-006_1.png +0 -0
  140. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-007_0.png +0 -0
  141. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-007_1.png +0 -0
  142. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-008_0.png +0 -0
  143. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-008_1.png +0 -0
  144. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-009_0.png +0 -0
  145. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-009_1.png +0 -0
  146. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-010_0.png +0 -0
  147. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-010_1.png +0 -0
  148. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-011_0.png +0 -0
  149. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-011_1.png +0 -0
  150. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-012_0.png +0 -0
  151. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-012_1.png +0 -0
  152. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  153. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_1.png +0 -0
  154. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-1-000_0.png +0 -0
  155. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-1-000_1.png +0 -0
  156. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-2-000_0.png +0 -0
  157. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-2-000_1.png +0 -0
  158. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-000_0.png +0 -0
  159. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-000_1.png +0 -0
  160. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-000_0.png +0 -0
  161. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-000_1.png +0 -0
  162. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-001_0.png +0 -0
  163. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-1-001_1.png +0 -0
  164. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-2-000_0.png +0 -0
  165. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-2-000_1.png +0 -0
  166. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-000_0.png +0 -0
  167. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-000_1.png +0 -0
  168. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-001_0.png +0 -0
  169. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-001_1.png +0 -0
  170. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-002_0.png +0 -0
  171. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-002_1.png +0 -0
  172. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-003_0.png +0 -0
  173. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-003_1.png +0 -0
  174. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-004_0.png +0 -0
  175. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-004_1.png +0 -0
  176. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-005_0.png +0 -0
  177. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-005_1.png +0 -0
  178. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-006_0.png +0 -0
  179. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-006_1.png +0 -0
  180. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-007_0.png +0 -0
  181. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-007_1.png +0 -0
  182. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-008_0.png +0 -0
  183. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-008_1.png +0 -0
  184. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-009_0.png +0 -0
  185. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-009_1.png +0 -0
  186. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-010_0.png +0 -0
  187. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-010_1.png +0 -0
  188. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-011_0.png +0 -0
  189. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-011_1.png +0 -0
  190. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-012_0.png +0 -0
  191. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-012_1.png +0 -0
  192. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-000_0.png +0 -0
  193. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-000_1.png +0 -0
  194. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-001_0.png +0 -0
  195. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-1-001_1.png +0 -0
  196. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-2-000_0.png +0 -0
  197. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-2-000_1.png +0 -0
  198. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-000_0.png +0 -0
  199. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-000_1.png +0 -0
  200. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-001_0.png +0 -0
  201. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-001_1.png +0 -0
  202. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-002_0.png +0 -0
  203. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-002_1.png +0 -0
  204. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-003_0.png +0 -0
  205. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-003_1.png +0 -0
  206. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-005_0.png +0 -0
  207. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-005_1.png +0 -0
  208. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-006_0.png +0 -0
  209. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-006_1.png +0 -0
  210. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-007_0.png +0 -0
  211. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-007_1.png +0 -0
  212. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-008_0.png +0 -0
  213. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-008_1.png +0 -0
  214. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-009_0.png +0 -0
  215. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-009_1.png +0 -0
  216. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-010_0.png +0 -0
  217. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-010_1.png +0 -0
  218. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-011_0.png +0 -0
  219. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-011_1.png +0 -0
  220. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-012_0.png +0 -0
  221. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-012_1.png +0 -0
  222. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-013_0.png +0 -0
  223. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-013_1.png +0 -0
  224. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-1-000_0.png +0 -0
  225. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-1-000_1.png +0 -0
  226. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-2-000_0.png +0 -0
  227. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-2-000_1.png +0 -0
  228. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-000_0.png +0 -0
  229. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-000_1.png +0 -0
  230. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-001_0.png +0 -0
  231. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-001_1.png +0 -0
  232. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-002_0.png +0 -0
  233. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-002_1.png +0 -0
  234. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-004_0.png +0 -0
  235. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-004_1.png +0 -0
  236. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-005_0.png +0 -0
  237. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-005_1.png +0 -0
  238. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-006_0.png +0 -0
  239. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-006_1.png +0 -0
  240. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-011_0.png +0 -0
  241. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-011_1.png +0 -0
  242. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-013_0.png +0 -0
  243. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-013_1.png +0 -0
  244. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-000_0.png +0 -0
  245. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
  246. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-2-000_0.png +0 -0
  247. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-2-000_1.png +0 -0
  248. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-000_0.png +0 -0
  249. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-000_1.png +0 -0
  250. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-002_0.png +0 -0
  251. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-002_1.png +0 -0
  252. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-003_0.png +0 -0
  253. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-003_1.png +0 -0
  254. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-004_0.png +0 -0
  255. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-004_1.png +0 -0
  256. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-005_0.png +0 -0
  257. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-005_1.png +0 -0
  258. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-006_0.png +0 -0
  259. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-006_1.png +0 -0
  260. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-010_0.png +0 -0
  261. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-010_1.png +0 -0
  262. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-012_0.png +0 -0
  263. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-012_1.png +0 -0
  264. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-000_0.png +0 -0
  265. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-000_1.png +0 -0
  266. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-001_0.png +0 -0
  267. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-001_1.png +0 -0
  268. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-2-000_0.png +0 -0
  269. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-2-000_1.png +0 -0
  270. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-000_0.png +0 -0
  271. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-000_1.png +0 -0
  272. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-001_0.png +0 -0
  273. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-001_1.png +0 -0
  274. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-002_0.png +0 -0
  275. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-002_1.png +0 -0
  276. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-003_0.png +0 -0
  277. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-003_1.png +0 -0
  278. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-004_0.png +0 -0
  279. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-004_1.png +0 -0
  280. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-005_0.png +0 -0
  281. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-005_1.png +0 -0
  282. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-006_0.png +0 -0
  283. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-006_1.png +0 -0
  284. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-007_0.png +0 -0
  285. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-007_1.png +0 -0
  286. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-008_0.png +0 -0
  287. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-008_1.png +0 -0
  288. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-009_0.png +0 -0
  289. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-009_1.png +0 -0
  290. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-010_0.png +0 -0
  291. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-010_1.png +0 -0
  292. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-011_0.png +0 -0
  293. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-011_1.png +0 -0
  294. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-012_0.png +0 -0
  295. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-012_1.png +0 -0
  296. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-000_0.png +0 -0
  297. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-000_1.png +0 -0
  298. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-001_0.png +0 -0
  299. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-001_1.png +0 -0
  300. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-2-000_0.png +0 -0
  301. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-2-000_1.png +0 -0
  302. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-000_0.png +0 -0
  303. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-000_1.png +0 -0
  304. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-001_0.png +0 -0
  305. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-001_1.png +0 -0
  306. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-002_0.png +0 -0
  307. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-002_1.png +0 -0
  308. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-004_0.png +0 -0
  309. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-004_1.png +0 -0
  310. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-005_0.png +0 -0
  311. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-005_1.png +0 -0
  312. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-006_0.png +0 -0
  313. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-006_1.png +0 -0
  314. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-007_0.png +0 -0
  315. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-007_1.png +0 -0
  316. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
  317. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_1.png +0 -0
  318. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-009_0.png +0 -0
  319. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-009_1.png +0 -0
  320. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-010_0.png +0 -0
  321. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-010_1.png +0 -0
  322. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-011_0.png +0 -0
  323. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-011_1.png +0 -0
  324. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-012_0.png +0 -0
  325. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-012_1.png +0 -0
  326. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-000_0.png +0 -0
  327. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-000_1.png +0 -0
  328. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-001_0.png +0 -0
  329. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-001_1.png +0 -0
  330. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-2-000_0.png +0 -0
  331. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-2-000_1.png +0 -0
  332. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-000_0.png +0 -0
  333. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-000_1.png +0 -0
  334. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-001_0.png +0 -0
  335. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-001_1.png +0 -0
  336. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-002_0.png +0 -0
  337. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-002_1.png +0 -0
  338. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-003_0.png +0 -0
  339. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-003_1.png +0 -0
  340. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-004_0.png +0 -0
  341. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-004_1.png +0 -0
  342. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-006_0.png +0 -0
  343. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-006_1.png +0 -0
  344. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-007_0.png +0 -0
  345. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-007_1.png +0 -0
  346. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-008_0.png +0 -0
  347. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-008_1.png +0 -0
  348. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-009_0.png +0 -0
  349. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-009_1.png +0 -0
  350. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-010_0.png +0 -0
  351. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-010_1.png +0 -0
  352. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-011_0.png +0 -0
  353. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-011_1.png +0 -0
  354. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-013_0.png +0 -0
  355. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-013_1.png +0 -0
  356. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-000_0.png +0 -0
  357. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-000_1.png +0 -0
  358. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-001_0.png +0 -0
  359. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-001_1.png +0 -0
  360. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-2-000_0.png +0 -0
  361. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-2-000_1.png +0 -0
  362. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-000_0.png +0 -0
  363. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-000_1.png +0 -0
  364. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-001_0.png +0 -0
  365. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-001_1.png +0 -0
  366. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-002_0.png +0 -0
  367. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-002_1.png +0 -0
  368. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-003_0.png +0 -0
  369. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-003_1.png +0 -0
  370. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-005_0.png +0 -0
  371. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-005_1.png +0 -0
  372. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-006_0.png +0 -0
  373. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-006_1.png +0 -0
  374. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-007_0.png +0 -0
  375. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-007_1.png +0 -0
  376. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-008_0.png +0 -0
  377. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-008_1.png +0 -0
  378. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-009_0.png +0 -0
  379. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-009_1.png +0 -0
  380. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-010_0.png +0 -0
  381. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-010_1.png +0 -0
  382. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-011_0.png +0 -0
  383. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-011_1.png +0 -0
  384. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-012_0.png +0 -0
  385. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-012_1.png +0 -0
  386. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-013_0.png +0 -0
  387. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-013_1.png +0 -0
  388. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-000_0.png +0 -0
  389. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-000_1.png +0 -0
  390. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-001_0.png +0 -0
  391. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-001_1.png +0 -0
  392. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-2-000_0.png +0 -0
  393. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-2-000_1.png +0 -0
  394. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-000_0.png +0 -0
  395. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-000_1.png +0 -0
  396. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-001_0.png +0 -0
  397. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-001_1.png +0 -0
  398. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-002_0.png +0 -0
  399. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-002_1.png +0 -0
  400. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-003_0.png +0 -0
  401. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-003_1.png +0 -0
  402. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-004_0.png +0 -0
  403. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-004_1.png +0 -0
  404. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-006_0.png +0 -0
  405. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-006_1.png +0 -0
  406. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-007_0.png +0 -0
  407. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-007_1.png +0 -0
  408. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-008_0.png +0 -0
  409. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-008_1.png +0 -0
  410. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-009_0.png +0 -0
  411. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-009_1.png +0 -0
  412. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-010_0.png +0 -0
  413. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-010_1.png +0 -0
  414. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-011_0.png +0 -0
  415. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-011_1.png +0 -0
  416. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-012_0.png +0 -0
  417. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-012_1.png +0 -0
  418. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-013_0.png +0 -0
  419. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-013_1.png +0 -0
  420. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/00551158-fee9-483f-b034-549139a96f58.png +0 -0
  421. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/7f6cb60e-6ab3-4db4-86e1-8558250062a4.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/019273c4-22ce-486f-8a7d-dbc78f13dcac.png +0 -0
  422. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/bb0ae68d-44d5-47c6-91dd-a529bc34225b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/03e34ef7-36b5-4ddc-9545-5b70a2eba72e.png +0 -0
  423. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/05890a1b-8764-4e9f-9d21-65d292c22e13.png +0 -0
  424. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/faf360e8-7845-4fcf-b0a6-0f5f93c050f1.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/06ea773b-e2b3-40d4-82f6-b119ce9ca00b.png +0 -0
  425. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/2f74b04f-1992-4584-8dc6-e789b081ddc3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/0769f8f4-1c47-4bad-a783-bba5e20250bf.png +0 -0
  426. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/58a5f51d-d1a3-480b-8dde-ecead34d9f02.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/08946997-4e9e-4242-95e1-e988fa96b919.png +0 -0
  427. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/0949c622-9067-4f0d-bac2-3f938a1d2ed2.png +0 -0
  428. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/0c0627be-4a09-4450-a078-1858d3ace532.png +0 -0
  429. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/694d3a07-9697-4bda-984d-967779d530f7.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/0d60ce10-20ce-4980-8172-b6bac08d6258.png +0 -0
  430. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1b6be6dd-2711-441a-9fa6-3281a6ad10c7.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/0f40352f-6443-406e-8e2c-c40d5cfc6c59.png +0 -0
  431. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/94433cf2-dd04-4b74-ae14-e5e3d945f579.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/0f6d7f89-bdb2-4235-9b6b-e65cb73a4167.png +0 -0
  432. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/0f7d581d-cea3-4039-9205-732e4cd29293.png +0 -0
  433. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/135ee57a-d30d-4ba8-83f0-9f1681a49ff7.png +0 -0
  434. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/9f99b0e9-8cc0-4877-8f8a-d26257ef5386.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/14d09c44-3897-4c81-b615-19c35d0f3793.png +0 -0
  435. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/b5d4265c-82e0-470d-a48e-8aa4edbdef5a.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/15191dec-7e33-4721-8068-15c11978e885.png +0 -0
  436. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/42d8b5dc-ef27-4411-b8b5-d981e562990b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/15f8f31e-65ce-408d-8556-b799bcefc9d4.png +0 -0
  437. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/1652f06a-5417-49ef-8949-4854772d9ab7.png +0 -0
  438. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/16fbc93d-b294-4001-b4e9-ee2af181415f.png +0 -0
  439. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/1926f2f9-4bd7-48eb-9eba-28ec4efb0606.png +0 -0
  440. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/d1699baa-467b-46d1-9276-aae78fe8f589.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/20b01af5-907b-4d49-9f5b-a3700ca9c0c3.png +0 -0
  441. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/23d88465-65d9-4718-8725-8dbf0a98a5a4.png +0 -0
  442. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/faf069e1-f623-47c1-b879-cfa246fbc7df.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/242c088b-bc73-4d11-aa31-ee7c71477fb4.png +0 -0
  443. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/24e99232-9434-457f-a9a0-69dd7ecf675f.png +0 -0
  444. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/25f00ee3-8dfe-42d1-a67e-191fa5c3df4b.png +0 -0
  445. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/278b7d9c-707e-4392-9677-74574b5cdf42.png +0 -0
  446. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/2bc00520-0afe-40e5-8743-d33fc6b2945a.png +0 -0
  447. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/2bd6fe88-99fa-443d-8e42-bb3de5881213.png +0 -0
  448. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/2ededcf5-1d80-4e2a-9c83-2a31998331ce.png +0 -0
  449. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/c25c7ce5-ad8d-4b2c-83eb-ae6d4871a6c3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/2f2a7951-a30a-4835-b9f6-3205cfdd2f05.png +0 -0
  450. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/aefdec38-e3b6-4762-aed8-33107686ddac.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/3031397e-3d12-4f23-8377-006eca5d2627.png +0 -0
  451. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/303cccc1-c674-4d3a-8c89-19ea729fdbef.png +0 -0
  452. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/30a6f399-6999-4f04-bb77-651e0214112f.png +0 -0
  453. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/ed6d3e3d-0f04-4fa4-b0f9-fdbf324649f6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/312dbd82-5457-474a-91ce-511f0e4e9c80.png +0 -0
  454. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/c571e1c0-ff85-4b2e-97ed-97d33b8d92e3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/31851ad1-df39-4a4f-9ae7-19c1d1c6b51a.png +0 -0
  455. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/c484ca57-6b19-46b5-a107-1805a7488d48.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/338b699a-d556-4b80-a577-123442c3db45.png +0 -0
  456. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/920a3974-4875-4d2b-bbac-caa175c03ce0.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/35319890-98e3-4f75-b969-6b8576ef668d.png +0 -0
  457. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f8eec9b2-55ca-4195-b098-a5393d02a98a.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/3536f829-70d3-48f9-8fd4-b65eab7502f3.png +0 -0
  458. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/97adee05-1586-4589-93e6-c6c3a9cdae9d.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/35516b69-a4f4-4ad4-8af4-35043475ee90.png +0 -0
  459. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/c5ea3dfd-6761-466e-b44c-86592ef05323.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/36d71d33-09c9-4be8-b184-ccf40f700333.png +0 -0
  460. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/dbd537c7-d1d3-4d64-9ccd-43dd4519bedd.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/379d5084-637f-45e8-8bd8-789eaa919821.png +0 -0
  461. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/29cb7b0f-5684-4516-8fae-4439f7f28e08.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/3851303a-e3a0-46eb-aa7e-b47fb41946f7.png +0 -0
  462. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/3b473fe6-e147-477f-b088-9b8fb042a4f6.png +0 -0
  463. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/3c8b477a-8eda-407e-9e9f-7540c8808f89.png +0 -0
  464. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/25910d8e-d57f-409f-b0be-ee68c5af4920.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/3d1aa368-e198-478f-a47f-49818efbaec8.png +0 -0
  465. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/cb24b3df-1ec3-4ffd-95f1-ca4b0dd5b7da.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/3f5907a9-7fe4-4f46-8e46-a96ac7fa3923.png +0 -0
  466. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/3f637e86-6b74-4693-9131-1fe411fc21e5.png +0 -0
  467. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/4096cffa-a889-4622-852e-760fc7022d93.png +0 -0
  468. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/c5e16f75-9b5a-4853-a144-275f3d20c186.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/40c0f296-d29e-4e05-aaff-a212339b742e.png +0 -0
  469. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/5d3d61e9-bf13-4668-b0c7-fed730ea2ed6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/43e72796-a644-4d9b-a817-8add011d9a75.png +0 -0
  470. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/447d0e44-5d87-4b7c-8e60-edb111fe1639.png +0 -0
  471. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/44ba8515-4a60-42c9-8878-b42e4e34ee15.png +0 -0
  472. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/4503db6b-7224-4b81-9971-e7cfa56e10f2.png +0 -0
  473. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/4695f96b-c4f5-4bb6-a021-a13b6ceb2883.png +0 -0
  474. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/9c7f1bcc-0bc8-454b-95fb-56a803030771.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/469c2b41-4171-4902-acc5-da0c807886ab.png +0 -0
  475. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/4883c564-f950-4a29-9f5f-6f924123cd22.png +0 -0
  476. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/65d2a5e5-48aa-4390-bb87-bfd8e044e4f6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/497e7930-f423-457a-8168-b1a1532bb1e9.png +0 -0
  477. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/0ad2f603-a3ad-4a92-a398-c411145fd8e9.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/49a43af3-17e3-4434-ba4d-519775ccaea9.png +0 -0
  478. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/bfec58df-2628-454f-92aa-769cad186448.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/49b9a298-e847-4322-99a2-c0588c3542fe.png +0 -0
  479. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a3b15425-0bfd-4668-a3a9-2ab64da8505f.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/4a1902aa-01db-46bb-bea5-88ac62c82562.png +0 -0
  480. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/66172bc0-3869-4a48-a26d-0dc3fa404ab8.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/4a96a728-6303-4ae3-8e0c-9f1e8e5f86a7.png +0 -0
  481. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/8b9c115b-d4ce-492e-88cb-08bd01c43570.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/4b7c4221-a679-47f6-929d-0ef514894b27.png +0 -0
  482. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/0d4b669e-5e43-4458-b65a-5565797335ae.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/4d355e36-9169-43e4-bd58-2836ee3e56e0.png +0 -0
  483. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/4d78add6-1027-4939-bb51-f99fca7db2ce.png +0 -0
  484. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/969eb98c-f761-4007-b8bd-2b3fb8d1f08c.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/4eb97d68-cd47-4100-9c3b-35b5c86b4bdf.png +0 -0
  485. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/50e23c8a-7ba2-4c9c-9cfb-196c260fa1d5.png +0 -0
  486. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/eae83523-e58c-4db9-a356-4335a5da3dc8.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/515a2ff0-36b8-4f2f-9902-e6c1b9796586.png +0 -0
  487. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/9aef1aa8-41e1-42a7-83ad-b4e212ee3976.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/51a3ed29-92b9-4429-9e50-783d1b8dc6a7.png +0 -0
  488. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/83f17b06-2792-4035-bc90-1800279ae131.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/52d3438b-afae-4c7a-abe5-7ed530c7558c.png +0 -0
  489. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/9d5dd50c-3341-41a4-a3dd-ccc00edcf201.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/540ee3b5-ca8f-4091-80a6-ce774d95e5f7.png +0 -0
  490. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/17a8b0a5-5b71-4612-8a68-16c51f03c71b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/54a15298-ecaf-4cc5-b8a2-5b0d8f8add41.png +0 -0
  491. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/7cabdf91-2f15-4991-b165-eb9cdd557af6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/554c0ff6-0a05-419d-85f9-5ced260d0d2e.png +0 -0
  492. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/bed9575d-ccad-4f4e-825e-47b2a9cb0925.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/55e4ef75-ba8e-4230-819c-450cf14b08cd.png +0 -0
  493. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/55f7db71-0a18-4b3d-b847-57959b8d2e32.png +0 -0
  494. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/4e8f3e59-edfa-4523-939d-bc46988fc909.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5824ef5f-6776-402c-b78c-ae79cc4cc878.png +0 -0
  495. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/582d36c0-0916-4706-9833-4fbc026701f5.png +0 -0
  496. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1ccdcacf-4f7d-442c-8e2f-09aa7fe14e56.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5a393483-c631-47fd-805c-c460c23b8f9e.png +0 -0
  497. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/ba759205-ce99-4417-8cab-d32fe55dff4c.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5b75cae4-a853-402c-acec-edbfef94342a.png +0 -0
  498. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a1853223-d6b9-4660-af4e-91e59bdddc3c.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5c9ae62c-488f-4109-a4d2-d2385c32043d.png +0 -0
  499. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f72bd3d6-850d-4190-9775-938f474d263c.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5cdd71be-c8cd-4310-b6f4-5e97ddbeb46e.png +0 -0
  500. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/4eaa5db2-d624-4df4-b2e4-01f72755f1a4.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5d5cb13b-c1fd-4808-b352-b21291a9ff0b.png +0 -0
  501. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/52f7c8b1-af88-43c5-a999-de4da3caa03a.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5d6c4462-3d7c-42eb-ab3e-195ebf845a09.png +0 -0
  502. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/7aa2435c-da90-4d52-b831-88dbec57dde9.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5d94e628-82ff-4531-b70a-b13297491bea.png +0 -0
  503. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/0fbcb3f6-9ca0-43c7-975b-e7c15c26c897.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5dc2dca3-48bd-4eee-af89-1a1d30593bd5.png +0 -0
  504. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/5ebcde3b-f0fd-4e5d-b3de-ada8f0b5e03b.png +0 -0
  505. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f611bbd9-c062-4989-96a4-65ff6c59673c.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/5f0c2a57-efd0-4094-9f71-6f6fe97316f6.png +0 -0
  506. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/d5d854fc-1b87-43d4-b32d-66eccb66fa41.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/610348f2-6262-4cd1-8fc3-e7470f85580c.png +0 -0
  507. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a8b3fdce-9e4a-495c-839e-0142f67fee69.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/613e9b10-b2eb-44ea-b6d9-9310c0e1bdcf.png +0 -0
  508. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/aa3b717f-67f8-445f-a6bf-b89f7200d95b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/618b21ad-ab8b-436a-8eb8-bd320a198c9f.png +0 -0
  509. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/7516c9a1-87ec-4d2f-ac5e-40d1aec27104.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/61a09df6-7443-436c-9ef0-1d5a1cae1509.png +0 -0
  510. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/0235ae3d-1741-4a81-8053-f60bc395ee85.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/64be274e-e8ad-4938-84c1-5d8aabcd10d8.png +0 -0
  511. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/b01c25d2-21bf-4db9-b5b2-ec35817f1b04.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/671b4a55-023a-434d-b29a-e844fe528e6b.png +0 -0
  512. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/6720b6e8-ae80-4cc0-a885-518efe12b707.png +0 -0
  513. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/6b58d90d-2e5e-4b7f-bc01-941f2633de89.png +0 -0
  514. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/6cd80be8-c9b3-4ba5-bf17-3ffc9b000743.png +0 -0
  515. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/302fde7d-de85-44c7-ba57-fe4b5f6db5fa.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/6e5e9cf9-80b0-4241-a222-ff50dbd89a0c.png +0 -0
  516. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/080b3cf5-ce35-4382-9bfa-d6a12efb09b3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/6ef59649-bbb3-42b6-a6b0-eac4f35a3da4.png +0 -0
  517. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/74ec3510-583d-4a76-ac69-38480fbf1387.png +0 -0
  518. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/74ff07b3-d91c-4579-80cd-379ed7020622.png +0 -0
  519. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/15465879-eb84-4ca6-ae0f-d3c5ac71e723.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/75a2093d-8743-427e-8d24-ae9a69fa14c1.png +0 -0
  520. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/e5eeb9af-8003-4981-bf56-2e32e76cec5d.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/76bde19a-4b1b-4e52-86d9-f56be7529c71.png +0 -0
  521. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1bb00a74-2fdc-4973-84ae-dc1edee15f81.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/77d06f4d-8214-4306-9dc5-035c720f7256.png +0 -0
  522. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/efb28e1d-7b52-4e20-aec5-117c798b7fbe.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/78b642d3-9a2c-4c17-8872-3cc78211f4a0.png +0 -0
  523. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/79abd239-5eed-4195-9fa8-d729daa874ca.png +0 -0
  524. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/cdbbb5ba-5117-488a-8172-48cfc92c14c6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/7a9d1c39-b306-4cb0-be2f-7a5963099949.png +0 -0
  525. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f6bfbf6a-6e53-4563-9345-3f3756d6ea9a.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/7ddda828-c8b0-4331-864f-99b85b7c5557.png +0 -0
  526. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/b1e7f24e-f246-406e-9073-58e2f3e4e819.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/81399fd9-f254-4d0e-9775-ad451c237a4e.png +0 -0
  527. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/5152e3fa-079c-4592-8df7-656101694df8.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/81526e97-1b8d-433f-a5c9-907e4e8c85cd.png +0 -0
  528. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/09fb5e41-6caa-4246-a415-8317b12d8d81.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/818e2370-8fb9-4e6c-ab78-58e86d6525b5.png +0 -0
  529. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/835489e2-b29b-426c-b4c9-3bb9f8eb6195.png +0 -0
  530. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/83d0a033-466c-463a-bb8c-be0f2953e9b2.png +0 -0
  531. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/8424ecdd-8857-4764-9fd0-d4bfa440c128.png +0 -0
  532. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/0a6c6b1e-7a80-428e-a483-1858bfb8ac59.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/8431cc52-0041-4425-808c-dcd4d196506c.png +0 -0
  533. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/6aa34982-e7ab-4001-808f-8c5cf370d087.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/85a49ff3-6075-4797-8b7f-35851a843698.png +0 -0
  534. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f528ea0e-1e55-4e41-844f-bb1db9185ef8.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/86062e91-d6c1-44cf-9f8c-26a8b9dd8686.png +0 -0
  535. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/26580772-ff20-4dcf-8496-f939e0f2890d.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/860c3d98-e263-482f-95fb-4fc9c472e8b8.png +0 -0
  536. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a1bba683-a740-4eaf-8c37-3b1042b963b0.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/8669ce44-dec7-47c2-aafd-3f2fbfd1d083.png +0 -0
  537. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/868b97a9-492e-4712-b47f-82b97495b019.png +0 -0
  538. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/8e48af2b-c083-4480-a27c-c59c31a7ede1.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/86b15801-c932-4034-bed8-fd76b0f65916.png +0 -0
  539. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/3cc9685d-6347-4114-9d39-7683c2dc9df6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/893b015d-6894-4e74-880e-d22859a25662.png +0 -0
  540. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/66678caa-7b25-4ff7-8c3a-017f67279349.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/8c0fa5fa-cebb-4ae7-bd1c-b542c9cbf694.png +0 -0
  541. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/8c179a21-be6f-4db8-a9b0-9afeb5c36b1c.png +0 -0
  542. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/8ded6c98-85ea-4858-a66d-4fc8caecb7c5.png +0 -0
  543. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/e9c45a73-2011-4584-87b7-c4e566eba87f.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/913a1d17-54fe-4c8f-ac50-ef7f39600b86.png +0 -0
  544. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/9340b854-025c-40da-9387-385d38433bef.png +0 -0
  545. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/d60a395b-d907-416a-b091-36bfee4948b3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/964c6b90-f526-4199-9523-d8124373a56b.png +0 -0
  546. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/69b022a8-e42f-4985-bd16-b4a530ad8a20.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/97c281a9-ebb0-4f54-b644-b7ed7dd65f81.png +0 -0
  547. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/b65724b4-ec8f-48a9-9ab2-e7ce5b8f35b2.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/998fc84a-af71-4fa5-8aa4-e0bfeb9c53ea.png +0 -0
  548. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/b8aada91-eedd-4c53-99f3-f903d547235e.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/9cbf7f6e-fe77-463b-9c60-495dc823510a.png +0 -0
  549. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/038c69e6-7cb0-4c8d-99da-b537e48a86b7.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/9ce7d48e-295d-47b2-96eb-f3ce697c1b37.png +0 -0
  550. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/cf66ae12-48bc-4512-a988-0e5de337c76d.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/9dcca89b-c92b-4708-8f19-facd40d09a65.png +0 -0
  551. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/264e056f-3bcc-4b16-94d4-f767c78ab6f5.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/9e369992-ea8c-4c15-88d3-1344319978b0.png +0 -0
  552. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1aaceb21-dc5c-4a58-96d3-d2c66b2fb357.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/9f9003ba-468f-406f-a82f-1b7a23ef347c.png +0 -0
  553. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
  554. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/__init__.py +0 -0
  555. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/a0bd6a5f-784d-4f0a-9d66-10f4b80c8d3e.png +0 -0
  556. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/a1df3af1-a3e7-4521-a085-e4dc3cd1cc57.png +0 -0
  557. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1639278d-67e0-4452-a2b5-ec4cf4011f42.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/a2bf4e11-fbc3-4172-bc0b-b16f8f59e68c.png +0 -0
  558. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
  559. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/4a310bdd-0a7d-4669-9d57-6ae69bc8f022.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/a546e254-0490-43df-a291-a9a5c2b4c34a.png +0 -0
  560. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/a7f5abf1-982f-4a55-8d41-3ad6f56798e0.png +0 -0
  561. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/a9fcaf04-0c1f-4b0f-bb5b-ede9da96180f.png +0 -0
  562. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/abcc709c-1f4d-4832-a063-eafbad94ac31.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/aacd229c-d307-4a20-a388-84d8f4afb4a5.png +0 -0
  563. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/adc533a7-970b-4c5b-a037-2181531a35d6.png +0 -0
  564. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/afa06fdc-a345-4384-b25d-b16540830256.png +0 -0
  565. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/84bb4986-0295-4a45-9486-86e31fcdf1f1.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/b003bef5-53db-4032-b1bd-d5075de365a8.png +0 -0
  566. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/b0283997-7931-476d-a92f-d7569f6ea34c.png +0 -0
  567. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/b2af59e9-60e3-4d97-8c72-c7ba092113a3.png +0 -0
  568. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/b2e1bf3c-2c36-4fb5-9db7-c10a29563a37.png +0 -0
  569. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/b62bf889-da3c-495a-8707-f3bde73efe92.png +0 -0
  570. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/d4c47cc7-5b3e-4c3e-8e80-78cb94e7eed9.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/b641a122-4734-43e1-b22f-468464a0cff1.png +0 -0
  571. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/b6b94f21-ef4b-4425-9c7e-ca2b574b0add.png +0 -0
  572. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/bab6c393-692c-4681-ac0d-76c0d9dabea6.png +0 -0
  573. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/bc7155ac-18c9-4335-9ec2-c8762d37a057.png +0 -0
  574. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/83acbca8-3567-4262-a1e7-50f158348d45.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/bc7303f3-43e9-4ece-9206-5f9c779b813b.png +0 -0
  575. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/534d1310-3503-46d3-8ecd-426d9bcf183e.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/bd7a6754-fffc-4315-987f-5ba32d95b697.png +0 -0
  576. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/8f1e5644-1079-44b1-9d44-97bae3817bc5.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/c39f2006-442b-4ab7-99bb-3dfa0673f05d.png +0 -0
  577. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/c3f536d6-a04a-4651-b3f9-dd2c22593f7f.png +0 -0
  578. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/c5b7d67e-7260-4f08-a0e9-4d31ce9bbecf.png +0 -0
  579. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f025027f-daa0-4943-8395-5d7d44cc7f15.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/c70f4634-6821-4480-a615-b5f9cdc578c1.png +0 -0
  580. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a7da51c2-8444-4770-a16b-b6543e40197f.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/c774098e-d782-455c-80a9-5bad3713129d.png +0 -0
  581. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/c78c38cc-7b61-4dc4-820d-0a5b684ef52e.png +0 -0
  582. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/60be53a6-98e9-4fc6-9285-85506dc0e335.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/c7e3736a-0e0f-474a-9386-f58292a45b92.png +0 -0
  583. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/d3e6e2e9-c5b5-463f-98f4-de72c9320d9d.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/c90b582c-8570-48b4-98c0-62d5b067ca2c.png +0 -0
  584. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/c948f136-416f-447e-8152-54a1cd1d1329.png +0 -0
  585. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/c954e153-d3e9-4488-869f-d00cfdfac5ee.png +0 -0
  586. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/5868ebfb-5e61-4ac6-b270-acb1e89b738f.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/c9d3699b-c8b1-4294-9b48-103df4ab6c65.png +0 -0
  587. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/cbf4ce9c-f8d8-4fb7-a197-15bb9847df04.png +0 -0
  588. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/cc8a495d-330d-447d-8a80-a8a6ecc409c5.png +0 -0
  589. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/17414e9e-b046-49e0-9596-cad1f4673a9e.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/cc9483c3-c895-4dcc-b3f2-0934ba1ad42e.png +0 -0
  590. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/ccbcb114-7f73-43d1-904a-3a7ae660c531.png +0 -0
  591. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/ce1d1d6f-38f2-48bf-98bd-6e091c7ca5b8.png +0 -0
  592. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/dad4ff8c-07f4-4b07-abd3-5d02bbcc4562.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/cec49286-3d48-4fe0-8911-6a1b17d1ac20.png +0 -0
  593. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/7b7dad18-a838-4267-b3c7-6ab43b8361f0.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/cef78712-d9ae-4d6e-8d7d-d047d48fbb98.png +0 -0
  594. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/cfc9c8e8-cbe1-49f0-9afa-ead7f9455a2e.png +0 -0
  595. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/ad172750-d1a6-4a25-8ce8-9483f4b5affb.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/d06fd859-4678-4593-b096-c86b38810cb7.png +0 -0
  596. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d15959bf-d07b-4f07-948a-c0aeaf17756a.png +0 -0
  597. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/448ea37d-a10d-4102-ac9f-a58403ee8914.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/d19c37ff-d5c1-4316-8424-e69ccb5c2523.png +0 -0
  598. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/ca2adfb8-1e88-4a31-b3cc-1f70568ce4a3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/d26b60f7-d15c-4563-bedc-dd6e7e4078b2.png +0 -0
  599. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a1cf80ee-64bf-4d54-a7db-ffadf3c97026.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/d26bf52c-cb1b-4ebf-9c03-ff3f2d245959.png +0 -0
  600. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d271a24f-efe8-424d-8fd5-f6b3756ba4ca.png +0 -0
  601. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d3424d31-0502-4623-996e-f0194e5085ce.png +0 -0
  602. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d3cc3323-51af-4882-ae12-49e7384b746d.png +0 -0
  603. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/2dd34393-ee6f-4b19-8a9c-76556d1bd7d7.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/d5fd6c73-4ad8-47b5-89be-c7b137a9950f.png +0 -0
  604. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/4b20b364-5f5f-4b34-960e-b0cfd08b1662.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/d696062b-9b58-4af1-835e-2cf5a0a0fbeb.png +0 -0
  605. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d6b64759-26b7-45b1-bf8e-5c0d98611e0d.png +0 -0
  606. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d7667903-7149-4f2f-9c15-d8a4b5f4d347.png +0 -0
  607. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d83f338d-dde3-494b-9bea-cae511e3517c.png +0 -0
  608. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/d982d2b5-4bc0-4ae9-a516-f29c2848d64b.png +0 -0
  609. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/da439e8c-3b74-4371-9657-0736d826c7d1.png +0 -0
  610. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/e1e0d751-9006-4fa4-a933-4c0dc5e1f3d2.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/da7a329e-339e-4ee7-8775-bca505a1980d.png +0 -0
  611. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/daf3d823-b7f1-4584-acf3-90b9d880332c.png +0 -0
  612. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/db7d3f03-1f7f-43bf-8125-f7c2d345fca2.png +0 -0
  613. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/de325534-3fd3-480a-9eb8-eb47960a753a.png +0 -0
  614. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/dde03640-6c3a-4b13-a783-f672816bfec4.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/dedb8499-5881-4add-914f-ff0049285dae.png +0 -0
  615. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/83cf48ba-d1af-4674-a52e-6bb80a626db7.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/dedea21b-f21d-4621-a213-70ad03faec58.png +0 -0
  616. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/df991b42-ed8e-4f2c-bf0c-aa7522f147b6.png +0 -0
  617. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/e394ff91-09d3-41e1-bbf5-bc42a71a623b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/dff74cce-ba2d-44aa-b924-183259080a32.png +0 -0
  618. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/f12c2b0b-8273-4197-a8c6-2a8ef2788a9b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e0246b0d-f0cf-49d4-8423-7da46e75a575.png +0 -0
  619. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1f2981d8-5eb6-4332-aa9b-17f4db2d4163.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e1b6b32b-c797-4f1d-aa2b-e7320083a9a6.png +0 -0
  620. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/6114d53e-dd69-4cee-82a7-7e43b338ff8d.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e23e3f19-03f6-4507-9128-115191272b90.png +0 -0
  621. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/90def878-cd6e-46e5-9dc4-9c92dd904b80.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e2eb3bae-6451-40b9-bbff-90f11dca1904.png +0 -0
  622. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/e4683def-8d1d-472b-a5ab-bb3885c0c98e.png +0 -0
  623. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1d5f7454-672d-4e87-a368-ec4bb32f9b1f.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e46e1b6d-6702-46bf-a07e-aec8d183453f.png +0 -0
  624. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/e5259dfb-3a49-4cfc-9f89-b42958ce6eec.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e5297036-9934-44a4-a761-a6a49ae06e3e.png +0 -0
  625. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/e5e84f9e-28da-4cf4-bcba-c9145fe39b07.png +0 -0
  626. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/e6b45405-cd9f-4c6e-a9f1-6ec953747c65.png +0 -0
  627. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/2d145ade-b926-4276-b872-baec4ef78308.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/e7da5988-0e83-44ad-888b-246365473f9e.png +0 -0
  628. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/e88c9ad1-ec37-4fcd-b086-862e1e7ce8fd.png +0 -0
  629. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/e9ee330d-dfca-440e-8b8c-0a3b4e8c8730.png +0 -0
  630. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/ea1ba124-9cb3-4427-969a-bacd47e7d920.png +0 -0
  631. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/eaba6ebe-f0df-4918-aee5-ef4e3ffedcf0.png +0 -0
  632. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/c3ec61aa-f62e-46fd-b359-48864ea7a150.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/eb8d208a-dbcc-43ca-a8ac-098e1005ebfa.png +0 -0
  633. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/9cd7e1f1-13c4-471e-abee-223ffd9126cb.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/ebe4ce64-98a9-40f2-9fde-3d5cdae673c7.png +0 -0
  634. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/ee4e512b-4982-49b6-9c71-31984b58e1d0.png +0 -0
  635. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/eef25cf9-afd0-43b1-b9c5-fbd997bd5fe0.png +0 -0
  636. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/5ee8e9a8-b133-4ab7-a52c-e7e4e1d1ce7b.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/ef2ad3df-3f89-4a48-8fc3-c70a8adc1044.png +0 -0
  637. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/68838f92-5916-424e-a37e-47e0b3834eb3.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/f05e410d-15b8-4831-bcc1-4cd8af07c882.png +0 -0
  638. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/f1f21925-3e22-4dd1-b53b-bb52bcf26c2b.png +0 -0
  639. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/2e00ac54-d23a-4d51-82f2-829c012552a6.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/f1fac13a-84f3-42bd-9b52-e0ba90bc5255.png +0 -0
  640. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/f43c313b-8a7b-467b-8442-fc5bcb8b4388.png +0 -0
  641. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/f5c16d2f-ebc5-4617-9b96-971696af7c52.png +0 -0
  642. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/f6ca6bd3-543f-4779-8367-c5c883f04b95.png +0 -0
  643. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/5dd0cc39-4102-4f0f-8ad3-342bbf825977.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/f7c34ab6-c165-48b7-ad5a-0b60613ce1bc.png +0 -0
  644. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/dfb14c98-f672-4906-80bd-d2a18bdd62cd.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/fa80b14e-953f-44bd-a4ad-99aefd276fd7.png +0 -0
  645. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/sprites/fad5eec2-5fd5-412f-9abb-987a3087dc54.png +0 -0
  646. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/a4075991-98da-4d06-bcde-28054cd124d2.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/fe35655e-701b-4081-8df8-c17a7252acef.png +0 -0
  647. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/df97421e-4b74-430e-b3d1-ed9bac6918a7.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/fe853ac7-934e-4b4a-bcc7-b986e057dfcf.png +0 -0
  648. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/1aae0ab3-f619-47e0-8bf6-3d3791f7d445.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/ffda716c-2903-4ec7-8c59-aab5b8ad10bb.png +0 -0
  649. /ksaa-2025.6.23.0/kotonebot/kaa/sprites/6156116e-56dd-4b41-a6de-ccec55dab7c8.png → /ksaa-2025.6.28.0/kotonebot/kaa/sprites/fff33200-c947-49f2-ab86-3ac98937fa36.png +0 -0
  650. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/__init__.py +0 -0
  651. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/actions/__init__.py +0 -0
  652. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/actions/commu.py +0 -0
  653. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/actions/loading.py +0 -0
  654. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/actions/scenes.py +0 -0
  655. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/actions/stats.py +0 -0
  656. {ksaa-2025.6.23.0/kotonebot/kaa → ksaa-2025.6.28.0/kotonebot/kaa/tasks}/clear_logs.py +0 -0
  657. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/__init__.py +0 -0
  658. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/acquire_activity_funds.py +0 -0
  659. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/acquire_presents.py +0 -0
  660. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/assignment.py +0 -0
  661. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/capsule_toys.py +0 -0
  662. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/club_reward.py +0 -0
  663. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/contest.py +0 -0
  664. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/mission_reward.py +0 -0
  665. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/purchase.py +0 -0
  666. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/daily/upgrade_support_card.py +0 -0
  667. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/end_game.py +0 -0
  668. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/__init__.py +0 -0
  669. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/cards.py +0 -0
  670. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/common.py +0 -0
  671. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/in_purodyuusu.py +0 -0
  672. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/non_lesson_actions.py +0 -0
  673. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/p_drink.py +0 -0
  674. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/produce/produce.py +0 -0
  675. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/tasks/start_game.py +0 -0
  676. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/util/paths.py +0 -0
  677. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/kaa/util/trace.py +0 -0
  678. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/logging/__init__.py +0 -0
  679. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/logging/log.py +0 -0
  680. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/primitives/__init__.py +0 -0
  681. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/primitives/geometry.py +0 -0
  682. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/primitives/visual.py +0 -0
  683. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/tools/__init__.py +0 -0
  684. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/tools/mirror.py +0 -0
  685. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/__init__.py +0 -0
  686. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/file_host/sensio.py +0 -0
  687. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/file_host/tmp_send.py +0 -0
  688. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/pushkit/__init__.py +0 -0
  689. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/pushkit/image_host.py +0 -0
  690. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/pushkit/protocol.py +0 -0
  691. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/pushkit/wxpusher.py +0 -0
  692. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/ui/user.py +0 -0
  693. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/kotonebot/util.py +0 -0
  694. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/ksaa.egg-info/dependency_links.txt +0 -0
  695. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/ksaa.egg-info/entry_points.txt +0 -0
  696. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/ksaa.egg-info/requires.txt +0 -0
  697. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/ksaa.egg-info/top_level.txt +0 -0
  698. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/pyproject.toml +0 -0
  699. {ksaa-2025.6.23.0 → ksaa-2025.6.28.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ksaa
3
- Version: 2025.6.23.0
3
+ Version: 2025.6.28.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
@@ -106,6 +106,9 @@ kaa 的开发主要用到了以下开源项目:
106
106
  ](https://github.com/AllenHeartcore/GkmasObjectManager):用于提取游戏图像资源,以 GPLv3 协议开源。
107
107
  * [gakumasu-diff](https://github.com/vertesan/gakumasu-diff):游戏数据。
108
108
 
109
+ kaa 的开发还参考了以下开源项目:
110
+ * [EmulatorExtras](https://github.com/MaaXYZ/EmulatorExtras):MuMu 与雷电模拟器的截图与控制接口定义。
111
+ * [blue_archive_auto_script](https://github.com/pur1fying/blue_archive_auto_script):MuMu 与雷电模拟器的截图与控制接口的 Python 实现,以及各模拟器的控制实现。
109
112
 
110
113
  ## 免责声明
111
114
  **请在使用本项目前仔细阅读以下内容。使用本脚本将带来包括但不限于账号被封禁的风险。**
@@ -76,6 +76,9 @@ kaa 的开发主要用到了以下开源项目:
76
76
  ](https://github.com/AllenHeartcore/GkmasObjectManager):用于提取游戏图像资源,以 GPLv3 协议开源。
77
77
  * [gakumasu-diff](https://github.com/vertesan/gakumasu-diff):游戏数据。
78
78
 
79
+ kaa 的开发还参考了以下开源项目:
80
+ * [EmulatorExtras](https://github.com/MaaXYZ/EmulatorExtras):MuMu 与雷电模拟器的截图与控制接口定义。
81
+ * [blue_archive_auto_script](https://github.com/pur1fying/blue_archive_auto_script):MuMu 与雷电模拟器的截图与控制接口的 Python 实现,以及各模拟器的控制实现。
79
82
 
80
83
  ## 免责声明
81
84
  **请在使用本项目前仔细阅读以下内容。使用本脚本将带来包括但不限于账号被封禁的风险。**
@@ -1,5 +1,37 @@
1
1
  # 更新日志
2
2
  ## kaa
3
+ ### v2025.6.28.0
4
+ 脚本:
5
+ * [修复] 修正 debug_entry 脚本路径处理逻辑(#b53a055)
6
+ * [修复] 修复清理日志功能失效的问题(#ad5c7b7)
7
+ * [修复] 修复 debug_entry 执行的脚本没有正确输出日志的问题(#3ceae4c)
8
+
9
+ 界面:
10
+ * [新增] 优化日志导出功能(#9574d20)
11
+ * [新增] 为 UI 增加部分配置有效性验证(#08a7e71)
12
+ * [新增] 加入调试模式警告提示(#a01c37d)
13
+ * [新增] 画面 Tab 刷新机制由自动改为手动(#2469fc0)
14
+ * [新增] MuMu12 保活模式可选开启(#71170e5)
15
+
16
+ 框架:
17
+ * [修复] 修复 Device 中缩放与截图 Hook 的处理顺序不正确问题
18
+ * [修复] 修复 NemuIpc 在多显示器下的坐标系问题(#87da282)
19
+ * [修复] 修复当目标分辨率与实际分辨率旋转不同时截图会强制拉伸的问题(#e62e65d)
20
+ * [修复] 缩放处理支持自动识别旋转(#677932a)
21
+ * [修复] 修复 NemuIpc 截图无法响应屏幕旋转导致的分辨率变化(#105a894)
22
+ * [新增] NemuIpcImpl 获取显示器 ID 支持自动重试(#0c94acf)
23
+ * [新增] 支持 MuMu12 后台保活模式(#e232826)
24
+ * [新增] 引入 Nemu 截图与控制方式(#f0b9181)
25
+ * [新增] 移除 WindowsImpl 中的分辨率缩放(#415a8df)
26
+ * [新增] 支持等比例分辨率缩放(#bb7f603)
27
+ * [重构] 组装 Device 改用 recipe 方案(#f01e022)
28
+ * [重构] 将传递的 MuMu 路径从 shell 目录改为 MuMu 根目录(#784b8ed)
29
+
30
+ 其他:
31
+ * [其他] HsvRangeTool 支持从剪贴板粘贴图片(#1397587)
32
+ * [其他] VSCode 新增不初始化 context 的启动配置(#0718678)
33
+ * [其他] 调整部分日志输出格式(#bcd8cf2)
34
+
3
35
  ### v2025.6.23.0
4
36
  脚本:
5
37
  * [新增] 优化了培育开始的逻辑,修复若干 bug(#86313ec)
@@ -46,12 +46,10 @@ from kotonebot.backend.color import (
46
46
  from kotonebot.backend.ocr import (
47
47
  Ocr, OcrResult, OcrResultList, jp, en, StringMatchFunction
48
48
  )
49
- from kotonebot.client.registration import AdbBasedImpl, create_device
50
49
  from kotonebot.config.manager import load_config, save_config
51
50
  from kotonebot.config.base_config import UserConfig
52
51
  from kotonebot.backend.core import Image, HintBox
53
52
  from kotonebot.errors import KotonebotWarning
54
- from kotonebot.client import DeviceImpl
55
53
  from kotonebot.backend.preprocessor import PreprocessorProtocol
56
54
  from kotonebot.primitives import Rect
57
55
 
@@ -1,11 +1,10 @@
1
1
  from .device import Device
2
- from .registration import create_device, DeviceImpl
2
+ from .registration import DeviceImpl
3
3
 
4
4
  # 确保所有实现都被注册
5
5
  from . import implements # noqa: F401
6
6
 
7
7
  __all__ = [
8
8
  'Device',
9
- 'create_device',
10
9
  'DeviceImpl',
11
10
  ]
@@ -9,6 +9,7 @@ from cv2.typing import MatLike
9
9
  from adbutils._device import AdbDevice as AdbUtilsDevice
10
10
 
11
11
  from ..backend.debug import result
12
+ from ..errors import UnscalableResolutionError
12
13
  from kotonebot.backend.core import HintBox
13
14
  from kotonebot.primitives import Rect, Point, is_point
14
15
  from .protocol import ClickableObjectProtocol, Commandable, Touchable, Screenshotable, AndroidCommandable, WindowsCommandable
@@ -78,6 +79,31 @@ class Device:
78
79
  """
79
80
  设备平台名称。
80
81
  """
82
+ self.target_resolution: tuple[int, int] | None = None
83
+ """
84
+ 目标分辨率。
85
+
86
+ 若设置,则在截图、点击、滑动等时会缩放到目标分辨率。
87
+ 仅支持等比例缩放,若无法等比例缩放,则会抛出异常 `UnscalableResolutionError`。
88
+ """
89
+ self.match_rotation: bool = True
90
+ """
91
+ 分辨率缩放是否自动匹配旋转。
92
+
93
+ 当目标与真实分辨率的宽高比不一致时,是否允许通过旋转(交换宽高)后再进行匹配。
94
+ 为 True 则忽略方向差异,只要宽高比一致就视为可缩放;False 则必须匹配旋转。
95
+
96
+ 例如,当目标分辨率为 1920x1080,而真实分辨率为 1080x1920 时,
97
+ ``match_rotation`` 为 True 则认为可以缩放,为 False 则会抛出异常。
98
+ """
99
+ self.aspect_ratio_tolerance: float = 0.1
100
+ """
101
+ 宽高比容差阈值。
102
+
103
+ 判断两分辨率宽高比差异是否接受的阈值。
104
+ 该值越小,对比例一致性的要求越严格。
105
+ 默认为 0.1(即 10% 容差)。
106
+ """
81
107
 
82
108
  @property
83
109
  def adb(self) -> AdbUtilsDevice:
@@ -89,6 +115,50 @@ class Device:
89
115
  def adb(self, value: AdbUtilsDevice) -> None:
90
116
  self._adb = value
91
117
 
118
+ def _scale_pos_real_to_target(self, real_x: int, real_y: int) -> tuple[int, int]:
119
+ """将真实屏幕坐标缩放到目标逻辑坐标"""
120
+ if self.target_resolution is None:
121
+ return real_x, real_y
122
+
123
+ real_w, real_h = self.screen_size
124
+ target_w, target_h = self.target_resolution
125
+
126
+ # 校验分辨率是否可缩放并获取调整后的目标分辨率
127
+ adjusted_target_w, adjusted_target_h = self.__assert_scalable((real_w, real_h), (target_w, target_h))
128
+
129
+ scale_w = adjusted_target_w / real_w
130
+ scale_h = adjusted_target_h / real_h
131
+
132
+ return int(real_x * scale_w), int(real_y * scale_h)
133
+
134
+ def _scale_pos_target_to_real(self, target_x: int, target_y: int) -> tuple[int, int]:
135
+ """将目标逻辑坐标缩放到真实屏幕坐标"""
136
+ if self.target_resolution is None:
137
+ return target_x, target_y # 输入坐标已是真实坐标
138
+
139
+ real_w, real_h = self.screen_size
140
+ target_w, target_h = self.target_resolution
141
+
142
+ # 校验分辨率是否可缩放并获取调整后的目标分辨率
143
+ adjusted_target_w, adjusted_target_h = self.__assert_scalable((real_w, real_h), (target_w, target_h))
144
+
145
+ scale_to_real_w = real_w / adjusted_target_w
146
+ scale_to_real_h = real_h / adjusted_target_h
147
+
148
+ return int(target_x * scale_to_real_w), int(target_y * scale_to_real_h)
149
+
150
+ def __scale_image (self, img: MatLike) -> MatLike:
151
+ if self.target_resolution is None:
152
+ return img
153
+
154
+ target_w, target_h = self.target_resolution
155
+ h, w = img.shape[:2]
156
+
157
+ # 校验分辨率是否可缩放并获取调整后的目标分辨率
158
+ adjusted_target = self.__assert_scalable((w, h), (target_w, target_h))
159
+
160
+ return cv2.resize(img, adjusted_target)
161
+
92
162
  @overload
93
163
  def click(self) -> None:
94
164
  """
@@ -161,7 +231,12 @@ class Device:
161
231
  logger.debug(f"Executing click hook before: ({x}, {y})")
162
232
  x, y = hook(x, y)
163
233
  logger.debug(f"Click hook before result: ({x}, {y})")
164
- logger.debug(f"Click: {x}, {y}")
234
+ if self.target_resolution is not None:
235
+ # 输入坐标为逻辑坐标,需要转换为真实坐标
236
+ real_x, real_y = self._scale_pos_target_to_real(x, y)
237
+ else:
238
+ real_x, real_y = x, y
239
+ logger.debug(f"Click: {x}, {y}%s", f"(Physical: {real_x}, {real_y})" if self.target_resolution is not None else "")
165
240
  from ..backend.context import ContextStackVars
166
241
  if ContextStackVars.current() is not None:
167
242
  image = ContextStackVars.ensure_current()._screenshot
@@ -169,9 +244,11 @@ class Device:
169
244
  image = np.array([])
170
245
  if image is not None and image.size > 0:
171
246
  cv2.circle(image, (x, y), 10, (0, 0, 255), -1)
172
- message = f"point: ({x}, {y})"
247
+ message = f"Point: ({x}, {y})"
248
+ if self.target_resolution is not None:
249
+ message += f" physical: ({real_x}, {real_y})"
173
250
  result("device.click", image, message)
174
- self._touch.click(x, y)
251
+ self._touch.click(real_x, real_y)
175
252
 
176
253
  def __click_point_tuple(self, point: Point) -> None:
177
254
  self.click(point[0], point[1])
@@ -232,6 +309,10 @@ class Device:
232
309
  """
233
310
  滑动屏幕
234
311
  """
312
+ if self.target_resolution is not None:
313
+ # 输入坐标为逻辑坐标,需要转换为真实坐标
314
+ x1, y1 = self._scale_pos_target_to_real(x1, y1)
315
+ x2, y2 = self._scale_pos_target_to_real(x2, y2)
235
316
  self._touch.swipe(x1, y1, x2, y2, duration)
236
317
 
237
318
  def swipe_scaled(self, x1: float, y1: float, x2: float, y2: float, duration: float|None = None) -> None:
@@ -258,6 +339,7 @@ class Device:
258
339
  logger.debug("screenshot hook before returned image")
259
340
  return img
260
341
  img = self.screenshot_raw()
342
+ img = self.__scale_image(img)
261
343
  if self.screenshot_hook_after is not None:
262
344
  img = self.screenshot_hook_after(img)
263
345
  return img
@@ -296,8 +378,15 @@ class Device:
296
378
  `self.orientation` 属性默认为竖屏。如果需要自动检测,
297
379
  调用 `self.detect_orientation()` 方法。
298
380
  如果已知方向,也可以直接设置 `self.orientation` 属性。
381
+
382
+ 即使设置了 `self.target_resolution`,返回的分辨率仍然是真实分辨率。
299
383
  """
300
- return self._screenshot.screen_size
384
+ size = self._screenshot.screen_size
385
+ if self.orientation == 'landscape':
386
+ size = sorted(size, reverse=True)
387
+ else:
388
+ size = sorted(size, reverse=False)
389
+ return size[0], size[1]
301
390
 
302
391
  def detect_orientation(self) -> Literal['portrait', 'landscape'] | None:
303
392
  """
@@ -307,6 +396,68 @@ class Device:
307
396
  """
308
397
  return self._screenshot.detect_orientation()
309
398
 
399
+ def __aspect_ratio_compatible(self, src_size: tuple[int, int], tgt_size: tuple[int, int]) -> bool:
400
+ """
401
+ 判断两个尺寸在宽高比意义上是否兼容
402
+
403
+ 若 ``self.match_rotation`` 为 True,忽略方向(长边/短边)进行比较。
404
+ 判断标准由 ``self.aspect_ratio_tolerance`` 决定(默认 0.1)。
405
+ """
406
+ src_w, src_h = src_size
407
+ tgt_w, tgt_h = tgt_size
408
+
409
+ # 尺寸必须为正
410
+ if src_w <= 0 or src_h <= 0:
411
+ raise ValueError(f"Source size dimensions must be positive for scaling: {src_size}")
412
+ if tgt_w <= 0 or tgt_h <= 0:
413
+ raise ValueError(f"Target size dimensions must be positive for scaling: {tgt_size}")
414
+
415
+ tolerant = self.aspect_ratio_tolerance
416
+
417
+ # 直接比较宽高比
418
+ if abs((tgt_w / src_w) - (tgt_h / src_h)) <= tolerant:
419
+ return True
420
+
421
+ # 尝试忽略方向差异
422
+ if self.match_rotation:
423
+ ratio_src = max(src_w, src_h) / min(src_w, src_h)
424
+ ratio_tgt = max(tgt_w, tgt_h) / min(tgt_w, tgt_h)
425
+ return abs(ratio_src - ratio_tgt) <= tolerant
426
+
427
+ return False
428
+
429
+ def __assert_scalable(self, source: tuple[int, int], target: tuple[int, int]) -> tuple[int, int]:
430
+ """
431
+ 校验分辨率是否可缩放,并返回调整后的目标分辨率。
432
+
433
+ 当 match_rotation 为 True 且源分辨率与目标分辨率的旋转方向不一致时,
434
+ 自动交换目标分辨率的宽高,使其与源分辨率的方向保持一致。
435
+
436
+ :param src_size: 源分辨率 (width, height)
437
+ :param tgt_size: 目标分辨率 (width, height)
438
+ :return: 调整后的目标分辨率 (width, height)
439
+ :raises UnscalableResolutionError: 若宽高比不兼容
440
+ """
441
+ # 智能调整目标分辨率方向
442
+ adjusted_tgt_size = target
443
+ if self.match_rotation:
444
+ src_w, src_h = source
445
+ tgt_w, tgt_h = target
446
+
447
+ # 判断源分辨率和目标分辨率的方向
448
+ src_is_landscape = src_w > src_h
449
+ tgt_is_landscape = tgt_w > tgt_h
450
+
451
+ # 如果方向不一致,交换目标分辨率的宽高
452
+ if src_is_landscape != tgt_is_landscape:
453
+ adjusted_tgt_size = (tgt_h, tgt_w)
454
+
455
+ # 校验调整后的分辨率是否兼容
456
+ if not self.__aspect_ratio_compatible(source, adjusted_tgt_size):
457
+ raise UnscalableResolutionError(target, source)
458
+
459
+ return adjusted_tgt_size
460
+
310
461
 
311
462
  class AndroidDevice(Device):
312
463
  def __init__(self, adb_connection: AdbUtilsDevice | None = None) -> None:
@@ -0,0 +1,94 @@
1
+ from abc import ABC
2
+ from typing import Any, Literal, TypeGuard, TypeVar, get_args
3
+ from typing_extensions import assert_never
4
+
5
+ from adbutils import adb
6
+ from adbutils._device import AdbDevice
7
+ from kotonebot import logging
8
+ from kotonebot.client.device import AndroidDevice
9
+ from .protocol import Instance, AdbHostConfig, Device
10
+
11
+ logger = logging.getLogger(__name__)
12
+ AdbRecipes = Literal['adb', 'adb_raw', 'uiautomator2']
13
+
14
+ def is_adb_recipe(recipe: Any) -> TypeGuard[AdbRecipes]:
15
+ return recipe in get_args(AdbRecipes)
16
+
17
+ def connect_adb(
18
+ ip: str,
19
+ port: int,
20
+ connect: bool = True,
21
+ disconnect: bool = True,
22
+ timeout: float = 180,
23
+ device_serial: str | None = None
24
+ ) -> AdbDevice:
25
+ """
26
+ 创建 ADB 连接。
27
+ """
28
+ if disconnect:
29
+ logger.debug('adb disconnect %s:%d', ip, port)
30
+ adb.disconnect(f'{ip}:{port}')
31
+ if connect:
32
+ logger.debug('adb connect %s:%d', ip, port)
33
+ result = adb.connect(f'{ip}:{port}')
34
+ if 'cannot connect to' in result:
35
+ raise ValueError(result)
36
+ serial = device_serial or f'{ip}:{port}'
37
+ logger.debug('adb wait for %s', serial)
38
+ adb.wait_for(serial, timeout=timeout)
39
+ devices = adb.device_list()
40
+ logger.debug('adb device_list: %s', devices)
41
+ d = [d for d in devices if d.serial == serial]
42
+ if len(d) == 0:
43
+ raise ValueError(f"Device {serial} not found")
44
+ d = d[0]
45
+ return d
46
+
47
+ class CommonAdbCreateDeviceMixin(ABC):
48
+ """
49
+ 通用 ADB 创建设备的 Mixin。
50
+ 该 Mixin 定义了创建 ADB 设备的通用接口。
51
+ """
52
+ def __init__(self, *args, **kwargs) -> None:
53
+ super().__init__(*args, **kwargs)
54
+ # 下面的属性只是为了让类型检查通过,无实际实现
55
+ self.adb_ip: str
56
+ self.adb_port: int
57
+ self.adb_name: str
58
+
59
+ def create_device(self, recipe: AdbRecipes, config: AdbHostConfig) -> Device:
60
+ """
61
+ 创建 ADB 设备。
62
+ """
63
+ connection = connect_adb(
64
+ self.adb_ip,
65
+ self.adb_port,
66
+ connect=True,
67
+ disconnect=True,
68
+ timeout=config.timeout,
69
+ device_serial=self.adb_name
70
+ )
71
+ d = AndroidDevice(connection)
72
+ match recipe:
73
+ case 'adb':
74
+ from kotonebot.client.implements.adb import AdbImpl
75
+ impl = AdbImpl(connection)
76
+ d._screenshot = impl
77
+ d._touch = impl
78
+ d.commands = impl
79
+ case 'adb_raw':
80
+ from kotonebot.client.implements.adb_raw import AdbRawImpl
81
+ impl = AdbRawImpl(connection)
82
+ d._screenshot = impl
83
+ d._touch = impl
84
+ d.commands = impl
85
+ case 'uiautomator2':
86
+ from kotonebot.client.implements.uiautomator2 import UiAutomator2Impl
87
+ from kotonebot.client.implements.adb import AdbImpl
88
+ impl = UiAutomator2Impl(connection)
89
+ d._screenshot = impl
90
+ d._touch = impl
91
+ d.commands = AdbImpl(connection)
92
+ case _:
93
+ assert_never(f'Unsupported ADB recipe: {recipe}')
94
+ return d
@@ -1,22 +1,21 @@
1
1
  import os
2
2
  import subprocess
3
3
  from psutil import process_iter
4
- from .protocol import Instance, AdbHostConfig
5
- from typing import ParamSpec, TypeVar, cast
4
+ from .protocol import Instance, AdbHostConfig, HostProtocol
5
+ from typing import ParamSpec, TypeVar
6
6
  from typing_extensions import override
7
7
 
8
8
  from kotonebot import logging
9
- from kotonebot.client import DeviceImpl
10
- from kotonebot.client.device import Device
11
- from kotonebot.client.registration import AdbBasedImpl, create_device
12
- from kotonebot.client.implements.adb import AdbImplConfig
9
+ from kotonebot.client import Device
10
+ from .adb_common import AdbRecipes, CommonAdbCreateDeviceMixin
13
11
 
14
12
  logger = logging.getLogger(__name__)
13
+ CustomRecipes = AdbRecipes
15
14
 
16
15
  P = ParamSpec('P')
17
16
  T = TypeVar('T')
18
17
 
19
- class CustomInstance(Instance[AdbHostConfig]):
18
+ class CustomInstance(CommonAdbCreateDeviceMixin, Instance[AdbHostConfig]):
20
19
  def __init__(self, exe_path: str | None, emulator_args: str = "", *args, **kwargs):
21
20
  super().__init__(*args, **kwargs)
22
21
  self.exe_path: str | None = exe_path
@@ -69,24 +68,12 @@ class CustomInstance(Instance[AdbHostConfig]):
69
68
  pass
70
69
 
71
70
  @override
72
- def create_device(self, impl: DeviceImpl, host_config: AdbHostConfig) -> Device:
71
+ def create_device(self, impl: CustomRecipes, host_config: AdbHostConfig) -> Device:
73
72
  """为自定义实例创建 Device。"""
74
73
  if self.adb_port is None:
75
74
  raise ValueError("ADB port is not set and is required.")
76
75
 
77
- # ADB 相关的实现创建配置
78
- if impl in ['adb', 'adb_raw', 'uiautomator2']:
79
- config = AdbImplConfig(
80
- addr=f'{self.adb_ip}:{self.adb_port}',
81
- connect=True,
82
- disconnect=True,
83
- device_serial=self.adb_name,
84
- timeout=host_config.timeout
85
- )
86
- impl = cast(AdbBasedImpl, impl) # make pylance happy
87
- return create_device(impl, config)
88
- else:
89
- raise ValueError(f'Unsupported device implementation for Custom: {impl}')
76
+ return super().create_device(impl, host_config)
90
77
 
91
78
  def __repr__(self) -> str:
92
79
  return f'CustomInstance(#{self.id}# at "{self.exe_path}" with {self.adb_ip}:{self.adb_port})'
@@ -99,6 +86,25 @@ def _type_check(ins: Instance) -> CustomInstance:
99
86
  def create(exe_path: str | None, adb_ip: str, adb_port: int, adb_name: str | None, emulator_args: str = "") -> CustomInstance:
100
87
  return CustomInstance(exe_path, emulator_args=emulator_args, id='custom', name='Custom', adb_ip=adb_ip, adb_port=adb_port, adb_name=adb_name)
101
88
 
89
+ class CustomHost(HostProtocol[CustomRecipes]):
90
+ @staticmethod
91
+ def installed() -> bool:
92
+ # Custom instances don't have a specific installation requirement
93
+ return True
94
+
95
+ @staticmethod
96
+ def list() -> list[Instance]:
97
+ # Custom instances are created manually, not discovered
98
+ return []
99
+
100
+ @staticmethod
101
+ def query(*, id: str) -> Instance | None:
102
+ # Custom instances are created manually, not discovered
103
+ return None
104
+
105
+ @staticmethod
106
+ def recipes() -> 'list[CustomRecipes]':
107
+ return ['adb', 'adb_raw', 'uiautomator2']
102
108
 
103
109
  if __name__ == '__main__':
104
110
  ins = create(r'C:\Program Files\BlueStacks_nxt\HD-Player.exe', '127.0.0.1', 5555, '**emulator-name**')
@@ -1,18 +1,17 @@
1
1
  import os
2
2
  import subprocess
3
- from typing import cast
3
+ from typing import Literal
4
4
  from functools import lru_cache
5
5
  from typing_extensions import override
6
6
 
7
7
  from kotonebot import logging
8
- from kotonebot.client import DeviceImpl
9
- from kotonebot.client.device import Device
10
- from kotonebot.client.registration import AdbBasedImpl, create_device
11
- from kotonebot.client.implements.adb import AdbImplConfig
8
+ from kotonebot.client import Device
12
9
  from kotonebot.util import Countdown, Interval
13
10
  from .protocol import HostProtocol, Instance, copy_type, AdbHostConfig
11
+ from .adb_common import AdbRecipes, CommonAdbCreateDeviceMixin
14
12
 
15
13
  logger = logging.getLogger(__name__)
14
+ LeidianRecipes = AdbRecipes
16
15
 
17
16
  if os.name == 'nt':
18
17
  from ...interop.win.reg import read_reg
@@ -21,7 +20,7 @@ else:
21
20
  """Stub for read_reg on non-Windows platforms."""
22
21
  return default
23
22
 
24
- class LeidianInstance(Instance[AdbHostConfig]):
23
+ class LeidianInstance(CommonAdbCreateDeviceMixin, Instance[AdbHostConfig]):
25
24
  @copy_type(Instance.__init__)
26
25
  def __init__(self, *args, **kwargs):
27
26
  super().__init__(*args, **kwargs)
@@ -64,35 +63,23 @@ class LeidianInstance(Instance[AdbHostConfig]):
64
63
  it = Interval(5)
65
64
  while not cd.expired() and not self.running():
66
65
  it.wait()
66
+ self.refresh()
67
67
  if not self.running():
68
68
  raise TimeoutError(f'Leidian instance "{self.name}" is not available.')
69
69
 
70
70
  @override
71
71
  def running(self) -> bool:
72
- result = LeidianHost._invoke_manager(['isrunning', '--index', str(self.index)])
73
- return result.strip() == 'running'
72
+ return self.is_running
74
73
 
75
74
  @override
76
- def create_device(self, impl: DeviceImpl, host_config: AdbHostConfig) -> Device:
75
+ def create_device(self, impl: LeidianRecipes, host_config: AdbHostConfig) -> Device:
77
76
  """为雷电模拟器实例创建 Device。"""
78
77
  if self.adb_port is None:
79
78
  raise ValueError("ADB port is not set and is required.")
80
79
 
81
- # ADB 相关的实现创建配置
82
- if impl in ['adb', 'adb_raw', 'uiautomator2']:
83
- config = AdbImplConfig(
84
- addr=f'{self.adb_ip}:{self.adb_port}',
85
- connect=False, # 雷电模拟器不需要 adb connect
86
- disconnect=False,
87
- device_serial=self.adb_name,
88
- timeout=host_config.timeout
89
- )
90
- impl = cast(AdbBasedImpl, impl) # make pylance happy
91
- return create_device(impl, config)
92
- else:
93
- raise ValueError(f'Unsupported device implementation for Leidian: {impl}')
80
+ return super().create_device(impl, host_config)
94
81
 
95
- class LeidianHost(HostProtocol):
82
+ class LeidianHost(HostProtocol[LeidianRecipes]):
96
83
  @staticmethod
97
84
  @lru_cache(maxsize=1)
98
85
  def _read_install_path() -> str | None:
@@ -197,6 +184,10 @@ class LeidianHost(HostProtocol):
197
184
  return instance
198
185
  return None
199
186
 
187
+ @staticmethod
188
+ def recipes() -> 'list[LeidianRecipes]':
189
+ return ['adb', 'adb_raw', 'uiautomator2']
190
+
200
191
  if __name__ == '__main__':
201
192
  logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s] [%(levelname)s] [%(name)s] [%(funcName)s] [%(lineno)d] %(message)s')
202
193
  print(LeidianHost._read_install_path())