Compare commits
2286 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aafdac6da4 | |||
| bd202fce21 | |||
| f450001edb | |||
| 36bb1d0cf3 | |||
| c7c8e39e20 | |||
| 8e9630459b | |||
| 1c53fca925 | |||
| 7d78de0673 | |||
| f8acc55365 | |||
| c3157fe90d | |||
| 35b129287b | |||
| d05155a403 | |||
| e5ca216c99 | |||
| 13a96ee1d3 | |||
| 12879207ef | |||
| e097a5de58 | |||
| 0cd2617576 | |||
| 6c303b8f87 | |||
| 91224d8a1c | |||
| 48e961392d | |||
| 5b08a1adfb | |||
| 3bbb9daa34 | |||
| 3f5f17705d | |||
| f0aca45b11 | |||
| d205e3b4a3 | |||
| 8b40a77297 | |||
| a7e87cc722 | |||
| 09f106bd49 | |||
| 8a0869fb75 | |||
| 7ccf26310d | |||
| e1420ba26c | |||
| c693c9cd44 | |||
| e698557092 | |||
| 1238c90450 | |||
| e991dca5a0 | |||
| 37093c9f33 | |||
| 1dd4f62ece | |||
| 9ec27aad53 | |||
| f1d3a946d5 | |||
| fd24f7045e | |||
| 33671e7737 | |||
| 13ecc6a56b | |||
| 20815eecbc | |||
| f2f5ffd861 | |||
| b0971601b1 | |||
| 7253d764d2 | |||
| 71f3a1f7cf | |||
| 950659b29d | |||
| b4392d0e3c | |||
| 4571302642 | |||
| 5121f04d66 | |||
| 77642d2876 | |||
| ef69796798 | |||
| 869854fbc2 | |||
| 4584d912cc | |||
| ddd3d38dac | |||
| fcba6bc7d7 | |||
| a147c0fb4f | |||
| c3cc3fa9bd | |||
| 0f0e14132a | |||
| a2c2ed0b4a | |||
| 8bebca4502 | |||
| e9a550d458 | |||
| bee567f2b1 | |||
| 0fd7061671 | |||
| 96951576c1 | |||
| a665d7cc3c | |||
| 9b989329d4 | |||
| eccfd75a83 | |||
| 7e8a152eef | |||
| 44810f95a5 | |||
| bcd42dbb6a | |||
| 6e77126a65 | |||
| 735bbef655 | |||
| 7006a07dd3 | |||
| 7284926db4 | |||
| b506bf9506 | |||
| 3fea28f8b0 | |||
| cc6649667c | |||
| 24121fbbce | |||
| ef280dae3e | |||
| 49f580a36b | |||
| a56d2b1313 | |||
| f083180401 | |||
| 7b870edefa | |||
| a293fa1de6 | |||
| 3a8898dd24 | |||
| b97c8b9a17 | |||
| a0a8d76441 | |||
| 9199612cf7 | |||
| abfd37c045 | |||
| ac243136b9 | |||
| c93e948bb3 | |||
| 388803ffdb | |||
| a809ccf229 | |||
| d1796a515e | |||
| a11d3efed6 | |||
| a8fb7cd225 | |||
| 9d7aab4326 | |||
| a3b76fed4c | |||
| 21f5f96d69 | |||
| 70d3061d59 | |||
| 8f7a66a21a | |||
| cd8e944751 | |||
| 66e05594f6 | |||
| d06a9e2e5c | |||
| 64df9222dd | |||
| 900ac46583 | |||
| fda1c8399f | |||
| c2cd4fc75f | |||
| ef5a9eb777 | |||
| 8e3100acdd | |||
| 50d74fcf25 | |||
| 140862ce5a | |||
| 966453dd8f | |||
| fcd37adc38 | |||
| 6a3989488e | |||
| fbfdef8f9a | |||
| b66c61573f | |||
| 9186b28b60 | |||
| 915a1b105c | |||
| 12b9b3ce71 | |||
| deb4c48551 | |||
| 9dfaac8582 | |||
| bd5b9f5347 | |||
| ff4b9a3cfe | |||
| e844d7ed89 | |||
| f3ae8f7f75 | |||
| f137eddbf9 | |||
| c70f75b21a | |||
| 141fb875f9 | |||
| 344d47e7dd | |||
| 4840a9094b | |||
| 6f305c8974 | |||
| c83bae3bb5 | |||
| 4c1b962486 | |||
| b929e2a7b2 | |||
| 1ecd7aa7cf | |||
| 881aed50ea | |||
| 6272b79f70 | |||
| 0fa50f1951 | |||
| dc19f2e76c | |||
| 498116c3f6 | |||
| e29dcf7489 | |||
| ec28eea7f0 | |||
| ebce4d0f31 | |||
| bf9492e083 | |||
| cb987c1baf | |||
| e4a4be1f53 | |||
| f6d1fe6c04 | |||
| 7e5a29a5cc | |||
| 8dbc175c02 | |||
| 0473374d51 | |||
| b2d7342b9e | |||
| b965aecc6c | |||
| 9290c90bdc | |||
| d83a80ec53 | |||
| 248fe1b53f | |||
| bf217bf7aa | |||
| e5de8e22b7 | |||
| 5666e84d92 | |||
| a97d1b8669 | |||
| 06db13a0ab | |||
| 9832af7cce | |||
| cf4a617f2b | |||
| 5a6a5fd4d1 | |||
| e6ebc19b4f | |||
| 2250fe75c4 | |||
| e27b1840c6 | |||
| 717d197998 | |||
| 02dd0dbbef | |||
| 2e4a437d32 | |||
| 63e1d6dab6 | |||
| 23133499c7 | |||
| 67bd87b50c | |||
| 6d31a4246f | |||
| d4f38b6d66 | |||
| 959229f143 | |||
| 22f9b1a0b1 | |||
| a8fc5a722f | |||
| 69420f5750 | |||
| 20976ac9f9 | |||
| dc33accae7 | |||
| 29d1f1f14a | |||
| 6102119673 | |||
| 0c635a05ff | |||
| 307a7791df | |||
| 49b056a0ce | |||
| af58ffadcb | |||
| dcbda7b3af | |||
| 553cc0c6ae | |||
| 067dcbfbeb | |||
| 759258bb39 | |||
| 3667ef551c | |||
| a3308087a5 | |||
| bfb4652425 | |||
| 03c24e2906 | |||
| dc61faace1 | |||
| 73ea86ceeb | |||
| 9a622ab466 | |||
| 65cfd6c81c | |||
| 08681ac1b9 | |||
| f9acb5d19b | |||
| e9e187c58b | |||
| 3bc20c3550 | |||
| 4b25406d14 | |||
| 265b7904a8 | |||
| fb2274c58d | |||
| 3cfdc9d897 | |||
| 11986ac698 | |||
| a08436ecd2 | |||
| e92adf94a7 | |||
| d25356917d | |||
| 0adb3b062f | |||
| 9316480884 | |||
| 4e5082f6c6 | |||
| 16d5dbe71c | |||
| 133d7874e3 | |||
| 4659d5db5d | |||
| af061125dd | |||
| 5c4b1f6638 | |||
| ee3d70f879 | |||
| 7dadaa1b28 | |||
| a72782e232 | |||
| 8654ffb6fb | |||
| 90e445eec9 | |||
| 910b6d8879 | |||
| 8d1c2f832d | |||
| 158d2a4124 | |||
| 66473738d6 | |||
| 6a43107bb2 | |||
| 28e7afa412 | |||
| 8dc151e14d | |||
| a330a3f2eb | |||
| 8f7195d3b2 | |||
| a4e4502d50 | |||
| 902da90100 | |||
| d775760f98 | |||
| dfb6600104 | |||
| 41ed487d5e | |||
| d156de05a5 | |||
| f4582ddf36 | |||
| 7f7b764f7b | |||
| dd8fdfc3d4 | |||
| 6c80d443b9 | |||
| cd05586d51 | |||
| dfc1ec3ccf | |||
| ffe6786ad1 | |||
| 6068678fa1 | |||
| 50b761fab2 | |||
| 0d43f16db2 | |||
| 3278de9ba1 | |||
| abe1962002 | |||
| 5b15f377cd | |||
| d0e5ea78a5 | |||
| 853757e611 | |||
| c3860cfe72 | |||
| 90b2c077a6 | |||
| fdce4bada7 | |||
| 4c8ff1c7ec | |||
| 2a153214f6 | |||
| d7c964afc5 | |||
| 5943052cd1 | |||
| 8512154b45 | |||
| 0e5419c60b | |||
| 1d26482298 | |||
| 126749f04c | |||
| e0e69ce740 | |||
| 72b57924b7 | |||
| fdbdeeb956 | |||
| 3dbdecf73d | |||
| 7dc8943840 | |||
| 646b852717 | |||
| 075f754a71 | |||
| f65556acb7 | |||
| b2c01991a6 | |||
| 4bc5e81513 | |||
| 2b24fe95c2 | |||
| 358e64f2cc | |||
| 5dc50b6d96 | |||
| b91a040a32 | |||
| 76db55ff19 | |||
| e17bf18350 | |||
| 43b4499125 | |||
| c6d43a802c | |||
| 21f8403357 | |||
| 40053e3388 | |||
| abcf7e3a47 | |||
| f8913bf9b9 | |||
| 51878ab38e | |||
| d3f9a84a0a | |||
| 23eedb468f | |||
| 9cb89fff45 | |||
| 79f0b22276 | |||
| 8b2a728a0d | |||
| b4120b156e | |||
| 1ae3122c20 | |||
| 727acca217 | |||
| 5f8d662d67 | |||
| 81b432140c | |||
| adc1ee71a9 | |||
| 5ac373d4aa | |||
| 5b9e24f3f4 | |||
| 0e44de2fe3 | |||
| b0125e8165 | |||
| a532067a93 | |||
| f456071c08 | |||
| 3896f0995c | |||
| 56ff5808a3 | |||
| 15c817dd15 | |||
| 7246c3f304 | |||
| e4f59f1ec4 | |||
| 5f0e9538cf | |||
| 73649128f3 | |||
| edc84731ac | |||
| 108b116b06 | |||
| dda587dc6f | |||
| 4a9dd43598 | |||
| a64cfe661a | |||
| 7e418a16ae | |||
| ecf1fa2bbd | |||
| a6157a34bc | |||
| 8e37e66706 | |||
| dd6a4931e5 | |||
| 2d000e826b | |||
| c1028e7408 | |||
| 28b54fac37 | |||
| 845fddf5f2 | |||
| e3e2a477c1 | |||
| bf4442ecf5 | |||
| 3be793032f | |||
| 0fab18e8e8 | |||
| ab6375ef2a | |||
| 2535b6e08c | |||
| 2f003d416a | |||
| 579b358f8b | |||
| 231a583bf7 | |||
| f0cfbacb4f | |||
| ae45189436 | |||
| ff8292b863 | |||
| ebe45f73a0 | |||
| c91f41e988 | |||
| 3c7f3e8740 | |||
| 3a9899529a | |||
| 88ce676c46 | |||
| 426cc2798e | |||
| 5a015888d4 | |||
| 1d2df63652 | |||
| be378eaacb | |||
| 631f5a1043 | |||
| 353e9adec1 | |||
| e572da4927 | |||
| d22afa36c3 | |||
| a7296f15ac | |||
| b20caee548 | |||
| 519832edd7 | |||
| a2cea1e5bc | |||
| b3c198f0d2 | |||
| b45a696b5d | |||
| a2b3fe6411 | |||
| 13d4f37726 | |||
| 71f34f4e31 | |||
| 018f147de6 | |||
| da012cbf8b | |||
| 3907a103fc | |||
| efb566bcc7 | |||
| 53e8df3542 | |||
| a00d262773 | |||
| b64db54793 | |||
| 97c0e3d4a9 | |||
| ba31bbace8 | |||
| 606dfd29d3 | |||
| 9411d0781b | |||
| 7aea200860 | |||
| 5d8ac95d07 | |||
| cd0ebb41aa | |||
| eb028b0dad | |||
| 61803f7516 | |||
| 50bfed79be | |||
| 1c77ae818e | |||
| 66ede6037d | |||
| 01452b7309 | |||
| b5f2470b79 | |||
| 49403e9fee | |||
| 66d512f26f | |||
| 2ba0ebf3e8 | |||
| bbcd27d3c2 | |||
| 837a3528cd | |||
| f39662588f | |||
| 4b12f52029 | |||
| f2920ddefb | |||
| ce010653d5 | |||
| ce764c862f | |||
| 60d821ae3e | |||
| 8f7f8fc0b5 | |||
| ec45041a66 | |||
| 67a666b282 | |||
| d9404fc566 | |||
| bcd899c641 | |||
| ec61ac29ea | |||
| 180e663a43 | |||
| ae1711a685 | |||
| 9c3b62574d | |||
| a3637c12d6 | |||
| cae192682b | |||
| 6c68bacaef | |||
| ee7a2b564b | |||
| fb25d90b48 | |||
| 9075a521f0 | |||
| 00a0e595ff | |||
| 694ff32b01 | |||
| a74635ff56 | |||
| 8c6f3d66b5 | |||
| a49cb06d77 | |||
| f96f478470 | |||
| 1d2f713673 | |||
| 57d24d0fbf | |||
| 584e55a89c | |||
| 4560a83441 | |||
| f4658728e8 | |||
| 54825dc66f | |||
| d4056ac10a | |||
| 8f409a8fe2 | |||
| d369d988b0 | |||
| 2a74736761 | |||
| 6bd0bf6e69 | |||
| 53cee177e8 | |||
| a8afc62db7 | |||
| 14328eb601 | |||
| 2184755fdf | |||
| 3a3cd1f856 | |||
| 24a3a41cd6 | |||
| 197f6b05ae | |||
| c2e887a86e | |||
| 12b16577ef | |||
| 409165dec6 | |||
| 4870d59a43 | |||
| 70c3bb3288 | |||
| 36156997ee | |||
| 2c2728448c | |||
| d1781a7c47 | |||
| dc1459438c | |||
| 00e6da9d64 | |||
| 68b3d75705 | |||
| 3e538b732a | |||
| 833341dea7 | |||
| bc3efe2f4c | |||
| 10e4c59f2e | |||
| d9016b7979 | |||
| d975610ecd | |||
| 5d1251f6d8 | |||
| bdf802e64a | |||
| f2b888f9ae | |||
| 9583007769 | |||
| eb81c33308 | |||
| 8d734f5cc4 | |||
| 3375ff6152 | |||
| 80fc58f83e | |||
| 17c0124747 | |||
| c220d4dd17 | |||
| 15146725e3 | |||
| ddfab824c3 | |||
| 8b5a00ca27 | |||
| 04a7f14c0e | |||
| 18f14b828c | |||
| 0a92e12a62 | |||
| 5b71281ec4 | |||
| 08fdc4f1fc | |||
| c726bef740 | |||
| 94e0ac3f54 | |||
| 284f7fc4f7 | |||
| e629460942 | |||
| 904e531113 | |||
| ca2f2adc90 | |||
| 78a3e329f5 | |||
| 5938e0f821 | |||
| 4a6ae3b46c | |||
| 2327d661b9 | |||
| 9790e37154 | |||
| f97d751343 | |||
| 81c1f6bd8e | |||
| e3a5a4239b | |||
| fcec85881f | |||
| cfefb8b2e0 | |||
| e81a2a5011 | |||
| d62b488459 | |||
| 932bd92b95 | |||
| 9fd1f95ab8 | |||
| cf414cb9cb | |||
| f676d32f96 | |||
| 939c9afeb4 | |||
| 7d88c48c39 | |||
| 26337a6bd4 | |||
| 1263a5bfc0 | |||
| fe21ca5b95 | |||
| 0fe9dad515 | |||
| 75b33c906d | |||
| 835fa77964 | |||
| 3e13186560 | |||
| 01f191289d | |||
| 6586791655 | |||
| b4f6774ca8 | |||
| 75d346fe69 | |||
| 27780c7327 | |||
| 100a8882f1 | |||
| 983bd1a57b | |||
| 810f7949f4 | |||
| 28c502bd85 | |||
| b8c313965f | |||
| 8a2dcbbcff | |||
| 263b9fa611 | |||
| 793e15f80c | |||
| 23d1394fb2 | |||
| f97bb23c9d | |||
| d557739a28 | |||
| 8d06243b57 | |||
| 9a4b73b942 | |||
| d73e0dd13c | |||
| 2f3818fe4b | |||
| d3d773079c | |||
| 0b2acec50c | |||
| 3501e4f44d | |||
| 384c540197 | |||
| 1b78ffc018 | |||
| 79f4f0adbf | |||
| 98d71308a8 | |||
| 4f0fa66575 | |||
| ecac3a0f16 | |||
| d1898b9a0b | |||
| 868c7b170e | |||
| b1c5c53687 | |||
| 6704886c6e | |||
| 7e45283ba2 | |||
| ff67d876b2 | |||
| 4975a0a8d8 | |||
| e34a4338a1 | |||
| 0b4986b47a | |||
| 937eab5f27 | |||
| 70378bfac8 | |||
| 29d87f692a | |||
| b1b2798be1 | |||
| 2b74ad8b5f | |||
| 3098fa6855 | |||
| 53883a7f1f | |||
| 2c048376d4 | |||
| b583240d58 | |||
| 844be11d43 | |||
| 53b739139b | |||
| d09d1d72e6 | |||
| 01d927aceb | |||
| 59abfcbd6d | |||
| 4c2ec15f70 | |||
| 2b6dfbf4eb | |||
| eb8372eb91 | |||
| c6b2967da0 | |||
| 042f51e58f | |||
| c72cf46db7 | |||
| 2a7aac76d9 | |||
| a569495f5d | |||
| 59e56600bc | |||
| 915dec7ba5 | |||
| 909bd3dd2d | |||
| d50fad615f | |||
| b036bedbc3 | |||
| 55c05d1a6e | |||
| 344c0f6427 | |||
| 8ab1a7268b | |||
| e5f31dbe8e | |||
| 783c5c12e9 | |||
| c972485555 | |||
| c507382d19 | |||
| fbbcbc8753 | |||
| a5fa595627 | |||
| 502045f1fa | |||
| e9280777fd | |||
| c36f402b88 | |||
| 3a68dd50ce | |||
| eb06c0da08 | |||
| 6528567746 | |||
| 09229812f4 | |||
| aaa37a3e0d | |||
| c5531b1bd8 | |||
| 021115b463 | |||
| 698d9c208f | |||
| 01a6b432f3 | |||
| a5f44b3ed6 | |||
| a3ba99c682 | |||
| 7c709fddba | |||
| 8f313b4603 | |||
| 41c0a5ee3b | |||
| 346f7aadd6 | |||
| be611c1920 | |||
| e33a866a63 | |||
| c846eeed9d | |||
| d052eac019 | |||
| 9dbd134601 | |||
| 6451e1cfe2 | |||
| 9f3f715527 | |||
| 0d8e5b139b | |||
| 5d5dda548a | |||
| 1d32e5267c | |||
| a300a25419 | |||
| 4eaf03b922 | |||
| 4401ea388c | |||
| dfe6ad3a32 | |||
| e3ef870b29 | |||
| 7deb5bfdf2 | |||
| 0e46a4402a | |||
| 33a15e69bb | |||
| ebe11fdb1e | |||
| f9a7c46868 | |||
| c80c23e8e8 | |||
| 5e6c81a98e | |||
| 214cc83d4a | |||
| 8e643fbf87 | |||
| 6008d9e12b | |||
| 81da453ec4 | |||
| f34835463d | |||
| eb3419f3fc | |||
| 5886a07300 | |||
| 69e7c27fd0 | |||
| 165cf6809f | |||
| 9b2b8b6796 | |||
| 3ed6d1dec1 | |||
| 9ad1d1c25d | |||
| 667e614bf3 | |||
| d49da1fdd0 | |||
| 85b0733169 | |||
| 7f2bba7c4a | |||
| 664ec62396 | |||
| b4a9e45214 | |||
| 2eab7044ba | |||
| 8d449f91c6 | |||
| be8a836528 | |||
| 423782fd2b | |||
| dc1dc8dffa | |||
| 16a77e2975 | |||
| df69a70dd7 | |||
| 0638c86211 | |||
| 8c0de22c14 | |||
| f83568c6c9 | |||
| 10d472728c | |||
| 2c3cb3f5ce | |||
| fbfe3fd5ed | |||
| b280a26317 | |||
| 640db8af7d | |||
| 98d9357208 | |||
| f3b6c7c09b | |||
| 3a622f111a | |||
| e0b1ed87e8 | |||
| 63578affa4 | |||
| 74b188fa46 | |||
| fadaf852b7 | |||
| ac6124951a | |||
| 89e42af149 | |||
| cf5987b2b4 | |||
| 069d8d376c | |||
| fe3d8ea2be | |||
| 3ac03b43e1 | |||
| eaf1a532f4 | |||
| f2b0116c1e | |||
| 155b5fa831 | |||
| 130c77a305 | |||
| 2e168d152f | |||
| e0890541ea | |||
| 1447b62999 | |||
| 518ae8044d | |||
| 314a90995a | |||
| 8f29e32577 | |||
| b6e25a353d | |||
| 635ed02198 | |||
| cd81a54062 | |||
| 1035d787ab | |||
| 29567df407 | |||
| 79cb4668f1 | |||
| 9bdc19e2fd | |||
| 25cd6106f5 | |||
| 13fbe59164 | |||
| c261c3367a | |||
| 8b92ab25c7 | |||
| 0aa1031270 | |||
| dec8bdb39d | |||
| f318aeb67c | |||
| 8b791e77d6 | |||
| 260b72fec1 | |||
| 7d0beafce0 | |||
| 3c2f8b65ce | |||
| 5f73e8b3bf | |||
| 74afeeb85f | |||
| f8920e5fef | |||
| dd76313084 | |||
| 627ff6f26e | |||
| 705db0b9cf | |||
| 47a958d81d | |||
| 906fc9cc1d | |||
| 44d9525476 | |||
| 8b2a549fab | |||
| 7312e34f46 | |||
| 696be858f6 | |||
| e1f4fd0c7b | |||
| f51320d1bc | |||
| a0764190f2 | |||
| 33c5b35444 | |||
| 04e10f81b5 | |||
| 7f2545a9ef | |||
| a2a16f3f23 | |||
| ab2a947992 | |||
| 7d0a73a6b0 | |||
| e3c3a68566 | |||
| 4fc026b13c | |||
| c0fed4d2c3 | |||
| b656e14453 | |||
| fbab3964e6 | |||
| d9b270b477 | |||
| 7f53a19647 | |||
| 9f1e90d007 | |||
| 9a439e1941 | |||
| 4e4c69993c | |||
| 0d085d500f | |||
| f734c0475b | |||
| a30951dc91 | |||
| c4b37950a9 | |||
| 7cf832a2f4 | |||
| 1f07e7978d | |||
| 5adab2739b | |||
| 2be76760de | |||
| 28c125a3ec | |||
| bdf8a37a8f | |||
| 838711e2ac | |||
| c085691c54 | |||
| 47506d70ed | |||
| efc7cc4980 | |||
| f2016a8aa5 | |||
| d6bbc375c4 | |||
| 885996c5cf | |||
| 4e4604e00a | |||
| b057d4fcb7 | |||
| cdf27296e4 | |||
| 889f111300 | |||
| 520b4f92ab | |||
| feb1d4ebcc | |||
| c11a7589e2 | |||
| c332b7cb40 | |||
| 418dcedc4e | |||
| a21eb9d59e | |||
| 25ed8fe044 | |||
| b079c79390 | |||
| d7a89ef122 | |||
| b95035e7a2 | |||
| e28d29f276 | |||
| c29d78ac0d | |||
| ad9106b815 | |||
| f3ea24f9f9 | |||
| 96fdece478 | |||
| c30a5782df | |||
| c924fcb91f | |||
| 46e7b6d6df | |||
| bb8ecf2f84 | |||
| 7123a6d647 | |||
| eb4ef8b3d7 | |||
| 0d346610a2 | |||
| fe0c1acd79 | |||
| b3552d8c2c | |||
| 206a15191f | |||
| 22de3980d1 | |||
| af35beefc2 | |||
| 532258bea8 | |||
| 5b257293eb | |||
| 8e6d23ddd6 | |||
| 6d5d61c842 | |||
| 9d2e2a1739 | |||
| 19e2642ec1 | |||
| f9df522b41 | |||
| b3e5c4a4aa | |||
| 06ed6c81a7 | |||
| d1e4dbb603 | |||
| abe8079296 | |||
| 033cb2790c | |||
| 188edce258 | |||
| 34858b36c1 | |||
| 044ef3447c | |||
| 2660439160 | |||
| 9502120ee3 | |||
| 7f1a3320dd | |||
| 8a4fd7f182 | |||
| b0a4d15d64 | |||
| 3f6f96cfb4 | |||
| 99a1c98ae0 | |||
| fd718dfd5c | |||
| 31cb2f1999 | |||
| a6a8e32be7 | |||
| 594bb8a76b | |||
| 228bbc1e8e | |||
| b14c2878b3 | |||
| 57f10040e1 | |||
| 0fb67c78a9 | |||
| ff0f7f49da | |||
| 9682e37547 | |||
| 7197d9480b | |||
| 3315c9c7f4 | |||
| f57eff4195 | |||
| f0c8e48403 | |||
| de87bed375 | |||
| 5cdfaab2db | |||
| acb0b029b9 | |||
| 4c74cbbbe9 | |||
| ad64e068db | |||
| 6bed3f3f09 | |||
| d02e55da06 | |||
| d662a8f2b9 | |||
| 13a93102a5 | |||
| 0d6a1e6610 | |||
| 05cd9eebb8 | |||
| d93d8ab1cc | |||
| 540fa0e669 | |||
| 17a10cf6bb | |||
| 11d0f9db03 | |||
| f024ceecdd | |||
| 08c07a0785 | |||
| b843f91b3c | |||
| 4b2c5b3321 | |||
| 2b43f2682a | |||
| 7da0124286 | |||
| feaeef6482 | |||
| 15bcfeec1d | |||
| 5fb002ab4c | |||
| f56ddbb1e0 | |||
| 6bd2a7c962 | |||
| 9d591ae806 | |||
| 7d30e3913c | |||
| 19d7dd7aa3 | |||
| 45444253fd | |||
| 308ade6a7e | |||
| 66d54ccd54 | |||
| ccf8d91f01 | |||
| 7c940a0480 | |||
| 277a2edb57 | |||
| bd742689e9 | |||
| 9ca0c3c41d | |||
| ce8650b4de | |||
| 4bce9d440e | |||
| adc691f516 | |||
| fc67a801e3 | |||
| 6a3657ca87 | |||
| 0537c5f273 | |||
| cc4a5f30b6 | |||
| b0d7c3e9b1 | |||
| 3bf7c44fc9 | |||
| 4ff4e63a11 | |||
| 72a35ba58b | |||
| b6a31979f2 | |||
| 7c710e22cc | |||
| ab58e7a225 | |||
| c9fb97cd7c | |||
| 789f3e1584 | |||
| 0fc8229be1 | |||
| a1e555267e | |||
| 0ac88c0cb5 | |||
| d43a6da62b | |||
| 940455f786 | |||
| 0f74456f30 | |||
| 7840fa6d90 | |||
| 95ccc99fee | |||
| 7b0a156bba | |||
| 0d8ae7bb37 | |||
| 9491cff1df | |||
| 51dc5d6e37 | |||
| f4c739ab92 | |||
| 0dd8ae3d77 | |||
| 7d2878d81c | |||
| bd70a05861 | |||
| 0605c7b2bc | |||
| 8e83a55143 | |||
| 4ab4eb8ef2 | |||
| d1e6150874 | |||
| 4121c99f36 | |||
| 827040f487 | |||
| 9032489786 | |||
| 8ea7bd4913 | |||
| 97b021efaf | |||
| b3f9a77ba7 | |||
| 63fdc1f876 | |||
| 17cf354c58 | |||
| c6fd8bcb99 | |||
| 1684465e04 | |||
| fe2df96953 | |||
| ee9d0cfd99 | |||
| 7b7e18e752 | |||
| 928be4151b | |||
| 37dd648686 | |||
| 93a590774e | |||
| 22b99b6d3e | |||
| 101d626d4f | |||
| 3633c19208 | |||
| e302f328f7 | |||
| f74ba95e95 | |||
| c38982d286 | |||
| fe9bac096b | |||
| 5b809c4fc6 | |||
| 4729e51e14 | |||
| 960cf7a34b | |||
| 852ab19760 | |||
| 2e45d9fc6b | |||
| 74b71b92b6 | |||
| bbc14ba74f | |||
| 45c7829cd8 | |||
| f2aa3afbbb | |||
| 909b01241b | |||
| abb58c58a0 | |||
| 700e10d32c | |||
| 4ac48d0e4a | |||
| 345b2cb835 | |||
| b962309498 | |||
| e99cb9bfb8 | |||
| 9e12e18f90 | |||
| 66fc9b38df | |||
| 5dbe429e6b | |||
| b2481ea6c1 | |||
| 86a294ce4b | |||
| a8d1eadfbf | |||
| b07d3c5403 | |||
| 892db55ae1 | |||
| 93615fef65 | |||
| 87452706ef | |||
| 3569615b21 | |||
| 86f7d09d31 | |||
| d5d1254393 | |||
| 4df90cfb9e | |||
| ec6862d31a | |||
| 6f23010382 | |||
| c672f105d3 | |||
| e60d501e4a | |||
| 0d7175058b | |||
| 3b0bd9d1d1 | |||
| bd28ac6e1f | |||
| 0c2d00c792 | |||
| 140ba653b9 | |||
| f64f008f77 | |||
| a6315bef05 | |||
| f810d7c82a | |||
| cf61dedc79 | |||
| 2ab9587f5f | |||
| 4950b52359 | |||
| 03af444735 | |||
| 7f6221b409 | |||
| 57aebdd300 | |||
| 25821ba338 | |||
| 7dda5461ad | |||
| ee0238bad8 | |||
| 451940e6a7 | |||
| 6163cc8a5a | |||
| ef859d77e9 | |||
| 0fd752657a | |||
| f1451a1de3 | |||
| fa96f25683 | |||
| 9e447383df | |||
| 5e762be32b | |||
| 75de81a3ab | |||
| d26b64a5bb | |||
| cb8d40eaf2 | |||
| ded0936bc4 | |||
| 16830a410c | |||
| 9f79dda463 | |||
| 15dc7c74d7 | |||
| f9abef9e05 | |||
| ba84499f00 | |||
| 79ce24222a | |||
| 6cb9264864 | |||
| 247a070405 | |||
| e05bb75b8a | |||
| 6a415cf232 | |||
| e8034189df | |||
| 107f329b4f | |||
| 999a13358e | |||
| 2077f51084 | |||
| 1e77a3df20 | |||
| 141a291523 | |||
| cb03d5a9d3 | |||
| b618d1e56a | |||
| 23ae638512 | |||
| eda749d7cb | |||
| 08d0186e53 | |||
| 443981ba31 | |||
| f3ed7c5e19 | |||
| dd2378b591 | |||
| b885779365 | |||
| 32b95f0d9a | |||
| 2b8eec8666 | |||
| 3f24627f54 | |||
| 0c4bca312e | |||
| e36afc675e | |||
| d754014321 | |||
| 9f73242cc5 | |||
| fae9649773 | |||
| 4b43f4cbec | |||
| b61befa210 | |||
| 5e2bc337bc | |||
| af1608cbfa | |||
| 9aa80976ff | |||
| c9cfe9e90f | |||
| 482e337762 | |||
| a0821f5a01 | |||
| 5ebdf3ed39 | |||
| 86096db02d | |||
| a93e01b896 | |||
| 0585e72c35 | |||
| c82fbefcfc | |||
| 23542a1db1 | |||
| 1bf50d60d8 | |||
| 8596b0309e | |||
| 7f6e871b26 | |||
| 8912d4d55a | |||
| 7ac849ab12 | |||
| 4cab699b04 | |||
| 03aa05e4d2 | |||
| 428a3cf0ce | |||
| 1c8b165a64 | |||
| 1869071ef7 | |||
| 33ca5ee39f | |||
| e46d5a86d3 | |||
| 2729bcac3b | |||
| d60ce41fa9 | |||
| 958db945f3 | |||
| 057f906ca4 | |||
| 8df7a45e29 | |||
| e4af1570cb | |||
| 049ebf9027 | |||
| f2f0c7df92 | |||
| bee4118513 | |||
| a1096f7ecb | |||
| dac0a6ec20 | |||
| 4327fd4c58 | |||
| 3243f57fd5 | |||
| 383c488268 | |||
| 53392d6e5d | |||
| bf48025d12 | |||
| 5e624605cf | |||
| 026490acc6 | |||
| 709ce3adb8 | |||
| a8d23489c4 | |||
| 296df113e3 | |||
| 292de83c35 | |||
| 7fe66c07e4 | |||
| 9aa8f30e2b | |||
| e3ebb30518 | |||
| 51122ab3ba | |||
| 5d96eab7b4 | |||
| 97c4e79e96 | |||
| f89bac7781 | |||
| 1d8a7f8fd3 | |||
| ef9f7ab27a | |||
| a676138745 | |||
| 7442ea7a16 | |||
| 0089cad740 | |||
| cf1fa718a8 | |||
| d6ba6ac41e | |||
| bbdd5feaa4 | |||
| 678527254b | |||
| a43943ec3d | |||
| ab3a61794b | |||
| 46bf7781aa | |||
| 99c547b625 | |||
| 6976e97de3 | |||
| f8e3e70273 | |||
| 23c9f7a957 | |||
| 2ca763cc77 | |||
| 2adc811351 | |||
| be18be4a86 | |||
| 8d7abb1b8a | |||
| 1cc5988c40 | |||
| da426ae03b | |||
| 3cebd6d923 | |||
| f1019c8ca4 | |||
| edfb7b6b24 | |||
| 157a928f5a | |||
| 5f5a2a3ef2 | |||
| 8534cf3756 | |||
| 39b90092ff | |||
| d3142ebe6d | |||
| d914c6be2e | |||
| 05c3e968df | |||
| 7756cce123 | |||
| 8287d717f8 | |||
| db9e60b4b5 | |||
| 28a79bfccb | |||
| 321490e528 | |||
| 6f752357d7 | |||
| e1f71baed6 | |||
| df377cd5bb | |||
| 691a0acdab | |||
| 5e2eda6af3 | |||
| 17cdc2b585 | |||
| c08266f81b | |||
| f90a4db569 | |||
| 22ec7a6d75 | |||
| 1b16a84810 | |||
| d778276f5d | |||
| e3030a168f | |||
| dfd07a4f4f | |||
| f9fc65d7de | |||
| 46cf7db242 | |||
| 2b94cffe7e | |||
| 2e74ad6fbe | |||
| df7dc1583d | |||
| 88e80b4fae | |||
| aea90f4b65 | |||
| 80db076f38 | |||
| 27bba8250a | |||
| 3fb0fa6892 | |||
| c3195cfcbe | |||
| 51661a872c | |||
| 64706ea103 | |||
| ec69d557dc | |||
| addd37fb1f | |||
| 9dc947ecb6 | |||
| 7d74d3da3a | |||
| aa0c56876c | |||
| 37c7b0c6d1 | |||
| 0d07d238bc | |||
| fa4e74ffef | |||
| c22d76e5be | |||
| 18850ebd83 | |||
| 17abef95eb | |||
| d135151477 | |||
| 07fd9b3074 | |||
| 0523ae705a | |||
| 9db2502cd0 | |||
| a174119877 | |||
| 569dd19932 | |||
| 530e2a1feb | |||
| de732ba692 | |||
| c6649e84a6 | |||
| e3517aceab | |||
| 6d7abd1718 | |||
| e9e493707b | |||
| c25adf8b57 | |||
| d2be10cd4e | |||
| 006ecf9a56 | |||
| a53cc52241 | |||
| 961d283325 | |||
| 4e46529eb6 | |||
| 81001e04e9 | |||
| 2fd174ab9c | |||
| 6ff5e221ea | |||
| 232077b919 | |||
| fecddb5203 | |||
| d0132c0f7b | |||
| 37d32b32f8 | |||
| 51213b499f | |||
| dcb98ce0fb | |||
| 428e90a844 | |||
| 017535cf7b | |||
| 409389a994 | |||
| ba34d92cd3 | |||
| b412ee258d | |||
| f1ffe2a641 | |||
| a13ca95894 | |||
| 0989a80a57 | |||
| d72c15e9d3 | |||
| 7084cf9526 | |||
| 67cc0ef75c | |||
| 75714cc358 | |||
| 75e454f3fd | |||
| efa4c2ce77 | |||
| f4ceb342b7 | |||
| d4ca58574a | |||
| e796011deb | |||
| 97afb4e01a | |||
| 8fcbf43410 | |||
| 15a834b883 | |||
| 3d8396e586 | |||
| 3257fd364a | |||
| d690af99fc | |||
| 1c28495162 | |||
| ddf74e5f78 | |||
| 7dfc27f3c9 | |||
| fc3f59a053 | |||
| 62c4b1f30b | |||
| 0609288250 | |||
| 8e26582bc5 | |||
| 07f1f9c1d8 | |||
| a4a3b4e9d1 | |||
| 576822b1ff | |||
| ab26e3d4fa | |||
| 4926735ae1 | |||
| efce0f2309 | |||
| 2804cc2d1e | |||
| 38b5cab006 | |||
| 96c10be293 | |||
| 20358a2f58 | |||
| ec82d5674f | |||
| 4a22e76bdb | |||
| 527be95618 | |||
| 41985c0a5f | |||
| 522e45ce92 | |||
| 48fb0f3b1e | |||
| 798093c58f | |||
| e795dad616 | |||
| c3587ff46f | |||
| dc9fa9ccf2 | |||
| 97c259d928 | |||
| afffdd5bbf | |||
| 199e7a1d46 | |||
| a1aa315187 | |||
| 8c56fddc55 | |||
| 277d76df3e | |||
| 1ac33d30bd | |||
| 658cb438f8 | |||
| 2b71625ffe | |||
| 2b13fc9a24 | |||
| 9e18964e7f | |||
| 43dfe559a6 | |||
| aab7ba264c | |||
| b7162b5fad | |||
| ce4a081155 | |||
| 5df2a048e1 | |||
| 1b6a7fafa8 | |||
| 2ab725e5e1 | |||
| 88a310a86e | |||
| 86319be256 | |||
| 9d68ef6421 | |||
| 2bb1c5d39b | |||
| 3aa15c979d | |||
| c062ba3426 | |||
| 343560225c | |||
| e0dd77f0c3 | |||
| 92ff07f723 | |||
| a23dca080a | |||
| 6844f88567 | |||
| e6060ea277 | |||
| 549de7fa54 | |||
| ecf9faa21d | |||
| a87ebd41e7 | |||
| 183dd40f39 | |||
| c722c5c46f | |||
| 865200db5e | |||
| c3e15de759 | |||
| 44bfdbdc83 | |||
| 5f10c1875c | |||
| a7ae7a8cda | |||
| 706f142a98 | |||
| 08df3b2dff | |||
| 14672ff145 | |||
| 7fcd84d08e | |||
| 12f8686326 | |||
| aa445adfff | |||
| 603aa5db5f | |||
| c34289036f | |||
| 5b6bec775b | |||
| 3b0fe3043f | |||
| c99165891f | |||
| 4938b18f9d | |||
| 8895b4e8a3 | |||
| a7321c9beb | |||
| c23b533704 | |||
| de34c75788 | |||
| 06341efe0d | |||
| c810005f86 | |||
| cdedf283ac | |||
| acfd92e2e6 | |||
| 51b81dba87 | |||
| 7f6dfcf52f | |||
| 92582d8434 | |||
| e2bff474db | |||
| 4f702e12b7 | |||
| 083400d1c2 | |||
| 7491337bfd | |||
| d6b833fbb2 | |||
| 2113a2b634 | |||
| 5df632264f | |||
| 42c350243a | |||
| 522ca3b04a | |||
| 2d53ec5d34 | |||
| 13d2f70c3a | |||
| a87d19998e | |||
| 6ddf241293 | |||
| e43ec6c4ea | |||
| 5f3db95cbd | |||
| d874829b06 | |||
| 6cfbccd955 | |||
| 0d821c3630 | |||
| b61e3b580d | |||
| 5c301353ec | |||
| 0363421862 | |||
| 6f18b9b691 | |||
| 35e40be550 | |||
| c1528f532e | |||
| 245960d35b | |||
| 8847034217 | |||
| 91acfbbd38 | |||
| 4505a2bf2d | |||
| a314380b08 | |||
| 0c07a015c6 | |||
| a0c7697280 | |||
| 04023da723 | |||
| 13ea045055 | |||
| f03351d112 | |||
| 48d9f10f5b | |||
| 2b53df98cd | |||
| 99a7a13218 | |||
| 2d2d4ac002 | |||
| d12e8023e3 | |||
| 17181cee8f | |||
| a74ee911b3 | |||
| b0b37172ce | |||
| cccf048e3f | |||
| 82e890746b | |||
| 188d65d700 | |||
| 4569f93e70 | |||
| bcd1d8461f | |||
| 183a9139f9 | |||
| 80a1e6ecf3 | |||
| aa1f8cfb8f | |||
| 8060691f3d | |||
| bf26de495a | |||
| 73b3f7e298 | |||
| 22191649aa | |||
| 0557907310 | |||
| 0f283c484d | |||
| e33ca9d316 | |||
| f93f4c72f7 | |||
| f0b9bc10c2 | |||
| f583879aee | |||
| 7ea6c6c84b | |||
| 2532a0ff59 | |||
| c3f354826d | |||
| 6d1e421ad7 | |||
| 29b0055e39 | |||
| 2cb20fe342 | |||
| fc97fa4415 | |||
| 876a50f759 | |||
| eb0d2868f5 | |||
| e215d5bc64 | |||
| 3f0d687656 | |||
| d59eb8e731 | |||
| 04e9eed88d | |||
| 5072e95f16 | |||
| a2b8366477 | |||
| e9a6bee046 | |||
| 080a8d7ee5 | |||
| f94fd3118b | |||
| 8ddb13d6e2 | |||
| c6cf8be8d4 | |||
| e92270a9ab | |||
| 65d6636a41 | |||
| 4701badb2a | |||
| 3565215c81 | |||
| 3957fea5e4 | |||
| 10f1ae152d | |||
| eb29b6bffe | |||
| d157eb0b6e | |||
| 0045eb4598 | |||
| b61c66c385 | |||
| 56d6c4eb30 | |||
| a6030d708d | |||
| 683c3c4f36 | |||
| bd084f9181 | |||
| fef133bf0a | |||
| 15c226e6cf | |||
| 84f111d641 | |||
| 18c1e7ac60 | |||
| ee6dbdced6 | |||
| cb443d797d | |||
| 5a6497ec70 | |||
| 893ca8bcbd | |||
| f91e4c8b69 | |||
| f7c777d07d | |||
| 12a8e8616c | |||
| 2fbf7e8504 | |||
| 6864e6d5bf | |||
| 09b4e0e21b | |||
| f381005184 | |||
| 42a2de4bf0 | |||
| 1fd1e34844 | |||
| 64dbbd7d09 | |||
| c137e577dc | |||
| f592a9202f | |||
| cdc24d2e57 | |||
| b8bf3f6520 | |||
| 82cec83d87 | |||
| 1e14667006 | |||
| 6539d14852 | |||
| 400df0f980 | |||
| 4cafb3f966 | |||
| d8892c4eb4 | |||
| 1ebd25e76e | |||
| ca89aa8377 | |||
| ad6272bfe5 | |||
| b401c37c39 | |||
| 552dd318cd | |||
| a97880132a | |||
| 89058c63c8 | |||
| 747e417809 | |||
| fd26e1618c | |||
| 86ea760011 | |||
| 824237deb3 | |||
| ca8c70cc95 | |||
| 46fcc695a5 | |||
| 0e866a0266 | |||
| 63c36f5907 | |||
| 5299500d78 | |||
| 3b3d1aa9cc | |||
| 62d2346471 | |||
| 1e15764bb9 | |||
| a6bfd35f1a | |||
| 3296efe46b | |||
| 51ddfbc340 | |||
| 42142d819a | |||
| bbf9d523a6 | |||
| 721877e10a | |||
| a9e95a128f | |||
| 2b920eaa87 | |||
| a3ec759e62 | |||
| 3661442acd | |||
| f232d329c5 | |||
| ac5cf3bd80 | |||
| ac13ac7a2c | |||
| 0bccb35cb0 | |||
| 18d9484ab1 | |||
| fe7c06bc84 | |||
| b6fb3bbf1d | |||
| 927d7a3aeb | |||
| 979973745b | |||
| afab863f11 | |||
| 168162c174 | |||
| 2b122087c4 | |||
| 043d97cfdf | |||
| 794818953d | |||
| 783570fe9f | |||
| b1e2a4243e | |||
| b347308137 | |||
| b3c8a79946 | |||
| 9822c56f1a | |||
| cdd7ff5c6d | |||
| 5aba2f25cc | |||
| 96398daa78 | |||
| 61ceb66415 | |||
| b4f173cdb3 | |||
| 03e4592082 | |||
| cf2dbe50a1 | |||
| e5bb5b75fe | |||
| cffce47eb1 | |||
| ca0adba6cf | |||
| 8502b90c25 | |||
| cef43e7f06 | |||
| 18aaf3cc93 | |||
| f13740cb7f | |||
| bddac79b40 | |||
| e52baf555f | |||
| 475dec3014 | |||
| f2ed649694 | |||
| e82506e0c4 | |||
| 3071daa6f3 | |||
| 5d71286000 | |||
| 339d7be9c1 | |||
| 7f85494b1d | |||
| a405794a03 | |||
| 4e8e096fdb | |||
| eb821c1f36 | |||
| bf07b832f0 | |||
| 5934614edb | |||
| 96b5c1d3d3 | |||
| cb2972b145 | |||
| cd5a1980c9 | |||
| 0e35107e17 | |||
| 10b026dfe0 | |||
| 743c3c54a7 | |||
| 489c86dad8 | |||
| a9824fde91 | |||
| 6c62bbe6fb | |||
| 8a3aa660cb | |||
| 14cc7789d9 | |||
| 728d9a0993 | |||
| aa8d543ed8 | |||
| b335981621 | |||
| 9d5ca1252a | |||
| d5dbbd566f | |||
| 5362d54ab6 | |||
| 1f162aa2a0 | |||
| 4a19f193ce | |||
| cfc40ee966 | |||
| 6baba5a7b2 | |||
| ba082081b3 | |||
| e314c68a56 | |||
| 889fcb3939 | |||
| 632abd2225 | |||
| e3465da979 | |||
| f4523b2dba | |||
| 0d58b32914 | |||
| aea2d34080 | |||
| d5dbde0a24 | |||
| f888008dc1 | |||
| 87da02ac15 | |||
| ed61fc67ef | |||
| 5ac6af7b81 | |||
| 9db8cc6707 | |||
| 021a5881c2 | |||
| d6ba3ae332 | |||
| 3e49b45418 | |||
| 23e22650f9 | |||
| 85267a921e | |||
| 2c7089d47f | |||
| edc6cfe210 | |||
| d6145f383d | |||
| 03b6e2df17 | |||
| 5309138980 | |||
| a5e927ea4f | |||
| ec83f4ae72 | |||
| 71efd95136 | |||
| 0c21eba1f8 | |||
| 2ae4e15f87 | |||
| d69905feae | |||
| f795d56b2a | |||
| 4608ffcab4 | |||
| 9824df5f2a | |||
| 27a5ba4681 | |||
| 73936dca73 | |||
| 213274e96c | |||
| 7518361266 | |||
| f7aaece2f7 | |||
| fbce06cb26 | |||
| ccc0bf57a1 | |||
| ee29deee47 | |||
| 17e54104a9 | |||
| 479e369d29 | |||
| 3042fb7299 | |||
| 36fa455aad | |||
| 1c64e90537 | |||
| 09643aef82 | |||
| 03d9fb4115 | |||
| 81bea04db0 | |||
| 9211e338e7 | |||
| 23464ac55f | |||
| af78e4ea29 | |||
| e3d9216b10 | |||
| 9532a2e3da | |||
| 9237a08b53 | |||
| e02a8a7fdb | |||
| e70f50d837 | |||
| 2dfa58aae2 | |||
| dbc0cae68c | |||
| 7631722e99 | |||
| c04f68f25c | |||
| e4902efefc | |||
| 1267bcd255 | |||
| 0659ccc3f0 | |||
| bd2ae03ab4 | |||
| 244696ae24 | |||
| 1438046dd4 | |||
| 5c62ba0835 | |||
| 20fadfef7f | |||
| eed9541f9f | |||
| 1594afa389 | |||
| 9d74d93ed7 | |||
| e4e2f47f8e | |||
| be53bec9b7 | |||
| bb32c546d4 | |||
| ecb4ceec7b | |||
| c080bd4c4d | |||
| 39780f49bf | |||
| 73349c3c89 | |||
| 42a70ff7d0 | |||
| fa8262cbe9 | |||
| 7552328cdd | |||
| 60f4587d95 | |||
| 572c074c42 | |||
| 3cfbd6a93b | |||
| d0911b6a45 | |||
| 06b85442f8 | |||
| 762592daff | |||
| 338122793c | |||
| ef521624a0 | |||
| 341ab781b2 | |||
| 2fed657940 | |||
| 7bf78b3317 | |||
| 2d1fb0562d | |||
| 3d77bff0c9 | |||
| 4198203a7f | |||
| 21487641c1 | |||
| c987872be8 | |||
| 07e367e1a0 | |||
| db2e45c56e | |||
| 67bbdbfc70 | |||
| 83df3cba66 | |||
| f4e2b4bcbd | |||
| 6c64c22f83 | |||
| 702aa944dd | |||
| df45edd816 | |||
| 3f3143514e | |||
| 3e89910749 | |||
| 721a642a2f | |||
| d16ccc9dc5 | |||
| 77e7796b3f | |||
| 983c949e8c | |||
| e3f4f60e2d | |||
| 33aa904cb7 | |||
| 0248be5543 | |||
| f7ca8212aa | |||
| 5eb59a1a43 | |||
| 7dd1e9bfbe | |||
| 067fd25a34 | |||
| 7cb26ba104 | |||
| a4212cc865 | |||
| 0445f7d6e8 | |||
| efe99b3f62 | |||
| 7f2c98f17a | |||
| 8f1d215851 | |||
| 013b58f6f6 | |||
| 9d3b3476c2 | |||
| 715874a98f | |||
| d2109dd2cb | |||
| ddaf11ed6a | |||
| 2b5f68003d | |||
| 1a759cc4e7 | |||
| 9e83562bf4 | |||
| c03c19d26f | |||
| ad9ebdf8e6 | |||
| 9c1701c62a | |||
| edf6c42e9d | |||
| f0f2a71a87 | |||
| cf270bd9ce | |||
| 49223a4688 | |||
| 074bb1e66e | |||
| 7e2e510d8a | |||
| 1ed34c6fa0 | |||
| 78a0fa55b5 | |||
| d37c040b36 | |||
| e56bbf557d | |||
| 5abecec478 | |||
| ccb41f778e | |||
| 059a4cf0d8 | |||
| 7a535a4554 | |||
| f89167ef94 | |||
| a77777f509 | |||
| 4a327ba584 | |||
| a41e9bf67e | |||
| 6716973ce0 | |||
| 7cc81393d6 | |||
| 3e413a036f | |||
| 63a8fe7ee8 | |||
| 146409844d | |||
| ba0da9f59e | |||
| 81aef519d4 | |||
| bcd84518d1 | |||
| f205952ff2 | |||
| 1d7622e0b5 | |||
| 4d9112283d | |||
| dc49c788a8 | |||
| 36741ab780 | |||
| 53dffc5e88 | |||
| 607c7e7777 | |||
| 6f09e1699f | |||
| 8c35de48f3 | |||
| b83d943841 | |||
| b11b5caeb3 | |||
| 36924da59a | |||
| f0a2c47613 | |||
| 5a4449f1a2 | |||
| de3d7a7774 | |||
| b06dbd1c00 | |||
| 1fa5e424e9 | |||
| d81c7abf1a | |||
| 932215c91d | |||
| 7aa1141ba5 | |||
| 3699439506 | |||
| 76b1288f77 | |||
| 8fd9ae4e59 | |||
| 53abd2fe38 | |||
| da8a4ba8ab | |||
| 9c3990c0c1 | |||
| 1eeb46d5fc | |||
| 02c01e258c | |||
| b2f912868d | |||
| ecf0eba0a5 | |||
| 8e5fec2fa8 | |||
| 89c35e8512 | |||
| 3fa88fad79 | |||
| 5f037462ed | |||
| 93c01e5f1e | |||
| 52953626a7 | |||
| f77fdc799d | |||
| 7bf1f9bd71 | |||
| 363ffc1c04 | |||
| 4001899bdf | |||
| fabdd89c4a | |||
| 70f1675085 | |||
| 07e1e2d9d6 | |||
| ebff6c6370 | |||
| 233eb6d916 | |||
| d568cab2fc | |||
| 8447b95c50 | |||
| e959d1e1b0 | |||
| ead5dbe368 | |||
| f091f2b344 | |||
| 267a51e800 | |||
| 939f6095ba | |||
| a333615e53 | |||
| e1b33fbc40 | |||
| 99c5d994b5 | |||
| 0971485367 | |||
| 3cfa963f69 | |||
| 7096a4231f | |||
| 07f0c182e6 | |||
| 535b223333 | |||
| ffa8c2be79 | |||
| 2873e64ca2 | |||
| 8bd28bce69 | |||
| b97ce43fca | |||
| d34c4cc2f2 | |||
| 1ca1f0fa7d | |||
| 8c3c8f888d | |||
| a75d7f0381 | |||
| 7684466acf | |||
| 0067245739 | |||
| 4a5d8aa217 | |||
| 2d786aa02c | |||
| b0933b96ef | |||
| 20fb73b626 | |||
| ae7bd7112b | |||
| 2365363dcc | |||
| e0e4a7bec6 | |||
| ebd0c3696a | |||
| e0a0d9c039 | |||
| dae9f2ab2b | |||
| 7168a00ee4 | |||
| 1e2d0ced20 | |||
| d6ac883efa | |||
| a386d70ae4 | |||
| bc8bf672b4 | |||
| e38998214f | |||
| 472a2fe802 | |||
| 2d6d89b1cf | |||
| 66be2ac6ca | |||
| 3137c9f3f7 | |||
| b9ebb02e72 | |||
| 1e02c475d6 | |||
| 4d2cda0692 | |||
| cbd2b8f428 | |||
| 93605db690 | |||
| 2567096de0 | |||
| 6ed25d012f | |||
| c2afef2bde | |||
| 0991e7d8a4 | |||
| cf52f2a743 | |||
| 37dddda1a0 | |||
| 3f2f3ebd51 | |||
| 7ba78540ac | |||
| 19afb49fce | |||
| 46ab553fa5 | |||
| 68cc42047e | |||
| e25cf27ba5 | |||
| 3895e6d958 | |||
| 24cf3984c8 | |||
| 6237675744 | |||
| 30dae049ff | |||
| 1dc30caee9 | |||
| b2d340cbfb | |||
| 7d52787e54 | |||
| ae3f16ccbd | |||
| 057222757b | |||
| 119f109904 | |||
| 23a77b1ba4 | |||
| c076daa91f | |||
| b7ef5325ac | |||
| 8b535c58fa | |||
| 6bc8daaeda | |||
| 7a2562e5bb | |||
| 9e0c731b32 | |||
| 2e0e4006a1 | |||
| 187139473d | |||
| dbb0a5ad28 | |||
| 24aaed44b9 | |||
| 32b8d83c04 | |||
| bf55c325ce | |||
| 3af288c74e | |||
| e306d9ba35 | |||
| b23a877d7e | |||
| 08fda055fc | |||
| 84055ed74e | |||
| 2db30690ce | |||
| 304bcfd343 | |||
| 8a1cf2bb3a | |||
| c857c24a64 | |||
| bbdcb047d0 | |||
| 78f2e70956 | |||
| 75a75626ce | |||
| cec9688d58 | |||
| 81492b7d3a | |||
| 9166acbbb9 | |||
| 36de2b6ca6 | |||
| 21f909dd4b | |||
| f2a92c9122 | |||
| 7ee2e3d8bc | |||
| f89aeb6ad4 | |||
| 0397006894 | |||
| d6863074b2 | |||
| 9c185a30e0 | |||
| a8f492a027 | |||
| 0a92b1dc68 | |||
| e6d661f8ee | |||
| f48dfb5d81 | |||
| cd041e8366 | |||
| 6787ea883e | |||
| 78937d716f | |||
| 9713abc002 | |||
| b44b45cca0 | |||
| 9e2cf0ed73 | |||
| b01d7ea5b9 | |||
| ae89b65a98 | |||
| 9b9c3d788d | |||
| ccc6c6daa5 | |||
| 9ce6636c6a | |||
| 6287d306c2 | |||
| 6cfa053328 | |||
| 9514b6eecd | |||
| c8d4818d22 | |||
| 4142ada729 | |||
| d7ffdbd78d | |||
| e8d87d37bb | |||
| 343ffc23eb | |||
| 95e0086eed | |||
| c010ecfe38 | |||
| 302e9371c8 | |||
| 7060c0e6d7 | |||
| 20a4c7f9f4 | |||
| e59e4afd3e | |||
| f74dd3ca1e | |||
| 511cfc524f | |||
| 4cf6173d25 | |||
| 17996757fd | |||
| 6bc1049858 | |||
| ff44f626ba | |||
| 552343fa37 | |||
| 4dc7fd8cd1 | |||
| 285c96fd2e | |||
| e6af33367e | |||
| 7092fe2242 | |||
| a32ff46579 | |||
| 7f20cf59d1 | |||
| a8a1b08127 | |||
| 1a1e777b87 | |||
| 9e76e64064 | |||
| 975ae17ef9 | |||
| ed9dcef66f | |||
| b1e537e54e | |||
| e5886862c3 | |||
| d85b668d4f | |||
| 4e0ffc1e28 | |||
| 214f48922e | |||
| 84e7ff2637 | |||
| b363d8bfb5 | |||
| 40e1f307a7 | |||
| 27f4f73690 | |||
| 7321b654bf | |||
| 754d467440 | |||
| 598f08d6c7 | |||
| 224fdc1864 | |||
| e646b4dc9a | |||
| 9077db2e97 | |||
| 7e14277ead | |||
| d351a7d697 | |||
| 70ed43b811 | |||
| 913083ebc6 | |||
| 588a95a7ae | |||
| c0a0ad4ec5 | |||
| 5eafe96525 | |||
| b41ac0fc2a | |||
| cfe93530b8 | |||
| 4492e72ffa | |||
| 1a0fd35f36 | |||
| db475ef0b4 | |||
| b3dddc1dfe | |||
| b64c610abb | |||
| c5add2fca9 | |||
| 9ea78f7d28 | |||
| 54b0d965ae | |||
| 7b4bd5696b | |||
| 9064f3ba4b | |||
| e00e562b5f | |||
| 73f38c896f | |||
| 5767cbd0e3 | |||
| ba31756bf9 | |||
| a88f48cd93 | |||
| f2e0e481de | |||
| 566f279137 | |||
| 394ef13955 | |||
| 6812e17d07 | |||
| fdf826b686 | |||
| e57742e7de | |||
| 73b63aa414 | |||
| 44aa2aec5d | |||
| 8d9d7c4cea | |||
| 9557f0c844 | |||
| a32a9aa3fc | |||
| 86fa98dfbb | |||
| 6a69447d90 | |||
| 2d20e7a9e2 | |||
| ac7b2e0da0 | |||
| 388325a496 | |||
| af728e82fc | |||
| 3cb33f0825 | |||
| 1038baf467 | |||
| 828ecabc78 | |||
| 88703ba1eb | |||
| b0ecb2c535 | |||
| c70482dbc4 | |||
| 51f1999412 | |||
| dd4fbc256c | |||
| cc2265583f | |||
| 1e7a4db57f | |||
| 9a9e30c88b | |||
| 3d98ebff42 | |||
| a6f4b1ae8e | |||
| 3e6ea8109c | |||
| ec407d57a5 | |||
| 838ad66166 | |||
| c6bf905253 | |||
| 8310230582 | |||
| 1f21af0bdb | |||
| 127e4a5086 | |||
| 6a30967f23 | |||
| df2b020b42 | |||
| a74c5a89a6 | |||
| 3cb0be5be5 | |||
| d56f3cfecf | |||
| 9716a901d1 | |||
| 649d242e9a | |||
| 8ac3c2157f | |||
| 7ca4ca21fa | |||
| e565acba91 | |||
| 260678634e | |||
| 45461836e1 | |||
| 1fc230624d | |||
| ede771e51b | |||
| 0282786b4c | |||
| 42dd08ace5 | |||
| cf1d274b0d | |||
| d361d5f3b2 | |||
| 3e63b40564 | |||
| c5139ed06a | |||
| 3dc93526ff | |||
| 3edf8e10e2 | |||
| 00215622cc | |||
| 479b7c3140 | |||
| a3ca8ddcfc | |||
| 9ace04d2c9 | |||
| 8b11d2d5e7 | |||
| 05fb0f81f9 | |||
| da49efa1ed | |||
| 39fb0a5b66 | |||
| 962d4d29ee | |||
| 779e9b658b | |||
| f9ee4dcb51 | |||
| 1acdbb69ae | |||
| c022a1c838 | |||
| 52afd3d5a8 | |||
| 79b1c0edee | |||
| 4803bd4b3f | |||
| 215a262076 | |||
| 7a35577d3a | |||
| efbd3ca8fa | |||
| 18904412cd | |||
| 0d0d0ab994 | |||
| 71deef61f5 | |||
| 46c8a55f56 | |||
| 37f837dcb7 | |||
| a5be0a685a | |||
| 4cdd1fec95 | |||
| 761617c1ce | |||
| e3bc4dab85 | |||
| 335095a332 | |||
| 15fcb73e19 | |||
| a8b0f2934b | |||
| 7d67b3d00a | |||
| b60c7e97ab | |||
| 440ebfcbf6 | |||
| 8d93eb919b | |||
| d3df2dc1e5 | |||
| 677314dacb | |||
| 20f53c89ad | |||
| 1cb92ef69a | |||
| b518f7c4c4 | |||
| 9fdc099c3a | |||
| 1db8ada2aa | |||
| b753448052 | |||
| e29c6d2f23 | |||
| 1ee53ee0c1 | |||
| 57438867b6 | |||
| 86c04424f6 | |||
| 632639d581 | |||
| 99c8edb3eb | |||
| 4582e61cfc | |||
| a970fe93c1 | |||
| 91f5c72cf0 | |||
| d2f3d04ad4 | |||
| 07b93e1e02 | |||
| ab5e7b1588 | |||
| 0f4aadddfc | |||
| a3c79feeba | |||
| e6b76fefa1 | |||
| a37f512949 | |||
| 3f34c0ce37 | |||
| 7cc9a0b9aa | |||
| fbaa79f168 | |||
| 87808ef317 | |||
| 80c7e4e74c | |||
| e778aab8b7 | |||
| 976db74ece | |||
| b073810bab | |||
| 2b0aa8e418 | |||
| 1fa2e76c9b | |||
| cb166e2591 | |||
| 187c2dda20 | |||
| b962d2b550 | |||
| d69bcfa138 | |||
| 157b25ea43 | |||
| 2b01b63ee1 | |||
| 3d91d2c80a | |||
| 625f9ef816 | |||
| 0960a3b21d | |||
| aec220fd2c | |||
| 666dacf73b | |||
| 67ce27afaa | |||
| 3f6d184435 | |||
| a2fad84dae | |||
| 4a84f9fa00 | |||
| 7abc921d20 | |||
| a307e7a798 | |||
| 3a9eb8463d | |||
| 4befb125e3 | |||
| ca00a19736 | |||
| 296969bcd1 | |||
| 3218c30983 | |||
| 3658b32db5 | |||
| 592d46c8f2 | |||
| 8b86f12c23 | |||
| 2e2d8d2af3 | |||
| 3eec43cacd | |||
| ba7cd25f21 | |||
| 969152e949 | |||
| b78443cf2d | |||
| 4288ba2449 | |||
| 22a3093815 | |||
| 98ba2c7ce4 | |||
| 36962b8c62 | |||
| d0a8bd1f03 | |||
| c9e0f50f0f | |||
| 1dc310586d | |||
| 6f71d21bb7 | |||
| 7caf421074 | |||
| c93f047056 | |||
| 392f2e633c | |||
| ef98d4ece7 | |||
| 2383bf2c71 | |||
| 2c8c92c2a4 | |||
| bad2dc30c3 | |||
| fe7f4233b9 | |||
| 68454a9841 | |||
| d3bcf63cf7 | |||
| a5f1209f28 | |||
| 66b7a48352 | |||
| 5bd66f9a76 | |||
| 6da6817037 | |||
| 11b3880f8e | |||
| a3d87ff26a | |||
| 409eedf58d | |||
| 9a44ca2769 | |||
| 155305f0f7 | |||
| 6abce8d976 | |||
| f16d1f034f | |||
| dab107cf90 | |||
| d1d1aa3d21 | |||
| d0536cc31f | |||
| c47f5e9995 | |||
| 0916836ff9 | |||
| 5dd9ff1062 | |||
| d1e3b9f15d | |||
| ca3c179b75 | |||
| c2d5924508 | |||
| 016d0395c3 | |||
| 925c9239bd | |||
| fdcbe3cf3a | |||
| f6b9cc5ce1 | |||
| 8c915e6dc3 | |||
| 1db426da2e | |||
| d9be363962 | |||
| 88daa37e34 | |||
| 931fa01337 | |||
| 8e1595eb29 | |||
| 29e97232d8 | |||
| f05191e668 | |||
| 1ba189e59d | |||
| c40ca70aa6 | |||
| 521f991167 | |||
| edf1417bbb | |||
| 686e9643ad | |||
| 975460d268 | |||
| 6b0c606d25 | |||
| 93ff0bdcff | |||
| bf9d90ca4e | |||
| d6e5e1e8f7 | |||
| d3ae2ef9ea | |||
| 40b0854704 | |||
| 9aec6b6496 | |||
| d01f977960 | |||
| 1444009ee2 | |||
| 14ee9bee26 | |||
| 93587ddc3c | |||
| 0c4d03477e | |||
| a35092f012 | |||
| 49ee7ee52b | |||
| 52c77a1970 | |||
| e4269ae7fb | |||
| bd6011c524 | |||
| 46cb3ec103 | |||
| 0241129948 | |||
| e44aca06cb | |||
| 19d386f977 | |||
| a67fdda913 | |||
| 5286c7b1c3 | |||
| d9d96d0a6f | |||
| 13353bb615 | |||
| d78348fd16 | |||
| 1e8e660133 | |||
| 5196982c98 | |||
| 99f857fbf6 | |||
| 0982aa166a | |||
| 3ae9f86097 | |||
| 9efd9b0d68 | |||
| 267a73f355 | |||
| 437d8ea890 | |||
| 7ed92ec402 | |||
| 678d9ffbf9 | |||
| bc4b427ed1 | |||
| 36141a9df9 | |||
| d68ba75457 | |||
| 00ad32c5f4 | |||
| 064bab60ff | |||
| 5b146217c0 | |||
| 202c81b2e5 | |||
| 4520480604 | |||
| aea87bb5cb | |||
| 19492f7e7b | |||
| 51030e3c45 | |||
| e6b8b4be18 | |||
| 6ac13b7f80 | |||
| 7e5e6003a9 | |||
| f445440995 | |||
| d81547f091 | |||
| 2b185d491b | |||
| ca47440950 | |||
| 5e32602f4a | |||
| 1f4516028c | |||
| 7f29d269a3 | |||
| 62c3374911 | |||
| 2116e04af5 | |||
| a97d5e80c7 | |||
| b5098038d0 | |||
| 6fce718252 | |||
| 40cf96202d | |||
| c18e59218e | |||
| 216865a20d | |||
| 6c5036ee8d | |||
| dc2f59ca24 | |||
| 6f6457137e | |||
| bc5cb6e2a2 | |||
| 16825fff41 | |||
| 5024f1db8c | |||
| a60385fc3d | |||
| b20e2c37c1 | |||
| acd40cbeb6 | |||
| 6a45a862dd | |||
| 5bd45e9a20 | |||
| 52e42f23ab | |||
| 96b7755cde | |||
| c589ee1ca5 | |||
| 18c9ee093b | |||
| b82fa3112c | |||
| 8d0f66d562 | |||
| 20a5e0ba73 | |||
| 5a2667c71e | |||
| 1f4a8d7eb6 | |||
| 4430bd0328 | |||
| ab2e7f4c03 | |||
| 54e5c06b4d | |||
| add5a6a0be | |||
| 89c2ba4293 | |||
| dd100fb709 | |||
| e8dd2b9e7b | |||
| 71e3cd227c | |||
| 1648c31a22 | |||
| f8c820f319 | |||
| 300f35e78f | |||
| 2aa5849997 | |||
| fb1b845211 | |||
| 3d2af9db8e | |||
| 6129e5a1cf | |||
| 7f70ee1227 | |||
| c9f7da6e82 | |||
| f956c0f227 | |||
| df935e0477 | |||
| 841f1afe1e | |||
| fb8b88557e | |||
| 2b502b22b9 | |||
| 5ac80d2655 | |||
| 8aa7499e63 | |||
| 8cd5e51982 | |||
| e5c2133446 | |||
| 3dccdf2f05 | |||
| 8a708c6655 | |||
| 9e1d9eee4b | |||
| f30aabc365 | |||
| a5546d016f | |||
| f79d70d112 | |||
| ec28f258fb | |||
| 08f3a6fb40 | |||
| 8823d5256f | |||
| 60e7aa90d2 | |||
| 71357a9546 | |||
| a5b06e9c56 | |||
| 0f94419f6d | |||
| 94e7aabea5 | |||
| f6c816cafe | |||
| 4cf160e8dc | |||
| 9252be5e8c | |||
| ed342eea64 | |||
| e6405bc455 | |||
| fed09461ce | |||
| 6e1ddef4fe | |||
| 76be4a3eb9 | |||
| 997a9e2fe3 | |||
| 03790f3da0 | |||
| e46a703c7d | |||
| ae17acdfd4 | |||
| 2422c9ce9e | |||
| 7f75d7082a | |||
| 4749ab175e | |||
| e651699e1d | |||
| 3f4157bab2 | |||
| a98f559066 | |||
| ffd54c452c | |||
| 61424eeab9 | |||
| c131d6637d | |||
| 24b0b33f1d | |||
| 675198d361 | |||
| ed667a42ad | |||
| 920484d540 | |||
| 07c5e6542b | |||
| 6a43f2e508 | |||
| ad3e447f08 | |||
| 1840da1d68 | |||
| c82b86cea3 | |||
| 0fb383c466 | |||
| 69fc2f48bf | |||
| 7c604fc86a | |||
| ec7fbb8952 | |||
| 679350e23d | |||
| f0209c9d6e | |||
| 5020aec6ec | |||
| 13737577e7 | |||
| 4ee7d46d78 | |||
| d143e32022 | |||
| 0a0dab74a1 | |||
| c6ea91e671 | |||
| 8011adb219 | |||
| 6ba5d5f16b | |||
| d5774830d8 | |||
| eb268102fc | |||
| b364c4f23a | |||
| 91b9266a91 | |||
| 1e6236a987 | |||
| 10ebd7e6ef | |||
| 6b83c52c7c | |||
| 46304c7a2d | |||
| c3fda41224 | |||
| a4017e930e | |||
| 95bdb925d5 | |||
| a26bae70c7 | |||
| a38dcb6ee5 | |||
| eb27c12117 | |||
| c03fcf9a23 | |||
| 71f83b5993 | |||
| fd2d12d6b1 | |||
| 50f9f36c3d | |||
| f650c679e0 | |||
| 8349cb0dd4 |
@@ -0,0 +1,105 @@
|
||||
---
|
||||
description: For tasks requiring sending Telegram server API requests or working with generated API types.
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Telegram Desktop API Usage
|
||||
|
||||
## API Schema
|
||||
|
||||
The API definitions are described using [TL Language]\(https:/core.telegram.org/mtproto/TL) in two main schema files:
|
||||
|
||||
1. **`Telegram/SourceFiles/mtproto/scheme/mtproto.tl`**
|
||||
* Defines the core MTProto protocol types and methods used for basic communication, encryption, authorization, service messages, etc.
|
||||
* Some fundamental types and methods from this schema (like basic types, RPC calls, containers) are often implemented directly in the C++ MTProto core (`SourceFiles/mtproto/`) and may be skipped during the C++ code generation phase.
|
||||
* Other parts of `mtproto.tl` might still be processed by the code generator.
|
||||
|
||||
2. **`Telegram/SourceFiles/mtproto/scheme/api.tl`**
|
||||
* Defines the higher-level Telegram API layer, including all the methods and types related to chat functionality, user profiles, messages, channels, stickers, etc.
|
||||
* This is the primary schema used when making functional API requests within the application.
|
||||
|
||||
Both files use the same TL syntax to describe API methods (functions) and types (constructors).
|
||||
|
||||
## Code Generation
|
||||
|
||||
A custom code generation tool processes `api.tl` (and parts of `mtproto.tl`) to create corresponding C++ classes and types. These generated headers are typically included via the Precompiled Header (PCH) for the main `Telegram` project.
|
||||
|
||||
Generated types often follow the pattern `MTP[Type]` (e.g., `MTPUser`, `MTPMessage`) and methods correspond to functions within the `MTP` namespace or related classes (e.g., `MTPmessages_SendMessage`).
|
||||
|
||||
## Making API Requests
|
||||
|
||||
API requests are made using a standard pattern involving the `api()` object (providing access to the `MTP::Instance`), the generated `MTP...` request object, callback handlers for success (`.done()`) and failure (`.fail()`), and the `.send()` method.
|
||||
|
||||
Here's the general structure:
|
||||
|
||||
```cpp
|
||||
// Include necessary headers if not already in PCH
|
||||
|
||||
// Obtain the API instance (usually via api() or MTP::Instance::Get())
|
||||
api().request(MTPnamespace_MethodName(
|
||||
// Constructor arguments based on the api.tl definition for the method
|
||||
MTP_flags(flags_value), // Use MTP_flags if the method has flags
|
||||
MTP_inputPeer(peer), // Use MTP_... types for parameters
|
||||
MTP_string(messageText),
|
||||
MTP_long(randomId),
|
||||
// ... other arguments matching the TL definition
|
||||
MTP_vector<MTPMessageEntity>() // Example for a vector argument
|
||||
)).done([=]\(const MTPResponseType &result) {
|
||||
// Handle the successful response (result).
|
||||
// 'result' will be of the C++ type corresponding to the TL type
|
||||
// specified after the '=' in the api.tl method definition.
|
||||
// How to access data depends on whether the TL type has one or multiple constructors:
|
||||
|
||||
// 1. Multiple Constructors (e.g., User = User | UserEmpty):
|
||||
// Use .match() with lambdas for each constructor:
|
||||
result.match([&]\(const MTPDuser &data) {
|
||||
/* use data.vfirst_name().v, etc. */
|
||||
}, [&]\(const MTPDuserEmpty &data) {
|
||||
/* handle empty user */
|
||||
});
|
||||
|
||||
// Alternatively, check the type explicitly and use the constructor getter:
|
||||
if (result.type() == mtpc_user) {
|
||||
const auto &data = result.c_user(); // Asserts if type is not mtpc_user!
|
||||
// use data.vfirst_name().v
|
||||
} else if (result.type() == mtpc_userEmpty) {
|
||||
const auto &data = result.c_userEmpty();
|
||||
// handle empty user
|
||||
}
|
||||
|
||||
// 2. Single Constructor (e.g., Messages = messages { msgs: vector<Message> }):
|
||||
// Use .match() with a single lambda:
|
||||
result.match([&]\(const MTPDmessages &data) { /* use data.vmessages().v */ });
|
||||
|
||||
// Or check the type explicitly and use the constructor getter:
|
||||
if (result.type() == mtpc_messages) {
|
||||
const auto &data = result.c_messages(); // Asserts if type is not mtpc_messages!
|
||||
// use data.vmessages().v
|
||||
}
|
||||
|
||||
// Or use the shortcut .data() for single-constructor types:
|
||||
const auto &data = result.data(); // Only works for single-constructor types!
|
||||
// use data.vmessages().v
|
||||
|
||||
}).fail([=]\(const MTP::Error &error) {
|
||||
// Handle the API error (error).
|
||||
// 'error' is an MTP::Error object containing the error code (error.type())
|
||||
// and description (error.description()). Check for specific error strings.
|
||||
if (error.type() == u"FLOOD_WAIT_X"_q) {
|
||||
// Handle flood wait
|
||||
} else {
|
||||
Ui::show(Box<InformBox>(Lang::Hard::ServerError())); // Example generic error handling
|
||||
}
|
||||
}).handleFloodErrors().send(); // handleFloodErrors() is common, then send()
|
||||
```
|
||||
|
||||
**Key Points:**
|
||||
|
||||
* Always refer to `Telegram/SourceFiles/mtproto/scheme/api.tl` for the correct method names, parameters (names and types), and response types.
|
||||
* Use the generated `MTP...` types/classes for request parameters (e.g., `MTP_int`, `MTP_string`, `MTP_bool`, `MTP_vector`, `MTPInputUser`, etc.) and response handling.
|
||||
* The `.done()` lambda receives the specific C++ `MTP...` type corresponding to the TL return type.
|
||||
* For types with **multiple constructors** (e.g., `User = User | UserEmpty`), use `result.match([&]\(const MTPDuser &d){ ... }, [&]\(const MTPDuserEmpty &d){ ... })` to handle each case, or check `result.type() == mtpc_user` / `mtpc_userEmpty` and call the specific `result.c_user()` / `result.c_userEmpty()` getter (which asserts on type mismatch).
|
||||
* For types with a **single constructor** (e.g., `Messages = messages{...}`), you can use `result.match([&]\(const MTPDmessages &d){ ... })` with one lambda, or check `type()` and call `c_messages()`, or use the shortcut `result.data()` to access the fields directly.
|
||||
* The `.fail()` lambda receives an `MTP::Error` object. Check `error.type()` against known error strings (often defined as constants or using `u"..."_q` literals).
|
||||
* Directly construct the `MTPnamespace_MethodName(...)` object inside `request()`.
|
||||
* Include `.handleFloodErrors()` before `.send()` for standard flood wait handling.
|
||||
@@ -0,0 +1,164 @@
|
||||
---
|
||||
description: For tasks requiring changing or adding user facing phrases and text parts.
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Telegram Desktop Localization
|
||||
|
||||
## Coding Style Note
|
||||
|
||||
**Use `auto`:** In the actual codebase, variable types are almost always deduced using `auto` (or `const auto`, `const auto &`) rather than being written out explicitly. Examples in this guide may use explicit types for clarity, but prefer `auto` in practice.
|
||||
|
||||
```cpp
|
||||
// Prefer this:
|
||||
auto currentTitle = tr::lng_settings_title(tr::now);
|
||||
auto nameProducer = GetNameProducer(); // Returns rpl::producer<...>
|
||||
|
||||
// Instead of this:
|
||||
QString currentTitle = tr::lng_settings_title(tr::now);
|
||||
rpl::producer<QString> nameProducer = GetNameProducer();
|
||||
```
|
||||
|
||||
## String Resource File
|
||||
|
||||
Base user-facing English strings are defined in the `lang.strings` file:
|
||||
|
||||
`Telegram/Resources/langs/lang.strings`
|
||||
|
||||
This file uses a key-value format with named placeholders:
|
||||
|
||||
```
|
||||
"lng_settings_title" = "Settings";
|
||||
"lng_confirm_delete_item" = "Are you sure you want to delete {item_name}?";
|
||||
"lng_files_selected" = "{count} files selected"; // Simple count example (see Pluralization)
|
||||
```
|
||||
|
||||
Placeholders are enclosed in curly braces, e.g., `{name}`, `{user}`. A special placeholder `{count}` is used for pluralization rules.
|
||||
|
||||
### Pluralization
|
||||
|
||||
For keys that depend on a number (using the `{count}` placeholder), English typically requires two forms: singular and plural. These are defined in `lang.strings` using `#one` and `#other` suffixes:
|
||||
|
||||
```
|
||||
"lng_files_selected#one" = "{count} file selected";
|
||||
"lng_files_selected#other" = "{count} files selected";
|
||||
```
|
||||
|
||||
While only `#one` and `#other` are defined in the base `lang.strings`, the code generation process creates C++ accessors for all six CLDR plural categories (`#zero`, `#one`, `#two`, `#few`, `#many`, `#other`) to support languages with more complex pluralization rules.
|
||||
|
||||
## Translation Process
|
||||
|
||||
While `lang.strings` provides the base English text and the keys, the actual translations are managed via Telegram's translations platform (translations.telegram.org) and loaded dynamically at runtime from the API. The keys from `lang.strings` (including the `#one`/`#other` variants) are used on the platform.
|
||||
|
||||
## Code Generation
|
||||
|
||||
A code generation tool processes `lang.strings` to create C++ structures and accessors within the `tr` namespace. These allow type-safe access to strings and handling of placeholders and pluralization. Generated keys typically follow the pattern `tr::lng_key_name`.
|
||||
|
||||
## String Usage in Code
|
||||
|
||||
Strings are accessed in C++ code using the generated objects within the `tr::` namespace. There are two main ways to use them: reactively (returning an `rpl::producer`) or immediately (returning the current value).
|
||||
|
||||
### 1. Reactive Usage (rpl::producer)
|
||||
|
||||
Calling a generated string function directly returns a reactive producer, typically `rpl::producer<QString>`. This producer automatically updates its value whenever the application language changes.
|
||||
|
||||
```cpp
|
||||
// Key: "settings_title" = "Settings";
|
||||
auto titleProducer = tr::lng_settings_title(); // Type: rpl::producer<QString>
|
||||
|
||||
// Key: "confirm_delete_item" = "Are you sure you want to delete {item_name}?";
|
||||
auto itemNameProducer = /* ... */; // Type: rpl::producer<QString>
|
||||
auto confirmationProducer = tr::lng_confirm_delete_item( // Type: rpl::producer<QString>
|
||||
tr::now, // NOTE: tr::now is NOT passed here for reactive result
|
||||
lt_item_name,
|
||||
std::move(itemNameProducer)); // Placeholder producers should be moved
|
||||
```
|
||||
|
||||
### 2. Immediate Usage (Current Value)
|
||||
|
||||
Passing `tr::now` as the first argument retrieves the string's current value in the active language (typically as a `QString`).
|
||||
|
||||
```cpp
|
||||
// Key: "settings_title" = "Settings";
|
||||
auto currentTitle = tr::lng_settings_title(tr::now); // Type: QString
|
||||
|
||||
// Key: "confirm_delete_item" = "Are you sure you want to delete {item_name}?";
|
||||
const auto currentItemName = QString("My Document"); // Type: QString
|
||||
auto currentConfirmation = tr::lng_confirm_delete_item( // Type: QString
|
||||
tr::now, // Pass tr::now for immediate value
|
||||
lt_item_name, currentItemName); // Placeholder value is a direct QString (or convertible)
|
||||
```
|
||||
|
||||
### 3. Placeholders (`{tag}`)
|
||||
|
||||
Placeholders like `{item_name}` are replaced by providing arguments after `tr::now` (for immediate) or as the initial arguments (for reactive). A corresponding `lt_tag_name` constant is passed before the value.
|
||||
|
||||
* **Immediate:** Pass the direct value (e.g., `QString`, `int`).
|
||||
* **Reactive:** Pass an `rpl::producer` of the corresponding type (e.g., `rpl::producer<QString>`). Remember to `std::move` the producer or use `rpl::duplicate` if you need to reuse the original producer afterwards.
|
||||
|
||||
### 4. Pluralization (`{count}`)
|
||||
|
||||
Keys using `{count}` require a numeric value for the `lt_count` placeholder. The correct plural form (`#zero`, `#one`, ..., `#other`) is automatically selected based on this value and the current language rules.
|
||||
|
||||
* **Immediate (`tr::now`):** Pass a `float64` or `int` (which is auto-converted to `float64`).
|
||||
```cpp
|
||||
int count = 1;
|
||||
auto filesText = tr::lng_files_selected(tr::now, lt_count, count); // Type: QString
|
||||
count = 5;
|
||||
filesText = tr::lng_files_selected(tr::now, lt_count, count); // Uses "files_selected#other"
|
||||
```
|
||||
|
||||
* **Reactive:** Pass an `rpl::producer<float64>`. Use the `tr::to_count()` helper to convert an `rpl::producer<int>` or wrap a single value.
|
||||
```cpp
|
||||
// From an existing int producer:
|
||||
auto countProducer = /* ... */; // Type: rpl::producer<int>
|
||||
auto filesTextProducer = tr::lng_files_selected( // Type: rpl::producer<QString>
|
||||
lt_count,
|
||||
countProducer | tr::to_count()); // Use tr::to_count() for conversion
|
||||
|
||||
// From a single int value wrapped reactively:
|
||||
int currentCount = 5;
|
||||
auto filesTextProducerSingle = tr::lng_files_selected( // Type: rpl::producer<QString>
|
||||
lt_count,
|
||||
rpl::single(currentCount) | tr::to_count());
|
||||
// Alternative for single values (less common): rpl::single(currentCount * 1.)
|
||||
```
|
||||
|
||||
### 5. Custom Projectors
|
||||
|
||||
An optional final argument can be a projector function (like `Ui::Text::Upper` or `Ui::Text::WithEntities`) to transform the output.
|
||||
|
||||
* If the projector returns `OutputType`, the string function returns `OutputType` (immediate) or `rpl::producer<OutputType>` (reactive).
|
||||
* Placeholder values must match the projector's *input* requirements. For `Ui::Text::WithEntities`, placeholders expect `TextWithEntities` (immediate) or `rpl::producer<TextWithEntities>` (reactive).
|
||||
|
||||
```cpp
|
||||
// Immediate with Ui::Text::WithEntities projector
|
||||
// Key: "user_posted_photo" = "{user} posted a photo";
|
||||
const auto userName = TextWithEntities{ /* ... */ }; // Type: TextWithEntities
|
||||
auto message = tr::lng_user_posted_photo( // Type: TextWithEntities
|
||||
tr::now,
|
||||
lt_user,
|
||||
userName, // Must be TextWithEntities
|
||||
Ui::Text::WithEntities); // Projector
|
||||
|
||||
// Reactive with Ui::Text::WithEntities projector
|
||||
auto userNameProducer = /* ... */; // Type: rpl::producer<TextWithEntities>
|
||||
auto messageProducer = tr::lng_user_posted_photo( // Type: rpl::producer<TextWithEntities>
|
||||
lt_user,
|
||||
std::move(userNameProducer), // Move placeholder producers
|
||||
Ui::Text::WithEntities); // Projector
|
||||
```
|
||||
|
||||
## Key Summary
|
||||
|
||||
* Keys are defined in `Resources/langs/lang.strings` using `{tag}` placeholders.
|
||||
* Plural keys use `{count}` and have `#one`/`#other` variants in `lang.strings`.
|
||||
* Access keys via `tr::lng_key_name(...)` in C++.
|
||||
* Call with `tr::now` as the first argument for the immediate `QString` (or projected type).
|
||||
* Call without `tr::now` for the reactive `rpl::producer<QString>` (or projected type).
|
||||
* Provide placeholder values (`lt_tag_name, value`) matching the usage (direct value for immediate, `rpl::producer` for reactive). Producers should typically be moved via `std::move`.
|
||||
* For `{count}`:
|
||||
* Immediate: Pass `int` or `float64`.
|
||||
* Reactive: Pass `rpl::producer<float64>`, typically by converting an `int` producer using `| tr::to_count()`.
|
||||
* Optional projector function as the last argument modifies the output type and required placeholder types.
|
||||
* Actual translations are loaded at runtime from the API.
|
||||
@@ -0,0 +1,216 @@
|
||||
---
|
||||
description:
|
||||
globs:
|
||||
alwaysApply: true
|
||||
---
|
||||
# RPL (Reactive Programming Library) Guide
|
||||
|
||||
## Coding Style Note
|
||||
|
||||
**Use `auto`:** In the actual codebase, variable types are almost always deduced using `auto` (or `const auto`, `const auto &`) rather than being written out explicitly. Examples in this guide may use explicit types for clarity, but prefer `auto` in practice.
|
||||
|
||||
```cpp
|
||||
// Prefer this:
|
||||
auto intProducer = rpl::single(123);
|
||||
const auto &lifetime = existingLifetime;
|
||||
|
||||
// Instead of this:
|
||||
rpl::producer<int> intProducer = rpl::single(123);
|
||||
const rpl::lifetime &lifetime = existingLifetime;
|
||||
|
||||
// Sometimes needed if deduction is ambiguous or needs help:
|
||||
auto user = std::make_shared<UserData>();
|
||||
auto data = QByteArray::fromHex("...");
|
||||
```
|
||||
|
||||
## Introduction
|
||||
|
||||
RPL is the reactive programming library used in this project, residing in the `rpl::` namespace. It allows handling asynchronous streams of data over time.
|
||||
|
||||
The core concept is the `rpl::producer`, which represents a stream of values that can be generated over a certain lifetime.
|
||||
|
||||
## Producers: `rpl::producer<Type, Error = no_error>`
|
||||
|
||||
The fundamental building block is `rpl::producer<Type, Error>`. It produces values of `Type` and can optionally signal an error of type `Error`. By default, `Error` is `rpl::no_error`, indicating that the producer does not explicitly handle error signaling through this mechanism.
|
||||
|
||||
```cpp
|
||||
// A producer that emits integers.
|
||||
auto intProducer = /* ... */; // Type: rpl::producer<int>
|
||||
|
||||
// A producer that emits strings and can potentially emit a CustomError.
|
||||
auto stringProducerWithError = /* ... */; // Type: rpl::producer<QString, CustomError>
|
||||
```
|
||||
|
||||
Producers are typically lazy; they don't start emitting values until someone subscribes to them.
|
||||
|
||||
## Lifetime Management: `rpl::lifetime`
|
||||
|
||||
Reactive pipelines have a limited duration, managed by `rpl::lifetime`. An `rpl::lifetime` object essentially holds a collection of cleanup callbacks. When the lifetime ends (either explicitly destroyed or goes out of scope), these callbacks are executed, tearing down the associated pipeline and freeing resources.
|
||||
|
||||
```cpp
|
||||
rpl::lifetime myLifetime;
|
||||
// ... later ...
|
||||
// myLifetime is destroyed, cleanup happens.
|
||||
|
||||
// Or, pass a lifetime instance to manage a pipeline's duration.
|
||||
rpl::lifetime &parentLifetime = /* ... get lifetime from context ... */;
|
||||
```
|
||||
|
||||
## Starting a Pipeline: `rpl::start_...`
|
||||
|
||||
To consume values from a producer, you start a pipeline using one of the `rpl::start_...` methods. These methods subscribe to the producer and execute callbacks for the events they handle.
|
||||
|
||||
The most common method is `rpl::start_with_next`:
|
||||
|
||||
```cpp
|
||||
auto counter = /* ... */; // Type: rpl::producer<int>
|
||||
rpl::lifetime lifetime;
|
||||
|
||||
// Counter is consumed here, use std::move if it's an l-value.
|
||||
std::move(
|
||||
counter
|
||||
) | rpl::start_with_next([=]\(int nextValue) {
|
||||
// Process the next integer value emitted by the producer.
|
||||
qDebug() << "Received: " << nextValue;
|
||||
}, lifetime); // Pass the lifetime to manage the subscription.
|
||||
// Note: `counter` is now in a moved-from state and likely invalid.
|
||||
|
||||
// If you need to start the same producer multiple times, duplicate it:
|
||||
// rpl::duplicate(counter) | rpl::start_with_next(...);
|
||||
|
||||
// If you DON'T pass a lifetime to a start_... method:
|
||||
auto counter2 = /* ... */; // Type: rpl::producer<int>
|
||||
rpl::lifetime subscriptionLifetime = std::move(
|
||||
counter2
|
||||
) | rpl::start_with_next([=]\(int nextValue) { /* ... */ });
|
||||
// The returned lifetime MUST be stored. If it's discarded immediately,
|
||||
// the subscription stops instantly.
|
||||
// `counter2` is also moved-from here.
|
||||
```
|
||||
|
||||
Other variants allow handling errors (`_error`) and completion (`_done`):
|
||||
|
||||
```cpp
|
||||
auto dataStream = /* ... */; // Type: rpl::producer<QString, Error>
|
||||
rpl::lifetime lifetime;
|
||||
|
||||
// Assuming dataStream might be used again, we duplicate it for the first start.
|
||||
// If it's the only use, std::move(dataStream) would be preferred.
|
||||
rpl::duplicate(
|
||||
dataStream
|
||||
) | rpl::start_with_error([=]\(Error &&error) {
|
||||
// Handle the error signaled by the producer.
|
||||
qDebug() << "Error: " << error.text();
|
||||
}, lifetime);
|
||||
|
||||
// Using dataStream again, perhaps duplicated again or moved if last use.
|
||||
rpl::duplicate(
|
||||
dataStream
|
||||
) | rpl::start_with_done([=] {
|
||||
// Execute when the producer signals it's finished emitting values.
|
||||
qDebug() << "Stream finished.";
|
||||
}, lifetime);
|
||||
|
||||
// Last use of dataStream, so we move it.
|
||||
std::move(
|
||||
dataStream
|
||||
) | rpl::start_with_next_error_done(
|
||||
[=]\(QString &&value) { /* handle next value */ },
|
||||
[=]\(Error &&error) { /* handle error */ },
|
||||
[=] { /* handle done */ },
|
||||
lifetime);
|
||||
```
|
||||
|
||||
## Transforming Producers
|
||||
|
||||
RPL provides functions to create new producers by transforming existing ones:
|
||||
|
||||
* `rpl::map`: Transforms each value emitted by a producer.
|
||||
```cpp
|
||||
auto ints = /* ... */; // Type: rpl::producer<int>
|
||||
// The pipe operator often handles the move implicitly for chained transformations.
|
||||
auto strings = std::move(
|
||||
ints // Explicit move is safer
|
||||
) | rpl::map([](int value) {
|
||||
return QString::number(value * 2);
|
||||
}); // Emits strings like "0", "2", "4", ...
|
||||
```
|
||||
|
||||
* `rpl::filter`: Emits only the values from a producer that satisfy a condition.
|
||||
```cpp
|
||||
auto ints = /* ... */; // Type: rpl::producer<int>
|
||||
auto evenInts = std::move(
|
||||
ints // Explicit move is safer
|
||||
) | rpl::filter([](int value) {
|
||||
return (value % 2 == 0);
|
||||
}); // Emits only even numbers.
|
||||
```
|
||||
|
||||
## Combining Producers
|
||||
|
||||
You can combine multiple producers into one:
|
||||
|
||||
* `rpl::combine`: Combines the latest values from multiple producers whenever *any* of them emits a new value. Requires all producers to have emitted at least one value initially.
|
||||
While it produces a `std::tuple`, subsequent operators like `map`, `filter`, and `start_with_next` can automatically unpack this tuple into separate lambda arguments.
|
||||
```cpp
|
||||
auto countProducer = rpl::single(1); // Type: rpl::producer<int>
|
||||
auto textProducer = rpl::single(u"hello"_q); // Type: rpl::producer<QString>
|
||||
rpl::lifetime lifetime;
|
||||
|
||||
// rpl::combine takes producers by const-ref internally and duplicates,
|
||||
// so move/duplicate is usually not strictly needed here unless you
|
||||
// want to signal intent or manage the lifetime of p1/p2 explicitly.
|
||||
auto combined = rpl::combine(
|
||||
countProducer, // or rpl::duplicate(countProducer)
|
||||
textProducer // or rpl::duplicate(textProducer)
|
||||
);
|
||||
|
||||
// Starting the combined producer consumes it.
|
||||
// The lambda receives unpacked arguments, not the tuple itself.
|
||||
std::move(
|
||||
combined
|
||||
) | rpl::start_with_next([=]\(int count, const QString &text) {
|
||||
// No need for std::get<0>(latest), etc.
|
||||
qDebug() << "Combined: Count=" << count << ", Text=" << text;
|
||||
}, lifetime);
|
||||
|
||||
// This also works with map, filter, etc.
|
||||
std::move(
|
||||
combined
|
||||
) | rpl::filter([=]\(int count, const QString &text) {
|
||||
return count > 0 && !text.isEmpty();
|
||||
}) | rpl::map([=]\(int count, const QString &text) {
|
||||
return text.repeated(count);
|
||||
}) | rpl::start_with_next([=]\(const QString &result) {
|
||||
qDebug() << "Mapped & Filtered: " << result;
|
||||
}, lifetime);
|
||||
```
|
||||
|
||||
* `rpl::merge`: Merges the output of multiple producers of the *same type* into a single producer. It emits a value whenever *any* of the source producers emits a value.
|
||||
```cpp
|
||||
auto sourceA = /* ... */; // Type: rpl::producer<QString>
|
||||
auto sourceB = /* ... */; // Type: rpl::producer<QString>
|
||||
|
||||
// rpl::merge also duplicates internally.
|
||||
auto merged = rpl::merge(sourceA, sourceB);
|
||||
|
||||
// Starting the merged producer consumes it.
|
||||
std::move(
|
||||
merged
|
||||
) | rpl::start_with_next([=]\(QString &&value) {
|
||||
// Receives values from either sourceA or sourceB as they arrive.
|
||||
qDebug() << "Merged value: " << value;
|
||||
}, lifetime);
|
||||
```
|
||||
|
||||
## Key Concepts Summary
|
||||
|
||||
* Use `rpl::producer<Type, Error>` to represent streams of values.
|
||||
* Manage subscription duration using `rpl::lifetime`.
|
||||
* Pass `rpl::lifetime` to `rpl::start_...` methods.
|
||||
* If `rpl::lifetime` is not passed, **store the returned lifetime** to keep the subscription active.
|
||||
* Use operators like `| rpl::map`, `| rpl::filter` to transform streams.
|
||||
* Use `rpl::combine` or `rpl::merge` to combine streams.
|
||||
* When starting a chain (`std::move(producer) | rpl::map(...)`), explicitly move the initial producer.
|
||||
* These functions typically duplicate their input producers internally.
|
||||
* Starting a pipeline consumes the producer; use `
|
||||
@@ -0,0 +1,154 @@
|
||||
---
|
||||
description: For tasks requiring working with user facing UI components.
|
||||
globs:
|
||||
alwaysApply: false
|
||||
---
|
||||
# Telegram Desktop UI Styling
|
||||
|
||||
## Style Definition Files
|
||||
|
||||
UI element styles (colors, fonts, paddings, margins, icons, etc.) are defined in `.style` files using a custom syntax. These files are located alongside the C++ source files they correspond to within specific UI component directories (e.g., `Telegram/SourceFiles/ui/chat/chat.style`).
|
||||
|
||||
Definitions from other `.style` files can be included using the `using` directive at the top of the file:
|
||||
```style
|
||||
using "ui/basic.style";
|
||||
using "ui/widgets/widgets.style";
|
||||
```
|
||||
|
||||
The central definition of named colors happens in `Telegram/SourceFiles/ui/colors.palette`. This file allows for theme generation and loading colors from various sources.
|
||||
|
||||
### Syntax Overview
|
||||
|
||||
1. **Built-in Types:** The syntax recognizes several base types inferred from the value assigned:
|
||||
* `int`: Integer numbers (e.g., `lineHeight: 20;`)
|
||||
* `bool`: Boolean values (e.g., `useShadow: true;`)
|
||||
* `pixels`: Pixel values, ending with `px` (e.g., `borderWidth: 1px;`). Generated as `int` in C++.
|
||||
* `color`: Named colors defined in `colors.palette` (e.g., `background: windowBg;`)
|
||||
* `icon`: Defined inline using a specific syntax (see below). Generates `style::icon`.
|
||||
* `margins`: Four pixel values for margins or padding. Requires `margins(top, right, bottom, left)` syntax (e.g., `margin: margins(10px, 5px, 10px, 5px);` or `padding: margins(8px, 8px, 8px, 8px);`). Generates `style::margins` (an alias for `QMargins`).
|
||||
* `size`: Two pixel values for width and height (e.g., `iconSize: size(16px, 16px);`). Generates `style::size`.
|
||||
* `point`: Two pixel values for x and y coordinates (e.g., `textPos: point(5px, 2px);`). Generates `style::point`.
|
||||
* `align`: Alignment keywords (e.g., `textAlign: align(center);` or `iconAlign: align(left);`). Generates `style::align`.
|
||||
* `font`: Font definitions (e.g., `font: font(14px semibold);`). Generates `style::font`.
|
||||
* `double`: Floating point numbers (e.g., `disabledOpacity: 0.5;`)
|
||||
|
||||
*Note on Borders:* Borders are typically defined using multiple fields like `border: pixels;` (for width) and `borderFg: color;` (for color), rather than a single CSS-like property.
|
||||
|
||||
2. **Structure Definition:** You can define complex data structures directly within the `.style` file:
|
||||
```style
|
||||
MyButtonStyle { // Defines a structure named 'MyButtonStyle'
|
||||
textPadding: margins; // Field 'textPadding' expects margins type
|
||||
icon: icon; // Field 'icon' of type icon
|
||||
height: pixels; // Field 'height' of type pixels
|
||||
}
|
||||
```
|
||||
This generates a `struct MyButtonStyle { ... };` inside the `namespace style`. Fields will have corresponding C++ types (`style::margins`, `style::icon`, `int`).
|
||||
|
||||
3. **Variable Definition & Inheritance:** Variables are defined using `name: value;` or `groupName { ... }`. They can be of built-in types or custom structures. Structures can be initialized inline or inherit from existing variables.
|
||||
|
||||
**Icon Definition Syntax:** Icons are defined inline using the `icon{...}` syntax. The generator probes for `.svg` files or `.png` files (including `@2x`, `@3x` variants) based on the provided path stem.
|
||||
```style
|
||||
// Single-part icon definition:
|
||||
myIconSearch: icon{{ "gui/icons/search", iconColor }};
|
||||
// Multi-part icon definition (layers drawn bottom-up):
|
||||
myComplexIcon: icon{
|
||||
{ "gui/icons/background", iconBgColor },
|
||||
{ "gui/icons/foreground", iconFgColor }
|
||||
};
|
||||
// Icon with path modifiers (PNG only for flips, SVG only for size):
|
||||
myFlippedIcon: icon{{ "gui/icons/arrow-flip_horizontal", arrowColor }};
|
||||
myResizedIcon: icon{{ "gui/icons/logo-128x128", logoColor }}; // Forces 128x128 for SVG
|
||||
```
|
||||
|
||||
**Other Variable Examples:**
|
||||
```style
|
||||
// Simple variables
|
||||
buttonHeight: 30px;
|
||||
activeButtonColor: buttonBgActive; // Named color from colors.palette
|
||||
|
||||
// Variable of a custom structure type, initialized inline
|
||||
defaultButton: MyButtonStyle {
|
||||
textPadding: margins(10px, 15px, 10px, 15px); // Use margins(...) syntax
|
||||
icon: myIconSearch; // Assign the previously defined icon variable
|
||||
height: buttonHeight; // Reference another variable
|
||||
}
|
||||
|
||||
// Another variable inheriting from 'defaultButton' and overriding/adding fields
|
||||
primaryButton: MyButtonStyle(defaultButton) {
|
||||
icon: myComplexIcon; // Override icon with the multi-part one
|
||||
backgroundColor: activeButtonColor; // Add a field not in MyButtonStyle definition
|
||||
}
|
||||
|
||||
// Style group (often used for specific UI elements)
|
||||
chatInput { // Example using separate border properties and explicit padding
|
||||
border: 1px; // Border width
|
||||
borderFg: defaultInputFieldBorder; // Border color (named color)
|
||||
padding: margins(5px, 10px, 5px, 10px); // Use margins(...) syntax for padding field
|
||||
backgroundColor: defaultChatBg; // Background color
|
||||
}
|
||||
```
|
||||
|
||||
## Code Generation
|
||||
|
||||
A code generation tool processes these `.style` files and `colors.palette` to create C++ objects.
|
||||
- The `using` directives resolve dependencies between `.style` files.
|
||||
- Custom structure definitions (like `MyButtonStyle`) generate corresponding `struct MyButtonStyle { ... };` within the `namespace style`.
|
||||
- Style variables/groups (like `defaultButton`, `primaryButton`, `chatInput`) are generated as objects/structs within the `st` namespace (e.g., `st::defaultButton`, `st::primaryButton`, `st::chatInput`). These generated structs contain members corresponding to the fields defined in the `.style` file.
|
||||
- Color objects are generated into the `st` namespace as well, based on their names in `colors.palette` (e.g., `st::windowBg`, `st::buttonBgActive`).
|
||||
- The generated header files for styles are placed in the `Telegram/SourceFiles/styles/` directory with a `style_` prefix (e.g., `styles/style_widgets.h` for `ui/widgets/widgets.style`). You include them like `#include "styles/style_widgets.h"`.
|
||||
|
||||
Generated C++ types correspond to the `.style` types: `style::color`, `style::font`, `style::margins` (used for both `margin:` and `padding:` fields), `style::icon`, `style::size`, `style::point`, `style::align`, and `int` or `bool` for simple types.
|
||||
|
||||
## Style Usage in Code
|
||||
|
||||
Styles are applied in C++ code by referencing the generated `st::...` objects and their members.
|
||||
|
||||
```cpp
|
||||
// Example: Including the generated style header
|
||||
#include "styles/style_widgets.h" // For styles defined in ui/widgets/widgets.style
|
||||
|
||||
// ... inside some UI class code ...
|
||||
|
||||
// Accessing members of a generated style struct
|
||||
int height = st::primaryButton.height; // Accessing the 'height' field (pixels -> int)
|
||||
const style::icon &icon = st::primaryButton.icon; // Accessing the 'icon' field (st::myComplexIcon)
|
||||
style::margins padding = st::primaryButton.textPadding; // Accessing 'textPadding'
|
||||
style::color bgColor = st::primaryButton.backgroundColor; // Accessing the color (st::activeButtonColor)
|
||||
|
||||
// Applying styles (conceptual examples)
|
||||
myButton->setIcon(st::primaryButton.icon);
|
||||
myButton->setHeight(st::primaryButton.height);
|
||||
myButton->setPadding(st::primaryButton.textPadding);
|
||||
myButton->setBackgroundColor(st::primaryButton.backgroundColor);
|
||||
|
||||
// Using styles directly in painting
|
||||
void MyWidget::paintEvent(QPaintEvent *e) {
|
||||
Painter p(this);
|
||||
p.fillRect(rect(), st::chatInput.backgroundColor); // Use color from chatInput style
|
||||
|
||||
// Border painting requires width and color
|
||||
int borderWidth = st::chatInput.border; // Access border width (pixels -> int)
|
||||
style::color borderColor = st::chatInput.borderFg; // Access border color
|
||||
if (borderWidth > 0) {
|
||||
p.setPen(QPen(borderColor, borderWidth));
|
||||
// Adjust rect for pen width if needed before drawing
|
||||
p.drawRect(rect().adjusted(borderWidth / 2, borderWidth / 2, -borderWidth / 2, -borderWidth / 2));
|
||||
}
|
||||
|
||||
// Access padding (style::margins)
|
||||
style::margins inputPadding = st::chatInput.padding;
|
||||
// ... use inputPadding.top(), inputPadding.left() etc. for content layout ...
|
||||
}
|
||||
```
|
||||
|
||||
**Key Points:**
|
||||
|
||||
* Styles are defined in `.style` files next to their corresponding C++ source files.
|
||||
* `using "path/to/other.style";` includes definitions from other style files.
|
||||
* Named colors are defined centrally in `ui/colors.palette`.
|
||||
* `.style` syntax supports built-in types (like `pixels`, `color`, `margins`, `point`, `size`, `align`, `font`, `double`), custom structure definitions (`Name { field: type; ... }`), variable definitions (`name: value;`), and inheritance (`child: Name(parent) { ... }`).
|
||||
* Values must match the expected type (e.g., fields declared as `margins` type, like `margin:` or `padding:`, require `margins(...)` syntax). Borders are typically set via separate `border: pixels;` and `borderFg: color;` fields.
|
||||
* Icons are defined inline using `name: icon{{ "path_stem", color }};` or `name: icon{ { "path1", c1 }, ... };` syntax, with optional path modifiers.
|
||||
* Code generation creates `struct` definitions in the `style` namespace for custom types and objects/structs in the `st` namespace for defined variables/groups.
|
||||
* Generated headers are in `styles/` with a `style_` prefix and must be included.
|
||||
* Access style properties via the generated `st::` objects (e.g., `st::primaryButton.height`, `st::chatInput.backgroundColor`).
|
||||
@@ -0,0 +1,2 @@
|
||||
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
|
||||
Telegram/ThirdParty/
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "CentOS",
|
||||
"image": "tdesktop:centos_env",
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
"C_Cpp.intelliSenseEngine": "disabled",
|
||||
"cmake.generator": "Ninja Multi-Config",
|
||||
"cmake.buildDirectory": "${workspaceFolder}/out",
|
||||
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json"
|
||||
},
|
||||
"extensions": [
|
||||
"ms-vscode.cpptools-extension-pack",
|
||||
"llvm-vs-code-extensions.vscode-clangd",
|
||||
"TheQtCompany.qt",
|
||||
"ms-python.python",
|
||||
"ms-azuretools.vscode-docker",
|
||||
"eamodio.gitlens"
|
||||
]
|
||||
}
|
||||
},
|
||||
"capAdd": [
|
||||
"SYS_PTRACE"
|
||||
],
|
||||
"securityOpt": [
|
||||
"seccomp=unconfined"
|
||||
],
|
||||
"workspaceMount": "source=${localWorkspaceFolder},target=/usr/src/tdesktop,type=bind,consistency=cached",
|
||||
"workspaceFolder": "/usr/src/tdesktop"
|
||||
}
|
||||
@@ -5,7 +5,7 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for reporting issues of Telegram Desktop!
|
||||
Thanks for reporting issues of AyuGram Desktop!
|
||||
|
||||
To make it easier for us to help you please enter detailed information below.
|
||||
- type: textarea
|
||||
@@ -39,12 +39,9 @@ body:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Version of Telegram Desktop
|
||||
label: Version of AyuGram Desktop
|
||||
description: >
|
||||
Please note we don't support versions from Linux distro repositories.
|
||||
If you need support for these versions, **please contact your distro maintainer**
|
||||
or your distro bugtracker.
|
||||
**Don't use 'latest'**, specify actual version, **that's a reason to close your issue**.
|
||||
**Don't use 'latest'**, specify actual version.
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
@@ -52,11 +49,7 @@ body:
|
||||
label: Installation source
|
||||
multiple: false
|
||||
options:
|
||||
- Static binary from official website
|
||||
- Microsoft Store
|
||||
- Mac App Store
|
||||
- Flatpak
|
||||
- Snap
|
||||
- Binary from GitHub / official Telegram source
|
||||
- Other (unofficial) source
|
||||
validations:
|
||||
required: true
|
||||
@@ -65,9 +58,7 @@ body:
|
||||
label: Crash ID
|
||||
description: >
|
||||
If you're reporting a crash, please enter the crash ID from the crash reporter
|
||||
opening on the next launch after crash. **You have to enable beta versions
|
||||
installation in Settings -> Advanced for the reporter to appear.**
|
||||
You don't have to wait for a beta version to arrive.
|
||||
opening on the next launch after crash.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Logs
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
name: Docker.
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- '.github/workflows/docker.yml'
|
||||
- 'Telegram/build/docker/centos_env/**'
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
name: Ubuntu
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref_name == github.event.repository.default_branch
|
||||
|
||||
env:
|
||||
IMAGE_TAG: ghcr.io/${{ github.repository }}/centos_env:latest
|
||||
|
||||
steps:
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: First set up.
|
||||
run: |
|
||||
sudo apt update
|
||||
curl -sSL https://install.python-poetry.org | python3 -
|
||||
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
|
||||
|
||||
- name: Free up some disk space.
|
||||
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
|
||||
with:
|
||||
tool-cache: true
|
||||
|
||||
- name: Docker image build.
|
||||
run: |
|
||||
cd Telegram/build/docker/centos_env
|
||||
poetry install
|
||||
DEBUG= LTO= poetry run gen_dockerfile | DOCKER_BUILDKIT=1 docker build -t $IMAGE_TAG -
|
||||
|
||||
- name: Push the Docker image.
|
||||
run: docker push $IMAGE_TAG
|
||||
@@ -1,124 +0,0 @@
|
||||
name: Linux.
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '**.md'
|
||||
- 'changelog.txt'
|
||||
- 'LEGAL'
|
||||
- 'LICENSE'
|
||||
- '.github/**'
|
||||
- '!.github/workflows/linux.yml'
|
||||
- 'snap/**'
|
||||
- 'Telegram/build/**'
|
||||
- 'Telegram/Resources/uwp/**'
|
||||
- 'Telegram/Resources/winrc/**'
|
||||
- 'Telegram/SourceFiles/platform/win/**'
|
||||
- 'Telegram/SourceFiles/platform/mac/**'
|
||||
- 'Telegram/Telegram/**'
|
||||
- 'Telegram/configure.bat'
|
||||
- 'Telegram/Telegram.plist'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '**.md'
|
||||
- 'changelog.txt'
|
||||
- 'LEGAL'
|
||||
- 'LICENSE'
|
||||
- '.github/**'
|
||||
- '!.github/workflows/linux.yml'
|
||||
- 'snap/**'
|
||||
- 'Telegram/build/**'
|
||||
- 'Telegram/Resources/uwp/**'
|
||||
- 'Telegram/Resources/winrc/**'
|
||||
- 'Telegram/SourceFiles/platform/win/**'
|
||||
- 'Telegram/SourceFiles/platform/mac/**'
|
||||
- 'Telegram/Telegram/**'
|
||||
- 'Telegram/configure.bat'
|
||||
- 'Telegram/Telegram.plist'
|
||||
|
||||
jobs:
|
||||
|
||||
linux:
|
||||
name: Rocky Linux 8
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
defines:
|
||||
- ""
|
||||
- "DESKTOP_APP_DISABLE_X11_INTEGRATION"
|
||||
|
||||
env:
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
|
||||
steps:
|
||||
- name: Get repository name.
|
||||
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
path: ${{ env.REPO_NAME }}
|
||||
|
||||
- name: First set up.
|
||||
run: |
|
||||
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
|
||||
docker pull ghcr.io/$GITHUB_REPOSITORY/centos_env
|
||||
docker tag ghcr.io/$GITHUB_REPOSITORY/centos_env tdesktop:centos_env
|
||||
|
||||
- name: Telegram Desktop build.
|
||||
run: |
|
||||
cd $REPO_NAME
|
||||
|
||||
DEFINE=""
|
||||
if [ -n "${{ matrix.defines }}" ]; then
|
||||
DEFINE="-D ${{ matrix.defines }}=ON"
|
||||
echo Define from matrix: $DEFINE
|
||||
echo "ARTIFACT_NAME=Telegram_${{ matrix.defines }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "ARTIFACT_NAME=Telegram" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
docker run --rm \
|
||||
-v $PWD:/usr/src/tdesktop \
|
||||
-e CONFIG=Debug \
|
||||
tdesktop:centos_env \
|
||||
/usr/src/tdesktop/Telegram/build/docker/centos_env/build.sh \
|
||||
-D CMAKE_C_FLAGS_DEBUG="" \
|
||||
-D CMAKE_CXX_FLAGS_DEBUG="" \
|
||||
-D CMAKE_C_FLAGS="-Werror" \
|
||||
-D CMAKE_CXX_FLAGS="-Werror" \
|
||||
-D CMAKE_EXE_LINKER_FLAGS="-s" \
|
||||
-D TDESKTOP_API_TEST=ON \
|
||||
-D DESKTOP_APP_DISABLE_AUTOUPDATE=OFF \
|
||||
-D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF \
|
||||
$DEFINE
|
||||
|
||||
- name: Check.
|
||||
run: |
|
||||
filePath="$REPO_NAME/out/Debug/Telegram"
|
||||
if test -f "$filePath"; then
|
||||
echo "Build successfully done! :)"
|
||||
|
||||
size=$(stat -c %s "$filePath")
|
||||
echo "File size of ${filePath}: ${size} Bytes."
|
||||
else
|
||||
echo "Build error, output file does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Move artifact.
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
run: |
|
||||
cd $REPO_NAME/out/Debug
|
||||
sudo mkdir artifact
|
||||
sudo mv {Telegram,Updater} artifact/
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: env.UPLOAD_ARTIFACT == 'true'
|
||||
name: Upload artifact.
|
||||
with:
|
||||
name: ${{ env.ARTIFACT_NAME }}
|
||||
path: ${{ env.REPO_NAME }}/out/Debug/artifact/
|
||||
@@ -1,193 +0,0 @@
|
||||
name: Windows.
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '**.md'
|
||||
- 'changelog.txt'
|
||||
- 'LEGAL'
|
||||
- 'LICENSE'
|
||||
- '.github/**'
|
||||
- '!.github/workflows/win.yml'
|
||||
- 'lib/xdg/**'
|
||||
- 'snap/**'
|
||||
- 'Telegram/build/docker/**'
|
||||
- 'Telegram/Resources/uwp/**'
|
||||
- 'Telegram/SourceFiles/platform/linux/**'
|
||||
- 'Telegram/SourceFiles/platform/mac/**'
|
||||
- 'Telegram/Telegram/**'
|
||||
- 'Telegram/configure.sh'
|
||||
- 'Telegram/Telegram.plist'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- '**.md'
|
||||
- 'changelog.txt'
|
||||
- 'LEGAL'
|
||||
- 'LICENSE'
|
||||
- '.github/**'
|
||||
- '!.github/workflows/win.yml'
|
||||
- 'lib/xdg/**'
|
||||
- 'snap/**'
|
||||
- 'Telegram/build/docker/**'
|
||||
- 'Telegram/Resources/uwp/**'
|
||||
- 'Telegram/SourceFiles/platform/linux/**'
|
||||
- 'Telegram/SourceFiles/platform/mac/**'
|
||||
- 'Telegram/Telegram/**'
|
||||
- 'Telegram/configure.sh'
|
||||
- 'Telegram/Telegram.plist'
|
||||
|
||||
jobs:
|
||||
|
||||
windows:
|
||||
name: Windows
|
||||
runs-on: windows-2022
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [Win32, x64]
|
||||
generator: ["", "Ninja Multi-Config"]
|
||||
|
||||
env:
|
||||
UPLOAD_ARTIFACT: "true"
|
||||
ONLY_CACHE: "false"
|
||||
PREPARE_PATH: "Telegram/build/prepare/prepare.py"
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: cmd
|
||||
|
||||
steps:
|
||||
- name: Prepare directories.
|
||||
run: |
|
||||
mkdir %userprofile%\TBuild\Libraries
|
||||
mklink /d %GITHUB_WORKSPACE%\TBuild %userprofile%\TBuild
|
||||
echo TBUILD=%GITHUB_WORKSPACE%\TBuild>>%GITHUB_ENV%
|
||||
|
||||
- name: Get repository name.
|
||||
shell: bash
|
||||
run: echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- uses: ilammy/msvc-dev-cmd@v1.13.0
|
||||
name: Native Tools Command Prompt.
|
||||
with:
|
||||
arch: ${{ matrix.arch }}
|
||||
|
||||
- name: Clone.
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
path: ${{ env.TBUILD }}\${{ env.REPO_NAME }}
|
||||
|
||||
- name: Set up environment paths.
|
||||
shell: bash
|
||||
run: |
|
||||
echo "CACHE_KEY=$(sha256sum $TBUILD/$REPO_NAME/$PREPARE_PATH | awk '{ print $1 }')" >> $GITHUB_ENV
|
||||
|
||||
echo "Configurate git for cherry-picks."
|
||||
git config --global user.email "you@example.com"
|
||||
git config --global user.name "Sample"
|
||||
|
||||
- name: NuGet sources.
|
||||
run: |
|
||||
nuget sources Disable -Name "Microsoft Visual Studio Offline Packages"
|
||||
nuget sources Add -Source https://api.nuget.org/v3/index.json & exit 0
|
||||
|
||||
- name: Libraries cache.
|
||||
id: cache-libs
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.TBUILD }}\Libraries
|
||||
key: ${{ runner.OS }}-${{ matrix.arch }}-libs-${{ env.CACHE_KEY }}
|
||||
restore-keys: ${{ runner.OS }}-${{ matrix.arch }}-libs-
|
||||
|
||||
- name: Libraries.
|
||||
env:
|
||||
GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\'
|
||||
GYP_MSVS_VERSION: 2022
|
||||
run: |
|
||||
cd %TBUILD%
|
||||
%REPO_NAME%\Telegram\build\prepare\win.bat skip-release silent
|
||||
|
||||
- name: Read configuration matrix.
|
||||
shell: bash
|
||||
run: |
|
||||
ARTIFACT_NAME="Telegram"
|
||||
|
||||
ARCH=""
|
||||
if [ -n "${{ matrix.arch }}" ]; then
|
||||
case "${{ matrix.arch }}" in
|
||||
Win32) ARCH="x86";;
|
||||
*) ARCH="${{ matrix.arch }}";;
|
||||
esac
|
||||
echo "Architecture from matrix: $ARCH"
|
||||
ARTIFACT_NAME="${ARTIFACT_NAME}_${{ matrix.arch }}"
|
||||
fi
|
||||
|
||||
GENERATOR=""
|
||||
if [ -n "${{ matrix.generator }}" ]; then
|
||||
GENERATOR="-G \"${{ matrix.generator }}\""
|
||||
echo "Generator from matrix: $GENERATOR"
|
||||
ARTIFACT_NAME="${ARTIFACT_NAME}_${{ matrix.generator }}"
|
||||
fi
|
||||
echo "TDESKTOP_BUILD_GENERATOR=$GENERATOR" >> $GITHUB_ENV
|
||||
|
||||
[ -n "$GENERATOR" ] && ARCH=""
|
||||
echo "TDESKTOP_BUILD_ARCH=$ARCH" >> $GITHUB_ENV
|
||||
|
||||
DEFINE=""
|
||||
if [ -n "${{ matrix.defines }}" ]; then
|
||||
DEFINE="-D ${{ matrix.defines }}=ON"
|
||||
echo "Define from matrix: $DEFINE"
|
||||
ARTIFACT_NAME="${ARTIFACT_NAME}_${{ matrix.defines }}"
|
||||
fi
|
||||
echo "TDESKTOP_BUILD_DEFINE=$DEFINE" >> $GITHUB_ENV
|
||||
|
||||
echo "ARTIFACT_NAME=$ARTIFACT_NAME" >> $GITHUB_ENV
|
||||
|
||||
API="-D TDESKTOP_API_TEST=ON"
|
||||
if [ $GITHUB_REF == 'refs/heads/nightly' ]; then
|
||||
echo "Use the open credentials."
|
||||
API="-D TDESKTOP_API_ID=611335 -D TDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c"
|
||||
fi
|
||||
echo "TDESKTOP_BUILD_API=$API" >> $GITHUB_ENV
|
||||
|
||||
- name: Free up some disk space.
|
||||
run: |
|
||||
cd %TBUILD%
|
||||
del /S Libraries\*.pdb
|
||||
del /S Libraries\*.pch
|
||||
del /S Libraries\*.obj
|
||||
|
||||
- name: Telegram Desktop build.
|
||||
if: env.ONLY_CACHE == 'false'
|
||||
run: |
|
||||
cd %TBUILD%\%REPO_NAME%\Telegram
|
||||
|
||||
call configure.bat ^
|
||||
%TDESKTOP_BUILD_GENERATOR% ^
|
||||
%TDESKTOP_BUILD_ARCH% ^
|
||||
%TDESKTOP_BUILD_API% ^
|
||||
-D CMAKE_C_FLAGS="/WX" ^
|
||||
-D CMAKE_CXX_FLAGS="/WX" ^
|
||||
-D DESKTOP_APP_DISABLE_AUTOUPDATE=OFF ^
|
||||
-D DESKTOP_APP_DISABLE_CRASH_REPORTS=OFF ^
|
||||
-D DESKTOP_APP_NO_PDB=ON ^
|
||||
%TDESKTOP_BUILD_DEFINE%
|
||||
|
||||
cmake --build ..\out --config Debug --parallel
|
||||
|
||||
- name: Move artifact.
|
||||
if: (env.UPLOAD_ARTIFACT == 'true') || (github.ref == 'refs/heads/nightly')
|
||||
run: |
|
||||
set OUT=%TBUILD%\%REPO_NAME%\out\Debug
|
||||
mkdir artifact
|
||||
move %OUT%\Telegram.exe artifact/
|
||||
move %OUT%\Updater.exe artifact/
|
||||
- uses: actions/upload-artifact@v4
|
||||
name: Upload artifact.
|
||||
if: (env.UPLOAD_ARTIFACT == 'true') || (github.ref == 'refs/heads/nightly')
|
||||
with:
|
||||
name: ${{ env.ARTIFACT_NAME }}
|
||||
path: artifact\
|
||||
@@ -19,6 +19,8 @@ Release/
|
||||
ipch/
|
||||
.vs/
|
||||
.vscode/
|
||||
.cache/
|
||||
compile_commands.json
|
||||
|
||||
/Telegram/log.txt
|
||||
/Telegram/data
|
||||
@@ -51,3 +53,6 @@ stage
|
||||
*.*~
|
||||
.idea/
|
||||
cmake-build-debug/
|
||||
|
||||
# Project specific
|
||||
Telegram/SourceFiles/_other/packer_private.h
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
[submodule "Telegram/ThirdParty/libtgvoip"]
|
||||
path = Telegram/ThirdParty/libtgvoip
|
||||
url = https://github.com/telegramdesktop/libtgvoip
|
||||
[submodule "Telegram/ThirdParty/GSL"]
|
||||
path = Telegram/ThirdParty/GSL
|
||||
url = https://github.com/desktop-app/GSL.git
|
||||
url = https://github.com/Microsoft/GSL.git
|
||||
[submodule "Telegram/ThirdParty/xxHash"]
|
||||
path = Telegram/ThirdParty/xxHash
|
||||
url = https://github.com/Cyan4973/xxHash.git
|
||||
@@ -24,7 +21,7 @@
|
||||
url = https://github.com/desktop-app/lib_base.git
|
||||
[submodule "Telegram/codegen"]
|
||||
path = Telegram/codegen
|
||||
url = https://github.com/desktop-app/codegen.git
|
||||
url = https://github.com/AyuGram/codegen.git
|
||||
[submodule "Telegram/lib_ui"]
|
||||
path = Telegram/lib_ui
|
||||
url = https://github.com/AyuGram/lib_ui.git
|
||||
@@ -76,9 +73,6 @@
|
||||
[submodule "Telegram/lib_webview"]
|
||||
path = Telegram/lib_webview
|
||||
url = https://github.com/desktop-app/lib_webview.git
|
||||
[submodule "Telegram/ThirdParty/jemalloc"]
|
||||
path = Telegram/ThirdParty/jemalloc
|
||||
url = https://github.com/jemalloc/jemalloc
|
||||
[submodule "Telegram/ThirdParty/dispatch"]
|
||||
path = Telegram/ThirdParty/dispatch
|
||||
url = https://github.com/apple/swift-corelibs-libdispatch
|
||||
|
||||
@@ -4,15 +4,7 @@
|
||||
# For license and copyright information please follow this link:
|
||||
# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
|
||||
if (APPLE)
|
||||
# target_precompile_headers with COMPILE_LANGUAGE restriction.
|
||||
cmake_minimum_required(VERSION 3.23)
|
||||
else()
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
endif()
|
||||
if (POLICY CMP0149)
|
||||
cmake_policy(SET CMP0149 NEW)
|
||||
endif()
|
||||
cmake_minimum_required(VERSION 3.25...3.31)
|
||||
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
|
||||
@@ -20,19 +12,17 @@ include(cmake/validate_special_target.cmake)
|
||||
include(cmake/version.cmake)
|
||||
desktop_app_parse_version(Telegram/build/version)
|
||||
|
||||
set(project_langs C CXX)
|
||||
if (APPLE)
|
||||
list(APPEND project_langs OBJC OBJCXX)
|
||||
elseif (LINUX)
|
||||
list(APPEND project_langs ASM)
|
||||
endif()
|
||||
|
||||
project(Telegram
|
||||
LANGUAGES ${project_langs}
|
||||
LANGUAGES C CXX
|
||||
VERSION ${desktop_app_version_cmake}
|
||||
DESCRIPTION "AyuGram Desktop"
|
||||
HOMEPAGE_URL "https://ayugram.one"
|
||||
)
|
||||
|
||||
if (APPLE)
|
||||
enable_language(OBJC OBJCXX)
|
||||
endif()
|
||||
|
||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Telegram)
|
||||
|
||||
get_filename_component(third_party_loc "Telegram/ThirdParty" REALPATH)
|
||||
@@ -47,9 +37,7 @@ include(cmake/variables.cmake)
|
||||
include(cmake/nice_target_sources.cmake)
|
||||
include(cmake/target_compile_options_if_exists.cmake)
|
||||
include(cmake/target_link_frameworks.cmake)
|
||||
include(cmake/target_link_optional_libraries.cmake)
|
||||
include(cmake/target_link_options_if_exists.cmake)
|
||||
include(cmake/target_link_static_libraries.cmake)
|
||||
include(cmake/init_target.cmake)
|
||||
include(cmake/generate_target.cmake)
|
||||
include(cmake/nuget.cmake)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
This file is part of Telegram Desktop,
|
||||
the official desktop application for the Telegram messaging service.
|
||||
|
||||
Copyright (c) 2014-2024 The Telegram Desktop Authors.
|
||||
Copyright (c) 2014-2025 The Telegram Desktop Authors.
|
||||
|
||||
Telegram Desktop is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
# AyuGram
|
||||
|
||||
 
