]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
imported winuaesrc1440b4.zip
authorToni Wilen <twilen@winuae.net>
Wed, 5 Sep 2007 17:31:04 +0000 (20:31 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 22 Feb 2010 19:35:33 +0000 (21:35 +0200)
akiko.c
compemu_support.c
expansion.c
filesys.asm
filesys.c
filesys_bootrom.c
gencomp.c
newcpu.c
od-win32/win32.h
od-win32/win32_filesys.c
od-win32/winuaechangelog.txt

diff --git a/akiko.c b/akiko.c
index 7824fdcd05679a6a49ec1179961462ad6706847d..c982494a7351960223d708a0d3a96d538c2016ce 100755 (executable)
--- a/akiko.c
+++ b/akiko.c
@@ -365,7 +365,8 @@ static uae_u8 cdrom_command;
 static int cdrom_toc_entries;
 static int cdrom_toc_counter;
 static uae_u32 cdrom_toc_crc;
-static uae_u8 cdrom_toc_buffer[MAX_TOC_ENTRIES*13];
+static uae_u8 cdrom_toc_buffer[MAX_TOC_ENTRIES * 13];
+static uae_u8 cdrom_toc_cd_buffer[4 + MAX_TOC_ENTRIES * 11];
 
 static int cdrom_disk, cdrom_paused, cdrom_playing;
 static int cdrom_command_active;
@@ -442,8 +443,37 @@ static void cdaudiostop (void)
 static uae_u32 last_play_end;
 static int cd_play_audio (uae_u32 startmsf, uae_u32 endmsf, int scan)
 {
-    if (endmsf >= lsn2msf (cdrom_leadout))
+#if 0
+    uae_u8 *buf = cdrom_toc_cd_buffer;
+    uae_u8 *s;
+    uae_u32 addr;
+    int i, changed;
+
+    changed = 0;
+    for (i = 0; i < cdrom_toc_entries; i++) {
+       s = buf + 4 + i * 11;
+       addr = (s[8] << 16) | (s[9] << 8) | (s[10] << 0);
+       if (s[3] > 0 && s[3] < 100 && addr >= startmsf)
+           break;
+    }
+    addr = lsn2msf (cdrom_leadout);
+    if (i + 1 < cdrom_toc_entries) { 
+       s += 11;
+       addr =(s[8] << 16) | (s[9] << 8) | (s[10] << 0);
+    }
+    if (endmsf >= addr) {
+       endmsf = addr;
+       changed = 1;
+    }
+    if (endmsf >= lsn2msf (cdrom_leadout)) {
        endmsf = lsn2msf (cdrom_leadout);
+       changed = 1;
+    }
+#if AKIKO_DEBUG_IO_CMD
+    if (changed)
+       write_log ("Adjusted from %06.6X to %06.6X\n", startmsf, endmsf);
+#endif
+#endif
     last_play_end = endmsf;
     return sys_command_cd_play (DF_IOCTL, unitnum, startmsf, endmsf, scan);
 }
@@ -516,11 +546,15 @@ static int cdrom_toc (void)
     i /= 11;
     if (i > MAX_TOC_ENTRIES)
        return -1;
+    cdrom_toc_entries = i;
     memset (cdrom_toc_buffer, 0, MAX_TOC_ENTRIES * 13);
+    memcpy (cdrom_toc_cd_buffer, buf, 4 + cdrom_toc_entries * 11);
     cdrom_data_end = -1;
-    for (j = 0; j < i; j++) {
+    for (j = 0; j < cdrom_toc_entries; j++) {
+       uae_u32 addr;
        s = buf + 4 + j * 11;
        d = &cdrom_toc_buffer[j * 13];
+       addr = msf2lsn ((s[8] << 16) | (s[9] << 8) | (s[10] << 0));
        d[1] = (s[1] >> 4) | (s[1] << 4);
        d[3] = s[3] < 100 ? tobcd(s[3]) : s[3];
        d[8] = tobcd (s[8]);
@@ -529,11 +563,10 @@ static int cdrom_toc (void)
        if (s[3] == 1 && (s[1] & 0x0f) == 0x04)
            datatrack = 1;
        if (s[3] == 2)
-           secondtrack = msf2lsn ((s[8] << 16) | (s[9] << 8) | (s[10] << 0));
+           secondtrack = addr;
        if (s[3] == 0xa2)
-           cdrom_leadout = msf2lsn ((s[8] << 16) | (s[9] << 8) | (s[10] << 0));
+           cdrom_leadout = addr;
     }
-    cdrom_toc_entries = i;
     cdrom_toc_crc = get_crc32(cdrom_toc_buffer, cdrom_toc_entries * 13);
     if (datatrack) {
        if (secondtrack)
@@ -748,7 +781,8 @@ static int cdrom_command_multi (void)
        else if (cdrom_command_buffer[7] & 0x08)
            scan = -1;
 #if AKIKO_DEBUG_IO_CMD
-       write_log ("PLAY FROM %06.6X to %06.6X SCAN=%d\n", seekpos, endpos, scan);
+       write_log ("PLAY FROM %06.6X (%d) to %06.6X (%d) SCAN=%d\n",
+           seekpos, msf2lsn (seekpos), endpos, msf2lsn (endpos), scan);
 #endif
        if (!cd_play_audio (seekpos, endpos, 0)) {
            cdrom_result_buffer[1] = CDS_ERROR;
@@ -1020,7 +1054,8 @@ void AKIKO_hsync_handler (void)
                uae_u8 as = s[1];
                if (as == AUDIO_STATUS_IN_PROGRESS) {
                    int lsn = msf2lsn ((s[5 + 4] << 16) | (s[6 + 4] << 8) | (s[7 + 4] << 0));
-                   if (lsn >= cdrom_leadout - 75 || lsn >= msf2lsn(last_play_end) - 75) {
+                   //write_log("%d %d (%d %d)\n", lsn, msf2lsn (last_play_end) - lsn, cdrom_leadout, msf2lsn (last_play_end));
+                   if (lsn >= cdrom_leadout - 100 || lsn >= msf2lsn(last_play_end) - 100) {
                        set_status(CDSTATUS_DATA_AVAILABLE);
                        cdrom_playing = 0;
                        cdrom_result_buffer[1] = 0;
index 9c05a1a9b24549f25f735c375b889b406046abd2..e63189ef611fd60d223cf961f60ad508c9713855 100755 (executable)
@@ -5769,9 +5769,9 @@ void build_comp(void)
        int isjmp,isaddx,iscjmp;
        int lvl;
 
-       lvl = 5 - (currprefs.cpu_model - 68000) / 10;
-       if (lvl < 0)
-           lvl = 0;
+       lvl = (currprefs.cpu_model - 68000) / 10;
+       if (lvl > 4)
+           lvl--;
        if (table68k[opcode].mnemo == i_ILLG || table68k[opcode].clev > lvl)
            continue;
 
index 02ce1e1ea20164e1cbb909c84fc04837941dfb74..471e418934ce679cdbb11034f3a4b83b3ae90441 100755 (executable)
@@ -1075,6 +1075,8 @@ int need_uae_boot_rom(void)
        return 1;
     if (currprefs.gfxmem_size)
        return 1;
+    if (currprefs.chipmem_size > 2 * 1024 * 1024)
+       return 1;
     return 0;
 }
 
index 247320c4e17a776075672c73c38746e29a077da5..848ca47730944b60eeff58c7f3afe87b62fb7fff 100755 (executable)
 ; 2006.03.04 Mousehack code integrated (TW)
 ; 2006.18.07 FileSystem.resource find routine access fault fixed (TW)
 ; 2007.03.30 mousehack do not start multiple times anymore (TW)
+; 2007.06.15 uninitialized variable in memory type selection fixed (stupid me) (TW)
+; 2007.08.09 started implementing removable drive support (TW)
+; 2007.09.01 ACTION_EXAMINE_ALL (TW)
+; 2007.09.05 fully filesystem device mounting on the fly (TW)
 
 AllocMem = -198
 FreeMem = -210
@@ -76,18 +80,18 @@ filesys_init:
 FSIN_explibok:
        move.l d0,a4
        move.l #PP_TOTAL,d0
-       moveq #1,d1 ; MEMF_PUBLIC
+       move.l #$10001,d1
        jsr AllocMem(a6)
        move.l d0,a3  ; param packet
        move.l a4,PP_EXPLIB(a3)
 
        moveq #0,d6
 FSIN_init_units:
-       cmp.l  $10c(a5),d6
+       cmp.l $10c(a5),d6
        bcc.b FSIN_units_ok
        move.l d6,-(sp)
 FSIN_nextsub:
-       moveq   #1,d7
+       moveq #1,d7
        move.l a3,-(sp)
        move.l a3,a0
        bsr.w make_dev
@@ -139,7 +143,8 @@ FSIN_units_ok:
 ;FSIN_scandone:
 ;      jsr -$007e(a6) ; Enable
 
-       ; add >2MB chip RAM to memory list
+
+filesys_dev_storeinfo  ; add >2MB chip RAM to memory list
        move.w #$FF80,d0
        bsr.w getrtbase
        jsr (a0)
@@ -154,10 +159,61 @@ FSIN_units_ok:
        jsr -618(a6) ; AddMemList
 FSIN_chip_done
 
+       lea fstaskname(pc),a0
+       lea fsmounttask(pc),a1
+       moveq #10,d0
+       bsr createtask
+       move.l d0,a1
+       moveq #1,d1
+       move.w #$FF48,d0 ; store task pointer
+       bsr.w getrtbase
+       jsr (a0)
+
        movem.l (sp)+,d0-d7/a0-a6
 general_ret:
        rts
 
+       ; this is getting ridiculous but I don't see any other solutions..
+fsmounttask
+.fsm1  move.l 4.w,a6
+       moveq #0,d0
+       bset #17,d0 ; SIGBREAK_CTRL_D
+       jsr -$013e(a6) ;Wait
+       lea doslibname(pc),a1
+       moveq #0,d0
+       jsr -$0228(a6) ; OpenLibrary
+       tst.l d0
+       beq.s .fsm1
+       move.l d0,a6
+       lea fsprocname(pc),a0
+       move.l a0,d1
+       moveq #15,d2
+       lea mountproc(pc),a0
+       move.l a0,d3
+       lsr.l #2,d3
+       move.l #8000,d4
+       jsr -$08a(a6) ; CreateProc
+       move.l a6,a1
+       move.l 4.w,a6
+       jsr -$019e(a6); CloseLibrary
+       bra.s .fsm1     
+
+       ; dummy process here because can't mount devices with ADNF_STARTPROC from task..
+       ; (AddDosNode() internally calls GetDeviceProc() which accesses ExecBase->ThisTask->pr_GlobVec)
+       cnop 0,4
+       dc.l 16
+mountproc
+       dc.l 0
+       moveq #2,d1
+       move.w #$FF48,d0 ; get new unit number
+       bsr.w getrtbase
+       jsr (a0)
+       move.l d0,d1
+       bmi.s .out
+       bsr.w addfsonthefly
+.out   moveq #0,d0
+       rts
+
 exter_data:
 exter_server:
        movem.l a2,-(sp)
@@ -175,7 +231,7 @@ EXTS_loop:
        moveq.l #2,d0
        jsr (a0)
        cmp.w #1,d0
-       blt.b EXTS_done
+       blt.w EXTS_done
        bgt.b EXTS_signal_reply
        jsr -366(a6) ; PutMsg
        bra.b EXTS_loop
@@ -291,14 +347,12 @@ relocate: ;a0=pointer to executable, returns first segment in A0
        sub.l a5,a5 ;prev segment
        moveq #0,d6
 r15    move.l (a2),d2 ; hunk size (header)
-       lsl.l #2,d2
        moveq #1,d1
-       btst #30,d3 ; chip mem?
+       btst #30,d2 ; chip mem?
        beq.s r2
        bset #1,d1
 r2     bset #16,d1
-       bclr #31,d3
-       bclr #30,d3
+       lsl.l #2,d2
        move.l d2,d0
        bne.s r17
        clr.l (a2)+ ; empty hunk
@@ -381,12 +435,7 @@ r13
 r0     move.l d7,d0
        movem.l (sp)+,d1-d7/a1-a6
        rts
-ree    move.w #30000,d0
-re1    move.w #$f00,$dff180
-       move.w #$00f,$dff180
-       move.w #$0f0,$dff180
-       dbf d0,re1
-       moveq #0,d7
+ree    moveq #0,d7
        bra.s r0
 
 fsres
@@ -433,8 +482,253 @@ fsres4
        move.l a0,d0
        movem.l (sp)+,d1/a0-a2/a6
        rts
-       
-make_dev: ; IN: A0 param_packet, D6: unit_no, D7: boot, A4: expansionbase
+
+addvolumenode
+       movem.l d7/a6,-(sp)
+       move.l d0,d7
+       tst.b 32+44(a3)
+       beq.s .end ;empty volume string = empty drive
+       move.l 160(a3),a6
+       cmp.w #37, 20(a6)
+       bcs.s .prev37
+       moveq #(1<<1)+(1<<3)+(1<<2),d1 ;LDF_WRITE | LDF_VOLUMES | LDF_DEVICES
+       jsr -$29A(a6) ;AttemptLockDosList
+       and.l #~1,d0
+       beq.s .end
+       btst #0,d7
+       beq.s .nvol
+       lea 32(a3),a0
+       move.l a0,d1
+       jsr -$2A6(a6) ;AddDosEntry (Volume)
+.nvol  btst #1,d7
+       beq.s .ndev
+       move.l 180(a3),d1
+       jsr -$2a6(a6) ;AddDosEntry (Device)
+.ndev  moveq #(1<<1)+(1<<3)+(1<<2),d1 ;LDF_WRITE | LDF_VOLUMES | LDF_DEVICES
+       jsr -$294(a6) ;UnLockDosList
+       bra.s .end
+.prev37        move.l 4.w,a6
+       jsr -$0084(a6) ; Forbid
+       move.l 160(a3),a0
+       move.l 34(a0),a0 ; rootnode
+       add.l a0,a0
+       add.l a0,a0
+       move.l 24(a0),a0 ; dosinfo
+       add.l a0,a0
+       add.l a0,a0
+       lea 32(a3),a1
+       move.l 4(a0),(a1)
+       move.l a1,d0
+       lsr.l #2,d0
+       move.l d0,4(a0)
+       jsr -$008a(a6) ;Permit
+.end   movem.l (sp)+,d7/a6
+       rts     
+remvolumenode
+       movem.l d7/a2/a6,-(sp)
+       move.l d0,d7
+       move.l 160(a3),a6
+       cmp.w #37,20(a6)
+       bcs.s .prev37
+       moveq #(1<<1)+(1<<3)+(1<<2),d1 ;LDF_WRITE | LDF_VOLUMES | LDF_DEVICES
+       jsr -$29A(a6) ;AttemptLockDosList
+       and.l #~1,d0
+       beq.s .end
+       btst #0,d7
+       beq.s .nvol
+       lea 32(a3),a0
+       move.l a0,d1
+       jsr -$2A0(a6) ;RemDosEntry (Volume)
+.nvol  btst #1,d7
+       beq.s .ndev
+       move.l 180(a3),d1
+       jsr -$2A0(a6) ;RemDosEntry (Device)
+.ndev  moveq #(1<<1)+(1<<3)+(1<<2),d1 ;LDF_WRITE | LDF_VOLUMES | LDF_DEVICES
+       jsr -$294(a6) ;UnLockDosList
+       bra.s .end
+.prev37        move.l 4.w,a6
+       jsr -$0084(a6) ; Forbid
+       move.l 160(a3),a0
+       move.l 34(a0),a0 ; rootnode
+       add.l a0,a0
+       add.l a0,a0
+       move.l 24(a0),a0 ; dosinfo
+       add.l a0,a0
+       add.l a0,a0
+       lea 4(a0),a1
+       lea 32(a3),a2
+.pr2   move.l 4(a0),d0
+       beq.s .pr1
+       add.l d0,d0
+       add.l d0,d0
+       cmp.l d0,a2
+       beq.s .pr3
+       move.l d0,a1
+       move.l (a1),a0
+       add.l a0,a0
+       add.l a0,a0
+       bra.s .pr2
+.pr3   move.l (a2),(a1)
+.pr1   jsr -$008a(a6) ;Permit
+.end   movem.l (sp)+,d7/a2/a6
+       rts
+
+diskinsertremove:
+       movem.l d2/a2/a6,-(sp)
+       moveq #22,d2
+       sub.l d2,sp
+       move.l sp,a2
+       move.w d2,d1
+.l1    clr.b -1(a2,d1.w)
+       subq.w #1,d1
+       bne.s .l1
+       move.l 4.w,a6
+       moveq #15,d1 ;IECLASS_DISKREMOVED
+       tst.l d0
+       beq.s .l2
+       moveq #16,d1 ;IECLASS_DISKINSERTED
+.l2    move.b d1,4(a2) ;ie_Class
+       move.w #$0800,8(a2); ie_Qualifier=IEQUALIFIER_MULTIBROADCAST
+
+       move.l 164(a3),a1
+       move.w #11,28(a1) ;IND_WRITEEVENT
+       move.l #22,36(a1) ;sizeof(struct InputEvent)
+       move.l a2,40(a1)
+       move.b #1,30(a1) ;IOF_QUICK
+
+       move.l 168(a3),a1
+       move.w #10,28(a1) ;TR_GETSYSTIME
+       move.b #1,30(a1) ;IOF_QUICK
+       jsr -$01c8(a6) ;DoIO
+
+       move.l 168(a3),a1
+       move.l 32(a1),14(a2)
+       move.l 36(a1),18(a2)
+
+       move.l 164(a3),a1
+       jsr -$01c8(a6) ;DoIO
+
+       add.l d2,sp
+       movem.l (sp)+,d2/a2/a6
+       rts
+
+dodiskchange
+       tst.b d0
+       beq.s .eject
+       tst.b 32+44(a3)
+       bne.s .end
+       moveq #0,d0
+.dc2
+       tst.b 32+45(a3,d0.w)
+       beq.s .dc1
+       addq.b #1,d0
+       bra.s .dc2
+.dc1
+       move.b d0,32+44(a3)
+       beq.s .end
+       move.l d1,d0
+       bsr.w addvolumenode
+       moveq #1,d0
+       bsr.w diskinsertremove
+       bra.s .end
+.eject
+       tst.b 32+44(a3)
+       beq.s .end
+       clr.b 32+44(a3)
+       move.l d1,d0
+       bsr.w remvolumenode
+       moveq #0,d0
+       bsr.w diskinsertremove
+.end
+       rts     
+
+action_inhibit
+       tst.l 20(a4) ;dp_Arg1
+       beq.s .add
+       moveq #0,d0
+       moveq #1,d1
+       bsr dodiskchange
+       rts
+.add
+       moveq #1,d0
+       moveq #1,d1
+       bsr dodiskchange
+       rts
+
+diskchange
+       tst.b 172(a3)
+       bmi.s .nodisk
+       moveq #1,d0
+       moveq #1,d1
+       bsr dodiskchange
+       rts
+.nodisk
+       moveq #0,d0
+       moveq #1,d1
+       bsr dodiskchange
+       rts
+
+       ; exall is complex, need to emulate eac_MatchString and/or eac_MatchFunc
+action_exall
+       move.l 36(a4),a0 ; dp_Arg5, struct ExAllControl
+       tst.l 8(a0) ; eac_MatchString
+       bne.s .ex1
+       tst.l 12(a0) ; eac_MatchFunc
+       bne.s .ex1
+       rts ;nothing to do here
+.ex1:  movem.l d2-d7/a2-a6,-(sp)
+       move.l a0,a5
+       move.l 24(a4),a2 ;dp_Arg2, ExAllData
+       move.l (a5),d7 ; eac_Entries
+.ex4   tst.l d7
+       beq.s .ex3
+       move.l a2,d0
+       beq.s .ex3
+       moveq #0,d6
+       move.l 8(a5),d1 ; MatchString
+       beq.s .ex5
+       move.l 4(a2),d2 ; dir/file name
+       move.l 160(a3),a6 ; dosbase
+       jsr -$03cc(a6) ; MatchPatternNoCase
+       tst.l d0
+       bne.s .ex5
+       st d6
+.ex5   move.l 12(a5),d1 ; MatchFunc
+       beq.s .ex6
+       move.l d1,a0
+       move.l a2,a1
+       move.l a2,-(sp)
+       lea 32(a4),a2 ; dp_Arg4, Type
+       pea .pop(pc)
+       move.l 8(a0),-(sp)
+       rts
+.pop   move.l (sp)+,a2
+       tst.l d0
+       bne.s .ex6
+       st d6
+.ex6   tst.b d6
+       beq.s .ex7
+       ; need to delete current entry.. this is not really the proper way..
+       move.l 4(a2),d0 ; pointer to filename (which is first address after structure)
+       sub.l a2,d0 ; copy this much data
+       tst.l (a2) ; eac_Next
+       beq.s .ex8
+       move.l (a2),a0
+       move.l a2,a1
+.ex9   move.l (a0)+,(a1)+
+       subq.l #4,d1
+       bpl.s .ex9
+.ex8   subq.l #1,(a5) ; eac_Entries
+       subq.l #1,d7
+       bra.s .ex4
+.ex7   move.l (a2),a2 ; eac_Next
+       subq.l #1,d7
+       bra.s .ex4
+.ex3   movem.l (sp)+,d2-d7/a2-a6
+       rts
+
+
+make_dev: ; IN: A0 param_packet, D6: unit_no, D7: b0=autoboot,b1=onthefly, A4: expansionbase
 
        bsr.w fsres
        move.l d0,PP_FSRES(a0) ; pointer to FileSystem.resource
@@ -482,7 +776,7 @@ nordbfs1:
        move.w #$FF20,d0 ; record in ui.startup (filesys_dev_remember)
        bsr.w getrtbase
        jsr (a0)
-       bra.w dont_mount
+       bra.s dont_mount
 
 do_mount:
        move.l a4,a6
@@ -499,7 +793,7 @@ do_mount:
        move.l d0,16(a3)         ; dn_Handler
        move.l d0,32(a3)         ; dn_SegList
 
-dont_mount
+dont_mount:
        tst.l PP_FSPTR(a1)      ; filesystem?
        beq.s nordbfs2
        move.l PP_FSPTR(a1),a0
@@ -528,7 +822,7 @@ nordbfs2:
        bne.b MKDV_doboot
 
 MKDV_is_filesys:
-       move.l #4000,20(a3)     ; dn_StackSize
+       move.l #6000,20(a3)     ; dn_StackSize
        lea.l our_seglist(pc),a1
        move.l a1,d0
        lsr.l  #2,d0
@@ -537,7 +831,7 @@ MKDV_is_filesys:
        move.l d0,36(a3)       ; dn_GlobalVec
 
 MKDV_doboot:
-       tst.l d7
+       btst #0,d7
        beq.b MKDV_noboot
 
        move.l 4.w,a6
@@ -555,20 +849,47 @@ MKDV_doboot:
        move.l $104(a5),10(a1) ; filesys_configdev
        move.l a3,16(a1)        ; devicenode
        lea.l  74(a4),a0 ; MountList
-       jmp  -270(a6) ; Enqueue()
+       jsr  -270(a6) ; Enqueue()
+       rts
 
 MKDV_noboot:
        move.l a3,a0
        moveq #0,d1
        move.l d1,a1
-       moveq #-1,d0
+       btst #1,d7
+       beq.s .nob
+       moveq #1,d1 ; ADNF_STARTPROC
+.nob   moveq #-20,d0
        move.l a4,a6 ; expansion base
-       jmp  -150(a6) ; AddDosNode
+       jsr  -150(a6) ; AddDosNode
+       rts
+
+addfsonthefly ; d1 = fs index
+       movem.l d2-d7/a2-a6,-(sp)
+       move.l d1,d6
+       moveq #2,d7
+       moveq #0,d5
+       move.l 4.w,a6
+       lea.l explibname(pc),a1 ; expansion lib name
+       moveq #0,d0
+       jsr  -552(a6) ; OpenLibrary
+       move.l d0,a4
+       move.l #PP_TOTAL,d0
+       move.l #$10001,d1
+       jsr AllocMem(a6)
+       move.l d0,a0  ; param packet
+       move.l a4,PP_EXPLIB(a0)
+       movem.l a4/a6,-(sp)
+       bsr.w make_dev
+       movem.l (sp)+,a4/a6
+       move.l a4,a1
+       jsr -414(a6) ; CloseLibrary
+       movem.l (sp)+,d2-d7/a2-a6
+       rts
 
 filesys_mainloop:
        move.l 4.w,a6
-       moveq.l #0,d0
-       move.l d0,a1
+       sub.l a1,a1
        jsr -294(a6) ; FindTask
        move.l d0,a0
        lea.l $5c(a0),a5 ; pr_MsgPort
@@ -584,9 +905,15 @@ filesys_mainloop:
        ; 4: command chain
        ; 8: second thread's lock chain
        ; 12: dummy message
-       ; 32: the volume (80+44+1 bytes)
+       ; 32: the volume (44+80+1 bytes)
        ; 157: mousehack started-flag
-       move.l #80+44+1+20+12+1,d0
+       ; 160: dosbase
+       ; 164: input.device ioreq (disk inserted/removed input message)
+       ; 168: timer.device ioreq
+       ; 172: disk change from host
+       ; 176: my task
+       ; 180: device node
+       move.l #12+20+(80+44+1)+(1+3)+4+4+4+(1+3)+4+4,d0
        move.l #$10001,d1 ; MEMF_PUBLIC | MEMF_CLEAR
        jsr AllocMem(a6)
        move.l d0,a3
@@ -594,6 +921,16 @@ filesys_mainloop:
        move.l d6,(a3)
        move.l d6,4(a3)
        move.l d6,8(a3)
+       move.l a2,160(a3)
+
+       sub.l a1,a1
+       jsr -294(a6) ; FindTask
+       move.l d0,176(a3)
+
+       bsr.w allocinputdevice
+       move.l d0,164(a3)
+       bsr.w alloctimerdevice
+       move.l d0,168(a3)
 
        moveq.l #0,d5 ; No commands queued.
 
@@ -608,7 +945,17 @@ filesys_mainloop:
        bsr.w getrtbase
        moveq.l #0,d0
        jsr (a0)
-       
+       move.l d0,d2
+
+       moveq #1,d0
+       bsr.w addvolumenode
+
+       btst #1,d2
+       beq.s .nonotif
+       moveq #1,d0
+       bsr.w diskinsertremove
+.nonotif
+
        bsr.w mousehack_init
        bra.w FSML_Reply
 
@@ -623,12 +970,26 @@ filesys_mainloop:
 FSML_loop:
        bsr.w mousehack_init
 
-       move.l a5,a0
-       jsr -384(a6) ; WaitPort
-
        move.l a5,a0
        jsr -372(a6) ; GetMsg
        move.l d0,a4
+       tst.l d0
+       bne.s .msg
+
+       moveq #0,d0
+       move.b 15(a5),d1 ;mp_SigBit
+       bset d1,d0
+       bset #17,d0 ; SIGBREAK_CTRL_D
+       jsr -$013e(a6) ;Wait
+.msg
+       ; disk changed?
+       tst.b 172(a3)
+       beq.s .nodc
+       bsr.w diskchange
+       clr.b 172(a3)
+.nodc
+       move.l a4,d0
+       beq.s FSML_loop
 
        ; notify reply?
        cmp.w #38, 18(a4)
@@ -652,7 +1013,7 @@ nonoti
        move.l a4,a1
        moveq #38,d0
        jsr FreeMem(a6)
-       bra.s FSML_loop
+       bra.w FSML_loop
 
 nonotif
        move.l 10(a4),d3 ; ln_Name
@@ -720,6 +1081,14 @@ FSML_Reply:
        bra.w FSML_loop
 
 ReplyOne:
+       cmp.l #31,8(a4) ;ACTION_INHIBIT?
+       bne.s FSML_ReplyOne2
+       bsr.w action_inhibit
+FSML_ReplyOne2:
+       cmp.l #1033,8(a4) ;ACTION_EXAMINE_ALL
+       bne.s FSML_ReplyOne3
+       bsr.w action_exall
+FSML_ReplyOne3:
        move.l (a4),a1  ; dp_Link
        move.l 4(a4),a0 ; dp_Port
        move.l a5,4(a4)
@@ -862,12 +1231,56 @@ createio:
        move.b #10,8(a0) ;NT_MESSAGE
        move.l d2,18(a0)
        move.l a2,14(a0)
-.f     movem.l (sp)+,d2/a2/a6
+.f     tst.l d0
+       movem.l (sp)+,d2/a2/a6
+       rts
+
+allocinputdevice
+       movem.l a2/a6,-(sp)
+       move.l 4.w,a6
+       bsr.w createport
+       bsr.w createio
+       beq.s .f
+       move.l d0,a1
+       move.l d0,a2
+       lea inp_dev(pc),a0
+       moveq #0,d0
+       moveq #0,d1
+       jsr -$01bc(a6) ;OpenDevice
+       move.l d0,d1
+       moveq #0,d0
+       tst.l d1
+       bne.s .f
+       move.l a2,d0
+.f     tst.l d0
+       movem.l (sp)+,a2/a6
+       rts
+
+alloctimerdevice
+       movem.l a2/a6,-(sp)
+       move.l 4.w,a6
+       bsr.w createport
+       bsr.w createio
+       beq.s .f
+       move.l d0,a2
+       move.l d0,a1
+       lea tim_dev(pc),a0
+       moveq #0,d0
+       moveq #0,d1
+       jsr -$01bc(a6) ;OpenDevice      
+       move.l d0,d1
+       moveq #0,d0
+       tst.l d1
+       bne.s .f
+       move.l a2,d0
+.f     tst.l d0
+       movem.l (sp)+,a2/a6
        rts
 
 createtask:
-       movem.l d2/d3/a2/a3/a6,-(sp)
+       movem.l d2/d3/d4/a2/a3/a6,-(sp)
        move.l 4,a6
+       move.l d0,d4
        move.l a0,d2
        move.l a1,d3
        move.l #92+2048,d0
@@ -877,6 +1290,7 @@ createtask:
        beq .f
        move.l d0,a2
        move.b #1,8(a2) ;NT_TASK
+       move.b d4,9(a2) ; priority
        move.l d2,10(a2)
        lea 92(a2),a3
        move.l a3,58(a2)
@@ -887,7 +1301,7 @@ createtask:
        move.l d3,a2
        sub.l a3,a3
        jsr -$011a(a6) ;AddTask
-.f     movem.l (sp)+,d2/d3/a2/a3/a6
+.f     movem.l (sp)+,d2/d3/d4/a2/a3/a6
        rts
 
 mousehack_e: dc.w 0
@@ -910,6 +1324,7 @@ mousehack_init:
        bne.s .no
        lea mhname(pc),a0
        lea mousehack_task(pc),a1
+       moveq #5,d0
        bsr createtask
        st 157(a3)
        ;tell native side that mousehack is active
@@ -946,29 +1361,12 @@ mousehack_task:
        jsr AllocMem(a6)
        move.l d0,a5
 
-       bsr.w createport
-       bsr.w createio
+       bsr.w allocinputdevice
        move.l d0,MH_IO(a5)
-       beq .f
-       move.l d0,a1
-       lea inp_dev(pc),a0
-       moveq #0,d0
-       moveq #0,d1
-       jsr -$01bc(a6) ;OpenDevice
-       tst.l d0
-       bne .f
-
-       bsr.w createport
-       bsr.w createio
+       beq.w .f
+       bsr.w alloctimerdevice
        move.l d0,MH_TM(a5)
-       beq .f
-       move.l d0,a1
-       lea tim_dev(pc),a0
-       moveq #0,d0
-       moveq #0,d1
-       jsr -$01bc(a6) ;OpenDevice      
-       tst.l d0
-       bne .f
+       beq.w .f
 
        lea MH_FOO(a5),a3
        move.l a4,12(a3);task
@@ -1057,6 +1455,8 @@ inp_dev: dc.b 'input.device',0
 tim_dev: dc.b 'timer.device',0
 mhname: dc.b 'UAE mouse hack',0
 exter_name: dc.b 'UAE filesystem',0
+fstaskname: dc.b 'UAE fs automounter',0
+fsprocname: dc.b 'UAE fs automount process',0
 doslibname: dc.b 'dos.library',0
 intlibname: dc.b 'intuition.library',0
 explibname: dc.b 'expansion.library',0
index 658a986653702a61f6396dda4754c1bc55c14d30..4b7c03e2aa6e59fe71de66f33e807b4f3572d221 100755 (executable)
--- a/filesys.c
+++ b/filesys.c
@@ -91,6 +91,8 @@ static void aino_test_init (a_inode *aino)
 uaecptr filesys_initcode;
 static uae_u32 fsdevname, filesys_configdev;
 static int filesys_in_interrupt;
+static uae_u32 mountertask;
+static int automountunit = -1;
 
 #define FS_STARTUP 0
 #define FS_GO_DOWN 1
@@ -253,8 +255,7 @@ char *filesys_createvolname (const char *volname, const char *rootdir, const cha
 {
     char *nvol = NULL;
     int i, archivehd;
-    char *p;
-    char tmp[10];
+    char *p = NULL;
 
     archivehd = -1;
     if (my_existsfile(rootdir))
@@ -263,14 +264,15 @@ char *filesys_createvolname (const char *volname, const char *rootdir, const cha
         archivehd = 0;
 
     if ((!volname || strlen (volname) == 0) && rootdir && archivehd >= 0) {
-       p = rootdir;
+       p = my_strdup (rootdir);
        for (i = strlen (p) - 1; i >= 0; i--) {
            char c = p[i];
            if (c == ':' || c == '/' || c == '\\') {
                if (i == strlen (p) - 1)
                    continue;
                if (!strcmp (p + i, ":\\")) {
-                   p = tmp;
+                   xfree (p);
+                   p = xmalloc (10);
                    p[0] = rootdir[0];
                    p[1] = 0;
                    i = 0;
@@ -293,6 +295,7 @@ char *filesys_createvolname (const char *volname, const char *rootdir, const cha
     if (!nvol)
        nvol = my_strdup ("");
     stripsemicolon(nvol);
+    xfree (p);
     return nvol;
 }
 
@@ -491,25 +494,10 @@ static void filesys_addexternals(void);
 
 static void initialize_mountinfo(void)
 {
-    int i, nr;
-    int haveempty, havevd;
+    int i;
     struct uaedev_config_info *uci;
     UnitInfo *uip = &mountinfo.ui[0];
 
-    /* add 2 spares until new devices can be added on the fly */
-    haveempty = havevd = 0;
-    for (i = 0; i < currprefs.mountitems; i++) {
-       int idx;
-       uci = &currprefs.mountconfig[i];
-       if (uci->controller == HD_CONTROLLER_UAE) {
-           if (!uci->ishdf) {
-               havevd++;
-               if (uci->rootdir[0] == 0 && uci->volname[0] == 0)
-                   haveempty++;
-           }
-       }
-    }
-
     for (i = 0; i < currprefs.mountitems; i++) {
        int idx;
        uci = &currprefs.mountconfig[i];
@@ -540,14 +528,6 @@ static void initialize_mountinfo(void)
        }
     }
     filesys_addexternals();
-
-    if (havevd && !haveempty) {
-       for (i = 0; i < 2; i++) {
-           char devname[10];
-           sprintf (devname, "RDH%d", i);
-           add_filesys_unit (devname, "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0);
-       }
-    }
 }
 
 
@@ -641,10 +621,13 @@ struct hardfiledata *get_hardfile_data (int nr)
 #define ACTION_FH_FROM_LOCK    1026
 #define ACTION_COPY_DIR_FH     1030
 #define ACTION_PARENT_FH       1031
-#define ACTION_EXAMINE_FH      1034
 #define ACTION_EXAMINE_ALL     1033
+#define ACTION_EXAMINE_FH      1034
+#define ACTION_EXAMINE_ALL_END 1035
+
 #define ACTION_MAKE_LINK       1021
 #define ACTION_READ_LINK       1024
+
 #define ACTION_FORMAT          1020
 #define ACTION_IS_FILESYSTEM   1027
 #define ACTION_ADD_NOTIFY      4097
@@ -978,6 +961,8 @@ int filesys_media_change (char *rootdir, int inserted)
     int nr = -1;
     char volname[MAX_DPATH], *volptr;
 
+    if (automountunit >= 0)
+       return -1;
     for (u = units; u; u = u->next) {
         if (is_hardfile (u->unit) == FILESYS_VIRTUAL) {
            ui = &mountinfo.ui[u->unit];
@@ -993,6 +978,7 @@ int filesys_media_change (char *rootdir, int inserted)
     if (nr >= 0 && !inserted)
        return filesys_eject (nr);
     if (inserted) {
+       char devname[10];
        volname[0] = 0;
        target_get_volume_name(&mountinfo, rootdir, volname, MAX_DPATH, 1, 0);
        volptr = volname;
@@ -1004,8 +990,19 @@ int filesys_media_change (char *rootdir, int inserted)
                return filesys_insert (nr, volptr, rootdir, -1, -1);
            return 0;
        }
-       /* new volume inserted and it was not previously mlunted? */
-       return filesys_insert (-1, volptr, rootdir, 0, 0);
+       /* new volume inserted and it was not previously mounted? 
+        * perhaps we have some empty device slots? */
+       if (filesys_insert (-1, volptr, rootdir, 0, 0) > 0)
+           return 1;
+       /* nope, uh, need black magic now.. */
+       sprintf (devname, "RDH%d", nr_units());
+       nr = add_filesys_unit (devname, volptr, rootdir, 0, 0, 0, 0, 0, 0, NULL, 0, 0);
+       if (nr < 0)
+           return 0;
+       automountunit = nr;
+       uae_Signal (mountertask, 1 << 17);
+       /* poof */
+       return 1;
     }
     return 0;
 }
@@ -1856,6 +1853,31 @@ static Unit *startup_create_unit (UnitInfo *uinfo, int num)
     return unit;
 }
 
+#ifdef UAE_FILESYS_THREADS
+static void *filesys_thread (void *unit_v);
+#endif
+static void filesys_start_thread (UnitInfo *ui, int nr)
+{
+    ui->unit_pipe = 0;
+    ui->back_pipe = 0;
+    ui->reset_state = FS_STARTUP;
+    if (savestate_state != STATE_RESTORE) {
+        ui->startup = 0;
+        ui->self = 0;
+    }
+#ifdef UAE_FILESYS_THREADS
+    if (is_hardfile (nr) == FILESYS_VIRTUAL) {
+        ui->unit_pipe = (smp_comm_pipe *)xmalloc (sizeof (smp_comm_pipe));
+        ui->back_pipe = (smp_comm_pipe *)xmalloc (sizeof (smp_comm_pipe));
+        init_comm_pipe (ui->unit_pipe, 100, 3);
+        init_comm_pipe (ui->back_pipe, 100, 1);
+        uae_start_thread ("filesys", filesys_thread, (void *)ui, &ui->tid);
+    }
+#endif
+    if (savestate_state == STATE_RESTORE)
+        startup_update_unit (ui->self, ui);
+}
+
 static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
 {
     /* Just got the startup packet. It's in A4. DosBase is in A2,
@@ -1865,11 +1887,13 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
     uaecptr dos_info = get_long (rootnode + 24) << 2;
     uaecptr pkt = m68k_dreg (&context->regs, 3);
     uaecptr arg2 = get_long (pkt + dp_Arg2);
+    uaecptr devnode;
     int i;
     char* devname = bstr1 (get_long (pkt + dp_Arg1) << 2);
     char* s;
     Unit *unit;
     UnitInfo *uinfo;
+    int late = 0;
 
     /* find UnitInfo with correct device name */
     s = strchr (devname, ':');
@@ -1890,7 +1914,7 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
        write_log ("Failed attempt to mount device '%s'\n", devname);
        put_long (pkt + dp_Res1, DOS_FALSE);
        put_long (pkt + dp_Res2, ERROR_DEVICE_NOT_MOUNTED);
-       return 1;
+       return 0;
     }
 
     if (!mountinfo.ui[i].wasisempty && !my_existsdir (mountinfo.ui[i].rootdir) && !my_existsfile (mountinfo.ui[i].rootdir))
@@ -1898,10 +1922,14 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
        write_log ("Failed attempt to mount device '%s'\n", devname);
        put_long (pkt + dp_Res1, DOS_FALSE);
        put_long (pkt + dp_Res2, ERROR_DEVICE_NOT_MOUNTED);
-       return 1;
+       return 0;
     }
 
     uinfo = mountinfo.ui + i;
+    if (!uinfo->unit_pipe) {
+       late = 1;
+       filesys_start_thread (uinfo, i);
+    }
     unit = startup_create_unit (uinfo, i);
     unit->volflags = uinfo->volflags;
 
@@ -1910,7 +1938,9 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
     write_log ("FS: %s (flags=%08.8X) starting..\n", unit->ui.volname, unit->volflags);
 
     /* fill in our process in the device node */
-    put_long ((get_long (pkt + dp_Arg3) << 2) + 8, unit->port);
+    devnode = get_long (pkt + dp_Arg3) << 2;
+    put_long (unit->volume + 180, devnode);
+    put_long (devnode + 8, unit->port);
     unit->dosbase = m68k_areg (&context->regs, 2);
 
     /* make new volume */
@@ -1926,7 +1956,7 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
 
     put_long (unit->volume + 4, 2); /* Type = dt_volume */
     put_long (unit->volume + 12, 0); /* Lock */
-    put_long (unit->volume + 16, 3800); /* Creation Date */
+    put_long (unit->volume + 16, 3800 + i); /* Creation Date */
     put_long (unit->volume + 20, 0);
     put_long (unit->volume + 24, 0);
     put_long (unit->volume + 28, 0); /* lock list */
@@ -1943,7 +1973,7 @@ static uae_u32 REGPARAM2 startup_handler (TrapContext *context)
 
     put_long (pkt + dp_Res1, DOS_TRUE);
 
-    return 0;
+    return 1 | (late ? 2 : 0);
 }
 
 static void
@@ -2589,7 +2619,7 @@ static ExAllKey *getexall (Unit *unit, int id)
                return &unit->exalls[i];
            }
        }
-    } else {
+    } else if (id > 0) {
        for (i = 0; i < EXALLKEYS; i++) {
            if (unit->exalls[i].id == id)
                return &unit->exalls[i];
@@ -2739,6 +2769,36 @@ static int action_examine_all_do (Unit *unit, uaecptr lock, ExAllKey *eak, uaecp
     return 1;
 }
 
+static int action_examine_all_end (Unit *unit, dpacket packet)
+{
+    uae_u32 id;
+    uae_u32 doserr = 0;
+    ExAllKey *eak;
+    uaecptr control = GET_PCK_ARG5 (packet);
+
+    if (kickstart_version < 36)
+       return 0;
+    id = get_long (control + 4);
+    eak = getexall (unit, id);
+    if (!eak) {
+        write_log ("FILESYS: EXALL_END non-existing ID %d\n", id);
+        doserr = ERROR_OBJECT_WRONG_TYPE;
+    } else {
+        eak->id = 0;
+        fs_closedir (unit, eak->dirhandle);
+        xfree (eak->fn);
+       eak->fn = NULL;
+       eak->dirhandle = NULL;
+    }
+    if (doserr) {
+       PUT_PCK_RES1 (packet, DOS_FALSE);
+       PUT_PCK_RES2 (packet, doserr);
+    } else {
+       PUT_PCK_RES1 (packet, DOS_TRUE);
+    }
+    return 1;
+}
+
 static int action_examine_all (Unit *unit, dpacket packet)
 {
     uaecptr lock = GET_PCK_ARG1 (packet) << 2;
@@ -2751,9 +2811,9 @@ static int action_examine_all (Unit *unit, dpacket packet)
     int isarch = unit->volflags & MYVOLUMEINFO_ARCHIVE;
     a_inode *base;
     void *d;
-    int id, ok, i;
+    int ok, i;
     uaecptr exp;
-    uae_u32 doserr = ERROR_NO_MORE_ENTRIES;
+    uae_u32 id, doserr = ERROR_NO_MORE_ENTRIES;
 
     ok = 0;
 
@@ -2762,6 +2822,7 @@ static int action_examine_all (Unit *unit, dpacket packet)
 
     put_long (control + 0, 0); /* eac_Entries */
 
+     /* EXAMINE ALL might use dos.library MatchPatternNoCase() which is >=36 */
     if (kickstart_version < 36)
        return 0;
 
@@ -2796,7 +2857,7 @@ static int action_examine_all (Unit *unit, dpacket packet)
            base = lookup_aino (unit, get_long (lock + 4));
        if (base == 0)
            base = &unit->rootnode;
-       write_log("exall: '%s'\n", base->nname);
+       //write_log("exall: '%s'\n", base->nname);
        d = fs_opendir (unit, base->nname);
        if (!d)
            goto fail;
@@ -2834,9 +2895,10 @@ fail:
        if (eak) {
            eak->id = 0;
            fs_closedir (unit, eak->dirhandle);
+           eak->dirhandle = NULL;
+           xfree (eak->fn);
+           eak->fn = NULL;
        }
-       xfree (eak->fn);
-       eak->fn = NULL;
     }
     return 1;
 }
@@ -4181,8 +4243,7 @@ static uae_u32 REGPARAM2 exter_int_helper (TrapContext *context)
         *        d0 = 2: Signal(), task in a1, signal set in d1
         *        d0 = 3: ReplyMsg(), message in a1
         *        d0 = 4: Cause(), interrupt in a1
-        *        d0 = 5: AllocMem(), size in d0, flags in d1, pointer to address at a0
-        *        d0 = 6: FreeMem(), memory in a1, size in d0
+        *        d0 = 5: Send FileNofication message, port in a0, notifystruct in a1
         */
 
 #ifdef SUPPORT_THREADS
@@ -4321,6 +4382,7 @@ static int handle_packet (Unit *unit, dpacket pck)
      case ACTION_ADD_NOTIFY: action_add_notify (unit, pck); break;
      case ACTION_REMOVE_NOTIFY: action_remove_notify (unit, pck); break;
      case ACTION_EXAMINE_ALL: return action_examine_all (unit, pck); break;
+     case ACTION_EXAMINE_ALL_END: return action_examine_all_end (unit, pck); break;
 
         /* unsupported packets */
      case ACTION_LOCK_RECORD:
@@ -4454,24 +4516,7 @@ void filesys_start_threads (void)
        UnitInfo *ui = &mountinfo.ui[i];
        if (!ui->open)
            continue;
-       ui->unit_pipe = 0;
-       ui->back_pipe = 0;
-       ui->reset_state = FS_STARTUP;
-       if (savestate_state != STATE_RESTORE) {
-           ui->startup = 0;
-           ui->self = 0;
-       }
-#ifdef UAE_FILESYS_THREADS
-       if (is_hardfile (i) == FILESYS_VIRTUAL) {
-           ui->unit_pipe = (smp_comm_pipe *)xmalloc (sizeof (smp_comm_pipe));
-           ui->back_pipe = (smp_comm_pipe *)xmalloc (sizeof (smp_comm_pipe));
-           init_comm_pipe (ui->unit_pipe, 100, 3);
-           init_comm_pipe (ui->back_pipe, 100, 1);
-           uae_start_thread ("filesys", filesys_thread, (void *)ui, &ui->tid);
-       }
-#endif
-       if (savestate_state == STATE_RESTORE)
-           startup_update_unit (ui->self, ui);
+       filesys_start_thread (ui, i);
     }
 }
 
@@ -4681,6 +4726,23 @@ static uae_u32 REGPARAM2 filesys_dev_bootfilesys (TrapContext *context)
     return 0;
 }
 
+static uae_u32 REGPARAM2 filesys_init_storeinfo (TrapContext *context)
+{
+    int ret = -1;
+    switch (m68k_dreg (&context->regs, 1))
+    {
+       case 1:
+       mountertask = m68k_areg (&context->regs, 1);
+       break;
+       case 2:
+       ret = automountunit;
+       automountunit = -1;
+       break;
+       return 0;
+    }
+    return ret;
+}
+
 /* Remember a pointer AmigaOS gave us so we can later use it to identify
  * which unit a given startup message belongs to.  */
 static uae_u32 REGPARAM2 filesys_dev_remember (TrapContext *context)
@@ -5185,6 +5247,10 @@ void filesys_install (void)
     calltrap (deftrap2 (startup_handler, 0, "startup_handler"));
     dw (RTS);
 
+    org (RTAREA_BASE + 0xFF48);
+    calltrap (deftrap2 (filesys_init_storeinfo, 0, "filesys_init_storeinfo"));
+    dw (RTS);
+
     org (RTAREA_BASE + 0xFF50);
     calltrap (deftrap2 (exter_int_helper, 0, "exter_int_helper"));
     dw (RTS);
index 1660803147849b14e313c171f1250e4338c5ff6c..d70efff761abda503c1f65281c6cf0d697a429e7 100755 (executable)
  db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x60); db(0x00); db(0x07); db(0x3e); db(0x00); db(0x00); db(0x05); db(0xfa);
- db(0x00); db(0x00); db(0x00); db(0x34); db(0x00); db(0x00); db(0x00); db(0xd4);
- db(0x00); db(0x00); db(0x00); db(0x20); db(0x00); db(0x00); db(0x01); db(0x8e);
- db(0x00); db(0x00); db(0x09); db(0x5e); db(0x00); db(0x00); db(0x0a); db(0xec);
- db(0x43); db(0xfa); db(0x0c); db(0x94); db(0x4e); db(0xae); db(0xff); db(0xa0);
+ db(0x60); db(0x00); db(0x08); db(0x34); db(0x00); db(0x00); db(0x06); db(0x9c);
+ db(0x00); db(0x00); db(0x00); db(0x34); db(0x00); db(0x00); db(0x01); db(0x58);
+ db(0x00); db(0x00); db(0x00); db(0x20); db(0x00); db(0x00); db(0x02); db(0x14);
+ db(0x00); db(0x00); db(0x0a); db(0x64); db(0x00); db(0x00); db(0x0b); db(0xf8);
+ db(0x43); db(0xfa); db(0x0d); db(0xce); 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(0x48); db(0xe7); db(0xff); db(0xfe);
  db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c); db(0xff); db(0xfc);
- db(0x61); db(0x00); db(0x09); db(0x0c); db(0x2a); db(0x50); db(0x43); db(0xfa);
- db(0x0c); db(0x8c); db(0x70); db(0x24); db(0x7a); db(0x00); db(0x4e); db(0xae);
+ db(0x61); db(0x00); db(0x0a); db(0x12); db(0x2a); db(0x50); db(0x43); db(0xfa);
+ db(0x0d); db(0xc6); db(0x70); db(0x24); db(0x7a); db(0x00); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0c); db(0x43); db(0xfa);
- db(0x0c); db(0x7c); db(0x70); db(0x00); db(0x7a); db(0x01); db(0x4e); db(0xae);
+ db(0x0d); db(0xb6); db(0x70); db(0x00); db(0x7a); db(0x01); db(0x4e); db(0xae);
  db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x02); db(0x2c); db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x26); db(0x40); db(0x27); db(0x4c); db(0x01); db(0x9c); db(0x7c); db(0x00);
