-changed version number to Beta 4.0.3

-recompiled mload modules for hermes cIOS
-added sdhc module for hermes cIOS
-fixed booting wii games from sd card
-improved wii game support via sd card, now you can use hermes, wanin
and d2x (not d2x only anymore)
-moved some more stuff to boot wii games into the external booter
-added gecko debug prints to external booter
-automatically disabling savegame emulator if you want to boot a wii
game via hermes or waninkoko cIOS
This commit is contained in:
fix94.1 2012-09-28 17:24:04 +00:00
parent b3333735c8
commit d8ee3c1b68
37 changed files with 2283 additions and 2237 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 148 KiB

View File

@ -18,27 +18,36 @@
#define _CFG_HPP_ #define _CFG_HPP_
#include "cios.h" #include "cios.h"
#include "frag.h"
typedef struct _the_CFG { typedef struct _the_CFG {
/* needed for wii games */
char gameID[7];
FragList *fragments;
s32 wbfsDevice;
u32 wbfsPart;
u8 GameBootType;
u8 mload_rev;
/* needed for channels */
u64 title;
/* General Stuff */
IOS_Info IOS;
u8 BootType;
u8 vidMode; u8 vidMode;
u8 patchVidMode;
u8 configbytes[2];
u8 debugger;
bool vipatch; bool vipatch;
bool countryString; bool countryString;
u8 patchVidMode;
int aspectRatio; int aspectRatio;
u32 returnTo;
u8 configbytes[2];
IOS_Info IOS;
void *codelist; void *codelist;
u8 *codelistend; u8 *codelistend;
u8 *cheats; u8 *cheats;
u32 cheatSize; u32 cheatSize;
u32 hooktype; u32 hooktype;
u8 debugger;
u32 *gameconf; u32 *gameconf;
u32 gameconfsize; u32 gameconfsize;
u8 BootType; u32 returnTo;
/* needed for channels */
u64 title;
} the_CFG; } the_CFG;
static the_CFG *conf = (the_CFG*)0x90000000; static the_CFG *conf = (the_CFG*)0x90000000;

View File