|
||||
|
||||
[ [English](README.md) | Русский ]
|
||||
|
||||
## Функции и Фишки
|
||||
|
||||
- Полный режим призрака (настраиваемый)
|
||||
- История удалений и изменений сообщений
|
||||
- Кастомизация шрифта
|
||||
- Режим Стримера
|
||||
- Локальный телеграм премиум
|
||||
- Превью медиа и быстрая реакция при сильном нажатии на тачпад (macOS)
|
||||
- Улучшенный вид
|
||||
|
||||
И многое другое. Посмотрите нашу [Документацию](https://docs.ayugram.one/desktop/) для более подробной информации.
|
||||
|
||||
<h3>
|
||||
<details>
|
||||
<summary>Скриншоты настроек</summary>
|
||||
<img src='.github/demos/demo1.png' width='268'>
|
||||
<img src='.github/demos/demo2.png' width='268'>
|
||||
<img src='.github/demos/demo3.png' width='268'>
|
||||
<img src='.github/demos/demo4.png' width='268'>
|
||||
</details>
|
||||
</h3>
|
||||
|
||||
## Установка
|
||||
|
||||
### Windows
|
||||
|
||||
#### Официальная версия
|
||||
|
||||
Вы можете скачать готовый бинарный файл со вкладки [Releases](https://github.com/AyuGram/AyuGramDesktop/releases) или из
|
||||
[Телеграм канала](https://t.me/AyuGramReleases).
|
||||
|
||||
#### Winget
|
||||
|
||||
```bash
|
||||
winget install RadolynLabs.AyuGramDesktop
|
||||
```
|
||||
|
||||
#### Scoop
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install ayugram
|
||||
```
|
||||
|
||||
#### Сборка вручную
|
||||
|
||||
Следуйте [официальному руководству](https://github.com/AyuGram/AyuGramDesktop/blob/dev/docs/building-win-x64.md), если
|
||||
вы хотите собрать AyuGram сами.
|
||||
|
||||
### macOS
|
||||
|
||||
#### Официальная версия
|
||||
|
||||
Вы можете скачать подписанный пакет со вкладки [Releases](https://github.com/AyuGram/AyuGramDesktop/releases).
|
||||
|
||||
#### Homebrew
|
||||
|
||||
```bash
|
||||
brew install --cask ayugram
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
#### Из исходников (рекомендованный способ)
|
||||
|
||||
Установите `ayugram-desktop` из [AUR](https://aur.archlinux.org/packages/ayugram-desktop).
|
||||
|
||||
#### Готовые бинарники
|
||||
|
||||
Установите `ayugram-desktop-bin` из [AUR](https://aur.archlinux.org/packages/ayugram-desktop-bin).
|
||||
|
||||
Примечание: данный пакет собирается не нами.
|
||||
|
||||
### NixOS
|
||||
|
||||
Попробуйте [этот репозиторий](https://github.com/ayugram-port/ayugram-desktop).
|
||||
|
||||
### ALT Linux
|
||||
|
||||
[Sisyphus](https://packages.altlinux.org/en/sisyphus/srpms/ayugram-desktop/)
|
||||
|
||||
### EPM
|
||||
|
||||
`epm play ayugram`
|
||||
|
||||
### Любой другой Линукс дистрибутив
|
||||
|
||||
Следуйте [официальному руководству](https://github.com/AyuGram/AyuGramDesktop/blob/dev/docs/building-linux.md).
|
||||
|
||||
### Примечания для Windows
|
||||
|
||||
Убедитесь что у вас присутствуют эти зависимости:
|
||||
|
||||
- C++ MFC latest (x86 & x64)
|
||||
- C++ ATL latest (x86 & x64)
|
||||
- последний Windows 11 SDK
|
||||
|
||||
## Пожертвования
|
||||
|
||||
Вам нравится использовать **AyuGram**? Оставьте нам чаевые!
|
||||
|
||||
[Здесь доступные варианты.](https://docs.ayugram.one/donate/)
|
||||
|
||||
## Использованные материалы
|
||||
|
||||
### Телеграм клиенты
|
||||
|
||||
- [Telegram Desktop](https://github.com/telegramdesktop/tdesktop)
|
||||
- [Kotatogram](https://github.com/kotatogram/kotatogram-desktop)
|
||||
- [64Gram](https://github.com/TDesktop-x64/tdesktop)
|
||||
- [Forkgram](https://github.com/forkgram/tdesktop)
|
||||
|
||||
### Использованные библиотеки
|
||||
|
||||
- [JSON for Modern C++](https://github.com/nlohmann/json)
|
||||
- [SQLite](https://github.com/sqlite/sqlite)
|
||||
- [sqlite_orm](https://github.com/fnc12/sqlite_orm)
|
||||
|
||||
### Иконки
|
||||
|
||||
- [Solar Icon Set](https://www.figma.com/community/file/1166831539721848736)
|
||||
|
||||
### Боты
|
||||
|
||||
- [TelegramDB](https://t.me/tgdatabase) для получения юзернейма по ID
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
 
|
||||
|
||||
[ English | [Русский](README-RU.md) ]
|
||||
|
||||
## Features
|
||||
|
||||
- Full ghost mode (flexible)
|
||||
@@ -10,16 +12,20 @@
|
||||
- Font customization
|
||||
- Streamer mode
|
||||
- Local Telegram Premium
|
||||
- Media preview & quick reaction on force click (macOS)
|
||||
- Enhanced appearance
|
||||
|
||||
And many more. Check out our [Documentation](https://docs.ayugram.one/desktop/).
|
||||
|
||||
## Preferences screenshots
|
||||
|
||||
<img src='.github/demos/demo1.png' width='268'>
|
||||
<img src='.github/demos/demo2.png' width='268'>
|
||||
<img src='.github/demos/demo3.png' width='268'>
|
||||
<img src='.github/demos/demo4.png' width='268'>
|
||||
<h3>
|
||||
<details>
|
||||
<summary>Preferences screenshots</summary>
|
||||
<img src='.github/demos/demo1.png' width='268'>
|
||||
<img src='.github/demos/demo2.png' width='268'>
|
||||
<img src='.github/demos/demo3.png' width='268'>
|
||||
<img src='.github/demos/demo4.png' width='268'>
|
||||
</details>
|
||||
</h3>
|
||||
|
||||
## Downloads
|
||||
|
||||
@@ -28,7 +34,7 @@ And many more. Check out our [Documentation](https://docs.ayugram.one/desktop/).
|
||||
#### Official
|
||||
|
||||
You can download prebuilt Windows binary from [Releases tab](https://github.com/AyuGram/AyuGramDesktop/releases) or from
|
||||
the [Telegram topic](https://t.me/ayugramchat/12788).
|
||||
the [Telegram channel](https://t.me/AyuGramReleases).
|
||||
|
||||
#### Winget
|
||||
|
||||
@@ -48,13 +54,41 @@ scoop install ayugram
|
||||
Follow [official guide](https://github.com/AyuGram/AyuGramDesktop/blob/dev/docs/building-win-x64.md) if you want to
|
||||
build by yourself.
|
||||
|
||||
### macOS
|
||||
|
||||
#### Official
|
||||
|
||||
You can download prebuilt macOS package from [Releases tab](https://github.com/AyuGram/AyuGramDesktop/releases).
|
||||
|
||||
#### Homebrew
|
||||
|
||||
```bash
|
||||
brew install --cask ayugram
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
You can install `ayugram-desktop` or `ayugram-desktop-git` from [AUR](https://aur.archlinux.org/packages?O=0&K=ayugram).
|
||||
#### From source (recommended)
|
||||
|
||||
Install `ayugram-desktop` from [AUR](https://aur.archlinux.org/packages/ayugram-desktop).
|
||||
|
||||
#### Prebuilt binaries
|
||||
|
||||
Install `ayugram-desktop-bin` from [AUR](https://aur.archlinux.org/packages/ayugram-desktop-bin).
|
||||
|
||||
Note: these binaries aren't officially maintained by us.
|
||||
|
||||
### NixOS
|
||||
|
||||
See [this repository](https://github.com/kaeeraa/ayugram-desktop) for installation manual.
|
||||
See [this repository](https://github.com/ayugram-port/ayugram-desktop) for installation manual.
|
||||
|
||||
### ALT Linux
|
||||
|
||||
[Sisyphus](https://packages.altlinux.org/en/sisyphus/srpms/ayugram-desktop/)
|
||||
|
||||
### EPM
|
||||
|
||||
`epm play ayugram`
|
||||
|
||||
### Any other Linux distro
|
||||
|
||||
@@ -92,3 +126,7 @@ Enjoy using **AyuGram**? Consider sending us a tip!
|
||||
### Icons
|
||||
|
||||
- [Solar Icon Set](https://www.figma.com/community/file/1166831539721848736)
|
||||
|
||||
### Bots
|
||||
|
||||
- [TelegramDB](https://t.me/tgdatabase) for username lookup by ID
|
||||
|
||||
@@ -26,7 +26,6 @@ get_filename_component(res_loc Resources REALPATH)
|
||||
include(cmake/telegram_options.cmake)
|
||||
include(cmake/lib_ffmpeg.cmake)
|
||||
include(cmake/lib_stripe.cmake)
|
||||
include(cmake/lib_tgvoip.cmake)
|
||||
include(cmake/lib_tgcalls.cmake)
|
||||
include(cmake/lib_prisma.cmake)
|
||||
include(cmake/td_export.cmake)
|
||||
@@ -34,26 +33,27 @@ include(cmake/td_iv.cmake)
|
||||
include(cmake/td_lang.cmake)
|
||||
include(cmake/td_mtproto.cmake)
|
||||
include(cmake/td_scheme.cmake)
|
||||
include(cmake/td_tde2e.cmake)
|
||||
include(cmake/td_ui.cmake)
|
||||
include(cmake/generate_appdata_changelog.cmake)
|
||||
|
||||
if (DESKTOP_APP_TEST_APPS)
|
||||
include(cmake/tests.cmake)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
include(cmake/generate_midl.cmake)
|
||||
generate_midl(Telegram ${src_loc}
|
||||
platform/win/windows_quiethours.idl
|
||||
platform/win/windows_toastactivator.idl
|
||||
)
|
||||
|
||||
nuget_add_winrt(Telegram)
|
||||
endif()
|
||||
|
||||
set_target_properties(Telegram PROPERTIES AUTOMOC ON)
|
||||
|
||||
target_link_libraries(Telegram
|
||||
PRIVATE
|
||||
tdesktop::lib_tgcalls_legacy
|
||||
tdesktop::lib_tgcalls
|
||||
tdesktop::lib_tgvoip
|
||||
|
||||
# Order in this list defines the order of include paths in command line.
|
||||
# We need to place desktop-app::external_minizip this early to have its
|
||||
@@ -67,6 +67,7 @@ PRIVATE
|
||||
tdesktop::td_lang
|
||||
tdesktop::td_mtproto
|
||||
tdesktop::td_scheme
|
||||
tdesktop::td_tde2e
|
||||
tdesktop::td_ui
|
||||
desktop-app::lib_webrtc
|
||||
desktop-app::lib_base
|
||||
@@ -114,6 +115,8 @@ set(ayugram_files
|
||||
ayu/utils/telegram_helpers.h
|
||||
ayu/utils/windows_utils.cpp
|
||||
ayu/utils/windows_utils.h
|
||||
ayu/utils/rc_manager.cpp
|
||||
ayu/utils/rc_manager.h
|
||||
ayu/utils/taptic_engine/taptic_engine.cpp
|
||||
ayu/utils/taptic_engine/taptic_engine.h
|
||||
ayu/utils/taptic_engine/platform/taptic_engine_dummy.cpp
|
||||
@@ -124,24 +127,20 @@ set(ayugram_files
|
||||
ayu/ui/ayu_logo.h
|
||||
ayu/ui/utils/ayu_profile_values.cpp
|
||||
ayu/ui/utils/ayu_profile_values.h
|
||||
ayu/ui/settings/icon_picker.cpp
|
||||
ayu/ui/settings/icon_picker.h
|
||||
ayu/ui/settings/settings_ayu.cpp
|
||||
ayu/ui/settings/settings_ayu.h
|
||||
ayu/ui/context_menu/context_menu.cpp
|
||||
ayu/ui/context_menu/context_menu.h
|
||||
ayu/ui/context_menu/menu_item_subtext.cpp
|
||||
ayu/ui/context_menu/menu_item_subtext.h
|
||||
ayu/ui/sections/edited/edited_log_inner.cpp
|
||||
ayu/ui/sections/edited/edited_log_inner.h
|
||||
ayu/ui/sections/edited/edited_log_item.cpp
|
||||
ayu/ui/sections/edited/edited_log_item.h
|
||||
ayu/ui/sections/edited/edited_log_section.cpp
|
||||
ayu/ui/sections/edited/edited_log_section.h
|
||||
ayu/ui/boxes/edit_deleted_mark.cpp
|
||||
ayu/ui/boxes/edit_deleted_mark.h
|
||||
ayu/ui/boxes/edit_edited_mark.cpp
|
||||
ayu/ui/boxes/edit_edited_mark.h
|
||||
ayu/ui/message_history/history_inner.cpp
|
||||
ayu/ui/message_history/history_inner.h
|
||||
ayu/ui/message_history/history_item.cpp
|
||||
ayu/ui/message_history/history_item.h
|
||||
ayu/ui/message_history/history_section.cpp
|
||||
ayu/ui/message_history/history_section.h
|
||||
ayu/ui/boxes/edit_mark_box.cpp
|
||||
ayu/ui/boxes/edit_mark_box.h
|
||||
ayu/ui/boxes/font_selector.cpp
|
||||
ayu/ui/boxes/font_selector.h
|
||||
ayu/ui/boxes/theme_selector_box.cpp
|
||||
@@ -150,6 +149,8 @@ set(ayugram_files
|
||||
ayu/ui/boxes/message_shot_box.h
|
||||
ayu/ui/components/image_view.cpp
|
||||
ayu/ui/components/image_view.h
|
||||
ayu/ui/components/icon_picker.cpp
|
||||
ayu/ui/components/icon_picker.h
|
||||
ayu/libs/json.hpp
|
||||
ayu/libs/json_ext.hpp
|
||||
ayu/libs/sqlite/sqlite3.c
|
||||
@@ -165,6 +166,10 @@ set(ayugram_files
|
||||
ayu/features/streamer_mode/streamer_mode.h
|
||||
ayu/features/messageshot/message_shot.cpp
|
||||
ayu/features/messageshot/message_shot.h
|
||||
ayu/features/forward/ayu_forward.cpp
|
||||
ayu/features/forward/ayu_forward.h
|
||||
ayu/features/forward/ayu_sync.cpp
|
||||
ayu/features/forward/ayu_sync.h
|
||||
ayu/data/messages_storage.cpp
|
||||
ayu/data/messages_storage.h
|
||||
ayu/data/entities.h
|
||||
@@ -188,6 +193,8 @@ PRIVATE
|
||||
api/api_bot.h
|
||||
api/api_chat_filters.cpp
|
||||
api/api_chat_filters.h
|
||||
api/api_chat_filters_remove_manager.cpp
|
||||
api/api_chat_filters_remove_manager.h
|
||||
api/api_chat_invite.cpp
|
||||
api/api_chat_invite.h
|
||||
api/api_chat_links.cpp
|
||||
@@ -202,6 +209,8 @@ PRIVATE
|
||||
api/api_confirm_phone.h
|
||||
api/api_credits.cpp
|
||||
api/api_credits.h
|
||||
api/api_credits_history_entry.cpp
|
||||
api/api_credits_history_entry.h
|
||||
api/api_earn.cpp
|
||||
api/api_earn.h
|
||||
api/api_editing.cpp
|
||||
@@ -223,6 +232,8 @@ PRIVATE
|
||||
api/api_peer_colors.h
|
||||
api/api_peer_photo.cpp
|
||||
api/api_peer_photo.h
|
||||
api/api_peer_search.cpp
|
||||
api/api_peer_search.h
|
||||
api/api_polls.cpp
|
||||
api/api_polls.h
|
||||
api/api_premium.cpp
|
||||
@@ -249,8 +260,12 @@ PRIVATE
|
||||
api/api_statistics_data_deserialize.h
|
||||
api/api_statistics_sender.cpp
|
||||
api/api_statistics_sender.h
|
||||
api/api_suggest_post.cpp
|
||||
api/api_suggest_post.h
|
||||
api/api_text_entities.cpp
|
||||
api/api_text_entities.h
|
||||
api/api_todo_lists.cpp
|
||||
api/api_todo_lists.h
|
||||
api/api_toggling_media.cpp
|
||||
api/api_toggling_media.h
|
||||
api/api_transcribes.cpp
|
||||
@@ -287,8 +302,8 @@ PRIVATE
|
||||
boxes/peers/edit_contact_box.h
|
||||
boxes/peers/edit_forum_topic_box.cpp
|
||||
boxes/peers/edit_forum_topic_box.h
|
||||
boxes/peers/edit_linked_chat_box.cpp
|
||||
boxes/peers/edit_linked_chat_box.h
|
||||
boxes/peers/edit_discussion_link_box.cpp
|
||||
boxes/peers/edit_discussion_link_box.h
|
||||
boxes/peers/edit_members_visible.cpp
|
||||
boxes/peers/edit_members_visible.h
|
||||
boxes/peers/edit_participant_box.cpp
|
||||
@@ -320,6 +335,8 @@ PRIVATE
|
||||
boxes/peers/prepare_short_info_box.h
|
||||
boxes/peers/replace_boost_box.cpp
|
||||
boxes/peers/replace_boost_box.h
|
||||
boxes/peers/verify_peers_box.cpp
|
||||
boxes/peers/verify_peers_box.h
|
||||
boxes/about_box.cpp
|
||||
boxes/about_box.h
|
||||
boxes/about_sponsored_box.cpp
|
||||
@@ -352,6 +369,8 @@ PRIVATE
|
||||
boxes/edit_caption_box.h
|
||||
boxes/edit_privacy_box.cpp
|
||||
boxes/edit_privacy_box.h
|
||||
boxes/edit_todo_list_box.cpp
|
||||
boxes/edit_todo_list_box.h
|
||||
boxes/gift_credits_box.cpp
|
||||
boxes/gift_credits_box.h
|
||||
boxes/gift_premium_box.cpp
|
||||
@@ -368,6 +387,8 @@ PRIVATE
|
||||
boxes/peer_list_box.h
|
||||
boxes/peer_list_controllers.cpp
|
||||
boxes/peer_list_controllers.h
|
||||
boxes/peer_list_widgets.cpp
|
||||
boxes/peer_list_widgets.h
|
||||
boxes/peer_lists_box.cpp
|
||||
boxes/peer_lists_box.h
|
||||
boxes/passcode_box.cpp
|
||||
@@ -390,16 +411,20 @@ PRIVATE
|
||||
boxes/self_destruction_box.h
|
||||
boxes/send_credits_box.cpp
|
||||
boxes/send_credits_box.h
|
||||
boxes/send_gif_with_caption_box.cpp
|
||||
boxes/send_gif_with_caption_box.h
|
||||
boxes/send_files_box.cpp
|
||||
boxes/send_files_box.h
|
||||
boxes/sessions_box.cpp
|
||||
boxes/sessions_box.h
|
||||
boxes/share_box.cpp
|
||||
boxes/share_box.h
|
||||
boxes/star_gift_box.cpp
|
||||
boxes/star_gift_box.h
|
||||
boxes/sticker_set_box.cpp
|
||||
boxes/sticker_set_box.h
|
||||
boxes/stickers_box.cpp
|
||||
boxes/stickers_box.h
|
||||
boxes/transfer_gift_box.cpp
|
||||
boxes/transfer_gift_box.h
|
||||
boxes/translate_box.cpp
|
||||
boxes/translate_box.h
|
||||
boxes/url_auth_box.cpp
|
||||
@@ -460,6 +485,8 @@ PRIVATE
|
||||
calls/calls_video_bubble.h
|
||||
calls/calls_video_incoming.cpp
|
||||
calls/calls_video_incoming.h
|
||||
calls/calls_window.cpp
|
||||
calls/calls_window.h
|
||||
chat_helpers/compose/compose_features.h
|
||||
chat_helpers/compose/compose_show.cpp
|
||||
chat_helpers/compose/compose_show.h
|
||||
@@ -509,6 +536,8 @@ PRIVATE
|
||||
chat_helpers/ttl_media_layer_widget.h
|
||||
core/application.cpp
|
||||
core/application.h
|
||||
core/bank_card_click_handler.cpp
|
||||
core/bank_card_click_handler.h
|
||||
core/base_integration.cpp
|
||||
core/base_integration.h
|
||||
core/changelogs.cpp
|
||||
@@ -525,6 +554,7 @@ PRIVATE
|
||||
core/crash_report_window.h
|
||||
core/crash_reports.cpp
|
||||
core/crash_reports.h
|
||||
core/credits_amount.h
|
||||
core/deadlock_detector.h
|
||||
core/file_utilities.cpp
|
||||
core/file_utilities.h
|
||||
@@ -561,8 +591,12 @@ PRIVATE
|
||||
data/components/factchecks.h
|
||||
data/components/location_pickers.cpp
|
||||
data/components/location_pickers.h
|
||||
data/components/promo_suggestions.cpp
|
||||
data/components/promo_suggestions.h
|
||||
data/components/recent_peers.cpp
|
||||
data/components/recent_peers.h
|
||||
data/components/recent_shared_media_gifts.cpp
|
||||
data/components/recent_shared_media_gifts.h
|
||||
data/components/scheduled_messages.cpp
|
||||
data/components/scheduled_messages.h
|
||||
data/components/sponsored_messages.cpp
|
||||
@@ -643,6 +677,8 @@ PRIVATE
|
||||
data/data_lastseen_status.h
|
||||
data/data_location.cpp
|
||||
data/data_location.h
|
||||
data/data_media_preload.cpp
|
||||
data/data_media_preload.h
|
||||
data/data_media_rotation.cpp
|
||||
data/data_media_rotation.h
|
||||
data/data_media_types.cpp
|
||||
@@ -678,6 +714,7 @@ PRIVATE
|
||||
data/data_replies_list.h
|
||||
data/data_reply_preview.cpp
|
||||
data/data_reply_preview.h
|
||||
data/data_report.h
|
||||
data/data_saved_messages.cpp
|
||||
data/data_saved_messages.h
|
||||
data/data_saved_sublist.cpp
|
||||
@@ -692,6 +729,7 @@ PRIVATE
|
||||
data/data_shared_media.h
|
||||
data/data_sparse_ids.cpp
|
||||
data/data_sparse_ids.h
|
||||
data/data_star_gift.h
|
||||
data/data_statistics.h
|
||||
data/data_stories.cpp
|
||||
data/data_stories.h
|
||||
@@ -703,8 +741,12 @@ PRIVATE
|
||||
data/data_streaming.h
|
||||
data/data_thread.cpp
|
||||
data/data_thread.h
|
||||
data/data_todo_list.cpp
|
||||
data/data_todo_list.h
|
||||
data/data_types.cpp
|
||||
data/data_types.h
|
||||
data/data_unread_value.cpp
|
||||
data/data_unread_value.h
|
||||
data/data_user.cpp
|
||||
data/data_user.h
|
||||
data/data_user_photos.cpp
|
||||
@@ -741,12 +783,16 @@ PRIVATE
|
||||
dialogs/dialogs_main_list.h
|
||||
dialogs/dialogs_pinned_list.cpp
|
||||
dialogs/dialogs_pinned_list.h
|
||||
dialogs/dialogs_quick_action.cpp
|
||||
dialogs/dialogs_quick_action.h
|
||||
dialogs/dialogs_row.cpp
|
||||
dialogs/dialogs_row.h
|
||||
dialogs/dialogs_search_from_controllers.cpp
|
||||
dialogs/dialogs_search_from_controllers.h
|
||||
dialogs/dialogs_search_tags.cpp
|
||||
dialogs/dialogs_search_tags.h
|
||||
dialogs/dialogs_top_bar_suggestion.cpp
|
||||
dialogs/dialogs_top_bar_suggestion.h
|
||||
dialogs/dialogs_widget.cpp
|
||||
dialogs/dialogs_widget.h
|
||||
editor/color_picker.cpp
|
||||
@@ -797,6 +843,8 @@ PRIVATE
|
||||
history/view/controls/history_view_draft_options.h
|
||||
history/view/controls/history_view_forward_panel.cpp
|
||||
history/view/controls/history_view_forward_panel.h
|
||||
history/view/controls/history_view_suggest_options.cpp
|
||||
history/view/controls/history_view_suggest_options.h
|
||||
history/view/controls/history_view_ttl_button.cpp
|
||||
history/view/controls/history_view_ttl_button.h
|
||||
history/view/controls/history_view_voice_record_bar.cpp
|
||||
@@ -858,8 +906,14 @@ PRIVATE
|
||||
history/view/media/history_view_sticker_player_abstract.h
|
||||
history/view/media/history_view_story_mention.cpp
|
||||
history/view/media/history_view_story_mention.h
|
||||
history/view/media/history_view_suggest_decision.cpp
|
||||
history/view/media/history_view_suggest_decision.h
|
||||
history/view/media/history_view_theme_document.cpp
|
||||
history/view/media/history_view_theme_document.h
|
||||
history/view/media/history_view_todo_list.cpp
|
||||
history/view/media/history_view_todo_list.h
|
||||
history/view/media/history_view_unique_gift.cpp
|
||||
history/view/media/history_view_unique_gift.h
|
||||
history/view/media/history_view_userpic_suggestion.cpp
|
||||
history/view/media/history_view_userpic_suggestion.h
|
||||
history/view/media/history_view_web_page.cpp
|
||||
@@ -882,6 +936,8 @@ PRIVATE
|
||||
history/view/history_view_bottom_info.h
|
||||
history/view/history_view_chat_preview.cpp
|
||||
history/view/history_view_chat_preview.h
|
||||
history/view/history_view_chat_section.cpp
|
||||
history/view/history_view_chat_section.h
|
||||
history/view/history_view_contact_status.cpp
|
||||
history/view/history_view_contact_status.h
|
||||
history/view/history_view_context_menu.cpp
|
||||
@@ -916,8 +972,6 @@ PRIVATE
|
||||
history/view/history_view_pinned_tracker.h
|
||||
history/view/history_view_quick_action.cpp
|
||||
history/view/history_view_quick_action.h
|
||||
history/view/history_view_replies_section.cpp
|
||||
history/view/history_view_replies_section.h
|
||||
history/view/history_view_reply.cpp
|
||||
history/view/history_view_reply.h
|
||||
history/view/history_view_requests_bar.cpp
|
||||
@@ -934,8 +988,8 @@ PRIVATE
|
||||
history/view/history_view_sponsored_click_handler.h
|
||||
history/view/history_view_sticker_toast.cpp
|
||||
history/view/history_view_sticker_toast.h
|
||||
history/view/history_view_sublist_section.cpp
|
||||
history/view/history_view_sublist_section.h
|
||||
history/view/history_view_subsection_tabs.cpp
|
||||
history/view/history_view_subsection_tabs.h
|
||||
history/view/history_view_text_helper.cpp
|
||||
history/view/history_view_text_helper.h
|
||||
history/view/history_view_transcribe_button.cpp
|
||||
@@ -976,12 +1030,20 @@ PRIVATE
|
||||
history/history_unread_things.h
|
||||
history/history_view_highlight_manager.cpp
|
||||
history/history_view_highlight_manager.h
|
||||
history/history_view_swipe_back_session.cpp
|
||||
history/history_view_swipe_back_session.h
|
||||
history/history_widget.cpp
|
||||
history/history_widget.h
|
||||
info/bot/earn/info_bot_earn_list.cpp
|
||||
info/bot/earn/info_bot_earn_list.h
|
||||
info/bot/earn/info_bot_earn_widget.cpp
|
||||
info/bot/earn/info_bot_earn_widget.h
|
||||
info/bot/starref/info_bot_starref_common.cpp
|
||||
info/bot/starref/info_bot_starref_common.h
|
||||
info/bot/starref/info_bot_starref_join_widget.cpp
|
||||
info/bot/starref/info_bot_starref_join_widget.h
|
||||
info/bot/starref/info_bot_starref_setup_widget.cpp
|
||||
info/bot/starref/info_bot_starref_setup_widget.h
|
||||
info/channel_statistics/boosts/create_giveaway_box.cpp
|
||||
info/channel_statistics/boosts/create_giveaway_box.h
|
||||
info/channel_statistics/boosts/giveaway/giveaway_list_controllers.cpp
|
||||
@@ -1004,6 +1066,13 @@ PRIVATE
|
||||
info/downloads/info_downloads_provider.h
|
||||
info/downloads/info_downloads_widget.cpp
|
||||
info/downloads/info_downloads_widget.h
|
||||
info/global_media/info_global_media_widget.cpp
|
||||
info/global_media/info_global_media_widget.h
|
||||
info/global_media/info_global_media_inner_widget.cpp
|
||||
info/global_media/info_global_media_inner_widget.h
|
||||
info/global_media/info_global_media_provider.cpp
|
||||
info/global_media/info_global_media_provider.h
|
||||
info/media/info_media_buttons.cpp
|
||||
info/media/info_media_buttons.h
|
||||
info/media/info_media_common.cpp
|
||||
info/media/info_media_common.h
|
||||
@@ -1021,6 +1090,10 @@ PRIVATE
|
||||
info/media/info_media_widget.h
|
||||
info/members/info_members_widget.cpp
|
||||
info/members/info_members_widget.h
|
||||
info/peer_gifts/info_peer_gifts_common.cpp
|
||||
info/peer_gifts/info_peer_gifts_common.h
|
||||
info/peer_gifts/info_peer_gifts_widget.cpp
|
||||
info/peer_gifts/info_peer_gifts_widget.h
|
||||
info/polls/info_polls_results_inner_widget.cpp
|
||||
info/polls/info_polls_results_inner_widget.h
|
||||
info/polls/info_polls_results_widget.cpp
|
||||
@@ -1047,12 +1120,16 @@ PRIVATE
|
||||
info/profile/info_profile_values.h
|
||||
info/profile/info_profile_widget.cpp
|
||||
info/profile/info_profile_widget.h
|
||||
info/reactions_list/info_reactions_list_widget.cpp
|
||||
info/reactions_list/info_reactions_list_widget.h
|
||||
info/requests_list/info_requests_list_widget.cpp
|
||||
info/requests_list/info_requests_list_widget.h
|
||||
info/saved/info_saved_sublists_widget.cpp
|
||||
info/saved/info_saved_sublists_widget.h
|
||||
info/settings/info_settings_widget.cpp
|
||||
info/settings/info_settings_widget.h
|
||||
info/similar_channels/info_similar_channels_widget.cpp
|
||||
info/similar_channels/info_similar_channels_widget.h
|
||||
info/similar_peers/info_similar_peers_widget.cpp
|
||||
info/similar_peers/info_similar_peers_widget.h
|
||||
info/statistics/info_statistics_common.h
|
||||
info/statistics/info_statistics_inner_widget.cpp
|
||||
info/statistics/info_statistics_inner_widget.h
|
||||
@@ -1060,6 +1137,7 @@ PRIVATE
|
||||
info/statistics/info_statistics_list_controllers.h
|
||||
info/statistics/info_statistics_recent_message.cpp
|
||||
info/statistics/info_statistics_recent_message.h
|
||||
info/statistics/info_statistics_tag.h
|
||||
info/statistics/info_statistics_widget.cpp
|
||||
info/statistics/info_statistics_widget.h
|
||||
info/stories/info_stories_inner_widget.cpp
|
||||
@@ -1096,6 +1174,10 @@ PRIVATE
|
||||
info/info_wrap_widget.h
|
||||
inline_bots/bot_attach_web_view.cpp
|
||||
inline_bots/bot_attach_web_view.h
|
||||
inline_bots/inline_bot_confirm_prepared.cpp
|
||||
inline_bots/inline_bot_confirm_prepared.h
|
||||
inline_bots/inline_bot_downloads.cpp
|
||||
inline_bots/inline_bot_downloads.h
|
||||
inline_bots/inline_bot_layout_internal.cpp
|
||||
inline_bots/inline_bot_layout_internal.h
|
||||
inline_bots/inline_bot_layout_item.cpp
|
||||
@@ -1104,6 +1186,8 @@ PRIVATE
|
||||
inline_bots/inline_bot_result.h
|
||||
inline_bots/inline_bot_send_data.cpp
|
||||
inline_bots/inline_bot_send_data.h
|
||||
inline_bots/inline_bot_storage.cpp
|
||||
inline_bots/inline_bot_storage.h
|
||||
inline_bots/inline_results_inner.cpp
|
||||
inline_bots/inline_results_inner.h
|
||||
inline_bots/inline_results_widget.cpp
|
||||
@@ -1118,8 +1202,6 @@ PRIVATE
|
||||
intro/intro_qr.h
|
||||
intro/intro_signup.cpp
|
||||
intro/intro_signup.h
|
||||
intro/intro_start.cpp
|
||||
intro/intro_start.h
|
||||
intro/intro_step.cpp
|
||||
intro/intro_step.h
|
||||
intro/intro_widget.cpp
|
||||
@@ -1167,6 +1249,8 @@ PRIVATE
|
||||
media/audio/media_audio_loader.h
|
||||
media/audio/media_audio_loaders.cpp
|
||||
media/audio/media_audio_loaders.h
|
||||
media/audio/media_audio_local_cache.cpp
|
||||
media/audio/media_audio_local_cache.h
|
||||
media/audio/media_audio_track.cpp
|
||||
media/audio/media_audio_track.h
|
||||
media/audio/media_child_ffmpeg_loader.cpp
|
||||
@@ -1227,12 +1311,16 @@ PRIVATE
|
||||
media/streaming/media_streaming_player.h
|
||||
media/streaming/media_streaming_reader.cpp
|
||||
media/streaming/media_streaming_reader.h
|
||||
media/streaming/media_streaming_round_preview.cpp
|
||||
media/streaming/media_streaming_round_preview.h
|
||||
media/streaming/media_streaming_utility.cpp
|
||||
media/streaming/media_streaming_utility.h
|
||||
media/streaming/media_streaming_video_track.cpp
|
||||
media/streaming/media_streaming_video_track.h
|
||||
media/view/media_view_group_thumbs.cpp
|
||||
media/view/media_view_group_thumbs.h
|
||||
media/view/media_view_open_common.cpp
|
||||
media/view/media_view_open_common.h
|
||||
media/view/media_view_overlay_opengl.cpp
|
||||
media/view/media_view_overlay_opengl.h
|
||||
media/view/media_view_overlay_raster.cpp
|
||||
@@ -1251,7 +1339,6 @@ PRIVATE
|
||||
media/view/media_view_playback_controls.h
|
||||
media/view/media_view_playback_progress.cpp
|
||||
media/view/media_view_playback_progress.h
|
||||
media/view/media_view_open_common.h
|
||||
media/system_media_controls_manager.h
|
||||
media/system_media_controls_manager.cpp
|
||||
menu/menu_antispam_validator.cpp
|
||||
@@ -1439,8 +1526,6 @@ PRIVATE
|
||||
settings/business/settings_recipients_helper.h
|
||||
settings/business/settings_working_hours.cpp
|
||||
settings/business/settings_working_hours.h
|
||||
settings/cloud_password/settings_cloud_password_common.cpp
|
||||
settings/cloud_password/settings_cloud_password_common.h
|
||||
settings/cloud_password/settings_cloud_password_email.cpp
|
||||
settings/cloud_password/settings_cloud_password_email.h
|
||||
settings/cloud_password/settings_cloud_password_email_confirm.cpp
|
||||
@@ -1449,10 +1534,20 @@ PRIVATE
|
||||
settings/cloud_password/settings_cloud_password_hint.h
|
||||
settings/cloud_password/settings_cloud_password_input.cpp
|
||||
settings/cloud_password/settings_cloud_password_input.h
|
||||
settings/cloud_password/settings_cloud_password_login_email.cpp
|
||||
settings/cloud_password/settings_cloud_password_login_email.h
|
||||
settings/cloud_password/settings_cloud_password_login_email_confirm.cpp
|
||||
settings/cloud_password/settings_cloud_password_login_email_confirm.h
|
||||
settings/cloud_password/settings_cloud_password_manage.cpp
|
||||
settings/cloud_password/settings_cloud_password_manage.h
|
||||
settings/cloud_password/settings_cloud_password_start.cpp
|
||||
settings/cloud_password/settings_cloud_password_start.h
|
||||
settings/cloud_password/settings_cloud_password_step.cpp
|
||||
settings/cloud_password/settings_cloud_password_step.h
|
||||
settings/cloud_password/settings_cloud_password_validate_icon.cpp
|
||||
settings/cloud_password/settings_cloud_password_validate_icon.h
|
||||
settings/settings_active_sessions.cpp
|
||||
settings/settings_active_sessions.h
|
||||
settings/settings_advanced.cpp
|
||||
settings/settings_advanced.h
|
||||
settings/settings_blocked_peers.cpp
|
||||
@@ -1499,6 +1594,8 @@ PRIVATE
|
||||
settings/settings_privacy_security.h
|
||||
settings/settings_scale_preview.cpp
|
||||
settings/settings_scale_preview.h
|
||||
settings/settings_shortcuts.cpp
|
||||
settings/settings_shortcuts.h
|
||||
settings/settings_type.h
|
||||
settings/settings_websites.cpp
|
||||
settings/settings_websites.h
|
||||
@@ -1554,8 +1651,12 @@ PRIVATE
|
||||
support/support_preload.h
|
||||
support/support_templates.cpp
|
||||
support/support_templates.h
|
||||
tde2e/tde2e_integration.cpp
|
||||
tde2e/tde2e_integration.h
|
||||
ui/boxes/edit_invite_link_session.cpp
|
||||
ui/boxes/edit_invite_link_session.h
|
||||
ui/boxes/peer_qr_box.cpp
|
||||
ui/boxes/peer_qr_box.h
|
||||
ui/chat/attach/attach_item_single_file_preview.cpp
|
||||
ui/chat/attach/attach_item_single_file_preview.h
|
||||
ui/chat/attach/attach_item_single_media_preview.cpp
|
||||
@@ -1564,6 +1665,10 @@ PRIVATE
|
||||
ui/chat/choose_send_as.h
|
||||
ui/chat/choose_theme_controller.cpp
|
||||
ui/chat/choose_theme_controller.h
|
||||
ui/chat/sponsored_message_bar.cpp
|
||||
ui/chat/sponsored_message_bar.h
|
||||
ui/controls/emoji_button_factory.cpp
|
||||
ui/controls/emoji_button_factory.h
|
||||
ui/controls/location_picker.cpp
|
||||
ui/controls/location_picker.h
|
||||
ui/controls/silent_toggle.cpp
|
||||
@@ -1589,8 +1694,14 @@ PRIVATE
|
||||
ui/image/image_location_factory.h
|
||||
ui/text/format_song_document_name.cpp
|
||||
ui/text/format_song_document_name.h
|
||||
ui/widgets/expandable_peer_list.cpp
|
||||
ui/widgets/expandable_peer_list.h
|
||||
ui/widgets/label_with_custom_emoji.cpp
|
||||
ui/widgets/label_with_custom_emoji.h
|
||||
ui/widgets/chat_filters_tabs_strip.cpp
|
||||
ui/widgets/chat_filters_tabs_strip.h
|
||||
ui/widgets/peer_bubble.cpp
|
||||
ui/widgets/peer_bubble.h
|
||||
ui/countryinput.cpp
|
||||
ui/countryinput.h
|
||||
ui/dynamic_thumbnails.cpp
|
||||
@@ -1602,8 +1713,6 @@ PRIVATE
|
||||
ui/item_text_options.cpp
|
||||
ui/item_text_options.h
|
||||
ui/resize_area.h
|
||||
ui/search_field_controller.cpp
|
||||
ui/search_field_controller.h
|
||||
ui/unread_badge.cpp
|
||||
ui/unread_badge.h
|
||||
window/main_window.cpp
|
||||
@@ -1740,6 +1849,10 @@ if (WIN32)
|
||||
# COMMENT
|
||||
# $<IF:${release},"Appending compatibility manifest.","Finalizing build.">
|
||||
# )
|
||||
|
||||
if (QT_VERSION LESS 6)
|
||||
target_link_libraries(Telegram PRIVATE desktop-app::win_directx_helper)
|
||||
endif()
|
||||
elseif (APPLE)
|
||||
if (NOT DESKTOP_APP_USE_PACKAGED)
|
||||
target_link_libraries(Telegram PRIVATE desktop-app::external_iconv)
|
||||
@@ -1848,16 +1961,12 @@ if (build_macstore)
|
||||
)
|
||||
else()
|
||||
if (CMAKE_GENERATOR STREQUAL Xcode)
|
||||
set(bundle_identifier "com.tdesktop.Telegram$<$<CONFIG:Debug>:Debug>")
|
||||
set(bundle_identifier "one.ayugram.AyuGramDesktop$<$<CONFIG:Debug>:Debug>")
|
||||
else()
|
||||
set(bundle_identifier "com.tdesktop.Telegram")
|
||||
set(bundle_identifier "one.ayugram.AyuGramDesktop")
|
||||
endif()
|
||||
set(bundle_entitlements "Telegram.entitlements")
|
||||
if (LINUX AND DESKTOP_APP_USE_PACKAGED)
|
||||
set(output_name "ayugram-desktop")
|
||||
else()
|
||||
set(output_name "AyuGram")
|
||||
endif()
|
||||
set(output_name "AyuGram")
|
||||
endif()
|
||||
|
||||
if (CMAKE_GENERATOR STREQUAL Xcode)
|
||||
@@ -1899,8 +2008,9 @@ PRIVATE
|
||||
G_LOG_DOMAIN="Telegram"
|
||||
)
|
||||
|
||||
get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if (APPLE
|
||||
OR "${CMAKE_GENERATOR}" STREQUAL "Ninja Multi-Config"
|
||||
OR is_multi_config
|
||||
OR NOT CMAKE_EXECUTABLE_SUFFIX STREQUAL ""
|
||||
OR NOT "${output_name}" STREQUAL "AyuGram")
|
||||
set(output_folder ${CMAKE_BINARY_DIR})
|
||||
@@ -1910,7 +2020,7 @@ endif()
|
||||
|
||||
set_target_properties(Telegram PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
|
||||
|
||||
if (WIN32 AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||
if (MSVC)
|
||||
target_link_libraries(Telegram
|
||||
PRIVATE
|
||||
delayimp
|
||||
@@ -1923,6 +2033,7 @@ if (WIN32 AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||
/DELAYLOAD:user32.dll
|
||||
/DELAYLOAD:gdi32.dll
|
||||
/DELAYLOAD:advapi32.dll
|
||||
/DELAYLOAD:avrt.dll
|
||||
/DELAYLOAD:shell32.dll
|
||||
/DELAYLOAD:ole32.dll
|
||||
/DELAYLOAD:oleaut32.dll
|
||||
@@ -2007,7 +2118,7 @@ if (NOT DESKTOP_APP_DISABLE_AUTOUPDATE AND NOT build_macstore AND NOT build_wins
|
||||
base/platform/win/base_windows_safe_library.h
|
||||
)
|
||||
target_include_directories(Updater PRIVATE ${lib_base_loc})
|
||||
if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||
if (MSVC)
|
||||
target_link_libraries(Updater
|
||||
PRIVATE
|
||||
delayimp
|
||||
@@ -2051,6 +2162,10 @@ if (NOT DESKTOP_APP_DISABLE_AUTOUPDATE AND NOT build_macstore AND NOT build_wins
|
||||
desktop-app::external_openssl
|
||||
)
|
||||
|
||||
if (DESKTOP_APP_USE_PACKAGED)
|
||||
target_compile_definitions(Packer PRIVATE PACKER_USE_PACKAGED)
|
||||
endif()
|
||||
|
||||
set_target_properties(Packer PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
|
||||
endif()
|
||||
elseif (build_winstore)
|
||||
@@ -2075,14 +2190,16 @@ if (LINUX AND DESKTOP_APP_USE_PACKAGED)
|
||||
configure_file("../lib/xdg/com.ayugram.desktop.metainfo.xml" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml" @ONLY)
|
||||
generate_appdata_changelog(Telegram "${CMAKE_SOURCE_DIR}/changelog.txt" "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml")
|
||||
install(TARGETS Telegram RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "ayugram.png")
|
||||
install(FILES "Resources/icons/tray_monochrome.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "ayugram-symbolic.svg")
|
||||
install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon32.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/32x32/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon48.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon64.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/64x64/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "com.ayugram.desktop.png")
|
||||
install(FILES "Resources/icons/tray_monochrome.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "com.ayugram.desktop-symbolic.svg")
|
||||
install(FILES "Resources/icons/tray_monochrome_attention.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "com.ayugram.desktop-attention-symbolic.svg")
|
||||
install(FILES "Resources/icons/tray_monochrome_mute.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/symbolic/apps" RENAME "com.ayugram.desktop-mute-symbolic.svg")
|
||||
install(FILES "../lib/xdg/com.ayugram.desktop.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.service" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/dbus-1/services")
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/com.ayugram.desktop.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo")
|
||||
|
||||
|
After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 787 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 500 B |
@@ -1,6 +1,7 @@
|
||||
// This is a list of your own shortcuts for Telegram Desktop
|
||||
// You can see full list of commands in the 'shortcuts-default.json' file
|
||||
// Place a null value instead of a command string to switch the shortcut off
|
||||
// You can also edit them in Settings > Chat Settings > Keyboard Shortcuts.
|
||||
|
||||
[
|
||||
// {
|
||||
|
||||
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 832 KiB After Width: | Height: | Size: 935 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 234 KiB |
@@ -582,3 +582,55 @@ div.toast_shown {
|
||||
.bot_button_column_separator {
|
||||
width: 2px
|
||||
}
|
||||
|
||||
.reactions {
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.reactions .reaction {
|
||||
display: inline-flex;
|
||||
height: 20px;
|
||||
border-radius: 15px;
|
||||
background-color: #e8f5fc;
|
||||
color: #168acd;
|
||||
font-weight: bold;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.reactions .reaction.active {
|
||||
background-color: #40a6e2;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.reactions .reaction.paid {
|
||||
background-color: #fdf6e1;
|
||||
color: #c58523;
|
||||
}
|
||||
|
||||
.reactions .reaction.active.paid {
|
||||
background-color: #ecae0a;
|
||||
color: #fdf6e1;
|
||||
}
|
||||
|
||||
.reactions .reaction .emoji {
|
||||
line-height: 20px;
|
||||
margin: 0 5px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.reactions .reaction .userpic:not(:first-child) {
|
||||
margin-left: -8px;
|
||||
}
|
||||
|
||||
.reactions .reaction .userpic {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.reactions .reaction .userpic .initials {
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
.reactions .reaction .count {
|
||||
margin-right: 8px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 401 B |
|
After Width: | Height: | Size: 712 B |
|
After Width: | Height: | Size: 957 B |
|
After Width: | Height: | Size: 282 B |
|
After Width: | Height: | Size: 415 B |
|
After Width: | Height: | Size: 568 B |
|
After Width: | Height: | Size: 295 B |
|
After Width: | Height: | Size: 475 B |
|
After Width: | Height: | Size: 613 B |
|
Before Width: | Height: | Size: 312 B After Width: | Height: | Size: 312 B |
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 517 B |
|
Before Width: | Height: | Size: 754 B After Width: | Height: | Size: 754 B |
|
After Width: | Height: | Size: 506 B |
|
After Width: | Height: | Size: 882 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 452 B |
|
After Width: | Height: | Size: 789 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 444 B |
|
After Width: | Height: | Size: 760 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 514 B |
|
After Width: | Height: | Size: 970 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 493 B |
|
After Width: | Height: | Size: 891 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 499 B |
|
After Width: | Height: | Size: 911 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 327 B |
|
After Width: | Height: | Size: 462 B |
|
After Width: | Height: | Size: 564 B |
|
Before Width: | Height: | Size: 214 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 912 B After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 721 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 529 B |