# WU Cyber Apocalypse 2023
## Crypto
### Ancient Encodings

tải file về ta được:
source.py :
```
from Crypto.Util.number import bytes_to_long
from base64 import b64encode
FLAG = b"HTB{??????????}"
def encode(message):
return hex(bytes_to_long(b64encode(message)))
def main():
encoded_flag = encode(FLAG)
with open("output.txt", "w") as f:
f.write(encoded_flag)
if __name__ == "__main__":
main()
```
output.txt :
```
0x53465243657a467558336b7764584a66616a4231636d347a655639354d48566664326b786246397a5a544e66644767784e56396c626d4d775a4446755a334e665a58597a636e6c33614756794d33303d
```
Đoạn này được mã hóa bằng cách mã hóa base64 rồi chuyển qua dạng hex.
Mình sẽ solve bằng tool cyberchef https://gchq.github.io/CyberChef/#recipe=From_Hex('Auto')From_Base64('A-Za-z0-9%2B/%3D',true,false)&input=NTM0NjUyNDM2NTdhNDY3NTU4MzM2Yjc3NjQ1ODRhNjY2MTZhNDIzMTYzNmQzNDdhNjU1NjM5MzU0ZDQ4NTY2NjY0MzI2Yjc4NjI0NjM5N2E1YTU0NGU2NjY0NDc2Nzc4NGU1NjM5NmM2MjZkNGQ3NzVhNDQ0Njc1NWEzMzRlNjY1YTU4NTk3YTYzNmU2YzMzNjE0NzU2Nzk0ZDMzMzAzZA

flag: HTB{1n_y0ur_j0urn3y_y0u_wi1l_se3_th15_enc0d1ngs_ev3rywher3}
### Small StEps

Tải về file ta được:
sever.py:
```
from Crypto.Util.number import getPrime, bytes_to_long
FLAG = b"HTB{???????????????}"
assert len(FLAG) == 20
class RSA:
def __init__(self):
self.q = getPrime(256)
self.p = getPrime(256)
self.n = self.q * self.p
self.e = 3
def encrypt(self, plaintext):
plaintext = bytes_to_long(plaintext)
return pow(plaintext, self.e, self.n)
def menu():
print('[E]ncrypt the flag.')
print('[A]bort training.\n')
return input('> ').upper()[0]
def main():
print('This is the second level of training.\n')
while True:
rsa = RSA()
choice = menu()
if choice == 'E':
encrypted_flag = rsa.encrypt(FLAG)
print(f'\nThe public key is:\n\nN: {rsa.n}\ne: {rsa.e}\n')
print(f'The encrypted flag is: {encrypted_flag}\n')
elif choice == 'A':
print('\nGoodbye\n')
exit(-1)
else:
print('\nInvalid choice!\n')
exit(-1)
if __name__ == '__main__':
main()
```
solver:
```
# This script is not necessary for the challenge but may be useful in the
# future.
from pwn import *
# This function takes in binary data and converts it to ASCII.
def toAscii(data):
return data.decode().strip()
# This function sends the string "E" to the server and retrieves the public key
# and encrypted flag that are returned. The public key consists of two parts:
# N and e.
def choiceE():
r.sendlineafter(b"> ", b"E")
r.recvuntil(b"N: ")
N = eval(toAscii(r.recvline()))
r.recvuntil(b"e: ")
e = eval(toAscii(r.recvline()))
r.recvuntil(b"The encrypted flag is: ")
encrypted_flag = eval(toAscii(r.recvline()))
return N, e, encrypted_flag
# This function serves as the main logic of the solver script. It calls
# `choiceE()` to retrieve the public key and encrypted flag and prints them.
def pwn():
N, e, encrypted_flag = choiceE()
print(N, e, encrypted_flag)
# This block handles the command-line flags when running `solver.py`. If the
# `REMOTE` flag is set, the script connects to the remote host specified by the
# `HOST` flag. Otherwise, it starts the server locally using `process()`.
if __name__ == "__main__":
if args.REMOTE:
ip, port = args.HOST.split(":")
r = remote(ip, int(port))
else:
r = process(["python3", "server.py"])
pwn()
```
README.md:

- Khi chạy sever thì ta nhận được public key và encrypt flag

