From: Toni Wilen Date: Wed, 21 Jan 2009 10:45:02 +0000 (+0200) Subject: imported winuaesrc1600b9.zip X-Git-Tag: 2100~103 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=a41edef0fbada4203f5ed96ae10e56658e5e152f;p=francis%2Fwinuae.git imported winuaesrc1600b9.zip --- diff --git a/cfgfile.c b/cfgfile.c index eeabd91f..6dcfc36b 100644 --- a/cfgfile.c +++ b/cfgfile.c @@ -2870,7 +2870,7 @@ void default_prefs (struct uae_prefs *p, int type) p->config_hardware_path[0] = 0; p->config_host_path[0] = 0; - p->gfx_scandoubler = 0; + p->gfx_scandoubler = 1; p->start_gui = 1; p->start_debugger = 0; diff --git a/custom.c b/custom.c index b8a7bc84..b1df8edd 100644 --- a/custom.c +++ b/custom.c @@ -66,8 +66,6 @@ #define SPRBORDER 0 -void magic_centering (uae_u16, uae_u16, int); - STATIC_INLINE int nocustom(void) { if (picasso_on && currprefs.picasso96_nocustom) @@ -137,7 +135,7 @@ extern uae_u8* compiled_code; int vpos; int hack_vpos; -static uae_u16 lof; +static int lof; static int next_lineno, prev_lineno; static enum nln_how nextline_how; static int lof_changed = 0; @@ -226,8 +224,8 @@ uae_u8 cycle_line[256]; static uae_u16 bplxdat[8]; static uae_s16 bpl1mod, bpl2mod; - -static uaecptr bplpt[8], f_bplpt[8]; +static uaecptr prevbpl[2][MAXVPOS][8]; +static uaecptr bplpt[8], bplptx[8], f_bplpt[8]; /* Used as a debugging aid, to offset any bitplane temporarily. */ int bpl_off[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -627,15 +625,15 @@ static void add_modulos (void) switch (f_bplcon0_planes_limit) { #ifdef AGA - case 8: bplpt[7] += m2; - case 7: bplpt[6] += m1; + case 8: bplpt[7] += m2; bplptx[7] += m2; + case 7: bplpt[6] += m1; bplptx[6] += m1; #endif - case 6: bplpt[5] += m2; - case 5: bplpt[4] += m1; - case 4: bplpt[3] += m2; - case 3: bplpt[2] += m1; - case 2: bplpt[1] += m2; - case 1: bplpt[0] += m1; + case 6: bplpt[5] += m2; bplptx[5] += m2; + case 5: bplpt[4] += m1; bplptx[4] += m1; + case 4: bplpt[3] += m2; bplptx[3] += m2; + case 3: bplpt[2] += m1; bplptx[2] += m1; + case 2: bplpt[1] += m2; bplptx[1] += m2; + case 1: bplpt[0] += m1; bplptx[0] += m1; } } @@ -982,6 +980,7 @@ STATIC_INLINE void fetch (int nr, int fm) else mod = bpl1mod; bplpt[nr] += mod; + bplptx[nr] += mod; } } else if (isocs7planes ()) { fetched[nr] = bplxdat[nr]; @@ -1252,8 +1251,10 @@ STATIC_INLINE void long_fetch_ecs (int plane, int nwords, int weird_number_of_bi uae_u32 fetchval = fetched[plane]; uae_u32 *dataptr = (uae_u32 *)(line_data[next_lineno] + 2 * plane * MAX_WORDS_PER_LINE + 4 * out_offs); - if (dma) + if (dma) { bplpt[plane] += nwords * 2; + bplptx[plane] += nwords * 2; + } if (real_pt == 0) /* @@@ Don't do this, fall back on chipmem_wget instead. */ @@ -1314,8 +1315,10 @@ STATIC_INLINE void long_fetch_aga (int plane, int nwords, int weird_number_of_bi off1 = 2; offs -= off1 * 32; - if (dma) + if (dma) { bplpt[plane] += nwords * 2; + bplptx[plane] += nwords * 2; + } if (real_pt == 0) /* @@@ Don't do this, fall back on chipmem_wget instead. */ @@ -1461,6 +1464,7 @@ STATIC_INLINE void inc_bpl (int fm, int oe) if ((oe == 0) || (oe < 0 && (i & 1)) || (oe > 0 && !(i & 1))) { f_bplpt[i] = bplpt[i]; bplpt[i] += 2 << fm; + bplptx[i] += 2 << fm; } } } @@ -1679,6 +1683,16 @@ static void start_bpl_dma (int hpos, int hstart) { if (first_bpl_vpos < 0) first_bpl_vpos = vpos; + + if (doflickerfix () && !scandoubled_line) { + int i; + for (i = 0; i < 8; i++) { + prevbpl[lof][vpos][i] = bplptx[i]; + if (!lof && (bplcon0 & 4)) + bplpt[i] = prevbpl[1 - lof][vpos][i]; + } + } + fetch_bpl_params (); copy_bpl_params (hpos); fetch_start (hpos); @@ -1816,7 +1830,6 @@ static void record_color_change (int hpos, int regno, unsigned long value) static void record_register_change (int hpos, int regno, unsigned long value) { - //magic_centering (regno, value, vpos); if (regno == 0x100) { if (plfstate >= plf_end) return; @@ -2793,9 +2806,9 @@ STATIC_INLINE uae_u16 VPOSR (void) if (!(currprefs.chipset_mask & CSMASK_ECS_AGNUS)) vp &= 1; - vp = vp | lof | csbit; + vp = vp | (lof ? 0x8000 : 0) | csbit; #if 0 - write_log ("vposr %x at %x\n", vp, m68k_getpc (®s)); + write_log ("VPOSR %04x at %08x\n", vp, M68K_GETPC); #endif if (currprefs.cpu_model >= 68020) hsyncdelay (); @@ -2804,11 +2817,11 @@ STATIC_INLINE uae_u16 VPOSR (void) static void VPOSW (uae_u16 v) { #if 0 - write_log ("vposw %d PC=%08x\n", v, M68K_GETPC); + write_log ("VPOSW %d PC=%08x\n", v, M68K_GETPC); #endif - if (lof != (v & 0x8000)) + if (lof != ((v & 0x8000) ? 1 : 0)) lof_changed = 1; - lof = v & 0x8000; + lof = (v & 0x8000) ? 1 : 0; if ((v & 1) && vpos > 0) { hack_vpos = vpos + 1; if (hack_vpos > maxvpos) @@ -2831,6 +2844,12 @@ STATIC_INLINE uae_u16 VHPOSR (void) vp |= hp; if (currprefs.cpu_model >= 68020) hsyncdelay (); +#if 0 + write_log ("VPOS %04x %04x at %08x\n", VPOSR(), vp, M68K_GETPC); + if (M68K_GETPC == 0x40e6) { + activate_debugger(); + } +#endif return vp; } @@ -3161,6 +3180,7 @@ static void BPLxPTH (int hpos, uae_u16 v, int num) decide_line (hpos); decide_fetch (hpos); bplpt[num] = (bplpt[num] & 0x0000ffff) | ((uae_u32)v << 16); + bplptx[num] = (bplptx[num] & 0x0000ffff) | ((uae_u32)v << 16); //write_log ("%d:%d:BPL%dPTH %08X\n", hpos, vpos, num, v); } static void BPLxPTL (int hpos, uae_u16 v, int num) @@ -3174,6 +3194,7 @@ static void BPLxPTL (int hpos, uae_u16 v, int num) delta = 2 << f_fetchmode; } bplpt[num] = (bplpt[num] & 0xffff0000) | ((v + delta) & 0x0000fffe); + bplptx[num] = (bplptx[num] & 0xffff0000) | ((v + delta) & 0x0000fffe); //write_log ("%d:%d:BPL%dPTL %08X\n", hpos, vpos, num, v); } @@ -3312,7 +3333,6 @@ static void BPL1MOD (int hpos, uae_u16 v) return; decide_line (hpos); decide_fetch (hpos); - //magic_centering (0x108, v, vpos); bpl1mod = v; } @@ -3323,7 +3343,6 @@ static void BPL2MOD (int hpos, uae_u16 v) return; decide_line (hpos); decide_fetch (hpos); - //magic_centering (0x10a, v, vpos); bpl2mod = v; } @@ -3393,7 +3412,6 @@ static void DDFSTRT (int hpos, uae_u16 v) ddfstrt_old_vpos = vpos; ddfstrt = v; calcdiw (); - //magic_centering (0x92, v, vpos); if (ddfstop > 0xD4 && (ddfstrt & 4) == 4) { static int last_warned; last_warned = (last_warned + 1) & 4095; @@ -3414,7 +3432,6 @@ static void DDFSTOP (int hpos, uae_u16 v) decide_blitter (hpos); ddfstop = v; calcdiw (); - //magic_centering (0x94, v, vpos); if (fetch_state != fetch_not_started) estimate_last_fetch_cycle (hpos); if (ddfstop > 0xD4 && (ddfstrt & 4) == 4) { @@ -3429,7 +3446,6 @@ static void FMODE (uae_u16 v) { if (! (currprefs.chipset_mask & CSMASK_AGA)) v = 0; - //magic_centering (0x1fc, v, vpos); ddf_change = vpos; fmode = v; sprite_width = GET_SPRITEWIDTH (fmode); @@ -4368,7 +4384,7 @@ static void do_sprites (int hpos) if (vpos < sprite_vblank_endline) return; - if (doflickerfix () && !(next_lineno & 1)) + if (doflickerfix () && (next_lineno & 1)) return; #ifndef CUSTOM_SIMPLE @@ -4607,7 +4623,6 @@ static void fpscounter (void) static void vsync_handler (void) { - //magic_centering (0, 0, 0); fpscounter (); if (!isvsync () @@ -4648,7 +4663,7 @@ static void vsync_handler (void) INTREQ_d (0x8000 | 0x0020, 3); if (bplcon0 & 4) - lof ^= 0x8000; + lof ^= 1; #ifdef PICASSO96 picasso_handle_vsync (); @@ -4761,28 +4776,85 @@ static void CIA_vsync_prehandler (int dotod) ciavsync_counter++; } -static uaecptr prevbpl[2][MAXVPOS][8]; -static void hsync_scandoubler (int lof) +/* + +0 0 - +1 1 -- +2 2 - +3 3 -- +4 4 - +5 5 -- + +0 x - +1 0 -- +2 1 - +3 2 -- +4 3 - +5 4 -- + +*/ + +static void hsync_scandoubler (void) { - int i; + int i, idx1; + struct draw_info *dip1; + uaecptr bpltmp[8], bpltmpx[8]; + + next_lineno++; + scandoubled_line = 1; for (i = 0; i < 8; i++) { - prevbpl[lof][vpos][i] = bplpt[i]; - bplpt[i] = prevbpl[1 - lof][vpos - lof][i]; + int diff; + bpltmp[i] = bplpt[i]; + bpltmpx[i] = bplptx[i]; + diff = prevbpl[lof][vpos][i] - prevbpl[1 - lof][vpos][i]; + if (lof) { + if (bplcon0 & 4) + bplpt[i] = prevbpl[lof][vpos][i] - diff; + } else { + if (bplcon0 & 4) + bplpt[i] = prevbpl[lof][vpos][i]; + else + bplpt[i] = bplpt[i] - diff; + + } } - next_lineno++; - scandoubled_line = 1; reset_decisions (); plfstate = plf_idle; + + // copy color changes + dip1 = curr_drawinfo + next_lineno - 1; + for (idx1 = dip1->first_color_change; idx1 < dip1->last_color_change; idx1++) { + struct color_change *cs2 = &curr_color_changes[idx1]; + int regno = cs2->regno; + int hpos = cs2->linepos; + if (regno < 0x1000 && hpos < HBLANK_OFFSET && !(beamcon0 & 0x80) && prev_lineno >= 0) { + struct draw_info *pdip = curr_drawinfo + next_lineno - 1; + int idx = pdip->last_color_change; + pdip->last_color_change++; + pdip->nr_color_changes++; + curr_color_changes[idx].linepos = hpos + maxhpos + 1; + curr_color_changes[idx].regno = regno; + curr_color_changes[idx].value = cs2->value; + curr_color_changes[idx + 1].regno = -1; + } else { + struct color_change *cs1 = &curr_color_changes[next_color_change]; + memcpy (cs1, cs2, sizeof (struct color_change)); + next_color_change++; + } + } + curr_color_changes[next_color_change].regno = -1; + finish_decisions (maxhpos); hsync_record_line_state (next_lineno, nln_normal, thisline_changed); hardware_line_completed (next_lineno); scandoubled_line = 0; - next_lineno--; - for (i = 0; i < 8; i++) - bplpt[i] = prevbpl[lof][vpos][i]; + for (i = 0; i < 8; i++) { + bplpt[i] = bpltmp[i]; + bplptx[i] = bpltmpx[i]; + } } static void hsync_handler (void) @@ -4870,17 +4942,15 @@ static void hsync_handler (void) cycle_diagram_free_cycles[f_fetchmode][GET_RES (f_bplcon0)][GET_PLANES_LIMIT (f_bplcon0)]); } hardware_line_completed (next_lineno); - if (doflickerfix ()) { - hsync_scandoubler (lof ? 1 : 0); - next_lineno++; - } + if (doflickerfix ()) + hsync_scandoubler (); } /* In theory only an equality test is needed here - but if a program goes haywire with the VPOSW register, it can cause us to miss this, with vpos going into the thousands (and all the nasty consequences this has). */ - if (++vpos >= (maxvpos + (lof == 0 ? 0 : 1))) { + if (++vpos >= maxvpos + lof) { if ((bplcon0 & 8) && !lightpen_triggered) { vpos_lpen = vpos - 1; hpos_lpen = maxhpos; @@ -4924,7 +4994,7 @@ static void hsync_handler (void) } } else { #endif - is_lastline = vpos + 1 == maxvpos + (lof == 0 ? 0 : 1) && currprefs.m68k_speed == -1; + is_lastline = vpos + 1 == maxvpos + lof && currprefs.m68k_speed == -1; #ifdef JIT } #endif @@ -4936,8 +5006,6 @@ static void hsync_handler (void) nextline_how = nln_normal; if (doflickerfix ()) { lineno *= 2; - if (!lof) - lineno++; } else if (currprefs.gfx_linedbl && (doublescan <= 0 || interlace_seen > 0)) { lineno *= 2; nextline_how = currprefs.gfx_linedbl == 1 ? nln_doubled : nln_nblack; @@ -5322,6 +5390,9 @@ void customreset (int hardreset) if (hardreset) rtc_hardreset(); + + picasso_reset (); + target_reset (); } void dumpcustom (void) @@ -5894,7 +5965,7 @@ uae_u8 *restore_custom (uae_u8 *src) dsklen = RW; /* 024 DSKLEN */ RW; /* 026 DSKDAT */ RW; /* 028 REFPTR */ - lof = RW; /* 02A VPOSW */ + lof = RW ? 1 : 0; /* 02A VPOSW */ RW; /* 02C VHPOSW */ COPCON(RW); /* 02E COPCON */ RW; /* 030 SERDAT* */ @@ -5948,7 +6019,7 @@ uae_u8 *restore_custom (uae_u8 *src) intreq = intreqr = RW | 0x20; /* 09C INTREQ */ adkcon = RW; /* 09E ADKCON */ for (i = 0; i < 8; i++) - bplpt[i] = RL; + bplptx[i] = bplpt[i] = RL; bplcon0 = RW; /* 100 BPLCON0 */ bplcon1 = RW; /* 102 BPLCON1 */ bplcon2 = RW; /* 104 BPLCON2 */ @@ -6046,7 +6117,7 @@ uae_u8 *save_custom (int *len, uae_u8 *dstptr, int full) SW (dsklen); /* 024 DSKLEN */ SW (0); /* 026 DSKDAT */ SW (0); /* 028 REFPTR */ - SW (lof); /* 02A VPOSW */ + SW (lof ? 0x8001 : 0); /* 02A VPOSW */ SW (0); /* 02C VHPOSW */ SW (copcon); /* 02E COPCON */ SW (serper); /* 030 SERDAT * */ diff --git a/debug.c b/debug.c index 5739006b..44293d9a 100644 --- a/debug.c +++ b/debug.c @@ -124,8 +124,7 @@ static char help[] = { " Search for string/bytes\n" " T Show exec tasks and their PCs\n" " b Step to previous state capture position\n" - " am Enable or disable audio channels\n" - " sm Enable or disable sprites\n" + " M Enable or disable audio channels, bitplanes or sprites\n" " sp [] Dump sprite information\n" " di [] Break on disk access. R=DMA read,W=write,RW=both,P=PIO\n" " Also enables level 1 disk logging\n" @@ -2680,11 +2679,6 @@ static void debug_1 (void) smc_detect_init (&inptr); else smc_free (); - } else { - next_char (&inptr); - if (more_params (&inptr)) - debug_sprite_mask = readhex (&inptr); - console_out_f ("sprite mask: %02X\n", debug_sprite_mask); } } else { searchmem (&inptr); @@ -2826,6 +2820,32 @@ static void debug_1 (void) m68k_setpc (®s, oldpc); } break; + case 'M': + if (more_params (&inptr)) { + switch (next_char (&inptr)) + { + case 'a': + if (more_params (&inptr)) + audio_channel_mask = readhex (&inptr); + console_out_f ("Audio mask = %02X\n", audio_channel_mask); + break; + case 's': + if (more_params (&inptr)) + debug_sprite_mask = readhex (&inptr); + console_out_f ("sprite mask: %02X\n", debug_sprite_mask); + break; + case 'b': + if (more_params (&inptr)) { + debug_bpl_mask = readhex (&inptr) & 0xff; + if (more_params (&inptr)) + debug_bpl_mask_one = readhex (&inptr) & 0xff; + notice_screen_contents_lost (); + } + console_out_f ("bitplane mask: %02X (%02X)\n", debug_bpl_mask, debug_bpl_mask_one); + break; + } + } + break; case 'm': { uae_u32 maddr; @@ -2876,16 +2896,6 @@ static void debug_1 (void) if (staterecorder (&inptr)) return; break; - case 'a': - if (more_params (&inptr)) { - char nc = next_char (&inptr); - if (nc == 'm') { - if (more_params (&inptr)) - audio_channel_mask = readint (&inptr); - console_out_f ("Audio mask = %02X\n", audio_channel_mask); - } - } - break; case 'h': case '?': if (more_params (&inptr)) @@ -2919,7 +2929,7 @@ void debug (void) return; bogusframe = 1; - addhistory(); + addhistory (); #if 0 if (do_skip && skipaddr_start == 0xC0DEDBAD) { @@ -2942,10 +2952,13 @@ void debug (void) if (!memwatch_triggered) { if (do_skip) { - uae_u32 pc = munge24 (m68k_getpc (®s)); - uae_u16 opcode = (currprefs.cpu_compatible || currprefs.cpu_cycle_exact) ? regs.ir : get_word (pc); + uae_u32 pc; + uae_u16 opcode; int bp = 0; + pc = munge24 (m68k_getpc (®s)); + opcode = (currprefs.cpu_compatible || currprefs.cpu_cycle_exact) ? regs.ir : get_word (pc); + for (i = 0; i < BREAKPOINT_TOTAL; i++) { if (!bpnodes[i].enabled) continue; @@ -2955,6 +2968,7 @@ void debug (void) break; } } + if (skipaddr_doskip) { if (skipaddr_start == pc) bp = 1; diff --git a/drawing.c b/drawing.c index b30d49b7..444869c8 100644 --- a/drawing.c +++ b/drawing.c @@ -55,6 +55,8 @@ extern int sprite_buffer_res; int lores_factor, lores_shift; +int debug_bpl_mask = 0xff, debug_bpl_mask_one; + static void lores_reset (void) { lores_factor = currprefs.gfx_resolution ? 2 : 1; @@ -154,6 +156,9 @@ union sps_union spixstate; static uae_u32 ham_linebuf[MAX_PIXELS_PER_LINE * 2]; static uae_u8 *real_bplpt[8]; +static uae_u8 all_ones[MAX_PIXELS_PER_LINE]; +static uae_u8 all_zeros[MAX_PIXELS_PER_LINE]; + uae_u8 *xlinebuffer; static int *amiga2aspect_line_map, *native2amiga_line_map; @@ -364,7 +369,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy) dx = 1; dbl2 = dbl1 = currprefs.gfx_linedbl ? 1 : 0; - if (doublescan && interlace_seen <= 0) { + if (doublescan > 0 && interlace_seen <= 0) { dbl1--; dbl2--; } @@ -375,7 +380,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy) if (w == 0 || h == 0) return 0; - if (!doublescan) { + if (doublescan <= 0) { if ((w >> currprefs.gfx_resolution) < MIN_DISPLAY_W) w = MIN_DISPLAY_W << currprefs.gfx_resolution; if ((h >> dbl1) < MIN_DISPLAY_H) { @@ -399,7 +404,7 @@ int get_custom_limits (int *pw, int *ph, int *pdx, int *pdy) if (w <= 0 || h <= 0 || dx <= 0 || dy <= 0) return ret; - if (!doublescan) { + if (doublescan <= 0) { if (dx > gfxvidinfo.width / 3) return ret; if (dy > gfxvidinfo.height / 3) @@ -458,7 +463,7 @@ void get_custom_mouse_limits (int *pw, int *ph, int *pdx, int *pdy, int dbl) dx = xshift (dx, res_shift); dbl2 = dbl1 = currprefs.gfx_linedbl ? 1 : 0; - if ((doublescan || interlace_seen > 0) && !dbl) { + if ((doublescan > 0 || interlace_seen > 0) && !dbl) { dbl1--; dbl2--; } @@ -1434,6 +1439,9 @@ static void gen_pfield_tables (void) | (((i & 48) && (i & 192)) << 14)); } + + memset (all_ones, 0xff, MAX_PIXELS_PER_LINE); + } /* When looking at this function and the ones that inline it, bear in mind @@ -1616,7 +1624,7 @@ static void pfield_doline (int lineno) uae_u32 *data = pixdata.apixels_l + MAX_PIXELS_PER_LINE / 4; #ifdef SMART_UPDATE -#define DATA_POINTER(n) (line_data[lineno] + (n) * MAX_WORDS_PER_LINE * 2) +#define DATA_POINTER(n) ((debug_bpl_mask & (1 << n)) ? (line_data[lineno] + (n) * MAX_WORDS_PER_LINE * 2) : (debug_bpl_mask_one ? all_ones : all_zeros)) real_bplpt[0] = DATA_POINTER (0); real_bplpt[1] = DATA_POINTER (1); real_bplpt[2] = DATA_POINTER (2); @@ -2075,9 +2083,8 @@ static void pfield_draw_line (int lineno, int gfx_ypos, int follow_ypos) if (dosprites) { int i; - for (i = 0; i < dip_for_drawing->nr_sprites; i++) { + for (i = 0; i < dip_for_drawing->nr_sprites; i++) draw_sprites_aga (curr_sprite_entries + dip_for_drawing->first_sprite_entry + i, 1); - } do_color_changes (pfield_do_fill_line, pfield_do_linetoscr); } else { @@ -2346,7 +2353,7 @@ STATIC_INLINE void putpixel (uae_u8 *buf, int bpp, int x, xcolnr c8, int opaq) case 4: { int i; - if (opaq || currprefs.gfx_filter == 0) { + if (1 || opaq || currprefs.gfx_filter == 0) { uae_u32 *p = (uae_u32*)buf + x; *p = c8; } else { @@ -2949,37 +2956,3 @@ void drawing_init (void) reset_drawing (); } -#include "crc32.h" -void magic_centering (uae_u16 regno, uae_u16 value, int vpos) -{ -#if 0 - static uae_u32 crc; - static uae_u32 prevcrc; - static int count; - uae_u16 v; - - if (!regno) { - if (count > 0) { - count--; - if (count == 0) { - write_log ("**** CHANGED ****\n"); - } - } - if (crc != 0 && crc != prevcrc && count == 0) { - count = 3; - prevcrc = crc; - } - crc = 0; - return; - } - v = regno; - crc = get_crc32_val (v >> 8, crc); - crc = get_crc32_val (v, crc); - if (regno == 0x92 || regno == 0x94) - return; - v = value; - crc = get_crc32_val (v >> 8, crc); - crc = get_crc32_val (v, crc); -#endif -} - diff --git a/filesys.c b/filesys.c index dfee0a10..59b3ea99 100644 --- a/filesys.c +++ b/filesys.c @@ -50,6 +50,7 @@ #include "bsdsocket.h" #include "uaeresource.h" #include "inputdevice.h" +#include "clipboard.h" #define TRACING_ENABLED 0 #if TRACING_ENABLED @@ -5404,10 +5405,22 @@ static uae_u32 REGPARAM2 filesys_dev_storeinfo (TrapContext *context) static uae_u32 REGPARAM2 mousehack_done (TrapContext *context) { int mode = m68k_dreg (&context->regs, 1); - uaecptr diminfo = m68k_areg (&context->regs, 2); - uaecptr dispinfo = m68k_areg (&context->regs, 3); - uaecptr vp = m68k_areg (&context->regs, 4); - input_mousehack_status (mode, diminfo, dispinfo, vp); + if (mode < 10) { + uaecptr diminfo = m68k_areg (&context->regs, 2); + uaecptr dispinfo = m68k_areg (&context->regs, 3); + uaecptr vp = m68k_areg (&context->regs, 4); + input_mousehack_status (mode, diminfo, dispinfo, vp); + } else if (mode == 10) { + amiga_clipboard_init (); + } else if (mode == 11) { + amiga_clipboard_got_data (m68k_areg (&context->regs, 2), m68k_dreg (&context->regs, 2), m68k_dreg (&context->regs, 0) + 8); + } else if (mode == 12) { + amiga_clipboard_want_data (); + } else if (mode == 13) { + return amiga_clipboard_proc_start (); + } else if (mode == 14) { + amiga_clipboard_task_start (m68k_dreg (&context->regs, 0)); + } return 1; } diff --git a/filesys_bootrom.c b/filesys_bootrom.c index 1014d6bb..023dc47a 100644 --- a/filesys_bootrom.c +++ b/filesys_bootrom.c @@ -1,15 +1,15 @@ db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); - db(0x60); db(0x00); db(0x09); db(0x6a); db(0x00); db(0x00); db(0x07); db(0x48); - db(0x00); db(0x00); db(0x00); db(0x30); db(0x00); db(0x00); db(0x01); db(0x74); - db(0x00); db(0x00); db(0x00); db(0x1c); db(0x00); db(0x00); db(0x02); db(0x30); - db(0x00); db(0x00); db(0x0d); db(0x38); db(0x43); db(0xfa); db(0x12); db(0xb7); + db(0x60); db(0x00); db(0x09); db(0x8e); db(0x00); db(0x00); db(0x07); db(0x6c); + db(0x00); db(0x00); db(0x00); db(0x30); db(0x00); db(0x00); db(0x01); db(0x8c); + db(0x00); db(0x00); db(0x00); db(0x1c); db(0x00); db(0x00); db(0x02); db(0x48); + db(0x00); db(0x00); db(0x0d); db(0x5c); db(0x43); db(0xfa); db(0x14); db(0xd3); 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(0x0b); db(0x66); - db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x12); db(0xc0); db(0x70); db(0x24); + db(0x30); db(0x3c); db(0xff); db(0xfc); db(0x61); db(0x00); db(0x0b); db(0x8a); + db(0x2a); db(0x50); db(0x43); db(0xfa); db(0x14); db(0xdc); db(0x70); db(0x24); db(0x7a); db(0x01); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); - db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x12); db(0xb0); db(0x70); db(0x00); + db(0x66); db(0x0c); db(0x43); db(0xfa); db(0x14); db(0xcc); db(0x70); db(0x00); db(0x7a); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x28); db(0x40); db(0x4a); db(0xad); db(0x01); db(0x0c); db(0x67); db(0x5a); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); db(0x22); db(0x3c); db(0x00); db(0x01); @@ -17,7 +17,7 @@ db(0x27); db(0x4c); db(0x01); db(0x9c); db(0x7c); db(0x00); db(0xbc); db(0xad); db(0x01); db(0x0c); db(0x64); db(0x2c); db(0x2f); db(0x06); db(0x7e); db(0x01); db(0x4a); db(0x45); db(0x67); db(0x04); db(0x08); db(0xc7); db(0x00); db(0x02); - db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00); db(0x06); db(0xb2); + db(0x2f); db(0x0b); db(0x20); db(0x4b); db(0x61); db(0x00); db(0x06); db(0xd6); 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(0xdc); db(0x2c); db(0x1f); db(0x52); db(0x46); db(0x60); db(0xce); @@ -25,31 +25,34 @@ db(0x00); db(0x00); db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e); 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(0x0a); db(0xd4); db(0x4e); db(0x90); db(0x72); db(0x03); db(0x74); db(0xf6); + db(0x0a); db(0xf8); 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(0x11); db(0xbb); - db(0x43); db(0xfa); db(0x00); db(0x1c); db(0x70); db(0x0a); db(0x61); db(0x00); - db(0x0b); db(0x88); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); - db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xa0); 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(0x0d); - db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x43); db(0xfa); db(0x11); db(0xb7); - 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(0x11); db(0x8e); - db(0x22); db(0x08); db(0x74); db(0x0f); db(0x41); db(0xfa); db(0x00); db(0x22); - 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(0x4e); db(0xae); db(0xfd); db(0x96); db(0x41); db(0xfa); db(0x13); db(0xd7); + db(0x43); db(0xfa); db(0x00); db(0x54); db(0x70); db(0x0a); db(0x61); db(0x00); + db(0x0b); db(0xac); db(0x22); db(0x40); db(0x72); db(0x01); db(0x30); db(0x3c); + db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0xc4); db(0x4e); db(0x90); + db(0x4c); db(0xdf); db(0x7f); db(0xff); db(0x4e); db(0x75); db(0x48); db(0xe7); + db(0x38); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x24); db(0x00); + db(0x28); db(0x01); db(0x26); db(0x09); db(0x24); db(0x48); db(0x43); db(0xfa); + db(0x13); db(0xd1); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); + db(0x4a); db(0x80); db(0x67); db(0x14); db(0x2c); db(0x40); db(0x22); db(0x0a); + db(0xe4); db(0x8b); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); - db(0x60); db(0xbc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); + db(0x4c); db(0xdf); db(0x44); db(0x1c); db(0x4e); db(0x75); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); + db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x41); db(0xfa); db(0x13); db(0x82); + db(0x43); db(0xfa); db(0x00); db(0x16); db(0x70); db(0x0f); db(0x22); db(0x3c); + db(0x00); db(0x00); db(0x1f); db(0x40); db(0x61); db(0x00); db(0xff); db(0xa8); + db(0x60); db(0xdc); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); db(0x00); db(0x00); db(0x00); db(0x00); db(0x72); db(0x02); db(0x30); db(0x3c); - db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0x40); db(0x4e); db(0x90); - db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x07); db(0x86); + db(0xff); db(0x48); db(0x61); db(0x00); db(0x0a); db(0x4c); db(0x4e); db(0x90); + db(0x22); db(0x00); db(0x6b); db(0x04); db(0x61); db(0x00); db(0x07); db(0x92); 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(0x0a); db(0x26); + db(0x30); db(0x3c); db(0xff); db(0x50); db(0x61); db(0x00); db(0x0a); db(0x32); 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(0x0a); db(0x10); db(0x70); db(0x02); + db(0xff); db(0x50); db(0x61); db(0x00); db(0x0a); db(0x1c); 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); @@ -67,550 +70,615 @@ 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(0x09); db(0x82); db(0x70); db(0x04); db(0x4e); db(0x90); + db(0x61); db(0x00); db(0x09); db(0x8e); 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(0x10); db(0x56); db(0x23); db(0x48); + db(0x22); db(0x40); db(0x41); db(0xfa); db(0x12); db(0x5a); 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(0x30); db(0x3a); - db(0x0a); db(0xd0); db(0x67); db(0x04); db(0x61); db(0x00); db(0x0a); db(0x6e); - 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(0x0f); db(0xe6); 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(0x0f); db(0x38); - 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(0x0f); db(0x0e); db(0x25); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); - db(0x0e); db(0x8a); 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(0x7c); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e); - db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e); - db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff); - db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00); - db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08); - db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x08); db(0x07); db(0x00); db(0x01); - db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c); - db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4); - db(0x4e); db(0xae); db(0xfd); db(0x5a); db(0x72); db(0x0e); db(0x4e); db(0xae); - db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00); - db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00); - db(0x00); db(0xac); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); - db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb); - db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00); - db(0x00); db(0x94); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); - db(0x40); db(0x80); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x01); db(0x22); - db(0x2e); db(0x00); db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x0c); db(0x6e); - db(0x00); db(0x25); db(0x00); db(0x14); db(0x65); db(0x3e); db(0x72); db(0x0e); - db(0x4e); db(0xae); db(0xfd); db(0x66); db(0x02); db(0x80); db(0xff); db(0xff); - db(0xff); db(0xfe); db(0x67); db(0x62); db(0x08); db(0x07); db(0x00); db(0x00); - db(0x67); db(0x0a); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x22); db(0x08); - db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x08); db(0x07); db(0x00); db(0x01); - db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c); - db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x22); db(0x2b); db(0x00); db(0xb4); - db(0x4e); db(0xae); db(0xfd); db(0x60); db(0x72); db(0x0e); db(0x4e); db(0xae); - db(0xfd); db(0x6c); db(0x60); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x08); db(0x07); db(0x00); db(0x00); - db(0x67); db(0x08); db(0x41); db(0xeb); db(0x00); db(0x20); db(0x61); db(0x00); - db(0x00); db(0x44); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); - db(0x4a); db(0x2b); db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b); - db(0x00); db(0x9e); db(0x20); db(0x6b); db(0x00); db(0xb4); db(0x61); db(0x00); - db(0x00); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4c); db(0xdf); - db(0x44); db(0x80); db(0x4e); db(0x75); db(0x22); db(0x48); db(0x20); db(0x6b); - db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68); - db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0xa8); - db(0x00); db(0x04); db(0x20); db(0x09); db(0xe4); db(0x88); db(0x21); db(0x40); - db(0x00); db(0x04); db(0x4e); db(0x75); db(0x24); db(0x48); db(0x20); db(0x6b); - db(0x00); db(0xa0); db(0x20); db(0x68); db(0x00); db(0x22); db(0x20); db(0x68); - db(0x00); db(0x18); db(0xd1); db(0xc8); db(0xd1); db(0xc8); db(0x22); db(0x68); - db(0x00); db(0x04); db(0xd3); db(0xc9); db(0xd3); db(0xc9); db(0xb3); db(0xca); - db(0x66); db(0x06); db(0x21); db(0x52); db(0x00); db(0x04); db(0x60); db(0x18); - db(0x20); db(0x09); db(0x67); db(0x0e); db(0x20); db(0x11); db(0xd0); db(0x80); - db(0xd0); db(0x80); db(0xb5); db(0xc0); db(0x67); db(0x04); db(0x22); db(0x40); - db(0x60); db(0xee); db(0x20); db(0x09); db(0x67); db(0x02); db(0x22); db(0x92); - db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x74); db(0x16); - db(0x9f); db(0xc2); db(0x24); db(0x4f); db(0x32); db(0x02); db(0x42); db(0x32); - db(0x10); db(0xff); db(0x53); db(0x41); db(0x66); db(0xf8); db(0x2c); db(0x78); - db(0x00); db(0x04); db(0x72); db(0x0f); db(0x4a); db(0x80); db(0x67); db(0x02); - db(0x72); db(0x10); db(0x15); db(0x41); db(0x00); db(0x04); db(0x35); db(0x7c); - db(0x08); db(0x00); db(0x00); db(0x08); db(0x22); db(0x6b); db(0x00); db(0xa4); - db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); - db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); - db(0x00); db(0x28); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); - db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a); - db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); - db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x22); db(0x6b); db(0x00); db(0xa8); - db(0x25); db(0x69); db(0x00); db(0x20); db(0x00); db(0x0e); db(0x25); db(0x69); - db(0x00); db(0x24); db(0x00); db(0x12); db(0x22); db(0x6b); db(0x00); db(0xa4); - db(0x4e); db(0xae); db(0xfe); db(0x38); db(0xdf); db(0xc2); db(0x4c); db(0xdf); - db(0x44); db(0x04); db(0x4e); db(0x75); db(0x4a); db(0x00); db(0x67); db(0x26); - db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x66); db(0x36); db(0x70); db(0x00); - db(0x4a); db(0x33); db(0x00); db(0x4d); db(0x67); db(0x04); db(0x52); db(0x00); - db(0x60); db(0xf6); db(0x17); db(0x40); db(0x00); db(0x4c); db(0x67); db(0x24); - db(0x20); db(0x01); db(0x61); db(0x00); db(0xfd); db(0xf2); db(0x70); db(0x01); - db(0x61); db(0x00); db(0xff); db(0x60); db(0x60); db(0x16); db(0x4a); db(0x2b); - db(0x00); db(0x4c); db(0x67); db(0x10); db(0x42); db(0x2b); db(0x00); db(0x4c); - db(0x20); db(0x01); db(0x61); db(0x00); db(0xfe); db(0x68); db(0x70); db(0x00); - db(0x61); db(0x00); db(0xff); db(0x48); db(0x4e); db(0x75); db(0x4a); db(0xac); - db(0x00); db(0x14); db(0x67); db(0x0a); db(0x70); db(0x00); db(0x72); db(0x01); - db(0x61); db(0x00); db(0xff); db(0xb2); db(0x4e); db(0x75); db(0x70); db(0x01); - db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0xa8); db(0x4e); db(0x75); - db(0x10); db(0x2b); db(0x00); db(0xac); db(0x6b); db(0x0a); db(0x70); db(0x01); - db(0x72); db(0x03); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); - db(0x72); db(0x01); db(0x0c); db(0x00); db(0x00); db(0xfe); db(0x66); db(0x02); - db(0x72); db(0x03); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x86); - db(0x4e); db(0x75); db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); - db(0x67); db(0x0c); db(0x4a); db(0xa8); db(0x00); db(0x08); db(0x66); db(0x0a); - db(0x4a); db(0xa8); db(0x00); db(0x0c); db(0x66); db(0x04); db(0x70); db(0x01); - db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2a); db(0x48); - db(0x24); db(0x6c); db(0x00); db(0x18); db(0x2e); db(0x15); db(0x7a); db(0x00); - db(0x4a); db(0x87); db(0x67); db(0x70); db(0x20); db(0x0a); db(0x67); db(0x6c); - db(0x7c); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x08); db(0x67); db(0x12); - db(0x24); db(0x2a); db(0x00); db(0x04); db(0x2c); db(0x6b); db(0x00); db(0xa0); - db(0x4e); db(0xae); db(0xfc); db(0x34); db(0x4a); db(0x80); db(0x66); db(0x02); - db(0x50); db(0xc6); db(0x22); db(0x2d); db(0x00); db(0x0c); db(0x67); db(0x1c); - db(0x20); db(0x41); db(0x22); db(0x4a); db(0x2f); db(0x0a); db(0x45); db(0xec); - db(0x00); db(0x20); db(0x48); db(0x7a); db(0x00); db(0x08); db(0x2f); db(0x28); - db(0x00); db(0x08); db(0x4e); db(0x75); db(0x24); db(0x5f); db(0x4a); db(0x80); - db(0x66); db(0x02); db(0x50); db(0xc6); db(0x4a); db(0x06); db(0x67); db(0x24); - db(0x20); db(0x2a); db(0x00); db(0x04); db(0x90); db(0x8a); db(0x4a); db(0x92); - db(0x66); db(0x0a); db(0x20); db(0x05); db(0x67); db(0x10); db(0x20); db(0x40); - db(0x42); db(0x90); db(0x60); db(0x0a); db(0x20); db(0x52); db(0x22); db(0x4a); - db(0x22); db(0xd8); db(0x59); db(0x80); db(0x6a); db(0xfa); db(0x53); db(0x95); - db(0x53); db(0x87); db(0x60); db(0x94); db(0x2a); db(0x0a); db(0x24); db(0x52); - db(0x53); db(0x87); db(0x60); db(0x8c); db(0x4c); db(0xdf); db(0x7c); db(0xfc); - db(0x20); db(0x6c); db(0x00); db(0x24); db(0x4a); db(0x90); db(0x4e); db(0x75); - db(0x61); db(0x00); db(0xfc); db(0x7c); 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(0x04); db(0x4c); db(0x2a); db(0x50); db(0x30); db(0x3c); db(0xff); db(0x28); - db(0x61); db(0x00); db(0x04); db(0x42); db(0x22); db(0x48); db(0x20); db(0x5f); - db(0x42); db(0xa8); db(0x01); db(0x90); db(0x42); db(0xa8); db(0x01); db(0x94); - db(0x4e); db(0x91); db(0x26); db(0x00); db(0x0c); db(0x43); db(0xff); db(0xfe); - db(0x67); db(0x00); db(0xf9); db(0x92); db(0x20); db(0x28); db(0x01); db(0x90); - db(0x67); db(0x14); db(0x6b); db(0x12); db(0x2f); db(0x08); db(0x72); db(0x01); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x20); db(0x5f); db(0x21); db(0x40); db(0x01); db(0x94); db(0x4a); db(0x83); - db(0x6a); db(0x0e); db(0x22); db(0x48); db(0x30); db(0x3c); db(0xff); db(0x20); - db(0x61); db(0x00); db(0x04); db(0x02); 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(0x03); db(0xe8); 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(0xfa); db(0xf2); 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(0xfa); db(0x7c); db(0x4a); db(0x83); db(0x6b); db(0x00); - db(0xf9); db(0x0c); db(0x30); db(0x3c); db(0xff); db(0x18); db(0x61); db(0x00); - db(0x03); db(0x9c); 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(0x17); db(0x70); db(0x00); db(0x14); db(0x41); db(0xfa); - db(0xf7); db(0xdc); db(0x20); db(0x08); 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(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x3a); 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(0x70); db(0x00); db(0x4e); db(0x75); - db(0x24); db(0x49); db(0x20); db(0x4b); db(0x72); db(0x00); db(0x22); db(0x41); - db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x08); db(0x08); db(0x07); - db(0x00); db(0x02); db(0x67); db(0x02); db(0x72); db(0x01); db(0x70); db(0xec); - db(0x2c); db(0x4c); db(0x4e); db(0xae); db(0xff); db(0x6a); db(0x08); db(0x07); - db(0x00); db(0x01); db(0x67); db(0x5c); db(0x08); db(0x07); db(0x00); db(0x02); - db(0x66); db(0x56); db(0x20); db(0x52); db(0x74); db(0x02); db(0x52); db(0x82); - db(0x4a); db(0x30); db(0x28); db(0xfd); db(0x66); db(0xf8); db(0x2c); db(0x78); - db(0x00); db(0x04); db(0x20); db(0x02); db(0x72); db(0x01); db(0x4e); db(0xae); - db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x3a); db(0x20); db(0x52); - db(0x24); db(0x40); db(0x22); db(0x4a); db(0x12); db(0xd8); db(0x66); db(0xfc); - db(0x13); db(0x7c); db(0x00); db(0x3a); db(0xff); db(0xff); db(0x42); db(0x11); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0a); db(0x07); - db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x2c); db(0x40); - db(0x22); db(0x0a); db(0x4e); db(0xae); db(0xff); db(0x52); db(0x22); db(0x4e); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xfe); db(0x62); - db(0x22); db(0x4a); db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); - db(0x70); db(0x00); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x3f); db(0x3e); - db(0x2c); db(0x01); db(0x7e); db(0x06); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x43); db(0xfa); db(0x0a); db(0x02); db(0x70); db(0x24); db(0x4e); db(0xae); - db(0xfd); db(0xd8); db(0x4a); db(0x80); db(0x66); db(0x0e); db(0x08); db(0x87); - db(0x00); db(0x02); db(0x43); db(0xfa); db(0x09); db(0xf0); 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(0x4a); db(0x80); db(0x67); db(0x2c); db(0x21); db(0x4c); db(0x01); db(0x9c); - db(0x48); db(0xe7); db(0x00); db(0x8a); db(0x61); db(0x00); db(0xfe); db(0x0a); - db(0x4c); db(0xdf); db(0x51); db(0x00); db(0x0c); db(0x80); db(0xff); db(0xff); - db(0xff); db(0xfe); db(0x67); db(0x08); db(0x48); db(0x46); db(0x52); db(0x46); - db(0x48); db(0x46); db(0x60); db(0xe4); db(0x22); db(0x48); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x02); db(0x2c); db(0x4e); db(0xae); db(0xff); db(0x2e); - db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x4c); db(0xdf); - db(0x7c); db(0xfc); db(0x4e); db(0x75); db(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(0x09); db(0x57); - 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(0x26); db(0x40); db(0x7c); db(0x00); db(0x26); db(0x86); db(0x27); db(0x46); - db(0x00); db(0x04); db(0x27); db(0x46); db(0x00); db(0x08); db(0x27); db(0x4a); - db(0x00); db(0xa0); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x93); db(0xc9); - db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x27); db(0x40); db(0x00); db(0xb0); - db(0x41); db(0xfa); db(0x08); db(0xa4); db(0x70); db(0x00); db(0x72); db(0x00); - db(0x61); db(0x00); db(0x02); db(0x84); db(0x27); db(0x40); db(0x00); db(0xa4); - db(0x41); db(0xfa); db(0x08); db(0xa1); db(0x70); db(0x00); db(0x72); db(0x00); - db(0x61); db(0x00); db(0x02); db(0x74); 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(0xb2); db(0x70); db(0x00); db(0x4e); db(0x90); - db(0x24); db(0x00); db(0x70); db(0x01); db(0x61); db(0x00); db(0xfa); db(0x38); - db(0x08); db(0x02); db(0x00); db(0x01); db(0x67); db(0x06); db(0x70); db(0x01); - db(0x61); db(0x00); db(0xfb); db(0xa0); db(0x60); db(0x00); db(0x00); db(0xf8); - db(0x20); db(0x4d); db(0x4e); db(0xae); db(0xfe); db(0x8c); db(0x28); db(0x40); - db(0x4a); db(0x80); db(0x66); db(0x10); db(0x70); db(0x00); db(0x12); db(0x2d); - db(0x00); db(0x0f); db(0x03); db(0xc0); db(0x08); db(0xc0); db(0x00); db(0x0d); - db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4a); db(0x2b); db(0x00); db(0xac); - db(0x67); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x4c); db(0x42); db(0x2b); - db(0x00); db(0xac); db(0x20); db(0x0c); db(0x67); db(0xd2); 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(0x8a); db(0x22); db(0x4c); - db(0x70); db(0x26); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x60); db(0x00); - db(0xff); db(0x80); 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(0x01); db(0x06); - 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(0x62); - 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(0x5c); db(0x30); db(0x3c); db(0xff); db(0x30); db(0x61); db(0x00); - db(0x00); db(0xb4); 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(0x0c); db(0x28); db(0x43); - db(0x61); db(0x04); db(0x60); db(0x00); db(0xff); db(0x04); 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(0xfb); db(0x4c); db(0x0c); db(0xac); db(0x00); db(0x00); - db(0x04); db(0x09); db(0x00); db(0x08); db(0x66); db(0x12); db(0x61); db(0x00); - db(0xfb); db(0x7a); db(0x66); db(0x0c); db(0x30); db(0x3c); db(0xff); db(0x58); - db(0x61); db(0x00); db(0x00); db(0x72); db(0x4e); db(0x90); db(0x60); db(0xee); - 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(0xf4); db(0x4e); - db(0x02); db(0x80); db(0x00); db(0x00); db(0xff); db(0xff); db(0xd1); db(0xc0); - db(0x4e); db(0x75); db(0x20); db(0x88); db(0x58); db(0x90); db(0x42); db(0xa8); - db(0x00); db(0x04); db(0x21); db(0x48); db(0x00); db(0x08); db(0x4e); db(0x75); - db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x91); db(0xc8); - db(0x24); db(0x00); db(0x6b); db(0x32); db(0x70); db(0x22); db(0x22); db(0x3c); - db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); - db(0x91); db(0xc8); db(0x24); db(0x40); db(0x4a); db(0x80); db(0x67); db(0x1e); - db(0x15); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x08); db(0x15); db(0x42); - db(0x00); db(0x0f); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); - db(0x25); db(0x40); db(0x00); db(0x10); db(0x41); db(0xea); db(0x00); db(0x14); - db(0x61); db(0x00); db(0xff); db(0xb0); db(0x20); db(0x4a); db(0x20); db(0x08); - db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); - db(0x20); db(0x22); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4a); db(0x80); - db(0x67); db(0x24); db(0x24); db(0x40); db(0x24); db(0x01); db(0x66); db(0x02); - db(0x74); db(0x30); db(0x20); db(0x02); db(0x22); db(0x3c); db(0x00); db(0x01); + db(0x0a); db(0xdc); db(0x67); db(0x04); db(0x61); db(0x00); db(0x0a); db(0x7a); + db(0x0c); db(0x6e); db(0x00); db(0x24); db(0x00); db(0x14); db(0x65); db(0x04); + db(0x61); db(0x00); db(0x0f); db(0x62); 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(0x11); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x08); db(0x31); db(0x42); - db(0x00); db(0x12); db(0x21); db(0x4a); db(0x00); db(0x0e); db(0x4a); db(0x80); - db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); db(0x48); db(0xe7); - db(0x30); db(0x22); db(0x24); db(0x48); db(0x24); db(0x00); db(0x26); db(0x01); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x61); db(0x00); db(0xff); db(0x6a); - db(0x22); db(0x03); db(0x61); db(0x00); db(0xff); db(0xb2); db(0x67); db(0x18); - db(0x20); db(0x4a); db(0x22); db(0x40); db(0x24); db(0x40); db(0x20); db(0x02); - db(0x72); db(0x00); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x22); db(0x00); - db(0x70); db(0x00); db(0x4a); db(0x81); db(0x66); db(0x02); db(0x20); db(0x0a); - db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x0c); db(0x4e); db(0x75); - db(0x48); db(0xe7); db(0x38); db(0x32); db(0x2c); db(0x78); db(0x00); db(0x04); - db(0x28); db(0x00); db(0x24); db(0x08); db(0x26); db(0x09); db(0x20); db(0x3c); - db(0x00); db(0x00); db(0x08); db(0x5c); db(0x22); db(0x3c); db(0x00); db(0x01); - db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); - db(0x67); db(0x00); db(0x00); db(0x34); db(0x24); db(0x40); db(0x15); db(0x7c); - db(0x00); db(0x01); db(0x00); db(0x08); db(0x15); db(0x44); db(0x00); db(0x09); - db(0x25); db(0x42); db(0x00); db(0x0a); db(0x47); db(0xea); db(0x00); db(0x5c); - db(0x25); db(0x4b); db(0x00); db(0x3a); db(0x47); db(0xeb); db(0x08); db(0x00); - db(0x25); db(0x4b); db(0x00); db(0x3e); db(0x25); db(0x4b); db(0x00); db(0x36); - db(0x22); db(0x4a); db(0x24); db(0x43); db(0x97); db(0xcb); db(0x24); db(0x09); - db(0x4e); db(0xae); db(0xfe); db(0xe6); db(0x20); db(0x02); db(0x4c); db(0xdf); - db(0x4c); db(0x1c); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x05); db(0xab); - db(0x43); db(0xfa); db(0x01); db(0x30); db(0x70); db(0x13); db(0x61); db(0x00); - db(0xff); db(0x98); db(0x4e); db(0x75); db(0x22); db(0x6d); db(0x01); db(0x9e); + 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(0x11); db(0xde); 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(0x11); db(0x30); 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(0x11); db(0x06); db(0x25); db(0x48); + db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x10); db(0x82); 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(0x7c); db(0x2c); db(0x6b); + db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); + db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66); + db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62); + db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb); + db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x5a); + db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); + db(0x00); db(0x9e); db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e); + db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x5a); + db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); + db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb); + db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0xac); db(0x08); db(0x07); + db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); + db(0x66); db(0x0c); db(0x50); db(0xeb); db(0x00); db(0x9e); db(0x20); db(0x6b); + db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x94); db(0x4e); db(0xae); + db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x40); db(0x80); db(0x4e); db(0x75); + db(0x48); db(0xe7); db(0x01); db(0x22); db(0x2e); db(0x00); db(0x2c); db(0x6b); + db(0x00); db(0xa0); db(0x0c); db(0x6e); db(0x00); db(0x25); db(0x00); db(0x14); + db(0x65); db(0x3e); db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x66); + db(0x02); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x62); + db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x0a); db(0x41); db(0xeb); + db(0x00); db(0x20); db(0x22); db(0x08); db(0x4e); db(0xae); db(0xfd); db(0x60); + db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); + db(0x00); db(0x9e); db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e); + db(0x22); db(0x2b); db(0x00); db(0xb4); db(0x4e); db(0xae); db(0xfd); db(0x60); + db(0x72); db(0x0e); db(0x4e); db(0xae); db(0xfd); db(0x6c); db(0x60); db(0x32); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x4e); db(0xae); db(0xff); db(0x7c); + db(0x08); db(0x07); db(0x00); db(0x00); db(0x67); db(0x08); db(0x41); db(0xeb); + db(0x00); db(0x20); db(0x61); db(0x00); db(0x00); db(0x44); db(0x08); db(0x07); + db(0x00); db(0x01); db(0x67); db(0x12); db(0x4a); db(0x2b); db(0x00); db(0x9e); + db(0x67); db(0x0c); db(0x42); db(0x2b); db(0x00); db(0x9e); db(0x20); db(0x6b); + db(0x00); db(0xb4); db(0x61); db(0x00); db(0x00); db(0x2c); db(0x4e); db(0xae); + db(0xff); db(0x76); db(0x4c); db(0xdf); db(0x44); db(0x80); db(0x4e); db(0x75); + db(0x22); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68); + db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8); + db(0xd1); db(0xc8); db(0x22); db(0xa8); db(0x00); db(0x04); db(0x20); db(0x09); + db(0xe4); db(0x88); db(0x21); db(0x40); db(0x00); db(0x04); db(0x4e); db(0x75); + db(0x24); db(0x48); db(0x20); db(0x6b); db(0x00); db(0xa0); db(0x20); db(0x68); + db(0x00); db(0x22); db(0x20); db(0x68); db(0x00); db(0x18); db(0xd1); db(0xc8); + db(0xd1); db(0xc8); db(0x22); db(0x68); db(0x00); db(0x04); db(0xd3); db(0xc9); + db(0xd3); db(0xc9); db(0xb3); db(0xca); db(0x66); db(0x06); db(0x21); db(0x52); + db(0x00); db(0x04); db(0x60); db(0x18); db(0x20); db(0x09); db(0x67); db(0x0e); + db(0x20); db(0x11); db(0xd0); db(0x80); db(0xd0); db(0x80); db(0xb5); db(0xc0); + db(0x67); db(0x04); db(0x22); db(0x40); db(0x60); db(0xee); db(0x20); db(0x09); + db(0x67); db(0x02); db(0x22); db(0x92); db(0x4e); db(0x75); db(0x48); db(0xe7); + db(0x20); db(0x22); db(0x74); db(0x16); db(0x9f); db(0xc2); db(0x24); db(0x4f); + db(0x32); db(0x02); db(0x42); db(0x32); db(0x10); db(0xff); db(0x53); db(0x41); + db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x72); db(0x0f); + db(0x4a); db(0x80); db(0x67); db(0x02); db(0x72); db(0x10); db(0x15); db(0x41); + db(0x00); db(0x04); db(0x35); db(0x7c); db(0x08); db(0x00); db(0x00); db(0x08); + db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x33); db(0x7c); db(0x00); db(0x0b); + db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16); + db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); db(0x13); db(0x7c); + db(0x00); db(0x01); db(0x00); db(0x1e); db(0x22); db(0x6b); db(0x00); db(0xa8); db(0x33); db(0x7c); db(0x00); db(0x0a); db(0x00); db(0x1c); db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); - db(0x22); db(0x6d); db(0x01); db(0x9e); db(0x25); db(0x69); db(0x00); db(0x20); + 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(0x6d); db(0x01); db(0x9a); db(0x13); db(0x7c); db(0x00); db(0x01); - db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); - db(0x42); db(0xaa); db(0x00); db(0x0e); db(0x42); db(0xaa); db(0x00); db(0x12); - db(0x22); db(0x6d); db(0x01); db(0x9a); db(0x13); db(0x7c); db(0x00); db(0x01); - db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x4e); db(0x75); - db(0x00); db(0x00); db(0xff); db(0xff); db(0x00); db(0x00); db(0x00); db(0x00); + db(0x22); db(0x6b); db(0x00); db(0xa4); db(0x4e); db(0xae); db(0xfe); db(0x38); + db(0xdf); db(0xc2); db(0x4c); db(0xdf); db(0x44); db(0x04); db(0x4e); db(0x75); + db(0x4a); db(0x00); db(0x67); db(0x26); db(0x4a); db(0x2b); db(0x00); db(0x4c); + db(0x66); db(0x36); db(0x70); db(0x00); db(0x4a); db(0x33); db(0x00); db(0x4d); + db(0x67); db(0x04); db(0x52); db(0x00); db(0x60); db(0xf6); db(0x17); db(0x40); + db(0x00); db(0x4c); db(0x67); db(0x24); db(0x20); db(0x01); db(0x61); db(0x00); + db(0xfd); db(0xf2); db(0x70); db(0x01); db(0x61); db(0x00); db(0xff); db(0x60); + db(0x60); db(0x16); db(0x4a); db(0x2b); db(0x00); db(0x4c); db(0x67); db(0x10); + db(0x42); db(0x2b); db(0x00); db(0x4c); db(0x20); db(0x01); db(0x61); db(0x00); + db(0xfe); db(0x68); db(0x70); db(0x00); db(0x61); db(0x00); db(0xff); db(0x48); + db(0x4e); db(0x75); db(0x4a); db(0xac); db(0x00); db(0x14); db(0x67); db(0x0a); + db(0x70); db(0x00); db(0x72); db(0x01); db(0x61); db(0x00); db(0xff); db(0xb2); + db(0x4e); db(0x75); db(0x70); db(0x01); db(0x72); db(0x03); db(0x61); db(0x00); + db(0xff); db(0xa8); db(0x4e); db(0x75); db(0x10); db(0x2b); db(0x00); db(0xac); + db(0x6b); db(0x0a); db(0x70); db(0x01); db(0x72); db(0x03); db(0x61); db(0x00); + db(0xff); db(0x98); db(0x4e); db(0x75); db(0x72); db(0x01); db(0x0c); db(0x00); + db(0x00); db(0xfe); db(0x66); db(0x02); db(0x72); db(0x03); db(0x70); db(0x00); + db(0x61); db(0x00); db(0xff); db(0x86); db(0x4e); db(0x75); db(0x20); db(0x6c); + db(0x00); db(0x24); db(0x4a); db(0x90); db(0x67); db(0x0c); db(0x4a); db(0xa8); + db(0x00); db(0x08); db(0x66); db(0x0a); db(0x4a); db(0xa8); db(0x00); db(0x0c); + db(0x66); db(0x04); db(0x70); db(0x01); db(0x4e); db(0x75); db(0x48); db(0xe7); + db(0x3f); db(0x3e); db(0x2a); db(0x48); db(0x24); db(0x6c); db(0x00); db(0x18); + db(0x2e); db(0x15); db(0x7a); db(0x00); db(0x4a); db(0x87); db(0x67); db(0x70); + db(0x20); db(0x0a); db(0x67); db(0x6c); db(0x7c); db(0x00); db(0x22); db(0x2d); + db(0x00); db(0x08); db(0x67); db(0x12); db(0x24); db(0x2a); db(0x00); db(0x04); + db(0x2c); db(0x6b); db(0x00); db(0xa0); db(0x4e); db(0xae); db(0xfc); db(0x34); + db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); db(0x22); db(0x2d); + db(0x00); db(0x0c); db(0x67); db(0x1c); db(0x20); db(0x41); db(0x22); db(0x4a); + db(0x2f); db(0x0a); db(0x45); db(0xec); db(0x00); db(0x20); db(0x48); db(0x7a); + db(0x00); db(0x08); db(0x2f); db(0x28); db(0x00); db(0x08); db(0x4e); db(0x75); + db(0x24); db(0x5f); db(0x4a); db(0x80); db(0x66); db(0x02); db(0x50); db(0xc6); + db(0x4a); db(0x06); db(0x67); db(0x24); db(0x20); db(0x2a); db(0x00); db(0x04); + db(0x90); db(0x8a); db(0x4a); db(0x92); db(0x66); db(0x0a); db(0x20); db(0x05); + db(0x67); db(0x10); db(0x20); db(0x40); db(0x42); db(0x90); db(0x60); db(0x0a); + db(0x20); db(0x52); db(0x22); db(0x4a); db(0x22); db(0xd8); db(0x59); db(0x80); + db(0x6a); db(0xfa); db(0x53); db(0x95); db(0x53); db(0x87); db(0x60); db(0x94); + db(0x2a); db(0x0a); db(0x24); db(0x52); db(0x53); db(0x87); db(0x60); db(0x8c); + db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x20); db(0x6c); db(0x00); db(0x24); + db(0x4a); db(0x90); db(0x4e); db(0x75); db(0x61); db(0x00); db(0xfc); db(0x7c); + 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(0x04); db(0x4c); db(0x2a); db(0x50); + db(0x30); db(0x3c); db(0xff); db(0x28); db(0x61); db(0x00); db(0x04); db(0x42); + db(0x22); db(0x48); db(0x20); db(0x5f); db(0x42); db(0xa8); db(0x01); db(0x90); + db(0x42); db(0xa8); db(0x01); db(0x94); db(0x4e); db(0x91); db(0x26); db(0x00); + db(0x0c); db(0x43); db(0xff); db(0xfe); db(0x67); db(0x00); db(0xf9); db(0x6e); + db(0x20); db(0x28); db(0x01); db(0x90); db(0x67); db(0x14); db(0x6b); db(0x12); + db(0x2f); db(0x08); db(0x72); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x20); db(0x5f); db(0x21); db(0x40); + db(0x01); db(0x94); db(0x4a); db(0x83); db(0x6a); db(0x0e); db(0x22); db(0x48); + db(0x30); db(0x3c); db(0xff); db(0x20); db(0x61); db(0x00); db(0x04); db(0x02); + 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(0x03); db(0xe8); 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(0xfa); db(0xf2); + 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(0xfa); db(0x7c); + db(0x4a); db(0x83); db(0x6b); db(0x00); db(0xf8); db(0xe8); db(0x30); db(0x3c); + db(0xff); db(0x18); db(0x61); db(0x00); db(0x03); db(0x9c); 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(0x17); db(0x70); + db(0x00); db(0x14); db(0x41); db(0xfa); db(0xf7); db(0xb8); db(0x20); db(0x08); + 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(0x08); db(0x07); db(0x00); db(0x00); + db(0x67); db(0x3a); 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(0x70); db(0x00); db(0x4e); db(0x75); db(0x24); db(0x49); db(0x20); db(0x4b); + db(0x72); db(0x00); db(0x22); db(0x41); db(0x08); db(0x07); db(0x00); db(0x01); + db(0x67); db(0x08); db(0x08); db(0x07); db(0x00); db(0x02); db(0x67); db(0x02); + db(0x72); db(0x01); db(0x70); db(0xec); db(0x2c); db(0x4c); db(0x4e); db(0xae); + db(0xff); db(0x6a); db(0x08); db(0x07); db(0x00); db(0x01); db(0x67); db(0x5c); + db(0x08); db(0x07); db(0x00); db(0x02); db(0x66); db(0x56); db(0x20); db(0x52); + db(0x74); db(0x02); db(0x52); db(0x82); db(0x4a); db(0x30); db(0x28); db(0xfd); + db(0x66); db(0xf8); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x02); + db(0x72); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); + db(0x67); db(0x3a); db(0x20); db(0x52); db(0x24); db(0x40); db(0x22); db(0x4a); + db(0x12); db(0xd8); db(0x66); db(0xfc); db(0x13); db(0x7c); db(0x00); db(0x3a); + db(0xff); db(0xff); db(0x42); db(0x11); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x43); db(0xfa); db(0x0b); db(0xff); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0xfd); db(0xd8); db(0x2c); db(0x40); db(0x22); db(0x0a); db(0x4e); db(0xae); + db(0xff); db(0x52); db(0x22); db(0x4e); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x4e); db(0xae); db(0xfe); db(0x62); db(0x22); db(0x4a); db(0x20); db(0x02); + db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x70); db(0x00); db(0x4e); db(0x75); + db(0x48); db(0xe7); db(0x3f); db(0x3e); db(0x2c); db(0x01); db(0x7e); db(0x06); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x43); db(0xfa); db(0x0b); db(0xfa); + db(0x70); db(0x24); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x4a); db(0x80); + db(0x66); db(0x0e); db(0x08); db(0x87); db(0x00); db(0x02); db(0x43); db(0xfa); + db(0x0b); db(0xe8); 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(0x4a); db(0x80); db(0x67); db(0x2c); + db(0x21); db(0x4c); db(0x01); db(0x9c); db(0x48); db(0xe7); db(0x00); db(0x8a); + db(0x61); db(0x00); db(0xfe); db(0x0a); db(0x4c); db(0xdf); db(0x51); db(0x00); + db(0x0c); db(0x80); db(0xff); db(0xff); db(0xff); db(0xfe); db(0x67); db(0x08); + db(0x48); db(0x46); db(0x52); db(0x46); db(0x48); db(0x46); db(0x60); db(0xe4); + db(0x22); db(0x48); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x02); db(0x2c); + db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x22); db(0x4c); db(0x4e); db(0xae); + db(0xfe); db(0x62); db(0x4c); db(0xdf); db(0x7c); db(0xfc); db(0x4e); db(0x75); + db(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(0x0b); db(0x4f); 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(0x26); db(0x40); db(0x7c); db(0x00); + db(0x26); db(0x86); db(0x27); db(0x46); db(0x00); db(0x04); db(0x27); db(0x46); + db(0x00); db(0x08); db(0x27); db(0x4a); db(0x00); db(0xa0); db(0x50); db(0xeb); + db(0x00); db(0x9e); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); + db(0x27); db(0x40); db(0x00); db(0xb0); db(0x41); db(0xfa); db(0x0a); db(0x86); + db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x84); + db(0x27); db(0x40); db(0x00); db(0xa4); db(0x41); db(0xfa); db(0x0a); db(0x83); + db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0x02); db(0x74); + 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(0xb2); + db(0x70); db(0x00); db(0x4e); db(0x90); db(0x24); db(0x00); db(0x70); db(0x01); + db(0x61); db(0x00); db(0xfa); db(0x38); db(0x08); db(0x02); db(0x00); db(0x01); + db(0x67); db(0x06); db(0x70); db(0x01); db(0x61); db(0x00); db(0xfb); db(0xa0); + db(0x60); db(0x00); db(0x00); db(0xf8); db(0x20); db(0x4d); db(0x4e); db(0xae); + db(0xfe); db(0x8c); db(0x28); db(0x40); db(0x4a); db(0x80); db(0x66); db(0x10); + db(0x70); db(0x00); db(0x12); db(0x2d); db(0x00); db(0x0f); db(0x03); db(0xc0); + db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); + db(0x4a); db(0x2b); db(0x00); db(0xac); db(0x67); db(0x08); db(0x61); db(0x00); + db(0xfc); db(0x4c); db(0x42); db(0x2b); db(0x00); db(0xac); db(0x20); db(0x0c); + db(0x67); db(0xd2); 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(0x8a); db(0x22); db(0x4c); db(0x70); db(0x26); db(0x4e); db(0xae); + db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x80); 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(0x01); db(0x06); 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(0x62); 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(0x5c); db(0x30); db(0x3c); + db(0xff); db(0x30); db(0x61); db(0x00); db(0x00); db(0xb4); 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(0x0c); db(0x28); db(0x43); db(0x61); db(0x04); db(0x60); db(0x00); + db(0xff); db(0x04); 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(0xfb); db(0x4c); + db(0x0c); db(0xac); db(0x00); db(0x00); db(0x04); db(0x09); db(0x00); db(0x08); + db(0x66); db(0x12); db(0x61); db(0x00); db(0xfb); db(0x7a); db(0x66); db(0x0c); + db(0x30); db(0x3c); db(0xff); db(0x58); db(0x61); db(0x00); db(0x00); db(0x72); + db(0x4e); db(0x90); db(0x60); db(0xee); 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(0xf4); db(0x2a); db(0x02); db(0x80); db(0x00); db(0x00); + db(0xff); db(0xff); db(0xd1); db(0xc0); db(0x4e); db(0x75); db(0x20); db(0x88); + db(0x58); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x21); db(0x48); + db(0x00); db(0x08); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x70); db(0xff); db(0x4e); db(0xae); + db(0xfe); db(0xb6); db(0x91); db(0xc8); db(0x24); db(0x00); db(0x6b); db(0x32); + db(0x70); db(0x22); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x91); db(0xc8); db(0x24); db(0x40); + db(0x4a); db(0x80); db(0x67); db(0x1e); db(0x15); db(0x7c); db(0x00); db(0x04); + db(0x00); db(0x08); db(0x15); db(0x42); db(0x00); db(0x0f); db(0x93); db(0xc9); + db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x25); db(0x40); db(0x00); db(0x10); + db(0x41); db(0xea); db(0x00); db(0x14); db(0x61); db(0x00); db(0xff); db(0xb0); + db(0x20); db(0x4a); db(0x20); db(0x08); db(0x4c); db(0xdf); db(0x44); db(0x04); + db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x20); db(0x22); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x4a); db(0x80); db(0x67); db(0x24); db(0x24); db(0x40); + db(0x24); db(0x01); db(0x66); db(0x02); db(0x74); db(0x30); db(0x20); db(0x02); + db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); + db(0xff); db(0x3a); db(0x20); db(0x40); db(0x11); db(0x7c); db(0x00); db(0x0a); + db(0x00); db(0x08); db(0x31); db(0x42); db(0x00); db(0x12); db(0x21); db(0x4a); + db(0x00); db(0x0e); db(0x4a); db(0x80); db(0x4c); db(0xdf); db(0x44); db(0x04); + db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x30); db(0x22); db(0x24); db(0x48); + db(0x24); db(0x00); db(0x26); db(0x01); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x61); db(0x00); db(0xff); db(0x6a); db(0x22); db(0x03); db(0x61); db(0x00); + db(0xff); db(0xb2); db(0x67); db(0x18); db(0x20); db(0x4a); db(0x22); db(0x40); + db(0x24); db(0x40); db(0x20); db(0x02); db(0x72); db(0x00); db(0x4e); db(0xae); + db(0xfe); db(0x44); db(0x22); db(0x00); db(0x70); db(0x00); db(0x4a); db(0x81); + db(0x66); db(0x02); db(0x20); db(0x0a); db(0x4a); db(0x80); db(0x4c); db(0xdf); + db(0x44); db(0x0c); db(0x4e); db(0x75); db(0x48); db(0xe7); db(0x38); db(0x32); + db(0x2c); db(0x78); db(0x00); db(0x04); db(0x28); db(0x00); db(0x24); db(0x08); + db(0x26); db(0x09); db(0x20); db(0x3c); db(0x00); db(0x00); db(0x08); db(0x5c); + db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); + db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x00); db(0x00); db(0x34); + db(0x24); db(0x40); db(0x15); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x08); + db(0x15); db(0x44); db(0x00); db(0x09); db(0x25); db(0x42); db(0x00); db(0x0a); + db(0x47); db(0xea); db(0x00); db(0x5c); db(0x25); db(0x4b); db(0x00); db(0x3a); + db(0x47); db(0xeb); db(0x08); db(0x00); db(0x25); db(0x4b); db(0x00); db(0x3e); + db(0x25); db(0x4b); db(0x00); db(0x36); db(0x22); db(0x4a); db(0x24); db(0x43); + db(0x97); db(0xcb); db(0x24); db(0x09); db(0x4e); db(0xae); db(0xfe); db(0xe6); + db(0x20); db(0x02); db(0x4c); db(0xdf); db(0x4c); db(0x1c); db(0x4e); db(0x75); + db(0x41); db(0xfa); db(0x07); db(0xa3); db(0x43); db(0xfa); db(0x01); db(0x30); + db(0x70); db(0x13); db(0x61); db(0x00); db(0xff); db(0x98); db(0x4e); db(0x75); + db(0x22); db(0x6d); db(0x01); db(0x9e); 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(0x01); db(0x9e); + 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(0x01); db(0x9a); + db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x42); db(0xaa); db(0x00); db(0x0e); + db(0x42); db(0xaa); db(0x00); db(0x12); db(0x22); db(0x6d); db(0x01); db(0x9a); + db(0x13); db(0x7c); db(0x00); db(0x01); db(0x00); db(0x1e); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x4e); db(0x75); db(0x00); db(0x00); db(0xff); db(0xff); + db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); - db(0x00); db(0x00); db(0x00); db(0x00); db(0x48); db(0xe7); db(0xf0); db(0xfe); - db(0x2a); db(0x48); db(0x95); db(0xca); db(0x97); db(0xcb); db(0x99); db(0xcc); - db(0x2c); db(0x6d); db(0x00); db(0x18); db(0x20); db(0x6d); db(0x00); db(0x14); - db(0x20); db(0x28); db(0x00); db(0x3c); db(0x67); db(0x40); db(0x20); db(0x40); - db(0x41); db(0xe8); db(0x00); db(0x2c); db(0x28); db(0x48); db(0x4e); db(0xae); - db(0xfc); db(0xe8); db(0x72); db(0xff); db(0xb2); db(0x80); db(0x67); db(0x2e); - db(0x26); db(0x00); db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x30); - db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); - db(0x80); db(0x00); db(0x10); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); - db(0xfd); db(0x0c); db(0x72); db(0xff); db(0x74); db(0xff); db(0x4a); db(0x80); - db(0x6b); db(0x0c); db(0x45); db(0xed); db(0x00); db(0x30); db(0x22); db(0x2a); - db(0x00); db(0x32); db(0x24); db(0x2a); db(0x00); db(0x36); db(0x20); db(0x2c); - db(0x00); db(0x1c); db(0xb0); db(0xad); db(0x00); db(0x28); db(0x66); db(0x0c); - db(0xb2); db(0xad); db(0x00); db(0x20); db(0x66); db(0x06); db(0xb4); db(0xad); - db(0x00); db(0x24); db(0x67); db(0x38); db(0x2b); db(0x40); db(0x00); db(0x28); - db(0x2b); db(0x41); db(0x00); db(0x20); db(0x2b); db(0x42); db(0x00); db(0x24); - db(0x91); db(0xc8); db(0x43); db(0xed); db(0x00); db(0x88); db(0x70); db(0x00); - db(0x30); db(0x3c); db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00); - db(0x00); db(0x00); db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c); - db(0x4a); db(0x80); db(0x6b); db(0x04); db(0x47); db(0xed); db(0x00); db(0x88); - db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x01); db(0x61); db(0x00); - db(0xfd); db(0x9c); db(0x4e); db(0x90); db(0x4c); db(0xdf); db(0x7f); db(0x0f); - db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); db(0x3e); db(0x2e); - db(0x00); db(0x14); db(0x70); db(0xff); db(0x4e); db(0xae); db(0xfe); db(0xb6); - db(0x7c); db(0x00); db(0x01); db(0xc6); db(0x93); db(0xc9); db(0x4e); db(0xae); - db(0xfe); db(0xda); db(0x28); db(0x40); db(0x70); db(0x14); db(0x22); db(0x4c); - db(0x4e); db(0xae); db(0xfe); db(0xd4); db(0x70); db(0x00); db(0x30); db(0x3c); - db(0x01); db(0xa2); db(0x22); db(0x3c); db(0x00); db(0x01); db(0x00); db(0x01); - db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2a); db(0x40); db(0x47); db(0xed); - db(0x00); db(0x16); db(0x27); db(0x4e); db(0x00); db(0x10); db(0x27); db(0x4c); - db(0x00); db(0x08); db(0x27); db(0x46); db(0x00); db(0x0c); db(0x70); db(0xff); - db(0x37); db(0x40); db(0x00); db(0x00); 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(0x04); db(0x1b); - db(0x23); db(0x48); db(0x00); db(0x0a); db(0x41); db(0xfa); db(0x03); db(0x0e); - db(0x23); db(0x48); db(0x00); db(0x12); db(0x23); db(0x4d); db(0x00); db(0x0e); - db(0x70); db(0x05); db(0x4e); db(0xae); db(0xff); db(0x58); db(0x20); db(0x06); - db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x70); db(0x00); db(0x53); db(0xab); - db(0x00); db(0x1c); db(0x6a); db(0x06); db(0x70); db(0x0a); db(0x27); db(0x40); - db(0x00); db(0x1c); db(0x4a); db(0xab); db(0x00); db(0x14); db(0x66); db(0x18); - db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xe0); db(0x43); db(0xfa); - db(0x04); db(0x39); db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); - db(0x27); db(0x40); db(0x00); db(0x14); db(0x67); db(0x00); db(0xff); db(0xd0); - db(0x4a); db(0xab); db(0x00); db(0x18); db(0x66); db(0x18); db(0x4a); db(0xab); - db(0x00); db(0x1c); db(0x66); db(0xc2); db(0x43); db(0xfa); db(0x04); db(0x2d); - db(0x70); db(0x00); db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); - db(0x00); db(0x18); db(0x67); db(0x00); db(0xff); db(0xb2); db(0x4a); db(0xad); - db(0x01); db(0x9a); db(0x66); db(0x38); db(0x4a); db(0xab); db(0x00); db(0x1c); - db(0x66); db(0xa4); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); - db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x03); db(0x72); db(0x4e); db(0xae); - db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); - db(0x4a); db(0x82); db(0x67); db(0x8a); db(0x41); db(0xfa); db(0x03); db(0x60); - db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfd); db(0x40); - db(0x2b); db(0x40); db(0x01); db(0x9a); db(0x67); db(0x00); db(0x02); db(0x74); - db(0x60); db(0x00); db(0xff); db(0x74); db(0x4a); db(0xad); db(0x01); db(0x9e); - db(0x66); db(0x48); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0x00); - db(0xff); db(0x66); db(0x4e); db(0xae); db(0xff); db(0x7c); db(0x41); db(0xee); - db(0x01); db(0x5e); db(0x43); db(0xfa); db(0x03); db(0x3f); db(0x4e); db(0xae); - db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); db(0xff); db(0x76); - db(0x4a); db(0x82); db(0x67); db(0x00); db(0xff); db(0x4a); db(0x41); db(0xfa); - db(0x03); db(0x2b); db(0x70); db(0x00); db(0x72); db(0x00); db(0x61); db(0x00); - db(0xfc); db(0xfe); db(0x2b); db(0x40); db(0x01); db(0x9e); db(0x67); db(0x00); - db(0x02); db(0x32); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x00); - db(0x61); db(0x00); db(0xfc); db(0x4a); db(0x4e); db(0x90); db(0x60); db(0x00); - db(0xff); db(0x26); db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x06); - db(0x20); db(0x4b); db(0x61); db(0x00); db(0xfd); db(0xf8); db(0x22); db(0x6d); - db(0x01); db(0x9a); db(0x45); db(0xed); db(0x00); db(0xce); db(0x33); db(0x7c); - db(0x00); db(0x0b); db(0x00); db(0x1c); db(0x23); db(0x7c); db(0x00); db(0x00); - db(0x00); db(0x16); db(0x00); db(0x24); db(0x23); db(0x4a); db(0x00); db(0x28); - db(0x10); db(0x3a); db(0xfd); db(0xae); db(0x6a); db(0x08); db(0x0c); db(0x47); - db(0x00); db(0x24); db(0x65); db(0x00); db(0x01); db(0xaa); db(0x15); db(0x7c); - db(0x00); db(0x13); db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06); - db(0x22); db(0x3a); db(0xfd); db(0xb8); db(0x02); db(0x41); db(0x00); db(0x07); - db(0x70); db(0x07); db(0x90); db(0x41); db(0xe1); db(0x48); db(0xe9); db(0x48); - db(0x35); db(0x40); db(0x00); db(0x08); db(0x41); db(0xed); db(0x00); db(0xfa); - db(0x25); db(0x48); db(0x00); db(0x0a); db(0x10); db(0x3a); db(0xfd); db(0x7a); - db(0x6b); db(0x00); db(0x00); db(0xf2); db(0x0c); db(0x47); db(0x00); db(0x27); - db(0x65); db(0x00); db(0x00); db(0xee); db(0x15); db(0x7c); db(0x00); db(0x03); - db(0x00); db(0x05); db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); - db(0x42); db(0xa8); db(0x00); db(0x08); db(0x42); db(0x68); db(0x00); db(0x0c); - db(0x31); db(0x7a); db(0xfd); db(0x60); db(0x00); db(0x0e); db(0x42); db(0x68); - db(0x00); db(0x10); db(0x31); db(0x7a); db(0xfd); db(0x58); db(0x00); db(0x12); - db(0x42); db(0x68); db(0x00); db(0x14); db(0x31); db(0x7a); db(0xfd); db(0x46); - db(0x00); db(0x16); db(0x42); db(0x68); db(0x00); db(0x18); db(0x31); db(0x7a); - db(0xfd); db(0x3e); db(0x00); db(0x1a); db(0x43); db(0xed); db(0x01); db(0x1a); - db(0x21); db(0x49); db(0x00); db(0x1c); db(0x22); db(0xfc); db(0x80); db(0x03); - db(0xa0); db(0x06); db(0x30); db(0x3a); db(0xfd); db(0x44); db(0x48); db(0xc0); - db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x22); db(0xfc); db(0x80); db(0x03); - db(0xa0); db(0x07); db(0x22); db(0xfa); db(0xfd); db(0x36); db(0x70); db(0x00); - db(0x30); db(0x3a); db(0xfd); db(0x1e); db(0x6b); db(0x08); db(0x22); db(0xfc); - db(0x80); db(0x03); db(0xa0); db(0x09); db(0x22); db(0xc0); db(0x30); db(0x3a); - db(0xfd); db(0x12); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); - db(0xa0); db(0x0a); db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xfa); - db(0x6b); db(0x14); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x02); - db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xf2); db(0x22); db(0xfc); - db(0x80); db(0x03); db(0xa0); db(0x01); db(0x22); db(0xc0); db(0x30); db(0x3a); - db(0xfc); db(0xec); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); - db(0xa0); db(0x03); db(0x30); db(0x3a); db(0xfc); db(0xe6); db(0x48); db(0xc0); - db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xd8); - db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x04); - db(0x30); db(0x3a); db(0xfc); db(0xd2); db(0x48); db(0xc0); db(0xe1); db(0x80); - db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xc4); db(0x6b); db(0x10); - db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x05); db(0x30); db(0x3a); - db(0xfc); db(0xbe); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); - db(0x70); db(0x00); db(0x30); db(0x3a); db(0xfc); db(0xba); db(0x6b); db(0x08); - db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x08); db(0x22); db(0xc0); - db(0x42); db(0x91); db(0x60); db(0x32); db(0x42); db(0x6a); db(0x00); db(0x08); - db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x00); db(0xfd); db(0xc8); - db(0x15); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x05); db(0x30); db(0xba); - db(0xfc); db(0x74); db(0x31); db(0x7a); db(0xfc); db(0x72); db(0x00); db(0x02); - db(0x31); db(0x7a); db(0xfc); db(0x70); db(0x00); db(0x04); db(0x31); db(0x7a); - db(0xfc); db(0x6c); db(0x00); db(0x06); db(0x30); db(0x3a); db(0xfc); db(0x7a); - db(0xe0); db(0x40); db(0x31); db(0x40); db(0x00); db(0x08); db(0x61); db(0x00); - db(0xfc); db(0x38); db(0x10); db(0x3a); db(0xfc); db(0x4c); db(0x6b); db(0x00); - db(0xfd); db(0x96); db(0x36); db(0x3c); db(0x00); db(0x68); db(0x74); db(0x01); - db(0x28); db(0x3a); db(0xfc); db(0x60); db(0x20); db(0x04); db(0xc0); db(0x82); - db(0x22); db(0x2b); db(0x00); db(0x04); db(0xc2); db(0x82); db(0xb2); db(0x80); - db(0x67); db(0x22); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x02); db(0x00); - db(0x00); db(0x04); db(0x42); db(0xaa); db(0x00); db(0x0a); db(0x32); db(0x03); - db(0x4a); db(0x00); db(0x66); db(0x04); db(0x08); db(0xc1); db(0x00); db(0x07); - db(0x35); db(0x41); db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); - db(0x61); db(0x00); db(0xfb); db(0xf6); db(0x52); db(0x43); db(0xd4); db(0x42); - db(0x0c); db(0x42); db(0x00); db(0x08); db(0x66); db(0xc6); db(0x27); db(0x44); - db(0x00); db(0x04); db(0x60); db(0x00); db(0xfd); db(0x4a); db(0x42); db(0x92); - db(0x35); db(0x7c); db(0x04); db(0x00); db(0x00); db(0x04); db(0x42); db(0x6a); - db(0x00); db(0x06); db(0x42); db(0x6a); db(0x00); db(0x08); db(0x20); db(0x6b); - db(0x00); db(0x14); db(0x30); db(0x3a); db(0xfc); db(0x0c); db(0x32); db(0x28); - db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); - db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0a); db(0x30); db(0x3a); - db(0xfb); db(0xfa); db(0x32); db(0x28); db(0x00); db(0x2e); db(0xd2); db(0x41); + db(0x48); db(0xe7); db(0xf0); db(0xfe); db(0x2a); db(0x48); db(0x95); db(0xca); + db(0x97); db(0xcb); db(0x99); db(0xcc); db(0x2c); db(0x6d); db(0x00); db(0x18); + db(0x20); db(0x6d); db(0x00); db(0x14); db(0x20); db(0x28); db(0x00); db(0x3c); + db(0x67); db(0x40); db(0x20); db(0x40); db(0x41); db(0xe8); db(0x00); db(0x2c); + db(0x28); db(0x48); db(0x4e); db(0xae); db(0xfc); db(0xe8); db(0x72); db(0xff); + db(0xb2); db(0x80); db(0x67); db(0x2e); db(0x26); db(0x00); db(0x91); db(0xc8); + db(0x43); db(0xed); db(0x00); db(0x30); db(0x70); db(0x00); db(0x30); db(0x3c); + db(0x00); db(0x58); db(0x22); db(0x3c); db(0x80); db(0x00); db(0x10); db(0x00); + db(0x24); db(0x03); db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x72); db(0xff); + db(0x74); db(0xff); db(0x4a); db(0x80); db(0x6b); db(0x0c); db(0x45); db(0xed); + db(0x00); db(0x30); db(0x22); db(0x2a); db(0x00); db(0x32); db(0x24); db(0x2a); + db(0x00); db(0x36); db(0x20); db(0x2c); db(0x00); db(0x1c); db(0xb0); db(0xad); + db(0x00); db(0x28); db(0x66); db(0x0c); db(0xb2); db(0xad); db(0x00); db(0x20); + db(0x66); db(0x06); db(0xb4); db(0xad); db(0x00); db(0x24); db(0x67); db(0x38); + db(0x2b); db(0x40); db(0x00); db(0x28); db(0x2b); db(0x41); db(0x00); db(0x20); + db(0x2b); db(0x42); db(0x00); db(0x24); db(0x91); db(0xc8); db(0x43); db(0xed); + db(0x00); db(0x88); db(0x70); db(0x00); db(0x30); db(0x3c); db(0x00); db(0x58); + db(0x22); db(0x3c); db(0x80); db(0x00); db(0x00); db(0x00); db(0x24); db(0x03); + db(0x4e); db(0xae); db(0xfd); db(0x0c); db(0x4a); db(0x80); db(0x6b); db(0x04); + db(0x47); db(0xed); db(0x00); db(0x88); db(0x30); db(0x3c); db(0xff); db(0x38); + db(0x72); db(0x01); db(0x61); db(0x00); db(0xfd); db(0x9c); db(0x4e); db(0x90); + db(0x4c); db(0xdf); db(0x7f); db(0x0f); db(0x4e); db(0x75); db(0x2c); db(0x78); + db(0x00); db(0x04); db(0x3e); db(0x2e); db(0x00); db(0x14); db(0x70); db(0xff); + db(0x4e); db(0xae); db(0xfe); db(0xb6); db(0x7c); db(0x00); db(0x01); db(0xc6); + db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x28); db(0x40); + db(0x70); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0xd4); + db(0x70); db(0x00); db(0x30); db(0x3c); db(0x01); db(0xa2); db(0x22); db(0x3c); + db(0x00); db(0x01); db(0x00); db(0x01); db(0x4e); db(0xae); db(0xff); db(0x3a); + db(0x2a); db(0x40); db(0x47); db(0xed); db(0x00); db(0x16); db(0x27); db(0x4e); + db(0x00); db(0x10); db(0x27); db(0x4c); db(0x00); db(0x08); db(0x27); db(0x46); + db(0x00); db(0x0c); db(0x70); db(0xff); db(0x37); db(0x40); db(0x00); db(0x00); + 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(0x06); db(0x13); db(0x23); db(0x48); db(0x00); db(0x0a); + db(0x41); db(0xfa); db(0x03); db(0x0e); db(0x23); db(0x48); db(0x00); db(0x12); + db(0x23); db(0x4d); db(0x00); db(0x0e); db(0x70); db(0x05); db(0x4e); db(0xae); + db(0xff); db(0x58); db(0x20); db(0x06); db(0x4e); db(0xae); db(0xfe); db(0xc2); + db(0x70); db(0x00); db(0x53); db(0xab); db(0x00); db(0x1c); db(0x6a); db(0x06); + db(0x70); db(0x0a); db(0x27); db(0x40); db(0x00); db(0x1c); db(0x4a); db(0xab); + db(0x00); db(0x14); db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c); + db(0x66); db(0xe0); db(0x43); db(0xfa); db(0x06); db(0x31); db(0x70); db(0x00); + db(0x4e); db(0xae); db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x14); + db(0x67); db(0x00); db(0xff); db(0xd0); db(0x4a); db(0xab); db(0x00); db(0x18); + db(0x66); db(0x18); db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xc2); + db(0x43); db(0xfa); db(0x06); db(0x25); db(0x70); db(0x00); db(0x4e); db(0xae); + db(0xfd); db(0xd8); db(0x27); db(0x40); db(0x00); db(0x18); db(0x67); db(0x00); + db(0xff); db(0xb2); db(0x4a); db(0xad); db(0x01); db(0x9a); db(0x66); db(0x38); + db(0x4a); db(0xab); db(0x00); db(0x1c); db(0x66); db(0xa4); db(0x4e); db(0xae); + db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); + db(0x05); db(0x54); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); + db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x8a); + db(0x41); db(0xfa); db(0x05); db(0x42); db(0x70); db(0x00); db(0x72); db(0x00); + db(0x61); db(0x00); db(0xfd); db(0x40); db(0x2b); db(0x40); db(0x01); db(0x9a); + db(0x67); db(0x00); db(0x02); db(0x74); db(0x60); db(0x00); db(0xff); db(0x74); + db(0x4a); db(0xad); db(0x01); db(0x9e); db(0x66); db(0x48); db(0x4a); db(0xab); + db(0x00); db(0x1c); db(0x66); db(0x00); db(0xff); db(0x66); db(0x4e); db(0xae); + db(0xff); db(0x7c); db(0x41); db(0xee); db(0x01); db(0x5e); db(0x43); db(0xfa); + db(0x05); db(0x21); db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); + db(0x4e); db(0xae); db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0x00); + db(0xff); db(0x4a); db(0x41); db(0xfa); db(0x05); db(0x0d); db(0x70); db(0x00); + db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0xfe); db(0x2b); db(0x40); + db(0x01); db(0x9e); db(0x67); db(0x00); db(0x02); db(0x32); db(0x30); db(0x3c); + db(0xff); db(0x38); db(0x72); db(0x00); db(0x61); db(0x00); db(0xfc); db(0x4a); + db(0x4e); db(0x90); db(0x60); db(0x00); db(0xff); db(0x26); db(0x0c); db(0x47); + db(0x00); db(0x24); db(0x65); db(0x06); db(0x20); db(0x4b); db(0x61); db(0x00); + db(0xfd); db(0xf8); db(0x22); db(0x6d); db(0x01); db(0x9a); db(0x45); db(0xed); + db(0x00); db(0xce); db(0x33); db(0x7c); db(0x00); db(0x0b); db(0x00); db(0x1c); + db(0x23); db(0x7c); db(0x00); db(0x00); db(0x00); db(0x16); db(0x00); db(0x24); + db(0x23); db(0x4a); db(0x00); db(0x28); db(0x10); db(0x3a); db(0xfd); db(0xae); + db(0x6a); db(0x08); db(0x0c); db(0x47); db(0x00); db(0x24); db(0x65); db(0x00); + db(0x01); db(0xaa); db(0x15); db(0x7c); db(0x00); db(0x13); db(0x00); db(0x04); + db(0x42); db(0x6a); db(0x00); db(0x06); db(0x22); db(0x3a); db(0xfd); db(0xb8); + db(0x02); db(0x41); db(0x00); db(0x07); db(0x70); db(0x07); db(0x90); db(0x41); + db(0xe1); db(0x48); db(0xe9); db(0x48); db(0x35); db(0x40); db(0x00); db(0x08); + db(0x41); db(0xed); db(0x00); db(0xfa); db(0x25); db(0x48); db(0x00); db(0x0a); + db(0x10); db(0x3a); db(0xfd); db(0x7a); db(0x6b); db(0x00); db(0x00); db(0xf2); + db(0x0c); db(0x47); db(0x00); db(0x27); db(0x65); db(0x00); db(0x00); db(0xee); + db(0x15); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x05); db(0x42); db(0x90); + db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0xa8); db(0x00); db(0x08); + db(0x42); db(0x68); db(0x00); db(0x0c); db(0x31); db(0x7a); db(0xfd); db(0x60); + db(0x00); db(0x0e); db(0x42); db(0x68); db(0x00); db(0x10); db(0x31); db(0x7a); + db(0xfd); db(0x58); db(0x00); db(0x12); db(0x42); db(0x68); db(0x00); db(0x14); + db(0x31); db(0x7a); db(0xfd); db(0x46); db(0x00); db(0x16); db(0x42); db(0x68); + db(0x00); db(0x18); db(0x31); db(0x7a); db(0xfd); db(0x3e); db(0x00); db(0x1a); + db(0x43); db(0xed); db(0x01); db(0x1a); db(0x21); db(0x49); db(0x00); db(0x1c); + db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x06); db(0x30); db(0x3a); + db(0xfd); db(0x44); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); + db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x07); db(0x22); db(0xfa); + db(0xfd); db(0x36); db(0x70); db(0x00); db(0x30); db(0x3a); db(0xfd); db(0x1e); + db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x09); + db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfd); db(0x12); db(0x6b); db(0x08); + db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x0a); db(0x22); db(0xc0); + db(0x30); db(0x3a); db(0xfc); db(0xfa); db(0x6b); db(0x14); db(0x22); db(0xfc); + db(0x80); db(0x03); db(0xa0); db(0x02); db(0x22); db(0xc0); db(0x30); db(0x3a); + db(0xfc); db(0xf2); db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x01); + db(0x22); db(0xc0); db(0x30); db(0x3a); db(0xfc); db(0xec); db(0x6b); db(0x10); + db(0x22); db(0xfc); db(0x80); db(0x03); db(0xa0); db(0x03); db(0x30); db(0x3a); + db(0xfc); db(0xe6); db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); + db(0x30); db(0x3a); db(0xfc); db(0xd8); db(0x6b); db(0x10); db(0x22); db(0xfc); + db(0x80); db(0x03); db(0xa0); db(0x04); db(0x30); db(0x3a); db(0xfc); db(0xd2); + db(0x48); db(0xc0); db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x30); db(0x3a); + db(0xfc); db(0xc4); db(0x6b); db(0x10); db(0x22); db(0xfc); db(0x80); db(0x03); + db(0xa0); db(0x05); db(0x30); db(0x3a); db(0xfc); db(0xbe); db(0x48); db(0xc0); + db(0xe1); db(0x80); db(0x22); db(0xc0); db(0x70); db(0x00); db(0x30); db(0x3a); + db(0xfc); db(0xba); db(0x6b); db(0x08); db(0x22); db(0xfc); db(0x80); db(0x03); + db(0xa0); db(0x08); db(0x22); db(0xc0); db(0x42); db(0x91); db(0x60); db(0x32); + db(0x42); db(0x6a); db(0x00); db(0x08); db(0x0c); db(0x47); db(0x00); db(0x24); + db(0x65); db(0x00); db(0xfd); db(0xc8); db(0x15); db(0x7c); db(0x00); db(0x02); + db(0x00); db(0x05); db(0x30); db(0xba); db(0xfc); db(0x74); db(0x31); db(0x7a); + db(0xfc); db(0x72); db(0x00); db(0x02); db(0x31); db(0x7a); db(0xfc); db(0x70); + db(0x00); db(0x04); db(0x31); db(0x7a); db(0xfc); db(0x6c); db(0x00); db(0x06); + db(0x30); db(0x3a); db(0xfc); db(0x7a); db(0xe0); db(0x40); db(0x31); db(0x40); + db(0x00); db(0x08); db(0x61); db(0x00); db(0xfc); db(0x38); db(0x10); db(0x3a); + db(0xfc); db(0x4c); db(0x6b); db(0x00); db(0xfd); db(0x96); db(0x36); db(0x3c); + db(0x00); db(0x68); db(0x74); db(0x01); db(0x28); db(0x3a); db(0xfc); db(0x60); + db(0x20); db(0x04); db(0xc0); db(0x82); db(0x22); db(0x2b); db(0x00); db(0x04); + db(0xc2); db(0x82); db(0xb2); db(0x80); db(0x67); db(0x22); db(0x42); db(0x92); + db(0x35); db(0x7c); db(0x02); db(0x00); db(0x00); db(0x04); db(0x42); db(0xaa); + db(0x00); db(0x0a); db(0x32); db(0x03); db(0x4a); db(0x00); db(0x66); db(0x04); + db(0x08); db(0xc1); db(0x00); db(0x07); db(0x35); db(0x41); db(0x00); db(0x06); + db(0x42); db(0x6a); db(0x00); db(0x08); db(0x61); db(0x00); db(0xfb); db(0xf6); + db(0x52); db(0x43); db(0xd4); db(0x42); db(0x0c); db(0x42); db(0x00); db(0x08); + db(0x66); db(0xc6); db(0x27); db(0x44); db(0x00); db(0x04); db(0x60); db(0x00); + db(0xfd); db(0x4a); db(0x42); db(0x92); db(0x35); db(0x7c); db(0x04); db(0x00); + db(0x00); db(0x04); db(0x42); db(0x6a); db(0x00); db(0x06); db(0x42); db(0x6a); + db(0x00); db(0x08); db(0x20); db(0x6b); db(0x00); db(0x14); db(0x30); db(0x3a); + db(0xfc); db(0x0c); db(0x32); db(0x28); db(0x00); db(0x30); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); db(0x70); db(0x00); db(0x35); db(0x40); - db(0x00); db(0x0c); db(0x61); db(0x00); db(0xfb); db(0x70); db(0x60); db(0x00); - db(0xfd); db(0x06); db(0x4e); db(0x75); db(0x4a); db(0xa9); db(0x01); db(0x9a); - db(0x67); db(0x14); db(0x4a); db(0xa9); db(0x01); db(0x9e); db(0x67); db(0x0e); - db(0x30); db(0x3a); db(0xfb); db(0xa8); db(0xb0); db(0x69); db(0x00); db(0x16); - db(0x67); db(0x14); db(0x33); db(0x40); db(0x00); db(0x16); db(0x2c); db(0x69); - db(0x00); db(0x26); db(0x20); db(0x29); db(0x00); db(0x22); db(0x22); db(0x69); - db(0x00); db(0x1e); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x53); db(0x69); - db(0x00); db(0x42); db(0x6a); db(0x12); db(0x33); db(0x7c); db(0x00); db(0x32); - db(0x00); db(0x42); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x02); - db(0x61); db(0x00); db(0xf9); db(0xe2); db(0x4e); db(0x90); db(0x41); db(0xf9); - db(0x00); db(0xdf); db(0xf0); db(0x00); db(0x70); db(0x00); db(0x4e); db(0x75); - db(0x2c); db(0x78); db(0x00); db(0x04); db(0x20); db(0x3c); db(0x00); db(0x00); - db(0x00); db(0x84); 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(0x93); db(0xc9); - db(0x4e); db(0xae); db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x04); - db(0x41); db(0xfa); db(0x00); db(0x86); db(0x70); db(0x00); db(0x72); db(0x00); - db(0x32); db(0x3c); db(0x00); db(0x34); db(0x61); db(0x00); db(0xfa); db(0x48); - db(0x28); db(0x40); db(0x41); db(0xed); db(0x00); db(0x0c); db(0x29); db(0x48); - db(0x00); db(0x28); db(0x70); db(0x01); db(0x29); db(0x40); db(0x00); db(0x24); - db(0x39); db(0x7c); db(0x00); db(0x0c); db(0x00); db(0x1c); db(0x2b); db(0x4d); - db(0x00); db(0x1c); db(0x41); db(0xfa); db(0x00); db(0x1c); db(0x2b); db(0x48); - db(0x00); db(0x14); db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); - db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); db(0x4e); db(0xae); - db(0xfe); db(0xc2); db(0x39); db(0x7c); db(0x00); db(0x02); db(0x00); db(0x1c); - db(0x48); db(0xe7); db(0x00); db(0x06); db(0x2a); db(0x48); db(0x2b); db(0x69); - db(0x00); db(0x08); db(0x00); db(0x08); db(0x2c); db(0x6d); db(0x00); db(0x00); - db(0x22); db(0x6d); db(0x00); db(0x04); db(0x70); db(0x00); db(0x08); db(0xc0); - db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x70); db(0x00); - db(0x4c); db(0xdf); db(0x60); 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(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); - db(0x64); db(0x2e); db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); - db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(0x6d); db(0x6f); db(0x75); - db(0x73); db(0x65); db(0x20); db(0x64); db(0x72); db(0x69); db(0x76); db(0x65); - db(0x72); db(0x00); db(0x55); db(0x41); db(0x45); db(0x20); db(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(0x67); db(0x72); db(0x61); db(0x70); db(0x68); - db(0x69); db(0x63); db(0x73); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); - db(0x61); db(0x72); db(0x79); db(0x00); db(0x65); db(0x78); db(0x70); db(0x61); - db(0x6e); db(0x73); db(0x69); db(0x6f); db(0x6e); db(0x2e); db(0x6c); db(0x69); - db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); db(0x46); db(0x69); - db(0x6c); db(0x65); db(0x53); db(0x79); db(0x73); db(0x74); db(0x65); db(0x6d); - db(0x2e); db(0x72); db(0x65); db(0x73); db(0x6f); db(0x75); db(0x72); db(0x63); - db(0x65); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x03); db(0xf2); + db(0x00); db(0x0a); db(0x30); db(0x3a); db(0xfb); db(0xfa); db(0x32); db(0x28); + db(0x00); db(0x2e); db(0xd2); db(0x41); db(0x90); db(0x41); db(0x6a); db(0x02); + db(0x70); db(0x00); db(0x35); db(0x40); db(0x00); db(0x0c); db(0x61); db(0x00); + db(0xfb); db(0x70); db(0x60); db(0x00); db(0xfd); db(0x06); db(0x4e); db(0x75); + db(0x4a); db(0xa9); db(0x01); db(0x9a); db(0x67); db(0x14); db(0x4a); db(0xa9); + db(0x01); db(0x9e); db(0x67); db(0x0e); db(0x30); db(0x3a); db(0xfb); db(0xa8); + db(0xb0); db(0x69); db(0x00); db(0x16); db(0x67); db(0x14); db(0x33); db(0x40); + db(0x00); db(0x16); db(0x2c); db(0x69); db(0x00); db(0x26); db(0x20); db(0x29); + db(0x00); db(0x22); db(0x22); db(0x69); db(0x00); db(0x1e); db(0x4e); db(0xae); + db(0xfe); db(0xbc); db(0x53); db(0x69); db(0x00); db(0x42); db(0x6a); db(0x12); + db(0x33); db(0x7c); db(0x00); db(0x32); db(0x00); db(0x42); db(0x30); db(0x3c); + db(0xff); db(0x38); db(0x72); db(0x02); db(0x61); db(0x00); db(0xf9); db(0xe2); + db(0x4e); db(0x90); db(0x41); db(0xf9); db(0x00); db(0xdf); db(0xf0); db(0x00); + db(0x70); db(0x00); db(0x4e); db(0x75); db(0x41); db(0xfa); db(0x02); db(0x99); + db(0x43); db(0xfa); db(0x00); db(0x0a); db(0x70); db(0xf6); db(0x61); db(0x00); + db(0xfa); db(0xa4); db(0x4e); db(0x75); db(0x2c); db(0x78); db(0x00); db(0x04); + db(0x20); db(0x3c); db(0x00); db(0x00); db(0x00); db(0x34); 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(0xe6); db(0x2a); db(0x40); db(0x2b); db(0x4e); + db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae); db(0xfe); db(0xda); + db(0x2b); db(0x40); db(0x00); db(0x08); db(0x30); db(0x3c); db(0xff); db(0x38); + db(0x72); db(0x0e); db(0x61); db(0x00); db(0xf9); db(0x94); db(0x20); db(0x0d); + db(0x4e); db(0x90); db(0x70); db(0x00); db(0x08); db(0xc0); db(0x00); db(0x0d); + db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x4e); db(0xae); db(0xff); db(0x7c); + db(0x41); db(0xee); db(0x01); db(0x7a); db(0x43); db(0xfa); db(0x02); db(0xa3); + db(0x4e); db(0xae); db(0xfe); db(0xec); db(0x24); db(0x00); db(0x4e); db(0xae); + db(0xff); db(0x76); db(0x4a); db(0x82); db(0x67); db(0xdc); db(0x42); db(0xad); + db(0x00); db(0x08); db(0x41); db(0xfa); db(0x02); db(0x2b); db(0x43); db(0xfa); + db(0x00); db(0x18); db(0x70); db(0xf6); db(0x22); db(0x3c); db(0x00); db(0x00); + db(0x0f); db(0xa0); db(0x61); db(0x00); db(0xee); db(0x9a); db(0x70); db(0x00); + db(0x4e); db(0x75); db(0x00); db(0x00); db(0x00); db(0x00); db(0x00); db(0x10); + db(0x00); db(0x00); db(0x00); db(0x00); db(0x30); db(0x3c); db(0xff); db(0x38); + db(0x72); db(0x0d); db(0x61); db(0x00); db(0xf9); db(0x3c); db(0x4e); db(0x90); + db(0x4a); db(0x80); db(0x67); db(0x00); db(0xff); db(0x6e); db(0x2a); db(0x40); + db(0x2c); db(0x6d); db(0x00); db(0x14); db(0x93); db(0xc9); db(0x4e); db(0xae); + db(0xfe); db(0xda); db(0x2b); db(0x40); db(0x00); db(0x08); db(0x61); db(0x00); + db(0xf9); db(0x3c); db(0x72); db(0x00); db(0x32); db(0x3c); db(0x00); db(0x34); + db(0x61); db(0x00); db(0xf9); db(0x80); db(0x28); db(0x40); db(0x4a); db(0x80); + db(0x67); db(0x00); db(0xff); db(0x48); db(0x70); db(0x00); db(0x08); db(0xc0); + db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x72); db(0x00); + db(0x20); db(0x2d); db(0x00); db(0x0c); db(0x41); db(0xfa); db(0x01); db(0xb0); + db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x44); db(0x24); db(0x00); + db(0x66); db(0xe2); db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0a); + db(0x61); db(0x00); db(0xf8); db(0xe6); db(0x4e); db(0x90); db(0x41); db(0xed); + db(0x00); db(0x18); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); + db(0x29); db(0x40); db(0x00); db(0x24); db(0x39); db(0x7c); db(0x00); db(0x0c); + db(0x00); db(0x1c); db(0x2b); db(0x4d); db(0x00); db(0x28); db(0x41); db(0xfa); + db(0x01); db(0x38); db(0x2b); db(0x48); db(0x00); db(0x20); db(0x22); db(0x4c); + db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x70); db(0x00); db(0x08); db(0xc0); + db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xc2); db(0x20); db(0x2d); + db(0x00); db(0x00); db(0x67); db(0x00); db(0x00); db(0x72); db(0x72); db(0x01); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x2b); db(0x40); db(0x00); db(0x04); + db(0x30); db(0x3c); db(0xff); db(0x38); db(0x72); db(0x0c); db(0x61); db(0x00); + db(0xf8); db(0x98); db(0x4e); db(0x90); db(0x4a); db(0xad); db(0x00); db(0x04); + db(0x67); db(0x3a); db(0x39); db(0x7c); db(0x00); db(0x03); db(0x00); db(0x1c); + db(0x42); db(0x2c); db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x20); + db(0x29); db(0x6d); db(0x00); db(0x00); db(0x00); db(0x24); db(0x29); db(0x6d); + db(0x00); db(0x04); db(0x00); db(0x28); db(0x42); db(0xac); db(0x00); db(0x2c); + db(0x42); db(0xac); db(0x00); db(0x30); db(0x22); db(0x4c); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x2b); db(0x6c); db(0x00); db(0x30); db(0x00); db(0x10); + db(0x39); db(0x7c); db(0x00); db(0x04); db(0x00); db(0x1c); db(0x22); db(0x4c); + db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x20); db(0x2d); db(0x00); db(0x00); + db(0x42); db(0xad); db(0x00); db(0x00); db(0x22); db(0x2d); db(0x00); db(0x04); + db(0x67); db(0x00); db(0xff); db(0x8a); db(0x22); db(0x41); db(0x4e); db(0xae); + db(0xff); db(0x2e); db(0x60); db(0x00); db(0xff); db(0x80); db(0x39); db(0x7c); + db(0x00); db(0x02); db(0x00); db(0x1c); db(0x41); db(0xed); db(0x00); db(0x2c); + db(0x42); db(0x90); db(0x42); db(0xa8); db(0x00); db(0x04); db(0x42); db(0x2c); + db(0x00); db(0x1f); db(0x42); db(0xac); db(0x00); db(0x2c); db(0x42); db(0xac); + db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x08); + db(0x29); db(0x40); db(0x00); db(0x24); db(0x22); db(0x4c); db(0x4e); db(0xae); + db(0xfe); db(0x38); db(0x0c); db(0xad); db(0x46); db(0x4f); db(0x52); db(0x4d); + db(0x00); db(0x2c); db(0x66); db(0x52); db(0x20); db(0x2d); db(0x00); db(0x30); + db(0x67); db(0x4c); db(0x6b); db(0x4a); db(0x2b); db(0x6c); db(0x00); db(0x30); + db(0x00); db(0x10); db(0x50); db(0x80); db(0x24); db(0x00); db(0x72); db(0x01); + db(0x4e); db(0xae); db(0xff); db(0x3a); db(0x4a); db(0x80); db(0x67); db(0x36); + db(0x24); db(0x40); db(0x20); db(0x4a); db(0x20); db(0xed); db(0x00); db(0x2c); + db(0x20); db(0xed); db(0x00); db(0x30); db(0x29); db(0x48); db(0x00); db(0x28); + db(0x20); db(0x02); db(0x51); db(0x80); db(0x29); db(0x40); db(0x00); db(0x24); + db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x30); db(0x3c); + db(0xff); db(0x38); db(0x72); db(0x0b); db(0x61); db(0x00); db(0xf7); db(0xc2); + db(0x20); db(0x2c); db(0x00); db(0x20); db(0x4e); db(0x90); db(0x22); db(0x4a); + db(0x20); db(0x02); db(0x4e); db(0xae); db(0xff); db(0x2e); db(0x4a); db(0xac); + db(0x00); db(0x20); db(0x67); db(0x00); db(0xfe); db(0xf0); db(0x41); db(0xed); + db(0x00); db(0x2c); db(0x29); db(0x48); db(0x00); db(0x28); db(0x70); db(0x01); + db(0x29); db(0x40); db(0x00); db(0x24); db(0x42); db(0xac); db(0x00); db(0x20); + db(0x22); db(0x4c); db(0x4e); db(0xae); db(0xfe); db(0x38); db(0x60); db(0xde); + db(0x41); db(0xe8); db(0xff); db(0xe8); db(0x20); db(0x29); db(0x00); db(0x08); + db(0xb0); db(0xa8); db(0x00); db(0x10); db(0x67); db(0x1a); db(0x21); db(0x40); + db(0x00); db(0x10); db(0x2f); db(0x0e); db(0x2c); db(0x68); db(0x00); db(0x14); + db(0x22); db(0x68); db(0x00); db(0x08); db(0x70); db(0x00); db(0x08); db(0xc0); + db(0x00); db(0x0d); db(0x4e); db(0xae); db(0xfe); db(0xbc); db(0x2c); db(0x5f); + 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(0x63); db(0x6c); + db(0x69); db(0x70); db(0x62); db(0x6f); db(0x61); db(0x72); db(0x64); db(0x2e); + db(0x64); db(0x65); db(0x76); db(0x69); db(0x63); db(0x65); db(0x00); db(0x55); + db(0x41); db(0x45); db(0x20); db(0x63); db(0x6c); db(0x69); db(0x70); db(0x62); + db(0x6f); db(0x61); db(0x72); db(0x64); db(0x20); db(0x73); db(0x68); db(0x61); + db(0x72); db(0x69); db(0x6e); db(0x67); db(0x00); db(0x55); db(0x41); db(0x45); + db(0x20); db(0x6d); db(0x6f); db(0x75); db(0x73); db(0x65); db(0x20); db(0x64); + db(0x72); db(0x69); db(0x76); db(0x65); db(0x72); db(0x00); db(0x55); db(0x41); + db(0x45); db(0x20); db(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(0x67); + db(0x72); db(0x61); db(0x70); db(0x68); db(0x69); db(0x63); db(0x73); db(0x2e); + db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); db(0x79); db(0x00); + db(0x65); db(0x78); db(0x70); db(0x61); db(0x6e); db(0x73); db(0x69); db(0x6f); + db(0x6e); db(0x2e); db(0x6c); db(0x69); db(0x62); db(0x72); db(0x61); db(0x72); + db(0x79); db(0x00); db(0x46); db(0x69); db(0x6c); db(0x65); db(0x53); db(0x79); + db(0x73); db(0x74); db(0x65); db(0x6d); db(0x2e); db(0x72); db(0x65); db(0x73); + db(0x6f); db(0x75); db(0x72); db(0x63); db(0x65); db(0x00); db(0x00); db(0x00); + db(0x00); db(0x00); db(0x03); db(0xf2); diff --git a/include/clipboard.h b/include/clipboard.h new file mode 100644 index 00000000..db94cef4 --- /dev/null +++ b/include/clipboard.h @@ -0,0 +1,8 @@ + +extern void amiga_clipboard_want_data (void); +extern void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual); +extern void amiga_clipboard_init (void); +extern uaecptr amiga_clipboard_proc_start (void); +extern void amiga_clipboard_task_start (uaecptr); + +extern void clipboard_vsync (void); \ No newline at end of file diff --git a/include/debug.h b/include/debug.h index 99f8ac5e..3479a964 100644 --- a/include/debug.h +++ b/include/debug.h @@ -16,6 +16,7 @@ extern int debugging; extern int exception_debugging; extern int debug_copper; extern int debug_sprite_mask; +extern int debug_bpl_mask, debug_bpl_mask_one; extern int debugger_active; extern void debug(void); diff --git a/include/native2amiga.h b/include/native2amiga.h index 31ca6f85..1d846938 100644 --- a/include/native2amiga.h +++ b/include/native2amiga.h @@ -10,19 +10,9 @@ * and some of it needs thread support. */ -/* - * The following functions do exactly the same thing as their - * Amiga counterpart, but can be called in situation where calling - * the exec.library functions is impossible. - */ -#ifdef SUPPORT_THREADS -void uae_Cause(uaecptr interrupt); -void uae_ReplyMsg(uaecptr msg); -void uae_PutMsg(uaecptr port, uaecptr msg); -void uae_Signal(uaecptr task, uae_u32 mask); -void uae_NotificationHack(uaecptr, uaecptr); -#endif -void uae_NewList(uaecptr list); +#include "native2amiga_api.h" + +#include "traps.h" /* * The following functions are shortcuts for calling diff --git a/include/native2amiga_api.h b/include/native2amiga_api.h new file mode 100644 index 00000000..1a243ba2 --- /dev/null +++ b/include/native2amiga_api.h @@ -0,0 +1,13 @@ +/* + * The following functions do exactly the same thing as their + * Amiga counterpart, but can be called in situation where calling + * the exec.library functions is impossible. + */ +#ifdef SUPPORT_THREADS +void uae_Cause(uaecptr interrupt); +void uae_ReplyMsg(uaecptr msg); +void uae_PutMsg(uaecptr port, uaecptr msg); +void uae_Signal(uaecptr task, uae_u32 mask); +void uae_NotificationHack(uaecptr, uaecptr); +#endif +void uae_NewList(uaecptr list); diff --git a/include/uae.h b/include/uae.h index d829ea15..84f13495 100644 --- a/include/uae.h +++ b/include/uae.h @@ -21,6 +21,7 @@ extern void uae_reset (int); extern void uae_quit (void); extern void uae_restart (int, char*); extern void reset_all_systems (void); +extern void target_reset (void); extern int quit_program; diff --git a/missing.c b/missing.c index 47ba7f84..54863692 100644 --- a/missing.c +++ b/missing.c @@ -37,5 +37,6 @@ void *xcalloc (size_t n, size_t size) void xfree (void *p) { + free (p); } diff --git a/od-win32/ahidsound.c b/od-win32/ahidsound.c index f7dc73fa..d9ff1375 100644 --- a/od-win32/ahidsound.c +++ b/od-win32/ahidsound.c @@ -552,6 +552,7 @@ uae_u32 REGPARAM2 ahi_demux (TrapContext *context) return 1; case 10: +#if 0 if (OpenClipboard (0)) { clipdat = GetClipboardData (CF_TEXT); if (clipdat) { @@ -560,19 +561,23 @@ uae_u32 REGPARAM2 ahi_demux (TrapContext *context) return clipsize; } } - return 0; +#endif + return 0; case 11: { +#if 0 int i; for (i = 0; i < clipsize; i++) put_byte (m68k_areg (&context->regs, 0) + i, clipdat[i]); CloseClipboard (); +#endif } return 0; case 12: { +#if 0 uae_u8 *addr = get_real_address (m68k_areg (®s, 0)); static LPTSTR p; int slen; @@ -595,6 +600,7 @@ uae_u32 REGPARAM2 ahi_demux (TrapContext *context) } CloseClipboard (); } +#endif } return 0; diff --git a/od-win32/clipboard.c b/od-win32/clipboard.c deleted file mode 100644 index 92648dfd..00000000 --- a/od-win32/clipboard.c +++ /dev/null @@ -1,55 +0,0 @@ - -#include "sysconfig.h" -#include "sysdeps.h" - -#include -#include - -#include - -#include "clipboard.h" - -static HWND chwnd; - -void clipboard_init (HWND hwnd) -{ - chwnd = hwnd; -} - -void clipboard_changed (HWND hwnd) -{ - HGLOBAL hglb; - - if (!IsClipboardFormatAvailable (CF_TEXT)) - return; - if (!OpenClipboard (hwnd)) - return; - hglb = GetClipboardData (CF_TEXT); - if (hglb != NULL) { - char *lptstr = GlobalLock (hglb); - if (lptstr != NULL) { - GlobalUnlock (hglb); - } - } - CloseClipboard (); -} - -int clipboard_put_text (const char *txt) -{ - HGLOBAL hglb; - int ret = FALSE; - - if (!OpenClipboard (chwnd)) - return ret; - EmptyClipboard (); - hglb = GlobalAlloc (GMEM_MOVEABLE, strlen (txt) + 1); - if (hglb) { - char *lptstr = GlobalLock (hglb); - strcpy (lptstr, txt); - GlobalUnlock (hglb); - SetClipboardData (CF_TEXT, hglb); - ret = TRUE; - } - CloseClipboard (); - return ret; -} diff --git a/od-win32/clipboard_win32.c b/od-win32/clipboard_win32.c new file mode 100644 index 00000000..5e7efc81 --- /dev/null +++ b/od-win32/clipboard_win32.c @@ -0,0 +1,261 @@ + +#include "sysconfig.h" +#include "sysdeps.h" + +#include +#include + +#include + +#include "clipboard_win32.h" +#include "clipboard.h" + +#include "memory.h" +#include "native2amiga_api.h" + +static HWND chwnd; +static uaecptr clipboard_data; +static int vdelay, signaling; +static uae_u8 *to_amiga; +static uae_u32 to_amiga_size; +static int clipopen; + +void clipboard_vsync (void) +{ + uaecptr task; + if (!signaling || !clipboard_data) + return; + vdelay--; + if (vdelay > 0) + return; + task = get_long (clipboard_data + 8); + if (task) + uae_Signal (task, 1 << 13); + vdelay = 50; +} + +void clipboard_reset (void) +{ + vdelay = 100; + clipboard_data = 0; + signaling = 0; + xfree (to_amiga); + to_amiga = NULL; + to_amiga_size = 0; +} + +void clipboard_init (HWND hwnd) +{ + chwnd = hwnd; +} + +static void to_amiga_start (void) +{ + if (!clipboard_data) + return; + put_long (clipboard_data, to_amiga_size); + uae_Signal (get_long (clipboard_data + 8), 1 << 13); +} + +static char *pctoamiga (const char *txt) +{ + int len; + char *txt2; + int i, j; + + len = strlen (txt) + 1; + txt2 = xmalloc (len); + j = 0; + for (i = 0; i < len; i++) { + char c = txt[i]; + if (c == 13) + continue; + txt2[j++] = c; + } + return txt2; +} +static char *amigatopc (const char *txt) +{ + int i, j, cnt; + int len, pc; + char *txt2; + + pc = 0; + cnt = 0; + len = strlen (txt) + 1; + for (i = 0; i < len; i++) { + char c = txt[i]; + if (c == 13) + pc = 1; + if (c == 10) + cnt++; + } + if (pc) + return my_strdup (txt); + txt2 = xmalloc (len + cnt); + j = 0; + for (i = 0; i < len; i++) { + char c = txt[i]; + if (c == 0 && i + 1 < len) + continue; + if (c == 10) + txt2[j++] = 13; + txt2[j++] = c; + } + return txt2; +} + + +static void to_iff_text (char *pctxt) +{ + uae_u8 b[] = { 'F','O','R','M',0,0,0,0,'F','T','X','T','C','H','R','S',0,0,0,0 }; + uae_u32 size; + int txtlen; + char *txt; + + txt = pctoamiga (pctxt); + txtlen = strlen (txt); + xfree (to_amiga); + size = txtlen + sizeof b + (txtlen & 1) - 8; + b[4] = size >> 24; + b[5] = size >> 16; + b[6] = size >> 8; + b[7] = size >> 0; + size = txtlen; + b[16] = size >> 24; + b[17] = size >> 16; + b[18] = size >> 8; + b[19] = size >> 0; + to_amiga_size = sizeof b + txtlen + (txtlen & 1); + to_amiga = xcalloc (to_amiga_size, 1); + memcpy (to_amiga, b, sizeof b); + memcpy (to_amiga + sizeof b, txt, strlen (txt)); + to_amiga_start (); + xfree (txt); +} + +static void from_iff_text (uaecptr ftxt, uae_u32 len) +{ + uae_u32 size; + uae_u8 *addr; + char *txt, *pctxt; + + if (len < 18) + return; + if (!valid_address (ftxt, len)) + return; + addr = get_real_address (ftxt); + if (memcmp ("FORM", addr, 4)) + return; + if (memcmp ("FTXTCHRS", addr + 8, 8)) + return; + size = (addr[16] << 24) | (addr[17] << 16) | (addr[18] << 8) | (addr[19] << 0); + if (size >= len) + return; + txt = xcalloc (size + 1, 1); + if (!txt) + return; + memcpy (txt, addr + 20, size); + pctxt = amigatopc (txt); + clipboard_put_text (pctxt); + xfree (pctxt); + xfree (txt); +} + +void clipboard_changed (HWND hwnd) +{ + HGLOBAL hglb; + UINT f; + int text = FALSE; + + if (!clipboard_data) + return; + if (clipopen) + return; + if (!OpenClipboard (hwnd)) + return; + f = 0; + write_log ("clipboard: windows clipboard change: "); + while (f = EnumClipboardFormats (f)) { + write_log ("%d ", f); + if (f == CF_TEXT) + text = TRUE; + } + write_log ("\n"); + if (text) { + hglb = GetClipboardData (CF_TEXT); + if (hglb != NULL) { + char *lptstr = GlobalLock (hglb); + if (lptstr != NULL) { + to_iff_text (lptstr); + GlobalUnlock (hglb); + } + } + } + CloseClipboard (); +} + +int clipboard_put_text (const char *txt) +{ + HGLOBAL hglb; + int ret = FALSE; + + if (!OpenClipboard (chwnd)) + return ret; + clipopen++; + EmptyClipboard (); + hglb = GlobalAlloc (GMEM_MOVEABLE, strlen (txt) + 1); + if (hglb) { + char *lptstr = GlobalLock (hglb); + strcpy (lptstr, txt); + GlobalUnlock (hglb); + SetClipboardData (CF_TEXT, hglb); + ret = TRUE; + } + CloseClipboard (); + clipopen--; + write_log ("clipboard: writing to windows clipboard\n"); + return ret; +} + +void amiga_clipboard_init (void) +{ + signaling = 0; + write_log ("clipboard active\n"); +} + +void amiga_clipboard_task_start (uaecptr data) +{ + clipboard_data = data; + signaling = 1; + write_log ("clipboard task init: %08x\n", data); +} + +uae_u32 amiga_clipboard_proc_start (void) +{ + write_log ("clipboard process init\n"); + signaling = 1; + return clipboard_data; +} + +void amiga_clipboard_got_data (uaecptr data, uae_u32 size, uae_u32 actual) +{ + uae_u8 *addr = get_real_address (data); + write_log ("clipboard: <-amiga, %08x %d %d\n", data, size, actual); + from_iff_text (data, actual); +} + +void amiga_clipboard_want_data (void) +{ + uae_u32 addr; + + addr = get_long (clipboard_data + 4); + if (addr) { + uae_u8 *raddr = get_real_address (addr); + memcpy (raddr, to_amiga, to_amiga_size); + } + xfree (to_amiga); + write_log ("clipboard: ->amiga, %08x %d bytes\n", addr, to_amiga_size); + to_amiga = NULL; + to_amiga_size = 0; +} diff --git a/od-win32/clipboard.h b/od-win32/clipboard_win32.h similarity index 78% rename from od-win32/clipboard.h rename to od-win32/clipboard_win32.h index 9006605d..fd14b165 100644 --- a/od-win32/clipboard.h +++ b/od-win32/clipboard_win32.h @@ -2,4 +2,4 @@ extern void clipboard_init (HWND hwnd); extern void clipboard_changed (HWND); extern int clipboard_put_text (const char *txt); - +extern void clipboard_reset (void); \ No newline at end of file diff --git a/od-win32/cloanto/RetroPlatformIPC.h b/od-win32/cloanto/RetroPlatformIPC.h index 9960c664..be6b9efd 100644 --- a/od-win32/cloanto/RetroPlatformIPC.h +++ b/od-win32/cloanto/RetroPlatformIPC.h @@ -7,7 +7,7 @@ : License version 2 as published by the Free Software Foundation. Authors : os, mcb Created : 2007-08-27 13:55:49 - Updated : 2008-05-28 18:50:10 + Updated : 2008-12-19 12:38:00 Comment : RP Player interprocess communication include file *****************************************************************************/ @@ -70,6 +70,7 @@ #define RPIPCHM_MOUSECAPTURE (WM_APP + 212) #define RPIPCHM_SAVESTATE (WM_APP + 213) #define RPIPCHM_LOADSTATE (WM_APP + 214) +#define RPIPCHM_FLUSH (WM_APP + 215) // **************************************************************************** @@ -88,6 +89,7 @@ #define RP_FEATURE_TURBO 0x00000100 // turbo mode functionality is available (see RPIPCHM_TURBO message) #define RP_FEATURE_VOLUME 0x00000200 // volume adjustment is possible (see RPIPCHM_VOLUME message) #define RP_FEATURE_STATE 0x00000400 // loading and saving of emulation state is supported (see RPIPCHM_SAVESTATE/RPIPCHM_LOADSTATE message) +#define RP_FEATURE_SCANLINES 0x00000800 // scan lines video effect is available // Screen Modes #define RP_SCREENMODE_1X 0x00000000 // 1x window or full-screen mode ("CGA mode") @@ -95,11 +97,19 @@ #define RP_SCREENMODE_3X 0x00000002 // 3x window or full-screen mode ("triple CGA mode") #define RP_SCREENMODE_4X 0x00000003 // 4x window or full-screen mode ("double VGA mode") #define RP_SCREENMODE_XX 0x000000FF // autoset maximum nX (integer n, preserve ratio) +#define RP_SCREENMODE_MODEMASK 0x000000FF #define RP_SCREENMODE_FULLSCREEN_1 0x00000100 // full screen on primary (default) display #define RP_SCREENMODE_FULLSCREEN_2 0x00000200 // full screen on secondary display (fallback to 1 if unavailable) +#define RP_SCREENMODE_DISPLAYMASK 0x0000FF00 #define RP_SCREENMODE_FULLWINDOW 0x00010000 // use "full window" when in fullscreen (no gfx card full screen) -#define RP_SCREENMODE_MODE(m) ((m) & 0x000000FF) // given a mode 'm' returns the #X mode -#define RP_SCREENMODE_DISPLAY(m) (((m) >> 8) & 0x000000FF) // given a mode 'm' returns the display number (1-255) or 0 if full screen is not active +#define RP_SCREENMODE_USETVM_NEVER 0x00000000 // never use TV modes +#define RP_SCREENMODE_USETVM_ALWAYS 0x00020000 // always use TV modes +#define RP_SCREENMODE_USETVM_AUTO 0x00040000 // use all available modes +#define RP_SCREENMODE_USETVMMASK 0x00060000 +#define RP_SCREENMODE_SCANLINES 0x00080000 // show video scan lines +#define RP_SCREENMODE_DISPLAY(m) (((m) & RP_SCREENMODE_DISPLAYMASK) >> 8) // given a mode 'm' returns the display number (1-255) or 0 if full screen is not active +#define RP_SCREENMODE_USETVM(m) ((m) & RP_SCREENMODE_USETVMMASK) // given a mode 'm' returns the RP_SCREENMODE_USETVM_* value in it (automatic display mode selection in full screen modes) +#define RP_SCREENMODE_MODE(m) ((m) & RP_SCREENMODE_MODEMASK) // given a mode 'm' returns the #X mode typedef struct RPScreenMode { @@ -135,9 +145,9 @@ typedef struct RPDeviceContent #define RP_IPD_MOUSE2 L"Mouse2" // second mouse type (e.g. Mouse for WinUAE) #define RP_IPD_MOUSE3 L"Mouse3" // third mouse type (e.g. Mousehack Mouse for WinUAE) #define RP_IPD_MOUSE4 L"Mouse4" // fourth mouse type (e.g. RAW Mouse for WinUAE) -#define RP_IPD_JOYSTICK1 L"Joystick1" // first joystick type (e.g. standard joystick for WinUAE, described as "Joystick1\ProductGUID\ProductName") -#define RP_IPD_JOYSTICK2 L"Joystick2" // second joystick type (e.g. X-Arcade (Left) joystick for WinUAE, described as "Joystick2\ProductGUID\ProductName") -#define RP_IPD_JOYSTICK3 L"Joystick3" // third joystick type (e.g. X-Arcade (Right) joystick for WinUAE, described as "Joystick3\ProductGUID\ProductName") +#define RP_IPD_JOYSTICK1 L"Joystick1" // first joystick type (e.g. standard joystick for WinUAE, described as "Joystick1\ProductGUID InstanceGUID\ProductName") +#define RP_IPD_JOYSTICK2 L"Joystick2" // second joystick type (e.g. X-Arcade (Left) joystick for WinUAE, described as "Joystick2\ProductGUID InstanceGUID\ProductName") +#define RP_IPD_JOYSTICK3 L"Joystick3" // third joystick type (e.g. X-Arcade (Right) joystick for WinUAE, described as "Joystick3\ProductGUID InstanceGUID\ProductName") #define RP_IPD_KEYBDL1 L"KeyboardLayout1" // first joystick emulation keyboard layout (e.g. Keyboard Layout A for WinUAE) #define RP_IPD_KEYBDL2 L"KeyboardLayout2" // second joystick emulation keyboard layout (e.g. Keyboard Layout B for WinUAE) #define RP_IPD_KEYBDL3 L"KeyboardLayout3" // third joystick emulation keyboard layout (e.g. Keyboard Layout C for WinUAE) @@ -156,7 +166,9 @@ typedef struct RPDeviceContent #define RP_MOUSECAPTURE_MAGICMOUSE 0x00000002 // RPIPCGM_DEVICEACTIVITY -#define RP_DEVICEACTIVITY_READ 0x0000 // the device activity is about a read operation -#define RP_DEVICEACTIVITY_WRITE 0x0001 // the device activity is about a write operation +#define RP_DEVICEACTIVITY_GREEN 0x0000 // green led +#define RP_DEVICEACTIVITY_RED 0x0001 // red led +#define RP_DEVICEACTIVITY_READ RP_DEVICEACTIVITY_GREEN // the device activity is about a read operation +#define RP_DEVICEACTIVITY_WRITE RP_DEVICEACTIVITY_RED // the device activity is about a write operation #endif // __CLOANTO_RETROPLATFORMIPC_H__ diff --git a/od-win32/cloanto/RetroPlatformIPC_doc_draft.txt b/od-win32/cloanto/RetroPlatformIPC_doc_draft.txt index 2dd40de6..823db414 100644 --- a/od-win32/cloanto/RetroPlatformIPC_doc_draft.txt +++ b/od-win32/cloanto/RetroPlatformIPC_doc_draft.txt @@ -1,4 +1,17 @@ -Reference for RetroPlatformIPC.h (RP Player interprocess communication include file) +/***************************************************************************** + Name : RetroPlatformIPC_doc.txt + Project : RPSampleGuest + Client : Cloanto Italia srl + Legal : CONFIDENTIAL TRADE SECRET PROPERTY OF CLOANTO ITALIA SRL + : Copyright © Cloanto Italia srl 2007-2008. + : All rights reserved, except where licensed, + : assigned or transferred by contract. + Authors : os, mcb + Created : 2007-08-23 10:08:25 + Comment : Reference for RetroPlatformIPC.h (RP Player interprocess communication include file) + *****************************************************************************/ + + **************************************************************************** @@ -42,7 +55,10 @@ Response: Message: RPIPCGM_CLOSED Description: - this message is sent to the host when the guest is terminating + this message is sent to the host when the guest is terminating; + the RPPostMessage() function (instead of RPSendMessage()) should be used + to send this message, since the host may wait for the guest process to terminate + when RPIPCGM_CLOSED is received Data sent: none Response: @@ -157,14 +173,14 @@ Data sent: e.g. MAKEWORD(RP_DEVICE_FLOPPY, 0); the RP_ALL_DEVICES define may be used as device number to turn on or off all the activity leds for a device category - LPARAM = led status and flags combined with the MAKEWORD macro; - e.g. MAKEWORD(Status, Flags); + LPARAM = led status and flags combined with the MAKELONG macro; + e.g. MAKELONG(Status, Flags); the Status value can be set to 0 to turn off the activity LED, - or set to -1 to turn on the activity LED, - or set to a value to turn on the activity LED + to -1 to turn on the activity LED, + or to a value to turn on the activity LED for the specified amount of time (blink); the Flags value can be set - using one of the RP_DEVICEACTIVITY_* defines + using one or more of the RP_DEVICEACTIVITY_* defines Response: none @@ -427,7 +443,7 @@ Data sent: contains an empty string, the guest should unload the current content from the device; for joysticks, szContent may contain multiple identifiers - using the "Joystick1\ProductGUID\ProductName" format + using the "Joystick1\ProductGUID InstanceGUID\ProductName" format (ProductName is last and may contain unescaped backslash characters itself) Response: @@ -537,3 +553,15 @@ Data sent: pData = (Unicode) full path and name of the file to load Response: LRESULT = 1 if the guest successfully loaded the status file or 0 otherwise + + +Message: + RPIPCHM_FLUSH +Description: + the host sends the RPIPCHM_FLUSH command to ask the guest + to flush any change applied to the emulated media + and update the corresponding image files +Data sent: + none +Response: + LRESULT = 1 if the guest successfully executed the command or 0 otherwise diff --git a/od-win32/picasso96_win.c b/od-win32/picasso96_win.c index 5bdd3866..1cfb3c11 100644 --- a/od-win32/picasso96_win.c +++ b/od-win32/picasso96_win.c @@ -690,6 +690,7 @@ void picasso_handle_vsync (void) rp_vsync (); #endif + clipboard_vsync (); if (!picasso_on) createwindowscursor (0, 0, 0, 0, 0, 1); diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index e62d0a2e..64b53e95 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -116,7 +116,7 @@ BEGIN PUSHBUTTON "Reset to defaults",IDC_DA_RESET,212,218,73,14 RTEXT "Resolution:",IDC_STATIC,27,152,59,15,SS_CENTERIMAGE COMBOBOX IDC_LORES,100,152,102,150,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP - CONTROL "Flickerfixer",IDC_FLICKERFIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,139,89,10 + CONTROL "Remove interlace artifacts",IDC_FLICKERFIXER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,139,99,10 END IDD_MEMORY DIALOGEX 0, 0, 300, 239 diff --git a/od-win32/rp.c b/od-win32/rp.c index 514513bc..b432feec 100644 --- a/od-win32/rp.c +++ b/od-win32/rp.c @@ -691,7 +691,7 @@ void rp_free (void) if (hwndset) rp_set_hwnd (NULL); initialized = 0; - RPSendMessagex (RPIPCGM_CLOSED, 0, 0, NULL, 0, &guestinfo, NULL); + RPPostMessagex (RPIPCGM_CLOSED, 0, 0, &guestinfo); RPUninitializeGuest (&guestinfo); } diff --git a/od-win32/srcrelease.cmd b/od-win32/srcrelease.cmd index bc8423d4..b59021f1 100644 --- a/od-win32/srcrelease.cmd +++ b/od-win32/srcrelease.cmd @@ -1,7 +1,7 @@ cd c:\projects\winuae_bak rm -rf bak mkdir bak -cp -r c:\projects\winuae\src\. c:\projects\winuae_bak\bak\ +copy c:\projects\winuae\src\ c:\projects\winuae_bak\bak\ /s copy d:\amiga\text\winuaechangelog.txt c:\projects\winuae_bak\bak\od-win32 cd bak @@ -107,12 +107,12 @@ cd .. cd .. -#zip -9 -r winuaesrc * +zip -9 -r winuaesrc * -#copy winuaesrc.zip d:\amiga\winuaepackets\winuaesrc%1.zip -#move winuaesrc.zip d:\amiga -#cd c:\projects\winuae\src\od-win32 -#zip -9 winuaedebug%1 winuae_msvc\release\winuae.pdb winuae_msvc\fullrelease\winuae.pdb -#move winuaedebug%1.zip d:\amiga\winuaepackets\ -#copy winuae_msvc\fullrelease\winuae.pdb d:\amiga\dump -#copy d:\amiga\winuae.exe d:\amiga\dump +copy winuaesrc.zip d:\amiga\winuaepackets\winuaesrc%1.zip +move winuaesrc.zip d:\amiga +cd c:\projects\winuae\src\od-win32 +zip -9 winuaedebug%1 winuae_msvc\release\winuae.pdb winuae_msvc\fullrelease\winuae.pdb +move winuaedebug%1.zip d:\amiga\winuaepackets\ +copy winuae_msvc\fullrelease\winuae.pdb d:\amiga\dump +copy d:\amiga\winuae.exe d:\amiga\dump diff --git a/od-win32/win32.c b/od-win32/win32.c index 911b63a1..ae71e75e 100644 --- a/od-win32/win32.c +++ b/od-win32/win32.c @@ -78,7 +78,7 @@ #include "akiko.h" #include "cdtv.h" #include "direct3d.h" -#include "clipboard.h" +#include "clipboard_win32.h" #ifdef RETROPLATFORM #include "rp.h" #endif @@ -4157,6 +4157,11 @@ int get_guid_target (uae_u8 *out) return 1; } +void target_reset (void) +{ + clipboard_reset (); +} + typedef BOOL (CALLBACK* SETPROCESSDPIAWARE)(void); typedef BOOL (CALLBACK* CHANGEWINDOWMESSAGEFILTER)(UINT, DWORD); diff --git a/od-win32/win32.h b/od-win32/win32.h index a2a389f9..122f1a22 100644 --- a/od-win32/win32.h +++ b/od-win32/win32.h @@ -17,8 +17,8 @@ #define WINUAEPUBLICBETA 1 -#define WINUAEBETA "8" -#define WINUAEDATE MAKEBD(2009, 1, 11) +#define WINUAEBETA "9" +#define WINUAEDATE MAKEBD(2009, 1, 21) #define WINUAEEXTRA "" #define WINUAEREV "" diff --git a/od-win32/win32gui.c b/od-win32/win32gui.c index 886052c8..9f70caaf 100644 --- a/od-win32/win32gui.c +++ b/od-win32/win32gui.c @@ -158,6 +158,31 @@ static void ew (HWND hDlg, DWORD id, int enable) EnableWindow (w, !!enable); } +static char *ua (const WCHAR *s) +{ + char *d; + int len; + + if (s == NULL) + return NULL; + len = WideCharToMultiByte (CP_ACP, 0, s, -1, NULL, 0, 0, FALSE); + if (!len) + return my_strdup (""); + d = xmalloc (len + 1); + WideCharToMultiByte (CP_ACP, 0, s, -1, d, len, 0, FALSE); + return d; +} +static WCHAR *au (const char *s) +{ + WCHAR *d; + int len = MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, s, -1, NULL, 0); + if (!len) + return xcalloc (2, 1); + d = xmalloc ((len + 1) * sizeof (WCHAR)); + MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, s, -1, d, len); + return d; +} + void write_disk_history (void) { int i, j; @@ -293,16 +318,6 @@ static int getcbn (HWND hDlg, int v, char *out, int len) } } -static WCHAR *au (const char *s) -{ - WCHAR *d; - int len = MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, s, -1, NULL, 0); - if (!len) - return xcalloc (2, 1); - d = xmalloc ((len + 1) * sizeof (WCHAR)); - MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, s, -1, d, len); - return d; -} #define MAXFAVORITES 30 static void writefavoritepaths (int num, char **values, char **paths) { @@ -1291,48 +1306,32 @@ static void gui_to_prefs (void) updatewinfsmode (&changed_prefs); } -#if 0 -static BOOL GetNewFileName (OPENFILENAME *opn, int save) -{ - IFileDialog *pfd; - HRESULT hr; - - // CoCreate the dialog object. - hr = CoCreateInstance(CLSID_FileOpenDialog, - NULL, - CLSCTX_INPROC_SERVER, - IID_PPV_ARG(IFileDialog, &pfd)); - if (SUCCEEDED(hr)) { - // Show the dialog - hr = pfd->Show(hwnd); - if (SUCCEEDED(hr)) { - // Obtain the result of the user's interaction with the dialog. - IShellItem *psiResult; - hr = pfd->GetResult(&psiResult); - if (SUCCEEDED(hr)) { - // Do something with the result. - psiResult->Release(); - } - } - pfd->Release(); - } - return SUCCEEDED(hr); -} -#endif -static BOOL GetOpenFileName_2 (OPENFILENAME *opn) -{ - if (osVersion.dwMajorVersion < 6) - return GetOpenFileName (opn); - return GetOpenFileName (opn); -} - -static BOOL GetSaveFileName_2 (OPENFILENAME *opn) -{ - if (osVersion.dwMajorVersion < 6) - return GetSaveFileName (opn); - return GetSaveFileName (opn); -} +typedef struct tagOFNX { + DWORD lStructSize; + HWND hwndOwner; + HINSTANCE hInstance; + PWCHAR lpstrFilter; + PWCHAR lpstrCustomFilter; + DWORD nMaxCustFilter; + DWORD nFilterIndex; + PWCHAR lpstrFile; + DWORD nMaxFile; + PWCHAR lpstrFileTitle; + DWORD nMaxFileTitle; + PWCHAR lpstrInitialDir; + PWCHAR lpstrTitle; + DWORD Flags; + WORD nFileOffset; + WORD nFileExtension; + PWCHAR lpstrDefExt; + LPARAM lCustData; + LPOFNHOOKPROC lpfnHook; + PWCHAR lpTemplateName; + void * pvReserved; + DWORD dwReserved; + DWORD FlagsEx; +} OPENFILENAMEX, *LPOPENFILENAMEX; // Common routine for popping up a file-requester // flag - 0 for floppy loading, 1 for floppy creation, 2 for loading hdf, 3 for saving hdf @@ -1356,7 +1355,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs char file_name[MAX_DPATH] = ""; char init_path[MAX_DPATH] = ""; BOOL result = FALSE; - char *amiga_path = NULL; + char *amiga_path = NULL, *initialdir = NULL, *defext = NULL; char description[CFG_DESCRIPTION_LENGTH] = ""; char *p, *nextp; int all = 1; @@ -1429,24 +1428,22 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs openFileName.hwndOwner = hDlg; openFileName.hInstance = hInst; + szFilter[0] = 0; + szFilter[1] = 0; switch (flag) { case 0: WIN32GUI_LoadUIString (IDS_SELECTADF, szTitle, MAX_DPATH); WIN32GUI_LoadUIString (IDS_ADF, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen (szFilter), DISK_FORMAT_STRING, sizeof (DISK_FORMAT_STRING) + 1); - - openFileName.lpstrDefExt = "ADF"; - openFileName.lpstrFilter = szFilter; + defext = "ADF"; break; case 1: WIN32GUI_LoadUIString (IDS_CHOOSEBLANK, szTitle, MAX_DPATH); WIN32GUI_LoadUIString (IDS_ADF, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen (szFilter), "(*.adf)\0*.adf\0", 15); - - openFileName.lpstrDefExt = "ADF"; - openFileName.lpstrFilter = szFilter; + defext = "ADF"; break; case 2: case 3: @@ -1454,9 +1451,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs WIN32GUI_LoadUIString (IDS_HDF, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen (szFilter), HDF_FORMAT_STRING, sizeof (HDF_FORMAT_STRING) + 1); - - openFileName.lpstrDefExt = "HDF"; - openFileName.lpstrFilter = szFilter; + defext = "HDF"; break; case 4: case 5: @@ -1464,27 +1459,21 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs WIN32GUI_LoadUIString (IDS_UAE, szFormat, MAX_DPATH ); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen (szFilter), "(*.uae)\0*.uae\0", 15); - - openFileName.lpstrDefExt = "UAE"; - openFileName.lpstrFilter = szFilter; + defext = "UAE"; break; case 6: WIN32GUI_LoadUIString (IDS_SELECTROM, szTitle, MAX_DPATH); WIN32GUI_LoadUIString (IDS_ROM, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen(szFilter), ROM_FORMAT_STRING, sizeof (ROM_FORMAT_STRING) + 1); - - openFileName.lpstrDefExt = "ROM"; - openFileName.lpstrFilter = szFilter; + defext = "ROM"; break; case 7: WIN32GUI_LoadUIString (IDS_SELECTKEY, szTitle, MAX_DPATH); WIN32GUI_LoadUIString (IDS_KEY, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen(szFilter), "(*.key)\0*.key\0", 15); - - openFileName.lpstrDefExt = "KEY"; - openFileName.lpstrFilter = szFilter; + defext = "KEY"; break; case 15: case 16: @@ -1492,9 +1481,7 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs WIN32GUI_LoadUIString (IDS_INP, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen(szFilter), INP_FORMAT_STRING, sizeof (INP_FORMAT_STRING) + 1); - - openFileName.lpstrDefExt = "INP"; - openFileName.lpstrFilter = szFilter; + defext = "IMP"; break; case 9: case 10: @@ -1532,47 +1519,32 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs all = 0; filterindex = statefile_previousfilter; } - openFileName.lpstrDefExt = "USS"; - openFileName.lpstrFilter = szFilter; + defext = "USS"; break; case 11: WIN32GUI_LoadUIString (IDS_SELECTFLASH, szTitle, MAX_DPATH); WIN32GUI_LoadUIString (IDS_FLASH, szFormat, MAX_DPATH); sprintf (szFilter, "%s ", szFormat); memcpy (szFilter + strlen (szFilter), "(*.nvr)\0*.nvr\0", 15); - - openFileName.lpstrDefExt = "NVR"; - openFileName.lpstrFilter = szFilter; + defext = "NVR"; break; case 8: default: WIN32GUI_LoadUIString (IDS_SELECTINFO, szTitle, MAX_DPATH); - - openFileName.lpstrFilter = NULL; - openFileName.lpstrDefExt = NULL; break; case 12: WIN32GUI_LoadUIString (IDS_SELECTFS, szTitle, MAX_DPATH); - - openFileName.lpstrFilter = NULL; - openFileName.lpstrDefExt = NULL; - openFileName.lpstrInitialDir = path_out; + initialdir = path_out; break; case 13: WIN32GUI_LoadUIString (IDS_SELECTINFO, szTitle, MAX_DPATH); - - openFileName.lpstrFilter = NULL; - openFileName.lpstrDefExt = NULL; - openFileName.lpstrInitialDir = path_out; + initialdir = path_out; break; case 14: strcpy (szTitle, "Select supported archive file"); sprintf (szFilter, "%s (%s)", "Archive", ARCHIVE_STRING); strcpy (szFilter + strlen (szFilter) + 1, ARCHIVE_STRING); - - openFileName.lpstrFilter = NULL; - openFileName.lpstrFilter = szFilter; - openFileName.lpstrInitialDir = path_out; + initialdir = path_out; break; } if (all) { @@ -1587,21 +1559,26 @@ int DiskSelection_2 (HWND hDlg, WPARAM wParam, int flag, struct uae_prefs *prefs } openFileName.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY | OFN_NOCHANGEDIR; + openFileName.lpstrFilter = szFilter; + openFileName.lpstrDefExt = defext; openFileName.nFilterIndex = filterindex; openFileName.lpstrFile = full_path; openFileName.nMaxFile = MAX_DPATH; openFileName.lpstrFileTitle = file_name; openFileName.nMaxFileTitle = MAX_DPATH; - openFileName.lpstrInitialDir = init_path; + if (initialdir) + openFileName.lpstrInitialDir = initialdir; + else + openFileName.lpstrInitialDir = init_path; openFileName.lpstrTitle = szTitle; if (multi) openFileName.Flags |= OFN_ALLOWMULTISELECT; if (flag == 1 || flag == 3 || flag == 5 || flag == 9 || flag == 11 || flag == 16) { - if (!(result = GetSaveFileName_2 (&openFileName))) + if (!(result = GetSaveFileName (&openFileName))) write_log ("GetSaveFileName() failed, err=%d.\n", GetLastError()); } else { - if (!(result = GetOpenFileName_2 (&openFileName))) + if (!(result = GetOpenFileName (&openFileName))) write_log ("GetOpenFileName() failed, err=%d.\n", GetLastError()); } memcpy (full_path2, full_path, sizeof (full_path)); diff --git a/od-win32/winuae_msvc/winuae_msvc.vcproj b/od-win32/winuae_msvc/winuae_msvc.vcproj index 5ebbfad2..ab4ee6e4 100644 --- a/od-win32/winuae_msvc/winuae_msvc.vcproj +++ b/od-win32/winuae_msvc/winuae_msvc.vcproj @@ -1286,7 +1286,7 @@ > command +- bitplane disable debugger command added, Mb + [] +- automatic, transparent clipboard sharing! Data in Windows clipboard + is automatically copied to Amiga clipboard.device unit 0 and vice + versa. Only text-based content currently supported. +- REPEAT NOTE: D3D/OGL filter is still broken. Do not use. + Beta 8: - UAE boot rom was enabled when it should not have been (b7) @@ -20,11 +37,10 @@ Beta 8: inserted. - removable drive insert/eject used unallocated signal bit, it did not cause problems but fixed now -- experimental "flicker fixer" implemented. Works perfectly in WB, not - so perfect in games yet (and impossible to get perfect in all cases, - as usual..) No more interlace artifacts when any graphics object or - mouse pointer moves. - +- experimental "flicker fixer" implemented (Display panel). Works + perfectly in WB, not so perfect in games yet (and impossible to get + perfect in all cases, as usual..) No more interlace artifacts when + any graphics object or mouse pointer moves. NOTE: first and last line will flicker or show garbage. Technical details: normal interlaced display goes like this: draw