- db(0xbc); db(0xad); db(0x01); db(0x0c); db(0x64); db(0x24); db(0x2f); db(0x06);
- db(0x7e); db(0x01); db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00);
- db(0x05); db(0x72); db(0x26); db(0x5f); 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(0x2c); db(0x1f); db(0x52); db(0x46);
- db(0x60); db(0xd6); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x22); db(0x4c);
- db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x30); db(0x3c); db(0xff); db(0x80);
- db(0x61); db(0x00); db(0x08); db(0x9c); db(0x4e); db(0x90); db(0x72); db(0x03);
- db(0x74); db(0xf6); db(0x20); db(0x7c); db(0x00); db(0x20); db(0x00); db(0x00);
- db(0x90); db(0x88); db(0x65); db(0x0a); db(0x67); db(0x08); db(0x78); db(0x00);
- db(0x22); db(0x44); db(0x4e); db(0xae); db(0xfd); db(0x96); db(0x4c); db(0xdf);
- db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x20);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x08); db(0x70);
- db(0x70); db(0x00); db(0x4e); db(0x90); db(0x4a); db(0x80); db(0x67); db(0x00);
- db(0x00); db(0xa0); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x30); db(0x3c);
- db(0xff); db(0x50); db(0x61); db(0x00); db(0x08); db(0x5a); db(0x70); db(0x02);
- db(0x4e); db(0x90); db(0x0c); db(0x40); db(0x00); db(0x01); db(0x6d); db(0x7a);
- db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x92); db(0x60); db(0xe6);
- 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(0xd8); db(0x0c); db(0x40);
- db(0x00); db(0x03); db(0x6e); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0x86);
- db(0x60); db(0xcc); db(0x0c); db(0x40); db(0x00); db(0x04); db(0x6e); db(0x06);
- db(0x4e); db(0xae); db(0xff); db(0x4c); db(0x60); db(0xc0); 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(0x76); db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00);
- db(0x07); db(0xce); 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(0xc0); db(0xc0); 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(0x0b); db(0x05); db(0x23); db(0x48); db(0x00); db(0x0a);
- db(0x41); db(0xfa); db(0xff); db(0x2a); db(0x23); db(0x48); db(0x00); db(0x0e);
- db(0x41); db(0xfa); db(0xff); db(0x22); 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(0x4c); db(0xdf); db(0x03); db(0x03);
- 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(0xa0); 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(0x0a); db(0x9f); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b);
- db(0x01); db(0x98); 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(0x20); db(0x02); db(0x66); db(0x04);
- db(0x42); db(0x9a); db(0x60); db(0x1e); db(0x50); db(0x80); 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(0x30); db(0x3c);
- db(0x75); db(0x30); db(0x33); db(0xfc); db(0x0f); db(0x00); db(0x00); db(0xdf);
- db(0xf1); db(0x80); db(0x33); db(0xfc); db(0x00); db(0x0f); db(0x00); db(0xdf);
- db(0xf1); db(0x80); db(0x33); db(0xfc); db(0x00); db(0xf0); db(0x00); db(0xdf);
- db(0xf1); db(0x80); db(0x51); db(0xc8); db(0xff); db(0xe6); db(0x7e); db(0x00);
- db(0x60); db(0xd4); db(0x48); db(0xe7); db(0x40); db(0xe2); 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(0x09); db(0x94); db(0x10); db(0x19); db(0x12); db(0x1a);
- db(0xb0); db(0x01); db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42);
- db(0x60); db(0xf2); db(0x20); db(0x50); db(0x60); db(0xe2); db(0x70); db(0x20);
+ db(0x02); db(0x2c); 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(0x9c); db(0x7c); db(0x00); db(0xbc); db(0xad); db(0x01); db(0x0c);
+ db(0x64); db(0x24); db(0x2f); db(0x06); db(0x7e); db(0x01); db(0x2f); db(0x0b);
+ db(0x20); db(0x4b); db(0x61); db(0x00); db(0x06); db(0x10); db(0x26); db(0x5f);
+ 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(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xd6); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62);
+ db(0x30); db(0x3c); db(0xff); db(0x80); db(0x61); db(0x00); db(0x09); db(0x9e);
+ db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6); db(0x20); db(0x7c);
+ db(0x00); db(0x20); db(0x00); db(0x00); db(0x90); db(0x88); db(0x65); db(0x0a);
+ db(0x67); db(0x08); db(0x78); db(0x00); db(0x22); db(0x44); db(0x4e); db(0xae);
+ db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x0c); db(0xf0); db(0x43); db(0xfa);
+ db(0x00); db(0x1c); db(0x70); db(0x0a); db(0x61); db(0x00); db(0x0a); db(0xbe);
+ db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); db(0xff); db(0x48);
+ db(0x61); db(0x00); db(0x09); db(0x6a); db(0x4e); db(0x90); db(0x4c); db(0xdf);
+ db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x11); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x43); db(0xfa); db(0x0c); db(0xec); db(0x70); db(0x00);
+ db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x67); db(0xe4);
+ db(0x2c); db(0x40); db(0x41); db(0xfa); db(0x0c); db(0xc3); db(0x22); db(0x08);
+ db(0x74); db(0x0f); db(0x41); db(0xfa); db(0x00); db(0x20); db(0x26); db(0x08);
+ db(0xe4); db(0x8b); db(0x28); db(0x3c); db(0x00); db(0x00); db(0x1f); db(0x40);
+ 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(0x60); db(0xbc);
+ 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(0x09); db(0x0c); db(0x4e); db(0x90); db(0x22); db(0x00); db(0x6b); db(0x04);
+ db(0x61); db(0x00); db(0x06); db(0x9c); db(0x70); db(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x20); db(0x30); db(0x3c); db(0xff); db(0x50);
+ db(0x61); db(0x00); db(0x08); db(0xf2); 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(0x08); db(0xdc); 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(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x08);
- db(0x00); db(0x08); db(0x41); db(0xfa); db(0x09); db(0x6a); db(0x25); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x09); db(0x23); 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(0x20); db(0x08); db(0x4c); db(0xdf); db(0x47); db(0x02);
- db(0x4e); db(0x75); db(0x2f); db(0x0e); db(0x4a); db(0x2b); db(0x00); db(0x4c);
- db(0x67); db(0x5c); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e);
- db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x20); db(0x72); db(0x0a);
- db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff);
- db(0xff); db(0xfe); db(0x67); db(0x42); db(0x41); db(0xeb); db(0x00); db(0x20);
- db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0a);
- db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x30); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x20); db(0x6b);
- db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8);
- db(0xd1); db(0xc8); db(0x43); db(0xeb); db(0x00); db(0x20); 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(0xae); db(0xff); db(0x76); db(0x2c); db(0x5f);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x22); db(0x2c); db(0x6b);
- db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14);
- db(0x65); db(0x20); db(0x72); db(0x0a); db(0x4e); db(0xae); db(0xfd); db(0x66);
- db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x54);
+ 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(0x08); db(0x4e);
+ 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(0xc0); db(0xc0);
+ 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(0x0b); db(0x8d); db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa);
+ db(0xff); db(0x28); db(0x23); db(0x48); db(0x00); db(0x0e); db(0x41); db(0xfa);
+ db(0xff); db(0x20); 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(0x4c); db(0xdf); db(0x03); db(0x03); 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(0xa0); 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(0x0b); db(0x27);
+ db(0x23); db(0x48); db(0x00); db(0x0a); db(0x20); db(0x6b); db(0x01); db(0x98);
+ 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(0x20); db(0x02); db(0x66); db(0x04); db(0x42); db(0x9a);
+ db(0x60); db(0x1e); db(0x50); db(0x80); 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(0x7e); db(0x00); db(0x60); db(0xf4);
+ db(0x48); db(0xe7); db(0x40); db(0xe2); 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(0x0a); db(0x68); db(0x10); db(0x19); db(0x12); db(0x1a); db(0xb0); db(0x01);
+ db(0x66); db(0x06); db(0x4a); db(0x00); db(0x67); db(0x42); 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(0x0a); db(0x3e); db(0x25); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x09); db(0xcb); 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(0x20); db(0x08); db(0x4c); db(0xdf); db(0x47); 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(0x70); db(0x2c); db(0x6b); db(0x00); db(0xa0);
+ db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x34);
+ 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(0x56); 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(0x08); 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(0x30); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x20); db(0x6b); db(0x00); db(0xa0);
+ db(0x20); db(0x68); db(0x00); db(0x22); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
+ db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8);
+ db(0x43); db(0xeb); db(0x00); db(0x20); 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(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(0x34); 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(0x68); 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(0x72); db(0x0a); db(0x4e); db(0xae); db(0xfd); db(0x6c);
- db(0x60); db(0x42); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
- db(0xff); db(0x7c); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68);
- db(0x00); db(0x22); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x20); db(0x68);
- db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x43); db(0xe8);
- db(0x00); db(0x04); db(0x45); db(0xeb); db(0x00); db(0x20); db(0x20); db(0x28);
- db(0x00); db(0x04); db(0x67); db(0x14); db(0xd0); db(0x80); db(0xd0); db(0x80);
- db(0xb5); db(0xc0); db(0x67); db(0x0a); db(0x22); db(0x40); db(0x20); db(0x51);
- db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x60); db(0xe8); db(0x22); db(0x92);
- db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x00);
- 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(0x24);
- db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x66); db(0x32); 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(0x20);
- db(0x61); db(0x00); db(0xfe); db(0x88); db(0x70); db(0x01); db(0x61); db(0x00);
- db(0xff); db(0x62); db(0x60); db(0x14); db(0x4a); db(0x2b); db(0x00); db(0x4c);
- db(0x67); db(0x0e); db(0x42); db(0x2b); db(0x00); db(0x4c); db(0x61); db(0x00);
- db(0xfe); db(0xda); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x4c);
- db(0x4e); db(0x75); db(0x4a); db(0xac); db(0x00); db(0x14); db(0x67); db(0x08);
- db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0xb8); db(0x4e); db(0x75);
- db(0x70); db(0x01); db(0x61); db(0x00); db(0xff); db(0xb0); db(0x4e); db(0x75);
- db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x6b); db(0x08); db(0x70); db(0x01);
- db(0x61); db(0x00); db(0xff); db(0xa2); db(0x4e); db(0x75); db(0x70); db(0x00);
- db(0x61); db(0x00); db(0xff); db(0x9a); db(0x4e); db(0x75); db(0x20); db(0x6c);
- db(0x00); db(0x24); db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x08);
- db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x02); 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(0x4a); db(0x87); db(0x67); db(0x64);
- db(0x20); db(0x0a); db(0x67); db(0x60); 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(0x1a); db(0x20); db(0x2a); db(0x00); db(0x04);
- db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x67); db(0x0a); db(0x20); db(0x52);
- db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x81); db(0x6a); db(0xfa);
- db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x9e); db(0x24); db(0x52);
- db(0x53); db(0x87); db(0x60); db(0x98); db(0x4c); db(0xdf); db(0x7c); db(0xfc);
- db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfd); db(0x3e); db(0x21); db(0x40);
- db(0x01); db(0x98); db(0x2f); db(0x08); db(0x30); db(0x3c); db(0xff); db(0xfc);
- db(0x61); db(0x00); db(0x03); db(0x44); db(0x2a); db(0x50); db(0x30); db(0x3c);
- db(0xff); db(0x28); db(0x61); db(0x00); db(0x03); db(0x3a); 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(0x83);
- db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x00); db(0xfa); db(0xa4);
- db(0x0c); db(0x83); db(0x00); db(0x00); db(0x00); db(0x02); db(0x67); db(0x0c);
- db(0xc0); db(0x85); db(0x67); db(0x08); db(0x4a); db(0xa8); db(0x01); db(0x90);
- db(0x67); db(0x00); db(0xfa); db(0x90); db(0x20); db(0x28); db(0x01); db(0x90);
- db(0x67); 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(0x10);
- db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00);
- db(0x02); db(0xe6); db(0x4e); db(0x90); db(0x60); db(0x00); db(0x00); db(0x28);
+ db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08);
+ 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(0x42);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c);
+ db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22);
+ db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x20); db(0x68); db(0x00); db(0x18);
+ db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x43); db(0xe8); db(0x00); db(0x04);
+ db(0x45); db(0xeb); db(0x00); db(0x20); db(0x20); db(0x28); db(0x00); db(0x04);
+ db(0x67); db(0x14); db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xb5); db(0xc0);
+ db(0x67); db(0x0a); db(0x22); db(0x40); db(0x20); db(0x51); db(0xd1); db(0xc8);
+ db(0xd1); db(0xc8); db(0x60); db(0xe8); db(0x22); db(0x92); db(0x4e); db(0xae);
+ db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x80); 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(0xfe); db(0x56); 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(0xc0); 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(0x01);
+ db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75); db(0x4a); db(0x2b);
+ db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01); db(0x72); db(0x01);
+ db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); db(0x70); db(0x00);
+ db(0x72); db(0x01); db(0x61); db(0x00); db(0xff); db(0x8e); db(0x4e); db(0x75);
+ db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0xa8); db(0x00); db(0x08);
+ db(0x66); db(0x08); db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x02);
+ 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(0x4a); db(0x87);
+ db(0x67); db(0x64); db(0x20); db(0x0a); db(0x67); db(0x60); 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(0x1a); db(0x20); db(0x2a);
+ db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x67); db(0x0a);
+ db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x81);
+ db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x9e);
+ db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x98); db(0x4c); db(0xdf);
+ db(0x7c); db(0xfc); db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfd); db(0x02);
+ db(0x21); db(0x40); db(0x01); db(0x98); db(0x2f); db(0x08); db(0x30); db(0x3c);
+ db(0xff); db(0xfc); db(0x61); db(0x00); db(0x03); db(0xa8); db(0x2a); db(0x50);
+ db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x03); db(0x9e);
+ 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(0x83); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x00);
+ db(0xfa); db(0x22); db(0x0c); db(0x83); db(0x00); db(0x00); db(0x00); db(0x02);
+ db(0x67); db(0x0c); db(0xc0); db(0x85); db(0x67); db(0x08); db(0x4a); db(0xa8);
+ db(0x01); db(0x90); db(0x67); db(0x00); db(0xfa); db(0x0e); db(0x20); db(0x28);
+ db(0x01); db(0x90); db(0x67); 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(0x03); db(0x4a); db(0x4e); db(0x90); db(0x60); db(0x26);
  db(0x2c); db(0x4c); db(0x2f); db(0x08); db(0x4e); db(0xae); db(0xff); 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(0x02); db(0xca); db(0x4e); db(0x90);
