babytea
一轮8位加密
先对输入的前4位进行异或0x1234567
在对输入的后4位进行异或0x89ABCDEF
对del的条件加密为del>>18==0时进行异或0x1234567
到了32时
就把先对输入的前4位作为异或的xor1
先对输入的后4位进行异或xor2
逻辑整理下那么就是
void encrypt(uint32_t* v, uint32_t* k,int n) {
int nCount=0;
for(int j=0;j<n;j+=2){
uint32_t v0 = v[j]^xor1, v1 = v[j+1]^xor2, sum = 0, i;
uint32_t delta = 0x9E3779B1;
uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];
// printf("0x%0x,0x%0x,",xor1,xor2);
for (i = 0; i < 32; i++) {
sum += delta;
if(sum>>0x1f==0)
{
sum^=0x1234567;
}
v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1);
v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3);
}
v[j] = v0; v[j+1] = v1;
xor1=v0;
xor2=v1;
}
}
那么EXP为
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#include <stdint.h>
#include"IDA_use.h"
unsigned int sum[] = { 0x9e3779b1,0x3d4db605,0xdb852fb6,0x789fec00,0x17f420d6,0xb62b9a87,0x5540515f,0xf377cb10,0x91af44c1,0x2ec5fb15,0xccfd74c6,0x6a17ab10,0x96c61a6,0xa7a3db57,0x44f8106f,0xe32f8a20,0x816703d1,0x1ebd38e5,0xbcf4b296,0x5a0f6920,0xf846e2d1,0x967e5c82,0x35969354,0xd3ce0d05,0x7326c3d1,0x107d78e5,0xaeb4f296,0x4dcf2920,0xec06a2d1,0x8a3e1c82,0x2956d354,0xc78e4d05, };
unsigned int xor4[] = { 0x1234567,0x89ABCDEF, 0x5e27b530,0xbdbef7f3,0xe3516a8f,0x5d836cfe,0xd83dfa09,0x8efc737a,0x55a853a3,0x7a564ec5, };
void decrypt(uint32_t* v, uint32_t* k) {
for (int j = 0; j < 8; j += 2)
{
uint32_t v0 = v[j], v1 = v[j + 1], i;
uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];
for (i = 31; i!=-1; i--)
{
v1 -= ((v0 << 4) + k2) ^ (v0 + sum[i]) ^ ((v0 >> 5) + k3);
v0 -= ((v1 << 4) + k0) ^ (v1 + sum[i]) ^ ((v1 >> 5) + k1);
}
v[j] = v0 ^ xor4[j]; v[j + 1] = v1 ^ xor4[j + 1];
}
}
int main()
{
char enc[33] = {
0x30, 0xB5, 0x27, 0x5E, 0xF3, 0xF7, 0xBE, 0xBD, 0x8F, 0x6A, 0x51, 0xE3, 0xFE, 0x6C, 0x83, 0x5D,
0x09, 0xFA, 0x3D, 0xD8, 0x7A, 0x73, 0xFC, 0x8E, 0xA3, 0x53, 0xA8, 0x55, 0xC5, 0x4E, 0x56, 0x7A,
0
};
unsigned int key[4] = {
0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476
};
decrypt( (unsigned int*)enc, key);
for (int i = 0; i < 32; i++)
{
printf("%c", enc[i] & 0xff);//600d_y0u_r34lly_kn0w_734_4nd_53h
}
}
babaysmc
提示也很明显了smc
flag分前后16位校验
观察函数头机器码,与其异或机器码比较,确定flag的第一个值是2^下面机器码
同样确定另外的一个参数33
#include <idc.idc>
static xor_setp4(){
auto addr = 0x00401850; //这里填入要解密字节串的起始地址
auto i = 0;
for(i=0;addr+i<0x00401850 +256;i++) //循环结束的条件为字节串的结束地址
{
PatchByte(addr+i,Byte(addr+i)^0x2^33); //异或的数字根据情况修改
}
}
static main()
{
xor_setp4();
}
#include <idc.idc>
static xor_setp4(){
auto addr = 0x4017C0; //这里填入要解密字节串的起始地址
auto i = 0;
for(i=0;addr+i<0x4017C0+256;i++) //循环结束的条件为字节串的结束地址
{
PatchByte(addr+i,Byte(addr+i)^33); //异或的数字根据情况修改
}
}
static main()
{
xor_setp4();
}
from z3 import *
s=Solver()
inp=[BitVec(f'{i}',32) for i in range(16)]
for i in inp:
s.add(i<257)
s.add(i>=0)
enc1=[0x0002A81A, 0x00028D44, 0x00022653, 0x0002E993, 0x000249B5, 0x00024265, 0x0003253D, 0x0002D77B, 0x000282C8, 0x00022892, 0x0002BD54, 0x0002482E, 0x00024C1F, 0x00028127, 0x0001E62E, 0x0001F009]
enc2=[0x00027FC8, 0x00029049, 0x0003336C, 0x0002C6A7, 0x00036CB0, 0x0001F2BB, 0x00035262, 0x0002AEDF, 0x0002955E, 0x0002EE10, 0x0002B057, 0x0002FDE8, 0x00029B92, 0x00035842, 0x000294D2, 0x0002B984]
s.add(enc2[0] == 159 * inp[8]+ 109 * inp[12]+ 14 * inp[0]+ 92 * inp[14]+ 211 * inp[4]+ 178 * inp[7]+ 57 * inp[2]+ 175 * inp[5]+ 170 * inp[11]+ 59 * inp[6]+ 200 * inp[9]+ 5 * inp[15]+ 48 * inp[13]+ 28 * inp[3]+ 18 * inp[10]+ 228 * inp[1])
s.add(enc2[6] == 173 * inp[11]+ 34 * inp[5]+ 69 * inp[4]+ 216 * inp[14]+ 225 * inp[9]+ 160 * inp[1]+ 207 * inp[10]+ 175 * inp[7]+ 121 * inp[0]+ 122 * inp[2]+ 179 * inp[12]+ 91 * inp[13]+ 181 * inp[8]+ 93 * inp[3]+ 121 * inp[6]+ 12 * inp[15])
s.add(enc2[8] == 215 * inp[11]+ 164 * inp[5]+ 97 * inp[2]+ 99 * inp[3]+ 188 * inp[4]+ (inp[9] << 7)+ 214 * inp[6]+ 106 * inp[8]+ 169 * inp[0]+ 28 * inp[14]+ 18 * inp[12]+ inp[1]+ 177 * inp[10]+ 114 * inp[7]+ 176 * inp[15]+ 25 * inp[13])
s.add(enc2[9] == 175 * inp[14] + 42 * inp[4] + 214 * inp[12] + 43 * inp[13] + 147 * inp[6] + 53 * inp[10] + 12 * inp[1] + 213 * inp[7] + 241 * inp[9] + 223 * inp[5] + 65 * inp[3] + 42 * inp[15] + 131 * inp[2] + 81 * inp[0] + 92 * inp[11] + 110 * inp[8])
s.add(enc2[13] == 57 * inp[0]+ 109 * inp[7]+ 60 * inp[2]+ 228 * inp[13]+ 166 * inp[4]+ 236 * inp[9]+ 100 * inp[6]+ 179 * inp[11]+ 20 * inp[12]+ 45 * inp[8]+ 204 * inp[3]+ 182 * inp[14]+ 84 * inp[10]+ 170 * inp[15]+ 199 * inp[5]+ 138 * inp[1])
s.add(enc2[10] == 98 * inp[11]+ 122 * inp[9]+ 237 * inp[12]+ 117 * inp[0]+ 34 * inp[3]+ 168 * inp[8]+ 135 * inp[10]+ 119 * inp[6]+ 91 * inp[2]+ 161 * inp[15]+ 152 * inp[7]+ 186 * inp[4]+ 187 * inp[13]+ 72 * inp[14]+ 36 * inp[5]+ 171 * inp[1])
s.add(enc2[7] == 184 * inp[9]+ 112 * inp[0]+ 107 * inp[11]+ 170 * inp[13]+ 55 * inp[8]+ 85 * inp[14]+ 212 * inp[10]+ 173 * inp[15]+ 166 * inp[12]+ 142 * inp[4]+ 202 * inp[5]+ 63 * inp[2]+ 30 * inp[7]+ 175 * inp[3]+ 217 * inp[6]+ 63 * inp[1])
s.add(enc2[15] == (inp[7] << 6) + 228 * inp[4] + 90 * inp[11] + 85 * inp[3] + 196 * inp[6] + 219 * inp[0] + 93 * inp[14] + 183 * inp[15] + 156 * inp[12] + 197 * inp[8] + 119 * inp[13] + 36 * inp[10] + 205 * inp[2] + 94 * inp[9] + 153 * inp[5])
s.add(enc2[5] == 9 * inp[4] + (inp[5] << 6) + 62 * inp[1] + 58 * inp[7] + 100 * inp[13] + 137 * inp[11] + 6 * inp[0] + 119 * inp[9] + 180 * inp[6] + 228 * inp[8] + 88 * inp[12] + 107 * inp[15] + 56 * inp[14] + 207 * inp[2] + 248 * inp[10] + 150 * inp[3])
s.add(enc2[3] == 38 * inp[7]+ 194 * inp[4]+ 105 * inp[0]+ 150 * inp[6]+ 75 * inp[1]+ 89 * inp[15]+ 99 * inp[14]+ 98 * inp[3]+ 91 * inp[8]+ 178 * inp[12]+ 117 * inp[2]+ 48 * inp[13]+ 239 * inp[10]+ 233 * inp[11]+ 63 * inp[5]+ 250 * inp[9])
s.add(enc2[11] == 30 * inp[8] + 13 * inp[5] + 206 * inp[3] + 234 * inp[15] + 71 * inp[7] + 239 * inp[12] + 141 * inp[10] + 179 * inp[13] + 113 * inp[14] + 181 * inp[9] + 52 * inp[6] + 74 * inp[11] + 168 * inp[4] + 239 * inp[1] + 164 * inp[0] + 179 * inp[2])
s.add(enc2[14] == 211 * inp[1] + 74 * inp[5] + 144 * inp[8] + 234 * inp[0] + 241 * inp[2] + 157 * inp[11] + 25 * inp[15] + 6 * inp[10] + 243 * inp[6] + 107 * inp[9] + 77 * inp[12] + 127 * inp[4] + 67 * inp[7] + 13 * inp[14] + 151 * inp[3] + 127 * inp[13])
s.add(enc2[2] == 209 * inp[9]+ 110 * inp[7]+ 22 * inp[10]+ 102 * inp[11]+ 187 * inp[1]+ 58 * inp[8]+ 236 * inp[6]+ 146 * inp[13]+ 205 * inp[15]+ 63 * inp[2]+ 211 * inp[4]+ 152 * inp[3]+ 82 * inp[14]+ 14 * inp[5]+ 49 * inp[12]+ 251 * inp[0])
s.add(enc2[12] == 230 * inp[0]+ 27 * inp[3]+ 186 * inp[10]+ 58 * inp[7]+ 121 * inp[1]+ 59 * inp[14]+ 90 * inp[12]+ 40 * inp[2]+ 230 * inp[11]+ 25 * inp[6]+ 198 * inp[5]+ 81 * inp[4]+ 71 * inp[13]+ 180 * inp[8]+ 149 * inp[9]+ 73 * inp[15])
s.add(enc2[4] == 188 * inp[5]+ 80 * inp[1]+ 221 * inp[6]+ (inp[12] << 6)+ 230 * inp[3]+ 123 * inp[8]+ 124 * inp[11]+ 253 * inp[0]+ 202 * inp[10]+ 63 * inp[2]+ 40 * inp[7]+ 109 * inp[9]+ 195 * inp[15]+ 199 * inp[13]+ 82 * inp[4]+ 225 * inp[14])
s.add(enc2[1] == 236 * inp[15] + 44 * inp[14] + 214 * inp[13] + 52 * inp[8] + 37 * inp[6] + 101 * inp[9] + 244 * inp[10] + 238 * inp[11] + 109 * inp[0] + 188 * inp[1] + 20 * inp[3] + 87 * inp[7] + 93 * inp[4] + 158 * inp[5] + 105 * inp[12] + 3 * inp[2])
print(s.check())
if s.check()==sat:
m=s.model()
inp=[BitVec(f'{i}',32) for i in range(16)]
for i in inp:
print(m[i].as_long(),end=' ')
#sat
#186 42 51 45 71 51 42 186 25 186 42 114 11 124 209 51
from z3 import *
s=Solver()
inp=[BitVec(f'{i}',32) for i in range(16)]
for i in inp:
s.add(i<257)
s.add(i>=0)
enc1=[0x0002A81A, 0x00028D44, 0x00022653, 0x0002E993, 0x000249B5, 0x00024265, 0x0003253D, 0x0002D77B, 0x000282C8, 0x00022892, 0x0002BD54, 0x0002482E, 0x00024C1F, 0x00028127, 0x0001E62E, 0x0001F009]
enc2=[0x00027FC8, 0x00029049, 0x0003336C, 0x0002C6A7, 0x00036CB0, 0x0001F2BB, 0x00035262, 0x0002AEDF, 0x0002955E, 0x0002EE10, 0x0002B057, 0x0002FDE8, 0x00029B92, 0x00035842, 0x000294D2, 0x0002B984]
s.add(enc1[12] == 199 * inp[9] + 98 * inp[7] + 192 * inp[8] + 23 * inp[12] + 79 * inp[14] + 77 * inp[10] + 185 * inp[13] + 135 * inp[15] + 119 * inp[4] + 54 * inp[0] + 41 * inp[1] + 124 * inp[6] + 18 * inp[2] + 181 * inp[11] + 191 * inp[5] + 7 * inp[3])
s.add(enc1[3] == 210 * inp[11] + 26 * inp[15] + 169 * inp[0] + 177 * inp[13] + inp[6] + 205 * inp[8] + 223 * inp[10] + 32 * inp[5] + 225 * inp[3] + 61 * inp[14] + 72 * inp[1] + 186 * inp[9] + 253 * inp[12] + 205 * inp[2] + 49 * inp[4] + 232 * inp[7])
s.add(enc1[13] == 192 * inp[3] + 22 * inp[10] + 175 * inp[1] + 184 * inp[7] + 116 * inp[15] + 70 * inp[13] + 153 * inp[14] + 119 * inp[0] + 217 * inp[6] + 123 * inp[5] + 17 * inp[2] + 244 * inp[12] + 116 * inp[8] + 46 * inp[4] + 19 * inp[9] + 130 * inp[11])
s.add(enc1[7] == 41 * inp[12] + 71 * inp[7] + 185 * inp[1] + 69 * inp[11] + 142 * inp[8] + 221 * inp[5] + 24 * inp[3] + 208 * inp[6] + 41 * inp[9] + 159 * inp[2] + 231 * inp[14] + 235 * inp[13] + 225 * inp[0] + (inp[4] << 6) + 162 * inp[10] + 134 * inp[15])
s.add(enc1[11] == 36 * inp[12] + 220 * inp[4] + 110 * inp[13] + 45 * inp[7] + 123 * inp[9] + 133 * inp[1] + 101 * inp[5] + 137 * inp[10] + 102 * inp[0] + 227 * inp[14] + 94 * inp[15] + 18 * inp[2] + 22 * inp[6] + 189 * inp[11] + 218 * inp[8])
s.add(enc1[15] == 86 * inp[11] + 31 * inp[9] + 229 * inp[6] + 27 * inp[3] + 6 * inp[12] + 13 * inp[10] + 158 * inp[1] + 89 * inp[7] + 35 * inp[15] + 126 * inp[8] + 165 * inp[13] + 220 * inp[0] + 138 * inp[5] + 100 * inp[4] + 84 * inp[14] + 175 * inp[2])
s.add(enc1[8] == 7 * inp[1] + 28 * inp[8] + 131 * inp[10] + 6 * inp[6] + 254 * inp[0] + 130 * inp[13] + 124 * inp[3] + 55 * inp[12] + 157 * inp[14] + 175 * inp[5] + 140 * inp[4] + 241 * inp[9] + 11 * inp[11] + 211 * inp[2] + 121 * inp[7] + 200 * inp[15])
s.add(enc1[6] == 195 * inp[14] + 197 * inp[13] + 218 * inp[7] + 83 * inp[1] + 98 * inp[2] + 70 * inp[10] + 229 * inp[15] + 148 * inp[11] + 195 * inp[0] + 94 * inp[6] + 211 * inp[12] + 220 * inp[9] + 81 * inp[5] + 253 * inp[8] + 78 * inp[4] + 4 * inp[3])
s.add(enc1[14] == 3 * inp[4]+ 136 * inp[7]+ 156 * inp[3]+ 189 * inp[1]+ 244 * inp[12]+ 157 * inp[15]+ 83 * inp[9]+ 6 * inp[0]+ 113 * inp[6]+ 63 * inp[14]+ 35 * inp[2]+ 22 * inp[8]+ 26 * inp[10]+ 62 * inp[11]+ 98 * inp[5]+ 110 * inp[13])
s.add(enc1[4] == 96 * inp[4] + 248 * inp[8] + 191 * inp[9] + 194 * inp[2] + 154 * inp[1] + 31 * inp[6] + 157 * inp[7] + 248 * inp[13] + 81 * inp[15] + 56 * inp[10] + 52 * inp[0] + 94 * inp[12] + 212 * inp[5] + 83 * inp[3] + 83 * inp[14] + 158 * inp[11])
s.add(enc1[1] == 67 * inp[4] + 220 * inp[2] + 123 * inp[11] + 168 * inp[5] + 23 * inp[12] + 148 * inp[7] + 127 * inp[10] + 194 * inp[1] + 132 * inp[8] + 44 * inp[0] + 60 * inp[13] + 98 * inp[15] + 38 * inp[14] + 245 * inp[9] + 159 * inp[6] + 146 * inp[3])
s.add(enc1[5] == 132 * inp[3] + 10 * inp[7] + 95 * inp[0] + 83 * inp[10] + 99 * inp[1] + 77 * inp[12] + 195 * inp[2] + 47 * inp[6] + 38 * inp[13] + 178 * inp[8] + 74 * inp[4] + 86 * inp[11] + 208 * inp[9] + 240 * inp[14] + 120 * inp[5] + 43 * inp[15])
s.add(enc1[9] == 172 * inp[1] + 110 * inp[2] + 92 * inp[7] + 126 * inp[15] + 91 * inp[0] + 77 * inp[6] + 207 * inp[5] + 249 * inp[11] + 240 * inp[12] + 129 * inp[10] + 6 * inp[13] + 100 * inp[3] + inp[14] + 76 * inp[9] + 127 * inp[4] + 4 * inp[8])
s.add(enc1[10] == 46 * inp[15] + 37 * inp[0] + 3 * inp[3] + 72 * inp[6] + 116 * inp[7] + 186 * inp[1] + 221 * inp[14] + 236 * inp[4] + 79 * inp[2] + 175 * inp[10] + 184 * inp[9] + 160 * inp[11] + 227 * inp[12] + 99 * inp[8] + 71 * inp[13] + 4 * inp[5])
s.add(enc1[0] == 203 * inp[3] + 31 * inp[0] + 11 * inp[14] + 149 * inp[7] + 215 * inp[5] + 206 * inp[1] + 245 * inp[6] + 9 * inp[11] + 16 * inp[10] + 241 * inp[13] + 110 * inp[8] + 175 * inp[2] + 38 * inp[4] + 227 * inp[9] + 208 * inp[12] + 8 * inp[15])
s.add(enc1[2] == 132 * inp[3] + 119 * inp[14] + 26 * inp[8] + 24 * inp[6] + 121 * inp[11] + 235 * inp[2] + 228 * inp[12] + 34 * inp[5] + 37 * inp[15] + 24 * inp[9] + 145 * inp[13] + 199 * inp[4] + 173 * inp[10] + 58 * inp[0] + 246 * inp[7] + 199 * inp[1])
print(s.check())
if s.check()==sat:
m=s.model()
inp=[BitVec(f'{i}',32) for i in range(16)]
for i in inp:
print(m[i].as_long(),end=' ')
sat
90 45 1 51 43 42 186 51 72 179 186 51 113 43 114 72
所以enc为
90 ,45, 1 ,51, 43 ,42, 186, 51, 72, 179 ,186 ,51, 113, 43, 114, 72 ,186 ,42 ,51, 45, 71, 51 ,42 ,186, 25, 186 ,42 ,114, 11 ,124, 209, 51 ,
然后拿到会调用的函数数组中的下标
2 3 5 7 11 13 17 19 23 29
def fun(v2,temp):
x=[]
for i in range(32):
for j in range(256):
if(temp[i]==v2[j]):
x.append(j)
return x
temp=[0]*32
v2=[0x7A, 0x91, 0x9F, 0x23, 0x71, 0xD1, 0x63, 0xDB, 0x59, 0x0A, 0xEC, 0x69, 0xEE, 0x76, 0x5D, 0x64, 0x37, 0x42, 0x8C, 0x0B, 0x3C, 0x5C, 0x80, 0xAD, 0x6A, 0x03, 0x43, 0x93, 0xBC, 0xBF, 0xE3, 0xAF, 0x5A, 0x8A, 0x65, 0x0D, 0x31, 0xDF, 0x3E, 0xA7, 0xE4, 0xDD, 0xB4, 0xB0, 0x56, 0x1C, 0x12, 0xA4, 0x9E, 0xD8, 0x3D, 0x81, 0x60, 0x9A, 0xCB, 0xFA, 0xB1, 0xE0, 0xD3, 0xF4, 0xA2, 0x26, 0x68, 0x90, 0x4B, 0x45, 0x85, 0x20, 0x16, 0xDE, 0xED, 0x4C, 0x6F, 0x34, 0xDC, 0xBE, 0xD2, 0x46, 0x33, 0x14, 0x77, 0xC6, 0xCD, 0xF0, 0xC5, 0xAC, 0x1F, 0xD0, 0x95, 0x97, 0x3F, 0xD7, 0x52, 0xAE, 0xB9, 0xC9, 0x0C, 0xCA, 0x4E, 0xF1, 0xB7, 0x39, 0x7F, 0x27, 0x2B, 0x40, 0x4A, 0x51, 0xA1, 0xCC, 0xCE, 0x6E, 0x70, 0xFF, 0x0E, 0xEF, 0x8E, 0x25, 0xB3, 0x5E, 0x6C, 0xAB, 0x02, 0x49, 0xE9, 0x9B, 0x36, 0x13, 0x9C, 0x04, 0x35, 0xC0, 0xFB, 0x3A, 0x67, 0xB6, 0x9D, 0xC2, 0x73, 0xB5, 0x6D, 0xCF, 0x83, 0x2C, 0x01, 0xC1, 0x10, 0x6B, 0x79, 0x87, 0x5B, 0x57, 0x47, 0xE5, 0x15, 0xF7, 0xA5, 0x74, 0xAA, 0x53, 0x7D, 0x2E, 0xD5, 0xA3, 0x19, 0xF5, 0x2D, 0xFD, 0x61, 0x8D, 0xC8, 0x1B, 0xC3, 0xDA, 0xF6, 0x72, 0x54, 0x5F, 0x1E, 0xE8, 0x17, 0x50, 0xB2, 0xE7, 0x0F, 0x7E, 0x55, 0xBD, 0x86, 0x00, 0x78, 0x94, 0x92, 0x09, 0x2F, 0xD6, 0xD9, 0xF3, 0x29, 0xE6, 0x24, 0x32, 0x66, 0x22, 0x41, 0xC4, 0x7C, 0x05, 0x98, 0x44, 0x4F, 0x99, 0xA9, 0xE1, 0x8F, 0x08, 0x1A, 0x2A, 0x11, 0xEA, 0x3B, 0xE2, 0x38, 0xB8, 0x18, 0xF9, 0xD4, 0xC7, 0x62, 0x7B, 0x75, 0x58, 0x96, 0x28, 0xEB, 0x06, 0x84, 0x89, 0x48, 0x82, 0x88, 0xA6, 0xFE, 0xA0, 0xF2, 0xF8, 0x1D, 0x8B, 0xFC, 0xA8, 0x21, 0x30, 0xBB, 0x07, 0xBA, 0x4D]
v3=[0x45, 0x1F, 0x63, 0x81, 0xE6, 0xAD, 0x4F, 0xD3, 0xC0, 0x15, 0x69, 0x8F, 0x0D, 0x31, 0x0C, 0xB0, 0xF1, 0x2E, 0x98, 0xC1, 0xC2, 0x96, 0xB2, 0xEB, 0xBF, 0xDF, 0x17, 0xF4, 0x7F, 0xE5, 0x66, 0x73, 0xD8, 0x56, 0x46, 0x20, 0x9C, 0x77, 0x3D, 0x72, 0xA3, 0x91, 0x49, 0x68, 0x4C, 0x1E, 0xAE, 0x06, 0x7A, 0x94, 0xDD, 0x52, 0x55, 0x2C, 0xB8, 0x42, 0x79, 0xFE, 0x38, 0xEF, 0x8B, 0xF7, 0xAC, 0xDC, 0xFF, 0x78, 0x34, 0x70, 0xA9, 0xCE, 0x3F, 0x0E, 0x11, 0x43, 0x5B, 0xF8, 0xAF, 0xD0, 0xFA, 0x33, 0xBA, 0xCF, 0x4A, 0xC9, 0x88, 0x4E, 0x80, 0x10, 0x85, 0x37, 0x12, 0xAB, 0xE1, 0x61, 0xB7, 0x3E, 0x4D, 0x19, 0x3A, 0x04, 0x8C, 0x92, 0x0B, 0xE7, 0x3C, 0xEA, 0xC7, 0x16, 0x35, 0xB1, 0xA7, 0x8E, 0x40, 0x9F, 0xB6, 0xB5, 0x25, 0xA0, 0x5A, 0x30, 0x7D, 0xA2, 0x1A, 0x64, 0xC5, 0x6D, 0x74, 0x82, 0x08, 0x7E, 0xD2, 0xF6, 0xAA, 0xDA, 0xED, 0x4B, 0x6E, 0xE8, 0xE9, 0xE2, 0xD4, 0x71, 0xB9, 0x09, 0x84, 0x3B, 0xC4, 0x1C, 0x60, 0xFD, 0x22, 0x99, 0x39, 0x97, 0x18, 0x89, 0x7C, 0xA4, 0x27, 0xBD, 0x0F, 0xCC, 0x95, 0xF5, 0xB3, 0x65, 0x6B, 0x8A, 0x58, 0x36, 0xBB, 0x9E, 0x75, 0xD1, 0x03, 0x9D, 0x6A, 0x6C, 0x53, 0x05, 0xB4, 0xE4, 0xEE, 0x67, 0x87, 0x7B, 0x32, 0x2D, 0x24, 0x2A, 0x59, 0xEC, 0x0A, 0xDB, 0x21, 0x07, 0x23, 0x50, 0x02, 0x41, 0xF2, 0x83, 0xD9, 0x26, 0xBC, 0x6F, 0x86, 0xA6, 0x93, 0xF9, 0xC8, 0xD6, 0xA5, 0x1D, 0xE3, 0xE0, 0xFC, 0xCA, 0x1B, 0x5E, 0x8D, 0x2F, 0x5C, 0xBE, 0x47, 0xA8, 0x44, 0x57, 0x54, 0x48, 0xC3, 0x00, 0x62, 0x5D, 0xCB, 0xD7, 0x76, 0xCD, 0x28, 0xD5, 0x14, 0x90, 0x13, 0xDE, 0x5F, 0xF0, 0x01, 0x2B, 0xC6, 0x29, 0x9A, 0x9B, 0x51, 0xF3, 0xFB, 0xA1]
v5=[0x00, 0x74, 0x59, 0xC6, 0xAC, 0xD3, 0xC1, 0xA0, 0x88, 0x3F, 0x1C, 0x28, 0x17, 0x22, 0xC5, 0x38, 0xF9, 0x1B, 0x21, 0x49, 0x99, 0xAF, 0xD6, 0x95, 0xA4, 0x9D, 0x5D, 0x5B, 0x73, 0xFE, 0xC9, 0x9A, 0x4C, 0xB4, 0x27, 0x5E, 0x71, 0x25, 0xE2, 0x90, 0xC0, 0x62, 0x5F, 0x48, 0x77, 0xE0, 0xF2, 0x8E, 0x40, 0xC7, 0x79, 0x1A, 0xDC, 0xF3, 0x01, 0xB6, 0xD8, 0xB5, 0x67, 0x1E, 0x85, 0x12, 0x68, 0x87, 0xD0, 0x30, 0xEB, 0x2F, 0x50, 0xCF, 0xEE, 0xDD, 0xFB, 0xE6, 0xA5, 0x69, 0x05, 0x75, 0xB7, 0xEF, 0x70, 0x53, 0xFF, 0xBA, 0x80, 0x41, 0x9B, 0xA1, 0x39, 0xF8, 0x65, 0x1F, 0x7A, 0x51, 0x98, 0xAD, 0x02, 0x13, 0x18, 0xC3, 0x31, 0x89, 0xCD, 0xCA, 0x91, 0xD1, 0x78, 0x57, 0x47, 0xB8, 0x54, 0x9F, 0x96, 0x04, 0x23, 0x2B, 0xE5, 0x46, 0x29, 0x7C, 0x76, 0x82, 0xBC, 0xFC, 0x6E, 0xEC, 0xED, 0x64, 0x4A, 0x26, 0x34, 0x5C, 0x19, 0x55, 0xFD, 0x6D, 0xFA, 0x7E, 0xB2, 0xD4, 0xF1, 0xF6, 0xE4, 0x60, 0xB0, 0x52, 0x9E, 0x8F, 0xBB, 0x08, 0x3B, 0x97, 0xE8, 0x10, 0x6C, 0x44, 0x3A, 0x36, 0x35, 0x03, 0xC4, 0x81, 0x9C, 0xAB, 0xCB, 0x66, 0xAA, 0x37, 0xA2, 0xD2, 0xE1, 0xE9, 0x7B, 0x14, 0x8D, 0xD9, 0xF5, 0x0B, 0xC2, 0x07, 0xA8, 0x0D, 0xA3, 0x0A, 0x84, 0x6B, 0x2C, 0xEA, 0x0C, 0xAE, 0x7D, 0x6F, 0xD7, 0xE7, 0xC8, 0x3C, 0x45, 0xCC, 0x58, 0xB9, 0x3D, 0x33, 0x4E, 0x4B, 0x8C, 0xCE, 0x72, 0x6A, 0x8B, 0x2D, 0x24, 0x11, 0xDF, 0x5A, 0x2E, 0x92, 0xDA, 0x86, 0x94, 0xA7, 0xD5, 0x4F, 0x2A, 0xB3, 0x63, 0x61, 0xE3, 0xDE, 0x43, 0x1D, 0xBF, 0x15, 0x32, 0xBE, 0x16, 0x3E, 0x93, 0x7F, 0x83, 0x56, 0x06, 0xF7, 0x8A, 0x20, 0xBD, 0x0E, 0xA6, 0xDB, 0x0F, 0xB1, 0x42, 0xF0, 0x09, 0x4D, 0xA9, 0xF4]
v7=[0x0F, 0xA5, 0xBA, 0x03, 0xF9, 0x69, 0x2A, 0xD7, 0xEA, 0xB5, 0xFC, 0xA1, 0x39, 0x20, 0x68, 0x72, 0x25, 0xB2, 0x6C, 0xAD, 0x88, 0x51, 0x73, 0xEB, 0xCF, 0x13, 0xDE, 0x7C, 0x6D, 0x38, 0x05, 0x09, 0xC2, 0x96, 0x1F, 0x7F, 0x37, 0x4A, 0xC9, 0xE7, 0x6A, 0xB0, 0x59, 0xF7, 0xD2, 0xB9, 0x16, 0xC8, 0xEE, 0xA9, 0x18, 0x80, 0xAC, 0xE3, 0x9E, 0x6F, 0x3C, 0x2F, 0x3E, 0x9A, 0xBE, 0x1D, 0xB4, 0x7B, 0x7D, 0x32, 0x6B, 0x74, 0xC5, 0xC0, 0xC7, 0xD1, 0x29, 0x98, 0xDD, 0xB6, 0x0E, 0x4D, 0xBF, 0x79, 0x0D, 0xDA, 0x7A, 0x17, 0x71, 0x43, 0x87, 0xFF, 0xDC, 0xC6, 0x12, 0xE9, 0x67, 0x2D, 0x70, 0x9F, 0x95, 0x30, 0x26, 0x24, 0x2B, 0xA8, 0xA2, 0xD8, 0x3B, 0x31, 0xA0, 0x3D, 0x4B, 0x90, 0x60, 0x34, 0x75, 0xE8, 0x5D, 0xF4, 0x85, 0xF3, 0xFE, 0x35, 0xCB, 0xB8, 0x02, 0x50, 0xB1, 0xF1, 0x1A, 0x1B, 0x21, 0xCD, 0xC4, 0x7E, 0xED, 0x07, 0xD9, 0xD6, 0x44, 0x15, 0x8E, 0x49, 0xB3, 0x97, 0xE6, 0x63, 0xB7, 0xEF, 0x3A, 0x8F, 0xF2, 0x53, 0x10, 0x77, 0x86, 0xF8, 0x8A, 0x28, 0x3F, 0xD4, 0x4C, 0xE5, 0x82, 0x83, 0xEC, 0x62, 0x89, 0xDF, 0xC3, 0x14, 0xCA, 0xA3, 0x5F, 0x64, 0x47, 0xFD, 0x00, 0x84, 0x66, 0xA7, 0x5A, 0x0C, 0x01, 0xD5, 0x5B, 0x0A, 0x4F, 0x27, 0x78, 0x0B, 0x2E, 0x48, 0x36, 0xFA, 0x08, 0x56, 0xE0, 0xA6, 0xC1, 0x5C, 0x8B, 0x41, 0x06, 0xBB, 0x52, 0x93, 0xAF, 0x2C, 0x5E, 0xF6, 0x61, 0xF0, 0xAB, 0x91, 0x45, 0x04, 0xBD, 0xCC, 0xE4, 0x65, 0x9D, 0x92, 0xCE, 0x40, 0xAE, 0x76, 0x9B, 0x9C, 0xAA, 0x54, 0xD0, 0x1C, 0x81, 0x4E, 0x57, 0x55, 0x23, 0x6E, 0x1E, 0x99, 0xDB, 0xFB, 0xA4, 0x22, 0x19, 0x58, 0x11, 0x8D, 0x94, 0xD3, 0xE2, 0x8C, 0xF5, 0x42, 0x46, 0xBC, 0x33, 0xE1]
v11=[0x38, 0xD9, 0xDA, 0xE6, 0xB5, 0xF1, 0x0B, 0x93, 0x0C, 0x58, 0x0D, 0xAE, 0x0A, 0x85, 0x2A, 0x50, 0xC2, 0xBF, 0xD4, 0x28, 0x52, 0xC4, 0x4F, 0xE1, 0x44, 0xE0, 0xA2, 0x70, 0x36, 0x65, 0x4B, 0x41, 0x9D, 0x5F, 0x05, 0x7C, 0xF7, 0xD7, 0x99, 0x8B, 0xCC, 0xCE, 0x16, 0xBE, 0xB6, 0xC5, 0x8F, 0x79, 0xC7, 0x20, 0x7E, 0xF4, 0xF3, 0x2E, 0x4A, 0x89, 0xD6, 0x0F, 0x6E, 0xB0, 0x61, 0xB1, 0x6D, 0x19, 0x73, 0x03, 0x74, 0xA1, 0x40, 0xEC, 0xC0, 0x57, 0x94, 0x7A, 0x66, 0xD5, 0xEA, 0x17, 0x6A, 0x84, 0x37, 0xED, 0xF6, 0x13, 0x31, 0x5B, 0x82, 0x1E, 0xFC, 0x92, 0xE2, 0x42, 0x86, 0xBA, 0xE3, 0x91, 0x7F, 0x67, 0x5C, 0x98, 0x15, 0x22, 0x8D, 0x80, 0x04, 0xE4, 0x25, 0x09, 0xA0, 0xAD, 0x63, 0xE5, 0xB4, 0x9A, 0x3C, 0xA3, 0x3A, 0x69, 0xF8, 0xCD, 0xBC, 0x88, 0x55, 0xB2, 0xBD, 0x6B, 0x77, 0x71, 0xB3, 0xD3, 0x90, 0x75, 0x06, 0x49, 0xC3, 0x32, 0x4D, 0x1D, 0xA8, 0xAA, 0xFB, 0x7B, 0x7D, 0x2B, 0xA6, 0x34, 0x72, 0x47, 0xF0, 0x2F, 0x9C, 0x08, 0x00, 0x14, 0x8C, 0x26, 0x5E, 0x87, 0xD1, 0xCF, 0xC9, 0x18, 0x51, 0x23, 0xCB, 0xF5, 0x1C, 0x9F, 0x97, 0xF9, 0xBB, 0xA7, 0x39, 0x45, 0x02, 0xFD, 0x46, 0x8A, 0x54, 0xA4, 0x8E, 0x9E, 0x68, 0x96, 0x0E, 0x78, 0xB8, 0x3D, 0x11, 0x64, 0xAF, 0x10, 0xDE, 0x6C, 0x60, 0x5A, 0x76, 0x1A, 0xE9, 0xC1, 0x3E, 0xCA, 0x9B, 0x27, 0x30, 0xEF, 0xFF, 0x07, 0xD2, 0xB9, 0x2D, 0xD0, 0xEE, 0x83, 0xAB, 0xF2, 0x4C, 0xA5, 0x21, 0x62, 0x81, 0x33, 0x1B, 0xD8, 0x6F, 0xAC, 0x3B, 0x5D, 0xE8, 0xFA, 0x3F, 0xDB, 0x95, 0xE7, 0x59, 0x12, 0x48, 0x35, 0xC6, 0x2C, 0x4E, 0x01, 0xDD, 0x43, 0x29, 0xDC, 0x24, 0x1F, 0xB7, 0xA9, 0xEB, 0xC8, 0xFE, 0x56, 0xDF, 0x53]
v13=[0xB0, 0x28, 0x0B, 0x89, 0x4B, 0xA4, 0xBE, 0x1A, 0x8F, 0x6C, 0xCF, 0xB2, 0xB5, 0xFE, 0xFB, 0x59, 0x2D, 0x29, 0x39, 0x62, 0x97, 0xAA, 0xD7, 0x7D, 0x94, 0x2C, 0xFC, 0x5D, 0xB4, 0x7C, 0x8A, 0x82, 0xD3, 0xA7, 0xBA, 0xDF, 0x21, 0xE6, 0xA2, 0xD0, 0xE8, 0xF0, 0x67, 0x3A, 0xB9, 0x98, 0xF9, 0xAE, 0xD1, 0x56, 0xD8, 0xCA, 0x10, 0xEA, 0x92, 0xA8, 0x75, 0x7E, 0x65, 0xA9, 0xAF, 0x51, 0xC9, 0x8E, 0xD4, 0x77, 0xE4, 0x49, 0x06, 0x61, 0x9E, 0x24, 0xD9, 0x9B, 0x11, 0x05, 0x1D, 0x96, 0x9A, 0xB1, 0xE0, 0x83, 0xE1, 0x1C, 0xCD, 0xF3, 0x38, 0xB3, 0x57, 0x50, 0xF4, 0xAC, 0xEB, 0x14, 0xA5, 0x46, 0xF6, 0x93, 0xAD, 0x7B, 0x30, 0xEF, 0x79, 0x17, 0x47, 0xDA, 0xC0, 0xDD, 0xDE, 0xDC, 0x5A, 0x76, 0x3B, 0x31, 0x0D, 0x0E, 0x86, 0xF1, 0x71, 0xFA, 0x0C, 0x00, 0xA3, 0xBF, 0x64, 0x37, 0x22, 0xD2, 0x69, 0x5C, 0xC6, 0x16, 0x9F, 0x5E, 0x7A, 0x1E, 0x27, 0x60, 0x6E, 0xF8, 0x8C, 0xEE, 0xC2, 0x74, 0x81, 0x8B, 0x33, 0x03, 0xBD, 0x2A, 0x0A, 0x68, 0x6B, 0x3F, 0x4C, 0xC3, 0x15, 0x04, 0x3D, 0x63, 0xF5, 0xAB, 0xCC, 0x3C, 0x53, 0x20, 0x66, 0xC4, 0xC1, 0x23, 0xE7, 0x25, 0x55, 0xC7, 0xED, 0xB7, 0xBC, 0xCB, 0x8D, 0x09, 0xCE, 0x52, 0xBB, 0xE2, 0xC5, 0xB6, 0x26, 0x12, 0x2F, 0x99, 0x58, 0x40, 0x6D, 0xA1, 0x3E, 0x48, 0x85, 0xA6, 0xF2, 0x0F, 0x43, 0x78, 0xB8, 0x01, 0xE5, 0xD5, 0x6F, 0x4E, 0xF7, 0x13, 0x42, 0xEC, 0x45, 0x2B, 0x4F, 0x36, 0xDB, 0x9C, 0xE3, 0x44, 0x34, 0x84, 0x73, 0x2E, 0x7F, 0xFD, 0x91, 0x41, 0xD6, 0x95, 0x18, 0xFF, 0x70, 0xC8, 0x02, 0x5F, 0x08, 0x1B, 0x6A, 0x5B, 0x19, 0xA0, 0x4D, 0x35, 0x54, 0xE9, 0x32, 0x88, 0x72, 0x07, 0x87, 0x90, 0x4A, 0x80, 0x1F, 0x9D]
v17=[0xE8, 0x22, 0x64, 0x9F, 0xC5, 0xD5, 0x25, 0xC9, 0x5D, 0xDF, 0xA1, 0x74, 0xCB, 0x57, 0xF7, 0xF0, 0xBD, 0x56, 0xFF, 0x33, 0x79, 0xFE, 0x87, 0xB6, 0xB1, 0x54, 0x10, 0x95, 0x8A, 0xEC, 0x7B, 0x48, 0x84, 0x3D, 0x30, 0xEF, 0x86, 0xFA, 0x97, 0x1C, 0xDC, 0xA9, 0x5A, 0xF3, 0x67, 0x18, 0x83, 0x72, 0x06, 0xB9, 0xF5, 0x05, 0x68, 0x59, 0xF2, 0xE4, 0x88, 0x5E, 0x14, 0x17, 0x11, 0x9C, 0xAB, 0xDE, 0xEB, 0x7D, 0x62, 0x9B, 0xD6, 0xF4, 0x01, 0x29, 0xBC, 0xC0, 0x69, 0xA2, 0x2B, 0x0D, 0x1D, 0x98, 0x6A, 0xBE, 0x65, 0x09, 0xF8, 0x96, 0xB4, 0x6E, 0x63, 0xE3, 0x34, 0x2D, 0xCE, 0x0A, 0xCD, 0xAA, 0x21, 0xCC, 0xE7, 0xA5, 0xDB, 0xD8, 0x03, 0xDD, 0xB2, 0x1F, 0x9D, 0x9E, 0x0E, 0x8F, 0x8B, 0xCA, 0x92, 0x0B, 0xA7, 0x5B, 0xD2, 0xCF, 0x47, 0x07, 0x04, 0xAE, 0x3B, 0xA8, 0x7C, 0x73, 0xF9, 0x35, 0xEE, 0x7A, 0xB0, 0xBA, 0x85, 0x46, 0x3E, 0x81, 0xC7, 0x40, 0x37, 0x15, 0x3A, 0x19, 0xE0, 0x1E, 0x28, 0x4A, 0x4F, 0x8C, 0xD4, 0x51, 0x2E, 0x94, 0x89, 0x2A, 0x0F, 0x7E, 0xE1, 0xC8, 0x5F, 0x4E, 0x6D, 0xF6, 0x49, 0xB8, 0x55, 0x60, 0x82, 0x20, 0x36, 0xC1, 0x0C, 0x1B, 0xC4, 0x00, 0xE5, 0xA3, 0x2C, 0xE9, 0xC2, 0xF1, 0x23, 0x3F, 0xC3, 0xB5, 0x8D, 0xD7, 0x42, 0xFC, 0x50, 0x13, 0xBB, 0x61, 0x9A, 0x44, 0xE6, 0x91, 0x2F, 0x70, 0xC6, 0x6F, 0xD1, 0x27, 0x43, 0x08, 0xDA, 0xFD, 0x52, 0x71, 0x77, 0xED, 0xE2, 0xAD, 0x16, 0x8E, 0x12, 0x4C, 0x31, 0x3C, 0x39, 0x78, 0x90, 0xBF, 0x1A, 0x76, 0x75, 0x41, 0x99, 0xD0, 0x80, 0xB7, 0x66, 0x24, 0xD3, 0x7F, 0x4B, 0x45, 0x5C, 0x53, 0x4D, 0x26, 0x32, 0xA0, 0xFB, 0xB3, 0x38, 0x6B, 0xAF, 0xA6, 0xD9, 0x02, 0xA4, 0xEA, 0x6C, 0xAC, 0x58, 0x93]
v19=[0x91, 0x67, 0x1A, 0xBE, 0xAB, 0xC2, 0x85, 0xD5, 0xDA, 0xCC, 0xF7, 0x5B, 0x54, 0x61, 0x05, 0xDF, 0x02, 0x70, 0x65, 0x69, 0x9A, 0x7A, 0x09, 0x92, 0x5D, 0x2A, 0xA7, 0x37, 0xFF, 0x19, 0xE6, 0x99, 0xF3, 0x1E, 0xBD, 0x82, 0x48, 0x3C, 0xE8, 0xC8, 0x66, 0x17, 0xB7, 0xA9, 0xC5, 0x4E, 0x33, 0x84, 0x45, 0xD3, 0x8B, 0x49, 0x50, 0x43, 0x8F, 0xCD, 0x73, 0x29, 0x04, 0xDC, 0x01, 0x0C, 0xDD, 0x2E, 0xFB, 0x6E, 0x0F, 0x24, 0x57, 0xE9, 0xC9, 0x7D, 0xB3, 0x40, 0x4B, 0x56, 0x6C, 0x68, 0xE2, 0x22, 0xF6, 0x80, 0xAA, 0x95, 0xD4, 0x97, 0x94, 0x21, 0x53, 0xD1, 0xE3, 0x59, 0xD2, 0xED, 0x41, 0x4D, 0x74, 0xA3, 0xA0, 0x32, 0x0D, 0xFC, 0x46, 0x34, 0xFA, 0xB1, 0x5E, 0xC6, 0x71, 0xC0, 0xE0, 0x3F, 0x13, 0x12, 0xD7, 0xEE, 0xF8, 0x26, 0xE1, 0x25, 0x88, 0x77, 0xB0, 0x8D, 0x6A, 0xEA, 0x0E, 0xD6, 0x3E, 0x03, 0x64, 0xBF, 0x8C, 0x96, 0xD9, 0xA4, 0x42, 0xAD, 0xFD, 0x16, 0x5A, 0xE4, 0x06, 0x9D, 0x07, 0x87, 0x5F, 0xAF, 0xDB, 0xC1, 0x93, 0x1C, 0xF1, 0xDE, 0xA6, 0x3A, 0xF4, 0x2C, 0x1B, 0x39, 0xE7, 0x4A, 0xC7, 0x35, 0xFE, 0x0A, 0x62, 0xF0, 0xCA, 0xEC, 0x27, 0x52, 0x23, 0x7F, 0xA5, 0x79, 0x7C, 0x75, 0x86, 0xEB, 0x60, 0xA8, 0xF5, 0x1F, 0x20, 0xC3, 0x63, 0x5C, 0x72, 0x18, 0xE5, 0x51, 0xAC, 0xB9, 0x90, 0x9F, 0x4C, 0xB2, 0xCB, 0x00, 0x6F, 0x28, 0xA1, 0xB6, 0x9B, 0xD0, 0x7B, 0x36, 0x4F, 0x9C, 0xCF, 0x98, 0x8A, 0x0B, 0x78, 0xB4, 0x7E, 0x2B, 0xEF, 0x58, 0xB5, 0xBA, 0x55, 0xB8, 0x10, 0x2F, 0x44, 0xAE, 0x89, 0x08, 0xC4, 0x3B, 0x9E, 0xF9, 0x6D, 0xF2, 0x15, 0x1D, 0x30, 0x47, 0x8E, 0x31, 0x2D, 0xD8, 0x6B, 0x3D, 0x11, 0x14, 0xA2, 0x83, 0xCE, 0xBB, 0x81, 0xBC, 0x76, 0x38]
v23=[0x38, 0x5A, 0xC7, 0x98, 0x15, 0x6A, 0xC9, 0x28, 0x33, 0xEA, 0xF4, 0xD9, 0xDB, 0x77, 0xB8, 0x49, 0x1B, 0x79, 0xF5, 0xFD, 0x3E, 0xA2, 0xDE, 0x17, 0xC4, 0x5E, 0xE5, 0x11, 0xB6, 0x1D, 0x86, 0xF9, 0x90, 0x78, 0x8A, 0x14, 0x12, 0xB1, 0xC2, 0x21, 0xF1, 0x02, 0x58, 0xA1, 0x23, 0x0C, 0xAD, 0xA5, 0x50, 0x48, 0x1E, 0x6D, 0xF8, 0x96, 0x9D, 0x19, 0x00, 0xBD, 0x26, 0xCE, 0xA7, 0x24, 0x2E, 0x39, 0x7B, 0xFA, 0x5F, 0xCC, 0x1A, 0x0B, 0x40, 0x0F, 0x4B, 0x82, 0xE2, 0x97, 0x10, 0x2A, 0xFC, 0x3B, 0xB2, 0x66, 0x27, 0x54, 0x07, 0xE3, 0x08, 0xA3, 0xA6, 0xED, 0x62, 0x13, 0x9C, 0x20, 0x01, 0x92, 0xE8, 0xAE, 0xBE, 0xE1, 0x0A, 0x41, 0x94, 0x80, 0xA9, 0x2F, 0x29, 0x70, 0x35, 0x16, 0xF7, 0x6B, 0xFE, 0x9E, 0x0D, 0xD3, 0x7F, 0x1F, 0xA0, 0x32, 0xD2, 0x52, 0x05, 0x76, 0x89, 0x9B, 0x7A, 0x8F, 0x99, 0xEF, 0xCF, 0x51, 0x0E, 0xEC, 0x59, 0x5C, 0x37, 0xD5, 0x8E, 0x31, 0x34, 0x2D, 0x93, 0x25, 0x1C, 0xC8, 0x5B, 0x47, 0x9F, 0x03, 0x67, 0x7E, 0x42, 0x7D, 0x3A, 0xAA, 0x57, 0xDA, 0x9A, 0xAB, 0x74, 0x72, 0xE4, 0xB7, 0x5D, 0xCD, 0x87, 0x46, 0x2B, 0x43, 0xF3, 0xD0, 0x85, 0x55, 0xBB, 0xD4, 0xC6, 0x61, 0x56, 0x04, 0x65, 0x7C, 0x88, 0xC3, 0x73, 0xBC, 0xEB, 0xDD, 0x4D, 0xE0, 0xE6, 0xC0, 0x63, 0x8D, 0xF2, 0x81, 0xF6, 0xA8, 0x3D, 0x3F, 0xA4, 0xE9, 0x4A, 0xB5, 0xF0, 0xCA, 0x8B, 0x2C, 0xD7, 0xAC, 0xC5, 0xC1, 0xBF, 0x53, 0xD1, 0x6F, 0x06, 0xE7, 0xD6, 0x09, 0x95, 0x44, 0x71, 0xB9, 0x83, 0x4C, 0x22, 0xAF, 0xB4, 0x75, 0x36, 0x30, 0xCB, 0xEE, 0x91, 0x45, 0x8C, 0x4E, 0x6E, 0x6C, 0x4F, 0x84, 0xBA, 0xFF, 0x64, 0xB3, 0x60, 0xFB, 0xB0, 0x18, 0xD8, 0xDF, 0x3C, 0x68, 0xDC, 0x69]
v29=[0xD1, 0x9C, 0x68, 0xC0, 0x13, 0xAC, 0x48, 0x32, 0xA3, 0xBA, 0x4C, 0xE7, 0x6D, 0xC8, 0x1C, 0xAB, 0xE2, 0x7A, 0x42, 0xE1, 0x7B, 0x16, 0x67, 0x03, 0xAE, 0x7E, 0xAA, 0x38, 0x22, 0x02, 0x39, 0x51, 0xC7, 0x79, 0xD7, 0xCB, 0xEF, 0x62, 0x98, 0xDC, 0x53, 0x72, 0x89, 0xA5, 0x4B, 0xC6, 0x86, 0xF6, 0xFC, 0x77, 0x5A, 0xF5, 0x2E, 0x3D, 0xB2, 0xFE, 0x59, 0x27, 0x80, 0x63, 0xDD, 0x1A, 0x12, 0x5E, 0xED, 0xB0, 0xBC, 0xC4, 0x5F, 0x11, 0xC9, 0x09, 0xC5, 0x75, 0x96, 0x0A, 0x2F, 0x00, 0x17, 0x81, 0x14, 0x47, 0xBB, 0x9D, 0x8E, 0x3C, 0xD6, 0xA1, 0xE0, 0xA2, 0x26, 0x5D, 0x08, 0x6E, 0x4E, 0xF1, 0xCF, 0x73, 0x8A, 0x90, 0x0B, 0xB3, 0x3E, 0xB6, 0x1F, 0xC3, 0xB7, 0xDA, 0x8D, 0x05, 0xEE, 0x18, 0x93, 0x3A, 0x6A, 0x8C, 0x43, 0x8F, 0xEB, 0xE9, 0x5B, 0x29, 0x37, 0x1E, 0x46, 0x33, 0x31, 0xFB, 0x35, 0x34, 0x61, 0x04, 0x0E, 0x2B, 0x74, 0xF9, 0x8B, 0x2C, 0x20, 0x0C, 0x7C, 0x28, 0x5C, 0xCA, 0xE6, 0x6B, 0xD8, 0x30, 0xE4, 0x21, 0x44, 0x70, 0x06, 0xA6, 0x60, 0x41, 0x84, 0x10, 0x95, 0x4F, 0x64, 0x83, 0xD2, 0x9A, 0xBE, 0xAF, 0x9F, 0x07, 0xC1, 0xB8, 0x3B, 0x65, 0xCC, 0x57, 0xB5, 0xD9, 0x92, 0xDE, 0x0D, 0xE3, 0xF3, 0xA4, 0xBD, 0x6F, 0xD3, 0x25, 0x88, 0x71, 0xFF, 0xA9, 0x36, 0xB1, 0x78, 0x24, 0x69, 0xAD, 0x19, 0xBF, 0xFD, 0xCD, 0x4A, 0xEA, 0x87, 0x91, 0xA8, 0x66, 0x82, 0x50, 0x0F, 0x99, 0x45, 0xF2, 0xD5, 0x9B, 0x94, 0x7D, 0xCE, 0xDB, 0xB9, 0x52, 0xE5, 0xF4, 0x01, 0x7F, 0xD4, 0x15, 0x2D, 0x3F, 0x1D, 0xA7, 0xC2, 0xFA, 0x40, 0xE8, 0xA0, 0x55, 0x6C, 0xF7, 0x1B, 0x58, 0x85, 0x56, 0x9E, 0xEC, 0x97, 0x23, 0xF0, 0x4D, 0xD0, 0xF8, 0x2A, 0x49, 0xB4, 0x76, 0x54, 0xDF]
enc=[90 ,45, 1 ,51, 43 ,42, 186, 51, 72, 179 ,186 ,51, 113, 43, 114, 72 ,186 ,42 ,51, 45, 71, 51 ,42 ,186, 25, 186 ,42 ,114, 11 ,124, 209, 51 ,]
enc=fun(v29,enc)
enc=fun(v23,enc)
enc=fun(v19,enc)
enc=fun(v17,enc)
enc=fun(v13,enc)
enc=fun(v11,enc)
enc=fun(v7,enc)
enc=fun(v5,enc)
enc=fun(v3,enc)
enc=fun(v2,enc)
print(chr(2^33),end='')
print(bytes(enc).decode())
print(chr(33))
#y0u_4r3_7h3_m4573r_0f_r3v3r51n6_!