forked from github/wulkanowy-mirror
Compare commits
2174 Commits
Author | SHA1 | Date | |
---|---|---|---|
4316d4ba10 | |||
5e78b01415 | |||
![]() |
528a947ffd | ||
![]() |
ca9caeca66 | ||
![]() |
e971eb7821 | ||
7266d1fcd3 | |||
e048fe4c35 | |||
49541e9a7d | |||
72c93594f6 | |||
b249eab1eb | |||
![]() |
c7afa262d9 | ||
![]() |
b622c09e56 | ||
![]() |
87fb1916d8 | ||
![]() |
5ca9ac3978 | ||
![]() |
c76ace40eb | ||
![]() |
4a585fc56e | ||
![]() |
f3afe7fdb7 | ||
![]() |
859c6ef154 | ||
![]() |
24abe47332 | ||
![]() |
52c1878f6b | ||
![]() |
4060240368 | ||
![]() |
f69816fbac | ||
![]() |
1a41e9e3ee | ||
![]() |
1c0df6c145 | ||
![]() |
2b61e883c5 | ||
d29d95bfae | |||
65a0457675 | |||
b25c61a485 | |||
e33350e153 | |||
8109459ee2 | |||
![]() |
31a7ae6d15 | ||
![]() |
4b3b4a21fa | ||
![]() |
9a6b17c9d9 | ||
![]() |
729e0f547b | ||
![]() |
faa8d34e79 | ||
e553d9cdcf | |||
![]() |
b6f5ac91ad | ||
![]() |
d1d0caa1e3 | ||
eed3a93196 | |||
![]() |
c40779f48f | ||
![]() |
594d2dbec5 | ||
f6b8c33121 | |||
7b728d910e | |||
7302bb3336 | |||
5886ed2bce | |||
3fdd92ea35 | |||
708e25c622 | |||
36d9e02de7 | |||
ebe6bf1cc0 | |||
4bd95237c6 | |||
cb553b1a33 | |||
f5a95421a1 | |||
f2857bdece | |||
3c1497394c | |||
![]() |
26596e8254 | ||
![]() |
6e472d6c5c | ||
9f6ae0e6b5 | |||
![]() |
6f4826249c | ||
01fa007c89 | |||
3f7db44ea7 | |||
c426701b27 | |||
2d8db2b071 | |||
01f6f402b4 | |||
e058134740 | |||
0aefab9463 | |||
748e9f62f3 | |||
c40e371843 | |||
484996120e | |||
2de3362e0b | |||
470827fc42 | |||
6a524deca0 | |||
f9fcfe6d1a | |||
02f8b45ad5 | |||
6ccb2e9b5c | |||
cbf405fb16 | |||
![]() |
2f3e1b6aae | ||
![]() |
567d868f76 | ||
![]() |
12030efee2 | ||
![]() |
04c382643d | ||
58f7c84cd5 | |||
a2e641523a | |||
3b2eed487a | |||
bc999f1b9c | |||
![]() |
fc140ad9c1 | ||
![]() |
78a2cc89e9 | ||
![]() |
dbfe5c8918 | ||
![]() |
c697ca7ad1 | ||
![]() |
1b00f4e518 | ||
![]() |
fb77bf882f | ||
![]() |
466ebbef3a | ||
![]() |
458a4c8164 | ||
![]() |
0363c0854f | ||
![]() |
233ddc955b | ||
![]() |
065c711f91 | ||
![]() |
49655c11c9 | ||
![]() |
38fd4eda22 | ||
![]() |
b71630246a | ||
![]() |
fd2eac1f08 | ||
![]() |
1545ff65d3 | ||
![]() |
ff32c82851 | ||
![]() |
d531a94594 | ||
![]() |
71ab9586ac | ||
![]() |
e1a19be06c | ||
![]() |
6f2168d641 | ||
![]() |
cde2121b60 | ||
d7fec4806e | |||
4fba76d327 | |||
![]() |
a0bc37e826 | ||
![]() |
f983a23b1a | ||
![]() |
6a1851da13 | ||
![]() |
ad5381ce34 | ||
![]() |
dbc7587741 | ||
![]() |
bc3aa7b8dc | ||
![]() |
6bf6a9da11 | ||
![]() |
ab175bdd9a | ||
![]() |
8dbbea2138 | ||
![]() |
f6226e6b53 | ||
![]() |
43d13db07c | ||
![]() |
82210c37e3 | ||
![]() |
2816d7217a | ||
![]() |
2fa868173b | ||
![]() |
622c75bb42 | ||
![]() |
2121125283 | ||
![]() |
c72a117e34 | ||
![]() |
b5cc32d59f | ||
![]() |
d943d03266 | ||
![]() |
6eca8c42f5 | ||
![]() |
af989ba9f6 | ||
![]() |
4a65a5b192 | ||
![]() |
bbbafdfe70 | ||
![]() |
860095e862 | ||
![]() |
ff9be43291 | ||
![]() |
a487378daf | ||
![]() |
895f5cbb76 | ||
![]() |
8b9b1460ab | ||
![]() |
7edd3df074 | ||
![]() |
16c51f7b07 | ||
![]() |
7a3a97447f | ||
![]() |
b500d8e204 | ||
![]() |
c34a369286 | ||
![]() |
b9f3ab2e56 | ||
![]() |
6b59973624 | ||
![]() |
d18485293d | ||
![]() |
a82e11d694 | ||
![]() |
4dc5fc65ac | ||
![]() |
7463cf6253 | ||
![]() |
d799ec7ac9 | ||
![]() |
254719f22f | ||
![]() |
596e8df4fc | ||
![]() |
e1e276e1ea | ||
![]() |
8cdd4311a9 | ||
![]() |
b7f7b16aef | ||
![]() |
f13ce6e2b4 | ||
![]() |
8c10606b61 | ||
![]() |
7fda4276d6 | ||
![]() |
7993366bfc | ||
![]() |
2e71c50894 | ||
![]() |
b3faac01a5 | ||
![]() |
3881678208 | ||
![]() |
76d038eefa | ||
![]() |
3a55c3c760 | ||
![]() |
a0818de7d1 | ||
ecae5d96c4 | |||
![]() |
ddd49575d3 | ||
![]() |
5b0748a254 | ||
![]() |
47ff549d4b | ||
![]() |
a1203b360e | ||
![]() |
c80c041dd0 | ||
667b1b14d2 | |||
3f2a02f242 | |||
![]() |
29196c62fa | ||
e5412086d5 | |||
![]() |
ce114e1824 | ||
![]() |
b0d221473c | ||
![]() |
ee2803b0d3 | ||
![]() |
47817c47f8 | ||
![]() |
92bad9d112 | ||
![]() |
b280316b07 | ||
![]() |
0554aa91fd | ||
![]() |
5a77d1e940 | ||
![]() |
d17614fa64 | ||
![]() |
c9a42a6cf6 | ||
![]() |
d068371fb1 | ||
![]() |
af71023bfb | ||
![]() |
b5adc27efa | ||
![]() |
de0b9cf221 | ||
![]() |
425d28d563 | ||
![]() |
31744e7e77 | ||
![]() |
925ad9616d | ||
![]() |
878e7b4247 | ||
![]() |
e347045ac8 | ||
![]() |
8eb65196cb | ||
![]() |
f99df4ad46 | ||
![]() |
27eb0588d7 | ||
![]() |
e17129efea | ||
![]() |
6047af9ff0 | ||
![]() |
d789aa718e | ||
![]() |
8623b53357 | ||
![]() |
78e28ad791 | ||
![]() |
377c288e9e | ||
![]() |
b31c7e1720 | ||
![]() |
d01fe9c370 | ||
![]() |
34d34a050a | ||
![]() |
961bc24f27 | ||
![]() |
8a90b61b97 | ||
![]() |
6a8f6f9496 | ||
![]() |
afb5ae741c | ||
![]() |
95e41b5570 | ||
![]() |
eb6fdd900e | ||
![]() |
88def5eff8 | ||
![]() |
0e99c81eb8 | ||
![]() |
38c00ddab5 | ||
![]() |
c72cc39920 | ||
![]() |
4ef9fb1f28 | ||
![]() |
5dd5697f65 | ||
![]() |
a7c2009e49 | ||
![]() |
a71ef4a4b2 | ||
![]() |
30413086fc | ||
![]() |
98ddf97855 | ||
![]() |
8f5a210ec7 | ||
![]() |
ce09b07cfd | ||
![]() |
5ed19cb21a | ||
![]() |
0a1f7270b4 | ||
![]() |
47d8513a77 | ||
![]() |
00432ab911 | ||
![]() |
7b2c839775 | ||
![]() |
f455064b9d | ||
![]() |
2bbc157d03 | ||
![]() |
a0a0b8dea6 | ||
![]() |
3bab883a56 | ||
![]() |
b319bb03cd | ||
![]() |
333306e7ba | ||
![]() |
fb240938ed | ||
![]() |
dc9af29a44 | ||
![]() |
e9d64de0cb | ||
![]() |
05bda598fc | ||
![]() |
3564366a8f | ||
![]() |
f2d26453ed | ||
![]() |
ccba31f2e8 | ||
![]() |
a7238e3f23 | ||
![]() |
ea28fc783c | ||
![]() |
c04752ed39 | ||
![]() |
0264682d0d | ||
![]() |
c395abb7e4 | ||
![]() |
dfd5e10fbf | ||
![]() |
c198e6a2f7 | ||
![]() |
2c1337bb51 | ||
![]() |
7a4032dda4 | ||
![]() |
130f6164c4 | ||
![]() |
b2191ab21b | ||
![]() |
eb08a2cddb | ||
![]() |
eb63e5eb04 | ||
![]() |
7a8ab6fb52 | ||
![]() |
0eadf36222 | ||
![]() |
85e3bb4d17 | ||
![]() |
84969e6f9b | ||
![]() |
d39998000b | ||
![]() |
b6cbd0523b | ||
![]() |
4d74c252c8 | ||
![]() |
1ab300d74f | ||
![]() |
1b8c389984 | ||
![]() |
74a20b2f65 | ||
![]() |
c1687f5856 | ||
![]() |
d5c17285c1 | ||
![]() |
e378b4c70a | ||
![]() |
31854fc4b8 | ||
![]() |
f52fe8306f | ||
![]() |
3eae3a7667 | ||
![]() |
b613b84469 | ||
![]() |
2776d019b9 | ||
![]() |
729e72cddb | ||
![]() |
ec101c1f52 | ||
![]() |
cfec79405f | ||
![]() |
7d8be1b9fc | ||
![]() |
c781159e75 | ||
![]() |
90a5b9e20f | ||
![]() |
3cf6c295b0 | ||
![]() |
e757585bd3 | ||
![]() |
736d16a7ab | ||
![]() |
6f4a8d5534 | ||
![]() |
b5e17c4ff7 | ||
![]() |
cc01525f16 | ||
![]() |
c2ec05662b | ||
![]() |
b99ba48d2c | ||
![]() |
2d4a1bff83 | ||
![]() |
cd853e4d57 | ||
![]() |
8183d7d5a0 | ||
![]() |
3f199cb610 | ||
![]() |
22f72981cb | ||
![]() |
bce92b7347 | ||
![]() |
ed5166333a | ||
![]() |
a05f1f70f7 | ||
![]() |
e58a60410c | ||
![]() |
fc91936884 | ||
![]() |
88043569ac | ||
![]() |
10add8a70e | ||
![]() |
098af9884a | ||
![]() |
554c1b1261 | ||
![]() |
496695162d | ||
![]() |
dc59f4ffa3 | ||
![]() |
e0f4cad7fb | ||
![]() |
a51a54dc7a | ||
![]() |
7cdac6ede1 | ||
![]() |
9dfb282e88 | ||
![]() |
725668f855 | ||
![]() |
e58c155961 | ||
![]() |
05a5047a70 | ||
![]() |
1fe464a289 | ||
![]() |
497acf9d68 | ||
![]() |
976eb5a772 | ||
![]() |
9ececeb4e9 | ||
![]() |
096fe359e7 | ||
![]() |
a98e8398fd | ||
![]() |
d8c4926a97 | ||
![]() |
17c139b559 | ||
![]() |
ddbcc7a04c | ||
![]() |
9f9eb60280 | ||
![]() |
f893170dec | ||
![]() |
cff08d6322 | ||
![]() |
9dee7f01f6 | ||
![]() |
8324a9cac3 | ||
![]() |
5316e3e1bf | ||
![]() |
81e80181f2 | ||
![]() |
6ee38e9259 | ||
![]() |
40df80371c | ||
![]() |
f7b25139c0 | ||
![]() |
a3596c35b8 | ||
![]() |
6e751c83f6 | ||
![]() |
43a01e4e04 | ||
![]() |
ee906d02ae | ||
![]() |
83cf39a28c | ||
![]() |
66b7ea4cb4 | ||
![]() |
770749e158 | ||
![]() |
0aa83b020e | ||
![]() |
4d1218d1d3 | ||
![]() |
3c5c50f84d | ||
![]() |
d0d3b11662 | ||
![]() |
0ea6cbc8ed | ||
![]() |
eb31f9578f | ||
![]() |
f69d50d2c1 | ||
![]() |
8a424ee6a4 | ||
![]() |
7dfa48bbe3 | ||
![]() |
d811cdb919 | ||
![]() |
e2f2e21081 | ||
![]() |
c812310497 | ||
![]() |
d3ff6682ca | ||
![]() |
7f6475cf35 | ||
![]() |
a2a7d2ebb2 | ||
![]() |
a5bc45c5da | ||
![]() |
5646befbd7 | ||
![]() |
75f496b5d2 | ||
![]() |
23d989d22a | ||
![]() |
9e013f7cd9 | ||
![]() |
c63a7c03f1 | ||
![]() |
5ceee84f0e | ||
![]() |
7f4539fd27 | ||
![]() |
71ebf1260b | ||
![]() |
784ee58384 | ||
![]() |
eceef3f582 | ||
![]() |
0d950fbd86 | ||
![]() |
a571dabb71 | ||
![]() |
003d63b516 | ||
![]() |
b4c0440a8e | ||
![]() |
137c305295 | ||
![]() |
5c27edbe3c | ||
![]() |
2c40c221c3 | ||
![]() |
e82ac78d4a | ||
![]() |
59d46ce956 | ||
![]() |
17caa8ecbd | ||
![]() |
e9540b4012 | ||
![]() |
643ad60455 | ||
![]() |
01f892ce5c | ||
![]() |
f61b6a5e78 | ||
![]() |
650cf7484e | ||
![]() |
037cbb0b19 | ||
![]() |
598edaadb7 | ||
![]() |
e49835e89e | ||
![]() |
c64be2fab0 | ||
![]() |
ce9cb35172 | ||
![]() |
7fa9219c7b | ||
![]() |
1fe1618220 | ||
![]() |
d9bab2af78 | ||
![]() |
06b6d88dd1 | ||
![]() |
3bf27baed5 | ||
![]() |
6802d74002 | ||
![]() |
3fd2683df7 | ||
![]() |
b708c70ea2 | ||
![]() |
aba08e6aa9 | ||
![]() |
124b6dfd79 | ||
![]() |
1dbaa8bfdc | ||
![]() |
25ac171298 | ||
![]() |
387ff1cba7 | ||
![]() |
eef3464d0b | ||
![]() |
61297a01c7 | ||
![]() |
762d4b1393 | ||
![]() |
2e86b67eec | ||
![]() |
6071b7571b | ||
![]() |
fcea2218b5 | ||
![]() |
a4a191700e | ||
![]() |
3d76d41b55 | ||
![]() |
0e1c20a952 | ||
![]() |
5d14ee7f4e | ||
![]() |
83527d91f3 | ||
![]() |
9d62410530 | ||
![]() |
5dffbdadfa | ||
![]() |
516922d5aa | ||
![]() |
9098e74065 | ||
![]() |
2f5577cc54 | ||
![]() |
3272c38356 | ||
![]() |
bcd305bef3 | ||
![]() |
fc5ad16cb7 | ||
![]() |
c8332a0642 | ||
![]() |
3212efe21e | ||
![]() |
693ce8217d | ||
![]() |
2cdd322ed4 | ||
![]() |
c04b3e40d2 | ||
![]() |
d1d665bbdf | ||
![]() |
d70568c446 | ||
![]() |
1d8378e136 | ||
![]() |
4a2bf539f0 | ||
![]() |
4d085f8266 | ||
![]() |
fca69e7234 | ||
![]() |
711de0f77f | ||
![]() |
58d5196ac9 | ||
![]() |
26a95ecb99 | ||
![]() |
1835446468 | ||
![]() |
4d3b16ec80 | ||
![]() |
95b4d53fac | ||
![]() |
0fa197d520 | ||
![]() |
646b4a149d | ||
![]() |
afd0c8513a | ||
![]() |
c4a3da93ca | ||
![]() |
ff2aa6f195 | ||
![]() |
1d8d71709f | ||
![]() |
aabd7345c1 | ||
![]() |
09d16cf6d8 | ||
![]() |
81d8f7ea48 | ||
![]() |
05a804832b | ||
![]() |
db02f0c1e1 | ||
![]() |
0a40237809 | ||
![]() |
017d46e5db | ||
![]() |
8478b8b7ed | ||
![]() |
8cc69728aa | ||
![]() |
c82e6ae95b | ||
![]() |
50a177d18c | ||
![]() |
a77b3d4cd7 | ||
![]() |
aff56a8311 | ||
![]() |
5238e4d187 | ||
![]() |
10f9812495 | ||
![]() |
ab1de323d4 | ||
![]() |
af346842a3 | ||
![]() |
8f78324940 | ||
![]() |
3dfc55c4d1 | ||
![]() |
fbce9e58d0 | ||
![]() |
2e2b13384a | ||
![]() |
533157709b | ||
![]() |
024ca89708 | ||
![]() |
7d5a29d405 | ||
![]() |
8fbe341607 | ||
![]() |
e21c17ea99 | ||
![]() |
c4396036ce | ||
![]() |
722b4e5812 | ||
![]() |
74820f9571 | ||
![]() |
50326c7a48 | ||
![]() |
0f129109ba | ||
![]() |
fc2adff997 | ||
![]() |
7f6a13a9ee | ||
![]() |
64cc24ae60 | ||
![]() |
91d7ee442e | ||
![]() |
b296926423 | ||
![]() |
398bc513fb | ||
![]() |
5b2e2ffb34 | ||
![]() |
e79c5d4d2b | ||
![]() |
c0161f38c6 | ||
![]() |
ef72218906 | ||
![]() |
05741761a2 | ||
![]() |
86c7de6595 | ||
![]() |
88ea753fc6 | ||
![]() |
d0819928f3 | ||
![]() |
8564e12b01 | ||
![]() |
29a36aaf6e | ||
![]() |
dbe608f2dd | ||
![]() |
bb79b33b6d | ||
![]() |
6e7c12a118 | ||
![]() |
03cd3aeab7 | ||
![]() |
df8849639b | ||
![]() |
8913b22a20 | ||
![]() |
f20ffe44d5 | ||
![]() |
2f749a690b | ||
![]() |
ae1951bf58 | ||
![]() |
391f38485d | ||
![]() |
fecd5c707d | ||
![]() |
fa44295d59 | ||
![]() |
5306044173 | ||
![]() |
c1b86674c2 | ||
![]() |
fd482777e8 | ||
![]() |
d4ae0d56d6 | ||
![]() |
63487249b8 | ||
![]() |
1bc0f2d214 | ||
![]() |
41bde45731 | ||
![]() |
556f42195b | ||
![]() |
06fd7b0c36 | ||
![]() |
db4e4d8cef | ||
![]() |
48e4a9fec5 | ||
![]() |
70333737cf | ||
![]() |
3096fa1538 | ||
![]() |
19ed121466 | ||
![]() |
e7733bfa2a | ||
![]() |
b9b464ea9b | ||
![]() |
cc46b3b124 | ||
![]() |
092e86b621 | ||
![]() |
c170614461 | ||
![]() |
6ce8e00ebf | ||
![]() |
c40cdf88ad | ||
![]() |
4c1fe233c7 | ||
![]() |
aca88b57e0 | ||
![]() |
a603c12625 | ||
![]() |
5c440010e2 | ||
![]() |
4920317573 | ||
![]() |
9466482893 | ||
![]() |
48bcf581cf | ||
![]() |
8a7b7103eb | ||
![]() |
ea312c3e12 | ||
![]() |
5b0fe2c006 | ||
![]() |
a06add070e | ||
![]() |
dce491bffe | ||
![]() |
adf418cc68 | ||
![]() |
defcfec971 | ||
![]() |
d08f195968 | ||
![]() |
1e9a6a5c42 | ||
![]() |
cc752ab0ad | ||
![]() |
f2faa7e8b7 | ||
![]() |
030fe8c218 | ||
![]() |
c33b309cf0 | ||
![]() |
a0af55825d | ||
![]() |
cb8303f33d | ||
![]() |
54fbd56b73 | ||
![]() |
70f50cd51b | ||
![]() |
88c38c4a8d | ||
![]() |
b8ac72c247 | ||
![]() |
cbef160ada | ||
![]() |
e77894bf3e | ||
![]() |
9697a39464 | ||
![]() |
5a2622871f | ||
![]() |
52218e800c | ||
![]() |
3fdd47c221 | ||
![]() |
d8f71f48f3 | ||
![]() |
18dbbba328 | ||
![]() |
d99c93ec05 | ||
![]() |
f8431d7ad6 | ||
![]() |
b195fda026 | ||
![]() |
b1a5a77559 | ||
![]() |
4be6663752 | ||
![]() |
f7fa89638a | ||
![]() |
4fedb74005 | ||
![]() |
56d7e94946 | ||
![]() |
b2af5ed57d | ||
![]() |
b1d22843b5 | ||
![]() |
623f0339e6 | ||
![]() |
1f30cc1f90 | ||
![]() |
de8b38dd9c | ||
![]() |
e7054bb5b9 | ||
![]() |
6978ad11eb | ||
![]() |
327e61bbdd | ||
![]() |
2c94347668 | ||
![]() |
bce2c39ccc | ||
![]() |
8752607433 | ||
![]() |
c67d2d767d | ||
![]() |
253e55f70e | ||
![]() |
a7cf54897a | ||
![]() |
cb914fe32b | ||
![]() |
7aa65e98ce | ||
![]() |
8d2d7922f9 | ||
![]() |
bb7e927065 | ||
![]() |
349307b6a3 | ||
![]() |
9981f458d0 | ||
![]() |
a1b9ae2826 | ||
![]() |
9afb38d5e2 | ||
![]() |
97a7b34b99 | ||
![]() |
6398c9a097 | ||
![]() |
597d1d763e | ||
![]() |
2203956228 | ||
![]() |
b3c6e2004b | ||
![]() |
a2a31df98e | ||
![]() |
060bab46e2 | ||
![]() |
a350a167f3 | ||
![]() |
cc2079f4c9 | ||
![]() |
d778c99bbb | ||
![]() |
c4672b8de9 | ||
![]() |
1b40e339b7 | ||
![]() |
ee5ac46493 | ||
![]() |
ef398f7409 | ||
![]() |
5331bf90cd | ||
![]() |
9ce1ba75b2 | ||
![]() |
fba86930fe | ||
![]() |
a495fcbc5f | ||
![]() |
f11354dd35 | ||
![]() |
12a54278fc | ||
![]() |
6ddaeb99da | ||
![]() |
9ae2ffe7ae | ||
![]() |
5b0e47b1c5 | ||
![]() |
3e09a1dcee | ||
![]() |
63bd5f95cb | ||
![]() |
531c7592b2 | ||
![]() |
3d28168749 | ||
![]() |
0c2fd1d2db | ||
![]() |
811f839949 | ||
![]() |
ea26a6c1c9 | ||
![]() |
ac446e4f91 | ||
![]() |
78ae23df68 | ||
![]() |
d21e4afad2 | ||
![]() |
6f819bcb80 | ||
![]() |
4d237d3672 | ||
![]() |
af6d5c3063 | ||
![]() |
87b8989dc8 | ||
![]() |
2760318f3d | ||
![]() |
6596f3226b | ||
![]() |
22dd16d278 | ||
![]() |
d1b198222d | ||
![]() |
277c3c7f0b | ||
![]() |
f7d12670e7 | ||
![]() |
32d6b4a7a6 | ||
![]() |
6df3f22c7d | ||
![]() |
95cf521f63 | ||
![]() |
ef9e4b7ad9 | ||
![]() |
ac4a822930 | ||
![]() |
89678c2276 | ||
![]() |
e1bffabf10 | ||
![]() |
af8bb53c17 | ||
![]() |
0306e38130 | ||
![]() |
84812fb048 | ||
![]() |
2293e8c1e6 | ||
![]() |
368028c6f4 | ||
![]() |
13650b3e0d | ||
![]() |
4bb1198735 | ||
![]() |
3eb74da945 | ||
![]() |
5161fdd543 | ||
![]() |
377e0c3a0d | ||
![]() |
1c9860091a | ||
![]() |
a383f7409d | ||
![]() |
9a8fb593c0 | ||
![]() |
f4c6e0ad1b | ||
![]() |
b30b7c3318 | ||
![]() |
897eac050a | ||
![]() |
83974b6550 | ||
![]() |
7efd106658 | ||
![]() |
9cedab979c | ||
![]() |
510e2d5b88 | ||
![]() |
63d6a0b325 | ||
![]() |
da0943b319 | ||
![]() |
67875b1a9a | ||
![]() |
aa3d7e37fc | ||
![]() |
ede5914d70 | ||
![]() |
09c968f273 | ||
![]() |
345b580601 | ||
![]() |
61240777cf | ||
![]() |
7588345b6d | ||
![]() |
2fa26c37a9 | ||
![]() |
c34c63c128 | ||
![]() |
a26dadb224 | ||
![]() |
277ffd22be | ||
![]() |
f1479d489b | ||
![]() |
fba4e85311 | ||
![]() |
4a5991ade4 | ||
![]() |
a735c378f1 | ||
![]() |
217ebfc549 | ||
![]() |
df5155f1c7 | ||
![]() |
b93c0222a2 | ||
![]() |
083ca34f1b | ||
![]() |
5d5dfd4eb4 | ||
![]() |
429fdfa4a0 | ||
![]() |
302d723cfb | ||
![]() |
8f50ee82b3 | ||
![]() |
9dc1220496 | ||
![]() |
ae39bd94e5 | ||
![]() |
85ce23845f | ||
![]() |
890d60811b | ||
![]() |
49e68f5c8b | ||
![]() |
1df4679db8 | ||
![]() |
e03aae2d56 | ||
![]() |
9c60ce688b | ||
![]() |
fdce2cf477 | ||
![]() |
650cbd5a10 | ||
![]() |
b160367744 | ||
![]() |
6c115fb915 | ||
![]() |
7a408899df | ||
![]() |
4bce35f810 | ||
![]() |
2d83218f61 | ||
![]() |
d3e276d6fc | ||
![]() |
51a1097bb4 | ||
![]() |
db4f172fb8 | ||
![]() |
4d49e956b8 | ||
![]() |
b8296ac02f | ||
![]() |
d6385e8cdd | ||
![]() |
885319a885 | ||
![]() |
fded5007c1 | ||
![]() |
66ff14f719 | ||
![]() |
1257dc63d3 | ||
![]() |
50b6d380b6 | ||
![]() |
62b7d42a73 | ||
![]() |
21fe209246 | ||
![]() |
02cd4e4e06 | ||
![]() |
86fe2b61cb | ||
![]() |
4113bd9b53 | ||
![]() |
d924902dac | ||
![]() |
b269360ecb | ||
![]() |
ffd5addadb | ||
![]() |
c5e2b18695 | ||
![]() |
515a3973b7 | ||
![]() |
7bee10d5ce | ||
![]() |
22a4f509dc | ||
![]() |
3925a6261b | ||
![]() |
49b383fbe5 | ||
![]() |
4a484dc2ce | ||
![]() |
a14c4b489b | ||
![]() |
e91cd18804 | ||
![]() |
4c24363599 | ||
![]() |
e20c232f8f | ||
![]() |
1f11eea9b5 | ||
![]() |
42f9a00e8c | ||
![]() |
ad487e680c | ||
![]() |
3f431022a5 | ||
![]() |
cd037f0ce0 | ||
![]() |
37f7f21a03 | ||
![]() |
c653039590 | ||
![]() |
95a90a7a79 | ||
![]() |
4dc80595ac | ||
![]() |
8114a2376e | ||
![]() |
a523850216 | ||
![]() |
354f51dd70 | ||
![]() |
b271c12ebc | ||
![]() |
8ca41b5ba3 | ||
![]() |
edbe45332a | ||
![]() |
1bbd249275 | ||
![]() |
5148ff291b | ||
![]() |
a1dc00af42 | ||
![]() |
f1db993fee | ||
![]() |
4f0519552e | ||
![]() |
3625c5c518 | ||
![]() |
afbfb9761f | ||
![]() |
a5c636853a | ||
![]() |
d5d45ed1ba | ||
![]() |
d3f869c6c2 | ||
![]() |
46c29c438e | ||
![]() |
73a7255d3a | ||
![]() |
c7af85e0e1 | ||
![]() |
afc16e3d17 | ||
![]() |
59f6f5c212 | ||
![]() |
86f8763e69 | ||
![]() |
157becb017 | ||
![]() |
83ca9a7060 | ||
![]() |
1033be4503 | ||
![]() |
e67066f3ae | ||
![]() |
bc22808b0e | ||
![]() |
e05abb3539 | ||
![]() |
6153c7b97d | ||
![]() |
e574e5e2ec | ||
![]() |
e6571a1dfc | ||
![]() |
d566de0282 | ||
![]() |
558db061f5 | ||
![]() |
190f40ede8 | ||
![]() |
4b795d6ef5 | ||
![]() |
d139bd5b14 | ||
![]() |
bf34cb0c1e | ||
![]() |
eed091aad2 | ||
![]() |
535206056d | ||
![]() |
f2cb3b4f9e | ||
![]() |
54372e0a55 | ||
![]() |
5c17c38d1d | ||
![]() |
f68a8e4215 | ||
![]() |
70c2cb7dbf | ||
![]() |
7f6fd60821 | ||
![]() |
62c04fb205 | ||
![]() |
10c36f19bf | ||
![]() |
37d756b8fe | ||
![]() |
de1bc4809f | ||
![]() |
3d6ec93cde | ||
![]() |
c293c76398 | ||
![]() |
09e07a1713 | ||
![]() |
71f1a55437 | ||
![]() |
d9e22af5ef | ||
![]() |
bc0689a30d | ||
![]() |
9d47127921 | ||
![]() |
08a3bd77bd | ||
![]() |
9fe1151a04 | ||
![]() |
793952cb44 | ||
![]() |
d64a21b50c | ||
![]() |
274f9dde07 | ||
![]() |
5a884a4c56 | ||
![]() |
c55fd98179 | ||
![]() |
ffc0cd840b | ||
![]() |
96067946d0 | ||
![]() |
9339e7d916 | ||
![]() |
b4117aa62e | ||
![]() |
dc3a941e24 | ||
![]() |
b67ecbba4b | ||
![]() |
1175740ba2 | ||
![]() |
378ed0100f | ||
![]() |
cf87339ac4 | ||
![]() |
c23a90f104 | ||
![]() |
d337be0f40 | ||
![]() |
cf7c6f78ea | ||
![]() |
efa68f5044 | ||
![]() |
b9be85d99c | ||
![]() |
dfc4553fc6 | ||
![]() |
08c9539abe | ||
![]() |
fd18583df2 | ||
![]() |
7c4f1c7b22 | ||
![]() |
bdb6c962ea | ||
![]() |
f1c217b087 | ||
![]() |
4b6277abf5 | ||
![]() |
344e0d55ff | ||
![]() |
89a6a98bbf | ||
![]() |
fcc7dc0913 | ||
![]() |
1b74bffc06 | ||
![]() |
0f11f14c3e | ||
![]() |
e70fe6f097 | ||
![]() |
b70649f136 | ||
![]() |
7b13684137 | ||
![]() |
c4689fcbb3 | ||
![]() |
d8f644c5b4 | ||
![]() |
c808bf2e61 | ||
![]() |
0fb55bd6c6 | ||
![]() |
c5dfea788c | ||
![]() |
120e5c9171 | ||
![]() |
a97039a727 | ||
![]() |
e9ba65f8f6 | ||
![]() |
a264abf814 | ||
![]() |
0a2eb07844 | ||
![]() |
bfab265ccf | ||
![]() |
cd59166efb | ||
![]() |
06ed5f6079 | ||
![]() |
6b70583573 | ||
![]() |
c3cbaa6ac2 | ||
![]() |
f61d820d6f | ||
![]() |
03ad5527f8 | ||
![]() |
cce736410b | ||
![]() |
8c515bd03f | ||
![]() |
8dcb3ed45d | ||
![]() |
4f3f24ac10 | ||
![]() |
d074e5c9b3 | ||
![]() |
d2d1d1dba7 | ||
![]() |
891e241d1a | ||
![]() |
5c4a3d578b | ||
![]() |
fcf0adfd80 | ||
![]() |
c42a47ac48 | ||
![]() |
fa48b033af | ||
![]() |
808927a58a | ||
![]() |
dc717c9fb5 | ||
![]() |
a2804d813a | ||
![]() |
847ab6149a | ||
![]() |
dc74d2877b | ||
![]() |
6534176685 | ||
![]() |
9542b9f231 | ||
![]() |
dbba61a99f | ||
![]() |
c2496a15b8 | ||
![]() |
facf84d9a8 | ||
![]() |
459c8330f9 | ||
![]() |
0c8e2632a2 | ||
![]() |
b17e9deca0 | ||
![]() |
c296e72c30 | ||
![]() |
637125e1fc | ||
![]() |
445bfda801 | ||
![]() |
ebde42328a | ||
![]() |
a0bf14b576 | ||
![]() |
2e7caabde3 | ||
![]() |
bb052fd4c9 | ||
![]() |
28ef8c6761 | ||
![]() |
15e8e096ed | ||
![]() |
6007de017f | ||
![]() |
775b5122ef | ||
![]() |
fed00122d7 | ||
![]() |
426bee882c | ||
![]() |
d37de197fc | ||
![]() |
447ece3696 | ||
![]() |
a73f39e59c | ||
![]() |
f912aac140 | ||
![]() |
3caabd3e0e | ||
![]() |
88576271e2 | ||
![]() |
b088551005 | ||
![]() |
130e11a629 | ||
![]() |
d5e0ae7b37 | ||
![]() |
e6f56a74a4 | ||
![]() |
1bc59cfa7f | ||
![]() |
41bae262a5 | ||
![]() |
ae65228805 | ||
![]() |
391ee6e621 | ||
![]() |
0a87df3d82 | ||
![]() |
cb4ae21903 | ||
![]() |
679cf2554d | ||
![]() |
d473d53879 | ||
![]() |
6531061b48 | ||
![]() |
3347e8fba8 | ||
![]() |
84067126a1 | ||
![]() |
da9bebe923 | ||
![]() |
b371fd6709 | ||
![]() |
884d443c5b | ||
![]() |
df58aa78ae | ||
![]() |
2131e892ad | ||
![]() |
63380d3e12 | ||
![]() |
c572a91b38 | ||
![]() |
20dde6e896 | ||
![]() |
042b66ca5c | ||
![]() |
8d8990761a | ||
![]() |
a07741b5c5 | ||
![]() |
f851a4d2c5 | ||
![]() |
c8d069c787 | ||
![]() |
5ce30a3000 | ||
![]() |
26e0f43fa0 | ||
![]() |
08c1bedca1 | ||
![]() |
15537586c4 | ||
![]() |
a04ba4ae10 | ||
![]() |
57ea6379ab | ||
![]() |
c3abe50ed4 | ||
![]() |
f48caf9f70 | ||
![]() |
9a413c14c3 | ||
![]() |
8915c5dd8e | ||
![]() |
e7561d4794 | ||
![]() |
820b99dbc7 | ||
![]() |
aff0fb3a60 | ||
![]() |
d3bf5c3e0a | ||
![]() |
dec2703cc7 | ||
![]() |
edd1c9442e | ||
![]() |
18568c86be | ||
![]() |
84d0ba525f | ||
![]() |
6290663f02 | ||
![]() |
be046a1ddd | ||
![]() |
96ee4bd9e5 | ||
![]() |
923af85d18 | ||
![]() |
ce36e86bb2 | ||
![]() |
a4f455b38f | ||
![]() |
01b8bd9d4a | ||
![]() |
cfcc051ce4 | ||
![]() |
0b0993be9a | ||
![]() |
d07b0dbc98 | ||
![]() |
daa7b54dab | ||
![]() |
de9fcb9af9 | ||
![]() |
40e0934504 | ||
![]() |
009ec433be | ||
![]() |
e1d82d70ee | ||
![]() |
7a9ba04ff4 | ||
![]() |
513b4b7d3e | ||
![]() |
ce4157933f | ||
![]() |
5d1085a64a | ||
![]() |
a00f2dcbda | ||
![]() |
b52a6f7f61 | ||
![]() |
5146e44574 | ||
![]() |
90e1cea679 | ||
![]() |
c9b506ae10 | ||
![]() |
14ebdad7b2 | ||
![]() |
210308695b | ||
![]() |
d5cc2263f5 | ||
![]() |
47e3f2dc58 | ||
![]() |
6dc16b288d | ||
![]() |
daf97be9ad | ||
![]() |
2bb2190410 | ||
![]() |
aff1a7030d | ||
![]() |
8877322357 | ||
![]() |
bc672e94f8 | ||
![]() |
a03bcf8e62 | ||
![]() |
20673c4ead | ||
![]() |
5321d00ee9 | ||
![]() |
e6b2acabd5 | ||
![]() |
bfd7f688ab | ||
![]() |
ba02531aa4 | ||
![]() |
210c3a0e28 | ||
![]() |
68f0ecc45c | ||
![]() |
0965d03f1a | ||
![]() |
496641f594 | ||
![]() |
684c258e2d | ||
![]() |
5e96917508 | ||
![]() |
17096ad11b | ||
![]() |
bd883c9f38 | ||
![]() |
6520f8a0d7 | ||
![]() |
2eee50ad81 | ||
![]() |
8560fd7e81 | ||
![]() |
f718147ae9 | ||
![]() |
cd12c4c891 | ||
![]() |
65f114ce05 | ||
![]() |
497083be97 | ||
![]() |
e26860ea5a | ||
![]() |
094df212b4 | ||
![]() |
cc22985dc5 | ||
![]() |
ad9a2711c4 | ||
![]() |
daf44c531c | ||
![]() |
4e12eb1552 | ||
![]() |
c846cc999f | ||
![]() |
47d430292c | ||
![]() |
5e1ff2243f | ||
![]() |
a35bef58f2 | ||
![]() |
0005d84974 | ||
![]() |
19558cb871 | ||
![]() |
45e884127f | ||
![]() |
c87085a226 | ||
![]() |
79b970256f | ||
![]() |
70f038f15f | ||
![]() |
9cabd7ef08 | ||
![]() |
d89e4ccfdf | ||
![]() |
1bcc4d199e | ||
![]() |
2e85e88c5d | ||
![]() |
6ab67fe25b | ||
![]() |
8563277a89 | ||
![]() |
e458cc90b0 | ||
![]() |
651e3a21b9 | ||
![]() |
f6b969cfb1 | ||
![]() |
d2aa940d46 | ||
![]() |
ab435a72ea | ||
![]() |
a56f4b8745 | ||
![]() |
d003b0897c | ||
![]() |
581bb2de77 | ||
![]() |
495e385228 | ||
![]() |
10ba36ba44 | ||
![]() |
eae396424f | ||
![]() |
a7891bb266 | ||
![]() |
6e82409dbc | ||
![]() |
984db18be3 | ||
![]() |
c99bc96c08 | ||
![]() |
3e7030abc2 | ||
![]() |
6dad3b299b | ||
![]() |
5e997f5a3e | ||
![]() |
601d573283 | ||
![]() |
6ae6ca7fbb | ||
![]() |
c3d38afc3d | ||
![]() |
4e19964249 | ||
![]() |
a6c0efcb81 | ||
![]() |
fcc71c0d5f | ||
![]() |
a59d10b6c1 | ||
![]() |
a48e4eb4ee | ||
![]() |
2a3668bb18 | ||
![]() |
804d0d9113 | ||
![]() |
88b893e6c0 | ||
![]() |
2874a7495e | ||
![]() |
40d8f7a93d | ||
![]() |
84cd51205f | ||
![]() |
bac1832f27 | ||
![]() |
8bf1e22407 | ||
![]() |
e9f43f925c | ||
![]() |
aa632edf5c | ||
![]() |
57315d75c6 | ||
![]() |
4552bc85b0 | ||
![]() |
6b7795118c | ||
![]() |
1960782d8e | ||
![]() |
8836be3766 | ||
![]() |
8697993149 | ||
![]() |
b88c7eb4e4 | ||
![]() |
9066bce0d5 | ||
![]() |
f15b90782a | ||
![]() |
0642bf7d73 | ||
![]() |
981d6d559c | ||
![]() |
39327ff3ea | ||
![]() |
b098ac029b | ||
![]() |
7e0e2fbb67 | ||
![]() |
8a181c747c | ||
![]() |
68fdb167c2 | ||
![]() |
17563d1a4b | ||
![]() |
370881104e | ||
![]() |
62b1b18326 | ||
![]() |
214e43bd4b | ||
![]() |
358e0850ad | ||
![]() |
c183428107 | ||
![]() |
6de937703a | ||
![]() |
10cb2b70f1 | ||
![]() |
9230db3f99 | ||
![]() |
66e58ab74e | ||
![]() |
99b7af64c0 | ||
![]() |
4295dd6246 | ||
![]() |
fb2d92c749 | ||
![]() |
07b1969a35 | ||
![]() |
886403bf1e | ||
![]() |
e8b21c1429 | ||
![]() |
007d62e61d | ||
![]() |
f88d44f0ec | ||
![]() |
4401df6203 | ||
![]() |
e6f23ab35b | ||
![]() |
eea20ced57 | ||
![]() |
b7134221cb | ||
![]() |
8be605629a | ||
![]() |
1a3d580116 | ||
![]() |
a62ed54d07 | ||
![]() |
36a570eeb0 | ||
![]() |
8ed8b5a33c | ||
![]() |
26c749c219 | ||
![]() |
1d910f8d66 | ||
![]() |
de11644e9b | ||
![]() |
621db49fbf | ||
![]() |
b593795844 | ||
![]() |
0f800b61f6 | ||
![]() |
94fd303f8e | ||
![]() |
09a134d442 | ||
![]() |
58ea2c530e | ||
![]() |
84e4167dbd | ||
![]() |
54e9ea6478 | ||
![]() |
4c8d9c8f7f | ||
![]() |
e7550f7a43 | ||
![]() |
ac86737050 | ||
![]() |
e3122127c0 | ||
![]() |
d6918077bf | ||
![]() |
9d0366d010 | ||
![]() |
3d0cd11ba4 | ||
![]() |
64dbbd54b4 | ||
![]() |
539be586ce | ||
![]() |
a240fd5d5f | ||
![]() |
4e69cfe23c | ||
![]() |
2ab0a57a41 | ||
![]() |
ebf9e741c2 | ||
![]() |
e8075e30e4 | ||
![]() |
1839d7cb8f | ||
![]() |
2d84b0775a | ||
![]() |
426379ec17 | ||
![]() |
8315759c83 | ||
![]() |
04393e60bb | ||
![]() |
031a17ea50 | ||
![]() |
60501fcd72 | ||
![]() |
8e607d48f7 | ||
![]() |
e02d93f979 | ||
![]() |
76514e2d72 | ||
![]() |
689012131f | ||
![]() |
6cdcf92782 | ||
![]() |
9c8bcbfdd3 | ||
![]() |
0b83a66b85 | ||
![]() |
9711cc868c | ||
![]() |
f8cb7599e6 | ||
![]() |
7636618e23 | ||
![]() |
5bc54c12f1 | ||
![]() |
e10e530dee | ||
![]() |
d69118b085 | ||
![]() |
dc90549b9d | ||
![]() |
b552dbc904 | ||
![]() |
a6a1678b47 | ||
![]() |
7a46ef5f19 | ||
![]() |
f9e0f7b390 | ||
![]() |
9211baf7ec | ||
![]() |
de6131f4f5 | ||
![]() |
2cb11e443c | ||
![]() |
a43ffcdef4 | ||
![]() |
6615e68430 | ||
![]() |
36daa7ccc1 | ||
![]() |
6e5481f345 | ||
![]() |
ba1c14ca0e | ||
![]() |
c69bb2ef71 | ||
![]() |
9cb4754132 | ||
![]() |
5ba8289c87 | ||
![]() |
258782c648 | ||
![]() |
c568bc1515 | ||
![]() |
da668f93cf | ||
![]() |
037dbd792f | ||
![]() |
7ec7afed87 | ||
![]() |
bea50e6db5 | ||
![]() |
6a00e75816 | ||
![]() |
957adaf6ee | ||
![]() |
827fb33eeb | ||
![]() |
19c96ee83f | ||
![]() |
5a7f52c773 | ||
![]() |
dddeff802f | ||
![]() |
91f6310892 | ||
![]() |
0389642543 | ||
![]() |
8528e0beff | ||
![]() |
e665a8f18b | ||
![]() |
6d5acbad2c | ||
![]() |
7217d0f753 | ||
![]() |
16a5d88dfb | ||
![]() |
646a46727f | ||
![]() |
f5e9197f98 | ||
![]() |
b47f26684b | ||
![]() |
3a03b5f1c6 | ||
![]() |
3d0dcead50 | ||
![]() |
b64b41c11c | ||
![]() |
77c5330f91 | ||
![]() |
2b55ec02ff | ||
![]() |
49ebae6e63 | ||
![]() |
44a9db48a6 | ||
![]() |
0008a72be1 | ||
![]() |
a43acaaa07 | ||
![]() |
e6c9abb4e5 | ||
![]() |
3b9451184c | ||
![]() |
45d1727dbe | ||
![]() |
8d7b611c44 | ||
![]() |
c3adb9b6d6 | ||
![]() |
d87283eb31 | ||
![]() |
d139c22782 | ||
![]() |
e557021ad9 | ||
![]() |
37af5de25c | ||
![]() |
db6c84775b | ||
![]() |
72d8b4aa84 | ||
![]() |
170b7c4379 | ||
![]() |
79e9e1a780 | ||
![]() |
98dcc62bb7 | ||
![]() |
ea0fb00bde | ||
![]() |
4aa6b0b995 | ||
![]() |
57d11e825b | ||
![]() |
2f43b6e552 | ||
![]() |
765f8a2d1f | ||
![]() |
04c727a0c8 | ||
![]() |
55518cb044 | ||
![]() |
cebd1aa75d | ||
![]() |
4a38a0be70 | ||
![]() |
b4b9d91ea6 | ||
![]() |
a6a2bcff3b | ||
![]() |
2979d8b62a | ||
![]() |
aba2068a84 | ||
![]() |
076948a680 | ||
![]() |
1cfabe43a5 | ||
![]() |
02b87c8c6a | ||
![]() |
eb94e06d54 | ||
![]() |
d3b3939d26 | ||
![]() |
9c5d2fbf84 | ||
![]() |
428e40d7fe | ||
![]() |
9c819835ca | ||
![]() |
626169de11 | ||
![]() |
72ef5f428e | ||
![]() |
4ae3f7b016 | ||
![]() |
7c94837af0 | ||
![]() |
2a91346155 | ||
![]() |
ec6d18968f | ||
![]() |
b61e63249c | ||
![]() |
d73aa605f9 | ||
![]() |
14f4808434 | ||
![]() |
2bc6d7ad0d | ||
![]() |
888052cd9c | ||
![]() |
bdc2281fdc | ||
![]() |
d01edc2312 | ||
![]() |
484a3aa731 | ||
![]() |
51be23470f | ||
![]() |
19495ffce9 | ||
![]() |
bd766d33db | ||
![]() |
ff8b3f8837 | ||
![]() |
e678e6d7f9 | ||
![]() |
f6f3447f1d | ||
![]() |
e1c1f305c4 | ||
![]() |
c8c9001277 | ||
![]() |
3422951e47 | ||
![]() |
3278c11cce | ||
![]() |
e00dea51f1 | ||
![]() |
5bf411039d | ||
![]() |
62ca394c9a | ||
![]() |
255b89bbb3 | ||
![]() |
f7987f4b29 | ||
![]() |
0b583439dd | ||
![]() |
ca481dc6f5 | ||
![]() |
f6a92a4cc3 | ||
![]() |
55a6219a42 | ||
![]() |
ad653f10df | ||
![]() |
7a780486f6 | ||
![]() |
c01b0eff9d | ||
![]() |
3a4614e2b7 | ||
![]() |
44ee8859b1 | ||
![]() |
3dd7878ae5 | ||
![]() |
0305a005ab | ||
![]() |
2229f0e3e9 | ||
![]() |
d9aab7afa2 | ||
![]() |
0558f30646 | ||
![]() |
238f257c6c | ||
![]() |
40372e7cea | ||
![]() |
b65a060fca | ||
![]() |
c1ed748188 | ||
![]() |
b911521ccc | ||
![]() |
b046679542 | ||
![]() |
3decc95a20 | ||
![]() |
c301198006 | ||
![]() |
190a5f2067 | ||
![]() |
27e1a07eec | ||
![]() |
64feae9f1c | ||
![]() |
085158721e | ||
![]() |
44888b048d | ||
![]() |
b9a12e46bf | ||
![]() |
2fe5e62e72 | ||
![]() |
6305e1a908 | ||
![]() |
6bf7a2e26c | ||
![]() |
34487175d8 | ||
![]() |
f02db914bf | ||
![]() |
18e0a59e2b | ||
![]() |
e4371af284 | ||
![]() |
44d5f69de1 | ||
![]() |
d13e0adb00 | ||
![]() |
e60e573ac0 | ||
![]() |
91dbc9e3d7 | ||
![]() |
8ccbea2c21 | ||
![]() |
211cb5e4f2 | ||
![]() |
b60c59216d | ||
![]() |
d20f3180cf | ||
![]() |
17761af9d6 | ||
![]() |
067817bace | ||
![]() |
51800d91b2 | ||
![]() |
3640c4f249 | ||
![]() |
05aa38b591 | ||
![]() |
983dcd8656 | ||
![]() |
59cf4fb222 | ||
![]() |
d6ebcc97e3 | ||
![]() |
047579c394 | ||
![]() |
a90fd4b776 | ||
![]() |
03d3a5db11 | ||
![]() |
bf5e61490d | ||
![]() |
d87fa589a8 | ||
![]() |
1fff1c2b14 | ||
![]() |
58d66b6e70 | ||
![]() |
202d13d509 | ||
![]() |
db808de06c | ||
![]() |
d8dae09f39 | ||
![]() |
32640e0796 | ||
![]() |
4e80441167 | ||
![]() |
075cfb20b1 | ||
![]() |
56e4e9be5e | ||
![]() |
53c798ebdb | ||
![]() |
022a4d1ea2 | ||
![]() |
dfa25d8445 | ||
![]() |
b2efe0d981 | ||
![]() |
2a7f846d3f | ||
![]() |
da5817d08a | ||
![]() |
cacf2f651a | ||
![]() |
605c816a32 | ||
![]() |
1587be2fa8 | ||
![]() |
00b23ca20c | ||
![]() |
34db20ab0c | ||
![]() |
0d271d925a | ||
![]() |
b7da43a52a | ||
![]() |
44af5d59fb | ||
![]() |
bc776993a9 | ||
![]() |
9a19ce9ca4 | ||
![]() |
6855296de4 | ||
![]() |
800a31f160 | ||
![]() |
8b83b37b09 | ||
![]() |
43e95cfdc6 | ||
![]() |
ae2a697e01 | ||
![]() |
b695c7f600 | ||
![]() |
3a1a383383 | ||
![]() |
97810d02ab | ||
![]() |
30b337a364 | ||
![]() |
8f6c847562 | ||
![]() |
e5d54c95f3 | ||
![]() |
eb5ad81ec1 | ||
![]() |
3aa9f0ca2f | ||
![]() |
8e587358aa | ||
![]() |
4492f4a864 | ||
![]() |
b453225941 | ||
![]() |
13ccfda009 | ||
![]() |
95ffb0a687 | ||
![]() |
f131edf857 | ||
![]() |
bd2d26418a | ||
![]() |
aeb3b2a030 | ||
![]() |
7bc5219d81 | ||
![]() |
6cb4ea4b0f | ||
![]() |
0bdd33ef4a | ||
![]() |
792de4cd3d | ||
![]() |
3f5fbbc71b | ||
![]() |
206b40ce1b | ||
![]() |
43c56b5534 | ||
![]() |
a1076539dc | ||
![]() |
3071e19584 | ||
![]() |
f2130998ec | ||
![]() |
8a5ca8c91f | ||
![]() |
fada13e2d3 | ||
![]() |
6e19eb943d | ||
![]() |
c70fe3430c | ||
![]() |
3c48264539 | ||
![]() |
539cf2207b | ||
![]() |
f0e897713c | ||
![]() |
a448092008 | ||
![]() |
f5b46707ff | ||
![]() |
e6247d4428 | ||
![]() |
d0869b235a | ||
![]() |
464900d95b | ||
![]() |
368274239e | ||
![]() |
ee33197494 | ||
![]() |
d3ea743707 | ||
![]() |
976d4b8ce2 | ||
![]() |
b77fc0d32a | ||
![]() |
bd3716609e | ||
![]() |
5b87cc9009 | ||
![]() |
4f7be8d2cb | ||
![]() |
8733e7782f | ||
![]() |
e03b0dfa01 | ||
![]() |
efafd2094a | ||
![]() |
1560335749 | ||
![]() |
5bee155f1e | ||
![]() |
c9dc9a323f | ||
![]() |
87e7e00705 | ||
![]() |
57681b35ea | ||
![]() |
8fb09d7b7d | ||
![]() |
168f750863 | ||
![]() |
3e1acbd3bf | ||
![]() |
21ef2adcf6 | ||
![]() |
3f6159e976 | ||
![]() |
555b5ec112 | ||
![]() |
60a9bcae46 | ||
![]() |
eeb1341c1f | ||
![]() |
c77b50d51b | ||
![]() |
8644ce32d5 | ||
![]() |
94506aca52 | ||
![]() |
eee4e1f4b5 | ||
![]() |
c1942d012f | ||
![]() |
fe846b463a | ||
![]() |
0ea2e68249 | ||
![]() |
be0445b227 | ||
![]() |
48249f3093 | ||
![]() |
8d7110735d | ||
![]() |
94957850c3 | ||
![]() |
fa2cfc8427 | ||
![]() |
3d467c43ba | ||
![]() |
b76032044d | ||
![]() |
495b84204c | ||
![]() |
ea4b299de6 | ||
![]() |
acb5e2afd4 | ||
![]() |
50863d6ac2 | ||
![]() |
e15eb03299 | ||
![]() |
be48791d51 | ||
![]() |
c0e1a5b401 | ||
![]() |
cb1b467a21 | ||
![]() |
f14346ff32 | ||
![]() |
af8108a649 | ||
![]() |
5743928126 | ||
![]() |
388d37bf9c | ||
![]() |
d572fc737f | ||
![]() |
47b0f1b527 | ||
![]() |
1afa7ecf3c | ||
![]() |
9139febbdf | ||
![]() |
2dd0b56333 | ||
![]() |
3b970209a5 | ||
![]() |
6f590eb194 | ||
![]() |
b20b8fb243 | ||
![]() |
7e4a212951 | ||
![]() |
6dfeed3a26 | ||
![]() |
06a27199ee | ||
![]() |
76039e5eb9 | ||
![]() |
6a4aaff8d6 | ||
![]() |
9e2985864a | ||
![]() |
412057b512 | ||
![]() |
963caadced | ||
![]() |
8388a8a5fc | ||
![]() |
a801c8f8be | ||
![]() |
9d8ad73e63 | ||
![]() |
182f6c8a81 | ||
![]() |
1e4a3536cf | ||
![]() |
169a314664 | ||
![]() |
904eed648b | ||
![]() |
3bb94adece | ||
![]() |
105b70fcad | ||
![]() |
b4bf7c7589 | ||
![]() |
ff425d6d2b | ||
![]() |
4fceb854b3 | ||
![]() |
3adac154b4 | ||
![]() |
a320cf8f7c | ||
![]() |
1ed0884dfd | ||
![]() |
021e9726c6 | ||
![]() |
3c438757e3 | ||
![]() |
99c4a65df5 | ||
![]() |
2c442fc87b | ||
![]() |
44ba0d76de | ||
![]() |
17aa77ad41 | ||
![]() |
c18302b812 | ||
![]() |
de8e9bde49 | ||
![]() |
000cbd11a2 | ||
![]() |
5e3b89636f | ||
![]() |
dd085a14fa | ||
![]() |
bfe558d887 | ||
![]() |
4841a0439d | ||
![]() |
cac76857c4 | ||
![]() |
6b8b7c9143 | ||
![]() |
53584026dc | ||
![]() |
7900ad913f | ||
![]() |
8ec844a8fe | ||
![]() |
19ff953ab2 | ||
![]() |
e29c211cf2 | ||
![]() |
2492a9c204 | ||
![]() |
61de1de532 | ||
![]() |
b5862da776 | ||
![]() |
e0c802bf67 | ||
![]() |
dcac138ff8 | ||
![]() |
23411a608f | ||
![]() |
87facd2663 | ||
![]() |
bad0776cab | ||
![]() |
a063aabc7c | ||
![]() |
1fdbdf34b9 | ||
![]() |
624fd71dbb | ||
![]() |
dfa10883d3 | ||
![]() |
aff40df707 | ||
![]() |
42f9594210 | ||
![]() |
3e3a080b70 | ||
![]() |
39534aeda4 | ||
![]() |
e39b053d2d | ||
![]() |
28fd7460cb | ||
![]() |
82b207b03a | ||
![]() |
4984cb9b26 | ||
![]() |
e2ba265048 | ||
![]() |
d1cd497a23 | ||
![]() |
dd5ce752da | ||
![]() |
e5e95e7dec | ||
![]() |
f5e4c63fed | ||
![]() |
70d42bb864 | ||
![]() |
82df5b9515 | ||
![]() |
6568c4abf8 | ||
![]() |
d79b1c9a58 | ||
![]() |
26565b627a | ||
![]() |
c0a53cb90c | ||
![]() |
2bcbac5ab3 | ||
![]() |
5581fdcab8 | ||
![]() |
6a8161cd98 | ||
![]() |
e0b067fadd | ||
![]() |
f37ddfe00f | ||
![]() |
3a887f597b | ||
![]() |
52d359827e | ||
![]() |
a70ccbb0d0 | ||
![]() |
2b6386c522 | ||
![]() |
60ae14719d | ||
![]() |
a4594b2853 | ||
![]() |
6578d2eb49 | ||
![]() |
e543c0aa2c | ||
![]() |
17c80416fe | ||
![]() |
f2cb7f741b | ||
![]() |
51d9e9b9af | ||
![]() |
b1e1b801b5 | ||
![]() |
04ff05c22a | ||
![]() |
81c9144448 | ||
![]() |
70d456a6dc | ||
![]() |
b55c05aaed | ||
![]() |
01fd146c99 | ||
![]() |
5d849b3ada | ||
![]() |
1a4eaec47f | ||
![]() |
5b9d40a4f9 | ||
![]() |
e6e9d201ce | ||
![]() |
9128e0b55f | ||
![]() |
7f893a8868 | ||
![]() |
89f92ed027 | ||
![]() |
99e06f6539 | ||
![]() |
12da5e5381 | ||
![]() |
a7bb026c1b | ||
![]() |
8ce59a3098 | ||
![]() |
a1d4b3d19e | ||
![]() |
64cc49055b | ||
![]() |
91ece39517 | ||
![]() |
a99e742472 | ||
![]() |
d332369872 | ||
![]() |
205bcf9c22 | ||
![]() |
344d404238 | ||
![]() |
8b2dc514f4 | ||
![]() |
bee62d4769 | ||
![]() |
fb36fb379a | ||
![]() |
a2c4f4a51d | ||
![]() |
b0d713dc0c | ||
![]() |
5a2a0e3d6d | ||
![]() |
7fe638130e | ||
![]() |
9763208688 | ||
![]() |
295fd0fd90 | ||
![]() |
c052f31424 | ||
![]() |
3486d52a26 | ||
![]() |
88c5c7d9dc | ||
![]() |
315e9b0595 | ||
![]() |
3eba89aeb9 | ||
![]() |
1680ad233e | ||
![]() |
93bc4e92a9 | ||
![]() |
7536f98e6e | ||
![]() |
afee97a706 | ||
![]() |
73a92497ed | ||
![]() |
67cef0f6d9 | ||
![]() |
6ca5e11371 | ||
![]() |
05a597313b | ||
![]() |
33d540e1c9 | ||
![]() |
d115372c3b | ||
![]() |
e637896ad3 | ||
![]() |
ce802cc737 | ||
![]() |
bf342ed289 | ||
![]() |
40ec5bbe86 | ||
![]() |
41dbd2d25f | ||
![]() |
f263b5534a | ||
![]() |
7ed4787496 | ||
![]() |
1428887204 | ||
![]() |
0fc828f006 | ||
![]() |
13906a7d62 | ||
![]() |
3c0dda9a82 | ||
![]() |
c42333cd35 | ||
![]() |
c675dc8b84 | ||
![]() |
5e9853b043 | ||
![]() |
c7fdcc2bbd | ||
![]() |
8a00ae95b8 | ||
![]() |
a1ebf6c6ad | ||
![]() |
ada5854d10 | ||
![]() |
fe191bb0df | ||
![]() |
9eb091fbf4 | ||
![]() |
57e760844f | ||
![]() |
20644a7a67 | ||
![]() |
b3109aed0b | ||
![]() |
9ba999feb0 | ||
![]() |
7c9e85793b | ||
![]() |
6af8263952 | ||
![]() |
83d1d860a6 | ||
![]() |
8830240182 | ||
![]() |
c3061e75b5 | ||
![]() |
5f1bb7c1d0 | ||
![]() |
c6f4c868b2 | ||
![]() |
c634c64e70 | ||
![]() |
da2b7dbf7e | ||
![]() |
26267507eb | ||
![]() |
24d0c5057b | ||
![]() |
b05026a6e6 | ||
![]() |
8036f3d7f7 | ||
![]() |
23e309d38e | ||
![]() |
bf92c6b2e9 | ||
![]() |
c00b5edaf7 | ||
![]() |
cb09ca13dc | ||
![]() |
3d68b8e629 | ||
![]() |
b3173581e5 | ||
![]() |
ddac1d0f98 | ||
![]() |
db6a359bea | ||
![]() |
e7221e6a32 | ||
![]() |
db9c2640c7 | ||
![]() |
ca67e144e4 | ||
![]() |
da2346ed83 | ||
![]() |
a87818f3d0 | ||
![]() |
5092f8c0bf | ||
![]() |
af0787c0b1 | ||
![]() |
721b4ac797 | ||
![]() |
26a69092cc | ||
![]() |
2bd0c75055 | ||
![]() |
d6f3c57293 | ||
![]() |
518387e7bb | ||
![]() |
ca6dfbf2d0 | ||
![]() |
da6d8a74fd | ||
![]() |
e35e4ef152 | ||
![]() |
40fc6ec2e0 | ||
![]() |
b91973aec3 | ||
![]() |
047e70ad46 | ||
![]() |
112c1eb793 | ||
![]() |
c479b31670 | ||
![]() |
43ed8c8fce | ||
![]() |
613fa44c27 | ||
![]() |
f21216286d | ||
![]() |
7298d0d75a | ||
![]() |
ee0fbcdfd6 | ||
![]() |
c362ad12c7 | ||
![]() |
8a1a712d6d | ||
![]() |
1f0f6b3e51 | ||
![]() |
11487e77ca | ||
![]() |
fd0fd4df55 | ||
![]() |
d95a33787b | ||
![]() |
e5661098d9 | ||
![]() |
d020b01794 | ||
![]() |
d8b1264024 | ||
![]() |
cddd17650b | ||
![]() |
a0f9c70036 | ||
![]() |
2e05416fb5 | ||
![]() |
d32ebd66de | ||
![]() |
c6a99f1000 | ||
![]() |
bafe52e310 | ||
![]() |
e08abc1fc2 | ||
![]() |
2a74b11cce | ||
![]() |
b0b3ccfd53 | ||
![]() |
6c68456f7a | ||
![]() |
3e8e9b4ecc | ||
![]() |
d6ebc343d5 | ||
![]() |
73be416807 | ||
![]() |
0cb65a29ba | ||
![]() |
13198f2ab4 | ||
![]() |
cd92f37435 | ||
![]() |
5d8fb376ab | ||
![]() |
47150364d8 | ||
![]() |
792b123598 | ||
![]() |
acf5c8e9ba | ||
![]() |
53561668fc | ||
![]() |
7cfe58d311 | ||
![]() |
cd51fac621 | ||
![]() |
adde5541e2 | ||
![]() |
6e56d3ff06 | ||
![]() |
ec761f6329 | ||
![]() |
6363c90e37 | ||
![]() |
c30f105be5 | ||
![]() |
9f85b2206a | ||
![]() |
42515fd084 | ||
![]() |
9a7c04fe7b | ||
![]() |
debb21f5f9 | ||
![]() |
18b9bf42e1 | ||
![]() |
6ded83d132 | ||
![]() |
71d37a1c6c | ||
![]() |
3975d06cde | ||
![]() |
ee168bafe0 | ||
![]() |
42ed7e0ae1 | ||
![]() |
0e92447974 | ||
![]() |
40492e6c01 | ||
![]() |
69a1193154 | ||
![]() |
0f65af8958 | ||
![]() |
2ad1d086e0 | ||
![]() |
f8b7baef24 | ||
![]() |
90be9d1add | ||
![]() |
20f931c5cc | ||
![]() |
9997b1adbb | ||
![]() |
eb616eedc7 | ||
![]() |
a5de39a366 | ||
![]() |
57bc2b2533 | ||
![]() |
d1ce16d2b1 | ||
![]() |
54fb01cd0d | ||
![]() |
370cfbf22a | ||
![]() |
d198a2ba21 | ||
![]() |
580ad58dd6 | ||
![]() |
b5f7c5f318 | ||
![]() |
7e2de594a4 | ||
![]() |
36984e08b5 | ||
![]() |
f8031e1eca | ||
![]() |
5bc49b2e74 | ||
![]() |
ba81b4b465 | ||
![]() |
5cc31a7c5e | ||
![]() |
de70719d38 | ||
![]() |
9f315b3af1 | ||
![]() |
d5187d1808 | ||
![]() |
ca7d977342 | ||
![]() |
062985c5a0 | ||
![]() |
8922d7d48d | ||
![]() |
3ba16f2903 | ||
![]() |
6a1a347579 | ||
![]() |
6c4f27aff5 | ||
![]() |
f6dce0fbda | ||
![]() |
1ac42bb56d | ||
![]() |
b0a674b471 | ||
![]() |
1c1a90c12f | ||
![]() |
d4ee1f8b98 | ||
![]() |
152382a0c9 | ||
![]() |
776972514a | ||
![]() |
e072bf9fe3 | ||
![]() |
927415f9a3 | ||
![]() |
76b2ab1f25 | ||
![]() |
c9a0bbda01 | ||
![]() |
cbabe44461 | ||
![]() |
5c313f986c | ||
![]() |
f2682c6d30 | ||
![]() |
3571f8bd04 | ||
![]() |
dfcd5fc4d0 | ||
![]() |
b8ea0ab0f9 | ||
![]() |
4434d6f024 | ||
![]() |
8cee882c08 | ||
![]() |
9f87b92937 | ||
![]() |
c13f12f729 | ||
![]() |
dfe7981e7f | ||
![]() |
6e1ddb482e | ||
![]() |
924bcb0d64 | ||
![]() |
a6682c9b73 | ||
![]() |
a529836937 | ||
![]() |
a05da2656a | ||
![]() |
30af77614e | ||
![]() |
eedaa63771 | ||
![]() |
f151f7bd62 | ||
![]() |
00943717a2 | ||
![]() |
8cce81585a | ||
![]() |
5529ffcf73 | ||
![]() |
7e6f892e23 | ||
![]() |
d3a6ea5acf | ||
![]() |
674a78b661 | ||
![]() |
5c84c8d5b1 | ||
![]() |
522a36d670 | ||
![]() |
2d0cfc3e8e | ||
![]() |
4b6b722f87 | ||
![]() |
419675066f | ||
![]() |
191b1ad022 | ||
![]() |
792e44a9d0 | ||
![]() |
ff5a47b0df | ||
![]() |
7bf0acb703 | ||
![]() |
ba5dbf90d8 | ||
![]() |
54f41aaa63 | ||
![]() |
1db42210e8 | ||
![]() |
fb554a4a3b | ||
![]() |
d8d13c73fb | ||
![]() |
5c0160a24d | ||
![]() |
ab7d30c995 | ||
![]() |
1cfa1f15c0 | ||
![]() |
2149a4db9f | ||
![]() |
df57d16d21 | ||
![]() |
2ff031005e | ||
![]() |
b9ab85ee55 | ||
![]() |
064998129e | ||
![]() |
4044cdd9a5 | ||
![]() |
1ee10a5902 | ||
![]() |
27b1d076c7 | ||
![]() |
c8b32fdb3b | ||
![]() |
0b4434fdb6 | ||
![]() |
699fbff082 | ||
![]() |
4c295f2ab4 | ||
![]() |
dcbaa170db | ||
![]() |
c71b533645 | ||
![]() |
63f2576ff1 | ||
![]() |
b744a4182b | ||
![]() |
0c4364609b | ||
![]() |
3308d7fe6f | ||
![]() |
2cdde78c54 | ||
![]() |
428b599be0 | ||
![]() |
3541ab81b8 | ||
![]() |
7fa14e5077 | ||
![]() |
cec1068f2e | ||
![]() |
f737018548 | ||
![]() |
9c01316178 | ||
![]() |
c3a6f8253a | ||
![]() |
d558c4db66 | ||
![]() |
722886aaf2 | ||
![]() |
31902a7667 | ||
![]() |
4c1c4f8a43 | ||
![]() |
7850412ba9 | ||
![]() |
4f0ff5f49c | ||
![]() |
131ba7dbb1 | ||
![]() |
b95b529015 | ||
![]() |
29226dd93e | ||
![]() |
115da64167 | ||
![]() |
6cd1877af7 | ||
![]() |
78a90591fd | ||
![]() |
45265d025d | ||
![]() |
9bf5c2dc40 | ||
![]() |
ee4bdd2a9a | ||
![]() |
0b75635ad5 | ||
![]() |
f7b5b9c413 | ||
![]() |
52d66ac30b | ||
![]() |
6ac5c6a0b4 | ||
![]() |
45fc76a9a5 | ||
![]() |
6d1fa0cf05 | ||
![]() |
8eb0c0351b | ||
![]() |
ec80f939f1 | ||
![]() |
70fc51a0b5 | ||
![]() |
bd700a88bf | ||
![]() |
98f2f0e74f | ||
![]() |
4a3b746d48 | ||
![]() |
a1f864b35e | ||
![]() |
17ac3cfd52 | ||
![]() |
c6c2b1c6a3 | ||
![]() |
5fba3d5775 | ||
![]() |
6fe62edd63 | ||
![]() |
87af3da1ad | ||
![]() |
155f0cc347 | ||
![]() |
2de1ad5334 | ||
![]() |
763543a16e | ||
![]() |
acabe90c9f | ||
![]() |
f79da9003a | ||
![]() |
fc9e558cd6 | ||
![]() |
68140bd544 | ||
![]() |
2c4c2d1f49 | ||
![]() |
4894086d9d | ||
![]() |
1d29ef5fe3 | ||
![]() |
7fa333cff2 | ||
![]() |
c1ffc2ae72 | ||
![]() |
9c0e2dc533 | ||
![]() |
9b18e3669d | ||
![]() |
366ebc781d | ||
![]() |
4bd0459155 | ||
![]() |
b19084cb57 | ||
![]() |
69be7ca412 | ||
![]() |
07307b9709 | ||
![]() |
ee4a5e56a9 | ||
![]() |
c8f8ec77a9 | ||
![]() |
be46a43427 | ||
![]() |
183e379223 | ||
![]() |
2350fc2ddf | ||
![]() |
152f966a66 | ||
![]() |
85ee7fad1d | ||
![]() |
3ac085573f | ||
![]() |
64a19d9627 | ||
![]() |
76af623c94 | ||
![]() |
11c285be01 | ||
![]() |
a0528496eb | ||
![]() |
299345b864 | ||
![]() |
0a18fefb1f | ||
![]() |
a26f0ec8c8 | ||
![]() |
232d8d38bd | ||
![]() |
4833e1e130 | ||
![]() |
bb30cf2ce3 | ||
![]() |
c9b35bed7e | ||
![]() |
999672fcc3 | ||
![]() |
6a0ce3a58d | ||
![]() |
3612326628 | ||
![]() |
bf61dd1bad | ||
![]() |
18c1153e12 | ||
![]() |
651be69ad2 | ||
![]() |
394e3bb79c | ||
![]() |
502a98b70a | ||
![]() |
da357775ff | ||
![]() |
c0adeaadfd | ||
![]() |
358c87528a | ||
![]() |
0cb4866f40 | ||
![]() |
6ec13c896d | ||
![]() |
a0587a8bce | ||
![]() |
184c9413f8 | ||
![]() |
6440820dc5 | ||
![]() |
d9322b0df4 | ||
![]() |
b9a19b60e4 | ||
![]() |
6f697eff47 | ||
![]() |
d9c8bb399b | ||
![]() |
2137b6c225 | ||
![]() |
0320079d02 | ||
![]() |
95a833ea85 | ||
![]() |
a85a4fe7a0 | ||
![]() |
f94b8c9be8 | ||
![]() |
5dfe9cdd4f | ||
![]() |
9a83b43d57 | ||
![]() |
7d21babd38 | ||
![]() |
f763a42323 | ||
![]() |
478596c4e6 | ||
![]() |
37842a3603 | ||
![]() |
1775e2fe62 | ||
![]() |
68b26d5e2b | ||
![]() |
6304395050 | ||
![]() |
fa3c357665 | ||
![]() |
83282aeab6 | ||
![]() |
5de2e9afbd | ||
![]() |
cd99c6b2aa | ||
![]() |
42aacb755c | ||
![]() |
a880b3a9db | ||
![]() |
7837fae2aa | ||
![]() |
70e9f025bb | ||
![]() |
ab1d9b358e | ||
![]() |
2634c270b1 | ||
![]() |
79bd2fccdf | ||
![]() |
87107ec474 | ||
![]() |
8aaa066142 | ||
![]() |
5b7d465064 | ||
![]() |
75c94865e4 | ||
![]() |
f294e3d57c | ||
![]() |
565114a2d2 | ||
![]() |
be057dd63c | ||
![]() |
e61c2bced8 | ||
![]() |
3abfb9f819 | ||
![]() |
7c86fabd7b | ||
![]() |
59f2d4b0f3 | ||
![]() |
8571586b0c | ||
![]() |
e21de811e2 | ||
![]() |
7b502ce9a8 | ||
![]() |
33447d2ada | ||
![]() |
7f6b2ec096 | ||
![]() |
2c35117dfa | ||
![]() |
5b2ca07506 | ||
![]() |
18d6ec6961 | ||
![]() |
96c1bb4c69 | ||
![]() |
00f5b9431e | ||
![]() |
9a87df7315 | ||
![]() |
30e43501ac | ||
![]() |
34738a4839 | ||
![]() |
1cc2080cb9 | ||
![]() |
0826e45a25 | ||
![]() |
6925204019 | ||
![]() |
bdbf1fe304 | ||
![]() |
720a530a6c | ||
![]() |
2f56f7e4a4 | ||
![]() |
c3a6842027 | ||
![]() |
731afbb00c | ||
![]() |
fb3853dc70 | ||
![]() |
ec5503678a | ||
![]() |
4ab47fef46 | ||
![]() |
8e17b1d72a | ||
![]() |
ae9b616896 | ||
![]() |
1999cd6eaf | ||
![]() |
1e5269c22c | ||
![]() |
19f495cba6 | ||
![]() |
0c5d45717c | ||
![]() |
1dbe470391 | ||
![]() |
7142e05561 | ||
![]() |
4640d114f6 | ||
![]() |
ad3bb3a522 | ||
![]() |
e9fa95f113 | ||
![]() |
76a4bacb34 | ||
![]() |
c5cadbd004 | ||
![]() |
77e7e4e6e9 | ||
![]() |
cc242e1e87 | ||
![]() |
e0ec2f8160 | ||
![]() |
eb1ce251a0 | ||
![]() |
4d1de2d8ce | ||
![]() |
0af7c00d12 | ||
![]() |
afaf6c0e56 | ||
![]() |
e8b4e16382 | ||
![]() |
83a8c857e5 | ||
![]() |
57e943fb3b | ||
![]() |
ed310e7764 | ||
![]() |
16e3a877af | ||
![]() |
2b5b87fe84 | ||
![]() |
d706c000b9 | ||
![]() |
15184550f4 | ||
![]() |
69a8e35150 | ||
![]() |
70166d0245 | ||
![]() |
e0657eb5b2 | ||
![]() |
f204264d2d | ||
![]() |
b9378c24b5 | ||
![]() |
8a6ceeb2e4 | ||
![]() |
a45c7bd3e3 | ||
![]() |
4df245755a | ||
![]() |
6be801d4a8 | ||
![]() |
54f3733b56 | ||
![]() |
4f60673e4e | ||
![]() |
7bd4fd7cbd | ||
![]() |
65995cdc6c | ||
![]() |
9d27723f30 | ||
![]() |
2e7d2b66f8 | ||
![]() |
304c49d61e | ||
![]() |
826ea32fc0 | ||
![]() |
d70c4fa9fe | ||
![]() |
bc43359467 | ||
![]() |
cf286f3c23 | ||
![]() |
57abd43214 | ||
![]() |
90bdc9d157 | ||
![]() |
93bce685bd | ||
![]() |
4639a075b0 | ||
![]() |
91f63da6d0 | ||
![]() |
3894c9d48e | ||
![]() |
fb40701962 | ||
![]() |
ff1e794820 | ||
![]() |
ceba5f7fe8 | ||
![]() |
f570acbed6 | ||
![]() |
2a7a472d90 | ||
![]() |
138fbe5bf5 | ||
![]() |
ad99cc75eb | ||
![]() |
f6606e7a4f | ||
![]() |
3690deef1e | ||
![]() |
cd1438587d | ||
![]() |
8193a57227 | ||
![]() |
8467f39ad9 | ||
![]() |
0fc293f47a | ||
![]() |
9b063edb0b | ||
![]() |
5d852eee87 | ||
![]() |
54ab408135 | ||
![]() |
41aa326f42 | ||
![]() |
24f605c71c | ||
![]() |
5c52dcc74f | ||
![]() |
667659fbe6 | ||
![]() |
d467bf096f | ||
![]() |
98d556bcd5 | ||
![]() |
8c730be635 | ||
![]() |
377d24fbb4 | ||
![]() |
bde810e031 | ||
![]() |
2f18d42c86 | ||
![]() |
c708b0c20e | ||
![]() |
ff8d55d4f8 | ||
![]() |
49bf911c84 | ||
![]() |
9e33ef419f | ||
![]() |
40e95eac1e | ||
![]() |
19e76a0b5d | ||
![]() |
5feafe3907 | ||
![]() |
b7206ed714 | ||
![]() |
38370d647d | ||
![]() |
323bc188b1 | ||
![]() |
b17356591a | ||
![]() |
a02c444cf5 | ||
![]() |
87a133beb9 | ||
![]() |
1f4a208857 | ||
![]() |
a7c472989c | ||
![]() |
747696e386 | ||
![]() |
a71a183160 | ||
![]() |
125a010f03 | ||
![]() |
5c5993cc2a | ||
![]() |
f234b71932 | ||
![]() |
497a3391d4 | ||
![]() |
a72c743c6f | ||
![]() |
98fdfd001a | ||
![]() |
994b162ae3 | ||
![]() |
90c60f399b | ||
![]() |
b16b225a1a | ||
![]() |
7a4cf694ca | ||
![]() |
1b492d50fe | ||
![]() |
d9b5e000f8 | ||
![]() |
7e30524876 | ||
![]() |
ce9b12eb93 | ||
![]() |
b602657d55 | ||
![]() |
360dfbcdb5 | ||
![]() |
f466497970 | ||
![]() |
184a7ab200 | ||
![]() |
2e5ef7dfa2 | ||
![]() |
8f617f4ca1 | ||
![]() |
fe5f96a394 | ||
![]() |
cb9c35d772 | ||
![]() |
7cf7977cc6 | ||
![]() |
1de747fa35 | ||
![]() |
93750829d7 | ||
![]() |
798688e7dd | ||
![]() |
6ab9c1d737 | ||
![]() |
b074ce99b7 | ||
![]() |
b03fd86be5 | ||
![]() |
3de2f5ff88 | ||
![]() |
35adf83154 | ||
![]() |
0162c8bbee | ||
![]() |
736d570f26 | ||
![]() |
5b0901e311 | ||
![]() |
f9474af39e | ||
![]() |
d411d86355 | ||
![]() |
a50c6707cb | ||
![]() |
6991c68d3a | ||
![]() |
8b1e6f7bd6 | ||
![]() |
943fd9c622 | ||
![]() |
838e2781c0 | ||
![]() |
66cfd7b52c | ||
![]() |
a45bc0eef6 | ||
![]() |
ed7996299e | ||
![]() |
d4b73fb73e | ||
![]() |
d6ece78eff | ||
![]() |
2f44f3c4ba | ||
![]() |
23b49e4b8c | ||
![]() |
5d33cefe1d | ||
![]() |
6089df9462 | ||
![]() |
3ee98e2bd0 | ||
![]() |
53a5d02051 | ||
![]() |
e332fd9cf9 | ||
![]() |
7232938c12 | ||
![]() |
fd02f2253b | ||
![]() |
12046ef0a0 | ||
![]() |
dfc84b4208 | ||
![]() |
f5f11d5130 | ||
![]() |
81ce328abd | ||
![]() |
867951136a | ||
![]() |
8b41ab27bd | ||
![]() |
e542ef003c | ||
![]() |
a5f212e6be | ||
![]() |
385a320536 | ||
![]() |
e65000ec2c | ||
![]() |
c87de7b3c2 | ||
![]() |
bb6023709f | ||
![]() |
e998e54d3e | ||
![]() |
e269886eae | ||
![]() |
dabb83c522 | ||
![]() |
6350b72e23 | ||
![]() |
e4100d940a | ||
![]() |
6575674169 | ||
![]() |
a13aad984c | ||
![]() |
750fa9a76d | ||
![]() |
d0ad4d9364 | ||
![]() |
4e0f41dcb2 | ||
![]() |
c3bb489851 | ||
![]() |
e64e6676f3 | ||
![]() |
108440b1ca | ||
![]() |
d54f5ed1aa | ||
![]() |
0aac6459f3 | ||
![]() |
bb9ea7eda1 | ||
![]() |
455b04f183 | ||
![]() |
39fb4f5def | ||
![]() |
c60428e29b | ||
![]() |
5413ecabb4 | ||
![]() |
c6d9dfa0c9 | ||
![]() |
b0033af048 | ||
![]() |
405d37e822 | ||
![]() |
0d514b7dc9 | ||
![]() |
c3596aa45c | ||
![]() |
d34bdb2ce3 | ||
![]() |
c91870cc04 | ||
![]() |
2f6862967e | ||
![]() |
7525395665 | ||
![]() |
657e2b280e | ||
![]() |
4ea9be582f | ||
![]() |
3dcc8247bf | ||
![]() |
c45b7c04b9 | ||
![]() |
33d6ae8afc | ||
![]() |
6871606bef | ||
![]() |
6e266acec9 | ||
![]() |
ba84f2be6e | ||
![]() |
db7b7dbadf | ||
![]() |
6bd07d2651 | ||
![]() |
070fba734c | ||
![]() |
72ef366829 | ||
![]() |
4adfb268a3 | ||
![]() |
bf0ea1b012 | ||
![]() |
1267a39e32 | ||
![]() |
462b917832 | ||
![]() |
c5b16bb0d0 | ||
![]() |
91268dcc67 | ||
![]() |
13f9981be6 | ||
![]() |
f9b3bd7b3a | ||
![]() |
39916c2796 | ||
![]() |
03f5ddaf0d | ||
![]() |
ea4f55c06d | ||
![]() |
5b0232f77e | ||
![]() |
0b68091e55 | ||
![]() |
7136c9282e | ||
![]() |
09303153a5 | ||
![]() |
bdf0fba95b | ||
![]() |
86f24e5821 | ||
![]() |
35f094b983 | ||
![]() |
12cf1e0b66 | ||
![]() |
68b37fc5dd | ||
![]() |
ba5bad042a | ||
![]() |
c5323ee811 | ||
![]() |
df9c685217 | ||
![]() |
73fa21d45f | ||
![]() |
344fa1bbd7 | ||
![]() |
01318c8c29 | ||
![]() |
851486df28 | ||
![]() |
d8b3c5d9d6 | ||
![]() |
2883b21ddf | ||
![]() |
4956cf3988 | ||
![]() |
bdbcec786a | ||
![]() |
c40bbf2398 |
@ -1,3 +1,3 @@
|
||||
component_depth: 8
|
||||
component_depth: 10
|
||||
languages:
|
||||
- kotlin
|
||||
|
@ -98,7 +98,7 @@ jobs:
|
||||
command: yes | sdkmanager --licenses && yes | sdkmanager --update
|
||||
- run:
|
||||
name: Setup emulator
|
||||
command: sdkmanager "system-images;android-19;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-19;default;armeabi-v7a"
|
||||
command: sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a"
|
||||
- run:
|
||||
name: Launch emulator
|
||||
command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel on
|
||||
@ -116,7 +116,7 @@ jobs:
|
||||
adb shell input keyevent 82
|
||||
- run:
|
||||
name: Run instrumented tests
|
||||
command: ./gradlew clean createPlayDebugCoverageReport jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
|
||||
command: ./gradlew clean createFdroidDebugCoverageReport jacocoTestReport --no-daemon --stacktrace --console=plain -PdisablePreDex
|
||||
- run:
|
||||
name: Collect logs from emulator
|
||||
command: adb logcat -d > ./app/build/reports/logcat_emulator.txt
|
||||
@ -162,7 +162,7 @@ jobs:
|
||||
openssl aes-256-cbc -d -in ./app/upload-key-encrypted.jks -k $ENCRYPT_KEY >> ./app/upload-key.jks
|
||||
- run:
|
||||
name: Publish release
|
||||
command: ./gradlew publishPlayRelease --no-daemon --stacktrace --console=plain -PenableCrashlytics -PdisablePreDex
|
||||
command: ./gradlew publishPlayRelease --no-daemon --stacktrace --console=plain -PdisablePreDex
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
|
12
.editorconfig
Normal file
12
.editorconfig
Normal file
@ -0,0 +1,12 @@
|
||||
[*]
|
||||
charset=utf-8
|
||||
end_of_line=lf
|
||||
insert_final_newline=Advanced
|
||||
indent_style=space
|
||||
indent_size=4
|
||||
|
||||
[*.json]
|
||||
indent_size=2
|
||||
|
||||
[*.{kt,kts}]
|
||||
disabled_rules=import-ordering,no-wildcard-imports
|
4
.gitea/FUNDING.yml
Normal file
4
.gitea/FUNDING.yml
Normal file
@ -0,0 +1,4 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: wulkanowy
|
||||
custom: https://www.paypal.com/paypalme/wulkanowy
|
@ -1,3 +1,12 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Utwórz raport błędu, aby pomóc nam ulepszyć Wulkanowego
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Co powinno się dziać
|
||||
|
||||
|
20
.gitea/ISSUE_TEMPLATE/feature_request.md
Normal file
20
.gitea/ISSUE_TEMPLATE/feature_request.md
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Zaproponuj nowy pomysł dla Wulkanowego
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
** Czy Twoja prośba o funkcję jest związana z problemem? Proszę opisz.**
|
||||
Jasny i zwięzły opis problemu. Np. Zawsze jestem sfrustrowany, gdy [...]
|
||||
|
||||
** Opisz żądane rozwiązanie **
|
||||
Jasny i zwięzły opis tego, co chcesz, aby się wydarzyło.
|
||||
|
||||
** Opisz alternatywy, które rozważałeś **
|
||||
Jasny i zwięzły opis wszelkich rozważanych alternatywnych rozwiązań lub funkcji.
|
||||
|
||||
** Dodatkowy kontekst **
|
||||
Dodaj inny kontekst lub zrzuty ekranu dotyczące żądania funkcji tutaj.
|
12
.gitea/dependabot.yml
Normal file
12
.gitea/dependabot.yml
Normal file
@ -0,0 +1,12 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: gradle
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
open-pull-requests-limit: 10
|
||||
target-branch: develop
|
||||
ignore:
|
||||
- dependency-name: io.github.wulkanowy:sdk
|
||||
reviewers:
|
||||
- Faierbel
|
18
.gitea/release.yml
Normal file
18
.gitea/release.yml
Normal file
@ -0,0 +1,18 @@
|
||||
changelog:
|
||||
exclude:
|
||||
labels:
|
||||
- "release ignore"
|
||||
categories:
|
||||
- title: breaking changes
|
||||
labels:
|
||||
- major
|
||||
- title: new features
|
||||
labels:
|
||||
- minor
|
||||
- fr:approved
|
||||
- title: translation updates
|
||||
labels:
|
||||
- translation
|
||||
- title: features
|
||||
labels:
|
||||
- "*"
|
84
.gitea/workflows/build_android.yml
Normal file
84
.gitea/workflows/build_android.yml
Normal file
@ -0,0 +1,84 @@
|
||||
name: Generate APK
|
||||
|
||||
env:
|
||||
main_project_module: app
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
RUNNER_TOOL_CACHE: /toolcache
|
||||
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set current date as env variable
|
||||
run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
|
||||
|
||||
- name: Set repository name as env variable
|
||||
run: echo "repository_name=$(echo '${{ gitea.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
cache: 'gradle'
|
||||
|
||||
- name: Set up Go environment
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: '1.22'
|
||||
|
||||
- name: Get hash of Gradle files
|
||||
uses: https://gitea.com/actions/go-hashfiles@v0.0.1
|
||||
id: get-hash
|
||||
with:
|
||||
patterns: |-
|
||||
**/*.gradle*
|
||||
|
||||
- name: Cache Gradle
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: gradle-${{ runner.os }}-${{ steps.get-hash.outputs.hash }}
|
||||
|
||||
- name: Get app version
|
||||
id: get_version
|
||||
run: echo "VERSION_NAME=$(grep -m1 "versionName" app/build.gradle | awk '{print $2}' | tr -d \'\'\"\')" >> $GITHUB_ENV
|
||||
|
||||
- name: Change wrapper permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Setup Android SDK
|
||||
uses: android-actions/setup-android@v3
|
||||
|
||||
- name: Build debug APK
|
||||
run: ./gradlew assembleDebug
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3 # not v4 because of GHES
|
||||
with:
|
||||
name: wulkanowy_mod_debug_builds
|
||||
path: |
|
||||
app/build/outputs/**/*-debug.apk
|
||||
|
||||
- name: Create release
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
env:
|
||||
NODE_OPTIONS: '--experimental-fetch'
|
||||
with:
|
||||
files: |
|
||||
app/build/outputs/**/*-debug.apk
|
||||
|
||||
name: Release ${{ env.VERSION_NAME }} (${{ env.date_today }})
|
||||
tag_name: v${{ env.VERSION_NAME }}
|
131
.gitignore
vendored
131
.gitignore
vendored
@ -1,39 +1,98 @@
|
||||
/captures
|
||||
.externalNativeBuild
|
||||
|
||||
## https://gist.github.com/iainconnor/8605514
|
||||
# Created by https://www.gitignore.io
|
||||
|
||||
# Built application files
|
||||
/build
|
||||
/*/build/
|
||||
*.apk
|
||||
*.ap_
|
||||
*.aab
|
||||
|
||||
# Crashlytics configuations
|
||||
com_crashlytics_export_strings.xml
|
||||
# Files for the ART/Dalvik VM
|
||||
*.dex
|
||||
|
||||
# Java class files
|
||||
*.class
|
||||
|
||||
# Generated files
|
||||
bin/
|
||||
gen/
|
||||
out/
|
||||
|
||||
# Gradle files
|
||||
.gradle/
|
||||
build/
|
||||
.build-cache
|
||||
|
||||
# Local configuration file (sdk path, etc)
|
||||
local.properties
|
||||
|
||||
# Gradle generated files
|
||||
.gradle/
|
||||
# Proguard folder generated by Eclipse
|
||||
proguard/
|
||||
|
||||
# Signing files
|
||||
.signing/
|
||||
# Log Files
|
||||
*.log
|
||||
|
||||
# User-specific configurations
|
||||
.idea/copyright/profiles_settings.xml
|
||||
# Android Studio Navigation editor temp files
|
||||
.navigation/
|
||||
|
||||
# Android Studio captures folder
|
||||
captures/
|
||||
|
||||
# IntelliJ configurations
|
||||
*.iml
|
||||
.idea/workspace.xml
|
||||
.idea/tasks.xml
|
||||
.idea/gradle.xml
|
||||
.idea/assetWizardSettings.xml
|
||||
.idea/dictionaries
|
||||
.idea/libraries
|
||||
.idea/caches
|
||||
.idea/modules.xml
|
||||
.idea/navEditor.xml
|
||||
.idea/caches/
|
||||
.idea/libraries/
|
||||
.idea/inspectionProfiles/
|
||||
.idea/shelf/
|
||||
.idea/.name
|
||||
.idea/compiler.xml
|
||||
.idea/copyright/profiles_settings.xml
|
||||
.idea/encodings.xml
|
||||
.idea/misc.xml
|
||||
.idea/modules.xml
|
||||
.idea/scopes/scope_settings.xml
|
||||
.idea/tasks.xml
|
||||
.idea/vcs.xml
|
||||
.idea/workspace.xml
|
||||
.idea/caches/
|
||||
*.iml
|
||||
.idea/jsLibraryMappings.xml
|
||||
.idea/datasources.xml
|
||||
.idea/dataSources.ids
|
||||
.idea/sqlDataSources.xml
|
||||
.idea/dynamic.xml
|
||||
.idea/uiDesigner.xml
|
||||
.idea/runConfigurations.xml
|
||||
.idea/discord.xml
|
||||
.idea/migrations.xml
|
||||
.idea/androidTestResultsUserPreferences.xml
|
||||
.idea/copilot
|
||||
.idea/deploymentTargetDropDown.xml
|
||||
.idea/deploymentTargetSelector.xml
|
||||
.idea/kotlinc.xml
|
||||
|
||||
# Keystore files
|
||||
*.jks
|
||||
*.keystore
|
||||
*.p12
|
||||
|
||||
# External native build folder generated in Android Studio 2.2 and later
|
||||
.externalNativeBuild
|
||||
|
||||
# Version control
|
||||
vcs.xml
|
||||
|
||||
# lint
|
||||
lint/intermediates/
|
||||
lint/generated/
|
||||
lint/outputs/
|
||||
lint/tmp/
|
||||
lint/reports/
|
||||
|
||||
### Android Patch ###
|
||||
gen-external-apklibs
|
||||
output.json
|
||||
|
||||
# OS-specific files
|
||||
.DS_Store
|
||||
@ -43,9 +102,29 @@ local.properties
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
.idea/caches/
|
||||
app/key.p12
|
||||
app/upload-key.jks
|
||||
*.log
|
||||
.idea/assetWizardSettings.xml
|
||||
.idea/uiDesigner.xml
|
||||
|
||||
# Legacy Eclipse project files
|
||||
.classpath
|
||||
.project
|
||||
.cproject
|
||||
.settings/
|
||||
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
*.war
|
||||
*.ear
|
||||
|
||||
### AndroidStudio Patch ###
|
||||
!/gradle/wrapper/gradle-wrapper.jar
|
||||
.idea/jarRepositories.xml
|
||||
|
||||
### Services config files
|
||||
agconnect-services.json
|
||||
agconnect-credentials.json
|
||||
google-services.json
|
||||
!app/google-services.json
|
||||
|
||||
|
||||
.idea/appInsightsSettings.xml
|
||||
|
46
.idea/codeStyles/Project.xml
generated
46
.idea/codeStyles/Project.xml
generated
@ -1,33 +1,10 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<option name="LINE_SEPARATOR" value=" " />
|
||||
<AndroidXmlCodeStyleSettings>
|
||||
<option name="USE_CUSTOM_SETTINGS" value="true" />
|
||||
</AndroidXmlCodeStyleSettings>
|
||||
<JetCodeStyleSettings>
|
||||
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
|
||||
<value>
|
||||
<package name="kotlinx.android.synthetic" withSubpackages="true" static="false" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
|
||||
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="2147483647" />
|
||||
<option name="CONTINUATION_INDENT_IN_PARAMETER_LISTS" value="false" />
|
||||
<option name="CONTINUATION_INDENT_IN_ARGUMENT_LISTS" value="false" />
|
||||
<option name="CONTINUATION_INDENT_FOR_EXPRESSION_BODIES" value="false" />
|
||||
<option name="CONTINUATION_INDENT_FOR_CHAINED_CALLS" value="false" />
|
||||
<option name="CONTINUATION_INDENT_IN_SUPERTYPE_LISTS" value="false" />
|
||||
<option name="CONTINUATION_INDENT_IN_IF_CONDITIONS" value="false" />
|
||||
<option name="CONTINUATION_INDENT_IN_ELVIS" value="false" />
|
||||
<option name="WRAP_ELVIS_EXPRESSIONS" value="0" />
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</JetCodeStyleSettings>
|
||||
<XML>
|
||||
<option name="XML_KEEP_LINE_BREAKS" value="false" />
|
||||
<option name="XML_ALIGN_ATTRIBUTES" value="false" />
|
||||
<option name="XML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
||||
</XML>
|
||||
<codeStyleSettings language="XML">
|
||||
<option name="FORCE_REARRANGE_MODE" value="1" />
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
@ -38,6 +15,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:android</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -48,6 +26,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>xmlns:.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -59,6 +38,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:id</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -69,6 +49,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*:name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -79,6 +60,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>name</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -89,6 +71,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>style</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -99,6 +82,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>^$</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -110,6 +94,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -121,6 +106,7 @@
|
||||
<match>
|
||||
<AND>
|
||||
<NAME>.*</NAME>
|
||||
<XML_ATTRIBUTE />
|
||||
<XML_NAMESPACE>.*</XML_NAMESPACE>
|
||||
</AND>
|
||||
</match>
|
||||
@ -131,17 +117,7 @@
|
||||
</arrangement>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="kotlin">
|
||||
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
|
||||
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
||||
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
|
||||
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||
<option name="METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE" value="true" />
|
||||
<option name="METHOD_PARAMETERS_RPAREN_ON_NEXT_LINE" value="true" />
|
||||
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
18
.idea/gradle.xml
generated
18
.idea/gradle.xml
generated
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
44
.travis.yml
44
.travis.yml
@ -3,8 +3,8 @@ jdk: oraclejdk8
|
||||
|
||||
env:
|
||||
global:
|
||||
- ANDROID_API_LEVEL=28
|
||||
- ANDROID_BUILD_TOOLS_VERSION=28.0.3
|
||||
- ANDROID_API_LEVEL=30
|
||||
- ANDROID_BUILD_TOOLS_VERSION=30.0.2
|
||||
|
||||
cache:
|
||||
directories:
|
||||
@ -14,7 +14,7 @@ cache:
|
||||
branches:
|
||||
only:
|
||||
- develop
|
||||
- 0.9.2
|
||||
- 0.24.0
|
||||
|
||||
android:
|
||||
licenses:
|
||||
@ -28,40 +28,40 @@ android:
|
||||
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
|
||||
# The SDK version used to compile your project
|
||||
- android-$ANDROID_API_LEVEL
|
||||
# Additional components
|
||||
# Additional components
|
||||
- extra-google-google_play_services
|
||||
- extra-google-m2repository
|
||||
- extra-android-m2repository
|
||||
- addon-google_apis-google-$ANDROID_API_LEVEL
|
||||
# Android emulator
|
||||
- android-19
|
||||
- sys-img-armeabi-v7a-android-19
|
||||
# Android emulator
|
||||
- android-22
|
||||
- sys-img-armeabi-v7a-android-22
|
||||
|
||||
before_install:
|
||||
- yes | sdkmanager "platforms;android-30"
|
||||
- yes | sdkmanager "build-tools;30.0.2"
|
||||
|
||||
before_script:
|
||||
# Launch emulator before the execution
|
||||
- echo no | android create avd --force -n test -t android-19 --abi armeabi-v7a
|
||||
- emulator -avd test -no-audio -no-window &
|
||||
- android-wait-for-emulator
|
||||
- adb shell input keyevent 82 &
|
||||
- "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash"
|
||||
# Launch emulator before the execution
|
||||
- echo no | android create avd --force -n test -t android-22 --abi armeabi-v7a
|
||||
- emulator -avd test -no-audio -no-window &
|
||||
- android-wait-for-emulator
|
||||
- adb shell input keyevent 82 &
|
||||
- "curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/fossas/fossa-cli/master/install.sh | sudo bash"
|
||||
|
||||
script:
|
||||
- ./gradlew dependencies --stacktrace --daemon
|
||||
- fossa --no-ansi || true
|
||||
#- ./gradlew lintPlayRelease -x fabricGenerateResourcesPlayRelease --stacktrace --daemon
|
||||
- ./gradlew testPlayDebugUnitTest -x fabricGenerateResourcesPlay --stacktrace --daemon
|
||||
- ./gradlew createPlayDebugCoverageReport --stacktrace --daemon
|
||||
- ./gradlew jacocoTestReport --stacktrace --daemon
|
||||
- if [ -z ${SONAR_HOST+x} ]; then echo "sonar scan skipped"; else
|
||||
git fetch --unshallow;
|
||||
./gradlew sonarqube -x test -x lint -x fabricGenerateResourcesPlayRelease -x fabricGenerateResourcesFdroidRelease -Dsonar.host.url=$SONAR_HOST -Dsonar.organization=$SONAR_ORG -Dsonar.login=$SONAR_KEY -Dsonar.branch.name=${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH} --stacktrace --daemon;
|
||||
fi
|
||||
- ./gradlew -Pcoverage testFdroidDebugUnitTest --stacktrace --daemon
|
||||
- ./gradlew -Pcoverage connectedFdroidDebugAndroidTest --stacktrace --daemon
|
||||
- ./gradlew -Pcoverage jacocoTestReport --stacktrace --daemon
|
||||
- |
|
||||
if [ $TRAVIS_TAG ]; then
|
||||
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/google-services.json.gpg;
|
||||
gpg --yes --batch --passphrase=$SERVICES_ENCRYPT_KEY ./app/src/release/agconnect-services.json.gpg;
|
||||
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/key.p12.gpg;
|
||||
gpg --yes --batch --passphrase=$ENCRYPT_KEY ./app/upload-key.jks.gpg;
|
||||
./gradlew publishPlayRelease -PenableCrashlytics --stacktrace;
|
||||
./gradlew publishPlayRelease --stacktrace;
|
||||
fi
|
||||
|
||||
after_success:
|
||||
|
2
LICENSE
2
LICENSE
@ -186,7 +186,7 @@
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2017 wulkanowy
|
||||
Copyright 2023 Wulkanowy
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
|
33
README.cs.md
Normal file
33
README.cs.md
Normal file
@ -0,0 +1,33 @@
|
||||
Česká verze / [Deutsche Version](README.de.md) / [English version](README.en.md) / [Polska wersja](README.md) / [Slovenská verzia](README.sk.md)
|
||||
|
||||
# Wulkanowy MOD
|
||||
|
||||
## Funkce:
|
||||
* skrýt známky
|
||||
* Skrýt jednotlivé záznamy o docházce.
|
||||
* Skrýt komentáře.
|
||||
* falešná docházka %
|
||||
|
||||
Chcete-li se dostat na skrytý panel:
|
||||
1. Přejděte na kartu „Další“.
|
||||
2. Přejděte na panel „Nastavení“.
|
||||
3. Přejděte na panel „O aplikaci“.
|
||||
4. Klikněte 5x na logo aplikace
|
||||
5. Přejděte na domovskou obrazovku
|
||||
6. Přejděte do nastavení
|
||||
7. Zadejte „tajná nastavení“
|
||||
|
||||
# Instalace
|
||||
|
||||
| Název souboru | Přizpůsobeno |
|
||||
| ---------------- | ----------------- |
|
||||
| `*-fdroid-*.apk` | F-Droid |
|
||||
| `*-hms-*.apk` | Huawei AppGallery |
|
||||
| `*-play-*.apk` | Play Store |
|
||||
|
||||
Stáhněte si vybranou verzi z [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
|
||||
Doporučujeme stáhnout nejnovější dostupnou verzi.
|
||||
|
||||
# O projektu Wulkanowy
|
||||
|
||||
Chcete si přečíst více o projektu Wulkanowy? [Klikněte sem](https://github.com/wulkanowy/wulkanowy)
|
33
README.de.md
Normal file
33
README.de.md
Normal file
@ -0,0 +1,33 @@
|
||||
[Česká verze](README.cs.md) / Deutsche Version / [English version](README.en.md) / [Polska wersja](README.md) / [Slovenská verzia](README.sk.md)
|
||||
|
||||
# Wulkanowy MOD
|
||||
|
||||
## Funktionen:
|
||||
* Noten ausblenden
|
||||
* Individuelle Anwesenheitslisten ausblenden.
|
||||
* Kommentare ausblenden.
|
||||
* Anwesenheit fälschen %
|
||||
|
||||
So gelangen Sie zum ausgeblendeten Bereich:
|
||||
1. Gehen Sie zur Registerkarte „Mehr“.
|
||||
2. Gehen Sie zum Bereich „Einstellungen“.
|
||||
3. Gehen Sie zum Bereich „Über die Anwendung“.
|
||||
4. Klicken Sie fünfmal auf das Anwendungslogo
|
||||
5. Gehen Sie zum Startbildschirm
|
||||
6. Gehen Sie zu den Einstellungen
|
||||
7. Geben Sie „Geheime Einstellungen“ ein
|
||||
|
||||
# Installation
|
||||
|
||||
| Dateiname | Angepasst an |
|
||||
| ---------------- | ----------------- |
|
||||
| `*-fdroid-*.apk` | F-Droid |
|
||||
| `*-hms-*.apk` | Huawei AppGallery |
|
||||
| `*-play-*.apk` | Play Store |
|
||||
|
||||
Laden Sie die ausgewählte Version von [hier](https://git.sador.me/sadorowo/wulkanowy-mod/releases) herunter.
|
||||
Wir empfehlen, die neueste verfügbare Version herunterzuladen.
|
||||
|
||||
# Über das Wulkanowy-Projekt
|
||||
|
||||
Möchten Sie mehr über das Wulkanowy-Projekt lesen? [Hier klicken](https://github.com/wulkanowy/wulkanowy)
|
33
README.en.md
Normal file
33
README.en.md
Normal file
@ -0,0 +1,33 @@
|
||||
[Česká verze](README.cs.md) / [Deutsche Version](README.de.md) / English version / [Polska wersja](README.md) / [Slovenská verzia](README.sk.md)
|
||||
|
||||
# Wulkanowy MOD
|
||||
|
||||
## Functions:
|
||||
* hide grades
|
||||
* hide individual attendance entries
|
||||
* hide comments
|
||||
* fake attendance %.
|
||||
|
||||
To get to the hidden panel:
|
||||
1. Go to the "More" tab
|
||||
2. Go to the "Settings" panel
|
||||
3. Go to the "About application" panel
|
||||
4. Click on the application logo 5 times
|
||||
5. Go to the home screen
|
||||
6. Go to settings
|
||||
7. Enter "secret settings"
|
||||
|
||||
# Installation
|
||||
|
||||
| File name | Adapted to |
|
||||
| ---------------- | ----------------- |
|
||||
| `*-fdroid-*.apk` | F-Droid |
|
||||
| `*-hms-*.apk` | Huawei AppGallery |
|
||||
| `*-play-*.apk` | Play Store |
|
||||
|
||||
Download application from [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
|
||||
We recommend downloading the latest available version.
|
||||
|
||||
# About the Wulkanowy project
|
||||
|
||||
Want to read more about the Wulkanowy project? [Click here](https://github.com/wulkanowy/wulkanowy)
|
42
README.md
42
README.md
@ -1,23 +1,33 @@
|
||||
# Wulkanowy
|
||||
[Česká verze](README.cs.md) / [Deutsche Version](README.de.md) / [English version](README.en.md) / Polska wersja / [Slovenská verzia](README.sk.md)
|
||||
|
||||
[](https://travis-ci.com/wulkanowy/wulkanowy)
|
||||
[](https://www.bitrise.io/app/daeff1893f3c8128)
|
||||
[](https://codecov.io/gh/wulkanowy/wulkanowy)
|
||||
[](https://bettercodehub.com/)
|
||||
[](https://sonarcloud.io/dashboard?id=io.github.wulkanowy%3Aapp)
|
||||
[](https://app.fossa.com/projects/custom%2B5644%2Fgithub.com%2Fwulkanowy%2Fwulkanowy?ref=badge_shield)
|
||||
[](https://discord.gg/vccAQBr)
|
||||
[](https://f-droid.org/packages/io.github.wulkanowy/)
|
||||
[](https://github.com/wulkanowy/wulkanowy/releases)
|
||||
# Wulkanowy MOD
|
||||
|
||||
[Pobierz wersję beta z Google Play](https://play.google.com/store/apps/details?id=io.github.wulkanowy&utm_source=vcs)
|
||||
## Funkcje:
|
||||
* ukryj oceny
|
||||
* ukryj poszczególne wpisy frekwencji
|
||||
* ukryj uwagi
|
||||
* sfałszuj % frekwencji
|
||||
|
||||
[Pobierz wersję DEV](https://bitrise-redirector.herokuapp.com/v0.1/apps/f841f20d8f8b1dc8/builds/master/artifacts/0)
|
||||
[(Więcej wersji DEV)](https://wulkanowy.github.io/dev.html)
|
||||
Aby dostać się do ukrytego panelu:
|
||||
1. Przejdź do karty "Więcej"
|
||||
2. Przejdź do panelu "Ustawienia"
|
||||
3. Przejdź do panelu "O aplikacji"
|
||||
4. Kliknij 5 razy w logo aplikacji
|
||||
5. Przejdź na ekran główny
|
||||
6. Wejdź w ustawienia
|
||||
7. Wejdź w "sekretne ustawienia"
|
||||
|
||||
Androidowy klient dziennika VULCAN UONET+.
|
||||
# Instalacja
|
||||
|
||||
| Nazwa pliku | Przystosowana do |
|
||||
| ---------------- | ----------------- |
|
||||
| `*-fdroid-*.apk` | F-Droid |
|
||||
| `*-hms-*.apk` | Huawei AppGallery |
|
||||
| `*-play-*.apk` | Sklep Play |
|
||||
|
||||
## License
|
||||
Pobierz wybraną wersję z [wydań](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
|
||||
Zalecamy pobranie najnowszej dostępnej wersji.
|
||||
|
||||
[](https://app.fossa.com/projects/custom%2B5644%2Fgithub.com%2Fwulkanowy%2Fwulkanowy?ref=badge_large)
|
||||
# O projekcie Wulkanowy
|
||||
|
||||
Chcesz poczytać więcej o projekcie Wulkanowy? [Kliknij tutaj](https://github.com/wulkanowy/wulkanowy)
|
33
README.sk.md
Normal file
33
README.sk.md
Normal file
@ -0,0 +1,33 @@
|
||||
[Česká verze](README.cs.md) / [Deutsche Version](README.de.md) / [English version](README.en.md) / [Polska wersja](README.md) / Slovenská verzia
|
||||
|
||||
# Wulkanowy MOD
|
||||
|
||||
## Funkcie:
|
||||
* skryť známky
|
||||
* Skryť individuálne záznamy o dochádzke.
|
||||
* Skryť komentáre.
|
||||
* falošná dochádzka %
|
||||
|
||||
Ak chcete prejsť na skrytý panel:
|
||||
1. Prejdite na kartu „Viac“.
|
||||
2. Prejdite na panel „Nastavenia“.
|
||||
3. Prejdite na panel „O aplikácii“.
|
||||
4. Kliknite 5-krát na logo aplikácie
|
||||
5. Prejdite na domovskú obrazovku
|
||||
6. Prejdite do nastavení
|
||||
7. Zadajte „tajné nastavenia“
|
||||
|
||||
# Inštalácia
|
||||
|
||||
| Názov súboru | Prispôsobené |
|
||||
| ---------------- | ----------------- |
|
||||
| `*-fdroid-*.apk` | F-Droid |
|
||||
| `*-hms-*.apk` | Huawei AppGallery |
|
||||
| `*-play-*.apk` | Play Store |
|
||||
|
||||
Stiahnite si vybranú verziu z [releases](https://git.sador.me/sadorowo/wulkanowy-mod/releases).
|
||||
Odporúčame stiahnuť najnovšiu dostupnú verziu.
|
||||
|
||||
# O projekte Wulkanowy
|
||||
|
||||
Chcete si prečítať viac o projekte Wulkanowy? [Kliknite sem](https://github.com/wulkanowy/wulkanowy)
|
1
app/.gitignore
vendored
1
app/.gitignore
vendored
@ -1 +0,0 @@
|
||||
/build
|
BIN
app/bitrise.jks.gpg
Normal file
BIN
app/bitrise.jks.gpg
Normal file
Binary file not shown.
312
app/build.gradle
312
app/build.gradle
@ -1,40 +1,52 @@
|
||||
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
|
||||
import ru.cian.huawei.publish.ReleaseNote
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'io.fabric'
|
||||
apply plugin: 'kotlinx-serialization'
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
apply plugin: 'com.google.devtools.ksp'
|
||||
apply plugin: 'dagger.hilt.android.plugin'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.google.firebase.crashlytics'
|
||||
apply plugin: 'com.github.triplet.play'
|
||||
apply plugin: 'ru.cian.huawei-publish'
|
||||
apply plugin: 'com.mikepenz.aboutlibraries.plugin'
|
||||
apply plugin: 'com.huawei.agconnect'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply from: 'jacoco.gradle'
|
||||
apply from: 'sonarqube.gradle'
|
||||
apply from: 'hooks.gradle'
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
buildToolsVersion '28.0.3'
|
||||
namespace 'io.github.wulkanowy'
|
||||
compileSdk 34
|
||||
|
||||
defaultConfig {
|
||||
applicationId "io.github.wulkanowy"
|
||||
testApplicationId "io.github.tests.wulkanowy"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 28
|
||||
versionCode 41
|
||||
versionName "0.9.3"
|
||||
multiDexEnabled true
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 34
|
||||
versionCode 173
|
||||
versionName "2.6.13"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
manifestPlaceholders = [
|
||||
fabric_api_key : System.getenv("FABRIC_API_KEY") ?: "null",
|
||||
crashlytics_enabled: project.hasProperty("enableCrashlytics")
|
||||
]
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
|
||||
}
|
||||
|
||||
resValue "string", "app_name", "Wulkanowy"
|
||||
manifestPlaceholders = [admob_project_id: ""]
|
||||
|
||||
buildConfigField "String", "SINGLE_SUPPORT_AD_ID", "null"
|
||||
buildConfigField "String", "DASHBOARD_TILE_AD_ID", "null"
|
||||
|
||||
if (System.env.SET_BUILD_TIMESTAMP) {
|
||||
buildConfigField "long", "BUILD_TIMESTAMP", String.valueOf(System.currentTimeMillis())
|
||||
} else {
|
||||
buildConfigField "long", "BUILD_TIMESTAMP", "1486235849000"
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
|
||||
// https://github.com/robolectric/robolectric/issues/3928#issuecomment-395309991
|
||||
debug.assets.srcDirs += files("$projectDir/schemas".toString())
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
@ -48,131 +60,233 @@ android {
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
buildConfigField "boolean", "CRASHLYTICS_ENABLED", "true"
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
signingConfig signingConfigs.release
|
||||
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
// signingConfig signingConfigs.release
|
||||
buildConfigField "String", "MESSAGES_BASE_URL", "\"https://messages.wulkanowy.net.pl\""
|
||||
buildConfigField "String", "SCHOOLS_BASE_URL", '"https://schools.wulkanowy.net.pl"'
|
||||
}
|
||||
debug {
|
||||
buildConfigField "boolean", "CRASHLYTICS_ENABLED", project.hasProperty("enableCrashlytics") ? "true" : "false"
|
||||
minifyEnabled false
|
||||
shrinkResources false
|
||||
resValue "string", "app_name", "Wulkanowy DEV"
|
||||
applicationIdSuffix ".dev"
|
||||
versionNameSuffix "-dev"
|
||||
testCoverageEnabled = true
|
||||
ext.enableCrashlytics = project.hasProperty("enableCrashlytics")
|
||||
multiDexKeepProguard file('proguard-multidex-rules.pro')
|
||||
buildConfigField "String", "MESSAGES_BASE_URL", "\"https://messages.wulkanowy.net.pl\""
|
||||
buildConfigField "String", "SCHOOLS_BASE_URL", '"https://schools.wulkanowy.net.pl"'
|
||||
}
|
||||
}
|
||||
|
||||
flavorDimensions "platform"
|
||||
flavorDimensions += "platform"
|
||||
|
||||
productFlavors {
|
||||
hms {
|
||||
dimension "platform"
|
||||
manifestPlaceholders = [install_channel: "AppGallery"]
|
||||
}
|
||||
|
||||
play {
|
||||
dimension "platform"
|
||||
manifestPlaceholders = [
|
||||
install_channel : "Google Play",
|
||||
admob_project_id: System.getenv("ADMOB_PROJECT_ID") ?: "ca-app-pub-3940256099942544~3347511713"
|
||||
]
|
||||
buildConfigField "String", "SINGLE_SUPPORT_AD_ID", "\"${System.getenv("SINGLE_SUPPORT_AD_ID") ?: "ca-app-pub-3940256099942544/5354046379"}\""
|
||||
buildConfigField "String", "DASHBOARD_TILE_AD_ID", "\"${System.getenv("DASHBOARD_TILE_AD_ID") ?: "ca-app-pub-3940256099942544/6300978111"}\""
|
||||
|
||||
}
|
||||
|
||||
fdroid {
|
||||
buildConfigField "boolean", "CRASHLYTICS_ENABLED", "false"
|
||||
dimension "platform"
|
||||
manifestPlaceholders = [install_channel: "F-Droid"]
|
||||
}
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'HardwareIds'
|
||||
playConfigs {
|
||||
play { enabled.set(true) }
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding true
|
||||
buildConfig true
|
||||
}
|
||||
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
}
|
||||
|
||||
testOptions {
|
||||
unitTests.includeAndroidResources = true
|
||||
// workaround HMS test errors https://github.com/robolectric/robolectric/issues/2750
|
||||
unitTests.all { jvmArgs '-noverify' }
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
coreLibraryDesugaringEnabled true
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "17"
|
||||
freeCompilerArgs += ["-opt-in=kotlin.RequiresOptIn", "-Xjvm-default=all"]
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
resources {
|
||||
excludes += ['META-INF/library_release.kotlin_module',
|
||||
'META-INF/library-core_release.kotlin_module',
|
||||
'META-INF/LICENSE.md',
|
||||
'META-INF/LICENSE-notice.md']
|
||||
}
|
||||
}
|
||||
|
||||
aboutLibraries {
|
||||
configPath = "app/src/main/res/raw"
|
||||
}
|
||||
}
|
||||
|
||||
androidExtensions {
|
||||
experimental = true
|
||||
kapt {
|
||||
correctErrorTypes true
|
||||
}
|
||||
ksp {
|
||||
arg("room.schemaLocation", "$projectDir/schemas".toString())
|
||||
}
|
||||
|
||||
play {
|
||||
serviceAccountEmail = System.getenv("PLAY_SERVICE_ACCOUNT_EMAIL") ?: "jan@fakelog.cf"
|
||||
serviceAccountCredentials = file('key.p12')
|
||||
defaultToAppBundles = false
|
||||
track = 'alpha'
|
||||
track = 'production'
|
||||
releaseStatus = ReleaseStatus.IN_PROGRESS
|
||||
userFraction = 0.1d
|
||||
updatePriority = 2
|
||||
enabled.set(false)
|
||||
}
|
||||
|
||||
huaweiPublish {
|
||||
instances {
|
||||
hmsRelease {
|
||||
credentialsPath = "$rootDir/app/src/release/agconnect-credentials.json"
|
||||
buildFormat = "aab"
|
||||
deployType = "publish"
|
||||
releaseNotes = [
|
||||
new ReleaseNote(
|
||||
"pl-PL",
|
||||
"$projectDir/src/main/play/release-notes/pl-PL/default.txt"
|
||||
)
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ext {
|
||||
work_manager = "2.9.0"
|
||||
android_hilt = "1.2.0"
|
||||
room = "2.6.1"
|
||||
chucker = "4.0.0"
|
||||
mockk = "1.13.10"
|
||||
coroutines = "1.8.1"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "io.github.wulkanowy:api:0.9.3"
|
||||
implementation 'io.github.wulkanowy:sdk:2.6.11'
|
||||
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||
implementation "androidx.core:core:1.0.2"
|
||||
implementation "androidx.appcompat:appcompat:1.0.2"
|
||||
implementation "androidx.fragment:fragment:1.0.0"
|
||||
implementation "androidx.annotation:annotation:1.1.0"
|
||||
implementation "androidx.multidex:multidex:2.0.1"
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
|
||||
|
||||
implementation "androidx.recyclerview:recyclerview:1.0.0"
|
||||
implementation "androidx.viewpager:viewpager:1.0.0"
|
||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
||||
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
|
||||
implementation "androidx.coordinatorlayout:coordinatorlayout:1.0.0"
|
||||
implementation "com.google.android.material:material:1.1.0-alpha07"
|
||||
implementation "com.github.wulkanowy:MaterialChipsInput:b72fd0ee6f"
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines"
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-guava:$coroutines"
|
||||
|
||||
implementation 'androidx.core:core-ktx:1.13.1'
|
||||
implementation 'androidx.core:core-splashscreen:1.0.1'
|
||||
implementation "androidx.activity:activity-ktx:1.9.0"
|
||||
implementation "androidx.appcompat:appcompat:1.6.1"
|
||||
implementation "androidx.fragment:fragment-ktx:1.7.0"
|
||||
implementation "androidx.annotation:annotation:1.7.1"
|
||||
implementation "androidx.javascriptengine:javascriptengine:1.0.0-beta01"
|
||||
|
||||
implementation "androidx.preference:preference-ktx:1.2.1"
|
||||
implementation "androidx.recyclerview:recyclerview:1.3.2"
|
||||
implementation "androidx.viewpager2:viewpager2:1.1.0-rc01"
|
||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
|
||||
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
|
||||
implementation "androidx.coordinatorlayout:coordinatorlayout:1.2.0"
|
||||
implementation "com.google.android.material:material:1.10.0"
|
||||
implementation "com.github.wulkanowy:material-chips-input:2.3.1"
|
||||
implementation "com.github.PhilJay:MPAndroidChart:v3.1.0"
|
||||
implementation 'com.github.lopspower:CircularImageView:4.3.0'
|
||||
|
||||
implementation "androidx.work:work-runtime:2.0.1"
|
||||
implementation "androidx.work:work-rxjava2:2.0.1"
|
||||
implementation "androidx.work:work-runtime:$work_manager"
|
||||
playImplementation "androidx.work:work-gcm:$work_manager"
|
||||
|
||||
implementation "androidx.room:room-runtime:2.1.0"
|
||||
implementation "androidx.room:room-rxjava2:2.1.0"
|
||||
kapt "androidx.room:room-compiler:2.1.0"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.7.0"
|
||||
|
||||
implementation "com.google.dagger:dagger-android-support:2.23.1"
|
||||
kapt "com.google.dagger:dagger-compiler:2.23.1"
|
||||
kapt "com.google.dagger:dagger-android-processor:2.23.1"
|
||||
implementation "com.squareup.inject:assisted-inject-annotations-dagger2:0.4.0"
|
||||
kapt "com.squareup.inject:assisted-inject-processor-dagger2:0.4.0"
|
||||
implementation "androidx.room:room-runtime:$room"
|
||||
implementation "androidx.room:room-ktx:$room"
|
||||
ksp "androidx.room:room-compiler:$room"
|
||||
|
||||
implementation "eu.davidea:flexible-adapter:5.1.0"
|
||||
implementation "eu.davidea:flexible-adapter-ui:1.0.0"
|
||||
implementation "com.aurelhubert:ahbottomnavigation:2.3.4"
|
||||
implementation "com.ncapdevi:frag-nav:3.2.0"
|
||||
implementation "com.google.dagger:hilt-android:$hilt_version"
|
||||
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
|
||||
kapt "androidx.hilt:hilt-compiler:$android_hilt"
|
||||
implementation "androidx.hilt:hilt-work:$android_hilt"
|
||||
|
||||
implementation "com.github.pwittchen:reactivenetwork-rx2:3.0.3"
|
||||
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
|
||||
implementation "io.reactivex.rxjava2:rxjava:2.2.9"
|
||||
implementation 'com.github.ncapdevi:FragNav:3.3.0'
|
||||
implementation "com.github.YarikSOffice:lingver:1.3.0"
|
||||
|
||||
implementation "com.google.code.gson:gson:2.8.5"
|
||||
implementation "com.jakewharton.threetenabp:threetenabp:1.2.1"
|
||||
implementation "com.jakewharton.timber:timber:4.7.1"
|
||||
implementation "at.favre.lib:slf4j-timber:1.0.1"
|
||||
implementation "com.squareup.okhttp3:logging-interceptor:3.12.3"
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.11.0'
|
||||
implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0"
|
||||
implementation "com.squareup.okhttp3:logging-interceptor:4.12.0"
|
||||
implementation "com.squareup.okhttp3:okhttp-urlconnection:4.12.0"
|
||||
|
||||
implementation "com.mikepenz:aboutlibraries:6.2.3"
|
||||
implementation "com.takisoft.preferencex:preferencex:1.0.0"
|
||||
implementation "com.jakewharton.timber:timber:5.0.1"
|
||||
implementation 'com.github.Faierbel:slf4j-timber:2.0'
|
||||
implementation 'com.github.bastienpaulfr:Treessence:1.1.2'
|
||||
implementation "com.mikepenz:aboutlibraries-core:$about_libraries"
|
||||
implementation 'io.coil-kt:coil:2.6.0'
|
||||
implementation "io.github.wulkanowy:AppKillerManager:3.0.1"
|
||||
implementation 'me.xdrop:fuzzywuzzy:1.4.0'
|
||||
implementation 'com.fredporciuncula:flow-preferences:1.9.1'
|
||||
implementation 'org.apache.commons:commons-text:1.12.0'
|
||||
|
||||
playImplementation "com.google.firebase:firebase-core:16.0.9"
|
||||
playImplementation "com.crashlytics.sdk.android:crashlytics:2.10.1"
|
||||
playImplementation platform('com.google.firebase:firebase-bom:33.0.0')
|
||||
playImplementation 'com.google.firebase:firebase-analytics'
|
||||
playImplementation 'com.google.firebase:firebase-messaging'
|
||||
playImplementation 'com.google.firebase:firebase-crashlytics:'
|
||||
playImplementation 'com.google.firebase:firebase-config'
|
||||
|
||||
releaseImplementation "fr.o80.chucker:library-no-op:2.0.4"
|
||||
playImplementation 'com.google.android.gms:play-services-ads:22.6.0'
|
||||
playImplementation "com.google.android.play:integrity:1.3.0"
|
||||
playImplementation 'com.google.android.play:app-update-ktx:2.1.0'
|
||||
playImplementation 'com.google.android.play:review-ktx:2.0.1'
|
||||
playImplementation "com.google.android.ump:user-messaging-platform:2.1.0"
|
||||
|
||||
debugImplementation "fr.o80.chucker:library:2.0.4"
|
||||
debugImplementation "com.amitshekhar.android:debug-db:1.0.6"
|
||||
hmsImplementation 'com.huawei.hms:hianalytics:6.12.0.301'
|
||||
hmsImplementation 'com.huawei.agconnect:agconnect-crash:1.9.1.303'
|
||||
|
||||
testImplementation "junit:junit:4.12"
|
||||
testImplementation "io.mockk:mockk:1.9.2"
|
||||
testImplementation "org.threeten:threetenbp:1.4.0"
|
||||
testImplementation "org.mockito:mockito-core:2.28.2"
|
||||
testImplementation("org.mockito:mockito-inline:2.28.2") {
|
||||
exclude group: "org.mockito", module: "mockito-core"
|
||||
}
|
||||
releaseImplementation "com.github.chuckerteam.chucker:library-no-op:$chucker"
|
||||
|
||||
androidTestImplementation "androidx.test:core:1.2.0"
|
||||
androidTestImplementation "androidx.test:runner:1.2.0"
|
||||
androidTestImplementation "androidx.test.ext:junit:1.1.1"
|
||||
androidTestImplementation "io.mockk:mockk-android:1.9.2"
|
||||
androidTestImplementation "androidx.room:room-testing:2.1.0"
|
||||
debugImplementation "com.github.chuckerteam.chucker:library:$chucker"
|
||||
debugImplementation 'com.github.amitshekhariitbhu.Android-Debug-Database:debug-db:1.0.6'
|
||||
debugImplementation 'com.github.haroldadmin:WhatTheStack:1.0.0-alpha04'
|
||||
|
||||
testImplementation "junit:junit:4.13.2"
|
||||
testImplementation "io.mockk:mockk:$mockk"
|
||||
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines"
|
||||
testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
|
||||
|
||||
testImplementation 'org.robolectric:robolectric:4.12.1'
|
||||
testImplementation "androidx.test:runner:1.5.2"
|
||||
testImplementation "androidx.test.ext:junit:1.1.5"
|
||||
testImplementation "androidx.test:core:1.5.0"
|
||||
testImplementation "androidx.room:room-testing:$room"
|
||||
testImplementation "com.google.dagger:hilt-android-testing:$hilt_version"
|
||||
kaptTest "com.google.dagger:hilt-android-compiler:$hilt_version"
|
||||
|
||||
androidTestImplementation "androidx.test:core:1.5.0"
|
||||
androidTestImplementation "androidx.test:runner:1.5.2"
|
||||
androidTestImplementation "androidx.test.ext:junit:1.1.5"
|
||||
androidTestImplementation "io.mockk:mockk-android:$mockk"
|
||||
androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
|
||||
androidTestImplementation "org.mockito:mockito-core:2.28.2"
|
||||
androidTestImplementation("org.mockito:mockito-android:2.28.2") {
|
||||
exclude group: 'org.mockito', module: 'mockito-core'
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
|
@ -36,6 +36,37 @@
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:1091101852179:android:b558a25f65d088b1",
|
||||
"android_client_info": {
|
||||
"package_name": "io.github.wulkanowy"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": ""
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"analytics_service": {
|
||||
"status": 1
|
||||
},
|
||||
"appinvite_service": {
|
||||
"status": 1,
|
||||
"other_platform_oauth_client": []
|
||||
},
|
||||
"ads_service": {
|
||||
"status": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
@ -1,22 +1,23 @@
|
||||
apply plugin: "jacoco"
|
||||
|
||||
jacoco {
|
||||
toolVersion "0.8.3"
|
||||
reportsDir = file("$buildDir/reports")
|
||||
toolVersion "0.8.11"
|
||||
reportsDirectory.set(file("$buildDir/reports"))
|
||||
}
|
||||
|
||||
tasks.withType(Test) {
|
||||
tasks.withType(Test).configureEach {
|
||||
jacoco.includeNoLocationClasses = true
|
||||
jacoco.excludes = ['jdk.internal.*']
|
||||
}
|
||||
|
||||
task jacocoTestReport(type: JacocoReport) {
|
||||
tasks.register('jacocoTestReport', JacocoReport) {
|
||||
|
||||
group = "Reporting"
|
||||
description = "Generate Jacoco coverage reports"
|
||||
|
||||
reports {
|
||||
xml.enabled = true
|
||||
html.enabled = true
|
||||
xml.required.set(true)
|
||||
html.required.set(true)
|
||||
}
|
||||
|
||||
def excludes = ['**/R.class',
|
||||
@ -32,19 +33,19 @@ task jacocoTestReport(type: JacocoReport) {
|
||||
'**/*_Factory.*']
|
||||
|
||||
classDirectories.setFrom(fileTree(
|
||||
dir: "$buildDir/intermediates/classes/debug",
|
||||
excludes: excludes
|
||||
dir: "$buildDir/intermediates/classes/debug",
|
||||
excludes: excludes
|
||||
) + fileTree(
|
||||
dir: "$buildDir/tmp/kotlin-classes/playDebug",
|
||||
excludes: excludes
|
||||
dir: "$buildDir/tmp/kotlin-classes/fdroidDebug",
|
||||
excludes: excludes
|
||||
))
|
||||
|
||||
sourceDirectories.setFrom(files([
|
||||
"src/main/java",
|
||||
"src/play/java"
|
||||
"src/main/java",
|
||||
"src/fdroid/java"
|
||||
]))
|
||||
executionData.setFrom(fileTree(
|
||||
dir: project.projectDir,
|
||||
includes: ["**/*.exec", "**/*.ec"]
|
||||
dir: project.projectDir,
|
||||
includes: ["**/*.exec", "**/*.ec"]
|
||||
))
|
||||
}
|
||||
|
Binary file not shown.
BIN
app/key.p12.gpg
BIN
app/key.p12.gpg
Binary file not shown.
@ -1,7 +1,8 @@
|
||||
#!/bin/bash -
|
||||
|
||||
content=$(cat < "app/src/main/play/release-notes/pl-PL/default.txt") || exit
|
||||
if [[ "${#content}" -gt 500 ]]; then
|
||||
content2=echo "$content" | dos2unix
|
||||
if [[ "${#content2}" -gt 500 ]]; then
|
||||
echo >&2 "Release notes content has reached the limit of 500 characters"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -1,3 +0,0 @@
|
||||
-keep class android.support.test.internal** { *; }
|
||||
-keep class org.junit.** { *; }
|
||||
-keep public class io.github.wulkanowy** { *; }
|
50
app/proguard-rules.pro
vendored
50
app/proguard-rules.pro
vendored
@ -1,42 +1,42 @@
|
||||
# Optimizations
|
||||
-optimizationpasses 5
|
||||
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-dontskipnonpubliclibraryclassmembers
|
||||
-dontpreverify
|
||||
# General
|
||||
-dontobfuscate
|
||||
-allowaccessmodification
|
||||
-repackageclasses ''
|
||||
-verbose
|
||||
-ignorewarnings
|
||||
|
||||
|
||||
#Config for anallitycs
|
||||
-keepattributes *Annotation*
|
||||
#Config for wulkanowy
|
||||
-keep class io.github.wulkanowy.** {*;}
|
||||
|
||||
|
||||
#Config for firebase crashlitycs
|
||||
-keepattributes SourceFile,LineNumberTable
|
||||
-keep class com.crashlytics.** {*;}
|
||||
-keep public class * extends java.lang.Exception
|
||||
-dontwarn com.crashlytics.**
|
||||
|
||||
|
||||
#Config for OkHttp
|
||||
#Config for Okio and OkHttp
|
||||
-dontwarn javax.annotation.**
|
||||
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
||||
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
||||
-dontwarn okhttp3.internal.platform.ConscryptPlatform
|
||||
-dontwarn javax.annotation.**
|
||||
|
||||
|
||||
#Config for ReactiveNetwork
|
||||
-dontwarn com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork
|
||||
-dontwarn io.reactivex.functions.Function
|
||||
-dontwarn rx.internal.util.**
|
||||
-dontwarn sun.misc.Unsafe
|
||||
|
||||
#Config for MPAndroidChart
|
||||
-keep class com.github.mikephil.charting.** { *; }
|
||||
|
||||
#Config for API
|
||||
-keep class io.github.wulkanowy.api.** {*;}
|
||||
|
||||
#Config for Material Components
|
||||
-keep class com.google.android.material.tabs.** {*;}
|
||||
-keep class com.google.android.material.tabs.** { *; }
|
||||
|
||||
|
||||
#Config for HMS SDK
|
||||
-keepattributes *Annotation*
|
||||
-keepattributes Exceptions
|
||||
-keepattributes InnerClasses
|
||||
-keepattributes Signature
|
||||
-keep class com.huawei.agconnect.**{*;}
|
||||
-keep class com.huawei.hianalytics.**{*;}
|
||||
-keep class com.huawei.updatesdk.**{*;}
|
||||
-keep class com.huawei.hms.**{*;}
|
||||
|
||||
|
||||
#Config for Wulkanowy SDK
|
||||
-keep,allowobfuscation,allowshrinking class retrofit2.Response
|
||||
|
1480
app/schemas/io.github.wulkanowy.data.db.AppDatabase/16.json
Normal file
1480
app/schemas/io.github.wulkanowy.data.db.AppDatabase/16.json
Normal file
File diff suppressed because it is too large
Load Diff
1530
app/schemas/io.github.wulkanowy.data.db.AppDatabase/17.json
Normal file
1530
app/schemas/io.github.wulkanowy.data.db.AppDatabase/17.json
Normal file
File diff suppressed because it is too large
Load Diff
1592
app/schemas/io.github.wulkanowy.data.db.AppDatabase/18.json
Normal file
1592
app/schemas/io.github.wulkanowy.data.db.AppDatabase/18.json
Normal file
File diff suppressed because it is too large
Load Diff
1628
app/schemas/io.github.wulkanowy.data.db.AppDatabase/19.json
Normal file
1628
app/schemas/io.github.wulkanowy.data.db.AppDatabase/19.json
Normal file
File diff suppressed because it is too large
Load Diff
1634
app/schemas/io.github.wulkanowy.data.db.AppDatabase/20.json
Normal file
1634
app/schemas/io.github.wulkanowy.data.db.AppDatabase/20.json
Normal file
File diff suppressed because it is too large
Load Diff
1652
app/schemas/io.github.wulkanowy.data.db.AppDatabase/21.json
Normal file
1652
app/schemas/io.github.wulkanowy.data.db.AppDatabase/21.json
Normal file
File diff suppressed because it is too large
Load Diff
1658
app/schemas/io.github.wulkanowy.data.db.AppDatabase/22.json
Normal file
1658
app/schemas/io.github.wulkanowy.data.db.AppDatabase/22.json
Normal file
File diff suppressed because it is too large
Load Diff
1682
app/schemas/io.github.wulkanowy.data.db.AppDatabase/23.json
Normal file
1682
app/schemas/io.github.wulkanowy.data.db.AppDatabase/23.json
Normal file
File diff suppressed because it is too large
Load Diff
1732
app/schemas/io.github.wulkanowy.data.db.AppDatabase/24.json
Normal file
1732
app/schemas/io.github.wulkanowy.data.db.AppDatabase/24.json
Normal file
File diff suppressed because it is too large
Load Diff
1744
app/schemas/io.github.wulkanowy.data.db.AppDatabase/25.json
Normal file
1744
app/schemas/io.github.wulkanowy.data.db.AppDatabase/25.json
Normal file
File diff suppressed because it is too large
Load Diff
1768
app/schemas/io.github.wulkanowy.data.db.AppDatabase/26.json
Normal file
1768
app/schemas/io.github.wulkanowy.data.db.AppDatabase/26.json
Normal file
File diff suppressed because it is too large
Load Diff
1774
app/schemas/io.github.wulkanowy.data.db.AppDatabase/27.json
Normal file
1774
app/schemas/io.github.wulkanowy.data.db.AppDatabase/27.json
Normal file
File diff suppressed because it is too large
Load Diff
1842
app/schemas/io.github.wulkanowy.data.db.AppDatabase/28.json
Normal file
1842
app/schemas/io.github.wulkanowy.data.db.AppDatabase/28.json
Normal file
File diff suppressed because it is too large
Load Diff
1898
app/schemas/io.github.wulkanowy.data.db.AppDatabase/29.json
Normal file
1898
app/schemas/io.github.wulkanowy.data.db.AppDatabase/29.json
Normal file
File diff suppressed because it is too large
Load Diff
1954
app/schemas/io.github.wulkanowy.data.db.AppDatabase/30.json
Normal file
1954
app/schemas/io.github.wulkanowy.data.db.AppDatabase/30.json
Normal file
File diff suppressed because it is too large
Load Diff
2136
app/schemas/io.github.wulkanowy.data.db.AppDatabase/31.json
Normal file
2136
app/schemas/io.github.wulkanowy.data.db.AppDatabase/31.json
Normal file
File diff suppressed because it is too large
Load Diff
2142
app/schemas/io.github.wulkanowy.data.db.AppDatabase/32.json
Normal file
2142
app/schemas/io.github.wulkanowy.data.db.AppDatabase/32.json
Normal file
File diff suppressed because it is too large
Load Diff
2142
app/schemas/io.github.wulkanowy.data.db.AppDatabase/33.json
Normal file
2142
app/schemas/io.github.wulkanowy.data.db.AppDatabase/33.json
Normal file
File diff suppressed because it is too large
Load Diff
2142
app/schemas/io.github.wulkanowy.data.db.AppDatabase/34.json
Normal file
2142
app/schemas/io.github.wulkanowy.data.db.AppDatabase/34.json
Normal file
File diff suppressed because it is too large
Load Diff
2148
app/schemas/io.github.wulkanowy.data.db.AppDatabase/35.json
Normal file
2148
app/schemas/io.github.wulkanowy.data.db.AppDatabase/35.json
Normal file
File diff suppressed because it is too large
Load Diff
2160
app/schemas/io.github.wulkanowy.data.db.AppDatabase/36.json
Normal file
2160
app/schemas/io.github.wulkanowy.data.db.AppDatabase/36.json
Normal file
File diff suppressed because it is too large
Load Diff
2204
app/schemas/io.github.wulkanowy.data.db.AppDatabase/37.json
Normal file
2204
app/schemas/io.github.wulkanowy.data.db.AppDatabase/37.json
Normal file
File diff suppressed because it is too large
Load Diff
2248
app/schemas/io.github.wulkanowy.data.db.AppDatabase/38.json
Normal file
2248
app/schemas/io.github.wulkanowy.data.db.AppDatabase/38.json
Normal file
File diff suppressed because it is too large
Load Diff
2260
app/schemas/io.github.wulkanowy.data.db.AppDatabase/39.json
Normal file
2260
app/schemas/io.github.wulkanowy.data.db.AppDatabase/39.json
Normal file
File diff suppressed because it is too large
Load Diff
2316
app/schemas/io.github.wulkanowy.data.db.AppDatabase/40.json
Normal file
2316
app/schemas/io.github.wulkanowy.data.db.AppDatabase/40.json
Normal file
File diff suppressed because it is too large
Load Diff
2322
app/schemas/io.github.wulkanowy.data.db.AppDatabase/41.json
Normal file
2322
app/schemas/io.github.wulkanowy.data.db.AppDatabase/41.json
Normal file
File diff suppressed because it is too large
Load Diff
2396
app/schemas/io.github.wulkanowy.data.db.AppDatabase/42.json
Normal file
2396
app/schemas/io.github.wulkanowy.data.db.AppDatabase/42.json
Normal file
File diff suppressed because it is too large
Load Diff
2408
app/schemas/io.github.wulkanowy.data.db.AppDatabase/43.json
Normal file
2408
app/schemas/io.github.wulkanowy.data.db.AppDatabase/43.json
Normal file
File diff suppressed because it is too large
Load Diff
2414
app/schemas/io.github.wulkanowy.data.db.AppDatabase/44.json
Normal file
2414
app/schemas/io.github.wulkanowy.data.db.AppDatabase/44.json
Normal file
File diff suppressed because it is too large
Load Diff
2430
app/schemas/io.github.wulkanowy.data.db.AppDatabase/45.json
Normal file
2430
app/schemas/io.github.wulkanowy.data.db.AppDatabase/45.json
Normal file
File diff suppressed because it is too large
Load Diff
2430
app/schemas/io.github.wulkanowy.data.db.AppDatabase/46.json
Normal file
2430
app/schemas/io.github.wulkanowy.data.db.AppDatabase/46.json
Normal file
File diff suppressed because it is too large
Load Diff
2438
app/schemas/io.github.wulkanowy.data.db.AppDatabase/47.json
Normal file
2438
app/schemas/io.github.wulkanowy.data.db.AppDatabase/47.json
Normal file
File diff suppressed because it is too large
Load Diff
2445
app/schemas/io.github.wulkanowy.data.db.AppDatabase/48.json
Normal file
2445
app/schemas/io.github.wulkanowy.data.db.AppDatabase/48.json
Normal file
File diff suppressed because it is too large
Load Diff
2445
app/schemas/io.github.wulkanowy.data.db.AppDatabase/49.json
Normal file
2445
app/schemas/io.github.wulkanowy.data.db.AppDatabase/49.json
Normal file
File diff suppressed because it is too large
Load Diff
2445
app/schemas/io.github.wulkanowy.data.db.AppDatabase/50.json
Normal file
2445
app/schemas/io.github.wulkanowy.data.db.AppDatabase/50.json
Normal file
File diff suppressed because it is too large
Load Diff
2409
app/schemas/io.github.wulkanowy.data.db.AppDatabase/51.json
Normal file
2409
app/schemas/io.github.wulkanowy.data.db.AppDatabase/51.json
Normal file
File diff suppressed because it is too large
Load Diff
2421
app/schemas/io.github.wulkanowy.data.db.AppDatabase/52.json
Normal file
2421
app/schemas/io.github.wulkanowy.data.db.AppDatabase/52.json
Normal file
File diff suppressed because it is too large
Load Diff
2439
app/schemas/io.github.wulkanowy.data.db.AppDatabase/53.json
Normal file
2439
app/schemas/io.github.wulkanowy.data.db.AppDatabase/53.json
Normal file
File diff suppressed because it is too large
Load Diff
2439
app/schemas/io.github.wulkanowy.data.db.AppDatabase/54.json
Normal file
2439
app/schemas/io.github.wulkanowy.data.db.AppDatabase/54.json
Normal file
File diff suppressed because it is too large
Load Diff
2435
app/schemas/io.github.wulkanowy.data.db.AppDatabase/55.json
Normal file
2435
app/schemas/io.github.wulkanowy.data.db.AppDatabase/55.json
Normal file
File diff suppressed because it is too large
Load Diff
2442
app/schemas/io.github.wulkanowy.data.db.AppDatabase/56.json
Normal file
2442
app/schemas/io.github.wulkanowy.data.db.AppDatabase/56.json
Normal file
File diff suppressed because it is too large
Load Diff
2443
app/schemas/io.github.wulkanowy.data.db.AppDatabase/57.json
Normal file
2443
app/schemas/io.github.wulkanowy.data.db.AppDatabase/57.json
Normal file
File diff suppressed because it is too large
Load Diff
2451
app/schemas/io.github.wulkanowy.data.db.AppDatabase/58.json
Normal file
2451
app/schemas/io.github.wulkanowy.data.db.AppDatabase/58.json
Normal file
File diff suppressed because it is too large
Load Diff
2501
app/schemas/io.github.wulkanowy.data.db.AppDatabase/59.json
Normal file
2501
app/schemas/io.github.wulkanowy.data.db.AppDatabase/59.json
Normal file
File diff suppressed because it is too large
Load Diff
2527
app/schemas/io.github.wulkanowy.data.db.AppDatabase/60.json
Normal file
2527
app/schemas/io.github.wulkanowy.data.db.AppDatabase/60.json
Normal file
File diff suppressed because it is too large
Load Diff
2533
app/schemas/io.github.wulkanowy.data.db.AppDatabase/61.json
Normal file
2533
app/schemas/io.github.wulkanowy.data.db.AppDatabase/61.json
Normal file
File diff suppressed because it is too large
Load Diff
2547
app/schemas/io.github.wulkanowy.data.db.AppDatabase/62.json
Normal file
2547
app/schemas/io.github.wulkanowy.data.db.AppDatabase/62.json
Normal file
File diff suppressed because it is too large
Load Diff
2547
app/schemas/io.github.wulkanowy.data.db.AppDatabase/63.json
Normal file
2547
app/schemas/io.github.wulkanowy.data.db.AppDatabase/63.json
Normal file
File diff suppressed because it is too large
Load Diff
2559
app/schemas/io.github.wulkanowy.data.db.AppDatabase/64.json
Normal file
2559
app/schemas/io.github.wulkanowy.data.db.AppDatabase/64.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,36 +0,0 @@
|
||||
package io.github.wulkanowy.data.db.migrations
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.room.testing.MigrationTestHelper
|
||||
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import org.junit.Rule
|
||||
|
||||
abstract class AbstractMigrationTest {
|
||||
|
||||
val dbName = "migration-test"
|
||||
|
||||
@get:Rule
|
||||
val helper: MigrationTestHelper = MigrationTestHelper(
|
||||
InstrumentationRegistry.getInstrumentation(),
|
||||
AppDatabase::class.java.canonicalName,
|
||||
FrameworkSQLiteOpenHelperFactory()
|
||||
)
|
||||
|
||||
fun getMigratedRoomDatabase(): AppDatabase {
|
||||
val database = Room.databaseBuilder(ApplicationProvider.getApplicationContext(),
|
||||
AppDatabase::class.java, dbName)
|
||||
.addMigrations(
|
||||
Migration12(),
|
||||
Migration13(),
|
||||
Migration14(),
|
||||
Migration15()
|
||||
)
|
||||
.build()
|
||||
// close the database and release any stream resources when the test finishes
|
||||
helper.closeWhenFinished(database)
|
||||
return database
|
||||
}
|
||||
}
|
@ -1,171 +0,0 @@
|
||||
package io.github.wulkanowy.data.db.migrations
|
||||
|
||||
import android.content.ContentValues
|
||||
import android.database.sqlite.SQLiteDatabase
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Test
|
||||
import org.threeten.bp.LocalDate.of
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class Migration13Test : AbstractMigrationTest() {
|
||||
|
||||
@Test
|
||||
fun studentsWithSchoolNameWithClassName() {
|
||||
helper.createDatabase(dbName, 12).apply {
|
||||
createStudent(this, 1, "Klasa A - Publiczna szkoła Wulkanowego nr 1 w fakelog.cf", 1, 1)
|
||||
createStudent(this, 2, "Klasa B - Publiczna szkoła Wulkanowego-fejka nr 1 w fakelog.cf", 2, 1)
|
||||
createStudent(this, 2, "Klasa C - Publiczna szkoła Wulkanowego-fejka nr 2 w fakelog.cf", 1, 2)
|
||||
close()
|
||||
}
|
||||
|
||||
helper.runMigrationsAndValidate(dbName, 13, true, Migration13())
|
||||
|
||||
val db = getMigratedRoomDatabase()
|
||||
val students = db.studentDao.loadAll().blockingGet()
|
||||
|
||||
assertEquals(3, students.size)
|
||||
|
||||
students[0].run {
|
||||
assertEquals(1, studentId)
|
||||
assertEquals("A", className)
|
||||
assertEquals("Publiczna szkoła Wulkanowego nr 1 w fakelog.cf", schoolName)
|
||||
}
|
||||
|
||||
students[1].run {
|
||||
assertEquals(2, studentId)
|
||||
assertEquals("B", className)
|
||||
assertEquals("Publiczna szkoła Wulkanowego-fejka nr 1 w fakelog.cf", schoolName)
|
||||
}
|
||||
|
||||
students[2].run {
|
||||
assertEquals(2, studentId)
|
||||
assertEquals("C", className)
|
||||
assertEquals("Publiczna szkoła Wulkanowego-fejka nr 2 w fakelog.cf", schoolName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun studentsWithSchoolNameWithoutClassName() {
|
||||
helper.createDatabase(dbName, 12).apply {
|
||||
createStudent(this, 1, "Publiczna szkoła Wulkanowego nr 1 w fakelog.cf", 1)
|
||||
createStudent(this, 2, "Publiczna szkoła Wulkanowego-fejka nr 1 w fakelog.cf", 1)
|
||||
close()
|
||||
}
|
||||
|
||||
helper.runMigrationsAndValidate(dbName, 13, true, Migration13())
|
||||
|
||||
val db = getMigratedRoomDatabase()
|
||||
val students = db.studentDao.loadAll().blockingGet()
|
||||
|
||||
assertEquals(2, students.size)
|
||||
|
||||
students[0].run {
|
||||
assertEquals(1, studentId)
|
||||
assertEquals("", className)
|
||||
assertEquals("Publiczna szkoła Wulkanowego nr 1 w fakelog.cf", schoolName)
|
||||
}
|
||||
|
||||
students[1].run {
|
||||
assertEquals(2, studentId)
|
||||
assertEquals("", className)
|
||||
assertEquals("Publiczna szkoła Wulkanowego-fejka nr 1 w fakelog.cf", schoolName)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun markAtLeastAndOnlyOneSemesterAtCurrent() {
|
||||
helper.createDatabase(dbName, 12).apply {
|
||||
createStudent(this, 1, "", 5)
|
||||
createSemester(this, 1, 5, 1, 1, false)
|
||||
createSemester(this, 1, 5, 2, 1, false)
|
||||
createSemester(this, 1, 5, 3, 2, false)
|
||||
createSemester(this, 1, 5, 4, 2, false)
|
||||
|
||||
createStudent(this, 2, "", 5)
|
||||
createSemester(this, 2, 5, 5, 5, true)
|
||||
createSemester(this, 2, 5, 6, 5, true)
|
||||
createSemester(this, 2, 5, 7, 55, true)
|
||||
createSemester(this, 2, 5, 8, 55, true)
|
||||
|
||||
createStudent(this, 3, "", 5)
|
||||
createSemester(this, 3, 5, 11, 99, false)
|
||||
createSemester(this, 3, 5, 12, 99, false)
|
||||
createSemester(this, 3, 5, 13, 100, false)
|
||||
createSemester(this, 3, 5, 14, 100, true)
|
||||
close()
|
||||
}
|
||||
|
||||
helper.runMigrationsAndValidate(dbName, 13, true, Migration13())
|
||||
|
||||
val db = getMigratedRoomDatabase()
|
||||
|
||||
val semesters1 = db.semesterDao.loadAll(1, 5).blockingGet()
|
||||
assertTrue { semesters1.single { it.isCurrent }.isCurrent }
|
||||
semesters1[0].run {
|
||||
assertFalse(isCurrent)
|
||||
assertEquals(1, semesterId)
|
||||
assertEquals(1, diaryId)
|
||||
}
|
||||
semesters1[2].run {
|
||||
assertFalse(isCurrent)
|
||||
assertEquals(3, semesterId)
|
||||
assertEquals(2, diaryId)
|
||||
}
|
||||
semesters1[3].run {
|
||||
assertTrue(isCurrent)
|
||||
assertEquals(4, semesterId)
|
||||
assertEquals(2, diaryId)
|
||||
}
|
||||
|
||||
db.semesterDao.loadAll(2, 5).blockingGet().let {
|
||||
assertTrue { it.single { it.isCurrent }.isCurrent }
|
||||
assertEquals(1970, it[0].schoolYear)
|
||||
assertEquals(of(1970, 1, 1), it[0].end)
|
||||
assertEquals(of(1970, 1, 1), it[0].start)
|
||||
assertFalse(it[0].isCurrent)
|
||||
assertFalse(it[1].isCurrent)
|
||||
assertFalse(it[2].isCurrent)
|
||||
assertTrue(it[3].isCurrent)
|
||||
}
|
||||
|
||||
db.semesterDao.loadAll(2, 5).blockingGet().let {
|
||||
assertTrue { it.single { it.isCurrent }.isCurrent }
|
||||
assertFalse(it[0].isCurrent)
|
||||
assertFalse(it[1].isCurrent)
|
||||
assertFalse(it[2].isCurrent)
|
||||
assertTrue(it[3].isCurrent)
|
||||
}
|
||||
}
|
||||
|
||||
private fun createStudent(db: SupportSQLiteDatabase, studentId: Int, schoolName: String = "", classId: Int = -1, schoolId: Int = 123) {
|
||||
db.insert("Students", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
||||
put("endpoint", "https://fakelog.cf")
|
||||
put("loginType", "STANDARD")
|
||||
put("email", "jan@fakelog.cf")
|
||||
put("password", "******")
|
||||
put("symbol", "Default")
|
||||
put("student_id", studentId)
|
||||
put("class_id", classId)
|
||||
put("student_name", "Jan Kowalski")
|
||||
put("school_id", schoolId)
|
||||
put("school_name", schoolName)
|
||||
put("is_current", false)
|
||||
put("registration_date", "0")
|
||||
})
|
||||
}
|
||||
|
||||
private fun createSemester(db: SupportSQLiteDatabase, studentId: Int, classId: Int, semesterId: Int, diaryId: Int, isCurrent: Boolean = false) {
|
||||
db.insert("Semesters", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
||||
put("student_id", studentId)
|
||||
put("diary_id", diaryId)
|
||||
put("diary_name", "IA")
|
||||
put("semester_id", semesterId)
|
||||
put("semester_name", "1")
|
||||
put("is_current", isCurrent)
|
||||
put("class_id", classId)
|
||||
put("unit_id", "99")
|
||||
})
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories
|
||||
|
||||
import com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.InternetObservingStrategy
|
||||
import com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.error.ErrorHandler
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.Single
|
||||
|
||||
class TestInternetObservingStrategy : InternetObservingStrategy {
|
||||
|
||||
override fun checkInternetConnectivity(host: String?, port: Int, timeoutInMs: Int, httpResponse: Int, errorHandler: ErrorHandler?): Single<Boolean> {
|
||||
return Single.just(true)
|
||||
}
|
||||
|
||||
override fun observeInternetConnectivity(initialIntervalInMs: Int, intervalInMs: Int, host: String?, port: Int, timeoutInMs: Int, httpResponse: Int, errorHandler: ErrorHandler?): Observable<Boolean> {
|
||||
return Observable.just(true)
|
||||
}
|
||||
|
||||
override fun getDefaultPingHost() = "localhost"
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.attendance
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Attendance
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import org.threeten.bp.LocalDate.now
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class AttendanceLocalTest {
|
||||
|
||||
private lateinit var attendanceLocal: AttendanceLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java).build()
|
||||
attendanceLocal = AttendanceLocal(testDb.attendanceDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
attendanceLocal.saveAttendance(listOf(
|
||||
Attendance(1, 2, LocalDate.of(2018, 9, 10), 0, "", "", false, false, false, false, false, false),
|
||||
Attendance(1, 2, LocalDate.of(2018, 9, 14), 0, "", "", false, false, false, false, false, false),
|
||||
Attendance(1, 2, LocalDate.of(2018, 9, 17), 0, "", "", false, false, false, false, false, false)
|
||||
))
|
||||
|
||||
val attendance = attendanceLocal
|
||||
.getAttendance(Semester(1, 2, "", 1, 3, 2019, true, now(), now(), 1, 1),
|
||||
LocalDate.of(2018, 9, 10),
|
||||
LocalDate.of(2018, 9, 14)
|
||||
)
|
||||
.blockingGet()
|
||||
assertEquals(2, attendance.size)
|
||||
assertEquals(attendance[0].date, LocalDate.of(2018, 9, 10))
|
||||
assertEquals(attendance[1].date, LocalDate.of(2018, 9, 14))
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.completedlessons
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.CompletedLesson
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class CompletedLessonsLocalTest {
|
||||
|
||||
private lateinit var completedLessonsLocal: CompletedLessonsLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java)
|
||||
.build()
|
||||
completedLessonsLocal = CompletedLessonsLocal(testDb.completedLessonsDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
completedLessonsLocal.saveCompletedLessons(listOf(
|
||||
getCompletedLesson(LocalDate.of(2018, 9, 10), 1),
|
||||
getCompletedLesson(LocalDate.of(2018, 9, 14), 2),
|
||||
getCompletedLesson(LocalDate.of(2018, 9, 17), 3)
|
||||
))
|
||||
|
||||
val completed = completedLessonsLocal
|
||||
.getCompletedLessons(Semester(1, 2, "", 1, 3, 2019, true, LocalDate.now(), LocalDate.now(), 1, 1),
|
||||
LocalDate.of(2018, 9, 10),
|
||||
LocalDate.of(2018, 9, 14)
|
||||
)
|
||||
.blockingGet()
|
||||
assertEquals(2, completed.size)
|
||||
assertEquals(completed[0].date, LocalDate.of(2018, 9, 10))
|
||||
assertEquals(completed[1].date, LocalDate.of(2018, 9, 14))
|
||||
}
|
||||
|
||||
private fun getCompletedLesson(date: LocalDate, number: Int): CompletedLesson {
|
||||
return CompletedLesson(1, 2, date, number, "", "", "", "", "", "", "")
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.exam
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Exam
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ExamLocalTest {
|
||||
|
||||
private lateinit var examLocal: ExamLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java).build()
|
||||
examLocal = ExamLocal(testDb.examsDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
examLocal.saveExams(listOf(
|
||||
Exam(1, 2, LocalDate.of(2018, 9, 10), LocalDate.now(), "", "", "", "", "", ""),
|
||||
Exam(1, 2, LocalDate.of(2018, 9, 14), LocalDate.now(), "", "", "", "", "", ""),
|
||||
Exam(1, 2, LocalDate.of(2018, 9, 17), LocalDate.now(), "", "", "", "", "", "")
|
||||
))
|
||||
|
||||
val exams = examLocal
|
||||
.getExams(Semester(1, 2, "", 1, 3, 2019, true, LocalDate.now(), LocalDate.now(), 1, 1),
|
||||
LocalDate.of(2018, 9, 10),
|
||||
LocalDate.of(2018, 9, 14)
|
||||
)
|
||||
.blockingGet()
|
||||
assertEquals(2, exams.size)
|
||||
assertEquals(exams[0].date, LocalDate.of(2018, 9, 10))
|
||||
assertEquals(exams[1].date, LocalDate.of(2018, 9, 14))
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.grade
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import org.threeten.bp.LocalDate.now
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class GradeLocalTest {
|
||||
|
||||
private lateinit var gradeLocal: GradeLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java)
|
||||
.build()
|
||||
gradeLocal = GradeLocal(testDb.gradeDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
gradeLocal.saveGrades(listOf(
|
||||
createGradeLocal(5, 3.0, LocalDate.of(2018, 9, 10), "", 1),
|
||||
createGradeLocal(4, 4.0, LocalDate.of(2019, 2, 27), "", 2),
|
||||
createGradeLocal(3, 5.0, LocalDate.of(2019, 2, 28), "", 2)
|
||||
))
|
||||
|
||||
val semester = Semester(1, 2, "", 2019, 2, 1, true, now(), now(), 1, 1)
|
||||
|
||||
val grades = gradeLocal
|
||||
.getGrades(semester)
|
||||
.blockingGet()
|
||||
|
||||
assertEquals(2, grades.size)
|
||||
assertEquals(grades[0].date, LocalDate.of(2019, 2, 27))
|
||||
assertEquals(grades[1].date, LocalDate.of(2019, 2, 28))
|
||||
}
|
||||
}
|
@ -1,182 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.grade
|
||||
|
||||
import android.os.Build.VERSION_CODES.P
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider.getApplicationContext
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.SdkSuppress
|
||||
import com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.InternetObservingSettings
|
||||
import io.github.wulkanowy.api.Api
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import io.github.wulkanowy.data.db.entities.Student
|
||||
import io.github.wulkanowy.data.repositories.TestInternetObservingStrategy
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.impl.annotations.SpyK
|
||||
import io.reactivex.Single
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate.of
|
||||
import org.threeten.bp.LocalDateTime
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertTrue
|
||||
import io.github.wulkanowy.api.grades.Grade as GradeApi
|
||||
|
||||
@SdkSuppress(minSdkVersion = P)
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class GradeRepositoryTest {
|
||||
|
||||
@SpyK
|
||||
private var mockApi = Api()
|
||||
|
||||
private val settings = InternetObservingSettings.builder()
|
||||
.strategy(TestInternetObservingStrategy())
|
||||
.build()
|
||||
|
||||
@MockK
|
||||
private lateinit var semesterMock: Semester
|
||||
|
||||
@MockK
|
||||
private lateinit var studentMock: Student
|
||||
|
||||
private lateinit var gradeRemote: GradeRemote
|
||||
|
||||
private lateinit var gradeLocal: GradeLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun initApi() {
|
||||
MockKAnnotations.init(this)
|
||||
testDb = Room.inMemoryDatabaseBuilder(getApplicationContext(), AppDatabase::class.java).build()
|
||||
gradeLocal = GradeLocal(testDb.gradeDao)
|
||||
gradeRemote = GradeRemote(mockApi)
|
||||
|
||||
every { mockApi.diaryId } returns 1
|
||||
every { studentMock.registrationDate } returns LocalDateTime.of(2019, 2, 27, 12, 0)
|
||||
every { semesterMock.studentId } returns 1
|
||||
every { semesterMock.semesterId } returns 1
|
||||
every { semesterMock.diaryId } returns 1
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun markOlderThanRegisterDateAsRead() {
|
||||
every { mockApi.getGrades(1) } returns Single.just(listOf(
|
||||
createGradeApi(5, 4.0, of(2019, 2, 25), "Ocena pojawiła się"),
|
||||
createGradeApi(5, 4.0, of(2019, 2, 26), "przed zalogowanie w aplikacji"),
|
||||
createGradeApi(5, 4.0, of(2019, 2, 27), "Ocena z dnia logowania"),
|
||||
createGradeApi(5, 4.0, of(2019, 2, 28), "Ocena jeszcze nowsza")
|
||||
))
|
||||
|
||||
val grades = GradeRepository(settings, gradeLocal, gradeRemote)
|
||||
.getGrades(studentMock, semesterMock, true).blockingGet().sortedByDescending { it.date }
|
||||
|
||||
assertFalse { grades[0].isRead }
|
||||
assertFalse { grades[1].isRead }
|
||||
assertTrue { grades[2].isRead }
|
||||
assertTrue { grades[3].isRead }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun mitigateOldGradesNotifications() {
|
||||
gradeLocal.saveGrades(listOf(
|
||||
createGradeLocal(5, 3.0, of(2019, 2, 25), "Jedna ocena"),
|
||||
createGradeLocal(4, 4.0, of(2019, 2, 26), "Druga"),
|
||||
createGradeLocal(3, 5.0, of(2019, 2, 27), "Trzecia")
|
||||
))
|
||||
|
||||
every { mockApi.getGrades(1) } returns Single.just(listOf(
|
||||
createGradeApi(5, 2.0, of(2019, 2, 25), "Ocena ma datę, jest inna, ale nie zostanie powiadomiona"),
|
||||
createGradeApi(4, 3.0, of(2019, 2, 26), "starszą niż ostatnia lokalnie"),
|
||||
createGradeApi(3, 4.0, of(2019, 2, 27), "Ta jest z tego samego dnia co ostatnia lokalnie"),
|
||||
createGradeApi(2, 5.0, of(2019, 2, 28), "Ta jest już w ogóle nowa")
|
||||
))
|
||||
|
||||
val grades = GradeRepository(settings, gradeLocal, gradeRemote)
|
||||
.getGrades(studentMock, semesterMock, true).blockingGet().sortedByDescending { it.date }
|
||||
|
||||
assertFalse { grades[0].isRead }
|
||||
assertFalse { grades[1].isRead }
|
||||
assertTrue { grades[2].isRead }
|
||||
assertTrue { grades[3].isRead }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun subtractLocaleDuplicateGrades() {
|
||||
gradeLocal.saveGrades(listOf(
|
||||
createGradeLocal(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeLocal(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeLocal(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
))
|
||||
|
||||
every { mockApi.getGrades(1) } returns Single.just(listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
))
|
||||
|
||||
val grades = GradeRepository(settings, gradeLocal, gradeRemote)
|
||||
.getGrades(studentMock, semesterMock, true).blockingGet()
|
||||
|
||||
assertEquals(2, grades.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun subtractRemoteDuplicateGrades() {
|
||||
gradeLocal.saveGrades(listOf(
|
||||
createGradeLocal(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeLocal(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
))
|
||||
|
||||
every { mockApi.getGrades(1) } returns Single.just(listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
))
|
||||
|
||||
val grades = GradeRepository(settings, gradeLocal, gradeRemote)
|
||||
.getGrades(studentMock, semesterMock, true).blockingGet()
|
||||
|
||||
assertEquals(3, grades.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun emptyLocal() {
|
||||
gradeLocal.saveGrades(listOf())
|
||||
|
||||
every { mockApi.getGrades(1) } returns Single.just(listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
))
|
||||
|
||||
val grades = GradeRepository(settings, gradeLocal, gradeRemote)
|
||||
.getGrades(studentMock, semesterMock, true).blockingGet()
|
||||
|
||||
assertEquals(3, grades.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun emptyRemote() {
|
||||
gradeLocal.saveGrades(listOf(
|
||||
createGradeLocal(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeLocal(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
))
|
||||
|
||||
every { mockApi.getGrades(1) } returns Single.just(listOf())
|
||||
|
||||
val grades = GradeRepository(settings, gradeLocal, gradeRemote)
|
||||
.getGrades(studentMock, semesterMock, true).blockingGet()
|
||||
|
||||
assertEquals(0, grades.size)
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.grade
|
||||
|
||||
import io.github.wulkanowy.api.toDate
|
||||
import org.threeten.bp.LocalDate
|
||||
import io.github.wulkanowy.api.grades.Grade as GradeRemote
|
||||
import io.github.wulkanowy.data.db.entities.Grade as GradeLocal
|
||||
|
||||
fun createGradeLocal(value: Int, weight: Double, date: LocalDate, desc: String, semesterId: Int = 1): GradeLocal {
|
||||
return GradeLocal(
|
||||
semesterId = semesterId,
|
||||
studentId = 1,
|
||||
modifier = .0,
|
||||
teacher = "",
|
||||
subject = "",
|
||||
date = date,
|
||||
color = "",
|
||||
comment = "",
|
||||
description = desc,
|
||||
entry = "",
|
||||
gradeSymbol = "",
|
||||
value = value,
|
||||
weight = "",
|
||||
weightValue = weight
|
||||
)
|
||||
}
|
||||
|
||||
fun createGradeApi(value: Int, weight: Double, date: LocalDate, desc: String): GradeRemote {
|
||||
return GradeRemote().apply {
|
||||
this.value = value
|
||||
this.weightValue = weight
|
||||
this.date = date.toDate()
|
||||
this.description = desc
|
||||
}
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.gradestatistics
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.GradeStatistics
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class GradeStatisticsLocalTest {
|
||||
|
||||
private lateinit var gradeStatisticsLocal: GradeStatisticsLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java)
|
||||
.build()
|
||||
gradeStatisticsLocal = GradeStatisticsLocal(testDb.gradeStatistics)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndRead_subject() {
|
||||
gradeStatisticsLocal.saveGradesStatistics(listOf(
|
||||
getGradeStatistics("Matematyka", 2, 1),
|
||||
getGradeStatistics("Fizyka", 1, 2)
|
||||
))
|
||||
|
||||
val stats = gradeStatisticsLocal.getGradesStatistics(
|
||||
Semester(2, 2, "", 2019, 1, 2, true, LocalDate.now(), LocalDate.now(), 1, 1), false,
|
||||
"Matematyka"
|
||||
).blockingGet()
|
||||
assertEquals(1, stats.size)
|
||||
assertEquals(stats[0].subject, "Matematyka")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndRead_all() {
|
||||
gradeStatisticsLocal.saveGradesStatistics(listOf(
|
||||
getGradeStatistics("Matematyka", 2, 1),
|
||||
getGradeStatistics("Chemia", 2, 1),
|
||||
getGradeStatistics("Fizyka", 1, 2)
|
||||
))
|
||||
|
||||
val stats = gradeStatisticsLocal.getGradesStatistics(
|
||||
Semester(2, 2, "", 2019, 1, 2, true, LocalDate.now(), LocalDate.now(), 1, 1), false,
|
||||
"Wszystkie"
|
||||
).blockingGet()
|
||||
assertEquals(1, stats.size)
|
||||
assertEquals(stats[0].subject, "Wszystkie")
|
||||
}
|
||||
|
||||
private fun getGradeStatistics(subject: String, studentId: Int, semesterId: Int): GradeStatistics {
|
||||
return GradeStatistics(studentId, semesterId, subject, 5, 5, false)
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.luckynumber
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.LuckyNumber
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class LuckyNumberLocalTest {
|
||||
|
||||
private lateinit var luckyNumberLocal: LuckyNumberLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java)
|
||||
.build()
|
||||
luckyNumberLocal = LuckyNumberLocal(testDb.luckyNumberDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
luckyNumberLocal.saveLuckyNumber(LuckyNumber(1, LocalDate.of(2019, 1, 20), 14))
|
||||
|
||||
val luckyNumber = luckyNumberLocal.getLuckyNumber(Semester(1, 1, "", 1, 3, 2019, true, LocalDate.now(), LocalDate.now(), 1, 1),
|
||||
LocalDate.of(2019, 1, 20)
|
||||
).blockingGet()
|
||||
|
||||
assertEquals(1, luckyNumber.studentId)
|
||||
assertEquals(LocalDate.of(2019, 1, 20), luckyNumber.date)
|
||||
assertEquals(14, luckyNumber.luckyNumber)
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.recipient
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Recipient
|
||||
import io.github.wulkanowy.data.db.entities.ReportingUnit
|
||||
import io.github.wulkanowy.data.db.entities.Student
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDateTime
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class RecipientLocalTest {
|
||||
|
||||
private lateinit var recipientLocal: RecipientLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java)
|
||||
.build()
|
||||
recipientLocal = RecipientLocal(testDb.recipientDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
recipientLocal.saveRecipients(listOf(
|
||||
Recipient(1, "2rPracownik", "Kowalski Jan", "Kowalski Jan [KJ] - Pracownik (Fake123456)", 3, 4, 2, "hash"),
|
||||
Recipient(1, "3rPracownik", "Kowalska Karolina", "Kowalska Karolina [KK] - Pracownik (Fake123456)", 4, 4, 2, "hash"),
|
||||
Recipient(1, "4rPracownik", "Krupa Stanisław", "Krupa Stanisław [KS] - Uczeń (Fake123456)", 5, 4, 1, "hash")
|
||||
))
|
||||
|
||||
val recipients = recipientLocal.getRecipients(
|
||||
Student("fakelog.cf", "AUTO", "", "", "", 1, "", "", "", "", 1, true, LocalDateTime.now()),
|
||||
2,
|
||||
ReportingUnit(1, 4, "", 0, "", emptyList())
|
||||
).blockingGet()
|
||||
|
||||
assertEquals(2, recipients.size)
|
||||
assertEquals(1, recipients[0].studentId)
|
||||
assertEquals("3rPracownik", recipients[1].realId)
|
||||
assertEquals("Kowalski Jan", recipients[0].name)
|
||||
assertEquals("Kowalska Karolina [KK] - Pracownik (Fake123456)", recipients[1].realName)
|
||||
assertEquals(3, recipients[0].loginId)
|
||||
assertEquals(4, recipients[1].unitId)
|
||||
assertEquals(2, recipients[0].role)
|
||||
assertEquals("hash", recipients[1].hash)
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.student
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.SharedPrefHelper
|
||||
import io.github.wulkanowy.data.db.entities.Student
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDateTime.now
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class StudentLocalTest {
|
||||
|
||||
private lateinit var studentLocal: StudentLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
private lateinit var sharedHelper: SharedPrefHelper
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
val context = ApplicationProvider.getApplicationContext<Context>()
|
||||
testDb = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java)
|
||||
.build()
|
||||
sharedHelper = SharedPrefHelper(context.getSharedPreferences("TEST", Context.MODE_PRIVATE))
|
||||
studentLocal = StudentLocal(testDb.studentDao, context)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
studentLocal.saveStudents(listOf(Student(email = "test", password = "test123", schoolSymbol = "23", endpoint = "fakelog.cf", loginType = "AUTO", isCurrent = true, studentName = "", schoolName = "", studentId = 0, classId = 1, symbol = "", registrationDate = now(), className = "")))
|
||||
.blockingGet()
|
||||
|
||||
val student = studentLocal.getCurrentStudent(true).blockingGet()
|
||||
assertEquals("23", student.schoolSymbol)
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.timetable
|
||||
|
||||
import io.github.wulkanowy.api.toDate
|
||||
import io.github.wulkanowy.utils.toDate
|
||||
import org.threeten.bp.LocalDateTime
|
||||
import org.threeten.bp.LocalDateTime.now
|
||||
import io.github.wulkanowy.api.timetable.Timetable as TimetableRemote
|
||||
import io.github.wulkanowy.data.db.entities.Timetable as TimetableLocal
|
||||
|
||||
fun createTimetableLocal(number: Int, start: LocalDateTime, room: String = "", subject: String = "", teacher: String = ""): TimetableLocal {
|
||||
return TimetableLocal(
|
||||
studentId = 1,
|
||||
diaryId = 2,
|
||||
number = number,
|
||||
start = start,
|
||||
end = now(),
|
||||
date = start.toLocalDate(),
|
||||
subject = subject,
|
||||
subjectOld = "",
|
||||
group = "",
|
||||
room = room,
|
||||
roomOld = "",
|
||||
teacher = teacher,
|
||||
teacherOld = "",
|
||||
info = "",
|
||||
changes = false,
|
||||
canceled = false
|
||||
)
|
||||
}
|
||||
|
||||
fun createTimetableRemote(number: Int, start: LocalDateTime, room: String, subject: String = "", teacher: String = ""): TimetableRemote {
|
||||
return TimetableRemote(
|
||||
number = number,
|
||||
start = start.toDate(),
|
||||
end = start.plusMinutes(45).toDate(),
|
||||
date = start.toLocalDate().toDate(),
|
||||
subject = subject,
|
||||
group = "",
|
||||
room = room,
|
||||
teacher = teacher,
|
||||
info = "",
|
||||
changes = false,
|
||||
canceled = false
|
||||
)
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.timetable
|
||||
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import org.threeten.bp.LocalDateTime.of
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class TimetableLocalTest {
|
||||
|
||||
private lateinit var timetableDb: TimetableLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun createDb() {
|
||||
testDb = Room.inMemoryDatabaseBuilder(ApplicationProvider.getApplicationContext(), AppDatabase::class.java)
|
||||
.build()
|
||||
timetableDb = TimetableLocal(testDb.timetableDao)
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun saveAndReadTest() {
|
||||
timetableDb.saveTimetable(listOf(
|
||||
createTimetableLocal(1, of(2018, 9, 10, 0, 0, 0)),
|
||||
createTimetableLocal(1, of(2018, 9, 14, 0, 0, 0)),
|
||||
createTimetableLocal(1, of(2018, 9, 17, 0, 0, 0))
|
||||
))
|
||||
|
||||
val exams = timetableDb.getTimetable(
|
||||
Semester(1, 2, "", 1, 1, 2019, true, LocalDate.now(), LocalDate.now(), 1, 1),
|
||||
LocalDate.of(2018, 9, 10),
|
||||
LocalDate.of(2018, 9, 14)
|
||||
).blockingGet()
|
||||
|
||||
assertEquals(2, exams.size)
|
||||
assertEquals(exams[0].date, LocalDate.of(2018, 9, 10))
|
||||
assertEquals(exams[1].date, LocalDate.of(2018, 9, 14))
|
||||
}
|
||||
}
|
@ -1,89 +0,0 @@
|
||||
package io.github.wulkanowy.data.repositories.timetable
|
||||
|
||||
import android.os.Build.VERSION_CODES.P
|
||||
import androidx.room.Room
|
||||
import androidx.test.core.app.ApplicationProvider.getApplicationContext
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.filters.SdkSuppress
|
||||
import com.github.pwittchen.reactivenetwork.library.rx2.internet.observing.InternetObservingSettings
|
||||
import io.github.wulkanowy.api.Api
|
||||
import io.github.wulkanowy.data.db.AppDatabase
|
||||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import io.github.wulkanowy.data.repositories.TestInternetObservingStrategy
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.impl.annotations.SpyK
|
||||
import io.reactivex.Single
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.threeten.bp.LocalDate
|
||||
import org.threeten.bp.LocalDateTime.of
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@SdkSuppress(minSdkVersion = P)
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class TimetableRepositoryTest {
|
||||
|
||||
@SpyK
|
||||
private var mockApi = Api()
|
||||
|
||||
private val settings = InternetObservingSettings.builder()
|
||||
.strategy(TestInternetObservingStrategy())
|
||||
.build()
|
||||
|
||||
@MockK
|
||||
private lateinit var semesterMock: Semester
|
||||
|
||||
private lateinit var timetableRemote: TimetableRemote
|
||||
|
||||
private lateinit var timetableLocal: TimetableLocal
|
||||
|
||||
private lateinit var testDb: AppDatabase
|
||||
|
||||
@Before
|
||||
fun initApi() {
|
||||
MockKAnnotations.init(this)
|
||||
testDb = Room.inMemoryDatabaseBuilder(getApplicationContext(), AppDatabase::class.java).build()
|
||||
timetableLocal = TimetableLocal(testDb.timetableDao)
|
||||
timetableRemote = TimetableRemote(mockApi)
|
||||
|
||||
every { semesterMock.studentId } returns 1
|
||||
every { semesterMock.diaryId } returns 2
|
||||
}
|
||||
|
||||
@After
|
||||
fun closeDb() {
|
||||
testDb.close()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun copyDetailsToCompletedFromPrevious() {
|
||||
timetableLocal.saveTimetable(listOf(
|
||||
createTimetableLocal(1, of(2019, 3, 5, 8, 0), "123", "Przyroda"),
|
||||
createTimetableLocal(2, of(2019, 3, 5, 8, 50), "321", "Religia"),
|
||||
createTimetableLocal(3, of(2019, 3, 5, 9, 40), "213", "W-F"),
|
||||
createTimetableLocal(4, of(2019, 3, 5, 10, 30), "213", "W-F", "Jan Kowalski")
|
||||
))
|
||||
|
||||
every { mockApi.getTimetable(any(), any()) } returns Single.just(listOf(
|
||||
createTimetableRemote(1, of(2019, 3, 5, 8, 0), "", "Przyroda"),
|
||||
createTimetableRemote(2, of(2019, 3, 5, 8, 50), "", "Religia"),
|
||||
createTimetableRemote(3, of(2019, 3, 5, 9, 40), "", "W-F"),
|
||||
createTimetableRemote(4, of(2019, 3, 5, 10, 30), "", "W-F")
|
||||
))
|
||||
|
||||
val lessons = TimetableRepository(settings, timetableLocal, timetableRemote)
|
||||
.getTimetable(semesterMock, LocalDate.of(2019, 3, 5), LocalDate.of(2019, 3, 5), true)
|
||||
.blockingGet()
|
||||
|
||||
assertEquals(4, lessons.size)
|
||||
assertEquals("123", lessons[0].room)
|
||||
assertEquals("321", lessons[1].room)
|
||||
assertEquals("213", lessons[2].room)
|
||||
|
||||
assertEquals("", lessons[3].teacher)
|
||||
}
|
||||
}
|
@ -14,34 +14,37 @@ import kotlin.test.assertFailsWith
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ScramblerTest {
|
||||
|
||||
private val scrambler = Scrambler(ApplicationProvider.getApplicationContext())
|
||||
|
||||
@Test
|
||||
fun encryptDecryptTest() {
|
||||
assertEquals("TEST", decrypt(encrypt("TEST",
|
||||
ApplicationProvider.getApplicationContext())))
|
||||
assertEquals(
|
||||
"TEST", scrambler.decrypt(scrambler.encrypt("TEST"))
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun emptyTextEncryptTest() {
|
||||
assertFailsWith<ScramblerException> {
|
||||
decrypt("")
|
||||
scrambler.decrypt("")
|
||||
}
|
||||
|
||||
assertFailsWith<ScramblerException> {
|
||||
encrypt("", ApplicationProvider.getApplicationContext())
|
||||
scrambler.encrypt("")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@SdkSuppress(minSdkVersion = 18)
|
||||
fun emptyKeyStoreTest() {
|
||||
val text = encrypt("test", ApplicationProvider.getApplicationContext())
|
||||
val text = scrambler.encrypt("test")
|
||||
|
||||
val keyStore = KeyStore.getInstance("AndroidKeyStore")
|
||||
keyStore.load(null)
|
||||
keyStore.deleteEntry("wulkanowy_password")
|
||||
|
||||
assertFailsWith<ScramblerException> {
|
||||
decrypt(text)
|
||||
scrambler.decrypt(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,58 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="1926.9231"
|
||||
android:viewportHeight="1926.9231">
|
||||
<group android:translateX="462.46155"
|
||||
android:translateY="462.46155">
|
||||
<path
|
||||
android:pathData="M2000,1440.1V2002H1240.1L238.1,1000v0l-120,-120c0.2,-0.2 -0.7,-1.6 -0.6,-1.8 1.6,-3.1 3.4,-6 5,-9.1 0.4,-0.8 0.6,-1.6 0.6,-2.5 9.2,-15.1 20.2,-28.9 31.4,-42.6 0.1,-0.2 0.3,-0.3 0.4,-0.5 5.1,-6.3 10.3,-12.6 15.3,-18.9 1,-1.2 1.9,-2.4 2.9,-3.7 0.2,-0.2 0.3,-0.4 0.5,-0.6 7.6,-9.7 14.8,-19.7 21.2,-30.2 1,-1.7 2,-3.4 2.9,-5.1 0.1,-0.2 0.2,-0.3 0.3,-0.5 6.2,-11.4 11.3,-23.3 17.7,-34.6 4.5,-8 9.3,-15.9 13.8,-23.9 0.1,-0.2 0.2,-0.3 0.3,-0.5 0.8,-1.5 1.6,-3 2.4,-4.4 0.2,-0.3 0.3,-0.6 0.5,-0.9 2,-3.7 3.8,-7.4 5.6,-11.2 6.2,-13.4 10.2,-27.7 14,-41.9 0,-0.2 0.1,-0.3 0.1,-0.5 0.3,-1 0.5,-2 0.8,-2.9 4,-15.3 7.3,-31.4 13.5,-45.9 1.4,-3.3 3,-6.5 4.6,-9.6 0.1,-0.2 0.2,-0.3 0.3,-0.5 5,-9.7 10.6,-19.1 13.5,-29.7 2.6,-9.2 3.5,-19 3.6,-28.8 0,-0.2 0,-0.3 0,-0.5 0.1,-7.2 -0.1,-14.4 -0.4,-21.3 0.9,-5.6 1.9,-11.3 3,-16.9 0.2,-0.9 0.3,-1.7 0.5,-2.6 1.2,-5.9 2.5,-11.7 4.2,-17.4 0,-0.1 0.1,-0.3 0.1,-0.4 0,-0.2 0.1,-0.3 0.1,-0.5 0.2,-2.1 -0.8,-3.7 -2.4,-4.5l7.7,-7.6c1.2,0.9 2.7,1.3 4.3,0.9 12.8,-3.9 24.9,-9.9 36.3,-16.8 2.8,-1.7 5.6,-3.4 8.3,-5.2 0.2,-0.1 0.3,-0.2 0.5,-0.3 7.7,-4.9 15.2,-10.2 22.1,-16 3.1,-2.7 5.9,-5.6 8.3,-8.9 0.1,-0.2 0.2,-0.3 0.4,-0.5 2.3,-3.4 4.2,-7.2 5.3,-11.4 2.4,-9.2 1.9,-19 1.9,-28.4 0,-0.2 0,-0.4 0,-0.6l5.7,-5.6 -0.3,0.1 4.1,1.3 45.3,45 9.6,9.6 14.3,14.3 100.8,100.8 17.2,17.2 16.3,16.3 30.3,-30.3 -192.9,-191.5c0.5,-0.5 1.1,-1.6 1.4,-2.3 0.3,-0.6 0.5,-1.2 0.4,-1.9 0,-0.8 -0.2,-1.6 -0.6,-2.3 -0.1,-0.3 -0.3,-0.7 -0.4,-1 -0.2,-0.4 -0.5,-0.7 -0.9,-1.1l27.8,-27.8 191.1,-191.1c0.7,0.4 1.5,0.6 2.5,0.7 4.1,0 8.2,0.1 11.9,1.9 0.5,0.3 1.3,0.7 2.1,1.1 1.7,2.3 3.5,4.5 5.7,6.2 2.7,2.1 8.2,3 9.4,0.3z"
|
||||
android:fillColor="#AD2A2A"/>
|
||||
<path
|
||||
android:pathData="m616.3,796.7c0.4,1.2 0.5,2.4 0.5,3.7l-5.8,73.3c-0.4,5.2 -5,9.3 -10.6,9.3h-187.2c-4,0 -7.7,-2.3 -9.5,-5.6l-30.9,-57.4c-0.2,-0.3 -0.3,-0.6 -0.4,-0.9l-29.1,-70.5c-1.1,-2.5 -0.9,-5.4 0.3,-7.8l48.3,-94.5c1.2,-2.3 1.4,-5 0.5,-7.4l-23.6,-65.4c-0.8,-2.3 -0.7,-4.9 0.3,-7.1l39.4,-83.9c4,-8.4 17.1,-7.7 19.9,1.1l12.3,38.2 37.5,100.4c1,2.8 3.4,5 6.4,6l80,27.3c3.1,1.1 5.5,3.4 6.5,6.3z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="m386.7,253.5c0,-22.9 14.5,-42.6 35.3,-51.8 -1.5,-2.5 -2.4,-5.2 -2.4,-8.1 0,-11.1 12.8,-20.1 28.5,-20.1 0.4,0 0.7,0 1.1,0 6.5,-10.8 18.9,-18.1 33.1,-18.1 1,0 2,0 3,0.1 1.3,0.1 2.6,-0.5 3.3,-1.5 10.5,-16 37.1,-27.4 68.2,-27.4 11.5,0 22.4,1.6 32.1,4.3 2.3,-3.8 7.4,-6.4 13.3,-6.4 6.7,0 12.4,3.4 14.1,8.1 8.2,-9.5 22.1,-15.7 37.9,-15.7 25.2,0 45.6,15.9 45.6,35.5 0,2.4 -0.3,4.7 -0.9,7 -0.4,1.6 0.5,3.2 2.2,3.8 16.1,5.9 27,17.1 27,29.9 0,14.6 -14.1,27.1 -34,32 -1.6,0.4 -2.6,1.8 -2.6,3.3 0,0.1 0,0.2 0,0.3 0,11.3 -11.2,20.6 -25.6,21.6 0.1,0.5 0.1,1 0.1,1.6 0,21.7 -41.3,39.2 -92.2,39.2 -11,0 -21.5,-0.8 -31.2,-2.3 0,0.2 0,0.3 0,0.5 0,9 -11.6,16.3 -25.8,16.3 -0.8,0 -1.5,0 -2.2,-0.1 1,2.2 1.5,4.5 1.5,6.9 0,14 -17.7,25.3 -39.6,25.3 -2.4,0 -4.7,-0.1 -7,-0.4 -1.8,-0.2 -3.5,0.9 -3.9,2.6 -1.9,7 -8,12.1 -15.3,12.1 -8.8,0 -15.8,-7.5 -15.8,-16.7 0,-4.3 1.5,-8.2 4,-11.1 0.9,-1 1.2,-2.4 0.6,-3.6 -1.4,-2.6 -2,-5.3 -2,-8.2v0c0,-1.6 -1.3,-2.9 -2.9,-3.3 -27.1,-6 -47.5,-28.6 -47.5,-55.6z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="m870.4,883h-124.4c-3.6,0 -6.9,-1.8 -8.9,-4.6l-83.7,-117.7c-0.5,-0.8 -1,-1.6 -1.3,-2.5l-41.5,-121.2c-0.8,-2.4 -2.7,-4.5 -5.1,-5.7l-101.6,-51.3c-2.8,-1.4 -4.8,-4 -5.4,-6.9l-15,-74.4c-0.2,-1.2 -0.7,-2.4 -1.5,-3.5l-34.5,-50.7c-1.9,-2.8 -2.2,-6.2 -0.8,-9.2l21,-44.9c1.6,-3.4 5.1,-5.7 9.1,-5.9l39,-2.3c2.3,-0.1 4.4,-0.9 6.1,-2.3l28.7,-22.3c5.4,-4.2 13.6,-2.4 16.5,3.5l98.9,201.2c0.4,0.9 0.7,1.8 0.9,2.7l12.2,80.9c0.3,1.9 1.1,3.6 2.4,5l197,215.6c5.8,6.4 0.9,16.5 -8.1,16.5z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="m335.8,838.9c0.8,2.6 0.4,5.4 -1,7.7l-19.3,31.3c-1.9,3.1 -5.4,5.1 -9.2,5.1h-180.6c-8.4,0 -13.5,-8.8 -9,-15.4l116.3,-171.3c0.7,-1 1.1,-2.1 1.4,-3.2l53.3,-227.6c0.6,-2.7 2.4,-5 5,-6.4l72.2,-39.6c2.6,-1.4 4.4,-3.7 5,-6.5l9.7,-42.3c2,-8.8 14.6,-10.7 19.6,-3l3.5,5.6c1.5,2.4 1.9,5.4 0.9,8.1l-65.8,190.2c-0.5,1.5 -0.7,3.1 -0.4,4.7l16.4,91c0.3,1.8 0.1,3.7 -0.7,5.4l-39.1,87.8c-0.9,2.1 -1.1,4.4 -0.4,6.5z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="m424.22,657.05 l1580.54,-0.05c0.54,0 0,292 0,292l-1580.54,-0.03c-10.78,0 -19.46,-8.68 -19.46,-19.46l0,-252.99c0,-10.78 8.68,-19.46 19.46,-19.46z"
|
||||
android:strokeAlpha="0.49803922"
|
||||
android:strokeLineJoin="round"
|
||||
android:strokeWidth="4"
|
||||
android:fillColor="#3f3f3f"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillType="nonZero"
|
||||
android:fillAlpha="1"
|
||||
android:strokeLineCap="square"/>
|
||||
<path
|
||||
android:pathData="m728.71,710.91l0,19.89l-88.7,0l0,59.3l77.04,0L717.05,810l-77.04,0l0,65.39l89.84,0l0,19.9L616.56,895.29L616.56,791.16l-52.35,-52.35 -0.77,-0.18c5.41,6.64 9.65,14.32 12.69,23.09 3.72,10.39 5.62,21.92 5.7,34.6L581.84,809.87c-0.08,12.67 -1.98,24.25 -5.7,34.72 -3.63,10.39 -8.95,19.35 -15.97,26.87 -6.93,7.43 -15.46,13.26 -25.6,17.49 -7.54,3.1 -15.86,5.07 -24.97,5.89 -3.04,0.27 -6.16,0.42 -9.37,0.45L457.53,895.29l0,-6.55l-0.37,6.82 53.8,53.45l415.85,0c0.24,0 0.47,-0.02 0.69,-0.05L1132.91,948.97L953.5,769.55l-58.39,-58.39 -0.28,0.06 -58.03,184.06l-20.4,0l-44.66,-141.34zM783.29,711.07 L826.41,857.52 850.08,777.86zM509.6,711.29c1.52,0.15 3.01,0.33 4.49,0.54 -1.47,-0.21 -2.97,-0.39 -4.49,-0.54zM481.35,730.04l0,146.11l18.88,0c9.97,-0.08 18.59,-1.81 25.85,-5.19 7.27,-3.46 13.26,-8.15 17.99,-14.07 4.82,-5.91 8.36,-12.88 10.64,-20.91 2.37,-8.03 3.59,-16.73 3.68,-26.11l0,-13.81c-0.08,-9.38 -1.31,-18.04 -3.68,-25.98 -2.37,-8.03 -5.91,-14.95 -10.64,-20.78 -4.73,-5.91 -10.73,-10.56 -17.99,-13.94 -7.27,-3.38 -15.88,-5.15 -25.85,-5.32zM560.17,734.86c0.65,0.69 1.26,1.4 1.88,2.11 -0.61,-0.72 -1.23,-1.42 -1.88,-2.11z"
|
||||
android:strokeAlpha="1"
|
||||
android:strokeLineJoin="miter"
|
||||
android:strokeWidth="1.94642854"
|
||||
android:fillColor="#000000"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillAlpha="0.18431373"
|
||||
android:strokeLineCap="butt"/>
|
||||
<path
|
||||
android:pathData="m457.53,895.28l0,-184.51l42.7,0q19.26,0.25 34.34,6.59 15.21,6.21 25.6,17.49 10.52,11.15 15.97,26.86 5.58,15.59 5.7,34.59l0,13.56q-0.13,19.01 -5.7,34.72 -5.45,15.59 -15.97,26.86 -10.39,11.15 -25.6,17.49 -15.08,6.21 -34.34,6.34zM481.35,730.04l0,146.11l18.88,0q14.95,-0.13 25.85,-5.2 10.9,-5.2 17.99,-14.07 7.22,-8.87 10.64,-20.91 3.55,-12.04 3.67,-26.1l0,-13.81q-0.13,-14.07 -3.67,-25.98 -3.55,-12.04 -10.64,-20.78 -7.1,-8.87 -17.99,-13.94 -10.9,-5.07 -25.85,-5.32z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="M717.05,810L640.01,810l0,65.39l89.84,0l0,19.9l-113.29,0l0,-184.51l112.15,0l0,20.02L640.01,730.8l0,59.31l77.05,0z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillAlpha="1"/>
|
||||
<path
|
||||
android:pathData="m826.41,857.52 l43.59,-146.74l24.96,0l-58.16,184.51L816.4,895.28l-58.29,-184.51l25.09,0z"
|
||||
android:fillColor="#ffffff"
|
||||
android:strokeColor="#00000000"
|
||||
android:fillAlpha="1"/>
|
||||
</group>
|
||||
</vector>
|
34
app/src/debug/res/drawable/ic_launcher_foreground_dev.xml
Normal file
34
app/src/debug/res/drawable/ic_launcher_foreground_dev.xml
Normal file
@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="1926"
|
||||
android:viewportHeight="1926">
|
||||
<path
|
||||
android:fillColor="#ad2a2a"
|
||||
android:pathData="M2465,1904v561h-759L704,1463l-120,-120 -1,-1 5,-9 1,-3c9,-15 20,-29 31,-43l16,-19 3,-4 21,-30 3,-6c7,-11 12,-23 18,-35l14,-24 3,-4v-1a234,234 0,0 0,20 -53v-1l1,-3c4,-15 7,-31 13,-46l5,-9v-1c5,-10 11,-19 14, -30 2,-9 3,-19 3,-28v-1,-21l3,-17v-3l4,-17h1v-1c0,-2 -1,-4 -3,-4l8,-8 4,1c13,-4 25,-10 37,-17l8,-5 22,-16 9,-9v-1l5, -11c3,-9 2,-19 2,-29l6,-6 4,2 45,45 10,9 14,14 101,101 17,17 16,17 31,-31 -193,-191 1,-2 1,-2 -1,-3v-1l-1,-1 27,-27 192,-192 2,1a27,27 0,0 1,14 3l6,6c2,2 8,3 9,1l1310,1310z" />
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M1082,1260v4l-6,73c0,5 -5,9 -10,9H879c-4,0 -8,-2 -10,-5l-31,-58 -29,-71v-8l48,-94c2,-3 2,-5 1, -8l-24,-65c-1,-2 0,-5 1,-7l39,-84c4,-8 17,-8 20,1l12,38 38,101c1,2 3,5 6,6l80,27c3,1 6,3 7,6l45,135zM852,717c0,-23 15,-43 35,-52l-2,-8c0,-11 13,-20 29,-20h1a38,38 0,0 1,36 -18l3,-2c11,-16 37,-27 68,-27 12,0 23,2 32,4 3,-3 8,-6 14,-6s12,3 14,8c8,-9 22,-16 38,-16 25,0 45,16 45,36l-1,7 3,4c16,6 27,17 27,30 0,14 -15,27 -34,32 -2,0 -3,1 -3,3 0,11 -11,21 -26,22v1c0,22 -41,40 -92,40 -11,0 -21,-1 -31,-3v1c0,9 -12,16 -26,16h-2l2,7c0,14 -18,25 -40,25h-7l-4, 2c-2,7 -8,12 -15,12 -9,0 -16,-7 -16,-16 0,-5 1,-8 4,-11l1,-4c-2,-3 -2,-5 -2,-8 0,-2 -2,-3 -3,-3 -27,-6 -48,-29 -48,-56z" />
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M1336,1346h-125c-3,0 -6,-1 -8,-4l-84,-118 -1,-2 -42,-122 -5,-5 -102,-52 -5,-6 -15,-75 -2,-3 -34,-51c-2,-3 -2,-6 -1,-9l21,-45c2,-4 5,-6 9,-6l39,-2c3,0 5,-1 6,-3l29,-22c5,-4 14,-2 17,4l98,201 1,2 13,81 2,5 197,216c6,6 1,16 -8,16zM801,1302c1,3 1,6 -1,8l-19,31c-2,3 -5,5 -9,5H591c-8,0 -13,-8 -9,-15l116,-171 2,-3 53, -228c1,-3 3,-5 5,-6l72,-40c3,-1 5,-4 5,-7l10,-42c2,-9 15,-11 20,-3l3,6c2,2 2,5 1,8l-66,190v5l16,91v5l-40,88v6l22,72z" />
|
||||
<path
|
||||
android:fillColor="#3f3f3f"
|
||||
android:pathData="M886.7,1119.5h1580.5c0.6,0 0,292 0,292H886.7a19.4,19.4 0,0 1,-19.5 -19.5v-253c0,-10.8 8.7,-19.5 19.5,-19.5z"
|
||||
android:strokeWidth="4"
|
||||
android:strokeAlpha=".5"
|
||||
android:strokeColor="#000"
|
||||
android:strokeLineCap="square"
|
||||
android:strokeLineJoin="round" />
|
||||
<path
|
||||
android:fillAlpha=".2"
|
||||
android:fillColor="#000"
|
||||
android:pathData="M1191.2,1173.4v19.9h-88.7v59.3h77v19.9h-77v65.4h89.8v19.9L1079,1357.8v-104.2l-52.3,-52.3 -0.8, -0.2a75.1,75.1 0,0 1,12.7 23,104 104,0 0,1 5.7,34.7v13.5c0,12.7 -2,24.3 -5.7,34.8a72.8,72.8 0,0 1,-41.6 44.4,85.5 85.5,0 0,1 -34.3,6.3L920,1357.8v-6.6l-0.4,6.8 53.8,53.5h622L1416,1232l-58.4,-58.4h-0.3l-58,184.1h -20.4l-44.7,-141.3zM1245.8,1173.5l43,146.5 23.7,-79.7zM972.1,1173.8zM943.8,1192.5v146.1h18.9a62,62 0,0 0,25.8 -5.2,50.3 50.3,0 0,0 18,-14c4.9,-6 8.4,-13 10.7,-21 2.3,-8 3.6,-16.7 3.7,-26v-13.9c-0.1,-9.4 -1.4,-18 -3.7,-26 -2.4,-8 -6,-15 -10.7,-20.7a49.3,49.3 0,0 0,-18 -14,63.4 63.4,0 0,0 -25.8,-5.3zM1022.6,1197.3l2,2.1 -2,-2z"
|
||||
android:strokeWidth="1.9"
|
||||
android:strokeColor="#000" />
|
||||
<path
|
||||
android:fillColor="#fff"
|
||||
android:pathData="M920,1357.7v-184.5h42.7q19.3,0.3 34.3,6.6 15.2,6.2 25.6,17.5 10.6,11.2 16,26.9 5.6,15.6 5.7, 34.6v13.5q-0.1,19 -5.7,34.7 -5.4,15.6 -16,26.9 -10.4,11.2 -25.6,17.5 -15,6.2 -34.3,6.3zM943.8,1192.5v146.1h18.9q15, -0.1 25.8,-5.2 11,-5.2 18,-14 7.3,-9 10.7,-21 3.5,-12 3.6,-26v-13.9q0,-14 -3.6,-26t-10.7,-20.7q-7,-9 -18,-14 -10.9,-5 -25.8,-5.3zM1179.5,1272.5h-77v65.4h89.8v19.9L1079,1357.8v-184.6h112.2v20h-88.7v59.4h77zM1288.9, 1320l43.6,-146.8h25l-58.2,184.6h-20.4l-58.3,-184.6h25z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#000" />
|
||||
</vector>
|
12
app/src/debug/res/drawable/ic_stat_grade.xml
Normal file
12
app/src/debug/res/drawable/ic_stat_grade.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="30.434782"
|
||||
android:viewportHeight="30.434782">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M 8.131 2.131 C 7.601 2.131 7.092 2.342 6.717 2.717 C 6.342 3.092 6.131 3.601 6.131 4.131 L 6.131 18.131 C 6.131 18.661 6.342 19.17 6.717 19.545 C 7.092 19.92 7.601 20.131 8.131 20.131 L 16.918 20.131 C 17.252 19.39 17.712 18.714 18.277 18.131 L 8.131 18.131 L 8.131 4.131 L 22.131 4.131 L 22.131 16.1 C 22.516 16.034 22.906 16.001 23.297 16 C 23.576 16.002 23.854 16.02 24.131 16.055 L 24.131 4.131 C 24.131 3.601 23.92 3.092 23.545 2.717 C 23.17 2.342 22.661 2.131 22.131 2.131 L 8.131 2.131 Z M 2.131 6.131 L 2.131 22.131 C 2.131 22.661 2.342 23.17 2.717 23.545 C 3.092 23.92 3.601 24.131 4.131 24.131 L 16.391 24.131 C 16.329 23.757 16.297 23.379 16.297 23 C 16.299 22.709 16.319 22.419 16.357 22.131 L 4.131 22.131 L 4.131 6.131 L 2.131 6.131 Z M 14.131 6.131 C 13.601 6.131 13.092 6.342 12.717 6.717 C 12.342 7.092 12.131 7.601 12.131 8.131 L 12.131 14.131 C 12.131 15.231 13.031 16.131 14.131 16.131 L 16.131 16.131 C 16.661 16.131 17.17 15.92 17.545 15.545 C 17.92 15.17 18.131 14.661 18.131 14.131 L 18.131 12.131 C 18.131 11.601 17.92 11.092 17.545 10.717 C 17.17 10.342 16.661 10.131 16.131 10.131 L 14.131 10.131 L 14.131 8.131 L 18.131 8.131 L 18.131 6.131 L 14.131 6.131 Z M 14.131 12.131 L 16.131 12.131 L 16.131 14.131 L 14.131 14.131 L 14.131 12.131 Z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M 20.174 28 L 20.174 18.521 L 23.091 18.521 Q 24.341 18.521 25.324 19.087 Q 26.314 19.647 26.867 20.689 Q 27.421 21.724 27.421 23.046 L 27.421 23.482 Q 27.421 24.803 26.874 25.832 Q 26.333 26.861 25.344 27.427 Q 24.354 27.993 23.111 28 Z M 22.128 20.103 L 22.128 26.431 L 23.072 26.431 Q 24.217 26.431 24.823 25.682 Q 25.428 24.934 25.441 23.54 L 25.441 23.039 Q 25.441 21.594 24.842 20.852 Q 24.243 20.103 23.091 20.103 Z" />
|
||||
</vector>
|
12
app/src/debug/res/drawable/ic_stat_luckynumber.xml
Normal file
12
app/src/debug/res/drawable/ic_stat_luckynumber.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="28.26087"
|
||||
android:viewportHeight="28.26087">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M 10.734 3.043 C 9.234 3.043 8.043 4.293 8.043 5.793 C 8.043 7.683 9.743 9.223 13.043 12.223 C 16.343 9.223 18.043 7.684 18.043 5.734 C 18.043 4.234 16.793 3.043 15.293 3.043 C 14.433 3.043 13.613 3.403 13.043 4.043 C 12.473 3.403 11.654 3.043 10.734 3.043 Z M 5.734 8.043 C 4.234 8.043 3.043 9.293 3.043 10.793 C 3.043 11.653 3.403 12.473 4.043 13.043 C 3.403 13.613 3.043 14.434 3.043 15.354 C 3.043 16.854 4.293 18.043 5.793 18.043 C 7.683 18.043 9.223 16.343 12.223 13.043 C 9.223 9.743 7.684 8.043 5.734 8.043 Z M 20.293 8.043 C 18.403 8.043 16.863 9.743 13.873 13.043 C 15.043 14.334 15.987 15.373 16.824 16.168 C 17.476 15.484 18.26 14.94 19.129 14.567 C 19.997 14.195 20.932 14.002 21.877 14 C 22.181 14.002 22.484 14.025 22.785 14.066 C 22.615 13.68 22.365 13.329 22.043 13.043 C 22.683 12.473 23.043 11.654 23.043 10.734 C 23.043 9.234 21.793 8.043 20.293 8.043 Z M 13.043 13.863 C 9.743 16.863 8.043 18.404 8.043 20.354 C 8.043 21.854 9.293 23.043 10.793 23.043 C 11.653 23.043 12.473 22.683 13.043 22.043 C 13.576 22.642 14.333 22.982 15.182 23.025 C 14.981 22.369 14.879 21.686 14.877 21 C 14.88 19.52 15.351 18.078 16.225 16.883 C 15.422 16.032 14.368 15.067 13.043 13.863 Z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M 18.754 26 L 18.754 16.521 L 21.671 16.521 Q 22.921 16.521 23.904 17.087 Q 24.893 17.647 25.447 18.689 Q 26 19.724 26 21.046 L 26 21.482 Q 26 22.803 25.453 23.832 Q 24.913 24.861 23.923 25.427 Q 22.934 25.993 21.69 26 Z M 20.707 18.103 L 20.707 24.431 L 21.651 24.431 Q 22.797 24.431 23.402 23.682 Q 24.008 22.934 24.021 21.54 L 24.021 21.039 Q 24.021 19.594 23.422 18.852 Q 22.823 18.103 21.671 18.103 Z" />
|
||||
</vector>
|
12
app/src/debug/res/drawable/ic_stat_message.xml
Normal file
12
app/src/debug/res/drawable/ic_stat_message.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="28.26087"
|
||||
android:viewportHeight="28.26087">
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M 5.043 3.043 C 3.943 3.043 3.053 3.943 3.053 5.043 L 3.043 23.043 L 7.043 19.043 L 15.16 19.043 C 15.646 17.378 16.733 15.952 18.209 15.043 L 7.043 15.043 L 7.043 13.043 L 19.043 13.043 L 19.043 14.609 C 19.935 14.211 20.9 14.003 21.877 14 C 22.268 14.003 22.658 14.038 23.043 14.105 L 23.043 5.043 C 23.043 3.943 22.143 3.043 21.043 3.043 L 5.043 3.043 Z M 7.043 7.043 L 19.043 7.043 L 19.043 9.043 L 7.043 9.043 L 7.043 7.043 Z M 7.043 10.043 L 19.043 10.043 L 19.043 12.043 L 7.043 12.043 L 7.043 10.043 Z" />
|
||||
<path
|
||||
android:fillColor="#ffffff"
|
||||
android:pathData="M 18.754 26 L 18.754 16.521 L 21.671 16.521 Q 22.921 16.521 23.904 17.087 Q 24.893 17.647 25.447 18.689 Q 26 19.724 26 21.046 L 26 21.482 Q 26 22.803 25.453 23.832 Q 24.913 24.861 23.923 25.427 Q 22.934 25.993 21.69 26 Z M 20.707 18.103 L 20.707 24.431 L 21.651 24.431 Q 22.797 24.431 23.402 23.682 Q 24.008 22.934 24.021 21.54 L 24.021 21.039 Q 24.021 19.594 23.422 18.852 Q 22.823 18.103 21.671 18.103 Z" />
|
||||
</vector>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user