mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-01-15 00:36:35 +01:00
Compare commits
6191 Commits
v0.13.0
...
samchaps/w
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf72adc942 | ||
|
|
60bf86825b | ||
|
|
4ef3f23897 | ||
|
|
5bd9dd5935 | ||
|
|
5590eb9484 | ||
|
|
6f06f76784 | ||
|
|
5981d0e81e | ||
|
|
539a4e5678 | ||
|
|
aea217ddca | ||
|
|
d001a4c0e0 | ||
|
|
5712123598 | ||
|
|
e504653323 | ||
|
|
b46b8d176f | ||
|
|
b98f233b75 | ||
|
|
083ec27a45 | ||
|
|
bca780f886 | ||
|
|
d4e618cdc9 | ||
|
|
e1cb01d188 | ||
|
|
bddfe42d39 | ||
|
|
30d346c93f | ||
|
|
899b5016b9 | ||
|
|
0d05089316 | ||
|
|
6295ed86ca | ||
|
|
73925885dd | ||
|
|
437d2dd5f7 | ||
|
|
a4bd09a2c8 | ||
|
|
c2aae52bba | ||
|
|
df0a14403c | ||
|
|
3afa124bea | ||
|
|
ec0fb6a4c7 | ||
|
|
77dfaab17e | ||
|
|
e731cc04c1 | ||
|
|
eca77ad8b3 | ||
|
|
a7bd0cfde8 | ||
|
|
f51dacff08 | ||
|
|
57c5575a8d | ||
|
|
5e2df77da7 | ||
|
|
c059977c78 | ||
|
|
8499a44dfe | ||
|
|
150e7d40dd | ||
|
|
ca8faf00c2 | ||
|
|
4af508c532 | ||
|
|
6a6c45189e | ||
|
|
21a9c82df4 | ||
|
|
4a087a816e | ||
|
|
a98b12a2fb | ||
|
|
77ed74b353 | ||
|
|
357fb8f66d | ||
|
|
5f4514a88e | ||
|
|
0b1bac1f4a | ||
|
|
ec26f67b38 | ||
|
|
c057babf2b | ||
|
|
b9367c0ca6 | ||
|
|
f41fe145fc | ||
|
|
0ed166eae2 | ||
|
|
a4c8815913 | ||
|
|
0b9b1ef5e4 | ||
|
|
c3ffd17e43 | ||
|
|
b2c8900bae | ||
|
|
97fdf033c8 | ||
|
|
2074d32cb1 | ||
|
|
e50cd85e9a | ||
|
|
e5f171c836 | ||
|
|
d931937538 | ||
|
|
ef8415ddfe | ||
|
|
e160e223f0 | ||
|
|
994652a535 | ||
|
|
ca06f2ae5b | ||
|
|
445ca5aaf2 | ||
|
|
7366db477a | ||
|
|
2a6de71767 | ||
|
|
89330986f4 | ||
|
|
6767ff736b | ||
|
|
2b2c813e69 | ||
|
|
1cf4f08ae7 | ||
|
|
4b47d71749 | ||
|
|
195c265a36 | ||
|
|
8fb93dc6ee | ||
|
|
5779b43c80 | ||
|
|
08636c6a22 | ||
|
|
0431b17546 | ||
|
|
28366fe5c4 | ||
|
|
2f36366902 | ||
|
|
78ca0d5846 | ||
|
|
8a7e07d264 | ||
|
|
b8f1df776b | ||
|
|
6d9d4a7112 | ||
|
|
2fca99e3c5 | ||
|
|
6ae7cc059b | ||
|
|
dba3bd0a3a | ||
|
|
8c6b447a33 | ||
|
|
a357d62ff5 | ||
|
|
b482188782 | ||
|
|
59fd84c5ec | ||
|
|
f408c34aca | ||
|
|
0a19f0dfc7 | ||
|
|
07dd66ecbc | ||
|
|
4897c44b64 | ||
|
|
1aa04bc201 | ||
|
|
a8d2aeedf2 | ||
|
|
02f9e3b22e | ||
|
|
898d612af6 | ||
|
|
e241700414 | ||
|
|
ad8b959493 | ||
|
|
a070af5169 | ||
|
|
78f5b4c3a4 | ||
|
|
cca10d2455 | ||
|
|
c51103404f | ||
|
|
7a8c0bc6fb | ||
|
|
c0c0e6465f | ||
|
|
7181626b5a | ||
|
|
53047cea80 | ||
|
|
5757852469 | ||
|
|
f0d6384cf3 | ||
|
|
49007369cf | ||
|
|
66754afd76 | ||
|
|
462a107c7c | ||
|
|
420a24e607 | ||
|
|
d234536cf7 | ||
|
|
5d21cd05c5 | ||
|
|
6abc7df75d | ||
|
|
b9a534b75f | ||
|
|
a411db0c82 | ||
|
|
7b7742719c | ||
|
|
b9ccb9f049 | ||
|
|
ff290eef9d | ||
|
|
6431ccd370 | ||
|
|
db191b8b75 | ||
|
|
429569dcf3 | ||
|
|
130561cfbb | ||
|
|
498bb3a7e2 | ||
|
|
c6d31ccbe7 | ||
|
|
a63288009a | ||
|
|
1ff5fa8794 | ||
|
|
460f242967 | ||
|
|
a3042b8435 | ||
|
|
e171264dc2 | ||
|
|
aa6910acb1 | ||
|
|
778bb7ad9f | ||
|
|
d73fae4f95 | ||
|
|
d1f55bb9ea | ||
|
|
76b4237cf1 | ||
|
|
19c4255c7d | ||
|
|
a8ee7c58ea | ||
|
|
10bfb014eb | ||
|
|
2add9db780 | ||
|
|
4da866aaa3 | ||
|
|
9c21e2dc14 | ||
|
|
d17ac2bf79 | ||
|
|
d4083abee2 | ||
|
|
1cfce6182d | ||
|
|
16c28c788d | ||
|
|
17b80aa0f1 | ||
|
|
8e4ef1a4ac | ||
|
|
87720ef701 | ||
|
|
bbe020bb37 | ||
|
|
af98395e25 | ||
|
|
a2638d01dc | ||
|
|
982415f578 | ||
|
|
5b13328bdd | ||
|
|
887da6dc1a | ||
|
|
1c264e0899 | ||
|
|
af5b9903ee | ||
|
|
292874a0c2 | ||
|
|
b2e1337d4e | ||
|
|
ab41b61e84 | ||
|
|
ee904ae1b1 | ||
|
|
79e037eef4 | ||
|
|
1d25e552d0 | ||
|
|
7bbefe9ee7 | ||
|
|
792c09167b | ||
|
|
5f12351a72 | ||
|
|
fc880f6000 | ||
|
|
78758a3fb0 | ||
|
|
c1c0af36b9 | ||
|
|
32f3e6bf70 | ||
|
|
6d531a9a6b | ||
|
|
5e955f034e | ||
|
|
1ecaf039ca | ||
|
|
4e202e4523 | ||
|
|
7c0bf9f1f4 | ||
|
|
82fea7eff1 | ||
|
|
08be4abd56 | ||
|
|
b9e8b807fd | ||
|
|
4e20ae07ca | ||
|
|
123269ea5e | ||
|
|
6ef40f53c3 | ||
|
|
bed18a418c | ||
|
|
665851300d | ||
|
|
63cc35c8ce | ||
|
|
98287d7883 | ||
|
|
dded74736d | ||
|
|
1dae8fa8f3 | ||
|
|
4a8e3624e4 | ||
|
|
b8c8884065 | ||
|
|
7ada904271 | ||
|
|
28e6545f6f | ||
|
|
789312c6ce | ||
|
|
7740258440 | ||
|
|
3984ee79bf | ||
|
|
5a7985f791 | ||
|
|
ca3c758046 | ||
|
|
09f4dead7f | ||
|
|
cba6507d2b | ||
|
|
ceba2708c6 | ||
|
|
38e7b3b7ae | ||
|
|
73590c3ea9 | ||
|
|
922d21f9f1 | ||
|
|
675d79a4aa | ||
|
|
03cf77723e | ||
|
|
f19ba94a2c | ||
|
|
7b0f97597d | ||
|
|
7f8c5c9f0c | ||
|
|
e33e23909f | ||
|
|
2dae107977 | ||
|
|
0c5eb1e32d | ||
|
|
9d7c9c1746 | ||
|
|
feead9c68b | ||
|
|
5d4b365910 | ||
|
|
dda4bfa6b8 | ||
|
|
3f3e837c36 | ||
|
|
006165574e | ||
|
|
c8b7995d8c | ||
|
|
82ff6400eb | ||
|
|
9b3e8503a8 | ||
|
|
7e291fb303 | ||
|
|
086eb58d80 | ||
|
|
96f34ee4e9 | ||
|
|
7001d8c79f | ||
|
|
6e515954dd | ||
|
|
f489626f6e | ||
|
|
c7d1465946 | ||
|
|
76ebed0897 | ||
|
|
fcfbb67123 | ||
|
|
bc603f88ce | ||
|
|
f39691cdbc | ||
|
|
1383e9666c | ||
|
|
eb235eef37 | ||
|
|
fc68f1810e | ||
|
|
49a6359990 | ||
|
|
311a4dbae9 | ||
|
|
55c5cf850f | ||
|
|
a4f4d5985a | ||
|
|
c0d5f36224 | ||
|
|
56264eb089 | ||
|
|
66c8d38e59 | ||
|
|
a06a62b986 | ||
|
|
7d742760e7 | ||
|
|
9207983abb | ||
|
|
78d65a87cd | ||
|
|
2274e0c67d | ||
|
|
d9c0af232b | ||
|
|
785160653c | ||
|
|
eedea3159c | ||
|
|
768603eb61 | ||
|
|
bb67764be6 | ||
|
|
16c7a22410 | ||
|
|
e7d3aadec3 | ||
|
|
a3b7c70fe0 | ||
|
|
f44bf99dfd | ||
|
|
13db8575e0 | ||
|
|
c26e23b904 | ||
|
|
5c431b5ac5 | ||
|
|
c85305695e | ||
|
|
4c796c0b53 | ||
|
|
8cea22aaf1 | ||
|
|
b6fe34cada | ||
|
|
e9d0f16d2e | ||
|
|
df80bd461d | ||
|
|
a1d5df23a8 | ||
|
|
de72a9860d | ||
|
|
bbd108be7e | ||
|
|
de130171e9 | ||
|
|
4e3c965511 | ||
|
|
ae57ca07f0 | ||
|
|
405d79e72f | ||
|
|
733041ba2b | ||
|
|
9100e03be9 | ||
|
|
a5ecbc4088 | ||
|
|
ae65e55c14 | ||
|
|
efa09182d3 | ||
|
|
c0217a3cc4 | ||
|
|
7f4a2ca6db | ||
|
|
5d6160cf7a | ||
|
|
3753642f23 | ||
|
|
dae63ce3b9 | ||
|
|
1fe9d95322 | ||
|
|
6ef439bda4 | ||
|
|
dd14fe0c42 | ||
|
|
3d54cb8385 | ||
|
|
792331e5a6 | ||
|
|
6caf472798 | ||
|
|
0d0aaca0e6 | ||
|
|
5a0f9a3a2d | ||
|
|
65f457e9d1 | ||
|
|
b1ad9160cc | ||
|
|
bdddea9b04 | ||
|
|
9fb9c6a61e | ||
|
|
a397e72eb0 | ||
|
|
da9c2b649b | ||
|
|
7f6c91e166 | ||
|
|
6d97fb2dc8 | ||
|
|
2979bfbc42 | ||
|
|
c8458dc059 | ||
|
|
6ea274a4e4 | ||
|
|
f0e045d17d | ||
|
|
3caef119a7 | ||
|
|
b395001808 | ||
|
|
e11bafcc93 | ||
|
|
28751d2d36 | ||
|
|
f519a88ee0 | ||
|
|
bb65085727 | ||
|
|
bf2a107d7d | ||
|
|
915663e7db | ||
|
|
31fd6258e0 | ||
|
|
af4dc80ce9 | ||
|
|
996a235e12 | ||
|
|
8e2570033c | ||
|
|
c08135d6e3 | ||
|
|
680f89e0f7 | ||
|
|
98ef328331 | ||
|
|
0c78b12f59 | ||
|
|
98d312a9d4 | ||
|
|
35797e8680 | ||
|
|
ca64239809 | ||
|
|
e6be44623a | ||
|
|
3d8fbd0507 | ||
|
|
de4b66b51e | ||
|
|
45d0e7da2b | ||
|
|
35d0cc5104 | ||
|
|
0fbec1ca02 | ||
|
|
d37bab3d2d | ||
|
|
ad28c41c46 | ||
|
|
db06840338 | ||
|
|
73c259342b | ||
|
|
c36a80dad5 | ||
|
|
cfff0a2af8 | ||
|
|
e887b3b395 | ||
|
|
d4b62d8118 | ||
|
|
32fc88abd2 | ||
|
|
0ad71815bb | ||
|
|
4f1e3b85bf | ||
|
|
202abd351b | ||
|
|
0da616f917 | ||
|
|
0c238a8eea | ||
|
|
d201ae4335 | ||
|
|
35bb4280d0 | ||
|
|
3cb0638c7e | ||
|
|
f4dbdbdd7a | ||
|
|
b7fccc3211 | ||
|
|
e637902892 | ||
|
|
a0eacca17f | ||
|
|
656ac441cd | ||
|
|
9e0781d86c | ||
|
|
81f99264b3 | ||
|
|
28eb4c80f6 | ||
|
|
19bf2e3614 | ||
|
|
3e300e9151 | ||
|
|
3b542d2fdf | ||
|
|
46cf9a2334 | ||
|
|
a81bc2e7b5 | ||
|
|
1772af60a2 | ||
|
|
5d6f1ba676 | ||
|
|
27c52bebc7 | ||
|
|
6ccc059d7a | ||
|
|
de3f6f9fff | ||
|
|
62c9594584 | ||
|
|
548678bf44 | ||
|
|
f8c624a62d | ||
|
|
fcdf79f7e9 | ||
|
|
31e3c46641 | ||
|
|
eeda2ec985 | ||
|
|
7af8b930be | ||
|
|
6f5429ec49 | ||
|
|
22f9629174 | ||
|
|
301f26aca1 | ||
|
|
2159e2722e | ||
|
|
759ea40b22 | ||
|
|
35c1438514 | ||
|
|
d9e8b3e9c3 | ||
|
|
18cb5639a8 | ||
|
|
9b7a7f93b7 | ||
|
|
b6ff870549 | ||
|
|
8be1c86223 | ||
|
|
43e658f388 | ||
|
|
fdc813a5ca | ||
|
|
244394865f | ||
|
|
f5f8861eac | ||
|
|
e8bb2de8b6 | ||
|
|
b5531a1f6b | ||
|
|
55f38016d7 | ||
|
|
1490fb300c | ||
|
|
b33bc2ecd0 | ||
|
|
33072c7ee3 | ||
|
|
db881ceeb0 | ||
|
|
9335705389 | ||
|
|
04b37fffd5 | ||
|
|
e5c3b15a45 | ||
|
|
5c8742e557 | ||
|
|
a11f9ab4c9 | ||
|
|
65df14036c | ||
|
|
97be8dbd14 | ||
|
|
7a7d025956 | ||
|
|
29f0ae0395 | ||
|
|
6f306e1259 | ||
|
|
465df35d27 | ||
|
|
9e4a58ee95 | ||
|
|
6f0e2f9994 | ||
|
|
368c7756ef | ||
|
|
3cf6685eeb | ||
|
|
ba4b9cf549 | ||
|
|
25cfd07ae1 | ||
|
|
1c3bc1ee20 | ||
|
|
a9181a0184 | ||
|
|
f9e967973e | ||
|
|
ce9cba1af2 | ||
|
|
93dcf71fc7 | ||
|
|
61805aada2 | ||
|
|
251ea6ded9 | ||
|
|
be1ed8c0d4 | ||
|
|
dda0aa237c | ||
|
|
1552e75df2 | ||
|
|
3751642782 | ||
|
|
871b456be3 | ||
|
|
88e79ac669 | ||
|
|
ab4328310c | ||
|
|
ffa20c0073 | ||
|
|
13750188fd | ||
|
|
a5be152b87 | ||
|
|
181b1e45da | ||
|
|
260b55eebc | ||
|
|
6e6f474df7 | ||
|
|
3548e6820e | ||
|
|
3443c73d0e | ||
|
|
5f4a26ebba | ||
|
|
d15ff6da8d | ||
|
|
2555203da8 | ||
|
|
90ecd5e10f | ||
|
|
6a2d9e4e39 | ||
|
|
336de6a7db | ||
|
|
c485da2816 | ||
|
|
741457ffa5 | ||
|
|
0d2c0fd5da | ||
|
|
affe40a206 | ||
|
|
22786a6bdc | ||
|
|
7d62a17882 | ||
|
|
c224a2ca61 | ||
|
|
f10390ee2f | ||
|
|
3d40314953 | ||
|
|
a97b77b187 | ||
|
|
292954743f | ||
|
|
104ac50a95 | ||
|
|
06840f466b | ||
|
|
7cbdfa7bf1 | ||
|
|
73b09ffd9f | ||
|
|
cf0c8a2149 | ||
|
|
f85e59c20c | ||
|
|
69c62677f3 | ||
|
|
ae0bf84431 | ||
|
|
63d2a5dd71 | ||
|
|
3da341fb1b | ||
|
|
f42409cb17 | ||
|
|
e703551b4a | ||
|
|
d74386acd1 | ||
|
|
7816c430a5 | ||
|
|
0549b02315 | ||
|
|
2a7afa38d0 | ||
|
|
44fb9caf6b | ||
|
|
4384074283 | ||
|
|
7cd061be6d | ||
|
|
31c54c9609 | ||
|
|
658f85b85a | ||
|
|
52e9fe077f | ||
|
|
a1b0a941ae | ||
|
|
d683ab0afd | ||
|
|
b463cb11aa | ||
|
|
5bcd767d49 | ||
|
|
2de1a51b78 | ||
|
|
3e6a297b34 | ||
|
|
310c010c19 | ||
|
|
f803fed026 | ||
|
|
b5aa55d172 | ||
|
|
032c917493 | ||
|
|
9f4e19ef41 | ||
|
|
b3c520ed54 | ||
|
|
40300c1e4f | ||
|
|
665839637f | ||
|
|
27c4b1be0e | ||
|
|
42afc4f4fc | ||
|
|
da0aac2a18 | ||
|
|
38c538b0c5 | ||
|
|
9a77bcadb2 | ||
|
|
2a15a068b8 | ||
|
|
88517bfdf7 | ||
|
|
cbd362cef1 | ||
|
|
d9c8d8d4e2 | ||
|
|
038e8e1510 | ||
|
|
1727f2b813 | ||
|
|
e530968a9a | ||
|
|
a5323b75d9 | ||
|
|
52709ddc4a | ||
|
|
86783e9815 | ||
|
|
f778d010e5 | ||
|
|
5dd9049810 | ||
|
|
98268cc10a | ||
|
|
529bccc0bf | ||
|
|
75e966ce19 | ||
|
|
a09d8bf14b | ||
|
|
d5a5f858c0 | ||
|
|
2cf354ff28 | ||
|
|
3ea0a10c73 | ||
|
|
6f50a38e5f | ||
|
|
1fc7a59b7c | ||
|
|
c7e0850b7b | ||
|
|
fd01ee391b | ||
|
|
44165621f0 | ||
|
|
686a48a29b | ||
|
|
e444881320 | ||
|
|
12282a8dc7 | ||
|
|
95dcbb1891 | ||
|
|
04588bc7e0 | ||
|
|
172c63f1e2 | ||
|
|
b5622cd07a | ||
|
|
ba73bc7d50 | ||
|
|
bdbf0b8c14 | ||
|
|
79227b9db6 | ||
|
|
4aadaf9bf1 | ||
|
|
403969587e | ||
|
|
1be880438a | ||
|
|
80e9fc0c43 | ||
|
|
559a0442d8 | ||
|
|
724620a24e | ||
|
|
75f2be1891 | ||
|
|
aba4e462a8 | ||
|
|
58aa274b21 | ||
|
|
d9c054b1f5 | ||
|
|
53a92215fc | ||
|
|
d7617a47d3 | ||
|
|
ada3a9ad88 | ||
|
|
c22a3fbcb7 | ||
|
|
9c9b5d9dca | ||
|
|
dd03d1ee63 | ||
|
|
ae196fd592 | ||
|
|
b3a0bf7919 | ||
|
|
58b219f671 | ||
|
|
889bc1e514 | ||
|
|
fcc1d46b63 | ||
|
|
1d15070698 | ||
|
|
380add882c | ||
|
|
4c067bb728 | ||
|
|
42ba008323 | ||
|
|
b7d528b6e8 | ||
|
|
176f2c2870 | ||
|
|
2e3a2b3f96 | ||
|
|
f4f8a1bd69 | ||
|
|
34e4e7e5bd | ||
|
|
5914fc1ffd | ||
|
|
bad435bb26 | ||
|
|
41f4d971dd | ||
|
|
79d4782b23 | ||
|
|
cfdaea4363 | ||
|
|
d66fac3c3c | ||
|
|
66619ca059 | ||
|
|
79b2cdca7b | ||
|
|
3e9c7f83c8 | ||
|
|
561882c2f1 | ||
|
|
7365ba14d0 | ||
|
|
bf3e427017 | ||
|
|
50169f9271 | ||
|
|
1f64c1cf83 | ||
|
|
6648402ddb | ||
|
|
0816714782 | ||
|
|
a8fb9e0804 | ||
|
|
309a0661c3 | ||
|
|
0d3aa3a187 | ||
|
|
94391775c8 | ||
|
|
b1b1f1ba21 | ||
|
|
ba525f068b | ||
|
|
ffdb5d44d7 | ||
|
|
3b04cfd267 | ||
|
|
462b48edae | ||
|
|
05d5649c9c | ||
|
|
b415e79ef5 | ||
|
|
477041a884 | ||
|
|
425346b1f2 | ||
|
|
46684966a1 | ||
|
|
eb961ee052 | ||
|
|
0a5bdf6734 | ||
|
|
ec3ea5c4ae | ||
|
|
9cf39654d9 | ||
|
|
139c6c2c8d | ||
|
|
b20e991a35 | ||
|
|
81f61630cb | ||
|
|
e8363a3be1 | ||
|
|
27611593bd | ||
|
|
6b6ba2205c | ||
|
|
aa2c9390ef | ||
|
|
45f121b8bc | ||
|
|
400cd7ea45 | ||
|
|
62c2f9479b | ||
|
|
3a8218be44 | ||
|
|
5881469855 | ||
|
|
4e662f61c3 | ||
|
|
efd14d8611 | ||
|
|
57bc924d8d | ||
|
|
3715b0c378 | ||
|
|
2783342f33 | ||
|
|
1920a1f3de | ||
|
|
29a25454d8 | ||
|
|
47920f50f3 | ||
|
|
cc8d8074bb | ||
|
|
b4250c1235 | ||
|
|
c428f0787d | ||
|
|
c3b378101c | ||
|
|
489335e4d0 | ||
|
|
ddc075d24c | ||
|
|
50a73965d9 | ||
|
|
d5fc4547a2 | ||
|
|
84e142631e | ||
|
|
8edfb8fe80 | ||
|
|
d9c98bbc29 | ||
|
|
4ff7e4150f | ||
|
|
f4044ffd51 | ||
|
|
2b747d02d3 | ||
|
|
6a722e2961 | ||
|
|
230c199ee5 | ||
|
|
87bb89ab15 | ||
|
|
e9dccf82ab | ||
|
|
4cc74602c1 | ||
|
|
6b2cde7eb0 | ||
|
|
af65d79573 | ||
|
|
dabf657761 | ||
|
|
4572f62ce5 | ||
|
|
f2093ec423 | ||
|
|
51aba915f0 | ||
|
|
9fff2b535f | ||
|
|
3ede2a6467 | ||
|
|
35bfb0f83e | ||
|
|
832f580aa8 | ||
|
|
03b7cb4690 | ||
|
|
d744ca33b6 | ||
|
|
05728a6dc2 | ||
|
|
10a5629fe8 | ||
|
|
38e401007a | ||
|
|
3508301f06 | ||
|
|
3df2c5fe6a | ||
|
|
dc15a6cecc | ||
|
|
f6a292d47f | ||
|
|
f0d084c59c | ||
|
|
9fc3727709 | ||
|
|
218e9cfcb9 | ||
|
|
9e029c0867 | ||
|
|
01a3106450 | ||
|
|
416419ffde | ||
|
|
57a8d505c0 | ||
|
|
ddcb065b22 | ||
|
|
8c64a0b6f8 | ||
|
|
cc68133ddc | ||
|
|
692817e382 | ||
|
|
651e823c30 | ||
|
|
11bb7ccf60 | ||
|
|
c3dda238e9 | ||
|
|
ff95257e5f | ||
|
|
e284b07da7 | ||
|
|
49a2218358 | ||
|
|
c46ccce373 | ||
|
|
2cdf6f9cc0 | ||
|
|
8bb0772ae5 | ||
|
|
2a34cf740b | ||
|
|
314425e32e | ||
|
|
26e3eb9350 | ||
|
|
a3dbb55404 | ||
|
|
f62dd6933c | ||
|
|
3e7b04891d | ||
|
|
ddf96e28b8 | ||
|
|
567cc50fb7 | ||
|
|
79c13aec6e | ||
|
|
26f01431ff | ||
|
|
55e3a94da3 | ||
|
|
0fc69ca222 | ||
|
|
51a43d58de | ||
|
|
b27a7261be | ||
|
|
8144f5cedd | ||
|
|
f67ae38aba | ||
|
|
6b5fd308cb | ||
|
|
fb4ab87fdd | ||
|
|
d302c761d7 | ||
|
|
814c8e382c | ||
|
|
b98be49bfa | ||
|
|
91d36b4b47 | ||
|
|
03c36b4f65 | ||
|
|
792a04cf48 | ||
|
|
a1bb281386 | ||
|
|
941ff0a5a6 | ||
|
|
39b98dab3b | ||
|
|
f9434ac812 | ||
|
|
022ed601ec | ||
|
|
e131d0ff4b | ||
|
|
f6f8e4c4eb | ||
|
|
5880f3855b | ||
|
|
1a25dacc73 | ||
|
|
b6a207c4b6 | ||
|
|
cccadec44c | ||
|
|
edc43e39ca | ||
|
|
5eaf60e8a2 | ||
|
|
2182aabe35 | ||
|
|
2ccf492707 | ||
|
|
0506f06a18 | ||
|
|
2e8dfa73d2 | ||
|
|
453bb613af | ||
|
|
7833ace553 | ||
|
|
6a01be2c38 | ||
|
|
ac4f725433 | ||
|
|
a1f319afa7 | ||
|
|
714ca349ff | ||
|
|
dec1aca97f | ||
|
|
409f58e55a | ||
|
|
f721c1f226 | ||
|
|
a1643b0a2e | ||
|
|
f6576e01f3 | ||
|
|
758a21a22f | ||
|
|
167ec5a3a8 | ||
|
|
8c24d7e942 | ||
|
|
5035dc6754 | ||
|
|
ba431c5bfd | ||
|
|
a96187bd04 | ||
|
|
127cf4e412 | ||
|
|
aa876838d4 | ||
|
|
1a9473c896 | ||
|
|
d52037fd5e | ||
|
|
bcba63e4b2 | ||
|
|
f303c29d4c | ||
|
|
cf0c45a319 | ||
|
|
67933a8470 | ||
|
|
a0dca4f401 | ||
|
|
2bf2dfe685 | ||
|
|
3d59c797f9 | ||
|
|
244a3b936e | ||
|
|
4484727c69 | ||
|
|
5ddfbc1f9a | ||
|
|
740230c870 | ||
|
|
f63d389d26 | ||
|
|
fa81968dbb | ||
|
|
d39c4121a9 | ||
|
|
b6affde530 | ||
|
|
54a3e67eed | ||
|
|
f6daf0b1f6 | ||
|
|
939e8db692 | ||
|
|
c1a80a2001 | ||
|
|
bee877fe41 | ||
|
|
5460b00c8b | ||
|
|
92aba94e78 | ||
|
|
5f9cf69a24 | ||
|
|
7b280ebde1 | ||
|
|
979d3c6011 | ||
|
|
7ac7e48e66 | ||
|
|
226b04e014 | ||
|
|
a8c62c2d78 | ||
|
|
4066243c6f | ||
|
|
c25a5a821f | ||
|
|
09e188621c | ||
|
|
81e0e14008 | ||
|
|
bb88aff663 | ||
|
|
7d0304fd06 | ||
|
|
f280170021 | ||
|
|
57cdae724a | ||
|
|
dc08987a60 | ||
|
|
288e0487a0 | ||
|
|
3805348afd | ||
|
|
a16a11df81 | ||
|
|
d724f6de70 | ||
|
|
6d2730d15f | ||
|
|
d5a2bf16d9 | ||
|
|
239610f1cd | ||
|
|
f4b0e6372a | ||
|
|
cc5d33606b | ||
|
|
3ada3c20a2 | ||
|
|
073caffef4 | ||
|
|
d359b3adc8 | ||
|
|
f5d2f86c23 | ||
|
|
a612ba845e | ||
|
|
dfba79313f | ||
|
|
02de31b7c0 | ||
|
|
b93095a9c0 | ||
|
|
950711c836 | ||
|
|
c48f8f75d4 | ||
|
|
9152ea8f1c | ||
|
|
1e0033166f | ||
|
|
dfe9169e39 | ||
|
|
c140185ee0 | ||
|
|
c681988892 | ||
|
|
2ba1dcf03a | ||
|
|
dfa139b72f | ||
|
|
6559d1a520 | ||
|
|
b9c1ec2eed | ||
|
|
8ce3a5524a | ||
|
|
71380d6fb1 | ||
|
|
aa376a2c0d | ||
|
|
52a237c355 | ||
|
|
e6428da21f | ||
|
|
3b89e6f5a4 | ||
|
|
d7e36079fc | ||
|
|
88ec74d81e | ||
|
|
c9e8ba4955 | ||
|
|
d8f2946ba6 | ||
|
|
fc303c2c38 | ||
|
|
8b59e6e626 | ||
|
|
de42a90a34 | ||
|
|
35d328964f | ||
|
|
9d10426295 | ||
|
|
287bc99a0f | ||
|
|
f92bfc62f1 | ||
|
|
82ad79dd1f | ||
|
|
c95fb78cf4 | ||
|
|
a018e0493b | ||
|
|
0e61f41e31 | ||
|
|
87f6278bf9 | ||
|
|
22f8390ef9 | ||
|
|
ec11abbc52 | ||
|
|
974bf4708c | ||
|
|
319d722a59 | ||
|
|
bf2c5d9ec0 | ||
|
|
7974a9f43b | ||
|
|
72ea4ff8b3 | ||
|
|
991124c9e4 | ||
|
|
47b5386c0c | ||
|
|
5381486c25 | ||
|
|
375ce4c798 | ||
|
|
d2c6148662 | ||
|
|
84101ab821 | ||
|
|
bd0db76e31 | ||
|
|
8743c2329e | ||
|
|
46244e8e84 | ||
|
|
8afac77841 | ||
|
|
6452369351 | ||
|
|
641d838140 | ||
|
|
2d5276f742 | ||
|
|
0dae5d0402 | ||
|
|
022dde4754 | ||
|
|
0aaf00dc5e | ||
|
|
dfb5736ac0 | ||
|
|
04a72ed947 | ||
|
|
105f94690d | ||
|
|
36bbce78d7 | ||
|
|
5a9f52fb11 | ||
|
|
5a4822f89e | ||
|
|
c934127d84 | ||
|
|
2128b88571 | ||
|
|
84d361e8a9 | ||
|
|
c7381cf1d5 | ||
|
|
11354a45ce | ||
|
|
7703991f4c | ||
|
|
9bb6d57515 | ||
|
|
0aa213a31d | ||
|
|
bef119b03b | ||
|
|
d036740c8b | ||
|
|
2c9b86d873 | ||
|
|
fb97ce040b | ||
|
|
c2adab0716 | ||
|
|
06882b4fbd | ||
|
|
079a3b49de | ||
|
|
c9dca6802e | ||
|
|
019c05c8e4 | ||
|
|
159629372d | ||
|
|
3a6dd45741 | ||
|
|
e19ecd2ba1 | ||
|
|
3ead98a770 | ||
|
|
9ca32aa3ea | ||
|
|
9d9df949ef | ||
|
|
cd5c22aaa1 | ||
|
|
39a03d876e | ||
|
|
992833bdc9 | ||
|
|
e2c8880363 | ||
|
|
e6a7f9193b | ||
|
|
3dc85595b1 | ||
|
|
cb4f4ff89c | ||
|
|
fe85ee5307 | ||
|
|
fa3a5f80a1 | ||
|
|
a881e6b3d5 | ||
|
|
e62df46c61 | ||
|
|
24d853966f | ||
|
|
b87e51567e | ||
|
|
3a48fa03a5 | ||
|
|
ebad5364b9 | ||
|
|
3720d559a3 | ||
|
|
522e6b8001 | ||
|
|
32a8936fc6 | ||
|
|
fe8dfc7da3 | ||
|
|
4dc0a4c8c6 | ||
|
|
df8aa42ee4 | ||
|
|
c4951dc605 | ||
|
|
a5edc29be7 | ||
|
|
2c608c5a92 | ||
|
|
8e0af3fc27 | ||
|
|
af8366f0fe | ||
|
|
db90802e6e | ||
|
|
59108365f1 | ||
|
|
092ee49139 | ||
|
|
c324cd5953 | ||
|
|
5cfbd72fa8 | ||
|
|
ce942b0585 | ||
|
|
91ed50d993 | ||
|
|
a93dc423f0 | ||
|
|
399df8ab68 | ||
|
|
8d383cba9d | ||
|
|
dadb12a6e5 | ||
|
|
d7cecc1d8c | ||
|
|
5b76668cbe | ||
|
|
64cc6b7af7 | ||
|
|
15f3c2ff66 | ||
|
|
0e5c654d5b | ||
|
|
de446c4240 | ||
|
|
4f335b9471 | ||
|
|
6269aa6398 | ||
|
|
da0b96a5ad | ||
|
|
db1318fed1 | ||
|
|
a0cacb5553 | ||
|
|
6cc8da120f | ||
|
|
35ca90b8f2 | ||
|
|
65e5b40223 | ||
|
|
4803180bcf | ||
|
|
7e8e954de7 | ||
|
|
0ca9b1be48 | ||
|
|
85eddfc536 | ||
|
|
0ab0fb5dd4 | ||
|
|
6705fb453e | ||
|
|
2c58475d61 | ||
|
|
a381a64b31 | ||
|
|
68c199aa64 | ||
|
|
805d8d81c5 | ||
|
|
063beddb01 | ||
|
|
59aa9c5474 | ||
|
|
a32206a6fb | ||
|
|
bec0dc3c0b | ||
|
|
cf2ec690db | ||
|
|
7daf35d898 | ||
|
|
9d3c5e50d6 | ||
|
|
9cc0c4f874 | ||
|
|
fe1ee08df4 | ||
|
|
84b2ae3e8f | ||
|
|
55054f1fa6 | ||
|
|
8aae821e59 | ||
|
|
d646edee08 | ||
|
|
b0d35f5ef8 | ||
|
|
34e81fdf87 | ||
|
|
5696f22951 | ||
|
|
8853adda62 | ||
|
|
1984b3747e | ||
|
|
c85fa98bcc | ||
|
|
7874b77104 | ||
|
|
bc7d1bc7b2 | ||
|
|
26e8d0d976 | ||
|
|
acadd069e8 | ||
|
|
6e4a5a4bb6 | ||
|
|
6212c1bb80 | ||
|
|
3358fd9b02 | ||
|
|
88e24263cf | ||
|
|
d7098e87ee | ||
|
|
64ecb553e4 | ||
|
|
2130cef3a9 | ||
|
|
f647223e94 | ||
|
|
a0ebe5ed54 | ||
|
|
b05378cdf7 | ||
|
|
423faf7af1 | ||
|
|
f9bb7ba270 | ||
|
|
4bc2de7b7b | ||
|
|
d199b41937 | ||
|
|
7fe63cdb50 | ||
|
|
f4531130b6 | ||
|
|
c6a24b3907 | ||
|
|
2c44cc9cd2 | ||
|
|
739737dc2b | ||
|
|
6bd0840863 | ||
|
|
323f41d14b | ||
|
|
8115a709e9 | ||
|
|
b0344f1426 | ||
|
|
9fb663210d | ||
|
|
881b1da6a7 | ||
|
|
8e350ca4a7 | ||
|
|
a0a355c3a7 | ||
|
|
7ac1e00d01 | ||
|
|
7e22f26b52 | ||
|
|
4f02795c60 | ||
|
|
f430aff4af | ||
|
|
f05d64b01e | ||
|
|
cae6bdf437 | ||
|
|
7d8f7aafdd | ||
|
|
5d279ed22c | ||
|
|
1edd52014e | ||
|
|
1f2f247c1d | ||
|
|
7c2a807278 | ||
|
|
21c7374177 | ||
|
|
1495285a6a | ||
|
|
bdeb96d0a7 | ||
|
|
5963294b04 | ||
|
|
2c58bdbfb2 | ||
|
|
f00bf7cf19 | ||
|
|
2fe6282157 | ||
|
|
a6cca7cfb0 | ||
|
|
2bfc62d9a5 | ||
|
|
dcc4563c8c | ||
|
|
a4f84844bc | ||
|
|
941221cba9 | ||
|
|
0b6d654ec8 | ||
|
|
b8236d55e2 | ||
|
|
4a1e21ac83 | ||
|
|
ee69dc5e44 | ||
|
|
fd06c52dec | ||
|
|
91910b4606 | ||
|
|
f10faf004e | ||
|
|
f0750997de | ||
|
|
f7333c89bb | ||
|
|
19fb3fd56c | ||
|
|
d197ddeb15 | ||
|
|
46bfd2cdac | ||
|
|
45b5545cf7 | ||
|
|
e881043787 | ||
|
|
2b95eba51b | ||
|
|
4177708e49 | ||
|
|
da46b90457 | ||
|
|
e35568f63d | ||
|
|
078cf2c22f | ||
|
|
c1127b3667 | ||
|
|
7f2c6aa3d3 | ||
|
|
39d46074d6 | ||
|
|
0f55256262 | ||
|
|
0440a89292 | ||
|
|
fce3864784 | ||
|
|
99ec79fe6b | ||
|
|
44fd8aa8a8 | ||
|
|
0c81d5afc4 | ||
|
|
eb2ef7070b | ||
|
|
c125cc281d | ||
|
|
e70994f121 | ||
|
|
cea9b35319 | ||
|
|
ea25bd91b0 | ||
|
|
44ef29ca39 | ||
|
|
e87e06bae6 | ||
|
|
31a5d49246 | ||
|
|
ec08a1d44a | ||
|
|
8639740e6c | ||
|
|
784a4641f1 | ||
|
|
e96c0da265 | ||
|
|
c3a51f9227 | ||
|
|
2df4b987ce | ||
|
|
7f7ab5f5b1 | ||
|
|
d704aad162 | ||
|
|
29d3f47d47 | ||
|
|
05f12dcdf1 | ||
|
|
0b509a2d0b | ||
|
|
93fb487fd5 | ||
|
|
f02b89700b | ||
|
|
c1d3faa267 | ||
|
|
b13936f989 | ||
|
|
20215197c5 | ||
|
|
521c70a27a | ||
|
|
9427d90573 | ||
|
|
59f74e93fc | ||
|
|
1deb664ee4 | ||
|
|
da66188148 | ||
|
|
cdc0322a6c | ||
|
|
3116cb073c | ||
|
|
a925d9e6e1 | ||
|
|
c1b16cfbed | ||
|
|
1791246a79 | ||
|
|
7ea1f26209 | ||
|
|
7278d62307 | ||
|
|
f6645b04ed | ||
|
|
35c8130060 | ||
|
|
cc6a8d30b3 | ||
|
|
37e130a1a8 | ||
|
|
7751fed39e | ||
|
|
d106db8061 | ||
|
|
b84f9c93bf | ||
|
|
e762bfa348 | ||
|
|
5a97db8992 | ||
|
|
04636339ce | ||
|
|
9731cdee67 | ||
|
|
0c02a9acd7 | ||
|
|
6077fa3530 | ||
|
|
1a4d97ef28 | ||
|
|
88513cf38a | ||
|
|
7c0cc145eb | ||
|
|
398dcc4a44 | ||
|
|
823d641087 | ||
|
|
65618ffa9c | ||
|
|
5e4f50fa45 | ||
|
|
b2a86db6de | ||
|
|
d2e04d46f4 | ||
|
|
6dfaf6a21c | ||
|
|
9af08d9842 | ||
|
|
d57773e8ef | ||
|
|
24a80de2ec | ||
|
|
ec544b0907 | ||
|
|
d87a325529 | ||
|
|
c651a4b36e | ||
|
|
37132c91e6 | ||
|
|
9727d56864 | ||
|
|
03b5a0f283 | ||
|
|
91797669ee | ||
|
|
e6ffbcf315 | ||
|
|
e12e707704 | ||
|
|
f4a54b667e | ||
|
|
a084ea24b3 | ||
|
|
c05e33cae3 | ||
|
|
55923f2790 | ||
|
|
cdfb566137 | ||
|
|
39f0db8cb4 | ||
|
|
1bd702340b | ||
|
|
3c04111483 | ||
|
|
e965fcb690 | ||
|
|
d583b083d1 | ||
|
|
25a7bf9ab0 | ||
|
|
4d8c18a557 | ||
|
|
579881002e | ||
|
|
5027a55e7f | ||
|
|
d3cd7bec5f | ||
|
|
323a12a44a | ||
|
|
8c955ce9d6 | ||
|
|
9d597faabc | ||
|
|
d85c3f8cc9 | ||
|
|
3f70c8c889 | ||
|
|
370e8c8574 | ||
|
|
25ab4afe78 | ||
|
|
6ad6ff7fb6 | ||
|
|
0d5f97d8bf | ||
|
|
71f2561eb1 | ||
|
|
b42eb08ec6 | ||
|
|
086394d455 | ||
|
|
03eb9c3f5c | ||
|
|
9c248cdcd2 | ||
|
|
2ddab2549e | ||
|
|
4c323ab71a | ||
|
|
a90c738c10 | ||
|
|
4e23832d52 | ||
|
|
e450669663 | ||
|
|
d8f0f7aca4 | ||
|
|
e5cb07729f | ||
|
|
d7e09e83c2 | ||
|
|
0f32e99d88 | ||
|
|
4aa1e43bac | ||
|
|
8fcfcd6790 | ||
|
|
da1cdd7ca4 | ||
|
|
f0b94453f2 | ||
|
|
2dc82f31b3 | ||
|
|
eeea6b3bae | ||
|
|
c93eb92cd0 | ||
|
|
bdf85989fc | ||
|
|
cf9f0ce6a9 | ||
|
|
7e79654ee0 | ||
|
|
4c3fbad9ee | ||
|
|
5679d48073 | ||
|
|
f662c062d2 | ||
|
|
c953f10c21 | ||
|
|
735accc1a8 | ||
|
|
70b9c0f879 | ||
|
|
482163daf7 | ||
|
|
3f00aa0981 | ||
|
|
4e5c85ec03 | ||
|
|
74a1715d6e | ||
|
|
cdd06d7e98 | ||
|
|
5b804a1ff6 | ||
|
|
b2cff5cbd3 | ||
|
|
9eae6cc6f2 | ||
|
|
8d5f52c718 | ||
|
|
94a6947cd6 | ||
|
|
c5e464a704 | ||
|
|
c9c54b7780 | ||
|
|
fc9d7e4f1b | ||
|
|
27e609f6eb | ||
|
|
203f8b2eb4 | ||
|
|
80b07f749f | ||
|
|
3e5c757b9b | ||
|
|
884a313f3c | ||
|
|
55b6fb8da6 | ||
|
|
f0d68211a3 | ||
|
|
0f19d675f5 | ||
|
|
1dabd761e1 | ||
|
|
a6458823b1 | ||
|
|
17f9ee84b3 | ||
|
|
367b3df705 | ||
|
|
e69cd8a057 | ||
|
|
266aafb700 | ||
|
|
9a1034e122 | ||
|
|
a8ff1c856c | ||
|
|
3b32116d36 | ||
|
|
8e24e07e81 | ||
|
|
cecf6fb089 | ||
|
|
3807673574 | ||
|
|
338b7b8a29 | ||
|
|
36fb2a434f | ||
|
|
3262d6deff | ||
|
|
aecabc0372 | ||
|
|
fa3567d95d | ||
|
|
0b13c4d6a5 | ||
|
|
208e1701d0 | ||
|
|
894f469de6 | ||
|
|
6821c50ffe | ||
|
|
b79ab9cd5d | ||
|
|
516c96a8b7 | ||
|
|
7180278c33 | ||
|
|
9f6e1966ae | ||
|
|
d537280454 | ||
|
|
0be526bd7e | ||
|
|
17fbe40b40 | ||
|
|
50c6a1de8a | ||
|
|
4a65aa3d0e | ||
|
|
b84e9da005 | ||
|
|
756c9ff935 | ||
|
|
4026b9e9ae | ||
|
|
2dd079dd51 | ||
|
|
b96b4fcb0f | ||
|
|
d55badf14a | ||
|
|
601da71f15 | ||
|
|
c948c1fca8 | ||
|
|
f29b8dc50c | ||
|
|
58d41d40e5 | ||
|
|
f86a2f1ed3 | ||
|
|
de9b7772e1 | ||
|
|
319adcbd62 | ||
|
|
19952ef634 | ||
|
|
15d49776b3 | ||
|
|
48f2376aaa | ||
|
|
803522ac7a | ||
|
|
daa775c215 | ||
|
|
e1942b8058 | ||
|
|
d566d0bdf0 | ||
|
|
65ecfd2424 | ||
|
|
fcae21bb5f | ||
|
|
a23279f3de | ||
|
|
ff486e5a61 | ||
|
|
95bac54c0e | ||
|
|
3d8ed3905e | ||
|
|
2e7ca62291 | ||
|
|
10c6172a29 | ||
|
|
e7ecad6c14 | ||
|
|
a78da90282 | ||
|
|
3196de2e29 | ||
|
|
9c6b96fa37 | ||
|
|
f3414c16dc | ||
|
|
f1b4081257 | ||
|
|
4a9797797d | ||
|
|
465d850e89 | ||
|
|
e195c42f17 | ||
|
|
b22e409d91 | ||
|
|
7cf1c64575 | ||
|
|
6617444f14 | ||
|
|
eb106650f6 | ||
|
|
e366e8e878 | ||
|
|
0931d23fc5 | ||
|
|
c2f1cbf867 | ||
|
|
4a46619857 | ||
|
|
61a787844b | ||
|
|
8013664eef | ||
|
|
bd8decdfc8 | ||
|
|
79c70b3998 | ||
|
|
f0e5be9982 | ||
|
|
f20e3fffe4 | ||
|
|
d8762a8ed8 | ||
|
|
863b2541a0 | ||
|
|
1fa174c184 | ||
|
|
c33bc31c89 | ||
|
|
617b7adb09 | ||
|
|
af4ec9ad8b | ||
|
|
1347223707 | ||
|
|
64bc9cb771 | ||
|
|
a4d429c5de | ||
|
|
c6c19e3824 | ||
|
|
6e16f5c918 | ||
|
|
6b2b066696 | ||
|
|
924057cf41 | ||
|
|
f0ea815427 | ||
|
|
fd3c55866e | ||
|
|
7b6762609e | ||
|
|
5cf82d7000 | ||
|
|
489ff37bf4 | ||
|
|
f6ed5fd7b3 | ||
|
|
8785fca309 | ||
|
|
9461909321 | ||
|
|
21247c0bb0 | ||
|
|
b07966ba26 | ||
|
|
0a232cd3e2 | ||
|
|
0baf2cb9da | ||
|
|
3f5f83ae1c | ||
|
|
bf6dcf40ef | ||
|
|
9d59709c6c | ||
|
|
3fc864d846 | ||
|
|
404f9125ed | ||
|
|
e53b4346d7 | ||
|
|
4dab056d28 | ||
|
|
077f3b79c1 | ||
|
|
40478bee75 | ||
|
|
ff1ca4dac1 | ||
|
|
86e4a9120d | ||
|
|
4ef667dc83 | ||
|
|
d586814308 | ||
|
|
dda2472487 | ||
|
|
33a81416fc | ||
|
|
f4f481c498 | ||
|
|
088b23f09a | ||
|
|
31ca8ff2ce | ||
|
|
15df1a2f1d | ||
|
|
485c15e981 | ||
|
|
9a009d63eb | ||
|
|
a458aba2d3 | ||
|
|
7f5558bd8a | ||
|
|
75ed9c7b12 | ||
|
|
a13a5fde84 | ||
|
|
45e24a2605 | ||
|
|
0c3ce81c94 | ||
|
|
fa0cfeccb9 | ||
|
|
6d72c4eff2 | ||
|
|
ffa4bf50c3 | ||
|
|
16d5a3efed | ||
|
|
5efb3d3a61 | ||
|
|
d3face8664 | ||
|
|
8496b1dc09 | ||
|
|
994af18770 | ||
|
|
3651c66d5b | ||
|
|
1e46c770b2 | ||
|
|
b01b878b47 | ||
|
|
c2d54b0733 | ||
|
|
d2ec89a0ca | ||
|
|
4279d6c067 | ||
|
|
2c2cd3fde2 | ||
|
|
5426e7bc30 | ||
|
|
4c6191d7c0 | ||
|
|
0aee35df0c | ||
|
|
aa51f81bb8 | ||
|
|
a8c99e9513 | ||
|
|
e9a0b58796 | ||
|
|
b2f47b9073 | ||
|
|
7d71e8828c | ||
|
|
395309c67c | ||
|
|
798667d0e5 | ||
|
|
f277832188 | ||
|
|
6729da3a1b | ||
|
|
e098581688 | ||
|
|
5e897a546a | ||
|
|
c0757b74e8 | ||
|
|
3d35f2cb0a | ||
|
|
849c376fb8 | ||
|
|
919f7bacfe | ||
|
|
3f3494a3c3 | ||
|
|
f561b25d9d | ||
|
|
61739453c2 | ||
|
|
75d8443e3e | ||
|
|
94c2115bf4 | ||
|
|
150ffe6013 | ||
|
|
a0c5f8cc59 | ||
|
|
aa46bf6076 | ||
|
|
c13840b114 | ||
|
|
6ec30e2186 | ||
|
|
0e64071051 | ||
|
|
9b8970fd9c | ||
|
|
78943dc19b | ||
|
|
7aad6d8f95 | ||
|
|
7bf2114ece | ||
|
|
3dd1487a13 | ||
|
|
04e9635f66 | ||
|
|
10b3011757 | ||
|
|
ac3b2bb14d | ||
|
|
9adbfdf270 | ||
|
|
bf05f97cfe | ||
|
|
05c083bb54 | ||
|
|
5a37991d44 | ||
|
|
34f371aeae | ||
|
|
21d68c7998 | ||
|
|
a92c18f80c | ||
|
|
6e65f9cbd5 | ||
|
|
71cf94b330 | ||
|
|
43a73065af | ||
|
|
e762859d1b | ||
|
|
501d3b9a35 | ||
|
|
9ff63b486e | ||
|
|
d4e5418f07 | ||
|
|
3c3859e840 | ||
|
|
f3915043dd | ||
|
|
e9ce9ab87a | ||
|
|
b585aef166 | ||
|
|
b13388a138 | ||
|
|
2f5458ab5f | ||
|
|
0f89acea96 | ||
|
|
28e9f168d4 | ||
|
|
04101d23e7 | ||
|
|
0a6de4561f | ||
|
|
cd647eb352 | ||
|
|
18f94fc0e6 | ||
|
|
c141e4eec3 | ||
|
|
a178ad7524 | ||
|
|
162f7498a4 | ||
|
|
d74f2406b7 | ||
|
|
afbddfc23b | ||
|
|
c08be14919 | ||
|
|
59b4e29be9 | ||
|
|
aa5ff65b54 | ||
|
|
97fdf10cea | ||
|
|
2afa653eff | ||
|
|
9cb333f7b5 | ||
|
|
4cec34d014 | ||
|
|
15677cef4a | ||
|
|
0e0bae0198 | ||
|
|
55a851e5f2 | ||
|
|
675ae91c29 | ||
|
|
353ca842ad | ||
|
|
304ba8c6bb | ||
|
|
bb5d4dfbf0 | ||
|
|
29ed73ba92 | ||
|
|
e36f08db3a | ||
|
|
fc2189fe0a | ||
|
|
bb5deffdd4 | ||
|
|
68e00ed208 | ||
|
|
1c8b7a5ae5 | ||
|
|
ed21dba8f0 | ||
|
|
8e78892712 | ||
|
|
38bc0bab3d | ||
|
|
927e947385 | ||
|
|
b0465bb500 | ||
|
|
0ee034a084 | ||
|
|
fa92f2e581 | ||
|
|
bc28a3f5e3 | ||
|
|
6561290bde | ||
|
|
2b9ecf75b6 | ||
|
|
d128939227 | ||
|
|
6613522e53 | ||
|
|
5de2c3dc22 | ||
|
|
a91f74d648 | ||
|
|
9cf3b9f91d | ||
|
|
667e38fea0 | ||
|
|
1728857ca1 | ||
|
|
38b9ce3aa2 | ||
|
|
fba4fd91a1 | ||
|
|
ffda6a51bb | ||
|
|
49fb838175 | ||
|
|
31fa9475da | ||
|
|
ccc380f11c | ||
|
|
9a3896f48a | ||
|
|
5baf11dada | ||
|
|
1c46e6b72b | ||
|
|
ccaa98513c | ||
|
|
aac479f58c | ||
|
|
718289c115 | ||
|
|
13c4c188fa | ||
|
|
7ba03ed24f | ||
|
|
6229ea4559 | ||
|
|
fd55026fba | ||
|
|
3ae5135f67 | ||
|
|
ee932450df | ||
|
|
32984dc126 | ||
|
|
aba97a419c | ||
|
|
3601492ce1 | ||
|
|
2304eff3ca | ||
|
|
55cfaaf929 | ||
|
|
730e5f299f | ||
|
|
2698585018 | ||
|
|
acbabbe13d | ||
|
|
77d67f3599 | ||
|
|
612e9f8b99 | ||
|
|
057e92afb8 | ||
|
|
3a15276668 | ||
|
|
5e9a31eaa7 | ||
|
|
69d293790a | ||
|
|
7c28459673 | ||
|
|
fa5ce634e1 | ||
|
|
cc38d42bf9 | ||
|
|
72d92413a2 | ||
|
|
535cd1f9ac | ||
|
|
7c8ed9e2bb | ||
|
|
013be4bbb8 | ||
|
|
81c19b4749 | ||
|
|
1d2aeaf147 | ||
|
|
0413fe944f | ||
|
|
79eafee59a | ||
|
|
6e14e86e4b | ||
|
|
885c7c4e50 | ||
|
|
7377ef5606 | ||
|
|
9a061d74b3 | ||
|
|
d872be4310 | ||
|
|
acb8595a50 | ||
|
|
488ee19f93 | ||
|
|
b4b4b3f95f | ||
|
|
1840cc9b62 | ||
|
|
72da703f0e | ||
|
|
e586a7ad64 | ||
|
|
9a2c195f5f | ||
|
|
b9397157ab | ||
|
|
2e3473bbfd | ||
|
|
5c45f2c7b8 | ||
|
|
964286ab99 | ||
|
|
d9a29e1da5 | ||
|
|
38eb6ad062 | ||
|
|
34882073c9 | ||
|
|
c36b202fe7 | ||
|
|
5214df42a6 | ||
|
|
0c3f8af4d9 | ||
|
|
e66db5cc10 | ||
|
|
f09b3e2dae | ||
|
|
11c622afca | ||
|
|
22429b2407 | ||
|
|
026630df74 | ||
|
|
4ce0c91ea7 | ||
|
|
0dfc9b540f | ||
|
|
28bbc8089e | ||
|
|
7e5fb876bb | ||
|
|
f648ac44b2 | ||
|
|
8f3e0517ca | ||
|
|
f7e2fa5263 | ||
|
|
b5ca691e69 | ||
|
|
283d0a352e | ||
|
|
0446c27df1 | ||
|
|
de7f8c4a3a | ||
|
|
571e7f2c2c | ||
|
|
a2fcc14e8b | ||
|
|
078aa3d89b | ||
|
|
a12350274b | ||
|
|
b9ee317ab9 | ||
|
|
bb228c73ab | ||
|
|
4a9e920a1c | ||
|
|
f839a408de | ||
|
|
889360b5e4 | ||
|
|
571bceb386 | ||
|
|
20a922ce21 | ||
|
|
060fff6d2f | ||
|
|
e27d892d74 | ||
|
|
2b0e32916d | ||
|
|
a786fd308a | ||
|
|
ed25ae64e5 | ||
|
|
072638ab73 | ||
|
|
6580eb4bef | ||
|
|
ff4a78a7f9 | ||
|
|
a29b3aa500 | ||
|
|
5dae51e12e | ||
|
|
7fcf2bbdb3 | ||
|
|
7f15755edc | ||
|
|
bb1681e40c | ||
|
|
5e75c0fc6e | ||
|
|
ee45c39d65 | ||
|
|
666b4e5964 | ||
|
|
df5f5ba1b5 | ||
|
|
2d39bb8cd2 | ||
|
|
d740ac57c7 | ||
|
|
204beaca11 | ||
|
|
8fcb9e2b63 | ||
|
|
419a143bf2 | ||
|
|
916ff4a3ad | ||
|
|
15dab02e75 | ||
|
|
687b281b47 | ||
|
|
d190e33313 | ||
|
|
3715b8c5f2 | ||
|
|
d92ff6d45d | ||
|
|
ec6b9acad9 | ||
|
|
d2902440d2 | ||
|
|
6793f74b3b | ||
|
|
34e2a86f1a | ||
|
|
068027e23b | ||
|
|
c20f501175 | ||
|
|
c8f0492353 | ||
|
|
9c6dfd493c | ||
|
|
21abb6fd09 | ||
|
|
6213e0a116 | ||
|
|
006ba60071 | ||
|
|
531a502c53 | ||
|
|
47e288da4c | ||
|
|
1899d017dc | ||
|
|
1be227b07b | ||
|
|
4195fa481b | ||
|
|
2e3345d2ce | ||
|
|
8f14226ab4 | ||
|
|
77d84982c2 | ||
|
|
e0e53fcf69 | ||
|
|
fffb26f558 | ||
|
|
2b449e0850 | ||
|
|
2caee2a0dc | ||
|
|
75116b43b4 | ||
|
|
f0e887ca33 | ||
|
|
c7b6e51eba | ||
|
|
4bba8bc173 | ||
|
|
f4f12b7dcb | ||
|
|
32d164a786 | ||
|
|
4cffc825c8 | ||
|
|
700e1a1c6f | ||
|
|
3f6bc35ec6 | ||
|
|
e4963d65ff | ||
|
|
612f3e20ac | ||
|
|
f309f48ae2 | ||
|
|
d5764fd387 | ||
|
|
6fe36c9d1c | ||
|
|
245bd302d7 | ||
|
|
3d35aed95b | ||
|
|
8556ccb810 | ||
|
|
0273fbffb9 | ||
|
|
6d0677f84f | ||
|
|
8f22c142b7 | ||
|
|
a56141e0e8 | ||
|
|
53c239f052 | ||
|
|
b38da96933 | ||
|
|
067ea274bd | ||
|
|
ffa660832f | ||
|
|
399812b40e | ||
|
|
f109a6e544 | ||
|
|
6c149b47a3 | ||
|
|
646d61bd4d | ||
|
|
eb15cdde1b | ||
|
|
661a4adac6 | ||
|
|
da4e74ba2a | ||
|
|
cbf529bff2 | ||
|
|
74f831fb2e | ||
|
|
2e961d1d70 | ||
|
|
5713230c6d | ||
|
|
be02ee1a25 | ||
|
|
a24ea2f3be | ||
|
|
016656f5e7 | ||
|
|
2b42fb8a38 | ||
|
|
eed89eff45 | ||
|
|
c8e43cb77d | ||
|
|
bdd9452465 | ||
|
|
0b12798922 | ||
|
|
b74afd3a80 | ||
|
|
a1910b4914 | ||
|
|
da6fc54d1c | ||
|
|
a0faf4c8d1 | ||
|
|
1c80b49990 | ||
|
|
e8ca77395a | ||
|
|
5eb95f836e | ||
|
|
a434d6047f | ||
|
|
da33d22c85 | ||
|
|
433e2e57ed | ||
|
|
d2a1ac9c3f | ||
|
|
6835855c66 | ||
|
|
2311c3fc18 | ||
|
|
8c1cfba5d8 | ||
|
|
84b84c91c2 | ||
|
|
98a6e27957 | ||
|
|
3e59fe6877 | ||
|
|
9ae48fcb21 | ||
|
|
0d9594b220 | ||
|
|
6031d9ec6e | ||
|
|
7514758b8c | ||
|
|
ea21a11259 | ||
|
|
990c27718a | ||
|
|
8aad873a26 | ||
|
|
655a86694d | ||
|
|
11a569b113 | ||
|
|
b1a6964e18 | ||
|
|
6ecf8b60b6 | ||
|
|
9073ce8884 | ||
|
|
7a562950b0 | ||
|
|
1364f78b30 | ||
|
|
7bcf4b7894 | ||
|
|
3503ac27a8 | ||
|
|
dbda4d50bd | ||
|
|
cccd2c0139 | ||
|
|
abf9287a99 | ||
|
|
17b40aa10a | ||
|
|
3a87c4909c | ||
|
|
f0600f1725 | ||
|
|
4958f6c158 | ||
|
|
b590437ca1 | ||
|
|
dda3dce34b | ||
|
|
485d278b8c | ||
|
|
d4a4203f95 | ||
|
|
93bdb819ca | ||
|
|
d82c083076 | ||
|
|
197af8853f | ||
|
|
a493043085 | ||
|
|
e456521b94 | ||
|
|
68a86a86ce | ||
|
|
e84158b486 | ||
|
|
843d077da0 | ||
|
|
ff07374e2a | ||
|
|
a8a87bc2ca | ||
|
|
4aecabae47 | ||
|
|
8b8f87c7e8 | ||
|
|
b6dbd2d80d | ||
|
|
ea83c0fe6b | ||
|
|
16e4c34d69 | ||
|
|
4f594c92e8 | ||
|
|
9b2f1a826d | ||
|
|
33866c124e | ||
|
|
e69fbfd16f | ||
|
|
3eff741da8 | ||
|
|
9939779932 | ||
|
|
511ac53d07 | ||
|
|
0c300194dc | ||
|
|
ff74ef4a42 | ||
|
|
9ab3cb4e9f | ||
|
|
0ffa9198f5 | ||
|
|
dde63b5017 | ||
|
|
0843efd282 | ||
|
|
321a722b8e | ||
|
|
063e704321 | ||
|
|
7040fffcca | ||
|
|
295fc7c0dc | ||
|
|
11bdbaa07f | ||
|
|
34ff670e5b | ||
|
|
f752758181 | ||
|
|
50b797aa32 | ||
|
|
c9c4c9ba8c | ||
|
|
3a3cb27b36 | ||
|
|
c4f939f44b | ||
|
|
d124315ba1 | ||
|
|
f8a22cbdac | ||
|
|
0709b0648a | ||
|
|
e58ff6c71c | ||
|
|
24141abde2 | ||
|
|
a0ccca555d | ||
|
|
cb25c7e5aa | ||
|
|
748eb9555a | ||
|
|
e2ca4177dd | ||
|
|
540e16b179 | ||
|
|
49369f3e98 | ||
|
|
8007c0af3f | ||
|
|
764c01befb | ||
|
|
df2ed05edf | ||
|
|
445c32c996 | ||
|
|
212ea2de30 | ||
|
|
cddf48547d | ||
|
|
f4ffdbe8a9 | ||
|
|
29752c72d0 | ||
|
|
64a864a332 | ||
|
|
5fa4ee4942 | ||
|
|
6c53c116ad | ||
|
|
df5409d103 | ||
|
|
da22e21a0e | ||
|
|
4403876320 | ||
|
|
f113bc8a77 | ||
|
|
cd8be91f4a | ||
|
|
1d1dc41bb0 | ||
|
|
1dc2b1c4c0 | ||
|
|
84932eb9da | ||
|
|
8a7824924a | ||
|
|
709d42d3e7 | ||
|
|
6cefb4e83f | ||
|
|
1790bfe91c | ||
|
|
04586c02de | ||
|
|
0e59be87cb | ||
|
|
1d16320caa | ||
|
|
9a906d427a | ||
|
|
9d0d5db948 | ||
|
|
292939c4a1 | ||
|
|
b1c0c5a03e | ||
|
|
8ceee89ee7 | ||
|
|
69c0f179f5 | ||
|
|
aa18543903 | ||
|
|
b4939a8873 | ||
|
|
7235df2e89 | ||
|
|
83cc54f28d | ||
|
|
375953641b | ||
|
|
aa3dd133c7 | ||
|
|
0603f2db1a | ||
|
|
df3d007a1b | ||
|
|
9d02a23325 | ||
|
|
dc3e645591 | ||
|
|
4478f29b47 | ||
|
|
d184b79a19 | ||
|
|
4e997951e4 | ||
|
|
fd841ec272 | ||
|
|
035a452900 | ||
|
|
d5542ad35e | ||
|
|
dd35de863a | ||
|
|
a8f566052b | ||
|
|
79dcd7c555 | ||
|
|
2ddbb89599 | ||
|
|
3d726fd2ba | ||
|
|
14588ccba8 | ||
|
|
506a3337c6 | ||
|
|
d2f91aa3da | ||
|
|
8249763088 | ||
|
|
fd8a4f63ce | ||
|
|
d9ca68e6ea | ||
|
|
f31652053f | ||
|
|
e9e7df693a | ||
|
|
04e3cd0fdb | ||
|
|
34030169cf | ||
|
|
6296be4b75 | ||
|
|
c6078e3136 | ||
|
|
f86182d062 | ||
|
|
bec0fd603f | ||
|
|
6cee767ddf | ||
|
|
f0553c370a | ||
|
|
9a31d3ccab | ||
|
|
d56319208a | ||
|
|
7c9888300b | ||
|
|
f2b4d790b6 | ||
|
|
e2d37a31ad | ||
|
|
faa9b4b27f | ||
|
|
fe8bbb82a0 | ||
|
|
06984ff317 | ||
|
|
ef0728657c | ||
|
|
2e080bc6ae | ||
|
|
b4e37e0be5 | ||
|
|
9735459552 | ||
|
|
65c03a786b | ||
|
|
9757a4574f | ||
|
|
3bd18af816 | ||
|
|
aa3d033066 | ||
|
|
a40ba55750 | ||
|
|
6d1cf8ec53 | ||
|
|
0662baacd6 | ||
|
|
eb264537f3 | ||
|
|
095b76b3e8 | ||
|
|
e9fc0d1db8 | ||
|
|
9d90f2eed1 | ||
|
|
65f8966247 | ||
|
|
50dcd97611 | ||
|
|
4b419e02db | ||
|
|
fc2d334834 | ||
|
|
e5145e5273 | ||
|
|
146e3c2ca6 | ||
|
|
34ebd250d7 | ||
|
|
6650c4cc5c | ||
|
|
49e6af929d | ||
|
|
99826a3398 | ||
|
|
289532d7c8 | ||
|
|
2b0bcaa34c | ||
|
|
9819742df3 | ||
|
|
2cc1319cb3 | ||
|
|
63ce7ca981 | ||
|
|
b345f565f7 | ||
|
|
952de46e45 | ||
|
|
92de810d4e | ||
|
|
fa21ef7ea7 | ||
|
|
71c309d2b8 | ||
|
|
7b274c955f | ||
|
|
a92fec2d0d | ||
|
|
ef6374becc | ||
|
|
25f836ad0b | ||
|
|
deb1f3723c | ||
|
|
eb1712808a | ||
|
|
9c5f142786 | ||
|
|
0626519b4d | ||
|
|
1d3e3f40fd | ||
|
|
b12b3576a8 | ||
|
|
0e96b54a9e | ||
|
|
9144123f32 | ||
|
|
b3abebcf9d | ||
|
|
854ea0e5ac | ||
|
|
6256436305 | ||
|
|
567e4a39d5 | ||
|
|
d056c136dd | ||
|
|
98a8129f93 | ||
|
|
4c853a8f45 | ||
|
|
f113aadb68 | ||
|
|
0669fbcc27 | ||
|
|
1735be1cc2 | ||
|
|
53bbd08fd3 | ||
|
|
fec05ff353 | ||
|
|
e2473b70ca | ||
|
|
df4ff2d299 | ||
|
|
c9d082303f | ||
|
|
613d1fdf2a | ||
|
|
60a5c3f946 | ||
|
|
bd8088daca | ||
|
|
bc5f1bf1fc | ||
|
|
fe351fbfda | ||
|
|
1eb1b5189c | ||
|
|
dc57e0165c | ||
|
|
9ccd97798f | ||
|
|
5477dbe396 | ||
|
|
b8e5ccfb7b | ||
|
|
687fc2e169 | ||
|
|
471defca72 | ||
|
|
d649ed70e9 | ||
|
|
4115c3f9c1 | ||
|
|
238e5b3afa | ||
|
|
bcebd27739 | ||
|
|
4516d10197 | ||
|
|
853a400867 | ||
|
|
48e5cc152f | ||
|
|
d193640041 | ||
|
|
81e0836e11 | ||
|
|
6df97d1e38 | ||
|
|
fc1b98811b | ||
|
|
b653743f5f | ||
|
|
a2f612715b | ||
|
|
24690973a8 | ||
|
|
8af6cf8d72 | ||
|
|
927d78cc04 | ||
|
|
95dc2f79a6 | ||
|
|
7116179dc6 | ||
|
|
165a06b5a9 | ||
|
|
4910bd3feb | ||
|
|
c1b1fe6371 | ||
|
|
97fcc8311f | ||
|
|
1826b38aa9 | ||
|
|
ba42b192b8 | ||
|
|
d896db7d7d | ||
|
|
f2ad8086a7 | ||
|
|
0013282012 | ||
|
|
102f42928c | ||
|
|
6a580c720a | ||
|
|
9eb8377cea | ||
|
|
c756bad83c | ||
|
|
62f2e6fb8e | ||
|
|
2c0656142a | ||
|
|
bc22631340 | ||
|
|
56af486790 | ||
|
|
6c47254bb5 | ||
|
|
f2469415d2 | ||
|
|
5c2e5e14fa | ||
|
|
3b62f2ceba | ||
|
|
d50ae7489e | ||
|
|
8a86253958 | ||
|
|
991d6478aa | ||
|
|
8f11874449 | ||
|
|
e4e2586939 | ||
|
|
1e00d8cdaf | ||
|
|
7ecf01737d | ||
|
|
23083decbb | ||
|
|
0a8bc1a63c | ||
|
|
db61c6b643 | ||
|
|
48cf167a3c | ||
|
|
248135dffb | ||
|
|
5056048ccd | ||
|
|
7bbcde9310 | ||
|
|
a0e14fd37c | ||
|
|
b3a2df7bf9 | ||
|
|
2d61b69ff5 | ||
|
|
a6031a46a2 | ||
|
|
0266776a3e | ||
|
|
701c119986 | ||
|
|
8c7f2b6a74 | ||
|
|
5a9e1b14cb | ||
|
|
e27c5e3043 | ||
|
|
83b2ffd0c9 | ||
|
|
f8e6802e3f | ||
|
|
4a25335036 | ||
|
|
772255e4e0 | ||
|
|
d192e6feb6 | ||
|
|
36f55ae80c | ||
|
|
dc2751aa38 | ||
|
|
c0501bdc02 | ||
|
|
25d7df470f | ||
|
|
e2dd94332b | ||
|
|
c4eccb3666 | ||
|
|
767ce22019 | ||
|
|
b087deadcb | ||
|
|
71f9299485 | ||
|
|
57dd0ce113 | ||
|
|
d9de059a4f | ||
|
|
090ddafade | ||
|
|
fbc82f01b2 | ||
|
|
3e874f8bb2 | ||
|
|
9ffbc0f08c | ||
|
|
9e5edaba71 | ||
|
|
aafab46456 | ||
|
|
14f905dbfd | ||
|
|
f424e93d34 | ||
|
|
0d43ea2bb9 | ||
|
|
3a7aa76ef6 | ||
|
|
b6bcea6679 | ||
|
|
da36371448 | ||
|
|
edbbc69f4f | ||
|
|
1c64e62e3d | ||
|
|
36fd030075 | ||
|
|
f23925340e | ||
|
|
65ce8c760d | ||
|
|
9402f4ad02 | ||
|
|
db8be6ad10 | ||
|
|
4d92a7e250 | ||
|
|
5b85e942f1 | ||
|
|
8a55d327b6 | ||
|
|
8a1d2611d8 | ||
|
|
01e9be9180 | ||
|
|
42b4989846 | ||
|
|
6de5e61031 | ||
|
|
59522b84db | ||
|
|
eb5bf06272 | ||
|
|
74b04e4f2c | ||
|
|
085314d503 | ||
|
|
8a317e5af2 | ||
|
|
7f21ebe82b | ||
|
|
f0889b13dd | ||
|
|
54ace02b9b | ||
|
|
3bc4820d90 | ||
|
|
fc1feab7ec | ||
|
|
8fa04fe2cf | ||
|
|
4786b64b93 | ||
|
|
50a8884c32 | ||
|
|
1dc1531104 | ||
|
|
82bc61e620 | ||
|
|
ad15a5e26f | ||
|
|
8e43a3ca0b | ||
|
|
e3b70bc8b9 | ||
|
|
37f711b234 | ||
|
|
ea495b631c | ||
|
|
045837a888 | ||
|
|
4b1ba511de | ||
|
|
6bca6f992c | ||
|
|
1aa4008b36 | ||
|
|
21c1665678 | ||
|
|
083605fb85 | ||
|
|
7f6d8ba86c | ||
|
|
1a64597fca | ||
|
|
ced25643e0 | ||
|
|
a34afd1ca2 | ||
|
|
bd8c2ce774 | ||
|
|
7508a73373 | ||
|
|
7a766c6c09 | ||
|
|
bdeb35ba3b | ||
|
|
e6ccd5cf0d | ||
|
|
a6a4821380 | ||
|
|
fd6863506d | ||
|
|
fdb39ca314 | ||
|
|
859e674c11 | ||
|
|
aa1d6f7095 | ||
|
|
9c1ed88e5f | ||
|
|
35cf50c796 | ||
|
|
f36584ce38 | ||
|
|
77fad07a28 | ||
|
|
0929a937a3 | ||
|
|
8b39996577 | ||
|
|
78b2020669 | ||
|
|
269b12226a | ||
|
|
4228b9a772 | ||
|
|
c103a8a205 | ||
|
|
6e8337c563 | ||
|
|
ccf02579e6 | ||
|
|
49811fc4b8 | ||
|
|
1bbdf2f1cc | ||
|
|
80d8144f1e | ||
|
|
40f439bc15 | ||
|
|
7f6e2c308e | ||
|
|
60f9a2f773 | ||
|
|
394482157e | ||
|
|
a66b276e7d | ||
|
|
0a23f1e35c | ||
|
|
c47e61d136 | ||
|
|
f3f57ba79b | ||
|
|
41ee6e706a | ||
|
|
0d4017fe1a | ||
|
|
11f9a64737 | ||
|
|
5c3eef0112 | ||
|
|
a2f3e7cccd | ||
|
|
fbd1108041 | ||
|
|
ebf81a6a03 | ||
|
|
f33b3c771a | ||
|
|
5629e8068b | ||
|
|
4a4b6c5589 | ||
|
|
d7eafcb641 | ||
|
|
4e0120493e | ||
|
|
a772527a4a | ||
|
|
954b483e4f | ||
|
|
fa1448163a | ||
|
|
f89b98e7c7 | ||
|
|
44af8f30f8 | ||
|
|
7ff8b97006 | ||
|
|
62c9184658 | ||
|
|
1777fca0e3 | ||
|
|
ce0f0322af | ||
|
|
462d64ab7a | ||
|
|
2c5b9b4d52 | ||
|
|
dddafc8944 | ||
|
|
bd34127cd4 | ||
|
|
450ccf6359 | ||
|
|
98c9199f0e | ||
|
|
0a0b41393e | ||
|
|
7e942a366c | ||
|
|
23975d225d | ||
|
|
ad9f88c487 | ||
|
|
7442162cc0 | ||
|
|
3e20672efe | ||
|
|
2b235e0827 | ||
|
|
8720a0dcdf | ||
|
|
d116298d2f | ||
|
|
fd8b99bd8c | ||
|
|
724ca6f06e | ||
|
|
054ab88ef1 | ||
|
|
9c6c7a82cb | ||
|
|
c72ed77632 | ||
|
|
6e6ae6f1d3 | ||
|
|
706bce07e5 | ||
|
|
ee6a9b3b6b | ||
|
|
ade22bf48c | ||
|
|
3bc0405715 | ||
|
|
c2114d8e3b | ||
|
|
6c0efef967 | ||
|
|
b0a584d5ee | ||
|
|
27bb96b61c | ||
|
|
034da586c8 | ||
|
|
e889e1a5c6 | ||
|
|
4961601b84 | ||
|
|
beab8d2deb | ||
|
|
aa19430d52 | ||
|
|
a161a94241 | ||
|
|
468e08dfa7 | ||
|
|
791b0cb904 | ||
|
|
37dbcb91cd | ||
|
|
1888a4cf99 | ||
|
|
d377170747 | ||
|
|
e68999ea0d | ||
|
|
a2a063e6a2 | ||
|
|
c3e978793c | ||
|
|
98cb5f2e55 | ||
|
|
ad52061c50 | ||
|
|
6f67fa533a | ||
|
|
4a7ce82688 | ||
|
|
df28473326 | ||
|
|
181db8c40a | ||
|
|
a87dabda1c | ||
|
|
c37d08c475 | ||
|
|
5417afc623 | ||
|
|
6d60249fd2 | ||
|
|
ec8ead8183 | ||
|
|
49d7f90c99 | ||
|
|
5015642b6d | ||
|
|
215c353dee | ||
|
|
7ec2ff5513 | ||
|
|
06cd9409e9 | ||
|
|
6e2191a34e | ||
|
|
ef023d144b | ||
|
|
676b6f98a3 | ||
|
|
2dea187595 | ||
|
|
04b0a4c888 | ||
|
|
1c8c3d65c5 | ||
|
|
fdffe20c0b | ||
|
|
e30393e18f | ||
|
|
6726abd37e | ||
|
|
2174e97286 | ||
|
|
698d19cb51 | ||
|
|
365a1808c0 | ||
|
|
5ac30cec73 | ||
|
|
623e4427f1 | ||
|
|
7d29bd55f8 | ||
|
|
6d1cabaa9d | ||
|
|
1516d38254 | ||
|
|
2e5b6df3a7 | ||
|
|
5ee9af795f | ||
|
|
175e962c0c | ||
|
|
1fb31352de | ||
|
|
302d28088d | ||
|
|
a25cc12c67 | ||
|
|
6ebea75f87 | ||
|
|
eee5b0d231 | ||
|
|
24b7748834 | ||
|
|
68cc4f190c | ||
|
|
d3fa1f5be7 | ||
|
|
e81dfea600 | ||
|
|
edaf0fcd2c | ||
|
|
3e059aac56 | ||
|
|
13b0c62ecd | ||
|
|
70f78c3189 | ||
|
|
2c916aa117 | ||
|
|
8f12973c84 | ||
|
|
5ca11f3eac | ||
|
|
b00e5008af | ||
|
|
b8069ce657 | ||
|
|
29ba06739a | ||
|
|
9db53461a4 | ||
|
|
3d53e80532 | ||
|
|
40b0a8c127 | ||
|
|
965f3813b2 | ||
|
|
97a51fc2a9 | ||
|
|
3a7fc33943 | ||
|
|
8a006d27ca | ||
|
|
3f45a521a0 | ||
|
|
39982f1eec | ||
|
|
3ede935949 | ||
|
|
9a60892b68 | ||
|
|
10052a6d7e | ||
|
|
9fd8d831ca | ||
|
|
bb8ee18a59 | ||
|
|
6c05d116a0 | ||
|
|
d5ef0b1330 | ||
|
|
d09e03d7f2 | ||
|
|
191c5c3b37 | ||
|
|
51faca5b69 | ||
|
|
3b1a70c10a | ||
|
|
1390bf271f | ||
|
|
97ee0205e9 | ||
|
|
ad4a6b3386 | ||
|
|
0925b479c2 | ||
|
|
f7d3c20648 | ||
|
|
92e8a84a4e | ||
|
|
f637cd3202 | ||
|
|
a022b2231f | ||
|
|
0c544409dd | ||
|
|
92a3ff9b2a | ||
|
|
ab5a4860a2 | ||
|
|
cacd7a4c32 | ||
|
|
b7bcd4484a | ||
|
|
d1fad42ec3 | ||
|
|
f97ed9c340 | ||
|
|
f03553e107 | ||
|
|
4394491292 | ||
|
|
fe32e10dc1 | ||
|
|
03ea90dced | ||
|
|
d7912e1e12 | ||
|
|
ce464f4816 | ||
|
|
a019ebb15e | ||
|
|
674e24fd58 | ||
|
|
eccc5b204c | ||
|
|
c99fbe54bd | ||
|
|
71ed538285 | ||
|
|
8eab2ef27c | ||
|
|
93da059454 | ||
|
|
162ff4ab15 | ||
|
|
07e600907b | ||
|
|
2c2a033e18 | ||
|
|
ccd61c2d78 | ||
|
|
877bd0954b | ||
|
|
810ee0e290 | ||
|
|
c00b4ba6ac | ||
|
|
23b854dedc | ||
|
|
d10d7d06fb | ||
|
|
b4102eabe5 | ||
|
|
3bd6e787ab | ||
|
|
1758449b51 | ||
|
|
9c3c5725af | ||
|
|
931fd66f66 | ||
|
|
d2435262ec | ||
|
|
cbb4307f6d | ||
|
|
46f5bfbe22 | ||
|
|
ca1e5d111a | ||
|
|
c76c4f026e | ||
|
|
3906896947 | ||
|
|
825e7a7533 | ||
|
|
e411e6dc75 | ||
|
|
39ebd82e20 | ||
|
|
ec22bc40bc | ||
|
|
129342edff | ||
|
|
8ca0c35242 | ||
|
|
e5f2810212 | ||
|
|
48292fb189 | ||
|
|
e6a5b589ff | ||
|
|
8ef91a528f | ||
|
|
8ea09e0c95 | ||
|
|
854828e4ca | ||
|
|
bea1cf92d8 | ||
|
|
fa37d53cd9 | ||
|
|
344013d860 | ||
|
|
61a2e5297f | ||
|
|
93627d2bbe | ||
|
|
2ef451aa4a | ||
|
|
36b628df48 | ||
|
|
146e7866a6 | ||
|
|
6424667396 | ||
|
|
beecdc8d79 | ||
|
|
6ae8d6749a | ||
|
|
ba07b52cc2 | ||
|
|
87128ceee6 | ||
|
|
773c57e609 | ||
|
|
7c42162618 | ||
|
|
466a0015e9 | ||
|
|
359d4aca29 | ||
|
|
859e9f8b04 | ||
|
|
c5bf549dde | ||
|
|
3f5810bfdb | ||
|
|
5b86885cd1 | ||
|
|
600a7da670 | ||
|
|
f92bd6ffd3 | ||
|
|
aa0947061a | ||
|
|
e2c94b592f | ||
|
|
31799cd019 | ||
|
|
ec18e31ff1 | ||
|
|
5e772340bc | ||
|
|
5593f81242 | ||
|
|
3d0254bdeb | ||
|
|
bc103ce25c | ||
|
|
cfe9e2328f | ||
|
|
dd2627dbbc | ||
|
|
86d77103e9 | ||
|
|
8ecf246386 | ||
|
|
29ed39c7ae | ||
|
|
8d9e85f4f5 | ||
|
|
73df7b5deb | ||
|
|
cd8c9c5375 | ||
|
|
147b78ffce | ||
|
|
9c341cc9bc | ||
|
|
f506980e4d | ||
|
|
6c62be1818 | ||
|
|
e05146acf9 | ||
|
|
eaec26a012 | ||
|
|
3801ad3030 | ||
|
|
4da4673e24 | ||
|
|
a1782f31b2 | ||
|
|
f4d0ef19fb | ||
|
|
47430edf9f | ||
|
|
466ed10f3d | ||
|
|
0314b570cd | ||
|
|
18eb6b4ffd | ||
|
|
9a9424a975 | ||
|
|
51d6482ec2 | ||
|
|
334e612bce | ||
|
|
14e74376d9 | ||
|
|
58cf165eb4 | ||
|
|
7c07bc2717 | ||
|
|
83872046fa | ||
|
|
701ccfdbcc | ||
|
|
280d1907d8 | ||
|
|
8b759094f7 | ||
|
|
0aae535986 | ||
|
|
688f134051 | ||
|
|
03509e7f36 | ||
|
|
4660dd4970 | ||
|
|
12a84c01b1 | ||
|
|
06de5ffa07 | ||
|
|
7e0574cba2 | ||
|
|
b80578b1b9 | ||
|
|
36dd29c056 | ||
|
|
6f5cdb4674 | ||
|
|
c34c963121 | ||
|
|
36bcbe9d95 | ||
|
|
4634c74f9e | ||
|
|
c576bb611d | ||
|
|
5f86956a41 | ||
|
|
fd7c7ffd57 | ||
|
|
438169e64f | ||
|
|
598729f84c | ||
|
|
001c3304a2 | ||
|
|
eeeae65493 | ||
|
|
184b6c5bd0 | ||
|
|
70bc967219 | ||
|
|
944e605f06 | ||
|
|
d1372af581 | ||
|
|
3f4336697e | ||
|
|
789816084e | ||
|
|
ac94bbe575 | ||
|
|
539b834da9 | ||
|
|
094136daec | ||
|
|
5444bde283 | ||
|
|
8ade8fb2c5 | ||
|
|
844a68dae0 | ||
|
|
954705e3a0 | ||
|
|
dde19380e9 | ||
|
|
bb8cc0a305 | ||
|
|
45124c2245 | ||
|
|
6e8cc67824 | ||
|
|
c6a82ef199 | ||
|
|
bd700a5b29 | ||
|
|
1f1cff3389 | ||
|
|
d9d328173b | ||
|
|
6161531376 | ||
|
|
3807e98f23 | ||
|
|
889f20c4a7 | ||
|
|
8643bfc977 | ||
|
|
7fd5e18ef4 | ||
|
|
d753179d1e | ||
|
|
ff20ef26d8 | ||
|
|
bd3c877ca3 | ||
|
|
274c009f20 | ||
|
|
210426a020 | ||
|
|
c393db0b65 | ||
|
|
1390b57d3e | ||
|
|
4451403c1e | ||
|
|
38e03e6bb0 | ||
|
|
42ebc42c98 | ||
|
|
e1d22c74b0 | ||
|
|
9928579364 | ||
|
|
cfe2bbd75e | ||
|
|
8a81bea413 | ||
|
|
9216aa465f | ||
|
|
038087e076 | ||
|
|
de4436ccc0 | ||
|
|
5e30ad176a | ||
|
|
d011843113 | ||
|
|
0c0aec0f2a | ||
|
|
2bd6c5c664 | ||
|
|
eae0937db0 | ||
|
|
69e25cfefc | ||
|
|
163a699bff | ||
|
|
8b66932036 | ||
|
|
a2fce22973 | ||
|
|
206397dc86 | ||
|
|
ac3910580a | ||
|
|
bee1af427b | ||
|
|
ea0de4f831 | ||
|
|
5d095efe90 | ||
|
|
71765238b1 | ||
|
|
4feb0f209f | ||
|
|
7c607ad540 | ||
|
|
3f25d7ccc8 | ||
|
|
b2e72e1ca4 | ||
|
|
55fd8749c8 | ||
|
|
fd32a6f7d6 | ||
|
|
b981467f1e | ||
|
|
c219fe0d1d | ||
|
|
19b519638f | ||
|
|
85f56f4ed8 | ||
|
|
8f81b9c662 | ||
|
|
5c84de5400 | ||
|
|
b2c00b1e1a | ||
|
|
67072b99d4 | ||
|
|
07256c50ef | ||
|
|
6711a6bc7e | ||
|
|
39c61b9abd | ||
|
|
24ba7f08cf | ||
|
|
fb8e80c09c | ||
|
|
240f67f15c | ||
|
|
8d18626659 | ||
|
|
a5b22cffa2 | ||
|
|
9f8202bc4f | ||
|
|
bdd513b212 | ||
|
|
3062a47b3b | ||
|
|
de870c843e | ||
|
|
9c32e32097 | ||
|
|
f61db8ed3f | ||
|
|
9e1711cbb9 | ||
|
|
c941b5333c | ||
|
|
8d934df0c0 | ||
|
|
2f0937951a | ||
|
|
a676537e26 | ||
|
|
b071220b6c | ||
|
|
dafc1e0c7d | ||
|
|
5a07579b73 | ||
|
|
0148669e98 | ||
|
|
d1348bb26a | ||
|
|
eadab13d1c | ||
|
|
75ace74d37 | ||
|
|
1ef4c43382 | ||
|
|
c1e9f2de6a | ||
|
|
55b36d44fa | ||
|
|
d2201cbb79 | ||
|
|
934949725b | ||
|
|
57972c6653 | ||
|
|
0f6428eed0 | ||
|
|
6e89ef62e4 | ||
|
|
b266e336b5 | ||
|
|
e135153c45 | ||
|
|
28cae124d1 | ||
|
|
94d8b4a122 | ||
|
|
ce835418cb | ||
|
|
3aa7a52c21 | ||
|
|
2bc3480396 | ||
|
|
7893f387d5 | ||
|
|
00187269de | ||
|
|
b3833fcf1a | ||
|
|
923972dd49 | ||
|
|
f19bad3761 | ||
|
|
b5cc24fcff | ||
|
|
d414d52156 | ||
|
|
85c0eaa598 | ||
|
|
d409a71000 | ||
|
|
0a716c253b | ||
|
|
13fd6bd6e1 | ||
|
|
b0f0940534 | ||
|
|
dc284d9cbb | ||
|
|
0a86360948 | ||
|
|
aff717ffce | ||
|
|
e49900f927 | ||
|
|
5e301133ff | ||
|
|
5b684cca9a | ||
|
|
3d36779e19 | ||
|
|
eaf54ca525 | ||
|
|
ba7a598b2e | ||
|
|
dce4b2288b | ||
|
|
2a847eebb9 | ||
|
|
25f93e8b94 | ||
|
|
7328aa7df5 | ||
|
|
d75dd71848 | ||
|
|
a8dca61a3c | ||
|
|
d32d5b8bac | ||
|
|
3d5c790fb6 | ||
|
|
5af88de27b | ||
|
|
997a7bc60f | ||
|
|
bfbd7b53a1 | ||
|
|
1dec80902d | ||
|
|
0478d99aac | ||
|
|
db9677bb4a | ||
|
|
0e32edb603 | ||
|
|
82e1be2839 | ||
|
|
ab8bec8866 | ||
|
|
3b8fa8b4ce | ||
|
|
c4cb3df306 | ||
|
|
efd5c33a92 | ||
|
|
f589103f5d | ||
|
|
19175e9bde | ||
|
|
3137aaa660 | ||
|
|
cfda69a120 | ||
|
|
1027b7de72 | ||
|
|
fb1888f01f | ||
|
|
f61e9d389f | ||
|
|
936b02865f | ||
|
|
cbd3516fc4 | ||
|
|
c2d6f740a1 | ||
|
|
305a04ce69 | ||
|
|
fdd7d6afa4 | ||
|
|
1a51f77fce | ||
|
|
8ea8db7994 | ||
|
|
cd906b0a6f | ||
|
|
85fa644aca | ||
|
|
839d3f89d8 | ||
|
|
52a06b5cdc | ||
|
|
5065239266 | ||
|
|
13426eac50 | ||
|
|
c5f90272d1 | ||
|
|
e0d6c2a4cd | ||
|
|
3c76942799 | ||
|
|
4ff888b2b0 | ||
|
|
a0eaf077de | ||
|
|
726f94e2a2 | ||
|
|
19771b171c | ||
|
|
b4223967e8 | ||
|
|
e57283460a | ||
|
|
78edaf5edc | ||
|
|
91f0d40d1a | ||
|
|
dacccf1415 | ||
|
|
8fcb76e300 | ||
|
|
24906e6fa5 | ||
|
|
570065175c | ||
|
|
e84a293642 | ||
|
|
41559d8742 | ||
|
|
6e898ae52d | ||
|
|
288d929477 | ||
|
|
807fbd4d89 | ||
|
|
6ce47e5cd9 | ||
|
|
712d5fbfa7 | ||
|
|
8d3380b388 | ||
|
|
c9855a2671 | ||
|
|
c887f0ce5b | ||
|
|
64ee0015d1 | ||
|
|
1b598ad87e | ||
|
|
c9f536c635 | ||
|
|
742f4fe36d | ||
|
|
fc34c05a2f | ||
|
|
84055a420b | ||
|
|
e5ec08ff9d | ||
|
|
06267f5a03 | ||
|
|
824bec2784 | ||
|
|
cb81f7b057 | ||
|
|
ce43b10b5b | ||
|
|
0349383d08 | ||
|
|
777e1dc48c | ||
|
|
fe8727bd94 | ||
|
|
6a531ca57c | ||
|
|
1d9c15b1cc | ||
|
|
fc4ac803aa | ||
|
|
870f1095cd | ||
|
|
4e969a3701 | ||
|
|
0a603449ad | ||
|
|
d51640c2f0 | ||
|
|
be8695777c | ||
|
|
eb825ae619 | ||
|
|
40a4a6a1a8 | ||
|
|
07dfa6f296 | ||
|
|
cb52cb2549 | ||
|
|
26b73b0745 | ||
|
|
fead0c5ad9 | ||
|
|
c3652786ff | ||
|
|
3bd6c363de | ||
|
|
48b6654ad2 | ||
|
|
2075f9fa71 | ||
|
|
96fdb6169a | ||
|
|
6d47a5477a | ||
|
|
d3b80b26e3 | ||
|
|
3ede1a0b53 | ||
|
|
aebd7657ef | ||
|
|
15938a12be | ||
|
|
f2cfd90c46 | ||
|
|
f3a55d96f5 | ||
|
|
392ca87dab | ||
|
|
ff48421e4f | ||
|
|
f6579184a2 | ||
|
|
c0c68f6acd | ||
|
|
f2fd376363 | ||
|
|
9999a2b126 | ||
|
|
2817bf4d62 | ||
|
|
845bb466c6 | ||
|
|
f64df97652 | ||
|
|
9c6b2c3e81 | ||
|
|
83e8799610 | ||
|
|
80f8c0399b | ||
|
|
f6b5840e0e | ||
|
|
b5dec2e935 | ||
|
|
79bb68d784 | ||
|
|
976116a012 | ||
|
|
64c51a49a0 | ||
|
|
cc0b808962 | ||
|
|
9b567f9ba3 | ||
|
|
9a36b005a1 | ||
|
|
2390368d03 | ||
|
|
64106cba82 | ||
|
|
69cb20e1cd | ||
|
|
2a7bf7fb5b | ||
|
|
dc744f236e | ||
|
|
9724afd9ec | ||
|
|
34e7467d16 | ||
|
|
7eccb6fc7a | ||
|
|
0445e89747 | ||
|
|
953ab958d5 | ||
|
|
5e13152c73 | ||
|
|
8c98c7df29 | ||
|
|
cedc4f710e | ||
|
|
13d61bd866 | ||
|
|
c6c9839208 | ||
|
|
2ff439dc47 | ||
|
|
dad8cbecc1 | ||
|
|
8f8b200f24 | ||
|
|
8dec9d5fe9 | ||
|
|
e671c913ab | ||
|
|
9d46fae865 | ||
|
|
315caaba1c | ||
|
|
7af4ffe341 | ||
|
|
8bf730baae | ||
|
|
0b3826d2dd | ||
|
|
d055ba1c3b | ||
|
|
649e7e103d | ||
|
|
bcdfb212fc | ||
|
|
947bf10c2f | ||
|
|
2e48b583c0 | ||
|
|
55dc5dc19d | ||
|
|
04c80915e5 | ||
|
|
be36b4aac1 | ||
|
|
2ce16bcdb7 | ||
|
|
1683f191a9 | ||
|
|
70d93a0bfc | ||
|
|
6514712054 | ||
|
|
e0a1b478a1 | ||
|
|
be5d58c849 | ||
|
|
e4f9c02d11 | ||
|
|
b8d720d06f | ||
|
|
5c1713f274 | ||
|
|
913615f1c2 | ||
|
|
9e8b0d2807 | ||
|
|
0b5749d491 | ||
|
|
23a9fa40e7 | ||
|
|
38b0d427f8 | ||
|
|
e02977edc0 | ||
|
|
24d7232559 | ||
|
|
e4ea8d2abd | ||
|
|
ebd1a6406b | ||
|
|
d1ee9ebbd9 | ||
|
|
5079ee67c3 | ||
|
|
9592fab414 | ||
|
|
f36858d074 | ||
|
|
1b8bb7c445 | ||
|
|
f499ff81f2 | ||
|
|
e80c7b6b45 | ||
|
|
f3babcb46e | ||
|
|
95e82ca359 | ||
|
|
8888739867 | ||
|
|
db6e9b6962 | ||
|
|
a0832d3fb6 | ||
|
|
1c77887629 | ||
|
|
dcd0ca8daa | ||
|
|
304981fcf2 | ||
|
|
f1bb533321 | ||
|
|
2c49df4be3 | ||
|
|
90502f7553 | ||
|
|
18f5c7f691 | ||
|
|
649606f32e | ||
|
|
0f54cc147e | ||
|
|
7781f41ebf | ||
|
|
2d2cb22806 | ||
|
|
ac10c988b9 | ||
|
|
83de1686c0 | ||
|
|
145347f7ae | ||
|
|
b8b6dbe791 | ||
|
|
d21201e996 | ||
|
|
dc35fc450b | ||
|
|
c4140dd38b | ||
|
|
ba2ef23414 | ||
|
|
3781d1e06b | ||
|
|
082a78bd92 | ||
|
|
7bfd0823db | ||
|
|
013ffe1626 | ||
|
|
b2006f2466 | ||
|
|
7d8931696d | ||
|
|
e88812458e | ||
|
|
ada42f6e94 | ||
|
|
34c3b50b48 | ||
|
|
63c36d0dbf | ||
|
|
bd80bb6bb3 | ||
|
|
8f98866d71 | ||
|
|
26bf05dd7e | ||
|
|
b815718c26 | ||
|
|
d7994ca67d | ||
|
|
b95a1fb604 | ||
|
|
b04bb2ef8d | ||
|
|
066aeec1e6 | ||
|
|
d6e46d73b5 | ||
|
|
7b767df0b5 | ||
|
|
ed36447bdf | ||
|
|
0f90af3c7d | ||
|
|
f50a8e5252 | ||
|
|
1d8ca28152 | ||
|
|
6c4129d02a | ||
|
|
9b4574ad06 | ||
|
|
4543b32bef | ||
|
|
ff69f6ed7f | ||
|
|
92a2b83bc8 | ||
|
|
30b65028fe | ||
|
|
4b72b291ef | ||
|
|
59ebe30b72 | ||
|
|
814f6213fa | ||
|
|
dce3ee440b | ||
|
|
b87d14cd61 | ||
|
|
5c10c78595 | ||
|
|
a793cf4ac2 | ||
|
|
010732108c | ||
|
|
296d103f68 | ||
|
|
1f590c45be | ||
|
|
48b816fb36 | ||
|
|
d11b5b3e02 | ||
|
|
8f8787b2e0 | ||
|
|
7581802498 | ||
|
|
371523d756 | ||
|
|
1456be9feb | ||
|
|
62f57b134a | ||
|
|
84127d7a80 | ||
|
|
8fc3f1ccbd | ||
|
|
c946f10d0c | ||
|
|
e03ef0b739 | ||
|
|
55b92ab263 | ||
|
|
fbc625478b | ||
|
|
4da8aab44f | ||
|
|
d9fd967c48 | ||
|
|
ab86fc9a5e | ||
|
|
8fb095e2f4 | ||
|
|
2fe84b7510 | ||
|
|
46ef13dd0f | ||
|
|
49b56d9b52 | ||
|
|
cff654ae69 | ||
|
|
7abb4072b5 | ||
|
|
d91fd0027a | ||
|
|
8f17f7297d | ||
|
|
aa8c31e79b | ||
|
|
cfc768caa9 | ||
|
|
c48bd9b840 | ||
|
|
c09919055a | ||
|
|
d35f1ea802 | ||
|
|
cfbf3cd4b3 | ||
|
|
a46103fc8c | ||
|
|
d032956124 | ||
|
|
ff93b38d23 | ||
|
|
5b02ee5169 | ||
|
|
aa770689f5 | ||
|
|
de67fff731 | ||
|
|
7799783c9a | ||
|
|
c854565e30 | ||
|
|
52e9d37b93 | ||
|
|
e94cb34a25 | ||
|
|
f541e7105e | ||
|
|
4060e29c63 | ||
|
|
d913285523 | ||
|
|
d98d1193fc | ||
|
|
e23b406364 | ||
|
|
0b27fc39e6 | ||
|
|
704ca4eae2 | ||
|
|
1fc3cfee68 | ||
|
|
8fb446ad47 | ||
|
|
66ff661ff5 | ||
|
|
57e69080c9 | ||
|
|
d78f7a9303 | ||
|
|
47cb34d26b | ||
|
|
8354797406 | ||
|
|
87ae1c6a9b | ||
|
|
5fb7d43aff | ||
|
|
115c391191 | ||
|
|
c73fa4b0f6 | ||
|
|
f5894ac3c2 | ||
|
|
bcbeda5102 | ||
|
|
8891c305e3 | ||
|
|
c62f98db95 | ||
|
|
96bca43089 | ||
|
|
9ffd42d477 | ||
|
|
c57f051863 | ||
|
|
ab04874c11 | ||
|
|
481a47b638 | ||
|
|
df2ef04558 | ||
|
|
c3ad095553 | ||
|
|
3f2dbfbbd2 | ||
|
|
8eca70c338 | ||
|
|
ba7302a197 | ||
|
|
d15b0a0285 | ||
|
|
3796a5ef97 | ||
|
|
5a48376a77 | ||
|
|
61669a73d9 | ||
|
|
5a2385c66b | ||
|
|
d7721065dc | ||
|
|
025f2507f4 | ||
|
|
563fb3ff5c | ||
|
|
9646ec5edd | ||
|
|
cc990a1181 | ||
|
|
c4ddb7d351 | ||
|
|
ab0047a9b7 | ||
|
|
39ec10cbba | ||
|
|
65b6513207 | ||
|
|
beb4494534 | ||
|
|
983ff901f2 | ||
|
|
5d66473a4f | ||
|
|
ff1e04b957 | ||
|
|
53c4c6cbb8 | ||
|
|
47736603af | ||
|
|
b6e5a5e655 | ||
|
|
84018f5b61 | ||
|
|
592d3afe6d | ||
|
|
2bd2ec7a2e | ||
|
|
f25d2b3a86 | ||
|
|
886cea56f3 | ||
|
|
ed21efc003 | ||
|
|
c379cca2e5 | ||
|
|
efa04b4cd8 | ||
|
|
35a214603f | ||
|
|
3acc96cab1 | ||
|
|
14247fa75a | ||
|
|
6efec9d280 | ||
|
|
063253d5e7 | ||
|
|
f773604dec | ||
|
|
25d43354b3 | ||
|
|
b59ec5e78b | ||
|
|
f7ad935dfb | ||
|
|
1a210ae684 | ||
|
|
92c666692d | ||
|
|
761f0a78f4 | ||
|
|
0027a0af40 | ||
|
|
4f45cf1386 | ||
|
|
9dfa685fb1 | ||
|
|
40d2ef4f0a | ||
|
|
8e5a877997 | ||
|
|
d1b3f77feb | ||
|
|
a5b7234d6f | ||
|
|
398991f3c1 | ||
|
|
d01b93ae5f | ||
|
|
b31d9761fa | ||
|
|
1ba403db7b | ||
|
|
96cd135f82 | ||
|
|
c85cd4ac24 | ||
|
|
177546bab6 | ||
|
|
29e2c982d4 | ||
|
|
bc301f269a | ||
|
|
d09253e532 | ||
|
|
034079b441 | ||
|
|
22f0e2615f | ||
|
|
45bab578c4 | ||
|
|
e8de6f0ace | ||
|
|
13c2ce3f31 | ||
|
|
3bf9a3833a | ||
|
|
c035bf2d37 | ||
|
|
2b9ab05888 | ||
|
|
a8153dd8db | ||
|
|
ebe70a52d1 | ||
|
|
2282e72d03 | ||
|
|
5a590512bd | ||
|
|
6131181ea4 | ||
|
|
78946c11ea | ||
|
|
f59abe23c3 | ||
|
|
74412766fa | ||
|
|
39b0401c55 | ||
|
|
5f0e8d3d8e | ||
|
|
01ca13cccb | ||
|
|
6a9badd31b | ||
|
|
7db5d6a307 | ||
|
|
bb2049411b | ||
|
|
653ae777d5 | ||
|
|
ec803d63c8 | ||
|
|
412d80efe3 | ||
|
|
b1d662a5b1 | ||
|
|
12d9d59d85 | ||
|
|
b13e719ab3 | ||
|
|
451aea87aa | ||
|
|
d55cac80bf | ||
|
|
a1ecdc9bfa | ||
|
|
0e8c1cb0fd | ||
|
|
1c724280f5 | ||
|
|
9ff8246a9d | ||
|
|
2c45956030 | ||
|
|
1c267a55d5 | ||
|
|
f60bdc3dd4 | ||
|
|
030dfc2370 | ||
|
|
3295ea84a4 | ||
|
|
ef2041b919 | ||
|
|
4634085402 | ||
|
|
411140c3ea | ||
|
|
638cd1dd48 | ||
|
|
e3e6b23b7c | ||
|
|
ac5a3e7a65 | ||
|
|
106c316442 | ||
|
|
db229cf1bf | ||
|
|
94f66b812a | ||
|
|
a314106b7e | ||
|
|
8d72bc0ea4 | ||
|
|
1533c9315f | ||
|
|
70405045d7 | ||
|
|
3d623506a8 | ||
|
|
11df74c292 | ||
|
|
a935d69408 | ||
|
|
cffe0196e2 | ||
|
|
ac2a9deb75 | ||
|
|
282e0adfe2 | ||
|
|
ce60bcedb0 | ||
|
|
c9fd409650 | ||
|
|
8a908aa33f | ||
|
|
f9a5242e75 | ||
|
|
7dabcc00ed | ||
|
|
18f4e9db31 | ||
|
|
593ab6b014 | ||
|
|
656c33e942 | ||
|
|
4330338285 | ||
|
|
44c41d52b2 | ||
|
|
449a3f479f | ||
|
|
159a7c4947 | ||
|
|
30f442d774 | ||
|
|
e8685de7f7 | ||
|
|
4c08b591f1 | ||
|
|
16528888df | ||
|
|
738b5f5707 | ||
|
|
17343210c0 | ||
|
|
43aa2f5cd9 | ||
|
|
423cd20922 | ||
|
|
69d5ef36e2 | ||
|
|
0dd17cc175 | ||
|
|
16e56c4edb | ||
|
|
f46b876fd6 | ||
|
|
1181ab67ba | ||
|
|
014c26be25 | ||
|
|
99eb9429fd | ||
|
|
d3b10d0d4d | ||
|
|
d9597d5ad5 | ||
|
|
55272e5ea2 | ||
|
|
d17fc86fa4 | ||
|
|
0b391584d4 | ||
|
|
e3e02aa30b | ||
|
|
403f53a397 | ||
|
|
bfd79e1af2 | ||
|
|
5745a984aa | ||
|
|
d2f1f67a22 | ||
|
|
d98cb50d7a | ||
|
|
cc4864976a | ||
|
|
92fa8b7421 | ||
|
|
aad2e8012b | ||
|
|
b3eae80ece | ||
|
|
b58d5b6066 | ||
|
|
f1b6e6570c | ||
|
|
8e758507b1 | ||
|
|
2601d8b702 | ||
|
|
fa0545e4b3 | ||
|
|
690208fd4e | ||
|
|
3272575f70 | ||
|
|
fad3142a47 | ||
|
|
1f74dcff14 | ||
|
|
62c7183922 | ||
|
|
ef73b0a07f | ||
|
|
ec7d42d1fd | ||
|
|
256a17f2c9 | ||
|
|
165ffed9e6 | ||
|
|
b89d6d78ef | ||
|
|
6890561723 | ||
|
|
849ce04def | ||
|
|
a29baf19d0 | ||
|
|
10d6a1fa54 | ||
|
|
6ea181c286 | ||
|
|
2d890603c6 | ||
|
|
d1ca30a28f | ||
|
|
35fccf8af8 | ||
|
|
f5baa56e05 | ||
|
|
d2c1be5c2d | ||
|
|
fd6525a9de | ||
|
|
ba03a134da | ||
|
|
9184c64ecb | ||
|
|
653a9664e4 | ||
|
|
51d0cedb29 | ||
|
|
fa6d1bb23c | ||
|
|
0f3b154699 | ||
|
|
d6e2b096ca | ||
|
|
2104a1250e | ||
|
|
ca99f60964 | ||
|
|
147c08bd71 | ||
|
|
ad440f70fa | ||
|
|
bb22155482 | ||
|
|
5c1999b3d0 | ||
|
|
87f0fcfd52 | ||
|
|
f6d53bc337 | ||
|
|
720fad80c3 | ||
|
|
196055e50e | ||
|
|
73125574e6 | ||
|
|
27a35a0388 | ||
|
|
8c6085b933 | ||
|
|
bef14f551e | ||
|
|
e56c2eb6ca | ||
|
|
165365473f | ||
|
|
3bdd9a850f | ||
|
|
b84ea020f2 | ||
|
|
90efc5740f | ||
|
|
c78e6588ad | ||
|
|
a21a3827fd | ||
|
|
2effbd0baf | ||
|
|
7ed03c8b90 | ||
|
|
59ce90e924 | ||
|
|
da38e6a23d | ||
|
|
698e5ec6ea | ||
|
|
7f25e3ba97 | ||
|
|
1a3500cad3 | ||
|
|
31c30a7602 | ||
|
|
014f3b9873 | ||
|
|
49cbcf01c6 | ||
|
|
f8cc129f04 | ||
|
|
236c1208e6 | ||
|
|
4c70e75bfc | ||
|
|
e8c5f3a882 | ||
|
|
302df56ee1 | ||
|
|
ccfc4d68f3 | ||
|
|
071ea1dc97 | ||
|
|
670033c4da | ||
|
|
fa7e4cc817 | ||
|
|
67c8d80190 | ||
|
|
792ce53992 | ||
|
|
b0a25f59d9 | ||
|
|
d76234c112 | ||
|
|
6fdfd3b9e7 | ||
|
|
38350a1ae4 | ||
|
|
ce2bba751c | ||
|
|
f149736a20 | ||
|
|
40330be123 | ||
|
|
93af4fc6b0 | ||
|
|
b574d4e388 | ||
|
|
eb4b429e19 | ||
|
|
21929b1db2 | ||
|
|
a5197ee039 | ||
|
|
e974981725 | ||
|
|
9ae4dd3dfe | ||
|
|
d0e4dabe90 | ||
|
|
a3c569137e | ||
|
|
3edb360d79 | ||
|
|
f5285b48b1 | ||
|
|
c01b76e098 | ||
|
|
6adb47c447 | ||
|
|
b0b2d3a727 | ||
|
|
8410d7b08e | ||
|
|
e6408a0c37 | ||
|
|
e96c82b171 | ||
|
|
ee31813a0d | ||
|
|
ac62fd6204 | ||
|
|
25fbcc144c | ||
|
|
30cb7e62fd | ||
|
|
7c7ccc3a07 | ||
|
|
fb3f4fa0a8 | ||
|
|
2b62244806 | ||
|
|
f5dc197e8b | ||
|
|
e6060048bd | ||
|
|
f83ff068ae | ||
|
|
b21a6b76e0 | ||
|
|
70527022d9 | ||
|
|
8cddd595d4 | ||
|
|
96b79d5f06 | ||
|
|
1c7b07d614 | ||
|
|
0d59de5767 | ||
|
|
e3613c54e9 | ||
|
|
5956e6d9c1 | ||
|
|
ec895f271b | ||
|
|
751f30e316 | ||
|
|
cee8253cd3 | ||
|
|
ae4cb6e372 | ||
|
|
398f976f3e | ||
|
|
5f049beb04 | ||
|
|
a8d67a1c60 | ||
|
|
26aa9727a1 | ||
|
|
3cef696a65 | ||
|
|
397b1533f0 | ||
|
|
5680a34ec1 | ||
|
|
84a197299f | ||
|
|
4307882fa8 | ||
|
|
d2dfbff832 | ||
|
|
8cc58d0b89 | ||
|
|
971fc462ab | ||
|
|
8d2256d359 | ||
|
|
8f3b863edd | ||
|
|
4cc6c5ec35 | ||
|
|
cf53614721 | ||
|
|
efe84e58d7 | ||
|
|
cf59ad76fb | ||
|
|
2216cda2f1 | ||
|
|
595b15fcd9 | ||
|
|
a104c7f0f8 | ||
|
|
059392d257 | ||
|
|
5a1b3da394 | ||
|
|
92d7c2926c | ||
|
|
8f39697e3d | ||
|
|
ff328381af | ||
|
|
3bb3c06456 | ||
|
|
1cbcd41b17 | ||
|
|
5ebd9eb577 | ||
|
|
850d9ee095 | ||
|
|
5db1f91b01 | ||
|
|
ac6b9712ad | ||
|
|
df93f4ba99 | ||
|
|
7c20d46eeb | ||
|
|
fe432fcca8 | ||
|
|
5b1638ea59 | ||
|
|
87a1d4088b | ||
|
|
038c346500 | ||
|
|
0bcaa13056 | ||
|
|
c0e62372e6 | ||
|
|
84169cce10 | ||
|
|
c2c163ac4e | ||
|
|
ecb5d2ae1c | ||
|
|
3d619f1670 | ||
|
|
3265549911 | ||
|
|
d5c3a3e5e8 | ||
|
|
30dff09d7e | ||
|
|
85f7d19eb2 | ||
|
|
6adda5c29c | ||
|
|
4a03756b5b | ||
|
|
b1554ebf37 | ||
|
|
b6307b4fd6 | ||
|
|
6f22c7ad19 | ||
|
|
bc9add783c | ||
|
|
ee67221068 | ||
|
|
71e528139c | ||
|
|
c674fe1f04 | ||
|
|
d047e95bb5 | ||
|
|
791518d6c4 | ||
|
|
83afd55e0e | ||
|
|
7870a66790 | ||
|
|
c923e96f3e | ||
|
|
dd79834137 | ||
|
|
8995f0af55 | ||
|
|
e75a74565b | ||
|
|
1792849b98 | ||
|
|
c7fb1f6d17 | ||
|
|
a856263081 | ||
|
|
582d1320a3 | ||
|
|
3789da4305 | ||
|
|
1e58ae0e63 | ||
|
|
618329c7e0 | ||
|
|
a36f97adfb | ||
|
|
2cda53d3af | ||
|
|
74007ea465 | ||
|
|
c88a7dba6b | ||
|
|
66b7863d43 | ||
|
|
19b318a488 | ||
|
|
c606e3db43 | ||
|
|
f89ab74b29 | ||
|
|
4bbdec5044 | ||
|
|
56a727cf0d | ||
|
|
32f74e41ef | ||
|
|
e249bc5856 | ||
|
|
32b8a344a6 | ||
|
|
61c0c35e92 | ||
|
|
2eecaf4570 | ||
|
|
8f59247acb | ||
|
|
eb3ec26279 | ||
|
|
f07d37ce0d | ||
|
|
2e8602eb43 | ||
|
|
4277041b0e | ||
|
|
6801190180 | ||
|
|
067a9cf54d | ||
|
|
d31a8c203f | ||
|
|
99e8a393b6 | ||
|
|
42ba0a2642 | ||
|
|
cc0cd51658 | ||
|
|
9d3014e39c | ||
|
|
1ac3a9da4f | ||
|
|
7c80bbecd9 | ||
|
|
d55e6191c2 | ||
|
|
3875603285 | ||
|
|
a62261343c | ||
|
|
8b0a995f23 | ||
|
|
4734cb3428 | ||
|
|
34f814717b | ||
|
|
d4b56f99ff | ||
|
|
f51d51abf4 | ||
|
|
a13a0ee5a9 | ||
|
|
19f4ad0361 | ||
|
|
93dc96f150 | ||
|
|
64d9e9054c | ||
|
|
b1ed7227d7 | ||
|
|
48215c1eae | ||
|
|
7399a978f5 | ||
|
|
3737ad6524 | ||
|
|
b37695bc6f | ||
|
|
6e97d588e4 | ||
|
|
17319b15b0 | ||
|
|
0692afcd90 | ||
|
|
91ac3f7931 | ||
|
|
9d5990311f | ||
|
|
6f38cdec5a | ||
|
|
7a1f3a0cb1 | ||
|
|
99356f7880 | ||
|
|
d38d7b8ff6 | ||
|
|
834ac42d24 | ||
|
|
e80fac4900 | ||
|
|
a13c8cb71e | ||
|
|
3dc61962de | ||
|
|
5c3acf61b4 | ||
|
|
953d835ded | ||
|
|
1537ca4e71 | ||
|
|
2d94ace89f | ||
|
|
ea9c0b919f | ||
|
|
d178fa5bdb | ||
|
|
01f11d94b0 | ||
|
|
58f1a8e916 | ||
|
|
688fefc4dd | ||
|
|
ce96e34d25 | ||
|
|
a1e1d663c3 | ||
|
|
245b52d8e2 | ||
|
|
1de93be0f0 | ||
|
|
e723e87c74 | ||
|
|
c9535749f5 | ||
|
|
497a66ea38 | ||
|
|
62d9735a7e | ||
|
|
0f8fbf6a1e | ||
|
|
66c2d1cba1 | ||
|
|
69cde6092b | ||
|
|
3e9face818 | ||
|
|
4dfac02065 | ||
|
|
7551509f41 | ||
|
|
5f42866cea | ||
|
|
50d91670ec | ||
|
|
8c04421387 | ||
|
|
c39be3dbc9 | ||
|
|
8aa8c296e1 | ||
|
|
592c55c524 | ||
|
|
eafaf35790 | ||
|
|
585c66a4d0 | ||
|
|
1ecedd5566 | ||
|
|
3a0a5a7754 | ||
|
|
d329406eb8 | ||
|
|
e654999fdf | ||
|
|
efe98f7fad | ||
|
|
87bc957662 | ||
|
|
15e93d6304 | ||
|
|
5471735419 | ||
|
|
6b2955f135 | ||
|
|
1ab0a5182f | ||
|
|
dad65998cc | ||
|
|
abd30f3e41 | ||
|
|
7f42d9784e | ||
|
|
1056dac070 | ||
|
|
c05622484d | ||
|
|
59659a13f1 | ||
|
|
73c6cbb562 | ||
|
|
9f724221fa | ||
|
|
dfcd86ea09 | ||
|
|
555393d328 | ||
|
|
febacfcb79 | ||
|
|
1891bd494c | ||
|
|
ba5d53914e | ||
|
|
2ae38e20ab | ||
|
|
5f14b2e738 | ||
|
|
bc53951648 | ||
|
|
9a323e3387 | ||
|
|
72fe972cc0 | ||
|
|
88dfd90e3b | ||
|
|
1f9c1ce8e4 | ||
|
|
b4d75e3240 | ||
|
|
def0d7a519 | ||
|
|
a9cc4dabb7 | ||
|
|
e29e8ca0a3 | ||
|
|
5cda4135b1 | ||
|
|
221e153f4c | ||
|
|
3a24e4703d | ||
|
|
2b158c2b4e | ||
|
|
8b715ad9cd | ||
|
|
07cf527ddf | ||
|
|
63f1429a69 | ||
|
|
d881fc2fe0 | ||
|
|
d5090ee24b | ||
|
|
56c0a78c64 | ||
|
|
47037220e0 | ||
|
|
640fade438 | ||
|
|
98ede836d4 | ||
|
|
e75916fd92 | ||
|
|
e01ed8ad3c | ||
|
|
3beea79b38 | ||
|
|
1a29870958 | ||
|
|
7f3fae5a02 | ||
|
|
c2adf56b2f | ||
|
|
7a8f5a606c | ||
|
|
462c17a0c3 | ||
|
|
e59e3019e3 | ||
|
|
d65e2ab2d4 | ||
|
|
3f6120e122 | ||
|
|
e66e5e6f6e | ||
|
|
b0bc57466e | ||
|
|
154dc555c5 | ||
|
|
36559d0264 | ||
|
|
a722ce460c | ||
|
|
67b2f28064 | ||
|
|
8b988409e2 | ||
|
|
57c4658021 | ||
|
|
283bfde3d9 | ||
|
|
41935aa9aa | ||
|
|
9206d1f5f1 | ||
|
|
f5381ae3e3 | ||
|
|
95c4bf5854 | ||
|
|
2b4b23f726 | ||
|
|
64c17767ed | ||
|
|
32d75749a0 | ||
|
|
e776f9c7d8 | ||
|
|
3bdcf1077b | ||
|
|
da550a4a67 | ||
|
|
1655594514 | ||
|
|
c4f884f104 | ||
|
|
855f3d74fe | ||
|
|
7fc140af01 | ||
|
|
d401474981 | ||
|
|
0f6563e8e0 | ||
|
|
6cd0f83496 | ||
|
|
b428fc97e9 | ||
|
|
c14c51f551 | ||
|
|
8e18104f38 | ||
|
|
06fcc2bf46 | ||
|
|
1656b4c5b9 | ||
|
|
431f7ab37c | ||
|
|
f44109abae | ||
|
|
8cb134f56b | ||
|
|
032aa2d1d6 | ||
|
|
cbe20d9c96 | ||
|
|
e6b74b10eb | ||
|
|
8c4dbbfbec | ||
|
|
9bde15d4ac | ||
|
|
fd32dad7eb | ||
|
|
64df515c63 | ||
|
|
8908bd9889 | ||
|
|
5c3159cbca | ||
|
|
9afe72d508 | ||
|
|
c002d2c99f | ||
|
|
c768b6bd0c | ||
|
|
7903fe52b4 | ||
|
|
313b1b39a7 | ||
|
|
648f3abcbd | ||
|
|
2db98715cc | ||
|
|
5e3da57e21 | ||
|
|
dceef35aac | ||
|
|
2d23952181 | ||
|
|
518da7e81d | ||
|
|
8db1eb69dc | ||
|
|
d16ebba9e0 | ||
|
|
ee0420188c | ||
|
|
b9d14d31ae | ||
|
|
c505875fef | ||
|
|
6029f0ed36 | ||
|
|
734bed4821 | ||
|
|
26b3185933 | ||
|
|
5efa9ff0b2 | ||
|
|
ac6a013bf5 | ||
|
|
d9c4abe0df | ||
|
|
ae9e257e56 | ||
|
|
bb82a9bcf4 | ||
|
|
df61ea0a62 | ||
|
|
371926b202 | ||
|
|
fe77a7e01a | ||
|
|
e6b43e19c2 | ||
|
|
96b2145ba1 | ||
|
|
feb950be3c | ||
|
|
5b02bda277 | ||
|
|
ce4643d650 | ||
|
|
55c311cd39 | ||
|
|
8f8bfb9446 | ||
|
|
8f2a33dcaa | ||
|
|
4946daeea4 | ||
|
|
38ecc82e97 | ||
|
|
7ec8d02c1f | ||
|
|
a047ff2228 | ||
|
|
3dd181c912 | ||
|
|
3753ecd8e5 | ||
|
|
eaf05aa31a | ||
|
|
ad0f965f3a | ||
|
|
53e68c0567 | ||
|
|
9f609ac80f | ||
|
|
2b04d7a92d | ||
|
|
8f7305e347 | ||
|
|
9d3720557e | ||
|
|
aa79325d76 | ||
|
|
15b7b20500 | ||
|
|
6290630787 | ||
|
|
ad9e7b5eae | ||
|
|
fa31fbb343 | ||
|
|
ca7b6f139f | ||
|
|
a6e8cbc50d | ||
|
|
368640b59b | ||
|
|
22cb0b6afb | ||
|
|
08a7394c1b | ||
|
|
8a2fd5bf5e | ||
|
|
7add40ae93 | ||
|
|
d4da98bae5 | ||
|
|
92bbd83b33 | ||
|
|
b0c647e50c | ||
|
|
1ddd94b95c | ||
|
|
845c6be95f | ||
|
|
63d989cab4 | ||
|
|
92daf156f5 | ||
|
|
d0822ab1fe | ||
|
|
65cda38cc8 | ||
|
|
dcc1d545e9 | ||
|
|
e13967cb83 | ||
|
|
46d1bc274c | ||
|
|
81551104ce | ||
|
|
8b10fe4053 | ||
|
|
b5bd2df814 | ||
|
|
32ddf3246c | ||
|
|
8ccc996e63 | ||
|
|
bd7150d676 | ||
|
|
c35e70173b | ||
|
|
86f209a302 | ||
|
|
44943feb8b | ||
|
|
4331e9ae80 | ||
|
|
9ae97de780 | ||
|
|
d941b31c45 | ||
|
|
fed254f355 | ||
|
|
7f53877283 | ||
|
|
ca3a436fe5 | ||
|
|
d48ef90fb0 | ||
|
|
29bbe84f69 | ||
|
|
d079f0ca44 | ||
|
|
394f52a725 | ||
|
|
5828508218 | ||
|
|
2f244bca85 | ||
|
|
064d638588 | ||
|
|
7856495d59 | ||
|
|
c3bded6947 | ||
|
|
3a584e318a | ||
|
|
48d744b6bd | ||
|
|
6eba8130ba | ||
|
|
5ac7eddd03 | ||
|
|
b5dfe6320d | ||
|
|
19ee55a303 | ||
|
|
b715a008c5 | ||
|
|
1d4b834204 | ||
|
|
aa271423f9 | ||
|
|
0354026292 | ||
|
|
93752fb6cb | ||
|
|
7da8689bf2 | ||
|
|
afd22768fc | ||
|
|
e9ecdb3f56 | ||
|
|
e14ef2c671 | ||
|
|
d45c4740ad | ||
|
|
62bae55fd1 | ||
|
|
dcee505f6b | ||
|
|
ddf800de10 | ||
|
|
325db535c0 | ||
|
|
af4678ff18 | ||
|
|
cae77ae291 | ||
|
|
cab5a97117 | ||
|
|
0417b6266a | ||
|
|
fc7103f56e | ||
|
|
ffe9ec1c76 | ||
|
|
3fc738b53a | ||
|
|
7e1f554c4e | ||
|
|
5cfa8889f4 | ||
|
|
0cbe7a16e3 | ||
|
|
0cf3c097fb | ||
|
|
15061af796 | ||
|
|
2cfcad6a50 | ||
|
|
13a8ac3e50 | ||
|
|
7c5993d75b | ||
|
|
10c0325f18 | ||
|
|
367cb41121 | ||
|
|
c37884bdb7 | ||
|
|
37a551ecd3 | ||
|
|
dafc514353 | ||
|
|
aa6cb7d650 | ||
|
|
67e6688e69 | ||
|
|
5d9b71b038 | ||
|
|
2077cd4864 | ||
|
|
65276f45f1 | ||
|
|
95eb17bdb7 | ||
|
|
a88d66b48b | ||
|
|
a200c5397a | ||
|
|
87fb6fc3d1 | ||
|
|
79fcd45d5f | ||
|
|
e0ddaa74d0 | ||
|
|
d584dc5632 | ||
|
|
86704efcec | ||
|
|
6bb0f18d53 | ||
|
|
77e4984468 | ||
|
|
4e18c67ec5 | ||
|
|
6fbed4ad5c | ||
|
|
0fb42c6129 | ||
|
|
41ab94fe13 | ||
|
|
3a46f4589b | ||
|
|
14441ec144 | ||
|
|
f589dd2f26 | ||
|
|
629ba763d7 | ||
|
|
e896e1b3dd | ||
|
|
b92a127200 | ||
|
|
e02b8e227d | ||
|
|
367a7309bc | ||
|
|
6ecd2ed186 | ||
|
|
0ada26ccc2 | ||
|
|
a39faeec32 | ||
|
|
4e35b58d59 | ||
|
|
d03be75184 | ||
|
|
59b0109918 | ||
|
|
154e5aab8e | ||
|
|
5c38b9109e | ||
|
|
70b4b33823 | ||
|
|
6419c6b1ba | ||
|
|
1f9d9c619e | ||
|
|
2aa9f4c079 | ||
|
|
70495d9ce9 | ||
|
|
b3b7f8b980 | ||
|
|
b7e6d8646f | ||
|
|
466522fb12 | ||
|
|
549d68d3e8 | ||
|
|
42a54648a1 | ||
|
|
dc9b338cb9 | ||
|
|
b7d0455377 | ||
|
|
df0b11a960 | ||
|
|
111956e2f3 | ||
|
|
52c12731cb | ||
|
|
cf54a4919b | ||
|
|
ac26818005 | ||
|
|
467cf919be | ||
|
|
f48040a4d7 | ||
|
|
90ddcb30bf | ||
|
|
b713083574 | ||
|
|
fc7e7074ce | ||
|
|
e88e9bdf11 | ||
|
|
bc4ea885dc | ||
|
|
723ace2724 | ||
|
|
aeb454f31d | ||
|
|
12c44dceb6 | ||
|
|
9d1b8fbd3e | ||
|
|
124e0412b2 | ||
|
|
3a46260937 | ||
|
|
7151d5eac2 | ||
|
|
5e28d39f09 | ||
|
|
c7774d3d6c | ||
|
|
a85b84fd56 | ||
|
|
443b3c8b82 | ||
|
|
d69383d78b | ||
|
|
c355a2b61e | ||
|
|
93415ee36c | ||
|
|
0648ecf2d2 | ||
|
|
17022d50d4 | ||
|
|
c4573e46a9 | ||
|
|
fa515604dc | ||
|
|
3b12d70e45 | ||
|
|
efb86f453c | ||
|
|
569c18c9f1 | ||
|
|
91223a8431 | ||
|
|
d95e49b535 | ||
|
|
4cb89b3fc2 | ||
|
|
5e56c66201 | ||
|
|
e6393c105b | ||
|
|
bb16313024 | ||
|
|
a5ce2a5a62 | ||
|
|
3885cbd045 | ||
|
|
00940d66b1 | ||
|
|
cafba71671 | ||
|
|
cb454734b0 | ||
|
|
4f29f998c5 | ||
|
|
c241d48df3 | ||
|
|
2afc268a04 | ||
|
|
94017c1e53 | ||
|
|
cea6b7067a | ||
|
|
89b44f5126 | ||
|
|
3015ffd950 | ||
|
|
8c465d22e0 | ||
|
|
f1951d0d5f | ||
|
|
a84be2ba60 | ||
|
|
4243feaf37 | ||
|
|
e004f96b65 | ||
|
|
a98cbc3a9d | ||
|
|
5877918fe8 | ||
|
|
b45b585edf | ||
|
|
983b2ebe0e | ||
|
|
2a0e92e4e2 | ||
|
|
b351e60d52 | ||
|
|
69e7a581fd | ||
|
|
0a20be85ab | ||
|
|
3f5a54f9f1 | ||
|
|
e2c7941542 | ||
|
|
8433119ac9 | ||
|
|
43589096c3 | ||
|
|
05d14166e4 | ||
|
|
0d0f7724b6 | ||
|
|
d28152566d | ||
|
|
fb805de552 | ||
|
|
5ade906a7b | ||
|
|
8f02cbc234 | ||
|
|
59a2415a0d | ||
|
|
c1b3686190 | ||
|
|
662eeafbb5 | ||
|
|
5ff146bc69 | ||
|
|
9380a243ba | ||
|
|
587291ab86 | ||
|
|
2cd62621df | ||
|
|
3630fc63d7 | ||
|
|
de42d9f310 | ||
|
|
f5ed9f1c33 | ||
|
|
01ec472314 | ||
|
|
9ddee84954 | ||
|
|
dc0715dc2a | ||
|
|
b6b9fad5da | ||
|
|
553922bef6 | ||
|
|
4b08c0b56b | ||
|
|
ba081c7837 | ||
|
|
f4a2741ba0 | ||
|
|
e6b926c87f | ||
|
|
4be1195e5d | ||
|
|
84ef245b56 | ||
|
|
7b39bae673 | ||
|
|
7c505fd02a | ||
|
|
11f7f9a231 | ||
|
|
4f1eedcf7c | ||
|
|
99f85b800c | ||
|
|
2e4f81f63d | ||
|
|
abbaca3c71 | ||
|
|
a9b6f976a2 | ||
|
|
64b2a8d4a5 | ||
|
|
2b550b104f | ||
|
|
564e76956a | ||
|
|
dd734c3c8a | ||
|
|
35e9091863 | ||
|
|
b9e437c6cd | ||
|
|
de5f7f9b05 | ||
|
|
44a9db1c2f | ||
|
|
d7dc4bf496 | ||
|
|
1a15a062ef | ||
|
|
5b02501038 | ||
|
|
c3a98b265f | ||
|
|
b92bcd1789 | ||
|
|
949e504ad5 | ||
|
|
293a8a8199 | ||
|
|
2806c386d3 | ||
|
|
75f3a30d38 | ||
|
|
7cfe74b384 | ||
|
|
38d537bb8a | ||
|
|
b6f927c454 | ||
|
|
57c616abfe | ||
|
|
ad6ca65d4b | ||
|
|
38490195e3 | ||
|
|
6a43b8b159 | ||
|
|
a760acc399 | ||
|
|
cea5668a9f | ||
|
|
d73ab36dc3 | ||
|
|
5c01e0e852 | ||
|
|
5a13850043 | ||
|
|
96fbc968ef | ||
|
|
cf26a5da3d | ||
|
|
3e21758aac | ||
|
|
942799637e | ||
|
|
07dd33f6de | ||
|
|
a924af79c1 | ||
|
|
2422ca0847 | ||
|
|
5b900e7b9c | ||
|
|
8539a297fa | ||
|
|
b6b873f699 | ||
|
|
94ccabd5ce | ||
|
|
ea18fa95ad | ||
|
|
b5f2c8b583 | ||
|
|
90a228619e | ||
|
|
a6b7ba41ee | ||
|
|
bef8c846f8 | ||
|
|
ce2bf5ac53 | ||
|
|
2fec555756 | ||
|
|
2faaad6d3d | ||
|
|
3a4b970c62 | ||
|
|
05491309c2 | ||
|
|
e122217101 | ||
|
|
81eb7de665 | ||
|
|
c9fe2f649a | ||
|
|
6dd13e4939 | ||
|
|
6cc00a5a0f | ||
|
|
5661be3ebd | ||
|
|
59a2c5ce9c | ||
|
|
73a7adea63 | ||
|
|
3896384339 | ||
|
|
3028e70a0f | ||
|
|
64416aef2b | ||
|
|
e0340dadf4 | ||
|
|
83e0cdfa1e | ||
|
|
22ed3c0ca5 | ||
|
|
f95bc17e39 | ||
|
|
64a4451868 | ||
|
|
ead47b2aa2 | ||
|
|
3e9e6c3e73 | ||
|
|
b8e957ff9a | ||
|
|
2aa12631f8 | ||
|
|
7feaa505c2 | ||
|
|
b0e6e31d92 | ||
|
|
068e803bc8 | ||
|
|
a4749d376a | ||
|
|
71992f5b17 | ||
|
|
3897fc5666 | ||
|
|
315b303b4f | ||
|
|
d665c37bc3 | ||
|
|
c5df7d4249 | ||
|
|
c5988e412d | ||
|
|
f2744493b9 | ||
|
|
a6793588c6 | ||
|
|
958198b65a | ||
|
|
5605256c75 | ||
|
|
35c7124617 | ||
|
|
f124cd9c7e | ||
|
|
f9a756d1ff | ||
|
|
0aeecc7a99 | ||
|
|
3646e6ea13 | ||
|
|
d2a60c7287 | ||
|
|
e794604cae | ||
|
|
60fa6071b9 | ||
|
|
cdad6f74cf | ||
|
|
549de55b57 | ||
|
|
686432aa8a | ||
|
|
c2e219b446 | ||
|
|
15cefc664a | ||
|
|
38fc9f00a2 | ||
|
|
2673b9dd03 | ||
|
|
ff6c86b932 | ||
|
|
c247e49c2a | ||
|
|
0c0dddab12 | ||
|
|
1c39b76b83 | ||
|
|
f72dd7fdb6 | ||
|
|
5a5b5292a1 | ||
|
|
d6fce7c099 | ||
|
|
93e2cc367b | ||
|
|
de3ee932b6 | ||
|
|
b051a3981d | ||
|
|
ed3b4088d9 | ||
|
|
2aae667e15 | ||
|
|
a6604172d9 | ||
|
|
e85427f1da | ||
|
|
572a121492 | ||
|
|
f8f7fe4f33 | ||
|
|
b835716e36 | ||
|
|
1476395829 | ||
|
|
8156279025 | ||
|
|
1822f36aba | ||
|
|
7f1a854769 | ||
|
|
0c8e3515fe | ||
|
|
5b5f48014b | ||
|
|
d9e1dce393 | ||
|
|
79fd5dc7b1 | ||
|
|
7183bea412 | ||
|
|
6e2ad28676 | ||
|
|
444b0b30c3 | ||
|
|
cdef2dee5a | ||
|
|
a1036577a2 | ||
|
|
badcccab76 | ||
|
|
9e8facaa6f | ||
|
|
7c0c75ca42 | ||
|
|
e32d619677 | ||
|
|
6f2801cea8 | ||
|
|
76d402fcfa | ||
|
|
a55b0aeb5f | ||
|
|
75e5b1c7cd | ||
|
|
7af2f4a98a | ||
|
|
f50bcb981a | ||
|
|
08bcebfc1c | ||
|
|
ae31ecf706 | ||
|
|
4dac1ae9f8 | ||
|
|
db253cdaf8 | ||
|
|
4b05929dd5 | ||
|
|
7c174b9c05 | ||
|
|
82596b9c3f | ||
|
|
6414fe8cf8 | ||
|
|
8e2b18ea1d | ||
|
|
c57b55ede6 | ||
|
|
72a0341a0e | ||
|
|
98b9503461 | ||
|
|
417310b5c5 | ||
|
|
08d0db87d1 | ||
|
|
18bf1400a7 | ||
|
|
3b3dca4a26 | ||
|
|
82ee5bf1fd | ||
|
|
398666a8b4 | ||
|
|
7d1e60a019 | ||
|
|
d7736f798b | ||
|
|
c20be3dbea | ||
|
|
e52c5d38d3 | ||
|
|
6662cf6245 | ||
|
|
0f78f1b333 | ||
|
|
2efe58209f | ||
|
|
d420fad489 | ||
|
|
49868d8f7c | ||
|
|
dee6dc1e6c | ||
|
|
35054c1f59 | ||
|
|
f507ef5e56 | ||
|
|
57f763b0b6 | ||
|
|
7a3c326442 | ||
|
|
1842c9ed3b | ||
|
|
855f092682 | ||
|
|
cafe267bf0 | ||
|
|
81710ff3b0 | ||
|
|
1c90107571 | ||
|
|
ff0c021162 | ||
|
|
ca916deda9 | ||
|
|
f0f044b766 | ||
|
|
69758b80a5 | ||
|
|
98ed178d7b | ||
|
|
419fc15d77 | ||
|
|
72eb76191f | ||
|
|
7164260f6e | ||
|
|
f5e474f250 | ||
|
|
9a84fc5b47 | ||
|
|
248a689de2 | ||
|
|
4da33b81fd | ||
|
|
657a1aaed5 | ||
|
|
415b7bf4d1 | ||
|
|
d8c1cb2629 | ||
|
|
ea75a56d33 | ||
|
|
8e45c41f20 | ||
|
|
dacd13ee30 | ||
|
|
f49727e0b6 | ||
|
|
1fc67984a2 | ||
|
|
2cc6d2ef11 | ||
|
|
40cc4f32d0 | ||
|
|
9537dd793d | ||
|
|
96a7e4f7ac | ||
|
|
16d1245b64 | ||
|
|
06eac367f2 | ||
|
|
78a6ab89f9 | ||
|
|
f77bacb8a6 | ||
|
|
94387e8698 | ||
|
|
aebdc0c5d6 | ||
|
|
113c39c11c | ||
|
|
078656fb8b | ||
|
|
c4b49ce6cd | ||
|
|
97e98d2725 | ||
|
|
02857d1b7f | ||
|
|
04027b9c32 | ||
|
|
969d71b264 | ||
|
|
174789e2e1 | ||
|
|
eb535acb95 | ||
|
|
5540c8b06f | ||
|
|
8c17d825d9 | ||
|
|
0af6348913 | ||
|
|
0ac6c01d65 | ||
|
|
4c1dfbaddd | ||
|
|
258acfdf5a | ||
|
|
d875dab29b | ||
|
|
1f9b2cd48c | ||
|
|
6ee4a6a5b4 | ||
|
|
4989396abc | ||
|
|
398b7a5a25 | ||
|
|
3e267bc77a | ||
|
|
d84cc370c9 | ||
|
|
7f12288b2c | ||
|
|
20e89f21ff | ||
|
|
bd2cf19ec1 | ||
|
|
de47efdda5 | ||
|
|
95231faa87 | ||
|
|
567b846de1 | ||
|
|
83ce8a2197 | ||
|
|
f170cef506 | ||
|
|
c2d8ed271b | ||
|
|
e38224d758 | ||
|
|
83901e5fbb | ||
|
|
db05cc48e8 | ||
|
|
4632224e9b | ||
|
|
5684c450f4 | ||
|
|
4bcf8215b6 | ||
|
|
36a3b6f479 | ||
|
|
b31215c257 | ||
|
|
1f558590a8 | ||
|
|
ad5e2a3d0e | ||
|
|
b26255e60a | ||
|
|
852689b3df | ||
|
|
197bc54ac6 | ||
|
|
013a58e634 | ||
|
|
4dbe535e1e | ||
|
|
7ac378dcd3 | ||
|
|
965b098d66 | ||
|
|
6379c3210b | ||
|
|
7653d5fec9 | ||
|
|
7e1f7bd7fd | ||
|
|
5581e25a21 | ||
|
|
52e08a2784 | ||
|
|
f6047b8733 | ||
|
|
bea8e647d9 | ||
|
|
1cf8634152 | ||
|
|
141b63587b | ||
|
|
2b91903129 | ||
|
|
32de0ae4a4 | ||
|
|
985a0b9bce | ||
|
|
9860e2bc75 | ||
|
|
db8472a6e5 | ||
|
|
8a22da0acb | ||
|
|
cf1b53831f | ||
|
|
92f64188d5 | ||
|
|
6a0061dde3 | ||
|
|
84fbdba9f5 | ||
|
|
39cac396f5 | ||
|
|
75ed3ce60c | ||
|
|
8373204c94 | ||
|
|
6787af413e | ||
|
|
0199b4e212 | ||
|
|
121be772df | ||
|
|
f3b3e3eded | ||
|
|
02c08c942d | ||
|
|
b2370f5c5f | ||
|
|
6556e1b4a2 | ||
|
|
28acd466b3 | ||
|
|
699921d464 | ||
|
|
5c84fbba9a | ||
|
|
0b02422e7d | ||
|
|
677bff55c2 | ||
|
|
3d03bea582 | ||
|
|
278a77247d | ||
|
|
b83a8dcb5d | ||
|
|
9bce103dad | ||
|
|
dfcc4e1b3a | ||
|
|
66892aea60 | ||
|
|
5c708b43c2 | ||
|
|
e2026aedbc | ||
|
|
3184f8d275 | ||
|
|
8ec78688b8 | ||
|
|
1911fc2e65 | ||
|
|
e0446a73fa | ||
|
|
16b1bfa4d0 | ||
|
|
f015995ac4 | ||
|
|
0016836022 | ||
|
|
c543b7585a | ||
|
|
b90f1fc237 | ||
|
|
f892338098 | ||
|
|
defead108a | ||
|
|
1f8f9aaf81 | ||
|
|
3b32a3164b | ||
|
|
e5cc2ccaab | ||
|
|
2f9b753c5b | ||
|
|
cbcca9cf5b | ||
|
|
b1ac1859be | ||
|
|
cecb65cd40 | ||
|
|
74b076e31f | ||
|
|
e3057b5e46 | ||
|
|
e1e7387c73 | ||
|
|
73705bec23 | ||
|
|
cb9e045c7f | ||
|
|
92a8b5aa4d | ||
|
|
9b7f92188d | ||
|
|
77301e2930 | ||
|
|
babfc9ade3 | ||
|
|
883bbf102a | ||
|
|
e21f83267a | ||
|
|
27f0782465 | ||
|
|
d45b0dee10 | ||
|
|
2c2a29cd91 | ||
|
|
607a297c4a | ||
|
|
e177c5c94c | ||
|
|
7fb3456e83 | ||
|
|
d37bb2c7f9 | ||
|
|
20519e3b81 | ||
|
|
733613ad28 | ||
|
|
604070763d | ||
|
|
93f88800b8 | ||
|
|
9607888fc5 | ||
|
|
1e6936a8c3 | ||
|
|
56c2964e96 | ||
|
|
d5f223fc88 | ||
|
|
cdf2f6b5b4 | ||
|
|
fa3ce8de64 | ||
|
|
59d218d623 | ||
|
|
49fa1b6762 | ||
|
|
a2fe4a0b80 | ||
|
|
86e7a19a98 | ||
|
|
8c86c3dc1b | ||
|
|
2bef7631ae | ||
|
|
550d76a447 | ||
|
|
679b26cde4 | ||
|
|
79c625d737 | ||
|
|
a1d277e771 | ||
|
|
bde0f2f0ba | ||
|
|
53f830bb38 | ||
|
|
a5e3207715 | ||
|
|
b357a085c8 | ||
|
|
9722d808f9 | ||
|
|
0fdc1d0a1f | ||
|
|
f963d28ba8 | ||
|
|
09d1af9c46 | ||
|
|
5d8e894802 | ||
|
|
0ecfbfad53 | ||
|
|
ed35a143ec | ||
|
|
5089729b18 | ||
|
|
b41d2d64cb | ||
|
|
25e882eb78 | ||
|
|
4ef8f3da2b | ||
|
|
b00ce8789f | ||
|
|
b4f81a0c2a | ||
|
|
aa714f7d80 | ||
|
|
ca203435d1 | ||
|
|
ee8893a884 | ||
|
|
bf89238bdf | ||
|
|
360f7cf9c3 | ||
|
|
482ad0e5ee | ||
|
|
cd6ac4f8c2 | ||
|
|
79ac2be617 | ||
|
|
9b4b7cf5d4 | ||
|
|
9b970ae1a4 | ||
|
|
fec7912870 | ||
|
|
8bb855e657 | ||
|
|
9488864f47 | ||
|
|
beefc6a86e | ||
|
|
cc99abcd14 | ||
|
|
f8bcf52741 | ||
|
|
1a10366ab7 | ||
|
|
925b6694ac | ||
|
|
1ad16ade86 | ||
|
|
45e3f02832 | ||
|
|
ba1a681aab | ||
|
|
23bba969dd | ||
|
|
9c743acd2d | ||
|
|
62da7c7be4 | ||
|
|
07310c7714 | ||
|
|
ee93f7e018 | ||
|
|
21fae1f457 | ||
|
|
653a84d3a9 | ||
|
|
8132bbac2e | ||
|
|
197286c21e | ||
|
|
bf48729354 | ||
|
|
a504a75166 | ||
|
|
44ac22c0de | ||
|
|
df1c6b9b0b | ||
|
|
7ce45d2b11 | ||
|
|
bde0e0b86a | ||
|
|
c1232a7001 | ||
|
|
12c4dbf0e5 | ||
|
|
31a01ab227 | ||
|
|
5dc60b9f35 | ||
|
|
588f134de8 | ||
|
|
2ae867a7e0 | ||
|
|
c77b029ee2 | ||
|
|
d0648d1754 | ||
|
|
1e3486af94 | ||
|
|
8f2b2aba12 | ||
|
|
0b1232b65d | ||
|
|
969abe015c | ||
|
|
f39144cc51 | ||
|
|
725df15012 | ||
|
|
9e296cdb46 | ||
|
|
b07627611f | ||
|
|
6cad4bc986 | ||
|
|
504c08a0fc | ||
|
|
592f1cafdb | ||
|
|
71d8c2080c | ||
|
|
6095933847 | ||
|
|
92febf0b00 | ||
|
|
1c711aef3c | ||
|
|
0bec780a1b | ||
|
|
ed01a46a3f | ||
|
|
4f8fa9f9eb | ||
|
|
2f99ccdd4a | ||
|
|
2dd1013075 | ||
|
|
6552aeaa3b | ||
|
|
b92b93e233 | ||
|
|
10036b148c | ||
|
|
cccec8382f | ||
|
|
5e30721e01 | ||
|
|
d03690cffd | ||
|
|
dad732b7e6 | ||
|
|
d74b5c8764 | ||
|
|
0f19010e52 | ||
|
|
ac6ee28c5f | ||
|
|
c509c02546 | ||
|
|
1258c44bad | ||
|
|
fe65e7a0c4 | ||
|
|
76727d09bf | ||
|
|
2a49b3899a | ||
|
|
49b85d150c | ||
|
|
b54241a5b2 | ||
|
|
78a2086535 | ||
|
|
24cc5dbaa0 | ||
|
|
0093838a75 | ||
|
|
dde658a514 | ||
|
|
13996740e0 | ||
|
|
e4b017b304 | ||
|
|
a2a683d31e | ||
|
|
5040f09f0c | ||
|
|
19911d9f1f | ||
|
|
04b0f8b2a4 | ||
|
|
e453dceacd | ||
|
|
42a938b50b | ||
|
|
4cf3cff74d | ||
|
|
3ffd007cc0 | ||
|
|
28b098cfb7 | ||
|
|
fd59088528 | ||
|
|
05bd32f750 | ||
|
|
e80147d24e | ||
|
|
72e1a19ea5 | ||
|
|
b14d6c9216 | ||
|
|
c894d72b52 | ||
|
|
220dbd7e30 | ||
|
|
84d6fc2787 | ||
|
|
f6d0738c79 | ||
|
|
52615c6f52 | ||
|
|
34342599b9 | ||
|
|
42edb20b07 | ||
|
|
a14784cfd4 | ||
|
|
32440567ad | ||
|
|
25f1dc325d | ||
|
|
38feeee464 | ||
|
|
b2701ad911 | ||
|
|
d41962f9d1 | ||
|
|
ec5d01545a | ||
|
|
03ddadc1ed | ||
|
|
3e55b61ac0 | ||
|
|
5a7f022e40 | ||
|
|
f651e10684 | ||
|
|
b753f920e1 | ||
|
|
415a0cdf28 | ||
|
|
9708961654 | ||
|
|
47bcb117b4 | ||
|
|
3eb38e558e | ||
|
|
a321eb8737 | ||
|
|
62c65659cc | ||
|
|
249addebff | ||
|
|
860087d291 | ||
|
|
c63e8d32c9 | ||
|
|
91e4603917 | ||
|
|
276278db41 | ||
|
|
b58d4e306a | ||
|
|
21a57a0c58 | ||
|
|
06b1e43492 | ||
|
|
2c1ffde3ed | ||
|
|
918ebc62a2 | ||
|
|
465de438ce | ||
|
|
6ee848b279 | ||
|
|
db5f1622bd | ||
|
|
5e2f681761 | ||
|
|
ad506d78ba | ||
|
|
48b89609e2 | ||
|
|
0fd0a8b7cc | ||
|
|
2e922019d7 | ||
|
|
303d1fef6b | ||
|
|
619ed234a9 | ||
|
|
fd8fc679be | ||
|
|
5a3c852b32 | ||
|
|
4c7de77bfb | ||
|
|
b08c1eeaa9 | ||
|
|
7e91121a33 | ||
|
|
cb78e10a76 | ||
|
|
9d031c1600 | ||
|
|
7efe6f1d53 | ||
|
|
bf33c82b19 | ||
|
|
2330454838 | ||
|
|
0d0aa49eb9 | ||
|
|
c279f405cf | ||
|
|
725eee726d | ||
|
|
4c2a09369d | ||
|
|
e6e1aab098 | ||
|
|
511f71c369 | ||
|
|
3dfccea522 | ||
|
|
ced0faf916 | ||
|
|
d284ecdab4 | ||
|
|
be77bf94aa | ||
|
|
2c87c00906 | ||
|
|
0ff2e212d5 | ||
|
|
92e4b5cc16 | ||
|
|
4e3228628a | ||
|
|
dde03eca7c | ||
|
|
107595fcb2 | ||
|
|
32fb634a4d | ||
|
|
51fbcc736e | ||
|
|
360a22c537 | ||
|
|
63cb5ab883 | ||
|
|
151a937c10 | ||
|
|
4c88c9b029 | ||
|
|
24664cc859 | ||
|
|
a187456ac3 | ||
|
|
9e4752b114 | ||
|
|
de64b33bb8 | ||
|
|
e66b64650d | ||
|
|
5139bc326a | ||
|
|
826858c170 | ||
|
|
f2400ee089 | ||
|
|
6e3587dd43 | ||
|
|
7a61db9a70 | ||
|
|
da798e7a5a | ||
|
|
f385e46927 | ||
|
|
c31262b97e | ||
|
|
2e9acc1fa8 | ||
|
|
0f9da7f519 | ||
|
|
971e1cdbec | ||
|
|
9fad2d68af | ||
|
|
51180adeb4 | ||
|
|
8ded683796 | ||
|
|
31c4ab8ac0 | ||
|
|
4f9d31e832 | ||
|
|
22e13e8c40 | ||
|
|
bec52b81fd | ||
|
|
7fc168532c | ||
|
|
69b55bcbd3 | ||
|
|
c6e839271a | ||
|
|
f3a1e09042 | ||
|
|
b157ec1b28 | ||
|
|
695be89656 | ||
|
|
3f3deb8e2a | ||
|
|
06b9d68eb7 | ||
|
|
bcc9379ebc | ||
|
|
9855e2edee | ||
|
|
e60e574902 | ||
|
|
c22ab4afdf | ||
|
|
b123d95b71 | ||
|
|
1760af50c8 | ||
|
|
73e33d7ba9 | ||
|
|
201c26f7c8 | ||
|
|
1fd31d83bf | ||
|
|
7d5c827dec | ||
|
|
ce89ff3c85 | ||
|
|
e60797cd0f | ||
|
|
49c5c5bbde | ||
|
|
78f243651e | ||
|
|
776a4d657d | ||
|
|
8f0b962507 | ||
|
|
8dc8431c0e | ||
|
|
5aa15ef731 | ||
|
|
1519843f6f | ||
|
|
37a4eefc46 | ||
|
|
1efcb2f80b | ||
|
|
0acb4f5aed | ||
|
|
4f38a953ac | ||
|
|
f05767afe8 | ||
|
|
ddbf23df68 | ||
|
|
6c4ab3b7f4 | ||
|
|
4d902c01a6 | ||
|
|
d1a5ba2b8e | ||
|
|
982cac3472 | ||
|
|
431f22283d | ||
|
|
7e61b1ecad | ||
|
|
a2d685815f | ||
|
|
014c2c5249 | ||
|
|
add63d2dde | ||
|
|
81bed3d3d5 | ||
|
|
f22a30ca87 | ||
|
|
946e74a918 | ||
|
|
3cd3cf9830 | ||
|
|
bc634c5f8f | ||
|
|
7357e40d3f | ||
|
|
92bde25a49 | ||
|
|
e714cb9e8b | ||
|
|
fed81c8e22 | ||
|
|
3a65d5ce23 | ||
|
|
6d482cd934 | ||
|
|
02511b7785 | ||
|
|
b3fdc4bb96 | ||
|
|
c90dd0e818 | ||
|
|
0e2d93c630 | ||
|
|
de328c9dfd | ||
|
|
f4a2f67db3 | ||
|
|
601d6f37af | ||
|
|
a004ef65af | ||
|
|
8997c27819 | ||
|
|
2aeceb7ea8 | ||
|
|
627e99859d | ||
|
|
6ebca7fa7c | ||
|
|
3d55ad783e | ||
|
|
05f66f9bea | ||
|
|
434ba82705 | ||
|
|
cbe6d19c79 | ||
|
|
b47e7f068c | ||
|
|
20a59a2c58 | ||
|
|
57845a2739 | ||
|
|
9a8ab29330 | ||
|
|
406cc71f96 | ||
|
|
132d0631d2 | ||
|
|
3095ade94c | ||
|
|
221df3d26d | ||
|
|
40db3a5d7d | ||
|
|
ee1a1fd614 | ||
|
|
8e8be502fd | ||
|
|
ae4413d0aa | ||
|
|
51b791f9c0 | ||
|
|
767c3c942b | ||
|
|
3fcace6660 | ||
|
|
4c600f5748 | ||
|
|
d84342733d | ||
|
|
d6f0f9ec0e | ||
|
|
fbc922fe97 | ||
|
|
4be84e035f | ||
|
|
254474d12d | ||
|
|
5615987ea2 | ||
|
|
3a93246f08 | ||
|
|
633784fae2 | ||
|
|
af127468a6 | ||
|
|
f892c1284b | ||
|
|
d762b5a017 | ||
|
|
28d7835327 | ||
|
|
03438f9192 | ||
|
|
09c7955149 | ||
|
|
9a2a88a703 | ||
|
|
820ae7d6e3 | ||
|
|
9c69f22f79 | ||
|
|
85ad6b12ba | ||
|
|
79706b4a1a | ||
|
|
72180d4248 | ||
|
|
8446c9563d | ||
|
|
4df1d2093f | ||
|
|
9d98d26cc7 | ||
|
|
0c762e610f | ||
|
|
62a019cc5d | ||
|
|
36c78e9686 | ||
|
|
dcb9e34d59 | ||
|
|
cb13cfdda7 | ||
|
|
0082f56b58 | ||
|
|
b490a72c1d | ||
|
|
3c0b479669 | ||
|
|
c9ad09226b | ||
|
|
4e771ecfb7 | ||
|
|
be86cd4028 | ||
|
|
3ddbe92f37 | ||
|
|
ca67ea9b4c | ||
|
|
9f78af29bf | ||
|
|
6821a05f76 | ||
|
|
e328c5d505 | ||
|
|
f814d26a4a | ||
|
|
3fc06e6f4f | ||
|
|
d876c267d6 | ||
|
|
1268a463ac | ||
|
|
e64d75a297 | ||
|
|
1960262435 | ||
|
|
c227062a37 | ||
|
|
e9376af13c | ||
|
|
8edebb9f75 | ||
|
|
8abe31341d | ||
|
|
7900edc96c | ||
|
|
c1eca93609 | ||
|
|
cd953bc7b9 | ||
|
|
692421ee13 | ||
|
|
1e89054897 | ||
|
|
ae1112ae11 | ||
|
|
205b505242 | ||
|
|
f77cd9bd52 | ||
|
|
11948c1cce | ||
|
|
d7e6f97d9c | ||
|
|
e324856301 | ||
|
|
8fb873b085 | ||
|
|
c17eb5fce5 | ||
|
|
91e9bdfc31 | ||
|
|
c83edc1689 | ||
|
|
dcbd4f3356 | ||
|
|
3929043eec | ||
|
|
23712ce590 | ||
|
|
adb2582856 | ||
|
|
3e292d7604 | ||
|
|
b565d1ab76 | ||
|
|
2debabe664 | ||
|
|
e1fc11218f | ||
|
|
ed59d6acf5 | ||
|
|
800984489d | ||
|
|
997ea3a2f5 | ||
|
|
b9b60a1346 | ||
|
|
e8edbd5394 | ||
|
|
f3e25ae3e6 | ||
|
|
93c952b344 | ||
|
|
d818a15aea | ||
|
|
6a664d976f | ||
|
|
5b7a71fb08 | ||
|
|
b29d83968b | ||
|
|
3e14c8e80d | ||
|
|
62bbe39bb4 | ||
|
|
4305ec34d0 | ||
|
|
a9518c2e55 | ||
|
|
c4fc67301c | ||
|
|
c92db272e0 | ||
|
|
46274acb3e | ||
|
|
8a676c573a | ||
|
|
39cbc59c12 | ||
|
|
96aa6ae3ef | ||
|
|
94d07833c5 | ||
|
|
1d3acbe40b | ||
|
|
389590e45d | ||
|
|
ea3cb026c7 | ||
|
|
1efe5bff9f | ||
|
|
d2ca74ecdf | ||
|
|
df4fa549ef | ||
|
|
cc7a706f52 | ||
|
|
d4256dad30 | ||
|
|
cd9208b541 | ||
|
|
67e53906f0 | ||
|
|
cde7f2ab1c | ||
|
|
1cd9c57f87 | ||
|
|
c625ad32c5 | ||
|
|
15eca63ff0 | ||
|
|
d149df2a6e | ||
|
|
30fdcf4efb | ||
|
|
ea54abdfde | ||
|
|
2757dc7205 | ||
|
|
e35ad892eb | ||
|
|
140e2a026e | ||
|
|
c89ab4e47c | ||
|
|
ab05e34805 | ||
|
|
4a201c1890 | ||
|
|
cb3e863957 | ||
|
|
8e20e54b53 | ||
|
|
3cf4b4ed8b | ||
|
|
10241a37c2 | ||
|
|
0eb3a5cab3 | ||
|
|
4945767bd8 | ||
|
|
217760148c | ||
|
|
210e219778 | ||
|
|
50896ee23b | ||
|
|
41432b4165 | ||
|
|
d41b8e7441 | ||
|
|
aed17bde9b | ||
|
|
5b430fc376 | ||
|
|
e1064275a0 | ||
|
|
6f8d252dc6 | ||
|
|
b89e296390 | ||
|
|
99b5e3565d | ||
|
|
6ec33db50e | ||
|
|
aa4922840b | ||
|
|
28239c4a51 | ||
|
|
8ee8f2c085 | ||
|
|
a3ba2276e2 | ||
|
|
aefc90dc19 | ||
|
|
511c0dd17c | ||
|
|
e1b211ed8e | ||
|
|
08f409993a | ||
|
|
2e90cda34c | ||
|
|
b97d674108 | ||
|
|
f8cbe053cc | ||
|
|
0e241a0fc5 | ||
|
|
31916384c1 | ||
|
|
e6f17834a0 | ||
|
|
e1f2bc0a19 | ||
|
|
12d3ca2d50 | ||
|
|
aa08125e43 | ||
|
|
9ce94a8398 | ||
|
|
34a3535abe | ||
|
|
ac79803f1b | ||
|
|
006ec1abb8 | ||
|
|
b2a47e6216 | ||
|
|
85638c23ae | ||
|
|
44c1c93e81 | ||
|
|
06c9ff49a0 | ||
|
|
bbe72f52ba | ||
|
|
5793b85c5b | ||
|
|
eccc3717bc | ||
|
|
a89b2ca450 | ||
|
|
41e5d2524b | ||
|
|
de55be515d | ||
|
|
6a0c6047e6 | ||
|
|
0db8898577 | ||
|
|
a38695ff8a | ||
|
|
5ab45a1185 | ||
|
|
805d892dbb | ||
|
|
d5348cec70 | ||
|
|
167ef06209 | ||
|
|
d64a7cb739 | ||
|
|
b2584bb01b | ||
|
|
8b8cb12763 | ||
|
|
127e28a6f4 | ||
|
|
73c46f2a85 | ||
|
|
36e1fcc24a | ||
|
|
ed0e637207 | ||
|
|
6b8a55f55b | ||
|
|
509049d95a | ||
|
|
83280de352 | ||
|
|
a4e4c8baaa | ||
|
|
00d27bc313 | ||
|
|
78ce12bc60 | ||
|
|
7e8d7ef0c0 | ||
|
|
d1c01f476d | ||
|
|
bb3c38a3b1 | ||
|
|
8ca6e8c478 | ||
|
|
96660ebd2a | ||
|
|
9e69d01db7 | ||
|
|
1c015e31f1 | ||
|
|
bf12b127ac | ||
|
|
dd733092a1 | ||
|
|
30fd5fcf14 | ||
|
|
483940a98d | ||
|
|
615bc17cec | ||
|
|
94cf350e5c | ||
|
|
fa594e732f | ||
|
|
4c0c9eb7fb | ||
|
|
e9cd95fc6a | ||
|
|
b68675d9fd | ||
|
|
d4abfffa2f | ||
|
|
2d6d664f77 | ||
|
|
c1f08cf2ea | ||
|
|
f4d762c19b | ||
|
|
1ed7d34200 | ||
|
|
4f5d805725 | ||
|
|
bde8dbba05 | ||
|
|
f6b5404a04 | ||
|
|
ce9f2157e8 | ||
|
|
64cd9c0dd2 | ||
|
|
ab4cc74aca | ||
|
|
8cdb5fe346 | ||
|
|
aae7987df0 | ||
|
|
1817105c94 | ||
|
|
88ca98c5a6 | ||
|
|
8717cd077c | ||
|
|
9658af4aa9 | ||
|
|
d40a79576b | ||
|
|
481bd4ac68 | ||
|
|
6625a2afd3 | ||
|
|
cc23495591 | ||
|
|
acd42f9cc6 | ||
|
|
a2e439a155 | ||
|
|
d0fac80eb4 | ||
|
|
3f90611edf | ||
|
|
d8a9630548 | ||
|
|
fbb5d4a4a6 | ||
|
|
e5753c54a6 | ||
|
|
9ab9ea4c2e | ||
|
|
2301478b3f | ||
|
|
df9b09eeae | ||
|
|
7e7b2797d7 | ||
|
|
287f1ae042 | ||
|
|
4bc665c0d2 | ||
|
|
5390d0668b | ||
|
|
f55724bf58 | ||
|
|
4300b3a9e0 | ||
|
|
c085b263a7 | ||
|
|
3877014f83 | ||
|
|
83b1613002 | ||
|
|
329f7a2e00 | ||
|
|
0e0785db7b | ||
|
|
9638a4a4e6 | ||
|
|
91be43169c | ||
|
|
01af7e36cd | ||
|
|
d30ca2345e | ||
|
|
26be6ae7c5 | ||
|
|
31c0fc5742 | ||
|
|
1a7f8d5319 | ||
|
|
14e4a052bb | ||
|
|
ae3d8860be | ||
|
|
2eede422a4 | ||
|
|
24debbf349 | ||
|
|
81e252d564 | ||
|
|
1ca9389110 | ||
|
|
10fb76377c | ||
|
|
38029efe50 | ||
|
|
4a6242b3a0 | ||
|
|
b540cc8ac4 | ||
|
|
5fb0402216 | ||
|
|
bc202ecc98 | ||
|
|
9d3f0d45d5 | ||
|
|
f51c391e84 | ||
|
|
909fbaab95 | ||
|
|
67655d15cc | ||
|
|
83b4a3da30 | ||
|
|
768a195c10 | ||
|
|
16e8cfdf31 | ||
|
|
c0c55a7af8 | ||
|
|
e625dc63b4 | ||
|
|
dedac39d99 | ||
|
|
fe6d7d16c8 | ||
|
|
de8e248f29 | ||
|
|
7217ef5ec5 | ||
|
|
6a33173384 | ||
|
|
b520b26bd0 | ||
|
|
1761f63acd | ||
|
|
e58b09c1ea | ||
|
|
7c7e2c4f3d | ||
|
|
20abcaa011 | ||
|
|
297e6543de | ||
|
|
ec54f9a549 | ||
|
|
c064ca3ca9 | ||
|
|
56bd31fe22 | ||
|
|
ac8e042333 | ||
|
|
718b189f19 | ||
|
|
1fa9543e47 | ||
|
|
563209d080 | ||
|
|
ca71c700c7 | ||
|
|
585e2627bf | ||
|
|
579bbe2b86 | ||
|
|
5138644dc8 | ||
|
|
2310d36604 | ||
|
|
7d9e848edb | ||
|
|
a3770a8947 | ||
|
|
06d4a82706 | ||
|
|
c0095dc385 | ||
|
|
07060a8584 | ||
|
|
784e54f217 | ||
|
|
104156d084 | ||
|
|
48180b7ee8 | ||
|
|
ef34a63f7a | ||
|
|
45483809c5 | ||
|
|
9d89c1d692 | ||
|
|
cb4fde9a0b | ||
|
|
8f17a49a24 | ||
|
|
e18e923ac6 | ||
|
|
ed3b939477 | ||
|
|
977d21c929 | ||
|
|
89f0cdffc7 | ||
|
|
9685dca4de | ||
|
|
010218b5ce | ||
|
|
52252453d9 | ||
|
|
057108882f | ||
|
|
90b3cfcf9f | ||
|
|
4231d7b50a | ||
|
|
b85632cc99 | ||
|
|
1b81570338 | ||
|
|
0e03b951d4 | ||
|
|
6d05600eaf | ||
|
|
807422c377 | ||
|
|
768cef57c7 | ||
|
|
bcf1d32cdd | ||
|
|
def67eca3b | ||
|
|
388a8b6346 | ||
|
|
7ab937cf7b | ||
|
|
4bb460528f | ||
|
|
1ab636a4f1 | ||
|
|
a6e82475a3 | ||
|
|
9de8b16aeb | ||
|
|
0baf7744bc | ||
|
|
580c2b9e84 | ||
|
|
84673f26f3 | ||
|
|
ab1efb0749 | ||
|
|
4b0532b072 | ||
|
|
d458500113 | ||
|
|
d9fe2e0974 | ||
|
|
3fddb77564 | ||
|
|
3dd7a82dcc | ||
|
|
3dac6fd1c3 | ||
|
|
7fe01f0764 | ||
|
|
d7da96b387 | ||
|
|
3f95584dac | ||
|
|
de5578c8f7 | ||
|
|
1d410fdb7d | ||
|
|
54545d0bfc | ||
|
|
01131b2296 | ||
|
|
9b2239d4fa | ||
|
|
1b55201fbd | ||
|
|
be43c2156f | ||
|
|
c393db9c9f | ||
|
|
4a749ce00d | ||
|
|
13e6c5eefc | ||
|
|
343b904607 | ||
|
|
553a6e8ff6 | ||
|
|
9423b8da57 | ||
|
|
a7470345ff | ||
|
|
2aca12a49c | ||
|
|
810ee422a1 | ||
|
|
1c10ee106e | ||
|
|
e251c59da1 | ||
|
|
df35844bb2 | ||
|
|
d8006087a2 | ||
|
|
1fa91cbb6f | ||
|
|
3aacfdca20 | ||
|
|
b886422416 | ||
|
|
a29ea0374c | ||
|
|
e6a09e7cf7 | ||
|
|
83282ebcb8 | ||
|
|
d3169b10f8 | ||
|
|
197c22c7fe | ||
|
|
cfe923b8c4 | ||
|
|
742048f24e | ||
|
|
36111aa001 | ||
|
|
8a0f80181e | ||
|
|
fd4fec5340 | ||
|
|
808523b814 | ||
|
|
5640b2157f | ||
|
|
f3d79d906e | ||
|
|
5198f70ebf | ||
|
|
de12208d4a | ||
|
|
e20247d055 | ||
|
|
0862326a79 | ||
|
|
16531653ab | ||
|
|
2f3a2d495a | ||
|
|
baa9837702 | ||
|
|
cfa7d9820b | ||
|
|
3554d9fda2 | ||
|
|
cb2eebef40 | ||
|
|
f4d0cc4dd1 | ||
|
|
d31347c0e0 | ||
|
|
911a43337b | ||
|
|
f62f15cea7 | ||
|
|
dcd27a5f7a | ||
|
|
bf4c4561ce | ||
|
|
cc6c18b5ad | ||
|
|
6b536ced92 | ||
|
|
60ca0cbae3 | ||
|
|
b16abfba9c | ||
|
|
0a34143388 | ||
|
|
1e79f202f4 | ||
|
|
90f7b5259b | ||
|
|
2d143abda6 | ||
|
|
128671f5e9 | ||
|
|
6945eb548f | ||
|
|
ca3cd36887 | ||
|
|
31da08d186 | ||
|
|
1c90b09e2d | ||
|
|
18056139fd | ||
|
|
0898632ba4 | ||
|
|
f79a493083 | ||
|
|
2b159e24a7 | ||
|
|
d8032836bf | ||
|
|
b881f3c1c8 | ||
|
|
6f42bcfa4f | ||
|
|
ade6c46cca | ||
|
|
c6d0bf8d98 | ||
|
|
c41035058a | ||
|
|
e66f7a206e | ||
|
|
cec3d986a7 | ||
|
|
c6e65b4e24 | ||
|
|
ccb7e5270c | ||
|
|
ff29b6e84f | ||
|
|
6ed9e09451 | ||
|
|
75ce6d42d0 | ||
|
|
3bb0b93c79 | ||
|
|
87834b74ef | ||
|
|
6ef434f26d | ||
|
|
15b4152dce | ||
|
|
4aa19d700d | ||
|
|
3edf667958 | ||
|
|
c9b3b6c1b8 | ||
|
|
6e3bc5e65d | ||
|
|
886e35477e | ||
|
|
2f7fbea567 | ||
|
|
b7ecbd3b51 | ||
|
|
92b636ab75 | ||
|
|
28c57f75e8 | ||
|
|
cb1305c87f | ||
|
|
392bfcca2d | ||
|
|
2f95b8f6b2 | ||
|
|
96330b6f03 | ||
|
|
b509ae78b7 | ||
|
|
3a8a16bf48 | ||
|
|
8d2cab7b12 | ||
|
|
9034d6194a | ||
|
|
f8e400deb9 | ||
|
|
13290efac1 | ||
|
|
1df4da210f | ||
|
|
d0c426a7f9 | ||
|
|
17e5bb8d53 | ||
|
|
019cd51333 | ||
|
|
d62458b07b | ||
|
|
2e01153363 | ||
|
|
50ef826114 | ||
|
|
ddb28a9b90 | ||
|
|
0656ddd50a | ||
|
|
afdbf0adbf | ||
|
|
a5f5098beb | ||
|
|
e5c98e61c8 | ||
|
|
2793c8dd03 | ||
|
|
e4e226b2c7 | ||
|
|
46f98ded10 | ||
|
|
86b2391543 | ||
|
|
00ea4f8701 | ||
|
|
f7c9a12510 | ||
|
|
b6a7e049e6 | ||
|
|
45b3863353 | ||
|
|
c2764fda45 | ||
|
|
d358a9d9fd | ||
|
|
1a08ba0b57 | ||
|
|
974efc55ac | ||
|
|
dc46277d0c | ||
|
|
052048ad4c | ||
|
|
c361d8d16b | ||
|
|
045fd20d8c | ||
|
|
fdfd684e7a | ||
|
|
0a2592893d | ||
|
|
4c6c310e0a | ||
|
|
a5aa305773 | ||
|
|
196cf1cd18 | ||
|
|
0cf654aa88 | ||
|
|
2cf20f4b6c | ||
|
|
6b0ba94288 | ||
|
|
870ad008bf | ||
|
|
767aaa80a0 | ||
|
|
5eadaa08aa | ||
|
|
5cdc3e694f | ||
|
|
e96382fdd9 | ||
|
|
a486319cc2 | ||
|
|
1432866798 | ||
|
|
4a375b6563 | ||
|
|
743658032a | ||
|
|
e2f8f5095f | ||
|
|
a22ca5b57f | ||
|
|
b43c6c00bb | ||
|
|
c56e4557f9 | ||
|
|
6b640ea55e | ||
|
|
70f8a771a9 | ||
|
|
4b4aec5bbd | ||
|
|
00198d5e49 | ||
|
|
8a19d25396 | ||
|
|
8533f6edf1 | ||
|
|
bc9693d6f6 | ||
|
|
43a03d85a8 | ||
|
|
f0d63bed58 | ||
|
|
0a3978ab8c | ||
|
|
1c09b8baef | ||
|
|
547b610454 | ||
|
|
9d39bed852 | ||
|
|
70ff7cf74c | ||
|
|
8908fb07a0 | ||
|
|
f2c4ac061c | ||
|
|
b2871d8fc5 | ||
|
|
f4c6e5a6fa | ||
|
|
67d838b5fc | ||
|
|
f15a354c29 | ||
|
|
281e03055d | ||
|
|
216e9c0125 | ||
|
|
2c14f8b43b | ||
|
|
89a77feea7 | ||
|
|
5ca880c8fd | ||
|
|
17671493bf | ||
|
|
0d687eb348 | ||
|
|
1e01f94540 | ||
|
|
335ef67971 | ||
|
|
429d0c8df8 | ||
|
|
72b41f4322 | ||
|
|
fb5938280e | ||
|
|
2d72c58ae7 | ||
|
|
ad99e8edce | ||
|
|
d463f5a032 | ||
|
|
1415f74fe5 | ||
|
|
8de84f03a0 | ||
|
|
fe85ce5885 | ||
|
|
9dc7142e4a | ||
|
|
34a8d0b99b | ||
|
|
176e2726e9 | ||
|
|
2e4a1680b9 | ||
|
|
1eddae9da6 | ||
|
|
f217dbac51 | ||
|
|
eb74414b16 | ||
|
|
ee542f0fec | ||
|
|
0c0ec29821 | ||
|
|
955ce1dd2d | ||
|
|
f32f37cfbb | ||
|
|
8684788f1f | ||
|
|
9e033d1673 | ||
|
|
69c00d272b | ||
|
|
19617e9dae | ||
|
|
f8cc54d4f2 | ||
|
|
8764aa9829 | ||
|
|
fb68f6eb60 | ||
|
|
d09c42366a | ||
|
|
0298fa602a | ||
|
|
30cbcbb3c4 | ||
|
|
1127d323d3 | ||
|
|
01e812aebf | ||
|
|
e690bae7d1 | ||
|
|
58c2c84120 | ||
|
|
a96947c7e7 | ||
|
|
45b40d903c | ||
|
|
b19033aa4f | ||
|
|
adac0f3e51 | ||
|
|
3441482e8c | ||
|
|
781845905c | ||
|
|
b3c9b58350 | ||
|
|
337a2cf319 | ||
|
|
06fa04a448 | ||
|
|
93e86b141d | ||
|
|
fc56027929 | ||
|
|
d2287328ad | ||
|
|
b91834b813 | ||
|
|
8faf991bcb | ||
|
|
84ac30b8d2 | ||
|
|
0f17aebc52 | ||
|
|
2bff13d9e1 | ||
|
|
7683db70cd | ||
|
|
94ba2ad24a | ||
|
|
e42a22d1f2 | ||
|
|
11b6946e00 | ||
|
|
ba8a675eaa | ||
|
|
10f8941258 | ||
|
|
0816fdf318 | ||
|
|
bcf43640fa | ||
|
|
1de68051e3 | ||
|
|
0c9015bb77 | ||
|
|
a8c200f25a | ||
|
|
59fbb2acb1 | ||
|
|
3b53527e9e | ||
|
|
3c53c2c56c | ||
|
|
13a51b6bd3 | ||
|
|
c8d81518cc | ||
|
|
390d49d599 | ||
|
|
3604e6fa7d | ||
|
|
206532f195 | ||
|
|
c9f38fef45 | ||
|
|
b55c05095a | ||
|
|
8f073c5b6f | ||
|
|
f45ca180e9 | ||
|
|
1eb549b137 | ||
|
|
3a9bfc84cd | ||
|
|
c9a8a2af07 | ||
|
|
f5069aef6e | ||
|
|
eb1af1e27e | ||
|
|
d84ac0df9c | ||
|
|
04275cd702 | ||
|
|
746bc7d7bd | ||
|
|
15c5e9833a | ||
|
|
b589a1a13e | ||
|
|
5102770ad5 | ||
|
|
47f396cfce | ||
|
|
759d0a825b | ||
|
|
a8869c46b8 | ||
|
|
4b31f40026 | ||
|
|
4f8dee8fcf | ||
|
|
cf5ab0ddef | ||
|
|
91e9d7431a | ||
|
|
6e13440f1f | ||
|
|
3efeb4a0a6 | ||
|
|
764a372e9f | ||
|
|
340087076e | ||
|
|
ec5716c436 | ||
|
|
3f3a34f788 | ||
|
|
e7879384b1 | ||
|
|
853ee4bef1 | ||
|
|
9be90dd035 | ||
|
|
4c7acca85a | ||
|
|
d235bf9822 | ||
|
|
688d37fe76 | ||
|
|
6c5f606682 | ||
|
|
ce5092036a | ||
|
|
b745626a9f | ||
|
|
c9d73bf1a4 | ||
|
|
6e76b7a7dd | ||
|
|
fd41f0fe0d | ||
|
|
d2e81d14d9 | ||
|
|
7d674b44d3 | ||
|
|
7d3617c27f | ||
|
|
cf6fca8e76 | ||
|
|
1560a823c3 | ||
|
|
aba41d41ac | ||
|
|
245cffc4f7 | ||
|
|
3aada68eb9 | ||
|
|
d15611fd44 | ||
|
|
82d4b866c0 | ||
|
|
4645dd0011 | ||
|
|
bec81ddbfe | ||
|
|
6e4279e30f | ||
|
|
e1131dcf3d | ||
|
|
762de84f34 | ||
|
|
e480cdbf9b | ||
|
|
95cdc89795 | ||
|
|
e7f5491239 | ||
|
|
ba78637361 | ||
|
|
b3119749d9 | ||
|
|
cb56b98222 | ||
|
|
2256183422 | ||
|
|
0bfa8219ca | ||
|
|
4c21a68139 | ||
|
|
38cf74d83b | ||
|
|
1867e56739 | ||
|
|
826a69c531 | ||
|
|
7056be0870 | ||
|
|
708dba6cb1 | ||
|
|
164a34a340 | ||
|
|
3593a918b7 | ||
|
|
7d2ac2f55d | ||
|
|
cc4b343cf4 | ||
|
|
597931f79b | ||
|
|
299864a9cf | ||
|
|
014757a0f7 | ||
|
|
032b5b8776 | ||
|
|
44107f9821 | ||
|
|
b49e45827f | ||
|
|
3cd405e9ea | ||
|
|
b17a54a2d2 | ||
|
|
2d6d4d2db0 | ||
|
|
646b7a3118 | ||
|
|
e4c7842f34 | ||
|
|
7490cb81b8 | ||
|
|
9e105a362f | ||
|
|
9c8cbdd0e6 | ||
|
|
635a8a24f2 | ||
|
|
6354d4b911 | ||
|
|
452e8ed8c5 | ||
|
|
8a93e3c64c | ||
|
|
76fc9b78fe | ||
|
|
cf685b404d | ||
|
|
747d97ecfc | ||
|
|
be5fd86aa7 | ||
|
|
963f57868d | ||
|
|
97f0516630 | ||
|
|
c896b445bd | ||
|
|
f06c4f4049 | ||
|
|
937ce34c36 | ||
|
|
cddfd1b319 | ||
|
|
c42892ee35 | ||
|
|
bb3003dc3b | ||
|
|
2858dce664 | ||
|
|
1517ae3fc9 | ||
|
|
cf9c41f437 | ||
|
|
87497d2d09 | ||
|
|
67ab979a9b | ||
|
|
05f23f89ae | ||
|
|
cdc244ec06 | ||
|
|
71308316b1 | ||
|
|
2d1dfece25 | ||
|
|
65577a67dc | ||
|
|
45d5da98ca | ||
|
|
455e067e73 | ||
|
|
6359826fd9 | ||
|
|
8325083402 | ||
|
|
0f1a1d5f56 | ||
|
|
52d6f4343c | ||
|
|
405d55f3f6 | ||
|
|
06010b1366 | ||
|
|
21aa31f963 | ||
|
|
3f709cc39e | ||
|
|
f376e1ab01 | ||
|
|
fb3ba16a92 | ||
|
|
21285f02b8 | ||
|
|
05adf6f907 | ||
|
|
06fa171f7a | ||
|
|
4eae5be995 | ||
|
|
6d02617422 | ||
|
|
c2f07d14f3 | ||
|
|
52fe91f8bc | ||
|
|
98cb0f978e | ||
|
|
977a83cce8 | ||
|
|
4d92f9bf18 | ||
|
|
c459d60fc6 | ||
|
|
ad2e8a3c96 | ||
|
|
7dd9b3fa0c | ||
|
|
340a151302 | ||
|
|
9f70af009f | ||
|
|
bf1a65b8e8 | ||
|
|
037ab02a71 | ||
|
|
0039ec2958 | ||
|
|
08571d51fa | ||
|
|
6ac33b0568 | ||
|
|
373da78b7b | ||
|
|
c3d22335e2 | ||
|
|
4216eec494 | ||
|
|
e88e912c3c | ||
|
|
d06fb83fee | ||
|
|
e0b9a81c9b | ||
|
|
192e4b8877 | ||
|
|
02d44a6cca | ||
|
|
39ba1e0582 | ||
|
|
ae121895e9 | ||
|
|
11ecf20f89 | ||
|
|
3646a7d12d | ||
|
|
db5f45da83 | ||
|
|
52a4bfa25f | ||
|
|
099b62b645 | ||
|
|
e37332a5d2 | ||
|
|
f36cc56c81 | ||
|
|
b20750b936 | ||
|
|
407f58da54 | ||
|
|
fe5bb1d885 | ||
|
|
92f45567d7 | ||
|
|
a4c0e0a59c | ||
|
|
d536377329 | ||
|
|
923f4ed045 | ||
|
|
9191cae144 | ||
|
|
e8c142353c | ||
|
|
ba1e22955e | ||
|
|
c41847c0d7 | ||
|
|
e1d7c25c98 | ||
|
|
3d8e845233 | ||
|
|
0fa126a6b8 | ||
|
|
1961816ba7 | ||
|
|
4410b679a0 | ||
|
|
e6214b3c97 | ||
|
|
7e7637a1b3 | ||
|
|
86b201623d | ||
|
|
785843198a | ||
|
|
bc0f5a9136 | ||
|
|
461e650e05 | ||
|
|
c2132e3772 | ||
|
|
174c7a776e | ||
|
|
730864609f | ||
|
|
784137fdac | ||
|
|
c6aff8424c | ||
|
|
a7a34ac6b2 | ||
|
|
57492023f9 | ||
|
|
aff1e160b4 | ||
|
|
b8d12bd0cd | ||
|
|
5ab33e831d | ||
|
|
dc3b01dc15 | ||
|
|
e96bd5a0e7 | ||
|
|
57c33fe693 | ||
|
|
fc2d7b41d8 | ||
|
|
fd139d4903 | ||
|
|
813d33fc4d | ||
|
|
26addf809e | ||
|
|
a9e090c454 | ||
|
|
59355cf79f | ||
|
|
c200c53268 | ||
|
|
a572ff9fca | ||
|
|
1ab4f99a37 | ||
|
|
99006465e6 | ||
|
|
4a7e9c16d0 | ||
|
|
d416a77866 | ||
|
|
07fe141f8a | ||
|
|
c2de80f532 | ||
|
|
e742bdfacf | ||
|
|
24950a098f | ||
|
|
bed65745cc | ||
|
|
04a4833c6e | ||
|
|
4aa0a733fc | ||
|
|
082191412e | ||
|
|
e3a7d0807e | ||
|
|
0ee3d1160a | ||
|
|
b600bce23f | ||
|
|
952b5fab89 | ||
|
|
6c705e1e25 | ||
|
|
349e8b2da7 | ||
|
|
39ce74c1e0 | ||
|
|
77cf392300 | ||
|
|
b6225ccc38 | ||
|
|
a38eaad281 | ||
|
|
1b6d8a2b8d | ||
|
|
cbc1c935bf | ||
|
|
391bf4113a | ||
|
|
718bff7469 | ||
|
|
e67f60182d | ||
|
|
6bb0d736be | ||
|
|
5bc74fc296 | ||
|
|
fea237a3ea | ||
|
|
6f3cdeda70 | ||
|
|
8476baacc7 | ||
|
|
681f57f703 | ||
|
|
03051a95cf | ||
|
|
80f31f75ad | ||
|
|
e0da4c81da | ||
|
|
57a5b90be7 | ||
|
|
98928dba9d | ||
|
|
c83577cb81 | ||
|
|
39edf1a8ed | ||
|
|
8d10c9aa41 | ||
|
|
0bcb76fa81 | ||
|
|
aceb9e4de7 | ||
|
|
a249ced37c | ||
|
|
375078a9a4 | ||
|
|
273a7d82a2 | ||
|
|
26f5e52ad8 | ||
|
|
2a32f8f681 | ||
|
|
7dad0aa1da | ||
|
|
c742b73133 | ||
|
|
fece31a9aa | ||
|
|
b22a4501cc | ||
|
|
c596039453 | ||
|
|
7eea6ebe57 | ||
|
|
b6a42ecf48 | ||
|
|
95f3d4fffa | ||
|
|
95becde93d | ||
|
|
0538d082dc | ||
|
|
c3b6b8d821 | ||
|
|
c41fbbb93e | ||
|
|
0728d96339 | ||
|
|
abc335143b | ||
|
|
dc9908eac1 | ||
|
|
6274b617f4 | ||
|
|
c5d45c6b44 | ||
|
|
ef1a195036 | ||
|
|
5ac0837be3 | ||
|
|
fbc6f78cb5 | ||
|
|
d6f9fddc94 | ||
|
|
199011feb8 | ||
|
|
98f1d5cd9b | ||
|
|
b9c83ca06d | ||
|
|
f0b7a00ae6 | ||
|
|
a8a9a93317 | ||
|
|
32e9a7fa06 | ||
|
|
88a47e7788 | ||
|
|
4b4a414259 | ||
|
|
68281dce66 | ||
|
|
221cc8ab10 | ||
|
|
c6e47a868b | ||
|
|
0c5c261196 | ||
|
|
c7372aabfd | ||
|
|
7d1dbbb27a | ||
|
|
c00583dd98 | ||
|
|
49ca3bfd00 | ||
|
|
3adc3ed5d2 | ||
|
|
bdca59b3d7 | ||
|
|
d5ab4093a9 | ||
|
|
e6df19efbc | ||
|
|
b7948c5344 | ||
|
|
a13557d71d | ||
|
|
e2338fcedf | ||
|
|
43bfeff2be | ||
|
|
1a489652ff | ||
|
|
1ac92c561b | ||
|
|
cb952b0d3a | ||
|
|
5919dd998b | ||
|
|
320f78b31b | ||
|
|
533bc4c2fe | ||
|
|
eb8aa195c2 | ||
|
|
4197580b04 | ||
|
|
0e92f7bfff | ||
|
|
927277a6cd | ||
|
|
d5696010d9 | ||
|
|
9db37c2799 | ||
|
|
7e7b41cd8c | ||
|
|
fc3a369d3d | ||
|
|
5df766466a | ||
|
|
6814130570 | ||
|
|
cb6160f1e4 | ||
|
|
b00214bdbd | ||
|
|
4643810b75 | ||
|
|
45246bccd7 | ||
|
|
78b44a1319 | ||
|
|
0e6cd0f72a | ||
|
|
0aeba7c5af | ||
|
|
525c00ea18 | ||
|
|
c056bd4d4c | ||
|
|
93682fb42b | ||
|
|
aa9ec603a9 | ||
|
|
6f83bf3af2 | ||
|
|
d5245f0730 | ||
|
|
1b4cc556be | ||
|
|
2efcbd060a | ||
|
|
68ee35d03b | ||
|
|
1b6a43ae15 | ||
|
|
8de26af246 | ||
|
|
c3fd732243 | ||
|
|
3ce0b8bc97 | ||
|
|
2846eea956 | ||
|
|
ca3bedc9a1 | ||
|
|
2d4d7b80c1 | ||
|
|
df85543337 | ||
|
|
e15baeb4a2 | ||
|
|
f16804c0f8 | ||
|
|
934a41e414 | ||
|
|
8621fe2e3c | ||
|
|
bbf2c29a4a | ||
|
|
0a148166e1 | ||
|
|
79b4716b95 | ||
|
|
57437f04c9 | ||
|
|
8bbcd267cd | ||
|
|
e885cb6c45 | ||
|
|
8182141e93 | ||
|
|
d7d2efd58e | ||
|
|
02033a675a | ||
|
|
ca0f7bb74c | ||
|
|
d676ecfaa8 | ||
|
|
a0f556b2a9 | ||
|
|
6071319acd | ||
|
|
e9ddfa6cf9 | ||
|
|
8ee94d75ca | ||
|
|
ec40956721 | ||
|
|
8504d01688 | ||
|
|
c8a932b6b3 | ||
|
|
b1ed51e72c | ||
|
|
b386af4121 | ||
|
|
0daa3a8f57 | ||
|
|
ae42c4df16 | ||
|
|
252ff9d3c5 | ||
|
|
38c9ad6986 | ||
|
|
ad84b222a5 | ||
|
|
c3e4a08b00 | ||
|
|
f589bdc78d | ||
|
|
1a8efdbf2c | ||
|
|
b78e0144de | ||
|
|
3c27b50ff6 | ||
|
|
e8e5c8dff1 | ||
|
|
f66dd51084 | ||
|
|
54096d56d3 | ||
|
|
832119f6b1 | ||
|
|
5abd4dcc66 | ||
|
|
a4936a6ff3 | ||
|
|
ebe4804b00 | ||
|
|
098db9adf6 | ||
|
|
38b3c82ece | ||
|
|
99a7453f28 | ||
|
|
8ade52c8d9 | ||
|
|
a3ca1febbc | ||
|
|
767430d065 | ||
|
|
f9e27ef67c | ||
|
|
4d25d505e0 | ||
|
|
74fb470647 | ||
|
|
6404aac986 | ||
|
|
4fcb8d5540 | ||
|
|
4251ad7d45 | ||
|
|
d87317f937 | ||
|
|
b202b75bf7 | ||
|
|
5761ede9e1 | ||
|
|
cf15cb1e13 | ||
|
|
e5c6136950 | ||
|
|
37f90e6f1c | ||
|
|
6416fe1934 | ||
|
|
3b50428f82 | ||
|
|
d4b22ee472 | ||
|
|
35c8197881 | ||
|
|
a860acaf0d | ||
|
|
dccd240b66 | ||
|
|
35522ae77d | ||
|
|
e40c1ff09e | ||
|
|
d71ddd7ad0 | ||
|
|
ba8300508d | ||
|
|
734505ee73 | ||
|
|
dd65c173a9 | ||
|
|
ebae675961 | ||
|
|
539eadf533 | ||
|
|
3beebd42a8 | ||
|
|
66e00bb79a | ||
|
|
83985aa44c | ||
|
|
bb9684f7d3 | ||
|
|
ddfe79b3ac | ||
|
|
c852ad1d45 | ||
|
|
29f535da94 | ||
|
|
d5b6744a41 | ||
|
|
cbc3cfc33b | ||
|
|
547bd46bb3 | ||
|
|
8b8a303365 | ||
|
|
7b386c4f41 | ||
|
|
5b8fa5ec8d | ||
|
|
2c81ff90da | ||
|
|
66e118abdf | ||
|
|
38791e50ea | ||
|
|
a8c6a97579 | ||
|
|
5bb90828f8 | ||
|
|
e3e5085214 | ||
|
|
9be12da34e | ||
|
|
8e7b40efec | ||
|
|
d7d71d9ff1 | ||
|
|
2d68e3d4f3 | ||
|
|
53236faaa0 | ||
|
|
daca1b3615 | ||
|
|
9a8032a673 | ||
|
|
b11972d1b7 | ||
|
|
041ea2fbb1 | ||
|
|
5167611da5 | ||
|
|
4526378b33 | ||
|
|
bc2a9cf1c0 | ||
|
|
c4a5eeabcc | ||
|
|
00836cd38b | ||
|
|
c0009c7e62 | ||
|
|
6023f415a4 | ||
|
|
f55daf65e3 | ||
|
|
fe3c23d29c | ||
|
|
f0765ba743 | ||
|
|
672c623757 | ||
|
|
e33799701b | ||
|
|
e5e64a4b6d | ||
|
|
63f1c1f7b5 | ||
|
|
005de550c1 | ||
|
|
20fd3bdc20 | ||
|
|
e29f53a82d | ||
|
|
f272470871 | ||
|
|
9c082a573c | ||
|
|
7de0a0a44a | ||
|
|
e848c78dba | ||
|
|
3f60723425 | ||
|
|
8b97914438 | ||
|
|
a8967bab39 | ||
|
|
1248307b96 | ||
|
|
de1491a310 | ||
|
|
b5a08c3ba4 | ||
|
|
49bf86a8d5 | ||
|
|
5e4cfbaf3f | ||
|
|
11aed2ab61 | ||
|
|
e6f19a4abf | ||
|
|
b3b6dc2e94 | ||
|
|
ece09a93cd | ||
|
|
9a56ebea81 | ||
|
|
287e15fddc | ||
|
|
724cb0787d | ||
|
|
d8b806966a | ||
|
|
f24a6f0e3c | ||
|
|
34c516709b | ||
|
|
6d03eac9a1 | ||
|
|
c456ef9118 | ||
|
|
4351080aea | ||
|
|
8aee2858ea | ||
|
|
da5a930e89 | ||
|
|
5131cc8e43 | ||
|
|
60f06f97fa | ||
|
|
c0216e0800 | ||
|
|
2be68342bb | ||
|
|
c43a29f058 | ||
|
|
ab14b9c8bb | ||
|
|
fa3e496aae | ||
|
|
543cd5af80 | ||
|
|
e3cdfe27d1 | ||
|
|
d946e18fa2 | ||
|
|
b33b696336 | ||
|
|
e928b4c9e0 | ||
|
|
2b27e84956 | ||
|
|
9627272b57 | ||
|
|
705354a3d6 | ||
|
|
7d52b0cc96 | ||
|
|
8662e963ac | ||
|
|
08594f0b96 | ||
|
|
7db73cbd44 | ||
|
|
cae8485092 | ||
|
|
64e020b1ad | ||
|
|
2dd2208f48 | ||
|
|
ddc28c43c8 | ||
|
|
7c889e3523 | ||
|
|
af7beb2c34 | ||
|
|
7b50febba3 | ||
|
|
00543bca17 | ||
|
|
178710dabc | ||
|
|
99d9d14d3b | ||
|
|
a07d6aa1e7 | ||
|
|
59a4abff7c | ||
|
|
df0f310ddd | ||
|
|
57a06aa122 | ||
|
|
f110dce520 | ||
|
|
3085799c3c | ||
|
|
3d9b9af55e | ||
|
|
ad21909b5c | ||
|
|
d98d00556d | ||
|
|
5c7a4323e3 | ||
|
|
183701a00a | ||
|
|
549987296c | ||
|
|
9918e49bb1 | ||
|
|
d57ef1e928 | ||
|
|
203af0fc76 | ||
|
|
a446c0a9c9 | ||
|
|
b2aba7918d | ||
|
|
fc2c877a57 | ||
|
|
f2a93887c9 | ||
|
|
b1eb48d201 | ||
|
|
d372d786ef | ||
|
|
dc8df9c62f | ||
|
|
5b3ea08b39 | ||
|
|
72a754676a | ||
|
|
cb1da686ec | ||
|
|
8a78e4e9f4 | ||
|
|
b9b59ac2e0 | ||
|
|
549b982c5f | ||
|
|
558f527f20 | ||
|
|
d897d64aa5 | ||
|
|
59463958d3 | ||
|
|
d4a606884c | ||
|
|
ff3a2f6b67 | ||
|
|
288ac62448 | ||
|
|
f5d3df65b0 | ||
|
|
fc6ac662cd | ||
|
|
cd0d9052e8 | ||
|
|
86da8cbd17 | ||
|
|
7a38143f5e | ||
|
|
818802cf5e | ||
|
|
a668ed5e24 | ||
|
|
c9edc217fd | ||
|
|
89dc9e7e7f | ||
|
|
96b6832dff | ||
|
|
881e414043 | ||
|
|
b5a8312167 | ||
|
|
ac3a282876 | ||
|
|
a3117fa61d | ||
|
|
bfa0db3ba3 | ||
|
|
79fdba969b | ||
|
|
79461d52c2 | ||
|
|
8c7bac7dbb | ||
|
|
bb3b982dea | ||
|
|
f3038e4fef | ||
|
|
cfeb637685 | ||
|
|
f37fd5c5e3 | ||
|
|
4368602684 | ||
|
|
a67ced29a3 | ||
|
|
ca8293ebdb | ||
|
|
4a95dd8ba3 | ||
|
|
1616aa87bd | ||
|
|
9d9400f4d9 | ||
|
|
a6f8eb28f2 | ||
|
|
251834143c | ||
|
|
ad8b6c806d | ||
|
|
26a6264039 | ||
|
|
2dfcee6b25 | ||
|
|
b283977281 | ||
|
|
2538a79ef0 | ||
|
|
267f2afab6 | ||
|
|
559eebbb70 | ||
|
|
326ee9a9c2 | ||
|
|
dc4c33c0d5 | ||
|
|
3fbebfc283 | ||
|
|
7273e1218a | ||
|
|
69e96f24c2 | ||
|
|
92ddf2ca41 | ||
|
|
3662afeaa7 | ||
|
|
860210628e | ||
|
|
a1988f91c1 | ||
|
|
6f6393493b | ||
|
|
878213887f | ||
|
|
805b83da9c | ||
|
|
fe4319ad07 | ||
|
|
1bda9d5a26 | ||
|
|
9ce239dedb | ||
|
|
bc86c9b57d | ||
|
|
d9b9e02412 | ||
|
|
2f7b5dd041 | ||
|
|
5ffb7bba83 | ||
|
|
436bffcb0e | ||
|
|
99ce747720 | ||
|
|
f3fbbed7ee | ||
|
|
b7c024d275 | ||
|
|
cf76c943b8 | ||
|
|
2a0e641de7 | ||
|
|
630456f700 | ||
|
|
618ba376b2 | ||
|
|
c8a445275b | ||
|
|
68b3c449a6 | ||
|
|
aee7d171c5 | ||
|
|
2089406eaf | ||
|
|
298e041b80 | ||
|
|
c79bf1ca3a | ||
|
|
207546b53c | ||
|
|
a54898b062 | ||
|
|
124803c89d | ||
|
|
825128b630 | ||
|
|
dcd20f42b9 | ||
|
|
b6f14a752c | ||
|
|
40f58d7054 | ||
|
|
485afcfa6e | ||
|
|
e82bc859f5 | ||
|
|
5615e02cdb | ||
|
|
4c5a046bc0 | ||
|
|
6b6ab5e752 | ||
|
|
6d3f3985a2 | ||
|
|
64e57c5419 | ||
|
|
7e11c319e7 | ||
|
|
12265def19 | ||
|
|
45f60ae646 | ||
|
|
72988cc6fb | ||
|
|
4d3df4cda6 | ||
|
|
a0b7768a86 | ||
|
|
7aae1b262e | ||
|
|
5ace62a5fd | ||
|
|
48e01d3ea3 | ||
|
|
d93c705737 | ||
|
|
b1a97eca39 | ||
|
|
d91088879c | ||
|
|
21e5f33487 | ||
|
|
48f7c37d3b | ||
|
|
815d911143 | ||
|
|
d90baed5b5 | ||
|
|
e767cee4c0 | ||
|
|
eafce4442c | ||
|
|
3652394dab | ||
|
|
a942882c73 | ||
|
|
b8f829dbc3 | ||
|
|
8d33644749 | ||
|
|
268df23739 | ||
|
|
6c731f50a9 | ||
|
|
dc2f3cd166 | ||
|
|
877ad53ead | ||
|
|
bc7dce6026 | ||
|
|
c24e216f26 | ||
|
|
2d05ecc81f | ||
|
|
437c1a154c | ||
|
|
82d30c6e74 | ||
|
|
998eecb94d | ||
|
|
02e22e5781 | ||
|
|
ad11ca0a87 | ||
|
|
7b0a643de3 | ||
|
|
fa53bce27a | ||
|
|
1d3f1fd7d0 | ||
|
|
5d9a94466a | ||
|
|
b5175ae8b0 | ||
|
|
38948053cc | ||
|
|
4a5a496802 | ||
|
|
30b6c8aa03 | ||
|
|
95e468c90a | ||
|
|
d74dd48d24 | ||
|
|
5ef72b81ae | ||
|
|
691cf1ce72 | ||
|
|
5b70064fa4 | ||
|
|
80e01a4d3d | ||
|
|
b30f3d6b8f | ||
|
|
4672628ee2 | ||
|
|
a112c6d9ee | ||
|
|
2b1e343186 | ||
|
|
36ce0c8271 | ||
|
|
b521318e82 | ||
|
|
9f64a384d6 | ||
|
|
4ecff94aec | ||
|
|
c7e73924c8 | ||
|
|
87958d9db8 | ||
|
|
56fa719931 | ||
|
|
6ee6cd3977 | ||
|
|
7821f41723 | ||
|
|
ddf6154600 | ||
|
|
929cc2727d | ||
|
|
4379145231 | ||
|
|
42d86fab8e | ||
|
|
cb41a4c386 | ||
|
|
672abbcaad | ||
|
|
17bc9c35a7 | ||
|
|
50587735b5 | ||
|
|
21edfdb62e | ||
|
|
bda67afd4f | ||
|
|
c4ca06d5e5 | ||
|
|
f4904e06c8 | ||
|
|
1273a6fb74 | ||
|
|
3c626fd01e | ||
|
|
00953850b3 | ||
|
|
563370f10b | ||
|
|
62a33fe7fc | ||
|
|
ea18fda0a3 | ||
|
|
1ef163f827 | ||
|
|
3f6cb3cd73 | ||
|
|
284767409a | ||
|
|
5e3d29df4c | ||
|
|
c380049b21 | ||
|
|
b49209a0d9 | ||
|
|
9d39b616f9 | ||
|
|
32e0074f26 | ||
|
|
8d746cd206 | ||
|
|
bc341d193f | ||
|
|
3ad2b2bfcc | ||
|
|
acfad7ec5b | ||
|
|
5be6511529 | ||
|
|
f20b4d570e | ||
|
|
06a9478555 | ||
|
|
6e3ca5391a | ||
|
|
2422a4200c | ||
|
|
56788c8b8f | ||
|
|
220ac2fa2d | ||
|
|
3143d0d8aa | ||
|
|
0bb1669efa | ||
|
|
288be8dd71 | ||
|
|
d3bf71a22d | ||
|
|
12abca39a2 | ||
|
|
898c8854aa | ||
|
|
492e33aeda | ||
|
|
ce9c832e00 | ||
|
|
5e0821417e | ||
|
|
ce451e4dd4 | ||
|
|
714d8c7092 | ||
|
|
6162904c59 | ||
|
|
4d65b4c7a5 | ||
|
|
4243843951 | ||
|
|
203965043e | ||
|
|
bf87500e35 | ||
|
|
a038587224 | ||
|
|
96d908094b | ||
|
|
61dc148d34 | ||
|
|
f753369d1a | ||
|
|
72c2fa3863 | ||
|
|
ba0bda6aa6 | ||
|
|
890397bae7 | ||
|
|
d9b2863382 | ||
|
|
ccc8d7e5cd | ||
|
|
50f6044a2f | ||
|
|
31281c7faa | ||
|
|
e9b545a187 | ||
|
|
be1ecdb0c8 | ||
|
|
115e08d0c8 | ||
|
|
e2a892eda3 | ||
|
|
5d536dd975 | ||
|
|
af258dcf41 | ||
|
|
bbb46a29a9 | ||
|
|
3f7c1b0750 | ||
|
|
2b211c2ba0 | ||
|
|
c20314f83c | ||
|
|
57bc1f2032 | ||
|
|
d370f7e721 | ||
|
|
00c8ebbfe8 | ||
|
|
17951d7fe0 | ||
|
|
3e5288836d | ||
|
|
6c94c3aa7b | ||
|
|
6a24794457 | ||
|
|
443e7df1b6 | ||
|
|
82106c1c8b | ||
|
|
32867d3666 | ||
|
|
384b4226f2 | ||
|
|
cecd4aa36a | ||
|
|
0dffd66651 | ||
|
|
c34afae250 | ||
|
|
128453fad1 | ||
|
|
ac3b86fb85 | ||
|
|
e303982ad8 | ||
|
|
df763c4dbd | ||
|
|
85fd46e1c6 | ||
|
|
51b37a49d5 | ||
|
|
4838813a38 | ||
|
|
9867bd257f | ||
|
|
259985d328 | ||
|
|
2c4a9897ea | ||
|
|
2dbc404544 | ||
|
|
3d622a2c5a | ||
|
|
8b342c2ddb | ||
|
|
ca1f441f5a | ||
|
|
0fefead7d5 | ||
|
|
cb9bc6ad12 | ||
|
|
b6d01133c4 | ||
|
|
9ddaee9830 | ||
|
|
a5b54c50d1 | ||
|
|
5c84ffe5dc | ||
|
|
f178c8cce2 | ||
|
|
36bcafea98 | ||
|
|
95cd051a4f | ||
|
|
125c5523e6 | ||
|
|
374ed12811 | ||
|
|
b489e54da4 | ||
|
|
e928c78749 | ||
|
|
34dbed7733 | ||
|
|
6df3066b49 | ||
|
|
10c4b93b60 | ||
|
|
3fabd2975e | ||
|
|
217a7a34f8 | ||
|
|
5855ff0d27 | ||
|
|
3c4a9a05a0 | ||
|
|
9481d04a19 | ||
|
|
90c7bf4413 | ||
|
|
0b09f788c5 | ||
|
|
3045611452 | ||
|
|
0b3d028c2f | ||
|
|
a64be42f39 | ||
|
|
8405301500 | ||
|
|
07ed6a6416 | ||
|
|
970c9e70e4 | ||
|
|
f76f29f533 | ||
|
|
c3ecf2d84e | ||
|
|
a7dfb9cb97 | ||
|
|
225d46b228 | ||
|
|
f399ef8f69 | ||
|
|
c61db8c957 | ||
|
|
30afc095b9 | ||
|
|
755e7bc232 | ||
|
|
80e38fc430 | ||
|
|
581423a87c | ||
|
|
3634ca624d | ||
|
|
be33ac3c4f | ||
|
|
1cf79d8fbc | ||
|
|
acba67f67d | ||
|
|
1573738584 | ||
|
|
5376171538 | ||
|
|
90c41aceab | ||
|
|
6e10dc2893 | ||
|
|
87ce03e13e | ||
|
|
4db7577448 | ||
|
|
afdee44dd1 | ||
|
|
d929205bec | ||
|
|
0758d4f567 | ||
|
|
db0f228f4d | ||
|
|
a30f60c2ba | ||
|
|
1d13943caf | ||
|
|
e91e4042ba | ||
|
|
18720904f9 | ||
|
|
8d2aa1fc09 | ||
|
|
0e5155c85a | ||
|
|
3144a54c5b | ||
|
|
49362ce5ab | ||
|
|
13e629e17d | ||
|
|
8eb2f66b14 | ||
|
|
4fb0279f9a | ||
|
|
5d1006f05b | ||
|
|
eee76222bd | ||
|
|
4121bbc772 | ||
|
|
7926dd9aeb | ||
|
|
20ffcfb91e | ||
|
|
961bfcc481 | ||
|
|
eee50eef46 | ||
|
|
1329f3d2c7 | ||
|
|
0e812b911e | ||
|
|
28bd5f33c6 | ||
|
|
673b72f327 | ||
|
|
3fea8eb820 | ||
|
|
6e2e067d66 | ||
|
|
e09fe4acf0 | ||
|
|
0385662197 | ||
|
|
4ba222f19c | ||
|
|
6820a05efc | ||
|
|
0982e12a80 | ||
|
|
0536a2be33 | ||
|
|
24c5aae77f | ||
|
|
a972a52be4 | ||
|
|
f473c29430 | ||
|
|
7cd9768880 | ||
|
|
0a45a6fea9 | ||
|
|
9805ab8761 | ||
|
|
b4bb98b230 | ||
|
|
e11e141b5e | ||
|
|
83e199a0de | ||
|
|
4e87211d39 | ||
|
|
88208285a4 | ||
|
|
ae062586d7 | ||
|
|
fa72389c07 | ||
|
|
ea94cb8650 | ||
|
|
39d6ccd11c | ||
|
|
a62b225fe0 | ||
|
|
a72d1a13b6 | ||
|
|
60df499584 | ||
|
|
10204a4526 | ||
|
|
a5d63bc383 | ||
|
|
fcd276dccb | ||
|
|
fc66fba577 | ||
|
|
f1697313c0 | ||
|
|
6d8244ba5c | ||
|
|
102d5fdd7f | ||
|
|
2a86b06e0c | ||
|
|
7b4d6ba57e | ||
|
|
7be02731ee | ||
|
|
3cfa4f9cb7 | ||
|
|
10302f4bc9 | ||
|
|
b576ee300b | ||
|
|
77afcc2293 | ||
|
|
574e711f33 | ||
|
|
4cab77a57d | ||
|
|
6cbc9493c9 | ||
|
|
1d5f72f9ab | ||
|
|
b8e034e33c | ||
|
|
4f8c6e64fb | ||
|
|
39aadaa220 | ||
|
|
5c373f0d25 | ||
|
|
088c3984d8 | ||
|
|
3a61a7992a | ||
|
|
d694791d0f | ||
|
|
5e9ea4196c | ||
|
|
e7f000147b | ||
|
|
15e27e7e1d | ||
|
|
855d75f1bb | ||
|
|
e8f3a30a72 | ||
|
|
948e44d867 | ||
|
|
c0e671d506 | ||
|
|
2d895b52a4 | ||
|
|
4436a72b9f | ||
|
|
f1ce98eb07 | ||
|
|
418aa44960 | ||
|
|
b91850262d | ||
|
|
ed2dc101bb | ||
|
|
d89968cfa5 | ||
|
|
5f7c1ea4f4 | ||
|
|
e307524458 | ||
|
|
53cb4189d8 | ||
|
|
3efe3d63ce | ||
|
|
e44a05f18d | ||
|
|
d9574591fd | ||
|
|
55c27516b2 | ||
|
|
659ff866e1 | ||
|
|
f01de3a69d | ||
|
|
0c75cf6055 | ||
|
|
95613a1881 | ||
|
|
7bcbe5d791 | ||
|
|
bcc2ca7ce9 | ||
|
|
365ca9180f | ||
|
|
cfe1e7745f | ||
|
|
d0d9de8583 | ||
|
|
a304d75645 | ||
|
|
9f4f27d08f | ||
|
|
73530f59de | ||
|
|
6807dcbd5d | ||
|
|
e275ce6063 | ||
|
|
6352408d87 | ||
|
|
6870e03ffe | ||
|
|
d4641b45ac | ||
|
|
fad796f834 | ||
|
|
9e874b241a | ||
|
|
3f83361a7a | ||
|
|
a75b7b9be6 | ||
|
|
e4898bbbb3 | ||
|
|
132d5ec8cc | ||
|
|
59741ed04a | ||
|
|
fad6a406a1 | ||
|
|
4ee0731472 | ||
|
|
4fe530d257 | ||
|
|
d23eb291f7 | ||
|
|
3bbe54bb71 | ||
|
|
7aca726c33 | ||
|
|
3f1064b22d | ||
|
|
6fdbc9cdfa | ||
|
|
12b03518ee | ||
|
|
fcd3a86589 | ||
|
|
2ee671a1ae | ||
|
|
47a0642c4d | ||
|
|
db1cd3efbc | ||
|
|
f6803a2c52 | ||
|
|
f8d810a787 | ||
|
|
c8d865e26b | ||
|
|
e1c7705182 | ||
|
|
6aed2ec311 | ||
|
|
4c3f51cae3 | ||
|
|
f3088d1c49 | ||
|
|
be25226172 | ||
|
|
33d7e40e7c | ||
|
|
9eefd8839c | ||
|
|
d748e34d7e | ||
|
|
cefa8326e3 | ||
|
|
60f4937aae | ||
|
|
841e90dc46 | ||
|
|
81467a86cc | ||
|
|
498634fd13 | ||
|
|
d751805254 | ||
|
|
7c2e2a01c2 | ||
|
|
0b70c5225d | ||
|
|
b07d1b027c | ||
|
|
58801f8fb6 | ||
|
|
c589978e84 | ||
|
|
36f3c293f0 | ||
|
|
54417115f3 | ||
|
|
4006e4045c | ||
|
|
bdf57b5203 | ||
|
|
1d27ffbffb | ||
|
|
c36b5c77fc | ||
|
|
ac5cd90cc6 | ||
|
|
e0eb8c83e2 | ||
|
|
b8f513fffe | ||
|
|
7d4dd9c699 | ||
|
|
a254b996e0 | ||
|
|
6b9f96697b | ||
|
|
dc5eeb8476 | ||
|
|
7d40105023 | ||
|
|
3d73dc2fb7 | ||
|
|
94f217f4d7 | ||
|
|
00319c1fe2 | ||
|
|
67ac5a9c6a | ||
|
|
79b3b0fffc | ||
|
|
ab6a29191d | ||
|
|
636350c395 | ||
|
|
c076717133 | ||
|
|
943a438a6c | ||
|
|
a104693f97 | ||
|
|
8283c89614 | ||
|
|
c9790d7bb8 | ||
|
|
80ec16b9bd | ||
|
|
479945455b | ||
|
|
4512854c2a | ||
|
|
70950b8267 | ||
|
|
eec96b8549 | ||
|
|
30961babde | ||
|
|
a00c530f36 | ||
|
|
0af1e06c57 | ||
|
|
c0d52ef905 | ||
|
|
59d9840d7b | ||
|
|
9a2ffc1d7c | ||
|
|
c8fcfcd28c | ||
|
|
ac81d38acc | ||
|
|
9bc4b74888 | ||
|
|
2ec71c9942 | ||
|
|
343da4878d | ||
|
|
45f32ba62c | ||
|
|
f157e6a9f5 | ||
|
|
33485024af | ||
|
|
90efb967fe | ||
|
|
5fa62151f6 | ||
|
|
3a55985b20 | ||
|
|
4a0411b7fc | ||
|
|
7094675d5e | ||
|
|
cf7ae90097 | ||
|
|
53b19dad87 | ||
|
|
b10caecbba | ||
|
|
60d64ad2a6 | ||
|
|
fd71200284 | ||
|
|
de13ad1cd5 | ||
|
|
97bd617566 | ||
|
|
2583b38a17 | ||
|
|
e1f71cae37 | ||
|
|
d78ecdc203 | ||
|
|
0dd540a048 | ||
|
|
d8536c20b0 | ||
|
|
1a5bc2ddfe | ||
|
|
61c1232690 | ||
|
|
2554165963 | ||
|
|
fc4778159c | ||
|
|
d2105a7169 | ||
|
|
19ec14e4c2 | ||
|
|
3dbef1400c | ||
|
|
4ca0453cff | ||
|
|
fc07979966 | ||
|
|
7dda2df54b | ||
|
|
0d95636b0f | ||
|
|
9ad424c537 | ||
|
|
8c57dde0a6 | ||
|
|
31bbf3cfd5 | ||
|
|
9d404b6679 | ||
|
|
dc274aed48 | ||
|
|
51eda2ef74 | ||
|
|
f30f6378ac | ||
|
|
3b09276395 | ||
|
|
dbdd6c701b | ||
|
|
eb094eaebb | ||
|
|
9177f4b47d | ||
|
|
d4446b2605 | ||
|
|
356db288ad | ||
|
|
8a6690b6df | ||
|
|
1281059076 | ||
|
|
4622c86ae1 | ||
|
|
5c6b741dc4 | ||
|
|
25cedff47a | ||
|
|
5971802eb9 | ||
|
|
b40ff9ef66 | ||
|
|
3b2e54a156 | ||
|
|
b3f3cd2ffd | ||
|
|
288b46947d | ||
|
|
98add4b958 | ||
|
|
99b1c5a456 | ||
|
|
305fc52e73 | ||
|
|
425b209414 | ||
|
|
58b016a9c0 | ||
|
|
6c17107f39 | ||
|
|
8b153121ac | ||
|
|
4fc1169fa3 | ||
|
|
27dde4e70d | ||
|
|
10cbe25f17 | ||
|
|
14edd948ac | ||
|
|
386b54cf6a | ||
|
|
c068366ae2 | ||
|
|
bc85b3599e | ||
|
|
4d299f5b17 | ||
|
|
224c3eb99c | ||
|
|
4e537ac4d8 | ||
|
|
fe124310de | ||
|
|
19f25e45bb | ||
|
|
1fa4be9ebb | ||
|
|
f4e74065ec | ||
|
|
f07cd08789 | ||
|
|
28bddb713b | ||
|
|
0b86e0ae41 | ||
|
|
da058197c7 | ||
|
|
cf0d7067eb | ||
|
|
baa50069cf | ||
|
|
aab0bf369d | ||
|
|
07c13d84be | ||
|
|
47982d092b | ||
|
|
ef63f11bbb | ||
|
|
46e0656fe9 | ||
|
|
bdc2decd06 | ||
|
|
69204e3998 | ||
|
|
4419c20f33 | ||
|
|
f9ffa9c387 | ||
|
|
b402bd6c0e | ||
|
|
4f7c96326d | ||
|
|
ad36bd23c8 | ||
|
|
86fe78ba95 | ||
|
|
9678f1d1f2 | ||
|
|
d0d6ddd3c1 | ||
|
|
6dcd2e4b03 | ||
|
|
b9c58adae6 | ||
|
|
b7893c2820 | ||
|
|
fd1de0ef85 | ||
|
|
9c1fba3d79 | ||
|
|
1185bd5d86 | ||
|
|
70616de215 | ||
|
|
acf564756e | ||
|
|
616b9af5ed | ||
|
|
38b20987fb | ||
|
|
5f6d3078b7 | ||
|
|
2e0a8ee657 | ||
|
|
659a1dbe53 | ||
|
|
753124ec27 | ||
|
|
73dab9ebf4 | ||
|
|
716d6aca9f | ||
|
|
ec761802eb | ||
|
|
1a782a6938 | ||
|
|
63d693b388 | ||
|
|
5b1563b851 | ||
|
|
d794c4c81f | ||
|
|
70f0d8d558 | ||
|
|
2c50adb6f2 | ||
|
|
71c4d60bbf | ||
|
|
798faff7b2 | ||
|
|
94ed77353e | ||
|
|
a7159ecf1d | ||
|
|
b65f562c61 | ||
|
|
9918b4ee42 | ||
|
|
069781bcdd | ||
|
|
3596a5588d | ||
|
|
69890972bc | ||
|
|
313dd0cc6a | ||
|
|
dc30e4f8e0 | ||
|
|
a7b3ef34d8 | ||
|
|
f0b728a71b | ||
|
|
dfce6564a1 | ||
|
|
3b924ff1e6 | ||
|
|
15bc01576a | ||
|
|
19f4f6e1cc | ||
|
|
ea4e25ea28 | ||
|
|
fd6ea77f7b | ||
|
|
1b382e4391 | ||
|
|
091aba7aad | ||
|
|
49c151c1b4 | ||
|
|
3ffc4fad6d | ||
|
|
73dc6b768f | ||
|
|
413d8e6662 | ||
|
|
5d2ce27ea8 | ||
|
|
1d3a1a1345 | ||
|
|
9adf764af8 | ||
|
|
8ef6827bd9 | ||
|
|
79d011bd5c | ||
|
|
430ce9c136 | ||
|
|
fe7afe3dec | ||
|
|
8922cc72fc | ||
|
|
200181623e | ||
|
|
ab24afa31d | ||
|
|
b38fa395ce | ||
|
|
62475f9bcf | ||
|
|
674d6389b7 | ||
|
|
7ae98ca9fe | ||
|
|
13ed55ac10 | ||
|
|
fce020f4dd | ||
|
|
8c2376457b | ||
|
|
1dde832e31 | ||
|
|
8c86ae2461 | ||
|
|
695abb481d | ||
|
|
7f769e00b9 | ||
|
|
b2e4544b52 | ||
|
|
7d1ee33e1f | ||
|
|
2ade16a87a | ||
|
|
67fd2b4ac0 | ||
|
|
26294a5742 | ||
|
|
db8371d3af | ||
|
|
f308496ef9 | ||
|
|
a0507bd14d | ||
|
|
92d95db40b | ||
|
|
2309d30909 | ||
|
|
0f023113ec | ||
|
|
b3e5f09c83 | ||
|
|
2f5a4f63b6 | ||
|
|
85515079d6 | ||
|
|
a9123d2966 | ||
|
|
efdd8daa01 | ||
|
|
8f2d69b7f7 | ||
|
|
18ee6ecf80 | ||
|
|
5a3669cbe7 | ||
|
|
a1c78b3a44 | ||
|
|
4e0ea5f941 | ||
|
|
c425313ae6 | ||
|
|
4736921d05 | ||
|
|
45aedd8111 | ||
|
|
445f06f4b3 | ||
|
|
b8fbc837dc | ||
|
|
72bcc16a46 | ||
|
|
729640d6ec | ||
|
|
fcdb9e39c6 | ||
|
|
953adadd62 | ||
|
|
a9fa1fb66b | ||
|
|
8c7547ab03 | ||
|
|
e94fed0137 | ||
|
|
353a8ff768 | ||
|
|
3442081d20 | ||
|
|
67f14d6a62 | ||
|
|
9e1980f843 | ||
|
|
495e0ce89b | ||
|
|
76fa97e0a0 | ||
|
|
cc49948a59 | ||
|
|
5adcbb775d | ||
|
|
02ed3e4e8b | ||
|
|
f9ff9af094 | ||
|
|
529b8c2183 | ||
|
|
fa3ae62254 | ||
|
|
71ccbb9336 | ||
|
|
9f22a6d26d | ||
|
|
4db3bd7423 | ||
|
|
4393b0c80d | ||
|
|
c217828c18 | ||
|
|
a502f69b34 | ||
|
|
6f3e0f5162 | ||
|
|
0e44cae1e3 | ||
|
|
99b0defcf7 | ||
|
|
c6be74ac5b | ||
|
|
84af5a277e | ||
|
|
266e3ab270 | ||
|
|
1da5a0a4ca | ||
|
|
2c17d450dd | ||
|
|
41c4cbe3a6 | ||
|
|
c7dfaac61a | ||
|
|
36018fe570 | ||
|
|
e8b284a89c | ||
|
|
a8ea9a8dbe | ||
|
|
78f26a3689 | ||
|
|
671db12336 | ||
|
|
a5dc3bcc75 | ||
|
|
54819eb367 | ||
|
|
71ec4ad403 | ||
|
|
8644fb66c0 | ||
|
|
71b5d4fe5a | ||
|
|
abedc0be80 | ||
|
|
63072205d6 | ||
|
|
0ac7d9829a | ||
|
|
7989ca7504 | ||
|
|
56118a7142 | ||
|
|
93d8f66afc | ||
|
|
ea0e80b12b | ||
|
|
cfdb5456aa | ||
|
|
5baeadbe92 | ||
|
|
8a57a32233 | ||
|
|
af954a0578 | ||
|
|
b6bbd6899e | ||
|
|
f7edc853da | ||
|
|
820d0cde86 | ||
|
|
2249bbb0f5 | ||
|
|
4a37a6f497 | ||
|
|
0ce742fa8a | ||
|
|
86725b1ef1 | ||
|
|
7a3ec4194e | ||
|
|
53120faeba | ||
|
|
c9ca331d30 | ||
|
|
cce3749563 | ||
|
|
f389b1ae93 | ||
|
|
a275ce8738 | ||
|
|
03dfa19c0e | ||
|
|
b5087002d2 | ||
|
|
4df5cdd312 | ||
|
|
73867d87d7 | ||
|
|
76009ca6eb | ||
|
|
935d26f956 | ||
|
|
8d931e290a | ||
|
|
1cd846fbf1 | ||
|
|
c284d5d2f4 | ||
|
|
713a794e9a | ||
|
|
e1cc09a837 | ||
|
|
3ebb35ac6a | ||
|
|
3f377d4efc | ||
|
|
881d265579 | ||
|
|
70339423d0 | ||
|
|
a5f3359d32 | ||
|
|
13f00edefd | ||
|
|
97b5526cc1 | ||
|
|
3901422a54 | ||
|
|
2db2136117 | ||
|
|
fc40ed52f3 | ||
|
|
b2081dcbc9 | ||
|
|
fd42549733 | ||
|
|
07d002da48 | ||
|
|
dc51bc39ab | ||
|
|
411932c96b | ||
|
|
1eb3f449e2 | ||
|
|
188e7910dd | ||
|
|
5893564f46 | ||
|
|
bdf77b2782 | ||
|
|
ece5cc7dd5 | ||
|
|
db18b0f8e2 | ||
|
|
94cd2c0599 | ||
|
|
87225e64fa | ||
|
|
fffb97ea8d | ||
|
|
57b381311c | ||
|
|
121db63778 | ||
|
|
dcf52085ae | ||
|
|
2d339ba00a | ||
|
|
422e19724a | ||
|
|
f25f4f7dc8 | ||
|
|
c8fca3d63f | ||
|
|
fd1ee23adc | ||
|
|
a540165280 |
12
.config/dotnet-tools.json
Normal file
12
.config/dotnet-tools.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": 1,
|
||||
"isRoot": true,
|
||||
"tools": {
|
||||
"dotnet-consolidate": {
|
||||
"version": "2.0.0",
|
||||
"commands": [
|
||||
"dotnet-consolidate"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
18
.gitattributes
vendored
18
.gitattributes
vendored
@@ -1 +1,19 @@
|
||||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
*.cs text eol=crlf
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
*.rc diff
|
||||
|
||||
*.gcode linguist-detectable=false
|
||||
|
||||
*.vsconfig linguist-language=json
|
||||
|
||||
37
.github/ISSUE_TEMPLATE/bug_report.md
vendored
37
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,37 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Report errors or unexpected behavior
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
**Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**.
|
||||
Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue.
|
||||
-->
|
||||
|
||||
# Environment
|
||||
|
||||
```
|
||||
Windows build number: [run "ver" at a command prompt]
|
||||
PowerToys version:
|
||||
PowerToy module for which you are reporting the bug (if applicable):
|
||||
```
|
||||
|
||||
# Steps to reproduce
|
||||
|
||||
<!-- A description of how to trigger this bug. -->
|
||||
|
||||
# Expected behavior
|
||||
|
||||
<!-- A description of what you're expecting, possibly containing screenshots or reference material. -->
|
||||
|
||||
# Actual behavior
|
||||
|
||||
<!-- What's actually happening? -->
|
||||
|
||||
# Screenshots
|
||||
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
107
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
107
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
name: "🕷️ Bug report"
|
||||
description: Report errors or unexpected behavior
|
||||
labels:
|
||||
- Issue-Bug
|
||||
- Needs-Triage
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please make sure to [search for existing issues](https://github.com/microsoft/PowerToys/issues) before filing a new one!
|
||||
- type: input
|
||||
attributes:
|
||||
label: Microsoft PowerToys version
|
||||
placeholder: 0.63.0
|
||||
description: Hover over system tray icon or look at Settings
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Installation method
|
||||
description: How / Where was PowerToys installed from?
|
||||
multiple: true
|
||||
options:
|
||||
- GitHub
|
||||
- PowerToys auto-update
|
||||
- Microsoft Store
|
||||
- WinGet
|
||||
- Chocolatey
|
||||
- Scoop
|
||||
- Dev build in Visual Studio
|
||||
- Other (please specify in "Steps to Reproduce")
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Running as admin
|
||||
description: Are you running PowerToys as Admin?
|
||||
options:
|
||||
- "Yes"
|
||||
- "No"
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Area(s) with issue?
|
||||
description: What things had an issue? Check all that apply.
|
||||
multiple: true
|
||||
options:
|
||||
- General
|
||||
- Always on Top
|
||||
- Awake
|
||||
- ColorPicker
|
||||
- FancyZones
|
||||
- FancyZones Editor
|
||||
- File Locksmith
|
||||
- "File Explorer: Preview Pane"
|
||||
- "File Explorer: Thumbnail preview"
|
||||
- Hosts File Editor
|
||||
- Image Resizer
|
||||
- Installer
|
||||
- Keyboard Manager
|
||||
- Mouse Utilities
|
||||
- PowerRename
|
||||
- PowerToys Run
|
||||
- Quick Accent
|
||||
- Screen ruler
|
||||
- Settings
|
||||
- Shortcut Guide
|
||||
- System tray interaction
|
||||
- TextExtractor
|
||||
- Video Conference Mute
|
||||
- Welcome / PowerToys Tour window
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: We highly suggest including screenshots and a bug report log (System tray > Report bug).
|
||||
placeholder: Having detailed steps helps us reproduce the bug.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ✔️ Expected Behavior
|
||||
placeholder: What were you expecting?
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ❌ Actual Behavior
|
||||
placeholder: What happened instead?
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Other Software
|
||||
description: If you're reporting a bug about our interaction with other software, what software? What versions?
|
||||
placeholder: |
|
||||
vim 8.2 (inside WSL)
|
||||
OpenSSH_for_Windows_8.1p1
|
||||
My Cool Application v0.3 (include a code snippet if it would help!)
|
||||
validations:
|
||||
required: false
|
||||
12
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
12
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: "\U0001F6A8 Microsoft Security Response Center (MSRC)"
|
||||
url: https://msrc.microsoft.com/create-report
|
||||
about: Report security bugs
|
||||
- name: "\U0001F4DA PowerToys user documentation"
|
||||
url: https://aka.ms/powertoys-docs
|
||||
about: Documentation for users of PowerToys utilities
|
||||
- name: "\U0001F4DA PowerToys dev documentation"
|
||||
url: https://github.com/microsoft/PowerToys/tree/main/doc/devdocs
|
||||
about: Documentation for people interested in developing and contributing for PowerToys
|
||||
|
||||
10
.github/ISSUE_TEMPLATE/documentation-issue.md
vendored
10
.github/ISSUE_TEMPLATE/documentation-issue.md
vendored
@@ -1,10 +0,0 @@
|
||||
---
|
||||
name: Documentation Issue
|
||||
about: Report issues in our documentation
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!-- Briefly describe which document needs to be corrected and why. -->
|
||||
12
.github/ISSUE_TEMPLATE/documentation-issue.yml
vendored
Normal file
12
.github/ISSUE_TEMPLATE/documentation-issue.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
name: "📚 Documentation Issue"
|
||||
description: Report issues in our documentation
|
||||
labels:
|
||||
- Issue-Docs
|
||||
- Needs-Triage
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Provide a description of requested docs changes
|
||||
placeholder: Briefly describe which document needs to be corrected and why.
|
||||
validations:
|
||||
required: true
|
||||
21
.github/ISSUE_TEMPLATE/feature_request.md
vendored
21
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@@ -1,21 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
# Summary of the new feature/enhancement
|
||||
|
||||
<!--
|
||||
A clear and concise description of what the problem is that the new feature would solve.
|
||||
Describe why and how a user would use this new functionality (if applicable).
|
||||
-->
|
||||
|
||||
# Proposed technical implementation details (optional)
|
||||
|
||||
<!--
|
||||
A clear and concise description of what you want to happen.
|
||||
-->
|
||||
26
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
26
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: "⭐ Feature or enhancement request"
|
||||
description: Propose something new.
|
||||
labels:
|
||||
- Needs-Triage
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description of the new feature / enhancement
|
||||
placeholder: What is the expected behavior of the proposed feature?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Scenario when this would be used?
|
||||
placeholder: What is the scenario this would be used? Why is this important to your workflow as a power user?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Supporting information
|
||||
placeholder: "Having additional evidence, data, tweets, blog posts, research, ... anything is extremely helpful. This information provides context to the scenario that may otherwise be lost."
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please limit one request per issue.
|
||||
72
.github/ISSUE_TEMPLATE/translation_issue.yml
vendored
Normal file
72
.github/ISSUE_TEMPLATE/translation_issue.yml
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
name: "🌐 Localization/Translation issue"
|
||||
description: Report incorrect translations.
|
||||
labels:
|
||||
- Issue-Bug
|
||||
- Area-Localization
|
||||
- Issue-Translation
|
||||
- Needs-Triage
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Please make sure to [search for existing issues](https://github.com/microsoft/PowerToys/issues) before filing a new one!
|
||||
- type: input
|
||||
attributes:
|
||||
label: Microsoft PowerToys version
|
||||
placeholder: 0.63.0
|
||||
description: Hover over system tray icon or look at Settings
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Utility with translation issue
|
||||
options:
|
||||
- General
|
||||
- Always on Top
|
||||
- Awake
|
||||
- ColorPicker
|
||||
- FancyZones
|
||||
- FancyZones Editor
|
||||
- File Locksmith
|
||||
- "File Explorer: Preview Pane"
|
||||
- "File Explorer: Thumbnail preview"
|
||||
- Hosts File Editor
|
||||
- Image Resizer
|
||||
- Installer
|
||||
- Keyboard Manager
|
||||
- Mouse Utilities
|
||||
- PowerRename
|
||||
- PowerToys Run
|
||||
- Quick Accent
|
||||
- Screen ruler
|
||||
- Settings
|
||||
- Shortcut Guide
|
||||
- System tray interaction
|
||||
- TextExtractor
|
||||
- Video Conference Mute
|
||||
- Welcome / PowerToys Tour window
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: 🌐 Language affected
|
||||
placeholder: "German"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ❌ Actual phrase(s)
|
||||
placeholder: What is there? Please include a screenshot as that is extremely helpful.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ✔️ Expected phrase(s)
|
||||
placeholder: What was expected?
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: ℹ Why is the current translation wrong
|
||||
placeholder: Why do you feel this is incorrect?
|
||||
validations:
|
||||
required: true
|
||||
16
.github/actions/spell-check/README.md
vendored
Normal file
16
.github/actions/spell-check/README.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# check-spelling/check-spelling configuration
|
||||
|
||||
File | Purpose | Format | Info
|
||||
-|-|-|-
|
||||
[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
|
||||
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
|
||||
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
|
||||
[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
|
||||
[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||
[candidate.patterns](candidate.patterns) | Patterns that might be worth adding to [patterns.txt](patterns.txt) | perl regular expression with optional comment block introductions (all matches will be suggested) | [candidates](https://github.com/check-spelling/check-spelling/wiki/Feature:-Suggest-patterns)
|
||||
[line_forbidden.patterns](line_forbidden.patterns) | Patterns to flag in checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
|
||||
[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
|
||||
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
|
||||
|
||||
Note: you can replace any of these files with a directory by the same name (minus the suffix)
|
||||
and then include multiple files inside that directory (with that suffix) to merge multiple files together.
|
||||
25
.github/actions/spell-check/advice.md
vendored
Normal file
25
.github/actions/spell-check/advice.md
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
|
||||
<details><summary>If the flagged items are :exploding_head: false positives</summary>
|
||||
|
||||
If items relate to a ...
|
||||
* binary file (or some other file you wouldn't want to check at all).
|
||||
|
||||
Please add a file path to the `excludes.txt` file matching the containing file.
|
||||
|
||||
File paths are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
|
||||
|
||||
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
|
||||
../tree/HEAD/README.md) (on whichever branch you're using).
|
||||
|
||||
* well-formed pattern.
|
||||
|
||||
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
|
||||
try adding it to the `patterns.txt` file.
|
||||
|
||||
Patterns are Perl 5 Regular Expressions - you can [test](
|
||||
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
|
||||
|
||||
Note that patterns can't match multiline strings.
|
||||
|
||||
</details>
|
||||
9
.github/actions/spell-check/allow/allow.txt
vendored
Normal file
9
.github/actions/spell-check/allow/allow.txt
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
bkmeneguello
|
||||
FWest
|
||||
github
|
||||
https
|
||||
obairka
|
||||
ssh
|
||||
ubuntu
|
||||
unuing
|
||||
wil
|
||||
18
.github/actions/spell-check/allow/names.txt
vendored
Normal file
18
.github/actions/spell-check/allow/names.txt
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
ABradley
|
||||
azchohfi
|
||||
bdoserror
|
||||
crutkas
|
||||
dependabot
|
||||
Deuchert
|
||||
edwinzap
|
||||
hallatore
|
||||
jefflord
|
||||
mshtang
|
||||
naveensrinivasan
|
||||
nVidia
|
||||
robmen
|
||||
skycommand
|
||||
snickler
|
||||
sinclairinat
|
||||
Vidia
|
||||
yifan
|
||||
523
.github/actions/spell-check/candidate.patterns
vendored
Normal file
523
.github/actions/spell-check/candidate.patterns
vendored
Normal file
@@ -0,0 +1,523 @@
|
||||
# marker to ignore all code on line
|
||||
^.*/\* #no-spell-check-line \*/.*$
|
||||
# marker for ignoring a comment to the end of the line
|
||||
// #no-spell-check.*$
|
||||
|
||||
# patch hunk comments
|
||||
^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .*
|
||||
# git index header
|
||||
index [0-9a-z]{7,40}\.\.[0-9a-z]{7,40}
|
||||
|
||||
# cid urls
|
||||
(['"])cid:.*?\g{-1}
|
||||
|
||||
# data url in parens
|
||||
\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\)
|
||||
# data url in quotes
|
||||
([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1}
|
||||
# data url
|
||||
data:[-a-zA-Z=;:/0-9+]*,\S*
|
||||
|
||||
# mailto urls
|
||||
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
|
||||
|
||||
# magnet urls
|
||||
magnet:[?=:\w]+
|
||||
|
||||
# magnet urls
|
||||
"magnet:[^"]+"
|
||||
|
||||
# obs:
|
||||
"obs:[^"]*"
|
||||
|
||||
# The `\b` here means a break, it's the fancy way to handle urls, but it makes things harder to read
|
||||
# In this examples content, I'm using a number of different ways to match things to show various approaches
|
||||
# asciinema
|
||||
\basciinema\.org/a/[0-9a-zA-Z]+
|
||||
|
||||
# apple
|
||||
\bdeveloper\.apple\.com/[-\w?=/]+
|
||||
# Apple music
|
||||
\bembed\.music\.apple\.com/fr/playlist/usr-share/[-\w.]+
|
||||
|
||||
# appveyor api
|
||||
\bci\.appveyor\.com/api/projects/status/[0-9a-z]+
|
||||
# appveyor project
|
||||
\bci\.appveyor\.com/project/(?:[^/\s"]*/){2}builds?/\d+/job/[0-9a-z]+
|
||||
|
||||
# Amazon
|
||||
|
||||
# Amazon
|
||||
\bamazon\.com/[-\w]+/(?:dp/[0-9A-Z]+|)
|
||||
# AWS S3
|
||||
\b\w*\.s3[^.]*\.amazonaws\.com/[-\w/&#%_?:=]*
|
||||
# AWS execute-api
|
||||
\b[0-9a-z]{10}\.execute-api\.[-0-9a-z]+\.amazonaws\.com\b
|
||||
# AWS ELB
|
||||
\b\w+\.[-0-9a-z]+\.elb\.amazonaws\.com\b
|
||||
# AWS SNS
|
||||
\bsns\.[-0-9a-z]+.amazonaws\.com/[-\w/&#%_?:=]*
|
||||
# AWS VPC
|
||||
vpc-\w+
|
||||
|
||||
# While you could try to match `http://` and `https://` by using `s?` in `https?://`, sometimes there
|
||||
# YouTube url
|
||||
\b(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|user/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_%]*
|
||||
# YouTube music
|
||||
\bmusic\.youtube\.com/youtubei/v1/browse(?:[?&]\w+=[-a-zA-Z0-9?&=_]*)
|
||||
# YouTube tag
|
||||
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
|
||||
# YouTube image
|
||||
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
|
||||
# Google Accounts
|
||||
\baccounts.google.com/[-_/?=.:;+%&0-9a-zA-Z]*
|
||||
# Google Analytics
|
||||
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
|
||||
# Google APIs
|
||||
\bgoogleapis\.(?:com|dev)/[a-z]+/(?:v\d+/|)[a-z]+/[-@:./?=\w+|&]+
|
||||
# Google Storage
|
||||
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
|
||||
# Google Calendar
|
||||
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
|
||||
\w+\@group\.calendar\.google\.com\b
|
||||
# Google DataStudio
|
||||
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
|
||||
# The leading `/` here is as opposed to the `\b` above
|
||||
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
|
||||
# Google Docs
|
||||
/docs\.google\.com/[a-z]+/(?:ccc\?key=\w+|(?:u/\d+|d/(?:e/|)[0-9a-zA-Z_-]+/)?(?:edit\?[-\w=#.]*|/\?[\w=&]*|))
|
||||
# Google Drive
|
||||
\bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]*
|
||||
# Google Groups
|
||||
\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)*
|
||||
# Google Maps
|
||||
\bmaps\.google\.com/maps\?[\w&;=]*
|
||||
# Google themes
|
||||
themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+.
|
||||
# Google CDN
|
||||
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
|
||||
# Goo.gl
|
||||
/goo\.gl/[a-zA-Z0-9]+
|
||||
# Google Chrome Store
|
||||
\bchrome\.google\.com/webstore/detail/[-\w]*(?:/\w*|)
|
||||
# Google Books
|
||||
\bgoogle\.(?:\w{2,4})/books(?:/\w+)*\?[-\w\d=&#.]*
|
||||
# Google Fonts
|
||||
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
|
||||
# Google Forms
|
||||
\bforms\.gle/\w+
|
||||
# Google Scholar
|
||||
\bscholar\.google\.com/citations\?user=[A-Za-z0-9_]+
|
||||
# Google Colab Research Drive
|
||||
\bcolab\.research\.google\.com/drive/[-0-9a-zA-Z_?=]*
|
||||
|
||||
# GitHub SHAs (api)
|
||||
\bapi.github\.com/repos(?:/[^/\s"]+){3}/[0-9a-f]+\b
|
||||
# GitHub SHAs (markdown)
|
||||
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
|
||||
# GitHub SHAs
|
||||
\bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b
|
||||
# GitHub wiki
|
||||
\bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b
|
||||
# githubusercontent
|
||||
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
||||
# githubassets
|
||||
\bgithubassets.com/[0-9a-f]+(?:[-/\w.]+)
|
||||
# gist github
|
||||
\bgist\.github\.com/[^/\s"]+/[0-9a-f]+
|
||||
# git.io
|
||||
\bgit\.io/[0-9a-zA-Z]+
|
||||
# GitHub JSON
|
||||
"node_id": "[-a-zA-Z=;:/0-9+]*"
|
||||
# Contributor
|
||||
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
|
||||
# GHSA
|
||||
GHSA(?:-[0-9a-z]{4}){3}
|
||||
|
||||
# GitLab commit
|
||||
\bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b
|
||||
# GitLab merge requests
|
||||
\bgitlab\.[^/\s"]*/\S+/\S+/-/merge_requests/\d+/diffs#[0-9a-f]{40}\b
|
||||
# GitLab uploads
|
||||
\bgitlab\.[^/\s"]*/uploads/[-a-zA-Z=;:/0-9+]*
|
||||
# GitLab commits
|
||||
\bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b
|
||||
|
||||
# binanace
|
||||
accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]*
|
||||
|
||||
# bitbucket diff
|
||||
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+
|
||||
# bitbucket repositories commits
|
||||
\bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
||||
# bitbucket commits
|
||||
\bbitbucket\.org/(?:[^/\s"]+/){2}commits?/[0-9a-f]+
|
||||
|
||||
# bit.ly
|
||||
\bbit\.ly/\w+
|
||||
|
||||
# bitrise
|
||||
\bapp\.bitrise\.io/app/[0-9a-f]*/[\w.?=&]*
|
||||
|
||||
# bootstrapcdn.com
|
||||
\bbootstrapcdn\.com/[-./\w]+
|
||||
|
||||
# cdn.cloudflare.com
|
||||
\bcdnjs\.cloudflare\.com/[./\w]+
|
||||
|
||||
# circleci
|
||||
\bcircleci\.com/gh(?:/[^/\s"]+){1,5}.[a-z]+\?[-0-9a-zA-Z=&]+
|
||||
|
||||
# gitter
|
||||
\bgitter\.im(?:/[^/\s"]+){2}\?at=[0-9a-f]+
|
||||
|
||||
# gravatar
|
||||
\bgravatar\.com/avatar/[0-9a-f]+
|
||||
|
||||
# ibm
|
||||
[a-z.]*ibm\.com/[-_#=:%!?~.\\/\d\w]*
|
||||
|
||||
# imgur
|
||||
\bimgur\.com/[^.]+
|
||||
|
||||
# Internet Archive
|
||||
\barchive\.org/web/\d+/(?:[-\w.?,'/\\+&%$#_:]*)
|
||||
|
||||
# discord
|
||||
/discord(?:app\.com|\.gg)/(?:invite/)?[a-zA-Z0-9]{7,}
|
||||
|
||||
# Disqus
|
||||
\bdisqus\.com/[-\w/%.()!?&=_]*
|
||||
|
||||
# medium link
|
||||
\blink\.medium\.com/[a-zA-Z0-9]+
|
||||
# medium
|
||||
\bmedium\.com/\@?[^/\s"]+/[-\w]+
|
||||
|
||||
# microsoft
|
||||
\b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]*
|
||||
# powerbi
|
||||
\bapp\.powerbi\.com/reportEmbed/[^"' ]*
|
||||
# vs devops
|
||||
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
|
||||
# microsoft store
|
||||
\bmicrosoft\.com/store/apps/\w+
|
||||
|
||||
# mvnrepository.com
|
||||
\bmvnrepository\.com/[-0-9a-z./]+
|
||||
|
||||
# now.sh
|
||||
/[0-9a-z-.]+\.now\.sh\b
|
||||
|
||||
# oracle
|
||||
\bdocs\.oracle\.com/[-0-9a-zA-Z./_?#&=]*
|
||||
|
||||
# chromatic.com
|
||||
/\S+.chromatic.com\S*[")]
|
||||
|
||||
# codacy
|
||||
\bapi\.codacy\.com/project/badge/Grade/[0-9a-f]+
|
||||
|
||||
# compai
|
||||
\bcompai\.pub/v1/png/[0-9a-f]+
|
||||
|
||||
# mailgun api
|
||||
\.api\.mailgun\.net/v3/domains/[0-9a-z]+\.mailgun.org/messages/[0-9a-zA-Z=@]*
|
||||
# mailgun
|
||||
\b[0-9a-z]+.mailgun.org
|
||||
|
||||
# /message-id/
|
||||
/message-id/[-\w@./%]+
|
||||
|
||||
# Reddit
|
||||
\breddit\.com/r/[/\w_]*
|
||||
|
||||
# requestb.in
|
||||
\brequestb\.in/[0-9a-z]+
|
||||
|
||||
# sched
|
||||
\b[a-z0-9]+\.sched\.com\b
|
||||
|
||||
# Slack url
|
||||
slack://[a-zA-Z0-9?&=]+
|
||||
# Slack
|
||||
\bslack\.com/[-0-9a-zA-Z/_~?&=.]*
|
||||
# Slack edge
|
||||
\bslack-edge\.com/[-a-zA-Z0-9?&=%./]+
|
||||
# Slack images
|
||||
\bslack-imgs\.com/[-a-zA-Z0-9?&=%.]+
|
||||
|
||||
# shields.io
|
||||
\bshields\.io/[-\w/%?=&.:+;,]*
|
||||
|
||||
# stackexchange -- https://stackexchange.com/feeds/sites
|
||||
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
|
||||
|
||||
# Sentry
|
||||
[0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b
|
||||
|
||||
# Twitter markdown
|
||||
\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\)
|
||||
# Twitter hashtag
|
||||
\btwitter\.com/hashtag/[\w?_=&]*
|
||||
# Twitter status
|
||||
\btwitter\.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)
|
||||
# Twitter profile images
|
||||
\btwimg\.com/profile_images/[_\w./]*
|
||||
# Twitter media
|
||||
\btwimg\.com/media/[-_\w./?=]*
|
||||
# Twitter link shortened
|
||||
\bt\.co/\w+
|
||||
|
||||
# facebook
|
||||
\bfburl\.com/[0-9a-z_]+
|
||||
# facebook CDN
|
||||
\bfbcdn\.net/[\w/.,]*
|
||||
# facebook watch
|
||||
\bfb\.watch/[0-9A-Za-z]+
|
||||
|
||||
# dropbox
|
||||
\bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+
|
||||
|
||||
# ipfs protocol
|
||||
ipfs://[0-9a-z]*
|
||||
# ipfs url
|
||||
/ipfs/[0-9a-z]*
|
||||
|
||||
# w3
|
||||
\bw3\.org/[-0-9a-zA-Z/#.]+
|
||||
|
||||
# loom
|
||||
\bloom\.com/embed/[0-9a-f]+
|
||||
|
||||
# regex101
|
||||
\bregex101\.com/r/[^/\s"]+/\d+
|
||||
|
||||
# figma
|
||||
\bfigma\.com/file(?:/[0-9a-zA-Z]+/)+
|
||||
|
||||
# freecodecamp.org
|
||||
\bfreecodecamp\.org/[-\w/.]+
|
||||
|
||||
# image.tmdb.org
|
||||
\bimage\.tmdb\.org/[/\w.]+
|
||||
|
||||
# mermaid
|
||||
\bmermaid\.ink/img/[-\w]+|\bmermaid-js\.github\.io/mermaid-live-editor/#/edit/[-\w]+
|
||||
|
||||
# Wikipedia
|
||||
\ben\.wikipedia\.org/wiki/[-\w%.#]+
|
||||
|
||||
# gitweb
|
||||
[^"\s]+/gitweb/\S+;h=[0-9a-f]+
|
||||
|
||||
# HyperKitty lists
|
||||
/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/
|
||||
|
||||
# lists
|
||||
/thread\.html/[^"\s]+
|
||||
|
||||
# list-management
|
||||
\blist-manage\.com/subscribe(?:[?&](?:u|id)=[0-9a-f]+)+
|
||||
|
||||
# kubectl.kubernetes.io/last-applied-configuration
|
||||
"kubectl.kubernetes.io/last-applied-configuration": ".*"
|
||||
|
||||
# pgp
|
||||
\bgnupg\.net/pks/lookup[?&=0-9a-zA-Z]*
|
||||
|
||||
# Spotify
|
||||
\bopen\.spotify\.com/embed/playlist/\w+
|
||||
|
||||
# Mastodon
|
||||
\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]*
|
||||
|
||||
# scastie
|
||||
\bscastie\.scala-lang\.org/[^/]+/\w+
|
||||
|
||||
# images.unsplash.com
|
||||
\bimages\.unsplash\.com/(?:(?:flagged|reserve)/|)[-\w./%?=%&.;]+
|
||||
|
||||
# pastebin
|
||||
\bpastebin\.com/[\w/]+
|
||||
|
||||
# heroku
|
||||
\b\w+\.heroku\.com/source/archive/\w+
|
||||
|
||||
# quip
|
||||
\b\w+\.quip\.com/\w+(?:(?:#|/issues/)\w+)?
|
||||
|
||||
# badgen.net
|
||||
\bbadgen\.net/badge/[^")\]'\s]+
|
||||
|
||||
# statuspage.io
|
||||
\w+\.statuspage\.io\b
|
||||
|
||||
# media.giphy.com
|
||||
\bmedia\.giphy\.com/media/[^/]+/[\w.?&=]+
|
||||
|
||||
# tinyurl
|
||||
\btinyurl\.com/\w+
|
||||
|
||||
# getopts
|
||||
\bgetopts\s+(?:"[^"]+"|'[^']+')
|
||||
|
||||
# ANSI color codes
|
||||
(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m
|
||||
|
||||
# URL escaped characters
|
||||
\%[0-9A-F][A-F]
|
||||
# IPv6
|
||||
\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b
|
||||
# c99 hex digits (not the full format, just one I've seen)
|
||||
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
|
||||
# Punycode
|
||||
\bxn--[-0-9a-z]+
|
||||
# sha
|
||||
sha\d+:[0-9]*[a-f]{3,}[0-9a-f]*
|
||||
# sha-... -- uses a fancy capture
|
||||
(['"]|")[0-9a-f]{40,}\g{-1}
|
||||
# hex runs
|
||||
\b[0-9a-fA-F]{16,}\b
|
||||
# hex in url queries
|
||||
=[0-9a-fA-F]*?(?:[A-F]{3,}|[a-f]{3,})[0-9a-fA-F]*?&
|
||||
# ssh
|
||||
(?:ssh-\S+|-nistp256) [-a-zA-Z=;:/0-9+]{12,}
|
||||
|
||||
# PGP
|
||||
\b(?:[0-9A-F]{4} ){9}[0-9A-F]{4}\b
|
||||
# GPG keys
|
||||
\b(?:[0-9A-F]{4} ){5}(?: [0-9A-F]{4}){5}\b
|
||||
# Well known gpg keys
|
||||
.well-known/openpgpkey/[\w./]+
|
||||
|
||||
# uuid:
|
||||
\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b
|
||||
# hex digits including css/html color classes:
|
||||
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b
|
||||
# integrity
|
||||
integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}"
|
||||
|
||||
# https://www.gnu.org/software/groff/manual/groff.html
|
||||
# man troff content
|
||||
\\f[BCIPR]
|
||||
# '
|
||||
\\\(aq
|
||||
|
||||
# .desktop mime types
|
||||
^MimeTypes?=.*$
|
||||
# .desktop localized entries
|
||||
^[A-Z][a-z]+\[[a-z]+\]=.*$
|
||||
# Localized .desktop content
|
||||
Name\[[^\]]+\]=.*
|
||||
|
||||
# IServiceProvider
|
||||
\bI(?=(?:[A-Z][a-z]{2,})+\b)
|
||||
|
||||
# crypt
|
||||
"\$2[ayb]\$.{56}"
|
||||
|
||||
# scrypt / argon
|
||||
\$(?:scrypt|argon\d+[di]*)\$\S+
|
||||
|
||||
# Input to GitHub JSON
|
||||
content: "[-a-zA-Z=;:/0-9+]*="
|
||||
|
||||
# Python stringprefix / binaryprefix
|
||||
# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings
|
||||
(?<!')\b(?:B|BR|Br|F|FR|Fr|R|RB|RF|Rb|Rf|U|UR|Ur|b|bR|br|f|fR|fr|r|rB|rF|rb|rf|u|uR|ur)'(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})
|
||||
|
||||
# Regular expressions for (P|p)assword
|
||||
\([A-Z]\|[a-z]\)[a-z]+
|
||||
|
||||
# JavaScript regular expressions
|
||||
# javascript test regex
|
||||
/.*/[gim]*\.test\(
|
||||
# javascript match regex
|
||||
\.match\(/[^/\s"]*/[gim]*\s*
|
||||
# javascript match regex
|
||||
\.match\(/\\[b].*?/[gim]*\s*\)(?:;|$)
|
||||
# javascript regex
|
||||
^\s*/\\[b].*/[gim]*\s*(?:\)(?:;|$)|,$)
|
||||
# javascript replace regex
|
||||
\.replace\(/[^/\s"]*/[gim]*\s*,
|
||||
|
||||
# Go regular expressions
|
||||
regexp?\.MustCompile\(`[^`]*`\)
|
||||
|
||||
# sed regular expressions
|
||||
sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2}
|
||||
|
||||
# go install
|
||||
go install(?:\s+[a-z]+\.[-@\w/.]+)+
|
||||
|
||||
# kubernetes pod status lists
|
||||
# https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
|
||||
\w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+
|
||||
|
||||
# kubectl - pods in CrashLoopBackOff
|
||||
\w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+
|
||||
|
||||
# kubernetes object suffix
|
||||
-[0-9a-f]{10}-\w{5}\s
|
||||
|
||||
# posthog secrets
|
||||
posthog\.init\((['"])phc_[^"',]+\g{-1},
|
||||
|
||||
# xcode
|
||||
|
||||
# xcodeproject scenes
|
||||
(?:Controller|ID|id)="\w{3}-\w{2}-\w{3}"
|
||||
|
||||
# xcode api botches
|
||||
customObjectInstantitationMethod
|
||||
|
||||
# font awesome classes
|
||||
\.fa-[-a-z0-9]+
|
||||
|
||||
# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally )
|
||||
# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review -
|
||||
# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into:
|
||||
## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary).
|
||||
## You could manually change `(?i)X...` to use `[Xx]...`
|
||||
## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path)
|
||||
# Lorem
|
||||
(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])*
|
||||
|
||||
# Non-English
|
||||
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||
|
||||
# French
|
||||
# This corpus only had capital letters, but you probably want lowercase ones as well.
|
||||
\b[LN]'+[a-z]{2,}\b
|
||||
|
||||
# latex
|
||||
\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+)
|
||||
|
||||
# the negative lookahead here is to allow catching 'templatesz' as a misspelling
|
||||
# but to otherwise recognize a Windows path with \templates\foo.template or similar:
|
||||
\\(?:necessary|r(?:eport|esolve[dr]?|esult)|t(?:arget|emplates?))(?![a-z])
|
||||
# ignore long runs of a single character:
|
||||
\b([A-Za-z])\g{-1}{3,}\b
|
||||
# Note that the next example is no longer necessary if you are using
|
||||
# to match a string starting with a `#`, use a character-class:
|
||||
[#]backwards
|
||||
# version suffix <word>v#
|
||||
(?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_]))
|
||||
# Compiler flags (Scala)
|
||||
(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||
# Compiler flags
|
||||
#(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})
|
||||
|
||||
# Compiler flags (linker)
|
||||
,-B
|
||||
# curl arguments
|
||||
\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)*
|
||||
# set arguments
|
||||
\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)*
|
||||
# tar arguments
|
||||
\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+
|
||||
# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long...
|
||||
\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b
|
||||
# macOS temp folders
|
||||
/var/folders/\w\w/[+\w]+/(?:T|-Caches-)/
|
||||
105
.github/actions/spell-check/excludes.txt
vendored
Normal file
105
.github/actions/spell-check/excludes.txt
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
|
||||
(?:^|/)(?i)COPYRIGHT
|
||||
(?:^|/)(?i)LICEN[CS]E
|
||||
(?:^|/)3rdparty/
|
||||
(?:^|/)go\.sum$
|
||||
(?:^|/)MonacoPreviewHandler/customLanguages/
|
||||
(?:^|/)MonacoPreviewHandler/generateLanguagesJson.html
|
||||
(?:^|/)MonacoPreviewHandler/index.html
|
||||
(?:^|/)MonacoPreviewHandler/monaco_languages.json
|
||||
(?:^|/)MonacoPreviewHandler/monacoSpecialLanguages.js
|
||||
(?:^|/)monacoSRC/
|
||||
(?:^|/)package(?:-lock|)\.json$
|
||||
(?:^|/)timezones\.json$
|
||||
(?:^|/)vendor/
|
||||
(?:^|/)WindowsSettings\.json$
|
||||
/package(?:-lock|)\.json$
|
||||
/pinyindb/
|
||||
/settings-html/
|
||||
[/.][a-z]{2}(?:-[a-zA-Z]{2}|)\.
|
||||
\.a$
|
||||
\.ai$
|
||||
\.avi$
|
||||
\.bmp$
|
||||
\.bz2$
|
||||
\.class$
|
||||
\.crt$
|
||||
\.dat$
|
||||
\.dll$
|
||||
\.docx?$
|
||||
\.drawio$
|
||||
\.DS_Store$
|
||||
\.eot$
|
||||
\.exe$
|
||||
\.filters$
|
||||
\.gcode$
|
||||
\.gif$
|
||||
\.gitattributes$
|
||||
\.gitignore$
|
||||
\.graffle$
|
||||
\.gz$
|
||||
\.icns$
|
||||
\.ico$
|
||||
\.jar$
|
||||
\.jks$
|
||||
\.jpe?g$
|
||||
\.key$
|
||||
\.lcl$
|
||||
\.lib$
|
||||
\.lock$
|
||||
\.map$
|
||||
\.min\..
|
||||
\.mod$
|
||||
\.mp[34]$
|
||||
\.o$
|
||||
\.ocf$
|
||||
\.otf$
|
||||
\.pdf$
|
||||
\.pem$
|
||||
\.PNG$
|
||||
\.png$
|
||||
\.psd$
|
||||
\.pyc$
|
||||
\.s$
|
||||
\.stl$
|
||||
\.svg$
|
||||
\.svgz?$
|
||||
\.tar$
|
||||
\.tiff?$
|
||||
\.ttf$
|
||||
\.wav$
|
||||
\.webm$
|
||||
\.webp$
|
||||
\.woff2?$
|
||||
\.xlsx?$
|
||||
\.zip$
|
||||
^\.github/actions/spell-check/
|
||||
^\.gitmodules$
|
||||
^\Q.github/workflows/spelling2.yml\E$
|
||||
^\Q.pipelines/ESRPSigning_core.json\E$
|
||||
^\Qsrc/modules/colorPicker/ColorPickerUI/Shaders/GridShader.cso\E$
|
||||
^\Qsrc/common/ManagedCommon/ColorFormatHelper.cs\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/CorruptJson/Microsoft/PowerToys/settings.json\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.18.2/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.19.2/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.20.1/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/V0.21.1/Microsoft/PowerToys/FancyZones/settings.json\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/V0.21.1/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.22.0/Microsoft/PowerToys/FancyZones/settings.json\E$
|
||||
^\Qsrc/settings-ui/Settings.UI.UnitTests/BackwardsCompatibility/TestFiles/v0.22.0/Microsoft/PowerToys/PowerRename/power-rename-ui-flags\E$
|
||||
^\Qtools/project_template/ModuleTemplate/resource.h\E$
|
||||
^doc/devdocs/akaLinks\.md$
|
||||
^installer/PowerToysSetup/WebView2/MicrosoftEdgeWebview2Setup.exe$
|
||||
^src/common/logger/logger\.vcxproj\.filters$
|
||||
^src/common/notifications/BackgroundActivatorDLL/BackgroundActivator\.vcxproj\.filters$
|
||||
^src/common/notifications/BackgroundActivatorDLL/cpp\.hint$
|
||||
^src/modules/colorPicker/ColorPickerUI/Resources/colorPicker\.cur$
|
||||
^src/modules/fancyzones/lib/FancyZonesWinHookEventIDs\.h$
|
||||
^src/modules/imageresizer/dll/ContextMenuHandler\.rgs$
|
||||
^src/modules/imageresizer/dll/ImageResizerExt\.rgs$
|
||||
^src/modules/powerrename/testapp/PowerRenameTest\.vcxproj\.filters$
|
||||
^src/modules/previewpane/PreviewPaneUnitTests/HelperFiles/MarkdownWithHTMLImageTag\.txt$
|
||||
^src/modules/previewpane/UnitTests-MarkdownPreviewHandler/HelperFiles/MarkdownWithHTMLImageTag.txt$
|
||||
^tools/CleanUp_tool/CleanUp_tool\.vcxproj\.filters$
|
||||
^tools/Verification scripts/Check preview handler registration\.ps1$
|
||||
ignore$
|
||||
2140
.github/actions/spell-check/expect.txt
vendored
Normal file
2140
.github/actions/spell-check/expect.txt
vendored
Normal file
File diff suppressed because it is too large
Load Diff
62
.github/actions/spell-check/line_forbidden.patterns
vendored
Normal file
62
.github/actions/spell-check/line_forbidden.patterns
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere
|
||||
# \bm_data\b
|
||||
|
||||
# If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test,
|
||||
# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want
|
||||
# to use this:
|
||||
#\bfit\(
|
||||
|
||||
# s.b. GitHub
|
||||
\bGithub\b
|
||||
|
||||
# s.b. GitLab
|
||||
\bGitlab\b
|
||||
|
||||
# s.b. JavaScript
|
||||
\bJavascript\b
|
||||
|
||||
# s.b. Microsoft
|
||||
\bMicroSoft\b
|
||||
|
||||
# s.b. another
|
||||
\ban[- ]other\b
|
||||
|
||||
# s.b. greater than
|
||||
\bgreater then\b
|
||||
|
||||
# s.b. into
|
||||
\sin to\s
|
||||
|
||||
# s.b. opt-in
|
||||
\sopt in\s
|
||||
|
||||
# s.b. less than
|
||||
\bless then\b
|
||||
|
||||
# s.b. otherwise
|
||||
\bother[- ]wise\b
|
||||
|
||||
# s.b. nonexistent
|
||||
\bnon existing\b
|
||||
\b[Nn]o[nt][- ]existent\b
|
||||
|
||||
# s.b. preexisting
|
||||
[Pp]re[- ]existing
|
||||
|
||||
# s.b. preempt
|
||||
[Pp]re[- ]empt\b
|
||||
|
||||
# s.b. preemptively
|
||||
[Pp]re[- ]emptively
|
||||
|
||||
# s.b. reentrancy
|
||||
[Rr]e[- ]entrancy
|
||||
|
||||
# s.b. reentrant
|
||||
[Rr]e[- ]entrant
|
||||
|
||||
# s.b. workaround(s)
|
||||
#\bwork[- ]arounds?\b
|
||||
|
||||
# Reject duplicate words
|
||||
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
|
||||
179
.github/actions/spell-check/patterns.txt
vendored
Normal file
179
.github/actions/spell-check/patterns.txt
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
|
||||
|
||||
# Automatically suggested patterns
|
||||
# hit-count: 2206 file-count: 617
|
||||
# IServiceProvider
|
||||
\bI(?=(?:[A-Z][a-z]{2,})+\b)
|
||||
|
||||
# hit-count: 111 file-count: 57
|
||||
# hex runs
|
||||
\b[0-9a-fA-F]{16,}\b
|
||||
|
||||
# hit-count: 89 file-count: 36
|
||||
# GitHub SHAs (markdown)
|
||||
(?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
|
||||
|
||||
# hit-count: 67 file-count: 59
|
||||
# w3
|
||||
\bw3\.org/[-0-9a-zA-Z/#.]+
|
||||
|
||||
# hit-count: 47 file-count: 3
|
||||
# Contributor
|
||||
\[[^\]]+\]\(https://github\.com/[^/\s"]+\)
|
||||
|
||||
# hit-count: 45 file-count: 2
|
||||
# Non-English
|
||||
[a-zA-Z]*[ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*
|
||||
|
||||
# hit-count: 22 file-count: 18
|
||||
# stackexchange -- https://stackexchange.com/feeds/sites
|
||||
\b(?:askubuntu|serverfault|stack(?:exchange|overflow)|superuser).com/(?:questions/\w+/[-\w]+|a/)
|
||||
|
||||
# hit-count: 7 file-count: 3
|
||||
# Wikipedia
|
||||
\ben\.wikipedia\.org/wiki/[-\w%.#]+
|
||||
|
||||
# hit-count: 5 file-count: 3
|
||||
# vs devops
|
||||
\bvisualstudio.com(?::443|)/[-\w/?=%&.]*
|
||||
|
||||
# hit-count: 3 file-count: 3
|
||||
# githubusercontent
|
||||
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
|
||||
|
||||
# hit-count: 2 file-count: 2
|
||||
# mailto urls
|
||||
mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,}
|
||||
|
||||
https?://(?:(?:www\.|)youtube\.com|youtu.be)/[-a-zA-Z0-9?&=]*
|
||||
# GitHub SHAs
|
||||
\bapi.github\.com/repos/[^/]+/[^/]+/[^/]+/[0-9a-f]+\b
|
||||
://github\.(?:com|blog)/[^\w")]+
|
||||
(?:\[[0-9a-f]+\]\(https:/|)/github\.com/[^/]+/[^/]+/[^/]+/[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b
|
||||
# githubusercontent
|
||||
://githubusercontent\.com/[^\w")]+
|
||||
# gist github
|
||||
/gist\.github\.com/[^/]+/[0-9a-f]+
|
||||
|
||||
# msdn
|
||||
\b(?:download\.visualstudio|docs|msdn)\.microsoft\.com/[-_a-zA-Z0-9()=./]*
|
||||
|
||||
# medium
|
||||
link\.medium\.com/[a-zA-Z0-9]+
|
||||
\bmedium\.com/\@[^/]+/[-\w]+
|
||||
|
||||
publicKeyToken=(['"]|)[0-9a-f]+\g{-1}
|
||||
\@sha256:[0-9a-f]{64}\b
|
||||
|
||||
# data urls
|
||||
(['"])data:.*?\g{-1}
|
||||
data:[-a-zA-Z=;:/0-9+]*,\S*
|
||||
|
||||
# uuid: (or CompGUIDPrefix)
|
||||
L?(["']|[-<({>]|\b)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{10,12}(?:\g{-1}|[<})>])
|
||||
|
||||
# c99 hex digits (not the full format, just one I've seen)
|
||||
0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP]
|
||||
|
||||
# URL escaped characters
|
||||
\%[0-9A-F]{2}
|
||||
|
||||
# wregex
|
||||
std::wregex\(L"[^"]*"\)
|
||||
|
||||
# hash
|
||||
Hash="[0-9A-F]{40}"
|
||||
# SHA256 hash
|
||||
'[0-9A-F]{64}'
|
||||
|
||||
# hex digits including css/html color classes:
|
||||
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23|L")[0-9a-fA-FgGrR_]{2,}(?:[uU]?[lL]{0,2}|u\d+)\b
|
||||
|
||||
(?:L"[abAB]+", ){3}L"[abAB]+"
|
||||
"Lorem[^"]+?\."
|
||||
TestCase\("[^"]+"
|
||||
|
||||
# Test line with hexadecimal colors
|
||||
\[DataRow\("[0-9A-F]{6}", \d{3}, \d{3}, \d{3}\)\]
|
||||
\[DataRow\("[0-9A-F]{6}", \d{3}.\d{1}, \d{3}.\d{1}, \d{3}.\d{1}\)\]
|
||||
\[DataRow\("[0-9A-F]{6}", "[BCGMRY]\d\d?", \d{3}, \d{3}\)\]
|
||||
|
||||
# version suffix <word>v#
|
||||
[Vv]\d+(?:\b|(?=[a-zA-Z_]))
|
||||
|
||||
# Windows paths
|
||||
\\native
|
||||
\\netcoreapp
|
||||
\\netstandard
|
||||
\\network
|
||||
\\notifications
|
||||
\\recyclebin
|
||||
\\Registry
|
||||
\\registry
|
||||
\\reinstall
|
||||
\\Resize
|
||||
\\resource
|
||||
\\Resources
|
||||
\\restart
|
||||
\\restore
|
||||
\\result
|
||||
\\rotating
|
||||
\\runner
|
||||
\\runtimes
|
||||
\\Telemetry
|
||||
\\telemetry
|
||||
\\testapp
|
||||
\\tests
|
||||
\\tools
|
||||
|
||||
# plugin.json
|
||||
^ "ID": "[0-9A-F]{32}",$
|
||||
|
||||
# UnitTests
|
||||
\[DataRow\(.*\)\]
|
||||
|
||||
# Id info inside markdown file (registry.md)
|
||||
^\|\s+ID\s+\|\s*\`[0-9A-F]{32}\`
|
||||
|
||||
# TestCase strings intentionally have non dictionary items
|
||||
\[TestCase\(new string.*\]
|
||||
|
||||
# D2D
|
||||
D?2D
|
||||
|
||||
# marker for ignoring a comment to the end of the line
|
||||
^.*/\* #no-spell-check-line \*/.*$
|
||||
// #no-spell-check.*$
|
||||
|
||||
http://tes/
|
||||
|
||||
# tar arguments
|
||||
\b(?:\\n|)tar(?:\s+-[a-zA-Z]+|\s[a-z]+)+
|
||||
|
||||
# fabricbot.json
|
||||
"id": "\S+"
|
||||
"commentPattern": ".*"
|
||||
# Questionably acceptable forms of `in to`
|
||||
# Personally, I prefer `log into`, but people object
|
||||
# https://www.tprteaching.com/log-into-log-in-to-login/
|
||||
\b[Ll]og in to\b
|
||||
|
||||
# acceptable duplicates
|
||||
# ls directory listings
|
||||
# /bin/ls -l output
|
||||
[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+
|
||||
# C types and repeated CSS values
|
||||
\s(center|div|inherit|long|LONG|none|normal|solid|thin|transparent|very)(?: \g{-1})+\s
|
||||
# go templates
|
||||
\s(\w+)\s+\g{-1}\s+\`(?:graphql|json|yaml):
|
||||
# javadoc / .net
|
||||
(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s
|
||||
|
||||
# Commit message -- Signed-off-by and friends
|
||||
^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$
|
||||
|
||||
# Autogenerated revert commit message
|
||||
^This reverts commit [0-9a-f]{40}\.$
|
||||
|
||||
# ignore long runs of a single character:
|
||||
\b([A-Za-z])\g{-1}{3,}\b
|
||||
10
.github/actions/spell-check/reject.txt
vendored
Normal file
10
.github/actions/spell-check/reject.txt
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
^attache$
|
||||
benefitting
|
||||
occurences?
|
||||
^dependan.*
|
||||
^oer$
|
||||
Sorce
|
||||
^[Ss]pae.*
|
||||
^untill$
|
||||
^untilling$
|
||||
^wether.*
|
||||
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
866
.github/fabricbot.json
vendored
Normal file
866
.github/fabricbot.json
vendored
Normal file
@@ -0,0 +1,866 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"tasks": [
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssuesOnlyResponder",
|
||||
"version": "1.0",
|
||||
"config": {
|
||||
"taskName": "Add needs triage label to new issues",
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "isAction",
|
||||
"parameters": {
|
||||
"action": "opened"
|
||||
}
|
||||
},
|
||||
{
|
||||
"operator": "not",
|
||||
"operands": [
|
||||
{
|
||||
"name": "isPartOfProject",
|
||||
"parameters": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"operator": "not",
|
||||
"operands": [
|
||||
{
|
||||
"name": "isAssignedToSomeone",
|
||||
"parameters": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"actions": [
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Triage"
|
||||
}
|
||||
}
|
||||
],
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issues",
|
||||
"project_card"
|
||||
]
|
||||
},
|
||||
"id": "eUOhvA_62"
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssueCommentResponder",
|
||||
"version": "1.0",
|
||||
"config": {
|
||||
"taskName": "Replace needs author feedback label with needs attention label when the author comments on an issue",
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "isAction",
|
||||
"parameters": {
|
||||
"action": "created"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "isActivitySender",
|
||||
"parameters": {
|
||||
"user": {
|
||||
"type": "author"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Author-Feedback"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "isOpen",
|
||||
"parameters": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"actions": [
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Triage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Author-Feedback"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Team-Response"
|
||||
}
|
||||
}
|
||||
],
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issue_comment"
|
||||
]
|
||||
},
|
||||
"id": "kgfxdBIu_9"
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssuesOnlyResponder",
|
||||
"version": "1.0",
|
||||
"config": {
|
||||
"taskName": "Remove no recent activity label from issues",
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"operator": "not",
|
||||
"operands": [
|
||||
{
|
||||
"name": "isAction",
|
||||
"parameters": {
|
||||
"action": "closed"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"actions": [
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
}
|
||||
],
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issues",
|
||||
"project_card"
|
||||
]
|
||||
},
|
||||
"id": "eR-TaGJJzW",
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssueCommentResponder",
|
||||
"version": "1.0",
|
||||
"config": {
|
||||
"taskName": "Remove no recent activity label when an issue is commented on",
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"actions": [
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
}
|
||||
],
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issue_comment"
|
||||
]
|
||||
},
|
||||
"id": "tXKeoDht_g",
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"taskType": "scheduled",
|
||||
"capabilityId": "ScheduledSearch",
|
||||
"subCapability": "ScheduledSearch",
|
||||
"version": "1.1",
|
||||
"config": {
|
||||
"taskName": "Close stale issues",
|
||||
"frequency": [
|
||||
{
|
||||
"weekDay": 0,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 1,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 2,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 3,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 4,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 5,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 6,
|
||||
"hours": [
|
||||
1,
|
||||
7,
|
||||
13,
|
||||
19
|
||||
]
|
||||
}
|
||||
],
|
||||
"searchTerms": [
|
||||
{
|
||||
"name": "isIssue",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "isOpen",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Author-Feedback"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "noActivitySince",
|
||||
"parameters": {
|
||||
"days": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "closeIssue",
|
||||
"parameters": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "8yr-nVZj9k",
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"taskType": "scheduled",
|
||||
"capabilityId": "ScheduledSearch",
|
||||
"subCapability": "ScheduledSearch",
|
||||
"version": "1.1",
|
||||
"config": {
|
||||
"taskName": "Add no recent activity label to issues",
|
||||
"frequency": [
|
||||
{
|
||||
"weekDay": 0,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 1,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 2,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 3,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 4,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 5,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 6,
|
||||
"hours": [
|
||||
2,
|
||||
8,
|
||||
14,
|
||||
20
|
||||
]
|
||||
}
|
||||
],
|
||||
"searchTerms": [
|
||||
{
|
||||
"name": "isIssue",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "isOpen",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Author-Feedback"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "noActivitySince",
|
||||
"parameters": {
|
||||
"days": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "noLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Status-No recent activity"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addReply",
|
||||
"parameters": {
|
||||
"comment": "This issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **5 days**. It will be closed if no further activity occurs **within 5 days of this comment**."
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "DAhxoYjVcq",
|
||||
"disabled": false
|
||||
},
|
||||
{
|
||||
"taskType": "scheduled",
|
||||
"capabilityId": "ScheduledSearch",
|
||||
"subCapability": "ScheduledSearch",
|
||||
"version": "1.1",
|
||||
"config": {
|
||||
"taskName": "Close duplicate issues",
|
||||
"frequency": [
|
||||
{
|
||||
"weekDay": 0,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 1,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 2,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 3,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 4,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 5,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
},
|
||||
{
|
||||
"weekDay": 6,
|
||||
"hours": [
|
||||
3,
|
||||
9,
|
||||
15,
|
||||
21
|
||||
]
|
||||
}
|
||||
],
|
||||
"searchTerms": [
|
||||
{
|
||||
"name": "isIssue",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "isOpen",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "hasLabel",
|
||||
"parameters": {
|
||||
"label": "Resolution-Duplicate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "noActivitySince",
|
||||
"parameters": {
|
||||
"days": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "addReply",
|
||||
"parameters": {
|
||||
"comment": "This issue has been marked as duplicate and has not had any activity for **1 day**. It will be closed for housekeeping purposes."
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "closeIssue",
|
||||
"parameters": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": "xGhARy1H0w"
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "InPrLabel",
|
||||
"subCapability": "InPrLabel",
|
||||
"version": "1.0",
|
||||
"config": {
|
||||
"taskName": "Add 'In-PR' label on issue when an open pull request is targeting it",
|
||||
"inPrLabelText": "Status: In PR",
|
||||
"fixedLabelText": "Status: Fixed",
|
||||
"fixedLabelEnabled": true,
|
||||
"label_fixed": "Resolution-Fix-Committed",
|
||||
"label_inPr": "In progress"
|
||||
},
|
||||
"id": "Rn1tANe62T"
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "EmailCleanser",
|
||||
"subCapability": "EmailCleanser",
|
||||
"version": "1.0",
|
||||
"id": "X0O-6aZ1v3_DAmhUIcNb2",
|
||||
"config": {
|
||||
"taskName": "Clean the email stuff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssueCommentResponder",
|
||||
"version": "1.0",
|
||||
"id": "VyV9JJSA8SbOyeWEwjyfL",
|
||||
"config": {
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "commentContains",
|
||||
"parameters": {
|
||||
"commentPattern": "\\/(bugreport|reportbug)",
|
||||
"isRegex": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"operator": "or",
|
||||
"operands": [
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"permissions": "admin",
|
||||
"association": "MEMBER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "COLLABORATOR"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issue_comment"
|
||||
],
|
||||
"taskName": "Ask for bug report zip file",
|
||||
"actions": [
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Triage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Author-Feedback"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addReply",
|
||||
"parameters": {
|
||||
"comment": "Hi there!<br/><br/>We need a bit more information to really debug this issue. Can you add a \"Report Bug\" zip file here? You right click on our system tray icon and just go to report bug. Then drag the zipfile from your desktop onto the GitHub comment box in this issue. Thanks! <br/>"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Team-Response"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssueCommentResponder",
|
||||
"version": "1.0",
|
||||
"id": "bvMkigH2HPgUniYFCNco9",
|
||||
"config": {
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "commentContains",
|
||||
"parameters": {
|
||||
"isRegex": true,
|
||||
"commentPattern": "\\/feedback[H|h]ub"
|
||||
}
|
||||
},
|
||||
{
|
||||
"operator": "or",
|
||||
"operands": [
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "MEMBER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "COLLABORATOR"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issue_comment"
|
||||
],
|
||||
"taskName": "Helper to mark as feedback hub",
|
||||
"actions": [
|
||||
{
|
||||
"name": "addReply",
|
||||
"parameters": {
|
||||
"comment": "Hi! We've identified this issue that best is suited for Windows Feedback Hub. To do this on Windows, WinKey+F will bring it up!"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "closeIssue",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Triage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Team-Response"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Resolution-Please File on Feedback Hub"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssueCommentResponder",
|
||||
"version": "1.0",
|
||||
"id": "bvMkigH2HPgUniYFCNco8",
|
||||
"config": {
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "commentContains",
|
||||
"parameters": {
|
||||
"isRegex": true,
|
||||
"commentPattern": "\\/dup(licate|e)?(\\s+of)?\\s+(#[\\d]+|https)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"operator": "or",
|
||||
"operands": [
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "MEMBER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "COLLABORATOR"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issue_comment"
|
||||
],
|
||||
"taskName": "Helper to mark as duplicate",
|
||||
"actions": [
|
||||
{
|
||||
"name": "addReply",
|
||||
"parameters": {
|
||||
"comment": "Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "closeIssue",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Triage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Team-Response"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Resolution-Duplicate"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "IssueResponder",
|
||||
"subCapability": "IssueCommentResponder",
|
||||
"version": "1.0",
|
||||
"id": "mgZxIoqeF7GWUo7-tZF56",
|
||||
"config": {
|
||||
"conditions": {
|
||||
"operator": "and",
|
||||
"operands": [
|
||||
{
|
||||
"name": "commentContains",
|
||||
"parameters": {
|
||||
"commentPattern": "\\/needinfo",
|
||||
"isRegex": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"operator": "or",
|
||||
"operands": [
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "OWNER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "MEMBER"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "activitySenderHasAssociation",
|
||||
"parameters": {
|
||||
"association": "COLLABORATOR"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"eventType": "issue",
|
||||
"eventNames": [
|
||||
"issue_comment"
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Triage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "removeLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Team-Response"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "addLabel",
|
||||
"parameters": {
|
||||
"label": "Needs-Author-Feedback"
|
||||
}
|
||||
}
|
||||
],
|
||||
"taskName": "Author Response needed"
|
||||
}
|
||||
}
|
||||
],
|
||||
"userGroups": []
|
||||
}
|
||||
21
.github/pull_request_template.md
vendored
21
.github/pull_request_template.md
vendored
@@ -1,19 +1,24 @@
|
||||
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
|
||||
## Summary of the Pull Request
|
||||
|
||||
<!-- Other than the issue solved, is this relevant to any other issues/existing PRs? -->
|
||||
## References
|
||||
|
||||
<!-- Please review the items on the PR checklist before submitting-->
|
||||
## PR Checklist
|
||||
* [ ] Closes #xxx
|
||||
* [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/PowerToys) and sign the CLA
|
||||
* [ ] Tests added/passed
|
||||
* [ ] Requires documentation to be updated
|
||||
* [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx
|
||||
|
||||
- [ ] **Closes:** #xxx
|
||||
- [ ] **Communication:** I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
|
||||
- [ ] **Tests:** Added/updated and all pass
|
||||
- [ ] **Localization:** All end user facing strings can be localized
|
||||
- [ ] **Dev docs:** Added/updated
|
||||
- [ ] **New binaries:** Added on the required places
|
||||
- [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries
|
||||
- [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder
|
||||
- [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects
|
||||
- [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
|
||||
- [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx
|
||||
|
||||
<!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here -->
|
||||
## Detailed Description of the Pull Request / Additional comments
|
||||
|
||||
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
|
||||
## Validation Steps Performed
|
||||
|
||||
|
||||
60
.github/workflows/msstore-submissions.yml
vendored
Normal file
60
.github/workflows/msstore-submissions.yml
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
name: Submit Microsoft.PowerToys package to Windows Store
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
|
||||
microsoft_store:
|
||||
name: Publish Microsoft Store
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get latest URL from public releases
|
||||
id: releaseVars
|
||||
run: |
|
||||
release=$(curl https://api.github.com/repos/Microsoft/PowerToys/releases | jq '[.[]|select(.name | contains("Release"))][0]')
|
||||
assets=$(jq -n "$release" | jq '.assets')
|
||||
powerToysSetup=$(jq -n "$assets" | jq '[.[]|select(.name | contains("PowerToysSetup"))]')
|
||||
echo ::set-output name=powerToysInstallerX64Url::$(jq -n "$powerToysSetup" | jq -r '[.[]|select(.name | contains("x64"))][0].browser_download_url')
|
||||
echo ::set-output name=powerToysInstallerArm64Url::$(jq -n "$powerToysSetup" | jq -r '[.[]|select(.name | contains("arm64"))][0].browser_download_url')
|
||||
|
||||
- name: Configure Store Credentials
|
||||
uses: microsoft/store-submission@v1
|
||||
with:
|
||||
command: configure
|
||||
type: win32
|
||||
seller-id: ${{ secrets.SELLER_ID }}
|
||||
product-id: ${{ secrets.PRODUCT_ID }}
|
||||
tenant-id: ${{ secrets.TENANT_ID }}
|
||||
client-id: ${{ secrets.CLIENT_ID }}
|
||||
client-secret: ${{ secrets.CLIENT_SECRET }}
|
||||
|
||||
- name: Update draft submission
|
||||
uses: microsoft/store-submission@v1
|
||||
with:
|
||||
command: update
|
||||
product-update: '{
|
||||
"packages":[
|
||||
{
|
||||
"packageUrl":"${{ steps.releaseVars.outputs.powerToysInstallerX64Url }}",
|
||||
"languages":["zh-hans", "zh-hant", "en", "cs", "nl", "fr", "pt", "pt-br", "de", "hu", "it", "ja", "ko", "pl", "ru", "es", "tr"],
|
||||
"architectures":["X64"],
|
||||
"installerParameters":"/quiet /norestart",
|
||||
"isSilentInstall":true
|
||||
},
|
||||
{
|
||||
"packageUrl":"${{ steps.releaseVars.outputs.powerToysInstallerArm64Url }}",
|
||||
"languages":["zh-hans", "zh-hant", "en", "cs", "nl", "fr", "pt", "pt-br", "de", "hu", "it", "ja", "ko", "pl", "ru", "es", "tr"],
|
||||
"architectures":["Arm64"],
|
||||
"installerParameters":"/quiet /norestart",
|
||||
"isSilentInstall":true
|
||||
}
|
||||
]
|
||||
}'
|
||||
|
||||
- name: Publish Submission
|
||||
uses: microsoft/store-submission@v1
|
||||
with:
|
||||
command: publish
|
||||
30
.github/workflows/package-submissions.yml
vendored
Normal file
30
.github/workflows/package-submissions.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Submit Microsoft.PowerToys package to Windows Package Manager Community Repository
|
||||
# based off of https://github.com/nushell/nushell/blob/main/.github/workflows/winget-submission.yml
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
|
||||
winget:
|
||||
name: Publish winget package
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Submit package to Windows Package Manager Community Repository
|
||||
run: |
|
||||
|
||||
$wingetPackage = "Microsoft.PowerToys"
|
||||
$gitToken = "${{ secrets.PT_WINGET }}"
|
||||
|
||||
$github = Invoke-RestMethod -uri "https://api.github.com/repos/Microsoft/PowerToys/releases"
|
||||
|
||||
$targetRelease = $github | Where-Object -Property name -match 'Release'| Select -First 1
|
||||
$installerUrl = $targetRelease | Select -ExpandProperty assets -First 1 | Where-Object -Property name -match 'PowerToysSetup.*x64' | Select -ExpandProperty browser_download_url
|
||||
$installerUrlArm = $targetRelease | Select -ExpandProperty assets -First 1 | Where-Object -Property name -match 'PowerToysSetup.*arm64' | Select -ExpandProperty browser_download_url
|
||||
$ver = $targetRelease.tag_name.Trim("v")
|
||||
|
||||
# getting latest wingetcreate file
|
||||
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
|
||||
.\wingetcreate.exe update $wingetPackage -s -v $ver -u $installerUrl $installerUrlArm -t $gitToken
|
||||
122
.github/workflows/spelling2.yml
vendored
Normal file
122
.github/workflows/spelling2.yml
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
# spelling.yml is blocked per https://github.com/check-spelling/check-spelling/security/advisories/GHSA-g86g-chm8-7r2p
|
||||
name: Spell checking
|
||||
|
||||
# Comment management is handled through a secondary job, for details see:
|
||||
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
|
||||
#
|
||||
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
|
||||
# (in odd cases, it might actually run just to collapse a commment, but that's fairly rare)
|
||||
# it needs `contents: write` in order to add a comment.
|
||||
#
|
||||
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
|
||||
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
|
||||
# it needs `pull-requests: write` in order to manipulate those comments.
|
||||
|
||||
# Updating pull request branches is managed via comment handling.
|
||||
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
|
||||
#
|
||||
# These elements work together to make it happen:
|
||||
#
|
||||
# `on.issue_comment`
|
||||
# This event listens to comments by users asking to update the metadata.
|
||||
#
|
||||
# `jobs.update`
|
||||
# This job runs in response to an issue_comment and will push a new commit
|
||||
# to update the spelling metadata.
|
||||
#
|
||||
# `with.experimental_apply_changes_via_bot`
|
||||
# Tells the action to support and generate messages that enable it
|
||||
# to make a commit to update the spelling metadata.
|
||||
#
|
||||
# `with.ssh_key`
|
||||
# In order to trigger workflows when the commit is made, you can provide a
|
||||
# secret (typically, a write-enabled github deploy key).
|
||||
#
|
||||
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
tags-ignore:
|
||||
- "**"
|
||||
pull_request_target:
|
||||
branches:
|
||||
- "**"
|
||||
tags-ignore:
|
||||
- "**"
|
||||
types:
|
||||
- 'opened'
|
||||
- 'reopened'
|
||||
- 'synchronize'
|
||||
|
||||
jobs:
|
||||
spelling:
|
||||
name: Spell checking
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
actions: read
|
||||
outputs:
|
||||
followup: ${{ steps.spelling.outputs.followup }}
|
||||
runs-on: ubuntu-latest
|
||||
if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
|
||||
concurrency:
|
||||
group: spelling-${{ github.event.pull_request.number || github.ref }}
|
||||
# note: If you use only_check_changed_files, you do not want cancel-in-progress
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: check-spelling
|
||||
id: spelling
|
||||
uses: check-spelling/check-spelling@v0.0.21
|
||||
with:
|
||||
config: .github/actions/spell-check
|
||||
suppress_push_for_open_pull_request: 1
|
||||
checkout: true
|
||||
check_file_names: 1
|
||||
spell_check_this: check-spelling/spell-check-this@prerelease
|
||||
post_comment: 0
|
||||
use_magic_file: 1
|
||||
extra_dictionary_limit: 10
|
||||
extra_dictionaries:
|
||||
cspell:software-terms/src/software-terms.txt
|
||||
cspell:cpp/src/stdlib-cpp.txt
|
||||
cspell:filetypes/filetypes.txt
|
||||
cspell:cpp/src/stdlib-c.txt
|
||||
cspell:fullstack/fullstack.txt
|
||||
cspell:html/html.txt
|
||||
cspell:css/css.txt
|
||||
|
||||
comment-push:
|
||||
name: Report (Push)
|
||||
# If your workflow isn't running on push, you can remove this job
|
||||
runs-on: ubuntu-latest
|
||||
needs: spelling
|
||||
permissions:
|
||||
contents: write
|
||||
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
|
||||
steps:
|
||||
- name: comment
|
||||
uses: check-spelling/check-spelling@v0.0.21
|
||||
with:
|
||||
config: .github/actions/spell-check
|
||||
checkout: true
|
||||
spell_check_this: check-spelling/spell-check-this@prerelease
|
||||
task: ${{ needs.spelling.outputs.followup }}
|
||||
|
||||
comment-pr:
|
||||
name: Report (PR)
|
||||
# If you workflow isn't running on pull_request*, you can remove this job
|
||||
runs-on: ubuntu-latest
|
||||
needs: spelling
|
||||
permissions:
|
||||
pull-requests: write
|
||||
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
|
||||
steps:
|
||||
- name: comment
|
||||
uses: check-spelling/check-spelling@v0.0.21
|
||||
with:
|
||||
config: .github/actions/spell-check
|
||||
checkout: true
|
||||
spell_check_this: check-spelling/spell-check-this@prerelease
|
||||
task: ${{ needs.spelling.outputs.followup }}
|
||||
20
.gitignore
vendored
20
.gitignore
vendored
@@ -19,6 +19,7 @@
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
ARM64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
@@ -301,6 +302,8 @@ __pycache__/
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
ImageResizer/tools/**
|
||||
!ImageResizer/tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
@@ -328,3 +331,20 @@ ASALocalRun/
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Temp build files
|
||||
src/settings/settings-html/200.html
|
||||
src/settings/settings-html/404.html
|
||||
|
||||
# Temp telemetry files.
|
||||
src/common/Telemetry/*.etl
|
||||
|
||||
# Don't ignore MergeModules
|
||||
!**/MergeModules/Release/
|
||||
!**/MergeModules/Debug/
|
||||
/src/modules/previewpane/SvgThumbnailProvider/$(SolutionDir)$(Platform)/$(Configuration)/modules/FileExplorerPreview/SvgThumbnailProvider.xml
|
||||
/src/modules/powerrename/ui/RCa24464
|
||||
/src/modules/powerrename/ui/RCb24464
|
||||
|
||||
# Generated installer file for Monaco source files.
|
||||
/installer/PowerToysSetup/MonacoSRC.wxs
|
||||
|
||||
9
.gitmodules
vendored
Normal file
9
.gitmodules
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
[submodule "deps/spdlog"]
|
||||
path = deps/spdlog
|
||||
url = https://github.com/gabime/spdlog.git
|
||||
[submodule "deps/expected-lite"]
|
||||
path = deps/expected-lite
|
||||
url = https://github.com/martinmoene/expected-lite.git
|
||||
[submodule "deps/cziplib"]
|
||||
path = deps/cziplib
|
||||
url = https://github.com/kuba--/zip.git
|
||||
41
.pipelines/CIPolicy.xml
Normal file
41
.pipelines/CIPolicy.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<SiPolicy xmlns="urn:schemas-microsoft-com:sipolicy">
|
||||
<VersionEx>10.0.0.0</VersionEx>
|
||||
<PlatformID>{2E07F7E4-194C-4D20-B7C9-6F44A6C5A234}</PlatformID>
|
||||
<Rules>
|
||||
<Rule>
|
||||
<Option>Enabled:Unsigned System Integrity Policy</Option>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<Option>Enabled:Audit Mode</Option>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<Option>Enabled:Advanced Boot Options Menu</Option>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<Option>Required:Enforce Store Applications</Option>
|
||||
</Rule>
|
||||
<Rule>
|
||||
<Option>Disabled:Script Enforcement</Option>
|
||||
</Rule>
|
||||
</Rules>
|
||||
<!--EKUS-->
|
||||
<EKUs />
|
||||
<!--File Rules-->
|
||||
<FileRules />
|
||||
<!--Signers-->
|
||||
<Signers />
|
||||
<!--Driver Signing Scenarios-->
|
||||
<SigningScenarios>
|
||||
<SigningScenario Value="131" ID="ID_SIGNINGSCENARIO_DRIVERS_1" FriendlyName="Auto generated policy on 01-26-2021">
|
||||
<ProductSigners />
|
||||
</SigningScenario>
|
||||
<SigningScenario Value="12" ID="ID_SIGNINGSCENARIO_WINDOWS" FriendlyName="Auto generated policy on 01-26-2021">
|
||||
<ProductSigners />
|
||||
</SigningScenario>
|
||||
</SigningScenarios>
|
||||
<UpdatePolicySigners />
|
||||
<CiSigners />
|
||||
<HvciOptions>0</HvciOptions>
|
||||
<PolicyTypeID>{A244370E-44C9-4C06-B551-F6016E563076}</PolicyTypeID>
|
||||
</SiPolicy>
|
||||
300
.pipelines/ESRPSigning_core.json
Normal file
300
.pipelines/ESRPSigning_core.json
Normal file
@@ -0,0 +1,300 @@
|
||||
{
|
||||
"Version": "1.0.0",
|
||||
"UseMinimatch": false,
|
||||
"SignBatches": [
|
||||
{
|
||||
"MatchedPath": [
|
||||
"*.resources.dll",
|
||||
|
||||
"PowerToys.ActionRunner.exe",
|
||||
"PowerToys.Update.exe",
|
||||
"PowerToys.BackgroundActivatorDLL.dll",
|
||||
"Notifications.dll",
|
||||
"os-detection.dll",
|
||||
"PowerToys.exe",
|
||||
"PowerToys.Interop.dll",
|
||||
"BugReportTool\\PowerToys.BugReportTool.exe",
|
||||
"WebcamReportTool\\PowerToys.WebcamReportTool.exe",
|
||||
"StylesReportTool\\PowerToys.StylesReportTool.exe",
|
||||
"Telemetry.dll",
|
||||
"PowerToys.ManagedTelemetry.dll",
|
||||
"PowerToys.ManagedCommon.dll",
|
||||
"PowerToys.Common.UI.dll",
|
||||
"PowerToys.Settings.UI.Lib.dll",
|
||||
"PowerToys.GPOWrapper.dll",
|
||||
"PowerToys.GPOWrapperProjection.dll",
|
||||
|
||||
"modules\\AlwaysOnTop\\PowerToys.AlwaysOnTop.exe",
|
||||
"modules\\AlwaysOnTop\\PowerToys.AlwaysOnTopModuleInterface.dll",
|
||||
|
||||
"modules\\ColorPicker\\PowerToys.ColorPicker.dll",
|
||||
"modules\\ColorPicker\\PowerToys.ColorPickerUI.dll",
|
||||
"modules\\ColorPicker\\PowerToys.ColorPickerUI.exe",
|
||||
|
||||
"modules\\PowerOCR\\PowerToys.PowerOCRModuleInterface.dll",
|
||||
"modules\\PowerOCR\\PowerToys.PowerOCR.dll",
|
||||
"modules\\PowerOCR\\PowerToys.PowerOCR.exe",
|
||||
|
||||
"modules\\Awake\\PowerToys.AwakeModuleInterface.dll",
|
||||
"modules\\Awake\\PowerToys.Awake.exe",
|
||||
"modules\\Awake\\PowerToys.Awake.dll",
|
||||
|
||||
"modules\\FancyZones\\fancyzones.dll",
|
||||
"modules\\FancyZones\\PowerToys.FancyZonesEditor.exe",
|
||||
"modules\\FancyZones\\PowerToys.FancyZonesEditor.dll",
|
||||
"modules\\FancyZones\\PowerToys.FancyZonesModuleInterface.dll",
|
||||
"modules\\FancyZones\\PowerToys.FancyZones.exe",
|
||||
|
||||
"modules\\FileExplorerPreview\\PowerToys.GcodePreviewHandler.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.GcodePreviewHandler.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.GcodeThumbnailProvider.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.GcodeThumbnailProvider.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.ManagedTelemetry.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.MarkdownPreviewHandler.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.MarkdownPreviewHandler.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.MonacoPreviewHandler.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.MonacoPreviewHandler.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.PdfPreviewHandler.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.PdfPreviewHandler.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.PdfThumbnailProvider.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.PdfThumbnailProvider.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.powerpreview.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.PreviewHandlerCommon.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.StlThumbnailProvider.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.StlThumbnailProvider.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.SvgPreviewHandler.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.SvgPreviewHandler.comhost.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.SvgThumbnailProvider.dll",
|
||||
"modules\\FileExplorerPreview\\PowerToys.SvgThumbnailProvider.comhost.dll",
|
||||
|
||||
"modules\\Hosts\\PowerToys.HostsModuleInterface.dll",
|
||||
"modules\\Hosts\\PowerToys.Hosts.dll",
|
||||
"modules\\Hosts\\PowerToys.Hosts.exe",
|
||||
|
||||
"modules\\FileLocksmith\\PowerToys.FileLocksmithLib.Interop.dll",
|
||||
"modules\\FileLocksmith\\PowerToys.FileLocksmithExt.dll",
|
||||
"modules\\FileLocksmith\\PowerToys.FileLocksmithUI.exe",
|
||||
"modules\\FileLocksmith\\PowerToys.FileLocksmithUI.dll",
|
||||
|
||||
"modules\\Peek\\Peek.Common.dll",
|
||||
"modules\\Peek\\Peek.FilePreviewer.dll",
|
||||
"modules\\Peek\\Powertoys.Peek.UI.dll",
|
||||
"modules\\Peek\\Powertoys.Peek.UI.exe",
|
||||
"modules\\Peek\\WIC.dll",
|
||||
"modules\\Peek\\Powertoys.Peek.dll",
|
||||
|
||||
"modules\\ImageResizer\\PowerToys.ImageResizer.exe",
|
||||
"modules\\ImageResizer\\PowerToys.ImageResizer.dll",
|
||||
"modules\\ImageResizer\\PowerToys.ImageResizerExt.dll",
|
||||
"modules\\ImageResizer\\PowerToys.ImageResizerContextMenu.dll",
|
||||
"modules\\ImageResizer\\ImageResizerContextMenuPackage.msix",
|
||||
|
||||
"modules\\KeyboardManager\\PowerToys.KeyboardManager.dll",
|
||||
"modules\\KeyboardManager\\KeyboardManagerEditor\\PowerToys.KeyboardManagerEditor.exe",
|
||||
"modules\\KeyboardManager\\KeyboardManagerEngine\\PowerToys.KeyboardManagerEngine.exe",
|
||||
|
||||
"modules\\launcher\\PowerToys.Launcher.dll",
|
||||
"modules\\launcher\\PowerToys.PowerLauncher.dll",
|
||||
"modules\\launcher\\PowerToys.PowerLauncher.exe",
|
||||
"modules\\launcher\\PowerToys.PowerLauncher.Telemetry.dll",
|
||||
"modules\\launcher\\Wox.dll",
|
||||
"modules\\launcher\\Wox.Infrastructure.dll",
|
||||
"modules\\launcher\\Wox.Plugin.dll",
|
||||
"modules\\launcher\\Plugins\\Calculator\\Microsoft.PowerToys.Run.Plugin.Calculator.dll",
|
||||
"modules\\launcher\\Plugins\\Folder\\Microsoft.Plugin.Folder.dll",
|
||||
"modules\\launcher\\Plugins\\Indexer\\Microsoft.Plugin.Indexer.dll",
|
||||
"modules\\launcher\\Plugins\\OneNote\\Microsoft.PowerToys.Run.Plugin.OneNote.dll",
|
||||
"modules\\launcher\\Plugins\\History\\Microsoft.PowerToys.Run.Plugin.History.dll",
|
||||
"modules\\launcher\\Plugins\\Program\\Microsoft.Plugin.Program.dll",
|
||||
"modules\\launcher\\Plugins\\Registry\\Microsoft.PowerToys.Run.Plugin.Registry.dll",
|
||||
"modules\\launcher\\Plugins\\WindowsSettings\\Microsoft.PowerToys.Run.Plugin.WindowsSettings.dll",
|
||||
"modules\\launcher\\Plugins\\Shell\\Microsoft.Plugin.Shell.dll",
|
||||
"modules\\launcher\\Plugins\\Uri\\Microsoft.Plugin.Uri.dll",
|
||||
"modules\\launcher\\Plugins\\WindowWalker\\Microsoft.Plugin.WindowWalker.dll",
|
||||
"modules\\launcher\\Plugins\\UnitConverter\\Community.PowerToys.Run.Plugin.UnitConverter.dll",
|
||||
"modules\\launcher\\Plugins\\VSCodeWorkspaces\\Community.PowerToys.Run.Plugin.VSCodeWorkspaces.dll",
|
||||
"modules\\launcher\\Plugins\\Service\\Microsoft.PowerToys.Run.Plugin.Service.dll",
|
||||
"modules\\launcher\\Plugins\\System\\Microsoft.PowerToys.Run.Plugin.System.dll",
|
||||
"modules\\launcher\\Plugins\\TimeDate\\Microsoft.PowerToys.Run.Plugin.TimeDate.dll",
|
||||
"modules\\launcher\\Plugins\\TimeZone\\Microsoft.PowerToys.Run.Plugin.TimeZone.dll",
|
||||
"modules\\launcher\\Plugins\\WebSearch\\Community.PowerToys.Run.Plugin.WebSearch.dll",
|
||||
"modules\\launcher\\Plugins\\WindowsTerminal\\Microsoft.PowerToys.Run.Plugin.WindowsTerminal.dll",
|
||||
|
||||
"modules\\MeasureTool\\PowerToys.MeasureToolModuleInterface.dll",
|
||||
"modules\\MeasureTool\\PowerToys.MeasureToolCore.dll",
|
||||
"modules\\MeasureTool\\PowerToys.MeasureToolUI.dll",
|
||||
"modules\\MeasureTool\\PowerToys.MeasureToolUI.exe",
|
||||
|
||||
"modules\\MouseUtils\\PowerToys.FindMyMouse.dll",
|
||||
"modules\\MouseUtils\\PowerToys.MouseHighlighter.dll",
|
||||
"modules\\MouseUtils\\PowerToys.MousePointerCrosshairs.dll",
|
||||
|
||||
"modules\\PowerAccent\\PowerAccent.Core.dll",
|
||||
"modules\\PowerAccent\\PowerAccent.dll",
|
||||
"modules\\PowerAccent\\PowerAccent.exe",
|
||||
"modules\\PowerAccent\\PowerToys.PowerAccent.dll",
|
||||
"modules\\PowerAccent\\PowerToys.PowerAccent.exe",
|
||||
"modules\\PowerAccent\\PowerToys.PowerAccentModuleInterface.dll",
|
||||
"modules\\PowerAccent\\PowerToys.PowerAccentKeyboardService.dll",
|
||||
|
||||
"modules\\PowerRename\\PowerToys.PowerRenameExt.dll",
|
||||
"modules\\PowerRename\\PowerToys.PowerRename.exe",
|
||||
"modules\\PowerRename\\PowerToys.PowerRenameContextMenu.dll",
|
||||
"modules\\PowerRename\\PowerRenameContextMenuPackage.msix",
|
||||
|
||||
"modules\\ShortcutGuide\\ShortcutGuide\\PowerToys.ShortcutGuide.exe",
|
||||
"modules\\ShortcutGuide\\ShortcutGuideModuleInterface\\PowerToys.ShortcutGuideModuleInterface.dll",
|
||||
|
||||
"modules\\VideoConference\\PowerToys.VideoConferenceModule.dll",
|
||||
"modules\\VideoConference\\PowerToys.VideoConferenceProxyFilter_x86.dll",
|
||||
"modules\\VideoConference\\PowerToys.VideoConferenceProxyFilter_x64.dll",
|
||||
"modules\\VideoConference\\PowerToys.VideoConferenceProxyFilter_arm64.dll",
|
||||
|
||||
"Settings\\PowerToys.Settings.dll",
|
||||
"Settings\\PowerToys.Settings.exe"
|
||||
],
|
||||
"SigningInfo": {
|
||||
"Operations": [
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationSetCode": "SigntoolSign",
|
||||
"Parameters": [
|
||||
{
|
||||
"parameterName": "OpusName",
|
||||
"parameterValue": "Microsoft"
|
||||
},
|
||||
{
|
||||
"parameterName": "OpusInfo",
|
||||
"parameterValue": "http://www.microsoft.com"
|
||||
},
|
||||
{
|
||||
"parameterName": "FileDigest",
|
||||
"parameterValue": "/fd \"SHA256\""
|
||||
},
|
||||
{
|
||||
"parameterName": "PageHash",
|
||||
"parameterValue": "/NPH"
|
||||
},
|
||||
{
|
||||
"parameterName": "TimeStamp",
|
||||
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
}
|
||||
],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationSetCode": "SigntoolVerify",
|
||||
"Parameters": [],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"MatchedPath": [
|
||||
"ModernWpf.dll",
|
||||
"ModernWpf.Controls.dll",
|
||||
"System.IO.Abstractions.dll",
|
||||
"Mono.Cecil.dll",
|
||||
"Mono.Cecil.Mdb.dll",
|
||||
"Mono.Cecil.Pdb.dll",
|
||||
"Mono.Cecil.Rocks.dll",
|
||||
"NLog.dll",
|
||||
"HtmlAgilityPack.dll",
|
||||
"Markdig.Signed.dll",
|
||||
"HelixToolkit.dll",
|
||||
"HelixToolkit.Core.Wpf.dll",
|
||||
"Mages.Core.dll",
|
||||
"JetBrains.Annotations.dll",
|
||||
"NLog.Extensions.Logging.dll",
|
||||
"concrt140_app.dll",
|
||||
"msvcp140_1_app.dll",
|
||||
"msvcp140_2_app.dll",
|
||||
"msvcp140_app.dll",
|
||||
"vcamp140_app.dll",
|
||||
"vccorlib140_app.dll",
|
||||
"vcomp140_app.dll",
|
||||
"vcruntime140_1_app.dll",
|
||||
"vcruntime140_app.dll",
|
||||
"modules\\FileLocksmith\\CommunityToolkit.Labs.WinUI.SettingsControls.dll",
|
||||
"modules\\PowerAccent\\UnicodeInformation.dll",
|
||||
"modules\\PowerAccent\\Vanara.Core.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.ComCtl32.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Cryptography.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Gdi32.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Kernel32.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Ole.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Rpc.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Security.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Shared.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.Shell32.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.ShlwApi.dll",
|
||||
"modules\\PowerAccent\\Vanara.PInvoke.User32.dll",
|
||||
"modules\\FileExplorerPreview\\Microsoft.Web.WebView2.Core.dll",
|
||||
"modules\\FileExplorerPreview\\Microsoft.Web.WebView2.WinForms.dll",
|
||||
"modules\\FileExplorerPreview\\Microsoft.Web.WebView2.Wpf.dll",
|
||||
"modules\\FileExplorerPreview\\WebView2Loader.dll",
|
||||
"modules\\Hosts\\Microsoft.Graphics.Canvas.Interop.dll",
|
||||
"modules\\launcher\\e_sqlite3.dll",
|
||||
"modules\\launcher\\LazyCache.dll",
|
||||
"modules\\launcher\\SQLitePCLRaw.batteries_v2.dll",
|
||||
"modules\\launcher\\SQLitePCLRaw.core.dll",
|
||||
"modules\\launcher\\SQLitePCLRaw.provider.e_sqlite3.dll",
|
||||
"modules\\launcher\\ScipBe.Common.Office.OneNote.dll",
|
||||
"modules\\launcher\\Interop.Microsoft.Office.Interop.OneNote.dll",
|
||||
"modules\\launcher\\hyjiacan.py4n.dll",
|
||||
"Settings\\Microsoft.Graphics.Canvas.Interop.dll",
|
||||
"Settings\\CommunityToolkit.Labs.WinUI.SettingsControls.dll",
|
||||
"ColorCode.Core.dll",
|
||||
"ColorCode.UWP.dll",
|
||||
"UnitsNet.dll"
|
||||
],
|
||||
"SigningInfo": {
|
||||
"Operations": [
|
||||
{
|
||||
"KeyCode": "CP-231522",
|
||||
"OperationSetCode": "SigntoolSign",
|
||||
"Parameters": [
|
||||
{
|
||||
"parameterName": "OpusName",
|
||||
"parameterValue": "Microsoft"
|
||||
},
|
||||
{
|
||||
"parameterName": "OpusInfo",
|
||||
"parameterValue": "http://www.microsoft.com"
|
||||
},
|
||||
{
|
||||
"parameterName": "FileDigest",
|
||||
"parameterValue": "/fd \"SHA256\""
|
||||
},
|
||||
{
|
||||
"parameterName": "Append",
|
||||
"parameterValue": "/as"
|
||||
},
|
||||
{
|
||||
"parameterName": "PageHash",
|
||||
"parameterValue": "/NPH"
|
||||
},
|
||||
{
|
||||
"parameterName": "TimeStamp",
|
||||
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
}
|
||||
],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-231522",
|
||||
"OperationSetCode": "SigntoolVerify",
|
||||
"Parameters": [],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
52
.pipelines/ESRPSigning_installer.json
Normal file
52
.pipelines/ESRPSigning_installer.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"Version": "1.0.0",
|
||||
"UseMinimatch": false,
|
||||
"SignBatches": [
|
||||
{
|
||||
"MatchedPath": [
|
||||
"PowerToysSetupCustomActions.dll",
|
||||
"PowerToysSetup-*.exe",
|
||||
"PowerToysSetup-*.msi"
|
||||
],
|
||||
"SigningInfo": {
|
||||
"Operations": [
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationSetCode": "SigntoolSign",
|
||||
"Parameters": [
|
||||
{
|
||||
"parameterName": "OpusName",
|
||||
"parameterValue": "Microsoft"
|
||||
},
|
||||
{
|
||||
"parameterName": "OpusInfo",
|
||||
"parameterValue": "http://www.microsoft.com"
|
||||
},
|
||||
{
|
||||
"parameterName": "FileDigest",
|
||||
"parameterValue": "/fd \"SHA256\""
|
||||
},
|
||||
{
|
||||
"parameterName": "PageHash",
|
||||
"parameterValue": "/NPH"
|
||||
},
|
||||
{
|
||||
"parameterName": "TimeStamp",
|
||||
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
}
|
||||
],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationSetCode": "SigntoolVerify",
|
||||
"Parameters": [],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
50
.pipelines/ESRPSigning_vcm.json
Normal file
50
.pipelines/ESRPSigning_vcm.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"Version": "1.0.0",
|
||||
"UseMinimatch": false,
|
||||
"SignBatches": [
|
||||
{
|
||||
"MatchedPath": [
|
||||
"modules\\VideoConference\\PowerToys.VideoConferenceProxyFilter_x86.dll"
|
||||
],
|
||||
"SigningInfo": {
|
||||
"Operations": [
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationSetCode": "SigntoolSign",
|
||||
"Parameters": [
|
||||
{
|
||||
"parameterName": "OpusName",
|
||||
"parameterValue": "Microsoft"
|
||||
},
|
||||
{
|
||||
"parameterName": "OpusInfo",
|
||||
"parameterValue": "http://www.microsoft.com"
|
||||
},
|
||||
{
|
||||
"parameterName": "FileDigest",
|
||||
"parameterValue": "/fd \"SHA256\""
|
||||
},
|
||||
{
|
||||
"parameterName": "PageHash",
|
||||
"parameterValue": "/NPH"
|
||||
},
|
||||
{
|
||||
"parameterName": "TimeStamp",
|
||||
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
}
|
||||
],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationSetCode": "SigntoolVerify",
|
||||
"Parameters": [],
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
cd /D "%~dp0"
|
||||
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.16299.0
|
||||
call msbuild ../installer/PowerToysSetup.sln /p:Configuration=Release /p:Platform=x64 || exit /b 1
|
||||
@@ -1,4 +0,0 @@
|
||||
cd /D "%~dp0"
|
||||
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 -winsdk=10.0.16299.0
|
||||
call msbuild ../PowerToys.sln /p:Configuration=Release /p:Platform=x64 || exit /b 1
|
||||
@@ -2,7 +2,8 @@ trigger:
|
||||
batch: true
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
- main
|
||||
- stable
|
||||
paths:
|
||||
exclude:
|
||||
- doc/*
|
||||
@@ -12,7 +13,8 @@ trigger:
|
||||
pr:
|
||||
branches:
|
||||
include:
|
||||
- master
|
||||
- main
|
||||
- stable
|
||||
|
||||
# 0.0.yyMM.dd##
|
||||
# 0.0.1904.0900
|
||||
@@ -22,3 +24,6 @@ jobs:
|
||||
- template: ./templates/build-powertoys-ci.yml
|
||||
parameters:
|
||||
platform: x64
|
||||
- template: ./templates/build-powertoys-ci.yml
|
||||
parameters:
|
||||
platform: arm64
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
parameters:
|
||||
configuration: 'Release'
|
||||
platform: ''
|
||||
additionalBuildArguments: ''
|
||||
additionalBuildArguments: '-m'
|
||||
|
||||
jobs:
|
||||
- job: Build${{ parameters.platform }}${{ parameters.configuration }}
|
||||
@@ -9,9 +9,22 @@ jobs:
|
||||
variables:
|
||||
BuildConfiguration: ${{ parameters.configuration }}
|
||||
BuildPlatform: ${{ parameters.platform }}
|
||||
pool: { vmImage: windows-2019 }
|
||||
|
||||
pool:
|
||||
demands: ImageOverride -equals WinDevVS17-latest
|
||||
${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}:
|
||||
name: WinDevPoolOSS-L
|
||||
${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}:
|
||||
name: WinDevPool-L
|
||||
timeoutInMinutes: 120
|
||||
strategy:
|
||||
maxParallel: 10
|
||||
steps:
|
||||
- template: build-powertoys-steps.yml
|
||||
parameters:
|
||||
additionalBuildArguments: ${{ parameters.additionalBuildArguments }}
|
||||
additionalBuildArguments: ${{ parameters.additionalBuildArguments }}
|
||||
|
||||
# It appears that the Component Governance build task that gets automatically injected stopped working
|
||||
# when we renamed our main branch.
|
||||
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
|
||||
displayName: 'Component Detection'
|
||||
condition: and(succeededOrFailed(), not(eq(variables['Build.Reason'], 'PullRequest')))
|
||||
|
||||
20
.pipelines/ci/templates/build-powertoys-installer.yml
Normal file
20
.pipelines/ci/templates/build-powertoys-installer.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
parameters:
|
||||
configuration: 'Release'
|
||||
platform: ''
|
||||
additionalBuildArguments: '-m'
|
||||
|
||||
jobs:
|
||||
- job: Build${{ parameters.platform }}${{ parameters.configuration }}
|
||||
displayName: Build ${{ parameters.platform }} ${{ parameters.configuration }}
|
||||
variables:
|
||||
BuildConfiguration: ${{ parameters.configuration }}
|
||||
BuildPlatform: ${{ parameters.platform }}
|
||||
pool:
|
||||
name: WinDevPool-L
|
||||
timeoutInMinutes: 120
|
||||
strategy:
|
||||
maxParallel: 10
|
||||
steps:
|
||||
- template: build-powertoys-steps.yml
|
||||
parameters:
|
||||
additionalBuildArguments: ${{ parameters.additionalBuildArguments }}
|
||||
@@ -3,19 +3,66 @@ parameters:
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
fetchDepth: 1
|
||||
submodules: true
|
||||
clean: true
|
||||
|
||||
- task: NuGetToolInstaller@0
|
||||
displayName: Ensure NuGet 4.8.1
|
||||
- task: PowerShell@2
|
||||
displayName: Verifying Nuget packages for PowerToys.sln
|
||||
inputs:
|
||||
versionSpec: 4.8.1
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyNugetPackages.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\PowerToys.sln'
|
||||
pwsh: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verify Arm64 configuration for PowerToys.sln
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\PowerToys.sln'
|
||||
pwsh: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verify Arm64 configuration for BugReportTool.sln
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\tools\BugReportTool\BugReportTool.sln'
|
||||
pwsh: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verify Arm64 configuration for WebcamReportTool.sln
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\tools\WebcamReportTool\WebcamReportTool.sln'
|
||||
pwsh: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verify Arm64 configuration for StylesReportTool.sln
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\tools\StylesReportTool\StylesReportTool.sln'
|
||||
pwsh: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Verify Arm64 configuration for PowerToysSetup.sln
|
||||
inputs:
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\verifyArm64Configuration.ps1'
|
||||
arguments: -solution '$(build.sourcesdirectory)\installer\PowerToysSetup.sln'
|
||||
pwsh: true
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Use .NET 7 SDK'
|
||||
inputs:
|
||||
packageType: sdk
|
||||
version: '7.x'
|
||||
|
||||
- task: NuGetToolInstaller@1
|
||||
displayName: Ensure NuGet Installer
|
||||
|
||||
- task: VisualStudioTestPlatformInstaller@1
|
||||
displayName: Ensure VSTest Platform
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Restore NuGet packages
|
||||
displayName: Restore NuGet packages for PowerToys.sln
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
@@ -24,12 +71,159 @@ steps:
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\packages'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build solution **\PowerToys.sln'
|
||||
displayName: 'Build PowerToys.sln'
|
||||
inputs:
|
||||
solution: '**\PowerToys.sln'
|
||||
vsVersion: 16.0
|
||||
vsVersion: 17.0
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
msbuildArgs: ${{ parameters.additionalBuildArguments }}
|
||||
clean: true
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Restore NuGet packages for BugReportTool.sln
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
configPath: NuGet.config
|
||||
restoreSolution: tools\BugReportTool\BugReportTool.sln
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\tools\BugReportTool\packages'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build BugReportTool.sln'
|
||||
inputs:
|
||||
solution: '**\BugReportTool.sln'
|
||||
vsVersion: 17.0
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
msbuildArgs: ${{ parameters.additionalBuildArguments }}
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Restore NuGet packages for WebcamReportTool.sln
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
configPath: NuGet.config
|
||||
restoreSolution: tools\WebcamReportTool\WebcamReportTool.sln
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\tools\WebcamReportTool\packages'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build WebcamReportTool.sln'
|
||||
inputs:
|
||||
solution: '**\WebcamReportTool.sln'
|
||||
vsVersion: 17.0
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
msbuildArgs: ${{ parameters.additionalBuildArguments }}
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Restore NuGet packages for StylesReportTool.sln
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
configPath: NuGet.config
|
||||
restoreSolution: tools\StylesReportTool\StylesReportTool.sln
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\tools\StylesReportTool\packages'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build StylesReportTool.sln'
|
||||
inputs:
|
||||
solution: '**\StylesReportTool.sln'
|
||||
vsVersion: 17.0
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
msbuildArgs: ${{ parameters.additionalBuildArguments }}
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Download and install WiX 3.14 development build
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
|
||||
|
||||
- task: NuGetCommand@2
|
||||
displayName: Restore NuGet packages for PowerToysSetup.sln
|
||||
inputs:
|
||||
command: restore
|
||||
feedsToUse: config
|
||||
configPath: NuGet.config
|
||||
restoreSolution: installer\PowerToysSetup.sln
|
||||
restoreDirectory: '$(Build.SourcesDirectory)\installer\packages'
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build PowerToys MSI'
|
||||
inputs:
|
||||
solution: '**\installer\PowerToysSetup.sln'
|
||||
vsVersion: 17.0
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
msbuildArgs: /t:PowerToysInstaller ${{ parameters.additionalBuildArguments }}
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: 'Build PowerToys Bootstrapper'
|
||||
inputs:
|
||||
solution: '**\installer\PowerToysSetup.sln'
|
||||
vsVersion: 17.0
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
msbuildArgs: /t:PowerToysBootstrapper ${{ parameters.additionalBuildArguments }}
|
||||
clean: false
|
||||
maximumCpuCount: true
|
||||
|
||||
# directly not doing WinAppDriver testing
|
||||
- task: VSTest@2
|
||||
displayName: 'MS Tests'
|
||||
condition: ne(variables['BuildPlatform'], 'arm64') # No arm64 agents to run the tests.
|
||||
inputs:
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
testSelector: 'testAssemblies'
|
||||
testAssemblyVer2: |
|
||||
**\UnitTests-GcodeThumbnailProvider.dll
|
||||
**\UnitTests-StlThumbnailProvider.dll
|
||||
**\UnitTests-PdfThumbnailProvider.dll
|
||||
**\Settings.UI.UnitTests.dll
|
||||
**\UnitTests-GcodePreviewHandler.dll
|
||||
**\UnitTests-PdfPreviewHandler.dll
|
||||
**\UnitTests-PreviewHandlerCommon.dll
|
||||
**\Microsoft.PowerToys.Run.Plugin.Registry.UnitTests.dll
|
||||
**\UnitTest-ColorPickerUI.dll
|
||||
**\Microsoft.Interop.Tests.dll
|
||||
**\ImageResizer.Test.dll
|
||||
**\Community.PowerToys.Run.Plugin.UnitConverter.UnitTest.dll
|
||||
**\Microsoft.Plugin.Folder.UnitTests.dll
|
||||
**\Microsoft.Plugin.Program.UnitTests.dll
|
||||
**\Microsoft.PowerToys.Run.Plugin.Calculator.UnitTest.dll
|
||||
**\Microsoft.Plugin.Uri.UnitTests.dll
|
||||
**\Wox.Test.dll
|
||||
**\Microsoft.PowerToys.Run.Plugin.System.UnitTests.dll
|
||||
**\Microsoft.PowerToys.Run.Plugin.TimeDate.UnitTests.dll
|
||||
**\Microsoft.PowerToys.Run.Plugin.TimeZone.UnitTests.dll
|
||||
**\Microsoft.Plugin.WindowsTerminal.UnitTests.dll
|
||||
**\Microsoft.Plugin.WindowWalker.UnitTests.dll
|
||||
**\PreviewPaneUnitTests.dll
|
||||
**\UnitTests-SvgThumbnailProvider.dll
|
||||
**\UnitTests-SvgPreviewHandler.dll
|
||||
**\PowerToys.Hosts.Tests.dll
|
||||
!**\obj\**
|
||||
!**\ref\**
|
||||
|
||||
# Native dlls
|
||||
- task: VSTest@2
|
||||
condition: ne(variables['BuildPlatform'],'arm64') # No arm64 agents to run the tests.
|
||||
displayName: 'Native Tests'
|
||||
inputs:
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(BuildConfiguration)'
|
||||
testSelector: 'testAssemblies'
|
||||
testAssemblyVer2: |
|
||||
**\KeyboardManagerEngineTest.dll
|
||||
**\KeyboardManagerEditorTest.dll
|
||||
**\UnitTests-CommonLib.dll
|
||||
**\PowerRenameUnitTests.dll
|
||||
**\powerpreviewTest.dll
|
||||
**\UnitTests-FancyZones.dll
|
||||
!**\obj\**
|
||||
|
||||
26
.pipelines/installWiX.ps1
Normal file
26
.pipelines/installWiX.ps1
Normal file
@@ -0,0 +1,26 @@
|
||||
$ProgressPreference = 'SilentlyContinue'
|
||||
|
||||
$WixDownloadUrl = "https://wixtoolset.org/downloads/v3.14.0.6526/wix314.exe"
|
||||
$WixBinariesDownloadUrl = "https://wixtoolset.org/downloads/v3.14.0.6526/wix314-binaries.zip"
|
||||
|
||||
# Download WiX binaries and verify their hash sums
|
||||
Invoke-WebRequest -Uri $WixDownloadUrl -OutFile "$($ENV:Temp)\wix314.exe"
|
||||
$Hash = (Get-FileHash -Algorithm SHA256 "$($ENV:Temp)\wix314.exe").Hash
|
||||
if ($Hash -ne 'FADEB00B1FCCD9BB2FDD6CE28D4C3ECDA339C8906A72586515C14A93CEADB6FE')
|
||||
{
|
||||
Write-Error "$WixHash"
|
||||
throw "wix314.exe has unexpected SHA256 hash: $Hash"
|
||||
}
|
||||
Invoke-WebRequest -Uri $WixBinariesDownloadUrl -OutFile "$($ENV:Temp)\wix314-binaries.zip"
|
||||
$Hash = (Get-FileHash -Algorithm SHA256 "$($ENV:Temp)\wix314-binaries.zip").Hash
|
||||
if($Hash -ne '4C89898DF3BCAB13E12F7CA54399C35AD273475AD2CB6284611D00AE2D063C2C')
|
||||
{
|
||||
throw "wix314-binaries.zip has unexpected SHA256 hash: $Hash"
|
||||
}
|
||||
|
||||
# Install WiX
|
||||
Start-Process -Wait -FilePath "$($ENV:Temp)\wix314.exe" -ArgumentList "/install /quiet"
|
||||
|
||||
# Extract WiX binaries and copy wix.targets to the installed dir
|
||||
Expand-Archive -Path "$($ENV:Temp)\wix314-binaries.zip" -Force -DestinationPath "$($ENV:Temp)"
|
||||
Copy-Item -Path "$($ENV:Temp)\wix.targets" -Destination "C:\Program Files (x86)\WiX Toolset v3.14\"
|
||||
52
.pipelines/loc/loc.yml
Normal file
52
.pipelines/loc/loc.yml
Normal file
@@ -0,0 +1,52 @@
|
||||
trigger: none
|
||||
pr: none
|
||||
schedules:
|
||||
- cron: "0 3 * * 2-6" # Run at 03:00 UTC Tuesday through Saturday (After the work day in Pacific, Mon-Fri)
|
||||
displayName: "Nightly Localization Build"
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: false # only run if there's code changes!
|
||||
|
||||
pool:
|
||||
vmImage: windows-2019
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
- repository: self
|
||||
type: git
|
||||
ref: master
|
||||
|
||||
steps:
|
||||
|
||||
- checkout: self
|
||||
clean: true
|
||||
submodules: false
|
||||
fetchDepth: 1 # Don't need a deep checkout for loc files!
|
||||
persistCredentials: true
|
||||
|
||||
- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@1
|
||||
displayName: 'Touchdown Build - 37400, PRODEXT'
|
||||
inputs:
|
||||
teamId: 37400
|
||||
authId: '$(TouchdownApplicationID)'
|
||||
authKey: '$(TouchdownApplicationKey)'
|
||||
resourceFilePath: |
|
||||
**\Resources.resx
|
||||
**\Resource.resx
|
||||
**\Resources.resw
|
||||
outputDirectoryRoot: LocOutput
|
||||
appendRelativeDir: true
|
||||
pseudoSetting: Included
|
||||
|
||||
# Saving one of these makes it really easy to inspect the loc output...
|
||||
- powershell: 'tar czf LocOutput.tar.gz LocOutput'
|
||||
displayName: 'PowerShell Script'
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: LocOutput'
|
||||
inputs:
|
||||
PathtoPublish: LocOutput.tar.gz
|
||||
ArtifactName: LocOutput
|
||||
|
||||
|
||||
4
.pipelines/packages.config
Normal file
4
.pipelines/packages.config
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Microsoft.PowerToys.Telemetry" version="2.0" />
|
||||
</packages>
|
||||
@@ -1,21 +0,0 @@
|
||||
static_analysis_options:
|
||||
fxcop_options:
|
||||
disable_tool_scan: false
|
||||
policheck_options:
|
||||
fail_on_error: true
|
||||
moderncop_options:
|
||||
fail_on_error: true
|
||||
files_to_scan:
|
||||
- from: 'src'
|
||||
exclude:
|
||||
- '**/just.config.js'
|
||||
- '**/webpack.config.js'
|
||||
- '**/webpack.serve.config.js'
|
||||
- '**/dist/bundle.js'
|
||||
binskim_options:
|
||||
disable_tool_scan: false
|
||||
files_to_scan:
|
||||
- from: 'installer/packages'
|
||||
exclude:
|
||||
- 'WiX.3.11.1/**/*.dll'
|
||||
- 'Wix.3.11.1/**/*.exe'
|
||||
@@ -1,81 +0,0 @@
|
||||
environment:
|
||||
host:
|
||||
os: 'windows'
|
||||
flavor: 'server'
|
||||
version: '2016'
|
||||
runtime:
|
||||
provider: 'appcontainer'
|
||||
image: 'cdpxwin.azurecr.io/user/powertoys/vs2019:3.0'
|
||||
source_mode: 'map'
|
||||
|
||||
version:
|
||||
name: 'PowerToys'
|
||||
major: 1
|
||||
minor: 0
|
||||
|
||||
signing_options:
|
||||
profile: 'external_distribution'
|
||||
|
||||
package_sources:
|
||||
nuget:
|
||||
feeds:
|
||||
'Nuget': 'https://api.nuget.org/v3/index.json'
|
||||
'PipelineBuildSupplement': 'https://msazure.pkgs.visualstudio.com/_packaging/PipelineBuildSupplement/nuget/v3/index.json'
|
||||
|
||||
restore:
|
||||
commands:
|
||||
- !!defaultcommand
|
||||
name: 'Restore Power Toys Telemetry'
|
||||
command: '.pipelines\restore-telemetry.cmd'
|
||||
- !!defaultcommand
|
||||
name: 'Restore Power Toys'
|
||||
command: '.pipelines\restore.cmd'
|
||||
- !!defaultcommand
|
||||
name: 'Restore Installer'
|
||||
command: '.pipelines\restore-installer.cmd'
|
||||
|
||||
|
||||
build:
|
||||
commands:
|
||||
- !!buildcommand
|
||||
name: 'Build Power Toys'
|
||||
command: '.pipelines\build.cmd'
|
||||
artifacts:
|
||||
- from: 'x64/Release'
|
||||
to: 'Build_Output'
|
||||
include:
|
||||
- 'PowerToys.exe'
|
||||
- 'PowerToysSettings.exe'
|
||||
- 'modules\FancyZonesEditor.exe'
|
||||
- 'modules\fancyzones.dll'
|
||||
- 'modules\shortcut_guide.dll'
|
||||
signing_options:
|
||||
sign_inline: true # This does signing a soon as this command completes
|
||||
- !!buildcommand
|
||||
name: 'Build Power Toys Installer'
|
||||
command: '.pipelines\build-installer.cmd'
|
||||
artifacts:
|
||||
- from: 'installer\PowerToysSetup\x64\Release'
|
||||
to: 'Build_Installer_Output'
|
||||
include:
|
||||
- 'PowerToysSetup.msi'
|
||||
signing_options:
|
||||
sign_inline: true # This does signing a soon as this command completes
|
||||
|
||||
static_analysis_options:
|
||||
binskim_options:
|
||||
files_to_scan:
|
||||
- from: 'installer/packages'
|
||||
exclude:
|
||||
exclude:
|
||||
- 'WiX.3.11.1/**/*.dll'
|
||||
- 'Wix.3.11.1/**/*.exe'
|
||||
moderncop_options:
|
||||
files_to_scan:
|
||||
- from: 'src'
|
||||
exclude:
|
||||
- '**/just.config.js'
|
||||
- '**/webpack.config.js'
|
||||
- '**/webpack.serve.config.js'
|
||||
- '**/dist/bundle.js'
|
||||
|
||||
10
.pipelines/release-nuget.config
Normal file
10
.pipelines/release-nuget.config
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="PowerToysDependencies" value="https://microsoft.pkgs.visualstudio.com/Dart/_packaging/PowerToysDependencies/nuget/v3/index.json" />
|
||||
</packageSources>
|
||||
<disabledPackageSources>
|
||||
<clear />
|
||||
</disabledPackageSources>
|
||||
</configuration>
|
||||
552
.pipelines/release.yml
Normal file
552
.pipelines/release.yml
Normal file
@@ -0,0 +1,552 @@
|
||||
# This build should never run as CI or against a pull request.
|
||||
trigger: none
|
||||
pr: none
|
||||
|
||||
pool:
|
||||
name: WinDevPool-L
|
||||
demands: ImageOverride -equals WinDevVS17-latest
|
||||
|
||||
parameters:
|
||||
- name: buildConfigurations
|
||||
type: object
|
||||
default:
|
||||
- Release
|
||||
- name: buildPlatforms
|
||||
type: object
|
||||
default:
|
||||
- x64
|
||||
- arm64
|
||||
- name: versionNumber
|
||||
type: string
|
||||
default: '0.0.1'
|
||||
|
||||
variables:
|
||||
IsPipeline: 1 # The installer uses this to detect whether it should pick up localizations
|
||||
|
||||
name: $(BuildDefinitionName)_$(date:yyMM).$(date:dd)$(rev:rrr)
|
||||
resources:
|
||||
repositories:
|
||||
- repository: self
|
||||
type: git
|
||||
ref: main
|
||||
jobs:
|
||||
- job: Build
|
||||
strategy:
|
||||
matrix:
|
||||
${{ each config in parameters.buildConfigurations }}:
|
||||
${{ each platform in parameters.buildPlatforms }}:
|
||||
${{ config }}_${{ platform }}:
|
||||
BuildConfiguration: ${{ config }}
|
||||
BuildPlatform: ${{ platform }}
|
||||
displayName: Build
|
||||
timeoutInMinutes: 120 # Some of the loc stuff adds quite a bit of time.
|
||||
cancelTimeoutInMinutes: 1
|
||||
steps:
|
||||
- checkout: self
|
||||
clean: true
|
||||
submodules: true
|
||||
persistCredentials: True
|
||||
|
||||
# Sets versions for all PowerToy created DLLs
|
||||
- task: PowerShell@1
|
||||
displayName: Set Versions.Prop
|
||||
inputs:
|
||||
scriptName: .pipelines/versionSetting.ps1
|
||||
arguments: -versionNumber '${{ parameters.versionNumber }}' -DevEnvironment ''
|
||||
|
||||
# Guardian tool needs 'Microsoft.NETCore.App', version '2.1.0' (x64)
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Use .NET Core 2.1 SDK'
|
||||
inputs:
|
||||
packageType: sdk
|
||||
version: '2.1.x'
|
||||
|
||||
- task: UseDotNet@2
|
||||
displayName: 'Use .NET 7 SDK'
|
||||
inputs:
|
||||
packageType: sdk
|
||||
version: '7.x'
|
||||
|
||||
- task: NuGetAuthenticate@0
|
||||
|
||||
- task: NuGetToolInstaller@1
|
||||
displayName: Use NuGet Installer latest
|
||||
|
||||
# this will restore the following nugets:
|
||||
# - main solution
|
||||
# - Bug report tool
|
||||
# - Webcam report tool
|
||||
# - Installer
|
||||
# - Bootstrapper Installer
|
||||
- task: NuGetCommand@2
|
||||
displayName: NuGet restore solutions dependencies
|
||||
inputs:
|
||||
command: restore
|
||||
restoreSolution: '**/*.sln'
|
||||
selectOrConfig: config
|
||||
nugetConfigPath: .pipelines/release-nuget.config
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Download and install WiX 3.14 development build
|
||||
inputs:
|
||||
targetType: filePath
|
||||
filePath: '$(build.sourcesdirectory)\.pipelines\installWiX.ps1'
|
||||
|
||||
- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@1
|
||||
displayName: 'Download Localization Files -- PowerToys 37400'
|
||||
inputs:
|
||||
teamId: 37400
|
||||
authId: '$(TouchdownApplicationID)'
|
||||
authKey: '$(TouchdownApplicationKey)'
|
||||
resourceFilePath: |
|
||||
**\Resources.resx
|
||||
**\Resource.resx
|
||||
**\Resources.resw
|
||||
appendRelativeDir: true
|
||||
localizationTarget: false
|
||||
# pseudoSetting: Included
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: Move Loc files into correct locations
|
||||
inputs:
|
||||
targetType: inline
|
||||
script: >-
|
||||
$VerbosePreference = "Continue"
|
||||
|
||||
./tools/build/move-and-rename-resx.ps1
|
||||
|
||||
./tools/build/move-uwp-resw.ps1
|
||||
pwsh: true
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: Moving telem files
|
||||
inputs:
|
||||
script: |
|
||||
call nuget.exe restore -configFile .pipelines/release-nuget.config -PackagesDirectory . .pipelines/packages.config || exit /b 1
|
||||
move /Y "Microsoft.PowerToys.Telemetry.2.0.0\build\include\TraceLoggingDefines.h" "src\common\Telemetry\TraceLoggingDefines.h" || exit /b 1
|
||||
move /Y "Microsoft.PowerToys.Telemetry.2.0.0\build\include\TelemetryBase.cs" "src\common\Telemetry\TelemetryBase.cs" || exit /b 1
|
||||
|
||||
## ALL BUT INSTALLER BUILDING
|
||||
- task: VSBuild@1
|
||||
displayName: Build PowerToys main project
|
||||
inputs:
|
||||
solution: '**\PowerToys.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: true
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Build BugReportTool
|
||||
inputs:
|
||||
solution: '**/tools/BugReportTool/BugReportTool.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: true
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Build WebcamReportTool
|
||||
inputs:
|
||||
solution: '**/tools/WebcamReportTool/WebcamReportTool.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: true
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Build StylesReportTool
|
||||
inputs:
|
||||
solution: '**/tools/StylesReportTool/StylesReportTool.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: true
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Build PowerToysSetupCustomActions
|
||||
inputs:
|
||||
solution: '**/installer/PowerToysSetup.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /target:PowerToysSetupCustomActions /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: true
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Settings for Packaging
|
||||
inputs:
|
||||
solution: 'src/settings-ui/Settings.UI/PowerToys.Settings.csproj'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Launcher for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/launcher/PowerLauncher/PowerLauncher.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Monaco Preview Handler for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/previewpane/MonacoPreviewHandler/MonacoPreviewHandler.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Markdown Preview Handler for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/previewpane/MarkdownPreviewHandler/MarkdownPreviewHandler.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Svg Preview Handler for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Svg Thumbnail Provider for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/previewpane/SvgThumbnailProvider/SvgThumbnailProvider.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish Measure Tool UI for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/MeasureTool/MeasureToolUI/MeasureToolUI.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Publish File Locksmith UI for Packaging
|
||||
inputs:
|
||||
solution: 'src/modules/FileLocksmith/FileLocksmithUI/FileLocksmithUI.csproj'
|
||||
vsVersion: 17.0
|
||||
# The arguments should be the same as the ones for Settings; make sure they are.
|
||||
msbuildArgs: >-
|
||||
/target:Publish
|
||||
/p:Configuration=$(BuildConfiguration);Platform=$(BuildPlatform);AppxBundle=Never
|
||||
/p:VCRTForwarders-IncludeDebugCRT=false
|
||||
/p:PowerToysRoot=$(Build.SourcesDirectory)
|
||||
/p:PublishProfile=InstallationPublishProfile.pubxml
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: VSBuild@1
|
||||
displayName: Build PowerToysSetupCustomActions DLL # This dll needs to be build and signed before building the MSI.
|
||||
inputs:
|
||||
solution: '**/installer/PowerToysSetup.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysSetupCustomActions
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
maximumCpuCount: true
|
||||
|
||||
#### MAIN SIGNING AREA
|
||||
# reference https://dev.azure.com/microsoft/Dart/_git/AppDriver?path=/ESRPSigning.json&version=GBarm64-netcore&_a=contents for winappdriver
|
||||
# https://dev.azure.com/microsoft/Dart/_git/AppDriver?path=/CIPolicy.xml&version=GBarm64-netcore&_a=contents
|
||||
|
||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||
displayName: Sign PowerToysSetupCustomActions DLL
|
||||
inputs:
|
||||
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
|
||||
FolderPath: 'installer/PowerToysSetupCustomActions/$(BuildPlatform)\$(BuildConfiguration)'
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
|
||||
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
|
||||
|
||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||
displayName: Sign Core PT
|
||||
inputs:
|
||||
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
|
||||
FolderPath: '$(BuildPlatform)/$(BuildConfiguration)' # Video conf uses x86 and x64.
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_core.json'
|
||||
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
|
||||
|
||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||
displayName: Sign x86 directshow VCM
|
||||
inputs:
|
||||
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
|
||||
FolderPath: 'x86/$(BuildConfiguration)' # Video conf uses x86 and x64.
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_vcm.json'
|
||||
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
|
||||
#### END SIGNING
|
||||
## END MAIN
|
||||
|
||||
## INSTALLER START
|
||||
#### MSI BUILDING AND SIGNING
|
||||
- task: VSBuild@1
|
||||
displayName: Build MSI
|
||||
inputs:
|
||||
solution: '**/installer/PowerToysSetup.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /target:PowerToysInstaller /bl:$(Build.SourcesDirectory)\msbuild.binlog
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: false # don't undo our hard work above by deleting the CustomActions dll
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Extracting MSI to verify contents'
|
||||
inputs:
|
||||
script: |
|
||||
"C:\Program Files (x86)\WiX Toolset v3.14\bin\dark.exe" -x $(build.sourcesdirectory)\extractedMsi installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).msi
|
||||
dir $(build.sourcesdirectory)\extractedMsi
|
||||
|
||||
# Did we sign all files
|
||||
- task: PowerShell@1
|
||||
displayName: Verifying entire build is signed and version set
|
||||
inputs:
|
||||
scriptName: .pipelines/versionAndSignCheck.ps1
|
||||
arguments: -targetDir '$(build.sourcesdirectory)\extractedMsi\File'
|
||||
|
||||
- task: PowerShell@1
|
||||
displayName: Verifying MSI Custom Actions DLL is signed
|
||||
inputs:
|
||||
scriptName: .pipelines/versionAndSignCheck.ps1
|
||||
arguments: -targetDir '$(build.sourcesdirectory)\extractedMsi\Binary'
|
||||
|
||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||
displayName: Sign MSI
|
||||
inputs:
|
||||
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
|
||||
FolderPath: 'installer/PowerToysSetup/$(BuildPlatform)\$(BuildConfiguration)'
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
|
||||
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
|
||||
#### END MSI
|
||||
|
||||
#### BOOTSTRAP BUILDING AND SIGNING
|
||||
- task: VSBuild@1
|
||||
displayName: Build Bootstrapper
|
||||
inputs:
|
||||
solution: '**/installer/PowerToysSetup.sln'
|
||||
vsVersion: 17.0
|
||||
msbuildArgs: /p:CIBuild=true /bl:$(Build.SourcesDirectory)\msbuild.binlog /t:PowerToysBootstrapper
|
||||
platform: $(BuildPlatform)
|
||||
configuration: $(BuildConfiguration)
|
||||
clean: false # don't undo our hard work above by deleting the MSI
|
||||
maximumCpuCount: true
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Insignia: Extract Engine from Bundle'
|
||||
inputs:
|
||||
script: '"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ib installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).exe -o installer\engine.exe'
|
||||
|
||||
|
||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||
displayName: 'ESRP CodeSigning (Engine)'
|
||||
inputs:
|
||||
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
|
||||
FolderPath: 'installer'
|
||||
Pattern: engine.exe
|
||||
signConfigType: inlineSignParams
|
||||
inlineOperation: |
|
||||
[
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationCode": "SigntoolSign",
|
||||
"Parameters": {
|
||||
"OpusName": "Microsoft",
|
||||
"OpusInfo": "http://www.microsoft.com",
|
||||
"FileDigest": "/fd \"SHA256\"",
|
||||
"PageHash": "/NPH",
|
||||
"TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
|
||||
},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
},
|
||||
{
|
||||
"KeyCode": "CP-230012",
|
||||
"OperationCode": "SigntoolVerify",
|
||||
"Parameters": {},
|
||||
"ToolName": "sign",
|
||||
"ToolVersion": "1.0"
|
||||
}
|
||||
]
|
||||
|
||||
- task: CmdLine@2
|
||||
displayName: 'Insignia: Merge Engine into Bundle'
|
||||
inputs:
|
||||
script: '"C:\Program Files (x86)\WiX Toolset v3.14\bin\insignia.exe" -ab installer\engine.exe installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).exe -o installer\PowerToysSetup\$(BuildPlatform)\$(BuildConfiguration)\PowerToysSetup-${{ parameters.versionNumber }}-$(BuildPlatform).exe'
|
||||
|
||||
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1
|
||||
displayName: Sign Bootstrapper
|
||||
inputs:
|
||||
ConnectedServiceName: 'Terminal/Console/WinAppDriver Team Code Signing Connection'
|
||||
FolderPath: 'installer/PowerToysSetup/$(BuildPlatform)\$(BuildConfiguration)'
|
||||
signType: batchSigning
|
||||
batchSignPolicyFile: '$(build.sourcesdirectory)\.pipelines\ESRPSigning_installer.json'
|
||||
ciPolicyFile: '$(build.sourcesdirectory)\.pipelines\CIPolicy.xml'
|
||||
#### END BOOTSTRAP
|
||||
## END INSTALLER
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: binlog'
|
||||
condition: failed()
|
||||
continueOnError: True
|
||||
inputs:
|
||||
PathtoPublish: $(Build.SourcesDirectory)\msbuild.binlog
|
||||
ArtifactName: binlog-$(BuildPlatform)
|
||||
|
||||
- task: ComponentGovernanceComponentDetection@0
|
||||
displayName: Component Detection
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copying files for symbols
|
||||
inputs:
|
||||
contents: >-
|
||||
**/*.pdb
|
||||
flattenFolders: True
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)/Symbols-$(BuildPlatform)/
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Remove unneeded files from ArtifactStagingDirectory'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
cd $(Build.ArtifactStagingDirectory)/Symbols-$(BuildPlatform)/
|
||||
Remove-Item vc143.pdb
|
||||
Remove-Item *test*
|
||||
|
||||
- task: PublishSymbols@2
|
||||
displayName: Publish symbols path
|
||||
continueOnError: True
|
||||
inputs:
|
||||
SearchPattern: |
|
||||
$(Build.ArtifactStagingDirectory)/Symbols-$(BuildPlatform)/**/*.*
|
||||
IndexSources: false
|
||||
SymbolServerType: TeamServices
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: Symbols'
|
||||
inputs:
|
||||
PathtoPublish: $(System.ArtifactsDirectory)/Symbols-$(BuildPlatform)/
|
||||
ArtifactName: Symbols-${{ parameters.versionNumber }}-$(BuildPlatform)
|
||||
|
||||
- task: DeleteFiles@1
|
||||
displayName: 'Remove symbols from ArtifactStagingDirectory'
|
||||
inputs:
|
||||
Contents: '*'
|
||||
SourceFolder: $(Build.ArtifactStagingDirectory)/Symbols-$(BuildPlatform)/
|
||||
RemoveSourceFolder: True
|
||||
|
||||
- task: CopyFiles@2
|
||||
displayName: Copying setup file over
|
||||
inputs:
|
||||
contents: '**/PowerToysSetup-*.exe'
|
||||
flattenFolders: True
|
||||
targetFolder: $(Build.ArtifactStagingDirectory)
|
||||
|
||||
- task: PowerShell@2
|
||||
displayName: 'Calculating SHA256 hash'
|
||||
inputs:
|
||||
targetType: 'inline'
|
||||
script: |
|
||||
$p = "$(System.ArtifactsDirectory)\";
|
||||
$staging = "$(Build.ArtifactStagingDirectory)\"
|
||||
$hash = ((get-item $p\*.exe | Get-FileHash).Hash);
|
||||
$plat = "hash_$(BuildPlatform).txt";
|
||||
$combinedPath = $staging + $plat;
|
||||
|
||||
echo $plat
|
||||
echo $hash
|
||||
echo $p
|
||||
echo $combinedPath
|
||||
|
||||
$hash | out-file -filepath $combinedPath
|
||||
pwsh: true
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: PowerToySetup'
|
||||
inputs:
|
||||
PathtoPublish: $(System.ArtifactsDirectory)
|
||||
ArtifactName: setup-$(BuildPlatform)
|
||||
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: 'Publish Artifact: GPO Files'
|
||||
inputs:
|
||||
PathtoPublish: doc\gpo\assets
|
||||
ArtifactName: GroupPolicyObjectsFiles
|
||||
|
||||
|
||||
...
|
||||
@@ -1,3 +0,0 @@
|
||||
cd /D "%~dp0"
|
||||
|
||||
nuget restore ../installer/PowerToysSetup.sln || exit /b 1
|
||||
@@ -1,6 +0,0 @@
|
||||
cd /D "%~dp0"
|
||||
|
||||
set PROJECT="..\src\modules\fancyzones\editor\FancyZonesEditor\FancyZonesEditor.csproj"
|
||||
set TELEMETRY_PKG="Microsoft.PowerToys.Telemetry"
|
||||
|
||||
dotnet add %PROJECT% package %TELEMETRY_PKG%
|
||||
@@ -1,3 +0,0 @@
|
||||
cd /D "%~dp0"
|
||||
|
||||
nuget restore ../PowerToys.sln || exit /b 1
|
||||
63
.pipelines/verifyArm64Configuration.ps1
Normal file
63
.pipelines/verifyArm64Configuration.ps1
Normal file
@@ -0,0 +1,63 @@
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$True,Position=1)]
|
||||
[string]$solution
|
||||
)
|
||||
|
||||
Write-Output "Verifying Arm64 configuration for $solution"
|
||||
|
||||
$errorTable = @{}
|
||||
|
||||
$MSBuildLoc = & "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -prerelease -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\Microsoft.Build.dll
|
||||
if ($null -eq $MSBuildLoc) {
|
||||
throw "Unable to locate Microsoft.Build.dll"
|
||||
}
|
||||
|
||||
try {
|
||||
Add-Type -Path $MSBuildLoc
|
||||
}
|
||||
catch {
|
||||
# Catching because it may error on loading all the types from the assembly, but we only need one
|
||||
}
|
||||
|
||||
$solutionFile = [Microsoft.Build.Construction.SolutionFile]::Parse($solution);
|
||||
$arm64SlnConfigs = $solutionFile.SolutionConfigurations | Where-Object {
|
||||
$_.PlatformName -eq "ARM64"
|
||||
};
|
||||
|
||||
# Should have two configurations. Debug and Release.
|
||||
if($arm64SlnConfigs.Length -lt 2) {
|
||||
Write-Host -ForegroundColor Red "Missing Solution-level Arm64 platforms"
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# List projects only.
|
||||
$projects = $solutionFile.ProjectsInOrder | Where-Object {
|
||||
$_.ProjectType -eq "KnownToBeMSBuildFormat"
|
||||
};
|
||||
|
||||
# Enumerate through the projects and add any project with a mismatched platform and project configuration
|
||||
foreach ($project in $projects) {
|
||||
foreach ($slnConfig in $arm64SlnConfigs.FullName) {
|
||||
if ($project.ProjectConfigurations.$slnConfig.FullName -ne $slnConfig) {
|
||||
$errorTable[$project.ProjectName] += @(""
|
||||
| Select-Object @{n = "Configuration"; e = { $project.ProjectConfigurations.$slnConfig.FullName } },
|
||||
@{n = "ExpectedConfiguration"; e = { $slnConfig } })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($errorTable.Count -gt 0) {
|
||||
Write-Host -ForegroundColor Red "Verification failed for the following projects:`n"
|
||||
$errorTable.Keys | ForEach-Object {
|
||||
Write-Host -ForegroundColor Red $_`:;
|
||||
$errorTable[$_] | ForEach-Object {
|
||||
Write-Host -ForegroundColor Red "$($_.ExpectedConfiguration)=$($_.Configuration)";
|
||||
};
|
||||
Write-Host -ForegroundColor Red `r
|
||||
}
|
||||
exit 1;
|
||||
}
|
||||
|
||||
Write-Output "Verification Complete"
|
||||
exit 0;
|
||||
18
.pipelines/verifyNugetPackages.ps1
Normal file
18
.pipelines/verifyNugetPackages.ps1
Normal file
@@ -0,0 +1,18 @@
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$True,Position=1)]
|
||||
[string]$solution
|
||||
)
|
||||
|
||||
Write-Host "Verifying Nuget packages for $solution"
|
||||
|
||||
dotnet tool restore
|
||||
dotnet consolidate -s $solution
|
||||
|
||||
if (-not $?)
|
||||
{
|
||||
Write-Host -ForegroundColor Red "Nuget packages with the same name must all be the same version."
|
||||
exit 1
|
||||
}
|
||||
|
||||
exit 0
|
||||
88
.pipelines/versionAndSignCheck.ps1
Normal file
88
.pipelines/versionAndSignCheck.ps1
Normal file
@@ -0,0 +1,88 @@
|
||||
[CmdletBinding()]
|
||||
# todo: send in arch / conf, could send in actual path
|
||||
Param(
|
||||
[Parameter(Mandatory=$True,Position=1)]
|
||||
[AllowEmptyString()]
|
||||
[string]$targetDir = $PSScriptRoot + '/../extractedMsi/File'
|
||||
)
|
||||
|
||||
$DirPath = $targetDir; #this file is in pipeline, we need root.
|
||||
$items = Get-ChildItem -Path $DirPath -File -Include *.exe,*.dll,*.ttf,PTCustomActions -Recurse -Force -ErrorAction SilentlyContinue
|
||||
$totalFailure = 0;
|
||||
|
||||
Write-Host $DirPath;
|
||||
|
||||
if(-not (Test-Path $DirPath))
|
||||
{
|
||||
Write-Host "Folder does not exist!"
|
||||
}
|
||||
|
||||
Write-Host "Total items: " $items.Count
|
||||
|
||||
if($items.Count -eq 0)
|
||||
{
|
||||
# no items means something bad happened. We should fail ASAP
|
||||
exit 1;
|
||||
}
|
||||
|
||||
$items | ForEach-Object {
|
||||
if($_.VersionInfo.FileVersion -eq "1.0.0.0" )
|
||||
{
|
||||
# These items are exceptions that actually have the 1.0.0.0 version.
|
||||
if ((-not $_.Name.EndsWith("Microsoft.Windows.ApplicationModel.DynamicDependency.Projection.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Windows.ApplicationModel.Resources.Projection.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Windows.ApplicationModel.WindowsAppRuntime.Projection.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Windows.AppLifecycle.Projection.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Windows.System.Power.Projection.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.WindowsAppRuntime.Bootstrap.Net.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Xaml.Interactions.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Xaml.Interactivity.dll")) -and
|
||||
(-not $_.Name.EndsWith("hyjiacan.py4n.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.WindowsAppRuntime.Release.Net.dll"))
|
||||
)
|
||||
{
|
||||
Write-Host "Version set to 1.0.0.0: " + $_.FullName
|
||||
$totalFailure++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$items | ForEach-Object {
|
||||
if($_.VersionInfo.FileVersion -eq $null )
|
||||
{
|
||||
# These items are exceptions that actually a version not set.
|
||||
if ((-not $_.Name.EndsWith("codicon.ttf")) -and
|
||||
(-not $_.Name.EndsWith("e_sqlite3.dll")) -and
|
||||
(-not $_.Name.EndsWith("vcamp140_app.dll")) -and
|
||||
(-not $_.Name.EndsWith("marshal.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.UI.Composition.OSSupport.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.UI.Xaml.Internal.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.Windows.ApplicationModel.Resources.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.WindowsAppRuntime.dll")) -and
|
||||
(-not $_.Name.EndsWith("Microsoft.WindowsAppRuntime.Bootstrap.dll")) -and
|
||||
(-not $_.Name.EndsWith("MRM.dll")) -and
|
||||
(-not $_.Name.EndsWith("PushNotificationsLongRunningTask.ProxyStub.dll")) -and
|
||||
(-not $_.Name.EndsWith("WindowsAppSdk.AppxDeploymentExtensions.Desktop.dll"))
|
||||
)
|
||||
{
|
||||
Write-Host "Version not set: " + $_.FullName
|
||||
$totalFailure++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$items | ForEach-Object {
|
||||
$auth = Get-AuthenticodeSignature $_.FullName
|
||||
if($auth.SignerCertificate -eq $null)
|
||||
{
|
||||
Write-Host "Not Signed: " + $_.FullName
|
||||
$totalFailure++;
|
||||
}
|
||||
}
|
||||
|
||||
if($totalFailure -gt 0)
|
||||
{
|
||||
exit 1
|
||||
}
|
||||
|
||||
exit 0
|
||||
60
.pipelines/versionSetting.ps1
Normal file
60
.pipelines/versionSetting.ps1
Normal file
@@ -0,0 +1,60 @@
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$True,Position=1)]
|
||||
[string]$versionNumber = "0.0.1",
|
||||
|
||||
[Parameter(Mandatory=$True,Position=2)]
|
||||
[AllowEmptyString()]
|
||||
[string]$DevEnvironment = "Local"
|
||||
)
|
||||
|
||||
Write-Host $PSScriptRoot
|
||||
$versionRegex = "(\d+)\.(\d+)\.(\d+)"
|
||||
|
||||
if($versionNumber -match $versionRegEx)
|
||||
{
|
||||
#$buildDayOfYear = (Get-Date).DayofYear;
|
||||
#$buildTime = Get-Date -Format HH;
|
||||
#$buildTime = Get-Date -Format HHmmss;
|
||||
#$buildYear = Get-Date -Format yy;
|
||||
#$revision = [string]::Format("{0}{1}{2}", $buildYear, $buildDayOfYear, $buildTime )
|
||||
|
||||
# max UInt16, 65535
|
||||
#$revision = [string]::Format("{0}{1}", $buildDayOfYear, $buildTime )
|
||||
#Write-Host "Revision" $revision
|
||||
|
||||
$versionNumber = [int]::Parse($matches[1]).ToString() + "." + [int]::Parse($matches[2]).ToString() + "." + [int]::Parse($matches[3]).ToString() # + "." + $revision
|
||||
Write-Host "Version Number" $versionNumber
|
||||
}
|
||||
else
|
||||
{
|
||||
throw "Build format does not match the expected pattern (buildName_w.x.y.z)"
|
||||
}
|
||||
|
||||
$verPropWriteFileLocation = $PSScriptRoot + '/../src/Version.props';
|
||||
$verPropReadFileLocation = $verPropWriteFileLocation;
|
||||
|
||||
[XML]$verProps = Get-Content $verPropReadFileLocation
|
||||
$verProps.Project.PropertyGroup.Version = $versionNumber;
|
||||
$verProps.Project.PropertyGroup.DevEnvironment = $DevEnvironment;
|
||||
|
||||
Write-Host "xml" $verProps.Project.PropertyGroup.Version
|
||||
$verProps.Save($verPropWriteFileLocation);
|
||||
|
||||
# Set PowerRenameContextMenu package version in AppManifest.xml
|
||||
$powerRenameContextMenuAppManifestWriteFileLocation = $PSScriptRoot + '/../src/modules/powerrename/PowerRenameContextMenu/AppxManifest.xml';
|
||||
$powerRenameContextMenuAppManifestReadFileLocation = $powerRenameContextMenuAppManifestWriteFileLocation;
|
||||
|
||||
[XML]$powerRenameContextMenuAppManifest = Get-Content $powerRenameContextMenuAppManifestReadFileLocation
|
||||
$powerRenameContextMenuAppManifest.Package.Identity.Version = $versionNumber + '.0'
|
||||
Write-Host "PowerRenameContextMenu version" $powerRenameContextMenuAppManifest.Package.Identity.Version
|
||||
$powerRenameContextMenuAppManifest.Save($powerRenameContextMenuAppManifestWriteFileLocation);
|
||||
|
||||
# Set ImageResizerContextMenu package version in AppManifest.xml
|
||||
$imageResizerContextMenuAppManifestWriteFileLocation = $PSScriptRoot + '/../src/modules/imageresizer/ImageResizerContextMenu/AppxManifest.xml';
|
||||
$imageResizerContextMenuAppManifestReadFileLocation = $imageResizerContextMenuAppManifestWriteFileLocation;
|
||||
|
||||
[XML]$imageResizerContextMenuAppManifest = Get-Content $imageResizerContextMenuAppManifestReadFileLocation
|
||||
$imageResizerContextMenuAppManifest.Package.Identity.Version = $versionNumber + '.0'
|
||||
Write-Host "ImageResizerContextMenu version" $imageResizerContextMenuAppManifest.Package.Identity.Version
|
||||
$imageResizerContextMenuAppManifest.Save($imageResizerContextMenuAppManifestWriteFileLocation);
|
||||
20
.vsconfig
Normal file
20
.vsconfig
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"components": [
|
||||
"Microsoft.VisualStudio.Component.CoreEditor",
|
||||
"Microsoft.VisualStudio.Workload.CoreEditor",
|
||||
"Microsoft.VisualStudio.Workload.NativeDesktop",
|
||||
"Microsoft.VisualStudio.Workload.ManagedDesktop",
|
||||
"Microsoft.VisualStudio.Workload.Universal",
|
||||
"Microsoft.VisualStudio.Component.Windows10SDK.19041",
|
||||
"Microsoft.VisualStudio.Component.Windows10SDK.20348",
|
||||
"Microsoft.VisualStudio.ComponentGroup.UWP.VC",
|
||||
"Microsoft.VisualStudio.Component.UWP.VC.ARM64",
|
||||
"Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre",
|
||||
"Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre",
|
||||
"Microsoft.VisualStudio.Component.VC.ATL.ARM64",
|
||||
"Microsoft.VisualStudio.Component.VC.ATL.ARM64.Spectre",
|
||||
"Microsoft.VisualStudio.Component.VC.ATL.Spectre",
|
||||
"Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs"
|
||||
]
|
||||
}
|
||||
9
CODE_OF_CONDUCT.md
Normal file
9
CODE_OF_CONDUCT.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Microsoft Open Source Code of Conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
|
||||
|
||||
Resources:
|
||||
|
||||
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
|
||||
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
|
||||
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
|
||||
114
COMMUNITY.md
Normal file
114
COMMUNITY.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Community
|
||||
|
||||
The PowerToys team is extremely grateful to have the support of an amazing active community. The work you do is incredibly important. PowerToys wouldn’t be near what it is without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thanks and to recognize your work. This is a living document dedicated to highlighting the high impact community members and their contributions.
|
||||
|
||||
Names are in alphabetical order based on first name.
|
||||
|
||||
## High impact community members
|
||||
|
||||
### [@Aaron-Junker](https://github.com/Aaron-Junker) - [Aaron Junker](https://aaron-junker.github.io)
|
||||
Aaron has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes. Aaron was the primary person for helping build the File Explorer preview pane handler for developer files.
|
||||
|
||||
### [@CleanCodeDeveloper](https://github.com/CleanCodeDeveloper)
|
||||
CleanCodeDeveloper helped do massive amounts of code stability and image resizer work.
|
||||
|
||||
### [@damienleroy](https://github.com/damienleroy) - [Damien Leroy](https://www.linkedin.com/in/Damien-Leroy-b2734416a/)
|
||||
Damien has helped out by developing and contributing the Quick Accent utility.
|
||||
|
||||
### [@davidegiacometti](https://github.com/davidegiacometti) - [Davide Giacometti](https://www.linkedin.com/in/davidegiacometti/)
|
||||
Davide has helped fix multiple bugs, added new utilities, features, as well as help us with the ARM64 effort by porting applications to .NET Core.
|
||||
|
||||
### [@dend](https://github.com/dend/) - Den Delimarsky
|
||||
|
||||
PowerToys Awake is a tool to keep your computer awake.
|
||||
|
||||
### [@franky920920](https://github.com/franky920920) - [Franky Chen](https://frankychen.net)
|
||||
Franky has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes to PowerToys.
|
||||
|
||||
### [@htcfreek](https://github.com/htcfreek) - Heiko
|
||||
Heiko has helped triaging, discussing, and creating a substantial number of issues and contributed features/fixes to PowerToys.
|
||||
|
||||
### [@Jay-o-Way](https://github.com/Jay-o-Way) - Jay
|
||||
Jay has helped triaging, discussing, creating a substantial number of issues and PRs.
|
||||
|
||||
### [@jsoref](https://github.com/jsoref) - [Josh Soref](https://check-spelling.dev/)
|
||||
Helping keep our spelling correct :)
|
||||
|
||||
### [@martinchrzan](https://github.com/martinchrzan/) - Martin Chrzan
|
||||
|
||||
Color Picker is from Martin.
|
||||
|
||||
### [@riverar](https://github.com/riverar) - [Rafael Rivera](https://withinrafael.com/)
|
||||
|
||||
Rafael has helped do the [upgrade from CppWinRT 1.x to 2.0](https://github.com/microsoft/PowerToys/issues/1907). He directly provided feedback to the CppWinRT team for bugs from this migration as well.
|
||||
|
||||
### [@royvou](https://github.com/royvou)
|
||||
Roy has helped out contributing multiple features to PowerToys Run
|
||||
|
||||
### [@snickler](https://github.com/snickler) - [Jeremy Sinclair](http://sinclairinat0r.com)
|
||||
Jeremy has helped drive large sums of the ARM64 support inside PowerToys
|
||||
|
||||
### [@TobiasSekan](https://github.com/TobiasSekan) - Tobias Sekan
|
||||
Tobias Sekan has helped out contributing features to PowerToys Run such as Settings plugin, Registry plugin
|
||||
|
||||
### [@ThiefZero](https://github.com/ThiefZero)
|
||||
ThiefZero has helped out contributing a features to PowerToys Run such as the unit converter plugin
|
||||
|
||||
## Open source projects
|
||||
|
||||
As PowerToys creates new utilities, some will be based off existing technology. We'll continue to do our best to contribute back to these projects but their efforts were the base of some of our projects. We want to be sure their work is directly recognized.
|
||||
|
||||
### [@jjw24](https://github.com/jjw24/) - Jeremy Wu
|
||||
|
||||
Their fork of Wox was the base of PowerToys Run.
|
||||
|
||||
### [WoX Launcher](https://github.com/Wox-launcher/Wox/)
|
||||
|
||||
Initial base of jjw24's fork, which makes it the base of PowerToys Run.
|
||||
|
||||
### [Text-Grab](https://github.com/TheJoeFin/Text-Grab) - Joseph Finney
|
||||
Joe helped develop and contribute to the Text Extractor utility. It is directly based on his Text Grab application.
|
||||
|
||||
## Microsoft community members
|
||||
|
||||
We would like to also directly call out some extremely helpful Microsoft employees that have directly contributed to PowerToys. This isn't their day job and was work they did out of passion. We want to say thank you and recognize your work.
|
||||
|
||||
### [@betsegaw](https://github.com/betsegaw/) - [Betsegaw Tadele](http://www.dreamsofameaningfullife.com/)
|
||||
|
||||
Window Walker, inside PowerToys Run, is from Beta.
|
||||
|
||||
### [@TheMrJukes](https://github.com/TheMrJukes/) - Bret Anderson
|
||||
|
||||
The base of FancyZones and a lot of performance adjustments are from the hard work of Bret.
|
||||
|
||||
### [@bricelam](https://github.com/bricelam/) - [Brice Lambson](https://bricelam.net/)
|
||||
|
||||
Image Resizer is from Brice.
|
||||
|
||||
### [@chrdavis](https://github.com/chrdavis/) - Chris Davis
|
||||
|
||||
PowerRename is from Chris's SmartRename and icon rendering for SVGs in File Explorer
|
||||
|
||||
### [@Niels9001](https://github.com/niels9001/) - [Niels Laute](https://nielslaute.com/)
|
||||
|
||||
Niels has helped drive large sums of our update toward a new [consistent and modern UX](https://github.com/microsoft/PowerToys/issues/891). This includes the [launcher work](https://github.com/microsoft/PowerToys/issues/44), color picker UX update and [icon design](https://github.com/microsoft/PowerToys/issues/1118).
|
||||
|
||||
### [@oldnewthing](https://github.com/oldnewthing) - Raymond Chen
|
||||
|
||||
Find My Mouse is based on Raymond Chen's SuperSonar.
|
||||
|
||||
### Microsoft InVEST team
|
||||
|
||||
This amazing team helped PowerToys develop PowerToys Run and Keyboard manager as well as update our Settings to v2. @alekhyareddy28, @arjunbalgovind, @jyuwono @laviusmotileng-ms, @ryanbodrug-microsoft, @saahmedm, @somil55, @traies, @udit3333
|
||||
|
||||
## PowerToys core team
|
||||
|
||||
- [@crutkas](https://github.com/crutkas/) - Clint Rutkas - Lead
|
||||
- [@cinnamon-msft](https://github.com/cinnamon-msft) - Kayla Cinnamon - Product Manager
|
||||
- [@jaimecbernardo](https://github.com/jaimecbernardo) - Jaime Bernardo - Dev lead
|
||||
- [@donlaci](https://github.com/donlaci) - Laszlo Nemeth - Dev
|
||||
- [@SeraphimaZykova](https://github.com/SeraphimaZykova) - Seraphima Zykova - Dev
|
||||
- [@sosssego](https://github.com/sosssego) - Frederico Moron - Dev
|
||||
- [@stefansjfw](https://github.com/stefansjfw) - Stefan Markovic - Dev
|
||||
- [@taras-janea](https://github.com/taras-janea) - Taras Sich - Dev
|
||||
- [@yuyoyuppe](https://github.com/yuyoyuppe) - Andrey Nekrasov - Dev
|
||||
68
CONTRIBUTING.md
Normal file
68
CONTRIBUTING.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# PowerToys Contributor's Guide
|
||||
|
||||
Below is our guidance for how to report issues, propose new features, and submit contributions via Pull Requests (PRs). Our philosophy is heavily based around understanding the problem and scenarios first, this is why we follow this pattern before work has started.
|
||||
|
||||
1. There is an issue
|
||||
2. There has been a conversation
|
||||
3. There is agreement on the problem, the fit for PowerToys, and the solution to the problem (implementation)
|
||||
|
||||
## Filing an issue
|
||||
|
||||
Please follow this simple rule to help us eliminate any unnecessary wasted effort & frustration, and ensure an efficient and effective use of everyone's time - yours, ours, and other community members':
|
||||
|
||||
> 👉 If you have a question, think you've discovered an issue, would like to propose a new feature, etc., then find/file an issue **BEFORE** starting work to fix/implement it.
|
||||
|
||||
When requesting new features / enhancements, understanding problem and scenario around it is extremely important. Having additional evidence, data, tweets, blog posts, research, ... anything is extremely helpful. This information provides context to the scenario that may otherwise be lost.
|
||||
|
||||
* Don't know whether you're reporting an issue or requesting a feature? File an issue
|
||||
* Have a question that you don't see answered in docs, videos, etc.? File an issue
|
||||
* Want to know if we're planning on building a particular feature? File an issue
|
||||
* Got a great idea for a new utility or feature? File an issue/request/idea
|
||||
* Don't understand how to do something? File an issue/Community Guidance Request
|
||||
* Found an existing issue that describes yours? Great - upvote and add additional commentary / info / repro-steps / etc.
|
||||
|
||||
A quick search before filing an issue also could be helpful. It is likely someone else has found the problem you're seeing, and someone may be working on or have already contributed a fix!
|
||||
|
||||
### How to tell the PowerToys team this is an interesting thing to focus on
|
||||
|
||||
Upvote the original issue by clicking its [+😊] button and hitting 👍 (+1) icon or a different one. This way allows us to measure how impactful different issues are compared to others. The issue with comments like "+1", "me too", or similar is they actually make it harder to have a conversation and harder to quickly determine trending important requests.
|
||||
|
||||
---
|
||||
|
||||
## Contributing fixes / features
|
||||
|
||||
Please comment on an issue to let us know you're interested in working on something before you start the work. Not only does this avoid multiple people unexpectedly working on the same thing at the same time but it enables us to make sure everyone is clear on what should be done to implement any new functionality. It's less work for everyone, in the long run, to establish this up front.
|
||||
|
||||
### To Spec or not to Spec
|
||||
|
||||
A key point is for everyone to understand the approach that will be taken. We want to be sure if anyone does work, we will accept it in. Items that are larger in scope we'll want some type of spec to understand what is being planned and have a discussion. Specs help collaborators discuss different approaches to solve a problem, describe how the feature will behave, how the feature will impact the user, what happens if something goes wrong, etc. Driving towards agreement in a spec, before any code is written, often results in simpler code, and less wasted effort in the long run.
|
||||
|
||||
For such scenarios, once a team member has agreed with your approach, skip ahead to the section headed "Development" section below.
|
||||
|
||||
Team members will be happy to help review specs and guide them to completion.
|
||||
|
||||
### Help Wanted
|
||||
|
||||
Once the team has approved an issue/spec approach to solving, development can proceed. If no developers are immediately available, the spec can be parked ready for a developer to get started. Parked specs' issues will be labeled "Help Wanted". To find a list of development opportunities waiting for developer involvement, visit the Issues and filter on [the Help-Wanted label](https://github.com/microsoft/PowerToys/labels/Help%20Wanted).
|
||||
|
||||
---
|
||||
|
||||
## Development
|
||||
|
||||
Follow the [development guidelines](https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/readme.md).
|
||||
|
||||
### Naming of features and functionality
|
||||
|
||||
Naming should be descriptive and straight forward. We want names to be clear about functionality and usefulness moving forward.
|
||||
|
||||
### How can I become a collaborator on the PowerToys team
|
||||
|
||||
Be a great community member. Just help out a lot and make useful additions, filing bugs/suggestions, help develop fixes and features, code reviews, and always, docs. Lets continue to make the PowerToys repository a great spot to learn and make a great set of utilities.
|
||||
|
||||
When the time comes, Microsoft will reach out and help make you a formal team member. Just make sure they can reach out to you :)
|
||||
|
||||
---
|
||||
|
||||
## Thank you
|
||||
|
||||
Thank you in advance for your contribution!
|
||||
118
Cpp.Build.props
Normal file
118
Cpp.Build.props
Normal file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0"
|
||||
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<!-- Project configurations -->
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Props that should be disabled while building on CI server -->
|
||||
<ItemDefinitionGroup Condition="'$(CIBuild)'!='true'">
|
||||
<ClCompile>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<!-- C++ source compile-specific things for all configurations -->
|
||||
<PropertyGroup>
|
||||
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
|
||||
<VcpkgEnabled>false</VcpkgEnabled>
|
||||
<ExternalIncludePath>$(MSBuildThisFileFullPath)\..\deps\;$(MSBuildThisFileFullPath)\..\packages\;$(ExternalIncludePath)</ExternalIncludePath>
|
||||
<RunCodeAnalysis>true</RunCodeAnalysis>
|
||||
<CodeAnalysisRuleSet>$(MsbuildThisFileDirectory)\CppRuleSet.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<DisableSpecificWarnings>26800;28251;6387;4505;4679;4702;6248;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||
<DisableAnalyzeExternal >true</DisableAnalyzeExternal>
|
||||
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
|
||||
<ConformanceMode>false</ConformanceMode>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
<AdditionalOptions>/await %(AdditionalOptions)</AdditionalOptions>
|
||||
<PreprocessorDefinitions>_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
</Link>
|
||||
<Lib>
|
||||
<TreatLibWarningAsErrors>true</TreatLibWarningAsErrors>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<!-- C++ source compile-specific things for Debug/Release configurations -->
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
|
||||
<ClCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<!-- Global props -->
|
||||
<PropertyGroup Label="Globals"
|
||||
Condition="'$(OverrideWindowsTargetPlatformVersion)'!='True'">
|
||||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
|
||||
<TargetPlatformVersion>10.0.19041.0</TargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Props that are constant for both Debug and Release configurations -->
|
||||
<PropertyGroup Label="Configuration">
|
||||
<PlatformToolset Condition="'$(OverridePlatformToolset)'!='True'">v143</PlatformToolset>
|
||||
<IntDir>$(SolutionDir)$(Platform)\$(Configuration)\obj\$(ProjectName)\</IntDir>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<DesktopCompatible>true</DesktopCompatible>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Debug/Release props -->
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'"
|
||||
Label="Configuration">
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Release'"
|
||||
Label="Configuration">
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
258
CppRuleSet.ruleset
Normal file
258
CppRuleSet.ruleset
Normal file
@@ -0,0 +1,258 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RuleSet Name="Cpp Rule Set" Description="Based on Microsoft Native Recommended Rules. These rules focus on the most critical and common problems in your native code, including potential security holes and application crashes. You should include this rule set in any custom rule set you create for your native projects. This ruleset is designed to work with Visual Studio Professional edition and higher." ToolsVersion="17.0">
|
||||
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
|
||||
<Rule Id="C26100" Action="Info" />
|
||||
<Rule Id="C26101" Action="Info" />
|
||||
<Rule Id="C26110" Action="Info" />
|
||||
<Rule Id="C26111" Action="Info" />
|
||||
<Rule Id="C26112" Action="Info" />
|
||||
<Rule Id="C26115" Action="Info" />
|
||||
<Rule Id="C26116" Action="Info" />
|
||||
<Rule Id="C26117" Action="Info" />
|
||||
<Rule Id="C26140" Action="Info" />
|
||||
<Rule Id="C26437" Action="Info" />
|
||||
<Rule Id="C26439" Action="Info" />
|
||||
<Rule Id="C26441" Action="Info" />
|
||||
<Rule Id="C26444" Action="Info" />
|
||||
<Rule Id="C26449" Action="Info" />
|
||||
<Rule Id="C26450" Action="Info" />
|
||||
<Rule Id="C26451" Action="Error" />
|
||||
<Rule Id="C26452" Action="Info" />
|
||||
<Rule Id="C26453" Action="Info" />
|
||||
<Rule Id="C26454" Action="Info" />
|
||||
<Rule Id="C26478" Action="Info" />
|
||||
<Rule Id="C26479" Action="Info" />
|
||||
<Rule Id="C26495" Action="Error" />
|
||||
<Rule Id="C26498" Action="Info" />
|
||||
<Rule Id="C26800" Action="Info" />
|
||||
<Rule Id="C26810" Action="Info" />
|
||||
<Rule Id="C26811" Action="Info" />
|
||||
<Rule Id="C26813" Action="Info" />
|
||||
<Rule Id="C26815" Action="Info" />
|
||||
<Rule Id="C26816" Action="Info" />
|
||||
<Rule Id="C26817" Action="Info" />
|
||||
<Rule Id="C26819" Action="Info" />
|
||||
<Rule Id="C26820" Action="Info" />
|
||||
<Rule Id="C26827" Action="Info" />
|
||||
<Rule Id="C26828" Action="Info" />
|
||||
<Rule Id="C28020" Action="Info" />
|
||||
<Rule Id="C28021" Action="Info" />
|
||||
<Rule Id="C28022" Action="Info" />
|
||||
<Rule Id="C28023" Action="Info" />
|
||||
<Rule Id="C28024" Action="Info" />
|
||||
<Rule Id="C28039" Action="Info" />
|
||||
<Rule Id="C28112" Action="Info" />
|
||||
<Rule Id="C28113" Action="Info" />
|
||||
<Rule Id="C28125" Action="Info" />
|
||||
<Rule Id="C28137" Action="Info" />
|
||||
<Rule Id="C28138" Action="Info" />
|
||||
<Rule Id="C28159" Action="Info" />
|
||||
<Rule Id="C28160" Action="Info" />
|
||||
<Rule Id="C28163" Action="Info" />
|
||||
<Rule Id="C28164" Action="Info" />
|
||||
<Rule Id="C28182" Action="Info" />
|
||||
<Rule Id="C28183" Action="Info" />
|
||||
<Rule Id="C28193" Action="Info" />
|
||||
<Rule Id="C28196" Action="Info" />
|
||||
<Rule Id="C28202" Action="Info" />
|
||||
<Rule Id="C28203" Action="Info" />
|
||||
<Rule Id="C28205" Action="Info" />
|
||||
<Rule Id="C28206" Action="Info" />
|
||||
<Rule Id="C28207" Action="Info" />
|
||||
<Rule Id="C28209" Action="Info" />
|
||||
<Rule Id="C28210" Action="Info" />
|
||||
<Rule Id="C28211" Action="Info" />
|
||||
<Rule Id="C28212" Action="Info" />
|
||||
<Rule Id="C28213" Action="Info" />
|
||||
<Rule Id="C28214" Action="Info" />
|
||||
<Rule Id="C28215" Action="Info" />
|
||||
<Rule Id="C28216" Action="Info" />
|
||||
<Rule Id="C28217" Action="Info" />
|
||||
<Rule Id="C28218" Action="Info" />
|
||||
<Rule Id="C28219" Action="Info" />
|
||||
<Rule Id="C28220" Action="Info" />
|
||||
<Rule Id="C28221" Action="Info" />
|
||||
<Rule Id="C28222" Action="Info" />
|
||||
<Rule Id="C28223" Action="Info" />
|
||||
<Rule Id="C28224" Action="Info" />
|
||||
<Rule Id="C28225" Action="Info" />
|
||||
<Rule Id="C28226" Action="Info" />
|
||||
<Rule Id="C28227" Action="Info" />
|
||||
<Rule Id="C28228" Action="Info" />
|
||||
<Rule Id="C28229" Action="Info" />
|
||||
<Rule Id="C28230" Action="Info" />
|
||||
<Rule Id="C28231" Action="Info" />
|
||||
<Rule Id="C28232" Action="Info" />
|
||||
<Rule Id="C28233" Action="Info" />
|
||||
<Rule Id="C28234" Action="Info" />
|
||||
<Rule Id="C28235" Action="Info" />
|
||||
<Rule Id="C28236" Action="Info" />
|
||||
<Rule Id="C28237" Action="Info" />
|
||||
<Rule Id="C28238" Action="Info" />
|
||||
<Rule Id="C28239" Action="Info" />
|
||||
<Rule Id="C28240" Action="Info" />
|
||||
<Rule Id="C28241" Action="Info" />
|
||||
<Rule Id="C28243" Action="Info" />
|
||||
<Rule Id="C28244" Action="Info" />
|
||||
<Rule Id="C28245" Action="Info" />
|
||||
<Rule Id="C28246" Action="Info" />
|
||||
<Rule Id="C28250" Action="Info" />
|
||||
<Rule Id="C28251" Action="Info" />
|
||||
<Rule Id="C28252" Action="Info" />
|
||||
<Rule Id="C28253" Action="Info" />
|
||||
<Rule Id="C28254" Action="Info" />
|
||||
<Rule Id="C28262" Action="Info" />
|
||||
<Rule Id="C28263" Action="Info" />
|
||||
<Rule Id="C28267" Action="Info" />
|
||||
<Rule Id="C28272" Action="Info" />
|
||||
<Rule Id="C28273" Action="Info" />
|
||||
<Rule Id="C28275" Action="Info" />
|
||||
<Rule Id="C28279" Action="Info" />
|
||||
<Rule Id="C28280" Action="Info" />
|
||||
<Rule Id="C28282" Action="Info" />
|
||||
<Rule Id="C28285" Action="Info" />
|
||||
<Rule Id="C28286" Action="Info" />
|
||||
<Rule Id="C28287" Action="Info" />
|
||||
<Rule Id="C28288" Action="Info" />
|
||||
<Rule Id="C28289" Action="Info" />
|
||||
<Rule Id="C28290" Action="Info" />
|
||||
<Rule Id="C28291" Action="Info" />
|
||||
<Rule Id="C28300" Action="Info" />
|
||||
<Rule Id="C28301" Action="Info" />
|
||||
<Rule Id="C28302" Action="Info" />
|
||||
<Rule Id="C28303" Action="Info" />
|
||||
<Rule Id="C28304" Action="Info" />
|
||||
<Rule Id="C28305" Action="Info" />
|
||||
<Rule Id="C28306" Action="Info" />
|
||||
<Rule Id="C28307" Action="Info" />
|
||||
<Rule Id="C28308" Action="Info" />
|
||||
<Rule Id="C28309" Action="Info" />
|
||||
<Rule Id="C28350" Action="Info" />
|
||||
<Rule Id="C28351" Action="Info" />
|
||||
<Rule Id="C33001" Action="Info" />
|
||||
<Rule Id="C33004" Action="Info" />
|
||||
<Rule Id="C33005" Action="Info" />
|
||||
<Rule Id="C33010" Action="Info" />
|
||||
<Rule Id="C33011" Action="Info" />
|
||||
<Rule Id="C33020" Action="Info" />
|
||||
<Rule Id="C6001" Action="Info" />
|
||||
<Rule Id="C6011" Action="Info" />
|
||||
<Rule Id="C6029" Action="Info" />
|
||||
<Rule Id="C6031" Action="Info" />
|
||||
<Rule Id="C6053" Action="Info" />
|
||||
<Rule Id="C6054" Action="Info" />
|
||||
<Rule Id="C6059" Action="Info" />
|
||||
<Rule Id="C6063" Action="Info" />
|
||||
<Rule Id="C6064" Action="Info" />
|
||||
<Rule Id="C6066" Action="Info" />
|
||||
<Rule Id="C6067" Action="Info" />
|
||||
<Rule Id="C6101" Action="Info" />
|
||||
<Rule Id="C6200" Action="Info" />
|
||||
<Rule Id="C6201" Action="Info" />
|
||||
<Rule Id="C6214" Action="Info" />
|
||||
<Rule Id="C6215" Action="Info" />
|
||||
<Rule Id="C6216" Action="Info" />
|
||||
<Rule Id="C6217" Action="Info" />
|
||||
<Rule Id="C6220" Action="Info" />
|
||||
<Rule Id="C6226" Action="Info" />
|
||||
<Rule Id="C6230" Action="Info" />
|
||||
<Rule Id="C6235" Action="Info" />
|
||||
<Rule Id="C6236" Action="Info" />
|
||||
<Rule Id="C6237" Action="Info" />
|
||||
<Rule Id="C6242" Action="Info" />
|
||||
<Rule Id="C6248" Action="Info" />
|
||||
<Rule Id="C6250" Action="Info" />
|
||||
<Rule Id="C6255" Action="Info" />
|
||||
<Rule Id="C6258" Action="Info" />
|
||||
<Rule Id="C6259" Action="Info" />
|
||||
<Rule Id="C6260" Action="Info" />
|
||||
<Rule Id="C6262" Action="Info" />
|
||||
<Rule Id="C6263" Action="Info" />
|
||||
<Rule Id="C6268" Action="Info" />
|
||||
<Rule Id="C6269" Action="Info" />
|
||||
<Rule Id="C6270" Action="Info" />
|
||||
<Rule Id="C6271" Action="Info" />
|
||||
<Rule Id="C6272" Action="Info" />
|
||||
<Rule Id="C6273" Action="Info" />
|
||||
<Rule Id="C6274" Action="Info" />
|
||||
<Rule Id="C6276" Action="Info" />
|
||||
<Rule Id="C6277" Action="Info" />
|
||||
<Rule Id="C6278" Action="Info" />
|
||||
<Rule Id="C6279" Action="Info" />
|
||||
<Rule Id="C6280" Action="Info" />
|
||||
<Rule Id="C6281" Action="Info" />
|
||||
<Rule Id="C6282" Action="Info" />
|
||||
<Rule Id="C6283" Action="Info" />
|
||||
<Rule Id="C6284" Action="Info" />
|
||||
<Rule Id="C6285" Action="Info" />
|
||||
<Rule Id="C6286" Action="Info" />
|
||||
<Rule Id="C6287" Action="Info" />
|
||||
<Rule Id="C6288" Action="Info" />
|
||||
<Rule Id="C6289" Action="Info" />
|
||||
<Rule Id="C6290" Action="Info" />
|
||||
<Rule Id="C6291" Action="Info" />
|
||||
<Rule Id="C6292" Action="Info" />
|
||||
<Rule Id="C6293" Action="Info" />
|
||||
<Rule Id="C6294" Action="Info" />
|
||||
<Rule Id="C6295" Action="Info" />
|
||||
<Rule Id="C6296" Action="Info" />
|
||||
<Rule Id="C6297" Action="Info" />
|
||||
<Rule Id="C6299" Action="Info" />
|
||||
<Rule Id="C6302" Action="Info" />
|
||||
<Rule Id="C6303" Action="Info" />
|
||||
<Rule Id="C6305" Action="Info" />
|
||||
<Rule Id="C6306" Action="Info" />
|
||||
<Rule Id="C6308" Action="Info" />
|
||||
<Rule Id="C6310" Action="Info" />
|
||||
<Rule Id="C6312" Action="Info" />
|
||||
<Rule Id="C6314" Action="Info" />
|
||||
<Rule Id="C6317" Action="Info" />
|
||||
<Rule Id="C6318" Action="Info" />
|
||||
<Rule Id="C6319" Action="Info" />
|
||||
<Rule Id="C6324" Action="Info" />
|
||||
<Rule Id="C6328" Action="Info" />
|
||||
<Rule Id="C6331" Action="Info" />
|
||||
<Rule Id="C6332" Action="Info" />
|
||||
<Rule Id="C6333" Action="Info" />
|
||||
<Rule Id="C6335" Action="Info" />
|
||||
<Rule Id="C6381" Action="Info" />
|
||||
<Rule Id="C6383" Action="Info" />
|
||||
<Rule Id="C6384" Action="Info" />
|
||||
<Rule Id="C6385" Action="Info" />
|
||||
<Rule Id="C6386" Action="Info" />
|
||||
<Rule Id="C6387" Action="Info" />
|
||||
<Rule Id="C6388" Action="Info" />
|
||||
<Rule Id="C6500" Action="Info" />
|
||||
<Rule Id="C6501" Action="Info" />
|
||||
<Rule Id="C6503" Action="Info" />
|
||||
<Rule Id="C6504" Action="Info" />
|
||||
<Rule Id="C6505" Action="Info" />
|
||||
<Rule Id="C6506" Action="Info" />
|
||||
<Rule Id="C6508" Action="Info" />
|
||||
<Rule Id="C6509" Action="Info" />
|
||||
<Rule Id="C6510" Action="Info" />
|
||||
<Rule Id="C6511" Action="Info" />
|
||||
<Rule Id="C6513" Action="Info" />
|
||||
<Rule Id="C6514" Action="Info" />
|
||||
<Rule Id="C6515" Action="Info" />
|
||||
<Rule Id="C6516" Action="Info" />
|
||||
<Rule Id="C6517" Action="Info" />
|
||||
<Rule Id="C6518" Action="Info" />
|
||||
<Rule Id="C6522" Action="Info" />
|
||||
<Rule Id="C6525" Action="Info" />
|
||||
<Rule Id="C6527" Action="Info" />
|
||||
<Rule Id="C6530" Action="Info" />
|
||||
<Rule Id="C6540" Action="Info" />
|
||||
<Rule Id="C6551" Action="Info" />
|
||||
<Rule Id="C6552" Action="Info" />
|
||||
<Rule Id="C6701" Action="Info" />
|
||||
<Rule Id="C6702" Action="Info" />
|
||||
<Rule Id="C6703" Action="Info" />
|
||||
<Rule Id="C6704" Action="Info" />
|
||||
<Rule Id="C6705" Action="Info" />
|
||||
<Rule Id="C6706" Action="Info" />
|
||||
<Rule Id="C6993" Action="Info" />
|
||||
<Rule Id="C6995" Action="Info" />
|
||||
<Rule Id="C6997" Action="Info" />
|
||||
</Rules>
|
||||
</RuleSet>
|
||||
45
Directory.Build.props
Normal file
45
Directory.Build.props
Normal file
@@ -0,0 +1,45 @@
|
||||
<Project>
|
||||
|
||||
<PropertyGroup>
|
||||
<Copyright>Copyright (C) 2022 Microsoft Corporation</Copyright>
|
||||
<AssemblyCompany>Microsoft Corp.</AssemblyCompany>
|
||||
<AssemblyCopyright>Copyright (C) 2022 Microsoft Corporation</AssemblyCopyright>
|
||||
<AssemblyProduct>PowerToys</AssemblyProduct>
|
||||
<Company>Microsoft Corporation</Company>
|
||||
<NeutralLanguage>en-US</NeutralLanguage>
|
||||
<Platforms>x64;ARM64</Platforms>
|
||||
<PackageTags>PowerToys</PackageTags>
|
||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||
<AnalysisMode>Recommended</AnalysisMode>
|
||||
<PlatformTarget>$(Platform)</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
|
||||
<RepositoryUrl>https://github.com/microsoft/PowerToys</RepositoryUrl>
|
||||
<RepositoryType>GitHub</RepositoryType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<_PropertySheetDisplayName>PowerToys.Root.Props</_PropertySheetDisplayName>
|
||||
<ForceImportBeforeCppProps>$(MsbuildThisFileDirectory)\Cpp.Build.props</ForceImportBeforeCppProps>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(MSBuildProjectExtension)' == '.csproj'">
|
||||
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<Compile Include="$(MSBuildThisFileDirectory)\src\codeAnalysis\GlobalSuppressions.cs" Link="GlobalSuppressions.cs" />
|
||||
<AdditionalFiles Include="$(MSBuildThisFileDirectory)\src\codeAnalysis\StyleCop.json" Link="StyleCop.json" />
|
||||
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="7.0.0-preview1.22464.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
2
LICENSE
2
LICENSE
@@ -1,4 +1,4 @@
|
||||
The MIT License (MIT)
|
||||
The MIT License
|
||||
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
|
||||
|
||||
BIN
MTNDWidget.jpg
BIN
MTNDWidget.jpg
Binary file not shown.
|
Before Width: | Height: | Size: 4.7 KiB |
276
NOTICE.md
Normal file
276
NOTICE.md
Normal file
@@ -0,0 +1,276 @@
|
||||
# NOTICES AND INFORMATION
|
||||
This software incorporates material from third parties.
|
||||
|
||||
- Color Picker
|
||||
- File Explorer Add-ins
|
||||
- ImageResizer
|
||||
- PowerToys Run
|
||||
- Installer/Runner
|
||||
- Measure tool
|
||||
|
||||
## Utility: Color Picker
|
||||
|
||||
### Martin Chrzan's Color Picker
|
||||
|
||||
**Source**: https://github.com/martinchrzan/ColorPicker
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 martinchrzan
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
## Utility: File Explorer Add-ins
|
||||
|
||||
### Monaco Editor
|
||||
|
||||
**Source**: https://github.com/Microsoft/monaco-editor
|
||||
|
||||
**Additional third party notifications:** https://github.com/microsoft/monaco-editor/blob/main/ThirdPartyNotices.txt
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 - present Microsoft Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
## Utility: ImageResizer
|
||||
|
||||
### Brice Lams's Image Resizer License
|
||||
|
||||
**Source**: https://github.com/bricelam/ImageResizer/
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Brice Lambson. All rights reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
## Utility: PowerToys Run
|
||||
|
||||
### Wox License
|
||||
|
||||
**Fork project source**: https://github.com/jjw24/Wox/
|
||||
**Base project source**: https://github.com/Wox-launcher/Wox
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Wox
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
### Beta Tadele's Window Walker License
|
||||
|
||||
**Source**: https://github.com/betsegaw/windowwalker
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright 2020 Betsegaw Tadele
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
## Utility: PowerRename
|
||||
|
||||
### Chris Davis's SmartRename License
|
||||
|
||||
**Source**: https://github.com/chrdavis/SmartRename
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Chris Davis
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
## PowerToy: Installer/Runner
|
||||
|
||||
### spdlog
|
||||
**Source**: https://github.com/gabime/spdlog
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 Gabi Melman.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
-- NOTE: Third party dependency used by this software --
|
||||
This software depends on the fmt lib (MIT License),
|
||||
and users must comply to its license: https://github.com/fmtlib/fmt/blob/master/LICENSE.rst
|
||||
|
||||
|
||||
### expected-lite
|
||||
**Source**: https://github.com/martinmoene/expected-lite
|
||||
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
### zip
|
||||
**Source**: https://github.com/kuba--/zip
|
||||
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <http://unlicense.org/>
|
||||
|
||||
## Utility: Measure tool
|
||||
|
||||
### sse2neon
|
||||
We adopted some functions from it.
|
||||
|
||||
**Source**: https://github.com/DLTcollab/sse2neon
|
||||
|
||||
sse2neon is freely redistributable under the MIT License.
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
2351
PowerToys.sln
2351
PowerToys.sln
File diff suppressed because it is too large
Load Diff
311
README.md
311
README.md
@@ -1,150 +1,219 @@
|
||||
# Overview
|
||||
# Microsoft PowerToys
|
||||
|
||||
PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity.
|
||||

|
||||
|
||||
Inspired by the [Windows 95 era PowerToys project](https://en.wikipedia.org/wiki/Microsoft_PowerToys), this reboot provides power users with ways to squeeze more efficiency out of the Windows 10 shell and customize it for individual workflows. A great overview of the Windows 95 PowerToys can be found [here](https://socket3.wordpress.com/2016/10/22/using-windows-95-powertoys/).
|
||||
[How to use PowerToys][usingPowerToys-docs-link] | [Downloads & Release notes][github-release-link] | [Contributing to PowerToys](#contributing) | [What's Happening](#whats-happening) | [Roadmap](#powertoys-roadmap)
|
||||
|
||||

|
||||
## Build status
|
||||
|
||||
## Installation
|
||||
| Architecture | Solution (Main) | Solution (Stable) | Installer (Main) |
|
||||
|--------------|-----------------|-------------------|------------------|
|
||||
| x64 | [](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=main&jobName=Build%20x64%20Release) | [](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=stable) | [](https://dev.azure.com/microsoft/Dart/_build/latest?definitionId=76541&branchName=main) |
|
||||
| ARM64 | [](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=main) | [](https://dev.azure.com/ms/PowerToys/_build/latest?definitionId=219&branchName=stable) | [](https://dev.azure.com/microsoft/Dart/_build/latest?definitionId=76541&branchName=main) |
|
||||
|
||||
_(Note: in order to run PowerToys, you'll need to be running at least Windows build 17134 or higher. Also, PowerToys does not currently support Windows ARM machines)_
|
||||
## About
|
||||
|
||||
The latest release of PowerToys can be downloaded currently a few different ways. Our current recommended way is via GitHub.
|
||||
Microsoft PowerToys is a set of utilities for power users to tune and streamline their Windows experience for greater productivity. For more info on [PowerToys overviews and how to use the utilities][usingPowerToys-docs-link], or any other tools and resources for [Windows development environments](https://learn.microsoft.com/windows/dev-environment/overview), head over to [learn.microsoft.com][usingPowerToys-docs-link]!
|
||||
|
||||
### GitHub
|
||||
| | Current utilities: | |
|
||||
|--------------|--------------------|--------------|
|
||||
| [Always on Top](https://aka.ms/PowerToysOverview_AoT) | [PowerToys Awake](https://aka.ms/PowerToysOverview_Awake) | [Color Picker](https://aka.ms/PowerToysOverview_ColorPicker) |
|
||||
| [FancyZones](https://aka.ms/PowerToysOverview_FancyZones) | [File Explorer Add-ons](https://aka.ms/PowerToysOverview_FileExplorerAddOns) | [File Locksmith](https://aka.ms/PowerToysOverview_FileLocksmith) |
|
||||
| [Hosts File Editor](https://aka.ms/PowerToysOverview_HostsFileEditor) | [Image Resizer](https://aka.ms/PowerToysOverview_ImageResizer) | [Keyboard Manager](https://aka.ms/PowerToysOverview_KeyboardManager) |
|
||||
| [Mouse utilities](https://aka.ms/PowerToysOverview_MouseUtilities) | [PowerRename](https://aka.ms/PowerToysOverview_PowerRename) | [PowerToys Run](https://aka.ms/PowerToysOverview_PowerToysRun) |
|
||||
| [Quick Accent](https://aka.ms/PowerToysOverview_QuickAccent) | [Screen Ruler](https://aka.ms/PowerToysOverview_ScreenRuler) | [Shortcut Guide](https://aka.ms/PowerToysOverview_ShortcutGuide) |
|
||||
| [Text Extractor](https://aka.ms/PowerToysOverview_TextExtractor) | [Video Conference Mute](https://aka.ms/PowerToysOverview_VideoConference) |
|
||||
|
||||
The preview of these utilities can be installed from the [PowerToys GitHub releases page](https://github.com/Microsoft/powertoys/releases). Click on `Assets` to show the files available in the release and then click on `PowerToysSetup.msi` to download the PowerToys installer. <br />
|
||||
PDB symbols for the release are available in a separate zip file `PDB symbols.zip`.
|
||||
## Installing and running Microsoft PowerToys
|
||||
|
||||
### Chocolatey (Unofficial)
|
||||
### Requirements
|
||||
|
||||
Download and upgrade PowerToys from [Chocolatey](https://chocolatey.org).
|
||||
- Windows 11 or Windows 10 version 2004 (code name 20H1 / build number 19041) or newer.
|
||||
- Our installer will install the following items:
|
||||
- [.NET 6.0.10 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/6.0#runtime-desktop-6.0.10).
|
||||
- [Microsoft Edge WebView2 Runtime](https://go.microsoft.com/fwlink/p/?LinkId=2124703) bootstrapper. This will install the latest version.
|
||||
|
||||
To install PowerToys, run the following command from the command line or from PowerShell:
|
||||
### Via GitHub with EXE [Recommended]
|
||||
|
||||
Go to [Microsoft PowerToys GitHub releases page][github-release-link], click on `Assets` at the bottom to show the files available in the release. Please use the appropriate the PowerToys installer that matches your machine's architecture. For most, it is `x64`.
|
||||
|
||||
- **For x64 processors (most common):** [PowerToysSetup-0.64.1-x64.exe](https://github.com/microsoft/PowerToys/releases/download/v0.64.1/PowerToysSetup-0.64.1-x64.exe)
|
||||
- **For ARM64 processors:** [PowerToysSetup-0.64.1-arm64.exe](https://github.com/microsoft/PowerToys/releases/download/v0.64.1/PowerToysSetup-0.64.1-arm64.exe)
|
||||
|
||||
This is our preferred method.
|
||||
|
||||
### Via Microsoft Store
|
||||
|
||||
Install from the [Microsoft Store's PowerToys page][microsoft-store-link]. You must be using the [new Microsoft Store](https://blogs.windows.com/windowsExperience/2021/06/24/building-a-new-open-microsoft-store-on-windows-11/) which will be available for both Windows 11 and Windows 10.
|
||||
|
||||
### Via WinGet (Preview)
|
||||
Download PowerToys from [WinGet][winget-link]. To install PowerToys, run the following command from the command line / PowerShell:
|
||||
|
||||
```powershell
|
||||
choco install powertoys
|
||||
winget install Microsoft.PowerToys -s winget
|
||||
```
|
||||
|
||||
To upgrade PowerToys, run the following command from the command line or from PowerShell:
|
||||
### Other install methods
|
||||
|
||||
```powershell
|
||||
choco upgrade powertoys
|
||||
```
|
||||
|
||||
If you have any issues when installing/upgrading the package please go to the [package page](https://chocolatey.org/packages/powertoys) and follow the [Chocolatey triage process](https://chocolatey.org/docs/package-triage-process)
|
||||
|
||||
## Build Status
|
||||
|
||||
[](https://dev.azure.com/ms/PowerToys/_build?definitionId=35096)
|
||||
|
||||
## PowerToy Utilities
|
||||
|
||||
### FancyZones
|
||||
|
||||
[FancyZones](/src/modules/fancyzones/) - FancyZones is a window manager that makes it easy to create complex window layouts and quickly position windows into those layouts. The FancyZones backlog can be found [here](https://github.com/Microsoft/PowerToys/tree/master/doc/planning/FancyZonesBacklog.md)
|
||||
|
||||
### Shortcut
|
||||
|
||||
[Windows key shortcut guide](/src/modules/shortcut_guide) - The shortcut guide appears when a user holds the Windows key down for more than one second and shows the available shortcuts for the current state of the desktop. The shortcut guide backlog can be found [here](https://github.com/Microsoft/PowerToys/tree/master/doc/planning/ShortcutGuideBacklog.md)
|
||||
|
||||
### PowerRename
|
||||
|
||||
[PowerRename](/src/modules/powerrename) - PowerRename is a Windows Shell Extension for advanced bulk renaming using search and replace or regular expressions. PowerRename allows simple search and replace or more advanced regular expression matching. While you type in the search and replace input fields, the preview area will show what the items will be renamed to. PowerRename then calls into the Windows Explorer file operations engine to perform the rename. This has the benefit of allowing the rename operation to be undone after PowerRename exits.
|
||||
|
||||
Chris Davis contributed his [SmartRename tool](https://github.com/chrdavis/SmartRename) into PowerToys!
|
||||
|
||||
### Additional utilities in the pipeline are
|
||||
|
||||
* Maximize to new desktop widget - The MTND widget shows a pop-up button when a user hovers over the maximize / restore button on any window. Clicking it creates a new desktop, sends the app to that desktop and maximizes the app on the new desktop.
|
||||
* [Process terminate tool](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/Terminate%20Spec.md)
|
||||
* [Animated gif screen recorder](https://github.com/indierawk2k2/PowerToys-1/blob/master/specs/GIF%20Maker%20Spec.md)
|
||||
|
||||
### Backlog
|
||||
|
||||
The full backlog of utilities can be found [here](https://github.com/Microsoft/PowerToys/tree/master/doc/planning/PowerToysBacklog.md)
|
||||
|
||||
## What's Happening
|
||||
|
||||
### October Update
|
||||
|
||||
**Update** - We've shipped 0.12! This release includes bug fixes, addresses issues and implements many feature suggestions. This build and installer is also signed by Microsoft. Last, but not least, this release includes a new utility: Chris Davis has integrated [SmartRename tool](https://github.com/chrdavis/SmartRename) into PowerToys!
|
||||
|
||||

|
||||
|
||||
## Developer Guidance
|
||||
|
||||
### Build Prerequisites
|
||||
|
||||
* Windows 10 1803 (build 10.0.17134.0) or above to build and run PowerToys.
|
||||
* Visual Studio 2019 Community edition or higher, with the 'Desktop Development with C++' component and the Windows 10 SDK version 10.0.18362.0 or higher.
|
||||
|
||||
### Building the Code
|
||||
|
||||
* Open `powertoys.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
|
||||
* The PowerToys binaries will be in your repo under `x64\Release`.
|
||||
* If you want to copy the `PowerToys.exe` binary to a different location, you'll also need to copy the `modules` and the `svgs` folders.
|
||||
|
||||
### Prerequisites to Build the Installer
|
||||
|
||||
* Install the [WiX Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=RobMensching.WiXToolset).
|
||||
* Install the [WiX Toolset build tools](https://wixtoolset.org/releases/).
|
||||
|
||||
### Building the .msi Installer
|
||||
|
||||
* From the `installer` folder open `PowerToysSetup.sln` in Visual Studio, in the `Solutions Configuration` drop-down menu select `Release` or `Debug`, from the `Build` menu choose `Build Solution`.
|
||||
* The resulting `PowerToysSetup.msi` installer will be available in the `installer\PowerToysSetup\x64\Release\` folder.
|
||||
|
||||
### Debugging
|
||||
|
||||
The following configuration issue only applies if the user is a member of the Administrators group.
|
||||
|
||||
Some PowerToys modules require being run with the highest permission level if the current user is a member of the Administrators group. The highest permission level is required to be able to perform some actions when an elevated application (e.g. Task Manager) is in the foreground or is the target of an action. Without elevated privileges some PowerToys modules will still work but with some limitations:
|
||||
|
||||
* the `FancyZones` module will be not be able to move an elevated window to a zone.
|
||||
* the `Shortcut Guide` module will not appear if the foreground window belongs to an elevated application.
|
||||
|
||||
To run and debug PowerToys from Visual Studio when the user is a member of the Administrators group, Visual Studio has to be started with elevated privileges. If you want to avoid running Visual Studio with elevated privileges and don't mind the limitations described above, you can do the following: open the `runner` project properties and navigate to the `Linker -> Manifest File` settings, edit the `UAC Execution Level` property and change it from `highestAvailable (level='highestAvailable')` to `asInvoker (/level='asInvoker')`, save the changes.
|
||||
|
||||
### How to create new PowerToys
|
||||
|
||||
See the instructions on [how to install the PowerToys Module project template](tools/project_template). <br />
|
||||
Specifications for the [PowerToys settings API](doc/specs/PowerToys-settings.md).
|
||||
|
||||
### Coding Guidance
|
||||
|
||||
Please review these brief docs below relating to our coding standards etc.
|
||||
|
||||
> 👉 If you find something missing from these docs, feel free to contribute to any of our documentation files anywhere in the repository (or make some new ones\!)
|
||||
|
||||
This is a work in progress as we learn what we'll need to provide people in order to be effective contributors to our project.
|
||||
|
||||
* [Coding Style](doc/coding/style.md)
|
||||
* [Code Organization](doc/coding/organization.md)
|
||||
There are [community driven install methods](./doc/unofficialInstallMethods.md) such as Chocolatey and Scoop. If these are your preferred install solutions, this will have the install instructions.
|
||||
|
||||
## Contributing
|
||||
|
||||
This project welcomes contributions and suggestions and we are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
|
||||
This project welcomes contributions of all types. Help spec'ing, design, documentation, finding bugs are ways everyone can help on top of coding features / bug fixes. We are excited to work with the power user community to build a set of tools for helping you get the most out of Windows.
|
||||
|
||||
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](contributing.md). We will be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
|
||||
We ask that **before you start work on a feature that you would like to contribute**, please read our [Contributor's Guide](CONTRIBUTING.md). We will be happy to work with you to figure out the best approach, provide guidance and mentorship throughout feature development, and help avoid any wasted or duplicate effort.
|
||||
|
||||
> ⚠ **Note**: PowerToys is still a nascent project and the team is actively working out of this repository. We will be periodically re-structuring the code to make it easier to comprehend, navigate, build, test, and contribute to, so **DO expect significant changes to code layout on a regular basis**.
|
||||
Most contributions require you to agree to a [Contributor License Agreement (CLA)][oss-CLA] declaring that you have the right to, and actually do, grant us the rights to use your contribution.
|
||||
|
||||
> ⚠ **License Info**: Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
|
||||
For guidance on developing for PowerToys, please read the [developer docs](/doc/devdocs) for a detailed breakdown. This includes how to setup your computer to compile.
|
||||
|
||||
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
|
||||
a CLA and decorate the PR appropriately (e.g. status check, comment). Simply follow the instructions
|
||||
provided by the bot. You will only need to do this once across all repos using our CLA.
|
||||
## What's Happening
|
||||
|
||||
### PowerToys Roadmap
|
||||
|
||||
Our [prioritized roadmap][roadmap] of features and utilities that the core team is focusing on.
|
||||
|
||||
### 0.64 - October 2022 Update
|
||||
|
||||
In this release, we focused on releasing new features and improvements.
|
||||
|
||||
**Highlights**
|
||||
|
||||
- New utility: File Locksmith allows seeing which processes are currently using the selected files.
|
||||
- New utility: Hosts File Editor allows you to edit your hosts file in an Editor UI. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
|
||||
- Settings has a new feature for backing up / restoring the settings from a file. Thanks [@jefflord](https://github.com/jefflord)!
|
||||
- FancyZones allows you to set defaults for horizontal/vertical screens to get better intended behavior for new screens and cases where a monitor ID resets.
|
||||
- PowerToys ships with Group Policy Objects settings for force disabling and enabling PowerToys utilities in organizations. Check the [GPO docs](https://github.com/microsoft/PowerToys/tree/main/doc/gpo) for more details.
|
||||
- Added a warning about deprecating Video Conference Mute in the future (v0.67), please check https://github.com/microsoft/PowerToys/issues/21473 for more information.
|
||||
|
||||
### Known issues
|
||||
|
||||
- The Text Extractor utility [fails to recognize text in some cases on ARM64 devices running Windows 10](https://github.com/microsoft/PowerToys/issues/20278).
|
||||
- After installing PowerToys, [the new Windows 11 context menu entries for PowerRename and Image Resizer might not appear before a system restart](https://github.com/microsoft/PowerToys/issues/19124).
|
||||
- There are reports of users who are [unable to open the Settings window](https://github.com/microsoft/PowerToys/issues/18015). This is being caused by incompatibilities with some applications (RTSS RivaTuner Statistics Server is a known examples of this). If you're affected by this, please check the linked issue to verify if any of the presented solutions works for you.
|
||||
|
||||
### Always on Top
|
||||
|
||||
- Detect and put a window on top again if it's no longer on top.
|
||||
|
||||
### Color Picker
|
||||
|
||||
- Added the hexadecimal integer format. Thanks [@marius-bughiu](https://github.com/marius-bughiu)!
|
||||
|
||||
### FancyZones
|
||||
|
||||
- Added a way for users to configure default layouts for horizontal and vertical screens.
|
||||
- Replaced remaining Number Boxes in FancyZones Editor with Sliders, to improve accessibility for screen readers.
|
||||
- Fixed an issue breaking window switching shortcuts.
|
||||
|
||||
### File Locksmith
|
||||
|
||||
- Added a new utility: File Locksmith.
|
||||
- Thanks [@niels9001](https://github.com/niels9001) for the design on the UI!
|
||||
|
||||
### Group Policy Objects
|
||||
|
||||
- Group Policy Objects settings for force disabling and enabling PowerToys utilities.
|
||||
- Thanks [@htcfreek](https://github.com/htcfreek) for your help in reviewing to make sure the shipped settings conform to system administrators expectations!
|
||||
|
||||
### Hosts File Editor
|
||||
|
||||
- Added a new utility: Hosts File Editor. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
|
||||
- Thanks [@niels9001](https://github.com/niels9001) for the design help on the UI!
|
||||
- Thanks [@davidegiacometti](https://github.com/davidegiacometti) for fixing the bugs found and adding features up until release!
|
||||
- Thanks [@AtariDreams](https://github.com/AtariDreams) for consolidating the packages comparing to the rest of the project!
|
||||
- Thanks [@htcfreek](https://github.com/htcfreek) for adding a scrollviewer to the entry editor!
|
||||
|
||||
### Keyboard Manager
|
||||
|
||||
- Fixed a delay that was not being cancelled properly. Thanks [@AtariDreams](https://github.com/AtariDreams)!
|
||||
|
||||
### Mouse Utilities
|
||||
|
||||
- Changed the opacity setting to the 1-100 range. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
|
||||
|
||||
### PowerToys Run
|
||||
|
||||
- Changed image loading to release the images in PowerToys Run main executable. This is a try to fix the "app.dark.png" missing issues received after a PowerToys update.
|
||||
- Fixed the PowerToys Run hiding after the default action failed. Thanks [@hlaueriksson](https://github.com/hlaueriksson)!
|
||||
- Fixed the PowerToys Run allows showing after a context menu action succeeded. Thanks [@hlaueriksson](https://github.com/hlaueriksson)!
|
||||
|
||||
### Quick Accent
|
||||
|
||||
- Corrected "Dutch" word to "German". Thanks [@damienleroy](https://github.com/damienleroy)!
|
||||
- Added the Portuguese language accents. Thanks [@pcanavar](https://github.com/pcanavar)!
|
||||
- Fixed positioning of toolbar on scaled desktops.
|
||||
|
||||
### Screen Ruler
|
||||
|
||||
- Improved the acrylic brush used in the menu. Thanks [@niels9001](https://github.com/niels9001)!
|
||||
|
||||
### Settings
|
||||
|
||||
- Added a feature to backup/restore settings to/from a file. Thanks [@jefflord](https://github.com/jefflord)!
|
||||
- Fixed an issue causing shortcuts shown in OOBE not updating to new values when the window was re-opened.
|
||||
- Fixed the "Documents" folder usage in the backup/restore feature. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
|
||||
|
||||
### Text Extractor
|
||||
|
||||
- Added a warning about how to install languages for OCR recognition.
|
||||
- Fixed the overlay not focusing after the first activation.
|
||||
- Added spaces between CJK and non-CJK words. Thanks [@maggch97](https://github.com/maggch97)!
|
||||
|
||||
### Video Conference Mute
|
||||
- Added a setting to hide the Video Conference Mute overlay when muted. Thanks [@akabhirav](https://github.com/akabhirav)!
|
||||
- Added a warning about deprecating Video Conference Mute in the future (v0.67), please check https://github.com/microsoft/PowerToys/issues/21473 for more information.
|
||||
|
||||
### Installer
|
||||
|
||||
- Added some missing files that were causing Settings and PowerRename to not function correctly on some configurations.
|
||||
- Updated the .NET dependency to 6.0.10.
|
||||
|
||||
### Development
|
||||
|
||||
- Consolidated nuget packages and removed a few unused packages.
|
||||
- Updated the Windows.CppRT to the latest version. Thanks [@AtariDreams](https://github.com/AtariDreams)!
|
||||
- Removed the cxxopts dependency, which was no longer used. Thanks [@AtariDreams](https://github.com/AtariDreams)!
|
||||
- Updated the cziplob dependency to 0.25. Thanks [@AtariDreams](https://github.com/AtariDreams)!
|
||||
- Updated the System.IO.Abstractions dependency. Thanks [@davidegiacometti](https://github.com/davidegiacometti)!
|
||||
- Turned on C++ code analysis and incrementally fixing warnings.
|
||||
- Added the install method to the issue template on GitHub, since some issues seem to be related to specific installation methods.
|
||||
- Automated installer hash creation in the release CI.
|
||||
- Simplified use of `.First()` on ImageResizer. Thanks [@AtariDreams](https://github.com/AtariDreams)!
|
||||
- Improved and clarified the issues templates. Thanks [@Jay-o-Way](https://github.com/Jay-o-Way)!
|
||||
- Fixed a PTRun unit test to be more compatible with .NET 6. Thanks [@AtariDreams](https://github.com/AtariDreams)!
|
||||
|
||||
#### What is being planned for version 0.65
|
||||
|
||||
For [v0.65][github-next-release-work], we'll work on below:
|
||||
|
||||
- Ship .NET self contained and shared between utilities
|
||||
- Stability / bug fixes
|
||||
|
||||
## PowerToys Community
|
||||
|
||||
The PowerToys team is extremely grateful to have the [support of an amazing active community][community-link]. The work you do is incredibly important. PowerToys wouldn’t be nearly what it is today without your help filing bugs, updating documentation, guiding the design, or writing features. We want to say thank you and take time to recognize your work. Month over month, you directly help make PowerToys a better piece of software.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct][conduct-code]. For more information see the [Code of Conduct FAQ][conduct-FAQ] or contact [opencode@microsoft.com][conduct-email] with any additional questions or comments.
|
||||
|
||||
[conduct-code]: https://opensource.microsoft.com/codeofconduct/
|
||||
[conduct-FAQ]: https://opensource.microsoft.com/codeofconduct/faq/
|
||||
[conduct-email]: mailto:opencode@microsoft.com
|
||||
This project has adopted the [Microsoft Open Source Code of Conduct][oss-conduct-code].
|
||||
|
||||
## Privacy Statement
|
||||
|
||||
The application logs basic telemetry. Our Telemetry Data page (Coming Soon) has the trends from the telemetry. Please read the [Microsoft privacy statement](http://go.microsoft.com/fwlink/?LinkId=521839) for more information.
|
||||
The application logs basic telemetry. Our Telemetry Data page (Coming Soon) has the trends from the telemetry. Please read the [Microsoft privacy statement][privacy-link] for more information.
|
||||
|
||||
[oss-CLA]: https://cla.opensource.microsoft.com
|
||||
[oss-conduct-code]: CODE_OF_CONDUCT.md
|
||||
[community-link]: COMMUNITY.md
|
||||
[github-release-link]: https://aka.ms/installPowerToys
|
||||
[microsoft-store-link]: https://aka.ms/getPowertoys
|
||||
[winget-link]: https://github.com/microsoft/winget-cli#installing-the-client
|
||||
[roadmap]: https://github.com/microsoft/PowerToys/wiki/Roadmap
|
||||
[privacy-link]: http://go.microsoft.com/fwlink/?LinkId=521839
|
||||
[vidConfOverview]: https://aka.ms/PowerToysOverview_VideoConference
|
||||
[loc-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=translation_issue.md&title=
|
||||
[usingPowerToys-docs-link]: https://aka.ms/powertoys-docs
|
||||
|
||||
<!-- items that need to be updated release to release -->
|
||||
[github-next-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F38
|
||||
[github-current-release-work]: https://github.com/microsoft/PowerToys/issues?q=is%3Aopen+is%3Aissue+project%3Amicrosoft%2FPowerToys%2F37
|
||||
|
||||
41
SECURITY.md
Normal file
41
SECURITY.md
Normal file
@@ -0,0 +1,41 @@
|
||||
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.2 BLOCK -->
|
||||
|
||||
## Security
|
||||
|
||||
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [many more](https://opensource.microsoft.com/).
|
||||
|
||||
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [definition](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.
|
||||
|
||||
## Reporting Security Issues
|
||||
|
||||
**Please do not report security vulnerabilities through public GitHub issues.**
|
||||
|
||||
Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
|
||||
|
||||
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
|
||||
|
||||
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
|
||||
|
||||
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
|
||||
|
||||
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
|
||||
* Full paths of source file(s) related to the manifestation of the issue
|
||||
* The location of the affected source code (tag/branch/commit or direct URL)
|
||||
* Any special configuration required to reproduce the issue
|
||||
* Step-by-step instructions to reproduce the issue
|
||||
* Proof-of-concept or exploit code (if possible)
|
||||
* Impact of the issue, including how an attacker might exploit the issue
|
||||
|
||||
This information will help us triage your report more quickly.
|
||||
|
||||
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
|
||||
|
||||
## Preferred Languages
|
||||
|
||||
We prefer all communications to be in English.
|
||||
|
||||
## Policy
|
||||
|
||||
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
|
||||
|
||||
<!-- END MICROSOFT SECURITY.MD BLOCK -->
|
||||
24
SUPPORT.md
Normal file
24
SUPPORT.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Support
|
||||
|
||||
|
||||
## How to use Microsoft PowerToys
|
||||
|
||||
For more info on [PowerToys overviews and how to use the utilities][usingPowerToys-docs-link], or any other tools and resources for [Windows development environments](https://learn.microsoft.com/windows/dev-environment/overview), head over to [learn.microsoft.com][usingPowerToys-docs-link]!
|
||||
|
||||
## How to file issues and get help
|
||||
|
||||
This project uses [GitHub Issues][gh-issue] to [track bugs][gh-bug] and [feature requests][gh-feature]. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or
|
||||
feature request as a new Issue.
|
||||
|
||||
For help and questions about using this project, please look at our Wiki for using PowerToys and our [Contributor's Guide][contributor] if you want to work on PowerToys.
|
||||
|
||||
## Microsoft Support Policy
|
||||
|
||||
Support for PowerToys is limited to the resources listed above.
|
||||
|
||||
[gh-issue]: https://github.com/microsoft/PowerToys/issues/new/choose
|
||||
[gh-bug]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=Issue-Bug&template=bug_report.md&title=
|
||||
[gh-feature]: https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=feature_request.md&title=
|
||||
[wiki]: https://github.com/microsoft/PowerToys/wiki
|
||||
[contributor]: https://github.com/microsoft/PowerToys/blob/main/CONTRIBUTING.md
|
||||
[usingPowerToys-docs-link]: https://aka.ms/powertoys-docs
|
||||
6
Solution.props
Normal file
6
Solution.props
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<GeneratedFilesDir>$(IntDir)Generated Files\</GeneratedFilesDir>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 273 KiB |
128
contributing.md
128
contributing.md
@@ -1,128 +0,0 @@
|
||||
# Power Toys Contributor's Guide
|
||||
|
||||
Below is our guidance for how to report issues, propose new features, and submit contributions via Pull Requests (PRs).
|
||||
|
||||
## Before you start, file an issue
|
||||
|
||||
Please follow this simple rule to help us eliminate any unnecessary wasted effort & frustration, and ensure an efficient and effective use of everyone's time - yours, ours, and other community members':
|
||||
|
||||
> 👉 If you have a question, think you've discovered an issue, would like to propose a new feature, etc., then find/file an issue **BEFORE** starting work to fix/implement it.
|
||||
|
||||
### Search existing issues first
|
||||
|
||||
Before filing a new issue, search existing open and closed issues first: It is likely someone else has found the problem you're seeing, and someone may be working on or have already contributed a fix!
|
||||
|
||||
If no existing item describes your issue/feature, great - please file a new issue:
|
||||
|
||||
### File a new Issue
|
||||
|
||||
* Don't know whether you're reporting an issue or requesting a feature? File an issue
|
||||
* Have a question that you don't see answered in docs, videos, etc.? File an issue
|
||||
* Want to know if we're planning on building a particular feature? File an issue
|
||||
* Got a great idea for a new utility or feature? File an issue/request/idea
|
||||
* Don't understand how to do something? File an issue/Community Guidance Request
|
||||
* Found an existing issue that describes yours? Great - upvote and add additional commentary / info / repro-steps / etc.
|
||||
|
||||
### Complete the template
|
||||
|
||||
**Please include as much information as possible in your issue**. The more information you provide, the more likely your issue/ask will be understood and implemented. Helpful information includes:
|
||||
|
||||
* What device you're running (inc. CPU type, memory, disk, etc.)
|
||||
* What build of Windows your device is running
|
||||
|
||||
👉 Tip: Run the following in PowerShell Core
|
||||
|
||||
```powershell
|
||||
C:\> $PSVersionTable.OS
|
||||
Microsoft Windows 10.0.18909
|
||||
```
|
||||
|
||||
... or in Windows PowerShell
|
||||
|
||||
```powershell
|
||||
C:\> $PSVersionTable.BuildVersion
|
||||
|
||||
Major Minor Build Revision
|
||||
----- ----- ----- --------
|
||||
10 0 18912 1001
|
||||
```
|
||||
|
||||
... or Cmd:
|
||||
|
||||
```cmd
|
||||
C:\> ver
|
||||
|
||||
Microsoft Windows [Version 10.0.18900.1001]
|
||||
```
|
||||
|
||||
* What tools and apps you're using (e.g. VS 2019, VSCode, etc.)
|
||||
* Don't assume we're experts in setting up YOUR environment and don't assume we are experts in YOUR workflow. Teach us to help you!
|
||||
* **We LOVE detailed repro steps!** What steps do we need to take to reproduce the issue? Assume we love to read repro steps. As much detail as you can stand is probably _barely_ enough detail for us!
|
||||
* Prefer error message text where possible or screenshots of errors if text cannot be captured
|
||||
* **If you intend to implement the fix/feature yourself then say so!** If you do not indicate otherwise we will assume that the issue is our to solve, or may label the issue as `Help-Wanted`.
|
||||
|
||||
### DO NOT post "+1" comments
|
||||
|
||||
> ⚠ DO NOT post "+1", "me too", or similar comments - they just add noise to an issue.
|
||||
|
||||
If you don't have any additional info/context to add but would like to indicate that you're affected by the issue, upvote the original issue by clicking its [+😊] button and hitting 👍 (+1) icon. This way we can actually measure how impactful an issue is.
|
||||
|
||||
---
|
||||
|
||||
## Contributing fixes / features
|
||||
|
||||
For those able & willing to help fix issues and/or implement features ...
|
||||
|
||||
### To Spec or not to Spec
|
||||
|
||||
Some issues/features may be quick and simple to describe and understand. For such scenarios, once a team member has agreed with your approach, skip ahead to the section headed "Fork, Branch, and Create your PR", below.
|
||||
|
||||
Small issues that do not require a spec will be labelled Issue-Bug or Issue-Task.
|
||||
|
||||
However, some issues/features will require careful thought & formal design before implementation. For these scenarios, we'll request that a spec is written and the associated issue will be labeled Issue-Feature.
|
||||
|
||||
Specs help collaborators discuss different approaches to solve a problem, describe how the feature will behave, how the feature will impact the user, what happens if something goes wrong, etc. Driving towards agreement in a spec, before any code is written, often results in simpler code, and less wasted effort in the long run.
|
||||
|
||||
Specs will be managed in a very similar manner as code contributions so please follow the "Fork, Branch and Create your PR" below.
|
||||
|
||||
### Writing / Contributing-to a Spec
|
||||
|
||||
To write/contribute to a spec: fork, branch and commit via PRs, as you would with any code changes.
|
||||
|
||||
Specs are written in markdown, stored under the `doc/specs` folder and named `[issue id] - [spec description].md`.
|
||||
|
||||
👉 **It is important to follow the spec templates and complete the requested information**. The available spec templates will help ensure that specs contain the minimum information & decisions necessary to permit development to begin. In particular, specs require you to confirm that you've already discussed the issue/idea with the team in an issue and that you provide the issue ID for reference.
|
||||
|
||||
Team members will be happy to help review specs and guide them to completion.
|
||||
|
||||
### Help Wanted
|
||||
|
||||
Once the team have approved an issue/spec, development can proceed. If no developers are immediately available, the spec can be parked ready for a developer to get started. Parked specs' issues will be labeled "Help Wanted". To find a list of development opportunities waiting for developer involvement, visit the Issues and filter on [the Help-Wanted label](https://github.com/microsoft/PowerToys/labels/Help-Wanted).
|
||||
|
||||
---
|
||||
|
||||
## Development
|
||||
|
||||
### Fork, Clone, Branch and Create your PR
|
||||
|
||||
Once you've discussed your proposed feature/fix/etc. with a team member, and you've agreed an approach or a spec has been written and approved, it's time to start development:
|
||||
|
||||
1. Fork the repo if you haven't already
|
||||
1. Clone your fork locally
|
||||
1. Create & push a feature branch
|
||||
1. Create a [Draft Pull Request (PR)](https://github.blog/2019-02-14-introducing-draft-pull-requests/)
|
||||
1. Work on your changes
|
||||
|
||||
### Code Review
|
||||
|
||||
When you'd like the team to take a look, (even if the work is not yet fully-complete), mark the PR as 'Ready For Review' so that the team can review your work and provide comments, suggestions, and request changes. It may take several cycles, but the end result will be solid, testable, conformant code that is safe for us to merge.
|
||||
|
||||
### Merge
|
||||
|
||||
Once your code has been reviewed and approved by the requisite number of team members, it will be merged into the master branch. Once merged, your PR will be automatically closed.
|
||||
|
||||
---
|
||||
|
||||
## Thank you
|
||||
|
||||
Thank you in advance for your contribution!
|
||||
12
deps/cpprestsdk/README.md
vendored
12
deps/cpprestsdk/README.md
vendored
@@ -1,12 +0,0 @@
|
||||
# C++ Rest SDK - JSON library
|
||||
|
||||
This JSON library is taken from the C++ REST SDK in https://github.com/microsoft/cpprestsdk
|
||||
|
||||
Based in the [v2.10.13 release](https://github.com/microsoft/cpprestsdk/tree/v2.10.13/Release), it consists of the needed files to build and use the JSON classes described in `include/cpprest/json.h`.
|
||||
|
||||
Changes made to the files in order to build in the PowerToys project:
|
||||
- Removal of `#include` references to files that are not needed.
|
||||
- `#include "pch.h"` instead of `#include "stdafx.h"` to use the PowerToys pre-compiled header.
|
||||
- `#define _NO_ASYNCRTIMP` in [`include/cpprest/details/cpprest_compat.h`](./include/cpprest/details/cpprest_compat.h) since this class will be statically linked.
|
||||
|
||||
The contents of the C++ Rest SDK license are included in [license.txt](./license.txt).
|
||||
121
deps/cpprestsdk/cpprestsdk.vcxproj
vendored
121
deps/cpprestsdk/cpprestsdk.vcxproj
vendored
@@ -1,121 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>15.0</VCProjectVersion>
|
||||
<ProjectGuid>{4E577735-DFAB-41AF-8A6E-B6E8872A2928}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>common</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>cpprestsdk</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\cpprest\asyncrt_utils.h" />
|
||||
<ClInclude Include="include\cpprest\base_uri.h" />
|
||||
<ClInclude Include="include\cpprest\details\basic_types.h" />
|
||||
<ClInclude Include="include\cpprest\details\cpprest_compat.h" />
|
||||
<ClInclude Include="include\cpprest\details\SafeInt3.hpp" />
|
||||
<ClInclude Include="include\cpprest\details\web_utilities.h" />
|
||||
<ClInclude Include="include\cpprest\json.h" />
|
||||
<ClInclude Include="include\cpprest\uri.h" />
|
||||
<ClInclude Include="include\cpprest\uri_builder.h" />
|
||||
<ClInclude Include="include\cpprest\version.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="src\json\json.cpp" />
|
||||
<ClCompile Include="src\json\json_parsing.cpp" />
|
||||
<ClCompile Include="src\json\json_serialization.cpp" />
|
||||
<ClCompile Include="src\utilities\asyncrt_utils.cpp" />
|
||||
<ClCompile Include="src\utilities\base64.cpp" />
|
||||
<ClCompile Include="src\utilities\web_utilities.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
697
deps/cpprestsdk/include/cpprest/asyncrt_utils.h
vendored
697
deps/cpprestsdk/include/cpprest/asyncrt_utils.h
vendored
@@ -1,697 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Various common utilities.
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cpprest/details/basic_types.h"
|
||||
//#include "pplx/pplxtasks.h"
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <limits.h>
|
||||
#include <locale.h>
|
||||
#include <random>
|
||||
#include <string>
|
||||
#include <system_error>
|
||||
#include <vector>
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <sys/time.h>
|
||||
#if !defined(ANDROID) && !defined(__ANDROID__) && defined(HAVE_XLOCALE_H) // CodePlex 269
|
||||
/* Systems using glibc: xlocale.h has been removed from glibc 2.26
|
||||
The above include of locale.h is sufficient
|
||||
Further details: https://sourceware.org/git/?p=glibc.git;a=commit;h=f0be25b6336db7492e47d2e8e72eb8af53b5506d */
|
||||
#include <xlocale.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/// Various utilities for string conversions and date and time manipulation.
|
||||
namespace utility
|
||||
{
|
||||
// Left over from VS2010 support, remains to avoid breaking.
|
||||
typedef std::chrono::seconds seconds;
|
||||
|
||||
/// Functions for converting to/from std::chrono::seconds to xml string.
|
||||
namespace timespan
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts a timespan/interval in seconds to xml duration string as specified by
|
||||
/// http://www.w3.org/TR/xmlschema-2/#duration
|
||||
/// </summary>
|
||||
_ASYNCRTIMP utility::string_t __cdecl seconds_to_xml_duration(utility::seconds numSecs);
|
||||
|
||||
/// <summary>
|
||||
/// Converts an xml duration to timespan/interval in seconds
|
||||
/// http://www.w3.org/TR/xmlschema-2/#duration
|
||||
/// </summary>
|
||||
_ASYNCRTIMP utility::seconds __cdecl xml_duration_to_seconds(const utility::string_t& timespanString);
|
||||
} // namespace timespan
|
||||
|
||||
/// Functions for Unicode string conversions.
|
||||
namespace conversions
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts a UTF-16 string to a UTF-8 string.
|
||||
/// </summary>
|
||||
/// <param name="w">A two byte character UTF-16 string.</param>
|
||||
/// <returns>A single byte character UTF-8 string.</returns>
|
||||
_ASYNCRTIMP std::string __cdecl utf16_to_utf8(const utf16string& w);
|
||||
|
||||
/// <summary>
|
||||
/// Converts a UTF-8 string to a UTF-16
|
||||
/// </summary>
|
||||
/// <param name="s">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A two byte character UTF-16 string.</returns>
|
||||
_ASYNCRTIMP utf16string __cdecl utf8_to_utf16(const std::string& s);
|
||||
|
||||
/// <summary>
|
||||
/// Converts a ASCII (us-ascii) string to a UTF-16 string.
|
||||
/// </summary>
|
||||
/// <param name="s">A single byte character us-ascii string.</param>
|
||||
/// <returns>A two byte character UTF-16 string.</returns>
|
||||
_ASYNCRTIMP utf16string __cdecl usascii_to_utf16(const std::string& s);
|
||||
|
||||
/// <summary>
|
||||
/// Converts a Latin1 (iso-8859-1) string to a UTF-16 string.
|
||||
/// </summary>
|
||||
/// <param name="s">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A two byte character UTF-16 string.</returns>
|
||||
_ASYNCRTIMP utf16string __cdecl latin1_to_utf16(const std::string& s);
|
||||
|
||||
/// <summary>
|
||||
/// Converts a Latin1 (iso-8859-1) string to a UTF-8 string.
|
||||
/// </summary>
|
||||
/// <param name="s">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A single byte character UTF-8 string.</returns>
|
||||
_ASYNCRTIMP utf8string __cdecl latin1_to_utf8(const std::string& s);
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a platform dependent Unicode string type.
|
||||
/// </summary>
|
||||
/// <param name="s">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A platform dependent string type.</returns>
|
||||
#ifdef _UTF16_STRINGS
|
||||
_ASYNCRTIMP utility::string_t __cdecl to_string_t(std::string&& s);
|
||||
#else
|
||||
inline utility::string_t&& to_string_t(std::string&& s) { return std::move(s); }
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a platform dependent Unicode string type.
|
||||
/// </summary>
|
||||
/// <param name="s">A two byte character UTF-16 string.</param>
|
||||
/// <returns>A platform dependent string type.</returns>
|
||||
#ifdef _UTF16_STRINGS
|
||||
inline utility::string_t&& to_string_t(utf16string&& s) { return std::move(s); }
|
||||
#else
|
||||
_ASYNCRTIMP utility::string_t __cdecl to_string_t(utf16string&& s);
|
||||
#endif
|
||||
/// <summary>
|
||||
/// Converts to a platform dependent Unicode string type.
|
||||
/// </summary>
|
||||
/// <param name="s">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A platform dependent string type.</returns>
|
||||
#ifdef _UTF16_STRINGS
|
||||
_ASYNCRTIMP utility::string_t __cdecl to_string_t(const std::string& s);
|
||||
#else
|
||||
inline const utility::string_t& to_string_t(const std::string& s) { return s; }
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a platform dependent Unicode string type.
|
||||
/// </summary>
|
||||
/// <param name="s">A two byte character UTF-16 string.</param>
|
||||
/// <returns>A platform dependent string type.</returns>
|
||||
#ifdef _UTF16_STRINGS
|
||||
inline const utility::string_t& to_string_t(const utf16string& s) { return s; }
|
||||
#else
|
||||
_ASYNCRTIMP utility::string_t __cdecl to_string_t(const utf16string& s);
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a UTF-16 from string.
|
||||
/// </summary>
|
||||
/// <param name="value">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A two byte character UTF-16 string.</returns>
|
||||
_ASYNCRTIMP utf16string __cdecl to_utf16string(const std::string& value);
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a UTF-16 from string.
|
||||
/// </summary>
|
||||
/// <param name="value">A two byte character UTF-16 string.</param>
|
||||
/// <returns>A two byte character UTF-16 string.</returns>
|
||||
inline const utf16string& to_utf16string(const utf16string& value) { return value; }
|
||||
/// <summary>
|
||||
/// Converts to a UTF-16 from string.
|
||||
/// </summary>
|
||||
/// <param name="value">A two byte character UTF-16 string.</param>
|
||||
/// <returns>A two byte character UTF-16 string.</returns>
|
||||
inline utf16string&& to_utf16string(utf16string&& value) { return std::move(value); }
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a UTF-8 string.
|
||||
/// </summary>
|
||||
/// <param name="value">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A single byte character UTF-8 string.</returns>
|
||||
inline std::string&& to_utf8string(std::string&& value) { return std::move(value); }
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a UTF-8 string.
|
||||
/// </summary>
|
||||
/// <param name="value">A single byte character UTF-8 string.</param>
|
||||
/// <returns>A single byte character UTF-8 string.</returns>
|
||||
inline const std::string& to_utf8string(const std::string& value) { return value; }
|
||||
|
||||
/// <summary>
|
||||
/// Converts to a UTF-8 string.
|
||||
/// </summary>
|
||||
/// <param name="value">A two byte character UTF-16 string.</param>
|
||||
/// <returns>A single byte character UTF-8 string.</returns>
|
||||
_ASYNCRTIMP std::string __cdecl to_utf8string(const utf16string& value);
|
||||
|
||||
/// <summary>
|
||||
/// Encode the given byte array into a base64 string
|
||||
/// </summary>
|
||||
_ASYNCRTIMP utility::string_t __cdecl to_base64(const std::vector<unsigned char>& data);
|
||||
|
||||
/// <summary>
|
||||
/// Encode the given 8-byte integer into a base64 string
|
||||
/// </summary>
|
||||
_ASYNCRTIMP utility::string_t __cdecl to_base64(uint64_t data);
|
||||
|
||||
/// <summary>
|
||||
/// Decode the given base64 string to a byte array
|
||||
/// </summary>
|
||||
_ASYNCRTIMP std::vector<unsigned char> __cdecl from_base64(const utility::string_t& str);
|
||||
|
||||
template<typename Source>
|
||||
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
|
||||
"locale support is required.")
|
||||
utility::string_t print_string(const Source& val, const std::locale& loc = std::locale())
|
||||
{
|
||||
utility::ostringstream_t oss;
|
||||
oss.imbue(loc);
|
||||
oss << val;
|
||||
if (oss.bad())
|
||||
{
|
||||
throw std::bad_cast();
|
||||
}
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
|
||||
"locale support is required.")
|
||||
inline utility::string_t print_string(const utility::string_t& val) { return val; }
|
||||
|
||||
namespace details
|
||||
{
|
||||
#if defined(__ANDROID__)
|
||||
template<class T>
|
||||
inline std::string to_string(const T t)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os.imbue(std::locale::classic());
|
||||
os << t;
|
||||
return os.str();
|
||||
}
|
||||
#endif
|
||||
|
||||
template<class T>
|
||||
inline utility::string_t to_string_t(const T t)
|
||||
{
|
||||
#ifdef _UTF16_STRINGS
|
||||
using std::to_wstring;
|
||||
return to_wstring(t);
|
||||
#else
|
||||
#if !defined(__ANDROID__)
|
||||
using std::to_string;
|
||||
#endif
|
||||
return to_string(t);
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename Source>
|
||||
utility::string_t print_string(const Source& val)
|
||||
{
|
||||
utility::ostringstream_t oss;
|
||||
oss.imbue(std::locale::classic());
|
||||
oss << val;
|
||||
if (oss.bad())
|
||||
{
|
||||
throw std::bad_cast();
|
||||
}
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
inline const utility::string_t& print_string(const utility::string_t& val) { return val; }
|
||||
|
||||
template<typename Source>
|
||||
utf8string print_utf8string(const Source& val)
|
||||
{
|
||||
return conversions::to_utf8string(print_string(val));
|
||||
}
|
||||
inline const utf8string& print_utf8string(const utf8string& val) { return val; }
|
||||
|
||||
template<typename Target>
|
||||
Target scan_string(const utility::string_t& str)
|
||||
{
|
||||
Target t;
|
||||
utility::istringstream_t iss(str);
|
||||
iss.imbue(std::locale::classic());
|
||||
iss >> t;
|
||||
if (iss.bad())
|
||||
{
|
||||
throw std::bad_cast();
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
inline const utility::string_t& scan_string(const utility::string_t& str) { return str; }
|
||||
} // namespace details
|
||||
|
||||
template<typename Target>
|
||||
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
|
||||
"locale support is required.")
|
||||
Target scan_string(const utility::string_t& str, const std::locale& loc = std::locale())
|
||||
{
|
||||
Target t;
|
||||
utility::istringstream_t iss(str);
|
||||
iss.imbue(loc);
|
||||
iss >> t;
|
||||
if (iss.bad())
|
||||
{
|
||||
throw std::bad_cast();
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
CASABLANCA_DEPRECATED("All locale-sensitive APIs will be removed in a future update. Use stringstreams directly if "
|
||||
"locale support is required.")
|
||||
inline utility::string_t scan_string(const utility::string_t& str) { return str; }
|
||||
} // namespace conversions
|
||||
|
||||
namespace details
|
||||
{
|
||||
/// <summary>
|
||||
/// Cross platform RAII container for setting thread local locale.
|
||||
/// </summary>
|
||||
class scoped_c_thread_locale
|
||||
{
|
||||
public:
|
||||
_ASYNCRTIMP scoped_c_thread_locale();
|
||||
_ASYNCRTIMP ~scoped_c_thread_locale();
|
||||
|
||||
#if !defined(ANDROID) && !defined(__ANDROID__) // CodePlex 269
|
||||
#ifdef _WIN32
|
||||
typedef _locale_t xplat_locale;
|
||||
#else
|
||||
typedef locale_t xplat_locale;
|
||||
#endif
|
||||
|
||||
static _ASYNCRTIMP xplat_locale __cdecl c_locale();
|
||||
#endif
|
||||
private:
|
||||
#ifdef _WIN32
|
||||
std::string m_prevLocale;
|
||||
int m_prevThreadSetting;
|
||||
#elif !(defined(ANDROID) || defined(__ANDROID__))
|
||||
locale_t m_prevLocale;
|
||||
#endif
|
||||
scoped_c_thread_locale(const scoped_c_thread_locale&);
|
||||
scoped_c_thread_locale& operator=(const scoped_c_thread_locale&);
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Our own implementation of alpha numeric instead of std::isalnum to avoid
|
||||
/// taking global lock for performance reasons.
|
||||
/// </summary>
|
||||
inline bool __cdecl is_alnum(const unsigned char uch) CPPREST_NOEXCEPT
|
||||
{ // test if uch is an alnum character
|
||||
// special casing char to avoid branches
|
||||
// clang-format off
|
||||
static CPPREST_CONSTEXPR bool is_alnum_table[UCHAR_MAX + 1] = {
|
||||
/* X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */
|
||||
/* 0X */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 1X */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 2X */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 3X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 0-9 */
|
||||
/* 4X */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* A-Z */
|
||||
/* 5X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
|
||||
/* 6X */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* a-z */
|
||||
/* 7X */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0
|
||||
/* non-ASCII values initialized to 0 */
|
||||
};
|
||||
// clang-format on
|
||||
return (is_alnum_table[uch]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Our own implementation of alpha numeric instead of std::isalnum to avoid
|
||||
/// taking global lock for performance reasons.
|
||||
/// </summary>
|
||||
inline bool __cdecl is_alnum(const char ch) CPPREST_NOEXCEPT { return (is_alnum(static_cast<unsigned char>(ch))); }
|
||||
|
||||
/// <summary>
|
||||
/// Our own implementation of alpha numeric instead of std::isalnum to avoid
|
||||
/// taking global lock for performance reasons.
|
||||
/// </summary>
|
||||
template<class Elem>
|
||||
inline bool __cdecl is_alnum(Elem ch) CPPREST_NOEXCEPT
|
||||
{
|
||||
// assumes 'x' == L'x' for the ASCII range
|
||||
typedef typename std::make_unsigned<Elem>::type UElem;
|
||||
const auto uch = static_cast<UElem>(ch);
|
||||
return (uch <= static_cast<UElem>('z') && is_alnum(static_cast<unsigned char>(uch)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Simplistic implementation of make_unique. A better implementation would be based on variadic templates
|
||||
/// and therefore not be compatible with Dev10.
|
||||
/// </summary>
|
||||
template<typename _Type>
|
||||
std::unique_ptr<_Type> make_unique()
|
||||
{
|
||||
return std::unique_ptr<_Type>(new _Type());
|
||||
}
|
||||
|
||||
template<typename _Type, typename _Arg1>
|
||||
std::unique_ptr<_Type> make_unique(_Arg1&& arg1)
|
||||
{
|
||||
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1)));
|
||||
}
|
||||
|
||||
template<typename _Type, typename _Arg1, typename _Arg2>
|
||||
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2)
|
||||
{
|
||||
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2)));
|
||||
}
|
||||
|
||||
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3>
|
||||
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3)
|
||||
{
|
||||
return std::unique_ptr<_Type>(
|
||||
new _Type(std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2), std::forward<_Arg3>(arg3)));
|
||||
}
|
||||
|
||||
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3, typename _Arg4>
|
||||
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4)
|
||||
{
|
||||
return std::unique_ptr<_Type>(new _Type(
|
||||
std::forward<_Arg1>(arg1), std::forward<_Arg2>(arg2), std::forward<_Arg3>(arg3), std::forward<_Arg4>(arg4)));
|
||||
}
|
||||
|
||||
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3, typename _Arg4, typename _Arg5>
|
||||
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4, _Arg5&& arg5)
|
||||
{
|
||||
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1),
|
||||
std::forward<_Arg2>(arg2),
|
||||
std::forward<_Arg3>(arg3),
|
||||
std::forward<_Arg4>(arg4),
|
||||
std::forward<_Arg5>(arg5)));
|
||||
}
|
||||
|
||||
template<typename _Type, typename _Arg1, typename _Arg2, typename _Arg3, typename _Arg4, typename _Arg5, typename _Arg6>
|
||||
std::unique_ptr<_Type> make_unique(_Arg1&& arg1, _Arg2&& arg2, _Arg3&& arg3, _Arg4&& arg4, _Arg5&& arg5, _Arg6&& arg6)
|
||||
{
|
||||
return std::unique_ptr<_Type>(new _Type(std::forward<_Arg1>(arg1),
|
||||
std::forward<_Arg2>(arg2),
|
||||
std::forward<_Arg3>(arg3),
|
||||
std::forward<_Arg4>(arg4),
|
||||
std::forward<_Arg5>(arg5),
|
||||
std::forward<_Arg6>(arg6)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cross platform utility function for performing case insensitive string equality comparison.
|
||||
/// </summary>
|
||||
/// <param name="left">First string to compare.</param>
|
||||
/// <param name="right">Second strong to compare.</param>
|
||||
/// <returns>true if the strings are equivalent, false otherwise</returns>
|
||||
_ASYNCRTIMP bool __cdecl str_iequal(const std::string& left, const std::string& right) CPPREST_NOEXCEPT;
|
||||
|
||||
/// <summary>
|
||||
/// Cross platform utility function for performing case insensitive string equality comparison.
|
||||
/// </summary>
|
||||
/// <param name="left">First string to compare.</param>
|
||||
/// <param name="right">Second strong to compare.</param>
|
||||
/// <returns>true if the strings are equivalent, false otherwise</returns>
|
||||
_ASYNCRTIMP bool __cdecl str_iequal(const std::wstring& left, const std::wstring& right) CPPREST_NOEXCEPT;
|
||||
|
||||
/// <summary>
|
||||
/// Cross platform utility function for performing case insensitive string less-than comparison.
|
||||
/// </summary>
|
||||
/// <param name="left">First string to compare.</param>
|
||||
/// <param name="right">Second strong to compare.</param>
|
||||
/// <returns>true if a lowercase view of left is lexicographically less than a lowercase view of right; otherwise,
|
||||
/// false.</returns>
|
||||
_ASYNCRTIMP bool __cdecl str_iless(const std::string& left, const std::string& right) CPPREST_NOEXCEPT;
|
||||
|
||||
/// <summary>
|
||||
/// Cross platform utility function for performing case insensitive string less-than comparison.
|
||||
/// </summary>
|
||||
/// <param name="left">First string to compare.</param>
|
||||
/// <param name="right">Second strong to compare.</param>
|
||||
/// <returns>true if a lowercase view of left is lexicographically less than a lowercase view of right; otherwise,
|
||||
/// false.</returns>
|
||||
_ASYNCRTIMP bool __cdecl str_iless(const std::wstring& left, const std::wstring& right) CPPREST_NOEXCEPT;
|
||||
|
||||
/// <summary>
|
||||
/// Convert a string to lowercase in place.
|
||||
/// </summary>
|
||||
/// <param name="target">The string to convert to lowercase.</param>
|
||||
_ASYNCRTIMP void __cdecl inplace_tolower(std::string& target) CPPREST_NOEXCEPT;
|
||||
|
||||
/// <summary>
|
||||
/// Convert a string to lowercase in place.
|
||||
/// </summary>
|
||||
/// <param name="target">The string to convert to lowercase.</param>
|
||||
_ASYNCRTIMP void __cdecl inplace_tolower(std::wstring& target) CPPREST_NOEXCEPT;
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
/// <summary>
|
||||
/// Category error type for Windows OS errors.
|
||||
/// </summary>
|
||||
class windows_category_impl : public std::error_category
|
||||
{
|
||||
public:
|
||||
virtual const char* name() const CPPREST_NOEXCEPT { return "windows"; }
|
||||
|
||||
virtual std::string message(int errorCode) const CPPREST_NOEXCEPT;
|
||||
|
||||
virtual std::error_condition default_error_condition(int errorCode) const CPPREST_NOEXCEPT;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Gets the one global instance of the windows error category.
|
||||
/// </summary>
|
||||
/// </returns>An error category instance.</returns>
|
||||
_ASYNCRTIMP const std::error_category& __cdecl windows_category();
|
||||
|
||||
#else
|
||||
|
||||
/// <summary>
|
||||
/// Gets the one global instance of the linux error category.
|
||||
/// </summary>
|
||||
/// </returns>An error category instance.</returns>
|
||||
_ASYNCRTIMP const std::error_category& __cdecl linux_category();
|
||||
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Gets the one global instance of the current platform's error category.
|
||||
/// </summary>
|
||||
_ASYNCRTIMP const std::error_category& __cdecl platform_category();
|
||||
|
||||
/// <summary>
|
||||
/// Creates an instance of std::system_error from a OS error code.
|
||||
/// </summary>
|
||||
inline std::system_error __cdecl create_system_error(unsigned long errorCode)
|
||||
{
|
||||
std::error_code code((int)errorCode, platform_category());
|
||||
return std::system_error(code, code.message());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a std::error_code from a OS error code.
|
||||
/// </summary>
|
||||
inline std::error_code __cdecl create_error_code(unsigned long errorCode)
|
||||
{
|
||||
return std::error_code((int)errorCode, platform_category());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates the corresponding error message from a OS error code.
|
||||
/// </summary>
|
||||
inline utility::string_t __cdecl create_error_message(unsigned long errorCode)
|
||||
{
|
||||
return utility::conversions::to_string_t(create_error_code(errorCode).message());
|
||||
}
|
||||
|
||||
} // namespace details
|
||||
|
||||
class datetime
|
||||
{
|
||||
public:
|
||||
typedef uint64_t interval_type;
|
||||
|
||||
/// <summary>
|
||||
/// Defines the supported date and time string formats.
|
||||
/// </summary>
|
||||
enum date_format
|
||||
{
|
||||
RFC_1123,
|
||||
ISO_8601
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Returns the current UTC time.
|
||||
/// </summary>
|
||||
static _ASYNCRTIMP datetime __cdecl utc_now();
|
||||
|
||||
/// <summary>
|
||||
/// An invalid UTC timestamp value.
|
||||
/// </summary>
|
||||
enum : interval_type
|
||||
{
|
||||
utc_timestamp_invalid = static_cast<interval_type>(-1)
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Returns seconds since Unix/POSIX time epoch at 01-01-1970 00:00:00.
|
||||
/// If time is before epoch, utc_timestamp_invalid is returned.
|
||||
/// </summary>
|
||||
static interval_type utc_timestamp()
|
||||
{
|
||||
const auto seconds = utc_now().to_interval() / _secondTicks;
|
||||
if (seconds >= 11644473600LL)
|
||||
{
|
||||
return seconds - 11644473600LL;
|
||||
}
|
||||
else
|
||||
{
|
||||
return utc_timestamp_invalid;
|
||||
}
|
||||
}
|
||||
|
||||
datetime() : m_interval(0) {}
|
||||
|
||||
/// <summary>
|
||||
/// Creates <c>datetime</c> from a string representing time in UTC in RFC 1123 format.
|
||||
/// </summary>
|
||||
/// <returns>Returns a <c>datetime</c> of zero if not successful.</returns>
|
||||
static _ASYNCRTIMP datetime __cdecl from_string(const utility::string_t& timestring, date_format format = RFC_1123);
|
||||
|
||||
/// <summary>
|
||||
/// Returns a string representation of the <c>datetime</c>.
|
||||
/// </summary>
|
||||
_ASYNCRTIMP utility::string_t to_string(date_format format = RFC_1123) const;
|
||||
|
||||
/// <summary>
|
||||
/// Returns the integral time value.
|
||||
/// </summary>
|
||||
interval_type to_interval() const { return m_interval; }
|
||||
|
||||
datetime operator-(interval_type value) const { return datetime(m_interval - value); }
|
||||
|
||||
datetime operator+(interval_type value) const { return datetime(m_interval + value); }
|
||||
|
||||
bool operator==(datetime dt) const { return m_interval == dt.m_interval; }
|
||||
|
||||
bool operator!=(const datetime& dt) const { return !(*this == dt); }
|
||||
|
||||
static interval_type from_milliseconds(unsigned int milliseconds) { return milliseconds * _msTicks; }
|
||||
|
||||
static interval_type from_seconds(unsigned int seconds) { return seconds * _secondTicks; }
|
||||
|
||||
static interval_type from_minutes(unsigned int minutes) { return minutes * _minuteTicks; }
|
||||
|
||||
static interval_type from_hours(unsigned int hours) { return hours * _hourTicks; }
|
||||
|
||||
static interval_type from_days(unsigned int days) { return days * _dayTicks; }
|
||||
|
||||
bool is_initialized() const { return m_interval != 0; }
|
||||
|
||||
private:
|
||||
friend int operator-(datetime t1, datetime t2);
|
||||
|
||||
static const interval_type _msTicks = static_cast<interval_type>(10000);
|
||||
static const interval_type _secondTicks = 1000 * _msTicks;
|
||||
static const interval_type _minuteTicks = 60 * _secondTicks;
|
||||
static const interval_type _hourTicks = 60 * 60 * _secondTicks;
|
||||
static const interval_type _dayTicks = 24 * 60 * 60 * _secondTicks;
|
||||
|
||||
// Private constructor. Use static methods to create an instance.
|
||||
datetime(interval_type interval) : m_interval(interval) {}
|
||||
|
||||
// Storing as hundreds of nanoseconds 10e-7, i.e. 1 here equals 100ns.
|
||||
interval_type m_interval;
|
||||
};
|
||||
|
||||
inline int operator-(datetime t1, datetime t2)
|
||||
{
|
||||
auto diff = (t1.m_interval - t2.m_interval);
|
||||
|
||||
// Round it down to seconds
|
||||
diff /= 10 * 1000 * 1000;
|
||||
|
||||
return static_cast<int>(diff);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Nonce string generator class.
|
||||
/// </summary>
|
||||
class nonce_generator
|
||||
{
|
||||
public:
|
||||
/// <summary>
|
||||
/// Define default nonce length.
|
||||
/// </summary>
|
||||
enum
|
||||
{
|
||||
default_length = 32
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Nonce generator constructor.
|
||||
/// </summary>
|
||||
/// <param name="length">Length of the generated nonce string.</param>
|
||||
nonce_generator(int length = default_length)
|
||||
: m_random(static_cast<unsigned int>(utility::datetime::utc_timestamp())), m_length(length)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate a nonce string containing random alphanumeric characters (A-Za-z0-9).
|
||||
/// Length of the generated string is set by length().
|
||||
/// </summary>
|
||||
/// <returns>The generated nonce string.</returns>
|
||||
_ASYNCRTIMP utility::string_t generate();
|
||||
|
||||
/// <summary>
|
||||
/// Get length of generated nonce string.
|
||||
/// </summary>
|
||||
/// <returns>Nonce string length.</returns>
|
||||
int length() const { return m_length; }
|
||||
|
||||
/// <summary>
|
||||
/// Set length of the generated nonce string.
|
||||
/// </summary>
|
||||
/// <param name="length">Lenght of nonce string.</param>
|
||||
void set_length(int length) { m_length = length; }
|
||||
|
||||
private:
|
||||
std::mt19937 m_random;
|
||||
int m_length;
|
||||
};
|
||||
|
||||
} // namespace utility
|
||||
391
deps/cpprestsdk/include/cpprest/base_uri.h
vendored
391
deps/cpprestsdk/include/cpprest/base_uri.h
vendored
@@ -1,391 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Protocol independent support for URIs.
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cpprest/asyncrt_utils.h"
|
||||
#include "cpprest/details/basic_types.h"
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
namespace web
|
||||
{
|
||||
namespace details
|
||||
{
|
||||
struct uri_components
|
||||
{
|
||||
uri_components() : m_path(_XPLATSTR("/")), m_port(-1) {}
|
||||
|
||||
uri_components(const uri_components&) = default;
|
||||
uri_components& operator=(const uri_components&) = default;
|
||||
|
||||
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
|
||||
uri_components(uri_components&& other) CPPREST_NOEXCEPT : m_scheme(std::move(other.m_scheme)),
|
||||
m_host(std::move(other.m_host)),
|
||||
m_user_info(std::move(other.m_user_info)),
|
||||
m_path(std::move(other.m_path)),
|
||||
m_query(std::move(other.m_query)),
|
||||
m_fragment(std::move(other.m_fragment)),
|
||||
m_port(other.m_port)
|
||||
{
|
||||
}
|
||||
|
||||
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
|
||||
uri_components& operator=(uri_components&& other) CPPREST_NOEXCEPT
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
m_scheme = std::move(other.m_scheme);
|
||||
m_host = std::move(other.m_host);
|
||||
m_user_info = std::move(other.m_user_info);
|
||||
m_path = std::move(other.m_path);
|
||||
m_query = std::move(other.m_query);
|
||||
m_fragment = std::move(other.m_fragment);
|
||||
m_port = other.m_port;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
_ASYNCRTIMP utility::string_t join();
|
||||
|
||||
utility::string_t m_scheme;
|
||||
utility::string_t m_host;
|
||||
utility::string_t m_user_info;
|
||||
utility::string_t m_path;
|
||||
utility::string_t m_query;
|
||||
utility::string_t m_fragment;
|
||||
int m_port;
|
||||
};
|
||||
} // namespace details
|
||||
|
||||
/// <summary>
|
||||
/// A single exception type to represent errors in parsing, encoding, and decoding URIs.
|
||||
/// </summary>
|
||||
class uri_exception : public std::exception
|
||||
{
|
||||
public:
|
||||
uri_exception(std::string msg) : m_msg(std::move(msg)) {}
|
||||
|
||||
~uri_exception() CPPREST_NOEXCEPT {}
|
||||
|
||||
const char* what() const CPPREST_NOEXCEPT { return m_msg.c_str(); }
|
||||
|
||||
private:
|
||||
std::string m_msg;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// A flexible, protocol independent URI implementation.
|
||||
///
|
||||
/// URI instances are immutable. Querying the various fields on an empty URI will return empty strings. Querying
|
||||
/// various diagnostic members on an empty URI will return false.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This implementation accepts both URIs ('http://msn.com/path') and URI relative-references
|
||||
/// ('/path?query#frag').
|
||||
///
|
||||
/// This implementation does not provide any scheme-specific handling -- an example of this
|
||||
/// would be the following: 'http://path1/path'. This is a valid URI, but it's not a valid
|
||||
/// http-uri -- that is, it's syntactically correct but does not conform to the requirements
|
||||
/// of the http scheme (http requires a host).
|
||||
/// We could provide this by allowing a pluggable 'scheme' policy-class, which would provide
|
||||
/// extra capability for validating and canonicalizing a URI according to scheme, and would
|
||||
/// introduce a layer of type-safety for URIs of differing schemes, and thus differing semantics.
|
||||
///
|
||||
/// One issue with implementing a scheme-independent URI facility is that of comparing for equality.
|
||||
/// For instance, these URIs are considered equal 'http://msn.com', 'http://msn.com:80'. That is --
|
||||
/// the 'default' port can be either omitted or explicit. Since we don't have a way to map a scheme
|
||||
/// to it's default port, we don't have a way to know these are equal. This is just one of a class of
|
||||
/// issues with regard to scheme-specific behavior.
|
||||
/// </remarks>
|
||||
class uri
|
||||
{
|
||||
public:
|
||||
/// <summary>
|
||||
/// The various components of a URI. This enum is used to indicate which
|
||||
/// URI component is being encoded to the encode_uri_component. This allows
|
||||
/// specific encoding to be performed.
|
||||
///
|
||||
/// Scheme and port don't allow '%' so they don't need to be encoded.
|
||||
/// </summary>
|
||||
class components
|
||||
{
|
||||
public:
|
||||
enum component
|
||||
{
|
||||
user_info,
|
||||
host,
|
||||
path,
|
||||
query,
|
||||
fragment,
|
||||
full_uri
|
||||
};
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Encodes a URI component according to RFC 3986.
|
||||
/// Note if a full URI is specified instead of an individual URI component all
|
||||
/// characters not in the unreserved set are escaped.
|
||||
/// </summary>
|
||||
/// <param name="raw">The URI as a string.</param>
|
||||
/// <returns>The encoded string.</returns>
|
||||
_ASYNCRTIMP static utility::string_t __cdecl encode_uri(const utility::string_t& raw,
|
||||
uri::components::component = components::full_uri);
|
||||
|
||||
/// <summary>
|
||||
/// Encodes a string by converting all characters except for RFC 3986 unreserved characters to their
|
||||
/// hexadecimal representation.
|
||||
/// </summary>
|
||||
/// <returns>The encoded string.</returns>
|
||||
_ASYNCRTIMP static utility::string_t __cdecl encode_data_string(const utility::string_t& data);
|
||||
|
||||
/// <summary>
|
||||
/// Decodes an encoded string.
|
||||
/// </summary>
|
||||
/// <param name="encoded">The URI as a string.</param>
|
||||
/// <returns>The decoded string.</returns>
|
||||
_ASYNCRTIMP static utility::string_t __cdecl decode(const utility::string_t& encoded);
|
||||
|
||||
/// <summary>
|
||||
/// Splits a path into its hierarchical components.
|
||||
/// </summary>
|
||||
/// <param name="path">The path as a string</param>
|
||||
/// <returns>A <c>std::vector<utility::string_t></c> containing the segments in the path.</returns>
|
||||
_ASYNCRTIMP static std::vector<utility::string_t> __cdecl split_path(const utility::string_t& path);
|
||||
|
||||
/// <summary>
|
||||
/// Splits a query into its key-value components.
|
||||
/// </summary>
|
||||
/// <param name="query">The query string</param>
|
||||
/// <returns>A <c>std::map<utility::string_t, utility::string_t></c> containing the key-value components of
|
||||
/// the query.</returns>
|
||||
_ASYNCRTIMP static std::map<utility::string_t, utility::string_t> __cdecl split_query(
|
||||
const utility::string_t& query);
|
||||
|
||||
/// <summary>
|
||||
/// Validates a string as a URI.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This function accepts both uris ('http://msn.com') and uri relative-references ('path1/path2?query').
|
||||
/// </remarks>
|
||||
/// <param name="uri_string">The URI string to be validated.</param>
|
||||
/// <returns><c>true</c> if the given string represents a valid URI, <c>false</c> otherwise.</returns>
|
||||
_ASYNCRTIMP static bool __cdecl validate(const utility::string_t& uri_string);
|
||||
|
||||
/// <summary>
|
||||
/// Creates an empty uri
|
||||
/// </summary>
|
||||
uri() : m_uri(_XPLATSTR("/")) {}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a URI from the given encoded string. This will throw an exception if the string
|
||||
/// does not contain a valid URI. Use uri::validate if processing user-input.
|
||||
/// </summary>
|
||||
/// <param name="uri_string">A pointer to an encoded string to create the URI instance.</param>
|
||||
_ASYNCRTIMP uri(const utility::char_t* uri_string);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a URI from the given encoded string. This will throw an exception if the string
|
||||
/// does not contain a valid URI. Use uri::validate if processing user-input.
|
||||
/// </summary>
|
||||
/// <param name="uri_string">An encoded URI string to create the URI instance.</param>
|
||||
_ASYNCRTIMP uri(const utility::string_t& uri_string);
|
||||
|
||||
/// <summary>
|
||||
/// Copy constructor.
|
||||
/// </summary>
|
||||
uri(const uri&) = default;
|
||||
|
||||
/// <summary>
|
||||
/// Copy assignment operator.
|
||||
/// </summary>
|
||||
uri& operator=(const uri&) = default;
|
||||
|
||||
/// <summary>
|
||||
/// Move constructor.
|
||||
/// </summary>
|
||||
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
|
||||
uri(uri&& other) CPPREST_NOEXCEPT : m_uri(std::move(other.m_uri)), m_components(std::move(other.m_components)) {}
|
||||
|
||||
/// <summary>
|
||||
/// Move assignment operator
|
||||
/// </summary>
|
||||
// This is for VS2013 compatibility -- replace with '= default' when VS2013 is completely dropped.
|
||||
uri& operator=(uri&& other) CPPREST_NOEXCEPT
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
m_uri = std::move(other.m_uri);
|
||||
m_components = std::move(other.m_components);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the scheme component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI scheme as a string.</returns>
|
||||
const utility::string_t& scheme() const { return m_components.m_scheme; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the user information component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI user information as a string.</returns>
|
||||
const utility::string_t& user_info() const { return m_components.m_user_info; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the host component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI host as a string.</returns>
|
||||
const utility::string_t& host() const { return m_components.m_host; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the port component of the URI. Returns -1 if no port is specified.
|
||||
/// </summary>
|
||||
/// <returns>The URI port as an integer.</returns>
|
||||
int port() const { return m_components.m_port; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the path component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI path as a string.</returns>
|
||||
const utility::string_t& path() const { return m_components.m_path; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the query component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI query as a string.</returns>
|
||||
const utility::string_t& query() const { return m_components.m_query; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the fragment component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI fragment as a string.</returns>
|
||||
const utility::string_t& fragment() const { return m_components.m_fragment; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new uri object with the same authority portion as this one, omitting the resource and query portions.
|
||||
/// </summary>
|
||||
/// <returns>The new uri object with the same authority.</returns>
|
||||
_ASYNCRTIMP uri authority() const;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the path, query, and fragment portion of this uri, which may be empty.
|
||||
/// </summary>
|
||||
/// <returns>The new URI object with the path, query and fragment portion of this URI.</returns>
|
||||
_ASYNCRTIMP uri resource() const;
|
||||
|
||||
/// <summary>
|
||||
/// An empty URI specifies no components, and serves as a default value
|
||||
/// </summary>
|
||||
bool is_empty() const { return this->m_uri.empty() || this->m_uri == _XPLATSTR("/"); }
|
||||
|
||||
/// <summary>
|
||||
/// A loopback URI is one which refers to a hostname or ip address with meaning only on the local machine.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Examples include "localhost", or ip addresses in the loopback range (127.0.0.0/24).
|
||||
/// </remarks>
|
||||
/// <returns><c>true</c> if this URI references the local host, <c>false</c> otherwise.</returns>
|
||||
bool is_host_loopback() const
|
||||
{
|
||||
return !is_empty() &&
|
||||
((host() == _XPLATSTR("localhost")) || (host().size() > 4 && host().substr(0, 4) == _XPLATSTR("127.")));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A wildcard URI is one which refers to all hostnames that resolve to the local machine (using the * or +)
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// http://*:80
|
||||
/// </example>
|
||||
bool is_host_wildcard() const
|
||||
{
|
||||
return !is_empty() && (this->host() == _XPLATSTR("*") || this->host() == _XPLATSTR("+"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A portable URI is one with a hostname that can be resolved globally (used from another machine).
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if this URI can be resolved globally (used from another machine), <c>false</c>
|
||||
/// otherwise.</returns> <remarks> The hostname "localhost" is a reserved name that is guaranteed to resolve to the
|
||||
/// local machine, and cannot be used for inter-machine communication. Likewise the hostnames "*" and "+" on Windows
|
||||
/// represent wildcards, and do not map to a resolvable address.
|
||||
/// </remarks>
|
||||
bool is_host_portable() const { return !(is_empty() || is_host_loopback() || is_host_wildcard()); }
|
||||
|
||||
/// <summary>
|
||||
/// A default port is one where the port is unspecified, and will be determined by the operating system.
|
||||
/// The choice of default port may be dictated by the scheme (http -> 80) or not.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if this URI instance has a default port, <c>false</c> otherwise.</returns>
|
||||
bool is_port_default() const { return !is_empty() && this->port() == 0; }
|
||||
|
||||
/// <summary>
|
||||
/// An "authority" URI is one with only a scheme, optional userinfo, hostname, and (optional) port.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if this is an "authority" URI, <c>false</c> otherwise.</returns>
|
||||
bool is_authority() const { return !is_empty() && is_path_empty() && query().empty() && fragment().empty(); }
|
||||
|
||||
/// <summary>
|
||||
/// Returns whether the other URI has the same authority as this one
|
||||
/// </summary>
|
||||
/// <param name="other">The URI to compare the authority with.</param>
|
||||
/// <returns><c>true</c> if both the URI's have the same authority, <c>false</c> otherwise.</returns>
|
||||
bool has_same_authority(const uri& other) const { return !is_empty() && this->authority() == other.authority(); }
|
||||
|
||||
/// <summary>
|
||||
/// Returns whether the path portion of this URI is empty
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if the path portion of this URI is empty, <c>false</c> otherwise.</returns>
|
||||
bool is_path_empty() const { return path().empty() || path() == _XPLATSTR("/"); }
|
||||
|
||||
/// <summary>
|
||||
/// Returns the full (encoded) URI as a string.
|
||||
/// </summary>
|
||||
/// <returns>The full encoded URI string.</returns>
|
||||
utility::string_t to_string() const { return m_uri; }
|
||||
|
||||
/// <summary>
|
||||
/// Returns an URI resolved against <c>this</c> as the base URI
|
||||
/// according to RFC3986, Section 5 (https://tools.ietf.org/html/rfc3986#section-5).
|
||||
/// </summary>
|
||||
/// <param name="relativeUri">The relative URI to be resolved against <c>this</c> as base.</param>
|
||||
/// <returns>The new resolved URI string.</returns>
|
||||
_ASYNCRTIMP utility::string_t resolve_uri(const utility::string_t& relativeUri) const;
|
||||
|
||||
_ASYNCRTIMP bool operator==(const uri& other) const;
|
||||
|
||||
bool operator<(const uri& other) const { return m_uri < other.m_uri; }
|
||||
|
||||
bool operator!=(const uri& other) const { return !(this->operator==(other)); }
|
||||
|
||||
private:
|
||||
friend class uri_builder;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a URI from the given URI components.
|
||||
/// </summary>
|
||||
/// <param name="components">A URI components object to create the URI instance.</param>
|
||||
_ASYNCRTIMP uri(const details::uri_components& components);
|
||||
|
||||
// Used by uri_builder
|
||||
static utility::string_t __cdecl encode_query_impl(const utf8string& raw);
|
||||
|
||||
utility::string_t m_uri;
|
||||
details::uri_components m_components;
|
||||
};
|
||||
|
||||
} // namespace web
|
||||
7482
deps/cpprestsdk/include/cpprest/details/SafeInt3.hpp
vendored
7482
deps/cpprestsdk/include/cpprest/details/SafeInt3.hpp
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,131 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Platform-dependent type definitions
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cpprest/details/cpprest_compat.h"
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
#ifndef _WIN32
|
||||
#ifndef __STDC_LIMIT_MACROS
|
||||
#define __STDC_LIMIT_MACROS
|
||||
#endif
|
||||
#include <stdint.h>
|
||||
#else
|
||||
#include <cstdint>
|
||||
#endif
|
||||
|
||||
#include "cpprest/details/SafeInt3.hpp"
|
||||
|
||||
namespace utility
|
||||
{
|
||||
#ifdef _WIN32
|
||||
#define _UTF16_STRINGS
|
||||
#endif
|
||||
|
||||
// We should be using a 64-bit size type for most situations that do
|
||||
// not involve specifying the size of a memory allocation or buffer.
|
||||
typedef uint64_t size64_t;
|
||||
|
||||
#ifndef _WIN32
|
||||
typedef uint32_t HRESULT; // Needed for PPLX
|
||||
#endif
|
||||
|
||||
#ifdef _UTF16_STRINGS
|
||||
//
|
||||
// On Windows, all strings are wide
|
||||
//
|
||||
typedef wchar_t char_t;
|
||||
typedef std::wstring string_t;
|
||||
#define _XPLATSTR(x) L##x
|
||||
typedef std::wostringstream ostringstream_t;
|
||||
typedef std::wofstream ofstream_t;
|
||||
typedef std::wostream ostream_t;
|
||||
typedef std::wistream istream_t;
|
||||
typedef std::wifstream ifstream_t;
|
||||
typedef std::wistringstream istringstream_t;
|
||||
typedef std::wstringstream stringstream_t;
|
||||
#define ucout std::wcout
|
||||
#define ucin std::wcin
|
||||
#define ucerr std::wcerr
|
||||
#else
|
||||
//
|
||||
// On POSIX platforms, all strings are narrow
|
||||
//
|
||||
typedef char char_t;
|
||||
typedef std::string string_t;
|
||||
#define _XPLATSTR(x) x
|
||||
typedef std::ostringstream ostringstream_t;
|
||||
typedef std::ofstream ofstream_t;
|
||||
typedef std::ostream ostream_t;
|
||||
typedef std::istream istream_t;
|
||||
typedef std::ifstream ifstream_t;
|
||||
typedef std::istringstream istringstream_t;
|
||||
typedef std::stringstream stringstream_t;
|
||||
#define ucout std::cout
|
||||
#define ucin std::cin
|
||||
#define ucerr std::cerr
|
||||
#endif // endif _UTF16_STRINGS
|
||||
|
||||
#ifndef _TURN_OFF_PLATFORM_STRING
|
||||
// The 'U' macro can be used to create a string or character literal of the platform type, i.e. utility::char_t.
|
||||
// If you are using a library causing conflicts with 'U' macro, it can be turned off by defining the macro
|
||||
// '_TURN_OFF_PLATFORM_STRING' before including the C++ REST SDK header files, and e.g. use '_XPLATSTR' instead.
|
||||
#define U(x) _XPLATSTR(x)
|
||||
#endif // !_TURN_OFF_PLATFORM_STRING
|
||||
|
||||
} // namespace utility
|
||||
|
||||
typedef char utf8char;
|
||||
typedef std::string utf8string;
|
||||
typedef std::stringstream utf8stringstream;
|
||||
typedef std::ostringstream utf8ostringstream;
|
||||
typedef std::ostream utf8ostream;
|
||||
typedef std::istream utf8istream;
|
||||
typedef std::istringstream utf8istringstream;
|
||||
|
||||
#ifdef _UTF16_STRINGS
|
||||
typedef wchar_t utf16char;
|
||||
typedef std::wstring utf16string;
|
||||
typedef std::wstringstream utf16stringstream;
|
||||
typedef std::wostringstream utf16ostringstream;
|
||||
typedef std::wostream utf16ostream;
|
||||
typedef std::wistream utf16istream;
|
||||
typedef std::wistringstream utf16istringstream;
|
||||
#else
|
||||
typedef char16_t utf16char;
|
||||
typedef std::u16string utf16string;
|
||||
typedef std::basic_stringstream<utf16char> utf16stringstream;
|
||||
typedef std::basic_ostringstream<utf16char> utf16ostringstream;
|
||||
typedef std::basic_ostream<utf16char> utf16ostream;
|
||||
typedef std::basic_istream<utf16char> utf16istream;
|
||||
typedef std::basic_istringstream<utf16char> utf16istringstream;
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32)
|
||||
// Include on everything except Windows Desktop ARM, unless explicitly excluded.
|
||||
#if !defined(CPPREST_EXCLUDE_WEBSOCKETS)
|
||||
#if defined(WINAPI_FAMILY)
|
||||
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && defined(_M_ARM)
|
||||
#define CPPREST_EXCLUDE_WEBSOCKETS
|
||||
#endif
|
||||
#else
|
||||
#if defined(_M_ARM)
|
||||
#define CPPREST_EXCLUDE_WEBSOCKETS
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@@ -1,91 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Standard macros and definitions.
|
||||
* This header has minimal dependency on windows headers and is safe for use in the public API
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#pragma once
|
||||
|
||||
#if defined(_WIN32)
|
||||
|
||||
#if _MSC_VER >= 1900
|
||||
#define CPPREST_NOEXCEPT noexcept
|
||||
#define CPPREST_CONSTEXPR constexpr
|
||||
#else
|
||||
#define CPPREST_NOEXCEPT
|
||||
#define CPPREST_CONSTEXPR const
|
||||
#endif // _MSC_VER >= 1900
|
||||
|
||||
#define CASABLANCA_UNREFERENCED_PARAMETER(x) (x)
|
||||
|
||||
#include <sal.h>
|
||||
|
||||
#else // ^^^ _WIN32 ^^^ // vvv !_WIN32 vvv
|
||||
|
||||
#define __declspec(x) __attribute__((x))
|
||||
#define dllimport
|
||||
#define novtable /* no novtable equivalent */
|
||||
#define __assume(x) \
|
||||
do \
|
||||
{ \
|
||||
if (!(x)) __builtin_unreachable(); \
|
||||
} while (false)
|
||||
#define CASABLANCA_UNREFERENCED_PARAMETER(x) (void)x
|
||||
#define CPPREST_NOEXCEPT noexcept
|
||||
#define CPPREST_CONSTEXPR constexpr
|
||||
|
||||
#include <assert.h>
|
||||
#define _ASSERTE(x) assert(x)
|
||||
|
||||
// No SAL on non Windows platforms
|
||||
#include "cpprest/details/nosal.h"
|
||||
|
||||
#if !defined(__cdecl)
|
||||
#if defined(cdecl)
|
||||
#define __cdecl __attribute__((cdecl))
|
||||
#else // ^^^ defined cdecl ^^^ // vvv !defined cdecl vvv
|
||||
#define __cdecl
|
||||
#endif // defined cdecl
|
||||
#endif // not defined __cdecl
|
||||
|
||||
#if defined(__ANDROID__)
|
||||
// This is needed to disable the use of __thread inside the boost library.
|
||||
// Android does not support thread local storage -- if boost is included
|
||||
// without this macro defined, it will create references to __tls_get_addr
|
||||
// which (while able to link) will not be available at runtime and prevent
|
||||
// the .so from loading.
|
||||
#if not defined BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION
|
||||
#define BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION
|
||||
#endif // not defined BOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION
|
||||
#endif // defined(__ANDROID__)
|
||||
|
||||
#ifdef __clang__
|
||||
#include <cstdio>
|
||||
#endif // __clang__
|
||||
#endif // _WIN32
|
||||
|
||||
#define _NO_ASYNCRTIMP
|
||||
|
||||
#ifdef _NO_ASYNCRTIMP
|
||||
#define _ASYNCRTIMP
|
||||
#else // ^^^ _NO_ASYNCRTIMP ^^^ // vvv !_NO_ASYNCRTIMP vvv
|
||||
#ifdef _ASYNCRT_EXPORT
|
||||
#define _ASYNCRTIMP __declspec(dllexport)
|
||||
#else // ^^^ _ASYNCRT_EXPORT ^^^ // vvv !_ASYNCRT_EXPORT vvv
|
||||
#define _ASYNCRTIMP __declspec(dllimport)
|
||||
#endif // _ASYNCRT_EXPORT
|
||||
#endif // _NO_ASYNCRTIMP
|
||||
|
||||
#ifdef CASABLANCA_DEPRECATION_NO_WARNINGS
|
||||
#define CASABLANCA_DEPRECATED(x)
|
||||
#else
|
||||
#define CASABLANCA_DEPRECATED(x) __declspec(deprecated(x))
|
||||
#endif // CASABLANCA_DEPRECATION_NO_WARNINGS
|
||||
@@ -1,223 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* utility classes used by the different web:: clients
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
#pragma once
|
||||
|
||||
#include "cpprest/asyncrt_utils.h"
|
||||
#include "cpprest/uri.h"
|
||||
|
||||
namespace web
|
||||
{
|
||||
namespace details
|
||||
{
|
||||
class zero_memory_deleter
|
||||
{
|
||||
public:
|
||||
_ASYNCRTIMP void operator()(::utility::string_t* data) const;
|
||||
};
|
||||
typedef std::unique_ptr<::utility::string_t, zero_memory_deleter> plaintext_string;
|
||||
|
||||
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
|
||||
#if defined(__cplusplus_winrt)
|
||||
class winrt_encryption
|
||||
{
|
||||
public:
|
||||
winrt_encryption() {}
|
||||
_ASYNCRTIMP winrt_encryption(const std::wstring& data);
|
||||
_ASYNCRTIMP plaintext_string decrypt() const;
|
||||
|
||||
private:
|
||||
::pplx::task<Windows::Storage::Streams::IBuffer ^> m_buffer;
|
||||
};
|
||||
#else
|
||||
class win32_encryption
|
||||
{
|
||||
public:
|
||||
win32_encryption() {}
|
||||
_ASYNCRTIMP win32_encryption(const std::wstring& data);
|
||||
_ASYNCRTIMP ~win32_encryption();
|
||||
_ASYNCRTIMP plaintext_string decrypt() const;
|
||||
|
||||
private:
|
||||
std::vector<char> m_buffer;
|
||||
size_t m_numCharacters;
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
} // namespace details
|
||||
|
||||
/// <summary>
|
||||
/// Represents a set of user credentials (user name and password) to be used
|
||||
/// for authentication.
|
||||
/// </summary>
|
||||
class credentials
|
||||
{
|
||||
public:
|
||||
/// <summary>
|
||||
/// Constructs an empty set of credentials without a user name or password.
|
||||
/// </summary>
|
||||
credentials() {}
|
||||
|
||||
/// <summary>
|
||||
/// Constructs credentials from given user name and password.
|
||||
/// </summary>
|
||||
/// <param name="username">User name as a string.</param>
|
||||
/// <param name="password">Password as a string.</param>
|
||||
credentials(utility::string_t username, const utility::string_t& password)
|
||||
: m_username(std::move(username)), m_password(password)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The user name associated with the credentials.
|
||||
/// </summary>
|
||||
/// <returns>A string containing the user name.</returns>
|
||||
const utility::string_t& username() const { return m_username; }
|
||||
|
||||
/// <summary>
|
||||
/// The password for the user name associated with the credentials.
|
||||
/// </summary>
|
||||
/// <returns>A string containing the password.</returns>
|
||||
CASABLANCA_DEPRECATED(
|
||||
"This API is deprecated for security reasons to avoid unnecessary password copies stored in plaintext.")
|
||||
utility::string_t password() const
|
||||
{
|
||||
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
|
||||
return utility::string_t(*m_password.decrypt());
|
||||
#else
|
||||
return m_password;
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if credentials have been set
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if user name and password is set, <c>false</c> otherwise.</returns>
|
||||
bool is_set() const { return !m_username.empty(); }
|
||||
|
||||
details::plaintext_string _internal_decrypt() const
|
||||
{
|
||||
// Encryption APIs not supported on XP
|
||||
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
|
||||
return m_password.decrypt();
|
||||
#else
|
||||
return details::plaintext_string(new ::utility::string_t(m_password));
|
||||
#endif
|
||||
}
|
||||
|
||||
private:
|
||||
::utility::string_t m_username;
|
||||
|
||||
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
|
||||
#if defined(__cplusplus_winrt)
|
||||
details::winrt_encryption m_password;
|
||||
#else
|
||||
details::win32_encryption m_password;
|
||||
#endif
|
||||
#else
|
||||
::utility::string_t m_password;
|
||||
#endif
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// web_proxy represents the concept of the web proxy, which can be auto-discovered,
|
||||
/// disabled, or specified explicitly by the user.
|
||||
/// </summary>
|
||||
class web_proxy
|
||||
{
|
||||
enum web_proxy_mode_internal
|
||||
{
|
||||
use_default_,
|
||||
use_auto_discovery_,
|
||||
disabled_,
|
||||
user_provided_
|
||||
};
|
||||
|
||||
public:
|
||||
enum web_proxy_mode
|
||||
{
|
||||
use_default = use_default_,
|
||||
use_auto_discovery = use_auto_discovery_,
|
||||
disabled = disabled_
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Constructs a proxy with the default settings.
|
||||
/// </summary>
|
||||
web_proxy() : m_address(_XPLATSTR("")), m_mode(use_default_) {}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a proxy with specified mode.
|
||||
/// </summary>
|
||||
/// <param name="mode">Mode to use.</param>
|
||||
web_proxy(web_proxy_mode mode) : m_address(_XPLATSTR("")), m_mode(static_cast<web_proxy_mode_internal>(mode)) {}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a proxy explicitly with provided address.
|
||||
/// </summary>
|
||||
/// <param name="address">Proxy URI to use.</param>
|
||||
web_proxy(uri address) : m_address(address), m_mode(user_provided_) {}
|
||||
|
||||
/// <summary>
|
||||
/// Gets this proxy's URI address. Returns an empty URI if not explicitly set by user.
|
||||
/// </summary>
|
||||
/// <returns>A reference to this proxy's URI.</returns>
|
||||
const uri& address() const { return m_address; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the credentials used for authentication with this proxy.
|
||||
/// </summary>
|
||||
/// <returns>Credentials to for this proxy.</returns>
|
||||
const web::credentials& credentials() const { return m_credentials; }
|
||||
|
||||
/// <summary>
|
||||
/// Sets the credentials to use for authentication with this proxy.
|
||||
/// </summary>
|
||||
/// <param name="cred">Credentials to use for this proxy.</param>
|
||||
void set_credentials(web::credentials cred)
|
||||
{
|
||||
if (m_mode == disabled_)
|
||||
{
|
||||
throw std::invalid_argument("Cannot attach credentials to a disabled proxy");
|
||||
}
|
||||
m_credentials = std::move(cred);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if this proxy was constructed with default settings.
|
||||
/// </summary>
|
||||
/// <returns>True if default, false otherwise.</param>
|
||||
bool is_default() const { return m_mode == use_default_; }
|
||||
|
||||
/// <summary>
|
||||
/// Checks if using a proxy is disabled.
|
||||
/// </summary>
|
||||
/// <returns>True if disabled, false otherwise.</returns>
|
||||
bool is_disabled() const { return m_mode == disabled_; }
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the auto discovery protocol, WPAD, is to be used.
|
||||
/// </summary>
|
||||
/// <returns>True if auto discovery enabled, false otherwise.</returns>
|
||||
bool is_auto_discovery() const { return m_mode == use_auto_discovery_; }
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a proxy address is explicitly specified by the user.
|
||||
/// </summary>
|
||||
/// <returns>True if a proxy address was explicitly specified, false otherwise.</returns>
|
||||
bool is_specified() const { return m_mode == user_provided_; }
|
||||
|
||||
private:
|
||||
web::uri m_address;
|
||||
web_proxy_mode_internal m_mode;
|
||||
web::credentials m_credentials;
|
||||
};
|
||||
|
||||
} // namespace web
|
||||
1786
deps/cpprestsdk/include/cpprest/json.h
vendored
1786
deps/cpprestsdk/include/cpprest/json.h
vendored
File diff suppressed because it is too large
Load Diff
21
deps/cpprestsdk/include/cpprest/uri.h
vendored
21
deps/cpprestsdk/include/cpprest/uri.h
vendored
@@ -1,21 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Protocol independent support for URIs.
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
#pragma once
|
||||
|
||||
#ifndef CASA_URI_H
|
||||
#define CASA_URI_H
|
||||
|
||||
#include "cpprest/base_uri.h"
|
||||
#include "cpprest/uri_builder.h"
|
||||
|
||||
#endif
|
||||
295
deps/cpprestsdk/include/cpprest/uri_builder.h
vendored
295
deps/cpprestsdk/include/cpprest/uri_builder.h
vendored
@@ -1,295 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Builder style class for creating URIs.
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cpprest/base_uri.h"
|
||||
#include <string>
|
||||
|
||||
namespace web
|
||||
{
|
||||
/// <summary>
|
||||
/// Builder for constructing URIs incrementally.
|
||||
/// </summary>
|
||||
class uri_builder
|
||||
{
|
||||
public:
|
||||
/// <summary>
|
||||
/// Creates a builder with an initially empty URI.
|
||||
/// </summary>
|
||||
uri_builder() = default;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a builder with a existing URI object.
|
||||
/// </summary>
|
||||
/// <param name="uri_str">Encoded string containing the URI.</param>
|
||||
uri_builder(const uri& uri_str) : m_uri(uri_str.m_components) {}
|
||||
|
||||
/// <summary>
|
||||
/// Get the scheme component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI scheme as a string.</returns>
|
||||
const utility::string_t& scheme() const { return m_uri.m_scheme; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the user information component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI user information as a string.</returns>
|
||||
const utility::string_t& user_info() const { return m_uri.m_user_info; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the host component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI host as a string.</returns>
|
||||
const utility::string_t& host() const { return m_uri.m_host; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the port component of the URI. Returns -1 if no port is specified.
|
||||
/// </summary>
|
||||
/// <returns>The URI port as an integer.</returns>
|
||||
int port() const { return m_uri.m_port; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the path component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI path as a string.</returns>
|
||||
const utility::string_t& path() const { return m_uri.m_path; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the query component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI query as a string.</returns>
|
||||
const utility::string_t& query() const { return m_uri.m_query; }
|
||||
|
||||
/// <summary>
|
||||
/// Get the fragment component of the URI as an encoded string.
|
||||
/// </summary>
|
||||
/// <returns>The URI fragment as a string.</returns>
|
||||
const utility::string_t& fragment() const { return m_uri.m_fragment; }
|
||||
|
||||
/// <summary>
|
||||
/// Set the scheme of the URI.
|
||||
/// </summary>
|
||||
/// <param name="scheme">Uri scheme.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_scheme(const utility::string_t& scheme)
|
||||
{
|
||||
m_uri.m_scheme = scheme;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the user info component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="user_info">User info as a decoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_user_info(const utility::string_t& user_info, bool do_encoding = false)
|
||||
{
|
||||
if (do_encoding)
|
||||
{
|
||||
m_uri.m_user_info = uri::encode_uri(user_info, uri::components::user_info);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_uri.m_user_info = user_info;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the host component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="host">Host as a decoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_host(const utility::string_t& host, bool do_encoding = false)
|
||||
{
|
||||
if (do_encoding)
|
||||
{
|
||||
m_uri.m_host = uri::encode_uri(host, uri::components::host);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_uri.m_host = host;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the port component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="port">Port as an integer.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_port(int port)
|
||||
{
|
||||
m_uri.m_port = port;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the port component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="port">Port as a string.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
/// <remarks>When string can't be converted to an integer the port is left unchanged.</remarks>
|
||||
_ASYNCRTIMP uri_builder& set_port(const utility::string_t& port);
|
||||
|
||||
/// <summary>
|
||||
/// Set the path component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="path">Path as a decoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_path(const utility::string_t& path, bool do_encoding = false)
|
||||
{
|
||||
if (do_encoding)
|
||||
{
|
||||
m_uri.m_path = uri::encode_uri(path, uri::components::path);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_uri.m_path = path;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the query component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="query">Query as a decoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_query(const utility::string_t& query, bool do_encoding = false)
|
||||
{
|
||||
if (do_encoding)
|
||||
{
|
||||
m_uri.m_query = uri::encode_uri(query, uri::components::query);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_uri.m_query = query;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the fragment component of the URI.
|
||||
/// </summary>
|
||||
/// <param name="fragment">Fragment as a decoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this <c>uri_builder</c> to support chaining.</returns>
|
||||
uri_builder& set_fragment(const utility::string_t& fragment, bool do_encoding = false)
|
||||
{
|
||||
if (do_encoding)
|
||||
{
|
||||
m_uri.m_fragment = uri::encode_uri(fragment, uri::components::fragment);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_uri.m_fragment = fragment;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears all components of the underlying URI in this uri_builder.
|
||||
/// </summary>
|
||||
void clear() { m_uri = details::uri_components(); }
|
||||
|
||||
/// <summary>
|
||||
/// Appends another path to the path of this uri_builder.
|
||||
/// </summary>
|
||||
/// <param name="path">Path to append as a already encoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this uri_builder to support chaining.</returns>
|
||||
_ASYNCRTIMP uri_builder& append_path(const utility::string_t& path, bool do_encoding = false);
|
||||
|
||||
/// <summary>
|
||||
/// Appends the raw contents of the path argument to the path of this uri_builder with no separator de-duplication.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The path argument is appended after adding a '/' separator without regards to the contents of path. If an empty
|
||||
/// string is provided, this function will immediately return without changes to the stored path value. For example:
|
||||
/// if the current contents are "/abc" and path="/xyz", the result will be "/abc//xyz".
|
||||
/// </remarks>
|
||||
/// <param name="path">Path to append as a already encoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this uri_builder to support chaining.</returns>
|
||||
_ASYNCRTIMP uri_builder& append_path_raw(const utility::string_t& path, bool do_encoding = false);
|
||||
|
||||
/// <summary>
|
||||
/// Appends another query to the query of this uri_builder.
|
||||
/// </summary>
|
||||
/// <param name="query">Query to append as a decoded string.</param>
|
||||
/// <param name="do_encoding">Specify whether to apply URI encoding to the given string.</param>
|
||||
/// <returns>A reference to this uri_builder to support chaining.</returns>
|
||||
_ASYNCRTIMP uri_builder& append_query(const utility::string_t& query, bool do_encoding = false);
|
||||
|
||||
/// <summary>
|
||||
/// Appends an relative uri (Path, Query and fragment) at the end of the current uri.
|
||||
/// </summary>
|
||||
/// <param name="relative_uri">The relative uri to append.</param>
|
||||
/// <returns>A reference to this uri_builder to support chaining.</returns>
|
||||
_ASYNCRTIMP uri_builder& append(const uri& relative_uri);
|
||||
|
||||
/// <summary>
|
||||
/// Appends another query to the query of this uri_builder, encoding it first. This overload is useful when building
|
||||
/// a query segment of the form "element=10", where the right hand side of the query is stored as a type other than
|
||||
/// a string, for instance, an integral type.
|
||||
/// </summary>
|
||||
/// <param name="name">The name portion of the query string</param>
|
||||
/// <param name="value">The value portion of the query string</param>
|
||||
/// <returns>A reference to this uri_builder to support chaining.</returns>
|
||||
template<typename T>
|
||||
uri_builder& append_query(const utility::string_t& name, const T& value, bool do_encoding = true)
|
||||
{
|
||||
if (do_encoding)
|
||||
append_query_encode_impl(name, utility::conversions::details::print_utf8string(value));
|
||||
else
|
||||
append_query_no_encode_impl(name, utility::conversions::details::print_string(value));
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Combine and validate the URI components into a encoded string. An exception will be thrown if the URI is
|
||||
/// invalid.
|
||||
/// </summary>
|
||||
/// <returns>The created URI as a string.</returns>
|
||||
_ASYNCRTIMP utility::string_t to_string() const;
|
||||
|
||||
/// <summary>
|
||||
/// Combine and validate the URI components into a URI class instance. An exception will be thrown if the URI is
|
||||
/// invalid.
|
||||
/// </summary>
|
||||
/// <returns>The create URI as a URI class instance.</returns>
|
||||
_ASYNCRTIMP uri to_uri() const;
|
||||
|
||||
/// <summary>
|
||||
/// Validate the generated URI from all existing components of this uri_builder.
|
||||
/// </summary>
|
||||
/// <returns>Whether the URI is valid.</returns>
|
||||
_ASYNCRTIMP bool is_valid();
|
||||
|
||||
private:
|
||||
_ASYNCRTIMP void append_query_encode_impl(const utility::string_t& name, const utf8string& value);
|
||||
_ASYNCRTIMP void append_query_no_encode_impl(const utility::string_t& name, const utility::string_t& value);
|
||||
|
||||
details::uri_components m_uri;
|
||||
};
|
||||
} // namespace web
|
||||
10
deps/cpprestsdk/include/cpprest/version.h
vendored
10
deps/cpprestsdk/include/cpprest/version.h
vendored
@@ -1,10 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
*/
|
||||
#define CPPREST_VERSION_MINOR 10
|
||||
#define CPPREST_VERSION_MAJOR 2
|
||||
#define CPPREST_VERSION_REVISION 13
|
||||
|
||||
#define CPPREST_VERSION (CPPREST_VERSION_MAJOR * 100000 + CPPREST_VERSION_MINOR * 100 + CPPREST_VERSION_REVISION)
|
||||
34
deps/cpprestsdk/pch.h
vendored
34
deps/cpprestsdk/pch.h
vendored
@@ -1,34 +0,0 @@
|
||||
#include <winrt/base.h>
|
||||
#include <Windows.h>
|
||||
#include <dxgi1_3.h>
|
||||
#include <d3d11_2.h>
|
||||
#include <d2d1_3.h>
|
||||
#include <d2d1_3helper.h>
|
||||
#include <d2d1helper.h>
|
||||
#include <dwrite.h>
|
||||
#include <dcomp.h>
|
||||
#include <dwmapi.h>
|
||||
#include <Shobjidl.h>
|
||||
#include <Shlwapi.h>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
#include <chrono>
|
||||
#include <mutex>
|
||||
#include <thread>
|
||||
#include <functional>
|
||||
#include <condition_variable>
|
||||
#include <stdexcept>
|
||||
#include <tuple>
|
||||
#include <unordered_set>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// cpprestsdk headers
|
||||
#include "cpprest/details/basic_types.h"
|
||||
#include "cpprest/details/cpprest_compat.h"
|
||||
#include "cpprest/version.h"
|
||||
// json
|
||||
#include "cpprest/json.h"
|
||||
// utilities
|
||||
#include "cpprest/asyncrt_utils.h"
|
||||
#include "cpprest/details/web_utilities.h"
|
||||
475
deps/cpprestsdk/src/json/json.cpp
vendored
475
deps/cpprestsdk/src/json/json.cpp
vendored
@@ -1,475 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* HTTP Library: JSON parser and writer
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
using namespace web;
|
||||
|
||||
bool json::details::g_keep_json_object_unsorted = false;
|
||||
void json::keep_object_element_order(bool keep_order) { json::details::g_keep_json_object_unsorted = keep_order; }
|
||||
|
||||
utility::ostream_t& web::json::operator<<(utility::ostream_t& os, const web::json::value& val)
|
||||
{
|
||||
val.serialize(os);
|
||||
return os;
|
||||
}
|
||||
|
||||
utility::istream_t& web::json::operator>>(utility::istream_t& is, json::value& val)
|
||||
{
|
||||
val = json::value::parse(is);
|
||||
return is;
|
||||
}
|
||||
|
||||
web::json::value::value()
|
||||
: m_value(utility::details::make_unique<web::json::details::_Null>())
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Null)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(int32_t value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Number)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(uint32_t value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Number)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(int64_t value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Number)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(uint64_t value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Number)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(double value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_Number>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Number)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(bool value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_Boolean>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::Boolean)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(utility::string_t value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_String>(std::move(value)))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::String)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(utility::string_t value, bool has_escape_chars)
|
||||
: m_value(utility::details::make_unique<web::json::details::_String>(std::move(value), has_escape_chars))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::String)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(const utility::char_t* value)
|
||||
: m_value(utility::details::make_unique<web::json::details::_String>(value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::String)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(const utility::char_t* value, bool has_escape_chars)
|
||||
: m_value(utility::details::make_unique<web::json::details::_String>(utility::string_t(value), has_escape_chars))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(value::String)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value::value(const value& other)
|
||||
: m_value(other.m_value->_copy_value())
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
, m_kind(other.m_kind)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value& web::json::value::operator=(const value& other)
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
m_value = std::unique_ptr<details::_Value>(other.m_value->_copy_value());
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
m_kind = other.m_kind;
|
||||
#endif
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
web::json::value::value(value&& other) CPPREST_NOEXCEPT : m_value(std::move(other.m_value))
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
m_kind(other.m_kind)
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
||||
web::json::value& web::json::value::operator=(web::json::value&& other) CPPREST_NOEXCEPT
|
||||
{
|
||||
if (this != &other)
|
||||
{
|
||||
m_value.swap(other.m_value);
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
m_kind = other.m_kind;
|
||||
#endif
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
web::json::value web::json::value::null() { return web::json::value(); }
|
||||
|
||||
web::json::value web::json::value::number(double value) { return web::json::value(value); }
|
||||
|
||||
web::json::value web::json::value::number(int32_t value) { return web::json::value(value); }
|
||||
|
||||
web::json::value web::json::value::number(uint32_t value) { return web::json::value(value); }
|
||||
|
||||
web::json::value web::json::value::number(int64_t value) { return web::json::value(value); }
|
||||
|
||||
web::json::value web::json::value::number(uint64_t value) { return web::json::value(value); }
|
||||
|
||||
web::json::value web::json::value::boolean(bool value) { return web::json::value(value); }
|
||||
|
||||
web::json::value web::json::value::string(utility::string_t value)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_String>(std::move(value));
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::String
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
web::json::value web::json::value::string(utility::string_t value, bool has_escape_chars)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr =
|
||||
utility::details::make_unique<details::_String>(std::move(value), has_escape_chars);
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::String
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
web::json::value web::json::value::string(const std::string& value)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr =
|
||||
utility::details::make_unique<details::_String>(utility::conversions::to_utf16string(value));
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::String
|
||||
#endif
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
web::json::value web::json::value::object(bool keep_order)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Object>(keep_order);
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::Object
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
web::json::value web::json::value::object(std::vector<std::pair<::utility::string_t, value>> fields, bool keep_order)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr =
|
||||
utility::details::make_unique<details::_Object>(std::move(fields), keep_order);
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::Object
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
web::json::value web::json::value::array()
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Array>();
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::Array
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
web::json::value web::json::value::array(size_t size)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Array>(size);
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::Array
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
web::json::value web::json::value::array(std::vector<value> elements)
|
||||
{
|
||||
std::unique_ptr<details::_Value> ptr = utility::details::make_unique<details::_Array>(std::move(elements));
|
||||
return web::json::value(std::move(ptr)
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
,
|
||||
value::Array
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
const web::json::number& web::json::value::as_number() const { return m_value->as_number(); }
|
||||
|
||||
double web::json::value::as_double() const { return m_value->as_double(); }
|
||||
|
||||
int web::json::value::as_integer() const { return m_value->as_integer(); }
|
||||
|
||||
bool web::json::value::as_bool() const { return m_value->as_bool(); }
|
||||
|
||||
json::array& web::json::value::as_array() { return m_value->as_array(); }
|
||||
|
||||
const json::array& web::json::value::as_array() const { return m_value->as_array(); }
|
||||
|
||||
json::object& web::json::value::as_object() { return m_value->as_object(); }
|
||||
|
||||
const json::object& web::json::value::as_object() const { return m_value->as_object(); }
|
||||
|
||||
bool web::json::number::is_int32() const
|
||||
{
|
||||
switch (m_type)
|
||||
{
|
||||
case signed_type:
|
||||
return m_intval >= (std::numeric_limits<int32_t>::min)() && m_intval <= (std::numeric_limits<int32_t>::max)();
|
||||
case unsigned_type: return m_uintval <= (std::numeric_limits<int32_t>::max)();
|
||||
case double_type:
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool web::json::number::is_uint32() const
|
||||
{
|
||||
switch (m_type)
|
||||
{
|
||||
case signed_type: return m_intval >= 0 && m_intval <= (std::numeric_limits<uint32_t>::max)();
|
||||
case unsigned_type: return m_uintval <= (std::numeric_limits<uint32_t>::max)();
|
||||
case double_type:
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool web::json::number::is_int64() const
|
||||
{
|
||||
switch (m_type)
|
||||
{
|
||||
case signed_type: return true;
|
||||
case unsigned_type: return m_uintval <= static_cast<uint64_t>((std::numeric_limits<int64_t>::max)());
|
||||
case double_type:
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool web::json::details::_String::has_escape_chars(const _String& str)
|
||||
{
|
||||
return std::any_of(std::begin(str.m_string), std::end(str.m_string), [](utility::string_t::value_type const x) {
|
||||
if (x <= 31)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (x == '"')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (x == '\\')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
web::json::value::value_type json::value::type() const { return m_value->type(); }
|
||||
|
||||
bool json::value::is_integer() const
|
||||
{
|
||||
if (!is_number())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return m_value->is_integer();
|
||||
}
|
||||
|
||||
bool json::value::is_double() const
|
||||
{
|
||||
if (!is_number())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return m_value->is_double();
|
||||
}
|
||||
|
||||
json::value& web::json::details::_Object::index(const utility::string_t& key) { return m_object[key]; }
|
||||
|
||||
bool web::json::details::_Object::has_field(const utility::string_t& key) const
|
||||
{
|
||||
return m_object.find(key) != m_object.end();
|
||||
}
|
||||
|
||||
bool web::json::value::has_number_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_number();
|
||||
}
|
||||
|
||||
bool web::json::value::has_integer_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_integer();
|
||||
}
|
||||
|
||||
bool web::json::value::has_double_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_double();
|
||||
}
|
||||
|
||||
bool web::json::value::has_boolean_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_boolean();
|
||||
}
|
||||
|
||||
bool web::json::value::has_string_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_string();
|
||||
}
|
||||
|
||||
bool web::json::value::has_array_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_array();
|
||||
}
|
||||
|
||||
bool web::json::value::has_object_field(const utility::string_t& key) const
|
||||
{
|
||||
return has_field(key) && at(key).is_object();
|
||||
}
|
||||
|
||||
utility::string_t json::value::to_string() const
|
||||
{
|
||||
#ifndef _WIN32
|
||||
utility::details::scoped_c_thread_locale locale;
|
||||
#endif
|
||||
return m_value->to_string();
|
||||
}
|
||||
|
||||
bool json::value::operator==(const json::value& other) const
|
||||
{
|
||||
if (this->m_value.get() == other.m_value.get()) return true;
|
||||
if (this->type() != other.type()) return false;
|
||||
|
||||
switch (this->type())
|
||||
{
|
||||
case Null: return true;
|
||||
case Number: return this->as_number() == other.as_number();
|
||||
case Boolean: return this->as_bool() == other.as_bool();
|
||||
case String: return this->as_string() == other.as_string();
|
||||
case Object:
|
||||
return static_cast<const json::details::_Object*>(this->m_value.get())
|
||||
->is_equal(static_cast<const json::details::_Object*>(other.m_value.get()));
|
||||
case Array:
|
||||
return static_cast<const json::details::_Array*>(this->m_value.get())
|
||||
->is_equal(static_cast<const json::details::_Array*>(other.m_value.get()));
|
||||
}
|
||||
__assume(0);
|
||||
}
|
||||
|
||||
void web::json::value::erase(size_t index) { return this->as_array().erase(index); }
|
||||
|
||||
void web::json::value::erase(const utility::string_t& key) { return this->as_object().erase(key); }
|
||||
|
||||
// at() overloads
|
||||
web::json::value& web::json::value::at(size_t index) { return this->as_array().at(index); }
|
||||
|
||||
const web::json::value& web::json::value::at(size_t index) const { return this->as_array().at(index); }
|
||||
|
||||
web::json::value& web::json::value::at(const utility::string_t& key) { return this->as_object().at(key); }
|
||||
|
||||
const web::json::value& web::json::value::at(const utility::string_t& key) const { return this->as_object().at(key); }
|
||||
|
||||
web::json::value& web::json::value::operator[](const utility::string_t& key)
|
||||
{
|
||||
if (this->is_null())
|
||||
{
|
||||
m_value.reset(new web::json::details::_Object(details::g_keep_json_object_unsorted));
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
m_kind = value::Object;
|
||||
#endif
|
||||
}
|
||||
return m_value->index(key);
|
||||
}
|
||||
|
||||
web::json::value& web::json::value::operator[](size_t index)
|
||||
{
|
||||
if (this->is_null())
|
||||
{
|
||||
m_value.reset(new web::json::details::_Array());
|
||||
#ifdef ENABLE_JSON_VALUE_VISUALIZER
|
||||
m_kind = value::Array;
|
||||
#endif
|
||||
}
|
||||
return m_value->index(index);
|
||||
}
|
||||
|
||||
// Remove once VS 2013 is no longer supported.
|
||||
#if defined(_WIN32) && _MSC_VER < 1900
|
||||
static web::json::details::json_error_category_impl instance;
|
||||
#endif
|
||||
const web::json::details::json_error_category_impl& web::json::details::json_error_category()
|
||||
{
|
||||
#if !defined(_WIN32) || _MSC_VER >= 1900
|
||||
static web::json::details::json_error_category_impl instance;
|
||||
#endif
|
||||
return instance;
|
||||
}
|
||||
1279
deps/cpprestsdk/src/json/json_parsing.cpp
vendored
1279
deps/cpprestsdk/src/json/json_parsing.cpp
vendored
File diff suppressed because it is too large
Load Diff
254
deps/cpprestsdk/src/json/json_serialization.cpp
vendored
254
deps/cpprestsdk/src/json/json_serialization.cpp
vendored
@@ -1,254 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* HTTP Library: JSON parser and writer
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef _WIN32
|
||||
#define __STDC_FORMAT_MACROS
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
|
||||
using namespace web;
|
||||
using namespace web::json;
|
||||
using namespace utility;
|
||||
using namespace utility::conversions;
|
||||
|
||||
//
|
||||
// JSON Serialization
|
||||
//
|
||||
|
||||
#ifdef _WIN32
|
||||
void web::json::value::serialize(std::ostream& stream) const
|
||||
{
|
||||
// This has better performance than writing directly to stream.
|
||||
std::string str;
|
||||
m_value->serialize_impl(str);
|
||||
stream << str;
|
||||
}
|
||||
void web::json::value::format(std::basic_string<wchar_t>& string) const { m_value->format(string); }
|
||||
#endif
|
||||
|
||||
void web::json::value::serialize(utility::ostream_t& stream) const
|
||||
{
|
||||
#ifndef _WIN32
|
||||
utility::details::scoped_c_thread_locale locale;
|
||||
#endif
|
||||
|
||||
// This has better performance than writing directly to stream.
|
||||
utility::string_t str;
|
||||
m_value->serialize_impl(str);
|
||||
stream << str;
|
||||
}
|
||||
|
||||
void web::json::value::format(std::basic_string<char>& string) const { m_value->format(string); }
|
||||
|
||||
template<typename CharType>
|
||||
void web::json::details::append_escape_string(std::basic_string<CharType>& str,
|
||||
const std::basic_string<CharType>& escaped)
|
||||
{
|
||||
for (const auto& ch : escaped)
|
||||
{
|
||||
switch (ch)
|
||||
{
|
||||
case '\"':
|
||||
str += '\\';
|
||||
str += '\"';
|
||||
break;
|
||||
case '\\':
|
||||
str += '\\';
|
||||
str += '\\';
|
||||
break;
|
||||
case '\b':
|
||||
str += '\\';
|
||||
str += 'b';
|
||||
break;
|
||||
case '\f':
|
||||
str += '\\';
|
||||
str += 'f';
|
||||
break;
|
||||
case '\r':
|
||||
str += '\\';
|
||||
str += 'r';
|
||||
break;
|
||||
case '\n':
|
||||
str += '\\';
|
||||
str += 'n';
|
||||
break;
|
||||
case '\t':
|
||||
str += '\\';
|
||||
str += 't';
|
||||
break;
|
||||
default:
|
||||
|
||||
// If a control character then must unicode escaped.
|
||||
if (ch >= 0 && ch <= 0x1F)
|
||||
{
|
||||
static const std::array<CharType, 16> intToHex = {
|
||||
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}};
|
||||
str += '\\';
|
||||
str += 'u';
|
||||
str += '0';
|
||||
str += '0';
|
||||
str += intToHex[(ch & 0xF0) >> 4];
|
||||
str += intToHex[ch & 0x0F];
|
||||
}
|
||||
else
|
||||
{
|
||||
str += ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void web::json::details::format_string(const utility::string_t& key, utility::string_t& str)
|
||||
{
|
||||
str.push_back('"');
|
||||
append_escape_string(str, key);
|
||||
str.push_back('"');
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
void web::json::details::format_string(const utility::string_t& key, std::string& str)
|
||||
{
|
||||
str.push_back('"');
|
||||
append_escape_string(str, utility::conversions::to_utf8string(key));
|
||||
str.push_back('"');
|
||||
}
|
||||
#endif
|
||||
|
||||
void web::json::details::_String::format(std::basic_string<char>& str) const
|
||||
{
|
||||
str.push_back('"');
|
||||
|
||||
if (m_has_escape_char)
|
||||
{
|
||||
append_escape_string(str, utility::conversions::to_utf8string(m_string));
|
||||
}
|
||||
else
|
||||
{
|
||||
str.append(utility::conversions::to_utf8string(m_string));
|
||||
}
|
||||
|
||||
str.push_back('"');
|
||||
}
|
||||
|
||||
void web::json::details::_Number::format(std::basic_string<char>& stream) const
|
||||
{
|
||||
if (m_number.m_type != number::type::double_type)
|
||||
{
|
||||
// #digits + 1 to avoid loss + 1 for the sign + 1 for null terminator.
|
||||
const size_t tempSize = std::numeric_limits<uint64_t>::digits10 + 3;
|
||||
char tempBuffer[tempSize];
|
||||
|
||||
#ifdef _WIN32
|
||||
// This can be improved performance-wise if we implement our own routine
|
||||
if (m_number.m_type == number::type::signed_type)
|
||||
_i64toa_s(m_number.m_intval, tempBuffer, tempSize, 10);
|
||||
else
|
||||
_ui64toa_s(m_number.m_uintval, tempBuffer, tempSize, 10);
|
||||
|
||||
const auto numChars = strnlen_s(tempBuffer, tempSize);
|
||||
#else
|
||||
int numChars;
|
||||
if (m_number.m_type == number::type::signed_type)
|
||||
numChars = snprintf(tempBuffer, tempSize, "%" PRId64, m_number.m_intval);
|
||||
else
|
||||
numChars = snprintf(tempBuffer, tempSize, "%" PRIu64, m_number.m_uintval);
|
||||
#endif
|
||||
stream.append(tempBuffer, numChars);
|
||||
}
|
||||
else
|
||||
{
|
||||
// #digits + 2 to avoid loss + 1 for the sign + 1 for decimal point + 5 for exponent (e+xxx) + 1 for null
|
||||
// terminator
|
||||
const size_t tempSize = std::numeric_limits<double>::digits10 + 10;
|
||||
char tempBuffer[tempSize];
|
||||
#ifdef _WIN32
|
||||
const auto numChars = _sprintf_s_l(tempBuffer,
|
||||
tempSize,
|
||||
"%.*g",
|
||||
utility::details::scoped_c_thread_locale::c_locale(),
|
||||
std::numeric_limits<double>::digits10 + 2,
|
||||
m_number.m_value);
|
||||
#else
|
||||
const auto numChars =
|
||||
snprintf(tempBuffer, tempSize, "%.*g", std::numeric_limits<double>::digits10 + 2, m_number.m_value);
|
||||
#endif
|
||||
stream.append(tempBuffer, numChars);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
void web::json::details::_String::format(std::basic_string<wchar_t>& str) const
|
||||
{
|
||||
str.push_back(L'"');
|
||||
|
||||
if (m_has_escape_char)
|
||||
{
|
||||
append_escape_string(str, m_string);
|
||||
}
|
||||
else
|
||||
{
|
||||
str.append(m_string);
|
||||
}
|
||||
|
||||
str.push_back(L'"');
|
||||
}
|
||||
|
||||
void web::json::details::_Number::format(std::basic_string<wchar_t>& stream) const
|
||||
{
|
||||
if (m_number.m_type != number::type::double_type)
|
||||
{
|
||||
// #digits + 1 to avoid loss + 1 for the sign + 1 for null terminator.
|
||||
const size_t tempSize = std::numeric_limits<uint64_t>::digits10 + 3;
|
||||
wchar_t tempBuffer[tempSize];
|
||||
|
||||
if (m_number.m_type == number::type::signed_type)
|
||||
_i64tow_s(m_number.m_intval, tempBuffer, tempSize, 10);
|
||||
else
|
||||
_ui64tow_s(m_number.m_uintval, tempBuffer, tempSize, 10);
|
||||
|
||||
stream.append(tempBuffer, wcsnlen_s(tempBuffer, tempSize));
|
||||
}
|
||||
else
|
||||
{
|
||||
// #digits + 2 to avoid loss + 1 for the sign + 1 for decimal point + 5 for exponent (e+xxx) + 1 for null
|
||||
// terminator
|
||||
const size_t tempSize = std::numeric_limits<double>::digits10 + 10;
|
||||
wchar_t tempBuffer[tempSize];
|
||||
const int numChars = _swprintf_s_l(tempBuffer,
|
||||
tempSize,
|
||||
L"%.*g",
|
||||
utility::details::scoped_c_thread_locale::c_locale(),
|
||||
std::numeric_limits<double>::digits10 + 2,
|
||||
m_number.m_value);
|
||||
stream.append(tempBuffer, numChars);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
const utility::string_t& web::json::details::_String::as_string() const { return m_string; }
|
||||
|
||||
const utility::string_t& web::json::value::as_string() const { return m_value->as_string(); }
|
||||
|
||||
utility::string_t json::value::serialize() const
|
||||
{
|
||||
#ifndef _WIN32
|
||||
utility::details::scoped_c_thread_locale locale;
|
||||
#endif
|
||||
return m_value->to_string();
|
||||
}
|
||||
1490
deps/cpprestsdk/src/utilities/asyncrt_utils.cpp
vendored
1490
deps/cpprestsdk/src/utilities/asyncrt_utils.cpp
vendored
File diff suppressed because it is too large
Load Diff
260
deps/cpprestsdk/src/utilities/base64.cpp
vendored
260
deps/cpprestsdk/src/utilities/base64.cpp
vendored
@@ -1,260 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
#include "pch.h"
|
||||
|
||||
using namespace web;
|
||||
using namespace utility;
|
||||
|
||||
std::vector<unsigned char> _from_base64(const utility::string_t& str);
|
||||
utility::string_t _to_base64(const unsigned char* ptr, size_t size);
|
||||
|
||||
std::vector<unsigned char> __cdecl conversions::from_base64(const utility::string_t& str) { return _from_base64(str); }
|
||||
|
||||
utility::string_t __cdecl conversions::to_base64(const std::vector<unsigned char>& input)
|
||||
{
|
||||
if (input.size() == 0)
|
||||
{
|
||||
// return empty string
|
||||
return utility::string_t();
|
||||
}
|
||||
|
||||
return _to_base64(&input[0], input.size());
|
||||
}
|
||||
|
||||
utility::string_t __cdecl conversions::to_base64(uint64_t input)
|
||||
{
|
||||
return _to_base64(reinterpret_cast<const unsigned char*>(&input), sizeof(input));
|
||||
}
|
||||
|
||||
static const char* _base64_enctbl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
const std::array<unsigned char, 128> _base64_dectbl = {
|
||||
{255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
|
||||
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62,
|
||||
255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 254, 255, 255, 255, 0,
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
|
||||
23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
|
||||
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 255, 255, 255, 255, 255}};
|
||||
|
||||
struct _triple_byte
|
||||
{
|
||||
unsigned char _1_1 : 2;
|
||||
unsigned char _0 : 6;
|
||||
unsigned char _2_1 : 4;
|
||||
unsigned char _1_2 : 4;
|
||||
unsigned char _3 : 6;
|
||||
unsigned char _2_2 : 2;
|
||||
};
|
||||
|
||||
struct _double_byte
|
||||
{
|
||||
unsigned char _1_1 : 2;
|
||||
unsigned char _0 : 6;
|
||||
unsigned char _2_1 : 4;
|
||||
unsigned char _1_2 : 4;
|
||||
};
|
||||
|
||||
struct _single_byte
|
||||
{
|
||||
unsigned char _1_1 : 2;
|
||||
unsigned char _0 : 6;
|
||||
};
|
||||
|
||||
//
|
||||
// A note on the implementation of BASE64 encoding and decoding:
|
||||
//
|
||||
// This is a fairly basic and naive implementation; there is probably a lot of room for
|
||||
// performance improvement, as well as for adding options such as support for URI-safe base64,
|
||||
// ignoring CRLF, relaxed validation rules, etc. The decoder is currently pretty strict.
|
||||
//
|
||||
|
||||
#ifdef __GNUC__
|
||||
// gcc is concerned about the bitfield uses in the code, something we simply need to ignore.
|
||||
#pragma GCC diagnostic ignored "-Wconversion"
|
||||
#endif
|
||||
std::vector<unsigned char> _from_base64(const utility::string_t& input)
|
||||
{
|
||||
std::vector<unsigned char> result;
|
||||
|
||||
if (input.empty()) return result;
|
||||
|
||||
size_t padding = 0;
|
||||
|
||||
// Validation
|
||||
{
|
||||
auto size = input.size();
|
||||
|
||||
if ((size % 4) != 0)
|
||||
{
|
||||
throw std::runtime_error("length of base64 string is not an even multiple of 4");
|
||||
}
|
||||
|
||||
for (auto iter = input.begin(); iter != input.end(); ++iter, --size)
|
||||
{
|
||||
const size_t ch_sz = static_cast<size_t>(*iter);
|
||||
if (ch_sz >= _base64_dectbl.size() || _base64_dectbl[ch_sz] == 255)
|
||||
{
|
||||
throw std::runtime_error("invalid character found in base64 string");
|
||||
}
|
||||
if (_base64_dectbl[ch_sz] == 254)
|
||||
{
|
||||
padding++;
|
||||
// padding only at the end
|
||||
if (size > 2)
|
||||
{
|
||||
throw std::runtime_error("invalid padding character found in base64 string");
|
||||
}
|
||||
if (size == 2)
|
||||
{
|
||||
const size_t ch2_sz = static_cast<size_t>(*(iter + 1));
|
||||
if (ch2_sz >= _base64_dectbl.size() || _base64_dectbl[ch2_sz] != 254)
|
||||
{
|
||||
throw std::runtime_error("invalid padding character found in base64 string");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
auto size = input.size();
|
||||
const char_t* ptr = &input[0];
|
||||
|
||||
auto outsz = (size / 4) * 3;
|
||||
outsz -= padding;
|
||||
|
||||
result.resize(outsz);
|
||||
|
||||
size_t idx = 0;
|
||||
for (; size > 4; ++idx)
|
||||
{
|
||||
unsigned char target[3];
|
||||
memset(target, 0, sizeof(target));
|
||||
_triple_byte* record = reinterpret_cast<_triple_byte*>(target);
|
||||
|
||||
unsigned char val0 = _base64_dectbl[ptr[0]];
|
||||
unsigned char val1 = _base64_dectbl[ptr[1]];
|
||||
unsigned char val2 = _base64_dectbl[ptr[2]];
|
||||
unsigned char val3 = _base64_dectbl[ptr[3]];
|
||||
|
||||
record->_0 = val0;
|
||||
record->_1_1 = val1 >> 4;
|
||||
result[idx] = target[0];
|
||||
|
||||
record->_1_2 = val1 & 0xF;
|
||||
record->_2_1 = val2 >> 2;
|
||||
result[++idx] = target[1];
|
||||
|
||||
record->_2_2 = val2 & 0x3;
|
||||
record->_3 = val3 & 0x3F;
|
||||
result[++idx] = target[2];
|
||||
|
||||
ptr += 4;
|
||||
size -= 4;
|
||||
}
|
||||
|
||||
// Handle the last four bytes separately, to avoid having the conditional statements
|
||||
// in all the iterations (a performance issue).
|
||||
|
||||
{
|
||||
unsigned char target[3];
|
||||
memset(target, 0, sizeof(target));
|
||||
_triple_byte* record = reinterpret_cast<_triple_byte*>(target);
|
||||
|
||||
unsigned char val0 = _base64_dectbl[ptr[0]];
|
||||
unsigned char val1 = _base64_dectbl[ptr[1]];
|
||||
unsigned char val2 = _base64_dectbl[ptr[2]];
|
||||
unsigned char val3 = _base64_dectbl[ptr[3]];
|
||||
|
||||
record->_0 = val0;
|
||||
record->_1_1 = val1 >> 4;
|
||||
result[idx] = target[0];
|
||||
|
||||
record->_1_2 = val1 & 0xF;
|
||||
if (val2 != 254)
|
||||
{
|
||||
record->_2_1 = val2 >> 2;
|
||||
result[++idx] = target[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
// There shouldn't be any information (ones) in the unused bits,
|
||||
if (record->_1_2 != 0)
|
||||
{
|
||||
throw std::runtime_error("Invalid end of base64 string");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
record->_2_2 = val2 & 0x3;
|
||||
if (val3 != 254)
|
||||
{
|
||||
record->_3 = val3 & 0x3F;
|
||||
result[++idx] = target[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
// There shouldn't be any information (ones) in the unused bits.
|
||||
if (record->_2_2 != 0)
|
||||
{
|
||||
throw std::runtime_error("Invalid end of base64 string");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
utility::string_t _to_base64(const unsigned char* ptr, size_t size)
|
||||
{
|
||||
utility::string_t result;
|
||||
|
||||
for (; size >= 3;)
|
||||
{
|
||||
const _triple_byte* record = reinterpret_cast<const _triple_byte*>(ptr);
|
||||
unsigned char idx0 = record->_0;
|
||||
unsigned char idx1 = (record->_1_1 << 4) | record->_1_2;
|
||||
unsigned char idx2 = (record->_2_1 << 2) | record->_2_2;
|
||||
unsigned char idx3 = record->_3;
|
||||
result.push_back(char_t(_base64_enctbl[idx0]));
|
||||
result.push_back(char_t(_base64_enctbl[idx1]));
|
||||
result.push_back(char_t(_base64_enctbl[idx2]));
|
||||
result.push_back(char_t(_base64_enctbl[idx3]));
|
||||
size -= 3;
|
||||
ptr += 3;
|
||||
}
|
||||
switch (size)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
const _single_byte* record = reinterpret_cast<const _single_byte*>(ptr);
|
||||
unsigned char idx0 = record->_0;
|
||||
unsigned char idx1 = (record->_1_1 << 4);
|
||||
result.push_back(char_t(_base64_enctbl[idx0]));
|
||||
result.push_back(char_t(_base64_enctbl[idx1]));
|
||||
result.push_back('=');
|
||||
result.push_back('=');
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
const _double_byte* record = reinterpret_cast<const _double_byte*>(ptr);
|
||||
unsigned char idx0 = record->_0;
|
||||
unsigned char idx1 = (record->_1_1 << 4) | record->_1_2;
|
||||
unsigned char idx2 = (record->_2_1 << 2);
|
||||
result.push_back(char_t(_base64_enctbl[idx0]));
|
||||
result.push_back(char_t(_base64_enctbl[idx1]));
|
||||
result.push_back(char_t(_base64_enctbl[idx2]));
|
||||
result.push_back('=');
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
157
deps/cpprestsdk/src/utilities/web_utilities.cpp
vendored
157
deps/cpprestsdk/src/utilities/web_utilities.cpp
vendored
@@ -1,157 +0,0 @@
|
||||
/***
|
||||
* Copyright (C) Microsoft. All rights reserved.
|
||||
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
|
||||
*
|
||||
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|
||||
*
|
||||
* Credential and proxy utilities.
|
||||
*
|
||||
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
|
||||
*
|
||||
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
****/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#if defined(_WIN32) && !defined(__cplusplus_winrt)
|
||||
#include <Wincrypt.h>
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus_winrt)
|
||||
#include <robuffer.h>
|
||||
#endif
|
||||
|
||||
namespace web
|
||||
{
|
||||
namespace details
|
||||
{
|
||||
#if defined(_WIN32) && !defined(CPPREST_TARGET_XP)
|
||||
#if defined(__cplusplus_winrt)
|
||||
|
||||
// Helper function to zero out memory of an IBuffer.
|
||||
void winrt_secure_zero_buffer(Windows::Storage::Streams::IBuffer ^ buffer)
|
||||
{
|
||||
Microsoft::WRL::ComPtr<IInspectable> bufferInspectable(reinterpret_cast<IInspectable*>(buffer));
|
||||
Microsoft::WRL::ComPtr<Windows::Storage::Streams::IBufferByteAccess> bufferByteAccess;
|
||||
bufferInspectable.As(&bufferByteAccess);
|
||||
|
||||
// This shouldn't happen but if can't get access to the raw bytes for some reason
|
||||
// then we can't zero out.
|
||||
byte* rawBytes;
|
||||
if (bufferByteAccess->Buffer(&rawBytes) == S_OK)
|
||||
{
|
||||
SecureZeroMemory(rawBytes, buffer->Length);
|
||||
}
|
||||
}
|
||||
|
||||
winrt_encryption::winrt_encryption(const std::wstring& data)
|
||||
{
|
||||
auto provider = ref new Windows::Security::Cryptography::DataProtection::DataProtectionProvider(
|
||||
ref new Platform::String(L"Local=user"));
|
||||
|
||||
// Create buffer containing plain text password.
|
||||
Platform::ArrayReference<unsigned char> arrayref(
|
||||
reinterpret_cast<unsigned char*>(const_cast<std::wstring::value_type*>(data.c_str())),
|
||||
static_cast<unsigned int>(data.size()) * sizeof(std::wstring::value_type));
|
||||
Windows::Storage::Streams::IBuffer ^ plaintext =
|
||||
Windows::Security::Cryptography::CryptographicBuffer::CreateFromByteArray(arrayref);
|
||||
m_buffer = pplx::create_task(provider->ProtectAsync(plaintext));
|
||||
m_buffer.then(
|
||||
[plaintext](pplx::task<Windows::Storage::Streams::IBuffer ^>) { winrt_secure_zero_buffer(plaintext); });
|
||||
}
|
||||
|
||||
plaintext_string winrt_encryption::decrypt() const
|
||||
{
|
||||
// To fully guarantee asynchrony would require significant impact on existing code. This code path
|
||||
// is never run on a user's thread and is only done once when setting up a connection.
|
||||
auto encrypted = m_buffer.get();
|
||||
auto provider = ref new Windows::Security::Cryptography::DataProtection::DataProtectionProvider();
|
||||
auto plaintext = pplx::create_task(provider->UnprotectAsync(encrypted)).get();
|
||||
|
||||
// Get access to raw bytes in plain text buffer.
|
||||
Microsoft::WRL::ComPtr<IInspectable> bufferInspectable(reinterpret_cast<IInspectable*>(plaintext));
|
||||
Microsoft::WRL::ComPtr<Windows::Storage::Streams::IBufferByteAccess> bufferByteAccess;
|
||||
bufferInspectable.As(&bufferByteAccess);
|
||||
byte* rawPlaintext;
|
||||
const auto& result = bufferByteAccess->Buffer(&rawPlaintext);
|
||||
if (result != S_OK)
|
||||
{
|
||||
throw ::utility::details::create_system_error(result);
|
||||
}
|
||||
|
||||
// Construct string and zero out memory from plain text buffer.
|
||||
auto data = plaintext_string(
|
||||
new std::wstring(reinterpret_cast<const std::wstring::value_type*>(rawPlaintext), plaintext->Length / 2));
|
||||
SecureZeroMemory(rawPlaintext, plaintext->Length);
|
||||
return std::move(data);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
win32_encryption::win32_encryption(const std::wstring& data) : m_numCharacters(data.size())
|
||||
{
|
||||
// Early return because CryptProtectMemory crashes with empty string
|
||||
if (m_numCharacters == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.size() > (std::numeric_limits<DWORD>::max)() / sizeof(wchar_t))
|
||||
{
|
||||
throw std::length_error("Encryption string too long");
|
||||
}
|
||||
|
||||
const auto dataSizeDword = static_cast<DWORD>(data.size() * sizeof(wchar_t));
|
||||
|
||||
// Round up dataSizeDword to be a multiple of CRYPTPROTECTMEMORY_BLOCK_SIZE
|
||||
static_assert(CRYPTPROTECTMEMORY_BLOCK_SIZE == 16, "Power of 2 assumptions in this bit masking violated");
|
||||
const auto mask = static_cast<DWORD>(CRYPTPROTECTMEMORY_BLOCK_SIZE - 1u);
|
||||
const auto dataNumBytes = (dataSizeDword & ~mask) + ((dataSizeDword & mask) != 0) * CRYPTPROTECTMEMORY_BLOCK_SIZE;
|
||||
assert((dataNumBytes % CRYPTPROTECTMEMORY_BLOCK_SIZE) == 0);
|
||||
assert(dataNumBytes >= dataSizeDword);
|
||||
m_buffer.resize(dataNumBytes);
|
||||
memcpy_s(m_buffer.data(), m_buffer.size(), data.c_str(), dataNumBytes);
|
||||
if (!CryptProtectMemory(m_buffer.data(), dataNumBytes, CRYPTPROTECTMEMORY_SAME_PROCESS))
|
||||
{
|
||||
throw ::utility::details::create_system_error(GetLastError());
|
||||
}
|
||||
}
|
||||
|
||||
win32_encryption::~win32_encryption() { SecureZeroMemory(m_buffer.data(), m_buffer.size()); }
|
||||
|
||||
plaintext_string win32_encryption::decrypt() const
|
||||
{
|
||||
// Copy the buffer and decrypt to avoid having to re-encrypt.
|
||||
auto result = plaintext_string(new std::wstring(reinterpret_cast<const std::wstring::value_type*>(m_buffer.data()),
|
||||
m_buffer.size() / sizeof(wchar_t)));
|
||||
auto& data = *result;
|
||||
if (!m_buffer.empty())
|
||||
{
|
||||
if (!CryptUnprotectMemory(&data[0], static_cast<DWORD>(m_buffer.size()), CRYPTPROTECTMEMORY_SAME_PROCESS))
|
||||
{
|
||||
throw ::utility::details::create_system_error(GetLastError());
|
||||
}
|
||||
|
||||
assert(m_numCharacters <= m_buffer.size());
|
||||
SecureZeroMemory(&data[m_numCharacters], data.size() - m_numCharacters);
|
||||
data.erase(m_numCharacters);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void zero_memory_deleter::operator()(::utility::string_t* data) const
|
||||
{
|
||||
CASABLANCA_UNREFERENCED_PARAMETER(data);
|
||||
#if defined(_WIN32)
|
||||
SecureZeroMemory(&(*data)[0], data->size() * sizeof(::utility::string_t::value_type));
|
||||
delete data;
|
||||
#endif
|
||||
}
|
||||
} // namespace details
|
||||
|
||||
} // namespace web
|
||||
1
deps/cziplib
vendored
Submodule
1
deps/cziplib
vendored
Submodule
Submodule deps/cziplib added at 7a57414261
1
deps/expected-lite
vendored
Submodule
1
deps/expected-lite
vendored
Submodule
Submodule deps/expected-lite added at 95b9cb015f
7
deps/expected.props
vendored
Normal file
7
deps/expected.props
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<Project>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)expected-lite\include\nonstd\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
||||
1
deps/spdlog
vendored
Submodule
1
deps/spdlog
vendored
Submodule
Submodule deps/spdlog added at 616866fcf4
8
deps/spdlog.props
vendored
Normal file
8
deps/spdlog.props
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
<Project>
|
||||
<ItemDefinitionGroup>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)spdlog\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>SPDLOG_WCHAR_TO_UTF8_SUPPORT;SPDLOG_COMPILED_LIB;SPDLOG_WCHAR_FILENAMES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
||||
@@ -1,26 +0,0 @@
|
||||
# Code Organization
|
||||
|
||||
## Rules
|
||||
|
||||
- **Follow the pattern of what you already see in the code**
|
||||
- Try to package new ideas/components into libraries that have nicely defined interfaces
|
||||
- Package new ideas into classes or refactor existing ideas into a class as you extend
|
||||
|
||||
## Code Overview
|
||||
|
||||
General project organization:
|
||||
|
||||
#### The [`deps`](/deps) folder
|
||||
Contains other projects that PowerToys uses as dependencies.
|
||||
|
||||
#### The [`doc`](/doc) folder
|
||||
Documentation for the project, including a [coding guide](/doc/coding) and [design docs](/doc/specs).
|
||||
|
||||
#### The [`installer`](/installer) folder
|
||||
Contains the source code of the PowerToys installer.
|
||||
|
||||
#### The [`src`](/src) folder
|
||||
Contains the source code of the PowerToys runner and of all of the PowerToys modules. **This is where the most of the magic happens.**
|
||||
|
||||
#### The [`tools`](/tools) folder
|
||||
Various tools used by PowerToys. Includes the Visual Studio 2019 project template for new PowerToys.
|
||||
@@ -1,5 +0,0 @@
|
||||
# Coding Style
|
||||
|
||||
## Philosophy
|
||||
1. If it's inserting something into the existing classes/functions, try to follow the existing style as closely as possible.
|
||||
1. If it's brand new code or refactoring a complete class or area of the code, please follow as Modern C++ of a style as you can and reference the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) as much as you possibly can.
|
||||
47
doc/devdocs/akaLinks.md
Normal file
47
doc/devdocs/akaLinks.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Full list of aka links
|
||||
|
||||
| ShortUrl | TargetUrl |
|
||||
|----------|----------|
|
||||
| getpowertoys | ms-windows-store://pdp/?productid=XP89DCGQ3K6VLD |
|
||||
| installpowertoys | https://github.com/microsoft/PowerToys/releases/latest |
|
||||
| powertoys-license | https://github.com/microsoft/PowerToys/blob/main/LICENSE |
|
||||
| powertoys | https://github.com/microsoft/PowerToys |
|
||||
| PowerToysAppCompat | https://github.com/microsoft/PowerToys/wiki/Application-Compatibility |
|
||||
| powerToysCannotRemapKeys | https://learn.microsoft.com/windows/powertoys/keyboard-manager#keys-that-cannot-be-remapped |
|
||||
| powerToysColorPickerImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/ColorPicker_small.png |
|
||||
| powerToysColorPickerSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/ColorPicker_large.png |
|
||||
| powertoysDetectedElevatedHelp | https://learn.microsoft.com/windows/powertoys/administrator |
|
||||
| powertoys-docs | https://learn.microsoft.com/windows/powertoys |
|
||||
| powerToysFancyZoneImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/FancyZones_small.png |
|
||||
| powerToysFancyZoneSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/FancyZones_large.png |
|
||||
| powerToysGiveFeedback | https://github.com/microsoft/PowerToys/issues |
|
||||
| powerToysImageResizerImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/ImageResizer_small.png |
|
||||
| powerToysImageResizerSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/ImageResizer_large.png |
|
||||
| powerToysKBMImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/KBM_small.png |
|
||||
| powerToysKBMSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/KBM_large.png |
|
||||
| PowerToysOverview | https://learn.microsoft.com/windows/powertoys/ |
|
||||
| PowerToysOverview_ColorPicker | https://learn.microsoft.com/windows/powertoys/color-picker |
|
||||
| PowerToysOverview_FancyZones | https://learn.microsoft.com/windows/powertoys/fancyzones |
|
||||
| PowerToysOverview_FileExplorerAddOns | https://learn.microsoft.com/windows/powertoys/file-explorer |
|
||||
| PowerToysOverview_ImageResizer | https://learn.microsoft.com/windows/powertoys/image-resizer |
|
||||
| PowerToysOverview_KeyboardManager | https://learn.microsoft.com/windows/powertoys/keyboard-manager |
|
||||
| PowerToysOverview_MouseUtilities | https://learn.microsoft.com/windows/powertoys/mouse-utilities |
|
||||
| PowerToysOverview_PowerRename | https://learn.microsoft.com/windows/powertoys/powerrename |
|
||||
| PowerToysOverview_PowerToysRun | https://learn.microsoft.com/windows/powertoys/run |
|
||||
| PowerToysOverview_ShortcutGuide | https://learn.microsoft.com/windows/powertoys/shortcut-guide |
|
||||
| PowerToysOverview_VideoConference | https://learn.microsoft.com/windows/powertoys/video-conference-mute |
|
||||
| powerToysPowerLauncherImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PowerLauncher_small.png |
|
||||
| powerToysPowerLauncherSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PowerLauncher_large.png |
|
||||
| powerToysPowerPreviewImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PowerPreview_small.png |
|
||||
| powerToysPowerPreviewSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PowerPreview_large.png |
|
||||
| powerToysPowerRenameImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PowerRename_small.png |
|
||||
| powerToysPowerRenameSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PowerRename_large.png |
|
||||
| powerToysPTImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/PT_small.png |
|
||||
| powerToysPTSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/PT_large.png |
|
||||
| powerToysReportBug | https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=Issue-Bug%2CTriage-Needed&template=bug_report.yml&title= |
|
||||
| powerToysRequestFeature | https://github.com/microsoft/PowerToys/issues/new?assignees=&labels=&template=feature_request.md&title= |
|
||||
| powerToysShortcutGuideImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/ShortcutGuide_small.png |
|
||||
| powerToysShortcutGuideSettingImage | https://raw.githubusercontent.com/microsoft/PowerToys/main/doc/images/overview/ShortcutGuide_large.png |
|
||||
| powerToysVideoConferenceImageSmall | https://github.com/microsoft/PowerToys/wiki/images/overview/VideoConference_small.png |
|
||||
| powerToysVideoConferenceSettingImage | https://github.com/microsoft/PowerToys/wiki/images/overview/VideoConference_large.png |
|
||||
| powertoyswiki | https://github.com/microsoft/PowerToys/wiki |
|
||||
100
doc/devdocs/common.md
Normal file
100
doc/devdocs/common.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Classes and structures
|
||||
|
||||
#### class Animation: [header](/src/common/animation.h) [source](/src/common/animation.cpp)
|
||||
Animation helper class with two easing-in animations: linear and exponential.
|
||||
|
||||
#### class AsyncMessageQueue: [header](/src/common/async_message_queue.h)
|
||||
Header-only asynchronous message queue. Used by `TwoWayPipeMessageIPC`.
|
||||
|
||||
#### class TwoWayPipeMessageIPC: [header](/src/common/two_way_pipe_message_ipc.h)
|
||||
Header-only asynchronous IPC messaging class. Used by the runner to communicate with the settings window.
|
||||
|
||||
#### class DPIAware: [header](/src/common/dpi_aware.h) [source](/src/common/dpi_aware.cpp)
|
||||
Helper class for creating DPI-aware applications.
|
||||
|
||||
#### struct MonitorInfo: [header](/src/common/monitors.h) [source](/src/common/monitors.cpp)
|
||||
Class for obtaining information about physical displays connected to the machine.
|
||||
|
||||
#### class Settings, class PowerToyValues, class CustomActionObject: [header](/src/common/settings_objects.h) [source](/src/common/settings_objects.cpp)
|
||||
Classes used to define settings screens for the PowerToys modules.
|
||||
|
||||
#### class Tasklist: [header](/src/common/tasklist_positions.h) [source](/src/common/tasklist_positions.cpp)
|
||||
Class that can detect the position of the windows buttons on the taskbar. It also detects which window will react to pressing `WinKey + number`.
|
||||
|
||||
#### struct WindowsColors: [header](/src/common/windows_colors.h) [source](/src/common/windows_colors.cpp)
|
||||
Class for detecting the current Windows color scheme.
|
||||
|
||||
# Helpers
|
||||
|
||||
#### Common helpers: [header](/src/common/common.h) [source](/src/common/common.cpp)
|
||||
Various helper functions.
|
||||
|
||||
#### Settings helpers: [header](/src/common/settings_helpers.h)
|
||||
Helper methods for the settings.
|
||||
|
||||
#### Start visible helper: [header](/src/common/start_visible.h) [source](/src/common/start_visible.cpp)
|
||||
Contains function to test if the Start menu is visible.
|
||||
|
||||
# Toast Notifications
|
||||
|
||||
#### Notifications API [header](/src/common/notifications.h) [source](/src/common/notifications.cpp)
|
||||
To use UWP-style toast notifications, simply include the header and call one of these functions:
|
||||
|
||||
```cpp
|
||||
void show_toast(std::wstring_view message); // #1
|
||||
|
||||
void show_toast_background_activated( // #2
|
||||
std::wstring_view message,
|
||||
std::wstring_view background_handler_id,
|
||||
std::vector<std::wstring_view> button_labels);
|
||||
```
|
||||
We might add more functions in the future if the need arises, e.g. `show_toast_xml` which will accept raw XML for rich customization.
|
||||
|
||||
Description:
|
||||
- `#1` is for sending simple notifications without any callbacks or buttons
|
||||
- `#2` is capable of showing a toast with multiple buttons and background activation
|
||||
- `message` is a plain-text argument
|
||||
|
||||
Implement a toast activation handler/callback as a function in [handler_functions.cpp](/src/common/notifications_winrt/handler_functions.cpp) and register its `background_handler_id` via `handlers_map`, e.g.:
|
||||
|
||||
```cpp
|
||||
// Your .cpp where you'd like to show a toast
|
||||
|
||||
#include <common/notifications.h>
|
||||
|
||||
void some_func() {
|
||||
// ...
|
||||
notifications::show_toast_background_activated(
|
||||
L"Toast message!", // text displayed in a toast
|
||||
L"awesome_toast", // activation handler id
|
||||
{L"Press me!", L"Also could press me!", L"I'm here to be pressed!"} // buttons in a toast
|
||||
);
|
||||
```
|
||||
|
||||
```cpp
|
||||
// handler_functions.cpp
|
||||
void awesome_toast_handler(IBackgroundTaskInstance, const size_t button_id)
|
||||
{
|
||||
switch(button_id)
|
||||
{
|
||||
case 0:
|
||||
// handle "Press me!" button click
|
||||
case 1:
|
||||
// handle "Also could press me!" button click
|
||||
case 2:
|
||||
// handle "I'm here to be pressed!" button click
|
||||
}
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
const std::unordered_map<std::wstring_view, handler_function_t> handlers_map = {
|
||||
// ...other handlers...
|
||||
{L"awesome_toast", awesome_toast_handler}
|
||||
};}
|
||||
|
||||
```
|
||||
|
||||
Note: since _background activation_ implies that your toast handler will be invoked in a separate process, you can't share data directly from within a handler and your PT process. Also, since PT is currently a Desktop Bridge app, _foreground activation_ is [handled the same as background](https://learn.microsoft.com/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop-cpp-wrl#foreground-vs-background-activation), therefore we don't make a dedicated API for it. You can read more on the rationale of the current design [here](https://github.com/microsoft/PowerToys/pull/1178#issue-368768337).
|
||||
|
||||
|
||||
30
doc/devdocs/embedded-msix.md
Normal file
30
doc/devdocs/embedded-msix.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# How to integrate new MSIX module with PowerToys Settings and WiX installer
|
||||
[`issue_11705_with_example` branch](https://github.com/microsoft/PowerToys/tree/issue_11705_with_example) contains HelloWorld UWP C# MSIX application which reads its module settings and is installed along PowerToys.
|
||||
|
||||
## Steps
|
||||
- uncomment everything near "TODO: Use to activate embedded MSIX" comments
|
||||
- build PowerToys solution
|
||||
- deploy HelloModule module and sign it with a self-signed certificate (don't forget to put it into a trusted store)
|
||||
- build PowerToysSetup solution and install it
|
||||
|
||||
Type HelloModule into start search and observe that it was installed:
|
||||
|
||||
<img src="../images/msix/hello-module-start.png">
|
||||
|
||||
Open PowerToys settings and change the stub setting to something:
|
||||
|
||||
<img src="../images/msix/hello-module-settings-page.png">
|
||||
|
||||
Open HelloModule:
|
||||
|
||||
<img src="../images/msix/hello-module-screen.png">
|
||||
|
||||
First time you press "Load Settings", it'll detect that it doesn't have permissions to access local file system and open its system settings window, toggle it there:
|
||||
|
||||
<img src="../images/msix/hello-module-app-permissions.png">
|
||||
|
||||
(it's a known uwp limitation, see https://stackoverflow.com/a/53533414/657390)
|
||||
|
||||
HelloModule will close then, restart it, press "Load Settings" and you should see that the application was able to load the setting string which was set by the settings app:
|
||||
|
||||
<img src="../images/msix/hello-module-loaded-settings.png">
|
||||
69
doc/devdocs/guidance.md
Normal file
69
doc/devdocs/guidance.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Coding Guidance
|
||||
|
||||
## Working With Strings
|
||||
|
||||
In order to support localization **YOU SHOULD NOT** have hardcoded UI display strings in your code. Instead, use resource files to consume strings.
|
||||
|
||||
### For CPP
|
||||
Use [`StringTable` resource][String Table] to store the strings and resource header file(`resource.h`) to store Id's linked to the UI display string. Add the strings with Id's referenced from the header file to the resource-definition script file. You can use [Visual Studio Resource Editor][VS Resource Editor] to create and manage resource files.
|
||||
|
||||
- `resource.h`:
|
||||
|
||||
XXX must be a unique int in the list (mostly the int ID of the last string id plus one):
|
||||
|
||||
```cpp
|
||||
#define IDS_MODULE_DISPLAYNAME XXX
|
||||
```
|
||||
|
||||
- `StringTable` in resource-definition script file `validmodulename.rc`:
|
||||
|
||||
```
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_MODULE_DISPLAYNAME L"Module Name"
|
||||
END
|
||||
```
|
||||
|
||||
- Use the `GET_RESOURCE_STRING(UINT resource_id)` method to consume strings in your code.
|
||||
```cpp
|
||||
#include <common.h>
|
||||
|
||||
std::wstring GET_RESOURCE_STRING(IDS_MODULE_DISPLAYNAME)
|
||||
```
|
||||
|
||||
### For C#
|
||||
Use [XML resource file(.resx)][Resx Files] to store the UI display strings and [`Resource Manager`][Resource Manager] to consume those strings in the code. You can use [Visual Studio][Resx Files VS] to create and manage XML resources files.
|
||||
|
||||
- `Resources.resx`
|
||||
|
||||
```xml
|
||||
<data name="ValidUIDisplayString" xml:space="preserve">
|
||||
<value>Description to be displayed on UI.</value>
|
||||
<comment>This text is displayed when XYZ button clicked.</comment>
|
||||
</data>
|
||||
```
|
||||
|
||||
- Use [`Resource Manager`][Resource Manager] to consume strings in code.
|
||||
```csharp
|
||||
System.Resources.ResourceManager manager = new System.Resources.ResourceManager(baseName, assembly);
|
||||
string validUIDisplayString = manager.GetString("ValidUIDisplayString", resourceCulture);
|
||||
```
|
||||
|
||||
In case of Visual Studio is used to create the resource file. Simply use the `Resources` class in auto-generated `Resources.Designer.cs` file to access the strings which encapsulate the [`Resource Manager`][Resource Manager] logic.
|
||||
|
||||
```csharp
|
||||
string validUIDisplayString = Resources.ValidUIDisplayString;
|
||||
```
|
||||
|
||||
## More On Coding Guidance
|
||||
Please review these brief docs below relating to our coding standards etc.
|
||||
|
||||
* [Coding Style](./style.md)
|
||||
* [Code Organization](./readme.md)
|
||||
|
||||
|
||||
[VS Resource Editor]: https://learn.microsoft.com/cpp/windows/resource-editors?view=vs-2019
|
||||
[String Table]: https://learn.microsoft.com/windows/win32/menurc/stringtable-resource
|
||||
[Resx Files VS]: https://learn.microsoft.com/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resource-files-in-visual-studio
|
||||
[Resx Files]: https://learn.microsoft.com/dotnet/framework/resources/creating-resource-files-for-desktop-apps#resources-in-resx-files
|
||||
[Resource Manager]: https://learn.microsoft.com/dotnet/api/system.resources.resourcemanager?view=netframework-4.8
|
||||
165
doc/devdocs/localization.md
Normal file
165
doc/devdocs/localization.md
Normal file
@@ -0,0 +1,165 @@
|
||||
# Localization
|
||||
|
||||
> **NOTE**: THIS DOCUMENT IS OUTDATED.
|
||||
> Follow [issue 15243](https://github.com/microsoft/PowerToys/issues/15243) for updates.
|
||||
|
||||
## Table of Contents
|
||||
1. [Localization on the pipeline (CDPX)](#localization-on-the-pipeline-cdpx)
|
||||
1. [UWP Special case](#uwp-special-case)
|
||||
2. [Enabling localization on a new project](#enabling-localization-on-a-new-project)
|
||||
1. [C++](#c)
|
||||
2. [C#](#c-1)
|
||||
3. [UWP](#uwp)
|
||||
3. [Lcl Files](#lcl-files)
|
||||
4. [Possible Issues in localization PRs (LEGO)](#possible-issues-in-localization-prs-lego)
|
||||
5. [Enabling localized MSI for a new project](#enabling-localized-msi-for-a-new-project)
|
||||
|
||||
## Localization on the pipeline (CDPX)
|
||||
[The localization step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L45-L52) is run on the pipeline before the solution is built. This step runs the [build-localization](https://github.com/microsoft/PowerToys/blob/main/.pipelines/build-localization.cmd) script, which generates resx files for all the projects with localization enabled using the `Localization.XLoc` package.
|
||||
|
||||
The [`Localization.XLoc`](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/build-localization.cmd#L24-L25) tool is run on the repo root, and it checks for all occurrences of `LocProject.json`. Each localized project has a `LocProject.json` file in the project root, which contains the location of the English resx file, list of languages for localization, and the output path where the localized resx files are to be copied to. In addition to this, some other parameters can be set, such as whether the language ID should be added as a folder in the file path or in the file name. When the CDPX pipeline is run, the localization team is notified of changes in the English resx files. For each project with localization enabled, a `loc` folder (see [this](https://github.com/microsoft/PowerToys/tree/main/src/modules/launcher/Microsoft.Launcher/loc) for example) is created in the same directory as the `LocProject.json` file. The folder contains language specific folders which in turn have a nested folder path equivalent to `OutputPath` in the `LocProject.json`. Each of these folders contain one `lcl` file. The `lcl` files contain the English resources along with their translation for that language. These are described in more detail [here](#lcl-files). Once the `.resx` files are generated, they will be used during the `Build PowerToys` step for localized versions of the modules.
|
||||
|
||||
Since the localization script requires certain nuget packages, the [`restore-localization`](https://github.com/microsoft/PowerToys/blob/main/.pipelines/restore-localization.cmd) script is run before running `build-localization` to install all the required packages. This script must [run in the `restore` step](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L37-L39) of pipeline because [the host is network isolated](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipelinhttps://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/2066/Consuming-Packages-in-a-CDPx-Pipeline?anchor=overview) at the `build` step. The [Toolset package source](https://github.com/microsoft/PowerToys/blob/86d77103e9c69686c297490acb04775d43ef8b76/.pipelines/pipeline.user.windows.yml#L23) is used for this.
|
||||
|
||||
The process and variables that can be tweaked on the pipeline are described in more detail [here](https://onebranch.visualstudio.com/Pipeline/_wiki/wikis/Pipeline.wiki/290/Localization).
|
||||
|
||||
The localized resource dlls for C# projects are added to the MSI only for build on the pipeline. This is done by checking if the [`IsPipeline` variable is defined](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L804-L805), which gets defined before building the installer on the pipeline [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/build-installer.cmd#L4). This is done because the localized resx files are only present on the pipeline, and not having this check would result in the installer project failing to build locally.
|
||||
|
||||
## Enabling localization on a new project
|
||||
To enable localization on a new project, the first step is to create a file `LocProject.json` in the project root.
|
||||
|
||||
For example, for a project in the folder `src\path` where the resx file is present in `resources\Resources.resx`, the LocProject.json file will contain the following:
|
||||
```
|
||||
{
|
||||
"Projects": [
|
||||
{
|
||||
"LanguageSet": "Azure_Languages",
|
||||
"LocItems": [
|
||||
{
|
||||
"SourceFile": "src\\path\\resources\\Resources.resx",
|
||||
"CopyOption": "LangIDOnName",
|
||||
"OutputPath": "src\\path\\resources"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
The rest of the steps depend on the project type and are covered in the sections below. The steps to add the localized files to the MSI can be found [here](#Enabling-localized-MSI-for-a-new-project).
|
||||
|
||||
### C++
|
||||
C++ projects do not support `resx` files, and instead use `rc` files along with `resource.h` files. The CDPX pipeline however doesn't support localizing `rc` files and the other alternative they support is directly translating the resources from the binary which makes it harder to maintain resources. To avoid this, a custom script has been added which expects a resx file and converts the entries to an rc file with a string table and adds resource declarations to a resource.h file so that the resources can be compiled with the C++ project.
|
||||
|
||||
If you already have a .rc file, copy the string table to a separate txt file and run the [convert-stringtable-to-resx.ps1](https://github.com/microsoft/PowerToys/blob/main/tools/build/convert-stringtable-to-resx.ps1) script on it. This script is not very robust to input, and requires the data in a specific format, where `IDS_ResName L"ResourceValue"` and any number of spaces can be present in between. The script converts this file to the format expected by [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert), which will convert it to resx. The resource names are changed from all uppercase to title case, and the `IDS_` prefix is removed. Escape characters might have to be manually replaced, for example .rc files would have escaped double quotes as `""`, so this should be replaced with just `"` before converting to the resx files.
|
||||
|
||||
After generating the resx file, rename the existing rc and h files to ProjName.base.rc and resource.base.h. In the rc file remove the string table which is to be localized and in the .h file remove all `#define`s corresponding to localized resources. In the vcxproj of the C++ project, add the following build event:
|
||||
```
|
||||
<Target Name="GenerateResourceFiles" BeforeTargets="PrepareForBuild">
|
||||
<Exec Command="powershell -NonInteractive -executionpolicy Unrestricted $(SolutionDir)tools\build\convert-resx-to-rc.ps1 $(MSBuildThisFileDirectory) resource.base.h resource.h ProjName.base.rc ProjName.rc" />
|
||||
</Target>
|
||||
```
|
||||
|
||||
This event runs a script which generates a resource.h and ProjName.rc in the `Generated Files` folder using the strings in all the resx files along with the existing information in resource.base.h and ProjName.base.rc. The script can be found [here](https://github.com/microsoft/PowerToys/blob/main/tools/build/convert-resx-to-rc.ps1). The script uses [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) to convert the resx file to a string table expected in the .rc file format. When the resources are added to the rc file the `IDS_` prefix is added and resource names are in upper case (as it was originally). Any occurrences of `"` in the string resource is escaped as `""` to prevent build errors. The string tables are added to the rc file in the following format:
|
||||
```
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
strings
|
||||
END
|
||||
|
||||
#endif
|
||||
```
|
||||
Since there is no API to identify the `AFX_TARG_*`, `LANG_*` or `SUBLANG_*` values from each langId from the pipeline, these are hardcoded in the script (for each language) as done [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/tools/build/convert-resx-to-rc.ps1#L50-L77). **If any other languages are added in the future, this script will have to be updated.** In order to determine what are the language codes, you can open the rc file in Resource View, right click the string table and press `Insert Copy` and choose the corresponding language. This autogenerates the required code and can be used to figure out the language codes. The files also add the resource declarations to a resource.h file, starting from 101 by default(this can be changed by an optional argument). Since the output files will be generated in `Generated Files`, any includes in these two files will require an additional `..\` and wherever resource.h is used, it will have to be included as `Generated Files\resource.h`. While adding `resource.base.h` and `ProjName.base.rc` to the vcxproj, these should be modified to not participate in the build to avoid build errors:
|
||||
```
|
||||
<None Include="Resources.resx" />
|
||||
```
|
||||
|
||||
Some rc/resource.h files might be used in multiple projects (for example, KBM). To ensure the projects build for these cases, the build event can be added to the entire directory so that the rc files are generated before any project is built. See [Directory.Build.targets](https://github.com/microsoft/PowerToys/blob/main/src/modules/keyboardmanager/Directory.Build.targets) for an example.
|
||||
|
||||
Check [this PR](https://github.com/microsoft/PowerToys/pull/6104) for an example for making these changes for a C++ project.
|
||||
|
||||
### C#
|
||||
Since C# projects natively support `resx` files, the only step required here is to include all the resx files in the build. For .NET Core projects this is done automatically and the .csproj does not need to be modified. For other projects, the following line needs to be added:
|
||||
```
|
||||
<EmbeddedResource Include="Properties\Resources.*.resx" />
|
||||
```
|
||||
|
||||
**Note:** Building with localized resources may cause a build warning `Referenced assembly 'mscorlib.dll' targets a different processor` which is a VS bug. More details can be found [here](https://github.com/microsoft/PowerToys/issues/7269).
|
||||
|
||||
**Note:** If a project needs to be migrated from XAML resources to resx, the easiest way to convert the resources would be to change to format to `=` separates resources by either manually (by Ctrl+H on a text editor), or by a script, and then running [`resgen`](https://learn.microsoft.com/dotnet/framework/tools/resgen-exe-resource-file-generator#Convert) on `Developer Command Prompt for VS` to convert it to resx format.
|
||||
```
|
||||
<system:String x:Key="wox_plugin_calculator_plugin_name">Calculator</system:String>
|
||||
<system:String x:Key="wox_plugin_calculator_plugin_description">Allows to do mathematical calculations.(Try 5*3-2 in Wox)</system:String>
|
||||
<system:String x:Key="wox_plugin_calculator_not_a_number">Not a number (NaN)</system:String>
|
||||
```
|
||||
to
|
||||
```
|
||||
wox_plugin_calculator_plugin_name=Calculator
|
||||
wox_plugin_calculator_plugin_description=Allows to do mathematical calculations.(Try 5*3-2 in Wox)
|
||||
wox_plugin_calculator_not_a_number=Not a number (NaN)
|
||||
```
|
||||
After adding the resx file to the project along with the resource generator, references to the strings will have to be replaced with `Properties.Resources.resName` rather than the custom APIs. Check [this PR](https://github.com/microsoft/PowerToys/pull/6165) for an example of the changes required.
|
||||
|
||||
### UWP
|
||||
UWP projects expect `resw` files rather than `resx` (the format is almost the same). Unlike other C# projects, the files are expected in the format `fullLangId\Resources.resw`. To include these files in the build, replace the following line in the csproj:
|
||||
```
|
||||
<PRIResource Include="Strings\en-us\Resources.resw" />
|
||||
```
|
||||
to
|
||||
```
|
||||
<PRIResource Include="Strings\*\Resources.resw" />
|
||||
```
|
||||
|
||||
## Lcl Files
|
||||
Lcl files contain all the resources that are present in the English resx file, along with a translation if it has been added.
|
||||
|
||||
For example, an entry for a resource in the lcl file looks like this:
|
||||
```
|
||||
<Item ItemId=";EditKeyboard_WindowName" ItemType="0;.resx" PsrId="211" Leaf="true">
|
||||
<Str Cat="Text">
|
||||
<Val><![CDATA[Remap keys]]></Val>
|
||||
<Tgt Cat="Text" Stat="Loc" Orig="New">
|
||||
<Val><![CDATA[Remapper des touches]]></Val>
|
||||
</Tgt>
|
||||
</Str>
|
||||
<Disp Icon="Str" />
|
||||
</Item>
|
||||
```
|
||||
The `<Tgt>` element would not be present in the initial commits of the lcl files, as only the English version of the string would be present.
|
||||
|
||||
**Note:** The CDPX Localization system has a fail-safe check on the lcl files, where if the English string value which is present inside `<Val><![CDATA[*]]></Val>` does not match the value present in the English Resources.resx file then the translated value will not be copied to the localized resx file. This is present so that obsolete translations would not be loaded when the English resource has changed, and the English string will be used rather than the obsolete translation.
|
||||
|
||||
## Possible Issues in localization PRs (LEGO)
|
||||
Since the LEGO PRs update some of the strings in LCL files at a time, there can be multiple PRs which modify the same files, leading to merge conflicts. In most cases this would show up on GitHub as a merge conflict, but sometimes a bad git merge may occur, and the file could end up with incorrect formatting, such as two `<Tgt>` elements for a single resource. These can be fixed by ensuring the elements follow the format described in [this section](#lcl-files). To catch such errors, the build farm should be run for every LEGO PR and if any error occurs in the localization step, we should check the corresponding resx/lcl files for conflicts.
|
||||
|
||||
## Enabling localized MSI for a new project
|
||||
For C++ and UWP projects no additional files are generated with localization that need to be added to the MSI. For C++ projects all the resources are added to the dll/exe, while for UWP projects they are added to the `resources.pri` file (which is present even for an unlocalized project). To verify if the localized resources are added to the `resources.pri` file the following steps can be done:
|
||||
- Open `Developer Command Prompt for VS`
|
||||
- After navigating to the folder containing the pri file, run the following command:
|
||||
|
||||
makepri.exe dump /if .\resources.pri
|
||||
- Check the contents of the `resources.pri.xml` file that is generated from the command. The last section of the file will contain the resources with the strings in all the languages:
|
||||
```
|
||||
<NamedResource name="GeneralSettings_RunningAsAdminText" uri="ms-resource://f4f787a5-f0ae-47a9-be89-5408b1dd2b47/Resources/GeneralSettings_RunningAsAdminText">
|
||||
<Candidate qualifiers="Language-FR" type="String">
|
||||
<Value>Running as administrator</Value>
|
||||
</Candidate>
|
||||
<Candidate qualifiers="Language-EN-US" isDefault="true" type="String">
|
||||
<Value>Running as administrator</Value>
|
||||
</Candidate>
|
||||
</NamedResource>
|
||||
```
|
||||
|
||||
For C# projects, satellite dlls are generated when the project is built. For a project named `ProjName`, files are created in the format `langId\ProjName.resources.dll` where `langId` is in the same format as the lcl files. The satellite dlls need to be included with the MSI, but they must be added only if the solution is built from the build farm, as the localized resx files will not be present on local machines (and that could cause local builds of the installer to fail).
|
||||
This can be done by adding the directory name of the project [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L806) and a resource component for the project can be created [here](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/installer/PowerToysSetup/Product.wxs#L845-L847) in this format:
|
||||
```
|
||||
<Component Id="ProjName_$(var.IdSafeLanguage)_Component" Directory="Resource$(var.IdSafeLanguage)ProjNameInstallFolder">
|
||||
<File Id="ProjName_$(var.IdSafeLanguage)_File" Source="$(var.BinX64Dir)modules\ProjName\$(var.Language)\ProjName.resources.dll" />
|
||||
</Component>
|
||||
```
|
||||
|
||||
We should also ensure the new dlls are signed by the pipeline. Currently all dlls of the form [`*.resources.dll` are signed](https://github.com/microsoft/PowerToys/blob/f92bd6ffd38014c228544bb8d68d0937ce4c2b6d/.pipelines/pipeline.user.windows.yml#L68).
|
||||
|
||||
**Note:** The resource dlls should be added to the MSI project only after the initial commit with the lcl files has been done by the Localization team. Otherwise the pipeline will fail as there wouldn't be any resx files to generate the dlls.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user