#include "debug.h"
#include "threaddep/thread.h"
#include "native2amiga.h"
+#include "inputdevice.h"
/* Commonly used autoconfig strings */
/* ROM tag area memory access */
uaecptr rtarea_base = RTAREA_DEFAULT;
-HANDLE hardware_trap_event[RTAREA_TRAP_DATA_SIZE / RTAREA_TRAP_DATA_SLOT_SIZE];
+uae_sem_t hardware_trap_event[RTAREA_TRAP_DATA_SIZE / RTAREA_TRAP_DATA_SLOT_SIZE];
static uaecptr rt_trampoline_ptr, trap_entry;
extern volatile uae_atomic hwtrap_waiting;
-extern int filesystem_state;
+extern volatile int trap_mode;
DECLARE_MEMORY_FUNCTIONS(rtarea);
addrbank rtarea_bank = {
static bool istrapwait(void)
{
- for (int i = 0; i < RTAREA_TRAP_DATA_NUM; i++) {
+ for (int i = 0; i < RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM; i++) {
uae_u8 *data = rtarea_bank.baseaddr + RTAREA_TRAP_DATA + i * RTAREA_TRAP_DATA_SLOT_SIZE;
uae_u8 *status = rtarea_bank.baseaddr + RTAREA_TRAP_STATUS + i * RTAREA_TRAP_STATUS_SIZE;
if (get_long_host(data + RTAREA_TRAP_DATA_TASKWAIT) && status[3] && status[2] >= 0x80) {
static bool rtarea_trap_data(uaecptr addr)
{
- if (addr >= RTAREA_TRAP_DATA && addr < RTAREA_TRAP_DATA + RTAREA_TRAP_DATA_SIZE)
+ if (addr >= RTAREA_TRAP_DATA && addr < RTAREA_TRAP_DATA + (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM) * RTAREA_TRAP_DATA_SLOT_SIZE)
return true;
return false;
}
static bool rtarea_trap_status(uaecptr addr)
{
- if (addr >= RTAREA_TRAP_STATUS && addr < RTAREA_TRAP_STATUS + RTAREA_TRAP_DATA_NUM * RTAREA_TRAP_STATUS_SIZE)
+ if (addr >= RTAREA_TRAP_STATUS && addr < RTAREA_TRAP_STATUS + (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM) * RTAREA_TRAP_STATUS_SIZE)
return true;
return false;
}
int trap_slot = addr2 / RTAREA_TRAP_STATUS_SIZE;
if (trap_offset == 0) {
// 0 = busy wait, 1 = Wait()
- rtarea_bank.baseaddr[addr] = filesystem_state ? 1 : 0;
+ rtarea_bank.baseaddr[addr] = trap_mode ? 1 : 0;
}
} else if (addr == RTAREA_INTREQ + 0) {
rtarea_bank.baseaddr[addr] = atomic_bit_test_and_reset(&uae_int_requested, 0);
if (!rtarea_write(addr))
return;
rtarea_bank.baseaddr[addr] = value;
+ if (addr == RTAREA_INTREQ + 3) {
+ mousehack_wakeup();
+ }
if (!rtarea_trap_status(addr))
return;
addr -= RTAREA_TRAP_STATUS;
atomic_dec(&hwtrap_waiting);
if (v == 0x01 || v == 0x02) {
// signal call_hardware_trap_back()
- // FIXME: OS specific code!
- SetEvent(hardware_trap_event[trap_slot]);
+ uae_sem_post(&hardware_trap_event[trap_slot]);
}
}
}
void rtarea_reset(void)
{
- memset(rtarea_bank.baseaddr + RTAREA_TRAP_DATA, 0, RTAREA_TRAP_DATA_SIZE);
- memset(rtarea_bank.baseaddr + RTAREA_TRAP_STATUS, 0, RTAREA_TRAP_STATUS_SIZE * RTAREA_TRAP_DATA_NUM);
+ memset(rtarea_bank.baseaddr + RTAREA_TRAP_DATA, 0, RTAREA_TRAP_DATA_SLOT_SIZE * (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM));
+ memset(rtarea_bank.baseaddr + RTAREA_TRAP_STATUS, 0, RTAREA_TRAP_STATUS_SIZE * (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM));
+ trap_reset();
}
/* some quick & dirty code to fill in the rt area and save me a lot of
write_log(_T("TRAP_ENTRY = %08x\n"), trap_entry);
for (int i = 0; i < RTAREA_TRAP_DATA_SIZE / RTAREA_TRAP_DATA_SLOT_SIZE; i++) {
- hardware_trap_event[i] = CreateEvent(NULL, FALSE, FALSE, NULL);
+ uae_sem_init(&hardware_trap_event[i], 0, 0);
}
#endif
static void scsi_atapi_fixup_inquiry (struct amigascsi *as)
{
- uae_u8 *scsi_data = as->data;
+ uae_u8 *scsi_data = as->data_h;
uae_u32 scsi_len = as->len;
uae_u8 *scsi_cmd = as->cmd;
uae_u8 cmd;
int replylen = 0;
memcpy (cmd, as->cmd, as->cmd_len);
- scsi_datap = scsi_datap_org = as->len ? as->data : 0;
+ scsi_datap = scsi_datap_org = as->len ? as->data_h : 0;
if (as->sense_len > 32)
as->sense_len = 32;
return ret;
}
-int sys_command_scsi_direct (int unitnum, int type, uaecptr acmd)
+int sys_command_scsi_direct(TrapContext *ctx, int unitnum, int type, uaecptr acmd)
{
int ret, i;
struct amigascsi as = { 0 };
bank = &get_mem_bank (ap);
if (!bank || !bank->check(ap, as.len))
return IOERR_BADADDRESS;
- as.data = bank->xlateaddr (ap);
+ as.data_h = bank->xlateaddr (ap);
ap = get_long (acmd + 12);
as.cmd_len = get_word (acmd + 16);
static long curruniqid = 65536;
static struct sockd *sockdata;
-uae_u32 strncpyha (uae_u32 dst, const uae_char *src, int size)
+uae_u32 strncpyha(TrapContext *ctx, uae_u32 dst, const uae_char *src, int size)
{
uae_u32 res = dst;
- if (!addr_valid (_T("strncpyha"), dst, size))
- return res;
- while (size--) {
- put_byte (dst++, *src);
- if (!*src++)
+ if (trap_is_indirect()) {
+ trap_put_string(ctx, src, dst, size);
+ } else {
+ if (!addr_valid(_T("strncpyha"), dst, size))
return res;
+ while (size--) {
+ put_byte (dst++, *src);
+ if (!*src++)
+ return res;
+ }
}
return res;
}
-uae_u32 addstr (uae_u32 * dst, const TCHAR *src)
+uae_u32 addstr(TrapContext *ctx, uae_u32 * dst, const TCHAR *src)
{
uae_u32 res = *dst;
int len;
- char *s = ua (src);
- len = strlen (s) + 1;
- strcpyha_safe (*dst, s);
+ char *s = ua(src);
+ len = strlen(s) + 1;
+ if (trap_is_indirect()) {
+ trap_put_bytes(ctx, dst, res, len);
+ } else {
+ strcpyha_safe (*dst, s);
+ }
(*dst) += len;
xfree (s);
return res;
}
-uae_u32 addstr_ansi (uae_u32 * dst, const uae_char *src)
+uae_u32 addstr_ansi(TrapContext *ctx, uae_u32 * dst, const uae_char *src)
{
uae_u32 res = *dst;
int len;
len = strlen (src) + 1;
- strcpyha_safe (*dst, src);
+ if (trap_is_indirect()) {
+ trap_put_bytes(ctx, dst, res, len);
+ } else {
+ strcpyha_safe (*dst, src);
+ }
(*dst) += len;
return res;
}
-uae_u32 addmem (uae_u32 * dst, const uae_char *src, int len)
+uae_u32 addmem(TrapContext *ctx, uae_u32 * dst, const uae_char *src, int len)
{
uae_u32 res = *dst;
if (!src)
return 0;
-
- memcpyha_safe (*dst, (uae_u8*)src, len);
+ if (trap_is_indirect()) {
+ trap_put_bytes(ctx, src, res, len);
+ } else {
+ memcpyha_safe (*dst, (uae_u8*)src, len);
+ }
(*dst) += len;
return res;
}
for (i = 0; i < (int) (number_sys_error); i++)
- errnotextptrs[i] = addstr (&tmp1, errortexts[i]);
+ errnotextptrs[i] = addstr(ctx, &tmp1, errortexts[i]);
for (i = 0; i < (int) (number_host_error); i++)
- herrnotextptrs[i] = addstr (&tmp1, herrortexts[i]);
+ herrnotextptrs[i] = addstr(ctx, &tmp1, herrortexts[i]);
for (i = 0; i < (int) (number_sana2io_error); i++)
- sana2iotextptrs[i] = addstr (&tmp1, sana2io_errlist[i]);
+ sana2iotextptrs[i] = addstr(ctx, &tmp1, sana2io_errlist[i]);
for (i = 0; i < (int) (number_sana2wire_error); i++)
- sana2wiretextptrs[i] = addstr (&tmp1, sana2wire_errlist[i]);
- strErrptr = addstr (&tmp1, strErr);
+ sana2wiretextptrs[i] = addstr(ctx, &tmp1, sana2wire_errlist[i]);
+ strErrptr = addstr(ctx, &tmp1, strErr);
#if 0
/* @@@ someone please implement a proper interrupt handler setup here :) */
trap_put_word(ctx, resaddr + 0x0, 0x4AFC);
trap_put_long(ctx, resaddr + 0x2, resaddr);
trap_put_long(ctx, resaddr + 0x6, resaddr + 0x1A); /* Continue scan here */
- trap_put_word(ctx, resaddr + 0xA, 0x8004); /* RTF_AUTOINIT, RT_VERSION */
- trap_put_word(ctx, resaddr + 0xC, 0x0970); /* NT_LIBRARY, RT_PRI */
+ if (kickstart_version >= 37) {
+ trap_put_long(ctx, resaddr + 0xA, 0x84040900 | AFTERDOS_PRI); /* RTF_AUTOINIT, RT_VERSION NT_LIBRARY, RT_PRI */
+ } else {
+ trap_put_long(ctx, resaddr + 0xA, 0x80040905); /* RTF_AUTOINIT, RT_VERSION NT_LIBRARY, RT_PRI */
+ }
trap_put_long(ctx, resaddr + 0xE, res_name);
trap_put_long(ctx, resaddr + 0x12, res_id);
trap_put_long(ctx, resaddr + 0x16, res_init);
return console_emulation;
}
-void consolehook_ret (uaecptr condev, uaecptr oldbeginio)
+void consolehook_ret(TrapContext *ctx, uaecptr condev, uaecptr oldbeginio)
{
beginio = oldbeginio;
write_log (_T("console.device at %08X\n"), condev);
uae_start_thread (_T("consolereader"), console_thread, NULL, NULL);
}
-uaecptr consolehook_beginio (uaecptr request)
+uaecptr consolehook_beginio(TrapContext *ctx, uaecptr request)
{
- uae_u32 io_data = get_long (request + 40); // 0x28
- uae_u32 io_length = get_long (request + 36); // 0x24
- uae_u32 io_actual = get_long (request + 32); // 0x20
- uae_u32 io_offset = get_long (request + 44); // 0x2c
- uae_u16 cmd = get_word (request + 28);
+ uae_u32 io_data = trap_get_long(ctx, request + 40); // 0x28
+ uae_u32 io_length = trap_get_long(ctx, request + 36); // 0x24
+ uae_u32 io_actual = trap_get_long(ctx, request + 32); // 0x20
+ uae_u32 io_offset = trap_get_long(ctx, request + 44); // 0x2c
+ uae_u16 cmd = trap_get_word(ctx, request + 28);
if (cmd == CMD_WRITE) {
- TCHAR *buf;
- const char *src = (char*)get_real_address (io_data);
int len = io_length;
- if (io_length == -1)
- len = strlen (src);
- buf = xmalloc (TCHAR, len + 1);
- au_copy (buf, len, src);
+ char *dbuf;
+ TCHAR *buf;
+ if (len == -1) {
+ dbuf = xmalloc(char, MAX_DPATH);
+ trap_get_string(ctx, dbuf, io_data, MAX_DPATH);
+ len = strlen(dbuf);
+ } else {
+ dbuf = xmalloc(char, len);
+ trap_get_bytes(ctx, dbuf, io_data, len);
+ }
+ buf = xmalloc(TCHAR, len + 1);
+ au_copy(buf, len, dbuf);
buf[len] = 0;
- f_out (stdout, _T("%s"), buf);
- xfree (buf);
+ f_out(stdout, _T("%s"), buf);
+ xfree(buf);
+ xfree(dbuf);
} else if (cmd == CMD_READ) {
write_log (_T("%08x: CMD=%d LEN=%d OFF=%d ACT=%d\n"), request, cmd, io_length, io_offset, io_actual);
+
}
return beginio;
}
FreeMem = -210
TRAP_DATA_NUM = 4
+TRAP_DATA_SEND_NUM = 1
TRAP_DATA = $4000
TRAP_DATA_SIZE = $8000
TRAP_DATA_DATA = 4
RTAREA_SYSBASE = $3FFC
+RTAREA_GFXBASE = $3FF8
+RTAREA_INTBASE = $3FF4
+RTAREA_INTXY = $3FF0
+
+RTAREA_MOUSEHACK = $3E00
RTAREA_TRAPTASK = $FFF4
RTAREA_EXTERTASK = $FFF8
dc.l bootcode-start ;5 32
dc.l setup_exter-start ;6 36
dc.l bcplwrapper-start ;7 40
- dc.l clipboard_init-start ;8 44
+ dc.l afterdos-start ;8 44
dc.l hwtrap_install-start ;9 48
dc.l hwtrap_entry-start ; 10 52
dc.l 2
bcpl_end:
-residenthack
- movem.l d0-d2/a0-a2/a6,-(sp)
-
- move.w #$FF38,d0
- moveq #17,d1
- bsr.w getrtbase
- jsr (a0)
- tst.l d0
- beq.s .rsh
+afterdos:
+ movem.l d2-d7/a2-a6,-(sp)
move.l 4.w,a6
- cmp.w #37,20(a6)
- bcs.s .rsh
- moveq #residentcodeend-residentcodestart,d0
- move.l d0,d2
- moveq #1,d1
- jsr AllocMem(a6)
- tst.l d0
- beq.s .rsh
- move.l d0,a2
-
- move.l a2,a0
- lea residentcodestart(pc),a1
-.cp1
- move.l (a1)+,(a0)+
- subq.l #4,d2
- bne.s .cp1
-
- jsr -$0078(a6) ;Disable
- move.l a6,a1
- move.w #-$48,a0 ;InitCode
- move.l a2,d0
- jsr -$01a4(a6) ;SetFunction
- move.l d0,residentcodejump2-residentcodestart+2(a2)
- lea myafterdos(pc),a0
- move.l a0,residentcodejump1-residentcodestart+2(a2)
- jsr -$27C(a6) ;CacheClearU
- jsr -$007e(a6) ;Enable
-.rsh
- movem.l (sp)+,d0-d2/a0-a2/a6
- rts
+ lea gfxlibname(pc),a1
+ moveq #0,d0
+ jsr -$0228(a6) ;OpenLibrary
+ move.l d0,d1
+ move.w #RTAREA_GFXBASE,d0
+ bsr.w getrtbase
+ move.l d1,(a0)
+ lea intlibname(pc),a1
+ moveq #0,d0
+ jsr -$0228(a6) ;OpenLibrary
+ move.l d0,d1
+ move.w #RTAREA_INTBASE,d0
+ bsr.w getrtbase
+ move.l d1,(a0)
-myafterdos
- move.l (sp),a0
- move.l 2(a0),a0
- move.l a0,-(sp)
- jsr (a0) ;jump to original InitCode
- move.l (sp)+,a0
- addq.l #4,sp ;remove return address
- movem.l d0-d7/a1-a6,-(sp)
- move.l a6,a1
- move.l a0,d0
- move.w #-$48,a0 ;InitCode
- jsr -$01a4(a6) ;SetFunction (restore original)
bsr.w clipboard_init
bsr.w consolehook
- movem.l (sp)+,d0-d7/a1-a6
- rts ;return directly to caller
-
- cnop 0,4
-residentcodestart:
- btst #2,d0 ;RTF_AFTERDOS?
- beq.s resjump
-residentcodejump1
- jsr $f00000
-resjump
-residentcodejump2
- jmp $f00000
- cnop 0,4
-residentcodeend:
+ movem.l (sp)+,d2-d7/a2-a6
+ moveq #0,d0
+ rts
filesys_init:
movem.l d0-d7/a0-a6,-(sp)
; d0 = exter task, d1 = trap task
heartbeatvblank:
- movem.l d0-d3/a0-a2,-(sp)
+ movem.l d0-d3/a0-a4,-(sp)
move.l d0,d2
move.l d1,d3
jsr (a0)
move.l d0,a2 ; intreq
- moveq #22+3*4,d0
+ moveq #22+5*4,d0
move.l #65536+1,d1
jsr AllocMem(a6)
- move.l d0,a1
+ move.l d0,a4
+
+ lea 22(a4),a3
+ move.l a3,a1
+ move.l a2,(a1)+
+ move.l d2,(a1)+
+ move.l d3,(a1)+
+ move.w #RTAREA_INTBASE,d0
+ bsr.w getrtbase
+ move.l a0,(a1)+
+ move.w #RTAREA_INTXY,d0
+ bsr.w getrtbase
+ move.l a0,(a1)+
- lea 22(a1),a0
- move.l a2,(a0)
- move.l d2,4(a0)
- move.l d3,8(a0)
- move.l a0,14(a1)
+ move.l a3,14(a4)
- move.b #2,8(a1) ;NT_INTERRUPT
- move.b #-10,9(a1) ;priority
+ move.b #2,8(a4) ;NT_INTERRUPT
+ move.b #-10,9(a4) ;priority
lea kaname(pc),a0
- move.l a0,10(a1)
+ move.l a0,10(a4)
lea kaint(pc),a0
- move.l a0,18(a1)
+ move.l a0,18(a4)
+ move.l a4,a1
moveq #5,d0 ;INTB_VERTB
jsr -$00a8(a6)
- movem.l (sp)+,d0-d3/a0-a2
+ movem.l (sp)+,d0-d3/a0-a4
rts
kaint:
move.l (a1),a0
addq.l #1,(a0)
+ move.l 3*4(a1),a0 ;RTAREA_INTBASE
+ move.l (a0),d0
+ beq.s .noint
+ move.l d0,a0
+ cmp.w #31,20(a0) ;version < 31
+ bcs.s .noint
+ tst.l 34(a0) ;ViewPort == NULL
+ beq.s .noint
+ tst.l 60(a0) ;FirstScreen == NULL
+ beq.s .noint
+ move.l 4*4(a1),a1
+ move.l 68(a0),(a1) ;Y.W X.W
+.noint
moveq #0,d0
rts
setup_exter:
movem.l d0-d3/d7/a0-a2,-(sp)
move.l d0,d7
- bsr.w residenthack
move.l #RTAREA_INTREQ,d0
bsr.w getrtbase
move.l a0,a2
MH_IENTTAGS = (MH_IEPT+32) ;space for ient_TagList
MH_IO = (MH_IENTTAGS+16*4*2)
MH_TM = (MH_IO+4)
-MH_DATA = (MH_TM+4)
-MH_END = (MH_DATA+MH_DATA_SIZE)
+MH_DATAPTR = (MH_TM+4)
+MH_END = (MH_DATAPTR+4)
MH_MOUSEHACK = 0
MH_TABLET = 1
sub.l a1,a1
jsr -$0126(a6) ;FindTask
- move.l d0,a4
+ move.l d0,a2
moveq #20,d0
- move.l a4,a1
+ move.l a2,a1
jsr -$012c(a6) ;SetTaskPri
moveq #0,d0
jsr AllocMem(a6)
move.l d0,a5
+ move.w #RTAREA_MOUSEHACK,d0
+ bsr.w getrtbase
+ move.l a0,MH_DATAPTR(a5)
+ move.l a0,a4
+
lea MH_FOO(a5),a3
move.l a6,MH_FOO_EXECBASE(a3)
- move.l a4,MH_FOO_TASK(a3)
+ move.l a2,MH_FOO_TASK(a3)
move.l d6,MH_FOO_MASK(a3)
moveq #-1,d0
move.w d0,MH_FOO_CNT(a3)
- ; send data structure address
+ ; send data structure address
move.w #$FF38,d0
moveq #5,d1
bsr.w getrtbase
- move.l a5,d0
- add.l #MH_DATA,d0
+ move.l a4,d0
jsr (a0)
lea MH_INT(a5),a1
jsr -$0228(a6) ;OpenLibrary
move.l d0,MH_FOO_INTBASE(a3)
beq.s mhloop
+ move.l d0,d1
+ move.w #RTAREA_INTBASE,d0
+ bsr.w getrtbase
+ move.l d1,(a0)
.intyes
tst.l MH_FOO_GFXBASE(a3)
bne.s .gfxyes
jsr -$0228(a6) ;OpenLibrary
move.l d0,MH_FOO_GFXBASE(a3)
beq.w mhloop
+ move.l d0,d1
+ move.w #RTAREA_GFXBASE,d0
+ bsr.w getrtbase
+ move.l d1,(a0)
.gfxyes
tst.l MH_IO(a5)
move.l d0,d2
jsr -$008a(a6) ;Permit
tst.l d2
- beq.s mhloop
+ beq.w mhloop
lea inp_dev(pc),a0
moveq #0,d0
moveq #0,d1
cmp.w #36,d7
bcs.s .nodims
+ cmp.w #50,d7
+ bcc.s .nodims
subq.l #1,MH_FOO_LIMITCNT(a3)
bpl.s .nodims
move.l a3,a0
move.l #22,36(a1) ;sizeof(struct InputEvent)
move.l a2,40(a1)
- move.b MH_E+MH_DATA(a5),d0
+ move.b MH_E(a4),d0
cmp.w #39,d7
bcs.w .notablet
btst #MH_TABLET,d0
clr.w 6(a2) ;ie_Code
bsr.w buttonstoqual
- move.w MH_X+MH_DATA(a5),12+2(a0) ;ient_TabletX
+ move.w MH_X(a4),12+2(a0) ;ient_TabletX
clr.w 16(a0)
- move.w MH_Y++MH_DATA(a5),16+2(a0) ;ient_TabletY
+ move.w MH_Y(a4),16+2(a0) ;ient_TabletY
clr.w 20(a0)
- move.w MH_MAXX+MH_DATA(a5),20+2(a0) ;ient_RangeX
+ move.w MH_MAXX(a4),20+2(a0) ;ient_RangeX
clr.w 24(a0)
- move.w MH_MAXY+MH_DATA(a5),24+2(a0) ;ient_RangeY
+ move.w MH_MAXY(a4),24+2(a0) ;ient_RangeY
lea MH_IENTTAGS(a5),a1
move.l a1,28(a0) ;ient_TagList
move.l #TABLETA_Pressure,(a1)+
- move.w MH_PRESSURE+MH_DATA(a5),d0
+ move.w MH_PRESSURE(a4),d0
ext.l d0
asl.l #8,d0
move.l d0,(a1)+
move.l #TABLETA_ButtonBits,(a1)+
- move.l MH_BUTTONBITS+MH_DATA(a5),(a1)+
+ move.l MH_BUTTONBITS(a4),(a1)+
moveq #0,d0
- move.w MH_RESX+MH_DATA(a5),d0
+ move.w MH_RESX(a4),d0
bmi.s .noresx
move.l #TABLETA_ResolutionX,(a1)+
move.l d0,(a1)+
.noresx
- move.w MH_RESY+MH_DATA(a5),d0
+ move.w MH_RESY(a4),d0
bmi.s .noresy
move.l #TABLETA_ResolutionY,(a1)+
move.l d0,(a1)+
.noresy
- move.w MH_MAXZ+MH_DATA(a5),d0
+ move.w MH_MAXZ(a4),d0
bmi.s .noz
move.l #TABLETA_RangeZ,(a1)+
move.l d0,(a1)+
- move.w MH_Z+MH_DATA(a5),d0
+ move.w MH_Z(a4),d0
move.l #TABLETA_TabletZ,(a1)+
move.l d0,(a1)+
.noz
- move.w MH_MAXAX+MH_DATA(a5),d0
+ move.w MH_MAXAX(a4),d0
bmi.s .noax
move.l #TABLETA_AngleX,(a1)+
- move.w MH_AX+MH_DATA(a5),d0
+ move.w MH_AX(a4),d0
ext.l d0
asl.l #8,d0
move.l d0,(a1)+
.noax
- move.w MH_MAXAY+MH_DATA(a5),d0
+ move.w MH_MAXAY(a4),d0
bmi.s .noay
move.l #TABLETA_AngleY,(a1)+
- move.w MH_AY+MH_DATA(a5),d0
+ move.w MH_AY(a4),d0
ext.l d0
asl.l #8,d0
move.l d0,(a1)+
.noay
- move.w MH_MAXAZ+MH_DATA(a5),d0
+ move.w MH_MAXAZ(a4),d0
bmi.s .noaz
move.l #TABLETA_AngleZ,(a1)+
- move.w MH_AZ+MH_DATA(a5),d0
+ move.w MH_AZ(a4),d0
ext.l d0
asl.l #8,d0
move.l d0,(a1)+
.noaz
moveq #0,d0
- move.w MH_INPROXIMITY+MH_DATA(a5),d0
+ move.w MH_INPROXIMITY(a4),d0
bmi.s .noproxi
move.l #TABLETA_InProximity,(a1)+
move.l d0,(a1)+
;create mouse button events if button state changed
move.w #$68,d3 ;IECODE_LBUTTON->IECODE_RBUTTON->IECODE_MBUTTON
moveq #1,d2
- move.l MH_BUTTONBITS+MH_DATA(a5),d4
+ move.l MH_BUTTONBITS(a4),d4
.nextbut
move.l d4,d0
and.l d2,d0
.notablet
- move.b MH_E+MH_DATA(a5),d0
+ move.b MH_E(a4),d0
btst #MH_MOUSEHACK,d0
beq.w mhloop
move.l MH_FOO_INTBASE(a3),a0
- move.w MH_ABSX+MH_DATA(a5),d0
+ move.w MH_ABSX(a4),d0
move.w 34+14(a0),d1
add.w d1,d1
sub.w d1,d0
.xn
move.w d0,10(a2)
- move.w MH_ABSY+MH_DATA(a5),d0
+ move.w MH_ABSY(a4),d0
move.w 34+12(a0),d1
add.w d1,d1
sub.w d1,d0
buttonstoqual:
;IEQUALIFIER_MIDBUTTON=0x1000/IEQUALIFIER_RBUTTON=0x2000/IEQUALIFIER_LEFTBUTTON=0x4000
- move.l MH_BUTTONBITS+MH_DATA(a5),d1
+ move.l MH_BUTTONBITS(a4),d1
moveq #0,d0
btst #0,d1
beq.s .btq1
beq.s .l1
tst.l MH_TM(a1)
beq.s .l1
- move.w MH_CNT+MH_DATA(a1),d0
+ move.l MH_DATAPTR(a1),a0
+ move.w MH_CNT(a0),d0
cmp.w MH_FOO+MH_FOO_CNT(a1),d0
beq.s .l2
move.w d0,MH_FOO+MH_FOO_CNT(a1)
.l1
+ move.l a1,-(sp)
move.l MH_FOO+MH_FOO_EXECBASE(a1),a6
move.l MH_FOO+MH_FOO_MASK(a1),d0
move.l MH_FOO+MH_FOO_TASK(a1),a1
jsr -$0144(a6) ; Signal
+ move.l (sp)+,a1
.l2
subq.w #1,MH_FOO+MH_FOO_ALIVE(a1)
bpl.s .l3
move.w #50,MH_FOO+MH_FOO_ALIVE(a1)
- move.w #$FF38,d0
- moveq #2,d1
+ move.w #RTAREA_INTREQ+3,d0
bsr.w getrtbase
- jsr (a0)
+ st (a0)
.l3
lea $dff000,a0
moveq #0,d0
move.l a2,14(a1)
lea.l hwtrap_interrupt(pc),a0
move.l a0,18(a1)
- move.w #$0270,8(a1)
+ move.w #$027a,8(a1)
moveq #13,d0 ;EXTER
jsr -168(a6) ; AddIntServer
movem.l (sp)+,a2/a6
move.l a2,d0
clr.w d0
move.l d0,a0
- moveq #TRAP_DATA_NUM-1,d1
+ moveq #TRAP_DATA_NUM+TRAP_DATA_SEND_NUM-1,d1
move.l a0,a1
move.l RTAREA_SYSBASE(a0),a6
add.l #TRAP_DATA,a0
#define TRACING_ENABLED 1
int log_filesys = 0;
-int filesystem_state;
-
#define TRAPMD 1
#if TRACING_ENABLED
static uaecptr bootrom_start;
static uae_u32 fsdevname, fshandlername, filesys_configdev;
static uae_u32 cdfs_devname, cdfs_handlername;
+static uaecptr afterdos_name, afterdos_id, afterdos_initcode;
static int filesys_in_interrupt;
static uae_u32 mountertask;
static int automountunit = -1;
write_log (_T("FILESYS: delayed insert %d: '%s' ('%s')\n"), u->unit, volume ? volume : _T("<none>"), rootdir);
}
+static uae_u32 filesys_eject_cb(TrapContext *ctx, void *ud)
+{
+ UnitInfo *ui = (UnitInfo*)ud;
+ Unit *u = ui->self;
+
+ if (!filesys_isvolume(ctx, u))
+ return 0;
+ u->mount_changed = -1;
+ u->mountcount++;
+ write_log(_T("FILESYS: volume '%s' removal request\n"), u->ui.volname);
+ // -1 = remove, -2 = remove + remove device node
+ trap_put_byte(ctx, u->volume + 172 - 32, ui->unit_type == UNIT_CDFS ? -1 : -2);
+ uae_Signal(trap_get_long(ctx, u->volume + 176 - 32), 1 << 13);
+ return 1;
+}
int filesys_eject(int nr)
{
UnitInfo *ui = &mountinfo.ui[nr];
Unit *u = ui->self;
- TrapContext *ctx = NULL;
if (!mountertask || u->mount_changed)
return 0;
return 0;
if (!is_virtual (nr))
return 0;
- if (!filesys_isvolume(ctx, u))
- return 0;
- u->mount_changed = -1;
- u->mountcount++;
- write_log (_T("FILESYS: volume '%s' removal request\n"), u->ui.volname);
- // -1 = remove, -2 = remove + remove device node
- trap_put_byte(ctx, u->volume + 172 - 32, ui->unit_type == UNIT_CDFS ? -1 : -2);
- uae_Signal(trap_get_long(ctx, u->volume + 176 - 32), 1 << 13);
+ trap_callback(filesys_eject_cb, ui);
return 1;
}
{
TrapContext *ctx = NULL;
- if (!currprefs.tod_hack || !rtarea_base)
+ if (!currprefs.tod_hack || !rtarea_bank.baseaddr)
return;
- heartbeat = trap_get_long(ctx, rtarea_base + RTAREA_HEARTBEAT);
+ heartbeat = get_long_host(rtarea_bank.baseaddr + RTAREA_HEARTBEAT);
heartbeat_task = 1;
heartbeat_count = 10;
}
if (is_virtual (nr)) {
ui->unit_pipe = xmalloc (smp_comm_pipe, 1);
ui->back_pipe = xmalloc (smp_comm_pipe, 1);
- init_comm_pipe (ui->unit_pipe, 100, 3);
+ init_comm_pipe (ui->unit_pipe, 300, 3);
init_comm_pipe (ui->back_pipe, 100, 1);
uae_start_thread (_T("filesys"), filesys_thread, (void *)ui, &ui->tid);
}
return 1 | (late ? 2 : 0);
}
+static bool is_writeprotected(Unit *unit)
+{
+ return unit->ui.readonly || unit->ui.locked || currprefs.harddrive_read_only;
+}
+
static void do_info(TrapContext *ctx, Unit *unit, dpacket *packet, uaecptr info, bool disk_info)
{
struct fs_usage fsu;
}
put_long_host(buf, 0); /* errors */
put_long_host(buf + 4, nr); /* unit number */
- put_long_host(buf + 8, unit->ui.readonly || unit->ui.locked ? 80 : 82); /* state */
+ put_long_host(buf + 8, is_writeprotected(unit) ? 80 : 82); /* state */
put_long_host(buf + 20, blocksize); /* bytesperblock */
put_long_host(buf + 32, 0); /* inuse */
if (unit->ui.unknown_media) {
return;
}
if (create != 2) {
- if ((((mode & aino->amigaos_mode) & A_FIBF_WRITE) != 0 || unit->ui.readonly || unit->ui.locked)
+ if ((((mode & aino->amigaos_mode) & A_FIBF_WRITE) != 0 || is_writeprotected(unit))
&& fallback)
{
mode &= ~A_FIBF_WRITE;
}
/* Kick 1.3 doesn't check read and write access bits - maybe it would be
* simpler just not to do that either. */
- if ((mode & A_FIBF_WRITE) != 0 && (unit->ui.readonly || unit->ui.locked)) {
+ if ((mode & A_FIBF_WRITE) != 0 && is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
: O_RDWR));
/* the files on CD really can have the write-bit set. */
- if (unit->ui.readonly || unit->ui.locked)
+ if (is_writeprotected(unit))
openmode = O_RDONLY;
fd = fs_openfile (unit, aino, openmode | O_BINARY);
static void action_find_output(TrapContext *ctx, Unit *unit, dpacket *packet)
{
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
static void action_find_write(TrapContext *ctx, Unit *unit, dpacket *packet)
{
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
gui_flicker_led (UNIT_LED(unit), unit->unit, 2);
TRACE((_T("ACTION_WRITE(%s,0x%x,%d)\n"), k->aino->nname, addr, size));
- if (unit->ui.readonly || unit->ui.locked || k->aino->vfso) {
+ if (is_writeprotected(unit) || k->aino->vfso) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
TRACE((_T("ACTION_SET_PROTECT(0x%x,\"%s\",0x%x)\n"), lock, bstr(ctx, unit, name), mask));
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
a_inode *a;
int err;
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
TRACE((_T("ACTION_CREATE_DIR(0x%x,\"%s\")\n"), lock, bstr(ctx, unit, name)));
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
TRACE((_T("ACTION_DELETE_OBJECT(0x%x,\"%s\")\n"), lock, bstr(ctx, unit, name)));
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
TRACE((_T("ACTION_SET_DATE(0x%x,\"%s\")\n"), lock, bstr(ctx, unit, name)));
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
TRACE((_T("ACTION_RENAME_OBJECT(0x%x,\"%s\","), lock1, bstr(ctx, unit, name1)));
TRACE((_T("0x%x,\"%s\")\n"), lock2, bstr(ctx, unit, name2)));
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
TRACE((_T("ACTION_RENAME_DISK(\"%s\")\n"), bstr(ctx, unit, name)));
- if (unit->ui.readonly || unit->ui.locked) {
+ if (is_writeprotected(unit)) {
PUT_PCK_RES1 (packet, DOS_FALSE);
PUT_PCK_RES2 (packet, ERROR_DISK_WRITE_PROTECTED);
return;
{
if (isrestore ())
return;
- filesystem_state = 0;
load_injected_icons();
filesys_reset2 ();
initialize_mountinfo ();
return 0;
}
+static uaecptr add_resident(TrapContext *ctx, uaecptr resaddr, uaecptr myres)
+{
+ uaecptr sysbase, reslist, prevjmp, resptr;
+
+ uae_s8 myrespri = trap_get_byte(ctx, myres + 13); // rt_Pri
+
+ sysbase = trap_get_long(ctx, 4);
+ prevjmp = 0;
+ reslist = trap_get_long(ctx, sysbase + 300); // ResModules
+ for (;;) {
+ resptr = trap_get_long(ctx, reslist);
+ if (!resptr)
+ break;
+ if (resptr & 0x80000000) {
+ prevjmp = reslist;
+ reslist = resptr & 0x7fffffff;
+ continue;
+ }
+ uae_s8 respri = trap_get_byte(ctx, resptr + 13); // rt_Pri
+ uaecptr resname = trap_get_long(ctx, resptr + 14); // rt_Name
+ if (resname) {
+ uae_char resnamebuf[256];
+ trap_get_string(ctx, resnamebuf, resname, sizeof resnamebuf);
+ if (myrespri >= respri)
+ break;
+ }
+ prevjmp = 0;
+ reslist += 4;
+ }
+ if (prevjmp) {
+ trap_put_long(ctx, prevjmp, 0x80000000 | resaddr);
+ } else {
+ trap_put_long(ctx, reslist, 0x80000000 | resaddr);
+ }
+ trap_put_long(ctx, resaddr, myres);
+ trap_put_long(ctx, resaddr + 4, resptr);
+ trap_put_long(ctx, resaddr + 8, 0x80000000 | (reslist + 4));
+ resaddr += 3 * 4;
+ return resaddr;
+}
+
static uae_u32 REGPARAM2 filesys_diagentry (TrapContext *ctx)
{
UnitInfo *uip = mountinfo.ui;
uaecptr resaddr = trap_get_areg(ctx, 2);
uaecptr expansion = trap_get_areg(ctx, 5);
- uaecptr start = resaddr;
- uaecptr residents, tmp;
+ uaecptr first_resident, last_resident, tmp;
uaecptr resaddr_hack = 0;
uae_u8 *baseaddr;
write_log (_T("filesystem: diagentry %08x configdev %08x\n"), resaddr, filesys_configdev);
- tmp = resaddr;
+ first_resident = resaddr;
if (ROM_hardfile_resid != 0) {
/* Build a struct Resident. This will set up and initialize
* the uae.device */
}
resaddr += 0x1A;
if (!KS12_BOOT_HACK || expansion)
- tmp = resaddr;
+ first_resident = resaddr;
/* The good thing about this function is that it always gets called
* when we boot. So we could put all sorts of stuff that wants to be done
* here.
* Resident structures and call InitResident() for them at the end of the
* diag entry. */
+ if (kickstart_version >= 37) {
+ trap_put_word(ctx, resaddr + 0x0, 0x4afc);
+ trap_put_long(ctx, resaddr + 0x2, resaddr);
+ trap_put_long(ctx, resaddr + 0x6, resaddr + 0x1A);
+ trap_put_word(ctx, resaddr + 0xA, 0x0432); /* RTF_AFTERDOS; Version 50 */
+ trap_put_word(ctx, resaddr + 0xC, 0x0000 | AFTERDOS_INIT_PRI); /* NT_UNKNOWN; pri */
+ trap_put_long(ctx, resaddr + 0xE, afterdos_name);
+ trap_put_long(ctx, resaddr + 0x12, afterdos_id);
+ trap_put_long(ctx, resaddr + 0x16, afterdos_initcode);
+ resaddr += 0x1A;
+ }
+
resaddr = uaeres_startup(ctx, resaddr);
#ifdef BSDSOCKET
resaddr = bsdlib_startup(ctx, resaddr);
resaddr = tabletlib_startup(ctx, resaddr);
#endif
+ last_resident = resaddr;
+#if 0
/* scan for Residents and return pointer to array of them */
- residents = resaddr;
- while (tmp < residents && tmp >= start) {
+ tmp = first_resident;
+ while (tmp < last_resident && tmp >= first_resident) {
if (trap_get_word(ctx, tmp) == 0x4AFC &&
trap_get_long(ctx, tmp + 0x2) == tmp) {
trap_put_word(ctx, resaddr, 0x227C); /* move.l #tmp,a1 */
tmp += 2;
}
}
+#endif
+
/* call setup_exter */
trap_put_word(ctx, resaddr + 0, 0x7000 | (currprefs.uaeboard > 1 ? 3 : 1)); /* moveq #x,d0 */
trap_put_word(ctx, resaddr + 2, 0x2079); /* move.l RTAREA_BASE+setup_exter,a0 */
put_word_host(baseaddr + 0x2112, 1 | 2 | 8 | 16);
}
- trap_set_areg(ctx, 0, residents);
+ trap_set_areg(ctx, 0, last_resident);
if (currprefs.uae_hide_autoconfig && expansion) {
bool found = true;
}
}
+#if 1
+ tmp = first_resident;
+ while (tmp < last_resident && tmp >= first_resident) {
+ if (trap_get_word(ctx, tmp) == 0x4AFC && trap_get_long(ctx, tmp + 0x2) == tmp) {
+ resaddr = add_resident(ctx, resaddr, tmp);
+ tmp = trap_get_long(ctx, tmp + 0x6);
+ } else {
+ tmp += 2;
+ }
+ }
+ //activate_debugger();
+#endif
+
return 1;
}
if (trap_get_dreg(ctx, 3) >= 0)
uip->startup = trap_get_long(ctx, devicenode + 28);
-
- if (!filesystem_state) {
- write_log(_T("CHANGED!\n"));
- filesystem_state = 1;
- }
-
-
return devicenode;
}
uaecptr diminfo = trap_get_areg(ctx, 2);
uaecptr dispinfo = trap_get_areg(ctx, 3);
uaecptr vp = trap_get_areg(ctx, 4);
- return input_mousehack_status(mode, diminfo, dispinfo, vp, trap_get_dreg(ctx, 2));
+ return input_mousehack_status(ctx, mode, diminfo, dispinfo, vp, trap_get_dreg(ctx, 2));
} else if (mode == 10) {
- amiga_clipboard_die();
+ amiga_clipboard_die(ctx);
} else if (mode == 11) {
- amiga_clipboard_got_data(trap_get_areg(ctx, 2), trap_get_dreg(ctx, 2), trap_get_dreg(ctx, 0) + 8);
+ amiga_clipboard_got_data(ctx, trap_get_areg(ctx, 2), trap_get_dreg(ctx, 2), trap_get_dreg(ctx, 0) + 8);
} else if (mode == 12) {
- return amiga_clipboard_want_data();
+ return amiga_clipboard_want_data(ctx);
} else if (mode == 13) {
- return amiga_clipboard_proc_start();
+ return amiga_clipboard_proc_start(ctx);
} else if (mode == 14) {
- amiga_clipboard_task_start(trap_get_dreg(ctx, 0));
+ amiga_clipboard_task_start(ctx, trap_get_dreg(ctx, 0));
} else if (mode == 15) {
- amiga_clipboard_init();
+ amiga_clipboard_init(ctx);
} else if (mode == 16) {
uaecptr a2 = trap_get_areg(ctx, 2);
input_mousehack_mouseoffset(a2);
v |= 1;
if (consolehook_activate())
v |= 2;
+ trap_dos_active();
return v;
} else if (mode == 18) {
put_long_host(rtarea_bank.baseaddr + RTAREA_EXTERTASK, trap_get_dreg(ctx, 0));
put_long_host(rtarea_bank.baseaddr + RTAREA_TRAPTASK, trap_get_dreg(ctx, 2));
return rtarea_base + RTAREA_HEARTBEAT;
} else if (mode == 101) {
- consolehook_ret(trap_get_areg(ctx, 1), trap_get_areg(ctx, 2));
+ consolehook_ret(ctx, trap_get_areg(ctx, 1), trap_get_areg(ctx, 2));
} else if (mode == 102) {
- uaecptr ret = consolehook_beginio(trap_get_areg(ctx, 1));
+ uaecptr ret = consolehook_beginio(ctx, trap_get_areg(ctx, 1));
trap_put_long(ctx, trap_get_areg(ctx, 7) + 4 * 4, ret);
} else {
write_log (_T("Unknown mousehack hook %d\n"), mode);
fshandlername = ds_bstr_ansi ("uaefs");
cdfs_devname = ds_ansi ("uaescsi.device");
cdfs_handlername = ds_bstr_ansi ("uaecdfs");
+ afterdos_name = ds_ansi("UAE afterdos");
+ afterdos_id = ds_ansi("UAE afterdos 0.1");
ROM_filesys_diagentry = here ();
calltrap (deftrap2 (filesys_diagentry, 0, _T("filesys_diagentry")));
EXPANSION_bootcode = bootrom_start + bootrom_header + items * 4 - 4;
b = bootrom_start + bootrom_header + 3 * 4 - 4;
filesys_initcode = bootrom_start + dlg (b) + bootrom_header - 4;
+ afterdos_initcode = filesys_get_entry(8);
}
#ifdef _WIN32
db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x60); db(0x02); db(0x00); db(0x0b); db(0x60); db(0x00); db(0x0d); db(0x90);
- db(0x00); db(0x00); db(0x0a); db(0xf6); db(0x00); db(0x00); db(0x01); db(0x0c);
- db(0x00); db(0x00); db(0x04); db(0x4a); db(0x00); db(0x00); db(0x00); db(0x2c);
- db(0x00); db(0x00); db(0x05); db(0x76); db(0x00); db(0x00); db(0x1b); db(0xd0);
- db(0x00); db(0x00); db(0x16); db(0x38); db(0x00); db(0x00); db(0x1c); db(0x2c);
- db(0x00); db(0x00); db(0x1c); db(0x7e); db(0x43); db(0xfa); db(0x20); db(0x4a);
+ db(0x60); db(0x02); db(0x00); db(0x0b); db(0x60); db(0x00); db(0x0d); db(0x62);
+ db(0x00); db(0x00); db(0x0a); db(0xc8); db(0x00); db(0x00); db(0x00); db(0xa8);
+ db(0x00); db(0x00); db(0x03); db(0xe6); db(0x00); db(0x00); db(0x00); db(0x2c);
+ db(0x00); db(0x00); db(0x05); db(0x4c); db(0x00); db(0x00); db(0x1b); db(0xd0);
+ db(0x00); db(0x00); db(0x00); db(0x64); db(0x00); db(0x00); db(0x1c); db(0x2c);
+ db(0x00); db(0x00); db(0x1c); db(0x7e); db(0x43); db(0xfa); db(0x20); db(0x4e);
db(0x4e); db(0xae); db(0xff); db(0xa0); db(0x20); db(0x40); db(0x20); db(0x28);
db(0x00); db(0x16); db(0x20); db(0x40); db(0x4e); db(0x90); db(0x4e); db(0x75);
db(0x00); db(0x00); db(0x00); db(0x07); db(0x00); db(0x00); db(0x00); db(0x00);
db(0x00); db(0x00); db(0x00); db(0x07); db(0xe5); db(0x89); db(0x2e); db(0x01);
- db(0x60); db(0x00); db(0x0d); db(0x46); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x60); db(0x00); db(0x0d); db(0x18); db(0x00); db(0x00); db(0x00); db(0x00);
db(0x00); db(0x00); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x04);
- db(0x00); db(0x00); db(0x00); db(0x02); db(0x48); db(0xe7); db(0xe0); db(0xe2);
- db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00);
- db(0x1e); db(0xec); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x4c);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x0c); db(0x6e); db(0x00); db(0x25);
- db(0x00); db(0x14); db(0x65); db(0x40); db(0x70); db(0x14); db(0x24); db(0x00);
- db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
- db(0x67); db(0x32); db(0x24); db(0x40); db(0x20); db(0x4a); db(0x43); db(0xfa);
- db(0x00); db(0x60); db(0x20); db(0xd9); db(0x59); db(0x82); db(0x66); db(0xfa);
- db(0x4e); db(0xae); db(0xff); db(0x88); db(0x22); db(0x4e); db(0x30); db(0x7c);
- db(0xff); db(0xb8); db(0x20); db(0x0a); db(0x4e); db(0xae); db(0xfe); db(0x5c);
- db(0x25); db(0x40); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0x00); db(0x14);
- db(0x25); db(0x48); db(0x00); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x84);
- db(0x4e); db(0xae); db(0xff); db(0x82); db(0x4c); db(0xdf); db(0x47); db(0x07);
- db(0x4e); db(0x75); db(0x20); db(0x57); db(0x20); db(0x68); db(0x00); db(0x02);
- db(0x2f); db(0x08); db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x58); db(0x8f);
- db(0x48); db(0xe7); db(0xff); db(0x7e); db(0x22); db(0x4e); db(0x20); db(0x08);
- db(0x30); db(0x7c); db(0xff); db(0xb8); db(0x4e); db(0xae); db(0xfe); db(0x5c);
- db(0x61); db(0x00); db(0x15); db(0x4e); db(0x61); db(0x00); db(0x19); db(0x14);
- db(0x4c); db(0xdf); db(0x7e); db(0xff); db(0x4e); db(0x75); db(0x00); db(0x00);
- db(0x08); db(0x00); db(0x00); db(0x02); db(0x67); db(0x06); db(0x4e); db(0xb9);
- db(0x00); db(0xf0); db(0x00); db(0x00); db(0x4e); db(0xf9); db(0x00); db(0xf0);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7); db(0xff); db(0xfe);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xec);
- db(0x61); db(0x00); db(0x1e); db(0x42); db(0x2a); db(0x50); db(0x7a); db(0x00);
- db(0x70); db(0x00); db(0x0c); db(0x6e); db(0x00); db(0x21); db(0x00); db(0x14);
- db(0x65); db(0x1c); db(0x43); db(0xfa); db(0x1f); db(0x7b); db(0x70); db(0x24);
- db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x1f); db(0x6b); db(0x70); db(0x00);
- db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40);
- db(0xc9); db(0x4e); db(0x20); db(0x0e); db(0x67); db(0x3c); db(0x08); db(0x2d);
- db(0x00); db(0x04); db(0x01); db(0x13); db(0x66); db(0x34); db(0x4e); db(0xae);
- db(0xff); db(0xd0); db(0x4a); db(0x80); db(0x67); db(0x2c); db(0x20); db(0x40);
- db(0x43); db(0xfa); db(0xfe); db(0x9e); db(0x20); db(0x09); db(0x42); db(0x40);
- db(0x21); db(0x40); db(0x00); db(0x20); db(0x21); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x00); db(0x00); db(0x24); db(0x31); db(0x7c); db(0x01); db(0x04);
- db(0x00); db(0x10); db(0x31); db(0x7c); db(0x07); db(0xdb); db(0x00); db(0x14);
- db(0x70); db(0x01); db(0x21); db(0x40); db(0x00); db(0x16); db(0x4e); db(0xae);
- db(0xff); db(0xe2); db(0xc9); db(0x4e); db(0x4a); db(0xad); db(0x01); db(0x0c);
- db(0x67); db(0x00); db(0x00); db(0x62); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x27); db(0x4c);
- db(0x01); db(0xa8); db(0x7c); db(0x00); db(0xbc); db(0x6d); db(0x01); db(0x0e);
- db(0x64); db(0x32); db(0x2f); db(0x06); db(0x2e); db(0x2d); db(0x01); db(0x10);
- db(0x4a); db(0x45); db(0x67); db(0x04); db(0x08); db(0xc7); db(0x00); db(0x02);
- db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00); db(0x09); db(0x30);
- db(0x26); db(0x5f); db(0x27); db(0x41); db(0x01); db(0xa4); db(0x0c); db(0x80);
- db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46);
- db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xd6); db(0x2c); db(0x1f);
- db(0x52); db(0x46); db(0x60); db(0xc8); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x22); db(0x4b); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x20); db(0x0c); db(0x67); db(0x06); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x0c); db(0x6e); db(0x00); db(0x22); db(0x00); db(0x14);
- db(0x65); db(0x6e); db(0x78); db(0x03); db(0x0c); db(0x6e); db(0x00); db(0x24);
- db(0x00); db(0x14); db(0x65); db(0x04); db(0x00); db(0x44); db(0x01); db(0x00);
- db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x1d); db(0x3e);
- db(0x4e); db(0x90); db(0x2a); db(0x00); db(0x20); db(0x49); db(0x20); db(0x01);
- db(0x67); db(0x0c); db(0x22); db(0x04); db(0x74); db(0xfb); db(0x43); db(0xfa);
- db(0x1e); db(0x9d); db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x43); db(0xf9);
- db(0x00); db(0x21); db(0x00); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xea);
- db(0x4a); db(0x80); db(0x66); db(0x18); db(0x22); db(0x04); db(0x74); db(0xf6);
- db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00); db(0x20); db(0x05);
- db(0x90); db(0x88); db(0x65); db(0x08); db(0x67); db(0x06); db(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x1d); db(0xc3);
- db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00);
- db(0x0e); db(0x86); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x1c); db(0xe8); db(0x4e); db(0x90);
- db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00);
- db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa);
- db(0x1d); db(0xe8); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a);
- db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62);
- db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x1d); db(0x8c);
- db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c);
- db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8);
- db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c);
- db(0xff); db(0x48); db(0x61); db(0x00); db(0x1c); db(0x70); db(0x4e); db(0x90);
- db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x09); db(0xfa);
- db(0x70); db(0x00); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x7e); db(0x00); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0xf0); db(0x00); db(0x61); db(0x00); db(0x1c); db(0x48); db(0x22); db(0x48);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x40); db(0x00); db(0x61); db(0x00);
- db(0x1c); db(0x3c); db(0x7c); db(0x03); db(0x4a); db(0x29); db(0x00); db(0x03);
- db(0x67); db(0x48); db(0x0c); db(0x29); db(0x00); db(0xfe); db(0x00); db(0x07);
- db(0x66); db(0x40); db(0x52); db(0x87); db(0x49); db(0xe8); db(0x00); db(0x50);
- db(0x4b); db(0xe9); db(0x00); db(0x04); db(0x48); db(0xe7); db(0x03); db(0xce);
- db(0x38); db(0x15); db(0x4c); db(0xec); db(0x07); db(0x00); db(0x00); db(0x04);
- db(0x4c); db(0xec); db(0x00); db(0x07); db(0x00); db(0x04); db(0x0c); db(0x44);
- db(0x00); db(0x12); db(0x66); db(0x06); db(0x61); db(0x00); db(0x1b); db(0x7e);
- db(0x60); db(0x0a); db(0x0c); db(0x44); db(0x00); db(0x13); db(0x66); db(0x04);
- db(0x61); db(0x00); db(0x1b); db(0x8c); db(0x4c); db(0xdf); db(0x73); db(0xc0);
- db(0x29); db(0x40); db(0x00); db(0x04); db(0x1b); db(0x7c); db(0x00); db(0x02);
- db(0x00); db(0x03); db(0xd0); db(0xfc); db(0x20); db(0x00); db(0xd2); db(0xfc);
- db(0x00); db(0x08); db(0x51); db(0xce); db(0xff); db(0xa8); db(0x4a); db(0x87);
- db(0x67); db(0x00); db(0xff); db(0x7e); db(0x60); db(0x00); db(0xff); db(0x84);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x7e); db(0x0a);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x1b); db(0xbe);
- db(0x20); db(0x07); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0xff); db(0xe4); db(0x52); db(0x47); db(0x0c); db(0x40); db(0x00); db(0x01);
- db(0x6d); db(0x00); db(0xff); db(0xe6); db(0x6e); db(0x06); db(0x4e); db(0xae);
- db(0xfe); db(0x92); db(0x60); db(0xdc); db(0x0c); db(0x40); db(0x00); db(0x02);
- db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae); db(0xfe); db(0xbc);
- db(0x60); db(0xce); db(0x0c); db(0x40); db(0x00); db(0x03); db(0x6e); db(0x06);
- db(0x4e); db(0xae); db(0xfe); db(0x86); db(0x60); db(0xc2); db(0x0c); db(0x40);
- db(0x00); db(0x04); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x4c);
- db(0x60); db(0xb6); db(0x0c); db(0x40); db(0x00); db(0x05); db(0x6e); db(0xb0);
- db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x70); db(0x26); db(0x22); db(0x3c);
+ db(0x00); db(0x00); db(0x00); db(0x02); db(0x48); db(0xe7); db(0x3f); db(0x3e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x20); db(0x2c);
+ db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x22); db(0x00);
+ db(0x30); db(0x3c); db(0x3f); db(0xf8); db(0x61); db(0x00); db(0x1e); db(0xe2);
+ db(0x20); db(0x81); db(0x43); db(0xfa); db(0x20); db(0x04); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x22); db(0x00); db(0x30); db(0x3c);
+ db(0x3f); db(0xf4); db(0x61); db(0x00); db(0x1e); db(0xcc); db(0x20); db(0x81);
+ db(0x61); db(0x00); db(0x15); db(0x9e); db(0x61); db(0x00); db(0x19); db(0x64);
+ db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x1e); db(0xaa);
+ db(0x2a); db(0x50); db(0x7a); db(0x00); db(0x70); db(0x00); db(0x0c); db(0x6e);
+ db(0x00); db(0x21); db(0x00); db(0x14); db(0x65); db(0x1c); db(0x43); db(0xfa);
+ db(0x1f); db(0xe3); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0c); db(0x43); db(0xfa);
+ db(0x1f); db(0xd3); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x28); db(0x40); db(0xc9); db(0x4e); db(0x20); db(0x0e);
+ db(0x67); db(0x3c); db(0x08); db(0x2d); db(0x00); db(0x04); db(0x01); db(0x13);
+ db(0x66); db(0x34); db(0x4e); db(0xae); db(0xff); db(0xd0); db(0x4a); db(0x80);
+ db(0x67); db(0x2c); db(0x20); db(0x40); db(0x43); db(0xfa); db(0xff); db(0x02);
+ db(0x20); db(0x09); db(0x42); db(0x40); db(0x21); db(0x40); db(0x00); db(0x20);
+ db(0x21); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x24);
+ db(0x31); db(0x7c); db(0x01); db(0x04); db(0x00); db(0x10); db(0x31); db(0x7c);
+ db(0x07); db(0xdb); db(0x00); db(0x14); db(0x70); db(0x01); db(0x21); db(0x40);
+ db(0x00); db(0x16); db(0x4e); db(0xae); db(0xff); db(0xe2); db(0xc9); db(0x4e);
+ db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x00); db(0x00); db(0x62);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38); db(0x22); db(0x3c);
db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x40); db(0x15); db(0x7c);
- db(0x00); db(0x08); db(0x00); db(0x08); db(0x25); db(0x48); db(0x00); db(0x0e);
- db(0x35); db(0x7c); db(0x00); db(0x26); db(0x00); db(0x12); db(0x25); db(0x7c);
- db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14); db(0x35); db(0x7c);
- db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a);
- db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae);
- db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x6c); db(0x70); db(0x00);
- db(0x20); db(0x59); db(0x4a); db(0x10); db(0x67); db(0x10); db(0x2c); db(0x59);
- db(0x22); db(0x51); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00);
- db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x70); db(0x01); db(0x4a); db(0x40);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x20); db(0x4a); db(0x11);
- db(0x67); db(0x00); db(0x00); db(0xb4); db(0x30); db(0x3c); db(0xff); db(0x50);
- db(0x61); db(0x00); db(0x1b); db(0x02); db(0x70); db(0x00); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0xa2); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
- db(0x1a); db(0xec); db(0x70); db(0x02); db(0x4e); db(0x90); db(0x0c); db(0x40);
- db(0x00); db(0x01); db(0x6d); db(0x00); db(0x00); db(0x7c); db(0x6e); db(0x06);
- db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe4); db(0x0c); db(0x40);
- db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01); db(0x4e); db(0xae);
- db(0xfe); db(0xbc); db(0x60); db(0xd6); db(0x0c); db(0x40); db(0x00); db(0x03);
- db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x86); db(0x60); db(0xca);
- db(0x0c); db(0x40); db(0x00); db(0x04); db(0x6e); db(0x06); db(0x4e); db(0xae);
- db(0xff); db(0x4c); db(0x60); db(0xbe); db(0x0c); db(0x40); db(0x00); db(0x05);
- db(0x6e); db(0x46); db(0x48); db(0xe7); db(0x00); db(0xc0); db(0x70); db(0x26);
+ db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0xa8); db(0x7c); db(0x00);
+ db(0xbc); db(0x6d); db(0x01); db(0x0e); db(0x64); db(0x32); db(0x2f); db(0x06);
+ db(0x2e); db(0x2d); db(0x01); db(0x10); db(0x4a); db(0x45); db(0x67); db(0x04);
+ db(0x08); db(0xc7); db(0x00); db(0x02); db(0x2f); db(0x0b); db(0x20); db(0x4b);
+ db(0x61); db(0x00); db(0x09); db(0x66); db(0x26); db(0x5f); db(0x27); db(0x41);
+ db(0x01); db(0xa4); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
+ db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46);
+ db(0x60); db(0xd6); db(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xc8);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4b); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x02); db(0x38); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x0c); db(0x67); db(0x06);
+ db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x0c); db(0x6e);
+ db(0x00); db(0x22); db(0x00); db(0x14); db(0x65); db(0x6e); db(0x78); db(0x03);
+ db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04);
+ db(0x00); db(0x44); db(0x01); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x80);
+ db(0x61); db(0x00); db(0x1d); db(0xa6); db(0x4e); db(0x90); db(0x2a); db(0x00);
+ db(0x20); db(0x49); db(0x20); db(0x01); db(0x67); db(0x0c); db(0x22); db(0x04);
+ db(0x74); db(0xfb); db(0x43); db(0xfa); db(0x1f); db(0x05); db(0x4e); db(0xae);
+ db(0xfd); db(0x96); db(0x43); db(0xf9); db(0x00); db(0x21); db(0x00); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xea); db(0x4a); db(0x80); db(0x66); db(0x18);
+ db(0x22); db(0x04); db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20);
+ db(0x00); db(0x00); db(0x20); db(0x05); db(0x90); db(0x88); db(0x65); db(0x08);
+ db(0x67); db(0x06); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfd); db(0x96);
+ db(0x41); db(0xfa); db(0x1e); db(0x2b); db(0x43); db(0xfa); db(0x00); db(0x54);
+ db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0e); db(0xbc); db(0x22); db(0x40);
+ db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x1d); db(0x50); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x22); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x24); db(0x00); db(0x28); db(0x01); db(0x26); db(0x09);
+ db(0x24); db(0x48); db(0x43); db(0xfa); db(0x1e); db(0x50); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0x14);
+ db(0x2c); db(0x40); db(0x22); db(0x0a); db(0xe4); db(0x8b); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x44); db(0x1c);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00);
+ db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x41); db(0xfa); db(0x1d); db(0xf4); db(0x43); db(0xfa); db(0x00); db(0x16);
+ db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40);
+ db(0x61); db(0x00); db(0xff); db(0xa8); db(0x60); db(0xdc); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x72); db(0x02); db(0x30); db(0x3c); db(0xff); db(0x48); db(0x61); db(0x00);
+ db(0x1c); db(0xd8); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
+ db(0x61); db(0x00); db(0x0a); db(0x30); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x7e); db(0x00);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0xf0); db(0x00); db(0x61); db(0x00);
+ db(0x1c); db(0xb0); db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x40); db(0x00); db(0x61); db(0x00); db(0x1c); db(0xa4); db(0x7c); db(0x03);
+ db(0x4a); db(0x29); db(0x00); db(0x03); db(0x67); db(0x48); db(0x0c); db(0x29);
+ db(0x00); db(0xfe); db(0x00); db(0x07); db(0x66); db(0x40); db(0x52); db(0x87);
+ db(0x49); db(0xe8); db(0x00); db(0x50); db(0x4b); db(0xe9); db(0x00); db(0x04);
+ db(0x48); db(0xe7); db(0x03); db(0xce); db(0x38); db(0x15); db(0x4c); db(0xec);
+ db(0x07); db(0x00); db(0x00); db(0x04); db(0x4c); db(0xec); db(0x00); db(0x07);
+ db(0x00); db(0x04); db(0x0c); db(0x44); db(0x00); db(0x12); db(0x66); db(0x06);
+ db(0x61); db(0x00); db(0x1b); db(0xe6); db(0x60); db(0x0a); db(0x0c); db(0x44);
+ db(0x00); db(0x13); db(0x66); db(0x04); db(0x61); db(0x00); db(0x1b); db(0xf4);
+ db(0x4c); db(0xdf); db(0x73); db(0xc0); db(0x29); db(0x40); db(0x00); db(0x04);
+ db(0x1b); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x03); db(0xd0); db(0xfc);
+ db(0x20); db(0x00); db(0xd2); db(0xfc); db(0x00); db(0x08); db(0x51); db(0xce);
+ db(0xff); db(0xa8); db(0x4a); db(0x87); db(0x67); db(0x00); db(0xff); db(0x7e);
+ db(0x60); db(0x00); db(0xff); db(0x84); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x7e); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x50);
+ db(0x61); db(0x00); db(0x1c); db(0x26); db(0x20); db(0x07); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x00); db(0xff); db(0xe4); db(0x52); db(0x47);
+ db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00); db(0xff); db(0xe6);
+ db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xdc);
+ db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08); db(0x20); db(0x01);
+ db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x60); db(0xce); db(0x0c); db(0x40);
+ db(0x00); db(0x03); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x86);
+ db(0x60); db(0xc2); db(0x0c); db(0x40); db(0x00); db(0x04); db(0x6e); db(0x06);
+ db(0x4e); db(0xae); db(0xff); db(0x4c); db(0x60); db(0xb6); db(0x0c); db(0x40);
+ db(0x00); db(0x05); db(0x6e); db(0xb0); db(0x48); db(0xe7); db(0x00); db(0xc0);
+ db(0x70); db(0x26); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4c); db(0xdf); db(0x03); db(0x00);
+ db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08);
+ db(0x25); db(0x48); db(0x00); db(0x0e); db(0x35); db(0x7c); db(0x00); db(0x26);
+ db(0x00); db(0x12); db(0x25); db(0x7c); db(0x40); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x14); db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18);
+ db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10);
+ db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00);
+ db(0xff); db(0x6c); db(0x70); db(0x00); db(0x20); db(0x59); db(0x4a); db(0x10);
+ db(0x67); db(0x10); db(0x2c); db(0x59); db(0x22); db(0x51); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0xbc);
+ db(0x70); db(0x01); db(0x4a); db(0x40); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x00); db(0x20); db(0x4a); db(0x11); db(0x67); db(0x00); db(0x00); db(0xb4);
+ db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x1b); db(0x6a);
+ db(0x70); db(0x00); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0x00); db(0xa2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c);
+ db(0xff); db(0x50); db(0x61); db(0x00); db(0x1b); db(0x54); db(0x70); db(0x02);
+ db(0x4e); db(0x90); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x00);
+ db(0x00); db(0x7c); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92);
+ db(0x60); db(0xe4); db(0x0c); db(0x40); db(0x00); db(0x02); db(0x6e); db(0x08);
+ db(0x20); db(0x01); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x60); db(0xd6);
+ db(0x0c); db(0x40); db(0x00); db(0x03); db(0x6e); db(0x06); db(0x4e); db(0xae);
+ db(0xfe); db(0x86); db(0x60); db(0xca); db(0x0c); db(0x40); db(0x00); db(0x04);
+ db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x4c); db(0x60); db(0xbe);
+ db(0x0c); db(0x40); db(0x00); db(0x05); db(0x6e); db(0x46); db(0x48); db(0xe7);
+ db(0x00); db(0xc0); db(0x70); db(0x26); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4c); db(0xdf);
+ db(0x03); db(0x00); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
+ db(0x00); db(0x08); db(0x25); db(0x48); db(0x00); db(0x0e); db(0x35); db(0x7c);
+ db(0x00); db(0x26); db(0x00); db(0x12); db(0x25); db(0x7c); db(0x40); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x35); db(0x7c); db(0x12); db(0x34);
+ db(0x00); db(0x18); db(0x25); db(0x49); db(0x00); db(0x1a); db(0x20); db(0x69);
+ db(0x00); db(0x10); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0x92);
+ db(0x60); db(0x00); db(0xff); db(0x74); db(0x30); db(0x3c); db(0xff); db(0x50);
+ db(0x61); db(0x00); db(0x1a); db(0xc6); db(0x70); db(0x04); db(0x4e); db(0x90);
+ db(0x70); db(0x01); db(0x4c); db(0xdf); db(0x04); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0xf0); db(0xf8); db(0x24); db(0x00); db(0x26); db(0x01);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x12); db(0x61); db(0x00);
+ db(0x1a); db(0xa8); db(0x20); db(0x02); db(0x24); db(0x03); db(0x4e); db(0x90);
+ db(0x24); db(0x40); db(0x70); db(0x2a); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x28); db(0x40);
+ db(0x47); db(0xec); db(0x00); db(0x16); db(0x22); db(0x4b); db(0x22); db(0xca);
+ db(0x22); db(0xc2); db(0x22); db(0xc3); db(0x30); db(0x3c); db(0x3f); db(0xf4);
+ db(0x61); db(0x00); db(0x1a); db(0x7e); db(0x22); db(0xc8); db(0x30); db(0x3c);
+ db(0x3f); db(0xf0); db(0x61); db(0x00); db(0x1a); db(0x74); db(0x22); db(0xc8);
+ db(0x29); db(0x4b); db(0x00); db(0x0e); db(0x19); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x08); db(0x19); db(0x7c); db(0x00); db(0xf6); db(0x00); db(0x09);
+ db(0x41); db(0xfa); db(0x1b); db(0x0d); db(0x29); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x00); db(0x14); db(0x29); db(0x48); db(0x00); db(0x12);
+ db(0x22); db(0x4c); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58);
+ db(0x4c); db(0xdf); db(0x1f); db(0x0f); db(0x4e); db(0x75); db(0x20); db(0x51);
+ db(0x52); db(0x90); db(0x20); db(0x69); db(0x00); db(0x0c); db(0x20); db(0x10);
+ db(0x67); db(0x1e); db(0x20); db(0x40); db(0x0c); db(0x68); db(0x00); db(0x1f);
+ db(0x00); db(0x14); db(0x65); db(0x14); db(0x4a); db(0xa8); db(0x00); db(0x22);
+ db(0x67); db(0x0e); db(0x4a); db(0xa8); db(0x00); db(0x3c); db(0x67); db(0x08);
+ db(0x22); db(0x69); db(0x00); db(0x10); db(0x22); db(0xa8); db(0x00); db(0x44);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xf1); db(0xe0);
+ db(0x2e); db(0x00); db(0x20); db(0x3c); db(0x00); db(0x00); db(0xff); db(0xfc);
+ db(0x61); db(0x00); db(0x1a); db(0x06); db(0x24); db(0x48); db(0x74); db(0x00);
+ db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x10); db(0x41); db(0xfa);
+ db(0x1a); db(0xd0); db(0x43); db(0xfa); db(0xfd); db(0xb8); db(0x70); db(0x14);
+ db(0x61); db(0x00); db(0x0b); db(0x4e); db(0x24); db(0x00); db(0x76); db(0x00);
+ db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x10); db(0x41); db(0xfa);
+ db(0x1a); db(0xc6); db(0x43); db(0xfa); db(0xfd); db(0x14); db(0x70); db(0x19);
+ db(0x61); db(0x00); db(0x0b); db(0x36); db(0x26); db(0x00); db(0x70); db(0x2a);
db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x40);
- db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08); db(0x25); db(0x48);
- db(0x00); db(0x0e); db(0x35); db(0x7c); db(0x00); db(0x26); db(0x00); db(0x12);
- db(0x25); db(0x7c); db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14);
- db(0x35); db(0x7c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x25); db(0x49);
- db(0x00); db(0x1a); db(0x20); db(0x69); db(0x00); db(0x10); db(0x22); db(0x4a);
- db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x74);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x1a); db(0x5e);
- db(0x70); db(0x04); db(0x4e); db(0x90); db(0x70); db(0x01); db(0x4c); db(0xdf);
- db(0x04); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xf0); db(0xe0);
- db(0x24); db(0x00); db(0x26); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x12); db(0x61); db(0x00); db(0x1a); db(0x40); db(0x20); db(0x02);
- db(0x24); db(0x03); db(0x4e); db(0x90); db(0x24); db(0x40); db(0x70); db(0x22);
+ db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xe9); db(0x00); db(0x1a);
+ db(0x20); db(0xca); db(0x20); db(0xce); db(0x20); db(0xc2); db(0x20); db(0x83);
+ db(0x41); db(0xfa); db(0x1a); db(0x74); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x45); db(0xe9); db(0x00); db(0x1a); db(0x23); db(0x4a); db(0x00); db(0x0e);
+ db(0x41); db(0xfa); db(0xfe); db(0x10); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x33); db(0x7c); db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03);
+ db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x02); db(0x22); db(0x03);
+ db(0x61); db(0x00); db(0xfe); db(0xd6); db(0x30); db(0x3c); db(0xff); db(0x38);
+ db(0x72); db(0x04); db(0x61); db(0x00); db(0x19); db(0x84); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0x0b); db(0x36);
+ db(0x4c); db(0xdf); db(0x07); db(0x8f); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xc0); db(0xf2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48);
+ db(0x26); db(0x49); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbe);
db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x22); db(0x40); db(0x41); db(0xe9); db(0x00); db(0x16);
- db(0x20); db(0x8a); db(0x21); db(0x42); db(0x00); db(0x04); db(0x21); db(0x43);
- db(0x00); db(0x08); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x13); db(0x7c);
- db(0x00); db(0x02); db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0xf6);
- db(0x00); db(0x09); db(0x41); db(0xfa); db(0x1a); db(0xb7); db(0x23); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0x12); db(0x23); db(0x48);
- db(0x00); db(0x12); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58);
- db(0x4c); db(0xdf); db(0x07); db(0x0f); db(0x4e); db(0x75); db(0x20); db(0x51);
- db(0x52); db(0x90); db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0xf1); db(0xe0); db(0x2e); db(0x00); db(0x61); db(0x00); db(0xfa); db(0xe6);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0xff); db(0xfc); db(0x61); db(0x00);
- db(0x19); db(0xd4); db(0x24); db(0x48); db(0x74); db(0x00); db(0x08); db(0x07);
- db(0x00); db(0x00); db(0x67); db(0x10); db(0x41); db(0xfa); db(0x1a); db(0x9e);
- db(0x43); db(0xfa); db(0xfd); db(0xee); db(0x70); db(0x14); db(0x61); db(0x00);
- db(0x0b); db(0x4e); db(0x24); db(0x00); db(0x76); db(0x00); db(0x08); db(0x07);
- db(0x00); db(0x01); db(0x67); db(0x10); db(0x41); db(0xfa); db(0x1a); db(0x94);
- db(0x43); db(0xfa); db(0xfd); db(0x4a); db(0x70); db(0x19); db(0x61); db(0x00);
- db(0x0b); db(0x36); db(0x26); db(0x00); db(0x70); db(0x2a); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x22); db(0x40); db(0x41); db(0xe9); db(0x00); db(0x1a); db(0x20); db(0xca);
- db(0x20); db(0xce); db(0x20); db(0xc2); db(0x20); db(0x83); db(0x41); db(0xfa);
- db(0x1a); db(0x42); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x45); db(0xe9);
- db(0x00); db(0x1a); db(0x23); db(0x4a); db(0x00); db(0x0e); db(0x41); db(0xfa);
- db(0xfe); db(0x46); db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c);
- db(0x02); db(0x14); db(0x00); db(0x08); db(0x70); db(0x03); db(0x4e); db(0xae);
- db(0xff); db(0x58); db(0x20); db(0x02); db(0x22); db(0x03); db(0x61); db(0x00);
- db(0xff); db(0x0c); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x04);
- db(0x61); db(0x00); db(0x19); db(0x52); db(0x4e); db(0x90); db(0x4a); db(0x80);
- db(0x67); db(0x04); db(0x61); db(0x00); db(0x0b); db(0x36); db(0x4c); db(0xdf);
- db(0x07); db(0x8f); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xc0); db(0xf2);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48); db(0x26); db(0x49);
- db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xbe); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x20); db(0x40); db(0x70); db(0x00); db(0x43); db(0xeb); db(0x01); db(0xac);
- db(0x11); db(0xb1); db(0x00); db(0x00); db(0x00); db(0x0e); db(0x52); db(0x40);
- db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2); db(0x20); db(0x0a);
- db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36); db(0x22); db(0x48);
- db(0x41); db(0xfa); db(0x19); db(0xc0); db(0x23); db(0x48); db(0x00); db(0x0a);
- db(0x20); db(0x6b); db(0x01); db(0x9c); db(0x41); db(0xe8); db(0x00); db(0x12);
- db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf); db(0x4f); db(0x03);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x24); db(0x48); db(0x0c); db(0x9a); db(0x00); db(0x00);
- db(0x03); db(0xf3); db(0x66); db(0x00); db(0x00); db(0xe4); db(0x50); db(0x8a);
- db(0x2e); db(0x2a); db(0x00); db(0x04); db(0x9e); db(0x92); db(0x50); db(0x8a);
- db(0x52); db(0x87); db(0x26); db(0x4a); db(0x20); db(0x07); db(0xd0); db(0x80);
- db(0xd0); db(0x80); db(0xd7); db(0xc0); db(0x28); db(0x4a); db(0x9b); db(0xcd);
- db(0x7c); db(0x00); db(0x24); db(0x12); db(0x72); db(0x01); db(0x08); db(0x02);
- db(0x00); db(0x1e); db(0x67); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x01);
- db(0x08); db(0xc1); db(0x00); db(0x10); db(0xe5); db(0x8a); db(0x66); db(0x04);
- db(0x42); db(0x9a); db(0x60); db(0x20); db(0x50); db(0x82); db(0x20); db(0x02);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0xa0); db(0x20); db(0x40); db(0x20); db(0xc2); db(0x24); db(0xc8);
- db(0x22); db(0x0d); db(0x67); db(0x06); db(0x20); db(0x08); db(0xe4); db(0x88);
- db(0x2a); db(0x80); db(0x2a); db(0x48); db(0x52); db(0x86); db(0xbe); db(0x86);
- db(0x66); db(0xc0); db(0x7c); db(0x00); db(0x22); db(0x06); db(0xd2); db(0x81);
- db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88);
- db(0x26); db(0x1b); db(0x28); db(0x1b); db(0xe5); db(0x8c); db(0x0c); db(0x83);
- db(0x00); db(0x00); db(0x03); db(0xe9); db(0x67); db(0x08); db(0x0c); db(0x83);
- db(0x00); db(0x00); db(0x03); db(0xea); db(0x66); db(0x0c); db(0x20); db(0x04);
- db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x10); db(0xdb); db(0x53); db(0x80);
- db(0x60); db(0xf6); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xeb);
- db(0x66); db(0x4e); db(0x26); db(0x1b); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xec); db(0x66); db(0x28); db(0x22); db(0x06); db(0xd2); db(0x81);
- db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00); db(0x58); db(0x88);
- db(0x20); db(0x1b); db(0x67); db(0xe6); db(0x22); db(0x1b); db(0xd2); db(0x81);
- db(0xd2); db(0x81); db(0x26); db(0x34); db(0x18); db(0x00); db(0x58); db(0x83);
- db(0x24); db(0x1b); db(0xd7); db(0xb0); db(0x28); db(0x00); db(0x53); db(0x80);
- db(0x66); db(0xf6); db(0x60); db(0xe4); db(0x0c); db(0x83); db(0x00); db(0x00);
- db(0x03); db(0xf2); db(0x66); db(0x14); db(0x52); db(0x86); db(0xbe); db(0x86);
- db(0x66); db(0x00); db(0xff); db(0x8a); db(0x7e); db(0x01); db(0x20); db(0x54);
- db(0x20); db(0x07); db(0x4c); db(0xdf); db(0x7e); db(0xfe); db(0x4e); db(0x75);
- db(0x91); db(0xc8); db(0x7e); db(0x00); db(0x60); db(0xf2); db(0x48); db(0xe7);
- db(0x40); db(0xf2); db(0x26); db(0x48); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50); db(0x4a); db(0x90);
- db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a); db(0x45); db(0xfa);
- db(0x19); db(0x31); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01);
- db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x46); db(0x60); db(0xf2);
- db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20); db(0x22); db(0x3c);
- db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08); db(0x00); db(0x08);
- db(0x41); db(0xfa); db(0x19); db(0x07); db(0x25); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0x18); db(0x60); db(0x25); db(0x48); db(0x00); db(0x0e);
- db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88); db(0x58); db(0x90);
- db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee); db(0x01); db(0x50);
- db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a); db(0x20); db(0x4a);
- db(0x27); db(0x48); db(0x01); db(0xa0); db(0x20); db(0x08); db(0x4c); db(0xdf);
- db(0x4f); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x02);
- db(0x2e); db(0x00); db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x67); db(0x7c);
- db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25);
- db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae);
- db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
- db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae);
- db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0xff); db(0x3a); db(0x20); db(0x40); db(0x70); db(0x00); db(0x43); db(0xeb);
+ db(0x01); db(0xac); db(0x11); db(0xb1); db(0x00); db(0x00); db(0x00); db(0x0e);
+ db(0x52); db(0x40); db(0x0c); db(0x40); db(0x00); db(0x8c); db(0x66); db(0xf2);
+ db(0x20); db(0x0a); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x36);
+ db(0x22); db(0x48); db(0x41); db(0xfa); db(0x19); db(0xf2); db(0x23); db(0x48);
+ db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x9c); db(0x41); db(0xe8);
+ db(0x00); db(0x12); db(0x4e); db(0xae); db(0xff); db(0x10); db(0x4c); db(0xdf);
+ db(0x4f); db(0x03); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x7f); db(0x7e);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x48); db(0x0c); db(0x9a);
+ db(0x00); db(0x00); db(0x03); db(0xf3); db(0x66); db(0x00); db(0x00); db(0xe4);
+ db(0x50); db(0x8a); db(0x2e); db(0x2a); db(0x00); db(0x04); db(0x9e); db(0x92);
+ db(0x50); db(0x8a); db(0x52); db(0x87); db(0x26); db(0x4a); db(0x20); db(0x07);
+ db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xd7); db(0xc0); db(0x28); db(0x4a);
+ db(0x9b); db(0xcd); db(0x7c); db(0x00); db(0x24); db(0x12); db(0x72); db(0x01);
+ db(0x08); db(0x02); db(0x00); db(0x1e); db(0x67); db(0x04); db(0x08); db(0xc1);
+ db(0x00); db(0x01); db(0x08); db(0xc1); db(0x00); db(0x10); db(0xe5); db(0x8a);
+ db(0x66); db(0x04); db(0x42); db(0x9a); db(0x60); db(0x20); db(0x50); db(0x82);
+ db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0xa0); db(0x20); db(0x40); db(0x20); db(0xc2);
+ db(0x24); db(0xc8); db(0x22); db(0x0d); db(0x67); db(0x06); db(0x20); db(0x08);
+ db(0xe4); db(0x88); db(0x2a); db(0x80); db(0x2a); db(0x48); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0xc0); db(0x7c); db(0x00); db(0x22); db(0x06);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x26); db(0x1b); db(0x28); db(0x1b); db(0xe5); db(0x8c);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xe9); db(0x67); db(0x08);
+ db(0x0c); db(0x83); db(0x00); db(0x00); db(0x03); db(0xea); db(0x66); db(0x0c);
+ db(0x20); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x10); db(0xdb);
+ db(0x53); db(0x80); db(0x60); db(0xf6); db(0x0c); db(0x83); db(0x00); db(0x00);
+ db(0x03); db(0xeb); db(0x66); db(0x4e); db(0x26); db(0x1b); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xec); db(0x66); db(0x28); db(0x22); db(0x06);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x20); db(0x74); db(0x18); db(0x00);
+ db(0x58); db(0x88); db(0x20); db(0x1b); db(0x67); db(0xe6); db(0x22); db(0x1b);
+ db(0xd2); db(0x81); db(0xd2); db(0x81); db(0x26); db(0x34); db(0x18); db(0x00);
+ db(0x58); db(0x83); db(0x24); db(0x1b); db(0xd7); db(0xb0); db(0x28); db(0x00);
+ db(0x53); db(0x80); db(0x66); db(0xf6); db(0x60); db(0xe4); db(0x0c); db(0x83);
+ db(0x00); db(0x00); db(0x03); db(0xf2); db(0x66); db(0x14); db(0x52); db(0x86);
+ db(0xbe); db(0x86); db(0x66); db(0x00); db(0xff); db(0x8a); db(0x7e); db(0x01);
+ db(0x20); db(0x54); db(0x20); db(0x07); db(0x4c); db(0xdf); db(0x7e); db(0xfe);
+ db(0x4e); db(0x75); db(0x91); db(0xc8); db(0x7e); db(0x00); db(0x60); db(0xf2);
+ db(0x48); db(0xe7); db(0x40); db(0xf2); db(0x26); db(0x48); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x41); db(0xee); db(0x01); db(0x50); db(0x20); db(0x50);
+ db(0x4a); db(0x90); db(0x67); db(0x1a); db(0x22); db(0x68); db(0x00); db(0x0a);
+ db(0x45); db(0xfa); db(0x19); db(0x63); db(0x10); db(0x19); db(0x12); db(0x1a);
+ db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x46);
+ db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
+ db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
+ db(0x00); db(0x08); db(0x41); db(0xfa); db(0x19); db(0x39); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x18); db(0x92); db(0x25); db(0x48);
+ db(0x00); db(0x0e); db(0x41); db(0xea); db(0x00); db(0x12); db(0x20); db(0x88);
+ db(0x58); db(0x90); db(0x21); db(0x48); db(0x00); db(0x08); db(0x41); db(0xee);
+ db(0x01); db(0x50); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x0a);
+ db(0x20); db(0x4a); db(0x27); db(0x48); db(0x01); db(0xa0); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x4f); db(0x02); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x01); db(0x02); db(0x2e); db(0x00); db(0x4a); db(0x2b); db(0x00); db(0x4c);
+ db(0x67); db(0x7c); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c);
+ db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0xac); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb);
- db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae);
- db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c);
- db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0xac);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e);
- db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x94);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x40); db(0x80);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22); db(0x2e); db(0x00);
- db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25);
- db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae);
- db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
- db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae);
- db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x94); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22);
+ db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
+ db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e);
+ db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
+ db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c);
+ db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4);
+ db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae);
+ db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00);
+ db(0x00); db(0x44); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12);
db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b);
- db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae);
- db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c);
- db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08);
- db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0x44);
- db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b);
- db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e);
- db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x2c);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x80);
- db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0);
- db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8); db(0x00); db(0x04);
- db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x04);
- db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0);
- db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68); db(0x00); db(0x04);
- db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca); db(0x66); db(0x06);
- db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18); db(0x20); db(0x09);
- db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80); db(0xd0); db(0x80);
- db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40); db(0x60); db(0xee);
- db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16); db(0x9f); db(0xc2);
- db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32); db(0x10); db(0xff);
- db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02); db(0x72); db(0x10);
- db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c); db(0x08); db(0x00);
- db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x33); db(0x7c);
- db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00);
- db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x22); db(0x6b);
- db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c);
- db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x25); db(0x69);
- db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24);
- db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x4e); db(0xae);
- db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf); db(0x44); db(0x04);
- db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26); db(0x4a); db(0x2b);
- db(0x00); db(0x4c); db(0x66); db(0x36); db(0x70); db(0x00); db(0x4a); db(0x33);
- db(0x00); db(0x4d); db(0x67); db(0x04); db(0x52); db(0x00); db(0x60); db(0xf6);
- db(0x17); db(0x40); db(0x00); db(0x4c); db(0x67); db(0x24); db(0x20); db(0x01);
- db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b); db(0x00); db(0x4c);
- db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x4c); db(0x20); db(0x01);
- db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00); db(0x61); db(0x00);
- db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac); db(0x00); db(0x14);
- db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01); db(0x61); db(0x00);
- db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01); db(0x72); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75); db(0x10); db(0x2b);
- db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01); db(0x72); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); db(0x72); db(0x01);
- db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02); db(0x72); db(0x03);
- db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x86); db(0x4e); db(0x75);
- db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x67); db(0x0c);
- db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a); db(0x4a); db(0xa8);
- db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c);
- db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87);
- db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00);
- db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a);
- db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae);
- db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6);
- db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41);
- db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20);
- db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08);
- db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02);
- db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a);
- db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a);
- db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90);
- db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8);
- db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87);
- db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87);
- db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c);
- db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00);
- db(0xfc); db(0x76); db(0x21); db(0x40); db(0x01); db(0x9c); db(0x2f); db(0x08);
- db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00); db(0x14); db(0x56);
- db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00);
- db(0x14); db(0x4c); db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8);
- db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91);
- db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00);
- db(0xf7); db(0x54); db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x14);
- db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f);
- db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e);
- db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
- db(0x14); db(0x0c); db(0x4e); db(0x90); db(0x60); db(0x26); db(0x2c); db(0x4c);
- db(0x2f); db(0x08); db(0x61); db(0x00); db(0x0f); db(0x70); db(0x20); db(0x5f);
- db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c); db(0xff); db(0x20);
- db(0x61); db(0x00); db(0x13); db(0xf2); db(0x4e); db(0x90); db(0x70); db(0x00);
- db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40); db(0x00); db(0x10);
- db(0x27); db(0x40); db(0x00); db(0x20); db(0x20); db(0x69); db(0x01); db(0x94);
- db(0x4a); db(0xa9); db(0x01); db(0x90); db(0x67); db(0x2c); db(0x20); db(0x08);
- db(0x67); db(0x32); db(0x61); db(0x00); db(0xfa); db(0xe6); db(0x48); db(0xe7);
- db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90); db(0x22); db(0x69);
- db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01); db(0x42); db(0xa9);
- db(0x01); db(0x90); db(0x23); db(0x48); db(0x01); db(0x94); db(0x4a); db(0x80);
- db(0x67); db(0x0a); db(0x4a); db(0xa9); db(0x01); db(0x98); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0xfa); db(0x62); db(0x4a); db(0x83); db(0x6b); db(0x00);
- db(0xf6); db(0xbc); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x2f); db(0x09);
- db(0x43); db(0xfa); db(0x15); db(0x13); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x22); db(0x5f); db(0x22); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x18);
- db(0x61); db(0x00); db(0x13); db(0x82); db(0x4e); db(0x90); db(0x20); db(0x03);
- db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x24);
- db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14);
- db(0x41); db(0xfa); db(0xf4); db(0x0a); db(0x70); db(0xff); db(0x22); db(0x0c);
- db(0x66); db(0x06); db(0x41); db(0xfa); db(0xf4); db(0x48); db(0x70); db(0x00);
- db(0x27); db(0x40); db(0x00); db(0x24); db(0x20); db(0x08); db(0xe4); db(0x88);
- db(0x27); db(0x40); db(0x00); db(0x20); db(0x08); db(0x07); db(0x00); db(0x03);
- db(0x66); db(0x48); db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x42);
- db(0x0c); db(0x03); db(0x00); db(0x80); db(0x67); db(0x3c); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x70); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03); db(0x33); db(0x40);
- db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04); db(0x00); db(0x0a);
- db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec); db(0x00); db(0x4a);
- db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x4e); db(0xae); db(0xfe); db(0xf2);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x72); db(0x00); db(0x70); db(0x00);
- db(0x4e); db(0x75); db(0x76); db(0x00); db(0x24); db(0x49); db(0x20); db(0x4b);
- db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01);
- db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02); db(0x67); db(0x02);
- db(0x72); db(0x01); db(0x70); db(0x80); db(0x2c); db(0x4c); db(0x61); db(0x00);
- db(0x0f); db(0x0c); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x6a);
- db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x64); db(0x20); db(0x52);
- db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30); db(0x28); db(0xfd);
- db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x06); db(0x82);
- db(0x00); db(0x00); db(0x10); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x42);
- db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8);
- db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff);
- db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
- db(0x13); db(0xb8); db(0x4e); db(0xae); db(0xfe); db(0x68); db(0x2c); db(0x40);
- db(0x22); db(0x0a); db(0x26); db(0x0f); db(0x4f); db(0xea); db(0x10); db(0x04);
- db(0x4e); db(0xae); db(0xff); db(0x52); db(0x2e); db(0x43); db(0x26); db(0x01);
- db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae);
- db(0xff); db(0x2e); db(0x22); db(0x03); db(0x70); db(0x00); db(0x4e); db(0x75);
- db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x13); db(0xa9);
- db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80);
- db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa);
- db(0x13); db(0x97); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
- db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x2c);
- db(0x21); db(0x4c); db(0x01); db(0xa8); db(0x48); db(0xe7); db(0x00); db(0x8a);
- db(0x61); db(0x00); db(0xfd); db(0xbc); db(0x4c); db(0xdf); db(0x51); db(0x00);
- db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08);
- db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4);
- db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x38);
- db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75);
- db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x11); db(0xee);
- db(0x70); db(0x03); db(0x4e); db(0x90); db(0x22); db(0x6b); db(0x00); db(0xa8);
- db(0x23); db(0x40); db(0x00); db(0x20); db(0x67); db(0x16); db(0x70); db(0x00);
- db(0x23); db(0x40); db(0x00); db(0x24); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00);
+ db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf);
+ db(0x44); db(0x80); db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8);
+ db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40);
+ db(0x00); db(0x04); db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b);
+ db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68);
+ db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68);
+ db(0x00); db(0x04); db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca);
+ db(0x66); db(0x06); db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18);
+ db(0x20); db(0x09); db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80);
+ db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40);
+ db(0x60); db(0xee); db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16);
+ db(0x9f); db(0xc2); db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32);
+ db(0x10); db(0xff); db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02);
+ db(0x72); db(0x10); db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c);
+ db(0x08); db(0x00); db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c);
+ db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a);
+ db(0x00); db(0x28); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
+ db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a);
db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x7e); db(0x00);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9); db(0x4e); db(0xae);
- db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8); db(0x00); db(0x5c);
- db(0x43); db(0xfa); db(0x12); db(0xce); db(0x4e); db(0xae); db(0xfe); db(0x68);
- db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0xb9);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86);
- db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08);
- db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40);
- db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x11); db(0x86); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xc8); db(0x27); db(0x40);
- db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x11); db(0x83); db(0x70); db(0x00);
- db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xb8); db(0x27); db(0x40);
- db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x26); db(0x07); db(0x66); db(0x12);
- db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80); db(0x20); db(0x4d);
- db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x26); db(0x2c);
- db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40); db(0x61); db(0x00);
- db(0x11); db(0x3c); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
- db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0xb8); db(0x08); db(0x02);
- db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xfb); db(0x20); db(0x60); db(0x00); db(0x01); db(0x44); db(0x20); db(0x4d);
- db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80);
- db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f);
- db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae);
- db(0xfe); db(0xc2); db(0x08); db(0x2b); db(0x00); db(0x00); db(0x00); db(0xad);
- db(0x67); db(0x0a); db(0x61); db(0x00); db(0xff); db(0x04); db(0x08); db(0xab);
- db(0x00); db(0x00); db(0x00); db(0xad); db(0x08); db(0x2b); db(0x00); db(0x01);
- db(0x00); db(0xad); db(0x67); db(0x0a); db(0x61); db(0x00); db(0x0b); db(0xf8);
- db(0x08); db(0xab); db(0x00); db(0x01); db(0x00); db(0xad); db(0x4a); db(0x2b);
- db(0x00); db(0xac); db(0x67); db(0x24); db(0x30); db(0x3c); db(0xff); db(0x58);
- db(0x61); db(0x00); db(0x10); db(0xd2); db(0x70); db(0x01); db(0x4e); db(0x90);
- db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00); db(0xfb); db(0x98);
- db(0x42); db(0x2b); db(0x00); db(0xac); db(0x30); db(0x3c); db(0xff); db(0x58);
- db(0x61); db(0x00); db(0x10); db(0xba); db(0x70); db(0x02); db(0x4e); db(0x90);
- db(0x20); db(0x0c); db(0x67); db(0x56); db(0x0c); db(0x6c); db(0x00); db(0x26);
- db(0x00); db(0x12); db(0x66); db(0x4e); db(0x0c); db(0xac); db(0x40); db(0x00);
- db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x44); db(0x0c); db(0x6c);
- db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3c); db(0x20); db(0x6c);
- db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c); db(0x02); db(0x80);
- db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80); db(0x80); db(0x00);
- db(0x00); db(0x08); db(0x66); db(0x1a); db(0x02); db(0xa8); db(0x7f); db(0xff);
- db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68); db(0x00); db(0x10);
- db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08); db(0x4e); db(0xae);
- db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x4a); db(0x22); db(0x4c);
- db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00);
- db(0xff); db(0x3e); db(0x74); db(0xfe); db(0x20); db(0x0c); db(0x67); db(0x14);
- db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42); db(0x74); db(0xff);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x10); db(0x46);
- db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb); db(0x00); db(0x04);
- db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00); db(0xff); db(0x18);
- db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04);
- db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7); db(0x00); db(0xc0);
- db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a); db(0x53); db(0x85);
- db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89); db(0x20); db(0x49);
- db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd2);
- db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14); db(0x65); db(0x00);
- db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x04);
- db(0x60); db(0x12); db(0x61); db(0x5e); db(0x30); db(0x3c); db(0xff); db(0x30);
- db(0x61); db(0x00); db(0x0f); db(0xf2); db(0x4e); db(0x90); db(0x4a); db(0x80);
- db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab); db(0x00); db(0x04);
- db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xc0);
- db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); db(0xfe); db(0xb8);
- db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f); db(0x00); db(0x08);
- db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x80); db(0x0c); db(0xac);
- db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x14);
- db(0x61); db(0x00); db(0xfa); db(0xae); db(0x66); db(0x0e); db(0x30); db(0x3c);
- db(0xff); db(0x58); db(0x61); db(0x00); db(0x0f); db(0xb0); db(0x70); db(0x00);
- db(0x4e); db(0x90); db(0x60); db(0xec); db(0x22); db(0x54); db(0x20); db(0x6c);
- db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04); db(0x4e); db(0xee);
- db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc); db(0x24); db(0x53);
- db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00); db(0x00); db(0x0c);
- db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a); db(0x24); db(0x52);
- db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c); db(0x24); db(0x47);
- db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87); db(0x2e); db(0x0a);
- db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24); db(0x20); db(0x40);
- db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40); db(0x20); db(0x10);
- db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80); db(0x22); db(0x4a);
- db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae); db(0xff); db(0x2e);
- db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00); db(0x20); db(0x0a);
- db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f); db(0x4e); db(0x75);
- db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04);
- db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff);
- db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00);
- db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01);
- db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8);
- db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c);
- db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40);
- db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00);
- db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf);
- db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24);
- db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30);
- db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c);
- db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12);
- db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf);
- db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22);
- db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03);
- db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a);
- db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00);
- db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00);
- db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80);
- db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00);
- db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42);
- db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b);
- db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b);
- db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a);
- db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae);
- db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c);
- db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x0e); db(0xae); db(0x43); db(0xfa);
- db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98);
- db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x33); db(0x7c);
- db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6d);
- db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e);
- db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6d);
- db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x42); db(0xaa);
- db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12); db(0x22); db(0x6d);
- db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e);
- db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb);
- db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x18);
- db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c);
- db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c);
- db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff);
- db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48); db(0x26); db(0x00);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed); db(0x00); db(0xc0);
- db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xed);
- db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64); db(0x2c); db(0x6d);
- db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x38);
- db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
- db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
- db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80);
- db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38); db(0x22); db(0x2a);
- db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c);
- db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c); db(0x66); db(0x12);
- db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad);
- db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24);
- db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41);
- db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24); db(0x3b); db(0x44);
- db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x90);
- db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c);
- db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae);
- db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed);
- db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00); db(0x0c); db(0xe6);
- db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f); db(0x4e); db(0x75);
- db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14);
- db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00);
- db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
- db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae);
- db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x02); db(0x3c);
- db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
- db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16);
- db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8);
+ db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69);
+ db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4);
+ db(0x4e); db(0xae); db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf);
+ db(0x44); db(0x04); db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26);
+ db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x66); db(0x36); db(0x70); db(0x00);
+ db(0x4a); db(0x33); db(0x00); db(0x4d); db(0x67); db(0x04); db(0x52); db(0x00);
+ db(0x60); db(0xf6); db(0x17); db(0x40); db(0x00); db(0x4c); db(0x67); db(0x24);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b);
+ db(0x00); db(0x4c); db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x4c);
+ db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00);
+ db(0x61); db(0x00); db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac);
+ db(0x00); db(0x14); db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75);
+ db(0x10); db(0x2b); db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01);
+ db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75);
+ db(0x72); db(0x01); db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02);
+ db(0x72); db(0x03); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x86);
+ db(0x4e); db(0x75); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90);
+ db(0x67); db(0x0c); db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a);
+ db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48);
+ db(0x24); db(0x6c); db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00);
+ db(0x4a); db(0x87); db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c);
+ db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12);
+ db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0);
+ db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02);
+ db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c);
+ db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec);
+ db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28);
+ db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80);
+ db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24);
+ db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92);
+ db(0x66); db(0x0a); db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40);
+ db(0x42); db(0x90); db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a);
+ db(0x22); db(0xd8); db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95);
+ db(0x53); db(0x87); db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52);
+ db(0x53); db(0x87); db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75);
+ db(0x61); db(0x00); db(0xfc); db(0x76); db(0x21); db(0x40); db(0x01); db(0x9c);
+ db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xec); db(0x61); db(0x00);
+ db(0x14); db(0x88); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28);
+ db(0x61); db(0x00); db(0x14); db(0x7e); db(0x22); db(0x48); db(0x20); db(0x5f);
+ db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94);
+ db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe);
+ db(0x67); db(0x00); db(0xf7); db(0x1e); db(0x20); db(0x28); db(0x01); db(0x90);
+ db(0x67); db(0x14); db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83);
+ db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20);
+ db(0x61); db(0x00); db(0x14); db(0x3e); db(0x4e); db(0x90); db(0x60); db(0x26);
+ db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x61); db(0x00); db(0x0f); db(0x9e);
+ db(0x20); db(0x5f); db(0x22); db(0x48); db(0x26); db(0x40); db(0x30); db(0x3c);
+ db(0xff); db(0x20); db(0x61); db(0x00); db(0x14); db(0x24); db(0x4e); db(0x90);
+ db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x08); db(0x27); db(0x40);
+ db(0x00); db(0x10); db(0x27); db(0x40); db(0x00); db(0x20); db(0x20); db(0x69);
+ db(0x01); db(0x94); db(0x4a); db(0xa9); db(0x01); db(0x90); db(0x67); db(0x2c);
+ db(0x20); db(0x08); db(0x67); db(0x32); db(0x61); db(0x00); db(0xfa); db(0xe6);
+ db(0x48); db(0xe7); db(0x80); db(0xc0); db(0x20); db(0x29); db(0x01); db(0x90);
+ db(0x22); db(0x69); db(0x01); db(0x94); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4c); db(0xdf); db(0x03); db(0x01);
+ db(0x42); db(0xa9); db(0x01); db(0x90); db(0x23); db(0x48); db(0x01); db(0x94);
+ db(0x4a); db(0x80); db(0x67); db(0x0a); db(0x4a); db(0xa9); db(0x01); db(0x98);
+ db(0x67); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x62); db(0x4a); db(0x83);
+ db(0x6b); db(0x00); db(0xf6); db(0x86); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x2f); db(0x09); db(0x43); db(0xfa); db(0x15); db(0x45); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x22); db(0x5f); db(0x22); db(0x00); db(0x30); db(0x3c);
+ db(0xff); db(0x18); db(0x61); db(0x00); db(0x13); db(0xb4); db(0x4e); db(0x90);
+ db(0x20); db(0x03); db(0x16); db(0x29); db(0x00); db(0x4f); db(0x4a); db(0x80);
+ db(0x66); db(0x24); db(0x27); db(0x7c); db(0x00); db(0x00); db(0x17); db(0x70);
+ db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf4); db(0x38); db(0x70); db(0xff);
+ db(0x22); db(0x0c); db(0x66); db(0x06); db(0x41); db(0xfa); db(0xf4); db(0x76);
+ db(0x70); db(0x00); db(0x27); db(0x40); db(0x00); db(0x24); db(0x20); db(0x08);
+ db(0xe4); db(0x88); db(0x27); db(0x40); db(0x00); db(0x20); db(0x08); db(0x07);
+ db(0x00); db(0x03); db(0x66); db(0x48); db(0x08); db(0x07); db(0x00); db(0x00);
+ db(0x67); db(0x42); db(0x0c); db(0x03); db(0x00); db(0x80); db(0x67); db(0x3c);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x14); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x22); db(0x40); db(0x30); db(0x3c); db(0x10); db(0x00); db(0x80); db(0x03);
+ db(0x33); db(0x40); db(0x00); db(0x08); db(0x23); db(0x6d); db(0x01); db(0x04);
+ db(0x00); db(0x0a); db(0x23); db(0x4b); db(0x00); db(0x10); db(0x41); db(0xec);
+ db(0x00); db(0x4a); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x4e); db(0xae);
+ db(0xfe); db(0xf2); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x72); db(0x00);
+ db(0x70); db(0x00); db(0x4e); db(0x75); db(0x76); db(0x00); db(0x24); db(0x49);
+ db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07);
+ db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02);
+ db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0x80); db(0x2c); db(0x4c);
+ db(0x61); db(0x00); db(0x0f); db(0x3a); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x64);
+ db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30);
+ db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x06); db(0x82); db(0x00); db(0x00); db(0x10); db(0x04); db(0x20); db(0x02);
+ db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x42); db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a);
+ db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a);
+ db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x43); db(0xfa); db(0x13); db(0xea); db(0x4e); db(0xae); db(0xfe); db(0x68);
+ db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x26); db(0x0f); db(0x4f); db(0xea);
+ db(0x10); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x52); db(0x2e); db(0x43);
+ db(0x26); db(0x01); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x03); db(0x70); db(0x00);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01);
+ db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa);
+ db(0x13); db(0xdb); db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02);
+ db(0x43); db(0xfa); db(0x13); db(0xc9); db(0x70); db(0x00); db(0x4e); db(0xae);
+ db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x38); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40); db(0x4a); db(0x80);
+ db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0xa8); db(0x48); db(0xe7);
+ db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfd); db(0xbc); db(0x4c); db(0xdf);
+ db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe);
+ db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46);
+ db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x02); db(0x38); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c);
+ db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x4e); db(0x75); db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00);
+ db(0x12); db(0x20); db(0x70); db(0x03); db(0x4e); db(0x90); db(0x22); db(0x6b);
+ db(0x00); db(0xa8); db(0x23); db(0x40); db(0x00); db(0x20); db(0x67); db(0x16);
+ db(0x70); db(0x00); db(0x23); db(0x40); db(0x00); db(0x24); db(0x33); db(0x7c);
+ db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x7e); db(0x00); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x20); db(0x40); db(0x4b); db(0xe8);
+ db(0x00); db(0x5c); db(0x43); db(0xfa); db(0x13); db(0x00); db(0x4e); db(0xae);
+ db(0xfe); db(0x68); db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
+ db(0x00); db(0xb9); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x26); db(0x40); db(0x7c); db(0x00);
+ db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46);
+ db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb);
+ db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x11); db(0xb8);
+ db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xc8);
+ db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x11); db(0xb5);
+ db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0xb8);
+ db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00); db(0x26); db(0x07);
+ db(0x66); db(0x12); db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x80);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40);
+ db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x40);
+ db(0x61); db(0x00); db(0x11); db(0x6e); db(0x70); db(0x00); db(0x4e); db(0x90);
+ db(0x24); db(0x00); db(0x70); db(0x01); db(0x61); db(0x00); db(0xf9); db(0xb8);
+ db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01);
+ db(0x61); db(0x00); db(0xfb); db(0x20); db(0x60); db(0x00); db(0x01); db(0x44);
+ db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40);
+ db(0x4a); db(0x80); db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d);
+ db(0x00); db(0x0f); db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x08); db(0x2b); db(0x00); db(0x00);
+ db(0x00); db(0xad); db(0x67); db(0x0a); db(0x61); db(0x00); db(0xff); db(0x04);
+ db(0x08); db(0xab); db(0x00); db(0x00); db(0x00); db(0xad); db(0x08); db(0x2b);
+ db(0x00); db(0x01); db(0x00); db(0xad); db(0x67); db(0x0a); db(0x61); db(0x00);
+ db(0x0c); db(0x26); db(0x08); db(0xab); db(0x00); db(0x01); db(0x00); db(0xad);
+ db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x24); db(0x30); db(0x3c);
+ db(0xff); db(0x58); db(0x61); db(0x00); db(0x11); db(0x04); db(0x70); db(0x01);
+ db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x04); db(0x61); db(0x00);
+ db(0xfb); db(0x98); db(0x42); db(0x2b); db(0x00); db(0xac); db(0x30); db(0x3c);
+ db(0xff); db(0x58); db(0x61); db(0x00); db(0x10); db(0xec); db(0x70); db(0x02);
+ db(0x4e); db(0x90); db(0x20); db(0x0c); db(0x67); db(0x56); db(0x0c); db(0x6c);
+ db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4e); db(0x0c); db(0xac);
+ db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x44);
+ db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3c);
+ db(0x20); db(0x6c); db(0x00); db(0x1a); db(0x20); db(0x28); db(0x00); db(0x0c);
+ db(0x02); db(0x80); db(0x80); db(0x00); db(0x00); db(0x08); db(0x0c); db(0x80);
+ db(0x80); db(0x00); db(0x00); db(0x08); db(0x66); db(0x1a); db(0x02); db(0xa8);
+ db(0x7f); db(0xff); db(0xff); db(0xff); db(0x00); db(0x0c); db(0x20); db(0x68);
+ db(0x00); db(0x10); db(0x22); db(0x4c); db(0x12); db(0xbc); db(0x00); db(0x08);
+ db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0x00); db(0xff); db(0x4a);
+ db(0x22); db(0x4c); db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e);
+ db(0x60); db(0x00); db(0xff); db(0x3e); db(0x74); db(0xfe); db(0x20); db(0x0c);
+ db(0x67); db(0x14); db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x42);
+ db(0x74); db(0xff); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
+ db(0x10); db(0x78); db(0x70); db(0x01); db(0x4e); db(0x90); db(0x45); db(0xeb);
+ db(0x00); db(0x04); db(0x20); db(0x52); db(0x20); db(0x08); db(0x67); db(0x00);
+ db(0xff); db(0x18); db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28);
+ db(0x00); db(0x04); db(0xb4); db(0x80); db(0x66); db(0x16); db(0x48); db(0xe7);
+ db(0x00); db(0xc0); db(0x28); db(0x68); db(0x00); db(0x0a); db(0x61); db(0x4a);
+ db(0x53); db(0x85); db(0x4c); db(0xdf); db(0x03); db(0x00); db(0x24); db(0x89);
+ db(0x20); db(0x49); db(0x60); db(0xd8); db(0x24); db(0x48); db(0x20); db(0x49);
+ db(0x60); db(0xd2); db(0x0c); db(0x85); db(0x00); db(0x00); db(0x00); db(0x14);
+ db(0x65); db(0x00); db(0x00); db(0x0a); db(0x70); db(0x01); db(0x29); db(0x40);
+ db(0x00); db(0x04); db(0x60); db(0x12); db(0x61); db(0x5e); db(0x30); db(0x3c);
+ db(0xff); db(0x30); db(0x61); db(0x00); db(0x10); db(0x24); db(0x4e); db(0x90);
+ db(0x4a); db(0x80); db(0x67); db(0x0e); db(0x52); db(0x85); db(0x28); db(0xab);
+ db(0x00); db(0x04); db(0x27); db(0x4c); db(0x00); db(0x04); db(0x60); db(0x00);
+ db(0xfe); db(0xc0); db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00);
+ db(0xfe); db(0xb8); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x00); db(0x1f);
+ db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00); db(0xfa); db(0x80);
+ db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08);
+ db(0x66); db(0x14); db(0x61); db(0x00); db(0xfa); db(0xae); db(0x66); db(0x0e);
+ db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x0f); db(0xe2);
+ db(0x70); db(0x00); db(0x4e); db(0x90); db(0x60); db(0xec); db(0x22); db(0x54);
+ db(0x20); db(0x6c); db(0x00); db(0x04); db(0x29); db(0x4d); db(0x00); db(0x04);
+ db(0x4e); db(0xee); db(0xfe); db(0x92); db(0x2f); db(0x05); db(0x7a); db(0xfc);
+ db(0x24); db(0x53); db(0x2e); db(0x0a); db(0x22); db(0x0a); db(0x67); db(0x00);
+ db(0x00); db(0x0c); db(0x52); db(0x85); db(0x67); db(0x1e); db(0x22); db(0x4a);
+ db(0x24); db(0x52); db(0x60); db(0xf0); db(0x52); db(0x85); db(0x67); db(0x3c);
+ db(0x24); db(0x47); db(0x70); db(0x18); db(0x72); db(0x01); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x52); db(0x46); db(0x24); db(0x40); db(0x24); db(0x87);
+ db(0x2e); db(0x0a); db(0x60); db(0xe8); db(0x20); db(0x12); db(0x67); db(0x24);
+ db(0x20); db(0x40); db(0x20); db(0x10); db(0x67); db(0x1e); db(0x20); db(0x40);
+ db(0x20); db(0x10); db(0x67); db(0x18); db(0x70); db(0x00); db(0x22); db(0x80);
+ db(0x22); db(0x4a); db(0x24); db(0x51); db(0x70); db(0x18); db(0x4e); db(0xae);
+ db(0xff); db(0x2e); db(0x06); db(0x86); db(0x00); db(0x01); db(0x00); db(0x00);
+ db(0x20); db(0x0a); db(0x66); db(0xec); db(0x26); db(0x87); db(0x2a); db(0x1f);
+ db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8);
+ db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8);
+ db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c);
+ db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
+ db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e);
+ db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42);
+ db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda);
+ db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14);
+ db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80);
+ db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02);
+ db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x40);
+ db(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42);
+ db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80);
+ db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a);
+ db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18);
+ db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02);
+ db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00);
+ db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a);
+ db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01);
+ db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80);
+ db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09);
+ db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c);
+ db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00);
+ db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36);
+ db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09);
+ db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf);
+ db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x0e); db(0xe0);
+ db(0x43); db(0xfa); db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00);
+ db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x02); db(0x0c);
+ db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c);
+ db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38);
+ db(0x22); db(0x6d); db(0x02); db(0x0c); db(0x25); db(0x69); db(0x00); db(0x20);
+ db(0x00); db(0x0e); db(0x25); db(0x69); db(0x00); db(0x24); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12);
+ db(0x22); db(0x6d); db(0x02); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x01);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0xf8); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca);
+ db(0x97); db(0xcb); db(0x99); db(0xcc); db(0x78); db(0x00); db(0x2c); db(0x6d);
+ db(0x00); db(0x18); db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28);
+ db(0x00); db(0x3c); db(0x67); db(0x5c); db(0x20); db(0x40); db(0x41); db(0xe8);
+ db(0x00); db(0x2c); db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8);
+ db(0x72); db(0xff); db(0x74); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x48);
+ db(0x26); db(0x00); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x41); db(0xed);
+ db(0x00); db(0xc0); db(0x70); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xed); db(0x00); db(0xc0); db(0x38); db(0x28); db(0x00); db(0x64);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x91); db(0xc8); db(0x43); db(0xed);
+ db(0x00); db(0x38); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
+ db(0x22); db(0x3c); db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03);
+ db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff);
+ db(0x4a); db(0x80); db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x38);
+ db(0x22); db(0x2a); db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36);
+ db(0x20); db(0x2c); db(0x00); db(0x1c); db(0xb8); db(0x6d); db(0x00); db(0x2c);
+ db(0x66); db(0x12); db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c);
+ db(0xb2); db(0xad); db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad);
+ db(0x00); db(0x24); db(0x67); db(0x40); db(0x2b); db(0x40); db(0x00); db(0x28);
+ db(0x2b); db(0x41); db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24);
+ db(0x3b); db(0x44); db(0x00); db(0x2c); db(0x91); db(0xc8); db(0x43); db(0xed);
+ db(0x00); db(0x90); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58);
+ db(0x22); db(0x3c); db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03);
+ db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04);
+ db(0x47); db(0xed); db(0x00); db(0x90); db(0x34); db(0x2d); db(0x00); db(0x2c);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00);
+ db(0x0d); db(0x18); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x1f);
+ db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e);
+ db(0x00); db(0x14); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
+ db(0x7c); db(0x00); db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x24); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4a);
+ db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c);
+ db(0x02); db(0x14); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x30); db(0x3c);
+ db(0x3e); db(0x00); db(0x61); db(0x00); db(0x0c); db(0xd4); db(0x2b); db(0x48);
+ db(0x02); db(0x10); db(0x28); db(0x48); db(0x47); db(0xed); db(0x00); db(0x16);
+ db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4a); db(0x00); db(0x08);
db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40);
db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x05);
- db(0x61); db(0x00); db(0x0c); db(0x8a); db(0x20); db(0x0d); db(0x06); db(0x80);
- db(0x00); db(0x00); db(0x02); db(0x10); db(0x4e); db(0x90); db(0x43); db(0xed);
- db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x08);
- db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09); db(0x41); db(0xfa);
- db(0x0d); db(0x0a); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
- db(0x02); db(0xf4); db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d);
- db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58);
- db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00);
- db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a);
- db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14);
- db(0x66); db(0x16); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0);
- db(0x43); db(0xfa); db(0x0d); db(0x5a); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0xd0);
- db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab);
- db(0x00); db(0x1c); db(0x66); db(0xc4); db(0x43); db(0xfa); db(0x0d); db(0x50);
- db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40);
- db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb4); db(0x4a); db(0xad);
- db(0x02); db(0x08); db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c);
- db(0x66); db(0xa6); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee);
- db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x0b); db(0xfe); db(0x4e); db(0xae);
- db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76);
- db(0x4a); db(0x82); db(0x67); db(0x8c); db(0x41); db(0xfa); db(0x0b); db(0xec);
- db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x2e);
- db(0x2b); db(0x40); db(0x02); db(0x08); db(0x67); db(0x00); db(0x02); db(0x32);
- db(0x60); db(0x00); db(0xff); db(0x76); db(0x4a); db(0xad); db(0x02); db(0x0c);
- db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00);
- db(0xff); db(0x68); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee);
- db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x0b); db(0xcb); db(0x4e); db(0xae);
- db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76);
- db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4c); db(0x41); db(0xfa);
- db(0x0b); db(0xb7); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00);
- db(0xfc); db(0xec); db(0x2b); db(0x40); db(0x02); db(0x0c); db(0x67); db(0x00);
- db(0x01); db(0xf0); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00);
- db(0x61); db(0x00); db(0x0b); db(0x82); db(0x4e); db(0x90); db(0x60); db(0x00);
- db(0xff); db(0x28); db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x12);
- db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c); db(0x20); db(0x4b);
- db(0x61); db(0x00); db(0xfd); db(0xb4); db(0x70); db(0x32); db(0x27); db(0x40);
- db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08); db(0x45); db(0xed);
- db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c);
- db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24);
- db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x2d); db(0x02); db(0x10);
- db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00); db(0x01); db(0x52);
- db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00); db(0x01); db(0x4a);
- db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48); db(0x00); db(0x0a);
- db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04); db(0x15); db(0x7c);
- db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8);
- db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68);
- db(0x00); db(0x0c); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x61); db(0x00);
- db(0x01); db(0x72); db(0x31); db(0x6d); db(0x02); db(0x1a); db(0x00); db(0x0e);
- db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x6d); db(0x02); db(0x1c);
- db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x6d);
- db(0x02); db(0x14); db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18);
- db(0x31); db(0x6d); db(0x02); db(0x16); db(0x00); db(0x1a); db(0x43); db(0xed);
- db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x2d); db(0x02); db(0x30);
- db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xed); db(0x02); db(0x32);
- db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x20); db(0x6b); db(0x08);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0);
- db(0x30); db(0x2d); db(0x02); db(0x22); db(0x6b); db(0x08); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x2d);
- db(0x02); db(0x18); db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x1e);
- db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0);
- db(0x30); db(0x2d); db(0x02); db(0x24); db(0x6b); db(0x10); db(0x22); db(0xfc);
- db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x2d); db(0x02); db(0x2a);
- db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d);
- db(0x02); db(0x26); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
- db(0xa0); db(0x04); db(0x30); db(0x2d); db(0x02); db(0x2c); db(0x48); db(0xc0);
- db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2d); db(0x02); db(0x28);
- db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05);
- db(0x30); db(0x2d); db(0x02); db(0x2e); db(0x48); db(0xc0); db(0xe1); db(0x80);
- db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x2d); db(0x02); db(0x36);
- db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08);
- db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00); db(0xfc); db(0x68);
- db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x2d);
- db(0x02); db(0x32); db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b);
- db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x22);
- db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04);
- db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03); db(0x4a); db(0x00);
- db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41);
- db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00);
- db(0xfc); db(0x2e); db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42);
- db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44); db(0x00); db(0x04);
- db(0x10); db(0x2d); db(0x02); db(0x10); db(0x08); db(0x00); db(0x00); db(0x00);
- db(0x67); db(0x00); db(0xfd); db(0x8e); db(0x42); db(0x92); db(0x35); db(0x7c);
- db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06);
- db(0x61); db(0x00); db(0x00); db(0x38); db(0x20); db(0x6b); db(0x00); db(0x14);
- db(0x30); db(0x2d); db(0x02); db(0x38); db(0x32); db(0x28); db(0x00); db(0x30);
- db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00);
- db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x2d); db(0x02); db(0x3a);
- db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41);
- db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c);
- db(0x61); db(0x00); db(0xfb); db(0xa0); db(0x60); db(0x00); db(0xfd); db(0x4a);
- db(0x4e); db(0x75); db(0x22); db(0x2d); db(0x02); db(0x32); db(0x70); db(0x00);
- db(0x08); db(0x01); db(0x00); db(0x00); db(0x67); db(0x04); db(0x08); db(0xc0);
- db(0x00); db(0x0e); db(0x08); db(0x01); db(0x00); db(0x01); db(0x67); db(0x04);
- db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x08); db(0x01); db(0x00); db(0x02);
- db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0c); db(0x35); db(0x40);
- db(0x00); db(0x08); db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x02); db(0x08);
- db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x02); db(0x0c); db(0x67); db(0x0e);
- db(0x30); db(0x29); db(0x02); db(0x12); db(0xb0); db(0x69); db(0x00); db(0x16);
- db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69);
+ db(0x61); db(0x00); db(0x0c); db(0xae); db(0x20); db(0x0c); db(0x4e); db(0x90);
+ db(0x43); db(0xed); db(0x00); db(0x00); db(0x13); db(0x7c); db(0x00); db(0x02);
+ db(0x00); db(0x08); db(0x13); db(0x7c); db(0x00); db(0x05); db(0x00); db(0x09);
+ db(0x41); db(0xfa); db(0x0d); db(0x34); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x03); db(0x14); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2);
+ db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06);
+ db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab);
+ db(0x00); db(0x14); db(0x66); db(0x22); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x0d); db(0x84); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14);
+ db(0x67); db(0xd0); db(0x22); db(0x00); db(0x30); db(0x3c); db(0x3f); db(0xf4);
+ db(0x61); db(0x00); db(0x0c); db(0x46); db(0x20); db(0x81); db(0x4a); db(0xab);
+ db(0x00); db(0x18); db(0x66); db(0x24); db(0x4a); db(0xab); db(0x00); db(0x1c);
+ db(0x66); db(0xb8); db(0x43); db(0xfa); db(0x0d); db(0x6e); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18);
+ db(0x67); db(0x00); db(0xff); db(0xa8); db(0x22); db(0x00); db(0x30); db(0x3c);
+ db(0x3f); db(0xf8); db(0x61); db(0x00); db(0x0c); db(0x1c); db(0x20); db(0x81);
+ db(0x4a); db(0xad); db(0x02); db(0x08); db(0x66); db(0x3a); db(0x4a); db(0xab);
+ db(0x00); db(0x1c); db(0x66); db(0x8e); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x0c); db(0x10);
+ db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x74);
+ db(0x41); db(0xfa); db(0x0b); db(0xfc); db(0x70); db(0x00); db(0x72); db(0x00);
+ db(0x61); db(0x00); db(0xfd); db(0x0c); db(0x2b); db(0x40); db(0x02); db(0x08);
+ db(0x67); db(0x00); db(0x02); db(0x38); db(0x60); db(0x00); db(0xff); db(0x5c);
+ db(0x4a); db(0xad); db(0x02); db(0x0c); db(0x66); db(0x48); db(0x4a); db(0xab);
+ db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x4e); db(0x4e); db(0xae);
+ db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa);
+ db(0x0b); db(0xdb); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00);
+ db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00);
+ db(0xff); db(0x32); db(0x41); db(0xfa); db(0x0b); db(0xc7); db(0x70); db(0x00);
+ db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xca); db(0x2b); db(0x40);
+ db(0x02); db(0x0c); db(0x67); db(0x00); db(0x01); db(0xf6); db(0x30); db(0x3c);
+ db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00); db(0x0b); db(0x92);
+ db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x0e); db(0x0c); db(0x47);
+ db(0x00); db(0x24); db(0x65); db(0x18); db(0x0c); db(0x47); db(0x00); db(0x32);
+ db(0x64); db(0x12); db(0x53); db(0xab); db(0x00); db(0x34); db(0x6a); db(0x0c);
+ db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0x8c); db(0x70); db(0x32);
+ db(0x27); db(0x40); db(0x00); db(0x34); db(0x22); db(0x6d); db(0x02); db(0x08);
+ db(0x45); db(0xed); db(0x01); db(0x3c); db(0x33); db(0x7c); db(0x00); db(0x0b);
+ db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16);
+ db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x2c);
+ db(0x00); db(0x00); db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00);
+ db(0x01); db(0x52); db(0x08); db(0x00); db(0x00); db(0x01); db(0x67); db(0x00);
+ db(0x01); db(0x4a); db(0x41); db(0xed); db(0x01); db(0x68); db(0x25); db(0x48);
+ db(0x00); db(0x0a); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04);
+ db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90);
+ db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08);
+ db(0x42); db(0x68); db(0x00); db(0x0c); db(0x42); db(0x6a); db(0x00); db(0x06);
+ db(0x61); db(0x00); db(0x01); db(0x72); db(0x31); db(0x6c); db(0x00); db(0x0a);
+ db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x6c);
+ db(0x00); db(0x0c); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14);
+ db(0x31); db(0x6c); db(0x00); db(0x04); db(0x00); db(0x16); db(0x42); db(0x68);
+ db(0x00); db(0x18); db(0x31); db(0x6c); db(0x00); db(0x06); db(0x00); db(0x1a);
+ db(0x43); db(0xed); db(0x01); db(0x88); db(0x21); db(0x49); db(0x00); db(0x1c);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x2c);
+ db(0x00); db(0x20); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xec);
+ db(0x00); db(0x22); db(0x70); db(0x00); db(0x30); db(0x2c); db(0x00); db(0x10);
+ db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09);
+ db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x12); db(0x6b); db(0x08);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0);
+ db(0x30); db(0x2c); db(0x00); db(0x08); db(0x6b); db(0x14); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x2c);
+ db(0x00); db(0x0e); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01);
+ db(0x22); db(0xc0); db(0x30); db(0x2c); db(0x00); db(0x14); db(0x6b); db(0x10);
+ db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x2c);
+ db(0x00); db(0x1a); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0);
+ db(0x30); db(0x2c); db(0x00); db(0x16); db(0x6b); db(0x10); db(0x22); db(0xfc);
+ db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x2c); db(0x00); db(0x1c);
+ db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x2c);
+ db(0x00); db(0x18); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x05); db(0x30); db(0x2c); db(0x00); db(0x1e); db(0x48); db(0xc0);
+ db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x2c);
+ db(0x00); db(0x26); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03);
+ db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91); db(0x61); db(0x00);
+ db(0xfc); db(0x40); db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01);
+ db(0x28); db(0x2c); db(0x00); db(0x22); db(0x20); db(0x04); db(0xc0); db(0x82);
+ db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80);
+ db(0x67); db(0x22); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00);
+ db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03);
+ db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07);
+ db(0x35); db(0x41); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
+ db(0x61); db(0x00); db(0xfc); db(0x06); db(0x52); db(0x43); db(0xd4); db(0x42);
+ db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44);
+ db(0x00); db(0x04); db(0x10); db(0x2c); db(0x00); db(0x00); db(0x08); db(0x00);
+ db(0x00); db(0x00); db(0x67); db(0x00); db(0xfd); db(0x6e); db(0x42); db(0x92);
+ db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a);
+ db(0x00); db(0x06); db(0x61); db(0x00); db(0x00); db(0x38); db(0x20); db(0x6b);
+ db(0x00); db(0x14); db(0x30); db(0x2c); db(0x00); db(0x28); db(0x32); db(0x28);
+ db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02);
+ db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x2c);
+ db(0x00); db(0x2a); db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41);
+ db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40);
+ db(0x00); db(0x0c); db(0x61); db(0x00); db(0xfb); db(0x78); db(0x60); db(0x00);
+ db(0xfd); db(0x2a); db(0x4e); db(0x75); db(0x22); db(0x2c); db(0x00); db(0x22);
+ db(0x70); db(0x00); db(0x08); db(0x01); db(0x00); db(0x00); db(0x67); db(0x04);
+ db(0x08); db(0xc0); db(0x00); db(0x0e); db(0x08); db(0x01); db(0x00); db(0x01);
+ db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x08); db(0x01);
+ db(0x00); db(0x02); db(0x67); db(0x04); db(0x08); db(0xc0); db(0x00); db(0x0c);
+ db(0x35); db(0x40); db(0x00); db(0x08); db(0x4e); db(0x75); db(0x4a); db(0xa9);
+ db(0x02); db(0x08); db(0x67); db(0x18); db(0x4a); db(0xa9); db(0x02); db(0x0c);
+ db(0x67); db(0x12); db(0x20); db(0x69); db(0x02); db(0x10); db(0x30); db(0x28);
+ db(0x00); db(0x02); db(0xb0); db(0x69); db(0x00); db(0x16); db(0x67); db(0x18);
+ db(0x33); db(0x40); db(0x00); db(0x16); db(0x2f); db(0x09); db(0x2c); db(0x69);
db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69);
- db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69);
- db(0x00); db(0x46); db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32);
- db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02);
- db(0x61); db(0x00); db(0x09); db(0x32); db(0x4e); db(0x90); db(0x41); db(0xf9);
+ db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x22); db(0x5f);
+ db(0x53); db(0x69); db(0x00); db(0x46); db(0x6a); db(0x10); db(0x33); db(0x7c);
+ db(0x00); db(0x32); db(0x00); db(0x46); db(0x30); db(0x3c); db(0xff); db(0xff);
+ db(0x61); db(0x00); db(0x09); db(0x36); db(0x50); db(0xd0); db(0x41); db(0xf9);
db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75);
db(0x48); db(0xe7); db(0x00); db(0x06); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x11); db(0x61); db(0x00); db(0x09); db(0x18); db(0x4e); db(0x90);
+ db(0x72); db(0x11); db(0x61); db(0x00); db(0x09); db(0x1c); db(0x4e); db(0x90);
db(0x08); db(0x00); db(0x00); db(0x00); db(0x67); db(0x42); db(0x2c); db(0x78);
db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x88);
db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae);
db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x40);
db(0x2a); db(0x40); db(0x2b); db(0x4e); db(0x00); db(0x14); db(0x30); db(0x3c);
- db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0x08); db(0xe6);
- db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x09); db(0x66);
+ db(0xff); db(0x38); db(0x72); db(0x0e); db(0x61); db(0x00); db(0x08); db(0xea);
+ db(0x20); db(0x0d); db(0x4e); db(0x90); db(0x41); db(0xfa); db(0x09); db(0x6a);
db(0x43); db(0xfa); db(0x01); db(0x12); db(0x70); db(0xf6); db(0x22); db(0x3c);
- db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xeb); db(0xf0);
+ db(0x00); db(0x00); db(0x27); db(0x10); db(0x61); db(0x00); db(0xeb); db(0x8c);
db(0x70); db(0x00); db(0x4c); db(0xdf); db(0x60); db(0x00); db(0x4e); db(0x75);
db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); db(0x61); db(0x00);
- db(0x08); db(0xbc); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0);
+ db(0x08); db(0xc0); db(0x4e); db(0x90); db(0x4e); db(0x75); db(0x61); db(0xf0);
db(0x20); db(0x0d); db(0x67); db(0x1c); db(0x2c); db(0x6d); db(0x00); db(0x14);
db(0x20); db(0x2d); db(0x00); db(0x18); db(0x67); db(0x06); db(0x22); db(0x40);
db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4d); db(0x20); db(0x3c);
db(0x00); db(0x00); db(0x00); db(0x88); db(0x4e); db(0xae); db(0xff); db(0x2e);
db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x3e);
- db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x08); db(0xf4);
+ db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa); db(0x08); db(0xf8);
db(0x22); db(0x08); db(0x24); db(0x3c); db(0x00); db(0x00); db(0x03); db(0xed);
db(0x4e); db(0xae); db(0xff); db(0xe2); db(0x28); db(0x00); db(0x67); db(0x4c);
db(0x45); db(0xed); db(0x00); db(0x68); db(0x42); db(0x92); db(0x34); db(0xaa);
db(0x22); db(0x04); db(0x4e); db(0xae); db(0xff); db(0xd6); db(0xb6); db(0x80);
db(0x66); db(0x12); db(0x4a); db(0x6a); db(0x00); db(0x10); db(0x66); db(0xc4);
db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x10); db(0x61); db(0x00);
- db(0x08); db(0x2c); db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04);
+ db(0x08); db(0x30); db(0x4e); db(0x90); db(0x22); db(0x04); db(0x67); db(0x04);
db(0x4e); db(0xae); db(0xff); db(0xdc); db(0x4c); db(0xdf); db(0x7c); db(0x1c);
db(0x4e); db(0x75); db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x41); db(0xfa);
- db(0x08); db(0x6c); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae);
+ db(0x08); db(0x70); db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae);
db(0xff); db(0xac); db(0x22); db(0x00); db(0x67); db(0x34); db(0x4e); db(0xae);
db(0xff); db(0xa6); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x45); db(0xed);
db(0x00); db(0x38); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6);
- db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa); db(0x08); db(0x5c);
+ db(0x15); db(0x40); db(0x00); db(0x14); db(0x41); db(0xfa); db(0x08); db(0x60);
db(0x24); db(0x88); db(0x25); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x12);
db(0x00); db(0x0c); db(0x25); db(0x6d); db(0x00); db(0x08); db(0x00); db(0x10);
db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x22); db(0x0a); db(0x4e); db(0xae);
db(0xfc); db(0x88); db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x4e); db(0x75);
db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0d); db(0x61); db(0x00);
- db(0x07); db(0xbc); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0x07); db(0xc0); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
db(0xfe); db(0xfe); db(0x2a); db(0x40); db(0x2c); db(0x6d); db(0x00); db(0x14);
db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40);
- db(0x00); db(0x08); db(0x43); db(0xfa); db(0x08); db(0xbc); db(0x70); db(0x00);
+ db(0x00); db(0x08); db(0x43); db(0xfa); db(0x08); db(0xc0); db(0x70); db(0x00);
db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2b); db(0x40); db(0x00); db(0x18);
db(0x67); db(0x00); db(0xfe); db(0xdc); db(0x2c); db(0x40); db(0x72); db(0x32);
- db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x07); db(0xc2);
+ db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x41); db(0xfa); db(0x07); db(0xc6);
db(0x22); db(0x08); db(0x74); db(0xfe); db(0x4e); db(0xae); db(0xff); db(0xac);
db(0x4a); db(0x80); db(0x67); db(0xea); db(0x22); db(0x00); db(0x4e); db(0xae);
db(0xff); db(0xa6); db(0x72); db(0x32); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x41); db(0xfa); db(0x07); db(0xac); db(0x22); db(0x08); db(0x74); db(0xfe);
+ db(0x41); db(0xfa); db(0x07); db(0xb0); db(0x22); db(0x08); db(0x74); db(0xfe);
db(0x4e); db(0xae); db(0xff); db(0xac); db(0x4a); db(0x80); db(0x67); db(0x00);
db(0xfe); db(0xa6); db(0x22); db(0x00); db(0x4e); db(0xae); db(0xff); db(0xa6);
- db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf8); db(0x20);
+ db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x61); db(0x00); db(0xf7); db(0xf2);
db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00);
- db(0xf8); db(0x64); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00);
+ db(0xf8); db(0x36); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x00);
db(0xfe); db(0x86); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d);
db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); db(0x20); db(0x2d);
- db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x07); db(0x85); db(0x22); db(0x4c);
+ db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x07); db(0x89); db(0x22); db(0x4c);
db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x4a); db(0x80); db(0x66); db(0xe2);
db(0x20); db(0x6c); db(0x00); db(0x14); db(0x0c); db(0x68); db(0x00); db(0x25);
db(0x00); db(0x14); db(0x64); db(0x0c); db(0x61); db(0x00); db(0xfe); db(0x4a);
db(0x2b); db(0x4d); db(0x00); db(0x2c); db(0x41); db(0xfa); db(0x01); db(0x60);
db(0x2b); db(0x48); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae);
db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0f);
- db(0x61); db(0x00); db(0x06); db(0xd2); db(0x4e); db(0x90); db(0x4a); db(0xad);
+ db(0x61); db(0x00); db(0x06); db(0xd6); db(0x4e); db(0x90); db(0x4a); db(0xad);
db(0x00); db(0x00); db(0x66); db(0x1c); db(0x70); db(0x00); db(0x74); db(0x00);
db(0x14); db(0x2d); db(0x00); db(0x4c); db(0x05); db(0xc0); db(0x08); db(0xc0);
db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x05); db(0x00);
db(0x20); db(0x2d); db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x76);
db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40);
db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c);
- db(0x61); db(0x00); db(0x06); db(0x92); db(0x4e); db(0x90); db(0x4a); db(0x80);
+ db(0x61); db(0x00); db(0x06); db(0x96); db(0x4e); db(0x90); db(0x4a); db(0x80);
db(0x67); db(0x40); db(0x4a); db(0xad); db(0x00); db(0x04); db(0x67); db(0x3a);
db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); db(0x42); db(0x2c);
db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); db(0x29); db(0x6d);
db(0x00); db(0x34); db(0x29); db(0x48); db(0x00); db(0x28); db(0x20); db(0x02);
db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c);
db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x0b); db(0x61); db(0x00); db(0x05); db(0xb8); db(0x20); db(0x2c);
+ db(0x72); db(0x0b); db(0x61); db(0x00); db(0x05); db(0xbc); db(0x20); db(0x2c);
db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); db(0x20); db(0x02);
db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); db(0x00); db(0x20);
db(0x67); db(0x00); db(0xfe); db(0xda); db(0x41); db(0xed); db(0x00); db(0x30);
db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); db(0x70); db(0x00);
db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x74); db(0xff);
db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x11); db(0x61); db(0x00);
- db(0x05); db(0x4c); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01);
+ db(0x05); db(0x50); db(0x4e); db(0x90); db(0x08); db(0x00); db(0x00); db(0x01);
db(0x67); db(0x38); db(0x74); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x7c);
- db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x05); db(0x5e);
+ db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x05); db(0x62);
db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x4a); db(0x80); db(0x67); db(0x1e);
db(0x20); db(0x40); db(0x43); db(0xfa); db(0x00); db(0x22); db(0x24); db(0x68);
db(0xff); db(0xe4); db(0x21); db(0x49); db(0xff); db(0xe4); db(0x22); db(0x48);
db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x65); db(0x61); db(0x00);
- db(0x05); db(0x14); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae);
+ db(0x05); db(0x18); db(0x4e); db(0x90); db(0x74); db(0x01); db(0x4e); db(0xae);
db(0xff); db(0x76); db(0x20); db(0x02); db(0x4e); db(0x75); db(0x59); db(0x8f);
db(0x48); db(0xe7); db(0xc0); db(0x80); db(0x30); db(0x3c); db(0xff); db(0x38);
- db(0x72); db(0x66); db(0x61); db(0x00); db(0x04); db(0xf8); db(0x4e); db(0x90);
+ db(0x72); db(0x66); db(0x61); db(0x00); db(0x04); db(0xfc); db(0x4e); db(0x90);
db(0x4c); db(0xdf); db(0x01); db(0x03); db(0x4e); db(0x75); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x41); db(0xfa); db(0x05); db(0xf7); db(0x43); db(0xfa);
+ db(0x00); db(0x04); db(0x41); db(0xfa); db(0x05); db(0xfb); db(0x43); db(0xfa);
db(0x00); db(0x14); db(0x70); db(0x0f); db(0x22); db(0x3c); db(0x00); db(0x00);
- db(0x1f); db(0x40); db(0x61); db(0x00); db(0xe7); db(0xfa); db(0x4e); db(0x75);
+ db(0x1f); db(0x40); db(0x61); db(0x00); db(0xe7); db(0x96); db(0x4e); db(0x75);
db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0x00); db(0x43); db(0xfa);
- db(0x05); db(0xe0); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x72); db(0x02);
- db(0x30); db(0x3c); db(0xff); db(0x3c); db(0x61); db(0x00); db(0x04); db(0xb6);
+ db(0x05); db(0xe4); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x72); db(0x02);
+ db(0x30); db(0x3c); db(0xff); db(0x3c); db(0x61); db(0x00); db(0x04); db(0xba);
db(0x24); db(0x48); db(0x72); db(0x01); db(0x4e); db(0x90); db(0x4a); db(0x81);
db(0x67); db(0x0c); db(0x26); db(0x41); db(0x4e); db(0xae); db(0xfe); db(0x08);
db(0x72); db(0x02); db(0x20); db(0x4b); db(0x4e); db(0x92); db(0x22); db(0x4e);
db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0xbc); db(0xfc); db(0x00); db(0x00);
db(0x67); db(0x06); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x4e); db(0x75);
db(0x48); db(0xe7); db(0x38); db(0x3e); db(0x24); db(0x48); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x43); db(0xfa); db(0x04); db(0xdc); db(0x4e); db(0xae);
+ db(0x00); db(0x04); db(0x43); db(0xfa); db(0x04); db(0xe0); db(0x4e); db(0xae);
db(0xfe); db(0x68); db(0x2a); db(0x40); db(0x20); db(0x6d); db(0x00); db(0x22);
db(0x20); db(0x28); db(0x00); db(0x18); db(0xe5); db(0x88); db(0x26); db(0x40);
db(0x24); db(0xab); db(0x00); db(0x04); db(0x20); db(0x0a); db(0xe4); db(0x88);
db(0x00); db(0x5c); db(0xe5); db(0x8a); db(0x22); db(0x42); db(0x22); db(0x51);
db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x22); db(0x02); db(0x43); db(0xfa);
db(0x00); db(0x0e); db(0x30); db(0x3c); db(0xff); db(0x2c); db(0x61); db(0x00);
- db(0x03); db(0x5c); db(0x4e); db(0x90); db(0x4e); db(0xd0); db(0x70); db(0x30);
+ db(0x03); db(0x60); db(0x4e); db(0x90); db(0x4e); db(0xd0); db(0x70); db(0x30);
db(0x60); db(0x0a); db(0x70); db(0x28); db(0x60); db(0x06); db(0x20); db(0x06);
db(0x60); db(0x02); db(0x20); db(0x06); db(0x12); db(0xd8); db(0x53); db(0x80);
db(0x6e); db(0xfa); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00);
db(0x00); db(0x00); db(0x00); db(0x01); db(0x00); db(0x00); db(0x00); db(0x04);
db(0x00); db(0x00); db(0x00); db(0x02); db(0x48); db(0xe7); db(0x00); db(0x22);
db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0xff); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x20); db(0x24); db(0x48);
+ db(0xff); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x24); db(0x24); db(0x48);
db(0x20); db(0x08); db(0x42); db(0x40); db(0x20); db(0x40); db(0x21); db(0x4e);
db(0x3f); db(0xfc); db(0x70); db(0x1a); db(0x22); db(0x3c); db(0x00); db(0x01);
db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x22); db(0x40);
- db(0x41); db(0xfa); db(0x02); db(0xf8); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x02); db(0xfc); db(0x23); db(0x48); db(0x00); db(0x0a);
db(0x23); db(0x4a); db(0x00); db(0x0e); db(0x41); db(0xfa); db(0x00); db(0xd6);
- db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x70);
+ db(0x23); db(0x48); db(0x00); db(0x12); db(0x33); db(0x7c); db(0x02); db(0x7a);
db(0x00); db(0x08); db(0x70); db(0x0d); db(0x4e); db(0xae); db(0xff); db(0x58);
db(0x4c); db(0xdf); db(0x44); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
db(0xc0); db(0xf0); db(0x20); db(0x3c); db(0x00); db(0x00); db(0xf0); db(0x00);
- db(0x61); db(0x00); db(0x02); db(0xd2); db(0x22); db(0x48); db(0x20); db(0x3c);
- db(0x00); db(0x00); db(0x40); db(0x00); db(0x61); db(0x00); db(0x02); db(0xc6);
+ db(0x61); db(0x00); db(0x02); db(0xd6); db(0x22); db(0x48); db(0x20); db(0x3c);
+ db(0x00); db(0x00); db(0x40); db(0x00); db(0x61); db(0x00); db(0x02); db(0xca);
db(0x70); db(0x03); db(0x4a); db(0xe9); db(0x00); db(0x03); db(0x67); db(0x0e);
db(0xd0); db(0xfc); db(0x20); db(0x00); db(0xd2); db(0xfc); db(0x00); db(0x08);
db(0x51); db(0xc8); db(0xff); db(0xf0); db(0x60); db(0xd4); db(0x42); db(0x29);
db(0x00); db(0x1a); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x30);
db(0x76); db(0x00); db(0x24); db(0x49); db(0x4a); db(0x2a); db(0x00); db(0x01);
db(0x67); db(0x36); db(0x76); db(0x01); db(0x20); db(0x0a); db(0x42); db(0x40);
- db(0x20); db(0x40); db(0x72); db(0x03); db(0x22); db(0x48); db(0x2c); db(0x68);
+ db(0x20); db(0x40); db(0x72); db(0x04); db(0x22); db(0x48); db(0x2c); db(0x68);
db(0x3f); db(0xfc); db(0xd1); db(0xfc); db(0x00); db(0x00); db(0x40); db(0x00);
db(0xd3); db(0xfc); db(0x00); db(0x00); db(0xf0); db(0x00); db(0x4a); db(0x29);
db(0x00); db(0x03); db(0x67); db(0x08); db(0x0c); db(0x29); db(0x00); db(0xff);
db(0x4b); db(0xe9); db(0x00); db(0x04); db(0x38); db(0x15); db(0xd8); db(0x44);
db(0x47); db(0xfa); db(0x00); db(0x4c); db(0x32); db(0x33); db(0x40); db(0x00);
db(0x66); db(0x22); db(0x20); db(0x3c); db(0x00); db(0x00); db(0xff); db(0xf4);
- db(0x61); db(0x00); db(0x01); db(0x62); db(0x20); db(0x10); db(0x67); db(0x14);
+ db(0x61); db(0x00); db(0x01); db(0x66); db(0x20); db(0x10); db(0x67); db(0x14);
db(0x22); db(0x40); db(0x1b); db(0x7c); db(0x00); db(0xfe); db(0x00); db(0x03);
db(0x20); db(0x3c); db(0x00); db(0x00); db(0x01); db(0x00); db(0x4e); db(0xae);
db(0xfe); db(0xbc); db(0x60); db(0x1a); db(0xd6); db(0xc1); db(0x4c); db(0xec);
db(0x07); db(0x00); db(0x00); db(0x04); db(0x4c); db(0xec); db(0x00); db(0x07);
db(0x00); db(0x04); db(0x4e); db(0x93); db(0x29); db(0x40); db(0x00); db(0x04);
db(0x1b); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x03); db(0x4c); db(0xdf);
- db(0x7e); db(0x1e); db(0x60); db(0x00); db(0xff); db(0x18); db(0x00); db(0xcc);
+ db(0x7e); db(0x1e); db(0x60); db(0x00); db(0xff); db(0x18); db(0x00); db(0xd0);
db(0x00); db(0x2c); db(0x00); db(0x30); db(0x00); db(0x34); db(0x00); db(0x38);
db(0x00); db(0x3c); db(0x00); db(0x42); db(0x00); db(0x48); db(0x00); db(0x50);
db(0x00); db(0x5a); db(0x00); db(0x48); db(0x00); db(0x50); db(0x00); db(0x5a);
- db(0x00); db(0x64); db(0x00); db(0x64); db(0x00); db(0x72); db(0x00); db(0x7a);
- db(0x00); db(0x82); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0xc8);
- db(0x00); db(0x8a); db(0x20); db(0x81); db(0x4e); db(0x75); db(0x30); db(0x81);
+ db(0x00); db(0x64); db(0x00); db(0x64); db(0x00); db(0x76); db(0x00); db(0x7e);
+ db(0x00); db(0x86); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0xcc);
+ db(0x00); db(0x8e); db(0x20); db(0x81); db(0x4e); db(0x75); db(0x30); db(0x81);
db(0x4e); db(0x75); db(0x10); db(0x81); db(0x4e); db(0x75); db(0x20); db(0x10);
db(0x4e); db(0x75); db(0x70); db(0x00); db(0x30); db(0x10); db(0x4e); db(0x75);
db(0x70); db(0x00); db(0x10); db(0x10); db(0x4e); db(0x75); db(0x20); db(0x02);
db(0x4e); db(0xae); db(0xfd); db(0x90); db(0x4e); db(0x75); db(0x20); db(0x02);
db(0xd0); db(0x80); db(0x4e); db(0xae); db(0xfd); db(0x90); db(0x4e); db(0x75);
db(0x20); db(0x02); db(0xe5); db(0x88); db(0x4e); db(0xae); db(0xfd); db(0x90);
- db(0x4e); db(0x75); db(0x53); db(0x42); db(0x67); db(0x04); db(0x12); db(0xd8);
- db(0x66); db(0xf8); db(0x42); db(0x29); db(0xff); db(0xff); db(0x4e); db(0x75);
- db(0x20); db(0xc1); db(0x53); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0x75);
- db(0x30); db(0xc1); db(0x53); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0x75);
- db(0x10); db(0xc1); db(0x53); db(0x82); db(0x66); db(0xfa); db(0x4e); db(0x75);
- db(0x70); db(0x00); db(0x10); db(0x18); db(0x53); db(0x40); db(0x6b); db(0x08);
- db(0x53); db(0x42); db(0x6b); db(0x04); db(0x12); db(0xd8); db(0x60); db(0xf4);
- db(0x42); db(0x11); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e);
- db(0x2c); db(0x48); db(0xd0); db(0xc1); db(0x48); db(0x7a); db(0x00); db(0x0a);
- db(0x2f); db(0x08); db(0x4c); db(0xd2); db(0x3f); db(0xff); db(0x4e); db(0x75);
- db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x3f); db(0x3e); db(0x48); db(0x7a); db(0xff); db(0xf4); db(0x2f); db(0x08);
- db(0x4c); db(0xd1); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x20); db(0x05);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0xff); db(0xfe); db(0x28); db(0x48);
- db(0x2a); db(0x4c); db(0x2e); db(0x01); db(0x7a); db(0x00); db(0x38); db(0x1c);
- db(0x7c); db(0x00); db(0x3c); db(0x1c); db(0xd8); db(0x44); db(0x47); db(0xfa);
- db(0xff); db(0x1e); db(0xd6); db(0xf3); db(0x40); db(0x00); db(0x4c); db(0xd4);
- db(0x07); db(0x00); db(0x4c); db(0xd4); db(0x00); db(0x07); db(0x4e); db(0x93);
- db(0x28); db(0x80); db(0x2a); db(0x00); db(0x4a); db(0x46); db(0x67); db(0x14);
- db(0x36); db(0x06); db(0x02); db(0x46); db(0x00); db(0x0f); db(0xe0); db(0x4b);
- db(0xc6); db(0xfc); db(0x00); db(0x14); db(0xe5); db(0x4e); db(0xd6); db(0x46);
- db(0x2b); db(0x80); db(0x30); db(0x04); db(0xd8); db(0xfc); db(0x00); db(0x10);
- db(0x53); db(0x87); db(0x66); db(0xc2); db(0x4c); db(0xdf); db(0x7f); db(0xff);
- db(0x4e); db(0x75); db(0x55); db(0x41); db(0x45); db(0x20); db(0x62); db(0x6f);
- db(0x61); db(0x72); db(0x64); db(0x00); db(0x41); db(0xfa); db(0xe0); db(0x96);
- db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0);
- db(0x4e); db(0x75); db(0x69); db(0x6e); db(0x70); db(0x75); db(0x74); db(0x2e);
- db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x74);
- db(0x69); db(0x6d); db(0x65); db(0x72); db(0x2e); db(0x64); db(0x65); db(0x76);
- db(0x69); db(0x63); db(0x65); db(0x00); db(0x63); db(0x6f); db(0x6e); db(0x73);
- db(0x6f); db(0x6c); db(0x65); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69);
- db(0x63); db(0x65); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x00);
- db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x00); db(0x44); db(0x45);
- db(0x56); db(0x53); db(0x3a); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62);
- db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76);
- db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a);
- db(0x00); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61);
- db(0x72); db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63);
- db(0x65); db(0x00); db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x45); db(0x6e);
- db(0x76); db(0x2f); db(0x53); db(0x79); db(0x73); db(0x2f); db(0x50); db(0x6f);
- db(0x69); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x2e); db(0x70); db(0x72);
- db(0x65); db(0x66); db(0x73); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72);
- db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); db(0x72); db(0x69); db(0x6e);
- db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f);
- db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76);
- db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x68);
- db(0x65); db(0x61); db(0x72); db(0x74); db(0x20); db(0x62); db(0x65); db(0x61);
- db(0x74); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73);
- db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20);
- db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e);
- db(0x74); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20);
- db(0x66); db(0x73); db(0x20); db(0x77); db(0x6f); db(0x72); db(0x6b); db(0x65);
- db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x74); db(0x72);
- db(0x61); db(0x70); db(0x20); db(0x77); db(0x6f); db(0x72); db(0x6b); db(0x65);
- db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73);
- db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f); db(0x6d); db(0x6f); db(0x75);
- db(0x6e); db(0x74); db(0x20); db(0x70); db(0x72); db(0x6f); db(0x63); db(0x65);
- db(0x73); db(0x73); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x64);
- db(0x65); db(0x62); db(0x75); db(0x67); db(0x67); db(0x65); db(0x72); db(0x00);
- db(0x64); db(0x6f); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72);
- db(0x61); db(0x72); db(0x79); db(0x00); db(0x69); db(0x6e); db(0x74); db(0x75);
- db(0x69); db(0x74); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69);
- db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x67); db(0x72);
- db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c);
- db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x65);
- db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e);
- db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79);
- db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73);
- db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f);
- db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x6d); db(0x65); db(0x67);
- db(0x61); db(0x63); db(0x68); db(0x69); db(0x70); db(0x20); db(0x6d); db(0x65);
- db(0x6d); db(0x6f); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c);
- db(0x65); db(0x20); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d);
- db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
+ db(0x4e); db(0x75); db(0x70); db(0x00); db(0x53); db(0x42); db(0x67); db(0x06);
+ db(0x52); db(0x40); db(0x12); db(0xd8); db(0x66); db(0xf4); db(0x42); db(0x29);
+ db(0xff); db(0xff); db(0x4e); db(0x75); db(0x20); db(0xc1); db(0x53); db(0x82);
+ db(0x66); db(0xfa); db(0x4e); db(0x75); db(0x30); db(0xc1); db(0x53); db(0x82);
+ db(0x66); db(0xfa); db(0x4e); db(0x75); db(0x10); db(0xc1); db(0x53); db(0x82);
+ db(0x66); db(0xfa); db(0x4e); db(0x75); db(0x70); db(0x00); db(0x10); db(0x18);
+ db(0x53); db(0x40); db(0x6b); db(0x08); db(0x53); db(0x42); db(0x6b); db(0x04);
+ db(0x12); db(0xd8); db(0x60); db(0xf4); db(0x42); db(0x11); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x48); db(0xd0); db(0xc1);
+ db(0x48); db(0x7a); db(0x00); db(0x0a); db(0x2f); db(0x08); db(0x4c); db(0xd2);
+ db(0x3f); db(0xff); db(0x4e); db(0x75); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
+ db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x48); db(0x7a);
+ db(0xff); db(0xf4); db(0x2f); db(0x08); db(0x4c); db(0xd1); db(0x7f); db(0xff);
+ db(0x4e); db(0x75); db(0x20); db(0x05); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0xff); db(0xfe); db(0x28); db(0x48); db(0x2a); db(0x4c); db(0x2e); db(0x01);
+ db(0x7a); db(0x00); db(0x38); db(0x1c); db(0x7c); db(0x00); db(0x3c); db(0x1c);
+ db(0xd8); db(0x44); db(0x47); db(0xfa); db(0xff); db(0x1a); db(0xd6); db(0xf3);
+ db(0x40); db(0x00); db(0x4c); db(0xd4); db(0x07); db(0x00); db(0x4c); db(0xd4);
+ db(0x00); db(0x07); db(0x4e); db(0x93); db(0x28); db(0x80); db(0x2a); db(0x00);
+ db(0x4a); db(0x46); db(0x67); db(0x14); db(0x36); db(0x06); db(0x02); db(0x46);
+ db(0x00); db(0x0f); db(0xe0); db(0x4b); db(0xc6); db(0xfc); db(0x00); db(0x14);
+ db(0xe5); db(0x4e); db(0xd6); db(0x46); db(0x2b); db(0x80); db(0x30); db(0x04);
+ db(0xd8); db(0xfc); db(0x00); db(0x10); db(0x53); db(0x87); db(0x66); db(0xc2);
+ db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x00);
+ db(0x41); db(0xfa); db(0xe0); db(0x92); db(0x02); db(0x80); db(0x00); db(0x00);
+ db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x69); db(0x6e);
+ db(0x70); db(0x75); db(0x74); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69);
+ db(0x63); db(0x65); db(0x00); db(0x74); db(0x69); db(0x6d); db(0x65); db(0x72);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x63); db(0x6f); db(0x6e); db(0x73); db(0x6f); db(0x6c); db(0x65); db(0x2e);
+ db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x44);
+ db(0x45); db(0x56); db(0x53); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53);
+ db(0x3a); db(0x00); db(0x44); db(0x45); db(0x56); db(0x53); db(0x3a); db(0x63);
+ db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64);
+ db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00);
+ db(0x52); db(0x41); db(0x4d); db(0x3a); db(0x00); db(0x63); db(0x6c); db(0x69);
+ db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); db(0x64);
+ db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x52); db(0x41);
+ db(0x4d); db(0x3a); db(0x45); db(0x6e); db(0x76); db(0x2f); db(0x53); db(0x79);
+ db(0x73); db(0x2f); db(0x50); db(0x6f); db(0x69); db(0x6e); db(0x74); db(0x65);
+ db(0x72); db(0x2e); db(0x70); db(0x72); db(0x65); db(0x66); db(0x73); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70);
+ db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68);
+ db(0x61); db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20);
+ db(0x64); db(0x72); db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55);
+ db(0x41); db(0x45); db(0x20); db(0x68); db(0x65); db(0x61); db(0x72); db(0x74);
+ db(0x20); db(0x62); db(0x65); db(0x61); db(0x74); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x66); db(0x73); db(0x00); db(0x55); db(0x41); db(0x45);
+ db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74); db(0x6f);
+ db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x65); db(0x72); db(0x00);
+ db(0x55); db(0x41); db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x77);
+ db(0x6f); db(0x72); db(0x6b); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x74); db(0x72); db(0x61); db(0x70); db(0x20); db(0x77);
+ db(0x6f); db(0x72); db(0x6b); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x66); db(0x73); db(0x20); db(0x61); db(0x75); db(0x74);
+ db(0x6f); db(0x6d); db(0x6f); db(0x75); db(0x6e); db(0x74); db(0x20); db(0x70);
+ db(0x72); db(0x6f); db(0x63); db(0x65); db(0x73); db(0x73); db(0x00); db(0x55);
+ db(0x41); db(0x45); db(0x20); db(0x64); db(0x65); db(0x62); db(0x75); db(0x67);
+ db(0x67); db(0x65); db(0x72); db(0x00); db(0x64); db(0x6f); db(0x73); db(0x2e);
+ db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00);
+ db(0x69); db(0x6e); db(0x74); db(0x75); db(0x69); db(0x74); db(0x69); db(0x6f);
+ db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72);
+ db(0x79); db(0x00); db(0x67); db(0x72); db(0x61); db(0x70); db(0x68); db(0x69);
+ db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61);
+ db(0x72); db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e);
+ db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62);
+ db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c);
+ db(0x65); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e);
+ db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65);
+ db(0x00); db(0x6d); db(0x65); db(0x67); db(0x61); db(0x63); db(0x68); db(0x69);
+ db(0x70); db(0x20); db(0x6d); db(0x65); db(0x6d); db(0x6f); db(0x72); db(0x79);
+ db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x20); db(0x53); db(0x79);
+ db(0x73); db(0x74); db(0x65); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x03); db(0xf2);
return 1;
}
+static bool is_writeprotected(struct hardfiledata *hfd)
+{
+ return hfd->ci.readonly || hfd->dangerous || currprefs.harddrive_read_only;
+}
+
static int nodisk (struct hardfiledata *hfd)
{
if (hfd->drive_empty)
// do nothing
if (nodisk (hfd))
goto nodisk;
- if (hfd->ci.readonly || hfd->dangerous)
+ if (is_writeprotected(hfd))
goto readprot;
scsi_len = 0;
break;
case 0x0a: /* WRITE (6) */
if (nodisk (hfd))
goto nodisk;
- if (hfd->ci.readonly || hfd->dangerous)
+ if (is_writeprotected(hfd))
goto readprot;
offset = get_scsi_6_offset(hfd, hdhfd, cmdbuf);
if (offset == ~0)
totalsize = 8 - 2;
alen = (cmdbuf[7] << 8) | cmdbuf[8];
p[2] = 0;
- p[3] = (hfd->ci.readonly || hfd->dangerous) ? 0x80 : 0x00;
+ p[3] = is_writeprotected(hfd) ? 0x80 : 0x00;
p[4] = 0;
p[5] = 0;
p[6] = 0;
totalsize = 4 - 1;
alen = cmdbuf[4];
p[1] = 0;
- p[2] = (hfd->ci.readonly || hfd->dangerous) ? 0x80 : 0x00;
+ p[2] = is_writeprotected(hfd) ? 0x80 : 0x00;
p[3] = 0;
p += 4;
}
case 0x2a: /* WRITE (10) */
if (nodisk (hfd))
goto nodisk;
- if (hfd->ci.readonly || hfd->dangerous)
+ if (is_writeprotected(hfd))
goto readprot;
offset = rl (cmdbuf + 2);
offset *= hfd->ci.blocksize;
case 0xaa: /* WRITE (12) */
if (nodisk (hfd))
goto nodisk;
- if (hfd->ci.readonly || hfd->dangerous)
+ if (is_writeprotected(hfd))
goto readprot;
offset = rl (cmdbuf + 2);
offset *= hfd->ci.blocksize;
return 1;
memset (hfpd, 0, sizeof (struct hardfileprivdata));
hfpd->base = trap_get_areg(ctx, 6);
- init_comm_pipe (&hfpd->requests, 100, 1);
+ init_comm_pipe (&hfpd->requests, 300, 3);
uae_sem_init (&hfpd->sync_sem, 0, 0);
uae_start_thread (_T("hardfile"), hardfile_thread, hfpd, NULL);
uae_sem_wait (&hfpd->sync_sem);
return 0;
scsi_free(hfpd->sd);
trap_put_word(ctx, hfpd->base + 32, trap_get_word(ctx, hfpd->base + 32) - 1);
- if (trap_get_word(ctx, hfpd->base + 32) == 0)
- write_comm_pipe_u32 (&hfpd->requests, 0, 1);
+ if (trap_get_word(ctx, hfpd->base + 32) == 0) {
+ write_comm_pipe_pvoid(&hfpd->requests, NULL, 0);
+ write_comm_pipe_pvoid(&hfpd->requests, NULL, 0);
+ write_comm_pipe_u32(&hfpd->requests, 0, 1);
+ }
return 0;
}
case CMD_FORMAT: /* Format */
if (nodisk (hfd))
goto no_disk;
- if (hfd->ci.readonly || hfd->dangerous) {
+ if (is_writeprotected(hfd)) {
error = 28; /* write protect */
} else {
offset = get_long_host(iobuf + 44);
case NSCMD_TD_FORMAT64:
if (nodisk (hfd))
goto no_disk;
- if (hfd->ci.readonly || hfd->dangerous) {
+ if (is_writeprotected(hfd)) {
error = 28; /* write protect */
} else {
offset64 = get_long_host(iobuf + 44) | ((uae_u64)get_long_host(iobuf + 32) << 32);
break;
case CMD_PROTSTATUS:
- if (hfd->ci.readonly || hfd->dangerous)
+ if (is_writeprotected(hfd))
actual = -1;
else
actual = 0;
#include "uae/types.h"
+#define AFTERDOS_INIT_PRI ((-121) & 0xff)
+#define AFTERDOS_PRI ((-122) & 0xff)
+
#define RTAREA_DEFAULT 0xf00000
#define RTAREA_BACKUP 0xef0000
#define RTAREA_BACKUP_2 0xdb0000
#define RTAREA_SIZE 0x10000
#define RTAREA_TRAPS 0x3000
-#define RTAREA_RTG 0x3800
-#define RTAREA_TRAMPOLINE 0x3b00
+#define RTAREA_RTG 0x3600
+#define RTAREA_TRAMPOLINE 0x3900
#define RTAREA_DATAREGION 0xF000
#define RTAREA_FSBOARD 0xFFEC
#define RTAREA_TRAP_DATA_EXTRA 144
#define RTAREA_TRAP_DATA_EXTRA_SIZE (RTAREA_TRAP_DATA_SLOT_SIZE - RTAREA_TRAP_DATA_EXTRA)
-#define RTAREA_TRAP_SEND_DATA 0xc0000
-#define RTAREA_TRAP_SEND_DATA_SIZE 0x2000
-
#define RTAREA_TRAP_STATUS 0xF000
#define RTAREA_TRAP_STATUS_SIZE 8
#define RTAREA_TRAP_STATUS_SECOND 4
-#define RTAREA_TRAP_SEND_STATUS 0xF100
-
#define RTAREA_SYSBASE 0x3FFC
+#define RTAREA_GFXBASE 0x3FF8
+#define RTAREA_INTBASE 0x3FF4
+#define RTAREA_INTXY 0x3FF0
#define RTAREA_TRAP_DATA_NUM (RTAREA_TRAP_DATA_SIZE / RTAREA_TRAP_DATA_SLOT_SIZE)
+#define RTAREA_TRAP_DATA_SEND_NUM 1
+
+#define RTAREA_TRAP_SEND_STATUS (RTAREA_TRAP_STATUS + RTAREA_TRAP_STATUS_SIZE * RTAREA_TRAP_DATA_NUM)
+#define RTAREA_TRAP_SEND_DATA (RTAREA_TRAP_DATA + RTAREA_TRAP_DATA_SLOT_SIZE * RTAREA_TRAP_DATA_NUM)
extern uae_u32 addr (int);
extern void db (uae_u8);
struct amigascsi
{
- uae_u8 *data;
+ uae_u8 *data_h;
+ uaecptr data_a;
uae_s32 len;
uae_u8 cmd[16];
uae_s32 cmd_len;
extern int sys_command_read (int unitnum, uae_u8 *data, int block, int size);
extern int sys_command_write (int unitnum, uae_u8 *data, int block, int size);
extern int sys_command_scsi_direct_native (int unitnum, int type, struct amigascsi *as);
-extern int sys_command_scsi_direct (int unitnum, int type, uaecptr request);
+extern int sys_command_scsi_direct(TrapContext *ctx, int unitnum, int type, uaecptr request);
extern int sys_command_ismedia (int unitnum, int quick);
extern struct device_info *sys_command_info_session (int unitnum, struct device_info *di, int, int);
extern bool blkdev_get_info (struct uae_prefs *p, int unitnum, struct device_info *di);
#define FDCB_ALLOC 1
#define FDCB_CHECK 2
-uae_u32 addstr (uae_u32 * dst, const TCHAR *src);
-uae_u32 addstr_ansi (uae_u32 * dst, const uae_char *src);
-uae_u32 strncpyha (uae_u32 dst, const uae_char *src, int size);
-uae_u32 addmem (uae_u32 * dst, const uae_char *src, int len);
+uae_u32 addstr(TrapContext *ctx, uae_u32 * dst, const TCHAR *src);
+uae_u32 addstr_ansi(TrapContext *ctx, uae_u32 * dst, const uae_char *src);
+uae_u32 strncpyha(TrapContext *ctx, uae_u32 dst, const uae_char *src, int size);
+uae_u32 addmem(TrapContext *ctx, uae_u32 * dst, const uae_char *src, int len);
#define SB struct socketbase *sb
#include "uae/types.h"
-extern int amiga_clipboard_want_data (void);
-extern void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual);
-extern void amiga_clipboard_die (void);
-extern void amiga_clipboard_init (void);
-extern uaecptr amiga_clipboard_proc_start (void);
-extern void amiga_clipboard_task_start (uaecptr);
-extern void clipboard_disable (bool);
-extern void clipboard_vsync (void);
+extern int amiga_clipboard_want_data(TrapContext *ctx);
+extern void amiga_clipboard_got_data(TrapContext *ctx, uaecptr data, uae_u32 size, uae_u32 actual);
+extern void amiga_clipboard_die(TrapContext *ctx);
+extern void amiga_clipboard_init(TrapContext *ctx);
+extern uaecptr amiga_clipboard_proc_start(TrapContext *ctx);
+extern void amiga_clipboard_task_start(TrapContext *ctx, uaecptr);
+extern void clipboard_disable(bool);
+extern void clipboard_vsync(void);
#endif /* UAE_CLIPBOARD_H */
#include "uae/types.h"
typedef union {
- int i;
- uae_u32 u32;
- void *pv;
+ int i;
+ uae_u32 u32;
+ void *pv;
} uae_pt;
/* These currently require the maximum size to be known at initialization
* avoid overhead. */
typedef struct {
- uae_sem_t lock;
- uae_sem_t reader_wait;
- uae_sem_t writer_wait;
- uae_pt *data;
- int size, chunks;
- volatile int rdp, wrp;
- volatile int writer_waiting;
- volatile int reader_waiting;
+ uae_sem_t lock;
+ uae_sem_t reader_wait;
+ uae_sem_t writer_wait;
+ uae_pt *data;
+ int size, chunks;
+ volatile int rdp, wrp;
+ volatile int writer_waiting;
+ volatile int reader_waiting;
} smp_comm_pipe;
STATIC_INLINE void init_comm_pipe (smp_comm_pipe *p, int size, int chunks)
{
- memset (p, 0, sizeof (*p));
- p->data = (uae_pt *)malloc (size*sizeof (uae_pt));
- p->size = size;
- p->chunks = chunks;
- p->rdp = p->wrp = 0;
- p->reader_waiting = 0;
- p->writer_waiting = 0;
- uae_sem_init (&p->lock, 0, 1);
- uae_sem_init (&p->reader_wait, 0, 0);
- uae_sem_init (&p->writer_wait, 0, 0);
+ memset (p, 0, sizeof (*p));
+ p->data = (uae_pt *)malloc (size*sizeof (uae_pt));
+ p->size = size;
+ p->chunks = chunks;
+ p->rdp = p->wrp = 0;
+ p->reader_waiting = 0;
+ p->writer_waiting = 0;
+ uae_sem_init (&p->lock, 0, 1);
+ uae_sem_init (&p->reader_wait, 0, 0);
+ uae_sem_init (&p->writer_wait, 0, 0);
}
STATIC_INLINE void destroy_comm_pipe (smp_comm_pipe *p)
{
- uae_sem_destroy (&p->lock);
- uae_sem_destroy (&p->reader_wait);
- uae_sem_destroy (&p->writer_wait);
+ uae_sem_destroy (&p->lock);
+ uae_sem_destroy (&p->reader_wait);
+ uae_sem_destroy (&p->writer_wait);
}
STATIC_INLINE void maybe_wake_reader (smp_comm_pipe *p, int no_buffer)
{
- if (p->reader_waiting
- && (no_buffer || ((p->wrp - p->rdp + p->size) % p->size) >= p->chunks))
- {
- p->reader_waiting = 0;
- uae_sem_post (&p->reader_wait);
- }
+ if (p->reader_waiting && (no_buffer || ((p->wrp - p->rdp + p->size) % p->size) >= p->chunks)) {
+ p->reader_waiting = 0;
+ uae_sem_post (&p->reader_wait);
+ }
}
STATIC_INLINE void write_comm_pipe_pt (smp_comm_pipe *p, uae_pt data, int no_buffer)
{
- int nxwrp = (p->wrp + 1) % p->size;
+ int nxwrp = (p->wrp + 1) % p->size;
- if (p->reader_waiting) {
- /* No need to do all the locking */
+ if (p->reader_waiting) {
+ /* No need to do all the locking */
+ p->data[p->wrp] = data;
+ p->wrp = nxwrp;
+ maybe_wake_reader (p, no_buffer);
+ return;
+ }
+
+ uae_sem_wait (&p->lock);
+ if (nxwrp == p->rdp) {
+ /* Pipe full! */
+ p->writer_waiting = 1;
+ uae_sem_post (&p->lock);
+ /* Note that the reader could get in between here and do a
+ * sem_post on writer_wait before we wait on it. That's harmless.
+ * There's a similar case in read_comm_pipe_int_blocking. */
+ uae_sem_wait (&p->writer_wait);
+ uae_sem_wait (&p->lock);
+ }
p->data[p->wrp] = data;
p->wrp = nxwrp;
maybe_wake_reader (p, no_buffer);
- return;
- }
-
- uae_sem_wait (&p->lock);
- if (nxwrp == p->rdp) {
- /* Pipe full! */
- p->writer_waiting = 1;
uae_sem_post (&p->lock);
- /* Note that the reader could get in between here and do a
- * sem_post on writer_wait before we wait on it. That's harmless.
- * There's a similar case in read_comm_pipe_int_blocking. */
- uae_sem_wait (&p->writer_wait);
- uae_sem_wait (&p->lock);
- }
- p->data[p->wrp] = data;
- p->wrp = nxwrp;
- maybe_wake_reader (p, no_buffer);
- uae_sem_post (&p->lock);
}
STATIC_INLINE uae_pt read_comm_pipe_pt_blocking (smp_comm_pipe *p)
{
- uae_pt data;
+ uae_pt data;
- uae_sem_wait (&p->lock);
- if (p->rdp == p->wrp) {
- p->reader_waiting = 1;
- uae_sem_post (&p->lock);
- uae_sem_wait (&p->reader_wait);
uae_sem_wait (&p->lock);
- }
- data = p->data[p->rdp];
- p->rdp = (p->rdp + 1) % p->size;
-
- /* We ignore chunks here. If this is a problem, make the size bigger in the init call. */
- if (p->writer_waiting) {
- p->writer_waiting = 0;
- uae_sem_post (&p->writer_wait);
- }
- uae_sem_post (&p->lock);
- return data;
+ if (p->rdp == p->wrp) {
+ p->reader_waiting = 1;
+ uae_sem_post (&p->lock);
+ uae_sem_wait (&p->reader_wait);
+ uae_sem_wait (&p->lock);
+ }
+ data = p->data[p->rdp];
+ p->rdp = (p->rdp + 1) % p->size;
+
+ /* We ignore chunks here. If this is a problem, make the size bigger in the init call. */
+ if (p->writer_waiting) {
+ p->writer_waiting = 0;
+ uae_sem_post (&p->writer_wait);
+ }
+ uae_sem_post (&p->lock);
+ return data;
}
STATIC_INLINE int comm_pipe_has_data (smp_comm_pipe *p)
{
- return p->rdp != p->wrp;
+ return p->rdp != p->wrp;
}
STATIC_INLINE int read_comm_pipe_int_blocking (smp_comm_pipe *p)
{
- uae_pt foo = read_comm_pipe_pt_blocking (p);
- return foo.i;
+ uae_pt foo = read_comm_pipe_pt_blocking (p);
+ return foo.i;
}
STATIC_INLINE uae_u32 read_comm_pipe_u32_blocking (smp_comm_pipe *p)
{
- uae_pt foo = read_comm_pipe_pt_blocking (p);
- return foo.u32;
+ uae_pt foo = read_comm_pipe_pt_blocking (p);
+ return foo.u32;
}
STATIC_INLINE void *read_comm_pipe_pvoid_blocking (smp_comm_pipe *p)
{
- uae_pt foo = read_comm_pipe_pt_blocking (p);
- return foo.pv;
+ uae_pt foo = read_comm_pipe_pt_blocking (p);
+ return foo.pv;
}
STATIC_INLINE void write_comm_pipe_int (smp_comm_pipe *p, int data, int no_buffer)
{
- uae_pt foo;
- foo.i = data;
- write_comm_pipe_pt (p, foo, no_buffer);
+ uae_pt foo;
+ foo.i = data;
+ write_comm_pipe_pt (p, foo, no_buffer);
}
STATIC_INLINE void write_comm_pipe_u32 (smp_comm_pipe *p, int data, int no_buffer)
{
- uae_pt foo;
- foo.u32 = data;
- write_comm_pipe_pt (p, foo, no_buffer);
+ uae_pt foo;
+ foo.u32 = data;
+ write_comm_pipe_pt (p, foo, no_buffer);
}
STATIC_INLINE void write_comm_pipe_pvoid (smp_comm_pipe *p, void *data, int no_buffer)
{
- uae_pt foo;
- foo.pv = data;
- write_comm_pipe_pt (p, foo, no_buffer);
+ uae_pt foo;
+ foo.pv = data;
+ write_comm_pipe_pt (p, foo, no_buffer);
}
#endif /* UAE_COMMPIPE_H */
#include "uae/types.h"
-int consolehook_activate (void);
-void consolehook_ret (uaecptr condev, uaecptr oldbeginio);
-uaecptr consolehook_beginio (uaecptr request);
-void consolehook_config (struct uae_prefs *p);
+int consolehook_activate(void);
+void consolehook_ret(TrapContext *ctx, uaecptr condev, uaecptr oldbeginio);
+uaecptr consolehook_beginio(TrapContext *ctx, uaecptr request);
+void consolehook_config(struct uae_prefs *p);
#endif /* UAE_CONSOLEHOOK_H */
int gfx_max_horizontal, gfx_max_vertical;
int gfx_saturation, gfx_luminance, gfx_contrast, gfx_gamma, gfx_gamma_ch[3];
bool gfx_blackerthanblack;
- bool gfx_threebitcolors;
+ int gfx_threebitcolors;
int gfx_api;
int color_mode;
int gfx_extrawidth;
int nr_floppies;
struct floppyslot floppyslots[4];
bool floppy_read_only;
+ bool harddrive_read_only;
TCHAR dfxlist[MAX_SPARE_DRIVES][MAX_DPATH];
int dfxclickvolume_disk[4];
int dfxclickvolume_empty[4];
void trap_background_set_complete(TrapContext *ctx);
bool trap_valid_address(TrapContext *ctx, uaecptr addr, uae_u32 size);
bool trap_is_indirect(void);
-
-uae_u32 trap_get_dreg(TrapContext *context, int reg);
-uae_u32 trap_get_areg(TrapContext *context, int reg);
-void trap_set_dreg(TrapContext *context, int reg, uae_u32 v);
-void trap_set_areg(TrapContext *context, int reg, uae_u32 v);
-
-void trap_put_long(TrapContext *context, uaecptr addr, uae_u32 v);
-void trap_put_word(TrapContext *context, uaecptr addr, uae_u16 v);
-void trap_put_byte(TrapContext *context, uaecptr addr, uae_u8 v);
-
-uae_u32 trap_get_long(TrapContext *context, uaecptr addr);
-uae_u16 trap_get_word(TrapContext *context, uaecptr addr);
-uae_u8 trap_get_byte(TrapContext *context, uaecptr addr);
-
-void trap_put_bytes(TrapContext *context, void *haddrp, uaecptr addr, int cnt);
-void trap_get_bytes(TrapContext *context, void *haddrp, uaecptr addr, int cnt);
-void trap_put_longs(TrapContext *context, uae_u32 *haddr, uaecptr addr, int cnt);
-void trap_get_longs(TrapContext *context, uae_u32 *haddr, uaecptr addr, int cnt);
-void trap_put_words(TrapContext *context, uae_u16 *haddr, uaecptr addr, int cnt);
-void trap_get_words(TrapContext *context, uae_u16 *haddr, uaecptr addr, int cnt);
-
-int trap_put_string(TrapContext *context, void *haddrp, uaecptr addr, int maxlen);
-int trap_get_string(TrapContext *context, void *haddrp, uaecptr addr, int maxlen);
+void trap_dos_active(void);
+void trap_reset(void);
+typedef uae_u32 (*TRAP_CALLBACK)(TrapContext*, void*);
+void trap_callback(TRAP_CALLBACK, void*);
+
+TrapContext *alloc_host_main_trap_context(void);
+void free_host_trap_context(TrapContext*);
+
+uae_u32 trap_get_dreg(TrapContext *ctx, int reg);
+uae_u32 trap_get_areg(TrapContext *ctx, int reg);
+void trap_set_dreg(TrapContext *ctx, int reg, uae_u32 v);
+void trap_set_areg(TrapContext *ctx, int reg, uae_u32 v);
+
+void trap_put_long(TrapContext *ctx, uaecptr addr, uae_u32 v);
+void trap_put_word(TrapContext *ctx, uaecptr addr, uae_u16 v);
+void trap_put_byte(TrapContext *ctx, uaecptr addr, uae_u8 v);
+
+uae_u32 trap_get_long(TrapContext *ctx, uaecptr addr);
+uae_u16 trap_get_word(TrapContext *ctx, uaecptr addr);
+uae_u8 trap_get_byte(TrapContext *ctx, uaecptr addr);
+
+void trap_put_bytes(TrapContext *ctx, const void *haddrp, uaecptr addr, int cnt);
+void trap_get_bytes(TrapContext *ctx, void *haddrp, uaecptr addr, int cnt);
+void trap_put_longs(TrapContext *ctx, uae_u32 *haddr, uaecptr addr, int cnt);
+void trap_get_longs(TrapContext *ctx, uae_u32 *haddr, uaecptr addr, int cnt);
+void trap_put_words(TrapContext *ctx, uae_u16 *haddr, uaecptr addr, int cnt);
+void trap_get_words(TrapContext *ctx, uae_u16 *haddr, uaecptr addr, int cnt);
+
+int trap_put_string(TrapContext *ctx, const void *haddrp, uaecptr addr, int maxlen);
+int trap_get_string(TrapContext *ctx, void *haddrp, uaecptr addr, int maxlen);
void trap_set_longs(TrapContext *ctx, uaecptr addr, uae_u32 v, int cnt);
void trap_set_words(TrapContext *ctx, uaecptr addr, uae_u16 v, int cnt);
/* the Amiga does not tell us how long the timeout shall be, so make it _very_ long (specified in seconds) */
swb.spt.TimeOutValue = 80 * 60;
- scsi_datap = scsi_datap_org = as->len ? as->data : 0;
+ scsi_datap = scsi_datap_org = as->len ? as->data_h : 0;
swb.spt.DataIn = (as->flags & 1) ? SCSI_IOCTL_DATA_IN : SCSI_IOCTL_DATA_OUT;
for (i = 0; i < as->cmd_len; i++)
swb.spt.Cdb[i] = as->cmd[i];
if ((addr = inet_ntoa(ina)) != NULL) {
scratchbuf = m68k_areg (regs,6) + offsetof(struct UAEBSDBase,scratchbuf);
- strncpyha(scratchbuf,addr,SCRATCHBUFSIZE);
+ strncpyha(ctx, scratchbuf,addr,SCRATCHBUFSIZE);
if (ISBSDTRACE) {
TCHAR *s = au (addr);
BSDTRACE((_T("%s\n"),s));
put_long (sb->hostent + 16, sb->hostent + 24 + numaliases * 4);
for (i = 0; i < numaliases; i++)
- put_long (sb->hostent + 20 + i * 4, addstr_ansi (&aptr, h->h_aliases[i]));
+ put_long (sb->hostent + 20 + i * 4, addstr_ansi(ctx, &aptr, h->h_aliases[i]));
put_long (sb->hostent + 20 + numaliases * 4, 0);
for (i = 0; i < numaddr; i++)
- put_long (sb->hostent + 24 + (numaliases + i) * 4, addmem (&aptr, h->h_addr_list[i], h->h_length));
+ put_long (sb->hostent + 24 + (numaliases + i) * 4, addmem(ctx, &aptr, h->h_addr_list[i], h->h_length));
put_long (sb->hostent + 24 + numaliases * 4 + numaddr * 4, 0);
put_long (sb->hostent, aptr);
- addstr_ansi (&aptr, h->h_name);
+ addstr_ansi(ctx, &aptr, h->h_name);
if (ISBSDTRACE) {
TCHAR *s = au (h->h_name);
put_long (sb->protoent+8,p->p_proto);
for (i = 0; i < numaliases; i++)
- put_long (sb->protoent + 12 + i * 4, addstr_ansi (&aptr, p->p_aliases[i]));
+ put_long (sb->protoent + 12 + i * 4, addstr_ansi(ctx, &aptr, p->p_aliases[i]));
put_long (sb->protoent + 12 + numaliases * 4,0);
put_long (sb->protoent, aptr);
- addstr_ansi (&aptr, p->p_name);
+ addstr_ansi(ctx, &aptr, p->p_name);
if (ISBSDTRACE) {
TCHAR *s = au (p->p_name);
BSDTRACE((_T("OK (%s, %d):%d\n"), s, p->p_proto, argsp->wscnt));
put_long (sb->servent + 8, (unsigned short)htons(s->s_port));
for (i = 0; i < numaliases; i++)
- put_long (sb->servent + 16 + i * 4,addstr_ansi (&aptr,s->s_aliases[i]));
+ put_long (sb->servent + 16 + i * 4,addstr_ansi(ctx, &aptr,s->s_aliases[i]));
put_long (sb->servent + 16 + numaliases * 4,0);
put_long (sb->servent, aptr);
- addstr_ansi (&aptr, s->s_name);
+ addstr_ansi(ctx, &aptr, s->s_name);
put_long (sb->servent + 12, aptr);
- addstr_ansi (&aptr, s->s_proto);
+ addstr_ansi(ctx, &aptr, s->s_proto);
if (ISBSDTRACE) {
TCHAR *ss = au (s->s_name);
#include <windows.h>
+#include "traps.h"
#include "clipboard_win32.h"
#include "clipboard.h"
static int clipboard_delayed_size;
static bool clip_disabled;
-static void debugwrite (const TCHAR *name, uae_u8 *p, int size)
+static void debugwrite (TrapContext *ctx, const TCHAR *name, uaecptr p, int size)
{
FILE *f;
int cnt;
}
f = _tfopen (tmp, _T("wb"));
if (f) {
- fwrite (p, size, 1, f);
+ uae_u8 *pd = xmalloc(uae_u8, size);
+ trap_get_bytes(ctx, pd, p, size);
+ fwrite (pd, size, 1, f);
fclose (f);
+ xfree(pd);
}
return;
}
}
-static void to_amiga_start (void)
+static uae_u32 to_amiga_start_cb(TrapContext *ctx, void *ud)
{
- if (!initialized)
- return;
- if (!clipboard_data || get_long (clipboard_data) != 0)
- return;
+ if (trap_get_long(ctx, clipboard_data) != 0)
+ return 0;
if (clipboard_debug) {
- debugwrite (_T("clipboard_p2a"), to_amiga, to_amiga_size);
+ debugwrite(ctx, _T("clipboard_p2a"), clipboard_data, to_amiga_size);
}
#if DEBUG_CLIP > 0
- write_log (_T("clipboard: to_amiga %08x %d\n"), clipboard_data, to_amiga_size);
+ write_log(_T("clipboard: to_amiga %08x %d\n"), clipboard_data, to_amiga_size);
#endif
- put_long (clipboard_data, to_amiga_size);
- uae_Signal (get_long (clipboard_data + 8), 1 << 13);
+ trap_put_long(ctx, clipboard_data, to_amiga_size);
+ uae_Signal(trap_get_long(ctx, clipboard_data + 8), 1 << 13);
+ return 1;
+}
+
+static void to_amiga_start(TrapContext *ctx)
+{
+ if (!initialized)
+ return;
+ if (!clipboard_data)
+ return;
+ if (!ctx) {
+ trap_callback(to_amiga_start_cb, NULL);
+ } else {
+ to_amiga_start_cb(ctx, NULL);
+ }
}
static uae_char *pctoamiga (const uae_char *txt)
}
-static void to_iff_text (const TCHAR *pctxt)
+static void to_iff_text(TrapContext *ctx, const TCHAR *pctxt)
{
uae_u8 b[] = { 'F','O','R','M',0,0,0,0,'F','T','X','T','C','H','R','S',0,0,0,0 };
uae_u32 size;
to_amiga = xcalloc (uae_u8, to_amiga_size);
memcpy (to_amiga, b, sizeof b);
memcpy (to_amiga + sizeof b, txt, txtlen);
- to_amiga_start ();
+ to_amiga_start(ctx);
xfree (txt);
xfree (s);
}
static int clipboard_put_text (const TCHAR *txt);
-static void from_iff_text (uaecptr ftxt, uae_u32 len)
+static void from_iff_text(uae_u8 *addr, uae_u32 len)
{
- uae_u8 *addr = NULL, *eaddr;
+ uae_u8 *eaddr;
char *txt = NULL;
int txtsize = 0;
{
FILE *f = fopen("c:\\d\\clipboard_a2p.005.dat", "rb");
if (f) {
- addr = xmalloc (10000);
- len = fread (addr, 1, 10000, f);
- fclose (f);
+ addr = xmalloc(10000);
+ len = fread(addr, 1, 10000, f);
+ fclose(f);
}
+ return;
}
-#else
- addr = get_real_address (ftxt);
#endif
eaddr = addr + len;
- if (memcmp ("FTXT", addr + 8, 4))
+ if (memcmp("FTXT", addr + 8, 4))
return;
addr += 12;
while (addr < eaddr) {
uae_u32 csize = (addr[4] << 24) | (addr[5] << 16) | (addr[6] << 8) | (addr[7] << 0);
if (addr + 8 + csize > eaddr)
break;
- if (!memcmp (addr, "CHRS", 4) && csize) {
+ if (!memcmp(addr, "CHRS", 4) && csize) {
int prevsize = txtsize;
txtsize += csize;
- txt = xrealloc (char, txt, txtsize + 1);
- memcpy (txt + prevsize, addr + 8, csize);
+ txt = xrealloc(char, txt, txtsize + 1);
+ memcpy(txt + prevsize, addr + 8, csize);
txt[txtsize] = 0;
}
addr += 8 + csize + (csize & 1);
addr++;
}
if (txt == NULL) {
- clipboard_put_text (_T(""));
+ clipboard_put_text(_T(""));
} else {
- TCHAR *pctxt = amigatopc (txt);
- clipboard_put_text (pctxt);
- xfree (pctxt);
+ TCHAR *pctxt = amigatopc(txt);
+ clipboard_put_text(pctxt);
+ xfree(pctxt);
}
- xfree (txt);
+ xfree(txt);
}
-
-static void to_iff_ilbm (HBITMAP hbmp)
+static void to_iff_ilbm(TrapContext *ctx, HBITMAP hbmp)
{
BITMAP bmp;
int bmpw, w, h, bpp, iffbpp, tsize, size, x, y, i;
to_amiga_size = 8 + tsize + (tsize & 1);
to_amiga = iff;
- to_amiga_start ();
+ to_amiga_start (ctx);
xfree (bmp.bmBits);
}
-static uae_u8 *iff_decomp (const uae_u8 *addr, int w, int h, int planes)
+static uae_u8 *iff_decomp(const uae_u8 *addr, const uae_u8 *eaddr, int w, int h, int planes)
{
int y, i, w2;
uae_u8 *dst;
w2 = (w + 15) & ~15;
- dst = xmalloc (uae_u8, w2 * h * planes);
+ dst = xcalloc (uae_u8, w2 * h * planes);
for (y = 0; y < h * planes; y++) {
uae_u8 *p = dst + w2 * y;
uae_u8 *end = p + w2;
while (p < end) {
+ if (addr >= eaddr)
+ return dst;
uae_s8 c = *addr++;
if (c >= 0 && c <= 127) {
uae_u8 cnt = c + 1;
- for (i = 0; i < cnt && p < end; i++)
+ if (addr + cnt > eaddr)
+ return dst;
+ for (i = 0; i < cnt && p < end; i++) {
*p++= *addr++;
+ }
} else if (c <= -1 && c >= -127) {
uae_u8 cnt = -c + 1;
+ if (addr >= eaddr)
+ return dst;
uae_u8 v = *addr++;
- for (i = 0; i < cnt && p < end; i++)
+ for (i = 0; i < cnt && p < end; i++) {
*p++= v;
+ }
}
}
}
}
static int clipboard_put_bmp (HBITMAP hbmp);
-static void from_iff_ilbm (uaecptr ilbm, uae_u32 len)
+static void from_iff_ilbm(uae_u8 *saddr, uae_u32 len)
{
HBITMAP hbm = NULL;
BITMAPINFO *bmih;
bmsize = 0;
bmptr = NULL;
planes = 0; compr = 0;
- addr = get_real_address (ilbm);
+ addr = saddr;
eaddr = addr + len;
size = (addr[4] << 24) | (addr[5] << 16) | (addr[6] << 8) | (addr[7] << 0);
if (memcmp ("ILBM", addr + 8, 4))
bmptr = xcalloc (uae_u8, bmpw * h);
if (compr)
- addr = caddr = iff_decomp (addr, w, h, planes + (masking == 1 ? 1 : 0));
+ addr = caddr = iff_decomp(addr, addr + csize, w, h, planes + (masking == 1 ? 1 : 0));
dptr = bmptr;
if (planes <= 8 && !ham) {
xfree (bmptr);
}
-static void from_iff (uaecptr data, uae_u32 len)
+static void from_iff(TrapContext *ctx, uaecptr data, uae_u32 len)
{
- uae_u8 *addr;
+ uae_u8 *buf;
if (len < 18)
return;
- if (!valid_address (data, len))
+ if (!trap_valid_address(ctx, data, len))
return;
- addr = get_real_address (data);
+ buf = xmalloc(uae_u8, (len + 3) & ~3);
+ trap_get_bytes(ctx, buf, data, (len + 3) & ~3);
+
+#if 1
+ FILE *f = fopen("clipboard.dat", "wb");
+ if (f) {
+ fwrite(buf, 1, len, f);
+ fclose(f);
+ }
+#endif
+
+
if (clipboard_debug)
- debugwrite (_T("clipboard_a2p"), addr, len);
- if (memcmp ("FORM", addr, 4))
- return;
- if (!memcmp ("FTXT", addr + 8, 4))
- from_iff_text (data, len);
- if (!memcmp ("ILBM", addr + 8, 4))
- from_iff_ilbm (data, len);
+ debugwrite(ctx, _T("clipboard_a2p"), data, len);
+ if (!memcmp ("FORM", buf, 4)) {
+ if (!memcmp ("FTXT", buf + 8, 4))
+ from_iff_text(buf, len);
+ if (!memcmp ("ILBM", buf + 8, 4))
+ from_iff_ilbm(buf, len);
+ }
+ xfree(buf);
}
void clipboard_disable (bool disabled)
clip_disabled = disabled;
}
-static void clipboard_read (HWND hwnd)
+static void clipboard_read(TrapContext *ctx, HWND hwnd)
{
HGLOBAL hglb;
UINT f;
#if DEBUG_CLIP > 0
write_log (_T("clipboard: CF_UNICODETEXT '%s'\n"), lptstr);
#endif
- to_iff_text (lptstr);
+ to_iff_text(ctx, lptstr);
GlobalUnlock (hglb);
}
}
#if DEBUG_CLIP > 0
write_log (_T("clipboard: CF_BITMAP\n"));
#endif
- to_iff_ilbm (hbmp);
+ to_iff_ilbm(ctx, hbmp);
}
}
CloseClipboard ();
clipboard_change = 1;
return;
}
- clipboard_read (hwnd);
+ clipboard_read(NULL, hwnd);
}
static int clipboard_put_bmp_real (HBITMAP hbmp)
return 1;
}
-void amiga_clipboard_die (void)
+void amiga_clipboard_die(TrapContext *ctx)
{
signaling = 0;
write_log (_T("clipboard not initialized\n"));
}
-void amiga_clipboard_init (void)
+void amiga_clipboard_init(TrapContext *ctx)
{
signaling = 0;
write_log (_T("clipboard initialized\n"));
initialized = 1;
- clipboard_read (chwnd);
+ clipboard_read(ctx, chwnd);
}
-void amiga_clipboard_task_start (uaecptr data)
+void amiga_clipboard_task_start(TrapContext *ctx, uaecptr data)
{
clipboard_data = data;
signaling = 1;
write_log (_T("clipboard task init: %08x\n"), clipboard_data);
}
-uae_u32 amiga_clipboard_proc_start (void)
+uae_u32 amiga_clipboard_proc_start(TrapContext *ctx)
{
write_log (_T("clipboard process init: %08x\n"), clipboard_data);
signaling = 1;
return clipboard_data;
}
-void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual)
+void amiga_clipboard_got_data(TrapContext *ctx, uaecptr data, uae_u32 size, uae_u32 actual)
{
- uae_u8 *addr;
if (!initialized) {
write_log (_T("clipboard: got_data() before initialized!?\n"));
return;
}
- addr = get_real_address (data);
#if DEBUG_CLIP > 0
write_log (_T("clipboard: <-amiga, %08x, %08x %d %d\n"), clipboard_data, data, size, actual);
#endif
- from_iff (data, actual);
+ from_iff(ctx, data, actual);
}
-int amiga_clipboard_want_data (void)
+int amiga_clipboard_want_data(TrapContext *ctx)
{
uae_u32 addr, size;
- addr = get_long (clipboard_data + 4);
- size = get_long (clipboard_data);
+ addr = trap_get_long(ctx, clipboard_data + 4);
+ size = trap_get_long(ctx, clipboard_data);
if (!initialized) {
write_log (_T("clipboard: want_data() before initialized!? (%08x %08x %d)\n"), clipboard_data, addr, size);
to_amiga = NULL;
return 0;
}
if (addr && size) {
- uae_u8 *raddr = get_real_address (addr);
- memcpy (raddr, to_amiga, size);
+ trap_put_bytes(ctx, to_amiga, addr, size);
}
xfree (to_amiga);
#if DEBUG_CLIP > 0
return 1;
}
-void clipboard_active (HWND hwnd, int active)
+void clipboard_active(HWND hwnd, int active)
{
clipactive = active;
if (!initialized)
return;
if (clipactive && clipboard_change) {
- clipboard_read (hwnd);
+ clipboard_read(NULL, hwnd);
}
if (!clipactive && clipboard_delayed_data) {
if (clipboard_delayed_size < 0) {
}
}
-void clipboard_vsync (void)
+static uae_u32 clipboard_vsync_cb(TrapContext *ctx, void *ud)
{
- uaecptr task;
+ uaecptr task = trap_get_long(ctx, clipboard_data + 8);
+ if (task && native2amiga_isfree()) {
+ uae_Signal(task, 1 << 13);
+#if DEBUG_CLIP > 0
+ write_log(_T("clipboard: signal %08x\n"), clipboard_data);
+#endif
+ }
+ return 0;
+}
+void clipboard_vsync(void)
+{
if (!signaling || !clipboard_data)
return;
vdelay--;
if (vdelay > 0)
return;
- task = get_long (clipboard_data + 8);
- if (task && native2amiga_isfree ()) {
- uae_Signal (task, 1 << 13);
-#if DEBUG_CLIP > 0
- write_log (_T("clipboard: signal %08x\n"), clipboard_data);
-#endif
- }
+ trap_callback(clipboard_vsync_cb, NULL);
vdelay = 50;
}
-void clipboard_reset (void)
+void clipboard_reset(void)
{
write_log (_T("clipboard: reset (%08x)\n"), clipboard_data);
vdelay = 100;
#define IDC_AUTORESOLUTIONVGA 1181
#define IDC_RATE2ENABLE 1182
#define IDC_GRAYSCALE 1183
-#define IDC_ATARICOLORFIX 1184
#define IDC_FRAMERATE 1185
#define IDC_XSIZE 1187
#define IDC_YSIZE 1188
CONTROL "Double, fields",IDC_LM_IDOUBLED2,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,264,90,10
CONTROL "Double, fields+",IDC_LM_IDOUBLED3,"Button",BS_AUTORADIOBUTTON | BS_LEFT | WS_TABSTOP,299,277,90,10
CONTROL "Monochrome video out",IDC_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,167,139,10
- CONTROL "Dark palette fix",IDC_ATARICOLORFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,295,129,10
END
IDD_MEMORY DIALOGEX 0, 0, 396, 246
IDS_WSTYLE_EXTENDED "Extended"
IDS_MISCLISTITEMS1 "Untrap = middle button\nShow GUI on startup\nUse CTRL-F11 to quit\nDon't show taskbar button\nDon't show notification icon\n"
IDS_MISCLISTITEMS2 "Always on top\nDisable screensaver\nSynchronize clock\nOne second reboot pause\nFaster RTG\nClipboard sharing\nAllow native code\n"
- IDS_MISCLISTITEMS3 "Native on-screen display\nRTG on-screen display\nCreate winuaelog.txt log\nLog illegal memory accesses\nBlank unused displays\nStart mouse uncaptured\nStart minimized\nMinimize when focus is lost\n100/120Hz VSync black frame insertion\nMaster floppy write protection\nHide all UAE autoconfig boards\n"
+ IDS_MISCLISTITEMS3 "Native on-screen display\nRTG on-screen display\nCreate winuaelog.txt log\nLog illegal memory accesses\nBlank unused displays\nStart mouse uncaptured\nStart minimized\nMinimize when focus is lost\n100/120Hz VSync black frame insertion\nMaster floppy write protection\nMaster harddrive write protection\nHide all UAE autoconfig boards\n"
IDS_JOYMODE_WHEELMOUSE "Wheel Mouse"
IDS_NUMSG_KS68030PLUS "The selected system ROM requires a 68030 or higher CPU."
IDS_SELECTTAPE "Select a Tape directory or archive file..."
IDS_FILTER_PAL_EXTRA "Brightness\nContrast\nSaturation\nGamma\nScanlines\nBlurriness\nNoise\n"
IDS_FILTER_3D_EXTRA "Point/Bilinear\nScanline opacity\nScanline level\n"
IDS_ALWAYS_ON "Always on"
- IDS_DISPLAY_ATTRIBUTES "Brightness\nContrast\nGamma\nGamma [R]\nGamma [G]\nGamma [B]"
+ IDS_DISPLAY_ATTRIBUTES "Brightness\nContrast\nGamma\nGamma [R]\nGamma [G]\nGamma [B]\nDark palette fix"
IDS_NUMSG_NO_PPC "PPC CPU was started but PPC CPU emulation core plugin was not found. Download available from http://www.winuae.net/"
IDS_NUMSG_UAEBOOTROM_PCC
- "PPC native OS booted with UAE boot ROM active. UAE expansions are not hardware emulated and are not PPC compatible. (UAE HD controller, uaescsi.device, uaeserial, bsdsocket and so on..)"
+ "PPC native OS booted with incompatible UAE boot ROM enabled.\nSelect ROM panel ""New UAE (128k, ROM, Indirect)"" option\nor disable all UAE expansions.\n"
IDS_AUTOSCALE_OVERSCAN_BLANK "Overscan blanking"
END
#define LANG_DLL_FULL_VERSION_MATCH 1
#if WINUAEPUBLICBETA
-#define WINUAEBETA _T("2")
+#define WINUAEBETA _T("4")
#else
#define WINUAEBETA _T("")
#endif
-#define WINUAEDATE MAKEBD(2016, 1, 31)
+#define WINUAEDATE MAKEBD(2016, 2, 7)
//#define WINUAEEXTRA _T("AmiKit Preview")
//#define WINUAEEXTRA _T("Amiga Forever Edition")
#ifndef WINUAEEXTRA
-#define WINUAEEXTRA _T("OS4_UAE")
+#define WINUAEEXTRA _T("")
#endif
#ifndef WINUAEREV
#define WINUAEREV _T("")
extern int screenshot_prepare (int);
extern void screenshot_free (void);
+extern void rawinput_release(void);
+extern void rawinput_alloc(void);
+
struct winuae_lang
{
WORD id;
{ 0, 1, _T("Minimize when focus is lost"), &workprefs.win32_minimize_inactive },
{ 0, 1, _T("100/120Hz VSync black frame insertion"), &workprefs.lightboost_strobo },
{ 0, 0, _T("Master floppy write protection"), &workprefs.floppy_read_only },
+ { 0, 0, _T("Master harddrive write protection"), &workprefs.harddrive_read_only },
{ 0, 0, _T("Hide all UAE autoconfig boards"), &workprefs.uae_hide_autoconfig },
{ 0, 1, _T("Right Control = Right Windows key"), &workprefs.right_control_is_right_win_key },
{ 0, NULL }
return j;
}
-static int da_mode_selected;
+static int da_mode_selected, da_mode_multiplier;
-static int *getp_da (void)
+static int *getp_da (HWND hDlg)
{
+ int vmin = -200;
+ int vmax = 200;
+ da_mode_multiplier = 10;
int *p = 0;
switch (da_mode_selected)
{
case 5:
p = &workprefs.gfx_gamma_ch[2];
break;
+ case 6:
+ p = &workprefs.gfx_threebitcolors;
+ vmin = 0;
+ vmax = 2;
+ da_mode_multiplier = 1;
+ break;
}
+ if (*p < vmin * da_mode_multiplier)
+ *p = vmin * da_mode_multiplier;
+ if (*p > vmax * da_mode_multiplier)
+ *p = vmax * da_mode_multiplier;
+ SendDlgItemMessage(hDlg, IDC_DA_SLIDER, TBM_SETPAGESIZE, 0, 1);
+ SendDlgItemMessage(hDlg, IDC_DA_SLIDER, TBM_SETRANGE, TRUE, MAKELONG(vmin, vmax));
return p;
}
static void set_da (HWND hDlg)
{
- int *p = getp_da ();
+ int *p = getp_da (hDlg);
if (!p)
return;
TCHAR buf[10];
- SendDlgItemMessage (hDlg, IDC_DA_SLIDER, TBM_SETPOS, TRUE, (*p) / 10);
- _stprintf(buf, _T("%.1f"), (double)((*p) / 10.0));
+ SendDlgItemMessage (hDlg, IDC_DA_SLIDER, TBM_SETPOS, TRUE, (*p) / da_mode_multiplier);
+ _stprintf(buf, _T("%.1f"), (double)((*p) / (double)da_mode_multiplier));
SetDlgItemText (hDlg, IDC_DA_TEXT, buf);
}
currprefs.gfx_gamma_ch[2] = workprefs.gfx_gamma_ch[2];
currprefs.gfx_luminance = workprefs.gfx_luminance;
currprefs.gfx_contrast = workprefs.gfx_contrast;
+ currprefs.gfx_threebitcolors = workprefs.gfx_threebitcolors;
set_da (hDlg);
init_colors ();
init_custom ();
int *p;
int v;
- p = getp_da ();
+ p = getp_da (hDlg);
if (!p)
return;
- v = SendDlgItemMessage (hDlg, IDC_DA_SLIDER, TBM_GETPOS, 0, 0) * 10;
+ v = SendDlgItemMessage (hDlg, IDC_DA_SLIDER, TBM_GETPOS, 0, 0) * da_mode_multiplier;
if (v == *p)
return;
*p = v;
if (da_mode_selected == CB_ERR)
da_mode_selected = 0;
SendDlgItemMessage (hDlg, IDC_DA_MODE, CB_SETCURSEL, da_mode_selected, 0);
- SendDlgItemMessage (hDlg, IDC_DA_SLIDER, TBM_SETPAGESIZE, 0, 1);
- SendDlgItemMessage (hDlg, IDC_DA_SLIDER, TBM_SETRANGE, TRUE, MAKELONG (-200, 200));
- p = getp_da ();
+ p = getp_da (hDlg);
if (p)
set_da (hDlg);
}
CheckDlgButton(hDlg, IDC_LORES_SMOOTHED, workprefs.gfx_lores_mode);
CheckDlgButton(hDlg, IDC_FLICKERFIXER, workprefs.gfx_scandoubler);
CheckDlgButton(hDlg, IDC_GRAYSCALE, workprefs.gfx_grayscale);
- CheckDlgButton(hDlg, IDC_ATARICOLORFIX, workprefs.gfx_threebitcolors);
CheckDlgButton (hDlg, IDC_XCENTER, workprefs.gfx_xcenter);
CheckDlgButton (hDlg, IDC_YCENTER, workprefs.gfx_ycenter);
workprefs.gfx_blackerthanblack = ischecked (hDlg, IDC_BLACKER_THAN_BLACK);
workprefs.gfx_autoresolution_vga = ischecked(hDlg, IDC_AUTORESOLUTIONVGA);
workprefs.gfx_grayscale = ischecked(hDlg, IDC_GRAYSCALE);
- workprefs.gfx_threebitcolors = ischecked(hDlg, IDC_ATARICOLORFIX);
int vres = workprefs.gfx_vresolution;
int viscan = workprefs.gfx_iscanlines;
if (LOWORD (wParam) == IDC_DA_RESET) {
int *p;
da_mode_selected = SendDlgItemMessage (hDlg, IDC_DA_MODE, CB_GETCURSEL, 0, 0);
- p = getp_da ();
+ p = getp_da (hDlg);
if (p)
*p = 0;
init_da (hDlg);
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>
<ImageHasSafeExceptionHandlers>
</ImageHasSafeExceptionHandlers>
+ <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Manifest>
<AdditionalManifestFiles>../resources/winuae.exe.manifest</AdditionalManifestFiles>
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>
<ImageHasSafeExceptionHandlers>
</ImageHasSafeExceptionHandlers>
+ <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Manifest>
<AdditionalManifestFiles>../resources/winuae.exe.manifest</AdditionalManifestFiles>
<TargetMachine>MachineX64</TargetMachine>
<LargeAddressAware>true</LargeAddressAware>
<BaseAddress>0x10000000</BaseAddress>
+ <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Manifest>
<AdditionalManifestFiles>..\resources\winuae64.exe.manifest</AdditionalManifestFiles>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<BaseAddress>0x10000000</BaseAddress>
+ <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Manifest>
<AdditionalManifestFiles>..\resources\winuae64.exe.manifest</AdditionalManifestFiles>
<SetChecksum>true</SetChecksum>
<BaseAddress>
</BaseAddress>
+ <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Manifest>
<AdditionalManifestFiles>../resources/winuae.exe.manifest</AdditionalManifestFiles>
<DataExecutionPrevention>true</DataExecutionPrevention>
<TargetMachine>MachineX64</TargetMachine>
<BaseAddress>0x10000000</BaseAddress>
+ <AdditionalOptions>/ignore:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Manifest>
<AdditionalManifestFiles>..\resources\winuae64.exe.manifest;%(AdditionalManifestFiles)</AdditionalManifestFiles>
+Beta 4:
+
+- Default game ports config without default.uae (Mouse + keyboard layout A) was not set. (b3)
+- On the fly input device change crash fix. (b3)
+- Monochrome mode config file entry added.
+- Atari ST dark palette fix moved to Brightness/Contrast/etc select menu and added alternate mode.
+- UAE expansion resident structures are now injected to execbase ResList. Now less important expansions are initialized
+ later. Previously all were initialized during diag init time. Now also uses normal RTF_AFTERDOS resident to start
+ clipboard sharing instead of ugly hack.
+- Simplified rawinput support, also removed rawinput checks, added when long time ago WINE didn't fully support rawinput.
+- Added harddrive master write protection checkbox to Misc panel. WARNING: don't use it with hardfiles unless you know
+ exactly what you are doing.
+- UAE Boot ROM with PPC native OS message now asks to enable correct boot ROM mode.
+
+OS4 UAE expansion updates:
+
+- Clipboard sharing is now supported.
+- Magic mouse is now supported.
+- Virtual mouse driver is now supported.
+- uaenative.library converted to new trap system but not tested.
+- uaescsi.device initialization converted to new trap system, device will open now without crashing but any CD access
+ commands will not work (and most likely will also crash strangely).
+
+Still not supported:
+
+- Directory filesystem on the fly insertion/removal, including CDFS CD swaps. Getting this to work will be extremely
+ complex task. Not sure if it is worth the trouble.
+- bsdsocket.library
+- uaeahi (Probably not needed, PCI sound card emulation is better choice)
+
+Beta 3:
+
+- When matching config file and on the fly connected game controllers, first check if both id and friendly name match and
+ only if no match, check id only and finally name only. Some multi slot controller adapters have unique name for each
+ port but all ports have same ID. (Was id and then name matching previously)
+- Remembered input device selections are now forgotten when new config is loaded.
+- On the fly unplugged devices are now properly remembered and re-inserted if on the fly reconnected.
+- PC Bridge disk drives raw image support (extended adf, ipf and so on.) Standard DOS disks only, no copy protections
+ or other tricks supported. Read-only, writing is not supported.
+- JIT slider now only shows power of 2 cache size values and max is 16384. (Max was already changed in previous betas)
+- Linked config files loaded unreliably (or never) due to uninitialized variable.
+- Real storage device (harddisk, memory card etc..) failed to open the device if it didn't have device path, only
+ drive letter.
+- CDFS automount didn't mount CDs with empty label, dos does not like empty volume names, replace empty name with "NO_LABEL"
+- BPLCON0 BYPASS bit emulated. AGA-only, bypasses palette selection, creates gray scale output. (Microcosm cheat mode effect)
+- Added A1000 composite out monochrome output mode emulation when BPLCON0 COLOR bit is zeroed. Option in advanced
+ chipset panel. Only emulated if no video port display devices enabled, monochrome emulation shares same code (and
+ in real world it is also not possible, RGB video out is not affected by COLOR bit). Also added always-on monochrome
+ mode option to Display panel. (Uses HRM documented gray scale brightness = 30% red, 60% green and 10% blue)
+- "Atari ST palette fix" added to Display panel, called "Dark palette fix". It is wrong to mention Atari ST in GUI :)
+ There are few stupid Atari ST ports that use original palette (3 bits/component) = halved brightness in Amiga.
+- UAE autoconfig board/boot ROM selection added to ROM panel. Do not touch unless you wan to run OS4 + UAE expansions.
+ OS4 + UAE expansions: must be set to last option, "New UAE (128k, ROM, Indirect)". (Quickly added to GUI, probably
+ will change in future versions)
+
+OS4 compatible UAE autoconfig board, boot ROM and communication interface.
+
+Currently supported UAE devices:
+
+- Directory harddrives.
+- uaehf.device (UAE HD controller hardfiles)
+- uaegfx RTG. (Copy OS3.x uaegfx and uaegfx.info to OS4.x Devs:Monitors)
+- uaenet.device
+- uae.resource
+- uaelib ("uaelib_demux" trap)
+
+Not yet supported (lots more work needed):
+
+- bsdsocket.library (This is the most difficult)
+- uaenative.library
+- clipboard sharing
+- uaescsi.device
+- virtual mouse driver
+- on the fly directory harddrive changes.
+
+And everything else that was not mentioned.
+
+Notes:
+
+- Slower than normal host<>Amiga communication because every read or write that accesses Amiga memory needs to be
+ done in Amiga side (due to non-1:1 logical/physical mapping). It will never be as fast as direct communication.
+- Remember to set ROM panel UAE expansion type to "New UAE (128k, ROM, Indirect)".
+- Directory harddrive (copied from HDF) OS4 installation will boot but it is not recommended, it is slowe
+ than HDF and there is mysterious issue that causes random read errors. (Missing font requester when booting is the
+ most common side-effect)
+- Most UAE expansions have preliminary updates for indirect trap support and support required multiple major
+ changes = many things can be strangely broken..
+
+Development speed of OS4 compatible UAE expansion and priority of features mainly depends on donations.
+
+
Beta 2:
- Game Ports panel keyboard layouts didn't load from config file. (b1)
trap_put_word(ctx, resaddr + 0x0, 0x4AFC);
trap_put_long(ctx, resaddr + 0x2, resaddr);
trap_put_long(ctx, resaddr + 0x6, resaddr + 0x1A); /* Continue scan here */
- trap_put_word(ctx, resaddr + 0xA, 0x8101); /* RTF_AUTOINIT|RTF_COLDSTART; Version 1 */
- trap_put_word(ctx, resaddr + 0xC, 0x0305); /* NT_DEVICE; pri 05 */
+ if (kickstart_version >= 37) {
+ trap_put_long(ctx, resaddr + 0xA, 0x84010300 | AFTERDOS_PRI); /* RTF_AUTOINIT|RTF_AFTERDOS; Version 1; NT_DEVICE; pri */
+ } else {
+ trap_put_long(ctx, resaddr + 0xA, 0x81010305); /* RTF_AUTOINIT|RTF_COLDSTART; Version 1; NT_DEVICE; pri 05 */
+ }
trap_put_long(ctx, resaddr + 0xE, ROM_netdev_resname);
trap_put_long(ctx, resaddr + 0x12, ROM_netdev_resid);
trap_put_long(ctx, resaddr + 0x16, ROM_netdev_init); /* calls netdev_init */
as.flags &= ~1;
as.sense_len = 32;
as.cmd_len = sd->cmd_len;
- as.data = sd->buffer;
+ as.data_h = sd->buffer;
as.len = sd->direction < 0 ? DEVICE_SCSI_BUFSIZE : sd->data_len;
sys_command_scsi_direct_native(sd->nativescsiunit, -1, &as);
sd->status = as.status;
int drivetype;
int iscd;
volatile uaecptr d_request[MAX_ASYNC_REQUESTS];
+ volatile uae_u8 *d_request_iobuf[MAX_ASYNC_REQUESTS];
volatile int d_request_type[MAX_ASYNC_REQUESTS];
volatile uae_u32 d_request_data[MAX_ASYNC_REQUESTS];
struct device_info di;
return di;
}
-static void io_log (const TCHAR *msg, uaecptr request)
+static void io_log(const TCHAR *msg, uae_u8 *iobuf, uaecptr request)
{
if (log_scsi)
write_log (_T("%s: %08X %d %08X %d %d io_actual=%d io_error=%d\n"),
- msg, request, get_word (request + 28), get_long (request + 40),
- get_long (request + 36), get_long (request + 44),
- get_long (request + 32), get_byte (request + 31));
+ msg, request, get_word (request + 28), get_long_host(iobuf + 40),
+ get_long_host(iobuf + 36), get_long_host(iobuf + 44),
+ get_long_host(iobuf + 32), get_byte (request + 31));
}
static struct devstruct *getdevstruct (int unit)
return 0;
}
-static struct priv_devstruct *getpdevstruct (uaecptr request)
+static struct priv_devstruct *getpdevstruct(TrapContext *ctx, uaecptr request)
{
- int i = get_long (request + 24);
+ int i = trap_get_long(ctx, request + 24);
if (i < 0 || i >= MAX_OPEN_DEVICES || pdevst[i].inuse == 0) {
write_log (_T("uaescsi.device: corrupt iorequest %08X %d\n"), request, i);
return 0;
}
}
-static void *dev_thread (void *devs);
-static int start_thread (struct devstruct *dev)
+static void *dev_thread(void *devs);
+static int start_thread(struct devstruct *dev)
{
if (dev->thread_running)
return 1;
- init_comm_pipe (&dev->requests, 100, 1);
+ init_comm_pipe (&dev->requests, 300, 3);
uae_sem_init (&dev->sync_sem, 0, 0);
uae_start_thread (_T("uaescsi"), dev_thread, dev, NULL);
uae_sem_wait (&dev->sync_sem);
return dev->thread_running;
}
-static void dev_close_3 (struct devstruct *dev, struct priv_devstruct *pdev)
+static void dev_close_3(struct devstruct *dev, struct priv_devstruct *pdev)
{
if (!dev->opencnt) return;
dev->opencnt--;
if (!dev->opencnt) {
sys_command_close (dev->unitnum);
pdev->inuse = 0;
- write_comm_pipe_u32 (&dev->requests, 0, 1);
+ write_comm_pipe_pvoid(&dev->requests, NULL, 0);
+ write_comm_pipe_pvoid(&dev->requests, NULL, 0);
+ write_comm_pipe_u32(&dev->requests, 0, 1);
}
}
-static uae_u32 REGPARAM2 dev_close_2 (TrapContext *context)
+static uae_u32 REGPARAM2 dev_close_2(TrapContext *ctx)
{
- uae_u32 request = m68k_areg (regs, 1);
- struct priv_devstruct *pdev = getpdevstruct (request);
+ uae_u32 request = trap_get_areg(ctx, 1);
+ struct priv_devstruct *pdev = getpdevstruct(ctx, request);
struct devstruct *dev;
if (!pdev)
return 0;
- dev = getdevstruct (pdev->unit);
+ dev = getdevstruct(pdev->unit);
if (log_scsi)
write_log (_T("%s:%d close, req=%08X\n"), getdevname (pdev->type), pdev->unit, request);
if (!dev)
return 0;
dev_close_3 (dev, pdev);
- put_long (request + 24, 0);
- put_word (m68k_areg (regs, 6) + 32, get_word (m68k_areg (regs, 6) + 32) - 1);
+ trap_put_long(ctx, request + 24, 0);
+ trap_put_word(ctx, trap_get_areg(ctx, 6) + 32, trap_get_word(ctx, trap_get_areg(ctx, 6) + 32) - 1);
return 0;
}
-static uae_u32 REGPARAM2 dev_close (TrapContext *context)
+static uae_u32 REGPARAM2 dev_close(TrapContext *context)
{
- return dev_close_2 (context);
+ return dev_close_2(context);
}
-static uae_u32 REGPARAM2 diskdev_close (TrapContext *context)
+static uae_u32 REGPARAM2 diskdev_close(TrapContext *context)
{
- return dev_close_2 (context);
+ return dev_close_2(context);
}
-static int openfail (uaecptr ioreq, int error)
+static int openfail(TrapContext *ctx, uaecptr ioreq, int error)
{
- put_long (ioreq + 20, -1);
- put_byte (ioreq + 31, error);
+ trap_put_long(ctx, ioreq + 20, -1);
+ trap_put_byte(ctx, ioreq + 31, error);
return (uae_u32)-1;
}
-static uae_u32 REGPARAM2 dev_open_2 (TrapContext *context, int type)
+static uae_u32 REGPARAM2 dev_open_2(TrapContext *ctx, int type)
{
- uaecptr ioreq = m68k_areg (regs, 1);
- uae_u32 unit = m68k_dreg (regs, 0);
- uae_u32 flags = m68k_dreg (regs, 1);
- struct devstruct *dev = getdevstruct (unit);
+ uaecptr ioreq = trap_get_areg(ctx, 1);
+ uae_u32 unit = trap_get_dreg(ctx, 0);
+ uae_u32 flags = trap_get_dreg(ctx, 1);
+ struct devstruct *dev = getdevstruct(unit);
struct priv_devstruct *pdev = 0;
int i, v;
if (log_scsi)
write_log (_T("opening %s:%d ioreq=%08X\n"), getdevname (type), unit, ioreq);
- if (get_word (ioreq + 0x12) < IOSTDREQ_SIZE && get_word (ioreq + 0x12) > 0)
- return openfail (ioreq, IOERR_BADLENGTH);
+ uae_u16 len = trap_get_word(ctx, ioreq + 0x12);
+ if (len < IOSTDREQ_SIZE && len > 0)
+ return openfail(ctx, ioreq, IOERR_BADLENGTH);
if (!dev)
- return openfail (ioreq, 32); /* badunitnum */
+ return openfail(ctx, ioreq, 32); /* badunitnum */
if (!dev->opencnt) {
for (i = 0; i < MAX_OPEN_DEVICES; i++) {
pdev = &pdevst[i];
break;
}
if (dev->drivetype == INQ_SEQD) {
- v = sys_command_open_tape (dev->unitnum, dev->tape_directory, dev->readonly);
+ v = sys_command_open_tape(dev->unitnum, dev->tape_directory, dev->readonly);
} else {
- v = sys_command_open (dev->unitnum);
+ v = sys_command_open(dev->unitnum);
}
if (!v)
- return openfail (ioreq, IOERR_OPENFAIL);
+ return openfail(ctx, ioreq, IOERR_OPENFAIL);
pdev->type = type;
pdev->unit = unit;
pdev->flags = flags;
pdev->inuse = 1;
- put_long (ioreq + 24, pdev - pdevst);
+ trap_put_long(ctx, ioreq + 24, pdev - pdevst);
start_thread (dev);
} else {
for (i = 0; i < MAX_OPEN_DEVICES; i++) {
if (pdev->inuse && pdev->unit == unit) break;
}
if (i == MAX_OPEN_DEVICES)
- return openfail (ioreq, IOERR_OPENFAIL);
- put_long (ioreq + 24, pdev - pdevst);
+ return openfail(ctx, ioreq, IOERR_OPENFAIL);
+ trap_put_long(ctx, ioreq + 24, pdev - pdevst);
}
dev->opencnt++;
- put_word (m68k_areg (regs, 6) + 32, get_word (m68k_areg (regs, 6) + 32) + 1);
- put_byte (ioreq + 31, 0);
- put_byte (ioreq + 8, 7);
+ trap_put_word(ctx, trap_get_areg(ctx, 6) + 32, trap_get_word(ctx, trap_get_areg(ctx, 6) + 32) + 1);
+ trap_put_byte(ctx, ioreq + 31, 0);
+ trap_put_byte(ctx, ioreq + 8, 7);
return 0;
}
-static uae_u32 REGPARAM2 dev_open (TrapContext *context)
+static uae_u32 REGPARAM2 dev_open(TrapContext *ctx)
{
- return dev_open_2 (context, UAEDEV_SCSI_ID);
+ return dev_open_2(ctx, UAEDEV_SCSI_ID);
}
-static uae_u32 REGPARAM2 diskdev_open (TrapContext *context)
+static uae_u32 REGPARAM2 diskdev_open (TrapContext *ctx)
{
- return dev_open_2 (context, UAEDEV_DISK_ID);
+ return dev_open_2(ctx, UAEDEV_DISK_ID);
}
-static uae_u32 REGPARAM2 dev_expunge (TrapContext *context)
+static uae_u32 REGPARAM2 dev_expunge(TrapContext *ctx)
{
return 0;
}
-static uae_u32 REGPARAM2 diskdev_expunge (TrapContext *context)
+static uae_u32 REGPARAM2 diskdev_expunge(TrapContext *ctx)
{
return 0;
}
-static int is_async_request (struct devstruct *dev, uaecptr request)
+static int is_async_request(struct devstruct *dev, uaecptr request)
{
int i = 0;
while (i < MAX_ASYNC_REQUESTS) {
- if (dev->d_request[i] == request) return 1;
+ if (dev->d_request[i] == request)
+ return 1;
i++;
}
return 0;
#endif
// pollmode is 1 if no change interrupts found -> increase time of media change
-int scsi_do_disk_change (int unitnum, int insert, int *pollmode)
+int scsi_do_disk_change(int unitnum, int insert, int *pollmode)
{
int i, j, ret;
return ret;
}
-static int add_async_request (struct devstruct *dev, uaecptr request, int type, uae_u32 data)
+static int add_async_request(struct devstruct *dev, uae_u8 *iobuf, uaecptr request, int type, uae_u32 data)
{
int i;
i = 0;
while (i < MAX_ASYNC_REQUESTS) {
if (dev->d_request[i] == 0) {
+ dev->d_request_iobuf[i] = iobuf;
dev->d_request[i] = request;
dev->d_request_type[i] = type;
dev->d_request_data[i] = data;
return -1;
}
-static int release_async_request (struct devstruct *dev, uaecptr request)
+static int release_async_request(struct devstruct *dev, uaecptr request)
{
int i = 0;
if (dev->d_request[i] == request) {
int type = dev->d_request_type[i];
dev->d_request[i] = 0;
+ xfree((uae_u8*)dev->d_request_iobuf[i]);
+ dev->d_request_iobuf[i] = 0;
dev->d_request_data[i] = 0;
dev->d_request_type[i] = 0;
return type;
return -1;
}
-static void abort_async (struct devstruct *dev, uaecptr request, int errcode, int type)
+static void abort_async(struct devstruct *dev, uaecptr request, int errcode, int type)
{
int i;
i = 0;
write_log (_T("asyncronous request=%08X aborted, error=%d\n"), request, errcode);
}
-static int command_read (struct devstruct *dev, uaecptr data, uae_u64 offset, uae_u32 length, uae_u32 *io_actual)
+static int command_read(TrapContext *ctx, struct devstruct *dev, uaecptr data, uae_u64 offset, uae_u32 length, uae_u32 *io_actual)
{
int blocksize = dev->di.bytespersector;
return 0;
}
-static int command_write (struct devstruct *dev, uaecptr data, uae_u64 offset, uae_u32 length, uae_u32 *io_actual)
+static int command_write(TrapContext *ctx, struct devstruct *dev, uaecptr data, uae_u64 offset, uae_u32 length, uae_u32 *io_actual)
{
uae_u32 blocksize = dev->di.bytespersector;
length /= blocksize;
return 0;
}
-static int command_cd_read (struct devstruct *dev, uaecptr data, uae_u64 offset, uae_u32 length, uae_u32 *io_actual)
+static int command_cd_read(TrapContext *ctx, struct devstruct *dev, uaecptr data, uae_u64 offset, uae_u32 length, uae_u32 *io_actual)
{
uae_u32 len, sector, startoffset;
int blocksize;
return 0;
}
-static int dev_do_io_other (struct devstruct *dev, uaecptr request)
+static int dev_do_io_other(TrapContext *ctx, struct devstruct *dev, uae_u8 *iobuf, uaecptr request)
{
uae_u32 command;
- uae_u32 io_data = get_long (request + 40); // 0x28
- uae_u32 io_length = get_long (request + 36); // 0x24
- uae_u32 io_actual = get_long (request + 32); // 0x20
- uae_u32 io_offset = get_long (request + 44); // 0x2c
+ uae_u32 io_data = get_long_host(iobuf + 40); // 0x28
+ uae_u32 io_length = get_long_host(iobuf + 36); // 0x24
+ uae_u32 io_actual = get_long_host(iobuf + 32); // 0x20
+ uae_u32 io_offset = get_long_host(iobuf + 44); // 0x2c
uae_u32 io_error = 0;
- struct priv_devstruct *pdev = getpdevstruct (request);
+ struct priv_devstruct *pdev = getpdevstruct(ctx, request);
if (!pdev)
return 0;
- command = get_word (request + 28);
+ command = get_word_host(iobuf + 28);
if (log_scsi)
write_log (_T("SCSI OTHER %d: DATA=%08X LEN=%08X OFFSET=%08X ACTUAL=%08X\n"),
break;
case HD_SCSICMD:
{
- uae_u32 sdd = get_long (request + 40);
- io_error = sys_command_scsi_direct (dev->unitnum, dev->drivetype, sdd);
+ uae_u32 sdd = get_long_host(iobuf + 40);
+ io_error = sys_command_scsi_direct(ctx, dev->unitnum, dev->drivetype, sdd);
if (log_scsi)
write_log (_T("scsidev other: did io: sdd %08x request %08x error %d\n"), sdd, request, get_byte (request + 31));
}
break;
}
- put_long (request + 32, io_actual);
- put_byte (request + 31, io_error);
- io_log (_T("dev_io_other"), request);
+ put_long_host(iobuf + 32, io_actual);
+ put_byte_host(iobuf + 31, io_error);
+ io_log (_T("dev_io_other"), iobuf, request);
return 0;
}
-static int dev_do_io_tape (struct devstruct *dev, uaecptr request)
+static int dev_do_io_tape (TrapContext *ctx, struct devstruct *dev, uae_u8 *iobuf, uaecptr request)
{
uae_u32 command;
- uae_u32 io_data = get_long (request + 40); // 0x28
- uae_u32 io_length = get_long (request + 36); // 0x24
- uae_u32 io_actual = get_long (request + 32); // 0x20
- uae_u32 io_offset = get_long (request + 44); // 0x2c
+ uae_u32 io_data = get_long_host(iobuf + 40); // 0x28
+ uae_u32 io_length = get_long_host(iobuf + 36); // 0x24
+ uae_u32 io_actual = get_long_host(iobuf + 32); // 0x20
+ uae_u32 io_offset = get_long_host(iobuf + 44); // 0x2c
uae_u32 io_error = 0;
- struct priv_devstruct *pdev = getpdevstruct (request);
+ struct priv_devstruct *pdev = getpdevstruct(ctx, request);
if (!pdev)
return 0;
- command = get_word (request + 28);
+ command = get_word_host(iobuf + 28);
if (log_scsi)
write_log (_T("TAPE %d: DATA=%08X LEN=%08X OFFSET=%08X ACTUAL=%08X\n"),
break;
case HD_SCSICMD:
{
- uae_u32 sdd = get_long (request + 40);
- io_error = sys_command_scsi_direct (dev->unitnum, INQ_SEQD, sdd);
+ uae_u32 sdd = get_long_host(iobuf + 40);
+ io_error = sys_command_scsi_direct(ctx, dev->unitnum, INQ_SEQD, sdd);
if (log_scsi)
write_log (_T("scsidev tape: did io: sdd %08x request %08x error %d\n"), sdd, request, get_byte (request + 31));
}
break;
}
- put_long (request + 32, io_actual);
- put_byte (request + 31, io_error);
- io_log (_T("dev_io_tape"), request);
+ put_long_host(iobuf + 32, io_actual);
+ put_byte_host(iobuf + 31, io_error);
+ io_log (_T("dev_io_tape"), iobuf, request);
return 0;
}
-static int dev_do_io_cd (struct devstruct *dev, uaecptr request)
+static int dev_do_io_cd (TrapContext *ctx, struct devstruct *dev, uae_u8 *iobuf, uaecptr request)
{
uae_u32 command;
- uae_u32 io_data = get_long (request + 40); // 0x28
- uae_u32 io_length = get_long (request + 36); // 0x24
- uae_u32 io_actual = get_long (request + 32); // 0x20
- uae_u32 io_offset = get_long (request + 44); // 0x2c
+ uae_u32 io_data = get_long_host(iobuf + 40); // 0x28
+ uae_u32 io_length = get_long_host(iobuf + 36); // 0x24
+ uae_u32 io_actual = get_long_host(iobuf + 32); // 0x20
+ uae_u32 io_offset = get_long_host(iobuf + 44); // 0x2c
uae_u32 io_error = 0;
uae_u64 io_offset64;
int async = 0;
int bmask = dev->di.bytespersector - 1;
- struct priv_devstruct *pdev = getpdevstruct (request);
+ struct priv_devstruct *pdev = getpdevstruct(ctx, request);
if (!pdev)
return 0;
- command = get_word (request + 28);
+ command = get_word_host(iobuf + 28);
if (log_scsi)
write_log (_T("CD %d: DATA=%08X LEN=%08X OFFSET=%08X ACTUAL=%08X\n"),
if (dev->di.media_inserted <= 0)
goto no_media;
if (dev->drivetype == INQ_ROMD) {
- io_error = command_cd_read (dev, io_data, io_offset, io_length, &io_actual);
+ io_error = command_cd_read(ctx, dev, io_data, io_offset, io_length, &io_actual);
} else {
if ((io_offset & bmask) || bmask == 0 || io_data == 0)
goto bad_command;
if ((io_length & bmask) || io_length == 0)
goto bad_len;
- io_error = command_read (dev, io_data, io_offset, io_length, &io_actual);
+ io_error = command_read(ctx, dev, io_data, io_offset, io_length, &io_actual);
}
break;
case TD_READ64:
case NSCMD_TD_READ64:
if (dev->di.media_inserted <= 0)
goto no_media;
- io_offset64 = get_long (request + 44) | ((uae_u64)get_long (request + 32) << 32);
+ io_offset64 = get_long_host(iobuf + 44) | ((uae_u64)get_long_host(iobuf + 32) << 32);
if ((io_offset64 & bmask) || bmask == 0 || io_data == 0)
goto bad_command;
if ((io_length & bmask) || io_length == 0)
goto bad_len;
if (dev->drivetype == INQ_ROMD)
- io_error = command_cd_read (dev, io_data, io_offset64, io_length, &io_actual);
+ io_error = command_cd_read(ctx, dev, io_data, io_offset64, io_length, &io_actual);
else
- io_error = command_read (dev, io_data, io_offset64, io_length, &io_actual);
+ io_error = command_read(ctx, dev, io_data, io_offset64, io_length, &io_actual);
break;
case CMD_WRITE:
} else if ((io_length & bmask) || io_length == 0) {
goto bad_len;
} else {
- io_error = command_write (dev, io_data, io_offset, io_length, &io_actual);
+ io_error = command_write(ctx, dev, io_data, io_offset, io_length, &io_actual);
}
break;
case TD_WRITE64:
case NSCMD_TD_WRITE64:
if (dev->di.media_inserted <= 0)
goto no_media;
- io_offset64 = get_long (request + 44) | ((uae_u64)get_long (request + 32) << 32);
+ io_offset64 = get_long_host(iobuf + 44) | ((uae_u64)get_long_host(iobuf + 32) << 32);
if (dev->di.write_protected || dev->drivetype == INQ_ROMD) {
io_error = 28; /* writeprotect */
} else if ((io_offset64 & bmask) || bmask == 0 || io_data == 0) {
} else if ((io_length & bmask) || io_length == 0) {
goto bad_len;
} else {
- io_error = command_write (dev, io_data, io_offset64, io_length, &io_actual);
+ io_error = command_write(ctx, dev, io_data, io_offset64, io_length, &io_actual);
}
break;
} else if ((io_length & bmask) || io_length == 0) {
goto bad_len;
} else {
- io_error = command_write (dev, io_data, io_offset, io_length, &io_actual);
+ io_error = command_write(ctx, dev, io_data, io_offset, io_length, &io_actual);
}
break;
case TD_FORMAT64:
case NSCMD_TD_FORMAT64:
if (dev->di.media_inserted <= 0)
goto no_media;
- io_offset64 = get_long (request + 44) | ((uae_u64)get_long (request + 32) << 32);
+ io_offset64 = get_long_host(iobuf + 44) | ((uae_u64)get_long_host(iobuf + 32) << 32);
if (dev->di.write_protected || dev->drivetype == INQ_ROMD) {
io_error = 28; /* writeprotect */
} else if ((io_offset64 & bmask) || bmask == 0 || io_data == 0) {
} else if ((io_length & bmask) || io_length == 0) {
goto bad_len;
} else {
- io_error = command_write (dev, io_data, io_offset64, io_length, &io_actual);
+ io_error = command_write(ctx, dev, io_data, io_offset64, io_length, &io_actual);
}
break;
case CMD_GETGEOMETRY:
{
struct device_info *di;
+ uae_u8 geom[30];
di = devinfo (dev, &dev->di);
if (di->media_inserted <= 0)
goto no_media;
- put_long (io_data + 0, di->bytespersector);
- put_long (io_data + 4, di->sectorspertrack * di->trackspercylinder * di->cylinders);
- put_long (io_data + 8, di->cylinders);
- put_long (io_data + 12, di->sectorspertrack * di->trackspercylinder);
- put_long (io_data + 16, di->trackspercylinder);
- put_long (io_data + 20, di->sectorspertrack);
- put_long (io_data + 24, 0); /* bufmemtype */
- put_byte (io_data + 28, di->type);
- put_byte (io_data + 29, di->removable ? 1 : 0); /* flags */
+ put_long_host(geom + 0, di->bytespersector);
+ put_long_host(geom + 4, di->sectorspertrack * di->trackspercylinder * di->cylinders);
+ put_long_host(geom + 8, di->cylinders);
+ put_long_host(geom + 12, di->sectorspertrack * di->trackspercylinder);
+ put_long_host(geom + 16, di->trackspercylinder);
+ put_long_host(geom + 20, di->sectorspertrack);
+ put_long_host(geom + 24, 0); /* bufmemtype */
+ put_byte_host(geom + 28, di->type);
+ put_byte_host(geom + 29, di->removable ? 1 : 0); /* flags */
+ trap_put_bytes(ctx, geom, io_data, sizeof geom);
io_actual = 30;
}
break;
case CMD_ADDCHANGEINT:
dev->changeint_mediastate = dev->di.media_inserted;
- io_error = add_async_request (dev, request, ASYNC_REQUEST_CHANGEINT, io_data);
+ io_error = add_async_request (dev, iobuf, request, ASYNC_REQUEST_CHANGEINT, io_data);
if (!io_error)
async = 1;
break;
}
break;
case CD_ADDFRAMEINT:
- io_error = add_async_request (dev, request, ASYNC_REQUEST_FRAMEINT, io_data);
+ io_error = add_async_request (dev, iobuf, request, ASYNC_REQUEST_FRAMEINT, io_data);
if (!io_error)
async = 1;
break;
case HD_SCSICMD:
{
- uae_u32 sdd = get_long (request + 40);
- io_error = sys_command_scsi_direct (dev->unitnum, INQ_ROMD, sdd);
+ uae_u32 sdd = get_long_host(iobuf + 40);
+ io_error = sys_command_scsi_direct(ctx, dev->unitnum, INQ_ROMD, sdd);
if (log_scsi)
write_log (_T("scsidev cd: did io: sdd %08x request %08x error %d\n"), sdd, request, get_byte (request + 31));
}
break;
case NSCMD_DEVICEQUERY:
- put_long (io_data + 0, 0);
- put_long (io_data + 4, 16); /* size */
- put_word (io_data + 8, NSDEVTYPE_TRACKDISK);
- put_word (io_data + 10, 0);
- put_long (io_data + 12, nscmd_cmd);
+ trap_put_long(ctx, io_data + 0, 0);
+ trap_put_long(ctx, io_data + 4, 16); /* size */
+ trap_put_word(ctx, io_data + 8, NSDEVTYPE_TRACKDISK);
+ trap_put_word(ctx, io_data + 10, 0);
+ trap_put_long(ctx, io_data + 12, nscmd_cmd);
io_actual = 16;
break;
default:
io_error = TDERR_DiskChanged;
break;
}
- put_long (request + 32, io_actual);
- put_byte (request + 31, io_error);
- io_log (_T("dev_io_cd"), request);
+ put_long_host(iobuf + 32, io_actual);
+ put_byte_host(iobuf + 31, io_error);
+ io_log (_T("dev_io_cd"), iobuf, request);
return async;
}
-static int dev_do_io (struct devstruct *dev, uaecptr request)
+static int dev_do_io(TrapContext *ctx, struct devstruct *dev, uae_u8 *iobuf, uaecptr request)
{
if (dev->drivetype == INQ_SEQD) {
- return dev_do_io_tape (dev, request);
+ return dev_do_io_tape(ctx, dev, iobuf, request);
} else if (dev->drivetype == INQ_ROMD) {
- return dev_do_io_cd (dev, request);
+ return dev_do_io_cd(ctx, dev, iobuf, request);
} else {
- return dev_do_io_other (dev, request);
+ return dev_do_io_other(ctx, dev, iobuf, request);
}
}
-static int dev_can_quick (uae_u32 command)
+static int dev_can_quick(uae_u32 command)
{
switch (command)
{
return 0;
}
-static int dev_canquick (struct devstruct *dev, uaecptr request)
+static int dev_canquick(struct devstruct *dev, uae_u8 *iobuf, uaecptr request)
{
- uae_u32 command = get_word (request + 28);
+ uae_u32 command = get_word_host(iobuf + 28);
return dev_can_quick (command);
}
-static uae_u32 REGPARAM2 dev_beginio (TrapContext *context)
+static uae_u32 REGPARAM2 dev_beginio(TrapContext *ctx)
{
- uae_u32 request = m68k_areg (regs, 1);
- uae_u8 flags = get_byte (request + 30);
- int command = get_word (request + 28);
- struct priv_devstruct *pdev = getpdevstruct (request);
+ uae_u32 request = trap_get_areg(ctx, 1);
+
+ uae_u8 *iobuf = xmalloc(uae_u8, 48);
+
+ trap_get_bytes(ctx, iobuf, request, 48);
+
+ uae_u8 flags = get_byte_host(iobuf + 30);
+ int command = get_word_host(iobuf + 28);
+ struct priv_devstruct *pdev = getpdevstruct(ctx, request);
struct devstruct *dev;
int canquick;
- put_byte (request + 8, NT_MESSAGE);
+ put_byte_host(iobuf + 8, NT_MESSAGE);
if (!pdev) {
- put_byte (request + 31, 32);
- return get_byte (request + 31);
+ uae_u8 err = 32;
+ put_byte_host(iobuf + 31, err);
+ trap_put_bytes(ctx, iobuf + 8, request + 8, 48 - 8);
+ xfree(iobuf);
+ return err;
}
dev = getdevstruct (pdev->unit);
if (!dev) {
- put_byte (request + 31, 32);
- return get_byte (request + 31);
+ uae_u8 err = 32;
+ put_byte_host(iobuf + 31, err);
+ trap_put_bytes(ctx, iobuf + 8, request + 8, 48 - 8);
+ xfree(iobuf);
+ return err;
}
- put_byte (request + 31, 0);
- canquick = dev_canquick (dev, request);
+
+ put_byte_host(iobuf + 31, 0);
+ canquick = dev_canquick (dev, iobuf, request);
if (((flags & 1) && canquick) || (canquick < 0)) {
- dev_do_io (dev, request);
+ dev_do_io(ctx, dev, iobuf, request);
+ uae_u8 v = get_byte_host(iobuf + 31);
+ trap_put_bytes(ctx, iobuf + 8, request + 8, 48 - 8);
+ xfree(iobuf);
if (!(flags & 1))
uae_ReplyMsg (request);
- return get_byte (request + 31);
+ return v;
} else {
- add_async_request (dev, request, ASYNC_REQUEST_TEMP, 0);
- put_byte (request + 30, get_byte (request + 30) & ~1);
- write_comm_pipe_u32 (&dev->requests, request, 1);
+ add_async_request (dev, iobuf, request, ASYNC_REQUEST_TEMP, 0);
+ put_byte_host(iobuf + 30, get_byte_host(iobuf + 30) & ~1);
+ trap_put_bytes(ctx, iobuf + 8, request + 8, 48 - 8);
+ trap_set_background(ctx);
+ write_comm_pipe_pvoid(&dev->requests, ctx, 0);
+ write_comm_pipe_pvoid(&dev->requests, iobuf, 0);
+ write_comm_pipe_u32(&dev->requests, request, 1);
return 0;
}
}
dev->thread_running = 1;
uae_sem_post (&dev->sync_sem);
for (;;) {
+ TrapContext *ctx = (TrapContext*)read_comm_pipe_pvoid_blocking(&dev->requests);
+ uae_u8 *iobuf = (uae_u8*)read_comm_pipe_pvoid_blocking(&dev->requests);
uaecptr request = (uaecptr)read_comm_pipe_u32_blocking (&dev->requests);
uae_sem_wait (&change_sem);
if (!request) {
uae_sem_post (&dev->sync_sem);
uae_sem_post (&change_sem);
return 0;
- } else if (dev_do_io (dev, request) == 0) {
- put_byte (request + 30, get_byte (request + 30) & ~1);
+ } else if (dev_do_io(ctx, dev, iobuf, request) == 0) {
+ put_byte_host(iobuf + 30, get_byte_host(iobuf + 30) & ~1);
+ trap_put_bytes(ctx, iobuf + 8, request + 8, 48 - 8);
release_async_request (dev, request);
uae_ReplyMsg (request);
} else {
if (log_scsi)
write_log (_T("%s:%d async request %08X\n"), getdevname(0), dev->unitnum, request);
+ trap_put_bytes(ctx, iobuf + 8, request + 8, 48 - 8);
}
+ trap_background_set_complete(ctx);
uae_sem_post (&change_sem);
}
return 0;
}
-static uae_u32 REGPARAM2 dev_init_2 (TrapContext *context, int type)
+static uae_u32 REGPARAM2 dev_init_2(TrapContext *ctx, int type)
{
- uae_u32 base = trap_get_dreg (context, 0);
+ uae_u32 base = trap_get_dreg(ctx, 0);
if (log_scsi)
write_log (_T("%s init\n"), getdevname (type));
return base;
}
-static uae_u32 REGPARAM2 dev_init (TrapContext *context)
+static uae_u32 REGPARAM2 dev_init(TrapContext *ctx)
{
- return dev_init_2 (context, UAEDEV_SCSI_ID);
+ return dev_init_2(ctx, UAEDEV_SCSI_ID);
}
-static uae_u32 REGPARAM2 diskdev_init (TrapContext *context)
+static uae_u32 REGPARAM2 diskdev_init(TrapContext *ctx)
{
- return dev_init_2 (context, UAEDEV_DISK_ID);
+ return dev_init_2(ctx, UAEDEV_DISK_ID);
}
-static uae_u32 REGPARAM2 dev_abortio (TrapContext *context)
+static uae_u32 REGPARAM2 dev_abortio (TrapContext *ctx)
{
- uae_u32 request = m68k_areg (regs, 1);
- struct priv_devstruct *pdev = getpdevstruct (request);
+ uae_u32 request = trap_get_areg(ctx, 1);
+ struct priv_devstruct *pdev = getpdevstruct(ctx, request);
struct devstruct *dev;
if (!pdev) {
- put_byte (request + 31, 32);
- return get_byte (request + 31);
+ uae_u8 err = 32;
+ trap_put_byte(ctx, request + 31, err);
+ return err;
}
dev = getdevstruct (pdev->unit);
if (!dev) {
- put_byte (request + 31, 32);
- return get_byte (request + 31);
+ uae_u8 err = 32;
+ trap_put_byte(ctx, request + 31, err);
+ return err;
}
- put_byte (request + 31, IOERR_ABORTED);
+ trap_put_byte(ctx, request + 31, IOERR_ABORTED);
if (log_scsi)
write_log (_T("abortio %s unit=%d, request=%08X\n"), getdevname (pdev->type), pdev->unit, request);
- abort_async (dev, request, IOERR_ABORTED, 0);
+ abort_async(dev, request, IOERR_ABORTED, 0);
return 0;
}
trap_put_word(ctx, resaddr + 0x0, 0x4AFC);
trap_put_long(ctx, resaddr + 0x2, resaddr);
trap_put_long(ctx, resaddr + 0x6, resaddr + 0x1A); /* Continue scan here */
- trap_put_word(ctx, resaddr + 0xA, 0x8127); /* RTF_AUTOINIT|RTF_COLDSTART; Version 1 */
- trap_put_word(ctx, resaddr + 0xC, 0x0900); /* NT_LIBRARY; pri 00 */
+ if (kickstart_version >= 37) {
+ trap_put_long(ctx, resaddr + 0xA, 0x84270900 | AFTERDOS_PRI); /* RTF_AUTOINIT, RT_VERSION NT_LIBRARY, RT_PRI */
+ } else {
+ trap_put_long(ctx, resaddr + 0xA, 0x81270905); /* RTF_AUTOINIT, RT_VERSION NT_LIBRARY, RT_PRI */
+ }
trap_put_long(ctx, resaddr + 0xE, lib_name);
trap_put_long(ctx, resaddr + 0x12, lib_id);
trap_put_long(ctx, resaddr + 0x16, lib_init);
uae_u8 calllib_reg_inuse[16];
int tindex;
int tcnt;
+ TRAP_CALLBACK callback;
+ void *callback_ud;
};
static void copytocpucontext(struct TrapCPUContext *cpu)
/* UAE board traps */
-#define TRAP_THREADS 4
+#define TRAP_THREADS (RTAREA_TRAP_DATA_NUM + RTAREA_TRAP_DATA_SEND_NUM)
static smp_comm_pipe trap_thread_pipe[TRAP_THREADS];
static uae_thread_id trap_thread_id[TRAP_THREADS];
static volatile uae_atomic trap_thread_index;
-static volatile int hardware_trap_kill[RTAREA_TRAP_DATA_NUM];
+static volatile int hardware_trap_kill[TRAP_THREADS];
static volatile int trap_cnt;
+volatile int trap_mode;
static void hardware_trap_ack(TrapContext *ctx)
{
TrapContext *ctx = (TrapContext*)read_comm_pipe_pvoid_blocking(&trap_thread_pipe[tid]);
if (!ctx)
break;
+
uae_u8 *data = ctx->host_trap_data;
uae_u8 *status = ctx->host_trap_status;
ctx->tindex = tid;
write_log(_T("%d: T%d,%d,%08x\n"), ctx->tcnt, tid, trap_num, trap->addr);
#endif
- uae_u32 ret = trap->handler(ctx);
+ uae_u32 ret;
+
+ if (ctx->callback) {
+ ret = ctx->callback(ctx, ctx->callback_ud);
+ } else {
+ ret = trap->handler(ctx);
+ }
if (!ctx->trap_background) {
for (int i = 0; i < 15; i++) {
}
}
+void trap_dos_active(void)
+{
+ trap_mode = 1;
+}
+
void call_hardware_trap(uae_u8 *host_base, uaecptr amiga_base, int slot)
{
TrapContext *ctx = xcalloc(TrapContext, 1);
ctx->amiga_trap_data = amiga_base + RTAREA_TRAP_DATA + slot * RTAREA_TRAP_DATA_SLOT_SIZE;
ctx->host_trap_status = host_base + RTAREA_TRAP_STATUS + slot * RTAREA_TRAP_STATUS_SIZE;
ctx->amiga_trap_status = amiga_base + RTAREA_TRAP_STATUS + slot * RTAREA_TRAP_STATUS_SIZE;
- uae_u32 idx = atomic_inc(&trap_thread_index) & (TRAP_THREADS - 1);
+ uae_u32 idx = atomic_inc(&trap_thread_index) & (RTAREA_TRAP_DATA_NUM - 1);
write_comm_pipe_pvoid(&trap_thread_pipe[idx], ctx, 1);
}
-extern HANDLE hardware_trap_event[];
-
-#define MAX_OUTTRAPS 1
+extern uae_sem_t hardware_trap_event[];
-static struct TrapContext outtrap[MAX_OUTTRAPS];
-static volatile uae_atomic outtrap_alloc[MAX_OUTTRAPS];
+static struct TrapContext outtrap[RTAREA_TRAP_DATA_SEND_NUM];
+static volatile uae_atomic outtrap_alloc[RTAREA_TRAP_DATA_SEND_NUM];
-static uae_u32 call_hardware_trap_back(TrapContext *ctx, uae_u16 cmd, uae_u32 p1, uae_u32 p2, uae_u32 p3, uae_u32 p4)
+TrapContext *alloc_host_main_trap_context(void)
{
- bool sendmode = false;
-
- if (ctx == NULL) {
- int slot = 0;
- // now this gets even more tricky..
- if (atomic_inc(&outtrap_alloc[slot])) {
- write_log(_T("already allocated!!\n"));
- return 0;
- }
- ctx = &outtrap[slot];
- ctx->host_trap_data = rtarea_bank.baseaddr + RTAREA_TRAP_SEND_DATA + slot * RTAREA_TRAP_DATA_SLOT_SIZE;
- ctx->amiga_trap_data = rtarea_base + RTAREA_TRAP_DATA + slot * RTAREA_TRAP_DATA_SLOT_SIZE;
- ctx->host_trap_status = rtarea_bank.baseaddr + RTAREA_TRAP_SEND_STATUS + slot * RTAREA_TRAP_STATUS_SIZE;
- ctx->amiga_trap_status = rtarea_base + RTAREA_TRAP_SEND_STATUS + slot * RTAREA_TRAP_STATUS_SIZE;
-
- sendmode = true;
+ int trap_slot = RTAREA_TRAP_DATA_NUM;
+ if (atomic_inc(&outtrap_alloc[trap_slot - RTAREA_TRAP_DATA_NUM])) {
+ while (outtrap_alloc[trap_slot - RTAREA_TRAP_DATA_NUM] > RTAREA_TRAP_DATA_SEND_NUM)
+ sleep_millis(1);
}
+ TrapContext *ctx = &outtrap[trap_slot - RTAREA_TRAP_DATA_NUM];
+ return ctx;
+}
- uae_u8 *data = ctx->host_trap_data + RTAREA_TRAP_DATA_SECOND;
- uae_u8 *status = ctx->host_trap_status + RTAREA_TRAP_STATUS_SECOND;
+void free_host_trap_context(TrapContext *ctx)
+{
+ int trap_slot = RTAREA_TRAP_DATA_NUM;
+ atomic_dec(&outtrap_alloc[trap_slot]);
+}
+static uae_u32 call_hardware_trap_back_back(TrapContext *ctx, uae_u16 cmd, uae_u32 p1, uae_u32 p2, uae_u32 p3, uae_u32 p4)
+{
int trap_slot = ((ctx->amiga_trap_data & 0xffff) - RTAREA_TRAP_DATA) / RTAREA_TRAP_DATA_SLOT_SIZE;
+ uae_u8 *data = ctx->host_trap_data + RTAREA_TRAP_DATA_SECOND;
+ uae_u8 *status = ctx->host_trap_status + RTAREA_TRAP_STATUS_SECOND;
#if NEW_TRAP_DEBUG
write_log(_T("%d: B%dS%d\n"), ctx->tcnt, cmd, trap_slot);
*d = 0xff;
- if (sendmode) {
-
- write_log(_T("sendmode!\n"));
-
- } else {
-
- for (;;) {
- if (hardware_trap_kill[trap_slot] == 0xff)
- return 0;
- uae_u8 v = *d;
- if (v == 0x01 || v == 0x02)
- break;
- if (hardware_trap_kill[trap_slot] == 0) {
- hardware_trap_kill[trap_slot] = 2;
- return 0;
- }
- // FIXME: OS specific code!
- if (WaitForSingleObject(hardware_trap_event[trap_slot], 100) == WAIT_ABANDONED) {
- hardware_trap_kill[trap_slot] = 3;
- return 0;
- }
+ for (;;) {
+ if (hardware_trap_kill[trap_slot] < 0)
+ return 0;
+ uae_u8 v = *d;
+ if (v == 0x01 || v == 0x02)
+ break;
+ if (hardware_trap_kill[trap_slot] == 0) {
+ hardware_trap_kill[trap_slot] = 2;
+ return 0;
+ }
+ if (uae_sem_trywait_delay(&hardware_trap_event[trap_slot], 100) == -2) {
+ hardware_trap_kill[trap_slot] = 3;
+ return 0;
}
-
}
// get result
return v;
}
+static uae_u32 call_hardware_trap_back(TrapContext *ctx, uae_u16 cmd, uae_u32 p1, uae_u32 p2, uae_u32 p3, uae_u32 p4)
+{
+ return call_hardware_trap_back_back(ctx, cmd, p1, p2, p3, p4);
+}
+
+// Executes trap from C-code
+void trap_callback(TRAP_CALLBACK cb, void *ud)
+{
+ if (trap_is_indirect()) {
+ int trap_slot = RTAREA_TRAP_DATA_NUM;
+ TrapContext *ctx = xcalloc(TrapContext, 1);
+ ctx->host_trap_data = rtarea_bank.baseaddr + RTAREA_TRAP_DATA + trap_slot * RTAREA_TRAP_DATA_SLOT_SIZE;
+ ctx->amiga_trap_data = rtarea_base + RTAREA_TRAP_DATA + trap_slot * RTAREA_TRAP_DATA_SLOT_SIZE;
+ ctx->host_trap_status = rtarea_bank.baseaddr + RTAREA_TRAP_STATUS + trap_slot * RTAREA_TRAP_STATUS_SIZE;
+ ctx->amiga_trap_status = rtarea_base + RTAREA_TRAP_STATUS + trap_slot * RTAREA_TRAP_STATUS_SIZE;
+
+ // Set status to allocated, we are skipping hwtrap_entry()
+ put_long_host(ctx->host_trap_status + 4, 0x00000000);
+ put_long_host(ctx->host_trap_status, 0x00000080);
+
+ ctx->callback = cb;
+ ctx->callback_ud = ud;
+ write_comm_pipe_pvoid(&trap_thread_pipe[trap_slot], ctx, 1);
+ } else {
+ cb(NULL, ud);
+ }
+}
+
/*
* Set up extended trap context and call handler function
void init_traps(void)
{
trap_count = 0;
- hwtrap_waiting = 0;
if (!trap_thread_id[0] && trap_is_indirect()) {
for (int i = 0; i < TRAP_THREADS; i++) {
init_comm_pipe(&trap_thread_pipe[i], 100, 1);
}
+void trap_reset(void)
+{
+ trap_mode = 0;
+ hwtrap_waiting = 0;
+}
+
+bool trap_is_indirect(void)
+{
+ return currprefs.uaeboard > 2;
+}
+
+static bool trap_is_indirect_null(TrapContext *ctx)
+{
+ return ctx && trap_is_indirect();
+}
+
void trap_call_add_dreg(TrapContext *ctx, int reg, uae_u32 v)
{
ctx->calllib_reg_inuse[reg] = 1;
uae_u32 trap_call_lib(TrapContext *ctx, uaecptr base, uae_s16 offset)
{
uae_u32 v;
- if (ctx && ctx->host_trap_data) {
+ if (trap_is_indirect_null(ctx)) {
uae_u8 *p = ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
for (int i = 0; i < 16; i++) {
if (ctx->calllib_reg_inuse[i]) {
uae_u32 trap_call_func(TrapContext *ctx, uaecptr func)
{
uae_u32 v;
- if (ctx && ctx->host_trap_data) {
+ if (trap_is_indirect_null(ctx)) {
uae_u8 *p = ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
for (int i = 0; i < 16; i++) {
if (ctx->calllib_reg_inuse[i]) {
void trap_set_background(TrapContext *ctx)
{
+ if (!ctx)
+ return;
if (!trap_is_indirect())
return;
ctx->trap_background++;
}
-bool trap_is_indirect(void)
-{
- return currprefs.uaeboard > 2;
-}
-
bool trap_valid_address(TrapContext *ctx, uaecptr addr, uae_u32 size)
{
if (!ctx || currprefs.uaeboard < 3)
uae_u32 trap_get_dreg(TrapContext *ctx, int reg)
{
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
if (!ctx) {
write_log(_T("trap_get_dreg() without TrapContext!\n"));
return 0;
}
uae_u32 trap_get_areg(TrapContext *ctx, int reg)
{
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
if (!ctx) {
write_log(_T("trap_get_areg() without TrapContext!\n"));
return 0;
}
void trap_set_dreg(TrapContext *ctx, int reg, uae_u32 v)
{
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
if (!ctx) {
write_log(_T("trap_set_dreg() without TrapContext!\n"));
return;
}
void trap_set_areg(TrapContext *ctx, int reg, uae_u32 v)
{
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
if (!ctx) {
write_log(_T("trap_set_areg() without TrapContext!\n"));
return;
}
}
-void trap_put_long(TrapContext *context, uaecptr addr, uae_u32 v)
+void trap_put_long(TrapContext *ctx, uaecptr addr, uae_u32 v)
{
- if (trap_is_indirect()) {
- call_hardware_trap_back(context, TRAPCMD_PUT_LONG, addr, v, 0, 0);
+ if (trap_is_indirect_null(ctx)) {
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_LONG, addr, v, 0, 0);
} else {
put_long(addr, v);
}
}
-void trap_put_word(TrapContext *context, uaecptr addr, uae_u16 v)
+void trap_put_word(TrapContext *ctx, uaecptr addr, uae_u16 v)
{
- if (trap_is_indirect()) {
- call_hardware_trap_back(context, TRAPCMD_PUT_WORD, addr, v, 0, 0);
+ if (trap_is_indirect_null(ctx)) {
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_WORD, addr, v, 0, 0);
} else {
put_word(addr, v);
}
}
-void trap_put_byte(TrapContext *context, uaecptr addr, uae_u8 v)
+void trap_put_byte(TrapContext *ctx, uaecptr addr, uae_u8 v)
{
- if (trap_is_indirect()) {
- call_hardware_trap_back(context, TRAPCMD_PUT_BYTE, addr, v, 0, 0);
+ if (trap_is_indirect_null(ctx)) {
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_BYTE, addr, v, 0, 0);
} else {
put_byte(addr, v);
}
}
-uae_u32 trap_get_long(TrapContext *context, uaecptr addr)
+uae_u32 trap_get_long(TrapContext *ctx, uaecptr addr)
{
- if (trap_is_indirect()) {
- return call_hardware_trap_back(context, TRAPCMD_GET_LONG, addr, 0, 0, 0);
+ if (trap_is_indirect_null(ctx)) {
+ return call_hardware_trap_back(ctx, TRAPCMD_GET_LONG, addr, 0, 0, 0);
} else {
return get_long(addr);
}
}
-uae_u16 trap_get_word(TrapContext *context, uaecptr addr)
+uae_u16 trap_get_word(TrapContext *ctx, uaecptr addr)
{
- if (trap_is_indirect()) {
- return call_hardware_trap_back(context, TRAPCMD_GET_WORD, addr, 0, 0, 0);
+ if (trap_is_indirect_null(ctx)) {
+ return call_hardware_trap_back(ctx, TRAPCMD_GET_WORD, addr, 0, 0, 0);
} else {
return get_word(addr);
}
}
-uae_u8 trap_get_byte(TrapContext *context, uaecptr addr)
+uae_u8 trap_get_byte(TrapContext *ctx, uaecptr addr)
{
- if (trap_is_indirect()) {
- return call_hardware_trap_back(context, TRAPCMD_GET_BYTE, addr, 0, 0, 0);
+ if (trap_is_indirect_null(ctx)) {
+ return call_hardware_trap_back(ctx, TRAPCMD_GET_BYTE, addr, 0, 0, 0);
} else {
return get_byte(addr);
}
}
-void trap_put_bytes(TrapContext *context, void *haddrp, uaecptr addr, int cnt)
+void trap_put_bytes(TrapContext *ctx, const void *haddrp, uaecptr addr, int cnt)
{
if (!cnt)
return;
uae_u8 *haddr = (uae_u8*)haddrp;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
while (cnt > 0) {
int max = cnt > RTAREA_TRAP_DATA_EXTRA_SIZE ? RTAREA_TRAP_DATA_EXTRA_SIZE : cnt;
- memcpy(context->host_trap_data + RTAREA_TRAP_DATA_EXTRA, haddr, max);
- call_hardware_trap_back(context, TRAPCMD_PUT_BYTES, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, max, 0);
+ memcpy(ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA, haddr, max);
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_BYTES, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, max, 0);
haddr += max;
addr += max;
cnt -= max;
}
}
}
-void trap_get_bytes(TrapContext *context, void *haddrp, uaecptr addr, int cnt)
+void trap_get_bytes(TrapContext *ctx, void *haddrp, uaecptr addr, int cnt)
{
if (!cnt)
return;
uae_u8 *haddr = (uae_u8*)haddrp;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
while (cnt > 0) {
int max = cnt > RTAREA_TRAP_DATA_EXTRA_SIZE ? RTAREA_TRAP_DATA_EXTRA_SIZE : cnt;
- call_hardware_trap_back(context, TRAPCMD_PUT_BYTES, addr, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, max, 0);
- memcpy(haddr, context->host_trap_data + RTAREA_TRAP_DATA_EXTRA, max);
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_BYTES, addr, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, max, 0);
+ memcpy(haddr, ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA, max);
haddr += max;
addr += max;
cnt -= max;
}
}
}
-void trap_put_longs(TrapContext *context, uae_u32 *haddr, uaecptr addr, int cnt)
+void trap_put_longs(TrapContext *ctx, uae_u32 *haddr, uaecptr addr, int cnt)
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
while (cnt > 0) {
int max = cnt > RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u32) ? RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u32) : cnt;
for (int i = 0; i < max; i++) {
- put_long_host(context->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u32), *haddr++);
+ put_long_host(ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u32), *haddr++);
}
- call_hardware_trap_back(context, TRAPCMD_PUT_LONGS, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, max, 0);
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_LONGS, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, max, 0);
addr += max * sizeof(uae_u32);
cnt -= max;
}
}
}
}
-void trap_get_longs(TrapContext *context, uae_u32 *haddr, uaecptr addr, int cnt)
+void trap_get_longs(TrapContext *ctx, uae_u32 *haddr, uaecptr addr, int cnt)
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
while (cnt > 0) {
int max = cnt > RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u32) ? RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u32) : cnt;
- call_hardware_trap_back(context, TRAPCMD_GET_LONGS, addr, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, max, 0);
+ call_hardware_trap_back(ctx, TRAPCMD_GET_LONGS, addr, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, max, 0);
for (int i = 0; i < max; i++) {
- *haddr++ = get_long_host(context->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u32));
+ *haddr++ = get_long_host(ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u32));
}
addr += max * sizeof(uae_u32);
cnt -= max;
}
}
}
-void trap_put_words(TrapContext *context, uae_u16 *haddr, uaecptr addr, int cnt)
+void trap_put_words(TrapContext *ctx, uae_u16 *haddr, uaecptr addr, int cnt)
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
while (cnt > 0) {
int max = cnt > RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u16) ? RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u16) : cnt;
for (int i = 0; i < max; i++) {
- put_word_host(context->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u16), *haddr++);
+ put_word_host(ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u16), *haddr++);
}
- call_hardware_trap_back(context, TRAPCMD_PUT_WORDS, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, max, 0);
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_WORDS, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, max, 0);
addr += max * sizeof(uae_u16);
cnt -= max;
}
}
}
}
-void trap_get_words(TrapContext *context, uae_u16 *haddr, uaecptr addr, int cnt)
+void trap_get_words(TrapContext *ctx, uae_u16 *haddr, uaecptr addr, int cnt)
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
while (cnt > 0) {
int max = cnt > RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u16) ? RTAREA_TRAP_DATA_EXTRA_SIZE / sizeof(uae_u16) : cnt;
- call_hardware_trap_back(context, TRAPCMD_GET_WORDS, addr, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, max, 0);
+ call_hardware_trap_back(ctx, TRAPCMD_GET_WORDS, addr, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, max, 0);
for (int i = 0; i < max; i++) {
- *haddr++ = get_word_host(context->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u16));
+ *haddr++ = get_word_host(ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA + i * sizeof(uae_u16));
}
addr += max * sizeof(uae_u16);
cnt -= max;
}
}
-int trap_put_string(TrapContext *context, void *haddrp, uaecptr addr, int maxlen)
+int trap_put_string(TrapContext *ctx, const void *haddrp, uaecptr addr, int maxlen)
{
int len = 0;
uae_u8 *haddr = (uae_u8*)haddrp;
- if (trap_is_indirect()) {
- uae_u8 *p = context->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
+ if (trap_is_indirect_null(ctx)) {
+ uae_u8 *p = ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
for (;;) {
uae_u8 v = *haddr++;
*p++ = v;
break;
len++;
}
- call_hardware_trap_back(context, TRAPCMD_PUT_STRING, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, maxlen, 0);
+ call_hardware_trap_back(ctx, TRAPCMD_PUT_STRING, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, addr, maxlen, 0);
} else {
for (;;) {
uae_u8 v = *haddr++;
}
return len;
}
-int trap_get_string(TrapContext *context, void *haddrp, uaecptr addr, int maxlen)
+int trap_get_string(TrapContext *ctx, void *haddrp, uaecptr addr, int maxlen)
{
int len = 0;
uae_u8 *haddr = (uae_u8*)haddrp;
- if (trap_is_indirect()) {
- uae_u8 *p = context->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
- call_hardware_trap_back(context, TRAPCMD_GET_STRING, addr, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, maxlen, 0);
+ if (trap_is_indirect_null(ctx)) {
+ uae_u8 *p = ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
+ call_hardware_trap_back(ctx, TRAPCMD_GET_STRING, addr, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, maxlen, 0);
for (;;) {
uae_u8 v = *p++;
*haddr++ = v;
}
return len;
}
-int trap_get_bstr(TrapContext *context, uae_u8 *haddr, uaecptr addr, int maxlen)
+int trap_get_bstr(TrapContext *ctx, uae_u8 *haddr, uaecptr addr, int maxlen)
{
int len = 0;
- if (trap_is_indirect()) {
- uae_u8 *p = context->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
- call_hardware_trap_back(context, TRAPCMD_GET_BSTR, addr, context->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, maxlen, 0);
+ if (trap_is_indirect_null(ctx)) {
+ uae_u8 *p = ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
+ call_hardware_trap_back(ctx, TRAPCMD_GET_BSTR, addr, ctx->amiga_trap_data + RTAREA_TRAP_DATA_EXTRA, maxlen, 0);
for (;;) {
uae_u8 v = *p++;
*haddr++ = v;
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
call_hardware_trap_back(ctx, TRAPCMD_SET_LONGS, addr, v, cnt, 0);
} else {
for (int i = 0; i < cnt; i++) {
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
call_hardware_trap_back(ctx, TRAPCMD_SET_WORDS, addr, v, cnt, 0);
} else {
for (int i = 0; i < cnt; i++) {
{
if (!cnt)
return;
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
call_hardware_trap_back(ctx, TRAPCMD_SET_BYTES, addr, v, cnt, 0);
} else {
for (int i = 0; i < cnt; i++) {
void trap_multi(TrapContext *ctx, struct trapmd *data, int items)
{
- if (trap_is_indirect()) {
+ if (trap_is_indirect_null(ctx)) {
uae_u8 *p = ctx->host_trap_data + RTAREA_TRAP_DATA_EXTRA;
for (int i = 0; i < items; i++) {
struct trapmd *md = &data[i];
return handle;
}
-uae_u32 uaenative_open_library (TrapContext *context, int flags)
+uae_u32 uaenative_open_library (TrapContext *ctx, int flags)
{
- if (!currprefs.native_code) {
+ char namebuf[256];
+
+ if (!currprefs.native_code) {
write_log(_T("uni: tried to open native library, but native code ")
_T("is not enabled\n"));
return UNI_ERROR_NOT_ENABLED;
uaecptr name;
uae_u32 min_version;
if (flags & UNI_FLAG_COMPAT) {
- name = trap_get_areg(context, 0);
+ name = trap_get_areg(ctx, 0);
min_version = 0;
}
else {
- name = trap_get_areg(context, 1);
- min_version = trap_get_dreg(context, 0);
+ name = trap_get_areg(ctx, 1);
+ min_version = trap_get_dreg(ctx, 0);
}
- uae_u32 result = open_library (
- (const char *) get_real_address (name), min_version);
+ trap_get_string(ctx, namebuf, name, sizeof namebuf);
+
+ uae_u32 result = open_library(namebuf, min_version);
if ((flags & UNI_FLAG_COMPAT) && !(result & 0x80000000)) {
// error opening library, return 0 for error in compatibility mode
return register_handle (library_data, function_address);
}
-uae_u32 uaenative_get_function (TrapContext *context, int flags)
+uae_u32 uaenative_get_function (TrapContext *ctx, int flags)
{
- if (!currprefs.native_code) {
+ char namebuf[256];
+
+ if (!currprefs.native_code) {
return UNI_ERROR_NOT_ENABLED;
}
uaecptr name;
uae_u32 library;
if (flags & UNI_FLAG_COMPAT) {
- name = trap_get_areg(context, 0);
- library = trap_get_dreg(context, 1);
+ name = trap_get_areg(ctx, 0);
+ library = trap_get_dreg(ctx, 1);
}
else {
- library = trap_get_areg(context, 0);
- name = trap_get_areg(context, 1);
+ library = trap_get_areg(ctx, 0);
+ name = trap_get_areg(ctx, 1);
}
- uae_u32 result = get_function_handle (
- library, (const char *) get_real_address (name));
+ trap_get_string(ctx, namebuf, name, sizeof namebuf);
+
+ uae_u32 result = get_function_handle (library, namebuf);
if ((flags & UNI_FLAG_COMPAT) && !(result & 0x80000000)) {
// error getting function, return 0 for error in compatibility mode
#endif
-static void do_call_function (struct uni *uni) {
+static void do_call_function (struct uni *uni)
+{
printf("uni: calling native function %p\n", uni->native_function);
unsigned long start_time;
uni.task = trap_get_long(ctx, sysbase + 276); // ThisTask
// make sure signal bit is cleared
- m68k_dreg (regs, 0) = 0;
- m68k_dreg (regs, 1) = 1 << SIGBIT;
- CallLib (ctx, sysbase, -0x132); // SetSignal
+ trap_call_add_dreg(ctx, 0, 0);
+ trap_call_add_dreg(ctx, 1, 1 << SIGBIT);
+ trap_call_lib(ctx, sysbase, -0x132); // SetSignal
// start thread if necessary
if (!library_data->thread_id) {
uae_sem_post(&library_data->full_count);
// wait for signal
- trap_set_dreg(ctx, 0, 1 << SIGBIT);
- CallLib(ctx, sysbase, -0x13e); // Wait
+ trap_call_add_dreg(ctx, 0, 1 << SIGBIT);
+ trap_call_lib(ctx, sysbase, -0x13e); // Wait
write_log (_T("uni: -- Got async result --\n"));
}
else {
return uni.result;
}
-uae_u32 uaenative_close_library(TrapContext *context, int flags)
+uae_u32 uaenative_close_library(TrapContext *ctx, int flags)
{
if (!currprefs.native_code) {
return UNI_ERROR_NOT_ENABLED;
uae_u32 handle;
if (flags & UNI_FLAG_COMPAT) {
- handle = trap_get_dreg(context, 1);
+ handle = trap_get_dreg(ctx, 1);
}
else {
- handle = trap_get_areg(context, 1);
+ handle = trap_get_areg(ctx, 1);
}
struct library_data *library_data = get_library_data_from_handle (handle);
trap_put_long(ctx, res_addr + 0x02, res_addr);
trap_put_long(ctx, res_addr + 0x06, res_addr + 0x1A); // Continue scan here
trap_put_word(ctx, res_addr + 0x0A, 0x8004); // RTF_AUTOINIT, RT_VERSION
- trap_put_word(ctx, res_addr + 0x0C, 0x0970); // NT_LIBRARY, RT_PRI
+ trap_put_word(ctx, res_addr + 0x0C, 0x0905); // NT_LIBRARY, RT_PRI
trap_put_long(ctx, res_addr + 0x0E, library->aptr_name);
trap_put_long(ctx, res_addr + 0x12, library->aptr_id);
trap_put_long(ctx, res_addr + 0x16, library->aptr_init);
trap_put_long(ctx, resaddr + 0x2, resaddr);
trap_put_long(ctx, resaddr + 0x6, resaddr + 0x1A); /* Continue scan here */
trap_put_word(ctx, resaddr + 0xA, 0x8101); /* RTF_AUTOINIT|RTF_COLDSTART; Version 1 */
- trap_put_word(ctx, resaddr + 0xC, 0x0878); /* NT_DEVICE; pri 05 */
+ trap_put_word(ctx, resaddr + 0xC, 0x0805); /* NT_DEVICE; pri 05 */
trap_put_long(ctx, resaddr + 0xE, res_name);
trap_put_long(ctx, resaddr + 0x12, res_id);
trap_put_long(ctx, resaddr + 0x16, res_init);
trap_put_word(ctx, resaddr + 0x0, 0x4AFC);
trap_put_long(ctx, resaddr + 0x2, resaddr);
trap_put_long(ctx, resaddr + 0x6, resaddr + 0x1A); /* Continue scan here */
- trap_put_word(ctx, resaddr + 0xA, 0x8101); /* RTF_AUTOINIT|RTF_COLDSTART; Version 1 */
- trap_put_word(ctx, resaddr + 0xC, 0x0305); /* NT_DEVICE; pri 05 */
+ if (kickstart_version >= 37) {
+ trap_put_long(ctx, resaddr + 0xA, 0x84010300 | AFTERDOS_PRI); /* RTF_AUTOINIT, RT_VERSION NT_LIBRARY, RT_PRI */
+ } else {
+ trap_put_long(ctx, resaddr + 0xA, 0x81010305); /* RTF_AUTOINIT, RT_VERSION NT_LIBRARY, RT_PRI */
+ }
trap_put_long(ctx, resaddr + 0xE, ROM_uaeserialdev_resname);
trap_put_long(ctx, resaddr + 0x12, ROM_uaeserialdev_resid);
trap_put_long(ctx, resaddr + 0x16, ROM_uaeserialdev_init);