@ -10,6 +10,7 @@
#include "cios.h" #include "cios.h"
#include "fst.h" #include "fst.h"
#include "wip.h" #include "wip.h"
#include "gecko.h"
/* Apploader function pointers */ /* Apploader function pointers */
typedef int (*app_main)(void **dst, int *size, int *offset); typedef int (*app_main)(void **dst, int *size, int *offset);
@ -34,8 +35,6 @@ static bool PrinceOfPersiaPatch();
static bool NewSuperMarioBrosPatch(); static bool NewSuperMarioBrosPatch();
bool hookpatched = false; bool hookpatched = false;
static void no_print(const char*a __attribute__((unused)),...){}
s32 Apploader_Run(entry_point *entry, u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo) s32 Apploader_Run(entry_point *entry, u8 vidMode, GXRModeObj *vmode, bool vipatch, bool countryString, u8 patchVidModes, int aspectRatio, u32 returnTo)
{ {
void *dst = NULL; void *dst = NULL;
@ -71,7 +70,7 @@ s32 Apploader_Run(entry_point *entry, u8 vidMode, GXRModeObj *vmode, bool vipatc
appldr_entry(&appldr_init, &appldr_main, &appldr_final); appldr_entry(&appldr_init, &appldr_main, &appldr_final);
/* Initialize apploader */ /* Initialize apploader */
appldr_init(no_print); appldr_init(gprintf);
while(appldr_main(&dst, &len, &offset)) while(appldr_main(&dst, &len, &offset))
{ {

View File

@ -0,0 +1,50 @@
/***************************************************************************
* Copyright (C) 2011
* by Dimok
* Modifications by xFede
* Wiiflowized and heavily improved by Miigotu
* 2012 Converted, corrected and extended by FIX94
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
***************************************************************************/
#include <gctypes.h>
#include <string.h>
#include <stdio.h>
#include "cios.h"
#include "gecko.h"
bool Hermes_shadow_mload(int mload_rev)
{
int v51 = (5 << 4) & 1;
if(mload_rev >= v51)
{
IOS_Open("/dev/mload/OFF",0); // shadow /dev/mload supported in hermes cios v5.1
gprintf("Shadow mload\n");
return true;
}
return false;
}
void Hermes_Disable_EHC()
{
IOS_Open("/dev/usb123/OFF", 0);// this disables ehc completely
gprintf("Hermes EHC Disabled\n");
}

View File

@ -31,7 +31,7 @@ void IOS_GetCurrentIOSInfo();
bool IOS_D2X(u8 ios, u8 *base); bool IOS_D2X(u8 ios, u8 *base);
u8 IOS_GetType(u8 slot); u8 IOS_GetType(u8 slot);
bool Hermes_shadow_mload(); bool Hermes_shadow_mload(int mload_rev);
void Hermes_Disable_EHC(); void Hermes_Disable_EHC();
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -6,6 +6,7 @@
#include <malloc.h> #include <malloc.h>
#include <ogc/lwp_watchdog.h> #include <ogc/lwp_watchdog.h>
#include "frag.h"
#include "memory.h" #include "memory.h"
#include "cios.h" #include "cios.h"
#include "types.h" #include "types.h"
@ -16,6 +17,20 @@
static u8 *diskid = (u8*)0x80000000; static u8 *diskid = (u8*)0x80000000;
s32 Disc_Open()
{
/* Reset drive */
s32 ret = WDVD_Reset();
if (ret < 0) return ret;
memset(diskid, 0, 32);
/* Read disc ID */
ret = WDVD_ReadDiskId(diskid);
return ret;
}
void Disc_SetLowMem() void Disc_SetLowMem()
{ {
/* Setup low memory */ /* Setup low memory */
@ -221,3 +236,30 @@ void Disc_SetVMode(GXRModeObj *rmode, u32 rmode_reg)
else while(VIDEO_GetNextField()) else while(VIDEO_GetNextField())
VIDEO_WaitVSync(); VIDEO_WaitVSync();
} }
s32 wbfsDev = 0;
u32 wbfs_part_idx = 0;
FragList *frag_list = NULL;
static int set_frag_list()
{
// (+1 for header which is same size as fragment)
int size = sizeof(Fragment) * (frag_list->num + 1);
DCFlushRange(frag_list, size);
return WDVD_SetFragList(wbfsDev, frag_list, size);
}
s32 Disc_SetUSB(const u8 *id, bool frag)
{
/* ENABLE USB in cIOS */
if(id)
{
if(frag)
return set_frag_list();
s32 part = -1;
if(CurrentIOS.Type == IOS_TYPE_HERMES)
part = wbfs_part_idx ? wbfs_part_idx - 1 : 0;
return WDVD_SetUSBMode(wbfsDev, (u8*)id, part);
}
/* DISABLE USB in cIOS */
return WDVD_SetUSBMode(0, NULL, -1);
}

View File

@ -6,7 +6,9 @@
extern "C" { extern "C" {
#endif /* __cplusplus */ #endif /* __cplusplus */
s32 Disc_Open();
s32 Disc_FindPartition(u64 *outbuf); s32 Disc_FindPartition(u64 *outbuf);
s32 Disc_SetUSB(const u8 *id, bool frag);
void Disc_SetLowMem(); void Disc_SetLowMem();
void Disc_SetTime(); void Disc_SetTime();
@ -17,4 +19,4 @@ void Disc_SetVMode(GXRModeObj *rmode, u32 rmode_reg);
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif #endif

View File

@ -0,0 +1,31 @@
// worst case wbfs fragmentation scenario:
// 9GB (dual layer) / 2mb (wbfs sector size) = 4608
#define MAX_FRAG 20000
// max that ehcmodule_frag will allow at the moment is about:
// 40000/4/3-1 = 21844
#ifdef __cplusplus
extern "C" {
#endif
#include "gctypes.h"
typedef struct
{
u32 offset; // file offset, in sectors unit
u32 sector;
u32 count;
} Fragment;
typedef struct
{
u32 size; // num sectors
u32 num; // num fragments
u32 maxnum;
Fragment frag[MAX_FRAG];
} FragList;
#ifdef __cplusplus
}
#endif

View File

@ -0,0 +1,45 @@
#include <gccore.h>
#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include <sys/iosupport.h>
#include <stdarg.h>
#include "gecko.h"
/* init-globals */
bool geckoinit = false;
static ssize_t __out_write(struct _reent *r __attribute__((unused)), int fd __attribute__((unused)), const char *ptr, size_t len)
{
if(geckoinit && ptr)
{
u32 level;
level = IRQ_Disable();
usb_sendbuffer_safe(1, ptr, len);
IRQ_Restore(level);
}
return len;
}
char gprintfBuffer[256];
void gprintf(const char *format, ...)
{
va_list va;
va_start(va, format);
int len = vsnprintf(gprintfBuffer, 255, format, va);
__out_write(NULL, 0, gprintfBuffer, len);
va_end(va);
}
bool InitGecko()
{
if(geckoinit)
return geckoinit;
u32 geckoattached = usb_isgeckoalive(EXI_CHANNEL_1);
if(geckoattached)
{
geckoinit = true;
usb_flush(EXI_CHANNEL_1);
}
return geckoinit;
}

View File

@ -0,0 +1,23 @@
#ifndef _GECKO_H_
#define _GECKO_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <gccore.h>
extern bool bufferMessages;
extern bool WriteToSD;
//use this just like printf();
void gprintf(const char *format, ...);
void ghexdump(void *d, int len);
bool InitGecko();
#ifdef __cplusplus
}
#endif
#endif

View File

@ -29,6 +29,7 @@
#include "disc.h" #include "disc.h"
#include "fst.h" #include "fst.h"
#include "wdvd.h" #include "wdvd.h"
#include "gecko.h"
using namespace std; using namespace std;
IOS_Info CurrentIOS; IOS_Info CurrentIOS;
@ -40,11 +41,19 @@ GXRModeObj *vmode = NULL;
u32 AppEntrypoint; u32 AppEntrypoint;
extern "C" { extern void __exception_closeall(); } extern "C" {
extern void __exception_closeall();
extern s32 wbfsDev;
extern u32 wbfs_part_idx;
extern FragList *frag_list;
}
int main() int main()
{ {
VIDEO_Init(); VIDEO_Init();
InitGecko();
gprintf("WiiFlow External Booter by FIX94\n");
configbytes[0] = conf->configbytes[0]; configbytes[0] = conf->configbytes[0];
configbytes[1] = conf->configbytes[1]; configbytes[1] = conf->configbytes[1];
hooktype = conf->hooktype; hooktype = conf->hooktype;
@ -52,44 +61,44 @@ int main()
CurrentIOS = conf->IOS; CurrentIOS = conf->IOS;
app_gameconfig_set(conf->gameconf, conf->gameconfsize); app_gameconfig_set(conf->gameconf, conf->gameconfsize);
ocarina_set_codes(conf->codelist, conf->codelistend, conf->cheats, conf->cheatSize); ocarina_set_codes(conf->codelist, conf->codelistend, conf->cheats, conf->cheatSize);
frag_list = conf->fragments;
/* Set low memory */ wbfsDev = conf->wbfsDevice;
Disc_SetLowMem(); wbfs_part_idx = conf->wbfsPart;
/* Select an appropriate video mode */
vmode = Disc_SelectVMode(conf->vidMode, &vmode_reg);
if(conf->BootType == TYPE_WII_GAME) if(conf->BootType == TYPE_WII_GAME)
{ {
/* Re-Init DI */
WDVD_Init(); WDVD_Init();
if(conf->GameBootType == TYPE_WII_DISC)
/* Find Partition */ Disc_SetUSB(NULL, false);
else
Disc_SetUSB((u8*)conf->gameID, conf->GameBootType == TYPE_WII_WBFS_EXT);
Disc_Open();
Disc_SetLowMem();
u64 offset = 0; u64 offset = 0;
Disc_FindPartition(&offset); Disc_FindPartition(&offset);
gprintf("Partition Offset: %08x\n", offset);
/* Open Partition */
WDVD_OpenPartition(offset); WDVD_OpenPartition(offset);
vmode = Disc_SelectVMode(conf->vidMode, &vmode_reg);
/* Run apploader */
Apploader_Run(&p_entry, conf->vidMode, vmode, conf->vipatch, conf->countryString, conf->patchVidMode, Apploader_Run(&p_entry, conf->vidMode, vmode, conf->vipatch, conf->countryString, conf->patchVidMode,
conf->aspectRatio, conf->returnTo); conf->aspectRatio, conf->returnTo);
AppEntrypoint = (u32)p_entry; AppEntrypoint = (u32)p_entry;
if(CurrentIOS.Type == IOS_TYPE_HERMES)
/* De-Init DI */ {
if(conf->GameBootType == TYPE_WII_DISC)
Hermes_Disable_EHC();
else
Hermes_shadow_mload(conf->mload_rev);
}
WDVD_Close(); WDVD_Close();
} }
else if(conf->BootType == TYPE_CHANNEL) else if(conf->BootType == TYPE_CHANNEL)
{ {
/* Re-Init ISFS */
ISFS_Initialize(); ISFS_Initialize();
/* Load and Patch Channel */
AppEntrypoint = LoadChannel(); AppEntrypoint = LoadChannel();
Disc_SetLowMem();
vmode = Disc_SelectVMode(conf->vidMode, &vmode_reg);
PatchChannel(conf->vidMode, vmode, conf->vipatch, conf->countryString, PatchChannel(conf->vidMode, vmode, conf->vipatch, conf->countryString,
conf->patchVidMode, conf->aspectRatio); conf->patchVidMode, conf->aspectRatio);
/* De-Init ISFS */
ISFS_Deinitialize(); ISFS_Deinitialize();
} }

View File

@ -6,6 +6,12 @@
extern "C" { extern "C" {
#endif #endif
enum
{
TYPE_WII_DISC = 0,
TYPE_WII_WBFS,
TYPE_WII_WBFS_EXT,
};
enum enum
{ {
@ -18,7 +24,6 @@ enum
}; };
#define NoGameID(x) (x == TYPE_PLUGIN || x == TYPE_HOMEBREW) #define NoGameID(x) (x == TYPE_PLUGIN || x == TYPE_HOMEBREW)
enum enum
{ {
IOS_TYPE_D2X = 0, IOS_TYPE_D2X = 0,

View File

@ -2,6 +2,7 @@
#include <string.h> #include <string.h>
#include <malloc.h> #include <malloc.h>
#include <ogcsys.h> #include <ogcsys.h>
#include "gecko.h"
/* Constants */ /* Constants */
#define IOCTL_DI_READID 0x70 #define IOCTL_DI_READID 0x70
@ -295,6 +296,7 @@ s32 WDVD_GetCoverStatus(u32 *status)
s32 WDVD_SetUSBMode(u32 mode, const u8 *id, s32 partition) s32 WDVD_SetUSBMode(u32 mode, const u8 *id, s32 partition)
{ {
gprintf("WDVD_SetUSBMode, Mode: %i, ID: %s, Partition: %i\n", mode, id, partition);
memset(inbuf, 0, sizeof(inbuf)); memset(inbuf, 0, sizeof(inbuf));
/* Set USB mode */ /* Set USB mode */
@ -334,6 +336,7 @@ s32 WDVD_Read_Disc_BCA(void *buf)
s32 WDVD_SetFragList(int device, void *fraglist, int size) s32 WDVD_SetFragList(int device, void *fraglist, int size)
{ {
gprintf("WDVD_SetFragList, Device: %i, Size %d\n", device, size);
memset(inbuf, 0, sizeof(inbuf)); memset(inbuf, 0, sizeof(inbuf));
memset(outbuf, 0, sizeof(outbuf)); memset(outbuf, 0, sizeof(outbuf));

View File

@ -1,5 +1,5 @@
#define APP_NAME "WiiFlow" #define APP_NAME "WiiFlow"
#define APP_VERSION "Beta 4.0.2" #define APP_VERSION "Beta 4.0.3"
#define APPDATA_DIR "wiiflow" #define APPDATA_DIR "wiiflow"
#define APPDATA_DIR2 "apps/wiiflow" #define APPDATA_DIR2 "apps/wiiflow"

View File

@ -48,28 +48,16 @@ void DeviceHandler::Init()
usb0 = NULL; usb0 = NULL;
usb1 = NULL; usb1 = NULL;
OGC_Device = NULL; OGC_Device = NULL;
DolphinSD = false;
} }
void DeviceHandler::MountAll() void DeviceHandler::MountAll()
{ {
if(Sys_DolphinMode())
{
DolphinSD = fatMountSimple("sd", &__io_wiisd);
return;
}
MountSD(); MountSD();
MountAllUSB(); MountAllUSB();
} }
void DeviceHandler::UnMountAll() void DeviceHandler::UnMountAll()
{ {
if(Sys_DolphinMode())
{
fatUnmount("sd");
DolphinSD = false;
return;
}
/* Kill possible USB thread */ /* Kill possible USB thread */
KillUSBKeepAliveThread(); KillUSBKeepAliveThread();
@ -106,7 +94,7 @@ bool DeviceHandler::Mount(int dev)
bool DeviceHandler::IsInserted(int dev) bool DeviceHandler::IsInserted(int dev)
{ {
if(dev == SD) if(dev == SD)
return Sys_DolphinMode() ? DolphinSD : SD_Inserted() && sd->IsMounted(0); return SD_Inserted() && sd->IsMounted(0);
else if(dev >= USB1 && dev <= USB8) else if(dev >= USB1 && dev <= USB8)
{ {
@ -130,30 +118,35 @@ void DeviceHandler::UnMount(int dev)
void DeviceHandler::SetModes() void DeviceHandler::SetModes()
{ {
/* Set for USB */
if(CurrentIOS.Type == IOS_TYPE_NORMAL_IOS) if(CurrentIOS.Type == IOS_TYPE_NORMAL_IOS)
usb_libogc_mode = 1; {
else
usb_libogc_mode = 0;
/* Set for SD */
if(CurrentIOS.Type == IOS_TYPE_D2X)
sdhc_mode_sd = 0;
else
sdhc_mode_sd = 1; sdhc_mode_sd = 1;
usb_libogc_mode = 1;
}
else
{
sdhc_mode_sd = 0;
usb_libogc_mode = 0;
}
} }
bool DeviceHandler::MountSD() bool DeviceHandler::MountSD()
{ {
if(!sd) if(!sd)
sd = new PartitionHandle(&__io_sdhc);
if(sd && sd->GetPartitionCount() < 1)
{ {
delete sd; if(CurrentIOS.Type == IOS_TYPE_HERMES)
sd = NULL; { /* Slowass Hermes SDHC Module */
return false; for(int i = 0; i < 50; i++)
{
if(SDHC_Init())
break;
usleep(1000);
}
}
sd = new PartitionHandle(&__io_sdhc);
} }
//! Mount only one SD Partition //! Mount only one SD Partition
return sd->Mount(0, DeviceName[SD], true); return sd->Mount(0, DeviceName[SD], true); /* Force FAT */
} }
bool DeviceHandler::MountUSB(int pos) bool DeviceHandler::MountUSB(int pos)
@ -183,12 +176,6 @@ bool DeviceHandler::MountAllUSB()
/* Get Partitions and Mount them */ /* Get Partitions and Mount them */
if(!usb0) if(!usb0)
usb0 = new PartitionHandle(GetUSB0Interface()); usb0 = new PartitionHandle(GetUSB0Interface());
if(usb0 && usb0->GetPartitionCount() < 1)
{
delete usb0;
usb0 = NULL;
return false;
}
bool result = false; bool result = false;
int partCount = GetUSBPartitionCount(); int partCount = GetUSBPartitionCount();
for(int i = 0; i < partCount; i++) for(int i = 0; i < partCount; i++)
@ -196,6 +183,8 @@ bool DeviceHandler::MountAllUSB()
if(MountUSB(i)) if(MountUSB(i))
result = true; result = true;
} }
if(!result)
result = usb0->Mount(0, DeviceName[USB1], true); /* Force FAT */
if(result && usb_libogc_mode) if(result && usb_libogc_mode)
CreateUSBKeepAliveThread(); CreateUSBKeepAliveThread();
return result; return result;
@ -387,9 +376,6 @@ void DeviceHandler::UnMountDevolution(int CurrentPartition)
bool DeviceHandler::UsablePartitionMounted() bool DeviceHandler::UsablePartitionMounted()
{ {
if(Sys_DolphinMode())
return DolphinSD;
for(u8 i = SD; i < MAXDEVICES; i++) for(u8 i = SD; i < MAXDEVICES; i++)
{ {
if(IsInserted(i) && !GetWbfsHandle(i)) //Everything besides WBFS for configuration if(IsInserted(i) && !GetWbfsHandle(i)) //Everything besides WBFS for configuration

View File

@ -119,8 +119,6 @@ private:
PartitionHandle *usb1; PartitionHandle *usb1;
/* Special Devolution Stuff */ /* Special Devolution Stuff */
PartitionHandle *OGC_Device; PartitionHandle *OGC_Device;
/* Dolphin Stuff */
bool DolphinSD;
}; };
extern DeviceHandler DeviceHandle; extern DeviceHandler DeviceHandle;

View File

@ -321,6 +321,15 @@ s32 USBStorage2_GetSectorSize()
return 0; return 0;
} }
s32 USBStorage2_WBFS_SetDevice(int dev)
{
s32 retval = 0;
s32 ret = IOS_IoctlvFormat(hid, fd, USB_IOCTL_WBFS_SET_DEVICE, "i:i", dev, &retval);
if(retval)
return retval;
return ret;
}
static bool __usbstorage_Startup(void) static bool __usbstorage_Startup(void)
{ {
return USBStorage2_Init(0) >= 0; return USBStorage2_Init(0) >= 0;

View File

@ -24,6 +24,8 @@ s32 USBStorage2_GetSectorSize();
s32 USBStorage2_SetPort(s8 port); s32 USBStorage2_SetPort(s8 port);
s8 USBStorage2_GetPort(); s8 USBStorage2_GetPort();
s32 USBStorage2_WBFS_SetDevice(int dev);
extern int usb_libogc_mode; extern int usb_libogc_mode;
#define DEVICE_TYPE_WII_UMS (('W'<<24)|('U'<<16)|('M'<<8)|'S') #define DEVICE_TYPE_WII_UMS (('W'<<24)|('U'<<16)|('M'<<8)|'S')

53
source/loader/Config.hpp Normal file
View File

@ -0,0 +1,53 @@
/****************************************************************************
* Copyright (C) 2012 FIX94
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
****************************************************************************/
#ifndef _CFG_HPP_
#define _CFG_HPP_
#include "cios.h"
#include "frag.h"
typedef struct _the_CFG {
/* needed for wii games */
char gameID[7];
FragList *fragments;
s32 wbfsDevice;
u32 wbfsPart;
u8 GameBootType;
u8 mload_rev;
/* needed for channels */
u64 title;
/* General Stuff */
IOS_Info IOS;
u8 BootType;
u8 vidMode;
u8 patchVidMode;
u8 configbytes[2];
u8 debugger;
bool vipatch;
bool countryString;
int aspectRatio;
void *codelist;
u8 *codelistend;
u8 *cheats;
u32 cheatSize;
u32 hooktype;
u32 *gameconf;
u32 gameconfsize;
u32 returnTo;
} the_CFG;
#endif /* _CFG_HPP_ */

View File

@ -22,7 +22,6 @@
#include "mload.h" #include "mload.h"
#include "ehcmodule_5.h" #include "ehcmodule_5.h"
#include "dip_plugin_249.h" #include "dip_plugin_249.h"
#include "odip_frag.h"
#include "mload_modules.h" #include "mload_modules.h"
extern "C" { extern u8 currentPartition; } extern "C" { extern u8 currentPartition; }
@ -30,13 +29,8 @@ u8 use_port1 = 0;
static int load_ehc_module_ex(void) static int load_ehc_module_ex(void)
{ {
ehcmodule = ehcmodule_5; u8 *ehc_cfg = search_for_ehcmodule_cfg((u8 *)ehcmodule_5, size_ehcmodule_5);
size_ehcmodule = size_ehcmodule_5; if(ehc_cfg)
dip_plugin = odip_frag;
size_dip_plugin = size_odip_frag;
u8 *ehc_cfg = search_for_ehcmodule_cfg((u8 *)ehcmodule, size_ehcmodule);
if (ehc_cfg)
{ {
ehc_cfg += 12; ehc_cfg += 12;
ehc_cfg[0] = use_port1; ehc_cfg[0] = use_port1;
@ -64,7 +58,6 @@ static int load_ehc_module_ex(void)
mload_setw((void *) (addr+0x48), 0x1001); mload_setw((void *) (addr+0x48), 0x1001);
} }
load_ehc_module(); load_ehc_module();
return 0; return 0;
} }
@ -75,7 +68,7 @@ void load_dip_249()
return; return;
gprintf("Loading 249 dip..."); gprintf("Loading 249 dip...");
int ret = mload_module((void *) dip_plugin_249, size_dip_plugin_249); int ret = mload_module((void *)dip_plugin_249, size_dip_plugin_249);
gprintf("%d\n", ret); gprintf("%d\n", ret);
mload_close(); mload_close();
} }

View File

@ -188,21 +188,3 @@ void IOS_GetCurrentIOSInfo()
CurrentIOS.Base = CurrentIOS.Version; CurrentIOS.Base = CurrentIOS.Version;
DCFlushRange(&CurrentIOS, sizeof(IOS_Info)); DCFlushRange(&CurrentIOS, sizeof(IOS_Info));
} }
bool Hermes_shadow_mload()
{
int v51 = (5 << 4) & 1;
if(mload_get_version() >= v51)
{
IOS_Open("/dev/mload/OFF",0); // shadow /dev/mload supported in hermes cios v5.1
gprintf("Shadow mload\n");
return true;
}
return false;
}
void Hermes_Disable_EHC()
{
IOS_Open("/dev/usb123/OFF", 0);// this disables ehc completely
gprintf("Hermes EHC Disabled\n");
}

View File

@ -1,338 +1,204 @@
#define size_dip_plugin_249 5340 #define size_dip_plugin_249 5680
unsigned char dip_plugin_249[5340] __attribute__((aligned (32)))={ unsigned char dip_plugin_249[5680] __attribute__((aligned (32)))={
0x7f, 0x45, 0x4c, 0x46, 0x01, 0x02, 0x01, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 127, 69, 76, 70, 1, 2, 1, 97, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 40, 0, 0, 0, 1, 19, 112, 0, 0, 0, 0, 0, 52, 0, 0, 0,
0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0, 0, 0, 6, 6, 0, 52, 0, 32, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x34, 0x00, 0x20, 0x00, 0x05, 0x00, 0x00, 0, 0, 0, 160, 0, 240, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 212, 0, 0, 0, 160, 0, 0, 0, 160, 0, 0, 0, 52, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 52, 0, 240, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 212, 0, 240, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0x00, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 1, 8, 19, 112, 0, 0, 19, 112, 0, 0, 0, 0, 20, 56, 0, 0, 20, 56, 0, 240, 0, 5, 0, 0,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xa0, 0, 4, 0, 0, 0, 1, 0, 0, 21, 64, 19, 112, 32, 0, 19, 112, 32, 0, 0, 0, 0, 240, 0, 3, 195, 96, 0, 240, 0, 6, 0, 0, 0,
0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0xf0, 0x00, 0x00, 4, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 9, 19, 112, 0, 0, 0, 0, 0, 125, 0, 0, 0, 72,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 126, 0, 0, 16, 0, 0, 0, 0, 127, 19, 115, 227, 96, 227, 160, 0, 0, 227, 160, 16, 0, 229, 159, 48, 0, 225, 47,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0xf0, 0x00, 0x00, 255, 19, 19, 112, 3, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 75, 6, 176, 137, 147, 0, 70, 104, 35, 0, 33, 0,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x08, 0x13, 0x70, 0x00, 0x00, 34, 0, 147, 1, 147, 2, 240, 0, 249, 31, 176, 9, 189, 0, 227, 0, 0, 0, 181, 16, 28, 3, 34, 32, 28, 12, 72, 9, 28, 25,
0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x12, 0xe4, 0x00, 0x00, 0x12, 0xe4, 0x00, 0xf0, 0x00, 0x05, 240, 1, 249, 106, 74, 8, 35, 1, 104, 17, 66, 25, 209, 252, 44, 0, 208, 4, 28, 32, 73, 3, 34, 32, 240, 1, 249, 94, 75,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x13, 0xec, 0x13, 0x70, 0x20, 0x00, 3, 104, 24, 189, 16, 70, 192, 13, 0, 96, 0, 13, 0, 96, 28, 13, 0, 96, 32, 181, 240, 176, 139, 28, 7, 10, 203, 32, 160,
0x13, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xbd, 0xc0, 0x00, 0xf0, 0x00, 0x06, 28, 13, 146, 1, 147, 0, 2, 0, 38, 0, 172, 2, 224, 23, 34, 32, 33, 0, 28, 32, 240, 1, 249, 131, 75, 12, 28, 56, 96, 35,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 35, 0, 96, 99, 96, 163, 155, 0, 28, 41, 96, 227, 155, 1, 54, 1, 97, 35, 240, 0, 237, 124, 28, 32, 28, 57, 28, 42, 240,
0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x13, 0x70, 0x00, 0x00, 0, 248, 217, 46, 15, 216, 1, 40, 0, 209, 227, 176, 11, 189, 240, 208, 0, 0, 0, 181, 240, 176, 131, 36, 128, 147, 1,
0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x10, 0x00, 1, 36, 24, 83, 144, 0, 28, 15, 28, 22, 66, 163, 217, 1, 36, 101, 224, 7, 28, 32, 33, 32, 240, 0, 232, 146, 28, 5, 40,
0x00, 0x00, 0x00, 0x7f, 0x13, 0x70, 0xdd, 0xc0, 0xe3, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x00, 0, 209, 2, 36, 22, 66, 100, 224, 14, 28, 33, 154, 1, 247, 255, 255, 185, 28, 4, 40, 0, 209, 4, 25, 169, 152, 0, 28,
0xe5, 0x9f, 0x30, 0x00, 0xe1, 0x2f, 0xff, 0x13, 0x13, 0x70, 0x03, 0x8d, 0x00, 0x00, 0x00, 0x00, 58, 240, 1, 249, 5, 28, 40, 240, 0, 232, 136, 176, 3, 28, 32, 189, 240, 70, 192, 181, 240, 176, 135, 146, 2, 10, 86,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xf0, 0xb0, 0x89, 0x1c, 0x0d, 0x1c, 0x06, 35, 255, 34, 128, 1, 18, 3, 219, 144, 5, 145, 4, 32, 0, 39, 0, 146, 0, 147, 3, 224, 50, 154, 4, 155, 2, 2, 117, 27,
0x1c, 0x17, 0x46, 0x68, 0x22, 0x20, 0x21, 0x00, 0xf0, 0x01, 0xf9, 0x0e, 0x23, 0xa8, 0x06, 0x1b, 212, 66, 171, 216, 1, 37, 0, 224, 2, 154, 2, 27, 85, 0, 173, 155, 5, 34, 128, 25, 219, 28, 24, 28, 33, 1, 18, 147, 1,
0x1c, 0x30, 0x1c, 0x29, 0x93, 0x00, 0x95, 0x01, 0x97, 0x02, 0xf0, 0x00, 0xed, 0x82, 0x1c, 0x31, 240, 0, 248, 153, 40, 0, 208, 1, 45, 0, 208, 11, 154, 0, 25, 43, 66, 147, 217, 0, 27, 84, 152, 1, 28, 33, 28, 42, 28,
0x1c, 0x2a, 0x46, 0x68, 0xf0, 0x00, 0xf9, 0x0b, 0xb0, 0x09, 0xbd, 0xf0, 0xb5, 0xf0, 0xb0, 0x8d, 51, 247, 255, 255, 164, 224, 10, 155, 3, 28, 4, 66, 152, 217, 1, 36, 255, 3, 228, 152, 1, 28, 33, 28, 50, 247, 255,
0x90, 0x01, 0x0a, 0xcb, 0x20, 0xa0, 0x27, 0xd0, 0x1c, 0x0d, 0x92, 0x03, 0x93, 0x02, 0x02, 0x00, 255, 108, 25, 101, 10, 237, 25, 118, 25, 63, 154, 4, 66, 151, 211, 201, 176, 7, 189, 240, 70, 192, 181, 240, 176, 137,
0x26, 0x00, 0xac, 0x04, 0x06, 0x3f, 0xe0, 0x13, 0x22, 0x20, 0x21, 0x00, 0x1c, 0x20, 0xf0, 0x01, 28, 13, 28, 6, 28, 23, 70, 104, 34, 32, 33, 0, 240, 1, 248, 236, 75, 7, 28, 48, 28, 41, 147, 0, 149, 1, 151, 2, 240,
0xf8, 0xeb, 0x9b, 0x02, 0x98, 0x01, 0x60, 0xe3, 0x9b, 0x03, 0x1c, 0x29, 0x61, 0x23, 0x60, 0x27, 0, 236, 234, 28, 49, 28, 42, 70, 104, 240, 0, 248, 72, 176, 9, 189, 240, 70, 192, 168, 0, 0, 0, 181, 16, 247, 255, 255,
0xf0, 0x00, 0xed, 0x5e, 0x1c, 0x20, 0x99, 0x01, 0x1c, 0x2a, 0xf0, 0x00, 0xf8, 0xe8, 0x36, 0x01, 225, 189, 16, 0, 0, 0, 0, 0, 0, 0, 0, 233, 45, 64, 128, 229, 159, 112, 124, 229, 151, 112, 0, 235, 0, 0, 19, 232, 189,
0x23, 0x0f, 0x42, 0xb3, 0xd3, 0x01, 0x28, 0x00, 0xd1, 0xe6, 0xb0, 0x0d, 0xbd, 0xf0, 0xb5, 0xf0, 64, 128, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 104, 229, 151, 112, 0, 235, 0, 0, 13, 232, 189, 64, 128,
0xb0, 0x83, 0x24, 0x80, 0x93, 0x01, 0x01, 0x24, 0x18, 0x53, 0x90, 0x00, 0x1c, 0x0f, 0x1c, 0x16, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 84, 229, 151, 112, 0, 235, 0, 0, 7, 232, 189, 64, 128, 225, 47, 255,
0x42, 0xa3, 0xd8, 0x15, 0x1c, 0x20, 0x21, 0x20, 0xf0, 0x00, 0xe8, 0xa2, 0x1e, 0x05, 0xd0, 0x11, 30, 233, 45, 64, 128, 229, 159, 112, 64, 229, 151, 112, 0, 235, 0, 0, 1, 232, 189, 64, 128, 225, 47, 255, 30, 225, 47,
0x1c, 0x21, 0x1c, 0x28, 0x9a, 0x01, 0xf7, 0xff, 0xff, 0xc1, 0x1e, 0x04, 0xd1, 0x04, 0x19, 0xa9, 255, 23, 181, 240, 70, 87, 70, 70, 180, 192, 104, 5, 70, 138, 75, 9, 104, 27, 71, 24, 181, 240, 70, 95, 70, 86, 70,
0x98, 0x00, 0x1c, 0x3a, 0xf0, 0x01, 0xf8, 0x76, 0x1c, 0x28, 0xf0, 0x00, 0xe8, 0x9e, 0xe0, 0x03, 77, 70, 68, 180, 240, 75, 6, 104, 27, 71, 24, 19, 112, 33, 20, 19, 112, 33, 32, 19, 112, 33, 36, 19, 112, 33, 40, 19,
0x24, 0x65, 0xe0, 0x00, 0x24, 0x16, 0x42, 0x64, 0xb0, 0x03, 0x1c, 0x20, 0xbd, 0xf0, 0x00, 0x00, 112, 33, 24, 19, 112, 33, 28, 181, 48, 6, 195, 208, 1, 32, 0, 224, 24, 75, 13, 66, 152, 217, 1, 35, 0, 224, 2, 35, 192,
0xb5, 0x10, 0x1c, 0x03, 0x1c, 0x0c, 0x48, 0x0a, 0x1c, 0x19, 0x22, 0x20, 0xf0, 0x01, 0xf8, 0x62, 4, 91, 26, 27, 76, 10, 25, 5, 76, 10, 66, 165, 216, 1, 75, 9, 26, 27, 66, 147, 210, 1, 32, 0, 224, 3, 28, 24, 66, 139,
0x4b, 0x08, 0x68, 0x1b, 0x07, 0xda, 0xd4, 0x09, 0x2c, 0x00, 0xd0, 0x04, 0x1c, 0x20, 0x49, 0x04, 217, 0, 28, 8, 58, 1, 67, 144, 189, 48, 70, 192, 1, 127, 255, 255, 240, 0, 0, 0, 3, 97, 127, 255, 19, 97, 128, 0, 181,
0x22, 0x20, 0xf0, 0x01, 0xf8, 0x57, 0x4b, 0x04, 0x68, 0x18, 0xbd, 0x10, 0xe7, 0xfe, 0x46, 0xc0, 112, 76, 9, 28, 5, 28, 14, 104, 32, 0, 145, 34, 0, 240, 0, 236, 40, 40, 0, 219, 7, 104, 32, 28, 41, 28, 50, 240, 0,
0x0d, 0x00, 0x60, 0x00, 0x0d, 0x00, 0x60, 0x1c, 0x0d, 0x00, 0x60, 0x20, 0xb5, 0x00, 0x23, 0xe3, 236, 24, 40, 0, 221, 0, 32, 0, 189, 112, 19, 112, 32, 0, 181, 16, 75, 5, 104, 24, 40, 0, 219, 1, 240, 0, 236, 8, 74,
0xb0, 0x89, 0x06, 0x1b, 0x93, 0x00, 0x46, 0x68, 0x23, 0x00, 0x21, 0x00, 0x22, 0x00, 0x93, 0x01, 2, 35, 1, 66, 91, 96, 19, 189, 16, 19, 112, 32, 0, 181, 16, 33, 0, 240, 0, 235, 248, 75, 2, 96, 24, 40, 0, 221, 0, 32,
0x93, 0x02, 0xf0, 0x00, 0xf8, 0x8c, 0xb0, 0x09, 0xbd, 0x00, 0xb5, 0xf0, 0xb0, 0x87, 0x92, 0x02, 0, 189, 16, 19, 112, 32, 0, 181, 16, 72, 5, 240, 0, 251, 74, 72, 4, 33, 0, 34, 0, 240, 0, 251, 85, 32, 0, 189, 16, 70,
0x0a, 0x56, 0x23, 0xff, 0x22, 0x80, 0x01, 0x12, 0x03, 0xdb, 0x90, 0x05, 0x91, 0x04, 0x20, 0x00, 192, 19, 112, 33, 0, 19, 112, 3, 133, 181, 16, 72, 3, 240, 0, 236, 44, 247, 255, 255, 234, 189, 16, 70, 192, 19, 112,
0x27, 0x00, 0x92, 0x00, 0x93, 0x03, 0xe0, 0x30, 0x9a, 0x04, 0x02, 0x73, 0x1b, 0xd4, 0x9a, 0x02, 32, 168, 181, 16, 240, 0, 236, 72, 240, 0, 236, 80, 28, 4, 32, 1, 66, 64, 240, 0, 236, 78, 75, 4, 104, 88, 240, 0, 248,
0x25, 0x00, 0x42, 0x9a, 0xd9, 0x01, 0x1a, 0xd5, 0x00, 0xad, 0x9b, 0x05, 0x22, 0x80, 0x19, 0xdb, 8, 28, 32, 240, 0, 236, 72, 32, 0, 189, 16, 70, 192, 19, 112, 33, 0, 181, 16, 75, 65, 66, 152, 208, 50, 66, 152, 216,
0x1c, 0x18, 0x1c, 0x21, 0x01, 0x12, 0x93, 0x01, 0xf0, 0x00, 0xf8, 0x7e, 0x28, 0x00, 0xd0, 0x01, 3, 75, 63, 66, 152, 209, 121, 224, 6, 75, 62, 66, 152, 208, 79, 75, 62, 66, 152, 209, 114, 224, 75, 72, 61, 76, 61,
0x2d, 0x00, 0xd0, 0x0b, 0x9a, 0x00, 0x19, 0x2b, 0x42, 0x93, 0xd9, 0x00, 0x1b, 0x54, 0x98, 0x01, 33, 4, 96, 4, 240, 0, 236, 20, 75, 60, 72, 60, 33, 4, 96, 3, 240, 0, 236, 14, 72, 59, 33, 4, 96, 4, 240, 0, 236, 8,
0x1c, 0x21, 0x1c, 0x2a, 0x1c, 0x33, 0xf7, 0xff, 0xff, 0x7a, 0xe0, 0x0a, 0x9b, 0x03, 0x1c, 0x04, 75, 57, 72, 58, 33, 4, 96, 3, 240, 0, 236, 2, 75, 56, 74, 57, 96, 26, 74, 57, 96, 90, 74, 57, 96, 154, 74, 57, 96, 218,
0x42, 0x98, 0xd9, 0x01, 0x24, 0xff, 0x03, 0xe4, 0x98, 0x01, 0x1c, 0x21, 0x1c, 0x32, 0xf7, 0xff, 58, 48, 97, 26, 74, 56, 97, 90, 74, 56, 224, 74, 72, 56, 76, 42, 33, 4, 96, 4, 240, 0, 235, 238, 75, 41, 72, 53, 33,
0xff, 0x45, 0x19, 0x65, 0x0a, 0xed, 0x19, 0x76, 0x19, 0x3f, 0x9a, 0x04, 0x42, 0x97, 0xd3, 0xcb, 4, 96, 3, 240, 0, 235, 232, 72, 52, 33, 4, 96, 4, 240, 0, 235, 226, 75, 38, 72, 50, 33, 4, 96, 3, 240, 0, 235, 220,
0xb0, 0x07, 0xbd, 0xf0, 0xb5, 0x08, 0xf7, 0xff, 0xff, 0x1f, 0xbd, 0x08, 0x00, 0x00, 0x00, 0x00, 75, 37, 74, 48, 96, 26, 74, 48, 96, 90, 74, 48, 96, 154, 74, 48, 96, 218, 58, 44, 97, 26, 74, 47, 97, 90, 74, 47, 224,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x7c, 36, 72, 23, 76, 23, 33, 4, 96, 4, 240, 0, 235, 200, 75, 22, 72, 22, 33, 4, 96, 3, 240, 0, 235, 194, 72, 21, 33, 4, 96,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x13, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 4, 240, 0, 235, 188, 75, 19, 72, 20, 33, 4, 96, 3, 240, 0, 235, 182, 75, 18, 74, 35, 96, 26, 74, 19, 96, 90, 74, 19,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x68, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x0d, 96, 154, 74, 19, 96, 218, 58, 48, 97, 26, 74, 31, 97, 90, 74, 31, 97, 154, 189, 16, 72, 136, 225, 76, 72, 119, 111,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x54, 114, 73, 42, 202, 157, 74, 38, 42, 245, 32, 32, 4, 0, 75, 0, 71, 24, 19, 112, 5, 141, 32, 32, 4, 4, 32, 32, 14, 248,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x07, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 19, 112, 6, 229, 32, 32, 14, 252, 19, 112, 33, 20, 32, 32, 42, 113, 32, 32, 4, 13, 32, 32, 15, 5, 32, 32, 9, 109, 32,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x40, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x01, 32, 56, 125, 32, 34, 221, 96, 32, 32, 3, 184, 32, 32, 3, 188, 32, 32, 13, 44, 32, 32, 13, 48, 32, 32, 40, 117, 32, 32,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x2f, 0xff, 0x17, 0xb5, 0xf0, 0x46, 0x57, 3, 197, 32, 32, 13, 57, 32, 32, 8, 197, 32, 32, 54, 93, 32, 34, 205, 172, 32, 32, 41, 69, 32, 32, 55, 81, 32, 34, 205,
0x46, 0x46, 0xb4, 0xc0, 0x68, 0x05, 0x46, 0x8a, 0x4b, 0x09, 0x68, 0x1b, 0x47, 0x18, 0xb5, 0xf0, 96, 181, 0, 75, 9, 104, 91, 43, 1, 208, 3, 43, 2, 209, 10, 75, 7, 224, 0, 75, 7, 66, 152, 211, 5, 74, 6, 75, 3, 32,
0x46, 0x5f, 0x46, 0x56, 0x46, 0x4d, 0x46, 0x44, 0xb4, 0xf0, 0x4b, 0x06, 0x68, 0x1b, 0x47, 0x18, 160, 97, 26, 2, 0, 224, 0, 32, 0, 189, 0, 19, 112, 33, 48, 126, 211, 128, 0, 70, 9, 0, 0, 0, 5, 33, 0, 75, 6, 33, 3,
0x13, 0x70, 0x21, 0x14, 0x13, 0x70, 0x21, 0x20, 0x13, 0x70, 0x21, 0x24, 0x13, 0x70, 0x21, 0x28, 104, 26, 67, 138, 96, 26, 34, 0, 96, 154, 96, 218, 96, 90, 97, 26, 97, 90, 97, 154, 71, 112, 70, 192, 19, 112, 33, 48,
0x13, 0x70, 0x21, 0x18, 0x13, 0x70, 0x21, 0x1c, 0xb5, 0x30, 0x1c, 0x03, 0x20, 0x00, 0x06, 0xdc, 181, 112, 104, 3, 104, 194, 43, 134, 208, 26, 43, 134, 216, 4, 43, 121, 208, 7, 43, 122, 209, 44, 224, 10, 43, 136,
0xd1, 0x17, 0x48, 0x0c, 0x24, 0x00, 0x42, 0x83, 0xd8, 0x02, 0x24, 0xc0, 0x04, 0x64, 0x1a, 0xe4, 208, 27, 43, 149, 209, 39, 224, 31, 75, 21, 104, 26, 35, 28, 66, 26, 209, 7, 224, 32, 75, 18, 36, 28, 104, 29, 66, 37,
0x20, 0xf0, 0x06, 0x00, 0x18, 0x1d, 0x48, 0x08, 0x42, 0x85, 0xd8, 0x01, 0x4c, 0x07, 0x1a, 0xe4, 208, 27, 105, 91, 96, 19, 32, 1, 224, 25, 75, 13, 34, 28, 104, 28, 66, 20, 208, 18, 105, 90, 33, 4, 67, 138, 97, 90,
0x20, 0x00, 0x42, 0x94, 0xd3, 0x03, 0x1c, 0x20, 0x42, 0x8c, 0xd9, 0x00, 0x1c, 0x08, 0x3a, 0x01, 231, 243, 75, 8, 104, 28, 35, 28, 66, 28, 208, 8, 35, 2, 231, 235, 75, 5, 104, 28, 35, 28, 66, 28, 208, 1, 35, 10, 231,
0x43, 0x90, 0xbd, 0x30, 0x01, 0x7f, 0xff, 0xff, 0x03, 0x61, 0x7f, 0xff, 0x13, 0x61, 0x80, 0x00, 228, 247, 255, 254, 50, 189, 112, 70, 192, 19, 112, 33, 48, 181, 112, 75, 23, 104, 91, 43, 1, 208, 3, 43, 2, 209, 10,
0xb5, 0x08, 0x21, 0x00, 0xf0, 0x00, 0xeb, 0xf4, 0x4b, 0x03, 0x60, 0x18, 0x1e, 0x43, 0x43, 0x03, 75, 21, 224, 0, 75, 21, 66, 154, 211, 5, 74, 20, 75, 17, 32, 160, 97, 26, 2, 0, 224, 27, 75, 14, 104, 221, 104, 156,
0x17, 0xdb, 0x40, 0x18, 0xbd, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x20, 0x00, 0xb5, 0x08, 0x4b, 0x05, 104, 27, 25, 44, 24, 162, 6, 220, 213, 2, 240, 0, 253, 194, 224, 16, 7, 28, 213, 2, 247, 255, 254, 83, 224, 11, 7, 92,
0x68, 0x18, 0x28, 0x00, 0xdb, 0x01, 0xf0, 0x00, 0xeb, 0xe8, 0x4a, 0x02, 0x23, 0x01, 0x42, 0x5b, 213, 2, 240, 0, 251, 6, 224, 6, 7, 220, 213, 2, 247, 255, 253, 101, 224, 1, 247, 255, 253, 198, 189, 112, 70, 192, 19,
0x60, 0x13, 0xbd, 0x08, 0x13, 0x70, 0x20, 0x00, 0xb5, 0x70, 0x4c, 0x0a, 0x1c, 0x05, 0x1c, 0x0e, 112, 33, 48, 126, 211, 128, 0, 70, 9, 0, 0, 0, 5, 33, 0, 181, 16, 32, 128, 1, 0, 33, 32, 247, 255, 237, 202, 28, 4,
0x68, 0x20, 0x00, 0x91, 0x22, 0x00, 0xf0, 0x00, 0xeb, 0xe4, 0x28, 0x00, 0xdb, 0x08, 0x68, 0x20, 40, 0, 208, 15, 33, 128, 34, 160, 1, 9, 5, 210, 247, 255, 255, 185, 40, 0, 208, 1, 35, 1, 224, 0, 35, 2, 74, 2, 28,
0x1c, 0x29, 0x1c, 0x32, 0xf0, 0x00, 0xeb, 0xd4, 0x1e, 0x43, 0x43, 0x03, 0x17, 0xdb, 0x40, 0x18, 32, 96, 83, 247, 255, 237, 196, 189, 16, 19, 112, 33, 48, 181, 16, 34, 0, 28, 4, 247, 255, 255, 167, 40, 0, 219, 13,
0xbd, 0x70, 0x46, 0xc0, 0x13, 0x70, 0x20, 0x00, 0xb5, 0x10, 0xf0, 0x00, 0xec, 0x32, 0xf0, 0x00, 105, 162, 75, 6, 66, 154, 209, 9, 75, 6, 33, 1, 104, 26, 112, 17, 104, 27, 120, 91, 43, 0, 209, 1, 247, 255, 237, 148,
0xec, 0x36, 0x1c, 0x04, 0x20, 0x01, 0x42, 0x40, 0xf0, 0x00, 0xec, 0x34, 0x4b, 0x04, 0x68, 0x58, 189, 16, 93, 28, 158, 163, 19, 112, 33, 44, 181, 240, 120, 3, 176, 131, 28, 5, 28, 14, 28, 23, 43, 224, 209, 0, 224,
0xf0, 0x00, 0xf8, 0x22, 0x1c, 0x20, 0xf0, 0x00, 0xec, 0x2e, 0x20, 0x00, 0xbd, 0x10, 0x46, 0xc0, 222, 76, 183, 34, 0, 97, 34, 43, 228, 209, 0, 224, 192, 43, 228, 216, 43, 43, 168, 209, 0, 224, 160, 43, 168, 216, 16,
0x13, 0x70, 0x21, 0x00, 0xb5, 0x08, 0x48, 0x05, 0xf0, 0x00, 0xfb, 0x32, 0x48, 0x04, 0x21, 0x00, 43, 138, 208, 82, 43, 138, 216, 5, 43, 112, 208, 102, 43, 113, 208, 0, 225, 80, 224, 141, 43, 141, 209, 0, 224, 145,
0x22, 0x00, 0xf0, 0x00, 0xfb, 0x23, 0x20, 0x00, 0xbd, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x00, 43, 164, 208, 0, 225, 73, 224, 174, 43, 217, 209, 0, 224, 152, 43, 217, 216, 6, 43, 171, 209, 0, 224, 160, 43, 208,
0x13, 0x70, 0x03, 0x41, 0xb5, 0x08, 0x48, 0x03, 0xf0, 0x00, 0xeb, 0xea, 0xf7, 0xff, 0xff, 0xea, 208, 0, 225, 61, 224, 129, 43, 219, 209, 0, 224, 170, 43, 219, 210, 0, 224, 131, 43, 224, 208, 0, 225, 51, 224, 170,
0xbd, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x20, 0xa8, 0xb5, 0x10, 0x4b, 0x41, 0x42, 0x98, 0xd0, 0x32, 43, 246, 209, 0, 225, 37, 43, 246, 216, 18, 43, 242, 209, 0, 224, 178, 43, 242, 216, 6, 43, 240, 209, 0, 224, 168, 43,
0x42, 0x98, 0xd8, 0x03, 0x4b, 0x3f, 0x42, 0x98, 0xd1, 0x79, 0xe0, 0x06, 0x4b, 0x3e, 0x42, 0x98, 241, 208, 0, 225, 34, 224, 167, 43, 244, 209, 0, 224, 181, 43, 244, 217, 0, 224, 199, 224, 174, 43, 249, 209, 0, 224,
0xd0, 0x4f, 0x4b, 0x3e, 0x42, 0x98, 0xd1, 0x72, 0xe0, 0x4b, 0x48, 0x3d, 0x4c, 0x3d, 0x21, 0x04, 226, 43, 249, 216, 6, 43, 247, 209, 0, 224, 193, 43, 248, 208, 0, 225, 15, 224, 212, 43, 251, 209, 0, 224, 250, 43,
0x60, 0x04, 0xf0, 0x00, 0xeb, 0xea, 0x4b, 0x3c, 0x48, 0x3c, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 251, 210, 0, 224, 245, 43, 255, 208, 0, 225, 5, 224, 253, 105, 163, 43, 0, 208, 0, 225, 16, 104, 34, 33, 3, 67, 138,
0xeb, 0xe4, 0x48, 0x3b, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0xde, 0x4b, 0x39, 0x48, 0x3a, 96, 163, 96, 227, 96, 99, 97, 35, 97, 99, 35, 28, 96, 34, 66, 26, 209, 0, 224, 243, 247, 255, 252, 32, 105, 98, 35,
0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0xd8, 0x4b, 0x38, 0x4a, 0x39, 0x60, 0x1a, 0x4a, 0x39, 4, 67, 19, 97, 99, 224, 252, 104, 162, 104, 227, 146, 1, 104, 34, 147, 0, 35, 28, 66, 26, 208, 1, 36, 0, 224, 10, 28,
0x60, 0x5a, 0x4a, 0x39, 0x60, 0x9a, 0x4a, 0x39, 0x60, 0xda, 0x3a, 0x30, 0x61, 0x1a, 0x4a, 0x38, 58, 247, 255, 253, 57, 28, 4, 40, 0, 208, 4, 75, 114, 34, 1, 104, 25, 67, 10, 96, 26, 154, 0, 42, 0, 209, 7, 155, 1,
0x61, 0x5a, 0x4a, 0x38, 0xe0, 0x4a, 0x48, 0x38, 0x4c, 0x2a, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 43, 0, 209, 4, 75, 108, 104, 26, 35, 29, 66, 26, 208, 4, 28, 48, 28, 57, 247, 255, 255, 63, 28, 4, 44, 0, 208, 0, 224,
0xeb, 0xc4, 0x4b, 0x29, 0x48, 0x35, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0xbe, 0x48, 0x34, 213, 247, 255, 255, 29, 224, 210, 104, 35, 7, 154, 212, 0, 224, 189, 104, 65, 104, 130, 224, 5, 104, 105, 104, 170,
0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0xb8, 0x4b, 0x26, 0x48, 0x32, 0x21, 0x04, 0x60, 0x03, 43, 208, 209, 1, 2, 201, 2, 82, 28, 48, 224, 2, 28, 8, 34, 64, 28, 57, 247, 255, 254, 208, 224, 177, 104, 34, 35, 29,
0xf0, 0x00, 0xeb, 0xb2, 0x4b, 0x25, 0x4a, 0x30, 0x60, 0x1a, 0x4a, 0x30, 0x60, 0x5a, 0x4a, 0x30, 66, 26, 209, 0, 224, 167, 104, 67, 104, 130, 7, 155, 67, 19, 74, 86, 64, 19, 96, 227, 224, 175, 104, 34, 35, 29, 66,
0x60, 0x9a, 0x4a, 0x30, 0x60, 0xda, 0x3a, 0x2c, 0x61, 0x1a, 0x4a, 0x2f, 0x61, 0x5a, 0x4a, 0x2f, 26, 208, 0, 224, 170, 224, 153, 104, 34, 35, 29, 66, 26, 209, 0, 224, 148, 74, 80, 75, 77, 36, 160, 97, 26, 2, 36, 224,
0xe0, 0x24, 0x48, 0x17, 0x4c, 0x17, 0x21, 0x04, 0x60, 0x04, 0xf0, 0x00, 0xeb, 0x9e, 0x4b, 0x16, 159, 104, 33, 35, 28, 66, 25, 209, 0, 224, 137, 96, 50, 224, 151, 75, 71, 34, 28, 104, 25, 66, 17, 209, 2, 105, 27,
0x48, 0x16, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0x98, 0x48, 0x15, 0x21, 0x04, 0x60, 0x04, 43, 0, 208, 127, 75, 67, 105, 27, 224, 69, 104, 67, 96, 163, 224, 137, 104, 163, 224, 64, 104, 67, 43, 0, 208, 3, 104,
0xf0, 0x00, 0xeb, 0x92, 0x4b, 0x13, 0x48, 0x14, 0x21, 0x04, 0x60, 0x03, 0xf0, 0x00, 0xeb, 0x8c, 34, 35, 2, 67, 19, 224, 2, 104, 35, 34, 2, 67, 147, 96, 35, 224, 123, 104, 34, 35, 2, 224, 48, 104, 70, 240, 0, 249,
0x4b, 0x12, 0x4a, 0x23, 0x60, 0x1a, 0x4a, 0x13, 0x60, 0x5a, 0x4a, 0x13, 0x60, 0x9a, 0x4a, 0x13, 230, 104, 35, 34, 4, 67, 147, 96, 35, 46, 0, 208, 111, 28, 41, 30, 112, 49, 8, 240, 0, 249, 233, 28, 4, 40, 0, 209,
0x60, 0xda, 0x3a, 0x30, 0x61, 0x1a, 0x4a, 0x1f, 0x61, 0x5a, 0x4a, 0x1f, 0x61, 0x9a, 0xbd, 0x10, 104, 75, 47, 34, 4, 104, 25, 224, 22, 104, 34, 35, 4, 224, 24, 104, 69, 247, 255, 252, 250, 104, 35, 34, 8, 67, 147,
0x48, 0x88, 0xe1, 0x4c, 0x48, 0x77, 0x6f, 0x72, 0x49, 0x2a, 0xca, 0x9d, 0x4a, 0x26, 0x2a, 0xf5, 96, 35, 45, 0, 208, 87, 28, 40, 240, 0, 233, 136, 247, 255, 252, 253, 28, 4, 40, 0, 209, 80, 75, 35, 34, 8, 104, 25,
0x20, 0x20, 0x04, 0x00, 0x4b, 0x00, 0x47, 0x18, 0x13, 0x70, 0x09, 0x45, 0x20, 0x20, 0x04, 0x04, 67, 10, 96, 26, 224, 74, 104, 34, 35, 8, 64, 19, 96, 51, 224, 68, 104, 67, 104, 135, 147, 0, 104, 197, 240, 0, 251,
0x20, 0x20, 0x0e, 0xf8, 0x13, 0x70, 0x06, 0x55, 0x20, 0x20, 0x0e, 0xfc, 0x13, 0x70, 0x21, 0x14, 1, 104, 35, 34, 16, 67, 147, 96, 35, 47, 0, 208, 56, 154, 0, 42, 0, 208, 53, 45, 0, 208, 51, 28, 56, 240, 0, 233, 100,
0x20, 0x20, 0x2a, 0x71, 0x20, 0x20, 0x04, 0x0d, 0x20, 0x20, 0x0f, 0x05, 0x20, 0x20, 0x09, 0x6d, 28, 42, 28, 1, 152, 0, 240, 0, 252, 96, 96, 48, 40, 0, 221, 40, 75, 16, 34, 16, 104, 25, 67, 10, 96, 26, 224, 34, 104,
0x20, 0x20, 0x38, 0x7d, 0x20, 0x22, 0xdd, 0x60, 0x20, 0x20, 0x03, 0xb8, 0x20, 0x20, 0x03, 0xbc, 35, 231, 217, 75, 15, 96, 11, 104, 35, 96, 75, 104, 99, 96, 139, 224, 25, 104, 67, 97, 163, 224, 22, 104, 64, 240, 0,
0x20, 0x20, 0x0d, 0x2c, 0x20, 0x20, 0x0d, 0x30, 0x20, 0x20, 0x28, 0x75, 0x20, 0x20, 0x03, 0xc5, 233, 70, 28, 49, 247, 255, 251, 63, 224, 4, 28, 40, 28, 49, 28, 58, 247, 255, 252, 84, 28, 4, 224, 9, 70, 192, 19, 112,
0x20, 0x20, 0x0d, 0x39, 0x20, 0x20, 0x08, 0xc5, 0x20, 0x20, 0x36, 0x5d, 0x20, 0x22, 0xcd, 0xac, 33, 48, 255, 255, 128, 0, 0, 5, 49, 0, 72, 69, 76, 79, 36, 0, 176, 3, 28, 32, 189, 240, 181, 16, 28, 1, 34, 0, 32, 18,
0x20, 0x20, 0x29, 0x45, 0x20, 0x20, 0x37, 0x51, 0x20, 0x22, 0xcd, 0x60, 0xb5, 0x00, 0x4b, 0x0b, 35, 0, 240, 0, 233, 22, 189, 16, 181, 16, 32, 17, 33, 0, 34, 0, 35, 0, 240, 0, 233, 14, 189, 16, 181, 112, 28, 5, 28,
0x68, 0x5b, 0x2b, 0x01, 0xd0, 0x02, 0x2b, 0x02, 0xd1, 0x0c, 0xe0, 0x01, 0x4a, 0x08, 0xe0, 0x00, 12, 28, 19, 28, 41, 28, 34, 32, 16, 240, 0, 233, 4, 189, 112, 181, 112, 28, 5, 28, 12, 28, 19, 42, 0, 221, 4, 32, 9,
0x4a, 0x08, 0x23, 0x00, 0x42, 0x90, 0xd3, 0x06, 0x4b, 0x04, 0x4a, 0x07, 0x61, 0x1a, 0x23, 0xa0, 28, 41, 28, 34, 240, 0, 232, 248, 189, 112, 181, 112, 28, 5, 28, 12, 28, 19, 42, 0, 221, 4, 32, 2, 28, 41, 28, 34, 240,
0x02, 0x1b, 0xe0, 0x00, 0x23, 0x00, 0x1c, 0x18, 0xbd, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x30, 0, 232, 236, 189, 112, 230, 0, 0, 16, 225, 47, 255, 30, 230, 0, 0, 48, 225, 47, 255, 30, 230, 0, 0, 80, 225, 47, 255,
0x46, 0x09, 0x00, 0x00, 0x7e, 0xd3, 0x80, 0x00, 0x00, 0x05, 0x21, 0x00, 0xb5, 0x70, 0x1c, 0x04, 30, 230, 0, 0, 112, 225, 47, 255, 30, 230, 0, 0, 144, 225, 47, 255, 30, 230, 0, 0, 176, 225, 47, 255, 30, 230, 0, 0,
0x1c, 0x10, 0x1c, 0x0d, 0x1c, 0x16, 0xf7, 0xff, 0xff, 0xd9, 0x28, 0x00, 0xd1, 0x25, 0x4b, 0x13, 208, 225, 47, 255, 30, 230, 0, 0, 240, 225, 47, 255, 30, 230, 0, 1, 16, 225, 47, 255, 30, 230, 0, 1, 48, 225, 47, 255,
0x68, 0xd9, 0x68, 0x9a, 0x68, 0x1b, 0x18, 0x8a, 0x19, 0x92, 0x06, 0xd9, 0xd5, 0x04, 0x1c, 0x20, 30, 230, 0, 1, 80, 225, 47, 255, 30, 230, 0, 1, 112, 225, 47, 255, 30, 230, 0, 1, 144, 225, 47, 255, 30, 230, 0, 1,
0x1c, 0x29, 0xf0, 0x00, 0xfd, 0xd5, 0xe0, 0x18, 0x07, 0x19, 0xd5, 0x04, 0x1c, 0x20, 0x1c, 0x29, 176, 225, 47, 255, 30, 230, 0, 1, 208, 225, 47, 255, 30, 230, 0, 1, 240, 225, 47, 255, 30, 230, 0, 2, 16, 225, 47, 255,
0xf7, 0xff, 0xfe, 0xba, 0xe0, 0x11, 0x07, 0x59, 0xd5, 0x04, 0x1c, 0x20, 0x1c, 0x29, 0xf0, 0x00, 30, 230, 0, 2, 48, 225, 47, 255, 30, 230, 0, 2, 80, 225, 47, 255, 30, 230, 0, 2, 112, 225, 47, 255, 30, 230, 0, 2, 144,
0xfb, 0x55, 0xe0, 0x0a, 0x07, 0xd9, 0xd5, 0x04, 0x1c, 0x20, 0x1c, 0x29, 0xf7, 0xff, 0xfd, 0xcd, 225, 47, 255, 30, 230, 0, 2, 176, 225, 47, 255, 30, 230, 0, 2, 208, 225, 47, 255, 30, 230, 0, 2, 240, 225, 47, 255,
0xe0, 0x03, 0x1c, 0x20, 0x1c, 0x29, 0xf7, 0xff, 0xfe, 0x0d, 0xbd, 0x70, 0x13, 0x70, 0x21, 0x30, 30, 230, 0, 3, 16, 225, 47, 255, 30, 230, 0, 3, 48, 225, 47, 255, 30, 230, 0, 3, 80, 225, 47, 255, 30, 230, 0, 3, 112,
0xb5, 0x10, 0x22, 0x00, 0x1c, 0x04, 0xf7, 0xff, 0xff, 0xc9, 0x28, 0x00, 0xdb, 0x0d, 0x69, 0xa2, 225, 47, 255, 30, 230, 0, 3, 144, 225, 47, 255, 30, 230, 0, 3, 176, 225, 47, 255, 30, 230, 0, 3, 208, 225, 47, 255,
0x4b, 0x06, 0x42, 0x9a, 0xd1, 0x09, 0x4b, 0x06, 0x21, 0x01, 0x68, 0x1a, 0x70, 0x11, 0x68, 0x1b, 30, 230, 0, 3, 240, 225, 47, 255, 30, 230, 0, 4, 16, 225, 47, 255, 30, 230, 0, 4, 48, 225, 47, 255, 30, 230, 0, 4, 80,
0x78, 0x5b, 0x2b, 0x00, 0xd1, 0x01, 0xf7, 0xff, 0xee, 0x00, 0xbd, 0x10, 0x5d, 0x1c, 0x9e, 0xa3, 225, 47, 255, 30, 230, 0, 4, 112, 225, 47, 255, 30, 230, 0, 4, 144, 225, 47, 255, 30, 230, 0, 4, 176, 225, 47, 255,
0x13, 0x70, 0x21, 0x2c, 0xb5, 0x10, 0x20, 0x80, 0x01, 0x00, 0x21, 0x20, 0xf7, 0xff, 0xee, 0x00, 30, 230, 0, 4, 208, 225, 47, 255, 30, 230, 0, 4, 240, 225, 47, 255, 30, 230, 0, 5, 16, 225, 47, 255, 30, 230, 0, 5,
0x1e, 0x04, 0xd0, 0x0f, 0x21, 0x80, 0x22, 0xa0, 0x1c, 0x20, 0x01, 0x09, 0x05, 0xd2, 0xf7, 0xff, 48, 225, 47, 255, 30, 230, 0, 5, 80, 225, 47, 255, 30, 230, 0, 6, 144, 225, 47, 255, 30, 230, 0, 7, 240, 225, 47, 255,
0xff, 0xa5, 0x1e, 0x43, 0x41, 0x98, 0x23, 0x02, 0x1a, 0x18, 0x4b, 0x03, 0x60, 0x58, 0x1c, 0x20, 30, 230, 0, 8, 16, 225, 47, 255, 30, 230, 0, 9, 240, 225, 47, 255, 30, 230, 0, 10, 16, 225, 47, 255, 30, 225, 160, 32,
0xf7, 0xff, 0xed, 0xfa, 0xbd, 0x10, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x30, 0x4b, 0x06, 0x21, 0x03, 14, 226, 144, 16, 0, 227, 176, 0, 4, 239, 0, 0, 171, 225, 47, 255, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 7, 15,
0x68, 0x1a, 0x43, 0x8a, 0x60, 0x1a, 0x22, 0x00, 0x60, 0x9a, 0x60, 0xda, 0x60, 0x5a, 0x61, 0x1a, 54, 226, 128, 0, 32, 226, 81, 16, 1, 26, 255, 255, 251, 225, 47, 255, 30, 238, 7, 15, 58, 226, 128, 0, 32, 226, 81,
0x61, 0x5a, 0x61, 0x9a, 0x47, 0x70, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x30, 0xb5, 0xf0, 0xb0, 0x83, 16, 1, 26, 255, 255, 251, 225, 47, 255, 30, 227, 160, 0, 0, 238, 7, 15, 21, 225, 47, 255, 30, 239, 0, 0, 204, 225, 47,
0x78, 0x03, 0x1c, 0x06, 0x1c, 0x0f, 0x92, 0x00, 0x2b, 0xe0, 0xd1, 0x00, 0xe0, 0xd4, 0x4c, 0xb4, 255, 30, 238, 19, 15, 16, 225, 47, 255, 30, 238, 3, 15, 16, 225, 47, 255, 30, 229, 159, 16, 20, 225, 193, 0, 176, 225,
0x22, 0x00, 0x61, 0x22, 0x2b, 0xe4, 0xd1, 0x00, 0xe0, 0xb5, 0x2b, 0xe4, 0xd8, 0x2a, 0x2b, 0xa8, 47, 255, 30, 227, 192, 1, 2, 225, 47, 255, 30, 227, 128, 1, 2, 225, 47, 255, 30, 13, 139, 66, 10, 225, 160, 0, 0, 181,
0xd1, 0x00, 0xe0, 0x98, 0x2b, 0xa8, 0xd8, 0x10, 0x2b, 0x8a, 0xd0, 0x51, 0x2b, 0x8a, 0xd8, 0x05, 240, 76, 21, 35, 4, 96, 34, 28, 38, 28, 34, 50, 32, 54, 64, 176, 131, 100, 99, 100, 162, 100, 227, 98, 33, 101, 32,
0x2b, 0x70, 0xd0, 0x60, 0x2b, 0x71, 0xd0, 0x00, 0xe1, 0x48, 0xe0, 0x81, 0x2b, 0x8d, 0xd1, 0x00, 101, 97, 100, 36, 28, 7, 28, 13, 28, 48, 33, 32, 247, 255, 239, 150, 28, 32, 33, 36, 247, 255, 239, 146, 75, 9, 73,
0xe0, 0x89, 0x2b, 0xa4, 0xd0, 0x00, 0xe1, 0x41, 0xe0, 0xa4, 0x2b, 0xd9, 0xd1, 0x00, 0xe0, 0x8d, 10, 104, 24, 34, 2, 35, 1, 150, 0, 247, 255, 239, 94, 28, 4, 40, 0, 209, 3, 28, 56, 28, 41, 247, 255, 239, 128, 176,
0x2b, 0xd9, 0xd8, 0x06, 0x2b, 0xab, 0xd1, 0x00, 0xe0, 0x95, 0x2b, 0xd0, 0xd0, 0x00, 0xe1, 0x35, 3, 28, 32, 189, 240, 19, 112, 33, 96, 19, 112, 32, 4, 87, 70, 83, 2, 181, 16, 75, 5, 104, 24, 40, 0, 219, 1, 247, 255,
0xe0, 0x79, 0x2b, 0xdb, 0xd1, 0x00, 0xe0, 0xa0, 0x2b, 0xdb, 0xd3, 0x7b, 0x2b, 0xe0, 0xd0, 0x00, 239, 52, 74, 2, 35, 1, 66, 91, 96, 19, 189, 16, 19, 112, 32, 4, 181, 112, 75, 15, 0, 128, 176, 130, 28, 14, 88, 192,
0xe1, 0x2c, 0xe0, 0xa1, 0x2b, 0xf6, 0xd1, 0x00, 0xe1, 0x1e, 0x2b, 0xf6, 0xd8, 0x12, 0x2b, 0xf2, 33, 1, 247, 255, 239, 32, 77, 12, 96, 40, 40, 0, 219, 16, 76, 11, 28, 49, 28, 32, 34, 6, 240, 0, 251, 15, 35, 6, 100,
0xd1, 0x00, 0xe0, 0xaa, 0x2b, 0xf2, 0xd8, 0x06, 0x2b, 0xf0, 0xd1, 0x00, 0xe0, 0xa0, 0x2b, 0xf1, 99, 100, 36, 104, 40, 52, 64, 73, 6, 34, 1, 35, 0, 148, 0, 247, 255, 239, 34, 176, 2, 189, 112, 19, 112, 32, 160, 19,
0xd0, 0x00, 0xe1, 0x1b, 0xe0, 0x9f, 0x2b, 0xf4, 0xd1, 0x00, 0xe0, 0xad, 0x2b, 0xf4, 0xd9, 0x00, 112, 32, 4, 19, 112, 33, 96, 87, 70, 83, 1, 181, 16, 76, 5, 104, 32, 40, 0, 219, 4, 247, 255, 238, 254, 35, 1, 66, 91,
0xe0, 0xbf, 0xe0, 0xa6, 0x2b, 0xf9, 0xd1, 0x00, 0xe0, 0xd7, 0x2b, 0xf9, 0xd8, 0x06, 0x2b, 0xf7, 96, 35, 32, 1, 189, 16, 19, 112, 32, 32, 181, 16, 76, 14, 176, 130, 104, 35, 43, 0, 218, 20, 28, 32, 48, 32, 33, 1,
0xd1, 0x00, 0xe0, 0xb9, 0x2b, 0xf8, 0xd0, 0x00, 0xe1, 0x08, 0xe0, 0xca, 0x2b, 0xfb, 0xd1, 0x00, 247, 255, 238, 232, 96, 32, 40, 0, 218, 2, 32, 11, 66, 64, 224, 10, 35, 0, 34, 0, 73, 6, 147, 0, 247, 255, 238, 244,
0xe0, 0xf3, 0x2b, 0xfb, 0xd2, 0x00, 0xe0, 0xed, 0x2b, 0xff, 0xd0, 0x00, 0xe0, 0xfe, 0xe0, 0xf6, 74, 5, 35, 128, 0, 155, 96, 19, 32, 0, 176, 2, 189, 16, 19, 112, 32, 32, 85, 77, 83, 1, 19, 112, 33, 192, 181, 240,
0x69, 0xa3, 0x25, 0x00, 0x2b, 0x00, 0xd0, 0x00, 0xe0, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0x68, 0x22, 77, 20, 176, 131, 104, 43, 28, 6, 43, 0, 218, 1, 37, 0, 224, 29, 76, 17, 75, 17, 28, 39, 98, 35, 55, 32, 35, 4, 98,
0x23, 0x1c, 0x42, 0x1a, 0xd1, 0x00, 0xe0, 0xf1, 0xf7, 0xff, 0xfc, 0xf8, 0x69, 0x62, 0x23, 0x04, 99, 28, 56, 33, 8, 247, 255, 238, 254, 104, 40, 35, 1, 73, 12, 34, 0, 151, 0, 247, 255, 238, 204, 33, 4, 28, 5, 72,
0x43, 0x13, 0x61, 0x63, 0xe0, 0xf1, 0x68, 0xa3, 0x68, 0xe2, 0x25, 0x00, 0x43, 0x1a, 0x92, 0x01, 8, 247, 255, 238, 242, 108, 35, 96, 35, 45, 0, 208, 2, 46, 0, 208, 0, 96, 51, 176, 3, 28, 40, 189, 240, 19, 112, 32,
0x68, 0x22, 0x23, 0x1c, 0x42, 0x1a, 0xd1, 0x09, 0x9a, 0x00, 0xf7, 0xff, 0xfd, 0x80, 0x1e, 0x05, 32, 19, 112, 33, 192, 19, 112, 34, 0, 85, 77, 83, 2, 181, 16, 32, 0, 247, 255, 255, 202, 23, 195, 26, 24, 15, 192, 189,
0xd0, 0x04, 0x4b, 0x73, 0x22, 0x01, 0x68, 0x19, 0x43, 0x0a, 0x60, 0x1a, 0x4b, 0x70, 0x68, 0x1a, 16, 181, 112, 75, 30, 176, 130, 104, 27, 43, 0, 219, 51, 78, 28, 28, 51, 51, 64, 98, 51, 35, 4, 98, 115, 98, 243, 104,
0x23, 0x1d, 0x40, 0x13, 0x9a, 0x01, 0x43, 0x1a, 0xd0, 0x04, 0x1c, 0x38, 0x99, 0x00, 0xf7, 0xff, 51, 100, 113, 67, 89, 100, 48, 28, 52, 28, 48, 48, 68, 52, 32, 98, 176, 99, 50, 99, 113, 28, 37, 54, 56, 104, 40, 104,
0xff, 0x1f, 0x1c, 0x05, 0x2d, 0x00, 0xd0, 0x00, 0xe0, 0xcf, 0xf7, 0xff, 0xff, 0x33, 0xe0, 0xcc, 105, 247, 255, 238, 186, 53, 8, 66, 181, 209, 248, 77, 15, 33, 24, 53, 32, 28, 40, 247, 255, 238, 178, 75, 11, 73, 12,
0x68, 0x23, 0x07, 0x9a, 0xd4, 0x00, 0xe0, 0xc1, 0x68, 0x41, 0x68, 0x82, 0x1c, 0x38, 0xf7, 0xff, 104, 24, 34, 2, 35, 1, 149, 0, 247, 255, 238, 126, 40, 0, 219, 8, 104, 32, 104, 97, 247, 255, 238, 160, 52, 8, 66, 180,
0xfe, 0xdd, 0x1c, 0x05, 0xe0, 0xc1, 0x68, 0x71, 0x68, 0xb2, 0x2b, 0xd0, 0xd1, 0xf6, 0x02, 0xc9, 209, 248, 32, 1, 224, 0, 32, 0, 176, 2, 189, 112, 70, 192, 19, 112, 32, 32, 19, 112, 33, 192, 85, 77, 83, 3, 181, 16,
0x02, 0x52, 0xe7, 0xf3, 0x1c, 0x08, 0x22, 0x40, 0x99, 0x00, 0xe7, 0xf0, 0x68, 0x22, 0x23, 0x1d, 76, 5, 104, 32, 40, 0, 219, 4, 247, 255, 238, 78, 35, 1, 66, 91, 96, 35, 32, 1, 189, 16, 19, 112, 32, 96, 181, 112,
0x42, 0x1a, 0xd1, 0x00, 0xe0, 0xaa, 0x68, 0x43, 0x68, 0x82, 0x07, 0x9b, 0x43, 0x13, 0x0b, 0xdb, 75, 28, 176, 130, 104, 28, 44, 0, 219, 47, 78, 26, 96, 48, 32, 4, 98, 112, 98, 240, 104, 91, 96, 113, 67, 89, 29, 52,
0x03, 0xdb, 0x60, 0xe3, 0xe0, 0xa8, 0x68, 0x22, 0x23, 0x1d, 0x25, 0x00, 0x42, 0x1a, 0xd0, 0x00, 98, 180, 52, 28, 98, 54, 99, 50, 99, 113, 28, 37, 54, 56, 104, 40, 104, 105, 247, 255, 238, 108, 53, 8, 66, 181, 209,
0xe0, 0xa3, 0xe0, 0x9b, 0x68, 0x22, 0x23, 0x1d, 0x42, 0x1a, 0xd1, 0x00, 0xe0, 0x96, 0x4a, 0x51, 248, 77, 15, 33, 24, 53, 32, 28, 40, 247, 255, 238, 100, 75, 11, 33, 2, 104, 24, 34, 2, 35, 1, 149, 0, 247, 255, 238,
0x4b, 0x4f, 0x25, 0xa0, 0x61, 0x1a, 0x02, 0x2d, 0xe0, 0x97, 0x68, 0x21, 0x23, 0x1c, 0x42, 0x19, 48, 40, 0, 219, 8, 104, 32, 104, 97, 247, 255, 238, 82, 52, 8, 66, 180, 209, 248, 32, 1, 224, 0, 32, 0, 176, 2, 189,
0xd1, 0x00, 0xe0, 0x8b, 0x60, 0x3a, 0xe0, 0x8f, 0x4b, 0x49, 0x22, 0x1c, 0x68, 0x19, 0x42, 0x11, 112, 70, 192, 19, 112, 32, 96, 19, 112, 34, 32, 181, 16, 76, 14, 176, 130, 104, 35, 43, 0, 218, 19, 28, 32, 48, 32,
0xd1, 0x03, 0x69, 0x1b, 0x2b, 0x00, 0xd1, 0x00, 0xe0, 0x80, 0x4b, 0x45, 0x69, 0x1b, 0xe0, 0x6a, 33, 1, 247, 255, 237, 250, 96, 32, 40, 0, 218, 2, 32, 11, 66, 64, 224, 9, 35, 0, 33, 1, 34, 0, 147, 0, 247, 255, 238,
0x68, 0x43, 0x60, 0xa3, 0xe0, 0x80, 0x68, 0xa3, 0xe0, 0x65, 0x68, 0x43, 0x2b, 0x00, 0xd0, 0x03, 6, 35, 128, 0, 155, 96, 99, 32, 0, 176, 2, 189, 16, 70, 192, 19, 112, 32, 96, 75, 2, 34, 0, 96, 26, 96, 90, 96, 154,
0x68, 0x22, 0x23, 0x02, 0x43, 0x13, 0xe0, 0x02, 0x68, 0x23, 0x22, 0x02, 0x43, 0x93, 0x60, 0x23, 71, 112, 19, 112, 34, 96, 181, 240, 72, 15, 33, 160, 104, 68, 35, 0, 48, 12, 34, 0, 0, 137, 3, 214, 224, 1, 4, 43, 12,
0xe0, 0x72, 0x68, 0x23, 0x22, 0x02, 0xe0, 0x2e, 0x68, 0x47, 0xf0, 0x00, 0xf9, 0xf1, 0x68, 0x23, 27, 0, 93, 24, 237, 0, 173, 25, 101, 105, 111, 104, 237, 25, 125, 66, 174, 211, 3, 104, 103, 28, 93, 66, 189, 211, 240,
0x22, 0x04, 0x43, 0x93, 0x60, 0x23, 0x25, 0x00, 0x2f, 0x00, 0xd0, 0x66, 0x1c, 0x31, 0x1e, 0x78, 50, 1, 128, 3, 48, 2, 66, 138, 209, 233, 189, 240, 70, 192, 19, 112, 34, 96, 181, 240, 77, 51, 36, 160, 176, 131, 11,
0x31, 0x08, 0xf0, 0x00, 0xf9, 0xb9, 0x1e, 0x05, 0xd1, 0x5f, 0x4b, 0x31, 0x22, 0x04, 0x68, 0x19, 207, 0, 164, 158, 9, 96, 239, 66, 167, 217, 1, 76, 47, 96, 236, 77, 45, 79, 47, 104, 236, 70, 156, 0, 100, 25, 60, 137,
0xe0, 0x3d, 0x68, 0x23, 0x22, 0x04, 0xe0, 0x16, 0x68, 0x46, 0xf7, 0xff, 0xfd, 0x37, 0x68, 0x23, 164, 97, 44, 97, 108, 0, 103, 104, 69, 25, 63, 0, 191, 149, 0, 25, 199, 24, 85, 55, 12, 149, 1, 224, 51, 104, 61, 66,
0x22, 0x08, 0x43, 0x93, 0x60, 0x23, 0x25, 0x00, 0x2e, 0x00, 0xd0, 0x4e, 0x1c, 0x30, 0xf0, 0x00, 141, 216, 23, 104, 187, 24, 235, 66, 139, 217, 42, 79, 32, 27, 77, 70, 99, 97, 124, 97, 189, 96, 25, 0, 99, 25, 28,
0xe9, 0x9a, 0xf7, 0xff, 0xfd, 0x1d, 0x1e, 0x05, 0xd1, 0x47, 0x4b, 0x25, 0x22, 0x08, 0x68, 0x19, 0, 164, 25, 0, 105, 3, 153, 8, 24, 235, 96, 11, 105, 67, 27, 93, 96, 53, 66, 149, 217, 43, 224, 20, 155, 1, 66, 157,
0xe0, 0x25, 0x68, 0x23, 0x22, 0x08, 0x40, 0x13, 0xe0, 0x25, 0x68, 0x43, 0x68, 0x82, 0x93, 0x00, 210, 19, 79, 21, 70, 99, 26, 105, 97, 124, 97, 185, 96, 29, 0, 99, 25, 28, 0, 164, 25, 0, 105, 3, 156, 8, 26, 82, 96,
0x92, 0x01, 0x68, 0xc6, 0xf0, 0x00, 0xfa, 0xc4, 0x68, 0x23, 0x22, 0x10, 0x43, 0x93, 0x60, 0x23, 35, 105, 67, 96, 51, 66, 147, 217, 21, 96, 50, 224, 19, 52, 1, 55, 12, 157, 0, 66, 172, 211, 200, 77, 8, 24, 81, 97,
0x9b, 0x01, 0x2b, 0x00, 0xd0, 0x30, 0x9a, 0x00, 0x2a, 0x00, 0xd0, 0x2d, 0x25, 0x00, 0x2e, 0x00, 108, 104, 2, 70, 99, 66, 145, 217, 2, 32, 2, 66, 64, 224, 5, 96, 25, 153, 8, 35, 0, 96, 11, 96, 51, 32, 0, 176, 3, 189,
0xd0, 0x2b, 0x1c, 0x18, 0xf0, 0x00, 0xe9, 0x76, 0x1c, 0x32, 0x1c, 0x01, 0x98, 0x00, 0xf0, 0x00, 240, 19, 112, 39, 96, 0, 0, 2, 127, 19, 112, 34, 96, 181, 240, 176, 133, 28, 7, 28, 14, 146, 3, 76, 40, 224, 71, 74,
0xfa, 0xd9, 0x60, 0x38, 0x28, 0x00, 0xdd, 0x20, 0x4b, 0x11, 0x22, 0x10, 0x68, 0x19, 0x43, 0x0a, 40, 75, 40, 104, 80, 147, 0, 28, 35, 51, 36, 147, 1, 28, 57, 154, 3, 75, 37, 247, 255, 255, 127, 98, 160, 40, 0, 209,
0x60, 0x1a, 0xe0, 0x1a, 0x68, 0x23, 0x60, 0x3b, 0xe0, 0x16, 0x4b, 0x0f, 0x60, 0x0b, 0x68, 0x23, 60, 105, 226, 27, 210, 98, 226, 42, 0, 208, 11, 2, 82, 28, 48, 33, 0, 240, 0, 249, 102, 106, 227, 2, 90, 24, 182, 154,
0x60, 0x4b, 0x68, 0x63, 0x60, 0x8b, 0xe0, 0x0f, 0x68, 0x43, 0x61, 0xa3, 0xe0, 0x0c, 0x68, 0x40, 3, 24, 255, 26, 210, 146, 3, 77, 23, 106, 105, 41, 0, 208, 26, 75, 22, 104, 155, 43, 1, 209, 4, 106, 40, 28, 50, 247,
0xf0, 0x00, 0xe9, 0x58, 0x1c, 0x39, 0xf7, 0xff, 0xfb, 0xeb, 0xe7, 0x42, 0x1c, 0x30, 0x1c, 0x39, 255, 254, 133, 224, 3, 106, 40, 28, 50, 247, 255, 254, 210, 75, 14, 98, 168, 106, 154, 42, 0, 209, 1, 32, 3, 224, 13,
0x9a, 0x00, 0xf7, 0xff, 0xfc, 0x9c, 0xe7, 0x3c, 0x25, 0x00, 0xb0, 0x03, 0x1c, 0x28, 0xbd, 0xf0, 106, 91, 2, 90, 24, 182, 154, 3, 24, 255, 26, 210, 146, 3, 75, 7, 106, 90, 106, 219, 24, 211, 43, 0, 209, 2, 32, 4,
0x13, 0x70, 0x21, 0x30, 0x00, 0x05, 0x31, 0x00, 0x48, 0x45, 0x4c, 0x4f, 0xb5, 0x38, 0x1c, 0x03, 66, 64, 224, 3, 155, 3, 43, 0, 209, 180, 32, 0, 176, 5, 189, 240, 70, 192, 19, 112, 39, 96, 19, 112, 34, 96, 19, 112,
0x68, 0x1a, 0x68, 0xc0, 0x2a, 0x86, 0xd0, 0x19, 0x2a, 0x86, 0xd8, 0x04, 0x2a, 0x79, 0xd0, 0x07, 39, 128, 19, 112, 39, 124, 181, 248, 36, 127, 28, 15, 28, 30, 9, 193, 75, 23, 64, 32, 36, 128, 0, 128, 0, 164, 26, 36,
0x2a, 0x7a, 0xd1, 0x2d, 0xe0, 0x0b, 0x2a, 0x88, 0xd0, 0x1b, 0x2a, 0x95, 0xd1, 0x28, 0xe0, 0x20, 99, 25, 99, 88, 99, 156, 66, 148, 217, 0, 99, 154, 74, 17, 35, 128, 107, 144, 0, 155, 66, 152, 209, 1, 35, 0, 99, 147,
0x4a, 0x15, 0x20, 0x01, 0x68, 0x14, 0x22, 0x1c, 0x42, 0x14, 0xd1, 0x24, 0xe0, 0x20, 0x4a, 0x12, 76, 13, 107, 163, 43, 0, 208, 16, 28, 37, 53, 64, 28, 8, 34, 1, 28, 41, 247, 255, 255, 126, 75, 8, 100, 24, 40, 0, 209,
0x24, 0x1c, 0x68, 0x15, 0x42, 0x25, 0xd0, 0x1b, 0x69, 0x53, 0xe0, 0x10, 0x4a, 0x0e, 0x20, 0x1c, 9, 107, 97, 107, 162, 24, 105, 28, 56, 240, 0, 248, 186, 75, 2, 32, 0, 107, 155, 96, 51, 189, 248, 70, 192, 19, 112,
0x68, 0x14, 0x42, 0x04, 0xd0, 0x14, 0x69, 0x53, 0x21, 0x04, 0x43, 0x8b, 0x61, 0x53, 0x20, 0x01, 39, 96, 19, 112, 41, 96, 181, 240, 76, 31, 28, 7, 28, 13, 28, 35, 176, 131, 28, 16, 28, 22, 51, 68, 28, 57, 28, 42,
0xe0, 0x11, 0x4a, 0x09, 0x68, 0x14, 0x22, 0x1c, 0x42, 0x14, 0xd0, 0x09, 0x23, 0x02, 0x60, 0x03, 247, 255, 255, 187, 144, 1, 100, 160, 40, 0, 209, 42, 108, 99, 8, 154, 24, 255, 26, 237, 75, 22, 24, 182, 66, 157, 217,
0xe7, 0xf5, 0x4a, 0x05, 0x68, 0x14, 0x22, 0x1c, 0x42, 0x14, 0xd0, 0x01, 0x23, 0x0a, 0xe7, 0xf6, 15, 9, 240, 10, 106, 100, 224, 101, 34, 28, 57, 247, 255, 255, 74, 100, 160, 40, 0, 209, 25, 109, 35, 1, 218, 2, 91,
0x1c, 0x18, 0xf7, 0xff, 0xfc, 0x4b, 0xbd, 0x38, 0x13, 0x70, 0x21, 0x30, 0xb5, 0x38, 0x1c, 0x05, 24, 182, 24, 255, 26, 237, 45, 0, 208, 16, 76, 10, 28, 48, 28, 35, 51, 68, 28, 57, 28, 42, 247, 255, 255, 149, 100,
0x1c, 0x0c, 0x1c, 0x13, 0x1c, 0x29, 0x1c, 0x22, 0x20, 0x10, 0xf0, 0x00, 0xe8, 0xf8, 0xbd, 0x38, 160, 40, 0, 209, 6, 108, 99, 66, 157, 208, 3, 32, 5, 66, 64, 224, 0, 152, 1, 176, 3, 189, 240, 70, 192, 19, 112, 41,
0xb5, 0x08, 0x1c, 0x01, 0x22, 0x00, 0x20, 0x12, 0x23, 0x00, 0xf0, 0x00, 0xe8, 0xf0, 0xbd, 0x08, 96, 0, 0, 1, 255, 181, 240, 75, 50, 28, 21, 104, 26, 176, 131, 28, 6, 28, 15, 42, 0, 208, 3, 34, 0, 96, 26, 96, 90,
0xe6, 0x00, 0x00, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 96, 154, 30, 115, 43, 1, 216, 79, 45, 0, 208, 77, 75, 42, 66, 157, 217, 1, 37, 2, 224, 73, 76, 41, 46, 1, 209, 2, 247,
0xe6, 0x00, 0x00, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 255, 253, 100, 224, 1, 247, 255, 254, 79, 75, 37, 101, 96, 109, 90, 42, 0, 208, 1, 28, 21, 224, 59, 76, 31, 51, 88,
0xe6, 0x00, 0x00, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 96, 99, 96, 166, 28, 56, 28, 41, 247, 255, 236, 132, 104, 96, 33, 0, 74, 27, 240, 0, 248, 121, 28, 42, 104, 96, 28,
0xe6, 0x00, 0x00, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 57, 240, 0, 248, 52, 28, 56, 28, 41, 247, 255, 236, 122, 33, 160, 104, 96, 35, 0, 52, 12, 34, 0, 0, 137, 3, 214, 150,
0xe6, 0x00, 0x01, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 1, 224, 1, 4, 51, 12, 27, 0, 94, 24, 246, 0, 182, 25, 134, 105, 119, 104, 246, 70, 188, 159, 1, 68, 102, 66, 183, 211,
0xe6, 0x00, 0x01, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 4, 104, 71, 28, 94, 70, 188, 69, 102, 211, 237, 50, 1, 128, 35, 52, 2, 66, 138, 209, 229, 75, 4, 34, 1, 96, 26, 224,
0xe6, 0x00, 0x01, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 1, 37, 1, 66, 109, 176, 3, 28, 40, 189, 240, 70, 192, 19, 112, 34, 96, 0, 3, 169, 140, 19, 112, 41, 96, 181, 240, 28,
0xe6, 0x00, 0x01, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 6, 28, 13, 28, 20, 42, 15, 217, 3, 28, 11, 67, 3, 7, 159, 208, 10, 44, 0, 208, 5, 35, 0, 92, 234, 84, 242, 51, 1, 66,
0xe6, 0x00, 0x02, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 163, 209, 250, 188, 240, 188, 2, 71, 8, 28, 21, 28, 12, 28, 3, 104, 38, 96, 30, 104, 102, 96, 94, 104, 166, 96, 158,
0xe6, 0x00, 0x02, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 104, 230, 61, 16, 96, 222, 52, 16, 51, 16, 45, 15, 216, 242, 58, 16, 9, 19, 28, 93, 1, 45, 1, 27, 25, 70, 25, 77, 26,
0xe6, 0x00, 0x02, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 209, 28, 12, 41, 3, 217, 217, 35, 0, 88, 234, 80, 242, 51, 4, 26, 202, 42, 3, 216, 249, 57, 4, 8, 140, 28, 99, 0, 155,
0xe6, 0x00, 0x02, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0, 164, 24, 246, 24, 237, 27, 12, 231, 201, 181, 112, 28, 3, 7, 132, 208, 13, 42, 0, 208, 64, 6, 13, 58, 1, 14, 45,
0xe6, 0x00, 0x03, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 36, 3, 224, 2, 42, 0, 208, 57, 58, 1, 112, 29, 51, 1, 66, 35, 209, 248, 42, 3, 217, 41, 37, 255, 64, 13, 2, 44, 67,
0xe6, 0x00, 0x03, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 37, 4, 44, 28, 30, 67, 37, 42, 15, 217, 18, 28, 22, 28, 28, 62, 16, 96, 37, 96, 101, 96, 165, 96, 229, 52, 16, 46, 15,
0xe6, 0x00, 0x03, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 216, 247, 58, 16, 9, 22, 54, 1, 1, 54, 25, 158, 35, 15, 64, 26, 42, 3, 217, 12, 35, 0, 80, 245, 51, 4, 26, 212, 44,
0xe6, 0x00, 0x03, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 3, 216, 250, 58, 4, 8, 147, 51, 1, 0, 155, 24, 246, 35, 3, 64, 26, 28, 51, 42, 0, 208, 6, 6, 9, 14, 12, 33, 0, 84, 92,
0xe6, 0x00, 0x04, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 49, 1, 66, 138, 209, 251, 188, 112, 188, 2, 71, 8, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0xe6, 0x00, 0x04, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0xe6, 0x00, 0x04, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 100, 101, 118, 47, 117, 115, 98, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0xe6, 0x00, 0x04, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0xe6, 0x00, 0x05, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0, 0, 0, 0, 0, 47, 100, 101, 118, 47, 115, 100, 105, 111, 47, 115, 100, 104, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0xe6, 0x00, 0x05, 0x50, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x06, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0, 0, 0, 0, 0, 0, 19, 112, 32, 214, 19, 112, 32, 224, 36, 73, 79, 83, 86, 101, 114, 115, 105, 111, 110, 58, 32, 68,
0xe6, 0x00, 0x07, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x08, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 73, 80, 80, 58, 32, 68, 101, 99, 32, 50, 56, 32, 50, 48, 49, 48, 32, 49, 57, 58, 51, 50, 58, 48, 50, 32, 54, 52, 77,
0xe6, 0x00, 0x09, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x0a, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 36, 10, 0, 47, 100, 101, 118, 47, 117, 115, 98, 50, 0, 47, 100, 101, 118, 47, 115, 100, 105, 111, 47, 115, 100, 104,
0xe1, 0xa0, 0x20, 0x0e, 0xe2, 0x90, 0x10, 0x00, 0xe3, 0xb0, 0x00, 0x04, 0xef, 0x00, 0x00, 0xab, 99, 0, 0
0xe1, 0x2f, 0xff, 0x12, 0x00, 0x00, 0x00, 0x00, 0xe5, 0x9f, 0xc0, 0x54, 0xe5, 0x9c, 0xc0, 0x00, };
0xe1, 0xa0, 0x00, 0x00, 0xe7, 0x9c, 0xc1, 0x0b, 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1c,
0xe3, 0xa0, 0xb0, 0x3f, 0xea, 0xff, 0xff, 0xf7, 0xe3, 0xa0, 0xb0, 0x40, 0xea, 0xff, 0xff, 0xf5,
0xe3, 0xa0, 0x00, 0x00, 0xee, 0x07, 0x0f, 0x15, 0xe1, 0x2f, 0xff, 0x1e, 0xee, 0x13, 0x0f, 0x10,
0xe1, 0x2f, 0xff, 0x1e, 0xee, 0x03, 0x0f, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xef, 0x00, 0x00, 0xcc,
0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0xc0, 0x01, 0x02, 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x80, 0x01, 0x02,
0xe1, 0x2f, 0xff, 0x1e, 0x13, 0x70, 0x21, 0x00, 0xb5, 0x70, 0xb0, 0x82, 0x4b, 0x10, 0x00, 0x80,
0x58, 0xc0, 0x1c, 0x0e, 0x21, 0x01, 0xf7, 0xff, 0xef, 0x6c, 0x4b, 0x0e, 0x1c, 0x05, 0x60, 0x18,
0x28, 0x00, 0xdb, 0x11, 0x4c, 0x0c, 0x1c, 0x31, 0x1c, 0x20, 0x22, 0x06, 0xf0, 0x00, 0xfa, 0xe2,
0x23, 0x06, 0x64, 0x63, 0x64, 0x24, 0x1c, 0x28, 0x34, 0x40, 0x49, 0x08, 0x22, 0x01, 0x23, 0x00,
0x94, 0x00, 0xf7, 0xff, 0xef, 0x6e, 0x1c, 0x05, 0xb0, 0x02, 0x1c, 0x28, 0xbd, 0x70, 0x46, 0xc0,
0x13, 0x70, 0x20, 0xa0, 0x13, 0x70, 0x20, 0x04, 0x13, 0x70, 0x21, 0x60, 0x57, 0x46, 0x53, 0x01,
0xb5, 0x08, 0x4b, 0x05, 0x68, 0x18, 0x28, 0x00, 0xdb, 0x01, 0xf7, 0xff, 0xef, 0x46, 0x4a, 0x02,
0x23, 0x01, 0x42, 0x5b, 0x60, 0x13, 0xbd, 0x08, 0x13, 0x70, 0x20, 0x04, 0xb5, 0xf0, 0xb0, 0x83,
0x4c, 0x14, 0x23, 0x04, 0x60, 0x22, 0x1c, 0x26, 0x1c, 0x22, 0x32, 0x20, 0x36, 0x40, 0x64, 0x63,
0x64, 0xa2, 0x64, 0xe3, 0x62, 0x21, 0x65, 0x20, 0x65, 0x61, 0x64, 0x24, 0x1c, 0x07, 0x1c, 0x0d,
0x1c, 0x30, 0x21, 0x20, 0xf7, 0xff, 0xef, 0x68, 0x1c, 0x20, 0x21, 0x24, 0xf7, 0xff, 0xef, 0x64,
0x4b, 0x09, 0x49, 0x0a, 0x68, 0x18, 0x22, 0x02, 0x23, 0x01, 0x96, 0x00, 0xf7, 0xff, 0xef, 0x30,
0x1e, 0x04, 0xd1, 0x03, 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xef, 0x52, 0xb0, 0x03, 0x1c, 0x20,
0xbd, 0xf0, 0x46, 0xc0, 0x13, 0x70, 0x21, 0x60, 0x13, 0x70, 0x20, 0x04, 0x57, 0x46, 0x53, 0x02,
0xb5, 0x70, 0xb0, 0x82, 0x1c, 0x03, 0x48, 0x1c, 0x68, 0x04, 0x20, 0x00, 0x2c, 0x00, 0xdb, 0x31,
0x4e, 0x1a, 0x60, 0x33, 0x23, 0x04, 0x62, 0x73, 0x62, 0xf3, 0x6b, 0xb3, 0x60, 0x71, 0x43, 0x59,
0x1c, 0x34, 0x1d, 0x30, 0x34, 0x20, 0x62, 0x36, 0x62, 0xb0, 0x63, 0x32, 0x63, 0x71, 0x1c, 0x25,
0x36, 0x38, 0x68, 0x28, 0x68, 0x69, 0xf7, 0xff, 0xef, 0x30, 0x35, 0x08, 0x42, 0xb5, 0xd1, 0xf8,
0x4d, 0x0e, 0x21, 0x18, 0x35, 0x20, 0x1c, 0x28, 0xf7, 0xff, 0xef, 0x26, 0x4b, 0x0a, 0x49, 0x0c,
0x68, 0x18, 0x22, 0x02, 0x23, 0x01, 0x95, 0x00, 0xf7, 0xff, 0xee, 0xf2, 0x1c, 0x03, 0x20, 0x00,
0x2b, 0x00, 0xdb, 0x07, 0x68, 0x20, 0x68, 0x61, 0xf7, 0xff, 0xef, 0x12, 0x34, 0x08, 0x42, 0xb4,
0xd1, 0xf8, 0x20, 0x01, 0xb0, 0x02, 0xbd, 0x70, 0x13, 0x70, 0x20, 0x20, 0x13, 0x70, 0x21, 0xc0,
0x55, 0x4d, 0x53, 0x03, 0xb5, 0x30, 0xb0, 0x83, 0x4c, 0x0e, 0x25, 0x00, 0x68, 0x23, 0x2b, 0x00,
0xda, 0x14, 0x1c, 0x20, 0x30, 0x20, 0x21, 0x01, 0xf7, 0xff, 0xee, 0xba, 0x60, 0x20, 0x28, 0x00,
0xdb, 0x0a, 0x22, 0x00, 0x23, 0x00, 0x49, 0x08, 0x95, 0x00, 0xf7, 0xff, 0xee, 0xca, 0x4a, 0x07,
0x23, 0x80, 0x00, 0x9b, 0x63, 0x93, 0xe0, 0x01, 0x25, 0x0b, 0x42, 0x6d, 0xb0, 0x03, 0x1c, 0x28,
0xbd, 0x30, 0x46, 0xc0, 0x13, 0x70, 0x20, 0x20, 0x55, 0x4d, 0x53, 0x01, 0x13, 0x70, 0x21, 0xc0,
0xb5, 0x30, 0xb0, 0x83, 0x4c, 0x0d, 0x25, 0x00, 0x68, 0x23, 0x2b, 0x00, 0xda, 0x13, 0x1c, 0x20,
0x30, 0x20, 0x21, 0x01, 0xf7, 0xff, 0xee, 0x94, 0x60, 0x20, 0x28, 0x00, 0xdb, 0x09, 0x23, 0x00,
0x21, 0x01, 0x22, 0x00, 0x95, 0x00, 0xf7, 0xff, 0xee, 0xa4, 0x23, 0x80, 0x00, 0x9b, 0x63, 0x23,
0xe0, 0x01, 0x25, 0x0b, 0x42, 0x6d, 0xb0, 0x03, 0x1c, 0x28, 0xbd, 0x30, 0x13, 0x70, 0x20, 0x60,
0xb5, 0x70, 0xb0, 0x82, 0x4c, 0x1c, 0x1c, 0x03, 0x68, 0x25, 0x20, 0x00, 0x2d, 0x00, 0xdb, 0x31,
0x4e, 0x1a, 0x60, 0x33, 0x23, 0x04, 0x62, 0x73, 0x62, 0xf3, 0x6b, 0x23, 0x60, 0x71, 0x43, 0x59,
0x1c, 0x34, 0x1d, 0x30, 0x34, 0x20, 0x62, 0x36, 0x62, 0xb0, 0x63, 0x32, 0x63, 0x71, 0x1c, 0x25,
0x36, 0x38, 0x68, 0x28, 0x68, 0x69, 0xf7, 0xff, 0xee, 0xa8, 0x35, 0x08, 0x42, 0xb5, 0xd1, 0xf8,
0x4d, 0x0e, 0x21, 0x18, 0x35, 0x20, 0x1c, 0x28, 0xf7, 0xff, 0xee, 0x9e, 0x4b, 0x0a, 0x21, 0x02,
0x68, 0x18, 0x22, 0x02, 0x23, 0x01, 0x95, 0x00, 0xf7, 0xff, 0xee, 0x6a, 0x1c, 0x03, 0x20, 0x00,
0x2b, 0x00, 0xdb, 0x07, 0x68, 0x20, 0x68, 0x61, 0xf7, 0xff, 0xee, 0x8a, 0x34, 0x08, 0x42, 0xb4,
0xd1, 0xf8, 0x20, 0x01, 0xb0, 0x02, 0xbd, 0x70, 0x13, 0x70, 0x20, 0x60, 0x13, 0x70, 0x22, 0x00,
0x4b, 0x02, 0x22, 0x00, 0x60, 0x1a, 0x60, 0x5a, 0x60, 0x9a, 0x47, 0x70, 0x13, 0x70, 0x22, 0x40,
0xb5, 0xf0, 0x48, 0x0f, 0x21, 0xa0, 0x68, 0x44, 0x23, 0x00, 0x30, 0x0c, 0x22, 0x00, 0x00, 0x89,
0x03, 0xd6, 0xe0, 0x01, 0x04, 0x2b, 0x0c, 0x1b, 0x00, 0x5d, 0x18, 0xed, 0x00, 0xad, 0x19, 0x65,
0x69, 0x6f, 0x68, 0xed, 0x19, 0x7d, 0x42, 0xae, 0xd3, 0x03, 0x68, 0x67, 0x1c, 0x5d, 0x42, 0xbd,
0xd3, 0xf0, 0x32, 0x01, 0x80, 0x03, 0x30, 0x02, 0x42, 0x8a, 0xd1, 0xe9, 0xbd, 0xf0, 0x46, 0xc0,
0x13, 0x70, 0x22, 0x40, 0xb5, 0xf8, 0x4b, 0x20, 0x1c, 0x06, 0x68, 0x1b, 0x1c, 0x0f, 0x1c, 0x15,
0x2b, 0x00, 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xcc, 0x1e, 0x73, 0x2b, 0x01, 0xd8, 0x2e, 0x2d, 0x00,
0xd0, 0x2c, 0x4b, 0x1a, 0x42, 0x9d, 0xd8, 0x2b, 0x4c, 0x19, 0x2e, 0x01, 0xd1, 0x02, 0xf7, 0xff,
0xff, 0x39, 0xe0, 0x01, 0xf7, 0xff, 0xff, 0x5c, 0x4b, 0x15, 0x60, 0xe0, 0x68, 0xd8, 0x28, 0x00,
0xd1, 0x20, 0x4c, 0x11, 0x33, 0x10, 0x60, 0x63, 0x60, 0xa6, 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff,
0xee, 0x30, 0x68, 0x66, 0x21, 0x00, 0x4a, 0x0d, 0x1c, 0x30, 0xf0, 0x00, 0xf9, 0xad, 0x1c, 0x2a,
0x1c, 0x39, 0x1c, 0x30, 0xf0, 0x00, 0xf9, 0x66, 0x1c, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xee, 0x24,
0xf7, 0xff, 0xff, 0xa6, 0x23, 0x01, 0x60, 0x23, 0x1c, 0x28, 0xe0, 0x03, 0x20, 0x01, 0xe0, 0x00,
0x20, 0x02, 0x42, 0x40, 0xbd, 0xf8, 0x46, 0xc0, 0x13, 0x70, 0x22, 0x40, 0x00, 0x00, 0xa4, 0x1c,
0x13, 0x70, 0x27, 0x40, 0xb5, 0xf0, 0xb0, 0x83, 0x4d, 0x33, 0x24, 0xa0, 0x0b, 0xcf, 0x00, 0xa4,
0x9e, 0x09, 0x62, 0xef, 0x42, 0xa7, 0xd9, 0x01, 0x4c, 0x30, 0x62, 0xec, 0x4d, 0x2e, 0x4f, 0x30,
0x6a, 0xec, 0x46, 0x9c, 0x00, 0x64, 0x19, 0x3c, 0x89, 0xa4, 0x63, 0x2c, 0x63, 0x6c, 0x00, 0x67,
0x68, 0x45, 0x19, 0x3f, 0x00, 0xbf, 0x95, 0x00, 0x19, 0xc7, 0x18, 0x55, 0x37, 0x0c, 0x95, 0x01,
0xe0, 0x35, 0x68, 0x3d, 0x42, 0x8d, 0xd8, 0x18, 0x68, 0xbb, 0x18, 0xeb, 0x42, 0x8b, 0xd9, 0x2c,
0x4f, 0x21, 0x1b, 0x4d, 0x46, 0x63, 0x63, 0x7c, 0x63, 0xbd, 0x60, 0x19, 0x00, 0x63, 0x19, 0x1c,
0x00, 0xa4, 0x19, 0x00, 0x69, 0x03, 0x99, 0x08, 0x18, 0xeb, 0x60, 0x0b, 0x69, 0x43, 0x20, 0x00,
0x1b, 0x5d, 0x60, 0x35, 0x42, 0x95, 0xd9, 0x2d, 0xe0, 0x15, 0x9b, 0x01, 0x42, 0x9d, 0xd2, 0x14,
0x4f, 0x15, 0x46, 0x63, 0x1a, 0x69, 0x63, 0x7c, 0x63, 0xb9, 0x60, 0x1d, 0x00, 0x63, 0x19, 0x1c,
0x00, 0xa4, 0x19, 0x00, 0x69, 0x03, 0x9c, 0x08, 0x1a, 0x52, 0x60, 0x23, 0x69, 0x43, 0x20, 0x00,
0x60, 0x33, 0x42, 0x93, 0xd9, 0x16, 0x60, 0x32, 0xe0, 0x14, 0x34, 0x01, 0x37, 0x0c, 0x9d, 0x00,
0x42, 0xac, 0xd3, 0xc6, 0x4d, 0x08, 0x18, 0x51, 0x68, 0x02, 0x46, 0x63, 0x63, 0x6c, 0x42, 0x91,
0xd8, 0x06, 0x60, 0x19, 0x99, 0x08, 0x23, 0x00, 0x60, 0x0b, 0x20, 0x00, 0x60, 0x33, 0xe0, 0x01,
0x20, 0x02, 0x42, 0x40, 0xb0, 0x03, 0xbd, 0xf0, 0x13, 0x70, 0xcb, 0x40, 0x00, 0x00, 0x02, 0x7f,
0x13, 0x70, 0x22, 0x40, 0xb5, 0xf0, 0xb0, 0x85, 0x1c, 0x07, 0x1c, 0x0e, 0x92, 0x02, 0x4d, 0x28,
0xe0, 0x43, 0x4a, 0x28, 0x4b, 0x28, 0x68, 0x50, 0x93, 0x00, 0x1c, 0x2b, 0x33, 0x44, 0x93, 0x01,
0x1c, 0x39, 0x9a, 0x02, 0x4b, 0x25, 0xf7, 0xff, 0xff, 0x7d, 0x64, 0xa8, 0x28, 0x00, 0xd1, 0x3d,
0x6b, 0xeb, 0x1b, 0xdb, 0x93, 0x03, 0x64, 0xeb, 0x2b, 0x00, 0xd0, 0x0b, 0x02, 0x5c, 0x1c, 0x30,
0x1c, 0x22, 0x21, 0x00, 0xf0, 0x00, 0xf9, 0x00, 0x9a, 0x03, 0x9b, 0x02, 0x18, 0xbf, 0x1a, 0x9b,
0x19, 0x36, 0x93, 0x02, 0x4c, 0x16, 0x6c, 0x61, 0x29, 0x00, 0xd0, 0x18, 0x4b, 0x15, 0x68, 0x9b,
0x2b, 0x01, 0xd1, 0x04, 0x6c, 0x20, 0x1c, 0x32, 0xf7, 0xff, 0xfe, 0x22, 0xe0, 0x03, 0x6c, 0x20,
0x1c, 0x32, 0xf7, 0xff, 0xfe, 0xa5, 0x4b, 0x0e, 0x64, 0xa0, 0x6c, 0x9a, 0x2a, 0x00, 0xd0, 0x11,
0x6c, 0x5b, 0x02, 0x5a, 0x18, 0xb6, 0x9a, 0x02, 0x18, 0xff, 0x1a, 0xd2, 0x92, 0x02, 0x4b, 0x08,
0x6c, 0x5a, 0x6c, 0xdb, 0x18, 0xd3, 0x2b, 0x00, 0xd0, 0x06, 0x9b, 0x02, 0x2b, 0x00, 0xd1, 0xb8,
0x20, 0x00, 0xe0, 0x03, 0x20, 0x03, 0xe0, 0x00, 0x20, 0x04, 0x42, 0x40, 0xb0, 0x05, 0xbd, 0xf0,
0x13, 0x70, 0xcb, 0x40, 0x13, 0x70, 0x22, 0x40, 0x13, 0x70, 0xcb, 0x80, 0x13, 0x70, 0xcb, 0x7c,
0xb5, 0xf8, 0x24, 0x7f, 0x1c, 0x0f, 0x1c, 0x1e, 0x09, 0xc1, 0x4b, 0x17, 0x40, 0x20, 0x24, 0x80,
0x00, 0x80, 0x00, 0xa4, 0x1a, 0x24, 0x65, 0x19, 0x65, 0x58, 0x65, 0x9c, 0x42, 0x94, 0xd9, 0x00,
0x65, 0x9a, 0x4a, 0x11, 0x23, 0x80, 0x6d, 0x90, 0x00, 0x9b, 0x42, 0x98, 0xd1, 0x01, 0x23, 0x00,
0x65, 0x93, 0x4c, 0x0d, 0x6d, 0xa3, 0x2b, 0x00, 0xd0, 0x10, 0x1c, 0x25, 0x35, 0x60, 0x1c, 0x08,
0x22, 0x01, 0x1c, 0x29, 0xf7, 0xff, 0xff, 0x7e, 0x4b, 0x08, 0x66, 0x18, 0x28, 0x00, 0xd1, 0x09,
0x6d, 0x61, 0x6d, 0xa2, 0x18, 0x69, 0x1c, 0x38, 0xf0, 0x00, 0xf8, 0x54, 0x4b, 0x02, 0x20, 0x00,
0x6d, 0x9b, 0x60, 0x33, 0xbd, 0xf8, 0x46, 0xc0, 0x13, 0x70, 0xcb, 0x40, 0x13, 0x70, 0xcd, 0x40,
0xb5, 0xf0, 0xb0, 0x83, 0x4c, 0x21, 0x91, 0x01, 0x1c, 0x06, 0x1c, 0x23, 0x1c, 0x10, 0x1c, 0x17,
0x33, 0x64, 0x1c, 0x31, 0x9a, 0x01, 0xf7, 0xff, 0xff, 0xbb, 0x1c, 0x05, 0x66, 0xa0, 0x28, 0x00,
0xd1, 0x31, 0x6e, 0x63, 0x08, 0x9a, 0x18, 0xbf, 0x9a, 0x01, 0x18, 0xf6, 0x96, 0x00, 0x1a, 0xd6,
0x4b, 0x17, 0x42, 0x9e, 0xd9, 0x11, 0x09, 0xf8, 0x0a, 0x72, 0x66, 0xe0, 0x67, 0x22, 0x99, 0x00,
0xf7, 0xff, 0xff, 0x48, 0x66, 0xa0, 0x28, 0x00, 0xd1, 0x19, 0x6f, 0x23, 0x01, 0xda, 0x18, 0xbf,
0x9a, 0x00, 0x02, 0x5b, 0x18, 0xd2, 0x1a, 0xf6, 0x92, 0x00, 0x2e, 0x00, 0xd0, 0x13, 0x4c, 0x0b,
0x1c, 0x38, 0x1c, 0x23, 0x33, 0x64, 0x99, 0x00, 0x1c, 0x32, 0xf7, 0xff, 0xff, 0x91, 0x1c, 0x05,
0x66, 0xa0, 0x28, 0x00, 0xd1, 0x07, 0x6e, 0x63, 0x42, 0x9e, 0xd1, 0x02, 0xe0, 0x03, 0x1c, 0x05,
0xe0, 0x01, 0x25, 0x05, 0x42, 0x6d, 0xb0, 0x03, 0x1c, 0x28, 0xbd, 0xf0, 0x13, 0x70, 0xcd, 0x40,
0x00, 0x00, 0x01, 0xff, 0xb5, 0xf0, 0x1c, 0x05, 0x1c, 0x0e, 0x1c, 0x14, 0x2a, 0x0f, 0xd9, 0x03,
0x1c, 0x0b, 0x43, 0x03, 0x07, 0x9f, 0xd0, 0x0a, 0x2c, 0x00, 0xd0, 0x05, 0x23, 0x00, 0x5c, 0xf2,
0x54, 0xea, 0x33, 0x01, 0x42, 0xa3, 0xd1, 0xfa, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x1c, 0x15,
0x1c, 0x0c, 0x1c, 0x03, 0x68, 0x26, 0x60, 0x1e, 0x68, 0x66, 0x60, 0x5e, 0x68, 0xa6, 0x60, 0x9e,
0x68, 0xe6, 0x3d, 0x10, 0x60, 0xde, 0x34, 0x10, 0x33, 0x10, 0x2d, 0x0f, 0xd8, 0xf2, 0x3a, 0x10,
0x09, 0x17, 0x1c, 0x7e, 0x01, 0x3f, 0x01, 0x36, 0x1b, 0xd7, 0x19, 0x85, 0x1c, 0x3c, 0x19, 0x8e,
0x2f, 0x03, 0xd9, 0xd9, 0x1c, 0x34, 0x1c, 0x3b, 0x1c, 0x2a, 0xcc, 0x02, 0x3b, 0x04, 0xc2, 0x02,
0x2b, 0x03, 0xd8, 0xfa, 0x3f, 0x04, 0x08, 0xbc, 0x1c, 0x63, 0x00, 0x9b, 0x00, 0xa4, 0x18, 0xed,
0x18, 0xf6, 0x1b, 0x3c, 0xe7, 0xc8, 0x46, 0xc0, 0xb5, 0x70, 0x1c, 0x03, 0x07, 0x84, 0xd0, 0x0d,
0x2a, 0x00, 0xd0, 0x40, 0x06, 0x0d, 0x3a, 0x01, 0x0e, 0x2d, 0x24, 0x03, 0xe0, 0x02, 0x2a, 0x00,
0xd0, 0x39, 0x3a, 0x01, 0x70, 0x1d, 0x33, 0x01, 0x42, 0x23, 0xd1, 0xf8, 0x2a, 0x03, 0xd9, 0x29,
0x25, 0xff, 0x40, 0x0d, 0x02, 0x2c, 0x43, 0x25, 0x04, 0x2c, 0x1c, 0x1e, 0x43, 0x25, 0x2a, 0x0f,
0xd9, 0x12, 0x1c, 0x1c, 0x1c, 0x16, 0x3e, 0x10, 0x60, 0x25, 0x60, 0x65, 0x60, 0xa5, 0x60, 0xe5,
0x34, 0x10, 0x2e, 0x0f, 0xd8, 0xf7, 0x3a, 0x10, 0x09, 0x16, 0x36, 0x01, 0x01, 0x36, 0x19, 0x9e,
0x23, 0x0f, 0x40, 0x1a, 0x2a, 0x03, 0xd9, 0x0c, 0x1c, 0x34, 0x1c, 0x13, 0x3b, 0x04, 0xc4, 0x20,
0x2b, 0x03, 0xd8, 0xfb, 0x3a, 0x04, 0x08, 0x93, 0x33, 0x01, 0x00, 0x9b, 0x18, 0xf6, 0x23, 0x03,
0x40, 0x1a, 0x1c, 0x33, 0x2a, 0x00, 0xd0, 0x06, 0x06, 0x09, 0x0e, 0x0c, 0x21, 0x00, 0x54, 0x5c,
0x31, 0x01, 0x42, 0x8a, 0xd1, 0xfb, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x75, 0x73, 0x62, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x73, 0x64, 0x69, 0x6f, 0x2f, 0x73, 0x64, 0x68, 0x63, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x70, 0x20, 0xd6,
0x13, 0x70, 0x20, 0xe0, 0x24, 0x49, 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a,
0x20, 0x44, 0x49, 0x50, 0x50, 0x3a, 0x20, 0x53, 0x65, 0x70, 0x20, 0x20, 0x37, 0x20, 0x32, 0x30,
0x31, 0x30, 0x20, 0x31, 0x32, 0x3a, 0x32, 0x33, 0x3a, 0x31, 0x34, 0x20, 0x36, 0x34, 0x4d, 0x24,
0x0a, 0x00, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x75, 0x73, 0x62, 0x32, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x73, 0x64, 0x69, 0x6f, 0x2f, 0x73, 0x64, 0x68, 0x63, 0x00, 0x00
};

View File

@ -1,3 +1,3 @@
#define size_dip_plugin_249 5340 #define size_dip_plugin_249 5680
extern unsigned char dip_plugin_249[5340]; extern unsigned char dip_plugin_249[5680];

View File

@ -74,22 +74,6 @@ s32 Disc_Wait(void)
return 0; return 0;
} }
s32 Disc_SetUSB(const u8 *id, bool frag)
{
/* ENABLE USB in cIOS */
if(id)
{
if(frag)
return set_frag_list();
s32 part = -1;
if(CurrentIOS.Type == IOS_TYPE_HERMES)
part = wbfs_part_idx ? wbfs_part_idx - 1 : 0;
return WDVD_SetUSBMode(wbfsDev, (u8*)id, part);
}
/* DISABLE USB in cIOS */
return WDVD_SetUSBMode(0, NULL, -1);
}
s32 Disc_ReadHeader(void *outbuf) s32 Disc_ReadHeader(void *outbuf)
{ {
/* Read Wii disc header */ /* Read Wii disc header */

View File

@ -96,7 +96,6 @@ extern "C" {
/* Prototypes */ /* Prototypes */
s32 Disc_Open(bool); s32 Disc_Open(bool);
s32 Disc_Wait(void); s32 Disc_Wait(void);
s32 Disc_SetUSB(const u8 *id, bool frag);
s32 Disc_ReadHeader(void *); s32 Disc_ReadHeader(void *);
s32 Disc_ReadGCHeader(void *); s32 Disc_ReadGCHeader(void *);
s32 Disc_Type(bool); s32 Disc_Type(bool);

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,3 @@
#define size_ehcmodule_5 26234 #define size_ehcmodule_5 27134
extern unsigned char ehcmodule_5[26234]; extern unsigned char ehcmodule_5[27134];

View File

@ -17,8 +17,9 @@
#include <gccore.h> #include <gccore.h>
#include <string.h> #include <string.h>
#include "external_booter.hpp" #include "external_booter.hpp"
#include "cios.h" #include "Config.hpp"
#include "fst.h" #include "fst.h"
#include "mload.h"
#include "wdvd.h" #include "wdvd.h"
#include "channel/nand.hpp" #include "channel/nand.hpp"
#include "devicemounter/DeviceHandler.hpp" #include "devicemounter/DeviceHandler.hpp"
@ -35,28 +36,6 @@ u8 configbytes[2];
u32 hooktype; u32 hooktype;
}; };
typedef struct _the_CFG {
u8 vidMode;
bool vipatch;
bool countryString;
u8 patchVidMode;
int aspectRatio;
u32 returnTo;
u8 configbytes[2];
IOS_Info IOS;
void *codelist;
u8 *codelistend;
u8 *cheats;
u32 cheatSize;
u32 hooktype;
u8 debugger;
u32 *gameconf;
u32 gameconfsize;
u8 BootType;
/* needed for channels */
u64 title;
} the_CFG;
the_CFG normalCFG; the_CFG normalCFG;
extern u8 *code_buf; extern u8 *code_buf;
@ -95,6 +74,19 @@ void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 pat
BootHomebrew(); BootHomebrew();
} }
extern FragList *frag_list;
extern s32 wbfsDev;
extern u32 wbfs_part_idx;
void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, const char *ID)
{
normalCFG.GameBootType = dvd ? TYPE_WII_DISC : (wbfs ? TYPE_WII_WBFS : TYPE_WII_WBFS_EXT);
strncpy(normalCFG.gameID, ID, 6);
normalCFG.fragments = frag_list;
normalCFG.wbfsDevice = wbfsDev;
normalCFG.wbfsPart = wbfs_part_idx;
normalCFG.mload_rev = mload_get_version();
}
void ExternalBooter_ChannelSetup(u64 title) void ExternalBooter_ChannelSetup(u64 title)
{ {
normalCFG.title = title; normalCFG.title = title;

View File

@ -31,6 +31,7 @@ extern u32 hooktype;
void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode, void WiiFlow_ExternalBooter(u8 vidMode, bool vipatch, bool countryString, u8 patchVidMode,
int aspectRatio, u32 returnTo, u8 BootType); int aspectRatio, u32 returnTo, u8 BootType);
void ExternalBooter_ChannelSetup(u64 title); void ExternalBooter_ChannelSetup(u64 title);
void ShutdownBeforeExit(bool KeepPatches = false); void ExternalBooter_WiiGameSetup(bool wbfs, bool dvd, const char *ID);
void ShutdownBeforeExit(bool BootGame = false);
#endif #endif

View File

@ -311,10 +311,8 @@ int set_frag_list()
else ghexdump(frag_list, size); */ else ghexdump(frag_list, size); */
int ret = WDVD_SetFragList(wbfsDev, frag_list, size); int ret = WDVD_SetFragList(wbfsDev, frag_list, size);
/* free(frag_list);
free(frag_list); frag_list = NULL; */
frag_list = NULL;
if(ret) if(ret)
return ret; return ret;
return 0; return 0;

View File

@ -1,9 +1,7 @@
#include "mload_modules.h" #include "mload_modules.h"
//#include "fatffs_module.h" #include "ehcmodule_5.h"
#include "sdhc_module.h"
extern int global_mount; // 1 -> sd_ok SD was mounted #include "odip_frag.h"
// 2 -> ud_ok USB was mounted
// 128 -> Use NAND Emulation. Used for load_fat_module()
static u32 ios_36[16] ATTRIBUTE_ALIGN(32)= static u32 ios_36[16] ATTRIBUTE_ALIGN(32)=
{ {
@ -33,7 +31,6 @@ static u32 ios_38[16] ATTRIBUTE_ALIGN(32)=
0x2020365c+1, // ios_printf (thumb) 0x2020365c+1, // ios_printf (thumb)
}; };
static u32 ios_37[16] ATTRIBUTE_ALIGN(32)= static u32 ios_37[16] ATTRIBUTE_ALIGN(32)=
{ {
0, // DI_EmulateCmd 0, // DI_EmulateCmd
@ -76,105 +73,93 @@ static u32 ios_60[16] ATTRIBUTE_ALIGN(32)=
0x20203750+1, // ios_printf (thumb) 0x20203750+1, // ios_printf (thumb)
}; };
u32 patch_datas[8] ATTRIBUTE_ALIGN(32); u32 patch_datas[8] ATTRIBUTE_ALIGN(32);
data_elf my_data_elf; data_elf my_data_elf;
static int my_thread_id = 0;
void *dip_plugin = 0;
int size_dip_plugin;
void *ehcmodule = 0;
int size_ehcmodule;
static int my_thread_id=0;
int load_ehc_module() int load_ehc_module()
{ {
int is_ios=0; if(mload_init() < 0)
return -1;
if(mload_init()<0) return -1; mload_elf((void *)ehcmodule_5, &my_data_elf);
mload_elf((void *) ehcmodule, &my_data_elf); my_thread_id = mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio); if(my_thread_id < 0)
if(my_thread_id<0) return -2; return -2;
usleep(350*1000); usleep(350*1000);
// Test for IOS int is_ios = mload_get_IOS_base();
is_ios=mload_get_IOS_base(); //u32 dip_address = 0x1377E000;
u32 dip_address = 0x1377C000; u32 dip_address = 0x1377C000;
switch(is_ios) switch(is_ios)
{ {
case 36: case 36:
memcpy(ios_36, odip_frag, 4); // copy the entry_point
memcpy(ios_36, dip_plugin, 4); // copy the entry_point memcpy(odip_frag, ios_36, 4*10); // copy the adresses from the array
memcpy(dip_plugin, ios_36, 4*10); // copy the adresses from the array
mload_seek(dip_address, SEEK_SET); // copy odip_frag in the starlet
mload_seek(dip_address, SEEK_SET); // copy dip_plugin in the starlet mload_write(odip_frag,size_odip_frag);
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin // enables DIP plugin
mload_seek(0x20209040, SEEK_SET); mload_seek(0x20209040, SEEK_SET);
mload_write(ios_36, 4); mload_write(ios_36, 4);
break; break;
case 37: case 37:
memcpy(ios_37, odip_frag, 4); // copy the entry_point
memcpy(odip_frag, ios_37, 4*10); // copy the adresses from the array
memcpy(ios_37, dip_plugin, 4); // copy the entry_point mload_seek(dip_address, SEEK_SET); // copy odip_frag in the starlet
memcpy(dip_plugin, ios_37, 4*10); // copy the adresses from the array mload_write(odip_frag,size_odip_frag);
mload_seek(dip_address, SEEK_SET); // copy dip_plugin in the starlet
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin // enables DIP plugin
mload_seek(0x20209030, SEEK_SET); mload_seek(0x20209030, SEEK_SET);
mload_write(ios_37, 4); mload_write(ios_37, 4);
break; break;
case 38: case 38:
memcpy(ios_38, odip_frag, 4); // copy the entry_point
memcpy(odip_frag, ios_38, 4*10); // copy the adresses from the array
memcpy(ios_38, dip_plugin, 4); // copy the entry_point mload_seek(dip_address, SEEK_SET); // copy odip_frag in the starlet
memcpy(dip_plugin, ios_38, 4*10); // copy the adresses from the array mload_write(odip_frag,size_odip_frag);
mload_seek(dip_address, SEEK_SET); // copy dip_plugin in the starlet
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin // enables DIP plugin
mload_seek(0x20208030, SEEK_SET); mload_seek(0x20208030, SEEK_SET);
mload_write(ios_38, 4); mload_write(ios_38, 4);
break; break;
case 57: case 57:
memcpy(ios_57, odip_frag, 4); // copy the entry_point
memcpy(odip_frag, ios_57, 4*10); // copy the adresses from the array
memcpy(ios_57, dip_plugin, 4); // copy the entry_point mload_seek(dip_address, SEEK_SET); // copy odip_frag in the starlet
memcpy(dip_plugin, ios_57, 4*10); // copy the adresses from the array mload_write(odip_frag,size_odip_frag);
mload_seek(dip_address, SEEK_SET); // copy dip_plugin in the starlet
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin // enables DIP plugin
mload_seek(0x20208030, SEEK_SET); mload_seek(0x20208030, SEEK_SET);
mload_write(ios_57, 4); mload_write(ios_57, 4);
break; break;
case 60: case 60:
memcpy(ios_60, odip_frag, 4); // copy the entry_point
memcpy(odip_frag, ios_60, 4*10); // copy the adresses from the array
memcpy(ios_60, dip_plugin, 4); // copy the entry_point mload_seek(dip_address, SEEK_SET); // copy odip_frag in the starlet
memcpy(dip_plugin, ios_60, 4*10); // copy the adresses from the array mload_write(odip_frag,size_odip_frag);
mload_seek(dip_address, SEEK_SET); // copy dip_plugin in the starlet
mload_write(dip_plugin,size_dip_plugin);
// enables DIP plugin // enables DIP plugin
mload_seek(0x20208030, SEEK_SET); mload_seek(0x20208030, SEEK_SET);
mload_write(ios_60, 4); mload_write(ios_60, 4);
break; break;
} }
mload_elf((void *)sdhc_module, &my_data_elf);
my_thread_id = mload_run_thread(my_data_elf.start, my_data_elf.stack,
my_data_elf.size_stack, my_data_elf.prio);
if(my_thread_id < 0)
return -2;
mload_close(); mload_close();
return 0; return 0;
} }
#if 0
#define IOCTL_FAT_MOUNTSD 0xF0 #define IOCTL_FAT_MOUNTSD 0xF0
#define IOCTL_FAT_UMOUNTSD 0xF1 #define IOCTL_FAT_UMOUNTSD 0xF1
#define IOCTL_FAT_MOUNTUSB 0xF2 #define IOCTL_FAT_MOUNTUSB 0xF2
@ -182,218 +167,241 @@ int is_ios=0;
#define IOCTL_FFS_MODE 0x80 #define IOCTL_FFS_MODE 0x80
/* void disable_ffs_patch(void) void disable_ffs_patch(void)
{ {
u8 * ffs_data=search_for_ehcmodule_cfg(fatffs_module, size_fatffs_module);
u8 * ffs_data=search_for_ehcmodule_cfg((void *) fatffs_module, size_fatffs_module);
if(ffs_data) if(ffs_data)
{ {
ffs_data+=12; ffs_data+=12;
ffs_data[0]=1; ffs_data[0]=1;
DCFlushRange((void *) (((u32)ffs_data[0]) & ~31), 32); DCFlushRange((void *) (((u32)ffs_data[0]) & ~31), 32);
} }
} */
// int load_fatffs_module(u8 *discid)
// {
////if discid is NULL emu must be in full mode (global_mount & 3)
////otherwise the full path and filename of the game
////must be passed and copied to the ffs mem.
// if (!(global_mount & 128)) return -1; // No NAND emulation selected }
// static char fs[] ATTRIBUTE_ALIGN(32) = "fat"; int load_fatffs_module(u8 *discid)
// static char fname[256] = "usb:"; {
// s32 hid = -1, fd = -1, ret; static char fs[] ATTRIBUTE_ALIGN(32) = "fat";
// int n; s32 hid = -1, fd = -1;
static char file_name[256] ALIGNED(0x20)="sd:";
int n;
char *p;
s32 ret;
p=&file_name[0];
if(mload_init()<0) return -1;
// if(mload_init()<0) return -1; mload_elf((void *) fatffs_module, &my_data_elf);
my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
if(my_thread_id<0) return -1;
// mload_elf((void *) fatffs_module, &my_data_elf); global_mount &=~0xc;
// my_thread_id= mload_run_thread(my_data_elf.start, my_data_elf.stack, my_data_elf.size_stack, my_data_elf.prio);
// if(my_thread_id<0) return -1;
// global_mount &=~0xc;
// /* if(discid) if(discid)
// { {
// global_mount &=~0xc; sd_ok=ud_ok=1;
p=get_fat_name(discid);
sd_ok=ud_ok=0;
if(!p) return -1;
global_mount &=~0xc;
// if(fname[0]=='u')
// global_mount|=2;
// else if(fname[0]=='s')
// global_mount|=1;
// else
// return -1;
////copy filename to dip_plugin filename area // change 'ud:' by 'usb:'
// mload_seek(*((u32 *) (dip_plugin+14*4)), SEEK_SET); // offset 14 (filename Address - 256 bytes) if(p[0]=='u') {global_mount|=2;file_name[0]='u';file_name[1]='s';file_name[2]='b';memcpy(file_name+3, (void *)p+2, 253);}
// mload_write(fname, sizeof(fname)); else {global_mount|=1;memcpy(file_name, (void *) p, 256);}
// mload_close();
// }
// else
// { */
// if((global_mount & 3) == 0) return 0;
// if(global_mount & 1)
// {
// fname[0] = 's';
// fname[1] = 'd';
// fname[2] = ':';
// }
// if(global_mount & 2)
// {
// fname[0] = 'u';
// fname[1] = 's';
// fname[2] = 'b';
// fname[3] = ':';
// }
////}
// usleep(350 * 1000);
// /* Create heap */
// if (hid < 0)
// {
// hid = iosCreateHeap(0x100);
// if (hid < 0)
// return -1;
// }
// /* Open USB device */ // copy filename to odip_frag filename area
// fd = IOS_Open(fs, 0); mload_seek(*((u32 *) (odip_frag+14*4)), SEEK_SET); // offset 14 (filename Address - 256 bytes)
mload_write(file_name, sizeof(file_name));
mload_close();
}
else
{
if((global_mount & 3)==0) return 0;
if(global_mount & 1) p[0]='s';
if(global_mount & 2) p[0]='u';
}
usleep(350*1000);
/* Create heap */
if (hid < 0) {
hid = iosCreateHeap(0x100);
if (hid < 0)
return -1;
}
/* Open USB device */
fd = IOS_Open(fs, 0);
// if (fd < 0) if (fd < 0)
// { {
// if(hid >= 0) if(hid>=0)
// { {
// iosDestroyHeap(hid); iosDestroyHeap(hid);
// hid = -1; hid=-1;
// } }
// return -1; return -1;
// } }
// n = 30; // try 20 times n=30; // try 20 times
// while(n > 0) while(n>0)
// { {
// if((global_mount & 10) == 2) if((global_mount & 10)==2) {ret=IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTUSB, ":");if(ret==0) global_mount|=8;}
// { else {ret=IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTSD, ":");if(ret==0) {global_mount|=4;}}
// ret = IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTUSB, ":");
// if(ret == 0) global_mount |= 8;
// }
// else
// {
// ret = IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTSD, ":");
// if(ret == 0) global_mount |= 4;
// }
// if ((global_mount & 7) == 3 && ret == 0) if((global_mount & 7)==3 && ret==0)
// { {ret=IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTSD, ":");if(ret==0) global_mount|=4;}
// ret = IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTSD, ":");
// if(ret == 0) global_mount |= 4;
// }
// if ((global_mount & 3) == ((global_mount>>2) & 3) && (global_mount & 3)) if((global_mount & 3)==((global_mount>>2) & 3) && (global_mount & 3)) {ret=0;break;} else ret=-1;
// {
// ret = 0; //ret=IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTSD, ":");
// break; //if(ret==0) break;
// } usleep(500*1000);
// else n--;
// ret = -1; }
////ret=IOS_IoctlvFormat(hid, fd, IOCTL_FAT_MOUNTSD, ":");
////if(ret==0) break;
// usleep(500 * 1000);
// n--;
// }
// if (fd >= 0) if (fd >= 0) {
// { IOS_Close(fd);
// IOS_Close(fd); fd = -1;
// fd = -1; }
// }
if(hid>=0)
{
iosDestroyHeap(hid);
hid=-1;
}
// if(hid >= 0) if(n==0) return -1;
// {
// iosDestroyHeap(hid); return 0;
// hid = -1; }
// }
// return (n==0) ? -1 : 0;
// }
// int enable_ffs(int mode) int enable_ffs(int mode)
// { {
// static char fs[] ATTRIBUTE_ALIGN(32) = "fat"; static char fs[] ATTRIBUTE_ALIGN(32) = "fat";
// s32 hid = -1, fd = -1; s32 hid = -1, fd = -1;
// s32 ret; s32 ret;
// /* Create heap */ /* Create heap */
// if (hid < 0) if (hid < 0) {
// { hid = iosCreateHeap(0x100);
// hid = iosCreateHeap(0x100); if (hid < 0)
// if (hid < 0) return -1;
// return -1; }
// }
/* Open USB device */
fd = IOS_Open(fs, 0);
// /* Open USB device */ if (fd < 0)
// fd = IOS_Open(fs, 0); {
if(hid>=0)
{
iosDestroyHeap(hid);
hid=-1;
}
return -1;
}
ret=IOS_IoctlvFormat(hid, fd, IOCTL_FFS_MODE, "i:", mode);
// if (fd < 0)
// { if (fd >= 0) {
// if(hid >= 0) IOS_Close(fd);
// { fd = -1;
// iosDestroyHeap(hid); }
// hid = -1;
// } if(hid>=0)
// return -1; {
// } iosDestroyHeap(hid);
// ret = IOS_IoctlvFormat(hid, fd, IOCTL_FFS_MODE, "i:", mode); hid=-1;
}
// if (fd >= 0)
// {
// IOS_Close(fd); return ret;
// fd = -1; }
// }
// if(hid >= 0)
// {
// iosDestroyHeap(hid);
// hid = -1;
// }
// return ret;
// }
void enable_ES_ioctlv_vector(void) void enable_ES_ioctlv_vector(void)
{ {
if (mload_init() < 0 || IOS_GetRevision() == 2) patch_datas[0]=*((u32 *) (odip_frag+16*4));
return;
patch_datas[0] = *((u32 *) (dip_plugin+16*4));
mload_set_ES_ioctlv_vector((void *) patch_datas[0]); mload_set_ES_ioctlv_vector((void *) patch_datas[0]);
mload_close();
} }
void Set_DIP_BCA_Datas(u8 *bca_data) void Set_DIP_BCA_Datas(u8 *bca_data)
{ {
// write in dip_plugin bca data area // write in odip_frag bca data area
mload_init(); mload_seek(*((u32 *) (odip_frag+15*4)), SEEK_SET); // offset 15 (bca_data area)
mload_seek(*((u32 *) (dip_plugin+15*4)), SEEK_SET); // offset 15 (bca_data area)
mload_write(bca_data, 64); mload_write(bca_data, 64);
mload_close(); mload_close();
} }
void test_and_patch_for_port1()
{
// test for port 1
u8 *ehc_data = search_for_ehcmodule_cfg((void *)ehcmodule_5, size_ehcmodule_5);
if(ehc_data)
{
ehc_data+=12;
use_port1=ehc_data[0];//=0; // fixed to 0
DCFlushRange((void *) (((u32)ehc_data[0]) & ~31), 32);
}
if(use_port1) // release port 0 and use port 1
{
u32 dat=0;
u32 addr;
// get EHCI base registers
mload_getw((void *) 0x0D040000, &addr);
addr&=0xff;
addr+=0x0D040000;
mload_getw((void *) (addr+0x44), &dat);
if((dat & 0x2001)==1) mload_setw((void *) (addr+0x44), 0x2000);
mload_getw((void *) (addr+0x48), &dat);
if((dat & 0x2000)==0x2000) mload_setw((void *) (addr+0x48), 0x1001);
}
}
void free_usb_ports()
{
u32 dat=0;
u32 addr;
// get EHCI base registers
mload_getw((void *) 0x0D040000, &addr);
addr&=0xff;
addr+=0x0D040000;
mload_getw((void *) (addr+0x44), &dat);
if((dat & 0x2001)==1) mload_setw((void *) (addr+0x44), 0x2000);
mload_getw((void *) (addr+0x48), &dat);
if((dat & 0x2001)==1) mload_setw((void *) (addr+0x48), 0x2000);
}
#endif
u8 *search_for_ehcmodule_cfg(u8 *p, int size) u8 *search_for_ehcmodule_cfg(u8 *p, int size)
{ {
int n; int n;
for(n = 0; n < size; n++)
for(n=0;n<size;n++)
{ {
if(!memcmp((void *) &p[n],"EHC_CFG",8) && p[n+8]==0x12 && p[n+9]==0x34 && p[n+10]==0x00 && p[n+11]==0x01) if(!memcmp((void *) &p[n],"EHC_CFG",8) && p[n+8]==0x12 && p[n+9]==0x34 && p[n+10]==0x00 && p[n+11]==0x01)
{
return &p[n]; return &p[n];
}
} }
return NULL; return NULL;
} }

View File

@ -1,574 +1,303 @@
unsigned char odip_frag[9120] __attribute__((aligned (32)))={
0x13, 0x77, 0xca, 0x6d, 0x12, 0x34, 0x00, 0x01, 0x20, 0x22, 0xdd, 0xac, 0x20, 0x20, 0x10, 0x11,
0x20, 0x20, 0x0b, 0x9d, 0x20, 0x20, 0x0b, 0x71, 0x20, 0x20, 0x5d, 0xc1, 0x20, 0x20, 0x00, 0x49,
0x20, 0x20, 0x2b, 0x4d, 0x20, 0x20, 0x39, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x77, 0xe2, 0xa0, 0x13, 0x77, 0xd8, 0xe0,
0x13, 0x77, 0xd5, 0x2d, 0x13, 0x77, 0xe3, 0xa0, 0x00, 0x00, 0x10, 0xa0, 0xe1, 0xa0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb5, 0x00, 0x23, 0xe3, 0xb0, 0x89, 0x06, 0x1b, 0x93, 0x00, 0x46, 0x68, 0x23, 0x00, 0x21, 0x00,
0x22, 0x00, 0x93, 0x01, 0x93, 0x02, 0xf0, 0x01, 0xfa, 0xed, 0xb0, 0x09, 0xbc, 0x02, 0x47, 0x08,
0xb5, 0x10, 0x1c, 0x03, 0x22, 0x20, 0x1c, 0x0c, 0x48, 0x0d, 0x1c, 0x19, 0xf0, 0x01, 0xfc, 0x82,
0x48, 0x0b, 0x21, 0x20, 0xf0, 0x01, 0xfc, 0x72, 0x4a, 0x0a, 0x23, 0x01, 0x68, 0x11, 0x42, 0x0b,
0xd1, 0xfc, 0x22, 0x20, 0x1c, 0x20, 0x49, 0x06, 0xf0, 0x01, 0xfc, 0x74, 0x1c, 0x20, 0x21, 0x20,
0xf0, 0x01, 0xfc, 0x64, 0x4b, 0x04, 0x68, 0x18, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
0x0d, 0x00, 0x60, 0x00, 0x0d, 0x00, 0x60, 0x1c, 0x0d, 0x00, 0x60, 0x20, 0xb5, 0xf0, 0xb0, 0x8d,
0x1c, 0x0e, 0x27, 0xd0, 0x0a, 0xc9, 0x90, 0x01, 0x92, 0x03, 0x91, 0x02, 0x25, 0x00, 0xac, 0x04,
0x06, 0x3f, 0x99, 0x03, 0x9b, 0x02, 0x22, 0x00, 0x61, 0x21, 0x98, 0x01, 0x1c, 0x31, 0x60, 0xe3,
0x60, 0x62, 0x60, 0xa2, 0x35, 0x01, 0x60, 0x27, 0xf0, 0x01, 0xfc, 0x48, 0x99, 0x01, 0x1c, 0x32,
0x1c, 0x20, 0xf0, 0x01, 0xfa, 0xa7, 0x0f, 0xeb, 0x22, 0x00, 0x21, 0x1f, 0x42, 0xa9, 0x41, 0x53,
0x06, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x28, 0x00, 0xd1, 0xe3, 0xb0, 0x0d, 0xbc, 0xf0, 0xbc, 0x02,
0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8b, 0x27, 0xa8, 0x90, 0x00, 0x1c, 0x0e, 0x92, 0x01, 0x25, 0x00,
0xac, 0x02, 0x06, 0x3f, 0x99, 0x01, 0x98, 0x00, 0x60, 0xa1, 0x1c, 0x31, 0x35, 0x01, 0x60, 0x27,
0x60, 0x66, 0xf0, 0x01, 0xfc, 0x23, 0x99, 0x00, 0x1c, 0x32, 0x1c, 0x20, 0xf0, 0x01, 0xfa, 0x82,
0x0f, 0xeb, 0x22, 0x00, 0x21, 0x07, 0x42, 0xa9, 0x41, 0x53, 0x06, 0x1b, 0x2b, 0x00, 0xd0, 0x01,
0x28, 0x00, 0xd1, 0xe7, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x87,
0x90, 0x05, 0x91, 0x03, 0x92, 0x04, 0x25, 0x00, 0x29, 0x00, 0xd0, 0x75, 0x0a, 0x51, 0x91, 0x01,
0x95, 0x00, 0xe0, 0x69, 0x9a, 0x03, 0x9b, 0x00, 0x99, 0x01, 0x1a, 0xd4, 0x9a, 0x04, 0x02, 0x4b,
0x27, 0x00, 0x42, 0x9a, 0xd9, 0x01, 0x1a, 0xd7, 0x00, 0xbf, 0x9b, 0x05, 0x21, 0x1f, 0x1c, 0x1e,
0x9b, 0x00, 0x18, 0xf6, 0x23, 0x00, 0x42, 0x0e, 0xd1, 0x19, 0x4b, 0x32, 0x22, 0x00, 0x42, 0x9e,
0xd8, 0x02, 0x22, 0xc0, 0x04, 0x52, 0x1b, 0x92, 0x21, 0xf0, 0x06, 0x09, 0x18, 0x73, 0x49, 0x2e,
0x42, 0x8b, 0xd8, 0x01, 0x4a, 0x2d, 0x1b, 0x92, 0x49, 0x2d, 0x23, 0x00, 0x42, 0x8a, 0xd9, 0x03,
0x1c, 0x13, 0x42, 0xa2, 0xd9, 0x00, 0x1c, 0x23, 0x05, 0x5a, 0x0d, 0x52, 0x1a, 0x9b, 0x2b, 0x00,
0xd0, 0x01, 0x2f, 0x00, 0xd0, 0x22, 0x23, 0x80, 0x19, 0x3a, 0x01, 0x1b, 0x42, 0x9a, 0xd9, 0x00,
0x1b, 0xdc, 0x20, 0x80, 0x01, 0x00, 0x21, 0x20, 0xf0, 0x01, 0xfb, 0xbc, 0x90, 0x02, 0x28, 0x00,
0xd0, 0x30, 0x21, 0x80, 0x01, 0x09, 0x9a, 0x01, 0xf7, 0xff, 0xff, 0x60, 0x1e, 0x05, 0xd1, 0x09,
0x9a, 0x02, 0x1c, 0x30, 0x19, 0xd1, 0x1c, 0x22, 0xf0, 0x01, 0xfb, 0xbc, 0x1c, 0x30, 0x1c, 0x21,
0xf0, 0x01, 0xfb, 0xac, 0x98, 0x02, 0xf0, 0x01, 0xfb, 0xa1, 0xe0, 0x0b, 0x1c, 0x1c, 0x4b, 0x15,
0x42, 0x9c, 0xd9, 0x01, 0x24, 0xff, 0x03, 0xe4, 0x1c, 0x30, 0x1c, 0x21, 0x9a, 0x01, 0xf7, 0xff,
0xff, 0x45, 0x1c, 0x05, 0x2d, 0x00, 0xd1, 0x0f, 0x9b, 0x00, 0x99, 0x01, 0x19, 0x1b, 0x19, 0xe4,
0x0a, 0xe4, 0x19, 0x09, 0x93, 0x00, 0x91, 0x01, 0x9a, 0x00, 0x9b, 0x03, 0x42, 0x9a, 0xd3, 0x91,
0x25, 0x00, 0xe0, 0x01, 0x25, 0x01, 0x42, 0x6d, 0xb0, 0x07, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x02,
0x47, 0x08, 0x46, 0xc0, 0x01, 0x7f, 0xff, 0xff, 0x03, 0x61, 0x7f, 0xff, 0x13, 0x61, 0x80, 0x00,
0x00, 0x00, 0x07, 0xff, 0x00, 0x7f, 0x7f, 0xff, 0xb5, 0xf8, 0x4e, 0x26, 0x27, 0x01, 0x1c, 0x04,
0x60, 0x37, 0x21, 0x20, 0xf0, 0x01, 0xfb, 0x7a, 0x7b, 0x22, 0x7b, 0x63, 0x06, 0x12, 0x04, 0x1b,
0x43, 0x13, 0x7b, 0xa2, 0x02, 0x12, 0x43, 0x13, 0x7b, 0xe2, 0x43, 0x13, 0x2b, 0x08, 0xd1, 0x30,
0x7e, 0x22, 0x7e, 0x63, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7e, 0xa2, 0x25, 0xc5, 0x02, 0x12,
0x43, 0x13, 0x7e, 0xe2, 0x01, 0xad, 0x43, 0x13, 0x68, 0x18, 0x68, 0x59, 0xf0, 0x01, 0xfb, 0x5e,
0x7e, 0x22, 0x7e, 0x63, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7e, 0xa2, 0x1c, 0x28, 0x02, 0x12,
0x43, 0x13, 0x7e, 0xe2, 0x21, 0x08, 0x43, 0x13, 0x68, 0x1b, 0x68, 0x5c, 0xf0, 0x01, 0xfb, 0x4e,
0x04, 0x24, 0x43, 0x27, 0x4c, 0x0c, 0x60, 0x2f, 0x1c, 0x28, 0x21, 0x04, 0x60, 0x27, 0xf0, 0x01,
0xfb, 0x3d, 0x1c, 0x20, 0x21, 0x04, 0xf0, 0x01, 0xfb, 0x39, 0x23, 0x00, 0x60, 0x33, 0x20, 0x00,
0xe0, 0x04, 0x1c, 0x20, 0xf0, 0x01, 0xf9, 0x11, 0x23, 0x00, 0x60, 0x33, 0xbc, 0xf8, 0xbc, 0x02,
0x47, 0x08, 0x46, 0xc0, 0x13, 0x77, 0xe3, 0xa0, 0x00, 0x00, 0x31, 0x88, 0x4a, 0x03, 0x23, 0x00,
0x60, 0x13, 0x4a, 0x03, 0x60, 0x13, 0x4a, 0x03, 0x60, 0x13, 0x47, 0x70, 0x13, 0x77, 0xe5, 0xe8,
0x13, 0x77, 0xe3, 0xc0, 0x13, 0x77, 0xe3, 0xb8, 0xb5, 0xf0, 0x4b, 0x10, 0x21, 0xa0, 0x48, 0x10,
0x68, 0x1c, 0x22, 0x00, 0x23, 0x00, 0x00, 0x89, 0x03, 0xd6, 0xe0, 0x01, 0x04, 0x2b, 0x0c, 0x1b,
0x00, 0x5d, 0x18, 0xed, 0x00, 0xad, 0x19, 0x65, 0x69, 0x6f, 0x68, 0xed, 0x19, 0x7d, 0x42, 0xae,
0xd3, 0x03, 0x68, 0x67, 0x1c, 0x5d, 0x42, 0xbd, 0xd3, 0xf0, 0x32, 0x01, 0x80, 0x03, 0x30, 0x02,
0x42, 0x8a, 0xd1, 0xe9, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x77, 0xe3, 0xc0,
0x13, 0x77, 0xe6, 0x04, 0xb5, 0xf8, 0x4b, 0x22, 0x1c, 0x06, 0x68, 0x1b, 0x1c, 0x0f, 0x1c, 0x14,
0x2b, 0x00, 0xd0, 0x01, 0xf7, 0xff, 0xff, 0xc2, 0x1e, 0x73, 0x2b, 0x01, 0xd8, 0x30, 0x2c, 0x00,
0xd0, 0x2e, 0x4b, 0x1c, 0x42, 0x9c, 0xd8, 0x2d, 0x4d, 0x1b, 0x2e, 0x01, 0xd1, 0x02, 0xf0, 0x00,
0xfe, 0x29, 0xe0, 0x01, 0xf0, 0x00, 0xfd, 0x72, 0x4b, 0x17, 0x60, 0x28, 0x68, 0x18, 0x28, 0x00,
0xd1, 0x22, 0x4b, 0x16, 0x4d, 0x16, 0x60, 0x1e, 0x4b, 0x16, 0x1c, 0x38, 0x60, 0x2b, 0x1c, 0x21,
0xf0, 0x01, 0xfa, 0xd4, 0x68, 0x2d, 0x21, 0x00, 0x4a, 0x0e, 0x1c, 0x28, 0xf0, 0x01, 0xfa, 0x2a,
0x1c, 0x22, 0x1c, 0x39, 0x1c, 0x28, 0xf0, 0x01, 0xf9, 0xe3, 0x1c, 0x38, 0x1c, 0x21, 0xf0, 0x01,
0xfa, 0xbd, 0xf7, 0xff, 0xff, 0xa1, 0x4b, 0x06, 0x22, 0x01, 0x60, 0x1a, 0x1c, 0x20, 0xe0, 0x03,
0x20, 0x01, 0xe0, 0x00, 0x20, 0x02, 0x42, 0x40, 0xbc, 0xf8, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
0x13, 0x77, 0xe5, 0xe8, 0x00, 0x00, 0xa4, 0x1c, 0x13, 0x77, 0xe3, 0xb4, 0x13, 0x77, 0xe3, 0xb8,
0x13, 0x77, 0xe3, 0xc0, 0x13, 0x73, 0x00, 0x00, 0xb5, 0xf0, 0xb0, 0x83, 0x24, 0xa0, 0x4d, 0x36,
0x0b, 0xcf, 0x00, 0xa4, 0x9e, 0x09, 0x60, 0x2f, 0x42, 0xa7, 0xd9, 0x01, 0x4c, 0x33, 0x60, 0x2c,
0x4c, 0x31, 0x4d, 0x33, 0x68, 0x24, 0x46, 0x9c, 0x00, 0x64, 0x5b, 0x2c, 0x4d, 0x31, 0x00, 0x67,
0x60, 0x2c, 0x4d, 0x31, 0x19, 0x3f, 0x60, 0x2c, 0x68, 0x45, 0x00, 0xbf, 0x95, 0x00, 0x19, 0xc7,
0x18, 0x55, 0x37, 0x0c, 0x95, 0x01, 0xe0, 0x37, 0x68, 0x3d, 0x42, 0x8d, 0xd8, 0x19, 0x68, 0xbb,
0x18, 0xeb, 0x42, 0x8b, 0xd9, 0x2e, 0x4f, 0x28, 0x1b, 0x4d, 0x60, 0x3c, 0x4f, 0x27, 0x46, 0x63,
0x60, 0x3d, 0x60, 0x19, 0x00, 0x63, 0x19, 0x1c, 0x00, 0xa4, 0x19, 0x00, 0x69, 0x03, 0x99, 0x08,
0x18, 0xeb, 0x60, 0x0b, 0x69, 0x43, 0x20, 0x00, 0x1b, 0x5d, 0x60, 0x35, 0x42, 0x95, 0xd9, 0x2e,
0xe0, 0x16, 0x9b, 0x01, 0x42, 0x9d, 0xd2, 0x15, 0x4f, 0x1b, 0x46, 0x63, 0x60, 0x3c, 0x4f, 0x1b,
0x1a, 0x69, 0x60, 0x39, 0x60, 0x1d, 0x00, 0x63, 0x19, 0x1c, 0x00, 0xa4, 0x19, 0x00, 0x69, 0x03,
0x9c, 0x08, 0x1a, 0x52, 0x60, 0x23, 0x69, 0x43, 0x20, 0x00, 0x60, 0x33, 0x42, 0x93, 0xd9, 0x16,
0x60, 0x32, 0xe0, 0x14, 0x34, 0x01, 0x37, 0x0c, 0x9d, 0x00, 0x42, 0xac, 0xd3, 0xc4, 0x4d, 0x0e,
0x18, 0x51, 0x68, 0x02, 0x46, 0x63, 0x60, 0x2c, 0x42, 0x91, 0xd8, 0x06, 0x60, 0x19, 0x99, 0x08,
0x23, 0x00, 0x60, 0x0b, 0x20, 0x00, 0x60, 0x33, 0xe0, 0x01, 0x20, 0x02, 0x42, 0x40, 0xb0, 0x03,
0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x77, 0xe3, 0xa4, 0x00, 0x00, 0x02, 0x7f,
0x13, 0x77, 0xe6, 0x04, 0x13, 0x77, 0xe5, 0xfc, 0x13, 0x77, 0xeb, 0x04, 0x13, 0x77, 0xe5, 0xec,
0xb5, 0xf0, 0xb0, 0x85, 0x1c, 0x06, 0x1c, 0x0d, 0x1c, 0x17, 0xe0, 0x46, 0x4a, 0x29, 0x4b, 0x2a,
0x68, 0x10, 0x4a, 0x2a, 0x93, 0x00, 0x92, 0x01, 0x4b, 0x29, 0x1c, 0x31, 0x1c, 0x3a, 0xf7, 0xff,
0xff, 0x73, 0x4b, 0x28, 0x60, 0x18, 0x28, 0x00, 0xd1, 0x3f, 0x4a, 0x25, 0x68, 0x13, 0x1b, 0x9b,
0x93, 0x03, 0x9a, 0x03, 0x4b, 0x24, 0x60, 0x1a, 0x2a, 0x00, 0xd0, 0x09, 0x02, 0x54, 0x1c, 0x28,
0x21, 0x00, 0x1c, 0x22, 0xf0, 0x01, 0xf9, 0x66, 0x9b, 0x03, 0x19, 0x2d, 0x18, 0xf6, 0x1a, 0xff,
0x4b, 0x1a, 0x68, 0x19, 0x29, 0x00, 0xd0, 0x19, 0x4b, 0x1c, 0x4c, 0x1a, 0x68, 0x1a, 0x4b, 0x16,
0x2a, 0x01, 0xd1, 0x04, 0x68, 0x18, 0x1c, 0x2a, 0xf0, 0x00, 0xfc, 0xf4, 0xe0, 0x03, 0x68, 0x18,
0x1c, 0x2a, 0xf0, 0x00, 0xfc, 0xa9, 0x4b, 0x13, 0x60, 0x20, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x10,
0x4b, 0x0e, 0x68, 0x1b, 0x02, 0x5a, 0x18, 0xf6, 0x18, 0xad, 0x1a, 0xff, 0x4b, 0x0b, 0x68, 0x1a,
0x4b, 0x0d, 0x68, 0x1b, 0x18, 0xd3, 0x2b, 0x00, 0xd0, 0x05, 0x2f, 0x00, 0xd1, 0xb6, 0x20, 0x00,
0xe0, 0x03, 0x20, 0x03, 0xe0, 0x00, 0x20, 0x04, 0x42, 0x40, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02,
0x47, 0x08, 0x46, 0xc0, 0x13, 0x77, 0xe3, 0xc0, 0x13, 0x77, 0xe3, 0xc8, 0x13, 0x77, 0xe5, 0xf0,
0x13, 0x77, 0xe3, 0xac, 0x13, 0x77, 0xe6, 0x00, 0x13, 0x77, 0xe3, 0xbc, 0x13, 0x77, 0xe3, 0xb8,
0xb5, 0xf8, 0x1c, 0x1e, 0x4b, 0x1a, 0x1c, 0x0f, 0x09, 0xc1, 0x60, 0x19, 0x23, 0x7f, 0x40, 0x18,
0x4b, 0x18, 0x00, 0x80, 0x60, 0x18, 0x23, 0x80, 0x00, 0x9b, 0x4c, 0x17, 0x1a, 0x1b, 0x60, 0x23,
0x42, 0x93, 0xd9, 0x00, 0x60, 0x22, 0x4a, 0x14, 0x23, 0x80, 0x68, 0x10, 0x00, 0x9b, 0x42, 0x98,
0xd1, 0x01, 0x23, 0x00, 0x60, 0x13, 0x4c, 0x10, 0x68, 0x23, 0x2b, 0x00, 0xd0, 0x10, 0x4d, 0x0f,
0x1c, 0x08, 0x22, 0x01, 0x1c, 0x29, 0xf7, 0xff, 0xff, 0x73, 0x4b, 0x0d, 0x60, 0x18, 0x28, 0x00,
0xd1, 0x0a, 0x4b, 0x08, 0x68, 0x22, 0x68, 0x19, 0x1c, 0x38, 0x18, 0x69, 0xf0, 0x01, 0xf8, 0xb0,
0x4b, 0x05, 0x20, 0x00, 0x68, 0x1b, 0x60, 0x33, 0xbc, 0xf8, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
0x13, 0x77, 0xe5, 0xf4, 0x13, 0x77, 0xe5, 0xf8, 0x13, 0x77, 0xe3, 0xa8, 0x13, 0x77, 0xe3, 0xe0,
0x13, 0x77, 0xe5, 0xe0, 0xb5, 0xf0, 0xb0, 0x85, 0x4d, 0x25, 0x90, 0x01, 0x91, 0x03, 0x1c, 0x10,
0x1c, 0x17, 0x99, 0x01, 0x9a, 0x03, 0x1c, 0x2b, 0xf7, 0xff, 0xff, 0xb2, 0x4e, 0x21, 0x1c, 0x04,
0x60, 0x30, 0x28, 0x00, 0xd1, 0x37, 0x68, 0x2d, 0x99, 0x01, 0x08, 0xab, 0x18, 0xfb, 0x9a, 0x03,
0x93, 0x02, 0x4b, 0x1d, 0x19, 0x49, 0x1b, 0x55, 0x91, 0x01, 0x42, 0x9d, 0xd9, 0x15, 0x9b, 0x02,
0x4f, 0x1a, 0x09, 0xd8, 0x4b, 0x1a, 0x0a, 0x6a, 0x60, 0x18, 0x60, 0x3a, 0xf7, 0xff, 0xff, 0x30,
0x60, 0x30, 0x28, 0x00, 0xd1, 0x1b, 0x68, 0x3b, 0x99, 0x02, 0x01, 0xda, 0x18, 0x89, 0x9a, 0x01,
0x02, 0x5b, 0x18, 0xd2, 0x91, 0x02, 0x92, 0x01, 0x1a, 0xed, 0x2d, 0x00, 0xd0, 0x13, 0x4e, 0x0c,
0x98, 0x02, 0x1c, 0x33, 0x99, 0x01, 0x1c, 0x2a, 0xf7, 0xff, 0xff, 0x82, 0x4b, 0x09, 0x1c, 0x04,
0x60, 0x18, 0x28, 0x00, 0xd1, 0x07, 0x68, 0x33, 0x42, 0x9d, 0xd1, 0x02, 0xe0, 0x03, 0x1c, 0x04,
0xe0, 0x01, 0x24, 0x05, 0x42, 0x64, 0xb0, 0x05, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
0x13, 0x77, 0xe3, 0xb0, 0x13, 0x77, 0xe3, 0xc4, 0x00, 0x00, 0x01, 0xff, 0x13, 0x77, 0xe5, 0xe4,
0x13, 0x77, 0xeb, 0x08, 0xb5, 0x00, 0x4b, 0x0b, 0x68, 0x1b, 0x2b, 0x01, 0xd0, 0x02, 0x2b, 0x02,
0xd1, 0x0c, 0xe0, 0x01, 0x4a, 0x08, 0xe0, 0x00, 0x4a, 0x08, 0x23, 0x00, 0x42, 0x90, 0xd3, 0x06,
0x4b, 0x07, 0x4a, 0x08, 0x62, 0x1a, 0x23, 0xa0, 0x02, 0x1b, 0xe0, 0x00, 0x23, 0x00, 0x1c, 0x18,
0xbc, 0x02, 0x47, 0x08, 0x13, 0x77, 0xeb, 0x10, 0x46, 0x09, 0x00, 0x00, 0x7e, 0xd3, 0x80, 0x00,
0x13, 0x77, 0xeb, 0x14, 0x00, 0x05, 0x21, 0x00, 0xb5, 0x10, 0x4b, 0x0c, 0x1d, 0xdc, 0x7f, 0xe4,
0x2c, 0x00, 0xd0, 0x02, 0xf7, 0xff, 0xff, 0x7e, 0xe0, 0x0d, 0x69, 0x1c, 0x2c, 0x00, 0xd0, 0x02,
0xf0, 0x00, 0xfc, 0xb8, 0xe0, 0x07, 0x68, 0x5b, 0x2b, 0x00, 0xd0, 0x02, 0xf7, 0xff, 0xfc, 0xe6,
0xe0, 0x01, 0xf7, 0xff, 0xfc, 0xbe, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x77, 0xeb, 0x14,
0xb5, 0xf0, 0xb0, 0x85, 0x90, 0x02, 0x1c, 0x10, 0x91, 0x03, 0x1c, 0x14, 0xf7, 0xff, 0xff, 0xba,
0x28, 0x00, 0xd0, 0x00, 0xe0, 0xfe, 0x4b, 0x81, 0x68, 0xdd, 0x68, 0x9a, 0x18, 0xad, 0x19, 0x2d,
0x95, 0x01, 0x69, 0x1b, 0x2b, 0x00, 0xd0, 0x12, 0x4b, 0x7d, 0x68, 0x1b, 0x2b, 0x00, 0xdd, 0x00,
0xe0, 0xeb, 0x4b, 0x7c, 0x68, 0x19, 0x29, 0x00, 0xd0, 0x01, 0xf0, 0x01, 0xf8, 0xe7, 0x4b, 0x79,
0x22, 0x00, 0x60, 0x1a, 0x23, 0x01, 0x4a, 0x78, 0x42, 0x5b, 0x60, 0x13, 0xe0, 0xdd, 0x4b, 0x76,
0x49, 0x76, 0x68, 0x1b, 0x18, 0x5a, 0x2a, 0x00, 0xd1, 0x00, 0xe0, 0xa8, 0x2b, 0x00, 0xda, 0x00,
0xe0, 0xa5, 0x4c, 0x70, 0x68, 0x23, 0x2b, 0x00, 0xd1, 0x06, 0x21, 0x80, 0x20, 0x00, 0x01, 0x89,
0x22, 0x20, 0xf0, 0x01, 0xf8, 0xbb, 0x60, 0x20, 0x20, 0x80, 0x01, 0x00, 0x21, 0x20, 0xf0, 0x01,
0xf8, 0xa1, 0x1e, 0x04, 0xd1, 0x03, 0x23, 0x01, 0x4a, 0x67, 0x42, 0x5b, 0x60, 0x13, 0x4e, 0x66,
0x22, 0x00, 0x68, 0x33, 0x92, 0x00, 0x2b, 0x00, 0xdb, 0x26, 0x1c, 0x35, 0x27, 0x00, 0x68, 0x32,
0x21, 0x80, 0x1c, 0x13, 0x33, 0x10, 0x02, 0x5b, 0x02, 0x52, 0x1c, 0x20, 0x01, 0x09, 0x93, 0x00,
0xf7, 0xff, 0xff, 0x8a, 0x28, 0x00, 0xda, 0x03, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x33, 0xe0, 0x13,
0x78, 0x23, 0x2b, 0x43, 0xd1, 0x08, 0x78, 0x63, 0x2b, 0x49, 0xd1, 0x05, 0x78, 0xa3, 0x2b, 0x53,
0xd1, 0x02, 0x78, 0xe3, 0x2b, 0x4f, 0xd0, 0x07, 0x68, 0x2b, 0x2b, 0x00, 0xd0, 0x01, 0x60, 0x2f,
0xe7, 0xdd, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x2b, 0x4e, 0x4f, 0x68, 0x33, 0x2b, 0x00, 0xdb, 0x59,
0x4b, 0x4c, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x55, 0x79, 0x62, 0x79, 0xa3, 0x02, 0x12, 0x04, 0x1b,
0x18, 0xd2, 0x79, 0x23, 0x48, 0x4a, 0x18, 0xd2, 0x79, 0xe3, 0x21, 0x00, 0x06, 0x1b, 0x18, 0xd2,
0x4b, 0x48, 0x08, 0x92, 0x60, 0x1a, 0x22, 0x80, 0x01, 0x12, 0xf0, 0x00, 0xfb, 0xcb, 0x27, 0x08,
0x25, 0x00, 0x05, 0x7b, 0x2b, 0x00, 0xd1, 0x16, 0x49, 0x43, 0x23, 0x01, 0x42, 0x8d, 0xdc, 0x00,
0x23, 0x00, 0x06, 0x1b, 0x2b, 0x00, 0xd0, 0x0e, 0x68, 0x33, 0x12, 0xfa, 0x18, 0xd2, 0x21, 0x80,
0x02, 0x52, 0x1c, 0x20, 0x01, 0x09, 0xf7, 0xff, 0xff, 0x3f, 0x28, 0x00, 0xda, 0x03, 0x23, 0x01,
0x42, 0x5b, 0x60, 0x33, 0xe0, 0x20, 0x20, 0x07, 0x40, 0x28, 0xd1, 0x05, 0x4b, 0x31, 0x10, 0xea,
0x68, 0x1b, 0x99, 0x00, 0x00, 0x92, 0x50, 0xd1, 0x05, 0x7b, 0x0d, 0x5b, 0x5c, 0xe3, 0x2b, 0x00,
0xd0, 0x0c, 0x4a, 0x2f, 0x21, 0x01, 0x10, 0xeb, 0x40, 0x81, 0x1c, 0x08, 0x5c, 0xd1, 0x43, 0x01,
0x54, 0xd1, 0x4b, 0x2c, 0x9a, 0x00, 0x68, 0x1b, 0x18, 0xd2, 0x92, 0x00, 0x23, 0x80, 0x35, 0x01,
0x01, 0xdb, 0x37, 0x01, 0x42, 0x9d, 0xd1, 0xc4, 0x4b, 0x23, 0x68, 0x1a, 0x2a, 0x00, 0xdb, 0x01,
0x4a, 0x26, 0x60, 0x1a, 0x2c, 0x00, 0xd0, 0x02, 0x1c, 0x20, 0xf0, 0x01, 0xf8, 0x07, 0x4b, 0x1e,
0x4c, 0x1c, 0x68, 0x1a, 0x4b, 0x21, 0x42, 0x9a, 0xd1, 0x1e, 0x4b, 0x1e, 0x98, 0x01, 0x68, 0x1d,
0x1c, 0x29, 0xf0, 0x01, 0xf8, 0x1b, 0x68, 0x23, 0x08, 0xc1, 0x24, 0x07, 0x00, 0x8a, 0x58, 0xd2,
0x40, 0x20, 0x23, 0x00, 0x4e, 0x16, 0x24, 0x01, 0xe0, 0x05, 0x5c, 0x77, 0x41, 0x1f, 0x42, 0x3c,
0xd0, 0x00, 0x19, 0x52, 0x33, 0x01, 0x42, 0x83, 0xd3, 0xf7, 0x9b, 0x01, 0x3d, 0x01, 0x40, 0x1d,
0x19, 0x52, 0x98, 0x02, 0x99, 0x03, 0xe0, 0x0b, 0x68, 0x21, 0x29, 0x00, 0xd0, 0x02, 0x20, 0x00,
0xf0, 0x01, 0xf8, 0x04, 0x4b, 0x07, 0x22, 0x00, 0x60, 0x1a, 0x98, 0x02, 0x99, 0x03, 0x9a, 0x01,
0xf7, 0xff, 0xfe, 0xda, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x77, 0xeb, 0x14,
0x13, 0x77, 0xec, 0x24, 0x13, 0x77, 0xeb, 0x0c, 0x13, 0x77, 0xe2, 0x04, 0x80, 0x00, 0x00, 0x01,
0x13, 0x77, 0xec, 0x40, 0x13, 0x77, 0xeb, 0x3c, 0x00, 0x00, 0x07, 0xf7, 0x7f, 0xff, 0xff, 0xff,
0xb5, 0x10, 0x21, 0x80, 0x20, 0x00, 0x01, 0x09, 0x22, 0x20, 0xf0, 0x00, 0xff, 0xcf, 0x1e, 0x04,
0xd0, 0x10, 0x21, 0x80, 0x22, 0x8e, 0x01, 0x09, 0x1c, 0x20, 0x05, 0xd2, 0xf7, 0xff, 0xfe, 0xd0,
0x1e, 0x43, 0x41, 0x98, 0x23, 0x02, 0x1a, 0x18, 0x4b, 0x04, 0x1c, 0x21, 0x60, 0x18, 0x20, 0x00,
0xf0, 0x00, 0xff, 0xcc, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x77, 0xeb, 0x10,
0xb5, 0x38, 0x22, 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf7, 0xff, 0xfe, 0xba, 0x69, 0xa2, 0x4b, 0x09,
0x1c, 0x05, 0x42, 0x9a, 0xd1, 0x09, 0x4b, 0x08, 0x21, 0x01, 0x68, 0x1a, 0x70, 0x11, 0x68, 0x1b,
0x78, 0x5b, 0x2b, 0x00, 0xd1, 0x01, 0xf0, 0x00, 0xff, 0x85, 0x1c, 0x28, 0xbc, 0x38, 0xbc, 0x02,
0x47, 0x08, 0x46, 0xc0, 0x5d, 0x1c, 0x9e, 0xa3, 0x13, 0x77, 0xc0, 0x08, 0xb5, 0xf0, 0xb0, 0x83,
0x92, 0x01, 0x78, 0x02, 0x1c, 0x07, 0x92, 0x00, 0x4a, 0xba, 0x1c, 0x0d, 0x68, 0x13, 0x2b, 0x00,
0xd0, 0x0d, 0x4c, 0xb9, 0x4e, 0xb9, 0x68, 0x20, 0x68, 0x32, 0x21, 0x00, 0xf0, 0x00, 0xfa, 0xea,
0x68, 0x20, 0x68, 0x31, 0xf0, 0x00, 0xff, 0x72, 0x4a, 0xb2, 0x23, 0x00, 0x60, 0x13, 0x9b, 0x00,
0x2b, 0xe0, 0xd0, 0x61, 0x4c, 0xb2, 0x26, 0x00, 0x62, 0x26, 0x2b, 0xda, 0xd1, 0x00, 0xe1, 0x51,
0x2b, 0xda, 0xd8, 0x2f, 0x2b, 0x8a, 0xd1, 0x00, 0xe1, 0xb6, 0x2b, 0x8a, 0xd8, 0x12, 0x2b, 0x15,
0xd1, 0x00, 0xe1, 0x1c, 0x2b, 0x15, 0xd8, 0x03, 0x2b, 0x13, 0xd2, 0x00, 0xe1, 0xd8, 0xe0, 0xf0,
0x9a, 0x00, 0x2a, 0x71, 0xd1, 0x00, 0xe1, 0x69, 0x2a, 0x79, 0xd0, 0x60, 0x2a, 0x70, 0xd0, 0x00,
0xe1, 0xce, 0xe1, 0x7a, 0x9b, 0x00, 0x2b, 0xa8, 0xd1, 0x00, 0xe1, 0xbe, 0x2b, 0xa8, 0xd8, 0x06,
0x2b, 0x8d, 0xd1, 0x00, 0xe1, 0xb9, 0x2b, 0xa4, 0xd0, 0x00, 0xe1, 0xc1, 0xe1, 0x1c, 0x9a, 0x00,
0x2a, 0xd0, 0xd1, 0x00, 0xe1, 0xb1, 0x2a, 0xd9, 0xd1, 0x00, 0xe1, 0x04, 0x2a, 0xab, 0xd0, 0x00,
0xe1, 0xb6, 0xe0, 0x39, 0x9b, 0x00, 0x2b, 0xf4, 0xd0, 0x5e, 0x2b, 0xf4, 0xd8, 0x0f, 0x2b, 0xf0,
0xd0, 0x50, 0x2b, 0xf0, 0xd8, 0x05, 0x2b, 0xe0, 0xd0, 0x1e, 0x2b, 0xe4, 0xd0, 0x00, 0xe1, 0xa7,
0xe0, 0x3a, 0x9a, 0x00, 0x2a, 0xf2, 0xd0, 0x4a, 0x2a, 0xf2, 0xd8, 0x4b, 0xe0, 0x45, 0x9b, 0x00,
0x2b, 0xf9, 0xd0, 0x61, 0x2b, 0xf9, 0xd8, 0x05, 0x2b, 0xf5, 0xd0, 0x56, 0x2b, 0xf6, 0xd0, 0x00,
0xe1, 0x96, 0xe0, 0xaa, 0x9a, 0x00, 0x2a, 0xfb, 0xd1, 0x00, 0xe0, 0x9b, 0x2a, 0xfb, 0xd3, 0x7d,
0x2a, 0xff, 0xd0, 0x00, 0xe1, 0x8c, 0xe0, 0xcf, 0x4b, 0x81, 0x6a, 0x1a, 0x2a, 0x00, 0xd1, 0x03,
0x69, 0x1b, 0x2b, 0x00, 0xd1, 0x00, 0xe1, 0x83, 0x1c, 0x28, 0x21, 0x00, 0x9a, 0x01, 0xf0, 0x00,
0xfa, 0x71, 0x4b, 0x7b, 0x6a, 0x1b, 0xe0, 0x39, 0x4b, 0x79, 0x26, 0x00, 0x68, 0x5a, 0x2a, 0x00,
0xd0, 0x00, 0xe1, 0x7d, 0x69, 0x1b, 0x2b, 0x00, 0xd0, 0x00, 0xe1, 0x79, 0xe1, 0x70, 0x69, 0x23,
0x2b, 0x00, 0xd1, 0x00, 0xe1, 0x6c, 0xe1, 0x72, 0x68, 0x63, 0x2b, 0x00, 0xd1, 0x04, 0x4b, 0x70,
0x69, 0x1b, 0x2b, 0x00, 0xd1, 0x00, 0xe1, 0x63, 0x1c, 0x28, 0x21, 0x00, 0x9a, 0x01, 0xf0, 0x00,
0xfa, 0x51, 0xe0, 0x1c, 0x68, 0x7b, 0x60, 0xa3, 0xe1, 0x61, 0x68, 0xa3, 0xe0, 0x16, 0x68, 0x7b,
0x60, 0x23, 0xe1, 0x5c, 0x68, 0x23, 0xe0, 0x11, 0x68, 0x7b, 0x1d, 0xe2, 0x61, 0x23, 0x77, 0xd6,
0x2b, 0x00, 0xd0, 0x06, 0x1c, 0x20, 0x1c, 0x39, 0x30, 0x18, 0x31, 0x08, 0x22, 0x06, 0xf0, 0x00,
0xfe, 0xd1, 0x69, 0x7a, 0x4b, 0x5e, 0x61, 0x5a, 0xe1, 0x49, 0x69, 0x23, 0x60, 0x2b, 0x99, 0x01,
0x1c, 0x28, 0xf0, 0x00, 0xfe, 0xbb, 0xe1, 0x42, 0x68, 0x7b, 0x93, 0x00, 0x68, 0xba, 0x92, 0x01,
0x68, 0xff, 0xf7, 0xff, 0xfb, 0x8b, 0x1d, 0xe3, 0x77, 0xde, 0x9b, 0x01, 0x61, 0x26, 0x60, 0x2e,
0x2b, 0x00, 0xd1, 0x00, 0xe1, 0x33, 0x9a, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0xe1, 0x2f, 0x26, 0x00,
0x2f, 0x00, 0xd1, 0x00, 0xe1, 0x2c, 0x1c, 0x18, 0xf0, 0x00, 0xfe, 0xa4, 0x1c, 0x3a, 0x1c, 0x01,
0x98, 0x00, 0xf7, 0xff, 0xfb, 0xa7, 0x60, 0x28, 0x28, 0x00, 0xdc, 0x00, 0xe1, 0x20, 0x4b, 0x48,
0x21, 0x01, 0x1d, 0xda, 0x77, 0xd1, 0x9a, 0x00, 0x61, 0x1a, 0xe1, 0x19, 0x60, 0x2e, 0x34, 0x07,
0x7f, 0xe3, 0x2b, 0x00, 0xd0, 0x01, 0x23, 0x10, 0xe0, 0x0a, 0x4b, 0x42, 0x68, 0x1b, 0x2b, 0x00,
0xd0, 0x01, 0x23, 0x08, 0xe0, 0x04, 0x4b, 0x3e, 0x69, 0x1a, 0x2a, 0x00, 0xd0, 0x02, 0x23, 0x04,
0x60, 0x2b, 0xe1, 0x04, 0x68, 0x5b, 0x26, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0xe1, 0x00, 0x23, 0x01,
0x60, 0x2b, 0xe0, 0xfd, 0x1c, 0x28, 0x49, 0x38, 0x22, 0x04, 0xf0, 0x00, 0xfe, 0x7b, 0x69, 0x23,
0x34, 0x07, 0x60, 0x6b, 0x7f, 0xe3, 0x60, 0xab, 0xe0, 0xf1, 0x79, 0x3b, 0x34, 0x05, 0x77, 0xe3,
0xe0, 0xed, 0x26, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0xe0, 0xea, 0x9b, 0x00, 0x2b, 0x13, 0xd1, 0x0d,
0x69, 0x23, 0x2b, 0x00, 0xd0, 0x11, 0x4b, 0x2d, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x09, 0xf0, 0x00,
0xf9, 0xf9, 0x1e, 0x43, 0x41, 0x98, 0x00, 0x40, 0x60, 0x28, 0xe7, 0x90, 0x69, 0x23, 0x2b, 0x00,
0xd0, 0x03, 0x4b, 0x27, 0x68, 0x1b, 0x2b, 0x00, 0xda, 0x07, 0x4b, 0x26, 0x22, 0x01, 0x68, 0x1b,
0x40, 0x13, 0x42, 0x5a, 0x41, 0x53, 0x00, 0x5b, 0xe7, 0x80, 0x23, 0x02, 0xe7, 0x7e, 0x4b, 0x21,
0x22, 0x01, 0x68, 0x1b, 0x43, 0x93, 0xe7, 0x79, 0x68, 0x78, 0x1c, 0x29, 0x00, 0x40, 0x08, 0x40,
0xf7, 0xff, 0xf9, 0xb6, 0xe0, 0xb9, 0x68, 0x63, 0x2b, 0x00, 0xd1, 0x04, 0x4b, 0x14, 0x69, 0x1b,
0x2b, 0x00, 0xd1, 0x00, 0xe0, 0xac, 0x68, 0x7a, 0x68, 0xbb, 0x07, 0x92, 0x43, 0x1a, 0x0b, 0xd2,
0x4b, 0x0f, 0x03, 0xd2, 0x60, 0xda, 0xe0, 0xaa, 0x68, 0x63, 0x2b, 0x00, 0xd1, 0x04, 0x4b, 0x0c,
0x69, 0x1b, 0x2b, 0x00, 0xd1, 0x00, 0xe0, 0x9b, 0x4a, 0x0f, 0x4b, 0x09, 0x26, 0xa0, 0x62, 0x1a,
0x02, 0x36, 0xe0, 0x9d, 0x4c, 0x0d, 0x21, 0x40, 0x1c, 0x20, 0xf0, 0x00, 0xfe, 0x17, 0x1c, 0x23,
0x33, 0x40, 0xe0, 0x18, 0x13, 0x77, 0xe2, 0x00, 0x13, 0x77, 0xc0, 0x44, 0x13, 0x77, 0xc0, 0x48,
0x13, 0x77, 0xeb, 0x14, 0x13, 0x77, 0xec, 0x24, 0x13, 0x77, 0xd8, 0xd8, 0x13, 0x77, 0xec, 0x28,
0x13, 0x77, 0xe2, 0x84, 0x0d, 0x00, 0x60, 0x04, 0x00, 0x05, 0x31, 0x00, 0x13, 0x77, 0xd8, 0xe0,
0x34, 0x01, 0x42, 0x9c, 0xd0, 0x74, 0x78, 0x22, 0x2a, 0x00, 0xd0, 0xf9, 0x49, 0x3f, 0x1c, 0x28,
0x22, 0x40, 0xf0, 0x00, 0xfd, 0xf7, 0x1c, 0x28, 0x21, 0x40, 0xe7, 0x2a, 0x1d, 0xa3, 0x22, 0x01,
0x77, 0xda, 0x68, 0x23, 0x2b, 0x00, 0xd1, 0x05, 0x1c, 0x38, 0x1c, 0x29, 0x9a, 0x01, 0xf0, 0x00,
0xfc, 0x49, 0xe0, 0x04, 0x68, 0x79, 0x68, 0xba, 0x1c, 0x28, 0xf7, 0xff, 0xfc, 0xf1, 0x4b, 0x34,
0x22, 0x00, 0x33, 0x06, 0x1c, 0x06, 0x77, 0xda, 0xe0, 0x5a, 0x4b, 0x31, 0x69, 0x1b, 0x2b, 0x00,
0xd1, 0x06, 0x1c, 0x38, 0x1c, 0x29, 0x9a, 0x01, 0xf0, 0x00, 0xfc, 0x34, 0x28, 0x00, 0xd1, 0x0c,
0x4b, 0x2b, 0x20, 0x00, 0x68, 0xd9, 0x68, 0x9a, 0x43, 0x11, 0xd1, 0x06, 0x69, 0x1a, 0x2a, 0x00,
0xd1, 0x03, 0x69, 0xac, 0x49, 0x27, 0x42, 0x8c, 0xd0, 0x0a, 0x1e, 0x43, 0x41, 0x98, 0x4b, 0x24,
0x99, 0x01, 0x60, 0x58, 0x1c, 0x28, 0xf7, 0xff, 0xfe, 0x0b, 0x1e, 0x06, 0xd1, 0x38, 0xe0, 0x00,
0x60, 0x5a, 0xf7, 0xff, 0xfd, 0xe5, 0xe0, 0x32, 0x1d, 0x63, 0x7f, 0xdb, 0x26, 0x00, 0x2b, 0x00,
0xd1, 0x2e, 0x1d, 0xa2, 0x77, 0xd3, 0x60, 0x23, 0x60, 0x63, 0x60, 0xa3, 0x60, 0xe3, 0x69, 0x23,
0x2b, 0x00, 0xd1, 0x04, 0x69, 0x62, 0x4b, 0x18, 0x3a, 0x01, 0x60, 0x1a, 0xe0, 0x18, 0xf7, 0xff,
0xf9, 0x07, 0x1d, 0xe3, 0x7f, 0xdb, 0x2b, 0x00, 0xd1, 0x1a, 0x69, 0x20, 0x1c, 0x21, 0x31, 0x18,
0x69, 0x62, 0x38, 0x01, 0xf0, 0x00, 0xfa, 0x9c, 0xe0, 0x0f, 0x9b, 0x00, 0x68, 0x79, 0x68, 0xba,
0x2b, 0xd0, 0xd1, 0x01, 0x02, 0xc9, 0x02, 0x52, 0x1c, 0x28, 0xf7, 0xff, 0xfc, 0x99, 0xe0, 0x04,
0x1c, 0x38, 0x1c, 0x29, 0x9a, 0x01, 0xf0, 0x00, 0xfb, 0xe5, 0x1c, 0x06, 0xe0, 0x00, 0x26, 0x00,
0xb0, 0x03, 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x77, 0xd8, 0xe0,
0x13, 0x77, 0xeb, 0x14, 0x5d, 0x1c, 0x9e, 0xa3, 0x13, 0x77, 0xe2, 0x04, 0xb5, 0x30, 0xb0, 0x83,
0x4c, 0x0e, 0x25, 0x00, 0x68, 0x23, 0x2b, 0x00, 0xda, 0x13, 0x48, 0x0d, 0x21, 0x01, 0xf0, 0x00,
0xfd, 0x43, 0x60, 0x20, 0x28, 0x00, 0xdb, 0x0a, 0x22, 0x00, 0x23, 0x00, 0x21, 0x01, 0x95, 0x00,
0xf0, 0x00, 0xfd, 0x44, 0x23, 0x80, 0x4a, 0x07, 0x00, 0x9b, 0x60, 0x13, 0xe0, 0x01, 0x25, 0x0b,
0x42, 0x6d, 0xb0, 0x03, 0x1c, 0x28, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x77, 0xe2, 0x44,
0x13, 0x77, 0xe2, 0x20, 0x13, 0x77, 0xe2, 0x40, 0xb5, 0x70, 0xb0, 0x82, 0x1c, 0x03, 0x48, 0x1d,
0x68, 0x04, 0x20, 0x00, 0x2c, 0x00, 0xdb, 0x31, 0x48, 0x1b, 0x4c, 0x1c, 0x60, 0x03, 0x23, 0x04,
0x60, 0x63, 0x60, 0xe3, 0x4b, 0x1a, 0x60, 0x41, 0x68, 0x1b, 0x60, 0x20, 0x43, 0x59, 0x30, 0x04,
0x1c, 0x26, 0x60, 0xa0, 0x61, 0x22, 0x61, 0x61, 0x36, 0x18, 0x1c, 0x25, 0x68, 0x28, 0x68, 0x69,
0x35, 0x08, 0xf0, 0x00, 0xfd, 0x23, 0x42, 0xb5, 0xd1, 0xf8, 0x4d, 0x10, 0x21, 0x18, 0x1c, 0x28,
0xf0, 0x00, 0xfd, 0x1c, 0x4b, 0x0b, 0x21, 0x02, 0x68, 0x18, 0x22, 0x02, 0x23, 0x01, 0x95, 0x00,
0xf0, 0x00, 0xfd, 0x04, 0x1c, 0x03, 0x20, 0x00, 0x2b, 0x00, 0xdb, 0x07, 0x68, 0x20, 0x68, 0x61,
0x34, 0x08, 0xf0, 0x00, 0xfd, 0x13, 0x42, 0xb4, 0xd1, 0xf8, 0x20, 0x01, 0xb0, 0x02, 0xbc, 0x70,
0xbc, 0x02, 0x47, 0x08, 0x13, 0x77, 0xe2, 0x44, 0x13, 0x77, 0xeb, 0x60, 0x13, 0x77, 0xeb, 0x40,
0x13, 0x77, 0xe2, 0x40, 0xb5, 0x70, 0xb0, 0x82, 0x1c, 0x03, 0x48, 0x1d, 0x68, 0x04, 0x20, 0x00,
0x2c, 0x00, 0xdb, 0x31, 0x48, 0x1b, 0x4c, 0x1c, 0x60, 0x03, 0x23, 0x04, 0x60, 0x63, 0x60, 0xe3,
0x4b, 0x1a, 0x60, 0x41, 0x68, 0x1b, 0x60, 0x20, 0x43, 0x59, 0x30, 0x04, 0x1c, 0x26, 0x60, 0xa0,
0x61, 0x22, 0x61, 0x61, 0x36, 0x18, 0x1c, 0x25, 0x68, 0x28, 0x68, 0x69, 0x35, 0x08, 0xf0, 0x00,
0xfc, 0xdd, 0x42, 0xb5, 0xd1, 0xf8, 0x4d, 0x10, 0x21, 0x18, 0x1c, 0x28, 0xf0, 0x00, 0xfc, 0xd6,
0x4b, 0x0b, 0x49, 0x0f, 0x68, 0x18, 0x22, 0x02, 0x23, 0x01, 0x95, 0x00, 0xf0, 0x00, 0xfc, 0xbe,
0x1c, 0x03, 0x20, 0x00, 0x2b, 0x00, 0xdb, 0x07, 0x68, 0x20, 0x68, 0x61, 0x34, 0x08, 0xf0, 0x00,
0xfc, 0xcd, 0x42, 0xb4, 0xd1, 0xf8, 0x20, 0x01, 0xb0, 0x02, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08,
0x13, 0x77, 0xe2, 0x80, 0x13, 0x77, 0xeb, 0xa0, 0x13, 0x77, 0xeb, 0x80, 0x13, 0x77, 0xeb, 0xc0,
0x55, 0x4d, 0x53, 0x03, 0xb5, 0x30, 0xb0, 0x83, 0x4c, 0x0e, 0x25, 0x00, 0x68, 0x23, 0x2b, 0x00,
0xda, 0x13, 0x48, 0x0d, 0x21, 0x01, 0xf0, 0x00, 0xfc, 0x8f, 0x60, 0x20, 0x28, 0x00, 0xdb, 0x0a,
0x22, 0x00, 0x23, 0x00, 0x49, 0x09, 0x95, 0x00, 0xf0, 0x00, 0xfc, 0x90, 0x23, 0x80, 0x4a, 0x08,
0x00, 0x9b, 0x60, 0x13, 0xe0, 0x01, 0x25, 0x0b, 0x42, 0x6d, 0xb0, 0x03, 0x1c, 0x28, 0xbc, 0x30,
0xbc, 0x02, 0x47, 0x08, 0x13, 0x77, 0xe2, 0x80, 0x13, 0x77, 0xe2, 0x60, 0x55, 0x4d, 0x53, 0x01,
0x13, 0x77, 0xeb, 0xc0, 0xb5, 0xf0, 0x2a, 0x00, 0xd0, 0x29, 0x23, 0x03, 0x1c, 0x1c, 0x40, 0x04,
0x27, 0x04, 0x1b, 0x3c, 0x06, 0x0e, 0x40, 0x1c, 0x0e, 0x36, 0x1c, 0x05, 0x42, 0x94, 0xd8, 0x03,
0x23, 0x00, 0x2c, 0x00, 0xd0, 0x08, 0xe0, 0x00, 0x1c, 0x14, 0x1c, 0x23, 0xe0, 0x01, 0x70, 0x2e,
0x35, 0x01, 0x3b, 0x01, 0xd2, 0xfb, 0x1c, 0x23, 0x04, 0x0c, 0x06, 0x0d, 0x43, 0x25, 0x43, 0x0d,
0x02, 0x0c, 0x1c, 0x29, 0x43, 0x21, 0x18, 0xc4, 0xe0, 0x01, 0xc4, 0x02, 0x1c, 0x2b, 0x1d, 0x1d,
0x42, 0x95, 0xd9, 0xfa, 0xe0, 0x01, 0x33, 0x01, 0x54, 0xc6, 0x42, 0x93, 0xd3, 0xfb, 0xbc, 0xf0,
0xbc, 0x01, 0x47, 0x00, 0xb5, 0x00, 0xb0, 0x83, 0x4b, 0x0a, 0x20, 0x01, 0x68, 0x1b, 0x2b, 0x00,
0xd0, 0x0c, 0x4b, 0x09, 0x68, 0x1b, 0x2b, 0x00, 0xdb, 0x08, 0x4a, 0x08, 0x1c, 0x18, 0x68, 0x12,
0x49, 0x07, 0x92, 0x00, 0x23, 0x00, 0x22, 0x00, 0xf0, 0x00, 0xfc, 0x38, 0xb0, 0x03, 0xbc, 0x02,
0x47, 0x08, 0x46, 0xc0, 0x13, 0x77, 0xec, 0x28, 0x13, 0x77, 0xe2, 0x84, 0x13, 0x77, 0xeb, 0xc4,
0x57, 0x46, 0x53, 0x04, 0xb5, 0xf0, 0xb0, 0x87, 0x4b, 0x9a, 0x90, 0x03, 0x68, 0x1b, 0x91, 0x02,
0x92, 0x04, 0x2b, 0x00, 0xd0, 0x04, 0x21, 0xff, 0x9a, 0x02, 0xf7, 0xff, 0xff, 0xa3, 0xe0, 0xee,
0x4d, 0x95, 0x68, 0x2b, 0x2b, 0x00, 0xda, 0x00, 0xe1, 0x1c, 0x4b, 0x94, 0x68, 0x1b, 0x2b, 0x00,
0xd1, 0x00, 0xe0, 0xf0, 0x3b, 0x01, 0x2b, 0x01, 0xd9, 0x00, 0xe0, 0xad, 0x4c, 0x90, 0x68, 0x23,
0x2b, 0x00, 0xd1, 0x06, 0x21, 0x80, 0x20, 0x00, 0x01, 0x89, 0x22, 0x20, 0xf0, 0x00, 0xfc, 0x26,
0x60, 0x20, 0x20, 0x80, 0x01, 0x00, 0x21, 0x20, 0xf0, 0x00, 0xfc, 0x0c, 0x1e, 0x04, 0xd1, 0x03,
0x23, 0x01, 0x4a, 0x86, 0x42, 0x5b, 0x60, 0x13, 0x4b, 0x84, 0x25, 0x00, 0x68, 0x1b, 0x2b, 0x00,
0xdb, 0x21, 0x4d, 0x81, 0x21, 0x00, 0x68, 0x28, 0x22, 0x00, 0xf0, 0x00, 0xfc, 0x13, 0x28, 0x00,
0xdb, 0x13, 0x22, 0x80, 0x68, 0x28, 0x1c, 0x21, 0x01, 0x12, 0xf0, 0x00, 0xfc, 0x13, 0x28, 0x00,
0xdb, 0x0b, 0x78, 0x23, 0x2b, 0x43, 0xd1, 0x08, 0x78, 0x63, 0x2b, 0x49, 0xd1, 0x05, 0x78, 0xa3,
0x2b, 0x53, 0xd1, 0x02, 0x78, 0xe3, 0x2b, 0x4f, 0xd0, 0x03, 0x23, 0x01, 0x4a, 0x73, 0x42, 0x5b,
0x60, 0x13, 0x25, 0x80, 0x01, 0xad, 0x4a, 0x71, 0x68, 0x13, 0x2b, 0x00, 0xdb, 0x67, 0x4b, 0x70,
0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x63, 0x79, 0x62, 0x79, 0xa3, 0x02, 0x12, 0x04, 0x1b, 0x18, 0xd2,
0x79, 0x23, 0x48, 0x6c, 0x18, 0xd2, 0x79, 0xe3, 0x21, 0x00, 0x06, 0x1b, 0x18, 0xd2, 0x4b, 0x6a,
0x08, 0x92, 0x60, 0x1a, 0x22, 0x80, 0x01, 0x12, 0xf7, 0xff, 0xff, 0x3c, 0x27, 0x08, 0x26, 0x00,
0x05, 0x7b, 0x2b, 0x00, 0xd1, 0x26, 0x4a, 0x65, 0x23, 0x01, 0x42, 0x96, 0xdc, 0x00, 0x23, 0x00,
0x06, 0x1b, 0x2b, 0x00, 0xd0, 0x1e, 0x4b, 0x5d, 0x68, 0x1a, 0x4b, 0x5b, 0x2a, 0x02, 0xd1, 0x03,
0x12, 0xf9, 0x68, 0x18, 0x02, 0x49, 0xe0, 0x02, 0x0a, 0xf9, 0x68, 0x18, 0x02, 0xc9, 0x22, 0x00,
0xf0, 0x00, 0xfb, 0xc0, 0x28, 0x00, 0xdb, 0x08, 0x4b, 0x53, 0x22, 0x80, 0x68, 0x18, 0x1c, 0x21,
0x01, 0x12, 0xf0, 0x00, 0xfb, 0xbf, 0x28, 0x00, 0xda, 0x04, 0x23, 0x01, 0x4a, 0x4f, 0x42, 0x5b,
0x60, 0x13, 0xe0, 0x1d, 0x20, 0x07, 0x40, 0x30, 0xd1, 0x04, 0x4b, 0x4d, 0x10, 0xf2, 0x68, 0x1b,
0x00, 0x92, 0x50, 0xd5, 0x05, 0x7b, 0x0d, 0x5b, 0x5c, 0xe3, 0x2b, 0x00, 0xd0, 0x0a, 0x4a, 0x49,
0x21, 0x01, 0x10, 0xf3, 0x40, 0x81, 0x1c, 0x08, 0x5c, 0xd1, 0x43, 0x01, 0x54, 0xd1, 0x4b, 0x46,
0x68, 0x1b, 0x18, 0xed, 0x23, 0x80, 0x36, 0x01, 0x01, 0xdb, 0x37, 0x01, 0x42, 0x9e, 0xd1, 0xb7,
0x4b, 0x3e, 0x68, 0x1a, 0x2a, 0x00, 0xdb, 0x02, 0x21, 0x04, 0x43, 0x0a, 0x60, 0x1a, 0x2c, 0x00,
0xd0, 0x02, 0x1c, 0x20, 0xf0, 0x00, 0xfb, 0x6a, 0x4b, 0x38, 0x4c, 0x39, 0x68, 0x1b, 0x93, 0x05,
0x2b, 0x03, 0xdd, 0x2e, 0x4b, 0x38, 0x98, 0x04, 0x68, 0x1d, 0x1c, 0x29, 0xf0, 0x00, 0xfb, 0x7e,
0x68, 0x23, 0x08, 0xc2, 0x24, 0x07, 0x00, 0x91, 0x58, 0xc9, 0x40, 0x20, 0x23, 0x00, 0x4e, 0x31,
0x24, 0x01, 0xe0, 0x05, 0x5c, 0xb7, 0x41, 0x1f, 0x42, 0x3c, 0xd0, 0x00, 0x19, 0x49, 0x33, 0x01,
0x42, 0x83, 0xd3, 0xf7, 0x9a, 0x04, 0x3d, 0x01, 0x40, 0x15, 0x9a, 0x05, 0x19, 0x49, 0x4b, 0x26,
0x07, 0x92, 0xd5, 0x01, 0x68, 0x18, 0xe0, 0x01, 0x68, 0x18, 0x00, 0x89, 0x22, 0x00, 0xf0, 0x00,
0xfb, 0x59, 0x4b, 0x21, 0x99, 0x03, 0x68, 0x18, 0x9a, 0x02, 0xf0, 0x00, 0xfb, 0x5b, 0x24, 0x00,
0xe0, 0x32, 0x68, 0x21, 0x29, 0x00, 0xd0, 0x02, 0x20, 0x00, 0xf0, 0x00, 0xfb, 0x57, 0x4b, 0x1c,
0x22, 0x00, 0x60, 0x1a, 0xe0, 0x26, 0x4c, 0x1e, 0x9b, 0x04, 0x68, 0x20, 0x9a, 0x02, 0x62, 0x03,
0x9b, 0x03, 0x63, 0xc2, 0x61, 0x03, 0x61, 0x82, 0x21, 0x40, 0xf0, 0x00, 0xfb, 0x27, 0x98, 0x03,
0x99, 0x02, 0xf0, 0x00, 0xfb, 0x23, 0x4b, 0x17, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x04, 0x68, 0x23,
0x68, 0x28, 0x49, 0x15, 0x93, 0x00, 0xe0, 0x03, 0x68, 0x23, 0x49, 0x14, 0x68, 0x28, 0x93, 0x00,
0x22, 0x02, 0x23, 0x01, 0xf0, 0x00, 0xfb, 0x02, 0x99, 0x02, 0x1c, 0x04, 0x98, 0x03, 0xf0, 0x00,
0xfb, 0x15, 0xe0, 0x01, 0x24, 0x01, 0x42, 0x64, 0xb0, 0x07, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02,
0x47, 0x08, 0x46, 0xc0, 0x13, 0x77, 0xec, 0x20, 0x13, 0x77, 0xe2, 0x84, 0x13, 0x77, 0xec, 0x24,
0x13, 0x77, 0xeb, 0x0c, 0x13, 0x77, 0xec, 0x40, 0x13, 0x77, 0xeb, 0x3c, 0x00, 0x00, 0x07, 0xf7,
0x13, 0x77, 0xeb, 0xc4, 0x13, 0x77, 0xec, 0x28, 0x57, 0x46, 0x53, 0x03, 0x57, 0x46, 0x53, 0x02,
0xb5, 0xf0, 0xb0, 0x85, 0x1c, 0x05, 0x1c, 0x0e, 0x92, 0x03, 0x28, 0x01, 0xd9, 0x00, 0xe0, 0x9e,
0x4a, 0x53, 0x4b, 0x54, 0x68, 0x11, 0x42, 0x99, 0xd1, 0x02, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x13,
0x4b, 0x51, 0x68, 0x1a, 0x2a, 0x00, 0xd1, 0x02, 0x4a, 0x50, 0x60, 0x1a, 0xe0, 0x05, 0x4b, 0x4c,
0x68, 0x18, 0x28, 0x00, 0xdb, 0x01, 0xf0, 0x00, 0xfa, 0xf5, 0x48, 0x49, 0x23, 0x01, 0x42, 0x5b,
0x60, 0x03, 0x4a, 0x4b, 0x4b, 0x4b, 0x21, 0x00, 0x60, 0x11, 0x60, 0x19, 0x78, 0x31, 0x29, 0x5f,
0xd1, 0x38, 0x78, 0x71, 0x29, 0x4e, 0xd1, 0x0c, 0x78, 0xb2, 0x2a, 0x55, 0xd1, 0x32, 0x78, 0xf2,
0x2a, 0x4c, 0xd1, 0x2f, 0x22, 0x01, 0x60, 0x1a, 0x4b, 0x43, 0x60, 0x1a, 0x4b, 0x3d, 0x60, 0x03,
0xe0, 0x70, 0x29, 0x44, 0xd1, 0x26, 0x78, 0xb1, 0x29, 0x45, 0xd1, 0x1c, 0x78, 0xf2, 0x2a, 0x56,
0xd1, 0x20, 0x22, 0x01, 0x60, 0x1a, 0x79, 0x32, 0x2a, 0x57, 0xd1, 0x01, 0x22, 0x02, 0x60, 0x1a,
0x4c, 0x3a, 0x21, 0x80, 0x1c, 0x20, 0x00, 0x49, 0xf0, 0x00, 0xfa, 0xa8, 0x1c, 0x20, 0x21, 0x00,
0xf0, 0x00, 0xfa, 0x82, 0x4b, 0x2e, 0x1c, 0x05, 0x60, 0x18, 0x28, 0x00, 0xda, 0x52, 0x4b, 0x31,
0x22, 0x00, 0x60, 0x1a, 0xe0, 0x4f, 0x29, 0x56, 0xd1, 0x04, 0x78, 0xf3, 0x2b, 0x44, 0xd1, 0x01,
0x23, 0x01, 0x60, 0x13, 0x4b, 0x2e, 0x00, 0xaa, 0x58, 0xd0, 0x21, 0x01, 0xf0, 0x00, 0xfa, 0x6c,
0x4c, 0x23, 0x60, 0x20, 0x28, 0x00, 0xda, 0x06, 0x2d, 0x00, 0xd1, 0x04, 0x48, 0x29, 0x21, 0x01,
0xf0, 0x00, 0xfa, 0x62, 0x60, 0x20, 0x4f, 0x1e, 0x68, 0x3d, 0x2d, 0x00, 0xdb, 0x33, 0x4c, 0x1e,
0x1c, 0x31, 0x68, 0x20, 0x22, 0x06, 0x30, 0x20, 0xf0, 0x00, 0xfa, 0x7c, 0x68, 0x20, 0xa9, 0x03,
0x22, 0x04, 0x30, 0x3c, 0xf0, 0x00, 0xfa, 0x76, 0x68, 0x20, 0x26, 0x04, 0x1c, 0x03, 0x33, 0x20,
0x60, 0x03, 0x23, 0x06, 0x60, 0x43, 0x1c, 0x03, 0x33, 0x3c, 0x60, 0x83, 0x60, 0xc6, 0x21, 0x40,
0xf0, 0x00, 0xfa, 0x5c, 0x68, 0x23, 0x68, 0x38, 0x49, 0x17, 0x93, 0x00, 0x22, 0x02, 0x23, 0x00,
0xf0, 0x00, 0xfa, 0x44, 0x1c, 0x05, 0x68, 0x20, 0x21, 0x40, 0x1c, 0x03, 0x33, 0x20, 0x60, 0x03,
0x33, 0x1c, 0x60, 0x46, 0x60, 0x83, 0x60, 0xc6, 0xf0, 0x00, 0xfa, 0x48, 0xe0, 0x03, 0x25, 0x01,
0x42, 0x6d, 0xe0, 0x00, 0x25, 0x00, 0xb0, 0x05, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
0x13, 0x77, 0xe2, 0x84, 0x00, 0x66, 0x69, 0x99, 0x13, 0x77, 0xeb, 0xc4, 0x13, 0x77, 0xeb, 0xe0,
0x13, 0x77, 0xec, 0x28, 0x13, 0x77, 0xec, 0x24, 0x13, 0x77, 0xec, 0x20, 0x13, 0x77, 0xe2, 0xa0,
0x13, 0x77, 0xd9, 0x3c, 0x13, 0x77, 0xd9, 0x20, 0x57, 0x46, 0x53, 0x01, 0xb4, 0x7c, 0xb5, 0x00,
0xf7, 0xfe, 0xfe, 0xaa, 0xbc, 0x02, 0xbc, 0x7c, 0x47, 0x08, 0xb5, 0x70, 0xb0, 0x88, 0x68, 0x85,
0x1c, 0x01, 0x4b, 0x01, 0x47, 0x18, 0x00, 0x00, 0x20, 0x10, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x00,
0xe6, 0x00, 0x08, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x07, 0xf0, 0xe1, 0x2f, 0xff, 0x1e,
0xe6, 0x00, 0x03, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
0xe6, 0x00, 0x03, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xb0, 0xe1, 0x2f, 0xff, 0x1e,
0xe6, 0x00, 0x03, 0xd0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xf0, 0xe1, 0x2f, 0xff, 0x1e,
0xe6, 0x00, 0x04, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
0xef, 0x00, 0x00, 0xcc, 0xe1, 0x2f, 0xff, 0x1e, 0x46, 0x72, 0x1c, 0x01, 0x20, 0x04, 0xdf, 0xab,
0x47, 0x10, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0xc0,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0xac, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x1f,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x98,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x19, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x84, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x13,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x70,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x0d, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e,
0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x5c, 0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x07,
0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e, 0xe9, 0x2d, 0x40, 0x80, 0xe5, 0x9f, 0x70, 0x48,
0xe5, 0x97, 0x70, 0x00, 0xeb, 0x00, 0x00, 0x01, 0xe8, 0xbd, 0x40, 0x80, 0xe1, 0x2f, 0xff, 0x1e,
0xe1, 0x2f, 0xff, 0x17, 0xb5, 0xf0, 0x46, 0x5f, 0x46, 0x56, 0x46, 0x4d, 0x46, 0x44, 0xb4, 0xf0,
0x4b, 0x0b, 0x68, 0x1b, 0x47, 0x18, 0x00, 0x00, 0xe3, 0xc0, 0x01, 0x02, 0xe1, 0x2f, 0xff, 0x1e,
0xe3, 0x80, 0x01, 0x02, 0xe1, 0x2f, 0xff, 0x1e, 0x13, 0x77, 0xc0, 0x10, 0x13, 0x77, 0xc0, 0x14,
0x13, 0x77, 0xc0, 0x18, 0x13, 0x77, 0xc0, 0x1c, 0x13, 0x77, 0xc0, 0x20, 0x13, 0x77, 0xc0, 0x24,
0x13, 0x77, 0xc0, 0x0c, 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00,
0xe2, 0x51, 0x20, 0x01, 0x01, 0x2f, 0xff, 0x1e, 0x3a, 0x00, 0x00, 0x36, 0xe1, 0x50, 0x00, 0x01,
0x9a, 0x00, 0x00, 0x22, 0xe1, 0x11, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x23, 0xe3, 0x11, 0x02, 0x0e,
0x01, 0xa0, 0x11, 0x81, 0x03, 0xa0, 0x30, 0x08, 0x13, 0xa0, 0x30, 0x01, 0xe3, 0x51, 0x02, 0x01,
0x31, 0x51, 0x00, 0x00, 0x31, 0xa0, 0x12, 0x01, 0x31, 0xa0, 0x32, 0x03, 0x3a, 0xff, 0xff, 0xfa,
0xe3, 0x51, 0x01, 0x02, 0x31, 0x51, 0x00, 0x00, 0x31, 0xa0, 0x10, 0x81, 0x31, 0xa0, 0x30, 0x83,
0x3a, 0xff, 0xff, 0xfa, 0xe3, 0xa0, 0x20, 0x00, 0xe1, 0x50, 0x00, 0x01, 0x20, 0x40, 0x00, 0x01,
0x21, 0x82, 0x20, 0x03, 0xe1, 0x50, 0x00, 0xa1, 0x20, 0x40, 0x00, 0xa1, 0x21, 0x82, 0x20, 0xa3,
0xe1, 0x50, 0x01, 0x21, 0x20, 0x40, 0x01, 0x21, 0x21, 0x82, 0x21, 0x23, 0xe1, 0x50, 0x01, 0xa1,
0x20, 0x40, 0x01, 0xa1, 0x21, 0x82, 0x21, 0xa3, 0xe3, 0x50, 0x00, 0x00, 0x11, 0xb0, 0x32, 0x23,
0x11, 0xa0, 0x12, 0x21, 0x1a, 0xff, 0xff, 0xef, 0xe1, 0xa0, 0x00, 0x02, 0xe1, 0x2f, 0xff, 0x1e,
0x03, 0xa0, 0x00, 0x01, 0x13, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1e, 0xe3, 0x51, 0x08, 0x01,
0x21, 0xa0, 0x18, 0x21, 0x23, 0xa0, 0x20, 0x10, 0x33, 0xa0, 0x20, 0x00, 0xe3, 0x51, 0x0c, 0x01,
0x21, 0xa0, 0x14, 0x21, 0x22, 0x82, 0x20, 0x08, 0xe3, 0x51, 0x00, 0x10, 0x21, 0xa0, 0x12, 0x21,
0x22, 0x82, 0x20, 0x04, 0xe3, 0x51, 0x00, 0x04, 0x82, 0x82, 0x20, 0x03, 0x90, 0x82, 0x20, 0xa1,
0xe1, 0xa0, 0x02, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0x2f, 0xff, 0x1f, 0xe1, 0xa0, 0x00, 0x00,
0xe3, 0x50, 0x00, 0x00, 0x13, 0xe0, 0x00, 0x00, 0xea, 0x00, 0x00, 0x6c, 0xe3, 0x51, 0x00, 0x00,
0x0a, 0xff, 0xff, 0xf8, 0xe9, 0x2d, 0x40, 0x03, 0xeb, 0xff, 0xff, 0xbc, 0xe8, 0xbd, 0x40, 0x06,
0xe0, 0x03, 0x00, 0x92, 0xe0, 0x41, 0x10, 0x03, 0xe1, 0x2f, 0xff, 0x1e, 0x47, 0x70, 0x46, 0xc0,
0xb5, 0xf0, 0x1c, 0x05, 0x1c, 0x0e, 0x1c, 0x14, 0x2a, 0x0f, 0xd9, 0x03, 0x1c, 0x0b, 0x43, 0x03,
0x07, 0x9f, 0xd0, 0x0a, 0x2c, 0x00, 0xd0, 0x05, 0x23, 0x00, 0x5c, 0xf2, 0x54, 0xea, 0x33, 0x01,
0x42, 0xa3, 0xd1, 0xfa, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x1c, 0x15, 0x1c, 0x0c, 0x1c, 0x03,
0x68, 0x26, 0x60, 0x1e, 0x68, 0x66, 0x60, 0x5e, 0x68, 0xa6, 0x60, 0x9e, 0x68, 0xe6, 0x3d, 0x10,
0x60, 0xde, 0x34, 0x10, 0x33, 0x10, 0x2d, 0x0f, 0xd8, 0xf2, 0x3a, 0x10, 0x09, 0x17, 0x1c, 0x7e,
0x01, 0x3f, 0x01, 0x36, 0x1b, 0xd7, 0x19, 0x85, 0x1c, 0x3c, 0x19, 0x8e, 0x2f, 0x03, 0xd9, 0xd9,
0x1c, 0x34, 0x1c, 0x3b, 0x1c, 0x2a, 0xcc, 0x02, 0x3b, 0x04, 0xc2, 0x02, 0x2b, 0x03, 0xd8, 0xfa,
0x3f, 0x04, 0x08, 0xbc, 0x1c, 0x63, 0x00, 0x9b, 0x00, 0xa4, 0x18, 0xed, 0x18, 0xf6, 0x1b, 0x3c,
0xe7, 0xc8, 0x46, 0xc0, 0xb5, 0x70, 0x1c, 0x03, 0x07, 0x84, 0xd0, 0x0d, 0x2a, 0x00, 0xd0, 0x40,
0x06, 0x0d, 0x3a, 0x01, 0x0e, 0x2d, 0x24, 0x03, 0xe0, 0x02, 0x2a, 0x00, 0xd0, 0x39, 0x3a, 0x01,
0x70, 0x1d, 0x33, 0x01, 0x42, 0x23, 0xd1, 0xf8, 0x2a, 0x03, 0xd9, 0x29, 0x25, 0xff, 0x40, 0x0d,
0x02, 0x2c, 0x43, 0x25, 0x04, 0x2c, 0x1c, 0x1e, 0x43, 0x25, 0x2a, 0x0f, 0xd9, 0x12, 0x1c, 0x1c,
0x1c, 0x16, 0x3e, 0x10, 0x60, 0x25, 0x60, 0x65, 0x60, 0xa5, 0x60, 0xe5, 0x34, 0x10, 0x2e, 0x0f,
0xd8, 0xf7, 0x3a, 0x10, 0x09, 0x16, 0x36, 0x01, 0x01, 0x36, 0x19, 0x9e, 0x23, 0x0f, 0x40, 0x1a,
0x2a, 0x03, 0xd9, 0x0c, 0x1c, 0x34, 0x1c, 0x13, 0x3b, 0x04, 0xc4, 0x20, 0x2b, 0x03, 0xd8, 0xfb,
0x3a, 0x04, 0x08, 0x93, 0x33, 0x01, 0x00, 0x9b, 0x18, 0xf6, 0x23, 0x03, 0x40, 0x1a, 0x1c, 0x33,
0x2a, 0x00, 0xd0, 0x06, 0x06, 0x09, 0x0e, 0x0c, 0x21, 0x00, 0x54, 0x5c, 0x31, 0x01, 0x42, 0x8a,
0xd1, 0xfb, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x48, 0x45, 0x4c, 0x4f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2f, 0x64, 0x65, 0x76, 0x2f, 0x75, 0x73, 0x62, 0x31, 0x32, 0x33, 0x00, 0x2f, 0x64, 0x65, 0x76,
0x2f, 0x73, 0x64, 0x69, 0x6f, 0x2f, 0x73, 0x64, 0x68, 0x63, 0x00, 0x00, 0x13, 0x77, 0xd9, 0x20,
0x13, 0x77, 0xd9, 0x2c, 0x13, 0x77, 0xd9, 0x20, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xff, 0x07,
0xe5, 0x9f, 0xc0, 0x00, 0xe1, 0x2f, 0xff, 0x1c, 0x13, 0x77, 0xd7, 0xbd, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xff, 0x0c, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xff, 0x2c, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xff, 0x18, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xff, 0x10, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xfe, 0xf2, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xff, 0x36, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xfe, 0xf0, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xff, 0x14, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xfe, 0xee, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xfe, 0xf8, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xff, 0x3a, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xfe, 0xf0, 0x47, 0x78, 0x46, 0xc0,
0xea, 0xff, 0xfe, 0xe8, 0x47, 0x78, 0x46, 0xc0, 0xea, 0xff, 0xfe, 0xea, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2f, 0x64, 0x65, 0x76, 0x2f, 0x73, 0x64, 0x69, 0x6f, 0x2f, 0x73, 0x64, 0x68, 0x63, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2f, 0x64, 0x65, 0x76, 0x2f, 0x75, 0x73, 0x62, 0x31, 0x32, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
#define size_odip_frag 9120 #define size_odip_frag 9120
unsigned char odip_frag[9120] __attribute__((aligned (32)))={
19, 119, 202, 109, 18, 52, 0, 1, 32, 34, 221, 172, 32, 32, 16, 17, 32, 32, 11, 157, 32, 32, 11, 113, 32, 32, 93, 193,
32, 32, 0, 73, 32, 32, 43, 77, 32, 32, 57, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 119, 226, 160, 19,
119, 216, 224, 19, 119, 213, 45, 19, 119, 227, 160, 0, 0, 16, 160, 225, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 181, 0, 35, 227, 176, 137, 6, 27, 147, 0, 70, 104, 35, 0, 33, 0, 34, 0, 147, 1, 147, 2, 240, 1, 250,
237, 176, 9, 188, 2, 71, 8, 181, 16, 28, 3, 34, 32, 28, 12, 72, 13, 28, 25, 240, 1, 252, 130, 72, 11, 33, 32, 240, 1,
252, 114, 74, 10, 35, 1, 104, 17, 66, 11, 209, 252, 34, 32, 28, 32, 73, 6, 240, 1, 252, 116, 28, 32, 33, 32, 240, 1,
252, 100, 75, 4, 104, 24, 188, 16, 188, 2, 71, 8, 70, 192, 13, 0, 96, 0, 13, 0, 96, 28, 13, 0, 96, 32, 181, 240, 176,
141, 28, 14, 39, 208, 10, 201, 144, 1, 146, 3, 145, 2, 37, 0, 172, 4, 6, 63, 153, 3, 155, 2, 34, 0, 97, 33, 152, 1,
28, 49, 96, 227, 96, 98, 96, 162, 53, 1, 96, 39, 240, 1, 252, 72, 153, 1, 28, 50, 28, 32, 240, 1, 250, 167, 15, 235,
34, 0, 33, 31, 66, 169, 65, 83, 6, 27, 43, 0, 208, 1, 40, 0, 209, 227, 176, 13, 188, 240, 188, 2, 71, 8, 181, 240, 176,
139, 39, 168, 144, 0, 28, 14, 146, 1, 37, 0, 172, 2, 6, 63, 153, 1, 152, 0, 96, 161, 28, 49, 53, 1, 96, 39, 96, 102,
240, 1, 252, 35, 153, 0, 28, 50, 28, 32, 240, 1, 250, 130, 15, 235, 34, 0, 33, 7, 66, 169, 65, 83, 6, 27, 43, 0, 208,
1, 40, 0, 209, 231, 176, 11, 188, 240, 188, 2, 71, 8, 181, 240, 176, 135, 144, 5, 145, 3, 146, 4, 37, 0, 41, 0, 208,
117, 10, 81, 145, 1, 149, 0, 224, 105, 154, 3, 155, 0, 153, 1, 26, 212, 154, 4, 2, 75, 39, 0, 66, 154, 217, 1, 26, 215,
0, 191, 155, 5, 33, 31, 28, 30, 155, 0, 24, 246, 35, 0, 66, 14, 209, 25, 75, 50, 34, 0, 66, 158, 216, 2, 34, 192, 4,
82, 27, 146, 33, 240, 6, 9, 24, 115, 73, 46, 66, 139, 216, 1, 74, 45, 27, 146, 73, 45, 35, 0, 66, 138, 217, 3, 28, 19,
66, 162, 217, 0, 28, 35, 5, 90, 13, 82, 26, 155, 43, 0, 208, 1, 47, 0, 208, 34, 35, 128, 25, 58, 1, 27, 66, 154, 217,
0, 27, 220, 32, 128, 1, 0, 33, 32, 240, 1, 251, 188, 144, 2, 40, 0, 208, 48, 33, 128, 1, 9, 154, 1, 247, 255, 255, 96,
30, 5, 209, 9, 154, 2, 28, 48, 25, 209, 28, 34, 240, 1, 251, 188, 28, 48, 28, 33, 240, 1, 251, 172, 152, 2, 240, 1,
251, 161, 224, 11, 28, 28, 75, 21, 66, 156, 217, 1, 36, 255, 3, 228, 28, 48, 28, 33, 154, 1, 247, 255, 255, 69, 28,
5, 45, 0, 209, 15, 155, 0, 153, 1, 25, 27, 25, 228, 10, 228, 25, 9, 147, 0, 145, 1, 154, 0, 155, 3, 66, 154, 211, 145,
37, 0, 224, 1, 37, 1, 66, 109, 176, 7, 28, 40, 188, 240, 188, 2, 71, 8, 70, 192, 1, 127, 255, 255, 3, 97, 127, 255,
19, 97, 128, 0, 0, 0, 7, 255, 0, 127, 127, 255, 181, 248, 78, 38, 39, 1, 28, 4, 96, 55, 33, 32, 240, 1, 251, 122, 123,
34, 123, 99, 6, 18, 4, 27, 67, 19, 123, 162, 2, 18, 67, 19, 123, 226, 67, 19, 43, 8, 209, 48, 126, 34, 126, 99, 6, 18,
4, 27, 67, 19, 126, 162, 37, 197, 2, 18, 67, 19, 126, 226, 1, 173, 67, 19, 104, 24, 104, 89, 240, 1, 251, 94, 126, 34,
126, 99, 6, 18, 4, 27, 67, 19, 126, 162, 28, 40, 2, 18, 67, 19, 126, 226, 33, 8, 67, 19, 104, 27, 104, 92, 240, 1, 251,
78, 4, 36, 67, 39, 76, 12, 96, 47, 28, 40, 33, 4, 96, 39, 240, 1, 251, 61, 28, 32, 33, 4, 240, 1, 251, 57, 35, 0, 96,
51, 32, 0, 224, 4, 28, 32, 240, 1, 249, 17, 35, 0, 96, 51, 188, 248, 188, 2, 71, 8, 70, 192, 19, 119, 227, 160, 0, 0,
49, 136, 74, 3, 35, 0, 96, 19, 74, 3, 96, 19, 74, 3, 96, 19, 71, 112, 19, 119, 229, 232, 19, 119, 227, 192, 19, 119,
227, 184, 181, 240, 75, 16, 33, 160, 72, 16, 104, 28, 34, 0, 35, 0, 0, 137, 3, 214, 224, 1, 4, 43, 12, 27, 0, 93, 24,
237, 0, 173, 25, 101, 105, 111, 104, 237, 25, 125, 66, 174, 211, 3, 104, 103, 28, 93, 66, 189, 211, 240, 50, 1, 128,
3, 48, 2, 66, 138, 209, 233, 188, 240, 188, 1, 71, 0, 70, 192, 19, 119, 227, 192, 19, 119, 230, 4, 181, 248, 75, 34,
28, 6, 104, 27, 28, 15, 28, 20, 43, 0, 208, 1, 247, 255, 255, 194, 30, 115, 43, 1, 216, 48, 44, 0, 208, 46, 75, 28,
66, 156, 216, 45, 77, 27, 46, 1, 209, 2, 240, 0, 254, 41, 224, 1, 240, 0, 253, 114, 75, 23, 96, 40, 104, 24, 40, 0,
209, 34, 75, 22, 77, 22, 96, 30, 75, 22, 28, 56, 96, 43, 28, 33, 240, 1, 250, 212, 104, 45, 33, 0, 74, 14, 28, 40, 240,
1, 250, 42, 28, 34, 28, 57, 28, 40, 240, 1, 249, 227, 28, 56, 28, 33, 240, 1, 250, 189, 247, 255, 255, 161, 75, 6, 34,
1, 96, 26, 28, 32, 224, 3, 32, 1, 224, 0, 32, 2, 66, 64, 188, 248, 188, 2, 71, 8, 70, 192, 19, 119, 229, 232, 0, 3,
169, 140, 19, 119, 227, 180, 19, 119, 227, 184, 19, 119, 227, 192, 19, 115, 0, 0, 181, 240, 176, 131, 36, 160, 77, 54,
11, 207, 0, 164, 158, 9, 96, 47, 66, 167, 217, 1, 76, 51, 96, 44, 76, 49, 77, 51, 104, 36, 70, 156, 0, 100, 91, 44,
77, 49, 0, 103, 96, 44, 77, 49, 25, 63, 96, 44, 104, 69, 0, 191, 149, 0, 25, 199, 24, 85, 55, 12, 149, 1, 224, 55, 104,
61, 66, 141, 216, 25, 104, 187, 24, 235, 66, 139, 217, 46, 79, 40, 27, 77, 96, 60, 79, 39, 70, 99, 96, 61, 96, 25, 0,
99, 25, 28, 0, 164, 25, 0, 105, 3, 153, 8, 24, 235, 96, 11, 105, 67, 32, 0, 27, 93, 96, 53, 66, 149, 217, 46, 224, 22,
155, 1, 66, 157, 210, 21, 79, 27, 70, 99, 96, 60, 79, 27, 26, 105, 96, 57, 96, 29, 0, 99, 25, 28, 0, 164, 25, 0, 105,
3, 156, 8, 26, 82, 96, 35, 105, 67, 32, 0, 96, 51, 66, 147, 217, 22, 96, 50, 224, 20, 52, 1, 55, 12, 157, 0, 66, 172,
211, 196, 77, 14, 24, 81, 104, 2, 70, 99, 96, 44, 66, 145, 216, 6, 96, 25, 153, 8, 35, 0, 96, 11, 32, 0, 96, 51, 224,
1, 32, 2, 66, 64, 176, 3, 188, 240, 188, 2, 71, 8, 70, 192, 19, 119, 227, 164, 0, 0, 2, 127, 19, 119, 230, 4, 19, 119,
229, 252, 19, 119, 235, 4, 19, 119, 229, 236, 181, 240, 176, 133, 28, 6, 28, 13, 28, 23, 224, 70, 74, 41, 75, 42, 104,
16, 74, 42, 147, 0, 146, 1, 75, 41, 28, 49, 28, 58, 247, 255, 255, 115, 75, 40, 96, 24, 40, 0, 209, 63, 74, 37, 104,
19, 27, 155, 147, 3, 154, 3, 75, 36, 96, 26, 42, 0, 208, 9, 2, 84, 28, 40, 33, 0, 28, 34, 240, 1, 249, 102, 155, 3,
25, 45, 24, 246, 26, 255, 75, 26, 104, 25, 41, 0, 208, 25, 75, 28, 76, 26, 104, 26, 75, 22, 42, 1, 209, 4, 104, 24,
28, 42, 240, 0, 252, 244, 224, 3, 104, 24, 28, 42, 240, 0, 252, 169, 75, 19, 96, 32, 104, 27, 43, 0, 208, 16, 75, 14,
104, 27, 2, 90, 24, 246, 24, 173, 26, 255, 75, 11, 104, 26, 75, 13, 104, 27, 24, 211, 43, 0, 208, 5, 47, 0, 209, 182,
32, 0, 224, 3, 32, 3, 224, 0, 32, 4, 66, 64, 176, 5, 188, 240, 188, 2, 71, 8, 70, 192, 19, 119, 227, 192, 19, 119, 227,
200, 19, 119, 229, 240, 19, 119, 227, 172, 19, 119, 230, 0, 19, 119, 227, 188, 19, 119, 227, 184, 181, 248, 28, 30,
75, 26, 28, 15, 9, 193, 96, 25, 35, 127, 64, 24, 75, 24, 0, 128, 96, 24, 35, 128, 0, 155, 76, 23, 26, 27, 96, 35, 66,
147, 217, 0, 96, 34, 74, 20, 35, 128, 104, 16, 0, 155, 66, 152, 209, 1, 35, 0, 96, 19, 76, 16, 104, 35, 43, 0, 208,
16, 77, 15, 28, 8, 34, 1, 28, 41, 247, 255, 255, 115, 75, 13, 96, 24, 40, 0, 209, 10, 75, 8, 104, 34, 104, 25, 28, 56,
24, 105, 240, 1, 248, 176, 75, 5, 32, 0, 104, 27, 96, 51, 188, 248, 188, 2, 71, 8, 70, 192, 19, 119, 229, 244, 19, 119,
229, 248, 19, 119, 227, 168, 19, 119, 227, 224, 19, 119, 229, 224, 181, 240, 176, 133, 77, 37, 144, 1, 145, 3, 28, 16,
28, 23, 153, 1, 154, 3, 28, 43, 247, 255, 255, 178, 78, 33, 28, 4, 96, 48, 40, 0, 209, 55, 104, 45, 153, 1, 8, 171,
24, 251, 154, 3, 147, 2, 75, 29, 25, 73, 27, 85, 145, 1, 66, 157, 217, 21, 155, 2, 79, 26, 9, 216, 75, 26, 10, 106,
96, 24, 96, 58, 247, 255, 255, 48, 96, 48, 40, 0, 209, 27, 104, 59, 153, 2, 1, 218, 24, 137, 154, 1, 2, 91, 24, 210,
145, 2, 146, 1, 26, 237, 45, 0, 208, 19, 78, 12, 152, 2, 28, 51, 153, 1, 28, 42, 247, 255, 255, 130, 75, 9, 28, 4, 96,
24, 40, 0, 209, 7, 104, 51, 66, 157, 209, 2, 224, 3, 28, 4, 224, 1, 36, 5, 66, 100, 176, 5, 28, 32, 188, 240, 188, 2,
71, 8, 19, 119, 227, 176, 19, 119, 227, 196, 0, 0, 1, 255, 19, 119, 229, 228, 19, 119, 235, 8, 181, 0, 75, 11, 104,
27, 43, 1, 208, 2, 43, 2, 209, 12, 224, 1, 74, 8, 224, 0, 74, 8, 35, 0, 66, 144, 211, 6, 75, 7, 74, 8, 98, 26, 35, 160,
2, 27, 224, 0, 35, 0, 28, 24, 188, 2, 71, 8, 19, 119, 235, 16, 70, 9, 0, 0, 126, 211, 128, 0, 19, 119, 235, 20, 0, 5,
33, 0, 181, 16, 75, 12, 29, 220, 127, 228, 44, 0, 208, 2, 247, 255, 255, 126, 224, 13, 105, 28, 44, 0, 208, 2, 240,
0, 252, 184, 224, 7, 104, 91, 43, 0, 208, 2, 247, 255, 252, 230, 224, 1, 247, 255, 252, 190, 188, 16, 188, 2, 71, 8,
19, 119, 235, 20, 181, 240, 176, 133, 144, 2, 28, 16, 145, 3, 28, 20, 247, 255, 255, 186, 40, 0, 208, 0, 224, 254, 75,
129, 104, 221, 104, 154, 24, 173, 25, 45, 149, 1, 105, 27, 43, 0, 208, 18, 75, 125, 104, 27, 43, 0, 221, 0, 224, 235,
75, 124, 104, 25, 41, 0, 208, 1, 240, 1, 248, 231, 75, 121, 34, 0, 96, 26, 35, 1, 74, 120, 66, 91, 96, 19, 224, 221,
75, 118, 73, 118, 104, 27, 24, 90, 42, 0, 209, 0, 224, 168, 43, 0, 218, 0, 224, 165, 76, 112, 104, 35, 43, 0, 209, 6,
33, 128, 32, 0, 1, 137, 34, 32, 240, 1, 248, 187, 96, 32, 32, 128, 1, 0, 33, 32, 240, 1, 248, 161, 30, 4, 209, 3, 35,
1, 74, 103, 66, 91, 96, 19, 78, 102, 34, 0, 104, 51, 146, 0, 43, 0, 219, 38, 28, 53, 39, 0, 104, 50, 33, 128, 28, 19,
51, 16, 2, 91, 2, 82, 28, 32, 1, 9, 147, 0, 247, 255, 255, 138, 40, 0, 218, 3, 35, 1, 66, 91, 96, 51, 224, 19, 120,
35, 43, 67, 209, 8, 120, 99, 43, 73, 209, 5, 120, 163, 43, 83, 209, 2, 120, 227, 43, 79, 208, 7, 104, 43, 43, 0, 208,
1, 96, 47, 231, 221, 35, 1, 66, 91, 96, 43, 78, 79, 104, 51, 43, 0, 219, 89, 75, 76, 104, 27, 43, 0, 208, 85, 121, 98,
121, 163, 2, 18, 4, 27, 24, 210, 121, 35, 72, 74, 24, 210, 121, 227, 33, 0, 6, 27, 24, 210, 75, 72, 8, 146, 96, 26,
34, 128, 1, 18, 240, 0, 251, 203, 39, 8, 37, 0, 5, 123, 43, 0, 209, 22, 73, 67, 35, 1, 66, 141, 220, 0, 35, 0, 6, 27,
43, 0, 208, 14, 104, 51, 18, 250, 24, 210, 33, 128, 2, 82, 28, 32, 1, 9, 247, 255, 255, 63, 40, 0, 218, 3, 35, 1, 66,
91, 96, 51, 224, 32, 32, 7, 64, 40, 209, 5, 75, 49, 16, 234, 104, 27, 153, 0, 0, 146, 80, 209, 5, 123, 13, 91, 92, 227,
43, 0, 208, 12, 74, 47, 33, 1, 16, 235, 64, 129, 28, 8, 92, 209, 67, 1, 84, 209, 75, 44, 154, 0, 104, 27, 24, 210, 146,
0, 35, 128, 53, 1, 1, 219, 55, 1, 66, 157, 209, 196, 75, 35, 104, 26, 42, 0, 219, 1, 74, 38, 96, 26, 44, 0, 208, 2,
28, 32, 240, 1, 248, 7, 75, 30, 76, 28, 104, 26, 75, 33, 66, 154, 209, 30, 75, 30, 152, 1, 104, 29, 28, 41, 240, 1,
248, 27, 104, 35, 8, 193, 36, 7, 0, 138, 88, 210, 64, 32, 35, 0, 78, 22, 36, 1, 224, 5, 92, 119, 65, 31, 66, 60, 208,
0, 25, 82, 51, 1, 66, 131, 211, 247, 155, 1, 61, 1, 64, 29, 25, 82, 152, 2, 153, 3, 224, 11, 104, 33, 41, 0, 208, 2,
32, 0, 240, 1, 248, 4, 75, 7, 34, 0, 96, 26, 152, 2, 153, 3, 154, 1, 247, 255, 254, 218, 176, 5, 188, 240, 188, 2, 71,
8, 19, 119, 235, 20, 19, 119, 236, 36, 19, 119, 235, 12, 19, 119, 226, 4, 128, 0, 0, 1, 19, 119, 236, 64, 19, 119, 235,
60, 0, 0, 7, 247, 127, 255, 255, 255, 181, 16, 33, 128, 32, 0, 1, 9, 34, 32, 240, 0, 255, 207, 30, 4, 208, 16, 33, 128,
34, 142, 1, 9, 28, 32, 5, 210, 247, 255, 254, 208, 30, 67, 65, 152, 35, 2, 26, 24, 75, 4, 28, 33, 96, 24, 32, 0, 240,
0, 255, 204, 188, 16, 188, 1, 71, 0, 70, 192, 19, 119, 235, 16, 181, 56, 34, 0, 33, 32, 28, 4, 247, 255, 254, 186, 105,
162, 75, 9, 28, 5, 66, 154, 209, 9, 75, 8, 33, 1, 104, 26, 112, 17, 104, 27, 120, 91, 43, 0, 209, 1, 240, 0, 255, 133,
28, 40, 188, 56, 188, 2, 71, 8, 70, 192, 93, 28, 158, 163, 19, 119, 192, 8, 181, 240, 176, 131, 146, 1, 120, 2, 28,
7, 146, 0, 74, 186, 28, 13, 104, 19, 43, 0, 208, 13, 76, 185, 78, 185, 104, 32, 104, 50, 33, 0, 240, 0, 250, 234, 104,
32, 104, 49, 240, 0, 255, 114, 74, 178, 35, 0, 96, 19, 155, 0, 43, 224, 208, 97, 76, 178, 38, 0, 98, 38, 43, 218, 209,
0, 225, 81, 43, 218, 216, 47, 43, 138, 209, 0, 225, 182, 43, 138, 216, 18, 43, 21, 209, 0, 225, 28, 43, 21, 216, 3,
43, 19, 210, 0, 225, 216, 224, 240, 154, 0, 42, 113, 209, 0, 225, 105, 42, 121, 208, 96, 42, 112, 208, 0, 225, 206,
225, 122, 155, 0, 43, 168, 209, 0, 225, 190, 43, 168, 216, 6, 43, 141, 209, 0, 225, 185, 43, 164, 208, 0, 225, 193,
225, 28, 154, 0, 42, 208, 209, 0, 225, 177, 42, 217, 209, 0, 225, 4, 42, 171, 208, 0, 225, 182, 224, 57, 155, 0, 43,
244, 208, 94, 43, 244, 216, 15, 43, 240, 208, 80, 43, 240, 216, 5, 43, 224, 208, 30, 43, 228, 208, 0, 225, 167, 224,
58, 154, 0, 42, 242, 208, 74, 42, 242, 216, 75, 224, 69, 155, 0, 43, 249, 208, 97, 43, 249, 216, 5, 43, 245, 208, 86,
43, 246, 208, 0, 225, 150, 224, 170, 154, 0, 42, 251, 209, 0, 224, 155, 42, 251, 211, 125, 42, 255, 208, 0, 225, 140,
224, 207, 75, 129, 106, 26, 42, 0, 209, 3, 105, 27, 43, 0, 209, 0, 225, 131, 28, 40, 33, 0, 154, 1, 240, 0, 250, 113,
75, 123, 106, 27, 224, 57, 75, 121, 38, 0, 104, 90, 42, 0, 208, 0, 225, 125, 105, 27, 43, 0, 208, 0, 225, 121, 225,
112, 105, 35, 43, 0, 209, 0, 225, 108, 225, 114, 104, 99, 43, 0, 209, 4, 75, 112, 105, 27, 43, 0, 209, 0, 225, 99, 28,
40, 33, 0, 154, 1, 240, 0, 250, 81, 224, 28, 104, 123, 96, 163, 225, 97, 104, 163, 224, 22, 104, 123, 96, 35, 225, 92,
104, 35, 224, 17, 104, 123, 29, 226, 97, 35, 119, 214, 43, 0, 208, 6, 28, 32, 28, 57, 48, 24, 49, 8, 34, 6, 240, 0,
254, 209, 105, 122, 75, 94, 97, 90, 225, 73, 105, 35, 96, 43, 153, 1, 28, 40, 240, 0, 254, 187, 225, 66, 104, 123, 147,
0, 104, 186, 146, 1, 104, 255, 247, 255, 251, 139, 29, 227, 119, 222, 155, 1, 97, 38, 96, 46, 43, 0, 209, 0, 225, 51,
154, 0, 42, 0, 209, 0, 225, 47, 38, 0, 47, 0, 209, 0, 225, 44, 28, 24, 240, 0, 254, 164, 28, 58, 28, 1, 152, 0, 247,
255, 251, 167, 96, 40, 40, 0, 220, 0, 225, 32, 75, 72, 33, 1, 29, 218, 119, 209, 154, 0, 97, 26, 225, 25, 96, 46, 52,
7, 127, 227, 43, 0, 208, 1, 35, 16, 224, 10, 75, 66, 104, 27, 43, 0, 208, 1, 35, 8, 224, 4, 75, 62, 105, 26, 42, 0,
208, 2, 35, 4, 96, 43, 225, 4, 104, 91, 38, 0, 43, 0, 209, 0, 225, 0, 35, 1, 96, 43, 224, 253, 28, 40, 73, 56, 34, 4,
240, 0, 254, 123, 105, 35, 52, 7, 96, 107, 127, 227, 96, 171, 224, 241, 121, 59, 52, 5, 119, 227, 224, 237, 38, 0, 45,
0, 209, 0, 224, 234, 155, 0, 43, 19, 209, 13, 105, 35, 43, 0, 208, 17, 75, 45, 104, 27, 43, 0, 208, 9, 240, 0, 249,
249, 30, 67, 65, 152, 0, 64, 96, 40, 231, 144, 105, 35, 43, 0, 208, 3, 75, 39, 104, 27, 43, 0, 218, 7, 75, 38, 34, 1,
104, 27, 64, 19, 66, 90, 65, 83, 0, 91, 231, 128, 35, 2, 231, 126, 75, 33, 34, 1, 104, 27, 67, 147, 231, 121, 104, 120,
28, 41, 0, 64, 8, 64, 247, 255, 249, 182, 224, 185, 104, 99, 43, 0, 209, 4, 75, 20, 105, 27, 43, 0, 209, 0, 224, 172,
104, 122, 104, 187, 7, 146, 67, 26, 11, 210, 75, 15, 3, 210, 96, 218, 224, 170, 104, 99, 43, 0, 209, 4, 75, 12, 105,
27, 43, 0, 209, 0, 224, 155, 74, 15, 75, 9, 38, 160, 98, 26, 2, 54, 224, 157, 76, 13, 33, 64, 28, 32, 240, 0, 254, 23,
28, 35, 51, 64, 224, 24, 19, 119, 226, 0, 19, 119, 192, 68, 19, 119, 192, 72, 19, 119, 235, 20, 19, 119, 236, 36, 19,
119, 216, 216, 19, 119, 236, 40, 19, 119, 226, 132, 13, 0, 96, 4, 0, 5, 49, 0, 19, 119, 216, 224, 52, 1, 66, 156, 208,
116, 120, 34, 42, 0, 208, 249, 73, 63, 28, 40, 34, 64, 240, 0, 253, 247, 28, 40, 33, 64, 231, 42, 29, 163, 34, 1, 119,
218, 104, 35, 43, 0, 209, 5, 28, 56, 28, 41, 154, 1, 240, 0, 252, 73, 224, 4, 104, 121, 104, 186, 28, 40, 247, 255,
252, 241, 75, 52, 34, 0, 51, 6, 28, 6, 119, 218, 224, 90, 75, 49, 105, 27, 43, 0, 209, 6, 28, 56, 28, 41, 154, 1, 240,
0, 252, 52, 40, 0, 209, 12, 75, 43, 32, 0, 104, 217, 104, 154, 67, 17, 209, 6, 105, 26, 42, 0, 209, 3, 105, 172, 73,
39, 66, 140, 208, 10, 30, 67, 65, 152, 75, 36, 153, 1, 96, 88, 28, 40, 247, 255, 254, 11, 30, 6, 209, 56, 224, 0, 96,
90, 247, 255, 253, 229, 224, 50, 29, 99, 127, 219, 38, 0, 43, 0, 209, 46, 29, 162, 119, 211, 96, 35, 96, 99, 96, 163,
96, 227, 105, 35, 43, 0, 209, 4, 105, 98, 75, 24, 58, 1, 96, 26, 224, 24, 247, 255, 249, 7, 29, 227, 127, 219, 43, 0,
209, 26, 105, 32, 28, 33, 49, 24, 105, 98, 56, 1, 240, 0, 250, 156, 224, 15, 155, 0, 104, 121, 104, 186, 43, 208, 209,
1, 2, 201, 2, 82, 28, 40, 247, 255, 252, 153, 224, 4, 28, 56, 28, 41, 154, 1, 240, 0, 251, 229, 28, 6, 224, 0, 38, 0,
176, 3, 28, 48, 188, 240, 188, 2, 71, 8, 70, 192, 19, 119, 216, 224, 19, 119, 235, 20, 93, 28, 158, 163, 19, 119, 226,
4, 181, 48, 176, 131, 76, 14, 37, 0, 104, 35, 43, 0, 218, 19, 72, 13, 33, 1, 240, 0, 253, 67, 96, 32, 40, 0, 219, 10,
34, 0, 35, 0, 33, 1, 149, 0, 240, 0, 253, 68, 35, 128, 74, 7, 0, 155, 96, 19, 224, 1, 37, 11, 66, 109, 176, 3, 28, 40,
188, 48, 188, 2, 71, 8, 19, 119, 226, 68, 19, 119, 226, 32, 19, 119, 226, 64, 181, 112, 176, 130, 28, 3, 72, 29, 104,
4, 32, 0, 44, 0, 219, 49, 72, 27, 76, 28, 96, 3, 35, 4, 96, 99, 96, 227, 75, 26, 96, 65, 104, 27, 96, 32, 67, 89, 48,
4, 28, 38, 96, 160, 97, 34, 97, 97, 54, 24, 28, 37, 104, 40, 104, 105, 53, 8, 240, 0, 253, 35, 66, 181, 209, 248, 77,
16, 33, 24, 28, 40, 240, 0, 253, 28, 75, 11, 33, 2, 104, 24, 34, 2, 35, 1, 149, 0, 240, 0, 253, 4, 28, 3, 32, 0, 43,
0, 219, 7, 104, 32, 104, 97, 52, 8, 240, 0, 253, 19, 66, 180, 209, 248, 32, 1, 176, 2, 188, 112, 188, 2, 71, 8, 19,
119, 226, 68, 19, 119, 235, 96, 19, 119, 235, 64, 19, 119, 226, 64, 181, 112, 176, 130, 28, 3, 72, 29, 104, 4, 32, 0,
44, 0, 219, 49, 72, 27, 76, 28, 96, 3, 35, 4, 96, 99, 96, 227, 75, 26, 96, 65, 104, 27, 96, 32, 67, 89, 48, 4, 28, 38,
96, 160, 97, 34, 97, 97, 54, 24, 28, 37, 104, 40, 104, 105, 53, 8, 240, 0, 252, 221, 66, 181, 209, 248, 77, 16, 33,
24, 28, 40, 240, 0, 252, 214, 75, 11, 73, 15, 104, 24, 34, 2, 35, 1, 149, 0, 240, 0, 252, 190, 28, 3, 32, 0, 43, 0,
219, 7, 104, 32, 104, 97, 52, 8, 240, 0, 252, 205, 66, 180, 209, 248, 32, 1, 176, 2, 188, 112, 188, 2, 71, 8, 19, 119,
226, 128, 19, 119, 235, 160, 19, 119, 235, 128, 19, 119, 235, 192, 85, 77, 83, 3, 181, 48, 176, 131, 76, 14, 37, 0,
104, 35, 43, 0, 218, 19, 72, 13, 33, 1, 240, 0, 252, 143, 96, 32, 40, 0, 219, 10, 34, 0, 35, 0, 73, 9, 149, 0, 240,
0, 252, 144, 35, 128, 74, 8, 0, 155, 96, 19, 224, 1, 37, 11, 66, 109, 176, 3, 28, 40, 188, 48, 188, 2, 71, 8, 19, 119,
226, 128, 19, 119, 226, 96, 85, 77, 83, 1, 19, 119, 235, 192, 181, 240, 42, 0, 208, 41, 35, 3, 28, 28, 64, 4, 39, 4,
27, 60, 6, 14, 64, 28, 14, 54, 28, 5, 66, 148, 216, 3, 35, 0, 44, 0, 208, 8, 224, 0, 28, 20, 28, 35, 224, 1, 112, 46,
53, 1, 59, 1, 210, 251, 28, 35, 4, 12, 6, 13, 67, 37, 67, 13, 2, 12, 28, 41, 67, 33, 24, 196, 224, 1, 196, 2, 28, 43,
29, 29, 66, 149, 217, 250, 224, 1, 51, 1, 84, 198, 66, 147, 211, 251, 188, 240, 188, 1, 71, 0, 181, 0, 176, 131, 75,
10, 32, 1, 104, 27, 43, 0, 208, 12, 75, 9, 104, 27, 43, 0, 219, 8, 74, 8, 28, 24, 104, 18, 73, 7, 146, 0, 35, 0, 34,
0, 240, 0, 252, 56, 176, 3, 188, 2, 71, 8, 70, 192, 19, 119, 236, 40, 19, 119, 226, 132, 19, 119, 235, 196, 87, 70,
83, 4, 181, 240, 176, 135, 75, 154, 144, 3, 104, 27, 145, 2, 146, 4, 43, 0, 208, 4, 33, 255, 154, 2, 247, 255, 255,
163, 224, 238, 77, 149, 104, 43, 43, 0, 218, 0, 225, 28, 75, 148, 104, 27, 43, 0, 209, 0, 224, 240, 59, 1, 43, 1, 217,
0, 224, 173, 76, 144, 104, 35, 43, 0, 209, 6, 33, 128, 32, 0, 1, 137, 34, 32, 240, 0, 252, 38, 96, 32, 32, 128, 1, 0,
33, 32, 240, 0, 252, 12, 30, 4, 209, 3, 35, 1, 74, 134, 66, 91, 96, 19, 75, 132, 37, 0, 104, 27, 43, 0, 219, 33, 77,
129, 33, 0, 104, 40, 34, 0, 240, 0, 252, 19, 40, 0, 219, 19, 34, 128, 104, 40, 28, 33, 1, 18, 240, 0, 252, 19, 40, 0,
219, 11, 120, 35, 43, 67, 209, 8, 120, 99, 43, 73, 209, 5, 120, 163, 43, 83, 209, 2, 120, 227, 43, 79, 208, 3, 35, 1,
74, 115, 66, 91, 96, 19, 37, 128, 1, 173, 74, 113, 104, 19, 43, 0, 219, 103, 75, 112, 104, 27, 43, 0, 208, 99, 121,
98, 121, 163, 2, 18, 4, 27, 24, 210, 121, 35, 72, 108, 24, 210, 121, 227, 33, 0, 6, 27, 24, 210, 75, 106, 8, 146, 96,
26, 34, 128, 1, 18, 247, 255, 255, 60, 39, 8, 38, 0, 5, 123, 43, 0, 209, 38, 74, 101, 35, 1, 66, 150, 220, 0, 35, 0,
6, 27, 43, 0, 208, 30, 75, 93, 104, 26, 75, 91, 42, 2, 209, 3, 18, 249, 104, 24, 2, 73, 224, 2, 10, 249, 104, 24, 2,
201, 34, 0, 240, 0, 251, 192, 40, 0, 219, 8, 75, 83, 34, 128, 104, 24, 28, 33, 1, 18, 240, 0, 251, 191, 40, 0, 218,
4, 35, 1, 74, 79, 66, 91, 96, 19, 224, 29, 32, 7, 64, 48, 209, 4, 75, 77, 16, 242, 104, 27, 0, 146, 80, 213, 5, 123,
13, 91, 92, 227, 43, 0, 208, 10, 74, 73, 33, 1, 16, 243, 64, 129, 28, 8, 92, 209, 67, 1, 84, 209, 75, 70, 104, 27, 24,
237, 35, 128, 54, 1, 1, 219, 55, 1, 66, 158, 209, 183, 75, 62, 104, 26, 42, 0, 219, 2, 33, 4, 67, 10, 96, 26, 44, 0,
208, 2, 28, 32, 240, 0, 251, 106, 75, 56, 76, 57, 104, 27, 147, 5, 43, 3, 221, 46, 75, 56, 152, 4, 104, 29, 28, 41,
240, 0, 251, 126, 104, 35, 8, 194, 36, 7, 0, 145, 88, 201, 64, 32, 35, 0, 78, 49, 36, 1, 224, 5, 92, 183, 65, 31, 66,
60, 208, 0, 25, 73, 51, 1, 66, 131, 211, 247, 154, 4, 61, 1, 64, 21, 154, 5, 25, 73, 75, 38, 7, 146, 213, 1, 104, 24,
224, 1, 104, 24, 0, 137, 34, 0, 240, 0, 251, 89, 75, 33, 153, 3, 104, 24, 154, 2, 240, 0, 251, 91, 36, 0, 224, 50, 104,
33, 41, 0, 208, 2, 32, 0, 240, 0, 251, 87, 75, 28, 34, 0, 96, 26, 224, 38, 76, 30, 155, 4, 104, 32, 154, 2, 98, 3, 155,
3, 99, 194, 97, 3, 97, 130, 33, 64, 240, 0, 251, 39, 152, 3, 153, 2, 240, 0, 251, 35, 75, 23, 104, 27, 43, 0, 208, 4,
104, 35, 104, 40, 73, 21, 147, 0, 224, 3, 104, 35, 73, 20, 104, 40, 147, 0, 34, 2, 35, 1, 240, 0, 251, 2, 153, 2, 28,
4, 152, 3, 240, 0, 251, 21, 224, 1, 36, 1, 66, 100, 176, 7, 28, 32, 188, 240, 188, 2, 71, 8, 70, 192, 19, 119, 236,
32, 19, 119, 226, 132, 19, 119, 236, 36, 19, 119, 235, 12, 19, 119, 236, 64, 19, 119, 235, 60, 0, 0, 7, 247, 19, 119,
235, 196, 19, 119, 236, 40, 87, 70, 83, 3, 87, 70, 83, 2, 181, 240, 176, 133, 28, 5, 28, 14, 146, 3, 40, 1, 217, 0,
224, 158, 74, 83, 75, 84, 104, 17, 66, 153, 209, 2, 35, 1, 66, 91, 96, 19, 75, 81, 104, 26, 42, 0, 209, 2, 74, 80, 96,
26, 224, 5, 75, 76, 104, 24, 40, 0, 219, 1, 240, 0, 250, 245, 72, 73, 35, 1, 66, 91, 96, 3, 74, 75, 75, 75, 33, 0, 96,
17, 96, 25, 120, 49, 41, 95, 209, 56, 120, 113, 41, 78, 209, 12, 120, 178, 42, 85, 209, 50, 120, 242, 42, 76, 209, 47,
34, 1, 96, 26, 75, 67, 96, 26, 75, 61, 96, 3, 224, 112, 41, 68, 209, 38, 120, 177, 41, 69, 209, 28, 120, 242, 42, 86,
209, 32, 34, 1, 96, 26, 121, 50, 42, 87, 209, 1, 34, 2, 96, 26, 76, 58, 33, 128, 28, 32, 0, 73, 240, 0, 250, 168, 28,
32, 33, 0, 240, 0, 250, 130, 75, 46, 28, 5, 96, 24, 40, 0, 218, 82, 75, 49, 34, 0, 96, 26, 224, 79, 41, 86, 209, 4,
120, 243, 43, 68, 209, 1, 35, 1, 96, 19, 75, 46, 0, 170, 88, 208, 33, 1, 240, 0, 250, 108, 76, 35, 96, 32, 40, 0, 218,
6, 45, 0, 209, 4, 72, 41, 33, 1, 240, 0, 250, 98, 96, 32, 79, 30, 104, 61, 45, 0, 219, 51, 76, 30, 28, 49, 104, 32,
34, 6, 48, 32, 240, 0, 250, 124, 104, 32, 169, 3, 34, 4, 48, 60, 240, 0, 250, 118, 104, 32, 38, 4, 28, 3, 51, 32, 96,
3, 35, 6, 96, 67, 28, 3, 51, 60, 96, 131, 96, 198, 33, 64, 240, 0, 250, 92, 104, 35, 104, 56, 73, 23, 147, 0, 34, 2,
35, 0, 240, 0, 250, 68, 28, 5, 104, 32, 33, 64, 28, 3, 51, 32, 96, 3, 51, 28, 96, 70, 96, 131, 96, 198, 240, 0, 250,
72, 224, 3, 37, 1, 66, 109, 224, 0, 37, 0, 176, 5, 28, 40, 188, 240, 188, 2, 71, 8, 19, 119, 226, 132, 0, 102, 105,
153, 19, 119, 235, 196, 19, 119, 235, 224, 19, 119, 236, 40, 19, 119, 236, 36, 19, 119, 236, 32, 19, 119, 226, 160,
19, 119, 217, 60, 19, 119, 217, 32, 87, 70, 83, 1, 180, 124, 181, 0, 247, 254, 254, 170, 188, 2, 188, 124, 71, 8, 181,
112, 176, 136, 104, 133, 28, 1, 75, 1, 71, 24, 0, 0, 32, 16, 0, 213, 0, 0, 0, 0, 230, 0, 8, 16, 225, 47, 255, 30, 230,
0, 7, 240, 225, 47, 255, 30, 230, 0, 3, 48, 225, 47, 255, 30, 230, 0, 3, 80, 225, 47, 255, 30, 230, 0, 3, 144, 225,
47, 255, 30, 230, 0, 3, 176, 225, 47, 255, 30, 230, 0, 3, 208, 225, 47, 255, 30, 230, 0, 3, 240, 225, 47, 255, 30, 230,
0, 4, 16, 225, 47, 255, 30, 230, 0, 4, 80, 225, 47, 255, 30, 239, 0, 0, 204, 225, 47, 255, 30, 70, 114, 28, 1, 32, 4,
223, 171, 71, 16, 70, 192, 70, 192, 70, 192, 70, 192, 70, 192, 70, 192, 70, 192, 233, 45, 64, 128, 229, 159, 112, 172,
229, 151, 112, 0, 235, 0, 0, 31, 232, 189, 64, 128, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 152, 229, 151,
112, 0, 235, 0, 0, 25, 232, 189, 64, 128, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 132, 229, 151, 112, 0,
235, 0, 0, 19, 232, 189, 64, 128, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 112, 229, 151, 112, 0, 235, 0,
0, 13, 232, 189, 64, 128, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 92, 229, 151, 112, 0, 235, 0, 0, 7, 232,
189, 64, 128, 225, 47, 255, 30, 233, 45, 64, 128, 229, 159, 112, 72, 229, 151, 112, 0, 235, 0, 0, 1, 232, 189, 64, 128,
225, 47, 255, 30, 225, 47, 255, 23, 181, 240, 70, 95, 70, 86, 70, 77, 70, 68, 180, 240, 75, 11, 104, 27, 71, 24, 0,
0, 227, 192, 1, 2, 225, 47, 255, 30, 227, 128, 1, 2, 225, 47, 255, 30, 19, 119, 192, 16, 19, 119, 192, 20, 19, 119,
192, 24, 19, 119, 192, 28, 19, 119, 192, 32, 19, 119, 192, 36, 19, 119, 192, 12, 225, 160, 0, 0, 225, 160, 0, 0, 225,
160, 0, 0, 226, 81, 32, 1, 1, 47, 255, 30, 58, 0, 0, 54, 225, 80, 0, 1, 154, 0, 0, 34, 225, 17, 0, 2, 10, 0, 0, 35,
227, 17, 2, 14, 1, 160, 17, 129, 3, 160, 48, 8, 19, 160, 48, 1, 227, 81, 2, 1, 49, 81, 0, 0, 49, 160, 18, 1, 49, 160,
50, 3, 58, 255, 255, 250, 227, 81, 1, 2, 49, 81, 0, 0, 49, 160, 16, 129, 49, 160, 48, 131, 58, 255, 255, 250, 227, 160,
32, 0, 225, 80, 0, 1, 32, 64, 0, 1, 33, 130, 32, 3, 225, 80, 0, 161, 32, 64, 0, 161, 33, 130, 32, 163, 225, 80, 1, 33,
32, 64, 1, 33, 33, 130, 33, 35, 225, 80, 1, 161, 32, 64, 1, 161, 33, 130, 33, 163, 227, 80, 0, 0, 17, 176, 50, 35, 17,
160, 18, 33, 26, 255, 255, 239, 225, 160, 0, 2, 225, 47, 255, 30, 3, 160, 0, 1, 19, 160, 0, 0, 225, 47, 255, 30, 227,
81, 8, 1, 33, 160, 24, 33, 35, 160, 32, 16, 51, 160, 32, 0, 227, 81, 12, 1, 33, 160, 20, 33, 34, 130, 32, 8, 227, 81,
0, 16, 33, 160, 18, 33, 34, 130, 32, 4, 227, 81, 0, 4, 130, 130, 32, 3, 144, 130, 32, 161, 225, 160, 2, 48, 225, 47,
255, 30, 225, 47, 255, 31, 225, 160, 0, 0, 227, 80, 0, 0, 19, 224, 0, 0, 234, 0, 0, 108, 227, 81, 0, 0, 10, 255, 255,
248, 233, 45, 64, 3, 235, 255, 255, 188, 232, 189, 64, 6, 224, 3, 0, 146, 224, 65, 16, 3, 225, 47, 255, 30, 71, 112,
70, 192, 181, 240, 28, 5, 28, 14, 28, 20, 42, 15, 217, 3, 28, 11, 67, 3, 7, 159, 208, 10, 44, 0, 208, 5, 35, 0, 92,
242, 84, 234, 51, 1, 66, 163, 209, 250, 188, 240, 188, 2, 71, 8, 28, 21, 28, 12, 28, 3, 104, 38, 96, 30, 104, 102, 96,
94, 104, 166, 96, 158, 104, 230, 61, 16, 96, 222, 52, 16, 51, 16, 45, 15, 216, 242, 58, 16, 9, 23, 28, 126, 1, 63, 1,
54, 27, 215, 25, 133, 28, 60, 25, 142, 47, 3, 217, 217, 28, 52, 28, 59, 28, 42, 204, 2, 59, 4, 194, 2, 43, 3, 216, 250,
63, 4, 8, 188, 28, 99, 0, 155, 0, 164, 24, 237, 24, 246, 27, 60, 231, 200, 70, 192, 181, 112, 28, 3, 7, 132, 208, 13,
42, 0, 208, 64, 6, 13, 58, 1, 14, 45, 36, 3, 224, 2, 42, 0, 208, 57, 58, 1, 112, 29, 51, 1, 66, 35, 209, 248, 42, 3,
217, 41, 37, 255, 64, 13, 2, 44, 67, 37, 4, 44, 28, 30, 67, 37, 42, 15, 217, 18, 28, 28, 28, 22, 62, 16, 96, 37, 96,
101, 96, 165, 96, 229, 52, 16, 46, 15, 216, 247, 58, 16, 9, 22, 54, 1, 1, 54, 25, 158, 35, 15, 64, 26, 42, 3, 217, 12,
28, 52, 28, 19, 59, 4, 196, 32, 43, 3, 216, 251, 58, 4, 8, 147, 51, 1, 0, 155, 24, 246, 35, 3, 64, 26, 28, 51, 42, 0,
208, 6, 6, 9, 14, 12, 33, 0, 84, 92, 49, 1, 66, 138, 209, 251, 188, 112, 188, 2, 71, 8, 72, 69, 76, 79, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 100, 101, 118, 47, 117, 115, 98, 49,
50, 51, 0, 47, 100, 101, 118, 47, 115, 100, 105, 111, 47, 115, 100, 104, 99, 0, 0, 19, 119, 217, 32, 19, 119, 217, 44,
19, 119, 217, 32, 71, 120, 70, 192, 234, 255, 255, 7, 229, 159, 192, 0, 225, 47, 255, 28, 19, 119, 215, 189, 71, 120,
70, 192, 234, 255, 255, 12, 71, 120, 70, 192, 234, 255, 255, 44, 71, 120, 70, 192, 234, 255, 255, 24, 71, 120, 70, 192,
234, 255, 255, 16, 71, 120, 70, 192, 234, 255, 254, 242, 71, 120, 70, 192, 234, 255, 255, 54, 71, 120, 70, 192, 234,
255, 254, 240, 71, 120, 70, 192, 234, 255, 255, 20, 71, 120, 70, 192, 234, 255, 254, 238, 71, 120, 70, 192, 234, 255,
254, 248, 71, 120, 70, 192, 234, 255, 255, 58, 71, 120, 70, 192, 234, 255, 254, 240, 71, 120, 70, 192, 234, 255, 254,
232, 71, 120, 70, 192, 234, 255, 254, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 47, 100, 101, 118, 47, 115, 100, 105, 111, 47, 115, 100, 104, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 47, 100, 101, 118, 47, 117, 115, 98, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 105,
108, 101, 110, 97, 109, 101, 95, 100, 97, 116, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};

204
source/loader/sdhc_module.c Normal file
View File

@ -0,0 +1,204 @@
#define size_sdhc_module 5672
unsigned char sdhc_module[5672] __attribute__((aligned (32)))={
127, 69, 76, 70, 1, 2, 1, 97, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 40, 0, 0, 0, 1, 19, 118, 176, 0, 0, 0, 0, 52, 0, 0, 0,
0, 0, 0, 6, 6, 0, 52, 0, 32, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
0, 0, 0, 160, 0, 240, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 212, 0, 0, 0, 160, 0, 0, 0, 160, 0, 0, 0, 52, 0, 0, 0,
52, 0, 240, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 0, 0, 0, 212, 0, 240, 0,
0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 1, 8, 19, 118, 176, 0, 19, 118, 176, 0, 0, 0, 20, 64, 0, 0, 20, 64, 0, 240, 0, 5,
0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 21, 72, 19, 118, 208, 0, 19, 118, 208, 0, 0, 0, 0, 224, 0, 0, 162, 12, 0, 240, 0, 6, 0,
0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 6, 0, 0, 0, 11, 0, 0, 0, 4, 0, 0, 0, 9, 19, 118, 176, 0, 0, 0, 0, 125, 0,
0, 0, 72, 0, 0, 0, 126, 0, 0, 32, 0, 0, 0, 0, 127, 19, 119, 114, 12, 227, 160, 0, 0, 227, 160, 16, 0, 229, 159, 48,
0, 225, 47, 255, 19, 19, 118, 177, 117, 181, 48, 176, 131, 28, 4, 33, 0, 72, 11, 240, 0, 237, 44, 28, 5, 40, 0, 219,
14, 75, 9, 34, 8, 96, 28, 96, 90, 33, 32, 147, 0, 34, 0, 35, 1, 240, 0, 237, 54, 28, 4, 28, 40, 240, 0, 237, 30, 28,
37, 176, 3, 28, 40, 189, 48, 19, 118, 208, 104, 19, 118, 208, 224, 181, 112, 0, 203, 24, 197, 28, 12, 24, 86, 224, 5,
104, 40, 104, 105, 240, 0, 237, 76, 52, 1, 53, 8, 66, 180, 211, 247, 189, 112, 70, 192, 181, 112, 28, 4, 37, 0, 24,
86, 224, 5, 104, 32, 104, 97, 240, 0, 237, 58, 53, 1, 52, 8, 66, 181, 211, 247, 189, 112, 181, 48, 176, 129, 28, 5,
240, 0, 249, 13, 240, 0, 253, 103, 32, 128, 240, 0, 248, 252, 40, 0, 209, 2, 36, 22, 66, 100, 224, 11, 33, 32, 240,
0, 236, 154, 28, 4, 40, 0, 219, 5, 28, 33, 72, 3, 240, 0, 236, 216, 96, 44, 36, 0, 176, 1, 28, 32, 189, 48, 19, 118,
208, 112, 181, 240, 28, 4, 28, 13, 28, 22, 28, 8, 176, 129, 28, 17, 28, 26, 28, 31, 247, 255, 255, 199, 44, 3, 208,
30, 44, 3, 216, 4, 44, 1, 208, 13, 44, 2, 209, 8, 224, 13, 75, 29, 66, 156, 208, 31, 51, 1, 66, 156, 208, 33, 44, 4,
208, 23, 36, 101, 66, 100, 224, 40, 240, 0, 250, 155, 224, 6, 104, 43, 105, 42, 104, 24, 104, 171, 104, 25, 240, 0,
250, 23, 66, 68, 65, 68, 224, 27, 104, 43, 105, 42, 104, 24, 104, 171, 104, 25, 240, 0, 249, 219, 231, 244, 240, 0,
248, 236, 231, 241, 104, 40, 240, 0, 253, 70, 28, 4, 224, 11, 104, 171, 105, 40, 104, 25, 104, 43, 104, 26, 240, 0,
253, 41, 28, 4, 40, 0, 208, 1, 36, 128, 2, 36, 28, 40, 28, 49, 28, 58, 247, 255, 255, 117, 176, 1, 28, 32, 189, 240,
87, 70, 83, 1, 181, 240, 176, 133, 72, 63, 240, 0, 236, 206, 168, 3, 247, 255, 255, 134, 40, 0, 218, 1, 176, 5, 189,
240, 78, 59, 35, 0, 34, 0, 152, 3, 169, 2, 147, 2, 240, 0, 236, 54, 157, 2, 120, 43, 120, 106, 6, 27, 4, 18, 67, 26,
120, 171, 2, 27, 67, 19, 120, 234, 67, 26, 42, 2, 208, 44, 42, 7, 208, 47, 42, 1, 208, 1, 33, 101, 224, 8, 70, 104,
247, 255, 255, 38, 40, 0, 219, 5, 72, 44, 240, 0, 236, 164, 33, 6, 66, 73, 224, 75, 156, 2, 28, 49, 123, 35, 123, 98,
6, 27, 4, 18, 67, 26, 123, 163, 123, 224, 2, 27, 67, 19, 67, 24, 240, 1, 248, 248, 40, 0, 209, 236, 125, 35, 125, 98,
6, 27, 4, 18, 67, 26, 125, 163, 2, 27, 67, 19, 125, 226, 28, 17, 67, 25, 224, 47, 240, 0, 249, 230, 66, 65, 65, 65,
224, 42, 123, 43, 123, 106, 6, 27, 4, 18, 67, 26, 123, 171, 123, 232, 2, 27, 67, 19, 67, 24, 126, 106, 126, 43, 4, 18,
6, 27, 67, 26, 126, 171, 126, 233, 2, 27, 67, 19, 67, 25, 124, 106, 124, 43, 4, 18, 6, 27, 67, 26, 124, 171, 125, 44,
2, 27, 67, 19, 124, 234, 6, 36, 67, 26, 125, 107, 4, 27, 67, 35, 125, 172, 2, 36, 67, 28, 125, 235, 67, 35, 247, 255,
255, 49, 28, 1, 152, 2, 240, 0, 236, 58, 231, 138, 19, 118, 208, 127, 19, 118, 208, 112, 19, 118, 208, 173, 181, 0,
75, 4, 176, 129, 28, 1, 104, 24, 240, 0, 235, 236, 176, 1, 189, 0, 70, 192, 19, 118, 208, 0, 181, 0, 75, 4, 176, 129,
28, 1, 34, 32, 104, 24, 240, 0, 235, 218, 176, 1, 189, 0, 19, 118, 208, 0, 181, 16, 76, 8, 104, 35, 43, 0, 218, 10,
33, 128, 72, 6, 2, 9, 240, 0, 235, 192, 96, 32, 40, 0, 218, 2, 32, 1, 66, 64, 224, 0, 32, 0, 189, 16, 19, 118, 208,
0, 19, 118, 209, 32, 181, 16, 76, 10, 176, 130, 28, 32, 33, 4, 240, 0, 236, 10, 75, 8, 33, 11, 104, 24, 35, 4, 147,
1, 34, 0, 35, 0, 148, 0, 240, 0, 235, 208, 40, 0, 219, 0, 104, 32, 176, 2, 189, 16, 19, 119, 81, 192, 19, 118, 208,
32, 181, 0, 176, 129, 247, 255, 255, 226, 35, 1, 176, 1, 64, 24, 189, 0, 181, 112, 176, 130, 28, 22, 42, 0, 209, 2,
32, 1, 66, 64, 224, 30, 76, 16, 77, 17, 35, 0, 96, 43, 96, 19, 96, 99, 96, 163, 97, 35, 97, 99, 96, 32, 96, 225, 28,
40, 33, 4, 240, 0, 235, 216, 28, 32, 33, 24, 240, 0, 235, 212, 75, 9, 33, 2, 104, 24, 35, 4, 147, 1, 28, 34, 35, 24,
149, 0, 240, 0, 235, 154, 104, 43, 96, 51, 176, 2, 189, 112, 70, 192, 19, 119, 81, 224, 19, 119, 81, 192, 19, 118, 208,
32, 181, 48, 76, 12, 37, 0, 176, 131, 96, 32, 96, 101, 96, 165, 96, 225, 97, 34, 97, 101, 28, 32, 33, 24, 240, 0, 235,
176, 75, 6, 33, 1, 104, 24, 28, 34, 35, 24, 149, 0, 149, 1, 240, 0, 235, 120, 176, 3, 189, 48, 70, 192, 19, 119, 81,
192, 19, 118, 208, 32, 181, 240, 176, 131, 157, 10, 28, 4, 72, 49, 159, 8, 96, 195, 158, 9, 28, 43, 96, 130, 30, 90,
65, 147, 97, 195, 35, 0, 96, 65, 96, 4, 97, 7, 97, 70, 97, 133, 98, 3, 33, 36, 240, 0, 235, 138, 72, 41, 33, 16, 240,
0, 235, 134, 45, 0, 208, 4, 28, 57, 67, 113, 28, 40, 240, 0, 235, 126, 74, 34, 105, 211, 43, 0, 209, 3, 75, 34, 104,
27, 43, 1, 209, 25, 76, 33, 75, 30, 28, 32, 96, 35, 35, 36, 96, 99, 28, 59, 67, 115, 96, 165, 96, 227, 75, 26, 33, 24,
97, 35, 35, 16, 97, 99, 240, 0, 235, 102, 75, 26, 33, 7, 104, 24, 34, 2, 35, 1, 148, 0, 240, 0, 235, 50, 224, 9, 75,
21, 33, 7, 104, 24, 75, 17, 147, 0, 35, 16, 147, 1, 35, 36, 240, 0, 235, 34, 28, 4, 33, 16, 72, 12, 240, 0, 235, 74,
45, 0, 208, 4, 28, 57, 67, 113, 28, 40, 240, 0, 235, 66, 152, 11, 40, 0, 208, 6, 155, 12, 43, 16, 216, 3, 73, 4, 28,
26, 240, 0, 255, 18, 176, 3, 28, 32, 189, 240, 70, 192, 19, 119, 81, 64, 19, 119, 81, 128, 19, 119, 81, 32, 19, 119,
81, 160, 19, 118, 208, 32, 181, 0, 75, 8, 176, 135, 136, 27, 34, 0, 146, 0, 146, 1, 146, 2, 146, 3, 146, 4, 4, 27, 32,
7, 33, 3, 34, 2, 247, 255, 255, 126, 176, 7, 189, 0, 19, 119, 81, 36, 181, 0, 176, 135, 35, 0, 32, 7, 33, 3, 34, 2,
147, 0, 147, 1, 147, 2, 147, 3, 147, 4, 247, 255, 255, 109, 176, 7, 189, 0, 70, 192, 181, 240, 176, 139, 28, 7, 145,
9, 146, 8, 42, 0, 208, 37, 74, 20, 37, 128, 38, 0, 0, 173, 146, 7, 247, 255, 255, 206, 40, 0, 219, 25, 154, 7, 104,
19, 43, 0, 209, 0, 2, 127, 155, 9, 154, 8, 147, 0, 35, 0, 146, 2, 147, 3, 147, 4, 32, 25, 33, 3, 34, 1, 28, 59, 149,
1, 247, 255, 255, 71, 28, 4, 247, 255, 255, 202, 44, 0, 219, 1, 32, 1, 224, 3, 54, 1, 46, 10, 209, 222, 32, 0, 176,
11, 189, 240, 19, 119, 81, 32, 181, 240, 176, 139, 28, 7, 145, 9, 146, 8, 42, 0, 208, 37, 74, 20, 37, 128, 38, 0, 0,
173, 146, 7, 247, 255, 255, 156, 40, 0, 219, 25, 154, 7, 104, 19, 43, 0, 209, 0, 2, 127, 155, 9, 154, 8, 147, 0, 35,
0, 146, 2, 147, 3, 147, 4, 32, 18, 33, 3, 34, 1, 28, 59, 149, 1, 247, 255, 255, 21, 28, 4, 247, 255, 255, 152, 44, 0,
219, 1, 32, 1, 224, 3, 54, 1, 46, 10, 209, 222, 32, 0, 176, 11, 189, 240, 19, 119, 81, 32, 181, 0, 75, 8, 176, 129,
104, 24, 40, 0, 219, 1, 240, 0, 234, 94, 74, 4, 35, 1, 66, 91, 96, 19, 74, 3, 35, 0, 176, 1, 32, 1, 96, 19, 189, 0,
19, 118, 208, 32, 19, 119, 81, 44, 181, 16, 76, 6, 104, 35, 43, 0, 209, 1, 32, 0, 224, 4, 247, 255, 255, 225, 35, 0,
32, 1, 96, 35, 189, 16, 70, 192, 19, 119, 81, 40, 181, 240, 176, 133, 144, 1, 28, 15, 28, 22, 28, 29, 36, 10, 224, 17,
152, 1, 28, 57, 170, 3, 247, 255, 254, 133, 40, 0, 219, 15, 155, 3, 46, 0, 208, 2, 66, 29, 209, 2, 224, 8, 66, 29, 209,
6, 72, 5, 240, 0, 250, 124, 60, 1, 210, 235, 28, 32, 224, 0, 32, 0, 176, 5, 189, 240, 70, 192, 0, 0, 39, 16, 181, 240,
75, 198, 176, 141, 104, 30, 46, 0, 208, 0, 225, 106, 72, 196, 33, 1, 240, 0, 234, 14, 76, 195, 96, 32, 40, 0, 218, 0,
225, 119, 79, 193, 33, 4, 28, 56, 240, 0, 234, 72, 77, 192, 35, 4, 128, 46, 104, 32, 33, 4, 147, 1, 34, 0, 35, 0, 151,
0, 240, 0, 234, 12, 40, 0, 219, 1, 136, 59, 128, 43, 247, 255, 254, 38, 37, 1, 66, 40, 209, 0, 225, 93, 3, 195, 213,
0, 224, 223, 76, 178, 104, 32, 240, 0, 233, 236, 72, 175, 33, 1, 240, 0, 233, 228, 96, 32, 40, 0, 218, 0, 225, 78, 32,
47, 33, 1, 34, 7, 247, 255, 254, 96, 40, 0, 218, 0, 225, 50, 32, 47, 33, 1, 34, 1, 35, 7, 247, 255, 255, 149, 40, 0,
218, 0, 225, 41, 33, 4, 74, 166, 32, 52, 247, 255, 254, 79, 33, 4, 74, 163, 32, 56, 247, 255, 254, 74, 75, 162, 32,
41, 96, 29, 33, 1, 34, 14, 247, 255, 254, 67, 40, 0, 218, 0, 225, 21, 32, 41, 33, 1, 34, 15, 247, 255, 254, 59, 40,
0, 218, 0, 225, 13, 32, 44, 33, 2, 34, 0, 247, 255, 254, 51, 40, 0, 218, 0, 225, 5, 32, 44, 33, 2, 74, 149, 247, 255,
254, 43, 40, 0, 218, 0, 224, 253, 32, 44, 33, 2, 34, 0, 35, 2, 247, 255, 255, 96, 40, 0, 218, 0, 224, 244, 32, 44, 33,
2, 74, 142, 247, 255, 254, 26, 40, 0, 218, 0, 224, 236, 32, 46, 33, 1, 34, 14, 247, 255, 254, 18, 40, 0, 218, 0, 224,
228, 36, 0, 32, 0, 33, 0, 34, 0, 35, 0, 148, 0, 148, 1, 148, 2, 148, 3, 148, 4, 247, 255, 254, 33, 40, 0, 218, 0, 224,
213, 35, 16, 147, 4, 35, 213, 174, 7, 32, 8, 33, 0, 34, 7, 0, 91, 148, 0, 148, 1, 148, 2, 150, 3, 247, 255, 254, 16,
40, 0, 218, 0, 224, 196, 155, 7, 34, 255, 64, 19, 43, 170, 208, 0, 224, 190, 37, 10, 32, 55, 33, 3, 34, 1, 35, 0, 148,
0, 148, 1, 148, 2, 148, 3, 148, 4, 247, 255, 253, 251, 40, 0, 218, 0, 224, 175, 35, 16, 147, 4, 32, 41, 33, 0, 34, 4,
75, 107, 148, 0, 148, 1, 148, 2, 150, 3, 247, 255, 253, 236, 40, 0, 218, 0, 224, 160, 104, 51, 43, 0, 219, 6, 72, 101,
240, 0, 249, 153, 61, 1, 45, 0, 208, 3, 231, 216, 45, 0, 218, 0, 224, 147, 154, 7, 35, 128, 5, 219, 73, 91, 64, 19,
208, 0, 35, 1, 77, 87, 74, 93, 96, 11, 136, 43, 146, 3, 34, 16, 36, 0, 146, 4, 4, 27, 32, 2, 33, 0, 34, 3, 148, 0, 148,
1, 148, 2, 247, 255, 253, 196, 40, 0, 219, 121, 171, 11, 147, 3, 35, 4, 147, 4, 32, 3, 33, 0, 34, 6, 35, 0, 148, 0,
148, 1, 148, 2, 247, 255, 253, 181, 40, 0, 219, 106, 155, 11, 12, 27, 128, 43, 224, 7, 35, 128, 3, 91, 73, 69, 64, 3,
208, 1, 96, 13, 224, 0, 96, 11, 36, 0, 32, 40, 33, 1, 170, 11, 148, 11, 247, 255, 253, 82, 40, 0, 219, 105, 154, 11,
35, 253, 64, 26, 35, 2, 67, 26, 32, 40, 33, 1, 146, 11, 247, 255, 253, 118, 40, 0, 219, 93, 37, 1, 28, 56, 33, 4, 96,
61, 240, 0, 233, 44, 75, 48, 33, 6, 104, 24, 28, 58, 35, 4, 148, 0, 148, 1, 240, 0, 232, 244, 40, 0, 219, 76, 247, 255,
253, 241, 40, 0, 219, 72, 35, 128, 32, 16, 33, 3, 34, 1, 0, 155, 148, 0, 148, 1, 148, 2, 148, 3, 148, 4, 247, 255, 253,
113, 40, 0, 219, 27, 75, 36, 32, 55, 136, 27, 33, 3, 4, 27, 34, 1, 148, 0, 148, 1, 148, 2, 148, 3, 148, 4, 247, 255,
253, 98, 40, 0, 219, 12, 32, 6, 33, 3, 34, 1, 35, 2, 148, 0, 148, 1, 148, 2, 148, 3, 148, 4, 247, 255, 253, 85, 40,
0, 218, 2, 247, 255, 253, 215, 224, 27, 247, 255, 253, 212, 75, 27, 96, 29, 75, 14, 96, 29, 32, 1, 224, 22, 33, 1, 34,
7, 32, 47, 247, 255, 253, 37, 33, 1, 34, 1, 35, 7, 32, 47, 247, 255, 254, 93, 76, 9, 104, 32, 240, 0, 232, 154, 72,
6, 33, 1, 240, 0, 232, 146, 96, 32, 247, 255, 254, 44, 32, 0, 176, 13, 189, 240, 70, 192, 19, 119, 81, 44, 19, 118,
208, 64, 19, 118, 208, 32, 19, 119, 81, 192, 19, 119, 81, 36, 1, 63, 0, 195, 19, 119, 81, 32, 0, 0, 1, 1, 0, 0, 1, 7,
64, 48, 0, 0, 0, 0, 39, 16, 19, 119, 81, 48, 19, 119, 81, 40, 230, 0, 0, 16, 225, 47, 255, 30, 230, 0, 0, 48, 225, 47,
255, 30, 230, 0, 0, 80, 225, 47, 255, 30, 230, 0, 0, 112, 225, 47, 255, 30, 230, 0, 0, 144, 225, 47, 255, 30, 230, 0,
0, 176, 225, 47, 255, 30, 230, 0, 0, 208, 225, 47, 255, 30, 230, 0, 0, 240, 225, 47, 255, 30, 230, 0, 1, 16, 225, 47,
255, 30, 230, 0, 1, 48, 225, 47, 255, 30, 230, 0, 1, 80, 225, 47, 255, 30, 230, 0, 1, 112, 225, 47, 255, 30, 230, 0,
1, 144, 225, 47, 255, 30, 230, 0, 1, 176, 225, 47, 255, 30, 230, 0, 1, 208, 225, 47, 255, 30, 230, 0, 1, 240, 225, 47,
255, 30, 230, 0, 2, 16, 225, 47, 255, 30, 230, 0, 2, 48, 225, 47, 255, 30, 230, 0, 2, 80, 225, 47, 255, 30, 230, 0,
2, 112, 225, 47, 255, 30, 230, 0, 2, 144, 225, 47, 255, 30, 230, 0, 2, 176, 225, 47, 255, 30, 230, 0, 2, 208, 225, 47,
255, 30, 230, 0, 2, 240, 225, 47, 255, 30, 230, 0, 3, 16, 225, 47, 255, 30, 230, 0, 3, 48, 225, 47, 255, 30, 230, 0,
3, 80, 225, 47, 255, 30, 230, 0, 3, 112, 225, 47, 255, 30, 230, 0, 3, 144, 225, 47, 255, 30, 230, 0, 3, 176, 225, 47,
255, 30, 230, 0, 3, 208, 225, 47, 255, 30, 230, 0, 3, 240, 225, 47, 255, 30, 230, 0, 4, 16, 225, 47, 255, 30, 230, 0,
4, 48, 225, 47, 255, 30, 230, 0, 4, 80, 225, 47, 255, 30, 230, 0, 4, 112, 225, 47, 255, 30, 230, 0, 4, 144, 225, 47,
255, 30, 230, 0, 4, 176, 225, 47, 255, 30, 230, 0, 4, 208, 225, 47, 255, 30, 230, 0, 4, 240, 225, 47, 255, 30, 230,
0, 5, 16, 225, 47, 255, 30, 230, 0, 5, 48, 225, 47, 255, 30, 230, 0, 5, 80, 225, 47, 255, 30, 230, 0, 6, 144, 225, 47,
255, 30, 230, 0, 7, 240, 225, 47, 255, 30, 230, 0, 8, 16, 225, 47, 255, 30, 230, 0, 9, 240, 225, 47, 255, 30, 230, 0,
10, 16, 225, 47, 255, 30, 225, 160, 32, 14, 226, 144, 16, 0, 227, 176, 0, 4, 239, 0, 0, 171, 225, 47, 255, 18, 181,
112, 75, 12, 176, 130, 28, 2, 33, 0, 104, 24, 247, 255, 239, 118, 77, 9, 76, 10, 174, 1, 104, 32, 28, 49, 34, 0, 247,
255, 239, 94, 155, 1, 66, 171, 209, 247, 75, 3, 104, 24, 247, 255, 239, 108, 176, 2, 189, 112, 70, 192, 19, 118, 208,
96, 0, 0, 6, 102, 19, 118, 208, 100, 181, 16, 76, 11, 104, 35, 43, 0, 218, 16, 32, 64, 247, 255, 251, 144, 33, 16, 247,
255, 239, 52, 75, 7, 33, 0, 28, 2, 96, 32, 32, 0, 247, 255, 239, 72, 75, 4, 96, 24, 247, 255, 239, 76, 189, 16, 70,
192, 19, 118, 208, 100, 0, 0, 6, 102, 19, 118, 208, 96, 181, 48, 75, 8, 28, 4, 104, 24, 28, 13, 176, 129, 28, 17, 40,
0, 209, 1, 32, 1, 224, 3, 28, 34, 28, 43, 240, 0, 249, 247, 176, 1, 189, 48, 70, 192, 19, 119, 82, 0, 181, 16, 176,
130, 28, 4, 247, 255, 253, 55, 40, 0, 209, 1, 32, 1, 224, 37, 75, 20, 104, 24, 40, 0, 208, 1, 240, 0, 248, 91, 75, 18,
104, 24, 40, 0, 208, 1, 240, 0, 248, 99, 35, 0, 147, 0, 147, 1, 35, 128, 0, 155, 72, 13, 33, 0, 34, 0, 240, 0, 249,
127, 75, 10, 96, 24, 40, 0, 209, 1, 32, 2, 224, 9, 28, 33, 240, 0, 250, 130, 75, 4, 96, 24, 40, 0, 208, 1, 32, 0, 224,
0, 32, 3, 176, 2, 189, 16, 70, 192, 19, 119, 82, 0, 19, 119, 82, 4, 19, 118, 188, 65, 181, 48, 28, 20, 28, 8, 176, 129,
28, 17, 28, 26, 28, 29, 247, 255, 252, 127, 40, 0, 209, 1, 32, 1, 224, 4, 28, 40, 2, 97, 247, 255, 239, 76, 32, 0, 176,
1, 189, 48, 181, 112, 107, 68, 28, 5, 44, 0, 208, 23, 107, 128, 106, 233, 104, 43, 34, 1, 71, 160, 108, 110, 46, 0,
208, 15, 106, 235, 108, 41, 104, 108, 24, 201, 141, 43, 30, 98, 8, 219, 24, 210, 122, 43, 66, 100, 64, 34, 64, 218,
107, 168, 107, 108, 28, 51, 71, 160, 189, 112, 181, 16, 104, 2, 28, 4, 109, 19, 104, 64, 59, 1, 101, 19, 247, 255, 250,
231, 28, 32, 247, 255, 250, 228, 189, 16, 70, 192, 181, 16, 28, 4, 247, 255, 255, 208, 109, 35, 43, 0, 209, 13, 104,
32, 247, 255, 250, 216, 108, 224, 247, 255, 250, 213, 108, 96, 40, 0, 208, 1, 247, 255, 250, 208, 28, 32, 247, 255,
250, 205, 189, 16, 181, 240, 176, 133, 144, 3, 32, 84, 145, 2, 146, 1, 28, 31, 156, 11, 247, 255, 250, 206, 28, 5, 47,
0, 209, 2, 32, 128, 0, 128, 224, 0, 28, 56, 247, 255, 250, 197, 35, 128, 2, 27, 97, 43, 35, 0, 28, 6, 51, 1, 6, 27,
14, 27, 43, 16, 209, 250, 35, 15, 117, 43, 154, 10, 98, 236, 23, 211, 12, 91, 24, 155, 19, 219, 67, 123, 96, 46, 97,
171, 75, 112, 97, 235, 155, 12, 43, 0, 208, 50, 28, 48, 33, 0, 28, 58, 240, 0, 250, 242, 35, 87, 112, 51, 35, 66, 112,
115, 35, 70, 112, 179, 35, 83, 112, 243, 28, 60, 35, 0, 224, 3, 51, 1, 6, 27, 14, 27, 8, 100, 44, 0, 209, 249, 59, 1,
114, 51, 156, 10, 33, 128, 14, 35, 113, 51, 12, 35, 113, 115, 10, 35, 113, 179, 113, 244, 105, 172, 34, 6, 32, 6, 2,
73, 28, 11, 64, 131, 66, 156, 211, 5, 28, 83, 6, 27, 14, 26, 48, 1, 42, 11, 209, 245, 125, 43, 24, 211, 114, 115, 224,
5, 28, 33, 152, 1, 34, 1, 28, 51, 156, 3, 71, 160, 120, 51, 120, 114, 6, 27, 4, 18, 67, 26, 120, 179, 2, 27, 67, 19,
120, 242, 67, 26, 75, 77, 66, 154, 208, 0, 224, 139, 75, 76, 104, 27, 66, 89, 65, 89, 41, 0, 208, 32, 47, 0, 208, 12,
122, 48, 28, 58, 51, 1, 6, 27, 8, 82, 14, 27, 42, 0, 209, 249, 59, 1, 6, 27, 14, 27, 66, 152, 209, 118, 41, 0, 208,
15, 154, 10, 42, 0, 208, 12, 121, 50, 121, 115, 6, 18, 4, 27, 67, 19, 121, 178, 156, 10, 2, 18, 67, 26, 121, 243, 67,
19, 66, 163, 209, 100, 122, 51, 36, 1, 28, 39, 64, 159, 96, 111, 122, 51, 105, 41, 114, 43, 121, 51, 121, 114, 6, 27,
4, 18, 67, 26, 121, 179, 121, 240, 2, 27, 67, 19, 67, 24, 96, 232, 240, 0, 249, 188, 125, 43, 28, 57, 67, 65, 97, 169,
122, 114, 64, 148, 98, 106, 26, 210, 105, 235, 64, 209, 64, 211, 4, 27, 12, 27, 4, 58, 12, 18, 133, 107, 51, 128, 133,
41, 0, 91, 30, 81, 24, 201, 66, 82, 28, 43, 64, 17, 51, 72, 128, 25, 154, 3, 155, 2, 99, 42, 99, 107, 154, 1, 141, 43,
99, 170, 8, 218, 122, 43, 98, 44, 26, 164, 64, 220, 100, 44, 155, 12, 43, 0, 209, 1, 100, 107, 224, 11, 30, 120, 24,
128, 66, 123, 64, 24, 247, 255, 249, 246, 141, 42, 33, 255, 8, 210, 100, 104, 240, 0, 250, 60, 28, 43, 51, 72, 136,
25, 108, 40, 122, 43, 56, 1, 65, 25, 240, 0, 249, 123, 104, 107, 59, 12, 4, 0, 12, 0, 135, 168, 66, 152, 217, 0, 135,
171, 104, 104, 247, 255, 249, 220, 35, 0, 101, 43, 100, 232, 224, 6, 28, 40, 247, 255, 249, 201, 28, 48, 247, 255, 249,
198, 37, 0, 176, 5, 28, 40, 189, 240, 0, 4, 96, 144, 87, 66, 70, 83, 19, 119, 82, 8, 181, 240, 176, 155, 28, 7, 28,
24, 145, 9, 146, 8, 147, 7, 247, 255, 249, 191, 33, 0, 34, 1, 28, 5, 28, 43, 152, 8, 71, 184, 40, 0, 209, 60, 34, 223,
0, 82, 172, 10, 24, 169, 28, 32, 34, 64, 240, 0, 249, 183, 70, 107, 51, 88, 147, 5, 122, 98, 122, 163, 2, 18, 4, 27,
67, 26, 122, 35, 152, 8, 67, 26, 122, 227, 28, 22, 6, 27, 67, 30, 34, 1, 28, 43, 28, 49, 71, 184, 120, 42, 120, 107,
6, 18, 4, 27, 67, 19, 120, 170, 2, 18, 67, 26, 120, 235, 67, 19, 74, 13, 66, 147, 209, 15, 35, 0, 147, 0, 155, 33, 28,
56, 147, 2, 153, 9, 154, 8, 155, 7, 150, 1, 247, 255, 254, 172, 28, 4, 28, 40, 247, 255, 249, 116, 224, 5, 154, 5, 66,
148, 208, 1, 52, 16, 231, 205, 36, 0, 176, 27, 28, 32, 189, 240, 87, 66, 70, 83, 181, 240, 104, 5, 176, 137, 106, 110,
146, 1, 147, 0, 28, 10, 30, 179, 64, 218, 4, 19, 144, 2, 12, 27, 147, 3, 155, 2, 122, 40, 104, 90, 155, 3, 106, 44,
51, 128, 0, 91, 90, 211, 104, 111, 147, 6, 43, 0, 209, 0, 224, 153, 30, 99, 64, 195, 26, 54, 147, 5, 150, 4, 30, 131,
28, 10, 158, 5, 64, 218, 8, 187, 59, 1, 28, 15, 64, 22, 64, 31, 209, 2, 155, 1, 147, 7, 224, 107, 154, 4, 106, 233,
155, 6, 24, 113, 64, 147, 24, 201, 107, 44, 107, 168, 108, 235, 34, 1, 71, 160, 28, 4, 40, 0, 209, 122, 104, 107, 0,
186, 26, 156, 155, 0, 66, 156, 217, 0, 28, 28, 108, 233, 152, 1, 24, 137, 28, 34, 240, 0, 249, 53, 154, 0, 155, 1, 27,
18, 146, 0, 154, 5, 25, 28, 54, 1, 148, 7, 66, 150, 217, 70, 155, 0, 43, 0, 208, 67, 155, 3, 51, 1, 4, 27, 12, 27, 147,
3, 155, 2, 104, 90, 155, 3, 51, 128, 0, 91, 90, 211, 147, 6, 43, 0, 208, 81, 38, 0, 224, 51, 122, 43, 159, 0, 106, 42,
64, 223, 25, 187, 66, 147, 217, 0, 27, 151, 154, 4, 106, 233, 155, 6, 24, 113, 64, 147, 24, 201, 107, 44, 107, 168,
28, 58, 155, 7, 71, 160, 28, 4, 40, 0, 209, 58, 122, 43, 28, 57, 64, 153, 155, 0, 154, 5, 26, 91, 25, 246, 147, 0, 66,
150, 217, 16, 43, 0, 208, 14, 155, 3, 51, 1, 4, 27, 12, 27, 147, 3, 155, 2, 104, 90, 155, 3, 51, 128, 0, 91, 90, 211,
147, 6, 43, 0, 208, 31, 38, 0, 154, 7, 24, 82, 146, 7, 104, 107, 154, 0, 66, 154, 210, 199, 42, 0, 209, 1, 36, 0, 224,
20, 154, 4, 106, 233, 155, 6, 24, 113, 64, 147, 24, 201, 107, 44, 107, 168, 108, 235, 34, 1, 71, 160, 28, 4, 40, 0,
209, 6, 108, 233, 152, 7, 154, 0, 240, 0, 248, 201, 224, 0, 36, 1, 176, 9, 28, 32, 189, 240, 181, 240, 28, 3, 51, 72,
136, 26, 122, 3, 176, 131, 65, 26, 39, 0, 28, 5, 28, 14, 146, 1, 151, 0, 224, 54, 104, 43, 25, 219, 123, 27, 43, 0,
208, 44, 106, 233, 154, 0, 49, 1, 24, 137, 107, 168, 34, 1, 108, 235, 107, 44, 71, 160, 108, 233, 28, 48, 34, 6, 240,
0, 248, 120, 40, 0, 209, 28, 32, 12, 247, 255, 248, 151, 28, 6, 40, 0, 208, 31, 28, 43, 51, 72, 96, 5, 96, 135, 136,
24, 247, 255, 248, 141, 28, 3, 96, 112, 40, 0, 208, 23, 106, 233, 154, 0, 49, 1, 24, 137, 107, 168, 107, 44, 154, 1,
71, 160, 109, 43, 51, 1, 101, 43, 224, 8, 155, 0, 154, 1, 55, 1, 24, 155, 147, 0, 143, 171, 66, 159, 211, 197, 38, 0,
176, 3, 28, 48, 189, 240, 28, 48, 247, 255, 248, 98, 231, 247, 70, 192, 41, 0, 208, 52, 35, 1, 34, 0, 180, 16, 66, 136,
211, 44, 36, 1, 7, 36, 66, 161, 210, 4, 66, 129, 210, 2, 1, 9, 1, 27, 231, 248, 0, 228, 66, 161, 210, 4, 66, 129, 210,
2, 0, 73, 0, 91, 231, 248, 66, 136, 211, 1, 26, 64, 67, 26, 8, 76, 66, 160, 211, 2, 27, 0, 8, 92, 67, 34, 8, 140, 66,
160, 211, 2, 27, 0, 8, 156, 67, 34, 8, 204, 66, 160, 211, 2, 27, 0, 8, 220, 67, 34, 40, 0, 208, 3, 9, 27, 208, 1, 9,
9, 231, 227, 28, 16, 188, 16, 71, 112, 181, 2, 240, 0, 248, 12, 32, 0, 188, 6, 71, 16, 70, 192, 181, 3, 247, 255, 255,
191, 188, 14, 67, 66, 26, 137, 71, 24, 70, 192, 71, 112, 70, 192, 181, 112, 28, 14, 28, 21, 28, 4, 42, 3, 217, 32, 28,
51, 67, 3, 7, 154, 208, 18, 120, 35, 120, 8, 66, 131, 209, 27, 30, 106, 224, 6, 52, 1, 49, 1, 120, 35, 120, 8, 58, 1,
66, 131, 209, 18, 42, 0, 209, 246, 32, 0, 188, 112, 188, 2, 71, 8, 104, 2, 104, 11, 66, 154, 209, 4, 61, 4, 48, 4, 49,
4, 45, 3, 216, 246, 28, 4, 45, 0, 209, 224, 231, 238, 26, 24, 231, 237, 181, 240, 28, 7, 28, 14, 28, 4, 28, 21, 28,
8, 28, 17, 42, 15, 217, 3, 28, 51, 67, 59, 7, 154, 208, 11, 41, 0, 208, 5, 34, 0, 92, 131, 84, 163, 50, 1, 66, 138,
209, 250, 28, 56, 188, 240, 188, 2, 71, 8, 28, 58, 28, 49, 28, 40, 104, 11, 96, 19, 104, 75, 96, 83, 104, 139, 96, 147,
104, 203, 56, 16, 96, 211, 49, 16, 50, 16, 40, 15, 216, 242, 28, 43, 59, 16, 9, 26, 1, 17, 50, 1, 1, 18, 26, 89, 24,
176, 24, 188, 41, 3, 217, 216, 34, 0, 88, 131, 80, 163, 50, 4, 26, 139, 43, 3, 216, 249, 31, 11, 8, 154, 0, 145, 50,
1, 0, 146, 26, 89, 24, 128, 24, 164, 231, 200, 181, 240, 28, 7, 70, 140, 28, 16, 28, 57, 7, 186, 208, 14, 40, 0, 208,
73, 70, 98, 6, 19, 56, 1, 14, 27, 34, 3, 224, 2, 40, 0, 208, 65, 56, 1, 112, 11, 49, 1, 66, 17, 209, 248, 28, 5, 28,
10, 40, 3, 217, 46, 35, 255, 70, 98, 64, 26, 2, 19, 67, 19, 4, 26, 28, 20, 28, 14, 67, 28, 40, 15, 217, 18, 28, 2, 28,
11, 58, 16, 96, 28, 96, 92, 96, 156, 96, 220, 51, 16, 42, 15, 216, 247, 28, 3, 59, 16, 28, 29, 9, 27, 51, 1, 34, 15,
1, 27, 64, 21, 24, 206, 45, 3, 217, 13, 34, 0, 80, 180, 50, 4, 26, 171, 43, 3, 216, 250, 31, 43, 28, 29, 8, 155, 51,
1, 34, 3, 0, 155, 64, 21, 24, 246, 28, 50, 45, 0, 208, 7, 70, 97, 6, 11, 14, 25, 35, 0, 84, 209, 51, 1, 66, 157, 209,
251, 28, 56, 188, 240, 188, 2, 71, 8, 70, 192, 181, 48, 28, 11, 67, 3, 7, 154, 209, 28, 104, 2, 104, 11, 66, 154, 209,
24, 76, 16, 25, 19, 67, 147, 74, 15, 66, 19, 209, 11, 28, 20, 48, 4, 49, 4, 104, 2, 104, 11, 66, 154, 209, 11, 77, 9,
25, 83, 67, 147, 66, 35, 208, 244, 32, 0, 224, 9, 120, 10, 66, 154, 209, 5, 48, 1, 49, 1, 120, 3, 43, 0, 209, 247, 120,
10, 26, 152, 188, 48, 188, 2, 71, 8, 254, 254, 254, 255, 128, 128, 128, 128, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 100, 101, 118, 47, 115, 100, 105, 111, 47, 115, 108, 111, 116,
48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 47, 100, 101, 118, 47,
101, 115, 0, 47, 100, 101, 118, 47, 115, 100, 105, 111, 47, 115, 100, 104, 99, 0, 36, 73, 79, 83, 86, 101, 114, 115,
105, 111, 110, 58, 32, 83, 68, 72, 67, 58, 32, 65, 117, 103, 32, 50, 57, 32, 50, 48, 49, 48, 32, 49, 51, 58, 50, 55,
58, 51, 54, 32, 54, 52, 77, 36, 10, 0, 83, 68, 72, 67, 58, 32, 84, 105, 116, 108, 101, 32, 105, 100, 101, 110, 116,
105, 102, 105, 101, 100, 46, 32, 66, 108, 111, 99, 107, 105, 110, 103, 32, 111, 112, 101, 110, 105, 110, 103, 32, 114,
101, 113, 117, 101, 115, 116, 46, 10, 0
};

View File

@ -0,0 +1,3 @@
#define size_sdhc_module 5672
extern unsigned char sdhc_module[5672];

View File

@ -1198,7 +1198,6 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
u32 cover = 0; u32 cover = 0;
if(!neek2o() && !Sys_DolphinMode()) if(!neek2o() && !Sys_DolphinMode())
{ {
Disc_SetUSB(NULL, false);
if(WDVD_GetCoverStatus(&cover) < 0) if(WDVD_GetCoverStatus(&cover) < 0)
{ {
error(_t("errgame7", L"WDVDGetCoverStatus Failed!")); error(_t("errgame7", L"WDVDGetCoverStatus Failed!"));
@ -1404,7 +1403,7 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
/* Close ES Module */ /* Close ES Module */
IOS_Close(ESHandle); IOS_Close(ESHandle);
} }
if(emulate_mode && !neek2o()) if(emulate_mode && !neek2o() && CurrentIOS.Type == IOS_TYPE_D2X)
{ {
Nand::Instance()->Init(emuPath.c_str(), emuPartition, false); Nand::Instance()->Init(emuPath.c_str(), emuPartition, false);
DeviceHandle.UnMount(emuPartition); DeviceHandle.UnMount(emuPartition);
@ -1425,24 +1424,13 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
DeviceHandle.Mount(currentPartition); DeviceHandle.Mount(currentPartition);
DeviceHandle.Mount(emuPartition); DeviceHandle.Mount(emuPartition);
} }
bool wbfs_partition = false;
if(!dvd) if(!dvd)
{ {
DeviceHandle.OpenWBFS(currentPartition); DeviceHandle.OpenWBFS(currentPartition);
bool wbfs_partition = (DeviceHandle.GetFSType(currentPartition) == PART_FS_WBFS); wbfs_partition = (DeviceHandle.GetFSType(currentPartition) == PART_FS_WBFS);
if(!wbfs_partition && get_frag_list((u8 *)id.c_str(), (char*)path.c_str(), currentPartition == 0 ? 0x200 : USBStorage2_GetSectorSize()) < 0) if(!wbfs_partition && get_frag_list((u8 *)id.c_str(), (char*)path.c_str(), currentPartition == 0 ? 0x200 : USBStorage2_GetSectorSize()) < 0)
Sys_Exit(); Sys_Exit();
s32 ret = Disc_SetUSB((u8*)id.c_str(), !wbfs_partition);
if(ret < 0)
{
gprintf("Set USB failed: %d\n", ret);
error(wfmt(_fmt("errgame10", L"Set USB failed: %d"), ret));
Sys_Exit();
}
if(Disc_Open(false) < 0)
{
error(_t("wbfsoperr2", L"Disc_Open failed"));
Sys_Exit();
}
WBFS_Close(); WBFS_Close();
} }
if(gameconfig.get() != NULL) if(gameconfig.get() != NULL)
@ -1455,13 +1443,9 @@ void CMenu::_launchGame(dir_discHdr *hdr, bool dvd)
ocarina_load_code(cheatFile.get(), cheatSize); ocarina_load_code(cheatFile.get(), cheatSize);
cheatFile.release(); cheatFile.release();
} }
if(CurrentIOS.Type == IOS_TYPE_HERMES) if(CurrentIOS.Type == IOS_TYPE_HERMES && currentPartition == 0)
{ USBStorage2_WBFS_SetDevice(1);
if(dvd) ExternalBooter_WiiGameSetup(wbfs_partition, dvd, id.c_str());
Hermes_Disable_EHC();
else
Hermes_shadow_mload();
}
WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, returnTo, TYPE_WII_GAME); WiiFlow_ExternalBooter(videoMode, vipatch, countryPatch, patchVidMode, aspectRatio, returnTo, TYPE_WII_GAME);
} }

View File

@ -314,7 +314,6 @@ bool CMenu::_wbfsOp(CMenu::WBFS_OP op)
m_btnMgr.hide(m_wbfsBtnBack); m_btnMgr.hide(m_wbfsBtnBack);
m_btnMgr.show(m_wbfsLblMessage); m_btnMgr.show(m_wbfsLblMessage);
m_btnMgr.setText(m_wbfsLblMessage, L""); m_btnMgr.setText(m_wbfsLblMessage, L"");
Disc_SetUSB(NULL, false);
if (Disc_Wait() < 0) if (Disc_Wait() < 0)
{ {
error(_t("wbfsoperr1", L"Disc_Wait failed")); error(_t("wbfsoperr1", L"Disc_Wait failed"));

View File

@ -6,6 +6,12 @@
extern "C" { extern "C" {
#endif #endif
enum
{
TYPE_WII_DISC = 0,
TYPE_WII_WBFS,
TYPE_WII_WBFS_EXT,
};
enum enum
{ {
@ -18,7 +24,6 @@ enum
}; };
#define NoGameID(x) (x == TYPE_PLUGIN || x == TYPE_HOMEBREW) #define NoGameID(x) (x == TYPE_PLUGIN || x == TYPE_HOMEBREW)
enum enum
{ {
IOS_TYPE_D2X = 0, IOS_TYPE_D2X = 0,