+ db(0xff); db(0x20); db(0x61); db(0x00); db(0x03); db(0x30); 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(0x4a); db(0xa9);
  db(0x01); db(0x94); db(0x67); db(0x28); db(0x20); db(0x69); db(0x01); db(0x94);
- db(0x61); db(0x00); db(0xfb); db(0x7e); db(0x48); db(0xe7); db(0x80); db(0xc0);
+ db(0x61); db(0x00); db(0xfb); db(0x64); 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(0x4a); db(0x80); db(0x67); db(0x04);
- db(0x61); db(0x00); db(0xfb); db(0x08); db(0x4a); db(0x83); db(0x6b); db(0x00);
- db(0xfa); db(0x0a); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00);
- db(0x02); db(0x7e); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29);
+ db(0x61); db(0x00); db(0xfa); db(0xee); db(0x4a); db(0x83); db(0x6b); db(0x00);
+ db(0xf9); db(0x8a); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00);
+ db(0x02); db(0xe4); db(0x4e); db(0x90); db(0x20); db(0x03); db(0x16); db(0x29);
  db(0x00); db(0x4f); db(0x4a); db(0x80); db(0x66); db(0x1a); db(0x27); db(0x7c);
- db(0x00); db(0x00); db(0x0f); db(0xa0); db(0x00); db(0x14); db(0x43); db(0xfa);
- db(0xf9); db(0x14); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x27); db(0x40);
+ db(0x00); db(0x00); db(0x17); db(0x70); db(0x00); db(0x14); db(0x43); db(0xfa);
+ db(0xf8); db(0x74); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x27); db(0x40);
  db(0x00); db(0x20); db(0x70); db(0xff); db(0x27); db(0x40); db(0x00); db(0x24);
