ksaa 2025.11.post3__py3-none-any.whl → 2026.2b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. kaa/application/services/config_service.py +1 -1
  2. kaa/application/services/instant_service.py +13 -0
  3. kaa/application/ui/components/alert.pyi +277 -0
  4. kaa/application/ui/facade.py +2 -0
  5. kaa/application/ui/views/settings_view.py +26 -4
  6. kaa/config/upgrade.py +0 -2
  7. kaa/main/gr.py +2 -1
  8. kaa/main/kaa.py +42 -22
  9. kaa/metadata.py +12 -0
  10. kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  11. kaa/resources/game.db +0 -0
  12. kaa/resources/game_ver.txt +0 -0
  13. kaa/resources/idol_cards/i_card-skin-atbm-3-012_0.png +0 -0
  14. kaa/resources/idol_cards/i_card-skin-atbm-3-012_1.png +0 -0
  15. kaa/resources/idol_cards/i_card-skin-hmsz-3-004_0.png +0 -0
  16. kaa/resources/idol_cards/i_card-skin-hmsz-3-004_1.png +0 -0
  17. kaa/resources/idol_cards/i_card-skin-hmsz-3-014_0.png +0 -0
  18. kaa/resources/idol_cards/i_card-skin-hmsz-3-014_1.png +0 -0
  19. kaa/resources/idol_cards/i_card-skin-jsna-3-001_0.png +0 -0
  20. kaa/resources/idol_cards/i_card-skin-jsna-3-001_1.png +0 -0
  21. kaa/resources/idol_cards/i_card-skin-kcna-3-016_0.png +0 -0
  22. kaa/resources/idol_cards/i_card-skin-kcna-3-016_1.png +0 -0
  23. kaa/resources/idol_cards/i_card-skin-shro-3-016_0.png +0 -0
  24. kaa/resources/idol_cards/i_card-skin-shro-3-016_1.png +0 -0
  25. kaa/resources/idol_cards/i_card-skin-ttmr-3-016_0.png +0 -0
  26. kaa/resources/idol_cards/i_card-skin-ttmr-3-016_1.png +0 -0
  27. kaa/sprites/__pycache__/__init__.cpython-310.pyc +0 -0
  28. kaa/tasks/R.py +242 -242
  29. kaa/util/paths.py +2 -1
  30. {ksaa-2025.11.post3.dist-info → ksaa-2026.2b1.dist-info}/METADATA +24 -4
  31. {ksaa-2025.11.post3.dist-info → ksaa-2026.2b1.dist-info}/RECORD +291 -274
  32. {ksaa-2025.11.post3.dist-info → ksaa-2026.2b1.dist-info}/WHEEL +1 -1
  33. /kaa/sprites/{015b5779-cadf-4024-85b1-d0c55f9f46f1.png → 0065f93a-8ed5-494b-867a-3a4f93d092fe.png} +0 -0
  34. /kaa/sprites/{dd067648-8a04-4aa9-9a16-24c9de418e88.png → 00af1f0a-1e87-4c28-813c-f0e2aa440df9.png} +0 -0
  35. /kaa/sprites/{6b70f907-c172-4407-a4da-1af2579d4bf7.png → 015e5b61-3f6c-4583-b140-38ff486899bc.png} +0 -0
  36. /kaa/sprites/{0442c7fe-3673-48df-a355-7338143d34db.png → 02c15552-a6c7-404d-a905-ab66f37e96bc.png} +0 -0
  37. /kaa/sprites/{36d629e8-6d19-404e-b25a-751f3fb5922d.png → 02ee06f7-2c3f-415e-adf9-4c30737a2cf7.png} +0 -0
  38. /kaa/sprites/{3f4a8715-d934-4ca4-aa3a-bc2aeab50177.png → 0483d011-e46a-48b9-9670-1b39edd1e7f0.png} +0 -0
  39. /kaa/sprites/{302aa081-793a-4627-87a6-46f4f7ceb0ed.png → 05288b1e-54ad-401c-a2d6-ed8b8e1e60a6.png} +0 -0
  40. /kaa/sprites/{b157590a-567e-49af-a61b-1506d29f7b94.png → 054627e0-5775-49b8-b155-dd70acf24339.png} +0 -0
  41. /kaa/sprites/{7b32d600-5b4e-48c1-a508-407775001f41.png → 07020391-4ce1-4117-954e-a106bceca1bd.png} +0 -0
  42. /kaa/sprites/{07786ee3-0d03-4cb0-9a6c-806a78d7587f.png → 077a60c9-1141-4ae0-bf5e-e9bb2cc0147a.png} +0 -0
  43. /kaa/sprites/{9998b2b8-0e61-4f08-927b-0818473dbd43.png → 0a658829-e286-4504-b0b7-e622c6bb962d.png} +0 -0
  44. /kaa/sprites/{970f11d0-1579-40a2-a2b3-8b84fb1c1e1e.png → 0adb84ac-ba63-4eb2-a7fc-3e4d7f493109.png} +0 -0
  45. /kaa/sprites/{39e6af00-ad55-44b0-bbe1-1c414bf3fe33.png → 0ae4a373-3fc7-44b5-91d5-932f758a56ab.png} +0 -0
  46. /kaa/sprites/{a3a2a30d-cb78-474e-aa04-adbace86ae3a.png → 0b6999b1-82b5-4ef8-b64e-19da7df8f20a.png} +0 -0
  47. /kaa/sprites/{4c468e5e-9c25-462b-b37c-c28a587a38b9.png → 0bd06015-4386-462b-ae02-435a9e1c4373.png} +0 -0
  48. /kaa/sprites/{747fc625-ff6c-4147-bf66-4b89d5a3b69a.png → 0c700bdc-39d2-4f8b-8df5-f4e4af7a0ae8.png} +0 -0
  49. /kaa/sprites/{29059030-a083-4884-92c9-eec3dfe0e4ab.png → 0ca7a6ec-e636-4552-aeb3-cff7f6f49eaf.png} +0 -0
  50. /kaa/sprites/{7922ffd6-1958-4a35-b4fe-400d824dc7e5.png → 0dd6a663-3749-4b47-8cfa-6adf0bcd1c05.png} +0 -0
  51. /kaa/sprites/{8e8affdd-8500-4f03-b4d1-15da41202831.png → 0dfd8d47-d886-4c41-923a-8a08581658cf.png} +0 -0
  52. /kaa/sprites/{a37ca8e8-9145-49eb-bf5c-9741de14b7a4.png → 0fcba712-5a48-4379-91b3-5810fc811845.png} +0 -0
  53. /kaa/sprites/{913ed3c2-7473-4021-9e53-c3002bf9d44e.png → 10ab787b-d79b-483a-8f55-8a846ed21217.png} +0 -0
  54. /kaa/sprites/{18db64d4-995a-4115-837a-eefb064f3ba1.png → 112910e4-f77e-4eb5-8af3-e75cfb738193.png} +0 -0
  55. /kaa/sprites/{9677fd2f-b0cf-47fc-a330-21b736079342.png → 11c823db-b133-4533-bc66-319ed0c49e8d.png} +0 -0
  56. /kaa/sprites/{8117ea59-2722-4a68-b593-017464aa594d.png → 11eb2107-a28b-4d8f-8be3-d3d514e9022a.png} +0 -0
  57. /kaa/sprites/{96862015-617e-42a8-bbe9-871b11881664.png → 126269ad-ebc2-4e57-973c-4ec037512543.png} +0 -0
  58. /kaa/sprites/{c1365964-fb44-41b7-aa4f-5b3c98a32d37.png → 12edbae4-91df-40e6-8c82-fc5de2bb885a.png} +0 -0
  59. /kaa/sprites/{92a9f024-bd94-4583-9ec5-67a0a4c45760.png → 12f2a934-0d91-4e2b-80df-978db34dae68.png} +0 -0
  60. /kaa/sprites/{74b8de69-e5a8-4340-8a8d-5fb95aad2542.png → 132cb71d-8edf-4db6-bcf2-0b44da4f1881.png} +0 -0
  61. /kaa/sprites/{65b7953e-aa9e-4879-ab46-81432ac8657b.png → 14003003-ba68-4020-98e0-0d9825235619.png} +0 -0
  62. /kaa/sprites/{67270259-86f0-4b0b-9907-9705de2ac309.png → 157aa9b1-9dc2-4f07-8d98-480e496ef4c2.png} +0 -0
  63. /kaa/sprites/{3e6ed13b-5f2b-4c14-94d4-d26105a51299.png → 15886f0e-64a1-47a9-80de-790b950d7241.png} +0 -0
  64. /kaa/sprites/{43ad4667-2bc6-4810-b433-0a19759ce11e.png → 15c5c0b1-b0ed-497d-9395-a1040ec5548a.png} +0 -0
  65. /kaa/sprites/{598b7934-2f93-4ebe-bf7a-cceb35d7fd17.png → 15e5496d-742c-4875-a191-7281898b9f95.png} +0 -0
  66. /kaa/sprites/{59e78d4c-a667-4c03-9c7e-8ca38ae87d5e.png → 169a8843-ab25-4878-8a3e-4e62c08db110.png} +0 -0
  67. /kaa/sprites/{a33a2de3-bfb9-430a-9507-4810cca8aaa7.png → 174a782d-ad2c-44ea-88fa-8a89956c8652.png} +0 -0
  68. /kaa/sprites/{6c2066a3-793b-4891-9d43-074e7fb56d84.png → 177aeeff-5c24-4d81-ad98-2a532f3563c1.png} +0 -0
  69. /kaa/sprites/{5ad6cdf3-eab5-453e-9292-6b2c729c64d1.png → 19d888c5-445a-4869-8bec-18b64efe8d39.png} +0 -0
  70. /kaa/sprites/{684506fd-37de-49a6-8e48-217480c47360.png → 1a33eb1f-6828-4e1b-9025-90f8c6458d78.png} +0 -0
  71. /kaa/sprites/{86cbaa8e-3423-4d91-8b71-71adb444e99f.png → 1b25a464-4f1c-4b50-b824-dcb91133fa94.png} +0 -0
  72. /kaa/sprites/{83c7d6ff-9025-4862-b2a2-2bc32e8dcef8.png → 1cbc291f-e7ad-4a32-b433-b075b8fe124a.png} +0 -0
  73. /kaa/sprites/{513b6380-48c1-4ddf-8783-cb346ea6250a.png → 1cfccfd1-6e55-48bd-83c1-15ddc67e5d8e.png} +0 -0
  74. /kaa/sprites/{0dba5e49-256c-4a44-a522-80300681895a.png → 1dd8c385-d1c5-45d7-9edb-8a7744fb5f75.png} +0 -0
  75. /kaa/sprites/{267677d2-c40b-4d6b-8769-3c42a7cca3e7.png → 1f013193-112e-4afc-b0b6-6267653b9ed6.png} +0 -0
  76. /kaa/sprites/{69803642-085f-4975-a008-a477ca30f41b.png → 1f667eaf-b45a-4cbb-81cb-495d5f23c609.png} +0 -0
  77. /kaa/sprites/{dfe4013a-aa65-4422-8022-8ef3732cc49b.png → 1f7a1347-a9e7-4015-85bb-2a63b81dda76.png} +0 -0
  78. /kaa/sprites/{119d3a35-68fb-410d-9422-3b35b611e5a9.png → 21584132-9ab9-4e95-bf3e-9233c5387679.png} +0 -0
  79. /kaa/sprites/{5fe81be9-4a51-4d65-b288-60d69a7b38f9.png → 21c49928-d739-4014-98a3-3bbb722044c3.png} +0 -0
  80. /kaa/sprites/{0dadbed2-abee-48c9-a00a-3dc83efb170e.png → 23cb42ce-62ce-44f6-99a3-200b78e579c9.png} +0 -0
  81. /kaa/sprites/{01adbe31-36d8-4a05-8237-2fe33cefc4ed.png → 23d1740c-1cb8-46f4-8ed4-c6292b92a50d.png} +0 -0
  82. /kaa/sprites/{3f626359-ad15-4149-8f03-62574220e781.png → 251d9f14-04a4-44ca-8cb7-4d6af7aef009.png} +0 -0
  83. /kaa/sprites/{5049dd7e-618f-443d-9bb5-0a8412b5827d.png → 27b10205-92b0-413a-a6cc-3e47b1c337d3.png} +0 -0
  84. /kaa/sprites/{3a8172a7-f7f9-4ed6-aa82-166356fb3216.png → 27e496a1-fb40-41c9-a67d-d02165a4e7ec.png} +0 -0
  85. /kaa/sprites/{d7f74cdb-9b98-44f6-93cd-b1f0936c074a.png → 28219f90-36e2-42dd-84d7-12eca2e45c24.png} +0 -0
  86. /kaa/sprites/{b439bffb-5c15-482d-b44e-8fc92f97b7c5.png → 2a155032-4495-4ab8-a20b-e5dda1cc7727.png} +0 -0
  87. /kaa/sprites/{234a0e58-b807-41a3-872c-d8aae8a586b5.png → 2a8658a1-913f-4aa3-a14e-a1c80e761ea8.png} +0 -0
  88. /kaa/sprites/{36e28bfa-2637-4667-84db-688500698041.png → 2bcb98b9-50ef-49ed-80dd-17ac178e9130.png} +0 -0
  89. /kaa/sprites/{34738621-35f9-4534-a5b6-d1b9532e1583.png → 2c495b72-0e37-45ef-8eb3-366847f3cee2.png} +0 -0
  90. /kaa/sprites/{a06ab5cb-dea1-4855-b89c-5a51544f3dc8.png → 2cd1ecae-6f7a-438b-b5c4-3673c7132d4f.png} +0 -0
  91. /kaa/sprites/{150e417d-c7a2-4802-86d5-fde4c4b111c8.png → 2dadeb75-d1bd-450a-aae3-aebd3be9a25e.png} +0 -0
  92. /kaa/sprites/{ce2a6f51-93d2-4825-9ba1-6a628ae7e423.png → 30e4be34-a7ec-4f75-9a73-e73a8043d570.png} +0 -0
  93. /kaa/sprites/{e3e30d17-711b-4459-8041-77529f3c9427.png → 326bf84f-12ee-4e6b-95fe-4c094aa5d2f4.png} +0 -0
  94. /kaa/sprites/{d5fbc984-e4c6-4764-9113-78db31719322.png → 3296a372-2956-40f7-b8b1-ef03cb0781f5.png} +0 -0
  95. /kaa/sprites/{41e03f7a-b804-48f9-9f91-6ab4bfffbb60.png → 3347e579-6a84-4417-8dde-140a2c57a345.png} +0 -0
  96. /kaa/sprites/{133c1dfe-d12a-46c4-9cf1-872a38aca100.png → 33f3e63e-340b-408f-a9ac-cf20d52516ae.png} +0 -0
  97. /kaa/sprites/{cb454ca8-48af-477d-b88c-0707162453fe.png → 36877805-3802-4561-9b2d-9434de64478f.png} +0 -0
  98. /kaa/sprites/{fd7b3514-3516-4f13-908d-91e2d1b6b5f6.png → 36e03bfd-9ef4-4cec-a90d-325b7ccf8a2f.png} +0 -0
  99. /kaa/sprites/{29774af8-a442-4d67-ab33-5c55d6878847.png → 36e4a083-ce62-43c0-9bbe-223b4b55dc89.png} +0 -0
  100. /kaa/sprites/{e321228b-82e7-49d3-b488-74b2a176c8cf.png → 3831f523-c8d0-44bc-b9b9-a2fb2be1ed48.png} +0 -0
  101. /kaa/sprites/{c14fc712-dc48-4200-b01a-7b6688b3b447.png → 39f2e6f5-816a-4dfd-b97e-398b2569f4a5.png} +0 -0
  102. /kaa/sprites/{1850d2ad-489e-4170-862d-b4486fba09bb.png → 3a4b6161-f590-46ac-9dcd-39ae8ed14ba8.png} +0 -0
  103. /kaa/sprites/{06da77cb-274f-464d-84bf-e39047b68ba0.png → 3b770e1a-e586-4a91-b943-366492e8625c.png} +0 -0
  104. /kaa/sprites/{7c787834-cc44-404b-a1ce-1c5af6a6f577.png → 3bf71e5b-2a84-4b52-aa94-20549733f814.png} +0 -0
  105. /kaa/sprites/{df092ec2-cc43-4f62-902f-9c06523186cb.png → 3c7bacbb-45f1-4c4b-a988-038c3fb28047.png} +0 -0
  106. /kaa/sprites/{83cf21b1-cd41-49b0-b050-688f1efb2020.png → 3dc8788e-1a20-400e-b105-6994765e07d5.png} +0 -0
  107. /kaa/sprites/{5b8d350c-43a6-494a-8d03-1ee2bb212ccf.png → 3e439ba5-364e-4938-ac8b-10bf99d6b9ee.png} +0 -0
  108. /kaa/sprites/{6add5b86-b5da-4f0c-a3a5-b77a29bc4425.png → 3e71f276-6cc7-4097-a403-d76fbdd3c41c.png} +0 -0
  109. /kaa/sprites/{0d516b33-3895-4f24-a11e-41325edc3d5c.png → 3e9b4512-3d9e-4c2c-acab-0a297280b037.png} +0 -0
  110. /kaa/sprites/{8fc5b7b9-a643-448d-a78c-24b8e0ff32b7.png → 3f561e59-ad96-467e-8878-3ad0e142a365.png} +0 -0
  111. /kaa/sprites/{3ef26f7f-4c8f-4ddf-a50e-0b2dec7affcf.png → 41496cd6-a2be-4b7f-9216-3494c7f94b55.png} +0 -0
  112. /kaa/sprites/{2c54a6f0-a315-4290-85be-01519988e7fe.png → 4231cc4b-4904-4de2-bca6-b1cb7e992228.png} +0 -0
  113. /kaa/sprites/{7a27de74-2623-4039-bf7d-936ab99a4349.png → 423f4c08-9bd0-49ed-9156-dfe417ff8ac9.png} +0 -0
  114. /kaa/sprites/{1a78973f-3cac-4120-a194-70d90297f449.png → 425609bc-83ff-404a-82d2-b795f9ad0f79.png} +0 -0
  115. /kaa/sprites/{c1e3bee2-182c-48ed-9c70-ed1df0d119f9.png → 43f0a859-4baa-4d53-88cc-c2424e2be357.png} +0 -0
  116. /kaa/sprites/{8d7de096-a4e9-469c-8b36-b55f875ce702.png → 441899f2-82b9-443a-aaa4-0dadb66260be.png} +0 -0
  117. /kaa/sprites/{44c4ed02-278c-4345-a87c-5724537b525d.png → 4509d0a7-ec81-4c9c-b527-c8e500ccbbe7.png} +0 -0
  118. /kaa/sprites/{cbc43e27-f2ab-444d-9eb5-03f0d9290b6c.png → 45b379a8-3e4c-45f9-9791-f5b19c15705f.png} +0 -0
  119. /kaa/sprites/{052581f1-9433-4ecd-9d70-133fcd2a4f13.png → 465aa80d-74a3-4f81-9812-ae09c0ff2aae.png} +0 -0
  120. /kaa/sprites/{3a7cb8c2-d36f-4e9b-8de6-2bdb3d651d0c.png → 4a2692ad-777c-4cd6-a407-a31a37502d1d.png} +0 -0
  121. /kaa/sprites/{092825be-4bd4-4efb-940c-296cbec4a0ff.png → 4aba9df0-7d80-448e-9fdc-2384379e6722.png} +0 -0
  122. /kaa/sprites/{f0d47cbc-703a-4843-968f-4d06303ed118.png → 4b2805dd-f484-48f0-b574-84277163c440.png} +0 -0
  123. /kaa/sprites/{7954af49-8899-4645-bf71-12d2b1619b3c.png → 4c373db1-197d-44b4-b9fc-5b63c59c9d76.png} +0 -0
  124. /kaa/sprites/{1b14150d-0e02-4f44-a72c-690f0f64579f.png → 4e77d15f-2474-4b3d-9eae-e3e8ccf9e109.png} +0 -0
  125. /kaa/sprites/{f6db0f1f-b429-4a7e-b0be-7377a2c8f3b8.png → 4e9b2cdb-d700-4a71-a1aa-118feebc99f1.png} +0 -0
  126. /kaa/sprites/{2df0cc16-ee8d-4b62-9556-e9d0fcba19de.png → 4f1a4b03-3dd4-46d3-bad1-ebff16c9d10e.png} +0 -0
  127. /kaa/sprites/{dbef016c-4f94-48db-897b-1b8317058e4f.png → 501c9e18-2adf-4d01-8c52-e0c80276e3c9.png} +0 -0
  128. /kaa/sprites/{83b89ff8-748b-4ed4-99d7-91eed6825f04.png → 5073da01-c64f-40fc-a707-66ce647ae911.png} +0 -0
  129. /kaa/sprites/{8f32b337-14de-4208-b142-8da0bb91f252.png → 50f58ada-ec77-4132-9a69-368862316765.png} +0 -0
  130. /kaa/sprites/{b5800adc-ffeb-4a1a-979a-f89d4e2fbbbe.png → 517d0c74-df35-40f7-9cf6-854b7c2b841e.png} +0 -0
  131. /kaa/sprites/{bac8f246-3235-4c72-b554-a1f4e6ac4c45.png → 54cabb6d-c1af-4401-9b74-1ea7121b5922.png} +0 -0
  132. /kaa/sprites/{9ff0b243-e3e4-48c6-9123-b804ba63cff2.png → 5531743c-eb4a-4e91-960d-5148a0aea724.png} +0 -0
  133. /kaa/sprites/{fd2618b0-bfc5-4ace-a2bc-2917d1303872.png → 590eadd9-f86f-4bc9-9d01-1b6fd9e1e239.png} +0 -0
  134. /kaa/sprites/{731825eb-1cf2-46a1-9940-68e71fa3df81.png → 5abfebe1-ca74-48fe-ad42-92c22e50fadf.png} +0 -0
  135. /kaa/sprites/{730292fc-a339-4d82-a681-9e9231136b47.png → 5bfb0933-22f4-490c-b7f4-dbf556906fb6.png} +0 -0
  136. /kaa/sprites/{73c3b299-c49c-4484-8463-6df6e5a17af5.png → 5c7e8637-d407-4cb2-b925-f1aa571de856.png} +0 -0
  137. /kaa/sprites/{fad39378-12f3-4f7c-8200-0a7a2ec9440a.png → 5d85f067-873b-43a0-8ffe-5ea7b9107ac4.png} +0 -0
  138. /kaa/sprites/{464b2aaa-5529-46a3-a3c9-de8dd172d4c8.png → 61932454-6ad6-4604-a8bd-11817d9da481.png} +0 -0
  139. /kaa/sprites/{b8483626-1bb8-4276-ae03-73881504eff4.png → 648b8745-e2c2-4975-8cc8-0484261fff7d.png} +0 -0
  140. /kaa/sprites/{70d76860-9e6a-4213-a780-f91abf87d7f0.png → 65ed8305-5449-4097-8079-a9c7aa1c62d0.png} +0 -0
  141. /kaa/sprites/{2c8e05f3-8c90-454c-b346-7dbd7fdb7ac9.png → 6617857f-11ea-4ee6-aad6-1526f5e90819.png} +0 -0
  142. /kaa/sprites/{0e574856-8035-43db-9c7d-2634ad1abe11.png → 6644f12a-50c2-4ed8-991b-79f4b5832a2e.png} +0 -0
  143. /kaa/sprites/{14e3aa94-9876-401a-a884-d8dddba78988.png → 680d4170-0fdc-46ca-a357-f11d59337283.png} +0 -0
  144. /kaa/sprites/{25be2fc1-407e-4c39-99a0-332083653123.png → 6c5d39ae-53c5-4b1f-8be7-ea7ab558c8c6.png} +0 -0
  145. /kaa/sprites/{6d02d06b-0faa-4d70-8671-8bc04bf1c57f.png → 6c65dc28-cde5-4382-8fcb-9ed9d2e50d90.png} +0 -0
  146. /kaa/sprites/{3428c82e-c21b-4d41-af79-e5a74afe29b1.png → 6d8f2fc7-b3c7-4d52-81e9-5a0b4ecd4c57.png} +0 -0
  147. /kaa/sprites/{804268fc-f36e-4854-89b0-a0b34cdf8390.png → 718d1975-b648-4b05-b62f-57d0e8332f77.png} +0 -0
  148. /kaa/sprites/{4307c508-6048-40d7-a702-ae075d928217.png → 72268e7c-7b57-4a6a-9db4-74ef3a892bd7.png} +0 -0
  149. /kaa/sprites/{8bf0f15f-c45b-4f3d-b9ca-1bcc73e06779.png → 7398a917-95f9-4cc5-891d-17b4fb9468f7.png} +0 -0
  150. /kaa/sprites/{7322ad76-3a6c-4d0a-a82c-23a884d1e4d2.png → 75249a0d-7985-4efe-b3a8-2e03cd010a43.png} +0 -0
  151. /kaa/sprites/{2e758a0f-30fa-4177-bd2e-b65d6939254d.png → 787f6c2b-6796-4938-bcd0-4f4c76e9827d.png} +0 -0
  152. /kaa/sprites/{3940cc47-9632-4af7-9331-438abc427505.png → 788f5dfe-7fa8-4a63-9077-84506d50f8d5.png} +0 -0
  153. /kaa/sprites/{5bca3054-8a13-405b-a891-f56ac06ce7b2.png → 7ab2486a-ecd3-456f-b12a-947d9cec39b9.png} +0 -0
  154. /kaa/sprites/{53d465ef-2691-4d3f-a1bf-4f3106e83a7a.png → 7ae09bbb-1d96-40c6-9a4a-796a6e29b337.png} +0 -0
  155. /kaa/sprites/{7bd5fd31-b835-447c-9ac5-7cddb02cd83f.png → 7da05bed-50c5-4bf9-92a6-a13c41743ec3.png} +0 -0
  156. /kaa/sprites/{95550cc7-baa1-485b-a685-3cc276626065.png → 7e5e0b6d-41e3-4b0e-b7a2-874441018fef.png} +0 -0
  157. /kaa/sprites/{b827fa25-fa83-4ce6-b21f-1aebdc928bd9.png → 7e8ad46f-dfe4-4f44-8984-75898dd9cde8.png} +0 -0
  158. /kaa/sprites/{f3fac85d-0f8e-4cc8-bf1f-3206e6be09b6.png → 7f52725a-738a-4ca7-bc1a-1cccdbb4f972.png} +0 -0
  159. /kaa/sprites/{cb27515b-50d6-47cb-b239-8462c575e5ef.png → 8025d439-28a0-4f4a-af73-e35b2f3b0cb3.png} +0 -0
  160. /kaa/sprites/{00b4c938-5e19-49cf-8257-c10425714be5.png → 802977aa-adfc-4042-b50f-8be0ceb3e1a8.png} +0 -0
  161. /kaa/sprites/{f32cc10e-14f1-4420-9373-f8a4aa31c82c.png → 8186d3b7-3c4e-486f-aca5-c752075a39d9.png} +0 -0
  162. /kaa/sprites/{bca11f73-d7a0-4453-aeb4-30c07636a160.png → 824b8ce9-9442-4c86-93d5-d12b2b81c326.png} +0 -0
  163. /kaa/sprites/{4cdd751c-5215-4450-98e3-634172a38fdb.png → 827a82d7-50e7-4cd7-b6dc-75f79842ed90.png} +0 -0
  164. /kaa/sprites/{cf41bd4a-c24d-4cd3-bc17-c60e08e9f4c7.png → 82d78d3b-ab07-4f72-9c2d-15c00122450e.png} +0 -0
  165. /kaa/sprites/{fff908ef-e236-428f-b74a-dc3f9bb81781.png → 83d8848b-95e7-43dd-b9c7-4c541008070b.png} +0 -0
  166. /kaa/sprites/{6728ad4d-3153-49e6-b1d4-15df488de9ec.png → 847782f4-2f1c-4706-b336-bcae1091bdd8.png} +0 -0
  167. /kaa/sprites/{9dd61d9f-8343-444e-b73b-18e10853f43e.png → 858b0eb0-1209-444f-ba67-23c1a05e50ff.png} +0 -0
  168. /kaa/sprites/{bd06b5d1-2294-418d-9c65-e2d3529c099e.png → 89200fff-192b-4d78-b789-e711c2d3d562.png} +0 -0
  169. /kaa/sprites/{d9f621d0-b6b5-48b0-872c-9cf0c8add3fe.png → 89cf78c6-bf0e-4344-86c6-dc65d84d3279.png} +0 -0
  170. /kaa/sprites/{27834c18-365c-4c88-885a-edf0e5fa92a9.png → 8a4d45c0-00bf-4019-82df-31f808b8975f.png} +0 -0
  171. /kaa/sprites/{c4fa0246-7165-4203-be1c-c451b729d027.png → 902d36db-0916-4596-9064-837fd90646a0.png} +0 -0
  172. /kaa/sprites/{f70a1ee8-c32f-44a8-8351-79ffdb8bf54c.png → 90b41926-e31a-4de5-ba2e-a32398d65227.png} +0 -0
  173. /kaa/sprites/{8c0c6a23-ce87-4f7c-bd0d-794d756e8e53.png → 90fbb52f-df6c-4d7c-811b-f2445b23c5e9.png} +0 -0
  174. /kaa/sprites/{b3e46a3f-d6b4-4725-aa6e-5fd42f410814.png → 911fb0b5-8d81-4a12-a0f8-5221e7505522.png} +0 -0
  175. /kaa/sprites/{e32ba2b8-996f-429b-afb1-5ea712ca9285.png → 9171f00a-bcac-480c-81c3-00862a3339b7.png} +0 -0
  176. /kaa/sprites/{db545bdc-0829-48e4-82f5-e95fd34bc1f9.png → 9293c484-0d25-4e02-9ccb-fa882fd5483c.png} +0 -0
  177. /kaa/sprites/{f375180c-adb0-4d88-b6d7-85a067c17479.png → 93762a12-e23d-4dff-a57a-f1e66facfa1f.png} +0 -0
  178. /kaa/sprites/{55506e5a-ea70-40c6-9b37-88864dda1ca9.png → 9521299e-e0c8-49d0-a030-81abb4da5924.png} +0 -0
  179. /kaa/sprites/{64311b95-3db0-4812-acc7-06bff243ea9d.png → 95d706d7-9adc-4580-b4f3-ab65db223770.png} +0 -0
  180. /kaa/sprites/{d147bf2c-5be8-4486-ba9a-1c608410e9ba.png → 96b792c0-80bc-48d0-b09f-93b516461263.png} +0 -0
  181. /kaa/sprites/{02f9ea01-1a30-47a7-814b-b81afb07add7.png → 99047180-7a93-4398-862e-962f2111ab92.png} +0 -0
  182. /kaa/sprites/{9a00a0b0-bb3d-4959-9496-4c0fe49f5b09.png → 99f6b8f6-aacc-4876-9d6e-41a52df50f43.png} +0 -0
  183. /kaa/sprites/{eae96173-ff42-4017-9c39-51ad7c927d6e.png → 9a042445-6845-4c39-b5ef-38fb83aae498.png} +0 -0
  184. /kaa/sprites/{9177de31-7455-4edb-9750-b7e6104c8507.png → 9f1b68c5-bf50-4066-9460-05fa288a7103.png} +0 -0
  185. /kaa/sprites/{0db54886-41a9-41c8-9941-545e4b3beaef.png → 9fc4069d-e3dd-4992-9b0e-77b4c34d30df.png} +0 -0
  186. /kaa/sprites/{119e2d96-1856-463f-85c5-c375421a7142.png → a0aea32b-2b62-4bda-bc4e-75ea8e71da81.png} +0 -0
  187. /kaa/sprites/{ef3ed72e-b7ee-49ef-a880-c42d01b71f98.png → a0cb3e86-1378-485f-992d-9544af202970.png} +0 -0
  188. /kaa/sprites/{a472bad4-5d25-4ea4-af80-875ed46c0c40.png → a1ddeef5-b19e-466e-8ec7-f8d77222f920.png} +0 -0
  189. /kaa/sprites/{4b8a47a1-ef79-4f5e-b52b-d2251404b718.png → a1e71731-ea01-4550-85b7-b9b7997020bd.png} +0 -0
  190. /kaa/sprites/{b133393d-2d68-45fd-bb31-913620c958c7.png → a26ffa2e-b3d0-4d59-8634-77bcc59c91ff.png} +0 -0
  191. /kaa/sprites/{23347bff-1aeb-4f9f-9f01-0386d07d1d58.png → a283e4e3-20b7-43b2-a34b-20c9cd3439c1.png} +0 -0
  192. /kaa/sprites/{fd198ca0-75d8-4da8-a809-a630df3bf17f.png → a2d2dfab-7b53-4ff1-aa06-06a461a2ebe3.png} +0 -0
  193. /kaa/sprites/{151190e3-e49b-4505-a09e-d09a2a3d1e19.png → a30a99d0-913c-4507-aba3-8a56aef782a3.png} +0 -0
  194. /kaa/sprites/{c2d8e38c-0783-4f85-9c95-56abe60868b8.png → a3669735-8664-422c-ac9d-f9be690f69f1.png} +0 -0
  195. /kaa/sprites/{f6d86d72-a519-40b6-b6e0-54266090baae.png → a5e537d2-3f90-4ecb-b9c2-399f6e192374.png} +0 -0
  196. /kaa/sprites/{4a70897f-0a9b-4b76-8ec1-873cbcfb3c9f.png → a5f20802-483a-462c-9f9d-8fd35bf713d0.png} +0 -0
  197. /kaa/sprites/{fe0fedae-7924-4bfe-81c6-18e041170a47.png → a8000d75-a747-4537-8ea4-1ceb0738107b.png} +0 -0
  198. /kaa/sprites/{5ae18770-0ef3-4d10-b1c5-4e51ed34a337.png → a91c4644-a583-4311-9ba9-d0035471dd81.png} +0 -0
  199. /kaa/sprites/{f3ffefce-c2f3-4f22-9fe6-02a130c24d8a.png → aa1c1c91-fa77-4e7f-8548-036ef9d762d3.png} +0 -0
  200. /kaa/sprites/{38b054d1-86ca-4ae4-9b6a-24a3e226daa5.png → ac2b7bdc-6ffc-438f-852d-c4d4c671efef.png} +0 -0
  201. /kaa/sprites/{000ec78e-ab20-4089-b268-558dff2269bf.png → adbe726f-1171-4c81-bdbd-1d8f57563ab9.png} +0 -0
  202. /kaa/sprites/{d352f4f7-37cd-4ab9-babc-6f5e19e896da.png → ade394ef-0450-4fe7-9494-6ddcd2fd7f20.png} +0 -0
  203. /kaa/sprites/{8dd0fe2d-9d93-4226-a416-ac5ab9def5b1.png → ae67bd78-3da8-452d-9ad1-96bd196ce750.png} +0 -0
  204. /kaa/sprites/{c620eee0-b4af-4125-8739-5524130a8011.png → b03f2d4e-20f3-4640-a87c-85d0344b38e9.png} +0 -0
  205. /kaa/sprites/{a222a2c8-4af0-4556-8130-a4e08fe3fbb8.png → b1637b6f-a758-4388-a1ea-d61c140f5617.png} +0 -0
  206. /kaa/sprites/{c735fbac-b584-4ffc-a782-6f606ff68eb4.png → b163e3ad-651f-4029-a985-808d8ab40984.png} +0 -0
  207. /kaa/sprites/{cf7967b4-64f3-42ae-b995-e2d2c3f5dcec.png → b16d79c6-3c7a-4104-8ade-36886e201572.png} +0 -0
  208. /kaa/sprites/{cb167a0e-0925-4793-9116-410ab08a1386.png → b196d17e-89cb-4878-86c9-217fc26a1465.png} +0 -0
  209. /kaa/sprites/{0defd088-91db-4a2c-827a-6ccc94ba4911.png → b2d8cd60-5f54-45c5-84e0-74d17759e16d.png} +0 -0
  210. /kaa/sprites/{075de498-bc0e-42b5-8348-235efde28247.png → b489e902-1163-4cdc-9783-59875202f041.png} +0 -0
  211. /kaa/sprites/{83ee05ab-6c4f-4057-b6c5-0ef7cb4810de.png → b9681fe7-2aa0-4c53-be4d-9a43ff47786a.png} +0 -0
  212. /kaa/sprites/{cf6f8fbd-799c-4ae4-bcf0-18e73400d75e.png → bc3377c7-766a-4ff3-bc62-aec42c23c575.png} +0 -0
  213. /kaa/sprites/{df8c55ed-0ebb-466d-b337-a7a5d8e5ee99.png → bc39429b-4b84-4f5c-9979-8c35d0ed28b0.png} +0 -0
  214. /kaa/sprites/{aa212bbe-5f31-4452-9d0e-0394d4d63465.png → beca79b1-0fde-4a48-b35e-e5dac2c325a6.png} +0 -0
  215. /kaa/sprites/{93ca85ac-8f42-44ab-b272-a0b9b1ad64b3.png → bf409637-7fae-491a-b8a2-3ac1877cb069.png} +0 -0
  216. /kaa/sprites/{2a693e8d-70a2-4176-b29a-5a9c42f17168.png → c02eed24-b253-4794-84bf-2ed387a2af89.png} +0 -0
  217. /kaa/sprites/{43467ce3-713a-4cdb-8fde-20f1c501cf92.png → c03c14e2-cc39-42af-99c2-d0a69b7a0309.png} +0 -0
  218. /kaa/sprites/{f1c75d8d-a5b4-4883-a56a-b3c8019c8463.png → c255eb57-bf6c-4c13-94ba-3e2adace8d7c.png} +0 -0
  219. /kaa/sprites/{62082d6d-f2a3-4c33-a96a-1929328448d9.png → c2a66dae-bbe1-4ea0-9567-94b725a8c151.png} +0 -0
  220. /kaa/sprites/{99661b6b-cc36-4591-adb8-2980d721cd34.png → c2bee736-87e4-43e6-a27f-0e8d3923f7b5.png} +0 -0
  221. /kaa/sprites/{921cae68-099f-4e5a-9e93-83088b8228a0.png → c2c4b6c9-e49c-40e9-84a5-b0bd48579c2c.png} +0 -0
  222. /kaa/sprites/{e2363607-467a-43a0-9551-559692bce748.png → c38f7b82-335a-4889-b23c-34c928a06a85.png} +0 -0
  223. /kaa/sprites/{de9a2945-a7f4-4832-afc3-05c165f45253.png → c3df057a-4f8c-4c6f-bfb4-7220e6243d03.png} +0 -0
  224. /kaa/sprites/{a177ebb9-7548-47cf-ba45-d4700e8c1d99.png → c47e6006-6c84-4e54-aafe-529d43e2254b.png} +0 -0
  225. /kaa/sprites/{c78fe004-f838-4e95-9b3f-672274af4741.png → c5a42371-61cf-4fa1-b073-cc5a607dfd4d.png} +0 -0
  226. /kaa/sprites/{ff86765f-f5d2-475f-a2c4-98c8c5cef572.png → c7058520-06c2-4ec6-8fa2-28b073c51a96.png} +0 -0
  227. /kaa/sprites/{2747e1e6-c351-49f9-a1ee-67ac63b4641b.png → c83d899e-4426-4370-9339-e574cd96cd56.png} +0 -0
  228. /kaa/sprites/{46151387-0244-4146-9fa1-da5c7d798a86.png → c86e7df5-0e7a-4919-b095-a7836609c7a7.png} +0 -0
  229. /kaa/sprites/{b9a8288f-bff6-4c74-b0c0-3090fe9558e8.png → c94d3961-b690-49a9-ba81-bbf5fb56a007.png} +0 -0
  230. /kaa/sprites/{6421c6af-31cb-4059-8e89-ebce1e51026e.png → ca1366a7-06cf-4635-8354-a0f45b29b068.png} +0 -0
  231. /kaa/sprites/{bade536b-74c3-4467-87d3-68229117dee0.png → ca7f7643-8640-4c9e-80a0-1e0bb03f16be.png} +0 -0
  232. /kaa/sprites/{08e6a9f3-17f0-4866-b993-6bca4b7e4778.png → ca8c6fc6-1247-4ffc-9bf4-7f53dc1ccb69.png} +0 -0
  233. /kaa/sprites/{7c035a9f-6aad-477a-b4bb-3cddeb47c346.png → cb05f267-1eed-4800-890f-9d99cb413620.png} +0 -0
  234. /kaa/sprites/{a4b6d7e4-f056-48fe-ae6c-cd95b920bad6.png → cb085062-05ae-48e2-8c7e-dc4d1c6f8d23.png} +0 -0
  235. /kaa/sprites/{4679d64d-6e85-4ed5-944c-adcfbce974a2.png → cb23b0fd-51ca-4e5d-9590-b84ddb51af64.png} +0 -0
  236. /kaa/sprites/{df1fc279-7bb4-4d9a-bc5f-190ccaf096a3.png → cb610804-b435-4870-833e-e606de5233e3.png} +0 -0
  237. /kaa/sprites/{8680005e-cf2f-4459-b35f-0f60d938fe06.png → cbaaeb68-7176-43eb-bbed-42c4f14aa557.png} +0 -0
  238. /kaa/sprites/{aaf9c4e6-c92d-4c4b-82b2-2920c2990c70.png → d0249bfe-e62d-4e3c-b432-389074ad7c58.png} +0 -0
  239. /kaa/sprites/{66a7a951-2171-4f29-96a7-4bac35c69d89.png → d060002c-8494-4d9d-9665-adc0caf0bb2e.png} +0 -0
  240. /kaa/sprites/{8fe5063b-17cd-4866-84b5-ff600714cdf4.png → d08ca4a9-3749-4031-a727-750da8a09e88.png} +0 -0
  241. /kaa/sprites/{19d4a552-855b-49ec-ba3c-4013836572db.png → d186727c-54ca-44a1-8a1f-4727bf3192bc.png} +0 -0
  242. /kaa/sprites/{3235d00f-e0cf-4129-819b-13499c23fd6a.png → d58cbdec-73ab-433c-bc49-dbf0dadd72c7.png} +0 -0
  243. /kaa/sprites/{109ef0c7-5169-40e3-93e0-a6d224cc6223.png → d656fba9-88de-4aa2-8704-f2a2010a6331.png} +0 -0
  244. /kaa/sprites/{d2babef2-f14b-4200-a13e-2c080cd1d659.png → d679ca2a-049f-4fc3-894f-66622601875b.png} +0 -0
  245. /kaa/sprites/{b804d87f-39ef-433d-8316-b44ea2d5eb6a.png → d6f565fd-875b-4250-8dea-cacd56fd7076.png} +0 -0
  246. /kaa/sprites/{361ff50a-6b64-4abb-8971-1e995ada74e6.png → d7540785-8fe0-479d-8a43-65b6331bc5d3.png} +0 -0
  247. /kaa/sprites/{c2f3cc60-6bf3-4a0a-be13-a66c9bd3a5cf.png → d7688e3d-93cb-4f3f-ba3e-68cb7e99c2fd.png} +0 -0
  248. /kaa/sprites/{f1ffe77d-5789-44b8-91b4-e869af43f50a.png → d887d099-8d35-4277-b0d8-4dca47c67b72.png} +0 -0
  249. /kaa/sprites/{6acf1ffc-3a9a-4319-8692-051acb695799.png → d889bfa3-e7a1-4673-a7de-53bc5081e8b0.png} +0 -0
  250. /kaa/sprites/{37efb053-f552-41ad-8016-4cb14cf0634d.png → d915a975-da2e-4797-bdd8-d6be40bedc41.png} +0 -0
  251. /kaa/sprites/{bdbd1b83-6c8d-4a87-9124-9d9e2da5ad2a.png → db55834e-4f42-4512-9b5c-b8e1eb1d7c70.png} +0 -0
  252. /kaa/sprites/{e9844886-8171-4d84-b6cb-b3bb943e0cd6.png → dd3e2112-0455-45fa-8c00-c1f01ebcd397.png} +0 -0
  253. /kaa/sprites/{aaaf79a0-c3ca-422f-8391-818de28b06b2.png → dd896506-8850-4c4c-b00f-c04fe58d05e4.png} +0 -0
  254. /kaa/sprites/{391e6937-4348-4dbe-aeaf-73a997009c39.png → ddf8e300-7c8c-4e37-bf74-6d52288cca6f.png} +0 -0
  255. /kaa/sprites/{f8a43bc9-2e37-447f-9b2d-190ab81dd9a3.png → df15864b-8eb2-4125-9549-0ee832920baf.png} +0 -0
  256. /kaa/sprites/{a2684732-20c2-4167-884d-64e6120df305.png → dfd25a9e-06f3-4d40-983f-56da1832150b.png} +0 -0
  257. /kaa/sprites/{d75f9fa7-6bb5-447d-b69e-600b48ad0202.png → e16f30b5-24d1-4477-8793-722db088a417.png} +0 -0
  258. /kaa/sprites/{db5226f6-c5f5-4607-8183-eb007924e4f1.png → e20901dc-eea2-40f5-8876-ae8c5c12e2e3.png} +0 -0
  259. /kaa/sprites/{cadae6ac-b9ad-4b85-8313-ebc7cae0a803.png → e27f805b-e5b9-461c-9812-0be5222c7c60.png} +0 -0
  260. /kaa/sprites/{941fb997-4161-40d7-9bb1-938cdce3e3ab.png → e3a19db9-1454-46cd-abc8-654d2936bb7b.png} +0 -0
  261. /kaa/sprites/{be3a1182-c750-46ec-a009-c7534c69cd8b.png → e4a37419-2938-4217-8217-aadf04eedba3.png} +0 -0
  262. /kaa/sprites/{dd4c404b-2f05-481b-9a09-b816c66f4cbf.png → e508ddaf-0858-49cf-a07c-b3038353bfb7.png} +0 -0
  263. /kaa/sprites/{448a2910-0302-403b-9c34-5ed0df22e6a3.png → e54e6777-83dc-4b3c-922b-99810024af97.png} +0 -0
  264. /kaa/sprites/{baf848be-f070-4a67-934f-81899a55ec31.png → e56261b5-1055-466c-b050-851dee5e15b2.png} +0 -0
  265. /kaa/sprites/{7f6f9614-7906-442b-9f2d-e334a9a640e5.png → e710a4f7-89f1-4a40-a6a0-d087f936790c.png} +0 -0
  266. /kaa/sprites/{7bd8ddee-1f27-48c6-8b63-b482e8c93ee2.png → e847433d-6e24-4741-9926-aa7825fd0ecb.png} +0 -0
  267. /kaa/sprites/{fef46b9d-95c3-4f6a-981a-3a2f3faaa5e7.png → e8c88394-902d-418c-9506-80a61723b9a2.png} +0 -0
  268. /kaa/sprites/{d4b0d0e3-78e9-4d17-9ee8-dfaf30af53d4.png → e93bf229-6eb6-4320-a006-21043a370670.png} +0 -0
  269. /kaa/sprites/{85c4c543-c157-40d0-b1b6-e6e6d1be388d.png → e96a6d05-b831-42e7-8f0e-1f5f5f185991.png} +0 -0
  270. /kaa/sprites/{ec09f2a7-3392-48e3-8b3f-b863c0d0f898.png → e9ba4444-d11f-4e3d-8780-20b807855d7b.png} +0 -0
  271. /kaa/sprites/{7409cb73-b89c-4324-87db-8286c4dba3cc.png → eddb0ee2-cfb6-4966-8c53-866dd688238d.png} +0 -0
  272. /kaa/sprites/{ca0c340b-a4e7-4596-ae3a-b62da71baadd.png → efb94ed6-c419-48d3-9ca9-ff5214201c9f.png} +0 -0
  273. /kaa/sprites/{7cf9927e-bc4d-4a7d-bd8b-3836c9497c44.png → efe93cda-7d72-4eda-bc6f-4b873d7ac04a.png} +0 -0
  274. /kaa/sprites/{91786ae8-df00-40e1-958c-4bf92119018b.png → f0ed8e25-823e-4810-90e6-7d58e74e1d91.png} +0 -0
  275. /kaa/sprites/{c73ec54f-dbae-4d06-8c94-b78ad6e18bd4.png → f177dc15-778b-45f3-8eb1-84064f7022fc.png} +0 -0
  276. /kaa/sprites/{2109ce76-95e3-4687-aa86-3a425f42686f.png → f48a5659-b5a5-48f2-aaf5-34c7fb1526c7.png} +0 -0
  277. /kaa/sprites/{f5c48b06-74ca-4d19-8e8c-ae029051a23c.png → f4b6bfed-6847-4052-9922-d2e32caccbd0.png} +0 -0
  278. /kaa/sprites/{a917772b-d5e3-4b61-932f-57fed9ce32a5.png → f7f223ce-aa5f-4fa3-a4ae-84c62941f593.png} +0 -0
  279. /kaa/sprites/{5b4c2e1e-f7ca-4848-81e4-d72b3e1e6cbb.png → f86d0e45-b77f-4a31-89a3-3c6ee182140c.png} +0 -0
  280. /kaa/sprites/{28950ba4-ff17-4f6e-a259-c78a15c674f6.png → f8c2a59c-9899-481a-90bc-a91bd38fc944.png} +0 -0
  281. /kaa/sprites/{4469789b-6129-4d33-826d-85753a3a92b5.png → f9ba6b02-e734-4981-82db-475f56a4a69c.png} +0 -0
  282. /kaa/sprites/{e947de79-76dd-427b-9bfb-91aedd641681.png → fb27e939-1adf-4f74-8374-ee63c42dffd7.png} +0 -0
  283. /kaa/sprites/{8862d215-8a42-4bd4-931e-61059e5925f2.png → fb5476d9-066a-44c9-a2ef-601835200704.png} +0 -0
  284. /kaa/sprites/{cebd1ab2-a8ee-4d1c-96b8-bd1de32aec46.png → fc6a6a26-b2c4-4149-92cc-ff633940775b.png} +0 -0
  285. /kaa/sprites/{b2d9df4f-c78c-4ae0-aa75-27397296665f.png → fcd3d4b9-d738-4ade-8297-e53947f60afe.png} +0 -0
  286. /kaa/sprites/{4b3f0f43-d332-4051-acec-994f722728f2.png → fd1c3922-3a21-49d6-8375-9513a1cefff1.png} +0 -0
  287. /kaa/sprites/{922bfd40-3554-4de7-a09a-0d79acfd377f.png → ff9c51a0-586e-4082-a743-d962f8a5e2b4.png} +0 -0
  288. /kaa/sprites/{ed255d8a-b736-4f92-9d4a-11f25d643c91.png → ffb24fa9-9c81-43a8-80a8-f8dfeea118ef.png} +0 -0
  289. {ksaa-2025.11.post3.dist-info → ksaa-2026.2b1.dist-info}/entry_points.txt +0 -0
  290. {ksaa-2025.11.post3.dist-info → ksaa-2026.2b1.dist-info}/licenses/LICENSE +0 -0
  291. {ksaa-2025.11.post3.dist-info → ksaa-2026.2b1.dist-info}/top_level.txt +0 -0