Ở đây ta thấy e=3 nên chúng ta có thể tấn công dễ dàng 
solved.py:
```
from gmpy2 import iroot
from Crypto.Util.number import long_to_bytes
n= 6673734633791890828744302299633379538016321578748721858962018030993224914098784291502959394594565385514223932557675074895532178527053053667361884909097399
e=3
c=70407336670535933819674104208890254240063781538460394662998902860952366439176467447947737680952277637330523818962104685553250402512989897886053
m=iroot(c,3)[0]
print(long_to_bytes(m))
#HTB{5ma1l_E-xp0n3nt}
```
### Perfect Synchronization

Tải các file về ta được
source.py:
```
from os import urandom
from Crypto.Cipher import AES
from secret import MESSAGE
assert all([x.isupper() or x in '{_} ' for x in MESSAGE])
class Cipher:
def __init__(self):
self.salt = urandom(15)
key = urandom(16)
self.cipher = AES.new(key, AES.MODE_ECB)
def encrypt(self, message):
return [self.cipher.encrypt(c.encode() + self.salt) for c in message]
def main():
cipher = Cipher()
encrypted = cipher.encrypt(MESSAGE)
encrypted = "\n".join([c.hex() for c in encrypted])
with open("output.txt", 'w+') as f:
f.write(encrypted)
if __name__ == "__main__":
main()
```
output.txt:
```
dfc8a2232dc2487a5455bda9fa2d45a1
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
5f122076e17398b7e21d1762a61e2e0a
457165130940ceac01160ac0ff924d86
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
78de2d97da222954cce639cc4b481050
e9b131ab270c54bbf67fb4bd9c8e3177
0df9b4e759512f36aaa5c7fd4fb1fba8
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
457165130940ceac01160ac0ff924d86
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
305d4649e3cb097fb094f8f45abbf0dc
e9b131ab270c54bbf67fb4bd9c8e3177
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
d178fac67ec4e9d2724fed6c7b50cd26
5f122076e17398b7e21d1762a61e2e0a
78de2d97da222954cce639cc4b481050
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
68d763bc4c7a9b0da3828e0b77b08b64
5f122076e17398b7e21d1762a61e2e0a
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
4a3af0b7397584c4d450c6f7e83076aa
9673dbe632859fa33b8a79d6a3e3fe30
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
457165130940ceac01160ac0ff924d86
457165130940ceac01160ac0ff924d86
d178fac67ec4e9d2724fed6c7b50cd26
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
e9b131ab270c54bbf67fb4bd9c8e3177
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
0df9b4e759512f36aaa5c7fd4fb1fba8
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
5d7185a6823ab4fc73f3ea33669a7bae
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
8cbd4cfebc9ddf583a108de1a69df088
0df9b4e759512f36aaa5c7fd4fb1fba8
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
5f122076e17398b7e21d1762a61e2e0a
457165130940ceac01160ac0ff924d86
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
61331054d82aeec9a20416759766d9d5
e23c1323abc1fc41331b9cdfc40d5856
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
305d4649e3cb097fb094f8f45abbf0dc
e9b131ab270c54bbf67fb4bd9c8e3177
9673dbe632859fa33b8a79d6a3e3fe30
d178fac67ec4e9d2724fed6c7b50cd26
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
305d4649e3cb097fb094f8f45abbf0dc
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
78de2d97da222954cce639cc4b481050
3a17ebebf2bad9aa0dd75b37a58fe6ea
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
5f122076e17398b7e21d1762a61e2e0a
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
4a3af0b7397584c4d450c6f7e83076aa
8cbd4cfebc9ddf583a108de1a69df088
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
5f122076e17398b7e21d1762a61e2e0a
4a3af0b7397584c4d450c6f7e83076aa
2190a721b2dcb17ff693aa5feecb3b58
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
d178fac67ec4e9d2724fed6c7b50cd26
5f122076e17398b7e21d1762a61e2e0a
78de2d97da222954cce639cc4b481050
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
305d4649e3cb097fb094f8f45abbf0dc
5d7185a6823ab4fc73f3ea33669a7bae
2190a721b2dcb17ff693aa5feecb3b58
68d763bc4c7a9b0da3828e0b77b08b64
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
200ecd2657df0197f202f258b45038d8
8cbd4cfebc9ddf583a108de1a69df088
61331054d82aeec9a20416759766d9d5
fb78aed37621262392a4125183d1bfc9
34ece5ff054feccc5dabe9ae90438f9d
8cbd4cfebc9ddf583a108de1a69df088
66975492b6a53cc9a4503c3a1295b6a7
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
34ece5ff054feccc5dabe9ae90438f9d
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
d178fac67ec4e9d2724fed6c7b50cd26
e23c1323abc1fc41331b9cdfc40d5856
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
78de2d97da222954cce639cc4b481050
305d4649e3cb097fb094f8f45abbf0dc
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
2190a721b2dcb17ff693aa5feecb3b58
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
2190a721b2dcb17ff693aa5feecb3b58
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
2fc20e9a20605b988999e836301a2408
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
8cbd4cfebc9ddf583a108de1a69df088
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
e9b131ab270c54bbf67fb4bd9c8e3177
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
8cbd4cfebc9ddf583a108de1a69df088
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
5f122076e17398b7e21d1762a61e2e0a
fb78aed37621262392a4125183d1bfc9
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
2190a721b2dcb17ff693aa5feecb3b58
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
e9b131ab270c54bbf67fb4bd9c8e3177
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
2fc20e9a20605b988999e836301a2408
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
d178fac67ec4e9d2724fed6c7b50cd26
5f122076e17398b7e21d1762a61e2e0a
78de2d97da222954cce639cc4b481050
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
8cbd4cfebc9ddf583a108de1a69df088
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
305d4649e3cb097fb094f8f45abbf0dc
8cbd4cfebc9ddf583a108de1a69df088
9673dbe632859fa33b8a79d6a3e3fe30
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
4a3af0b7397584c4d450c6f7e83076aa
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
8cbd4cfebc9ddf583a108de1a69df088
f89f2719fb2814d9ab821316dae9862f
0df9b4e759512f36aaa5c7fd4fb1fba8
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
fb78aed37621262392a4125183d1bfc9
e9b131ab270c54bbf67fb4bd9c8e3177
f89f2719fb2814d9ab821316dae9862f
f89f2719fb2814d9ab821316dae9862f
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
dfc8a2232dc2487a5455bda9fa2d45a1
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
8cbd4cfebc9ddf583a108de1a69df088
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
c87a7eb9283e59571ad0cb0c89a74379
2fc20e9a20605b988999e836301a2408
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
0df9b4e759512f36aaa5c7fd4fb1fba8
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
8cbd4cfebc9ddf583a108de1a69df088
8cbd4cfebc9ddf583a108de1a69df088
fb78aed37621262392a4125183d1bfc9
fb78aed37621262392a4125183d1bfc9
c87a7eb9283e59571ad0cb0c89a74379
c87a7eb9283e59571ad0cb0c89a74379
2190a721b2dcb17ff693aa5feecb3b58
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
e23c1323abc1fc41331b9cdfc40d5856
d178fac67ec4e9d2724fed6c7b50cd26
305d4649e3cb097fb094f8f45abbf0dc
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
f89f2719fb2814d9ab821316dae9862f
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
e9b131ab270c54bbf67fb4bd9c8e3177
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
8cbd4cfebc9ddf583a108de1a69df088
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
305d4649e3cb097fb094f8f45abbf0dc
e9b131ab270c54bbf67fb4bd9c8e3177
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
457165130940ceac01160ac0ff924d86
305d4649e3cb097fb094f8f45abbf0dc
d178fac67ec4e9d2724fed6c7b50cd26
e9b131ab270c54bbf67fb4bd9c8e3177
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
e23c1323abc1fc41331b9cdfc40d5856
c87a7eb9283e59571ad0cb0c89a74379
9673dbe632859fa33b8a79d6a3e3fe30
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
5f122076e17398b7e21d1762a61e2e0a
fb78aed37621262392a4125183d1bfc9
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
305d4649e3cb097fb094f8f45abbf0dc
8cbd4cfebc9ddf583a108de1a69df088
200ecd2657df0197f202f258b45038d8
200ecd2657df0197f202f258b45038d8
66975492b6a53cc9a4503c3a1295b6a7
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
d178fac67ec4e9d2724fed6c7b50cd26
293f56083c20759d275db846c8bfb03e
293f56083c20759d275db846c8bfb03e
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
5f122076e17398b7e21d1762a61e2e0a
5ae172c9ea46594cea34ad1a4b1c79cd
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
34ece5ff054feccc5dabe9ae90438f9d
c87a7eb9283e59571ad0cb0c89a74379
66975492b6a53cc9a4503c3a1295b6a7
200ecd2657df0197f202f258b45038d8
2190a721b2dcb17ff693aa5feecb3b58
5f122076e17398b7e21d1762a61e2e0a
2190a721b2dcb17ff693aa5feecb3b58
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
305d4649e3cb097fb094f8f45abbf0dc
d178fac67ec4e9d2724fed6c7b50cd26
34ece5ff054feccc5dabe9ae90438f9d
34ece5ff054feccc5dabe9ae90438f9d
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
3a17ebebf2bad9aa0dd75b37a58fe6ea
8cbd4cfebc9ddf583a108de1a69df088
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
f89f2719fb2814d9ab821316dae9862f
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
8cbd4cfebc9ddf583a108de1a69df088
f89f2719fb2814d9ab821316dae9862f
0df9b4e759512f36aaa5c7fd4fb1fba8
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
4a3af0b7397584c4d450c6f7e83076aa
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
0df9b4e759512f36aaa5c7fd4fb1fba8
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
2190a721b2dcb17ff693aa5feecb3b58
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
2fc20e9a20605b988999e836301a2408
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
8cbd4cfebc9ddf583a108de1a69df088
66975492b6a53cc9a4503c3a1295b6a7
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
5f122076e17398b7e21d1762a61e2e0a
fb78aed37621262392a4125183d1bfc9
5f122076e17398b7e21d1762a61e2e0a
9673dbe632859fa33b8a79d6a3e3fe30
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
60e8373bfb2124aea832f87809fca596
d178fac67ec4e9d2724fed6c7b50cd26
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
457165130940ceac01160ac0ff924d86
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
c87a7eb9283e59571ad0cb0c89a74379
2fc20e9a20605b988999e836301a2408
5f122076e17398b7e21d1762a61e2e0a
4a3af0b7397584c4d450c6f7e83076aa
2190a721b2dcb17ff693aa5feecb3b58
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
8cbd4cfebc9ddf583a108de1a69df088
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
200ecd2657df0197f202f258b45038d8
d178fac67ec4e9d2724fed6c7b50cd26
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
2190a721b2dcb17ff693aa5feecb3b58
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
5ae172c9ea46594cea34ad1a4b1c79cd
5f122076e17398b7e21d1762a61e2e0a
2190a721b2dcb17ff693aa5feecb3b58
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
c87a7eb9283e59571ad0cb0c89a74379
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
457165130940ceac01160ac0ff924d86
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
8cbd4cfebc9ddf583a108de1a69df088
e23c1323abc1fc41331b9cdfc40d5856
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
34ece5ff054feccc5dabe9ae90438f9d
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
78de2d97da222954cce639cc4b481050
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
3a17ebebf2bad9aa0dd75b37a58fe6ea
68d763bc4c7a9b0da3828e0b77b08b64
9673dbe632859fa33b8a79d6a3e3fe30
fbe86a428051747607a35b44b1a3e9e9
5f122076e17398b7e21d1762a61e2e0a
a94f49727cf771a85831bd03af1caaf5
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
4a3af0b7397584c4d450c6f7e83076aa
2190a721b2dcb17ff693aa5feecb3b58
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
a94f49727cf771a85831bd03af1caaf5
200ecd2657df0197f202f258b45038d8
d178fac67ec4e9d2724fed6c7b50cd26
9673dbe632859fa33b8a79d6a3e3fe30
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
68d763bc4c7a9b0da3828e0b77b08b64
d178fac67ec4e9d2724fed6c7b50cd26
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
a94f49727cf771a85831bd03af1caaf5
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
a94f49727cf771a85831bd03af1caaf5
66975492b6a53cc9a4503c3a1295b6a7
c87a7eb9283e59571ad0cb0c89a74379
5f122076e17398b7e21d1762a61e2e0a
fb78aed37621262392a4125183d1bfc9
c53ba24fbbe9e3dbdd6062b3aab7ed1a
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
5d7185a6823ab4fc73f3ea33669a7bae
2190a721b2dcb17ff693aa5feecb3b58
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
5f122076e17398b7e21d1762a61e2e0a
457165130940ceac01160ac0ff924d86
3a17ebebf2bad9aa0dd75b37a58fe6ea
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
e9b131ab270c54bbf67fb4bd9c8e3177
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
f89f2719fb2814d9ab821316dae9862f
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
e9b131ab270c54bbf67fb4bd9c8e3177
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
8cbd4cfebc9ddf583a108de1a69df088
200ecd2657df0197f202f258b45038d8
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
9673dbe632859fa33b8a79d6a3e3fe30
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
4a3af0b7397584c4d450c6f7e83076aa
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
8cbd4cfebc9ddf583a108de1a69df088
e23c1323abc1fc41331b9cdfc40d5856
5f122076e17398b7e21d1762a61e2e0a
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
fb78aed37621262392a4125183d1bfc9
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
61331054d82aeec9a20416759766d9d5
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
68d763bc4c7a9b0da3828e0b77b08b64
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
34ece5ff054feccc5dabe9ae90438f9d
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
3a17ebebf2bad9aa0dd75b37a58fe6ea
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
c87a7eb9283e59571ad0cb0c89a74379
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
2190a721b2dcb17ff693aa5feecb3b58
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
457165130940ceac01160ac0ff924d86
c87a7eb9283e59571ad0cb0c89a74379
e23c1323abc1fc41331b9cdfc40d5856
61331054d82aeec9a20416759766d9d5
9673dbe632859fa33b8a79d6a3e3fe30
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
4a3af0b7397584c4d450c6f7e83076aa
2190a721b2dcb17ff693aa5feecb3b58
d178fac67ec4e9d2724fed6c7b50cd26
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
8cbd4cfebc9ddf583a108de1a69df088
dfc8a2232dc2487a5455bda9fa2d45a1
68d763bc4c7a9b0da3828e0b77b08b64
66975492b6a53cc9a4503c3a1295b6a7
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
3a17ebebf2bad9aa0dd75b37a58fe6ea
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
305d4649e3cb097fb094f8f45abbf0dc
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
8cbd4cfebc9ddf583a108de1a69df088
d178fac67ec4e9d2724fed6c7b50cd26
68d763bc4c7a9b0da3828e0b77b08b64
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
d178fac67ec4e9d2724fed6c7b50cd26
457165130940ceac01160ac0ff924d86
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
200ecd2657df0197f202f258b45038d8
c87a7eb9283e59571ad0cb0c89a74379
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
e23c1323abc1fc41331b9cdfc40d5856
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
66975492b6a53cc9a4503c3a1295b6a7
e9b131ab270c54bbf67fb4bd9c8e3177
68d763bc4c7a9b0da3828e0b77b08b64
3a17ebebf2bad9aa0dd75b37a58fe6ea
61331054d82aeec9a20416759766d9d5
4a3af0b7397584c4d450c6f7e83076aa
8cbd4cfebc9ddf583a108de1a69df088
e23c1323abc1fc41331b9cdfc40d5856
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
4a3af0b7397584c4d450c6f7e83076aa
2190a721b2dcb17ff693aa5feecb3b58
d178fac67ec4e9d2724fed6c7b50cd26
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
34ece5ff054feccc5dabe9ae90438f9d
78de2d97da222954cce639cc4b481050
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
8cbd4cfebc9ddf583a108de1a69df088
66975492b6a53cc9a4503c3a1295b6a7
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
f89f2719fb2814d9ab821316dae9862f
5f122076e17398b7e21d1762a61e2e0a
200ecd2657df0197f202f258b45038d8
200ecd2657df0197f202f258b45038d8
e9b131ab270c54bbf67fb4bd9c8e3177
457165130940ceac01160ac0ff924d86
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
e9b131ab270c54bbf67fb4bd9c8e3177
2190a721b2dcb17ff693aa5feecb3b58
3a17ebebf2bad9aa0dd75b37a58fe6ea
c87a7eb9283e59571ad0cb0c89a74379
305d4649e3cb097fb094f8f45abbf0dc
200ecd2657df0197f202f258b45038d8
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
d178fac67ec4e9d2724fed6c7b50cd26
34ece5ff054feccc5dabe9ae90438f9d
f89f2719fb2814d9ab821316dae9862f
e9b131ab270c54bbf67fb4bd9c8e3177
fb78aed37621262392a4125183d1bfc9
c87a7eb9283e59571ad0cb0c89a74379
f89f2719fb2814d9ab821316dae9862f
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
68d763bc4c7a9b0da3828e0b77b08b64
8cbd4cfebc9ddf583a108de1a69df088
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
305d4649e3cb097fb094f8f45abbf0dc
8cbd4cfebc9ddf583a108de1a69df088
0df9b4e759512f36aaa5c7fd4fb1fba8
e9b131ab270c54bbf67fb4bd9c8e3177
e23c1323abc1fc41331b9cdfc40d5856
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
5f122076e17398b7e21d1762a61e2e0a
34ece5ff054feccc5dabe9ae90438f9d
5d7185a6823ab4fc73f3ea33669a7bae
61331054d82aeec9a20416759766d9d5
305d4649e3cb097fb094f8f45abbf0dc
c87a7eb9283e59571ad0cb0c89a74379
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
305d4649e3cb097fb094f8f45abbf0dc
8cbd4cfebc9ddf583a108de1a69df088
68d763bc4c7a9b0da3828e0b77b08b64
c87a7eb9283e59571ad0cb0c89a74379
457165130940ceac01160ac0ff924d86
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
61331054d82aeec9a20416759766d9d5
dfc8a2232dc2487a5455bda9fa2d45a1
8cbd4cfebc9ddf583a108de1a69df088
305d4649e3cb097fb094f8f45abbf0dc
61331054d82aeec9a20416759766d9d5
457165130940ceac01160ac0ff924d86
8cbd4cfebc9ddf583a108de1a69df088
34ece5ff054feccc5dabe9ae90438f9d
dfc8a2232dc2487a5455bda9fa2d45a1
e9b131ab270c54bbf67fb4bd9c8e3177
e23c1323abc1fc41331b9cdfc40d5856
c87a7eb9283e59571ad0cb0c89a74379
34ece5ff054feccc5dabe9ae90438f9d
68d763bc4c7a9b0da3828e0b77b08b64
e9b131ab270c54bbf67fb4bd9c8e3177
5f122076e17398b7e21d1762a61e2e0a
f89f2719fb2814d9ab821316dae9862f
61331054d82aeec9a20416759766d9d5
e23c1323abc1fc41331b9cdfc40d5856
5f122076e17398b7e21d1762a61e2e0a
68d763bc4c7a9b0da3828e0b77b08b64
5f122076e17398b7e21d1762a61e2e0a
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
d178fac67ec4e9d2724fed6c7b50cd26
293f56083c20759d275db846c8bfb03e
293f56083c20759d275db846c8bfb03e
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
d178fac67ec4e9d2724fed6c7b50cd26
293f56083c20759d275db846c8bfb03e
293f56083c20759d275db846c8bfb03e
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
61331054d82aeec9a20416759766d9d5
2190a721b2dcb17ff693aa5feecb3b58
d178fac67ec4e9d2724fed6c7b50cd26
293f56083c20759d275db846c8bfb03e
293f56083c20759d275db846c8bfb03e
f89f2719fb2814d9ab821316dae9862f
c87a7eb9283e59571ad0cb0c89a74379
```
- Theo như phần mô tả thì dùng công cụ quipqiup(một công cụ tự động để phân tích tần số và phá vỡ các mật mã thay thế)
- Để làm bài dạng thay thế này thì đầu tiên mình theo các dòng ciphertext thành các chữ cái ngẫu nhiên và bỏ vô tool quipqiup
( https://quipqiup.com/)
- Hình thứ nhất này mình đếm số lần xuất hiện của các dòng, ở đây có tất cả 30 dòng mà bảng chữ cái chỉ có 26 chữ cái thì mình nghĩ form flag có các kí tự: *{* *_* *}* *'* và số lần xuất hiện tương ứng là 1 4 1 2. Mình đã biết được 4 kí tự của đoạn tin nhắn rồi.

- Hình thứ hai này là đoạn mình thay chữ cái random như hình 1 vào ciphertext

- Hình thứ ba này mình cho đoạn mình đã thay vào tool và được một đoạn chữ. Mình thấy có một số từ có nghĩa như từ ciphers và subtitution is weak


- Tới đây mình sài tool Substitution Cipher https://www.dcode.fr/substitution-cipher
- Mình bắt đầu thay thế từng chữ mình biết được 
mình thấy có một đoạn khá giống form flag và mình bắt đầu đối chiếu từ hình 1 và thay chữ.



- Chúng ta đã có được flag:

HTB{A_SIMPLE_SUBSTITUTION_IS_WEAK}
### Multipage Recyclings

Tải các file về:
source.py:
```
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import random, os
FLAG = b'HTB{??????????????????????}'
class CAES:
def __init__(self):
self.key = os.urandom(16)
self.cipher = AES.new(self.key, AES.MODE_ECB)
def blockify(self, message, size):
return [message[i:i + size] for i in range(0, len(message), size)]
def xor(self, a, b):
return b''.join([bytes([_a ^ _b]) for _a, _b in zip(a, b)])
def encrypt(self, message):
iv = os.urandom(16)
ciphertext = b''
plaintext = iv
blocks = self.blockify(message, 16)
for block in blocks:
ct = self.cipher.encrypt(plaintext)
encrypted_block = self.xor(block, ct)
ciphertext += encrypted_block
plaintext = encrypted_block
return ciphertext
def leak(self, blocks):
r = random.randint(0, len(blocks) - 2)
leak = [self.cipher.encrypt(blocks[i]).hex() for i in [r, r + 1]]
return r, leak
def main():
aes = CAES()
message = pad(FLAG * 4, 16)
ciphertext = aes.encrypt(message)
ciphertext_blocks = aes.blockify(ciphertext, 16)
r, leak = aes.leak(ciphertext_blocks)
with open('output.txt', 'w') as f:
f.write(f'ct = {ciphertext.hex()}\nr = {r}\nphrases = {leak}\n')
if __name__ == "__main__":
main()
```
output.txt:
```
ct = bc9bc77a809b7f618522d36ef7765e1cad359eef39f0eaa5dc5d85f3ab249e788c9bc36e11d72eee281d1a645027bd96a363c0e24efc6b5caa552b2df4979a5ad41e405576d415a5272ba730e27c593eb2c725031a52b7aa92df4c4e26f116c631630b5d23f11775804a688e5e4d5624
r = 3
phrases = ['8b6973611d8b62941043f85cd1483244', 'cf8f71416111f1e8cdee791151c222ad']
```
- Mô tả:

- Đoạn code sẽ tạo một iv ngẫu nhiên độ dài 16bytes đem mã hóa AES rồi đem xor với messblock1 được En_block1. Tiếp đó họ lấy En_block1 mã hóa qua AES rồi xor cho với messblock2 được En_block2 và cứ tiếp tục như thế.
- Ở đây họ sẽ cho chúng ta hai khối leak ngẫu nhiên cụ thể ở đây là leak3 và leak4.
- Leck3 ở đây tức là đoạn En_block2 mã hóa qua AES và tương tự Leck4 cũng là mã hóa AES của En_block4 nên chúng ta có thể dễ dàng tìm được messblock3 và 4 bằng cách xor ngược lại.
solved.py:
```
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from pwn import *
leak3='8b6973611d8b62941043f85cd1483244'
leak3=bytes.fromhex(leak3)
leak4='cf8f71416111f1e8cdee791151c222ad'
leak4=bytes.fromhex(leak4)
ct="bc9bc77a809b7f618522d36ef7765e1cad359eef39f0eaa5dc5d85f3ab249e788c9bc36e11d72eee281d1a645027bd96a363c0e24efc6b5caa552b2df4979a5ad41e405576d415a5272ba730e27c593eb2c725031a52b7aa92df4c4e26f116c631630b5d23f11775804a688e5e4d5624"
ct=bytes.fromhex(ct)
messblock3=xor(leak3,ct)
messblock4=xor(leak4,ct)
print(messblock3)
print(messblock4)
```
- Sau khi in ra kết quả mình thấy ở messblock4 có đoạn form flag và messblock3 có đoạn ở giữa flag

- Mình kết hợp và xem xét độ dài của flag thì mình ghép chúng lại và được flag:
#HTB{CFB_15_w34k
#_w34k_w17h_l34kz9
#HTB{CFB_15_w34k_w17h_l34kz}
### Inside The Matrix

Tải file về:
sever.py:
```
from sage.all_cmdline import *
# from utils import ascii_print
import os
FLAG = b"HTB{????????????????????}"
assert len(FLAG) == 25
class Book:
def __init__(self):
self.size = 5
self.prime = None
def parse(self, pt: bytes):
pt = [b for b in pt]
return matrix(GF(self.prime), self.size, self.size, pt)
def generate(self):
key = os.urandom(self.size**2)
return self.parse(key)
def rotate(self):
self.prime = random_prime(2**6, False, 2**4)
def encrypt(self, message: bytes):
self.rotate()
key = self.generate()
message = self.parse(message)
ciphertext = message * key
return ciphertext, key
def menu():
print("Options:\n")
print("[L]ook at page")
print("[T]urn page")
print("[C]heat\n")
option = input("> ")
return option
def main():
book = Book()
ciphertext, key = book.encrypt(FLAG)
page_number = 1
while True:
option = menu()
if option == "L":
# ascii_print(ciphertext, key, page_number)
print(ciphertext, key, page_number)
elif option == "T":
ciphertext, key = book.encrypt(FLAG)
page_number += 2
print()
elif option == "C":
print(f"\n{list(ciphertext)}\n{list(key)}\n")
else:
print("\nInvalid option!\n")
if __name__ == "__main__":
try:
main()
except Exception as e:
print(f"An error occurred: {e}")
```
- Mình kết nối tới sever và lấy về ciphertext và key như hình dưới.






- Đọc source ta thấy ban đầu họ lấy random một số nguyên tố dao động từ 2^4 đến 2^6. Tạo ngẫu nhiên một key và phân tích nó thành ma trận 5x5. Chuyển massage thành ma mận 5x5. Sau đó thực hiện phép nhân massge với key và trả về ciphertext và key.
- Ở đây ta có ciphertext và key, mình sẽ gọi là c và k .Do c=flag * k nên chúng ta có thể tính flag bằng cách nhân c với k nghịch đảo.
`c= flag * k <=> flag = c * k_inv `
- Hàm parse nhận vào một chuỗi bytes pt và trả về một ma trận trong trường số nguyên modulo prime.

Vì vậy muốn tính được flag ta cần tính prime. Do prime phạm vi nhỏ nên chúng ta có thể brute-force nó.
`prime= [17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61]`
Tuy nhiên phần tử ma trận được phân tích cú pháp đã được giảm theo modulo của phần tử đã chọn prime nên parse ma trận của flag không còn giá trị ban đầu. Vì vậy chúng ta có thể sử dụng định lý thặng dư Trung Hoa để khôi phục flag ban đầu.
```
x[i]=flag[i] mod p1
x[i]=flag[i] mod p2
x[i]=flag[i] mod p3
```
sage script:
```
import numpy as np
from sympy.ntheory.modular import crt
from sage.all import *
primes = [17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61]
c1=[(3, 17, 47, 0, 18), (19, 36, 43, 18, 8), (27, 0, 36, 30, 16), (24, 51, 38, 11, 13), (46, 21, 14, 13, 17)]
k1=[(38, 15, 17, 31, 12), (51, 24, 29, 52, 49), (43, 36, 44, 58, 25), (6, 45, 51, 8, 14), (15, 37, 40, 32, 31)]
c2=[(4, 6, 5, 5, 2), (3, 4, 7, 0, 10), (0, 9, 6, 3, 12), (5, 5, 7, 0, 16), (5, 4, 16, 2, 10)]
k2=[(2, 13, 12, 3, 8), (13, 5, 2, 13, 0), (12, 15, 7, 6, 7), (16, 3, 14, 14, 4), (9, 16, 6, 5, 6)]
c3=[(33, 2, 25, 31, 22), (51, 50, 40, 41, 14), (27, 36, 14, 48, 16), (51, 14, 32, 26, 32), (51, 20, 41, 30, 5)]
k3=[(17, 36, 50, 16, 35), (37, 43, 0, 52, 42), (48, 27, 3, 7, 24), (1, 50, 16, 4, 28), (21, 35, 18, 38, 38)]
k1_inv=np.linalg.inv(k1)
k2_inv=np.linalg.inv(k2)
k3_inv=np.linalg.inv(k3)
c1 = Matrix(c1)
c2 = Matrix(c2)
c3 = Matrix(c3)
for p in primes:
ct=Matrix(GF(p),5,5,c1)
key= Matrix(GF(p),5,5,k1)
if key.is_invertible():
flag1=c1*k1_inv
if (72 % p) == int(flag1[0][0]):
p.append(p)
break
for p in primes:
ct=Matrix(GF(p),5,5,c2)
key= Matrix(GF(p),5,5,k2)
if key.is_invertible():
flag2=c2*k2_inv
if (72 % p) == int(flag2[0][0]):
p.append(p)
break
for p in primes:
ct=Matrix(GF(p),5,5,c3)
key= Matrix(GF(p),5,5,k3)
if key.is_invertible():
flag3=c3*k3_inv
if (72 % p) == int(flag3[0][0]):
p.append(p)
break
flag1 = flag1.list()
flag2 = flag2.list()
flag3 = flag3.list()
for i in range(25):
flag_char = crt(p,[int(flag1[i]),int(flag2[i]), int(flag3[i])])[0]
flag= chr(flag_char,end='')
print(flag)
#HTB{l00k_@t_7h3_st4rs!!!}
```
Flag: HTB{l00k_@t_7h3_st4rs!!!}