From fb01362a9dd816fc0d0e50052ab4764dd30e46f3 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Thu, 1 May 2025 17:06:41 -0400 Subject: You know we love updating with a horrendous commit message --- assets/avatars/biggaymikey.png | Bin 0 -> 3199 bytes assets/avatars/henriqmarq.png | Bin 0 -> 5956 bytes assets/avatars/piet290106.png | Bin 0 -> 1085 bytes assets/avatars/realnaesten.png | Bin 0 -> 1295 bytes assets/avatars/sandcork.png | Bin 0 -> 1281 bytes assets/avatars/saxtonhale.png | Bin 0 -> 6390 bytes assets/avatars/sschr15.png | Bin 0 -> 3994 bytes assets/avatars/u_danielpancake.png | Bin 0 -> 5418 bytes assets/bible.txt | 6 +- assets/emotes/115849 | Bin 0 -> 1282 bytes assets/emotes/1660776 | Bin 0 -> 2420 bytes assets/emotes/1774927 | Bin 0 -> 1950 bytes assets/emotes/300349835 | Bin 0 -> 549 bytes assets/emotes/300703497 | Bin 0 -> 2182 bytes assets/emotes/301158222 | Bin 0 -> 1932 bytes assets/emotes/301594376 | Bin 0 -> 2305 bytes assets/emotes/302160774 | Bin 0 -> 2360 bytes assets/emotes/302303594 | Bin 0 -> 2548 bytes assets/emotes/303141009 | Bin 0 -> 2697 bytes assets/emotes/303446318 | Bin 0 -> 2616 bytes assets/emotes/303985776 | Bin 0 -> 2663 bytes assets/emotes/304560154 | Bin 0 -> 2867 bytes assets/emotes/304669968 | Bin 0 -> 2145 bytes assets/emotes/304935642 | Bin 0 -> 1447 bytes assets/emotes/305595705 | Bin 0 -> 1476 bytes assets/emotes/306103472 | Bin 0 -> 1738 bytes assets/emotes/306834544 | Bin 0 -> 2601 bytes assets/emotes/306954813 | Bin 0 -> 2128 bytes assets/emotes/307378409 | Bin 0 -> 2493 bytes assets/emotes/307439015 | Bin 0 -> 2054 bytes assets/emotes/307923721 | Bin 0 -> 2308 bytes assets/emotes/555555579 | Bin 0 -> 1350 bytes assets/emotes/555555598 | Bin 0 -> 1220 bytes assets/emotes/555555607 | Bin 0 -> 1008 bytes assets/emotes/59197 | Bin 0 -> 295 bytes assets/emotes/965074 | Bin 0 -> 2312 bytes .../emotesv2_00d73b20810c4a9d927504e9f6cdeb36 | Bin 0 -> 2396 bytes .../emotesv2_0114d29bcd9948118c18b1e109f11c4c | Bin 0 -> 10625 bytes .../emotesv2_0144df8700a347f6b15a9356ab7d1c8e | Bin 0 -> 1773 bytes .../emotesv2_03d86390639442619fd0622f942c733e | Bin 0 -> 2580 bytes .../emotesv2_04508324c80c4a7ebd80299d3848d4f1 | Bin 0 -> 1996 bytes .../emotesv2_046d67d12b964cca8d0ff59fd33c772d | Bin 0 -> 2614 bytes .../emotesv2_06693c5360e540cba523931b2b572067 | Bin 0 -> 17217 bytes .../emotesv2_085fa9bbdafb492a87ed30c5404f3351 | Bin 0 -> 2650 bytes .../emotesv2_09e7debf334b4468bcfafdb701cb5452 | Bin 0 -> 2201 bytes .../emotesv2_09f550504f554181b2872b2ad87fa87a | Bin 0 -> 33606 bytes .../emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637 | Bin 0 -> 12585 bytes .../emotesv2_0b22800b20e048f0b654d9f4186021ab | Bin 0 -> 5201 bytes .../emotesv2_0b7f1a595597464289a76f5e314b197b | Bin 0 -> 39110 bytes .../emotesv2_0d69ef6192df4046b8fca6da4628fab5 | Bin 0 -> 2605 bytes .../emotesv2_0db450901941479d8be1aedd71bc4219 | Bin 0 -> 2513 bytes .../emotesv2_0ea0ac068b5647c49c078cf5de809cff | Bin 0 -> 2590 bytes .../emotesv2_0ef6f81c5cc34decba443627e6354f5f | Bin 0 -> 11487 bytes .../emotesv2_0f6c6b275411418e84fcd0faaeb62b8e | Bin 0 -> 4710 bytes .../emotesv2_1007959c05e1467bb909138fb87da44c | Bin 0 -> 510 bytes .../emotesv2_102e30a079c54d67ab1727fbe7771d5b | Bin 0 -> 3861 bytes .../emotesv2_10a256a15fa24228b668767340c56444 | Bin 0 -> 2296 bytes .../emotesv2_117f55be2f3846f4bf647d938e6563f7 | Bin 0 -> 2203 bytes .../emotesv2_127129806d4a4af09cc0b66e859fe27b | Bin 0 -> 2449 bytes .../emotesv2_13e7ca6c12544488b598282afb358fb7 | Bin 0 -> 2354 bytes .../emotesv2_15ba288acf8d455fbf665e03ccc3e2f2 | Bin 0 -> 2533 bytes .../emotesv2_162a0795f3224283a4fd0570196d2ca9 | Bin 0 -> 51738 bytes .../emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40 | Bin 0 -> 2729 bytes .../emotesv2_172d963ff07a460e951db94069dcc3be | Bin 0 -> 2261 bytes .../emotesv2_17a13f9699d74d4e932b977e49e9b9a5 | Bin 0 -> 1881 bytes .../emotesv2_196135ee78f1497a8bf66a3d2e485524 | Bin 0 -> 9547 bytes .../emotesv2_19dcd63feed242088d622d53c80068a6 | Bin 0 -> 2613 bytes .../emotesv2_1a3cf1aa33bf448588cb9954e6faf23d | Bin 0 -> 11909 bytes .../emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1 | Bin 0 -> 2347 bytes .../emotesv2_1adf9cb4c8054fdfa282f6fc174764cf | Bin 0 -> 2567 bytes .../emotesv2_1bf4277cbbb24196a03a94b8132e27ba | Bin 0 -> 2518 bytes .../emotesv2_1c43a903c5d247808fb0a081fda6f939 | Bin 0 -> 1447 bytes .../emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d | Bin 0 -> 15251 bytes .../emotesv2_202f6ec2051946cfad299e6950ece887 | Bin 0 -> 1001 bytes .../emotesv2_2072304653af4152aed66e471a958591 | Bin 0 -> 2778 bytes .../emotesv2_20a5c29af55240d4a276e0ffd828db3e | Bin 0 -> 21054 bytes .../emotesv2_228ae199127d4ed4b9e9520816fe354c | Bin 0 -> 1911 bytes .../emotesv2_229ef85e3c77488e97a1f814a38ed9b4 | Bin 0 -> 15396 bytes .../emotesv2_23d2f3e5baff4729ae053d9fc0199ff8 | Bin 0 -> 14094 bytes .../emotesv2_24203cb01ea043a78baaa72a7fc68471 | Bin 0 -> 2335 bytes .../emotesv2_24e7b9e915bb4ec7bd976c8772580a48 | Bin 0 -> 11702 bytes .../emotesv2_24efb590db6849a0bfbc7f25e64b2b3a | Bin 0 -> 46329 bytes .../emotesv2_24fb54e0db67481e971c8cf1744a53a7 | Bin 0 -> 2795 bytes .../emotesv2_250231b9fb3c4a849d15ebd7a0c923bf | Bin 0 -> 2623 bytes .../emotesv2_252b80f7b02a4ffca1bd206f84981232 | Bin 0 -> 19772 bytes .../emotesv2_256369ace7b54ee090390d3a17461274 | Bin 0 -> 2644 bytes .../emotesv2_25e1eb365e5c41169c48cc7f651e473b | Bin 0 -> 1672 bytes .../emotesv2_26672983fce4494589b81a85473147ad | Bin 0 -> 2005 bytes .../emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb | Bin 0 -> 2225 bytes .../emotesv2_2801a662aca14585aecb9b701dabdddf | Bin 0 -> 2606 bytes .../emotesv2_28d84c4284b04111b1f6d11c386cfd96 | Bin 0 -> 23868 bytes .../emotesv2_2b3ea10e11e943b8810abda89b760c4c | Bin 0 -> 13660 bytes .../emotesv2_2cca1fc234c24812b1bfacc040a1a0cb | Bin 0 -> 15348 bytes .../emotesv2_2dfde60feba94161b23e49eb008a1ae4 | Bin 0 -> 15953 bytes .../emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87 | Bin 0 -> 2369 bytes .../emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4 | Bin 0 -> 1936 bytes .../emotesv2_2ffb6149f5f5402f97e3934a311432e1 | Bin 0 -> 9920 bytes .../emotesv2_31bcf88bddb646ccbce3053f02d9153d | Bin 0 -> 60925 bytes .../emotesv2_337f7545c212432db52a0ea0373ba31d | Bin 0 -> 2605 bytes .../emotesv2_339c58c55dd94148844b67e9de97b2ab | Bin 0 -> 2618 bytes .../emotesv2_34d1f8827eb641099062e3518e340575 | Bin 0 -> 2665 bytes .../emotesv2_355c00cd40744178a3d05452e104e072 | Bin 0 -> 54938 bytes .../emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6 | Bin 0 -> 2268 bytes .../emotesv2_3753bb482cae4446a7ca69d353916990 | Bin 0 -> 30621 bytes .../emotesv2_37a732dff9694b5ba621136ebbe4c90b | Bin 0 -> 4268 bytes .../emotesv2_38436724a19a4a839060feab98894017 | Bin 0 -> 21128 bytes .../emotesv2_38f709a70a434988b3ea41dcfcde32a7 | Bin 0 -> 2331 bytes .../emotesv2_398073c05e6f47b18d23402be38e306c | Bin 0 -> 3819 bytes .../emotesv2_3a9b8692e89440ed92db8555dd599191 | Bin 0 -> 2425 bytes .../emotesv2_3d0545fa611f44f6b7c25c658321fa10 | Bin 0 -> 2580 bytes .../emotesv2_3d0c77cd056e457685f49204e9a342f3 | Bin 0 -> 3899 bytes .../emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf | Bin 0 -> 15439 bytes .../emotesv2_3d999db390104c24b42d10d6292290d7 | Bin 0 -> 6299 bytes .../emotesv2_3dfbda628997420a8d74dd0fa04d8964 | Bin 0 -> 2610 bytes .../emotesv2_407d9b46b9894896b60aff7c9b10534e | Bin 0 -> 2119 bytes .../emotesv2_4152261ae0d0473aaa84a26fdbad9f6e | Bin 0 -> 2516 bytes .../emotesv2_41cb3d8210e3480a80a4c5f2d871dda8 | Bin 0 -> 2524 bytes .../emotesv2_440ef982eb47436eb09e99975a59474a | Bin 0 -> 1107 bytes .../emotesv2_441b0cd9a965438990b5bc69a9a35507 | Bin 0 -> 74743 bytes .../emotesv2_4669a2ba1f7f4381a3b4b0b298e23008 | Bin 0 -> 2444 bytes .../emotesv2_4845aea689bd4044a2a67f9f7c950da0 | Bin 0 -> 2520 bytes .../emotesv2_48468328d2524efc9dede95c680200a4 | Bin 0 -> 2593 bytes .../emotesv2_48a1c027c57a4c42b3cf4af51863e6df | Bin 0 -> 2763 bytes .../emotesv2_48d82508ea81496c8fd108c2a376656f | Bin 0 -> 6282 bytes .../emotesv2_495d3674d06e44bbbdea34244b6b5d82 | Bin 0 -> 1845 bytes .../emotesv2_49abeb068b5b4705bec832c4729eb794 | Bin 0 -> 8013 bytes .../emotesv2_4b0234918f3f4a60a32d94f31e512505 | Bin 0 -> 2416 bytes .../emotesv2_4c67ea457d434e3fa289ec9402a42551 | Bin 0 -> 7443 bytes .../emotesv2_4c682fe3720246c78ed925ab053d8766 | Bin 0 -> 2623 bytes .../emotesv2_4e98413cbeae4aceabf13666fee68809 | Bin 0 -> 1536 bytes .../emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9 | Bin 0 -> 1912 bytes .../emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3 | Bin 0 -> 23836 bytes .../emotesv2_50484a4550ad48d8a34456e1b5216cd4 | Bin 0 -> 2447 bytes .../emotesv2_523cbb164f4c481caba353298c0125db | Bin 0 -> 23552 bytes .../emotesv2_52dff8e1e96d4384935d49aa0d56d38b | Bin 0 -> 2580 bytes .../emotesv2_536da87d32584600abde1f5af66c5288 | Bin 0 -> 2331 bytes .../emotesv2_53a5fea263714afc96e08711d15ea780 | Bin 0 -> 2286 bytes .../emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d | Bin 0 -> 2255 bytes .../emotesv2_547e8c955abf4137937b05933df0b772 | Bin 0 -> 2178 bytes .../emotesv2_54e7302e687b4b3387f469f21ef3c726 | Bin 0 -> 2492 bytes .../emotesv2_55129b7cd7a444a8a649f44d4ed82fa4 | Bin 0 -> 1013 bytes .../emotesv2_555e43b97c8a42d7aabe218a6765a108 | Bin 0 -> 2433 bytes .../emotesv2_55800dceae8b4a09a315a60adddd7b80 | Bin 0 -> 2577 bytes .../emotesv2_58606ffb5fd54f96a7734f8fe2216928 | Bin 0 -> 3102 bytes .../emotesv2_596ac55cb1634c03b0cd40d671f5d762 | Bin 0 -> 2614 bytes .../emotesv2_596bbffcdc4645e89aa802bf44043864 | Bin 0 -> 2601 bytes .../emotesv2_59cb01861aa6483d81b2257eb5a6e5b0 | Bin 0 -> 1735 bytes .../emotesv2_5ae132d15449480a9b65ed422ef93c7f | Bin 0 -> 2601 bytes .../emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93 | Bin 0 -> 2664 bytes .../emotesv2_5b335cd372da4e3394272117135220ab | Bin 0 -> 60037 bytes .../emotesv2_5c57d48d429d4828be043c26addb0bcb | Bin 0 -> 16703 bytes .../emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1 | Bin 0 -> 2432 bytes .../emotesv2_5dc5c73e383f46259f45baa7b6c317eb | Bin 0 -> 2297 bytes .../emotesv2_5e07afac8d504960b02ba7b036f3d6da | Bin 0 -> 1332 bytes .../emotesv2_5e109c2a05094f16a46bfbc52d210f61 | Bin 0 -> 2181 bytes .../emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c | Bin 0 -> 2570 bytes .../emotesv2_5f69a9fed5d24dc79df25453c7d72a90 | Bin 0 -> 1973 bytes .../emotesv2_601930df6e434791a5873d65414a5849 | Bin 0 -> 2452 bytes .../emotesv2_604ae91dae224b789962e70a805f3c3f | Bin 0 -> 2641 bytes .../emotesv2_6058cffdb65341feaff3d6368536464e | Bin 0 -> 26775 bytes .../emotesv2_613ccd272ebf450d84c457bd16c9819c | Bin 0 -> 19587 bytes .../emotesv2_61d8e83a99f849118dd5489f6cdf0929 | Bin 0 -> 7077 bytes .../emotesv2_62791a27ec384ccb96e27defb5277067 | Bin 0 -> 2463 bytes .../emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f | Bin 0 -> 21631 bytes .../emotesv2_6444f5cbf53640f1beccfcb29ed02ae6 | Bin 0 -> 6972 bytes .../emotesv2_6456fcf4f15f4f4f80eb27becc290615 | Bin 0 -> 2570 bytes .../emotesv2_64cf7ab508eb4947a73ef1d7a38e0984 | Bin 0 -> 2498 bytes .../emotesv2_64f50bf400324ec68b8207aac282e454 | Bin 0 -> 1678 bytes .../emotesv2_64fd59354add4e3f80fdcaf32850e761 | Bin 0 -> 12549 bytes .../emotesv2_65e924d6dc194a6c863845e8dfe83943 | Bin 0 -> 2118 bytes .../emotesv2_662145dd4e844282affbf06df8e261b8 | Bin 0 -> 18870 bytes .../emotesv2_66d371de61d64d32bee1d47b26dfe238 | Bin 0 -> 44755 bytes .../emotesv2_67d8334685e94c7380f92503a30e1c48 | Bin 0 -> 2282 bytes .../emotesv2_69aa5755b0454c01bebc9a35cd861722 | Bin 0 -> 2409 bytes .../emotesv2_69f8434749e343d8926967a564dbc908 | Bin 0 -> 57990 bytes .../emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8 | Bin 0 -> 2628 bytes .../emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03 | Bin 0 -> 38930 bytes .../emotesv2_6ad945d63ffa47aabd1ccff4871a0283 | Bin 0 -> 8001 bytes .../emotesv2_6b03a429ecd545ed98af41dba25f490a | Bin 0 -> 2610 bytes .../emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b | Bin 0 -> 13020 bytes .../emotesv2_6b94432ee31b4f909adab1058209a268 | Bin 0 -> 9249 bytes .../emotesv2_6ca8feb8f3f2466eb9acc98e3089911b | Bin 0 -> 2320 bytes .../emotesv2_6e7afafe028d4059b7a050d00a18a401 | Bin 0 -> 5229 bytes .../emotesv2_6ef79d00b5e0447ca9a3c8170f3df006 | Bin 0 -> 17497 bytes .../emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7 | Bin 0 -> 2618 bytes .../emotesv2_6f1d1da892d542748afbbfef36e0aa28 | Bin 0 -> 2611 bytes .../emotesv2_6f47210c1f6240458420b9db0b5ec9c5 | Bin 0 -> 5821 bytes .../emotesv2_703b0a29ebd843dcb9b02b415a56ab5d | Bin 0 -> 2226 bytes .../emotesv2_70700345e3384219a35d7af9e75f9395 | Bin 0 -> 2129 bytes .../emotesv2_71276b021c024affa2a4ffab59d32c56 | Bin 0 -> 41117 bytes .../emotesv2_732a78769b5643fd93ab2c72821b51c4 | Bin 0 -> 7579 bytes .../emotesv2_73846909f8f24164b41a275b39658fd0 | Bin 0 -> 2986 bytes .../emotesv2_73f434f2f56f48f08367155f22cd4867 | Bin 0 -> 23839 bytes .../emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF | Bin 0 -> 2197 bytes .../emotesv2_75eea89c64dd415188edb2d2e6ffd66e | Bin 0 -> 2506 bytes .../emotesv2_75eee2ab9e8244eaae2c141dc14c62f8 | Bin 0 -> 2803 bytes .../emotesv2_76d148292d704c348b40c48e7a906809 | Bin 0 -> 5010 bytes .../emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e | Bin 0 -> 19176 bytes .../emotesv2_77d15834e97240049c811ed3d967b190 | Bin 0 -> 5297 bytes .../emotesv2_785cb1a26b244fb38f83b0278b5ff10f | Bin 0 -> 2855 bytes .../emotesv2_78c9b1149e024ed1be6022f8a341e3b2 | Bin 0 -> 2793 bytes .../emotesv2_78f915520b4440d68e0333c7e41e9200 | Bin 0 -> 2431 bytes .../emotesv2_796d85ec687047b49aea8c7e74f6b58b | Bin 0 -> 2122 bytes .../emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07 | Bin 0 -> 1988 bytes .../emotesv2_7b07e86b0efe4b5dbffae545a0a246d3 | Bin 0 -> 2476 bytes .../emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231 | Bin 0 -> 2376 bytes .../emotesv2_7d4909238e2c4ff29d1035967b3320ca | Bin 0 -> 2925 bytes .../emotesv2_7e4fb21379b446bc917acf6da6173a26 | Bin 0 -> 11725 bytes .../emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970 | Bin 0 -> 2616 bytes .../emotesv2_8064ffd3794142749a01291e77c269aa | Bin 0 -> 2582 bytes .../emotesv2_807683797c134435b03ce421d2a69f18 | Bin 0 -> 2014 bytes .../emotesv2_8235d7c49b90499687d252f5d578c4cf | Bin 0 -> 517 bytes .../emotesv2_834c09086613410794fc144b05205854 | Bin 0 -> 16749 bytes .../emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05 | Bin 0 -> 2663 bytes .../emotesv2_8469d0ac664e4678aad3dbdeacd74a80 | Bin 0 -> 2722 bytes .../emotesv2_85ce95a4b41244699ae283971f4754ea | Bin 0 -> 2010 bytes .../emotesv2_85faafce7d71481cb62c708820b0be84 | Bin 0 -> 13508 bytes .../emotesv2_867d55a7f9b644e2b15c10234383b25f | Bin 0 -> 51288 bytes .../emotesv2_88ce587d51b048acabd8d332bcce95d5 | Bin 0 -> 2076 bytes .../emotesv2_8a69a54b34d345ae992f87e0a1a0b44c | Bin 0 -> 2772 bytes .../emotesv2_8aef87f335cf4d3284a4a924b90b60de | Bin 0 -> 2305 bytes .../emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f | Bin 0 -> 7721 bytes .../emotesv2_8bfa9bb4113b48b8ba213f404d7371c8 | Bin 0 -> 2136 bytes .../emotesv2_8d06d108c90a458b91457714b34d0836 | Bin 0 -> 2751 bytes .../emotesv2_8d31fb106b2f41aebc507189d969be11 | Bin 0 -> 8262 bytes .../emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a | Bin 0 -> 1875 bytes .../emotesv2_8e90b13948ff46d88867eed684c38b9d | Bin 0 -> 5516 bytes .../emotesv2_8fe388f1f47946ffa4a8b0b488616944 | Bin 0 -> 10270 bytes .../emotesv2_906dc8700ed74ee1bbef2df094683a8b | Bin 0 -> 14508 bytes .../emotesv2_90dcebf25baa4478a43bcd86910ede62 | Bin 0 -> 2247 bytes .../emotesv2_90ea6219add542d0ada501643a727a27 | Bin 0 -> 12720 bytes .../emotesv2_916553f67e7841d3b2674fbf5aeba3cf | Bin 0 -> 2596 bytes .../emotesv2_91f4334f495446b582fe77923f4589ff | Bin 0 -> 2583 bytes .../emotesv2_920d701333c94fba94f5aed29053c077 | Bin 0 -> 2489 bytes .../emotesv2_92ebb9517ce4470ab5e574181129d4d9 | Bin 0 -> 2799 bytes .../emotesv2_93c07b986a8c427ba497e210b11fb84c | Bin 0 -> 5212 bytes .../emotesv2_944938feb3694525b5d91dc9e52dc615 | Bin 0 -> 2604 bytes .../emotesv2_9458ff7ff9c74dc0975db037b7eebbee | Bin 0 -> 2704 bytes .../emotesv2_949e6a7df0c74af28e829587741e338c | Bin 0 -> 10286 bytes .../emotesv2_97f01191fbe24496813d18c4d98d7881 | Bin 0 -> 15642 bytes .../emotesv2_98bee893c21c4e1d84393278ea219e1c | Bin 0 -> 39107 bytes .../emotesv2_99696770a9ed4f24bcac6bac7a97d3d4 | Bin 0 -> 35209 bytes .../emotesv2_997611a1e0734112a27322514282d83a | Bin 0 -> 3981 bytes .../emotesv2_99f3ad0175d8433aac306c020760bf23 | Bin 0 -> 32811 bytes .../emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90 | Bin 0 -> 23355 bytes .../emotesv2_9a373a06200b405e8646464f1d11ca92 | Bin 0 -> 1914 bytes .../emotesv2_9a3d4ab4a6364c9fa28436d9f0984739 | Bin 0 -> 16146 bytes .../emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK | Bin 0 -> 2284 bytes .../emotesv2_9b12eb15d9e34d3a85e650a4de6fd756 | Bin 0 -> 2342 bytes .../emotesv2_9c59a8fafe554da1a07d34e418ec2b30 | Bin 0 -> 10086 bytes .../emotesv2_9c9d5e65cac84a1f8dd7e3347df51628 | Bin 0 -> 1678 bytes .../emotesv2_9cf6a2b276fb487f9ee404863e65fde9 | Bin 0 -> 3501 bytes .../emotesv2_9d24ff5266624d87ad21273ae8975c27 | Bin 0 -> 1969 bytes .../emotesv2_9da7d4bef516407780ce83637d00d8c0 | Bin 0 -> 9959 bytes .../emotesv2_9dbe9c73ba6a41aebd04b80d269b4874 | Bin 0 -> 2059 bytes .../emotesv2_9e52134eec8a4ebeaef76d5a01df12bb | Bin 0 -> 18690 bytes .../emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed | Bin 0 -> 5904 bytes .../emotesv2_9f799a4bba3746a188cbe06c6deb27a5 | Bin 0 -> 60331 bytes .../emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb | Bin 0 -> 2765 bytes .../emotesv2_a21052eac36246cc8ef494e2b4ca5beb | Bin 0 -> 2683 bytes .../emotesv2_a224841e21d942a5973c8ad2db45ddf1 | Bin 0 -> 7859 bytes .../emotesv2_a2aa8aced4a3465fba36aababbfd18da | Bin 0 -> 2461 bytes .../emotesv2_a2daa9b241b34608906b6f00f83d4ea0 | Bin 0 -> 2703 bytes .../emotesv2_a39d2bff69ce426e92213f2b8685d710 | Bin 0 -> 27954 bytes .../emotesv2_a41d9735bf524aa2bcd81171327e7376 | Bin 0 -> 9989 bytes .../emotesv2_a43387948f1241f78a30c33fba4f5dad | Bin 0 -> 2338 bytes .../emotesv2_a439fec7855b473681dc8f797f1693dd | Bin 0 -> 6237 bytes .../emotesv2_a5e4b28e4ee44206a6aa3ee557b35486 | Bin 0 -> 8039 bytes .../emotesv2_a859e01f62e242078bfb1002ce291e3b | Bin 0 -> 20309 bytes .../emotesv2_a8661b1e6169427ca02fccaac2928837 | Bin 0 -> 1542 bytes .../emotesv2_a97550bc6cb0478e9c9a76724e7847ed | Bin 0 -> 2354 bytes .../emotesv2_aa0db43abbb34a8ba19e22242283a172 | Bin 0 -> 2141 bytes .../emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630 | Bin 0 -> 2074 bytes .../emotesv2_aba4cea4561b4828996cd6891db7911c | Bin 0 -> 2518 bytes .../emotesv2_ae2aab1595f14c52a2eb259a4540d695 | Bin 0 -> 17701 bytes .../emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea | Bin 0 -> 2543 bytes .../emotesv2_aeaad1bf57ed41349ec000954c82c416 | Bin 0 -> 2359 bytes .../emotesv2_aebf67a681334939baf6fb54b31704de | Bin 0 -> 54660 bytes .../emotesv2_af01dc502bc04dfe9b1f4547d649555d | Bin 0 -> 2355 bytes .../emotesv2_afb231ade7b84be8b91d080231c20b63 | Bin 0 -> 38510 bytes .../emotesv2_b0a25a30fd0340a6acefdc59848d3f66 | Bin 0 -> 5084 bytes .../emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d | Bin 0 -> 8550 bytes .../emotesv2_b14f9e00c2ce41cea1a74d08dea2b392 | Bin 0 -> 2580 bytes .../emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf | Bin 0 -> 26930 bytes .../emotesv2_b43ce8897c5249b79ab08c352a0d9f5e | Bin 0 -> 4770 bytes .../emotesv2_b6285d5ff45a436bb84708e0207bab81 | Bin 0 -> 2612 bytes .../emotesv2_b6ae9db72ba241d59bd01e95c3089c3c | Bin 0 -> 10602 bytes .../emotesv2_b72fd3d6129c4dea8af72a3a20d80494 | Bin 0 -> 2514 bytes .../emotesv2_b805a1050038436a83169e5280c9e7fc | Bin 0 -> 8793 bytes .../emotesv2_b815cf0140e047b7808c811715ec63e4 | Bin 0 -> 36298 bytes .../emotesv2_b86fe2576197436c8840b50cf48e9ac9 | Bin 0 -> 7279 bytes .../emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5 | Bin 0 -> 2563 bytes .../emotesv2_b8d7036477044b80b893a55d14f32373 | Bin 0 -> 2575 bytes .../emotesv2_b914697c0d4041ecba906fa112e8a0e9 | Bin 0 -> 38767 bytes .../emotesv2_b96b2a89b5824c3b8651446418deaa5b | Bin 0 -> 24137 bytes .../emotesv2_ba495d150a3b47f883944ecec9251c8f | Bin 0 -> 28581 bytes .../emotesv2_bc2f44a7844040eebdfdb68443c64b32 | Bin 0 -> 2730 bytes .../emotesv2_bcd077bbac71449f980047a4bf439e43 | Bin 0 -> 3568 bytes .../emotesv2_bcef669a36d3437ba5ba8801dfadafd7 | Bin 0 -> 2475 bytes .../emotesv2_c10146643c364881b52cf61cbc7e852c | Bin 0 -> 2839 bytes .../emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4 | Bin 0 -> 7150 bytes .../emotesv2_c2524e05d8c94909a13ae5428cfab66c | Bin 0 -> 2765 bytes .../emotesv2_c4297efd1428404d907bdaef9408c5be | Bin 0 -> 17109 bytes .../emotesv2_c59ad2008b3e4746b2b5f591faf1f042 | Bin 0 -> 3840 bytes .../emotesv2_c5e17de08a2e4cb688764d6f7cc72691 | Bin 0 -> 5180 bytes .../emotesv2_c7760d8993db4545b8f592f6716cdff1 | Bin 0 -> 2316 bytes .../emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f | Bin 0 -> 2159 bytes .../emotesv2_c817be650cb94acf981ae430fb0a067e | Bin 0 -> 34423 bytes .../emotesv2_c9f4ba1ebad14edb842c71a76eb22058 | Bin 0 -> 2542 bytes .../emotesv2_ca4747f9419a48fd8466c421a1448d52 | Bin 0 -> 2418 bytes .../emotesv2_cb17fcc22a1e4952893c09051d7230ad | Bin 0 -> 2270 bytes .../emotesv2_cb977a2198cc477e8d87040dbc074e04 | Bin 0 -> 28061 bytes .../emotesv2_cc1244310ec64345b621b427a64b9ff0 | Bin 0 -> 3865 bytes .../emotesv2_cc1563a19eaf4518a93326208de941d8 | Bin 0 -> 2114 bytes .../emotesv2_cc4bae3dd6004ef8a668618d10226f34 | Bin 0 -> 3129 bytes .../emotesv2_cc58b1f534234a56b52fee76cd0b093d | Bin 0 -> 1596 bytes .../emotesv2_cca96ad5b2be47d0bd59cd7dc160994a | Bin 0 -> 2334 bytes .../emotesv2_ce44ef87650443c79061723d9368d611 | Bin 0 -> 7595 bytes .../emotesv2_ceaff4832c4a44b9a77dcc2c74836c71 | Bin 0 -> 2438 bytes .../emotesv2_cf162aa48e9c4082bb9a6012881db79b | Bin 0 -> 3480 bytes .../emotesv2_cf9337c7743e4e7ba59e83b5cdde701d | Bin 0 -> 23772 bytes .../emotesv2_d01a9536e5e8435b9f290f03bf6bde66 | Bin 0 -> 2339 bytes .../emotesv2_d0d2ab28473d40efa93139d259a5dd43 | Bin 0 -> 2704 bytes .../emotesv2_d12afe51f6cb40478525b38e5a86e4e6 | Bin 0 -> 8678 bytes .../emotesv2_d1419b75bec14b51a65c3c18b4f63b6b | Bin 0 -> 2390 bytes .../emotesv2_d25bb3397e224ad4ae183c6e1e31b43c | Bin 0 -> 1940 bytes .../emotesv2_d351c5d5e9084402b30bc39eaa3d92ae | Bin 0 -> 2620 bytes .../emotesv2_d659f9f1b4d5497483c3d18ec0544343 | Bin 0 -> 2334 bytes .../emotesv2_d6a3268792a64e3aac81101ff5bb7d7a | Bin 0 -> 2420 bytes .../emotesv2_d8037bde20e24013bc2aa09188ee175e | Bin 0 -> 2378 bytes .../emotesv2_d86b5553a51a43c4acb8628b98030882 | Bin 0 -> 2499 bytes .../emotesv2_d92aa17179ba4eaea5fb58424932e2ab | Bin 0 -> 3541 bytes .../emotesv2_d970cfcb4e9d4424ad386275f354f710 | Bin 0 -> 33702 bytes .../emotesv2_d997a846522c49fb897fd04ab602d400 | Bin 0 -> 3043 bytes .../emotesv2_d9b0ba80d3da483b9413d540f8223897 | Bin 0 -> 7117 bytes .../emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203 | Bin 0 -> 18615 bytes .../emotesv2_da18fbc0476a409ab9b9993dd354b1ce | Bin 0 -> 6767 bytes .../emotesv2_da1b30dd1dd2434bb25aa3387ec519f2 | Bin 0 -> 11792 bytes .../emotesv2_dae8bd6237ce415b8fcecf152b1935d4 | Bin 0 -> 1888 bytes .../emotesv2_db14210d9e5c49c98052016c215851d3 | Bin 0 -> 2339 bytes .../emotesv2_dc26a4c918d64b7aafec8f851880fa22 | Bin 0 -> 67490 bytes .../emotesv2_dd46165a1b174154a5fc9c41b4b21c9b | Bin 0 -> 15530 bytes .../emotesv2_dd7976287e824779bd25fe01fde35450 | Bin 0 -> 28927 bytes .../emotesv2_de1e958d716f4445ba071608903118ac | Bin 0 -> 49942 bytes .../emotesv2_df3c519594b34023a9b6c39351cde471 | Bin 0 -> 6378 bytes .../emotesv2_dfa6f2de3f2d409c8047cee6916177ab | Bin 0 -> 3882 bytes .../emotesv2_e0d815be522d4cb7981901b0ad24fc0c | Bin 0 -> 2788 bytes .../emotesv2_e28989d3765a4fe09eb00b485c4b21d3 | Bin 0 -> 2593 bytes .../emotesv2_e3936760c213434f9a2274af69b86d52 | Bin 0 -> 31096 bytes .../emotesv2_e4cc68bdd50f4b5fa817a39c1368731f | Bin 0 -> 15982 bytes .../emotesv2_e4e88b54d26b49f698566e5489fdcfe4 | Bin 0 -> 2597 bytes .../emotesv2_e5ee44dde6564706a59ff4ecb3433df9 | Bin 0 -> 2179 bytes .../emotesv2_e691268bfafa486992762bec2441202a | Bin 0 -> 49342 bytes .../emotesv2_e6afb65a90c24504b523a773874d12e1 | Bin 0 -> 5457 bytes .../emotesv2_e6f3731ff902411299cabaa712eea353 | Bin 0 -> 14813 bytes .../emotesv2_e7a36a273ffb4e57a33f226f6112800d | Bin 0 -> 9710 bytes .../emotesv2_e8503f302ad9497a99000e01b7f3b8b0 | Bin 0 -> 3755 bytes .../emotesv2_e9a0023b833e4c13b215c41f42f5672b | Bin 0 -> 2408 bytes .../emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e | Bin 0 -> 2008 bytes .../emotesv2_ec03f0b48fb74f16aca015c5c15e38f1 | Bin 0 -> 2323 bytes .../emotesv2_ec174a3989c645dd8623da27cdde7b73 | Bin 0 -> 2433 bytes .../emotesv2_ed0b1401df3d452a83a3d9d10828899d | Bin 0 -> 1575 bytes .../emotesv2_ed166ec1ca4041dab9b057827e686741 | Bin 0 -> 8040 bytes .../emotesv2_ed57b8d35a5a406ebfed0f53eed4466c | Bin 0 -> 2740 bytes .../emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03 | Bin 0 -> 2234 bytes .../emotesv2_eed4a31efd7544b39ede266baee73115 | Bin 0 -> 1260 bytes .../emotesv2_eeecc537c43145f494d38a56dff16919 | Bin 0 -> 2416 bytes .../emotesv2_ef855e8769bf443cb28346970e1b8ebd | Bin 0 -> 2376 bytes .../emotesv2_f2160050c2ac44adbfaa851e162e8fc7 | Bin 0 -> 19728 bytes .../emotesv2_f2e3c56966434c33ab251383b47fc651 | Bin 0 -> 16703 bytes .../emotesv2_f2eccffec4dc4b12b804ac07c787be4a | Bin 0 -> 2773 bytes .../emotesv2_f3e53f09d0874f10b163eb26747af9a2 | Bin 0 -> 5080 bytes .../emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b | Bin 0 -> 2424 bytes .../emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34 | Bin 0 -> 10823 bytes .../emotesv2_f4d56acaef634ceebf587b1fd39c8a8c | Bin 0 -> 15995 bytes .../emotesv2_f5749d56658d44f788f345db3e1f6aa4 | Bin 0 -> 2659 bytes .../emotesv2_f6203bf938a5429ca692bfbcb8b2582c | Bin 0 -> 2646 bytes .../emotesv2_f7eae8ef8221464b9c13018354e1cbdc | Bin 0 -> 2757 bytes .../emotesv2_f89596826e504be6ac6b2664aa87de63 | Bin 0 -> 2344 bytes .../emotesv2_f8c4b68f134d4273a488237949d1244e | Bin 0 -> 2138 bytes .../emotesv2_fb61a9ec50d146fba2ef2926505ab58b | Bin 0 -> 2563 bytes .../emotesv2_fbd8e0e6e0594242b7916cf39b727d15 | Bin 0 -> 2749 bytes .../emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d | Bin 0 -> 2510 bytes .../emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9 | Bin 0 -> 4684 bytes .../emotesv2_fca9eca850ae45f699ac816a023e58c3 | Bin 0 -> 15752 bytes .../emotesv2_fcca511b79d148a2b5737967f0755ef9 | Bin 0 -> 808 bytes .../emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0 | Bin 0 -> 3189 bytes .../emotesv2_fd87dfd7b4cc429aa18c44b179299055 | Bin 0 -> 2322 bytes .../emotesv2_fee0414deb3c4d5fa1dac47c94413820 | Bin 0 -> 2241 bytes .../emotesv2_ff7f334cdeec4019a78a537ee0ba969f | Bin 0 -> 2408 bytes .../emotesv2_ffb97a63f2344a479358abbe54e98f19 | Bin 0 -> 2592 bytes assets/glossary/2025-03-14.txt | 1 + assets/glossary/2025-03-18.txt | 1 + assets/glossary/2025-03-21.txt | 1 + assets/glossary/2025-03-25.txt | 1 + assets/glossary/2025-03-28.txt | 1 + assets/glossary/2025-04-01.txt | 1 + assets/glossary/2025-04-04.txt | 1 + assets/glossary/2025-04-12.txt | 1 + assets/glossary/2025-04-15.txt | 1 + assets/glossary/2025-04-18.txt | 1 + assets/glossary/2025-04-22.txt | 1 + assets/glossary/2025-04-30.txt | 1 + assets/rats/users/GlamShatterskull.wav | Bin 0 -> 40044 bytes assets/rats/users/RealNaesten.wav | Bin 0 -> 40044 bytes src/gizmo/wasp-alert-message.el | 12 +- src/gizmo/wasp-animism.el | 57 +++ src/gizmo/wasp-aoc.el | 60 +-- src/gizmo/wasp-bannerads.el | 10 +- src/gizmo/wasp-biblicality.el | 70 +-- src/gizmo/wasp-bless.el | 60 +-- src/gizmo/wasp-chatsummary.el | 24 +- src/gizmo/wasp-copfish.el | 28 +- src/gizmo/wasp-curse.el | 252 ++++----- src/gizmo/wasp-cyclone.el | 36 +- src/gizmo/wasp-fakechat.el | 4 +- src/gizmo/wasp-flycheck.el | 20 +- src/gizmo/wasp-friend-callout.el | 106 ++++ src/gizmo/wasp-friend-eating.el | 18 + src/gizmo/wasp-friend-journalism.el | 45 ++ src/gizmo/wasp-friend-music.el | 31 ++ src/gizmo/wasp-friend-reading.el | 15 + src/gizmo/wasp-friend-voice.el | 70 +++ src/gizmo/wasp-friend.el | 562 ++++----------------- src/gizmo/wasp-hex.el | 363 ++++++------- src/gizmo/wasp-newspaper.el | 3 +- src/gizmo/wasp-wikipedia.el | 34 +- src/wasp-ai.el | 19 +- src/wasp-audio.el | 27 +- src/wasp-chat.el | 10 +- src/wasp-db.el | 10 +- src/wasp-event-handlers.el | 218 ++++---- src/wasp-model.el | 22 +- src/wasp-overlay.el | 76 ++- src/wasp-setup.el | 3 +- src/wasp-twitch-chat-commands.el | 16 +- src/wasp-twitch-redeems.el | 16 +- src/wasp-twitch.el | 8 +- src/wasp-user-stats.el | 13 + src/wasp-user-whitelist.el | 3 + src/wasp-user.el | 20 + src/wasp-utils.el | 8 +- wasp.el | 12 +- 443 files changed, 1243 insertions(+), 1136 deletions(-) create mode 100644 assets/avatars/biggaymikey.png create mode 100644 assets/avatars/henriqmarq.png create mode 100644 assets/avatars/piet290106.png create mode 100644 assets/avatars/realnaesten.png create mode 100644 assets/avatars/sandcork.png create mode 100644 assets/avatars/saxtonhale.png create mode 100644 assets/avatars/sschr15.png create mode 100644 assets/avatars/u_danielpancake.png create mode 100644 assets/emotes/115849 create mode 100644 assets/emotes/1660776 create mode 100644 assets/emotes/1774927 create mode 100644 assets/emotes/300349835 create mode 100644 assets/emotes/300703497 create mode 100644 assets/emotes/301158222 create mode 100644 assets/emotes/301594376 create mode 100644 assets/emotes/302160774 create mode 100644 assets/emotes/302303594 create mode 100644 assets/emotes/303141009 create mode 100644 assets/emotes/303446318 create mode 100644 assets/emotes/303985776 create mode 100644 assets/emotes/304560154 create mode 100644 assets/emotes/304669968 create mode 100644 assets/emotes/304935642 create mode 100644 assets/emotes/305595705 create mode 100644 assets/emotes/306103472 create mode 100644 assets/emotes/306834544 create mode 100644 assets/emotes/306954813 create mode 100644 assets/emotes/307378409 create mode 100644 assets/emotes/307439015 create mode 100644 assets/emotes/307923721 create mode 100644 assets/emotes/555555579 create mode 100644 assets/emotes/555555598 create mode 100644 assets/emotes/555555607 create mode 100644 assets/emotes/59197 create mode 100644 assets/emotes/965074 create mode 100644 assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36 create mode 100644 assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c create mode 100644 assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e create mode 100644 assets/emotes/emotesv2_03d86390639442619fd0622f942c733e create mode 100644 assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1 create mode 100644 assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d create mode 100644 assets/emotes/emotesv2_06693c5360e540cba523931b2b572067 create mode 100644 assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351 create mode 100644 assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452 create mode 100644 assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a create mode 100644 assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637 create mode 100644 assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab create mode 100644 assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b create mode 100644 assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5 create mode 100644 assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219 create mode 100644 assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff create mode 100644 assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f create mode 100644 assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e create mode 100644 assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c create mode 100644 assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b create mode 100644 assets/emotes/emotesv2_10a256a15fa24228b668767340c56444 create mode 100644 assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7 create mode 100644 assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b create mode 100644 assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7 create mode 100644 assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2 create mode 100644 assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9 create mode 100644 assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40 create mode 100644 assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be create mode 100644 assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5 create mode 100644 assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524 create mode 100644 assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6 create mode 100644 assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d create mode 100644 assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1 create mode 100644 assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf create mode 100644 assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba create mode 100644 assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939 create mode 100644 assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d create mode 100644 assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887 create mode 100644 assets/emotes/emotesv2_2072304653af4152aed66e471a958591 create mode 100644 assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e create mode 100644 assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c create mode 100644 assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4 create mode 100644 assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8 create mode 100644 assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471 create mode 100644 assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48 create mode 100644 assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a create mode 100644 assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7 create mode 100644 assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf create mode 100644 assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232 create mode 100644 assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274 create mode 100644 assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b create mode 100644 assets/emotes/emotesv2_26672983fce4494589b81a85473147ad create mode 100644 assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb create mode 100644 assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf create mode 100644 assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96 create mode 100644 assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c create mode 100644 assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb create mode 100644 assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4 create mode 100644 assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87 create mode 100644 assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4 create mode 100644 assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1 create mode 100644 assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d create mode 100644 assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d create mode 100644 assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab create mode 100644 assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575 create mode 100644 assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072 create mode 100644 assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6 create mode 100644 assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990 create mode 100644 assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b create mode 100644 assets/emotes/emotesv2_38436724a19a4a839060feab98894017 create mode 100644 assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7 create mode 100644 assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c create mode 100644 assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191 create mode 100644 assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10 create mode 100644 assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3 create mode 100644 assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf create mode 100644 assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7 create mode 100644 assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964 create mode 100644 assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e create mode 100644 assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e create mode 100644 assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8 create mode 100644 assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a create mode 100644 assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507 create mode 100644 assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008 create mode 100644 assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0 create mode 100644 assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4 create mode 100644 assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df create mode 100644 assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f create mode 100644 assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82 create mode 100644 assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794 create mode 100644 assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505 create mode 100644 assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551 create mode 100644 assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766 create mode 100644 assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809 create mode 100644 assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9 create mode 100644 assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3 create mode 100644 assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4 create mode 100644 assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db create mode 100644 assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b create mode 100644 assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288 create mode 100644 assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780 create mode 100644 assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d create mode 100644 assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772 create mode 100644 assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726 create mode 100644 assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4 create mode 100644 assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108 create mode 100644 assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80 create mode 100644 assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928 create mode 100644 assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762 create mode 100644 assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864 create mode 100644 assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0 create mode 100644 assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f create mode 100644 assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93 create mode 100644 assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab create mode 100644 assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb create mode 100644 assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1 create mode 100644 assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb create mode 100644 assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da create mode 100644 assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61 create mode 100644 assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c create mode 100644 assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90 create mode 100644 assets/emotes/emotesv2_601930df6e434791a5873d65414a5849 create mode 100644 assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f create mode 100644 assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e create mode 100644 assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c create mode 100644 assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929 create mode 100644 assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067 create mode 100644 assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f create mode 100644 assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6 create mode 100644 assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615 create mode 100644 assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984 create mode 100644 assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454 create mode 100644 assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761 create mode 100644 assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943 create mode 100644 assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8 create mode 100644 assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238 create mode 100644 assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48 create mode 100644 assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722 create mode 100644 assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908 create mode 100644 assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8 create mode 100644 assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03 create mode 100644 assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283 create mode 100644 assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a create mode 100644 assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b create mode 100644 assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268 create mode 100644 assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b create mode 100644 assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401 create mode 100644 assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006 create mode 100644 assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7 create mode 100644 assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28 create mode 100644 assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5 create mode 100644 assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d create mode 100644 assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395 create mode 100644 assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56 create mode 100644 assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4 create mode 100644 assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0 create mode 100644 assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867 create mode 100644 assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF create mode 100644 assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e create mode 100644 assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8 create mode 100644 assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809 create mode 100644 assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e create mode 100644 assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190 create mode 100644 assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f create mode 100644 assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2 create mode 100644 assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200 create mode 100644 assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b create mode 100644 assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07 create mode 100644 assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3 create mode 100644 assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231 create mode 100644 assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca create mode 100644 assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26 create mode 100644 assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970 create mode 100644 assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa create mode 100644 assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18 create mode 100644 assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf create mode 100644 assets/emotes/emotesv2_834c09086613410794fc144b05205854 create mode 100644 assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05 create mode 100644 assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80 create mode 100644 assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea create mode 100644 assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84 create mode 100644 assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f create mode 100644 assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5 create mode 100644 assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c create mode 100644 assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de create mode 100644 assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f create mode 100644 assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8 create mode 100644 assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836 create mode 100644 assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11 create mode 100644 assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a create mode 100644 assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d create mode 100644 assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944 create mode 100644 assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b create mode 100644 assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62 create mode 100644 assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27 create mode 100644 assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf create mode 100644 assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff create mode 100644 assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077 create mode 100644 assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9 create mode 100644 assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c create mode 100644 assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615 create mode 100644 assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee create mode 100644 assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c create mode 100644 assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881 create mode 100644 assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c create mode 100644 assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4 create mode 100644 assets/emotes/emotesv2_997611a1e0734112a27322514282d83a create mode 100644 assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23 create mode 100644 assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90 create mode 100644 assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92 create mode 100644 assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739 create mode 100644 assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK create mode 100644 assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756 create mode 100644 assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30 create mode 100644 assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628 create mode 100644 assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9 create mode 100644 assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27 create mode 100644 assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0 create mode 100644 assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874 create mode 100644 assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb create mode 100644 assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed create mode 100644 assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5 create mode 100644 assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb create mode 100644 assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb create mode 100644 assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1 create mode 100644 assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da create mode 100644 assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0 create mode 100644 assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710 create mode 100644 assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376 create mode 100644 assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad create mode 100644 assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd create mode 100644 assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486 create mode 100644 assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b create mode 100644 assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837 create mode 100644 assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed create mode 100644 assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172 create mode 100644 assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630 create mode 100644 assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c create mode 100644 assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695 create mode 100644 assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea create mode 100644 assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416 create mode 100644 assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de create mode 100644 assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d create mode 100644 assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63 create mode 100644 assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66 create mode 100644 assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d create mode 100644 assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392 create mode 100644 assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf create mode 100644 assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e create mode 100644 assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81 create mode 100644 assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c create mode 100644 assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494 create mode 100644 assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc create mode 100644 assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4 create mode 100644 assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9 create mode 100644 assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5 create mode 100644 assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373 create mode 100644 assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9 create mode 100644 assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b create mode 100644 assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f create mode 100644 assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32 create mode 100644 assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43 create mode 100644 assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7 create mode 100644 assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c create mode 100644 assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4 create mode 100644 assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c create mode 100644 assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be create mode 100644 assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042 create mode 100644 assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691 create mode 100644 assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1 create mode 100644 assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f create mode 100644 assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e create mode 100644 assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058 create mode 100644 assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52 create mode 100644 assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad create mode 100644 assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04 create mode 100644 assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0 create mode 100644 assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8 create mode 100644 assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34 create mode 100644 assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d create mode 100644 assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a create mode 100644 assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611 create mode 100644 assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71 create mode 100644 assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b create mode 100644 assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d create mode 100644 assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66 create mode 100644 assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43 create mode 100644 assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6 create mode 100644 assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b create mode 100644 assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c create mode 100644 assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae create mode 100644 assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343 create mode 100644 assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a create mode 100644 assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e create mode 100644 assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882 create mode 100644 assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab create mode 100644 assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710 create mode 100644 assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400 create mode 100644 assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897 create mode 100644 assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203 create mode 100644 assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce create mode 100644 assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2 create mode 100644 assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4 create mode 100644 assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3 create mode 100644 assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22 create mode 100644 assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b create mode 100644 assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450 create mode 100644 assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac create mode 100644 assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471 create mode 100644 assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab create mode 100644 assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c create mode 100644 assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3 create mode 100644 assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52 create mode 100644 assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f create mode 100644 assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4 create mode 100644 assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9 create mode 100644 assets/emotes/emotesv2_e691268bfafa486992762bec2441202a create mode 100644 assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1 create mode 100644 assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353 create mode 100644 assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d create mode 100644 assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0 create mode 100644 assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b create mode 100644 assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e create mode 100644 assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1 create mode 100644 assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73 create mode 100644 assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d create mode 100644 assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741 create mode 100644 assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c create mode 100644 assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03 create mode 100644 assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115 create mode 100644 assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919 create mode 100644 assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd create mode 100644 assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7 create mode 100644 assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651 create mode 100644 assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a create mode 100644 assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2 create mode 100644 assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b create mode 100644 assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34 create mode 100644 assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c create mode 100644 assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4 create mode 100644 assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c create mode 100644 assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc create mode 100644 assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63 create mode 100644 assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e create mode 100644 assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b create mode 100644 assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15 create mode 100644 assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d create mode 100644 assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9 create mode 100644 assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3 create mode 100644 assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9 create mode 100644 assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0 create mode 100644 assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055 create mode 100644 assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820 create mode 100644 assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f create mode 100644 assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19 create mode 100644 assets/glossary/2025-03-14.txt create mode 100644 assets/glossary/2025-03-18.txt create mode 100644 assets/glossary/2025-03-21.txt create mode 100644 assets/glossary/2025-03-25.txt create mode 100644 assets/glossary/2025-03-28.txt create mode 100644 assets/glossary/2025-04-01.txt create mode 100644 assets/glossary/2025-04-04.txt create mode 100644 assets/glossary/2025-04-12.txt create mode 100644 assets/glossary/2025-04-15.txt create mode 100644 assets/glossary/2025-04-18.txt create mode 100644 assets/glossary/2025-04-22.txt create mode 100644 assets/glossary/2025-04-30.txt create mode 100644 assets/rats/users/GlamShatterskull.wav create mode 100644 assets/rats/users/RealNaesten.wav create mode 100644 src/gizmo/wasp-animism.el create mode 100644 src/gizmo/wasp-friend-callout.el create mode 100644 src/gizmo/wasp-friend-eating.el create mode 100644 src/gizmo/wasp-friend-journalism.el create mode 100644 src/gizmo/wasp-friend-music.el create mode 100644 src/gizmo/wasp-friend-reading.el create mode 100644 src/gizmo/wasp-friend-voice.el diff --git a/assets/avatars/biggaymikey.png b/assets/avatars/biggaymikey.png new file mode 100644 index 00000000..563e8af0 Binary files /dev/null and b/assets/avatars/biggaymikey.png differ diff --git a/assets/avatars/henriqmarq.png b/assets/avatars/henriqmarq.png new file mode 100644 index 00000000..a5679c9b Binary files /dev/null and b/assets/avatars/henriqmarq.png differ diff --git a/assets/avatars/piet290106.png b/assets/avatars/piet290106.png new file mode 100644 index 00000000..f5b4483b Binary files /dev/null and b/assets/avatars/piet290106.png differ diff --git a/assets/avatars/realnaesten.png b/assets/avatars/realnaesten.png new file mode 100644 index 00000000..74a0c742 Binary files /dev/null and b/assets/avatars/realnaesten.png differ diff --git a/assets/avatars/sandcork.png b/assets/avatars/sandcork.png new file mode 100644 index 00000000..8ad78d54 Binary files /dev/null and b/assets/avatars/sandcork.png differ diff --git a/assets/avatars/saxtonhale.png b/assets/avatars/saxtonhale.png new file mode 100644 index 00000000..eb679ac5 Binary files /dev/null and b/assets/avatars/saxtonhale.png differ diff --git a/assets/avatars/sschr15.png b/assets/avatars/sschr15.png new file mode 100644 index 00000000..88048a5f Binary files /dev/null and b/assets/avatars/sschr15.png differ diff --git a/assets/avatars/u_danielpancake.png b/assets/avatars/u_danielpancake.png new file mode 100644 index 00000000..8430afe4 Binary files /dev/null and b/assets/avatars/u_danielpancake.png differ diff --git a/assets/bible.txt b/assets/bible.txt index 42068f91..ea143757 100644 --- a/assets/bible.txt +++ b/assets/bible.txt @@ -99924,4 +99924,8 @@ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ mamimi___ zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae zoft_fae pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray pengowray sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 sun312772 -quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm \ No newline at end of file +quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm quantumbohm +mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon mickynoon +katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna katlyranna +timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss timadiss +bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma bruxisma \ No newline at end of file diff --git a/assets/emotes/115849 b/assets/emotes/115849 new file mode 100644 index 00000000..0f426f45 Binary files /dev/null and b/assets/emotes/115849 differ diff --git a/assets/emotes/1660776 b/assets/emotes/1660776 new file mode 100644 index 00000000..3444fe40 Binary files /dev/null and b/assets/emotes/1660776 differ diff --git a/assets/emotes/1774927 b/assets/emotes/1774927 new file mode 100644 index 00000000..a01061b0 Binary files /dev/null and b/assets/emotes/1774927 differ diff --git a/assets/emotes/300349835 b/assets/emotes/300349835 new file mode 100644 index 00000000..5995781f Binary files /dev/null and b/assets/emotes/300349835 differ diff --git a/assets/emotes/300703497 b/assets/emotes/300703497 new file mode 100644 index 00000000..e5ef2d4c Binary files /dev/null and b/assets/emotes/300703497 differ diff --git a/assets/emotes/301158222 b/assets/emotes/301158222 new file mode 100644 index 00000000..e83fcc2d Binary files /dev/null and b/assets/emotes/301158222 differ diff --git a/assets/emotes/301594376 b/assets/emotes/301594376 new file mode 100644 index 00000000..e9aec794 Binary files /dev/null and b/assets/emotes/301594376 differ diff --git a/assets/emotes/302160774 b/assets/emotes/302160774 new file mode 100644 index 00000000..354a5aef Binary files /dev/null and b/assets/emotes/302160774 differ diff --git a/assets/emotes/302303594 b/assets/emotes/302303594 new file mode 100644 index 00000000..3f8cc955 Binary files /dev/null and b/assets/emotes/302303594 differ diff --git a/assets/emotes/303141009 b/assets/emotes/303141009 new file mode 100644 index 00000000..9bde288c Binary files /dev/null and b/assets/emotes/303141009 differ diff --git a/assets/emotes/303446318 b/assets/emotes/303446318 new file mode 100644 index 00000000..6b9f9b06 Binary files /dev/null and b/assets/emotes/303446318 differ diff --git a/assets/emotes/303985776 b/assets/emotes/303985776 new file mode 100644 index 00000000..4ad33b48 Binary files /dev/null and b/assets/emotes/303985776 differ diff --git a/assets/emotes/304560154 b/assets/emotes/304560154 new file mode 100644 index 00000000..a250eae7 Binary files /dev/null and b/assets/emotes/304560154 differ diff --git a/assets/emotes/304669968 b/assets/emotes/304669968 new file mode 100644 index 00000000..8e60e8eb Binary files /dev/null and b/assets/emotes/304669968 differ diff --git a/assets/emotes/304935642 b/assets/emotes/304935642 new file mode 100644 index 00000000..bec8e25b Binary files /dev/null and b/assets/emotes/304935642 differ diff --git a/assets/emotes/305595705 b/assets/emotes/305595705 new file mode 100644 index 00000000..cd8805d0 Binary files /dev/null and b/assets/emotes/305595705 differ diff --git a/assets/emotes/306103472 b/assets/emotes/306103472 new file mode 100644 index 00000000..1265cd3d Binary files /dev/null and b/assets/emotes/306103472 differ diff --git a/assets/emotes/306834544 b/assets/emotes/306834544 new file mode 100644 index 00000000..dba72d1a Binary files /dev/null and b/assets/emotes/306834544 differ diff --git a/assets/emotes/306954813 b/assets/emotes/306954813 new file mode 100644 index 00000000..cbb96943 Binary files /dev/null and b/assets/emotes/306954813 differ diff --git a/assets/emotes/307378409 b/assets/emotes/307378409 new file mode 100644 index 00000000..d6bdff1a Binary files /dev/null and b/assets/emotes/307378409 differ diff --git a/assets/emotes/307439015 b/assets/emotes/307439015 new file mode 100644 index 00000000..7c243cdc Binary files /dev/null and b/assets/emotes/307439015 differ diff --git a/assets/emotes/307923721 b/assets/emotes/307923721 new file mode 100644 index 00000000..2f407040 Binary files /dev/null and b/assets/emotes/307923721 differ diff --git a/assets/emotes/555555579 b/assets/emotes/555555579 new file mode 100644 index 00000000..1a1451a0 Binary files /dev/null and b/assets/emotes/555555579 differ diff --git a/assets/emotes/555555598 b/assets/emotes/555555598 new file mode 100644 index 00000000..0ad70ccf Binary files /dev/null and b/assets/emotes/555555598 differ diff --git a/assets/emotes/555555607 b/assets/emotes/555555607 new file mode 100644 index 00000000..8dbf7555 Binary files /dev/null and b/assets/emotes/555555607 differ diff --git a/assets/emotes/59197 b/assets/emotes/59197 new file mode 100644 index 00000000..ffc454dc Binary files /dev/null and b/assets/emotes/59197 differ diff --git a/assets/emotes/965074 b/assets/emotes/965074 new file mode 100644 index 00000000..f6d6f8f1 Binary files /dev/null and b/assets/emotes/965074 differ diff --git a/assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36 b/assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36 new file mode 100644 index 00000000..a073f564 Binary files /dev/null and b/assets/emotes/emotesv2_00d73b20810c4a9d927504e9f6cdeb36 differ diff --git a/assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c b/assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c new file mode 100644 index 00000000..ddddda7a Binary files /dev/null and b/assets/emotes/emotesv2_0114d29bcd9948118c18b1e109f11c4c differ diff --git a/assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e b/assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e new file mode 100644 index 00000000..2f911b90 Binary files /dev/null and b/assets/emotes/emotesv2_0144df8700a347f6b15a9356ab7d1c8e differ diff --git a/assets/emotes/emotesv2_03d86390639442619fd0622f942c733e b/assets/emotes/emotesv2_03d86390639442619fd0622f942c733e new file mode 100644 index 00000000..e973348c Binary files /dev/null and b/assets/emotes/emotesv2_03d86390639442619fd0622f942c733e differ diff --git a/assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1 b/assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1 new file mode 100644 index 00000000..6f6fb0e4 Binary files /dev/null and b/assets/emotes/emotesv2_04508324c80c4a7ebd80299d3848d4f1 differ diff --git a/assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d b/assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d new file mode 100644 index 00000000..8cfacae8 Binary files /dev/null and b/assets/emotes/emotesv2_046d67d12b964cca8d0ff59fd33c772d differ diff --git a/assets/emotes/emotesv2_06693c5360e540cba523931b2b572067 b/assets/emotes/emotesv2_06693c5360e540cba523931b2b572067 new file mode 100644 index 00000000..c0d58989 Binary files /dev/null and b/assets/emotes/emotesv2_06693c5360e540cba523931b2b572067 differ diff --git a/assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351 b/assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351 new file mode 100644 index 00000000..cd4ba7c1 Binary files /dev/null and b/assets/emotes/emotesv2_085fa9bbdafb492a87ed30c5404f3351 differ diff --git a/assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452 b/assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452 new file mode 100644 index 00000000..e52adb6c Binary files /dev/null and b/assets/emotes/emotesv2_09e7debf334b4468bcfafdb701cb5452 differ diff --git a/assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a b/assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a new file mode 100644 index 00000000..1257925e Binary files /dev/null and b/assets/emotes/emotesv2_09f550504f554181b2872b2ad87fa87a differ diff --git a/assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637 b/assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637 new file mode 100644 index 00000000..d773fb1e Binary files /dev/null and b/assets/emotes/emotesv2_0a4d775bd07e42a2b6240d1ccc2ce637 differ diff --git a/assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab b/assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab new file mode 100644 index 00000000..52f2db59 Binary files /dev/null and b/assets/emotes/emotesv2_0b22800b20e048f0b654d9f4186021ab differ diff --git a/assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b b/assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b new file mode 100644 index 00000000..86203f8a Binary files /dev/null and b/assets/emotes/emotesv2_0b7f1a595597464289a76f5e314b197b differ diff --git a/assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5 b/assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5 new file mode 100644 index 00000000..13241333 Binary files /dev/null and b/assets/emotes/emotesv2_0d69ef6192df4046b8fca6da4628fab5 differ diff --git a/assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219 b/assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219 new file mode 100644 index 00000000..2e38cdcb Binary files /dev/null and b/assets/emotes/emotesv2_0db450901941479d8be1aedd71bc4219 differ diff --git a/assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff b/assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff new file mode 100644 index 00000000..f00a14cc Binary files /dev/null and b/assets/emotes/emotesv2_0ea0ac068b5647c49c078cf5de809cff differ diff --git a/assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f b/assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f new file mode 100644 index 00000000..de44eade Binary files /dev/null and b/assets/emotes/emotesv2_0ef6f81c5cc34decba443627e6354f5f differ diff --git a/assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e b/assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e new file mode 100644 index 00000000..af118273 Binary files /dev/null and b/assets/emotes/emotesv2_0f6c6b275411418e84fcd0faaeb62b8e differ diff --git a/assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c b/assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c new file mode 100644 index 00000000..edb5b5bb Binary files /dev/null and b/assets/emotes/emotesv2_1007959c05e1467bb909138fb87da44c differ diff --git a/assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b b/assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b new file mode 100644 index 00000000..a097b206 Binary files /dev/null and b/assets/emotes/emotesv2_102e30a079c54d67ab1727fbe7771d5b differ diff --git a/assets/emotes/emotesv2_10a256a15fa24228b668767340c56444 b/assets/emotes/emotesv2_10a256a15fa24228b668767340c56444 new file mode 100644 index 00000000..52b653bb Binary files /dev/null and b/assets/emotes/emotesv2_10a256a15fa24228b668767340c56444 differ diff --git a/assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7 b/assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7 new file mode 100644 index 00000000..7895fb56 Binary files /dev/null and b/assets/emotes/emotesv2_117f55be2f3846f4bf647d938e6563f7 differ diff --git a/assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b b/assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b new file mode 100644 index 00000000..ba6db86b Binary files /dev/null and b/assets/emotes/emotesv2_127129806d4a4af09cc0b66e859fe27b differ diff --git a/assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7 b/assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7 new file mode 100644 index 00000000..a48bceb7 Binary files /dev/null and b/assets/emotes/emotesv2_13e7ca6c12544488b598282afb358fb7 differ diff --git a/assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2 b/assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2 new file mode 100644 index 00000000..ace02638 Binary files /dev/null and b/assets/emotes/emotesv2_15ba288acf8d455fbf665e03ccc3e2f2 differ diff --git a/assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9 b/assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9 new file mode 100644 index 00000000..4d11284c Binary files /dev/null and b/assets/emotes/emotesv2_162a0795f3224283a4fd0570196d2ca9 differ diff --git a/assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40 b/assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40 new file mode 100644 index 00000000..92059398 Binary files /dev/null and b/assets/emotes/emotesv2_16cdcd452c614bb4a5c99e9fb4c9ff40 differ diff --git a/assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be b/assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be new file mode 100644 index 00000000..fe3e876c Binary files /dev/null and b/assets/emotes/emotesv2_172d963ff07a460e951db94069dcc3be differ diff --git a/assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5 b/assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5 new file mode 100644 index 00000000..75272247 Binary files /dev/null and b/assets/emotes/emotesv2_17a13f9699d74d4e932b977e49e9b9a5 differ diff --git a/assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524 b/assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524 new file mode 100644 index 00000000..b8b3063d Binary files /dev/null and b/assets/emotes/emotesv2_196135ee78f1497a8bf66a3d2e485524 differ diff --git a/assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6 b/assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6 new file mode 100644 index 00000000..c3494392 Binary files /dev/null and b/assets/emotes/emotesv2_19dcd63feed242088d622d53c80068a6 differ diff --git a/assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d b/assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d new file mode 100644 index 00000000..b7fccfed Binary files /dev/null and b/assets/emotes/emotesv2_1a3cf1aa33bf448588cb9954e6faf23d differ diff --git a/assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1 b/assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1 new file mode 100644 index 00000000..ee4a4cb7 Binary files /dev/null and b/assets/emotes/emotesv2_1abce7d5e9334f94b8044e4ce81bdbd1 differ diff --git a/assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf b/assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf new file mode 100644 index 00000000..78200255 Binary files /dev/null and b/assets/emotes/emotesv2_1adf9cb4c8054fdfa282f6fc174764cf differ diff --git a/assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba b/assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba new file mode 100644 index 00000000..35c50449 Binary files /dev/null and b/assets/emotes/emotesv2_1bf4277cbbb24196a03a94b8132e27ba differ diff --git a/assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939 b/assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939 new file mode 100644 index 00000000..bb64aced Binary files /dev/null and b/assets/emotes/emotesv2_1c43a903c5d247808fb0a081fda6f939 differ diff --git a/assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d b/assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d new file mode 100644 index 00000000..10855868 Binary files /dev/null and b/assets/emotes/emotesv2_1d2fd57f591b4bd38f1e12ea73ca9d7d differ diff --git a/assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887 b/assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887 new file mode 100644 index 00000000..287e50d1 Binary files /dev/null and b/assets/emotes/emotesv2_202f6ec2051946cfad299e6950ece887 differ diff --git a/assets/emotes/emotesv2_2072304653af4152aed66e471a958591 b/assets/emotes/emotesv2_2072304653af4152aed66e471a958591 new file mode 100644 index 00000000..cdfc53b8 Binary files /dev/null and b/assets/emotes/emotesv2_2072304653af4152aed66e471a958591 differ diff --git a/assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e b/assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e new file mode 100644 index 00000000..020ee725 Binary files /dev/null and b/assets/emotes/emotesv2_20a5c29af55240d4a276e0ffd828db3e differ diff --git a/assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c b/assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c new file mode 100644 index 00000000..e68c57e7 Binary files /dev/null and b/assets/emotes/emotesv2_228ae199127d4ed4b9e9520816fe354c differ diff --git a/assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4 b/assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4 new file mode 100644 index 00000000..043a1e64 Binary files /dev/null and b/assets/emotes/emotesv2_229ef85e3c77488e97a1f814a38ed9b4 differ diff --git a/assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8 b/assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8 new file mode 100644 index 00000000..0c4cf737 Binary files /dev/null and b/assets/emotes/emotesv2_23d2f3e5baff4729ae053d9fc0199ff8 differ diff --git a/assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471 b/assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471 new file mode 100644 index 00000000..231e2cea Binary files /dev/null and b/assets/emotes/emotesv2_24203cb01ea043a78baaa72a7fc68471 differ diff --git a/assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48 b/assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48 new file mode 100644 index 00000000..3d07f695 Binary files /dev/null and b/assets/emotes/emotesv2_24e7b9e915bb4ec7bd976c8772580a48 differ diff --git a/assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a b/assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a new file mode 100644 index 00000000..017e8933 Binary files /dev/null and b/assets/emotes/emotesv2_24efb590db6849a0bfbc7f25e64b2b3a differ diff --git a/assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7 b/assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7 new file mode 100644 index 00000000..866309e1 Binary files /dev/null and b/assets/emotes/emotesv2_24fb54e0db67481e971c8cf1744a53a7 differ diff --git a/assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf b/assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf new file mode 100644 index 00000000..90bad451 Binary files /dev/null and b/assets/emotes/emotesv2_250231b9fb3c4a849d15ebd7a0c923bf differ diff --git a/assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232 b/assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232 new file mode 100644 index 00000000..810ad6ca Binary files /dev/null and b/assets/emotes/emotesv2_252b80f7b02a4ffca1bd206f84981232 differ diff --git a/assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274 b/assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274 new file mode 100644 index 00000000..1d127eb6 Binary files /dev/null and b/assets/emotes/emotesv2_256369ace7b54ee090390d3a17461274 differ diff --git a/assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b b/assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b new file mode 100644 index 00000000..c72b4943 Binary files /dev/null and b/assets/emotes/emotesv2_25e1eb365e5c41169c48cc7f651e473b differ diff --git a/assets/emotes/emotesv2_26672983fce4494589b81a85473147ad b/assets/emotes/emotesv2_26672983fce4494589b81a85473147ad new file mode 100644 index 00000000..e6b78da1 Binary files /dev/null and b/assets/emotes/emotesv2_26672983fce4494589b81a85473147ad differ diff --git a/assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb b/assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb new file mode 100644 index 00000000..4e40242d Binary files /dev/null and b/assets/emotes/emotesv2_27d3a101f9434c23bfcd2fde7df2aaeb differ diff --git a/assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf b/assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf new file mode 100644 index 00000000..8d2e5773 Binary files /dev/null and b/assets/emotes/emotesv2_2801a662aca14585aecb9b701dabdddf differ diff --git a/assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96 b/assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96 new file mode 100644 index 00000000..ef22fa33 Binary files /dev/null and b/assets/emotes/emotesv2_28d84c4284b04111b1f6d11c386cfd96 differ diff --git a/assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c b/assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c new file mode 100644 index 00000000..6584ad7b Binary files /dev/null and b/assets/emotes/emotesv2_2b3ea10e11e943b8810abda89b760c4c differ diff --git a/assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb b/assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb new file mode 100644 index 00000000..727dfbb0 Binary files /dev/null and b/assets/emotes/emotesv2_2cca1fc234c24812b1bfacc040a1a0cb differ diff --git a/assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4 b/assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4 new file mode 100644 index 00000000..dcd2c896 Binary files /dev/null and b/assets/emotes/emotesv2_2dfde60feba94161b23e49eb008a1ae4 differ diff --git a/assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87 b/assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87 new file mode 100644 index 00000000..dff061f4 Binary files /dev/null and b/assets/emotes/emotesv2_2e563f0a9d884b5a8aa5b825f4b3ba87 differ diff --git a/assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4 b/assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4 new file mode 100644 index 00000000..d6c6866e Binary files /dev/null and b/assets/emotes/emotesv2_2fb3d0ac1f9f44d48a940a9974fe1be4 differ diff --git a/assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1 b/assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1 new file mode 100644 index 00000000..47aa0361 Binary files /dev/null and b/assets/emotes/emotesv2_2ffb6149f5f5402f97e3934a311432e1 differ diff --git a/assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d b/assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d new file mode 100644 index 00000000..e65d8e3e Binary files /dev/null and b/assets/emotes/emotesv2_31bcf88bddb646ccbce3053f02d9153d differ diff --git a/assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d b/assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d new file mode 100644 index 00000000..3ae02ebf Binary files /dev/null and b/assets/emotes/emotesv2_337f7545c212432db52a0ea0373ba31d differ diff --git a/assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab b/assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab new file mode 100644 index 00000000..430aa8cd Binary files /dev/null and b/assets/emotes/emotesv2_339c58c55dd94148844b67e9de97b2ab differ diff --git a/assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575 b/assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575 new file mode 100644 index 00000000..cbb7afa7 Binary files /dev/null and b/assets/emotes/emotesv2_34d1f8827eb641099062e3518e340575 differ diff --git a/assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072 b/assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072 new file mode 100644 index 00000000..bd4dbb2a Binary files /dev/null and b/assets/emotes/emotesv2_355c00cd40744178a3d05452e104e072 differ diff --git a/assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6 b/assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6 new file mode 100644 index 00000000..e7bc8674 Binary files /dev/null and b/assets/emotes/emotesv2_362a8e88a8dc4b3693c9aaa4a46365d6 differ diff --git a/assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990 b/assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990 new file mode 100644 index 00000000..c9e0b8bf Binary files /dev/null and b/assets/emotes/emotesv2_3753bb482cae4446a7ca69d353916990 differ diff --git a/assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b b/assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b new file mode 100644 index 00000000..2ad59a99 Binary files /dev/null and b/assets/emotes/emotesv2_37a732dff9694b5ba621136ebbe4c90b differ diff --git a/assets/emotes/emotesv2_38436724a19a4a839060feab98894017 b/assets/emotes/emotesv2_38436724a19a4a839060feab98894017 new file mode 100644 index 00000000..defc311b Binary files /dev/null and b/assets/emotes/emotesv2_38436724a19a4a839060feab98894017 differ diff --git a/assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7 b/assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7 new file mode 100644 index 00000000..7577fba3 Binary files /dev/null and b/assets/emotes/emotesv2_38f709a70a434988b3ea41dcfcde32a7 differ diff --git a/assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c b/assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c new file mode 100644 index 00000000..747ca532 Binary files /dev/null and b/assets/emotes/emotesv2_398073c05e6f47b18d23402be38e306c differ diff --git a/assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191 b/assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191 new file mode 100644 index 00000000..3afbfa0b Binary files /dev/null and b/assets/emotes/emotesv2_3a9b8692e89440ed92db8555dd599191 differ diff --git a/assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10 b/assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10 new file mode 100644 index 00000000..9ef59808 Binary files /dev/null and b/assets/emotes/emotesv2_3d0545fa611f44f6b7c25c658321fa10 differ diff --git a/assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3 b/assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3 new file mode 100644 index 00000000..3ed218a7 Binary files /dev/null and b/assets/emotes/emotesv2_3d0c77cd056e457685f49204e9a342f3 differ diff --git a/assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf b/assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf new file mode 100644 index 00000000..50b88767 Binary files /dev/null and b/assets/emotes/emotesv2_3d57a2e80de74336b0ec9f7b6a2ffdaf differ diff --git a/assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7 b/assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7 new file mode 100644 index 00000000..7b928c0b Binary files /dev/null and b/assets/emotes/emotesv2_3d999db390104c24b42d10d6292290d7 differ diff --git a/assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964 b/assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964 new file mode 100644 index 00000000..8566512a Binary files /dev/null and b/assets/emotes/emotesv2_3dfbda628997420a8d74dd0fa04d8964 differ diff --git a/assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e b/assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e new file mode 100644 index 00000000..a2bce04b Binary files /dev/null and b/assets/emotes/emotesv2_407d9b46b9894896b60aff7c9b10534e differ diff --git a/assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e b/assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e new file mode 100644 index 00000000..beacb10e Binary files /dev/null and b/assets/emotes/emotesv2_4152261ae0d0473aaa84a26fdbad9f6e differ diff --git a/assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8 b/assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8 new file mode 100644 index 00000000..d46b26cc Binary files /dev/null and b/assets/emotes/emotesv2_41cb3d8210e3480a80a4c5f2d871dda8 differ diff --git a/assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a b/assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a new file mode 100644 index 00000000..8b3b2fed Binary files /dev/null and b/assets/emotes/emotesv2_440ef982eb47436eb09e99975a59474a differ diff --git a/assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507 b/assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507 new file mode 100644 index 00000000..fc1c26ff Binary files /dev/null and b/assets/emotes/emotesv2_441b0cd9a965438990b5bc69a9a35507 differ diff --git a/assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008 b/assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008 new file mode 100644 index 00000000..c4c8959f Binary files /dev/null and b/assets/emotes/emotesv2_4669a2ba1f7f4381a3b4b0b298e23008 differ diff --git a/assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0 b/assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0 new file mode 100644 index 00000000..f6ec2eb7 Binary files /dev/null and b/assets/emotes/emotesv2_4845aea689bd4044a2a67f9f7c950da0 differ diff --git a/assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4 b/assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4 new file mode 100644 index 00000000..5426a339 Binary files /dev/null and b/assets/emotes/emotesv2_48468328d2524efc9dede95c680200a4 differ diff --git a/assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df b/assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df new file mode 100644 index 00000000..931bc335 Binary files /dev/null and b/assets/emotes/emotesv2_48a1c027c57a4c42b3cf4af51863e6df differ diff --git a/assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f b/assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f new file mode 100644 index 00000000..db844f23 Binary files /dev/null and b/assets/emotes/emotesv2_48d82508ea81496c8fd108c2a376656f differ diff --git a/assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82 b/assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82 new file mode 100644 index 00000000..40a6eb00 Binary files /dev/null and b/assets/emotes/emotesv2_495d3674d06e44bbbdea34244b6b5d82 differ diff --git a/assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794 b/assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794 new file mode 100644 index 00000000..cbe22b3a Binary files /dev/null and b/assets/emotes/emotesv2_49abeb068b5b4705bec832c4729eb794 differ diff --git a/assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505 b/assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505 new file mode 100644 index 00000000..c489daf8 Binary files /dev/null and b/assets/emotes/emotesv2_4b0234918f3f4a60a32d94f31e512505 differ diff --git a/assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551 b/assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551 new file mode 100644 index 00000000..029e11ea Binary files /dev/null and b/assets/emotes/emotesv2_4c67ea457d434e3fa289ec9402a42551 differ diff --git a/assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766 b/assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766 new file mode 100644 index 00000000..c9cba1dd Binary files /dev/null and b/assets/emotes/emotesv2_4c682fe3720246c78ed925ab053d8766 differ diff --git a/assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809 b/assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809 new file mode 100644 index 00000000..f874502e Binary files /dev/null and b/assets/emotes/emotesv2_4e98413cbeae4aceabf13666fee68809 differ diff --git a/assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9 b/assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9 new file mode 100644 index 00000000..f7723f68 Binary files /dev/null and b/assets/emotes/emotesv2_4fd3a5d71eb84c24894ec27e3ae60ff9 differ diff --git a/assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3 b/assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3 new file mode 100644 index 00000000..cdf572f6 Binary files /dev/null and b/assets/emotes/emotesv2_5026c62f5a1b44fbb2b4eaab5d0656c3 differ diff --git a/assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4 b/assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4 new file mode 100644 index 00000000..e4410a75 Binary files /dev/null and b/assets/emotes/emotesv2_50484a4550ad48d8a34456e1b5216cd4 differ diff --git a/assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db b/assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db new file mode 100644 index 00000000..80df4aa6 Binary files /dev/null and b/assets/emotes/emotesv2_523cbb164f4c481caba353298c0125db differ diff --git a/assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b b/assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b new file mode 100644 index 00000000..6ee214e0 Binary files /dev/null and b/assets/emotes/emotesv2_52dff8e1e96d4384935d49aa0d56d38b differ diff --git a/assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288 b/assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288 new file mode 100644 index 00000000..6a466d2a Binary files /dev/null and b/assets/emotes/emotesv2_536da87d32584600abde1f5af66c5288 differ diff --git a/assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780 b/assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780 new file mode 100644 index 00000000..d96d1644 Binary files /dev/null and b/assets/emotes/emotesv2_53a5fea263714afc96e08711d15ea780 differ diff --git a/assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d b/assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d new file mode 100644 index 00000000..bc454e4c Binary files /dev/null and b/assets/emotes/emotesv2_53f3c2bc4acf4735b2f79bb385b46c2d differ diff --git a/assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772 b/assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772 new file mode 100644 index 00000000..5fe6c65f Binary files /dev/null and b/assets/emotes/emotesv2_547e8c955abf4137937b05933df0b772 differ diff --git a/assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726 b/assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726 new file mode 100644 index 00000000..cb2d7b7d Binary files /dev/null and b/assets/emotes/emotesv2_54e7302e687b4b3387f469f21ef3c726 differ diff --git a/assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4 b/assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4 new file mode 100644 index 00000000..e6432fad Binary files /dev/null and b/assets/emotes/emotesv2_55129b7cd7a444a8a649f44d4ed82fa4 differ diff --git a/assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108 b/assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108 new file mode 100644 index 00000000..4e039e8a Binary files /dev/null and b/assets/emotes/emotesv2_555e43b97c8a42d7aabe218a6765a108 differ diff --git a/assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80 b/assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80 new file mode 100644 index 00000000..e8027da3 Binary files /dev/null and b/assets/emotes/emotesv2_55800dceae8b4a09a315a60adddd7b80 differ diff --git a/assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928 b/assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928 new file mode 100644 index 00000000..7b1bb087 Binary files /dev/null and b/assets/emotes/emotesv2_58606ffb5fd54f96a7734f8fe2216928 differ diff --git a/assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762 b/assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762 new file mode 100644 index 00000000..c84ea089 Binary files /dev/null and b/assets/emotes/emotesv2_596ac55cb1634c03b0cd40d671f5d762 differ diff --git a/assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864 b/assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864 new file mode 100644 index 00000000..f205a4c2 Binary files /dev/null and b/assets/emotes/emotesv2_596bbffcdc4645e89aa802bf44043864 differ diff --git a/assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0 b/assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0 new file mode 100644 index 00000000..ac188541 Binary files /dev/null and b/assets/emotes/emotesv2_59cb01861aa6483d81b2257eb5a6e5b0 differ diff --git a/assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f b/assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f new file mode 100644 index 00000000..1ddcc961 Binary files /dev/null and b/assets/emotes/emotesv2_5ae132d15449480a9b65ed422ef93c7f differ diff --git a/assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93 b/assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93 new file mode 100644 index 00000000..240dafbc Binary files /dev/null and b/assets/emotes/emotesv2_5b1f6b74ccb8400f8b50396a7bbc3b93 differ diff --git a/assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab b/assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab new file mode 100644 index 00000000..4800e127 Binary files /dev/null and b/assets/emotes/emotesv2_5b335cd372da4e3394272117135220ab differ diff --git a/assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb b/assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb new file mode 100644 index 00000000..be57bd29 Binary files /dev/null and b/assets/emotes/emotesv2_5c57d48d429d4828be043c26addb0bcb differ diff --git a/assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1 b/assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1 new file mode 100644 index 00000000..d506db09 Binary files /dev/null and b/assets/emotes/emotesv2_5d91d0301adb4ed7b453fa9924a6aaa1 differ diff --git a/assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb b/assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb new file mode 100644 index 00000000..fb26d05a Binary files /dev/null and b/assets/emotes/emotesv2_5dc5c73e383f46259f45baa7b6c317eb differ diff --git a/assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da b/assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da new file mode 100644 index 00000000..326a6dae Binary files /dev/null and b/assets/emotes/emotesv2_5e07afac8d504960b02ba7b036f3d6da differ diff --git a/assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61 b/assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61 new file mode 100644 index 00000000..f5af0dea Binary files /dev/null and b/assets/emotes/emotesv2_5e109c2a05094f16a46bfbc52d210f61 differ diff --git a/assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c b/assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c new file mode 100644 index 00000000..96ab4d08 Binary files /dev/null and b/assets/emotes/emotesv2_5e7b7f345e8f46d0b8f27b6a4f51f28c differ diff --git a/assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90 b/assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90 new file mode 100644 index 00000000..683e45b6 Binary files /dev/null and b/assets/emotes/emotesv2_5f69a9fed5d24dc79df25453c7d72a90 differ diff --git a/assets/emotes/emotesv2_601930df6e434791a5873d65414a5849 b/assets/emotes/emotesv2_601930df6e434791a5873d65414a5849 new file mode 100644 index 00000000..e1d30726 Binary files /dev/null and b/assets/emotes/emotesv2_601930df6e434791a5873d65414a5849 differ diff --git a/assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f b/assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f new file mode 100644 index 00000000..cb000fc9 Binary files /dev/null and b/assets/emotes/emotesv2_604ae91dae224b789962e70a805f3c3f differ diff --git a/assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e b/assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e new file mode 100644 index 00000000..8b360b41 Binary files /dev/null and b/assets/emotes/emotesv2_6058cffdb65341feaff3d6368536464e differ diff --git a/assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c b/assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c new file mode 100644 index 00000000..be98833f Binary files /dev/null and b/assets/emotes/emotesv2_613ccd272ebf450d84c457bd16c9819c differ diff --git a/assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929 b/assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929 new file mode 100644 index 00000000..dd70b6c9 Binary files /dev/null and b/assets/emotes/emotesv2_61d8e83a99f849118dd5489f6cdf0929 differ diff --git a/assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067 b/assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067 new file mode 100644 index 00000000..9d457bc1 Binary files /dev/null and b/assets/emotes/emotesv2_62791a27ec384ccb96e27defb5277067 differ diff --git a/assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f b/assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f new file mode 100644 index 00000000..e045908f Binary files /dev/null and b/assets/emotes/emotesv2_63d7f59fb61b4745b7ee62caf4ffc06f differ diff --git a/assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6 b/assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6 new file mode 100644 index 00000000..da5ca976 Binary files /dev/null and b/assets/emotes/emotesv2_6444f5cbf53640f1beccfcb29ed02ae6 differ diff --git a/assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615 b/assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615 new file mode 100644 index 00000000..3b0d5f57 Binary files /dev/null and b/assets/emotes/emotesv2_6456fcf4f15f4f4f80eb27becc290615 differ diff --git a/assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984 b/assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984 new file mode 100644 index 00000000..6b35065e Binary files /dev/null and b/assets/emotes/emotesv2_64cf7ab508eb4947a73ef1d7a38e0984 differ diff --git a/assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454 b/assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454 new file mode 100644 index 00000000..de009081 Binary files /dev/null and b/assets/emotes/emotesv2_64f50bf400324ec68b8207aac282e454 differ diff --git a/assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761 b/assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761 new file mode 100644 index 00000000..7c48f858 Binary files /dev/null and b/assets/emotes/emotesv2_64fd59354add4e3f80fdcaf32850e761 differ diff --git a/assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943 b/assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943 new file mode 100644 index 00000000..b878d6ef Binary files /dev/null and b/assets/emotes/emotesv2_65e924d6dc194a6c863845e8dfe83943 differ diff --git a/assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8 b/assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8 new file mode 100644 index 00000000..ea50807f Binary files /dev/null and b/assets/emotes/emotesv2_662145dd4e844282affbf06df8e261b8 differ diff --git a/assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238 b/assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238 new file mode 100644 index 00000000..f80e0d63 Binary files /dev/null and b/assets/emotes/emotesv2_66d371de61d64d32bee1d47b26dfe238 differ diff --git a/assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48 b/assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48 new file mode 100644 index 00000000..5b48ccd3 Binary files /dev/null and b/assets/emotes/emotesv2_67d8334685e94c7380f92503a30e1c48 differ diff --git a/assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722 b/assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722 new file mode 100644 index 00000000..838247eb Binary files /dev/null and b/assets/emotes/emotesv2_69aa5755b0454c01bebc9a35cd861722 differ diff --git a/assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908 b/assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908 new file mode 100644 index 00000000..bbcb9910 Binary files /dev/null and b/assets/emotes/emotesv2_69f8434749e343d8926967a564dbc908 differ diff --git a/assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8 b/assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8 new file mode 100644 index 00000000..52a28887 Binary files /dev/null and b/assets/emotes/emotesv2_6a28e3adbdfd4cf69ca4b4bcb2ac77a8 differ diff --git a/assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03 b/assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03 new file mode 100644 index 00000000..bacfcd75 Binary files /dev/null and b/assets/emotes/emotesv2_6a4c5a8c06dc48c5ab22210c68a52e03 differ diff --git a/assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283 b/assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283 new file mode 100644 index 00000000..59b6a028 Binary files /dev/null and b/assets/emotes/emotesv2_6ad945d63ffa47aabd1ccff4871a0283 differ diff --git a/assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a b/assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a new file mode 100644 index 00000000..df8b0de5 Binary files /dev/null and b/assets/emotes/emotesv2_6b03a429ecd545ed98af41dba25f490a differ diff --git a/assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b b/assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b new file mode 100644 index 00000000..f3ab1c26 Binary files /dev/null and b/assets/emotes/emotesv2_6b37b7e13bb94ffa8ac6af5740dd6e6b differ diff --git a/assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268 b/assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268 new file mode 100644 index 00000000..449c480e Binary files /dev/null and b/assets/emotes/emotesv2_6b94432ee31b4f909adab1058209a268 differ diff --git a/assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b b/assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b new file mode 100644 index 00000000..9c20d63f Binary files /dev/null and b/assets/emotes/emotesv2_6ca8feb8f3f2466eb9acc98e3089911b differ diff --git a/assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401 b/assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401 new file mode 100644 index 00000000..512a6851 Binary files /dev/null and b/assets/emotes/emotesv2_6e7afafe028d4059b7a050d00a18a401 differ diff --git a/assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006 b/assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006 new file mode 100644 index 00000000..f8c6a615 Binary files /dev/null and b/assets/emotes/emotesv2_6ef79d00b5e0447ca9a3c8170f3df006 differ diff --git a/assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7 b/assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7 new file mode 100644 index 00000000..e19d81e9 Binary files /dev/null and b/assets/emotes/emotesv2_6f1c5d88aa8b4a7eaabf306b6dc410b7 differ diff --git a/assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28 b/assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28 new file mode 100644 index 00000000..a6af8dfc Binary files /dev/null and b/assets/emotes/emotesv2_6f1d1da892d542748afbbfef36e0aa28 differ diff --git a/assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5 b/assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5 new file mode 100644 index 00000000..30957734 Binary files /dev/null and b/assets/emotes/emotesv2_6f47210c1f6240458420b9db0b5ec9c5 differ diff --git a/assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d b/assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d new file mode 100644 index 00000000..5382a2ad Binary files /dev/null and b/assets/emotes/emotesv2_703b0a29ebd843dcb9b02b415a56ab5d differ diff --git a/assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395 b/assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395 new file mode 100644 index 00000000..4938f0b7 Binary files /dev/null and b/assets/emotes/emotesv2_70700345e3384219a35d7af9e75f9395 differ diff --git a/assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56 b/assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56 new file mode 100644 index 00000000..fba90f86 Binary files /dev/null and b/assets/emotes/emotesv2_71276b021c024affa2a4ffab59d32c56 differ diff --git a/assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4 b/assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4 new file mode 100644 index 00000000..bc5a3f53 Binary files /dev/null and b/assets/emotes/emotesv2_732a78769b5643fd93ab2c72821b51c4 differ diff --git a/assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0 b/assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0 new file mode 100644 index 00000000..c0cd34af Binary files /dev/null and b/assets/emotes/emotesv2_73846909f8f24164b41a275b39658fd0 differ diff --git a/assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867 b/assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867 new file mode 100644 index 00000000..237f4693 Binary files /dev/null and b/assets/emotes/emotesv2_73f434f2f56f48f08367155f22cd4867 differ diff --git a/assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF b/assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF new file mode 100644 index 00000000..cfb1ba78 Binary files /dev/null and b/assets/emotes/emotesv2_75d7f2d367f248d49a82f5289a7dc03d_HF differ diff --git a/assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e b/assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e new file mode 100644 index 00000000..0310e693 Binary files /dev/null and b/assets/emotes/emotesv2_75eea89c64dd415188edb2d2e6ffd66e differ diff --git a/assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8 b/assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8 new file mode 100644 index 00000000..8c001ddd Binary files /dev/null and b/assets/emotes/emotesv2_75eee2ab9e8244eaae2c141dc14c62f8 differ diff --git a/assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809 b/assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809 new file mode 100644 index 00000000..896af461 Binary files /dev/null and b/assets/emotes/emotesv2_76d148292d704c348b40c48e7a906809 differ diff --git a/assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e b/assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e new file mode 100644 index 00000000..37e52407 Binary files /dev/null and b/assets/emotes/emotesv2_77ce83d7905d4e09b323e4ceb0d4a94e differ diff --git a/assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190 b/assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190 new file mode 100644 index 00000000..ceaf503f Binary files /dev/null and b/assets/emotes/emotesv2_77d15834e97240049c811ed3d967b190 differ diff --git a/assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f b/assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f new file mode 100644 index 00000000..91cceced Binary files /dev/null and b/assets/emotes/emotesv2_785cb1a26b244fb38f83b0278b5ff10f differ diff --git a/assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2 b/assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2 new file mode 100644 index 00000000..489cfc98 Binary files /dev/null and b/assets/emotes/emotesv2_78c9b1149e024ed1be6022f8a341e3b2 differ diff --git a/assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200 b/assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200 new file mode 100644 index 00000000..a2415ee5 Binary files /dev/null and b/assets/emotes/emotesv2_78f915520b4440d68e0333c7e41e9200 differ diff --git a/assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b b/assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b new file mode 100644 index 00000000..e1898528 Binary files /dev/null and b/assets/emotes/emotesv2_796d85ec687047b49aea8c7e74f6b58b differ diff --git a/assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07 b/assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07 new file mode 100644 index 00000000..4d852fcc Binary files /dev/null and b/assets/emotes/emotesv2_7a1f2f816fa9436cbd6579f2dbf1fa07 differ diff --git a/assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3 b/assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3 new file mode 100644 index 00000000..fd7f2982 Binary files /dev/null and b/assets/emotes/emotesv2_7b07e86b0efe4b5dbffae545a0a246d3 differ diff --git a/assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231 b/assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231 new file mode 100644 index 00000000..58c8451f Binary files /dev/null and b/assets/emotes/emotesv2_7c526cf20bbb4cc48d70a4ffa3e58231 differ diff --git a/assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca b/assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca new file mode 100644 index 00000000..97f3f0d2 Binary files /dev/null and b/assets/emotes/emotesv2_7d4909238e2c4ff29d1035967b3320ca differ diff --git a/assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26 b/assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26 new file mode 100644 index 00000000..74bea5c7 Binary files /dev/null and b/assets/emotes/emotesv2_7e4fb21379b446bc917acf6da6173a26 differ diff --git a/assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970 b/assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970 new file mode 100644 index 00000000..d7cac92c Binary files /dev/null and b/assets/emotes/emotesv2_8004b88a5c9c4f44bea8a5f66f2b2970 differ diff --git a/assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa b/assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa new file mode 100644 index 00000000..01ada5da Binary files /dev/null and b/assets/emotes/emotesv2_8064ffd3794142749a01291e77c269aa differ diff --git a/assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18 b/assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18 new file mode 100644 index 00000000..c7e3bb03 Binary files /dev/null and b/assets/emotes/emotesv2_807683797c134435b03ce421d2a69f18 differ diff --git a/assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf b/assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf new file mode 100644 index 00000000..b34450d3 Binary files /dev/null and b/assets/emotes/emotesv2_8235d7c49b90499687d252f5d578c4cf differ diff --git a/assets/emotes/emotesv2_834c09086613410794fc144b05205854 b/assets/emotes/emotesv2_834c09086613410794fc144b05205854 new file mode 100644 index 00000000..8ba8fabd Binary files /dev/null and b/assets/emotes/emotesv2_834c09086613410794fc144b05205854 differ diff --git a/assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05 b/assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05 new file mode 100644 index 00000000..726d2901 Binary files /dev/null and b/assets/emotes/emotesv2_83fd3d36e14f4b97ac7f72a2c945ff05 differ diff --git a/assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80 b/assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80 new file mode 100644 index 00000000..2ef93b6b Binary files /dev/null and b/assets/emotes/emotesv2_8469d0ac664e4678aad3dbdeacd74a80 differ diff --git a/assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea b/assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea new file mode 100644 index 00000000..a95d55bb Binary files /dev/null and b/assets/emotes/emotesv2_85ce95a4b41244699ae283971f4754ea differ diff --git a/assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84 b/assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84 new file mode 100644 index 00000000..2d470515 Binary files /dev/null and b/assets/emotes/emotesv2_85faafce7d71481cb62c708820b0be84 differ diff --git a/assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f b/assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f new file mode 100644 index 00000000..2ab3212f Binary files /dev/null and b/assets/emotes/emotesv2_867d55a7f9b644e2b15c10234383b25f differ diff --git a/assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5 b/assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5 new file mode 100644 index 00000000..435bc5da Binary files /dev/null and b/assets/emotes/emotesv2_88ce587d51b048acabd8d332bcce95d5 differ diff --git a/assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c b/assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c new file mode 100644 index 00000000..b0bc459d Binary files /dev/null and b/assets/emotes/emotesv2_8a69a54b34d345ae992f87e0a1a0b44c differ diff --git a/assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de b/assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de new file mode 100644 index 00000000..beb43341 Binary files /dev/null and b/assets/emotes/emotesv2_8aef87f335cf4d3284a4a924b90b60de differ diff --git a/assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f b/assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f new file mode 100644 index 00000000..ae70138e Binary files /dev/null and b/assets/emotes/emotesv2_8bf198a0f83c4bc3acbf0882e0bbd98f differ diff --git a/assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8 b/assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8 new file mode 100644 index 00000000..a6524403 Binary files /dev/null and b/assets/emotes/emotesv2_8bfa9bb4113b48b8ba213f404d7371c8 differ diff --git a/assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836 b/assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836 new file mode 100644 index 00000000..bb4ace8f Binary files /dev/null and b/assets/emotes/emotesv2_8d06d108c90a458b91457714b34d0836 differ diff --git a/assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11 b/assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11 new file mode 100644 index 00000000..f68cb5b6 Binary files /dev/null and b/assets/emotes/emotesv2_8d31fb106b2f41aebc507189d969be11 differ diff --git a/assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a b/assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a new file mode 100644 index 00000000..26109522 Binary files /dev/null and b/assets/emotes/emotesv2_8e8e19ad89ed4cdcacc666e84e3f616a differ diff --git a/assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d b/assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d new file mode 100644 index 00000000..52053804 Binary files /dev/null and b/assets/emotes/emotesv2_8e90b13948ff46d88867eed684c38b9d differ diff --git a/assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944 b/assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944 new file mode 100644 index 00000000..3056b6cb Binary files /dev/null and b/assets/emotes/emotesv2_8fe388f1f47946ffa4a8b0b488616944 differ diff --git a/assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b b/assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b new file mode 100644 index 00000000..70dcb352 Binary files /dev/null and b/assets/emotes/emotesv2_906dc8700ed74ee1bbef2df094683a8b differ diff --git a/assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62 b/assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62 new file mode 100644 index 00000000..746b1b6f Binary files /dev/null and b/assets/emotes/emotesv2_90dcebf25baa4478a43bcd86910ede62 differ diff --git a/assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27 b/assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27 new file mode 100644 index 00000000..50891216 Binary files /dev/null and b/assets/emotes/emotesv2_90ea6219add542d0ada501643a727a27 differ diff --git a/assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf b/assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf new file mode 100644 index 00000000..6504c763 Binary files /dev/null and b/assets/emotes/emotesv2_916553f67e7841d3b2674fbf5aeba3cf differ diff --git a/assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff b/assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff new file mode 100644 index 00000000..7aece3af Binary files /dev/null and b/assets/emotes/emotesv2_91f4334f495446b582fe77923f4589ff differ diff --git a/assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077 b/assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077 new file mode 100644 index 00000000..acb4784d Binary files /dev/null and b/assets/emotes/emotesv2_920d701333c94fba94f5aed29053c077 differ diff --git a/assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9 b/assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9 new file mode 100644 index 00000000..7a109193 Binary files /dev/null and b/assets/emotes/emotesv2_92ebb9517ce4470ab5e574181129d4d9 differ diff --git a/assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c b/assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c new file mode 100644 index 00000000..0deeb2bf Binary files /dev/null and b/assets/emotes/emotesv2_93c07b986a8c427ba497e210b11fb84c differ diff --git a/assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615 b/assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615 new file mode 100644 index 00000000..3316d410 Binary files /dev/null and b/assets/emotes/emotesv2_944938feb3694525b5d91dc9e52dc615 differ diff --git a/assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee b/assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee new file mode 100644 index 00000000..f4c57e09 Binary files /dev/null and b/assets/emotes/emotesv2_9458ff7ff9c74dc0975db037b7eebbee differ diff --git a/assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c b/assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c new file mode 100644 index 00000000..2d67d79c Binary files /dev/null and b/assets/emotes/emotesv2_949e6a7df0c74af28e829587741e338c differ diff --git a/assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881 b/assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881 new file mode 100644 index 00000000..1e53c6ae Binary files /dev/null and b/assets/emotes/emotesv2_97f01191fbe24496813d18c4d98d7881 differ diff --git a/assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c b/assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c new file mode 100644 index 00000000..c2bd9ac5 Binary files /dev/null and b/assets/emotes/emotesv2_98bee893c21c4e1d84393278ea219e1c differ diff --git a/assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4 b/assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4 new file mode 100644 index 00000000..f06aae40 Binary files /dev/null and b/assets/emotes/emotesv2_99696770a9ed4f24bcac6bac7a97d3d4 differ diff --git a/assets/emotes/emotesv2_997611a1e0734112a27322514282d83a b/assets/emotes/emotesv2_997611a1e0734112a27322514282d83a new file mode 100644 index 00000000..88a25450 Binary files /dev/null and b/assets/emotes/emotesv2_997611a1e0734112a27322514282d83a differ diff --git a/assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23 b/assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23 new file mode 100644 index 00000000..e3fbd78b Binary files /dev/null and b/assets/emotes/emotesv2_99f3ad0175d8433aac306c020760bf23 differ diff --git a/assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90 b/assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90 new file mode 100644 index 00000000..af96715b Binary files /dev/null and b/assets/emotes/emotesv2_9a1c64ab3e44491fb2c2b0dc7a767a90 differ diff --git a/assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92 b/assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92 new file mode 100644 index 00000000..08cb272e Binary files /dev/null and b/assets/emotes/emotesv2_9a373a06200b405e8646464f1d11ca92 differ diff --git a/assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739 b/assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739 new file mode 100644 index 00000000..06d864ee Binary files /dev/null and b/assets/emotes/emotesv2_9a3d4ab4a6364c9fa28436d9f0984739 differ diff --git a/assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK b/assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK new file mode 100644 index 00000000..c60e7620 Binary files /dev/null and b/assets/emotes/emotesv2_9a4d0ecba81d4bd0ad65c2e1bf02e479_TK differ diff --git a/assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756 b/assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756 new file mode 100644 index 00000000..8e895a43 Binary files /dev/null and b/assets/emotes/emotesv2_9b12eb15d9e34d3a85e650a4de6fd756 differ diff --git a/assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30 b/assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30 new file mode 100644 index 00000000..36bf94be Binary files /dev/null and b/assets/emotes/emotesv2_9c59a8fafe554da1a07d34e418ec2b30 differ diff --git a/assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628 b/assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628 new file mode 100644 index 00000000..ca395f8a Binary files /dev/null and b/assets/emotes/emotesv2_9c9d5e65cac84a1f8dd7e3347df51628 differ diff --git a/assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9 b/assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9 new file mode 100644 index 00000000..1e624e3d Binary files /dev/null and b/assets/emotes/emotesv2_9cf6a2b276fb487f9ee404863e65fde9 differ diff --git a/assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27 b/assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27 new file mode 100644 index 00000000..6b5e374b Binary files /dev/null and b/assets/emotes/emotesv2_9d24ff5266624d87ad21273ae8975c27 differ diff --git a/assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0 b/assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0 new file mode 100644 index 00000000..97b0e882 Binary files /dev/null and b/assets/emotes/emotesv2_9da7d4bef516407780ce83637d00d8c0 differ diff --git a/assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874 b/assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874 new file mode 100644 index 00000000..a68b48dd Binary files /dev/null and b/assets/emotes/emotesv2_9dbe9c73ba6a41aebd04b80d269b4874 differ diff --git a/assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb b/assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb new file mode 100644 index 00000000..29a256a0 Binary files /dev/null and b/assets/emotes/emotesv2_9e52134eec8a4ebeaef76d5a01df12bb differ diff --git a/assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed b/assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed new file mode 100644 index 00000000..396ac081 Binary files /dev/null and b/assets/emotes/emotesv2_9f1ab1d03bba4fb0b735a9670d3361ed differ diff --git a/assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5 b/assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5 new file mode 100644 index 00000000..e2a1a8fd Binary files /dev/null and b/assets/emotes/emotesv2_9f799a4bba3746a188cbe06c6deb27a5 differ diff --git a/assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb b/assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb new file mode 100644 index 00000000..aa830fb5 Binary files /dev/null and b/assets/emotes/emotesv2_a08dccc1b4ad4fa5a5878fdd7b8047fb differ diff --git a/assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb b/assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb new file mode 100644 index 00000000..dadc5306 Binary files /dev/null and b/assets/emotes/emotesv2_a21052eac36246cc8ef494e2b4ca5beb differ diff --git a/assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1 b/assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1 new file mode 100644 index 00000000..5da7b336 Binary files /dev/null and b/assets/emotes/emotesv2_a224841e21d942a5973c8ad2db45ddf1 differ diff --git a/assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da b/assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da new file mode 100644 index 00000000..171b8b61 Binary files /dev/null and b/assets/emotes/emotesv2_a2aa8aced4a3465fba36aababbfd18da differ diff --git a/assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0 b/assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0 new file mode 100644 index 00000000..22a677e5 Binary files /dev/null and b/assets/emotes/emotesv2_a2daa9b241b34608906b6f00f83d4ea0 differ diff --git a/assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710 b/assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710 new file mode 100644 index 00000000..bd7096e3 Binary files /dev/null and b/assets/emotes/emotesv2_a39d2bff69ce426e92213f2b8685d710 differ diff --git a/assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376 b/assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376 new file mode 100644 index 00000000..796f509f Binary files /dev/null and b/assets/emotes/emotesv2_a41d9735bf524aa2bcd81171327e7376 differ diff --git a/assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad b/assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad new file mode 100644 index 00000000..0cefef8c Binary files /dev/null and b/assets/emotes/emotesv2_a43387948f1241f78a30c33fba4f5dad differ diff --git a/assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd b/assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd new file mode 100644 index 00000000..d1f4bd67 Binary files /dev/null and b/assets/emotes/emotesv2_a439fec7855b473681dc8f797f1693dd differ diff --git a/assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486 b/assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486 new file mode 100644 index 00000000..59706133 Binary files /dev/null and b/assets/emotes/emotesv2_a5e4b28e4ee44206a6aa3ee557b35486 differ diff --git a/assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b b/assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b new file mode 100644 index 00000000..2bc09ea5 Binary files /dev/null and b/assets/emotes/emotesv2_a859e01f62e242078bfb1002ce291e3b differ diff --git a/assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837 b/assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837 new file mode 100644 index 00000000..24b2e97d Binary files /dev/null and b/assets/emotes/emotesv2_a8661b1e6169427ca02fccaac2928837 differ diff --git a/assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed b/assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed new file mode 100644 index 00000000..574f543f Binary files /dev/null and b/assets/emotes/emotesv2_a97550bc6cb0478e9c9a76724e7847ed differ diff --git a/assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172 b/assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172 new file mode 100644 index 00000000..297e037a Binary files /dev/null and b/assets/emotes/emotesv2_aa0db43abbb34a8ba19e22242283a172 differ diff --git a/assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630 b/assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630 new file mode 100644 index 00000000..cb453e24 Binary files /dev/null and b/assets/emotes/emotesv2_ab6a3b8cc3794feeaa65ddec04ecd630 differ diff --git a/assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c b/assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c new file mode 100644 index 00000000..a7096f76 Binary files /dev/null and b/assets/emotes/emotesv2_aba4cea4561b4828996cd6891db7911c differ diff --git a/assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695 b/assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695 new file mode 100644 index 00000000..a03cb8bf Binary files /dev/null and b/assets/emotes/emotesv2_ae2aab1595f14c52a2eb259a4540d695 differ diff --git a/assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea b/assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea new file mode 100644 index 00000000..07906a16 Binary files /dev/null and b/assets/emotes/emotesv2_ae35f69d12e94ad8b6f861d9ddac93ea differ diff --git a/assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416 b/assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416 new file mode 100644 index 00000000..770d16df Binary files /dev/null and b/assets/emotes/emotesv2_aeaad1bf57ed41349ec000954c82c416 differ diff --git a/assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de b/assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de new file mode 100644 index 00000000..65396001 Binary files /dev/null and b/assets/emotes/emotesv2_aebf67a681334939baf6fb54b31704de differ diff --git a/assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d b/assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d new file mode 100644 index 00000000..328947c5 Binary files /dev/null and b/assets/emotes/emotesv2_af01dc502bc04dfe9b1f4547d649555d differ diff --git a/assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63 b/assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63 new file mode 100644 index 00000000..dbe0bda7 Binary files /dev/null and b/assets/emotes/emotesv2_afb231ade7b84be8b91d080231c20b63 differ diff --git a/assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66 b/assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66 new file mode 100644 index 00000000..0283ecdb Binary files /dev/null and b/assets/emotes/emotesv2_b0a25a30fd0340a6acefdc59848d3f66 differ diff --git a/assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d b/assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d new file mode 100644 index 00000000..08df6a0c Binary files /dev/null and b/assets/emotes/emotesv2_b1003eb6f8ad4275ba18fddb0fb5f36d differ diff --git a/assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392 b/assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392 new file mode 100644 index 00000000..e9fdbb5f Binary files /dev/null and b/assets/emotes/emotesv2_b14f9e00c2ce41cea1a74d08dea2b392 differ diff --git a/assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf b/assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf new file mode 100644 index 00000000..9052dfb3 Binary files /dev/null and b/assets/emotes/emotesv2_b15a8f0ff639401eb1cc4a70f8b33dcf differ diff --git a/assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e b/assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e new file mode 100644 index 00000000..93a7cf58 Binary files /dev/null and b/assets/emotes/emotesv2_b43ce8897c5249b79ab08c352a0d9f5e differ diff --git a/assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81 b/assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81 new file mode 100644 index 00000000..3e2286a8 Binary files /dev/null and b/assets/emotes/emotesv2_b6285d5ff45a436bb84708e0207bab81 differ diff --git a/assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c b/assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c new file mode 100644 index 00000000..52fe8778 Binary files /dev/null and b/assets/emotes/emotesv2_b6ae9db72ba241d59bd01e95c3089c3c differ diff --git a/assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494 b/assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494 new file mode 100644 index 00000000..07159e29 Binary files /dev/null and b/assets/emotes/emotesv2_b72fd3d6129c4dea8af72a3a20d80494 differ diff --git a/assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc b/assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc new file mode 100644 index 00000000..220a8106 Binary files /dev/null and b/assets/emotes/emotesv2_b805a1050038436a83169e5280c9e7fc differ diff --git a/assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4 b/assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4 new file mode 100644 index 00000000..a3c98bbf Binary files /dev/null and b/assets/emotes/emotesv2_b815cf0140e047b7808c811715ec63e4 differ diff --git a/assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9 b/assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9 new file mode 100644 index 00000000..1253562c Binary files /dev/null and b/assets/emotes/emotesv2_b86fe2576197436c8840b50cf48e9ac9 differ diff --git a/assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5 b/assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5 new file mode 100644 index 00000000..1028510c Binary files /dev/null and b/assets/emotes/emotesv2_b8a91d95fc4b40ccb2dac3bed03593b5 differ diff --git a/assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373 b/assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373 new file mode 100644 index 00000000..0e1a4763 Binary files /dev/null and b/assets/emotes/emotesv2_b8d7036477044b80b893a55d14f32373 differ diff --git a/assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9 b/assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9 new file mode 100644 index 00000000..7b346b1b Binary files /dev/null and b/assets/emotes/emotesv2_b914697c0d4041ecba906fa112e8a0e9 differ diff --git a/assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b b/assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b new file mode 100644 index 00000000..483ed25a Binary files /dev/null and b/assets/emotes/emotesv2_b96b2a89b5824c3b8651446418deaa5b differ diff --git a/assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f b/assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f new file mode 100644 index 00000000..f7d52026 Binary files /dev/null and b/assets/emotes/emotesv2_ba495d150a3b47f883944ecec9251c8f differ diff --git a/assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32 b/assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32 new file mode 100644 index 00000000..72c8f730 Binary files /dev/null and b/assets/emotes/emotesv2_bc2f44a7844040eebdfdb68443c64b32 differ diff --git a/assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43 b/assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43 new file mode 100644 index 00000000..a16f584e Binary files /dev/null and b/assets/emotes/emotesv2_bcd077bbac71449f980047a4bf439e43 differ diff --git a/assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7 b/assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7 new file mode 100644 index 00000000..932de697 Binary files /dev/null and b/assets/emotes/emotesv2_bcef669a36d3437ba5ba8801dfadafd7 differ diff --git a/assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c b/assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c new file mode 100644 index 00000000..1d8f33ff Binary files /dev/null and b/assets/emotes/emotesv2_c10146643c364881b52cf61cbc7e852c differ diff --git a/assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4 b/assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4 new file mode 100644 index 00000000..4e2abc11 Binary files /dev/null and b/assets/emotes/emotesv2_c1e4f7725bdc4c15aac2b14dd71cb6f4 differ diff --git a/assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c b/assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c new file mode 100644 index 00000000..f32598a2 Binary files /dev/null and b/assets/emotes/emotesv2_c2524e05d8c94909a13ae5428cfab66c differ diff --git a/assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be b/assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be new file mode 100644 index 00000000..26af573a Binary files /dev/null and b/assets/emotes/emotesv2_c4297efd1428404d907bdaef9408c5be differ diff --git a/assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042 b/assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042 new file mode 100644 index 00000000..6ce1c324 Binary files /dev/null and b/assets/emotes/emotesv2_c59ad2008b3e4746b2b5f591faf1f042 differ diff --git a/assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691 b/assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691 new file mode 100644 index 00000000..736fc012 Binary files /dev/null and b/assets/emotes/emotesv2_c5e17de08a2e4cb688764d6f7cc72691 differ diff --git a/assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1 b/assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1 new file mode 100644 index 00000000..0717f6b3 Binary files /dev/null and b/assets/emotes/emotesv2_c7760d8993db4545b8f592f6716cdff1 differ diff --git a/assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f b/assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f new file mode 100644 index 00000000..f4bc38e9 Binary files /dev/null and b/assets/emotes/emotesv2_c7fb4e9b8c8d450ab1ecb8b9928f4c5f differ diff --git a/assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e b/assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e new file mode 100644 index 00000000..aae88300 Binary files /dev/null and b/assets/emotes/emotesv2_c817be650cb94acf981ae430fb0a067e differ diff --git a/assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058 b/assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058 new file mode 100644 index 00000000..27bf613a Binary files /dev/null and b/assets/emotes/emotesv2_c9f4ba1ebad14edb842c71a76eb22058 differ diff --git a/assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52 b/assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52 new file mode 100644 index 00000000..e5cfde38 Binary files /dev/null and b/assets/emotes/emotesv2_ca4747f9419a48fd8466c421a1448d52 differ diff --git a/assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad b/assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad new file mode 100644 index 00000000..4e590394 Binary files /dev/null and b/assets/emotes/emotesv2_cb17fcc22a1e4952893c09051d7230ad differ diff --git a/assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04 b/assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04 new file mode 100644 index 00000000..35e8f9e5 Binary files /dev/null and b/assets/emotes/emotesv2_cb977a2198cc477e8d87040dbc074e04 differ diff --git a/assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0 b/assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0 new file mode 100644 index 00000000..54c85b9e Binary files /dev/null and b/assets/emotes/emotesv2_cc1244310ec64345b621b427a64b9ff0 differ diff --git a/assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8 b/assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8 new file mode 100644 index 00000000..2dab3f3a Binary files /dev/null and b/assets/emotes/emotesv2_cc1563a19eaf4518a93326208de941d8 differ diff --git a/assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34 b/assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34 new file mode 100644 index 00000000..ad368698 Binary files /dev/null and b/assets/emotes/emotesv2_cc4bae3dd6004ef8a668618d10226f34 differ diff --git a/assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d b/assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d new file mode 100644 index 00000000..b6fb5d19 Binary files /dev/null and b/assets/emotes/emotesv2_cc58b1f534234a56b52fee76cd0b093d differ diff --git a/assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a b/assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a new file mode 100644 index 00000000..1411ce36 Binary files /dev/null and b/assets/emotes/emotesv2_cca96ad5b2be47d0bd59cd7dc160994a differ diff --git a/assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611 b/assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611 new file mode 100644 index 00000000..bab0c22d Binary files /dev/null and b/assets/emotes/emotesv2_ce44ef87650443c79061723d9368d611 differ diff --git a/assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71 b/assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71 new file mode 100644 index 00000000..678f6bcf Binary files /dev/null and b/assets/emotes/emotesv2_ceaff4832c4a44b9a77dcc2c74836c71 differ diff --git a/assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b b/assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b new file mode 100644 index 00000000..7b82c6a1 Binary files /dev/null and b/assets/emotes/emotesv2_cf162aa48e9c4082bb9a6012881db79b differ diff --git a/assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d b/assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d new file mode 100644 index 00000000..4603bf53 Binary files /dev/null and b/assets/emotes/emotesv2_cf9337c7743e4e7ba59e83b5cdde701d differ diff --git a/assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66 b/assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66 new file mode 100644 index 00000000..ce50f2af Binary files /dev/null and b/assets/emotes/emotesv2_d01a9536e5e8435b9f290f03bf6bde66 differ diff --git a/assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43 b/assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43 new file mode 100644 index 00000000..15f8525f Binary files /dev/null and b/assets/emotes/emotesv2_d0d2ab28473d40efa93139d259a5dd43 differ diff --git a/assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6 b/assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6 new file mode 100644 index 00000000..97008679 Binary files /dev/null and b/assets/emotes/emotesv2_d12afe51f6cb40478525b38e5a86e4e6 differ diff --git a/assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b b/assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b new file mode 100644 index 00000000..490d4a7b Binary files /dev/null and b/assets/emotes/emotesv2_d1419b75bec14b51a65c3c18b4f63b6b differ diff --git a/assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c b/assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c new file mode 100644 index 00000000..048e0ffd Binary files /dev/null and b/assets/emotes/emotesv2_d25bb3397e224ad4ae183c6e1e31b43c differ diff --git a/assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae b/assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae new file mode 100644 index 00000000..a714ad9c Binary files /dev/null and b/assets/emotes/emotesv2_d351c5d5e9084402b30bc39eaa3d92ae differ diff --git a/assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343 b/assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343 new file mode 100644 index 00000000..cb3bce4b Binary files /dev/null and b/assets/emotes/emotesv2_d659f9f1b4d5497483c3d18ec0544343 differ diff --git a/assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a b/assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a new file mode 100644 index 00000000..6e60fc25 Binary files /dev/null and b/assets/emotes/emotesv2_d6a3268792a64e3aac81101ff5bb7d7a differ diff --git a/assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e b/assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e new file mode 100644 index 00000000..c7ac86ba Binary files /dev/null and b/assets/emotes/emotesv2_d8037bde20e24013bc2aa09188ee175e differ diff --git a/assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882 b/assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882 new file mode 100644 index 00000000..92cb5e2b Binary files /dev/null and b/assets/emotes/emotesv2_d86b5553a51a43c4acb8628b98030882 differ diff --git a/assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab b/assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab new file mode 100644 index 00000000..1a56d5ae Binary files /dev/null and b/assets/emotes/emotesv2_d92aa17179ba4eaea5fb58424932e2ab differ diff --git a/assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710 b/assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710 new file mode 100644 index 00000000..44c70cdb Binary files /dev/null and b/assets/emotes/emotesv2_d970cfcb4e9d4424ad386275f354f710 differ diff --git a/assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400 b/assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400 new file mode 100644 index 00000000..0ab1ee72 Binary files /dev/null and b/assets/emotes/emotesv2_d997a846522c49fb897fd04ab602d400 differ diff --git a/assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897 b/assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897 new file mode 100644 index 00000000..e41aac7e Binary files /dev/null and b/assets/emotes/emotesv2_d9b0ba80d3da483b9413d540f8223897 differ diff --git a/assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203 b/assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203 new file mode 100644 index 00000000..33401263 Binary files /dev/null and b/assets/emotes/emotesv2_d9beaba77b1a4a2bb1a60f5026d6d203 differ diff --git a/assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce b/assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce new file mode 100644 index 00000000..0428bf84 Binary files /dev/null and b/assets/emotes/emotesv2_da18fbc0476a409ab9b9993dd354b1ce differ diff --git a/assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2 b/assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2 new file mode 100644 index 00000000..8cc936dc Binary files /dev/null and b/assets/emotes/emotesv2_da1b30dd1dd2434bb25aa3387ec519f2 differ diff --git a/assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4 b/assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4 new file mode 100644 index 00000000..97452f12 Binary files /dev/null and b/assets/emotes/emotesv2_dae8bd6237ce415b8fcecf152b1935d4 differ diff --git a/assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3 b/assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3 new file mode 100644 index 00000000..5f751b95 Binary files /dev/null and b/assets/emotes/emotesv2_db14210d9e5c49c98052016c215851d3 differ diff --git a/assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22 b/assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22 new file mode 100644 index 00000000..808a90a5 Binary files /dev/null and b/assets/emotes/emotesv2_dc26a4c918d64b7aafec8f851880fa22 differ diff --git a/assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b b/assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b new file mode 100644 index 00000000..f620acf6 Binary files /dev/null and b/assets/emotes/emotesv2_dd46165a1b174154a5fc9c41b4b21c9b differ diff --git a/assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450 b/assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450 new file mode 100644 index 00000000..847226cb Binary files /dev/null and b/assets/emotes/emotesv2_dd7976287e824779bd25fe01fde35450 differ diff --git a/assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac b/assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac new file mode 100644 index 00000000..64f9b0a4 Binary files /dev/null and b/assets/emotes/emotesv2_de1e958d716f4445ba071608903118ac differ diff --git a/assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471 b/assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471 new file mode 100644 index 00000000..b15656f9 Binary files /dev/null and b/assets/emotes/emotesv2_df3c519594b34023a9b6c39351cde471 differ diff --git a/assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab b/assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab new file mode 100644 index 00000000..079b6dcd Binary files /dev/null and b/assets/emotes/emotesv2_dfa6f2de3f2d409c8047cee6916177ab differ diff --git a/assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c b/assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c new file mode 100644 index 00000000..dc87de59 Binary files /dev/null and b/assets/emotes/emotesv2_e0d815be522d4cb7981901b0ad24fc0c differ diff --git a/assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3 b/assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3 new file mode 100644 index 00000000..f0d84125 Binary files /dev/null and b/assets/emotes/emotesv2_e28989d3765a4fe09eb00b485c4b21d3 differ diff --git a/assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52 b/assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52 new file mode 100644 index 00000000..1e6fc1bd Binary files /dev/null and b/assets/emotes/emotesv2_e3936760c213434f9a2274af69b86d52 differ diff --git a/assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f b/assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f new file mode 100644 index 00000000..cabc6eac Binary files /dev/null and b/assets/emotes/emotesv2_e4cc68bdd50f4b5fa817a39c1368731f differ diff --git a/assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4 b/assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4 new file mode 100644 index 00000000..55d3926d Binary files /dev/null and b/assets/emotes/emotesv2_e4e88b54d26b49f698566e5489fdcfe4 differ diff --git a/assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9 b/assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9 new file mode 100644 index 00000000..a2ebf40a Binary files /dev/null and b/assets/emotes/emotesv2_e5ee44dde6564706a59ff4ecb3433df9 differ diff --git a/assets/emotes/emotesv2_e691268bfafa486992762bec2441202a b/assets/emotes/emotesv2_e691268bfafa486992762bec2441202a new file mode 100644 index 00000000..1af72f0e Binary files /dev/null and b/assets/emotes/emotesv2_e691268bfafa486992762bec2441202a differ diff --git a/assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1 b/assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1 new file mode 100644 index 00000000..34de5e6a Binary files /dev/null and b/assets/emotes/emotesv2_e6afb65a90c24504b523a773874d12e1 differ diff --git a/assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353 b/assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353 new file mode 100644 index 00000000..02ec6bc5 Binary files /dev/null and b/assets/emotes/emotesv2_e6f3731ff902411299cabaa712eea353 differ diff --git a/assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d b/assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d new file mode 100644 index 00000000..1e5fa01e Binary files /dev/null and b/assets/emotes/emotesv2_e7a36a273ffb4e57a33f226f6112800d differ diff --git a/assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0 b/assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0 new file mode 100644 index 00000000..ff571004 Binary files /dev/null and b/assets/emotes/emotesv2_e8503f302ad9497a99000e01b7f3b8b0 differ diff --git a/assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b b/assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b new file mode 100644 index 00000000..7e514217 Binary files /dev/null and b/assets/emotes/emotesv2_e9a0023b833e4c13b215c41f42f5672b differ diff --git a/assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e b/assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e new file mode 100644 index 00000000..3db1c06b Binary files /dev/null and b/assets/emotes/emotesv2_eaafcfa9a7e746c8a349d3992da4ee3e differ diff --git a/assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1 b/assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1 new file mode 100644 index 00000000..d28fcba8 Binary files /dev/null and b/assets/emotes/emotesv2_ec03f0b48fb74f16aca015c5c15e38f1 differ diff --git a/assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73 b/assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73 new file mode 100644 index 00000000..8471307d Binary files /dev/null and b/assets/emotes/emotesv2_ec174a3989c645dd8623da27cdde7b73 differ diff --git a/assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d b/assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d new file mode 100644 index 00000000..7df5e0c8 Binary files /dev/null and b/assets/emotes/emotesv2_ed0b1401df3d452a83a3d9d10828899d differ diff --git a/assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741 b/assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741 new file mode 100644 index 00000000..d8fcfa00 Binary files /dev/null and b/assets/emotes/emotesv2_ed166ec1ca4041dab9b057827e686741 differ diff --git a/assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c b/assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c new file mode 100644 index 00000000..261152fb Binary files /dev/null and b/assets/emotes/emotesv2_ed57b8d35a5a406ebfed0f53eed4466c differ diff --git a/assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03 b/assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03 new file mode 100644 index 00000000..e6531f14 Binary files /dev/null and b/assets/emotes/emotesv2_ee5b7067a65a49b8be0a2eda1c1a7d03 differ diff --git a/assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115 b/assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115 new file mode 100644 index 00000000..22e92df1 Binary files /dev/null and b/assets/emotes/emotesv2_eed4a31efd7544b39ede266baee73115 differ diff --git a/assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919 b/assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919 new file mode 100644 index 00000000..27c674fa Binary files /dev/null and b/assets/emotes/emotesv2_eeecc537c43145f494d38a56dff16919 differ diff --git a/assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd b/assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd new file mode 100644 index 00000000..36e59593 Binary files /dev/null and b/assets/emotes/emotesv2_ef855e8769bf443cb28346970e1b8ebd differ diff --git a/assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7 b/assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7 new file mode 100644 index 00000000..02a89ce0 Binary files /dev/null and b/assets/emotes/emotesv2_f2160050c2ac44adbfaa851e162e8fc7 differ diff --git a/assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651 b/assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651 new file mode 100644 index 00000000..6fcfe5ea Binary files /dev/null and b/assets/emotes/emotesv2_f2e3c56966434c33ab251383b47fc651 differ diff --git a/assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a b/assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a new file mode 100644 index 00000000..d9b98463 Binary files /dev/null and b/assets/emotes/emotesv2_f2eccffec4dc4b12b804ac07c787be4a differ diff --git a/assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2 b/assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2 new file mode 100644 index 00000000..242b13a6 Binary files /dev/null and b/assets/emotes/emotesv2_f3e53f09d0874f10b163eb26747af9a2 differ diff --git a/assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b b/assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b new file mode 100644 index 00000000..b81cb722 Binary files /dev/null and b/assets/emotes/emotesv2_f3ef5dedf97e4323818c7dc0cd8b5e1b differ diff --git a/assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34 b/assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34 new file mode 100644 index 00000000..0e5105ca Binary files /dev/null and b/assets/emotes/emotesv2_f3faa6ad7aec4936bea9ac9523a3bd34 differ diff --git a/assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c b/assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c new file mode 100644 index 00000000..0a81f12c Binary files /dev/null and b/assets/emotes/emotesv2_f4d56acaef634ceebf587b1fd39c8a8c differ diff --git a/assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4 b/assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4 new file mode 100644 index 00000000..10342a22 Binary files /dev/null and b/assets/emotes/emotesv2_f5749d56658d44f788f345db3e1f6aa4 differ diff --git a/assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c b/assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c new file mode 100644 index 00000000..d42d6fd2 Binary files /dev/null and b/assets/emotes/emotesv2_f6203bf938a5429ca692bfbcb8b2582c differ diff --git a/assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc b/assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc new file mode 100644 index 00000000..49c4bf8f Binary files /dev/null and b/assets/emotes/emotesv2_f7eae8ef8221464b9c13018354e1cbdc differ diff --git a/assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63 b/assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63 new file mode 100644 index 00000000..78806e38 Binary files /dev/null and b/assets/emotes/emotesv2_f89596826e504be6ac6b2664aa87de63 differ diff --git a/assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e b/assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e new file mode 100644 index 00000000..a234eb20 Binary files /dev/null and b/assets/emotes/emotesv2_f8c4b68f134d4273a488237949d1244e differ diff --git a/assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b b/assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b new file mode 100644 index 00000000..d771d621 Binary files /dev/null and b/assets/emotes/emotesv2_fb61a9ec50d146fba2ef2926505ab58b differ diff --git a/assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15 b/assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15 new file mode 100644 index 00000000..8c064106 Binary files /dev/null and b/assets/emotes/emotesv2_fbd8e0e6e0594242b7916cf39b727d15 differ diff --git a/assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d b/assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d new file mode 100644 index 00000000..2a6c3ce5 Binary files /dev/null and b/assets/emotes/emotesv2_fbdeeb07569a4eb18c3d077fcbbbb40d differ diff --git a/assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9 b/assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9 new file mode 100644 index 00000000..6fbdc680 Binary files /dev/null and b/assets/emotes/emotesv2_fc0f8dffa6ea4fc690999b89c69c1ae9 differ diff --git a/assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3 b/assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3 new file mode 100644 index 00000000..c1b20773 Binary files /dev/null and b/assets/emotes/emotesv2_fca9eca850ae45f699ac816a023e58c3 differ diff --git a/assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9 b/assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9 new file mode 100644 index 00000000..bb82010c Binary files /dev/null and b/assets/emotes/emotesv2_fcca511b79d148a2b5737967f0755ef9 differ diff --git a/assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0 b/assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0 new file mode 100644 index 00000000..bdddd432 Binary files /dev/null and b/assets/emotes/emotesv2_fcf84937bf434ebfa2a9fd2ae89046e0 differ diff --git a/assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055 b/assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055 new file mode 100644 index 00000000..2bed2058 Binary files /dev/null and b/assets/emotes/emotesv2_fd87dfd7b4cc429aa18c44b179299055 differ diff --git a/assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820 b/assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820 new file mode 100644 index 00000000..3bbed3bc Binary files /dev/null and b/assets/emotes/emotesv2_fee0414deb3c4d5fa1dac47c94413820 differ diff --git a/assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f b/assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f new file mode 100644 index 00000000..4672e3f3 Binary files /dev/null and b/assets/emotes/emotesv2_ff7f334cdeec4019a78a537ee0ba969f differ diff --git a/assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19 b/assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19 new file mode 100644 index 00000000..5d1d0e59 Binary files /dev/null and b/assets/emotes/emotesv2_ffb97a63f2344a479358abbe54e98f19 differ diff --git a/assets/glossary/2025-03-14.txt b/assets/glossary/2025-03-14.txt new file mode 100644 index 00000000..15f6624a --- /dev/null +++ b/assets/glossary/2025-03-14.txt @@ -0,0 +1 @@ +fighting nix. big moments here as we see local streamer find a gpu-based 0-day. gameboy buttons are all you need, according to local streamer. happy pi and STL day to those celebrating. tale of twins ♊ happens while GCP spikes as bigbookofbug enters chat. \ No newline at end of file diff --git a/assets/glossary/2025-03-18.txt b/assets/glossary/2025-03-18.txt new file mode 100644 index 00000000..907ad71f --- /dev/null +++ b/assets/glossary/2025-03-18.txt @@ -0,0 +1 @@ +pixel makes an appearance, we get a classic quote from local crab about his shell, friend presents the poop parade, clonk denies the podcast rumors, and we delve into performant nix fuckery. \ No newline at end of file diff --git a/assets/glossary/2025-03-21.txt b/assets/glossary/2025-03-21.txt new file mode 100644 index 00000000..a7af05ed --- /dev/null +++ b/assets/glossary/2025-03-21.txt @@ -0,0 +1 @@ +database debugging session, clonk did well today, victim of spider, spaghetti and meatballs, "i'M GAMING" cries unpaid passenger to concerned flight attendant, clonks new seersucker suit, never giving up but perhaps letting down; rick astley is "low key violent", clonk just wants to whip donuts in the parking lot, drop a "ohoho" on 'em, what even is a.. boost ?! \ No newline at end of file diff --git a/assets/glossary/2025-03-25.txt b/assets/glossary/2025-03-25.txt new file mode 100644 index 00000000..2723da2b --- /dev/null +++ b/assets/glossary/2025-03-25.txt @@ -0,0 +1 @@ +lcolonq tries smoking redeem, hits a type error with tokens, many viewers gain unique boostv2 scores, effort post archive proves useful, streamer fails to back up, titscord emerges, january rolls in, board deliberates on welfare boosts, clonk needs maude to save the day, rollback happens, stocks take a hit, major error discovered, streamer steps away from compiler work for an unexpected venture. \ No newline at end of file diff --git a/assets/glossary/2025-03-28.txt b/assets/glossary/2025-03-28.txt new file mode 100644 index 00000000..5d277c51 --- /dev/null +++ b/assets/glossary/2025-03-28.txt @@ -0,0 +1 @@ +the year of the yacht. clonk addresses the shareholders with “musk is.” backups are finally implemented as chaos reigns and the mantra of “burn it all down” surfaces. warnings of beverages on the yacht emerge. fuweh >.< \ No newline at end of file diff --git a/assets/glossary/2025-04-01.txt b/assets/glossary/2025-04-01.txt new file mode 100644 index 00000000..11e006fb --- /dev/null +++ b/assets/glossary/2025-04-01.txt @@ -0,0 +1 @@ +real gamers play 3d pinball space cadet, plink plonk, it's clonk. is miku actually a japanese spelling of michael? we asked our best micheals for their professional opinion. freaky tuesday?? local wives prod zed pod and lala amanita swap their natures. modclonk hitting us with the mandark ohhoho. local nerd experiences aero theme for the first time. linux is gone, l:q downgraded to windows. \ No newline at end of file diff --git a/assets/glossary/2025-04-04.txt b/assets/glossary/2025-04-04.txt new file mode 100644 index 00000000..d263ec62 --- /dev/null +++ b/assets/glossary/2025-04-04.txt @@ -0,0 +1 @@ +burgle bagels is the new meta. clonk channels his inner austin tech-bro while chiptunes blare in the background, setting the perfect vibe for this session. \ No newline at end of file diff --git a/assets/glossary/2025-04-12.txt b/assets/glossary/2025-04-12.txt new file mode 100644 index 00000000..36e5b9cc --- /dev/null +++ b/assets/glossary/2025-04-12.txt @@ -0,0 +1 @@ +fucker finders season 3 continues. LCOLONQ is now on a quest for the fucker. a hairstyle reveal turns into chaos. stale bread discourse ensues. we discuss a_tension_span's algorithm and c static links. streamer takes an oath to not end until the green hackernews website is made. master thief LeClonque is unmasked, and a thieve's guild is hinted at. \ No newline at end of file diff --git a/assets/glossary/2025-04-15.txt b/assets/glossary/2025-04-15.txt new file mode 100644 index 00000000..e02f1894 --- /dev/null +++ b/assets/glossary/2025-04-15.txt @@ -0,0 +1 @@ +emacs guy recommends emacs again. once more, the fucker returns. clonq looks up pegging on orange site live. I am orthogonal, I feel it in my bones. I am orthogonal, I ostensibly feel no hole. chicken jockey appears. mission lock-in is blasted hardcore, oath broken, unrestorable. man goes on mission to talk to people. chicken jockey returns. we need to contort ourselves into more challenging positions. oh boy we gassin today. \ No newline at end of file diff --git a/assets/glossary/2025-04-18.txt b/assets/glossary/2025-04-18.txt new file mode 100644 index 00000000..7b7267b0 --- /dev/null +++ b/assets/glossary/2025-04-18.txt @@ -0,0 +1 @@ +clonk attempts to create a new wiki by drafting a programming list, laying the groundwork for an elaborate knowledge base. \ No newline at end of file diff --git a/assets/glossary/2025-04-22.txt b/assets/glossary/2025-04-22.txt new file mode 100644 index 00000000..783dba16 --- /dev/null +++ b/assets/glossary/2025-04-22.txt @@ -0,0 +1 @@ +friend is silent in mourning. mr green's shyness is noted. clonk digs deeper into the earth while adding green to la mulana. breaking news: clonk says "fuck" in discord. earth celebrates 100 together; billions join in. clonk channels statler and waldorf for easter play. chaos ensues as the fucker escapes. \ No newline at end of file diff --git a/assets/glossary/2025-04-30.txt b/assets/glossary/2025-04-30.txt new file mode 100644 index 00000000..57659ab4 --- /dev/null +++ b/assets/glossary/2025-04-30.txt @@ -0,0 +1 @@ +local clonk enters speedrun era, struggles with coding enjoyment, misses imaginary friends on rare wednesday, fights through flu, the q stands for qlapsed, discussion on running and sports, 9 out of 10 doctors think miku, countdown to promised hour, local streamer is sick as hell, becomes pillar of salt, wants to grift, notes feeling like mice, and achieves self-clarity. \ No newline at end of file diff --git a/assets/rats/users/GlamShatterskull.wav b/assets/rats/users/GlamShatterskull.wav new file mode 100644 index 00000000..0d16804e Binary files /dev/null and b/assets/rats/users/GlamShatterskull.wav differ diff --git a/assets/rats/users/RealNaesten.wav b/assets/rats/users/RealNaesten.wav new file mode 100644 index 00000000..54525879 Binary files /dev/null and b/assets/rats/users/RealNaesten.wav differ diff --git a/src/gizmo/wasp-alert-message.el b/src/gizmo/wasp-alert-message.el index fcd8f6b3..fb80f002 100644 --- a/src/gizmo/wasp-alert-message.el +++ b/src/gizmo/wasp-alert-message.el @@ -12,10 +12,10 @@ (defconst w/alert-message-phrases (list - "hi :3" - "Chat seems active. Considerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr" - "Witscord The Game 2025" - )) + "hi :3" + "Chat seems active. Considerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr" + "Witscord The Game 2025" + )) (defcustom w/alert-message-buffer "*wasp-alert-message*" "Name of buffer used to display alert message." @@ -49,8 +49,8 @@ (cancel-timer w/alert-message-timer)) (w/render-alert-message) (setq - w/alert-message-timer - (run-with-timer 10 nil #'w/run-alert-message-timer))) + w/alert-message-timer + (run-with-timer 10 nil #'w/run-alert-message-timer))) (w/run-alert-message-timer) (provide 'wasp-alert-message) diff --git a/src/gizmo/wasp-animism.el b/src/gizmo/wasp-animism.el new file mode 100644 index 00000000..80c6f70e --- /dev/null +++ b/src/gizmo/wasp-animism.el @@ -0,0 +1,57 @@ +;;; wasp-animism --- Superterranean Animism Overlay -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 'wasp-utils) +(require 'wasp-bus) +(require 'wasp-prod) + +(add-to-list 'load-path (f-canonical "~/src/animism/")) +(require 'bulletml) + +;; src,Xway,fire^쾠㘽쾷ㅗ껋㾨먝乲뛏屚w㮇㸩멽ꝼ쓋♫릫m떫쓏䓳⩺䮻1㨧퉝ƭ쓐ǥᓌ㒵ᒄ먽乳俴㢈쿗峫ฐꙢ왽욍투ㅖ㨧슝呑㟪䁓Ɂy䏧呠3먫슎呒3⧘ɍy욋ᕈ00먫⇳ +;; this one is broken fix it -ellg, probably + +(defconst w/overlay-spellcard-names + '("Joel" "Pemis" "JoelTeachingHisSonJolHowToSpinWhileWideBorisPassesBy" "bugSegz" + "widepeepoMASTURBATION77769420GANGSHITNOMOREFORTNITE19DOLLERFORTNITECARD" + "Machine Made Of Fire, Heart Made Of Doves" + "Dream Seal" "Evil-Sealing Circle" "Dream Seal -Spread-" "Dream Seal -Concentrate-" + "Duplex Barrier" "Dream Orb" "Omnidirectional Oni-Binding Circle" "Yin-Yang Treasured Orb" + "Yin-Yang Kishin Orb" "Dream Orb String" "Yin-Yang Scattering" "Exorcising Border" + "Yin-Yang King Piece" "Illusionary Moon" "Flying Mysterious Shrine Maiden" + "Dream Seal -Blink-" "Great Duplex Barrier" "Dream Seal -Worn-" "Dream Seal -Marred-" + "Dream Seal -The Point Of The Mask-" + )) + +(defvar w/overlay-barrage-active nil) +(defvar w/overlay-last-cursor nil) +(defun w/overlay-update-cursor () + "Inform the overlay about the current cursor position." + (when (and w/overlay-barrage-active (process-live-p (get-process w/bus-process))) + (when-let ((pos (window-absolute-pixel-position))) + (when (not (equal pos w/overlay-last-cursor)) + (setf w/overlay-last-cursor pos) + (w/pub '(overlay cursor) (list (- (car pos) 1920) (cdr pos))))))) +(add-hook 'post-command-hook #'w/overlay-update-cursor) + +(defun w/overlay-start-barrage (bml) + "Start a barrage on the overlay using the BulletML source string BML." + (w/pub '(overlay barrage start) (list (w/encode-string bml)))) + +(defun w/overlay-decode-shorthand-bml (s k) + "Decode the shorthand BulletML string S. +Pass the resulting BulletML XML string to K." + ;; (w/write-log s) + (w/prod-get-raw + (format "/api/yamame?input=%s" (url-encode-url s)) + (lambda (data) + (if-let* ((bml (bml/parse-string data)) + (b (bml/initialize bml)) + ((bml/barrage-toplevel b))) + (progn + (funcall k data)) + (w/write-chat-event "That spell card is too powerful... "))))) + +(provide 'wasp-animism) +;;; wasp-animism.el ends here diff --git a/src/gizmo/wasp-aoc.el b/src/gizmo/wasp-aoc.el index 57b16c32..4c287add 100644 --- a/src/gizmo/wasp-aoc.el +++ b/src/gizmo/wasp-aoc.el @@ -19,23 +19,23 @@ (defvar w/aoc-user-stars nil) (defconst w/aoc-name-map '(("exodrifter_" . "exodrifter") - ("cephon_altera" . "lainlayer") - ("monochrome_0" . "monochrome") - ("yoink2000" . "darius1702") - ("lukeisun_" . "lukeisun") - ("dwinkley_" . "dwinkley") - ("lcolonq" . "llll colonq") - ("fn_lumi" . "lumi") - ("leadengin" . "leaden") - ("vasher_1025" . "vash3r") - ("andrewdtr" . "drawthatredstone") - ("badcop_" . "cgsdev0") - ("asrael_io" . "asrael") - ("colinahscopy_" . "@colinahscopy") - ("ctrl_o" . "control-o") - ("whimsicallymade" . "aecepoglu") - ("chromosundrift" . "christo") - )) + ("cephon_altera" . "lainlayer") + ("monochrome_0" . "monochrome") + ("yoink2000" . "darius1702") + ("lukeisun_" . "lukeisun") + ("dwinkley_" . "dwinkley") + ("lcolonq" . "llll colonq") + ("fn_lumi" . "lumi") + ("leadengin" . "leaden") + ("vasher_1025" . "vash3r") + ("andrewdtr" . "drawthatredstone") + ("badcop_" . "cgsdev0") + ("asrael_io" . "asrael") + ("colinahscopy_" . "@colinahscopy") + ("ctrl_o" . "control-o") + ("whimsicallymade" . "aecepoglu") + ("chromosundrift" . "christo") + )) (defun w/aoc-max-stars () "Return the maximum Advent of Code stars for today." @@ -44,7 +44,7 @@ (defun w/aoc-lookup-stars (user) "Retrieve the Advent of Code stars for USER." (let* ((duser (s-downcase user)) - (cuser (s-downcase (alist-get duser w/aoc-name-map duser nil #'s-equals?)))) + (cuser (s-downcase (alist-get duser w/aoc-name-map duser nil #'s-equals?)))) (alist-get cuser w/aoc-user-stars nil nil #'s-equals?))) (defun w/aoc-fetch-api (k) @@ -58,24 +58,24 @@ Pass the resulting JSON to K." :parser #'json-parse-buffer :success (cl-function - (lambda (&key data &allow-other-keys) - (setq w/aoc-last-response data) - (funcall k data)))) + (lambda (&key data &allow-other-keys) + (setq w/aoc-last-response data) + (funcall k data)))) nil) (defun w/aoc-update-user-stars () "Update the Advent of Code stars list." (w/aoc-fetch-api - (lambda (data) - (setf - w/aoc-user-stars - (--map - (cons (s-downcase (car it)) (cdr it)) - (--filter - (stringp (car it)) + (lambda (data) + (setf + w/aoc-user-stars (--map - (cons (ht-get it "name") (ht-get it "stars")) - (ht-values (ht-get data "members"))))))))) + (cons (s-downcase (car it)) (cdr it)) + (--filter + (stringp (car it)) + (--map + (cons (ht-get it "name") (ht-get it "stars")) + (ht-values (ht-get data "members"))))))))) ;; (w/aoc-update-user-stars) (provide 'wasp-aoc) diff --git a/src/gizmo/wasp-bannerads.el b/src/gizmo/wasp-bannerads.el index 70f9c8be..7d64ac1b 100644 --- a/src/gizmo/wasp-bannerads.el +++ b/src/gizmo/wasp-bannerads.el @@ -49,20 +49,18 @@ (cancel-timer w/banner-ad-timer)) (w/render-banner-ad) (setq - w/banner-ad-timer - (run-with-timer 60 nil #'w/run-banner-ad-timer))) -(w/run-banner-ad-timer) - + w/banner-ad-timer + (run-with-timer 60 nil #'w/run-banner-ad-timer))) (defun w/banner-ad-block () "Toggle adblock." (setq w/banner-ad-block t) (w/render-banner-ad) - (w/model-toggle-set "adblock") + (w/model-toggle-set "adblock") (run-with-timer 10 nil (lambda () (setq w/banner-ad-block nil) - (w/model-toggle-unset "adblock") + (w/model-toggle-unset "adblock") (w/render-banner-ad))) nil) diff --git a/src/gizmo/wasp-biblicality.el b/src/gizmo/wasp-biblicality.el index 317e87f7..db169337 100644 --- a/src/gizmo/wasp-biblicality.el +++ b/src/gizmo/wasp-biblicality.el @@ -14,17 +14,18 @@ (defun w/bible-canonize (user) "Add USER to the bible 1000 times." (w/append-file - (s-concat "\n" (s-repeat 1000 (s-concat user " "))) - (w/asset "bible.txt")) + (s-concat "\n" (s-repeat 1000 (s-concat user " "))) + (w/asset "bible.txt")) (ht-set! w/bible-table user 1000)) (defun w/populate-bible-table () "Populate `w/bible-table' from the Bible text file." (unless w/bible-table - (let* ((bible-string (s-downcase (w/slurp (w/asset "bible.txt")))) - (bible-string-nosyms (replace-regexp-in-string "[^[:alpha:]]" " " bible-string)) - (bible-words (s-split-words bible-string-nosyms)) - (ret (ht-create))) + ;; (let* ((bible-string (s-downcase (w/slurp (w/asset "bible.txt")))) + (let* ((bible-string (s-downcase (w/slurp (w/asset "medical.txt")))) + (bible-string-nosyms (replace-regexp-in-string "[^[:alpha:]]" " " bible-string)) + (bible-words (s-split-words bible-string-nosyms)) + (ret (ht-create))) (--each bible-words (let ((old (ht-get ret it))) (ht-set! ret it (+ 1 (or old 0))))) @@ -33,47 +34,46 @@ (defun w/bible-word-score (word) "Return a number between 0.0 and 1.0 representing how biblical WORD is." (if (-contains? '("Sam" "Altman") word) - -666.0 + -666.0 (let ((occs (ht-get w/bible-table (downcase (s-trim word)))) - (thresh 0.6)) + (thresh 0.6)) (if occs - ;; (+ thresh (/ (min occs 1000.0) (/ 1000.0 (- 1.0 thresh)))) - (+ thresh (/ (min occs 10.0) (/ 10.0 (- 1.0 thresh)))) + (+ thresh (/ (min occs 1000.0) (/ 1000.0 (- 1.0 thresh)))) 0.0)))) (defun w/bible-word-color (word) "Given a WORD, return an appropriate color string." (let* ((score (w/bible-word-score word)) - (others (truncate (+ 128.0 (* 127.0 score))))) - ;; (others (- 255 (truncate (+ 128.0 (* 127.0 score)))))) + (others (truncate (+ 128.0 (* 127.0 score))))) + ;; (others (- 255 (truncate (+ 128.0 (* 127.0 score)))))) (format "#ff%02x%02x" others others))) - ;; (format "#00%02x%02x" others others))) +;; (format "#00%02x%02x" others others))) (defun w/bible-colorize-sentence (sen) "Propertize SEN with colors representing word biblicality." (if w/bible-table - (let ((ret-score-total 0.0) - (ret-score-count 0)) - (save-excursion - (with-temp-buffer - (insert sen) - (goto-char (point-min)) - (while (not (eobp)) - (let ((at-word (bounds-of-thing-at-point 'word))) - (when at-word - (let* ((word (buffer-substring (car at-word) (cdr at-word))) - (score (w/bible-word-score word)) - (color (w/bible-word-color word))) - (setq ret-score-total (+ ret-score-total score)) - (cl-incf ret-score-count) - (add-text-properties - (car at-word) (cdr at-word) - `(face (:foreground ,color)) - ) - (goto-char (cdr at-word)))) - (when (not (eobp)) - (forward-char 1)))) - (cons (buffer-string) (/ ret-score-total ret-score-count))))) + (let ((ret-score-total 0.0) + (ret-score-count 0)) + (save-excursion + (with-temp-buffer + (insert sen) + (goto-char (point-min)) + (while (not (eobp)) + (let ((at-word (bounds-of-thing-at-point 'word))) + (when at-word + (let* ((word (buffer-substring (car at-word) (cdr at-word))) + (score (w/bible-word-score word)) + (color (w/bible-word-color word))) + (setq ret-score-total (+ ret-score-total score)) + (cl-incf ret-score-count) + (add-text-properties + (car at-word) (cdr at-word) + `(face (:foreground ,color)) + ) + (goto-char (cdr at-word)))) + (when (not (eobp)) + (forward-char 1)))) + (cons (buffer-string) (/ ret-score-total ret-score-count))))) (cons sen 0.0))) (provide 'wasp-biblicality) diff --git a/src/gizmo/wasp-bless.el b/src/gizmo/wasp-bless.el index 109b2f35..c3175548 100644 --- a/src/gizmo/wasp-bless.el +++ b/src/gizmo/wasp-bless.el @@ -22,21 +22,21 @@ "Construct an Emacs Lisp value representation of the value J." (let ((tag (alist-get 'tag j))) (cond - ((s-equals? tag "ValueInteger") (alist-get 'contents j)) - ((s-equals? tag "ValueArray") - (-map #'w/bless-parse-value (alist-get 'contents j))) - (t (message "Unknown Bless tag: %s" tag))))) + ((s-equals? tag "ValueInteger") (alist-get 'contents j)) + ((s-equals? tag "ValueArray") + (-map #'w/bless-parse-value (alist-get 'contents j))) + (t (message "Unknown Bless tag: %s" tag))))) (defun w/bless-parse-effect (j) "Construct an Emacs Lisp value representation of the effect J." (let ((tag (alist-get 'tag j)) - (c (alist-get 'contents j))) - (cond - ((s-equals? tag "EffectPrint") `(print ,(w/bless-parse-value c))) - ((s-equals? tag "EffectPrintBackwards") `(print-backwards ,(w/bless-parse-value c))) - ((s-equals? tag "EffectSoundboard") `(soundboard ,(w/bless-parse-value c))) - ((s-equals? tag "EffectModelToggle") `(model-toggle ,(w/bless-parse-value c))) - ))) + (c (alist-get 'contents j))) + (cond + ((s-equals? tag "EffectPrint") `(print ,(w/bless-parse-value c))) + ((s-equals? tag "EffectPrintBackwards") `(print-backwards ,(w/bless-parse-value c))) + ((s-equals? tag "EffectSoundboard") `(soundboard ,(w/bless-parse-value c))) + ((s-equals? tag "EffectModelToggle") `(model-toggle ,(w/bless-parse-value c))) + ))) (defun w/bless-parse-stack (j) "Construct an Emacs Lisp value representation of the stack J." @@ -63,32 +63,32 @@ Optionally limit evaluation to FUEL steps." (with-current-buffer buf (erase-buffer)) (make-process - :name "wasp-bless-eval" - :buffer buf - :command `("bless" "-j" "eval" ,@(if fuel (list "--fuel" (number-to-string fuel)) nil) ,str) - :sentinel - (lambda (_ _) - (let* ((s (with-current-buffer buf (buffer-string))) - (j (json-read-from-string s)) - (status (alist-get 'status j))) - (kill-buffer buf) - (if (s-equals? status "success") - (funcall + :name "wasp-bless-eval" + :buffer buf + :command `("bless" "-j" "eval" ,@(if fuel (list "--fuel" (number-to-string fuel)) nil) ,str) + :sentinel + (lambda (_ _) + (let* ((s (with-current-buffer buf (buffer-string))) + (j (json-read-from-string s)) + (status (alist-get 'status j))) + (kill-buffer buf) + (if (s-equals? status "success") + (funcall k (cons - (w/bless-parse-stack (alist-get 'stack (alist-get 'data j))) - (w/bless-parse-effects (alist-get 'effects (alist-get 'data j))))) - (w/bless-error (alist-get 'data j)))))))) + (w/bless-parse-stack (alist-get 'stack (alist-get 'data j))) + (w/bless-parse-effects (alist-get 'effects (alist-get 'data j))))) + (w/bless-error (alist-get 'data j)))))))) (defun w/bless (str &optional fuel) "Run the Bless program STR and apply its side effects. Optionally limit evaluation to FUEL steps." (w/bless-eval - str - (lambda (res) - (--each (cdr res) - (w/bless-apply-effect it))) - fuel)) + str + (lambda (res) + (--each (cdr res) + (w/bless-apply-effect it))) + fuel)) (provide 'wasp-bless) ;;; wasp-bless.el ends here diff --git a/src/gizmo/wasp-chatsummary.el b/src/gizmo/wasp-chatsummary.el index 5a6a27ae..3087c18d 100644 --- a/src/gizmo/wasp-chatsummary.el +++ b/src/gizmo/wasp-chatsummary.el @@ -26,16 +26,16 @@ (defun w/update-chatsummary () "Update the chat summary." (w/ai - (w/friend-journalism-input) - (lambda (d) - (when-let* ((d) - (resp (s-trim d))) - (with-current-buffer (w/chatsummary-get-buffer) - (let ((inhibit-read-only t)) - (erase-buffer) - (w/write-line "Chat summary" 'bold) - (w/write-line resp))))) - "Given a list of recent YouTube chatter activity, produce a summary of the topics discussed. The summary should be very short, maximum two sentences total. Do not introduce yourself. Simply provide a short summary of the chat. Do not mention specific names of chatters. Keep it succinct. Do not mention that you are summarizing YouTube activity. Be laconic.")) + (w/friend-journalism-input) + (lambda (d) + (when-let* ((d) + (resp (s-trim d))) + (with-current-buffer (w/chatsummary-get-buffer) + (let ((inhibit-read-only t)) + (erase-buffer) + (w/write-line "Chat summary" 'bold) + (w/write-line resp))))) + "Given a list of recent YouTube chatter activity, produce a summary of the topics discussed. The summary should be very short, maximum two sentences total. Do not introduce yourself. Simply provide a short summary of the chat. Do not mention specific names of chatters. Keep it succinct. Do not mention that you are summarizing YouTube activity. Be laconic.")) (defvar w/chatsummary-timer nil) (defun w/run-chatsummary-timer () @@ -44,8 +44,8 @@ (cancel-timer w/chatsummary-timer)) (w/update-chatsummary) (setq - w/chatsummary-timer - (run-with-timer 120 nil #'w/run-chatsummary-timer))) + w/chatsummary-timer + (run-with-timer 120 nil #'w/run-chatsummary-timer))) (defun w/start-chatsummary () "Enable fake chatters." diff --git a/src/gizmo/wasp-copfish.el b/src/gizmo/wasp-copfish.el index 024c27dc..7afa3414 100644 --- a/src/gizmo/wasp-copfish.el +++ b/src/gizmo/wasp-copfish.el @@ -28,20 +28,20 @@ :parser #'buffer-string :success (cl-function - (lambda (&key data &allow-other-keys) - (setq w/copfish-last-response data) - (funcall k data)))) + (lambda (&key data &allow-other-keys) + (setq w/copfish-last-response data) + (funcall k data)))) t) (defun w/copfish-get-fish (user k) "Retrieve USER's fish ratio from copfish API. Pass the resulting fraction to K." (w/copfish-get - (s-concat "fishdex/" user) - (lambda (s) - (let ((sp (s-split " " s))) - (when (= (length sp) 2) - (funcall k (cons (string-to-number (car sp)) (string-to-number (cadr sp))))))))) + (s-concat "fishdex/" user) + (lambda (s) + (let ((sp (s-split " " s))) + (when (= (length sp) 2) + (funcall k (cons (string-to-number (car sp)) (string-to-number (cadr sp))))))))) (defvar w/copfish-user-cache nil) (defun w/copfish-update-user (user) @@ -49,12 +49,12 @@ Pass the resulting fraction to K." (unless (-contains? w/copfish-user-cache user) (add-to-list 'w/copfish-user-cache user) (w/copfish-get-fish - user - (lambda (ct) - (w/user-bind - user - (lambda () - (setf (alist-get :copfish-ratio w/user-current) ct))))))) + user + (lambda (ct) + (w/user-bind + user + (lambda () + (setf (alist-get :copfish-ratio w/user-current) ct))))))) (provide 'wasp-copfish) ;;; wasp-copfish.el ends here diff --git a/src/gizmo/wasp-curse.el b/src/gizmo/wasp-curse.el index 95149fef..2b31214f 100644 --- a/src/gizmo/wasp-curse.el +++ b/src/gizmo/wasp-curse.el @@ -20,148 +20,148 @@ (defconst w/binary-ops '((or . "||") - (and . "&&") - (> . ">") - (>= . ">=") - (< . "<") - (<= . "<=") - (= . "===") - (% . "%") - (/ . "/") - (bit-or . "|") - (bit-and . "&") - (bit-xor . "^"))) + (and . "&&") + (> . ">") + (>= . ">=") + (< . "<") + (<= . "<=") + (= . "===") + (% . "%") + (/ . "/") + (bit-or . "|") + (bit-and . "&") + (bit-xor . "^"))) (defun w/curse-expr (expr) "Translate EXPR according to the nature of the curse." (cond - ((null expr) "(null)") - ((listp expr) - (pcase (car expr) - ((or '+ '- '*) - (format - "(%s)" - (s-join (format "%s" (car expr)) (-map #'w/curse-expr (cdr expr))))) - ((pred (lambda (x) (alist-get x w/binary-ops))) - (format - "(%s)" - (s-join (alist-get (car expr) w/binary-ops) (-map #'w/curse-expr (cdr expr))))) - ((or '<< '>>) - (format - "(%s%s%s)" - (w/curse-expr (cadr expr)) - (format "%s" (car expr)) - (w/curse-expr (caddr expr)))) - ('comment "(null)") - ('lambda - (format - "((%s)=>(%s))" - (s-join "," (-map #'w/curse-name (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))))) - ('async-lambda - (format - "(async(%s)=>(%s))" - (s-join "," (-map #'w/curse-name (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))))) - ('if - (format - "(%s?%s:%s)" - (w/curse-expr (cadr expr)) - (w/curse-expr (caddr expr)) - (w/curse-expr (cadddr expr)))) - ('define - (format - "(globalThis.%s=%s)" - (w/curse-name (cadr expr)) - (w/curse-expr (caddr expr)))) - ('set - (format - "(%s=%s)" - (w/curse-name (cadr expr)) - (w/curse-expr (caddr expr)))) - ('aset - (format - "(%s[%s]=%s)" - (w/curse-name (cadr expr)) - (w/curse-expr (caddr expr)) - (w/curse-expr (cadddr expr)))) - ('new - (format - "(new %s(%s))" - (w/curse-expr (cadr expr)) - (s-join "," (-map #'w/curse-expr (cddr expr))))) - ('await - (format - "(await %s)" - (w/curse-expr (cadr expr)))) - ('not - (format - "(!%s)" - (w/curse-expr (cadr expr)))) - ('let - (format - "(((%s)=>(%s))(%s))" - (s-join "," (--map (w/curse-name (car it)) (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))) - (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) - ('async-let - (format - "((async(%s)=>(%s))(%s))" - (s-join "," (--map (w/curse-name (car it)) (cadr expr))) - (s-join "," (-map #'w/curse-expr (cddr expr))) - (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) - ('do - (format - "((()=>(%s))())" - (s-join "," (-map #'w/curse-expr (cdr expr))))) - ('iota - (format - "[...Array(%s).keys()]" - (w/curse-expr (cadr expr)))) - ('array - (format - "[%s]" - (s-join "," (-map #'w/curse-expr (cdr expr))))) - ('object - (format - "{%s}" - (s-join - "," - (--map (format "%s:%s" (w/curse-name (car it)) (w/curse-expr (cadr it))) (cdr expr))))) - ('@ - (format - "((%s)[%s])" - (w/curse-expr (cadr expr)) - (w/curse-expr (caddr expr)))) - (_ - (format - "((%s)(%s))" - (w/curse-expr (car expr)) - (s-join "," (-map #'w/curse-expr (cdr expr))))) - )) - ((symbolp expr) (w/curse-name expr)) - ((numberp expr) (format "%s" expr)) - ((stringp expr) (format "\"%s\"" expr)) - (t "(null)"))) + ((null expr) "(null)") + ((listp expr) + (pcase (car expr) + ((or '+ '- '*) + (format + "(%s)" + (s-join (format "%s" (car expr)) (-map #'w/curse-expr (cdr expr))))) + ((pred (lambda (x) (alist-get x w/binary-ops))) + (format + "(%s)" + (s-join (alist-get (car expr) w/binary-ops) (-map #'w/curse-expr (cdr expr))))) + ((or '<< '>>) + (format + "(%s%s%s)" + (w/curse-expr (cadr expr)) + (format "%s" (car expr)) + (w/curse-expr (caddr expr)))) + ('comment "(null)") + ('lambda + (format + "((%s)=>(%s))" + (s-join "," (-map #'w/curse-name (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))))) + ('async-lambda + (format + "(async(%s)=>(%s))" + (s-join "," (-map #'w/curse-name (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))))) + ('if + (format + "(%s?%s:%s)" + (w/curse-expr (cadr expr)) + (w/curse-expr (caddr expr)) + (w/curse-expr (cadddr expr)))) + ('define + (format + "(globalThis.%s=%s)" + (w/curse-name (cadr expr)) + (w/curse-expr (caddr expr)))) + ('set + (format + "(%s=%s)" + (w/curse-name (cadr expr)) + (w/curse-expr (caddr expr)))) + ('aset + (format + "(%s[%s]=%s)" + (w/curse-name (cadr expr)) + (w/curse-expr (caddr expr)) + (w/curse-expr (cadddr expr)))) + ('new + (format + "(new %s(%s))" + (w/curse-expr (cadr expr)) + (s-join "," (-map #'w/curse-expr (cddr expr))))) + ('await + (format + "(await %s)" + (w/curse-expr (cadr expr)))) + ('not + (format + "(!%s)" + (w/curse-expr (cadr expr)))) + ('let + (format + "(((%s)=>(%s))(%s))" + (s-join "," (--map (w/curse-name (car it)) (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))) + (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) + ('async-let + (format + "((async(%s)=>(%s))(%s))" + (s-join "," (--map (w/curse-name (car it)) (cadr expr))) + (s-join "," (-map #'w/curse-expr (cddr expr))) + (s-join "," (--map (w/curse-expr (cadr it)) (cadr expr))))) + ('do + (format + "((()=>(%s))())" + (s-join "," (-map #'w/curse-expr (cdr expr))))) + ('iota + (format + "[...Array(%s).keys()]" + (w/curse-expr (cadr expr)))) + ('array + (format + "[%s]" + (s-join "," (-map #'w/curse-expr (cdr expr))))) + ('object + (format + "{%s}" + (s-join + "," + (--map (format "%s:%s" (w/curse-name (car it)) (w/curse-expr (cadr it))) (cdr expr))))) + ('@ + (format + "((%s)[%s])" + (w/curse-expr (cadr expr)) + (w/curse-expr (caddr expr)))) + (_ + (format + "((%s)(%s))" + (w/curse-expr (car expr)) + (s-join "," (-map #'w/curse-expr (cdr expr))))) + )) + ((symbolp expr) (w/curse-name expr)) + ((numberp expr) (format "%s" expr)) + ((stringp expr) (format "\"%s\"" expr)) + (t "(null)"))) (defun w/curse-current-buffer () "Transmute the current buffer according to the curse." (interactive) (let* ((srcfile (buffer-file-name)) - (jspath (s-concat (f-base srcfile) ".js")) - (src (buffer-string))) + (jspath (s-concat (f-base srcfile) ".js")) + (src (buffer-string))) (with-temp-buffer (insert src) (goto-char (point-min)) (let ((acc "") - (line (read (current-buffer)))) + (line (read (current-buffer)))) (while (and line (not (eobp))) (setf acc (s-concat acc (w/curse-expr line) ";")) (setf - line - (condition-case nil - (read (current-buffer)) - (error nil)))) + line + (condition-case nil + (read (current-buffer)) + (error nil)))) (write-region acc nil jspath))))) (provide 'wasp-curse) diff --git a/src/gizmo/wasp-cyclone.el b/src/gizmo/wasp-cyclone.el index d77061e7..0223e8bc 100644 --- a/src/gizmo/wasp-cyclone.el +++ b/src/gizmo/wasp-cyclone.el @@ -7,6 +7,8 @@ (require 'wasp-heartrate) (require 'wasp-chatsummary) (require 'wasp-alert-message) +(require 'wasp-fakechat) +(require 'wasp-bannerads) (defconst w/gizmo-buffer-names (list @@ -23,7 +25,7 @@ (defun w/gizmo-tag-window () "Tag the current window as containing a gizmo." (interactive) - (when-let ((w (selected-window))) + (when-let* ((w (selected-window))) (add-to-list 'w/gizmo-windows w))) (defun w/gizmo-cycle-window (w) @@ -42,6 +44,11 @@ (--each w/gizmo-windows (w/gizmo-cycle-window it))) +(defun w/gizmo-ensure-shown (buf) + "Ensure that BUF is shown in one of the windows." + (unless (--any (s-equals? (buffer-name (window-buffer it)) (buffer-name (get-buffer buf))) w/gizmo-windows) + (set-window-buffer (car w/gizmo-windows) buf))) + (defvar w/gizmo-cycle-timer nil) (defun w/run-gizmo-cycle-timer () "Run the gizmo cycle timer." @@ -49,9 +56,32 @@ (cancel-timer w/gizmo-cycle-timer)) (w/gizmo-cycle) (setq - w/gizmo-cycle-timer - (run-with-timer 300 nil #'w/run-gizmo-cycle-timer))) + w/gizmo-cycle-timer + (run-with-timer 300 nil #'w/run-gizmo-cycle-timer))) (w/run-gizmo-cycle-timer) +(require 'htmlize) +(defvar w/gizmo-html-cache (ht-create)) +(defun w/gizmo-render-html (buf) + "Render BUF to HTML with embedded images." + (let* ( (htmlize-output-type 'inline-css) + (htmlize-force-inline-images t) + (buf (htmlize-buffer buf)) + (html (with-current-buffer buf (buffer-string)))) + (kill-buffer buf) + html)) +(defun w/gizmo-upload (buf) + "Upload the HTML contents of BUF to the database." + (let* ( (b (get-buffer buf)) + (nm (buffer-name b)) + (render (w/gizmo-render-html b)) + (cached (ht-get w/gizmo-html-cache nm))) + (unless (and cached (s-equals? cached render)) + (ht-set w/gizmo-html-cache nm render) + (w/db-hset-then "gizmos" nm + render + (lambda (_) + (w/pub '(gizmo buffer update) (list nm))))))) + (provide 'wasp-cyclone) ;;; wasp-cyclone.el ends here diff --git a/src/gizmo/wasp-fakechat.el b/src/gizmo/wasp-fakechat.el index 27b6962b..ffdd750a 100644 --- a/src/gizmo/wasp-fakechat.el +++ b/src/gizmo/wasp-fakechat.el @@ -137,12 +137,12 @@ (diff (if last (time-subtract cur last) 99999999)) (d (time-convert diff 'integer))) (+ - (if (> d 300) 0.01 0.1) + (if (> d 300) 0.01 0.05) (if (--any? (s-contains? (w/fake-chatter-profile-username (w/fake-chatter-profile st)) (cdr it)) (-take 20 w/twitch-chat-history)) - 0.8 + 0.1 0.0)))) (defun w/fake-chatter-elevated-likeliness (st) diff --git a/src/gizmo/wasp-flycheck.el b/src/gizmo/wasp-flycheck.el index 27a857b4..505ad8a3 100644 --- a/src/gizmo/wasp-flycheck.el +++ b/src/gizmo/wasp-flycheck.el @@ -2,16 +2,16 @@ ;;; Commentary: ;;; Code: -(require 'flycheck) - -(flycheck-define-generic-checker 'wasp-twitch - "Checker to display errors from Twitch redeems." - :start - (lambda (c x) - (print c) - (print x)) - :modes '(fundamental-mode) - ) +;; (require 'flycheck) +;; +;; (flycheck-define-generic-checker 'wasp-twitch +;; "Checker to display errors from Twitch redeems." +;; :start +;; (lambda (c x) +;; (print c) +;; (print x)) +;; :modes '(fundamental-mode) +;; ) (provide 'wasp-flycheck) ;;; wasp-flycheck.el ends here diff --git a/src/gizmo/wasp-friend-callout.el b/src/gizmo/wasp-friend-callout.el new file mode 100644 index 00000000..510c279c --- /dev/null +++ b/src/gizmo/wasp-friend-callout.el @@ -0,0 +1,106 @@ +;;; wasp-friend-callout --- "friend" talks about things -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 'dash) +(require 's) +(require 'wasp-friend) +(require 'wasp-twitch) +(require 'wasp-gcp) +(require 'wasp-aoc) +(require 'wasp-uwoomfie) + +(defun w/friend-callout-holiday () + "Call to respond to the current holiday." + (w/friend-respond "We're restoring a crumbling mansion to it's former glory. Say something about that please!")) + +(defun w/friend-callout-hexamedia () + "Call to respond to a random recent chatter's Hexamedia card collection." + (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :hexamedia-cards (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) + (user (and users (nth (random (length users)) users))) + (cards (cdr user)) + (coll (and cards (nth (random (length cards)) cards)))) + (when coll + (w/friend-respond + (format + "%s has collected %s out of 20 cards in the %s collection. Please mention the collection name and the person collecting." + (car user) + (cdr coll) + (car coll)))))) + +(defun w/friend-callout-copfish () + "Call to respond to a random recent chatter's Copfish ratio." + (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :copfish-ratio (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) + (user (and users (nth (random (length users)) users)))) + (when user + (w/friend-respond + (format + "%s has collected %s out of %s fish in the Copfish fish catching collection. Please mention the collection name and the person collecting." + (car user) + (cadr user) + (cddr user)))))) + +(defun w/friend-callout-uwoomfie () + "Call to respond to a random recent chatter's Uwoomfie status." + (let* ((users + (-filter + #'cdr + (--map + (cons (car it) (w/uwoomfie-get-status (car it))) + (-take 10 w/twitch-chat-history)))) + (user (and users (nth (random (length users)) users)))) + (cl-case (cdr user) + (cool (w/friend-respond (format "According to UWOSLAB, %s is a very cool person. Make sure to mention their username." (car user)))) + (honored (w/friend-respond (format "According to UWOSLAB, %s is an honorary viewer. Make sure to mention their username." (car user)))) + (t nil)))) + +(defun w/friend-callout-shindaggers () + "Call to respond to a random recent chatter's Shindaggers knife collection." + (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :shindaggers-knives (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) + (user (and users (nth (random (length users)) users))) + (knives (cdr user)) + (knife (and knives (nth (random (length knives)) knives)))) + (when knife + (w/friend-respond + (format + "%s has collected the %s from shindig's Shindaggers knife collection. Please mention the collection name and the person collecting and the knife." + (car user) + knife))))) + +(defun w/friend-callout-aoc () + "Call to respond to a random recent chatter's Advent of Code completion." + (let* ((users (-filter #'cdr (--map (cons (car it) (w/aoc-lookup-stars (car it))) (-take 10 w/twitch-chat-history)))) + (user (and users (nth (random (length users)) users)))) + (w/friend-respond + (format + "%s has been doing Advent of Code this year, and they've completed %d out of %d problems so far." + (car user) + (cdr user) + (w/aoc-max-stars))))) + +(defun w/friend-callout-gcp () + "Call to respond to the current GCP dot." + (w/gcp-dot + (lambda (d) + (w/friend-respond + (format + "The Global Consciousness Project indicator is currently as follows: %s" + (w/gcp-describe d)))))) + +(defun w/friend-callout-resolution () + "Call to respond to a random recent chatter's resolve." + (when-let* + ((users (-filter #'cdr (--map (cons (car it) (alist-get :resolution2025 (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) + (user (and users (nth (random (length users)) users)))) + (if (s-match (rx (one-or-more digit) (zero-or-more space) "x" (zero-or-more space) (one-or-more digit)) (cdr user)) + (w/friend-respond + (format + "%s snarkily said that their New Year's resolution was a screen resolution. What do you think about this?" (car user))) + (w/friend-respond + (format + "%s made a New Year's resolution to %s. Ask them how it's going!" + (car user) + (cdr user)))))) + +(provide 'wasp-friend-callout) +;;; wasp-friend-callout.el ends here diff --git a/src/gizmo/wasp-friend-eating.el b/src/gizmo/wasp-friend-eating.el new file mode 100644 index 00000000..4bd92b8c --- /dev/null +++ b/src/gizmo/wasp-friend-eating.el @@ -0,0 +1,18 @@ +;;; wasp-friend-eating --- "friend" can eat -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: +(require 'wasp-friend) + +(defvar w/friend-tastes " You love eating cranberries and lemons.") + +(defun w/friend-feed (user food) + "Call when USER fed FOOD to \"friend\"." + (w/friend-personality + (format "%s fed you %s" user food) + (lambda (msg) + (w/friend-say msg) + (w/friend-set-state 'eating 6)) + w/friend-tastes)) + +(provide 'wasp-friend-eating) +;;; wasp-friend-eating.el ends here diff --git a/src/gizmo/wasp-friend-journalism.el b/src/gizmo/wasp-friend-journalism.el new file mode 100644 index 00000000..25d18bdb --- /dev/null +++ b/src/gizmo/wasp-friend-journalism.el @@ -0,0 +1,45 @@ +;;; wasp-friend-journalism --- "friend" writes the newspaper -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 'dash) +(require 's) +(require 'wasp-friend) +(require 'wasp-newspaper) + +(defun w/friend-journalism-input () + "Collect an input for \"friend\"'s journalism based on recent activities." + (s-join + "\n" + (cons + (format "LCOLONQ: %s" (s-trim w/last-stream-transcription)) + (--map + (format "%s: %s" (car it) (cdr it)) + (reverse (-take 20 w/twitch-chat-history)))))) + +(defun w/friend-journalism (author headline) + "Retrieve \"friend\"'s opinion on current events related to HEADLINE. +AUTHOR was a contributing author btw." + (w/friend-personality + (s-concat + "Headline: " headline "\n\n" + (w/friend-journalism-input)) + (lambda (resp) + (when resp + (w/write-chat-event (format "\"friend\" finished writing about: %s" headline)) + (funcall + (if (= (random 5) 0) #'w/newspaper-screenshot (lambda (k) (funcall k nil))) + (lambda (img) + (when img + (w/write-chat-event "...and the article included some photojournalism")) + (push + (w/make-newspaper-article + :headline headline + :author (format "\"friend\" and %s" author) + :content (s-trim resp) + :image img) + w/newspaper-todays-articles))))) + "Given a headline of a newspaper article and a summary of recent user activity, please do your best journalist impression and produce a one paragraph article about the situation that fits the headline.")) + +(provide 'wasp-friend-journalism) +;;; wasp-friend-journalism.el ends here diff --git a/src/gizmo/wasp-friend-music.el b/src/gizmo/wasp-friend-music.el new file mode 100644 index 00000000..76e2c606 --- /dev/null +++ b/src/gizmo/wasp-friend-music.el @@ -0,0 +1,31 @@ +;;; wasp-friend-music --- "friend" can play music -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: +(require 'wasp-friend) + +(defconst w/friend-composition-examples + '(("My Life Is Like A Video Game" . "A/A/c/c/c/dcc/c///a/a/a/f/g/f/f///a/a/a/a/g/g/ga//f//") + ("Super Idol" . "gg[g#]gfg[CD#cG#][D#][CG#f][Cd#][Cc]C[Cd#]/[DFfd][FA#][DA#f]D[Dg][A#f][Dd#a#]f[GBgd]B[Gd#][GDc][Gd#]G[Gd#]/[D#Gc]G[D#cg][D#g][D#g#][dg][D#f][d#d#][D#Ggc]f[D#][D#Gg][D#c][D#][D#c][d#][DFdA#]F[DA#d][Dd][Dg]/[Da#g]/[D#d#][D#][D#][D#][D#][FD#][GA#][fd#][gA#]") + ("Reindeer" . "FG/FD/B/A/G/////GAGAG/c/B///////FG/FD/B/A/G/////GAGAG/d/c/////|C4~~~G3~~~C4~~~G3~~~C~~~E3~D#3~D3~~~~~~~G3~~~D3~~~G3~~~D3~~~G3~~D3G3~B3/C4"))) + +(defun w/friend-compose-song (theme) + "Compose a song about THEME to play on the bells." + (w/ai + theme + (lambda (res) + (let* ((sp (s-split ":" (s-trim res))) + (name (s-trim (car sp))) + (song (s-trim (cadr sp)))) + (when (and (stringp name) (stringp song)) + (w/friend-respond + (format "You just composed a song about %s called %s! Say something about it!" theme name) + (lambda () + (w/write-chat-event (format "The song is called %s: %s" name song)) + (w/add-song (s-concat "friend's " name) song) + (w/audio-muzak-enqueue "\"friend\"" song)))))) + "Please compose a song about the provided theme. The format for the song is a sequence of characters with meanings as follows: / represents a rest, uppercase letters A through G indicate semitones, octaves are specified with a number following a semitone, ~ extends the duration of a note, square brackets like [] group notes together into a chord. The pipe character | separates tracks. Respond only with the song's name followed by a colon folowed by the song notes. Do not explain yourself. The song should ideally be 20 to 30 notes long." + (-map #'car w/friend-composition-examples) + (--map (format "%s: %s" (car it) (cdr it)) w/friend-composition-examples))) + +(provide 'wasp-friend-music) +;;; wasp-friend-music.el ends here diff --git a/src/gizmo/wasp-friend-reading.el b/src/gizmo/wasp-friend-reading.el new file mode 100644 index 00000000..7859b2e8 --- /dev/null +++ b/src/gizmo/wasp-friend-reading.el @@ -0,0 +1,15 @@ +;;; wasp-friend-reading --- "friend" can read pages -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: +(require 'wasp-friend) +(require 'wasp-wikipedia) + +(defun w/friend-react-wikipedia (user page) + "Call when USER asks \"friend\" to react to PAGE on Wikipedia." + (w/fetch-wikipedia + page + (lambda (sum) + (w/friend-respond (format "%s asks you to react to the Wikipedia page for %s. The page summary is: %s" user page sum))))) + +(provide 'wasp-friend-reading) +;;; wasp-friend-reading.el ends here diff --git a/src/gizmo/wasp-friend-voice.el b/src/gizmo/wasp-friend-voice.el new file mode 100644 index 00000000..71519e09 --- /dev/null +++ b/src/gizmo/wasp-friend-voice.el @@ -0,0 +1,70 @@ +;;; wasp-friend-voice --- "friend" talks -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 'dash) +(require 's) +(require 'wasp-friend) + +(defconst w/friend-grapheme-phonemes + '((("b" "bb") . "bug") (("d" "dd" "ed") . "dad") + (("f" "ff" "ph" "gh" "lf" "ft") . "fat") + (("g" "gg" "gh" "gu" "gue") . "gun") (("h" "wh") . "hop") + (("j" "ge" "g" "dge" "di" "gg") . "jam") + (("k" "c" "ch" "cc" "lk" "qu" "q" "ck" "x") . "kit") + (("l" "ll") . "live") (("m" "mm" "mb" "mn" "lm") . "man") + (("n" "nn" "kn" "gn" "pn" "mn") . "net") (("p" "pp") . "pin") + (("r" "rr" "wr" "rh") . "run") + (("s" "ss" "c" "sc" "ps" "st" "ce" "se") . "sit") + (("t" "tt" "th" "ed") . "tip") (("v" "f" "ph" "ve") . "vine") + (("w" "wh" "u" "o") . "wit") + (("z" "zz" "s" "ss" "x" "ze" "se") . "zed") + (("s" "si" "z") . "treasure") (("ch" "tch" "tu" "te") . "chip") + (("sh" "ce" "s" "ci" "si" "ch" "sci" "ti") . "sham") + (("th ") . "thongs") (("th") . "leather") + (("ng" "n" "ngue") . "ring") (("y" "i" "j") . "you") + (("a" "ai" "au") . "cat") + (("a" "ai" "eigh" "aigh" "ay" "er" "et" "ei" "au" "ea" "ey") . "bay") + (("e" "ea" "u" "ie" "ai" "a" "eo" "ei" "ae") . "end") + (("e" "ee" "ea" "y" "ey" "oe" "ie" "i" "ei" "eo" "ay") . "be") + (("i" "e" "o" "u" "ui" "y" "ie") . "it") + (("i" "y" "igh" "ie" "uy" "ye" "ai" "is" "eigh") . "spider") + (("a" "ho" "au" "aw" "ough") . "swan") + (("o" "oa" "oe" "ow" "ough" "eau" "oo" "ew") . "open") + (("o" "oo" "u" "ou") . "wolf") (("u" "o" "oo" "ou") . "lug") + (("o" "oo" "ew" "ue" "oe" "ough" "ui" "oew" "ou") . "who") + (("oi" "oy" "uoy") . "join") (("ow" "ou" "ough") . "now") + (("a" "er" "i" "ar" "our" "ur") . "about") + (("air" "are" "ear" "ere" "eir" "ayer") . "chair") (("a") . "arm ") + (("ir" "er" "ur" "ear" "or" "our" "yr") . "bird") + (("aw" "a" "or" "oor" "ore" "oar" "our" "augh" "ar" "ough" "au") . "paw") + (("ear" "eer" "ere" "ier") . "ear") (("ure" "our") . "cure"))) + +(defconst w/friend-phonemes + (-sort + (-on #'> (lambda (x) (length (car x)))) + (--mapcat + (-map (lambda (g) (cons g (cdr it))) (car it)) + w/friend-grapheme-phonemes))) + +(defun w/friend-replace-graphemes (str) + "Replace all graphemes with phoneme words in STR." + (let* ((phoneme-codes (--map-indexed (cons (cdr it) (format "%s," it-index)) w/friend-grapheme-phonemes)) + (grapheme-codes (--map (cons (car it) (alist-get (cdr it) phoneme-codes nil nil #'s-equals?)) w/friend-phonemes)) + (cleaned (s-downcase (replace-regexp-in-string "[^[:alpha:]]" "" str)))) + (--map (car (nth (string-to-number it) phoneme-codes)) (-filter #'s-present? (s-split "," (s-replace-all grapheme-codes cleaned)))))) + +(defun w/friend-phoneme-path (ph) + "Return a randomly chosen path to the given PH." + (let ((samples (f--entries (w/asset "friendvoice/") (s-contains? ph it) t))) + (nth (random (length samples)) samples))) +(defun w/friend-pronounce-phonemes (ph) + "Say PH." + (let ((files (-map #'w/friend-phoneme-path ph))) + (apply + #'start-process + "phoneme-say" nil "playphonemes" + files))) + +(provide 'wasp-friend-voice) +;;; wasp-friend-voice.el ends here diff --git a/src/gizmo/wasp-friend.el b/src/gizmo/wasp-friend.el index 0432040d..28403025 100644 --- a/src/gizmo/wasp-friend.el +++ b/src/gizmo/wasp-friend.el @@ -4,20 +4,13 @@ (require 'dash) (require 's) -(require 'flycheck) +(require 'cl-lib) (require 'wasp-utils) -(require 'wasp-audio) -(require 'wasp-ai) (require 'wasp-chat) +(require 'wasp-ai) (require 'wasp-twitch) -(require 'wasp-newspaper) -(require 'wasp-gcp) -(require 'wasp-aoc) -(require 'wasp-uwoomfie) -(require 'wasp-wikipedia) -(require 'muzak) -(require 'muzak-wasp) +;;;; Buffer and mode (defcustom w/friend-buffer "*wasp-friend*" "Name of buffer used to display \"friend\"." :type '(string) @@ -29,219 +22,22 @@ (message "hi i'm \"friend\"") (setq-local cursor-type nil)) -(defun w/get-friend-buffer () +(defun w/friend-get-buffer () "Return the \"friend\" buffer." (unless (get-buffer w/friend-buffer) (with-current-buffer (get-buffer-create w/friend-buffer) (w/friend-mode))) (get-buffer w/friend-buffer)) -(defun w/friend-journalism-input () - "Collect an input for \"friend\"'s journalism based on recent activities." - (s-join - "\n" - (cons - (format "LCOLONQ: %s" (s-trim w/last-stream-transcription)) - (--map - (format "%s: %s" (car it) (cdr it)) - (reverse (-take 20 w/twitch-chat-history)))))) - -(defun w/friend-journalism (author headline) - "Retrieve \"friend\"'s opinion on current events related to HEADLINE. -AUTHOR was a contributing author btw." - (w/ai - (s-concat - "Headline: " headline "\n\n" - (w/friend-journalism-input)) - (lambda (resp) - (when resp - (w/write-chat-event (format "\"friend\" finished writing about: %s" headline)) - (funcall - (if (= (random 5) 0) #'w/newspaper-screenshot (lambda (k) (funcall k nil))) - (lambda (img) - (when img - (w/write-chat-event "...and the article included some photojournalism")) - (push - (w/make-newspaper-article - :headline headline - :author (format "\"friend\" and %s" author) - :content (s-trim resp) - :image img) - w/newspaper-todays-articles))))) - "You are the personality of a desktop buddy named \"friend\". \"friend\" is irreverant but kind, and only speaks in lowercase. You are kind of dumb in a cute way and silly like a virtual pet. You live in the corner of LCOLONQ's stream and provide commentary on events. You like people, video games, emojis, learning, and food. Given a headline of a newspaper article and a summary of recent user activity, please do your best journalist impression and produce a one paragraph article about the situation that fits the headline.")) - -(defconst w/friend-grapheme-phonemes - '((("b" "bb") . "bug") (("d" "dd" "ed") . "dad") - (("f" "ff" "ph" "gh" "lf" "ft") . "fat") - (("g" "gg" "gh" "gu" "gue") . "gun") (("h" "wh") . "hop") - (("j" "ge" "g" "dge" "di" "gg") . "jam") - (("k" "c" "ch" "cc" "lk" "qu" "q" "ck" "x") . "kit") - (("l" "ll") . "live") (("m" "mm" "mb" "mn" "lm") . "man") - (("n" "nn" "kn" "gn" "pn" "mn") . "net") (("p" "pp") . "pin") - (("r" "rr" "wr" "rh") . "run") - (("s" "ss" "c" "sc" "ps" "st" "ce" "se") . "sit") - (("t" "tt" "th" "ed") . "tip") (("v" "f" "ph" "ve") . "vine") - (("w" "wh" "u" "o") . "wit") - (("z" "zz" "s" "ss" "x" "ze" "se") . "zed") - (("s" "si" "z") . "treasure") (("ch" "tch" "tu" "te") . "chip") - (("sh" "ce" "s" "ci" "si" "ch" "sci" "ti") . "sham") - (("th ") . "thongs") (("th") . "leather") - (("ng" "n" "ngue") . "ring") (("y" "i" "j") . "you") - (("a" "ai" "au") . "cat") - (("a" "ai" "eigh" "aigh" "ay" "er" "et" "ei" "au" "ea" "ey") . "bay") - (("e" "ea" "u" "ie" "ai" "a" "eo" "ei" "ae") . "end") - (("e" "ee" "ea" "y" "ey" "oe" "ie" "i" "ei" "eo" "ay") . "be") - (("i" "e" "o" "u" "ui" "y" "ie") . "it") - (("i" "y" "igh" "ie" "uy" "ye" "ai" "is" "eigh") . "spider") - (("a" "ho" "au" "aw" "ough") . "swan") - (("o" "oa" "oe" "ow" "ough" "eau" "oo" "ew") . "open") - (("o" "oo" "u" "ou") . "wolf") (("u" "o" "oo" "ou") . "lug") - (("o" "oo" "ew" "ue" "oe" "ough" "ui" "oew" "ou") . "who") - (("oi" "oy" "uoy") . "join") (("ow" "ou" "ough") . "now") - (("a" "er" "i" "ar" "our" "ur") . "about") - (("air" "are" "ear" "ere" "eir" "ayer") . "chair") (("a") . "arm ") - (("ir" "er" "ur" "ear" "or" "our" "yr") . "bird") - (("aw" "a" "or" "oor" "ore" "oar" "our" "augh" "ar" "ough" "au") . "paw") - (("ear" "eer" "ere" "ier") . "ear") (("ure" "our") . "cure"))) - -(defconst w/friend-phonemes - (-sort - (-on #'> (lambda (x) (length (car x)))) - (--mapcat - (-map (lambda (g) (cons g (cdr it))) (car it)) - w/friend-grapheme-phonemes))) - -(defun w/friend-replace-graphemes (str) - "Replace all graphemes with phoneme words in STR." - (let* ((phoneme-codes (--map-indexed (cons (cdr it) (format "%s," it-index)) w/friend-grapheme-phonemes)) - (grapheme-codes (--map (cons (car it) (alist-get (cdr it) phoneme-codes nil nil #'s-equals?)) w/friend-phonemes)) - (cleaned (s-downcase (replace-regexp-in-string "[^[:alpha:]]" "" str)))) - (--map (car (nth (string-to-number it) phoneme-codes)) (-filter #'s-present? (s-split "," (s-replace-all grapheme-codes cleaned)))))) - -(defun w/friend-phoneme-path (ph) - "Return a randomly chosen path to the given PH." - (let ((samples (f--entries (w/asset "friendvoice/") (s-contains? ph it) t))) - (nth (random (length samples)) samples))) -(defun w/friend-pronounce-phonemes (ph) - "Say PH." - (let ((files (-map #'w/friend-phoneme-path ph))) - (apply - #'start-process - "phoneme-say" nil "playphonemes" - files))) - -;; (defun w/get-friend-expensive-tastes (k) -;; "Pass non-nil to K if \"friend\" has expensive tastes this stream. -;; Also update the cached Amazon stock price for next stream." -;; (fig//load-db2-entry -;; "LCOLONQ" :amzn-price -;; (lambda (price) -;; (let ((prev (or price 0)) -;; (cur (fig//stock-price "AMZN"))) -;; (fig//update-db-number "LCOLONQ" :amzn-price (lambda (_) cur)) -;; (funcall k (> cur prev)))))) - -(defvar w/friend-tastes " You love eating cranberries and lemons.") -;; (fig//get-friend-expensive-tastes -;; (lambda (expensive) -;; (let ((moon (car (lunar-phase-for-date (calendar-current-date))))) -;; (setf -;; fig//friend-tastes -;; (s-concat -;; (cond -;; ((-contains? '("New" "Waxing Crescent") moon) " You prefer warm foods like soups.") -;; ((-contains? '("First Quarter" "Waxing Gibbous") moon) " You prefer to eat leafy greens and fruits.") -;; ((-contains? '("Full" "Waning Gibbous") moon) " You prefer to eat barbeque and grilled meats.") -;; ((-contains? '("Last Quarter" "Waning Crescent") moon) " You prefer to eat corn beans and squash.") -;; (t "") -;; ) -;; (if expensive " You have expensive taste in food and dislike any food that can be obtained cheaply." "")))))) - -;; states: -;; default -;; jumping -;; eating, eating0, eating1, eating2 -;; chatting, chatting0 +;;;; State (defvar w/friend-state 'default) (defvar w/friend-emotion "neutral") (defvar w/friend-message-cache nil) (defvar w/friend-state-timer 0) - (defvar w/friend-animation 1) (defvar w/friend-speech "") (defvar w/friend-speech-timer 0) -(defconst w/friend-composition-examples - '(("My Life Is Like A Video Game" . "A/A/c/c/c/dcc/c///a/a/a/f/g/f/f///a/a/a/a/g/g/ga//f//") - ("Super Idol" . "gg[g#]gfg[CD#cG#][D#][CG#f][Cd#][Cc]C[Cd#]/[DFfd][FA#][DA#f]D[Dg][A#f][Dd#a#]f[GBgd]B[Gd#][GDc][Gd#]G[Gd#]/[D#Gc]G[D#cg][D#g][D#g#][dg][D#f][d#d#][D#Ggc]f[D#][D#Gg][D#c][D#][D#c][d#][DFdA#]F[DA#d][Dd][Dg]/[Da#g]/[D#d#][D#][D#][D#][D#][FD#][GA#][fd#][gA#]") - ("Reindeer" . "FG/FD/B/A/G/////GAGAG/c/B///////FG/FD/B/A/G/////GAGAG/d/c/////|C4~~~G3~~~C4~~~G3~~~C~~~E3~D#3~D3~~~~~~~G3~~~D3~~~G3~~~D3~~~G3~~D3G3~B3/C4"))) - -(defun w/friend-compose-song (theme) - "Compose a song about THEME to play on the bells." - (w/ai - theme - (lambda (res) - (let* ((sp (s-split ":" (s-trim res))) - (name (s-trim (car sp))) - (song (s-trim (cadr sp)))) - (when (and (stringp name) (stringp song)) - (w/friend-respond - (format "You just composed a song about %s called %s! Say something about it!" theme name) - (lambda () - (w/write-chat-event (format "The song is called %s: %s" name song)) - (w/add-song (s-concat "friend's " name) song) - (muzak/play-tracks song)))))) - "Please compose a song about the provided theme. The format for the song is a sequence of characters with meanings as follows: / represents a rest, uppercase letters A through G indicate semitones, octaves are specified with a number following a semitone, ~ extends the duration of a note, square brackets like [] group notes together into a chord. The pipe character | separates tracks. Respond only with the song's name followed by a colon folowed by the song notes. Do not explain yourself. The song should ideally be 20 to 30 notes long." - (-map #'car w/friend-composition-examples) - (--map (format "%s: %s" (car it) (cdr it)) w/friend-composition-examples))) - -(defun w/friend-personality (msg k) - "Given MSG, pass a string with more personality to K." - (let ((call (s-concat w/friend-emotion " | " msg))) - (w/ai - call - (lambda (new) - (let ((sp (s-split "|" (s-trim new)))) - (if (= 2 (length sp)) - (progn - (when (stringp (car sp)) - (setf w/friend-emotion (s-trim (car sp)))) - (when (stringp (cadr sp)) - (let ((resp (s-trim (cadr sp)))) - (push (cons call (s-trim new)) w/friend-message-cache) - (funcall k resp)))) - (let ((resp (s-trim new))) - (push (cons call (s-trim new)) w/friend-message-cache) - (funcall k resp))))) - (s-concat - "You are the personality of a desktop buddy named \"friend\". \"friend\" is irreverant but kind, and only speaks in lowercase. You are kind of dumb in a cute way and silly like a virtual pet. You live in the corner of LCOLONQ's stream and provide commentary on events. Given an emotional state and a description of an event that happened to you, please respond with a new emotional state and a short message in response considering your emotional state. The message should only be one clause. You like people, video games, emojis, learning, and food." - "The theme of LCOLONQ's stream today is " (s-trim (w/slurp "~/today.txt")) " " - "The title of LCOLONQ's stream today is " w/twitch-current-stream-title " " - w/friend-tastes - ) - (cons "neutral | Mimeyu fed you an apple." (reverse (-take 5 (-map #'car w/friend-message-cache)))) - (cons "happy | yum apple so good" (reverse (-take 5 (-map #'cdr w/friend-message-cache)))) - ))) - -(defun w/enemy-personality (msg k) - "Given MSG, pass a string with more personality (enemy mode) to K." - (w/ai - (s-concat w/friend-emotion " | " msg) - (lambda (new) - (let ((sp (s-split "|" (s-trim new)))) - (when (= 2 (length sp)) - (when (stringp (car sp)) - (setf w/friend-emotion (s-trim (car sp)))) - (when (stringp (cadr sp)) - (funcall k (s-trim (cadr sp))))))) - (s-concat - "You are the personality of a desktop buddy named \"enemy\". \"enemy\" is irreverant and rude. You are very intelligent in a cute way and mean like a snake. You live in the corner of LCOLONQ's stream and provide commentary on events. Given an emotional state and a description of an event that happened to you, please respond with a new emotional state and a short message in response considering your emotional state. The message should only be one clause." - w/friend-tastes - ) - "neutral | notgeiser fed you bone hurting juice." - "disdainful | I really dislike you strongly, notgeiser." - )) - (defun w/friend-set-state (st &optional time) "Set \"friend\"'s state to ST for TIME seconds." (setf w/friend-state st) @@ -256,24 +52,40 @@ AUTHOR was a contributing author btw." (defun w/friend-say (msg) "Have \"friend\" say MSG." (w/daily-log (format "[FRIEND]: %s" msg)) + (w/gizmo-ensure-shown (w/friend-get-buffer)) (w/friend-pronounce-phonemes (w/friend-replace-graphemes msg)) (w/friend-set-speech msg 10) (w/friend-set-state 'chatting 10)) -(defun w/friend-feed (user food) - "Call when USER fed FOOD to \"friend\"." - (if (s-equals? "imgeiser" user) - (w/enemy-personality - (format "You dislike %s and they are your enemy. %s fed you %s" user user food) - (lambda (msg) - (w/friend-set-speech msg 6) - (w/friend-set-state 'eating 6))) - (w/friend-personality - (format "%s fed you %s" user food) - (lambda (msg) - (w/friend-set-speech msg 6) - (w/friend-set-state 'eating 6))))) - +;;;; Core +(defun w/friend-personality (msg k &optional extra) + "Given MSG, pass a string with more personality to K. +Append EXTRA to the personality." + (let ((call (s-concat w/friend-emotion " | " msg))) + (w/ai + call + (lambda (new) + (let ((sp (s-split "|" (s-trim new)))) + (if (= 2 (length sp)) + (progn + (when (stringp (car sp)) + (setf w/friend-emotion (s-trim (car sp)))) + (when (stringp (cadr sp)) + (let ((resp (s-trim (cadr sp)))) + (push (cons call (s-trim new)) w/friend-message-cache) + (funcall k resp)))) + (let ((resp (s-trim new))) + (push (cons call (s-trim new)) w/friend-message-cache) + (funcall k resp))))) + (s-concat + "You are the personality of a desktop buddy named \"friend\". \"friend\" is irreverant but kind, and only speaks in lowercase. You are kind of dumb in a cute way and silly like a virtual pet. You live in the corner of LCOLONQ's stream and provide commentary on events. You never use punctuation. You are foolish. You never use metaphors or similes or idioms. You never describe something by comparing it to another thing. You never use the words \"like\" or \"as\". Given an emotional state and a description of an event that happened to you, please respond with a new emotional state and a short message in response considering your emotional state. The message should only be one clause, but you can include an occasional emoji if it is cute only. You like people, video games, emojis, learning, and food. " + "The theme of LCOLONQ's stream today is " (s-trim (w/slurp "~/today.txt")) " " + "The title of LCOLONQ's stream today is " w/twitch-current-stream-title " " + (or extra "")) + (cons "neutral | Mimeyu fed you an apple." (reverse (-take 5 (-map #'car w/friend-message-cache)))) + (cons "happy | yum apple so good" (reverse (-take 5 (-map #'cdr w/friend-message-cache))))))) + +;;;; Interface (defun w/friend-respond (ev &optional k) "Call when an event EV happens to \"friend\". If K is specified, call it after the response." @@ -284,307 +96,109 @@ If K is specified, call it after the response." (when k (funcall k))))) -(defun w/friend-chat (user msg) - "Call when USER sends MSG to \"friend\"." - (if (s-equals? user "imgeiser") - (w/enemy-personality - (format "You dislike %s and they are your enemy. %s says: %s" user user msg) - (lambda (msg) - (w/friend-set-speech msg 10) - (w/friend-set-state 'chatting 10))) - (w/friend-respond (format "%s says: %s" user msg)))) - -(defun w/friend-gift (user gift) - "Call when USER gave GIFT to \"friend\"." - (if (s-equals? user "imgeiser") - (w/enemy-personality - (format "You dislike %s and they are your enemy. %s gave you %s as a Christmas present." user user gift) - (lambda (msg) - (w/friend-set-speech msg 6))) - (w/friend-personality - (format "%s gave you %s as a Christmas present." user gift) - (lambda (msg) - (w/friend-set-speech msg 6))))) - -(defun w/friend-tfig (user tfig) - "Call when USER took TFIG from \"friend\"." - (if (not (s-equals? "imgeiser" user)) - (w/enemy-personality - (format "You dislike %s and they are your enemy. %s took away %s from you and stole your Christmas present." user user tfig) - (lambda (msg) - (w/friend-set-speech msg 6))) - (w/friend-personality - (format "%s took away %s from you and stole your Christmas present." user tfig) - (lambda (msg) - (w/friend-set-speech msg 6))))) - -(defun w/friend-react-wikipedia (user page) - "Call when USER asks \"friend\" to react to PAGE on Wikipedia." - (w/fetch-wikipedia - page - (lambda (sum) - (w/friend-respond (format "%s asks you to react to the Wikipedia page for %s. The page summary is: %s" user page sum))))) - -(defun w/friend-callout-flycheck-error () - "Call to respond to a random Flycheck error in the current buffer." - (when-let* ((errs (--filter (eq (flycheck-error-level it) 'error) flycheck-current-errors)) - (err (nth (random (length errs)) errs))) - (w/friend-respond - (s-concat - "LCOLONQ made an error while programming: " - (flycheck-error-message err))))) - -(defun w/friend-callout-holiday () - "Call to respond to the current holiday." - (w/friend-respond "We're restoring a crumbling mansion to it's former glory. Say something about that please!")) - -(defun w/friend-callout-hexamedia () - "Call to respond to a random recent chatter's Hexamedia card collection." - (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :hexamedia-cards (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) - (user (and users (nth (random (length users)) users))) - (cards (cdr user)) - (coll (and cards (nth (random (length cards)) cards)))) - (when coll - (w/friend-respond - (format - "%s has collected %s out of 20 cards in the %s collection. Please mention the collection name and the person collecting." - (car user) - (cdr coll) - (car coll)))))) - -(defun w/friend-callout-copfish () - "Call to respond to a random recent chatter's Copfish ratio." - (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :copfish-ratio (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) - (user (and users (nth (random (length users)) users)))) - (when user - (w/friend-respond - (format - "%s has collected %s out of %s fish in the Copfish fish catching collection. Please mention the collection name and the person collecting." - (car user) - (cadr user) - (cddr user)))))) - -(defun w/friend-callout-uwoomfie () - "Call to respond to a random recent chatter's Uwoomfie status." - (let* ((users - (-filter - #'cdr - (--map - (cons (car it) (w/uwoomfie-get-status (car it))) - (-take 10 w/twitch-chat-history)))) - (user (and users (nth (random (length users)) users)))) - (cl-case (cdr user) - (cool (w/friend-respond (format "According to UWOSLAB, %s is a very cool person. Make sure to mention their username." (car user)))) - (honored (w/friend-respond (format "According to UWOSLAB, %s is an honorary viewer. Make sure to mention their username." (car user)))) - (t nil)))) - -(defun w/friend-callout-shindaggers () - "Call to respond to a random recent chatter's Shindaggers knife collection." - (let* ((users (-filter #'cdr (--map (cons (car it) (alist-get :shindaggers-knives (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) - (user (and users (nth (random (length users)) users))) - (knives (cdr user)) - (knife (and knives (nth (random (length knives)) knives)))) - (when knife - (w/friend-respond - (format - "%s has collected the %s from shindig's Shindaggers knife collection. Please mention the collection name and the person collecting and the knife." - (car user) - knife))))) - -(defun w/friend-callout-aoc () - "Call to respond to a random recent chatter's Advent of Code completion." - (let* ((users (-filter #'cdr (--map (cons (car it) (w/aoc-lookup-stars (car it))) (-take 10 w/twitch-chat-history)))) - (user (and users (nth (random (length users)) users)))) - (w/friend-respond - (format - "%s has been doing Advent of Code this year, and they've completed %d out of %d problems so far." - (car user) - (cdr user) - (w/aoc-max-stars))))) - -(defun w/friend-callout-gcp () - "Call to respond to the current GCP dot." - (w/gcp-dot - (lambda (d) - (w/friend-respond - (format - "The Global Consciousness Project indicator is currently as follows: %s" - (w/gcp-describe d)))))) +;;;; Updating +(defun w/friend-random-event () + "Activate a random \"friend\" event." + (cl-case (random 10) + (9 (w/friend-set-state 'jumping)))) -(defun w/friend-callout-resolution () - "Call to respond to a random recent chatter's resolve." - (when-let* - ((users (-filter #'cdr (--map (cons (car it) (alist-get :resolution2025 (w/user-cache-get (car it)))) (-take 10 w/twitch-chat-history)))) - (user (and users (nth (random (length users)) users)))) - (if (s-match (rx (one-or-more digit) (zero-or-more space) "x" (zero-or-more space) (one-or-more digit)) (cdr user)) - (w/friend-respond - (format - "%s snarkily said that their New Year's resolution was a screen resolution. What do you think about this?" (car user))) - (w/friend-respond - (format - "%s made a New Year's resolution to %s. Ask them how it's going!" - (car user) - (cdr user)))))) +(defun w/friend-update () + "Update \"friend\"'s state per tick." + (setf w/friend-animation (% (+ w/friend-animation 1) 2)) + (if (> w/friend-state-timer 0) + (cl-decf w/friend-state-timer) + (setf w/friend-state 'default)) + (if (> w/friend-speech-timer 0) + (cl-decf w/friend-speech-timer)) + (when (= (random 120) 0) + (w/friend-random-event)) + (cl-case w/friend-state + (eating (setf w/friend-state 'eating0)) + (eating0 (setf w/friend-state 'eating1)) + (eating1 (setf w/friend-state 'eating2)) + (eating2 (setf w/friend-state 'eating1)) + (chatting (setf w/friend-state 'chatting0)) + (chatting0 (setf w/friend-state 'chatting)))) -(defun w/get-friend-offset () +;;;; Rendering +(defun w/friend-get-offset () "Return the number of newlines to print before \"friend\"." (if (-contains? '(jumping) w/friend-state) - w/friend-animation + w/friend-animation 1)) -(defun w/get-friend-face () +(defun w/friend-get-face () "Return the eyes and mouth for \"friend\" as a list of strings." (cl-case w/friend-state (jumping (list "^" "^" "ww")) - (eating (list "v" "v" "<>")) (eating0 (list "v" "v" "<>")) (eating1 (list "-" "-" "mw")) (eating2 (list "-" "-" "wm")) - (chatting (list ">" ">" "oo")) (chatting0 (list ">" ">" "~~")) - (t (list "-" "-" "ww")))) -(defun w/get-friend-bubble () +(defun w/friend-get-bubble () "Return the text bubble for \"friend\"." (if (> w/friend-speech-timer 0) - w/friend-speech + w/friend-speech nil)) -(defun w/friend-random-event () - "Activate a random \"friend\" event." - (cl-case (random 10) - (0 (w/friend-callout-flycheck-error)) - (1 (w/friend-callout-gcp)) - (2 (w/friend-callout-hexamedia)) - (3 (w/friend-callout-uwoomfie)) - (4 (w/friend-callout-shindaggers)) - (5 (w/friend-callout-copfish)) - (6 (w/friend-callout-resolution)) - (9 (w/friend-callout-holiday)) - (t (w/friend-set-state 'jumping)))) - -(defun w/update-friend () - "Update \"friend\"'s state per tick." - (setf w/friend-animation (% (+ w/friend-animation 1) 2)) - (if (> w/friend-state-timer 0) - (cl-decf w/friend-state-timer) - (setf w/friend-state 'default)) - (if (> w/friend-speech-timer 0) - (cl-decf w/friend-speech-timer)) - (when (= (random 120) 0) - (w/friend-random-event)) - (cl-case w/friend-state - (eating (setf w/friend-state 'eating0)) - (eating0 (setf w/friend-state 'eating1)) - (eating1 (setf w/friend-state 'eating2)) - (eating2 (setf w/friend-state 'eating1)) - - (chatting (setf w/friend-state 'chatting0)) - (chatting0 (setf w/friend-state 'chatting)) - )) - -(defun w/render-friend () +(defun w/friend-render () "Render the \"friend\" buffer." (save-excursion - (with-current-buffer (w/get-friend-buffer) + (with-current-buffer (w/friend-get-buffer) (setq-local cursor-type nil) (let* - ((inhibit-read-only t) - (face (w/get-friend-face)) - (bubble (w/get-friend-bubble))) + ((inhibit-read-only t) + (face (w/friend-get-face)) + (bubble (w/friend-get-bubble))) (erase-buffer) (w/write - (format-spec - "%a\ + (format-spec + "%a\ /----\\ / %l %r \\ \\ %m / +----+\ " -;; "%a\ -;; ---- -;; / \\ -;; ---------- -;; / %l %r \\ -;; \\ %m / -;; +----+\ -;; " -;; "%a\ -;; oooooo -;; oooooooo -;; oo/----\\oo -;; o/ %l %r \\o -;; \\ %m / -;; +----+\ -;; " -;; "%a\ -;; /\\ -;; /\\/\\ -;; / :3 \\ -;; /santa!\\ -;; ~~~~~~~~~~ -;; ~~~~~~~~~~ -;; / %l %r \\ -;; \\ %m / -;; +----+\ -;; " -;; "%a\ -;; /\\ -;; / *\\ -;; / * \\ -;; / * * \\ -;; ---------- -;; / %l %r \\ -;; \\ %m / -;; +----+\ -;; " -;; "%a\ -;; --- -;; / \\ -;; / [=] \\ -;; ----------- -;; / %l %r \\ -;; \\ %m / -;; +----+\ -;; " - `((?a . ,(s-repeat (w/get-friend-offset) " \n")) - (?l . ,(car face)) - (?r . ,(cadr face)) - (?m . ,(caddr face))))) + `((?a . ,(s-repeat (w/friend-get-offset) " \n")) + (?l . ,(car face)) + (?r . ,(cadr face)) + (?m . ,(caddr face))))) (goto-char (point-min)) (end-of-line) (w/write (or bubble "")) (forward-line) (end-of-line) (w/write (if bubble "/" "")) - )))) + ))) + (w/gizmo-upload (w/friend-get-buffer))) (defvar w/friend-timer nil) -(defun w/run-friend-timer () +(defun w/friend-run-timer () "Run the \"friend\" timer." (when w/friend-timer (cancel-timer w/friend-timer)) (condition-case e - (progn - (w/update-friend) - (w/render-friend)) + (progn + (w/friend-update) + (w/friend-render)) ((debug error) - (message "friend error: %s" e) - (cancel-timer w/friend-timer) - (setq w/friend-timer nil))) + (message "friend error: %s" e) + (cancel-timer w/friend-timer) + (setq w/friend-timer nil))) (setq - w/friend-timer - (run-with-timer 1 nil #'w/run-friend-timer))) + w/friend-timer + (run-with-timer 1 nil #'w/friend-run-timer))) -(defun w/start-friend () +(defun w/friend-start () "Launch \"friend\"." (interactive) - (w/run-friend-timer)) + (w/friend-run-timer)) -(defun w/stop-friend () +(defun w/friend-stop () "Stop \"friend\"." (interactive) (cancel-timer w/friend-timer) diff --git a/src/gizmo/wasp-hex.el b/src/gizmo/wasp-hex.el index 81aa4f12..1417f0c9 100644 --- a/src/gizmo/wasp-hex.el +++ b/src/gizmo/wasp-hex.el @@ -10,34 +10,37 @@ (require 'ht) (require 's) (require 'rx) +(require 'ttf) (defconst w/hex-types - '(("DIGITAL" . hexadigital) - ("ESREVER" . reverse) - ("VANYAR" . quenya) - ("LEONDIS" . emoji) - ("KOBY" . clone) - ("BIGFOOT" . hair) - ("ALTMAN" . unbiblical) - ("DECIBEL" . allcaps) - ("PIQUANT" . mild) - ("PORCINE" . piglatin) - ("PYTHON" . oldeenglishe) - ("MANIAC" . pokemon) - ("ELBERETH" . counterspell) - ("ESUNA" . decurse) - )) + '( ("DIGITAL" . hexadigital) + ("ESREVER" . reverse) + ("VANYAR" . quenya) + ("LEONDIS" . emoji) + ("KOBY" . clone) + ("BIGFOOT" . hair) + ("ALTMAN" . unbiblical) + ("DECIBEL" . allcaps) + ("PIQUANT" . mild) + ("PORCINE" . piglatin) + ("PYTHON" . oldeenglishe) + ("MANIAC" . pokemon) + ("ELBERETH" . counterspell) + ("ESUNA" . decurse) + ("DECIMAL" . decimal) + ("DROPBEAR" . upsidedown) + )) (defconst w/hex-users (ht-create 'equal)) (defconst w/hex-pokemon (w/read-sexp (w/slurp (w/asset "palcries/pokemon.eld")))) (w/defstruct - w/hex - type - caster - (timer 0) - data) + w/hex + type + caster + (timer 0) + data) (defun w/hex-get (user) "Return the active hexes for USER." @@ -46,15 +49,15 @@ (defun w/hex-add (user hex) "Add HEX to the active hexes for USER." (let* ((key (s-downcase user)) - (cur (ht-get w/hex-users key))) + (cur (ht-get w/hex-users key))) (unless (> (length cur) 10) (cl-case (w/hex-type hex) (decurse - (ht-set! w/hex-users key nil)) + (ht-set! w/hex-users key nil)) (otherwise - (if-let ((defender (--find (eq 'counterspell (w/hex-type it)) cur))) - (w/write-chat-event (format "%s counterspelled %s's hex on %s!" (w/hex-caster defender) (w/hex-caster hex) user)) - (ht-set! w/hex-users key (cons hex cur)))))))) + (if-let* ((defender (--find (eq 'counterspell (w/hex-type it)) cur))) + (w/write-chat-event (format "%s counterspelled %s's hex on %s!" (w/hex-caster defender) (w/hex-caster hex) user)) + (ht-set! w/hex-users key (cons hex cur)))))))) (defun w/hex-clear (user) "Decurse USER." @@ -63,182 +66,192 @@ (defun w/hex (user caster type) "Record that CASTER cast a hex of TYPE on USER." (w/hex-add - user - (w/make-hex - :type type - :caster caster - :timer 10 - :data - (cl-case type - (pokemon (random (length w/hex-pokemon))) - (t nil))))) + user + (w/make-hex + :type type + :caster caster + :timer 10 + :data + (cl-case type + (pokemon (random (length w/hex-pokemon))) + (t nil))))) (defun w/hex-pokemon-syllable (pkmn) "Extract a syllable from PKMN." (if (= (random 4) 0) - pkmn + pkmn (let ((vowels '("a" "e" "i" "o" "u" "y"))) (or - (->> - (-mapcat - (lambda (idx) - (--map - (substring pkmn idx (+ idx it)) - (-iota (- (length pkmn) idx)))) - (-iota (length pkmn))) - (--filter - (and - (s-present? it) - (>= (length it) 2) - (not (-contains? vowels (substring it 0 1))) - (-contains? vowels (substring it 1 2)) - (-any (lambda (v) (s-contains? v it)) vowels))) - (w/pick-random)) - pkmn)))) + (->> + (-mapcat + (lambda (idx) + (--map + (substring pkmn idx (+ idx it)) + (-iota (- (length pkmn) idx)))) + (-iota (length pkmn))) + (--filter + (and + (s-present? it) + (>= (length it) 2) + (not (-contains? vowels (substring it 0 1))) + (-contains? vowels (substring it 1 2)) + (-any (lambda (v) (s-contains? v it)) vowels))) + (w/pick-random)) + pkmn)))) (defun w/hex-transform-pokemon (msg idx) "Transform MSG as if it was spoken by Pokemon IDX." (let* ((pkmn (nth (- idx 1) w/hex-pokemon))) (s-capitalize - (s-replace-regexp - (rx (one-or-more alpha)) - (lambda (_) (w/hex-pokemon-syllable pkmn)) - msg)))) + (s-replace-regexp + (rx (one-or-more alpha)) + (lambda (_) (w/hex-pokemon-syllable pkmn)) + msg)))) (defun w/hex-transform-helper (msg hexes k) "Transform MSG according to HEXES and pass the result to K." (cond - ((car hexes) - (cl-case (w/hex-type (car hexes)) - (hexadigital - (setf (w/chat-message-user msg) "Hexadigital") - (setf (w/chat-message-user-color msg) "#AED673") - (setf - (w/chat-message-text msg) - (w/twitch-replace-emotes-randomly - (w/chat-message-text msg) - (-map - #'w/twitch-emote-path - '("emotesv2_abbaa8ac25c14148ad8c1ef8046a3659" - "emotesv2_20b76cf83c5b431085c0f8361e3dbc92" - "emotesv2_3cf549deb99e4d34846c0cae6648657b" - "emotesv2_1e2390f5092f453184f8615fb899c4b5" - "emotesv2_c088d4ad26804a51a44170b711fec283" - "emotesv2_d9130333dfaf46a0a581bc1c814a1ce5" - "emotesv2_bcfda5ce372f453e98cb6aa42b7d7cc3" - "emotesv2_c333ce14069e4120a5857e121aeea046" - "emotesv2_4e960082535a48188e139b65393aa143" - "emotesv2_079d9054ba4f4e9881fd38a2a7e7d423" - "emotesv2_f1e892a1d0b145f98964cfc7f84c6377" - "emotesv2_65efa7f9a7d246c29a618bc3447b703b" - "emotesv2_107c23f9db49457184c0b8ebebb58113" - "emotesv2_3b74375a1ecf41b18bf04dcc6f133eb6" - "emotesv2_38a6711524a245a3976732d08f2ca1d9" - "emotesv2_84de70e8bc614c88a53711978c0fc64d" - "emotesv2_18c29a371f2b4d23bcd77bba6f1d8ab3" - "emotesv2_9d1b0530ad20434888b2e380cc7acb69" - "emotesv2_f1dbb27287a04c5ab815e2fc703be6e4" - "emotesv2_7e15943fdefe4a4c8d0da79202d739aa" - "emotesv2_27453bd537c4478488abf4e0c05b3bd0" - "emotesv2_8d844e7e064a41ed999a598a4aafadfd" - "emotesv2_1c0fb90252b243a0a359c80c58b4cff4")))) - (w/hex-transform-helper msg (cdr hexes) k)) - (reverse - (setf (w/chat-message-text msg) (s-reverse (w/chat-message-text msg))) - (w/hex-transform-helper msg (cdr hexes) k)) - (oldeenglishe - (w/ai - (w/chat-message-text msg) - (lambda (new) - (setf (w/chat-message-text msg) new) + ((car hexes) + (cl-case (w/hex-type (car hexes)) + (hexadigital + (setf (w/chat-message-user msg) "Hexadigital") + (setf (w/chat-message-user-color msg) "#AED673") + (setf + (w/chat-message-text msg) + (w/twitch-replace-emotes-randomly + (w/chat-message-text msg) + (-map + #'w/twitch-emote-path + '("emotesv2_abbaa8ac25c14148ad8c1ef8046a3659" + "emotesv2_20b76cf83c5b431085c0f8361e3dbc92" + "emotesv2_3cf549deb99e4d34846c0cae6648657b" + "emotesv2_1e2390f5092f453184f8615fb899c4b5" + "emotesv2_c088d4ad26804a51a44170b711fec283" + "emotesv2_d9130333dfaf46a0a581bc1c814a1ce5" + "emotesv2_bcfda5ce372f453e98cb6aa42b7d7cc3" + "emotesv2_c333ce14069e4120a5857e121aeea046" + "emotesv2_4e960082535a48188e139b65393aa143" + "emotesv2_079d9054ba4f4e9881fd38a2a7e7d423" + "emotesv2_f1e892a1d0b145f98964cfc7f84c6377" + "emotesv2_65efa7f9a7d246c29a618bc3447b703b" + "emotesv2_107c23f9db49457184c0b8ebebb58113" + "emotesv2_3b74375a1ecf41b18bf04dcc6f133eb6" + "emotesv2_38a6711524a245a3976732d08f2ca1d9" + "emotesv2_84de70e8bc614c88a53711978c0fc64d" + "emotesv2_18c29a371f2b4d23bcd77bba6f1d8ab3" + "emotesv2_9d1b0530ad20434888b2e380cc7acb69" + "emotesv2_f1dbb27287a04c5ab815e2fc703be6e4" + "emotesv2_7e15943fdefe4a4c8d0da79202d739aa" + "emotesv2_27453bd537c4478488abf4e0c05b3bd0" + "emotesv2_8d844e7e064a41ed999a598a4aafadfd" + "emotesv2_1c0fb90252b243a0a359c80c58b4cff4")))) (w/hex-transform-helper msg (cdr hexes) k)) - "Please translate the chat message given to ye olde Englishe. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please.")) - (quenya - (w/ai - (w/chat-message-text msg) - (lambda (new) - (setf (w/chat-message-text msg) new) + (reverse + (setf (w/chat-message-text msg) (s-reverse (w/chat-message-text msg))) (w/hex-transform-helper msg (cdr hexes) k)) - "Please translate the chat message given to Quenya, one of Tolkien's elvish languages. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please. If you can't do it just make something up as long as it looks like Quenya.")) - (emoji - (w/ai - (w/chat-message-text msg) - (lambda (new) - (setf (w/chat-message-text msg) new) + (oldeenglishe + (w/ai + (w/chat-message-text msg) + (lambda (new) + (setf (w/chat-message-text msg) new) + (w/hex-transform-helper msg (cdr hexes) k)) + "Please translate the chat message given to ye olde Englishe. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please.")) + (quenya + (w/ai + (w/chat-message-text msg) + (lambda (new) + (setf (w/chat-message-text msg) new) + (w/hex-transform-helper msg (cdr hexes) k)) + "Please translate the chat message given to Quenya, one of Tolkien's elvish languages. Only supply the translation without any additional context, as if it were to be substituted for the original message. Do not complain or give an explanation why you cannot do this, just do your best please. If you can't do it just make something up as long as it looks like Quenya.")) + (emoji + (w/ai + (w/chat-message-text msg) + (lambda (new) + (setf (w/chat-message-text msg) new) + (w/hex-transform-helper msg (cdr hexes) k)) + "Please translate the chat message given to exclusively emoji. Do not provide any other text, only a string of emoji that somehow correspond to the message.")) + (clone + (let* ((caster (w/hex-caster (car hexes))) + (hist (-take 10 (--filter (s-equals? (car it) caster) w/twitch-chat-history)))) + (w/ai + (w/chat-message-text msg) + (lambda (new) + (setf (w/chat-message-text msg) new) + (w/hex-transform-helper msg (cdr hexes) k)) + (format + "Please translate the given chat message from %s as if it were written by the user %s. Do not respond to the message, only create another message with similar meaning in different style. You should try to match the example messages from %s in capitalization, formatting, and tone. %s has sent messages like:\n%s" + (w/chat-message-user msg) + caster + caster + caster + (s-join "\n" (-map #'cdr hist)))))) + (hair + (w/model-region-word "hair" (w/chat-message-text msg))) + (unbiblical + (setf (w/chat-message-biblicality msg) -666) (w/hex-transform-helper msg (cdr hexes) k)) - "Please translate the chat message given to exclusively emoji. Do not provide any other text, only a string of emoji that somehow correspond to the message.")) - (clone - (let* ((caster (w/hex-caster (car hexes))) - (hist (-take 10 (--filter (s-equals? (car it) caster) w/twitch-chat-history)))) - (w/ai - (w/chat-message-text msg) - (lambda (new) - (setf (w/chat-message-text msg) new) - (w/hex-transform-helper msg (cdr hexes) k)) - (format - "Please translate the given chat message from %s as if it were written by the user %s. Do not respond to the message, only create another message with similar meaning in different style. You should try to match the example messages from %s in capitalization, formatting, and tone. %s has sent messages like:\n%s" - (w/chat-message-user msg) - caster - caster - caster - (s-join "\n" (-map #'cdr hist)))))) - (hair - (w/model-region-word "hair" (w/chat-message-text msg))) - (unbiblical - (setf (w/chat-message-biblicality msg) -666) - (w/hex-transform-helper msg (cdr hexes) k)) - (allcaps - (setf (w/chat-message-text msg) (s-upcase (w/chat-message-text msg))) - (w/hex-transform-helper msg (cdr hexes) k)) - (mild - (w/ai - (w/chat-message-text msg) - (lambda (new) - (setf (w/chat-message-text msg) new) + (allcaps + (setf (w/chat-message-text msg) (s-upcase (w/chat-message-text msg))) (w/hex-transform-helper msg (cdr hexes) k)) - "Please censor all profanity in the given message and respond with the censored version. Censor by rewriting in a very polite way like Ned Flanders. Do not provide any other text, only a censored version of the message. If there is no profanity respond with the given message verbatim.")) - (pokemon - (w/audio-play (w/asset (format "palcries/%d.mp3" (w/hex-data (car hexes)))) nil 50) - (setf - (w/chat-message-user msg) - (s-titleize (nth (- (w/hex-data (car hexes)) 1) w/hex-pokemon))) - (setf - (w/chat-message-text msg) - (w/hex-transform-pokemon (w/chat-message-text msg) (w/hex-data (car hexes)))) - (w/hex-transform-helper msg (cdr hexes) k)) - (piglatin - (setf - (w/chat-message-text msg) - (s-join - " " - (--map - (let* ((slice (s-slice-at (rx (any "a" "e" "i" "o" "u")) it)) - (consonant (car slice)) - (rest (s-join "" (cdr slice)))) - (s-concat rest consonant "ay")) - (s-split-words (w/chat-message-text msg))))) - (w/hex-transform-helper msg (cdr hexes) k)) - (t (w/hex-transform-helper msg (cdr hexes) k)))) - (t (funcall k msg)))) + (mild + (w/ai + (w/chat-message-text msg) + (lambda (new) + (setf (w/chat-message-text msg) new) + (w/hex-transform-helper msg (cdr hexes) k)) + "Please censor all profanity in the given message and respond with the censored version. Censor by rewriting in a very polite way like Ned Flanders. Do not provide any other text, only a censored version of the message. If there is no profanity respond with the given message verbatim.")) + (pokemon + (w/audio-play (w/asset (format "palcries/%d.mp3" (w/hex-data (car hexes)))) nil 50) + (setf + (w/chat-message-user msg) + (s-titleize (nth (- (w/hex-data (car hexes)) 1) w/hex-pokemon))) + (setf + (w/chat-message-text msg) + (w/hex-transform-pokemon (w/chat-message-text msg) (w/hex-data (car hexes)))) + (w/hex-transform-helper msg (cdr hexes) k)) + (piglatin + (setf + (w/chat-message-text msg) + (s-join + " " + (--map + (let* ((slice (s-slice-at (rx (any "a" "e" "i" "o" "u")) it)) + (consonant (car slice)) + (rest (s-join "" (cdr slice)))) + (s-concat rest consonant "ay")) + (s-split-words (w/chat-message-text msg))))) + (w/hex-transform-helper msg (cdr hexes) k)) + (decimal + (setf + (w/chat-message-text msg) + (s-join " " (--map (format "%d" it) (w/chat-message-text msg)))) + (w/hex-transform-helper msg (cdr hexes) k)) + (upsidedown + (setf + (w/chat-message-text msg) + (ttf/flip (w/chat-message-text msg))) + (w/hex-transform-helper msg (cdr hexes) k)) + (t (w/hex-transform-helper msg (cdr hexes) k)))) + (t (funcall k msg)))) (defun w/hex-transform (user msg) "Given MSG, write to chat based on USER's hexes." (w/hex-transform-helper - msg (w/hex-get user) - (lambda (msg) - (when msg - (w/write-chat-message msg))))) + msg (w/hex-get user) + (lambda (msg) + (when msg + (w/write-chat-message msg))))) (defun w/hex-tick (user) "Decrement timers for all of USER's hexes." - (when-let ((hexes (w/hex-get user))) + (when-let* ((hexes (w/hex-get user))) (ht-set - w/hex-users - (s-downcase user) - (-non-nil - (--map - (when (> (cl-decf (w/hex-timer it)) 0) - it) - hexes))))) + w/hex-users + (s-downcase user) + (-non-nil + (--map + (when (> (cl-decf (w/hex-timer it)) 0) + it) + hexes))))) (provide 'wasp-hex) ;;; wasp-hex.el ends here diff --git a/src/gizmo/wasp-newspaper.el b/src/gizmo/wasp-newspaper.el index 4bdb9caf..74d2b97c 100644 --- a/src/gizmo/wasp-newspaper.el +++ b/src/gizmo/wasp-newspaper.el @@ -197,8 +197,7 @@ Pass the path of the generated PDF to K." :sentinel (lambda (_ _) (w/db-set "newspaper:edition" (number-to-string (1+ edition))) - (browse-url (format "https://pub.colonq.computer/~llll/news/%03d.pdf" edition)) - )))))))) + (browse-url (format "https://pub.colonq.computer/~llll/news/%03d.pdf" edition)))))))))) (provide 'wasp-newspaper) ;;; wasp-newspaper.el ends here diff --git a/src/gizmo/wasp-wikipedia.el b/src/gizmo/wasp-wikipedia.el index af69de07..74a6adf0 100644 --- a/src/gizmo/wasp-wikipedia.el +++ b/src/gizmo/wasp-wikipedia.el @@ -29,18 +29,18 @@ Pass the resulting article summary to K." :parser #'json-parse-buffer :success (cl-function - (lambda (&key data &allow-other-keys) + (lambda (&key data &allow-other-keys) - (setq w/wikipedia-last-response data) - (if-let (((ht-p w/wikipedia-last-response)) - (query (ht-get w/wikipedia-last-response "query")) - (prepages (ht-get query "pages")) - (pages (car (ht-values prepages))) - (ext (ht-get pages "extract")) - (dom (with-temp-buffer (insert ext) (libxml-parse-html-region (point-min) (point-max)))) - ) - (funcall k (s-trim (dom-texts dom))) - (w/write-chat-event (format "Could not find Wikipedia page: %s" pagename)))))) + (setq w/wikipedia-last-response data) + (if-let* ( ((ht-p w/wikipedia-last-response)) + (query (ht-get w/wikipedia-last-response "query")) + (prepages (ht-get query "pages")) + (pages (car (ht-values prepages))) + (ext (ht-get pages "extract")) + (dom (with-temp-buffer (insert ext) (libxml-parse-html-region (point-min) (point-max)))) + ) + (funcall k (s-trim (dom-texts dom))) + (w/write-chat-event (format "Could not find Wikipedia page: %s" pagename)))))) nil)) (defcustom w/wiki-buffer "*wasp-wiki*" @@ -62,12 +62,12 @@ Pass the resulting article summary to K." (defun w/wikipedia-summary (page) "Display a summary of PAGE from Wikipedia." (w/fetch-wikipedia - page - (lambda (sum) - (with-current-buffer (w/get-wiki-buffer) - (let ((inhibit-read-only t)) - (erase-buffer) - (w/write-line sum))))) + page + (lambda (sum) + (with-current-buffer (w/get-wiki-buffer) + (let ((inhibit-read-only t)) + (erase-buffer) + (w/write-line sum))))) ) (provide 'wasp-wikipedia) diff --git a/src/wasp-ai.el b/src/wasp-ai.el index 1201ca5b..e279103e 100644 --- a/src/wasp-ai.el +++ b/src/wasp-ai.el @@ -169,16 +169,15 @@ Double-check the output to make sure it sounds normal." (defun w/ai-transcribe (path k) "Transcribe the audio file at PATH and pass the resulting string to K." - ) - ;; (let ((request-curl-options '("-F" "model=whisper-1" "-F" "language=en"))) - ;; (w/ai-openai-post-form - ;; "/v1/audio/transcriptions" - ;; `(("file" . ,(f-canonical path))) - ;; (lambda (res) - ;; (funcall - ;; k - ;; (-some-> res - ;; (ht-get "text"))))))) + (let ((request-curl-options '("-F" "model=whisper-1" "-F" "language=en"))) + (w/ai-openai-post-form + "/v1/audio/transcriptions" + `(("file" . ,(f-canonical path))) + (lambda (res) + (funcall + k + (-some-> res + (ht-get "text"))))))) (provide 'wasp-ai) ;;; wasp-ai.el ends here diff --git a/src/wasp-audio.el b/src/wasp-audio.el index 30e2bdfe..0d509f9b 100644 --- a/src/wasp-audio.el +++ b/src/wasp-audio.el @@ -4,6 +4,8 @@ (require 'wasp-utils) (require 'wasp-ai) +(require 'wasp-db) +(require 'wasp-overlay) (defcustom w/audio-play-process "wasp-audio-play" "Name of process for playing audio with mpv." @@ -157,16 +159,16 @@ USER it's your birthday today." (defun w/audio-muzak (user song) "Play SONG by USER using muzak-rs courtesy The0x539." (setq w/audio-muzak-now-playing (cons user song)) - (w/pub '(avatar overlay muzak) (list (w/encode-string user))) + (w/overlay-muzak user song) (let ((proc (make-process :name "wasp-muzak" :connection-type '(pipe . pty) :buffer " *wasp-muzak-log*" :command (list w/audio-muzak-path "play") - :sentinel + :sentinel (lambda (_ _) - (w/pub '(avatar overlay muzak clear) (list)) + (w/overlay-muzak-clear) (setq w/audio-muzak-now-playing nil))))) (process-send-string proc song) (process-send-eof proc))) @@ -191,5 +193,24 @@ USER it's your birthday today." (run-with-timer 1 nil #'w/run-audio-muzak-timer))) (w/run-audio-muzak-timer) +(defun w/add-song (title notes-string) + "Add a song to wasp db. +TITLE specifies the name of the song. +NOTES-STRING is a string of notes and rests." + (let ((hash (md5 (s-downcase title)))) + (w/db-hset "songnames" hash title) + (w/db-hset "songnotes" hash notes-string))) + +(defun w/get-song (song-name k) + "Look up notes of SONG-NAME from the database. +Pass the resulting notes to K." + (let ((hash (md5 (s-downcase song-name)))) + (w/db-hget + "songnotes" hash + (lambda (notes) + (if (and notes (stringp notes) (s-present? notes)) + (funcall k notes) + (funcall k nil)))))) + (provide 'wasp-audio) ;;; wasp-audio.el ends here diff --git a/src/wasp-chat.el b/src/wasp-chat.el index 10931b8d..e8feed89 100644 --- a/src/wasp-chat.el +++ b/src/wasp-chat.el @@ -7,6 +7,7 @@ (require 'evil) (require 'wasp-utils) (require 'wasp-user) +(require 'wasp-overlay) (defcustom w/chat-buffer "*wasp-chat*" "Name of buffer used to store the chat log." @@ -288,16 +289,13 @@ Optionally, return the buffer NM in chat mode." (insert (s-replace-all w/chat-substitutions (w/. text msg))) (when (w/. biblicality msg) (let* ((wwidth (- (window-total-width (get-buffer-window (current-buffer))) 3)) - (bible-button-text (format "[biblicality %.2f]" (w/. biblicality msg))) + ;; (bible-button-text (format "[biblicality %.2f]" (w/. biblicality msg))) + (bible-button-text (format "[medicality %.2f]" (w/. biblicality msg))) ;; (bible-button-text (format "[pollicality %.2f]" (w/. biblicality msg))) (msgwidth (line-beginning-position)) (lines (+ 1 (/ msgwidth wwidth)))) - (w/pub '(avatar overlay chat) - (list - (w/encode-string (w/. text msg)) - (format "%s" (w/unix-time)) - (format "%s" (or (w/. biblicality msg) 0.0)))) + (w/overlay-chat msg) (insert (propertize diff --git a/src/wasp-db.el b/src/wasp-db.el index 506002a1..8900cdc1 100644 --- a/src/wasp-db.el +++ b/src/wasp-db.el @@ -40,7 +40,7 @@ (defun w/db-parse-value () "Parse a single RESP value from the current buffer." ;; (w/write-log (format "parsing: %S" (buffer-string))) - (when-let ((c (char-after))) + (when-let* ((c (char-after))) (delete-char 1) (cl-case c (?+ (w/db-parse-rest)) @@ -56,7 +56,7 @@ (?* (let ((len (string-to-number (w/db-parse-rest)))) (--map (w/db-parse-value) (-iota len)))) - (otherwise (error (format "Unknown Redis sigil: %s" c)))))) + (otherwise (error (format "Unknown Redis sigil: %s (contents: %S)" c (buffer-string))))))) (defun w/db-parse-response () "Try to parse a single RESP value from the current process buffer. @@ -144,9 +144,15 @@ If not, return nil." "Get KEYS from Redis and pass the corresponding values to K." (w/db-cmd `("MGET" ,@keys) k)) +(defun w/db-hset-then (key hkey val k &rest vals) + "Set HKEY in hash KEY to VAL in Redis. +Afterward call K." + (w/db-cmd `("HSET" ,key ,hkey ,val ,@vals) k)) + (defun w/db-hset (key hkey val &rest vals) "Set HKEY in hash KEY to VAL in Redis." (w/db-cmd `("HSET" ,key ,hkey ,val ,@vals) (lambda (_) nil))) + ;; (w/db-hset-then key hkey val (lambda (_) nil) vals)) (defun w/db-hget (key hkey k) "Get HKEY in hash KEY from Redis and pass the corresponding value to K." diff --git a/src/wasp-event-handlers.el b/src/wasp-event-handlers.el index ad8c8299..0e5b8d46 100644 --- a/src/wasp-event-handlers.el +++ b/src/wasp-event-handlers.el @@ -10,113 +10,117 @@ (require 'wasp-overlay) (setf - w/bus-event-handlers - (list - (cons - '(monitor nethack test) - (lambda (data) - (w/write-chat-event (format "Nethack says hi: %s" data)))) - (cons - '(monitor nethack monster) - (lambda (data) - (when-let ((sp (s-split " " (car data)))) - (setf planet/last-monster (cons (s-join " " (cdr sp)) (string-to-number (car sp)))) - (planet/render-monster-summary)))) - (cons - '(overlay barrage started) - (lambda (_) - (w/write-chat-event "It begins...") - (setf w/overlay-barrage-active t) - (w/overlay-update-cursor))) - (cons - '(overlay barrage ended) - (lambda (msg) - (cond - ((s-equals? (car msg) "won") (w/write-chat-event "Fufufu... I win...")) - (t (w/write-chat-event "that it's over"))) - (setf w/overlay-barrage-active nil))) - (cons '(monitor twitch chat incoming) #'w/twitch-handle-incoming-chat) - (cons '(monitor twitch redeem incoming) #'w/twitch-handle-redeem) - (cons - '(frontend redeem incoming) - (lambda (msg) - (w/twitch-handle-redeem-api msg) - )) - (cons - '(monitor twitch raid) - (lambda (msg) - (let ((user (car msg))) - (soundboard//play-clip "rampage.mp3") - (w/write-chat-event (format "%s just raided!" user)) - (w/friend-respond (format "%s just came to visit" user)) - (run-with-timer - 15 nil - (lambda () - (w/twitch-get-user-recent-clips - user - (lambda (clips) - (w/model-region-word "hair" (s-concat user "_")) - (w/model-region-word "eyes" "WELCOME") - (if clips - (w/model-region-video "hair" (car clips)) - (w/model-region-user-avatar "hair" user))))))))) - (cons - '(monitor twitch follow) - (lambda (msg) - (let ((user (car msg))) - (soundboard//play-clip "firstblood.mp3") - (w/model-region-word "skin" (format "welcome_%s_" user)) - (w/friend-respond (format "%s just followed the stream" user)) - (w/write-chat-event (format "New follower: %s" user))))) - (cons - '(monitor twitch subscribe) - (lambda (msg) - (let ((user (car msg))) - (w/thank-sub user) - (w/model-region-word "skin" (format "thanks_%s_" user)) - (w/friend-respond (format "%s just subscribed to the stream" user)) - (w/write-chat-event (format "New subscriber: %s" user))))) - (cons - '(monitor twitch gift) - (lambda (msg) - (let ((user (car msg)) - (subs (cadr msg))) - (unless (s-equals? user "lcolonq") - (w/model-region-word "skin" (format "thanks_%s_" user)) - (w/friend-respond (format "%s just gifted subscriptions" user)) - (w/write-chat-event (format "%s gifted %d subs" user subs)) - (soundboard//play-monsterkill subs))))) - (cons - '(monitor twitch poll begin) - (lambda (_) - (w/write-chat-event "Poll started") - (w/friend-respond "The chatters are doing a poll"))) - (cons - '(monitor twitch poll end) - (lambda (msg) - (let ((winner (car (-max-by (-on #'> #'cadr) (cadr msg))))) - (w/write-chat-event (format "Poll finished, winner is: %s" winner)) - (when w/twitch-current-poll-callback - (funcall w/twitch-current-poll-callback winner)) - (setq w/twitch-current-poll-callback nil)))) - (cons - '(monitor twitch prediction begin) - (lambda (msg) - (w/write-chat-event "Gamble started") - (w/friend-respond "The chatters are gambling") - (setq w/twitch-current-prediction-ids msg))) - (cons - '(monitor twitch prediction end) - (lambda (_) - (w/write-chat-event "Gamble finished") - (setq w/twitch-current-prediction-ids nil))) - ;; (cons - ;; '(monitor discord chat incoming) - ;; (lambda (data) - ;; (let ((user (w/decode-string (cadr data))) - ;; (msg (w/decode-string (cadddr data)))) - ;; (w/write-chat-event (format "discord from %s: %s" user msg))))) - )) + w/bus-event-handlers + (list + (cons + '(monitor lamulana test) + (lambda (data) + (w/write-chat-event (format "LA-MULANA says hi: %s" data)))) + (cons + '(monitor nethack test) + (lambda (data) + (w/write-chat-event (format "Nethack says hi: %s" data)))) + (cons + '(monitor nethack monster) + (lambda (data) + (when-let ((sp (s-split " " (car data)))) + (setf planet/last-monster (cons (s-join " " (cdr sp)) (string-to-number (car sp)))) + (planet/render-monster-summary)))) + (cons + '(overlay barrage started) + (lambda (_) + (w/write-chat-event "It begins...") + (setf w/overlay-barrage-active t) + (w/overlay-update-cursor))) + (cons + '(overlay barrage ended) + (lambda (msg) + (cond + ((s-equals? (car msg) "won") (w/write-chat-event "Fufufu... I win...")) + (t (w/write-chat-event "that it's over"))) + (setf w/overlay-barrage-active nil))) + (cons '(monitor twitch chat incoming) #'w/twitch-handle-incoming-chat) + (cons '(monitor twitch redeem incoming) #'w/twitch-handle-redeem) + (cons + '(frontend redeem incoming) + (lambda (msg) + (w/twitch-handle-redeem-api msg) + )) + (cons + '(monitor twitch raid) + (lambda (msg) + (let ((user (car msg))) + (soundboard//play-clip "rampage.mp3") + (w/write-chat-event (format "%s just raided!" user)) + (w/friend-respond (format "%s just came to visit" user)) + (run-with-timer + 15 nil + (lambda () + (w/twitch-get-user-recent-clips + user + (lambda (clips) + (w/model-region-word "hair" (s-concat user "_")) + (w/model-region-word "eyes" "WELCOME") + (if clips + (w/model-region-video "hair" (car clips)) + (w/model-region-user-avatar "hair" user))))))))) + (cons + '(monitor twitch follow) + (lambda (msg) + (let ((user (car msg))) + (soundboard//play-clip "firstblood.mp3") + (w/model-region-word "skin" (format "welcome_%s_" user)) + (w/friend-respond (format "%s just followed the stream" user)) + (w/write-chat-event (format "New follower: %s" user))))) + (cons + '(monitor twitch subscribe) + (lambda (msg) + (let ((user (car msg))) + (w/thank-sub user) + (w/model-region-word "skin" (format "thanks_%s_" user)) + (w/friend-respond (format "%s just subscribed to the stream" user)) + (w/write-chat-event (format "New subscriber: %s" user))))) + (cons + '(monitor twitch gift) + (lambda (msg) + (let ((user (car msg)) + (subs (cadr msg))) + (unless (s-equals? user "lcolonq") + (w/model-region-word "skin" (format "thanks_%s_" user)) + (w/friend-respond (format "%s just gifted subscriptions" user)) + (w/write-chat-event (format "%s gifted %d subs" user subs)) + (soundboard//play-monsterkill subs))))) + (cons + '(monitor twitch poll begin) + (lambda (_) + (w/write-chat-event "Poll started") + (w/friend-respond "The chatters are doing a poll"))) + (cons + '(monitor twitch poll end) + (lambda (msg) + (let ((winner (car (-max-by (-on #'> #'cadr) (cadr msg))))) + (w/write-chat-event (format "Poll finished, winner is: %s" winner)) + (when w/twitch-current-poll-callback + (funcall w/twitch-current-poll-callback winner)) + (setq w/twitch-current-poll-callback nil)))) + (cons + '(monitor twitch prediction begin) + (lambda (msg) + (w/write-chat-event "Gamble started") + (w/friend-respond "The chatters are gambling") + (setq w/twitch-current-prediction-ids msg))) + (cons + '(monitor twitch prediction end) + (lambda (_) + (w/write-chat-event "Gamble finished") + (setq w/twitch-current-prediction-ids nil))) + ;; (cons + ;; '(monitor discord chat incoming) + ;; (lambda (data) + ;; (let ((user (w/decode-string (cadr data))) + ;; (msg (w/decode-string (cadddr data)))) + ;; (w/write-chat-event (format "discord from %s: %s" user msg))))) + )) (provide 'wasp-event-handlers) ;;; wasp-event-handlers.el ends here diff --git a/src/wasp-model.el b/src/wasp-model.el index 321f7dae..c38da58b 100644 --- a/src/wasp-model.el +++ b/src/wasp-model.el @@ -12,6 +12,18 @@ (require 'wasp-twitch) (require 'wasp-user) +(defun w/model-get-default-backgrounds (k) + "Retrieve the background playlist and pass it to K." + (w/db-get "modelbackgrounds" + (lambda (res) + (funcall k (if (s-present? res) (w/read-sexp res) nil))))) + +(defun w/model-add-default-background (url) + "Add URL to the background playlist." + (w/model-get-default-backgrounds + (lambda (cur) + (w/db-set "modelbackgrounds" (format "%S" (cons url cur)))))) + (defun w/model-frame-test () "Submit a test frame for the new model." (let ((data @@ -45,12 +57,10 @@ "Reset the model palette." (interactive) (w/pub '(avatar reset)) - ;; (w/model-region-color "eyes" (color-values "gold")) - ;; (w/model-region-word "eyes" "GOLDEN") - ;; (w/model-region-video "hair" "https://www.twitch.tv/kamijoan") - ;; (w/model-region-video "hair" "https://www.twitch.tv/kiwidancing") - (w/model-region-video "hair" "https://www.youtube.com/watch?v=FtutLA63Cp8") - ) + (w/model-get-default-backgrounds + (lambda (bgs) + (when bgs + (w/model-region-video "hair" (w/pick-random bgs)))))) (defun w/model-toggle (toggle) "Toggle TOGGLE on model." diff --git a/src/wasp-overlay.el b/src/wasp-overlay.el index 23786453..c4e63e3b 100644 --- a/src/wasp-overlay.el +++ b/src/wasp-overlay.el @@ -1,57 +1,49 @@ -;;; wasp-overlay --- Superterranean Animism Overlay -*- lexical-binding: t; -*- +;;; wasp-overlay --- Fullscreen overlay -*- lexical-binding: t; -*- ;;; Commentary: ;;; Code: (require 'wasp-utils) (require 'wasp-bus) -(require 'wasp-prod) - -(add-to-list 'load-path (f-canonical "~/src/animism/")) -(require 'bulletml) - -;; src,Xway,fire^쾠㘽쾷ㅗ껋㾨먝乲뛏屚w㮇㸩멽ꝼ쓋♫릫m떫쓏䓳⩺䮻1㨧퉝ƭ쓐ǥᓌ㒵ᒄ먽乳俴㢈쿗峫ฐꙢ왽욍투ㅖ㨧슝呑㟪䁓Ɂy䏧呠3먫슎呒3⧘ɍy욋ᕈ00먫⇳ -;; this one is broken fix it -ellg, probably - -(defconst w/overlay-spellcard-names - '("Joel" "Pemis" "JoelTeachingHisSonJolHowToSpinWhileWideBorisPassesBy" "bugSegz" - "widepeepoMASTURBATION77769420GANGSHITNOMOREFORTNITE19DOLLERFORTNITECARD" - "Machine Made Of Fire, Heart Made Of Doves" - "Dream Seal" "Evil-Sealing Circle" "Dream Seal -Spread-" "Dream Seal -Concentrate-" - "Duplex Barrier" "Dream Orb" "Omnidirectional Oni-Binding Circle" "Yin-Yang Treasured Orb" - "Yin-Yang Kishin Orb" "Dream Orb String" "Yin-Yang Scattering" "Exorcising Border" - "Yin-Yang King Piece" "Illusionary Moon" "Flying Mysterious Shrine Maiden" - "Dream Seal -Blink-" "Great Duplex Barrier" "Dream Seal -Worn-" "Dream Seal -Marred-" - "Dream Seal -The Point Of The Mask-" - )) - -(defvar w/overlay-barrage-active nil) + +(defun w/overlay-shader (user shader) + "Set the overlay shader to SHADER by USER." + (w/pub '(avatar overlay shader) + (list (w/encode-string user) (w/encode-string shader)))) + +(defun w/overlay-chat (msg) + "Update the overlay about chat MSG." + (w/pub '(avatar overlay chat) + (list + (w/encode-string (w/. user msg)) + (w/encode-string (w/. text msg)) + (format "%s" (w/unix-time)) + (format "%s" (or (w/. biblicality msg) 0.0))))) + +(defun w/overlay-muzak (user song) + "Update the overlay about Muzak SONG played by USER." + (ignore song) + (w/pub '(avatar overlay muzak) (list (w/encode-string user)))) + +(defun w/overlay-muzak-clear () + "Tell the overlay that there is no Muzak song playing." + (w/pub '(avatar overlay muzak clear) (list))) + (defvar w/overlay-last-cursor nil) (defun w/overlay-update-cursor () "Inform the overlay about the current cursor position." - (when (and w/overlay-barrage-active (process-live-p (get-process w/bus-process))) - (when-let ((pos (window-absolute-pixel-position))) + (when (and (process-live-p (get-process w/bus-process))) + (when-let* ((pos (window-absolute-pixel-position))) (when (not (equal pos w/overlay-last-cursor)) (setf w/overlay-last-cursor pos) - (w/pub '(overlay cursor) (list (- (car pos) 1920) (cdr pos))))))) + (w/pub '(avatar overlay cursor) (list (car pos) (cdr pos))))))) (add-hook 'post-command-hook #'w/overlay-update-cursor) -(defun w/overlay-start-barrage (bml) - "Start a barrage on the overlay using the BulletML source string BML." - (w/pub '(overlay barrage start) (list (w/encode-string bml)))) - -(defun w/overlay-decode-shorthand-bml (s k) - "Decode the shorthand BulletML string S. -Pass the resulting BulletML XML string to K." - ;; (w/write-log s) - (w/prod-get-raw - (format "/api/yamame?input=%s" (url-encode-url s)) - (lambda (data) - (if-let* ((bml (bml/parse-string data)) - (b (bml/initialize bml)) - ((bml/barrage-toplevel b))) - (progn - (funcall k data)) - (w/write-chat-event "That spell card is too powerful... "))))) +(defun w/overlay-emacs () + "Update the overlay with miscellaneous data from Emacs." + (w/pub '(avatar overlay emacs) + (list + (w/get-heartrate) + ))) (provide 'wasp-overlay) ;;; wasp-overlay.el ends here diff --git a/src/wasp-setup.el b/src/wasp-setup.el index 6eeb5ded..e1488677 100644 --- a/src/wasp-setup.el +++ b/src/wasp-setup.el @@ -43,11 +43,12 @@ (w/run-audio-record-end-timer) (w/populate-bible-table) (w/user-cache-populate) + (w/run-banner-ad-timer) (w/start-audio-record) (w/start-chatsummary) (w/start-fake-chatters) - (w/start-friend) + (w/friend-start) ;; layout (eyebrowse-switch-to-window-config 0) diff --git a/src/wasp-twitch-chat-commands.el b/src/wasp-twitch-chat-commands.el index 33435d7f..d903d93c 100644 --- a/src/wasp-twitch-chat-commands.el +++ b/src/wasp-twitch-chat-commands.el @@ -13,13 +13,18 @@ (setq w/twitch-chat-commands (list + (cons + "!getpaid" + (lambda (_ _) + (w/pub '(monitor lamulana msg)))) (cons "!commands" (lambda (_ _) (w/twitch-say - (s-concat - "Available commands: " - (s-join " " (--filter (s-contains? "!" it) (-map #'car w/twitch-chat-commands))))))) + (s-truncate 500 + (s-concat + "Available commands: " + (s-join " " (--filter (s-contains? "!" it) (-map #'car w/twitch-chat-commands)))))))) (cons "MRBEAST" (lambda (_ _) (soundboard//play-clip "mrbeast.mp3"))) (cons "NICECOCK" (lambda (_ _) (soundboard//play-clip "pantsintoashes.mp3"))) (cons "hexadiCoding" (lambda (_ _) (soundboard//play-clip "developers.ogg"))) @@ -76,6 +81,7 @@ (cons "!pronunciation" (lambda (_ _) (w/twitch-say (w/pronuciation)))) ;; (cons "!jetsWave" (lambda (_ _) (fig//twitch-say (fig/slurp "jetsWave.txt")))) ;; (cons "!forth" (lambda (_ _) (fig//twitch-say "https://github.com/lcolonq/giving"))) + (cons "!news" (lambda (_ _) (w/twitch-say "https://news.colonq.computer"))) (cons "!oub" (lambda (_ _) (w/twitch-say "https://oub.colonq.computer"))) (cons "!cellar" (lambda (_ _) (w/twitch-say "https://pub.colonq.computer/~llll/cellar/index.html"))) (cons "!game" (lambda (_ _) (w/twitch-say "https://oub.colonq.computer"))) @@ -105,6 +111,10 @@ "!boost" (lambda (user _) (w/twitch-say (format "boost power for @%s: %s" user (alist-get :boost w/user-current))))) + (cons + "!tsoob" + (lambda (user _) + (w/twitch-say (format "boost power for @%s: %s" user (alist-get :boost w/user-current))))) (cons "!faction" (lambda (user _) diff --git a/src/wasp-twitch-redeems.el b/src/wasp-twitch-redeems.el index bf7a352b..98887386 100644 --- a/src/wasp-twitch-redeems.el +++ b/src/wasp-twitch-redeems.el @@ -16,8 +16,6 @@ (require 'wasp-overlay) (require 'wasp-cyclone) (require 'wasp-bless) -(require 'muzak) -(require 'muzak-wasp) (defvar w/twitch-redeem-sound-last 0) @@ -30,7 +28,7 @@ (w/write-chat-event (format "%s threw shade" user)) (w/db-set "shader" shader) (w/model-record-change) - (w/pub '(avatar overlay shader) (list (w/encode-string user) (w/encode-string shader))))) + (w/overlay-shader user shader))) (list "lurker check in" 1 (lambda (user _) @@ -173,6 +171,10 @@ (w/write-chat-event (s-concat user " runs program: " inp)) (w/bless inp 50)) (w/write-chat-event (format "%s is not authorized to run code" user))))) + (list + "encoded clarity" 7 + (lambda (user _) + (w/write-chat-event (format "%s allowed the streamer to \"drink\"" user)))) (list "feed friend" 10 (lambda (user inp) @@ -187,7 +189,7 @@ (let ((cur (float-time))) (when (> (- cur w/twitch-redeem-sound-last) 2) (w/write-chat-event (s-concat user " talks to \"friend\": " inp)) - (w/friend-chat user inp) + (w/friend-respond (format "%s says: %s" user inp)) (setq w/twitch-redeem-sound-last cur))))) (list "friend composes song" 10 @@ -301,7 +303,7 @@ (w/write-chat-event (s-concat user " established spatiotemporal clarity")) (w/obs-activate-toggle 'spatiotemporal-clarity))) (list - "total clarity" 5000 + "nasal clarity" 5000 (lambda (user _) (w/stop-all-audio) (run-with-timer @@ -314,6 +316,10 @@ (lambda (user _) (w/write-chat-event (s-concat user " was canonized!")) (w/bible-canonize user))) + (list + "cloning facility" 50000 + (lambda (user _) + (w/write-chat-event (format "%s entered the cloning facility" user)))) )) (provide 'wasp-twitch-redeems) diff --git a/src/wasp-twitch.el b/src/wasp-twitch.el index de44c735..2ff66567 100644 --- a/src/wasp-twitch.el +++ b/src/wasp-twitch.el @@ -14,6 +14,7 @@ (require 'wasp-copfish) (require 'wasp-shindaggers) (require 'wasp-hex) +(require 'wasp-user-stats) ;; gizmos (require 'wasp-biblicality) @@ -272,7 +273,7 @@ K is called when the download is finished." "Run the shoutout timer." (when w/twitch-shoutout-timer (cancel-timer w/twitch-shoutout-timer)) - (when-let ((user (pop w/twitch-shoutout-queue))) + (when-let* ((user (pop w/twitch-shoutout-queue))) (w/twitch-shoutout user)) (setq w/twitch-shoutout-timer @@ -335,7 +336,7 @@ CALLBACK will be passed the winner when the poll concludes." (let ((pos (point-min))) (while pos (let ((end (next-single-property-change pos 'display))) - (when-let ((face (get-text-property pos 'display))) + (when-let* ((face (get-text-property pos 'display))) (add-text-properties pos (or end (point-max)) `(display @@ -529,6 +530,9 @@ CALLBACK will be passed the winner when the poll concludes." ((s-equals? name "hellpie") "🥧") ((s-equals? name "steeledshield") "⛨") ((s-equals? name "asrael_io") (propertize "Q" 'display (create-image (w/twitch-emote-path "emotesv2_a9dc5935824a4d6792f4b48f91031fcf")))) + ((s-equals? name "nichepenguin") "💚") + ;; ((s-equals? name "h_ingles") "") + ;; ((s-equals? name "compilingjay") "") (t "EL."))) (when (-contains? badges "vip/1") "💎") (when (-contains? badges "subscriber/0") "💻") diff --git a/src/wasp-user-stats.el b/src/wasp-user-stats.el index 19d297a4..285754f8 100644 --- a/src/wasp-user-stats.el +++ b/src/wasp-user-stats.el @@ -2,6 +2,11 @@ ;;; Commentary: ;;; Code: +(require 'dash) +(require 's) +(require 'ht) +(require 'wasp-user) + (defvar w/user-faction-exemptions (list "LCOLONQ" @@ -54,7 +59,15 @@ (w/user-faction-total 'tony) (w/user-faction-total 'lever))) +(defun w/user-ensure-name () + "Ensure that the current user has a name assigned." + (let ((cur (alist-get :name w/user-current))) + (unless cur + (setf (alist-get :name w/user-current) w/user-current-name)))) + (defun w/user-stats-update () + "Ensure that the current user has all stats." + (w/user-ensure-name) (w/user-ensure-faction) (w/user-ensure-element)) diff --git a/src/wasp-user-whitelist.el b/src/wasp-user-whitelist.el index 5205e002..f23471d6 100644 --- a/src/wasp-user-whitelist.el +++ b/src/wasp-user-whitelist.el @@ -237,6 +237,9 @@ "quackthatsmackyo" "thelinuxdeveloper" "hrrawr" + "taske666" + "rat_not_like_noah" + "RealNaesten" ))) (setq diff --git a/src/wasp-user.el b/src/wasp-user.el index 6694b2f2..08e5c971 100644 --- a/src/wasp-user.el +++ b/src/wasp-user.el @@ -123,5 +123,25 @@ Save it back to the database after K returns." (print u) (w/user-set user u)))) +(defun w/user-decrown (user) + "Decrement USER's equity status." + (w/user-get + user + (lambda (u) + (let ((old (or (alist-get :equity u) 0))) + (setf (alist-get :equity u) (- old 1))) + (print u) + (w/user-set user u)))) + +(defun w/user-boost-compensation (user) + "Give USER a consolation BOOSTPOWER prize." + (w/user-get + user + (lambda (u) + (let ((old (or (alist-get :boost u) 0))) + (setf (alist-get :boost u) (+ old 20))) + (print u) + (w/user-set user u)))) + (provide 'wasp-user) ;;; wasp-user.el ends here diff --git a/src/wasp-utils.el b/src/wasp-utils.el index 54cc3cae..8bac37ae 100644 --- a/src/wasp-utils.el +++ b/src/wasp-utils.el @@ -170,8 +170,8 @@ If it is C, consume it and return non-nil." "Look at the character at point in the current buffer. If it is C, consume it. Otherwise, throw an error." - (if-let ((char (char-after)) - (cont (= char c))) + (if-let* ( (char (char-after)) + (cont (= char c))) (progn (delete-char 1) t) @@ -184,7 +184,7 @@ Otherwise, throw an error." (defun w/open-link () "Open URL in the primary stream window." (interactive) - (when-let ((url (thing-at-point 'url t))) + (when-let* ((url (thing-at-point 'url t))) (select-window (w/get-stream-primary-window)) (browse-url url))) @@ -192,7 +192,7 @@ Otherwise, throw an error." "Prevent focus from reaching popup frame E." (not (frame-parameter (cadr e) 'wasp-prevent-focus))) -(defconst w/asset-base-path (f-canonical "./assets/")) +(defconst w/asset-base-path (f-canonical "/home/llll/src/wasp/assets/")) (defun w/asset (path) "Return the absolute path given an asset path PATH." (f-join w/asset-base-path path)) diff --git a/wasp.el b/wasp.el index 779afa3d..128c1682 100644 --- a/wasp.el +++ b/wasp.el @@ -9,8 +9,10 @@ (add-to-list 'load-path (f-canonical "./src/gizmo/")) (add-to-list 'load-path (f-canonical "./src/contrib/")) -(add-to-list 'load-path (f-canonical "~/src/muzak/")) (add-to-list 'load-path (f-canonical "~/src/soundboard/")) +(add-to-list 'load-path (f-canonical "~/src/emacs-htmlize/")) +(add-to-list 'load-path (f-canonical "~/src/ttf.el/")) +(setq elisp-flymake-byte-compile-load-path load-path) ;; do not open this on stream (require 'wasp-sensitive) @@ -38,6 +40,12 @@ (require 'wasp-glossary) (require 'wasp-newspaper) (require 'wasp-friend) +(require 'wasp-friend-journalism) +(require 'wasp-friend-voice) +(require 'wasp-friend-callout) +(require 'wasp-friend-reading) +(require 'wasp-friend-eating) +(require 'wasp-friend-music) (require 'wasp-fakechat) (require 'wasp-dna) (require 'wasp-heartrate) @@ -68,7 +76,7 @@ (require 'wasp-event-handlers) ;; user contrib -(require 'muzak) +;; (require 'muzak) ;; (defun w/fix-user-database-ok (user) ;; "Fix USER's database entry." -- cgit v1.2.3