@@ -92,7 +92,7 @@ class ConfigService:
92
92
  'mumu12v5': ['adb', 'adb_raw', 'uiautomator2', 'nemu_ipc'],
93
93
  'leidian': ['adb', 'adb_raw', 'uiautomator2'],
94
94
  'custom': ['adb', 'adb_raw', 'uiautomator2'],
95
- 'dmm': ['remote_windows', 'windows']
95
+ 'dmm': ['remote_windows', 'windows', 'windows_background'],
96
96
  }
97
97
  if backend_config.screenshot_impl not in valid_screenshot_methods.get(backend_config.type, []):
98
98
  raise ConfigValidationError(
@@ -0,0 +1,13 @@
1
+ from kotonebot.interop.win import Win32Window
2
+
3
+ class InstantService:
4
+ def __init__(self):
5
+ pass
6
+
7
+ def reset_game_window(self):
8
+ window = Win32Window.find_window('title', 'gakumas')
9
+ if not window:
10
+ return False
11
+ window.set_position(50, 50)
12
+ window.bring_foreground()
13
+ return True
@@ -0,0 +1,277 @@
1
+ from typing import Optional, Dict, Any
2
+
3
+ import gradio as gr
4
+
5
+ # ͼ�� SVG ����
6
+ ICONS: Dict[str, str] = {
7
+ "success": """<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />""",
8
+ "info": """<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd" />""",
9
+ "warning": """<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd" />""",
10
+ "error": """<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd" />"""
11
+ }
12
+ from gradio.events import Dependency
13
+
14
+ class Alert(gr.HTML):
15
+ def __init__(
16
+ self,
17
+ value: str = "Alert Content",
18
+ title: Optional[str] = None,
19
+ variant: str = "info",
20
+ action_text: Optional[str] = None,
21
+ show_close: bool = True,
22
+ visible: bool = True,
23
+ elem_id: Optional[str] = None,
24
+ **kwargs: Any
25
+ ):
26
+ """
27
+ �̳��� gr.HTML ���Զ��� Alert �����
28
+
29
+ Args:
30
+ value: Alert ����Ҫ�����ı���
31
+ title: Alert �ı��⣨��ѡ����
32
+ variant: ��ʽ���壬��ѡ "success", "info", "warning", "error"��
33
+ action_text: �ײ�������ť���ı�����ѡ����
34
+ show_close: �Ƿ���ʾ�رհ�ť��
35
+ visible: �����ʼ�ɼ��ԡ�
36
+ elem_id: HTML Ԫ�� ID��
37
+ **kwargs: �������ݸ� gr.HTML �IJ�����
38
+ """
39
+
40
+ # ��ʽ������ JS on_load ��̬ע���Ա���ʹ�� `css_template` ����
41
+
42
+ # 2. HTML � (HTML Template)
43
+ # �޸ĵ㣺�ع� HTML �ṹ���� button ���� .alert-body-wrapper ��
44
+ html_template = """
45
+ <div class="alert alert-${variant}" role="alert">
46
+ <svg class="alert-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
47
+ ${ {
48
+ 'success': `""" + ICONS['success'] + """`,
49
+ 'info': `""" + ICONS['info'] + """`,
50
+ 'warning': `""" + ICONS['warning'] + """`,
51
+ 'error': `""" + ICONS['error'] + """`
52
+ }[variant] }
53
+ </svg>
54
+
55
+ <div class="alert-body-wrapper">
56
+ ${ title ? `<div class="alert-title">${title}</div>` : '' }
57
+ <div class="alert-description">${value}</div>
58
+
59
+ ${ action_text ? `
60
+ <div class="alert-actions">
61
+ <button class="action-btn">${action_text}</button>
62
+ </div>` : '' }
63
+ </div>
64
+
65
+ ${ show_close ? `
66
+ <button class="close-btn" aria-label="Close">
67
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor">
68
+ <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd" />
69
+ </svg>
70
+ </button>` : '' }
71
+ </div>
72
+ """
73
+
74
+ # 3. JS �����߼� (JS on Load)
75
+ js = """
76
+ // ��̬ע����ʽ����ȥ�ؼ�飩
77
+ (function(){
78
+ const STYLE_ID = 'kaa-alert-styles';
79
+ if (!document.getElementById(STYLE_ID)) {
80
+ const style = document.createElement('style');
81
+ style.id = STYLE_ID;
82
+ style.innerHTML = `
83
+ .alert {
84
+ display: flex;
85
+ align-items: flex-start; /* �������� */
86
+ padding: 1rem;
87
+ border-radius: 0.5rem;
88
+ border: 1px solid transparent;
89
+ margin-bottom: 1rem;
90
+ transition: opacity 0.3s ease;
91
+ }
92
+
93
+ .alert-icon {
94
+ width: 1.25rem;
95
+ height: 1.25rem;
96
+ margin-right: 0.75rem;
97
+ flex-shrink: 0;
98
+ }
99
+
100
+ .alert-body-wrapper {
101
+ flex: 1;
102
+ display: flex;
103
+ flex-direction: column;
104
+ gap: 0.25rem; /* ���⡢��������ť֮��ļ�� */
105
+ }
106
+
107
+ .alert-title {
108
+ font-weight: 600;
109
+ font-size: 0.875rem;
110
+ }
111
+
112
+ .alert-description {
113
+ font-size: 0.875rem;
114
+ line-height: 1.25rem;
115
+ }
116
+
117
+ .alert-actions {
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 0.5rem;
121
+ margin-top: 0.25rem; /* ��ť���Ϸ����ֵĶ����� */
122
+ }
123
+
124
+ /* Variants Colors */
125
+ .alert-success { background-color: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
126
+ .alert-success .alert-icon, .alert-success .action-btn { color: #059669; }
127
+
128
+ .alert-info { background-color: #eff6ff; border-color: #bfdbfe; color: #1e40af; }
129
+ .alert-info .alert-icon, .alert-info .action-btn { color: #2563eb; }
130
+
131
+ .alert-warning { background-color: #fffbeb; border-color: #fde68a; color: #92400e; }
132
+ .alert-warning .alert-icon, .alert-warning .action-btn { color: #d97706; }
133
+
134
+ .alert-error { background-color: #fef2f2; border-color: #fecaca; color: #991b1b; }
135
+ .alert-error .alert-icon, .alert-error .action-btn { color: #dc2626; }
136
+
137
+ /* Buttons */
138
+ .action-btn {
139
+ background: transparent;
140
+ border: none;
141
+ font-weight: 600;
142
+ cursor: pointer;
143
+ padding: 0; /* �Ƴ� padding �Ա�������һ�����룬���߱��� padding ���ɰ�ť��ʽ */
144
+ padding-right: 0.5rem;
145
+ font-size: 0.875rem;
146
+ text-align: left;
147
+ }
148
+ .action-btn:hover { text-decoration: underline; }
149
+
150
+ .close-btn {
151
+ background: transparent;
152
+ border: none;
153
+ cursor: pointer;
154
+ opacity: 0.6;
155
+ padding: 0.25rem;
156
+ margin-left: 0.75rem; /* ��������΢Զһ�� */
157
+ flex-shrink: 0;
158
+ display: flex;
159
+ }
160
+ .close-btn:hover { opacity: 1; }
161
+ .close-btn svg { width: 1rem; height: 1rem; }
162
+
163
+ /* Dark Mode Support */
164
+ body.dark .alert-success { background-color: #064e3b; border-color: #059669; color: #d1fae5; }
165
+ body.dark .alert-success .alert-icon, body.dark .alert-success .action-btn { color: #34d399; }
166
+
167
+ body.dark .alert-info { background-color: #1e3a8a; border-color: #1d4ed8; color: #dbeafe; }
168
+ body.dark .alert-info .alert-icon, body.dark .alert-info .action-btn { color: #60a5fa; }
169
+
170
+ body.dark .alert-warning { background-color: #451a03; border-color: #b45309; color: #fef3c7; }
171
+ body.dark .alert-warning .alert-icon, body.dark .alert-warning .action-btn { color: #fbbf24; }
172
+
173
+ body.dark .alert-error { background-color: #450a0a; border-color: #b91c1c; color: #fee2e2; }
174
+ body.dark .alert-error .alert-icon, body.dark .alert-error .action-btn { color: #f87171; }
175
+ `;
176
+ document.head.appendChild(style);
177
+ }
178
+ })();
179
+
180
+ const actionBtn = element.querySelector('.action-btn');
181
+ const closeBtn = element.querySelector('.close-btn');
182
+ const alertBox = element.querySelector('.alert');
183
+
184
+ if (actionBtn) {
185
+ actionBtn.addEventListener('click', (e) => {
186
+ e.stopPropagation(); // ��ֹð��
187
+ trigger('click', {
188
+ action_text: props.action_text,
189
+ variant: props.variant
190
+ });
191
+ });
192
+ }
193
+
194
+ if (closeBtn) {
195
+ closeBtn.addEventListener('click', (e) => {
196
+ e.stopPropagation();
197
+ alertBox.style.opacity = '0';
198
+ setTimeout(() => {
199
+ alertBox.style.display = 'none';
200
+ // ���� change �¼�֪ͨ���״̬�仯
201
+ trigger('change', { status: 'closed' });
202
+ }, 300);
203
+ });
204
+ }
205
+ """
206
+
207
+ super().__init__(
208
+ value=value,
209
+ title=title,
210
+ variant=variant,
211
+ action_text=action_text,
212
+ show_close=show_close,
213
+ html_template=html_template,
214
+ js_on_load=js,
215
+ visible=visible,
216
+ elem_id=elem_id,
217
+ **kwargs
218
+ )
219
+ from typing import Callable, Literal, Sequence, Any, TYPE_CHECKING
220
+ from gradio.blocks import Block
221
+ if TYPE_CHECKING:
222
+ from gradio.components import Timer
223
+ from gradio.components.base import Component
224
+
225
+ # --- ʹ��ʾ�� ---
226
+
227
+ if __name__ == "__main__":
228
+ with gr.Blocks() as demo:
229
+ gr.Markdown("### Alert Component with Typed Arguments & Aligned Layout")
230
+
231
+ with gr.Row():
232
+ with gr.Column():
233
+ # ������
234
+ msg_input = gr.Textbox(label="Alert Message", value="���ƺ���û�д����κ���������������Ҫ�ȵ����������ﴴ��һ����")
235
+ title_input = gr.Textbox(label="Title", value="��ʾ")
236
+ variant_input = gr.Dropdown(["success", "info", "warning", "error"], label="Variant", value="info")
237
+ action_input = gr.Textbox(label="Action Button Text", value="ȥ����")
238
+ update_btn = gr.Button("Update Alert")
239
+
240
+ with gr.Column():
241
+ # ���ʵ����
242
+ alert = Alert(
243
+ title="��ʾ",
244
+ value="���ƺ���û�д����κ���������������Ҫ�ȵ����������ﴴ��һ����",
245
+ variant="info",
246
+ action_text="ȥ����",
247
+ elem_id="my-alert"
248
+ )
249
+
250
+ # �����ʾ��
251
+ result_box = gr.Textbox(label="Event Log")
252
+
253
+ # 1. ���� Alert ����
254
+ def update_props(msg: str, title: str, variant: str, action: str) -> Alert:
255
+ return Alert(value=msg, title=title, variant=variant, action_text=action)
256
+
257
+ update_btn.click(
258
+ update_props,
259
+ inputs=[msg_input, title_input, variant_input, action_input],
260
+ outputs=alert
261
+ )
262
+
263
+ # 2. ���� Action ��ť���
264
+ def on_action_click(evt: gr.EventData) -> str:
265
+ data: Dict[str, Any] = evt._data # type: ignore
266
+ return f"Action Clicked! Variant: {data.get('variant')}, Action: {data.get('action_text')}"
267
+
268
+ alert.click(on_action_click, outputs=result_box)
269
+
270
+ # 3. ���� Close ��ť���
271
+ def on_close(evt: gr.EventData) -> str:
272
+ data: Dict[str, Any] = evt._data # type: ignore
273
+ return f"Alert Closed. Status: {data.get('status')}"
274
+
275
+ alert.change(on_close, outputs=result_box)
276
+
277
+ demo.launch()
@@ -4,6 +4,7 @@ import zipfile
4
4
  from datetime import datetime
5
5
  from typing import Any, Dict, List, Tuple
6
6
 
7
+ from kaa.application.services.instant_service import InstantService
7
8
  from kaa.main.kaa import Kaa
8
9
  from kaa.application.services.config_service import ConfigService, ConfigValidationError
9
10
  from kaa.application.services.produce_solution_service import ProduceSolutionService
@@ -32,6 +33,7 @@ class KaaFacade:
32
33
  # Other existing services
33
34
  self.update_service = UpdateService()
34
35
  self.feedback_service = FeedbackService()
36
+ self.instance_service = InstantService()
35
37
  self.idle_mgr = self._setup_idle_manager()
36
38
 
37
39
  self._kaa = kaa_instance
@@ -203,6 +203,20 @@ class SettingsView:
203
203
  # --- DMM ---
204
204
  with gr.Tab("DMM", id="dmm") as tab_dmm:
205
205
  gr.Markdown("已选中 DMM")
206
+ wait_cursor_speed = gr.Number(
207
+ value=user_config.backend.cursor_wait_speed,
208
+ label="后台挂机时光标最大速度(像素/秒)",
209
+ info="""使用 DMM 版后台挂机功能时,在点击前会尝试等待光标静止,以避免发生点击偏移。
210
+ 此项规定了速度小于多少时认为光标静止,单位为像素/秒。
211
+
212
+ -1 表示使用内置默认值,0 表示禁用该功能。
213
+ 值越大,等待时间越短,脚本响应越快,但点击偏移风险上升,可能导致误点击而卡住。
214
+ 值越小,等待时间越长,脚本响应越慢,但点击偏移风险下降,稳定性更好。
215
+ """,
216
+ minimum=-1, step=0.1, interactive=True
217
+ )
218
+ self._bind(wait_cursor_speed, ref(of(user_config.backend).cursor_wait_speed))
219
+ gr.Button('重置游戏窗口位置', scale=1).click(self.facade.instance_service.reset_game_window)
206
220
 
207
221
  tab_dmm.select(
208
222
  fn=lambda: ("dmm", None),
@@ -211,7 +225,15 @@ class SettingsView:
211
225
 
212
226
  # 通用设置
213
227
  comps['screenshot'] = gr.Dropdown(
214
- choices=['adb', 'adb_raw', 'uiautomator2', 'windows', 'remote_windows', 'nemu_ipc'],
228
+ choices=[
229
+ ('adb - 模拟器通用', 'adb'),
230
+ ('adb_raw(已废弃勿选)', 'adb_raw'),
231
+ ('uiautomator2 - 模拟器通用', 'uiautomator2'),
232
+ ('windows - DMM 版前台挂机', 'windows'),
233
+ ('remote_windows(调试专用勿选)', 'remote_windows'),
234
+ ('windows_background - DMM 版后台挂机(实验性)', 'windows_background'),
235
+ ('nemu_ipc - MuMu 模拟器专属(推荐)', 'nemu_ipc')
236
+ ],
215
237
  value=backend_config.screenshot_impl, label="截图方法", interactive=True
216
238
  )
217
239
  self._bind(comps['screenshot'], ref(of(backend_config).screenshot_impl))
@@ -224,10 +246,10 @@ class SettingsView:
224
246
  is_mumu = 'mumu' in backend_type
225
247
  # 1. 检查 DMM 兼容性
226
248
  if backend_type == 'dmm':
227
- if impl != 'windows' and impl != 'remote_windows':
249
+ if impl != 'windows' and impl != 'remote_windows' and impl != 'windows_background':
228
250
  Alert(
229
251
  title="提示",
230
- value="DMM 版本仅支持 `windows` 截图方式",
252
+ value="DMM 版本仅支持 `windows` 或 `windows_background` 截图方式",
231
253
  variant="warning",
232
254
  show_close=False
233
255
  )
@@ -248,7 +270,7 @@ class SettingsView:
248
270
  variant="info",
249
271
  show_close=False
250
272
  )
251
- elif impl in ['windows', 'remote_windows']:
273
+ elif impl in ['windows', 'remote_windows', 'windows_background']:
252
274
  Alert(
253
275
  title="提示",
254
276
  value="模拟器不支持 `windows` 截图方式,建议使用 `adb` 或 `nemu_ipc`",
kaa/config/upgrade.py CHANGED
@@ -14,8 +14,6 @@ def upgrade_config() -> str | None:
14
14
  # 避免循环依赖,这里再进行本地导入
15
15
  from .migrations import MIGRATION_REGISTRY, LATEST_VERSION # pylint: disable=import-outside-toplevel
16
16
 
17
- logger.setLevel(logging.DEBUG)
18
- print('1212121212')
19
17
  config_path = "config.json"
20
18
  if not os.path.exists(config_path):
21
19
  logger.debug("config.json not found. Skip upgrade.")
kaa/main/gr.py CHANGED
@@ -40,7 +40,8 @@ def main(kaa_ins: Kaa, start_immediately: bool = False):
40
40
  # Set log level from config
41
41
  log_level_str = facade.config_service.get_options().misc.log_level
42
42
  log_level = logging.DEBUG if log_level_str == 'verbose' else logging.INFO
43
- logging.getLogger().setLevel(log_level)
43
+ logging.getLogger('kaa').setLevel(log_level)
44
+ logging.getLogger('kotonebot').setLevel(log_level)
44
45
  logger.info(f"Log level set to {log_level_str.upper()}")
45
46
 
46
47
 
kaa/main/kaa.py CHANGED
@@ -11,20 +11,8 @@ from typing_extensions import override
11
11
 
12
12
  import cv2
13
13
 
14
- from kaa.errors import WindowsOnlyError
15
14
  from kotonebot.util import is_windows
16
15
  from kotonebot.client.host.mumu12_host import MuMu12HostConfig
17
-
18
- from kotonebot.client.device import Device
19
- from kotonebot.ui import user
20
- from kotonebot import KotoneBot
21
- from ..util.paths import get_ahk_path
22
- from ..kaa_context import _set_instance
23
- if is_windows():
24
- from .dmm_host import DmmHost, DmmInstance
25
- else:
26
- DmmHost = DmmInstance = None
27
- from ..config import BaseConfig, upgrade_config
28
16
  from kotonebot.config.base_config import UserConfig
29
17
  from kotonebot.client.host import (
30
18
  Mumu12Host, LeidianHost, Mumu12Instance,
@@ -35,6 +23,19 @@ from kotonebot.client.host.protocol import (
35
23
  Instance, AdbHostConfig, WindowsHostConfig,
36
24
  RemoteWindowsHostConfig
37
25
  )
26
+ from kotonebot.primitives.geometry import Size
27
+ from kotonebot.client.device import Device, WindowsDevice
28
+ from kotonebot.ui import user
29
+ from kotonebot import KotoneBot
30
+
31
+ from kaa.errors import WindowsOnlyError
32
+ from ..util.paths import get_ahk_path
33
+ from ..kaa_context import _set_instance
34
+ if is_windows():
35
+ from .dmm_host import DmmHost, DmmInstance
36
+ else:
37
+ DmmHost = DmmInstance = None
38
+ from ..config import BaseConfig, upgrade_config
38
39
 
39
40
  # 初始化日志
40
41
  format = '[%(asctime)s][%(levelname)s][%(name)s:%(lineno)d] %(message)s'
@@ -137,6 +138,11 @@ class Kaa(KotoneBot):
137
138
  user_config = config.user_configs[0] # HACK: 硬编码
138
139
  target_screenshot_interval = user_config.backend.target_screenshot_interval
139
140
 
141
+ from kotonebot.config.config import conf
142
+ from kotonebot.client.scaler import PortraitGameScaler
143
+ conf().device.default_scaler_factory = lambda: PortraitGameScaler()
144
+ conf().device.default_logic_resolution = Size(720, 1280)
145
+
140
146
  d = self._on_create_device()
141
147
  init_context(
142
148
  config_path=self.config_path,
@@ -263,25 +269,40 @@ class Kaa(KotoneBot):
263
269
  impl_name = user_config.backend.screenshot_impl
264
270
 
265
271
  if DmmInstance and isinstance(self.backend_instance, DmmInstance):
272
+ d = WindowsDevice()
266
273
  if impl_name == 'windows':
274
+ from kotonebot.client.implements.windows import WindowsImpl
267
275
  ahk_path = get_ahk_path()
268
- host_conf = WindowsHostConfig(
276
+ impl = WindowsImpl(
277
+ device=d,
269
278
  window_title='gakumas',
270
279
  ahk_exe_path=ahk_path
271
280
  )
281
+ touch = impl
282
+ screenshot = impl
272
283
  elif impl_name == 'remote_windows':
273
- ahk_path = get_ahk_path()
274
- host_conf = RemoteWindowsHostConfig(
275
- windows_host_config=WindowsHostConfig(
276
- window_title='gakumas',
277
- ahk_exe_path=ahk_path
278
- ),
284
+ from kotonebot.client.implements.remote_windows import RemoteWindowsImpl
285
+ impl = RemoteWindowsImpl(
286
+ device=d,
279
287
  host=user_config.backend.adb_ip,
280
288
  port=user_config.backend.adb_port
281
289
  )
290
+ elif impl_name == 'windows_background':
291
+ from kotonebot.client.implements.windows import WindowsImpl
292
+ from kotonebot.client.implements.windows.send_message import SendMessageImpl
293
+ from kotonebot.client.implements.windows.print_window import PrintWindowImpl
294
+ impl = WindowsImpl(
295
+ device=d,
296
+ window_title='gakumas',
297
+ ahk_exe_path=''
298
+ )
299
+ screenshot = PrintWindowImpl(d, 'gakumas')
300
+ touch = SendMessageImpl(d, 'gakumas', wait_cursor_idle=user_config.backend.cursor_wait_speed)
282
301
  else:
283
302
  raise ValueError(f"Impl of '{impl_name}' is not supported on DMM.")
284
- return self.backend_instance.create_device(impl_name, host_conf)
303
+ d._screenshot = screenshot
304
+ d._touch = touch
305
+ return d
285
306
  # 统一处理所有基于 ADB 的后端
286
307
  elif isinstance(self.backend_instance, (CustomInstance, Mumu12Instance, LeidianInstance)):
287
308
  if impl_name == 'nemu_ipc' and isinstance(self.backend_instance, Mumu12Instance):
@@ -310,6 +331,5 @@ class Kaa(KotoneBot):
310
331
  )
311
332
  else:
312
333
  raise ValueError(f"{user_config.backend.type} backend does not support implementation '{impl_name}'")
313
-
314
334
  else:
315
- raise TypeError(f"Unknown instance type: {type(self.backend_instance)}")
335
+ raise TypeError(f"Unknown instance type: {type(self.backend_instance)}")
kaa/metadata.py CHANGED
@@ -1,6 +1,18 @@
1
1
  WHATS_NEW = """
2
2
  # 更新日志
3
3
  ## kaa
4
+ ### v2026.02b1
5
+ 发布日期:2026-02-03
6
+
7
+ 【更新内容】
8
+ 支持 DMM 版后台挂机功能(实验性)
9
+
10
+ ### v2025.11.post4
11
+ 发布日期:2026-01-13
12
+
13
+ 【更新内容】
14
+ 修复了 PyAV 依赖安装问题
15
+
4
16
  ### v2025.11.post3
5
17
  发布日期:2025-12-16
6
18
 
kaa/resources/game.db CHANGED
Binary file
Binary file