- db(0x4a); db(0x87); db(0x67); db(0x36); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x70); db(0x14); db(0x72); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x3a);
- db(0x22); db(0x40); db(0x70); db(0x00); db(0x22); db(0x80); db(0x23); db(0x40);
- db(0x00); db(0x04); db(0x33); db(0x40); db(0x00); db(0x0e); 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(0xee);
- db(0xfe); db(0xf2); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41);
- db(0x70); db(0xff); db(0x2c); db(0x4c); db(0x4e); db(0xee); db(0xff); db(0x6a);
- 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(0x05); db(0x64); db(0x70); db(0x00); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x24); db(0x40); db(0x20); db(0x3c); db(0x00); db(0x00);
- db(0x00); db(0xb5); 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(0x93); db(0xc9);
- db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0);
- db(0x61); db(0x00); db(0x02); db(0xa4); db(0x27); db(0x40); db(0x00); db(0xa4);
- db(0x61); db(0x00); db(0x02); db(0xd0); db(0x27); db(0x40); db(0x00); db(0xa8);
- db(0x7a); db(0x00); 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(0x01); db(0x9c); db(0x70); db(0x00); db(0x4e); db(0x90);
- db(0x61); db(0x00); db(0xfb); db(0xf0); db(0x61); db(0x00); db(0x03); db(0x32);
- db(0x60); db(0x00); db(0x00); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x2a);
- 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(0x11);
- db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac);
- db(0x67); db(0x08); db(0x61); db(0x00); db(0xfd); db(0x6c); db(0x42); db(0x2b);
- db(0x00); db(0xac); db(0x20); db(0x0c); db(0x67); db(0xce); db(0x0c); db(0x6c);
- db(0x00); db(0x26); db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac);
- db(0x40); db(0x00); db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42);
- db(0x0c); db(0x6c); db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3a);
- 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(0x18); 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(0x86); db(0x22); db(0x4c);
- db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00);
- db(0xff); db(0x7c); db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x3e);
- db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x00); db(0xf8);
- 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(0x5e);
- db(0x22); db(0x50); db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04);
- db(0x6a); 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(0xda);
- db(0x24); db(0x48); db(0x20); db(0x49); db(0x60); db(0xd4); 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(0x4e); db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00);
- db(0x00); db(0xa6); 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(0xff); db(0x08); db(0x28); db(0x43);
- db(0x61); db(0x04); db(0x60); db(0x00); db(0xff); db(0x00); 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(0xfc); db(0x70); db(0x0c); db(0xac); db(0x00); db(0x00);
- db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00);
- db(0xfc); db(0x8e); 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(0x41); db(0xfa);
- db(0xf6); db(0xa4); db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff);
- db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x00); db(0x00); db(0x0c); db(0xaf);
- db(0x00); db(0x00); db(0x00); db(0x22); db(0x00); db(0x08); db(0x66); db(0x30);
- db(0x48); db(0xe7); db(0xc0); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x24); db(0x40);
- db(0x22); db(0x4a); db(0x70); db(0xec); db(0x4e); db(0xae); db(0xfe); db(0xd4);
- db(0x41); db(0xfa); db(0xff); db(0xda); db(0x32); db(0x10); db(0xb2); db(0x50);
- db(0x67); db(0xfc); db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0xd4);
- db(0x72); db(0x01); db(0x4c); db(0xdf); db(0x47); db(0x03); db(0x58); db(0x8f);
- 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(0x79); db(0x00); db(0x00);
- 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(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x38); db(0x2c); db(0x78);
+ db(0x00); db(0x04); db(0x70); db(0x14); db(0x72); db(0x00); db(0x4e); db(0xae);
+ db(0xff); db(0x3a); db(0x22); db(0x40); db(0x70); db(0x00); db(0x22); db(0x80);
+ db(0x23); db(0x40); db(0x00); db(0x04); db(0x33); db(0x40); db(0x00); db(0x0e);
+ 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(0xfe); db(0xf2); db(0x4e); db(0x75); db(0x20); db(0x4b);
+ db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01);
+ db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0xec); db(0x2c); db(0x4c);
+ db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x4e); db(0x75); db(0x48); db(0xe7);
+ db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x02); db(0x7a); db(0x00);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x06); db(0x10);
+ 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(0x2c); 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(0x21); db(0x4c); db(0x01); db(0x9c); db(0x48); db(0xe7);
+ db(0x00); db(0x0a); db(0x61); db(0x00); db(0xfe); db(0x78); db(0x4c); db(0xdf);
+ db(0x50); db(0x00); 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(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(0x05); db(0xa8); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ 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(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(0xae); 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(0x79); db(0x00); db(0x00);
- db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x20); db(0x24); db(0x40);
- 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(0x21); db(0x42);
- db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80);
+ 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(0x93); db(0xc9); db(0x4e); db(0xae);
+ db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); db(0x61); db(0x00);
+ db(0x02); db(0xb4); db(0x27); db(0x40); db(0x00); db(0xa4); db(0x61); db(0x00);
+ db(0x02); db(0xe0); db(0x27); db(0x40); db(0x00); db(0xa8); db(0x7a); db(0x00);
+ 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(0x01); db(0xac); db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00);
+ db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0x5c); db(0x08); db(0x02);
+ db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00);
+ db(0xfc); db(0x60); db(0x61); db(0x00); db(0x03); db(0x38); db(0x60); db(0x00);
+ db(0x00); db(0xfc); db(0x61); db(0x00); db(0x03); db(0x30); 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(0x11); db(0x4e); db(0xae);
+ db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x08);
+ db(0x61); db(0x00); db(0xfd); db(0x04); db(0x42); db(0x2b); db(0x00); db(0xac);
+ db(0x20); db(0x0c); db(0x67); db(0xce); db(0x0c); db(0x6c); db(0x00); db(0x26);
+ db(0x00); db(0x12); db(0x66); db(0x4c); db(0x0c); db(0xac); db(0x40); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x14); db(0x66); db(0x42); db(0x0c); db(0x6c);
+ db(0x12); db(0x34); db(0x00); db(0x18); db(0x66); db(0x3a); 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(0x18); 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(0x86); db(0x22); db(0x4c); db(0x70); db(0x26);
+ db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x7c);
+ db(0x26); db(0x2c); db(0x00); db(0x0a); db(0x66); db(0x3e); db(0x30); db(0x3c);
+ db(0xff); db(0x50); db(0x61); db(0x00); db(0x00); db(0xf8); 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(0x5e); db(0x22); db(0x50);
+ db(0x20); db(0x40); db(0x20); db(0x28); db(0x00); db(0x04); db(0x6a); 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(0xda); db(0x24); db(0x48);
+ db(0x20); db(0x49); db(0x60); db(0xd4); 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(0x4e);
+ db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00); db(0x00); db(0xa6);
+ 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(0xff); db(0x08); db(0x28); db(0x43); db(0x61); db(0x04);
+ db(0x60); db(0x00); db(0xff); db(0x00); 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(0xfc); db(0x04); db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09);
+ db(0x00); db(0x08); db(0x66); db(0x04); db(0x61); db(0x00); db(0xfc); db(0x2a);
+ 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(0x41); db(0xfa); db(0xf5); db(0x9e);
+ db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0);
+ db(0x4e); db(0x75); db(0x00); db(0x00); db(0x0c); db(0xaf); db(0x00); db(0x00);
+ db(0x00); db(0x22); db(0x00); db(0x08); db(0x66); db(0x30); db(0x48); db(0xe7);
+ db(0xc0); db(0xe2); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x93); db(0xc9);
+ db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x24); db(0x40); db(0x22); db(0x4a);
+ db(0x70); db(0xec); db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x41); db(0xfa);
+ db(0xff); db(0xda); db(0x32); db(0x10); db(0xb2); db(0x50); db(0x67); db(0xfc);
+ db(0x22); db(0x4a); db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x72); db(0x01);
+ db(0x4c); db(0xdf); db(0x47); db(0x03); db(0x58); db(0x8f); 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(0x79); db(0x00); db(0x00); 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(0xae); 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(0x00); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00);
- db(0xff); db(0x70); db(0x61); db(0x00); db(0xff); db(0xbc); db(0x67); db(0x1a);
- db(0x22); db(0x40); db(0x24); db(0x40); db(0x41); db(0xfa); db(0x02); db(0x38);
- db(0x70); db(0x00); 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(0x00);
- db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x00); db(0x22); db(0x2c); db(0x78);
- db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x3c); db(0x61); db(0x00);
- db(0xff); db(0x88); db(0x67); db(0x1a); db(0x24); db(0x40); db(0x22); db(0x40);
- db(0x41); db(0xfa); db(0x02); db(0x11); db(0x70); db(0x00); 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(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7);
- db(0x30); db(0x32); db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04);
+ db(0x20); db(0x22); db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04);
+ db(0x4a); db(0x80); db(0x67); db(0x20); db(0x24); db(0x40); 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(0x21); 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(0x00); db(0x22);
+ db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x70);
+ db(0x61); db(0x00); db(0xff); db(0xbc); db(0x67); db(0x1a); db(0x22); db(0x40);
+ db(0x24); db(0x40); db(0x41); db(0xfa); db(0x02); db(0x40); db(0x70); db(0x00);
+ 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(0x00); db(0x4e); db(0x75);
+ db(0x48); db(0xe7); db(0x00); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04);
+ db(0x61); db(0x00); db(0xff); db(0x3c); db(0x61); db(0x00); db(0xff); db(0x88);
+ db(0x67); db(0x1a); db(0x24); db(0x40); db(0x22); db(0x40); db(0x41); db(0xfa);
+ db(0x02); db(0x19); db(0x70); db(0x00); 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(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32);
+ db(0x2c); db(0x79); db(0x00); db(0x00); 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(0x2c); db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01);
- db(0x00); db(0x08); 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(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x4c); db(0xdf); db(0x4c); db(0x0c);
- db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00);
- db(0x2f); db(0x08); db(0x4a); db(0x2b); db(0x00); db(0x9d); db(0x66); db(0x24);
- db(0x41); db(0xfa); db(0xff); db(0xf0); db(0x0c); db(0x10); db(0x00); db(0x01);
- db(0x66); db(0x1a); db(0x41); db(0xfa); db(0x01); db(0x94); db(0x43); db(0xfa);
- db(0x00); db(0x18); db(0x61); db(0x00); db(0xff); db(0x8a); db(0x50); db(0xeb);
- db(0x00); db(0x9d); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00);
- db(0xfe); db(0x36); db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x4e); db(0x75);
- db(0x2c); db(0x79); db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff);
- db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x74); db(0x00); db(0x01); db(0xc2);
- 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(0x43); db(0xfa); db(0x01); db(0x7e); db(0x4e); db(0xae);
- db(0xfd); db(0xd8); db(0x2e); db(0x00); db(0x70); db(0x00); db(0x30); db(0x3c);
- db(0x00); db(0x44); 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(0x61); db(0x00);
- db(0xfe); db(0xce); db(0x2b); db(0x40); db(0x00); db(0x3c); db(0x67); db(0x00);
- db(0x00); db(0x4e); db(0x61); db(0x00); db(0xfe); db(0xf6); db(0x2b); db(0x40);
- db(0x00); db(0x40); db(0x67); db(0x00); db(0x00); db(0x42); db(0x47); db(0xed);
- db(0x00); db(0x16); db(0x27); db(0x4c); db(0x00); db(0x0c); db(0x27); db(0x42);
- db(0x00); db(0x08); db(0x70); db(0xff); db(0x26); db(0x80); db(0x27); db(0x40);
- db(0x00); db(0x04); 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(0x00); db(0xfc); db(0x23); db(0x48);
- db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x00); db(0xa0); db(0x23); db(0x48);
- db(0x00); db(0x12); db(0x23); db(0x4b); db(0x00); db(0x0e); db(0x70); db(0x05);
- db(0x4e); db(0xae); db(0xff); db(0x58); db(0x60); db(0x02); db(0x4e); db(0x75);
- db(0x20); db(0x02); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x22); db(0x6d);
- db(0x00); db(0x3c); db(0x45); db(0xed); db(0x00); db(0x26); 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(0x15); db(0x7c);
- db(0x00); db(0x04); db(0x00); db(0x04); db(0x42); db(0x2a); db(0x00); db(0x05);
- db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08);
- db(0x20); db(0x47); db(0x20); db(0x2d); db(0x00); db(0x16); db(0x32); db(0x28);
- db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x35); db(0x40);
- db(0x00); db(0x0a); db(0x20); db(0x2d); db(0x00); db(0x1a); db(0x32); db(0x28);
- db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x48); db(0xc0);
- db(0x35); db(0x40); db(0x00); db(0x0c); db(0x22); db(0x6d); db(0x00); db(0x40);
- 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(0x00); db(0x40); 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(0x00); db(0x3c); db(0x4e); db(0xae); db(0xfe); db(0x38);
- db(0x60); db(0x00); db(0xff); db(0x76); db(0x30); db(0x3a); db(0xfe); db(0xa6);
- db(0x48); db(0xc0); db(0x32); db(0x3a); db(0xfe); db(0xa2); db(0x48); db(0xc1);
- db(0xb0); db(0x91); db(0x66); db(0x00); db(0x00); db(0x0a); db(0xb2); db(0xa9);
- db(0x00); db(0x04); db(0x67); db(0x00); db(0x00); db(0x18); db(0x23); db(0x41);
- db(0x00); db(0x04); db(0x22); db(0x80); db(0x20); db(0x29); db(0x00); db(0x08);
- db(0x22); db(0x69); db(0x00); db(0x0c); db(0x2c); db(0x78); db(0x00); db(0x04);
- db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x41); db(0xf9); db(0x00); db(0xdf);
- db(0xf0); db(0x00); db(0x70); db(0x00); 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(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73);
- db(0x65); db(0x20); db(0x68); db(0x61); db(0x63); db(0x6b); db(0x00); db(0x55);
- db(0x41); db(0x45); db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73);
- db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); 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(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(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2);
+ db(0x00); db(0x30); 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(0x4e); db(0xae); db(0xfe); db(0xe6);
+ db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x00); db(0x00);
+ db(0x00); db(0x00); db(0x00); db(0x00); db(0x2f); db(0x08); db(0x4a); db(0x2b);
+ db(0x00); db(0x9d); db(0x66); db(0x26); db(0x41); db(0xfa); db(0xff); db(0xf0);
+ db(0x0c); db(0x10); db(0x00); db(0x01); db(0x66); db(0x1c); db(0x41); db(0xfa);
+ db(0x01); db(0x96); db(0x43); db(0xfa); db(0x00); db(0x1a); db(0x70); db(0x05);
+ db(0x61); db(0x00); db(0xff); db(0x82); db(0x50); db(0xeb); db(0x00); db(0x9d);
+ db(0x30); db(0x3c); db(0xff); db(0x38); db(0x61); db(0x00); db(0xfe); db(0x2e);
+ db(0x4e); db(0x90); db(0x20); db(0x5f); db(0x4e); db(0x75); db(0x2c); db(0x79);
+ db(0x00); db(0x00); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae);
+ db(0xfe); db(0xb6); db(0x74); db(0x00); db(0x01); db(0xc2); 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(0x43); db(0xfa); db(0x01); db(0xaa); db(0x4e); db(0xae); db(0xfd); db(0xd8);
+ db(0x2e); db(0x00); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x44);
+ 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(0x61); db(0x00); db(0xfe); db(0xc6);
+ db(0x2b); db(0x40); db(0x00); db(0x3c); db(0x67); db(0x00); db(0x00); db(0x4e);
+ db(0x61); db(0x00); db(0xfe); db(0xee); db(0x2b); db(0x40); db(0x00); db(0x40);
+ db(0x67); db(0x00); db(0x00); db(0x42); db(0x47); db(0xed); db(0x00); db(0x16);
+ db(0x27); db(0x4c); db(0x00); db(0x0c); db(0x27); db(0x42); db(0x00); db(0x08);
+ db(0x70); db(0xff); db(0x26); db(0x80); db(0x27); db(0x40); db(0x00); db(0x04);
+ 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(0x00); db(0xfc); db(0x23); db(0x48); db(0x00); db(0x0a);
+ db(0x41); db(0xfa); db(0x00); db(0xa0); db(0x23); db(0x48); db(0x00); db(0x12);
+ db(0x23); db(0x4b); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae);
+ db(0xff); db(0x58); db(0x60); db(0x02); db(0x4e); db(0x75); db(0x20); db(0x02);
+ db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x22); db(0x6d); db(0x00); db(0x3c);
+ db(0x45); db(0xed); db(0x00); db(0x26); 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(0x15); db(0x7c); db(0x00); db(0x04);
+ db(0x00); db(0x04); db(0x42); db(0x2a); db(0x00); db(0x05); db(0x42); db(0x6a);
+ db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x20); db(0x47);
+ db(0x20); db(0x2d); db(0x00); db(0x16); db(0x32); db(0x28); db(0x00); db(0x30);
+ db(0xd2); db(0x41); db(0x90); db(0x41); db(0x35); db(0x40); db(0x00); db(0x0a);
+ db(0x20); db(0x2d); db(0x00); db(0x1a); db(0x32); db(0x28); db(0x00); db(0x2e);
+ db(0xd2); db(0x41); db(0x90); db(0x41); db(0x48); db(0xc0); db(0x35); db(0x40);
+ db(0x00); db(0x0c); db(0x22); db(0x6d); db(0x00); db(0x40); 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(0x00); db(0x40); 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(0x00); db(0x3c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0x00);
+ db(0xff); db(0x76); db(0x30); db(0x3a); db(0xfe); db(0xa4); db(0x48); db(0xc0);
+ db(0x32); db(0x3a); db(0xfe); db(0xa0); db(0x48); db(0xc1); db(0xb0); db(0x91);
+ db(0x66); db(0x00); db(0x00); db(0x0a); db(0xb2); db(0xa9); db(0x00); db(0x04);
+ db(0x67); db(0x00); db(0x00); db(0x18); db(0x23); db(0x41); db(0x00); db(0x04);
+ db(0x22); db(0x80); db(0x20); db(0x29); db(0x00); db(0x08); db(0x22); db(0x69);
+ db(0x00); db(0x0c); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae);
+ db(0xfe); db(0xbc); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00);
+ db(0x70); db(0x00); 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(0x55); db(0x41);
+ db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20);
+ db(0x68); db(0x61); db(0x63); db(0x6b); db(0x00); db(0x55); db(0x41); db(0x45);
+ db(0x20); db(0x66); db(0x69); db(0x6c); db(0x65); db(0x73); db(0x79); db(0x73);
+ db(0x74); db(0x65); db(0x6d); 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(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(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(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(0x00); db(0x00); db(0x03); db(0xf2);
 
index 5b367e40507f29dc74c7b2aa056e210e40ad55c4..06107798d81c54bd69cbbf67e2e55bed016f3e78 100755 (executable)
--- a/gencomp.c
+++ b/gencomp.c
@@ -96,7 +96,7 @@ read_counts (void)
        fscanf (file, "Total: %lu\n", &total);
        while (fscanf (file, "%lx: %lu %s\n", &opcode, &count, name) == 3)
        {
-           opcode_next_clev[nr] = 4;
+           opcode_next_clev[nr] = 5;
            opcode_last_postfix[nr] = -1;
            opcode_map[nr++] = opcode;
            counts[opcode] = count;
@@ -110,7 +110,7 @@ read_counts (void)
        if (table68k[opcode].handler == -1 && table68k[opcode].mnemo != i_ILLG
            && counts[opcode] == 0)
        {
-           opcode_next_clev[nr] = 4;
+           opcode_next_clev[nr] = 5;
            opcode_last_postfix[nr] = -1;
            opcode_map[nr++] = opcode;
            counts[opcode] = count;
@@ -3034,7 +3034,7 @@ generate_func (int noflags)
     using_exception_3 = 0;
     for (i = 0; i < 1; i++) /* We only do one level! */
     {
-       cpu_level = 6 - i;
+       cpu_level = 5 - i;
        postfix = i;
 
        if (noflags)
index cad0e3856829d2c484cf29de1db3397f7acef8be..9ae2a272ddd92ffb5ad57006d82520de9791bced 100755 (executable)
--- a/newcpu.c
+++ b/newcpu.c
@@ -66,14 +66,6 @@ int movem_index1[256];
 int movem_index2[256];
 int movem_next[256];
 
-#ifdef FPUEMU
-#if 0
-int fpp_movem_index1[256];
-int fpp_movem_index2[256];
-int fpp_movem_next[256];
-#endif
-#endif
-
 cpuop_func *cpufunctbl[65536];
 
 extern uae_u32 get_fpsr (void);
@@ -235,10 +227,12 @@ static void build_cpufunctbl (void)
            opcnt++;
        }
     }
-    write_log ("Building CPU, %d opcodes (%d %d %d). CPU=%d, FPU=%d, JIT=%d.\n",
+    write_log ("Building CPU, %d opcodes (%d %d %d)\n",
        opcnt, lvl,
-       currprefs.cpu_cycle_exact ? -1 : currprefs.cpu_compatible ? 1 : 0,
-       currprefs.address_space_24, currprefs.cpu_model, currprefs.fpu_model,
+       currprefs.cpu_cycle_exact ? -1 : currprefs.cpu_compatible ? 1 : 0, currprefs.address_space_24);
+    write_log ("CPU=%d, FPU=%d, JIT%s=%d.\n",
+       currprefs.cpu_model, currprefs.fpu_model,
+       currprefs.cachesize ? (currprefs.compfpu ? "=CPU/FPU" : "=CPU") : "",
        currprefs.cachesize);
 #ifdef JIT
     build_comp ();
@@ -331,19 +325,7 @@ void init_m68k (void)
        movem_index2[i] = 7-j;
        movem_next[i] = i & (~(1 << j));
     }
-#ifdef FPUEMU
-#if 0
-    for (i = 0 ; i < 256 ; i++) {
-       int j;
-       for (j = 7 ; j >= 0 ; j--) {
-               if (i & (1 << j)) break;
-       }
-       fpp_movem_index1[i] = 7-j;
-       fpp_movem_index2[i] = j;
-       fpp_movem_next[i] = i & (~(1 << j));
-    }
-#endif
-#endif
+
 #if COUNT_INSTRS
     {
        FILE *f = fopen (icountfilename (), "r");
index 51c879ce435605a4bdd58dfdb321b7586c67cf28..46ed389d7b6f09237f9d771459a749f6b2b49d76 100755 (executable)
@@ -15,9 +15,9 @@
 #define GETBDM(x) (((x) - ((x / 10000) * 10000)) / 100)
 #define GETBDD(x) ((x) % 100)
 
-#define WINUAEBETA 3
+#define WINUAEBETA 4
 #define WINUAEPUBLICBETA 1
-#define WINUAEDATE MAKEBD(2007, 9, 3)
+#define WINUAEDATE MAKEBD(2007, 9, 5)
 #define WINUAEEXTRA ""
 #define WINUAEREV ""
 
index c90887b61002819f47a56b3119819e91eaf80de6..dd7fddd734343098b30bc7a9f93cda5556d2e777 100755 (executable)
@@ -136,7 +136,7 @@ static void filesys_addexternals(void)
                    strcat(volumepath, ".");
                else
                    strcat(volumepath, "..");
-               add_filesys_unit (devname[0] ? devname : NULL, volumename, volumepath, !rw, 0, 0, 0, 0, 0, 0, 0, 0);
+               add_filesys_unit (devname[0] ? devname : NULL, volumename, volumepath, !rw, 0, 0, 0, 0, -20, 0, 0, 0);
            } /* if drivemask */
            dwDriveMask >>= 1;
        }
index 93d275c68965afcb3e41573294567b317d2cfd7b..320f7beb3212c0b8aecdc850ba181077238f026f 100755 (executable)
@@ -1,4 +1,18 @@
 
+Beta 4:
+
+- ACTION_EXAMINE_ALL_END implemented (forgot in b2..)
+- directory filesystem on the fly mount implemented without need for
+  spare empty devices. (I lied again, it was really simple after all..)
+  "empty slot" drives removed. USB memory sticks etc will always
+  mount on the fly automagically now. (if uae boot rom is available)
+  Device node ("RDHx") is never removed. My black magic skill level
+  is not high enough yet.
+  hardfiles next..
+- enable uae boot rom if chip ram > 2M enabled (KS does not
+  detect more than 2MB of chip, the rest is mapped by boot rom)
+- 68040/060 FPU was always interpreted (no JIT) (b1)
+
 Beta 3:
 
 - do not cause hard reset if PC was in memory area that disappears
@@ -22,6 +36,7 @@ Beta 3:
   really works as well as it can ever work.. No audio tracks and some
   Amiga CDs really need Amiga-side CDFS but it still is much easier
   to use..) Not really recommended if uaescsi.device is used..
+- compiled with MSVS 2005 again
 
 Beta 2: