vtwm-5.4.7/0040775000015300001300000000000010260161307011312 5ustar callumfidvtwm-5.4.7/Makefile.QNX0100664000015300001300000001401710237645271013432 0ustar callumfid # Here is a makefile for VTWM. # # It's a hand-tweaked version of the makefile made with xmkmf, # it may prove useful as a template for those who don't have xmkmf. # # This makefile guarantees that the build info is absolutely current. # # djhjr # =============== Start of common editables ===================== # To omit XPM image support, uncomment this #XPM_DEFINE = -DNO_XPM_SUPPORT # and comment these XPMLIB = -lXpm XPMINC = # (version 3.4h of the XPM library is the earliest supported I know of) # To omit regular expressions ("RE"s) support, uncomment this #REGEX_DEFINE = -DNO_REGEX_SUPPORT # and comment these REGEXLIB = REGEXINC = # (the library must conform to the POSIX 1003.2 specification) # To omit sound support. uncomment this SOUND_DEFINE = -DNO_SOUND_SUPPORT # and comment these #SOUNDLIB = -L/usr/local/lib -lrplay #SOUNDINC = -I/usr/local/include # (sound is supported only by way of the rplay library) # To omit Internationalization support, uncomment this I18N_DEFINE = -DNO_I18N_SUPPORT # To omit m4 pre-processing of resource files, uncomment this #M4_DEFINE = -DNO_M4_SUPPORT # To omit platform and build info in the version window, uncomment this #INFO_DEFINE = -DNO_BUILD_INFO # For lexers that don't track line numbers, uncomment this YYLINENO_DEFINE = -DNEED_YYLINENO_V # For those systems that don't have putenv(), uncomment this PUTENV_DEFINE = -DNEED_PUTENV_F # For those systems that require sys/select.h, uncomment this SELECT_DEFINE = -DNEED_SELECT_H # For those systems that require process.h, uncomment this PROCESS_DEFINE = -DNEED_PROCESS_H # Installation path for the binary VTWMBINDIR = /usr/bin/X11 # Installation path for the system resource file VTWMLIBDIR = /usr/lib/X11/twm # Installation path for the man page VTWMMANDIR = /usr/man/mann # For the traditional look of TWM as the system fallback, # change this to "2D" SYS_VTWMRC_LOOK = 3D CDEBUGFLAGS = -w4 -M CCOPTIONS = -Otx -zp1 -mf -b -j -Wc,-s -N32k # ================ End of common editables ====================== # ============= Start of less common editables ================== CP = cp -f MV = mv -f RM = rm -f LN = ln -fs CC = cc LEX = lex YACC = yacc YFLAGS = -d USRLIBDIR = /usr/lib/X11 # Handy for developers to check man page editions # (see the end of this file) DEROFF = deroff DW = dw SPELL = spell # Required to generate HTML or Postscript versions of the man page # (see the end of this file) MAN2HTML = man2html MAN2PS = man2ps # ============== End of less common editables =================== # ========= Editing below here should not be necessary ========== XMULIB = -lXmu XTOOLLIB = EXTENSIONLIB = -lXext XLIB = $(EXTENSIONLIB) -lX11_s LOCAL_LIBRARIES = $(XMULIB) $(XTOOLLIB) $(XLIB) \ $(XPMLIB) $(REGEXLIB) $(SOUNDLIB) EXTRA_LIBRARIES = -lXqnx -lsocket LDLIBS = $(LOCAL_LIBRARIES) $(EXTRA_LIBRARIES) INCLUDES = EXTRA_INCLUDES = $(XPMINC) $(REGEXINC) $(SOUNDINC) STD_INCLUDES = ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(STD_INCLUDES) STD_DEFINES = -D__QNX__ -DMetroLink -DSTRINGS_ALIGNED -DNO_REGEX \ -DBOGUS_MB_MAX EXTRA_DEFINES = $(XPM_DEFINE) $(SOUND_DEFINE) $(REGEX_DEFINE) \ $(I18N_DEFINE) $(M4_DEFINE) $(INFO_DEFINE) \ $(YYLINENO_DEFINE) $(PUTENV_DEFINE) $(SELECT_DEFINE) \ $(PROCESS_DEFINE) PROTO_DEFINES = ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(PROTO_DEFINES) CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(ALLDEFINES) -L$(USRLIBDIR) SRCS = gram.c lex.c deftwmrc.c add_window.c gc.c list.c twm.c sound.c \ parse.c menus.c events.c resize.c util.c version.c iconmgr.c \ cursor.c regions.c applets.c icons.c desktop.c doors.c lastmake.c OBJS = gram.o lex.o deftwmrc.o add_window.o gc.o list.o twm.o sound.o \ parse.o menus.o events.o resize.o util.o version.o iconmgr.o \ cursor.o regions.o applets.o icons.o desktop.o doors.o lastmake.o PROGRAM = vtwm all: vtwm depend: lex.c gram.c deftwmrc.c lastmake.c install: $(CP) $(PROGRAM) $(VTWMBINDIR) $(CP) system.vtwmrc $(VTWMLIBDIR) $(CP) doc/vtwm.man $(VTWMMANDIR) clean: $(RM) $(PROGRAM) *.o *.b *.err *.map y.tab.h y.tab.c lex.yy.c \ gram.h gram.c lex.c deftwmrc.c lastmake.c system.vtwmrc \ vtwm.dw vtwm.ser vtwm.html vtwm.ps vtwm: $(OBJS) $(RM) $@ $(CC) -o $@ $(OBJS) $(CFLAGS) $(LDLIBS) $(RM) deftwmrc.* lastmake.* parse.o: gram.h $(RM) $@ $(CC) -c $(CFLAGS) '-DSYSTEM_VTWMRC="'$(VTWMLIBDIR)'/system.vtwmrc"' \ '-DSYSTEM_TWMRC="'$(VTWMLIBDIR)'/system.twmrc"' parse.c add_window.o applets.o events.o icons.o list.o menus.o \ regions.o sound.o twm.o util.o: gram.h $(RM) $@ $(CC) -c $(CFLAGS) $*.c lex.o: gram.h gram.h gram.c: gram.y $(YACC) $(YFLAGS) gram.y $(MV) y.tab.c gram.c $(MV) y.tab.h gram.h deftwmrc.c: system.vtwmrc $(RM) $@ echo '/* ' >>$@ echo ' * This file is generated automatically from the default' >>$@ echo ' * VTWM bindings file system.vtwmrc.'$(SYS_VTWMRC_LOOK)' by the VTWM Makefile.' >>$@ echo ' */' >>$@ echo '' >>$@ echo 'char *defTwmrc[] = {' >>deftwmrc.c sed -e '/^$$/d' -e '/^#/d' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/",/' -e 's/[ ]\{1,\}/ /g' -e 's/^" /"/' system.vtwmrc >>$@ echo '(char *)0 };' >>$@ lastmake.c: $(RM) $@ echo '/* ' >>$@ echo ' * This file is generated automatically by the VTWM Makefile.' >>$@ echo ' */' >>$@ echo '' >>$@ echo 'char *lastmake[] = {' >>lastmake.c echo ' "Platform: '`uname -r -s`'",' >>$@ echo ' "Build: '`date`'",' >>$@ echo ' "" };' >>$@ system.vtwmrc: $(RM) $@ $(CP) $@.$(SYS_VTWMRC_LOOK) $@ # Handy for developers to check the man page dw vtwm.dw: doc/vtwm.man $(DEROFF) doc/vtwm.man | $(DW) >vtwm.dw @if test -s vtwm.dw ; \ then \ echo Doubled words in vtwm.man ... ; \ cat vtwm.dw ; \ fi spell vtwm.ser: doc/vtwm.man vtwm.sok $(DEROFF) doc/vtwm.man | $(SPELL) +vtwm.sok >vtwm.ser @if test -s vtwm.ser ; \ then \ echo Spelling exceptions in vtwm.man ... ; \ cat vtwm.ser ; \ fi # If you wish to generate HTML or Postscript versions of the man page, # enter 'make vtwm.html' or 'make vtwm.ps' vtwm.html: doc/vtwm.man $(MAN2HTML) doc/vtwm.man vtwm.ps: doc/vtwm.man $(MAN2PS) < $< >$@ vtwm-5.4.7/iconmgr.c0100664000015300001300000006417210237655640013137 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /*********************************************************************** * * $XConsortium: iconmgr.c,v 1.48 91/09/10 15:27:07 dave Exp $ * * Icon Manager routines * * 09-Mar-89 Tom LaStrange File Created * ***********************************************************************/ #include #include "twm.h" #include "util.h" #include "menus.h" #include "desktop.h" #include "parse.h" #include "screen.h" #include "resize.h" #include "add_window.h" #include #include #ifdef macII int strcmp(); /* missing from string.h in AUX 2.0 */ #endif #define strdup Strdup /* avoid conflict with system header files */ extern char *strdup(char *); /* djhjr - 5/2/98 */ static int ComputeIconMgrWindowHeight(); /* see AddIconManager() - djhjr - 5/5/98 int iconmgr_textx = siconify_width+11; */ int iconmgr_iconx = 0, iconmgr_textx = 0; WList *Active = NULL; WList *DownIconManager = NULL; /* was an external file - djhjr - 10/30/02 */ #define siconify_width 11 #define siconify_height 11 /* static unsigned char siconify_bits[] = { 0xff, 0x07, 0x01, 0x04, 0x0d, 0x05, 0x9d, 0x05, 0xb9, 0x04, 0x51, 0x04, 0xe9, 0x04, 0xcd, 0x05, 0x85, 0x05, 0x01, 0x04, 0xff, 0x07}; */ int iconifybox_width = siconify_width; int iconifybox_height = siconify_height; /* djhjr - 10/30/02 */ void SetIconMgrPixmap(filename) char *filename; { Scr->iconMgrIconName = filename; } /*********************************************************************** * * Procedure: * CreateIconManagers - creat all the icon manager windows * for this screen. * * Returned Value: * none * * Inputs: * none * *********************************************************************** */ struct Colori { Pixel color; Pixmap pix; struct Colori *next; }; #if 0 Pixmap Create3DIconManagerIcon (cp) ColorPair cp; { unsigned int w, h; struct Colori *col; static struct Colori *colori = NULL; w = (unsigned int) siconify_width; h = (unsigned int) siconify_height; for (col = colori; col; col = col->next) { if (col->color == cp.back) break; } if (col != NULL) return (col->pix); col = (struct Colori*) malloc (sizeof (struct Colori)); col->color = cp.back; col->pix = XCreatePixmap (dpy, Scr->Root, w, h, Scr->d_depth); #ifdef ORIGINAL_ICONMGRPIXMAP Draw3DBorder (col->pix, 0, 0, w, h, 4, cp, off, True, False); #else Draw3DBorder (col->pix, 0, 0, w, h, 1, cp, off, True, False); #ifdef DO_DOT Draw3DBorder (col->pix, (w / 2) - 1, (h / 2) - 1, 3, 3, 1, cp, off, True, False); #endif #endif col->next = colori; colori = col; return (colori->pix); } #endif void CreateIconManagers() { XClassHint *class; /* djhjr - 2/28/99 */ IconMgr *p; int mask; char str[100]; char str1[100]; Pixel background; char *icon_name; if (Scr->NoIconManagers) return; /* djhjr - 10/30/02 if (Scr->siconifyPm == None) { Scr->siconifyPm->pixmap = XCreatePixmapFromBitmapData(dpy, Scr->Root, (char *)siconify_bits, siconify_width, siconify_height, 1, 0, 1); } */ for (p = &Scr->iconmgr; p != NULL; p = p->next) { mask = XParseGeometry(p->geometry, &JunkX, &JunkY, (unsigned int *) &p->width, (unsigned int *)&p->height); /* djhjr - 3/1/99 */ if (p->width > Scr->MyDisplayWidth) p->width = Scr->MyDisplayWidth; if (mask & XNegative) /* djhjr - 4/19/96 JunkX = Scr->MyDisplayWidth - p->width - (2 * Scr->BorderWidth) + JunkX; */ /* djhjr - 8/11/98 JunkX += Scr->MyDisplayWidth - p->width - (2 * (Scr->ThreeDBorderWidth ? Scr->ThreeDBorderWidth : Scr->BorderWidth)); */ JunkX += Scr->MyDisplayWidth - p->width - (2 * Scr->BorderWidth); if (mask & YNegative) /* djhjr - 4/19/96 JunkY = Scr->MyDisplayHeight - p->height - (2 * Scr->BorderWidth) + JunkY; */ /* djhjr - 8/11/98 JunkY += Scr->MyDisplayHeight - p->height - (2 * (Scr->ThreeDBorderWidth ? Scr->ThreeDBorderWidth : Scr->BorderWidth)); */ JunkY += Scr->MyDisplayHeight - p->height - (2 * Scr->BorderWidth); /* djhjr - 9/10/98 */ if (p->width < 1) p->width = 1; if (p->height < 1) p->height = 1; background = Scr->IconManagerC.back; GetColorFromList(Scr->IconManagerBL, p->name, (XClassHint *)NULL, &background); p->w = XCreateSimpleWindow(dpy, Scr->Root, JunkX, JunkY, p->width, p->height, 0, /* was '1' - submitted by Rolf Neugebauer */ Scr->Black, background); sprintf(str, "%s Icon Manager", p->name); sprintf(str1, "%s Icons", p->name); if (p->icon_name) icon_name = p->icon_name; else icon_name = str1; /* djhjr - 5/19/98 */ /* was setting for the TwmWindow after AddWindow() - djhjr - 2/28/99 */ class = XAllocClassHint(); class->res_name = strdup(str); class->res_class = strdup(VTWM_ICONMGR_CLASS); XSetClassHint(dpy, p->w, class); XSetStandardProperties(dpy, p->w, str, icon_name, None, NULL, 0, NULL); p->twm_win = AddWindow(p->w, TRUE, p); SetMapStateProp (p->twm_win, WithdrawnState); } for (p = &Scr->iconmgr; p != NULL; p = p->next) { GrabButtons(p->twm_win); GrabKeys(p->twm_win); } } /*********************************************************************** * * Procedure: * AllocateIconManager - allocate a new icon manager * * Inputs: * name - the name of this icon manager * icon_name - the name of the associated icon * geom - a geometry string to eventually parse * columns - the number of columns this icon manager has * *********************************************************************** */ IconMgr *AllocateIconManager(name, icon_name, geom, columns) char *name; char *geom; char *icon_name; int columns; { IconMgr *p; #ifdef DEBUG_ICONMGR fprintf(stderr, "AllocateIconManager\n"); fprintf(stderr, " name=\"%s\" icon_name=\"%s\", geom=\"%s\", col=%d\n", name, icon_name, geom, columns); #endif if (Scr->NoIconManagers) return NULL; p = (IconMgr *)malloc(sizeof(IconMgr)); p->name = name; p->icon_name = icon_name; p->geometry = geom; p->columns = columns; p->first = NULL; p->last = NULL; p->active = NULL; p->scr = Scr; p->count = 0; p->x = 0; p->y = 0; p->width = 150; p->height = 10; Scr->iconmgr.lasti->next = p; p->prev = Scr->iconmgr.lasti; Scr->iconmgr.lasti = p; p->next = NULL; return(p); } /*********************************************************************** * * Procedure: * MoveIconManager - move the pointer around in an icon manager * * Inputs: * dir - one of the following: * F_FORWICONMGR - forward in the window list * F_BACKICONMGR - backward in the window list * F_UPICONMGR - up one row * F_DOWNICONMGR - down one row * F_LEFTICONMGR - left one column * F_RIGHTICONMGR - right one column * * Special Considerations: * none * *********************************************************************** */ void MoveIconManager(dir) int dir; { IconMgr *ip; WList *tmp = NULL; int cur_row, cur_col, new_row, new_col; int row_inc, col_inc; int got_it; if (!Active) return; cur_row = Active->row; cur_col = Active->col; ip = Active->iconmgr; row_inc = 0; col_inc = 0; got_it = FALSE; switch (dir) { case F_FORWICONMGR: if ((tmp = Active->next) == NULL) tmp = ip->first; got_it = TRUE; break; case F_BACKICONMGR: if ((tmp = Active->prev) == NULL) tmp = ip->last; got_it = TRUE; break; case F_UPICONMGR: row_inc = -1; break; case F_DOWNICONMGR: row_inc = 1; break; case F_LEFTICONMGR: col_inc = -1; break; case F_RIGHTICONMGR: col_inc = 1; break; } /* If got_it is FALSE ast this point then we got a left, right, * up, or down, command. We will enter this loop until we find * a window to warp to. */ new_row = cur_row; new_col = cur_col; while (!got_it) { new_row += row_inc; new_col += col_inc; if (new_row < 0) new_row = ip->cur_rows - 1; if (new_col < 0) new_col = ip->cur_columns - 1; if (new_row >= ip->cur_rows) new_row = 0; if (new_col >= ip->cur_columns) new_col = 0; /* Now let's go through the list to see if there is an entry with this * new position */ for (tmp = ip->first; tmp != NULL; tmp = tmp->next) { if (tmp->row == new_row && tmp->col == new_col) { got_it = TRUE; break; } } } if (!got_it) { fprintf (stderr, "%s: unable to find window (%d, %d) in icon manager\n", ProgramName, new_row, new_col); return; } if (tmp == NULL) return; /* raise the frame so the icon manager is visible */ if (ip->twm_win->mapped) { XRaiseWindow(dpy, ip->twm_win->frame); /* djhjr - 5/30/00 RaiseStickyAbove(); RaiseAutoPan(); XWarpPointer(dpy, None, tmp->icon, 0,0,0,0, 5, 5); */ WarpInIconMgr(tmp, ip->twm_win); } else { /* djhjr - 5/30/00 if (tmp->twm->title_height) { int tbx = Scr->TBInfo.titlex; int x = tmp->twm->highlightx; XWarpPointer (dpy, None, tmp->twm->title_w, 0, 0, 0, 0, tbx + (x - tbx) / 2, Scr->TitleHeight / 4); } else { XWarpPointer (dpy, None, tmp->twm->w, 0, 0, 0, 0, 5, 5); } */ RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); WarpToWindow(tmp->twm); } } /*********************************************************************** * * Procedure: * JumpIconManager - jump from one icon manager to another, * possibly even on another screen * * Inputs: * dir - one of the following: * F_NEXTICONMGR - go to the next icon manager * F_PREVICONMGR - go to the previous one * *********************************************************************** */ void JumpIconManager(dir) register int dir; { IconMgr *ip, *tmp_ip = NULL; int got_it = FALSE; ScreenInfo *sp; int screen; if (!Active) return; #define ITER(i) (dir == F_NEXTICONMGR ? (i)->next : (i)->prev) #define IPOFSP(sp) (dir == F_NEXTICONMGR ? &(sp->iconmgr) : sp->iconmgr.lasti) #define TEST(ip) if ((ip)->count != 0 && (ip)->twm_win->mapped) \ { got_it = TRUE; break; } ip = Active->iconmgr; for (tmp_ip = ITER(ip); tmp_ip; tmp_ip = ITER(tmp_ip)) { TEST (tmp_ip); } if (!got_it) { int origscreen = ip->scr->screen; int inc = (dir == F_NEXTICONMGR ? 1 : -1); for (screen = origscreen + inc; ; screen += inc) { if (screen >= NumScreens) screen = 0; else if (screen < 0) screen = NumScreens - 1; sp = ScreenList[screen]; if (sp) { for (tmp_ip = IPOFSP (sp); tmp_ip; tmp_ip = ITER(tmp_ip)) { TEST (tmp_ip); } } if (got_it || screen == origscreen) break; } } #undef ITER #undef IPOFSP #undef TEST if (!got_it) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ return; } /* raise the frame so it is visible */ XRaiseWindow(dpy, tmp_ip->twm_win->frame); /* djhjr - 5/30/00 RaiseStickyAbove(); * DSE * RaiseAutoPan(); */ if (tmp_ip->active) /* djhjr - 5/30/00 XWarpPointer(dpy, None, tmp_ip->active->icon, 0,0,0,0, 5, 5); */ WarpInIconMgr(tmp_ip->active, tmp_ip->twm_win); else /* djhjr - 5/30/00 XWarpPointer(dpy, None, tmp_ip->w, 0,0,0,0, 5, 5); */ { RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); WarpToWindow(tmp_ip->twm_win); } } /*********************************************************************** * * Procedure: * AddIconManager - add a window to an icon manager * * Inputs: * tmp_win - the TwmWindow structure * *********************************************************************** */ WList *AddIconManager(tmp_win) TwmWindow *tmp_win; { WList *tmp; int h; unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ IconMgr *ip; tmp_win->list = NULL; /* djhjr - 10/2/01 */ if (Scr->StrictIconManager) { if (tmp_win->icon || (!tmp_win->iconified && (tmp_win->wmhints && (tmp_win->wmhints->flags & StateHint) && tmp_win->wmhints->initial_state == IconicState))) ; else return NULL; } if (tmp_win->iconmgr || tmp_win->transient || Scr->NoIconManagers) return NULL; if (LookInList(Scr->IconMgrNoShow, tmp_win->full_name, &tmp_win->class)) return NULL; if (Scr->IconManagerDontShow && !LookInList(Scr->IconMgrShow, tmp_win->full_name, &tmp_win->class)) return NULL; if ((ip = (IconMgr *)LookInList(Scr->IconMgrs, tmp_win->full_name, &tmp_win->class)) == NULL) ip = &Scr->iconmgr; tmp = (WList *) malloc(sizeof(WList)); tmp->iconmgr = ip; tmp->next = NULL; tmp->active = FALSE; tmp->down = FALSE; InsertInIconManager(ip, tmp, tmp_win); tmp->twm = tmp_win; /* djhjr - 4/19/96 tmp->fore = Scr->IconManagerC.fore; tmp->back = Scr->IconManagerC.back; */ tmp->cp.fore = Scr->IconManagerC.fore; tmp->cp.back = Scr->IconManagerC.back; tmp->highlight = Scr->IconManagerHighlight; /* djhjr - 4/19/96 GetColorFromList(Scr->IconManagerFL, tmp_win->full_name, &tmp_win->class, &tmp->fore); GetColorFromList(Scr->IconManagerBL, tmp_win->full_name, &tmp_win->class, &tmp->back); */ GetColorFromList(Scr->IconManagerFL, tmp_win->full_name, &tmp_win->class, &tmp->cp.fore); GetColorFromList(Scr->IconManagerBL, tmp_win->full_name, &tmp_win->class, &tmp->cp.back); GetColorFromList(Scr->IconManagerHighlightL, tmp_win->full_name, &tmp_win->class, &tmp->highlight); /* djhjr - 4/19/96 */ /* was 'Scr->use3Diconmanagers' - djhjr - 8/11/98 */ /* djhjr - 10/30/02 if (Scr->IconMgrBevelWidth > 0) */ { if (!Scr->BeNiceToColormap) GetShadeColors (&tmp->cp); /* djhjr - 10/30/02 tmp->iconifypm = Create3DIconManagerIcon (tmp->cp); */ tmp->iconifypm = GetImage(Scr->iconMgrIconName, iconifybox_width, iconifybox_height, 0, tmp->cp); } /* djhjr - 5/2/98 */ h = ComputeIconMgrWindowHeight(); ip->height = h * ip->count; tmp->me = ip->count; tmp->x = -1; tmp->y = -1; valuemask = (CWBackPixel | CWBorderPixel | CWEventMask | CWCursor); /* djhjr - 4/19/96 attributes.background_pixel = tmp->back; attributes.border_pixel = tmp->back; */ attributes.background_pixel = tmp->cp.back; attributes.border_pixel = tmp->cp.back; attributes.event_mask = (KeyPressMask | ButtonPressMask | ButtonReleaseMask | ExposureMask | EnterWindowMask | LeaveWindowMask); attributes.cursor = Scr->IconMgrCursor; /* djhjr - 9/17/96 */ if (Scr->BackingStore) { attributes.backing_store = WhenMapped; valuemask |= CWBackingStore; } tmp->w = XCreateWindow (dpy, ip->w, 0, 0, (unsigned int) 1, (unsigned int) h, (unsigned int) 0, CopyFromParent, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); valuemask = (CWBackPixel | CWBorderPixel | CWEventMask | CWCursor); /* djhjr - 4/19/96 attributes.background_pixel = tmp->back; */ attributes.background_pixel = tmp->cp.back; attributes.border_pixel = Scr->Black; attributes.event_mask = (ButtonReleaseMask| ButtonPressMask | ExposureMask); attributes.cursor = Scr->ButtonCursor; /* djhjr - 5/5/98 */ if (!iconmgr_iconx) { /* was 'Scr->use3Diconmanagers' - djhjr - 8/11/98 */ if (Scr->IconMgrBevelWidth > 0) iconmgr_iconx = Scr->IconMgrBevelWidth + 5; else iconmgr_iconx = Scr->BorderWidth + 5; iconmgr_textx = iconmgr_iconx + siconify_width + 5; } /* 'iconmgr_iconx' was '5' - djhjr - 5/5/98 */ tmp->icon = XCreateWindow (dpy, tmp->w, iconmgr_iconx, (int) (h - siconify_height)/2, (unsigned int) siconify_width, (unsigned int) siconify_height, (unsigned int) 0, CopyFromParent, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); ip->count += 1; PackIconManager(ip); XMapWindow(dpy, tmp->w); XSaveContext(dpy, tmp->w, IconManagerContext, (caddr_t) tmp); XSaveContext(dpy, tmp->w, TwmContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp->w, ScreenContext, (caddr_t) Scr); XSaveContext(dpy, tmp->icon, TwmContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp->icon, ScreenContext, (caddr_t) Scr); tmp_win->list = tmp; if (!ip->twm_win->icon) { XMapWindow(dpy, ip->w); XMapWindow(dpy, ip->twm_win->frame); } /* djhjr - 9/21/99 */ else XMapWindow(dpy, ip->twm_win->icon_w); return (tmp); } /*********************************************************************** * * Procedure: * InsertInIconManager - put an allocated entry into an icon * manager * * Inputs: * ip - the icon manager pointer * tmp - the entry to insert * *********************************************************************** */ void InsertInIconManager(ip, tmp, tmp_win) IconMgr *ip; WList *tmp; TwmWindow *tmp_win; { WList *tmp1; int added; int (*compar)() = (Scr->CaseSensitive ? strcmp : XmuCompareISOLatin1); added = FALSE; if (ip->first == NULL) { ip->first = tmp; tmp->prev = NULL; ip->last = tmp; added = TRUE; } else if (Scr->SortIconMgr) { for (tmp1 = ip->first; tmp1 != NULL; tmp1 = tmp1->next) { if ((*compar)(tmp_win->icon_name, tmp1->twm->icon_name) < 0) { tmp->next = tmp1; tmp->prev = tmp1->prev; tmp1->prev = tmp; if (tmp->prev == NULL) ip->first = tmp; else tmp->prev->next = tmp; added = TRUE; break; } } } if (!added) { ip->last->next = tmp; tmp->prev = ip->last; ip->last = tmp; } } void RemoveFromIconManager(ip, tmp) IconMgr *ip; WList *tmp; { if (tmp->prev == NULL) ip->first = tmp->next; else tmp->prev->next = tmp->next; if (tmp->next == NULL) ip->last = tmp->prev; else tmp->next->prev = tmp->prev; } /*********************************************************************** * * Procedure: * RemoveIconManager - remove a window from the icon manager * * Inputs: * tmp_win - the TwmWindow structure * *********************************************************************** */ void RemoveIconManager(tmp_win) TwmWindow *tmp_win; { IconMgr *ip; WList *tmp; if (tmp_win->list == NULL) return; tmp = tmp_win->list; /* submitted by Jonathan Paisley - 11/11/02 */ if (Active == tmp) Active = NULL; /* * Believe it or not, the kludge in events.c:HandleKeyPress() needs * this, or a window that's been destroyed still registers there, * even though the whole mess gets freed in just a few microseconds! * * djhjr - 6/5/98 */ /* * Somehwere alone the line, whatever it was got fixed, and this is * needed again - djhjr - 5/27/03 */ /*#ifdef NEVER*/ /* warps to icon managers uniquely handled in menus.c:WarpToWindow() */ tmp->active = FALSE; tmp->iconmgr->active = NULL; /*#endif*/ tmp_win->list = NULL; ip = tmp->iconmgr; RemoveFromIconManager(ip, tmp); XDeleteContext(dpy, tmp->icon, TwmContext); XDeleteContext(dpy, tmp->icon, ScreenContext); XDestroyWindow(dpy, tmp->icon); XDeleteContext(dpy, tmp->w, IconManagerContext); XDeleteContext(dpy, tmp->w, TwmContext); XDeleteContext(dpy, tmp->w, ScreenContext); XDestroyWindow(dpy, tmp->w); ip->count -= 1; #ifdef NEVER /* can't do this, else we lose the button entirely! */ /* about damn time I did this! - djhjr - 6/5/98 */ XFreePixmap(dpy, tmp->iconifypm); #endif free((char *) tmp); PackIconManager(ip); if (ip->count == 0) { /* djhjr - 9/21/99 */ if (ip->twm_win->icon) XUnmapWindow(dpy, ip->twm_win->icon_w); else XUnmapWindow(dpy, ip->twm_win->frame); } } void ActiveIconManager(active) WList *active; { active->active = TRUE; Active = active; Active->iconmgr->active = active; /* djhjr - 4/19/96 DrawIconManagerBorder(active); */ DrawIconManagerBorder(active, False); } void NotActiveIconManager(active) WList *active; { active->active = FALSE; /* djhjr - 4/19/96 DrawIconManagerBorder(active); */ DrawIconManagerBorder(active, False); } /* djhjr - 4/19/96 void DrawIconManagerBorder(tmp) WList *tmp; */ void DrawIconManagerBorder(tmp, fill) WList *tmp; int fill; { /* was 'Scr->use3Diconmanagers' - djhjr - 8/11/98 */ if (Scr->IconMgrBevelWidth > 0) { int shadow_width; /* djhjr - 4/28/98 shadow_width = 2; */ shadow_width = Scr->IconMgrBevelWidth; /* djhjr - 1/27/98 if (tmp->active && Scr->Highlight) */ if (tmp->active && Scr->IconMgrHighlight) Draw3DBorder (tmp->w, 0, 0, tmp->width, tmp->height, shadow_width, tmp->cp, on, fill, False); else Draw3DBorder (tmp->w, 0, 0, tmp->width, tmp->height, shadow_width, tmp->cp, off, fill, False); } else { /* XSetForeground(dpy, Scr->NormalGC, tmp->fore); */ XSetForeground(dpy, Scr->NormalGC, tmp->cp.fore); XDrawRectangle(dpy, tmp->w, Scr->NormalGC, 2, 2, tmp->width-5, tmp->height-5); /* djhjr - 1/27/98 if (tmp->active && Scr->Highlight) */ if (tmp->active && Scr->IconMgrHighlight) XSetForeground(dpy, Scr->NormalGC, tmp->highlight); else /* XSetForeground(dpy, Scr->NormalGC, tmp->back); */ XSetForeground(dpy, Scr->NormalGC, tmp->cp.back); XDrawRectangle(dpy, tmp->w, Scr->NormalGC, 0, 0, tmp->width-1, tmp->height-1); XDrawRectangle(dpy, tmp->w, Scr->NormalGC, 1, 1, tmp->width-3, tmp->height-3); } } /*********************************************************************** * * Procedure: * SortIconManager - sort the dude * * Inputs: * ip - a pointer to the icon manager struture * *********************************************************************** */ void SortIconManager(ip) IconMgr *ip; { WList *tmp1, *tmp2; int done; int (*compar)() = (Scr->CaseSensitive ? strcmp : XmuCompareISOLatin1); if (ip == NULL) ip = Active->iconmgr; done = FALSE; do { for (tmp1 = ip->first; tmp1 != NULL; tmp1 = tmp1->next) { if ((tmp2 = tmp1->next) == NULL) { done = TRUE; break; } if ((*compar)(tmp1->twm->icon_name, tmp2->twm->icon_name) > 0) { /* take it out and put it back in */ RemoveFromIconManager(ip, tmp2); InsertInIconManager(ip, tmp2, tmp2->twm); break; } } } while (!done); PackIconManager(ip); } /*********************************************************************** * * Procedure: * PackIconManager - pack the icon manager windows following * an addition or deletion * * Inputs: * ip - a pointer to the icon manager struture * *********************************************************************** */ void PackIconManager(ip) IconMgr *ip; { int newwidth, i, row, col, maxcol, colinc, rowinc, wheight, wwidth; int new_x, new_y; int savewidth; WList *tmp; /* djhjr - 5/2/98 */ wheight = ComputeIconMgrWindowHeight(); wwidth = ip->width / ip->columns; rowinc = wheight; colinc = wwidth; row = 0; col = ip->columns; maxcol = 0; for (i = 0, tmp = ip->first; tmp != NULL; i++, tmp = tmp->next) { tmp->me = i; if (++col >= ip->columns) { col = 0; row += 1; } if (col > maxcol) maxcol = col; new_x = col * colinc; new_y = (row-1) * rowinc; /* if the position or size has not changed, don't touch it */ if (tmp->x != new_x || tmp->y != new_y || tmp->width != wwidth || tmp->height != wheight) { XMoveResizeWindow(dpy, tmp->w, new_x, new_y, wwidth, wheight); tmp->row = row-1; tmp->col = col; tmp->x = new_x; tmp->y = new_y; tmp->width = wwidth; tmp->height = wheight; } } maxcol += 1; ip->cur_rows = row; ip->cur_columns = maxcol; ip->height = row * rowinc; if (ip->height == 0) ip->height = rowinc; newwidth = maxcol * colinc; if (newwidth == 0) newwidth = colinc; XResizeWindow(dpy, ip->w, newwidth, ip->height); savewidth = ip->width; if (ip->twm_win) { /* limit the min and max sizes of an icon manager - djhjr - 3/1/99 */ ip->twm_win->hints.flags |= (PMinSize | PMaxSize); ip->twm_win->hints.min_width = maxcol * (2 * iconmgr_iconx + siconify_width); ip->twm_win->hints.min_height = ip->height; ip->twm_win->hints.max_width = Scr->MyDisplayWidth; ip->twm_win->hints.max_height = ip->height; /* djhjr - 4/19/96 SetupWindow (ip->twm_win, ip->twm_win->frame_x, ip->twm_win->frame_y, newwidth, ip->height + ip->twm_win->title_height, -1); */ SetupWindow (ip->twm_win, ip->twm_win->frame_x, ip->twm_win->frame_y, newwidth + 2 * ip->twm_win->frame_bw3D, ip->height + ip->twm_win->title_height + 2 * ip->twm_win->frame_bw3D, -1); } ip->width = savewidth; } /* * ComputeIconMgrWindowHeight() * scale the icon manager window height to the font used * * djhjr - 5/2/98 */ static int ComputeIconMgrWindowHeight() { int h; /* was 'Scr->use3Diconmanagers' - djhjr - 8/11/98 */ if (Scr->IconMgrBevelWidth > 0) { h = Scr->IconManagerFont.height + 2 * Scr->IconMgrBevelWidth + 4; if (h < (siconify_height + 2 * Scr->IconMgrBevelWidth + 4)) h = siconify_height + 2 * Scr->IconMgrBevelWidth + 4; } else { h = Scr->IconManagerFont.height + 10; if (h < (siconify_height + 4)) h = siconify_height + 4; } /* make height be odd so buttons look nice and centered */ if (!(h & 1)) h++; return (h); } vtwm-5.4.7/gc.h0100664000015300001300000000461010232673651012063 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: gc.h,v 1.5 89/10/27 14:01:17 jim Exp $ * * GC related externs * * 8-Apr-88 Tom LaStrange Initial Version. * **********************************************************************/ #ifndef _GC_ #define _GC_ extern void CreateGCs(); #endif /* _GC_ */ vtwm-5.4.7/resize.c0100664000015300001300000015376410237645271013007 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: resize.c,v 1.80 91/05/11 17:35:42 dave Exp $ * * window resizing borrowed from the "wm" window manager * * 11-Dec-87 Thomas E. LaStrange File created * ***********************************************************************/ #include #include "twm.h" #include "parse.h" #include "util.h" #include "resize.h" #include "add_window.h" #include "screen.h" #include "desktop.h" #include "events.h" #include "menus.h" #define MINHEIGHT 0 /* had been 32 */ #define MINWIDTH 0 /* had been 60 */ static int dragx; /* all these variables are used */ static int dragy; /* in resize operations */ static int dragWidth; static int dragHeight; int origx; int origy; int origWidth; int origHeight; static int clampTop; static int clampBottom; static int clampLeft; static int clampRight; static int clampDX; static int clampDY; static int last_width; static int last_height; static int resize_context; /* set in menus.c:ExecuteFunction(), cleared in *EndResize() - djhjr - 9/5/98 */ int resizing_window = 0; /* djhjr - 4/6/98 */ void PaintBorderAndTitlebar(); /* djhjr - 4/17/98 */ static void DoVirtualMoveResize(); /* djhjr - 9/10/99 */ void ResizeTwmWindowContents(); /* djhjr - 9/13/02 */ static void SetVirtualDesktopIncrs(); static void EndResizeAdjPointer(); static void do_auto_clamp (tmp_win, evp) TwmWindow *tmp_win; XEvent *evp; { Window junkRoot; int x, y, h, v, junkbw; unsigned int junkMask; switch (evp->type) { case ButtonPress: x = evp->xbutton.x_root; y = evp->xbutton.y_root; break; case KeyPress: x = evp->xkey.x_root; y = evp->xkey.y_root; break; default: if (!XQueryPointer (dpy, Scr->Root, &junkRoot, &junkRoot, &x, &y, &junkbw, &junkbw, &junkMask)) return; } h = ((x - dragx) / (dragWidth < 3 ? 1 : (dragWidth / 3))); v = ((y - dragy - tmp_win->title_height) / (dragHeight < 3 ? 1 : (dragHeight / 3))); if (h <= 0) { clampLeft = 1; clampDX = (x - dragx); } else if (h >= 2) { clampRight = 1; clampDX = (x - dragx - dragWidth); } if (v <= 0) { clampTop = 1; clampDY = (y - dragy); } else if (v >= 2) { clampBottom = 1; clampDY = (y - dragy - dragHeight); } } /*********************************************************************** * * Procedure: * StartResize - begin a window resize operation * * Inputs: * ev - the event structure (button press) * tmp_win - the TwmWindow pointer * fromtitlebar - action invoked from titlebar button * *********************************************************************** */ void StartResize(evp, tmp_win, fromtitlebar, context) XEvent *evp; TwmWindow *tmp_win; Bool fromtitlebar; int context; { Window junkRoot; unsigned int junkbw, junkDepth; resize_context = context; SetVirtualDesktopIncrs(tmp_win); /* djhjr - 9/13/02 */ if (context == C_VIRTUAL_WIN) ResizeWindow = tmp_win->VirtualDesktopDisplayWindow; else ResizeWindow = tmp_win->frame; /* djhjr - 7/17/98 * djhjr - 4/15/98 * if (!Scr->NoGrabServer) */ { /* added test - djhjr - 4/7/98 */ if (!tmp_win->opaque_resize) XGrabServer(dpy); } if (context == C_VIRTUAL_WIN) XGrabPointer(dpy, Scr->VirtualDesktopDisplay, True, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | PointerMotionHintMask, GrabModeAsync, GrabModeAsync, Scr->Root, Scr->ResizeCursor, CurrentTime); else XGrabPointer(dpy, Scr->Root, True, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | PointerMotionHintMask, GrabModeAsync, GrabModeAsync, Scr->Root, Scr->ResizeCursor, CurrentTime); XGetGeometry(dpy, (Drawable) ResizeWindow, &junkRoot, &dragx, &dragy, (unsigned int *)&dragWidth, (unsigned int *)&dragHeight, &junkbw, &junkDepth); if (context != C_VIRTUAL_WIN) { dragx += tmp_win->frame_bw; dragy += tmp_win->frame_bw; } origx = dragx; origy = dragy; origWidth = dragWidth; origHeight = dragHeight; clampTop = clampBottom = clampLeft = clampRight = clampDX = clampDY = 0; if (Scr->AutoRelativeResize && !fromtitlebar) do_auto_clamp (tmp_win, evp); /* use initialized size... djhjr - 5/9/96 Scr->SizeStringOffset = SIZE_HINDENT; XResizeWindow (dpy, Scr->SizeWindow, Scr->SizeStringWidth + SIZE_HINDENT * 2, Scr->SizeFont.height + SIZE_VINDENT * 2); */ XMapRaised(dpy, Scr->SizeWindow); if (!tmp_win->opaque_resize) InstallRootColormap(); last_width = 0; last_height = 0; DisplaySize(tmp_win, origWidth, origHeight); if (resize_context == C_VIRTUAL_WIN) MoveOutline (Scr->VirtualDesktopDisplay, dragx, dragy, dragWidth, dragHeight, tmp_win->frame_bw, 0); else /* added this 'if ... else' - djhjr - 4/6/98 */ if (tmp_win->opaque_resize) { SetupWindow (tmp_win, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth, dragHeight, -1); PaintBorderAndTitlebar(tmp_win); } else MoveOutline (Scr->Root, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth + 2 * tmp_win->frame_bw, dragHeight + 2 * tmp_win->frame_bw, /* djhjr - 4/24/96 tmp_win->frame_bw, tmp_win->title_height); */ tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); } /* added the passed 'context' - djhjr - 2/22/99 */ void MenuStartResize(tmp_win, x, y, w, h, context) TwmWindow *tmp_win; int x, y, w, h; int context; { /* djhjr - 2/22/99 */ resize_context = context; SetVirtualDesktopIncrs(tmp_win); /* djhjr - 9/13/02 */ /* djhjr - 7/17/98 * djhjr - 4/15/98 * if (!Scr->NoGrabServer) */ { /* added test - djhjr - 4/7/98 */ if (!tmp_win->opaque_resize) XGrabServer(dpy); } XGrabPointer(dpy, Scr->Root, True, ButtonPressMask | ButtonMotionMask | PointerMotionMask, GrabModeAsync, GrabModeAsync, Scr->Root, Scr->ResizeCursor, CurrentTime); dragx = x + tmp_win->frame_bw; dragy = y + tmp_win->frame_bw; origx = dragx; origy = dragy; dragWidth = origWidth = w; /* - 2 * tmp_win->frame_bw; */ dragHeight = origHeight = h; /* - 2 * tmp_win->frame_bw; */ clampTop = clampBottom = clampLeft = clampRight = clampDX = clampDY = 0; last_width = 0; last_height = 0; /* use initialized size... djhjr - 5/9/96 Scr->SizeStringOffset = SIZE_HINDENT; XResizeWindow (dpy, Scr->SizeWindow, Scr->SizeStringWidth + SIZE_HINDENT * 2, Scr->SizeFont.height + SIZE_VINDENT * 2); */ XMapRaised(dpy, Scr->SizeWindow); if (!tmp_win->opaque_resize) InstallRootColormap(); DisplaySize(tmp_win, origWidth, origHeight); /* added this 'if ... else' - djhjr - 4/6/98 */ if (tmp_win->opaque_resize) { SetupWindow (tmp_win, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth, dragHeight, -1); PaintBorderAndTitlebar(tmp_win); } else MoveOutline (Scr->Root, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth + 2 * tmp_win->frame_bw, dragHeight + 2 * tmp_win->frame_bw, /* djhjr - 4/23/96 tmp_win->frame_bw, tmp_win->title_height); */ tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); } /*********************************************************************** * * Procedure: * AddStartResize - begin a windorew resize operation from AddWindow * * Inputs: * tmp_win - the TwmWindow pointer * *********************************************************************** */ void AddStartResize(tmp_win, x, y, w, h) TwmWindow *tmp_win; int x, y, w, h; { /* djhjr - 2/22/99 */ resize_context = C_WINDOW; SetVirtualDesktopIncrs(tmp_win); /* djhjr - 9/13/02 */ /* djhjr - 7/17/98 * djhjr - 4/15/98 * if (!Scr->NoGrabServer) */ { /* added test - djhjr - 4/7/98 */ if (!tmp_win->opaque_resize) XGrabServer(dpy); } XGrabPointer(dpy, Scr->Root, True, ButtonReleaseMask | ButtonMotionMask | PointerMotionHintMask, GrabModeAsync, GrabModeAsync, Scr->Root, Scr->ResizeCursor, CurrentTime); dragx = x + tmp_win->frame_bw; dragy = y + tmp_win->frame_bw; origx = dragx; origy = dragy; dragWidth = origWidth = w - 2 * tmp_win->frame_bw; dragHeight = origHeight = h - 2 * tmp_win->frame_bw; clampTop = clampBottom = clampLeft = clampRight = clampDX = clampDY = 0; /***** if (Scr->AutoRelativeResize) { clampRight = clampBottom = 1; } *****/ last_width = 0; last_height = 0; DisplaySize(tmp_win, origWidth, origHeight); } /* * Functionally identical with DoResize(), except that this * handles a virtual window differently, but it isn't used anyway. * djhjr - 10/6/02 */ #if 0 void MenuDoResize(x_root, y_root, tmp_win) int x_root; int y_root; TwmWindow *tmp_win; { int action; action = 0; x_root -= clampDX; y_root -= clampDY; if (clampTop) { int delta = y_root - dragy; if (dragHeight - delta < MINHEIGHT) { delta = dragHeight - MINHEIGHT; clampTop = 0; } dragy += delta; dragHeight -= delta; action = 1; } else if (y_root <= dragy/* || y_root == findRootInfo(root)->rooty*/) { dragy = y_root; dragHeight = origy + origHeight - y_root; clampBottom = 0; clampTop = 1; clampDY = 0; action = 1; } if (clampLeft) { int delta = x_root - dragx; if (dragWidth - delta < MINWIDTH) { delta = dragWidth - MINWIDTH; clampLeft = 0; } dragx += delta; dragWidth -= delta; action = 1; } else if (x_root <= dragx/* || x_root == findRootInfo(root)->rootx*/) { dragx = x_root; dragWidth = origx + origWidth - x_root; clampRight = 0; clampLeft = 1; clampDX = 0; action = 1; } if (clampBottom) { int delta = y_root - dragy - dragHeight; if (dragHeight + delta < MINHEIGHT) { delta = MINHEIGHT - dragHeight; clampBottom = 0; } dragHeight += delta; action = 1; } else if (y_root >= dragy + dragHeight - 1/* || y_root == findRootInfo(root)->rooty + findRootInfo(root)->rootheight - 1*/) { dragy = origy; dragHeight = 1 + y_root - dragy; clampTop = 0; clampBottom = 1; clampDY = 0; action = 1; } if (clampRight) { int delta = x_root - dragx - dragWidth; if (dragWidth + delta < MINWIDTH) { delta = MINWIDTH - dragWidth; clampRight = 0; } dragWidth += delta; action = 1; } else if (x_root >= dragx + dragWidth - 1/* || x_root == findRootInfo(root)->rootx + findRootInfo(root)->rootwidth - 1*/) { dragx = origx; dragWidth = 1 + x_root - origx; clampLeft = 0; clampRight = 1; clampDX = 0; action = 1; } if (action) { ConstrainSize (tmp_win, &dragWidth, &dragHeight); if (clampLeft) dragx = origx + origWidth - dragWidth; if (clampTop) dragy = origy + origHeight - dragHeight; if (resize_context == C_VIRTUAL_WIN) MoveOutline(Scr->VirtualDesktopDisplay, dragx, dragy, dragWidth, dragHeight, tmp_win->frame_bw, 0); else { /* added this 'if ... else' - djhjr - 4/6/98 */ if (tmp_win->opaque_resize) { SetupWindow (tmp_win, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth, dragHeight, -1); /* force the redraw of a door - djhjr - 2/28/99 */ { TwmDoor *door; if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *)&door) != XCNOENT) RedoDoorName(tmp_win, door); } /* force the redraw of the desktop - djhjr - 2/28/99 */ if (!strcmp(tmp_win->class.res_class, VTWM_DESKTOP_CLASS)) { ResizeDesktopDisplay(dragWidth, dragHeight); Draw3DBorder(Scr->VirtualDesktopDisplayOuter, 0, 0, Scr->VirtualDesktopMaxWidth + (Scr->VirtualDesktopBevelWidth * 2), Scr->VirtualDesktopMaxHeight + (Scr->VirtualDesktopBevelWidth * 2), Scr->VirtualDesktopBevelWidth, Scr->VirtualC, off, False, False); } /* force the redraw of an icon manager - djhjr - 3/1/99 */ if (tmp_win->iconmgr) { struct WList *list; int ncols = tmp_win->iconmgrp->cur_columns; if (ncols == 0) ncols = 1; /* djhjr - 4/24/96 tmp_win->iconmgrp->width = (int) ((dragWidth * */ tmp_win->iconmgrp->width = (int) (((dragWidth - 2 * tmp_win->frame_bw3D) * (long) tmp_win->iconmgrp->columns) / ncols); PackIconManager(tmp_win->iconmgrp); list = tmp_win->iconmgrp->first; while (list) { RedoListWindow(list->twm); list = list->next; } } PaintBorderAndTitlebar(tmp_win); /* djhjr - 4/15/98 */ /* added '&& !resizing_window' - djhjr - 11/7/03 */ if (!Scr->NoGrabServer && !resizing_window) { /* these let the application window be drawn - djhjr - 4/14/98 */ XUngrabServer(dpy); XSync(dpy, 0); XGrabServer(dpy); } } else MoveOutline(Scr->Root, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth + 2 * tmp_win->frame_bw, dragHeight + 2 * tmp_win->frame_bw, /* djhjr - 4/24/96 tmp_win->frame_bw, tmp_win->title_height); */ tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); /* djhjr - 4/17/98 */ if (Scr->VirtualReceivesMotionEvents) DoVirtualMoveResize(tmp_win, dragx, dragy, dragWidth, dragHeight); } } DisplaySize(tmp_win, dragWidth, dragHeight); } #endif /*********************************************************************** * * Procedure: * DoResize - move the rubberband around. This is called for * each motion event when we are resizing * * Inputs: * x_root - the X corrdinate in the root window * y_root - the Y corrdinate in the root window * tmp_win - the current twm window * *********************************************************************** */ void DoResize(x_root, y_root, tmp_win) int x_root; int y_root; TwmWindow *tmp_win; { int action; action = 0; x_root -= clampDX; y_root -= clampDY; if (clampTop) { int delta = y_root - dragy; if (dragHeight - delta < MINHEIGHT) { delta = dragHeight - MINHEIGHT; clampTop = 0; } dragy += delta; dragHeight -= delta; action = 1; } else if (y_root <= dragy/* || y_root == findRootInfo(root)->rooty*/) { dragy = y_root; dragHeight = origy + origHeight - y_root; clampBottom = 0; clampTop = 1; clampDY = 0; action = 1; } if (clampLeft) { int delta = x_root - dragx; if (dragWidth - delta < MINWIDTH) { delta = dragWidth - MINWIDTH; clampLeft = 0; } dragx += delta; dragWidth -= delta; action = 1; } else if (x_root <= dragx/* || x_root == findRootInfo(root)->rootx*/) { dragx = x_root; dragWidth = origx + origWidth - x_root; clampRight = 0; clampLeft = 1; clampDX = 0; action = 1; } if (clampBottom) { int delta = y_root - dragy - dragHeight; if (dragHeight + delta < MINHEIGHT) { delta = MINHEIGHT - dragHeight; clampBottom = 0; } dragHeight += delta; action = 1; } else if (y_root >= dragy + dragHeight - 1/* || y_root == findRootInfo(root)->rooty + findRootInfo(root)->rootheight - 1*/) { dragy = origy; dragHeight = 1 + y_root - dragy; clampTop = 0; clampBottom = 1; clampDY = 0; action = 1; } if (clampRight) { int delta = x_root - dragx - dragWidth; if (dragWidth + delta < MINWIDTH) { delta = MINWIDTH - dragWidth; clampRight = 0; } dragWidth += delta; action = 1; } else if (x_root >= dragx + dragWidth - 1/* || x_root == findRootInfo(root)->rootx + findRootInfo(root)->rootwidth - 1*/) { dragx = origx; dragWidth = 1 + x_root - origx; clampLeft = 0; clampRight = 1; clampDX = 0; action = 1; } if (action) { ConstrainSize (tmp_win, &dragWidth, &dragHeight); if (clampLeft) dragx = origx + origWidth - dragWidth; if (clampTop) dragy = origy + origHeight - dragHeight; /* added this 'if() ... else' - djhjr - 4/6/98 */ if (tmp_win->opaque_resize) { SetupWindow(tmp_win, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth, dragHeight, -1); /* force the redraw of a door - djhjr - 2/28/99 */ { TwmDoor *door; if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *)&door) != XCNOENT) RedoDoorName(tmp_win, door); } /* force the redraw of the desktop - djhjr - 2/28/99 */ if (!strcmp(tmp_win->class.res_class, VTWM_DESKTOP_CLASS)) { ResizeDesktopDisplay(dragWidth, dragHeight); Draw3DBorder(Scr->VirtualDesktopDisplayOuter, 0, 0, Scr->VirtualDesktopMaxWidth + (Scr->VirtualDesktopBevelWidth * 2), Scr->VirtualDesktopMaxHeight + (Scr->VirtualDesktopBevelWidth * 2), Scr->VirtualDesktopBevelWidth, Scr->VirtualC, off, False, False); } /* force the redraw of an icon manager - djhjr - 3/1/99 */ if (tmp_win->iconmgr) { struct WList *list; int ncols = tmp_win->iconmgrp->cur_columns; if (ncols == 0) ncols = 1; /* djhjr - 4/24/96 tmp_win->iconmgrp->width = (int) ((dragWidth * */ tmp_win->iconmgrp->width = (int) (((dragWidth - 2 * tmp_win->frame_bw3D) * (long) tmp_win->iconmgrp->columns) / ncols); PackIconManager(tmp_win->iconmgrp); list = tmp_win->iconmgrp->first; while (list) { RedoListWindow(list->twm); list = list->next; } } PaintBorderAndTitlebar(tmp_win); /* djhjr - 4/15/98 */ /* added '&& !resizing_window' - djhjr - 11/7/03 */ if (!Scr->NoGrabServer && !resizing_window) { /* these let the application window be drawn - djhjr - 4/14/98 */ XUngrabServer(dpy); XSync(dpy, 0); XGrabServer(dpy); } } else MoveOutline(Scr->Root, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth + 2 * tmp_win->frame_bw, dragHeight + 2 * tmp_win->frame_bw, /* djhjr - 4/24/96 tmp_win->frame_bw, tmp_win->title_height); */ tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); /* djhjr - 4/17/98 */ if (Scr->VirtualReceivesMotionEvents) DoVirtualMoveResize(tmp_win, dragx, dragy, dragWidth, dragHeight); } DisplaySize(tmp_win, dragWidth, dragHeight); } /* djhjr - 9/13/02 */ static void SetVirtualDesktopIncrs(tmp_win) TwmWindow *tmp_win; { if (strcmp(tmp_win->class.res_class, VTWM_DESKTOP_CLASS) == 0) { if (Scr->snapRealScreen) { Scr->VirtualDesktopDisplayTwin->hints.flags |= PResizeInc; Scr->VirtualDesktopDisplayTwin->hints.width_inc = SCALE_D(Scr->VirtualDesktopPanDistanceX); Scr->VirtualDesktopDisplayTwin->hints.height_inc = SCALE_D(Scr->VirtualDesktopPanDistanceY); } else Scr->VirtualDesktopDisplayTwin->hints.flags &= ~PResizeInc; XSetWMNormalHints(dpy, tmp_win->w, &Scr->VirtualDesktopDisplayTwin->hints); } } /*********************************************************************** * * Procedure: * DisplaySize - display the size in the dimensions window * * Inputs: * tmp_win - the current twm window * width - the width of the rubber band * height - the height of the rubber band * *********************************************************************** */ void DisplaySize(tmp_win, width, height) TwmWindow *tmp_win; int width; int height; { char str[100]; int i, dwidth, dheight; if (last_width == width && last_height == height) return; last_width = width; last_height = height; if (resize_context == C_VIRTUAL_WIN) { dheight = SCALE_U(height) - tmp_win->title_height; dwidth = SCALE_U(width); } else { /* djhjr - 4/24/96 dheight = height - tmp_win->title_height; dwidth = width; */ dheight = height - tmp_win->title_height - 2 * tmp_win->frame_bw3D; dwidth = width - 2 * tmp_win->frame_bw3D; } /* * ICCCM says that PMinSize is the default is no PBaseSize is given, * and vice-versa. * Don't adjust if window is the virtual desktop - djhjr - 9/13/02 */ if (tmp_win->hints.flags&(PMinSize|PBaseSize) && tmp_win->hints.flags & PResizeInc) { if (tmp_win->hints.flags & PBaseSize) { dwidth -= tmp_win->hints.base_width; dheight -= tmp_win->hints.base_height; } else if (strcmp(tmp_win->class.res_class, VTWM_DESKTOP_CLASS) != 0) { dwidth -= tmp_win->hints.min_width; dheight -= tmp_win->hints.min_height; } } if (tmp_win->hints.flags & PResizeInc) { dwidth /= tmp_win->hints.width_inc; dheight /= tmp_win->hints.height_inc; } /* * Non-SysV systems - specifically, BSD-derived systems - return a * pointer to the string, not its length. Submitted by Goran Larsson i = sprintf (str, "%5d x %-5d", dwidth, dheight); */ sprintf (str, "%5d x %-5d", dwidth, dheight); i = strlen (str); XRaiseWindow(dpy, Scr->SizeWindow); /* font was font.font->fid - djhjr - 9/14/03 */ FBF(Scr->DefaultC.fore, Scr->DefaultC.back, Scr->SizeFont); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, Scr->SizeWindow, &Scr->SizeFont, #else XDrawImageString (dpy, Scr->SizeWindow, #endif Scr->NormalGC, /* djhjr - 5/9/96 Scr->SizeStringOffset, */ (Scr->SizeStringWidth - /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_TextWidth(&Scr->SizeFont, #else XTextWidth(Scr->SizeFont.font, #endif str, i)) / 2, /* djhjr - 4/29/98 Scr->SizeFont.font->ascent + SIZE_VINDENT, */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ /* djhjr 9/14/03 Scr->SizeFont.font->ascent + */ Scr->SizeFont.ascent + SIZE_VINDENT + ((Scr->InfoBevelWidth > 0) ? Scr->InfoBevelWidth : 0), str, i); /* I know, I know, but the above code overwrites it... djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->InfoBevelWidth > 0) Draw3DBorder(Scr->SizeWindow, 0, 0, Scr->SizeStringWidth, /* djhjr - 4/29/98 (unsigned int) (Scr->SizeFont.height + SIZE_VINDENT*2), BW, Scr->DefaultC, off, False, False); */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ (unsigned int) (Scr->SizeFont.height + SIZE_VINDENT*2) + ((Scr->InfoBevelWidth > 0) ? 2 * Scr->InfoBevelWidth : 0), Scr->InfoBevelWidth, Scr->DefaultC, off, False, False); } /*********************************************************************** * * Procedure: * EndResize - finish the resize operation * *********************************************************************** */ void EndResize() { TwmWindow *tmp_win; #ifdef DEBUG fprintf(stderr, "EndResize\n"); #endif if (resize_context == C_VIRTUAL_WIN) MoveOutline(Scr->VirtualDesktopDisplay, 0, 0, 0, 0, 0, 0); else MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); XUnmapWindow(dpy, Scr->SizeWindow); XFindContext(dpy, ResizeWindow, TwmContext, (caddr_t *)&tmp_win); if (resize_context == C_VIRTUAL_WIN) { /* scale up */ dragWidth = SCALE_U(dragWidth); dragHeight = SCALE_U(dragHeight); dragx = SCALE_U(dragx); dragy = SCALE_U(dragy); } ConstrainSize (tmp_win, &dragWidth, &dragHeight); if (dragWidth != tmp_win->frame_width || dragHeight != tmp_win->frame_height) tmp_win->zoomed = ZOOM_NONE; SetupWindow (tmp_win, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth, dragHeight, -1); EndResizeAdjPointer(tmp_win); /* djhjr - 9/13/02 */ /* added test for opaque resizing - djhjr - 2/28/99, 3/1/99 */ if (!tmp_win->opaque_resize) { /* was inline code - djhjr - 9/10/99 */ ResizeTwmWindowContents(tmp_win, dragWidth, dragHeight); } #if 0 /* done in menus.c:ExecuteFunction() - djhjr - 10/6/02 */ if (!Scr->NoRaiseResize) { XRaiseWindow(dpy, tmp_win->frame); RaiseStickyAbove (); /* DSE */ RaiseAutoPan(); } UninstallRootColormap(); /* the resize can have cause the window to move on the screen, hence on the virtual * desktop - need to fix the virtual coords */ tmp_win->virtual_frame_x = R_TO_V_X(dragx); tmp_win->virtual_frame_y = R_TO_V_Y(dragy); /* UpdateDesktop(tmp_win); Stig */ MoveResizeDesktop(tmp_win, Scr->NoRaiseResize); /* Stig */ #endif #if 0 /* done in menus.c:ExecuteFunction() - djhjr - 10/11/01 */ /* djhjr - 6/4/98 */ /* don't re-map if the window is the virtual desktop - djhjr - 2/28/99 */ if (Scr->VirtualReceivesMotionEvents && /* !tmp_win->opaque_resize && */ tmp_win->w != Scr->VirtualDesktopDisplayOuter) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } #endif ResizeWindow = None; /* djhjr - 9/5/98 */ resizing_window = 0; } /* added the passed 'context' - djhjr - 9/30/02 */ void MenuEndResize(tmp_win, context) TwmWindow *tmp_win; int context; { /* added this 'if (...) ... else' - djhjr - 2/22/99 */ if (resize_context == C_VIRTUAL_WIN) MoveOutline(Scr->VirtualDesktopDisplay, 0, 0, 0, 0, 0, 0); else MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); XUnmapWindow(dpy, Scr->SizeWindow); ConstrainSize (tmp_win, &dragWidth, &dragHeight); /* djhjr - 9/19/96 */ if (dragWidth != tmp_win->frame_width || dragHeight != tmp_win->frame_height) tmp_win->zoomed = ZOOM_NONE; /* djhjr - 10/6/02 AddingX = dragx; AddingY = dragy; AddingW = dragWidth + (2 * tmp_win->frame_bw); AddingH = dragHeight + (2 * tmp_win->frame_bw); SetupWindow (tmp_win, AddingX, AddingY, AddingW, AddingH, -1); */ SetupWindow (tmp_win, dragx - tmp_win->frame_bw, dragy - tmp_win->frame_bw, dragWidth, dragHeight, -1); /* djhjr - 9/13/02 9/30/02 */ if (context != C_VIRTUAL_WIN) EndResizeAdjPointer(tmp_win); /* added test for opaque resizing - djhjr - 2/28/99, 3/1/99 */ if (!tmp_win->opaque_resize) { /* was inline code - djhjr - 9/10/99 */ ResizeTwmWindowContents(tmp_win, dragWidth, dragHeight); } #if 0 /* done in menus.c:ExecuteFunction() - djhjr - 10/11/01 */ /* djhjr - 6/4/98 */ /* don't re-map if the window is the virtual desktop - djhjr - 2/28/99 */ if (Scr->VirtualReceivesMotionEvents && /* !tmp_win->opaque_resize && */ tmp_win->w != Scr->VirtualDesktopDisplayOuter) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } #endif /* djhjr - 9/5/98 */ resizing_window = 0; } /*********************************************************************** * * Procedure: * AddEndResize - finish the resize operation for AddWindow * *********************************************************************** */ void AddEndResize(tmp_win) TwmWindow *tmp_win; { #ifdef DEBUG fprintf(stderr, "AddEndResize\n"); #endif /* djhjr - 2/22/99 */ MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); XUnmapWindow(dpy, Scr->SizeWindow); ConstrainSize (tmp_win, &dragWidth, &dragHeight); AddingX = dragx; AddingY = dragy; AddingW = dragWidth + (2 * tmp_win->frame_bw); AddingH = dragHeight + (2 * tmp_win->frame_bw); EndResizeAdjPointer(tmp_win); /* djhjr - 9/13/02 */ /* djhjr - 9/19/96 */ if (dragWidth != tmp_win->frame_width || dragHeight != tmp_win->frame_height) tmp_win->zoomed = ZOOM_NONE; #if 0 /* done in add_window.c:AddMoveAndResize() - djhjr - 10/11/01 */ /* djhjr - 6/4/98 */ if (Scr->VirtualReceivesMotionEvents/* && !tmp_win->opaque_resize*/) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } #endif /* djhjr - 9/5/98 */ resizing_window = 0; } /* djhjr - 9/13/02 */ static void EndResizeAdjPointer(tmp_win) TwmWindow *tmp_win; { int x, y, bw = tmp_win->frame_bw + tmp_win->frame_bw3D; XQueryPointer(dpy, Scr->Root, &JunkRoot, &JunkChild, &JunkX, &JunkY, &JunkBW, &JunkBW, &JunkBW); XTranslateCoordinates(dpy, Scr->Root, tmp_win->frame, JunkX, JunkY, &x, &y, &JunkChild); /* for borderless windows */ if (bw == 0) bw = 4; /* (tmp_win->frame_bw) == no 3D borders */ if (x <= 0) { if (y < tmp_win->title_height) x = tmp_win->title_x + ((tmp_win->frame_bw) ? (bw / 2) : -(bw / 2)); else x = ((tmp_win->frame_bw) ? -(bw / 2) : (bw / 2)); } if (x >= tmp_win->frame_width) { if (y < tmp_win->title_height) x = tmp_win->title_x + tmp_win->title_width + (bw / 2); else x = tmp_win->frame_width + ((tmp_win->frame_bw) ? (bw / 2) : -(bw / 2)); } if (y <= tmp_win->title_height) { if (x >= tmp_win->title_x - ((tmp_win->frame_bw) ? 0 : bw) && x < tmp_win->title_x + tmp_win->title_width + bw) { if (y <= 0) y = ((tmp_win->frame_bw) ? -(bw / 2) : (bw / 2)); } else y = tmp_win->title_height + ((tmp_win->frame_bw) ? -(bw / 2) : (bw / 2)); } if (y >= tmp_win->frame_height) y = tmp_win->frame_height + ((tmp_win->frame_bw) ? (bw / 2) : -(bw / 2)); XWarpPointer(dpy, None, tmp_win->frame, 0, 0, 0, 0, x, y); } /*********************************************************************** * * Procedure: * ConstrainSize - adjust the given width and height to account for the * constraints imposed by size hints * * The general algorithm, especially the aspect ratio stuff, is * borrowed from uwm's CheckConsistency routine. * ***********************************************************************/ void ConstrainSize (tmp_win, widthp, heightp) TwmWindow *tmp_win; int *widthp, *heightp; { #define makemult(a,b) ((b==1) ? (a) : (((int)((a)/(b))) * (b)) ) #define _min(a,b) (((a) < (b)) ? (a) : (b)) int minWidth, minHeight, maxWidth, maxHeight, xinc, yinc, delta; int baseWidth, baseHeight; int dwidth = *widthp, dheight = *heightp; /* djhjr - 4/24/96 dheight -= tmp_win->title_height; */ dwidth -= 2 * tmp_win->frame_bw3D; dheight -= (tmp_win->title_height + 2 * tmp_win->frame_bw3D); if (tmp_win->hints.flags & PMinSize) { minWidth = tmp_win->hints.min_width; minHeight = tmp_win->hints.min_height; } else if (tmp_win->hints.flags & PBaseSize) { minWidth = tmp_win->hints.base_width; minHeight = tmp_win->hints.base_height; } else minWidth = minHeight = 1; if (resize_context == C_VIRTUAL_WIN) { minWidth = SCALE_D(minWidth); minHeight = SCALE_D(minHeight); } if (tmp_win->hints.flags & PBaseSize) { baseWidth = tmp_win->hints.base_width; baseHeight = tmp_win->hints.base_height; } else if (tmp_win->hints.flags & PMinSize) { baseWidth = tmp_win->hints.min_width; baseHeight = tmp_win->hints.min_height; } else baseWidth = baseHeight = 0; if (resize_context == C_VIRTUAL_WIN) { baseWidth = SCALE_D(baseWidth); baseHeight = SCALE_D(baseHeight); } if (tmp_win->hints.flags & PMaxSize) { maxWidth = _min (Scr->MaxWindowWidth, tmp_win->hints.max_width); maxHeight = _min (Scr->MaxWindowHeight, tmp_win->hints.max_height); } else { maxWidth = Scr->MaxWindowWidth; maxHeight = Scr->MaxWindowHeight; } if (resize_context == C_VIRTUAL_WIN) { maxWidth = SCALE_D(maxWidth); maxHeight = SCALE_D(maxHeight); } if (tmp_win->hints.flags & PResizeInc) { xinc = tmp_win->hints.width_inc; yinc = tmp_win->hints.height_inc; } else xinc = yinc = 1; if (resize_context == C_VIRTUAL_WIN) { xinc = SCALE_D(xinc); yinc = SCALE_D(yinc); } /* * First, clamp to min and max values */ if (dwidth < minWidth) dwidth = minWidth; if (dheight < minHeight) dheight = minHeight; if (dwidth > maxWidth) dwidth = maxWidth; if (dheight > maxHeight) dheight = maxHeight; /* * Second, fit to base + N * inc */ dwidth = ((dwidth - baseWidth) / xinc * xinc) + baseWidth; dheight = ((dheight - baseHeight) / yinc * yinc) + baseHeight; /* * Third, adjust for aspect ratio */ #define maxAspectX tmp_win->hints.max_aspect.x #define maxAspectY tmp_win->hints.max_aspect.y #define minAspectX tmp_win->hints.min_aspect.x #define minAspectY tmp_win->hints.min_aspect.y /* * The math looks like this: * * minAspectX dwidth maxAspectX * ---------- <= ------- <= ---------- * minAspectY dheight maxAspectY * * If that is multiplied out, then the width and height are * invalid in the following situations: * * minAspectX * dheight > minAspectY * dwidth * maxAspectX * dheight < maxAspectY * dwidth * */ if (tmp_win->hints.flags & PAspect) { if (minAspectX * dheight > minAspectY * dwidth) { delta = makemult(minAspectX * dheight / minAspectY - dwidth, xinc); if (dwidth + delta <= maxWidth) dwidth += delta; else { delta = makemult(dheight - dwidth*minAspectY/minAspectX, yinc); if (dheight - delta >= minHeight) dheight -= delta; } } if (maxAspectX * dheight < maxAspectY * dwidth) { delta = makemult(dwidth * maxAspectY / maxAspectX - dheight, yinc); if (dheight + delta <= maxHeight) dheight += delta; else { delta = makemult(dwidth - maxAspectX*dheight/maxAspectY, xinc); if (dwidth - delta >= minWidth) dwidth -= delta; } } } /* * Fourth, account for border width and title height */ /* djhjr - 4/26/96 *widthp = dwidth; *heightp = dheight + tmp_win->title_height; */ *widthp = dwidth + 2 * tmp_win->frame_bw3D; *heightp = dheight + tmp_win->title_height + 2 * tmp_win->frame_bw3D; } /*********************************************************************** * * Procedure: * SetupWindow - set window sizes, this was called from either * AddWindow, EndResize, or HandleConfigureNotify. * * Inputs: * tmp_win - the TwmWindow pointer * x - the x coordinate of the upper-left outer corner of the frame * y - the y coordinate of the upper-left outer corner of the frame * w - the width of the frame window w/o border * h - the height of the frame window w/o border * bw - the border width of the frame window or -1 not to change * * Special Considerations: * This routine will check to make sure the window is not completely * off the display, if it is, it'll bring some of it back on. * * The tmp_win->frame_XXX variables should NOT be updated with the * values of x,y,w,h prior to calling this routine, since the new * values are compared against the old to see whether a synthetic * ConfigureNotify event should be sent. (It should be sent if the * window was moved but not resized.) * *********************************************************************** */ void SetupWindow (tmp_win, x, y, w, h, bw) TwmWindow *tmp_win; int x, y, w, h, bw; { SetupFrame (tmp_win, x, y, w, h, bw, False); } void SetupFrame (tmp_win, x, y, w, h, bw, sendEvent) TwmWindow *tmp_win; int x, y, w, h, bw; Bool sendEvent; /* whether or not to force a send */ { XWindowChanges frame_wc, xwc; unsigned long frame_mask, xwcm; int title_width, title_height; int reShape; #ifdef DEBUG fprintf (stderr, "SetupWindow: x=%d, y=%d, w=%d, h=%d, bw=%d\n", x, y, w, h, bw); #endif if ((tmp_win->virtual_frame_x + tmp_win->frame_width) < 0) x = 16; /* one "average" cursor width */ if (x >= Scr->VirtualDesktopWidth) x = Scr->VirtualDesktopWidth - 16; if ((tmp_win->virtual_frame_y + tmp_win->frame_height) < 0) y = 16; /* one "average" cursor width */ if (y >= Scr->VirtualDesktopHeight) y = Scr->VirtualDesktopHeight - 16; if (bw < 0) bw = tmp_win->frame_bw; /* -1 means current frame width */ if (tmp_win->iconmgr) { /* djhjr - 4/24/96 tmp_win->iconmgrp->width = w; h = tmp_win->iconmgrp->height + tmp_win->title_height; */ tmp_win->iconmgrp->width = w - (2 * tmp_win->frame_bw3D); h = tmp_win->iconmgrp->height + tmp_win->title_height + (2 * tmp_win->frame_bw3D); } /* * According to the July 27, 1988 ICCCM draft, we should send a * "synthetic" ConfigureNotify event to the client if the window * was moved but not resized. */ if (((x != tmp_win->frame_x || y != tmp_win->frame_y) && (w == tmp_win->frame_width && h == tmp_win->frame_height)) || (bw != tmp_win->frame_bw)) sendEvent = TRUE; xwcm = CWWidth; /* djhjr 8 4/24/96 title_width = xwc.width = w; */ title_width = xwc.width = w - (2 * tmp_win->frame_bw3D); title_height = Scr->TitleHeight + bw; ComputeWindowTitleOffsets (tmp_win, xwc.width, True); reShape = (tmp_win->wShaped ? TRUE : FALSE); if (tmp_win->squeeze_info) /* check for title shaping */ { title_width = tmp_win->rightx + Scr->TBInfo.rightoff; if (title_width < xwc.width) { xwc.width = title_width; if (tmp_win->frame_height != h || tmp_win->frame_width != w || tmp_win->frame_bw != bw || title_width != tmp_win->title_width) reShape = TRUE; } else { if (!tmp_win->wShaped) reShape = TRUE; title_width = xwc.width; } } tmp_win->title_width = title_width; if (tmp_win->title_height) tmp_win->title_height = title_height; if (tmp_win->title_w) { if (bw != tmp_win->frame_bw) { xwc.border_width = bw; /* djhjr - 4/24/96 tmp_win->title_x = xwc.x = -bw; tmp_win->title_y = xwc.y = -bw; */ tmp_win->title_x = xwc.x = tmp_win->frame_bw3D - bw; tmp_win->title_y = xwc.y = tmp_win->frame_bw3D - bw; xwcm |= (CWX | CWY | CWBorderWidth); } XConfigureWindow(dpy, tmp_win->title_w, xwcm, &xwc); } /* djhjr - 4/24/96 tmp_win->attr.width = w; tmp_win->attr.height = h - tmp_win->title_height; */ tmp_win->attr.width = w - (2 * tmp_win->frame_bw3D); tmp_win->attr.height = h - tmp_win->title_height - (2 * tmp_win->frame_bw3D); /* djhjr - 4/25/96 XMoveResizeWindow (dpy, tmp_win->w, 0, tmp_win->title_height, w, h - tmp_win->title_height); */ /* * fix up frame and assign size/location values in tmp_win */ frame_mask = 0; if (bw != tmp_win->frame_bw) { frame_wc.border_width = tmp_win->frame_bw = bw; frame_mask |= CWBorderWidth; } frame_wc.x = tmp_win->frame_x = x; frame_wc.y = tmp_win->frame_y = y; frame_wc.width = tmp_win->frame_width = w; frame_wc.height = tmp_win->frame_height = h; frame_mask |= (CWX | CWY | CWWidth | CWHeight); XConfigureWindow (dpy, tmp_win->frame, frame_mask, &frame_wc); tmp_win->virtual_frame_x = R_TO_V_X(tmp_win->frame_x); tmp_win->virtual_frame_y = R_TO_V_Y(tmp_win->frame_y); /* djhjr - 4/24/96 */ XMoveResizeWindow (dpy, tmp_win->w, tmp_win->frame_bw3D, tmp_win->title_height + tmp_win->frame_bw3D, tmp_win->attr.width, tmp_win->attr.height); /* * fix up highlight window */ if (tmp_win->title_height && tmp_win->hilite_w) { /* djhjr - 4/2/98 xwc.width = (tmp_win->rightx - tmp_win->highlightx); if (Scr->TBInfo.nright > 0) xwc.width -= Scr->TitlePadding; * djhjr - 4/24/96 * if (Scr->use3Dtitles) xwc.width -= 4; */ xwc.width = ComputeHighlightWindowWidth(tmp_win); if (xwc.width <= 0) { xwc.x = Scr->MyDisplayWidth; /* move offscreen */ xwc.width = 1; } else { xwc.x = tmp_win->highlightx; } xwcm = CWX | CWWidth; XConfigureWindow(dpy, tmp_win->hilite_w, xwcm, &xwc); } if (HasShape && reShape) { SetFrameShape (tmp_win); } if (sendEvent) { SendConfigureNotify(tmp_win, x, y); } } /* djhjr - 4/6/98 */ void PaintBorderAndTitlebar(tmp_win) TwmWindow *tmp_win; { if (tmp_win->highlight) SetBorder(tmp_win, True); else { /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->BorderBevelWidth > 0) PaintBorders(tmp_win, True); if (tmp_win->titlebuttons) { int i, nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; TBWindow *tbw; for (i = 0, tbw = tmp_win->titlebuttons; i < nb; i++, tbw++) PaintTitleButton(tmp_win, tbw, 0); } } PaintTitle(tmp_win); PaintTitleHighlight(tmp_win, on); /* djhjr - 10/25/02 */ } /* djhjr - 4/17/98 */ static void DoVirtualMoveResize(tmp_win, x, y, w, h) TwmWindow *tmp_win; int x, y, w, h; { int fw = tmp_win->frame_width, fh = tmp_win->frame_height; tmp_win->virtual_frame_x = R_TO_V_X(x - tmp_win->frame_bw); tmp_win->virtual_frame_y = R_TO_V_Y(y - tmp_win->frame_bw); if (!tmp_win->opaque_resize) { tmp_win->frame_width = w + 2 * tmp_win->frame_bw; tmp_win->frame_height = h + 2 * tmp_win->frame_bw; } /* djhjr - 5/27/03 MoveResizeDesktop(tmp_win, Scr->NoRaiseResize); */ MoveResizeDesktop(tmp_win, TRUE); tmp_win->frame_width = fw; tmp_win->frame_height = fh; } /********************************************************************** * Rutgers mod #1 - rocky. * Procedure: * fullzoom - zooms window to full height of screen or * to full height and width of screen. (Toggles * so that it can undo the zoom - even when switching * between fullzoom and vertical zoom.) * * Inputs: * tmp_win - the TwmWindow pointer * * ********************************************************************** */ void fullzoom(tmp_win,flag) TwmWindow *tmp_win; int flag; { Window junkRoot; unsigned int junkbw, junkDepth; int basex, basey; int frame_bw_times_2; XGetGeometry(dpy, (Drawable) tmp_win->frame, &junkRoot, &dragx, &dragy, (unsigned int *)&dragWidth, (unsigned int *)&dragHeight, &junkbw, &junkDepth); basex = basey = 0; if (tmp_win->zoomed == flag) { dragHeight = tmp_win->save_frame_height; dragWidth = tmp_win->save_frame_width; dragx = tmp_win->save_frame_x; dragy = tmp_win->save_frame_y; tmp_win->zoomed = ZOOM_NONE; } else { if (tmp_win->zoomed == ZOOM_NONE) { tmp_win->save_frame_x = dragx; tmp_win->save_frame_y = dragy; tmp_win->save_frame_width = dragWidth; tmp_win->save_frame_height = dragHeight; } tmp_win->zoomed = flag; frame_bw_times_2 = 2 * tmp_win->frame_bw; switch (flag) { case ZOOM_NONE: break; case F_ZOOM: dragx = tmp_win->save_frame_x; dragy=basey; dragWidth = tmp_win->save_frame_width; dragHeight = Scr->MyDisplayHeight - frame_bw_times_2; break; case F_HORIZOOM: dragx = basex; dragy = tmp_win->save_frame_y; dragWidth = Scr->MyDisplayWidth - frame_bw_times_2; dragHeight = tmp_win->save_frame_height; break; case F_FULLZOOM: dragx = basex; dragy = basey; dragWidth = Scr->MyDisplayWidth - frame_bw_times_2; dragHeight = Scr->MyDisplayHeight - frame_bw_times_2; break; case F_LEFTZOOM: dragx = basex; dragy = basey; dragWidth = Scr->MyDisplayWidth / 2 - frame_bw_times_2; dragHeight = Scr->MyDisplayHeight - frame_bw_times_2; break; case F_RIGHTZOOM: dragx = basex + Scr->MyDisplayWidth / 2; dragy = basey; dragWidth = Scr->MyDisplayWidth / 2 - frame_bw_times_2; dragHeight = Scr->MyDisplayHeight - frame_bw_times_2; break; case F_TOPZOOM: dragx = basex; dragy = basey; dragWidth = Scr->MyDisplayWidth - frame_bw_times_2; dragHeight = Scr->MyDisplayHeight / 2 - frame_bw_times_2; break; case F_BOTTOMZOOM: dragx = basex; dragy = basey + Scr->MyDisplayHeight / 2; dragWidth = Scr->MyDisplayWidth - frame_bw_times_2; dragHeight = Scr->MyDisplayHeight / 2 - frame_bw_times_2; break; } } if (!Scr->NoRaiseResize) { XRaiseWindow(dpy, tmp_win->frame); RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); } ConstrainSize(tmp_win, &dragWidth, &dragHeight); SetupWindow (tmp_win, dragx , dragy , dragWidth, dragHeight, -1); /* djhjr - 9/10/99 */ ResizeTwmWindowContents(tmp_win, dragWidth, dragHeight); /* 9/21/96 - djhjr */ if ((Scr->WarpCursor || LookInList(Scr->WarpCursorL, tmp_win->full_name, &tmp_win->class))) WarpToWindow (tmp_win); XUngrabPointer (dpy, CurrentTime); XUngrabServer (dpy); } /* * adjust contents of iconmgrs, doors and the desktop - djhjr - 9/10/99 */ void ResizeTwmWindowContents(tmp_win, width, height) TwmWindow *tmp_win; int width, height; { TwmDoor *door; int ncols; if (tmp_win->iconmgr) { ncols = tmp_win->iconmgrp->cur_columns; if (ncols == 0) ncols = 1; /* djhjr - 4/24/96 tmp_win->iconmgrp->width = (int) ((width * */ tmp_win->iconmgrp->width = (int)(((width - 2 * tmp_win->frame_bw3D) * (long) tmp_win->iconmgrp->columns) / ncols); PackIconManager(tmp_win->iconmgrp); } else if (tmp_win->w == Scr->VirtualDesktopDisplayOuter) ResizeDesktopDisplay(width, height); else if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *)&door) != XCNOENT) RedoDoorName(tmp_win, door); } void SetFrameShape (tmp) TwmWindow *tmp; { /* * see if the titlebar needs to move */ if (tmp->title_w) { int oldx = tmp->title_x, oldy = tmp->title_y; ComputeTitleLocation (tmp); if (oldx != tmp->title_x || oldy != tmp->title_y) XMoveWindow (dpy, tmp->title_w, tmp->title_x, tmp->title_y); } /* * The frame consists of the shape of the contents window offset by * title_height or'ed with the shape of title_w (which is always * rectangular). */ if (tmp->wShaped) { /* * need to do general case */ XShapeCombineShape (dpy, tmp->frame, ShapeBounding, /* djhjr - 4/24/96 0, tmp->title_height, tmp->w, */ tmp->frame_bw3D, tmp->title_height + tmp->frame_bw3D, tmp->w, ShapeBounding, ShapeSet); if (tmp->title_w) { XShapeCombineShape (dpy, tmp->frame, ShapeBounding, tmp->title_x + tmp->frame_bw, tmp->title_y + tmp->frame_bw, tmp->title_w, ShapeBounding, ShapeUnion); } } else { /* * can optimize rectangular contents window */ if (tmp->squeeze_info) { XRectangle newBounding[3]; XRectangle newClip[3]; int count = 3, order = YXSorted, fbw2 = 2 * tmp->frame_bw; int client_width = tmp->attr.width + fbw2 + 2 * tmp->frame_bw3D; /* * Build the border clipping rectangles; one around title, one * around window. The title_[xy] field already have had frame_bw * subtracted off them so that they line up properly in the frame. * * The frame_width and frame_height do *not* include borders. */ /* border */ /* djhjr - 4/24/96 newBounding[0].x = tmp->title_x; newBounding[0].y = tmp->title_y; newBounding[0].width = tmp->title_width + fbw2; newBounding[0].height = tmp->title_height; newBounding[1].x = -tmp->frame_bw; newBounding[1].y = Scr->TitleHeight; newBounding[1].width = tmp->attr.width + fbw2; newBounding[1].height = tmp->attr.height + fbw2; */ newBounding[0].x = tmp->title_x - tmp->frame_bw3D; newBounding[0].y = tmp->title_y - tmp->frame_bw3D; newBounding[0].width = tmp->title_width + fbw2 + 2 * tmp->frame_bw3D; newBounding[0].height = tmp->title_height + tmp->frame_bw3D; /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->BorderBevelWidth > 0 && newBounding[0].width < client_width) { /* re-ordered arrays for XYSorted - djhjr - 11/5/03 */ newBounding[1].x = -tmp->frame_bw3D; newBounding[1].y = tmp->title_height; newBounding[1].width = tmp->attr.width + 3 * tmp->frame_bw3D; newBounding[1].height = tmp->frame_bw3D; newBounding[2].x = -tmp->frame_bw; newBounding[2].y = Scr->TitleHeight + tmp->frame_bw3D; newBounding[2].width = client_width; newBounding[2].height = tmp->attr.height + fbw2 + tmp->frame_bw3D; } else { newBounding[1].x = -tmp->frame_bw; newBounding[1].y = Scr->TitleHeight + tmp->frame_bw3D; newBounding[1].width = client_width; newBounding[1].height = tmp->attr.height + fbw2 + tmp->frame_bw3D; count = 2; order = YXBanded; } /* insides */ /* djhjr - 4/24/96 newClip[0].x = tmp->title_x + tmp->frame_bw; newClip[0].y = 0; newClip[0].width = tmp->title_width; newClip[0].height = Scr->TitleHeight; newClip[1].x = 0; newClip[1].y = tmp->title_height; newClip[1].width = tmp->attr.width; newClip[1].height = tmp->attr.height; */ newClip[0].x = tmp->title_x + tmp->frame_bw - tmp->frame_bw3D; newClip[0].y = 0; newClip[0].width = tmp->title_width + 2 * tmp->frame_bw3D; newClip[0].height = Scr->TitleHeight + tmp->frame_bw3D; if (count == 3) { /* re-ordered arrays for XYSorted - djhjr - 11/5/03 */ newClip[1].x = newBounding[1].x; newClip[1].y = newBounding[1].y; newClip[1].width = newBounding[1].width; newClip[1].height = newBounding[1].height; newClip[2].x = 0; newClip[2].y = tmp->title_height + tmp->frame_bw3D; newClip[2].width = client_width; newClip[2].height = tmp->attr.height + tmp->frame_bw3D; } else { newClip[1].x = 0; newClip[1].y = tmp->title_height + tmp->frame_bw3D; newClip[1].width = client_width; newClip[1].height = tmp->attr.height + tmp->frame_bw3D; } XShapeCombineRectangles (dpy, tmp->frame, ShapeBounding, 0, 0, newBounding, count, ShapeSet, order); XShapeCombineRectangles (dpy, tmp->frame, ShapeClip, 0, 0, newClip, count, ShapeSet, order); } else { (void) XShapeCombineMask (dpy, tmp->frame, ShapeBounding, 0, 0, None, ShapeSet); (void) XShapeCombineMask (dpy, tmp->frame, ShapeClip, 0, 0, None, ShapeSet); } } } /* * Squeezed Title: * * tmp->title_x * 0 | * tmp->title_y ........+--------------+......... -+,- tmp->frame_bw * 0 : ......| +----------+ |....... : -++ * : : | | | | : : ||-Scr->TitleHeight * : : | | | | : : || * +-------+ +----------+ +--------+ -+|-tmp->title_height * | +---------------------------+ | --+ * | | | | * | | | | * | | | | * | | | | * | | | | * | +---------------------------+ | * +-------------------------------+ * * * Unsqueezed Title: * * tmp->title_x * | 0 * tmp->title_y +-------------------------------+ -+,tmp->frame_bw * 0 | +---------------------------+ | -+' * | | | | |-Scr->TitleHeight * | | | | | * + +---------------------------+ + -+ * |-+---------------------------+-| * | | | | * | | | | * | | | | * | | | | * | | | | * | +---------------------------+ | * +-------------------------------+ * * * * Dimensions and Positions: * * frame orgin (0, 0) * frame upper left border (-tmp->frame_bw, -tmp->frame_bw) * frame size w/o border tmp->frame_width , tmp->frame_height * frame/title border width tmp->frame_bw * extra title height w/o bdr tmp->title_height = TitleHeight + frame_bw * title window height Scr->TitleHeight * title origin w/o border (tmp->title_x, tmp->title_y) * client origin (0, Scr->TitleHeight + tmp->frame_bw) * client size tmp->attr.width , tmp->attr.height * * When shaping, need to remember that the width and height of rectangles * are really deltax and deltay to lower right handle corner, so they need * to have -1 subtracted from would normally be the actual extents. */ vtwm-5.4.7/lex.l0100664000015300001300000000767510237641630012301 0ustar callumfid%{ /*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: lex.l,v 1.62 89/12/10 17:46:33 jim Exp $ * * .twmrc lex file * * 12-Nov-87 Thomas E. LaStrange File created * ***********************************************************************/ /* #include */ /* lex already includes stdio.h */ #include "gram.h" #include "parse.h" extern int parse_keyword(); extern void twmrc_error_prefix(); extern char *ProgramName; extern int ParseError; #ifdef FLEX_SCANNER #undef YY_INPUT #define YY_INPUT(b,r,s) r = ((b[0] = (*twmInputFunc)()) != 0) #endif %} string \"([^"]|\\.)*\" regexp \/([^/]|\\.)*\/ number [0-9]+ %% "{" { return (LB); } "}" { return (RB); } "(" { return (LP); } ")" { return (RP); } "=" { return (EQUALS); } "~" { return (TILDE); } ":" { return (COLON); } "+" { return PLUS; } "-" { return MINUS; } "|" { return OR; } [a-zA-Z\.]+ { int token = parse_keyword (yytext, &yylval.num); if (token == ERRORTOKEN) { twmrc_error_prefix(); fprintf (stderr, "ignoring unknown keyword: %s\n", yytext); ParseError = 1; } else return token; } "!" { yylval.num = F_EXEC; return FSKEYWORD; } "^" { yylval.num = F_CUT; return FSKEYWORD; } {string} { yylval.ptr = (char *)yytext; return STRING; } {regexp} { yylval.ptr = (char *)yytext; return REGEXP; } {number} { (void)sscanf((char *)&yytext[0], "%d", &yylval.num); return (NUMBER); } \#[^\n]*\n {;} [\n\t ] {;} . { twmrc_error_prefix(); fprintf (stderr, "ignoring character \"%s\"\n", yytext); ParseError = 1; } %% #ifndef FLEX_SCANNER yywrap() { return(1);} #undef input #undef feof #define feof() (1) #define input() (*twmInputFunc)() #endif #undef output #define output(c) TwmOutput(c) #undef unput #define unput(c) twmUnput(c) vtwm-5.4.7/add_window.c0100664000015300001300000021704110237655640013613 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: add_window.c,v 1.153 91/07/10 13:17:26 dave Exp $ * * Add a new window, put the titlbar and other stuff around * the window * * 31-Mar-88 Tom LaStrange Initial Version. * **********************************************************************/ #include #include #include "twm.h" #include #ifndef NO_XPM_SUPPORT #include #endif #include "add_window.h" #include "util.h" #include "resize.h" #include "parse.h" /* djhjr - 4/19/96 */ #include "gram.h" #include "list.h" #include "events.h" #include "menus.h" #include "screen.h" #include "iconmgr.h" #include "desktop.h" /* random placement coordinates */ #define PLACEMENT_START 50 #define PLACEMENT_INCR 30 /* 4/26/99 - djhjr */ extern int PlaceApplet(); #define gray_width 2 #define gray_height 2 static char gray_bits[] = { 0x02, 0x01}; /* djhjr - 4/19/96 */ static unsigned char black_bits[] = { 0xFF, 0xFF}; int AddingX; int AddingY; int AddingW; int AddingH; static void CreateWindowTitlebarButtons(); void SetHighlightPixmap(); /* djhjr - 4/14/98 */ static void AddMoveAndResize(); char NoName[] = "Untitled"; /* name if no name is specified */ /************************************************************************ * * Procedure: * GetGravityOffsets - map gravity to (x,y) offset signs for adding * to x and y when window is mapped to get proper placement. * ************************************************************************ */ void GetGravityOffsets (tmp, xp, yp) TwmWindow *tmp; /* window from which to get gravity */ int *xp, *yp; /* return values */ { static struct _gravity_offset { int x, y; } gravity_offsets[11] = { { 0, 0 }, /* ForgetGravity */ { -1, -1 }, /* NorthWestGravity */ { 0, -1 }, /* NorthGravity */ { 1, -1 }, /* NorthEastGravity */ { -1, 0 }, /* WestGravity */ { 0, 0 }, /* CenterGravity */ { 1, 0 }, /* EastGravity */ { -1, 1 }, /* SouthWestGravity */ { 0, 1 }, /* SouthGravity */ { 1, 1 }, /* SouthEastGravity */ { 0, 0 }, /* StaticGravity */ }; register int g = ((tmp->hints.flags & PWinGravity) ? tmp->hints.win_gravity : NorthWestGravity); if (g < ForgetGravity || g > StaticGravity) { *xp = *yp = 0; } else { *xp = gravity_offsets[g].x; *yp = gravity_offsets[g].y; } } /*********************************************************************** * * Procedure: * AddWindow - add a new window to the twm list * * Returned Value: * (TwmWindow *) - pointer to the TwmWindow structure * * Inputs: * w - the window id of the window to add * iconm - flag to tell if this is an icon manager window * iconp - pointer to icon manager struct * *********************************************************************** */ TwmWindow * AddWindow(w, iconm, iconp) Window w; int iconm; IconMgr *iconp; { TwmWindow *tmp_win; /* new twm window structure */ unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ #ifdef NO_I18N_SUPPORT XTextProperty text_property; #endif Atom actual_type; int actual_format; unsigned long nitems, bytesafter; int ask_user; /* don't know where to put the window */ int *ppos_ptr, ppos_on; /* djhjr - 9/24/02 */ int gravx, gravy; /* gravity signs for positioning */ int namelen; int bw2; char *icon_name; /* djhjr - 2/20/99 */ #ifndef NO_I18N_SUPPORT char *name; #endif /* next two submitted by Jonathan Paisley - 11/8/02 */ Atom motifhints = XInternAtom( dpy, "_MOTIF_WM_HINTS", 0); MotifWmHints *mwmhints; #ifdef DEBUG fprintf(stderr, "AddWindow: w = 0x%x\n", w); #endif /* allocate space for the twm window */ tmp_win = (TwmWindow *)calloc(1, sizeof(TwmWindow)); if (tmp_win == 0) { fprintf (stderr, "%s: Unable to allocate memory to manage window ID %lx.\n", ProgramName, w); return NULL; } tmp_win->w = w; tmp_win->zoomed = ZOOM_NONE; tmp_win->iconmgr = iconm; tmp_win->iconmgrp = iconp; tmp_win->cmaps.number_cwins = 0; XSelectInput(dpy, tmp_win->w, PropertyChangeMask); XGetWindowAttributes(dpy, tmp_win->w, &tmp_win->attr); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (I18N_FetchName(dpy, tmp_win->w, &name)) { tmp_win->name = strdup(name); free(name); } #else /* * Ask the window manager for a name with "newer" R4 function - * it was 'XFetchName()', which apparently failed more often. * Submitted by Nicholas Jacobs */ if (XGetWMName(dpy, tmp_win->w, &text_property) != 0) { tmp_win->name = (char *)strdup(text_property.value); XFree(text_property.value); } #endif else tmp_win->name = NoName; tmp_win->class = NoClass; XGetClassHint(dpy, tmp_win->w, &tmp_win->class); FetchWmProtocols (tmp_win); FetchWmColormapWindows (tmp_win); /* * do initial clip; should look at window gravity */ if (tmp_win->attr.width > Scr->MaxWindowWidth) tmp_win->attr.width = Scr->MaxWindowWidth; if (tmp_win->attr.height > Scr->MaxWindowHeight) tmp_win->attr.height = Scr->MaxWindowHeight; tmp_win->wmhints = XGetWMHints(dpy, tmp_win->w); if (tmp_win->wmhints && (tmp_win->wmhints->flags & WindowGroupHint)) tmp_win->group = tmp_win->wmhints->window_group; else tmp_win->group = tmp_win->w/* NULL */; /* submitted by Jonathan Paisley - 11/8/02 */ tmp_win->mwmhints.flags = 0; if (motifhints != None) { if (XGetWindowProperty(dpy, tmp_win->w, motifhints, 0L, sizeof(MotifWmHints), False, motifhints, &actual_type, &actual_format, &nitems, &bytesafter, (unsigned char**)&mwmhints) == Success && actual_type != None) { if (mwmhints) { tmp_win->mwmhints = *mwmhints; XFree(mwmhints); } } } /* * The July 27, 1988 draft of the ICCCM ignores the size and position * fields in the WM_NORMAL_HINTS property. */ tmp_win->transient = Transient(tmp_win->w, &tmp_win->transientfor); if (tmp_win->class.res_name == NULL) tmp_win->class.res_name = NoName; if (tmp_win->class.res_class == NULL) tmp_win->class.res_class = NoName; tmp_win->full_name = tmp_win->name; namelen = strlen (tmp_win->name); tmp_win->highlight = Scr->Highlight && /* djhjr - 4/22/98 (!(short)(int) LookInList(Scr->NoHighlight, tmp_win->full_name, &tmp_win->class)); */ (LookInList(Scr->NoHighlight, tmp_win->full_name, &tmp_win->class) == (char *)NULL); tmp_win->stackmode = Scr->StackMode && /* djhjr - 4/22/98 (!(short)(int) LookInList(Scr->NoStackModeL, tmp_win->full_name, &tmp_win->class)); */ (LookInList(Scr->NoStackModeL, tmp_win->full_name, &tmp_win->class) == (char *)NULL); tmp_win->titlehighlight = Scr->TitleHighlight && /* djhjr - 4/22/98 (!(short)(int) LookInList(Scr->NoTitleHighlight, tmp_win->full_name, &tmp_win->class)); */ (LookInList(Scr->NoTitleHighlight, tmp_win->full_name, &tmp_win->class) == (char *)NULL); tmp_win->auto_raise = Scr->AutoRaiseDefault || /* RAISEDELAY */ /* djhjr - 4/22/98 (short)(int) LookInList(Scr->AutoRaise, tmp_win->full_name, &tmp_win->class); */ (LookInList(Scr->AutoRaise, tmp_win->full_name, &tmp_win->class) != (char *)NULL); if (tmp_win->auto_raise) Scr->NumAutoRaises++; tmp_win->iconify_by_unmapping = Scr->IconifyByUnmapping; if (Scr->IconifyByUnmapping) { /* djhjr - 9/21/99 tmp_win->iconify_by_unmapping = iconm ? FALSE : */ tmp_win->iconify_by_unmapping = /* djhjr - 4/22/98 !(short)(int) LookInList(Scr->DontIconify, tmp_win->full_name, &tmp_win->class); */ (LookInList(Scr->DontIconify, tmp_win->full_name, &tmp_win->class) == (char *)NULL); } tmp_win->iconify_by_unmapping |= /* djhjr - 4/22/98 (short)(int) LookInList(Scr->IconifyByUn, tmp_win->full_name, &tmp_win->class); */ (LookInList(Scr->IconifyByUn, tmp_win->full_name, &tmp_win->class) != (char *)NULL); /* Scr->NoWindowRingL submitted by Jonathan Paisley - 10/27/02 */ if ((Scr->UseWindowRing || LookInList(Scr->WindowRingL, tmp_win->full_name, &tmp_win->class)) && LookInList(Scr->NoWindowRingL, tmp_win->full_name, &tmp_win->class) == (char *)NULL) { /* in menus.c now - djhjr - 10/27/02 */ AddWindowToRing(tmp_win); } else tmp_win->ring.next = tmp_win->ring.prev = NULL; #ifdef ORIGINAL_WARPRINGCOORDINATES /* djhjr - 5/11/98 */ tmp_win->ring.cursor_valid = False; #endif if (LookInList(Scr->NailedDown, tmp_win->full_name, &tmp_win->class)) tmp_win->nailed = TRUE; else tmp_win->nailed = FALSE; if (LookInList(Scr->DontShowInDisplay, tmp_win->full_name, &tmp_win->class)) tmp_win->showindesktopdisplay = FALSE; else tmp_win->showindesktopdisplay = TRUE; tmp_win->squeeze_info = NULL; /* * get the squeeze information; note that this does not have to be freed * since it is coming from the screen list */ if (HasShape) { if (!LookInList (Scr->DontSqueezeTitleL, tmp_win->full_name, &tmp_win->class)) { tmp_win->squeeze_info = (SqueezeInfo *) LookInList (Scr->SqueezeTitleL, tmp_win->full_name, &tmp_win->class); if (!tmp_win->squeeze_info) { static SqueezeInfo default_squeeze = { J_LEFT, 0, 0 }; if (Scr->SqueezeTitle) tmp_win->squeeze_info = &default_squeeze; } } } tmp_win->old_bw = tmp_win->attr.border_width; #ifdef NEVER /* see the next '#ifdef NEVER's '#else' - C. F. Jalali */ /* djhjr - 4/19/96 */ /* was 'Scr->ThreeDBorderWidth' - djhjr - 8/11/98 */ tmp_win->frame_bw3D = Scr->BorderWidth; #endif /* added 'Scr->NoBorders' test - djhjr - 8/23/02 */ if (Scr->NoBorders || LookInList(Scr->NoBorder, tmp_win->full_name, &tmp_win->class)) { tmp_win->frame_bw = 0; tmp_win->frame_bw3D = 0; } else #ifdef NEVER if (tmp_win->frame_bw3D != 0) { tmp_win->frame_bw = 0; Scr->ClientBorderWidth = FALSE; } else if (Scr->ClientBorderWidth) tmp_win->frame_bw = tmp_win->old_bw; else tmp_win->frame_bw = Scr->BorderWidth; #else /* * Submitted by Caveh Frank Jalali - 8/25/98 */ { if (Scr->BorderBevelWidth > 0) { tmp_win->frame_bw3D = Scr->BorderWidth; tmp_win->frame_bw = 0; Scr->ClientBorderWidth = FALSE; } else { tmp_win->frame_bw3D = 0; if (Scr->ClientBorderWidth) tmp_win->frame_bw = tmp_win->old_bw; else tmp_win->frame_bw = Scr->BorderWidth; } } #endif /* submitted by Jonathan Paisley - 11/8/02 */ if (tmp_win->mwmhints.flags & MWM_HINTS_DECORATIONS) { if (tmp_win->mwmhints.decorations & MWM_DECOR_ALL) tmp_win->mwmhints.decorations |= (MWM_DECOR_BORDER | MWM_DECOR_RESIZEH | MWM_DECOR_TITLE | MWM_DECOR_MENU | MWM_DECOR_MINIMIZE | MWM_DECOR_MAXIMIZE); if (!(tmp_win->mwmhints.decorations & MWM_DECOR_BORDER)) tmp_win->frame_bw = tmp_win->frame_bw3D = 0; } if (tmp_win->mwmhints.flags & MWM_HINTS_FUNCTIONS) if (tmp_win->mwmhints.functions & MWM_FUNC_ALL) tmp_win->mwmhints.functions |= (MWM_FUNC_RESIZE | MWM_FUNC_MOVE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_CLOSE); bw2 = tmp_win->frame_bw * 2; /* moved MakeTitle under NoTitle - djhjr - 10/20/01 */ tmp_win->title_height = Scr->TitleHeight + tmp_win->frame_bw; /* submitted by Jonathan Paisley 11/8/02 */ if (tmp_win->mwmhints.flags & MWM_HINTS_DECORATIONS && !(tmp_win->mwmhints.decorations & MWM_DECOR_TITLE)) tmp_win->title_height = 0; if (Scr->NoTitlebar) tmp_win->title_height = 0; if (LookInList(Scr->NoTitle, tmp_win->full_name, &tmp_win->class)) tmp_win->title_height = 0; if (LookInList(Scr->MakeTitle, tmp_win->full_name, &tmp_win->class)) tmp_win->title_height = Scr->TitleHeight + tmp_win->frame_bw; /* djhjr - 4/7/98 */ if (LookInList(Scr->OpaqueMoveL, tmp_win->full_name, &tmp_win->class)) tmp_win->opaque_move = TRUE; else tmp_win->opaque_move = Scr->OpaqueMove && /* djhjr - 4/22/98 !(short)(int)LookInList(Scr->NoOpaqueMoveL, tmp_win->full_name, &tmp_win->class); */ (LookInList(Scr->NoOpaqueMoveL, tmp_win->full_name, &tmp_win->class) == (char *)NULL); /* djhjr - 9/21/99 */ if (tmp_win->opaque_move) tmp_win->attr.save_under = True; /* djhjr - 4/7/98 */ if (LookInList(Scr->OpaqueResizeL, tmp_win->full_name, &tmp_win->class)) tmp_win->opaque_resize = TRUE; else tmp_win->opaque_resize = Scr->OpaqueResize && /* djhjr - 4/22/98 !(short)(int)LookInList(Scr->NoOpaqueResizeL, tmp_win->full_name, &tmp_win->class); */ (LookInList(Scr->NoOpaqueResizeL, tmp_win->full_name, &tmp_win->class) == (char *)NULL); /* djhjr - 9/21/99 */ if (tmp_win->opaque_resize) tmp_win->attr.save_under = True; /* if it is a transient window, don't put a title on it */ if (tmp_win->transient && !Scr->DecorateTransients) tmp_win->title_height = 0; if (LookInList(Scr->StartIconified, tmp_win->full_name, &tmp_win->class)) { if (!tmp_win->wmhints) { tmp_win->wmhints = (XWMHints *)malloc(sizeof(XWMHints)); tmp_win->wmhints->flags = 0; } tmp_win->wmhints->initial_state = IconicState; tmp_win->wmhints->flags |= StateHint; } GetWindowSizeHints (tmp_win); GetGravityOffsets (tmp_win, &gravx, &gravy); /* * Don't bother user if: * * o the window is a transient, or * * o a USPosition was requested, or * * o a PPosition was requested and UsePPosition is ON or * NON_ZERO if the window is at other than (0,0) */ /* djhjr - 9/24/02 */ if ((ppos_ptr = (int *)LookInList(Scr->UsePPositionL, tmp_win->full_name, &tmp_win->class))) ppos_on = *ppos_ptr; else ppos_on = Scr->UsePPosition; if (ppos_on == PPOS_NON_ZERO && (tmp_win->attr.x != 0 || tmp_win->attr.y != 0)) ppos_on = PPOS_ON; ask_user = TRUE; if (tmp_win->transient || (tmp_win->hints.flags & USPosition) || ((tmp_win->hints.flags & PPosition) && ppos_on == PPOS_ON)) ask_user = FALSE; /* check for applet regions - djhjr - 4/26/99 */ if (PlaceApplet(tmp_win, tmp_win->attr.x, tmp_win->attr.y, &tmp_win->attr.x, &tmp_win->attr.y)) ask_user = FALSE; if (LookInList(Scr->NailedDown, tmp_win->full_name, &tmp_win->class)) tmp_win->nailed = TRUE; else tmp_win->nailed = FALSE; /* * 25/09/90 - Nailed windows should always be on the real screen, * regardless of PPosition or UPosition. If we are dealing with * PPosition, then offset by the current real screen offset on the vd. */ if (tmp_win->nailed || ((tmp_win->hints.flags & PPosition) && (ask_user == FALSE))) { tmp_win->attr.x = R_TO_V_X(tmp_win->attr.x); tmp_win->attr.y = R_TO_V_Y(tmp_win->attr.y); } /* moved to after window prep and creation - djhjr - 4/14/98 AddMoveAndResize(tmp_win, ask_user); */ if (!Scr->ClientBorderWidth) { /* need to adjust for twm borders */ /* djhjr - 4/19/96 int delta = tmp_win->attr.border_width - tmp_win->frame_bw; */ /* submitted by Jonathan Paisley - 11/8/02 int delta = tmp_win->attr.border_width - tmp_win->frame_bw - tmp_win->frame_bw3D; */ int delta = -(tmp_win->frame_bw + tmp_win->frame_bw3D); tmp_win->attr.x += gravx * delta; tmp_win->attr.y += gravy * delta; } /* * For windows with specified non-northwest gravities. * Submitted by Jonathan Paisley - 11/8/02 */ if (tmp_win->old_bw) { if (!Scr->ClientBorderWidth) { JunkX = gravx + 1; JunkY = gravy + 1; } else JunkX = JunkY = 1; tmp_win->attr.x += JunkX * tmp_win->old_bw; tmp_win->attr.y += JunkY * tmp_win->old_bw; } tmp_win->title_width = tmp_win->attr.width; if (tmp_win->old_bw) XSetWindowBorderWidth (dpy, tmp_win->w, 0); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT tmp_win->name_width = MyFont_TextWidth(&Scr->TitleBarFont, #else tmp_win->name_width = XTextWidth(Scr->TitleBarFont.font, #endif tmp_win->name, namelen); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!I18N_GetIconName(dpy, tmp_win->w, &icon_name)) #else /* used to be a simple boolean test for success - djhjr - 1/10/98 */ if (XGetWindowProperty (dpy, tmp_win->w, XA_WM_ICON_NAME, 0L, 200L, False, XA_STRING, &actual_type, &actual_format, &nitems, &bytesafter, /* see that the icon name is it's own memory - djhjr - 2/20/99 (unsigned char **)&tmp_win->icon_name) != Success || actual_type == None) tmp_win->icon_name = tmp_win->name; */ (unsigned char **)&icon_name) != Success || actual_type == None) #endif tmp_win->icon_name = strdup(tmp_win->name); else { tmp_win->icon_name = strdup(icon_name); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT free(icon_name); #else XFree(icon_name); #endif } /* redundant? - djhjr - 1/10/98 if (tmp_win->icon_name == NULL) tmp_win->icon_name = tmp_win->name; */ tmp_win->iconified = FALSE; tmp_win->icon = FALSE; tmp_win->icon_on = FALSE; XGrabServer(dpy); /* * Make sure the client window still exists. We don't want to leave an * orphan frame window if it doesn't. Since we now have the server * grabbed, the window can't disappear later without having been * reparented, so we'll get a DestroyNotify for it. We won't have * gotten one for anything up to here, however. */ if (XGetGeometry(dpy, tmp_win->w, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth) == 0) { free((char *)tmp_win); XUngrabServer(dpy); return(NULL); } /* add the window into the twm list */ tmp_win->next = Scr->TwmRoot.next; if (Scr->TwmRoot.next != NULL) Scr->TwmRoot.next->prev = tmp_win; tmp_win->prev = &Scr->TwmRoot; Scr->TwmRoot.next = tmp_win; /* get all the colors for the window */ /* djhjr - 4/25/96 tmp_win->border = Scr->BorderColor; */ tmp_win->border.back = Scr->BorderColor; tmp_win->icon_border = Scr->IconBorderColor; tmp_win->border_tile.fore = Scr->BorderTileC.fore; tmp_win->border_tile.back = Scr->BorderTileC.back; tmp_win->title.fore = Scr->TitleC.fore; tmp_win->title.back = Scr->TitleC.back; tmp_win->iconc.fore = Scr->IconC.fore; tmp_win->iconc.back = Scr->IconC.back; tmp_win->virtual.fore = Scr->VirtualDesktopDisplayC.fore; tmp_win->virtual.back = Scr->VirtualDesktopDisplayC.back; /* djhjr - 4/25/96 GetColorFromList(Scr->BorderColorL, tmp_win->full_name, &tmp_win->class, &tmp_win->border); */ GetColorFromList(Scr->BorderColorL, tmp_win->full_name, &tmp_win->class, &tmp_win->border.back); GetColorFromList(Scr->IconBorderColorL, tmp_win->full_name, &tmp_win->class, &tmp_win->icon_border); GetColorFromList(Scr->BorderTileForegroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->border_tile.fore); GetColorFromList(Scr->BorderTileBackgroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->border_tile.back); GetColorFromList(Scr->TitleForegroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->title.fore); GetColorFromList(Scr->TitleBackgroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->title.back); GetColorFromList(Scr->IconForegroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->iconc.fore); GetColorFromList(Scr->IconBackgroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->iconc.back); /* fixed transposed fallback fore and back color lists - djhjr - 9/25/01 */ if (!GetColorFromList(Scr->VirtualDesktopColorFL, tmp_win->full_name, &tmp_win->class, &tmp_win->virtual.fore)) GetColorFromList(Scr->TitleForegroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->virtual.fore); if (!GetColorFromList(Scr->VirtualDesktopColorBL, tmp_win->full_name, &tmp_win->class, &tmp_win->virtual.back)) GetColorFromList(Scr->TitleBackgroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->virtual.back); /* djhjr - 4/19/96 */ /* loosened up for titlebar-colored 3D buttons - djhjr - 4/1/98 if (Scr->use3Dtitles && !Scr->BeNiceToColormap) */ if (!Scr->BeNiceToColormap) GetShadeColors (&tmp_win->title); /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ /* rearranged the parenthesis - djhjr - 10/30/02 */ if ((Scr->ButtonColorIsFrame || Scr->BorderBevelWidth > 0) && !Scr->BeNiceToColormap) { GetShadeColors (&tmp_win->border); GetShadeColors (&tmp_win->border_tile); } /* create windows */ /* djhjr - 4/19/96 tmp_win->frame_x = tmp_win->attr.x + tmp_win->old_bw - tmp_win->frame_bw; tmp_win->frame_y = tmp_win->attr.y - tmp_win->title_height + tmp_win->old_bw - tmp_win->frame_bw; tmp_win->frame_width = tmp_win->attr.width; tmp_win->frame_height = tmp_win->attr.height + tmp_win->title_height; */ /* done in AddMoveAndResize() - djhjr - 4/14/98 tmp_win->frame_x = tmp_win->attr.x + tmp_win->old_bw - tmp_win->frame_bw - tmp_win->frame_bw3D; tmp_win->frame_y = tmp_win->attr.y - tmp_win->title_height + tmp_win->old_bw - tmp_win->frame_bw - tmp_win->frame_bw3D; */ tmp_win->frame_width = tmp_win->attr.width + 2 * tmp_win->frame_bw3D; tmp_win->frame_height = tmp_win->attr.height + tmp_win->title_height + 2 * tmp_win->frame_bw3D; /* done in AddMoveAndResize() - djhjr - 4/14/98 ConstrainSize (tmp_win, &tmp_win->frame_width, &tmp_win->frame_height); tmp_win->virtual_frame_x = R_TO_V_X(tmp_win->frame_x); tmp_win->virtual_frame_y = R_TO_V_Y(tmp_win->frame_y); */ /* djhjr - 4/19/96 valuemask = CWBackPixmap | CWBorderPixel | CWCursor | CWEventMask; attributes.background_pixmap = None; attributes.border_pixel = tmp_win->border; attributes.cursor = Scr->FrameCursor; attributes.event_mask = (SubstructureRedirectMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask); if (tmp_win->attr.save_under) { attributes.save_under = True; valuemask |= CWSaveUnder; } */ /* djhjr - 9/14/96 valuemask = CWBackPixmap | CWBorderPixel | CWCursor | CWEventMask | CWBackPixel; attributes.background_pixmap = None; */ valuemask = CWBorderPixel | CWCursor | CWEventMask | CWBackPixel; attributes.background_pixel = tmp_win->border.back; attributes.border_pixel = tmp_win->border.back; attributes.cursor = Scr->FrameCursor; attributes.event_mask = (SubstructureRedirectMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ExposureMask); if (tmp_win->attr.save_under) { attributes.save_under = True; valuemask |= CWSaveUnder; } /* djhjr - 9/17/96 - slows down iconify/delete/destroy too much... if (Scr->BackingStore) { attributes.backing_store = WhenMapped; valuemask |= CWBackingStore; } */ if (tmp_win->hints.flags & PWinGravity) { attributes.win_gravity = tmp_win->hints.win_gravity; valuemask |= CWWinGravity; } tmp_win->frame = XCreateWindow (dpy, Scr->Root, tmp_win->frame_x, tmp_win->frame_y, (unsigned int) tmp_win->frame_width, (unsigned int) tmp_win->frame_height, (unsigned int) tmp_win->frame_bw, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); if (tmp_win->title_height) { valuemask = (CWEventMask | CWBorderPixel | CWBackPixel); attributes.event_mask = (KeyPressMask | ButtonPressMask | ButtonReleaseMask | ExposureMask); /* djhjr - 4/19/96 attributes.border_pixel = tmp_win->border; */ attributes.border_pixel = tmp_win->title.back; attributes.background_pixel = tmp_win->title.back; /* djhjr - 9/17/96 */ if (Scr->BackingStore) { attributes.backing_store = WhenMapped; valuemask |= CWBackingStore; } tmp_win->title_w = XCreateWindow (dpy, tmp_win->frame, /* djhjr - 4/19/96 -tmp_win->frame_bw, -tmp_win->frame_bw, */ tmp_win->frame_bw3D - tmp_win->frame_bw, tmp_win->frame_bw3D - tmp_win->frame_bw, (unsigned int) tmp_win->attr.width, (unsigned int) Scr->TitleHeight, (unsigned int) tmp_win->frame_bw, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); } else { tmp_win->title_w = 0; tmp_win->squeeze_info = NULL; } if (tmp_win->highlight) { /* djhjr - 4/19/96 */ /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0 && (Scr->Monochrome != COLOR)) tmp_win->gray = XCreatePixmapFromBitmapData(dpy, Scr->Root, (char *)black_bits, gray_width, gray_height, tmp_win->border_tile.fore, tmp_win->border_tile.back, Scr->d_depth); else tmp_win->gray = XCreatePixmapFromBitmapData(dpy, Scr->Root, gray_bits, gray_width, gray_height, tmp_win->border_tile.fore, tmp_win->border_tile.back, Scr->d_depth); SetBorder (tmp_win, False); } else tmp_win->gray = None; if (tmp_win->title_w) { CreateWindowTitlebarButtons (tmp_win); ComputeTitleLocation (tmp_win); XMoveWindow (dpy, tmp_win->title_w, tmp_win->title_x, tmp_win->title_y); XDefineCursor(dpy, tmp_win->title_w, Scr->TitleCursor); } /* djhjr - 4/19/96 */ else { tmp_win->title_x = tmp_win->frame_bw3D - tmp_win->frame_bw; tmp_win->title_y = tmp_win->frame_bw3D - tmp_win->frame_bw; } valuemask = (CWEventMask | CWDontPropagate); attributes.event_mask = (StructureNotifyMask | PropertyChangeMask | ColormapChangeMask | VisibilityChangeMask | EnterWindowMask | LeaveWindowMask); attributes.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask; XChangeWindowAttributes (dpy, tmp_win->w, valuemask, &attributes); if (HasShape) XShapeSelectInput (dpy, tmp_win->w, ShapeNotifyMask); if (tmp_win->title_w) { XMapWindow (dpy, tmp_win->title_w); } if (HasShape) { int xws, yws, xbs, ybs; unsigned wws, hws, wbs, hbs; int boundingShaped, clipShaped; XShapeSelectInput (dpy, tmp_win->w, ShapeNotifyMask); XShapeQueryExtents (dpy, tmp_win->w, &boundingShaped, &xws, &yws, &wws, &hws, &clipShaped, &xbs, &ybs, &wbs, &hbs); tmp_win->wShaped = boundingShaped; } if (!tmp_win->iconmgr) XAddToSaveSet(dpy, tmp_win->w); /* djhjr - 4/19/96 XReparentWindow(dpy, tmp_win->w, tmp_win->frame, 0, tmp_win->title_height); */ XReparentWindow(dpy, tmp_win->w, tmp_win->frame, tmp_win->frame_bw3D, tmp_win->title_height + tmp_win->frame_bw3D); /* * Reparenting generates an UnmapNotify event, followed by a MapNotify. * Set the map state to FALSE to prevent a transition back to * WithdrawnState in HandleUnmapNotify. Map state gets set correctly * again in HandleMapNotify. */ tmp_win->mapped = FALSE; /* * NOW do the move and resize - windows needed to be created * first to accomodate the opaque resources - djhjr - 4/14/98 */ AddMoveAndResize(tmp_win, ask_user); SetupFrame (tmp_win, tmp_win->frame_x, tmp_win->frame_y, tmp_win->frame_width, tmp_win->frame_height, -1, True); /* wait until the window is iconified and the icon window is mapped * before creating the icon window */ tmp_win->icon_w = None; if (!tmp_win->iconmgr) { GrabButtons(tmp_win); GrabKeys(tmp_win); } (void) AddIconManager(tmp_win); UpdateDesktop(tmp_win); XSaveContext(dpy, tmp_win->w, TwmContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp_win->w, ScreenContext, (caddr_t) Scr); XSaveContext(dpy, tmp_win->frame, TwmContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp_win->frame, ScreenContext, (caddr_t) Scr); if (tmp_win->title_height) { int i; int nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; XSaveContext(dpy, tmp_win->title_w, TwmContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp_win->title_w, ScreenContext, (caddr_t) Scr); for (i = 0; i < nb; i++) { XSaveContext(dpy, tmp_win->titlebuttons[i].window, TwmContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp_win->titlebuttons[i].window, ScreenContext, (caddr_t) Scr); } if (tmp_win->hilite_w) { XSaveContext(dpy, tmp_win->hilite_w, TwmContext, (caddr_t)tmp_win); XSaveContext(dpy, tmp_win->hilite_w, ScreenContext, (caddr_t)Scr); } } XUngrabServer(dpy); /* if we were in the middle of a menu activated function, regrab * the pointer */ if (RootFunction != F_NOFUNCTION) ReGrab(); Scr->Newest = tmp_win; /* PF */ if (tmp_win->transient && Scr->WarpToTransients) /* PF */ WarpToWindow(tmp_win); /* PF,DSE */ return (tmp_win); } /* * AddPaintRealWindows() * * a little helper for AddMoveAndResize() - djhjr - 4/15/98 */ static void AddPaintRealWindows(tmp_win, x, y) TwmWindow *tmp_win; int x, y; { /* handled in add_window() now - djhjr - 9/21/99 XSetWindowAttributes attr; attr.save_under = True; XChangeWindowAttributes(dpy, tmp_win->frame, CWSaveUnder, &attr); */ /* don't need to send a configure notify event */ SetupWindow(tmp_win, tmp_win->frame_x, tmp_win->frame_y, tmp_win->frame_width, tmp_win->frame_height, -1); XMoveWindow(dpy, tmp_win->frame, x, y); XMapWindow(dpy, tmp_win->frame); XMapSubwindows(dpy, tmp_win->frame); XMapSubwindows(dpy, tmp_win->title_w); PaintBorderAndTitlebar(tmp_win); /* djhjr - 4/15/98 */ if (!Scr->NoGrabServer) { /* these allow the application window to be drawn */ XUngrabServer(dpy); XSync(dpy, 0); XGrabServer(dpy); } } /* * AddMoveAndResize() * * was inline in AddWindow() at first call to this function, * now handles the opaque move and resize resources - djhjr - 4/14/98 */ static void AddMoveAndResize(tmp_win, ask_user) TwmWindow *tmp_win; int ask_user; { static int PlaceX = PLACEMENT_START; static int PlaceY = PLACEMENT_START; XEvent event; int stat, gravx, gravy; int bw2 = tmp_win->frame_bw * 2; int wd = tmp_win->attr.width + bw2; int ht = tmp_win->attr.height + tmp_win->title_height + bw2; /* * do any prompting for position */ if (HandlingEvents && ask_user) { if (Scr->RandomPlacement) { /* just stick it somewhere */ if (PlaceX + wd > Scr->MyDisplayWidth) { /* submitted by Seth Robertson - 8/25/02 */ if (PLACEMENT_START + wd < Scr->MyDisplayWidth) PlaceX = PLACEMENT_START; else { PlaceX = tmp_win->frame_bw; if (wd < Scr->MyDisplayWidth) PlaceX += (Scr->MyDisplayWidth - wd) / 2; } } if (PlaceY + ht > Scr->MyDisplayHeight) { /* submitted by Seth Robertson - 8/25/02 */ if (PLACEMENT_START + ht < Scr->MyDisplayHeight) PlaceY = PLACEMENT_START; else { PlaceY = tmp_win->title_height + tmp_win->frame_bw; if (ht < Scr->MyDisplayHeight) PlaceY += (Scr->MyDisplayHeight - ht) / 2; } } tmp_win->attr.x = PlaceX; tmp_win->attr.y = PlaceY; PlaceX += PLACEMENT_INCR; PlaceY += PLACEMENT_INCR; } else if (Scr->PointerPlacement) { /* find pointer */ if (!XQueryPointer (dpy, Scr->Root, &JunkRoot, &JunkChild, &JunkX, &JunkY, &AddingX, &AddingY, &JunkMask)) JunkMask = 0; /* fit window onto screen */ if (Scr->WarpSnug) { if (JunkX + wd > Scr->MyDisplayWidth) JunkX -= (JunkX + wd - Scr->MyDisplayWidth); if (JunkY + tmp_win->attr.height > Scr->MyDisplayHeight) JunkY -= (JunkY + tmp_win->attr.height - Scr->MyDisplayHeight); } tmp_win->attr.x = JunkX; tmp_win->attr.y = JunkY; } else { /* else prompt */ if (!(tmp_win->wmhints && tmp_win->wmhints->flags & StateHint && tmp_win->wmhints->initial_state == IconicState)) { Bool firsttime = True; /* djhjr - 11/15/01 */ Bool doorismapped = False; TwmDoor *door = NULL; XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *)&door); /* better wait until all the mouse buttons have been * released. */ while (TRUE) { XUngrabServer(dpy); XSync(dpy, 0); XGrabServer(dpy); JunkMask = 0; if (!XQueryPointer (dpy, Scr->Root, &JunkRoot, &JunkChild, &JunkX, &JunkY, &AddingX, &AddingY, &JunkMask)) JunkMask = 0; JunkMask &= (Button1Mask | Button2Mask | Button3Mask | Button4Mask | Button5Mask); /* * watch out for changing screens */ if (firsttime) { if (JunkRoot != Scr->Root) { register int scrnum; for (scrnum = 0; scrnum < NumScreens; scrnum++) { if (JunkRoot == RootWindow (dpy, scrnum)) break; } if (scrnum != NumScreens) PreviousScreen = scrnum; } firsttime = False; } /* * wait for buttons to come up; yuck */ if (JunkMask != 0) continue; /* * this will cause a warp to the indicated root */ stat = XGrabPointer(dpy, Scr->Root, False, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | PointerMotionHintMask, GrabModeAsync, GrabModeAsync, Scr->Root, UpperLeftCursor, CurrentTime); if (stat == GrabSuccess) break; } /* djhjr - 4/15/98 */ if (Scr->NoGrabServer) XUngrabServer(dpy); /* use initialized size... djhjr - 5/9/96 * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT width = (SIZE_HINDENT + MyFont_TextWidth (&Scr->SizeFont, #else width = (SIZE_HINDENT + XTextWidth (Scr->SizeFont.font, #endif tmp_win->name, namelen)); height = Scr->SizeFont.height + SIZE_VINDENT * 2; * djhjr - 4/27/96 XResizeWindow (dpy, Scr->SizeWindow, width + SIZE_HINDENT, height); * XResizeWindow (dpy, Scr->SizeWindow, Scr->SizeStringOffset + Scr->SizeStringWidth, height); */ XMapRaised(dpy, Scr->SizeWindow); InstallRootColormap(); /* DisplayPosition overwrites it anyway... djhjr - 5/9/96 * font was font.font->fid - djhjr - 9/14/03 * FBF(Scr->DefaultC.fore, Scr->DefaultC.back, Scr->SizeFont); * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, Scr->SizeWindow, &Scr->SizeFont, #else XDrawImageString (dpy, Scr->SizeWindow, #endif Scr->NormalGC, SIZE_HINDENT, * djhjr - 9/14/03 SIZE_VINDENT + Scr->SizeFont.font->ascent, * SIZE_VINDENT + Scr->SizeFont.ascent, tmp_win->name, namelen); */ /* djhjr - 4/19/96 AddingW = tmp_win->attr.width + bw2; AddingH = tmp_win->attr.height + tmp_win->title_height + bw2; MoveOutline(Scr->Root, AddingX, AddingY, AddingW, AddingH, tmp_win->frame_bw, tmp_win->title_height); */ AddingW = tmp_win->attr.width + bw2 + 2 * tmp_win->frame_bw3D; AddingH = tmp_win->attr.height + tmp_win->title_height + bw2 + 2 * tmp_win->frame_bw3D; /* added this 'if ... else' - djhjr - 4/14/98 */ if (tmp_win->opaque_move) { AddPaintRealWindows(tmp_win, AddingX, AddingY); /* djhjr - 11/15/01 */ if (door && !doorismapped) { XMapWindow(dpy, door->w); RedoDoorName(tmp_win, door); doorismapped = True; } } else MoveOutline(Scr->Root, AddingX, AddingY, AddingW, AddingH, tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); /* djhjr - 4/17/98 */ if (Scr->VirtualReceivesMotionEvents) { tmp_win->virtual_frame_x = R_TO_V_X(AddingX); tmp_win->virtual_frame_y = R_TO_V_Y(AddingY); UpdateDesktop(tmp_win); } /* DisplayPosition() overwrites it anyway... djhjr - 5/9/96 * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, Scr->SizeWindow, &Scr->SizeFont, #else * djhjr - 4/27/96 * XDrawImageString (dpy, Scr->SizeWindow, #endif Scr->NormalGC, width, * djhjr - 9/14/03 SIZE_VINDENT + Scr->SizeFont.font->ascent, ": ", 2); * SIZE_VINDENT + Scr->SizeFont.ascent, ": ", 2); */ /* djhjr - 4/27/96 */ DisplayPosition (AddingX, AddingY); while (TRUE) { XMaskEvent(dpy, ButtonPressMask | PointerMotionMask, &event); if (Event.type == MotionNotify) { /* discard any extra motion events before a release */ while(XCheckMaskEvent(dpy, ButtonMotionMask | ButtonPressMask, &Event)) if (Event.type == ButtonPress) break; } if (event.type == ButtonPress) { AddingX = event.xbutton.x_root; AddingY = event.xbutton.y_root; /* DontMoveOff prohibits user form off-screen placement */ if (Scr->DontMoveOff) { int AddingR, AddingB; AddingR = AddingX + AddingW; AddingB = AddingY + AddingH; if (AddingX < 0) AddingX = 0; if (AddingR > Scr->MyDisplayWidth) AddingX = Scr->MyDisplayWidth - AddingW; if (AddingY < 0) AddingY = 0; if (AddingB > Scr->MyDisplayHeight) AddingY = Scr->MyDisplayHeight - AddingH; } break; } if (event.type != MotionNotify) { continue; } XQueryPointer(dpy, Scr->Root, &JunkRoot, &JunkChild, &JunkX, &JunkY, &AddingX, &AddingY, &JunkMask); if (Scr->DontMoveOff) { int AddingR, AddingB; AddingR = AddingX + AddingW; AddingB = AddingY + AddingH; if (AddingX < 0) AddingX = 0; if (AddingR > Scr->MyDisplayWidth) AddingX = Scr->MyDisplayWidth - AddingW; if (AddingY < 0) AddingY = 0; if (AddingB > Scr->MyDisplayHeight) AddingY = Scr->MyDisplayHeight - AddingH; } /* djhjr - 4/19/96 MoveOutline(Scr->Root, AddingX, AddingY, AddingW, AddingH, tmp_win->frame_bw, tmp_win->title_height); */ /* added this 'if ... else' - djhjr - 4/14/98 */ if (tmp_win->opaque_move) { XMoveWindow(dpy, tmp_win->frame, AddingX, AddingY); PaintBorderAndTitlebar(tmp_win); /* djhjr - 4/15/98 */ if (!Scr->NoGrabServer) { /* these allow the application window to be drawn */ XUngrabServer(dpy); XSync(dpy, 0); XGrabServer(dpy); } } else MoveOutline(Scr->Root, AddingX, AddingY, AddingW, AddingH, tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); /* djhjr - 4/17/98 */ if (Scr->VirtualReceivesMotionEvents) { tmp_win->virtual_frame_x = R_TO_V_X(AddingX); tmp_win->virtual_frame_y = R_TO_V_Y(AddingY); MoveResizeDesktop(tmp_win, Scr->NoRaiseResize); } /* djhjr - 4/27/96 */ DisplayPosition (AddingX, AddingY); } if (event.xbutton.button == Button2) { int lastx, lasty; /* AddStartResize() overwrites it anyway... djhjr - 5/9/96 Scr->SizeStringOffset = width + * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_TextWidth(&Scr->SizeFont, ": ", 2); #else XTextWidth(Scr->SizeFont.font, ": ", 2); #endif XResizeWindow (dpy, Scr->SizeWindow, Scr->SizeStringOffset + Scr->SizeStringWidth, height); * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, Scr->SizeWindow, &Scr->SizeFont, #else XDrawImageString (dpy, Scr->SizeWindow, #endif Scr->NormalGC, width, * djhjr - 9/14/03 SIZE_VINDENT + Scr->SizeFont.font->ascent, * SIZE_VINDENT + Scr->SizeFont.ascent, ": ", 2); */ /* djhjr - 4/15/98 */ if (!tmp_win->opaque_move && tmp_win->opaque_resize) { /* erase the move outline */ MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); AddPaintRealWindows(tmp_win, AddingX, AddingY); /* djhjr - 11/15/01 */ if (door && !doorismapped) { XMapWindow(dpy, door->w); RedoDoorName(tmp_win, door); doorismapped = True; } } #if 0 if (0/*Scr->AutoRelativeResize*/) My R5 vtvwm came with this commented out, always 0. Why? #endif if (Scr->AutoRelativeResize) { int dx = (tmp_win->attr.width / 4); int dy = (tmp_win->attr.height / 4); #define HALF_AVE_CURSOR_SIZE 8 /* so that it is visible */ if (dx < HALF_AVE_CURSOR_SIZE) dx = HALF_AVE_CURSOR_SIZE; if (dy < HALF_AVE_CURSOR_SIZE) dy = HALF_AVE_CURSOR_SIZE; #undef HALF_AVE_CURSOR_SIZE dx += (tmp_win->frame_bw + 1); dy += (bw2 + tmp_win->title_height + 1); if (AddingX + dx >= Scr->MyDisplayWidth) dx = Scr->MyDisplayWidth - AddingX - 1; if (AddingY + dy >= Scr->MyDisplayHeight) dy = Scr->MyDisplayHeight - AddingY - 1; if (dx > 0 && dy > 0) XWarpPointer (dpy, None, None, 0, 0, 0, 0, dx, dy); } else { XWarpPointer (dpy, None, Scr->Root, 0, 0, 0, 0, AddingX + AddingW/2, AddingY + AddingH/2); } AddStartResize(tmp_win, AddingX, AddingY, AddingW, AddingH); lastx = -10000; lasty = -10000; while (TRUE) { XMaskEvent(dpy, ButtonReleaseMask | ButtonMotionMask, &event); if (Event.type == MotionNotify) { /* discard any extra motion events before a release */ while(XCheckMaskEvent(dpy, ButtonMotionMask | ButtonReleaseMask, &Event)) if (Event.type == ButtonRelease) break; } if (event.type == ButtonRelease) { AddEndResize(tmp_win); /* don't need to send a configure notify event - djhjr - 4/15/98 */ if (tmp_win->opaque_move && !tmp_win->opaque_resize) SetupWindow(tmp_win, AddingX, AddingY, AddingW, AddingH, -1); /* djhjr - 11/15/01 */ if (!tmp_win->opaque_resize && door && doorismapped) RedoDoorName(tmp_win, door); break; } if (event.type != MotionNotify) { continue; } /* * XXX - if we are going to do a loop, we ought to consider * using multiple GXxor lines so that we don't need to * grab the server. */ XQueryPointer(dpy, Scr->Root, &JunkRoot, &JunkChild, &JunkX, &JunkY, &AddingX, &AddingY, &JunkMask); if (lastx != AddingX || lasty != AddingY) { DoResize(AddingX, AddingY, tmp_win); lastx = AddingX; lasty = AddingY; } } } /* if (event.xbutton.button == Button2) */ else if (event.xbutton.button == Button3) { int maxw = Scr->MyDisplayWidth - AddingX - bw2; int maxh = Scr->MyDisplayHeight - AddingY - bw2; /* * Make window go to bottom of screen, and clip to right edge. * This is useful when popping up large windows and fixed * column text windows. */ if (AddingW > maxw) AddingW = maxw; AddingH = maxh; ConstrainSize (tmp_win, &AddingW, &AddingH); /* w/o borders */ AddingW += bw2; AddingH += bw2; /* don't need to send a configure notify event - djhjr - 4/15/98 */ SetupWindow(tmp_win, AddingX, AddingY, AddingW, AddingH, -1); /* djhjr - 11/15/01 */ if (!tmp_win->opaque_resize && door && doorismapped) RedoDoorName(tmp_win, door); } else { XMaskEvent(dpy, ButtonReleaseMask, &event); } /* erase the move outline */ MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); XUnmapWindow(dpy, Scr->SizeWindow); UninstallRootColormap(); XUngrabPointer(dpy, CurrentTime); /* djhjr - 4/15/98 tmp_win->attr.x = AddingX; tmp_win->attr.y = AddingY + tmp_win->title_height; */ tmp_win->attr.x = AddingX + tmp_win->frame_bw + tmp_win->frame_bw3D; tmp_win->attr.y = AddingY + tmp_win->title_height + tmp_win->frame_bw + tmp_win->frame_bw3D; /* djhjr - 4/19/96 tmp_win->attr.width = AddingW - bw2; tmp_win->attr.height = AddingH - tmp_win->title_height - bw2; */ tmp_win->attr.width = AddingW - bw2 - 2 * tmp_win->frame_bw3D; tmp_win->attr.height = AddingH - tmp_win->title_height - bw2 - 2 * tmp_win->frame_bw3D; /* un-grabbed in the caller AddWindow() on return - djhjr - 4/15/98 XUngrabServer(dpy); */ } } /* djhjr - 6/4/98 */ if (Scr->VirtualReceivesMotionEvents && !tmp_win->opaque_move) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } } else { /* put it where asked, mod title bar */ /* interpret the position specified as a virtual one if asked */ /* added 'FixManagedVirtualGeometries' - djhjr - 1/6/98 */ /* added test for 'PPosition' - submitted by Michael Dales */ if (Scr->GeometriesAreVirtual || (!Scr->GeometriesAreVirtual && (tmp_win->nailed || ( ( (Scr->FixManagedVirtualGeometries && !tmp_win->transient) || (Scr->FixTransientVirtualGeometries && tmp_win->transient) ) && (tmp_win->hints.flags & PPosition) ) ) ) ) /* * If virtual geometries is set, or virtual geometries * isn't set and (nailed or (fix virtual geometries and * preferred position)). This is a bug workaround -- DSE */ { tmp_win->attr.x = V_TO_R_X(tmp_win->attr.x); tmp_win->attr.y = V_TO_R_Y(tmp_win->attr.y); } GetGravityOffsets (tmp_win, &gravx, &gravy); /* if the gravity is towards the top, move it by the title height */ if (gravy < 0) tmp_win->attr.y -= gravy * tmp_win->title_height; } /* should never have been - djhjr - 9/21/99 if (tmp_win->opaque_move) { XSetWindowAttributes attr; attr.save_under = False; XChangeWindowAttributes(dpy, tmp_win->frame, CWSaveUnder, &attr); } */ /* * consider client borderwidths based on the ClientBorderWidth and * RandomPlacement resources, PPosition with the UsePPosition resource, * and the USPosition spec - djhjr - 6/3/98 * tmp_win->frame_x = tmp_win->attr.x + tmp_win->old_bw - tmp_win->frame_bw - tmp_win->frame_bw3D; tmp_win->frame_y = tmp_win->attr.y - tmp_win->title_height + tmp_win->old_bw - tmp_win->frame_bw - tmp_win->frame_bw3D; */ tmp_win->frame_x = tmp_win->attr.x - tmp_win->frame_bw - tmp_win->frame_bw3D; tmp_win->frame_y = tmp_win->attr.y - tmp_win->title_height - tmp_win->frame_bw - tmp_win->frame_bw3D; /* Not needed? - submitted by Jonathan Paisley - 11/8/02 if (Scr->ClientBorderWidth || !ask_user) { tmp_win->frame_x += tmp_win->old_bw; tmp_win->frame_y += tmp_win->old_bw; } */ tmp_win->frame_width = tmp_win->attr.width + 2 * tmp_win->frame_bw3D; tmp_win->frame_height = tmp_win->attr.height + tmp_win->title_height + 2 * tmp_win->frame_bw3D; ConstrainSize (tmp_win, &tmp_win->frame_width, &tmp_win->frame_height); tmp_win->virtual_frame_x = R_TO_V_X(tmp_win->frame_x); tmp_win->virtual_frame_y = R_TO_V_Y(tmp_win->frame_y); #ifdef DEBUG fprintf(stderr, " position window %d, %d %dx%d\n", tmp_win->attr.x, tmp_win->attr.y, tmp_win->attr.width, tmp_win->attr.height); #endif } /*********************************************************************** * * Procedure: * MappedNotOverride - checks to see if we should really * put a twm frame on the window * * Returned Value: * TRUE - go ahead and frame the window * FALSE - don't frame the window * * Inputs: * w - the window to check * *********************************************************************** */ int MappedNotOverride(w) Window w; { XWindowAttributes wa; XGetWindowAttributes(dpy, w, &wa); return ((wa.map_state != IsUnmapped) && (wa.override_redirect != True)); } /*********************************************************************** * * Procedure: * AddDefaultBindings - attach default bindings so that naive users * don't get messed up if they provide a minimal twmrc. */ static void do_add_binding (button, context, modifier, func) int button, context, modifier; int func; { MouseButton *mb = &Scr->Mouse[button][context][modifier]; if (mb->func) return; /* already defined */ mb->func = func; mb->item = NULL; } void AddDefaultBindings () { /* * The bindings are stored in Scr->Mouse, indexed by * Mouse[button_number][C_context][modifier]. */ #define NoModifierMask 0 do_add_binding (Button1, C_TITLE, NoModifierMask, F_MOVE); do_add_binding (Button1, C_ICON, NoModifierMask, F_ICONIFY); do_add_binding (Button1, C_ICONMGR, NoModifierMask, F_ICONIFY); do_add_binding (Button1, C_VIRTUAL, NoModifierMask, F_MOVESCREEN); do_add_binding (Button1, C_VIRTUAL_WIN, NoModifierMask, F_MOVESCREEN); do_add_binding (Button2, C_TITLE, NoModifierMask, F_RAISELOWER); do_add_binding (Button2, C_ICON, NoModifierMask, F_ICONIFY); do_add_binding (Button2, C_ICONMGR, NoModifierMask, F_ICONIFY); do_add_binding (Button2, C_VIRTUAL, NoModifierMask, F_MOVESCREEN); do_add_binding (Button2, C_VIRTUAL_WIN, NoModifierMask, F_MOVESCREEN); #undef NoModifierMask } /*********************************************************************** * * Procedure: * GrabButtons - grab needed buttons for the window * * Inputs: * tmp_win - the twm window structure to use * *********************************************************************** */ void GrabButtons(tmp_win) TwmWindow *tmp_win; { int i, j; for (i = 0; i < MAX_BUTTONS+1; i++) { for (j = 0; j < MOD_SIZE; j++) { if (Scr->Mouse[i][C_WINDOW][j].func != F_NOFUNCTION) { /* twm used to do this grab on the application main window, * tmp_win->w . This was not ICCCM complient and was changed. */ XGrabButton(dpy, i, j, tmp_win->frame, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, Scr->FrameCursor); } } } } /*********************************************************************** * * Procedure: * GrabKeys - grab needed keys for the window * * Inputs: * tmp_win - the twm window structure to use * *********************************************************************** */ /* djhjr - 9/10/03 */ void GrabModKeys(w, k) Window w; FuncKey *k; { int i; XGrabKey(dpy, k->keycode, k->mods, w, True, GrabModeAsync, GrabModeAsync); for (i = 1; i <= Scr->IgnoreModifiers; i++) if ((Scr->IgnoreModifiers & i) == i) XGrabKey(dpy, k->keycode, k->mods | i, w, True, GrabModeAsync, GrabModeAsync); } /* djhjr - 9/10/03 */ void UngrabModKeys(w, k) Window w; FuncKey *k; { int i; XUngrabKey(dpy, k->keycode, k->mods, w); for (i = 1; i <= Scr->IgnoreModifiers; i++) if ((Scr->IgnoreModifiers & i) == i) XUngrabKey(dpy, k->keycode, k->mods | i, w); } void GrabKeys(tmp_win) TwmWindow *tmp_win; { FuncKey *tmp; IconMgr *p; for (tmp = Scr->FuncKeyRoot.next; tmp != NULL; tmp = tmp->next) { switch (tmp->cont) { case C_WINDOW: /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->w, tmp); break; case C_ICON: if (tmp_win->icon_w) /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->icon_w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->icon_w, tmp); case C_TITLE: if (tmp_win->title_w) /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->title_w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->title_w, tmp); break; case C_NAME: /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->w, tmp); if (tmp_win->icon_w) /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->icon_w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->icon_w, tmp); if (tmp_win->title_w) /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->title_w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->title_w, tmp); break; /* case C_ROOT: * djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, Scr->Root, True, GrabModeAsync, GrabModeAsync); * GrabModKeys(Scr->Root, tmp); break; */ } } for (tmp = Scr->FuncKeyRoot.next; tmp != NULL; tmp = tmp->next) { if (tmp->cont == C_ICONMGR && !Scr->NoIconManagers) { for (p = &Scr->iconmgr; p != NULL; p = p->next) { /* djhjr - 9/10/03 XUngrabKey(dpy, tmp->keycode, tmp->mods, p->twm_win->w); */ UngrabModKeys(p->twm_win->w, tmp); } } } } static Window CreateHighlightWindow (tmp_win) TwmWindow *tmp_win; { XSetWindowAttributes attributes; /* attributes for create windows */ Pixmap pm = None; GC gc; XGCValues gcv; unsigned long valuemask; unsigned int pm_numcolors; /* added '- 2' - djhjr - 10/18/02 */ int h = (Scr->TitleHeight - 2 * Scr->FramePadding) - 2; Window w; /* djhjr - 9/14/03 #ifndef NO_I18N_SUPPORT int en = MyFont_TextWidth(&Scr->TitleBarFont, "n", 1); #else * djhjr - 4/1/98 * int en = XTextWidth(Scr->TitleBarFont.font, "n", 1); #endif */ /* djhjr - 10/18/02 int width = Scr->TBInfo.titlex + tmp_win->name_width + 2 * en; */ /* * If a special highlight pixmap was given, use that. Otherwise, * use a nice, even gray pattern. The old horizontal lines look really * awful on interlaced monitors (as well as resembling other looks a * little bit too closely), but can be used by putting * * Pixmaps { TitleHighlight "hline2" } * * (or whatever the horizontal line bitmap is named) in the startup * file. If all else fails, use the foreground color to look like a * solid line. */ /* * re-written to use an Image structure for XPM support * * djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS if (!Scr->hilitePm) { /* djhjr - 4/20/96 */ /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0 && (Scr->Monochrome != COLOR)) Scr->hilitePm = XCreateBitmapFromData (dpy, tmp_win->title_w, (char *)black_bits, gray_width, gray_height); else Scr->hilitePm = XCreateBitmapFromData (dpy, tmp_win->title_w, gray_bits, gray_width, gray_height); Scr->hilite_pm_width = gray_width; Scr->hilite_pm_height = gray_height; } if (Scr->hilitePm) { pm = XCreatePixmap (dpy, tmp_win->title_w, Scr->hilite_pm_width, Scr->hilite_pm_height, Scr->d_depth); gcv.foreground = tmp_win->title.fore; gcv.background = tmp_win->title.back; gcv.graphics_exposures = False; gc = XCreateGC (dpy, pm, (GCForeground|GCBackground|GCGraphicsExposures), &gcv); if (gc) { XCopyPlane (dpy, Scr->hilitePm, pm, gc, 0, 0, Scr->hilite_pm_width, Scr->hilite_pm_height, 0, 0, 1); XFreeGC (dpy, gc); } else { XFreePixmap (dpy, pm); pm = None; } } if (pm) { valuemask = CWBackPixmap; attributes.background_pixmap = pm; } else { valuemask = CWBackPixel; attributes.background_pixel = tmp_win->title.fore; } #else /* ORIGINAL_PIXMAPS */ if (!Scr->hilitePm) { Scr->hilitePm = (Image *)malloc(sizeof(Image)); if (Scr->hilitePm) { Scr->hilitePm->width = gray_width; Scr->hilitePm->height = gray_height; Scr->hilitePm->mask = None; /* djhjr - 4/20/96 */ /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0 && (Scr->Monochrome != COLOR)) Scr->hilitePm->pixmap = XCreateBitmapFromData (dpy, tmp_win->title_w, (char *)black_bits, Scr->hilitePm->width, Scr->hilitePm->height); else Scr->hilitePm->pixmap = XCreateBitmapFromData (dpy, tmp_win->title_w, gray_bits, Scr->hilitePm->width, Scr->hilitePm->height); } } pm_numcolors = 0; /* djhjr - 5/23/98 9/2/98 */ #ifndef NO_XPM_SUPPORT /* removed this for non-transparent pixmaps - djhjr - 5/26/98 if (Scr->hilitePm->mask != None) */ pm_numcolors = SetPixmapsBackground(Scr->hilitePm, Scr->Root, tmp_win->title.back); #endif /* * Modified to handle non-transparent pixmaps - Jason Gloudon */ if (Scr->hilitePm->pixmap) { if (pm_numcolors > 2) /* not a bitmap */ { valuemask = CWBackPixmap; attributes.background_pixmap = Scr->hilitePm->pixmap; } else { pm = XCreatePixmap (dpy, tmp_win->title_w, Scr->hilitePm->width, Scr->hilitePm->height, Scr->d_depth); gcv.foreground = tmp_win->title.fore; gcv.background = tmp_win->title.back; gcv.graphics_exposures = False; gc = XCreateGC (dpy, pm, (GCForeground | GCBackground | GCGraphicsExposures), &gcv); if (gc) { /* the copy plane works on color ! */ XCopyPlane (dpy, Scr->hilitePm->pixmap, pm, gc, 0, 0, Scr->hilitePm->width, Scr->hilitePm->height, 0, 0, 1); XFreeGC(dpy, gc); valuemask = CWBackPixmap; attributes.background_pixmap = pm; } else { valuemask = CWBackPixel; attributes.background_pixel = tmp_win->title.fore; } } } else { valuemask = CWBackPixel; attributes.background_pixel = tmp_win->title.fore; } #endif /* ORIGINAL_PIXMAPS */ /* djhjr - 10/18/02 */ #if 0 /* djhjr - 4/19/96 */ /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0) /* djhjr - 4/25/96 w = XCreateWindow (dpy, tmp_win->title_w, 0, Scr->FramePadding + 2, (unsigned int) Scr->TBInfo.width, (unsigned int) (h - 4), */ /* djhjr - 4/1/98 w = XCreateWindow (dpy, tmp_win->title_w, 0, Scr->FramePadding + 3, (unsigned int) Scr->TBInfo.width, (unsigned int) (h - 6), */ w = XCreateWindow (dpy, tmp_win->title_w, width, Scr->FramePadding + 4, ComputeHighlightWindowWidth(tmp_win), (unsigned int) (h - 8), (unsigned int) 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); else /* djhjr - 4/1/98 w = XCreateWindow (dpy, tmp_win->title_w, 0, Scr->FramePadding, (unsigned int) Scr->TBInfo.width, (unsigned int) h, */ w = XCreateWindow (dpy, tmp_win->title_w, width, Scr->FramePadding + 2, ComputeHighlightWindowWidth(tmp_win), (unsigned int) (h - 4), (unsigned int) 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); #else w = XCreateWindow (dpy, tmp_win->title_w, tmp_win->highlightx, Scr->FramePadding + 1, ComputeHighlightWindowWidth(tmp_win), (unsigned int) h, (unsigned int) 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); #endif if (pm) XFreePixmap (dpy, pm); return w; } void ComputeCommonTitleOffsets () { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT int en = MyFont_TextWidth(&Scr->TitleBarFont, "n", 1); #else /* djhjr - 10/18/02 */ int en = XTextWidth(Scr->TitleBarFont.font, "n", 1); #endif int buttonwidth = (Scr->TBInfo.width + Scr->TBInfo.pad); Scr->TBInfo.leftx = Scr->TBInfo.rightoff = Scr->FramePadding; if (Scr->TBInfo.nleft > 0) Scr->TBInfo.leftx += Scr->ButtonIndent; /* 'en' was 'Scr->TitlePadding' - djhjr - 10/18/02 */ Scr->TBInfo.titlex = (Scr->TBInfo.leftx + (Scr->TBInfo.nleft * buttonwidth) - Scr->TBInfo.pad + en); if (Scr->TBInfo.nright > 0) Scr->TBInfo.rightoff += (Scr->ButtonIndent + ((Scr->TBInfo.nright * buttonwidth) - Scr->TBInfo.pad)); return; } void ComputeWindowTitleOffsets (tmp_win, width, squeeze) TwmWindow *tmp_win; int width; Bool squeeze; { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT int en = MyFont_TextWidth(&Scr->TitleBarFont, "n", 1); #else /* djhjr - 10/18/02 */ int en = XTextWidth(Scr->TitleBarFont.font, "n", 1); #endif /* added 'en' - djhjr - 10/18/02 */ tmp_win->highlightx = Scr->TBInfo.titlex + tmp_win->name_width + en; /* djhjr - 10/18/02 * djhjr - 4/1/98 * * was 'Scr->use3Dtitles' - djhjr - 8/11/98 * if (Scr->TitleBevelWidth > 0) { * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT int en = MyFont_TextWidth(&Scr->TitleBarFont, "n", 1); #else int en = XTextWidth(Scr->TitleBarFont.font, "n", 1); #endif tmp_win->highlightx += en; * rem'd out - djhjr - 4/19/96 * * reinstated - djhjr - 4/1/98 * tmp_win->highlightx += 6; } if (tmp_win->hilite_w || Scr->TBInfo.nright > 0) tmp_win->highlightx += Scr->TitlePadding; */ tmp_win->rightx = width - Scr->TBInfo.rightoff; if (squeeze && tmp_win->squeeze_info) { /* djhjr - 3/13/97 8/11/98 */ /* this used to care about title bevels - djhjr - 10/18/02 */ int rx = tmp_win->highlightx + ((tmp_win->titlehighlight) ? Scr->TitleHeight * 2 : 0); if (rx < tmp_win->rightx) tmp_win->rightx = rx; } return; } /* * ComputeTitleLocation - calculate the position of the title window. * * substantially re-written - djhjr - 1/8/98 */ void ComputeTitleLocation (tmp) TwmWindow *tmp; { tmp->title_x = tmp->frame_bw3D - tmp->frame_bw; tmp->title_y = tmp->frame_bw3D - tmp->frame_bw; if (tmp->squeeze_info) { SqueezeInfo *si = tmp->squeeze_info; int basex; int fw = tmp->frame_bw + tmp->frame_bw3D; if (si->denom != 0 && si->num != 0) basex = ((tmp->frame_width - tmp->title_width) / si->denom) * si->num + fw; else if (si->denom == 0 && si->num != 0) basex = si->num + fw; else switch (si->justify) { case J_LEFT: basex = tmp->title_x + fw; break; case J_CENTER: basex = tmp->frame_width / 2 - (tmp->title_width / 2 - fw); break; case J_RIGHT: basex = tmp->frame_width - tmp->title_width; break; } if (basex > tmp->frame_width - tmp->title_width) basex = tmp->frame_width - tmp->title_width; if (basex < 0) basex = tmp->title_x + fw; tmp->title_x = basex - fw; } } static void CreateWindowTitlebarButtons (tmp_win) TwmWindow *tmp_win; { unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ TitleButton *tb; TBWindow *tbw; int boxwidth = Scr->TBInfo.width + Scr->TBInfo.pad; unsigned int h = Scr->TBInfo.width - Scr->TBInfo.border * 2; int x, y = Scr->FramePadding + Scr->ButtonIndent; /* init - djhjr - 10/18/02 */ int nb, leftx, rightx; if (tmp_win->title_height == 0) { tmp_win->hilite_w = 0; return; } /* * create the title bar windows; let the event handler deal with painting * so that we don't have to spend two pixmaps (or deal with hashing) */ ComputeWindowTitleOffsets (tmp_win, tmp_win->attr.width, False); /* djhjr - 10/18/02 leftx = y = Scr->TBInfo.leftx; */ leftx = Scr->TBInfo.leftx; rightx = tmp_win->rightx; attributes.background_pixel = tmp_win->title.back; attributes.border_pixel = tmp_win->title.fore; attributes.event_mask = (ButtonPressMask | ButtonReleaseMask | ExposureMask); attributes.cursor = Scr->ButtonCursor; valuemask = (CWWinGravity | CWBackPixel | CWBorderPixel | CWEventMask | CWCursor); tmp_win->titlebuttons = NULL; nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; if (nb > 0) { tmp_win->titlebuttons = (TBWindow *) malloc (nb * sizeof(TBWindow)); if (!tmp_win->titlebuttons) { fprintf (stderr, "%s: unable to allocate %d titlebuttons\n", ProgramName, nb); } else { for (tb = Scr->TBInfo.head, tbw = tmp_win->titlebuttons; tb; tb = tb->next, tbw++) { if (tb->rightside) { x = rightx; rightx += boxwidth; attributes.win_gravity = NorthEastGravity; } else { x = leftx; leftx += boxwidth; attributes.win_gravity = NorthWestGravity; } tbw->window = XCreateWindow (dpy, tmp_win->title_w, x, y, h, h, (unsigned int) Scr->TBInfo.border, 0, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); tbw->info = tb; } /* end for(...) */ } } /* djhjr - 4/5/98 tmp_win->hilite_w = (tmp_win->titlehighlight ? CreateHighlightWindow (tmp_win) : None); XMapSubwindows(dpy, tmp_win->title_w); * djhjr - 4/25/96 if (tmp_win->hilite_w) XUnmapWindow(dpy, tmp_win->hilite_w); * PaintTitleHighlight(tmp_win, off); */ /* was '!Scr->SunkFocusWindowTitle' - djhjr - 10/25/02 */ tmp_win->hilite_w = (tmp_win->titlehighlight && !Scr->hiliteName) ? CreateHighlightWindow(tmp_win) : None; return; } /* * re-written to use an Image structure for XPM support * * djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS void SetHighlightPixmap (filename) char *filename; { Pixmap pm = GetBitmap (filename); if (pm) { if (Scr->hilitePm) { XFreePixmap (dpy, Scr->hilitePm); } Scr->hilitePm = pm; Scr->hilite_pm_width = JunkWidth; Scr->hilite_pm_height = JunkHeight; } } #else /* ORIGINAL_PIXMAPS */ void SetHighlightPixmap (filename) char *filename; { /* added this 'if (...) else' - djhjr - 10/25/02 */ if (filename[0] == ':') Scr->hiliteName = filename; else if (!Scr->hilitePm) Scr->hilitePm = SetPixmapsPixmap(filename); } #endif /* ORIGINAL_PIXMAPS */ void FetchWmProtocols (tmp) TwmWindow *tmp; { unsigned long flags = 0L; Atom *protocols = NULL; int n; if (XGetWMProtocols (dpy, tmp->w, &protocols, &n)) { register int i; register Atom *ap; for (i = 0, ap = protocols; i < n; i++, ap++) { if (*ap == _XA_WM_TAKE_FOCUS) flags |= DoesWmTakeFocus; if (*ap == _XA_WM_SAVE_YOURSELF) flags |= DoesWmSaveYourself; if (*ap == _XA_WM_DELETE_WINDOW) flags |= DoesWmDeleteWindow; } if (protocols) XFree ((char *) protocols); } tmp->protocols = flags; } TwmColormap * CreateTwmColormap(c) Colormap c; { TwmColormap *cmap; cmap = (TwmColormap *) malloc(sizeof(TwmColormap)); if (!cmap || XSaveContext(dpy, c, ColormapContext, (caddr_t) cmap)) { if (cmap) free((char *) cmap); return (NULL); } cmap->c = c; cmap->state = 0; cmap->install_req = 0; cmap->w = None; cmap->refcnt = 1; return (cmap); } ColormapWindow * CreateColormapWindow(w, creating_parent, property_window) Window w; Bool creating_parent; Bool property_window; { ColormapWindow *cwin; TwmColormap *cmap; XWindowAttributes attributes; cwin = (ColormapWindow *) malloc(sizeof(ColormapWindow)); if (cwin) { if (!XGetWindowAttributes(dpy, w, &attributes) || XSaveContext(dpy, w, ColormapContext, (caddr_t) cwin)) { free((char *) cwin); return (NULL); } if (XFindContext(dpy, attributes.colormap, ColormapContext, (caddr_t *)&cwin->colormap) == XCNOENT) { cwin->colormap = cmap = CreateTwmColormap(attributes.colormap); if (!cmap) { XDeleteContext(dpy, w, ColormapContext); free((char *) cwin); return (NULL); } } else { cwin->colormap->refcnt++; } cwin->w = w; /* * Assume that windows in colormap list are * obscured if we are creating the parent window. * Otherwise, we assume they are unobscured. */ cwin->visibility = creating_parent ? VisibilityPartiallyObscured : VisibilityUnobscured; cwin->refcnt = 1; /* * If this is a ColormapWindow property window and we * are not monitoring ColormapNotify or VisibilityNotify * events, we need to. */ if (property_window && (attributes.your_event_mask & (ColormapChangeMask|VisibilityChangeMask)) != (ColormapChangeMask|VisibilityChangeMask)) { XSelectInput(dpy, w, attributes.your_event_mask | (ColormapChangeMask|VisibilityChangeMask)); } } return (cwin); } void FetchWmColormapWindows (tmp) TwmWindow *tmp; { register int i, j; Window *cmap_windows = NULL; Bool can_free_cmap_windows = False; int number_cmap_windows = 0; ColormapWindow **cwins = NULL; int previously_installed; extern void free_cwins(); number_cmap_windows = 0; if ((previously_installed = (Scr->cmapInfo.cmaps == &tmp->cmaps) && tmp->cmaps.number_cwins)) { cwins = tmp->cmaps.cwins; for (i = 0; i < tmp->cmaps.number_cwins; i++) cwins[i]->colormap->state = 0; } if (XGetWMColormapWindows (dpy, tmp->w, &cmap_windows, &number_cmap_windows) && number_cmap_windows > 0) { can_free_cmap_windows = False; /* * check if the top level is in the list, add to front if not */ for (i = 0; i < number_cmap_windows; i++) { if (cmap_windows[i] == tmp->w) break; } if (i == number_cmap_windows) { /* not in list */ Window *new_cmap_windows = (Window *) malloc (sizeof(Window) * (number_cmap_windows + 1)); if (!new_cmap_windows) { fprintf (stderr, "%s: unable to allocate %d element colormap window array\n", ProgramName, number_cmap_windows+1); goto done; } new_cmap_windows[0] = tmp->w; /* add to front */ for (i = 0; i < number_cmap_windows; i++) { /* append rest */ new_cmap_windows[i+1] = cmap_windows[i]; } XFree ((char *) cmap_windows); can_free_cmap_windows = True; /* do not use XFree any more */ cmap_windows = new_cmap_windows; number_cmap_windows++; } cwins = (ColormapWindow **) malloc(sizeof(ColormapWindow *) * number_cmap_windows); if (cwins) { for (i = 0; i < number_cmap_windows; i++) { /* * Copy any existing entries into new list. */ for (j = 0; j < tmp->cmaps.number_cwins; j++) { if (tmp->cmaps.cwins[j]->w == cmap_windows[i]) { cwins[i] = tmp->cmaps.cwins[j]; cwins[i]->refcnt++; break; } } /* * If the colormap window is not being pointed by * some other applications colormap window list, * create a new entry. */ if (j == tmp->cmaps.number_cwins) { if (XFindContext(dpy, cmap_windows[i], ColormapContext, (caddr_t *)&cwins[i]) == XCNOENT) { if ((cwins[i] = CreateColormapWindow(cmap_windows[i], (Bool) tmp->cmaps.number_cwins == 0, True)) == NULL) { int k; for (k = i + 1; k < number_cmap_windows; k++) cmap_windows[k-1] = cmap_windows[k]; i--; number_cmap_windows--; } } else cwins[i]->refcnt++; } } } } /* No else here, in case we bailed out of clause above. */ if (number_cmap_windows == 0) { number_cmap_windows = 1; cwins = (ColormapWindow **) malloc(sizeof(ColormapWindow *)); if (XFindContext(dpy, tmp->w, ColormapContext, (caddr_t *)&cwins[0]) == XCNOENT) cwins[0] = CreateColormapWindow(tmp->w, (Bool) tmp->cmaps.number_cwins == 0, False); else cwins[0]->refcnt++; } if (tmp->cmaps.number_cwins) free_cwins(tmp); tmp->cmaps.cwins = cwins; tmp->cmaps.number_cwins = number_cmap_windows; if (number_cmap_windows > 1) tmp->cmaps.scoreboard = (char *) calloc(1, ColormapsScoreboardLength(&tmp->cmaps)); if (previously_installed) InstallWindowColormaps(PropertyNotify, (TwmWindow *) NULL); done: if (cmap_windows) { if (can_free_cmap_windows) free ((char *) cmap_windows); else XFree ((char *) cmap_windows); } return; } void GetWindowSizeHints (tmp) TwmWindow *tmp; { long supplied = 0; if (!XGetWMNormalHints (dpy, tmp->w, &tmp->hints, &supplied)) tmp->hints.flags = 0; if (tmp->hints.flags & PResizeInc) { if (tmp->hints.width_inc == 0) tmp->hints.width_inc = 1; if (tmp->hints.height_inc == 0) tmp->hints.height_inc = 1; } if (!(supplied & PWinGravity) && (tmp->hints.flags & USPosition)) { static int gravs[] = { SouthEastGravity, SouthWestGravity, NorthEastGravity, NorthWestGravity }; int right = tmp->attr.x + tmp->attr.width + 2 * tmp->old_bw; int bottom = tmp->attr.y + tmp->attr.height + 2 * tmp->old_bw; /* djhjr - 4/19/96 tmp->hints.win_gravity = gravs[((Scr->MyDisplayHeight - bottom < tmp->title_height) ? 0 : 2) | ((Scr->MyDisplayWidth - right < tmp->title_height) ? 0 : 1)]; */ tmp->hints.win_gravity = gravs[((Scr->MyDisplayHeight - bottom < tmp->title_height + 2 * tmp->frame_bw3D) ? 0 : 2) | ((Scr->MyDisplayWidth - right < tmp->title_height + 2 * tmp->frame_bw3D) ? 0 : 1)]; tmp->hints.flags |= PWinGravity; } } vtwm-5.4.7/iconmgr.h0100664000015300001300000000627410237645271013142 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /*********************************************************************** * * $XConsortium: iconmgr.h,v 1.11 89/12/10 17:47:02 jim Exp $ * * Icon Manager includes * * 09-Mar-89 Tom LaStrange File Created * ***********************************************************************/ #ifndef _ICONMGR_ #define _ICONMGR_ typedef struct WList { struct WList *next; struct WList *prev; struct TwmWindow *twm; struct IconMgr *iconmgr; Window w; Window icon; int x, y, width, height; int row, col; int me; /* djhjr - 4/19/96 */ ColorPair cp; /* was Pixmap - djhjr - 10/30/02 */ Image *iconifypm; Pixel fore, back, highlight; unsigned top, bottom; short active; short down; } WList; typedef struct IconMgr { struct IconMgr *next; /* pointer to the next icon manager */ struct IconMgr *prev; /* pointer to the previous icon mgr */ struct IconMgr *lasti; /* pointer to the last icon mgr */ struct WList *first; /* first window in the list */ struct WList *last; /* last window in the list */ struct WList *active; /* the active entry */ TwmWindow *twm_win; /* back pointer to the new parent */ struct ScreenInfo *scr; /* the screen this thing is on */ Window w; /* this icon manager window */ char *geometry; /* geometry string */ char *name; char *icon_name; int x, y, width, height; int columns, cur_rows, cur_columns; int count; } IconMgr; extern int iconmgr_textx; extern WList *DownIconManager; extern void SetIconMgrPixmap(); extern void CreateIconManagers(); extern IconMgr *AllocateIconManager(); extern void MoveIconManager(); extern void JumpIconManager(); extern WList *AddIconManager(); extern void InsertInIconManager(); extern void RemoveFromIconManager(); extern void RemoveIconManager(); extern void ActiveIconManager(); extern void NotActiveIconManager(); extern void DrawIconManagerBorder(); extern void SortIconManager(); extern void PackIconManager(); /* djhjr - 5/19/98 */ #define VTWM_ICONMGR_CLASS "VTWM Icon Manager" #endif /* _ICONMGR_ */ vtwm-5.4.7/Imakefile0100664000015300001300000001425210237655640013140 0ustar callumfid#ifndef XCOMM #define XCOMM # #endif XCOMM $XConsortium: Imakefile,v 1.33 91/07/17 00:48:06 gildea Exp $ XCOMM XCOMM Here is an Imakefile for VTWM. XCOMM I like to use Imakefiles for everything, and I am sure other XCOMM people do also, so perhaps you could do us all a favor and XCOMM distribute this one. XCOMM =============== Start of common editables ===================== XCOMM To omit XPM image support, uncomment this XCOMM NO_XPM_SUPPORT = -DNO_XPM_SUPPORT XCOMM and comment these XPMLIB = -lXpm XPMINC = XCOMM (version 3.4h of the XPM library is the earliest supported I know of) XCOMM To omit regular expressions ("RE"s) support, uncomment this XCOMM NO_REGEX_SUPPORT = -DNO_REGEX_SUPPORT XCOMM and comment these REGEXLIB = REGEXINC = XCOMM (the library must conform to the POSIX 1003.2 specification) XCOMM To omit sound support, uncomment this XCOMM NO_SOUND_SUPPORT = -DNO_SOUND_SUPPORT XCOMM and comment these SOUNDLIB = -L/usr/local/lib -lrplay SOUNDINC = -I/usr/local/include XCOMM (sound is supported only by way of the rplay library) XCOMM To omit Internationalization support, uncomment this XCOMM NO_I18N_SUPPORT = -DNO_I18N_SUPPORT XCOMM To omit m4 pre-processing of resource files, uncomment this XCOMM NO_M4_SUPPORT = -DNO_M4_SUPPORT XCOMM To omit platform and build info in the version window, uncomment this XCOMM NO_BUILD_INFO = -DNO_BUILD_INFO XCOMM For lexers that don't track line numbers, uncomment this XCOMM NEED_YYLINENO_V = -DNEED_YYLINENO_V XCOMM For those systems that don't have putenv(), uncomment this XCOMM NEED_PUTENV_F = -DNEED_PUTENV_F XCOMM For those systems that require sys/select.h, uncomment this XCOMM NEED_SELECT_H = -DNEED_SELECT_H XCOMM For those systems that require process.h, uncomment this XCOMM NEED_PROCESS_H = -DNEED_PROCESS_H XCOMM Installation path for the binary VTWMBINDIR = $(BINDIR) XCOMM Installation path for the system resource file VTWMLIBDIR = $(LIBDIR)/twm XCOMM Installation path for the man page VTWMMANDIR = $(MANDIR) XCOMM For the traditional look of TWM as the system fallback, XCOMM change this to "2D" SYS_VTWMRC_LOOK = 3D XCOMM ================ End of common editables ====================== XCOMM ============= Start of less common editables ================== XCOMM Handy for developers to check man page editions XCOMM (see the end of this file) DEROFF = deroff DW = dw SPELL = spell XCOMM Required to generate HTML or Postscript versions of the man page XCOMM (see the end of this file) MAN2HTML = man2html MAN2PS = man2ps XCOMM ============== End of less common editables =================== XCOMM ========= Editing below here should not be necessary ========== YFLAGS = -d DEPLIBS = $(DEPXMULIB) $(DEPEXTENSIONLIB) $(DEPXLIB) LOCAL_LIBRARIES = $(LEXLIB) $(XPMLIB) $(REGEXLIB) $(SOUNDLIB) \ $(XMULIB) $(EXTENSIONLIB) $(XLIB) LINTLIBS = $(LINTXMU) $(LINTEXTENSIONLIB) $(LINTXLIB) EXTRA_INCLUDES = $(XPMINC) $(REGEXINC) $(SOUNDINC) DEFINES = $(SIGNAL_DEFINES) $(NO_XPM_SUPPORT) $(NO_REGEX_SUPPORT) \ $(NO_SOUND_SUPPORT) $(NO_I18N_SUPPORT) $(NO_M4_SUPPORT) SRCS = gram.c lex.c deftwmrc.c add_window.c gc.c list.c \ twm.c sound.c parse.c menus.c events.c resize.c util.c \ version.c iconmgr.c cursor.c regions.c applets.c \ icons.c desktop.c doors.c lastmake.c OBJS = gram.o lex.o deftwmrc.o add_window.o gc.o list.o \ twm.o sound.o parse.o menus.o events.o resize.o util.o \ version.o iconmgr.o cursor.o regions.o applets.o \ icons.o desktop.o doors.o lastmake.o AllTarget(vtwm) SpecialObjectRule(menus.o,gram.h,$(NO_BUILD_INFO) $(NEED_PROCESS_H)) SpecialObjectRule(util.o,gram.h,$(NEED_PUTENV_F)) SpecialObjectRule(events.o,gram.h,$(NEED_SELECT_H)) SpecialObjectRule(parse.o,gram.h,$(NEED_YYLINENO_V) \ '-DSYSTEM_VTWMRC="'$(VTWMLIBDIR)'/system.vtwmrc"' \ '-DSYSTEM_TWMRC="'$(VTWMLIBDIR)'/system.twmrc"') SpecialObjectRule(add_window.o applets.o icons.o \ list.o regions.o sound.o twm.o,gram.h,NullParameter) NormalProgramTarget(vtwm,$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),NullParameter) InstallProgram(vtwm,$(VTWMBINDIR)) InstallManPage(vtwm,$(VTWMMANDIR)) InstallNonExecFile(system.vtwmrc,$(VTWMLIBDIR)) depend:: lex.c gram.c deftwmrc.c lastmake.c vtwm.man all:: $(RM) deftwmrc.* lastmake.* install:: $(RM) deftwmrc.* lastmake.* $(MAKE) install.man clean:: $(RM) y.tab.h y.tab.c lex.yy.c gram.h gram.c lex.c deftwmrc.c \ lastmake.c system.vtwmrc vtwm.dw vtwm.ser vtwm.html vtwm.ps vtwm.man gram.h gram.c: gram.y $(YACC) $(YFLAGS) gram.y $(MV) y.tab.c gram.c $(MV) y.tab.h gram.h deftwmrc.c: system.vtwmrc $(RM) $@ echo '/* ' >>$@ echo ' * This file is generated automatically from the default' >>$@ echo ' * VTWM bindings file system.vtwmrc.'$(SYS_VTWMRC_LOOK)' by the VTWM Makefile.' >>$@ echo ' */' >>$@ echo '' >>$@ echo 'char *defTwmrc[] = {' >>deftwmrc.c sed -e '/^$$/d' -e '/^#/d' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/",/' -e 's/[ ]\{1,\}/ /g' -e 's/^" /"/' system.vtwmrc >>$@ echo '(char *)0 };' >>$@ lastmake.c: $(RM) $@ echo '/* ' >>$@ echo ' * This file is generated automatically by the VTWM Makefile.' >>$@ echo ' */' >>$@ echo '' >>$@ echo 'char *lastmake[] = {' >>lastmake.c echo ' "Platform: '`uname -r -s`'",' >>$@ echo ' "Build: '`date`'",' >>$@ echo ' "" };' >>$@ system.vtwmrc: $(RM) $@ $(CP) $@.$(SYS_VTWMRC_LOOK) $@ vtwm.man: $(RM) $@ $(LN) doc/$@ $@ XCOMM Handy for developers to check the man page dw vtwm.dw: vtwm.man $(DEROFF) vtwm.man | $(DW) >vtwm.dw @if test -s vtwm.dw ; \ then \ echo Doubled words in vtwm.man ... ; \ cat vtwm.dw ; \ fi spell vtwm.ser: vtwm.man vtwm.sok $(DEROFF) vtwm.man | $(SPELL) +vtwm.sok >vtwm.ser @if test -s vtwm.ser ; \ then \ echo Spelling exceptions in vtwm.man ... ; \ cat vtwm.ser ; \ fi XCOMM If you wish to generate HTML or Postscript versions of the man page, XCOMM enter 'make vtwm.html' or 'make vtwm.ps' vtwm.html: vtwm.man $(MAN2HTML) vtwm.man vtwm.ps: vtwm.man $(MAN2PS) < $< >$@ vtwm-5.4.7/resize.h0100664000015300001300000000557310237645271013006 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: resize.h,v 1.7 90/03/23 11:42:32 jim Exp $ * * resize function externs * * 8-Apr-88 Tom LaStrange Initial Version. * **********************************************************************/ #ifndef _RESIZE_ #define _RESIZE_ extern int resizing_window; extern void StartResize(); extern void AddStartResize(); extern void DoResize(); extern void DisplaySize(); extern void EndResize(); extern void AddEndResize(); extern void SetupWindow(); extern void SetupFrame(); extern void SetFrameShape(); extern void ConstrainSize(); /* depreciated - djhjr - 10/6/02 extern void MenuDoResize(); */ extern void MenuStartResize(); extern void MenuEndResize(); /* djhjr - 4/6/98 */ void PaintBorderAndTitlebar(); extern void fullzoom(); #endif /* _RESIZE_ */ vtwm-5.4.7/regions.c0100664000015300001300000001363210237641630013134 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /********************************************************************** * * regions.c * * Region related routines * * 4/26/99 D. J. Hawkey Jr. * **********************************************************************/ #include #include #include "twm.h" #include "screen.h" #include "list.h" #include "regions.h" #include "gram.h" #include "parse.h" #include "util.h" void splitRegionEntry (re, grav1, grav2, w, h) RegionEntry *re; int grav1, grav2; int w, h; { RegionEntry *new; switch (grav1) { case D_NORTH: case D_SOUTH: if (w != re->w) splitRegionEntry (re, grav2, grav1, w, re->h); if (h != re->h) { new = (RegionEntry *)malloc (sizeof (RegionEntry)); new->u.twm_win = 0; /* djhjr - 10/20/01 */ new->type = LTYPE_EXACT_NAME; new->usedby = 0; new->next = re->next; re->next = new; new->x = re->x; new->h = (re->h - h); new->w = re->w; re->h = h; if (grav1 == D_SOUTH) { new->y = re->y; re->y = new->y + new->h; } else new->y = re->y + re->h; } break; case D_EAST: case D_WEST: if (h != re->h) splitRegionEntry (re, grav2, grav1, re->w, h); if (w != re->w) { new = (RegionEntry *)malloc (sizeof (RegionEntry)); new->u.twm_win = 0; /* djhjr - 10/20/01 */ new->type = LTYPE_EXACT_NAME; new->usedby = 0; new->next = re->next; re->next = new; new->y = re->y; new->w = (re->w - w); new->h = re->h; re->w = w; if (grav1 == D_EAST) { new->x = re->x; re->x = new->x + new->w; } else new->x = re->x + re->w; } break; } } int roundEntryUp (v, multiple) { return ((v + multiple - 1) / multiple) * multiple; } RegionEntry * prevRegionEntry (re, rr) RegionEntry *re; RootRegion *rr; { RegionEntry *ep; if (re == rr->entries) return 0; for (ep = rr->entries; ep->next != re; ep=ep->next) ; return ep; } /* * old is being freed; and is adjacent to re. Merge regions together. */ void mergeRegionEntries (old, re) RegionEntry *old, *re; { if (old->y == re->y) { re->w = old->w + re->w; if (old->x < re->x) re->x = old->x; } else { re->h = old->h + re->h; if (old->y < re->y) re->y = old->y; } } void downRegionEntry(rr, re) RootRegion *rr; RegionEntry *re; { RegionEntry *ep, *en; re->u.twm_win = 0; re->usedby = 0; ep = prevRegionEntry (re, rr); en = re->next; for (;;) { if (ep && ep->usedby == 0 && ((ep->x == re->x && ep->w == re->w) || (ep->y == re->y && ep->h == re->h))) { ep->next = re->next; mergeRegionEntries (re, ep); if (re->usedby == USEDBY_NAME) free(re->u.name); /* djhjr - 10/20/01 */ #ifndef NO_REGEX_SUPPORT if (re->type & LTYPE_C_REGEXP) regfree(&re->re); #endif free ((char *) re); re = ep; ep = prevRegionEntry (ep, rr); } else if (en && en->usedby == 0 && ((en->x == re->x && en->w == re->w) || (en->y == re->y && en->h == re->h))) { re->next = en->next; mergeRegionEntries (en, re); if (en->usedby == USEDBY_NAME) free(en->u.name); /* djhjr - 10/20/01 */ #ifndef NO_REGEX_SUPPORT if (en->type & LTYPE_C_REGEXP) regfree(&en->re); #endif free ((char *) en); en = re->next; } else break; } } RootRegion * AddRegion(geom, grav1, grav2, stepx, stepy) char *geom; int grav1, grav2, stepx, stepy; { RootRegion *rr; int mask; rr = (RootRegion *)malloc(sizeof(RootRegion)); rr->next = NULL; rr->grav1 = grav1; rr->grav2 = grav2; rr->stepx = (stepx <= 0) ? 2 : stepx; /* hard-coded value was '1' - djhjr - 9/26/99 */ rr->stepy = (stepy <= 0) ? 1 : stepy; rr->x = rr->y = rr->w = rr->h = 0; mask = XParseGeometry(geom, &rr->x, &rr->y, (unsigned int *)&rr->w, (unsigned int *)&rr->h); if (mask & XNegative) rr->x += Scr->MyDisplayWidth - rr->w; if (mask & YNegative) rr->y += Scr->MyDisplayHeight - rr->h; rr->entries = (RegionEntry *)malloc(sizeof(RegionEntry)); rr->entries->next = 0; rr->entries->x = rr->x; rr->entries->y = rr->y; rr->entries->w = rr->w; rr->entries->h = rr->h; rr->entries->u.twm_win = 0; /* djhjr - 10/20/01 */ rr->entries->type = LTYPE_EXACT_NAME; rr->entries->usedby = 0; return rr; } void FreeRegionEntries (rr) RootRegion *rr; { RegionEntry *re, *tmp; for (re = rr->entries; re; re=tmp) { tmp = re->next; if (re->usedby == USEDBY_NAME) free(re->u.name); /* djhjr - 10/20/01 */ #ifndef NO_REGEX_SUPPORT if (re->type & LTYPE_C_REGEXP) regfree(&re->re); #endif free ((char *) re); } } void FreeRegions (first, last) RootRegion *first, *last; { RootRegion *rr, *tmp; for (rr = first; rr != NULL;) { tmp = rr; FreeRegionEntries (rr); rr = rr->next; free((char *) tmp); } first = NULL; last = NULL; } vtwm-5.4.7/twm.c0100664000015300001300000012524510237655640012307 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: twm.c,v 1.124 91/05/08 11:01:54 dave Exp $ * * twm - "Tom's Window Manager" * * 27-Oct-87 Thomas E. LaStrange File created * 10-Oct-90 David M. Sternlicht Storing saved colors on root ***********************************************************************/ #include #include #include #include /* for sleep() */ #include #include #include "twm.h" #include "add_window.h" #include "gc.h" #include "parse.h" #include "version.h" #include "menus.h" #include "events.h" #include "util.h" #include "gram.h" #include "screen.h" #include "iconmgr.h" #include "desktop.h" /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #include "sound.h" #endif #include #include #include #include /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT #include #endif Display *dpy; /* which display are we talking to */ Window ResizeWindow; /* the window we are resizing */ int MultiScreen = TRUE; /* try for more than one screen? */ int NumScreens; /* number of screens in ScreenList */ int HasShape; /* server supports shape extension? */ int ShapeEventBase, ShapeErrorBase; ScreenInfo **ScreenList; /* structures for each screen */ ScreenInfo *Scr = NULL; /* the cur and prev screens */ int PreviousScreen; /* last screen that we were on */ int FirstScreen; /* TRUE ==> first screen of display */ Bool PrintPID = False; /* controls PID file - djhjr - 12/2/01 */ Bool PrintErrorMessages = False; /* controls error messages */ static int RedirectError; /* TRUE ==> another window manager running */ static int CatchRedirectError(); /* for settting RedirectError */ static int TwmErrorHandler(); /* for everything else */ void InitVariables(); void InternUsefulAtoms(); char Info[INFO_LINES][INFO_SIZE]; /* info strings to print */ int InfoLines; char *InitFile = NULL; int parseInitFile = TRUE; /* djhjr - 10/7/02 */ Cursor UpperLeftCursor; /* upper Left corner cursor */ Cursor RightButt; Cursor MiddleButt; Cursor LeftButt; XContext TwmContext; /* context for twm windows */ XContext MenuContext; /* context for all menu windows */ XContext IconManagerContext; /* context for all window list windows */ XContext VirtualContext; /* context for all desktop display windows */ XContext ScreenContext; /* context to get screen data */ XContext ColormapContext; /* context for colormap operations */ XContext DoorContext; /* context for doors */ XClassHint NoClass; /* for applications with no class */ XGCValues Gcv; char *Home; /* the HOME environment variable */ int HomeLen; /* length of Home */ int ParseError; /* error parsing the .twmrc file */ int HandlingEvents = FALSE; /* are we handling events yet? */ Window JunkRoot; /* junk window */ Window JunkChild; /* junk window */ int JunkX; /* junk variable */ int JunkY; /* junk variable */ unsigned int JunkWidth, JunkHeight, JunkBW, JunkDepth, JunkMask; char *ProgramName, *PidName = "vtwm.pid"; /* PID file - djhjr - 12/2/01 */ int Argc; char **Argv; char **Environ; Bool RestartPreviousState = False; /* try to restart in previous state */ unsigned long black, white; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT Bool use_fontset; #endif extern void assign_var_savecolor(); /* djhjr - 4/26/99 */ extern void FreeRegions(); /*********************************************************************** * * Procedure: * main - start of twm * *********************************************************************** */ /* Changes for m4 pre-processing submitted by Jason Gloudon */ int main(argc, argv, environ) int argc; char **argv; char **environ; { Window root, parent, *children; unsigned int nchildren; int i, j; char *def, *display_name = NULL; unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ int numManaged, firstscrn, lastscrn, scrnum; extern ColormapWindow *CreateColormapWindow(); #ifndef NO_M4_SUPPORT int m4_preprocess = False; /* filter the *twmrc file through m4 */ char *m4_option = NULL; /* pass these options to m4 - djhjr - 2/20/98 */ #endif /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT int sound_state = 0; #endif extern char *defTwmrc[]; /* djhjr - 10/7/02 */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT char *loc; #endif /* djhjr - 7/21/98 */ SIGNAL_T QueueRestartVtwm(); if ((ProgramName = strrchr(argv[0], '/'))) ProgramName++; else ProgramName = argv[0]; Argc = argc; Argv = argv; Environ = environ; for (i = 1; i < argc; i++) { if (argv[i][0] == '-') { switch (argv[i][1]) { case 'd': /* -display display */ if (++i >= argc) goto usage; display_name = argv[i]; continue; case 'f': /* -file [initfile] */ /* this isn't really right, but hey... - djhjr - 10/7/02 */ if (i + 1 < argc && (argv[i + 1][0] != '-' || (argv[i + 1][0] == '-' && !strchr("dfmpsv", argv[i + 1][1])))) InitFile = argv[++i]; else parseInitFile = FALSE; continue; #ifndef NO_M4_SUPPORT case 'm': /* -m4 [options] */ m4_preprocess = True; /* this isn't really right, but hey... - djhjr - 2/20/98 */ if (i + 1 < argc && (argv[i + 1][0] != '-' || (argv[i + 1][0] == '-' && !strchr("dfmpsv", argv[i + 1][1])))) m4_option = argv[++i]; continue; #endif case 'p': /* -pidfile - djhjr - 12/2/01 */ PrintPID = True; continue; case 's': /* -single */ MultiScreen = FALSE; continue; case 'v': /* -verbose */ PrintErrorMessages = True; continue; #ifdef NEVER /* djhjr - 2/20/99 */ case 'q': /* -quiet */ PrintErrorMessages = False; continue; #endif } } usage: fprintf (stderr, #ifndef NO_M4_SUPPORT "usage: %s [-d display] [-f [initfile]] [-m [options]] [-p] [-s] [-v]\n", #else "usage: %s [-d display] [-f [initfile]] [-p] [-s] [-v]\n", #endif ProgramName); exit (1); } /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT loc = setlocale(LC_ALL, ""); if (!loc || !strcmp(loc, "C") || !strcmp(loc, "POSIX") || !XSupportsLocale()) use_fontset = False; else use_fontset = True; if (PrintErrorMessages) fprintf(stderr, "%s: I18N supported, L10N %sabled\n", ProgramName, (use_fontset) ? "en" : "dis"); #endif /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #define sounddonehandler(sig) \ if (signal (sig, SIG_IGN) != SIG_IGN) (void) signal (sig, PlaySoundDone) #else #define sounddonehandler(sig) \ if (signal (sig, SIG_IGN) != SIG_IGN) (void) signal (sig, Done) #endif #define donehandler(sig) \ if (signal (sig, SIG_IGN) != SIG_IGN) (void) signal (sig, Done) sounddonehandler (SIGINT); sounddonehandler (SIGHUP); sounddonehandler (SIGQUIT); sounddonehandler (SIGTERM); /* djhjr - 12/2/01 */ donehandler (SIGABRT); donehandler (SIGFPE); donehandler (SIGSEGV); donehandler (SIGILL); donehandler (SIGTSTP); donehandler (SIGPIPE); #undef sounddonehandler #undef donehandler /* djhjr - 7/31/98 */ signal (SIGUSR1, QueueRestartVtwm); Home = getenv("HOME"); if (Home == NULL) Home = "./"; HomeLen = strlen(Home); NoClass.res_name = NoName; NoClass.res_class = NoName; if (!(dpy = XOpenDisplay(display_name))) { fprintf (stderr, "%s: unable to open display \"%s\"\n", ProgramName, XDisplayName(display_name)); exit (1); } if (fcntl(ConnectionNumber(dpy), F_SETFD, 1) == -1) { fprintf (stderr, "%s: unable to mark display connection as close-on-exec\n", ProgramName); exit (1); } HasShape = XShapeQueryExtension (dpy, &ShapeEventBase, &ShapeErrorBase); TwmContext = XUniqueContext(); MenuContext = XUniqueContext(); IconManagerContext = XUniqueContext(); VirtualContext = XUniqueContext(); ScreenContext = XUniqueContext(); ColormapContext = XUniqueContext(); DoorContext = XUniqueContext(); InternUsefulAtoms (); /* Set up the per-screen global information. */ NumScreens = ScreenCount(dpy); if (MultiScreen) { firstscrn = 0; lastscrn = NumScreens - 1; } else { firstscrn = lastscrn = DefaultScreen(dpy); } InfoLines = 0; /* for simplicity, always allocate NumScreens ScreenInfo struct pointers */ ScreenList = (ScreenInfo **) calloc (NumScreens, sizeof (ScreenInfo *)); if (ScreenList == NULL) { fprintf (stderr, "%s: Unable to allocate memory for screen list, exiting.\n", ProgramName); exit (1); } numManaged = 0; PreviousScreen = DefaultScreen(dpy); FirstScreen = TRUE; for (scrnum = firstscrn ; scrnum <= lastscrn; scrnum++) { /* Make sure property priority colors is empty */ XChangeProperty (dpy, RootWindow(dpy, scrnum), _XA_MIT_PRIORITY_COLORS, XA_CARDINAL, 32, PropModeReplace, NULL, 0); RedirectError = FALSE; XSetErrorHandler(CatchRedirectError); XSelectInput(dpy, RootWindow (dpy, scrnum), ColormapChangeMask | EnterWindowMask | PropertyChangeMask | SubstructureRedirectMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask); XSync(dpy, 0); XSetErrorHandler(TwmErrorHandler); if (RedirectError) { fprintf (stderr, "%s: another window manager is already running", ProgramName); if (MultiScreen && NumScreens > 0) fprintf(stderr, " on screen %d?\n", scrnum); else fprintf(stderr, "?\n"); continue; } numManaged ++; /* Note: ScreenInfo struct is calloc'ed to initialize to zero. */ Scr = ScreenList[scrnum] = (ScreenInfo *) calloc(1, sizeof(ScreenInfo)); if (Scr == NULL) { fprintf (stderr, "%s: unable to allocate memory for ScreenInfo structure for screen %d.\n", ProgramName, scrnum); continue; } /* initialize list pointers, remember to put an initialization * in InitVariables also */ Scr->BorderColorL = NULL; Scr->IconBorderColorL = NULL; Scr->BorderTileForegroundL = NULL; Scr->BorderTileBackgroundL = NULL; Scr->TitleForegroundL = NULL; Scr->TitleBackgroundL = NULL; Scr->IconForegroundL = NULL; Scr->IconBackgroundL = NULL; Scr->NoTitle = NULL; Scr->MakeTitle = NULL; Scr->AutoRaise = NULL; Scr->IconNames = NULL; Scr->NoHighlight = NULL; Scr->NoStackModeL = NULL; Scr->NoTitleHighlight = NULL; Scr->DontIconify = NULL; Scr->IconMgrNoShow = NULL; Scr->IconMgrShow = NULL; Scr->IconifyByUn = NULL; Scr->IconManagerFL = NULL; Scr->IconManagerBL = NULL; Scr->IconMgrs = NULL; Scr->StartIconified = NULL; Scr->SqueezeTitleL = NULL; Scr->DontSqueezeTitleL = NULL; Scr->WindowRingL = NULL; /* submitted by Jonathan Paisley - 10/27/02 */ Scr->NoWindowRingL = NULL; Scr->WarpCursorL = NULL; /* djhjr - 4/22/96 */ Scr->ImageCache = NULL; /* djhjr - 4/7/98 */ Scr->OpaqueMoveL = NULL; Scr->NoOpaqueMoveL = NULL; Scr->OpaqueResizeL = NULL; Scr->NoOpaqueResizeL = NULL; /* djhjr - 5/2/98 */ Scr->NoBorder = NULL; /* djhjr - 9/24/02 */ Scr->UsePPositionL = NULL; /* remember to put an initialization in InitVariables also */ Scr->screen = scrnum; Scr->d_depth = DefaultDepth(dpy, scrnum); Scr->d_visual = DefaultVisual(dpy, scrnum); Scr->Root = RootWindow(dpy, scrnum); XSaveContext (dpy, Scr->Root, ScreenContext, (caddr_t) Scr); /* djhjr - 1/31/99 */ if ((def = XGetDefault(dpy, "*", "bitmapFilePath"))) Scr->BitmapFilePath = strdup(def); else Scr->BitmapFilePath = NULL; Scr->TwmRoot.cmaps.number_cwins = 1; Scr->TwmRoot.cmaps.cwins = (ColormapWindow **) malloc(sizeof(ColormapWindow *)); Scr->TwmRoot.cmaps.cwins[0] = CreateColormapWindow(Scr->Root, True, False); Scr->TwmRoot.cmaps.cwins[0]->visibility = VisibilityPartiallyObscured; Scr->cmapInfo.cmaps = NULL; Scr->cmapInfo.maxCmaps = MaxCmapsOfScreen(ScreenOfDisplay(dpy, Scr->screen)); Scr->cmapInfo.root_pushes = 0; InstallWindowColormaps(0, &Scr->TwmRoot); Scr->StdCmapInfo.head = Scr->StdCmapInfo.tail = Scr->StdCmapInfo.mru = NULL; Scr->StdCmapInfo.mruindex = 0; LocateStandardColormaps(); Scr->TBInfo.nleft = Scr->TBInfo.nright = 0; Scr->TBInfo.head = NULL; /* djhjr - 4/19/96 Scr->TBInfo.border = 1; */ Scr->TBInfo.border = -100; Scr->TBInfo.width = 0; Scr->TBInfo.leftx = 0; Scr->TBInfo.titlex = 0; Scr->MyDisplayWidth = DisplayWidth(dpy, scrnum); Scr->MyDisplayHeight = DisplayHeight(dpy, scrnum); Scr->MaxWindowWidth = 32767 - Scr->MyDisplayWidth; Scr->MaxWindowHeight = 32767 - Scr->MyDisplayHeight; Scr->XORvalue = (((unsigned long) 1) << Scr->d_depth) - 1; if (DisplayCells(dpy, scrnum) < 3) Scr->Monochrome = MONOCHROME; else Scr->Monochrome = COLOR; /* setup default colors */ Scr->FirstTime = TRUE; GetColor(Scr->Monochrome, &black, "black"); Scr->Black = black; GetColor(Scr->Monochrome, &white, "white"); Scr->White = white; if (FirstScreen) { SetFocus ((TwmWindow *)NULL, CurrentTime); /* define cursors */ NewFontCursor(&UpperLeftCursor, "top_left_corner"); NewFontCursor(&RightButt, "rightbutton"); NewFontCursor(&LeftButt, "leftbutton"); NewFontCursor(&MiddleButt, "middlebutton"); } Scr->iconmgr.x = 0; Scr->iconmgr.y = 0; Scr->iconmgr.width = 150; Scr->iconmgr.height = 5; Scr->iconmgr.next = NULL; Scr->iconmgr.prev = NULL; Scr->iconmgr.lasti = &(Scr->iconmgr); Scr->iconmgr.first = NULL; Scr->iconmgr.last = NULL; Scr->iconmgr.active = NULL; Scr->iconmgr.scr = Scr; Scr->iconmgr.columns = 1; Scr->iconmgr.count = 0; Scr->iconmgr.name = "VTWM"; Scr->iconmgr.icon_name = "Icons"; Scr->IconDirectory = NULL; /* djhjr - 10/30/02 */ Scr->hiliteName = NULL; Scr->menuIconName = TBPM_MENU; Scr->iconMgrIconName = TBPM_XLOGO; /* djhjr - 10/30/02 Scr->siconifyPm = NULL; Scr->pullPm = NULL; */ /* djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS Scr->hilitePm = None; Scr->virtualPm = None; /* RFB PIXMAP */ Scr->RealScreenPm = None; /* RFB PIXMAP */ #else /* ORIGINAL_PIXMAPS */ /* djhjr - 10/25/02 */ Scr->hiliteName = NULL; Scr->hilitePm = NULL; Scr->virtualPm = NULL; Scr->realscreenPm = NULL; #endif /* ORIGINAL_PIXMAPS */ if ( Scr->FirstTime ) { /* retain max size on restart. */ Scr->VirtualDesktopMaxWidth = 0; Scr->VirtualDesktopMaxHeight = 0; } InitVariables(); InitMenus(); /* added this 'if (...) else' - djhjr - 10/7/02 */ if (!parseInitFile) ParseStringList(defTwmrc); else { /* Parse it once for each screen. */ #ifndef NO_M4_SUPPORT /* added 'm4_option' - djhjr - 2/20/99 */ ParseTwmrc(InitFile, display_name, m4_preprocess, m4_option); #else ParseTwmrc(InitFile); #endif } /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT OpenSound(); if (PlaySound(S_START)) { /* * Save setting from resource file, and turn sound off */ sound_state = ToggleSounds(); sound_state ^= 1; if (sound_state == 0) ToggleSounds(); } #endif assign_var_savecolor(); /* storeing pixels for twmrc "entities" */ /* djhjr - 10/17/02 */ #if 0 /* djhjr - 4/19/96 */ /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0) { /* djhjr - 10/17/02 if (Scr->TBInfo.border == -100) Scr->TBInfo.border = 0; */ /* djhjr - 3/12/97 if (Scr->ButtonIndent == -100) Scr->ButtonIndent = 0; if (Scr->FramePadding == -100) Scr->FramePadding = 0; if (Scr->TitlePadding == -100) Scr->TitlePadding = 0; */ Scr->ButtonIndent = 0; Scr->FramePadding = 0; Scr->TitlePadding = 0; /* djhjr - 4/3/98 * djhjr - 4/26/96 * if (Scr->SunkFocusWindowTitle) Scr->TitleHighlight = FALSE; */ } else { /* djhjr - 4/5/98 */ Scr->SunkFocusWindowTitle = FALSE; } #endif /* was only if Scr->TitleBevelWidth == 0 - djhjr - 10/17/02 */ if (Scr->FramePadding == -100) Scr->FramePadding = 2; /* values that look */ if (Scr->TitlePadding == -100) Scr->TitlePadding = 8; /* "nice" on */ if (Scr->ButtonIndent == -100) Scr->ButtonIndent = 1; /* 75 and 100dpi displays */ if (Scr->TBInfo.border == -100) Scr->TBInfo.border = 1; /* was 'Scr->use3D*' - djhjr - 8/11/98 */ /* rem'd 'Scr->*BevelWidth > 0' - djhjr - 10/30/02 */ if (/*Scr->TitleBevelWidth > 0 && */!Scr->BeNiceToColormap) GetShadeColors (&Scr->TitleC); if (/*Scr->MenuBevelWidth > 0 && */!Scr->BeNiceToColormap) GetShadeColors (&Scr->MenuC); if (Scr->MenuBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors (&Scr->MenuTitleC); if (Scr->BorderBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors (&Scr->BorderColorC); /* djhjr - 2/7/99 */ if (Scr->DoorBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors (&Scr->DoorC); if (Scr->VirtualDesktopBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors (&Scr->VirtualC); /* djhjr - 8/11/98 * was 'Scr->use3Dborders' - djhjr - 8/11/98 * if (Scr->BorderBevelWidth == 0) Scr->ThreeDBorderWidth = 0; else */ { /* djhjr - 8/11/98 * djhjr - 4/29/98 * if (2 * Scr->BorderBevelWidth > Scr->ThreeDBorderWidth) Scr->ThreeDBorderWidth = 2 * Scr->BorderBevelWidth; */ if (2 * Scr->BorderBevelWidth > Scr->BorderWidth) Scr->BorderWidth = 2 * Scr->BorderBevelWidth; if (!Scr->BeNiceToColormap) GetShadeColors(&Scr->DefaultC); } /* djhjr - 5/5/98 */ /* was 'Scr->use3Dicons' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0) Scr->IconBorderWidth = 0; if (Scr->SqueezeTitle == -1) Scr->SqueezeTitle = FALSE; if (!Scr->HaveFonts) CreateFonts(); CreateGCs(); MakeMenus(); /* djhjr - 10/18/02 */ #if 0 /* * Set titlebar height from font height and padding, * then adjust to titlebutton height - djhjr - 12/10/98 */ Scr->TitleBarFont.y += Scr->FramePadding; i = Scr->TitleBarFont.height; do { Scr->TitleBarFont.y += (i - Scr->TitleBarFont.height) / 2; Scr->TitleHeight = i + Scr->FramePadding * 2; /* djhjr - 4/29/98 * djhjr - 4/19/96 * if (Scr->use3Dtitles) Scr->TitleHeight += 4; */ /* djhjr - 10/18/02 * was 'Scr->use3Dtitles' - djhjr - 8/11/98 * if (Scr->TitleBevelWidth > 0) Scr->TitleHeight += 2 * Scr->TitleBevelWidth + 2; */ /* make title height be odd so buttons look nice and centered */ if (!(Scr->TitleHeight & 1)) Scr->TitleHeight++; } while ((i = InitTitlebarButtons()) > Scr->TitleHeight - Scr->FramePadding * 2); #else /* set titlebar height to font height plus frame padding */ Scr->TitleHeight = Scr->TitleBarFont.height + Scr->FramePadding * 2; if (!(Scr->TitleHeight & 1)) Scr->TitleHeight++; i = InitTitlebarButtons(); /* returns the button height */ /* adjust titlebar height to button height */ if (i > Scr->TitleHeight) Scr->TitleHeight = i + Scr->FramePadding * 2; if (!(Scr->TitleHeight & 1)) Scr->TitleHeight++; /* adjust font baseline */ Scr->TitleBarFont.y += ((Scr->TitleHeight - Scr->TitleBarFont.height) / 2); #endif XGrabServer(dpy); XSync(dpy, 0); JunkX = 0; JunkY = 0; XQueryTree(dpy, Scr->Root, &root, &parent, &children, &nchildren); CreateIconManagers(); if (!Scr->NoIconManagers) Scr->iconmgr.twm_win->icon = TRUE; if (Scr->VirtualDesktopWidth > 0) CreateDesktopDisplay(); /* create all of the door windows */ door_open_all(); /* * weed out icon windows */ for (i = 0; i < nchildren; i++) { if (children[i]) { XWMHints *wmhintsp = XGetWMHints (dpy, children[i]); if (wmhintsp) { if (wmhintsp->flags & IconWindowHint) { for (j = 0; j < nchildren; j++) { if (children[j] == wmhintsp->icon_window) { children[j] = None; break; } } } XFree ((char *) wmhintsp); } } } /* * map all of the non-override windows */ for (i = 0; i < nchildren; i++) { if (children[i] && MappedNotOverride(children[i])) { XUnmapWindow(dpy, children[i]); SimulateMapRequest(children[i]); } } if (Scr->ShowIconManager && !Scr->NoIconManagers) { Scr->iconmgr.twm_win->icon = FALSE; if (Scr->iconmgr.count) { SetMapStateProp (Scr->iconmgr.twm_win, NormalState); XMapWindow(dpy, Scr->iconmgr.w); XMapWindow(dpy, Scr->iconmgr.twm_win->frame); } } /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (!Scr->BorderBevelWidth > 0) attributes.border_pixel = Scr->DefaultC.fore; attributes.background_pixel = Scr->DefaultC.back; attributes.event_mask = (ExposureMask | ButtonPressMask | KeyPressMask | ButtonReleaseMask); attributes.backing_store = NotUseful; #ifdef ORIGINAL_INFOCURSOR attributes.cursor = XCreateFontCursor (dpy, Scr->WaitCursor); /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (!Scr->BorderBevelWidth > 0) valuemask = (CWBorderPixel | CWBackPixel | CWEventMask | CWBackingStore | CWCursor); else valuemask = (CWBackPixel | CWEventMask | CWBackingStore | CWCursor); #else /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (!Scr->BorderBevelWidth > 0) valuemask = (CWBorderPixel | CWBackPixel | CWEventMask | CWBackingStore); else valuemask = (CWBackPixel | CWEventMask | CWBackingStore); #endif Scr->InfoWindow = XCreateWindow (dpy, Scr->Root, 0, 0, (unsigned int) 5, (unsigned int) 5, /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ (unsigned int) (Scr->InfoBevelWidth > 0) ? 0 : BW, 0, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT Scr->SizeStringWidth = MyFont_TextWidth (&Scr->SizeFont, #else Scr->SizeStringWidth = XTextWidth (Scr->SizeFont.font, #endif /* djhjr - 5/9/96 " 8888 x 8888 ", 13); */ /* djhjr - 4/29/98 "nnnnnnnnnnnnn", 13); */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ "nnnnnnnnnnnnn", 13) + ((Scr->InfoBevelWidth > 0) ? 2 * Scr->InfoBevelWidth : 0); /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (!Scr->InfoBevelWidth > 0) valuemask = (CWBorderPixel | CWBackPixel | CWBitGravity); else valuemask = (CWBackPixel | CWBitGravity); /* djhjr - 5/15/96 */ switch (Scr->ResizeX) { case R_NORTHWEST: Scr->ResizeX = 20; Scr->ResizeY = 20; break; case R_NORTHEAST: Scr->ResizeX = (Scr->MyDisplayWidth - Scr->SizeStringWidth) - 20; Scr->ResizeY = 20; break; case R_SOUTHWEST: Scr->ResizeX = 20; Scr->ResizeY = (Scr->MyDisplayHeight - (Scr->SizeFont.height + SIZE_VINDENT*2)) - 20; break; case R_SOUTHEAST: Scr->ResizeX = (Scr->MyDisplayWidth - Scr->SizeStringWidth) - 20; Scr->ResizeY = (Scr->MyDisplayHeight - (Scr->SizeFont.height + SIZE_VINDENT*2)) - 20; break; case R_CENTERED: Scr->ResizeX = (Scr->MyDisplayWidth - Scr->SizeStringWidth) / 2; Scr->ResizeY = (Scr->MyDisplayHeight - (Scr->SizeFont.height + SIZE_VINDENT*2)) / 2; break; } attributes.bit_gravity = NorthWestGravity; Scr->SizeWindow = XCreateWindow (dpy, Scr->Root, /* djhjr - 5/15/96 0,0, */ Scr->ResizeX, Scr->ResizeY, (unsigned int) Scr->SizeStringWidth, /* djhjr - 4/29/98 (unsigned int) (Scr->SizeFont.height + SIZE_VINDENT*2), */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ (unsigned int) (Scr->SizeFont.height + SIZE_VINDENT*2) + ((Scr->InfoBevelWidth > 0) ? 2 * Scr->InfoBevelWidth : 0), /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ (unsigned int) (Scr->InfoBevelWidth > 0) ? 0 : BW, 0, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); XUngrabServer(dpy); FirstScreen = FALSE; Scr->FirstTime = FALSE; } /* for */ if (numManaged == 0) { if (MultiScreen && NumScreens > 0) fprintf (stderr, "%s: unable to find any unmanaged screens\n", ProgramName); exit (1); } RestartPreviousState = False; HandlingEvents = TRUE; RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* autopan windows should have been raised after [re]starting vtwm -- DSE */ InitEvents(); /* profile function stuff by DSE */ #define VTWM_PROFILE "VTWM Profile" if (FindMenuRoot (VTWM_PROFILE)) { ExecuteFunction (F_FUNCTION, VTWM_PROFILE, Event.xany.window, &Scr->TwmRoot, &Event, C_NO_CONTEXT, FALSE); } /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT /* restore setting from resource file */ if (sound_state == 1) ToggleSounds(); #endif /* write out a PID file - djhjr - 12/2/01 */ if (PrintPID) { int fd, err = 0; char buf[10], *fn = malloc(HomeLen + strlen(PidName) + 2); /* removed group and other permissions - djhjr - 10/20/02 */ sprintf(fn, "%s/%s", Home, PidName); if ((fd = open(fn, O_WRONLY|O_EXCL|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR)) != -1) { sprintf(buf, "%d\n", getpid()); err = write(fd, buf, strlen(buf)); close(fd); } if (fd == -1 || err == -1) { fprintf(stderr, "%s: cannot write to %s\n", ProgramName, fn); DoAudible(); } free(fn); } HandleEvents(); return (0); } /*********************************************************************** * * Procedure: * InitVariables - initialize twm variables * *********************************************************************** */ void InitVariables() { FreeList(&Scr->BorderColorL); FreeList(&Scr->IconBorderColorL); FreeList(&Scr->BorderTileForegroundL); FreeList(&Scr->BorderTileBackgroundL); FreeList(&Scr->TitleForegroundL); FreeList(&Scr->TitleBackgroundL); FreeList(&Scr->IconForegroundL); FreeList(&Scr->IconBackgroundL); FreeList(&Scr->IconManagerFL); FreeList(&Scr->IconManagerBL); FreeList(&Scr->IconMgrs); FreeList(&Scr->NoTitle); FreeList(&Scr->MakeTitle); FreeList(&Scr->AutoRaise); FreeList(&Scr->IconNames); FreeList(&Scr->NoHighlight); FreeList(&Scr->NoStackModeL); FreeList(&Scr->NoTitleHighlight); FreeList(&Scr->DontIconify); FreeList(&Scr->IconMgrNoShow); FreeList(&Scr->IconMgrShow); FreeList(&Scr->IconifyByUn); FreeList(&Scr->StartIconified); FreeList(&Scr->IconManagerHighlightL); FreeList(&Scr->SqueezeTitleL); FreeList(&Scr->DontSqueezeTitleL); FreeList(&Scr->WindowRingL); /* submitted by Jonathan Paisley - 10/27/02 */ FreeList(&Scr->NoWindowRingL); FreeList(&Scr->WarpCursorL); FreeList(&Scr->NailedDown); FreeList(&Scr->VirtualDesktopColorFL); FreeList(&Scr->VirtualDesktopColorBL); FreeList(&Scr->VirtualDesktopColorBoL); FreeList(&Scr->DontShowInDisplay); /* Submitted by Erik Agsjo */ FreeList(&Scr->DontShowInTWMWindows); FreeList(&Scr->DoorForegroundL); FreeList(&Scr->DoorBackgroundL); /* djhjr - 4/22/96 */ FreeList(&Scr->ImageCache); /* djhjr - 4/7/98 */ FreeList(&Scr->OpaqueMoveL); FreeList(&Scr->NoOpaqueMoveL); FreeList(&Scr->OpaqueResizeL); FreeList(&Scr->NoOpaqueResizeL); /* djhjr - 5/2/98 */ FreeList(&Scr->NoBorder); /* djhjr - 9/24/02 */ FreeList(&Scr->UsePPositionL); NewFontCursor(&Scr->FrameCursor, "top_left_arrow"); NewFontCursor(&Scr->TitleCursor, "top_left_arrow"); NewFontCursor(&Scr->IconCursor, "top_left_arrow"); NewFontCursor(&Scr->IconMgrCursor, "top_left_arrow"); NewFontCursor(&Scr->MoveCursor, "fleur"); NewFontCursor(&Scr->ResizeCursor, "fleur"); NewFontCursor(&Scr->MenuCursor, "sb_left_arrow"); NewFontCursor(&Scr->ButtonCursor, "hand2"); NewFontCursor(&Scr->WaitCursor, "watch"); NewFontCursor(&Scr->SelectCursor, "dot"); NewFontCursor(&Scr->DestroyCursor, "pirate"); NewFontCursor(&Scr->DoorCursor, "exchange");/*RFBCURSOR*/ NewFontCursor(&Scr->VirtualCursor, "rtl_logo");/*RFBCURSOR*/ NewFontCursor(&Scr->DesktopCursor, "dotbox");/*RFBCURSOR*/ Scr->NoCursor = NoCursor(); Scr->Ring = NULL; Scr->RingLeader = NULL; Scr->DefaultC.fore = black; Scr->DefaultC.back = white; Scr->BorderColor = black; Scr->BorderTileC.fore = black; Scr->BorderTileC.back = white; Scr->TitleC.fore = black; Scr->TitleC.back = white; Scr->MenuC.fore = black; Scr->MenuC.back = white; Scr->MenuTitleC.fore = black; Scr->MenuTitleC.back = white; Scr->MenuShadowColor = black; Scr->IconC.fore = black; Scr->IconC.back = white; Scr->IconBorderColor = black; Scr->IconManagerC.fore = black; Scr->IconManagerC.back = white; Scr->IconManagerHighlight = black; /* djhjr - 4/19/96 */ Scr->FramePadding = -100; Scr->TitlePadding = -100; Scr->ButtonIndent = -100; /* djhjr - 8/11/98 Scr->ThreeDBorderWidth = 6; */ /* djhjr - 5/15/96 */ Scr->ResizeX = Scr->ResizeY = 0; Scr->VirtualC.fore = black;/*RFB VCOLOR*/ Scr->VirtualC.back = white;/*RFB VCOLOR*/ Scr->RealScreenC.back = black;/*RFB 4/92 */ Scr->RealScreenC.fore = white;/*RFB 4/92 */ Scr->VirtualDesktopDisplayC.fore = black; Scr->VirtualDesktopDisplayC.back = white; Scr->VirtualDesktopDisplayBorder = black; Scr->DoorC.fore = black; Scr->DoorC.back = white; Scr->AutoRaiseDefault = FALSE;/*RAISEDELAY*/ Scr->FramePadding = 2; /* values that look "nice" on */ Scr->TitlePadding = 8; /* 75 and 100dpi displays */ Scr->ButtonIndent = 1; Scr->SizeStringOffset = 0; Scr->BorderWidth = BW; Scr->IconBorderWidth = BW; /* djhjr - 8/13/98 */ #ifdef ORIGINAL_PIXMAPS Scr->UnknownWidth = 0; Scr->UnknownHeight = 0; #else Scr->unknownName = NULL; #endif Scr->NumAutoRaises = 0; /* Scr->NoDefaults = FALSE; */ Scr->NoDefaultMouseOrKeyboardBindings = FALSE; /* DSE */ Scr->NoDefaultTitleButtons = FALSE; /* DSE */ Scr->UsePPosition = PPOS_OFF; Scr->FocusRoot = TRUE; Scr->Newest = NULL; /* PF */ Scr->Focus = NULL; /* djhjr - 9/10/03 */ Scr->IgnoreModifiers = 0; /* djhjr - 10/16/02 */ Scr->WarpCentered = WARPC_OFF; Scr->WarpCursor = FALSE; Scr->ForceIcon = FALSE; Scr->NoGrabServer = FALSE; Scr->NoRaiseMove = FALSE; Scr->NoRaiseResize = FALSE; Scr->NoRaiseDeicon = FALSE; Scr->NoRaiseWarp = FALSE; Scr->DontMoveOff = FALSE; Scr->DoZoom = FALSE; Scr->TitleFocus = TRUE; /* djhjr - 5/27/98 */ Scr->IconManagerFocus = TRUE; /* djhjr - 12/14/98 */ Scr->StaticIconPositions = FALSE; /* djhjr - 10/2/01 */ Scr->StrictIconManager = FALSE; /* djhjr - 8/23/02 */ Scr->NoBorders = FALSE; Scr->NoTitlebar = FALSE; Scr->DecorateTransients = FALSE; Scr->IconifyByUnmapping = FALSE; Scr->ShowIconManager = FALSE; Scr->IconManagerDontShow =FALSE; Scr->BackingStore = TRUE; Scr->SaveUnder = TRUE; Scr->RandomPlacement = FALSE; Scr->PointerPlacement = FALSE; Scr->OpaqueMove = FALSE; /* djhjr - 4/6/98 */ Scr->OpaqueResize = FALSE; Scr->Highlight = TRUE; /* djhjr - 1/27/98 */ Scr->IconMgrHighlight = TRUE; Scr->StackMode = TRUE; Scr->TitleHighlight = TRUE; Scr->MoveDelta = 1; /* so that f.deltastop will work */ Scr->ZoomCount = 8; Scr->SortIconMgr = FALSE; Scr->Shadow = TRUE; Scr->InterpolateMenuColors = FALSE; Scr->NoIconManagers = FALSE; Scr->NoIconifyIconManagers = FALSE; /* PF */ Scr->ClientBorderWidth = FALSE; Scr->SqueezeTitle = -1; /* djhjr - 4/26/99 Scr->FirstIconRegion = NULL; Scr->LastIconRegion = NULL; */ FreeRegions(Scr->FirstIconRegion, Scr->LastIconRegion); /* djhjr - 4/26/99 */ FreeRegions(Scr->FirstAppletRegion, Scr->LastAppletRegion); Scr->FirstTime = TRUE; Scr->HaveFonts = FALSE; /* i.e. not loaded yet */ Scr->CaseSensitive = TRUE; Scr->WarpUnmapped = FALSE; Scr->DeIconifyToScreen = FALSE; Scr->WarpWindows = FALSE; Scr->WarpToTransients = FALSE; /* PF */ /* djhjr - 6/25/96 */ Scr->ShallowReliefWindowButton = 2; /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 4/19/96 * Scr->use3Diconmanagers = FALSE; Scr->use3Dmenus = FALSE; Scr->use3Dtitles = FALSE; Scr->use3Dborders = FALSE; */ Scr->ClearBevelContrast = 50; Scr->DarkBevelContrast = 40; Scr->BeNiceToColormap = FALSE; /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 5/5/98 * Scr->use3Dicons = FALSE; */ /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 * djhjr - 4/26/96 * Scr->SunkFocusWindowTitle = FALSE; */ /* for rader - djhjr - 2/9/99 */ Scr->NoPrettyTitles = FALSE; /* djhjr - 9/21/96 */ Scr->ButtonColorIsFrame = FALSE; Scr->snapRealScreen = FALSE; Scr->OldFashionedTwmWindowsMenu = FALSE; Scr->GeometriesAreVirtual = TRUE; Scr->UseWindowRing = FALSE; /* setup default fonts; overridden by defaults from system.twmrc */ #define DEFAULT_NICE_FONT "variable" #define DEFAULT_FAST_FONT "fixed" #define DEFAULT_SMALL_FONT "5x8" Scr->TitleBarFont.font = NULL; Scr->TitleBarFont.name = DEFAULT_NICE_FONT; Scr->MenuFont.font = NULL; Scr->MenuFont.name = DEFAULT_NICE_FONT; Scr->MenuTitleFont.font = NULL; /* DSE */ Scr->MenuTitleFont.name = NULL; /* uses MenuFont unless set -- DSE */ Scr->IconFont.font = NULL; Scr->IconFont.name = DEFAULT_NICE_FONT; Scr->SizeFont.font = NULL; Scr->SizeFont.name = DEFAULT_FAST_FONT; /* djhjr - 5/10/96 */ Scr->InfoFont.font = NULL; Scr->InfoFont.name = DEFAULT_FAST_FONT; Scr->IconManagerFont.font = NULL; Scr->IconManagerFont.name = DEFAULT_NICE_FONT; Scr->VirtualFont.font = NULL; Scr->VirtualFont.name = DEFAULT_SMALL_FONT; Scr->DoorFont.font = NULL; Scr->DoorFont.name = DEFAULT_NICE_FONT; Scr->DefaultFont.font = NULL; Scr->DefaultFont.name = DEFAULT_FAST_FONT; /* no names unless they say so */ Scr->NamesInVirtualDesktop = FALSE; /* by default we emulate the old twm - ie. no virtual desktop */ Scr->Virtual = FALSE; /* this makes some of the algorithms for checking if windows * are on the screen simpler */ Scr->VirtualDesktopWidth = Scr->MyDisplayWidth; Scr->VirtualDesktopHeight = Scr->MyDisplayHeight; /* start at the top left of the virtual desktop */ Scr->VirtualDesktopX = 0; Scr->VirtualDesktopY = 0; /* pan defaults to half screen size */ Scr->VirtualDesktopPanDistanceX = 50; Scr->VirtualDesktopPanDistanceY = 50; /* djhjr - 9/8/98 */ Scr->VirtualDesktopPanResistance = 0; /* default scale is 1:25 */ Scr->VirtualDesktopDScale = 25; /* and the display should appear at 0, 0 */ Scr->VirtualDesktopDX = 0; Scr->VirtualDesktopDY = 0; /* by default no autopan */ Scr->AutoPanX = 0; Scr->StayUpMenus = FALSE; Scr->StayUpOptionalMenus = FALSE; /* PF */ Scr->AutoPanWarpWithRespectToRealScreen = 0; /* DSE */ Scr->AutoPanBorderWidth = 5; /* DSE */ Scr->AutoPanExtraWarp = 2; /* DSE */ Scr->EnhancedExecResources = FALSE; /* DSE */ Scr->RightHandSidePulldownMenus = FALSE; /* DSE */ /* was '2' for when UseRealScreenBorderWidth existed - djhjr - 2/15/99 */ Scr->RealScreenBorderWidth = 0; /* DSE */ /* djhjr - 10/11/01 */ Scr->ZoomZoom = FALSE; Scr->LessRandomZoomZoom = FALSE; /* DSE */ Scr->PrettyZoom = FALSE; /* DSE */ Scr->StickyAbove = FALSE; /* DSE */ Scr->DontInterpolateTitles = FALSE; /* DSE */ /* djhjr - 1/6/98 */ Scr->FixManagedVirtualGeometries = FALSE; Scr->FixTransientVirtualGeometries = FALSE; /* DSE */ Scr->WarpSnug = FALSE; /* DSE */ /* djhjr - 4/17/98 */ Scr->VirtualReceivesMotionEvents = FALSE; Scr->VirtualSendsMotionEvents = FALSE; /* djhjr - 5/2/98 */ Scr->BorderBevelWidth = 0; Scr->TitleBevelWidth = 0; Scr->MenuBevelWidth = 0; Scr->IconMgrBevelWidth = 0; Scr->InfoBevelWidth = 0; /* djhjr - 8/11/98 */ Scr->IconBevelWidth = 0; Scr->ButtonBevelWidth = 0; /* djhjr - 2/7/99 */ Scr->DoorBevelWidth = 0; Scr->VirtualDesktopBevelWidth = 0; /* djhjr - 5/22/00 */ Scr->MenuScrollBorderWidth = 2; Scr->MenuScrollJump = 3; /* djhjr - 6/22/99 */ Scr->DontDeiconifyTransients = FALSE; /* submitted by Ugen Antsilevitch - 5/28/00 */ Scr->WarpVisible = FALSE; /* djhjr - 6/22/01 */ Scr->PauseOnExit = 0; Scr->PauseOnQuit = 0; /* djhjr - 11/3/03 */ Scr->RaiseOnStart = FALSE; } void CreateFonts () { GetFont(&Scr->TitleBarFont); GetFont(&Scr->MenuFont); GetFont(&Scr->IconFont); GetFont(&Scr->SizeFont); /* djhjr - 5/10/96 */ GetFont(&Scr->InfoFont); GetFont(&Scr->IconManagerFont); GetFont(&Scr->VirtualFont); GetFont(&Scr->DoorFont); GetFont(&Scr->DefaultFont); GetFont(&Scr->MenuTitleFont); /* DSE */ Scr->HaveFonts = TRUE; } void RestoreWithdrawnLocation (tmp) TwmWindow *tmp; { int gravx, gravy; unsigned int bw, mask; XWindowChanges xwc; if (XGetGeometry (dpy, tmp->w, &JunkRoot, &xwc.x, &xwc.y, &JunkWidth, &JunkHeight, &bw, &JunkDepth)) { GetGravityOffsets (tmp, &gravx, &gravy); if (gravy < 0) xwc.y -= tmp->title_height; /* djhjr - 4/19/96 */ xwc.x += gravx * tmp->frame_bw3D; xwc.y += gravy * tmp->frame_bw3D; if (bw != tmp->old_bw) { int xoff, yoff; if (!Scr->ClientBorderWidth) { xoff = gravx; yoff = gravy; } else { xoff = 0; yoff = 0; } xwc.x -= (xoff + 1) * tmp->old_bw; xwc.y -= (yoff + 1) * tmp->old_bw; } if (!Scr->ClientBorderWidth) { xwc.x += gravx * tmp->frame_bw; xwc.y += gravy * tmp->frame_bw; } mask = (CWX | CWY); if (bw != tmp->old_bw) { xwc.border_width = tmp->old_bw; mask |= CWBorderWidth; } XConfigureWindow (dpy, tmp->w, mask, &xwc); if (tmp->wmhints && (tmp->wmhints->flags & IconWindowHint)) { XUnmapWindow (dpy, tmp->wmhints->icon_window); } } } void Reborder (time) Time time; { TwmWindow *tmp; /* temp twm window structure */ int scrnum; /* put a border back around all windows */ XGrabServer (dpy); for (scrnum = 0; scrnum < NumScreens; scrnum++) { if ((Scr = ScreenList[scrnum]) == NULL) continue; InstallWindowColormaps (0, &Scr->TwmRoot); /* force reinstall */ for (tmp = Scr->TwmRoot.next; tmp != NULL; tmp = tmp->next) { RestoreWithdrawnLocation (tmp); XMapWindow (dpy, tmp->w); } } XUngrabServer (dpy); SetFocus ((TwmWindow*)NULL, time); } /* delete the PID file - djhjr - 12/2/01 */ void delete_pidfile() { char *fn; if (PrintPID) { fn = malloc(HomeLen + strlen(PidName) + 2); sprintf(fn, "%s/%s", Home, PidName); unlink(fn); free(fn); } } /* * Exit handlers. Clean up and exit VTWM. * * PlaySoundDone() * Done() * QueueRestartVtwm() */ /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT SIGNAL_T PlaySoundDone() { if (PlaySound(S_STOP)) { /* allow time to emit */ if (Scr->PauseOnExit) sleep(Scr->PauseOnExit); } Done(); SIGNAL_RETURN; } void Done() { CloseSound(); SetRealScreen(0,0); Reborder (CurrentTime); XCloseDisplay(dpy); delete_pidfile(); /* djhjr - 12/2/01 */ exit(0); } #else SIGNAL_T Done() { SetRealScreen(0,0); Reborder (CurrentTime); XCloseDisplay(dpy); delete_pidfile(); /* djhjr - 12/2/01 */ exit(0); SIGNAL_RETURN; } #endif /* djhjr - 7/31/98 */ SIGNAL_T QueueRestartVtwm() { XClientMessageEvent ev; delete_pidfile(); /* djhjr - 12/2/01 */ ev.type = ClientMessage; ev.window = Scr->Root; ev.message_type = _XA_TWM_RESTART; ev.format = 32; ev.data.b[0] = (char)0; XSendEvent (dpy, Scr->VirtualDesktopDisplay, False, 0L, (XEvent *) &ev); XFlush(dpy); SIGNAL_RETURN; } /* * Error Handlers. If a client dies, we'll get a BadWindow error (except for * GetGeometry which returns BadDrawable) for most operations that we do before * manipulating the client's window. */ Bool ErrorOccurred = False; XErrorEvent LastErrorEvent; static int TwmErrorHandler(dpy, event) Display *dpy; XErrorEvent *event; { LastErrorEvent = *event; ErrorOccurred = True; if (PrintErrorMessages && /* don't be too obnoxious */ event->error_code != BadWindow && /* watch for dead puppies */ (event->request_code != X_GetGeometry && /* of all styles */ event->error_code != BadDrawable)) XmuPrintDefaultErrorMessage (dpy, event, stderr); return 0; } /* ARGSUSED*/ static int CatchRedirectError(dpy, event) Display *dpy; XErrorEvent *event; { RedirectError = TRUE; LastErrorEvent = *event; ErrorOccurred = True; return 0; } Atom _XA_MIT_PRIORITY_COLORS; Atom _XA_WM_CHANGE_STATE; Atom _XA_WM_STATE; Atom _XA_WM_COLORMAP_WINDOWS; Atom _XA_WM_PROTOCOLS; Atom _XA_WM_TAKE_FOCUS; Atom _XA_WM_SAVE_YOURSELF; Atom _XA_WM_DELETE_WINDOW; /* djhjr - 7/31/98 */ Atom _XA_TWM_RESTART; void InternUsefulAtoms () { /* * Create priority colors if necessary. */ _XA_MIT_PRIORITY_COLORS = XInternAtom(dpy, "_MIT_PRIORITY_COLORS", False); _XA_WM_CHANGE_STATE = XInternAtom (dpy, "WM_CHANGE_STATE", False); _XA_WM_STATE = XInternAtom (dpy, "WM_STATE", False); _XA_WM_COLORMAP_WINDOWS = XInternAtom (dpy, "WM_COLORMAP_WINDOWS", False); _XA_WM_PROTOCOLS = XInternAtom (dpy, "WM_PROTOCOLS", False); _XA_WM_TAKE_FOCUS = XInternAtom (dpy, "WM_TAKE_FOCUS", False); _XA_WM_SAVE_YOURSELF = XInternAtom (dpy, "WM_SAVE_YOURSELF", False); _XA_WM_DELETE_WINDOW = XInternAtom (dpy, "WM_DELETE_WINDOW", False); /* djhjr - 7/31/98 */ _XA_TWM_RESTART = XInternAtom (dpy, "_TWM_RESTART", False); } vtwm-5.4.7/applets.c0100664000015300001300000001257110237645271013144 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /********************************************************************** * * applets.c * * Applet region related routines * * 4/26/99 D. J. Hawkey Jr. * **********************************************************************/ #include #include #include "twm.h" #include "screen.h" #include "regions.h" #include "gram.h" #include "parse.h" #include "util.h" extern void twmrc_error_prefix(); extern int MatchName(); extern void splitRegionEntry(); extern int roundEntryUp(); extern RegionEntry *prevRegionEntry(); extern void mergeRegionEntries(); extern void downRegionEntry(); extern RootRegion *AddRegion(); int appletWidth(tmp_win) TwmWindow *tmp_win; { /* submitted by Tim Wiess - 8/23/02 */ if (Scr->NoBorders || LookInList(Scr->NoBorder, tmp_win->full_name, &tmp_win->class)) return tmp_win->attr.width; else return Scr->BorderWidth * 2 + tmp_win->attr.width; } int appletHeight(tmp_win) TwmWindow *tmp_win; { /* submitted by Tim Wiess - 8/23/02 */ /* added 'tmp_win->title_height +' - djhjr - 11/11/03 */ if (Scr->NoBorders || LookInList(Scr->NoBorder, tmp_win->full_name, &tmp_win->class)) return tmp_win->title_height + tmp_win->attr.height; else return Scr->BorderWidth * 2 + tmp_win->title_height + tmp_win->attr.height; } int PlaceApplet(tmp_win, def_x, def_y, final_x, final_y) TwmWindow *tmp_win; int def_x, def_y; int *final_x, *final_y; { RootRegion *rr; RegionEntry *re; int matched, w, h; for (rr = Scr->FirstAppletRegion; rr; rr = rr->next) { matched = 0; w = roundEntryUp (appletWidth (tmp_win), rr->stepx); h = roundEntryUp (appletHeight (tmp_win), rr->stepy); for (re = rr->entries; re; re = re->next) { if (!matched) { /* these were 'match()' - djhjr - 10/20/01 */ if (MatchName(tmp_win->full_name, re->u.name, &re->re, re->type)) if (MatchName(tmp_win->class.res_name, re->u.name, &re->re, re->type)) if (MatchName(tmp_win->class.res_class, re->u.name, &re->re, re->type)) continue; matched = 1; } if (re->usedby) continue; /* don't include grid spacing - djhjr - 5/22/99 if (re->w < w || re->h < h) continue; */ if (re->w < appletWidth(tmp_win) || re->h < appletHeight(tmp_win)) continue; splitRegionEntry (re, rr->grav1, rr->grav2, w, h); re->usedby = USEDBY_TWIN; re->u.twm_win = tmp_win; /* evenly spaced applet placement - djhjr - 4/24/99 *final_x = re->x + (re->w - appletWidth (tmp_win)) / 2; *final_y = re->y + (re->h - appletHeight (tmp_win)) / 2; */ *final_x = re->x; *final_y = re->y; /* adjust for region gravity - djhjr 4/26/99 */ if (rr->grav2 == D_EAST) *final_x += re->w - appletWidth(tmp_win); if (rr->grav1 == D_SOUTH) *final_y += re->h - appletHeight(tmp_win); return 1; } } *final_x = def_x; *final_y = def_y; return 0; } static RegionEntry * FindAppletEntry (tmp_win, rrp) TwmWindow *tmp_win; RootRegion **rrp; { RootRegion *rr; RegionEntry *re; for (rr = Scr->FirstAppletRegion; rr; rr = rr->next) { for (re = rr->entries; re; re=re->next) if (re->u.twm_win == tmp_win) { if (rrp) *rrp = rr; return re; } } return 0; } void AppletDown (tmp_win) TwmWindow *tmp_win; { RegionEntry *re; RootRegion *rr; re = FindAppletEntry (tmp_win, &rr); if (re) downRegionEntry(rr, re); } RootRegion * AddAppletRegion(geom, grav1, grav2, stepx, stepy) char *geom; int grav1, grav2, stepx, stepy; { RootRegion *rr; rr = AddRegion(geom, grav1, grav2, stepx, stepy); if (Scr->LastAppletRegion) Scr->LastAppletRegion->next = rr; Scr->LastAppletRegion = rr; if (!Scr->FirstAppletRegion) Scr->FirstAppletRegion = rr; return rr; } void AddToAppletList(list_head, name, type) RootRegion *list_head; char *name; short type; { RegionEntry *nptr; if (!list_head) return; /* ignore empty inserts */ nptr = (RegionEntry *)malloc(sizeof(RegionEntry)); if (nptr == NULL) { twmrc_error_prefix(); fprintf (stderr, "unable to allocate %d bytes for RegionEntry\n", sizeof(RegionEntry)); Done(); } nptr->next = list_head->entries; /* djhjr - 10/20/01 */ nptr->type = type; nptr->usedby = USEDBY_NAME; nptr->u.name = (char*)strdup(name); list_head->entries = nptr; } vtwm-5.4.7/regions.h0100664000015300001300000000413310237641630013135 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /********************************************************************** * * regions.h (was icons.h) * * Region related definitions * * 4/26/99 D. J. Hawkey Jr. * **********************************************************************/ #ifndef REGIONS_H #define REGIONS_H #define USEDBY_TWIN 1 #define USEDBY_NAME 2 /* djhjr - 10/20/01 */ #ifndef NO_REGEX_SUPPORT #include #include #endif typedef struct RootRegion { struct RootRegion *next; int x, y, w, h; int grav1, grav2; int stepx, stepy; struct RegionEntry *entries; } RootRegion; typedef struct RegionEntry { struct RegionEntry *next; int x, y, w, h; /* icons use twm_win, applets use both - djhjr - 4/26/99 */ union { TwmWindow *twm_win; char *name; } u; /* djhjr - 10/20/01 */ #ifndef NO_REGEX_SUPPORT regex_t re; #else char re; #endif short type; short usedby; } RegionEntry; #endif /* REGIONS_H */ vtwm-5.4.7/icons.c0100664000015300001300000006500710237645271012611 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /********************************************************************** * * $XConsortium: icons.c,v 1.22 91/07/12 09:58:38 dave Exp $ * * Icon releated routines * * 10-Apr-89 Tom LaStrange Initial Version. * **********************************************************************/ #include #include #include "twm.h" #include "screen.h" #include "regions.h" #include "list.h" #include "gram.h" #include "parse.h" #include "util.h" extern void splitRegionEntry(); extern int roundEntryUp(); extern RegionEntry *prevRegionEntry(); extern void mergeRegionEntries(); extern void downRegionEntry(); extern RootRegion *AddRegion(); #define iconWidth(w) (Scr->IconBorderWidth * 2 + w->icon_w_width) #define iconHeight(w) (Scr->IconBorderWidth * 2 + w->icon_w_height) void PlaceIcon(tmp_win, def_x, def_y, final_x, final_y) TwmWindow *tmp_win; int def_x, def_y; int *final_x, *final_y; { RootRegion *rr; RegionEntry *re; int w, h; re = 0; for (rr = Scr->FirstIconRegion; rr; rr = rr->next) { w = roundEntryUp (iconWidth (tmp_win), rr->stepx); h = roundEntryUp (iconHeight (tmp_win), rr->stepy); for (re = rr->entries; re; re=re->next) { if (re->usedby) continue; /* don't include grid spacing - djhjr - 5/22/99 if (re->w >= w && re->h >= h) */ if (re->w >= iconWidth(tmp_win) && re->h >= iconHeight(tmp_win)) break; } if (re) break; } if (re) { splitRegionEntry (re, rr->grav1, rr->grav2, w, h); re->usedby = USEDBY_TWIN; re->u.twm_win = tmp_win; /* evenly spaced icon placement - djhjr - 4/24/99 *final_x = re->x + (re->w - iconWidth (tmp_win)) / 2; *final_y = re->y + (re->h - iconHeight (tmp_win)) / 2; */ *final_x = re->x; *final_y = re->y; /* adjust for region gravity - djhjr 4/26/99 */ if (rr->grav2 == D_EAST) *final_x += re->w - iconWidth(tmp_win); if (rr->grav1 == D_SOUTH) *final_y += re->h - iconHeight(tmp_win); } else { *final_x = def_x; *final_y = def_y; } return; } static RegionEntry * FindIconEntry (tmp_win, rrp) TwmWindow *tmp_win; RootRegion **rrp; { RootRegion *rr; RegionEntry *re; for (rr = Scr->FirstIconRegion; rr; rr = rr->next) { for (re = rr->entries; re; re=re->next) if (re->u.twm_win == tmp_win) { if (rrp) *rrp = rr; return re; } } return 0; } void IconUp (tmp_win) TwmWindow *tmp_win; { int x, y; int defx, defy; struct RootRegion *rr; /* * If the client specified a particular location, let's use it (this might * want to be an option at some point). Otherwise, try to fit within the * icon region. */ if (tmp_win->wmhints && (tmp_win->wmhints->flags & IconPositionHint)) return; if (tmp_win->icon_moved) { if (!XGetGeometry (dpy, tmp_win->icon_w, &JunkRoot, &defx, &defy, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth)) return; /* evenly spaced icon placement - djhjr - 4/24/99 x = defx + ((int) JunkWidth) / 2; y = defy + ((int) JunkHeight) / 2; */ x = defx; y = defy; for (rr = Scr->FirstIconRegion; rr; rr = rr->next) { if (x >= rr->x && x < (rr->x + rr->w) && y >= rr->y && y < (rr->y + rr->h)) break; } if (!rr) return; /* outside icon regions, leave alone */ } defx = -100; defy = -100; PlaceIcon(tmp_win, defx, defy, &x, &y); if (x != defx || y != defy) { XMoveWindow (dpy, tmp_win->icon_w, x, y); tmp_win->icon_moved = FALSE; /* since we've restored it */ } } void IconDown (tmp_win) TwmWindow *tmp_win; { RegionEntry *re; RootRegion *rr; re = FindIconEntry (tmp_win, &rr); if (re) downRegionEntry(rr, re); } void AddIconRegion(geom, grav1, grav2, stepx, stepy) char *geom; int grav1, grav2, stepx, stepy; { RootRegion *rr; rr = AddRegion(geom, grav1, grav2, stepx, stepy); if (Scr->LastIconRegion) Scr->LastIconRegion->next = rr; Scr->LastIconRegion = rr; if (!Scr->FirstIconRegion) Scr->FirstIconRegion = rr; } #ifdef ORIGINAL_PIXMAPS void CreateIconWindow(tmp_win, def_x, def_y) TwmWindow *tmp_win; int def_x, def_y; { unsigned long event_mask; unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ Pixmap pm = None; /* tmp pixmap variable */ int final_x, final_y; int x; /* djhjr - 4/27/96 */ GetColorFromList(Scr->IconBorderColorL, tmp_win->full_name, &tmp_win->class, &tmp_win->icon_border); GetColorFromList(Scr->IconForegroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->iconc.fore); GetColorFromList(Scr->IconBackgroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->iconc.back); /* djhjr - 5/5/98 if (Scr->use3Diconmanagers && !Scr->BeNiceToColormap) GetShadeColors(&tmp_win->iconc); */ /* was 'Scr->use3Dicons' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors(&tmp_win->iconc); FB(tmp_win->iconc.fore, tmp_win->iconc.back); tmp_win->forced = FALSE; tmp_win->icon_not_ours = FALSE; /* now go through the steps to get an icon window, if ForceIcon is * set, then no matter what else is defined, the bitmap from the * .twmrc file is used */ if (Scr->ForceIcon) { char *icon_name; Pixmap bm; icon_name = LookInNameList(Scr->IconNames, tmp_win->full_name); if (icon_name == NULL) icon_name = LookInList(Scr->IconNames, tmp_win->full_name, &tmp_win->class); bm = None; if (icon_name != NULL) { if ((bm = (Pixmap)LookInNameList(Scr->Icons, icon_name)) == None) { if ((bm = GetBitmap (icon_name)) != None) /* added 'type' argument - djhjr - 10/20/01 */ AddToList(&Scr->Icons, icon_name, LTYPE_EXACT_NAME, (char *)bm); } } if (bm != None) { XGetGeometry(dpy, bm, &JunkRoot, &JunkX, &JunkY, (unsigned int *) &tmp_win->icon_width, (unsigned int *)&tmp_win->icon_height, &JunkBW, &JunkDepth); pm = XCreatePixmap(dpy, Scr->Root, tmp_win->icon_width, tmp_win->icon_height, Scr->d_depth); /* the copy plane works on color ! */ XCopyPlane(dpy, bm, pm, Scr->NormalGC, 0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 ); tmp_win->forced = TRUE; } } /* if the pixmap is still NULL, we didn't get one from the above code, * that could mean that ForceIcon was not set, or that the window * was not in the Icons list, now check the WM hints for an icon */ if (pm == None && tmp_win->wmhints && tmp_win->wmhints->flags & IconPixmapHint) { XGetGeometry(dpy, tmp_win->wmhints->icon_pixmap, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&tmp_win->icon_width, (unsigned int *)&tmp_win->icon_height, &JunkBW, &JunkDepth); pm = XCreatePixmap(dpy, Scr->Root, tmp_win->icon_width, tmp_win->icon_height, Scr->d_depth); XCopyPlane(dpy, tmp_win->wmhints->icon_pixmap, pm, Scr->NormalGC, 0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 ); } /* if we still haven't got an icon, let's look in the Icon list * if ForceIcon is not set */ if (pm == None && !Scr->ForceIcon) { char *icon_name; Pixmap bm; icon_name = LookInNameList(Scr->IconNames, tmp_win->full_name); if (icon_name == NULL) icon_name = LookInList(Scr->IconNames, tmp_win->full_name, &tmp_win->class); bm = None; if (icon_name != NULL) { if ((bm = (Pixmap)LookInNameList(Scr->Icons, icon_name)) == None) { if ((bm = GetBitmap (icon_name)) != None) /* added 'type' argument - djhjr - 10/20/01 */ AddToList(&Scr->Icons, icon_name, LTYPE_EXACT_NAME, (char *)bm); } } if (bm != None) { XGetGeometry(dpy, bm, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&tmp_win->icon_width, (unsigned int *)&tmp_win->icon_height, &JunkBW, &JunkDepth); pm = XCreatePixmap(dpy, Scr->Root, tmp_win->icon_width, tmp_win->icon_height, Scr->d_depth); /* the copy plane works on color ! */ XCopyPlane(dpy, bm, pm, Scr->NormalGC, 0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 ); } } /* if we still don't have an icon, assign the UnknownIcon */ if (pm == None && Scr->UnknownPm != None) { tmp_win->icon_width = Scr->UnknownWidth; tmp_win->icon_height = Scr->UnknownHeight; pm = XCreatePixmap(dpy, Scr->Root, tmp_win->icon_width, tmp_win->icon_height, Scr->d_depth); /* the copy plane works on color ! */ XCopyPlane(dpy, Scr->UnknownPm, pm, Scr->NormalGC, 0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 ); } if (pm == None) { tmp_win->icon_height = 0; tmp_win->icon_width = 0; valuemask = 0; } else { /* added pixel specs - djhjr - 12/28/98 */ valuemask = CWBackPixmap | CWBackPixel; attributes.background_pixmap = pm; attributes.background_pixel = tmp_win->iconc.fore; } /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT tmp_win->icon_w_width = MyFont_TextWidth(&Scr->IconFont, #else tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font, #endif tmp_win->icon_name, strlen(tmp_win->icon_name)); /* djhjr - 6/11/96 tmp_win->icon_w_width += 6; if (tmp_win->icon_w_width < tmp_win->icon_width) { tmp_win->icon_x = (tmp_win->icon_width - tmp_win->icon_w_width)/2; tmp_win->icon_x += 3; tmp_win->icon_w_width = tmp_win->icon_width; } else { tmp_win->icon_x = 3; } */ tmp_win->icon_w_width += 8; if (tmp_win->icon_w_width < tmp_win->icon_width + 8) { tmp_win->icon_x = (((tmp_win->icon_width + 8) - tmp_win->icon_w_width)/2) + 4; tmp_win->icon_w_width = tmp_win->icon_width + 8; } else tmp_win->icon_x = 4; /* djhjr - 6/11/96 tmp_win->icon_y = tmp_win->icon_height + Scr->IconFont.height; */ tmp_win->icon_y = tmp_win->icon_height + Scr->IconFont.height + 2; /* djhjr - 4/27/96 tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 4; */ /* djhjr - 6/11/96 tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 6; */ tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 8; event_mask = 0; if (tmp_win->wmhints && tmp_win->wmhints->flags & IconWindowHint) { tmp_win->icon_w = tmp_win->wmhints->icon_window; if (tmp_win->forced || XGetGeometry(dpy, tmp_win->icon_w, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&tmp_win->icon_w_width, (unsigned int *)&tmp_win->icon_w_height, &JunkBW, &JunkDepth) == 0) { tmp_win->icon_w = None; tmp_win->wmhints->flags &= ~IconWindowHint; } else { tmp_win->icon_not_ours = TRUE; event_mask = EnterWindowMask | LeaveWindowMask; } } else { tmp_win->icon_w = None; } /* djhjr - 5/5/98 */ /* was 'Scr->use3Dicons' and 'Scr->BorderBevelWidth' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0) { tmp_win->icon_w_width += 2 * Scr->IconBevelWidth; tmp_win->icon_w_height += 2 * Scr->IconBevelWidth; tmp_win->icon_x += Scr->IconBevelWidth; tmp_win->icon_y += Scr->IconBevelWidth; } if (tmp_win->icon_w == None) { tmp_win->icon_w = XCreateSimpleWindow(dpy, Scr->Root, 0,0, tmp_win->icon_w_width, tmp_win->icon_w_height, Scr->IconBorderWidth, tmp_win->icon_border, tmp_win->iconc.back); event_mask = ExposureMask; } XSelectInput (dpy, tmp_win->icon_w, KeyPressMask | ButtonPressMask | ButtonReleaseMask | event_mask); tmp_win->icon_bm_w = None; if (pm != None && (! (tmp_win->wmhints && tmp_win->wmhints->flags & IconWindowHint))) { int y; /* djhjr - 6/11/96 y = 0; */ y = 4; if (tmp_win->icon_w_width == tmp_win->icon_width) x = 0; else x = (tmp_win->icon_w_width - tmp_win->icon_width)/2; /* djhjr - 5/5/98 */ /* was 'Scr->use3Dicons' and 'Scr->BorderBevelWidth' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0) y += Scr->IconBevelWidth; tmp_win->icon_bm_w = XCreateWindow (dpy, tmp_win->icon_w, x, y, (unsigned int)tmp_win->icon_width, (unsigned int)tmp_win->icon_height, (unsigned int) 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); } /* I need to figure out where to put the icon window now, because * getting here means that I am going to make the icon visible */ if (tmp_win->wmhints && tmp_win->wmhints->flags & IconPositionHint) { final_x = tmp_win->wmhints->icon_x; final_y = tmp_win->wmhints->icon_y; } else { PlaceIcon(tmp_win, def_x, def_y, &final_x, &final_y); } if (final_x > Scr->MyDisplayWidth) final_x = Scr->MyDisplayWidth - tmp_win->icon_w_width - (2 * Scr->IconBorderWidth); if (final_y > Scr->MyDisplayHeight) final_y = Scr->MyDisplayHeight - tmp_win->icon_height - Scr->IconFont.height - 4 - (2 * Scr->IconBorderWidth); XMoveWindow(dpy, tmp_win->icon_w, final_x, final_y); tmp_win->iconified = TRUE; XMapSubwindows(dpy, tmp_win->icon_w); XSaveContext(dpy, tmp_win->icon_w, TwmContext, (caddr_t)tmp_win); XSaveContext(dpy, tmp_win->icon_w, ScreenContext, (caddr_t)Scr); XDefineCursor(dpy, tmp_win->icon_w, Scr->IconCursor); if (pm) XFreePixmap (dpy, pm); return; } #else /* ORIGINAL_PIXMAPS */ /* * to help clean up CreateIconWindow() below - djhjr - 8/13/98 * added background color and XPM indicator - djhjr - 12/28/98 */ Image * GetIconImage(name, background, numcolors) char *name; Pixel background; unsigned int *numcolors; { Image *iconimage; GC gc; Pixmap bm; int bitmap_height, bitmap_width; iconimage = (Image *)LookInNameList(Scr->Icons, name); if (iconimage == NULL) { bm = FindBitmap(name, &bitmap_width, &bitmap_height); if (bm != None) { iconimage = (Image *)malloc(sizeof(Image)); iconimage->mask = None; iconimage->height = bitmap_height; iconimage->width = bitmap_width; iconimage->pixmap = XCreatePixmap(dpy, Scr->Root, bitmap_width, bitmap_height, Scr->d_depth); XGetGeometry(dpy, bm, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth); /* * XCopyArea() seems to be necessary for some apps that change * their icons - djhjr - rem'd 8/23/98, re-instated 11/15/98 */ if (JunkDepth == Scr->d_depth) XCopyArea(dpy, bm, iconimage->pixmap, Scr->NormalGC, 0, 0, iconimage->width, iconimage->height, 0, 0); else XCopyPlane(dpy, bm, iconimage->pixmap, Scr->NormalGC, 0, 0, iconimage->width, iconimage->height, 0, 0, 1); iconimage->mask = XCreatePixmap(dpy, Scr->Root, iconimage->width, iconimage->height, 1); if (iconimage->mask) { gc = XCreateGC(dpy, iconimage->mask, 0, NULL); if (gc) { XCopyArea(dpy, bm, iconimage->mask, gc, 0, 0, iconimage->width, iconimage->height, 0, 0); XFreeGC (dpy, gc); } } XFreePixmap(dpy, bm); } #ifndef NO_XPM_SUPPORT else { /* added color argument - djhjr - 9/28/99 */ iconimage = FindImage(name, background); } #endif if (iconimage != NULL) /* added 'type' argument - djhjr - 10/20/01 */ AddToList(&Scr->Icons, name, LTYPE_EXACT_NAME, (char *)iconimage); } /* djhjr - 12/28/98 */ *numcolors = 0; #ifndef NO_XPM_SUPPORT if (iconimage != NULL) *numcolors = SetPixmapsBackground(iconimage, Scr->Root, background); #endif return (iconimage); } /* * Submitted by Jason Gloudon */ void CreateIconWindow(tmp_win, def_x, def_y) TwmWindow *tmp_win; int def_x, def_y; { unsigned long event_mask; unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ Pixmap pm; /* tmp pixmap variable */ Image *iconimage; char *icon_name; int x, final_x, final_y; unsigned int pm_numcolors = 0; /* djhjr - 12/28/98 */ /* djhjr - 4/27/96 */ GetColorFromList(Scr->IconBorderColorL, tmp_win->full_name, &tmp_win->class, &tmp_win->icon_border); GetColorFromList(Scr->IconForegroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->iconc.fore); GetColorFromList(Scr->IconBackgroundL, tmp_win->full_name, &tmp_win->class, &tmp_win->iconc.back); /* djhjr - 5/5/98 if (Scr->use3Diconmanagers && !Scr->BeNiceToColormap) GetShadeColors(&tmp_win->iconc); */ /* was 'Scr->use3Dicons' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors(&tmp_win->iconc); FB(tmp_win->iconc.fore, tmp_win->iconc.back); tmp_win->forced = FALSE; tmp_win->icon_not_ours = FALSE; iconimage = NULL; pm = None; /* * now go through the steps to get an icon window, if ForceIcon is * set, then no matter what else is defined, the bitmap from the * .vtwmrc file is used */ if (Scr->ForceIcon) { icon_name = LookInNameList(Scr->IconNames, tmp_win->full_name); if (icon_name == NULL) icon_name = LookInList(Scr->IconNames, tmp_win->full_name, &tmp_win->class); if (icon_name != NULL) /* added background and XPM indicator - djhjr - 12/28/98 */ iconimage = GetIconImage(icon_name, tmp_win->iconc.back, &pm_numcolors); if (iconimage != NULL) { tmp_win->icon_width = iconimage->width; tmp_win->icon_height = iconimage->height; pm = iconimage->pixmap; tmp_win->forced = TRUE; } } /* * if the pixmap is still NULL, we didn't get one from the above code, * that could mean that ForceIcon was not set, or that the window * was not in the Icons list, now check the WM hints for an icon */ if (pm == None && tmp_win->wmhints && tmp_win->wmhints->flags & IconPixmapHint) { /* djhjr - 8/14/98 XGetGeometry(dpy, tmp_win->wmhints->icon_pixmap, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&tmp_win->icon_width, (unsigned int *)&tmp_win->icon_height, &JunkBW, &JunkDepth); pm = XCreatePixmap(dpy, Scr->Root, tmp_win->icon_width, tmp_win->icon_height, Scr->d_depth); XCopyPlane(dpy, tmp_win->wmhints->icon_pixmap, pm, Scr->NormalGC, 0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 ); XFreePixmap(dpy, pm); */ XGetGeometry(dpy, tmp_win->wmhints->icon_pixmap, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth); pm_numcolors = 3; /* Submitted by Caveh Frank Jalali */ iconimage = (Image*)malloc(sizeof(Image)); iconimage->mask = None; iconimage->width = JunkWidth; iconimage->height = JunkHeight; iconimage->pixmap = XCreatePixmap(dpy, Scr->Root, iconimage->width, iconimage->height, Scr->d_depth); if (JunkDepth == Scr->d_depth) XCopyArea(dpy, tmp_win->wmhints->icon_pixmap, iconimage->pixmap, Scr->NormalGC, 0, 0, iconimage->width, iconimage->height, 0, 0); else XCopyPlane(dpy, tmp_win->wmhints->icon_pixmap, iconimage->pixmap, Scr->NormalGC, 0, 0, iconimage->width, iconimage->height, 0, 0, 1); if ((tmp_win->wmhints->flags & IconMaskHint) && XGetGeometry(dpy, tmp_win->wmhints->icon_mask, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth) && JunkDepth == 1) { GC gc; iconimage->mask = XCreatePixmap(dpy, Scr->Root, JunkWidth, JunkHeight, 1); if (iconimage->mask) { gc = XCreateGC(dpy, iconimage->mask, 0, NULL); if (gc) { XCopyArea(dpy, tmp_win->wmhints->icon_mask, iconimage->mask, gc, 0, 0, JunkWidth, JunkHeight, 0, 0); XFreeGC (dpy, gc); } } } if (iconimage != NULL) { tmp_win->icon_width = iconimage->width; tmp_win->icon_height = iconimage->height; pm = iconimage->pixmap; } } /* * if we still haven't got an icon, let's look in the Icon list * if ForceIcon is not set */ if (pm == None && !Scr->ForceIcon) { icon_name = LookInNameList(Scr->IconNames, tmp_win->full_name); if (icon_name == NULL) icon_name = LookInList(Scr->IconNames, tmp_win->full_name, &tmp_win->class); if (icon_name != NULL) /* added background and XPM indicator - djhjr - 12/28/98 */ iconimage = GetIconImage(icon_name, tmp_win->iconc.back, &pm_numcolors); if (iconimage != NULL) { tmp_win->icon_width = iconimage->width; tmp_win->icon_height = iconimage->height; pm = iconimage->pixmap; } } /* * if we still don't have an icon, assign the UnknownIcon */ /* djhjr - 8/13/98 if (pm == None && Scr->UnknownPm != None) { tmp_win->icon_width = Scr->UnknownWidth; tmp_win->icon_height = Scr->UnknownHeight; pm = XCreatePixmap(dpy, Scr->Root, tmp_win->icon_width, tmp_win->icon_height, Scr->d_depth); * the copy plane works on color ! * XCopyPlane(dpy, Scr->UnknownPm, pm, Scr->NormalGC, 0,0, tmp_win->icon_width, tmp_win->icon_height, 0, 0, 1 ); XFreePixmap(dpy, pm); } */ if (pm == None && Scr->unknownName != NULL) { /* added background and XPM indicator - djhjr - 12/28/98 */ iconimage = GetIconImage(Scr->unknownName, tmp_win->iconc.back, &pm_numcolors); if (iconimage != NULL) { tmp_win->icon_width = iconimage->width; tmp_win->icon_height = iconimage->height; pm = iconimage->pixmap; } } if (pm == None) { tmp_win->icon_height = 0; tmp_win->icon_width = 0; valuemask = 0; } else { valuemask = CWBackPixmap; attributes.background_pixmap = pm; /* djhjr - 12/28/98 */ if (pm_numcolors <= 2) /* not a pixmap */ { valuemask |= CWBackPixel; attributes.background_pixel = tmp_win->iconc.fore; } } /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT tmp_win->icon_w_width = MyFont_TextWidth(&Scr->IconFont, #else tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font, #endif tmp_win->icon_name, strlen(tmp_win->icon_name)); /* djhjr - 6/11/96 tmp_win->icon_w_width += 6; if (tmp_win->icon_w_width < tmp_win->icon_width) { tmp_win->icon_x = (tmp_win->icon_width - tmp_win->icon_w_width)/2; tmp_win->icon_x += 3; tmp_win->icon_w_width = tmp_win->icon_width; } else { tmp_win->icon_x = 3; } */ tmp_win->icon_w_width += 8; if (tmp_win->icon_w_width < tmp_win->icon_width + 8) { tmp_win->icon_x = (((tmp_win->icon_width + 8) - tmp_win->icon_w_width)/2) + 4; tmp_win->icon_w_width = tmp_win->icon_width + 8; } else tmp_win->icon_x = 4; /* djhjr - 6/11/96 tmp_win->icon_y = tmp_win->icon_height + Scr->IconFont.height; */ tmp_win->icon_y = tmp_win->icon_height + Scr->IconFont.height + 2; /* djhjr - 4/27/96 tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 4; */ /* djhjr - 6/11/96 tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 6; */ tmp_win->icon_w_height = tmp_win->icon_height + Scr->IconFont.height + 8; event_mask = 0; if (tmp_win->wmhints && tmp_win->wmhints->flags & IconWindowHint) { tmp_win->icon_w = tmp_win->wmhints->icon_window; if (tmp_win->forced || XGetGeometry(dpy, tmp_win->icon_w, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&tmp_win->icon_w_width, (unsigned int *)&tmp_win->icon_w_height, &JunkBW, &JunkDepth) == 0) { tmp_win->icon_w = None; tmp_win->wmhints->flags &= ~IconWindowHint; } else { tmp_win->icon_not_ours = TRUE; event_mask = EnterWindowMask | LeaveWindowMask; } } else { tmp_win->icon_w = None; } /* djhjr - 5/5/98 */ /* was 'Scr->use3Dicons' and 'Scr->BorderBevelWidth' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0) { tmp_win->icon_w_width += 2 * Scr->IconBevelWidth; tmp_win->icon_w_height += 2 * Scr->IconBevelWidth; tmp_win->icon_x += Scr->IconBevelWidth; tmp_win->icon_y += Scr->IconBevelWidth; } if (tmp_win->icon_w == None) { tmp_win->icon_w = XCreateSimpleWindow(dpy, Scr->Root, 0,0, tmp_win->icon_w_width, tmp_win->icon_w_height, Scr->IconBorderWidth, tmp_win->icon_border, tmp_win->iconc.back); event_mask = ExposureMask; } XSelectInput (dpy, tmp_win->icon_w, KeyPressMask | ButtonPressMask | ButtonReleaseMask | event_mask); tmp_win->icon_bm_w = None; if (pm != None && (! (tmp_win->wmhints && tmp_win->wmhints->flags & IconWindowHint))) { int y; /* djhjr - 6/11/96 y = 0; */ y = 4; if (tmp_win->icon_w_width == tmp_win->icon_width) x = 0; else x = (tmp_win->icon_w_width - tmp_win->icon_width)/2; /* djhjr - 5/5/98 */ /* was 'Scr->use3Dicons' and 'Scr->BorderBevelWidth' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0) y += Scr->IconBevelWidth; tmp_win->icon_bm_w = XCreateWindow (dpy, tmp_win->icon_w, x, y, (unsigned int)tmp_win->icon_width, (unsigned int)tmp_win->icon_height, (unsigned int) 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); if (HasShape) if (iconimage != NULL && iconimage->mask != None) XShapeCombineMask(dpy,tmp_win->icon_bm_w , ShapeBounding, 0, 0, iconimage->mask, ShapeSet); } /* I need to figure out where to put the icon window now, because * getting here means that I am going to make the icon visible */ if (tmp_win->wmhints && tmp_win->wmhints->flags & IconPositionHint) { final_x = tmp_win->wmhints->icon_x; final_y = tmp_win->wmhints->icon_y; } else { PlaceIcon(tmp_win, def_x, def_y, &final_x, &final_y); } if (final_x > Scr->MyDisplayWidth) final_x = Scr->MyDisplayWidth - tmp_win->icon_w_width - (2 * Scr->IconBorderWidth); if (final_y > Scr->MyDisplayHeight) final_y = Scr->MyDisplayHeight - tmp_win->icon_height - Scr->IconFont.height - 4 - (2 * Scr->IconBorderWidth); XMoveWindow(dpy, tmp_win->icon_w, final_x, final_y); tmp_win->iconified = TRUE; XMapSubwindows(dpy, tmp_win->icon_w); XSaveContext(dpy, tmp_win->icon_w, TwmContext, (caddr_t)tmp_win); XSaveContext(dpy, tmp_win->icon_w, ScreenContext, (caddr_t)Scr); XDefineCursor(dpy, tmp_win->icon_w, Scr->IconCursor); return; } #endif /* ORIGINAL_PIXMAPS */ vtwm-5.4.7/gram.y0100664000015300001300000007557410242243264012454 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: gram.y,v 1.91 91/02/08 18:21:56 dave Exp $ * * .twmrc command grammer * * 07-Jan-86 Thomas E. LaStrange File created * 11-Nov-90 Dave Sternlicht Adding SaveColors * 10-Oct-90 David M. Sternlicht Storing saved colors on root * ***********************************************************************/ %{ #include #include #include #include "twm.h" #include "menus.h" #include "list.h" #include "util.h" #include "screen.h" #include "parse.h" #include "doors.h" /* djhjr - 10/30/02 */ #include "iconmgr.h" /* djhjr - 4/26/99 */ #include "regions.h" #include #include /* Submitted by Nelson H. F. Beebe */ #ifdef __NeXT__ #undef isascii #define isascii(c) ((0 <= (int)(c)) && ((int)(c) <= 127)) #endif static char *Action = ""; static char *Name = ""; static MenuRoot *root, *pull = NULL; static MenuRoot *GetRoot(); /* was type 'void' - djhjr - 10/20/01 */ static char *RemoveDQuote(); /* djhjr - 10/20/01 */ static char *RemoveRESlash(); /* djhjr - 10/16/02 */ static int ParseWarpCentered(); /* djhjr - 9/24/02 */ static int ParseUsePPosition(); void twmrc_error_prefix(); /* djhjr - 4/30/96 */ static MenuItem *lastmenuitem = (MenuItem*) 0; static Bool CheckWarpScreenArg(), CheckWarpRingArg(); static Bool CheckColormapArg(); static void GotButton(), GotKey(), GotTitleButton(); static void yyerror(); static name_list **list; /* djhjr - 4/26/99 */ static RootRegion *ARlist; static int cont = 0; static int color; int mods = 0; unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask); /* djhjr - 9/24/02 */ static int ppos; /* djhjr - 10/16/02 */ static int warpc; extern void SetHighlightPixmap(); extern void SetVirtualPixmap(), SetVirtualDesktop(), SetRealScreenPixmap(); extern void NewBitmapCursor(); extern void AddIconRegion(); /* next two - djhjr - 4/26/99 */ extern RootRegion *AddAppletRegion(); extern int AddToAppletList(); extern int do_single_keyword(), do_string_keyword(), do_number_keyword(); extern name_list **do_colorlist_keyword(); extern int do_color_keyword(); extern void do_string_savecolor(), do_var_savecolor(), do_squeeze_entry(); /* djhjr - 6/22/01 */ extern int SetSound(); /* * this used to be the definition - now making the assumption it's * defined in lex's skeleton file (submitted by Nelson H. F. Beebe) * * djhjr - 1/16/98 */ extern int yylineno; %} %union { int num; char *ptr; /* djhjr - 10/20/01 */ struct { short ltype; char *lval; } match; }; %token LP RP MENUS MENU BUTTON DEFAULT_FUNCTION PLUS MINUS %token ALL OR CURSORS PIXMAPS ICONS COLOR MONOCHROME FUNCTION %token ICONMGR_SHOW ICONMGR WINDOW_FUNCTION ZOOM ICONMGRS %token ICONMGR_GEOMETRY ICONMGR_NOSHOW MAKE_TITLE %token ICONIFY_BY_UNMAPPING DONT_ICONIFY_BY_UNMAPPING %token NO_TITLE AUTO_RAISE NO_HILITE NO_ICONMGR_HILITE ICON_REGION /* djhjr - 10/16/02 */ %token WARP_CENTERED /* djhjr - 9/24/02 */ %token USE_PPOSITION /* submitted by Tim Wiess - 8/23/02 */ %token NO_BORDER /* djhjr - 4/26/99 */ %token APPLET_REGION %token META SHIFT LOCK CONTROL WINDOW TITLE ICON ROOT FRAME VIRTUAL VIRTUAL_WIN /* TILDE - djhjr - 10/20/01 */ %token COLON EQUALS TILDE SQUEEZE_TITLE DONT_SQUEEZE_TITLE /* opaque stuff - djhjr - 4/7/98 */ %token OPAQUE_MOVE NO_OPAQUE_MOVE OPAQUE_RESIZE NO_OPAQUE_RESIZE %token START_ICONIFIED NO_TITLE_HILITE TITLE_HILITE %token MOVE RESIZE WAIT SELECT KILL LEFT_TITLEBUTTON RIGHT_TITLEBUTTON /* MKEYWORD - djhjr - 10/20/01 */ %token NUMBER KEYWORD MKEYWORD NKEYWORD CKEYWORD CLKEYWORD FKEYWORD FSKEYWORD /* SNKEYWORD - djhjr - 10/18/02 */ /* NO_WINDOW_RING submitted by Jonathan Paisley - 10/27/02 */ %token SNKEYWORD SKEYWORD DKEYWORD JKEYWORD WINDOW_RING NO_WINDOW_RING WARP_CURSOR %token ERRORTOKEN NO_STACKMODE NAILEDDOWN VIRTUALDESKTOP NO_SHOW_IN_DISPLAY /* Submitted by Erik Agsjo */ %token NO_SHOW_IN_TWMWINDOWS %token DOORS DOOR /*RFB PIXMAP:*/ %token VIRTUALMAP %token REALSCREENMAP /* two pixmaps - djhjr - 10/30/02 */ %token ICONMGRICONMAP %token MENUICONMAP /* STRING REGEXP /* djhjr - 9/10/03 */ %token IGNORE_MODS %token SAVECOLOR %token LB %token RB /* regex stuff - djhjr - 10/20/01 */ %type matcher %type string regexp %type action button number signed_number full fullkey %start twmrc %% twmrc : stmts ; stmts : /* Empty */ | stmts stmt ; stmt : error | noarg | sarg | narg | snarg | squeeze | doors | ICON_REGION string DKEYWORD DKEYWORD number number { AddIconRegion($2, $3, $4, $5, $6); } | APPLET_REGION string DKEYWORD DKEYWORD number number { ARlist = AddAppletRegion($2, $3, $4, $5, $6); } applet_list | ICONMGR_GEOMETRY string number { if (Scr->FirstTime) { Scr->iconmgr.geometry=$2; Scr->iconmgr.columns=$3; } } | ICONMGR_GEOMETRY string { if (Scr->FirstTime) Scr->iconmgr.geometry = $2; } | ZOOM number { if (Scr->FirstTime) { Scr->DoZoom = TRUE; Scr->ZoomCount = $2; } } | ZOOM { if (Scr->FirstTime) Scr->DoZoom = TRUE; } | PIXMAPS pixmap_list {} | CURSORS cursor_list {} | ICONIFY_BY_UNMAPPING { list = &Scr->IconifyByUn; } win_list | ICONIFY_BY_UNMAPPING { if (Scr->FirstTime) Scr->IconifyByUnmapping = TRUE; } | OPAQUE_MOVE { list = &Scr->OpaqueMoveL; } win_list | OPAQUE_MOVE { if (Scr->FirstTime) Scr->OpaqueMove = TRUE; } | NO_OPAQUE_MOVE { list = &Scr->NoOpaqueMoveL; } win_list | NO_OPAQUE_MOVE { if (Scr->FirstTime) Scr->OpaqueMove = FALSE; } | OPAQUE_RESIZE { list = &Scr->OpaqueResizeL; } win_list | OPAQUE_RESIZE { if (Scr->FirstTime) Scr->OpaqueResize = TRUE; } | NO_OPAQUE_RESIZE { list = &Scr->NoOpaqueResizeL; } win_list | NO_OPAQUE_RESIZE { if (Scr->FirstTime) Scr->OpaqueResize = FALSE; } | LEFT_TITLEBUTTON string EQUALS action { GotTitleButton ($2, $4, False); } | RIGHT_TITLEBUTTON string EQUALS action { GotTitleButton ($2, $4, True); } | button string { root = GetRoot($2, NULLSTR, NULLSTR); Scr->Mouse[$1][C_ROOT][0].func = F_MENU; Scr->Mouse[$1][C_ROOT][0].menu = root; } | button action { Scr->Mouse[$1][C_ROOT][0].func = $2; if ($2 == F_MENU) { pull->prev = NULL; Scr->Mouse[$1][C_ROOT][0].menu = pull; } else { root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->Mouse[$1][C_ROOT][0].item = AddToMenu(root,"x",Action, NULLSTR,$2,NULLSTR,NULLSTR); } Action = ""; pull = NULL; } | string fullkey { GotKey($1, $2); } | button full { GotButton($1, $2); } | IGNORE_MODS keys { Scr->IgnoreModifiers = mods; mods = 0; } | DONT_ICONIFY_BY_UNMAPPING { list = &Scr->DontIconify; } win_list | ICONMGR_NOSHOW { list = &Scr->IconMgrNoShow; } win_list | ICONMGR_NOSHOW { Scr->IconManagerDontShow = TRUE; } | ICONMGRS { list = &Scr->IconMgrs; } iconm_list | ICONMGR_SHOW { list = &Scr->IconMgrShow; } win_list | NO_TITLE_HILITE { list = &Scr->NoTitleHighlight; } win_list | NO_TITLE_HILITE { if (Scr->FirstTime) Scr->TitleHighlight = FALSE; } | NO_ICONMGR_HILITE { Scr->IconMgrHighlight = FALSE; } | NO_HILITE { list = &Scr->NoHighlight; } win_list | NO_HILITE { if (Scr->FirstTime) Scr->Highlight = FALSE; } | NO_STACKMODE { list = &Scr->NoStackModeL; } win_list | NO_STACKMODE { if (Scr->FirstTime) Scr->StackMode = FALSE; } | NO_TITLE { list = &Scr->NoTitle; } win_list | NO_TITLE { if (Scr->FirstTime) Scr->NoTitlebar = TRUE; } | NO_BORDER { list = &Scr->NoBorder; } win_list | NO_BORDER { if (Scr->FirstTime) Scr->NoBorders = TRUE; } | MAKE_TITLE { list = &Scr->MakeTitle; } win_list | START_ICONIFIED { list = &Scr->StartIconified; } win_list | AUTO_RAISE { list = &Scr->AutoRaise; } win_list | AUTO_RAISE { Scr->AutoRaiseDefault = TRUE; } | WARP_CENTERED string { if (Scr->FirstTime) { if ((warpc = ParseWarpCentered($2)) != -1) Scr->WarpCentered = warpc; } } | USE_PPOSITION string { if (Scr->FirstTime) { if ((ppos = ParseUsePPosition($2)) != -1) Scr->UsePPosition = ppos; } } | USE_PPOSITION { list = &Scr->UsePPositionL; } ppos_list | USE_PPOSITION string { if (Scr->FirstTime) { if ((ppos = ParseUsePPosition($2)) != -1) Scr->UsePPosition = ppos; } list = &Scr->UsePPositionL; } ppos_list | MENU string LP string COLON string RP { root = GetRoot($2, $4, $6); } menu { root->real_menu = TRUE;} | MENU string { root = GetRoot($2, NULLSTR, NULLSTR); } menu { root->real_menu = TRUE; } | FUNCTION string { root = GetRoot($2, NULLSTR, NULLSTR); } function | ICONS { list = &Scr->IconNames; } icon_list | SOUNDS sound_list | COLOR { color = COLOR; } color_list | SAVECOLOR save_color_list | MONOCHROME { color = MONOCHROME; } color_list | DEFAULT_FUNCTION action { Scr->DefaultFunction.func = $2; if ($2 == F_MENU) { pull->prev = NULL; Scr->DefaultFunction.menu = pull; } else { root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->DefaultFunction.item = AddToMenu(root,"x",Action, NULLSTR,$2, NULLSTR, NULLSTR); } Action = ""; pull = NULL; } | WINDOW_FUNCTION action { Scr->WindowFunction.func = $2; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->WindowFunction.item = AddToMenu(root,"x",Action, NULLSTR,$2, NULLSTR, NULLSTR); Action = ""; pull = NULL; } | WARP_CURSOR { list = &Scr->WarpCursorL; } win_list | WARP_CURSOR { if (Scr->FirstTime) Scr->WarpCursor = TRUE; } | WINDOW_RING { list = &Scr->WindowRingL; } win_list | WINDOW_RING { if (Scr->FirstTime) Scr->UseWindowRing = TRUE; } | NO_WINDOW_RING { list = &Scr->NoWindowRingL; } win_list | NAILEDDOWN { list = &Scr->NailedDown; } win_list | VIRTUALDESKTOP string number { SetVirtualDesktop($2, $3); } | NO_SHOW_IN_DISPLAY { list = &Scr->DontShowInDisplay; } win_list | NO_SHOW_IN_TWMWINDOWS { list = &Scr->DontShowInTWMWindows; } win_list ; noarg : KEYWORD { if (!do_single_keyword ($1)) { twmrc_error_prefix(); fprintf (stderr, "unknown singleton keyword %d\n", $1); ParseError = 1; } } ; sarg : SKEYWORD string { if (!do_string_keyword ($1, $2)) { twmrc_error_prefix(); fprintf (stderr, "unknown string keyword %d (value \"%s\")\n", $1, $2); ParseError = 1; } } ; narg : NKEYWORD number { if (!do_number_keyword ($1, $2)) { twmrc_error_prefix(); fprintf (stderr, "unknown numeric keyword %d (value %d)\n", $1, $2); ParseError = 1; } } ; /* djhjr - 10/18/02 */ snarg : SNKEYWORD signed_number { if (!do_number_keyword ($1, $2)) { twmrc_error_prefix(); fprintf (stderr, "unknown signed keyword %d (value %d)\n", $1, $2); ParseError = 1; } } ; full : EQUALS keys COLON contexts COLON action { $$ = $6; } ; fullkey : EQUALS keys COLON contextkeys COLON action { $$ = $6; } ; keys : /* Empty */ | keys key ; key : META { mods |= Mod1Mask; } | SHIFT { mods |= ShiftMask; } | LOCK { mods |= LockMask; } | CONTROL { mods |= ControlMask; } | META number { if ($2 < 1 || $2 > 5) { twmrc_error_prefix(); fprintf (stderr, "bad modifier number (%d), must be 1-5\n", $2); ParseError = 1; } else { mods |= (Mod1Mask << ($2 - 1)); } } | OR { } ; contexts : /* Empty */ | contexts context ; context : WINDOW { cont |= C_WINDOW_BIT; } | TITLE { cont |= C_TITLE_BIT; } | ICON { cont |= C_ICON_BIT; } | ROOT { cont |= C_ROOT_BIT; } | FRAME { cont |= C_FRAME_BIT; } | ICONMGR { cont |= C_ICONMGR_BIT; } | META { cont |= C_ICONMGR_BIT; } | VIRTUAL { cont |= C_VIRTUAL_BIT; } | VIRTUAL_WIN { cont |= C_VIRTUAL_WIN_BIT; } | DOOR { cont |= C_DOOR_BIT; } | ALL { cont |= C_ALL_BITS; } | OR { } ; contextkeys : /* Empty */ | contextkeys contextkey ; contextkey : WINDOW { cont |= C_WINDOW_BIT; } | TITLE { cont |= C_TITLE_BIT; } | ICON { cont |= C_ICON_BIT; } | ROOT { cont |= C_ROOT_BIT; } | FRAME { cont |= C_FRAME_BIT; } | ICONMGR { cont |= C_ICONMGR_BIT; } | META { cont |= C_ICONMGR_BIT; } | VIRTUAL { cont |= C_VIRTUAL_BIT; } | VIRTUAL_WIN { cont |= C_VIRTUAL_WIN_BIT; } | DOOR { cont |= C_DOOR_BIT; } | ALL { cont |= C_ALL_BITS; } | OR { } | string { Name = $1; cont |= C_NAME_BIT; } ; pixmap_list : LB pixmap_entries RB ; pixmap_entries : /* Empty */ | pixmap_entries pixmap_entry ; pixmap_entry : TITLE_HILITE string { SetHighlightPixmap ($2); } | VIRTUALMAP string { SetVirtualPixmap ($2); }/*RFB PIXMAP*/ | REALSCREENMAP string { SetRealScreenPixmap ($2); }/*RFB PIXMAP*/ | ICONMGRICONMAP string { SetIconMgrPixmap($2); } /* djhjr - 10/30/02 */ | MENUICONMAP string { SetMenuIconPixmap($2); } /* djhjr - 10/30/02 */ ; cursor_list : LB cursor_entries RB ; cursor_entries : /* Empty */ | cursor_entries cursor_entry ; cursor_entry : FRAME string string { NewBitmapCursor(&Scr->FrameCursor, $2, $3); } | FRAME string { NewFontCursor(&Scr->FrameCursor, $2); } | TITLE string string { NewBitmapCursor(&Scr->TitleCursor, $2, $3); } | TITLE string { NewFontCursor(&Scr->TitleCursor, $2); } | ICON string string { NewBitmapCursor(&Scr->IconCursor, $2, $3); } | ICON string { NewFontCursor(&Scr->IconCursor, $2); } | ICONMGR string string { NewBitmapCursor(&Scr->IconMgrCursor, $2, $3); } | ICONMGR string { NewFontCursor(&Scr->IconMgrCursor, $2); } | BUTTON string string { NewBitmapCursor(&Scr->ButtonCursor, $2, $3); } | BUTTON string { NewFontCursor(&Scr->ButtonCursor, $2); } | MOVE string string { NewBitmapCursor(&Scr->MoveCursor, $2, $3); } | MOVE string { NewFontCursor(&Scr->MoveCursor, $2); } | RESIZE string string { NewBitmapCursor(&Scr->ResizeCursor, $2, $3); } | RESIZE string { NewFontCursor(&Scr->ResizeCursor, $2); } | WAIT string string { NewBitmapCursor(&Scr->WaitCursor, $2, $3); } | WAIT string { NewFontCursor(&Scr->WaitCursor, $2); } | MENU string string { NewBitmapCursor(&Scr->MenuCursor, $2, $3); } | MENU string { NewFontCursor(&Scr->MenuCursor, $2); } | SELECT string string { NewBitmapCursor(&Scr->SelectCursor, $2, $3); } | SELECT string { NewFontCursor(&Scr->SelectCursor, $2); } | KILL string string { NewBitmapCursor(&Scr->DestroyCursor, $2, $3); } | KILL string { NewFontCursor(&Scr->DestroyCursor, $2); } | DOOR string string {/*RFBCURSOR*/ NewBitmapCursor(&Scr->DoorCursor, $2, $3); }/*RFBCURSOR*/ | DOOR string {/*RFBCURSOR*/ NewFontCursor(&Scr->DoorCursor, $2); }/*RFBCURSOR*/ | VIRTUAL string string {/*RFBCURSOR*/ NewBitmapCursor(&Scr->VirtualCursor, $2, $3); }/*RFBCURSOR*/ | VIRTUAL string {/*RFBCURSOR*/ NewFontCursor(&Scr->VirtualCursor, $2); }/*RFBCURSOR*/ | VIRTUAL_WIN string string {/*RFBCURSOR*/ NewBitmapCursor(&Scr->DesktopCursor, $2, $3); }/*RFBCURSOR*/ | VIRTUAL_WIN string {/*RFBCURSOR*/ NewFontCursor(&Scr->DesktopCursor, $2); }/*RFBCURSOR*/ ; color_list : LB color_entries RB ; color_entries : /* Empty */ | color_entries color_entry ; color_entry : CLKEYWORD string { if (!do_colorlist_keyword ($1, color, $2)) { twmrc_error_prefix(); fprintf (stderr, "unhandled list color keyword %d (string \"%s\")\n", $1, $2); ParseError = 1; } } | CLKEYWORD string { list = do_colorlist_keyword($1,color, $2); if (!list) { twmrc_error_prefix(); fprintf (stderr, "unhandled color list keyword %d (string \"%s\")\n", $1, $2); ParseError = 1; } } win_color_list | CKEYWORD string { if (!do_color_keyword ($1, color, $2)) { twmrc_error_prefix(); fprintf (stderr, "unhandled color keyword %d (string \"%s\")\n", $1, $2); ParseError = 1; } } ; save_color_list : LB s_color_entries RB ; s_color_entries : /* Empty */ | s_color_entries s_color_entry ; s_color_entry : string { do_string_savecolor(color, $1); } | CLKEYWORD { do_var_savecolor($1); } ; win_color_list : LB win_color_entries RB ; win_color_entries : /* Empty */ | win_color_entries win_color_entry ; /* 'matcher', mods to 'AddToList()' - djhjr - 10/20/01 */ win_color_entry : matcher string { if (Scr->FirstTime && color == Scr->Monochrome) AddToList(list, $1.lval, $1.ltype, $2); } ; squeeze : SQUEEZE_TITLE { if (HasShape) Scr->SqueezeTitle = TRUE; } | SQUEEZE_TITLE { list = &Scr->SqueezeTitleL; if (HasShape && Scr->SqueezeTitle == -1) Scr->SqueezeTitle = TRUE; } LB win_sqz_entries RB | DONT_SQUEEZE_TITLE { Scr->SqueezeTitle = FALSE; } | DONT_SQUEEZE_TITLE { list = &Scr->DontSqueezeTitleL; } win_list ; /* 'matcher', mods to 'do_sqeeze_entry()' - djhjr - 10/20/01 */ win_sqz_entries : /* Empty */ | win_sqz_entries matcher JKEYWORD signed_number signed_number { if (Scr->FirstTime) { do_squeeze_entry (list, $2.lval, $2.ltype, $3, $4, $5); } } ; doors : DOORS LB door_list RB ; door_list : /* Empty */ | door_list door_entry ; door_entry : string string string { (void) door_add($1, $2, $3); } ; iconm_list : LB iconm_entries RB ; iconm_entries : /* Empty */ | iconm_entries iconm_entry ; /* 'matcher', mods to 'AddToList()', 'AllocateIconManager()' - djhjr - 10/20/01 */ iconm_entry : matcher string number { if (Scr->FirstTime) AddToList(list, $1.lval, $1.ltype, (char *) AllocateIconManager($1.lval, NULLSTR, $2, $3)); } | matcher string string number { if (Scr->FirstTime) AddToList(list, $1.lval, $1.ltype, (char *) AllocateIconManager($1.lval, $2, $3, $4)); } ; win_list : LB win_entries RB ; win_entries : /* Empty */ | win_entries win_entry ; /* 'matcher', mods to 'AddToList()' - djhjr - 10/20/01 */ win_entry : matcher { if (Scr->FirstTime) AddToList(list, $1.lval, $1.ltype, 0); } ; icon_list : LB icon_entries RB ; icon_entries : /* Empty */ | icon_entries icon_entry ; /* 'matcher', mods to 'AddToList()' - djhjr - 10/20/01 */ icon_entry : matcher string { if (Scr->FirstTime) AddToList(list, $1.lval, $1.ltype, $2); } ; /* djhjr - 9/24/02 */ ppos_list : LB ppos_entries RB ; ppos_entries : /* Empty */ | ppos_entries ppos_entry ; /* 'matcher', mods to 'AddToList()' - djhjr - 10/20/01 */ ppos_entry : matcher string { if (Scr->FirstTime) { if ((ppos = ParseUsePPosition($2)) != -1) AddToList(list, $1.lval, $1.ltype, (char *)&ppos); } } ; /* djhjr - 6/22/01 */ sound_list : LB sound_entries RB ; /* djhjr - 6/22/01 */ sound_entries : /* Empty */ | sound_entries sound_entry ; /* djhjr - 8/16/01 */ sound_entry : string string { if (Scr->FirstTime) SetSound($1, $2, -1); } | string string number { if (Scr->FirstTime) SetSound($1, $2, $3); } ; /* djhjr - 4/26/99 */ applet_list : LB applet_entries RB ; /* djhjr - 4/26/99 */ applet_entries : /* Empty */ | applet_entries applet_entry ; /* djhjr - 4/26/99 */ /* 'matcher', mods to 'AddToAppletList()' - djhjr - 10/20/01 */ applet_entry : matcher { if (Scr->FirstTime) AddToAppletList(ARlist, $1.lval, $1.ltype); } ; function : LB function_entries RB ; function_entries: /* Empty */ | function_entries function_entry ; function_entry : action { AddToMenu(root, "", Action, NULLSTR, $1, NULLSTR, NULLSTR); Action = ""; } ; /* djhjr - 4/30/96 menu : LB menu_entries RB */ menu : LB menu_entries RB {lastmenuitem = (MenuItem*) 0;} ; menu_entries : /* Empty */ | menu_entries menu_entry ; /* djhjr - 4/30/96 menu_entry : string action { AddToMenu(root, $1, Action, pull, $2, NULLSTR, NULLSTR); Action = ""; pull = NULL; } | string LP string COLON string RP action { AddToMenu(root, $1, Action, pull, $7, $3, $5); Action = ""; pull = NULL; } ; */ menu_entry : string action { if ($2 == F_SEPARATOR) { if (lastmenuitem) lastmenuitem->separated = 1; } else { lastmenuitem = AddToMenu(root, $1, Action, pull, $2, NULLSTR, NULLSTR); Action = ""; pull = NULL; } } | string LP string COLON string RP action { if ($7 == F_SEPARATOR) { if (lastmenuitem) lastmenuitem->separated = 1; } else { lastmenuitem = AddToMenu(root, $1, Action, pull, $7, $3, $5); Action = ""; pull = NULL; } } ; action : FKEYWORD { $$ = $1; } | FSKEYWORD string { $$ = $1; Action = $2; switch ($1) { case F_MENU: pull = GetRoot ($2, NULLSTR,NULLSTR); pull->prev = root; break; case F_WARPRING: if (!CheckWarpRingArg (Action)) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.warptoring argument \"%s\"\n", Action); $$ = F_NOP; } case F_WARPTOSCREEN: if (!CheckWarpScreenArg (Action)) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.warptoscreen argument \"%s\"\n", Action); $$ = F_NOP; } break; case F_COLORMAP: if (CheckColormapArg (Action)) { $$ = F_COLORMAP; } else { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.colormap argument \"%s\"\n", Action); $$ = F_NOP; } break; } /* end switch */ } ; button : BUTTON number { $$ = $2; if ($2 == 0) yyerror("bad button 0"); if ($2 > MAX_BUTTONS) { $$ = 0; yyerror("button number too large"); } } ; /* djhjr - 10/20/01 */ matcher : string { $$.ltype = LTYPE_ANY_STRING; $$.lval = $1; } | regexp { $$.ltype = LTYPE_ANY_REGEXP; $$.lval = $1; } | MKEYWORD EQUALS string { $$.ltype = $1 | LTYPE_STRING; $$.lval = $3; } | MKEYWORD TILDE regexp { $$.ltype = $1 | LTYPE_REGEXP; $$.lval = $3; } ; string : STRING { $$ = RemoveDQuote($1); } ; /* djhjr - 10/20/01 */ regexp : REGEXP { $$ = RemoveRESlash($1); } ; signed_number : number { $$ = $1; } | PLUS number { $$ = $2; } | MINUS number { $$ = -($2); } ; number : NUMBER { $$ = $1; } ; %% static void yyerror(s) char *s; { twmrc_error_prefix(); fprintf (stderr, "error in input file: %s\n", s ? s : ""); ParseError = 1; } /* do manipulations in place, then copy it - djhjr - 10/20/01 */ static char *RemoveDQuote(str) char *str; { register char *i, *o; register int n, count; int length = 0; char *ptr = ""; for (i = str + 1, o = str; *i && *i != '\"'; o++) { if (*i == '\\') { switch (*++i) { case 'n': *o = '\n'; i++; break; case 'b': *o = '\b'; i++; break; case 'r': *o = '\r'; i++; break; case 't': *o = '\t'; i++; break; case 'f': *o = '\f'; i++; break; case '0': if (*++i == 'x') goto hex; else --i; case '1': case '2': case '3': case '4': case '5': case '6': case '7': n = 0; count = 0; while (*i >= '0' && *i <= '7' && count < 3) { n = (n << 3) + (*i++ - '0'); count++; } *o = n; break; hex: case 'x': n = 0; count = 0; while (i++, count++ < 2) { if (*i >= '0' && *i <= '9') n = (n << 4) + (*i - '0'); else if (*i >= 'a' && *i <= 'f') n = (n << 4) + (*i - 'a') + 10; else if (*i >= 'A' && *i <= 'F') n = (n << 4) + (*i - 'A') + 10; else { length--; /* account for length++ at loop end */ break; } } *o = n; break; case '\n': i++; /* punt */ o--; /* to account for o++ at end of loop */ length--; /* account for length++ at loop end */ break; case '\"': case '\'': case '\\': default: *o = *i++; break; } } else *o = *i++; length++; } *o = '\0'; if (length > 0) { ptr = (char *)malloc(length + 1); memcpy(ptr, str, length); ptr[length] = '\0'; #ifdef DEBUG fprintf(stderr, "RemoveDQuote(): '"); for (n = 0; n < length; n++) fprintf(stderr, "%c", ptr[n]); fprintf(stderr, "'\n", ptr); #endif } return (ptr); } /* djhjr - 10/20/01 */ static char *RemoveRESlash(str) char *str; { char *ptr = ""; #ifndef NO_REGEX_SUPPORT int length = strlen(str); if (length > 2) { ptr = (char *)malloc(length - 1); memcpy(ptr, str + 1, length - 2); ptr[length - 2] = '\0'; #ifdef DEBUG fprintf(stderr, "RemoveRESlash(): '%s'\n", ptr); #endif } #else twmrc_error_prefix(); fprintf(stderr, "no regex support for %s\n", str); ParseError = 1; #endif return (ptr); } /* was in parse.c - djhjr - 9/24/02 */ static int ParseUsePPosition(s) char *s; { XmuCopyISOLatin1Lowered (s, s); if (strcmp(s, "off") == 0) return PPOS_OFF; else if (strcmp(s, "on") == 0) return PPOS_ON; else if (strcmp(s, "non-zero") == 0 || strcmp(s, "nonzero") == 0) return PPOS_NON_ZERO; twmrc_error_prefix(); fprintf(stderr, "ignoring invalid UsePPosition argument \"%s\"\n", s); return -1; } /* djhjr - 10/16/02 */ static int ParseWarpCentered(s) char *s; { XmuCopyISOLatin1Lowered (s, s); if (strcmp(s, "off") == 0) return WARPC_OFF; else if (strcmp(s, "on") == 0) return WARPC_ON; else if (strcmp(s, "titled") == 0) return WARPC_TITLED; else if (strcmp(s, "untitled") == 0) return WARPC_UNTITLED; twmrc_error_prefix(); fprintf(stderr, "ignoring invalid WarpCentered argument \"%s\"\n", s); return -1; } static MenuRoot *GetRoot(name, fore, back) char *name; char *fore, *back; { MenuRoot *tmp; tmp = FindMenuRoot(name); if (tmp == NULL) tmp = NewMenuRoot(name); if (fore) { int save; save = Scr->FirstTime; Scr->FirstTime = TRUE; /* djhjr - 4/22/96 GetColor(COLOR, &tmp->hi_fore, fore); GetColor(COLOR, &tmp->hi_back, back); */ GetColor(COLOR, &tmp->highlight.fore, fore); GetColor(COLOR, &tmp->highlight.back, back); Scr->FirstTime = save; } return tmp; } static void GotButton(butt, func) int butt, func; { int i; for (i = 0; i < NUM_CONTEXTS; i++) { if ((cont & (1 << i)) == 0) continue; Scr->Mouse[butt][i][mods].func = func; if (func == F_MENU) { pull->prev = NULL; Scr->Mouse[butt][i][mods].menu = pull; } else { root = GetRoot(TWM_ROOT, NULLSTR, NULLSTR); Scr->Mouse[butt][i][mods].item = AddToMenu(root,"x",Action, NULLSTR, func, NULLSTR, NULLSTR); } } Action = ""; pull = NULL; cont = 0; mods_used |= mods; mods = 0; } static void GotKey(key, func) char *key; int func; { int i; for (i = 0; i < NUM_CONTEXTS; i++) { if ((cont & (1 << i)) == 0) continue; if (!AddFuncKey(key, i, mods, func, Name, Action)) break; } Action = ""; pull = NULL; cont = 0; mods_used |= mods; mods = 0; } static void GotTitleButton (bitmapname, func, rightside) char *bitmapname; int func; Bool rightside; { if (!CreateTitleButton (bitmapname, func, Action, pull, rightside, True)) { twmrc_error_prefix(); fprintf (stderr, "unable to create %s titlebutton \"%s\"\n", rightside ? "right" : "left", bitmapname); } Action = ""; pull = NULL; } static Bool CheckWarpScreenArg (s) register char *s; { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, WARPSCREEN_NEXT) == 0 || strcmp (s, WARPSCREEN_PREV) == 0 || strcmp (s, WARPSCREEN_BACK) == 0) return True; for (; *s && isascii(*s) && isdigit(*s); s++) ; /* SUPPRESS 530 */ return (*s ? False : True); } static Bool CheckWarpRingArg (s) register char *s; { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, WARPSCREEN_NEXT) == 0 || strcmp (s, WARPSCREEN_PREV) == 0) return True; return False; } static Bool CheckColormapArg (s) register char *s; { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, COLORMAP_NEXT) == 0 || strcmp (s, COLORMAP_PREV) == 0 || strcmp (s, COLORMAP_DEFAULT) == 0) return True; return False; } void twmrc_error_prefix () { fprintf (stderr, "%s: line %d: ", ProgramName, yylineno); } vtwm-5.4.7/twm.h0100664000015300001300000004576710237645271012325 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: twm.h,v 1.74 91/05/31 17:38:30 dave Exp $ * * twm include file * * 28-Oct-87 Thomas E. LaStrange File created * 10-Oct-90 David M. Sternlicht Storeing saved colors on root ***********************************************************************/ #ifndef _TWM_ #define _TWM_ #include #include #include #include #ifdef NEVER /* stay X11R4 compatable; X11R5,6 doesn't seem to mind! */ #include #endif /* * This accomodates systems that simply cannot handle the * duplicate typedef declaration of 'Pixel'. On the other hand, * if your make halts with complaints of an unknown datatype * 'Pixel', add "EXTRA_DEFINES=-DNEED_PIXEL_T" to the make * command. Submitted by Nelson H. F. Beebe */ #include #ifdef NEED_PIXEL_T typedef unsigned long Pixel; #endif #define PIXEL_ALREADY_TYPEDEFED /* for Xmu/Drawing.h */ #include "util.h" #ifndef WithdrawnState #define WithdrawnState 0 #endif #ifdef SIGNALRETURNSINT #define SIGNAL_T int #define SIGNAL_RETURN return 0 #else #define SIGNAL_T void #define SIGNAL_RETURN return #endif typedef SIGNAL_T (*SigProc)(); /* type of function returned by signal() */ #define BW 2 /* border width */ #define BW2 4 /* border width * 2 */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #define NULLSTR ((char *) NULL) #define MAX_BUTTONS 5 /* max mouse buttons supported */ /* info stings defines */ #define INFO_LINES 30 #define INFO_SIZE 200 /* contexts for button presses */ #define C_NO_CONTEXT -1 #define C_WINDOW 0 #define C_TITLE 1 #define C_ICON 2 #define C_ROOT 3 #define C_FRAME 4 #define C_ICONMGR 5 #define C_NAME 6 #define C_IDENTIFY 7 #define C_VIRTUAL 8 #define C_VIRTUAL_WIN 9 #define C_DOOR 10 #define NUM_CONTEXTS 11 #define C_WINDOW_BIT (1 << C_WINDOW) #define C_TITLE_BIT (1 << C_TITLE) #define C_ICON_BIT (1 << C_ICON) #define C_ROOT_BIT (1 << C_ROOT) #define C_FRAME_BIT (1 << C_FRAME) #define C_ICONMGR_BIT (1 << C_ICONMGR) #define C_NAME_BIT (1 << C_NAME) #define C_VIRTUAL_BIT (1 << C_VIRTUAL) #define C_VIRTUAL_WIN_BIT (1 << C_VIRTUAL_WIN) #define C_DOOR_BIT (1 << C_DOOR) #define C_ALL_BITS (C_WINDOW_BIT | C_TITLE_BIT | C_ICON_BIT |\ C_ROOT_BIT | C_FRAME_BIT | C_ICONMGR_BIT |\ C_VIRTUAL_BIT | C_VIRTUAL_WIN_BIT | C_DOOR_BIT) /* modifiers for button presses */ /* added "LockMask" - djhjr - 9/10/03 */ #define MOD_SIZE ((ShiftMask | LockMask | ControlMask | Mod1Mask \ | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask) + 1) /* definitions from MwmUtil.h - submitted by Jonathan Paisley - 11/8/02 */ #define MWM_HINTS_FUNCTIONS (1L << 0) #define MWM_HINTS_DECORATIONS (1L << 1) #define MWM_HINTS_INPUT_MODE (1L << 2) #define MWM_HINTS_STATUS (1L << 3) #define MWM_FUNC_ALL (1L << 0) #define MWM_FUNC_RESIZE (1L << 1) #define MWM_FUNC_MOVE (1L << 2) #define MWM_FUNC_MINIMIZE (1L << 3) #define MWM_FUNC_MAXIMIZE (1L << 4) #define MWM_FUNC_CLOSE (1L << 5) #define MWM_DECOR_ALL (1L << 0) #define MWM_DECOR_BORDER (1L << 1) #define MWM_DECOR_RESIZEH (1L << 2) #define MWM_DECOR_TITLE (1L << 3) #define MWM_DECOR_MENU (1L << 4) #define MWM_DECOR_MINIMIZE (1L << 5) #define MWM_DECOR_MAXIMIZE (1L << 6) #define MWM_INPUT_MODELESS 0 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1 #define MWM_INPUT_SYSTEM_MODAL 2 #define MWM_INPUT_FULL_APPLICATION_MODAL 3 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL #define MWM_TEAROFF_WINDOW (1L<<0) /* submitted by Jonathan Paisley - 11/8/02 */ typedef struct { long flags; long functions; long decorations; long input_mode; long state; } MotifWmHints; #define TITLE_BAR_SPACE 1 /* 2 pixel space bordering chars */ #define TITLE_BAR_FONT_HEIGHT 15 /* max of 15 pixel high chars */ #define TITLE_BAR_HEIGHT (TITLE_BAR_FONT_HEIGHT+(2*TITLE_BAR_SPACE)) /* defines for zooming/unzooming */ #define ZOOM_NONE 0 /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT #define FBF(fix_fore, fix_back, fix_font)\ MyFont_ChangeGC(fix_fore, fix_back, &fix_font) #else #define FBF(fix_fore, fix_back, fix_font)\ Gcv.foreground = fix_fore;\ Gcv.background = fix_back;\ Gcv.font = fix_font.font->fid;\ XChangeGC(dpy, Scr->NormalGC, GCFont|GCForeground|GCBackground,&Gcv) #endif #define FB(fix_fore, fix_back)\ Gcv.foreground = fix_fore;\ Gcv.background = fix_back;\ XChangeGC(dpy, Scr->NormalGC, GCForeground|GCBackground,&Gcv) typedef enum {on, off} ButtonState; typedef struct MyFont { char *name; /* name of the font */ XFontStruct *font; /* font structure */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT XFontSet fontset; #endif int height; /* height of the font */ int y; /* Y coordinate to draw characters */ int ascent; int descent; } MyFont; typedef struct ColorPair { Pixel fore, back; /* djhjr - 4/19/96 */ Pixel shadc, shadd; } ColorPair; typedef struct _TitleButton { struct _TitleButton *next; /* next link in chain */ char *name; /* bitmap name in case of deferal */ /* don't need either anymore - djhjr - 10/30/02 * might not need 'bitmap anymore... djhjr - 4/19/96 * Image *image; * image to display in button * *Pixmap bitmap;* * image to display in button * */ int srcx, srcy; /* from where to start copying */ unsigned int width, height; /* size of pixmap */ int dstx, dsty; /* to where to start copying */ int func; /* function to execute */ char *action; /* optional action arg */ struct MenuRoot *menuroot; /* menu to pop on F_MENU */ Bool rightside; /* t: on right, f: on left */ } TitleButton; typedef struct _TBWindow { Window window; /* which window in this frame */ /* djhjr - 4/19/96 Image *image; * image to display in button * */ TitleButton *info; /* description of this window */ } TBWindow; typedef struct _SqueezeInfo { int justify; /* left, center, right */ int num; /* signed pixel count or numerator */ int denom; /* 0 for pix count or denominator */ } SqueezeInfo; #define J_LEFT 1 #define J_CENTER 2 #define J_RIGHT 3 /* Colormap window entry for each window in WM_COLORMAP_WINDOWS * ICCCM property. */ typedef struct TwmColormap { Colormap c; /* Colormap id */ int state; /* install(ability) state */ unsigned long install_req; /* request number which installed it */ Window w; /* window causing load of color table */ int refcnt; } TwmColormap; #define CM_INSTALLABLE 1 #define CM_INSTALLED 2 #define CM_INSTALL 4 typedef struct ColormapWindow { Window w; /* Window id */ TwmColormap *colormap; /* Colormap for this window */ int visibility; /* Visibility of this window */ int refcnt; } ColormapWindow; typedef struct Colormaps { ColormapWindow **cwins; /* current list of colormap windows */ int number_cwins; /* number of elements in current list */ char *scoreboard; /* conflicts between installable colortables */ } Colormaps; #define ColormapsScoreboardLength(cm) ((cm)->number_cwins * \ ((cm)->number_cwins - 1) / 2) /* for each window that is on the display, one of these structures * is allocated and linked into a list */ typedef struct TwmWindow { struct TwmWindow *next; /* next twm window */ struct TwmWindow *prev; /* previous twm window */ Window w; /* the child window */ Window VirtualDesktopDisplayWindow; /* the representation of this window in the vd display */ int old_bw; /* border width before reparenting */ Window frame; /* the frame window */ Window title_w; /* the title bar window */ Window hilite_w; /* the hilite window */ Pixmap gray; Window icon_w; /* the icon window */ Window icon_bm_w; /* the icon bitmap window */ int frame_x; /* x position of frame */ int frame_y; /* y position of frame */ int virtual_frame_x; /* virtual x position of frame */ int virtual_frame_y; /* virtual y position of frame */ int frame_width; /* width of frame */ int frame_height; /* height of frame */ int frame_bw; /* borderwidth of frame */ /* djhjr - 4/18/96 */ int frame_bw3D; /* 3D borderwidth of frame */ int title_x; int title_y; int virtual_title_x; /* virtual x position of title */ int virtual_title_y; /* virtual y position of title */ int icon_x; /* icon text x coordinate */ int icon_y; /* icon text y coordiante */ int virtual_icon_x; /* virtual x position of icon */ int virtual_icon_y; /* virtual y position of icon */ int icon_w_width; /* width of the icon window */ int icon_w_height; /* height of the icon window */ int icon_width; /* width of the icon bitmap */ int icon_height; /* height of the icon bitmap */ int title_height; /* height of the title bar */ int title_width; /* width of the title bar */ char *full_name; /* full name of the window */ char *name; /* name of the window */ char *icon_name; /* name of the icon */ int name_width; /* width of name text */ int highlightx; /* start of highlight window */ int rightx; /* start of right buttons */ XWindowAttributes attr; /* the child window attributes */ XSizeHints hints; /* normal hints */ XWMHints *wmhints; /* WM hints */ MotifWmHints mwmhints; /* MWM hints - by Jonathan Paisley - 11/8/02 */ Window group; /* group ID */ XClassHint class; struct WList *list; /*********************************************************************** * color definitions per window **********************************************************************/ Pixel icon_border; /* border color */ /* djhjr - 4/19/96 Pixel border; * border color * */ ColorPair border; /* border color */ ColorPair border_tile; ColorPair title; ColorPair iconc; ColorPair virtual; short mapped; /* is the window mapped ? */ short zoomed; /* is the window zoomed? */ short highlight; /* should highlight this window */ short iconmgr; /* this is an icon manager window */ short icon; /* is the window an icon now ? */ /* 5/17/96 - djhjr */ #ifdef ORIGINAL_SHORTS short iconified; /* has the window ever been iconified? */ short icon_on; /* is the icon visible */ short auto_raise; /* should we auto-raise this window ? */ short forced; /* has had an icon forced upon it */ short icon_not_ours; /* icon pixmap or window supplied to us */ short icon_moved; /* user explicitly moved the icon */ short stackmode; /* honor stackmode requests */ short iconify_by_unmapping; /* unmap window to iconify it */ short transient; /* this is a transient window */ short titlehighlight; /* should I highlight the title bar */ short wShaped; /* this window has a bounding shape */ short nailed; /* is this window nailed ? */ short showindesktopdisplay; /* should i show this in the desktop display ? */ /* djhjr - 4/6/98 */ short opaque_move; short opaque_resize; #else struct { unsigned int iconified : 1; unsigned int icon_on : 1; unsigned int auto_raise : 1; unsigned int forced : 1; unsigned int icon_not_ours : 1; unsigned int icon_moved : 1; unsigned int stackmode : 1; unsigned int iconify_by_unmapping : 1; unsigned int transient : 1; unsigned int titlehighlight : 1; unsigned int wShaped : 1; unsigned int nailed : 1; unsigned int showindesktopdisplay : 1; /* djhjr - 4/6/98 */ unsigned int opaque_move : 1; unsigned int opaque_resize : 1; } twmflags; #define iconified twmflags.iconified #define icon_on twmflags.icon_on #define auto_raise twmflags.auto_raise #define forced twmflags.forced #define icon_not_ours twmflags.icon_not_ours #define icon_moved twmflags.icon_moved #define stackmode twmflags.stackmode #define iconify_by_unmapping twmflags.iconify_by_unmapping #define transient twmflags.transient #define titlehighlight twmflags.titlehighlight #define wShaped twmflags.wShaped #define nailed twmflags.nailed #define showindesktopdisplay twmflags.showindesktopdisplay /* djhjr - 4/6/98 */ #define opaque_move twmflags.opaque_move #define opaque_resize twmflags.opaque_resize #endif Window transientfor; /* window contained in XA_XM_TRANSIENT_FOR */ struct IconMgr *iconmgrp; /* pointer to it if this is an icon manager */ int save_frame_x; /* x position of frame */ int save_frame_y; /* y position of frame */ int save_frame_width; /* width of frame */ int save_frame_height; /* height of frame */ unsigned long protocols; /* which protocols this window handles */ Colormaps cmaps; /* colormaps for this application */ TBWindow *titlebuttons; SqueezeInfo *squeeze_info; /* should the title be squeezed? */ struct { struct TwmWindow *next, *prev; #ifdef ORIGINAL_WARPRINGCOORDINATES /* djhjr - 5/11/98 */ Bool cursor_valid; int curs_x, curs_y; #endif } ring; } TwmWindow; #define DoesWmTakeFocus (1L << 0) #define DoesWmSaveYourself (1L << 1) #define DoesWmDeleteWindow (1L << 2) #define TBPM_DOT ":dot" /* name of titlebar pixmap for dot */ #define TBPM_ICONIFY ":iconify" /* same image as dot */ #define TBPM_RESIZE ":resize" /* name of titlebar pixmap for resize button */ #define TBPM_XLOGO ":xlogo" /* name of titlebar pixmap for xlogo */ #define TBPM_DELETE ":delete" /* same image as xlogo */ #define TBPM_MENU ":menu" /* name of titlebar pixmap for menus */ #define TBPM_QUESTION ":question" /* name of unknown titlebar pixmap */ /* djhjr - 6/4/00 */ #define TBPM_RARROW ":rarrow" /* name of right arrow pixmap */ #define TBPM_DARROW ":darrow" /* name of down arrow pixmap */ /* djhjr - 4/18/96 */ #define TBPM_3DDOT ":xpm:dot" /* name of titlebar pixmap for dot */ #define TBPM_3DRESIZE ":xpm:resize" /* name of titlebar pixmap for resize button */ #define TBPM_3DMENU ":xpm:menu" /* name of titlebar pixmap for menus */ #define TBPM_3DZOOM ":xpm:zoom" #define TBPM_3DBAR ":xpm:bar" /* djhjr - 6/4/00 */ #define TBPM_3DRARROW ":xpm:rarrow" /* name of right arrow pixmap */ #define TBPM_3DDARROW ":xpm:darrow" /* name of down arrow pixmap */ /* djhjr - 10/25/02 */ #define TBPM_3DRAISEDBOX ":xpm:raisedbox" /* name of raised box highlight pixmap */ #define TBPM_3DSUNKENBOX ":xpm:sunkenbox" /* name of sunken box highlight pixmap */ #define TBPM_3DRAISEDLINES ":xpm:raisedlines" /* name of raised lines highlight pixmap */ #define TBPM_3DSUNKENLINES ":xpm:sunkenlines" /* name of sunken lines highlight pixmap */ /* djhjr - 10/30/02 */ #define TBPM_3DBOX ":xpm:box" /* name of box pixmap */ #define TBPM_3DLINES ":xpm:lines" /* name of lines pixmap */ #ifdef NEVER /* stay X11R4 compatable; X11R5,6 doesn't seem to mind! */ #include #endif #ifndef X_NOT_STDC_ENV #include #else extern char *malloc(), *calloc(), *realloc(), *getenv(); extern void free(); #endif extern void Reborder(); /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT extern SIGNAL_T PlaySoundDone(); void Done(); #else extern SIGNAL_T Done(); #endif void ComputeCommonTitleOffsets(); void ComputeWindowTitleOffsets(), ComputeTitleLocation(); extern char *ProgramName; extern Display *dpy; extern Window ResizeWindow; /* the window we are resizing */ extern int HasShape; /* this server supports Shape extension */ extern int PreviousScreen; extern Cursor UpperLeftCursor; extern Cursor RightButt; extern Cursor MiddleButt; extern Cursor LeftButt; extern XClassHint NoClass; extern XContext TwmContext; extern XContext MenuContext; extern XContext IconManagerContext; extern XContext VirtualContext; extern XContext ScreenContext; extern XContext ColormapContext; extern XContext DoorContext; extern char *Home; extern int HomeLen; extern int ParseError; extern int HandlingEvents; extern Window JunkRoot; extern Window JunkChild; extern int JunkX; extern int JunkY; extern unsigned int JunkWidth, JunkHeight, JunkBW, JunkDepth, JunkMask; extern XGCValues Gcv; extern int InfoLines; extern char Info[][INFO_SIZE]; extern int Argc; extern char **Argv; extern char **Environ; extern void NewFontCursor(); extern Pixmap CreateMenuIcon(); extern void RestoreWithdrawnLocation(); extern void CreateFonts(); /* djhjr - 4/18/96 */ extern Pixmap Create3DMenuIcon(); extern Pixmap Create3DIconManagerIcon(); extern void Draw3DBorder(); extern Bool ErrorOccurred; extern XErrorEvent LastErrorEvent; #define ResetError() (ErrorOccurred = False) extern Bool RestartPreviousState; extern Bool GetWMState(); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT extern Bool use_fontset; #endif extern Atom _XA_MIT_PRIORITY_COLORS; extern Atom _XA_WM_CHANGE_STATE; extern Atom _XA_WM_STATE; extern Atom _XA_WM_COLORMAP_WINDOWS; extern Atom _XA_WM_PROTOCOLS; extern Atom _XA_WM_TAKE_FOCUS; extern Atom _XA_WM_SAVE_YOURSELF; extern Atom _XA_WM_DELETE_WINDOW; /* djhjr - 7/31/98 */ extern Atom _XA_TWM_RESTART; #endif /* _TWM_ */ vtwm-5.4.7/util.c0100664000015300001300000025724210260160577012454 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /* Portions Copyright 1989, 1998 The Open Group Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of The Open Group shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ /*********************************************************************** * * $XConsortium: util.c,v 1.47 91/07/14 13:40:37 rws Exp $ * * utility routines for twm * * 28-Oct-87 Thomas E. LaStrange File created * ***********************************************************************/ #include "twm.h" #include "util.h" #include "gram.h" #include "screen.h" #include "list.h" #include #include #include #include #ifndef NO_XPM_SUPPORT #include #endif #include #include /* see Zoom() - djhjr - 10/11/01 */ #ifdef NEED_SELECT_H #include #else #include #include #endif #ifndef ZOOMSLEEP #define ZOOMSLEEP 50000 /* arbitrary, but pleasing, msec value */ #endif #define strdup Strdup /* avoid conflict with system header files */ extern char *strdup(char *); /* * All instances of Scr->TitleBevelWidth and Scr->BorderBevelWidth * were a hard value of 2 - djhjr - 4/29/98 */ /* djhjr - 4/18/96 10/29/02 */ static void Draw3DMenuImage(); static void Draw3DDotImage(); static void Draw3DResizeImage(); static void Draw3DZoomImage(); static void Draw3DBarImage(); /* djhjr - 6/4/00 10/29/02 */ static void Draw3DRArrowImage(); static void Draw3DDArrowImage(); /* djhjr - 1/13/98 10/20/02 */ void setBorderGC(); #ifdef USE_ORIGINAL_CORNERS void Draw3DCorner(); #else GC setBevelGC(); void Draw3DBevel(); void Draw3DNoBevel(); #endif /* djhjr - 4/19/96 */ static GC rootGC = (GC) 0; /* for trying to clean up BeNiceToColormap - djhjr - 10/20/02 */ static int borderdashoffset; int HotX, HotY; #define questionmark_width 8 #define questionmark_height 8 static unsigned char questionmark_bits[] = { 0x38, 0x7c, 0x64, 0x30, 0x18, 0x00, 0x18, 0x18}; /*********************************************************************** * * Procedure: * MoveOutline - move a window outline * * Inputs: * root - the window we are outlining * x - upper left x coordinate * y - upper left y coordinate * width - the width of the rectangle * height - the height of the rectangle * bw - the border width of the frame * th - title height * *********************************************************************** */ /* ARGSUSED */ void MoveOutline(root, x, y, width, height, bw, th) Window root; int x, y, width, height, bw, th; { static int lastx = 0; static int lasty = 0; static int lastWidth = 0; static int lastHeight = 0; static int lastBW = 0; static int lastTH = 0; int xl, xr, yt, yb, xinnerl, xinnerr, yinnert, yinnerb; int xthird, ythird; XSegment outline[18]; register XSegment *r; if (x == lastx && y == lasty && width == lastWidth && height == lastHeight && lastBW == bw && th == lastTH) return; r = outline; #ifdef ORIGINAL_DRAWIT #define DRAWIT() \ if (lastWidth || lastHeight) \ { \ xl = lastx; \ xr = lastx + lastWidth - 1; \ yt = lasty; \ yb = lasty + lastHeight - 1; \ xinnerl = xl + lastBW; \ xinnerr = xr - lastBW; \ yinnert = yt + lastTH + lastBW; \ yinnerb = yb - lastBW; \ xthird = (xinnerr - xinnerl) / 3; \ ythird = (yinnerb - yinnert) / 3; \ \ /* frame outline */ \ r->x1 = xl; \ r->y1 = yt; \ r->x2 = xr; \ r->y2 = yt; \ r++; \ \ r->x1 = xl; \ r->y1 = yb; \ r->x2 = xr; \ r->y2 = yb; \ r++; \ \ r->x1 = xl; \ r->y1 = yt; \ r->x2 = xl; \ r->y2 = yb; \ r++; \ \ r->x1 = xr; \ r->y1 = yt; \ r->x2 = xr; \ r->y2 = yb; \ r++; \ \ /* left vertical */ \ r->x1 = xinnerl + xthird; \ r->y1 = yinnert; \ r->x2 = r->x1; \ r->y2 = yinnerb; \ r++; \ \ /* right vertical */ \ r->x1 = xinnerl + (2 * xthird); \ r->y1 = yinnert; \ r->x2 = r->x1; \ r->y2 = yinnerb; \ r++; \ \ /* top horizontal */ \ r->x1 = xinnerl; \ r->y1 = yinnert + ythird; \ r->x2 = xinnerr; \ r->y2 = r->y1; \ r++; \ \ /* bottom horizontal */ \ r->x1 = xinnerl; \ r->y1 = yinnert + (2 * ythird); \ r->x2 = xinnerr; \ r->y2 = r->y1; \ r++; \ \ /* title bar */ \ if (lastTH != 0) { \ r->x1 = xl; \ r->y1 = yt + lastTH; \ r->x2 = xr; \ r->y2 = r->y1; \ r++; \ } \ } /* undraw the old one, if any */ DRAWIT (); lastx = x; lasty = y; lastWidth = width; lastHeight = height; lastBW = bw; lastTH = th; /* draw the new one, if any */ DRAWIT (); #else #define DRAWIT() \ if (lastWidth || lastHeight) \ { \ xl = lastx; \ xr = lastx + lastWidth - 1; \ yt = lasty; \ yb = lasty + lastHeight - 1; \ xinnerl = xl + lastBW; \ xinnerr = xr - lastBW; \ yinnert = yt + lastTH + lastBW; \ yinnerb = yb - lastBW; \ xthird = (xinnerr - xinnerl) / 3; \ ythird = (yinnerb - yinnert) / 3; \ \ /* frame outline */ \ r->x1 = xl; \ r->y1 = yt; \ r->x2 = xr; \ r->y2 = yt; \ r++; \ \ r->x1 = xl; \ r->y1 = yb; \ r->x2 = xr; \ r->y2 = yb; \ r++; \ \ r->x1 = xl; \ r->y1 = yt; \ r->x2 = xl; \ r->y2 = yb; \ r++; \ \ r->x1 = xr; \ r->y1 = yt; \ r->x2 = xr; \ r->y2 = yb; \ r++; \ \ /* top-left to bottom-right */ \ r->x1 = xinnerl; \ r->y1 = yinnert; \ r->x2 = xinnerr; \ r->y2 = yinnerb; \ r++; \ \ /* bottom-left to top-right */ \ r->x1 = xinnerl; \ r->y1 = yinnerb; \ r->x2 = xinnerr; \ r->y2 = yinnert; \ r++; \ \ /* title bar */ \ if (lastTH != 0) { \ r->x1 = xl; \ r->y1 = yt + lastTH; \ r->x2 = xr; \ r->y2 = r->y1; \ r++; \ } \ } /* undraw the old one, if any */ DRAWIT (); lastx = x; lasty = y; lastWidth = width; lastHeight = height; lastBW = bw; lastTH = th; /* draw the new one, if any */ DRAWIT (); #endif #undef DRAWIT if (r != outline) { XDrawSegments(dpy, root, Scr->DrawGC, outline, r - outline); } } /*********************************************************************** * * Procedure: * Zoom - zoom in or out of an icon * * Inputs: * wf - window to zoom from * ipf - icon manager of window to zoom from * wt - window to zoom to * ipt - icon manager of window to zoom to * * Patched to make sure a "None" window generates coordinates *INSIDE* * the screen. -- DSE * * Added args to icon managers so zooms from and to the window's * entry use that icon manager's coordinates - djhjr - 10/11/01 * *********************************************************************** */ void Zoom(wf, ipf, wt, ipt) Window wf, wt; IconMgr *ipf, *ipt; { int fx, fy, tx, ty; /* from, to */ unsigned int fw, fh, tw, th; /* from, to */ long dx, dy, dw, dh; long z; int j; /* djhjr - 10/11/01 */ static struct timeval timeoutval = {0, ZOOMSLEEP}; struct timeval timeout; void draw_rect(); /* DSE */ if (!Scr->DoZoom || Scr->ZoomCount < 1) return; #if (0) if (wf == None || wt == None) return; XGetGeometry (dpy, wf, &JunkRoot, &fx, &fy, &fw, &fh, &JunkBW, &JunkDepth); XGetGeometry (dpy, wt, &JunkRoot, &tx, &ty, &tw, &th, &JunkBW, &JunkDepth); #else /* if (wf == None && wt == None) return; */ if ( wt == None) { if (Scr->LessRandomZoomZoom) /* DSE */ { int temp,x1,y1,x2,y2; x1 = ( (int)rand() % (Scr->MyDisplayWidth >> 3) ); x2 = Scr->MyDisplayWidth - ( (int)rand() % (Scr->MyDisplayWidth >> 3) ); y1 = ( (int)rand() % (Scr->MyDisplayHeight >> 3) ); y2 = Scr->MyDisplayHeight - ( (int)rand() % (Scr->MyDisplayHeight >> 3) ); if(x1>x2){temp=x1;x1=x2;x2=temp;} if(y1>y2){temp=y1;y1=y2;y2=temp;} tx = x1; ty = y1; tw = x2 - x1; th = y2 - y1; } else { /* Zoom from nowhere, RFBZOOM */ tx = ( (int)rand() % Scr->MyDisplayWidth ); tw = ( (int)rand() % Scr->MyDisplayWidth ); ty = ( (int)rand() % Scr->MyDisplayWidth ); th = ( (int)rand() % Scr->MyDisplayWidth ); } } else { /* Normal. */ XGetGeometry (dpy, wt, &JunkRoot, &tx, &ty, &tw, &th, &JunkBW, &JunkDepth); if (ipt) { tx += (ipt->twm_win->frame_x + ipt->twm_win->title_x); ty += (ipt->twm_win->frame_y + ipt->twm_win->title_y + ipt->twm_win->title_height); } } if ( wf == None ) { if (Scr->LessRandomZoomZoom) /* DSE */ { /* zoom from somewhere on the screen, DSE */ int temp,x1,y1,x2,y2; do { x1 = ( (int)rand() % Scr->MyDisplayWidth ); x2 = ( (int)rand() % Scr->MyDisplayWidth ); y1 = ( (int)rand() % Scr->MyDisplayHeight ); y2 = ( (int)rand() % Scr->MyDisplayHeight ); if(x1>x2){temp=x1;x1=x2;x2=temp;} if(y1>y2){temp=y1;y1=y2;y2=temp;} fx = x1; fy = y1; fw = x2 - x1; fh = y2 - y1; } while ( fw > (Scr->MyDisplayWidth >> 2) || fh > (Scr->MyDisplayHeight >> 2) ); } else { /* Zoom from nowhere, RFB */ /* fx = ( rand() & 1 ) * Scr->MyDisplayWidth; */ fx = ( (int)rand() % Scr->MyDisplayWidth ); fw = ( (int)rand() % Scr->MyDisplayWidth ); fy = ( (int)rand() % Scr->MyDisplayWidth ); fh = ( (int)rand() % Scr->MyDisplayWidth ); } } else { /* Normal. */ XGetGeometry (dpy, wf, &JunkRoot, &fx, &fy, &fw, &fh, &JunkBW, &JunkDepth); if (ipf) { fx += (ipf->twm_win->frame_x + ipf->twm_win->title_x); fy += (ipf->twm_win->frame_y + ipf->twm_win->title_y + ipf->twm_win->title_height); } } #endif dx = ((long) (tx - fx)); /* going from -> to */ dy = ((long) (ty - fy)); /* going from -> to */ dw = ((long) (tw - fw)); /* going from -> to */ dh = ((long) (th - fh)); /* going from -> to */ z = (long) (Scr->ZoomCount + 1); for (j = 0; j < 2; j++) { long i; draw_rect (dpy, Scr->Root, Scr->DrawGC, fx, fy, fw, fh); /* DSE */ for (i = 1; i < z; i++) { int x = fx + (int) ((dx * i) / z); int y = fy + (int) ((dy * i) / z); unsigned width = (unsigned) (((long) fw) + (dw * i) / z); unsigned height = (unsigned) (((long) fh) + (dh * i) / z); draw_rect (dpy, Scr->Root, Scr->DrawGC, x, y, width, height); /* DSE */ } draw_rect (dpy, Scr->Root, Scr->DrawGC, tx, ty, tw, th); /* DSE */ /* djhjr - 10/11/01 */ timeout = timeoutval; select(0, 0, 0, 0, &timeout); } } /* * Use any routine to draw your own rectangles here. -- DSE */ void draw_rect (display,drawable,gc,x,y,width,height) /* DSE */ Display *display; Drawable drawable; GC gc; int x,y; unsigned int width,height; { void draw_scaled_rect(); draw_scaled_rect (display,drawable,gc,x,y,width,height, 20,20); if (Scr->PrettyZoom) { draw_scaled_rect (display,drawable,gc,x,y,width,height, 18,20); draw_scaled_rect (display,drawable,gc,x,y,width,height, 16,20); } } void draw_scaled_rect (display,drawable,gc,x,y, width,height,scale,over) /* DSE */ Display *display; Drawable drawable; GC gc; int x,y; unsigned int width,height; unsigned int scale,over; { XDrawRectangle(dpy,drawable,gc, x + ( over + width * (over - scale) ) / (2 * over), y + ( over + width * (over - scale) ) / (2 * over), ( (over / 2) + width * scale ) / over, ( (over / 2) + height * scale ) / over ); } /*********************************************************************** * * Procedure: * ExpandFilename - expand the tilde character to HOME * if it is the first character of the filename * * Returned Value: * a pointer to the new name * * Inputs: * name - the filename to expand * *********************************************************************** */ char * ExpandFilename(name) char *name; { char *newname; if (name[0] != '~') return name; newname = (char *) malloc (HomeLen + strlen(name) + 2); if (!newname) { fprintf (stderr, "%s: unable to allocate %d bytes to expand filename %s/%s\n", ProgramName, HomeLen + strlen(name) + 2, Home, &name[1]); } else { (void) sprintf (newname, "%s/%s", Home, &name[1]); } return newname; } /*********************************************************************** * * Procedure: * GetUnknownIcon - read in the bitmap file for the unknown icon * * Inputs: * name - the filename to read * *********************************************************************** */ void GetUnknownIcon(name) char *name; { /* djhjr - 8/13/98 */ #ifdef ORIGINAL_PIXMAPS if ((Scr->UnknownPm = GetBitmap(name)) != None) { XGetGeometry(dpy, Scr->UnknownPm, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&Scr->UnknownWidth, (unsigned int *)&Scr->UnknownHeight, &JunkBW, &JunkDepth); } #else Scr->unknownName = name; #endif } /*********************************************************************** * * Procedure: * FindBitmap - read in a bitmap file and return size * * Returned Value: * the pixmap associated with the bitmap * widthp - pointer to width of bitmap * heightp - pointer to height of bitmap * * Inputs: * name - the filename to read * *********************************************************************** */ Pixmap FindBitmap (name, widthp, heightp) char *name; unsigned int *widthp, *heightp; { char *bigname; Pixmap pm; if (!name) return None; /* * Generate a full pathname if any special prefix characters (such as ~) * are used. If the bigname is different from name, bigname will need to * be freed. */ bigname = ExpandFilename (name); if (!bigname) return None; /* * look along bitmapFilePath resource same as toolkit clients */ pm = XmuLocateBitmapFile (ScreenOfDisplay(dpy, Scr->screen), bigname, NULL, 0, (int *)widthp, (int *)heightp, &HotX, &HotY); if (pm == None && Scr->IconDirectory && bigname[0] != '/') { if (bigname != name) free (bigname); /* * Attempt to find icon in old IconDirectory (now obsolete) */ bigname = (char *) malloc (strlen(name) + strlen(Scr->IconDirectory) + 2); if (!bigname) { fprintf (stderr, "%s: unable to allocate memory for \"%s/%s\"\n", ProgramName, Scr->IconDirectory, name); return None; } (void) sprintf (bigname, "%s/%s", Scr->IconDirectory, name); if (XReadBitmapFile (dpy, Scr->Root, bigname, widthp, heightp, &pm, &HotX, &HotY) != BitmapSuccess) { pm = None; } } if (bigname != name) free (bigname); #ifdef DEBUG if (pm == None) { fprintf (stderr, "%s: unable to find bitmap \"%s\"\n", ProgramName, name); } #endif return pm; } Pixmap GetBitmap (name) char *name; { return FindBitmap (name, &JunkWidth, &JunkHeight); } #ifndef NO_XPM_SUPPORT /* * Submitted by Jason Gloudon * added color argument - djhjr - 9/28/99 */ Image *FindImage (name, color) char *name; Pixel color; { char *bigname; Pixmap pixmap,mask; Image *newimage = None; /* added intialization - djhjr - 3/21/98 */ XpmAttributes attributes; XpmColorSymbol xpmcolor[1]; /* djhjr - 9/28/99 */ int ErrorStatus; /* * Generate a full pathname if any special prefix characters (such as ~) * are used. If the bigname is different from name, bigname will need to * be freed. */ bigname = ExpandFilename (name); if (!bigname) return None; /* was 'XpmReturnAllocPixels' - Submitted by Takeharu Kato */ attributes.valuemask = XpmReturnPixels; /* djhjr - 5/10/99 */ attributes.valuemask |= XpmCloseness; attributes.closeness = 32768; /* djhjr - 9/28/99 */ if (color) { xpmcolor[0].name = NULL; xpmcolor[0].value = "none"; xpmcolor[0].pixel = color; attributes.colorsymbols = xpmcolor; attributes.numsymbols = 1; attributes.valuemask |= XpmColorSymbols; } /* * By default, the XPM library assumes screen 0, so we have * to pass in the real values. Submitted by Caveh Frank Jalali */ attributes.valuemask |= XpmVisual | XpmColormap | XpmDepth; attributes.visual = Scr->d_visual; attributes.colormap = XDefaultColormap(dpy, Scr->screen); attributes.depth = Scr->d_depth; if( (ErrorStatus = XpmReadFileToPixmap(dpy, Scr->Root, bigname, &pixmap, &mask, &attributes)) != XpmSuccess){ pixmap = None; } /* * Do for pixmaps what XmuLocateBitmapFile() does for bitmaps, * because, apparently, XmuLocatePixmapFile() doesn't! * * djhjr - 12/26/98 */ if (pixmap == None && Scr->BitmapFilePath && bigname[0] != '/') { char *path = Scr->BitmapFilePath, *term; do { if ((term = strchr(path, ':'))) *term = 0; if (bigname != name) free(bigname); if (!(bigname = (char *)malloc(strlen(name) + strlen(path) + 2))) fprintf(stderr, "%s: unable to allocate memory for \"%s/%s\"\n", ProgramName, path, name); else { (void)sprintf(bigname, "%s/%s", path, name); #ifdef NEVER /* once, at the top, is enough? - djhjr - 12/26/98 */ /* was 'XpmReturnAllocPixels' - Submitted by Takeharu Kato */ attributes.valuemask = XpmReturnPixels; /* djhjr - 5/10/99 */ attributes.valuemask |= XpmCloseness; attributes.closeness = 32768; /* djhjr - 9/28/99 */ if (color) { xpmcolor[0].name = NULL; xpmcolor[0].value = "none"; xpmcolor[0].pixel = color; attributes.colorsymbols = xpmcolor; attributes.numsymbols = 1; attributes.valuemask |= XpmColorSymbols; } /* * By default, the XPM library assumes screen 0, so we have * to pass in the real values. Submitted by Caveh Frank Jalali */ attributes.valuemask |= XpmVisual | XpmColormap | XpmDepth; attributes.visual = Scr->d_visual; attributes.colormap = XDefaultColormap(dpy, Scr->screen); attributes.depth = Scr->d_depth; #endif /* NEVER */ ErrorStatus = XpmReadFileToPixmap(dpy, Scr->Root, bigname, &pixmap, &mask, &attributes); } if (term) { *term = ':'; path = term + 1; } else path = NULL; if (ErrorStatus != XpmSuccess) pixmap = None; else break; } while (path); } if (pixmap == None && Scr->IconDirectory && bigname[0] != '/') { if (bigname != name) free (bigname); /* * Attempt to find icon pixmap in old IconDirectory (now obsolete) */ bigname = (char *) malloc (strlen(name) + strlen(Scr->IconDirectory) + 2); if (!bigname) { fprintf (stderr, "%s: unable to allocate memory for \"%s/%s\"\n", ProgramName, Scr->IconDirectory, name); return None; } (void) sprintf (bigname, "%s/%s", Scr->IconDirectory, name); #ifdef NEVER /* once, at the top, is enough? - djhjr - 12/26/98 */ /* was 'XpmReturnAllocPixels' - Submitted by Takeharu Kato */ attributes.valuemask = XpmReturnPixels; /* djhjr - 5/10/99 */ attributes.valuemask |= XpmCloseness; attributes.closeness = 32768; /* * By default, the XPM library assumes screen 0, so we have * to pass in the real values. Submitted by Caveh Frank Jalali */ attributes.valuemask |= XpmVisual | XpmColormap | XpmDepth; attributes.visual = Scr->d_visual; attributes.colormap = XDefaultColormap(dpy, Scr->screen); attributes.depth = Scr->d_depth; #endif /* NEVER */ ErrorStatus = XpmReadFileToPixmap(dpy, Scr->Root, bigname, &pixmap, &mask, &attributes); } if(ErrorStatus == XpmSuccess){ newimage = (Image *)malloc(sizeof(Image)); newimage->pixmap = pixmap; newimage->mask = mask; newimage->height = attributes.height; newimage->width = attributes.width; } else { fprintf (stderr, "%s: unable to find pixmap \"%s\"\n", ProgramName, name); } if (bigname != name) free (bigname); return newimage; } #endif /* NO_XPM_SUPPORT */ void InsertRGBColormap (a, maps, nmaps, replace) Atom a; XStandardColormap *maps; int nmaps; Bool replace; { StdCmap *sc = NULL; if (replace) { /* locate existing entry */ for (sc = Scr->StdCmapInfo.head; sc; sc = sc->next) { if (sc->atom == a) break; } } if (!sc) { /* no existing, allocate new */ sc = (StdCmap *) malloc (sizeof (StdCmap)); if (!sc) { fprintf (stderr, "%s: unable to allocate %d bytes for StdCmap\n", ProgramName, sizeof (StdCmap)); return; } } if (replace) { /* just update contents */ if (sc->maps) XFree ((char *) maps); if (sc == Scr->StdCmapInfo.mru) Scr->StdCmapInfo.mru = NULL; } else { /* else appending */ sc->next = NULL; sc->atom = a; if (Scr->StdCmapInfo.tail) { Scr->StdCmapInfo.tail->next = sc; } else { Scr->StdCmapInfo.head = sc; } Scr->StdCmapInfo.tail = sc; } sc->nmaps = nmaps; sc->maps = maps; return; } /* * SetPixmapsPixmap - load the Image structure for the Pixmaps resource images * * djhjr - 5/17/98 */ Image *SetPixmapsPixmap(filename) char *filename; { Pixmap bm; Image *image = NULL; bm = FindBitmap(filename, &JunkWidth, &JunkHeight); if (bm != None) { image = (Image *)malloc(sizeof(Image)); image->width = JunkWidth; image->height = JunkHeight; image->mask = None; image->pixmap = bm; } #ifndef NO_XPM_SUPPORT else /* Try to find a pixmap file with this name */ /* added color argument - djhjr - 9/28/99 */ image = FindImage(filename, 0); #endif return image; } /* * SetPixmapsBackground - set the background for the Pixmaps resource images * * djhjr - 5/23/98 * used to receive (int *)numcolors and return (Image *)image - djhjr - 9/2/98 */ #ifndef NO_XPM_SUPPORT int SetPixmapsBackground(image, drawable, color) Image *image; Drawable drawable; Pixel color; { XpmImage xpmimage; XpmAttributes xpmattr; XpmColorSymbol xpmcolor[1]; unsigned int i; /* djhjr - 5/10/99 */ xpmattr.valuemask = XpmCloseness; xpmattr.closeness = 32768; /* * By default, the XPM library assumes screen 0, so we have * to pass in the real values. Submitted by Caveh Frank Jalali */ xpmattr.valuemask |= XpmVisual | XpmColormap | XpmDepth; xpmattr.visual = Scr->d_visual; xpmattr.colormap = XDefaultColormap(dpy, Scr->screen); xpmattr.depth = Scr->d_depth; if (XpmCreateXpmImageFromPixmap(dpy, image->pixmap, image->mask, &xpmimage, &xpmattr) != XpmSuccess) return (0); for (i = 0; i < xpmimage.ncolors; i++) if (!strcmp(xpmimage.colorTable[i].c_color, "None")) break; if (i < xpmimage.ncolors) { /* djhjr - 9/2/98 */ XFreePixmap(dpy, image->pixmap); XFreePixmap(dpy, image->mask); xpmcolor[0].name = NULL; xpmcolor[0].value = "none"; xpmcolor[0].pixel = color; #ifdef NEVER /* once, at the top, is enough? - djhjr - 2/13/99 */ xpmattr.colorsymbols = xpmcolor; xpmattr.numsymbols = 1; xpmattr.valuemask = XpmColorSymbols; /* djhjr - 5/10/99 */ xpmattr.valuemask |= XpmCloseness; xpmattr.closeness = 32768; /* * By default, the XPM library assumes screen 0, so we have * to pass in the real values. Submitted by Caveh Frank Jalali */ xpmattr.valuemask |= XpmVisual | XpmColormap | XpmDepth; xpmattr.visual = Scr->d_visual; xpmattr.colormap = XDefaultColormap(dpy, Scr->screen); xpmattr.depth = Scr->d_depth; #else xpmattr.colorsymbols = xpmcolor; xpmattr.numsymbols = 1; xpmattr.valuemask |= XpmColorSymbols; #endif /* NEVER */ XpmCreatePixmapFromXpmImage(dpy, drawable, &xpmimage, &image->pixmap, &image->mask, &xpmattr); } i = xpmimage.ncolors; XpmFreeXpmImage(&xpmimage); return (i); } #endif /* NO_XPM_SUPPORT */ void RemoveRGBColormap (a) Atom a; { StdCmap *sc, *prev; prev = NULL; for (sc = Scr->StdCmapInfo.head; sc; sc = sc->next) { if (sc->atom == a) break; prev = sc; } if (sc) { /* found one */ if (sc->maps) XFree ((char *) sc->maps); if (prev) prev->next = sc->next; if (Scr->StdCmapInfo.head == sc) Scr->StdCmapInfo.head = sc->next; if (Scr->StdCmapInfo.tail == sc) Scr->StdCmapInfo.tail = prev; if (Scr->StdCmapInfo.mru == sc) Scr->StdCmapInfo.mru = NULL; } return; } void LocateStandardColormaps() { Atom *atoms; int natoms; int i; atoms = XListProperties (dpy, Scr->Root, &natoms); for (i = 0; i < natoms; i++) { XStandardColormap *maps = NULL; int nmaps; if (XGetRGBColormaps (dpy, Scr->Root, &maps, &nmaps, atoms[i])) { /* if got one, then append to current list */ InsertRGBColormap (atoms[i], maps, nmaps, False); } } if (atoms) XFree ((char *) atoms); return; } void GetColor(kind, what, name) int kind; Pixel *what; char *name; { XColor color, junkcolor; Status stat = 0; Colormap cmap = Scr->TwmRoot.cmaps.cwins[0]->colormap->c; #ifndef TOM if (!Scr->FirstTime) return; #endif if (Scr->Monochrome != kind) return; #if ( XlibSpecificationRelease < 5 ) /* eyckmans@imec.be */ if ( ! ( ( name[0] == '#') ? ( (stat = XParseColor (dpy, cmap, name, &color)) && XAllocColor (dpy, cmap, &color)) : XAllocNamedColor (dpy, cmap, name, &color, &junkcolor))) #else if (!XAllocNamedColor (dpy, cmap, name, &color, &junkcolor)) #endif { /* if we could not allocate the color, let's see if this is a * standard colormap */ XStandardColormap *stdcmap = NULL; /* parse the named color */ if (name[0] != '#') stat = XParseColor (dpy, cmap, name, &color); if (!stat) { fprintf (stderr, "%s: invalid color name \"%s\"\n", ProgramName, name); return; } /* * look through the list of standard colormaps (check cache first) */ if (Scr->StdCmapInfo.mru && Scr->StdCmapInfo.mru->maps && (Scr->StdCmapInfo.mru->maps[Scr->StdCmapInfo.mruindex].colormap == cmap)) { stdcmap = &(Scr->StdCmapInfo.mru->maps[Scr->StdCmapInfo.mruindex]); } else { StdCmap *sc; for (sc = Scr->StdCmapInfo.head; sc; sc = sc->next) { int i; for (i = 0; i < sc->nmaps; i++) { if (sc->maps[i].colormap == cmap) { Scr->StdCmapInfo.mru = sc; Scr->StdCmapInfo.mruindex = i; stdcmap = &(sc->maps[i]); goto gotit; } } } } gotit: if (stdcmap) { color.pixel = (stdcmap->base_pixel + ((Pixel)(((float)color.red / 65535.0) * stdcmap->red_max + 0.5) * stdcmap->red_mult) + ((Pixel)(((float)color.green /65535.0) * stdcmap->green_max + 0.5) * stdcmap->green_mult) + ((Pixel)(((float)color.blue / 65535.0) * stdcmap->blue_max + 0.5) * stdcmap->blue_mult)); } else { fprintf (stderr, "%s: unable to allocate color \"%s\"\n", ProgramName, name); return; } } *what = color.pixel; } void GetShadeColors (cp) ColorPair *cp; { XColor xcol; Colormap cmap = Scr->TwmRoot.cmaps.cwins[0]->colormap->c; int save; float clearfactor; float darkfactor; char clearcol [32], darkcol [32]; clearfactor = (float) Scr->ClearBevelContrast / 100.0; darkfactor = (100.0 - (float) Scr->DarkBevelContrast) / 100.0; xcol.pixel = cp->back; XQueryColor (dpy, cmap, &xcol); sprintf (clearcol, "#%04x%04x%04x", xcol.red + (unsigned short) ((65535 - xcol.red) * clearfactor), xcol.green + (unsigned short) ((65535 - xcol.green) * clearfactor), xcol.blue + (unsigned short) ((65535 - xcol.blue) * clearfactor)); sprintf (darkcol, "#%04x%04x%04x", (unsigned short) (xcol.red * darkfactor), (unsigned short) (xcol.green * darkfactor), (unsigned short) (xcol.blue * darkfactor)); save = Scr->FirstTime; Scr->FirstTime = True; GetColor (Scr->Monochrome, &cp->shadc, clearcol); GetColor (Scr->Monochrome, &cp->shadd, darkcol); Scr->FirstTime = save; } /* * The following I18N-oriented functions are adapted from TWM * as distributed with XFree86 4.2.0 - djhjr - 9/14/03 */ /* * The following functions are sensible to 'use_fontset'. * When 'use_fontset' is True, * - XFontSet-related internationalized functions are used * so as multibyte languages can be displayed. * When 'use_fontset' is False, * - XFontStruct-related conventional functions are used * so as 8-bit characters can be displayed even when * locale is not set properly. */ void GetFont(font) MyFont *font; { #ifndef NO_I18N_SUPPORT char **missing_charset_list_return; int missing_charset_count_return; char *def_string_return; XFontSetExtents *font_extents; XFontStruct **xfonts; char **font_names; register int i; int ascent; int descent; int fnum; char *basename2, *basename3 = NULL; if (use_fontset) { if (font->fontset != NULL) XFreeFontSet(dpy, font->fontset); if (!font->name) font->name = Scr->DefaultFont.name; if ((basename2 = (char *)malloc(strlen(font->name) + 3))) sprintf(basename2, "%s,*", font->name); else basename2 = font->name; if ((font->fontset = XCreateFontSet(dpy, basename2, &missing_charset_list_return, &missing_charset_count_return, &def_string_return)) == NULL) { /* idea from Seth Robertson - djhjr - 9/17/03 */ if ((basename3 = (char *)realloc(basename2, strlen(Scr->DefaultFont.name) + 3))) sprintf(basename3, "%s,*", Scr->DefaultFont.name); else { basename3 = Scr->DefaultFont.name; if (basename2 != font->name) free(basename2); } if ((font->fontset = XCreateFontSet(dpy, basename3, &missing_charset_list_return, &missing_charset_count_return, &def_string_return)) == NULL) { fprintf(stderr, "%s: unable to open fontsets \"%s\" or \"%s\"\n", ProgramName, font->name, Scr->DefaultFont.name); if (basename3 != Scr->DefaultFont.name) free(basename3); exit(1); } basename2 = basename3; } if (basename2 != ((basename3) ? Scr->DefaultFont.name : font->name)) free(basename2); for (i = 0; i < missing_charset_count_return; i++) fprintf(stderr, "%s: font for charset %s is lacking\n", ProgramName, missing_charset_list_return[i]); font_extents = XExtentsOfFontSet(font->fontset); fnum = XFontsOfFontSet(font->fontset, &xfonts, &font_names); for (i = 0, ascent = 0, descent = 0; iascent) ascent = (*xfonts)->ascent; if (descent < (*xfonts)->descent) descent = (*xfonts)->descent; xfonts++; } font->height = font_extents->max_logical_extent.height; font->y = ascent; font->ascent = ascent; font->descent = descent; return; } #endif if (font->font != NULL) XFreeFont(dpy, font->font); if ((font->font = XLoadQueryFont(dpy, font->name)) == NULL) if ((font->font = XLoadQueryFont(dpy, Scr->DefaultFont.name)) == NULL) { fprintf(stderr, "%s: unable to open fonts \"%s\" or \"%s\"\n", ProgramName, font->name, Scr->DefaultFont.name); exit(1); } font->height = font->font->ascent + font->font->descent; font->y = font->font->ascent; font->ascent = font->font->ascent; font->descent = font->font->descent; } #ifndef NO_I18N_SUPPORT int MyFont_TextWidth(font, string, len) MyFont *font; char *string; int len; { XRectangle ink_rect; XRectangle logical_rect; if (use_fontset) { XmbTextExtents(font->fontset, string, len, &ink_rect, &logical_rect); return logical_rect.width; } return XTextWidth(font->font, string, len); } void MyFont_DrawImageString(dpy, d, font, gc, x, y, string, len) Display *dpy; Drawable d; MyFont *font; GC gc; int x,y; char *string; int len; { if (use_fontset) { XmbDrawImageString(dpy, d, font->fontset, gc, x, y, string, len); return; } XDrawImageString (dpy, d, gc, x, y, string, len); } void MyFont_DrawString(dpy, d, font, gc, x, y, string, len) Display *dpy; Drawable d; MyFont *font; GC gc; int x,y; char *string; int len; { if (use_fontset) { XmbDrawString(dpy, d, font->fontset, gc, x, y, string, len); return; } XDrawString (dpy, d, gc, x, y, string, len); } void MyFont_ChangeGC(fix_fore, fix_back, fix_font) unsigned long fix_fore, fix_back; MyFont *fix_font; { Gcv.foreground = fix_fore; Gcv.background = fix_back; if (use_fontset) { XChangeGC(dpy, Scr->NormalGC, GCForeground|GCBackground, &Gcv); return; } Gcv.font = fix_font->font->fid; XChangeGC(dpy, Scr->NormalGC, GCFont|GCForeground|GCBackground,&Gcv); } /* * The following functions are internationalized substitutions * for XFetchName and XGetIconName using XGetWMName and * XGetWMIconName. * * Please note that the third arguments have to be freed using free(), * not XFree(). */ Status I18N_FetchName(dpy, w, winname) Display *dpy; Window w; char ** winname; { int status; XTextProperty text_prop; char **list; int num; status = XGetWMName(dpy, w, &text_prop); if (!status || !text_prop.value || !text_prop.nitems) { *winname = NULL; return 0; } *winname = (char *)strdup(text_prop.value); status = XmbTextPropertyToTextList(dpy, &text_prop, &list, &num); if (status < Success || !num || !*list) { *winname = NULL; return 0; } XFree(text_prop.value); *winname = (char *)strdup(*list); XFreeStringList(list); return 1; } Status I18N_GetIconName(dpy, w, iconname) Display *dpy; Window w; char ** iconname; { int status; XTextProperty text_prop; char **list; int num; status = XGetWMIconName(dpy, w, &text_prop); if (!status || !text_prop.value || !text_prop.nitems) return 0; *iconname = (char *)strdup(text_prop.value); status = XmbTextPropertyToTextList(dpy, &text_prop, &list, &num); if (status < Success || !num || !*list) return 0; XFree(text_prop.value); *iconname = (char *)strdup(*list); XFreeStringList(list); return 1; } #endif /* * SetFocus - separate routine to set focus to make things more understandable * and easier to debug */ void SetFocus (tmp_win, time) TwmWindow *tmp_win; Time time; { Window w = (tmp_win ? tmp_win->w : PointerRoot); #ifdef TRACE if (tmp_win) { printf ("Focusing on window \"%s\"\n", tmp_win->full_name); } else { printf ("Unfocusing; Scr->Focus was \"%s\"\n", Scr->Focus ? Scr->Focus->full_name : "(nil)"); } #endif XSetInputFocus (dpy, w, RevertToPointerRoot, time); } #ifdef NEED_PUTENV_F /* * define our own putenv() if the system doesn't have one. * putenv(s): place s (a string of the form "NAME=value") in * the environment; replacing any existing NAME. s is placed in * environment, so if you change s, the environment changes (like * putenv on a sun). Binding removed if you putenv something else * called NAME. */ int putenv(s) /* djhjr - 4/22/98 char *s; */ const char *s; { char *v; int varlen, idx; extern char **environ; char **newenv; static int virgin = 1; /* true while "environ" is a virgin */ v = index(s, '='); if(v == 0) return 0; /* punt if it's not of the right form */ varlen = (v + 1) - s; for (idx = 0; environ[idx] != 0; idx++) { if (strncmp(environ[idx], s, varlen) == 0) { if(v[1] != 0) { /* true if there's a value */ environ[idx] = (char *)s; return 0; } else { do { environ[idx] = environ[idx+1]; } while(environ[++idx] != 0); return 0; } } } /* add to environment (unless no value; then just return) */ if(v[1] == 0) return 0; if(virgin) { register i; newenv = (char **) malloc((unsigned) ((idx + 2) * sizeof(char*))); if(newenv == 0) return -1; for(i = idx-1; i >= 0; --i) newenv[i] = environ[i]; virgin = 0; /* you're not a virgin anymore, sweety */ } else { newenv = (char **) realloc((char *) environ, (unsigned) ((idx + 2) * sizeof(char*))); if (newenv == 0) return -1; } environ = newenv; environ[idx] = (char *)s; environ[idx+1] = 0; return 0; } #endif /* NEED_PUTENV_F */ /* Returns a blank cursor */ Cursor NoCursor() { static Cursor blank = (Cursor) NULL; Pixmap nopixmap; XColor nocolor; if (!blank) { nopixmap = XCreatePixmap(dpy, Scr->Root, 1, 1, 1); nocolor.red = nocolor.blue = nocolor.green = 0; blank = XCreatePixmapCursor(dpy, nopixmap, nopixmap, &nocolor, &nocolor, 1, 1); } return(blank); } /* djhjr - 10/30/02 */ static void DrawDotImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { XPoint points[5]; int wb, hb, ws, hs, lw; lw = (w > h) ? h / 16 : w / 16; if (lw == 1) lw = 0; XSetForeground(dpy, rootGC, cp.fore); XSetLineAttributes(dpy, rootGC, lw, LineSolid, CapButt, JoinMiter); ws = x + (w / 2) - 2; hs = y + (h / 2) - 2; wb = ws + 4; hb = hs + 4; points[0].x = points[3].x = points[4].x = ws; points[0].y = points[1].y = points[4].y = hs; points[1].x = points[2].x = wb; points[2].y = points[3].y = hb; XDrawLines(dpy, d, rootGC, points, 5, CoordModeOrigin); } /* djhjr - 10/30/02 */ static void DrawResizeImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { XPoint points[3]; int wb, hb, ws, hs, lw; lw = (w > h) ? h / 16 : w / 16; if (lw == 1) lw = 0; XSetForeground(dpy, rootGC, cp.fore); XSetLineAttributes(dpy, rootGC, lw, LineSolid, CapButt, JoinMiter); y--; wb = w / 4; /* bigger width */ hb = h / 4; /* bigger width */ ws = w / 2; /* smaller width */ hs = h / 2; /* smaller width */ points[0].x = x; points[0].y = points[1].y = y + hb; points[1].x = points[2].x = x + w - wb - 1; points[2].y = y + h; XDrawLines(dpy, d, rootGC, points, 3, CoordModeOrigin); points[0].x = x; points[0].y = points[1].y = y + hs; points[1].x = points[2].x = x + ws; points[2].y = y + h; XDrawLines(dpy, d, rootGC, points, 3, CoordModeOrigin); } /* djhjr - 10/30/02 */ static void DrawMenuImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { int ih, iw; int ix, iy; int mh, mw; int tw, th; int lw, lh; int lx, ly; int lines, dly; /*int off;*/ int bw; if (h < 1) h = 1; if (w < 1) w = 1; ix = iy = pad + 1; ih = h - iy * 2; iw = w - ix * 2; /*off = ih / 8;*/ mh = ih - ih / 8/*off*/; mw = iw - iw / 8/*off*/; bw = mh / 16; if (bw == 0 && mw > 2) bw = 1; tw = mw - bw * 2; th = mh - bw * 2; ix += x; iy += y; XSetForeground(dpy, rootGC, cp.fore); XFillRectangle(dpy, d, rootGC, ix, iy, mw, mh); XFillRectangle(dpy, d, rootGC, ix + iw - mw, iy + ih - mh, mw, mh); XSetForeground(dpy, rootGC, cp.back); XFillRectangle(dpy, d, rootGC, ix + bw, iy + bw, tw, th); lw = tw / 2; if ((tw & 1) ^ (lw & 1)) lw++; lx = ix + bw + (tw - lw) / 2; lh = th / 2 - bw; if ((lh & 1) ^ ((th - bw) & 1)) lh++; ly = iy + bw + (th - bw - lh) / 2; lines = 3; if ((lh & 1) && lh < 6) lines--; dly = lh / (lines - 1); XSetForeground(dpy, rootGC, cp.fore); while (lines--) { XFillRectangle(dpy, d, rootGC, lx, ly, lw, bw); ly += dly; } } /* djhjr - 10/30/02 */ static void DrawXLogoImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { GC gcBack; XGCValues gcvalues; int lw; gcBack = XCreateGC(dpy, Scr->Root, 0, &gcvalues); gcvalues.background = cp.back; gcvalues.foreground = cp.fore; XChangeGC(dpy, gcBack, GCForeground | GCBackground, &gcvalues); lw = (w > h) ? h / 16 : w / 16; if (lw < 3) lw = 3; XSetLineAttributes(dpy, gcBack, lw, LineSolid, CapButt, JoinMiter); /* * Draw the logo large so that it gets as dense as possible, * then blank out the edges so that they look crisp. */ x += pad; y += pad; w -= pad * 2; h -= pad * 2; XSetForeground(dpy, rootGC, cp.fore); XSetForeground(dpy, gcBack, cp.back); XmuDrawLogo(dpy, d, rootGC, gcBack, x - 1, y - 1, w + 2, h + 2); XDrawRectangle(dpy, d, gcBack, x - 1, y - 1, w + 1, h + 1); XFreeGC(dpy, gcBack); } /* djhjr - 10/30/02 */ static void DrawQuestionImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { Pixmap p; p = XCreateBitmapFromData(dpy, Scr->Root, questionmark_bits, questionmark_width, questionmark_height); XSetForeground(dpy, rootGC, cp.fore); XCopyPlane(dpy, p, d, rootGC, 0, 0, questionmark_width, questionmark_height, x + (w - questionmark_width) / 2, y + (h - questionmark_height) / 2, (unsigned long)1); XFreePixmap(dpy, p); } /* djhjr - 10/30/02 */ static void DrawRArrowImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { XPoint points[4]; int lw, mw, mh; if (!(h & 1)) h--; if (h < 1) h = 1; lw = (w > h) ? h / 16 : w / 16; if (lw == 1) lw = 0; XSetForeground(dpy, rootGC, cp.fore); XSetLineAttributes(dpy, rootGC, lw, LineSolid, CapButt, JoinMiter); mw = w / 3; mh = h / 3; points[0].x = w - mw; points[0].y = h / 2; points[1].x = mw - 1; points[1].y = mh - 1; points[2].x = mw - 1; points[2].y = h - mh; points[3] = points[0]; XDrawLines(dpy, d, rootGC, points, 4, CoordModeOrigin); } /* djhjr - 10/30/02 */ static void DrawDArrowImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { XPoint points[4]; int lw, mw, mh; if (!(h & 1)) h--; if (h < 1) h = 1; lw = (w > h) ? h / 16 : w / 16; if (lw == 1) lw = 0; XSetForeground(dpy, rootGC, cp.fore); XSetLineAttributes(dpy, rootGC, lw, LineSolid, CapButt, JoinMiter); mw = h / 3; mh = h / 3; points[0].x = w / 2; points[0].y = h - mh; points[1].x = w - mw; points[1].y = mh - 1; points[2].x = mw - 1; points[2].y = mh - 1; points[3] = points[0]; XDrawLines(dpy, d, rootGC, points, 4, CoordModeOrigin); } /* djhjr - 4/19/96 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DDotImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { Draw3DBorder(d, x + (w / 2) - 2, y + (h / 2) - 2, 5, 5, Scr->ShallowReliefWindowButton, cp, state, True, False); } /* djhjr - 4/19/96 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DBarImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { /* was 'Scr->TitleBevelWidth' - djhjr - 8/11/98 */ Draw3DBorder (d, x + pad + 1, y + (h - 5) / 2, w - pad * 2 - 2, 5, Scr->ShallowReliefWindowButton, cp, state, True, False); } /* djhjr - 4/19/96 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DMenuImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { int i, lines, width, height; height = Scr->ShallowReliefWindowButton * 2; /* count the menu lines */ lines = (h - pad * 2 - 2) / height; /* center 'em */ y += (h - lines * height) / 2; if (!(y & 1)) y += 1; /* now draw 'em */ x += pad + 1; lines = y + lines * height; width = w - pad * 2 - 2; for (i = y; i < lines; i += height) Draw3DBorder(d, x, i, width, height, Scr->ShallowReliefWindowButton, cp, state, True, False); } /* djhjr - 4/19/96 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DResizeImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { int i, j; /* djhjr - 4/29/98 */ /* was 'Scr->TitleBevelWidth' - djhjr - 8/11/98 */ i = w - Scr->ButtonBevelWidth * 2; /* * Extend the left and bottom "off-window" by the * line width for "thick" boxes on "thin" buttons. */ /* was 'Scr->TitleBevelWidth' - djhjr - 8/11/98 */ j = Scr->ButtonBevelWidth + (i / 4); Draw3DBorder(d, x + -Scr->ShallowReliefWindowButton, y + j - 1, x + w - j + 1 + Scr->ShallowReliefWindowButton, y + h - j + 1 + Scr->ShallowReliefWindowButton, Scr->ShallowReliefWindowButton, cp, state, True, False); j = Scr->ButtonBevelWidth + (i / 2); Draw3DBorder(d, x + -Scr->ShallowReliefWindowButton, y + j, x + w - j + Scr->ShallowReliefWindowButton, y + h - j + Scr->ShallowReliefWindowButton, Scr->ShallowReliefWindowButton, cp, state, True, False); } /* djhjr - 4/19/96 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DZoomImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { /* was 'Scr->TitleBevelWidth' - djhjr - 8/11/98 */ Draw3DBorder (d, x + pad + 1, y + pad + 1, w - 2 * pad - 2, h - 2 * pad - 2, Scr->ShallowReliefWindowButton, cp, state, True, False); } /* djhjr - 6/4/00 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DRArrowImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { int i, mw, mh; mw = w / 3; mh = h / 3; if (Scr->Monochrome != COLOR) { /* draw highlights */ setBorderGC(1, Scr->GreyGC, cp, state, False); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine(dpy, d, Scr->GreyGC, x + w - mw - i, y + h / 2, x + mw - 1 + i, y + mh - 1 + i); XDrawLine (dpy, d, Scr->GreyGC, x + mw - 1 + i, y + mh - 1 + i, x + mw - 1 + i, y + h - mh - i); } /* draw shadows */ setBorderGC(2, Scr->GreyGC, cp, state, False); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) XDrawLine (dpy, d, Scr->GreyGC, x + mw - 1 + i, y + h - mh - i, x + w - mw - i, y + h / 2); } else if (Scr->BeNiceToColormap) { int dashoffset = 0; setBorderGC(3, Scr->ShadGC, cp, state, False); /* draw highlights */ XSetForeground (dpy, Scr->ShadGC, Scr->White); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine(dpy, d, Scr->ShadGC, x + w - mw - i, y + h / 2, x + mw - 1 + i, y + mh - 1 + i); XDrawLine (dpy, d, Scr->ShadGC, x + mw - 1 + i, y + mh - 1 + i, x + mw - 1 + i, y + h - mh - i); } /* draw shadows */ XSetForeground (dpy, Scr->ShadGC, Scr->Black); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine (dpy, d, Scr->ShadGC, x + mw - 1 + i, y + h - mh - i + dashoffset, x + w - mw - i, y + h / 2 + dashoffset); dashoffset = 1 - dashoffset; } } else { /* draw highlights */ if (state) { FB (cp.shadc, cp.shadd); } else { FB (cp.shadd, cp.shadc); } for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine(dpy, d, Scr->NormalGC, x + w - mw - i, y + h / 2, x + mw - 1 + i, y + mh - 1 + i); XDrawLine (dpy, d, Scr->NormalGC, x + mw - 1 + i, y + mh - 1 + i, x + mw - 1 + i, y + h - mh - i); } /* draw shadows */ if (state) { FB (cp.shadd, cp.shadc); } else { FB (cp.shadc, cp.shadd); } for (i = 0; i < Scr->ShallowReliefWindowButton; i++) XDrawLine (dpy, d, Scr->NormalGC, x + mw - 1 + i, y + h - mw - i, x + w - mw - i, y + h / 2); } } /* djhjr - 6/4/00 */ /* added d, x, y, w, h, state - djhjr - 10/29/02 */ static void Draw3DDArrowImage(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { int i, mw, mh; mw = w / 3; mh = h / 3; if (Scr->Monochrome != COLOR) { /* draw highlights */ setBorderGC(1, Scr->GreyGC, cp, state, False); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine(dpy, d, Scr->GreyGC, x + w - mw - i, y + mh - 1 + i, x + mw - 1 + i, y + mh - 1 + i); XDrawLine (dpy, d, Scr->GreyGC, x + mw - 1 + i, y + mh - 1 + i, x + w / 2, y + mh - 1 - i + h / 2); } /* draw shadows */ setBorderGC(2, Scr->GreyGC, cp, state, False); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) XDrawLine (dpy, d, Scr->GreyGC, x + w / 2, y + mh - 1 - i + h / 2, x + w - mw - i, y + mh + i); } else if (Scr->BeNiceToColormap) { int dashoffset = 0; setBorderGC(3, Scr->ShadGC, cp, state, False); /* draw highlights */ XSetForeground (dpy, Scr->ShadGC, Scr->White); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine(dpy, d, Scr->ShadGC, x + w - mw - i, y + mh - 1 + i, x + mw - 1 + i, y + mh - 1 + i); XDrawLine (dpy, d, Scr->ShadGC, x + mw - 1 + i, y + mh - 1 + i + dashoffset, x + w / 2, y + mh - 1 - i + h / 2 + dashoffset); dashoffset = 1 - dashoffset; } /* draw shadows */ XSetForeground (dpy, Scr->ShadGC, Scr->Black); for (i = 0; i < Scr->ShallowReliefWindowButton; i++) XDrawLine (dpy, d, Scr->ShadGC, x + w / 2, y + mh - 1 - i + h / 2, x + w - mw - i, y + mh + i); } else { /* draw highlights */ if (state) { FB (cp.shadc, cp.shadd); } else { FB (cp.shadd, cp.shadc); } for (i = 0; i < Scr->ShallowReliefWindowButton; i++) { XDrawLine(dpy, d, Scr->NormalGC, x + w - mw - i, y + mh - 1 + i, x + mw - 1 + i, y + mh - 1 + i); XDrawLine (dpy, d, Scr->NormalGC, x + mw - 1 + i, y + mh - 1 + i, x + w / 2, y + mh - 1 - i + h / 2); } /* draw shadows */ if (state) { FB (cp.shadd, cp.shadc); } else { FB (cp.shadc, cp.shadd); } for (i = 0; i < Scr->ShallowReliefWindowButton; i++) XDrawLine (dpy, d, Scr->NormalGC, x + w / 2, y + mh - 1 - i + h / 2, x + w - mw - i, y + mh + i); } } /* djhjr - 10/25/02 */ static void Draw3DBoxHighlight(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { Draw3DBorder(d, x, y, w, h, Scr->ShallowReliefWindowButton, cp, state, True, False); } /* djhjr - 10/25/02 */ static void Draw3DLinesHighlight(d, x, y, w, h, pad, cp, state) Drawable d; int x, y, w, h, pad; ColorPair cp; int state; { int p; p = (Scr->ShallowReliefWindowButton & 1) ? 3 : 2; p = (h - Scr->ShallowReliefWindowButton * p - 2) / 2; y += h / 2 - 1; y -= (Scr->ShallowReliefWindowButton & 1) ? 0 : 1; y += (state == on) ? 0 : 1; h = Scr->ShallowReliefWindowButton * 2; Draw3DBorder(d, x, y - p, w, h, Scr->ShallowReliefWindowButton, cp, state, False, False); if ((Scr->ShallowReliefWindowButton & 1)) Draw3DBorder(d, x, y, w, h, Scr->ShallowReliefWindowButton, cp, state, False, False); Draw3DBorder(d, x, y + p, w, h, Scr->ShallowReliefWindowButton, cp, state, False, False); } /* ick - djhjr - 10/30/02 */ static void DrawBackground(d, x, y, w, h, cp, use_rootGC) Drawable d; int x, y, w, h; ColorPair cp; int use_rootGC; { XGCValues gcvalues; if (use_rootGC) { if (rootGC == (GC)0) rootGC = XCreateGC(dpy, Scr->Root, 0, &gcvalues); gcvalues.background = cp.back; gcvalues.foreground = cp.fore; XChangeGC(dpy, rootGC, GCForeground | GCBackground, &gcvalues); XSetForeground(dpy, rootGC, cp.back); XFillRectangle(dpy, d, rootGC, x, y, w, h); } else { FB(cp.back, cp.fore); XFillRectangle(dpy, d, Scr->NormalGC, x, y, w, h); } } /* djhjr - 10/25/02 */ static void DrawTitleHighlight(t, state) TwmWindow *t; int state; { static const struct { char *name; void (*proc)(); Bool use_rootGC; int state; } pmtab[] = { /* djhjr - 10/30/02 */ { TBPM_DOT, DrawDotImage, True, off }, { TBPM_ICONIFY, DrawDotImage, True, off }, { TBPM_RESIZE, DrawResizeImage, True, off }, { TBPM_MENU, DrawMenuImage, True, off }, { TBPM_XLOGO, DrawXLogoImage, True, off }, { TBPM_DELETE, DrawXLogoImage, True, off }, { TBPM_QUESTION, DrawQuestionImage, True, off }, { TBPM_3DDOT, Draw3DDotImage, False, off }, { TBPM_3DRESIZE, Draw3DResizeImage, False, off }, { TBPM_3DMENU, Draw3DMenuImage, False, off }, { TBPM_3DZOOM, Draw3DZoomImage, False, off }, { TBPM_3DBAR, Draw3DBarImage, False, off }, /* djhjr - 10/30/02 */ { TBPM_3DBOX, Draw3DBoxHighlight, False, off }, { TBPM_3DLINES, Draw3DLinesHighlight, False, off }, { TBPM_3DRAISEDBOX, Draw3DBoxHighlight, False, off }, { TBPM_3DSUNKENBOX, Draw3DBoxHighlight, False, on }, { TBPM_3DRAISEDLINES, Draw3DLinesHighlight, False, off }, { TBPM_3DSUNKENLINES, Draw3DLinesHighlight, False, on }, }; XGCValues gcvalues; ColorPair cp; register int i; int h, w; cp = t->title; w = ComputeHighlightWindowWidth(t); h = Scr->TitleHeight - 2 * Scr->FramePadding - 2; for (i = 0; i < sizeof(pmtab) / sizeof(pmtab[0]); i++) { if (XmuCompareISOLatin1(pmtab[i].name, Scr->hiliteName) == 0) { if (state == off) { DrawBackground(t->title_w, t->highlightx, Scr->FramePadding + 1, w, h, cp, pmtab[i].use_rootGC | (Scr->Monochrome != COLOR)); } else { /* ick - djhjr - 10/30/02 */ if (pmtab[i].use_rootGC) { if (rootGC == (GC)0) rootGC = XCreateGC(dpy, Scr->Root, 0, &gcvalues); gcvalues.background = cp.back; gcvalues.foreground = cp.fore; XChangeGC(dpy, rootGC, GCForeground | GCBackground, &gcvalues); } (*pmtab[i].proc)(t->title_w, t->highlightx, Scr->FramePadding + 1, w, h, 0, cp, pmtab[i].state); } break; } } } /* djhjr - 1/13/98 */ void setBorderGC(type, gc, cp, state, forcebw) int type, state, forcebw; GC gc; ColorPair cp; { XGCValues gcv; unsigned long gcm; switch (type) { case 0: /* Monochrome main */ gcm = GCFillStyle; gcv.fill_style = FillOpaqueStippled; break; case 1: /* Monochrome highlight */ gcm = 0; gcm |= GCLineStyle; gcv.line_style = (state == on) ? LineSolid : LineDoubleDash; gcm |= GCFillStyle; gcv.fill_style = FillSolid; break; case 2: /* Monochrome shadow */ gcm = 0; gcm |= GCLineStyle; gcv.line_style = (state == on) ? LineDoubleDash : LineSolid; gcm |= GCFillStyle; gcv.fill_style = FillSolid; break; case 3: /* BeNiceToColormap */ gcm = 0; gcm |= GCLineStyle; gcv.line_style = (forcebw) ? LineSolid : LineDoubleDash; gcm |= GCBackground; gcv.background = cp.back; break; default: return; } XChangeGC (dpy, gc, gcm, &gcv); } /* djhjr - 4/19/96 */ void Draw3DBorder (w, x, y, width, height, bw, cp, state, fill, forcebw) Drawable w; int x, y, width, height, bw; ColorPair cp; int state, fill, forcebw; { int i; if (width < 1 || height < 1) return; if (Scr->Monochrome != COLOR) { /* set main color */ if (fill) { setBorderGC(0, Scr->GreyGC, cp, state, forcebw); XFillRectangle (dpy, w, Scr->GreyGC, x, y, width, height); } /* draw highlights */ setBorderGC(1, Scr->GreyGC, cp, state, forcebw); for (i = 0; i < bw; i++) { XDrawLine (dpy, w, Scr->GreyGC, x, y + i, x + width - i - 1, y + i); XDrawLine (dpy, w, Scr->GreyGC, x + i, y, x + i, y + height - i - 1); } /* draw shadows */ setBorderGC(2, Scr->GreyGC, cp, state, forcebw); for (i = 0; i < bw; i++) { XDrawLine (dpy, w, Scr->GreyGC, x + width - i - 1, y + i, x + width - i - 1, y + height - 1); XDrawLine (dpy, w, Scr->GreyGC, x + i, y + height - i - 1, x + width - 1, y + height - i - 1); } return; } /* set main color */ if (fill) { FB (cp.back, cp.fore); XFillRectangle (dpy, w, Scr->NormalGC, x, y, width, height); } if (Scr->BeNiceToColormap) { setBorderGC(3, Scr->ShadGC, cp, state, forcebw); /* draw highlights */ if (state == on) XSetForeground (dpy, Scr->ShadGC, Scr->Black); else XSetForeground (dpy, Scr->ShadGC, Scr->White); for (i = 0; i < bw; i++) { XDrawLine (dpy, w, Scr->ShadGC, x + i, y + borderdashoffset, x + i, y + height - i - 1); XDrawLine (dpy, w, Scr->ShadGC, x + borderdashoffset, y + i, x + width - i - 1, y + i); borderdashoffset = 1 - borderdashoffset; } /* draw shadows */ if (state == on) XSetForeground (dpy, Scr->ShadGC, Scr->White); else XSetForeground (dpy, Scr->ShadGC, Scr->Black); for (i = 0; i < bw; i++) { XDrawLine (dpy, w, Scr->ShadGC, x + i, y + height - i - 1, x + width - 1, y + height - i - 1); XDrawLine (dpy, w, Scr->ShadGC, x + width - i - 1, y + i, x + width - i - 1, y + height - 1); } return; } /* draw highlights */ if (state == on) { FB (cp.shadd, cp.shadc); } else { FB (cp.shadc, cp.shadd); } for (i = 0; i < bw; i++) { XDrawLine (dpy, w, Scr->NormalGC, x, y + i, x + width - i - 1, y + i); XDrawLine (dpy, w, Scr->NormalGC, x + i, y, x + i, y + height - i - 1); } /* draw shadows */ if (state == on) { FB (cp.shadc, cp.shadd); } else { FB (cp.shadd, cp.shadc); } for (i = 0; i < bw; i++) { XDrawLine (dpy, w, Scr->NormalGC, x + width - i - 1, y + i, x + width - i - 1, y + height - 1); XDrawLine (dpy, w, Scr->NormalGC, x + i, y + height - i - 1, x + width - 1, y + height - i - 1); } } #ifdef USE_ORIGINAL_CORNERS /* djhjr - 4/19/96 */ void Draw3DCorner (w, x, y, width, height, thick, bw, cp, type) Window w; int x, y, width, height, thick, bw; ColorPair cp; int type; { Draw3DBorder (w, x, y, width, height, bw, cp, off, True, False); switch (type) { /* upper left */ case 0 : Draw3DBorder (w, x + thick - bw, y + thick - bw, width - thick + 2 * bw, height - thick + 2 * bw, bw, cp, on, True, False); break; /* upper right */ case 1 : Draw3DBorder (w, x - bw, y + thick - bw, width - thick + 2 * bw, height - thick + 2 * bw, bw, cp, on, True, False); break; /* lower right */ case 2 : Draw3DBorder (w, x - bw, y - bw, width - thick + 2 * bw, height - thick + 2 * bw, bw, cp, on, True, False); break; /* lower left */ case 3 : Draw3DBorder (w, x + thick - bw, y - bw, width - thick + 2 * bw, height - thick + 2 * bw, bw, cp, on, True, False); break; } } #else /* USE_ORIGINAL_CORNERS */ /* djhjr - 1/14/98 */ GC setBevelGC(type, state, cp) int type, state; ColorPair cp; { GC gc; if (Scr->Monochrome != COLOR) { gc = Scr->GreyGC; setBorderGC(type, gc, cp, state, False); } else if (Scr->BeNiceToColormap) { gc = Scr->ShadGC; setBorderGC(3, gc, cp, state, False); if (state == on) XSetForeground (dpy, gc, Scr->Black); else XSetForeground (dpy, gc, Scr->White); } else { gc = Scr->NormalGC; if (state == on) { FB (cp.shadc, cp.shadd); } else { FB (cp.shadd, cp.shadc); } } return (gc); } /* djhjr - 1/12/98 */ void Draw3DBevel (w, x, y, bw, cp, state, type) Drawable w; int x, y, bw; ColorPair cp; int state, type; { int i; GC gc; switch (type) { /* vertical */ case 1 : case 11 : gc = setBevelGC(1, state, cp); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x - i - 1, y + i, x - i - 1, y + bw - 2 * i + i); if (type == 11) break; case 111 : gc = setBevelGC(2, !state, cp); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + i, y + i - 1, x + i, y + bw - 2 * i + i - 1); break; /* horizontal */ case 2 : case 22 : gc = setBevelGC(1, state, cp); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + i, y - i - 1, x + bw - 2 * i + i, y - i - 1); if (type == 22) break; case 222 : gc = setBevelGC(2, !state, cp); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + i - 1, y + i, x + bw - 2 * i + i - 1, y + i); break; /* ulc to lrc */ case 3 : if (Scr->Monochrome != COLOR) { gc = Scr->GreyGC; setBorderGC(0, gc, cp, state, False); } else { gc = Scr->NormalGC; FB (cp.back, cp.fore); } XFillRectangle (dpy, w, gc, x, y, bw, bw); gc = setBevelGC(1, (Scr->BeNiceToColormap) ? state : !state, cp); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + i, y, x + i, y + Scr->BorderBevelWidth - 1); gc = setBevelGC(2, (Scr->BeNiceToColormap) ? !state : state, cp); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x, y + bw - i - 1, x + bw - 1, y + bw - i - 1); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + bw - i - 1, y, x + bw - i - 1, y + bw - 1); break; /* urc to llc */ case 4 : if (Scr->Monochrome != COLOR) { gc = Scr->GreyGC; setBorderGC(0, gc, cp, state, False); } else { gc = Scr->NormalGC; FB (cp.back, cp.fore); } XFillRectangle (dpy, w, gc, x, y, bw, bw); gc = setBevelGC(1, (Scr->BeNiceToColormap) ? state : !state, cp); /* top light */ for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + i, y, x + i, y + bw - i); /* bottom light */ for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + bw - 1, y + i, x + bw - i - 1, y + i); gc = setBevelGC(2, (Scr->BeNiceToColormap) ? !state : state, cp); /* top dark */ for (i = 0; i < Scr->BorderBevelWidth - 1; i++) XDrawLine (dpy, w, gc, x + bw - Scr->BorderBevelWidth, y + i, x + bw - i - 2, y + i); /* bottom dark */ for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, gc, x + i, y + bw - i - 1, x + bw + 1, y + bw - i - 1); break; } } /* djhjr - 10/20/02 */ void Draw3DNoBevel(w, x, y, bw, cp, state, forcebw) Drawable w; int x, y, bw; ColorPair cp; int state, forcebw; { int i, upr, lwr; if (bw < 1) return; upr = y - 2 * Scr->BorderBevelWidth; if ((upr & 1)) upr--; lwr = y + 2 * Scr->BorderBevelWidth; if ((lwr & 1)) lwr++; if (Scr->Monochrome != COLOR) { /* set main color */ setBorderGC(0, Scr->GreyGC, cp, state, forcebw); XFillRectangle (dpy, w, Scr->GreyGC, x + Scr->BorderBevelWidth, upr, (unsigned int)(bw - Scr->BorderBevelWidth * 2), (unsigned int)(upr * 2)); /* draw highlight */ setBorderGC(1, Scr->GreyGC, cp, state, forcebw); for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, Scr->GreyGC, x + i, upr, x + i, lwr); /* draw shadow */ setBorderGC(2, Scr->GreyGC, cp, state, forcebw); for (i = bw - Scr->BorderBevelWidth; i < bw; i++) XDrawLine (dpy, w, Scr->GreyGC, x + i, upr, x + i, lwr); return; } /* set main color */ FB (cp.back, cp.fore); XFillRectangle (dpy, w, Scr->NormalGC, x + Scr->BorderBevelWidth, upr, (unsigned int)(bw - Scr->BorderBevelWidth * 2), (unsigned int)(upr * 2)); if (Scr->BeNiceToColormap) { int dashoffset; setBorderGC(3, Scr->ShadGC, cp, state, forcebw); /* draw highlight */ if (state == on) XSetForeground (dpy, Scr->ShadGC, Scr->Black); else XSetForeground (dpy, Scr->ShadGC, Scr->White); dashoffset = 0; for (i = 0; i < Scr->BorderBevelWidth; i++) { XDrawLine (dpy, w, Scr->ShadGC, x + i, upr + dashoffset, x + i, lwr); dashoffset = 1 - dashoffset; } /* draw shadow */ if (state == on) XSetForeground (dpy, Scr->ShadGC, Scr->White); else XSetForeground (dpy, Scr->ShadGC, Scr->Black); dashoffset = 0; for (i = bw - Scr->BorderBevelWidth; i < bw; i++) { XDrawLine (dpy, w, Scr->ShadGC, x + i, upr + dashoffset, x + i, lwr); dashoffset = 1 - dashoffset; } return; } /* draw highlight */ if (state == on) { FB (cp.shadc, cp.shadd); } else { FB (cp.shadd, cp.shadc); } for (i = 0; i < Scr->BorderBevelWidth; i++) XDrawLine (dpy, w, Scr->NormalGC, x + i, upr, x + i, lwr); /* draw shadow */ if (state == on) { FB (cp.shadd, cp.shadc); } else { FB (cp.shadc, cp.shadd); } for (i = bw - Scr->BorderBevelWidth; i < bw; i++) XDrawLine (dpy, w, Scr->NormalGC, x + i, upr, x + i, lwr); } #endif /* USE_ORIGINAL_CORNERS */ /* djhjr - 4/19/96 */ static Image *LoadBitmapImage (name, cp) char *name; ColorPair cp; { Image *image; Pixmap bm; int width, height; XGCValues gcvalues; if (rootGC == (GC) 0) rootGC = XCreateGC (dpy, Scr->Root, 0, &gcvalues); bm = FindBitmap (name, (unsigned int *) &width, (unsigned int *) &height); if (bm == None) return (None); image = (Image*) malloc (sizeof (struct _Image)); image->pixmap = XCreatePixmap (dpy, Scr->Root, width, height, Scr->d_depth); gcvalues.background = cp.back; gcvalues.foreground = cp.fore; XChangeGC (dpy, rootGC, GCForeground | GCBackground, &gcvalues); XCopyPlane (dpy, bm, image->pixmap, rootGC, 0, 0, width, height, 0, 0, (unsigned long) 1); XFreePixmap (dpy, bm); image->mask = None; image->width = width; image->height = height; image->next = None; return (image); } /* djhjr - 10/30/02 */ static Image *CreateImagePixmap(name, w, h, depth) char *name; int w, h, depth; { Image *image; image = (Image *)malloc(sizeof(struct _Image)); if (!image) { fprintf(stderr, "%s: cannot allocate %d bytes for Image \"%s\"\n", ProgramName, sizeof(struct _Image), name); return (None); } image->pixmap = XCreatePixmap(dpy, Scr->Root, w, h, depth); if (image->pixmap == None) { fprintf(stderr, "%s: cannot allocate %d bytes for pixmap \"%s\"\n", ProgramName, sizeof(image->pixmap), name); free((void *)image); return (None); } return (image); } /* djhjr - 4/19/96 10/30/02 */ static Image *ReallyGetImage(name, w, h, pad, cp) char *name; int w, h, pad; ColorPair cp; { static const struct { char *name; void (*proc)(); Bool use_rootGC; int state; } pmtab[] = { { TBPM_DOT, DrawDotImage, True, off }, { TBPM_ICONIFY, DrawDotImage, True, off }, { TBPM_RESIZE, DrawResizeImage, True, off }, { TBPM_MENU, DrawMenuImage, True, off }, { TBPM_XLOGO, DrawXLogoImage, True, off }, { TBPM_DELETE, DrawXLogoImage, True, off }, { TBPM_QUESTION, DrawQuestionImage, True, off }, /* djhjr - 6/4/00 */ { TBPM_RARROW, DrawRArrowImage, True, off }, { TBPM_DARROW, DrawDArrowImage, True, off }, { TBPM_3DDOT, Draw3DDotImage, False, off }, { TBPM_3DRESIZE, Draw3DResizeImage, False, off }, { TBPM_3DMENU, Draw3DMenuImage, False, off }, { TBPM_3DZOOM, Draw3DZoomImage, False, off }, { TBPM_3DBAR, Draw3DBarImage, False, off }, /* djhjr - 6/4/00 */ { TBPM_3DRARROW, Draw3DRArrowImage, False, off }, { TBPM_3DDARROW, Draw3DDArrowImage, False, off }, /* djhjr - 10/30/02 */ { TBPM_3DBOX, Draw3DBoxHighlight, False, off }, { TBPM_3DLINES, Draw3DLinesHighlight, False, off }, }; Image *image = NULL; name_list **list; register int i; char fullname [256]; if (name == NULL) return (NULL); list = &Scr->ImageCache; if (name[0] == ':') { /* probably need '"%d", Scr->screen' - Caveh Frank Jalali */ sprintf(fullname, "%s.%dx%d.%Xx%X", name, w, h, (int)cp.fore, (int)cp.back); if ((image = (Image *)LookInNameList(*list, fullname)) == NULL) { for (i = 0; i < sizeof(pmtab) / sizeof(pmtab[0]); i++) { if (XmuCompareISOLatin1(pmtab[i].name, name) == 0) { if (!(image = CreateImagePixmap(name, w, h, Scr->d_depth))) return (None); DrawBackground(image->pixmap, 0, 0, w, h, cp, pmtab[i].use_rootGC | (Scr->Monochrome != COLOR)); /* added d, x, y, w, h, pad, state - djhjr - 10/29/02 */ (*pmtab[i].proc)(image->pixmap, 0, 0, w, h, pad, cp, pmtab[i].state); image->mask = None; image->width = w; image->height = h; image->next = None; break; } } if (!image) { fprintf(stderr, "%s: no such built-in pixmap \"%s\"\n", ProgramName, name); return (NULL); } } else return (image); } else { /* * Need screen number in fullname since screens may have different GCs. * Submitted by Caveh Frank Jalali */ sprintf(fullname, "%s.%Xx%X.%d", name, (int)cp.fore, (int)cp.back, (int)Scr->screen); if ((image = (Image *)LookInNameList(*list, fullname)) == NULL) { if ((image = LoadBitmapImage(name, cp)) == NULL) #ifndef NO_XPM_SUPPORT /* djhjr - 3/20/98 */ /* added color argument - djhjr - 9/28/99 */ image = FindImage(name, cp.back); #else ; #endif if (!image) return (NULL); } else return (image); } /* added 'type' argument - djhjr - 10/20/01 */ AddToList(list, fullname, LTYPE_EXACT_NAME, (char *)image); return (image); } /* * Wrapper to guarantee something is returned - djhjr - 10/30/02 */ Image *GetImage(name, w, h, pad, cp) char *name; int w, h, pad; ColorPair cp; { Image *image = NULL; if (!(image = ReallyGetImage(name, w, h, pad, cp))) image = ReallyGetImage(TBPM_QUESTION, w, h, pad, cp); return (image); } /* djhjr - 4/21/96 */ /* djhjr - 1/12/98 */ void PaintBorders (tmp_win, focus) TwmWindow *tmp_win; Bool focus; { GC gc; ColorPair cp; int i, j, cw, ch, cwbw, chbw; #ifdef USE_ORIGINAL_CORNERS int THbw, fhbwchbw, fhTHchbw; #endif cp = (focus && tmp_win->highlight) ? tmp_win->border : tmp_win->border_tile; /* no titlebar, no corners */ if (tmp_win->title_height == 0) { Draw3DBorder (tmp_win->frame, 0, 0, tmp_win->frame_width, tmp_win->frame_height, Scr->BorderBevelWidth, cp, off, True, False); Draw3DBorder (tmp_win->frame, tmp_win->frame_bw3D - Scr->BorderBevelWidth, tmp_win->frame_bw3D - Scr->BorderBevelWidth, tmp_win->frame_width - 2 * tmp_win->frame_bw3D + 2 * Scr->BorderBevelWidth, tmp_win->frame_height - 2 * tmp_win->frame_bw3D + 2 * Scr->BorderBevelWidth, Scr->BorderBevelWidth, cp, on, True, False); return; } cw = ch = Scr->TitleHeight; if (cw * 2 > tmp_win->attr.width) cw = tmp_win->attr.width / 2; if (ch * 2 > tmp_win->attr.height) ch = tmp_win->attr.height / 2; cwbw = cw + tmp_win->frame_bw3D; chbw = ch + tmp_win->frame_bw3D; #ifdef USE_ORIGINAL_CORNERS THbw = Scr->TitleHeight + tmp_win->frame_bw3D; fhbwchbw = tmp_win->frame_height + tmp_win->frame_bw3D - 3 * chbw; fhTHchbw = tmp_win->frame_height - (Scr->TitleHeight + ch + 2 * tmp_win->frame_bw3D); /* client upper left corner */ if (tmp_win->squeeze_info && tmp_win->title_x > tmp_win->frame_bw3D) Draw3DCorner (tmp_win->frame, 0, Scr->TitleHeight, cwbw, chbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, 0); /* client top bar */ if (tmp_win->squeeze_info) Draw3DBorder (tmp_win->frame, THbw, tmp_win->title_height, tmp_win->frame_width - 2 * cwbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, off, True, False); /* client upper right corner */ if (tmp_win->squeeze_info && tmp_win->title_x + tmp_win->title_width + tmp_win->frame_bw3D < tmp_win->frame_width) Draw3DCorner (tmp_win->frame, tmp_win->frame_width - cwbw, Scr->TitleHeight, cwbw, chbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, 1); /* client left bar */ if (tmp_win->squeeze_info && tmp_win->title_x > tmp_win->frame_bw3D) Draw3DBorder (tmp_win->frame, 0, THbw + ch, tmp_win->frame_bw3D, fhbwchbw, Scr->BorderBevelWidth, cp, off, True, False); else Draw3DBorder (tmp_win->frame, 0, THbw, tmp_win->frame_bw3D, fhTHchbw, Scr->BorderBevelWidth, cp, off, True, False); /* client right bar */ if (tmp_win->squeeze_info && tmp_win->title_x + tmp_win->title_width + tmp_win->frame_bw3D < tmp_win->frame_width) Draw3DBorder (tmp_win->frame, tmp_win->frame_width - tmp_win->frame_bw3D, THbw + ch, tmp_win->frame_bw3D, fhbwchbw, Scr->BorderBevelWidth, cp, off, True, False); else Draw3DBorder (tmp_win->frame, tmp_win->frame_width - tmp_win->frame_bw3D, THbw, tmp_win->frame_bw3D, fhTHchbw, Scr->BorderBevelWidth, cp, off, True, False); /* client lower left corner */ Draw3DCorner (tmp_win->frame, 0, tmp_win->frame_height - chbw, cwbw, chbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, 3); /* client bottom bar */ Draw3DBorder (tmp_win->frame, THbw, tmp_win->frame_height - tmp_win->frame_bw3D, tmp_win->frame_width - 2 * cwbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, off, True, False); /* client lower right corner */ Draw3DCorner (tmp_win->frame, tmp_win->frame_width - cwbw, tmp_win->frame_height - chbw, cwbw, chbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, 2); /* titlebar upper left corner */ Draw3DCorner (tmp_win->frame, tmp_win->title_x - tmp_win->frame_bw3D, 0, cwbw, THbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, 0); /* titlebar top bar */ Draw3DBorder (tmp_win->frame, tmp_win->title_x + cw, 0, tmp_win->title_width - 2 * cw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, off, True, False); /* titlebar upper right corner */ Draw3DCorner (tmp_win->frame, (tmp_win->title_width > 2 * Scr->TitleHeight) ? tmp_win->title_x + tmp_win->title_width - Scr->TitleHeight : tmp_win->frame_width - cwbw, 0, cwbw, THbw, tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, 1); #else /* USE_ORIGINAL_CORNERS */ /* client */ borderdashoffset = 1; Draw3DBorder (tmp_win->frame, 0, Scr->TitleHeight, tmp_win->frame_width, tmp_win->frame_height - Scr->TitleHeight, Scr->BorderBevelWidth, cp, off, True, False); borderdashoffset = 1; Draw3DBorder (tmp_win->frame, tmp_win->frame_bw3D - Scr->BorderBevelWidth, Scr->TitleHeight + tmp_win->frame_bw3D - Scr->BorderBevelWidth, tmp_win->frame_width - 2 * tmp_win->frame_bw3D + 2 * Scr->BorderBevelWidth, tmp_win->frame_height - 2 * tmp_win->frame_bw3D + 2 * Scr->BorderBevelWidth - Scr->TitleHeight, Scr->BorderBevelWidth, cp, on, True, False); if (!Scr->NoBorderDecorations) /* djhjr - 10/20/02 */ { /* upper left corner */ if (tmp_win->title_x == tmp_win->frame_bw3D) Draw3DBevel (tmp_win->frame, 0, Scr->TitleHeight + tmp_win->frame_bw3D, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 222); else { if (tmp_win->title_x > tmp_win->frame_bw3D + cwbw) Draw3DBevel (tmp_win->frame, cwbw, Scr->TitleHeight, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 1); Draw3DBevel (tmp_win->frame, 0, Scr->TitleHeight + chbw, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 2); } } /* upper right corner */ if ((i = tmp_win->title_x + tmp_win->title_width + tmp_win->frame_bw3D) == tmp_win->frame_width) Draw3DBevel (tmp_win->frame, tmp_win->frame_width - tmp_win->frame_bw3D, Scr->TitleHeight + tmp_win->frame_bw3D, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 222); else { if (!Scr->NoBorderDecorations) /* djhjr - 10/20/02 */ { if (i < tmp_win->frame_width - cwbw) Draw3DBevel (tmp_win->frame, tmp_win->frame_width - cwbw, Scr->TitleHeight, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 1); Draw3DBevel (tmp_win->frame, tmp_win->frame_width - tmp_win->frame_bw3D, Scr->TitleHeight + chbw, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 2); } } if (!Scr->NoBorderDecorations) /* djhjr - 10/20/02 */ { /* lower left corner */ Draw3DBevel (tmp_win->frame, cwbw, tmp_win->frame_height - tmp_win->frame_bw3D, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 1); Draw3DBevel (tmp_win->frame, 0, tmp_win->frame_height - chbw, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 2); /* lower right corner */ Draw3DBevel (tmp_win->frame, tmp_win->frame_width - cwbw, tmp_win->frame_height - tmp_win->frame_bw3D, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 1); Draw3DBevel (tmp_win->frame, tmp_win->frame_width - tmp_win->frame_bw3D, tmp_win->frame_height - chbw, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 2); } /* title */ borderdashoffset = 0; Draw3DBorder (tmp_win->frame, tmp_win->title_x - tmp_win->frame_bw3D, tmp_win->title_y - tmp_win->frame_bw3D, tmp_win->title_width + 2 * tmp_win->frame_bw3D, Scr->TitleHeight + tmp_win->frame_bw3D, Scr->BorderBevelWidth, cp, off, True, False); borderdashoffset = 0; Draw3DBorder (tmp_win->frame, tmp_win->title_x - Scr->BorderBevelWidth, tmp_win->title_y - Scr->BorderBevelWidth, tmp_win->title_width + 2 * Scr->BorderBevelWidth, Scr->TitleHeight, Scr->BorderBevelWidth, cp, on, True, False); /* upper left corner */ if (tmp_win->title_x == tmp_win->frame_bw3D) { /* this 'if (...) else' - djhjr - 10/20/02 */ if (Scr->NoBorderDecorations) { Draw3DNoBevel(tmp_win->frame, tmp_win->title_x - tmp_win->frame_bw3D, Scr->TitleHeight + tmp_win->frame_bw3D, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? off : on, False); } else { gc = setBevelGC(2, (Scr->BeNiceToColormap) ? on : off, cp); /* djhjr - 4/29/98 XDrawLine (dpy, tmp_win->frame, gc, tmp_win->title_x - 2, Scr->TitleHeight + tmp_win->frame_bw3D - 4, tmp_win->title_x - 2, Scr->TitleHeight + tmp_win->frame_bw3D - 1); XDrawLine (dpy, tmp_win->frame, gc, tmp_win->title_x - 1, Scr->TitleHeight + tmp_win->frame_bw3D - 4, tmp_win->title_x - 1, Scr->TitleHeight + tmp_win->frame_bw3D - 1); */ for (j = 1; j <= Scr->BorderBevelWidth; j++) XDrawLine (dpy, tmp_win->frame, gc, tmp_win->title_x - j, Scr->TitleHeight + tmp_win->frame_bw3D - 2 * Scr->BorderBevelWidth, tmp_win->title_x - j, Scr->TitleHeight + tmp_win->frame_bw3D - Scr->BorderBevelWidth - 1); Draw3DBevel (tmp_win->frame, tmp_win->title_x + cw, 0, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 1); } } else { Draw3DBevel (tmp_win->frame, tmp_win->title_x - tmp_win->frame_bw3D, Scr->TitleHeight, tmp_win->frame_bw3D, cp, off, 3); } /* upper right corner */ if (i == tmp_win->frame_width) { /* this 'if (...) else' - djhjr - 10/20/02 */ if (Scr->NoBorderDecorations) { Draw3DNoBevel(tmp_win->frame, tmp_win->frame_width - tmp_win->frame_bw3D, Scr->TitleHeight + tmp_win->frame_bw3D, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? off : on, False); } else { gc = setBevelGC(1, (Scr->BeNiceToColormap) ? off : on, cp); /* djhjr - 4/29/98 gc = setBevelGC(1, on, cp); XDrawLine (dpy, tmp_win->frame, gc, tmp_win->title_x + tmp_win->title_width, Scr->TitleHeight + tmp_win->frame_bw3D - 2, tmp_win->title_x + tmp_win->title_width, Scr->TitleHeight + tmp_win->frame_bw3D - 2); */ for (j = 0; j < Scr->BorderBevelWidth; j++) XDrawLine (dpy, tmp_win->frame, gc, tmp_win->title_x + tmp_win->title_width - 1, Scr->TitleHeight + tmp_win->frame_bw3D - Scr->BorderBevelWidth + j - 1, tmp_win->title_x + tmp_win->title_width + Scr->BorderBevelWidth - j - 1, Scr->TitleHeight + tmp_win->frame_bw3D - Scr->BorderBevelWidth + j - 1); Draw3DBevel (tmp_win->frame, tmp_win->title_x + tmp_win->title_width - cw, 0, tmp_win->frame_bw3D, cp, (Scr->BeNiceToColormap) ? on : off, 1); } } else { Draw3DBevel (tmp_win->frame, tmp_win->title_x + tmp_win->title_width, Scr->TitleHeight, tmp_win->frame_bw3D, cp, off, 4); } #endif /* USE_ORIGINAL_CORNERS */ } /* djhjr - 4/21/96 */ void PaintIcon (tmp_win) TwmWindow *tmp_win; { /* djhjr - 5/5/98 if (Scr->use3Diconmanagers) { */ /* was 'Scr->use3Dicons' - djhjr - 8/11/98 */ if (Scr->IconBevelWidth > 0) { /* Draw3DBorder (tmp_win->icon_w, 0, tmp_win->icon_height, tmp_win->icon_w_width, Scr->IconFont.height + 6, Scr->BorderBevelWidth, tmp_win->iconc, off, False, False); */ /* was 'Scr->BorderBevelWidth' - djhjr - 8/11/98 */ Draw3DBorder (tmp_win->icon_w, 0, 0, tmp_win->icon_w_width, tmp_win->icon_w_height, Scr->IconBevelWidth, tmp_win->iconc, off, False, False); } /* font was font.font->fid - djhjr - 9/14/03 */ FBF(tmp_win->iconc.fore, tmp_win->iconc.back, Scr->IconFont); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, tmp_win->icon_w, &Scr->IconFont, #else XDrawString (dpy, tmp_win->icon_w, #endif Scr->NormalGC, tmp_win->icon_x, tmp_win->icon_y, tmp_win->icon_name, strlen(tmp_win->icon_name)); } /* djhjr - 4/20/96 */ void PaintTitle (tmp_win) TwmWindow *tmp_win; { /* made static - djhjr - 6/18/99 */ static int en = 0, dots = 0; int bwidth = Scr->TBInfo.width + Scr->TBInfo.pad; int left = (Scr->TBInfo.nleft) ? Scr->TBInfo.leftx + (Scr->TBInfo.nleft * bwidth) - Scr->TBInfo.pad : 0; int right = (Scr->TBInfo.nright) ? (Scr->TBInfo.nright * bwidth) - Scr->TBInfo.pad : 0; /* djhjr - 3/29/98 */ int i, j, slen = strlen(tmp_win->name); char *a = NULL; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!en) en = MyFont_TextWidth(&Scr->TitleBarFont, "n", 1); #else if (!en) en = XTextWidth(Scr->TitleBarFont.font, "n", 1); #endif /* * clip the title a couple of characters less than the width of * the titlebar plus padding, and tack on ellipses - this is a * little different than the icon manager's... * * djhjr - 3/29/98 */ if (Scr->NoPrettyTitles == FALSE) /* for rader - djhjr - 2/9/99 */ { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT i = MyFont_TextWidth(&Scr->TitleBarFont, tmp_win->name, slen); #else i = XTextWidth(Scr->TitleBarFont.font, tmp_win->name, slen); #endif /* DUH! - djhjr - 6/18/99 j = tmp_win->title_width - 2 * Scr->TBInfo.rightoff; */ /* djhjr - 10/18/02 if (!dots) dots = XTextWidth(Scr->TitleBarFont.font, "...", 3) + en; j = tmp_win->title_width - Scr->TBInfo.titlex - Scr->TBInfo.rightoff - dots; */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!dots) dots = MyFont_TextWidth(&Scr->TitleBarFont, "...", 3); #else if (!dots) dots = XTextWidth(Scr->TitleBarFont.font, "...", 3); #endif j = tmp_win->title_width - Scr->TBInfo.titlex - Scr->TBInfo.rightoff - en; /* djhjr - 10/18/02 * djhjr - 5/5/98 * * was 'Scr->use3Dtitles' - djhjr - 8/11/98 * if (Scr->TitleBevelWidth > 0) j -= Scr->TitleBevelWidth; */ /* reworked this stuff - djhjr - 10/18/02 */ if (dots >= j) slen = 0; else if (i > j) { while (i >= 0) { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (MyFont_TextWidth(&Scr->TitleBarFont, #else if (XTextWidth(Scr->TitleBarFont.font, #endif tmp_win->name, i) + dots < j) { slen = i; break; } i--; } a = (char *)malloc(slen + 4); memcpy(a, tmp_win->name, slen); strcpy(a + slen, "..."); slen += 3; } } /* font was font.font->fid - djhjr - 9/14/03 */ FBF(tmp_win->title.fore, tmp_win->title.back, Scr->TitleBarFont); /* djhjr - 10/18/02 */ #if 0 /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0) { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, tmp_win->title_w, &Scr->TitleBarFont, #else XDrawString (dpy, tmp_win->title_w, #endif Scr->NormalGC, /* djhjr - 4/29/98 Scr->TBInfo.titlex + en, Scr->TitleBarFont.y + 2, */ /* djhjr - 5/5/98 Scr->TBInfo.titlex + en, Scr->TitleBarFont.y + Scr->TitleBevelWidth + 1, */ Scr->TBInfo.titlex + Scr->TitleBevelWidth + en, Scr->TitleBarFont.y, (a) ? a : tmp_win->name, slen); } else #endif /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, tmp_win->title_w, &Scr->TitleBarFont, #else XDrawString (dpy, tmp_win->title_w, #endif Scr->NormalGC, Scr->TBInfo.titlex, Scr->TitleBarFont.y, (a) ? a : tmp_win->name, slen); /* free the clipped title - djhjr - 3/29/98 */ if (a) free(a); /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0) { /* Draw3DBorder (tmp_win->title_w, Scr->TBInfo.titlex, 0, tmp_win->title_width - Scr->TBInfo.titlex - Scr->TBInfo.rightoff, Scr->TitleHeight, Scr->TitleBevelWidth, tmp_win->title, off, True, False); */ /* djhjr - 3/12/97 Draw3DBorder (tmp_win->title_w, Scr->TBInfo.rightoff, Scr->FramePadding, tmp_win->title_width - 2 * Scr->TBInfo.rightoff, Scr->TitleHeight - 2 * Scr->FramePadding, Scr->TitleBevelWidth, tmp_win->title, off, True, False); */ /* djhjr - 10/17/02 Draw3DBorder (tmp_win->title_w, Scr->TBInfo.leftx + left, Scr->FramePadding, tmp_win->title_width - (left + right), Scr->TitleHeight - 2 * Scr->FramePadding, Scr->TitleBevelWidth, tmp_win->title, off, False, False); */ if (Scr->FramePadding + Scr->ButtonIndent > 0) { Draw3DBorder(tmp_win->title_w, 0, 0, tmp_win->title_width, Scr->TitleHeight, Scr->TitleBevelWidth, tmp_win->title, off, False, False); } else { Draw3DBorder(tmp_win->title_w, left, 0, tmp_win->title_width - (left + right), Scr->TitleHeight, Scr->TitleBevelWidth, tmp_win->title, off, False, False); } } } /* djhjr - 11/17/97 */ /* collapsed the two functions PTB() and PTBH() - djhjr - 8/10/98 */ /* djhjr - 10/30/02 */ void PaintTitleButton(tmp_win, tbw, onoroff) TwmWindow *tmp_win; TBWindow *tbw; int onoroff; /* 0 = no hilite 1 = hilite off 2 = hilite on */ { Image *image; TitleButton *tb; /* djhjr - 5/23/98 8/10/98 */ ColorPair cp; if (!tbw->window) return; tb = tbw->info; /* djhjr - 5/23/98 8/10/98 */ if (Scr->ButtonColorIsFrame) cp = (onoroff == 2) ? tmp_win->border : tmp_win->border_tile; else cp = tmp_win->title; cp.fore = tmp_win->title.fore; image = GetImage(tb->name, tb->width, tb->height, Scr->ButtonBevelWidth * 2, cp); XCopyArea(dpy, image->pixmap, tbw->window, Scr->NormalGC, tb->srcx, tb->srcy, tb->width, tb->height, tb->dstx, tb->dsty); /* djhjr - 8/10/98 8/18/98 */ /* was 'Scr->TitleBevelWidth' - djhjr - 8/11/98 */ if (Scr->ButtonBevelWidth > 0) Draw3DBorder(tbw->window, 0, 0, tb->width, tb->height, Scr->ButtonBevelWidth, cp, off, False, False); } /* djhjr - 4/19/96 */ /* re-arranged - djhjr - 4/5/98 */ void PaintTitleHighlight(tmp_win, onoroff) TwmWindow *tmp_win; Bool onoroff; { /* djhjr - 4/3/98 */ if (!tmp_win->titlehighlight) return; if (tmp_win->hilite_w) { if (onoroff == on) XMapWindow (dpy, tmp_win->hilite_w); else XUnmapWindow (dpy, tmp_win->hilite_w); } else if (Scr->hiliteName && tmp_win->title_height != 0) DrawTitleHighlight(tmp_win, onoroff); /* djhjr - 10/25/02 */ } /* djhjr - 4/2/98 10/18/02 */ int ComputeHighlightWindowWidth(tmp_win) TwmWindow *tmp_win; { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT int en = MyFont_TextWidth(&Scr->TitleBarFont, "n", 1); #else int en = XTextWidth(Scr->TitleBarFont.font, "n", 1); #endif return (tmp_win->rightx - tmp_win->highlightx - en); } vtwm-5.4.7/doc/0040775000015300001300000000000010260161275012063 5ustar callumfidvtwm-5.4.7/doc/.vtwmrc-marcel0100664000015300001300000005737310237641630014665 0ustar callumfid############################################################ ## ## ## Fri Jul 30 14:37:25 EDT 1993 ## ## ## ## I am including this vtwmrc in the distribution ## ## because it is so incredibly well organized and shows ## ## the differences between twm, vtwm, and tvtwm. ## ## ## ## As an example of what you can learn from this, the ## ## vtwm VirtualDesktopFont and the tvtwm VirtualFont ## ## both mean the same thing and *ought* to have the ## ## same name! ## ## ## ############################################################ #============================================================================= # File: ~/.?twmrc V1.00 93/07/08 M.J.E. Mol # marcel@duteca.et.tudelft.nl # # This file is read by the twm, vtwm or tvtwm Xwindow managers. # ############################################################################ # Font Section ############################################################################ # # TWM Fonts # # ResizeFont "fixed" # resize dimension indicator # "9x15" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" # IconManagerFont "6x12" #"variable" # "6x10" IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*" # MenuFont "variable" # "6x10" "-*-helvetica-bold-r-normal--*-140-*-*-*-*-iso8859-1" MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" # TitleFont "variable" # "6x13" "6x10" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" # # VTWM Fonts # # DoorFont "6x10" # Needed to allow doors DoorFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*" VirtualDesktopFont "variable" # # TVTWM Fonts # #VirtualFont "variable" # 5x8 #MenuTitleFont "-adobe-helvetica-bold-r-normal--*-140-*-*-*-*-*-*" ############################################################################ # Variables Section ############################################################################ # # TWM Boolean Variables # AutoRelativeResize # Allow resize from any point within the window ClientBorderWidth # Take border width from initial border width of window DecorateTransients # Transient windows should have titlebars DontMoveOff # Do not allow windows to be moved of the screen # ForceIcons # Force use of "Icons" list instead of client-supplied one # InterpolateMenuColors # Gradually changing menu colors # NoBackingStore # Backing store for twm's menus NoCaseSensitive # For sorting icon names in icon manager # NoDefaults # Needed when building own title buttons and bindings NoGrabServer # When popping up menus or moving opaque windows # NoIconManagers # Don't create icon managers # NoMenuShadows # Don't draw drop shadows behind menus # NoRaiseOnDeiconify # Don't automatically raise windows on de-iconify # NoRaiseOnMove # Don't automatically raise when windows are moved # NoRaiseOnResize # Don't automatically raise when windows are resized # NoRaiseOnWarp # Don't automatically raise window when f.warpto # NoSaveUnders # Repaint instead of save-under for menu selection # NoTitleFocus # Don't set input focus when window is entered # OpaqueMove # F.move window instead of just an outline # RandomPlacement # Don't give ouline-drag for no-geometry windows RestartPreviousState # 'Remember' previous state when window manager is restarted ShowIconManager # Show icon manager on startup # SortIconManager # Sort icons alphabetically in iconmanager WarpUnmapped # Allow f.warpto to de-iconify windows # # VTWM Boolean Variables # # DeiconifyToScreen # De-iconifying puts window on physical screen instead of old position #NotVirtualGeometries # Geometries relative to screen, not over whole desktop # SnapRealScreen # Snap to grid defined in PanDistanceX and PanDistanceY # WarpWindows # move window to real screen instead of moveing real screen # # TVTWM Boolean Variables # #PannerOpaqueScroll # Only useful when StickyAbove is set #ShowVirtualNames # Give virtual desktop windows a name using VirtualFont #StayUpMenus # Only select menuitems when they are pushed #StickyAbove # Sticky windows will always be on top # # TWM Numeric Variables # BorderWidth 2 # Frame border width in pixels ButtonIndent 1 # 0, Title button indentation in pixels ConstrainedMoveTime 400 # Time (msec) in which double click allows only move in hor or vert direction FramePadding 2 # Pixelwidth between titlebar decorations and the window frame IconBorderWidth 2 # Border of icons in pixels MoveDelta 3 # Number of pixels to move before f.move starts working (also f.deltastop) TitleButtonBorderWidth 1 # 0, Distance between title buttons TitlePadding 8 # 16, Distance between title buttons, text and highlight area # XorValue 1 # Outline color setter for move and resize Zoom 16 # Iconify/de-iconfy outline show count # # VTWM Numeric Variables # # AutoPan 5 # Pan when mouse is with % range of edge of screen # AutoRaiseDelay 30000 # == RaiseDelay ? # PanDistanceX 3? # Grid of screens for f.snap # PanDistanceY 3? # Move real screan to closest grid location RaiseDelay 3000 # Milliseconds to delay before AutoRaise/f.autoraise # # TVTWM Numeric Variables # #PannerScale 20 # Scale of deskto panner to real screen #ScrollDistanceX 100 # % scroll when scrolling in virtual desktop #ScrollDistanceY 100 # % scroll when scrolling in virtual desktop #TitleFontPadding 5 # pixels above window titles # # TWM String Variables # # Path to look for bitmaps if they cannot be found in "bitmapFilePath" resource # IconDirectory "/usr/include/X11/bitmaps" # IconDirectory "/usr/include/X11/bitmaps:/usr/local/bitmaps/local" # IconDirectory "/usr/local/X11/bitmaps" IconDirectory "/usr/X386/lib/X11/xdtm/icons/small" MaxWindowSize "30000x30000" UnknownIcon "icon" # icon bitmap to use when no other found UsePPosition "on" # program requested location, "on" "off" "nonzero" # # VTWM String Variables # # RealScreenPixmap "realscr.bm" # decorate virt. desktop realscreen (panner) # VirtualBackgroundPixmap "something" # decoration for virtual desktop # # TVTWM String Variables # #PannerBackgroundPixmap "realscr.bm" # decoration of panner #PannerGeometry "=100x250-0+0" #PannerState "normal" # normal, iconic, withdrawn #VirtualDesktop "3x2" #VirtualDesktopBackgroundPixmap "something" # decoration for virtual desktop # # TWM Complex Variables # IconManagerGeometry "=100x250-0+0" 1 # 1 column # Define regions to put icons (multiple lines allowed) # IconRegion geomstring # define geometry) # vgrav # North or South fill direction # hgrav # East for West fill direction # gridwidth # grid dimensions to put icons in # gridheight IconRegion "=300x300+200-0" North East 30 30 # # VTWM Complex Variables # #VirtualDesktop "150x100-0-0" 20 # Panner geometry and scale VirtualDesktop "3x2-0-0" 20 # Panner geometry and scale # # TWM List Variables # Color { # TWM Simple Color DefaultBackground "white" # "maroon" Sizing and information windows DefaultForeground "black" # "gray85" MenuBackground "maroon" MenuForeground "black" # "gray85" MenuShadowColor "blue" MenuTitleBackground "gray70" # "red" # f.title color MenuTitleForeground "maroon" # "black" # TWM Complex Color BorderColor "LightGoldenRod" { #"slategrey" "xterm" "red" "seyon" "orange" } BorderTileBackground "white" { } # Unhighlighted window borders BorderTileForeground "black" { } IconBackground "maroon" { } # "white" black IconBorderColor "black" { } # "gray85"white IconForeground "black" { } # "gray85" white IconManagerBackground "white" { } # "maroon" IconManagerForeground "black" { } # "gray85" IconManagerHighlight "blue" {"xterm" "red" "seyon" "orange"} TitleBackground "sea green" {"xterm" "steelblue" "seyon" "brown"} TitleForeground "white" { } # "gray85" # VTWM Simple Color RealScreenBackground "orange" # virtual desktop realscreen indicator RealScreenForeground "yellow" # needs RealScreenPixmap VirtualBackground "green" VirtualForeground "red" # VTWM Complex Color DesktopDisplayBackground "pink" { } # color of windows in virtual desktop windows and in iconmanager DesktopDisplayBorder "green" { } # border color of windows in virtual desktop window DesktopDisplayForeground "white" { } # color of text in windows in virtual desktop window and iconmanager, needs VirtualDesktopFont DoorBackGround "orange" { } DoorForeGround "blue" { } # TVTWM Simple Color #PannerBackground "yellow" #PannerForeground "blue" #VirtualDesktopBackground "steelblue" # Whole screen, #VirtualDesktopForeground "black" # use with VirtualBackgroundPixm # TVTWM Complex Color #VirtualBackground "orange" { } #VirtualForeground "green" { } } Monochrome { # TWM Simple Color DefaultBackground "white" DefaultForeground "black" MenuBackground "white" MenuForeground "black" MenuShadowColor "black" MenuTitleBackground "white" # black, f.title color MenuTitleForeground "black" # white # TWM Complex Color BorderColor "black" { } BorderTileBackground "white" { } BorderTileForeground "black" { } IconBackground "white" { } # black IconBorderColor "black" { } # white IconForeground "black" { } # white IconManagerBackground "white" { } IconManagerForeground "black" { } IconManagerHighlight "black" { } TitleBackground "black" { } TitleForeground "white" { } # VTWM Simple Color RealScreenBackground "black" # virtual desktop realscreen indicator RealScreenForeground "white" # needs RealScreenPixmap VirtualBackground "white" VirtualForeground "black" # VTWM Complex Color DesktopDisplayBackground "black" { } # color of windows in virtual desktop windows and in iconmanager DesktopDisplayBorder "white" { } # border color of windows in virtual desktop window DesktopDisplayForeground "white" { } # color of text in windows in virtual desktop window and iconmanager, needs VirtualDesktopFont DoorBackGround "white" { } DoorForeGround "black" { } # TVTWM Simple Color #PannerBackground "black" #PannerForeground "white" #VirtualDesktopBackground "white" # Whole screen, #VirtualDesktopForeground "black" # use with VirtualBackgroundPixm # TVTWM Complex Color #VirtualBackground "white" { } #VirtualForeground "black" { } } AutoRaise { # Auto raise windows "XTerm" "x" "XV" "Seyon" "Post" "emacs" "Ghost" "gv" "gs" # TVTWM VTWM "Virtual Desktop" "VTWM Icon Manager" "TWM Icon Manager" "Twm Door" } Cursors { # cursorname "string" for names in include/X11/cursorfont.h # cursoname "image" "mask" for cursors taken from bitmap files Frame "top_left_arrow" # "spider" Title "top_left_arrow" Icon "top_left_arrow" IconMgr "top_left_arrow" Move "fleur" Resize "fleur" Menu "sb_left_arrow" Button "hand2" Wait "watch" Select "dot" Destroy "pirate" # VTWM Door "exchange" Virtual "rtl_logo" Desktop "dotbox" } # DontIconifyByUnmapping { } # Iconify to icons instead of to icon manager # IconifyByUnmapping { } # Don't try to map any icons. Remap through iconmanager, f.warpto or TwmWindows menu IconManagerDontShow { "xclock" "xload" "xbiff" "xmeter" "xcb" "Virtual Desktop" "VTWM Icon Manager" "TWM Icon Manager" "Twm Door" } IconManagers { # Definition of iconmanagers... # "winname" ["iconname"] "geometry" columns # "XTerm" "=300x5+800+5" 5 } # IconManagerShow { } Icons { # "XTerm" "xterm.icon" "XTerm" "pixmap.xpm" # "Seyon" "seyon.icon" } # MakeTitle { } # Create title bars even when NoTitle has been specified NoHighLight { # i.e. not drawing borders in bordercolor # "xclock" # "xload" # "xeyes" # "xbiff" # "xbehold" # "xmeter" # "oclock" # "xcb" "Virtual Desktop" "VTWM Icon Manager" "TWM Icon Manager" "Twm Door" } NoStackMode { } # ignore stacking request for these windows NoTitle { # don't show a titlebar for these windows "XClock" # "xclock" # "xload" # "xeyes" "xbiff" # "xbehold" # "xmeter" # "oclock" # "xcb" "Virtual Desktop" "VTWM Icon Manager" "TWM Icon Manager" "Twm Door" } NoTitleHighlight { } # don't highlight titlebar when focused in window Pixmaps { # "bitmapfile" # TitleHighlight "gray1" # VTWM # RealScreenPixmap "something" # VirtualBackgroundPixmap "something else" } # SaveColor { } # titlebar is only as large as is needed for decorations # { "name" left|center|right nominator denominator } # SqueezeTitle { } DontSqueezeTitle { } # Don't make title bar as short a possible StartIconified { "console" } WarpCursor { # warp cursor in window when de-iconified "xterm" "seyon" "nn" } WindowRing { # windows to cycle through by f.warpring "xterm" "seyon" "nn" } # # VTWM List Variables # DontShowInDisplay { # Don't show in virtual desktop window "xclock" "XBiff" # TVTWM VTWM "TWM Windows" "Virtual Desktop" "VTWM Icon Manager" "TWM Icon Manager" "Twm Door" } Doors { # remember to set DoorFont # "winname" "location" "jumpTo" "Home" "60x15+650+1" "+0+0" "Screen 1" "60x15+710+1" "+1024+0" "Screen 2" "60x15+770+1" "+2048+0" "Screen 3" "60x15+650+16" "+0+1024" "Screen 4" "60x15+710+16" "+1024+1024" "Screen 5" "60x15+770+16" "+2048+1024" } # NailedDown { # Keep on physical screen, see Sticky Sticky { # synomym for naileddown "xclock" "xcb" "Virtual Desktop" "VTWM Icon Manager" "TWM Icon Manager" "Twm Door" } # # TVTWM List Variables # #IconTitle { } # Give titles to icons, even when NoIconTitle is set #NoIconTitle { } # Give titles to icons, even when NoIconTitle is set # # Put these two in at end of variable section, before bindings section # DefaultFunction f.beep # for non-bound keys or buttons # WindowFunction f.deiconify # function to perform when window is selected from "TwmWindows" menu ###################################################################### # End of Variable Section ###################################################################### # Functions ... # f.circledown # f.circleup # f.deiconify # f.saveyourself FKEYWORD F_SAVEYOURSELF # f.setrealscreen FSKEYWORD F_SETREALSCREEN # f.snap FKEYWORD F_SNAP # f.snugdesktop FKEYWORD F_SNUGDESKTOP # f.snugwindow FKEYWORD F_SNUGWINDOW # f.nexticonmgr FKEYWORD F_NEXTICONMGR # f.previconmgr FKEYWORD F_PREVICONMGR # f.warptoiconmgr FSKEYWORD F_WARPTOICONMGR # f.warptoscreen FSKEYWORD F_WARPTOSCREEN ###################################################################### # Titlebuttons ###################################################################### # bitmaps are stored in /usr/include/X11/bitmaps # ":bitmap" uses internal bitmap # (:dot, :xlogo, :iconify, :resize, :question, :delete, :menu) #--------------------------------------------------------------------- RightTitleButton ":menu" = f.menu "WindowSettings" RightTitleButton ":iconify" = f.iconify RightTitleButton "jpzoom" = f.zoom LeftTitleButton ":xlogo" = f.menu "XSettings" ###################################################################### # Button/key bindings ###################################################################### # Button = KEYS : CONTEXT : FUNCTION # Keys can be m (meta) s (shift) c (control) l (lock) m1-5 (meta1-meta5) # Context can be window, title, icon, root, frame, virtual, desktop, door, # iconmgr, all #--------------------------------------------------------------------- Button1 = : root : f.menu "Applications" Button2 = : root : f.menu "WindowManager" Button3 = : root : f.menu "Rlogins" Button1 = : door : f.enterdoor Button1 = : title|icon|iconmgr : f.function "move-or-raise" #f.raise Button2 = : title : f.move Button2 = : icon | iconmgr : f.iconify Button3 = : title|icon|iconmgr : f.function "focus_and_raise" Button1 = c : door : f.deletedoor Button1 = s : all : f.menu "Applications" Button2 = s : title | window : f.move # Don't want to define next: idraw uses that button... #Button3 = s : all : f.menu "Applications" Button1 = m : all : f.menu "WindowSettings" Button2 = m : title | window : f.forcemove Button3 = m : title | icon | iconmgr : f.lower #Button1 = m : window | icon : f.function "move-or-lower" #Button2 = m : window | icon : f.iconify #Button3 = m : window | icon : f.function "move-or-raise" #Button2 = : title : f.raiselower #Button1 = : icon : f.function "move-or-iconify" #"F1" = : all : f.iconify "F2" = : all : f.function "xvi" #"F2" = : all : f.raiselower #"F3" = : all : f.warpring "next" #"F4" = : all : f.warpto "xmh" #"F5" = : all : f.warpto "emacs" "F6" = : title | window : f.iconify #"F6" = : all : f.colormap "next" #"F7" = : all : f.colormap "default" "F9" = : all : f.warpto "idraw" "F10" = : all : f.warpring "next" "F11" = : all : f.warpring "prev" "F14" = : all : f.function "xlock" #"F20" = : all : f.warptoscreen "next" "Delete" = m c : title | window : f.destroy "Left" = : iconmgr : f.lefticonmgr # f.backiconmgr "Right" = : iconmgr : f.righticonmgr # f.forwiconmgr "Down" = : iconmgr : f.downiconmgr "Up" = : iconmgr : f.upiconmgr "Left" = m : all : f.backiconmgr "Right" = m : all : f.forwiconmgr "Up" = m : all : f.upiconmgr "Down" = m : all : f.downiconmgr # # VTWM Desktop Scroll # "Left" = : root : f.panleft "100" "Right" = : root : f.panright "100" "Up" = : root : f.panup "100" "Down" = : root : f.pandown "100" "Left" = s : all : f.panleft "100" "Right" = s : all : f.panright "100" "Up" = s : all : f.panup "100" "Down" = s : all : f.pandown "100" # # TVTWM Desktop Scroll # #"Left" = : root : f.scrolleft #"Right" = : root : f.scrollright #"Up" = : root : f.scrollup #"Down" = : root : f.scrolldown #"Left" = s : all : f.scrolleft #"Right" = s : all : f.scrollright #"Up" = s : all : f.scrollup #"Down" = s : all : f.scrolldown # # Fuctions defined for Buttons #--------------------------------------------------------------------- Function "focus_and_raise" { f.focus f.raise } Function "xlock" { !"xlock -mode swarm -font '8x13' &" } Function "xvi" { !"xvi &" } Function "move-or-lower" { f.move f.deltastop f.lower } Function "move-or-raise" { f.move f.deltastop f.raise } Function "move-or-iconify" { f.move f.deltastop f.iconify } Function "restore-colormap" { f.colormap "default" f.lower } ###################################################################### # Menus ###################################################################### # (default font and geometry for "xterm" are defined in ~/.Xdefaults) #--------------------------------------------------------------------- menu "Applications" { "Applications" ("black":"yellow") f.title "Lock" f.function "xlock" "Xterm" !"xterm -geometry =80x24 &" "nn" ("black":"yellow") !"xnn &" "" f.nop "Misc. Appl." f.menu "MiscAppl" "Window Manager" f.menu "WindowManager" "XSettings" f.menu "XSettings" "WindowSettings" ("black":"cyan") f.menu "WindowSettings" "TWM Windows" f.menu "TWM Windows" "TwmWindows" f.menu "TwmWindows" "Rlogins" f.menu "Rlogins" "Colors" f.menu "Colors" "Xterms" ("white":"green") f.menu "Xterms" "File" f.file "/vtwm.file" } menu "WindowManager" { "Window Manager" f.title "Refresh" f.refresh "Refresh Desktop" f.resetdesktop "Hide Icon Manager" f.hideiconmgr "Show Icon Manager" f.showiconmgr "Sort Icon Manager" f.sorticonmgr "Hide Virtual Desktop" f.hidedesktopdisplay "Show Virtual Desktop" f.showdesktopdisplay "Toggle Virtual Geometries" f.virtualgeometries "Create Door" f.newdoor "Delete Door" f.deletedoor "Focus on Root" f.unfocus "Toggle Autopan" f.autopan "Restart Twm" f.twmrc # f.restart "TWM keys" !"xtwmkeys &" "Backdrops" !"xsetbg `xfiles /usr/local/X11/local/bitmaps`&" "Version" f.version "Exit Twm" f.quit } menu "WindowSettings" { "Window Settings" ("black":"cyan") f.title "Refresh" f.winrefresh "AutoRaise" f.autoraise "Raise" f.raise "Lower" f.lower "Focus" f.focus # f.unfocus "Focus&Raise" f.function "focus_and_raise" "Move" f.move "ForceMove" f.forcemove "Resize" f.resize "Identify" f.identify "Iconify" f.iconify "Zoom" f.menu "Zoom" "Toggle in WarpRing" f.ring "Toggle Nail" f.nail "Squeeze Title Center" f.squeezecenter "Squeeze Title Left" f.squeezeleft "Squeeze Title Right" f.squeezeright "Quit" f.delete "Destroy" f.destroy } menu "Zoom" { "FullZoom" f.fullzoom "LeftZoom" f.leftzoom # f.vlzoom "RightZoom" f.rightzoom # f.vrzoom "TopZoom" f.topzoom # f.htzoom "BottomZoom" f.bottomzoom # f.hbzoom "VerticalZoom" f.zoom "HorizontalZoom" f.horizoom # f.hzoom } menu "MiscAppl" { "Misc. Appl." f.title "" f.nop # "nn" ("black":"yellow") !"xnn &" # "idraw" !"idraw &" "calc" !"xcalc -rv &" # "news" !"xrn &" "man" !"xman &" "fonts" !"xfbrows &" # "archie" !"xarchie &" "bricks" !"xsetroot -bitmap /usr/local/X11/local/bitmaps/wall.xbm&" # "swarm" !"xswarm &" "clock" !"xclock &" "biff" !"xbiff &" "load" !"xload &" # "vi" f.function "xvi" } menu "XSettings" { "XSettings" f.title "" f.nop "Bell Loud" !"xset b 100&" " Normal" !"xset b 50&" " Off" !"xset b off&" " High" !"xset b 50 880&" " Medium" !"xset b 50 440&" " Low" !"xset b 50 220&" "Click Loud" !"xset c 80&" " Normal" !"xset c 40&" " Off" !"xset c off&" "Lock On" !"xset l on&" " Off" !"xset l off&" "Mouse Fast" !"xset m 4 2&" " Normal" !"xset m 2 5&" " Slow" !"xset m 1 1&" } menu "Colors" { "Colors" f.title "Next" f.colormap "next" "Previous" f.colormap "prev" "Default" f.colormap "default" } # xterm-options: # The "-name" specifies the name that applies to resources in ~/.Xdefaults # The "-n" specifies the name that appears in the icon # The "-title" or "-T" specifies the name that appears in the titlebar # icon-name and title are default set to the name of the executable (i.e. # "xterm") or set to the name of the executable after the "-e" option or # set to the name after the "-name" option menu "Xterms" { "Xterms" f.title "" f.nop "xterm -fn 6x13" !"xterm -fn 6x13 -geometry =80x24 &" "xterm -fn 8x13" !"xterm -fn 8x13 -geometry =80x24 &" "xterm -fn 9x15" !"xterm -fn 9x15 -geometry =80x24 &" } menu "Rlogins" { "Rlogins" f.title "Local" !"xterm -T `hostname` &" "" f.nop "baldrick" ("black":"green") !"xterm -T baldrick -e rlogin baldrick &" "bean" ("black":"green") !"xterm -T bean -e rlogin bean &" "percy" ("black":"green") !"xterm -T percy -e rlogin percy &" "" f.nop "SUN4s" f.menu "SUN4s" "SUN3s" f.menu "SUN3s" "" f.nop "Telnet" ("black":"yellow") !"xterm -name telnet -e telnet &" } menu "SUN4s" { "SUN4s" f.title "" f.nop "baldrick" ("black":"green") !"xterm -T baldrick -e rlogin baldrick &" "bean" ("black":"green") !"xterm -T bean -e rlogin bean &" } menu "SUN3s" { "SUN3s" f.title "" f.nop "percy" ("black":"green") !"xterm -T percy -e rlogin percy &" "darling" ("black":"green") !"xterm -T darling -e rlogin darling &" "bob" ("black":"green") !"xterm -T bob -e rlogin bob &" } vtwm-5.4.7/doc/CHANGELOG0100664000015300001300000016263410237662015013310 0ustar callumfid ============================================================ A COMPLETE LISTING OF CHANGES MADE TO VTWM SINCE VERSION 5.0 IN CHRONOLOGICAL ORDER FROM MOST RECENT CHANGES TO EARLIEST. ============================================================ ============ vtwm-5.4.N.tar.gz ============= hawkeyd@visi.com (D. J. Hawkey Jr. aka djhjr) May 2005 VTWM 5.4.7 release [add_window.c] [iconmgr.c] [parse.c] [screen.h] [twm.c] Added PointerPlacement [menus.c] Fix no-sound support October 1, 2004 VTWM 5.4.6b (bugfix release) released for public consumption. vtwm-5.4.6a-to-5.4.6b.udiff patch file released. March 9, 2004 [events.c] [menus.c] Added checks for the number of rodent buttons and VTWM Windows entries. Fixed a bug causing sporadic restarts when realizing unmanaged windows. From Jennifer Elaan , Seth Robertson , and Callum Gibson : Patches for the above. November 2 - 11, 2003 [applets.c] [desktop.c] [events.c] [menus.c] [parse.c] [resize.c] [twm.c] [screen.h] Fixed a vertical placement error in applet regions. The f.movescreen function supports sound and honors cancels now (moved functionality from event handlers to the function itself). Fixed "raise window regardless of MoveDelta" bugs introduced on May 23 - 27. Optionally preserve the previous move and resize raise behaviour. Some shaping optimizations. Depreciated the motion event handler. Reduced server grabs. Added the following variable: RaiseOnStart September 21 & 22, 2003 Tweaked stuff all over the place for a cleaner compile. [add_window.c] [events.c] [menus.c] Fixed an UsePPosition bug, a restart bug, a sound bug, and an instance of unfreed memory. September 18, 2003 [*akefile*] [parse.c] Let lexers track line numbers by default. September 14 - 17, 2003 Moved the nexpm/ directory into contrib/. Moved the sample resource files and directories in the contrib/ directory into contrib/vtwmrc/. [*akefile*] [add_window.c] [doors.c] [events.c] [gc.c] [icons.c] [menus.c] [parse.c] [resize.c] [twm.c] [util.c] [twm.h] [util.h] Added internationalization (I18N) support. Woo-woo! Better handling of missing or empty string resources. September 10, 2003 [add_window.c] [gram.y] [menus.c] [parse.c] [twm.c] [add_window.h] [screen.h] [twm.h] Added code to ignore "shift states" for bindings. Added the following variable: IgnoreModifiers k June 3, 2003 [menus.c] Better sound handling in the (de)iconify and warp functions. May 27, 2003 [iconmgr.c] [events.c] [menus.c] [resize.c] Fixed a bug when removing icon manager entries. Almost fixed stacking order bugs when resizing windows (the raise still occurs before the movement when opaque resizes are done on windows with squeezed titlebars). Cancelled resizes now work correctly, except for the above case. May 23 & 24, 2003 [menus.c] Fixed stacking order bugs when moving windows (the raise now occurs after the movement). Cancelled moves now work correctly. November 15, 2002 [menus.c] [parse.c] [sound.c] [parse.h] [sound.h] Allow sounds to be played "ad hoc". Added the following function: f.playsound s November 8 & 11, 2002 [add_window.c] [events.c] [ parse.c] [twm.h] Support for MWM hints (currently, honor "noborder" and "notitle" hints). Fixed some off-by-clientborderwidth window placement bugs, an off-by-one malloc(), a null pointer reference, and a ConfigureNotify propogation bug. From Jonathan Paisley : Patches for the above. November 6 & 7, 2002 [*akefile*] [twm.c] [vtwm.man] Reduced the size of the compiled-in system.vtwmrc array. The command line can specify that no startup file be used. Updated the man page to reflect the compiled-in defaults. October 30 & 31, 2002 [system.vtwmrc*] [add_window.c] [events.c] [icons.c] [gram.y] [iconmgr.c] [menus.c] [parse.c] [twm.c] [util.c] [iconmgr.h] [menus.h] [screen.h] [twm.h] Opened up icon managers and menus to user-specified images. The interfaces to all the built-in pixmap drawing functions have been made uniform. Added the following keywords: IconManagerPixmap s MenuIconPixmap s Changed the following variable: ShallowReliefWindowButton October 27, 2002 [add_window.c] [gram.y] [events.c] [menus.c] [parse.c] [twm.c] [menus.h] [screen.h] The f.warpto function accepts VTWM-style wildcards now. The f.warpring function has been fixed. Again. Prohibit windows from being added to the WindowRing list. From Jonathan Paisley : Patches for NoWindowRing. Added the following variable: NoWindowRing l October 25 & 26, 2002 [add_window.c] [events.c] [parse.c] [resize.c] [twm.c] [util.c] [screen.h] [twm.h] Obsoleted the SunkFocusHighlightWindow variable with new built-in highlight pixmaps, :xpm:raisedbox, :xpm:sunkenbox, :xpm:raisedlines, and :xpm:sunkenlines. Fixed some titlebar highlight exposure bugs. Changed the following keyword: TitleHighlight s Removed the following variable: SunkFocusHighlightWindow October 20, 2002 [parse.c] [twm.c] [util.c] [screen.h] Chmod 0600 $(HOME)/vtwm.pid. Allow the 3D borders of titled windows to be unadorned. Fixed the 3D borders of titled windows when BeNiceToColormap is set. Added the following variable: NoBorderDecorations October 17 & 18, 2002 [system.vtwmrc*] [add_window.c] [gram.y] [menus.c] [twm.c] [util.c] Refinements to the titlebar: The title bevel can now frame the entire titlebar when built-in 3D buttons are not full height. Buttons can now "extend into" the title bevel and frame padding. The highlight area (or absence of) is handled correctly now. The built-in 3D highlight is now available with or without a title bevel. Enabled signed-integer data handling in the resource file parser. Changed the following variables: ButtonIndent n FramePadding n TitleBevelWidth n TitlePadding n October 16, 2002 [gram.y] [menus.c] [parse.c] [twm.c] [screen.h] Allow warp functions to position the pointer at the center of windows. Added the following variable: WarpCentered s September 30, October 2 - 6, 2002 [desktop.c] [events.c] [menus.c] [resize.c] [events.h] [menus.h] [resize.h] Refinements to the f.resize and f.move functions: Both are now single rodent button operations from any context, and both warp the pointer back to the virtual desktop when started from there. The wireframe is drawn immediately, ignoring MoveDelta. MoveDelta is otherwise used consistantly now. Fixed some icon move and resize bugs. Large chunks of relevant code changed, moving operations from event handlers to the function itself and merging/removing redundant code. Changed the following functions: f.move f.resize September 26, 2002 [menus.c] Removed the limitations of the f.startwm argument. Changed the following function: f.startwm s September 24, 2002 [add_window.c] [gram.y] [parse.c] [twm.c] [screen.h] The UsePPosition variable accepts a list now. Changed the following variable: UsePPosition s l September 17, 2002 [menus.c] Fixed a race condition when f.squeeze* functions are invoked from a window menu while Opaque* variables are set. Prevent f.squeeze* functions when DontSqueezeTitle is set. September 13, 2002 [resize.c] Adjust the pointer back to the window at the end of window resizes as required. Constrain virtual desktop resizes to multiples of PanDistance when SnapRealScreen is set. September 9, 2002 [menus.c] [parse.c] [parse.h] Fixed warp bugs when windows are borderless or shaped. From Seth Robertson : Patches for passing raw key and rodent button events to windows. Added the following functions: f.bindbuttons f.bindkeys f.unbindbuttons f.unbindkeys September 1, 2002 VTWM 5.4.6a released for public consumption. vtwm-5.4.6-to-5.4.6a.udiff patch file released. August 25, 2002 [add_window.c] Better random placement of large windows. From Seth Robertson : Patch for the above. August 23, 2002 [add_window.c] [applets.c] [gram.y] [parse.c] [twm.c] [screen.h] Support for borderless windows. From Tim Wiess : Patches for the above. Added the following variable: NoBorder l April 28, 2002 Improved the list parser in contrib/support/sysrc_add_apps.sh. April 9, 2002 [events.c] Fixed a focus problem with transient windows. December 2, 2001 [menus.c] [twm.c] Added "-p" command line switch for a runtime PID file, $HOME/vtwm.pid. November 20, 2001 [add_window.c] MakeTitle now overrides NoTitle like it's supposed to. November 15, 2001 [add_window.c] [doors.c] [menus.c] Doors are drawn during opaque interactive creation now. November 8, 2001 [events.c] [menus.c] [version.c] Fixed bugs I introduced regarding icon managers and warp rings. This should end f.warpring problems. November 3, 2001 VTWM 5.4.6 released for public consumption. October 20 & 21, 2001 [*akefile*] [applets.c] [gram.y] [icons.c] [lex.l] [list.c] [menus.c] [parse.c] [regions.c] [util.c] [list.h] [regions.h] Added support for POSIX 1003.2 regular expressions ("RE"s) in resource file window lists. October 11, 2001 [menus.c] [parse.c] [resize.c] [twm.c] [util.c] [screen.h] Fixed window resizing via icon managers and the virtual desktop and window moves (f.move) via the virtual desktop. Improved virtual desktop updates after window resizes and moves. Zooms are aware of icon managers now. Random zooms during deiconification are controlled by a variable now. Added the following variable: ZoomZoom October 2 & 3, 2001 [events.c] [iconmgr.c] [menus.c] [parse.c] [twm.c] [parse.h] [screen.h] A new feature to make icon managers function strictly as icon managers, listing only iconified windows. Added the following variable: StrictIconManager Added the following function: f.stricticonmgr September 24 - 28, 2001 A new script in the contrib/support directory can add installed applications to the system default resource file. [*akefile*] [system.vtwmrc*] [add_window.c] [desktop.c] [iconmgr.c] Ensure the compiled-in resources and build info are current. Made the system default resource files a bit more useful and appealing. Fixed transposed default desktop foreground and background colors. From Michael Dales : Work on the bug where windows may be mapped in desktop (0,0) regardless of the desktop's virtual location. From Rolf Neugebauer : Fixed positioning errors for the icon manager and virtual desktop windows. August 16, 2001 [gram.y] [parse.c] [sound.c] Added micro-manageable volume control. Changed the following variable: Sounds l August 3, 2001 Added another build hint to the INSTALL file. June 22 & 23, 2001 Updated the doc and contrib directories. [*akefile*] [events.c] [gram.y] [iconmgr.c] [menus.c] [parse.c] [sound.c] [twm.c] [menus.h] [parse.h] [screen.h] [sound.h] [twm.h] Sound effects are now supported, by way of the rplay library and daemon. Added the following variables: PauseOnExit n PauseOnQuit n SoundHost s Sounds l SoundVolume n Added the following function: f.sounds October 24 & 31, 2000 [doors.c] [menus.c] Sanity checks on door renames. Fixed two menu repaint bugs. August 23, 2000 [menus.c] Fixed a menu scroll bug. June 14 & 21, 2000 [menus.c] Plugged holes where executing f.warptoiconmgr when thene is no icon manager to warp to, and f.warpclass* when there is no class, window, or focus, blew VTWM out of the water. June 4, 2000 [twm.c] [util.c] [screen.h] [twm.h] Added four new built-in window button images: ":darrow", ":rarrow", ":xpm:darrow", and ":xpm:rarrow". May 28 - 31, 2000 Added two more build hints to the INSTALL file. [iconmgr.c] [menus.c] [parse.c] [twm.c] [menus.h] [parse.h] [screen.h] When the pointer would end up in an AutoPan border on warps, it is adjusted out, preventing unwanted screen pans. All the f.*iconmgr warp functions honor the WarpSnug and WarpWindows variables now (or absence of). The WarpSnug state can now be toggled. From Ugen Antsilevitch : Support for warping only to visible windows. Added the following variable: WarpVisible Added the following functions: f.warpsnug f.warpvisible May 22 - 24, 2000 [menus.c] [parse.c] [twm.c] [menus.h] [screen.h] Added "scrollability" to menus that would be taller than the display (inspired by the neXtaw SimpleMenu widget). Added the following variables: MenuScrollBorderWidth n MenuScrollJump n April 1, 2000 Added another build hint to the INSTALL file. [menus.c] Made the pointer warp to the titlebar on a squeeze operation if WarpCursor is set on, a la zoom operations. September 28, 1999 [desktop.c] [icons.c] [util.c] When moving an application window in the virtual desktop, the border of the corresponding real screen window now highlights as required. Streamlined the handling of transparent pixmaps for window buttons, improving exposure response to pointer- driven focus changes. September 21, 1999 [add_window.c] [iconmgr.c] [menus.c] Icon managers now honor the IconifyByUnmapping resource. Fixed a bug where removing the last entry in an iconified icon manager didn't unmap that icon, and it contained an empty entry when deiconified. Fixed the f.hideiconmgr and f.showiconmgr functions so that they now work against icon managers that are defined with the IconManagers resource. More work on the "Don't iconify if can't deiconify" logic. September 14 & 15, 1999 [*akefile*] [events.c] [menus.c] Fixed the notorious "Can't resize or move from icon managers and menus not of the root or window in question" bug. Woo-woo! From Mehul N. Sanghvi : Additional tweaks to the *akefile*s for more flexible installations. September 10 & 11, 1999 Moved the man page into the doc directory. On request, renamed the lnf directory to contrib. [*akefile*] [events.c] [menus.c] [resize.c] Changed the *akefile*s to accomodate the above, as the man page is now included in 'make install'. Reverted the setting of the context of a door's frame to that prior to the change on May 13 (it wasn't needed after all). Added code to prevent iconifying windows that don't have provision to deiconify or otherwise restore them. Fixed f.destroy and f.delete so that they can be safely used on doors, icon managers, and the virtual desktop. Fixed the zooming of doors, icon managers and the virtual desktop so that their contents adjust to the new size. June 18 & 22, 1999 [menus.c] [parse.c] [twm.c] [util.c] [screen.h] Fixed a bug, noted by "digs", where the truncation of long titles messed up in titlebars that don't have any left-side buttons. Added a new variable to see that iconified transient windows of an iconified parent window aren't deiconified when that parent is. Added the following variable: DontDeiconifyTransients May 22, 1999 [applets.c] [icons.c] The same small tweak in both to have the region layout logic disregard grid spacing in determining whether a window will fit (clarified the man page accordingly). May 10 & 13, 1999 [doors.c] [events.c] [menus.c] [util.c] Relaxed the door geometry parser, allowing omission of the position. Fixed a bug where rodent button events on a door's frame didn't correctly set the context, and added a kludge to "fix" not getting the rodent button up event. Applied the XPM library's color closeness attribute to external pixmap images. Updated the resource files in lnf to demonstrate some of m4's capabilities. April 26 & 27, 1999 [*akefile*] [add_window.c] [applets.c] [doors.c] [events.c] [gram.y] [icons.c] [menus.c] [parse.c] [regions.c] [twm.c] [regions.h] [screen.h] By cleverly re-using the code for icon regions, a new window management scheme, applet regions, is born! Moved the generic functions of icons.c into a new regions.c, renamed icons.h to regions.h, copied and modified the remaining icons.c to create applets.c, and made all this known to the rest of the modules above. Setting up all those little tool applications is now just a matter of dropping them into a list resource! Added the following variable: AppletRegion g s s n n l February 28 & March 1, 1999 [doors.c] [events.c] [iconmgr.c] [menus.c] [resize.c] [events.h] Doors, icon managers, and the virtual desktop now get redrawn during opaque resizes (I have yet to figure out how to redraw doors during interactive creation). The first two also have minimum sizes imposed on them now. Fixed the icon manager's class assignment; it's visible to resource list entries now. Skip re-mapping of the virtual desktop to clean up outline droppings if the window moved or resized is itself. February 22 & 23, 1999 [desktop.c] [menus.c] [resize.c] Added a trap to prevent resizing windows via the virtual desktop (it's horribly broken). Imposed a minimum size on the virtual desktop, that of the scaled real screen. February 20, 1999 [add_window.c] [events.c] [parse.c] [twm.c] The window's icon name now has it's own memory space; this to keep some apps from blowing VTWM out of the water when they change it. Added support for user-defined m4 parameters passed from the command line. February 15 & 16, 1999 [desktop.c] [icons.c] [parse.c] [twm.c] [screen.h] If the RealScreenBorderWidth resource is defined, is there any reason why the UseRealScreenBorder resource wouldn't be? More fixes for the virtual desktop; these to properly accomodate the real screen's border. From Caveh Frank Jalali : A last tweak for icon images on multiple screens. Removed the following variable: UseRealScreenBorder February 10 & 13, 1999 [events.c] [resize.c] [util.c] Hacked in code to see that the virtual desktop's bevel gets redrawn after being resized. Ick. From Caveh Frank Jalali : Tweaks to correct the painting of external images on multiple screens. February 5 - 9, 1999 [system.vtwmrc*] [desktop.c] [doors.c] [events.c] [parse.c] [twm.c] [util.c] [screen.h] [twm.h] Doors and the virtual desktop can now be rendered in 3D. Doors now override real screen snapping on entry. Fixed a few bugs regarding the virtual desktop when it's resized; these may have been responsible for the problems noted in previous releases, because they don't happen anymore! Added a resource to override title truncation when in short titlebars and icon managers. Added the following variables: DoorBevelWidth n VirtualDesktopBevelWidth n NoPrettyTitles January 30, 1999 [*akefile*] [menus.c] [parse.c] [twm.c] [version.c] Added compiled-in options to the build info in the version window. From Jason Gloudon : Added m4 pre-processing of resource files. Woo-woo! January 10 & 14, 1999 [add_window.c] [doors.c] [menus.c] [parse.c] Added proper tests for success of XGetWindowProperty() calls to fix getting icon names, window states, and pixel atoms from the X server. Fixed a bug in the display of a renamed door. December 26 & 28, 1998 [icons.c] [twm.c] [util.c] [screen.h] Fixed a bug where icon bitmaps were rendered with the wrong color. The X database resource "*bitmapFilePath" is now searched for pixmap image files, like that for bitmap image files. December 10 & 14, 1998 [desktop.c] [menus.c] [parse.c] [twm.c] [menus.h] [parse.h] [screen.h] Non-nailed icons can now stay put at their locations on the virtual desktop. The titlebar height now adjusts to external button images. Added a few button image files to lnf. Added the following variable: StaticIconPositions Added the following function: f.staticiconpositions November 15 - 16, 1998 [Imakefile] [desktop.c] [events.c] [menus.c] Fixed the PanResistance resource's not recognizing when the pointer has left the autopan windows. Fixed the "orphaning" of intermediate parent menu(s) when skipping them for some superior parent menu. From Steve Ratcliffe : Moved $(NO_XPM_SUPPORT) into DEFINES for global visibility, and removed several SpecialObjectRule()s. From Michel Eyckmans : Fixed deferred execution on keyboard events when the root window has focus. September 27, 1998 [menus.c] [resize.c] [version.c] From Goran Larsson : Fixed text display bug in the size and position windows. VTWM 5.4.5a released for public consumption. vtwm-5.4.5-to-5.4.5a.txt patch file released. September 14, 1998 Established a directory, doc, for all the documentation that has accumulated through time. The HINTS file is now called INSTALL, and is more comprehensive. [util.c] The menu, resize and X logo built-in bitmaps now account for the ButtonBevelWidth variable. VTWM 5.4.5 released for public consumption. September 8 - 10, 1998 [events.c] [iconmgr.c] [parse.c] [twm.c] [screen.h] Fixed a bug with icon manager geometries that would blow VTWM out of the water. Added code to make it a little harder to accidentally pan to an adjacent virtual screen. Added the following variable: PanResistance n September 4 - 5, 1998 [events.c] [menus.c] [resize.c] [resize.h] Fixed another pixmap oversight, this one for icons, noted by C. F. Jalali. Applied the MoveDelta variable to window resizing and initial menu highlighting. From Steve Ratcliffe : Fixed a bug for the AutoPan variable, when the pan windows are obscured by a newly-raised window. September 2, 1998 [add_window.c] [desktop.c] [util.c] [util.h] Plugged a memory leak, as noted by Jason Gloudon, where transparent pixmap resources weren't freed before re-use. August 23 - 27, 1998 [add_window] [events.c] [icons.c] [menus.c] [parse.c] [twm.c] [util.c] Fixed a bug where the titlebar highlight wasn't erased when focus was unset and the BeNiceToColormap and SunkFocusWindowTitle variables were used. From Steve Ratcliffe : Tweaks to suppress menu highlighting on mapping, relieve CPU consumption on menus bound to rodent buttons, and allow a second rodent button press to cancel menus. A safer approach to the RaiseDelay variable's timeout. From Jason Gloudon : Tweaks to streamline icon bitmap handling, and fixed the painting of non-transparent titlebar highlight pixmaps. From Caveh Frank Jalali : Fixed a bug I introduced where non-3D borders were always rendered as highlighted! Tweaks to correct the painting of built-in images on multiple screens. Fixed some bugs in colormap management. Tweaks for application-defined icon border widths. August 10 - 14, 1998 All references to and mention of the shadow contrast and shadow width variables have been changed to *BevelContrast and *BevelWidth. [add_window.c] [doors.c] [events.c] [iconmgr.c] [icons.c] [menus.c] [parse.c] [resize.c] [twm.c] [util.c] [version.c] [screen.h] Fixed an oversight, color (XPM) image support for the UnknownIcon variable and application-specified icons. Window buttons are now beveled when external images are used. The *BevelWidth variables render the UseThreeD* variables obsolete. The ThreeDBorderWidth variable is superfluous, too, no? Removed the following variables: UseThreeDBorders UseThreeDIcons UseThreeDIconManagers UseThreeDMenus UseThreeDTitles ThreeDBorderWidth n Added the following variables: ButtonBevelWidth n IconBevelWidth n Changed the following variable: UnknownIcon s July 31 & August 3, 1998 Discovered that VTWM supports a subset of regex wildcards for list variables! It's in the man page now. [events.c] [menus.c] [twm.c] [twm.h] Another tweak to the f.warpclass* functions, to properly handle multiple icon managers. Added a signal handler for external restarts (adapted from TVTWM pl11). July 15 - 17, 1998 [desktop.c] [menus.c] [parse.c] [resize.c] [parse.h] Added code to restart using a specified window manager. A few changes to grab the server during non-opaque moves and resizes, regardless of the NoGrabServer variable. Added the following function: f.startwm s July 2 & 14, 1998 [events.c] Made the borders of windows without titlebars forward key events to the application, like titlebars do. I think the various warps from icon managers are sorted out now. June 25, 1998 [gram.y] [menus.c] [parse.c] [twm.c] [screen.h] Aliased a new variable, OldFashionedVtwmWindowsMenu, to the OldFashionedTwmWindowsMenu variable, just for consistancy. From Erik Agsjo : Added code to support two new variable(s). Added the following variables: DontShowInTwmWindows l DontShowInVtwmWindows l OldFashionedVtwmWindowsMenu June 10 - 15, 1998 [events.c] [iconmgr.c] [menus.c] Had to make an exception for icon managers regarding warps, that their window border isn't the destination, because I can't figure out how to make the appropriate entry active when one isn't without screwing up something else. BAH! Added a few "prevents" when there isn't an icon manager mapped. The f.warpclass* functions now behave correctly when an empty string is used on windows without titlebars or on VTWM-specific windows. June 3 - 6, 1998 [add_window.c] [desktop.c] [events.c] [menus.c] [resize.c] Made initial window placement adjust to client borderwidths, depending on related variables. The virtual desktop is now re-mapped after non-opaque moves and resizes to clean up any outline droppings left on it when the Virtual*MotionEvents variables are set. The window border of the virtual desktop now honors key bindings to "virtual". Doors and their borders are now sensitive to key bindings, too. May 27, 1998 [events.c] [parse.c] [twm.c] [screen.h] Added code to not set focus from icon manager entries to the corresponding application windows, for binding keys that otherwise would get forwarded. Added the following variable: NoIconManagerFocus May 24, 1998 Established a directory, lnf (look n' feel), for the previously included sample resource and image files, and added a couple more to it. Renamed some files: marcel.vtwm to .vtwmrc-marcel, djhjr.vtwmrc to .vtwmrc-95ish, djhjr.vtwmpm to djhjr.xpm, realscr.bm to nestedsqu.xbm, and siconify.bm to siconify.xbm. [iconmgr.c] [util.c] Changed to handle the above. May 17 - 23, 1998 [add_window.c] [desktop.c] [iconmgr.c] [menus.c] [twm.c] [util.c] [screen.h] [util.h] Found and plugged the hole in the original menu handler that would blow VTWM out of the water when the pointer scrolled down past the last entry. Gave the icon manager and virtual desktop resource classes. The f.warpclass* functions will now exhibit reasonable behavior when an empty string is used on windows without titlebars or on VTWM-specific windows. The three entries of the Pixmaps variable now fully support color (XPM) images - this does render the nexpm utility obsolete in regard to VTWM, but it's still included in the distribution. The external image support for window buttons is better, but still not perfect (see BUGS). Changed the following variable: Pixmaps l May 11 - 13, 1998 [add_window.c] [events.c] [menus.c] [twm.h] The f.warpclassprev and f.warpclassnext functions now accept an empty string, meaning the class of the window with focus, and the first actually goes backwards now! Tweaks made to those and the f.warpring function so its destination is a titlebar or border like the other warp functions, and it now remembers the window to warp to when invoked from the root window, unless the target window was unmapped (leaving the pointer on the root window), in which case it will no longer skip the first window in the ring. All warping functions now honor the WarpUnmapped variable a la the f.warpto function. Changed the following functions: f.warpclassprev s f.warpclassnext s f.warpnewest f.warpring s f.warptoiconmgr s April 26 - May 5, 1998 [add_window.c] [desktop.c] [events.c] [gram.y] [iconmgr.c] [icons.c] [menus.c] [parse.c] [resize.c] [twm.c] [util.c] [menus.h] [screen.h] [twm.h] The 3D rendition of icons is now governed by its own variable. The 3D bevel widths are configurable now, and related elements are sized and positioned accordingly. Virtual window geometries now account for 3D borders. Virtual-to-real window scaling and positioning errors have been reduced. The position window now reports during moves in the virtual desktop. Re-instated the effects of the RightHandSidePulldownMenus variable! Changed the foreground color for the built-in "TwmWindows" menu to that of the global variable, and aliased it's name to "VTWM Windows", just for consistancy's sake. Added the following variables: UseThreeDIcons BorderBevelWidth n IconManagerBevelWidth n InfoBevelWidth n MenuBevelWidth n TitleBevelWidth n From Nelson H. F. Beebe : Even more tweaks for portability, most notably, restoring X11R4 compatability by not including the X11R5,6 headers Xosdefs.h and Xfuncs.h! X11R5,6 don't seem to mind. April 20 - 23, 1998 [nexpm/nexpm.c] From Steve Ratcliffe : Added a test for the child window of the selected window. [*akefile*] [add_window.c] [desktop.c] [doors.c] [events.c] [lex.l] [menus.c] [parse.c] [twm.c] [util.c] [doors.h] [parse.h] Purged GNU-specific syntax from this new Imakefile, and changed the NO_PUTENV definition to NEED_PUTENV_F, for consistancy. Added code to support pasting a name into a door (adapted from VTWM 5.2b). Added the following function: f.namedoor From Steve Ratcliffe : Many tweaks made in the name of Portability. The snug variables now take border width into account. From Nelson H. F. Beebe : Many more tweaks for portability's sake. April 14 - 17, 1998 [add_window.c] [desktop.c] [menus.c] [parse.c] [resize.c] [twm.c] [resize.h] [screen.h] When windows are created, they now honor the opaque variables when the RandomPlacement variable is not set. While moving and resizing windows on the real screen, the virtual desktop now responds in kind, and visa-versa. The NoGrabServer variable now sees to it the server is actually not grabbed! The position window now reports during constrained moves. Added the following variables: VirtualReceivesMotionEvents VirtualSendsMotionEvents April 1 - 8, 1998 [*akefile*] [system.vtwmrc*] [add_window.c] [gram.y] [menus.c] [parse.c] [resize.c] [twm.c] [util.c] [screen.h] [twm.h] [util.h] Added a define supporting a 2D or 3D system default resource file, and made that file a bit more useful. Added code for opaque resizing, and all opaque variables now support lists. Many tweaks to make titlebar-related variables consistant with respect to each other and 3D rendition of the various elements. Added the following variables: OpaqueResize [l] NoOpaqueResize [l] NoOpaqueMove [l] Changed the following variable: OpaqueMove [l] March 29 - 30, 1998 [Imakefile] [events.c] [util.c] Added the system Imake.tmpl macro for flex's library (should be absent or an empty string on systems with lex). Added code to properly truncate, then add ellipses to, titles that are longer than the space they're drawn on. March 23 - 24, 1998 [gram.y] [util.c] Fixed the rendition of a squeezed titlebar's right-side 3D border (a silly gunkulation error). From Jason Gloudon : Support for bison. March 20 - 22, 1998 [add_window.c] [util.c] [version.c] Added color image (XPM) support for window buttons. Jason's code for color icon images made it a breeze, but it's not perfect (see BUGS). VTWM 5.4.4c released for public consumption. vtwm-5.4.4b-to-5.4.4c.txt patch file released. March 14 - 15, 1998 [events.c] [menus.c] [version.c] Fixed a bug where the window buttons would get painted with the border color when the background color should have been used. From Steve Ratcliffe : Fixed warping to titlebars not flush left. VTWM 5.4.4b released for public consumption. vtwm-5.4.4a-to-5.4.4b.txt patch file released. February 5, 1998 [*akefile*] [events.c] [menus.c] [util.c] [version.c] Tweaks to accomodate the following made to the *akefile*s. From Takeharu Kato : Fixed a fault causing a SIGSEGV in the info window, and the use of a depreciated constant in the XPM library. VTWM 5.4.4a released for public consumption. vtwm-5.4.4-to-5.4.4a.txt patch file released. February 2, 1998 VTWM 5.4.4 released for public consumption. January 27, 1998 [add_window.c] [iconmgr.c] [parse.c] [twm.c] [screen.h] [gram.y] Added a variable to tell the icon manager whether or not to highlight its entries as an indication of pointer location, regardless of the NoHighlight variable. Added the following variable: NoIconManagerHighlight From Nicholas Jacobs : A better effort at getting a name for the window. January 24, 1998 [desktop.c] [menus.c] Allow screen warps to honor the SnapRealScreen variable. Added a kludge to "fix" screen warps to deiconifying windows not on the real screen (high degree of confidence it's not the source of the problem). January 21, 1998 Added the HINTS file to the distribution. Moved and added many function declarations into header files (quieter builds!). Other miscellaneous tweaks. December 28, 1997, January 1 - 19, 1998 [nexpm/nexpm.c] Changed the window name sought by `nexpm -vtwm ...` to match the virtual desktop's name. It's a wonder nobody's noticed! [*akefile*] [add_window.c] [cursor.c] [desktop.c] [doors.c] [events.c] [gc.c] [icons.c] [list.c] [menus.c] [parse.c] [resize.c] [twm.c] [util.c] [util.h] [version.c] [screen.h] [gram.y] Rewrote most of the 3D border code, adding, among other things, drawing the top border segment when 3D borders are used with squeezed titlebars! Simplified the meaning of the SqueezeTitle variable list parameters. Fixed a bug causing SIGFPEs when pan distances are set to zero. Added a bug workaround to try to make managed windows used as transients behave, a la the FixTransientVirtualGeometries variable (seldom needed, just as bad, but mostly works). Fixed an oversight of mine, not initializing monochrome GCs! Enabled a variable to go easy on the colormap (doesn't render perfectly yet). Use the system Imake.tmpl macro for yacc and removed all escaped characters from the lastmake.c rule in the *akefile*s. Clarified the pan distance variable descriptions in the man page. Added the following variables: BeNiceToColormap FixManagedVirtualGeometries From Nelson H. F. Beebe : On startup, VTWM now searches for user and system .vtwmrc files, then user and system .twmrc files, in this order. Fixed and added many declarations and definitions. Updated the man page. Support for HTML and Postscript versions of the man page added to the *akefile*s. From Jason Gloudon : Color image (XPM) support for icons. Added a pixmap (djhjr.vtwmpm) referenced in my resource file (djhjr.vtwmrc) for an example of the nexpm utility. Pruned the R4 Imakefile from the tree. Pruned the vtwmrc/ directory from the distribution tree. No offense to Mr. Betza, but it made little sense (to me), was five years old, was very esoteric, and anyone who wants it probably already has it. November 17, 1997 VTWM 5.4.3 released for public consumption. November 17 - 19, 1997 [events.c] [menus.c] [util.c] [util.h] [version.c] Fixed a bug where the wrong variable was being used to highlight the window border that has focus. Fixed an omission where the window buttons would not follow the border color when highlighted and the ButtonColorIsFrame variable is true. Added a hack to trap corrupted/invalid window button names. October 27, 1997 VTWM 5.4.2 released for public consumption. March 12 - 14, 1997 [add_window.c] [menus.c] [twm.c] [util.c] Added code to properly paint the window buttons in the same color as their titlebar on a restart operation. Woo-woo! Numerous changes to accomodate added buttons and squeezed titlebars - I had previously overlooked these. Made a few variables un-alterable when 3D appearances are used. Now closes the display before spawning the new WM on a restart operation - free alloc'd memory in the X server? September 25 - 26, 1996 [menus.c] Changed code to properly scale menus to the fonts used. September 14 - 21, 1996 [*akefile*] [add_window.c] [iconmgr.c] [menus.c] [resize.c] [twm.h] [util.c] [version.h] [*akefil*] [vtwm.man] Fixed a bug in zooms that I introduced! Applied the backing store and NoBackingStore variables to the Icon Manager and titlebars (defeats effects of RaiseDelay). Made the pointer warp to the titlebar on a zoom operation if WarpCursor is set on. The function f.showdesktopdisplay now deiconifies as required. Working on code to make the window buttons stay the same color as their titlebar on a restart operation (obviously wasn't thought about much before). Added build info to the version window by having the *akefile*s create a temporary C module. Added the following variable: ButtonColorIsFrame September 10 - 12, 1996 [events.c] [menus.c] Added code preventing the virtual desktop window and Door windows from doing harm. Fixed a bug when trying to move the virtual desktop window with the pointer; see the notes in djhjr.vtwmrc pertaining to the virtual desktop, it's related, and the BUGS file. June 26, 1996 [screen.h] [parse.c] [twm.c] [util.c] [vtwm.man] Tweaked the 3D menu icons to look a little more like menus. Made the 3D Icon Manager iconified indicators "shallow" to match the 3D menu icons. Added code for Motif-ish "shallow" relief in 3D titlebars and buttons to matches the others. Added the following variable: ShallowReliefWindowButton June 11, 1996 [icons.c] [events.c] Tweaked the hard-coded geometries for a better 3D appearance on icons (looks best with IconBorderWidth set to 0). April 18 - May 19, 1996 [add_window.c] [desktop.c] [doors.c] [doors.h] [events.c] [gram.y] [iconmgr.c] [iconmgr.h] [icons.c] [menus.c] [menus.h] [parse.c] [resize.c] [screen.h] [twm.c] [twm.h] [util.c] [util.h] [version.c] Modifications and/or additions to the above modules for a 3D appearance, menu separators, a position window, info window fonts, resize/position window locations, and other minor tweaks (listed below). All should be initialled and dated. Changed as many as convenient boolean shorts to bits in a Slim-Fast effort (the only executable code changed was due to renaming the variable SnapRealScreen to snapRealScreen; the shorts maybe reinstated with '#define ORIGINAL_SHORTS'). Changed "Twm Door" to "VTWM Door", in the name of Consistancy. Changed "Virtual Desktop" to "VTWM Desktop". Ditto. Changed the code to center Door names in their windows. It *is* correct, but only looks more correct. Took liberties with the SunkFocusWindowTitle function. I think it more pleasing. Took liberties with other code too, look for '#ifdef ORIGINAL_'. A couple of changes for a cleaner compile (what were 'int' functions are now 'void', etc.). Rem'd out code no longer valid due to these changes. Added the following variables: SunkFocusWindowTitle UseThreeDIconManagers UseThreeDMenus UseThreeDTitles UseThreeDBorders ThreeDBorderWidth n ClearBevelContrast n DarkBevelContrast n InfoFont s ResizeRegion s Added the following function: f.separator Updated the man page. Included my .vtwmrc (djhjr.vtwmrc) in this distribution. See also the files 4.ANNOUNCE, 4.README, and BUGS. ============ vtwm-5.3.tar.gz ============= dsembr01@starbase.spd.louisville.edu (Darren S. Embry) Tuesday, 1994 January 4, 16:43:32 EST [menus.c] Autopanned windows are now raised when Autopan is turned back on via f.autopan. Monday, 1994 January 3, 20:49:22 EST f.stickyabove (or f.nailedabove) Monday, 1994 January 3, 19:29:07 EST / dsembr01 [twm.c] The "VTWM Profile" function is now executed after starting/restarting the window manager. Friday, 1993 November 26, 15:37:01 EST / dsembr01 [vtwm.man] Some previously undocumented functions have now been documented. Please use them at your own risk: f.cut f.cutfile f.file f.movescreen f.twmrc [same as f.restart anyway] f.version Saturday, 1993 November 6, 19:03:28 EST / dsembr01 [desktop.c] Small bug fix regarding representations of nailed windows on the virtual desktop; it was obvious and obviously unintentional. Tue Nov 2 20:05:44 EST 1993 dsembr01 WarpSnug Wed Oct 27 12:29:38 EDT 1993 dsembr01 MenuTitleFont (this code also came from tvtwm) Tue Oct 26 19:41:04 EDT 1993 pf@z-code.z-code.com (Paul Falstad) NoIconifyIconManagers StayUpOptionalMenus WarpToTransients f.warp f.warpclassnext f.warpclassprev f.warptonewest Mon Oct 25 21:08:40 EDT 1993 dsembr01 If StickyAbove is set, f.nail will raise all sticky windows to make sure nailed windows stay above. Mon Oct 25 19:48:33 EDT 1993 dsembr01 FixTransientVirtualGeometries, a BUG WORKAROUND!! (Any better ideas, folks? -- DSE) Mon Oct 25 17:13:00 EDT 1993 dsembr01 DontInterpolateTitles, from tvtwm -- thanks to cross@eng.umd.edu (Chris P. Ross) for letting me use his code. Sun Oct 24 16:16:52 EDT 1993 dsembr01 f.lower now won't lower the window if it is nailed down and StickyAbove is set. Tue Oct 19 18:03:35 EDT 1993 dsembr01 StickyAbove (I didn't take any of the code for this from tvtwm; just the idea.) Mon Oct 18 21:14:04 EDT 1993 dsembr01 Fixed autopanning bug that would *sometimes* not allow AutoPan to work if the focus was on a window, since the autopan windows (on the edges of the real screen) weren't raised. Sat Oct 16 18:23:43 EDT 1993 dsembr01 Nailed windows now *always* go on the real screen, wherever the real screen is. Wed Oct 13 12:21:54 EDT 1993 dsembr01 Aliased "f.stick" to "f.nail", for greater compatibility (or less incompatibility) between .vtwmrc and .tvtwmrc, just for the hell of it. Mon Oct 11 21:06:09 EDT 1993 dsembr01 Fixed a bug that would make the window manager mess up if "AutoPan 100" and "AutoPanWarpWithRespectToRealScreen 100" (a.k.a. "NaturalAutoPanBehavior") were set. I wanted to set my window manager to behave like fvwm (in the autopanning sense of the word) when I discovered this. Mon Oct 11 09:14:58 PDT 1993 leisner@eso.mc.xerox.com (Marty Leisner) Included small patches to Imakefile from Marty Leisner. Mon Oct 11 17:04:35 EDT 1993 dsembr01 NoDefaultTitleButtons NoDefaultMouseAndKeyboardBindings so someone could use either the default title or keyboard bindings, but not necessarily both. ============ vtwm-5.2.2.tar.gz ============= dsembr01@starbase.spd.louisville.edu (Darren S. Embry) Used another bug workaround to support negative door geometries; the old one I did messed up with positive door geometries, especially "+0+0". ============ vtwm-5.2.1.tar.gz ============= dsembr01@starbase.spd.louisville.edu (Darren S. Embry) AutoPanBorderWidth AutoPanExtraWarp AutoPanWarpWithRespectToRealScreen EnhancedExecResources LessRandomZoomZoom NaturalAutopanBehavior PrettyZoom RealScreenBorderWidth RightHandSidePulldownMenus Support for negative and "0,0" door geometries. ============ vtwm-5.2.tar.Z ============= Various contributions: gnohmon@ssiny.com (Ralph Betza) f.zoomzoom StayUpMenus from tvtwm code OldFashionedTwmWindowsMenu UseRealScreenBorder f.snaprealscreen Improved window movement in the panner Restored the ability to rescale the desktop futzi@uni-paderborn.de (Michael Kutzner) Class-name was compared twice in menus.c (applies also to vtwm-5.0) Stig Ostholm Problem when windows are resized without vtwm interaction cleaning up of the desktop code to minimize vtwm - server interaction. Imakefile patch allows vtwm to be installed in another location (applies also to vtwm-5.0) eyckmans@imec.be (M. Eyckmans) Allow #rrggbb colors in X11R4 Tony Brannigan AutoPanX, AutoPanY dana@thumper.bellcore.com (Dana A. Chee) Added fix which allows key presses to move a window (menus.c, events.c) Alec Wolman WindowRing can now specify "all windows" by leaving off the Window List Can specify x or y = 0 in door location now Tue Jul 20 15:22:49 EDT 1993 Thu Oct 1 17:47:37 1992 Dana A. Chee (dana@dino) * Added fix which allows key presses to move a window (menus.c, events.c) Fri May 29 14:20:53 1992 Dana A. Chee (dana@dino) * Fixed bug in do_single_keyword (break should be return), sent in by George Ross (parse.c) [Editor's note: a very popular bug to send in the fix for!] * Autoraise can now specify "all windows" by leaving off the Window List, sent in by Alec Wolman [Editor's note: this was previously done by the RaiseDelay patch] * WindowRing can now specify "all windows" by leaving off the Window List, sent in by Alec Wolman (add_window.c, gram.y, screen.h, twm.c, vtwm.man) * Initial Placement of virtual desktop fixed, sent in by Alec Wolman [Editor's note: this was previously done] * Can specify x or y = 0 in door location now, sent in by Alec Wolman (doors.c) * Update man page to mention NoVirtualGeometries variable (vtwm.man) * Updated patchlevel (patchlevel.h) [Editor's note: we don't have one! ] Thu Mar 26 12:31:09 1992 Dana A. Chee (dana@dino) * F_LOWER now lowers the window in the virtual desktop as well Thu Jul 15 14:03:01 DST 1993 Marcel Mol (marcel@duteca.et.tudelft.nl) * Includes F_WARPTO patch from futzi@uni-paderborn.de (Michael Kutzner) Patched this patch to check for name, class and classname in a single for loop. * Changed syntax of 'VirtualDesktop' variable. Now can set desktop as number of screens, as size of virtual desktop window or as size of whole desktop. * Fixed unharmful bug when NotVirtualGeometries was set. (vtwm comlains about "unknown singleton keyword") * Added f.virtualgeometries function to toggle virtual geometries settings. * Added f.deletedoor function to delete a door. Don't know if I correctly released all memory allocated to the door. Any X-Wizard??? * Updated man page ========= vtwm-5.1.tar.Z ============== Thu Jun 24 15:24:36 EDT 1993 Ralph Betza (gnohmon@ssiny.com) * Includes RaiseDelay patch from Warren Jessop, University of Washington, whj@cs.washington.edu * Includes snug patch from thoth@reef.cis.ufl.edu (Gilligan) * Includes patch vtwm.5.1.ptch from tar@math.ksu.edu (Tim Ramsey) * Includes panner background pixmap, panner foreground color, dynamic warpring, dynamic squeezetitle, TWM-Window menu colors, RealScreen foreground, background, and colors, corrections to placement of the little windows in the panner, additional cursors, and maybe a few other things I forgot to mention, from me, Ralph Betza (gnohmon@ssiny.com) Tue Mar 24 13:15:11 1992 Dana A. Chee (dana@dino) * fixed problem with key presses in virtual desktop not working (had an if test wrong in events.c) * released to export. Wed Feb 19 13:37:57 1992 Dana A. Chee (dana at dino) * Converted vtwm to use the source of twm from R5 (my base was vtwm 4.0 gamma). Released it to export.lcs.mit.edu * Cut and paste missed resize grabs, added them back in * Botched ask_user stuff in add_window, fixed that up. * Removed broken copy from export. vtwm-5.4.7/doc/SOUND0100664000015300001300000001223110237645271012701 0ustar callumfid NOTES ON SOUND SUPPORT ====================== As of version 5.4.6, VTWM can be built to support sound effects, by way of the rplay library and daemon. The following chart lists the identifiers for the sounds resource, loosely organized into categories. Those in parentheses are best described as "event identifiers" - cues that also trigger a sound. See the man page and sample resource file for usage and syntax. CREATE DESKTOP START STOP m ! m f.autopan m f.twmrc m f.exec m f.panup m f.quit m f.newdoor m f.pandown m f.restart e (client map) m f.panleft m f.startwm m (menu map) m f.panright t (vtwm start) m f.movescreen t (vtwm stop) m f.setrealscreen BUFFER m f.resetdesktop m ^ m f.enterdoor NAVIGATE m f.cut m f.snap m f.backiconmgr m f.cutfile m f.snugdesktop m f.downiconmgr m f.file m f.snugwindow m f.forwiconmgr e (autopan event) m f.lefticonmgr m f.nexticonmgr ARRANGE m f.previconmgr m f.autoraise ZOOM RESIZE m f.upiconmgr m f.circledown m f.bottomzoom m f.righticonmgr m f.circleup m f.fullzoom m f.warp m f.lower m f.hbzoom m f.warpclassnext m f.raise m f.horizoom m f.warpclassprev m f.raiselower m f.htzoom m f.warpring m f.deiconify m f.hzoom m f.warpto m f.iconify m f.leftzoom m f.warptoiconmgr m f.hidedesktopdisplay m f.rightzoom m f.warptonewest m f.hideiconmgr m f.topzoom m f.warptoscreen m f.showdesktopdisplay m f.vlzoom m f.showiconmgr m f.vrzoom m f.forcemove m f.zoom MISC m f.move m f.resize m f.beep m f.nail m f.colormap m f.stick m f.deltastop m f.squeezecenter DELETE DESTROY m f.version m f.squeezeleft m f.delete m f.identify m f.squeezeright m f.deletedoor m f.menu m f.namedoor m f.destroy m f.nailedabove m f.sorticonmgr e (client unmap) m f.nop m f.stricticonmgr e (info unmap) m f.saveyourself m (menu unmap) f.separator m f.stickyabove m f.refresh m f.winrefresh m f.focus m f.unfocus m f.bindbuttons m f.bindkeys m f.unbindbuttons m f.unbindkeys m f.function m f.ring m f.snaprealscreen m f.staticiconpositions m f.stricticonmgr m f.title m f.virtualgeometries m f.warpsnug m f.warpvisible m f.zoomzoom f.playsound f.sounds m (bell event) LEGEND: m = handled in menus.c e = handled in events.c t = handled in twm.c = no sound support NOTES: - Where function identifiers overlap event identifiers, the function takes precedence when both would otherwise play. These identifiers are: f.beep > (bell event) f.exec > (client map) f.delete > (client unmap) f.menu > (menu map) f.deletedoor > (client unmap) f.quit > (vtwm stop) f.destroy > (client unmap) f.version = f.identify - f.exec will never know if the program is an X client, nor if it maps a window if it is, so (client map) might be preferred. - None should play if the function or event isn't possible, but they will. - Two variables, PauseOnExit and PauseOnQuit, allow time for exit sounds to play. vtwm-5.4.7/doc/2.1.README0100664000015300001300000000673110237640615013252 0ustar callumfidAs far as changes from version 5.2 to version 5.2.1 go, they are mostly a few aesthetic and look-and-feel hacks and a couple of bug fixes. I would really like input as to how you like the changes I made. -- Darren S. Embry, dsembr01@starbase.spd.louisville.edu -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- MINOR NEW FEATURE (I can't say it's a big deal) ----------------------------------------------- Natural Autopan Behavior By default, when autopanning, the pointer is warped by only (AutoPanBorderWidth + AutoPanExtraWarp) pixels on the real screen. With this option turned on, the pointer is warped by as many pixels as the screen is scrolled, or by the above number of pixels, whichever is greater. Thus, the pointer will not actually move very much (only by AutoPanExtraWarp) in relation to the virtual desktop. This works very well on faster X terminals, although I can't say the same thing for slower ones (but setting AutoPanWarpWithRespectToRealScreen may do a good job). NEW VARIABLES to play around with --------------------------------- AutoPanBorderWidth AutoPanExtraWarp AutoPanWarpWithRespectToRealScreen EnhancedExecResources LessRandomZoomZoom NaturalAutopanBehavior # synonymous with ``AutoPanWarpWithRespectToRealScreen 100'' PrettyZoom RealScreenBorderWidth RightHandSidePulldownMenus OTHER HACKS AND BUG FIXES ------------------------- Supports negative and `0,0' door geometries. [ bug fix ] CHANGES BY SOURCE FILE ====================== Any lines, code or data structures in the code denoted by "/* DSE */" are changes I made. desktop.c: ---------- Supports the RealScreenBorderWidth variable now. Added dx,dy parameters to SetRealScreenInternal and PanRealScreen so that they pass information on how much to warp the mouse pointer, to support my AutoPanWarpWithRespectToRealScreen hack. desktop.h: ---------- Define AP_SIZE to Scr->AutoPanBorderWidth instead of just 5. doors.c ------- Supports negative door geometries now (like "120x120-0-0"). [ bug fix ] Also fixes bug that wouldn't allow "+0+0" to be a valid door position. [ bug fix ] events.c -------- In HandleEnterNotify(), initial setting of xwarp and ywarp uses AutopanExtraWarp instead of just 2. menus.c ------- The RightHandSidePulldownMenus, EnhancedExecResources, and PrettyZoom hacks are done here. parse.c, screen.h ----------------- Of course, the new variables were inserted here. util.c ------ The LessRandomZoomZoom hack was done here. DISCLAIMER: I am not the official maintainer or central programmer of vtwm, but there isn't one anyway; I just made a few fixes, played with the code to make it a little bit more `configurable' in certain areas, and decided to see what *you* think of the changes I made. I also don't know much about X programming, but the changes I made to vtwm haven't caused any major damage so far. -- letitflowletyourselfgos[ darren s. embry ]lowandlowthatisthetempo [ dsembr01@starbase ] beingashamedbecauseyouredif[ .spd.louisville.edu ]ferentisthesickestkindoflie vtwm-5.4.7/doc/1.README0100664000015300001300000000302210237640615013100 0ustar callumfidThis is based on vtwm-5.0.tar.Z, with the addition of all the patches I know of except for the "dwim" patch. The patch authors' names were added to the manual entry. It also includes my own enhancements, of course. Although many files are unchanged from vtwm-5.0.tar.Z, I mean for this to supplant that version, so the next person to take a swing at vtwm will start with my changes! There is no excuse for not including raisedelay and dynamic squeezed titles and dynamic warpring in every version of twm, including twm, vtwm, tvtwm, and ctwm. These are essential features. RealScreen colors and bitmap are useful. A sample realscreen.bm file is included. Colored entries in the TWM-Windows menu are nice to have. Being able to turn autopan off and on at will is also handy. I rarely use the "snug" functions. Panner foreground and bitmap are superseded by my "nexpm" program: see the nexpm directory for details. ============================================================ == == == TWO EXTRAS INCLUDED == == == ============================================================ The nexpm directory contains a program that decorates your panner window. The vtwmrc directory contains a makefile and scripts that help maintain the colorlists in your .vtwmrc ======== vtwm has no maintainer, as far as I know. Now I am finished with vtwm; somebody else can take a turn next. Fri Jun 25 12:20:38 EDT 1993 vtwm-5.4.7/doc/2.README0100664000015300001300000001014710237640615013107 0ustar callumfidVersion 5.2 of vtwm is a community effort. My name is on it, but I did less than half the work. There were contributors from all around the world, every one of whom managed to figure out how some piece of this program works and do a creditable job of hacking it. A large number of people have touched this code, and except for the part of the code that moves windows around, it's still easily understandable and in terrific shape; this says a lot about the X style of programming, and the kind of job done by Tom LaStrange and Dave Edmondson. I'm not aware of any program, nor any release of a program, that so fully embodies the ideal of community software. Perhaps that says a lot about my ignorance, but ignorance is bliss, so don't enlighten me. The only reason I published 5.1 was because I had a number of changes that I wanted to see in the "official" vtwm, and had no better way of getting them in there. After I did so, I heard from a number of people who seemed to be in the same boat; because I needed to fix rescaling the desktop and to add the UseRealScreenBorder and OldFashionedTwmWindowsMenu variables ( some folks didn't like the changes I made and wanted the old-style behavior to be at least available to them :-( ), I agreed to collect patches and come out with a vtwm-5.2! Because I was playing with the code in any case, I added f.zoomzoom and StayUpMenus, and made a big improvement in moving the windows around in the panner. When you click on a window in the panner, it used to jump so that its top-left corner would be at the pointer position. Now, when you click inside the little windows, they don't jump; they also don't jump when you release!, and moving them around has become much more natural. I really like stayup menus, *but* it's kinda confusing to use, because xterm, xpostit, and the like don't have this feature! Perhaps there will be a vtwm-5.3, but I do not plan to be involved, at least not as the central figure. Here is a short list of the changes: New variables StayUpMenus OldFashionedTwmWindowsMenu UseRealScreenBorder Modified Variables WindowRing (window list optional) VirtualDesktop (expanded syntax) New functions f.zoomzoom f.snaprealscreen f.virtualgeometries f.deletedoor Modified functions f.move (can be bound to a keypress) Miscellaneous smoother movement in panner Allow #rrggbb colors in X11R4 restored the ability to rescale the desktop bug fixes !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! !! !! And here is the known bug: !! !! !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! If you invoke resize from a stayup menu or from a titlebar menu, it moves the window and gets the wrong size. :-( This bug was also present in vtwm-5.0.tar.Z, but there was no such bug in the X11R4 vtvwm.shar.Z As I found from putting in StayUpMenus, the movement and resize code is quite messy; since I didn't create this bug, I will take the coward's path, and decline to deal with it. (Actually, I wasted a few hours looking through the code to try to find a clue, and *then* I gave up.) Resizing by dragging the side of the window works quite well, as does resizing from a non-stayup non-titlebar menu. =============================================== Supplementary files: marcel.vtwmrc is a remarkably-well organized vtwmrc, and it shows exactly the differences between tvtwm and vtwm. I think it would be nice if .tvtwmrc and .vtwmrc could be more similar, so perhaps some of the variables and functions from tvtwm should be added (as synonyms) to vtwm. nexpm is still there; the next release of xpm will presumably include nexpm, however, and after that there will be no need to package nexpm along with vtwm. ============================================== Final note: Enjoy! -- Ralph Betza (FM), uunet!ssiny!gnohmon gnohmon@ssiny.com "The question of whether a computer can swim is more interesting than the question of whether a submarine can think" - Lenny Dykstra vtwm-5.4.7/doc/2.2.README0100664000015300001300000000145510237640615013251 0ustar callumfidActually only one change from 5.2.1 to 5.2.2: A bug in my workaround from 5.2.1 regarding supporting negative door geometries has been fixed. I found this bug by trying to use a +0+0 geometry; it didn't exactly work. DISCLAIMER: I am not the official maintainer or central programmer of vtwm, but there isn't one anyway; I just made a few fixes, played with the code to make it a little bit more `configurable' in certain areas, and decided to see what *you* think of the changes I made. I also don't know much about X programming, but the changes I made to vtwm haven't caused any major damage so far. -- letitflowletyourselfgos[ darren s. embry ]lowandlowthatisthetempo [ dsembr01@starbase ] beingashamedbecauseyouredif[ .spd.louisville.edu ]ferentisthesickestkindoflie vtwm-5.4.7/doc/3.README0100664000015300001300000000760610237640615013116 0ustar callumfidANNOUNCEMENT ============ vtwm 5.3 is available now via anonymous ftp at: ftp.x.org:/contrib/vtwm-5.3.tar.gz A SUMMARY OF CHANGES FROM VTWM-5.2.2 TO VTWM-5.3 ================================================ The file `CHANGELOG' in the vtwm-5.3 archive contains more detailed info concerning changes made since version 5.0. New Variables: -------------- DontInterpolateTitles (from tvtwm) FixTransientVirtualGeometries (BUG WORKAROUND!!) MenuTitleFont (from tvtwm) NailedAbove (aliased to StickyAbove) NoDefaultMouseAndKeyboardBindings NoDefaultTitleButtons NoIconifyIconManagers (from Paul Falstad) StayUpOptionalMenus (from Paul Falstad) StickyAbove (like the same feature in tvtwm) WarpSnug WarpToTransients (from Paul Falstad) New Functions: -------------- f.nail (aliased to f.stick) f.stickyabove (or f.nailedabove) f.warp (from Paul Falstad) f.warpclassnext (from Paul Falstad) f.warpclassprev (from Paul Falstad) f.warptonewest (from Paul Falstad) Other New Features: ------------------- The window manager will now execute a special function called "VTWM Profile" upon the initial startup or restarting of the window manager. This may prove useful in certain situations. For example, say you want AutoPan to have a value but you want autopanning turned off initially: AutoPan 25 . . function "VTWM Profile" { . . f.autopan # turns it off (you can turn it back on later) . . } The feature was created for this very specific purpose in mind, but the possibilities are endless. Other fixes: ------------ autopanning (wouldn't work when mouse was over a window on the edge of the screen sometimes) nailed windows will *always* go on the real screen, wherever the real screen is on the virtual desktop. small fix of an obvious bug in the source regarding nailed windows' representations on the virtual desktop patches to Imakefile Undocumented functions now documented (please use these at your own risk): -------------------------------------------------------------------------- f.cut f.cutfile f.file f.movescreen f.twmrc [same thing as f.restart anyway] f.version WHAT IS VTWM? ============= vtwm (which stands for `Virtual Tab Window Manager') is based upon the twm window manager, but adds extra functionality in the form of a VIRTUAL DESKTOP. The virtual desktop is an area larger than the physical screen, where windows can be placed. On the real screen, a portion of the virtual desktop the size of the real screen can be seen. The `virtual desktop window', of course, facilitates navigation around the desktop and manipulation of windows in the desktop. ACKNOWLEDGEMENTS ================ * Paul Falstad for f.warp, one of the things I really wanted to see, among other related things. * kudos to Chris P. Ross for letting me use some of his code from tvtwm (MenuTitleFont and DontInterpolateTitles). * Marty Leisner , small patches to Imakefile. * Kaur for pointing out f.movescreen to me, and inspiring me to look for other undocumented stuff and take a stab at documenting it. vtwm-5.4.7/doc/4.README0100664000015300001300000004703210237640615013114 0ustar callumfid ---------------------------------------------------------------------------- `grep -n 3D *.[ch] > 3Ddiffs.lst` of CTWM-3.1. This is where VTWM-5.4 began. The exclamation marks denote what I ported. This is not inclusive or exhaustive. RTSL for the signature 'djhjr'. ! add_window.c:276: tmp_win->frame_bw3D = Scr->ThreeDBorderWidth; ! add_window.c:279: tmp_win->frame_bw3D = 0; ! add_window.c:282: if (tmp_win->frame_bw3D != 0) { ! add_window.c:446: AddingW = tmp_win->attr.width + bw2 + 2 * tmp_win->frame_bw3D; ! add_window.c:448: bw2 + 2 * tmp_win->frame_bw3D; ! add_window.c:451: tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); ! add_window.c:521: tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); ! add_window.c:634: tmp_win->attr.width = AddingW - bw2 - 2 * tmp_win->frame_bw3D; ! add_window.c:636: bw2 - 2 * tmp_win->frame_bw3D; ! add_window.c:655: int delta = tmp_win->attr.border_width - tmp_win->frame_bw - tmp_win->frame_bw3D; ! add_window.c:725: if (Scr->use3Dtitles && !Scr->BeNiceToColormap) GetShadeColors (&tmp_win->title); ! add_window.c:726: if (Scr->use3Dborders && !Scr->BeNiceToColormap) { ! add_window.c:733: - tmp_win->frame_bw3D; ! add_window.c:735: tmp_win->old_bw - tmp_win->frame_bw - tmp_win->frame_bw3D; ! add_window.c:736: tmp_win->frame_width = tmp_win->attr.width + 2 * tmp_win->frame_bw3D; ! add_window.c:738: 2 * tmp_win->frame_bw3D; ! add_window.c:776: tmp_win->frame_bw3D - tmp_win->frame_bw, ! add_window.c:777: tmp_win->frame_bw3D - tmp_win->frame_bw, ! add_window.c:793: if (Scr->use3Dtitles && (Scr->Monochrome != COLOR)) ! add_window.c:818: tmp_win->title_x = tmp_win->frame_bw3D - tmp_win->frame_bw; ! add_window.c:819: tmp_win->title_y = tmp_win->frame_bw3D - tmp_win->frame_bw; ! add_window.c:851: XReparentWindow(dpy, tmp_win->w, tmp_win->frame, tmp_win->frame_bw3D, ! add_window.c:852: tmp_win->title_height + tmp_win->frame_bw3D); ! add_window.c:1103: if (Scr->use3Dtitles && (Scr->Monochrome != COLOR)) ! add_window.c:1138: if (Scr->use3Dtitles) ! add_window.c:1177: if (Scr->use3Dtitles) tmp_win->highlightx += 6; ! add_window.c:1201: tmp->title_x = tmp->frame_bw3D - tmp->frame_bw; ! add_window.c:1202: tmp->title_y = tmp->frame_bw3D - tmp->frame_bw; ! add_window.c:1244: tmp->title_x = basex - tmp->frame_bw + tmp->frame_bw3D; ! add_window.c:1589: tmp->title_height + 2 * tmp->frame_bw3D) ? 0 : 2) | ! add_window.c:1591: tmp->title_height + 2 * tmp->frame_bw3D) ? 0 : 1)]; ! ctwm.c:423: Scr->TBInfo.border = -100; /* trick to have different default value if ThreeDTitles ! ctwm.c:499: if (Scr->use3Dtitles) { ! ctwm.c:512: if (Scr->use3Dtitles && !Scr->BeNiceToColormap) GetShadeColors (&Scr->TitleC); ! ctwm.c:513: if (Scr->use3Dmenus && !Scr->BeNiceToColormap) GetShadeColors (&Scr->MenuC); ! ctwm.c:514: if (Scr->use3Dmenus && !Scr->BeNiceToColormap) GetShadeColors (&Scr->MenuTitleC); ! ctwm.c:515: if (Scr->use3Dborders && !Scr->BeNiceToColormap) GetShadeColors (&Scr->BorderColorC); ! ctwm.c:516: if (! Scr->use3Dborders) Scr->ThreeDBorderWidth = 0; ! ctwm.c:526: if (Scr->use3Dtitles) Scr->TitleHeight += 4; ! ctwm.c:732: Scr->FramePadding = -100; /* trick to have different default value if ThreeDTitles ! ctwm.c:737: Scr->ThreeDBorderWidth = 6; ! ctwm.c:797: Scr->use3Diconmanagers = FALSE; ! ctwm.c:798: Scr->use3Dmenus = FALSE; ! ctwm.c:799: Scr->use3Dtitles = FALSE; ! ctwm.c:800: Scr->use3Dborders = FALSE; ! ctwm.c:854: xwc.x += gravx * tmp->frame_bw3D; ! ctwm.c:855: xwc.y += gravy * tmp->frame_bw3D; ! events.c:1367: if (Scr->use3Dborders && (Event.xany.window == Tmp_win->frame)) { ! events.c:1415: if (Scr->use3Diconmanagers && (Scr->Monochrome != COLOR)) ! events.c:1428: if (Scr->use3Diconmanagers && Tmp_win->list->iconifypm) { ! events.c:2172: Event.xbutton.x = JunkX - Tmp_win->frame_bw3D; ! events.c:2173: Event.xbutton.y = JunkY - Tmp_win->title_height - Tmp_win->frame_bw3D; ! events.c:2202: Event.xbutton.x -= Tmp_win->frame_bw3D; ! events.c:2203: Event.xbutton.y -= (Tmp_win->title_height + Tmp_win->frame_bw3D); ! events.c:2533: if (Scr->use3Dtitles && Scr->SunkFocusWindowTitle && ! events.c:2535: Draw3DBorder (Tmp_win->title_w, Scr->TBInfo.titlex, 0, ! events.c:2557: if (Scr->use3Dtitles && Scr->SunkFocusWindowTitle && ! events.c:2559: Draw3DBorder (Tmp_win->title_w, Scr->TBInfo.titlex, 0, ! events.c:2748: if (Scr->use3Dtitles && Scr->SunkFocusWindowTitle && ! events.c:2750: Draw3DBorder (Tmp_win->title_w, Scr->TBInfo.titlex, 0, ! events.c:2882: x -= ((gravx < 0) ? 0 : Tmp_win->frame_bw3D); ! events.c:2886: y -= ((gravy < 0) ? 0 : Tmp_win->frame_bw3D); ! events.c:2890: width = cre->width + 2 * Tmp_win->frame_bw3D; ! events.c:2893: height = cre->height + Tmp_win->title_height + 2 * Tmp_win->frame_bw3D; ! iconmgr.c:101: (2 * (Scr->ThreeDBorderWidth ? Scr->ThreeDBorderWidth : Scr->BorderWidth)); ! iconmgr.c:105: (2 * (Scr->ThreeDBorderWidth ? Scr->ThreeDBorderWidth : Scr->BorderWidth)); ! iconmgr.c:475: if (Scr->use3Diconmanagers) { ! iconmgr.c:477: tmp->iconifypm = Create3DIconManagerIcon (tmp->cp); ! iconmgr.c:712: if (Scr->use3Diconmanagers) { ! iconmgr.c:717: Draw3DBorder (tmp->w, 0, 0, tmp->width, tmp->height, shadow_width, ! iconmgr.c:720: Draw3DBorder (tmp->w, 0, 0, tmp->width, tmp->height, shadow_width, ! iconmgr.c:857: bw = ip->twm_win->frame_bw3D ? ip->twm_win->frame_bw3D : ip->twm_win->frame_bw; ! iconmgr.c:869: newwidth + 2 * ip->twm_win->frame_bw3D, ! iconmgr.c:870: ip->height + ip->twm_win->title_height + 2 * ip->twm_win->frame_bw3D, -1); ! icons.c:405: if (Scr->use3Diconmanagers && !Scr->BeNiceToColormap) GetShadeColors (&icon->iconc); ! menus.c:344: if (Scr->use3Dtitles) ! menus.c:358: if (Scr->use3Dtitles) { ! menus.c:359: if (!CreateTitleButton (TBPM_3DDOT, F_ICONIFY, "", (MenuRoot *) NULL, ! menus.c:363: if (!CreateTitleButton (TBPM_3DRESIZE, F_RESIZE, "", (MenuRoot *) NULL, ! menus.c:422: if (Scr->use3Dmenus) { ! menus.c:423: Paint3DEntry (mr, mi, exposure); ! menus.c:428:void Paint3DEntry(mr, mi, exposure) ! menus.c:444: Draw3DBorder (mr->w, 2, y_offset, mr->width - 4, Scr->EntryHeight, 1, ! menus.c:476: Scr->pullPm = Create3DMenuIcon (Scr->MenuFont.height, &Scr->pullW, ! menus.c:486: Draw3DBorder (mr->w, 2, y_offset, mr->width - 4, Scr->EntryHeight, 1, ! menus.c:594: if (Scr->use3Dmenus) { ! menus.c:595: Draw3DBorder (mr->w, 0, 0, mr->width, mr->height, 2, Scr->MenuC, off, False, False); ! menus.c:890: if (Scr->use3Dmenus && !Scr->BeNiceToColormap) GetShadeColors (&tmp->normal); ! menus.c:956: if (Scr->use3Dmenus) mr->height += 4; ! menus.c:1004: borderwidth = Scr->use3Dmenus ? 0 : 1; ! menus.c:1018: if (Scr->use3Dmenus && (Scr->Monochrome == COLOR) && (mr->highlight.back == UNUSED_PIXEL)) { ! menus.c:1033: if (Scr->use3Dmenus && (Scr->Monochrome == COLOR) && (mr->highlight.fore == UNUSED_PIXEL)) { ! menus.c:1047: if (Scr->use3Dmenus && !Scr->BeNiceToColormap) GetShadeColors (&mr->highlight); ! menus.c:1072: if (Scr->use3Dmenus && !Scr->BeNiceToColormap) { ! menus.c:1447: AddingW = tmp_win->attr.width + bw2 + 2 * tmp_win->frame_bw3D; ! menus.c:1448: AddingH = tmp_win->attr.height + tmp_win->title_height + bw2 + 2 * tmp_win->frame_bw3D; ! menus.c:1476: tmp_win->title_height + tmp_win->frame_bw3D); ! menus.c:2006: moving_icon ? 0 : tmp_win->title_height + tmp_win->frame_bw3D); ! menus.c:2182: moving_icon ? 0 : tmp_win->title_height + tmp_win->frame_bw3D); ! menus.c:2224: moving_icon ? 0 : tmp_win->title_height + tmp_win->frame_bw3D); ! menus.c:3368: if (Scr->use3Dborders) PaintBorders (tmp, onoroff); ! parse.c:467:#define kw0_Use3DMenus 33 ! parse.c:468:#define kw0_Use3DTitles 34 ! parse.c:469:#define kw0_Use3DIconManagers 35 ! parse.c:470:#define kw0_Use3DBorders 36 ! parse.c:512:#define kwn_ThreeDBorderWidth 21 ! parse.c:772: { "threedborderwidth", NKEYWORD, kwn_ThreeDBorderWidth }, ! parse.c:784: { "usethreedborders", KEYWORD, kw0_Use3DBorders }, ! parse.c:785: { "usethreediconmanagers", KEYWORD, kw0_Use3DIconManagers }, ! parse.c:786: { "usethreedmenus", KEYWORD, kw0_Use3DMenus }, ! parse.c:787: { "usethreedtitles", KEYWORD, kw0_Use3DTitles }, ! parse.c:948: case kw0_Use3DBorders: ! parse.c:949: Scr->use3Dborders = TRUE; ! parse.c:952: case kw0_Use3DIconManagers: ! parse.c:953: Scr->use3Diconmanagers = TRUE; ! parse.c:956: case kw0_Use3DMenus: ! parse.c:957: Scr->use3Dmenus = TRUE; ! parse.c:960: case kw0_Use3DTitles: ! parse.c:961: Scr->use3Dtitles = TRUE; ! parse.c:1131: case kwn_ThreeDBorderWidth: ! parse.c:1132: if (Scr->FirstTime) Scr->ThreeDBorderWidth = num; ! resize.c:179: tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); ! resize.c:214: tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); ! resize.c:361: tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); ! resize.c:488: tmp_win->frame_bw, tmp_win->title_height + tmp_win->frame_bw3D); ! resize.c:523: dheight = height - tmp_win->title_height - 2 * tmp_win->frame_bw3D; ! resize.c:524: dwidth = width - 2 * tmp_win->frame_bw3D; ! resize.c:592: tmp_win->iconmgrp->width = (int) (((dragWidth - 2 * tmp_win->frame_bw3D) * ! resize.c:669: dwidth -= 2 * tmp_win->frame_bw3D; ! resize.c:670: dheight -= (tmp_win->title_height + 2 * tmp_win->frame_bw3D); ! resize.c:777: *widthp = dwidth + 2 * tmp_win->frame_bw3D; ! resize.c:778: *heightp = dheight + tmp_win->title_height + 2 * tmp_win->frame_bw3D; ! resize.c:840: tmp_win->iconmgrp->width = w - (2 * tmp_win->frame_bw3D); ! resize.c:841: h = tmp_win->iconmgrp->height + tmp_win->title_height + (2 * tmp_win->frame_bw3D); ! resize.c:855: title_width = xwc.width = w - (2 * tmp_win->frame_bw3D); ! resize.c:885: tmp_win->title_x = xwc.x = tmp_win->frame_bw3D - bw; ! resize.c:886: tmp_win->title_y = xwc.y = tmp_win->frame_bw3D - bw; ! resize.c:893: tmp_win->attr.width = w - (2 * tmp_win->frame_bw3D); ! resize.c:894: tmp_win->attr.height = h - tmp_win->title_height - (2 * tmp_win->frame_bw3D); ! resize.c:911: XMoveResizeWindow (dpy, tmp_win->w, tmp_win->frame_bw3D, ! resize.c:912: tmp_win->title_height + tmp_win->frame_bw3D, ! resize.c:922: if (Scr->use3Dtitles) xwc.width -= 4; ! resize.c:937: WMapSetupWindow (tmp_win, x + tmp_win->frame_bw3D, ! resize.c:938: y + tmp_win->title_height + tmp_win->frame_bw3D, ! resize.c:948: + tmp_win->frame_bw3D); ! resize.c:951: + tmp_win->frame_bw3D); ! resize.c:1100: tmp->frame_bw3D, tmp->title_height + tmp->frame_bw3D, tmp->w, ! resize.c:1126: newBounding[0].x = tmp->title_x - tmp->frame_bw3D; ! resize.c:1127: newBounding[0].y = tmp->title_y - tmp->frame_bw3D; ! resize.c:1128: newBounding[0].width = tmp->title_width + fbw2 + 2 * tmp->frame_bw3D; ! resize.c:1129: newBounding[0].height = tmp->title_height + tmp->frame_bw3D; ! resize.c:1131: newBounding[1].y = Scr->TitleHeight + tmp->frame_bw3D; ! resize.c:1132: newBounding[1].width = tmp->attr.width + fbw2 + 2 * tmp->frame_bw3D; ! resize.c:1133: newBounding[1].height = tmp->attr.height + fbw2 + tmp->frame_bw3D; ! resize.c:1137: newClip[0].x = tmp->title_x + tmp->frame_bw - tmp->frame_bw3D; ! resize.c:1139: newClip[0].width = tmp->title_width + 2 * tmp->frame_bw3D; ! resize.c:1140: newClip[0].height = Scr->TitleHeight + tmp->frame_bw3D; ! resize.c:1142: newClip[1].y = tmp->title_height + tmp->frame_bw3D; ! resize.c:1143: newClip[1].width = tmp->attr.width + 2 * tmp->frame_bw3D; ! resize.c:1144: newClip[1].height = tmp->attr.height + tmp->frame_bw3D; ! util.c:91:static Image *Create3DMenuImage (); ! util.c:92:static Image *Create3DDotImage (); ! util.c:93:static Image *Create3DResizeImage (); ! util.c:94:static Image *Create3DZoomImage (); ! util.c:95:static Image *Create3DBarImage (); util.c:96:static Image *Create3DResizeAnimation (); ! util.c:1341:static Image *Create3DDotImage (cp) ! util.c:1355: Draw3DBorder (image->pixmap, 0, 0, h, h, 2, cp, off, True, False); ! util.c:1356: Draw3DBorder (image->pixmap, (h / 2) - 2, (h / 2) - 2, 5, 5, 2, cp, off, True, False); ! util.c:1364:static Image *Create3DBarImage (cp) ! util.c:1378: Draw3DBorder (image->pixmap, 0, 0, h, h, 2, cp, off, True, False); ! util.c:1379: Draw3DBorder (image->pixmap, 4, (h / 2) - 2, h - 8, 5, 2, cp, off, True, False); ! util.c:1387:static Image *Create3DMenuImage (cp) ! util.c:1401: Draw3DBorder (image->pixmap, 0, 0, h, h, 2, cp, off, True, False); ! util.c:1403: Draw3DBorder (image->pixmap, 4, i, h - 8, 4, 2, cp, off, True, False); ! util.c:1412:static Image *Create3DResizeImage (cp) ! util.c:1426: Draw3DBorder (image->pixmap, 0, 0, h, h, 2, cp, off, True, False); ! util.c:1427: Draw3DBorder (image->pixmap, 0, h / 4, ((3 * h) / 4) + 1, ((3 * h) / 4) + 1, 2, ! util.c:1429: Draw3DBorder (image->pixmap, 0, h / 2, (h / 2) + 1, (h / 2) + 1, 2, cp, off, True, False); ! util.c:1437:static Image *Create3DZoomImage (cp) ! util.c:1451: Draw3DBorder (image->pixmap, 0, 0, h, h, 2, cp, off, True, False); ! util.c:1452: Draw3DBorder (image->pixmap, h / 4, h / 4, (h / 2) + 2, (h / 2) + 2, 2, cp, off, True, False); ! util.c:1466:Pixmap Create3DMenuIcon (height, widthp, heightp, cp) ! util.c:1493: Draw3DBorder (col->pix, 0, 0, w, h, 1, cp, off, True, False); ! util.c:1495: Draw3DBorder (col->pix, 4, i, w - 8, 3, 1, Scr->MenuC, off, True, False); ! util.c:1502:Pixmap Create3DIconManagerIcon (cp) ! util.c:1519: Draw3DBorder (col->pix, 0, 0, w, h, 4, cp, off, True, False); util.c:1526:static Image *Create3DResizeAnimation (cp) util.c:1539: Draw3DBorder (im->pixmap, 0, 0, h, h, 2, cp, off, True, False); util.c:1540: Draw3DBorder (im->pixmap, i, i, h - (2 * i), h - (2 * i), 2, cp, off, True, False); ! util.c:1663:void Draw3DBorder (w, x, y, width, height, bw, cp, state, fill, forcebw) ! util.c:1775:void Draw3DCorner (w, x, y, width, height, thick, bw, cp, type) ! util.c:1781: Draw3DBorder (w, x, y, width, height, bw, cp, off, True, False); ! util.c:1784: Draw3DBorder (w, x + thick - bw, y + thick - bw, ! util.c:1789: Draw3DBorder (w, x - bw, y + thick - bw, ! util.c:1794: Draw3DBorder (w, x - bw, y - bw, ! util.c:1799: Draw3DBorder (w, x + thick - bw, y - bw, util.c:1813: if (tmp_win->frame_bw3D) ! util.c:1839: Draw3DBorder (tmp_win->frame, ! util.c:1845: Draw3DBorder (tmp_win->frame, ! util.c:1846: tmp_win->frame_bw3D - 2, ! util.c:1847: tmp_win->frame_bw3D - 2, ! util.c:1848: tmp_win->frame_width - 2 * tmp_win->frame_bw3D + 4, ! util.c:1849: tmp_win->frame_height - 2 * tmp_win->frame_bw3D + 4, ! util.c:1853: Draw3DBorder (tmp_win->frame, ! util.c:1857: tmp_win->frame_bw3D, ! util.c:1859: Draw3DBorder (tmp_win->frame, ! util.c:1860: tmp_win->frame_bw3D + Scr->TitleHeight, ! util.c:1861: tmp_win->frame_height - tmp_win->frame_bw3D, ! util.c:1862: tmp_win->frame_width - 2 * (Scr->TitleHeight + tmp_win->frame_bw3D), ! util.c:1863: tmp_win->frame_bw3D, ! util.c:1865: Draw3DBorder (tmp_win->frame, ! util.c:1867: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1868: tmp_win->frame_bw3D, ! util.c:1869: tmp_win->frame_height - 2 * (Scr->TitleHeight + tmp_win->frame_bw3D), ! util.c:1871: Draw3DBorder (tmp_win->frame, ! util.c:1872: tmp_win->frame_width - tmp_win->frame_bw3D, ! util.c:1873: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1874: tmp_win->frame_bw3D, ! util.c:1875: tmp_win->frame_height - 2 * (Scr->TitleHeight + tmp_win->frame_bw3D), ! util.c:1877: Draw3DCorner (tmp_win->frame, ! util.c:1878: tmp_win->title_x - tmp_win->frame_bw3D, ! util.c:1880: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1881: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1882: tmp_win->frame_bw3D, 2, cp, 0); ! util.c:1883: Draw3DCorner (tmp_win->frame, ! util.c:1886: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1887: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1888: tmp_win->frame_bw3D, 2, cp, 1); ! util.c:1889: Draw3DCorner (tmp_win->frame, ! util.c:1890: tmp_win->frame_width - (Scr->TitleHeight + tmp_win->frame_bw3D), ! util.c:1891: tmp_win->frame_height - (Scr->TitleHeight + tmp_win->frame_bw3D), ! util.c:1892: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1893: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1894: tmp_win->frame_bw3D, 2, cp, 2); ! util.c:1895: Draw3DCorner (tmp_win->frame, ! util.c:1897: tmp_win->frame_height - (Scr->TitleHeight + tmp_win->frame_bw3D), ! util.c:1898: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1899: Scr->TitleHeight + tmp_win->frame_bw3D, ! util.c:1900: tmp_win->frame_bw3D, 2, cp, 3); ! util.c:1906: if (Scr->use3Dtitles) ! util.c:1909: Draw3DBorder (tmp_win->title_w, Scr->TBInfo.titlex, 0, ! util.c:1914: Draw3DBorder (tmp_win->title_w, Scr->TBInfo.titlex, 0, ! util.c:1922: if (Scr->use3Dtitles) { ! util.c:1942: if (Scr->use3Diconmanagers) { ! util.c:1943: Draw3DBorder (tmp_win->icon->w, 0, tmp_win->icon->height, ! util.c:2095: { TBPM_3DDOT, Create3DDotImage }, ! util.c:2096: { TBPM_3DRESIZE, Create3DResizeImage }, ! util.c:2097: { TBPM_3DMENU, Create3DMenuImage }, ! util.c:2098: { TBPM_3DZOOM, Create3DZoomImage }, ! util.c:2099: { TBPM_3DBAR, Create3DBarImage }, util.c:2123: { "%xpm:resize", Create3DResizeAnimation } util.c:2128: if ((image = Create3DResizeAnimation (cp)) != None) { workmgr.c:1137: Draw3DBorder (Scr->workSpaceMgr.workspaceWindow.w, 0, 0, width, height, 2, workmgr.c:1294: Draw3DBorder (Scr->workSpaceMgr.occupyWindow.w, 0, 0, width, height, 2, workmgr.c:1347: Draw3DBorder (w, 0, 0, bwidth, bheight, Scr->WMgrButtonShadowDepth, workmgr.c:1353: Draw3DBorder (w, 0, 0, bwidth, bheight, Scr->WMgrButtonShadowDepth, ! screen.h:167: short use3Dmenus; ! screen.h:168: short use3Dtitles; ! screen.h:169: short use3Diconmanagers; ! screen.h:170: short use3Dborders; ! screen.h:236: int ThreeDBorderWidth; /* 3D border width of twm windows */ ! twm.h:250: int frame_bw3D; /* 3D borderwidth of frame */ ! twm.h:323:#define TBPM_3DDOT ":xpm:dot" /* name of titlebar pixmap for dot */ ! twm.h:324:#define TBPM_3DRESIZE ":xpm:resize" /* name of titlebar pixmap for resize button */ ! twm.h:325:#define TBPM_3DMENU ":xpm:menu" /* name of titlebar pixmap for menus */ ! twm.h:326:#define TBPM_3DZOOM ":xpm:zoom" ! twm.h:327:#define TBPM_3DBAR ":xpm:bar" ! twm.h:381:extern Pixmap Create3DMenuIcon(); ! util.h:65:void Draw3DBorder (); ! util.h:66:void Draw3DCorner (); ! protos:137:extern void Paint3DEntry(struct MenuRoot *,struct MenuItem *,int ); ! ...in menus.c ! protos:232:extern unsigned long Create3DMenuIcon(unsigned int ,unsigned int *,unsigned int *,struct ColorPair ); ! ...in twm.h ! protos:234:extern unsigned long Create3DIconManagerIcon(struct ColorPair ); ! ...in twm.h ! protos:237:extern void Draw3DBorder(unsigned long ,int ,int ,int ,int ,int ,struct ColorPair ,int ,int ,int ); ! ...in twm.h ! protos:239:extern void Draw3DCorner(unsigned long ,int ,int ,int ,int ,int ,int ,struct ColorPair ,int ); ! ...in util.c ---------------------------------------------------------------------------- `grep -in separator *.[chy] > separator.lst` of CTWM-3.1. This is what it took for menu separators. The exclamation marks denote what I ported. RTSL for the signature 'djhjr'. ! gram.y:741: if ($2 == F_SEPARATOR) { ! gram.y:751: if ($7 == F_SEPARATOR) { ! parse.c:633: { "f.separator", FKEYWORD, F_SEPARATOR }, ! parse.h:105:#define F_SEPARATOR 58 ---------------------------------------------------------------------------- See the files 4.ANNOUNCE, BUGS and CHANGELOG for a summary of these and other changes - djhjr - ---------------------------------------------------------------------------- vtwm-5.4.7/doc/BUGS0100664000015300001300000000613110237645271012553 0ustar callumfid A LISTING OF BUGS ================= This is the bug list as distributed with VTWM 5.3. * Behavior of transients on the virtual desktop, when the real screen is not at (0,0), is almost unpredictable. Hence the FixTransientVirtualGeometries variable, new to 5.3, which is not guaranteed to work in every case. --- DSE * When the Zoom count is a largish number and PrettyZoom is set, some artifacts may be left on formerly obscured windows. Decrease the count value. --- djhjr * Not a bug, but the IconRegion variable should take a list. --- DSE * Not a bug, but the resource manager should have been used instead of all of the window lists. --- DSE Bugs created as a result of my hacking VTWM 5.4. --- djhjr * Icon borders will not do 3D, and I don't want to to mess with it. The icons themselves are 3D when IconBevelWidth is non-zero, however, and the IconBorderWidth variable is automatically set to 0. * The code to vertically center a door name in the window is correct. It just won't appear so, due to the window and font heights. Play with the door geometry. * Behavior of managed windows when used as transients on the virtual desktop, when the real screen is not at (0,0), is sometimes flawed. Hence the FixManagedVirtualGeometries variable, new to 5.4.4, which is also guaranteed to not work in every case. * Only titlebar buttons, and therefore the titlebar itself, can adjust to the height of external images. * All images should either tile or center as required. * VTWM recognizes two-color pixmaps, but incorrectly uses them as bitmaps. * When 3D bevel widths reach double digits, things start going weird, and I don't know why. Hence an imposed limit of nine pixels. * The region resources don't like 0 or 1 for a horizontal grid space. A kludge is in that fixes it (I think). * The f.warpto function doesn't recognize a regular expression. * It is possible to place a window sufficiently off-screen as to defeat warp functions (ex: The visible part wholly within AutoPanBorderWidth pixels of screen edge). * When warping the screen to a window during a move or resize operation, any number of exposed clients may not get drawn. * Menus can become unresponsive. I don't know what triggers this, though submenu selections seem to be involved. * At least one application seems to foul up the window ring. At present, restarting VTWM is the only cure. Bugs encountered and not fixed while hacking VTWM 5.4. --- djhjr * Opaque resizing of windows with squeezed titlebars can kill the X server. A hack prevents this by raising the window before the resize. * If there is an order of precedence regarding contexts, it's broken. * There are precious few safeguards against binding functions to objects inappropriately, particularly where the virtual desktop is concerned. * Redefining a bound function doesn't behave as one would expect; really strange things occur. * Not a bug, but the sample resource file .vtwmrc-marcel is quite out of date regarding various VTWM features. vtwm-5.4.7/doc/4.4.README0100664000015300001300000000035610237640615013254 0ustar callumfid I'm not going to reiterate all the changes from 5.4.3 to 5.4.4 here. The 4.4.ANNOUNCE file has an overview, and the CHANGELOG file lists everything in more detail. Check those out. D. J. Hawkey Jr. (hawkeyd@visi.com) January 18, 1998 vtwm-5.4.7/doc/4.5.README0100664000015300001300000000040210237641630013243 0ustar callumfid When VTWM 5.4.5 was released on or about Sep 19 1998, this file contained a list of new or changed features for that version. I've since created and maintain a HISTORY file that lists the features added or changed for all releases of VTWM 5.4. --- djhjr vtwm-5.4.7/doc/HISTORY0100664000015300001300000006517710237662015013166 0ustar callumfid VERSION HISTORY OF VTWM 5.4 =========================== VTWM 5.4.7 New Features - Added internationalization (I18N) support. - Support ignoring "shift states" when determining if a key or rodent button event is bound (added the IgnoreModifiers variable). - Support passing raw key and rodent button events to windows (added the f.bindbuttons, f.bindkeys, f.unbindbuttons and f.unbindkeys functions). - Allow warp functions to position the pointer at the center of windows (added the WarpCentered variable). - Allow the 3D borders of titled windows to be unadorned (added the NoBorderDecorations variable). - Prohibit windows from being added to the WindowRing list (added the NoWindowRing variable). - Opened up icon managers and menus to user-specified images (added the MenuIconPixmap and IconManagerPixmap keywords). This gives the ShallowReliefWindowButton variable wider scope. - Two new 3D built-in pixmaps, :xpm:box and :xpm:lines. - Four new 3D built-in pixmaps for the titlebar highlight, :xpm:raisedbox, :xpm:sunkenbox, :xpm:raisedlines, and :xpm:sunkenlines. These obsolete the SunkFocusHighlightWindow variable. - The command line can specify that no startup file be used (primarily for testing compiled-in defaults). - Added support for Motif window manager hints (currently, honor "noborder" and "notitle" hints). - Allow sounds to be played "ad hoc" (added the f.playsound function). - Added PointerPlacement keyword. Changed Features - The UsePPosition variable accepts a list now. - The f.warpto function accepts VTWM-style wildcards now. - Refinements to the f.resize and f.move functions: Both are now single rodent button operations from any context, and both warp the pointer back to the virtual desktop when started from there. The wireframe is drawn immediately, ignoring MoveDelta. MoveDelta is otherwise used consistantly now. Constrain virtual desktop resizes to multiples of PanDistance when SnapRealScreen is set. - Refinements to the titlebar: The title bevel can now frame the entire titlebar when built-in 3D buttons are not full height. Buttons can now "extend into" the title bevel and frame padding. The highlight area (or absence of) is handled correctly now. The built-in 3D highlight is now available with or without a title bevel. The ButtonIndent, FramePadding, TitleBevelWidth, and TitlePadding variables are changed. - The TitleHighlight keyword accepts built-in pixmaps now, like the LeftTitleButton and RightTitleButton bindings. - The raise for moved and resized windows now occurs after the movement (added the RaiseOnStart variable). - Some shaping optimizations. - Depreciated the motion event handler. - Chmod 0600 $(HOME)/vtwm.pid. - Let lexers track line numbers by default. - Reduced the compiled-in defaults footprint. Bug Fixes - Fixed warp bugs when windows are borderless or shaped. - Fixed some icon move and resize bugs. - Fixed a vertical placement error in applet regions. - Fixed most stacking order bugs when moving and resizing windows. - Cancelled moves and resizes now work correctly, except one case. - The pointer is adjusted back to the window as needed on resizes. - Fixed some titlebar highlight exposure bugs. - Fixed some off-by-clientborderwidth window placement bugs. - Fixed an off-by-one malloc() and a null pointer reference. - Checks for the number of rodent buttons and VTWM Windows entries. - The f.warpring function has been fixed. Again. - Fixed a race condition when f.squeeze* functions are invoked from a window menu while Opaque* variables are set. - Prevent f.squeeze* functions when the DontSqueezeTitle variable is set. - Removed the limitations of the f.startwm argument. - Fixed the 3D borders of titled windows when the BeNiceToColormap variable is set. - Reduced server grabs. - Better handling of missing or empty string resources. - sound function referenced outside of ifdef. Misc. - Updated the man page, and the BUGS, INSTALL, SOUND, and WISHLIST files. - Updated the system and sample resource files. - Updated contrib/support/sysrc_add_apps.sh. VTWM 5.4.6b (bugfix release) Fixed a bug causing sporadic restarts when realizing unmanaged windows. VTWM 5.4.6a Support for borderless windows (added the NoBorder variable). Better random placement of large windows. Fixed bugs regarding icon managers and warp rings. Doors are drawn during opaque interactive creation now. MakeTitle now overrides NoTitle like it's supposed to. Added creating and deleting a pid file. Fixed a focus problem with transient windows. Improved the list parser in contrib/support/sysrc_add_apps.sh. VTWM 5.4.6 New Features - Added pre-processing of the resource file with m4. Parameters can be passed on the command-line, too. - Added support for regular expressions ("RE"s) in resource file window lists. VTWM's own wildcarding is still honored. - Sound effects are now supported, by way of the rplay library and daemon (added the PauseOnExit, PauseOnQuit, SoundHost, Sounds, SoundVolume, and f.sounds resources). - Added applet regions. For all those handy little utilities we use every day. - Added "scrollability" to menus that would be taller than the display (added the MenuScrollBorderWidth and MenuScrollJump variables). - Doors and the virtual desktop can now be rendered in 3D (added the DoorBevelWidth and VirtualDesktopBevelWidth variables). - Non-nailed icons can now stay put at their locations on the virtual desktop (added the StaticIconPositions and f.staticiconpositions resources). - Iconified transient windows of an iconified parent window can now have their state preserved when that parent is deiconified (added the DontDeiconifyTransients variable). - Iconification of windows is now prevented when there is no provision to deiconify or otherwise restore them. - Icon managers can now list only iconified windows (added the StrictIconManager and f.stricticonmgr resources). - Added support for warping only to visible windows (added the WarpVisible and f.warpvisible resources). - Improved response to exposure events of transparent pixmaps used for window buttons on pointer-driven focus changes. - Added four built-in button images, two each of down and right arrows. Changed Features - A small tweak in icon and applet regions to have the region layout logic disregard grid spacing in determining whether a window will fit. - Relaxed the door geometry parser, allowing omission of the position. - Applied the XPM library's color closeness attribute to external pixmap images. - Doors, icon managers, and the virtual desktop have minimum sizes imposed on them now. - Doors now override real screen snapping on entry. - Icon managers now honor the IconifyByUnmapping resource. - Removed the UseRealScreenBorder variable. If it's non-zero, why wouldn't you want to use it? - Added compiled-in options to the build info in the version window. - The X database resource "*bitmapFilePath" is now searched for pixmap image files. - Random zooms during deiconification are controlled by a resource now (added the ZoomZoom variable). - The cursor stays with the titlebar on a squeeze operation, like it does with zooms. - All the f.*iconmgr warp functions honor the WarpSnug and WarpWindows variables now (or absence of). The WarpSnug state can now be toggled. Bug Fixes - Doors, icon managers, and the virtual desktop now respond to zoom operations properly. - Doors, icon managers, and the virtual desktop now get redrawn during opaque resizes (redrawing doors during interactive creation is still a problem). - Fixed transposed virtual desktop default foreground and background colors. - Work on the bug where windows may be mapped in desktop (0,0) regardless of the desktop's location in the virtual display. - Fixed positioning errors for the icon manager and virtual desktop windows. - The virtual desktop's bevel and a door's text and bevel now get redrawn after being resized. - The virtual desktop now properly accomodates the real screen's border. - Skip re-mapping of the virtual desktop to clean up outline droppings if the window moved or resized is itself. - When moving an application window in the virtual desktop, the border of the corresponding real screen window now highlights as required. - Windows can now be resized and moved from icon managers and menus not of the root or window in question. - Fixed window resizing via the virtual desktop and icon managers. Fixed window moves (f.move) via the virtual desktop. - Zooms know about icon managers now. - Iconified icon managers now behave as one would expect when removing the last entry in them. - The f.delete and f.destroy functions now work properly on doors, icon managers, and the virtual desktop. - The f.hideiconmgr and f.showiconmgr functions now work against icon managers defined with the IconManagers resource. - Fixed bugs in getting icon names, window states, and pixel atoms from the X server. - Fixed where truncation of long titles messed up in titlebars that don't have any left-side buttons. - The titlebar height now adjusts to external button images. - Sanity checks on door renames. Fixed two menu repaint bugs. - Fixed a bug in the display of a renamed door. - Tweaks to correct the painting of external images on multiple screens. - Fixed a bug where icon bitmaps were rendered with the wrong color. - Fixed the PanResistance resource's not recognizing when the pointer has left the autopan windows. - The icon manager's class is visible to resource list entries now. - The window's icon name now has it's own memory space. Occasionally, VTWM would crash if an app changed it. - Added a kludge to "fix" not getting the rodent button up event when deleting doors. - Fixed the "orphaning" of intermediate parent menu(s) when skipping them for some superior parent menu. - Fixed deferred execution on keyboard events when the root window has focus. Misc. - Added support for the rplay library to the make files. - Added support for regular expressions to the make files. - Ensure the built-in resources and build info are current (tweaks in the make files). - The man page is now included on 'make install'. - Also in the make files, moved the $(NO_XPM_SUPPORT) and $(NO_M4_SUPPORT) defines into $(DEFINES), and removed some SpecialObjectRule()s. Two new definitions and a different directive make for more flexible installs. - Renamed the lnf directory to contrib. Created subdirectories therein for images, sounds, and misc. support stuff. Removed the leading '.' from the resource file names. - The system resource files are a bit more useful and appealing. - A new script in contrib/support can add installed applications to the system default resource file. - Updated the sample resource files to demonstrate some of m4's capabilities. - Added some sample button image and sound files. - Updated the BUGS, INSTALL, and WISHLIST files, and added the HISTORY and SOUND files. - Moved the man page into doc. VTWM 5.4.5a Fixed text display bug in the size and position windows. VTWM 5.4.5 New Features - Added code to make it a little harder to accidentally pan to an adjacent virtual screen (added the PanResistance variable). - Discovered that VTWM supports a subset of regex wildcards for list variables! It's in the man page now. - Added a signal handler for external restarts. - Added code to restart using a specified window manager (added the f.startwm function). - Made the borders of windows without titlebars forward key events events to the application, like titlebars do. - Added and aliased the OldFashionedVtwmWindowsMenu variable to OldFashionedTwmWindowsMenu. - Added code to suppress entries in th VTWM Windows menu (added the DontShowInVtwmWindows and DontShowInTwmWindows variables). - The window border of the virtual desktop now honors key bindings to "virtual". - Doors and their borders are now sensitive to key bindings. - Added code to inhibit forwarding focus from icon manager entries to the corresponding application windows (added the NoIconManagerFocus variable). - Established a directory, doc, for all the documentation that has accumulated through time. - Established a directory, lnf (look n' feel), for the previously included sample resource and image files, added a couple more, renamed some. - Gave the icon manager and virtual desktop resource classes. - The f.warpclassprev and f.warpclassnext functions now accept an empty string, meaning the class of the window with focus. - Added color (XPM) image support for the UnknownIcon variable and application-specified icons (changed the UnknownIcon variable). - The three entries of the Pixmaps variable now fully support color (XPM) images (changed the Pixmaps variable). - The 3D rendition of icons is now governed by its own variable (added the IconBevelWidth variable). - The position window now reports during moves in the virtual desktop. - The position window now reports during constrained moves. - Added code to support pasting a name into a door (added the f.namedoor function). - When windows are created, they now honor the opaque variables when the RandomPlacement variable is not set. - While moving and resizing windows on the real screen, the virtual desktop now responds in kind, and visa-versa (added the VirtualReceivesMotionEvents and VirtualSendsMotionEvents variables). - Added code for opaque resizing (added the OpaqueResize and NoOpaqueResize variables). - All opaque variables now support lists (added the NoOpaqueMove variable, and changed the OpaqueMove variable). - Added code to properly truncate, then add ellipses to, titles that are longer than the space they're drawn on. Changed Features - Applied the MoveDelta variable to window resizing and initial menu highlighting. - Tweaks to suppress menu highlighting on mapping, relieve CPU consumption on menus bound to rodent buttons, and allow a second rodent button press to cancel menus. - Tweaks for application-defined icon border widths. - All references to and mention of the shadow contrast variables have been changed to *BevelContrast (changed the DarkShadowContrast variable to DarkBevelContrast, and the LightShadowContrast variable to LightBevelContrast). - All references to and mention of the shadow width variables have been changed to *BevelWidth, and they are configurable now (added the BorderBevelWidth, IconManagerBevelWidth, InfoBevelWidth, MenuBevelWidth, TitleBevelWidth, and ButtonBevelWidth variables; removed the UseThreeDBorders, UseThreeDIcons, UseThreeDIconManagers, UseThreeDMenus, UseThreeDTitles, and ThreeDBorderWidth variables). - A few changes to grab the server during non-opaque moves and resizes, regardless of the NoGrabServer variable. - Changed the foreground color for the built-in "TwmWindows" menu to that of the global variable (added and aliased "VTWM Windows" to "TwmWindows"). - Another tweak to the f.warpclass* functions, to properly handle multiple icon managers. - Had to make an exception for icon managers regarding warps, that their window border isn't the destination. - The f.warpclass* functions will now exhibit reasonable behavior when an empty string is used on windows without titlebars or on VTWM-specific windows. - Tweaks made to the f.warpclass* variables and the f.warpring function so the destination is a titlebar or border like the other warp functions, and the latter now remembers the window to warp to when invoked from the root window. - All warping functions now honor the WarpUnmapped variable a la the f.warpto function (changed the f.warpclassprev, f.warpclassnext, f.warpnewest, f.warpring, and f.warptoiconmgr functions). Bug Fixes - Fixed a bug with icon manager geometries that would blow VTWM out of the water. - Fixed a bug for the AutoPan variable, when the pan windows are obscured by a newly-raised window. - Plugged a memory leak, where transparent pixmap resources weren't freed before re-use. - Tweaks to streamline icon bitmap handling, and fixed the painting of non-transparent titlebar highlight pixmaps. - Tweaks to correct the painting of built-in images on multiple screens. - Window buttons can now be beveled when external images are used. - Fixed a bug where the titlebar highlight wasn't erased when focus was unset and the BeNiceToColormap and SunkFocusWindowTitle variables were used. - A safer approach to the RaiseDelay variable's timeout. - Fixed a bug I introduced where non-3D borders were always rendered as highlighted! - Fixed some bugs in colormap management. - Added a few "prevents" when there isn't an icon manager mapped. - Made initial window placement adjust to client borderwidths, depending on related variables. - The virtual desktop is now re-mapped after non-opaque moves and resizes to clean up any outline droppings left on it when the Virtual*MotionEvents variables are set. - Found and plugged the hole in the original menu handler that would blow VTWM out of the water when the pointer scrolled down past the last entry. - Virtual window geometries now account for 3D borders. - Virtual-to-real window scaling and positioning errors have been reduced. - Re-instated the effects of the RightHandSidePulldownMenus variable! - The snug variables now take border width into account. - Fixed the rendition of a squeezed titlebar's right-side 3D border (a silly gunkulation error). - The NoGrabServer variable now sees to it the server is actually not grabbed! - The f.warpclassprev function actually goes backwards now! - Many tweaks to make titlebar-related variables consistant with respect to each other and 3D rendition of the various elements. Misc. - Even more tweaks for portability, most notably, restoring X11R4 compatability by not including the X11R5,6 headers Xosdefs.h and Xfuncs.h! X11R5,6 don't seem to mind. - Purged GNU-specific syntax from this new Imakefile, and changed the NO_PUTENV definition to NEED_PUTENV_F, for consistancy. - Support for bison. - Added a define supporting a 2D or 3D system default resource file. - Added the system Imake.tmpl macro for flex's library (should be absent or an empty string on systems with lex). - Renamed the HINTS file to INSTALL, and it's more comprehensive now. VTWM 5.4.4c Added color image (XPM) support for window buttons. VTWM 5.4.4b Fixed a bug where the window buttons would get painted with the border color when the background color should have been used. Fixed warping to titlebars not flush left. VTWM 5.4.4a Fixed a fault causing a SIGSEGV in the info window. Purged the use of a depreciated constant in the XPM library. VTWM 5.4.4 New Features - Added a variable to tell the icon manager whether or not to highlight its entries as an indication of pointer location, regardless of the NoHighlight variable (added the NoIconManagerHighlight variable). - Enabled a variable to go easy on the colormap; it doesn't render perfectly yet (added the BeNiceToColormap variable). - Color image (XPM) support for icons. - Added a bug workaround to try to make managed windows used as transients behave (added the FixManagedVirtualGeometries variable). Changed Features - Allow screen warps to honor the SnapRealScreen variable. - Simplified the meaning of the SqueezeTitle variable list parameters. Bug Fixes - A better effort at getting a name for the window. - Added a kludge to "fix" screen warps to de-iconifying windows not on the real screen (high degree of confidence it's not the source of the problem). - Rewrote most of the 3D border code, adding, among other things, drawing the top border segment when 3D borders are used with squeezed titles! - Fixed a bug causing SIGFPEs when pan distances are set to zero. - Fixed an oversight where monochrome GCs weren't getting intialized! Misc. - Added the HINTS file to the distribution. - Moved and added many function declarations into header files for quieter builds. - Use the system Imake.tmpl macro for yacc and removed all escaped characters from the lastmake.c rule in the *akefile*s. - On startup, VTWM now searches for user and system .vtwmrc files, then user and system .twmrc files, in this order. - Fixed and added many declarations and definitions. - Updated the man page. - Support for HTML and Postscript versions of the man page added to the *akefile*s. - Pruned the R4 Imakefile from the tree. - Pruned the vtwmrc/ directory from the distribution tree. VTWM 5.4.3 Bug Fixes - Fixed a bug where the wrong variable was being used to highlight the window border that has focus. - Fixed an omission where the window buttons would not follow the border color when highlighted and the ButtonColorIsFrame variable is true. - Added a hack to trap corrupted/invalid window button names. VTWM 5.4.2 New Features - Modifications for a 3D appearance, menu separators, a position window, info window fonts, and resize/position window locations (added the SunkFocusWindowTitle, UseThreeDIconManagers, UseThreeDMenus, UseThreeDTitles, UseThreeDBorders, ThreeDBorderWidth, ClearBevelContrast, DarkBevelContrast, InfoFont, and ResizeRegion variables; added the f.separator function). - Added code to properly paint the window buttons in the same color as their titlebar (added the ButtonColorIsFrame variable). - Now closes the display before spawning the new WM on a restart operation - free alloc'd memory in the X server? - Applied the backing store and NoBackingStore variables to the Icon Manager and titlebars (defeats effects of RaiseDelay). - Added code for Motif-ish "shallow" relief in 3D titlebars and buttons to matches the others (added the ShallowReliefWindowButton variable). Changed Features - Made a few variables un-alterable when 3D appearances are used. - Made the cursor warp to the titlebar on a zoom operation if WarpCursor is set on. - The function f.showdesktopdisplay now deiconifies as required. - Added build info to the version window by having the *makefil*s create a temporary C module. - Tweaked the 3D menu icons to look a little more like menus. - Made the 3D Icon Manager iconified indicators "shallow" to match the 3D menu icons. - Tweaked the hard-coded geometries for a better 3D appearance on icons (looks best with IconBorderWidth set to 0). - Changed "Twm Door" to "VTWM Door", in the name of Consistancy. - Changed "Virtual Desktop" to "VTWM Desktop". - Changed the code to center door window names in their windows. - Took liberties with the SunkFocusWindowTitle function. - Changed as many as convenient boolean shorts to bits in a Slim-Fast effort. Bug Fixes - Numerous changes to accomodate added buttons and squeezed titlebars - I had previously overlooked these. - Changed code to properly scale menus to the fonts used. - Fixed a bug in zooms that I introduced! - Added code preventing the virtual desktop window and door windows from doing harm. - Fixed a bug when trying to move the virtual desktop window with the pointer. Misc. - A couple of changes for a cleaner compile (what were 'int' functions are now 'void', etc.). - Updated the man page. VTWM 5.4.0 - 5.4.1 No public release was made of versions before 5.4.2. vtwm-5.4.7/doc/2.1.ANNOUNCE0100664000015300001300000000625310237640615013522 0ustar callumfidFrom comp.windows.x Sat Oct 9 17:02:14 1993 Xref: netnews.louisville.edu comp.windows.x.announce:212 comp.windows.x:53876 Newsgroups: comp.windows.x.announce,comp.windows.x Path: netnews.louisville.edu!starbase.spd.louisville.edu!dsembr01 From: Darren S. Embry Subject: ANNOUNCING the release of vtwm 5.2.1 Originator: dsembr01@terra.spd.louisville.edu Sender: news@netnews.louisville.edu (Netnews) Message-ID: Date: Wed, 6 Oct 1993 20:46:34 GMT Reply-To: dsembr01@starbase.spd.louisville.edu Nntp-Posting-Host: terra.spd.louisville.edu Organization: University of Louisville Speed Scientific School I am announcing the (unofficial) release of vtwm version 5.2.1. It's available at: ftp.x.org:/contrib/vtwm-5.2.1.tar.gz As far as changes from version 5.2 to version 5.2.1 go, they are mostly a few aesthetic and look-and-feel hacks and a couple of bug fixes. I would really like input as to how you like the changes I made. -- Darren S. Embry, dsembr01@starbase.spd.louisville.edu -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- MINOR NEW FEATURE (I can't say it's a big deal) ----------------------------------------------- Natural Autopan Behavior By default, when autopanning, the pointer is warped by only (AutoPanBorderWidth + AutoPanExtraWarp) pixels on the real screen. With this option turned on, the pointer is warped by as many pixels as the screen is scrolled, or by the above number of pixels, whichever is greater. Thus, the pointer will not actually move very much (only by AutoPanExtraWarp) in relation to the virtual desktop. This works very well on faster X terminals, although I can't say the same thing for slower ones (but setting AutoPanWarpWithRespectToRealScreen may do a good job). NEW VARIABLES to play around with --------------------------------- AutoPanBorderWidth AutoPanExtraWarp AutoPanWarpWithRespectToRealScreen EnhancedExecResources LessRandomZoomZoom NaturalAutopanBehavior # synonymous with ``AutoPanWarpWithRespectToRealScreen 100'' PrettyZoom RealScreenBorderWidth RightHandSidePulldownMenus OTHER HACKS AND BUG FIXES ------------------------- Supports negative and `0,0' door geometries. [ bug fix ] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- DISCLAIMER: I am not the official maintainer or central programmer of vtwm, but there isn't one anyway; I just made a few bug fixes, played with the code to make it a little bit more `configurable' in certain areas, and decided to see what *you* think of the changes I made. I also don't know much about X programming, but the changes I made to vtwm haven't caused any major damage so far. -- letitflowletyourselfgos[ darren s. embry ]lowandlowthatisthetempo [ dsembr01@starbase ] beingashamedbecauseyouredif[ .spd.louisville.edu ]ferentisthesickestkindoflie vtwm-5.4.7/doc/4.6.README0100664000015300001300000000013010237641630013242 0ustar callumfid See the HISTORY and CHANGELOG files for version and chronological changes. --- djhjr vtwm-5.4.7/doc/4.7.README0100664000015300001300000000203210246306373013250 0ustar callumfidThis is release 5.4.7 of VTWM the Virtual Tab Window Manager for the X Window System. See the CHANGELOG and HISTORY files in the doc subdirectory for further information on changes since the last release. This release is dedicated to the memory of David J Hawkey Jr, the previous maintainer of vtwm, who sadly passed away as this release was being prepared. The VTWM community acknowledges the countless hours he dedicated to this project and are proud to carry on this project as his legacy. This will also be the first release to be publically available in a source code repository. Callum Gibson 29th May, 2005 callumgibson@optusnet.com.au ---------------------------------------------------------------------- David John Hawkey Jr. Hawkey, David John Jr., age 47, of Mpls., on 10/17/04. Survived by son, John David; mother, Alicia; father, David Sr.; sister, Lisa; brother, Chris; and Gayle Hawkey. A farewell party will be planned at a later date. Cremation Society of MN 612-825-2435 Published in the Star Tribune on 10/24/2004. vtwm-5.4.7/doc/WISHLIST0100664000015300001300000000577010237645271013271 0ustar callumfid WISHES FOR THE FUTURE OF VTWM ============================= From vtwm-5.1 spawned two independent versions, vtwm-5.2 and vtwm-5.2b. The features added to 5.2b are different from the ones added to 5.2, and I based my version(s) on 5.2 rather than 5.2b since in 5.2 the features were, in my humble opinion, more useful, while in 5.2b the new stuff was mostly `chrome' (e.g., XPM support, etc.). I was seriously considering adding the features from 5.2b into 5.3, but I didn't have enough time. I would like to see most of the features from 5.2b merged into the next version, especially the color XPM support and m4 pre-processing of the *twmrc file. See below for more info. --- DSE [From the CHANGES-5.2 file in the vtwm-5.2b archive] ---------------------------------------------------------------- begin file Summary feature list for version 5.2: * Added m4 pre-processing of the *twmrc file. courtesy of Dave Edmondson. DONE - jg * Added :random color specification, which generates colors on the fly. * Color XPM support for icons. DONE - jg, djhjr * Color XPM support for buttons. DONE (the titlebar highlight, the virtual desktop and it's real screen window, too!) - djhjr * 3D appearance on menus, titles, icons. DONE (the window's borders, the virtual desktop, info windows, doors, and icon managers, too!) - djhjr * Moving in and out of desktop. * Opaque resizing available. DONE - djhjr * Both OpaqueResize and OpaqueMove may specify lists of windows as opposed to being "global". DONE - djhjr * Can direct focus through desktop at real windows. When enabled, the desktop windows also indicate the focus highlight by using the border. * regexps can be used for lists in the vtwmrc. DONE - djhjr * Size information is displayed during both move and resize. DONE - djhjr * Size information can be centered in the screen. DONE (any of the screen corners, too!) - djhjr * Desktop size may be specified in multiples of real screen. IT'S THERE (see contrib/vtwmrc-parms) - djhjr * Can "paste" a new name into a door. DONE - djhjr * Places property on root window giving virtual coordinates, in case other programs want to use this info. (e.g. xpostit). * Now uses a blank/icon startup screen while initialising. * Many bugfixes, especially to do with desktop stacking order and iconification/deiconification of the desktop windows. ALMOST ALL DONE - djhjr ------------------------------------------------------------------ end file * A better way of implementing StickyAbove and "VTWM Profile". Here's the list of stuff I would like to see added to VTWM. --- djhjr * Support for user-defined icons in menus and the icon manager. MOSTLY DONE - djhjr * More coherent/uniform handling of XPM images, particularly where transparency is concerned. * I18n support. This will break X11R4 compatability if not done right. DONE - djhjr vtwm-5.4.7/doc/INSTALL0100664000015300001300000002215110243221745013112 0ustar callumfid BUILDING VTWM 5.4 ================= - Unpack the distribution. You've likely done that already, no? - Determine if you have the XPM library installed: - The library is usually found in /usr/X11R6/lib, /usr/local/lib, or some such directory. It's usually called "libxpm.a". - The header file is usually found in /usr/X11R6/include, /usr/local/include, or some such directory. It's "xpm.h". - Determine if you have regular expressions ("RE"s) support: - On many systems, the routines are built into the standard C library. If not, the library might be in /usr/local/lib, /usr/lib, or some such directory, and would be called something like "libregex.a". - The header file is usually found in /usr/local/include, /usr/include, or some such directory. It's "regex.h". - Note that the routines must conform to the POSIX 1003.2 specification. Older systems may have regex support that predates this POSIX spec, and will not suffice. - Determine if you have the rplay library installed: - The library is usually found in /usr/local/lib, /usr/lib, or some such directory. It's usually called "librplay.a". - The header file is usually found in /usr/local/include, /usr/include, or some such directory. It's "rplay.h". - Determine if your system supports internationalization (I18N): - On many systems, header files "locale.h" and "Xlocale.h" are found in /usr/include and /usr/X11R6/include/X11, respectively. - Determine if you have the m4 macro processor installed: - Issuing 'whence m4' or 'which m4' ought to do it. - Look over Imakefile, and edit to taste. If you use a VNC client, or Cygwin under MS-Windows, you may want to make changes as described further down in this file. Or particular interest to some people will be the installation path which can be changed by editing VTWMBINDIR. See also VTWMLIBDIR and VTWMMANDIR. This will allow installation to other than the system X11 directories where you don't have root access. - Issue 'xmkmf'. If that doesn't work (you'll know it), you'll have to copy Makefile.QNX to Makefile, and edit the latter to taste. - Issue 'make'. This shouldn't take very long at all; VTWM is small. Should the build break, check further down in this file. If it still breaks, ask a friend. If it _still_ breaks, you can write me. - The sysrc_add_apps.sh script in contrib/support/ may be of help in customizing the default system resource file. It automagically adds selected applications found on your system to system.vtwmrc. Issue 'sh contrib/support/sysrc_add_apps.sh -h' for a brief help message. INSTALLING VTWM 5.4 =================== 1) Installation. If you haven't modified VTWMBINDIR, et al, to point to a non-system area in which you have write access, you will need to perform the following install steps as root. - If you trust whoever set up your build environment: - issue 'make install'. If you don't: - Issue 'make -n install' to see what it'll do, without actually doing it. - If you want (or have) to set it up manually: - Copy vtwm to /usr/X11R6/bin, or to wherever other X window managers and binaries are. - Copy system.vtwmrc to wherever it's spec'd in the Makefile (this path is built into the VTWM binary). - Copy vtwm.man to wherever other X window manager man pages are (usually /usr/X11R6/man/mann). 2) Configuration. - Set up user resource files: - Copy system.vtwmrc to your home directory as .vtwmrc, and edit it to suit your immediate needs (you'll be editing it a lot more, I'm sure). - If VTWM supports m4, you can copy the contrib/vtwmrc/ directory into your home directory as vtwm/ or some such. Then, create a symlink $(HOME)/.vtwmrc to one of the vtwmrc-*ish files in that subdirectory, or specify one of those files on VTWM's invocation (either will give you much more to work with). - The sysrc_add_apps.sh script in contrib/support/ may also be useful in customizing user resource files by playing with its command-line switches. - Edit the script that starts your current X window manager to start VTWM instead (mine is 'vtwm -d :0.0 -f vtwm/vtwmrc-MWMish -s -m -p' in $(HOME)/.xinitrc). - Exit X, and restart it. BUILD HINTS =========== - If, during the build, you get complaints of an undefined "yylineno", uncomment the "NEED_YYLINENO_V" definition in Imakefile (or the Makefile) and try the build again. If it is still undefined, also remove the "extern" keyword from its declaration in gram.y. Likewise, if "yywrap" turns up as undefined, add a line "yywrap() {return(1)};" to lex.l. Finally, if "yylex" turns up undefined, it can be fixed by adding a line "#define YY_DECL int yylex YY_PROTO((void))" to lex.l. These are all expected to be in the lexer's skeleton file, but there are some without. - If, during the build, you get complaints of undefined data types and functions "FontSet" and "Xmb" whatall, it's because you've built VTWM with internationalization (I18N) support, and your system doesn't support it. Read the comments in Imakefile and/or Makefile.QNX. - If, during the build, you get complaints of undefined data types and functions "Xpm" whatall, it's because you've built VTWM with XPM image support, and either you don't have the XPM library available, or it's not a recent enough version (3.4h is the earliest I know of). Read the comments in Imakefile and/or Makefile.QNX. - If, during the build, you get complaints of an undefined data type "regex_t" or functions "reg" whatall, it's because you've built VTWM with regular expressions ("RE"s) support, and either you don't have regex support, or it's not POSIX 1003.2 compliant. Read the comments in Imakefile and/or Makefile.QNX. - If, during the build, you get complaints of an undefined data type "RPLAY" or functions "rplay" whatall, it's because you've built VTWM with sound support and you don't have the rplay library available. Read the comments in Imakefile and/or Makefile.QNX. - If, during the build, you get complaints of an unknown data type "Pixel", add "EXTRA_DEFINES=-DNEED_PIXEL_T" to the make command. - If you expected HTML or Postscript man pages on build completion, or VTWM doesn't fall back on system resource files on startup, read the comments in Imakefile and/or Makefile.QNX. - VNC users: If you regularly use a remote X desktop, you may want to add "EXTRA_DEFINES=-DORIGINAL_DRAWIT" to the make command. It seems that VTWM's diagonal resize/move lines are more expensive than TWM's horizontal and vertical lines. YMMV. - Windows users: VTWM is known to build and run under Cygwin with DLL version 1.3.2. The Makefile may need a line "vtwm: vtwm.exe" added beneath the "all:: vtwm" line for a successful build. The INSTALL file and the /usr/X11R6/lib/X11/twm directory may have to be "moved out of the way" for a successful installation. RUNTIME HINTS ============= - Prior to version 5.4.7, key and button bindings were dependent on various "shift states". Version 5.4.7 can ignore these; check out the IgnoreModifiers variable. - As of version 5.4.7, all window moves and resizes initiated at the virtual desktop will end there (previous behavior was to leave the pointer at the window). Bind a function like Function "move-or-warp" { f.move f.deltastop f.warp } to a button and the desktop context with something like Button2 = : desktop : f.function "move-or-warp" to approximate previous behavior. - As of version 5.4.7, the raise that normally accompanies moves and resizes occurs at operation end, to preserve window stacking order on cancellation. Set the RaiseOnStart variable for previous behavior. - The SunkFocusHighlightWindow variable was depreciated in version 5.4.7. Set the TitleHighlight argument of the Pixmaps variable to an appropriate built-in pixmap. - If, on startup, things are coming up weird (if at all!), check the resource file for m4 macros, and if found, see that VTWM is version 5.4.6 or later, that it was built with m4 support, that "-m" is in the line that starts VTWM, and that m4 is in $(PATH). - The UseRealScreenBorder variable was depreciated in version 5.4.6. If the RealScreenBorderWidth variable is non-zero, why wouldn't you want to use it? - As of version 5.4.6, random zooms during deiconification won't occur unless the ZoomZoom variable is set. - If you use any of the 3D resources from versions before 5.4.5, you will find that they generate errors on startup. They no longer exist! See the man page or the CHANGELOG file for the new resources (look for the word "Bevel"). - If you use a SqueezeTitle list from versions before 5.4.4, you may want to check the man page to see if the new enterpretation of the resource's list parameters fouls your setup. - See also the man page, and the SOUND and BUGS files in doc/. vtwm-5.4.7/doc/4.4.ANNOUNCE0100664000015300001300000000301010237640615013513 0ustar callumfid This is the announcement of VTWM 5.4.4, an upgrade of the recently released VTWM 5.4. The web page, http://www.visi.com/~hawkeyd/vtwm.html, has been updated, and the archive may be found via a link there, or directly via FTP at ftp://ftp.visi.com in the /users/hawkeyd/X directory, and ftp://ftp.x.org in the /contrib/window_managers directory (if and when they move it there from the /incoming directory). The major changes, in a nutshell: - Squashed two big bugs, involving pan distances and monochrome GCs, that would crash VTWM. Many other nuisances exterminated, too. - The border drawing code [finally] renders the top segment of the border when using 3D squeezed titles, and now correctly renders small windows. - Enabled a resource to go easy on colormap allocations. - Added a resource for highlighting icon manager entries, independant of the border highlighting resource. - Simplified parameter enterpretation for SqueezeTitle list entries. - The startup sequence now searches for user and system .vtwmrc files, then user and system .twmrc files, in this order. - Color image (XPM) support for icons. - An up-to-date man page, and support for HTML and Postscript conversions. - Many additions and fixes to improve portability and operability. For those that may not know, VTWM 5.4 is an update of the venerable window manager that features a fully configurable 3D interface, as well as many other bells, whistles, and, of course, bug fixes. D. J. Hawkey Jr. (hawkeyd@visi.com) January 27, 1998 vtwm-5.4.7/doc/vtwm.man0100664000015300001300000035615610237656307013603 0ustar callumfid.\" twm .\" .de EX \"Begin example .\" .ne 5 .\" .if n .sp 1 .\" .if t .sp .5 .\" .nf .\" .in +.5i .\" .. .\" .de EE .\" .fi .\" .in -.5i .\" .if n .sp 1 .\" .if t .sp .5 .\" .. .\" .ta .3i .6i .9i 1.2i 1.5i 1.8i .TH VTWM 1 "Release 5.4.7" "X11R4-6" .\"********************************************************************* .\" Important note: At the time 5.4.4 was released, this manual page .\" conformed to Sun's guidelines for manual page markup, passed .\" checknr, had been spell checked and doubled-word checked, and was .\" automatically translatable to HTML with man2html. Please be careful .\" in subsequent edits to preserve these important invariants! .\"********************************************************************* .\"===================================================================== .SH NAME .PP vtwm - Virtual Tab Window Manager for the X Window System .PP .\"===================================================================== .SH SYNTAX .PP \&\fBvtwm\fP [\fB-d\fP \fIdisplay\fP] [\fB-f\fP [\fIinitfile\fP]] [\fB-m\fP [\fIoptions\fP]] [\fB-p\fP] [\fB-s\fP] [\fB-v\fP] .PP .\"===================================================================== .SH DESCRIPTION .PP \&\fBvtwm\fP is a window manager for the X Window System. It provides titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven keyboard focus, and user-specified key and pointer button bindings. .PP This program is usually started by the user's session manager or startup script. When used from \fBxdm\fP(1) or \fBxinit\fP(1) without a session manager, \fBvtwm\fP is frequently executed in the foreground as the last client. When run this way, exiting \fBvtwm\fP causes the session to be terminated (i.e., logged out). .PP By default, application windows are surrounded by a border with a titlebar at the top. The titlebar contains the window's name, a rectangular area that indicates when the window is receiving keyboard input, and three function boxes known as "titlebar buttons". Pressing pointer Button1 (usually the left-most button unless it has been changed with \fBxmodmap\fP(1)) on any of these titlebar features will invoke the function associated with them. .PP With the default interface, windows are iconified by clicking (pressing and then immediately releasing) the titlebar button that looks like a dot. Conversely, windows are deiconified by clicking in the associated icon or entry in the icon manager (see the descriptions of the variable \&\fBShowIconManager\fP and the function \fBf.showiconmgr\fP in the .B BINDINGS section). .PP Windows are resized by pressing the titlebar button that resembles a group of nested squares, dragging the pointer over the edge that is to be moved, and releasing the pointer when the window is the desired size. Similarly, windows are moved by pressing in the title or highlight area, dragging it to the new location, and then releasing when the window is in the desired position. Just clicking in the title or highlight area raises the window without moving it. .PP Pressing the titlebar button with the down arrow in it brings up a menu with many other functions that may be applied to the window. .PP When new windows are created, \fBvtwm\fP will honor any size and location information requested by the user (usually through \fB\-geometry\fP command line argument or X11 resources for the individual applications). With the default configuration, Clicking pointer Button1 will position the window at the current position and give it the default size. Pressing pointer Button2 (usually the middle pointer button) and dragging the window will give the window its current position but allow the sides to be resized as described above. Clicking pointer Button3 (usually the right pointer button) will give the window its current position but attempt to make it long enough to touch the bottom of the screen. .PP The default behavior during these operations is to represent the window with an outline of the client window and its titlebar, lines crossing within the client window. Alternatively, \fBvtwm\fP may be configured to draw the window completely, but it is not recommended unless yours is a fast system. .\"===================================================================== .SH THE VIRTUAL DESKTOP \&\fBvtwm\fP is based upon the \fBtwm\fP(1) window manager, but adds extra functionality in the form of a virtual desktop. The virtual desktop is an area larger than the physical screen. The real screen is considered to be a window onto portions of the virtual desktop showing whatever windows are present in that area of the desktop. To help navigate around the desktop, \&\fBvtwm\fP creates a new window, of the name \fIVTWM Desktop\fP, which shows the entire desktop using a small scale. In the Virtual Desktop window, all windows that exist are displayed and various options are provided to recognize the identity of the different windows (see the descriptions of the variables \&\fBDesktopDisplayBackground\fP, \&\fBDesktopDisplayForeground\fP, \fBDesktopDisplayBorder\fP and \&\fBVirtualDesktopFont\fP). .PP To provide a consistent workspace, the option is provided of \fInail\fPing windows onto the real screen. When a window is nailed, it is considered stuck to the real screen no matter what part of the desktop is currently being displayed. .PP Normally, a few standard utilities are nailed down: the icon manager, the desktop view, a load average chart, a clock, and a mail notifier. The \fBf.nail\fP (or its alias, \fBf.stick\fP) function can be used to change the nailed status of any window; see the .B BINDINGS section for details. .PP The root window of the display is unchanged by this program and utilities such as \fBxsetroot\fP(1) will continue to work unmodified. .\"===================================================================== .SH OPTIONS \&\fBvtwm\fP accepts the following command line options: .PP .TP 15 .B \-d \fIdisplay\fP This option specifies the X server to use. .TP 15 .B \-f \fP[\fIinitfile\fP] This option specifies the name of the startup file to use. By default, \&\fBvtwm\fP will look in the user's home directory for files named \&\fI.vtwmrc.N\fP, \fI.vtwmrc\fP, \fI.twmrc.N\fP, or \fI.twmrc\fP (where \&'\fIN\fP' is a screen number). It also looks for system-wide default files; see the .B CUSTOMIZATION section below for details. If \fIinitfile\fP is not provided, this specifies that \fBvtwm\fP should disregard any startup files it finds, and use only the defaults that are compiled in (intended for testing compiled-in defaults). .TP 15 .B \-m \fP[\fIoptions\fP] This option causes \fBvtwm\fP to preprocess the startup file using the \&\fBm4\fP(1) macro processor. The \fIoptions\fP will be passed verbatim to \&\fBm4\fP along with those symbols that \fBvtwm\fP declares. Note that \&\fIoptions\fP itself should be quoted, to prevent unwanted processing that may occur by the shell, etc. .TP 15 .B \-p This option indicates that \fBvtwm\fP should attempt to write it's PID to \&\fI$HOME/vtwm.pid\fP on startup, and delete that file on shutdown. This file may be useful as a lock file, or for determining the correct \&\fBvtwm\fP process for a particular user. If the file cannot be written on startup, a bell will sound, but \fBvtwm\fP will continue. .TP 15 .B \-s This option indicates that only the default screen (as specified by the \&\fB\-d\fP option or by the \fBDISPLAY\fP environment variable) should be managed. By default, \fBvtwm\fP will attempt to manage all screens on the display. .TP 15 .B \-v This option indicates that \fBvtwm\fP should print messages to the stderr device when an unexpected event occurs. This can be be useful for debugging applications, but may be distracting in regular use. .\"===================================================================== .SH CUSTOMIZATION .PP Much of \fBvtwm\fP's appearance and behavior can be controlled by providing a startup file in one of the following locations (searched in order for each screen being managed when \fBvtwm\fP begins): .TP 8 .I "$HOME/.vtwmrc.\fIscreennumber\fP" The \fIscreennumber\fP is a small positive number (e.g., 0, 1, etc.) representing the screen number (e.g., the last number in the DISPLAY environment variable \fIhost:displaynum.screennum\fP) that would be used to contact that screen of the display. This is intended for displays with multiple screens of differing visual types. .TP 8 .I "$HOME/.vtwmrc" This is the usual name for an individual user's startup file. .TP 8 .I "$VTWMDIR/twm/system.vtwmrc" If neither of the preceding files are found, \fBvtwm\fP will look in this file for a default configuration. Note that the variable is defined \fIonly in the Makefile\fP, and is often set and tailored by the site administrator to provide convenient menus or familiar bindings for novice users. .TP .I "$HOME/.twmrc.\fIscreennumber\fP" .TP .I "$HOME/.twmrc" .TP .I "$VTWMDIR/twm/system.twmrc" When none of the .I .vtwmrc files can be found, .B vtwm reverts to acting like .BR twm (1), and searches for these three .I .twmrc variants. Note that the variable is defined \fIonly in the Makefile\fP. .PP This search algorithm allows both .BR twm (1) and .B vtwm to coexist peacefully at an installation. Since .B vtwm is a superset of .BR twm (1), it can even used to replace the latter, and users who have only a .IR .twmrc -style file should not notice much difference. .PP If no startup files are found, or if \fBvtwm\fP is told to ignore them, \&\fBvtwm\fP will use built-in defaults as described in the .B DESCRIPTION section above, though the \fIsystem.vtwmrc\fP file, if re-configured before the build, may intervene. The only X11 resource used by \fBvtwm\fP is \&\fIbitmapFilePath\fP for a colon-separated list of directories to search when looking for bitmap and pixmap files (for more information, see the \&\fIAthena Widgets\fP manual and \fBxrdb\fP(1)). .PP \&\fBvtwm\fP startup files are logically broken up into three types of specifications: \fIVariables\fP, \fIBindings\fP, \fIMenus\fP. .PP The \&\fIVariables\fP section must come first and is used to describe the fonts, colors, cursors, border widths, icon and window placement, highlighting, autoraising, layout of titles, warping, and use of the icon manager. .PP The \fIBindings\fP section usually comes second and is used to specify the functions that should be to be invoked when keyboard and pointer buttons are pressed in windows, icons, titles, and frames. .PP The \fIMenus\fP section gives any user-defined menus (containing functions to be invoked or commands to be executed). .PP Variable names and keywords are case-insensitive. Strings must be surrounded by double quote characters (e.g., \fI"blue"\fP) and are case-sensitive. A sharp sign ('#') outside of a string causes the remainder of the line in which the character appears to be treated as a comment. .\"===================================================================== .SH M4 PREPROCESSING .PP A powerful feature of \fBvtwm\fP as of version 5.4.6 is that it can use \&\fBm4\fP(1) to pre-process it's startup files. When \fBvtwm\fP is started with \fB\-m\fP, it will open a file for input as described above, but will process that file through \fBm4\fP before parsing it. So, you can use \&\fBm4\fP macros to perform operations at runtime. This makes it very easy to work when you use many different displays, etc. For example, if you want to set the lower right section of the screen to be your \fBIconRegion\fP, you can use \fBm4\fP directives and pre-defined symbols to calculate the region you want: .RS 4 .nf define(IRegion, translit(eval(WIDTH/3)*eval(HEIGHT/2)+eval(WIDTH-WIDTH/3)-0, *, x)) IconRegion "IRegion" SOUTH EAST 75 25 .fi .RE will define the lower half, and right-hand third of the screen. The symbols \&\fIWIDTH\fP and \fIHEIGHT\fP are calculated by \fBvtwm\fP for \fBm4\fP to use. The following symbols are pre-defined by \fBvtwm\fP: .TP 15 .B "SERVERHOST" This variable is set to the name of the machine that is running the X server. .TP 15 .B "CLIENTHOST" The machine that is running the X clients (i.e., "vtwm", "xterm", etc.). .TP 15 .B "HOSTNAME" The canonical hostname running the clients (i.e., a fully-qualified version of \fBCLIENTHOST\fP). .TP 15 .B "USER" The name of the user running the program. Gotten from the environment. .TP 15 .B "HOME" The user's home directory. Gotten from the environment. .TP 15 .B "VERSION" The X major protocol version. As seen by ProtocolVersion(). .TP 15 .B "REVISION" The X minor protocol revision. As seen by ProtocolRevision(). .TP 15 .B "VENDOR" The vendor of your X server (i.e., "MIT X Consortium"). .TP 15 .B "RELEASE" The release number of your X server. For MIT X11R5, this is "5". .TP 15 .B "WIDTH" The width of your display in pixels. .TP 15 .B "HEIGHT" The height of your display in pixels. .TP 15 .B "X_RESOLUTION" The X resolution of your display in pixels per meter. .TP 15 .B "Y_RESOLUTION" The Y resolution of your display in pixels per meter. .TP 15 .B "PLANES" The number of bit planes your display supports in the default root window. .TP 15 .B "BITS_PER_RGB" The number of significant bits in an RGB color. (log base 2 of the number of distinct colors that can be created. This is often different from the number of colors that can be displayed at once.) .TP 15 .B "TWM_TYPE" Tells which \fBtwm\fP derivative is running. It will always be set to "vtwm" in this program. This is useful for protecting parts of your startup file that \fBtwm\fP proper won't understand (like \fBVirtualDesktop\fP) so that it is still usable with other \fBtwm\fP-based programs. .TP 15 .B "CLASS" Your visual class. Will return one of "StaticGray", "GrayScale", "StaticColor", "PseudoColor", "TrueColor", "DirectColor", or, if it cannot determine what you have, "NonStandard". .TP 15 .B "COLOR" This will be either "Yes" or "No". This is just a wrapper around the above definition. Returns "Yes" on "*Color", and "No" on "StaticGray" and "GrayScale". .TP 15 .B "I18N" This will be either "Yes" or "No" depending on whether support for internationalization has been compiled in. .TP 15 .B "XPM" This will be either "Yes" or "No" depending on whether support for pixmap image files has been compiled in. .TP 15 .B "SOUND" This will be either "Yes" or "No" depending on whether support for sound has been compiled in. .TP 15 .B "REGEX" This will be either "Yes" or "No" depending on whether support for regular expressions ("RE"s) has been compiled in. .PP Note that any symbols passed to \fBm4\fP on the command line that conflict with these will not be anticipated or dealt with by \fBvtwm\fP; you will be at the mercy of your particular \fBm4\fP. .PP Note also that if \fBvtwm\fP's preparation for executing \fBm4\fP fails, the startup file will be processed normally, and will choke on the first \fBm4\fP macro encountered. .PP Finally, be aware that \fBm4\fP preprocessing can cause things often found in startup files to break. For example, quotes and backquotes in shell commands will be badly messed up by \fBm4\fP's own internal quoting mechanism. This particular problem can be worked around by placing \fIchangequote(,)\fP at the top of your startup file. .PP Invoking \fBvtwm\fP with both the \fB-m\fP and \fB-v\fP options will print the \fBm4\fP command with all symbols expanded. .\"===================================================================== .SH VARIABLES .PP Many of the aspects of \fBvtwm\fP's user interface are controlled by variables that may be set in the user's startup file. Some of the options are enabled or disabled simply by the presence of a particular keyword. Other options require keywords, numbers, strings, or lists of all of these. .PP Lists are surrounded by braces and are usually separated by whitespace or a newline. For example: .RS 4 .nf \&\fBAutoRaise\fP { "emacs" "VTWM*" "x*clock" "Xmh" "XTerm" } .fi .RE or .RS 4 .nf \&\fBAutoRaise\fP { "emacs" "VTWM*" "x*clock" "Xmh" "XTerm" } .fi .RE .PP When a variable containing a list of strings representing windows is searched (e.g., to determine whether or not to enable autoraise as shown above), a string must be a case-sensitive match to the window's name (given by the WM_NAME window property), or the class name or class class (both given by the WM_CLASS window property). The preceding example would enable autoraise on windows named "emacs", all \fBvtwm\fP-specific windows, any clocks installed whose name starts with an 'x' (\fBasclock\fP will not autoraise), and all \&\fBxmh\fP and \fBxterm\fP windows (which are of class "XTerm" and "Xmh", respectively). See the .B WILDCARDS section for details on what the asterisks ('*') mean. .PP String arguments that are interpreted as filenames (see the \fBPixmaps\fP, \&\fBCursors\fP, and \fBIconDirectory\fP variables below) will prepend the user's directory (specified by the \fIHOME\fP environment variable) if the first character is a tilde ('~'). If, instead, the first character is a colon (':'), the name is assumed to refer to one of the internal bitmaps that are used to create 2D titlebar buttons, the 2D icon manager button, and the 2D menu pull-right icon. Finally, if the first five characters are ":xpm:", the name is assumed to refer to one of the built-in pixmaps that can used to create 3D titlebar buttons, the 3D icon manager button, and the 3D menu pull-right icon. See the .B IMAGE AND AUDIO FORMATS section for further details. .PP The following variables may be specified in the \fBvtwm\fP startup file. Lists of window names are indicated by \fIwin-list\fP, and optional arguments are shown in square brackets. Any default values are based on the distributed \fIsystem.vtwmrc\fP files, and if none is mentioned, the default setting is "off", "disabled", or "none". .PP .IP "\fBAppletRegion\fP \fIgeomstr\fP \fIvgrav hgrav hgrid vgrid\fP { \fIwin-list\fP }" This variable specifies an area on the root window in which the windows listed in \fIwin-list\fP are placed. The \fIgeomstr\fP is a quoted string containing a standard geometry specification for the region size and location. If more than one \fBAppletRegion\fP is specified, windows will be put into succeeding regions that have the window listed when the first is full. The \&\fIvgrav\fP argument should be either \fBNorth\fP or \fBSouth\fP and is used to control whether windows are first filled in from the top or bottom of the region. Similarly, the \fIhgrav\fP argument should be either \fBEast\fP or \&\fBWest\fP and is used to control whether windows should be filled in from the left or right. Windows are laid out in a grid with cells \fIhgrid\fP pixels wide and \fIvgrid\fP pixels high. Note that the smallest dimension of the region must be at least the size of the largest window in it, including frame and titlebar, in the same direction. This variable is intended to simplify management of all those little tool applications like \fBxcb\fP(1), \&\fBxbiff\fP(1), \fBxload\fP(1), etc. that are used regularly. .IP "\fBAutoPan\fP \fIN\fP" 8 This variable allows the screen to automatically pan by \fIN%\fP of a real screen when the pointer approaches the edge of the screen. The pan will be in the direction of the edge approached. The default is \fI100\fP, effectively "paging" across the virtual desktop. .IP "\fBAutoPanBorderWidth\fP \fIpixels\fP" 8 If \fBAutoPan\fP is turned on, when the pointer goes within the specified number of \fIpixels\fP of the real screen's border, the screen is panned. The default value is \fI5\fP. .IP "\fBAutoPanExtraWarp\fP \fIpixels\fP" 8 If \fBAutoPan\fP is turned on and \fBNaturalAutopanBehavior\fP turned off, this variable specifies how far, in pixels, you want the pointer to move away from the inner edge of the autopan border when autopanning. The default value is \fI2\fP pixels. .IP "\fBAutoPanWarpWithRespectToRealScreen\fP \fIN\fP" 8 With this option turned on, the pointer is warped by \fIN%\fP as many pixels on the real screen as the screen is scrolled, or by .RS 12 .nf (\fBAutoPanBorderWidth\fP + \fBAutoPanExtraWarp\fP) .fi .RE .RS pixels, whichever is greater. See \fBNaturalAutopanBehavior\fP for a more thorough discussion of this and some recommended settings. .RE .IP "\fBAutoRaise\fP [{ \fIwin-list\fP }]" 8 This variable specifies a list of windows (all windows if \fIwin-list\fP is omitted) to be automatically raised whenever the pointer has come to rest in a window for the amount of time specified by the \fBRaiseDelay\fP variable. This action can be interactively enabled or disabled on individual windows using the function \fBf.autoraise\fP. .IP "\fBAutoRaiseDelay\fP \fImilliseconds\fP" 8 A synonym for \fBRaiseDelay\fP. .IP "\fBAutoRelativeResize\fP" 8 This variable indicates that dragging out a window size (either when initially sizing the window with pointer Button2 or when resizing it) should not wait until the pointer has crossed the window edges. Instead, moving the pointer automatically causes the nearest edge or edges to move by the same amount. This allows the resizing windows that extend off the edge of the screen. If the pointer is in the center of the window, or if the resize is begun by pressing a titlebar button, \fBvtwm\fP will still wait for the pointer to cross a window edge (to prevent accidents). This option is particularly useful for people who like the press-drag-release method of sweeping out window sizes. .IP "\fBBeNiceToColormap\fP" 8 This variable specifies that stippled lines be used for the bevel colors when any of the 3D variables are set, to conserve on colormap allocations. .IP "\fBBorderBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking window borders, and specifies the width in pixels of the bevel. The color of the 3D border is \fBBorderTileBackground\fP, and if \fBNoHighlight\fP is not selected, the border of the Focus window is \&\fBBorderColor\fP. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI2\fP when \fBvtwm\fP is built with 3D features. .IP "\fBBorderColor\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8 This variable specifies the default color of the border to be placed around all non-iconified windows, and may only be given within a \fBColor\fP or \&\fBMonochrome\fP list. The optional \fIwincolorlist\fP specifies a list of window and color name pairs for specifying particular border colors for different types of windows. For example: .RS 12 .nf \&\fBBorderColor\fP "gray50" { "XTerm" "red" "xmh" "green" } .fi .RE .IP The default is \fI"gray70"\fP. .IP "\fBBorderTileBackground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8 This variable specifies the default background color in the gray pattern used in unhighlighted borders (only if \fBNoHighlight\fP hasn't been set), and may only be given within a \fBColor\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP allows per-window colors to be specified. The default is \fI"gray60"\fP. .IP "\fBBorderTileForeground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8 This variable specifies the default foreground color in the gray pattern used in unhighlighted borders (only if \fBNoHighlight\fP hasn't been set), and may only be given within a \&\fBColor\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP allows per-window colors to be specified. The default is \fI"gray60"\fP. .IP "\fBBorderWidth\fP \fIpixels\fP" 8 This variable specifies the width in pixels of the border surrounding all client window frames if \fBClientBorderWidth\fP has not been specified. This value is also used to set the border size of windows created by \fBvtwm\fP (such as the icon manager). The default is \fI2\fP if \fBvtwm\fP is built with 2D features, or \fI6\fP when \fBvtwm\fP is built with 3D features. .IP "\fBButtonBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking window buttons. It specifies the width in pixels of the bevel. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI1\fP when \fBvtwm\fP is built with 3D features. .IP "\fBButtonIndent\fP \fIpixels\fP" 8 This variable specifies the size of titlebar buttons, expressed as a difference from the titlebar font height, and normally means that titlebar buttons will shrink (built-in images) or be cropped (external images) accordingly. A negative value is accepted, however, indicating that titlebar buttons should be larger than the titlebar font. Setting this to a negated \fBFramePadding\fP value, with \fBTitleButtonBorderWidth\fP set to 0, makes titlebar buttons as tall and wide as possible. The default is \fI0\fP if \fBvtwm\fP is built with with 2D features, or \fI-2\fP when \fBvtwm\fP is built with 3D features. .IP "\fBButtonColorIsFrame\fP" This variable specifies that the titlebar buttons will be the same color as the window frame. It is set by default if \fBvtwm\fP is built with 3D features. .IP "\fBClearBevelContrast\fP \fIcontrast\fP" 8 Indicates to \fBvtwm\fP how to calculate the clear bevel color for 3D items. The value is a compressed to the range 0 and 100. The formula used is: .RS 12 .nf clear.{RGB} = (65535 - color.{RGB}) * (contrast / 100) .fi .RE .IP The default is \fI40\fP if \fBvtwm\fP is built with 3D features. .IP "\fBClientBorderWidth\fP" 8 This variable indicates that width of a window's frame should be set to the border width as specified by the client, rather than to the value of \&\fBBorderWidth\fP. If \fBBorderBevelWidth\fP is non-zero, however, this variable is ignored. .IP "\fBColor\fP { \fIcolors-list\fP }" 8 This variable specifies a list of color assignments to be made if the default display is capable of displaying more than simple black and white. The \&\fIcolors-list\fP is made up of the following color variables and their values: \&\fBDefaultBackground\fP, \&\fBDefaultForeground\fP, \&\fBMenuBackground\fP, \&\fBMenuForeground\fP, \&\fBMenuTitleBackground\fP, \&\fBMenuTitleForeground\fP, and \&\fBMenuShadowColor\fP. The following color variables may also be given a list of window and color name pairs to allow per-window colors to be specified (see \fBBorderColor\fP for details): \&\fBBorderColor\fP, \&\fBDesktopDisplayForeground\fP, \&\fBDesktopDisplayBackground\fP, \&\fBRealScreenForeground\fP, \&\fBRealScreenBackground\fP, \&\fBVirtualForeground\fP, \&\fBVirtualBackground\fP, \&\fBDekstopDisplayBorder\fP, \&\fBIconManagerHighlight\fP, \&\fBBorderTitleBackground\fP, \&\fBBorderTitleForeground\fP, \&\fBTitleBackground\fP, \&\fBTitleForeground\fP, \&\fBIconBackground\fP, \&\fBIconForeground\fP, \&\fBIconBorderColor\fP, \&\fBIconManagerBackground\fP, and \&\fBIconManagerForeground\fP. For example: .RS 12 .nf \&\fBColor\fP { \fBMenuBackground\fP "gray50" \fBMenuForeground\fP "blue" \fBBorderColor\fP "red" { "XTerm" "yellow" } \fBTitleForeground\fP "yellow" \fBTitleBackground\fP "blue" } .fi .RE .IP All of these color variables may also be specified for the \fBMonochrome\fP variable, allowing the same initialization file to be used on both color and monochrome displays. .IP "\fBConstrainedMoveTime\fP \fImilliseconds\fP" 8 This variable specifies the length of time between button clicks needed to begin a constrained move operation. Double clicking within this amount of time when invoking \fBf.move\fP will cause the window only to be moved in a horizontal or vertical direction. Setting this value to 0 will disable constrained moves. The default is \fI400\fP milliseconds. .IP "\fBCursors\fP { \fIcursor-list\fP }" 8 This variable specifies the glyphs that \fBvtwm\fP should use for various pointer cursors. Each cursor may be defined either from the \fBcursor\fP font or from two bitmap files. Shapes from the \fBcursor\fP font may be specified directly as: .RS 12 .nf \&\fIcursorname\fP "\fIstring\fP" .fi .RE .RS where \fIcursorname\fP is one of the cursor names listed below, and \&\fIstring\fP is the name of a glyph as found in the file /usr/include/X11/cursorfont.h (without the "XC_" prefix). If the cursor is to be defined from bitmap files, the following syntax is used instead: .RE .RS 12 .nf \&\fIcursorname\fP "\fIimage\fP" "\fImask\fP" .fi .RE .RS where \fIimage\fP and \fImask\fP specify the names of files containing the glyph image and mask in \fIbitmap\fP(1) form. The bitmap files are located in the same manner as icon bitmap files. The following example shows the default cursor definitions: .RE .RS 12 .nf \&\fBCursors\fP { Frame "top_left_arrow" Title "top_left_arrow" Icon "top_left_arrow" IconMgr "top_left_arrow" Move "fleur" Resize "fleur" Menu "sb_left_arrow" Button "hand2" Wait "watch" Select "dot" Destroy "pirate" Door "exchange" Virtual "rtl_logo" Desktop "dotbox" } .fi .RE .IP "\fBDarkBevelContrast\fP \fIcontrast\fP" 8 Indicates to \fBvtwm\fP has to calculate the dark bevel color for 3D items. The value is a comprised between 0 and 100. The formula used is: .RS 12 .nf dark.{RGB} = color.{RGB} * ((100 - contrast) / 100) .fi .RE .IP The default is \fI40\fP if \fBvtwm\fP is built with 3D features. .IP "\fBDecorateTransients\fP" 8 This variable indicates that transient windows (those containing a WM_TRANSIENT_FOR property) should have titlebars. By default, transients are not reparented. .IP "\fBDefaultBackground\fP \fIstring\fP" 8 This variable specifies the background color to be used for sizing and information windows. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBDefaultForeground\fP \fIstring\fP" 8 This variable specifies the foreground color to be used for sizing and information windows. The default is \fI"gray85"\fP. .IP "\fBDeiconifyToScreen\fP" 8 When deiconifying a window, by default, the window will be placed at its previous geometry in the virtual desktop. With this variable set, .B vtwm ensures that the window will be placed somewhere on the real screen. .IP "\fBDesktopDisplayBackground\fP \fIcolor\fP [{ \fIwin-list\fP }]" 8 This variable sets the backgrounds of the little windows inside the Virtual Desktop window, AND it sets the backgrounds of menu entries in the \fBVTWM Windows\fP menu -- unless you specify \fBOldFashionedVtwmWindowsMenu\fP. The default \fIcolor\fP is used for the default background of windows not named in the list. The optional \&\fIwin-list\fP is a list of window names and colors, for example: .RS 12 .nf \&\fBDesktopDisplayBackground\fP "purple" { "zwgc" "green" } .fi .RE .IP The default is \fI"gray60"\fP. .IP "\fBDesktopDisplayBorder\fP \fIcolor\fP [{ \fIwin-list\fP }]" 8 This variable sets the border color in the virtual desktop representation window to \fIcolor\fP. The \fIwin-list\fP is in the same format as \fBTitleForeground\fP and other similar variables. .RS 12 .nf \&\fBDesktopDisplayBorder\fP "black" { "zwgc" "green" } .fi .RE .IP The default is \fI"black"\fP. .IP "\fBDesktopDisplayForeground\fP \fIcolor\fP [{ \fIwin-list\fP }]" 8 If both this and the \fBVirtualDesktopFont\fP variable are set, then the names of the windows will be written in the window representations shown in the desktop. This entry also sets foreground colors for entries in the \&\fBVTWM Windows\fP menu. The format of this variable is the same as that used for \fBDesktopDisplayBackground\fP. The default is \fI"gray85"\fP. .IP "\fBDontDeiconifyTransients\fP" 8 This variable sees that iconified transient windows of an iconified parent window aren't deiconified when that parent is, thus preserving their state. Default behavior is to deiconify all transient subwindows of the ancestor window when it is deiconified. .IP "\fBDontIconifyByUnmapping\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows that should not be iconified by simply unmapping the window (as would be the case if \fBIconifyByUnmapping\fP had been set). This is frequently used to force some windows to be treated as icons while other windows are handled by the icon manager. .IP "\fBDontInterpolateTitles\fP" 8 This variable specifies a modification to the \fBInterpolateMenuColors\fP behavior. It will cause \fBvtwm\fP to not apply color interpolation to any titles in the middle of the menu. So, \fBf.title\fP strings that appear in the middle of the menu (ie, without a specific color defined for them) will inherit the default MenuTitle foreground and background colors. .IP "\fBDontMoveOff\fP" 8 This variable indicates that windows should not be allowed to be moved off the screen. It can be overridden by the \fBf.forcemove\fP function. .IP "\fBDontShowInDisplay\fP { \fIlist\fP }" 8 This variable specifies a list of clients that should not appear in the desktop display. The default is: .RS 12 .nf \&\fBDontShowInDisplay\fP { "VTWM *" "xclock" "xload" } .fi .RE .IP "\fBDontShowInTwmWindows\fP { \fIlist\fP }" 8 .IP "\fBDontShowInVtwmWindows\fP { \fIlist\fP }" 8 These variables specify a list of clients that should not appear in the \fBVTWM Windows\fP menu. .IP "\fBDontSqueezeTitle\fP [{ \fIwin-list\fP }] " 8 This variable indicates that titlebars should not be squeezed to their minimum size as described under \fBSqueezeTitle\fP below. If the optional window list is supplied, only those windows will be prevented from being squeezed. .IP "\fBDoorBackground\fP \fIcolor\fP [{ \fIdoor-list\fP }]" 8 Specifies background colors of doors. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBDoorBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking doors, and specifies the width in pixels of the bevel. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI1\fP when \fBvtwm\fP is built with 3D features. .IP "\fBDoorFont\fP \fIstring\fP" This variable specifies the font to be used for text in doors. This must be set in order to see the doors. The default is \fI"-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"\fP. .IP "\fBDoorForeground\fP \fIcolor\fP [{ \fIdoor-list\fP }]" 8 Specifies foreground colors of doors. The default is \fI"gray85"\fP. .IP "\fBDoors\fP { \fIdoor-list\fP }" 8 This variable is used to create doors, which are teleports. Each item in the door-list has the following format: .RS 12 .nf "\fIwinname\fP" "\fIlocation\fP" "\fIjumpTo\fP" .fi .RE .IP Windows with the name \fIwinname\fP appear with geometry and position as defined in \fIlocation\fP, and warp the user to \fIjumpTo\fP when \&\fBf.enterdoor\fP is executed inside them. Doors have a class of "VTWM Door". .IP "\fBEnhancedExecResources\fP" 8 By default, \fBf.exec\fP variables behaved as they always did in \fBvtwm\fP. You would have to append " &" to all of your variables in order to execute them without blocking the window manager. With this option turned on, you don't have to; \fBvtwm\fP will automatically append " &" to the \fBf.exec\fP variable .I unless the last non-space character is either '&' or (in case you still want a command to block the window manager) ';'. For example, in a variable such as: .RS 12 .nf f.exec "foo; bar; baz" .fi .RE .RS the window manager will be blocked so that "foo" and "bar" can be executed; "baz" is the only command which will NOT block the window manager. If you want all these commands to be backgrounded, try the following: .RE .RS 12 .nf f.exec "{ foo; bar; baz }" # note that "{" and "}" # are shell keywords; they # MUST be separated by # spaces. .fi .RE .IP If you still want a command to block the window manager, you would use: .RS 12 .nf f.exec "xset fp rehash;" # vtwm will not append " &" # because ';' is the last # non-space character. .fi .RE .IP This behavior was inspired by that of \fBvuewm\fP(1), Hewlett-Packard's workspace implementation of \fBmwm\fP(1). .IP "\fBFixManagedVirtualGeometries\fP" 8 .IP "\fBFixTransientVirtualGeometries\fP" 8 These are bug workarounds that *should* fix the way most windows' virtual geometries are handled, i.e., they should be on the real screen if the parent windows are on the real screen, no matter where the virtual desktop is (\fBxv\fP(1) is one example of how these \fIdon't\fP work). They are both set by default. .IP "\fBForceIcons\fP" 8 This variable indicates that icon image files specified in the \fBIcons\fP variable should override any client-supplied images. .IP "\fBFramePadding\fP \fIpixels\fP" 8 This variable specifies the distance between the titlebar font or the titlebar button height, whichever is greater, and the window frame, enlarging the titlebar as required. See also \fBButtonIndent\fP, for how it influences the titlebar. The default is \fI2\fP pixels. .IP "\fBIconBackground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the background color of icons, and may only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBIconBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking icons, and specifies the width in pixels of the bevel. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI2\fP when \fBvtwm\fP is built with 3D features. .IP "\fBIconBorderColor\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the color of the border used for icon windows, and may only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is \fI"gray85"\fP. .IP "\fBIconBorderWidth\fP \fIpixels\fP" 8 This variable specifies the width in pixels of the border surrounding icon windows. The default is \fI2\fP if \fBvtwm\fP is built with 2D features, or \fI0\fP when \fBvtwm\fP is built with 3D features. .IP "\fBIconDirectory\fP \fIstring\fP" 8 This variable specifies the directory that should be searched if an image file cannot be found in any of the directories in the \fBbitmapFilePath\fP variable. .IP "\fBIconFont\fP \fIstring\fP" 8 This variable specifies the font to be used to display icon names within icons. The default is \fI"-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"\fP. .IP "\fBIconForeground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the foreground color to be used when displaying icons, and may only be specified inside of a \&\fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is \fI"gray85"\fP. .IP "\fBIconifyByUnmapping\fP [{ \fIwin-list\fP }]" 8 This variable indicates that windows should be iconified by being unmapped without trying to map any icons. If the optional \fIwin-list\fP is provided, only those windows will be iconified by simply unmapping. Windows that have both this and the \fBIconManagerDontShow\fP options set may not be accessible unless the user has provided bindings to the warp functions (\fBf.warp\fP and the like) while \fBWarpUnmapped\fP is set, or by the \fBVTWM Windows\fP menu. It is set by default. .IP "\fBIconManagerBackground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the background color to use for icon manager entries, and may only be specified inside of a \&\fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBIconManagerBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking icon manager entries, and specifies the width in pixels of their bevels. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI1\fP when \fBvtwm\fP is built with 3D features. .IP "\fBIconManagerDontShow\fP [{ \fIwin-list\fP }]" 8 This variable indicates that the icon manager should not display any windows. If the optional \fIwin-list\fP is given, only those windows will not be displayed. This variable is used to prevent windows that are rarely iconified (such as \fIxclock\fP or \fIxload\fP) from taking up space in the icon manager. The default is: .RS 12 .nf \&\fBIconManagerDontShow\fP { "VTWM *" "xclock" "xload" } .fi .RE .IP "\fBIconManagerFont\fP \fIstring\fP" 8 This variable specifies the font to be used when displaying icon manager entries. The default is \fI"-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"\fP. .IP "\fBIconManagerForeground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the foreground color to be used when displaying icon manager entries, and may only be specified inside of a \&\fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is \fI"gray85"\fP. .IP "\fBIconManagerGeometry\fP \fIstring\fP [ \fIcolumns\fP ]" 8 This variable indicates that a default icon manager is to be created, with the geometry specified with \fIstring\fP. The \fIstring\fP argument should be a standard X geometry specification, specifying the initial size and/or location. The icon manager window is then broken into \fIcolumns\fP pieces and scaled according to the number of entries in the icon manager. Extra entries are wrapped to form additional rows. The default \fIstring\fP is \fI"+0+0"\fP, and the default \fIcolumns\fP is \fI1\fP. .IP "\fBIconManagerHighlight\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the border color to be used when highlighting the icon manager entry that currently has the focus, and can only be specified inside of a \&\fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is \fI"black"\fP. .IP "\fBIconManagers\fP { \fIiconmgr-list\fP }" 8 This variable specifies a list of icon managers to create, in addition to the default icon manager if \fBIconManagerGeometry\fP is used. Each item in the \fIiconmgr-list\fP has the following format: .RS 12 .nf "\fIwinname\fP" ["\fIiconname\fP"] "\fIgeometry\fP" \fIcolumns\fP .fi .RE .RS where \fIwinname\fP is the name of the windows that should be put into this icon manager, \fIiconname\fP is the name of that icon manager window's icon, \&\fIgeometry\fP is a standard geometry specification, and \fIcolumns\fP is the number of columns in this icon manager as described in \&\fBIconManagerGeometry\fP. For example: .RE .RS 12 .nf \&\fBIconManagers\fP { "XTerm" "300x5+800+5" 5 "myhost" "400x5+100+5" 2 } .fi .RE .IP Clients whose name or class is "XTerm" will have an entry created in the "XTerm" icon manager. Clients whose name was "myhost" would be put into the "myhost" icon manager. .IP "\fBIconManagerShow\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows that should appear in the icon manager. When used in conjunction with the \fBIconManagerDontShow\fP variable, only the windows in this list will be shown in the icon manager. By default, all windows are shown except those in \fBIconManagerDontShow\fP. .IP "\fBIconRegion\fP \fIgeomstr\fP \fIvgrav hgrav hgrid vgrid\fP" This variable specifies an area on the root window in which icons are placed if no specific icon location is provided by the client. The \fIgeomstr\fP is a quoted string containing a standard geometry specification for the region size and location. If more than one \fBIconRegion\fP line is given, icons will be put into the succeeding regions when the first is full. The \&\fIvgrav\fP argument should be either \fBNorth\fP or \fBSouth\fP and is used to control whether icons are first filled in from the top or bottom of the region. Similarly, the \fIhgrav\fP argument should be either \fBEast\fP or \&\fBWest\fP and is used to control whether icons should be filled in from the left or right. Icons are laid out in a grid with cells \fIhgrid\fP pixels wide and \fIvgrid\fP pixels high. Note that the smallest dimension of the region must be at least the size of the largest icon in it in the same direction. Note also that many applications change their icon name as they run, and no provision is made to reformat the icon regions if any icon changes size accordingly. .IP "\fBIcons\fP { \fIwin-list\fP }" 8 This variable specifies a list of window names and the image filenames that should be used as their icons. For example: .RS 12 .nf \&\fBIcons\fP { "XTerm" "xterm.icon" "xfd" "xfd_icon" } .fi .RE .IP Windows that match "XTerm" and would not be iconified by unmapping, and would try to use the icon image in the file "xterm.icon". If \fBForceIcons\fP is specified, this image will be used even if the client has requested its own icon image. .IP "\fBIgnoreModifiers\fP \fImodlist\fP" 8 This variable specifies the "shift states" to ignore when determining if an event is bound by \fBvtwm\fP. In this example: .RS 12 .nf \&\fBIgnoreModifiers\fP l | m2 .fi .RE .RS the CapsLock and NumLock states will be ignored. Note that the use of this variable can generate quite a bit of X protocol network traffic; \&\fImodlist\fP should be kept as small as possible. See also the .B BINDINGS section. .RE .IP "\fBInfoBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking identify, move and resize windows, and specifies the width in pixels of the bevel. The default is \fI0\fP if \&\fBvtwm\fP is built with 2D features, or \fI2\fP when \fBvtwm\fP is built with 3D features. .IP "\fBInfoFont\fP \fIstring\fP" 8 This variable specifies the font to be used for in the identify window. The default is \fI"-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"\fP. .IP "\fBInterpolateMenuColors\fP" 8 This variable indicates that menu entry colors should be interpolated between entry specified colors. In this example: .RS 12 .nf \&\fBMenu\fP "mymenu" { "Title" ("black":"red") f.title "entry1" f.nop "entry2" f.nop "entry3" ("white":"green") f.nop "entry4" f.nop "entry5" ("red":"white") f.nop } .fi .RE .RS the foreground colors for "entry1" and "entry2" will be interpolated between black and white, and the background colors between red and green. Similarly, the foreground for "entry4" will be half-way between white and red, and the background will be half-way between green and white. .RE .IP "\fBLessRandomZoomZoom\fP" 8 With this option turned on, this makes random zooms a bit less "random" and a bit more visible. This might make a better visual bell, depending on your personal taste. .IP "\fBMakeTitle\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows on which a titlebar should be placed and is used to request titles on specific windows when \fBNoTitle\fP has been set. .IP "\fBMaxWindowSize\fP \fIstring\fP" 8 This variable specifies a geometry in which the width and height give the maximum size for a given window. This is typically used to restrict windows to the size of the screen. The default is \fI"30000x30000"\fP. .IP "\fBMenuBackground\fP \fIstring\fP" 8 This variable specifies the background color used for menus, and can only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBMenuBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking menus, and specifies the width in pixels of the bevel. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI2\fP when \fBvtwm\fP is built with 3D features. .IP "\fBMenuFont\fP \fIstring\fP" 8 This variable specifies the font to use when displaying menus. The default is \fI"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"\fP. .IP "\fBMenuForeground\fP \fIstring\fP" 8 This variable specifies the foreground color used for menus, and can only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The default is \&\fI"gray85"\fP. .IP "\fBMenuScrollBorderWidth\fP \fIpixels\fP" 8 When the contents of a menu would make it taller than the display, moving the pointer within \fIpixels\fP of the top or bottom of the menu causes it to scroll the entries. The default value is \fI2\fP. .IP "\fBMenuScrollJump\fP \fIentries\fP" 8 This variable specifies the number of entries to scroll when the pointer is moved within the area defined by \fBMenuScrollBorderWidth\fP. The default is \fI3\fP entries. .IP "\fBMenuShadowColor\fP \fIstring\fP" 8 This variable specifies the color of the shadow behind pull-down menus and can only be specified inside of a \&\fBColor\fP or \fBMonochrome\fP list. The default is \fI"black"\fP. .IP "\fBMenuTitleBackground\fP \fIstring\fP" 8 This variable specifies the background color for \fBf.title\fP entries in menus, and can only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The default is \fI"gray70"\fP. .IP "\fBMenuTitleFont\fP \fIstring\fP" 8 This variable specifies the font to be used in menu titles. The default is \fI"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"\fP. .IP "\fBMenuTitleForeground\fP \fIstring\fP" 8 This variable specifies the foreground color for \fBf.title\fP entries in menus and can only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBMonochrome\fP { \fIcolors\fP }" 8 This variable specifies a list of color assignments that should be made if the screen has a depth of 1. See the description of \fBColors\fP. .IP "\fBMoveDelta\fP \fIpixels\fP" 8 This variable specifies the number of pixels the pointer must move before the \fBf.move\fP and \fBf.resize\fP functions and initial menu highlighting starts working. See also the \fBf.deltastop\fP function. The default is \fI3\fP pixels. .IP "\fBNailedAbove\fP" 8 This variable causes nailed windows to be physically above non-nailed windows. The \fBf.nailedabove\fP function can be used to toggle this setting. .IP "\fBNailedDown\fP { \fIlist\fP }" 8 This variable gives a \fIlist\fP of clients that are nailed initially. The default is: .RS 12 .nf \&\fBNailedDown\fP { "VTWM *" "xclock" "xload" } .fi .RE .IP "\fBNaturalAutopanBehavior\fP" 8 By default, when autopanning, the pointer is warped by only .RS 12 .nf (\fBAutoPanBorderWidth\fP + \fBAutoPanExtraWarp\fP) .fi .RE .RS pixels on the real screen. With this option turned on, the pointer is warped on the real screen by as many pixels as the screen is scrolled, or the above value, whichever is greater. Thus, the pointer does not normally move very much (only by \fBAutoPanExtraWarp\fP) in relation to the virtual desktop. .RE .IP This works really well on faster X terminals and workstations, although for slower ones, you may want to use the following: .RS 12 .nf \&\fBAutoPanWarpWithRespectToRealScreen\fP 50 .fi .RE .RS to achieve a similar effect. Setting \fBNaturalAutopanBehavior\fP has the exact same effect as using the variable .RE .RS 12 .nf \&\fBAutoPanWarpWithRespectToRealScreen\fP 100 .fi .RE .IP "\fBNoBackingStore\fP" 8 This variable indicates that \fBvtwm\fP's windows should not request backing store to minimize repainting. This is typically used with servers that can repaint faster than they can handle backing store. .IP "\fBNoBorder\fP [{ \fIwin-list\fP }] " 8 This variable indicates that windows should not have borders. If the optional \fIwin-list\fP is given, only those windows will not have borders. .IP "\fBNoBorderDecorations\fP" 8 This variable indicates that the 3D borders of titled windows should not have the little divots adorning the corners. .IP "\fBNoCaseSensitive\fP" 8 This variable indicates that case should be ignored when sorting icon names in an icon manager. This option is typically used with applications that capitalize the first letter of their icon name. .IP "\fBNoDefaultMouseOrKeyboardBindings\fP" 8 This variable indicates that \fBvtwm\fP should not supply the default pointer and keyboard bindings. This option should only be used if the startup file contains a completely new set of pointer and keyboard bindings and definitions. See also \fBNoDefaults\fP. .IP "\fBNoDefaults\fP" 8 This variable indicates that \fBvtwm\fP should not supply the default titlebar buttons and bindings. This option should only be used if the startup file contains a completely new set of bindings and definitions. This function has the effect of setting both \fBNoDefaultMouseOrKeyboardBindings\fP and \fBNoDefaultTitleButtons\fP. .IP "\fBNoDefaultTitleButtons\fP" 8 This variable indicates that \fBvtwm\fP should not supply the default titlebar buttons. This option should only be used if the startup file contains a completely new set of titlebar button definitions. See also \&\fBNoDefaults\fP. .IP "\fBNoGrabServer\fP" 8 This variable indicates that \fBvtwm\fP should minimize server grabs when popping up menus and moving or resizing windows. .IP "\fBNoHighlight\fP [{ \fIwin-list\fP }]" 8 This variable indicates that borders should not be highlighted to track the location of the pointer. If the optional \fIwin-list\fP is given, highlighting will only be disabled for those windows. When the border is highlighted, it will be drawn in the current \fBBorderColor\fP. When the border is not highlighted, it will be stippled with an gray pattern using the current \fBBorderTileForeground\fP and \fBBorderTileBackground\fP colors. It is set by default if \fBvtwm\fP is built with 3D features. .IP "\fBNoIconManagerFocus\fP" 8 This variable indicates that \fBvtwm\fP should not set focus to windows corresponding to their entries in an icon manager. Normally, \fBvtwm\fP sets the focus so that events from an icon manager are delivered to the application. Typically, this is set to facilitate icon manager bindings that would otherwise be delivered to the application. .IP "\fBNoIconManagerHighlight\fP" 8 This variable indicates that icon manager entries will not be highlighted to track the location of the pointer. This is independant of the \&\fBNoHighlight\fP variable. .IP "\fBNoIconManagers\fP" 8 This variable indicates that no icon manager should be created. .IP "\fBNoIconifyIconManagers\fP" 8 This variable indicates that no icon manager should be iconified. .IP "\fBNoMenuShadows\fP" 8 This variable indicates that menus should not have drop shadows drawn behind them. This is typically used with slower servers since it speeds up menu drawing at the expense of making the menu slightly harder to read. .IP "\fBNoOpaqueMove\fP [{ \fIwin-list\fP }]" 8 .IP "\fBNoOpaqueResize\fP [{ \fIwin-list\fP }]" 8 These variables indicate that the \fBf.move\fP and \fBf.resize\fP functions should change just a window's outline. If the optional \fIwin-list\fP is given, only those windows will be affected. These are usually used to narrow the scope of "global" \fBOpaqueMove\fP and \fBOpaqueResize\fP variables. .IP "\fBNoPrettyTitles\fP" 8 If you don't mind long titles butting up against the right edge of short titlebars and icon managers. Disables the default behavior of using ellipses to indicate a truncated title. .IP "\fBNoRaiseOnDeiconify\fP" 8 .IP "\fBNoRaiseOnMove\fP" 8 .IP "\fBNoRaiseOnResize\fP" 8 .IP "\fBNoRaiseOnWarp\fP" 8 These variables indicate that windows should not be raised after a deiconify, move, resize, or warp operation, and are typically used to preserve the window stacking order. Note that the pointer may end up in an occluding window when these variables are used. .IP "\fBNoSaveUnders\fP" 8 This variable indicates that menus should not request save-unders to minimize window repainting following menu selection. It is typically used with displays that can repaint faster than they can handle save-unders. .IP "\fBNoStackMode\fP [{ \fIwin-list\fP }]" 8 This variable indicates that client window requests to change stacking order should be ignored. If the optional \fIwin-list\fP is given, only requests on those windows will be ignored. This is typically used to prevent applications from relentlessly popping themselves to the front of the window stack. .IP "\fBNoTitle\fP [{ \fIwin-list\fP }] " 8 This variable indicates that windows should not have titlebars. If the optional \fIwin-list\fP is given, only those windows will not have titlebars. \&\fBMakeTitle\fP may be used with this option to force titlebars to be put on specific windows. The default is: .RS 12 .nf \&\fBNoTitle\fP { "VTWM *" "xclock" "xload" } .fi .RE .IP "\fBNoTitleFocus\fP" 8 This variable indicates that \fBvtwm\fP should not set keyboard input focus to each window as it is entered. Normally, \fBvtwm\fP sets the focus so that focus and key events from the titlebar and icon managers are delivered to the application. If the pointer is moved quickly and \fBvtwm\fP is slow to respond, input can be directed to the old window instead of the new. This option is typically used to prevent this "input lag" and to work around bugs in older applications that have problems with focus events. .IP "\fBNoTitleHighlight\fP [{ \fIwin-list\fP }]" 8 This variable indicates that the highlight area of the titlebar, which is used to indicate the window that currently has the input focus, should not be displayed. If the optional \fIwin-list\fP is given, only those windows will not have highlight areas. This and the \fBSqueezeTitle\fP options can be set to substantially reduce the amount of screen space required by titlebars. .IP "\fBNotVirtualGeometries\fP" 8 This variable indicates that \fBvtwm\fP should assume that user geometries should be relative to the current virtual window, as opposed to absolute. If you set this, then "xterm -geometry +20+20" specifies a position in the current view; otherwise, it would specify a position in the top-left view. It is set by default. .IP "\fBNoWindowRing\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows that will not be added to the list along which the \fBf.warpring\fP function cycles. See also \fBWindowRing\fP. .IP "\fBOldFashionedTwmWindowsMenu\fP" 8 .IP "\fBOldFashionedVtwmWindowsMenu\fP" 8 By default, the \fBVTWM Windows\fP menu will use the same colors that you see in the panner. This variable disables that behavior. .IP "\fBOpaqueMove\fP [{ \fIwin-list\fP }]" 8 .IP "\fBOpaqueResize\fP [{ \fIwin-list\fP }]" 8 These variables indicate that the \fBf.move\fP and \fBf.resize\fP functions should actually change the window instead of just an outline so that the user can immediately see what the window will look like. If the optional \&\fIwin-list\fP is given, only those windows will be affected "opaquely". These options are typically used on fast systems (particularly when \&\fBNoGrabServer\fP is set). .IP "\fBPanDistanceX\fP \fIN\fP" 8 .IP "\fBPanDistanceY\fP \fIN\fP" 8 These variables define a grid of screens for the virtual desktop, expressed as \fIN%\fP of a real screen. When the \fBf.snap\fP function is called, the real screen will be moved to the closest grid location. The (mis)naming of these variables is for historical reasons. The default value is \fI100\fP, effectively setting up "pages" in the virtual desktop. .IP "\fBPanResistance\fP \fImilliseconds\fP" 8 This variable indicates how hard it should be to pan to an adjacent virtual screen. It specifies how long the pointer must be within \fBAutoPanBorderWidth\fP pixels of the real screen's edge. Values equal to \fI0\fP or greater than \&\fI10000\fP disables this feature. The default is \fI750\fP milliseconds. .IP "\fBPauseOnExit\fP \fIN\fP" 8 .IP "\fBPauseOnQuit\fP \fIN\fP" 8 These variables define a delay on exit, expressed in seconds. They allow the \&\fB(vtwm stop)\fP and \fBf.quit\fP sounds time to play before the connection to \fBrplayd\fP(8) is closed. .IP "\fBPixmaps\fP { \fIpixmaps\fP }" 8 This variable specifies a list of images that define the appearance of various windows. Each entry is a keyword indicating the window to set, followed by a string giving the name of the image. Built-in and external images may be freely mixed, given the constraints described in the .B IMAGE AND AUDIO FORMATS section. The following windows may be specified thus: .RS 12 .nf \&\fBPixmaps\fP { TitleHighlight ":xpm:sunkenbox" RealScreenPixmap "scaledbackground.xpm" VirtualBackgroundPixmap "gray1" MenuIconPixmap ":xpm:rarrow" IconManagerPixmap ":xpm:zoom" } .fi .RE .IP By default, the \fBTitleHighlight\fP is an even, stippled pattern if \fBvtwm\fP is built with 2D features, or "sunken" lines when \fBvtwm\fP is built with 3D features. The \fBMenuIconPixmap\fP is a right arrow by default (rendered 3D as appropriate), and the default \fBIconManagerPixmap\fP is either the X logo or a "raised" box, for 2D or 3D features, respectively. .IP "\fBPointerPlacement\fP" 8 This variable indicates that windows with no specified geometry should be placed with the window origin at the location of the mouse pointer or, if \fBWarpSnug\fP is specified, as close as possible to that location such that the window fits onto the real screen. If \fBRandomPlacement\fP is also set then it takes precedence. .IP "\fBPrettyZoom\fP" 8 If \fBZoom\fP is turned on, this makes the associated animation look just a little nicer, depending on your personal taste. This makes the zoom slower, however, so you may have to decrease the value of the \fBZoom\fP variable. .IP "\fBRaiseDelay\fP \fImilliseconds\fP" 8 For windows that are to be automatically raised when the pointer enters (see the \fBAutoRaise\fP variable and the \fBf.autoraise\fP function) this variable specifies the length of time the pointer should rest in the window before it is raised. The default is \fI0\fP milliseconds. .IP "\fBRaiseOnStart\fP" 8 This variable specifies that the raise which would normally occur at the end of a move or resize operation (subject to \fBMoveDelta\fP, \fBNoRaiseOnMove\fP, and \fBNoRaiseOnResize\fP) will occur at the start of the operation. This may be useful when \fBOpaqueMove\fP and/or \fBOpaqueResize\fP are specified. Note that cancelling a move or resize operation with this variable set will not preserve the window stacking order. .IP "\fBRandomPlacement\fP" 8 This variable indicates that windows with no specified geometry should be placed in a pseudo-random location instead of having the user drag an outline (or the window itself if the \fBOpaqueMove\fP variable is set) to the preferred location. .IP "\fBRealScreenBackground\fP \fIstring\fP" 8 See \fBRealScreenForeground\fP. .IP "\fBRealScreenBorderWidth\fP \fIpixels\fP" 8 This value specifies the border width of the \fBRealScreen\fP window (see \fBRealScreenForeground\fP). The default value is \fI0\fP pixels. .IP "\fBRealScreenForeground\fP \fIstring\fP" 8 Inside what \fBvtwm\fP calls the virtual desktop window, but which we might call the "panner", is a little window that shows where the physical screen is located in virtual space. The \fBvtwm\fP source code calls this little window the RealScreen. By default, it has no border, and can be distinguished from the normal backdrop of the panner only by its color or image. Its foreground color has no meaning unless you give it an image. (It can be given a border with \fBRealScreenBorderWidth\fP.) .IP "\fBRealScreenPixmap\fP \fIstring\fP" 8 Names an image file used to decorate the RealScreen window. A sample is provided, \fInestedsqu.xbm\fP, but your mileage may vary as the size of your screen varies! It is easy to find out the size of this window and to create any image file of type \fBbitmap\fP(1) or \fBpixmap\fP(1) for it; that is the recommended procedure. .IP "\fBResizeFont\fP \fIstring\fP" 8 This variable specifies the font to be used for in the dimensions window when resizing windows. The default is \fI"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"\fP. .IP "\fBResizeRegion\fP \fIlocation\fP" 8 This variable specifies the area on the screen to display the resize window. The \fIlocation\fP should be one of \fBNorthWest\fP, \fBNorthEast\fP, \&\fBSouthWest\fP, \fBSouthEast\fP, or \fBCentered\fP. .IP "\fBRestartPreviousState\fP" 8 This variable indicates that \&\fBvtwm\fP should attempt to use the WM_STATE property on client windows to tell which windows should be iconified and which should be left visible. This is typically used to try to regenerate the state that the screen was in before the previous window manager was shutdown. It is set by default. .IP "\fBRightHandSidePulldownMenus\fP" 8 Pull-down menus can appear when the pointer is to the right of the center of their parent menu, or they can appear when the pointer is closer to the right edge of their parent menu. This option enables the latter behavior, and is the default. .IP "\fBSaveColor\fP { \fIcolors-list\fP }" 8 This variable indicates a list of color assignments to be stored as pixel values in the root window property _MIT_PRIORITY_COLORS. Clients may elect to preserve these values when installing their own colormap. Note that use of this mechanism is a way an for application to avoid the "technicolor" problem, whereby useful screen objects such as window borders and titlebars disappear when a programs custom colors are installed by the window manager. For example: .RS 12 .nf \&\fBSaveColor\fP { BorderColor TitleBackground TitleForeground "red" "green" "blue" } .fi .RE .IP This would place on the root window 3 pixel values for borders and titlebars, as well as the three color strings, all taken from the default colormap. .IP "\fBShallowReliefWindowButton\fP" 8 This indicates that the features of built-in 3D titlebar buttons, the 3D icon manager button the 3D menu pull-right icon, and the 3D titlebar highlight area should be rendered with a "flatter" appearance. It is set by default if \&\fBvtwm\fP is built with 3D features. .IP "\fBShowIconManager\fP" 8 This variable indicates that the icon manager window should be displayed when \&\fBvtwm\fP is started. It can always be brought up using the \&\fBf.showiconmgr\fP function. .IP "\fBSnapRealScreen\fP" 8 This variable causes the real screen to snap to a grid defined in \&\fBPanDistanceX\fP and \fBPanDistanceY\fP increments whenever the representation moves. The \fBf.snaprealscreen\fP function can be used to toggle this setting. .IP "\fBSortIconManager\fP" 8 This variable indicates that entries in the icon manager should be sorted alphabetically rather than by simply appending new windows to the end. It is set by default. .IP "\fBSoundHost\fP \fIstring\fP" 8 This variable specifies what machine (by its \fITCP/IP hostname\fP) is running the \fBrplayd\fP(8) daemon. If not specified, the local machine is tried. If \fBrplayd\fP(8) cannot be accessed, sound will be toggled off. .IP "\fBSounds\fP { \fIsound-list\fP }" 8 This variable is a list of identifiers and associated sound files. It contains entries of the form: .RS 12 .nf "\fIidentifier\fP" "\fIsoundfile\fP" [\fIvolume\fP] .fi .RE .RS where \fIidentifier\fP is any function described in the .B BINDINGS section except \fBf.playsound\fP, \fBf.sounds\fP, and \fBf.separator\fP, as well as these event identifiers: \fB(vtwm start)\fP, \fB(vtwm stop)\fP, \&\fB(client map)\fP, \fB(client unmap)\fP, \fB(menu map)\fP, \&\fB(menu unmap)\fP, \fB(info unmap)\fP, \fB(autopan event)\fP, and \fB(bell event)\fP. The \fIsoundfile\fP is the full pathname of the sound file to play for the associated \fIidentifier\fP, and \&\fIvolume\fP sets the volume for which to play that sound (see also \&\fBSoundVolume\fP). Note that the list entries must be quoted: .RE .RS 12 .nf \&\fBSounds\fP { "(vtwm start)" "/usr/share/sounds/wowee.wav" "(vtwm stop)" "/usr/share/sounds/seeya.wav" "f.exec" "/usr/share/sounds/click.au" 50 "(client map)" "/usr/share/sounds/ping.au" 50 "f.delete" "/usr/share/sounds/doh1.wav" "f.deletedoor" "/usr/share/sounds/doh2.wav" "f.destroy" "/usr/share/sounds/doh3.wav" "(client unmap)" "/usr/share/sounds/ping.au" } .fi .RE .IP This example points out that some \fIidentifier\fPs "overlap": .RS 12 .nf f.beep > (bell event) f.exec > (client map) f.delete > (client unmap) f.menu > (menu map) f.deletedoor > (client unmap) f.quit > (vtwm stop) f.destroy > (client unmap) f.version = f.identify .fi .RE .IP In these cases, the function takes precedence over the event when both would otherwise play. .IP "\fBSoundVolume\fP \fIN\fP" 8 This variable sets the overall volume for which to play sounds, expressed as \fIN%\fP of maximum. Default is \fI25\fP (1/4 attenuation). .IP "\fBSqueezeTitle\fP [{ \fIsqueeze-list\fP }] " 8 This variable indicates that \fBvtwm\fP should attempt to use the SHAPE extension to make titlebars occupy only as much screen space as they need, rather than extending all the way across the top of the window. The optional \fIsqueeze-list\fP may be used to control the location of the squeezed titlebar along the top of the window. It contains entries of the form: .RS 12 .nf "\fIname\fP" \fIjustification\fP \fInum\fP \fIdenom\fP .fi .RE .RS where \fIname\fP is a window name, \fIjustification\fP is either \&\fBleft\fP, \&\fBcenter\fP, or \fBright\fP, and \fInum\fP and \&\fIdenom\fP are numbers specifying a ratio for the relative position about which the titlebar is located, measured from left to right. A ratio of 0/0 indicates that the \fIjustification\fP is absolute, A non-zero numerator with a zero denominator indicates a pixel count, and the \fIjustification\fP is ignored entirely for any other ratio. For example: .RE .RS 12 .nf \&\fBSqueezeTitle\fP { "XTerm" left 0 0 "xterm1" left 1 3 "xterm2" right 2 3 "oclock" center 0 0 "emacs" right 0 0 } .fi .RE .IP The \fBDontSqueezeTitle\fP list can be used to turn off squeezing on certain titles. It is set by default. .IP "\fBStartIconified\fP [{ \fIwin-list\fP }] " 8 This variable indicates that client windows should initially be left as icons until explicitly deiconified by the user. If the optional \fIwin-list\fP is given, only those windows will be started iconic. This is useful for programs that do not support an \fI-iconic\fP command line option or resource. .IP "\fBStaticIconPositions\fP" 8 This variable alters icon placement such that they will maintain their positions on the virtual desktop when not nailed and \fBDeiconifyToScreen\fP is not used. This is most applicable when \fBSnapRealScreen\fP and \&\fBAutoPan\fP is used with \fBPanDistanceX\fP and \fBPanDistanceY\fP values to simulate \fBctwm\fP(1) workspaces. .IP "\fBStayUpMenus\fP" 8 This variable alters menu interaction. By default, a menu item is selected when a pointer button is released over it. This variable causes menu items to be selected on the next button press event. .IP "\fBStayUpOptionalMenus\fP" 8 This variable is similar to \fBStayUpMenus\fP, except that if any menu items are selected, the menu interaction reverts to the old behavior. For example, suppose you have the right pointer button bound to bring up a menu with a title bar. Clicking the right button and releasing it (over the title bar) will bring up the menu and have it stay up until you click on a menu item. Clicking the right button, moving the pointer to a menu item, and releasing the right button will activate that menu item and dismiss the menu. .IP "\fBSticky\fP { \fIlist\fP }" 8 A synonym for \fBNailedDown\fP. .IP "\fBStickyAbove\fP" 8 A synonym for \fBNailedAbove\fP. .IP "\fBStrictIconManager\fP" 8 This variable causes icon managers to list only those windows that are in an iconified state. .IP "\fBTitleBackground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the background color used in titlebars, and may only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The optional \&\fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBTitleBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use 3D-looking titlebars, and specifies the width in pixels of the bevel that surrounds the titlebar. If the value of \&\fBButtonIndent\fP added to \fBFramePadding\fP equals zero, the bevel will be bound to the text and highlight area. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI1\fP when \fBvtwm\fP is built with 3D features.. .IP "\fBTitleButtonBorderWidth\fP \fIpixels\fP" 8 This variable specifies the width in pixels of the border surrounding titlebar buttons, drawn in the \fBTitleForeground\fP color. The default is \fI1\fP if \fBvtwm\fP is built with 2D bitmaps, or \fI0\fP when \fBvtwm\fP is built with 3D pixmaps. .IP "\fBTitleFont\fP \fIstring\fP" 8 This variable specifies the font to used for displaying window names in titlebars. The default is \fI"-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"\fP. .IP "\fBTitleForeground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the foreground color used in titlebars, and may only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBTitlePadding\fP \fIpixels\fP" 8 This variable specifies the distance between titlebar buttons in the titlebar. Note that distances between buttons and the title, the title and the highlight area, and the highlight area and buttons, are all set to a hard-coded value. The default is \fI5\fP if \fBvtwm\fP is built with 2D features, or \fI0\fP when \fBvtwm\fP is built with 3D features. .IP "\fBUnknownIcon\fP \fIstring\fP" 8 This variable specifies the filename of an image file to be used as the default icon. This image will be used as the icon of all clients which do not provide an icon image and are not listed in the \fBIcons\fP list. .IP "\fBUsePPosition\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies whether or not \fBvtwm\fP should honor program-requested locations (given by the \fBPPosition\fP flag in the WM_NORMAL_HINTS property), in the absence of a user-specified position. The argument \fIstring\fP may have one of three values: \fI"off"\fP (the default) indicating that \fBvtwm\fP should ignore the program-supplied position, \fI"on"\fP indicating that the position should be used, and \&\fI"non-zero"\fP indicating that the position should used if it is other than (0,0) (for working around a bug in older toolkits). The optional \fIwin-list\fP is a list of window names and arguments that will override the global \fIstring\fP argument. For example: .RS 12 .nf \&\fBUsePPosition\fP "off" { "MPlayer" "on" } .fi .RE .IP "\fBVirtualBackground\fP \fIstring\fP" 8 This is the background color for the panner, a.k.a. the Virtual Desktop window. The default is \fI"maroon"\fP for color displays or \fI"gray50"\fP for monochrome displays. .IP "\fBVirtualBackgroundPixmap\fP \fIstring\fP" 8 Names an image file to decorate the panner. .IP "\fBVirtualForeground\fP \fIstring\fP" 8 Foreground for the panner; has no use unless you specify a panner image of type \fBbitmap\fP(1). .IP "\fBVirtualDesktop\fP \fIgeometry\fP \fIscale\fP" 8 This variable must be set to enable the virtual desktop features of \&\fBvtwm\fP. If this variable is not set, \fBvtwm\fP will behave in the same manner as \fBtwm\fP. This variable specifies where to place the virtual desktop window and its size. The \fIgeometry\fP is a standard X geometry specification and defines the size and location of the window containing the desktop representation. .IP The \fIscale\fP parameter specifies the scaling of the virtual desktop window compared to the desktop. The size specification can be given in three ways: If size is larger than the screen size, it represents the size of the whole desktop, and the virtual window desktop size will then be size divided by \fIscale\fP. When size times \&\fIscale\fP is smaller than the screen size, size represents the number of screens that should fit in the desktop. Otherwise size represents the size of the virtual desktop window, and the currently accessible virtual desktop is then \fIscale\fP times the size of the desktop window. Using the default as an example: .RS 12 .nf \&\fBVirtualDesktop\fP "5x2-0-0" 16 .fi .RE .RS With \&\fIscale\fP set to \fI16\fP, and a physical screen size of 1024x768, the desktop area is 1/16 the size of the screen times the number of screens specified: .RE .RS 12 .nf (5 * (1024 / 16)) x (2 * (768 / 16)) = 320 x 96 .fi .RE .IP The size of the desktop can be changed dynamically, by simply resizing the virtual desktop window. .IP "\fBVirtualDesktopBevelWidth\fP \fIpixels\fP" 8 Tells \fBvtwm\fP to use a 3D-looking virtual desktop, and specifies the width in pixels of the bevel. The default is \fI0\fP if \fBvtwm\fP is built with 2D features, or \fI1\fP when \fBvtwm\fP is built with 3D features. .IP "\fBVirtualDesktopFont\fP \fIfont\fP" 8 This variable causes \fIfont\fP to be used when displaying the names of windows in the virtual desktop display. If this variable is not set, then names will not be displayed. The \fBDesktopDisplayForeground\fP should also be set for this feature to be useful. The default is \fI"-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*"\fP. .IP "\fBVirtualReceivesMotionEvents\fP" 8 .IP "\fBVirtualSendsMotionEvents\fP" 8 These variables indicate that changes to the position and dimension of windows on the real screen will be reflected in the virtual desktop as they occur, and visa-versa. .IP "\fBWarpCentered\fP \fIstring\fP" 8 By default, on warps to windows, the pointer goes to either the center of the titlebar, or in the absence of, the center of the top border member. This variable specifies that the pointer should warp to the center of the window depending on the \fIstring\fP argument: \fI"on"\fP indicates all windows, \fI"titled"\fP indicates titled windows only, \fI"untitled"\fP indicates untitled windows only, and \fI"off"\fP (the default) indicating the default behavior. Note that warps to icon managers are exceptional: The pointer always goes to either the active entry, or in the absence of, the top entry. .IP "\fBWarpCursor\fP [{ \fIwin-list\fP }]" 8 This variable indicates that the pointer should be warped into windows when they are deiconified. If the optional \fIwin-list\fP is given, the pointer will only be warped when those windows are deiconified. It is set by default. .IP "\fBWarpSnug\fP" 8 With this variable set, the warp functions (\fBf.warp\fP and the like) will fit the entire window on the screen, i.e., they'll be snugged on the real screen. .IP "\fBWarpToTransients\fP" 8 This variable indicates that the pointer should be warped into transient windows when they are created. .IP "\fBWarpUnmapped\fP" 8 This variable indicates that the warp functions (\fBf.warp\fP and the like) should deiconify any iconified windows they encounter. This is typically used to make a key binding that will pop a particular window (such as \&\fIxmh\fP), no matter where it is. The default is for the functions to ignore iconified windows. .IP "\fBWarpVisible\fP" 8 This variable indicates that the warp functions \fBf.warpclassnext\fP, \&\fBf.warpclassprev\fP, \fBf.warpring\fP, and \fBf.warpto\fP should restrict themselves to windows that are on the screen. The default is for the functions to traverse the entire virtual desktop. .IP "\fBWarpWindows\fP" 8 When warping to a window, by default the real screen will be moved to find the window on the virtual desktop. With this set, the window itself will be warped to the real screen, moving the window in the virtual desktop. .IP "\fBWindowRing\fP [{ \fIwin-list\fP }]" 8 This variable specifies that when windows are created, they should be added to the list that the \fBf.warpring\fP function operates on. If the optional \&\fIwin-list\fP is given, then only those windows will be included in the window ring. See also \fBNoWindowRing\fP and \fBf.ring\fP. .IP "\fBXorValue\fP \fInumber\fP" 8 This variable specifies the value to use when drawing window outlines for moving and resizing. This should be set to a value that will result in a variety of distinguishable colors when exclusive-or'ed with the contents of the user's typical screen. Setting this variable to 1 often gives nice results if adjacent colors in the default colormap are distinct. By default, \&\fBvtwm\fP will attempt to cause temporary lines to appear at the opposite end of the colormap from the graphics. .IP "\fBZoom\fP [ \fIcount\fP ]" 8 This variable indicates that outlines suggesting movement of a window to and from its iconified state should be displayed whenever a window is iconified or deiconified. The optional \fIcount\fP argument specifies the number of outlines to be drawn. The default count is \fI8\fP. .IP "\fBZoomZoom\fP" 8 This variable modifies zooms such that a random place will be used for the source or destination when there isn't an appropriate window (e.g., an icon, icon manager entry, or client window). Default behavior inhibits zooms when there aren't appropriate windows, except for the \fBf.zoomzoom\fP function. .\"===================================================================== .SH SPECIAL VARIABLES .PP The following variables must be set after the fonts have been assigned, so it is usually best to put them at the end of the variables or beginning of the bindings sections: .IP "\fBDefaultFunction\fP \fIfunction\fP" 8 This variable specifies the function to be executed when a key or button event is received for which no binding is provided. This is typically bound to \fBf.nop\fP, \fBf.beep\fP, or a menu containing window operations. .IP "\fBWindowFunction\fP \fIfunction\fP" 8 This variable specifies the function to execute when a window is selected from the \fBVTWM Windows\fP menu. If this variable is not set (default), the window will be deiconified and raised. It is strongly recommended that if this is set, the function includes provision for deiconifying windows. .\"===================================================================== .SH BINDINGS .PP After the desired variables have been set, functions may be attached titlebar buttons and key and pointer buttons. Titlebar buttons may be added from the left or right side and appear in the titlebar from left-to-right according to the order in which they are specified. Key and pointer button bindings may be given in any order. .PP Titlebuttons specifications must include the name of the image to use in the button box and the function to be invoked when a pointer button is pressed within them: .RS 4 .nf \&\fBLeftTitleButton\fP "\fIimage\fP" = \fIfunction\fP .fi .RE or .RS 4 .nf \&\fBRightTitleButton\fP "\fIimage\fP" = \fIfunction\fP .fi .RE .PP See the \fBButtonIndent\fP and \fBFramePadding\fP variables and the .B IMAGE AND AUDIO FORMATS section for details on the \fIimage\fP specification. .PP Key and pointer button specifications must give the modifiers that must be pressed, over which parts of the screen the pointer must be, and what function is to be invoked. Keys are given as strings containing the appropriate keysym name; buttons are given as the keywords \fBButton1\fP-\fBButton5\fP: .RS 4 .nf "FP1" = \fImodlist\fP : \fIcontext\fP : \fIfunction\fP \&\fBButton1\fP = \fImodlist\fP : \fIcontext\fP : \fIfunction\fP .fi .RE .PP The \fImodlist\fP is any combination of the modifier names \fBshift\fP, \&\fBcontrol\fP, \fBlock\fP, \fBmeta\fP, \fBmod1\fP, \fBmod2\fP, \fBmod3\fP, \&\fBmod4\fP, or \fBmod5\fP (which may be abbreviated as \&\fBs\fP, \fBc\fP, \fBl\fP, \fBm\fP, \fBm1\fP, \fBm2\fP, \fBm3\fP, \fBm4\fP, \&\fBm5\fP, respectively) separated by a vertical bar (\(or). Similarly, the \fIcontext\fP is any combination of \&\fBwindow\fP, \&\fBtitle\fP, \&\fBicon\fP, \&\fBroot\fP, \&\fBframe\fP, \&\fBvirtual\fP, \&\fBdesktop\fP, \&\fBdoor\fP, \&\fBiconmgr\fP, their first letters (\fBiconmgr\fP abbreviation is \&\fBm\fP, \fBdoor\fP has no abbreviation), or \fBall\fP, separated by a vertical bar. It is rumored that window class names will also work. The \fIfunction\fP is any of the \fBf.\fP keywords described below. For example, the default startup file contains the following bindings: .RS 4 .nf Button1 = : root : f.menu "VTWM Windows" Button1 = m : window | icon : f.function "move-or-lower" Button2 = m : window | icon : f.iconify Button3 = m : window | icon : f.move Button1 = : title : f.move Button2 = : title : f.raiselower Button1 = : icon : f.function "move-or-iconify" Button2 = : icon : f.iconify Button1 = : iconmgr : f.iconify Button2 = : iconmgr : f.iconify .fi .RE .PP A user who wanted to be able to manipulate windows from the keyboard could use the following bindings: .RS 4 .nf "F1" = : all : f.iconify "F2" = : all : f.raiselower "F3" = : all : f.warpring "next" "F4" = : all : f.warpto "xmh" "F5" = : all : f.warpto "emacs" "F6" = : all : f.colormap "next" "F7" = : all : f.colormap "default" "F20" = : all : f.warptoscreen "next" "Left" = m : all : f.backiconmgr "Right" = m | s : all : f.forwiconmgr "Up" = m : all : f.upiconmgr "Down" = m | s : all : f.downiconmgr .fi .RE .PP Note, however, that using \fIall\fP for button or key bindings is almost always a bad idea, since it prevents all applications from receiving those events; this can cripple text and graphics editors that otherwise expect to see those buttons or keys (see also the \&\fBIgnoreModifiers\fP variable, and the \fBf.bindbuttons\fP, \&\fBf.bindkeys\fP, \fBf.unbindbuttons\fP, and \fBf.unbindkeys\fP functions). .PP \&\fBvtwm\fP provides many more window manipulation primitives than can be conveniently stored in a titlebar, menu, or set of key bindings. Although a small set of defaults are supplied (unless either \fBNoDefaults\fP, \&\fBNoDefaultMouseOrKeyboardBindings\fP, or \fBNoDefaultTitleButtons\fP is specified), most users will want to have their most common operations bound to key and button strokes. To do this, \fBvtwm\fP associates names with each of the primitives and provides \fIuser-defined functions\fP for building higher level primitives and \fImenus\fP for interactively selecting among groups of functions. .PP User-defined functions contain the name by which they are referenced in calls to \fBf.function\fP and a list of other functions to execute. For example: .RS 4 .nf Function "move-or-lower" { f.move f.deltastop f.lower } Function "move-or-iconify" { f.move f.deltastop f.iconify } Function "restore-colormap" { f.colormap "default" f.lower } .fi .RE .PP The function name must be used in \fBf.function\fP exactly as it appears in the function specification. .PP \&\fBVTWM PROFILE\fP. If a function called "VTWM Profile" is defined within the startup file, that function will be executed upon startup or restarting of the window manager. For example: .RS 4 .nf AutoPan 25 Function "VTWM Profile" { f.autopan } .fi .RE gives \fBAutoPan\fP a value but turns autopanning off initially (it won't have a value unless \fBAutoPan\fP is set in the startup file; see \&\fBf.autopan\fP below), in case you want to turn it on sometime later. .PP In the descriptions below, if the function is said to operate on the selected window, but is invoked from a root menu, the cursor will be changed to the \fBSelect\fP cursor and the next window to receive a button press will be chosen: .IP "\fB!\fP \fIstring\fP" 8 This is an abbreviation for \fBf.exec\fP \fIstring\fP. .IP "\fB^\fP \fIstring\fP (OBSOLETE --- use a clipboard client)" 8 This is an abbreviation for \fBf.cut\fP \fIstring\fP. .IP "\fBf.autopan\fP" 8 If autopan wasn't configured in your .vtwmrc file, this does nothing. If, however, it was configured, this toggles the current autopan state. The reason for this command is that autopan is sometimes nice to have, but it interferes with using sticky windows that are near the edge of the screen. With this command, you get the best of both worlds. .IP "\fBf.autoraise\fP" 8 This function toggles whether or not the selected window is raised whenever entered by the pointer. See the description of the variable \fBAutoRaise\fP. .IP "\fBf.backiconmgr\fP" 8 This function warps the pointer to the previous column in the current icon manager, wrapping back to the previous row if necessary. .IP "\fBf.beep\fP" 8 This function sounds the keyboard bell. .IP "\fBf.bindbuttons\fP" 8 .IP "\fBf.bindkeys\fP" 8 These functions enable \fBvtwm\fP's pointer or keyboard bindings for the selected window. These are only needed if the bindings have been disabled with the \fBf.unbindbuttons\fP or \fBf.unbindkeys\fP functions. Be careful what you bind these functions to; \fBf.bindkeys\fP bound to a window context key will not be accessable after \fBf.unbindkeys\fP is invoked for the window! .IP "\fBf.bottomzoom\fP" 8 This function is similar to the \fBf.fullzoom\fP function, but resizes the window to fill only the bottom half of the screen. .IP "\fBf.circledown\fP" 8 This function lowers the top-most window that occludes another window. .IP "\fBf.circleup\fP" 8 This function raises the bottom-most window that is occluded by another window. .IP "\fBf.colormap\fP \fIstring\fP" 8 This function rotates the colormaps (obtained from the WM_COLORMAP_WINDOWS property on the window) that \fBvtwm\fP will display when the pointer is in this window. The argument \fIstring\fP may have one of the following values: \fI"next"\fP, \fI"prev"\fP, and \fI"default"\fP. It should be noted here that in general, the installed colormap is determined by keyboard focus. A pointer driven keyboard focus will install a private colormap upon entry of the window owning the colormap. Using the click to type model, private colormaps will not be installed until the user presses a pointer button on the target window. .IP "\fBf.cut\fP \fIstring\fP (OBSOLETE --- use a clipboard client)" 8 This function places the specified \fIstring\fP (followed by a newline character) into the root window property CUT_BUFFER0. .IP "\fBf.cutfile\fP (OBSOLETE --- use a clipboard client)" 8 This function reads the file indicated by the contents of the CUT_BUFFER0 window property and replaces the cut buffer. .IP "\fBf.deiconify\fP" 8 This function deiconifies the selected window. If the window is not an icon, this function does nothing. .IP "\fBf.delete\fP" 8 This function sends the WM_DELETE_WINDOW message to the selected window if the client application has requested it through the WM_PROTOCOLS window property. The application is supposed to respond to the message by removing the window. If the window has not requested WM_DELETE_WINDOW messages, the keyboard bell will be rung indicating that the user should choose an alternative method. Note this is very different from \fBf.destroy\fP. The intent here is to delete a single window, not necessarily the entire application. .IP "\fBf.deletedoor\fP" 8 This function deletes a door. .IP "\fBf.deltastop\fP" 8 This function allows a user-defined function to be aborted if the pointer has been moved more than \fPMoveDelta\fP pixels. See the example definition given for \fBFunction "move-or-lower"\fP at the beginning of the section. .IP "\fBf.destroy\fP" 8 This function instructs the X server to close the display connection of the client that created the selected window. This should only be used as a last resort for shutting down runaway clients. See also \fBf.delete\fP. .IP This action sometimes leaves a runaway process that consumes CPU cycles; you should always try to use the applications own quit function, rather than this one. .IP "\fBf.downiconmgr\fP" 8 This function warps the pointer to the next row in the current icon manger, wrapping to the beginning of the next column if necessary. .IP "\fBf.enterdoor\fP" 8 This function activates this door. Typically one binds: .RS 12 .nf Button1 = : door : f.enterdoor Button2 = : door : f.enterdoor Button3 = : door : f.enterdoor .fi .RE .IP "\fBf.exec\fP \fIstring\fP" 8 This function passes the argument \fIstring\fP to /bin/sh for execution. In multiscreen mode, if \fIstring\fP starts a new X client without giving a display argument, the client will appear on the screen from which this function was invoked. .IP "\fBf.file\fP \fIstring\fP (OBSOLETE --- use a clipboard client)" 8 This function assumes \fIstring\fP is a file name. This file is read into the window server's cut buffer. .IP "\fBf.focus\fP" 8 This function toggles the keyboard focus of the server to the selected window, changing the focus rule from pointer-driven if necessary. If the selected window already was focused, this function executes an \&\fBf.unfocus\fP. .IP "\fBf.forcemove\fP" 8 This function is like \fBf.move\fP except that it ignores the \fBDontMoveOff\fP variable. .IP "\fBf.forwiconmgr\fP" 8 This function warps the pointer to the next column in the current icon manager, wrapping to the beginning of the next row if necessary. .IP "\fBf.fullzoom\fP" 8 This function resizes the selected window to the full size of the display or else restores the original size if the window was already zoomed. .IP "\fBf.function\fP \fIstring\fP" 8 This function executes the user-defined function whose name is specified by the argument \fIstring\fP. .IP "\fBf.hbzoom\fP" 8 This function is a synonym for \fBf.bottomzoom\fP. .IP "\fBf.hidedesktopdisplay\fP" 8 This function unmaps the desktop display. .IP "\fBf.hideiconmgr\fP" 8 This function unmaps the current icon manager when selected from a client window, and unmaps all icon managers when selected from the root window. .IP "\fBf.horizoom\fP" 8 This variable is similar to the \fBf.zoom\fP function except that the selected window is resized to the full width of the display. .IP "\fBf.htzoom\fP" 8 This function is a synonym for \fBf.topzoom\fP. .IP "\fBf.hzoom\fP" 8 This function is a synonym for \fBf.horizoom\fP. .IP "\fBf.iconify\fP" 8 This function iconifies or deiconifies the selected window or icon, respectively. .IP "\fBf.identify\fP" 8 This function displays a summary of the name and geometry of the selected window. Clicking the pointer or pressing a key in the window will dismiss it. If the function is invoked on a desktop representation of a window, the real window which is represented will be identified. .IP "\fBf.lefticonmgr\fP" 8 This function similar to \fBf.backiconmgr\fP except that wrapping does not change rows. .IP "\fBf.leftzoom\fP" 8 This variable is similar to the \fBf.bottomzoom\fP function but causes the selected window is only resized to the left half of the display. .IP "\fBf.lower\fP" 8 This function lowers the selected window. .IP "\fBf.menu\fP \fIstring\fP" 8 This function invokes the menu specified by the argument \fIstring\fP. Cascaded menus may be built by nesting calls to \fBf.menu\fP. .IP "\fBf.move\fP" 8 This function drags an outline of the selected window (or the window itself if the \fBOpaqueMove\fP variable is set) until the invoking pointer button is released, at which time the window is raised (subject to \&\fBRaiseOnStart\fP, \fBMoveDelta\fP, and \fBNoRaiseOnMove\fP). Double clicking within the number of milliseconds given by \fBConstrainedMoveTime\fP warps the pointer to the center of the window and constrains the move horizontally or vertically, depending on pointer movement. To abort the move, press another button before releasing the invoking button. .IP "\fBf.movescreen\fP" 8 Moves a window (or possibly the real screen) inside the desktop display. To abort the move, press another button before releasing the invoking button. By default, the bindings using the \fBdesktop\fP context are defined as: .RS 12 .nf Button1 = : desktop : f.movescreen Button2 = : desktop : f.movescreen .fi .RE .IP This is useful if you want to reset the default keyboard and pointer bindings via \fBNoDefaultMouseOrKeyboardBindings\fP and use some of your own for the virtual desktop, e.g.: .RS 12 .nf NoDefaultMouseOrKeyboardBindings Button1 = : desktop : f.movescreen Button2 = : desktop : f.warp Button3 = : desktop : f.iconify .fi .RE .IP This function is not useful under any context other than "desktop". .IP "\fBf.nail\fP" 8 This function nails or unnails the selected window onto the real screen; the current value of this property is toggled on the window. .IP "\fBf.nailedabove\fP" 8 This function toggles the setting of the \fBNailedAbove\fP variable. .IP "\fBf.namedoor\fP" 8 This function, bound to the door context, pastes a name from CUT_BUFFER0 into the selected door (see the .B BINDINGS section for details). .IP "\fBf.newdoor\fP" 8 This function creates a new door with it's destination and name set to the real screen's current position in the virtual desktop. .IP "\fBf.nexticonmgr\fP" 8 This function warps the pointer to the next icon manager containing any windows on the current or any succeeding screen. .IP "\fBf.nop\fP" 8 This function does nothing and is typically used with the \fBDefaultFunction\fP or \fBWindowFunction\fP variables or to introduce blank lines in menus. .IP "\fBf.panup\fP \fIN\fP" 8 .IP "\fBf.pandown\fP \fIN\fP" 8 .IP "\fBf.panleft\fP \fIN\fP" 8 .IP "\fBf.panright\fP \fIN\fP" 8 These functions move the real screen by \fIN%\fP of the screen dimension in the indicated direction. These are ideally bound to the cursor keys: .RS 12 .nf "Up" = : root : f.panup "100" "Down" = : root : f.pandown "100" "Left" = : root : f.panleft "100" "Right" = : root : f.panright "100" .fi .RE .IP "\fBf.playsound\fP \fIsoundfile\fP" 8 This function plays the specified sound at \fBSoundVolume\fP volume. The \&\fIsoundfile\fP must be the full pathname of the sound file. This is a rather "expensive" function compared to that provided by the \fBSounds\fP variable, and should be avoided. .IP "\fBf.previconmgr\fP" 8 This function warps the pointer to the previous icon manager containing any windows on the current or preceding screens. .IP "\fBf.quit\fP" 8 This function causes \fBvtwm\fP to restore the window's borders and exit. If \&\fBvtwm\fP is the last client invoked from \fIxdm\fP, this will result in a server reset, and the user's session will be logged out. .IP Users who stay logged in for long periods (days or weeks), or who like to change window managers, or experiment with them, may find it desirable to use a relatively simple application, such as .BR xbiff (1), as the last application in their .IR .xinitrc or .IR .xsession file, letting the window manager start earlier, and run in the background. This allows changing window managers without logging out, and also makes it much less likely that a session will be abruptly terminated by a bug in a complex program like a window manager. The one drawback to this approach is that \fBf.quit\fP then no longer terminates the session: you need to use \fBf.delete\fP or \fBf.destroy\fP on that last application to logout. .IP "\fBf.raise\fP" 8 This function raises the selected window. .IP "\fBf.raiselower\fP" 8 This function raises the selected window to the top of the stacking order if it is occluded by any windows, otherwise the window will be lowered. .IP "\fBf.refresh\fP" 8 This function causes all windows to be refreshed. .IP "\fBf.resetdesktop\fP" 8 This function moves the real display to (0,0) .IP "\fBf.resize\fP" 8 This function drags an outline of the selected window (or the window itself if the \fBOpaqueResize\fP variable is set) after crossing a border (or by setting \fBAutoRelativeResize\fP) until the invoking pointer button is released, at which time the window is raised (subject to \&\fBRaiseOnStart\fP, \fBMoveDelta\fP, and \fBNoRaiseOnResize\fP). To abort the resize, press another button before releasing the invoking button. .IP "\fBf.restart\fP" 8 This function kills and restarts \fBvtwm\fP. See also \fBf.startwm\fP. .IP "\fBf.righticonmgr\fP" 8 This function is similar to \fBf.nexticonmgr\fP except that wrapping does not change rows. .IP "\fBf.rightzoom\fP" 8 This variable is similar to the \fBf.bottomzoom\fP function except that the selected window is only resized to the right half of the display. .IP "\fBf.ring\fP" 8 Selects a window and adds it to the \fBWindowRing\fP list, or removes it if it was already in the ring. This command makes \fBf.warpring\fP much more useful, by making its configuration dynamic. .IP "\fBf.saveyourself\fP" 8 This function sends a WM_SAVEYOURSELF message to the selected window if it has requested the message in its WM_PROTOCOLS window property. Clients that accept this message are supposed to checkpoint all state associated with the window and update the WM_COMMAND property as specified in the ICCCM. If the window has not requested this message, the keyboard bell will be rung. .IP "\fBf.separator\fP" 8 Valid only in menus. The effect is to add a line separator between the previous and the following entry. The name selector part in the menu is not used (but must be present). .IP "\fBf.setrealscreen\fP \fIgeomstr\fP" 8 This function sets the real screen to the virtual coordinates specified. The \fIgeomstr\fP is a quoted string containing a standard geometry specification. .IP "\fBf.showdesktopdisplay\fP" 8 This function maps the desktop display. .IP "\fBf.showiconmgr\fP" 8 This function maps the current icon manager when selected from a client window, and maps all icon managers when selected from the root window. .IP "\fBf.snap\fP" 8 This function snaps the real screen to a grid defined on virtual space with \&\fBPanDistanceX\fP and \fBPanDistanceY\fP increments. .IP "\fBf.snaprealscreen\fP" 8 This function toggles the setting of \fBSnapRealScreen\fP. .IP "\fBf.snugdesktop\fP" 8 moves the display to try to fit all partially visible windows completely on the screen. .IP "\fBf.snugwindow\fP" 8 moves the display to try to fit the selected window completely on the screen .IP "\fBf.sorticonmgr\fP" 8 This function sorts the entries in the current icon manager alphabetically. See the variable \fBSortIconManager\fP. .IP "\fBf.sounds\fP" 8 This function toggles the playing of sounds. It's a "mute" function. .\".IP "\fBf.source\fP \fIstring\fP (DOES NOT WORK!!!)" 8 .\"This function assumes \fIstring\fP is a file name. The file is read .\"and parsed as a \fBvtwm\fP startup file. .\"This function is intended to be used only to re-build pull-down menus. None .\"of the \fBvtwm\fP variables are changed. .IP "\fBf.squeezecenter\fP" 8 .IP "\fBf.squeezeleft\fP" 8 .IP "\fBf.squeezeright\fP" 8 Selects a window and makes its title appear as though you had configured it as .RS 12 .nf \&\fBSqueezeTitle\fP center 0 0 .fi .RE .RS or .RE .RS 12 .nf \&\fBSqueezeTitle\fP left 0 0 .fi .RE .RS or .RE .RS 12 .nf \&\fBSqueezeTitle\fP right 0 0 .fi .RE .RS respectively. These make squeezed titles much more useful because their configuration is dynamic. .RE .IP "\fBf.startwm\fP \fIcommandline\fP" 8 This function kills \fBvtwm\fP, and starts up the window manager as specified by \fIcommandline\fP. A trailing ampersand and/or environment variables should not be used. See also \fBf.restart\fP. .IP "\fBf.staticiconpositions\fP" 8 This function toggles the setting of \fBStaticIconPositions\fP. .IP "\fBf.stick\fP" 8 This function is a synonym for \fBf.nail\fP. .IP "\fBf.stickyabove\fP" 8 This function is synonymous with the \fBf.nailedabove\fP function. .IP "\fBf.stricticonmgr\fP" 8 This function toggles the setting of \fBStrictIconManager\fP. .IP "\fBf.title\fP" 8 This function provides a centered, unselectable item in a menu definition. It should not be used in any other context. .IP "\fBf.topzoom\fP" 8 This variable is similar to the \fBf.bottomzoom\fP function except that the selected window is only resized to the top half of the display. .IP "\fBf.twmrc\fP" 8 Synonymous with \fBf.restart\fP. Historically, this function was intended to cause the startup customization file to be re-read. .IP "\fBf.unbindbuttons\fP" 8 .IP "\fBf.unbindkeys\fP" 8 These functions disable \fBvtwm\fP's pointer or keyboard bindings for the selected window, allowing events to pass directly to the application. These are useful, for example, when running another window manager within \fBXnest\fP or \fBXvnc\fP. .IP "\fBf.unfocus\fP" 8 This function resets the focus back to pointer-driven. This should be used when a focused window is no longer desired. .IP "\fBf.upiconmgr\fP" 8 This function warps the pointer to the previous row in the current icon manager, wrapping to the last row in the same column if necessary. .IP "\fBf.version\fP" 8 This function causes the \fBvtwm\fP version window to be displayed. This window will be displayed until a pointer button is pressed or the pointer is moved from one window to another. .IP "\fBf.virtualgeometries\fP" 8 This function toggles the setting of \fBNotVirtualGeometries\fP. .IP "\fBf.vlzoom\fP" 8 This function is a synonym for \fBf.leftzoom\fP. .IP "\fBf.vrzoom\fP" 8 This function is a synonym for \fBf.rightzoom\fP. .IP "\fBf.warp\fP" 8 Warp the cursor to the selected window. This is only useful if the window is selected via the icon manager. .IP "\fBf.warpclassnext\fP \fIstring\fP" 8 .IP "\fBf.warpclassprev\fP \fIstring\fP" 8 These functions warp the pointer to the next or previous window in the specified class indicated by the argument \fIstring\fP. If \fIstring\fP is \&\fI"VTWM"\fP, only icon managers, doors, and the Virtual Desktop window are considered. If \fIstring\fP empty (i.e., \fI""\fP), the class of the window with focus is used. If the window is iconified, it will be deiconified if the variable \fBWarpUnmapped\fP is set or else ignored. .IP "\fBf.warpring\fP \fIstring\fP" 8 This function warps the pointer to the next or previous window (as indicated by the argument \fIstring\fP, which may be \fI"next"\fP or \fI"prev"\fP) specified in the \fBWindowRing\fP variable. If the window is iconified, it will be deiconified if the variable \fBWarpUnmapped\fP is set or else ignored. .IP "\fBf.warpsnug\fP" 8 This function toggles the setting of \fBWarpSnug\fP. .IP "\fBf.warpto\fP \fIstring\fP" 8 This function warps the pointer to the window which has a name or class that matches \fIstring\fP. The \fIstring\fP may be a VTWM-style wildcard, but not a \fIregular expression\fP (see the .B WILDCARDS section for details). If the window is iconified, it will be deiconified if the \fBWarpUnmapped\fP variable is set, or else ignored. .IP "\fBf.warptoiconmgr\fP \fIstring\fP" 8 This function warps the pointer to the icon manager entry associated with the window containing the pointer in the icon manager specified by the argument \fIstring\fP. If \fIstring\fP is empty (i.e., \fI""\fP), the current icon manager is chosen. If the window is iconified, it will be deiconified if the variable \fBWarpUnmapped\fP is set or else ignored. .IP "\fBf.warptonewest\fP" 8 This function warps the pointer to the most recently created window. If the window is iconified, it will be deiconified if the variable \&\fBWarpUnmapped\fP is set or else ignored. .IP "\fBf.warptoscreen\fP \fIstring\fP" 8 This function warps the pointer to the screen specified by the argument \fIstring\fP. \fIString\fP may be a number (e.g., \fI"0"\fP or \&\fI"1"\fP), the word \fI"next"\fP (indicating the current screen plus 1, skipping over any unmanaged screens), the word \fI"back"\fP (indicating the current screen minus 1, skipping over any unmanaged screens), or the word \&\fI"prev"\fP (indicating the last screen visited. .IP "\fBf.warpvisible\fP" 8 This function toggles the setting of \fBWarpVisible\fP. .IP "\fBf.winrefresh\fP" 8 This function is similar to the \fBf.refresh\fP function except that only the selected window is refreshed. .IP "\fBf.zoom\fP" 8 This function is similar to the \fBf.fullzoom\fP function, except that the only the height of the selected window is changed. .IP "\fBf.zoomzoom\fP" 8 This function makes a zoom outline from a random place to another random place (see the \fBZoom\fP and \fBZoomZoom\fP variables). It's silly, but can be used as a visual bell in place of \fBf.beep\fP. See also the \&\fBLessRandomZoomZoom\fP variable. .\"===================================================================== .SH MENUS .PP Functions may be grouped and interactively selected using pop-up (when bound to a pointer button) or pull-down (when associated with a titlebar button) menus. Each menu specification contains the name of the menu as it will be referred to by \fBf.menu\fP, optional default foreground and background colors, the list of item names and the functions they should invoke, and optional foreground and background colors for individual items: .RS 4 .nf \&\fBMenu\fP "\fImenuname\fP" [ ("\fIdeffore\fP":"\fIdefback\fP") ] { \fIstring1\fP [ ("\fIfore1\fP":"\fIback1\fP")] \fIfunction1\fP \fIstring2\fP [ ("\fIfore2\fP":"\fIback2\fP")] \fIfunction2\fP ... \fIstringN\fP [ ("\fIforeN\fP":"\fIbackN\fP")] \fIfunctionN\fP } .fi .RE .PP The \fImenuname\fP is case-sensitive. The optional \fIdeffore\fP and \fIdefback\fP arguments specify the foreground and background colors used on a color display to highlight menu entries. The \fIstring\fP portion of each menu entry will be the text which will appear in the menu. The optional \fIfore\fP and \fIback\fP arguments specify the foreground and background colors of the menu entry when the pointer is not in the entry. These colors will only be used on a color display. The default is to use the colors specified by the \&\fBMenuForeground\fP and \fBMenuBackground\fP variables. The \fIfunction\fP portion of the menu entry is one of the functions, including any user-defined functions, or additional menus. .PP There is a special menu named \fBVTWM Windows\fP which contains the names of all of the client and \fBvtwm\fP-supplied windows. Selecting an entry will cause the \fBWindowFunction\fP to be executed on that window. If \fBWindowFunction\fP hasn't been set, the window will be deiconified and raised. This menu uses the same colors as the little windows in the panner. This feature still honors the traditional \fBTwmWindows\fP menu name of yore. .\"===================================================================== .SH ICONS \&\fBvtwm\fP supports several different ways of manipulating iconified windows. The common image-and-text style may be laid out by hand or automatically arranged as described by the \fBIconRegion\fP variable. In addition, a terse grid of icon names, called an icon manager, provides a more efficient use of screen space as well as the ability to navigate among windows from the keyboard. .PP An icon manager is a window that contains names of selected or all windows currently on the display. In addition to the window name, a small button using the default iconify symbol will be displayed to the left of the name when the window is iconified. By default, clicking on an entry in the icon manager performs \fBf.iconify\fP. To change the actions taken in the icon manager, use the \fBiconmgr\fP context when specifying button and keyboard bindings. .PP Moving the pointer into the icon manager also directs keyboard focus to the indicated window when \fBNoIconManagerFocus\fP is not set (setting the focus explicitly or else sending synthetic events if \fBNoTitleFocus\fP is set). Using the \fBf.upiconmgr\fP, \fBf.downiconmgr\fP \&\fBf.lefticonmgr\fP, and \&\fBf.righticonmgr\fP functions, the input focus can be changed between windows directly from the keyboard. .\"===================================================================== .SH IMAGE AND AUDIO FORMATS \&\fBvtwm\fP supports many images on its own (referred to as "internal" or "built-in" in this document), divided into two types, \fIbitmaps\fP and \&\fIpixmaps\fP. They are differentiated from file images by either a colon (':') or the string ":xpm:" as the first character(s) of the name, respectively: .RS 4 .nf \&\fB:darrow\fP scaled in any, n/a for highlight \&\fB:delete\fP / \fB:xlogo\fP centered in any drawable \&\fB:dot\fP / \fB:iconify\fP centered in any drawable \&\fB:menu\fP scaled in any drawable \&\fB:rarrow\fP scaled in any, n/a for highlight \&\fB:resize\fP scaled in any drawable .fi .RE .PP .RS 4 .nf \&\fB:xpm:bar\fP scaled in any drawable \&\fB:xpm:box\fP scaled in any drawable \&\fB:xpm:darrow\fP scaled in any, n/a for highlight \&\fB:xpm:dot\fP centered in any drawable \&\fB:xpm:lines\fP scaled in any drawable \&\fB:xpm:menu\fP scaled in any drawable \&\fB:xpm:raisedbox\fP scaled, for highlight only \&\fB:xpm:raisedlines\fP scaled, for highlight only \&\fB:xpm:rarrow\fP scaled in any, n/a for highlight \&\fB:xpm:resize\fP scaled in any drawable \&\fB:xpm:sunkenbox\fP scaled, for highlight only \&\fB:xpm:sunkenlines\fP scaled, for highlight only \&\fB:xpm:zoom\fP scaled in any drawable .fi .RE .PP \&\fBvtwm\fP also supports a single image file format by default, the X Window System bitmap (files typically carrying an extension of \fI".xbm"\fP), for two-color images. However, when built with the XPM library, \fBvtwm\fP will also support the X Window System pixmap (files typically carrying an extension of \fI".xpm"\fP), for full-color images. .PP All image types and sources can be freely mixed within the variables that use them, given the behavior listed above, and with the following additional exceptions: The \fBIcons\fP and \fBUnknownIcon\fP variables don't recognize the built-in images, the \fBRealScreenPixmap\fP, \fBTitleHighlight\fP, and \&\fBVirtualBackgroundPixmap\fP entries of the \fBPixmaps\fP variable don't recognize the built-in images, only titlebar buttons can accomodate external images that would be larger than the default space allocated for them (in any other case, the image will be cropped to fit), and only the \fBRealScreenPixmap\fP, \&\fBTitleHighlight\fP, and \fBVirtualBackgroundPixmap\fP entries of the \&\fBPixmaps\fP variable will tile small images into the space allocated for them. .PP The icon manager drawable is hard-coded to 11x11 pixels, the menu drawable is \fBMenuFont\fP pixels square, and titlebar buttons are .RS 4 .nf (\fBTitleFont\fP - (2 * \fBButtonIndent\fP)) .fi .RE pixels square. The titlebar highlight area is .RS 4 .nf (\fItitlebar height\fP - (2 * \fBFramePadding\fP) - 2) .fi .RE pixels high, where \fItitlebar height\fP is determined by \fBTitleFont\fP or the titlebar button height, whichever is greater, and \fBFramePadding\fP. .PP The root window can be decorated with whatever image files that are supported by X Window System utilities and applications (\fBxloadimage\fP(1), \&\fBxsetroot\fP(1), \fBxv\fP(1), etc.). .PP If \fBvtwm\fP is built with sound support, several audio file formats are supported, not by \fBvtwm\fP per se, but by the \fBrplayd\fP(8) daemon. Currently, the AU, AIFF, WAV, and VOC formats are natively supported, but see also \fBrplay.helpers\fP(5). .\"===================================================================== .SH WILDCARDS \&\fBvtwm\fP supports "wildcarding" when matching windows against a variable's \fIwin-list\fP. By default, the question mark ('?') represents any single character, the asterisk ('*') represents any zero or more characters, and brackets ('[' and ']') represent any characters listed within them. The backslash ('\\') "escapes" any one character, allowing these reserved characters to be used literally. .PP \&\fBvtwm\fP can support a richer method of character substitution, called \&\fIregular expressions\fP, or \fI"RE"\fPs. If \fBvtwm\fP is built with REs, many more "wildcard" rules are added. A description of REs is beyond the scope of this document; see the \fBre_format\fP(7) or \fBegrep\fP(1) man pages. .PP \&\fBvtwm\fP distinguishes REs from strings by enclosing them in forward slashes ('/'). The two may be freely mixed; changing the example in the .B VARIABLES section to: .RS 4 .nf \&\fBAutoRaise\fP { "emacs" "VTWM*" /x.*clock/ # was "x*clock" "Xmh" "XTerm" } .fi .RE accomplishes the same thing. This is but a simple example of RE usage, and as such doesn't demonstrate or leverage their capabilities. .\"===================================================================== .SH SIGNALS It is possible to issue a \fBf.restart\fP via a UNIX signal, to ease debugging of \fBvtwm\fP resource files. To do this, send a SIGUSR1 to the \&\fBvtwm\fP process ID (written to \fI$HOME/vtwm.pid\fP). See \fBkill\fP(1) or \fBslay\fP(1). .\"===================================================================== .SH BUGS There are precious few safeguards against binding functions to objects inappropriately, especially where the virtual desktop is concerned. .PP Double clicking very fast to get the constrained move function will sometimes cause the window to move, even though the pointer is not moved. .PP It is possible to "lose" windows in the virtual desktop by placing them in a large desktop area, then shrinking the desktop so as to remove them from view. They are still there, of course, but are unreachable until the desktop is grown sufficiently large again. .PP See the \fIBUGS\fP file in the distribution for others. .\"===================================================================== .SH FILES .PP Searched for in the order shown: .RS 4 .nf \&\fI$HOME/.vtwmrc.\fP \&\fI$HOME/.vtwmrc\fP \&\fI$VTWMDIR/twm/system.vtwmrc\fP \&\fI$HOME/.twmrc.\fP \&\fI$HOME/.twmrc\fP \&\fI$VTWMDIR/twm/system.twmrc\fP .fi .RE .PP .nf \&\fI$HOME/vtwm.pid\fP .fi .\"===================================================================== .SH "ENVIRONMENT VARIABLES" .IP "\fBDISPLAY\fP" 8 This variable is used to determine which X server to use. It is also set during \fBf.exec\fP so that programs come up on the proper screen. .IP "\fBHOME\fP" 8 This variable is used as the prefix for files that begin with a tilde and for locating the \fBvtwm\fP startup file. .\"===================================================================== .SH "SEE ALSO" \&\fBbitmap\fP(5), \&\fBctwm\fP(1), \&\fBm4\fP(1), \&\fBmwm\fP(1), \&\fBpixmap\fP(5), \&\fBre_format\fP(7) or \fBegrep\fP(1), \&\fBrplayd\fP(8) and \fBrplay.helpers\fP(5), \&\fBtvtwm\fP(1), \&\fBtwm\fP(1), \&\fBvuewm\fP(1), \&\fBX\fP(1), \&\fBxdm\fP(1), \&\fBxinit\fP(1), \&\fBxmodmap\fP(1), \&\fBxrdb\fP(1), \&\fBXserver\fP(1) .\"===================================================================== .SH COPYRIGHT Portions copyright 1988 Evans & Sutherland Computer Corporation; portions copyright 1989 Hewlett-Packard Company and the Massachusetts Institute of Technology; portions copyright 2001 D. J. Hawkey Jr.. .PP See \fBX\fP(1) for a full statement of rights and permissions. .\"===================================================================== .SH AUTHORS AND CONTRIBUTORS Tom LaStrange, Solbourne Computer; Jim Fulton, MIT X Consortium; Steve Pitschke, Stardent Computer; Keith Packard, MIT X Consortium; Dave Payne, Apple Computer; Nick Williams ; Dave Edmondson, Santa Cruz Operation, ; Dana Chee, Bellcore (R5 conversion), ; Warren Jessop, University of Washington, ; Gilligan ; Tim Ramsey ; Ralph Betza ; Michael Kutzner ; Stig Ostholm ; M. Eyckmans ; Tony Brannigan ; Alec Wolman ; ; Marcel Mol ; Darren S. Embry ; Chris P. Ross ; Paul Falstad ; D. J. Hawkey Jr., (version 5.4), , with Erik Agsjo , Ugen Antsilevitch , Nelson H. F. Beebe , Michael Dales , Jennifer Elaan , Michel Eyckmans , Callum Gibson , Jason Gloudon , Nicholas Jacobs , Caveh Frank Jalali Takeharu Kato , Goran Larsson , Rolf Neugebauer , Jonathan Paisley , Steve Ratcliffe , Seth Robertson , Mehul N. Sanghvi , Tim Wiess , acknowledging Claude Lecommandeur, (ctwm), .\"==============================[The End]============================== vtwm-5.4.7/doc/4.ANNOUNCE0100664000015300001300000000362410237640615013364 0ustar callumfid This is the announcement of VTWM Version 5.4, the first upgrade (by all accounts contained herein) in over two years. I'm un-officially bumping the minor number because VTWM-5.3 is the latest I've seen in distribution, and this is a significant change, both in end-user impression and in code. This all started because I wanted an esthetically pleasing alternative to the Motif window manager, a good workout, and leaner system requirements. Enhanced and extended functionality is way cool. It has taken me about one hobby-month to apply a 3D appearance to VTWM-5.3. I did it by borrowing (stealing?) code from CTWM-3.1 and plugging it in. I also added 3D borders to the size, position(!), and info windows. Then I wanted variable info window fonts. Then resize/position window locations. And a bunch of other tweaks. I have read that VTWM-5.2b has some or all of these enhancements, but I could not find a package to evaluate (I tried with Xarchie using around 15 different hosts). CTWM-3.1 is pretty, lean, and fast, but I don't like it's virtual desktop implementation. I found, made, and tried a version of FVWM, but it didn't port right (or was way buggy), and I didn't/don't think I could have overcome that/those bug/s before becoming thoroughly frustrated. This is not bug-free code. I "inherited" two documented flaws, and others may exist. By fixing one, I seem to have introduced another, but it is easily worked around. I do not want to be the maintainer of VTWM. I don't even think of myself as an "X programmer", though I like it, and *I*am*learning*. I will entertain comments, bug reports, etc., especially to my work, and will try to respond in kind. I am not planning on further effort, as it now fills my needs. D. J. Hawkey Jr. (hawkeyd@visi.com) May 15, 1996 It looks like, for the time being anyway, due to incoming mail, I am the maintainer of VTWM. D. J. Hawkey Jr. (hawkeyd@visi.com) November 17, 1997 vtwm-5.4.7/doc/DEVELOPERS0100664000015300001300000000303710237641630013460 0ustar callumfid A FEW THOUGHTS TO FUTURE MAINTAINERS/DEVELOPERS/HACKERS ======================================================= - If you feel compelled to add more compile-time options (i.e., Java support, etc.), please follow the "NO_" and "NEED_" conventions in the make files. Also, add code as appropriate to menus.c:Identify() and parse.c:make_m4_cmdline(). - Likewise, please follow what few coding conventions are in place. Don't use C++'s double-slash comments, keep up with the K&R style functions, etc. - Keep VTWM portable. There are only two "#ifdef __PLATFORM__"s in this code, yet it runs on platforms I've never seen. GNU isn't everywhere. Neither is POSIX or ANSI. Seek out variety through beta-testers in the X-related newsgroups. Finally, remember that it's X11R4 compliant. - Just because you can't live without such-and-such doesn't mean everyone can't. It's a window manager, not an environment. Help keep VTWM lean. - Add no memory leaks! I haven't read every line of this code, but have had to fix very few, and have seen that none have been introduced. 'Nuff said 'bout that. - Document! The code is a long commentary on VTWM's evolution, and though it does get hard to read, I've come to think it a Good Thing. Keep the files in the in the doc directory current. Sorry if this reads a little belligerent. I'm just tired of fighting all sorts of platform-specific implementations and lazy coding practices while porting stuff. I'm sure you are too. VTWM should never be such. --- djhjr vtwm-5.4.7/doc/4.5.ANNOUNCE0100664000015300001300000000167110237640615013527 0ustar callumfid This is the announcement of VTWM 5.4.5, an upgrade of the three-year old 5.4 release of the window manager for the X Window System. The web page, www.visi.com/~hawkeyd/vtwm.html, has been updated, and the archive may be found via a link there, or directly via FTP at ftp.visi.com/users/hawkeyd/X/ and ftp.x.org/contrib/window_managers/ (if and when they move it there from incoming/). Some of the major changes, in a nutshell: - All the 3D features are now fully configurable. - Complete color (XPM) image support. - Improved and consistant warp functionality. - Many new variables and functions. - Better keyboarding support. - Many more bug fixes. - Better portability. And a newly-discovered capability: - A subset of regex wildcarding for list resources. Visit the above web page for screen captures, installation notes, and complete histories of VTWM since version 5.1. D. J. Hawkey Jr. (hawkeyd@visi.com) September 19, 1998 vtwm-5.4.7/doc/3.FUTURE0100664000015300001300000000061210237640615013161 0ustar callumfidNOW IT'S *YOUR* TURN! ===================== With this version I'm gonna quit for a while as the semester is just about to start and I *probably* won't have enough time to fool with vtwm anymore. If you're willing to work on the next version, just send me email and I'll forward any mail I get concerning vtwm to you. I had some real fun working with this thing. --- DSE vtwm-5.4.7/doc/4.6.ANNOUNCE0100664000015300001300000000362210237641630013524 0ustar callumfid This is the announcement of VTWM 5.4.6, an upgrade of the five-year old 5.4 release of the window manager for the X Window System. Highlighting the major changes from release 5.4.5a: - m4 preprocessing of the resource file. VTWM can now share a common .twmrc with TWM and other TWM derivatives, and support by-user, by-group, and by-feature configurations. - Regular expressions ("RE"s) support for resource file window lists. Much more sophisticated than VTWM's own wildcarding. - Sound effects, by way of the rplay library and daemon. What's wrong with a little chrome? - Applet regions, for all those little tools we have up all the time. - Scrolling menus, for those with more entries than the display can handle. - 3D doors and the virtual desktop. All 3D features are rendered on opaque resizes (well, except for one case). - Windows can be resized or moved from the virtual desktop, icon managers, and menus not of the root or window in question. - Better (dare I say it, "complete"?) support for multi-headed systems. And, of course, many more bug fixes, tweaks, additions, and changes. VTWM continues to be 100% backward-compatable with TWM. It can still build and run under X11R4, and lose no self-supported functionality. Release 5.4.6 supports the many features expected of "modern" window managers, is highly configurable, yet it keeps a small footprint and quick response. VTWM is quite portable; it has been built on over a dozen different OSes, across nine platforms. The web page, www.visi.com/~hawkeyd/vtwm.html, has been updated, and the archive may be found via a link there, or directly via FTP at ftp.visi.com/users/hawkeyd/X/ and ftp.x.org/contrib/window_managers/ (if and when they move it there from contrib/INCOMING/). Visit the above web page for installation notes, complete histories, and more. David J. Hawkey Jr. (hawkeyd@visi.com) November 3, 2001 vtwm-5.4.7/doc/4.FUTURE0100664000015300001300000000076710237640615013175 0ustar callumfid I do not want to be the maintainer of VTWM. I don't even think of myself as an "X programmer", though I like it, and *I*am*learning*. I will entertain comments, bug reports, etc., especially to my work, and will try to respond in kind. I am not planning on further effort, as it now fills my needs. D. J. Hawkey Jr. (hawkeyd@visi.com) May 15, 1996 It looks like, for the time being anyway, due to incoming mail, I am the maintainer of VTWM. D. J. Hawkey Jr. (hawkeyd@visi.com) November 17, 1997 vtwm-5.4.7/doc/4.4.FUTURE0100664000015300001300000000162610237640615013332 0ustar callumfid I have written "I do not want to be the maintainer of VTWM. I don't even think of myself as an "X programmer", though I like it, and *I*am*learning*. I will entertain comments, bug reports, etc., especially to my work, and will try to respond in kind. I am not planning on further effort, as it now fills my needs." and "It looks like, for the time being anyway, due to incoming mail, I am the maintainer of VTWM." Well, most of the former has been proven false (though I still don't feel I'm an "X programmer", I am indeed learning), and the latter seems to be holding true. Whether I want to be the ersatz maintainer doesn't matter, really, as I'm having a jolly good time doing so! I think I can say VTWM definitely has a future. I'll likely continue to play a part, at least until a few more points in the WISHLIST file are knocked off. D. J. Hawkey Jr. (hawkeyd@visi.com) January 18, 1998 vtwm-5.4.7/util.h0100664000015300001300000000740210237645271012453 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: util.h,v 1.10 89/12/10 17:47:04 jim Exp $ * * utility routines header file * * 28-Oct-87 Thomas E. LaStrange File created * ***********************************************************************/ #ifndef _UTIL_ #define _UTIL_ typedef struct _Image { Pixmap pixmap; Pixmap mask; int width; int height; struct _Image *next; } Image; extern void Zoom(); extern void MoveOutline(); extern Pixmap GetBitmap(), FindBitmap(); #ifndef NO_XPM_SUPPORT extern Image *FindImage(); #endif extern void GetUnknownIcon(); extern char *ExpandFilename(); extern void GetColor(); extern Cursor NoCursor(); extern Image *GetImage (); extern void Draw3DBorder(); extern void GetShadeColors(); extern void PaintBorders(); extern void PaintIcon(); extern void PaintTitle(); extern void PaintTitleButton(); extern void InsertRGBColormap(); extern void RemoveRGBColormap(); extern void SetFocus(); extern void LocateStandardColormaps(); extern void GetFont(); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT extern int MyFont_TextWidth(); extern void MyFont_DrawImageString(); extern void MyFont_DrawString(); extern void MyFont_ChangeGC(); extern Status I18N_FetchName(); extern Status I18N_GetIconName(); #endif /* djhjr - 1/13/98 */ void setBorderGC(); #ifdef USE_ORIGINAL_CORNERS void Draw3DCorner(); #else GC setBevelGC(); void Draw3DBevel(); #endif /* djhjr - 4/25/96 */ void PaintTitleHighlight(); /* djhjr - 4/2/98 */ int ComputeHighlightWindowWidth(); /* djhjr - 5/17/98 */ extern Image *SetPixmapsPixmap(); /* djhjr - 5/23/98 */ #ifndef NO_XPM_SUPPORT extern int SetPixmapsBackground(); #endif extern int HotX, HotY; #endif /* _UTIL_ */ vtwm-5.4.7/events.c0100664000015300001300000032712410237645271013003 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: events.c,v 1.182 91/07/17 13:59:14 dave Exp $ * * twm event handling * * 17-Nov-87 Thomas E. LaStrange File created * ***********************************************************************/ #include #include #include "twm.h" #include #include "add_window.h" #include "menus.h" #include "events.h" #include "resize.h" #include "parse.h" #include "gram.h" #include "util.h" #include "screen.h" #include "iconmgr.h" #include "version.h" #include "desktop.h" /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #include "sound.h" #endif /* Submitted by Takeharu Kato */ #ifdef NEED_SELECT_H #include /* RAISEDELAY */ #else #include /* RAISEDELAY */ #include /* RAISEDELAY */ #include #endif extern void IconDown(); /* djhjr - 4/26/99 */ extern void AppletDown(); static void do_menu (); void RedoIconName(); extern int iconifybox_width, iconifybox_height; extern unsigned int mods_used; extern int menuFromFrameOrWindowOrTitlebar; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT extern int createSoundFromFunction; extern int destroySoundFromFunction; #endif #define MAX_X_EVENT 256 event_proc EventHandler[MAX_X_EVENT]; /* event handler jump table */ char *Action; int Context = C_NO_CONTEXT; /* current button press context */ TwmWindow *ButtonWindow; /* button press window structure */ XEvent ButtonEvent; /* button press event */ XEvent Event; /* the current event */ TwmWindow *Tmp_win; /* the current twm window */ /* Used in HandleEnterNotify to remove border highlight from a window * that has not recieved a LeaveNotify event because of a pointer grab */ TwmWindow *UnHighLight_win = NULL; Window DragWindow; /* variables used in moving windows */ int origDragX; int origDragY; int DragX; int DragY; int DragWidth; int DragHeight; int CurrentDragX; int CurrentDragY; /* Vars to tell if the resize has moved. */ extern int ResizeOrigX; extern int ResizeOrigY; static int enter_flag; static int ColortableThrashing; static TwmWindow *enter_win, *raise_win; ScreenInfo *FindScreenInfo(); int ButtonPressed = -1; int Cancel = FALSE; int GlobalFirstTime = True; int GlobalMenuButton = False; void HandleCreateNotify(); void HandleShapeNotify (); extern int ShapeEventBase, ShapeErrorBase; void AutoRaiseWindow (tmp) TwmWindow *tmp; { XRaiseWindow (dpy, tmp->frame); XRaiseWindow (dpy, tmp->VirtualDesktopDisplayWindow); RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); XSync (dpy, 0); enter_win = NULL; enter_flag = TRUE; raise_win = tmp; } void SetRaiseWindow (tmp) TwmWindow *tmp; { enter_flag = TRUE; enter_win = NULL; raise_win = tmp; XSync (dpy, 0); } /*********************************************************************** * * Procedure: * InitEvents - initialize the event jump table * *********************************************************************** */ void InitEvents() { int i; ResizeWindow = 0; DragWindow = 0; enter_flag = FALSE; enter_win = raise_win = NULL; for (i = 0; i < MAX_X_EVENT; i++) EventHandler[i] = HandleUnknown; EventHandler[Expose] = HandleExpose; EventHandler[CreateNotify] = HandleCreateNotify; EventHandler[DestroyNotify] = HandleDestroyNotify; EventHandler[MapRequest] = HandleMapRequest; EventHandler[MapNotify] = HandleMapNotify; EventHandler[UnmapNotify] = HandleUnmapNotify; #if 0 /* functionality moved to menus.c:ExecuteFunction() - djhjr - 11/7/03 */ EventHandler[MotionNotify] = HandleMotionNotify; #endif EventHandler[ButtonRelease] = HandleButtonRelease; EventHandler[ButtonPress] = HandleButtonPress; EventHandler[EnterNotify] = HandleEnterNotify; EventHandler[LeaveNotify] = HandleLeaveNotify; EventHandler[ConfigureRequest] = HandleConfigureRequest; EventHandler[ClientMessage] = HandleClientMessage; EventHandler[PropertyNotify] = HandlePropertyNotify; EventHandler[KeyPress] = HandleKeyPress; EventHandler[ColormapNotify] = HandleColormapNotify; EventHandler[VisibilityNotify] = HandleVisibilityNotify; if (HasShape) EventHandler[ShapeEventBase+ShapeNotify] = HandleShapeNotify; } Time lastTimestamp = CurrentTime; /* until Xlib does this for us */ Bool StashEventTime (ev) register XEvent *ev; { switch (ev->type) { case KeyPress: case KeyRelease: lastTimestamp = ev->xkey.time; return True; case ButtonPress: case ButtonRelease: lastTimestamp = ev->xbutton.time; return True; case MotionNotify: lastTimestamp = ev->xmotion.time; return True; case EnterNotify: case LeaveNotify: lastTimestamp = ev->xcrossing.time; return True; case PropertyNotify: lastTimestamp = ev->xproperty.time; return True; case SelectionClear: lastTimestamp = ev->xselectionclear.time; return True; case SelectionRequest: lastTimestamp = ev->xselectionrequest.time; return True; case SelectionNotify: lastTimestamp = ev->xselection.time; return True; } return False; } /* * WindowOfEvent - return the window about which this event is concerned; this * window may not be the same as XEvent.xany.window (the first window listed * in the structure). */ Window WindowOfEvent (e) XEvent *e; { /* * Each window subfield is marked with whether or not it is the same as * XEvent.xany.window or is different (which is the case for some of the * notify events). */ switch (e->type) { case KeyPress: case KeyRelease: return e->xkey.window; /* same */ case ButtonPress: case ButtonRelease: return e->xbutton.window; /* same */ case MotionNotify: return e->xmotion.window; /* same */ case EnterNotify: case LeaveNotify: return e->xcrossing.window; /* same */ case FocusIn: case FocusOut: return e->xfocus.window; /* same */ case KeymapNotify: return e->xkeymap.window; /* same */ case Expose: return e->xexpose.window; /* same */ case GraphicsExpose: return e->xgraphicsexpose.drawable; /* same */ case NoExpose: return e->xnoexpose.drawable; /* same */ case VisibilityNotify: return e->xvisibility.window; /* same */ case CreateNotify: return e->xcreatewindow.window; /* DIFF */ case DestroyNotify: return e->xdestroywindow.window; /* DIFF */ case UnmapNotify: return e->xunmap.window; /* DIFF */ case MapNotify: return e->xmap.window; /* DIFF */ case MapRequest: return e->xmaprequest.window; /* DIFF */ case ReparentNotify: return e->xreparent.window; /* DIFF */ case ConfigureNotify: return e->xconfigure.window; /* DIFF */ case ConfigureRequest: return e->xconfigurerequest.window; /* DIFF */ case GravityNotify: return e->xgravity.window; /* DIFF */ case ResizeRequest: return e->xresizerequest.window; /* same */ case CirculateNotify: return e->xcirculate.window; /* DIFF */ case CirculateRequest: return e->xcirculaterequest.window; /* DIFF */ case PropertyNotify: return e->xproperty.window; /* same */ case SelectionClear: return e->xselectionclear.window; /* same */ case SelectionRequest: return e->xselectionrequest.requestor; /* DIFF */ case SelectionNotify: return e->xselection.requestor; /* same */ case ColormapNotify: return e->xcolormap.window; /* same */ case ClientMessage: return e->xclient.window; /* same */ case MappingNotify: return None; } return None; } /*********************************************************************** * * Procedure: * DispatchEvent2 - * handle a single X event stored in global var Event * this routine for is for a call during an f.move * **********************************************************************/ /* * Merged into DispatchEvent() * djhjr - 10/6/02 */ #if 0 Bool DispatchEvent2 () { Window w = Event.xany.window; StashEventTime (&Event); if (XFindContext (dpy, w, TwmContext, (caddr_t *) &Tmp_win) == XCNOENT) Tmp_win = NULL; if (XFindContext (dpy, w, ScreenContext, (caddr_t *)&Scr) == XCNOENT) { Scr = FindScreenInfo (WindowOfEvent (&Event)); } if (!Scr) return False; if (menuFromFrameOrWindowOrTitlebar && Event.type == Expose) HandleExpose(); if (!menuFromFrameOrWindowOrTitlebar && Event.type>= 0 && Event.type < MAX_X_EVENT) { (*EventHandler[Event.type])(); } return True; } #endif /*********************************************************************** * * Procedure: * DispatchEvent - handle a single X event stored in global var Event * *********************************************************************** */ Bool DispatchEvent () { Window w = Event.xany.window; StashEventTime (&Event); if (XFindContext (dpy, w, TwmContext, (caddr_t *) &Tmp_win) == XCNOENT) Tmp_win = NULL; if (XFindContext (dpy, w, ScreenContext, (caddr_t *)&Scr) == XCNOENT) Scr = FindScreenInfo (WindowOfEvent (&Event)); if (!Scr) return False; if (MoveFunction != F_NOFUNCTION && menuFromFrameOrWindowOrTitlebar) { if (Event.type == Expose) HandleExpose(); } else if (Event.type >= 0 && Event.type < MAX_X_EVENT) (*EventHandler[Event.type])(); return True; } /*********************************************************************** * * Procedure: * HandleEvents - handle X events * *********************************************************************** */ void HandleEvents() { while (TRUE) { if (enter_flag && !QLength(dpy)) { if (enter_win && enter_win != raise_win) { AutoRaiseWindow (enter_win); /* sets enter_flag T */ } else { enter_flag = FALSE; } } if (ColortableThrashing && !QLength(dpy) && Scr) { InstallWindowColormaps(ColormapNotify, (TwmWindow *) NULL); } WindowMoved = FALSE; XNextEvent(dpy, &Event); (void) DispatchEvent (); } } /*********************************************************************** * * Procedure: * HandleColormapNotify - colormap notify event handler * * This procedure handles both a client changing its own colormap, and * a client explicitly installing its colormap itself (only the window * manager should do that, so we must set it correctly). * *********************************************************************** */ void HandleColormapNotify() { XColormapEvent *cevent = (XColormapEvent *) &Event; ColormapWindow *cwin, **cwins; TwmColormap *cmap; int lost, won, n, number_cwins; extern TwmColormap *CreateTwmColormap(); if (XFindContext(dpy, cevent->window, ColormapContext, (caddr_t *)&cwin) == XCNOENT) return; cmap = cwin->colormap; if (cevent->new) { if (XFindContext(dpy, cevent->colormap, ColormapContext, (caddr_t *)&cwin->colormap) == XCNOENT) cwin->colormap = CreateTwmColormap(cevent->colormap); else cwin->colormap->refcnt++; cmap->refcnt--; if (cevent->state == ColormapUninstalled) cmap->state &= ~CM_INSTALLED; else cmap->state |= CM_INSTALLED; if (cmap->state & CM_INSTALLABLE) InstallWindowColormaps(ColormapNotify, (TwmWindow *) NULL); if (cmap->refcnt == 0) { XDeleteContext(dpy, cmap->c, ColormapContext); free((char *) cmap); } return; } if (cevent->state == ColormapUninstalled && (cmap->state & CM_INSTALLABLE)) { if (!(cmap->state & CM_INSTALLED)) return; cmap->state &= ~CM_INSTALLED; if (!ColortableThrashing) { ColortableThrashing = TRUE; XSync(dpy, 0); } if (cevent->serial >= Scr->cmapInfo.first_req) { number_cwins = Scr->cmapInfo.cmaps->number_cwins; /* * Find out which colortables collided. */ cwins = Scr->cmapInfo.cmaps->cwins; for (lost = won = -1, n = 0; (lost == -1 || won == -1) && n < number_cwins; n++) { if (lost == -1 && cwins[n] == cwin) { lost = n; /* This is the window which lost its colormap */ continue; } if (won == -1 && cwins[n]->colormap->install_req == cevent->serial) { won = n; /* This is the window whose colormap caused */ continue; /* the de-install of the previous colormap */ } } /* ** Cases are: ** Both the request and the window were found: ** One of the installs made honoring the WM_COLORMAP ** property caused another of the colormaps to be ** de-installed, just mark the scoreboard. ** ** Only the request was found: ** One of the installs made honoring the WM_COLORMAP ** property caused a window not in the WM_COLORMAP ** list to lose its map. This happens when the map ** it is losing is one which is trying to be installed, ** but is getting getting de-installed by another map ** in this case, we'll get a scoreable event later, ** this one is meaningless. ** ** Neither the request nor the window was found: ** Somebody called installcolormap, but it doesn't ** affect the WM_COLORMAP windows. This case will ** probably never occur. ** ** Only the window was found: ** One of the WM_COLORMAP windows lost its colormap ** but it wasn't one of the requests known. This is ** probably because someone did an "InstallColormap". ** The colormap policy is "enforced" by re-installing ** the colormaps which are believed to be correct. */ if (won != -1) if (lost != -1) { /* lower diagonal index calculation */ if (lost > won) n = lost*(lost-1)/2 + won; else n = won*(won-1)/2 + lost; Scr->cmapInfo.cmaps->scoreboard[n] = 1; } else { /* ** One of the cwin installs caused one of the cwin ** colormaps to be de-installed, so I'm sure to get an ** UninstallNotify for the cwin I know about later. ** I haven't got it yet, or the test of CM_INSTALLED ** above would have failed. Turning the CM_INSTALLED ** bit back on makes sure we get back here to score ** the collision. */ cmap->state |= CM_INSTALLED; } else if (lost != -1) InstallWindowColormaps(ColormapNotify, (TwmWindow *) NULL); } } else if (cevent->state == ColormapUninstalled) cmap->state &= ~CM_INSTALLED; else if (cevent->state == ColormapInstalled) cmap->state |= CM_INSTALLED; } /*********************************************************************** * * Procedure: * HandleVisibilityNotify - visibility notify event handler * * This routine keeps track of visibility events so that colormap * installation can keep the maximum number of useful colormaps * installed at one time. * *********************************************************************** */ void HandleVisibilityNotify() { XVisibilityEvent *vevent = (XVisibilityEvent *) &Event; ColormapWindow *cwin; TwmColormap *cmap; if (XFindContext(dpy, vevent->window, ColormapContext, (caddr_t *)&cwin) == XCNOENT) return; /* * when Saber complains about retreiving an from an * just type "touch vevent->state" and "cont" */ cmap = cwin->colormap; if ((cmap->state & CM_INSTALLABLE) && vevent->state != cwin->visibility && (vevent->state == VisibilityFullyObscured || cwin->visibility == VisibilityFullyObscured) && cmap->w == cwin->w) { cwin->visibility = vevent->state; InstallWindowColormaps(VisibilityNotify, (TwmWindow *) NULL); } else cwin->visibility = vevent->state; } /*********************************************************************** * * Procedure: * HandleKeyPress - key press event handler * *********************************************************************** */ int MovedFromKeyPress = False; void HandleKeyPress() { FuncKey *key; int len; unsigned int modifier; TwmWindow *tmp_win; /* djhjr - 6/5/98 */ int have_ScrFocus = 0; #if 0 if (InfoLines) { XUnmapWindow(dpy, Scr->InfoWindow); RFB july 28 1993 this code was wrong anyway because InfoLines should have been set to 0. Simply remove it... } #endif Context = C_NO_CONTEXT; if (Event.xany.window == Scr->Root) Context = C_ROOT; if ((Event.xany.window == Scr->VirtualDesktopDisplay) || (Event.xany.window == Scr->VirtualDesktopDisplayOuter)) { if (Event.xkey.subwindow && (XFindContext(dpy, Event.xkey.subwindow, VirtualContext, (caddr_t *) &tmp_win) != XCNOENT)) { Tmp_win = tmp_win; Context = C_VIRTUAL_WIN; } else { Context = C_VIRTUAL; Tmp_win = Scr->VirtualDesktopDisplayTwin; } } if (Tmp_win) { if (Event.xany.window == Tmp_win->title_w) Context = C_TITLE; if (Event.xany.window == Tmp_win->w) Context = C_WINDOW; if (Event.xany.window == Tmp_win->icon_w) Context = C_ICON; if (Event.xany.window == Tmp_win->frame) Context = C_FRAME; if (Tmp_win->list && Event.xany.window == Tmp_win->list->w) Context = C_ICONMGR; if (Tmp_win->list && Event.xany.window == Tmp_win->list->icon) Context = C_ICONMGR; } /* * Now HERE'S a fine little kludge: Make an icon manager's frame or * the virtual desktop's frame or a door and it's frame context- * sensitive to key bindings, and make the frames of windows without * titlebars forward key events. * * djhjr - 6/5/98 7/2/98 7/14/98 */ if (Scr->Focus && (Context == C_NO_CONTEXT || Context == C_ROOT)) { /* ugly, but it works! see also iconmgr.c:RemoveIconManager() */ if (Scr->Focus->iconmgr) { #ifdef NEVER /* warps to icon managers uniquely handled in menus.c:WarpToWindow() */ if (!Scr->Focus->iconmgrp->active) { ActiveIconManager(Scr->Focus->iconmgrp->last); Tmp_win = Scr->Focus; } else Tmp_win = Scr->Focus->iconmgrp->active->twm; #endif have_ScrFocus = 1; } else if (Scr->VirtualDesktopDisplayTwin == Scr->Focus) { Tmp_win = Scr->Focus; Context = C_VIRTUAL; } /* XFindContext() doesn't seem to work here!?! */ else if (Scr->Doors) { TwmDoor *door_win; for (door_win = Scr->Doors; door_win != NULL; door_win = door_win->next) if (door_win->twin == Scr->Focus) { Tmp_win = Scr->Focus; Context = C_DOOR; break; } } else if (Scr->Focus->frame && !Scr->Focus->title_w) { Tmp_win = Scr->Focus; Event.xany.window = Tmp_win->frame; Context = C_FRAME; } } modifier = (Event.xkey.state & mods_used); for (key = Scr->FuncKeyRoot.next; key != NULL; key = key->next) { if (key->keycode == Event.xkey.keycode && key->mods == modifier && (key->cont == Context || key->cont == C_NAME)) { /* it doesn't make sense to resize from a key press? */ if (key->func == F_RESIZE) return; /* * Exceptions for warps from icon managers (see the above kludge) * * djhjr - 6/5/98 7/2/98 7/14/98 */ switch (key->func) { case F_WARP: if (have_ScrFocus && Context == C_ROOT) return; break; case F_WARPCLASSNEXT: case F_WARPCLASSPREV: case F_WARPRING: if (Context == C_ICONMGR) Scr->Focus = Tmp_win = Tmp_win->list->iconmgr->twm_win; if (have_ScrFocus) { Tmp_win = Scr->Focus; Context = C_ICONMGR; } break; /* case F_WARPTO:*/ /* case F_WARPTOICONMGR:*/ /* case F_WARPTONEWEST:*/ default: break; } /* special case for moves */ if (key->func == F_MOVE || key->func == F_FORCEMOVE) MovedFromKeyPress = True; if (key->cont != C_NAME) { ExecuteFunction(key->func, key->action, Event.xany.window, Tmp_win, &Event, Context, FALSE); /* * Added this 'if ()' for deferred keyboard events (see also menus.c) * Submitted by Michel Eyckmans */ if (!(Context = C_ROOT && RootFunction != F_NOFUNCTION)) XUngrabPointer(dpy, CurrentTime); return; } else { int matched = FALSE; len = strlen(key->win_name); /* try and match the name first */ for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL; Tmp_win = Tmp_win->next) { if (!strncmp(key->win_name, Tmp_win->name, len)) { matched = TRUE; ExecuteFunction(key->func, key->action, Tmp_win->frame, Tmp_win, &Event, C_FRAME, FALSE); XUngrabPointer(dpy, CurrentTime); } } /* now try the res_name */ if (!matched) for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL; Tmp_win = Tmp_win->next) { if (!strncmp(key->win_name, Tmp_win->class.res_name, len)) { matched = TRUE; ExecuteFunction(key->func, key->action, Tmp_win->frame, Tmp_win, &Event, C_FRAME, FALSE); XUngrabPointer(dpy, CurrentTime); } } /* now try the res_class */ if (!matched) for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL; Tmp_win = Tmp_win->next) { if (!strncmp(key->win_name, Tmp_win->class.res_class, len)) { matched = TRUE; ExecuteFunction(key->func, key->action, Tmp_win->frame, Tmp_win, &Event, C_FRAME, FALSE); XUngrabPointer(dpy, CurrentTime); } } if (matched) return; } } } /* * If we get here, no function was bound to the key. Send it * to the client if it was in a window we know about. */ if (Tmp_win) { if (Event.xany.window == Tmp_win->icon_w || Event.xany.window == Tmp_win->frame || Event.xany.window == Tmp_win->title_w || (Tmp_win->list && (Event.xany.window == Tmp_win->list->w))) { Event.xkey.window = Tmp_win->w; XSendEvent(dpy, Tmp_win->w, False, KeyPressMask, &Event); } } } static void free_window_names (tmp, nukefull, nukename, nukeicon) TwmWindow *tmp; Bool nukefull, nukename, nukeicon; { /* the other two "free()"s were "XFree()"s - djhjr - 9/14/03 */ /* * XXX - are we sure that nobody ever sets these to another constant (check * twm windows)? */ if (tmp->name == tmp->full_name) nukefull = False; /* this test is never true anymore... - djhjr - 2/20/99 if (tmp->name == tmp->icon_name) nukename = False; */ #define isokay(v) ((v) && (v) != NoName) if (nukefull && isokay(tmp->full_name)) free (tmp->full_name); if (nukename && isokay(tmp->name)) free (tmp->name); /* ...because the icon name is now alloc()'d locally - djhjr - 2/20/99 if (nukeicon && isokay(tmp->icon_name)) XFree (tmp->icon_name); */ if (nukeicon && tmp->icon_name) free(tmp->icon_name); #undef isokay return; } void free_cwins (tmp) TwmWindow *tmp; { int i; TwmColormap *cmap; if (tmp->cmaps.number_cwins) { for (i = 0; i < tmp->cmaps.number_cwins; i++) { if (--tmp->cmaps.cwins[i]->refcnt == 0) { cmap = tmp->cmaps.cwins[i]->colormap; if (--cmap->refcnt == 0) { XDeleteContext(dpy, cmap->c, ColormapContext); free((char *) cmap); } XDeleteContext(dpy, tmp->cmaps.cwins[i]->w, ColormapContext); free((char *) tmp->cmaps.cwins[i]); } } free((char *) tmp->cmaps.cwins); if (tmp->cmaps.number_cwins > 1) { free(tmp->cmaps.scoreboard); tmp->cmaps.scoreboard = NULL; } tmp->cmaps.number_cwins = 0; } } /*********************************************************************** * * Procedure: * HandlePropertyNotify - property notify event handler * *********************************************************************** */ void HandlePropertyNotify() { char *prop = NULL; #ifdef NO_I18N_SUPPORT Atom actual = None; int actual_format; unsigned long nitems, bytesafter; #endif unsigned long valuemask; /* mask for create windows */ XSetWindowAttributes attributes; /* attributes for create windows */ Pixmap pm; /* watch for standard colormap changes */ if (Event.xproperty.window == Scr->Root) { XStandardColormap *maps = NULL; int nmaps; switch (Event.xproperty.state) { case PropertyNewValue: if (XGetRGBColormaps (dpy, Scr->Root, &maps, &nmaps, Event.xproperty.atom)) { /* if got one, then replace any existing entry */ InsertRGBColormap (Event.xproperty.atom, maps, nmaps, True); } return; case PropertyDelete: RemoveRGBColormap (Event.xproperty.atom); return; } } if (!Tmp_win) return; /* unknown window */ #define MAX_NAME_LEN 200L /* truncate to this many */ #define MAX_ICON_NAME_LEN 200L /* ditto */ switch (Event.xproperty.atom) { case XA_WM_NAME: /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!I18N_FetchName(dpy, Tmp_win->w, &prop)) #else if (XGetWindowProperty (dpy, Tmp_win->w, Event.xproperty.atom, 0L, MAX_NAME_LEN, False, XA_STRING, &actual, &actual_format, &nitems, &bytesafter, (unsigned char **) &prop) != Success || actual == None) #endif return; free_window_names (Tmp_win, True, True, False); Tmp_win->full_name = (prop) ? strdup(prop) : NoName; Tmp_win->name = (prop) ? strdup(prop) : NoName; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (prop) free(prop); #else if (prop) XFree(prop); #endif /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT Tmp_win->name_width = MyFont_TextWidth (&Scr->TitleBarFont, #else Tmp_win->name_width = XTextWidth (Scr->TitleBarFont.font, #endif Tmp_win->name, strlen (Tmp_win->name)); SetupWindow (Tmp_win, Tmp_win->frame_x, Tmp_win->frame_y, Tmp_win->frame_width, Tmp_win->frame_height, -1); if (Tmp_win->title_w) XClearArea(dpy, Tmp_win->title_w, 0,0,0,0, True); /* * if the icon name is NoName, set the name of the icon to be * the same as the window */ /* see that the icon name is it's own memory - djhjr - 2/20/99 if (Tmp_win->icon_name == NoName) { Tmp_win->icon_name = Tmp_win->name; */ if (!strcmp(Tmp_win->icon_name, NoName)) { free(Tmp_win->icon_name); Tmp_win->icon_name = strdup(Tmp_win->name); RedoIconName(); } break; case XA_WM_ICON_NAME: /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!I18N_GetIconName(dpy, Tmp_win->w, &prop)) #else if (XGetWindowProperty (dpy, Tmp_win->w, Event.xproperty.atom, 0, MAX_ICON_NAME_LEN, False, XA_STRING, &actual, &actual_format, &nitems, &bytesafter, (unsigned char **) &prop) != Success || actual == None) #endif return; /* see that the icon name is it's own memory - djhjr - 2/20/99 if (!prop) prop = NoName; free_window_names (Tmp_win, False, False, True); Tmp_win->icon_name = prop; */ free_window_names (Tmp_win, False, False, True); Tmp_win->icon_name = (prop) ? strdup(prop) : NoName; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (prop) free(prop); #else if (prop) XFree(prop); #endif RedoIconName(); break; case XA_WM_HINTS: if (Tmp_win->wmhints) XFree ((char *) Tmp_win->wmhints); Tmp_win->wmhints = XGetWMHints(dpy, Event.xany.window); if (Tmp_win->wmhints && (Tmp_win->wmhints->flags & WindowGroupHint)) Tmp_win->group = Tmp_win->wmhints->window_group; if (!Tmp_win->forced && Tmp_win->wmhints && Tmp_win->wmhints->flags & IconWindowHint) { if (Tmp_win->icon_w) { int icon_x, icon_y; /* * There's already an icon window. * Try to find out where it is; if we succeed, move the new * window to where the old one is. */ if (XGetGeometry (dpy, Tmp_win->icon_w, &JunkRoot, &icon_x, &icon_y, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth)) { /* * Move the new icon window to where the old one was. */ XMoveWindow(dpy, Tmp_win->wmhints->icon_window, icon_x, icon_y); } /* * If the window is iconic, map the new icon window. */ if (Tmp_win->icon) XMapWindow(dpy, Tmp_win->wmhints->icon_window); /* * Now, if the old window isn't ours, unmap it, otherwise * just get rid of it completely. */ if (Tmp_win->icon_not_ours) { if (Tmp_win->icon_w != Tmp_win->wmhints->icon_window) XUnmapWindow(dpy, Tmp_win->icon_w); } else XDestroyWindow(dpy, Tmp_win->icon_w); /* * The new icon window isn't our window, so note that fact * so that we don't treat it as ours. */ Tmp_win->icon_not_ours = TRUE; /* * Now make the new window the icon window for this window, * and set it up to work as such (select for key presses * and button presses/releases, set up the contexts for it, * and define the cursor for it). */ Tmp_win->icon_w = Tmp_win->wmhints->icon_window; XSelectInput (dpy, Tmp_win->icon_w, KeyPressMask | ButtonPressMask | ButtonReleaseMask); XSaveContext(dpy, Tmp_win->icon_w, TwmContext, (caddr_t)Tmp_win); XSaveContext(dpy, Tmp_win->icon_w, ScreenContext, (caddr_t)Scr); XDefineCursor(dpy, Tmp_win->icon_w, Scr->IconCursor); } } if (Tmp_win->icon_w && !Tmp_win->forced && Tmp_win->wmhints && (Tmp_win->wmhints->flags & IconPixmapHint)) { if (!XGetGeometry (dpy, Tmp_win->wmhints->icon_pixmap, &JunkRoot, &JunkX, &JunkY, (unsigned int *)&Tmp_win->icon_width, (unsigned int *)&Tmp_win->icon_height, &JunkBW, &JunkDepth)) { return; } pm = XCreatePixmap (dpy, Scr->Root, Tmp_win->icon_width, Tmp_win->icon_height, Scr->d_depth); if (!pm) return; FB(Tmp_win->iconc.fore, Tmp_win->iconc.back); /* * adapted from CTWM-3.5 - djhjr - 9/4/98 */ #ifdef ORIGINAL_PIXMAPS XCopyPlane(dpy, Tmp_win->wmhints->icon_pixmap, pm, Scr->NormalGC, 0,0, Tmp_win->icon_width, Tmp_win->icon_height, 0, 0, 1 ); #else if (JunkDepth == Scr->d_depth) XCopyArea (dpy, Tmp_win->wmhints->icon_pixmap, pm, Scr->NormalGC, 0,0, Tmp_win->icon_width, Tmp_win->icon_height, 0, 0); else XCopyPlane(dpy, Tmp_win->wmhints->icon_pixmap, pm, Scr->NormalGC, 0,0, Tmp_win->icon_width, Tmp_win->icon_height, 0, 0, 1 ); #endif valuemask = CWBackPixmap; attributes.background_pixmap = pm; if (Tmp_win->icon_bm_w) XDestroyWindow(dpy, Tmp_win->icon_bm_w); Tmp_win->icon_bm_w = XCreateWindow (dpy, Tmp_win->icon_w, 0, 0, (unsigned int) Tmp_win->icon_width, (unsigned int) Tmp_win->icon_height, (unsigned int) 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); /* * adapted from CTWM-3.5 - djhjr - 9/4/98 */ #ifndef ORIGINAL_PIXMAPS if (! (Tmp_win->wmhints->flags & IconMaskHint)) { XRectangle rect; rect.x = rect.y = 0; rect.width = Tmp_win->icon_width; rect.height = Tmp_win->icon_height; XShapeCombineRectangles (dpy, Tmp_win->icon_w, ShapeBounding, 0, 0, &rect, 1, ShapeUnion, 0); } #endif XFreePixmap (dpy, pm); RedoIconName(); } /* * adapted from CTWM-3.5 - djhjr - 9/4/98 */ #ifndef ORIGINAL_PIXMAPS if (Tmp_win->icon_w && !Tmp_win->forced && Tmp_win->wmhints && (Tmp_win->wmhints->flags & IconMaskHint)) { GC gc; if (!XGetGeometry (dpy, Tmp_win->wmhints->icon_mask, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth)) { return; } if (JunkDepth != 1) return; pm = XCreatePixmap (dpy, Scr->Root, JunkWidth, JunkHeight, 1); if (!pm) return; gc = XCreateGC (dpy, pm, 0, NULL); if (!gc) return; XCopyArea (dpy, Tmp_win->wmhints->icon_mask, pm, gc, 0, 0, JunkWidth, JunkHeight, 0, 0); XFreeGC (dpy, gc); XFreePixmap (dpy, pm); RedoIconName(); } #endif break; case XA_WM_NORMAL_HINTS: GetWindowSizeHints (Tmp_win); break; default: if (Event.xproperty.atom == _XA_WM_COLORMAP_WINDOWS) { FetchWmColormapWindows (Tmp_win); /* frees old data */ break; } else if (Event.xproperty.atom == _XA_WM_PROTOCOLS) { FetchWmProtocols (Tmp_win); break; } break; } } /*********************************************************************** * * Procedure: * RedoIconName - procedure to re-position the icon window and name * *********************************************************************** */ void RedoIconName() { int x, y; if (Tmp_win->list) { /* let the expose event cause the repaint */ XClearArea(dpy, Tmp_win->list->w, 0,0,0,0, True); if (Scr->SortIconMgr) SortIconManager(Tmp_win->list->iconmgr); } if (Scr->Virtual && Scr->NamesInVirtualDesktop && Tmp_win->VirtualDesktopDisplayWindow) XClearArea(dpy, Tmp_win->VirtualDesktopDisplayWindow, 0, 0, 0, 0, True); if ( ! Tmp_win->icon_w ) return; if (Tmp_win->icon_not_ours) return; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT Tmp_win->icon_w_width = MyFont_TextWidth(&Scr->IconFont, #else Tmp_win->icon_w_width = XTextWidth(Scr->IconFont.font, #endif Tmp_win->icon_name, strlen(Tmp_win->icon_name)); /* djhjr - 6/11/96 Tmp_win->icon_w_width += 6; if (Tmp_win->icon_w_width < Tmp_win->icon_width) { Tmp_win->icon_x = (Tmp_win->icon_width - Tmp_win->icon_w_width)/2; Tmp_win->icon_x += 3; Tmp_win->icon_w_width = Tmp_win->icon_width; } else { Tmp_win->icon_x = 3; } */ Tmp_win->icon_w_width += 8; if (Tmp_win->icon_w_width < Tmp_win->icon_width + 8) { Tmp_win->icon_x = (((Tmp_win->icon_width + 8) - Tmp_win->icon_w_width)/2) + 4; Tmp_win->icon_w_width = Tmp_win->icon_width + 8; } else Tmp_win->icon_x = 4; if (Tmp_win->icon_w_width == Tmp_win->icon_width) x = 0; else x = (Tmp_win->icon_w_width - Tmp_win->icon_width)/2; /* djhjr - 6/11/96 y = 0; */ y = 4; /* djhjr - 6/11/96 Tmp_win->icon_w_height = Tmp_win->icon_height + Scr->IconFont.height + 4; Tmp_win->icon_y = Tmp_win->icon_height + Scr->IconFont.height; */ Tmp_win->icon_w_height = Tmp_win->icon_height + Scr->IconFont.height + 8; Tmp_win->icon_y = Tmp_win->icon_height + Scr->IconFont.height + 2; XResizeWindow(dpy, Tmp_win->icon_w, Tmp_win->icon_w_width, Tmp_win->icon_w_height); if (Tmp_win->icon_bm_w) { XMoveWindow(dpy, Tmp_win->icon_bm_w, x, y); XMapWindow(dpy, Tmp_win->icon_bm_w); } if (Tmp_win->icon) { XClearArea(dpy, Tmp_win->icon_w, 0, 0, 0, 0, True); } } /* * RedoDoorName - Redraw the contents of a door's window * * djhjr - 2/10/99 2/28/99 */ void RedoDoorName(twin, door) TwmWindow *twin; TwmDoor *door; { TwmWindow *tmp_win; /* font was font.font->fid - djhjr - 9/14/03 */ FBF(door->colors.fore, door->colors.back, Scr->DoorFont); /* find it's twm window to get the current width, etc. */ /* * The TWM window is passed from Do*Resize(), * as it may be undeterminable in HandleExpose()!? * * djhjr - 2/28/99 * if (XFindContext(dpy, Event.xany.window, TwmContext, (caddr_t *)&tmp_win) != XCNOENT) */ if (twin) tmp_win = twin; else XFindContext(dpy, Event.xany.window, TwmContext, (caddr_t *)&tmp_win); if (tmp_win) { int tw, bw; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT tw = MyFont_TextWidth(&Scr->DoorFont, #else tw = XTextWidth(Scr->DoorFont.font, #endif door->name, strlen(door->name)); /* djhjr - 4/26/96 */ /* djhjr - 8/11/98 * was 'Scr->use3Dborders' - djhjr - 8/11/98 * bw = (Scr->BorderBevelWidth > 0) ? Scr->ThreeDBorderWidth : 0; */ bw = (Scr->BorderBevelWidth > 0) ? Scr->BorderWidth : 0; /* change the little internal one to fit the external */ XResizeWindow(dpy, door->w, tmp_win->frame_width, tmp_win->frame_height); /* draw the text in the right place */ /* And it IS the right place. ** If your font has its characters starting 20 pixels ** over to the right, it just looks wrong! ** For example grog-9 from ISC's X11R3 distribution. */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString(dpy, door->w, &Scr->DoorFont, #else XDrawString(dpy, door->w, #endif Scr->NormalGC, /* gets 'SIZE_VINDENT' out of here... djhjr - 5/14/96 (tmp_win->frame_width - tw)/2, tmp_win->frame_height - SIZE_VINDENT - (tmp_win->frame_height - Scr->DoorFont.height)/2, ** ...and NOW it's in the right place! */ (tmp_win->frame_width - tw - 2 * bw) / 2, (tmp_win->frame_height - tmp_win->title_height - Scr->DoorFont.height - 2 * bw) / 2 + /* djhjr - 9/14/03 Scr->DoorFont.font->ascent, */ Scr->DoorFont.ascent, door->name, strlen(door->name)); /* djhjr - 2/7/99 */ if (Scr->DoorBevelWidth > 0) Draw3DBorder(door->w, 0, 0, tmp_win->frame_width - (bw * 2), tmp_win->frame_height - (bw * 2), Scr->DoorBevelWidth, Scr->DoorC, off, False, False); } else { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString(dpy, door->w, &Scr->DoorFont, #else XDrawString(dpy, door->w, #endif Scr->NormalGC, SIZE_HINDENT/2, 0/*Scr->DoorFont.height*/, door->name, strlen(door->name)); } } /* * RedoListWindow - Redraw the contents of an icon manager's entry * * djhjr - 3/1/99 */ void RedoListWindow(twin) TwmWindow *twin; { /* djhjr - 4/19/96 * font was font.font->fid - djhjr - 9/14/03 * FBF(twin->list->fore, twin->list->back, Scr->IconManagerFont); * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, Event.xany.window, &Scr->IconManagerFont, #else XDrawString (dpy, Event.xany.window, #endif Scr->NormalGC, iconmgr_textx, Scr->IconManagerFont.y+4, twin->icon_name, strlen(twin->icon_name)); DrawIconManagerBorder(twin->list); */ /* made static - djhjr - 6/18/99 */ static int en = 0, dots = 0; /* djhjr - 3/29/98 */ int i, j, slen = strlen(twin->icon_name); char *a = NULL; /* djhjr - 10/2/01 */ if (!twin->list) return; /* * clip the title a couple of characters less than the width of the * icon window plus padding, and tack on ellipses - this is a little * different than the titlebar's... * * djhjr - 3/29/98 */ if (Scr->NoPrettyTitles == FALSE) /* for rader - djhjr - 2/9/99 */ { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT i = MyFont_TextWidth(&Scr->IconManagerFont, #else i = XTextWidth(Scr->IconManagerFont.font, #endif twin->icon_name, slen); /* DUH! - djhjr - 6/18/99 j = twin->list->width - iconmgr_textx - en; */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!en) en = MyFont_TextWidth(&Scr->IconManagerFont, "n", 1); if (!dots) dots = MyFont_TextWidth(&Scr->IconManagerFont, "...", 3); #else if (!en) en = XTextWidth(Scr->IconManagerFont.font, "n", 1); if (!dots) dots = XTextWidth(Scr->IconManagerFont.font, "...", 3); #endif j = twin->list->width - iconmgr_textx - dots; /* djhjr - 5/5/98 */ /* was 'Scr->use3Diconmanagers' - djhjr - 8/11/98 */ if (Scr->IconMgrBevelWidth > 0) j -= Scr->IconMgrBevelWidth; else j -= Scr->BorderWidth; /* djhjr - 6/18/99 if (2 * en >= j) */ if (en >= j) slen = 0; else if (i >= j) { for (i = slen; i >= 0; i--) /* djhjr - 6/18/99 if (XTextWidth(Scr->IconManagerFont.font, twin->icon_name, i) + 2 * en < j) */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (MyFont_TextWidth(&Scr->IconManagerFont, #else if (XTextWidth(Scr->IconManagerFont.font, #endif twin->icon_name, i) + en < j) { slen = i; break; } a = (char *)malloc(slen + 4); memcpy(a, twin->icon_name, slen); strcpy(a + slen, "..."); slen += 3; } } /* font was font.font->fid - djhjr - 9/14/03 */ FBF(twin->list->cp.fore, twin->list->cp.back, Scr->IconManagerFont); /* what's the point of this? - djhjr - 5/2/98 if (Scr->use3Diconmanagers && (Scr->Monochrome != COLOR)) * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, twin->list->w, &Scr->IconManagerFont, #else XDrawImageString (dpy, twin->list->w, #endif Scr->NormalGC, iconmgr_textx, * djhjr - 5/2/98 Scr->IconManagerFont.y+4, * (twin->list->height - Scr->IconManagerFont.height) / 2 + Scr->IconManagerFont.y, (a) ? a : twin->icon_name, slen); else */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, twin->list->w, &Scr->IconManagerFont, #else XDrawString (dpy, twin->list->w, #endif Scr->NormalGC, iconmgr_textx, /* djhjr - 5/2/98 Scr->IconManagerFont.y+4, */ (twin->list->height - Scr->IconManagerFont.height) / 2 + Scr->IconManagerFont.y, (a) ? a : twin->icon_name, slen); /* free the clipped title - djhjr - 3/29/98 */ if (a) free(a); DrawIconManagerBorder(twin->list, False); } /*********************************************************************** * * Procedure: * HandleClientMessage - client message event handler * *********************************************************************** */ void HandleClientMessage() { extern void RestartVtwm(); if (Event.xclient.message_type == _XA_WM_CHANGE_STATE) { if (Tmp_win != NULL) { if (Event.xclient.data.l[0] == IconicState && !Tmp_win->icon) { XEvent button; XQueryPointer( dpy, Scr->Root, &JunkRoot, &JunkChild, &(button.xmotion.x_root), &(button.xmotion.y_root), &JunkX, &JunkY, &JunkMask); ExecuteFunction(F_ICONIFY, NULLSTR, Event.xany.window, Tmp_win, &button, FRAME, FALSE); XUngrabPointer(dpy, CurrentTime); } } } /* djhjr - 7/31/98 */ else if (Event.xclient.message_type == _XA_TWM_RESTART) RestartVtwm(CurrentTime); } /*********************************************************************** * * Procedure: * HandleExpose - expose event handler * *********************************************************************** */ static void flush_expose(); void HandleExpose() { MenuRoot *tmp; TwmDoor *door = NULL; int j; if (XFindContext(dpy, Event.xany.window, MenuContext, (caddr_t *)&tmp) == 0) { PaintMenu(tmp, &Event); return; } if (XFindContext(dpy, Event.xany.window, DoorContext, (caddr_t *)&door) != XCNOENT) { /* see also resize.c - djhjr - 2/28/99 */ RedoDoorName(NULL, door); flush_expose(Event.xany.window); return; } if (Event.xexpose.count != 0) return; if (Event.xany.window == Scr->InfoWindow && InfoLines) { int i, k; int height; /* font was font.font->fid - djhjr - 9/14/03 */ FBF(Scr->DefaultC.fore, Scr->DefaultC.back, Scr->InfoFont); /* djhjr - 5/10/96 */ XGetGeometry (dpy, Scr->InfoWindow, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth); height = Scr->InfoFont.height+2; for (i = 0; i < InfoLines; i++) { /* djhjr - 5/10/96 */ j = strlen(Info[i]); /* djhjr - 4/29/98 */ k = 5; /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (!i && Scr->BorderBevelWidth > 0) k += Scr->InfoBevelWidth; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString(dpy, Scr->InfoWindow, &Scr->InfoFont, #else XDrawString(dpy, Scr->InfoWindow, #endif Scr->NormalGC, /* centers the lines... djhjr - 5/10/96 10, */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT (JunkWidth - MyFont_TextWidth(&Scr->InfoFont, Info[i], j)) / 2, #else (JunkWidth - XTextWidth(Scr->InfoFont.font, Info[i], j)) / 2, #endif /* 'k' was a hard-coded '5' - djhjr - 4/29/98 */ (i*height) + Scr->InfoFont.y + k, Info[i], j); } /* djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->InfoBevelWidth > 0) Draw3DBorder(Scr->InfoWindow, 0, 0, JunkWidth, JunkHeight, /* djhjr - 4/29/98 BW, Scr->DefaultC, off, False, False); */ Scr->InfoBevelWidth, Scr->DefaultC, off, False, False); flush_expose (Event.xany.window); } /* see that the desktop's bevel gets redrawn - djhjr - 2/10/99 */ else if (Event.xany.window == Scr->VirtualDesktopDisplay) { Draw3DBorder(Scr->VirtualDesktopDisplayOuter, 0, 0, Scr->VirtualDesktopMaxWidth + (Scr->VirtualDesktopBevelWidth * 2), Scr->VirtualDesktopMaxHeight + (Scr->VirtualDesktopBevelWidth * 2), Scr->VirtualDesktopBevelWidth, Scr->VirtualC, off, False, False); flush_expose (Event.xany.window); return; } else if (Tmp_win != NULL) { /* djhjr - 4/20/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->BorderBevelWidth > 0 && (Event.xany.window == Tmp_win->frame)) { PaintBorders (Tmp_win, ((Tmp_win == Scr->Focus) ? True : False)); flush_expose (Event.xany.window); return; } else if (Event.xany.window == Tmp_win->title_w) { /* djhjr - 4/20/96 * font was font.font->fid - djhjr - 9/14/03 * FBF(Tmp_win->title.fore, Tmp_win->title.back, Scr->TitleBarFont); * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, Tmp_win->title_w, &Scr->TitleBarFont, #else XDrawString (dpy, Tmp_win->title_w, #endif Scr->NormalGC, Scr->TBInfo.titlex, Scr->TitleBarFont.y, Tmp_win->name, strlen(Tmp_win->name)); */ PaintTitle (Tmp_win); /* djhjr - 10/25/02 */ PaintTitleHighlight(Tmp_win, (Tmp_win == Scr->Focus) ? on : off); flush_expose (Event.xany.window); return; } else if (Event.xany.window == Tmp_win->icon_w) { /* djhjr - 4/21/96 * font was font.font->fid - djhjr - 9/14/03 * FBF(Tmp_win->iconc.fore, Tmp_win->iconc.back, Scr->IconFont); * djhjr - 9/14/03 * #ifndef NO_I18N_SUPPORT MyFont_DrawString (dpy, Tmp_win->icon_w, &Scr->IconManagerFont, #else XDrawString (dpy, Tmp_win->icon_w, #endif Scr->NormalGC, Tmp_win->icon_x, Tmp_win->icon_y, Tmp_win->icon_name, strlen(Tmp_win->icon_name)); */ PaintIcon(Tmp_win); flush_expose (Event.xany.window); return; } else if (Tmp_win->titlebuttons) { int i; Window w = Event.xany.window; TBWindow *tbw; int nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; for (i = 0, tbw = Tmp_win->titlebuttons; i < nb; i++, tbw++) { if (w == tbw->window) { /* djhjr - 4/19/96 register TitleButton *tb = tbw->info; FB(Tmp_win->title.fore, Tmp_win->title.back); XCopyPlane (dpy, tb->bitmap, w, Scr->NormalGC, tb->srcx, tb->srcy, tb->width, tb->height, tb->dstx, tb->dsty, 1); */ /* djhjr - 11/17/97 8/10/98 */ /* added the test for window highlighting - djhjr - 3/14/98 */ /* collapsed two functions - djhjr - 8/10/98 */ if (Scr->ButtonColorIsFrame && Tmp_win->highlight) PaintTitleButton(Tmp_win, tbw, (Scr->Focus == Tmp_win) ? 2 : 1); else PaintTitleButton(Tmp_win, tbw, 0); flush_expose (w); return; } } } if (Tmp_win->list) { if (Event.xany.window == Tmp_win->list->w) { /* see also resize.c - djhjr - 3/1/99 */ RedoListWindow(Tmp_win); flush_expose (Event.xany.window); return; } if (Event.xany.window == Tmp_win->list->icon) { /* djhjr - 4/19/96 FB(Tmp_win->list->fore, Tmp_win->list->back); XCopyPlane(dpy, Scr->siconifyPm, Tmp_win->list->icon, Scr->NormalGC, 0,0, iconifybox_width, iconifybox_height, 0, 0, 1); */ /* djhjr - 10/30/02 * was 'Scr->use3Diconmanagers' - djhjr - 8/11/98 * if (Scr->IconMgrBevelWidth > 0 && Tmp_win->list->iconifypm) XCopyArea (dpy, Tmp_win->list->iconifypm, Tmp_win->list->icon, Scr->NormalGC, 0, 0, iconifybox_width, iconifybox_height, 0, 0); else { FB(Tmp_win->list->cp.fore, Tmp_win->list->cp.back); XCopyPlane(dpy, Scr->siconifyPm->pixmap, Tmp_win->list->icon, Scr->NormalGC, 0,0, iconifybox_width, iconifybox_height, 0, 0, 1); } */ XCopyArea(dpy, Tmp_win->list->iconifypm->pixmap, Tmp_win->list->icon, Scr->NormalGC, 0, 0, iconifybox_width, iconifybox_height, 0, 0); flush_expose (Event.xany.window); return; } } } /* update the virtual desktop display names */ if (Scr->Virtual && Scr->NamesInVirtualDesktop) { TwmWindow *tmp_win; char *name = NULL; if (XFindContext(dpy, Event.xany.window, VirtualContext, (caddr_t *)&tmp_win) != XCNOENT) { /* font was font.font->fid - djhjr - 9/14/03 */ FBF(tmp_win->virtual.fore, tmp_win->virtual.back, Scr->VirtualFont); if (tmp_win->icon_name) name = tmp_win->icon_name; else if (tmp_win->name) name = tmp_win->name; if (name) /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawImageString(dpy, Event.xany.window, &Scr->VirtualFont, #else XDrawImageString(dpy, Event.xany.window, #endif Scr->NormalGC, 0, Scr->VirtualFont.height, name, strlen(name)); } } } /*********************************************************************** * * Procedure: * HandleDestroyNotify - DestroyNotify event handler * *********************************************************************** */ void HandleDestroyNotify() { int i; /* * Warning, this is also called by HandleUnmapNotify; if it ever needs to * look at the event, HandleUnmapNotify will have to mash the UnmapNotify * into a DestroyNotify. */ if (Tmp_win == NULL) return; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT if (destroySoundFromFunction == FALSE) PlaySound(S_CUNMAP); else destroySoundFromFunction = FALSE; #endif if (Tmp_win == Scr->Focus) { FocusOnRoot(); } if (Tmp_win == Scr->Newest) /* PF */ Scr->Newest = NULL; /* PF */ /* djhjr - 5/16/98 */ if (Tmp_win == UnHighLight_win) UnHighLight_win = NULL; XDeleteContext(dpy, Tmp_win->w, TwmContext); XDeleteContext(dpy, Tmp_win->w, ScreenContext); XDeleteContext(dpy, Tmp_win->frame, TwmContext); XDeleteContext(dpy, Tmp_win->frame, ScreenContext); XDeleteContext(dpy, Tmp_win->VirtualDesktopDisplayWindow, VirtualContext); if (Tmp_win->icon_w) { XDeleteContext(dpy, Tmp_win->icon_w, TwmContext); XDeleteContext(dpy, Tmp_win->icon_w, ScreenContext); } if (Tmp_win->title_height) { int nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; XDeleteContext(dpy, Tmp_win->title_w, TwmContext); XDeleteContext(dpy, Tmp_win->title_w, ScreenContext); if (Tmp_win->hilite_w) { XDeleteContext(dpy, Tmp_win->hilite_w, TwmContext); XDeleteContext(dpy, Tmp_win->hilite_w, ScreenContext); } if (Tmp_win->titlebuttons) { for (i = 0; i < nb; i++) { XDeleteContext (dpy, Tmp_win->titlebuttons[i].window, TwmContext); XDeleteContext (dpy, Tmp_win->titlebuttons[i].window, ScreenContext); } } } if (Scr->cmapInfo.cmaps == &Tmp_win->cmaps) InstallWindowColormaps(DestroyNotify, &Scr->TwmRoot); /* * TwmWindows contain the following pointers * * 1. full_name * 2. name * 3. icon_name * 4. wmhints * 5. class.res_name * 6. class.res_class * 7. list * 8. iconmgrp * 9. cwins * 10. titlebuttons * 11. window ring * 12. virtual desktop display window */ if (Tmp_win->gray) XFreePixmap (dpy, Tmp_win->gray); /* djhjr - 4/26/99 */ AppletDown(Tmp_win); XDestroyWindow(dpy, Tmp_win->frame); if (Tmp_win->icon_w && !Tmp_win->icon_not_ours) { XDestroyWindow(dpy, Tmp_win->icon_w); IconDown (Tmp_win); } XDestroyWindow(dpy, Tmp_win->VirtualDesktopDisplayWindow); /* 12 */ RemoveIconManager(Tmp_win); /* 7 */ Tmp_win->prev->next = Tmp_win->next; if (Tmp_win->next != NULL) Tmp_win->next->prev = Tmp_win->prev; if (Tmp_win->auto_raise) Scr->NumAutoRaises--; free_window_names (Tmp_win, True, True, True); /* 1, 2, 3 */ if (Tmp_win->wmhints) /* 4 */ XFree ((char *)Tmp_win->wmhints); if (Tmp_win->class.res_name && Tmp_win->class.res_name != NoName) /* 5 */ XFree ((char *)Tmp_win->class.res_name); if (Tmp_win->class.res_class && Tmp_win->class.res_class != NoName) /* 6 */ XFree ((char *)Tmp_win->class.res_class); free_cwins (Tmp_win); /* 9 */ if (Tmp_win->titlebuttons) /* 10 */ free ((char *) Tmp_win->titlebuttons); /* * 11a through 11c was handled in a local function, but * is now broken out (11a & 11b), and uses a public function * in menus.c (11c) - djhjr - 10/27/02 */ if (enter_win == Tmp_win) { /* 11a */ enter_flag = FALSE; enter_win = NULL; } if (raise_win == Tmp_win) raise_win = NULL; /* 11b */ RemoveWindowFromRing(Tmp_win); /* 11c */ free((char *)Tmp_win); } void HandleCreateNotify() { #ifdef DEBUG_EVENTS fprintf(stderr, "CreateNotify w = 0x%x\n", Event.xcreatewindow.window); fflush(stderr); XBell(dpy, 0); XSync(dpy, 0); #endif } /*********************************************************************** * * Procedure: * HandleMapRequest - MapRequest event handler * *********************************************************************** */ void HandleMapRequest() { int stat; int zoom_save; Event.xany.window = Event.xmaprequest.window; stat = XFindContext(dpy, Event.xany.window, TwmContext, (caddr_t *)&Tmp_win); if (stat == XCNOENT) Tmp_win = NULL; /* If the window has never been mapped before ... */ if (Tmp_win == NULL) { /* Add decorations. */ Tmp_win = AddWindow(Event.xany.window, FALSE, (IconMgr *) NULL); if (Tmp_win == NULL) return; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT if (createSoundFromFunction == FALSE) PlaySound(S_CMAP); else createSoundFromFunction = FALSE; #endif } else { /* * If the window has been unmapped by the client, it won't be listed * in the icon manager. Add it again, if requested. */ if (Tmp_win->list == NULL) (void) AddIconManager (Tmp_win); } /* If it's not merely iconified, and we have hints, use them. */ if ((! Tmp_win->icon) && Tmp_win->wmhints && (Tmp_win->wmhints->flags & StateHint)) { int state; Window icon; /* use WM_STATE if enabled */ if (!(RestartPreviousState && GetWMState(Tmp_win->w, &state, &icon) && (state == NormalState || state == IconicState))) state = Tmp_win->wmhints->initial_state; switch (state) { case DontCareState: case NormalState: case ZoomState: case InactiveState: XMapWindow(dpy, Tmp_win->w); XMapWindow(dpy, Tmp_win->frame); SetMapStateProp(Tmp_win, NormalState); SetRaiseWindow (Tmp_win); /* djhjr - 10/2/01 */ if (Scr->StrictIconManager) if (Tmp_win->list) RemoveIconManager(Tmp_win); break; case IconicState: zoom_save = Scr->DoZoom; Scr->DoZoom = FALSE; Iconify(Tmp_win, 0, 0); Scr->DoZoom = zoom_save; break; } } /* If no hints, or currently an icon, just "deiconify" */ else { DeIconify(Tmp_win); SetRaiseWindow (Tmp_win); } RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* DSE */ } void SimulateMapRequest (w) Window w; { Event.xmaprequest.window = w; HandleMapRequest (); } /*********************************************************************** * * Procedure: * HandleMapNotify - MapNotify event handler * *********************************************************************** */ void HandleMapNotify() { if (Tmp_win == NULL) return; /* * Need to do the grab to avoid race condition of having server send * MapNotify to client before the frame gets mapped; this is bad because * the client would think that the window has a chance of being viewable * when it really isn't. */ XGrabServer (dpy); if (Tmp_win->icon_w) XUnmapWindow(dpy, Tmp_win->icon_w); if (Tmp_win->title_w) XMapSubwindows(dpy, Tmp_win->title_w); XMapSubwindows(dpy, Tmp_win->frame); /* djhjr - 4/25/96 if (Scr->Focus != Tmp_win && Tmp_win->hilite_w) XUnmapWindow(dpy, Tmp_win->hilite_w); */ if (Scr->Focus != Tmp_win) PaintTitleHighlight(Tmp_win, off); XMapWindow(dpy, Tmp_win->frame); XUngrabServer (dpy); XFlush (dpy); Tmp_win->mapped = TRUE; Tmp_win->icon = FALSE; Tmp_win->icon_on = FALSE; /* Race condition if in menus.c:DeIconify() - djhjr - 10/2/01 */ if (Scr->StrictIconManager) if (Tmp_win->list) RemoveIconManager(Tmp_win); } /*********************************************************************** * * Procedure: * HandleUnmapNotify - UnmapNotify event handler * *********************************************************************** */ void HandleUnmapNotify() { int dstx, dsty; Window dumwin; /* * The July 27, 1988 ICCCM spec states that a client wishing to switch * to WithdrawnState should send a synthetic UnmapNotify with the * event field set to (pseudo-)root, in case the window is already * unmapped (which is the case for twm for IconicState). Unfortunately, * we looked for the TwmContext using that field, so try the window * field also. */ if (Tmp_win == NULL) { Event.xany.window = Event.xunmap.window; if (XFindContext(dpy, Event.xany.window, TwmContext, (caddr_t *)&Tmp_win) == XCNOENT) Tmp_win = NULL; } if (Tmp_win == NULL || (!Tmp_win->mapped && !Tmp_win->icon)) return; /* * The program may have unmapped the client window, from either * NormalState or IconicState. Handle the transition to WithdrawnState. * * We need to reparent the window back to the root (so that twm exiting * won't cause it to get mapped) and then throw away all state (pretend * that we've received a DestroyNotify). */ XGrabServer (dpy); if (XTranslateCoordinates (dpy, Event.xunmap.window, Tmp_win->attr.root, 0, 0, &dstx, &dsty, &dumwin)) { XEvent ev; Bool reparented = XCheckTypedWindowEvent (dpy, Event.xunmap.window, ReparentNotify, &ev); SetMapStateProp (Tmp_win, WithdrawnState); if (reparented) { if (Tmp_win->old_bw) XSetWindowBorderWidth (dpy, Event.xunmap.window, Tmp_win->old_bw); if (Tmp_win->wmhints && (Tmp_win->wmhints->flags & IconWindowHint)) XUnmapWindow (dpy, Tmp_win->wmhints->icon_window); } else { XReparentWindow (dpy, Event.xunmap.window, Tmp_win->attr.root, dstx, dsty); RestoreWithdrawnLocation (Tmp_win); } XRemoveFromSaveSet (dpy, Event.xunmap.window); XSelectInput (dpy, Event.xunmap.window, NoEventMask); HandleDestroyNotify (); /* do not need to mash event before */ } /* else window no longer exists and we'll get a destroy notify */ XUngrabServer (dpy); XFlush (dpy); } /*********************************************************************** * * Procedure: * HandleMotionNotify - MotionNotify event handler * *********************************************************************** */ #if 0 /* functionality moved to menus.c:ExecuteFunction() - djhjr - 11/7/03 */ void HandleMotionNotify() { #if 0 /* done in menus.c:ExecuteFunction() now - djhjr - 11/4/03 */ if (moving_window) { DoMoveWindowOnDesktop(Event.xmotion.x, Event.xmotion.y); } #endif #if 0 /* done in menus.c:ExecuteFunction() now - djhjr - 5/27/03 */ if ( ResizeWindow ) { XQueryPointer( dpy, Event.xany.window, &(Event.xmotion.root), &JunkChild, &(Event.xmotion.x_root), &(Event.xmotion.y_root), &(Event.xmotion.x), &(Event.xmotion.y), &JunkMask); /* Set WindowMoved appropriately so that f.deltastop will work with resize as well as move. */ if (abs (Event.xmotion.x - ResizeOrigX) >= Scr->MoveDelta || abs (Event.xmotion.y - ResizeOrigY) >= Scr->MoveDelta) { /* djhjr - 9/5/98 */ resizing_window = 1; WindowMoved = TRUE; } /* added this 'if ()' for applying MoveDelta - djhjr - 9/5/98 */ if (resizing_window) { XFindContext(dpy, ResizeWindow, TwmContext, (caddr_t *)&Tmp_win); DoResize(Event.xmotion.x_root, Event.xmotion.y_root, Tmp_win); } } #endif } #endif /*********************************************************************** * * Procedure: * HandleButtonRelease - ButtonRelease event handler * *********************************************************************** */ void HandleButtonRelease() { /* djhjr - 10/6/02 int xl, xr, yt, yb, w, h; */ unsigned mask; if (Scr->StayUpMenus) { if (GlobalFirstTime == True && GlobalMenuButton == True ) { ButtonPressed = -1; GlobalFirstTime = False; return; } /* end if */ GlobalFirstTime = True; } /* end if */ #if 0 0 For StayUpMenus, delete infobox after buttonpress! 0 if (InfoLines) /* delete info box on 2nd button release */ 0 /* if (Context == C_IDENTIFY) */ 0 /* This would force you to click on the box itself */ 0 { 0fprintf( stderr, "Kill info B\n" ); 0 XUnmapWindow(dpy, Scr->InfoWindow); 0 InfoLines = 0; 0 Context = C_NO_CONTEXT; 0 } #endif #if 0 /* done in menus.c:ExecuteFunction() now - djhjr - 11/4/03 */ if (moving_window) { EndMoveWindowOnDesktop(); } #endif if (DragWindow != None) { /* * Most all of this is redundant (see menus.c:ExecuteFunction()), * and I don't see why. Everything except local functionality is * '#if 0'd out, with just a few lines moved (copied) to menus.c. * djhjr - 10/6/02 */ #if 0 MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); XFindContext(dpy, DragWindow, TwmContext, (caddr_t *)&Tmp_win); if (DragWindow == Tmp_win->frame) { xl = Event.xbutton.x_root - DragX - Tmp_win->frame_bw; yt = Event.xbutton.y_root - DragY - Tmp_win->frame_bw; w = DragWidth + 2 * Tmp_win->frame_bw; h = DragHeight + 2 * Tmp_win->frame_bw; } else { /* * Deskset/Openwin apps change the icon's border width attribute. * Submitted by Caveh Frank Jalali * xl = Event.xbutton.x_root - DragX - Scr->IconBorderWidth; yt = Event.xbutton.y_root - DragY - Scr->IconBorderWidth; w = DragWidth + 2 * Scr->IconBorderWidth; h = DragHeight + 2 * Scr->IconBorderWidth; */ XWindowAttributes wat; XGetWindowAttributes(dpy, DragWindow, &wat); xl = Event.xbutton.x_root - DragX - wat.border_width; yt = Event.xbutton.y_root - DragY - wat.border_width; w = DragWidth + 2 * wat.border_width; h = DragHeight + 2 * wat.border_width; } if (ConstMove) { if (ConstMoveDir == MOVE_HORIZ) yt = ConstMoveY; if (ConstMoveDir == MOVE_VERT) xl = ConstMoveX; if (ConstMoveDir == MOVE_NONE) { yt = ConstMoveY; xl = ConstMoveX; } } if (Scr->DontMoveOff && MoveFunction != F_FORCEMOVE) { xr = xl + w; yb = yt + h; if (xl < 0) xl = 0; if (xr > Scr->MyDisplayWidth) xl = Scr->MyDisplayWidth - w; if (yt < 0) yt = 0; if (yb > Scr->MyDisplayHeight) yt = Scr->MyDisplayHeight - h; } CurrentDragX = xl; CurrentDragY = yt; if (DragWindow == Tmp_win->frame) SetupWindow (Tmp_win, xl, yt, Tmp_win->frame_width, Tmp_win->frame_height, -1); else XMoveWindow (dpy, DragWindow, xl, yt); /* djhjr - 4/7/98 if (!Scr->NoRaiseMove && !Scr->OpaqueMove) * opaque already did * XRaiseWindow(dpy, DragWindow); */ if (!Scr->NoRaiseMove) /* opaque already did, so test the individual window, methinks */ if (DragWindow == Tmp_win->frame) { if (!Tmp_win->opaque_move) XRaiseWindow(dpy, DragWindow); } else if (!Scr->OpaqueMove) XRaiseWindow(dpy, DragWindow); RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); if (!Scr->OpaqueMove) UninstallRootColormap(); else XSync(dpy, 0); if (Scr->NumAutoRaises) { enter_flag = TRUE; enter_win = NULL; raise_win = ((DragWindow == Tmp_win->frame && !Scr->NoRaiseMove) ? Tmp_win : NULL); } #endif DragWindow = None; ConstMove = FALSE; } #ifdef NEVER /* djhjr - 5/27/03 */ if ( ResizeWindow ) { EndResize(); } #endif if ( ActiveMenu && RootFunction == F_NOFUNCTION ) { if ( ActiveItem ) { int func = ActiveItem->func; Action = ActiveItem->action; switch (func) { case F_MOVE: case F_FORCEMOVE: ButtonPressed = -1; break; #if (0) 0 case F_IDENTIFY: 0 case F_CIRCLEUP: 0 case F_CIRCLEDOWN: 0 case F_REFRESH: 0 case F_WARPTOSCREEN: 0 case F_AUTOPAN: /*RFB */ 0 case F_SNAPREALSCREEN:/*RFB*/ 0 PopDownMenu(); 0 break; #endif default: break; } ExecuteFunction(func, Action, ButtonWindow ? ButtonWindow->frame : None, ButtonWindow, &Event/*&ButtonEvent*/, Context, TRUE); Context = C_NO_CONTEXT; ButtonWindow = NULL; /* djhjr - 9/15/99 * if we are not executing a defered command, then take down the * menu * if (RootFunction == F_NOFUNCTION) { PopDownMenu(); } */ } /* djhjr - 9/15/99 else */ PopDownMenu(); } mask = (Button1Mask|Button2Mask|Button3Mask|Button4Mask|Button5Mask); switch (Event.xbutton.button) { case Button1: mask &= ~Button1Mask; break; case Button2: mask &= ~Button2Mask; break; case Button3: mask &= ~Button3Mask; break; case Button4: mask &= ~Button4Mask; break; case Button5: mask &= ~Button5Mask; break; } if (RootFunction != F_NOFUNCTION || ResizeWindow != None || moving_window != None || DragWindow != None) { ButtonPressed = -1; } if (RootFunction == F_NOFUNCTION && (Event.xbutton.state & mask) == 0 && DragWindow == None && moving_window == None && ResizeWindow == None) { XUngrabPointer(dpy, CurrentTime); XUngrabServer(dpy); XFlush(dpy); EventHandler[EnterNotify] = HandleEnterNotify; EventHandler[LeaveNotify] = HandleLeaveNotify; menuFromFrameOrWindowOrTitlebar = FALSE; ButtonPressed = -1; if (DownIconManager) { DownIconManager->down = FALSE; /* djhjr - 4/19/96 if (Scr->Highlight) DrawIconManagerBorder(DownIconManager); */ if (Scr->Highlight) DrawIconManagerBorder(DownIconManager, False); DownIconManager = NULL; } Cancel = FALSE; } } static void do_menu (menu, wnd) MenuRoot *menu; /* menu to pop up */ Window wnd; /* invoking window or None */ { int x = Event.xbutton.x_root; int y = Event.xbutton.y_root; Bool center = True; if (Scr->StayUpMenus) { GlobalMenuButton = True; } if (!Scr->NoGrabServer) XGrabServer(dpy); if (wnd) { Window child; /* djhjr - 1/20/98 */ int w = Scr->TBInfo.width / 2; /* djhjr - 1/20/98 int h = Scr->TBInfo.width - Scr->TBInfo.border; */ int h = Scr->TBInfo.width; /* djhjr - 1/20/98 (void) XTranslateCoordinates (dpy, w, Scr->Root, 0, h, &x, &y, &child); */ (void) XTranslateCoordinates (dpy, wnd, Scr->Root, w, h, &x, &y, &child); /* djhjr - 1/20/98 * djhjr - 3/12/97 * y -= Scr->TitleHeight; */ y -= Scr->TitleHeight / 2; /* djhjr - 1/20/98 center = False; */ } if (PopUpMenu (menu, x, y, center)) { UpdateMenu(); } else { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ } } /*********************************************************************** * * Procedure: * HandleButtonPress - ButtonPress event handler * *********************************************************************** */ void HandleButtonPress() { unsigned int modifier; Cursor cur; TwmDoor *door = NULL; /* Submitted by Jennifer Elaan */ if (Event.xbutton.button > MAX_BUTTONS) return; if (Scr->StayUpMenus) { /* added '&& ButtonPressed == -1' - Submitted by Steve Ratcliffe */ if (GlobalFirstTime == False && GlobalMenuButton == True && ButtonPressed == -1) { return; } } else { /* pop down the menu, if any */ if (ActiveMenu != NULL) PopDownMenu(); } if ( InfoLines ) /* StayUpMenus */ { /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT PlaySound(S_IUNMAP); #endif XUnmapWindow(dpy, Scr->InfoWindow); InfoLines = 0; } XSync(dpy, 0); /* XXX - remove? */ if (ButtonPressed != -1 && !InfoLines /* want menus if we have info box */ ) { /* we got another butt press in addition to one still held * down, we need to cancel the operation we were doing */ Cancel = TRUE; if (DragWindow != None) { CurrentDragX = origDragX; CurrentDragY = origDragY; if (!menuFromFrameOrWindowOrTitlebar) { /* added this 'if ... else' - djhjr - 4/7/98 */ if (Tmp_win && DragWindow == Tmp_win->frame && Tmp_win->opaque_move) XMoveWindow (dpy, DragWindow, origDragX, origDragY); else if (Scr->OpaqueMove && DragWindow != None) XMoveWindow (dpy, DragWindow, origDragX, origDragY); else MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); } if (!Scr->OpaqueMove) UninstallRootColormap(); } #if 0 /* done in menus.c:ExecuteFunction() now - djhjr - 11/4/03 */ /* this 'else if ...' - djhjr - 11/3/03 */ else if (moving_window) EndMoveWindowOnDesktop(); #endif XUnmapWindow(dpy, Scr->SizeWindow); ResizeWindow = None; DragWindow = None; cur = LeftButt; if (Event.xbutton.button == Button2) cur = MiddleButt; else if (Event.xbutton.button >= Button3) cur = RightButt; XGrabPointer(dpy, Scr->Root, True, ButtonReleaseMask | ButtonPressMask, GrabModeAsync, GrabModeAsync, Scr->Root, cur, CurrentTime); return; } else { ButtonPressed = Event.xbutton.button; } if ( ResizeWindow != None || DragWindow != None || moving_window != None /* ||ActiveMenu != NULL ** tvtwm StayUpMenus */ ) { return; } if ( ButtonPressed == Button1 && Tmp_win && Tmp_win->title_height && Tmp_win->titlebuttons ) { /* check the title bar buttons */ register int i; register TBWindow *tbw; int nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; for (i = 0, tbw = Tmp_win->titlebuttons; i < nb; i++, tbw++) { if (Event.xany.window == tbw->window) { if (tbw->info->func == F_MENU) { Context = C_TITLE; ButtonEvent = Event; ButtonWindow = Tmp_win; do_menu (tbw->info->menuroot, tbw->window); } else { /* djhjr - 9/15/99 */ Context = C_TITLE; ExecuteFunction (tbw->info->func, tbw->info->action, Event.xany.window, Tmp_win, &Event, C_TITLE, FALSE); /* * For some reason, we don't get the button up event. * Submitted by Caveh Frank Jalali */ ButtonPressed = -1; } return; } } } Context = C_NO_CONTEXT; if ( Event.xany.window == Scr->InfoWindow ) Context = C_IDENTIFY; if ( Event.xany.window == Scr->Root ) Context = C_ROOT; /* djhjr - 9/12/96 - moved to the bottom of this context decision chain... if ( Context == C_NO_CONTEXT && ( Tmp_win == Scr->VirtualDesktopDisplayTwin || Event.xany.window == Scr->VirtualDesktopDisplayOuter || Event.xany.window == Scr->VirtualDesktopDisplay ) ) { TwmWindow *tmp_win; if ( Event.xbutton.subwindow && XFindContext( dpy, Event.xbutton.subwindow, VirtualContext, (caddr_t *) &tmp_win ) != XCNOENT ) { * Click in a little window in the panner. * Tmp_win = tmp_win; Context = C_VIRTUAL_WIN; } else { * Click in the panner. * Tmp_win = Scr->VirtualDesktopDisplayTwin; Context = C_VIRTUAL; } } */ if (XFindContext(dpy, Event.xany.window, DoorContext, (caddr_t *)&door) != XCNOENT) Context = C_DOOR; if ( Tmp_win && Context == C_NO_CONTEXT ) { /* have I really determined that this isn't needed? - djhjr - 9/15/99 if ( Tmp_win->list && RootFunction != F_NOFUNCTION && ( Event.xany.window == Tmp_win->list->w || Event.xany.window == Tmp_win->list->icon ) ) { Tmp_win = Tmp_win->list->iconmgr->twm_win; XTranslateCoordinates(dpy, Event.xany.window, Tmp_win->w, Event.xbutton.x, Event.xbutton.y, &JunkX, &JunkY, &JunkChild); * djhjr - 4/21/96 Event.xbutton.x = JunkX; Event.xbutton.y = JunkY - Tmp_win->title_height; * Event.xbutton.x = JunkX - Tmp_win->frame_bw3D; Event.xbutton.y = JunkY - Tmp_win->title_height - Tmp_win->frame_bw3D; Event.xany.window = Tmp_win->w; Context = C_WINDOW; } else */ if ( Event.xany.window == Tmp_win->title_w ) { Context = C_TITLE; } else if (Event.xany.window == Tmp_win->w) { printf("ERROR! ERROR! ERROR! YOU SHOULD NOT BE HERE!!!\n"); Context = C_WINDOW; } else if (Event.xany.window == Tmp_win->icon_w) { Context = C_ICON; } else if (Event.xany.window == Tmp_win->frame) { /* since we now place a button grab on the frame instead * of the window, (see GrabButtons() in add_window.c), we * need to figure out where the pointer exactly is before * assigning Context. If the pointer is on the application * window we will change the event structure to look as if * it came from the application window. */ if (Event.xbutton.subwindow == Tmp_win->w) { Event.xbutton.window = Tmp_win->w; /* djhjr - 4/21/96 Event.xbutton.y -= Tmp_win->title_height; */ Event.xbutton.x -= Tmp_win->frame_bw3D; Event.xbutton.y -= (Tmp_win->title_height + Tmp_win->frame_bw3D); /***** Event.xbutton.x -= Tmp_win->frame_bw; *****/ Context = C_WINDOW; } /* not needed after all - djhjr - 9/10/99 * djhjr - 5/13/99 * else if (Scr->Doors) { for (door = Scr->Doors; door != NULL; door = door->next) if (door->twin->frame == Tmp_win->frame) { Context = C_DOOR; break; } if (!door) Context = C_FRAME; } */ else Context = C_FRAME; } else if ( Tmp_win->list && ( Event.xany.window == Tmp_win->list->w || Event.xany.window == Tmp_win->list->icon ) ) { Tmp_win->list->down = TRUE; /* djhjr - 4/19/96 if (Scr->Highlight) DrawIconManagerBorder(Tmp_win->list); */ if (Scr->Highlight) DrawIconManagerBorder(Tmp_win->list, False); DownIconManager = Tmp_win->list; Context = C_ICONMGR; } } /* djhjr - 9/12/96 - moved from the top of this context decision chain...*/ if ( Context == C_NO_CONTEXT && ( Tmp_win == Scr->VirtualDesktopDisplayTwin || Event.xany.window == Scr->VirtualDesktopDisplayOuter || Event.xany.window == Scr->VirtualDesktopDisplay ) ) { TwmWindow *tmp_win; if ( Event.xbutton.subwindow && XFindContext( dpy, Event.xbutton.subwindow, VirtualContext, (caddr_t *) &tmp_win ) != XCNOENT ) { /* Click in a little window in the panner. */ Tmp_win = tmp_win; Context = C_VIRTUAL_WIN; } else { /* Click in the panner. */ Tmp_win = Scr->VirtualDesktopDisplayTwin; Context = C_VIRTUAL; } } /* this section of code checks to see if we were in the middle of * a command executed from a menu */ if (RootFunction != F_NOFUNCTION) { if (Event.xany.window == Scr->Root) { /* if the window was the Root, we don't know for sure it * it was the root. We must check to see if it happened to be * inside of a client that was getting button press events. */ XTranslateCoordinates(dpy, Scr->Root, Scr->Root, Event.xbutton.x, Event.xbutton.y, &JunkX, &JunkY, &Event.xany.window); if (Event.xany.window == 0 || XFindContext(dpy, Event.xany.window, TwmContext, (caddr_t *)&Tmp_win) == XCNOENT) { RootFunction = F_NOFUNCTION; DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ /* * If stay up menus is set, then the menu may still be active * and should be popped down - Submitted by Steve Ratcliffe */ if (ActiveMenu != NULL) PopDownMenu(); return; } XTranslateCoordinates(dpy, Scr->Root, Event.xany.window, Event.xbutton.x, Event.xbutton.y, &JunkX, &JunkY, &JunkChild); Event.xbutton.x = JunkX; Event.xbutton.y = JunkY; Context = C_WINDOW; } /* make sure we are not trying to move an identify window */ if (Scr->InfoWindow && Event.xany.window != Scr->InfoWindow) { ExecuteFunction(RootFunction, Action, Event.xany.window, Tmp_win, &Event, Context, FALSE); if (Scr->StayUpMenus) { /* pop down the menu, if any */ if (ActiveMenu != NULL) PopDownMenu(); } } RootFunction = F_NOFUNCTION; return; } ButtonEvent = Event; ButtonWindow = Tmp_win; /* if we get to here, we have to execute a function or pop up a * menu */ modifier = (Event.xbutton.state & mods_used); if (Context == C_NO_CONTEXT) return; RootFunction = F_NOFUNCTION; if (Scr->Mouse[Event.xbutton.button][Context][modifier].func == F_MENU) { do_menu (Scr->Mouse[Event.xbutton.button][Context][modifier].menu, (Window) None); if (Scr->StayUpMenus) { GlobalMenuButton = False; } } else if (Scr->Mouse[Event.xbutton.button][Context][modifier].func != F_NOFUNCTION) { Action = Scr->Mouse [Event.xbutton.button][Context][modifier].item ? Scr->Mouse [Event.xbutton.button][Context][modifier] .item->action : NULL; ExecuteFunction( Scr->Mouse [Event.xbutton.button][Context][modifier].func, Action, Event.xany.window, Tmp_win, &Event, Context, FALSE); } else if (Scr->DefaultFunction.func != F_NOFUNCTION) { if (Scr->DefaultFunction.func == F_MENU) { do_menu (Scr->DefaultFunction.menu, (Window) None); } else { Action = Scr->DefaultFunction.item ? Scr->DefaultFunction.item->action : NULL; ExecuteFunction(Scr->DefaultFunction.func, Action, Event.xany.window, Tmp_win, &Event, Context, FALSE); } } } /*********************************************************************** * * Procedure: * HENQueueScanner - EnterNotify event q scanner * * Looks at the queued events and determines if any matching * LeaveNotify events or EnterEvents deriving from the * termination of a grab are behind this event to allow * skipping of unnecessary processing. * *********************************************************************** */ typedef struct HENScanArgs { Window w; /* Window we are currently entering */ Bool leaves; /* Any LeaveNotifies found for this window */ Bool inferior; /* Was NotifyInferior the mode for LeaveNotify */ Bool enters; /* Any EnterNotify events with NotifyUngrab */ } HENScanArgs; /* ARGSUSED*/ static Bool HENQueueScanner(dpy, ev, args) Display *dpy; XEvent *ev; char *args; { if (ev->type == LeaveNotify) { if (ev->xcrossing.window == ((HENScanArgs *) args)->w && ev->xcrossing.mode == NotifyNormal) { ((HENScanArgs *) args)->leaves = True; /* * Only the last event found matters for the Inferior field. */ ((HENScanArgs *) args)->inferior = (ev->xcrossing.detail == NotifyInferior); } } else if (ev->type == EnterNotify) { if (ev->xcrossing.mode == NotifyUngrab) ((HENScanArgs *) args)->enters = True; } return (False); } /*********************************************************************** * * Procedure: * HandleEnterNotify - EnterNotify event handler * *********************************************************************** */ void HandleEnterNotify() { MenuRoot *mr; XEnterWindowEvent *ewp = &Event.xcrossing; HENScanArgs scanArgs; XEvent dummy; short l; extern int RaiseDelay;/*RAISEDELAY*/ /* * Save the id of the window entered. This will be used to remove * border highlight on entering the next application window. */ if (UnHighLight_win && ewp->window != UnHighLight_win->w) { SetBorder (UnHighLight_win, False); /* application window */ if (UnHighLight_win->list) /* in the icon box */ NotActiveIconManager(UnHighLight_win->list); } if (ewp->window == Scr->Root) UnHighLight_win = NULL; else if (Tmp_win) UnHighLight_win = Tmp_win; /* * if we aren't in the middle of menu processing */ if (!ActiveMenu) { /* * We're not interested in pseudo Enter/Leave events generated * from grab initiations. */ if (ewp->mode == NotifyGrab) return; /* * Scan for Leave and Enter Notify events to see if we can avoid some * unnecessary processing. */ scanArgs.w = ewp->window; scanArgs.leaves = scanArgs.enters = False; (void) XCheckIfEvent(dpy, &dummy, HENQueueScanner, (char *) &scanArgs); /* * if it is one of the autopan windows, do the pan */ if ( Scr->AutoPanX )/*RFB F_AUTOPAN*/ for (l = 0; l <= 3; l++) if (ewp->window == Scr->VirtualDesktopAutoPan[l]) { int xdiff, ydiff, xwarp, ywarp; /* * Code from FVWM-1.23b, modified to reflect "real time" * values of the resource. * * djhjr - 9/8/98 */ if (Scr->VirtualDesktopPanResistance > 0 && Scr->VirtualDesktopPanResistance < 10000) { int x, y, i; static struct timeval timeoutval = {0, 12500}; struct timeval timeout; /* The granularity of PanResistance is about 25 ms. * The timeout variable is set to 12.5 ms since we * pass this way twice each time an autopan window * is entered. */ for (i = 25; i < Scr->VirtualDesktopPanResistance; i += 25) { timeout = timeoutval; select(0, 0, 0, 0, &timeout); scanArgs.w = ewp->window; scanArgs.leaves = scanArgs.enters = False; (void)XCheckIfEvent(dpy, &dummy, HENQueueScanner, (char *)&scanArgs); if (scanArgs.leaves) return; } XQueryPointer(dpy, Scr->Root, &JunkRoot, &JunkChild, &x, &y, &JunkX, &JunkY, &JunkMask); if (x < Scr->AutoPanBorderWidth) l = 0; else if (x >= Scr->MyDisplayWidth - Scr->AutoPanBorderWidth) l = 1; else if (y < Scr->AutoPanBorderWidth) l = 2; else if (y >= Scr->MyDisplayHeight - Scr->AutoPanBorderWidth) l = 3; else l = 4; /* oops */ } /* figure out which one it is */ switch (l) { case 0: /* left */ xdiff = -(Scr->AutoPanX); ydiff = 0; /* xwarp = AP_SIZE + 2; */ xwarp = AP_SIZE + Scr->AutoPanExtraWarp; /* DSE */ ywarp = 0; break; case 1: /* right */ xdiff = Scr->AutoPanX; ydiff = 0; /* xwarp = -(AP_SIZE + 2); */ xwarp = -(AP_SIZE + Scr->AutoPanExtraWarp); /* DSE */ ywarp = 0; break; case 2: /* up */ xdiff = 0; ydiff = -(Scr->AutoPanY); xwarp = 0; /* ywarp = AP_SIZE + 2; */ ywarp = AP_SIZE + Scr->AutoPanExtraWarp; /* DSE */ break; case 3: /* down */ xdiff = 0; ydiff = Scr->AutoPanY; xwarp = 0; /* ywarp = -(AP_SIZE + 2); */ ywarp = -(AP_SIZE + Scr->AutoPanExtraWarp); /* DSE */ break; default: /* oops */ /* this is to stop the compiler complaining */ xdiff = ydiff = xwarp = ywarp = 0; /* not with the PanResistance resource! - djhjr - 9/8/98 fprintf(stderr, "vtwm: major problems with autopan\n"); */ } /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT PlaySound(S_APAN); #endif /* do the pan */ PanRealScreen(xdiff, ydiff, &xwarp, &ywarp); /* DSE */ /* * warp the pointer out of the window so that they can keep * moving the mouse */ XWarpPointer(dpy, None, None, 0, 0, 0, 0, xwarp, ywarp); return; } /* end if ewp->window = autopan */ /* * if entering root window, restore twm default colormap so that * titlebars are legible */ if (ewp->window == Scr->Root) { if (!scanArgs.leaves && !scanArgs.enters) InstallWindowColormaps(EnterNotify, &Scr->TwmRoot); return; } /*RAISEDELAY*/ /* Handle RaiseDelay, if any..... */ /*RAISEDELAY*/ if (RaiseDelay > 0) { /*RAISEDELAY*/ if (Tmp_win && Tmp_win->auto_raise /*RAISEDELAY*/ && (!Tmp_win->list || Tmp_win->list->w != ewp->window)) { /*RAISEDELAY*/ ColormapWindow *cwin; #ifdef NEVER /*RAISEDELAY*/ static struct timeval timeout = {0,12500}; #else /* * Submitted by Steve Ratcliffe */ /*RAISEDELAY*/ static struct timeval timeoutval = {0,12500}; /*RAISEDELAY*/ struct timeval timeout; #endif /*RAISEDELAY*/ /*RAISEDELAY*/ if (XFindContext(dpy, Tmp_win->w, ColormapContext, /*RAISEDELAY*/ (caddr_t *)&cwin) == XCNOENT) { /*RAISEDELAY*/ cwin = (ColormapWindow *)NULL; /*RAISEDELAY*/ } /*RAISEDELAY*/ /*RAISEDELAY*/ if ((ewp->detail != NotifyInferior /*RAISEDELAY*/ || Tmp_win->frame == ewp->window) /*RAISEDELAY*/ && (!cwin || cwin->visibility != VisibilityUnobscured)) { /*RAISEDELAY*/ int x, y, px, py, d, i; /*RAISEDELAY*/ Window w; /*RAISEDELAY*/ /*RAISEDELAY*/ XQueryPointer(dpy, Scr->Root, &w, &w, &px, &py, /*RAISEDELAY*/ &d, &d, (unsigned int *)&d); /*RAISEDELAY*/ /*RAISEDELAY*/ /* The granularity of RaiseDelay is about 25 ms. * The timeout variable is set to 12.5 ms since we * pass this way twice each time a twm window is * entered. */ /*RAISEDELAY*/ for (i = 25; i < RaiseDelay; i += 25) { /* * Submitted by Steve Ratcliffe */ /*RAISEDELAY*/ /* The timeout needs initialising each time on Linux */ /*RAISEDELAY*/ timeout = timeoutval; /*RAISEDELAY*/ select(0, 0, 0, 0, &timeout); /*RAISEDELAY*/ /* Did we leave this window already? */ /*RAISEDELAY*/ scanArgs.w = ewp->window; /*RAISEDELAY*/ scanArgs.leaves = scanArgs.enters = False; /*RAISEDELAY*/ (void) XCheckIfEvent(dpy, &dummy, HENQueueScanner, /*RAISEDELAY*/ (char *) &scanArgs); /*RAISEDELAY*/ if (scanArgs.leaves && !scanArgs.inferior) return; /*RAISEDELAY*/ /*RAISEDELAY*/ XQueryPointer(dpy, Scr->Root, &w, &w, &x, &y, /*RAISEDELAY*/ &d, &d, (unsigned int *)&d); /*RAISEDELAY*/ /*RAISEDELAY*/ /* Has the pointer moved? If so reset the loop cnt. * We want the pointer to be still for RaiseDelay * milliseconds before terminating the loop */ /*RAISEDELAY*/ if (x != px || y != py) { /*RAISEDELAY*/ i = 0; px = x; py = y; /*RAISEDELAY*/ } /*RAISEDELAY*/ } /*RAISEDELAY*/ } /*RAISEDELAY*/ } /*RAISEDELAY*/ /*RAISEDELAY*/ /* * Scan for Leave and Enter Notify events to see if we can avoid some * unnecessary processing. */ /*RAISEDELAY*/ scanArgs.w = ewp->window; /*RAISEDELAY*/ scanArgs.leaves = scanArgs.enters = False; /*RAISEDELAY*/ (void) XCheckIfEvent(dpy, &dummy, HENQueueScanner, (char *) &scanArgs); /*RAISEDELAY*/ /*RAISEDELAY*/ /* * if entering root window, restore twm default colormap so that * titlebars are legible */ /*RAISEDELAY*/ if (ewp->window == Scr->Root) { /*RAISEDELAY*/ if (!scanArgs.leaves && !scanArgs.enters) /*RAISEDELAY*/ InstallWindowColormaps(EnterNotify, &Scr->TwmRoot); /*RAISEDELAY*/ return; /*RAISEDELAY*/ } /*RAISEDELAY*/ } /*RAISEDELAY*/ /* End of RaiseDelay modification. */ /* * if we have an event for a specific one of our windows */ if (Tmp_win) { /* * If currently in PointerRoot mode (indicated by FocusRoot), then * focus on this window */ if (Scr->FocusRoot && (!scanArgs.leaves || scanArgs.inferior)) { if (Tmp_win->list) ActiveIconManager(Tmp_win->list); if (Tmp_win->mapped) { /* * unhighlight old focus window */ /* djhjr - 4/25/96 if (Scr->Focus && Scr->Focus != Tmp_win && Tmp_win->hilite_w) XUnmapWindow(dpy, Scr->Focus->hilite_w); */ if (Scr->Focus && Scr->Focus != Tmp_win) PaintTitleHighlight(Scr->Focus, off); /* * If entering the frame or the icon manager, then do * "window activation things": * * 1. turn on highlight window (if any) * 2. install frame colormap * 3. set frame and highlight window (if any) border * 3a. set titlebutton highlight (if button color is frame) * if IconManagerFocus is set or not in icon mgr * 4. focus on client window to forward typing * 4a. same as 4 but for icon mgr and/or NoTitlebar set * 5. send WM_TAKE_FOCUS if requested */ if (ewp->window == Tmp_win->frame || (Tmp_win->list && ewp->window == Tmp_win->list->w)) { /* djhjr - 4/25/96 if (Tmp_win->hilite_w) * 1 * XMapWindow (dpy, Tmp_win->hilite_w); */ PaintTitleHighlight(Tmp_win, on); /* 1 */ if (!scanArgs.leaves && !scanArgs.enters) /* 2 */ InstallWindowColormaps (EnterNotify, &Scr->TwmRoot); SetBorder (Tmp_win, True); /* 3, 3a */ /* added this 'if()' - djhjr - 5/27/98 */ /* added hack for StrictIconManager - djhjr - 10/2/01 */ /* added test for transients - djhjr - 4/9/02 */ if (Scr->IconManagerFocus || (Scr->FocusRoot && Scr->StrictIconManager && !Tmp_win->list) || (Tmp_win->list && Tmp_win->list->w && Tmp_win->list->w != ewp->window) || Tmp_win->transient) { /* added test for transients - djhjr - 4/9/02 */ if ((((Tmp_win->title_w || Scr->NoTitlebar) && /* 4, 4a */ Scr->TitleFocus) || Tmp_win->transient) && Tmp_win->wmhints && Tmp_win->wmhints->input) SetFocus (Tmp_win, ewp->time); } if (Tmp_win->protocols & DoesWmTakeFocus) /* 5 */ SendTakeFocusMessage (Tmp_win, ewp->time); Scr->Focus = Tmp_win; } else if (ewp->window == Tmp_win->w) { /* * If we are entering the application window, install * its colormap(s). */ if (!scanArgs.leaves || scanArgs.inferior) InstallWindowColormaps(EnterNotify, Tmp_win); } } /* end if Tmp_win->mapped */ if (Tmp_win->wmhints != NULL && ewp->window == Tmp_win->wmhints->icon_window && (!scanArgs.leaves || scanArgs.inferior)) InstallWindowColormaps(EnterNotify, Tmp_win); } /* end if FocusRoot */ /* * If this window is to be autoraised, mark it so */ if (Tmp_win->auto_raise) { enter_win = Tmp_win; if (enter_flag == FALSE) AutoRaiseWindow (Tmp_win); } else if (enter_flag && raise_win == Tmp_win) enter_win = Tmp_win; /* * set ring leader */ if (Tmp_win->ring.next && (!enter_flag || raise_win == enter_win)) { /* * If this window is an icon manager window, make * the ring leader the icon manager - djhjr - 11/8/01 * * Is the icon manager in the ring? - djhjr - 10/27/02 */ if (Tmp_win->list && ewp->window == Tmp_win->list->w && Tmp_win->list->iconmgr->twm_win->ring.next) { Scr->RingLeader = Tmp_win->list->iconmgr->twm_win; } else Scr->RingLeader = Tmp_win; } XSync (dpy, 0); return; } /* end if Tmp_win */ } /* end if !ActiveMenu */ /* * Find the menu that we are dealing with now; punt if unknown */ if (XFindContext (dpy, ewp->window, MenuContext, (caddr_t *)&mr) != XCSUCCESS) return; mr->entered = TRUE; /* djhjr - 4/23/96 if (ActiveMenu && mr == ActiveMenu->prev && RootFunction == F_NOFUNCTION) { if (Scr->Shadow) XUnmapWindow (dpy, ActiveMenu->shadow); XUnmapWindow (dpy, ActiveMenu->w); ActiveMenu->mapped = UNMAPPED; UninstallRootColormap (); if (ActiveItem) { ActiveItem->state = 0; PaintEntry (ActiveMenu, ActiveItem, False); } ActiveItem = NULL; ActiveMenu = mr; MenuDepth--; } */ if (RootFunction == F_NOFUNCTION) { MenuRoot *tmp; for (tmp = ActiveMenu; tmp; tmp = tmp->prev) { if (tmp == mr) break; } if (! tmp) return; for (tmp = ActiveMenu; tmp != mr; tmp = tmp->prev) { /* all 'tmp' were 'ActiveMenu'... DUH! - djhjr - 11/16/98 */ if (Scr->Shadow) XUnmapWindow (dpy, tmp->shadow); XUnmapWindow (dpy, tmp->w); tmp->mapped = UNMAPPED; MenuDepth--; } UninstallRootColormap (); if (ActiveItem) { ActiveItem->state = 0; PaintEntry (ActiveMenu, ActiveItem, False); } ActiveItem = NULL; ActiveMenu = mr; } return; } /*********************************************************************** * * Procedure: * HLNQueueScanner - LeaveNotify event q scanner * * Looks at the queued events and determines if any * EnterNotify events are behind this event to allow * skipping of unnecessary processing. * *********************************************************************** */ typedef struct HLNScanArgs { Window w; /* The window getting the LeaveNotify */ Bool enters; /* Any EnterNotify event at all */ Bool matches; /* Any matching EnterNotify events */ } HLNScanArgs; /* ARGSUSED*/ static Bool HLNQueueScanner(dpy, ev, args) Display *dpy; XEvent *ev; char *args; { if (ev->type == EnterNotify && ev->xcrossing.mode != NotifyGrab) { ((HLNScanArgs *) args)->enters = True; if (ev->xcrossing.window == ((HLNScanArgs *) args)->w) ((HLNScanArgs *) args)->matches = True; } return (False); } /*********************************************************************** * * Procedure: * HandleLeaveNotify - LeaveNotify event handler * *********************************************************************** */ void HandleLeaveNotify() { HLNScanArgs scanArgs; XEvent dummy; if (Tmp_win != NULL) { Bool inicon; /* * We're not interested in pseudo Enter/Leave events generated * from grab initiations and terminations. */ if (Event.xcrossing.mode != NotifyNormal) return; inicon = (Tmp_win->list && Tmp_win->list->w == Event.xcrossing.window); /* * rem'ing this allows the window crossed out of onto the root window * to be remembered, so an f.warpring event occuring on the root window * will return to that window (see WarpAlongRing() in menus.c). * * no, I don't fully understand... djhjr - 5/11/98 * if (Scr->RingLeader && Scr->RingLeader == Tmp_win && (Event.xcrossing.detail != NotifyInferior && Event.xcrossing.window != Tmp_win->w)) { #ifdef ORIGINAL_WARPRINGCOORDINATES * djhjr - 5/11/98 * if (!inicon) { if (Tmp_win->mapped) { Tmp_win->ring.cursor_valid = False; } else { Tmp_win->ring.cursor_valid = True; Tmp_win->ring.curs_x = (Event.xcrossing.x_root - Tmp_win->frame_x); Tmp_win->ring.curs_y = (Event.xcrossing.y_root - Tmp_win->frame_y); } } #endif Scr->RingLeader = (TwmWindow *) NULL; } */ if (Scr->FocusRoot) { if (Event.xcrossing.detail != NotifyInferior) { /* * Scan for EnterNotify events to see if we can avoid some * unnecessary processing. */ scanArgs.w = Event.xcrossing.window; scanArgs.enters = scanArgs.matches = False; (void) XCheckIfEvent(dpy, &dummy, HLNQueueScanner, (char *) &scanArgs); if ((Event.xcrossing.window == Tmp_win->frame && !scanArgs.matches) || inicon) { if (Tmp_win->list) NotActiveIconManager(Tmp_win->list); /* djhjr - 4/25/96 if (Tmp_win->hilite_w) XUnmapWindow (dpy, Tmp_win->hilite_w); */ PaintTitleHighlight(Tmp_win, off); SetBorder (Tmp_win, False); if (Scr->TitleFocus || Tmp_win->protocols & DoesWmTakeFocus) SetFocus ((TwmWindow *) NULL, Event.xcrossing.time); Scr->Focus = NULL; } else if (Event.xcrossing.window == Tmp_win->w && !scanArgs.enters) { InstallWindowColormaps (LeaveNotify, &Scr->TwmRoot); } } } XSync (dpy, 0); return; } } /*********************************************************************** * * Procedure: * HandleConfigureRequest - ConfigureRequest event handler * *********************************************************************** */ void HandleConfigureRequest() { XWindowChanges xwc; unsigned long xwcm; int x, y, width, height, bw; int gravx, gravy; XConfigureRequestEvent *cre = &Event.xconfigurerequest; #ifdef DEBUG_EVENTS fprintf(stderr, "ConfigureRequest\n"); if (cre->value_mask & CWX) fprintf(stderr, " x = %d\n", cre->x); if (cre->value_mask & CWY) fprintf(stderr, " y = %d\n", cre->y); if (cre->value_mask & CWWidth) fprintf(stderr, " width = %d\n", cre->width); if (cre->value_mask & CWHeight) fprintf(stderr, " height = %d\n", cre->height); if (cre->value_mask & CWSibling) fprintf(stderr, " above = 0x%x\n", cre->above); if (cre->value_mask & CWStackMode) fprintf(stderr, " stack = %d\n", cre->detail); #endif /* * Event.xany.window is Event.xconfigurerequest.parent, so Tmp_win will * be wrong */ Event.xany.window = cre->window; /* mash parent field */ if (XFindContext (dpy, cre->window, TwmContext, (caddr_t *) &Tmp_win) == XCNOENT) Tmp_win = NULL; /* * According to the July 27, 1988 ICCCM draft, we should ignore size and * position fields in the WM_NORMAL_HINTS property when we map a window. * Instead, we'll read the current geometry. Therefore, we should respond * to configuration requests for windows which have never been mapped. */ if (!Tmp_win || Tmp_win->icon_w == cre->window) { xwcm = cre->value_mask & (CWX | CWY | CWWidth | CWHeight | CWBorderWidth); xwc.x = cre->x; xwc.y = cre->y; xwc.width = cre->width; xwc.height = cre->height; xwc.border_width = cre->border_width; XConfigureWindow(dpy, Event.xany.window, xwcm, &xwc); return; } if ((cre->value_mask & CWStackMode) && Tmp_win->stackmode) { TwmWindow *otherwin; xwc.sibling = (((cre->value_mask & CWSibling) && (XFindContext (dpy, cre->above, TwmContext, (caddr_t *) &otherwin) == XCSUCCESS)) ? otherwin->frame : cre->above); xwc.stack_mode = cre->detail; XConfigureWindow (dpy, Tmp_win->frame, cre->value_mask & (CWSibling | CWStackMode), &xwc); } /* Don't modify frame_XXX fields before calling SetupWindow! */ x = Tmp_win->frame_x; y = Tmp_win->frame_y; width = Tmp_win->frame_width; height = Tmp_win->frame_height; bw = Tmp_win->frame_bw; /* * Section 4.1.5 of the ICCCM states that the (x,y) coordinates in the * configure request are for the upper-left outer corner of the window. * This means that we need to adjust for the additional title height as * well as for any border width changes that we decide to allow. The * current window gravity is to be used in computing the adjustments, just * as when initially locating the window. Note that if we do decide to * allow border width changes, we will need to send the synthetic * ConfigureNotify event. */ GetGravityOffsets (Tmp_win, &gravx, &gravy); if (cre->value_mask & CWBorderWidth) { int bwdelta = cre->border_width - Tmp_win->old_bw; /* posit growth */ if (bwdelta && Scr->ClientBorderWidth) { /* if change allowed */ x += gravx * bwdelta; /* change default values only */ y += gravy * bwdelta; /* ditto */ bw = cre->border_width; if (Tmp_win->title_height) height += bwdelta; x += (gravx < 0) ? bwdelta : -bwdelta; y += (gravy < 0) ? bwdelta : -bwdelta; } Tmp_win->old_bw = cre->border_width; /* for restoring */ } if (cre->value_mask & CWX) { /* override even if border change */ x = cre->x - bw; /* djhjr - 4/21/96 */ x -= ((gravx < 0) ? 0 : Tmp_win->frame_bw3D); } if (cre->value_mask & CWY) { y = cre->y - ((gravy < 0) ? 0 : Tmp_win->title_height) - bw; /* djhjr - 4/21/96 */ y -= ((gravy < 0) ? 0 : Tmp_win->frame_bw3D); } if (cre->value_mask & CWWidth) { /* djhjr - 4/21/96 width = cre->width; */ width = cre->width + 2 * Tmp_win->frame_bw3D; } if (cre->value_mask & CWHeight) { /* djhjr - 4/21/96 height = cre->height + Tmp_win->title_height; */ height = cre->height + Tmp_win->title_height + 2 * Tmp_win->frame_bw3D; } if (width != Tmp_win->frame_width || height != Tmp_win->frame_height) Tmp_win->zoomed = ZOOM_NONE; /* * SetupWindow (x,y) are the location of the upper-left outer corner and * are passed directly to XMoveResizeWindow (frame). The (width,height) * are the inner size of the frame. The inner width is the same as the * requested client window width; the inner height is the same as the * requested client window height plus any title bar slop. */ /* propogate ConfigureNotify events - submitted by Jonathan Paisley - 11/11/02 SetupWindow (Tmp_win, x, y, width, height, bw); */ SetupFrame(Tmp_win, x, y, width, height, bw, True); /* Change the size of the desktop representation */ MoveResizeDesktop (Tmp_win, TRUE); /* * Raise the autopan windows in case the current window covers them. * Submitted by Steve Ratcliffe */ RaiseAutoPan(); } /*********************************************************************** * * Procedure: * HandleShapeNotify - shape notification event handler * *********************************************************************** */ void HandleShapeNotify () { XShapeEvent *sev = (XShapeEvent *) &Event; if (Tmp_win == NULL) return; if (sev->kind != ShapeBounding) return; if (!Tmp_win->wShaped && sev->shaped) { XShapeCombineMask (dpy, Tmp_win->frame, ShapeClip, 0, 0, None, ShapeSet); } Tmp_win->wShaped = sev->shaped; SetFrameShape (Tmp_win); } /*********************************************************************** * * Procedure: * HandleUnknown - unknown event handler * *********************************************************************** */ void HandleUnknown() { #ifdef DEBUG_EVENTS fprintf(stderr, "type = %d\n", Event.type); #endif } /*********************************************************************** * * Procedure: * Transient - checks to see if the window is a transient * * Returned Value: * TRUE - window is a transient * FALSE - window is not a transient * * Inputs: * w - the window to check * *********************************************************************** */ int Transient(w, propw) Window w, *propw; { return (XGetTransientForHint(dpy, w, propw)); } /*********************************************************************** * * Procedure: * FindScreenInfo - get ScreenInfo struct associated with a given window * * Returned Value: * ScreenInfo struct * * Inputs: * w - the window * *********************************************************************** */ ScreenInfo * FindScreenInfo(w) Window w; { XWindowAttributes attr; int scrnum; attr.screen = NULL; if (XGetWindowAttributes(dpy, w, &attr)) { for (scrnum = 0; scrnum < NumScreens; scrnum++) { if (ScreenList[scrnum] != NULL && (ScreenOfDisplay(dpy, ScreenList[scrnum]->screen) == attr.screen)) return ScreenList[scrnum]; } } return NULL; } static void flush_expose (w) Window w; { XEvent dummy; /* SUPPRESS 530 */ while (XCheckTypedWindowEvent (dpy, w, Expose, &dummy)) ; } /*********************************************************************** * * Procedure: * InstallWindowColormaps - install the colormaps for one twm window * * Inputs: * type - type of event that caused the installation * tmp - for a subset of event types, the address of the * window structure, whose colormaps are to be installed. * *********************************************************************** */ void InstallWindowColormaps (type, tmp) int type; TwmWindow *tmp; { int i, j, n, number_cwins, state; ColormapWindow **cwins, *cwin, **maxcwin = NULL; TwmColormap *cmap; char *row, *scoreboard; switch (type) { case EnterNotify: case LeaveNotify: case DestroyNotify: default: /* Save the colormap to be loaded for when force loading of * root colormap(s) ends. */ Scr->cmapInfo.pushed_window = tmp; /* Don't load any new colormap if root colormap(s) has been * force loaded. */ if (Scr->cmapInfo.root_pushes) return; /* Don't reload the currend window colormap list. */ if (Scr->cmapInfo.cmaps == &tmp->cmaps) return; if (Scr->cmapInfo.cmaps) for (i = Scr->cmapInfo.cmaps->number_cwins, cwins = Scr->cmapInfo.cmaps->cwins; i-- > 0; cwins++) (*cwins)->colormap->state &= ~CM_INSTALLABLE; Scr->cmapInfo.cmaps = &tmp->cmaps; break; case PropertyNotify: case VisibilityNotify: case ColormapNotify: break; } number_cwins = Scr->cmapInfo.cmaps->number_cwins; cwins = Scr->cmapInfo.cmaps->cwins; scoreboard = Scr->cmapInfo.cmaps->scoreboard; ColortableThrashing = FALSE; /* in case installation aborted */ state = CM_INSTALLED; /* * Submitted by Caveh Frank Jalali * for (i = n = 0; i < number_cwins && n < Scr->cmapInfo.maxCmaps */ for (i = 0; i < number_cwins /* comp.windows.x ** Article <21sn92INNbiv@sirius.isi.com> Mon 18:06 ** Path: ..!news.isi.com!not-for-mail (Mark Kent @ ** Integrated Systems, Inc.) */ ; i++) { cwin = cwins[i]; cmap = cwin->colormap; cmap->state |= CM_INSTALLABLE; cmap->state &= ~CM_INSTALL; cmap->w = cwin->w; } for (i = n = 0; i < number_cwins; i++) { cwin = cwins[i]; cmap = cwin->colormap; if (cwin->visibility != VisibilityFullyObscured /* && n < Scr->cmapInfo.maxCmaps ** <21sn92INNbiv@sirius.isi.com> */ ) { row = scoreboard + (i*(i-1)/2); for (j = 0; j < i; j++) if (row[j] && (cwins[j]->colormap->state & CM_INSTALL)) break; if (j != i) continue; n++; maxcwin = &cwins[i]; state &= (cmap->state & CM_INSTALLED); cmap->state |= CM_INSTALL; } } Scr->cmapInfo.first_req = NextRequest(dpy); /* * Submitted by Caveh Frank Jalali * for ( ; n > 0; maxcwin--) { */ for ( ; n > 0; n--, maxcwin--) { cmap = (*maxcwin)->colormap; if (cmap->state & CM_INSTALL) { cmap->state &= ~CM_INSTALL; if (!(state & CM_INSTALLED)) { cmap->install_req = NextRequest(dpy); XInstallColormap(dpy, cmap->c); } cmap->state |= CM_INSTALLED; /* see above 'for (...)' n--; */ } } } /*********************************************************************** * * Procedures: * nstallRootColormap - Force (un)loads root colormap(s) * * These matching routines provide a mechanism to insure that * the root colormap(s) is installed during operations like * rubber banding or menu display that require colors from * that colormap. Calls may be nested arbitrarily deeply, * as long as there is one UninstallRootColormap call per * InstallRootColormap call. * * The final UninstallRootColormap will cause the colormap list * which would otherwise have be loaded to be loaded, unless * Enter or Leave Notify events are queued, indicating some * other colormap list would potentially be loaded anyway. *********************************************************************** */ void InstallRootColormap() { TwmWindow *tmp; if (Scr->cmapInfo.root_pushes == 0) { /* * The saving and restoring of cmapInfo.pushed_window here * is a slimy way to remember the actual pushed list and * not that of the root window. */ tmp = Scr->cmapInfo.pushed_window; InstallWindowColormaps(0, &Scr->TwmRoot); Scr->cmapInfo.pushed_window = tmp; } Scr->cmapInfo.root_pushes++; } /* ARGSUSED*/ static Bool UninstallRootColormapQScanner(dpy, ev, args) Display *dpy; XEvent *ev; char *args; { if (!*args) { if (ev->type == EnterNotify) { if (ev->xcrossing.mode != NotifyGrab) *args = 1; } else if (ev->type == LeaveNotify) { if (ev->xcrossing.mode == NotifyNormal) *args = 1; } } return (False); } void UninstallRootColormap() { char args; XEvent dummy; if (Scr->cmapInfo.root_pushes) Scr->cmapInfo.root_pushes--; if (!Scr->cmapInfo.root_pushes) { /* * If we have subsequent Enter or Leave Notify events, * we can skip the reload of pushed colormaps. */ XSync (dpy, 0); args = 0; (void) XCheckIfEvent(dpy, &dummy, UninstallRootColormapQScanner, &args); if (!args) InstallWindowColormaps(0, Scr->cmapInfo.pushed_window); } } void SendConfigureNotify(tmp_win, x, y) TwmWindow *tmp_win; int x, y; { XEvent client_event; client_event.type = ConfigureNotify; client_event.xconfigure.display = dpy; client_event.xconfigure.event = tmp_win->w; client_event.xconfigure.window = tmp_win->w; /* djhjr - 4/24/96 client_event.xconfigure.x = (x + tmp_win->frame_bw - tmp_win->old_bw); client_event.xconfigure.y = (y + tmp_win->frame_bw + tmp_win->title_height - tmp_win->old_bw); client_event.xconfigure.width = tmp_win->frame_width; client_event.xconfigure.height = tmp_win->frame_height - tmp_win->title_height; */ client_event.xconfigure.x = (x + tmp_win->frame_bw - tmp_win->old_bw + tmp_win->frame_bw3D); client_event.xconfigure.y = (y + tmp_win->frame_bw + tmp_win->title_height - tmp_win->old_bw + tmp_win->frame_bw3D); client_event.xconfigure.width = tmp_win->attr.width; client_event.xconfigure.height = tmp_win->attr.height; client_event.xconfigure.border_width = tmp_win->old_bw; /* Real ConfigureNotify events say we're above title window, so ... */ /* what if we don't have a title ????? */ client_event.xconfigure.above = tmp_win->frame; client_event.xconfigure.override_redirect = False; XSendEvent(dpy, tmp_win->w, False, StructureNotifyMask, &client_event); } #ifdef TRACE dumpevent (e) XEvent *e; { char *name = NULL; switch (e->type) { case KeyPress: name = "KeyPress"; break; case KeyRelease: name = "KeyRelease"; break; case ButtonPress: name = "ButtonPress"; break; case ButtonRelease: name = "ButtonRelease"; break; case MotionNotify: name = "MotionNotify"; break; case EnterNotify: name = "EnterNotify"; break; case LeaveNotify: name = "LeaveNotify"; break; case FocusIn: name = "FocusIn"; break; case FocusOut: name = "FocusOut"; break; case KeymapNotify: name = "KeymapNotify"; break; case Expose: name = "Expose"; break; case GraphicsExpose: name = "GraphicsExpose"; break; case NoExpose: name = "NoExpose"; break; case VisibilityNotify: name = "VisibilityNotify"; break; case CreateNotify: name = "CreateNotify"; break; case DestroyNotify: name = "DestroyNotify"; break; case UnmapNotify: name = "UnmapNotify"; break; case MapNotify: name = "MapNotify"; break; case MapRequest: name = "MapRequest"; break; case ReparentNotify: name = "ReparentNotify"; break; case ConfigureNotify: name = "ConfigureNotify"; break; case ConfigureRequest: name = "ConfigureRequest"; break; case GravityNotify: name = "GravityNotify"; break; case ResizeRequest: name = "ResizeRequest"; break; case CirculateNotify: name = "CirculateNotify"; break; case CirculateRequest: name = "CirculateRequest"; break; case PropertyNotify: name = "PropertyNotify"; break; case SelectionClear: name = "SelectionClear"; break; case SelectionRequest: name = "SelectionRequest"; break; case SelectionNotify: name = "SelectionNotify"; break; case ColormapNotify: name = "ColormapNotify"; break; case ClientMessage: name = "ClientMessage"; break; case MappingNotify: name = "MappingNotify"; break; } if (name) { printf ("event: %s, %d remaining\n", name, QLength(dpy)); } else { printf ("unknown event %d, %d remaining\n", e->type, QLength(dpy)); } } #endif /* TRACE */ vtwm-5.4.7/doors.h0100664000015300001300000000352410237640615012622 0ustar callumfid/* * $Id: doors.h,v 3.0 90/11/20 16:13:19 dme Exp Locker: dme $ * * Copyright (c) 1990 Dave Edmondson. * Copyright (c) 1990 Imperial College of Science, Technoology & Medicine * All Rights Reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of Dave Edmondson or Imperial College * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. Dave Edmondson and * Imperial College make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. */ #ifndef DOORS_H_INCLUDED #define DOORS_H_INCLUDED #include "twm.h" /* the class of twm doors */ /* djhjr - 4/27/96 #define TWM_DOOR_CLASS "Twm Door" */ #define VTWM_DOOR_CLASS "VTWM Door" /* * the door structure */ typedef struct TwmDoor { struct TwmDoor *next; /* next in the linked list */ struct TwmDoor *prev; /* prev in the linked list */ char *name; /* name of this door */ int x, y; /* position */ int width, height; /* size */ int goto_x, goto_y; /* destination */ XClassHint *class; /* name and class of this door */ ColorPair colors; /* fore and back */ Window w; /* the x window for this */ TwmWindow *twin; /* the twmwindow for this */ } TwmDoor; extern TwmDoor *door_add(); extern void door_open(); extern void door_open_all(); extern void door_enter(); extern void door_new(); extern void door_delete(); /* djhjr - 4/20/98 */ extern void door_paste_name(); #endif /* DOORS_H_INCLUDED */ vtwm-5.4.7/add_window.h0100664000015300001300000000552210237645271013616 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: add_window.h,v 1.7 90/04/17 14:04:33 jim Exp $ * * AddWindow include file * * 31-Mar-88 Tom LaStrange Initial Version. * **********************************************************************/ #ifndef _ADD_WINDOW_ #define _ADD_WINDOW_ extern char NoName[]; extern TwmWindow *AddWindow(); extern int MappedNotOverride(); extern void GrabButtons(); extern void GrabKeys(); extern void GrabModKeys(); extern void UngrabModKeys(); extern void GetWindowSizeHints(); extern void FetchWmProtocols(); extern void FetchWmColormapWindows(); extern void GetGravityOffsets(); extern void AddDefaultBindings(); extern int AddingX; extern int AddingY; extern int AddingW; extern int AddingH; #endif /* _ADD_WINDOW_ */ vtwm-5.4.7/screen.h0100664000015300001300000007457110237655640012771 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /*********************************************************************** * * $XConsortium: screen.h,v 1.62 91/05/01 17:33:09 keith Exp $ * * twm per-screen data include file * * 11-3-88 Dave Payne, Apple Computer File created * ***********************************************************************/ #ifndef _SCREEN_ #define _SCREEN_ #include #include #include #include "list.h" #include "menus.h" #include "iconmgr.h" #include "doors.h" /* djhjr - 5/17/98 */ #ifndef ORIGINAL_PIXMAPS #include "util.h" /* for Image structure */ #endif typedef struct _StdCmap { struct _StdCmap *next; /* next link in chain */ Atom atom; /* property from which this came */ int nmaps; /* number of maps below */ XStandardColormap *maps; /* the actual maps */ } StdCmap; #define SIZE_HINDENT 10 #ifdef ORIGINAL_SIZEVINDENT #define SIZE_VINDENT 2 #else #define SIZE_VINDENT 5 #endif typedef struct ScreenInfo { int screen; /* the default screen */ int d_depth; /* copy of DefaultDepth(dpy, screen) */ Visual *d_visual; /* copy of DefaultVisual(dpy, screen) */ int Monochrome; /* is the display monochrome ? */ int MyDisplayWidth; /* my copy of DisplayWidth(dpy, screen) */ int MyDisplayHeight; /* my copy of DisplayHeight(dpy, screen) */ int MaxWindowWidth; /* largest window to allow */ int MaxWindowHeight; /* ditto */ /* djhjr - 5/15/96 */ int ResizeX; /* coordinate of resize/position window */ int ResizeY; /* ditto */ int VirtualDesktopMaxWidth; /* max width of virtual desktop */ int VirtualDesktopMaxHeight; /* max height of virtual desktop */ int VirtualDesktopWidth; /* width of virtual desktop */ int VirtualDesktopHeight; /* height of virtual desktop */ int VirtualDesktopX; /* top left x of my screen on the desktop */ int VirtualDesktopY; /* top left y of my screen on the desktop */ int VirtualDesktopPanDistanceX; /* distance to pan screen */ int VirtualDesktopPanDistanceY; /* distance to pan screen */ /* these are for the little vd display */ int VirtualDesktopDScale; /* scale of the virtual desktop display */ int VirtualDesktopDX; /* position of the vd display */ int VirtualDesktopDY; /* position of the vd display */ /* the autopan stuff */ int AutoPanX; /* how far should autopan travel */ /* AutoPanX is also "whether autopan configured". */ int AutoPanY; /* how far should autopan travel */ Window VirtualDesktopAutoPan[4]; /* the autopan windows */ /* 0 = left, 1 = right, 2 = top, 3 = bottom */ /* djhjr - 9/8/98 */ int VirtualDesktopPanResistance; /* how much effort it takes to pan */ TwmWindow TwmRoot; /* the head of the twm window list */ Window Root; /* the root window */ Window SizeWindow; /* the resize dimensions window */ Window InfoWindow; /* the information window */ Window VirtualDesktopDisplayOuter; /* wrapper for display of the virtual desktop */ Window VirtualDesktopDisplay; /* display of the virtual desktop */ Window VirtualDesktopDScreen; /* display of the real screen on the vd */ TwmWindow *VirtualDesktopDisplayTwin; /* twm window for the above */ name_list *ImageCache; /* list of pixmaps */ name_list *Icons; /* list of icon pixmaps */ int pullW, pullH; /* size of pull right menu icon */ /* djhjr - 5/17/98 */ /* added the unknowns - djhjr - 8/13/98 */ #ifdef ORIGINAL_PIXMAPS Pixmap UnknownPm; /* the unknown icon pixmap */ int UnknownWidth; /* width of the unknown icon */ int UnknownHeight; /* height of the unknown icon */ Pixmap hilitePm; /* focus highlight window background */ int hilite_pm_width, hilite_pm_height; /* cache the size */ Pixmap virtualPm; /* panner background pixmap RFB PIXMAP */ int virtual_pm_width, virtual_pm_height; /* RFB PIXMAP */ Pixmap RealScreenPm; /* panner background pixmap RFB PIXMAP */ int RealScreen_pm_width, RealScreen_pm_height; /* RFB PIXMAP */ #else /* ORIGINAL_PIXMAPS */ char *unknownName; /* name of unknown icon pixmap */ /* djhjr - 10/25/02 */ char *hiliteName; /* name of built-in focus highlight pixmap */ /* two more - djhjr - 10/30/02 */ char *iconMgrIconName; /* name of built-in iconmgr iconify pixmap */ char *menuIconName; /* name of built-in pull right menu pixmap */ /* depreciated - djhjr - 10/30/02 Image *siconifyPm; * the icon manager iconify pixmap * Image *pullPm; * pull right menu icon * */ Image *hilitePm; /* focus highlight window image structure */ Image *virtualPm; /* panner background window image structure */ Image *realscreenPm; /* real screen window image structure */ #endif /* ORIGINAL_PIXMAPS */ MenuRoot *MenuList; /* head of the menu list */ MenuRoot *LastMenu; /* the last menu (mostly unused?) */ MenuRoot *Windows; /* the TwmWindows menu */ TwmWindow *Ring; /* one of the windows in window ring */ TwmWindow *RingLeader; /* current winodw in ring */ MouseButton Mouse[MAX_BUTTONS+1][NUM_CONTEXTS][MOD_SIZE]; MouseButton DefaultFunction; MouseButton WindowFunction; struct { Colormaps *cmaps; /* current list of colormap windows */ int maxCmaps; /* maximum number of installed colormaps */ unsigned long first_req; /* seq # for first XInstallColormap() req in pass thru loading a colortable list */ int root_pushes; /* current push level to install root colormap windows */ TwmWindow *pushed_window; /* saved window to install when pushes drops to zero */ } cmapInfo; struct { StdCmap *head, *tail; /* list of maps */ StdCmap *mru; /* most recently used in list */ int mruindex; /* index of mru in entry */ } StdCmapInfo; struct { int nleft, nright; /* numbers of buttons in list */ TitleButton *head; /* start of list */ int border; /* button border */ int pad; /* button-padding */ int width; /* width of single button & border */ int leftx; /* start of left buttons */ int titlex; /* start of title string */ int rightoff; /* offset back from right edge */ } TBInfo; ColorPair BorderTileC; /* border tile colors */ ColorPair TitleC; /* titlebar colors */ ColorPair MenuC; /* menu colors */ ColorPair MenuTitleC; /* menu title colors */ ColorPair IconC; /* icon colors */ ColorPair IconManagerC; /* icon manager colors */ ColorPair DefaultC; /* default colors */ /* djhjr - 4/19/96 */ ColorPair BorderColorC; /* color of window borders */ ColorPair VirtualDesktopDisplayC; /* desktop display color */ ColorPair DoorC; /* default door colors */ ColorPair VirtualC; /* default virtual colors *//*RFB VCOLOR*/ ColorPair RealScreenC; /* "real screen" in panner RFB 4/92 */ Pixel VirtualDesktopDisplayBorder; /* desktop display default border */ Pixel BorderColor; /* color of window borders */ Pixel MenuShadowColor; /* menu shadow color */ Pixel IconBorderColor; /* icon border color */ Pixel IconManagerHighlight; /* icon manager highlight */ /* djhjr - 4/19/96 */ short ClearBevelContrast; /* The contrast of the clear shadow */ short DarkBevelContrast; /* The contrast of the dark shadow */ Cursor TitleCursor; /* title bar cursor */ Cursor FrameCursor; /* frame cursor */ Cursor IconCursor; /* icon cursor */ Cursor IconMgrCursor; /* icon manager cursor */ Cursor ButtonCursor; /* title bar button cursor */ Cursor MoveCursor; /* move cursor */ Cursor ResizeCursor; /* resize cursor */ Cursor WaitCursor; /* wait a while cursor */ Cursor MenuCursor; /* menu cursor */ Cursor SelectCursor; /* dot cursor for f.move, etc. from menus */ Cursor DestroyCursor; /* skull and cross bones, f.destroy */ Cursor DoorCursor;/*RFBCURSOR*/ Cursor VirtualCursor;/*RFBCURSOR*/ Cursor DesktopCursor;/*RFBCURSOR*/ Cursor NoCursor; /* a black cursor - used on desktop display */ name_list *BorderColorL; name_list *IconBorderColorL; name_list *BorderTileForegroundL; name_list *BorderTileBackgroundL; name_list *TitleForegroundL; name_list *TitleBackgroundL; name_list *IconForegroundL; name_list *IconBackgroundL; name_list *IconManagerFL; name_list *IconManagerBL; name_list *IconMgrs; /* djhjr - 4/19/96 */ name_list *NoBorder; /* list of window without borders */ /* djhjr - 4/7/98 */ name_list *OpaqueMoveL; /* list of windows moved as a solid */ name_list *NoOpaqueMoveL; /* list of windows moved as an outline */ name_list *OpaqueResizeL; /* list of windows resized as a solid */ name_list *NoOpaqueResizeL; /* list of windows resized as an outline */ name_list *NoTitle; /* list of window names with no title bar */ name_list *MakeTitle; /* list of window names with title bar */ name_list *AutoRaise; /* list of window names to auto-raise */ name_list *IconNames; /* list of window names and icon names */ name_list *NoHighlight; /* list of windows to not highlight */ name_list *NoStackModeL; /* windows to ignore stack mode requests */ name_list *NoTitleHighlight;/* list of windows to not highlight the TB*/ name_list *DontIconify; /* don't iconify by unmapping */ name_list *IconMgrNoShow; /* don't show in the icon manager */ name_list *IconMgrShow; /* show in the icon manager */ name_list *IconifyByUn; /* windows to iconify by unmapping */ name_list *StartIconified; /* windows to start iconic */ name_list *IconManagerHighlightL; /* icon manager highlight colors */ name_list *SqueezeTitleL; /* windows of which to squeeze title */ name_list *DontSqueezeTitleL; /* windows of which not to squeeze */ name_list *WindowRingL; /* windows in ring */ /* submitted by Jonathan Paisley - 10/27/02 */ name_list *NoWindowRingL; /* windows not added to ring */ name_list *WarpCursorL; /* windows to warp cursor to on deiconify */ name_list *NailedDown; /* windows that are nailed down */ name_list *VirtualDesktopColorFL; /* color of representations on the vd display */ name_list *VirtualDesktopColorBL; /* color of representations on the vd display */ name_list *VirtualDesktopColorBoL; /* color of representations on the vd display */ name_list *DontShowInDisplay; /* don't show these in the desktop display */ /* Submitted by Erik Agsjo */ name_list *DontShowInTWMWindows; /* don't show these in the TWMWindows menu */ name_list *DoorForegroundL; /* doors foreground */ name_list *DoorBackgroundL; /* doors background */ /* djhjr - 9/24/02 */ name_list *UsePPositionL; /* windows with UsePPosition set */ GC NormalGC; /* normal GC for everything */ GC MenuGC; /* gc for menus */ GC DrawGC; /* GC to draw lines for move and resize */ /* djhjr - 4/19/96 */ GC GreyGC; /* for shadowing on monochrome displays */ GC ShadGC; /* for shadowing on with patterns */ unsigned long Black; unsigned long White; unsigned long XORvalue; /* number to use when drawing xor'ed */ MyFont TitleBarFont; /* title bar font structure */ MyFont MenuFont; /* menu font structure */ MyFont IconFont; /* icon font structure */ MyFont SizeFont; /* resize font structure */ MyFont IconManagerFont; /* window list font structure */ MyFont VirtualFont; /* virtual display windows */ MyFont DoorFont; /* for drawing in doors */ MyFont MenuTitleFont; /* DSE -- for menu titles */ MyFont InfoFont; /* for the info window */ MyFont DefaultFont; IconMgr iconmgr; /* default icon manager */ struct RootRegion *FirstIconRegion; /* pointer to icon regions */ struct RootRegion *LastIconRegion; /* pointer to the last icon region */ char *IconDirectory; /* icon directory to search */ /* djhjr - 4/26/99 */ struct RootRegion *FirstAppletRegion; /* pointer to applet regions */ struct RootRegion *LastAppletRegion; /* pointer to the last applet region */ /* djhjr - 12/26/98 */ char *BitmapFilePath; /* local copy of the X database resource */ int SizeStringOffset; /* x offset in size window for drawing */ int SizeStringWidth; /* minimum width of size window */ int BorderWidth; /* border width of twm windows */ /* djhjr - 8/11/98 * djhjr - 4/18/96 * int ThreeDBorderWidth; * 3D border width of twm windows * */ /* widths of the various 3D shadows - djhjr - 5/2/98 */ int BorderBevelWidth; int TitleBevelWidth; int MenuBevelWidth; int IconMgrBevelWidth; int InfoBevelWidth; /* djhjr - 8/11/98 */ int IconBevelWidth; int ButtonBevelWidth; /* djhjr - 2/7/99 */ int DoorBevelWidth; int VirtualDesktopBevelWidth; /* djhjr - 5/22/00 */ int MenuScrollBorderWidth; /* top and bottom margins for menu scrolling */ int MenuScrollJump; /* number of entries for menu scroll */ int IconBorderWidth; /* border width of icon windows */ int TitleHeight; /* height of the title bar window */ TwmWindow *Focus; /* the twm window that has focus */ TwmWindow *Newest; /* the most newly added twm window -- PF */ int EntryHeight; /* menu entry height */ int FramePadding; /* distance between decorations and border */ int TitlePadding; /* distance between items in titlebar */ int ButtonIndent; /* amount to shrink buttons on each side */ int NumAutoRaises; /* number of autoraise windows on screen */ short SqueezeTitle; /* make title as small as possible */ short MoveDelta; /* number of pixels before f.move starts */ short ZoomCount; /* zoom outline count */ /* djhjr - 6/22/01 */ int PauseOnExit; /* delay before shutting down via Done() */ int PauseOnQuit; /* delay before shuttind down via f.quit */ /* djhjr - 5/17/96 */ #ifdef ORIGINAL_SHORTS /* short NoDefaults; - DSE */ short NoDefaultMouseOrKeyboardBindings; /* do not add default UI mouse and keyboard stuff - DSE */ short NoDefaultTitleButtons; /* do not add default resize and iconify title buttons - DSE */ short UsePPosition; /* what do with PPosition, see values below */ short OldFashionedTwmWindowsMenu; /* djhjr - 2/15/99 short UseRealScreenBorder; */ short AutoRelativeResize; /* start resize relative to position in quad */ short FocusRoot; /* is the input focus on the root ? */ /* djhjr - 10/16/02 */ short WarpCentered; /* warp to center of windows? */ short WarpCursor; /* warp cursor on de-iconify? */ short ForceIcon; /* force the icon to the user specified */ short NoGrabServer; /* don't do server grabs */ short NoRaiseMove; /* don't raise window following move */ short NoRaiseResize; /* don't raise window following resize */ short NoRaiseDeicon; /* don't raise window on deiconify */ short NoRaiseWarp; /* don't raise window on warp */ short DontMoveOff; /* don't allow windows to be moved off */ short DoZoom; /* zoom in and out of icons */ short TitleFocus; /* focus on window in title bar ? */ /* djhjr - 5/27/98 */ short IconManagerFocus; /* focus on window of the icon manager entry? */ /* djhjr - 12/14/98 */ short StaticIconPositions; /* non-nailed icons stay put */ /* djhjr - 10/2/01 */ short StrictIconManager; /* show only the iconified */ /* djhjr - 8/23/02 */ short NoBorders; /* put borders on windows */ short NoTitlebar; /* put title bars on windows */ short DecorateTransients; /* put title bars on transients */ short IconifyByUnmapping; /* simply unmap windows when iconifying */ short ShowIconManager; /* display the window list */ short IconManagerDontShow; /* show nothing in the icon manager */ short NoIconifyIconManagers; /* don't iconify the icon manager -- PF */ short BackingStore; /* use backing store for menus */ short SaveUnder; /* use save under's for menus */ short RandomPlacement; /* randomly place windows that no give hints */ short PointerPlacement; /* place near mouse pointer */ short OpaqueMove; /* move the window rather than outline */ /* djhjr - 4/6/98 */ short OpaqueResize; /* resize the window rather than outline */ short Highlight; /* should we highlight the window borders */ /* djhjr - 1/27/98 */ short IconMgrHighlight; /* should we highlight icon manager entries */ short StackMode; /* should we honor stack mode requests */ short TitleHighlight; /* should we highlight the titlebar */ short SortIconMgr; /* sort entries in the icon manager */ short Shadow; /* show the menu shadow */ short InterpolateMenuColors;/* make pretty menus */ short NoIconManagers; /* Don't create any icon managers */ short ClientBorderWidth; /* respect client window border width */ short HaveFonts; /* set if fonts have been loaded */ short FirstTime; /* first time we've read .twmrc */ short CaseSensitive; /* be case-sensitive when sorting names */ short WarpUnmapped; /* allow warping to unmapped windows */ short DeIconifyToScreen; /* if deiconified, should this goto the screen ? */ short WarpWindows; /* should windows or the screen be warped ? */ short snapRealScreen; /* should the real screen snap to a pandistance grid ? */ short GeometriesAreVirtual; /* should geometries be interpreted as virtual or real ? */ short Virtual; /* are we virtual ? (like, hey man....) */ short NamesInVirtualDesktop;/* show names in virtual desktop display ? */ short AutoRaiseDefault; /* AutoRaise all windows if true *//*RAISEDELAY*/ short UseWindowRing; /* put all windows in the ring? */ short StayUpMenus; short StayUpOptionalMenus; /* PF */ short WarpToTransients; /* PF */ short EnhancedExecResources; /* instead of normal behavior - DSE */ short RightHandSidePulldownMenus; /* instead of left-right center - DSE */ short LessRandomZoomZoom; /* makes zoomzoom a better visual bell - DSE */ short PrettyZoom; /* nicer-looking animation - DSE */ short StickyAbove; /* sticky windows above other windows - DSE */ short DontInterpolateTitles; /* menu titles are excluded from color interpolation - DSE */ /* djhjr - 1/6/98 */ short FixManagedVirtualGeometries; /* bug workaround */ short FixTransientVirtualGeometries; /* bug workaround - DSE */ short WarpSnug; /* make sure entire window is on screen when warping - DSE */ /* djhjr - 6/25/96 */ short ShallowReliefWindowButton; /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 4/18/96 * short use3Dmenus; short use3Dtitles; short use3Diconmanagers; short use3Dborders; */ short BeNiceToColormap; /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 5/5/98 * short use3Dicons; */ /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 * djhjr - 4/25/96 * short SunkFocusWindowTitle; */ /* for rader - djhjr - 2/9/99 */ short NoPrettyTitles; /* djhjr - 9/21/96 */ short ButtonColorIsFrame; /* djhjr - 4/17/98 */ short VirtualReceivesMotionEvents; short VirtualSendsMotionEvents; /* djhjr - 6/22/99 */ short DontDeiconifyTransients; /* submitted by Ugen Antsilevitch - 5/28/00 */ short WarpVisible; /* djhjr - 10/11/01 */ short ZoomZoom; /* fallback on random zooms on iconify */ /* djhjr - 10/20/02 */ short NoBorderDecorations; /* djhjr - 11/3/03 */ short RaiseOnStart; #else struct { unsigned int NoDefaultMouseOrKeyboardBindings : 1; unsigned int NoDefaultTitleButtons : 1; unsigned int UsePPosition : 2; unsigned int OldFashionedTwmWindowsMenu : 1; /* djhjr - 2/15/99 unsigned int UseRealScreenBorder : 1; */ unsigned int AutoRelativeResize : 1; unsigned int FocusRoot : 1; /* djhjr - 10/16/02 */ unsigned int WarpCentered : 2; unsigned int WarpCursor : 1; unsigned int ForceIcon : 1; unsigned int NoGrabServer : 1; unsigned int NoRaiseMove : 1; unsigned int NoRaiseResize : 1; unsigned int NoRaiseDeicon : 1; unsigned int NoRaiseWarp : 1; unsigned int DontMoveOff : 1; unsigned int DoZoom : 1; unsigned int TitleFocus : 1; /* djhjr - 5/27/98 */ unsigned int IconManagerFocus : 1; /* djhjr - 12/14/98 */ unsigned int StaticIconPositions : 1; /* djhjr - 10/2/01 */ unsigned int StrictIconManager : 1; /* djhjr - 8/23/02 */ unsigned int NoBorders : 1; unsigned int NoTitlebar : 1; unsigned int DecorateTransients : 1; unsigned int IconifyByUnmapping : 1; unsigned int ShowIconManager : 1; unsigned int IconManagerDontShow : 1; unsigned int NoIconifyIconManagers : 1; unsigned int BackingStore : 1; unsigned int SaveUnder : 1; unsigned int RandomPlacement : 1; unsigned int PointerPlacement : 1; unsigned int OpaqueMove : 1; /* djhjr - 4/6/98 */ unsigned int OpaqueResize : 1; unsigned int Highlight : 1; /* djhjr - 1/27/98 */ unsigned int IconMgrHighlight : 1; unsigned int StackMode : 1; unsigned int TitleHighlight : 1; unsigned int SortIconMgr : 1; unsigned int Shadow : 1; unsigned int InterpolateMenuColors : 1; unsigned int NoIconManagers : 1; unsigned int ClientBorderWidth : 1; unsigned int HaveFonts : 1; unsigned int FirstTime : 1; unsigned int CaseSensitive : 1; unsigned int WarpUnmapped : 1; unsigned int DeIconifyToScreen : 1; unsigned int WarpWindows : 1; unsigned int snapRealScreen : 1; unsigned int GeometriesAreVirtual : 1; unsigned int Virtual : 1; unsigned int NamesInVirtualDesktop : 1; unsigned int AutoRaiseDefault : 1; unsigned int UseWindowRing : 1; unsigned int StayUpMenus : 1; unsigned int StayUpOptionalMenus : 1; unsigned int WarpToTransients : 1; unsigned int EnhancedExecResources : 1; unsigned int RightHandSidePulldownMenus : 1; unsigned int LessRandomZoomZoom : 1; unsigned int PrettyZoom : 1; unsigned int StickyAbove : 1; unsigned int DontInterpolateTitles : 1; /* djhjr - 1/6/98 */ unsigned int FixManagedVirtualGeometries : 1; unsigned int FixTransientVirtualGeometries : 1; unsigned int WarpSnug : 1; unsigned int ShallowReliefWindowButton : 2; /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 unsigned int use3Dmenus : 1; unsigned int use3Dtitles : 1; unsigned int use3Diconmanagers : 1; unsigned int use3Dborders : 1; * djhjr - 5/5/98 * unsigned int use3Dicons : 1; */ unsigned int BeNiceToColormap : 1; /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 unsigned int SunkFocusWindowTitle : 1; */ /* for rader - djhjr - 2/9/99 */ unsigned int NoPrettyTitles : 1; unsigned int ButtonColorIsFrame : 1; /* djhjr - 4/17/98 */ unsigned int VirtualReceivesMotionEvents : 1; unsigned int VirtualSendsMotionEvents : 1; /* djhjr - 6/22/99 */ unsigned int DontDeiconifyTransients : 1; /* submitted by Ugen Antsilevitch - 5/28/00 */ unsigned int WarpVisible : 1; /* djhjr - 10/11/01 */ unsigned int ZoomZoom : 1; /* djhjr - 10/20/02 */ unsigned int NoBorderDecorations : 1; /* djhjr - 11/3/03 */ unsigned int RaiseOnStart : 1; } userflags; #define NoDefaultMouseOrKeyboardBindings userflags.NoDefaultMouseOrKeyboardBindings #define NoDefaultTitleButtons userflags.NoDefaultTitleButtons #define UsePPosition userflags.UsePPosition #define OldFashionedTwmWindowsMenu userflags.OldFashionedTwmWindowsMenu /* djhjr - 2/15/99 #define UseRealScreenBorder userflags.UseRealScreenBorder */ #define AutoRelativeResize userflags.AutoRelativeResize #define FocusRoot userflags.FocusRoot /* djhjr - 10/16/02 */ #define WarpCentered userflags.WarpCentered #define WarpCursor userflags.WarpCursor #define ForceIcon userflags.ForceIcon #define NoGrabServer userflags.NoGrabServer #define NoRaiseMove userflags.NoRaiseMove #define NoRaiseResize userflags.NoRaiseResize #define NoRaiseDeicon userflags.NoRaiseDeicon #define NoRaiseWarp userflags.NoRaiseWarp #define DontMoveOff userflags.DontMoveOff #define DoZoom userflags.DoZoom #define TitleFocus userflags.TitleFocus /* djhjr - 5/27/98 */ #define IconManagerFocus userflags.IconManagerFocus /* djhjr - 12/14/98 */ #define StaticIconPositions userflags.StaticIconPositions /* djhjr - 10/2/01 */ #define StrictIconManager userflags.StrictIconManager /* djhjr - 8/23/02 */ #define NoBorders userflags.NoBorders #define NoTitlebar userflags.NoTitlebar #define DecorateTransients userflags.DecorateTransients #define IconifyByUnmapping userflags.IconifyByUnmapping #define ShowIconManager userflags.ShowIconManager #define IconManagerDontShow userflags.IconManagerDontShow #define NoIconifyIconManagers userflags.NoIconifyIconManagers #define BackingStore userflags.BackingStore #define SaveUnder userflags.SaveUnder #define RandomPlacement userflags.RandomPlacement #define PointerPlacement userflags.PointerPlacement #define OpaqueMove userflags.OpaqueMove /* djhjr - 4/6/98 */ #define OpaqueResize userflags.OpaqueResize #define Highlight userflags.Highlight /* djhjr - 1/27/98 */ #define IconMgrHighlight userflags.IconMgrHighlight #define StackMode userflags.StackMode #define TitleHighlight userflags.TitleHighlight #define SortIconMgr userflags.SortIconMgr #define Shadow userflags.Shadow #define InterpolateMenuColors userflags.InterpolateMenuColors #define NoIconManagers userflags.NoIconManagers #define ClientBorderWidth userflags.ClientBorderWidth #define HaveFonts userflags.HaveFonts #define FirstTime userflags.FirstTime #define CaseSensitive userflags.CaseSensitive #define WarpUnmapped userflags.WarpUnmapped #define DeIconifyToScreen userflags.DeIconifyToScreen #define WarpWindows userflags.WarpWindows #define snapRealScreen userflags.snapRealScreen #define GeometriesAreVirtual userflags.GeometriesAreVirtual #define Virtual userflags.Virtual #define NamesInVirtualDesktop userflags.NamesInVirtualDesktop #define AutoRaiseDefault userflags.AutoRaiseDefault #define UseWindowRing userflags.UseWindowRing #define StayUpMenus userflags.StayUpMenus #define StayUpOptionalMenus userflags.StayUpOptionalMenus #define WarpToTransients userflags.WarpToTransients #define EnhancedExecResources userflags.EnhancedExecResources #define RightHandSidePulldownMenus userflags.RightHandSidePulldownMenus #define LessRandomZoomZoom userflags.LessRandomZoomZoom #define PrettyZoom userflags.PrettyZoom #define StickyAbove userflags.StickyAbove #define DontInterpolateTitles userflags.DontInterpolateTitles /* djhjr - 1/6/98 */ #define FixManagedVirtualGeometries userflags.FixManagedVirtualGeometries #define FixTransientVirtualGeometries userflags.FixTransientVirtualGeometries #define WarpSnug userflags.WarpSnug #define ShallowReliefWindowButton userflags.ShallowReliefWindowButton /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 #define use3Dmenus userflags.use3Dmenus #define use3Dtitles userflags.use3Dtitles #define use3Diconmanagers userflags.use3Diconmanagers #define use3Dborders userflags.use3Dborders * djhjr - 5/5/98 * #define use3Dicons userflags.use3Dicons */ #define BeNiceToColormap userflags.BeNiceToColormap /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 #define SunkFocusWindowTitle userflags.SunkFocusWindowTitle */ /* for rader - djhjr - 2/9/99 */ #define NoPrettyTitles userflags.NoPrettyTitles #define ButtonColorIsFrame userflags.ButtonColorIsFrame /* djhjr - 4/17/98 */ #define VirtualReceivesMotionEvents userflags.VirtualReceivesMotionEvents #define VirtualSendsMotionEvents userflags.VirtualSendsMotionEvents /* djhjr - 6/22/99 */ #define DontDeiconifyTransients userflags.DontDeiconifyTransients /* submitted by Ugen Antsilevitch - 5/28/00 */ #define WarpVisible userflags.WarpVisible /* djhjr - 10/11/01 */ #define ZoomZoom userflags.ZoomZoom /* djhjr - 10/20/02 */ #define NoBorderDecorations userflags.NoBorderDecorations /* djhjr - 11/3/03 */ #define RaiseOnStart userflags.RaiseOnStart #endif /* djhjr - 9/10/03 */ int IgnoreModifiers; /* binding modifiers to ignore */ FuncKey FuncKeyRoot; TwmDoor *Doors; /* a list of doors on this screen */ int AutoPanBorderWidth; /* of autopan windows, really - DSE */ int AutoPanExtraWarp; /* # of extra pixels to warp - DSE */ int RealScreenBorderWidth; /* in virtual desktop - DSE */ int AutoPanWarpWithRespectToRealScreen; /* percent - DSE */ } ScreenInfo; extern int MultiScreen; extern int NumScreens; extern ScreenInfo **ScreenList; extern ScreenInfo *Scr; extern int FirstScreen; #define PPOS_OFF 0 #define PPOS_ON 1 #define PPOS_NON_ZERO 2 /* may eventually want an option for having the PPosition be the initial location for the drag lines */ /* djhjr - 10/16/02 */ #define WARPC_OFF 0 #define WARPC_TITLED 1 #define WARPC_UNTITLED 2 #define WARPC_ON 3 #endif /* _SCREEN_ */ vtwm-5.4.7/doors.c0100664000015300001300000002573710237645271012632 0ustar callumfid/* * $Id: doors.c,v 3.0 90/11/20 16:13:17 dme Exp Locker: dme $ * * Copyright (c) 1990 Dave Edmondson. * Copyright (c) 1990 Imperial College of Science, Technoology & Medicine * All Rights Reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of Dave Edmondson or Imperial College * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. Dave Edmondson and * Imperial College make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. */ #include #include #include "doors.h" #include "screen.h" #include "desktop.h" #include "add_window.h" #define strdup Strdup /* avoid conflict with system header files */ char *strdup(s1) char * s1; { char *s2; s2 = malloc((unsigned) strlen(s1)+1); return (s2 == NULL ? NULL : strcpy(s2,s1)); } extern void SetMapStateProp(); extern TwmDoor *door_add_internal(); extern void twmrc_error_prefix(); /* djhjr - 4/20/98 */ extern void HandleExpose(); extern void SetupWindow(); /* djhjr - 4/27/99 */ extern void AppletDown(); TwmDoor *door_add(name, position, destination) char *name, *position, *destination; { int px, py, pw, ph, dx, dy; /* djhjr - 4/26/96 */ /* djhjr - 8/11/98 * was 'Scr->use3Dborders' - djhjr - 8/11/98 * int bw = (Scr->BorderBevelWidth > 0) ? Scr->ThreeDBorderWidth : Scr->BorderWidth; */ int bw = Scr->BorderWidth; JunkMask = XParseGeometry (position, &JunkX, &JunkY, &JunkWidth, &JunkHeight); /* we have some checking for negative (x,y) to do sorta taken from desktop.c by DSE */ if ((JunkMask & XNegative) == XNegative) { JunkX += Scr->MyDisplayWidth - JunkWidth - (2 * bw); } if ((JunkMask & YNegative) == YNegative) { JunkY += Scr->MyDisplayHeight - JunkHeight - (2 * bw); } /* allow position to be omitted - djhjr - 5/10/99 if ((JunkMask & (XValue | YValue)) != (XValue | YValue)) { twmrc_error_prefix(); fprintf (stderr, "bad Door position \"%s\"\n", position); return NULL; } */ /* added this 'if (...) else' - djhjr - 5/10/99 */ if ((JunkMask & (XValue | YValue)) != (XValue | YValue)) { /* allow AddWindow() to position it - djhjr - 5/10/99 */ JunkX = JunkY = -1; } else { /* if (JunkX <= 0 || JunkY <= 0) { */ if (JunkX < 0 || JunkY < 0) { /* 0,0 accepted now -- DSE */ twmrc_error_prefix(); fprintf (stderr, "silly Door position \"%s\"\n", position); return NULL; } } /* they seemed ok */ px = JunkX; py = JunkY; if (JunkMask & WidthValue) pw = JunkWidth; else /* means figure it out when you create the window */ pw = -1; if (JunkMask & HeightValue) ph = JunkHeight; else ph = -1; JunkMask = XParseGeometry (destination, &JunkX, &JunkY, &JunkWidth, &JunkHeight); if ((JunkMask & (XValue | YValue)) != (XValue | YValue)) { twmrc_error_prefix(); fprintf (stderr, "bad Door destination \"%s\"\n", destination); return NULL; } if (JunkX < 0 || JunkY < 0) { twmrc_error_prefix(); fprintf (stderr, "silly Door destination \"%s\"\n", destination); return NULL; } dx = JunkX; dy = JunkY; return (door_add_internal(name, px, py, pw, ph, dx, dy)); } TwmDoor *door_add_internal(name, px, py, pw, ph, dx, dy) char *name; int px, py, pw, ph, dx, dy; { TwmDoor *new; new = (TwmDoor *)malloc(sizeof(TwmDoor)); new->name = strdup(name); /* this for getting colors */ new->class = XAllocClassHint(); new->class->res_name = new->name; new->class->res_class = strdup(VTWM_DOOR_CLASS); new->x = px; new->y = py; new->width = pw; new->height = ph; new->goto_x = dx; new->goto_y = dy; /* link into the list */ new->prev = NULL; new->next = Scr->Doors; if (Scr->Doors) Scr->Doors->prev = new; Scr->Doors = new; return (new); } void door_open(tmp_door) TwmDoor *tmp_door; { Window w; /* djhjr - 4/26/96 */ /* djhjr - 8/11/98 * was 'Scr->use3Dborders' - djhjr - 8/11/98 * int bw = (Scr->BorderBevelWidth > 0) ? Scr->ThreeDBorderWidth : Scr->BorderWidth; */ int bw = Scr->BorderWidth; /* look up colours */ if (!GetColorFromList(Scr->DoorForegroundL, tmp_door->name, tmp_door->class, &tmp_door->colors.fore)) tmp_door->colors.fore = Scr->DoorC.fore; if (!GetColorFromList(Scr->DoorBackgroundL, tmp_door->name, tmp_door->class, &tmp_door->colors.back)) tmp_door->colors.back = Scr->DoorC.back; if (tmp_door->width < 0) /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT tmp_door->width = MyFont_TextWidth(&Scr->DoorFont, #else tmp_door->width = XTextWidth(Scr->DoorFont.font, #endif tmp_door->name, strlen(tmp_door->name)) /* djhjr - 2/7/99 */ + (Scr->DoorBevelWidth * 2) + SIZE_HINDENT; if (tmp_door->height < 0) tmp_door->height = Scr->DoorFont.height /* djhjr - 2/7/99 */ + (Scr->DoorBevelWidth * 2) + SIZE_VINDENT; /* create the window */ w = XCreateSimpleWindow(dpy, Scr->Root, tmp_door->x, tmp_door->y, tmp_door->width, tmp_door->height, bw, tmp_door->colors.fore, tmp_door->colors.back); tmp_door->w = XCreateSimpleWindow(dpy, w, 0, 0, tmp_door->width, tmp_door->height, 0, tmp_door->colors.fore, tmp_door->colors.back); /* reworked to limit the minimum size of a door - djhjr - 3/1/99 if ((tmp_door->x < 0) || (tmp_door->y < 0)) { XSizeHints *hints = NULL; long ret; * * set the wmhints so that add_window() will allow * the user to place the window * if (XGetWMNormalHints(dpy, w, hints, &ret) > 0) { hints->flags = hints->flags & (!USPosition & !PPosition); XSetStandardProperties(dpy, w, tmp_door->class->res_name, tmp_door->class->res_name, None, NULL, 0, hints); } } else { XSetStandardProperties(dpy, w, tmp_door->class->res_name, tmp_door->class->res_name, None, NULL, 0, NULL); } */ { XSizeHints *hints = NULL; if (tmp_door->x < 0 || tmp_door->y < 0) { long ret; /* * set the wmhints so that add_window() will allow * the user to place the window */ if (XGetWMNormalHints(dpy, w, hints, &ret) != 0) hints->flags &= (!USPosition & !PPosition); } if (!hints) hints = XAllocSizeHints(); hints->flags |= PMinSize; hints->min_width = tmp_door->width; hints->min_height = tmp_door->height; XSetStandardProperties(dpy, w, tmp_door->class->res_name, tmp_door->class->res_name, None, NULL, 0, hints); } XSetClassHint(dpy, w, tmp_door->class); /* set the name on both */ XStoreName(dpy, tmp_door->w, tmp_door->name); XStoreName(dpy, w, tmp_door->name); XDefineCursor( dpy, w, Scr->FrameCursor );/*RFB*/ XDefineCursor( dpy, tmp_door->w, Scr->DoorCursor );/*RFBCURSOR*/ /* moved these 'cuz AddWindow() will need 'em - djhjr - 11/15/01 */ /* store the address of the door on the window */ XSaveContext(dpy, tmp_door->w, DoorContext, (caddr_t) tmp_door); XSaveContext(dpy, w, DoorContext, (caddr_t) tmp_door); /* give to twm */ tmp_door->twin = AddWindow(w, FALSE, NULL); SetMapStateProp(tmp_door->twin, NormalState); /* interested in... */ XSelectInput(dpy, tmp_door->w, ExposureMask | ButtonPressMask | ButtonReleaseMask); /* store the address of the door on the window */ XSaveContext(dpy, tmp_door->w, TwmContext, (caddr_t) tmp_door->twin); /* map it */ XMapWindow(dpy, tmp_door->w); XMapWindow(dpy, w); } void door_open_all() { TwmDoor *tmp_door; for (tmp_door = Scr->Doors; tmp_door; tmp_door = tmp_door->next) door_open(tmp_door); } /* * go into a door */ void door_enter(w, d) Window w; TwmDoor *d; { int snapon; /* doors override real screen snapping - djhjr - 2/5/99 */ if (!d) /* find the door */ if (XFindContext(dpy, w, DoorContext, (caddr_t *)&d) == XCNOENT) /* not a door ! */ return; /* go to it */ snapon = (int)Scr->snapRealScreen; Scr->snapRealScreen = FALSE; SetRealScreen(d->goto_x, d->goto_y); Scr->snapRealScreen = (snapon) ? TRUE : FALSE; } /* * delete a door */ void door_delete(w, d) Window w; TwmDoor *d; { /*marcel@duteca.et.tudelft.nl*/ if (!d) /* find the door */ if (XFindContext(dpy, w, DoorContext, (caddr_t *)&d) == XCNOENT) /* not a door ! */ return; /* unlink it: */ if (Scr->Doors == d) Scr->Doors = d->next; if (d->prev != NULL) d->prev->next = d->next; if (d->next != NULL) d->next->prev = d->prev; /* djhjr - 4/27/99 */ AppletDown(d->twin); /* * Must this be done here ? Is it do by XDestroyWindow(), * or by HandleDestroyNotify() in events.c, or should it * it be done there ? M.J.E. Mol. * * It looks as though the contexts, at least, should be * deleted here, maybe more, I dunno. - djhjr 2/25/99 */ XDeleteContext(dpy, d->w, DoorContext); XDeleteContext(dpy, d->w, TwmContext); XDeleteContext(dpy, d->twin->w, DoorContext); /* ??? */ XUnmapWindow(dpy, d->w); XUnmapWindow(dpy, w); XDestroyWindow(dpy, w); free(d->class->res_class); /* djhjr - 2/25/99 */ XFree(d->class); free(d->name); /* djhjr - 2/25/99 */ free(d); } /* * create a new door on the fly */ void door_new() { TwmDoor *d; char name[256]; sprintf(name, "+%d+%d", Scr->VirtualDesktopX, Scr->VirtualDesktopY); d = door_add_internal(name, -1, -1, -1, -1, Scr->VirtualDesktopX, Scr->VirtualDesktopY); door_open(d); } /* * rename a door from cut buffer 0 * * adapted from VTWM-5.2b - djhjr - 4/20/98 */ void door_paste_name(w, d) Window w; TwmDoor* d; { int width, height, count; char *ptr; /* djhjr - 8/11/98 * was 'Scr->use3Dborders' - djhjr - 8/11/98 * int bw = (Scr->BorderBevelWidth > 0) ? Scr->ThreeDBorderWidth : Scr->BorderWidth; */ /* added initialization and test - djhjr - 3/1/99 */ int bw = 0; if (Scr->BorderBevelWidth) bw = Scr->BorderWidth; if (!d) if (XFindContext(dpy, w, DoorContext, (caddr_t *)&d) == XCNOENT) return; /* sanity check - djhjr - 10/31/00 */ if (!(ptr = XFetchBytes(dpy, &count)) || count == 0) return; if (count > 128) count = 128; if (d->name) d->name = realloc(d->name, count + 1); else d->name = malloc(count + 1); sprintf(d->name, "%*s", count, ptr); XFree(ptr); /* djhjr - 1/14/99 */ XClearWindow(dpy, d->w); /* added 'Scr->DoorBevelWidth * 2' - djhjr - 2/7/99 */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT width = MyFont_TextWidth(&Scr->DoorFont, d->name, count) + #else width = XTextWidth(Scr->DoorFont.font, d->name, count) + #endif SIZE_HINDENT + (Scr->DoorBevelWidth * 2); height = Scr->DoorFont.height + SIZE_VINDENT + (Scr->DoorBevelWidth * 2); /* limit the size of a door - djhjr - 3/1/99 */ d->twin->hints.flags |= PMinSize; d->twin->hints.min_width = width; d->twin->hints.min_height = height; SetupWindow(d->twin, d->twin->frame_x, d->twin->frame_y, width + 2 * bw, height + d->twin->title_height + 2 * bw, -1); HandleExpose(); } vtwm-5.4.7/INSTALL0120775000015300001300000000000010260161275014135 2doc/INSTALLustar callumfidvtwm-5.4.7/sound.c0100664000015300001300000001524610237645271012626 0ustar callumfid/* * Copyright 2001, 2002 David J. Hawkey Jr. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of the copyright holder or the author not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holder * and the author make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * THE COPYRIGHT HOLDER AND THE AUTHOR DISCLAIM ALL WARRANTIES WITH REGARD * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR THE AUTHOR BE LIABLE * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * sound.c * * D. J. Hawkey Jr. - 6/22/01 8/16/01 11/15/02 */ #ifdef NO_SOUND_SUPPORT /* stub function for gram.y */ int SetSound(function, filename, volume) char *function, *filename; int volume; { return (1); } #else /* NO_SOUND_SUPPORT */ #include #include #include #include #include "gram.h" #include "parse.h" #include "twm.h" #include "sound.h" #ifndef MAXHOSTNAMELEN #define MAXHOSTNAMELEN 256 #endif extern int parse_keyword(); /* in parse.c */ extern void twmrc_error_prefix(); /* in gram.y */ typedef struct sound_keyword { char *name; int value; } sound_keyword; static sound_keyword sound_keywords[] = { {"(vtwm start)", S_START}, {"(vtwm stop)", S_STOP}, {"(client map)", S_CMAP}, {"(client unmap)", S_CUNMAP}, {"(menu map)", S_MMAP}, {"(menu unmap)", S_MUNMAP}, {"(info unmap)", S_IUNMAP}, {"(autopan event)", S_APAN}, {"(bell event)", S_BELL} }; #define MAX_SOUNDKEYWORDS (sizeof(sound_keywords) / sizeof(sound_keyword)) typedef struct sound_entry { int func; RPLAY *rp; } sound_entry; static sound_entry *sound_entries = NULL; static int sound_count = 0; static int sound_size = 0; static int sound_fd = -1; static int sound_vol = 63; /* 1/4 attenuation */ static int sound_state = 0; static char sound_host[MAXHOSTNAMELEN + 1] = ""; /* for qsort() */ static int compare(p, q) void *p, *q; { sound_entry *pp = (sound_entry *) p, *qq = (sound_entry *) q; return (pp->func - qq->func); } static int adjustVolume(volume) int volume; { float vol; if (volume > 100) volume = 100; /* volume for rplay is 1 to 255, not 1 to 100 */ vol = (float) volume / 100.0; volume = vol * 255.0; return (volume); } int OpenSound() { if (sound_fd < 0) { if (sound_host[0] == '\0') { strncpy(sound_host, rplay_default_host(), MAXHOSTNAMELEN); sound_host[MAXHOSTNAMELEN] = '\0'; } if ((sound_fd = rplay_open(sound_host)) >= 0) { qsort((void *) sound_entries, (size_t) sound_count, (size_t) sizeof(sound_entry), compare); sound_state = 1; } } return (sound_fd); } void CloseSound() { int i; for (i = 0; i < sound_count; i++) rplay_destroy(sound_entries[i].rp); if (sound_entries != NULL) free((void *) sound_entries); if (sound_fd >= 0) rplay_close(sound_fd); sound_entries = NULL; sound_count = 0; sound_size = 0; sound_fd = -1; sound_vol = 63; sound_state = 0; sound_host[0] = '\0'; } int SetSound(function, filename, volume) char *function, *filename; int volume; { sound_entry *sptr; int i, func, subfunc; func = parse_keyword(function, &subfunc); if (func != FKEYWORD && func != FSKEYWORD) { XmuCopyISOLatin1Lowered(function, function); for (i = 0; i < MAX_SOUNDKEYWORDS; i++) if (strcmp(function, sound_keywords[i].name) == 0) { func = FKEYWORD; subfunc = sound_keywords[i].value; break; } } if (func == FKEYWORD || func == FSKEYWORD) { if (sound_count >= sound_size) { sound_size += 10; sptr = (sound_entry *) realloc((sound_entry *) sound_entries, sound_size * sizeof(sound_entry)); if (sptr == NULL) { twmrc_error_prefix(); fprintf(stderr, "unable to allocate %d bytes for sound_entries\n", sound_size * sizeof(sound_entry)); Done(); } else sound_entries = sptr; } sptr = &sound_entries[sound_count]; sptr->func = subfunc; if ((sptr->rp = rplay_create(RPLAY_PLAY)) == NULL) { twmrc_error_prefix(); fprintf(stderr, "unable to add to sound list\n"); Done(); } sound_count++; if (volume < 0) volume = sound_vol; else volume = adjustVolume(volume); if (rplay_set(sptr->rp, RPLAY_INSERT, 0, RPLAY_SOUND, filename, RPLAY_VOLUME, volume, NULL) < 0) { twmrc_error_prefix(); fprintf(stderr, "unable to set \"%s\" in sound list\n", filename); Done(); } return (1); } twmrc_error_prefix(); fprintf(stderr, "unknown function \"%s\" for sound_entry\n", function); return (0); } int PlaySound(function) int function; { register int i, low, mid, high; if (sound_fd < 0 || sound_state == 0) return (1); /* pretend success */ low = 0; high = sound_count - 1; while (low <= high) { mid = (low + high) / 2; i = sound_entries[mid].func - function; if (i < 0) low = mid + 1; else if (i > 0) high = mid - 1; else { rplay(sound_fd, sound_entries[mid].rp); return (1); } } return (0); } int PlaySoundAdhoc(filename) char *filename; { RPLAY *rp; int i; if (sound_fd < 0 || sound_state == 0) return (1); /* pretend success */ if ((rp = rplay_create(RPLAY_PLAY)) == NULL) { twmrc_error_prefix(); fprintf(stderr, "unable to create sound \"%s\"\n", filename); return (0); } if ((i = rplay_set(rp, RPLAY_INSERT, 0, RPLAY_SOUND, filename, RPLAY_VOLUME, sound_vol, NULL)) >= 0) rplay(sound_fd, rp); rplay_destroy(rp); if (i < 0) { twmrc_error_prefix(); fprintf(stderr, "unable to set sound \"%s\"\n", filename); return (0); } return (1); } void SetSoundHost(host) char *host; { strncpy(sound_host, host, MAXHOSTNAMELEN); sound_host[MAXHOSTNAMELEN] = '\0'; } void SetSoundVolume(volume) int volume; { if (volume < 0) volume = 0; sound_vol = adjustVolume(volume); } int ToggleSounds() { return ((sound_state ^= 1)); } #endif /* NO_SOUND_SUPPORT */ vtwm-5.4.7/system.vtwmrc.3D0100664000015300001300000001257110237645271014365 0ustar callumfid# # system.vtwmrc.3D # # Default VTWM configuration file; should be kept small to conserve string # space in systems whose compilers don't handle medium-sized strings. # # Sites should tailor this file, providing any extra title buttons, menus, # etc., that may be appropriate for their environment. For example, if most # of the users were accustomed to uwm, the defaults could be set up not to # decorate any windows and to use meta-keys. # # # Variables # NoGrabServer RestartPreviousState NoDefaults ShowIconManager SortIconManager IconifyByUnmapping RightHandSidePulldownMenus NaturalAutoPanBehavior NotVirtualGeometries FixManagedVirtualGeometries FixTransientVirtualGeometries ButtonColorIsFrame ShallowReliefWindowButton MoveDelta 3 ResizeRegion "NorthEast" FramePadding 2 ButtonIndent -2 TitlePadding 0 TitleButtonBorderWidth 0 BorderWidth 6 BorderBevelWidth 2 ButtonBevelWidth 1 DoorBevelWidth 1 IconBevelWidth 2 IconManagerBevelWidth 1 InfoBevelWidth 2 MenuBevelWidth 2 TitleBevelWidth 1 VirtualDesktopBevelWidth 1 ClearBevelContrast 40 DarkBevelContrast 40 VirtualDesktop "5x2-0-0" 16 PanDistanceX 100 PanDistanceY 100 PanResistance 750 AutoPan 100 TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" DoorFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Lists # NoHighlight SqueezeTitle WarpCursor NailedDown { "VTWM *" "xclock" "xload" } NoTitle { "VTWM *" "xclock" "xload" } DontShowInDisplay { "VTWM *" "xclock" "xload" } IconManagerDontShow { "VTWM *" "xclock" "xload" } Pixmaps { TitleHighlight ":xpm:sunkenlines" MenuIconPixmap ":xpm:rarrow" IconManagerPixmap ":xpm:box" } Color { DefaultBackground "maroon" DefaultForeground "gray85" BorderColor "grey70" BorderTileBackground "gray60" BorderTileForeground "gray60" DoorBackground "maroon" DoorForeground "gray85" TitleBackground "maroon" TitleForeground "gray85" MenuBackground "maroon" MenuForeground "gray85" MenuTitleBackground "gray70" MenuTitleForeground "maroon" IconBackground "maroon" IconForeground "gray85" IconBorderColor "gray85" IconManagerBackground "maroon" IconManagerForeground "gray85" VirtualBackground "maroon" VirtualForeground "black" DesktopDisplayBackground "grey60" DesktopDisplayForeground "grey85" } Monochrome { DefaultBackground "gray50" DefaultForeground "gray85" BorderColor "grey70" BorderTileBackground "gray60" BorderTileForeground "gray60" DoorBackground "gray50" DoorForeground "gray85" TitleBackground "gray50" TitleForeground "gray85" MenuBackground "gray50" MenuForeground "gray85" MenuTitleBackground "gray70" MenuTitleForeground "gray50" IconBackground "gray50" IconForeground "gray85" IconBorderColor "gray85" IconManagerBackground "gray50" IconManagerForeground "gray85" VirtualBackground "gray50" VirtualForeground "black" DesktopDisplayBackground "grey60" DesktopDisplayForeground "grey85" } # # Functions and Bindings # Function "move-or-iconify" { f.move f.deltastop f.iconify } LeftTitleButton ":xpm:darrow" = f.menu "arrange" RightTitleButton ":xpm:dot" = f.iconify RightTitleButton ":xpm:resize" = f.resize Button1 = : root : f.version Button3 = : root : f.menu "main" Button1 = : title : f.move Button2 = : title : f.resize Button3 = : title : f.raiselower Button1 = : frame : f.move Button2 = : frame : f.resize Button3 = : frame : f.iconify Button1 = : door : f.enterdoor Button2 = : door : f.namedoor Button3 = : door : f.deletedoor Button1 = : icon : f.function "move-or-iconify" Button3 = : icon : f.menu "arrange" Button1 = : iconmgr : f.iconify Button3 = : iconmgr : f.warp Button1 = : virtual | desktop : f.movescreen # # Menus # menu "main" { " VTWM " f.title "Applications" f.menu "apps" "" f.separator "Operations" f.menu "ops" "Arrange" f.menu "arrange" "" f.separator "Restart" f.restart "Exit" f.quit } menu "apps" { " Applications " f.title "xclock" f.exec "xclock &" "xload" f.exec "xload &" "xterm" f.exec "xterm &" } menu "ops" { " Operations " f.title "Auto Pan" f.autopan "New Door" f.newdoor "Snap Screen" f.snaprealscreen "Static Icons" f.staticiconpositions "Warp Snug" f.warpsnug "Warp Visible" f.warpvisible "" f.separator "Show Icon Mgr" f.showiconmgr "Hide Icon Mgr" f.hideiconmgr "Show Desktop" f.showdesktopdisplay "Hide Desktop" f.hidedesktopdisplay "" f.separator "Refresh" f.refresh } menu "arrange" { " Arrange " f.title "Autoraise" f.autoraise "Raise" f.raise "Lower" f.lower "Nail" f.nail "" f.separator "Move" f.move "Size" f.resize "Iconify" f.iconify "" f.separator "Full Zoom" f.fullzoom "Horiz Zoom" f.horizoom "Vert Zoom" f.zoom "" f.separator "Left Title" f.squeezeleft "Center Title" f.squeezecenter "Right Title" f.squeezeright "" f.separator "Identify" f.identify "" f.separator "Delete" f.delete "Destroy" f.destroy } vtwm-5.4.7/sound.h0100664000015300001300000000333010237645271012622 0ustar callumfid/* * Copyright 2001, 2002 David J. Hawkey Jr. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of the copyright holder or the author not * be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. The copyright holder * and the author make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. * * THE COPYRIGHT HOLDER AND THE AUTHOR DISCLAIM ALL WARRANTIES WITH REGARD * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDER OR THE AUTHOR BE LIABLE * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * sound.h * * D. J. Hawkey Jr. - 6/22/01 11/15/02 */ #ifndef _SOUND_ #define _SOUND_ /* must not overlap the function defines */ #define S_START 900 #define S_STOP 901 #define S_CMAP 902 #define S_CUNMAP 903 #define S_MMAP 904 #define S_MUNMAP 905 #define S_IUNMAP 906 #define S_APAN 907 #define S_BELL 908 extern int OpenSound(), SetSound(), ToggleSounds(); extern int PlaySound(), PlaySoundAdhoc(); extern void CloseSound(), SetSoundHost(), SetSoundVolume(); #endif /* _SOUND_ */ vtwm-5.4.7/contrib/0040775000015300001300000000000010260161306012751 5ustar callumfidvtwm-5.4.7/contrib/vtwmrc/0040775000015300001300000000000010260161306014273 5ustar callumfidvtwm-5.4.7/contrib/vtwmrc/images/0040775000015300001300000000000010260161300015532 5ustar callumfidvtwm-5.4.7/contrib/vtwmrc/images/win95_minimize.xpm0100664000015300001300000000077210237645271021161 0ustar callumfid/* XPM */ static char *win95_minimize[] = { /* width height num_colors chars_per_pixel */ " 15 15 4 1", /* colors */ ", c None s None", ". c #000000", "a c #acacac", "b c #ebebeb", /* pixels */ ",,,,,,,,,,,,,,,", "bbbbbbbbbbbbbb.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baaa.......aaa.", "baaa.......aaa.", "baaaaaaaaaaaaa.", "...............", ",,,,,,,,,,,,,,,," }; vtwm-5.4.7/contrib/vtwmrc/images/eyesline.xpm0100664000015300001300000003237310237645271020124 0ustar callumfid/* XPM */ static char *eyesline[] = { /* width height num_colors chars_per_pixel */ " 1024 13 3 1", /* colors */ ". s None c None", "# c black", "a c gray90", /* pixels */ "................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "........####.........####.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", ".......###.............###......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "...........###.....###..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "..........###a#...###a#.........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", ".........###aaa#.###aaa#........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "....#....##aaaa#.##aaaa#...#..#.................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "##.###...##a##a#.##a##a#..##.###................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "#######..##a###..##a###..#######################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################", "aaaaaaaa..####....####...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "...........##......##...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................", "................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................" }; vtwm-5.4.7/contrib/vtwmrc/images/photon_help.xpm0100664000015300001300000000156310237645271020623 0ustar callumfid/* XPM */ static char *photon_help[] = { /* width height num_colors chars_per_pixel */ " 18 18 22 1", /* colors */ ". c #000084", "# c #c6c3c6", "a c #636163", "b c #949294", "c s None c None", "d c #a5a2a5", "e c #cecfce", "f c #b5b2b5", "g c #9c9a9c", "h c #e7e3e7", "i c #ffffff", "j c #f7f3f7", "k c #d6d3d6", "l c #848284", "m c #737173", "n c #424142", "o c #313031", "p c #42494a", "q c #000000", "r c #525152", "s c #101010", "t c #212021", /* pixels */ "cccccd#e#fdccccccc", "cccchijhke#fdlcccc", "ccgiiihke#fffdmccc", "cgiiihke##ffggbacc", "chiihelnopbddgbbpc", "giiheaqqqqqlgbblar", "#ihefsqolsqrgbllmn", "kjk#fblbaqqlbbllmo", "kk#ffddrqqmgbblmmo", "#e#fdddqqmddbllmmt", "f##ffdgllgdgblmmao", "cfffdddqqmdgblmaro", "cdfddddqqlbblmaaon", "cldggbgbbbllmaaroc", "cclgbbbbbllmaarooc", "cccllblllmmaaroocc", "cccccammmmaroooccc", "ccccccapoooonccccc" }; vtwm-5.4.7/contrib/vtwmrc/images/win95_zoom.xpm0100664000015300001300000000076510237645271020326 0ustar callumfid/* XPM */ static char *win95_zoom[] = { /* width height num_colors chars_per_pixel */ " 15 15 4 1", /* colors */ ", c None s None", ". c #000000", "a c #acacac", "b c #ebebeb", /* pixels */ ",,,,,,,,,,,,,,,", "bbbbbbbbbbbbbb.", "baaaaaaaaaaaaa.", "baa.........aa.", "baa.........aa.", "baa.aaaaaaa.aa.", "baa.aaaaaaa.aa.", "baa.aaaaaaa.aa.", "baa.aaaaaaa.aa.", "baa.aaaaaaa.aa.", "baa.aaaaaaa.aa.", "baa.........aa.", "baaaaaaaaaaaaa.", "...............", ",,,,,,,,,,,,,,," }; vtwm-5.4.7/contrib/vtwmrc/images/win95_unzoom.xpm0100664000015300001300000000076710237645271020673 0ustar callumfid/* XPM */ static char *win95_unzoom[] = { /* width height num_colors chars_per_pixel */ " 15 15 4 1", /* colors */ ", c None s None", ". c #000000", "a c #acacac", "b c #ebebeb", /* pixels */ ",,,,,,,,,,,,,,,", "bbbbbbbbbbbbbb.", "baaaaaaaaaaaaa.", "baaaa......aaa.", "baaaa......aaa.", "baaaa.aaaa.aaa.", "baa......a.aaa.", "baa......a.aaa.", "baa.aaaa...aaa.", "baa.aaaa.aaaaa.", "baa.aaaa.aaaaa.", "baa......aaaaa.", "baaaaaaaaaaaaa.", "...............", ",,,,,,,,,,,,,,," }; vtwm-5.4.7/contrib/vtwmrc/images/photon_menu.xpm0100664000015300001300000000156310237645271020637 0ustar callumfid/* XPM */ static char *photon_menu[] = { /* width height num_colors chars_per_pixel */ " 18 18 22 1", /* colors */ ". c #000084", "# c #c6c3c6", "a c #636163", "b c #949294", "c s None c None", "d c #a5a2a5", "e c #cecfce", "f c #b5b2b5", "g c #9c9a9c", "h c #e7e3e7", "i c #ffffff", "j c #f7f3f7", "k c #d6d3d6", "l c #848284", "m c #737173", "n c #424142", "o c #313031", "p c #42494a", "q c #000000", "r c #525152", "s c #101010", "t c #212021", /* pixels */ "cccccd#e#fdccccccc", "cccchijhke#fdlcccc", "ccgiiihke##ffdmccc", "cgiiihke##ffggbacc", "chiihe#ffffddgbbpc", "giihaarrrrrrrbblac", "#iheaqqqqqqqtbllmn", "kjk#gsqqqqqqlbllmo", "kk##daqqqqqpbblmmo", "#e#ffdtqqqqgbllmmt", "f##fddlqqqmgblmmao", "cfffdddnqtgbblmaro", "cdfdddgbqmgblmaaon", "cldggggbmbllmaaroc", "cclgbbbbbllmaarooc", "cccllblllmmaaroocc", "ccccmammmmaroooccc", "ccccccapoooonccccc" }; vtwm-5.4.7/contrib/vtwmrc/images/photon_close.xpm0100664000015300001300000000156410237645271021001 0ustar callumfid/* XPM */ static char *photon_close[] = { /* width height num_colors chars_per_pixel */ " 18 18 22 1", /* colors */ ". c #000084", "# c #c6c3c6", "a c #636163", "b c #949294", "c s None c None", "d c #a5a2a5", "e c #cecfce", "f c #b5b2b5", "g c #9c9a9c", "h c #e7e3e7", "i c #ffffff", "j c #f7f3f7", "k c #d6d3d6", "l c #848284", "m c #737173", "n c #424142", "o c #313031", "p c #42494a", "q c #000000", "r c #525152", "s c #101010", "t c #212021", /* pixels */ "cccccd#e#fdccccccc", "cccchijhke#fdlcccc", "ccgiiihke#fffdmccc", "cgiiihke##ffggbacc", "chiihe#ffffddgbbpc", "giih#fffdfddgbblar", "#ihefsqadlsqmbllmn", "kjk#flqqpsqpbbllmo", "kk#ffdaqqqtdbblmmo", "#e#fddrqqqtgbllmmt", "f##fdlqqaqqpblmmao", "cfffgsqrdlsqalmaro", "cdfdddgddgbblmaaon", "cldggggbbbblmmaroc", "cclgbbbbbllmaarooc", "cccllblllmmaaroocc", "cccccammmmaroooccc", "cccccccpoooonccccc" }; vtwm-5.4.7/contrib/vtwmrc/images/nestedsqu.xbm0100664000015300001300000000466310237645271020305 0ustar callumfid#define realscr_width 64 #define realscr_height 48 static char realscr_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0xc1, 0xff, 0xff, 0x83, 0x87, 0x63, 0xc6, 0xe1, 0xc1, 0xff, 0xff, 0x83, 0x87, 0x63, 0xc6, 0xe1, 0xc1, 0xff, 0xff, 0x83, 0x87, 0x63, 0xc6, 0xe1, 0xc1, 0xff, 0xff, 0x83, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0x01, 0x00, 0x00, 0x80, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x87, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x63, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; vtwm-5.4.7/contrib/vtwmrc/images/vtwm.gif0100664000015300001300000024747010237645271017253 0ustar callumfidGIF87aóÉ÷  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××,óÉþH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏ C‹Mº´éÓ¨S«^ͺµë×°cËžM»¶íÛ¸sëÞÍ»·ïßÀƒ N¼¸ñãÈ“+_μ¹óçУKŸN½ºõëØ³kßν»÷ïàÃþ‹O¾¼ùóèÓ/¦µ¨X³f³x5RO¿¾JRjÅɃ…LT¬4à .”bßjÔHèˆt`±H¢ä¡}$¨á† ­Ì-Ê4“É#~lB5ìÃZ2†Gp‘!‡4Öx +žt2J!f¸QÅ =˜‚rŒÁF ?hÐ56¹¡$¤l2 ,“ÔH;±Â >è=4AB Z8iæ‘ÜRKYD‘ƒ8üP:ÈÄ;˜C džé§zìÒ lŒ±ÄAÑC .¸ðDHÄpC $dñç¥ß±ç|ª¤!J)aä¡Ã 7”0{ð·Ã9¤ÐÂþ7̈é¬Ùá§c@Å;4q<œ0…n¨!†WЪlwŽ 1‰‹¬qÇd„ñØ0IøÀÆ]̠IJäZGK$’XˆJH‘ Ñ ˆD|ˆñEpÔaF œ‚ ¢”kps¤ÈÆÂaÔÑGmäÐy°!JNÀ…?!Ä?ôG†—lrr¢Ä!FgŒÇT”Që1JYäÑEB qÄB„!mÌwòÑÄ¥¼²@RÈg¤ÐD{°á‡$¬ ¯XQFRÐ C_,ñ†!H§í›(p|F<ÒÇ_Œ@ q¨ñGþ®Š…OìpEQì°Yì Ej7®[Êu42IXRˆ&=xÂH' ‚2üQ5_´¢Š?Ñ…1Ô…ã°Û&ÊR±„ e¬îFn€ÑD=QvØaÄ"4‘Ä%˜ð%ì0EìÔË& U,ÑDk˜qÆ!ÐÁn0á„lÐa‡Mˆ0EP¤p‚Lˆàzõø»vŠlÌAÇ!tÀCÞPƒ<Ô.€@¼50$"ø\€ƒÈ¡ æCþ6¨š@` ?øÁNð‚˜ WÀ dˆ9ÀÁxxCà …, ¡Fn€…*Œáþ biJ¡.!d.ØÁ s@†/¼nø‚µðÐBT¢_x¨†dá [pƒÇ8š<MTK @€ƒ|A h¨„$ !…1 ÀÀ@ZÐa%A 8ðÈHÈÏô ]¸a’@° <ÈÂ#Qˆ+Ô¡%€ö¸‚4a‰B IÊÍ„‚’h‘…0LÁcÐÅ,(1‡9 â`(A ^…'„¡<øV€p)”ò˜—Ù„"$)i‚ø2’!„ìÀ €@ @`2xÁ\ž„Ddšs2Ÿ%Ò  h`%˜Ã€Ñ & ‚þˆf ”¡50‚F <4Óm‚ðÐì@<ô!wÌe²œb_8©6ɉCÀá€# XPBð„€\Ðqðjh³‚Bˆ¸@pð2àP°wOpKM rPMÀ8C˜…$±Lðæ­6”à4  P/px8 ý¦…nÈ3W ƒ@sÀûg>H`nP#6ðdÀ5>@qoxˆþñtrn°¤¥—×&rÓ&À-YÀVÐF?€ˆžh Sk 0 ]i°8PQPe䌀ÉfŸg4Ÿx‹‘2ëöX oRÐg`M½ø7PNP4@Gq@Y‘…‹Ð¸'Ò¶€A`Sà@ `€Kð/>NB Ux…ѸŽáAPpD o0tGJ"7UJ+ôH@O0hlÈŽ9¢æþÕkÐDÐBK°l0CÀ.0Q½8L†X}°<ˆC  0!À$Њ^g<Ð;àþ;°.ןÄð³ð “0–@™Ð ¥@šà‘Ž ŠPAvb…lÀm`Yk°=2p6 tÈ1s¤ z ûhP|дð ­p Gðu`”Œ1 ‡pg@C¢p ¶0®…0‚`€ „ J pÀ ÀàW6KÐÐ0 ñ‹sà`OR+„À¯P‹€f÷1.° “ bÀQp¿JPÐF0 6` 08'ðAÖt2Ð¥‡ ‰c HP)œŠ œ }$ wP =@ %Æ620 c0^rô ^Ù _P'càdà&°þºR/Yj)jÀR€ `X mÐÅx¡ðe0©Û“Z0*¹BpK kšgðIÅ$Š˜MPŒUÇà5ðð’!ÐiXà VÀ\ŸÐ+VÐ Å jÐG =ÐtpL@œ -ÅT)bl·bÀX@WàEðB§¦ö3iÀz˜€°àlÁ<dKCÍì*` à’'[0hXV<@-ð?@Ï¿¡4o{6À‹ h`I *€| éYÐCÀ<Ð|0°jPCLll+¾]¤pmp¢B¬P w`C<` ݱ`@36 +° ¦(ª1ÀÈÊ8già¬8ÞtÑyo@~æ7±°  {@7€mÍa—Ë£8*`:]Pˆkà§5eã[P.‹ào uð“'D ³{à\6à)@E°“_p/hà7u°# ²¾à§B°}f°~ð*Îât1Y©•5Ðo ÍúXp`‹1*h8pa0ŠU7 ßV‰‚e ‰'ÐÌ2åR.{P’»žwþk`[Mn޹^:j>ðlÕ‡e Õ$l>=ðØ^ÐN€R”YçsñR„x@;X> 2°ék»ÌAå/ ~yTà– €@¤ åDà-0>`_^ –’a@ZpžÀ x0\e@–vÀ–°Zb –¶ÊÁ gWÍúbã1s9Ð ›ÿê LZöañ] ðV3e°XÐ,uP‚x߆pb yuX èÇ¡L‰ "j >Г¾I<ÆÊi€€¤.ù[ñV”à •lU`OˆhþЊpOPwð]Я+ /Þ ½Ò‹ÊÄL'G'Ê9ñ…žYàkPR00i€Ï(üZY~°7·U4 qp÷°SP™3‹*ÁPòƒ 6N²°QâDŠ-^ĘQãFŽ=~R¤FQ–4µ±áÃGŽ#B†Ô°AC xàh9A¢œ*MâŒTèP¢EEšTéR¦M>IÊÍŸ@e–L©±£Åo¦hi¡A šDq"åÈ*„ÐÀ Ò„ TºuíÞ­I –)NªPI’N;xì„Qcb “.)R€¹²C¼•-_ÆœYófΊþjÆÎAN´@AÅH-dXΰãÑ‹µ¼HæÊ—!R|x¼ò–"MH ¨Â.;¸la‚¥š0_:€(ÒCÈ)½^üxòDOÙ¹#‹%-^”Hƒ‹–04x SÅP ?v4iaêÒ`B !ÊC0ÁŒÖ;ƒd(¡+Ê(B3®èâ†4ÈÖ‚¤P°DOD1E3…Ž+¨há„V˜ÁKø`c‹/Â0#:ØøbŠâŒ,´Àb%@@!†ŸäŒ–HJ)¥6Ä`d@´p‚&Âxán¸¡!„ØÁ”ˆ" 1ð€2FDiþ¦^~aÅL ä³O?ÿ$ª 'hØA$°À’8ÐX‚ 6ÞX¢‹-šã‹@úðBˆ#Hâ MË4Ô§H‘# 1ÒPB.&œˆ‰CJÈ‚$zèâŠ2Ä #‹'Ô€ÒGŒé%N(éâ )ˆ0B &¶¨ãQD9Q§¥¶Z ‰Š)¤£Îkè‰7Þ T (Xëã3 øk *άÂZy‡%1΀c¦)žh %Q¡D´âÜ/ÀxâDŸ$‹FáÄ‘NÔøbŒm¿Pâ'Òc 6Ö˜7d‘G.*ÞøA/¼¢ˆÞ¢KŠ8ð`Çp¨a 2 !¹çŒêþC 'lÐa9ÚxÎ5$dˆƒ ) # ŽÞ‘KDQRž=¥ CÔX„=v@‡!Šh© >êè–T* ¥A®ö¹n»ï6ª9üøáˆ2Æâˆ#°ÀâÈ2v(!FxP ¢ø o»OÁ# 9®èa‡Êð‚‰(¼¸!ˆÜ¶ÐÖ "„˜£ÐÚÐCÁHäˆ#;˜xÃŒG*‘„Š/ZÒ–@ƒŒ8N1åUîpŽ=$g¾yç1 e‡#ˆCŠ*†¡†l†êøCŠƒ˜²çG¥,ªØAÜÀä’Nâ^&ú"âb‚‰x`ÔÆ A‚ b(þºàˆC< (ÈÀ\‰B´BÀPE, NT! (H‚Æ žÏ„'œ—-$±5EÀbpHÂ!˜°­:ðaKXx€&HÁÚá EÖ…&Èà(€DüÀ â‹PDØ„#€¡}Ø‚©¤™ÉÇ{Ø…ð 86°â…ðÄÖ,\âr˜Èæ#€’Є˜o3¾"FX OPD…[‹–¹H‹H" °c(ŒP…#ü JBÚ` [È‚ø¶`6‘ˆ‘Õ2D}VGÂLX‚#aˆEœ!@ÂâP-”]BÇþ# ,œ {XÂØÐŠV(‚?ØV> A,bWÓL>Ь .8gˆ‰HXb„pEô ÕÑ!§„§I53˜!RÐBÙá,Há hxAæ$R7xÎMpŠ'µ(è‡=@!28`ƒ¢0…+p‹ iHÄ#„ÇA#"$Ì0 ,¬¡ I…æ`….°á¨ÀBï®à… ¤€.BJЂBzH‚¡‰Íè…‰¸!a…>"ÁXÅ&Ñ6ÄŽøÄ'‘P®â­^f@BˆÀ‚h¡ wŽ .” 7è*ÉJ2T! [xƒþ!8à) ƒ¤à1xh7°ÂBx˜ÄÚà?a è€ÐöÁ}eq`C€Ðƒ7ÄádÀoŽ0…/x /‡…# áf¤G`¤`@\±–¸ÃÞ ‡1xa’ðÃܰWæÎën8C°…Ì X|ÀÁš …1¤ÀˆÍ Y)‚¦/hÁBŒøA$ðW<Ì vèƒDà¨@9ÈBxø`…1ÌŒ¸‚|D8 'W²€…–HÁ $CŽÐƒp}ŽÚ²à…7TÆYPÒà‡94ƒIX0¸´Q€"§ÄÜ@þ3”œÈC”^‡Š~°„!þ0( °‚€•Ú!-¸B­¥Š4Ä! VÂ䀃Xà5Rpƒ4µ€”(D"È ˆïбØ.RŠUâ3ÁÂYfЂ5À '8ƒÒÀ4Œ¡ ]Ø,JaØ` \ ƒ dð„ÊÀ¢·»D¦à‰H¡BC DÚ„ !w˜Cš …'‚9èN]|‹S\" nØAØð a °‚¤0š'äz ñ‚wáÝ` [àD"•½òòt bXÃX€ƒd;xx>Àn$H¡,÷“&¾°%? B)H¡<`œ‚lÃ_RØÂ;ƒ# 1¤fP‚þP0äô.Hš¼@ï.0ä°«¢}U@†.X¡2¸B Žp»ø Œ¸ša„=¸4XÀ$ KX°Ñ5Ò s3Ì ¢ &ð®zè½CŒJ<þ! b@Bb¶N×E§D*"º G°Tá†ö&1F8X†(´Ah)™‹pD1†J|ŒƒB fPx! _˜#Þ ƒØ@(´ð‡AL¡îa€t¦°Žµ€ïOQa$$¡‡F<<QXAâ°a ?è„C@„3Ђ+XF˜‚5`ƒ$Pºx=„FÈ…ø%ž™½ Ü a¨)ð‚²CÅPÁR) ìlé)Ø5øOƒ5€A6   §Ðȹœ‚(ðŽG ƒM(…€¨xÓû»EÈ!€‚#  XðB(þ„( ‚íb)!ˆhƒ4p0%§p$8„=¸„9H,ƒè<(%‚h„=(„˜ãF8).&ð€¸D ?8:à Ÿ0ÁE´ŒX „!à—Ÿ Dèƒ+Ø‚(°*ø9F„PЃy+"X0Ø"5X# *À‚$8‚*À‚ö! Bë=˜,„&˜‚ è/€¥5p#X€ °3{8,+`@ 1*ð ØØA¨ \‘ x€€2€#-€  „9Ѓp6À-à6ÀµƒÎá(@Éð#Oþ„'­ébè…:i†YøƒR茱1à6˜ƒh3P@A2€ô )5 #¸;.8‚!Pè}œÄà°>XdP†6؉+"ÈpÑ2˜ ˆ€ð€(Hƒ84Ø‚x,¶Ó’:(VƒŠ¯B!x„3¨48À09/ˆÆû’20Ss‚.¨;¿ ‚(øPà)Ѐ J8Œ<¥EP2PB¸KèBÀ‚>è Ê©‚/à]€(ð‚5XJ8"ù,è‚ °8‚ è*h:'˜ƒB0„JpI˜!1H?`ƒ0ƒ/°Jbƒ4À-,x÷sŠKPƒ8!˜…VP† (2B¨²´/d"H<è à°b›¬8€‚!(ƒÁú‚S}T桃¢„8„!þh‚Ö\#€¦Î¸„6p(-ð”øÂ#Ð`¦z-®{…SÈ…BÐ÷É#‚1ƒ{ëeñ‚žˆÏ87x0¸¸ˆ@` ‚"0ƒ€‹ƒ6ø)°Që‘;ƒ@ó¥ˆ: -Ì[¨„1H$ØVH…f Ø*‚AP)î;T³‚´ œ3°`\ƒHxB5°DE„X»ñcP_8XÈ"‚èÜ#)‚€XÎ .à#;ÿø¹|ÛˆƒP€&H#ž0€+«´Y­0Ø6è"à¸'wƒ¢©þ7ÄðJ²"ØÁU#‚"ˆ8Pƒ=ƒC5‚ÏÃ?à‚&¸‚ø%ëQ£W¥ :ØÈ,XKØ pët1@ƒm¡˜>êGh~9C¸ƒTø¸(h%Wô\ܺу*P@@…Sà…3h:1­É pÔÊ „ü¡ 0°Èžó”Xßñh„rs‚2`@‚ :¨œ ZPyŒƒ=à‡íŒRÐ5È¢”p‚ªýêt‰m¹Wd‚2ÐŽÁ¬ƒ¨4hƒ<Ð(8ÝÑjÈ€,Ù¥øª6]X…føè€0hþ‚'f‚[~zÀßùDh'X¨ƒ0à„èÂJ&àÓ!á®Z(RØ…R€„Gp.… ÐLè„Íc#S ëŒJ@ƒ6p* +XQ¸„OhHÀ.ð„RP‹UcÍÈ*N(†bø„GÀ@x‚1«ˆ:€à@E@F ‚µôƒ2 @†aPƒ °;ø‚9 U%0&€8@؃QP …^Ø„[à…6¸ƒ 20#‚:„Ð#UŠç2ƒ(8‚/X€ ˜€<ƒD0A°ƒ3hƒÿy7€8è ðŸZþ0…R‚*¸MØÀ2¨$(¥I–—¹ƒ$à=H­+ø‚%¾ ±Q`HàERP¹Ë8Þ >PW CàƒG89Hƒ[Aq#è×úƒIÈE<ȃ2؃;°„s!%ÀT¹=x³„<È@x$Rô·í ­©>¸…]5è€C.c:Ђ«¶F „QX0MH„DÀ•Gƒ&ðx2H×.È«;(„h"` [ðIøƒÐ=R@@ˆ„#ˆƒ4î70=ˆàl»„.„tùBƒE(Q¸°RK´˜8:XƒJøCPq$‚#°‚pŽçbƒ0H…V0‚jLe€˜ƒ.ƒ1Ø‚FøƒN˜‚(@³G€H8H`8óô)P‚é6úƒ·$`Šäf(9˜žQp‚0¸¯0ˆJ‚%ØU(Àï2H‚ 7(„èR:˜78 à„OØ)ˆ€*à–Æ<î?i„™b08(10H°4ðˆ @‚ô"5€þƒ-„A¼¼ E8ƒ/(ÂVX¼í‚Pƒ|Ô‘ H‚¨ñºŠBxrz2¶ÈP‚èk•Ü…ƒ6@Ið?&ð5ø„)8ƒåé Yb„8P…UÈEˆ¤RPÀ€ ùêû]Ê$RD°‚+؃(<€ `%ØO@í!¸‚?´¦¨} FÇ5ÀBxJ(Ø9) ¸ÌÑ/» @A¨à ` ॓à óiù"Z ÔѲ=Î"x졤O0‚~éx]éëߦø¢YÈUˆ¶uõX…ø‚2ÈP‚!ÔQ®þ‘–H‚4H„TH®:(‚%Ç&ƒ.ÀƒÞÈJ(½#‚l+‚$Q)€ˆ!€¥Ì¸w‘^‚-èW¼»(ƒ58#ÈL`0øŸ$¸pP¨‚-ˆ „#è‚Ј/@U‰â 0œ¤P¡J€a ƒ*X‚(Ø) ‚C©$†è¨‚+p‚"àFX=p3¸à,¾ð%°‚pưKX!h „}_öá&€C°„3 ƒ>ÐA Ðù`ƒ–*ƒ-p„KVÄØ–`V»øƒ)°„E…ôj: ¨] 4@ð\›Xdþ<@ƒ·€ñЂ„CPûK„+L®:{±5È‚6 =H+ÉXƒAè^7÷Z+o+ ¨€;~ÉŒ×aHP„;CƒÈï¬8™F‚˜ßò¨³‘Œp‚5˜¬„)ø ð€Ýº‚_¾1°ƒ  Î¤p$; ˆzº%˜‚¨Ùbã¼ ír‚w½>]è´€& ›LˆHYr§ˆ=z´H£M9qð`áà#È"G’,iò$Ê”*W²léò%̘2CÚâS«Q³J«®LÉÒåKœ-hR0ÒEÊ <„„À‰Œˆ!Bjä˜23f(JtNyêþä$L)B YJ±ÃÆ$؈räHNŠY³ÅÐÕ¼)mI"%ê‘¥/^Ø™#èœR¾àÕëø1ä’®DQã… &<`s抓>_ØÄhâ¤G‘ ,Xx`ƒC;RÀðˆü²T˜Áhä©„P (YÜÀ±ÃÉ!?~Ô‰‡Ž•&TD,?BNë j¤P:$ç¤$(8ðáIÛ¤ä©bå ™Ôð…`8A‡€m1H";ä`“´,RŒ+͸áu¸AÄKTi…A¼ÀÂH`ÆK ÙG ‚„1Ç)11I¯‚‰%„ĉ-£¨¢ˆ 8ÔÀBB,‘D /ôÀÖqÇ´ÇBT„a…ì€=ü@G]$D H‚ zl¬á‡S¸0±*iœ1Æ4`¡Å ›l"€¨âÊ"Y˜‘ Jq-8ÁÄaŒ1Eä°D™Ò8rH!˜ ÄiŒ¨Xì DG¼Ñþ…2PaÄ"‹´A†3H¡lˆBò7ìÀC Ÿ4ÓLO(ayÜ€„E-ØÀ‚l¸!FRààÜrûÿ?#Š1Tv8ÀÐ!`À˜À¨à‚¤@l6p…#” N(Ä#l°‚«¡ˆjXÄ øðƒ" Œ8‚, ‚"vØÁì@¬`P`Búà5Xh˜ˆWTÂð"†à„*èÅ! Rh„_D!FQœ<ãG@1‡KìáPp„#²@†a #(Ü…À u˜Ã¬à…!ä`R˜X!”p<Üþ¡ yÐà *á O‚T ƒ HÀ‹x!¤$QD y¨ƒ hP„ÈZHK Z0Ø@ƒÑ&fA c¤© r€Þr…"\¢L¨€¿À6ÈA¸@Z@‚7`!R P0‚-8 FÀ‚ìàS\¢Œ¨zlðƒ!Dî|'ðA }ڢƀ6X! \¨4=ÂLMw†/¸¡ °ÁF0 TŒ.0 d1bD„¸Ä!v1L”·Â®Ð„RŒ" 8A®°×@t 4À(üáŒXA V0)˜¡Tž Ah"š˜Br!@ªÖ½.ÖD!†=eA#¨ÂÜ@€€ Â‚@ƒb qÁ LXS Af¡‰ þ’¸„Ür„!¨Á"q‡#æ OÀ €…ÜÁAÐÀB0ÄMkÅäC3ˆÁ DpB RøÃÛR€Á:ðp°@ |ØC蚇@| ŠÀnÄNOÁ-˜C¦0†D @ ‚€@„Ààþ,ÁF0%D¥¢E$JQŠJ i Âx@¼+|„ Mh„ÐÀƒdwhÂòƒ( a ‚èÃ#$¡[ møÁf€!4AFs€Äˆ.Á R8bqFP¤è ‡²A`€€º `!H!°ä QŒâ p@*(! KþB Æ…K<"aH2˜°ƒtÈÆ>ö‰D] 'PÞ  ¡`ð°…&¡àÎp†2`ád „TÀ/€ÈDx‚ðЂ%8ÁV[bBvp‚?ì¡~ØBp!è@ mˆèìƒ¼Í qS"+RáˆDŒv?˜ ÐP#TÀ Xxf z°ƒ%(A 5ˆ˜Ð[ý £+˜Au‘-¨@LA nóÀÚB°‚L!Ñ)XÐw‹Rtá ÷±uÄÖÃ!08ÇgxƒZ ƒ%Èà Ø,j°„¤K+àÄðð‚:`%8‚z „Šˆ 0ØþÁ p ¡<½ KøÂøKT¢cx€R0-2z@Ý‚eÊ/\úð¹rÄH9aš5‹t¥ †"œ1bCÊVÇ!W4Ê”†z0A‚J!A^”`ó%N<Å?B±D5¢pâ>ð؉|`"¢XY‚ %ò€ƒ2Ò`cÏ#j¨!9F ¬HãÒ“QNY勸ø¢K°¸Â‰#†˜ƒ Ob=‚X8Ò6ŒØ¡Œ/tXc "d¨Œ+0±£l‘„QN äi;Q=Ú¨C +˜ ƒVnè‹%Ž c 7²P²‰#ê`£ŒFÀA 2Ž˜¸¥4Žxb„ºÄ(rbƒ.°á…'¶ `‡Ë޼¨¨þ§EG*ã –¸êFÒ(CŒ1¬XB d€âLQ⣤`\6~BŽ5ÎXC .Ú€ƒ 8ÞH£Þ,¤`â„ò=!Š lƒ :Žðõ Ü’È¡n8¡ˆÂx"&ž`鄈(JøÈÃ,–뇖 ‚ŽJ¡¤>¸àÂ2¾âBŠK&Á†ôà?È D@A‡/´`cÐØ›˜EÁpC‚pƒÐ@ê‘ÜAÂÔt)5®°¥>”Á]pffˆ>Ð `hhà.Ø  dB \p#ôá |@!X;P+zD a5ÀÁ R þ Xp*˜„rH œ1Ta YêAІŒÀ^ƒÔB—4  %ð@±ˆîm¡-À@ R°„-L@á!â,ˆ® #ÄA„)a#èCÆ@5x VÁÊ™Na2Àá)ôBä ¬! cPºÀ3Ta p C R …&L¡KpÁ p`&Tá gHƒÀ+,è %:E z€!à D@…Æà‡,KˆH#ü°‡> " !0v ƒ$ ˆD'‘ :Øa‚(Äz¦ŠRôáG‘Sì! )8Á¬°–! ¾bþ ÖP«.ü c1Ø™QnÔ!W‚ÔP*8À:0$ÔàÀ BBF0‚9l¡ ‰0Db1 2 Á}`!¢p&0â/š|ÃH¥‰­Ð"¤ /^1‡ÑAbL`Bú8(„¥(…* ¡T•½"¸ØÅ'¶†CÌZ B%2:Ô`'€B•Ð(Adˆƒ ,€„ ™…š@”£ý… VáŠP‚R¨@ TA²`ÃÌÀ)è@C0S•@ñ†¸A T€Âš …$ñ‡Cœ†OfºD…&Ðe Ð@0 € ï©Ð a …´ †-ðŒxD%ÞÐ…0 >‚ ¾tzÆ2zaN4–Ã^'Ü€L\"€ !lYØÂ Z€‚½Á¥CÄ!H€‚œÁM*Á þÐ:5,á)Opº`ˆ¢´ª{Vl®^Y08¨ “°„€• €R„A iP’³|ZTî @Ș-Wæ…PŽjc€$ú ôö]È‚[ï0OÄa|P0T % A?ÈAšÐ$IBäðÜ ^H;ÇWÖ Y4ŠÃV †'x F0„.á…5p! o8A ‚P"K9" ]ÀжÀ'¡Rà‚XÒƒ€Á.ˆBÔà/t é ÙDÀ=á!v_¨‚,Nð)ðOQ˜V„$H¡/ˆH3 ÜÀE°Aôpþ$\N§sÁ e6°!]1Û‚ V ´à ŒH"Ø Úà èÀØ è “x… Š ¸  ‚l°€ ZI ð€åæó@Ð!ƬŽÁfÔ,¢U¾`ÖŒð€ ¡Š V¯ à  øi8@Ž@ VÏ:@ †€ Ì` øÀ*á ¸  Ä@ ¬| u’.–Î  € „`KŽ Æäà ¢ ð†Ë–Aú` ´€ ¢`™<ˆ#¸¬Ë°  ¬@¢0 æ0ÌŒ¡A$Á ô˜N„¥•p‰ êàHë„í ‚  ¶ œ@ h@ð@þ€  $Àf@/…Í,G !xîš¡Œ¡òÀ¼ä ØÀˆà P`ÚàdŒÁØàx`Þ  šÀ$a%fN ^  áÙâÀá„p@uœÏ` n@-ª \ÆÏn`È ê¡¨0 àj€ bÄäh Ì®ðt`Ø€(Aîá6$ÄÔI NGØà ÀL"L¼@ V@Š tÀe Ô+/|À ¶à! Úà4 ¨€U2ìØ`ô ¦h TXÇ PÉ tò€ ®d€ ¢`ú@¾À þ<Å( Œà â @ °@ ¨¡ä`4AÑš€ß¦„  )#ºVÀ  ˜Š`v€FØ€ æ ¢` ¤À>¡Z–/ ®`R#H¡ËÒà @"þÀ/“ špÁA! ì W îe °`P  öÀ8Çòà Ö@ À@ Ôà ¡¬ ¬ÀÁZa Øà<€(f²JVCìÜ` Òàf>¡,A@Z@‚!€¡FRÕ „@!Q (ÅR„AØx€â  І¨ WÀà t !iæ:± è+iÒ>! ¶`f&þ rÏ ¢  Äà f ¡f`BkL  âŒÀ TàÐ`ü€ˆ ÖÁa°¥•‚ 9¨À l >s ŽN"p¡Àà "e-€ À  Z« Á–h &áØ ˆ€°6;ì>Há$!$ ÈÀê€5%ápa†“ A¬4.,Y€¤€MxŠ ’F¡ü@t@Þ F!dI dÀ6€¢‚  ªà ÌÀ *# ¾ Ò€åf Šâ¨ ”‚â tAVA4 ¼dÀxD2à ôt›üþ#šA ¶` ¾ÀZ`T ¬à ºà€%!šAÀ 72õ@ødFAœ@ú@¤@(AÚ€ZàÌ Ø P®@Ç pÀHàLà¸ÀG[„ÉÌ@ 6¡¡ â@ È`ž@¤ p¡  L€r@ Ê ºdj@-ÅánàÈà^Î ”@¿"`@ €¦ ÊòR€B  ! AÀ‚€ X€ Š€ 耤'¯ŒN@ÒÊ1 † žÂ ú€J‚Ž% ²àìÀ 5À’€ ƒÀ °@¡$<àjàNàþ€ÁªP^Âjâp • $ :À´¨,Ó’6 <ã„ N€²€Z7Êþ`ú@&Èà a€!Fv€ –`~æD ¬ ˜à .¯± ˜@ ¼Úð ¬ PbÜT—”` °`\  —€à˜ Ü  œ ˜Þ˜2² º ^@x¨ÆÌ‚ͪæjâ¦ÈWžmJ‹ŠÎt®€S\À ~ÀhZ€ðD//…à 0‚ˆà®òÄ` T/ îB{T5€  ˜@ ÞŸ€ Œ` À ¨‚ 8¦ :‰ÏŽ ä€(A ¾$ h þ8 d šsÔlW„u\§ì ר` ~ ,7Qšà* < p` ”às€á¾ÀRl¡ ²€ðá^8¡ˆÈ þg£@ ü@†\ ¾<`&!¶à%œ`hjüD™tàl <–€a ®  ¨@ x@ÐÀ!óÖ&†àÀh@øž ž  ABàT @X ÒÀvàr ¨À ºn†à“&¢,! Ö€ Ì ÚÎ` ” Õ v@P ¾T@~é7£iðÀâÚ  R¡pÀª~‹}@®àn¬`m6®#°` ¢@ˆ€ ¶þð˜)rG` —  Ú ÷ ŠX€ðB`^@[Œwè€@†Ñ@ °` š‚ z íâ6M P!V£ Š€ ˆØºî:³`IŠ  X` | i ˜€ æ°† 0‚@¥` (X€Pm+³T•ŒÀúnáô ‡“ •®  ¸Š l ¬  üg „@Ø0A| ÞÀŒ ž5jA€¾îŽQ¤+Ò V ì Ä òFºà *A bs,@ ¸ ’€çÚ¶ ¤¹R$¡ þ pÀúÀ€@ႚÀ=nKè Š8ç—‚éò á þ¤À^µ@ ”m¦€BŒv†;ÀýøÀ•cf×f@V™!Ž¢ zŠYÚÀ z·6Á\ °B X@ ´@là‹e@!¯`r‰à´$B á f' Î`4³ Êà 쀒 lõ¤øã4€œ¡©Î á äö[Zlá ú@$ú` $ †à¨r6Î ¨Åp°Š¨`¹ààš6 (¡”` „`®€Z2~' ¢à¢øVn@Ú –@ žÖ@º€ ¸¨UÆÀ Þ 2i!Á H !V6`g=†#¯à¸` ÌŠ )T`hÀþ²#(! ¼ ´Ìà‹mÁ9®@ ΠŒ FAš  L>@6R úà:Á² v¦\!$‡…àÒà ÌÀJ FÀÆÀÄäFwÚ°SæÀyoè@ è ½Ž &A :ÀXÀz µô`ŒàÐ& V¥J"Á áa&áÞÀ .ú 7ê à ¤ 8["8AÊB À .iÑ„ Q ;N¢îB‡ŸæÌ!4;P˜ÀèdI` |@X ¥¢$ XOìµú€%x# &…"báÈÀt¸`3n" ¬Àäþ  ² VÁ `@5¸ÁôÀdEeÆ,8Ì€ Èà r`°  ÂàìÀŒ  VÀÙ´`Ø| šAÐúàŒ6O}e Ž@ ‚`ÔJat Ž &v Š ˆí wC ¬€Ào¦ý—´ÀV–ý^R­€Ÿ¦&“ÉRz¡Xáaï†@å ¯ ¢. ´ß|Å ø@.¡U‹€L–ßrÅPÁŠ30šaþàiLñr2gsˆ` |˜€ÙÖ@ r ÜΠï äTg° Â`Ýò@ÁÀÀA þÀ6ÁöЬàa&!T5@þ¸À øƒ ¨Ð ?ýDô` ö`â€V`} —š@k…€ÜŸÓà n‚ ¶ Ô°fiUä$Aní¯±¬S~@JàX¤` œ@’ÀMºà Ží!Îf ª€Þ ­jà—˜ ²À7œ@l0dÎ¥à Ù*Aj¨ŠaºÓ ¡žÀ,±˜ZÀzzV  ¼¤%ŽÀa º@0"µÔà– B ,DÕ@ ¬½à0 {ŠË¼ì!ƒþdXr(aÖ !d ˆàÌà˜ ú€ ¼`(ö leˆ`¤9þ x Ô ¬€ ª þt HV¬%z Ø)ê`ÎC  ¢ šå>À†d` ª™ðø€®âˆ”'_øÐ„ç”.=zì¸$ˆSž?ñq‚E #a¼LÑ‚åŽ'Qˆ°ADIŒ!6t ‘Ãf‹<]ªd©!,} #'Ž›5fü´ù3 ™.RHMéÂf ;ìà¡sR;²‡~qÂÂDŸ2Š`õ§ ¡?R:=Ú)E‡ }´´1 !7¦8Œ8±âÅŒ;~ 9²äÉ=JÇP‹C‚°¸2ÅÆŽfÂØ ó% )dÊ ÁÒHaÊ´?„ÈJ˜þ'aÊÁ¤ %)TÐpa )IžD "DJÉr’àBÆÌ•06^¼`’eK“&LV°@!ˆ”,=†I!hœ`Ñ"Œ 1¤ð-˜„ Š4†µ ÊlÅ t`ÃfSáÉ$oŒ‘ ”ð‚ˆqRˆ7Ý…6ÞˆcŽ:&VJ`x†=q„EÐQF8$Z4†#€Ð‚ä`ƒ;nyãL@Â-¸€ÃU Q†JQÄ+HáÇl²†Raˆ!Utá‡sø!Å_P! Aä@ÆE q†þJTAJ¤6ôðJXB}‚’‘„JìÀÃaB¡F±[/q bÃu„¡† alÁDGÁvÐ!FSI„"ñ‰ÁE$ŒôÑE)°€FDL‚]dÆV`a…L(q (Œ€Á&}ð±GLà"8Ðp|pÁ^WHáÁZ°ÁÇT$‘Ç]œBíÍÆe /œØ)ndÂ…R¼À™YŒW`aÄ(„PX!Z < ‰0Ê‘ò…HD3(dÑ„a´€åz´áÈ"s¬ ƒ4ÔP“s &oÜa…d`±…>ÈðBxÌ!þH€ÔL± 7rlJ,¡ÆeTqPh±Ã;l±Å_`1Æ·yà±DRG\ñSc1Å ŠBGCHQ‚R€AÅ"N0aʼnD D C…ˆ¡†6Lm´Ê¢®r)0ªÁÆB ‘„C̱Æ!GXñaXQ\@´‚¤_G“ì 9‘…Á÷ÁÄSÑšlÂFX,È OPq~ƒ`ñ£ŠÄ„hˆ1„eA[pá?p¡í ÁC”8’9Ðppül€!xá MÐ]ús%Þ`S´†¬¡ P“‚Êpþ‡E0"~ÈC¨@„>ÄF_D#=¬`eX*±#˜A o0Á ÂC¿{­X@!Ú@‡=b 6àF:Œ *€Á6 ; lðÃ"’p'>°f†VàA„B7¼4ªQ1¢@C%¶À,Ð@HøAĆ1PÁ RàB¸ ›­Gp ¤ FRðð{T ÂT°…) (-(Î@†EHÂ7ðt°F2½D#Ú ‡´u ¼Õ¦ †/¼¡ v0€ö¨FmpBØ`5h!5RÀ€°ƒ{ ! ePƒ’ ‡<(!>H`¢þ—YApµ!„ð„4aS`B!˜@…4„a\(Ã@ŒàiÃ6Ê5êsŸŽQE Ø„/œpCøœ@„À@eƒ ^ÀƒL,¢ðƒúÀ:`‚Ÿ8 E#>ŠKœ ©À8Ð&ø`X8…(¡‰)²¹Ê‚ ‚0ó!æp&`/A'~…” PP  Â†#$¡w¸ƒXƒ¤ —°„ .`& a§w ð1œâ¢Èþ€8¨ A ò !ó@´ðƒÜà<È:À‚NýS„Ĉ$þi€ä` '8Á¬ò!°7ÃN‘ˆ5¸à.(A´à DáPÐð°†;\B+ˆÞ rP¸€ ŸÃÀ 06&Œ£ÌeØ)àŠBaÀó@N6…ü ^ XA Vð /‹‚ð Æf,N‡‚| YpÈ|x„ذƒ# X J@4B¦œD¼à…1L¡éZCv`ƒ$Ä ‡ÀƒÞ ‡,€~ÀÃ?›'p m8¡°P…#ÜÀdð®È7í @˜Á ц8|T?È…N¡‡8@jlCˆ£ -|þ@RÀÙ J‚dÀ M¨ÂˆÈæjy…P‚l Cd! N˜ƒž€…@#a¸Ýj°?p‚xÐC&¢Ð†9ly2¡ ÄEýP‡#¡WC:ÀH8ÂNPˆ\@*X¢„$Âà+À: 8fh°30a<ðÚÀ….¨ŽWhÜ"¼P‰Kd! Nð¶à@‡.há t ñ˜À1¬Àl(„–àƒXaq°Ã\Àƒ<âØGÈC´—†]ØB\øBò”@cȈR°ˆó•|æïp…5Œ€jè,h`ƒ#4¡-hAC*„!þB ÂNa )¬” `Vƒô025ô!Q0à „&8ÁGJ@qÆp‡=‹ÜFøDÇ‚-$áÔr°2ŽÀ„0æ 7¥¸ÀQ^aDC¸ƒ¶SQ`A G@DdÄ$X1@Â/3Vä /¨Á°Ðà ‚Æ‚‰I@A@MB ¦º6sÇ€ aèA¼ *RÉ O˜BxòˆC4 qø.ˆPƒAˆa K R@† ¢R—Êß¾À¾#<¡.˜DÈÐh^wj‚ VL™|ô ÃĨpƒ _`ÂdÔØP~XHb€†-‚þ˜x(°à`Ò;Fz°ÃDîðë?T! ¸€òD.d :pÃBÁ™)(a 8¨ê‡$hÁ?‚V ‚,!>HB ÊÐ…úm+ÞW€B ‘Kh E ”`"AÁj T€h°- f€H¬„„`Q&@i(Ð>p>°k0^Ð °ðpÃx0ÿUê4#0P • -À"u{Àp`&`© ¤M@, op¥`n0: {;Ð —p46`ñ‘½a„U`@-ÐPSðv2YÀ‡†ŽQ þzp?Àvå ×gÐQФ‚s P0S èÅO¿`#òlb pdà™@ ˆPO@pP0#7“ ‡„e3#@;°I@wbŽp WàÅ„<´&†B &mfPC`5`) AÀ^@qÐuÐ KÀ'àB`H õ´B4DX¥ÀeàB J×CÀOð'IÀÐ3DK Bp* 9ièŽ7RôÃn°?bP= X°8Æ09 X@‹€M5@?ðމq ™ c°_þ¥Hs€:0c@pÐ4-P+!¬ßbfæ4k#G @TÀƒÑ²Ð Š hPgPjà}@QO€C0xÀ[ g‘jpR  °)•ÀŒ Wµ`‡2' A0`„pEP}P špH"v@°Q 5ÀJ"  †0pÀqð:à+ æT_BL Š bPIB¦”°4ÀuP†'€*ð-@w/Ðv e0B°KЯ zÀEð$ d`ÇQlþÐaP#"§ ºA@ ‚@›ðjÀR°(P{$—°v0xpj`‘á µO`YàU@b€eðmK0TPmPu*à˜@ – t'20\WÀÀ” i@QP²€Yà U`h# g(V-C€Âs#zÀ@àp°@9:€Xðt°œêºò1†d °é¢q ¦k@72`W°A g PM`vpQše O$&° .Ê ¤ ƒg pr0}à}tj  €8`:3\`Œ< cG,pþÈÂ{Pwypv \D0K=&†À2ÀkàÐ0™Yºä} “Ð %ð`XP} ™0 ™° gÐ#à—^€i?ðk0bj>GÐoAP[J ´âiÚy€ ·à j€Y  ˜Ð}1`޲a@°/02lB2EHT*hBÀa *‡â2æRÀT!U  €¶T S<ð¢°é qà†ÀA^Cp8àI£iç8$0ðP0#r2;P8ðÛ²_¯”!B09pD þyð©Š0·S0NP¢Èõ'dМB`[Ð` y'íz  OÓT` ˆÑžz¢—#Ÿ`f@ÙÈGRbçhV0t0‡t0O@bóuP®O‹¢°BgÀ^P2ðž7°2°)æ:ä.Ðf°Xà&M@1-ࢻ0 ª@lP }`wÐ^ÒqiðW )€/P9ÖÏr,»¡™{h0nT}à¸kp]°Èyu^ÐÔ"mð¤0P iVð{° Ð .Ð$ÐXÀE“𢠩0$0Oãœ:À6þg¸hà†TP4©QM€f%p'UÀvràŽÐ ´àY ˜ šªj AP°ƒðO3ð:ŠQ s°?›Kpl€NC »5ÀUÐ$³&GpX€a %e/p/‹ÓPûŽ’À'p;À1±Ÿ§£WjÐ=ƹD€ €FpÔå.Ìô 1Q@] 5°)`6°?0N"”s `d)) Šz°r[B5}@”0…0W`G°«à+Dš8kqÀ‡RN«#¦#La¯#þwa0shxÐXðc¼n`ÀO+µœÃì…1b@‘Û†Px ÈI}8pk;€-€¯;ࢧ —``ð^+@M_P§ ¢FB lÁæ,e0Šy|Ð:U9tàw`(TÃjÕX,^[ðUÌ~0 @f »pYr€ѹhð#að«A&›Ðc×V ppb@Š-0°4€qT°†|Q wPfvI €kSƒ'È´_ÐWAà<… 5Mœ‡ñdÀœTZ{{DþE-ûUPɨ¢e ¡àªÅjÇhH mP·`phÐ$VhÀ § ûd ’@ ¢p  V°làVä±Ð|Šà#t@xP”‚;`2˜r´¡5à¡E`zà~¸v :Ð.`ðùUA½XÐ`#0Ѐ„€9ÐÑcPò[g†°Æ0¦CxP@¤E`'3€MpN"fÓúæO€°ŒùÑ‹ìapðí#‚òÍ }cr€pZ7eð1ð•4ࢬp gAkàWÀi0¨ dþ0H‡dµ/€~Sàv¼vµ¦€`JL0A°h @CbB1cp&R”°_`‡P>ðâŒÐ%P&ÀorP…ðƒ ªK ‹0‹²O°mÐf`…1¥9Qáœ=À¾R@ŽÛÄÆTPup‚òm7 XÀv>²I8 ¹R¥™˜’0ÈÍÉ=Oú˜> º¡R`¨-0` —Øvr3-|¢ÐE„ð¶k s@ƒ0YÀ`v°O’ ôK ð3¬+ @`P† Þ©j6B¢b…ä(LẆþDP-ðEPvM 7Pp2€Ð5 ¦}` œ€€à&!À`P ”`F0ôPÀ@p3p` e¢ãOäcà®}øMzPwoÐS`Y`Â\Žã ÙP—bð½Ò} ŠÀ‘f+©§t`o@u€€Ë碟0 ™€†°1°œ‹màép·bÀˆ8а` ž°8зoPÛ5.=P1Ð>0"Kq°+h`\€ P`à `)p(ýƒãDpÀõPà@À‹@:€þnàÆª,'ÐOŸo ,=0C5VT[°z°AÐ>C0L,A ©@0’uÍ?!©ÄŠ1hH\2ð …¹1Q Äfìa08À=p+àºXG0= ê#÷\l У‰š0ð. (y¤kD ñ±´0Ws”€ «Ð k¿ö¼ …À‡O|l ,Ð…å€h#ŒœØá®#SRÅ>ùck^0A U`q¾ ` àn0ÐbPÔÅ.Z¿àŠ<:•€H–.LÁ€°GÚX þ”°QŸ†¤`X±i0L¼ñ•­F€G€:"öD ap¡ý HP_`¯ù¿3(àÖB9 p2À<Â8®^p x÷+RÖD0ie`1—ŽíL9Ð/ Æ22N„ÉP"ÆAR²ø0rÄŠ:Ž(…©#åN7.bè°A¥ ?hÚühb”%2. Á!eË—?tœÙ"è %2fü¸%Ë•/D”()‚ÇK˜0b’ÁÒ$JË&A„T±áƒ ¬XIÝÙ"ÄÉŒ;¤H‰AFÌ!a˜<áÂFŽP/<Ž @R£,þCŽ™ò"ë_À&\Øðaĉ Û’DJÔ©@¥z2h1_Ð0i²æŒ•†;d@Q\Z°¨8bÔió ªKƒ9“…L‡(¹¡ãˆ”%kÔ„I2åŠiÂÆ5Ê£( ”/qð|è˘)DˆPҤĊ^–ôùq$ •5lôÀâ¤É$`¸Äñ±ÆŒ-ÈMw)BE ‘#~€DbH9%á@ ÅB„ˆ%´ØÂ ý*´ðB /ŒD81¤ ,¼xB)(šŠ)žˆ#Ž(¶Xa¸HÃ’8 $¶`"Ž {$ “6Öøa ( @„"vÈ‚Š.FPa‡%Xþ’a,ªC…0ùƒ! H¢„N(aŒ0h„+ Pƒ 1ÒXB !„xâ%‚¡?l¸á30áú` =aè†/øD /vàb 5¦\ˆ,P!4âð „O C‚ Xš¢ ˜xÀ¡Œ+ðc !^˜AˆºXƒ8¤°Â &ôà‹.¸ µŒ,œ€",®Hb‰/z" ÀD¡‹îd°á‡-¶°³†(C (²0ƒ „Àb#^ЉGöøâˆ&š°Â/ã•w^$ CŽ8ì ‚옢Fv0#Œ4˜P‚©#pðᤠw°Sì ƒ#Ø(Ø”MÉ„ ?þü¤ˆ-BØ Œ!Œp¢ &Ø`Œ"–¸ªÇ^IdEŽ`B 5ÜÀ¢=²£½% =¢JP=Œ`‚ )lh…Ʋ"‹#°Bh¡+þË ™"‰¡ÃVlÁ$;VI…D)D '¬æÂk¼ó–·”0ƈB 6ºCŠ!‚øâ +ˆ`¢‡'¤8â ' áC‘.Ô€Á þ["‡õÆpŽ6L…ƒ Ê‹3ˆö´X„Œàá $p‚úhƒ †àƒ ‚XGâd•Q>Aí'xhádhA= Œ¸¡Ž>f˜Cä¡Iž¸Â?䨤R*E þ6òˆƒ#<¡‚ dâ4¶èˆ#zxäY°@+ô}g‹š0ˆ?(¢ U Úì³x ¨@{¤04°Á T˜ h 0€q˜õ—Sè!U!v@7ìàDR¨?€ j ƒ„0¬PÂaØA‚@„ÎyN‰J$…Â`†5¼¡} ôÀ#Á ' °€ŠR´b<èšAñ†:°!qhÃö00 !=àA@ à€ Pe,D M(%:M\¨™èÃÖ€…ùxa 1(Cš0 oxC! A Qt‚þÒ¹ƒØP9`Â-@Ž „5´+ ”‰?ÐáztÃB’Ь`~%d.p7œÁ ePÄùÌÁ”¢MXЂ€0+¼25œ$˜0…,¸@?hA Šà•È@rƒNPh^è}àCñ‡.<E` X`$h;ð‚¤àBt¡9pÁ `°„0ÀpDÔ…2a+0ÁD(„%è!M°D!ñˆDáj0‚@¥Z6ƒ˜D "0 ßœú°7|Á?°AH5†A- `Á‚ð‡:Ü Ðˆ0ä@(þXAW_7h!=½\`ƒ \À;ÈÁ hPƒ°`8°,@a=?(YVú†(”µw!Âí ƒ npƒºÆS²ñBÚÀ‚(,¡ KƒÀp%\Áƒòàƒ"„H ƒ!–X6¬Å)2xAÀ3¡r9‚ ƒ&P`w0C¤ ƒÜ@ MpÂê`¡fl‚ <èAÚàƒ!$F)(ÃîP2lN4*P­ƒ :A~‚x€RÀ8å’ƒ¯Î‹ŽLÊ@…7D! œ€ÄÒ (m Ã˜P¨ Gþ i&{a½©" o(¨‡P…"ð`[Š˜!„ðÍ´ /€+½Ó‚ÿ}Á *H†M#‰;@_wœ°”à V`ß±^*| Ã䤄Œ`U4°A*hAY7˜‚×6$,|! \€Ã„`‰Fèá3xATØ08Á ¢Y¢Âòg'ÝGs{Âüæ 8)PᬨD+„7Z‰ }H‚P!ap‚t tÄÀÖo½A ºðœà3…茼„3 Á'hAÖ°•fTB7ëÁþ€€e-kyGpÃÊ0†qáfðçážíà Šp‚ h@ IÎð9¬a Oø‚äÀ†=ÂP€–,PЃPÆ1Ãx0ÜQäœÂœp>Hæ/žÀ^gàƒwGlèÍtp7Â4ö±‘ýKšàXÄ jPñ 6€´§ß4ŸÄÜÐ$¼~ *ph@…â¯Á ·àÄ.¼ð,Ø(aÒ›ýzI <Кƒƒ7`ƒ7xáÀ#˜BH>ð?Àƒ8‚‚г²² èâ„0x‚%`Hˆ(¸*°0°2˜>€; p`ÐÐC ƒ6¨ƒ[;<0”þYµ!˜9> R˜ƒ>¨‚)ix¬H¶âc¶ÂÇek6O Xh<=è&€± (D‚ŒDЃ=€=#¸4È*!+B(°¤ 0H …-€-H§MÔ› yƒ@; ¦2è-è3p%'øÚZ1>Ð4ÀB8$À‚‘“’T–\CŽfÐ+?0„ø":F38ƒó$à8h9€28&8‚ð>r™‚ ê5õ²$ši:8p‰&8®À‚FP@‚€R#8„A „°‘ø- ‚!ðÊ‚ÜKÁ€ƒì0‚%èB ˆƒ-ˆVà(&¨7þ¸è@2ƒRêRÉ àˬ ;hƒ*§+ø¡ ¨„B „Bȃ7 ƒB€ƒ8h‚*èU ŒY„6¸"x¬ hWÒd´/àƒ‹À‚0 !ˆƒ9`M¨0(ƒ7¹p¥0!&09À‚ZL¨€ØšÐ+¸*¸ƒ>XQØ„ýá%,(ˆÇAL#H¯P!È)(=ø‹Rx, ‚ÀÈ/y‰„BðƒJÈ àØ+huP_PV0„Dº0n¢„HØDÀ N„]H†f˜@ „¤#E˜/`BBƒ0à*xvÁA,°DèþQ`“¤% h½.è›3h÷0UHC°„1è:Ø‚ecISÈÛ€¸€!B Zˆ„R(U(„D"†O°ƒ1è‚chÀ0¨‚Ú:p€@¥‘&¸26ƒAàƒVø"ˆ‚¸D>5$ Œ1ÀÇyѰ±TJ(ˆ'x䂇«§ñ€ ¸h3EÕ̽LI M¨'4p/Ê„OÀ@p#‰@™ú‚i‚8(Xƒ6à„S¾…›Ð‘Øšƒ"˜§B#ƒ*ØØ/) H¿ø,8 þø€ȃ9˜T&à,X&,”€/“ƒèƒ9 Õz„JXC¸ƒE¸ Xð·>à=€ƒ@˜¢4`#Hƒ5PX‚½è@˜8p‚Px¸ €hˆBª Á¬82xƒ*`Czá›0X‚@>pš‘‘(À‚r.ɲ>¨…IhQ…=èS¡½M@4 ‚3@IH…ȸ°fˆƒ?x/ wD­A ‚?ƒPG3‚) €`ç™#¼±…=Ø5Àä‚sš‚)bÈSÀ5Ø?8+¨‚.˜‚<‘0ø‚þ(˜í³«Ãh¢¤H%ø‚ =Pƒ À‘p€" Bø&Å+à+Hž)„ 0„:1À‚ H!à.€ÞàX,½™)À$Œ. ‚$И8 p‚·D„/X‚ úƒžYNR^ˆBx„9Ø2p8ð‚Qx…#€€o3$Ðʱˆ‚ “$à*°<èD‚L1X'è‚(h‚ñT"xD€"6À^! ƒuEå ŒRè.è€(èT¢/,È5 ®¦ð‚¨7ˆì±7(OØ„„8I¨ÓMžQ" àØ‹ªâZþ)6ø%À-È+? .2ЄMDÐcyHˆ°‚”ÃÉ¿Ð09 !ÀÖy!…6ÑLÚ5©Jˆƒ„@Ê3 +8¸xòƒ*Șf8\Xƒ/˜K@[[°1ƒ96,8ÇÉj†€"C8%…H‚n‚QŠƒ>€(¹Ôû6½'`­1¸‹tÓMØ2àˆ°þ ^þˆ ’xËBºÄœWcéåËfà„pÌ“É5x2D¨ `€%(¾2(-¸ÓÕ¤@‚SJƒ »ŽfB»P …/%…F¨Nh0!@Cˆ„8C#º‚ ¹.È‚‚È‚Qõ«” e2hS…a2F€ƒE˜`è€$`ƒ6x]&ð$€—²Y9°ÚÒ‘J 2pу^y‰¤Ì$˜d€àµ6ˆˆ1È‚pÙÒ¬¨„*éh"ÐˇY†& ¸®óeȃ@¸-&(r2#Põš.MèH „>P„A£•zBÐYȃ+nž`‚þ˜&;˜,\ø?è*ˆ«i¹£+9ƒfè:(4˜xØâD¢R(ƒ\(ƒ>p‚+ƒ×£&pˆ'P‚!4B„Gà‚)i·(€‚1ÐSÀ *+‚ E/È‚FŒ¨€0¸7¨Eàº.ð(x‚:hœ/pƒÔž`Ù ³|aƒB™®²AèƒC°‚‚a‚1èAØ/€‚ôƒ+H˜Î"ÐêÄø4‘Š˜>Jˆ¯.øB`‚ô€ ÈŠ(w´B¶‚mÁ‚È·/û’‚BØ5ˆƒ%¨ŽÒB¢(¸ ( þ©¿GÀ|ª·õxi2€ƒ;¸18h†1 /€<`èØ‚1‚ßP¢N`ƒ/ ƒ2@ô<`„Eˆ®E*À6ˆ¢'È Ø€ 8¯d*ˆë%¢„.öø *t(Ñ¢F9þÁ£‰&bx,…§L._5¦è²„ /P¤‘bÆ/B–¹õ(ÛŸ¤ä„£¥S'?z\‘Ë“#4yÒ#N@‡^ˆ`ñáÅ 6Ä´íÈ&Ê T€xâd Œ2dÄ€  P•-/\p9Òä… 5BŒ˜!#[M@:XYÂ$J!Bf`‘fŒ Œ *y9ÑfdæLÉ2æ :+nÐ’å‚+#R¬HA†ùPbÜŒIƒ¤‡8æH©²Gˆ“ Œh!ãDˆ3Rä°qÇdB[ˆÈaEaaD ‚À%×#ŒÂþ$œ€E 2ŒaGA$¡>ôd G8qGXG‡x(!ÅŒ0ò„g6ÈA†€¼p5 ñ„G1'm!à 7°ðG$Š RÅšY¡C° Â:háFtµ£ X 1Ælx±1Ì0ÆdÁD a\Ñ„i(ñE&†4’HHƒ .dÁ’m´ ‚RGE4a…RIÔ`F|bš©¦@•Ò‡TtP 7x$ Yв U_ 7…CH¡!d…7H±©Q¢ÄA†c¤ÂÄJÑEcH²C%œ …Y‡Œx"D 7„ ‚-¨þy†ÌQ„ /ô@cxAC ïÆàÆFš”%à a$±šx;ìàÅbŒ¡Æ@ ñM8A`LØ0…± b A hhä«Í¤ÑbÈÔ3±\`€½PCwÔË!h|qEøØVdñ‡ v „¤X,Á†xà ÅÊ,‡tIMP…=”He°1Æ%‡˜ÂÄ!œ@kaðA¤`ô0D™–Bá`HÑ}üÁÄE ÒÈ3ÌPš µàcbZDÑG[j  ‚ ÄÈ"ƒPñ…ŸÖÄ lPƒ LÔÑGi|á†2µbÈþ±Å 2dáÄ;¡‚ŒJ´!‡[Èk±*ièÞEZ2lÁÄiÔÃGàqGG!;A<CK3½öGÝ1Ó*Þ)wTñ‡!fì m0ñ½Aá…(t‘ÅB´Ûÿôˆe$ t(A ˜ClÁ rð†„à Y¨Â ’@$`l C"á_Ýá P°‚ÎлÔá O€B؆2XœèŒP„Ä 6°Aà°,?ØÁÈð…8Ø¡ Ø®P†1(‚FÉä`+<Á „ˆ0‚! ˆBd„í5ÃzˆCþèÀ":°! –Q @ƒÈA7mø Ô ;8Á45€‚9" =x! 8ØB¤ð3D-jèBÄp!: NŒ‚^@ßam›ÚA 0`¤Qa{ˆC€ ø‚=ü!žpÅ2Q‰'`¨€²02@ñ(œD! bìÁiް‡1¬. ea‡AT`ÑêÂØ€…1X"YpÃw@°éÜ`RèCÚÐÄ•ÈW•ÀBp!ØàZ`‚p„X+ dàuú‡< A "HZ!êP¡ˆâRX€dPäA [GÃÀ6à!@èCŽþðÐŽØÂ’ˆ¥„ Á.‰x@OPBâDg Á’XClÒ€….\ê¤hÉ ~ðz˜Ãæð>ÔájwPxp)8!0X€QÈ€JõI ¬0¿.4A U¸Ø0‰4œIH A 4à4J¢üŒ‚ þp‡/( ˆe‚˜×…-â«5¨l „ì`-…ë ´VMªÁ MÐÅ+Ô /ìîÁÁ l äàñU¬Pa>`|óø`{ÉAÀ€‚xÆ@ D €…Ù¥õ(¥ˆ‹²ˆ½ÀJ`Œ˜ þ…-Y©~ˆ‚`Àˆ;hbàB<…5ŒŠLÐÎ " „ „†Hª6¦ÁUI6 B²Ð„5(‚f@CÁˆ&(a²À!Ȱ‡´ kÝðCA‡+H@?Ðþ@Žv¡+a¸Ã d°†rÃ’øÂ ñ¡"¬=p‚AƒÔ &Èé† @>@Á ÀÁ Q5¬á$MÀÞI †8Á >B Ú`+°¡ xÀƒÞàG˜+²`¹&BCP ‡AB‰3„aV`B°€…6„!a8ÃØÀ„äÀ/@c%&!2há80D¾@„þ°fBÈÃÈàˆ+t‚_øÁV ƒ^=ÔqØÁtã.´ J…*Ô`…0H!ÔaÈd°ƒÔ€ SÂþ6e" G¨ÁX°„…(a8(A#„`¡6Ì =°h :¡ £³QFR4`" rà˜€Ü5Ôj =ØxàᨠjxD)&€!Œ‚ |x0àƒ´! t(Ø@ÌPa1f™ª¡0lW}á`Øä'†A" ÿ¬…Q†<|f u^¹öBa EÜA(˜ p°!H a0ƒ Vð‚-ÀA6LŠ8|a X¸ç†À„þè€ F`‚ 2Á‰$`AMø%ê@ˆЀPJ€wñ¨ƒè®Us0œµT¢Ydè‚HÊ‚Œ€ Q ÎFDƒ d@@ ‚ PÍrްÁ YÃøp‡!!¬ˆB6¡ T@%°Áö61Nì@H7h–Àî&0â%XÐU R°”à LЂ Z0ƒ-[©£DÂÊ„%<Š@DÈ4…Œ 1Àâi1C¨nnˆ\`9DLâYHB'Hà‚Äþ( Ćü ¥…?Êïàà„ï~àèB w…!áJX3&†;”UV‚ èôþ ÌÀ<ÂüÁWÙ@åÁˆíù4Ô"†#\BxøøÀ‚, dÀ_^ j )$&qAéÁ÷Á4ݼÒÜÉ p°ˆÁ,AG…Á¼€¯=hAdNhE@AˆÀ ¬‰1„ÁY¤…fUYXAÛµAoÕU ìe9F"ôÁ$¬ÁÀÁh ÈÀ ì€lAl-B'C3b3ø'P‚ì_)ÂHE%ÁŒA”ØAöØB@‚èA 耠Õ<+±x#Á|A8)€Ât€€AþìF„Á èL ð@ ü€ xᦄ%øA ©,ÂpÂ(€AÖ\‚ ÞIÅgQþd¸OÐA Ì[J ÀA"ÜláÜ ›pìÉZE‚¸$p&`‚&|Â#X‚NÔ#¬Üwt”tÀ8$ÓHB,# ŸÔ€ ð˜”hÁ ”$ ìÀhä%\À¨Õ†•€ÁsÁ,A#0Bø@Ä5Á AÚ›Å4‚ìA Â$œ¬Q&œB°T c¼Â€ÀÔEAô´ø€XA\½lAK Á€ \A|€”çådRBd |ô€ãBI„äÁËPÁådÁ|þ*C‰Â B‚ìÀ ”‚$p„A•à@x¤¤ÀHj(sŒÄäÉ”8Dàôâ¨Ïà&l‚¤Áœ‚(œB (GCÍbŒ´@ èA¬Áá`‚ BXqA0et„ðÀvMV9>N‚AAÁ!eDÁ,Á`päÁ=¦@ʤ@ 8›Þt‰¨l¤A8APÁ™4SÐhÀ8  ÓBô”Áé@ ´#"‡¼Î±Á´ÁpÁõÌtÁ´Ôè†}ì€è Í(Éþ øÙBÌÙ1jÊ'ôAh¬@u¾A'dBÐ   AœØ$D !ä!0›7mÁDF€ÍÀÄQ)X&ˆÁÄ@p\N$Üô$AB¬ÒAü@¬Tã¹4A”AHKÊ ’¦!ˆæ4Z A®TAQP"$C/â,üÁ¨nhÆ)€AAi‡lÔØÐl@¼W%|‚ZbP_F8T)èÁHÁ ìAP´W(œÐÁPÀ@MhÁ×xÀ(äNÜà„w6Ô\ÆõØ€DܩهGIþêt´Ç» ŽÑrØH¤ÔÌpÁ„Á¦ Á ˜ „@ìA#d(°ÂXÁœ@hÝ8¸ÁØ@ ¤ÁKÆ HË`B$ÕZ!B(LšáE1ÛAÄ­Ë€‚Þ’A ÐA(”‚0 ˆAÂ¥Ú#4Sý ØìÎ EÅÕÅDÁ&P'”Ä@zÆM¬™…¶°pAtÁ`A~ŽÁxAä@ À€Ð$0›ЪöœB<ÂÌJÎA¼Á\4,4ŒA$B%þl `Aø8l{Ä(PŸ«²i „@./ Ü‚)‚‰D¤=Q5T8‘àPÁø™B¢²AÌÁ4B:aÁðÁ©f  À´À\@ ]”A AÆÔÁ(¤A´Ù<Aø@`ÌD@À Ì@¤¼ þÎdÄLA¤FH‚%|)a øØAüÁØ0Ap-¦œÂˆ-ÄÀÁ!ö±Æ»l› %LMõÌ€àíG Âá5Áˆ$A ì˜l€ ÈO‘—Mn )¸ˆLТ¬uü@L‘ü#ôþÕJÁ$¼Á¤D p›óE(¤ù¾FôÈ«LÁL–| "üÂ1ô#Aá,R¤  €à@AAPÁ(Áœ€ 0TCB‚dh©´ÁœPB"ÜA °Áp°‹ZªÆ¸A€A(–$²ž ¼@4A PwqÚÒ)¼&¬Ä@~ÆÐa#ÔtÄ€E¹‹$Aôš ” „äZ5Ãø™+Ù$ÁÜhjÀAÔÐÎv€µiè9>lÁ¸Y­X(Ô@Ò˜à@ ÄÎò4ïþ€|&øJ üRt)`(`AÜ@´øŸ®4‚Ó-Aì°Á ìÀ=v"l˜-‚"¨0èÎs™oÈ2Óü°ðeÙÉB ø¬Á¨-À¨âøÄd@ ¸€ð£(q¨ùmˆrÔÄþõ Ø[T\Áˆ§Äa–…Ü"/ÞÀæRÁÔPÁ ˆ®žÔÈ@' K´A'8ÒhÜÀ ø@üb œ“ÔÀÏPÁΪ¢Á$¨Y}†½˜‘ÐJˬ@Ø…G Í|Aþ†A ô€,JŸ–„0ô‰Ìí@¨Àuø@ú®½lŸÜÉxÁ°Ë¶]ðYÍ€>Ѥ’”`‘×%g œ ˆ ¬ð`«Á$ÁÜ€ ÐÁàA‚ 0ä‚2 („r<Â#P ¤Àðv!au'Ù@ùÁ¹ÓA¬©Ü@Ô”ø@I/?æ<”-H)4B&P %¬€ À€$ 朗 äÀ @³¸,'œ(8¬)ÂxM\L“þøÓ z€"d¯_A„2 0xaB… F‚s … Cj„Á!£ŠŸC8p ÊÃÇR+ˆ2åŠ-ZXaøfL˜¢âˆQ³$Ê)uð\é¢eMM2‰ õg˜7QŽà¨4É5`N©Â¢M˜,j¤p!BABœ-a„`)J´ Hz ABäÅ‹88nŒ±²§ë /HhøÃÎ8e âcGÅ;xüâ# !3 žµ\”“QRÖX°È‚+M’\‘rZÊ$QføÀ b„šË³i×¶}[¦¤;l  y"#E 7uÆÜCh+dš5"ÕfN•BŒ®¤¨þ±¥îÚ„°„±±˘.lØas&š92tÄhCf‹'@†ÈÒ#J"6¤h¯-) 9â`Ä -²b„€b‡DŽ<úÂŽr(„à‚ ;ðÈο_ºÄ6|øá &žø¢‹0‚@â†,®À‚Æ#ˆ" '"Üá†)D\è0Ö €óº0d#Ž€å=2" Hå/LpáZú±6Gà'¤€B‰4Ì0‚‰%¶À‚0aÅCÒ¨C "pà”WØØƒ X`¹B 1Æp‹1†p`3¦Àb*Dì" „Øa‰'Žx2XhA‹'ð¨B þVàK@ØC 6¾d>dàÁ‰Z{è‡tø¢‡!z”Ó2Iºe 74Àà 4B‰$²q &¼àlÈ`ú–Ûn½-¤ ’˜¯†?ÜÀc5ƈ‚‰+¾ØB€;a‹9úH¼é’4ä b $Šâ'-´°‚ $œã &ú˜Ã ~£AŠZ Á"ÂØ÷%R䣌" \£ ;<8Š,–@¤˜@"Œ KŠ.¦c 3ÈH‹%9¾ŒRD9%:Ê ‚ .¶$‹/žhâ‹/Ì8"‰$tÐ +¤#Œ(„8‡_»å¥™fΨՑC…9Ęcþ ØB†#ª¼òˆ.fàÁ‡Z8ãg†l‘H‰"ŒÈð <è°£+ØHãŽB$!åP¼ … @‚ññÀ X0‚ŒÀ=!Œ WhÕ |ðEÚˆ1qÀäЄ3À*~Ø„pˆ?b–‚&¡hþHh ꠆ñˆA `xrp!Pá ^8ß~ Fš¤ U@ ¨„ HØPð"Æa\XCBÙQ¦¢tÀB°À?Ôlq`CÆ…/x¡ °* ie 4%)膇œ;èÐ@ƒ GØŒÀ†1°‚ xH„0„#x¢€Ì G0”ÐB1: Â3ؘÀ%%øÂy˜@…« )EÈÀ, A«’Ãh’0 K¤»°Â„/Ü€qX,Ø@ƒÀ xðV3Ȇ…´@øAGpЀ†\#ðÀ ^ÑŠD (Ø€~Ð&Ôf¯d0Ø%?|¡ Ýi!ú€4¨iûCA؉G˜R€+ìЈÈÀNhÂìP,ð@ EˆBÄ ÙPžô¥‚"!…F(â l ƒN†0‰B( vÈØòZco P° Bdž+„¡ 0BRP5ŒÀQàA h`„@Á ¡¤‰ä9y~a®9ØAÞ`†Ç] þF¸:Ðx€) VEñ8Ô¡Pe æÄ…8´à)Hz@Ü %¢…D$RðR!,b³q)lâdpY¨„%¬ „âqbØ@°),GødDpˆ@ uXƒp°Ä 6Ö¹œâ *ô`hÀªÀ…'Á SC¢ƒ€ u†‚< IÄôµÂŽí#la0àBÈ !-$uÁÚCð‚O²sÈCêˆ'¤l `ðCZ÷‚0œ 8xè€Dp"j üvƒ‚ÖXþºB¯n°ƒ4„"T ñ‡E"+H P„DÏ Y˜ ²j?ÀÂ'ÐÄ@D, ÂÅÂ!Š@Àì k C®Ð€Ä = a365ô¡LþÑÙ )$ó¯E0ƒ„@mÁ¡[fÈA¶à0¡ 'äƒ؆/€¡:8ÃÄ` X$¡%H VQ:è‹6"Oj&ÑT€À  dºÂ ‚ º j€Fb\Fa¬ ö Ðê¾ ”À®`¾íb@Ò'¯â Çl î`Rà Š` @àNàÄ@ê@ˆ \ Z`ç‚7h!,áü RÀ˜ààì ¦`ˆ `l”ð Ød"@Š` Ò ¹æ@ ¤K ºØà¡pà¡‚ TŠν˜`Þ‹Íâà ®à6þ€¦"à-$ F p@ éò † ›@°L„ 2kç* ª` ÊŠda¬À‚@"> @:àö š d@B€Gpg³¤àÀZ@Ø ¤àÀ Ø`{Z`¡¡D€À8` Ü«,AGà4` ÀÀઠf’@`¦@ ¸¦ Ô` ȸ%È@Šð Z`zNÀ‚pE ¢ Ê€ ô À dãP 6¡˜ 8b<ÀhêÀú–@‹˜€ *’ RÀâ4`]À Z`4Àìh`´` ê€ þº`O ŒˆÐóÀ ~Ñ1b CêÀ]°, °à È ~@<à„(iÃcÂÀ&˜À ¼ ü@¸  Ž`Kã 2Áª€]Ò`t¨À Ì&ƒÛ¨¨ Ž@`¤ÀÄ€ êÀ ˜@ *oº ¨ VjÀ­£DaÈà ®ˆ  ²n b` ¾  „ 0¡ Ü` –€ t@v@¨` 誄° š@\GcÀü` j º€ , j V ¼à-®š€c‡¡¼ < ¤ áæˆ$ ñ fà˜àV *%Ì£Gþ\!&Á(ÁA þÅ r *- :s d@kÀÀgÀ„þ¤ø€ Ì` Fàä€ `çýzàz ÊÀ1âà¡ô`(`(iÖ`±` Ar¡N! ¸à ®à ¤@”€1~`ÒÀ@ÄÀʳ áâ À !ƒàŒÑذê(Ë1ʈ¯– 8 Üò4ž  ¾` NÀÀ‚ ,ár†&J¡(—”!h‚ ¶HZžàæ@Ìà¤VÀZX€ á’ ëÆ  f x}B©”à *áŽÀËú ´ÀE^ ÌÏD ]ë¤J&þ<˜jÀR@ ˜ôà ê@Ö 2­`h`0 ’@2ÂRç ! @' ;pAìà‚À è Œ1LÀàÆ€ 8@ä`à,ÀaA ¶À2€Šœ hM  Í W¢À£¤ J*Á^Öá ¡ ä@’ N#Ä€ ˜` f`._Ñš~DØÀºS-¯@¼¾ ˜ .,| ¨ÊÐ`V  Á6@§hƒž –HÄ ,A¦À Ø  æ‡84÷Z` ¼À Ò@ÐR æ Ò`² ApÀVB’«þ:Á Ä@+ûNYä"ÈÀL6ŒÃÎ@ Z (À~  D›°€˜hbÊúíäà "!æd@zÀ~i 耶 ô Xà>N¤LÁ(òÞ€ â  Ø   ºàÈNàhæ@€ * ÀB«pÌúpàúô†@ Æàø€ Ü@ Á¢@ Ô@ È@ ‚àbÀ Ò`-hàÊR8à¡LÀç¼àé¨À3ASr»å(×d< Â„ÚÎ Š ††à¶à hà®’<ÊcÀ MÊoõ£Ö¿Ž CMCêàÆ@ TL®àþ v¯ÀDÂö œ  Ú`ž@J¡ &ÖdÀwÈ@ °  Aè À€jÃÆ@‹Ô@ñ ¦€ 6ñ r¥ Z¤|•  ¨¸  @ .`!ⱟHà úMxU¶ Æˆ¡ž Ûàà>mA„`øF ø¶B 5E@7?eyKù&—(³®f`€ °à&ÁR4 T -´à+Ë·‚à+U•?B‰ÑÔ Ú` O¶@p[€rÀQõ ˆÀ0.€‡òªøà]RÕ¶À þï®àUÁà xàNʬ¾@qõãoÄ x€ \þJ¡¸ > ëH` šÀ < ØàR3µ…ÅdÕ’ Bajà@" ,vš oo·¯€d ŠR}(òë Ú`HSî` Þ`Ú¢ Îñ´@ ¦5.» ÑPPDA ¸*…ôÀú€€*á€È Z@˜¥3©@J„ €hŒ6M‹îÄD¥•Z…à v ¬ '´KŠà |Ë ¢  .  !´‹|M%3H|kL*¡{¶Àˆ€ñ† &á æÓuH`4À ð žt¡—êà pb€ Ac—€ñv0úà4þâ€Z$ Ô@ ˜6¬ÃB žô¢‡EÂ@~àn@| ï’ : T ‚°Ü€ ØÅ ¬à¸`ý€øÒ b ð…¤pàS*" ~,\]X b 29Bvà— „Ž!¤à ``B“U@¾B  a©ÿà „ J ¾€ ¾ {  “<¡²ÀD’Iä"z¦ æ» Æ ÆÁ × ÆÀ4ËÇf tºë­t@Ú @h ô)¢Ï Và-Ìš„@² Ò à@h ¾ƒÖ6EAÚ€'ñ@î %s/tÕÇv°[KáN˜  ^Ð`×Á Ö æ`¶ ú€ °~‚£öò è  ÄÀÎeUü áÒcèÀºà dÀhn Ñ2¦Çµþ(áÒ B6¨\ †* X€Êx ¶® ÒWT!RÀG`Ê6ÎT l v¬ë<—A« ؤ* ®@L{U˜žü¦˜  Î jà1j è K rà`´  æ ŽyL@Ì@TF xõ3wï»(Sk€"á æ`hw (Á®€ Ro¤ «;J7Ö©Í஬[ gñv@•Žêp h+a  œ@¬’« TÀŠvÀ ÌÈ ä’I[µgØ àXÃlÀ¯ChÁ¤@JATff V  ´ þ ÂÀ v`¸‚ò ¨ ´À¡;ÊVÅ Ì@@÷àpïÀ !Þ þÀa æàa@ 8R@<Ád&aò  år€J@*À29ÀÌ Ö²` æ€ ô@¡ÀèÎ64!Œÿ)œ…` ž@=×ÀÝNà TàÛHlF¾‚€ ¾à 4@â‚ Ï ºóôÞ7¯@Œ TU ò¬4 Ì€ fe^´B , ¢à4g'SUUUÙvÁ ÔÀŒ 4`!îÀ â ¼`5…ÀÆá tà+©Àöe€Ôè4ª’¡€U¤ÆhA øþÀhd¢„€0@‚ Òà4ªŠ-R:höæ+Á­ ú€î`¤ þš€H!àT (aŽ`dÀ “àŒP@]È ‚ œ`àÀž´|b<„b B5Š$ˆŽ"R€9²„ ˜0jZ¼PÂà 5)X˜8‘BÈ&J…È@²¤É“(QÒ²£¬Î 0ld°cOŸ5a†M ÅÅ'1i¤(BÔ$ %¤\Ê´Ž&P„ÔHq 0È€dL5m˜´hA„>}úDr¤é  "øØ1AŒ™9J0ÝË·ïRPqü¢&‰_³”°3Iˆ)Lv€é‚þ&L–#˜:¥3¿ C‹Mº´è?X|@Ù0¢„’uÂ(yÄ'I/B ”Øc)Q¢N2MÜ$©;m¤H †É ?pœP)rä $èà¨f‹¡âàùÚÚ3 S+#e®tÂt‡M,ʽd©a¥Ê%Odؾ¿I[ŽüÒÌ€ª|ÒH d !… TaÊ&h|¡TlÁ p çSdÁDRW„!„GÄ!G`XqÆ'ø`Ã(° Lô0DŽÊ}¨áPk¤‘GZˆD#ä`Á;¤°‡j`¡n,â‡c(ñEß…G ”<„’þƆœ‘Ndr¬ÑwDA9<F*@Ð#•¼1J0ÆðÁˆyÔ…rB Áƒ@ÑÅ÷!q=¡TT‘J)`à°ƒ[Ì0(x818¬`I#M|ÈÒ† \lÁFe(b"vô±ÇªÈ&«lJ¥ô!”@ $e±ƒ ^`¡C_ AÅ ;¨ bqàQDz|‚ÇRL†Gì‡IØwDS$шmôaˆMÌ.q~L¡ $¦Æ–@2GwPqBVÐ`…D ‘ a <š$Y ¢K.®ìAH!Œ°ñ„5`1D)œ¬AÆMXþáDpÄ1s˜‹n)||Qá"ˆXÁ„6ì „lìðiÐqB5ÐèÂ@P1ÄRxœ(~"Çi¨qÚaQÆõ@5” ‡X``EltA!cá…qô'ŠT‘D|²}Œñ¦¥ áG x¤ÁÇ `äÁÇ[¤aÁ  ꆔK}q¶GŠ?$AFXla;ÀN4ÑDCž`’Å ;(¨—×~m¢ˆSaâN`‘… bF[xGk8‚"tìañà‡ÚRàðChÔLDÂHlÄ!D,aÃKb…˜â0"6þ¨¼5tA÷:BÎ0­ ~PD J „þí…¤x„$èð 6ü¡ BÀA!QààXX„@†/á› ‚,ÈR¨¡](T„%ø@9f0 *ш$˜A `° ÚGM oâß²º€¬!ˆoƒ²7¬A ]€Úd·L¸¡J³A R@ †‚ r” +˜ÁqJÀ r#˜ làB'bp„ Xá}h"f „¼@3€‚àØp‡0aXC `Ð(’ˆ /àA ʰ¡/H¥Ž ‚d`PÆ@&Ø ‡%h‹ þ„Ô0‡!Tá<ˆˆ„Èà˜Ç‚|Ѓ¨A \Ø”à6„‰†%Úà1T¡Cé’Äá \ø¤ðƒø@G°B¶ ElÚÓk†ˆ¦ …Ï QèA!!6¼áR¸€`ð1œA pBÞÐ?9MûBÀÊ` ® ¡_èÁ±6@¢?ˆÁîy’HÈá ¨-ê°ˆ0< š¨Òƒ*äÑ ? CÆp(AciIDI l¼0&¤Ð GÈ&"Ñ„mšA¤yHƒª—Å*4!pË2Ĉp2!t˜Âþ†05` \hCb€†,Lâ t¨Áj°‚¸Á‚¥èÙ˜°„Å©¨Rð j`Â($ Tà„ –)ô`nD¨€‘ê` ‚sÃzà„7ÀAÜð/„A 1˜j'„(¸88BHà ª}ÐD !!&0"q~耴 A  TÀ‰¼À´;ÈÁðP" Aª °Zï)‰;¬ a°Â&" „ Aö@L—Á¼R°pV¥|³xÄ%°$pk w¨–°‡/¤! O¨º>R⑸«¼„!à  I˜þà@9ÐÁ ;H)T ¥ÃÈ K`9Ø€Žðƒ<‰zxƒ!ƒ,@Á 7‚ 6|ãSÀ¡u„V ƒ \ÀShBvsÀ JÂt€„>„/Ç_ ×Ì ?%ø€<ØÑܰƒ DÁ¡ zpãRˆA ‚fÄÒ€¬à:p€‚´ …<’aO‚ú¸‚XáÆ˜Âr0„Ô`=Àèð0ä«l°CÈЃ˜  äSà ÒƒŽyÌ~pÃN°µ @ÁU+`ÅX` "erlb!„!0 Uø@ :´ƒŒðþº4° X€TvÀ<à-@‚Ý[=ì ªkàC"p`B <€ †°Ã)v€TSXš …À@ þÐ+HA 7ØÈ Rø„,bч0¼!D`šˆ*\Á W€B \ÀƒÜ€ WBB€f¾@;@­R“*Dê°@°°2€ "`NPÿ5V \Apòçp ’ðoÐI­Ð ‚ Ê!öaVÀqðAPlPo3>” cu iÐ;à5p >GRÀH°W kJ!@6pc¤i F0 WP @6°?PþSOðmðS r$7Ww`¥ u`UMP@€*Ðd@ðñ‚Ð…Pq`/pn0W GPa;@^ƒ … €'2I2@o3H°" 06°LëeA*s17 ;#05°V@x°68d0C@"XJ`.4Xp.á! tðx=WÐ("ðqÀ‹°¡7Ç# q`uä{€ePŠpµCUl/@2`]"Ðn€p0z T¡àtàƒ@k ŽÐP kPtø„(¸˜4§E Ë“ ©àõ™<ð, fÖÕ}à>`MP$yšÄã£| Nh¢|Фæ’¢ù±˜¤7ç42 œj O Qw0G0YphP,01X^,@S>0¦ B + %'R    Ð#@:ãEp0€€’IE>þkP tÐ/háŸ@  5PE¤àçC°W°a@æ5r@P‚ y·* ) Mà%R° <ðb Ýõôú¼¡‘ulp4d„Ðvpap„Ð^0OÀŠ0 WP+À5_rMÉâ°h°H R`kàKyb…-ðQb Qº©àŠ` QÐÞqOËÀ¢P$Ð0!~`*JPs÷(U˜2 -j † ™° 5À1ÀŸp2 ¯f[@·>ÐÊ5mê5V‹µ0I . 6Ð2ðX0y€þV Api4dC¹„X@T>°NQ€v2ð¬x[U4ðÚ_À¾=®*-D5° fðyRpZ€} †` ÈBÀ]C© ‡¥ásmJ`p4T@Y»¦'€‡ w@¹t Qzw@`°Ypø‚JSà h (S¾‚ÆÂ]à)MK W  w`cš½´¼¥À7_pgÐ}ðs8°ût‹dz°…ð/PP [P`Ëâjne­¹†Dt°_=€| T2ò2ÀG%ð „š€4³¹4Ô 0¡Wcþ9 jð+ )ÊBÜŒ- jÉ€ªÐ¾q8ÀQ (@ u É ÍÀƒ0v…OɲA 70£àyàoÅŒ/ª{)°–Ìq—K/@CL¥‰ j [ Op)] Í-@d[0% ]"- ¥f5‰=¢Pðq•ª à¨wË™h`sPŽ8NТ…v$PZ`?È/a€’ZЫ–;+0yP%õjä ÞÖ0iˆIàZp[ #<Ò€’rpð93vï\ U}_Ðxµ|Ù)þ±QZ_€k0 ‚@0BpÀd°ÌAÐ>°pèâ°{0ßægqP§àŒ +ð3P.ðLXà5P$p x lPDEpO»LЄ4ðoД ÷pÀ~ÀkÀÁ.šW0 G ¾ ,¦)Lð?@mpD@!¦Ô@‡?°Z -@ƒí1z ‹ð–(ðGxˆŒ`N€‚À  …0O4de–  É‘~Ð_`«nY@L >ð{ ®½,zÀCàP˜ŠIð…pg°MqPIËþN`Áó†$¦ñ lqà•Gó¥1àzÀ” T ÚºlàÁË0®  s0)`PñßG r0f`w WðŠ}°¹p °g^P_ i ˜è%!Ì3F°;…‹†&g€¢GMp¶FB0 øÚjºÌ)°ip*à4`])À#K Bp5`1 .pO©`cPL°&’p~wv< YqÂ:€è|PƒP ¾ 'ˆ;àÂ-`“p h¤ƒÑuÂ-©ñÄó€pªg6Às$m þEðLbðw ­cà¡ý“uSüê0ÐMÕ“›ßcpˆÎ4ð±õvéËr kP‹vÔÓB°p050(0]ÐP #€|¥q z€æÓ] ƒ—œp bp€ 7 /ày°X™lGOØT ð)pBû‘kHG[€Æ2à×Rð%MP^  \ °-赜OF•êüÜÈDÜ®k@wðQÏ™M°Ip¯M\`@ahJ ,`jÌÔ' r ùÒ.È jÀB7à/mO¬XC@þògôQEÀ#.ÎYsÀ K ½@ Ÿ°Y-àB k@Aà ðQÊ5Õc†‚M<àäþ'2PÿU¯i~pxP†aP÷qq[p²â³…ØC˜8=Àaó4JuÕ;:G ­‰.’à8H °_÷Ï)Àó?pð†€W à÷=`–=!Œ"E¤xéòDŠM–¾Œà€+‡’(Øèð¡„F6˜àÁÃÅÂ.† ‘‚ÀJ–-]¾„SæL–§ì¨YÂd‹—!:lHá’e ,mÌ”Bó§Ä B¦Ð„UþêTªU­^¥ùÉ–®&(RÔ¨!C BaâÔÀa‚†0RèØ‚uê©;pˆ,IrĈ™/XøÐâÄX˜0‰qdIX‚,ÁbÄr-»¤˜É’.L‚üñRË&6~Œ ÑAÈŽD„H2FŒ¢Ëµ¡6«CˆÊ˜$@†¼èb…Š•$`ÎL±óÆ é?yŠ0ñ!„HÛRCýiôC IbIr£…p¬XË Ã…¼Ü!Ó¨zÕ9m~¤hqÊ•˜ú\¹@ƒNÈÀNH$¢ˆB þæ{)’8Ìh#ŽEÔ€ã0`9â <¦ø‚"èÈ 2äè#(jkFHþ¤èb .ºc $ì˜ RX‰&ºÐÂp€#‘AºàbD>¸ `@B)[å;¬° 6œ¸bŠ9°Ð‚‹0 €Â !Ž b…èaÅ)ß„3Ϋüx‚ )zŠ%° ‚ >"ᶈãŽ$)$ ùä „ 8¤Ãã‹1„‹¢  )¢Xb 8äâ -xâ…&¤Àᇘ0CN©0YC=êÄKšy¤=é#Š.Žp$`vqˆ"΂‰ÜtÕ²Y°Xã¦à *”HB!2PA €Ða!*øqOÀÁ1Þ¤…QD9”•Ba£d8 þ/ö衉Œ8àâ 2f˜Á %Ž(ãŠA^ø¡!šÅê |è¡vÐ!$´€[ü$2PBŒX@Bd¶`C NFaBŠ9¶(ƒ„)ªØ!ŒÚž…cƒ¬¨ð+˜P#'”X 24ᄊ,há 1ê Ã7üP!dpÁŠŽm#Ä:æÀC‹(œØB7~8¢†+¶¿NxA‹8¾Æ;ïêæ¸ (jàá‰=©˜B‘Z¨€(Ä\á<°àÃÕRèøã!îc&žð! ‰#„H¢ 4œÈâ †ØáŒ8 ˜BŠ0êÐ;B0ºhƒ ?LᤙPT „>œÀ‚þ‡<ÆX…•C„b š ÁëÚ§ú >~(b :â%v‚‚> ˆ€@‚ƒ%†âb~ÂHäˆ#ŽäV¢$APxAˆ5Æ„˜Àƒ!TÀ •bA ŽðƒÆDá9€ š0=¨(vSÀ eG;ˆña tÀ”À2 `Gx0ª°†(lÂKÙÐ/ ! ´Lõ”’0à!1ÂÚ0‡*0¡ UCa ,`@0xÃÜÀCÜù¹A X = R¥wÀ q$¥{@Âv …‡¤ ð€ žð….ÖÑŽ,±Å a4" ^x ¶Pþ„$Ð +h±9ì  iPÂp§F8A T¨AÃLÀƒ4° O@˜Ò`ˆì¸@A‚îøQÂ}„g€@¯X! oÁ ÞSC,B6'°à†a•21š ,!6C°€4D¤"ˆH#ÛR°ƒt3 r*EÄ 2Ô¡ƒƒÜ@%€!wXÂ]˜¢qAE8‚!øðÎ9 ‚'ÀŽ9Pp¢–8Å+ˆ²9„a 3ûEØP3¨5 M’ÀêØ&™M8Ù |"9´a TPÁ‚Ð2,«H.>¸á‚”þ+LaIxAe"+lá9Á Jƒ´ ?àÁšÐƒ1€! eèAÆp¡vUN~øÂƆ< /xÁˆ=H}XÃz0PmÁ ÍêD¨€ü€" ¶0'AS^àÃ"†pAÌ((^é‡CÑ FÀذ`´xÁl€&–°ƒh qPÁ¼ÊN\²HBX¶ …),ðx‚! !LÐ`ü¦T 1œA l@®ÎP6ø Rs¨ƒˆPöý€ QŽ0ˆ:„Ñ–è 4‚ÕÖ‘—P„(`á†,h V¸‚´ Œ.þÔáxÐÃv°)T ;€¬eZû„”@Z2pBà@¼È ðÂFa xÀr„ü /@¡ %xÂFGW^—`¢ kø. ƒä`<KˆP,œM 5Ђ]I¼c¹Ð¢”À"Ê 5hâD@Ø¢`))Xá/PË€…+LŒ ÍÊ„°@cÂ5áŽÀ„V05`¡€ÐÄVp‚ dµ«¤€À,Äaˆ1€Á‚PìÀfì†ààBÈ‚\°c$‘=ðp0V×¢r „€‚œákªèä’°&¹qøB°ÐGtþ¡ VØC˜à;‚™cÀÂri ”   K¡ŠBh‚ ‡€,î`+<¡ t¨ÃÀ@Ia #P©³p$œ!LØ!Q. B.˜CÌpúIÕ P8Â,`Áˆ>ࡉÀ@*`1,BA€NP¿ÇÈ€Ç,)Â"Ó`À(Îð‡B8b}bC¨°\ùà—J8Æ1X!'D𠄃2tA S¸B˜ , - Ø†ÐQWu! F êQa KxÅ%FÑü aÐBºú2”¡ ]ØA¨Ðä6¢‚H ¤ 3Páþ gA‚pÀàå5…"ú@ñ2$! )¸C„`„oA 78Â_ðV%1M€:xð„$á WhÂt‡ŠA9ø¤„à@ÀÀ))N1@ò ]0Äm±‡Z|ÅM€¤P„¨à@™ÈÝ*\ -`ÁúЇ,\¡Bp.Ö]hLˆ‚ª‘ Jèx;pBnÐ(Øa Ã` 7ôõ-¸ÂÇã¾aF°! \¨ƒ)”Š8xN¸ÆC„ЃƒÜÿ4!.ãÒ+Ђ)X8‚$2‚K*"°‚#ˆ‚8ö™ˆ±È¡þ„?`.H#¸‚"XOˆ&8ðø*Q¸„K „?ˆ‚ÿY< ƒJxDXÀ: æê <Èx›ŸúÁƒ-8@ƒ2Èê’&@@ ÕúCX„1ƒ"È(h!P‚3ø%•ÍÛŒ!ø6 )‹©1#Xh€°Ñ+.8‚,H‚.¸#IÀTPƒ>h‚-Ð/Ø‚'P! "È<2€*x˜3؃=à‚/P!hžÃŠRƒ;Ø«7`‚$èž>Tˆ„2°ƒ*Ø 85^P†ˆ˜ƒÇh*.Ú±G˜¢6þ ƒ+p&øD„K0…=¸‹# ƒ-àƒÌh)ø¿l„ P[0*H<¡½ÂØ‚0‚(,(6X‚* @«x‚f!CЃG€F°Y£P*3PÀ,ÆJ‚ó8p€PºI&À$X X‰ø€É¨Œò '3`$&Ð2ˆƒ)h‚7X…VX! ,@!è‚/xH¸+m„Í• <)°­1!0+– ‚ p¼Ðh‚¸ƒ-Ø-ƒFw9…@()¹ŽXê¯#(¬ÐÀ5Ð6Ø‚3ø€è XƒE„JØ„AÀ‚>€â:¸ƒ\³‚Y@Ø#`„“Ú‚:Õ¨J0‚.€-X-ƒ(¼p¨£JÝÈ‚äc‚VðE 3XL7°ƒ+hÕf98 …$@M!èƒ@/,ð‚5(2 ‚U`‚0 › ˜‚€2ÂKƒ4èx Ëè…)P%PF$ö!ø¥BÀA>)ƒ«µ€8Œ ¹GhìX„Vàˆƒþ+ ‚x4ð#p˜ÔIíøì¦#Ï–x)põT.ð#H« ¢=h¨Ò‹¤k½ z¹¸pYÁp*Ð*XJà‚Êh$H" ƒÔ{³9ðƒ  Î>xƒÐº¹(ƒÊ).ðƒ2›MïaE„'xÑ-HÐ%P„#‚³\„D „8ȃ0à)àªá"§10ƒ-‚Ðà×"è„>86@Ý#à@°5 =ˆ9õ¨=¸ƒe€P ­»]-h‚6˜¶±ÅŒ7¸ƒ#$ˆ „)È‚@‚$‚²{‚H„H`˜H7'˜ ¸þ (ÐYž )Tü¡½ T ‚4X(PÚ²nºX¹¤µ‚p$À¸‚ÈTÿkG6[)ЂX+ȃBh ˜JX1@+4Ø<ð‘bp…Y…x©[3„׉Nu‰* ‚°¥KÒþ+ÜT<ˆ2PƒºzÍêÿ-4ŒÑ‡M)Ø‚*P„GÀ…„‚X$XŽº›®7à—½s1H„®|X»‚ƒ¼8 F«ÔÔ®¬Â%¸‚‡À‚íêä @H„EØD˜½šƒ756¨3˜9Cx&…>(8P(h‚0.þPƒ`1ØK!Ð+h‚5ÐPØ@ ;¨Cp"@J>è1˜ƒ5ȃ:øƒƒÀÌf)…”,Ö ,ƒ Z„>ˆ„‚ è)h‚"L1À9`„&ø‚à+ ‚Ÿ¸ G@¢ôøä0¡¨¨Ô€RËÀ‚ÈIÿ›Ÿ70:À©-`D€„ˆçI8„/h*Í¢ƒ"‚S„C ƒ=pæ*®[ZˆLX„B3ƒ(°Ô,‚ƒá;@ƒ#€=8ÈùiB¸‚ü‚ýmÀ>+èx8MÀ?HS¯R1`¶±U…þRn‚ÀJð˜‚+P.¸‚5ر+X$€‚J˜2ð/2Д>ð‘>˜ƒD¸c5 ƒØky“JÐ<"PE¥ª‚!1[fe‚ˆ° È„G°/ˆ`ê4è?5 :˜D0¶¼Q¯{88& •Û+¨‚1hEWiY,HKb3p@HHUèÞð'PÔüta Ø€ ¸¸á’ š.…Hà…SpDRèÎ Sе6 h8È"ø?X‚(xíIØ„KÀ´š>ƒ9þ`3È‚C0 å“1Ø‚/8^sa*a¹èp=‚wúU7x+°Ëá‹@€+,Hˆ3ÉI[E@‚D5p7ª‚µ¥õhƒ:àé&8«@V3à63€öÙÓ ÏÌ3Nã*h¶‚ûÓ=Ø„M°ƒ?Ðí)Xƒq `•’^@-¨*8„:h†TØÍu½‰º€¨«Õégl¬£%Œ< ‚2Ë„Cè…98„2è?x=pV'ø/°90ƒC°„HH„$Põ.@… N‡ºûühþMÀP2á†<¬a høÁš@„T0hÁ ’@„|`AÂм%²±j„ˆä@ ;FÞT2Øay5è`°,H ‘냸Vó©P=Âyðƒ…žÀ¬,(â}èÂè°†6t 0ˆBœð…5º1#…P‚lЃU¶ÀÀûA3¬`=hÃÑ:œ"8A Np„h ;0 &§ÄRn$XP ŠQ”á^ÍhÆ!Pa=ÀA 1x!E8ÂdÀ§}D bHºÐ©‹\bpNø RP‚#â‹Â\ð"f þqhôà…-†az8Xf‡œÉ„(HA f{´p„!ÈáLØ(tðƒ'4aX,Ѓ¾ O¦%fhCGåÐ`,ãB°€làæ• sDB8 }Ò`EÀsšñ„,h¡ ‰`ÃôÐ b @€H°‚¬@%¸ ކ.pá `8 d$B”™j†%( 7ˆˆÈÄ4A´ö18qð¬\Ì®†ÊœÜÍÈ9i|ö‘±aÁ!TÁ¸Á¬AüÁ l\˜@ ¶¦aÂ!œwÇù”<¨B)€EÔA3ƒ!hBü€L‚ `䀷L[r rÑþ P‚&0g 8@ „ È@~ýPõ‰'žãÛ€Áµ$×ü!ôÁÈ–ÁÌÁÁ‹Ì@¬ÈƒäŠ‹Z¤`ñÄ”"Џ˜iRƒ”&AnL°‘cG?ÂÅŽ#JZøà±cG)Rlìr"Ç ,SŽ0‘‚Æ‹7l ’hQ£›YISË–"Ê@‚ÄEŠ“A~°$1R +g ‘:êhÙ¥ÄQ³Åë”34dÀ)±‚Œ”;N¤X„)äÄflôU™92dÜi2¥ '}øÙb%Ì:j\IÇÊ RƒA‡=št颥äÜ¡bEÎ&Mþ¢¸hrK7i ËC¢Œ6GG,J¦¼øâ¸È4d 0Âf‡1^Øà)„cä/F`Ühaš<ÇE>ñ@ò¤O6LxtÚ”C3¼v!"%ŇJ:¢ØÀ°òL+E0n¸a#†˜# >ø„ I¹¤0|ò ‡’ hŠ'œxAŽDƒ #œ!‰#¦`"Ž%žÀáŽ7Â8à <øÀâ 9¤Ø‡8`£.h¸ *²Ø „È,بâ‡&#Â)TAŠ â„jÈa¥,¶ðaˆ#ÆTA &‚(¢ X¨‰—¨ãĢ𑢠ž¢ƒþº0d‘-¨h²å¦ ãG/´ ƒ 8à O•4Øhc‹0¬ÀÂp€¬8‚+¼èbS!–XA.÷Œµ¨\À C‡úx¢ *bì£&Ê ƒŽZ(bK.‚Œ>dmÖÙgG;¥‹1à¨á €è!Õ!Wàˆ‚ v Qˆ#`%“;̈ƒC¹£ˆ$tÐaŠv}ùB #„" 7JA(žÐ „n€Ö,Z")EJ²!€ã‹ÜØ"YØ¡…T©$ˆ*Xb0Bh!ƒ M¼‚`h‰"²`A†^0¡‰'~ú!jØÀƒ `¢‹9bå:ö„Ž!„#þ‹#Ô`ãŠH1c स (fÀáS&i¦ 6,È ,°PCGôˆ£  €‚ TxA 1<ñ %˜€Ã @þd $–H¥`èá * ä,Àˆ’‰”=Êå'td1Έã 6Bö‹-‚H5È”B 36 … 2)­’…  XÈá†òˆEyã„l†ácØ"oÊ÷$å‹62Ð@ ‚¢Š(Â( tº`â,ÂpŒ‹3a^ýõ÷l&BÚ°AˆdC‡xøb‹A ‘CŒ0žÐ!  d0ÑàÀ$4Á 1¸b0ƒ´¡|/Àþ’°„Ü ) ÕN®„ö}„rCÀ‡;¨!c¨Á ¢À,d¢GxA ±.œÀ'0ªDŽ,a„f¹Ô¸‡6°a s κЄG0B c(C²@†‡ý 4´ E'ˆ!ŒX€b,…æ*´Á OxƒÌ`‡;Tá´ÑBÁ,| '!‚-Ja!dE€Bˆ@Ä¡b: †JÉÊÀD!11Äl‚@¹…-h ‰"%I˜ö5# oB! Q¡-Á aø °7&âQ˜W ,XÁ? fp…#ô@vЃ݃ tPÈæ=ñy÷!‚=X‚ppA^G8¶…*(ÁFX LTš3ºJH¼°¬ m(Ãpàƒ&0 9‚F@‚5Ä /Y^6EÎ!lжPİ ¡XÅN^‰.¸A:8AxС3È'QТ+¨á Q‹ÃŽP+á†ÀÎ,ˆÁ=°Ai"!7T¢„ Ãè°H¸ÁWÈB¬…=ÄA uÀƒþ¦*$¢lQÖþ0„Y´bSРf „ð€—50BÊ@+d@ qhVö€‡?|a ux«b¨ …%( MX® Ø AKåbÞ1® & BIðœ0,0 _ðA¦ ¸Abr胆hšáü€Ž8ÐÁW½Ð¿?@ 5¨Àª0ñ詤a%a%ìa‚° nðƒ° D¨ ?x! CA ~ð—òøžºCl0‚HÀRXÁ „5ìÁ:™‚n°ƒœu#Ÿx)J¡ŠJ本ƒ`ãÐ(bP0\©0`à0 7r <¤¡ A Ä&þŠC8 zH( ¡`@5‚uP " g¸"4ãKÍè ï `òp„7|AyhB R0¤”à2àD(úÀˆ»¦/0¥°e `ö.ôašH´©Œà'ØÔž |! dˆ‚`€ »` ©(Å T=ÔÀC$&Õ….„!_È1ÉC‹R¬ZkHE#ÁC” RËi00ƒ¨ màÃòà)´`FÀÛ*ë`¿b\É1A-Á‰-pácC :`$á : B 40žòxBeð˜¯Ø`Ð@›qLHÈ \肱þ9˜A¼`¸Ä$<‘©2„A99B JàÛÆ›á3’ð‚#Nq¸É Ì`†zÿ µc°âÚÀ Q<Ÿ°H”à!\Bd¸ ú•&¡¿ú ‚´`;(à …R ¡*_ÐÓ€ aÑ„Á ãz怂”à mÁžÐd ÁrÀ%Àp‡ÔÀžuF9¼…5Õ€ HÈøT•†ì@/Ã!†äø³ð!!0°C°…ƒ9¸AŒøCëP†5þtA ` ¨*! Rˆ¢Œ¡±³PÎJ"Y(â°vÝ6Ç=È‚jù`K1¨! K8C6›Ñ†A9,Xàð…`á  d„0¯sÂHpô`OQ„™pP'„àQ0CÃICæ€ â@XÀ€d`Ö@ !” D`%zˆxÀÝš`(p…¤  \àJxÀÐàMú`ú´@óž Æ mªàVïa Ö@ª  <Ë,JÁ Ы â@Æ ùö@NÀÑ"ÁU€ ¤€®¨ ®¬øà ®` B¡Ü@Rà< ¦Î¯:þ NàZÀdÜ ™à~@ ¤ Ø€À4Ap€ ÌÀï ò|ð€ VàCpÀ˜1Ò€, ü@zÀ ㈼@ ¨àš€;˜ S˜ Ff¦°` ‚À(a ¤®zF¯A‚ pàô< á ü Ø]Or€æ ä ðàì@-ªJŒ &áÔ °  zà ¤ˆ* ¦@ ø€sÔÀqûÜ€x ŠgÔ  A òÀ@€ PÀv Ê : H`8 A†£¥¦À Š` \À‚ÌÀ9Äv xàÔþ(` &… a¼d  $ëVj€8  ò =’<¾@ ¸€ –@ ¬  ˆ Np – ¼à Ì`Ó`&¥€ ¾À †–`'d ðîàÔìk¸ò@ Q@VÁ¶Î´@Ê øÈ î`Ä‚,žª ’²à ÄÀ † ¬À¶  A¼Z` z` áàÀø Sæ@HÇ¢¨zàÆ)¼ òñôà îÀ0á,!ȧ Þ`pÀ 4Š@0Òî „`Jå‡kRZ@ ®Àˆ ·`¶à :@<À„°`ò~€œLR`ßî`ëÈ þ z  ´ $+˜ À f V€LèðTn0¢ †- š` ˆmXàD¦€ ez ¨@§O9q '±Ï ²n';@²@ ¢@ r ¦i L€À⎠¼¦˜àÿ>‘î b€b @$Âàn0 "@Là Π à€ºà>!”< A ¼@ô¤€Iš€ ! €d º  ºQæ  Þ` ú@Ä ºT)0av ƒ01ØNÀ0 8`ëH àE×` Ô` ³ËKZ` ®€ êàžàØ ª@" 8@®¥zÔ`þAAÜî„ žÇ¤€B€f˜À ~@ Ö`>@ÞÀ Ê "aa:á Æ  ú Éj £³`—Äà} ¡â ÖN ú`‚à ¤  @`@€è€ †€o® ˆ 6ÃÔ 4ïäl ï”à ` ˆTî€ ¦Ïs09T ´€Vt€ ^  òxæ~€€7˜àvµE_t„š áð¢6À $†˜À à¦@ÉV ‚ Ì ¥ô¥##´¼äà8ô“Z‚€ !– *à `4@ ¾ Ò`¨ ]v4J(ªÀ7þd`Ì€ ªp àÈ îL) –Šf€p ¸È(fÕÁ`áEˆ@ ~ÀFü€ Äà p¡r€ `æµ.H ¶`bÞ`ÌÆ€Îî)Ø2ü€Df焸€ ü3Jt Ð@ èU > D@%Ì` ²ÕÊ VAh* $Ÿ è(a¾b¦ ‚ V ÆàŒ€ôq0ê€ –  |à^À Ü€B§àâ r¨b ´à z'FoÉ:À(àb ^Àâ`~ ®` Ì Ôà #G Ü€ H!Ö€¤žÄ'cvvÆjþ öàZ < zaøìg‰à´À ¾€aq„`KFˆò`š` @ ôö ˜  JÀHà€@Á.Ùà äàfØà„ÒàIáÃ"Aü  º  TŽ Üu N HÏFÄÀŠ,q–ÀEL0¢H€³ ˜@ `@gL€"ªÀhs`¼@ `5€B(Fˆààøª@ê`¨à   æ  ¼à š œàŒ ²à Z€ü qÌÎÆ€ Ú Ò@ ú`Š-¡ŠÀ< j ª¬fá p¼  0™Íù#ê@ ¨@.Ó^€ ÞeêkV¢ ÜðÞäÌÀ+¦­ ø (bJ-þÌ$Á†k¥rç¨à8ae´  Ô E º`¾ÀY3¹ˆZ è „À ¸ æ× ¦ ~ V þ  ¤½À È ¦ 4–À6AAÔ@´YòÀÔ€ –À0¡x†Ç@òˆ°€- ^…» Ö` <á“Ò€ ð ~I`¹ùtÀtÀ úì  ÄÀŒ'”  ^€˜À>îKÒàº` ¾ ´`Ê4¬c£ ˆ+ \à=ÀÁÎ`_d<@é¶­–ñ]S&¦¤N æ1 ¸à B'` ¢ø2ÆFιþ¼±`Eë  ad! F`F…ôàÀ ·&ÅCºµÍ™!@ºz€Ød€ ˜Æ ¸`ˆ¡Î`²·Î0äO¹ÀŠª  ô€(tŒ œÀ ¸@ jÀ"]i5Îàz@^À (ï—»à:åœ@˜fŒŸtŒ%à†4áša¥m€Wz Ó àÀ@à F·š ЦðQ ì<. ¬å( 2n ¦@rA.a Ú Ôа΀ zÀÞù¥Èƒ Ê 4á °@hË:`z@x ®`S®&á Ê °¶À ‡ÂŸªŽþ!¦ _@‚€IF& î œE£²€ Œ ~i *a î@ Ðö\À€ÆGÈà F üì <\¡´@ ˜¦ ª  N€z‰{„.œ€ b  æB‡€ `à8v!Ù4 |Ú@> Ö 6töѶ„Ò¢ ¢` Ž@Ô€¾ÈFÁêฦ3 FaA¨¢ \ôV|`r@B$HÂ$²½€G” p b ˆÀ: P²f aü`ŸD‚ ¢À*@ø èÀ¬;aö?{`®@¡4Á6@6@F@ òÉþtÏ$á˜gÀR‚Ì út`8ùÀ$w%‚ÀS@µz 9öÄæ  ~a ® Ÿû`6 ¶@ ¬ ¤*a ªÓ"VÞ”ìr ¤¯Ñ`  xÀL¡–@>`î~ÃöàxA*A ø %á ÞÀ4\À Ú# x€_Í vŋ¡ œÀ8A¡œN Ý (õ Ðà0 Ŧ€ ÎTÕ³im@r«³| 9’@á Á„'O0¡Fa fS ï?ò£d „À ²€*aP¡†a> Ü ¤ËTþ ¥Ø` Ì z e€ªø  êBi@ÀGxCV4là> Ûá°X€gêd ò$Ÿ¤Ð ¦ ì  ÁÁZ w*râ\€$ŽÁt%€@îѬ˜Ÿ$Aß@΀„`fx ÀàÏ©,¡Ø’7'îÁH Ý‚‡( <ˆ0¡B’ÂȉCÆ—’-oØüÑ€"JaÖté1$JAa•®)2%Ê2žl¢Ê ˜0a¤É‘FŠ1Y"u„',kÚ,<ÊË&]Ã,­ÁSƒE)_T¤háâDFê(yâD›‡x°ðAŠ6íÁHrÞþ*…HŽJ{*Áòcž=hÒ`‘¦§Cˆ-éD­âÅŒ;~œVÓ—->zXáBåÌŒœeÐqéI5f<Ú³ŠN#S.™9¶ìÙ´k§Ç )6|”¤¦Qœ9`Ä`éÁ$„”)8`tºÄ©H–:ntá$HH¤cdp®qÇ )iØü82%Ì)9Œì°Ñ% CbÊŒQó#Ûü·P9‚!A QÅ ;äpJØÇ†8$G'=t>ôñµ‘"MhèÐD`Às±†<à…38A -¬€DN¤‘ÆB„¡!†!†ª,áÅ< þ¢Aà@„#ñÃv¸"ÈG ‡N l!Ç)tÀ Bä †KôC€–€€/é)i8âÄ6xwF¥ðrL!pàQ†_è¨K@Èi(ñE†ô˜P)4˜4RÊcTB'` .ðPC8ð°ÂK8á jLJi­¶öØE2¼PEcrÊ(¶ØR ql 7ÌP…]˜±‚¤àÀ°ÝŠm¶Ú.t oHñÑ(‚Æ$~0Ò!tH‘Å UP¡ƒ ŸhbŠk¸@„d„•R ¥ *¨À‚ 1¨à„l XÅdXaƒ.þ°0…|XÑÅiôpõÛ*&E;äчR\Ñ 2p,DYŒ‘C ƒÀqJk@ÐC hœõ±Z¸‰q†EXaB $ÑBiÀ1…:`Å (ÀÁ"üàcˆQ\ôˆjŒ‘ QM,ñˆÆE 201"0Ë!I!DR0ÇUÄÇ#¸‚2¬ÈÆKì %š°âB} W„c a‰mà„TˆbK/{”Ñ[¹Ä ¥ !ógÀ!ÅMÄ‘m)@«QƇ’ÊthB „: ñG4SP ZÌÑsõÖd†%„pþ`üÊ&±Ðr wtq‚ -¤0Ås𱃄` =\þŽRÇ8øÀðÁ —@ŽJ@)TÁ~øÃp…@$‚N‚ ^ð \` pR81ˆBBfÀú ?! CðÁ^€=@m qËÞð* ÁÿÒŸAh‰R`ØC0бƒ&@!B‹Äp‡;´!>(ºPX Ö|ˆn-­iCØL±‡>Á U`°P….a —ØÖˆ‚1„á a †Na5¸ê 2 R… `À (ˆ&…(Dá‹>ÊÃú•†þ¸ ‰° X ´@ BxÄ”p"! Uà r ´ #°cB±Hôe€Ã*P˜€vðÃ’ @) ¢ jО<°vÿ“A°%‰/˜Á?èC&FáÜàA.z† à ¸Š ƒ(0¡N0\åÀˆOþd žÀ'ê(€á >0B"µ5´áz8xRp0Á nðƒ!‘ÏŒæ³;3ˆ‚¼ =ÂXxÆ0"D´?ÁÜ€‚¨ô…ÈBÀpLØ¡ ±ÔÓ„/T!lèƒ pP†8È¡ \à‚¤…&0þÁ P* "ðŸ?2”¸@ \¤A Zèƒ,À68AY@à@ºÀ=àÀ=‹D˜°vI RÀA”æ& 7à¯XpÚ_¤U%”V'Àƒhà3ò'TxÊÀ…ð@'è<‚¤`7HH ²ÐWh N\þPˆ8¸‡èÃPY2¨R s€Ã$A 9 ¤…qOž*$”èÃü †#0 Mx°ðˆóxAM.H²@†•=°A‹ü:„ŽÝÊ~°„`±Ð]´á°@°`„/•A(Bš4:0!i-„>à*þ2¤(+L&d! §‚@ðƒ3Rh^ / Á!oÐBàúZ-xÅÛR~Ð0x°”°„,àˆ ? bpÐAЀI¸A úЄå0Afééíäà„ 1"„ˆ(ÊP†+pa WȦ /˜@ð€ÂP‡|þì d Cx ˆ¤AÈ@Ú ô@°Ž`¡èƒžÐ–‚“ñAÜ >4 …}b—#<ì¼+àCp %þ”‚¸ì\€”@Ø€ 8TJa¸Á °@„´¡ jÐÂñ7PBþ‡Xžœ·ª#œ r8Ä#Ø€‡ôÁ}s( ÏR;ä!f`B΄$”¡ ”@澞P¸ qàA>"„l2qãá­Q=ŒiLè(ñ H` B®Àc"ÿ b; ú°BP`2`±Åo#†T¨B^0ÃÈÚ%€@Iä´P…-¼€'£‚\‹8`BÅRp+T0€$yq¥§à Lp? ‘0 M 2 Yæ±(ŒJ "&…sBð9ƒä) hÁ y0-À*B 6PFÐ v@æSNp»° r@:·÷ËAœ`À Ñ~·T làTN×uRþV9CÐ(„[ ~¸U –+'xR`›wÀ€’À]5°x ˆb°g-`ŽH%VBz€Xî³l°·¦|Øý…ÌX¶ Åu p g* È¥\i‘+2p6 U·Äw `Ufp@Д £€ ŒpJdÀmP¤!e¤Pƒ@c GPѸ&¬iÐ¥> 2/ÐGð̱`PcRp4ðõ±úÓƒl€E€:ð&P  '  a O ¯` Nº™°„Ú´c€Ÿ0 ‡e°uÐ~tðyþTÀ20+àª@ jÐt/€`5·¬éЏ vc5@PSð_PÍІ‡up;à ¸a,Eš+PàM :°†+šªkàSðq:án:Px0SpäÕ+fq°Çr:¨–r`ˆ‹pZà/Pp@~d<ù'ÐV°us7APM k`‘h€_]VpI ˜WYvÐ,l`R06tv@t  `†f«8}°ˆEœiQ> M—  Ž HvðaÐ(€QÀ lë@`rNA 7 eþýid)…RP4p5 ZÐg"_Q ¬ yPRÐDG°1ð=ðaq W #tªÐ ^€rŒkÀg@RQ0{êº`sÐfÑPsðz T`„,@f0 ¨p)<°"°`»Í[ž°.Ðy%Pq±eÐ Uð1P"Cƒ‡<õÚó†WzÐHá 7?p&U0Ûyš‰T nÓkaÔcqš`g N0IPŽR ^àŠÆQlÀÀ_€~&'@p°¤`IH0Œ˜øX ‘Ðe^ ˆ Iúg®P þ®` »À |0JÀ—d@h°}Þ: ¤P §€ Ÿ0 Œð‡*U?F`‚ 9@N€Ä¥º.pQ¡ÐcÐ&`a€–@àë“ ‘Vr ‡0fÀ• s G‹@†ð‹ntt€dPŠ€?®ðJÐ6nBà: ”ð̇;@2¡p ,ÚtàlÙZ°Žc€ÇΛOeO@0vpJÁ‘[À°@“J*@r€¸sɘœ®gàWÈañ ’p€°p#Pf/p%5à@/ðrà–¦kJ Š@ ‰@ L°:ð_Ð M°L rpYQqU 3‡Ö„? @c@+@NOÀZÐx`›Fð[à;PÎc4&àWþÀ8åLËÕc¦\7p!pc|#ÐCð[Ð E+@g€]`}Y^ý×ËêbZ›fðƒŠ`Tõ_À-€´0 ULð\À—pŽ ¥èzÚ EÀ&OàpУ]0±¨æë‡Gà…2 ´+6®3™:r)9 "D žP¢TÀ…«8»‹V•ÑF@R‹PAŠ`0ž ± Šz B;P‘rÀ\ð=05[°¢ \:×FaP;Ð%0w@Gà‘ P² À Wð/0}ЕÀ``,b%þEh mÐbØXbà ‰0hðnªà¶Y0€àVð| C^°Ž êu=ÝN²5 -²|°¶'à{c:\²¤6'ðnE.‡Ý3 ñF@_¬£è—qEÀì|â^Ðr éæb®®¤@´ö2 ÓÔ[0b‡`Š€âÎs{Çä ÀG!EŽ$YÒäI”)U®þdùQT3H˜T9¨Íž'mÂpâÁäG7yÌ :‚å† 'X¬Àa£cK¨Q¥N¥ZÕ*UiÚ 3Æ•;^\‘Ò$ •)F(ù¡ÅB‰9||DJ,?޲”!räG(Q-BL/T¾liäH %Kz‘sÕòÈRb ~ 3FÌ)UªHIRÆŒ•?„¦p9BæÌ34„¸\›e&<7~XYâe…'HÜ IK;°ŒÁÂJ‰9ÔQ²bG)S^|ÉâE ô!Qlƒd”& Aˆt$i1Æ @„àpäÄ‹Œ-FpàæŠ'IH!¥*¶À" ƒ:£"‹þpø?j0!¿˜È 8v8"»ì¤£ŽñZzÄ8Ê8ƒ:úØb8ºÐâ%œ¸¢†°Á=aˆ°°BˆVxâË4r¼SðxCŠ)°(D9a" **áA2ÆhV†âˆ%Zx¡&<ñH4ÓT3ªB"+ã’KƘC 4®p%•6V¨¡+”ȃ E’à‚†:Úà$‘K©„!˜â"ÊØ¢ލ‡ T8üè(£”4æ£ è„xbͨ2[c )Џ¡†+ú:B6 a‡ Š`!¬¸ˆ]…à!QNÕ•h!¥Ø@Jé’`Naå–B®x£þM‡è ’.IC"–@¢ˆ B²ÒÍŒ2Ä#Œ.ÜXà !$ ¯6[L¤ þE'œlÀD „$(a‰Pt¡ ‰ÐC ~P…)È€„ØÁRÀ†2`Á}%TÂü¾À…;å| à ^°*”a Џ¢'âÙ&ì€ QðŠ„È€ØÁØp ˆLø˜„+àR­-  \€„>Š *H‚^°²$8Á  @>‚ d\‚$2¡ŠBhb­‹EUDà™?FQ( –.¡¸@ ž€ø`8ÐÅöÄ„2°¡";PB@0*ár8ÈÂÀ'HÁ—>€ãІZz—]h‚ nð‚5H¡Dø . ;a œBþüÓ‡©á ìRCpз96 d ‚otB=Èb£ Å 6ј° MÀÃÈp äkY§D¡$(! 2è¾à„Q’— ZpAß^ÀZòñà9`‚m^"†4 @hÃŽÐ,¸†5ÈAœ†:¼!·^@ –PG° R ÃÁ3ÀbyÁ•L˜„"HaeV‹B”px×2¸åŸÐÖ¼ê ~ªÖÀ„'ÄíW8CìD¨à'8‚p{æØ£hF3„1õ8Amd‘Cl *®‹Hƒ¤ ˆ;x& JøBñÐ|èË\ø p‚þâ †:¨@*²@†Hà+pBë~ „Ìà;øÁ d°„2¸aV@pBNÐð@;æÆ5…JYÔ6àÈÀk.¨Õq€Â|І%xTXA ú †90¡ †Ê`…=¤V…k@zå6E¯A b`A¾0ˆ:°‚¦†&fñƒ(´UYHf!l€üÉaxXЂÔ€lË 2hBz2¨Á ²® |pÂ-ð`7˜‚m’”†7|!4@ˆÃž …LŠa(XÁŠà…=ô¡ d€C pPF<â]¨@*ÀÁ—[ ŽÐÚ'(,V°Á °þ€…'œ`_¨Adp¿;vÔ9ÈÁ œðƒ6¨ ^׊0„!Pá b¨C!(!jhÁЈ^¬#¨ dC|˜ÄžÀ-DÁÚlˆB.¤t€B„p‡:˜a «ÛÂCÙþøª\Q¨ Öè" ¡“hD ;´íC è ‡:ôa¡È‚>qIìªL€‚\—†> âRI eÚ  ò88A£4‡BƒÇ™p‡I„‚ È@:‚+,Á(»¼Ð?Ä€VLšä™Àu%ôÁgRp˱l¤S}À¬A"Š>Äk.rÖþˆ.,X„?(Xh"h`‚‹h €ºË…:À‚)8®+ /ø°‚NðJ¸?@‚#€‚,à‚1Ñ °€°ƒ<€ÀF0*à€@5à‚8:ˆ‚*@°¼%€3@ƒ¾Xà7P8Ø è"àî18ƒ$øxM…ó›þƒ-P‚'ˆ¯¥C)àåà‚5(:XpBàŒ_KÄ3 „'ˆ7°ƒ.û>h„ Ð6È$0p@x%`”/ÐÈ&ƒšF”ð¾#Àƒ6>  ˜‚ ¦9¸òðB`‚1x0ð ƒz)9!ð‚)؃*¸‚8x„E»(³0È-(¡ÚR §0³Úè&ˆP à(PÅ<ðC‚V±Ÿg*‚ŸùŽT„F‚à•䈂'ÀƒG 8 4Ђñ:ƒ.x„GP‚j’#¸-€+Æê/(“ HJxPŠ]ÑPþPƒE\¬fx„M¸‚4p‚à‚h!°9.¿ƒŽôPK€…—¸—ªœË“ȢŠ­(èIü¸8èƒ< Ás9= ƒ;À=¨BhM0)X!hˆ*xêÀðKð„°(Ð,`ƒ6ð°,øƒ=°,ø‚è ;³RƒC ƒ=`:`ƒFЄ Pƒ.˜‚2ƒÎ|«›•0à€ðŠ‹»Ü@ƒ/H>€@ˆ+$ø‚h.h8 š,8`ƒð .`‚! ŒØ‚(P‘/ÐLØ3ȃªÛ-ð'@Œ"$þ+3 ‘akÐ)0+¨‚@˜?x1¸¶)ð‚‘ #ј‚-`„I°”X­O<@€õû÷É)(F ¤£‹¡£»È˜ŒÊX,»ôçj¥HØ´© ˜Æ°> K\j†J …0ˆ*¨¥Y“³"ƒ1#7ð0ˆÀÌ»,¨,Ps!‚ÓáQ- âZ-(‹- —"¸娂)Ø4]8: ƒJ˜A¸&8à´ó‚3`!ðè*“GcŸp‚ è€&p‚#à67ø6ÐD3„Õ€¸€g ÏÐ8h! ‹,èJCƒ0xƒ†êäþdâR¤ãªƒ6(ƒ%øè‚ü”‚°‚>À6ø¨øÀ„;0„ 8ƒ-àƒ9èƒ1é*° Ù–ô¦45 #@–Hˆ„Øä ð8 €"pp&ˆ¿HM¦¨)X‚,¸&ȃ6Ȫ¢‚&è‚+À0P Ð4õˆ×¢(•S93Y¥(­f=Š@‚-ØÒÅb:xƒH(5ï@ƒ€ (‚h‚˜ƒi 3­Ÿ³ ‡‰}Y¶ø‚éò28‚'ÈY#Jú#0À! +¨„@Ø%è‚XþðǪ‚/­À‚7#p‚8hƒ8$€? )¸:¨ƒ0HƒÖD3Ix.¨#7(ƒü4(ƒpK+è%ƒüÌ!DN·‘Ù/ ´1Aøƒ;È‚5HùŒ%¨ƒAÈ¿;Âè`4È©< ƒ@ 0"à‚.('xXŸ S“‰ÁRdy„A„8ø#(è€ p€@‚pºÓ(12h°:" ‚)BÈ=)ƒÈ‚|½캃$‚^Ђ,H‚ö‰Ë,]¬a+6)ø bK^"Y<Â…'ñÈ>°Rˆ¯9 ƒÐ¸þ6HM”“%x2'ðH<@_˜…¹Ø žÎ˜ ^!PË „OÈ„Hx© ذƒ0 »°›Å*HƒI¨)‚'ø &¸ p! ‚úÇ(‚4 ?Æ"Fà]€t ÄM…QPƒ@ðƒAƒ4H‚'°E.ˆ øRuO؃-+¨Ø@€€È€ø5颡1ð$™JØ;XƒÝS‘K¨„(·,ƒðÍB²ðRd!…/*è‚ ðCh³;)Ð (EðƒLI¸ _ªü  >\,4pÎþ/È™?Ð,{ ×`WnOP!¨ øˆ0.Àƒ;„"ÚJXK0)$ ‚]BÉ#xe˜šªÑ-È;U„Yà…(è€Pÿ80$1‚èZ– €( +è‚(`”(R$ƒX! 7Àƒ,À=x,(‚=Àƒ)Ђ˜m¼"ýêah†\À…P˜0ˆHè„MXxƒ:˜ƒ+¨$h‚ \8ð€â…9Xƒ0ø‚Ip„CP.ˆXL„ÑãLX„F@5P„-‚OH‚/1@H,S!?àêЂþ  ƒ(ØÚ8 LF@U)B/xƒ0˜-D0 Pƒf`†ìÔ»+Ð7È‚A1å(A ƒ‰‘+H ‹p²¸¸<¸°—UfÁ~šIÈ$5ØB@ƒWЃA²2®›6X‚-ø+*zŠÁÖÒ,*°ˆ9ôD@…Z` è`" Ò+Pƒ²€¨ p Ráº3°¯V.Sxw†çG !'¸)è#¸ƒÕé  8<Ê77p„KhPð„XØ‚38„JØ8 ­3ø©?3p‚'X‚$° zƒê#ÕJ6ð,`„C$Ðþ‚>Ö€>(@1˜\@à:Cð(ÝQh486àŒÁR@„?%xÒö‚%P!6M=@Õi´ÀƒMEØÜgía.ð4(ƒ6ðÐ8Þ¬5‚Úlƒ9hƒp¹O‚%¨ ƒ-­#€&èÞl"O“NP¢C®)h,ð‰úY‚(È.8S$`i ÀB&`‚ž€‚ϰa4Ñ%^ªEØ-°‚(¸‚@‚Ѐ  ƒ6«‚>X€H èh@Q>ô2ƒ6À‚à"2‚. €3pƒ©’Çãr€?’7(‚©rÎG¸ƒ_›´áÃ- ð*xôbq«1h ‚¨ËYÖ>`GàO\@ï*X è€( ½RK(!%„B `¨,3®‡Ä£ OKXþ)`€ 8í ˆ+HCzll§#éR‚MðmˆA°"1x¸f àÐH€ƒ>ð#x5P¨ p€"À;P+°40>ˆƒ(` ø! „÷ƒðÀ­+¸Û€Fâ’©4 ›xƒ9h:^ÊãIÀ˜ ¸Deµèm.‚J@„D„>˜÷5ƒ5P@¿I[‹}ÛÐ/G`9P¹J»ƒ/0 0ÀjAÈ¿5 ƒÂpTÙßRööZ¬'F)¿$íÙ13€g<ˆ6Ø€˜*9ò¾,Ø) IðƒG8µ¨þ‚Ñß-¿"ÉkD¸¤h©Œ À€ˆ 刕,U@„@ñ¢„+Jœ¡d¤Ë‰y`̨q#ÇŽ?nTå‹"DpÀG @L\Ì!LJz°H“Æ 8)ø¸Q"¥D8£‡D (¾\Ár%Í•.@nL©uëFCq ø óã‘<‚”á¢ËªW:¨8Pñ¡†‹Al”ŠÂ¥‡£@† õ±áÃMš97~°È!…+ãÆŽCŽ,y2åÊ%…‘ãf“>\‚ìÈ3¦Ù…*¸<©“‡M?FL¨H!‹åÚ¶oãέ5&B|°‘s$H>&nxЀeþÍ"3q¼˜Ò'0~6„R†Ì:¤:)á¡Ë›>2˜X¨Ñb‹îö¼•0ÁÒ¬Ù v´àr%‹.VŽ0A× säñtD²~Xц -TÑe˜äÁ#`ÑŠ%•œrÄNx±8ì†"xü5 j)Áƒ`Q $f1fÈà F4‘„;ÙƒXIÒ([ aAH@ÁP8ñ‚føð„q€ '¢¤aFShÑE,©|ÁF*Ð# ˆÀÃa§œsÒYgF¤È†R¡D_`qG£À „¢dò„?Ôðƒxpà hØY©¥—z$#þ!±ÇCÈp‚ ÀX¼AÇ+ÎàÂv q }`àzÚЃ R<‘Ä!ŒÇ 8DqA 2¼)d¥ðñEVÌH¸ Á?ü–Ä> ñ lÁEm¬QÈ@èq…+Ì …²ýÑ…mØaD'Œ8RÊJ1…X´Ðo‘Ç$*ô€ÃyBÒGŽ,r†™\¤ 2 úFT,!ÄDìz)+Yœ¡Z@àJÔ€>ñƒRdÒ$Yt‡T|Á‹/v"È C)¬ðDu¼Û´ÓOë&Jb¬†TcxQEd"Sˆ²‰g0ÄþX@Á %À µÛo?F‹ ‡ìñÆ 0€°ÁšXÒ "œ˜ñEAáBÈš¾aC9Ë!ƒRÀñFLqg\ÀBC0÷VuD$œ41˜ðñKdbI&tôqKâŠ-}ð $“ÀD <ÀÅÛ´ô1 ‡äAȹ”ÒG%8(LÇjH…­ BH(¸0‚:à M0!ETW|–CèùñDQˆÇ¥–l‘EcáÄ$c´Up‚ò‡…Áx„!†#8A (pÁ (°%pè:èÁàxH‚€‚D EØD$*þáHànøZ„ á eØ!@èCÑá) cHCÜ@ C,£­àÁZà­?`Âghƒ™ÔPG<¢ 0 N€„6´agKØxP&$B°`B& „¬ü#Ȉƒ!bp„P"†¸A0·-!4áp(Ä|5‚/h+`’àð6R´¡}  lp‚Jø!˜ÀAœ +¨ÁøBÞ0&d ,À&@q…1 Iè Hð!It]h‚ n ƒ'¡=P'¥ !€ìˆÂà„4lb/Ѐœ(ƒì`#ÀÌÇo‚sNïyø“þ&h `€Ü Pxzt…+¼ó}áܧ¤&†3˜¡ \àCrá `Ha>ÐÁ Q L˜!q€Ã¡‰PÌBè"ܰ†ô1¡‚˜°RÈb jÀù €fô!2Ø IR QQ‚<û€ %lmH‚ô‡ Xà"nü@ˆ6䊙 D!4±«%B ¡¬@âЇ T7# )x!EPá ^€N#„Lt^ 3ˆ‚FDÐB˜ð„&èà°Æà„7¤B:N ØÈ`À˜æÒËbö1Ìú¦ þ&¢ K`„"¨€‚Ü=XÂK¤à$LÁ …Bfk›’sƒ!ú€ 5,BPXP„0°A=Ø~£&Á @Ø€.H! ]ƒ l°‚5á 6H‚Ç}â‚Q¨Æ D/¤à9ÈÜ pÐ*­ NhTP @@!8ÜNQ‡:ð¡ ûRÂ&±HøæC”`LÐÁ1à°PNðL ZÀƒÐÀƒˆ€/8Býö9–$8ÑBäŽÐŠP°ÁLÀ ^ŠIÌ¡Q0Á cÛ##™#uØÂ²[#ÁºiЀð°þh¡Æ)hAÎ&X! IsdÞ#…¸b¤(( ü ªð¬€ „ Eà”€5T ð Bî°dJ EHƒ6ñ‚ÌÀ øÁyÙ +¤aµ EØ0¡ RÁ‚h -° gXÄ"æ ƒ$œ€u˜¦ðC@-Wˆ®¬ ÛÞ.á 'h+ 6ÿPG ,¡†:”A c¨fiHÐw…“¤è„~¶àƒHáX˜Ð!``ÀH€³ŽZ–ÛdžwmûÙò@ÆYXà ö†ÍÞtB `PV#Ó;áÙìR ŠExþbxð )x¢zØ.7!耧D(ƒþsHR ~¦‚|À(P¢;x8ЃJƒsdd Á)6…9XXIxš0…|”j@ƒÍðÀƒ!tk€ôÁâµRl ;0‚bPˆAHá ,ˆ ª ,l! zèCŠ0‡B‹â}XÃàÐà60ƒeÁ 9äAžS¨ Ž0ˆBô« }D<‚@@fÀB4jdAášßg”@…aeÀ<ðJôòv™X|¥â‚aó²ßÈ.;° F,BR€mè°õ ý³Z Ž"˜AþÙV˜Â² là  aX‚OÓÀ4Þ;Àù7 ‘>!Âçx @ ¼Ø0-„A^gX˜À!°Kj¨Ü¾0‚ÐÖm¿ƒ*TÁ@€]ÜxAÔAà 8–üPô@ú@Ó0À`V)„öyžxü!`Á4p@ Óx‡(x€  €øÌÞ v- B"¤Áè€zœAl`Θ„…8A èèÀ‚(œB ” &œ”Â#H‚*Ì tè<=„Á<Á|VœË—IÁPÌØÈÀ± A¬AXAþ“qÁ Ì@¸”&@À*ÌJ´Àäúqª½AÌÌØÀ ´¬€R PÝÛB”A%tÂ!PÄ€k…EüÁ"´@…ž³”œhÁtI0Àd ¨AÚ…A`í‚p x@ì@ÈÄ_Á°‹ ôBãÓ`F¸á±¨€3E‚ t2í ¥ÀäIÄ`D#™e½¤Â' 8^ÊÀ €t€ ¸À¤ÁÄAPÁx€8€È€8@`Á\$ B˜lÁ$¸ÔüÀ <ÁC|þA ”ÛÄA,Á\hÁÄ@P@à€Å|À ÄðÂ=Í)¬-$äFŽ 0B"\æÄ4@ÜÀ ´€ @t€`@Û¸”*¤Á0Á¹DBø”è›1eüG<Á:Âå»4BÕœ<Áô@¼A# 4ïð„šÐ@ ÁàÀ¤°”Á(B\Úžx7:h@ ¸€ÔÀ è ”<ÁÜà˜AtIA˜ ÔŒ@2ÐÂìÁHÂ"„(Í’Àu®…'DX„AþÈDÀ„ H Ñ,¼BœÀ8ÐÀhåÓˆÂp‚¨A`A`ˆ¤@ ÄÕØ€#ˆˆX,šÁXÁ,ì¸T!<ˆÁLÀFÙ@ à€(!¶  ´ÀxÁwJf†‰-ìÁ,€xÚ¬"äÀ" A T%(W8AÈÁ¨† 䟆º”Ô°A‰U€”¨”À¸_ÐÚİAQU{}ÈØÂ)ŒÁ(|B@Á‰€A95Õ…“$|Á‘ÐþÒôÀ¼¤ Tf ˆüÄÁ&pØPÀwôÝNº+‚%tÀA¤„l€ €@ØÀ„¥!@A E¨ÁǦ¨é>ùáŒÍ\ÁøXô€xÀ8ÁABúXÁÒð诶‡$`'l°–ÌËÄA#D— B"`¼€Œø€ü@°`Áþä°†Ó)Ø,AtA|DA& B3$C#ðx‚!0‚¬¨æÁÔS|Å.Ø‚äA P“\„ð€Žî)Üàܤ@ ˆ@4MþÄL{Ý@(ˆBt Dˆ(øã ì|Öv]'TBxÁ°2)¤Á DÀ|B$²­Á#àKÂ5í(ç}TÈ@Á¤@|€`@4AHA²€ëÖ¶G$¤A#LÂHøÁ!(Ba ŒªÙÈ\ ˜$ ´ÀüÉ 9 ÁÁq-8¼¶„ÁlÁàÒ-"A¨ ,A¬:”À Áô‡9ÁܰAã4Áxp `KLä€j ÷ù(´ ´`'¤ÞLÁ%H¨AÜ.PAøAðz”À þ„€x€ ˜@ xpÁo¨ìI,@Ü‚èà@ °€ ¬ÀÅd§é†DÁ Ôä@|ÛzÁÞºon|‚$ôÌbÖüh ô@‚DA´¡¼€(”à€°A&‰`èûvP)ÐÁü€¼mfìA ˆA‚"X!ä°ŽžÕ¼€ œÁûA”N\ ‚8Ad¨À ÐÀ–iãÇÄ8ð¹]ApÂ6À„úÌî"pˆ/ð Â"ÐAÁ|P#„^d@™ È2à<*(ìB4ÂÜQ¸qþì€ (FmÍÕØñK¯BðSÆ#  ´ÆØ 0ÉÀHÀ#بÁ$ÁÐ@Œ&ŒÌÁ@Øô@ð±5¿Ü@ @òg¶ðÜ€ €À˜ ©tk¤@àA¬AÐ T„ AÐ@¬@èÝ…îS L0>±,(,ÀA¤@&$B! Sž$€ pµÂÚ©Aäô›L¸@sA€ÁÚüÁ〼±“Ï›tr>ƒ+)|ÁžlÔ¦àA‹N'ˆšè@è@È@xi~@‘Á×FŒ€ ¬€ ¨ÂtKÒÚ–A4@HâÔüµ€¼@DÁ*fuA\lPÈÖcþ˜8ÁÌÀ§á´ aXB 8²”Áx@Âü€MjÀ8gþÓÂ=•ÁÄ9E‚ ,@3þñÀ,ˆ‚-ˆSjì Œ€Œ+”Âüà àc”æÔ€ŒÙƒ—€L€T?âÁ œ€ ¬@\Á¸Á‘ÂÁèïÞ=~ìÃÿe1\N6좔A Ü‹!p°Ä &G˜¼¸áá… 6tøbD‰)V´xcFS™Q#…Ž›A‡ÀÌT£Â'1ÜÈ2AE (J°ð‘ãG™2)ƒ´ñåˆB|®œ(²iÒ‹o¬Äñ¡Š,'R™â„,8|0QúlX±cÉ–5{mZµk/vi£Æ ,_Ȩȱ K$ÔÀ1!‹$R¨èÁqþbÅdK‰QCOCŒÊä)$ÃAƒ$5ø©²¡E )Ët©Ó¬ÙEJ\²ƒ† >YT$Y¼ÖМ".\,©á% K¨IÃ¥Ç(·™7wþztéÓ# CcE &V¨Øá€ 6ñA¡E Ÿ$FØ þ~XUiÞ!Óe[Ðù±£Š#Èè  8bÎ ¤/äØã‡,4¤ -’8BŒ0šØÀ½øÈÚd®/šx†‚‚ˆå<\‘Å]|FŒá#GøXd‰,^H",Ѐ€ˆB *já¯b\ÒÃB”pâˆE!„‘6‚hb„#€€ò‰? qâþŽ6þÀƒ= É…Jx!0ž £$Ž@ˆ°`r#Dœ¸‡äR`!‡lÏB =ÑD3*fGÞb dP62¡Ã,°0ñÚƒE6 ¤EMUK“/®`â‘?úàcŒœÁˆ!›˜"?xƒŒ9Ø äN–À!‡V¨ 'ÌHB‰#ŽØA(N•(Õ-|âˆd`b )ð˜ÜpÅ÷6^þhd&²p"؃4èèÖ ,Ê( +Èýw£:Ö‚ & 9‘t ójxb‰¸°b<‘¡‡ fh!‰!@Òƒ«²Â"‰1^¨7˜ þ’Œ7N~æ˜en¨A0±BŠ+’HB‡8ظb&xÀá6è ,Ò0à (ÊÐcæ¨Zœm à˜2 ÎøÂ‹.¶P¢ 4áˆ0¤¨ÄQŠÀ„"xHˆ;¢ã©õÞ›ï¾_l†‹<>Àb *¤ ã–]v!^‚ •ÃÐ" -¢°¡+¿e–DŒ'°à `b$Œ€Á‹Ê·ð ,~à ƒ’è;6I›:B)¶pCóà…žø²š!cTÅB 0X‰N€!… Þ€ƒ‰0º +‹äT,~\Rܨ„“=Vàá.0 8ØX#‹Õ¡Xu &þáD’=ð8$‡(JÐAOxæ”>Œ‘(ðÌ@pE+ÎÀ8‚\ØB^ †/áY?PNÁu 7HÂrA p\a dÃqÆ@†" A7 C%.Á K á ëͶÀƒ’‰ITâË6Q?X  G° „p Y a9(„®°2Ì e8B|p"i-Q HÃà`ÁH¡›ê`Aá50\‘H Í"&°4prMBŠÐØHG>òE¡H1V¡ ?TB õâ²ÀˆDˆA"HÃH)† AGP±$IC‘Bþ#¡4¸aQ x¬”! n0Ao„à @£Q¥h0(W>šÑLL((¡‡D "IÈ‚t`)4 0@Ý Pð„ |aƒQ ƒ€2¤a ÒŒQ,Q'¢”xÃüð6°à G¨Îà/´áûh„(Gpq¼%O‹^£Q„æJʤ`µÎID# ˆDLâ th‚ Z°‚À@@BP݉Î2B ±ƒ'üOMX“Û^÷‚~x„ |p„/Ta GBì15ŒA ;˜ªXwf Á :ðÞÅpbˆCñ„2€`/¼‚~€ƒ4È@éþé‚îÐ|`)PÞ0$ø` Z  á`ßXj¡`Cèk„8Tæ sÀ–¾ yÝA qèB°€¡ MÃädŠS ÇhÙ„"¡†7$B eè€ T@!¨‡_h H°$h - €\@Tá " N*…8dÐ)LB®˜á sƒ„ „+Œ kà!îÐ1tÁ xðî¶âŒÉ_‚‹(, 1”á jÀÃà †FbfhÀ3dáÄPÆ+ú BÌL`ƒÊ@…0„A5`¯¨™Ýì•Âs>øÁÁˆ3¬¡Gˆþ ®°EÔ€@HÑþ  xÁ |XBŽ ‡78 jÎVÊ¢0…9µ O‚™ƒƒ7(! pBüä Bði#0P¨ rMÁ¦ o‹_>§ ÃØ<<Á H`BZ—-4Á ø >´À Ú0…À R1¾L´¡ X¸Bºø(T¡Û|pÂD0 Bk˜‚˜ð…(”"¢Hà‚ô`v‘BÏÉ^öÅ̇ møUÔp…—®À)ÂØð€   ÈJ,À€7xA }ªÂºà=³cdj@Â~p¸@%x@þêYtáŒpDnÐù TÀBàÁ °-`­1üÖáYßú±T‚yD(ÂP‚8¡êb˜Öp‡a»Š˜E,Èp‚  ¦îð€€¢ï¹¾"™¸~@…+ Áˆ#d°‡ÇtaPêÃĈB$a ,ôÙßþ¯t¡ H‚Èð‡;ØR8CØà2a ê Øà v L¡@@!’:Ï™Üo".ÁvN½v`d ú`ð  ¸@ ^àr  4… ! À¼ W'Ââ ì?ª $ÜÀ®@ä`ÀàØ´`èh Z^¡VþÀ ¦@ +ªâì f  ´ !$®  œÀ ÚàÁ ´`l¨`,È  ÓP âtÏ Üà– ™jÀˆ€z€ ºEö` @ @@4` %BÜàdÀ ˜`!R „.{ò Œí žÀ­ ภ?‘ãËÄàà ð z „` š@ |€)jþ î`€AÑ!ÑD hŠ˜€p và|ÀnÛš@ªª‹Ì@§úN¡üdËþÀ­|d VEº€ ¢À ¦ lÀJ ¨‘!þ±zàkâ@¦ ¨ á¬ì@”€ J  ÎÄÀ ¢àÏÜ!ÉŽô Äà ¸~„ÊàÑ´à b`XÀ´f ÃÒ >!!qr`በ‚€@` ÂÀö € R nÀ  ¤À ê !wòâRå ^€ ª  ÂÀ(àL /À@ ¬$ Âo \`\Àrú !Qá Øgè` *f!”@ j@æ†à`4*À®€'ßÒÙê ôªþ@² HR`Ö@Àtà6€€ ¼ ì$†Æ`5¨q!¥à’`¼jàâ‚ ¢€ dn`þR¤À ^@X€$à àR4™ÍZGÀ„`–ÀVÌ š 6t`gŽà ®Z– SÅ ZÀ F* q ¸  ¸âbàžà ÄH øN¼`4ŸÐza Ä@¢è. œ€ a Ô  „`f@BK½´  €à*λÀ ZÀ ® ° ˆtÀ œ€ @ Ø ¼àJ€, ( :x “@ ¨` nb \à„à„À ,À†@4³| x r=©ñ{` ˆ„ ´ z/í­Òà ÂÀZ`4À" 8` GÛ‹²à t@jà¨þˆ ¬À ÀÀ˜€vÀ Þ  ¨` ¼“¼‰'9¡jhªá™` hÀY 2© p)GËTµ,a º‘ª 0`6À0`eØ€!üà ¢ H.ÝBòˆ  ‚`.@`` ´ÀL5¹ø4„Àª~à| 4õ¡ [V¯ † 4 j tRQGU¬.µ[´g05SIõ!¡O ä€Ug•VkÕVoWsUWw•W{ÕWXƒUX‡•X‹ÕXY“UY—•Y›ÕYŸZ£UZ§•Z«ÕZ¯[³U[·•[»Õ[¿\ÃU\Ç•\ËÕ\Ï]ÓU]jו]ÛÕ]ß^ãU^ç•^ëÕ^ï_óU_÷•_ûÕ_ÿ`V`–` Ö`aVa–aÖab#Vb'–b+Öb/c3Vc7–c;Öc?dCVdG–dKÖdOeSVeW–e[Öeq5 ;vtwm-5.4.7/contrib/vtwmrc/images/win95_menu.xpm0100664000015300001300000000076510237645271020306 0ustar callumfid/* XPM */ static char *win95_menu[] = { /* width height num_colors chars_per_pixel */ " 15 15 4 1", /* colors */ ", c None s None", ". c #ebebeb", "# c #000000", "a c #acacac", /* pixels */ ",,,,,,,,,,,,,,,", "..............#", ".aaaaaaaaaaaaa#", ".aaaaaaaaaaaaa#", ".aaaaaaaaaaaaa#", ".aa#########aa#", ".aaa#######aaa#", ".aaaa#####aaaa#", ".aaaaa###aaaaa#", ".aaaaaa#aaaaaa#", ".aaaaaaaaaaaaa#", ".aaaaaaaaaaaaa#", ".aaaaaaaaaaaaa#", "###############", ",,,,,,,,,,,,,,," }; vtwm-5.4.7/contrib/vtwmrc/images/win95_close.xpm0100664000015300001300000000076610237645271020450 0ustar callumfid/* XPM */ static char *win95_close[] = { /* width height num_colors chars_per_pixel */ " 15 15 4 1", /* colors */ ", c None s None", ". c #000000", "a c #acacac", "b c #ebebeb", /* pixels */ ",,,,,,,,,,,,,,,", "bbbbbbbbbbbbbb.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "baa..aaaaa..aa.", "baaa..aaa..aaa.", "baaaa..a..aaaa.", "baaaaa...aaaaa.", "baaaa..a..aaaa.", "baaa..aaa..aaa.", "baa..aaaaa..aa.", "baaaaaaaaaaaaa.", "baaaaaaaaaaaaa.", "...............", ",,,,,,,,,,,,,,," }; vtwm-5.4.7/contrib/vtwmrc/images/djhjr.xpm0100664000015300001300000003706410237645271017412 0ustar callumfid/* XPM */ static char *djhjr[] = { /* width height num_colors chars_per_pixel */ " 320 48 15 1", /* colors */ ". c #595959", "# c #656565", "a c #6d6d6d", "b c #757575", "c c #797979", "d c #828282", "e c #8a8a8a", "f c #999999", "g c #a2a2a2", "h c #a6a6a6", "i c #b2b2b2", "j c #bababa", "k c #c3c3c3", "l c #c7c7c7", "m c #d3d3d3", /* pixels */ "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeefeffffffffffffffffffffffffffffffffffffffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeefefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffedcbcdefffffffffffffffffffffffffffffffffffedccdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffecbbdfghgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedcddeffffffffffffffffffffffffffedbaabdfffffffffffffffffffffffffeeeffffffffdcbcdffgffffffffffffffffffffffffffffffffffffffffffffffffffffffebbbefhigfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffffffffffffffffffffffffffedddeefffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdcccdffgffffffffffffffffffffffffdcba#ceffgfffffffffffffffffffffddddefffffffdcbcefhhgffffffffffffffffffffffffffffffffffffffffffffffffffffedbbbfhjihfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffffffffffffffffffeeeeeeddccbbcdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbbcdfhhffffffffffffffffffffffffdbabbefgggggffffffffffffffffffedcccefffffffdbbcfgiigffffffffffffffffffffffffffffffffffffffffffffffffffffdcabdgijihfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffffffefeeedccbbbbbbabbcdeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbbdfghigfffffffffffffffffffffffdbbcdfghgghgffffffffffffffffffecbbdffhgfffedbbdgijigffffffffffffffffffffffffffffffffffffffffffffffffffffdbacehijigfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "fffffffffeeccbbbbbaaabbbbbbcdeefffffffffffffffffffffffffffffffffffffffffffffffffffeeeffffffffffffffffffffffffdccefhiigfffffffffffffffffffffffdbbdffghgfhhgfffffffffffffffffebbcefihhfffecabehijigffffffffffffffffffffffffffffffffffffffffffffffffffffdbbdfhjjhffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffeddcccccbbbabbbbbcddeefffggffffghhgfffffffffffffffffffffffffffffffffffffffffffeddddefffffffffffffffffffffffedcefghigfffffffffffffffffffffffdbbdfffgfgiihfffffffffffffffffdbbcfhjihfffcbbcfhjjhgffffffffffffffffffffffffffffffffffffffffffffffffffffdbbdfiijgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffdcbbbbbbbbccdeeefffgghhiiihgfffhihhgffffffffffffffffffffffffffffffffffffffffffecccdffgffffffffffffffffffffffecdffgigfffffffffffffffffffffffdbbeffffffiiigfffffffffffffffedabdfijihffecbbdfjjigfffffffffffffffffffffffffffffffffffffffffffffffffffffcbbefiijgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "ffdcbccddddeffffghhijiiijjjigfdegijihgffffffffffffffffffffffffffffffffffffffffffecbcdfgggfffffffffffffffffffffedcdfgihhffffffffffffffffffffffdbbdfffffgiiiffffffffffffffffdcabegijigfffcbbefjiigffffffffffffffffffffffffffffffffffffffffffffffffffffecbbegijigfffffffffffffffffffffffffffffffffffffffffffefeffffffffffffffffffff", "ffdddefffgggghhijjjjjjiiiihgeccdfijihfffffffffffffffffffffffffffffffffffffffffffecccefhhgfffffffffffffffffffffeccdegiihffffffffffffffffffffffdbbdfffffgiiigfffffffffffffffdbacfhjjhgffecbcegjjhffffffffffffffffffffffffffffffffffffffffffffffffffffedbacfhjiigfffffffffffffffffffffffffffffffffffffffffeddcdeeffffffffffffffffff", "fffffghiijhhhghiijiihgfffffdbbcfhjjigffffffffffffffffffffffffffffeedddefffffffffedddffhhgffffffffffffffffffffffcccffiihffffffffffffffffffffffdbbdeffffgijiffffffffffffffffcbbdfiijgffffbbcffjjiffffffffffffffffffffffffffffffffffffffffffffffffffffecbbdfijihfffffffffffffffffffffffffffffffffffffffffedcbccefffffffffffffffffff", "ffffghiiiihfeffghhgfgfffffecbbcfijihffffffffffffffffffffffffffffedcccdeffffffffffeddefghhgfffffffffffffffffffffddcefhihffffffffffffffffffffffdbbceeffghjiiffffffffffffffffcbbdfiiigfffecbcegijhgfffffffffffffffffffffffffffffffffffffffffffffffffffebbbegijigffffffffffffffffffffffffffffffffffffffffeeccbdeggggffffffffffffffff", "ffffgggghgedcdegghffffffffdcabehijigfffffffffffffffffffffffffffedcbcdfffgfffffffffdddffhhhfffffffffffffffffffffedcefghhgfffffffffffffffffffffdbbcdeffhijihgfffffffffffffffccbefijifffffbbcegjjhffffffffffffffffffffffffffffffffffffffffffffffffffffebbcegiihfffffffffffffffffffffffffffffffffffffffffeedddfghihgffffffffffffffff", "ffffffffffccbdfhhiffffffffcbacfhiihffffffffffffffffffffffffffffeddcdfghhhgffffffffeddefhihffffffffffffffffffffffecdefghhgffffffffffffffffffffdbbbcefhiijigffffffffffffffffccbefijiffffecbcegijiffffffffefffffffffffffffffffffffffffffffffffffffffffebbcfgjjhffffffffffffffffffffffffffffffffffffffffffeeffgijihgffffffffffffffff", "ffffffffffedcefghiffffffedbbbfhihfdcccdddefffffffffffffffffffffffffhiiihggfffffffffecdefhhhgffffffffffffffffffffedddfghhgffffffffffffffffffffba#abfhljjigfffffffffffffffffccbegiiiffffecbcegijifffffedcccccddeeffffffffffffffffffffffffffffffffffffebbcfgjjhffffffffffffffffffffffffffffffffffffffffffffffffgffeddeeffffffffffff", "fffffffffffdceffhhhfffffecbbcfiigfdcddddddddeeefffffffffffffffffffgghhggfffffffffffeddefghhgfffffffffffffffffffffeddefghhgffffffffffffffeeddca..adhjlkihgfffffffffffffffffccbefijigffffcccffiihgffffedccdddddddddeeefffffffffffffffffffffffffffffffebccfgjjhfffffffffffffffffffffffffffffffffffffffffffeeddeedcccceeffffffffffff", "fffffffffffeddefghhgffffdbacehiigfeefeeedddddddeffffffffffffffffffffgfffffffffffffffdddffihgffffffffffffffffffffffdddffhhhfffffefefffffedccbb#.#cfilmjihffffffffffffffffffccbegiiifffffdcceghihfffffeeeeeefeedddddddfefffffffffffffffffffffffffffffebbcfgjjhfffffffffffffffffffffffffffffffffffffffffffdcbbbcccbcdffgfffffffffff", "fffffffffffedddffihgfffedbbcfijihffffgffffdddcdddeffffffffffffffffffffffffffffffffffeddffghhffffffffffffffffffffffdddefhhhgfffddcddeffeccbabbaacfhklligfffffffffffffffffffccbefiiiffffeddcefghhffffffffffffffffddcdddeefffffffffffffffffffffffeedeeebbcfgjjhffffffffffffffffffffffffffffffffffffffffffeca#aacddcefghhhgfffffffff", "ffffffffffffdddffhhhfffecabehijigfgghhigffdccdeefffffffffffffffffffffffffffffffffffffedeffgggfffffffffffffffffffffedcefghiffeddbbcdfffecaabcfeefgikkkhffedcbbcceefffffffffccbegiihfdcbbba#acdffffffffffgghihhfedcddefffffffffffffffffffffffffeedddedbbcfgjjhffffffffffffffffffffffffffffffffffffffffffdb#.abeffghijiigffffffffff", "fffffffffffffdceffhhgfecbbcfijjhgfffffefeedeeffgghhggffffffffffffffffffffffffffffffffeedefggggfffffffffffffffffffffeceefhhhfecbabdfggffcccefhgffgijjjgfdcbbbbbccddddefffffcbacefgfcbabbba#abdeffeeefffffffefeeedeeffgghggfffffffffffffffffffffdccddeccdfgijhffffeedcdddefffffffffffffffffffffffffffffdca.#behijijjiihggfffffffff", "fffffffffffffeddefhihfdbbbegjjigfedccccccdefghiiiihffeddddddddddddeeffffffffffffffffffeddffghgfffffffffffffffffffffeddefghhfdbbbdfhihgfdddffigfffgiiifdcbbbcddeedddddddddda##bdfffcbccddcbbcefgffefeffedcbcccddefghijiigffedddddddeeefffffffffeccceedddfgjjhffeedcbbbccdddedeeffffffffffffeedeeeffffedcaabegikkjiihggfffffffffff", "fffffffffffffeddefghifcabcfijigfdcbbabbcdefghjijihffccbbbbbbccbcbbccdeeeeeefffffffffffedddfgihgfffffffffffffffffffffdddffhifcbbcfijjigffeeffhgffffhhgecbccefffgffeedddcccb#..bdfffeefffgfeeffhihgffffecbbabbcdffghjjjigfeccbccbcbbcceeeeffffffecccfefeefgiihfeeccbbbccdddccccddeeeeeeeeeedccbccdefffedccddfhjkjjhgffffffffffffff", "fffffffffffffedceffhiecacehjjhfdcbbbcdefgghhhgffffdccbbcccccccccccccdcccbbcddefffffffffdddffhhhfffffffffffffffffffffdddffhhfcbbegjjjggffeddefffffffffcbcefhijihhfffffeedcb##aceghihiiijihgfghjjjhhggfdcbbcdffgghhggfffedccbbccccccccdccdddeffeebcdfgffffghihfdcbbbdefffffddcccccccbbbbbbbbaabbcdefffeeeffffhhijhgfffffffffffffff", "ffffffffffffffeddefghfcbdfiiifdbbbcefghgggffffeedcccdeeffffffffffffffedccbccdccccceefffddcefhhhffffffffffffffffffffffdceffhgeccefghgffffdccefhigfffffeefgiijjiihihhhgffffeedefhjkkjjjjjiigfghiikihgfedcdefghgggfffeeedcccdeefffffffffeddcdcdccbabdghigfffhhfdcbbdfghihhgffffffeedcbbbbbbbbbcdeeffffffffgffffghiigfffffffffffffff", "fffffffffffffffccdffgedcegiihebbbdffggffffeeedeeefffghhhhhhhhhhhhhhgfffefeeeeedccccddddddceffhigfffffffffffffffffffffdddefhgfedfffgfddccbacehijigfffffghiiihhgggghhhhhhhhhgffhijkkjihhggffeeffhiigfeeeeffgfgfffeedeeeffffghhhhhhhhhgffffeeddccbcdfhjigffffffdccefhijjiihhhhhhgfffeeeeeeeefffgggffffffffgfedefhiigfffffffffffffff", "ffffffffffffffeccdffgfddfhjifdbbdefffffeeeeefffgghiijjijjjjjjjjjjiihhhgggggfffeededdddddccdefhhhgffffffffffffffffffffedcefghgfeffffedccbbbdfijiigfffhhijiihgfffffggghhhiijihgggiijihgfffffdddffigfdcdefffffeeeeeefffgghiijijjjjjjiihhhgfgffeedeffhjiiffefffeedeghjiihhhhhhiiihhggggggggghhiijihgffffgggffddefghigfffffffffffffff", "fffffffffffffffdddfgffeefjjhfdbcdffffeeeeffghiijjjjjjiihihihihihihihhhiiiiiihgfgffffeededccdfghhgfffeefefffffffffffffeeceffhhgffffffeedcdeghjjigfffghijiiggffffffffffgghhihgffffghhgffffffdddefhgfcccefffeeeeeffhhijijjjjiiihihihihihhhhhggfggghjjiihffeeffffggiiihggffffghhhhhhiiiijjijijjjjihfeeffhhgffdddffghgfffffffffffffff", "fffffffffffffffeefggffffhjjhfddeffffeffghijjjjjjiiihhgfffffffffffffffghhiiiiiiiiihhgffffecccefgigfddcbbcdeefffffffffffeddefgihgfgggffffgghjjjihgfffgghhhgfffffffffffffffffffcddfghhgffffffedcefggfeeeffffeffhhjjjjjjjiiihhgffffffffffghhihiiiijjjjhhgffefffhiijjihgfffffffffffgghiiiiijiiiihhgfdddfghhhfffdddfghhhffffffffffffff", "ffffffffffffffffffffeeffijihfeeffghhhiijjjjjihhgffgfffffffffffffffffffffffffgghhiiihhhhgfeccefghhfdcbbbcccdcdccddefffffdddffihhfggghhhiiijjiigffffffffffffffffffffffffffffffdddffhigfffffffedeffggffffghhhiijjjjiihhggfffffffffffffffffffgghiiiiihgfffffffhijjihhgfffffffffffffffffgfgffffgffffedcffhhhfffccdegiihffffffffffffff", "fffffffffffffffffffdddfhijigffffghiijjjiiihhggfffffffffffffffffffffffffffffffffggggghhhhgfeefgijhfecccdeeeddccbccddddddcccffhhhfffgghiiijiihgfffffffffffffffffffffffffffffffeddefgghffffffffdeefghggfghijjjjiihhhggfffffffffffffffffffffffffgggggffffffffgghiihhgffffffffffffffffffffffffffffffeecefghhgffcccefiiiffffffffffffff", "fffffffffffffffffdcbbegijigfffffggghggfffffffffffffffffffffffffffffffffffffffffffffffffffgfgijkkihffgghihgffffffffeedccccbdfghihgfffffffffffffffffffffffffffffffffffffffffffffeefghhigfffffffffghihiggghgggfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeccdfhiigfdccefhihgfffffffffffff", "ffffffffffffffffedbbbfhjiiffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggiijiihfgghiiihiiiiiihgffffffeeffiiihgffffffffffffffffffffffffffffffffffffffffffffffefghiigfffffffffgghiggfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdcbdfhiigfedcefghiffffffffffffff", "ffffffffffffffffecbbdfijihffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgghhgffffgfgfgghiiiihihhhhggffhijjihgffffffffffffffffffffffffffffffffffffffffffffffffghhiggfffffffffggggffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebbdfhjjgffecdffghhgffffffffffff", "ffffffffffffffffdbacehjjhgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggggggghhiiihhhiijiigffffffffffffffffffffffffffffffffffffffffffffffffffhhggffffffffffffffgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebbdfhjigffecddfgihgffffffffffff", "fffffffffffffffecbbdfijihfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgghhhhhiiiihggfffffffffffffffffffffffffffffffffffffffffffffffffffgfgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdcbdfhjjgffeccdfgiigffffffffffff", "fffffffffffffffdcabehijigfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgghhhgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebbdfhjihffebbcfgjihffffffffffff", "ffffffffffffffecbbcfijjhgfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffebbdfhjjgffebbcfgjjhffffffffffff", "ffffffffffffffecbbdfjjigffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdcbdfhjigffebbcfgjjhffffffffffff", "fffffffffffffedbbbfhjjhgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbbdfhjihffebbcfhjihffffffffffff", "fffffffffffffecbbcgijihffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedbbdgijigfedbbdfhjihffffffffffff", "fffffffffffffdbacehikigffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecabehijihfecabdgijjhffffffffffff", "fffffffffffffdccefijjhfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcbacfijjhgfdccdfhjjhgffffffffffff", "fffffffffffffeddfgijigffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecbbdgijigffeddfgijihfffffffffffff", "fffffffffffffeeffiiiifffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdbbcfhjiigffeeffhiiigfffffffffffff", "ffffffffffffffffghhhhgffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdcdegijihffffffghihgffffffffffffff", "fffffffffffffffffgggfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeedefhjjhgffffffggggfffffffffffffff" }; vtwm-5.4.7/contrib/vtwmrc/images/photon_rarrow.xpm0100664000015300001300000000053610237645271021206 0ustar callumfid/* XPM */ static char *photon_rarrow[] = { "14 14 2 1", " s None c None", ". c #000000000000", " ", " ", " .. ", " .... ", " ..... ", " ....... ", " ........ ", " ....... ", " ..... ", " .... ", " .. ", " ", " ", " "}; vtwm-5.4.7/contrib/vtwmrc/images/byzantine.xpm0100664000015300001300000000120010237645271020273 0ustar callumfid/* XPM */ static char *byzantine[] = { /* width height num_colors chars_per_pixel */ "32 13 3 1", /* colors */ " s None c None", ". c grey75", "X c grey35", /* pixels */ " ..............X ..............X", " .XXXXXXXXXXXX.X .XXXXXXXXXXXX.X", " .X .X .X .X", " .X ........X .X .X ........X .X", " .X .XXXXXX.X .X .X .XXXXXX.X .X", " .X .X .X .X .X .X .X .X", " .X .....X .X .X .X .X .....X .X", " .X XXXX.X .X .X .X .X .XXXXX .X", " .X .X .X .X .X .X .X .X", " ........X .X .X .X .X ........X", " XXXXXXXXX .X .X .X .X XXXXXXXXX", " .X .X .X .X ", "............X ....X ............"}; vtwm-5.4.7/contrib/vtwmrc/images/dot1x3.xbm0100664000015300001300000000015410237645271017403 0ustar callumfid#define dot1x3_width 1 #define dot1x3_height 3 static unsigned char dot1x3_bits[] = { 0x01, 0x00, 0x00}; vtwm-5.4.7/contrib/vtwmrc/images/win95_rarrow.xpm0100664000015300001300000000053510237645271020651 0ustar callumfid/* XPM */ static char *win95_rarrow[] = { "14 14 2 1", " s None c None", ". c #000000000000", " ", " ", " . ", " .. ", " ... ", " .... ", " ..... ", " .... ", " ... ", " .. ", " . ", " ", " ", " "}; vtwm-5.4.7/contrib/vtwmrc/images/photon_minimize.xpm0100664000015300001300000000156710237645271021520 0ustar callumfid/* XPM */ static char *photon_minimize[] = { /* width height num_colors chars_per_pixel */ " 18 18 22 1", /* colors */ ". c #000084", "# c #c6c3c6", "a c #636163", "b c #949294", "c s None c None", "d c #a5a2a5", "e c #cecfce", "f c #b5b2b5", "g c #9c9a9c", "h c #e7e3e7", "i c #ffffff", "j c #f7f3f7", "k c #d6d3d6", "l c #848284", "m c #737173", "n c #424142", "o c #313031", "p c #42494a", "q c #000000", "r c #525152", "s c #101010", "t c #212021", /* pixels */ "cccccg#e#fdccccccc", "cccchijhke#fdlcccc", "ccgiiihke##ffdmccc", "cgiiihke##ffggbacc", "chiihe#ffffddgbbpc", "giih#ffdfdddgbblac", "#iheffddddddgbllmn", "kjk#fdddddddgbllmo", "kk#ffdddddddbblmmo", "#e#fddddddddbllmmt", "f##ffqqqoqqqblmmao", "cfffdotoptotblmaro", "cdfddgdgggbblmaaon", "cldgggggbbblmmaroc", "cclgbbblbllmaarooc", "cccllblllmmaaroocc", "ccccmammmmaroooccc", "ccccccapoooonccccc" }; vtwm-5.4.7/contrib/vtwmrc/images/photon_maximize.xpm0100664000015300001300000000156710237645271021522 0ustar callumfid/* XPM */ static char *photon_maximize[] = { /* width height num_colors chars_per_pixel */ " 18 18 22 1", /* colors */ ". c #000084", "# c #c6c3c6", "a c #636163", "b c #949294", "c s None c None", "d c #a5a2a5", "e c #cecfce", "f c #b5b2b5", "g c #9c9a9c", "h c #e7e3e7", "i c #ffffff", "j c #f7f3f7", "k c #d6d3d6", "l c #848284", "m c #737173", "n c #424142", "o c #313031", "p c #42494a", "q c #000000", "r c #525152", "s c #101010", "t c #212021", /* pixels */ "cccccd#e#ffccccccc", "cccchijhh##fdlcccc", "ccgiiihke#fffdmccc", "cgiiihk###ffggbacc", "chiiqqqqqqqqqgbbpc", "giihqqqqqqqqqbblar", "#iheqqdddddqqbllmn", "kjk#qqdddddqqbllmo", "kk##qqdddddqqblmmo", "#e#fqqdddddqqllmmt", "f##fqqdddddqqlmmao", "cfffqqqqqqqqqlmaro", "cdfdototottttmaaon", "cldgggbbbbblmmaroc", "cclgbbbbbllmaarooc", "cccllblllmmaaroocc", "ccccmammmmaroooccc", "ccccccapoooonccccc" }; vtwm-5.4.7/contrib/vtwmrc/vtwmrc-binds0100664000015300001300000000540410237645271016651 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-binds # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # Functions and Bindings # # See $(HOME)/.xinitrc... #Function "VTWM Profile" #{ # f.exec "startxclients &" #} Function "move-or-raise" { f.move # These two set up a click-to-type focus policy # (omitting the first allows it to be "togglable")... # f.unfocus # f.focus f.deltastop f.raise } Function "move-or-iconify" { f.move f.deltastop f.iconify } # This is for warping from the icon manager... Function "deiconify-and-warp" { f.deiconify f.warp } # This is for warping from the virtual desktop... Function "move-or-warp" { f.playsound "HOME/vtwm/sounds/whoosh4.au" f.move f.deltastop f.warp } # This is for warping from the virtual desktop... Function "resize-or-warp" { f.playsound "HOME/vtwm/sounds/whoosh4.au" f.resize f.deltastop f.warp } Button1 = : root : f.version Button3 = : root : f.menu "XWindowsMenu" Button1 = : title : f.function "move-or-raise" Button2 = : title : f.resize Button3 = : title : f.raiselower Button1 = : frame : f.function "move-or-raise" Button2 = : frame : f.resize Button3 = : frame : f.iconify Button1 = : icon : f.function "move-or-iconify" Button3 = : icon : f.menu "ArrangeMenu" Button1 = : iconmgr : f.iconify Button3 = : iconmgr : f.function "deiconify-and-warp" Button1 = : door : f.enterdoor Button2 = : door : f.namedoor Button3 = : door : f.deletedoor Button1 = : virtual | desktop : f.movescreen Button2 = : desktop : f.function "move-or-warp" Button3 = : desktop : f.function "resize-or-warp" # If you've got nothing better to do with 'em... #Button2 = : virtual | desktop : f.function "decorate-virtual" #Button3 = : virtual | desktop : f.function "clear-virtual" "Up" = : iconmgr : f.backiconmgr "Down" = : iconmgr : f.forwiconmgr "Return" = : iconmgr : f.function "deiconify-and-warp" "BackSpace" = : iconmgr : f.iconify "Return" = : door : f.enterdoor "Up" = : virtual | desktop : f.panup "100" "Down" = : virtual | desktop : f.pandown "100" "Left" = : virtual | desktop : f.panleft "100" "Right" = : virtual | desktop : f.panright "100" "Meta_L" = c : all : f.warpring "prev" "Control_R" = m : all : f.warpring "prev" "Control_L" = m : all : f.warpring "next" "Meta_R" = c : all : f.warpring "next" "Meta_L" = c : root : f.warpto "*Icon Manager" "Control_R" = m : root : f.warpto "*Icon Manager" "Control_L" = m : root : f.warpto "*Icon Manager" "Meta_R" = c : root : f.warpto "*Icon Manager" "Shift_L" = c : all : f.warpclassprev "" "Shift_R" = c : all : f.warpclassprev "" "Control_L" = s : all : f.warpclassnext "" "Control_R" = s : all : f.warpclassnext "" "Shift_L" = m : all : f.warptoiconmgr "" "Shift_R" = m : all : f.warptoiconmgr "" "Meta_L" = s : all : f.warptoiconmgr "" "Meta_R" = s : all : f.warptoiconmgr "" vtwm-5.4.7/contrib/vtwmrc/vtwmrc-95ish0100664000015300001300000001323310237645271016512 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-95ish # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # m4 Variables # define(WMname, `95ish') # Border width, autopan border width, desktop and door bevel widths... define(WMborder, 5) define(WMpanborder, 5) define(WMdesktopbevel, 1) define(WMdoorbevel, 1) # Title heights (must be set manually for VTWM windows and applets)... define(WMdesktoptitle, 0) define(WMdoortitle, 0) define(WMiconmgrtitle, 0) define(WMapplettitle, 0) # # Boolean Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-bools) ShallowReliefWindowButton NoBorderDecorations # # Parametered Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-parms) # See also 'Lists' below... IconManagerGeometry "+5+5" 1 RealScreenBorderWidth 0 # Gap between frame and titlebar font (titlebar changes) FramePadding 2 # Gap between FramePadding and buttons (buttons change) ButtonIndent 0 # Gap between titlebar elements TitlePadding 2 # Button border width (TitleForeground color) TitleButtonBorderWidth 0 ClearBevelContrast 60 DarkBevelContrast 60 BorderBevelWidth 1 ButtonBevelWidth 0 DoorBevelWidth WMdoorbevel IconBevelWidth 1 IconManagerBevelWidth 1 InfoBevelWidth 1 MenuBevelWidth 1 TitleBevelWidth 0 VirtualDesktopBevelWidth WMdesktopbevel UnknownIcon "xlogo32" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" DoorFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" #VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Functions and Bindings # # Read in the bindings file... include(HOME/vtwm/vtwmrc-binds) LeftTitleButton "win95_menu.xpm" = f.menu "ArrangeMenu" RightTitleButton "win95_minimize.xpm" = f.iconify RightTitleButton "win95_zoom.xpm" = f.fullzoom RightTitleButton "win95_unzoom.xpm" = f.resize #RightTitleButton "win95_close.xpm" = f.menu "CloseMenu" Function "decorate-virtual" { f.exec "nexpm -vtwm -in HOME/vtwm/images/djhjr.xpm &" } Function "clear-virtual" { f.exec "nexpm -vtwm -solid gray67 &" } # # Lists # # Read in the sound file... include(ifelse(SOUND, `Yes', `HOME/vtwm/vtwmrc-sound')) # Read in the lists file... include(HOME/vtwm/vtwmrc-lists) # Check 'BorderColor', as that's the highlight color... NoHighlight #NoTitleHighlight #SqueezeTitle #DontSqueezeTitle {} Pixmaps { TitleHighlight "eyesline.xpm" # TitleHighlight "byzantine.xpm" # VirtualBackgroundPixmap "djhjr.xpm" MenuIconPixmap "win95_rarrow.xpm" } # Box-stock Background is, of course, "maroon" # Box-stock Foreground and IconBorderColor is "gray85" # Box-stock MenuTitleBackground and BorderColor is "gray70" Color { DefaultBackground "gray67" DefaultForeground "black" MenuBackground "gray67" MenuForeground "black" MenuTitleBackground "gray67" MenuTitleForeground "black" RealScreenBackground "gray57" RealScreenForeground "black" VirtualBackground "gray67" VirtualForeground "black" BorderColor "gray67" BorderTileBackground "gray67" BorderTileForeground "gray67" TitleBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } TitleForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBorderColor "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconManagerBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconManagerForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconManagerHighlight "gray90" DoorBackground "gray67" DoorForeground "black" DesktopDisplayBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } DesktopDisplayForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } } # # Menus # # Read in the menus file... include(HOME/vtwm/vtwmrc-menus) menu "CloseMenu" { " Close " f.title "Delete" f.delete "Destroy" f.destroy } vtwm-5.4.7/contrib/vtwmrc/vtwmrc-parms0100664000015300001300000000362410237645271016676 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-parms # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # Parametered Variables # WarpCentered "off" # Lower this if PrettyZoom used (see 'Booleans')... #Zoom 150 # This spec works when (count * scale < phys_size) in each dimension. # The size is then (phys_size * count / scale + bevel * 2) in each dimension. # -- It's best if the window sizes work out to exact whole numbers -- # # This window is (1024 * 5 / 16 + 1 * 2) x (768 * 1 / 16 + 1 * 2) = 322 x 50. # # Use one of these (LLC or LRC) if you want it titled... #VirtualDesktop "5x1+5-30" 16 #VirtualDesktop "5x1+690+685" 16 # Use one of these (LLC or LRC) if not... #VirtualDesktop "5x1+5-10" 16 #VirtualDesktop "5x1+690+705" 16 # # Using m4, calculate coordinates for most common phys_size dimensions. # # Horizontal and vertical screen counts, desktop scale... define(VDhoriz, 5) define(VDvert, 1) define(VDscale, 16) # Calculate the window dimensions... define(VDwidth, eval(WIDTH * VDhoriz / VDscale + (WMdesktopbevel * 2 + WMborder * 2))) define(VDheight, eval(HEIGHT * VDvert / VDscale + (WMdesktopbevel * 2 + WMborder * 2 + WMdesktoptitle))) # Calculate the window coordinates (this is for LRC)... define(VDx, eval(WIDTH - (VDwidth + WMpanborder))) define(VDy, eval(HEIGHT - (VDheight + WMpanborder))) # Translate to an X geometry string (set VDx to WMpanborder for LLC)... define(VDgeometry, translit(VDhoriz*VDvert+VDx+VDy, *, x)) # Set the resource... VirtualDesktop "VDgeometry" VDscale PanDistanceX 100 PanDistanceY 100 PanResistance 750 AutoPan 100 # Nice if 'NaturalAutoPanBehavior' is not used... #AutoPanExtraWarp 30 MoveDelta 10 BorderWidth WMborder AutoPanBorderWidth WMpanborder # Windows are snappier if 'NoBackingStore' is not used when this is... RaiseDelay 80 XorValue 65535 ResizeRegion "NorthEast" # Ignore the Caps, Num, and Scroll lock states... IgnoreModifiers l | m2 | m5 vtwm-5.4.7/contrib/vtwmrc/vtwmrc-MWMish0100664000015300001300000001215410237645271016716 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-MWMish # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # m4 Variables # define(WMname, `MWMish') # Border width, autopan border width, desktop and door bevel widths... define(WMborder, 5) define(WMpanborder, 5) define(WMdesktopbevel, 1) define(WMdoorbevel, 1) # Title heights (must be set manually for VTWM windows and applets)... define(WMdesktoptitle, 0) define(WMdoortitle, 0) define(WMiconmgrtitle, 0) define(WMapplettitle, 0) # # Boolean Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-bools) ShallowReliefWindowButton ButtonColorIsFrame # # Parametered Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-parms) # See also 'Lists' below... IconManagerGeometry "+5+5" 1 RealScreenBorderWidth 0 # Gap between frame and titlebar font (titlebar changes) FramePadding 2 # Gap between FramePadding and buttons (buttons change) ButtonIndent -2 # Gap between titlebar elements TitlePadding 0 # Button border width (TitleForeground color) TitleButtonBorderWidth 0 ClearBevelContrast 40 DarkBevelContrast 40 BorderBevelWidth 2 ButtonBevelWidth 1 DoorBevelWidth WMdoorbevel IconBevelWidth 2 IconManagerBevelWidth 1 InfoBevelWidth 2 MenuBevelWidth 2 TitleBevelWidth 1 VirtualDesktopBevelWidth WMdesktopbevel UnknownIcon "xlogo32" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" DoorFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" #VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Functions and Bindings # # Read in the bindings file... include(HOME/vtwm/vtwmrc-binds) # These are nice built-in 3D buttons... LeftTitleButton ":xpm:darrow" = f.menu "ArrangeMenu" RightTitleButton ":xpm:dot" = f.iconify RightTitleButton ":xpm:resize" = f.resize Function "decorate-virtual" { f.exec "nexpm -vtwm -in HOME/vtwm/images/djhjr.xpm &" } Function "clear-virtual" { f.exec "nexpm -vtwm -solid gray60 &" } # # Lists # # Read in the sound file... include(ifelse(SOUND, `Yes', `HOME/vtwm/vtwmrc-sound')) # Read in the lists file... include(HOME/vtwm/vtwmrc-lists) # Check 'BorderColor', as that's the highlight color... NoHighlight #NoTitleHighlight SqueezeTitle #DontSqueezeTitle {} Pixmaps { # TitleHighlight "eyesline.xpm" # TitleHighlight "byzantine.xpm" TitleHighlight ":xpm:sunkenlines" # VirtualBackgroundPixmap "djhjr.xpm" MenuIconPixmap ":xpm:rarrow" IconManagerPixmap ":xpm:zoom" } # Box-stock Background is, of course, "maroon" # Box-stock Foreground and IconBorderColor is "gray85" # Box-stock MenuTitleBackground and BorderColor is "gray70" Color { DefaultBackground "gray60" DefaultForeground "gray90" MenuBackground "gray60" MenuForeground "gray90" MenuTitleBackground "gray60" MenuTitleForeground "gray90" RealScreenBackground "gray50" RealScreenForeground "black" VirtualBackground "gray60" VirtualForeground "black" BorderColor "gray75" BorderTileBackground "gray60" BorderTileForeground "gray60" TitleBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } TitleForeground "gray90" IconBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } IconForeground "gray90" IconBorderColor "gray75" # IconBorderColor "DeepSkyBlue4" # { # "VTWM*" "gray60" # "XTerm" "SeaGreen" # "Xqsh" "maroon" # "ssh:*" "maroon" # "telnet:*" "maroon" # "rlogin:*" "maroon" # "*ftp:*" "maroon" # "xbiff*" "gray60" # "xcb" "gray60" # "*clock" "gray60" # "xload" "gray60" # "as*" "gray60" # } IconManagerBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } IconManagerForeground "gray90" IconManagerHighlight "gray90" DoorBackground "gray60" DoorForeground "gray90" DesktopDisplayBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } DesktopDisplayForeground "gray90" } # # Menus # # Read in the menus file... include(HOME/vtwm/vtwmrc-menus) vtwm-5.4.7/contrib/vtwmrc/sounds/0040775000015300001300000000000010260161306015606 5ustar callumfidvtwm-5.4.7/contrib/vtwmrc/sounds/cashregister.au0100664000015300001300000001741210237645271020636 0ustar callumfid.snd)á@cashregister.wavj^h`[e_[d^\hbgöhURU^nújZgömYRS\ùâûhöçåìb_yqRWìjäÎb__JkyYÏËõëðkøíòðuçÕîtyczn`êzgÝÛl`ßÙôÜÜm]XVIPÐÖíÐÕoWêßKLëçæØétdZb[Wehg^Zi\Ulño]_h^néír__a_gnaY[^UVd\\jdnìvj~h^fXN[kaiõiaomnxz~ûçÞès_cÿüywt~}gg~ohs÷ïüìæïÞØíqütegkñìxîïþîy{ðþæÙÛæíq\`cZZdõøkoÞÝkûô^lîøþýùgTOJQ{üîÝÝ|eñPCXWKkùwájNYß}Uã}Ig÷OñÕò]N^VJW[]gïÛRFöÕoWkiNXíÿcÜÌü^ëÏÍßçæöcKNYmÈÇ_\xMqÒUêÐQøÕZcû[üÛõîÜÑÏàl^YRgÔÛ{ÝáX[ZQswüÝ[Tëùÿà}õfPieRUdwiëÛcV]LMùÞôhæÝYKW^\vïú÷kZSU^\^àøKWhQ^t{ÚìLVxHXËüNdÛYGØÆØßÇÉUO\OSM÷¾æNîUBCÖÙ?ѵj>ÈêDËXiÂNоJRÀÄEFÑÓMX³Ð8¸±D?xÂN(;ØÿP0É´9°°$ب?UÆgº^-ÏI-®¿&N®j3åeG×=T»ý>HÑÍé<2¹´:QÌ_Ü?áªÙLM*:ÅM@¹ÂBÀo:´®ÒÈ¿?-0I×<>ÅÜOm[Û¹ÆÝÏbINÝ×OöØÜò=K9+DGdº¾¶¯²¸lDACÉÌ:D¾a8ÕxrÈD×ÀǾ^ÕuEz?JÏÐõl\--LR»¹Ã´CK´ÌË×AO8)?Aò°~eÕÐD-×Ì7ëµÏ>l®ø4Mnx@çÍk]Òý=FCAÂÊI¾¼AMÌòO_NëÉeÌæ5]È;<¾½ïÏÇýYK?LE?óÚ]íÌB/^e4^Ê`ÑÌ~W:H¼¾Ü¿ÃARÌgJEؽuYéH;éµìAÎrXÛ`ÕÔoÊzMÓH6MÌÃEFº¾yÚÌJ8?KNȳ¾þTÝ×;@ÀÏÓd;Ç@7¯U>µÔ@CâhFEIÇDF¨®T>~´|,ε-?©B)ËÍ6|¬R7O8¾H-ɺþ/R=e¼IM¼ê-D²¾Ñë§åMÃq#ÍÜ*Ç«½WZ®N#HÆC4u¶áA¾½96YÔ?3Æ­c5Ĺ65®·+6´Í#2¨É1ÆÆ.,ö­»F¼®='X²6(¹«P9¸©^.w¾:F·Ø>V½ËEß½Q/K¼SC¾Å=5IT:DßÖ¼´½éR^NcM<]ÖùX¿­¶Ô9HÛ3>¿²½å²Æ/=Ïà5DÁH4FÅÆKͺh@ؾ6A¨¯gI[s+%Z×8Y°Ñ7NL49ݱÃL̳È9Z¼U?{ÓA9wðjàÑæ8>¾¾Qk¾T6GTnò²ÌVäâB<[G>̱¼ZðËMDÙÖ>@Éo=ÙÃR?|ÊG9SæÕÄ»¾ÏÇÊK:Ml;>Å¿YQ¶¸A?ldKå±ÂAÎÍJEÃÂO\ÂÊLhÙMEP_B>jR69Vk?FÃÆ^ÙÅoBÞ¿^MÉÊ=<ØæCIÈÉDîµÃVdzX2OáB9ÕÄ;?ÂÂR_¿o;MÛ`AβÆNO}B=ËËPëÆÕHI×iAýÇhü¼¹ÌkËÒ87dgJä¿äGiÍíYŶðJÆÊMcÊi@MsWA_ÌE;~ô<:ÕÅ\Ý¿ÓHOËP5GÞ[@ܾ[QËÊKBÖa3:×ÔLѵÈGLj>6NåOMÁ¹l]¾ÇISÅx9K×XEíÓLBüáHX¿¿rûÄáARÜQEôÈùJØËKUÅÌShÃÔ]ÑÉxNðÓI:RßVrÁÍP\ÈÌZÛ¿tIÞÏURÍÌNFû_8?Ò|?üÀeAoÙH@οXNÌá;AÐs>WÂÜ?YÌN>çÉK?ÓÆ\_ÆÒ?FÝQ;UÉçI|ÆgF×ÌGEÓÙJUÍÚL_Êÿ@TÛRKÍ¿átÈÒCBíìJs¾ÍMnÐL;^Ô_vÁ¿ø]ÊÍT`ÎnAbË^IÚÆkYËÍP\ÉÖK^ÈßNíÒM>\ÝJAáÏJHÛ}?NÉÜLÙ½ñHëØJAøÙFD×Þ@IÓ|@WÇæIïÊOôÌPGäû?EÞíJï¾Ï[ØÆlGôÏVNÑÏNRÏéHjÈåRÖÁåVÞÛMJÚÏYgÈÖOkÍ÷PÞÇòMúßKNÒÚHIÜëEOÖeHßÅwOÚÔE?éìFVÊÓVzÎZOÂæCæ¿\>âÐ@Dáã^_Óá>GÈÜ?h½kGñcRYðÆã\ÅÐ?IåXVÌ¿ÅÜôÞUMîgCPÎ×[fÒØL]ÈØräÌÎoâí@AtØw\ÉÇTæÍIEeøáèïöTKöÝLUÖvKNÛX=νÞ^pÏD9å×HyÇ[oRMkEðZÔÉ?¿w>Ì?OjLÑ[CéÖCO×YE˶?NÎ:ÎX;»FR¯ÏmKÕÌ(Jº4X¶Í]ñÆÑndVëïLÓá;Û±í3]¼G:µ·6K¸ãOe×ÈOgÈL6KÈ>DµÎàÓÜÇBZ¿PXÌóDPÑOAòËw=xºN=ÏÙMiÒåRLúé?>SOMê¿ÌAN½É?V»ù8PÕH;YÜUHØÅOIÛãLOÔ]>òÄ_@O÷eWÉÊSÞÄÒUQËÜ@NÏîLÙÆFKÍ×àN÷Ì=Sºì>þ½ÝIfØþMåÅQHÐÎaXÎÔWßÍÜJMÇMF¿Y@í~â^ÞÈNYh_ÞOðÐDuÌO]øø_IäËNQÄÇXCKSFDìÔILØÍâI^ÑE;YùKXÄÏXâÆê>LàjKPËÜHÍÅKIkánLköcÝÝSEYÏßZÎÕNçÙMCr¿áIÚÆj`ÕTAlÃÎCh¸àA\ÕØG`»eBÉÌMTÝd[ÓÊäGyÄ[NlVJUÈÓLêÈÙEGÎb;äÁV]ØÛÖNOm::øoFhÊ~LâÄßCjÐLO^GHoÈÖKfÉdB_ÊôGÝí>PçÝgDÝÇCDËå?PÔêMì¾yBÝÆêKXØaMÍÆKKÔÝFQ¿ÙIöm[êvÑÏPÙÆMNÒÝhêÒÔYUïVJtÓ}kÛÐqKåÕYIß»_MÇK:h`RWV¿üê[KúÒX9KÍLAÎÄXHËÅD>ðN;þÉæYr¿Ú/DÄ=:ÏÃzRÏÍc_ÕÚF>aàE@ÏËHlÂjJÞÑXjÌqFKÕÍEP¾Ú?gÔZåÎa?N½ºyß»B8ÌtLxËÅr\Ïi6EÈÊßÒÉ×Ü\=FWϸÍÒÄH;ZOFÚËÔÞb?=úWCOÞ·Ø3W¼VE½»ÏÏOaP;^WYÅÉRƳ.%K4*XÃÅßmÊ?<Õ?Nƾ¹O\Ö=AξæÇ®¿GÀõ8=͸ß<ì?'=3M¥ÇC¤oɯk°É¸«ÎkÌÊ,?¯;<­·éÃ[CáGQ¼½O<Í3μ0Ä®YRY7JdBºµC¾¥ë=½V6VJ@Üh?7+a¯Èà^ȹ^ÞÇXHº½+Æ®&HÙ,Ï>+ÁÍqÊß]HCc¹±µ²á/9;-0>LNð¾¾É»×5ßÜ0Jɼ°Æ8=\2CÓ2A»ÌϽÀÐtÔÃYTÌâ̼ÁÆç>HK=ÞÄÍÆ|\lXàãjeLM]]dxmÝÁÓH÷ÈWHYD8ßÄüÆËRÝÖÖÛ>=bI:DJOÜÙÞìPõËÒÎiRêkÚó8:KJMàÀÉ~ðÍçIrÕæÍÙxêÝÌÐqa_Q]÷ìÍÇÊÁÇÕ¿ÐEfý;=kUMniePuÄà\ÚôTQILQAKÎÊËÈäK>JìTMľftÔH篥¯Ÿ£ÓÿÿÿÿA6/$+<ÿ°£ŸŸŸ«ç8.:ÓÿE-*,Aç°´¬ªŸŸÛ<0#,&&ÓªŸŸ¦¸Û'&()+[g68.+SÉÅÿ¸­¥ŸŸ§­²¼ÁÁ¾¸Áº°g[gÛS2':ES(*Aÿ­§¦¦¦¦®­¦¾°­°¸´´Óç[:)+*&$&+(MM+2gŧŸ©¯ÍgISÿÉ´¬¨¦ŸŸŸ°²ÁÿÿS886+-.2.&(,4:IÿÓ´¶´²¼´º¾¸°²§ŸŸŸ£¬¶Áÿ8-%,,'%*,248SS0M°´gÿÿMÛ¬®¬¶¼¼Á¼¯§¯°­§¨°>#+.2I6A¼É2-g¸¶®¯´çM<ÿ¸²°´Åÿɼ¸ÛSM<:ÿͺÿ<&/>´ª§¾SIMA.<¾«¬°ÉMÿ­¶ÿ´©¦Ÿ¼S<:E60.ç¾¾ºÿI4./42IͼgÿE)4ÿÿÿÿSE+AÍÛ´ºÁɺ¶²¸Å¸ºÉ°«¶ÿ:gº¸80E綦®¸°ÛE:E>>>MM)2A>84S[MEAÿÍ>ÿÿÛ¾¼¾¾ÿ%0²®´¯°°®¾ÅÉÓÿ[SgÁºç¾¸ºÅÁ´ºÓ>:<ÛÁSÓÿÿI[[I-+.>MI>:88:AgÛÿI[¶«¾A>¶¨°ÅÓçÁÛÛ°°¶­¦¦§º6/)-2I¾çÛ¸¾ÿÿMÿ6(Aç[:4<>I[ÿ²¸[4Mçÿ46AÛ«ŸŸ£®ÛI06+AÿÿE>ÿÓÍÛÛÿÿɼ°°´ÿE>2I¼­§­ÍAÛÛEMgÍÅÓÓg<.-:ÿ¸´ºÛI<.'48AÿÓgÿÛÛ¬ŸŸŸ¤ºÉÅÁ8ÿº¯®¯ÅÍÛIÛÁÿÿçÿ>[E:2/*Mg[ÿI84/>ÅÍ6M;ͶªŸ¨´¸¼g804E<ͺº86Sç¼°SSÍÍS>g:->Û¼´ÓÿIÿŶ²®£ŸŸŸ¨Û6''2AÓ°¶E6)(*4,*EgÉÉE**',Mÿÿ͸¾¾ª§Ÿ«Íÿ¸´«ª«´ÿMA/,4SçÉçM>MM۬ºÛg+IÍÅ´°°¶ÁÅÁçAAg¼²¾ÿçÿçg4<ÿÉgÿ[ç¶°´¸ÁçI8-Eɲª¨¥­Å¸¯°Ó>-/IA820gA'%&%+/Iÿɶ²¸Í¾´°°¯®°°°¶ÓÿgÓÛS6(%,/AÛÛÿSgÿÁ²¯¨²²°«¦¬¾ÿM4+.SÁ¾g<8)&-8ÿçÿA.&'-2S¼¸ÁÁ°­²°­Ÿ¤¬¼¾¸®¯¸ÿ>4-.8ÿÁÍÿESgÿž¼´¸ÉçMEAÿͲ¯­°ÁÓç>:ÿͺ¸ÍÓçS<82.,*,/-.8ÿÁÉçç¼°«§ª®¶Åº°°°°¸¼ÍÿÿÉÉźÉÛÍÛA84S6%.>SÛ¾ÛSA008EÛºÅgMI-4SçÛ¾ÁÿÅç0:[Ó¼¸¯©«¼çggɯŸŸ®ºÿSEAÿçÍÓçgSSIMEAMSMEEg°¶ÿ68>ç¾¾ÍM<0..06>ESgÿÿÓçÿMIÿ¸ººÁÛÿSISͰ¨Ÿ¥§¤ª°´´´¼Éÿgÿg[ÿÿçÿE>>-'0AÿçÓÁÉÿÿÿÛÿ[SgÁºÁÛÉÅg>20IÿÿÓg8-,)-4MÛçgA:40>A>SÿÓ¸´°«¬°ºÁÁ²®¬©ŸŸŸª°ÛÿÿgSI<648AA><<>>ÿ¾¾ÉÓÍçEEÿ[AAA:/'#&$#):gÿÿÛ¾´°°°«¤¥¥§­Á[-/AͰ°²´´¯°²Ág>A[ÿÿÿg[A:/&-8Iÿɺÿ6:MÿÛ¸°ºÓÿgçɼº¾¾ÓIA8,'28A[Ű®°¶çgAEÛº°®¸º´´º¸°­©ª­ºg<4068404SÿS.&$)6M纾Óÿ<-.MÛÍÁÍɼ´¾Á¸¾²°²Í[[ÿS:SÓÁÅÿÿÿE/#0Ó²´¼ÛÛÿ<-(&$*SŸºçS6444IÿçÍÛI.4S궝©¤©¾ÿE:>IÓ°°ÁÿSE4/2>篯ÍgISÿÁÅÍÓS:20/8ç´¯«¨ª°ÅÿÿÍÁº°´ÓS>:*&//4.8IgÿÓ¾Íçÿ[E:>AISÓ¾º¸¶¼ÁÅÓÿAASÿ[MSS>:2+-,'%&&,:çÉÁ¼ÅÉÓ¾¶²´ÅŶ°­«®°¾ÿgŶ´¼ÿA8446888:ASÿÿçÛÍÅÅÉÁ¼ºÁÍÿÿÿÿççÿÿgIA>:40.4MgM62204:ESÿççÿg[ÿÛÿg>>[ÿɼºÉÿÿgÿÛÉż²°°°´º¾ÓçÓÅÁÁ´°°°¸¼Éçÿ[:,'%*../4EMÿÿÿÿ[I>4--/E[ÿÿÓż¼¼¼´°®«ªª­°²´¶²°°´°°ºÿ:68MIIMSÿÛ¾¶¶¼ÅÍÍÉÁ¼¼¸²²¸¼¸´¶¸º¸°°°°ºÁÓÿgSEA>:4/,,..-,)*-28EM[ÿççÓż¶´²²´¸¸¶´´°°­§¦¨©«¯¶ÍM:42/448:6/+'',/4EgçÉÅÉÓçÓ¾¶¸ÅÛççÛÓɼ¸º¼´°®ªªª¬®²¾ÅÅÓÿM:0-,-.-)'&&&).2EM[[E>:846EM[[S[SM[Óº¸²­¨£ŸŸŸ¥¨¬¯´¼Íÿg>62.06<:4442242248:>MÿÛÍÍÓÛÛçÓɾ¸²°°¯®­®°´¾ÉÛÛÍÓçÿÿ[A<<<<Sgçż²­¨¥£ŸŸŸ¥ª°¼ÁÉçÿ[SIA6.+(%%(-/:IgÿÿgA820.-.6>AA>AIÿÛÓççÛÍž¶°¬§©¬¯¯­¬®¯°ºÛÿ>8>gÿÿS:0.,++-6>IME82//04MɼºÅɾ²¯®©§¨«°²´´¶´°°²¾ÛgA842.--24/,)'(.6E[ÿÿÓÉÁ¼¶°®°²´´²¶¼¾¾ÁÍÿçÛÓÛçÛÉÉÍÉÅÉÿ[SSI>:>:2,+,046:>ASÿÛÁ¶°¯¯°°°°²´²°²¶¸¶¼ÉÿgÿÿÿÿgE4,$#*8I[ÿÿç͸°¬¨¥ŸŸ¥ª°¸¾çM>2,)*.6:A[ç¾¼¼¸¶´²²´¸ÅçI:40,+-0228Igçż´²²²°°°°´¸¾ÓÿÿÛÉÁ¾ÅÓÛÿÿÿÿM<0-,,+(&&(,:[º­©¦¨ª®°°´ºÁÍÛçgIA<<>E[ÿÿÛ¾¶°®¬«®¶¾ÿI><40,*'$#$(.4Iÿ¾¶°¯°°²²°¯®­°²ºÅÛÿÿÿÿÿÿÿM8/,06AS[MAASÿÅÁ¼¶°¬¥£©´ÉM4..//.08>EIMÿÿÓÁº¸¶º¼º¶¸¼ÅÍç[E>8446ESÿÿÿÿź´°­«¬°¸Éÿ[SÿÓÍÓÿÿA2../.---/44880--4EI[gÿçɲ¬¦¤£¦ª°ÉçgA>A>84/+%$&+0Aÿ¸®«©«®´ÅÛÿÿgSMA:4008ESçÁº¸¸¶°­§¥¤¥¨¬°¼ÍÿI4.-++++&&*4SÿÁ¶°°°°¯®°°´¸ºÅÿ[MS[ÿggÿÿçÛÓ¾¸´°°°²´ºÓg:.+&#)/>[ÿŸ¶¶´°°°°°¯®®¯¶¾ç[EE84/-.4<84484/**+/8[ç¼²°­««®´¾ÉÍÅÅÁ¼¼Ó[IA<:60-,.22*&(+2:AgÅ´­¨¤ŸŸŸŸ¥¬¯¸ÓÿMEAAMgÿÿSMIMS[ÿÿÛÍÍÉÉÍÿSE>:6422448-&)4EͲ¯«©©¨§¦¦¨«¯¼ÛS<64446>I[ÿÛÓÍÓÍÅÅÅÅÅÅÉÓÓÓçgMA840//2:SÿÓɾ¶²°²´´²°°°¸ÉçS:2,(&$%%(-2AÛº­¥ŸŸŸŸ¤ª¯´ÅÿÿE:4-('(-4:[;º¸¶´¸¾ÍçÿÿSEA>AA>>>>ISÿÛÓź²°¯­¬­°²ºÅÉÓÛÿ[I>80-++,-/26Aÿç¼°¯­«ª©¬°°¾ç[>840/00//06A[Ͷ°®­®°²´¸ÁÍÛÿÿM>8888:ASÿÿÓŸ´²°°°°°¸ÁçS>4-*(((*,.04ÿÓ¸°¯­«©©©ª¬¯¶ÁÿM<0,+,/28E[ÿÓº°®¬­¯°°¶¾ÉÿM>8642../4:A[ÿÛž¼¼º¸¸´²°°²¶ÅçÿE84-***-26EgÛº°¬¨§§ª­®°¸Éç[A:0,*)+-28AÿÓÁ¶°°¯®°²ºÓÿM<6468:88:>M[ÿÍÁ¶°°®®°²¸º¼¾¾ÁÉçÿM:2,**,/4MgÿÓÍÉÅÁ¸°°°¶¾ÉÓçÿÿ[SME>:60.-/06ASçÁ¸°¯­¬ª©ª­°¸ÍÿS>84244:>ISgÿÿɼ¶°¯¯°´¾çI62.-,,,/4ESÿçÛÍÉÉÅÁ¼º¸º¼ÅÍÿSE:88:>MgÿÓɾ¸´°°°²ºÅÓÿSMMMIA:6468:>ESÿÿçÓÍÍÁºººº¸¶¸¼ÅçÿSMMSSSMIMSgÿÛżº¸ºÅÍÛççÿg[I<:86668<>AEM[[ggg[gÿÓÁ¼¸¶¸º¼ÁÁÅÉÍÛÿgMA><<<>IgÿçÛÛÛÛÓÍÉÉÉÍçÿSIEAIM[ÿÿÿÿÿÿçÓÍÁº¸¶´´¶º¼ÁÍÛÿgSI><:::AAAEMgÿͼ¸¶¶º¾ÓÿgMA>:868ESÿÓÉÁ¼¼ÁÅÅÉÍÓÓçÿÿgg[MSSgÿÛÉÉÍÓçççÛÍÍÍÓÛÿÿg[S[[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÛÍÉÅÅÍÛÿg[MMMSS[[[gÿÿÓɾ¼¼¾ÁÅÉÓÓÛÿÿÿgSMIEIM[gÿÿÿÿÿÿÿçÛÓÍÉÍÛÿÿg[[gÿÿÿçççÿÿçççÛÍÍÍÍÍÍÍÍÓÓÛçÿÿg[MIE>AEMgÿÿçÛÛÓÓÓÍÉÍÍÛçÿg[[[gÿÿggÿÿÿÿÛÓÓÓÍÍÓÛÛÓÓÓÛçÿÿÿÿÿÿÿÿÿÿÛÓÛÿÿgg[ggÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgg[gÿÿÿÿÛÓÍÅÅÅÉÓÓÛÛÛÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿg[[[ÿÿÿÿÿÿÿÿÿÿÿçççççÿÿÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÛÓÓÓÛÛÛçÿÿÿggggÿÿÿççÓÍÍÍÓÛçÿÿÿ[SSSggÿÿÿÿÿÿÿççÛÛçÿÿÿÿÿÿÿÿÿÿÿÿÿçÛÓÓÓÓÓÓÍÍÓÛÛçÿÿÿÿÿg[[SSSSgÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÛçÛÛÛçÿÿÿÿggÿÿÿÿÿççÛÍÍÍÍÍÛçççÿÿÿÿÿÿggggÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççÛÛÛÛÛççÿÿÿÿÿçÛÓÓÓÛçççÿÿÿg[SSMSS[gÿÿÿççÛÛÛççÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÛÛÛÛÛÛÛÛÛççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÛÛÛÛçççççÿÿÿÿÿÿçÛÛÛÛççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿÿgÿÿÿÿÿÿÿÿÿÛÛÓÓÍÍÛÛÛçÿÿÿÿÿgggÿÿÿÿÿÿçÛÛÓÍÓÛÛçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿggggÿÿÿÿÿÿÿÿÿÿÿÛççÛÓÛÛÛÛÛÛçÿÿÿÿÿÿÿÿÿÿççÛÛÛÛççÿÿÿÿÿgg[[[ggÿÿÿÿÿçççççççççÿÿççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÛÛÛÛççÛÛççÿÿÿÿÿÿÿÿÿÿggggÿÿÿÿÿÿÿçÿÿÿççÿÿÿÿÿÿÿÿÿÿççççÓÓÓÓÓÛÛçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççÿÿççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/sounds/whoosh1.wav0100664000015300001300000003427610237645271017742 0ustar callumfidRIFF¶8WAVEfmt "VD¬data.8ýÿùÿ îÿ"ƒÿvÿ=³þ-ÿ’£þhÿ"¤þ·þæÿ©þ®þœÿÒþ ÿ©ÿÿÿÍÿc!ÿÿSÿ¤ÿwÿ‰ÿ‹pÿvÝÿZ¿½ÿéÿ¿öÿ~MP v@õÿ9XÿöÍÿáÿ>¹Ö'ÿ—aVàÿU±mxÿ2ȦÿYÿ‘ÿ‚ÿÅÿ<óÿ¯Ïÿqÿq·þz¤ÿìÿ*Ãÿ$rÿ*"Dÿÿÿ·ÿÎÃþ{ÿdžþçÿo@ÿ÷ÿ»©þèÿ½ªE2sâÿEoíºò6¤Nv‡EˆÈeîXµyãrlÉ’cÿ “Kÿ[E<3ïÿ¼·ÿæÿn¥ÿ¥ÿÿ½ÿ·ÿlÿsÿŒÿþ/üýþ †ý?ÿ{ÿÜþÎþWÿ*þTÿ6žþBÿïÿZÿ¶ÿ9ÿãÿ ÿ¤ÿÂÿöÿÿHÿe¶ÿŠÿb\ÿïÿþÿñÿb¡ašÿÿ~­ÿãÿÄÿíÿÉãÿ?ÿÂÿ ÿ‘H›ÿYÿUºþúþœÿÅøþkÿM³ÿ›ÿºþ#ÿ=õþHMpÿÒþ‘*ÕÿQDÿ·ÿvÿ™äÿ±ÿ¦ÿ(ÿÒóÿ…þ q¡ÿ ×qÿK¥‚ÿ ÿ#ÿ˜ÿ·ÿÝþ(4Pã¼-ÂuJL˜!ÿ#ÿ¥ÿDÿ3ÿÂÿÕÿ-þìÿ@‡þÛÿñÿŸÿ·ÿ‘þØÿ¨þÇÿ›Iÿ9aþíÿ×þÀÿíÿ±þðDÿþ¬Ž'ÿ.ÿƒÁÿ’ÿ®ÿÇÿÿ$ÿ®þ]ïWÿ7L ÿêÿ(ÿõÿ—ÿCg“Y›M›Å²ÀÿEYckÝŽÖ^¬  ®T/cº‚ÿ³}Qo]pÂ_ÜJxS†‡LG³ÿÿ‹ÿy&ÿ^þc ÿ—þ=ÿ/ˆþ ÿjÿ€ÿvþPÿñþöþ*ÿêþÒÿ–ÿæý‡ÿ§ÿhÿ†ÿIÿ ÿ§ÿê4‡Ëÿ©ÿí]]|,i«ÿˆi3ó(÷C£ÿCëþ¿Ôÿxÿ»ÿYÿˆùÿ6<ÿfþHžÿbÿÕÿ`›ÿ”ÿHTp­ÿpáÿyÿ{¹ÿ¹ÿ©ÿëEI]{~©lc:Àÿ™ðZMšºg\Ôÿ‡K,ÝÏ™ÿ‡ÿÙM¯z‡õHÿkÙ@' •Kÿíÿ8a$4ÿ¸ÿò™ÿ›úÿÐÿÿþ&þªÿÇÿÎÿÊ›þÂÿ-ÿBþGjÿ’ÿûþ3ÿ›ÿ#èþ¸þŸÿ/þ£ÿ ÿåþ)þNþâÿÿý ÿ3þþ”ÿ-þØý1ÿôþ>ýÿõý­ýÉþÈþ>þAþ¶þhýÁýÄþ*þøýéýoþ5þÙýÌýñýwþ©ýhÿHþÿÍþþBÿFÿßþ¨ÿnÿjÿÿþ×ÿRÿgÿÍþ¥ÿÎÿdÿyÿ¦•ÿžÿ˜Yÿ™ØþÅñ%IÿÜ7Œ”ÿF› €ÿ”· öÿS¢ôÿ2³ÿ˜ÿµÿúÿ5ÿ¥y´ÿ‘QG¿ôHj°þ5àŸêVsµeÏ9ß.G/<¿ìÿ ÎÿØÿž'\5gRÿ”,{ÿÆTÿFe0–ÿ¹þÛÿC ÿºÿWÿ7hGÿ™ÿWÿøþ©ªÿ §ÿ•ÿþwÿÊþ\ýÿ&þpÿ²ÿ¤ÿ³ÿeÿ"1ÿ¢þÀÿÿ'ÿ=„þ={fDsÿäÿmÿßÿríÿµy¡þ=Ëÿ9ÿuÿƒ9ÿßÿœÉû–ÿ h¬¾ÿ ÁUß÷‰BjæWe¤u²ÿOsµ˜æ\8Ei’š ebÁ #Ù²¹Lqt<jV{ÿÿD˜lY jUF†OÒEþ˜ÿ\Gcf’ûÿÇÿ‚mC“ÿ˜ÿeýKÿBXÿÿ±þÙýÝÿ•þíý„þ»þéý1þiþSþýþèþaþÓý›þþÁþ ÿZý²þ—þ6ývþöþ¡þ&ÿÅþ6ý ÿÿæýnúþ0ÿEÿ:ÿýýÿpþ8þpÈÿêùÿÿWž\ZÿÞÿžÿvëÿ‹ÿcÿRÿ<wÿ·ÿMÍÿÀÿVpÛÿM#V"7c]ã/¢ôä‡ÿDk¹c-ãÿÇ6·¹ÿšÿ`~ÿþZþ ²ÿ"dÿäþÇÿÊýÿöÿÌÿ—ÿ>þêþPþTÿÐý7ÿÿ‡ÿKŠÿ§ÿunþ_ÿËÿ3ÿ4Žoþþ:ÿÿý}ÿ`þÕý’ÿ§þCþ‹þIþàÿÔüðþÞÿSþÿ¾ý±þÙÿÿÿ,þ$ÿþeþÔþËþ7ÿgÿÅýuÿ˜þ‰Óýëý“ÿ¸üžþÙÿÄÿ]þ$²ÿ—ÿ¨ÿÿ²ÿÃ@ÿƒÿ9ÿ£ÿ¶ÿ†'ÿ5žþªþ¥€^ÿvÿ…¦ÿÜÿ1& Oz)ÿ+xwùÿ/¤ÿ“³—Bÿb4Ô “ì³Çþ£ŸFÿ6Yÿ½Ûÿéÿÿ^ïÿ±þ„ÿ6¿þHÉûþ:âyÿŠÿþÿ×ÿvÿ˜ÿtÿÅÿX’þ€éýþ¨áþéþÿ‚þÿ>ÿ"ÿaþYÿõÿ|ÿÞþÔþÆøþµþ)3“›ÿ—‚ÿ%ÿ{óý'ÿÙÿxþ+ÿÿoÿÃþQÿŒÿ¬þÿ!ÿ©þÃþ|ÿ ýðÿÿ¥þŽÿ¼ÿZ2ÿÆüÿ6÷ÿ‹º‹!ÿo[ÿ}ÿ¢þH?þÿ­ÿ±þŸÿÃÿˆþ†ÿ ÿÍýIÚÿYÿáþ®þ,Fÿ¹þ\ûÿ´ý]’þ*ÿ·þ'ÿx1þ6ÿöý'ÿ)œüžþ+xþ6þÄÿ™þ#çþºÿ/òý8ÿ6êþeÿ¶ÿîÿ+ÿEÿj 0ÿBž×þUàÿíþ;”±ÿ'¥ÿ¤ÿÿ¶ÿ_ÿäþV“þ¼þ`ÿvþ þ“ÿ}þÜþ¤ÿiåýÃÿSàü;ÿêmý«ÿÉþMþÝþÿþ«þéý0ÆÿàüÎÿlzþaÿDÿ›ÿ§ÿ½1®ÕþÍÿÓ(6ÿ‘õÿÿ¨þ>ÿóÿoþ>55ÿþçþý%pÿþ¨ÿ ÿþÐþìþ9ÿžý9Ñÿþ ÿ¡ÿ[ êÿïþ‘ÿ7Ýþjwþƒ¥þ‡ÿ$Ëýuÿ!¹ÿŽÿ3ÿÊÿãþwþŠ|ÿXÿî—þõÿý ÿ¨þC’ÿÍÞþ#eòþZ“_Òÿîÿ¥þf£.ÿ^ÌÿfûýDþ…»ýqÿ­¬þ¸þ€ýGþ¾ý×þVþ¼ý^þŽü«ÿý ý ®þ ÿ¼þîþ8þ¯þµÿœýá6Dý¥éÿµý!ÿ¹»ýjÿ‚ÿÌÿ!¥þÿx‰™þ9HÒÿŽ„ý³þ¬úíÿ±`ÿïÁåÿö¥ÿUÀÿfµ(WYâµþÐomÿÿ ûÿ5gŠÿ8ÿ‰!þ·ýþŠÿµÿþRþ—ÿcÿÒÿ^ÿmÿÿ·‡¹ýÁéÿgÿ[ÿÿèþÿeþØÏþèý×Iþÿþq;UÏžÿ¦þÿÿï{ÿ)ê™þ_ÿ,ÿ¸rÿî?þ€}Òÿ(–!qDª žþajvÿêþmpÿ«ÿÞ%{ÿ]{ÿ•üeôþ`Øÿä•þÿoPÿ+ÿîÿIçýOÿR)ÿ2_Uþqþpz”ÿÿ† ‹éÿÛþÿ“ñ¿žxÿ_g'ÿ§–W~pÿ?ÿ‹\«±ÿ1í²ÌþýþG{ìÙþÿ€ÕþÊîüFþm}þÿqÿZþ‹þÿMÿ+Òþ…þ;Tÿ»þoëÿLÿOÿ Éùýýþ9´Çƺ'ý@XÿßÇeÓýá AÌËRZ³e¥@^³]Œ¡oTm´°‹]þbÓŒÿnýC2ÉÎ&ÿàüeQ+þü%zÿBÙþ$ÛTÿL’Iö?5µþc/ÌþPü{÷æýjæ~Ÿþzþüõÿõ¼Ä'Y"ÿéýåC©šÍÒ¶5|ÿ´¼ѬývÁ@ïUºÿ¤ãýþâÿøÝÿƒÀ¡žLóÿÙÍɶþ‚€þRvÿVÿ+”ÿoùýÛþ‚ýÓü½®üìüÌÿfü¦ÿ»þŒFÿ,þMÿ‡©Ñ\þÉ„åÿ·æè0¾þLø¥EÄu÷oœÿB•Å:þ› agÿÿ‚‚=s0–Vþ?GÓÝÊüÎþwý‹þuáþÿµþ,çfhÿæþ©‘üíýÚÿSþÆþ#?ü¾þ ÿÿÖýþ4ýQÿdþýÄÿ!ÿpü9ÿ;þîÿ;ÿŒýHþ,ÿ›þçúáüæüwüµüfüLþ©úSþ&ü!ûhþzü·ÿgþrú=ûÿ0þÿþÿ€ûËýæÚûÃýÓý°ÿíþ|óÿrÿ—ÿíÿ´ÿŠüç•þ!þ@ÿ„þŽ–ýÀòý þhÿ¬}–Ožÿæþ.ýçÿ§–¤ýý¤øÿÉ›0-ÿß|uü÷ïhcþS ®òþQðÿ4•sþ'‘dÿÅýLêÿÞÿƇþ,þ‡á~ 4¦#ÕoýSþ¬ÿ{ÿ*ÿƒ;ûýÇÚý·þŠýXNYý-þÿM$µì¨÷b”ý–7}þ‚pñþQOÿTUþÐþëþ ü‰ÿ?qü©üHþÓÿ}ü ú„öþ&ÿTÿêÿßo\ýdüèÿÔÿøý3ÿSû½ÿ¶=þý2ûYÿ süïþzÿ>ü˜”ÿíþ»þqÿÌþâý(CàýžÿRÖ9üÀøÿýîãûüÿÿËü·û““þ}ÐÏÿmÿöþÚþ›1dÇœû[þþÜü~ýÖÿK÷ûóÿ«½ýJ´þKþ(%½)ÿ—Ïÿüü¡þCÿóþ$þjû@ýEíýmü‡IþÂöþ$ùÝûŸÑø_ù÷ûªú/ûòûAûý„ùÀôjý=ü2ùÀù.üéüÀø*ú‡þ°ü«ùÒù5¬–ú†þüülû.WòýÇýH4Íþ´…ÞAþ±ýÉþV”Ÿýhû„ÿÚùäúÑxùþ—ùLþv* Xû¹ÿ~µøeÿ×ÿþzþ1îýíÿ«ýB-.þ;üúRþûÿþþý:ü<Sý•þ´ýnýü þîþuüš¾þisÿþ¿#‘þÙÿ$Hý´žÊýÞÿΚ~ÿéK^—ü$]"ü»ÿ>BúÖãýOüÜýrÿEJü\Ñüùøúý!ù¸üé—üÜÿÓÿ8ûùû¾ÿèý?ùýC8ÿ~üÇÿkÿÒ˜³Ê$Åå ר¦Úÿ€}F@ãÍ" £cn‹ð©þ)- ïúwþÚöúÖú¹þ³Žýpÿ –üÎÌ;ëþ ü"ѹ\ýþüBþÃú yúkŽÓú¶ü®„ýEûyEþí÷ÖýÍýèþPýg¯þ&úEþp*ôóî;»ý¦ƒ–ÿþýòmÿ[õkÿ8M@*ЩÃü÷üžëõû&ÿoþþh°¥ºöø]„<øÿZú…ÿ^ÿÙþÿÏœÿh¬ñþ°ýSP¡„û Ndú+ë ÷ý­U 5æB àqÙ „]Õ Õ'cÉl  ³ 8šú édå•z ÿ…þ‹ýý»a&.ø|;ÿÓýwºûyÿ/ý1ÿ ü'ÌnÿkïüW÷ºý“gý|ö·&ýþPûÿ]Rûïþâø9úîŒÚ÷çCø]ë9â…í°õgúÃðÔòæÂñ†ôÞý=ówî|ükÐóQðýü$îQú5$óúòSgþÉõcó²ö;ç\ñhùLù8÷oüS÷ö‹þq Cõ®ó†ÿyôøa ÊýíöP úý«Jú…ø Ï üžï Æùbù¡ •÷'þÎàåü÷ÆÝ "î . f J$Å2 R¨¶PêùÆ@ ò ©Ã ©1\ ¾þïÃk 8 ÕC ÇL‰Êf h ²† bçô!Œ šp³j?\#G' Œž7 _Ÿ]˜ð ,.Á¡ñ ¦ & ¾ pü)ƒ³ 5ûw­“ÿù þÞÿûÊjõKŒ Æôù{þÃÿ(ôAóšÿQþŠüœð²òIù2§ò}ä§(ÅãóWóëvûìç%ú*ýÿð1ç±ùì÷îåKóýDí?ì#ä5øÈ<ê/êÍó)óaçhøñú#ïÑî§óïóýð ê@êÂMíºåàöø0í à¡ ð…Ö ÿ<ó¹Úuû{ÿâ¶å¸;óýÛ¨ðâÅüšûžðNßÕìøï_çdú¤öâô\þRîþü1îÖðÕô®÷‘óÅðKöc!êð)ûéôÎçø°õÙó/ôLô¹úóýìúûíµÿ»üçëŽü!Òýôƒ „í:™ ÿN6úèñˆÕÔñÕûWþhõ¯÷Öüàõãñ8-ÂøaôlýºDðÝ# ÁþËÉþÊÊÎõÖ¸þtá§ râòWðMü•úöâ÷À ™ö³øõ³ü€ªñöùŒüØò¢úgþûzò„ôû÷K³õ‡óRýVäÀüƒà•ô5íöö¾úeþû¹é¦ð@þàyþãuðF÷°ú}ûòûÿÑúº÷»ú’ù­ÐøëÿáÿzúCýµ÷V¤ùcüû^ûhÛ÷ƒÎ‘ôµšóGÓEù'óøóó-ÕÃéþÓþÄÏ0FöÕŽQ ÿÖß ›ö" †ð Vmi*8<É"­ý\(¿]e‡‡¿öHUº<³Jê k‰ ÌN ’þoþòeû¦ú ¾÷–ýXö¨e˜ïEòüºù@ü=ñ‚ërþ_þé÷aøÐù­ñ|óêƒëœ÷xVû;÷.úKý£û—àR÷° béÙñÁõÿíþâôð¾ó‡Ø"ëlòýõ çÛÚ9úö/ë ì2ñò’áîoõ1üèGú î±ü  ú—î2õ™ûÎõxñ²úúùRŒÓçøÿØù'Þêÿºþ*÷7égû5 Õáù¶ÿãþö$´âdî; ýBØ1 îýâúvü2ù¢þÕöÓŠSþ¤ ý6 Ê÷lú^Ín=íAñŽ  í1ëoLõÒósø×ýæø¾í„ú1ßöóöãÿ%íâîí8öíí&ýzö–äôbñÊêô>ñ8Úþ×ÍÝòÝt÷|÷NààóÂèVíí£ã)åW éèDÝAEõîê—þ:Èû° H çéqvóXz)а9Å? wEu S^Ы 41ï²=TVþ&çñþG #ï’xúðö¶úyŸõñfþÈÿbö&þÁö*ðýî7êéâïÞ àå@ÿÓ å¹ ìØñRûôò&õ¾ãîìhXb; ¡š<øì\ Ø ·7Wþs?·%ZüB xNc‹· îÆ§•*/ Z"ùÓ89`M Küe :Øž‰ ù@¡ š‡ü™2„q X Àì©$»‡›MŽ ÙË*Ï  çV:" @vÒÿÂ+2yý˜ cóñgX e#ù÷ð+ &®ŸöÊ÷Ð Ëø‘Úzô{ào½ÛZñ0ßðfÑ òSÕyÿ, òñšú*÷x÷Ñïœ $ ôbQüY÷dûnÿ‚2õûMI¸óªôYõöúRÜ8ýTðèCý,èqéMøÂõòâúïiùææféÖý%ûéÞ‡ÞL÷]í[äû•ø2òäðùî*ì’ôèã@ä(Gèyà€ö7ø¿!úIç–ÖýÒõ}ë0ºþ×+"aêv x"{ûìÌêVÜËÝóéRcÔïGì'ôö0þþâ}þåÈþN ØþZõ uõ¬÷s|þ(ˆ ‘ Ô D› Ü +l $ Ý&€ýEöUŒÒkÔEÔ÷¥åùÝŠÛ/1*ý èl¿Å¸{$÷D +´üù%œ ô5ÿ $Íy÷²b ÁYô ‰ %Z&!þG!Šû»l)ÒÒü£ð ¹:"×Ê ‡,s!> 9 Çj4ošJü®7 Z—Ê$)ß®úí3Wó ýÆõëÿ¥öpí¥ù#ÿéòÇÜ®ÜöÚLú¡×ƒÝ3õ©Ó&É@ÎÆãJâèåãÓ=Ë:é=Îáß›Õ õ+سà ìܽ¸Rúšë´º–ô»øúÛsÅ\èçåâøhÙlÝNÿŽÎÌÌkù&ÛÇ’øŸñ+çŸêbîŽÎgõîø^ÖMôxõªæƒÙù…û$ðßóêMî¡÷ìðQFü™éÕÿ«X°éÚˆ ñ]ïÖŠÝø(?ÿ¤ßéïIâìø;ë" ú÷Ú§ ’ü]6î” ¥…á¦ÃYÙj#ü Øé÷jîæÀÓ£S ÞÝÀï~ôDNÖ@ÿ¯ ÍêiÜñ&é¶òæóê9ðÇ˵Üï¿ùKæçÔÆìÜÞÕÛÎØÄÜUÎníùøð@ÕæwçuÚŒìBô àóãá”îºÕïò† ¾Öî%õ&èØß:ÒÊýxã<×T‘úÂýòPíó¯ø òòé6ÐðÝæN÷ð{vø&ÙÏèïþç-î“åÿíØê§öøêËÙ ù©üaòüÞhõ›ÝÓíšíãw§èËêÄû•À;ê>û‘Ùçî§Ù²î¨ çÐ1wà\¤åÛñÃù!úÃ2©ôô rER4ö¼o D! ô˜8Úñhžî)W# Êo].,Ð?`tZ>¼ê1Ò9$3ÞIß68e7‰MUQ¢' <åZV&WíEw-ÕXg6¨!XS+ÎM‚%c:÷-¦%½hg?¦ý/0›íÊþs5Ÿ ÿ {övø¿é)(ž´]úŽæ1-ÿ…ñÿnàômöÆôþØ×Ž÷â»ÞCß òó?Ì(Þöô¾º½ç†Î:ûÌõ€×Ëç*ðïéaàÊÒŸïÕ béiåäáçù³ Dõ7pµþB], b ø‹ñèò°ïä råŸ÷5ô~ Ìà\ãÍ2:tÏ߯­C ƒõ£ íõ?ò#W ))7óo÷‹03ý˜_Ý Ù ´ýG€ $§öÌ#: ±ñoÿDFäû¯bôóýÒT‡ê#üÒ>éWÑ Òþ§ÜuûÐ ÿó™âèVñ¨ëÌýuõyûÏíÞéì¯ïcùéîä röŽéN7ÝÃð/þGæ§òÖç:â&àk‡ÀÝÖëfúDä–ÛÐ÷9òiæ{è²ò± ÎïEí¯ú!øÃ ð.SõG÷b|ö  ’˜î®}xùeò Äxéû'¯ êXyËä6$ ]òO÷A!D Ñ# Õ ð³ cæÿF’æõt}™åýñù]¢ò¨èïëfÝLšþçôn’ú«â/§ ö ø%ýÓíâªËû.äþe™ü‚þu1¡û|(.^þÃýŠ%Þñ s–>E Hû~9¾0Õá(M'‘.ëõ«Òé²Cýå)|¿ï>#ürÿ¼ ø³öûÛîŒûhõžŠúM{ªñúH‡ôn ÁôJ¶¨ Wú”© ùðïùëýCj øÉÉÛ5$ÇHÙKå!íëãn M÷Cî;÷çìXMŒàào”â¡úÖTϸ wã•öž ßÚÛï( ­ç£Ò†ýcyÂü U×8àáÞ¢öÖ÷ãØvÝ âÃö÷çºÚyùJÔ]ÓÌöÖˆä(î¤å°è×Ù_jûþáäëVì>ð’Ö™ý» ªÕõ'"à¯íGûºÙû4í@úú(úòÝ™3âNþ%î¨ý@ò¡ðÌøóÙ™òÖ!¥ÛkˆÅü1t¥þæþ=&íyìÔ? ô5"OÁ¸2 >ø Î4´ Ç ì ýå\‡HØÜ 0ó˜õýëý°ûêûTñÐ{ èS!d6âc¼!$ðS ¸ó” $&±ü’"L= 'à"4--ºþªt)… ^ ï+ð!öþ6¼‡Žê–•lñ åÒ åâD Äùÿ4x ÏýõõcÖóŒûk¤þ‚ŒÌÿ<o¡ý’“ôéú þ‘ Qæ FøQùUPÔךÿÑ Éþ^ó ªøüêåëZéå:öÈüÂÒ’Û³øèˆåªì‡ï˜Þî•?å·Èàãd ±ä¹âÚï$ñcõeéõBûíñßóþÇõÍÿ¬TûRøµF5÷rû –ø­úz øšÛ w6 ÜóØéGEûtòdüF &áç eýüèô×ï× +û×øÊýuøëWúÇø«èü¤ömó[òóè5øüöžõµôÈð÷Ðôäbý÷rî}í¯ß”ö/Bã=Ú<ý!íáá÷óçÑçÐùõu÷Hç2ôÓ¢ã³êàüªæ>é;âªáè_åÙ7æ³ÚYÿ›ô„ݨáæ•ê¹ózëIñFö%ò~çöc…í5ñ³ùxýrí‚ëûh÷Õý¿ý]ïŽk×îSõÒ‹ü*òûMúà õ£òÚ¹ ™÷Í H =9^±âg 5 † |å ÚJ;ß”ê® ¨Ûq UQ{ ©S öõV‘ßr“ ã v ® â©÷ Ñ Á¬—Ù ”òÚùú ô Ëõõ]tý½ði÷í:ìü×çîÑûÖ÷ð­¤é‰øòŠí5ñàñ½ð®ï¾öìê“ï§åŽç~ú9íyØ ÿîó®Ýë'ûï¤ùDžþéûÔ~ãÀ ª õ`k CýFûª D4œ)2›þGüä†þôý0 ]û¸ùsûïì5õÂüì.å‚Ûþ÷àø­ûëåSîÛBòZåÖé¸ëÎøuö0ë‹ï–÷ùÙöåðrúÌóÅø<õûmôÿ€Øí¦û%ü®ðë÷I ?Xð2ÿµô¶ôÂó3÷þÅð\ýÃÿ8üõÿ% ä¶þ(„fÿXþoü2Ì©ÿ5Oa ¡™ ´ˆ  ó}Ãu t¢ÆYj «'~›u]• ¸Q B°ï¸©Æ› ì <;²4WVèž& öéß ô P¨c쮦ú9úP¹ýkö§þI áöuóM¨÷î÷øûü+öTõfýô¬ñ,ö°ý€ýöGöX*ÿÂñȵqÓúÛ÷¦Õýg+ûþ™§uù•þ>±åOÿèö2•ÿeö&ÿ”þ£ü˜þè) ÿÿ¥÷oýøÁ?þwüïH}i¼ýë C4þÜüU ê QØ…ˆüÞå Ÿöö•¤ˆ÷Žýu'ÿÑþvþ‹üû›*ú÷ø/ÿæëüvôdÿ ølð‰ùTÿÊ÷îÄþ2(÷zò"õèùúËûþ–õOôüºŠ<b¾šüú]S°gfÿùÛL ¾åú a ³Ñ ô* +Ôý7Q gü€æÿQú ןýüüî LXsþàþ¨R:ü(rKM)w²ýBØI,mŽ ÿ6_ úÿ_øÿ £Yû@þß°}Uùâ8ÖþYûGvÿ{úhü`ø¸ÿ:cýÂüó˜ÿ–ô«ø‹ÿ`üý¡úeþqýdúÎýA÷¤ó÷ô¦ú½ó ïô9ônðŒð?ò]ìÈínôð4ð§ó×õEêo÷ÆüÒðéùÐû¥ý…ÿ|ôjúâü8üõ.ÇˈþÔ ^oÿ×µy^ ¿ð]6H?}eŒ€W ÎÙ7 [1• “ ÑÅu ©0ùrìÿè$õøÜÿVÿµþÔüˆ÷æýNüúøúýÙýÞþ÷ýˆý³ù¤ú«@ù÷¸þ¹ýºüán?ÿÞ?‹é›ýAýÿÎYû{ûþú©ûôþÙøwø4üÁûúû>ýóù}ú¥úÏùåýÎøŒøaøÊù†ø°ò¯õ®ôÂô2ò|îKóròÞð¶ð[ðÆò ôøðyñ—øÁô8òu÷‹øDöžó)óXö4û÷û‰ü¼÷xÿÎûŠü¿þì4ým,ýþùøõ¿©ÿê>{vû?þá?kwÃwe\äFýÓþ™þÍ)ý¡WLü'sü_÷´ÿÜ<ü„³ým\rñ—™æ Ób ÔtûÛ dØë¿cjèóRŸc†ÿ ËHÿS{†)6X»B #:KR ÿ ;W ¸ Zb ÕÉ´´4áT ý „t¥ > ÓS³G BhŸþz`éþ f>A©ÿƒ¤üÿ™p´ÿ|bæ½ÿhÿ¬J¼Êcý½ ¹PxÈm·ÿ6 ; we ˆ ¼ A † š å d” ± « í < ¨ + W   Z ‹ ü Ù ±ã K zÏhÁ*8¬±lË4îÿWéüSÿµú±‘ÒÿµþÌþ;þñÿç’þHÿ°þ†û‹þqþüügûªûHýðýSûüqüðý®ü°ûýªýQý¢üý[þGþöùýýMûú ùàûb÷9÷Bú9ù²õwøûäöƒõ÷ÿùÕ÷µ÷½ø»ö£öÉ÷Û÷ ök÷úùì÷õ­øõú÷göQøoø.ø@ø¾÷Èø"ú²úû.ùùÃüüÿúÔúdþÊ*ùëú^’ýhøÐþgØÿ•ýÒÿÍþŠü¬B²ý\þ çü£úûþ›ýüýÀÿìý ý=ÿ›þMþ+hÿÆýøþ¬þºþÂÿžNÿéýNcÿþÄþ9þ†ü:˜Lüüühÿÿ¥üÒúTûmþžý®üøü<ûTùJüÜþ>ý:û ü`ý×ý^û\ùO±Lûzû¼ýØüJÿZü‡û%üÇý¯þûŠüIþ¦üâû/ÿ|þ§úuûÖþ­ÿý‘ûEþµþúúþþûŽýÿüãûüþ–þ£ûý¨þ[ýüCýýÀý›þÃû:þ(ÿµüký‘ÿ¯þ ý—þ–ü7ýß^þ(þÍý¨þ±ÿi7Yüiþ£Êßû>ý¼²ýÏü¤ÿoþüŽþ-þÿ\þ–“ÿéþM‹ þÒü š"ÿÿ¯7!}}7©OyX•¾[ÚÌã¿PrHsûmePÇ“ûx'Ÿ[Þ²ìŸõDTrUÌAÓJØáßsÿ@W‰þgÿtþÚœþ›þÒþaÿ‹øÿùþéÿùþ/ÿïQ|þ’0"cÇ7ÿäÿqì·#Z¦ÿÆÿk–±ÿòþ`ÈÿØÿž®þNÿ¼™ÿöþ'ÿ-†oþkþåþ<ÿFý¹þeþÏýWý-þãþ,ûýÕþËüýýý|þ+ýûûþTý¤ü%þ&ÿ[ýëüSþ×ý¦ýœýžþ˜þàý'ÿöþìþ% ÄþØÿÆý·hþ“ŸKPä½KÞÿÚ  tÒ\k?ÿݵÿÃÃÿ þÙÿ³þ¥þ>ÿÎÿBÿWÿhÿGÿ¡þ~þØÿØþIþ9ÿIÿ+þ­ÿµþáü.þ ÿ^ÿAþ1þ°þþÀü©üèýwþùüü«þdþéüæû¿ü¡ý—ýQþ¤ü§ûý¹ü[úRüHü¸ûtýdûû5üáüBûÜù5þcürùóú·ûáúcúûîúmûEürûûü ûËúûôûñú:ûˆüúÑûoþˆûû‡þ!ÿýýeý+ÿ íý ÿÝPÿ%ECN²ë·d°šýz¶ü²™,²y–åb¢i. ³-»„Œ£93Kެ„Ÿ ‚ˆüh8>ÝBó *n[ÞmÙ¢L= Ða•øŽ\Çv›Ä›ÿý  G”f™öx#ÒyOTÿ2ÿ½ÿ#ÿìþ/Žþ£ýéþfþ¶ý©þuþìý±þ¹ýöüþlþkýäý­ý;ý þ@þ ýsþ%þ¸ýõýþÜþïýãý©ÿÖþ(ÿ´Bÿ^ÿ"ÁòÄØ îÅ«ÿa¡û*Dñ¶UZ6~6õ‹¬Ý8ö¢56˜’'€ÿ2`ÕŸã<éy=a•öeîÔê ¶¹ˆ6i®µ;þUÆFLJ¾c¼_?_ûê57Ç]I[jMŸÿ BÅÿ£ÿ!Æÿÿhÿ“ÿpÿ6ÿáþ)ÿ†ÿzþHþ…ÿ/ÿ¡þÄþTÿÿ.ÿuþÿ‘ÿFþþèþjþÏþKÿþvýÿgþ«ýàþDþ˜þ×þ¯þÇþŸþ®þ³þ2ÿXÿ(ÿëÿaW_Âÿ'ß~²GÐÃPPyœ! ž9ùJ覒8ljìQ#Ùk“vyÃEÈK•ö©¹CìÀ3ˆ™9Bxð©3£ã?Edñ¸‰·æý÷ìl‚ÁÄi^U&úÖ4_´'™¤5Ÿ…ÄÿŸÿ“¯ñÿ*ôÿ?†—ÿa™ÿÔÿºÿ­ÿ ªÿzÿ¿ÿ »ÿØÿEŠÿNÿÄÿ£ÿkÿ'Ùÿwÿ‹ÿ£ÿ¹ÿËÿ¨ÿÿÿçÿ‚ÿ¾þìþŽÿÏÿÍÿ­ÿIc›ÿOÿËÿÙÿúÿúÿr„"Ëÿ™˜íÿxÞ#_þºÞ0z®ø2üÈC2ب“kâÿÞÿàÿÿÿöÿêÿAñÿ¹ÿ•ÿµÿcÿAÿ‰ÿÇÿgÿiÿÒÿlÿÈþÿÿ ÿçþÿ.ÿÿDÿeÿÿ’ÿYÿ¥ÿ ½ÿóÿ;ðÿÍÿ²ÿ£ÿÒÿÉÿ‡ÿ„ÿÐÿÑÿ ÿÿCÿ²þçþaÿ!ÿìþÐþØþ:ÿŒÿ?ÿÿùþ2ÿYÿ ÿ¢ÿ`ÿ’ÿÿwÿÆÿ[ÿòþÿþéþÿöþ«þþ5þnþîþ“þhþ¤þyþ2þþðý#þwþ4þþþ÷ýþ,þþfý„ýýÎý…þûý‡ý¸ý‹þ&þØý<þJþ+þþšþÐþ‹þ™þ”þ™þ¶þ«þþyþ“þ–þÎþòþüþÖþ ÿAÿiÿyÿYÿnÿÿÿ>ÿ ÿQÿÿ ÿ ÿEÿ=ÿ9ÿdÿ”ÿSÿ[ÿvÿ¸ÿŒÿ¬ÿ¨ÿuÿ~ÿaÿŒÿ6ÿÿ:ÿ2ÿ;ÿìþAÿ4ÿÿÿÿÿðþLÿTÿJÿ ÿ&ÿMÿ ÿúþSÿ^ÿ8ÿ ÿÿ=ÿ>ÿÿñþÿÿ#ÿ]ÿÿeÿfÿyÿ“ÿˆÿwÿ+ÿPÿ<ÿ+ÿÿaÿ;ÿzÿoÿ‹ÿ{ÿbÿœÿ§ÿúÿ#62]w`PNŠœ˜„ÂÇ¥î ÷ 5Â,1îÎQq7+7T:VuAqN0F=ë.>&L=*9?1( dC'`ŒbcM…P%c@Ü÷ E2÷èÊÔq¯¥ê÷ááíåëÿ  ×t¢š0X£Ãù½}†<MyNK55:3I˜g^[‡T¥vÿÛEM5*Z<"ÕÙ?#ë%OŠ"Y&#/ù3";Yø>yE âDsV3gaßÿ¢°²äÛŽØÓýÑž‡{gŸéÎÝü 1€^°¼¢×àñ5ûûáÒ* "þ.&.@vYA>åÜ×ßÓ©°baƒV_¼vV¢w„l=H621¾ÿÌÿÍÿÊÿ†ÿ»ÿ¦ÿXÿCÿXÿ^ÿnÿQÿnÿqÿ}ÿ•ÿoÿÿ=ÿ5ÿ&ÿ_ÿ"ÿÿùþÿ!ÿÿíþúþàþÿþþÿ$ÿÿ>ÿ<ÿ2ÿ}ÿ…ÿ}ÿrÿžÿŸÿ—ÿßÿ 4Mg‡ƒžgt¤—„‰~š£¿ð ÿ% =N 6þ݉¶ÄŒl`‡6YQ5ûÿäÿäÿ¢ÿmÿ?ÿNÿÿâþáþ×þñþµþ·þÑþ|þ‚þíþ¸þ¦þqþôþïþÍþ$ÿFÿTÿdÿxÿ_ÿDÿBÿˆÿ‘ÿ§ÿÄÿßÿÿÿâÿõÿÂÿãÿ$Uüÿ?LISTDINFOIART Jörg GrafICOP(c) 1999 by Jörg GrafICRD22/6/99DISPKDEiconifyvtwm-5.4.7/contrib/vtwmrc/sounds/whoosh2.wav0100664000015300001300000006223410237645271017736 0ustar callumfidRIFF”dWAVEfmt "VD¬data dþÿüÿõÿÜÿ’혓÷ë‘FEýè ®n,Ôÿ©ÿÇÿ›ÿtÿÿÿùþ˜þ•þeþÉýþÐý¯ýËý¼ýáýãý þþaþ2þ4þ„þþ~þ‡þ¨þÿÿmÿÏÿÒÿ Kœäž¨á'Šä؉†ZK˜‡´=> a³hH"#Û‹ÌCGIpžKÆ}+CL„=y™}¥Ç¾¨º-‰–o"ÂÿÁÿÀÿ ÿÿÿäþXÿÉÿ)ÿÿÇÿ^ÿÿ)ÿaÿcÿOÿUÿüþŽþEÿ¢ÿ*ÿ§ÿuÿÿâÿÄÿØÿÍÿJÿŽÿÝÿÚÿÝÿa¯ÿaÿUŽÿ†ÿÈÿjÿ5ÿ*ÿ%6Až „ôÝãŠ^Lc³æ´|K¬KùŒ˜ƒí·¬Nìêý âÿ¿þõýWýŸü ýOü­ûüìûü.ürüßûtü/ýÁücýJüßüýVýmýRýÄýþ˜ýþ†þ2ÿÃÿ×ÿÇöÿæ1ëµBí÷r¢X:i<a-HmRùB#*»BjâñÿÊÿÀÿ]þ7þ(ÿþþü•ýôüÕýüõùzûdúõú®ùàù/û€ùðùúçúÇú¬ú úŽú¬û€ûôû1û^üŸýÝþdþ«þpÿÇÿ–ÿìëâ3#½| ò£±} P¡‰5–IS­]æráö„¦mתÿüþPþÊÿEÿ¦ýBþ5ýÿüý‚üBýéüýòüpýlýxýrü ýyý¹ü ýêýNþ×ý þmþëþŒÿâÿ(ÿdÿ‡ýÎÿØÿîÊÿGnîF˜Õor¤åËÿ]¼þˆn —?%óöÿ¼57»ÒO>xø¯­ÿ‚yÿÚÿ;þƒþúüäÿÿgþžÿèý>þïþÔ4þjÿãÿ¾þ3ÿ‘ÿMÿÃþYÿ}þrþ1ýþ¶þtþéÿ©þ<ÿÛþ§þbþÉþíýÒý9þ_þóýwýØþÒþÌü‚ý$ü•ýFþƒûñü^þŒý8ýÄþWýÿªÿ3ÿ}ÿ¢ÿéŒÚçÍ“S¿†/Úÿ)OÿÆÿ€ý•ÿØ ÿšþmþ4ÿ5ÿþwÿ“ÿuùþFÿsj2ÿƒžœÿEAÿsÿ þAý½þ9üeüúý[þäüëýþM/ÿ¼þgþÐÿþœáÿßÿþÿdþçÿvÿÿ„þèÀ|’¬”Bþmø3þ:Èÿmÿ‰öÿeÿ2ÿýŸ²þ ýªÿ½ÿ½ÿùýÿOÿ!þ(ÿ%þqýÄþpþþ¹üìþ]þü?ýðüØýåüÏü8üýoþ_ýÇüÓü-ÿ'þ{ý·ýYÿÒþŸþCÿþÈtÝÿÿùäþ·VoŒQ(o–dŲ€1«åro}¿ºß I⟃þ¼0þýGý’ý–ý6ÿªþ§úêýÎüvýûHüƒû^üÃú+û}ý÷ü(ý£û™ÿwþÿýöýðÿ{ÿbVÿ³ÿ°†âÁ޹‰Õ¼=S.pz„\4<~¢R…ÿÐÿ%0ÒÿÊÈ1Ìïl2}ð´Ðþ„±þÐlÛý´þÄÿܤýPÿtÿWþþïþÕþÏþõþ¡ÿÅ[<qÃýÔÿ>;ÿ÷ÿ*þŒÿ´IüÕ¥ÿ‚Ëÿ~£¸ˆþ»ÿ:ÊÿGÿU6ÿç’ÿ¢¹þ3‹3¨ÿ¬&Êÿ ;ƒ÷ÿÀÿöÑ$9ÿlNs´þþ0þVû>xÿrþöý4þtÿAþöüÐÿS}~Ÿ[’4!/ UURï–RÎJ(+ÿØåZ´É|åL|­.µÿãÿíÿ»ûÄþÜû‰ý°úãü÷ûIù ûúbü5ýþŽùƒþ:ý`ü7û{ûûüÓ÷øø#úªýúüLý}üÏüîýÇþ›ÿ-þÄÿ ÿþl¦½ÿ|âÁ‡î)œtFÞr ~9l(*^y¤ÿ¬%Wý[Õý¨ürûý¤üÙúäûµùlú ü¼ù­øÜøÅù®ùú2øÅ÷Òû°þ¦úNúöûøþŽý’üCýiþþÿ"ÊG hÒ 'ª …BóŸg÷”ƒîÍÖ4ˆÈÂóqX~Ý…;Ðÿ{ÿhþ]þÓÿAþ'þòý…ýqýlýçú–üðütübü¡ý¢ÿIüxüíýøªþ,ýzÿQÿeŸþhÿEÿ¼²Áÿ^ÿÄÿ«˜z˜ ƒqžþ~Aµý颿ˆý nÒþëÿß•(¨ýÜwªþÉÿâÿqsLüƒvîýdäÿ§UýÜÿbÿ]Lú†ûÜþ=<þ‚‚Ž©ÿ#ÿÿß¿Yÿâþfÿpïÿ>ãþ•£¢ü¼ýøÿùºýÔþÑüÙý›·ý×\‡ÿ¦ûfþiýä¥ÿõˆ•Žþ ÉEû©ý„ýsüÍý€þ$r3þu¯ÿ4×û^Xþýüü0ípÜcüwÿ$ÿÛõwÿÏ_¦E ~)ÿ5äúAwÉ´±ns²ûäþýü]´ þýU0þÛþû ú‹ü4ýú)üaøîüvÿPü÷Rý}cbø;ü_úPˆüïùAþ6“¿ý3ÿ"™Áÿ?ÿ‡þæI1éúqÄþ üm>º;)û˜¦}ü?þ6Äÿÿápþ¹òÿKAñ§ýaü¤ãsÿý<hý³ÿ›þ?üÌù/ýNþ]ÿŒýþ8ýÿ†þ5þHÿÿ¥ûWú ýý\ý`þÑÿ§ûPÿ–ûÆÿ-ûûþ,ü2ÿ;€ûsüF¦û¿ý½ÿOÿÒýHŒü[ÿõþþÝþÕþA‘ýÑø§ýw$Jþ”L‹ÿZÿåÿÊýþïüdûÌùÈý¯ý ý¸èîDþKœ‹ýêüÖ©®ÿíèžx¤ÀnãÒÿå€@‰þI@Í»^çäÝüDa"Íúý²ýËÿäúFüÇþrºQÿ^üçûÿÞÿq=þ€Hÿ @ý¥þaþüÏþŽžC«_Ãÿr𽝳ÿR³ü¬ü~C†ÿ(ÿE¨ÿÓþý›ër‚¤ý›¢HÿÚ#‘‘þláþOþxÿ!·=ý¨úkþi§ùÇýÃÿÙþ ùü@ÕüáÿœÄ"Aþ^ó.´Bÿ5s¤ÿ‚ú°}›Íý·üzM&úDUÈûnûšlû­ø]ÿ©õÿòþ*ÿl©¹ÿSûýý,/ýlú£úÐ0†þmý»þhüýCþeÿËügø_ûIMÿløxørþpûNýùéý¸hÿRú±üóý¯ý/#þ—üîüŠþ×Íù¦2þWþžüVþXÿÿlü?LýMÿ[ýäxÿŸ.…O޽mœÿÆ/:°ÿs®îMÇBzþËl \þ>Töûiü„üifþ5ûõý+ÿ ú-þ§ÿ}ÿþ”ýÛý%„úºüØûH¿ú2þŒÿÀÀ©ükûêþ†ûÛùìú‚ûWþÉüá¢AÿãÜÿ7û!úÉüjý)ûÞû0µ€þ—üÒ?šý¬þ¯ûükýküAü´ýþþÉÁþ;ªªùþñúRÖÿ•ɤ֬:uèøÛ§Øÿ²ûÈÿ¯üsÿ‰ûÿÿ7ÿ±Åûü‰ýôúßöNüóÿt¹þEõeœõÿàúUùªþûû ÿlóJû¬¼ý‰øú’M-þ öÚüfH\þWÿö|þÐüÙý”ÿÊ}ýcøú÷?ü–øÅöM÷þa¹iü8ÉXèø,ýáþçúGù™Ñ w 4‚6y •™ýü3züTö$ûþzýý»þk.þu9ûíúçýeÆý-ûˆû´ôÉû.û}~ûäûÍød!ÿ]üÍýékÿÖüNýP¥RýÑøGyèý = ˆÿ=å („ø˜° —“ý y [5QýYÞ¤’ýüüÌ•†ÿùùÈþ¿|JùåŽ6ÿ)à­}þSÇÿû¸ÿh šý½þmäýÎûß+¢ÿ³þ¤þõýâý~ÒÿÙÿÛù-ùØýáû.ùàü§û…üý“öyýùAÿú½þ>ûs€æÿáý_/»ö®Øãs¢n, ™2cæü%C¾Ì½ü+ÄúÃùú ÷˜öbüÚüüˆú'ùŠ÷þùøýyþ™þWú…þqý¼ýIðfÀ×MÓ‚-+þþeÿÊÿIÆÿMf+óþCÈûÁùWûôõöøùlýë÷5ù»üËE÷$ù‹ÿ+þûuüìÅéûœúg|ÿJû‚ÿ¹þÑüøúÿ§þ»ú{ý2þÿóýšþzŸÿAÐýÆpûÎó1÷Föœÿ¨5øÄ ú3V}ÿ=5žœÿëE×üäûZ®1ù¾× 4ä9]µ9ü¡&`hþ\ÿùBÑm%½þRü8ûùûÊýfþüúLù–ùb®ý#ý=ü›múý]üI¸ýBüÊø€Æúùúö÷û÷—Yúgú»û}ýßýñöÍü·ùuú/ýoøýð+ûtùâÂ=E×ü!3Ƀ·çÈÿô¶ÿ@†N¼ó4 ÈñÝæ–çý$ûGü“þû“ýåQP úpýÍý@ü¦BþfùöþoýÇÿAúÓéÃø¢ûH÷´ø"û®þHøºöhüßý þëþÍûLÉ –óRü„Šýý½÷# ¶ÿïö<‚»ÿÉûÊý—-ÿ¦Fÿ®¿mPÿSü€ÿس`ûbüÇû £oþ¾õížüþX‰þ˜ùˆ÷ÉÿÀþ¼øÉüüÝüöü˜  ë ûÒÆ’ûÏý–þ(ÿ×÷üüâúý2øÿ¨"ýa°3ý ` A¯þîöÁcåþ³ÿ¬ ú”ûŠÿT”ëÿYù{›ü5÷lý¦þ®È÷lþœ @¯ú¶´ cËü£ùq?þèþé;lYÿ`»ýsøgùÚùËÌÿ;ÿï6û?ÿ`:{’’ÿw)\ T €§ §ÐIüíû)b®­žE-áÿJÿÄÃÿƒgûvúŸ\šýdà`ÿþ‡þþ=üOû5ûø÷ÇüdüÁö û2ü'ú|úWùUúÆýú·ø"õüüóú‹ú… W æ ƒ’Ð/Üÿ¿O' 7ì{ ë¾ËÀvnäýÔÓüÂûÀÿÓÍ×p þ{ý·ôùC]ýùTú|ú™ÿ/úÜû¤ù<þõ«øNü²ý<òrù÷Õüìöù§ÿG ü¢ý±nûpü{ÿiùÙÿ¦A½ð ôoÍ –ÿ"фȩýýkö;îÿ^+¯`…þÈökøôüùòŸþ[¢ûmû×úý‰—ùÄ„‚µk ¸§ " N»& = M)°æÊý‡ÿBGËÿoü7ÿú#¨ýtÿþóÙþÿøøø›ö¶ü™úäö ÿÚù/­ýÑø+ø@üÑúÿõ2ìûÿLÿ¥ýWû}ûãÔ+•}ÇýœZýúªüüIü‡úçÿÎý*kýõünÿÍúåùAúYýáþÂ÷)þ°ùÿqýÚþ¥Èïö&Ú‘y<ŸÌùñøb6þÇú«a÷ÉK0üÿßõµú¦ýûXüÿ>ýéö2ü`ƱÔþ}+ÿø÷¥ÿ0ý¢Q ú·s »þÛ>U2ãøŸý$hãúÿý—» “Øþ«ý48üÛù€ÿÃÿSô‹õÜK þÂû¢ûJ ¹êøéÖFù¢ý(ö ôû¹ÿctTúƒþ‡œ$`õIþà±úðô”±û£ýþpýüéù‰ ØùæüìüýªýéúÎù–õçøI€Ð®äý‰ûÏýûëûþvÿ[ŽçùÝøXkË÷õ±þD`Dœwýöý´÷Üù¦€è þ3þ{ýÿ)óý`û¥vwÿ_PÂÈ]¿ìýý¤>@¬^üð(ÍXûGøÀà¡ù ûR„ÍQ÷ýƒó€u &tŒ§vÿ¼üLý;ÿÅøïùü.û&öFú†þÈôDôòòœùIû«ùÍööUû^þDõ]ø—ûKþ÷ýnõLý {ý!ü¨ûü ®õ´ÿ/Aþή¦©N8j ò  ` ïúúOæý9ûMû?»ý´ùŒúS ûÚúsþoüÈþmòÿ4þö} Ù)BüXþç)þ|ù§uüÀüÎÿŠ¡ÿìýéú´þñ–ýÝ8À‘ùúèH30éÿñXü þÊ~‡ü-ùÃü¡øÇûVþVÿ,ü†áü¡ùÃþ¯ÿKýÞþ·ÿj÷fö à r73û„û;îGûÅs^„þÑ8œœ„ðóïûãcúoð¿õRöùœõMü]ú‰üîóRø_ùïþ‡þõ÷×ò¯4ývûÙîœÿÏø0û - ü÷ö¯¥Pùçü# W”k ø‚ù]רø¬ú©úŒ>,ü´ý $±[þôÖdüüùeœ¹w´SûsûºI…ý‚™ý÷Mß>èýÅýœüÕ©ÇR¥ÿvý{øÒ\ûå‹¶ÿèå}þØøYúeÿùúv÷tú†þšùnÿRþHøð–õ ý8üÉñæñÛ-ûÖöhú Ù ¿þnþ·W Âòí 6 ² fN• Ôþ´ ³QuüÿYòÀ«Zý&úsøéý§CüÀýA…øzù3Y}ý%ÿòýû]ûùvýWù¯þ¹û¨ü ÷tõ ÷oøú›ó„ùñòéò©ôªù¬öÿûåü’üiüúõæúÅ2ê(VÚ`$¾šÎ[Yx"Ff ¯ b\´xð‡ Ç.ífÿŒüøú^mÿ© õÈöi’ö\÷lúkCF¬û…ùS­ùùõõú=ÿÀ÷©ù òý!ý¶ÿëõjúB"åü)ù‚ô à »ü¤þPW m' ¿šo  M ùý…O ŒË€ïhú¼ýKT )ÿdùûý¨þÉüëþŸõ¿ù÷aõ õ´©ÿjõ‚õîó‰Ìÿ{÷=ûZúÍýÄöõiú×ÿ\žþJúòüßÄ÷ùzùwü üòÁüÀ¿¤üã÷8@ Ftÿ(r³ý¥¦ †ÝüÆ KMüÞüócìþ^Îëéý+ýÆúbjgû»ûtø:÷÷xÈ…ýHýc‘ýû4ýü6qòˆû©—³ó|üÿl¤÷¾ûýÎþDj ŠÜó ´ »¡úïóÞû¨þ8æùïøèÐü2£þÿùH»èqû£ýRÔþ3üµöÿžûÁõº÷ÇãfýÅþžûÃú‹úãþtý ü*õzõšúrø.ûnüI÷öö¦¼¨ú¶öb ùý¸þ2a¼ù þVÅ2ˆ Ò Û@auïJÉ,¶G –ý¯ûíã]_ýÎþ†ü`zîZñ)þ,ø ðQñÍôæõÁõxñNõúô÷GðœàUðÊïJè_íœù«öv÷Šù“ô‰¿ÿü¾ÿOøøjý¸ùÞûþ£¡ÿŠþ @s D ÛÊF Yo·Ê V fé±Ê  ÿI†P°ú< _^ö`û+â`ù¸ý2üÿäþèùŒû©X ÿû©ÿ“ÿ5ø”ñÍôXÿóùÔûwøÏü(ÿÚûjø4÷Lú—ùgó¼óµ÷àöý(ø¯ù ô÷0öªú;œÿ7ø³û?ý·þœö{øŸn ½ýQ÷’ú™ ÷ù#Õ þõøsÇ} Ò Â — á zÿŽ-s/ü}‡ú\dþ¼& ÊÉ  R  õY ¢¢± « ^ @¼‚P xÉ¡v°ýI"î!„Âm}û‚ dýÚþ‚ù7ùíû|ûÍôù,HÕü9û‡ù`õÁþÕúDøÑò üúO÷­è£ï•ÿŒôöï?ídùDûzïÄïOüÒø÷”÷¦ÿEQýÅóÇûÃ’*÷yû" Ùÿµç Š ¾8A %þ z Y@S² e +úý‰‰ U38 ¦Q4˜$ŸÎüú2>xáýéûæûþ] Ôü$þ¯×VþµüìòŠ÷iþ’÷öî}ôŸùãôÏõ ô†ûø”ôµó0ô«ö‚ôÜñÚøÚÿ—ò¬ïÚúÕú_ønðÔòIúþÈ÷1òÉý&Bû¦ûÿxÀ÷«9€_ O0¶/ £Ërø¼é 3ËýÑüB ±ñý±ÿk.L÷Üú¹oËükñ5Ýÿeÿ:ù%1ü6àð„óoe[³ýkøÈƒúüzÿ&º À—¶cÇþ}u† rüÀôxø@†üâõ ñogd÷£ðî÷PÐü•ðgéS÷Vþ»ûXêLïI& (bóß÷hDü´úðí1ü@åÿü€ÿžþ² U õþãõ5±k0-þƒ=æ´FÃkúûÃÔÜ  ¡ p Î ê » g † Q DRL: ÌY ; & ;®üçü òî ý–ýñ—øSöùpûÃöÿû_ö ÷í»ö”ýÅìŽõeù ÷„ò‰ê<ôãõÃðiç%éäyö¤þý>`ùìûxÿíÿÙü ý|[þýçagÿû¹.ž úèš 9ÿú’¼ÿh• õ ˆ ÿ7þçùÜÝ iùõúÓý¸ÿ`‘ûõòѼ‚‚ÿHÑ ]õšª >ø¡'úbNüÅÈ`' Ó~Ŭ jô6õŠýu}ø`ï¿ñ"ñ—ö»ëäòuÿ¡ýöfûÒ ¬t_= @yJÛQ ¦’0ûüçùîþËû?ó;ùi¢þÚõþD uù-ôÕþ– þ0ù!øâ¯·°rÈR÷Ÿ÷\ôäöý8·YÈ Nø¡i òûŸþ‰ û ²ûvúݺ c vGþù â ar¾ÿWÃÿVF÷¸´¼ ‘úv?© ‚!Y П56ýîk & «{ü$ÿ†ú9ú¹ýõiÿk¦ÿvýÌ“sÞ öo"ÿÿÿ‘óÞënlq÷¦øÿøïƒ÷ ü òáù4I— Þùãÿ€ûxïó÷Äýhòú¹÷ ø¦þöÚî\ñPîú7øQôCýÜüËÏmøÁõD)óå÷)ùÄù-þó÷ióz O ãÿ5ùUóv²{© u°ãÿ>¤¶1üÌTþÚ œ ñ1aMÿ‹ùþþRùt€‚ ünÿ"H¼þëùô÷BøØú@€ | 7ÿÔú–ýšúò o; Ý ! ¬‡wüáõxö ûnôÝò"ðœôàúžçËíNú¢ñ†é†äKê®ø:õÍÛšáÒú=÷,ðÞèŽöBø¬Â«> üí›êBñ°ã ñ÷òèAúøû)ø1OÕ -/ïIî…òƒì7ðèþ—ˆu–; ©þüì0òàöÙûu -ã\ 'œÿk ± ± ž ® k¢ŠA µ Ð Ëo]ükÌ8¿•ñ‰ù´òú`ýEù þQø³ ü 9çñ<ðÿ5ü3ì‹ï+þžrM éÍCíýVûÁ ÿ´ù—úqkü_þ{ôôªÛ~ë’íúbþ]÷øÌûÈòYó3òdö¤òòWë™îvÿþHþ–ø Ö÷ßæXéŸù°ý÷Úô-[~ óÙ WàùlÑüeû¿üÄŽËw i É”‘¡´Å J P }:BŒ €]œ€µ Œûñ%þ;ûZÚ÷‰üî1þùeüúb÷òò±è§êþù2ïgÿQüqûÊ óÃûƒõ[ôd†Mü<ö«÷‘ÿOû´ü¦ïrúîÃøxó±÷.ü ó€à4ôbéäÙïYþãþNÊòù=üÖçž8 ðH± bÕ!.]û˜ù˜ûü†òlœáô +Ã8 ’µ eÿ6úþüŠÑ‹yù ^ Õo›ùQò2 † ÉLNœ4øHúü>Ö;ÿ*{õ 1õæùÞôhü™êFôR 1îôþþtåcX M<o ‰ºñ÷tþºûï÷‘åÆñºï·é§ãó‡óéö ìÒîTñùå[ñy÷Æï˜õ)Òÿvð«î¨ðìøqù›ê/î&^ú!úñ [ÎòPï’¯û3p‘ùàK»Ø(¸ª’úˆþ¢Ÿ g l„ à[-Ïæ­øÚü*Tó ‘?œý8s4 „×Ê V½ r© ó¢ñE {ÙïÍýúò©õ‰¥ûÁ¹z 3jx fúÃþHö’ÿpÿBø”íµýêýôúcóRïïåžì0ë›ñªò¹ûàø”í†íˆöñÆíIëtôïõóÇòMý²öù]í$ê!øÉô|ëñí_÷ñrËÿ$ýð\ðŠ÷ÿeUÿÿ @þé £ 8Õo IdÚ žÃ6 MÜ—ic .kfœ¥õ(þ`üžäecJ?÷,ø&÷`ôÎç¸ù(ôïäËõÂüý÷  ±lôiÀþ¡ù0ë)õ ë)Ô ÐŸuò¨ûHõwý¾þÔþsõýòãü¸=kÿ ÿñ ± „z ŸÏ &Tÿ_8*Yùü¹üõÿ%l4ûÿxEû? gþû° eÿÑý;ø ˜6Œžý R ôóüq6YœÄüÚ <ÿ!ß4ôh O³øUï¨÷òöNð$öÿ× ç Kdøµøµ d"Ƀ^úÒ ‡ /ÊRª.Ý^Èݦó0üÒü^oŒþN»(ýêpô@î8þ¬ôïîºþbÿ6û¦ù¥ðÜõÖìJç»ãÑíñ›èõ’ù“öGH÷Îü]›ø÷vóÄýë"ü°ñÔ­ñIëüJÔü,ûOï F Š Ð¥{HýŠþ%Tó›öo”ŸýåþÛÿøø'êôî¢éÒúc÷€îÖô¬õ±ø„úýeûLúÃßùƒÿ*SÿÑ7 Ð † Áó3õrüp÷ Ð V‡a \u hl¬Ýòýô² ¢R ã Þï8 nýþ ûòê[úðòþòømü ûõü%þ7êLõ,ðhéLí>iûVüñêËí»ò ÷èøÿ0øøôýöÿµú Ý´J[ xÌGókï=øÁö€÷ M{ ^ÿu# D®•úl€ÿóùñÀáü € Šþšøý ÿá÷Oõ)ïCð~ýû‡øðIøÇÿ¥4 ó ŒóeÿkŒË©D/ç "Ùè û|ø°ü òØòsî˜v ”ýhþZ·ö‹ÿ8 ©ôôEýø †žúÐó ÅýÑ ªkþªñühRû­<dðîóæñê’ñ7×ákÔNä¶é|þ òzòÑ ¯ÿ/ýýúRàõáZåÎû§èõæŠþøƒŠz$ÿ{öï° °!&1þê0í¥ïÐëåÉõ\üváBæ`ùþôþ†söT 9 W— ã 8kýwø†ý‚ù„¢ý‚ôTxµýý Üï¸óG=ëçñ\ö¤öžú¶ û  Ð mÝ>Þ…úþPíWÿçÑLö û¢ gJÿëòXòðî,ûið¢R )ó%ú Wæ œ @ 4¹s? ¥øÖýýGù,_rÝûdÊ÷@¥ þ.ý•ðöGûPôöû½Õøúä›îèðàîõÛ÷Nú,ßúNô½ø` Ôø ñ C ôûj([ öõ;— 8n ƒîýž:ðEætåqù[ñSòKòKðv7 Wÿß§áIî¥òðöùcïìÿ™ ¯¢%˜ çI¨û¢ö±÷ g Dõ‘òmóªú@þ¶ôžêZîcï”íâöûòû½uü' g×õˆïn. åñZí› §ö,  Yr÷-. aÚþ<€±é§ö"ùdôüÅÀêÜ Ó°v‚3úhùP—àQÞþ÷¹ä]çí~åçã„þëóS¶"_[÷G l ñþdhw lú'øŽëðà#üîõ6ô{jüªæøŽ¤êBвým¨ ×ÿ‘êÛÝñÚñîàâ8ámÍ8Æîž÷ßHÝâ %û6<ç#›8SC ; LþÌíÃØWØ7æýÛ“áMâÇáä› =.ã#â~ ÕÊ “2úñù, ÿÔé3êYóÎù–÷&øgx š ¼üo ™V £B-Ó-fûä›é®óÙùèÆ£Ë1ówõá*“ ‘ìÐò¨ó8 ö´ú1 »nHT,Ö¤u=wC 1ûÚ¿þþfû¦» Ý. ¶õ0ÿeùø—Qòèòò­ðÃøþ7îNý»÷ÿð ØùTD³&N#éøÿî‹§âû?ìûÿmè ö˜ïÙîl¾  -è²úñZùñüßÄùvæò’üä¿áâô$ÒÈG ’ý~øjík*$ èÙTä°€ðsù»7ÁðRþ¡Á Ÿþyÿ&öÕ> „ÿ.ùåoÿÅê€òòÍçóæüð§«ñ7þ몟b’&|CrÑUL h /ôPö²ã,Ü>ÔYá¦ñàæo÷HõõŠÿ±ý¬óôøÊøÉûE ý*ìã OF IüÐÿ|ÿüݽì¤ê#š2äpäðÎ ðû‹ôô<ôJîæ¦õû Dõhÿéúÿþ^nÿ¯ƒÆ„üèû)øÓ±õâùUÃóùö§ùaþ"Ý;'µ •^‰ù eÇ÷bïõáàjÚ|îØôÚëCóŽìoïÿ ‚˜ CBõü=þtþ =Á~%Ç †õ« h;à׿+ûœë¯þ' ¡ *3“3ùP úæ²ýô‚öHð‹ZïÛíöè/éò;óYîS©;œûîøï .Çmýõx ~# #ÒL ½©ùžíæønõ_ú»ó¿ïÔð*÷Þô"þý ÿd §Òõbú]û˜èådñDðÌûªÿŒþr…ðÔïkýØø8÷ ó þ “C‡ŽÀ ùøø£ò»îòÎì‹íãÆó‚êäøZåïîÃì0õ@ÿü«Õß&óîä?ø%éeí7èÜž!<YƒpÇ)ù³þäD"4' á uøô*üí°ñ§ï ø]˜ãáÊñÆënöÌ(Ñáÿ› e Àû_ ²‘ó"êúÿ&ó×ó"öwZŸÚìÖêÑåéÙý×Éénñ èáôíþ¢üBîL ‘‚qèê ã$ùÛèåãÔû‡ ñÔóÒ H&°)å›.Æ*ÕüýìöæÞkñ1øŸïþý5¿ü Êÿï÷q¸ùðövrlü û.ýì3Ãþ öcó¬×êóDòJþöö %÷ÆðÌÿ©ÿ–ùìíùxô+¤#° Cˆ< Ê5$Ê%‘$Q´)s+ð@üSðØì*ó1/÷·ÙϱÜíÔÓÊ5Õ;Å4Ó<¼fÂQÓ¢ÜþÔïжϧÄÈ:ê÷ì=èBñSJ•÷Zõ"_ ÁR!@Ç4â$V(Ù-sîîÙä †ùÒŸà’éçwßæ½ç§Ü. ¶üÿý'iõ  0ff šü4î°ô©ñgá¸ÙTçbíîøéü'œ ú ¡ $&-N(ä :ÿ&D Ø K=êÚÙ.çVúOÓ ÑháøŸ 6ì¹ûó–JkV)°.ê7Ë)gЃ®ûXþýòüïºÐ÷ë¦èëíõßÀÚ¿â!þ­ |þEÿþYðdí òïé&ãbïnýÉô…îãýí6ù¯³Øî‡DûÝ:² æ*ćÐoÌ•ÈNÄŒÀlΖíûç„»0CQDD'B?Rð]= ,uA6§@h!¤¼z2ÅâÿÜàÀÖ®ÞËèÅ]Ϭùø;ó¨Ê¡¤Aî’êÅÛ·Ù=ø9çØæÈäê©´êôš 18˜ùå~ 1÷tö¤',ö ùüT ^ì~Z n×ó´òçö|ݺÕæØðaîzë}ýyë#ë(øÅ ¸ k*€àùÊ!Œr0>*î?Zw$R -mädÔvïéê ßÙóè?ùÖê»õlçÃö㸠.¦qä$Õ7`Gü|úõ Þökû ÿNw˜8úGùB ú÷> ™ý?ç÷ã³õÙëŒýQû¨å#î|ä™èzÝûôbáþÑÒé_öäÙÿ(!f®Cú$ˆ5ì+©090 Ú» Åÿ•áÊßùÖaáDÙÒ®à•ÒÆÖ1ÈZÛØÕîÍèßLÒLÏ íTԧȰÊéâVÏñÜ«ÚÊü>á]ÐUÓ…ätøÑè;ÙîôåcúK_)l0‰"Í"m»##/e?@5– ÛJ5gBO4"&5ÜU^.8.M1ü.S?Ew1,Ì&¥#Ó‹$x/†Ÿ` \°ô¨ëä§ç¦ßõüæíºöÿÓOØXë®Þ8ï×ï!åðÐÜ÷ýÿ±Þ&ÜÛâÝ\Ù=ݹÊçÛùƒïÝ™åŸáèõâöùƒÎQI!ÒH¦ý½.%#ú$®%0£,#gå_!þÕ1Ù{˜Ó Ôÿ¨’,¥ öö„ìp 5 È«ölåø€ûíñâŒáGó‡ýêñçiç½þOÿBØÅÖÝÞóÐèµÔ…âZµ úÉØ]ÿJ áó)íB Ðãðíú‡Š äèòßúêzòAöeøèð îdY íû m Áô&S 3~*md‚ xñoøîý²Ù º÷íï'ýEØ$ýïÿõVº :ë3ë «õAêÚâkàwÿÅñµæ—ñ£Ý ê_ë ôÀÑøq‡áÉMõ_õò­òó¡éÿÿï‹îTçíðQç:ýâí’õgò¥¢ gúÓà åz88ÛRG0/>S!ªL=Ò;.4£+ž*Š"D*jn˜!–&Þüà'Ný’Ç‹ñúòá ,$þ©ëÓõÔé¯ù#óíßãìÞîÓëMåÑÜîföÅñëåªÜä\æ-ã°æGë!Ý á§ëIñ@ÑqÜÏåïò@õö“øÒëæ€õàWæâÎ Üzý÷ŽeÄ Êÿò ¸ ÈúI ü¥ÿ ú- Ô7!Ì *k">å#Õôþì+6*äô`ô  ìûëî<þ,ÿ¬íªïà?ôAâ¦ÝÈãÐâ€üIû«í]ìæþøíòjþ¦ü™óñHý<ý!âóÝNì"‘åQÚ?Ú˜éé  ’éÅñè8<ú¿æ;ð% = óžØñü Æ ©PîÅóÕ*Ö)ßåý H*ÇÔ Â"©Œc"'pý¡û Ì ^öºøèUæüÝKâKë–ýØèUÛ±å­ëWÖjáÐ÷á*ââÀËÊÖÒÅþò{èœÑÆbÈ_è«Þ@èÙûÞ&ƒúKõ`î1úåÎêûùóêø‰yí"ú%–c$ƒ6œ4Ò,Çe5æ1ä9y2Õ5½;=H Ae'µ4/!(‡5D¤5ø)™  5—{ùÑþ™%óðgúÆêÿ” z 1øuý|üyû¢÷ØÉÉê5ù¤õýú«˜ý:ÜÌá;èŠÞ¯ÌÛßãŽÞÖ âÛ…ÏÛË»ìø¢ýÜTî)òžè±ëšùžý©Ít  ÂöYz-‘* )¨ø,ë¸[½ä,×Q Î Bô1äAíE FEóçföÖÿªÌ ïéêúÿ(ÿëõó¸ûݲææãì-ùè îÃÁ| Áò)ââ3ŽüŒü f Ü Šu  \ uýNè7÷™ŸJüÏö"N…Å,Z3 ”)“4Ã#oBœî¥øÍÃÂóíï“ólñÛy×}ïçËÐòÞëÇܺβҷãçŒÁÿÓÅçZê—ÝSç ÖÉÍkä3äiÚFò%ôÚåtóoSû™ù"ÆÊ%ž2BnÂ5,Ò'ê"ª%Y8-*ƒ.È _æøD,% vúWÈ!êúñ÷=oðçæÝ÷'üI÷…ÝxæÎéWá`ÚäQÛFÆmÎbÂ:òÒGå)áƒÖê6ü™þêŽú_þòñt‘,1xQ1¶,ÀF|17ü"$%f!ù1;^$d.B&›¡X‘‹ø…íiûù—û ö-éMç”÷qô“Ú«×øvù äà°ÙQØסÓíÊí7îÙÛÙ¸ðÆÖ ̱ÖXßóˆý$àäßõöñ‰ô³ßFçòñxñYóuþæûðî õ3ñEâ¥òoþŠãÓõæY ²ï«öIßöëñTô‡9 8ýOðœ@¿ -$sþê5õMQ9z("i$å:e;(Ö0$@„£2)>+É"üç/Û©ƒB&\ŒôÎü¹ù:øPÖZæËàš×ÉW¾’ÄsÊÔÎKÃJ¸‰Åý˾ËÕ@ˆÇgÍhígôgãÞÕû‹ ¹ü Ía,k3é(³T"L)`BÿH#x63 |ùõ !¤!¢}ÙükêÈë¾Þ=þ ¤ú˜ã¾íýøðeË!ÝsóBãÓã'̶ð…ù·ñPÛxòzúŽ:áàêõä¯âÛñ,ûŒî6ìÕë(¤ïKÛïö ±þÕøvjªI<¶  ¹&q8ʳ6<Õ/ä"” *["L3÷‘§3lfç {Àïþõå7þ´ø2ý8ø°ûÇüßü§ø©(Ÿ@èCöÞÝ%ûùGSº‹:Jüp˜ &µòjöTÛë»ò·¤>÷³ñ ï¶ý;ß ó Fürò©ùû’ð_å¢éÈæ ñ¸çöüÛºæ¢ä¾ò£úô¿ÿvëÔâóDö½íéüÜ ùfç|ý£ûÏeéFp¡þ/óªÚ“H ¶õ݈,ÿ ¡ Žù©>1g"=þd+2›35L0€Î'Q)º"ŸAÛ/)* Eðyö©úº /¦põ'à…õ”Añúöíà³ó¹ñÄæðêáìµãßåhÖŠæ’ÔqÍå×$åHÆ@ÛÊ”ßê=Ø}ÍéÓ Úá[Úñh÷<èÙÔ¤þ} -þùí„þ¹¦³{öì„$èú’2.˜.j°10(3!xý%ÅÕX á|ýÙè B5öòí2ûkºósÚ ôVWæ$Ï@Þ¨å¨ä*ϬÝÇø•äçÆcÔtþ„þ†ÞÑå-À $ª®nZˆ!¼"-y4Úƒ ã 6L#S.¡­ A‡oý+ü+ Ü €üùoú÷#ù0ùò3ýÊùå{çDédúôèòŽöjö ì•ÒßÙØÿâáÿé›þîõ1íŽö«é5íænßêvö‰¹íÖëÉ<ôLûêyûOŸôøÍ ý!YqŽ•  "G&•ü Ö¹ …þý² ùälõqýÞóéãNétû$úÐòãÿžøƒGÿ¼^Š>“’i `» é ~ôð·ý’ ìd pÿl³úr‰óæóïñ õëcêú+à‹ÚÓÛûøTüýäQÙ—ëŒïÖÛÛ ñ:ç÷éíãôñ¦áÁöõ¶Üì­÷ªºáþâI• À!â*¥å"G+‡ c# ÿ>!1¡*ØÚ æ‘#Èu þùkö Ôñþãžö!ç•ì ÞAå0ïæ”Ñ'ÙÎŽÊXÊmæÛçÿÄ Ö‘ÖOÙ9ÇJƾò¢ìLÙ˜ÞE ñÞ·ÿ¥ƒ™ôJ Â31d --5”€ÚK;a‹/Ý0KÙ.90l¥*Ð ¼ @"DoàØ!(½a Ëý¯êoñ—÷úåîðÊ-ò^ìþæTè…Û5͘ÞlØӃǺÚ>èlܽÔ(ï€ãáܧú|qì<ê¡þ—pþYþeè 4 %CÚ ]™'Ã+Î ¾&-Ä1!Ø)ñö>5j%c'×&ô;3®.È®‘Í(/ u‡ðeñùøÃ—é»Îî×ÎôÎñõêÇÞXÔVáÊçþßöÕmØÙæ|áÞä Ùmã3æÄë÷ñ eíWÒ?àÃö†Ô Ò÷ |ã‡÷7ý¢úQìûùrgÂøï°ýÑø_€pžÎ' ²„(L+—´©¤–?Øþ[øÎìÒÉÿ•ÿœùÏþGÍi-ö4õ›ýÊ ÌíKâíü³¥ð_þœ +¹þ¾· =ö_ñg gcõTì4 Îèí éÞ ~øªÉGÙíû> äê5úæþTìæíçr‹ù‚Ž ð…ô÷ÿUýîò—³!:!ô¤ û°ìÑïÿú©ï­ã×õ.DåäáF÷ ñª[$ÿT— ”,e1-%s÷sç"í"$ª . ‰þy8ùðÎò¼¿,órìbèPñYòÑîgî~ Áñdí³çòeñ„ðé‰Ù“óàÌÓˆèúªçþÚêç2 ‡úîéýŒ÷Ôûíõ”d ÊϳÁÈà< úþqåÇ T ´/%¥[U"B¹ÿ&B%öFýg ¥'÷@ðw ¦áÍÛýèøäDÓAØ‹øIòwÝcÝÐí‡ÜÈàÒ,ØáïÖÎë ðºâÅë¦í¬ñÕè‘âýœaœâkz$€¶ý#ù1ê ü0"HOß!.9µ :Y&å#Ž 7ùø÷ ÒèŽE<®¹  D[{ÿGóélâ,ðTò³öEÜŒß+î®çÕÙæÆÈãöî3àâÙ*ëCî[ÚˆâÔíg÷óñ· Ï „P Ç#ìïÿ ¾ |vBÒ)Ž&+K%{ö68.Ž"½-n6{5;„¡&K"m!Ŭ G $Þÿüö=ñ¥ùúæòÆÍpÖ°Õ ßáçýßíÖò]ãÕýÃáÜbñ|áÚÃÏî‹ë!öíèKï¤ýSû×#Q X¯v ˜ –' Ò °÷y9ÿ>özøWôJ÷@üò·ùýl÷ºùnßßîeýÔÒî+ûWpü±öPùýs;Åþý²L ª9ß&7¤FÑ Ãö¾÷ šA gïËûFÏí`ó-ôõÃúLýû3öÖðbÿëõ3óù 0ß Ûô‰õ®üAû}û«ü£.üÔú¬cúkû>*‹¿5%'gl'Ô£ØÙ%ãxêÖ àèÔ€ƒdÜÂèÈùî‘õ©ýžn º^ªY1 aüy¡ ™uù¦ ³ è &æAÊyå“ðœ—ðÏ×DÝéò¸ôïãÿîàù;ý4ììñï å¨ßšìŽö­õyêÚÚ§áþóÓ@ð-âíÑýæ$ô2ˆ5ômüÅùåýmó¸çQó” « sÇ1jGø #þ| oüÛøƒ“ùóÞ] r^ñ½Í# bô#g0ÈÕúÅû&òŒéWþÅÎ ÃA ;÷A•¡—÷ÃüÕõ·í‘ÿ,[ñÓæUù‚øóøê%ý»` y —.öeëC¤ù†ïøû¤ÿñè&ô³«ûùõÄï5ùnÿºñRöèúŽ ?ù;üpGý:êóàô¾JóºîC BB÷"àyö0åø'÷:ýÕíêïªìÛú¯þ·f :- …ð:íìD|ìûúî˜prÿôûÙÊöVêñðeü(õ\õ¥ý*ûòæ×ýßœî#ò4åŽâïèè 0 õìWöM C¶È …ú®óÔzÿ¢ü³& á …Ð‚¿9K ç±íz¯ )€YúÇ 9ª$h ´Ñäè2¨ ÑÛ ¦b ¡7©öÂÕü08ìgò¦óCéê“ãíí6öWÛyåžõuñ ç©ñbùiæáÐèUájÑšåmøûøèàåa÷ðôëläWë¨ñîÏâüõ OüØ ˆšÿú[!à}þ ‡! ‡ ë« Î¨UKœ*s.£ÇúðI9©5¸/Ížüš¦$Œ «Õ{!‡üDùFòv; €r ýÅðïñê•ñ¨ûˆì¶ÜÈó~šï?æímgøíïûZ ”ÿï%ë„þÿÃðøú ïÿ_ôÃË£þÖù€÷sæ ö°ü! çù¾õØûIÿUñ*ô ^ùøð†ð'¬ æ»öÔ’çëùûûÖ÷éÉ Šýyâ)÷xc÷¥ æêGèÊýZª bóóøÑñ ªéæ¹ 0 ÂéÛá, 8"Yü4ô<=yøü7ËX7ý` að‚÷ÔØ` *ö6V!Iüüþ@ÆòùÕòòPóeçÿ¦é ¤èëúO äãŠùOæÙÆýñø;ïŸ Éìãiö«] cßiìé•püPáýëÏüÀñìÜúçÌïjæsîmÐâçÛO*eï¯à¿îxéìêµë³ôôííPî˜öÆÞ Õ¼è‚î{á%àfò¾ìÀð‹ø÷‹ô-ëËö¶( Žý†øÍü¾¼ Íÿÿÿ# §È) ‘¨Ú2 +õªŸ*dƒõý5J Œ Ä€|y)³‹›±*>(¿Ýþ¹-øÇöcü‰> IpðCà³óìüåŽèÿ”ùÉáÃéùì›à#í  <ìSéºó¡&ýôäwñf›¥óàäý èø'îsä oôêÁþ§«ý ó÷ùѵÿp ̺#>þu9,Ñ õ þ?aõ!çÃßâµù•à­ÝàWâ;ÒøÖÝ$êGÚ’ÒrótLðåÎ ÚÿEîónõLçì) Z«iC‰#+$Âÿµ3,6ƒ ¡'†)ãi4>ï« Q)W*v S$L"cýkúì"M ˜ì » j¦õøú]ö¼Ù"áÓù@þyîçîþà ô+ñÿÔóù,—©úÏ÷ ÚúÆâÔÖæ¸Oø ëŽì¹j÷ºè\é‹îkï¹çfôƒúµüRøa÷eö·ñàžvZø1üš| 3ð% ')¡”­¬7¨‘ùZ9&KÔûì_ü#ïš‘öÅõÕï׆ÿr÷ë-íûåîÉïvëQë^îÈî~ýáüæ=ìųøþÜØ«ïð´òèâèÙìîï¬ôú~6üðôýÑ›´ŒýŠ™#A ’Ú!èœ,sC°)n¨-MFÉ0•#(&"4ô.$)¾&M*¦-¶®{\ & D ÆO hzÿ»ürÚÿñé‡ã“ðÇìXð—ï öäÓÚõÜIß)Ö“â¡ñ…åÙ£ÞíâæÙÙ÷ìk[ù­ájåUñfùçeï¯ö’õ;í0êF÷Oí¹æÁéÓû?âÕß³ì ï­êôÜÉëÕ3ø€ë¹å¸õòü5ÝÙ7 $:üÃz&™(õü–ˆ%§ýì'»À] ZZ l ÃP‘.)‚~MTò¨Xþ[ö{öþØÉ õžê¦îæñûïÒå­äÏñ£p¹æóà<ò.êL׌ÚHêKèë ý íÌâ<÷ä ººÿÿn(%ý®H% § är „VƯ¾ûm mÈcõ>œ H –$l„ƒ·Ù X÷âü~¡ìþ'ƒö†ò.ÿm ;÷pç öÙ7mØàWóäõjØûÙ5ï[ë³ÍÇ¡âƒã4ÈjÊ=èãÄÆH½§×Äàk×^ÖâiíŸÏÉæÜÿÕõÁîU9Šÿ öL9(ˆ´þ„  (_&¢ß ;$Ã!æQŒ“B).h º77-û5p9 1+k(û.ë0‚2£4-Ÿ©‹(©*$Š{!î Ö èîòô8õø8é2ÑSêìõìã4ѽؖÖÉÍÈzÇÅ*·ý¾&Ï5Òö̵ËßÓÍßôÚçxóFô§éšÝó2íqëVüÞjÌòÚåú•iüûðn³ýçò·3 NþÑ å÷ øò]Úuxý „ p(8"­õ"1*4'Šw&u( 04%l$õç&—#k¯&æ Í <Hüdó.ÿÑö’õkøÌô&Þ¸ÞOëºðwÚÎÏá™å¸àÌצà_ÚkØöÑèÕ¸Üè×°Ú|ôóõâ½èTõÏõó´" §ü±¦è÷5V!â›þ˜#,0G 9!1§1Ù&/(ù#UŠí'¦2l[üNL6¤ Rö‚¨Xá{þŒ § éòØõÎõÚÚ ùLõ@×2Ùõê/ñ§Ñ£Õ‰ëöŸåIÝäîÛî"êýÔoéºô¿ú'ëgÝ?ÖRìíþ­ç$Ù`êöKôûèâ‘åþiý^6é7úc ß~‹#/"ü,Ö>y0¼öÜu»üÛ¸¼Gàƒm h]  þ˜_â®ý5²§üêþè5v%‚îHð`oï•Þ† Ú"ÝüdéPõU÷úöIîÅü½4æùðÿúü~÷GózùJ÷˜í9ãXãððÊ÷éòŠè×ë+öÐñ½ãç‹óÔø!éæãÏó[éwá}åPðØôŒóŒóWüVò\ó©û) ñ•оŸ l$Á”­!Ì$+Ý%$+6!á6‘+ô+Ô8 #V¶ ¥`ºòùœ÷Tý*ô;ó£û‡ídçúï›éVÞÅÞ—ï7çŒÌÑðãäÖÚèØÔàKç-ìHÞ éqó úÉò|î¸ô ÷ û³ô ÝÿCñ3öÉßîœïxúˆ üþ÷Æ# ýÿFë 2»‹§ Ÿ<Ë.`!ÌÕ xÝŠ [þDô w6Çý üŠæÛí*öVíðÛßúê²åkâQê„òuåáÓrÛUÿlÿ êàè¶ò„ðœãPæð—ø"ôŽñóôÄì±ð<þKýìífüâù)ùzò¼÷¡•P – ý÷S  É â&V#£Ú `(M+òòëÄ‚´> ´ à/ †ý˜Œé¤6 [Ù57ü]ÿ>/Î^K  kÄð½õ®þ†ø÷çî>îë¢èæRÚnÜ^âpßKÜ#ØßNâ¡åÑÞ·ä ç±ïÊõÂóè÷Àå¼øõïm.  Wð ÖÜÄøW‚!!öäãý‘ô©ýº füÛóÕ}Ðú|š6 ùù+ rÕq†N!U ;+ ¿€"W*§Ž="Òs9€æ:Ê…bü¦·ÚÿòóSôæàø7ãÓÞ ù:÷Nç©åôï–õÓíîPúüxï|ö— ý·ÿVð ÿbû*'©ÿ ñ«ûÇ ýüðsõ"÷ ÿÕüÃïÝýX m•ñÏïëòôæ—ôÿóüòUóýðò<ñvêìô¿÷•òzôzûõü‹ùc÷P ¤õôóÈkm ’½Öƒ® ÆWjñ]2 …ÿ›qÅõœø)Ï4û?ù,õ‰óIíÒòÙö3ÿÏòVè7øÛýgðiçªñ³û(ú¥òÐüØûý± þ¦ûl „Ćò ) “ šÑÇþåÿ’;bg éS ÔF:c(ü‹ÿoÐÃõûv÷ýù!ùŒíŽùÿÂ÷tõ‚ó5ïìFéTêÚê1èeë*å­è õPöõéÖéòÿý4îØä/úzø~înùi’ñ–óõûkûsô•ü‰‚ üøƒqÃÔ ” K ÿxòæJ¡þe‚ 4<  î Íû¨‚ Kò#ý í ,"ù­ÿ€ï»B™ kK tý‘Wüb m â‡ý§ÿ©Ï‹DüüûIB ¥Xöüúýµô-öŠúèÿuìjé+økÿÉì¾ä×îíöä¡ãéTóØó«íøñ®ùžÿ˜ùïÌú¡òÎê5ó<ùÎñíCJÛëÐê´”ñ­ï AÜ_ûÇÞ—ûvþ¦>ö #-› ´ L×’X Zþy›L HþÿÉd÷,öÍ–Mù(ù²×ô=ùI ê)þªúþë|Ÿì;í, G÷ÍìVú¢úÉò„ý) ›úÝ•¥ó„ï® ‹ ™ ¼ 'ûô¡=÷—ñîÉdð]TŠÿ„ïÎû³¹Òçíì±A6óXó· £`÷ÚôK A_XûÞÝ'úý°œûPë«ôvÂüîèáê1öéñgæÒë úòÚãMô:ÿ„÷ßõà_Éÿ`æÔåò„Ýýmõ Ïõ øj– ÑóÒôÒIyYúA­;Ô ^ò ñ —BÅIÀý Ý£e‹] èµ ‘ rzOL?]<(õ ûy÷Ìõ¥ýöþˆüÕADô5úìÀü…jFçZñäNÿ*ñ:í . î.â÷è-û è=ñçüDôÏåÓê¡÷ó]üâþ‚ü`¼ Ø Ô § tíÌÓúù¥ÓŸôÜô×ûzô©ä—ðœüKõáìpõš›p÷ö¼3 { Õ³ Ý98 ìß g#M#éí¯œ‡ýdú±nw9úí×îd@uîšæ¶øxòýáMðâÖù—ò ÷›yþ¢ô]øhýßúµúRÝßöaõz; –s—þ”ý¼^ˆÍêjöOô8úÆüîùÔùÁþhø½S3ú ù¤þm33ÅüóüÝ ô˜õiø´Ž @úºò@R ºù1ïÂÿWù°ïôuÿö¸ôûõôNîÅ|ô ìœý{¡ø¢÷”üóTðªþ üûð|üK ˜û2îTüG¢#¸Éýþp^òüMü!öuúbÿ¼ÿkñ0û;A ¾¬ÿxàvÿìý…déü#ýc bÈ œ `#M;Ž%Í$‡ýw# ± ³s ¨[AÏöìò¦ôÎóñ9ègæÚéöò†ó†î¸òó÷î‚ë|í#øüNø¡õZ÷À½õ±ø¯ýoù³íMáÈåÊþpöá’ߨõÿï‹á ãåñ#í—åLîÒ÷ñTç÷£ü³ô\ê~úÞ––|Î ²~rª ˆç ^ ŠƒûÍáKû®ðæÿö ¹ÿs÷÷û2þRûu÷­ÿ> לŒÿ 7kªÿ V#ꛇˆS£‡ÿÌ ‹ g ðú Ž ›åÿŒ Íÿ»÷Ž Í €úÜöù£dTÝþjÿÆÝÿ—÷ü’ûuöÈò#÷ò—ðÈø”/ûÇõWøc2÷Aì'ì(øûtþDYXõçä5ï:þ\êð Ýòô¯ð×ûwÿRýU÷&ø`þk oTõ’ý š èþbÿÌÄK,\øÙ{àÛ dÿÞü Ϫÿë(þç ĹÿR÷%eºî¤êŒï Sòá¢ð ý2tæLãæïÈúÊü¢ý6‘ý„Dð ; u¾ ÷ ;3/VÔ½Zyûãc œ` æ\yæ M ¤ýšáþ.Óø0õ‘ûÐú¯÷ï™ùÅý6ýÚú¥õ4îÌñû(ô”ëâ÷ª0þ´îuè¸ðÕû$üiüU÷ßû2û|üåúùéòðò*÷:ë€ä¤ë=ô;ïžèœó4ù*÷Éñ”øû8ùo÷›ù…ûëþ‘ÿ°DK ¢Èþ Ã`b4iþþóZ$ Ï£[vRÓ›u  ~rù„ÊÃÇùÐüóÌ…äÖS _kÀ‘9#ݬ³ÔŒÑჵ—üôâïDùaúÑë-âÈé¯óAã=äðïøöKênßYÜPê´óëôïì¢ëJìfæ‹ã“çKñ¾ìmè,ñ€íšáÑÝ™é õåÄÞ öœÿùÒõ§ýKÿ9ûH ¬4ãêÃþÜþ? Vúþ÷)ÃUùNSý¦ {n† æÊÞ SiÅ^"È{<"Á¨ž… PV «~4° Âá´‘ÿý[¶°ðøÓñáù°ÉðÛì¯üÝýÅëàê:ïìë…âWè/ï!ä›ÙÊåÙé<ââÞ©êéí¿åžâòëëêÒßïæöÝõÊíàï¡í|õ¡ü2õõ·ô|4„ü?úÁ#W9 ]Ñ£Ú Þã F ¸¿_ »{2Ba —Ž•¬ ´+”fþöjû(ÿK÷ üÊ÷*ôPì4éwï'÷Øð5èÈï<÷hî¿êèõ{ÿBü—õúôÓ»} Òü”¦ X Ù ày‹þ%ó%U#V Ÿ;.Ê :#_xŸ"õú¸ø;ªÿCøÎž ì÷0ëËø&Xøðßééü=ø×Û«ÞþòƒóèÙâßçñçëç[ê}ðFïõðŠéâëGõ¦òÙçõäö°ÿ¬øpêóúýìùRôøèû×ùFô»óÛÿi`øIôiûç!ÿLõõ~þ±þBþdýeþ)èέD«%Ø ýš*:C„õžyÑ p¾eä % ×áö Ä€Ký†ØQ>Z ñ á Ž'ã"û¸g Z „Œ ·7 ÑþÜjL^ûü?ýžôWò“÷fö1ñÊóÒõðöiõ‹ókõ„øgõ”ðéò/õ¥÷„ô/÷ÿûùüöù}ý¡ûëùêùæùvö²ò¹ù¡úõÒîfòûò¡öKö-õÂñyôFöÒö öÒöïû.÷Cóðû: öü+H ª.õ¶úÒ‚üûÈX°þ0ú~; øÿùücÈK!õ¶ÿ‡ø"øøàøbýr“eþÙÿáU8ý§øiO ºJü,ië ‰ «Ò•üÉ¢Z x]í 'ÿdýDØõÁ<ÎÂþ©üiû°úò‰óX÷õþÛúNóñðm÷ üð÷$ð¥ð5÷²ö2ñ¨ócúŽøœô™ôñüTýûùúuÿ®ÿþüÄú2öyö’ýýùÄøÜûéüø@ðlðŒô®ðlñÞòNóÎë%ìãð í+ítî-óŠî]ð”õ6ù“óñÿóëòïñCô¤ýý‹ó°ôföm* ÞÿvêÆ¢ž¥ ;¬ ½ ·¦9 $ Ò"l%D÷›! - ø× ± l& Q d &# \ { ½àþ çÍN®EéÙýfýÖ« Ç«ž Ò×÷A®/ÔzÑ!/xˆDâq?àEâÿÿ®ûhûêùïø”øø8÷êõHøÂô©ðHíÓîSð8ïÌñtïZô‘ð²ïjðõö+ø0öÏïâð0õÐö+ö+÷CüPïþý£þÿMþzs„IÀþ@n;ÿþþ^þÚühürî”ã@ ÇŽaÓ Ã ûYúB <t~€Š€I à x2 ðÁô £ðaÑ%×þüþ!/ÿˆú®ÿÙû*ûrû^ÛýñvgYý+‰QNv;äýÖÿï Ô*þ]΀`ø4ø«þØúòLîrõ=øýð|íœìãñ9ófëŒëòCô ïÊîÓïxð}íéøîžô¢ò2îö¸ýÂý˜÷¼÷OüùøíøŒüÃû‰öWù*ÿhûËôŸú MüëýdûÏXwkìóä² Ñ!Y  %BËï§ F ~g˼ÿJÿ2ceþ›äþžú úü1þxûþùŒû¥þ<ýû¤ùZû@ý`ÿ$ÿôýHû&üÓý¨ÿPþ©þœÿŸXÔþïþ-ÿ/ýû‹ü^ýjÿŒþßÿ‰üVû;V•ÿÝþFþ™ÿAý²ú—ú>ù™ûrû‚ýûHý6ý!ý*ýÒýÞû#ýˆj¤¶þw—ÿ¢Ö´þ>ûœþíÚþ ùJûm‹ÔûûõA÷‹û›úŸøùyùËù÷]øòùðùhýÂÔÿ×þzþ^ýòý¾žÿ-ÿ¶Ç°[ž©RD ä + Oõ SÐèª"ï>:TýúÿþýGþáÿZûÓûzüóûü4þÿ¿üíù˜ûÅHÿWûbû!ÿÿ*ý…ÿ“:(ÿLþ¯ÿ<Tkr ÏÁ™ý!_Qÿ)޾ÿÎùºþé>ýyüÌü ýú2úüˆɈü³ÿ‡þÁúuú-ýÑûÑüÊû­ýiþ¦ýÎûôý½òݤ¸<˸` è dÀü *‘ b± ªÜŽ ƒ fºîV –½¿?wÆü,=#ÿ5û9ýãý¼üšú8üãûkúÜö7ú…ùŠ÷¼õnòüðòõÁó–ðÅòâô ÷[ó%ðêñzôØöFõTö•øùðö’ûœþ¥þþéü$ÿ÷bCI¤,¶V¥lEh“¿´·G(1L–¹ÿ‡ Ósþ þ{³ÿœþÓüå‘ãÿ£ÿÿWÿ}’ô‘D–]HÒÿj²QVVnÉ"E››P\GÖ¢»¯ãÔy´·ÿÂüþ­²CÿxþAýdýŸý`ý8ýqûiýäýÆürýËýwû†ûÀüÆý üÿüðüäü®ûúûªýÍúùøý¿þrþÑý´©ýÿüFþEþSýSývýßü¼ûºùÞúÁþ&ý5þXKmýÀüþýžþþÏúVûMýwýµû‘ýþJÿ°ÿ-ÿa)û1þ½Ö£ÿ·ý|ÿ«û}üÛÿëwîr€¨öê„ Êøð‹xúÙmS¨0èæ‡rô*¹*—²VBĦ…Q=RíÅ„%<þ2ÿ•ýFþSþ‡ÿþûgüµý%þ ú0ûýRÿWþnüQü"þüþTþ²ÿ ý}ý±ÿÐþõüÈüÚû±ù–ù%üÇúˆúýú0ûpûpû`û¸ü´ûüø€ùúîú/ûlúüüYüûêü ýÿDýJümÿ¢{ÿ˜¤;Éÿ^V´hÏÿÃÿÿúþ:ÿ¬Ô ‚þ0Çù­Ä>VëÑÞ‹L òS!î±,¶YF#+’• ñ  +fÌw%—wï'BbHåÐ8ú‘ÀŽ8lÿ—ý ý©ûÍüzý]ý»üQý9þHþùüõúÌüöýeýÜú¡ûPý0üˆøDü¯þÿþêý8iÿý˜ý…¹ý“ü ýZÿïý\ý8üšüþsüýývý>ýýªúêú ýËüfûLISTDINFOIART Jörg GrafICOP(c) 1999 by Jörg GrafICRD22/6/99DISPKDEmaximizevtwm-5.4.7/contrib/vtwmrc/sounds/whoosh3.wav0100664000015300001300000014075610237645271017745 0ustar callumfidRIFFæÁWAVEfmt "VD¬data^ÁëÿñÿèÿñÿæÿäÿïÿâÿðÿïÿèÿæÿëÿéÿïÿéÿøÿñÿïÿáÿèÿãÿêÿóÿâÿçÿäÿäÿíÿíÿæÿíÿîÿìÿíÿæÿåÿäÿçÿäÿèÿíÿßÿèÿñÿçÿæÿÝÿåÿìÿåÿèÿåÿêÿçÿáÿéÿæÿèÿéÿïÿéÿäÿíÿéÿëÿéÿàÿâÿçÿñÿôÿçÿëÿèÿðÿîÿîÿîÿèÿ÷ÿðÿôÿðÿéÿëÿìÿïÿâÿèÿáÿÜÿÛÿÕÿæÿÖÿáÿßÿèÿçÿÙÿßÿèÿÜÿîÿíÿâÿÜÿÞÿàÿÞÿíÿÔÿäÿàÿÖÿÞÿãÿæÿÝÿæÿæÿäÿâÿÕÿÊÿØÿÖÿÛÿáÿàÿÎÿÝÿÓÿÐÿ¿ÿìÿ@ }ÿÆþ)þ©ýiý„ýýëýAþ­þ;ÿªÿ´ÿPÿ«þ¯ý—üËû^ûû°ú/úú™ú’û!üGüTü›üýËýîþífj÷7ITÿÊþþZþˆþ*ÿßÿN¥ÓŸüÿJÿëþóþiÿßÿk’£Ý0§ÿ^ÿ¯ÿkä„¢ÿøþ±þ—þŒþWþØýÿüAüñûóûþûü¦û ûäúrûäüƒþOÿ}ÿãþþÅýaþÈþ3ÿVSþþRþÐþ ÿ|þÆþ÷ÿÆ+«ÿDþþú@øªöeö øúìûeýÃþ‡ÿgÇB⟠ý¾ü›û~úGúœú-û”ü±ýcþMÿþþµþ–ÿB_/`ÿ›ÿ ¤` …²ÿÑÿ¨$µDýåù8øÑøòùåù=úôûiü†û@ü>ýFühû¦û®ûöû£ûÇúû¶û™üüÜú§û1þÁàµnÍ0-ÿuÿÌ4² ÃL=ýGûüûþŠÿpÿ41á_P¤R‰V¹ÃÄý³ù ÷ÒõíóXó¤ôVöh÷’øêú€þåÚ†þvþžÿ¤ÿFÿ:ÿÜÿ#7ÿ.ÿ…}ÿpþý3ûûüýSþtþ°ÿM6ê"úPÛýÿù<øÚøôøÅ÷Ïö—öð÷Iùõú³üqþ›9ßþ?ÿ2ÿ¾ÿtí•%iþÂþÓþ%ýûúúlü%þëÿÛõ¨‘º×0K^µ"¿þôûKûRüuü‹üÙýØì  m $ øÌ}OÿxÚBßÿîü­úÌú0û6üýüvýWÿ>zÃþsÿøz¾µqq^ßotý}üøûYú›÷¾õFöZø³öŠôw÷æùyûÿîÿ_Y½+“ýÊúpþÙÿµþïüEúrüÙzQp0ß§,Ž-ß Ž Y0V‘þ^ûjû¬üÓû·ûùþmv,wŽÎP³ÿ;þkýÎûrüMþ™ÿÐüÿ¿ü|ýîÿ™þý¬ýµüÈüC¯ëÔ;ýòöÑõ,õ}øüžûýVšX‰ÿh'}èB4ÿÿÕÿøñÿþ~üÓù*ù8ú´úfþ¸ ‰f÷Oƒ‚;i¥óI·ÿ%ý—ý ý¡ù[÷lø"øÝöY÷oùý¥ü°úHü‘ýiþ§þ3þæýÝUü_û´ûùýBÿmþ,ÿfþÿþxÿuüâú¹ùÚù»þf¿ x ƒíÿ×ý¤ü€ýyÿ ‘´¾“SY´üÿÎÅ´Lÿªý<ý!þÝýÓüžüöüÊü±ýðX™y" ¯hÿÈÿìÿŒþÍÿSÿzíþmûƒü¯û¾÷«÷OúÓþÿ‚þ€þÍýòûœû‹úŸý®²þ‰ý[þåûÒù¬ùTø´ùôú¦úú¥úÖû8üünû¹ýÕýœüþä<*ÝË úþGüûOüký˜þpÿœš„ãp:»}üCû.ýpL‡»Zž¸+ÞæËGwÑcþhü.£Ùïê×Ì)~{þ±üGþƒ¥x™ýÒûùý÷x÷æù¥üPû"ûÀý:þöüÈù!ø3ù~ùLû¨ü‘¢w ¹ y® ý}ýÞþ-ÿÕ¯£Æï>(þ\übûÓüZüâú1ýáè|–üû÷%ö¾ûøýöý>oÿïüþøïø@ûàúQú¥ùùöúËýF«þþ•ùºõ%ûövøS· ¡ ¼ Ö¥ µ;ÿ>üùö.ùÍüÅýù…%“ ÀýßúnþÂÿâœí(–   " ƒ ™Ž@v+þ ÿØý³þDýËü7þ(@GêþeþÖû4ø[ù˜üýþ‚ÿH:ÿûv÷øû¸ÿRþ¤ü"ø•íµèóë²í©ðôÙöé÷„÷[øÑ÷™ö[úæû^øQø&øT÷ù“ûíü¸ýHÿl‘þ2¦ÉÿMû:ùà÷ùþ'þKÿv­- µ0þ›ý‹ÿ¥€²m ìÌ,ù'ŸyõëÀ†ýøôƒñïYí¬ï<óøãüSDûþ°þYÿœù4ôÂòéó*÷¿ù“úxúîùùðû«þhþ#ýKû…û"ùù°üÔúùÒûßÿ•œçüú«þ4DÑ•Åòÿ4ÿqüø&ù¯ýÐþ;ÿÃ!&ÜðýßûêúœöÞ÷ ÿY+gÿ«ùêõ ößûüÅüóÕ «¼g o b @  G %^lâÿýüý8¥“ Â#WÁÏ *ÙS_¡ªKÂÿ­÷_õøfü›i¿ºc+øºj IWçÃH}œÿaþýr •üÀÿنה“ÂôyýGúöTø=ûOúø½òòîˆô¾ùéõ¤ôŸø,ø«úðþ· öKvä ÛÃûZýûBø‚ûQý(ü×ú4þ; _î q ùAšE € 1|åþûü€ÿoÿáÃLFÿÿX“ ´ ¦ z '¿ ;) µ ûc +êýYù»ú”FúÄû^ú{öåú~àÿÙÿLþÀ(›6ýðú”ù@ý©þÎüvüð÷WòKô*÷oú•ƒ³³¤Â%eþ'þŒþìÿ÷ýìø÷ö,ö»÷Êögø\÷ ôýõ øMùÍüýþg—¹Ó•ÿåÿÿ*ÈþLùïö…÷ü†û‹ü™þ¬ÿ”¥‹Lƒûëþž»Àëž{j² %ýGÿŸ¶ãý[Ý†Ú ¿ ȬԔâÿ2¡£Ë¿ËWÿKþªã]³ û§$Ʊ?tav·þ_ÿ¤é"†ükø½ñ¢ôdýƒjlØ ˜ÿšÿÓeºa³üùó îîÛïð<ó0ôõ«ù9ûðöHòøí\íUðµï óûÔøi÷¯û ÿû¨òøòqõîø þ¨kG9¢ h¡ à  î¹,9 ’› ® Ú ×± ŽÕ$œ£aµŽ µÒâ U F ­Ù ͉  À¸õ„ —þ›þ*!ô.¼ÿQ‡ õ©…ýø9òÎîßîOïsó¹øý`FJÿ½ù±ùCúºöGó“òÆôIøÿœ€ùô)ò[ð~òùœþŒÿGþøþ \PT w z2®ÌÛý  „ý¼ø•õ/îî™ó+ù®š 7 ô c]þ²t “‚ú3$B Y “-X!ÿIû.þh{ Wuý¿  ¸’,Ñ‘*z ‘ ò8 üb ?dÆô =¦´&âÉÿ¶òM³O&ÿ¼]ß½*4 .²µ*þUºµÿ$ÿnö0ôÝïÓî¶íÛêHïBö„ö_ö“ø­ùüÁùõ‡ø1ùtù:þK¨x€µÿŠýþãXÝý{ûc÷%û¿ÿ¼ 3 WÃÿ–÷^óåõùòë ÷¸]= Õzþdôß ìzÂï y‹ÜýDÿ¯ X › Róý;úŒöGò}ï8òCóôXôßñ¬óùð°ñŸý#öýµÐþ‚ö–û&ûø~÷ùö˜û1Úü÷íõ_õ´ö›ú;ÿ$; É æ t  é¸ý§÷ŠøÖýjûGøäòÐîIëÜæëóôÜóMñhìáêæé|òÿ6‘Úþÿsöú§ÿmþ¶ÿìËbP{¦¿µÔº (ÚŽ ‰Èþ§ø'÷ÇøÍöWøçöwóÀï¶êêôîüÄÿVR•j!Éz¯ ¯ 1 Î Ø Ixÿ;5 Te V ” †¾sÿAóÍûöøÖùòú´ô³ï%î ñ øøßøßöyó™ïë™ñ¤ôèíÐî¡ñòy÷©÷ ûHû\ñ‘ï¾îäìÛëbè´ëáðµò¶øtýhûyúÃýÏÿ‘òÑ‚5 B ç r     ð÷xø*ûDýþ“ûéùÔ÷Oü# ãCG”,Ò¦  Q¯Í2 %Ã"_ ¬´ÿãøkô[÷Pø¡öiúÆõ K “Òÿñý÷þý6ùúùù}÷?÷ìùBú}ûàΧ 7ºý•úŽøvòéñõ[ôšñËí ë*ê!ìÄîxïåïFò­õkü^6 – a õ LZÿHö€øjþ/äjý«û^úköÎó–õ¾øðûþXü†ü6- Y ® H6ÿÞû›5 à ›¸{–ÃZ?ÿzú¨ùýûC Ÿ ¾»Û@š—Äöfþj `I  ˆ¦qC: e Þ Ìd A æ”ni]þbüšù±ôºô½ú¥þHã  g°ÿœùqüÒîŠ ­üÇó¹êsç<ìí{ðeõƒøNù–ôéî½êéëÖëûí‘ïë ë!édá<à=ç2ï‘ð7íïÄóÛ÷=ýªÿlRÿ?ú'ý•÷ ã æ ÿ ÏU6ÿwü-÷ö ¹‡ *ç°þ<û²ùAþ(7ï.¯É Ô[uÿÀ;š7pa ùþ¶û®ùàø(ýÑbZ7äm :óPº “ÿµõïŒòø ýKg‡#û—õXö|úIþJù–ñkîZëJê¿î?ñœìçœãrãóèýí5ô®ù;øsô9òøð&ô¶þd &Ø]¡ Åt #g¾ÖõÍêrèÖêië@ï2øãc 1 Jw"ý>Œ¸xìØ ÁŸ IÔÿÆþÿ* 4ÙŸ ö®ÂϤB¯¿±*±* ã · ã ¿ ÌØ‘¶ÿ4ÿÐbšÅÉ“øs ó uËû&úëþ´d Ì =JF…P. n f ¼ ƒvø¼îëãéóç‘ê…î¶îµñ~óõ•õóGõ¹÷ÍûË7þû8÷Mømü6ý¨ûäùø¤õl÷äüÁR úlù0ò+ïBîîtó+ÿ¸5 ‹ °?oü÷¸øGÿäù ÝžšTÓÌ÷ÿ{ÿ¢þ:þÜ û0LÜ¥#ñÁüwõ°òÚóÆø ûsüàåÌØ_\ôZ,¢¿ü.ú‰tS-ü„ö¹ñIì®ê5ð…øŽÿÌ{þÇþ¡¢;ÿúöG÷÷ùCûÑûVûØûêõ¹ðlðGñ~öKù:÷‰õ¯óWñ¯ïö·ý#ÁÕÿû öò>óÑùßwÆr¢ HrÁþ ý’XÆú ¹ ÏRÅ&ü/ô²ñ ñï×ïRô€ó‹óõ£ö§÷xü÷ü t 9; žÒ<ÿCý¥üýJþÄ WÇØŠ#ýŸù¥úÿ1 o]Úÿÿ¸ú&öó€öZú9úmþÅv±þyþð  äÿœý¼þ©ü$ûŒu7ÿCývýúùgøCö¬ùÛýOý¾ûæùÍ÷°ø¬û÷”ððSôïöëõÐõvüÙ?g™rµýŽøƒöÂöˆýy!YžþÝù°ø#øÓù4ýÿû†üîüœü­ùÝöhöÖö=úÃý´þ¾ « Â7þ…ý0uükëúxúb‘þ£øšø³û<ÿ🌠»[ü)þÙüíúúû4Ýÿ úiøÉû”ÿÒ@œø4ôâó\õö ÷×ø7ýò˜íûþôQðæñø?ùéúØ]Ž´ÿKŽü&õòíZçuê½ó`ógô~ùMö(õÛõdð‡êùéàæê.ñ ò ôèøCû“ ·=ÛG³ü9ýƒþ(ÿ.ŒÁ ; Cn‘§ýíüâ€áý‚ý£;2 ?Ç RŒô›í˜í¦ïŽó@öwüsðÿ/ýé È[CE øúú;û¡) ¾¶×v ‡Æ-yU t H(ý¢ïŒëqñèø ÷…ù~¯ÿ³ý;ûïúž÷"öx÷ú÷ûö­õA÷jùœ îïþ”û8ý-ûdú¾üÃÿfW ÅŠÒPÿ÷,íŠîVò)òµøþFhoþX÷éñªòÍ÷ÈÿRÉV • Z ýø3 {¹ t˜ôðëÑîað¹óæû:þTù(o â³ýËøÀúQ \ H ’8!yP¹ÞÐþvþ+ÿì^˜V ä À q @É“ý€üÝý³£˜ú§øÍöÞõ«òÙõ\ù\óÄî÷ërìÛõÐk z õ‹ f€ ïþÈø¶ü}{;`¤ý"÷Äñíå‹ãèòñújû{û.û,ö­ï†îVî.ïôÔü? }ƒ ö þÜø“ûœÿ~ï Ä ë=þoÿ.ÿ°÷˜òp÷­ø ø6û5ü)&µl7.€ µ   µý v žŒ+cÇG }øM÷fùÃúpûúaù÷‚ônû$ x Ø´™¯ ÉÎ D(áûgõ˜ê™â/ß›ÝjÞÝã×ë/ôúõËñWòõòñÏð,ó8÷hú¬ü`þçúÝøüVøØñgò1ö0ùÚ8U^ÿ2ý¤ûÄñ?éÈëñûö#û½ÿL<ueîÿ üþ­þ?ûd÷™ôõ<ó¯ñ¹ôºõ¸ö³úS•±un>ˆ U èÞÙ­Û^ŒµK¯=Mª5 >Üøoôpôâø1ÿ0cŠúõNõôò ñéöÂû¤÷öó©óqï^ï>øÉÜ¢!þ«û úëŽ e” ˆEø1ø*úöÍóÆô5õzô_ò%òjòÚóõ-÷pûàÿdüùD l  ÿ"žúü5½ù‚úwôŸïçð8ö"ôXð÷ð¤õkýŸ ‰CQ¨ 熛ÒÖñAóøcíê9ç‚ìiø7þ-Éýîö4ø'û—ÿé¬@ÿ!üÏó”òb÷èþl´[óL @šOJl Çè^ü´ùL÷FöÙúgQ,¦Àã  q µ ͈3ƒ =JeE<õ²Çú÷Hóºêtãòá æíê'ñëøsþ©ÿkþ ù‘øˆú†ý’­×¥n¯ùÁôÆðjéé®ç7ê¾ö!ƺ@ó@íþë¶ðRû°û{ö?ø³õiò2÷ø+öÒômòlõ*ü`ÿxü ûbüƒü%þl½C„ o üLþ4ù·÷ÙúVýÿ}ÝÏùdùÑúmýMÿ"ùZõ)ùÿµÝûoöµô¹öÎý2 ‘ ¯ (û óIîAì ðIóññÙóºñXñ¾òìÝæ¯æãä¡á!âæOëËòî÷UùûÚúX÷Å÷¬ûãþÐ2 8 ÚÿÙÿ€ýÍKŒcŸ’¯›ÌÿŽýÙõð¯ë{âîݯâ©ê ñ;û²Kçþà  G { ³ÍËOýVûSú úcüqûîÿR'¤ûøMó9óõó{ú˜ (ãäùiïÏîøòŸúÓƒ ­ /€ß÷¦ö>öÊó©ñ¥ñtó]ô¥÷€ý§þ³ü˜ûÜþËE,NØ ý <>¡;~ ›dý9öøoúÁûþþ-yþ´ý,Õûz÷ô†ìäé³îô“û÷ ä…œ.D’ûºû<ýrÿ×ÔYþaúñöÎó}ôïûõ¸  %ÿÿ*ýSü¦ýŽÌ¨ý<ø^òrôÅùûúqùö™÷wšÇt4 G ö K å ü 5ôßÿý9õ½õÏÿ˜ ¸ò Wg^ÿ¤ ûO¼C “ xþöhðËïD÷ üØü½zߨ·¬þ_÷ðüó÷Lòêxæúæ;éùñú_û´üÜû´ô{ðÿïòôwõÞûÅ€º©¡áT|· `=ÿµüPÅ܆w0ý¬û&– ÀæÍ|”àè¸9 :&t!v{ê P ­ùÔôlòpïQ÷ê¾æë }!0 )J Ì!ú ã ‰I 8ÿû€ùæþíþÁüPýGø¼óùô5õ}ø‘“‘ÿLýÞû{ùtù–ûÚýÊ¿ ¼½¾  0¼ # O){þEþóþ²ûûþJþüKý~$ ƒ o@\øqìÍä{âÚèò¹ü. \m˜ý »ÿýÒùûJýý:þ¸ûÔý[þÉúÖþ2þÛûéMx¾ Qþøö»ô§ôÜõ½ýþ´þ'ûyùMùÞùíü­ÿ íý#þ‹ù$ótíÀòFü¦Òø ú < Þ ¦Ô ýòlñkðòìâénãFàªß•ÝjÝ+ÛÇÙ÷àçÁé2ìCëÃíÅõþiM.¼$ýóßîjìÖíšðUó–ó/õù—ûÁü@÷)ë ãZãédîiósøÁ÷%úEü ûQý}þEF¢üõÿଠª 7 5ŽÓÿ‘¢Ö‚{/Ÿú÷pøyûxŽí–ÿÚúÈöòê±ê¼ïêòKúT|¾m — MÈýÏ÷8ôÐîoã¶Ý²ÜÞgê¿øà„ƒ Þ }Jðü$ý^ °ÿš1¡xB ë~ yþøšîëëíBëî~ø½ÿÌa7Ó6Ly+¬rv ­=ùá÷àþx ¾Ñ Ò =Ù¥ûñî4æ·êÆú ”_K q|õ¬éÞ××÷ÜÁçÐï§öh ;ûAD  Q еú´ù6³+{«ßË ³rùÞîôwùó ÝüÍôo÷û õ¡Ò bOl 4 B ÂÌúüÚý˜ÖÈl Ë F+üV÷‰òÕð ñ_îÑëíí+ôºû¡ýMûNþªûÄõøsù{÷(öëôˆþpŠ®Ÿˆî2_ûó4ñ2ð„òâõ^÷ùòú”þ´þÉúsú:ùËüú“ö}õ­ü —¸äÕið b›GþÄöîvë7êCèzëMë¦æ(äÈætësïöÝù„öÝôÅûÑ‚ ãôÛøûvñöïòŸõLýá>üôsíè\ê¯ðÂôá÷sùJü¥ŠàcÆã&eK  k¥úúêøýZÊ 0…ó¯fûøÕú[û#øœöD÷’öùâÿ \W|Cø¤íÛéœéÂó‰ o3U‰‚mþì÷Zòçïbö8÷ÈðIöºùó±ê¾ää¾à±Þïäææ!æßêlîìûíÁ÷þÿÌÁ`ÙÿüYþ{¡ ¶–²2 (ý(ø†÷"÷Zú8üý>úûõòÎìCëîð.ø_ÿáÔý2þkþ,¶Mþ1ù5öAðfë÷ð-÷æûZ“ +J yb”yýwûEüýùWõøÚü¦üú^ôþò|óWõ1ûµý,üäö‹ðÇðùb‰Ý&æ$Œ' †ý;óhìÄì½ðHõ úXûJ ì4÷‹÷øqùkö ’b¥ê`"#0­4Ã3¤*5ûvðjìvñïú` Œ þ8ñƒãœÙÏÞ„êùóîüK ÉKŒÒd ¾öPñw…€ÿüê<ô·Yú÷óÈôöúõ7ù*~ÑìF¼üü8ÿhûÝøløö6ùÒ9ñä᩺ Лüî÷1î)ÿïöüô[ùÉøáòOñ#õÁûrýÞô¯ímïPí°ïðû³\š#â.”*ò"Ù&ó7ëNæTçˆñ¤U¡ ®-ôßðOòÜñçôý;O´àcŸn&î ‰bÿ‡ôúì£ã£ÙÞ䳿4ï+ø`ÿT­±ŽýöþÀ«Ï'ó*,ö(Ÿ"oL— M]ÿâÿæÿW‘)†÷ñðzç˜ÜÕíÜ$äúß½ÞVåëðe4 ˆ Ùù4îvãÛç%ì|íœøDýjqˆµ¢ þÏòqêQß”ÕÔê×ßçêà÷ú»òÇìëøë×íñò¦öcüôj›+ Y=ÈÜ 9[û6øùò÷óýºýØÿÁ- ) È ±ùõîëé¿èYöÉ é(ø(d%x!’Ûÿ×úû¥÷¥øŠûKúƒüd]Ø¡Dø ôñòEõ1õyûéu_# .$1a-b+ õÿóíåìêîÖøÿ.›qIÿ§óý%÷¶õ³ô ðdî îÝõêí …Y– ÑL²ÿMû:ú2ù§úƒûgý[lÙ—öõï9ëçâêÞkçêò¢ü¦ +|h@ö÷è—Ý¡Ù#ÜÞ äiõäHf%ó5ñ÷âñ‘í[ï=øöÿÐ$  ± ~Hc'À$< iþÀÇ È$¶*9(˜%ðñ>þøönõÎörøD‘‚ ’ õγÒUÚn"£PΕf»» Ò ‹õ‰pþ;ýõfíQîñë;ä¤ÚZÒŠÒeÔ¡Úî’þº ö_ÿ @ I ²ÿ øµòFóZ³ ĸ·þâþÿ”üÃùd÷„ù†üÇýf4Ö LC KÁÿ?þ¨ü(ü©üûúõLíÿì÷Œ“ ¢ CûûùöPöaö4öóúS¸ ª Õ å‹si b§  Å•þ¶ í\ŠÿÿRèâð”ÜSŒß\¹ý|ùù@ôVòVñ¿ð|ûh &m #³¶ì‚ | žu× ô¯ý¯ûÿóŠîvñcö¶ùÿúxû1ütý*ÿXaõ Òëü Ì9ùKò×ï,ó—ó‹êvìNôÂõ£ø'÷*îÊæÖà8ß=âÖßeßèEñsööIõ]ù¢ürÿ·ÇúëñdòŸúÿp‡®Ub%ú9õ{ñ]ñ¦òõ?ÿ Ö£ý²úõ=ù/T }< î »« %"> ‚#…1 ‰ ·Üþøòê¡ìëðºñ ø]¾bÔ Ú¿ûeòöEú¼ú¸©„ü>ùaöòö2ü=5ÿ¸ðïíðÍé‹éäíÛíòí`éJã\äéOîšð^ô³ú{ù“ýÿæÝ 6 3= „j æNùFòØéZä‰àÑá®çOì#ôªü§ù|ñàèqâ âæ‰ð:ù³k  íª 9Œ¦‚múy÷~ê4ßÜ®Ú"ÜPåéì;óùû‹öÝøøw,  Eýëüø ñà÷%þþ2IDFl §  ³ «ÿÑò·ãÄârô¯æsû*ð«òJù<÷1÷ÉüÅø½ômøìþ3øj”×* ÿ ¦IûÞïïÄëÛçï"øóùÊúüü²ú|ùØú ù¬ò•ïfõ‘øý€Ñ°] ËÇùìó‹òEèHܼЙÄv¾wºÔ»êÆ ÑRÜð(úúû^üM ë›#«$ž)V,@&t"æ ¿ËRc î $•ïš ü ëÞß:ÞìëUÉ U š P€ Ÿ " ˆ š §7ÊV¯£Û‘& †þ@îôuê.íÓíÛï)özø¹÷ ôSø™üÊýCê\ ßHa Å.¿6¹øÕì¬é~ê‚êVêïë˜ëVéâèìjô³Š¤}þó\YVæƒ#?'¨$¹eR0æÿìü(Š eÕ ÊjÚüŠõšî³ê)êþïìðêk&[)Æ(u$Þµ•¿¦· } Ǹù öøFú'ÿ:y ElZ Ýÿ‹ôðì>ë_ñ¾÷û£ýmÔ¦šZö,ìtê!çÒåsçÂé:ê}îyñÔêé©ñeý6æ ~Ä‚lýÔ œpÐFÒÀ K ¢Äý›øƒïå¾ãÙé¡òæùb* ;y üJ¬ñûgóÄïTùéט(d,/@/_&'À©ÜÿvûcúPùáúüýÙù¸ókóøz­ Àt š ÑnÁ‰XÝÂø }ämìXôIs "þéù®õxéÒâyáÛåöîý­4ïò>ÖŸNþÂ97Ä Ù£ûBñ;ðÕìªïÞóoï5ðöúiÿÎãtzÈ9ý üø·óÆë¾çö¼ûý¼ýÂìûö6ñTíö¼uÜ  »ÑÇþ`ýLû»ùƒ÷’÷qP  $" T¾ ½{$¿ ˆ‰SÃT Ìÿ›ø£ôyíYï¶ýéšúï÷<õ`öÏ@ggÿ Ú9óÍþ²ÿr XõAÿÀú»õ<ö‰ö–ïåî¡ï’îìòJòdñ]ø™ÿ¿ lï øóí1çŒçÂéŽêðhõQûÁÿ´šB Lú°íÚsÕªÚ0Ýüæýó$þ•ÿáþ~ÿþöþèýxôÜçÝçÿñuü“J[ Tì5 Db÷)ð®éxîRó>ôäþ ›­öõðÓðêôíø.üü_œi ƒôLV²p6ƒ½Ðøòþó‹ý/£ˆ  Ó?ýtüœû•÷žûþÎý_s³KýÏô÷ð;î*î‡ôˆùVúQûÇÄ ÓÇ Ñ Ý ·ú3ô(õÎõ÷} / ¾ ÷ ó?•÷÷ðõdøýOûxôAö«ø1ú¹ùxðÍæ&á_ßuå‘ì©íFôyËp¡þîýñšõ Ñãý­Ù âèøüé[ߤÙ+Øùãï)òÇô7÷“ùŒüçS0 1 0aûr‹ Ê ŸÛŽ©4T eˆ  Í4² ˜K#ýeŠ< ¹ý~Ŭ=üñöÌð!÷âÿçÌt.<ˆ_û¸õ¡öùùÒ÷áïYíÂñmõWù1ýÑøÊò–îáéõìTø¡úÅôÕõ‡øÙö ó6òõ#úJüTüjþz½¢¥¢,ÿ7ñ£à£Ø@É ¶D¯â«’­¥½ÁÒ—Û)àÐéøîó»öùÀû:Äå—`*   ³g «—ÿåö­þ 7Ç¿ðsênçýî@ýøóééò TÊ^CÖñZÜ€þB”Yþô¿ò/Pû<üÖëÿåøýæ×>Ljþ1 –‚ — ERÿÈøµ÷lúlý­ôÓðˆìbñäûLý>5üšóFø òtáSá‚ä'ÛÜØ¨àÔäîñfu ‚ : øQk Ç † o)¢ˆ¨Š êz@ù­îPëÀö£ùQñÁî}ëÒì‚özû‰övôÕõÀï¨ïýøt¬ E!Ž#e"ð —Yª áo —á6™ôšúúöñQôþô:‰°‡–"MÇ Ãÿtøâò÷Œ)l­üÆýÓª Ó Õgñ•Šû ¹ Y·Óü5ÿ‚oþmü=úÐûÐüvøbù‰ÿkû•ð2ï@óJøoû!ùŸö fxýœûEörñ>õyûwà ,ÉÆ ® © ^ÜŽºôxK¶ùûéú–ô¯øÔÛ– ¬ ¡ @\ýb÷“ý&Ü­Ù™c#I'>*°)|#úÊF …;ï$ ­<sÜöPôÐör÷)øÔø]ølúzý¶¶ VS=û\øÿò`ï$éSåàîLù=ýÛñ׈±6Ùþûô”ðìêéÔñFõþž Gþ«ìÁæ­åMìUú_wW&  Mã" c ‹Å ² e«ùcõÃûÛ=&ü/úD÷˜ùŸÿzÿäHÀÀ.&²3¥^¡*ÜÔ{}‡ £[û¡ú*ýïÀê–ðÊð^òÚóëõpþ÷Ú)¿ü]þÆ öê}âõø <˜û5(òÒ¾j §þ/ù û ù´ö6õþÎ ™C ?B 9 ó;çhã¾áÎæøðšÖDyö©óæöÿìä¡î,ôâîí2í’ðû<æÿÄüú øÛôøòBö‰ý’ÿû½‰ MÂý‡ùéóœò¿ôµñ=ô‚þAÏòýûð½ìEñ3ðAîòuñˆô¦ô óšûŽÿ:ÿ&Xôg.A¿ß †ÿ¬üíù#úöî…ãèèèïÝíÃèõí-öûÐÀ S‘Í “a!³cÖhû4ùHþÁ}:l ö¯ûáðYëÊçäÝãÞ†æ‘æ>çFè¾æÂæ.éeê}çæ¶ë¡ññîÃó¶öÙûI6,´k È ƒ~|¨ýP Ñ  Ôâ÷ õ4å£Û•ÚôÕÛÑäÈé=èqäDåë”ó¶ôYýJ º^30jãý¶þWÿ¶úCóòðZùv i—ùxùý÷S&Ûë* ^ Úü´øMž ²$ K ý}ù÷ÅøµöK÷LøWú‚÷HöTü¥nCÿµüXg¯ Eãrg³ýþþŠÕ& WÜû U]E o ‰ Öÿ3õOîÚ¾ÍÎüÊ$Ôâ]ç åÎç¨énátÞsÜväÏùsLE àÚùS ÷Oc >m·åúÚøFù;ùyûsúÍõ ööö:ýÝûùõõúò8î\úWQ «#m üþ‘úCî&ìrõ•õŸþ’bKù©ù›uä Ðù5 Uòžù$÷Nï€ð‰øãõOôQgýÞø‹] ° L?¨þ½ö¾þJ÷˜ü¯q¢ûcŒþõñÈòí…çFë×îÐúŠ @ UN亂. Ï–ÿôûõ£óŒîãåSè æ1í"óõè÷Çúi”¼ J" J ˜œ $D üý¦ÿãTúí¦à¾ÓqÌÏÖdãçÚìmñ!ôzüY p]Ç!#Õg\~°îyð¿ðEòBd ñòî3èóÞÒéàîë{ìZíýê/òþ\û"ÿÉþ+¯# A ¨§üÑõžó0ï‡ëüî¦ûÙ“}÷ÆøæûýÿÑ#Õ—²øÁpû4ûÊù*þ&ÿ:õõÎó’ðÚü¤ì(Õ"|‰m; &Äj…ø ôºïaïDïÇçµç7ßÄ×ðÞuë8ðu÷‰ s <65C/D#ו╠äû¯ýXùoøÉò ìûæä$æUëƒð³ò,ì³é]òNû£ý#øhù2ýgþbþúòóëóÑúsùaþ!Ò÷ÎùD‹ñµú`øûÐøhù«øÆùdü»ú%Uå‘ O›žf"LÃ'º!ß%^3ø/#+¡þ 2 9 —ýíúåû þèýIû¥øü›ý)ý3’sŒ'Í+Ú*ê"u¶D[LúzïOú¸ï±ïF÷IîfêžåæØØ­à‚ë3÷æú`ý-æ#ï,E*‰&ø)†$̆”=ýTù_ùKAH ëçaúyø}ýÉüœõ”õ÷÷ïú´»:Š– >,üÌË…ý¯þ ª 7ý}øáû´üÞöóºñrø¥ Ù þWüŠÁâj͹ Bÿ§%¿ Ð ‘ ¦Ýùõ]÷€öÛóõùøì¤àhéNçë÷ÌóÒ÷Úø/ðïñµ÷„ú’ÿæH TzC,”4,¤&¤*ߎùjð2ó@í]éôþ÷CóÝð<ó…ýÂÐö˜ñ¶øÚóoñ¼û>þØ f …7Ú"ã(N ÓÁ ¬ í „òÕéTèìêní–ìfå—Ù'ÑøÏ"ÏçÎØÖ7ãÄíâò7ïéì”õ´úN; V Á—úU 4?ùØö†ôíõû¹ü2þ°ë âˆßÀØrÛÙå×%ãZëÑé¢è òÿ÷ ú!ýbüǦÌã1Ôÿâêþ’ò*ç0ålê„çÈã¸ìšî­ì¼éÄèøðÙ÷ûóœö¼û¶ûüYý@%µ Ê(¢"ó!(âÑ ÿ5üj?pòµìªêmé¸é4ç™îÎìè£òúkŽG3~Uÿ6úZüAø º ^Èš½ oFèùPý&Cc<rYþ?ñZëÓëüìrñ%òïî§ñ ìÇæòëïÜ÷Ñÿyþ¥ùïúÊF ?g ùý¹C‚9 þàùüBõ4ôñý²K´©ú¡úrö=ñøòÿòCîlìËí+ð±Î3Ð › 8Õü7ö?÷ÚöKý\ º ùlàÿDý(ú2õ:üò× bõ*ø,_ =— µ Ì’ùâù>âúÁô”ðåî7õÙýf³ƒ%€4d0b7¢ÊúÞ÷VôvòïüóÛø ú^'Uõ ùJÿvþ^þvý€R §žuçWõÐëëéãä¯ñ©üS(4„þ ŽHíù¤ýÞÿ~üšõÝñeôï†ì¤ïPçbåÇíÍéÎïyøRõ.÷Ðþ¦f´»K~ ÿyí'צ UÕó¸ñï¶M â ÓØùbôBòaðMñ}ñ„î¦æ}çï•ñøïü( 4HäD÷WõºæÎÞpå§ìóõ!Ⱥ¯È.$}ÿšöšþ£—þ)'½þƒípäYæÝßÉÛgåÝñËÿº  D#¨¿ Ð÷ | ó þéð¶åWØgÜ›ÝaÚäêúí—ùËú;ó‘ô}úK   UaF鈪TMÈl_ûNòY÷tûÝ83üÿoþ·ý‹ûUýòÿª÷÷²ûkúJõiòõí×étò=õAø+ ‹o »Œùîù<Ä ìö¡  ÆXûåõØùÄý¬øÍù+ø›÷ø óçï;î‡îlôìþœ¢³X·+*Ë!Fd 6ÿ}ù.õÃý–ïýøröïëèdäWÝüâ›ê¢éýí”òãðÖðHø“`9I?¶ÒƉý¤û6ÜÛ Õ â\tÔùüöë÷÷&ãÝ>¯åúLðÈê˜äòß^áçá_äƒêÿ›@rÁÿ o ø ¯¥ #ýþ‘ ;Éý–5tôqù,`÷2ò„î°ìû%¨ ƒ+ú±öý~¹ = êXÿ@ùÛøºø":‘Üþ=ý]þÖóâçîaõeî“åðä&ç1ìWð¬ô÷/üÿøÒŸl )Ì• >žÆ D ØÒ­ ‘û³ØþŽûþ~w÷‡%þhüÿ4vþþüÌû…þ…Gý}þŠ ¨ÐU?! ÞË ÿ†—uŒ»"”»Þÿ¬ùóVüùRó#õõ¼øÅÿÿš‹ó-ÿü@ö7öù úÌùÊú!úœú"ùB ëõw÷ ÚþIý&ù¶òKì’å¿ê‹è*åãíÏò—ó›õŸ÷þ{þ(,H!Í$ØÇÕ³žjÈ·ì t›ÿ½žù’ó ð³ò{û_Ó"ßÜ åmòø°ú¨M Çï&¯2Ø2Ï#zü0 ƒIñùuô¾ðäîdòñ,öíýŽÿ6‰÷øPö ÌI¦Åø 4 †:ýVõùðÈêá@Þ˜ç‰ík÷Íìÿ4ûlüüVÕoÿ8ú’õ¦úaü¾õøø ÷ÿó©èºé©ïiöÌý¬„ÌÙ ò 4))»Üû?üöýeýõEïÆêBæUé°ê—ë²åÍá(áõæxì8ë<ë?ëäîvðjø‰P† ý=jS20 ÿÃgã,ù¿÷üyüyõÿaüéþPú?©©Ü Ÿ˜ƒ /1 *üXôñ¤ö_ñtëõŸõ î óú÷ô! o·®¯$ùþîùü÷ÿtó1î>û§0 3þ{ùËöñíî¦ôÜöKõöÕÿ–t‡O QsðŽìMîí²ãšâ)â>å)ñ£úqTÿ!øˆóŠñ®÷¦úNöwõa÷Uõçøêzo;™ B 8+›}&"ûò÷’ò3÷ûög÷Âö!þ]ZOa–›ëyˆ3Mìlÿÿ0 $[ÿ×ý?ù ûöûÊõù`ú´ókø·ÿýã §ýjþùáò˜õúöOù ÿŸ F ¹@ù4îqî~åìéëöUöõøõ. ’@:ù"î…ä3ë#ïæêmì¯ño÷Z¶ ¯·ÿãñ»8­êþöŒõK’ø ß—M J°œn÷°ñùñžòövÿýs>  a¶øt Æ“$a;1¢aýø»øøû†ü§uÚôvèèBäâJà æþð(ñmñôývR ]Xü’W¡€!_J ‹ˆýÑôöÒú1ötó»þ¦xanýõÃóË÷oõhú$SúŸïÀõ¤øxø¸úõÅòÍ÷òôXõ×÷ÁûŸ ÿþ™# cý•ó$æÆà@ã»áØááHäžâgßgá§ãäfæ3íO÷‰ÈÎ à‹   |CÿöÀæ+ßܜވâåækïðWãÜKâßãÕà(ãÀéíî7û7  Úœ¦”üñû\þ  \ÑüýÿNùZðíhéRíhõ ù©e †²úéø´UùÄùµöÖîwì*òXöüÈ÷nç«ÞŽäÞã¾à÷åfí ú óºÿ.ûšï¯æéZãDßáæŽòòñ óä÷÷Êîoæ3è‘æ5ñÛÕt  X JÄ!+ÿ §Zú•÷žõ>óÕñköVû¬þL · ºóÿ'. Ñ£E þ>3•» ëÔýfò×èëí›ñXöÒýËøûöbôTì(è"ê›òƒû³: ½\ º´ 1=#½Ë †žùûxþÿô-aó®çHã èOæ;퇷˜°o & TþXù´üªý·‡ùÎÌ(ï éþ«û ÷ðü  Þ zNRÏæQ `ü®öáõ#ñœóºù#ýnXH† ¤a{ Fm4%—1µ4%/¿)¿¤ p P [ù*ñÖõ#ùCïéŠâÄâ•èbï«òðÐøšÿÈýk í™ ö"¼Ë…\y#wØ v6ùÎ÷Òò.÷3ýöMï)ê éÉózùÑOKížÇa Ìæý_µ :bü@õßüÏ0ø±ò þº; A,lŒrt¿ — ¯ü vö4ðˆò¤í½ç íúð­ûyÿ—J=úµïCð%ûä é#°(ç&ËÑA º‡À² Ö MþÙë3æÊå~érñ-ñ1ð$ïéóéÿ'ñÛ  ×éÃ9ÃÜ = è£üúõ‚öð¥î»ñªô¬÷}þ•üîø&?atîÜcö ÉŸÖ·@Ç !CåüxõÃûˆÿs´´®I Ó /ÿŸøÉû|£ýìñ`ërîßç¢à”æ ì"ÿG–üYûGû‰ö×T Ýã˜c Õ A{¯ÿYõ­ÞÞÔÁÛ"çú¾{t ¦Æ?XË®sùÿ6-µ ·'•  \$À|ü|ú³Ø8ÿVšûîüï‘õÛ÷ÉA i Û Ëñ* ©ÛžU ~ ¾ muþ×9ÿ›û|Ú˜"hÑ%ûuöŠòžñ ýÒûòòXìjèŽëòêiþ2 þÜ ¼/ Ó / %%H \ ®â :ùéÄèéìµéŽê_ó]÷6úæúÎÿ£IHM®#K"ܺf¦a¨¸ûÇówðÇò©õõ×óÓñ(ï¤íyíšãÞ{é”î|ö“ WbÔHûòõø¼ü$ îDËš #µY … d @ ìtàÿ®!þÆ ¡ ûxN ©P˜« e÷5ôdí3ä’ñRö™ñqô€ôp÷ušÁï¸ëÌLùîJì@íèë”ìÌ÷yYþüúø…íÿå+ÜØÔ ÕêãÙüSøíñÄogúö¼÷2ÿýÞôýûöÃü¶ø¬ïÞà\زÛâÿêðð¹ñô‚í"ìñ‹ë–ãxðöû+ý@ ¶YÀ?ƒúéõòïìû¨*ô {ÿ¬Øü”óEéˆäHð*ó¢ôSóˆñ]÷gæšãSïÄêëôKñ4í‡ü¯´ýVþay÷‘÷ÿBUû.þÜ7 ¾  U Ö¬ò¬é5æpá×ÝBÞAê¢ë«îæüýúZï§ï;ôññåfå,à^èþ1ùDë!è[ä~çŒé3ç]åbÝÑßTæ,äËð(ý†û pI$õþêþíÓôÃú©ØÆ P7ÿoöëöë÷Pú:ýÛÿô ÐjZóxì¤â¹êçø•únúyú–ô^÷LùÏñ»ó‰ÿÅ +ÿVÿ ÷+ñ?òéˆãžì)îþçUðý>þÂûÅúýøúÿ›†£K €<³Q \ Ú©ÿõú©õ ôœú2ÑÈã>² åÚ öxìCö ò;ü[• ¥×®÷üõ'ÿøµølw Fñ-ùD­DÏ1M йô$ó$ô<ï–ðÔî_îû{­qëÿBùÜø–ö;ô\û^á*üã¡R9ëå hö=ùe ì3håJ Ós i°þ†ü > ü$¬&r +Ü¥ »dFr< Àúùêÿ攤°Ú lˆêÀ-µá9þœ‰y õû:ý•ð9ðÚ^†w )  3C QlE ,‡Dƒä +¨@´ Á ûoù ô‚çîæ…ùR¨" úýlôÌóáôvï¯ï"ôhú%ÚwS þHdùôóyðþö 7 5 } ZÛÿù› ›öYÐÔ [ÿ‚Ù  › ç ™ºo0*6< Õ ˆ zþ üOýñ{úáüÝþEÇBMŠ ÿcþîøóôëWë^âäÚÚêÚÍä—ó ùîùdþ7÷Hðâõ›ö†ùVþ&G:wò<îBôÈôÌõjv § N m û­÷iû7ôDò¼¤áÙ -ßø»ùDþâŸþ6‰´­WzSó†øøÀù(üÉ æ;öÜíðzóáòwõöõ¡ô´öd÷ãîEô%û/ò’øóbö»ç0÷Rž A ÿn S å ^ ½³š—¢Aþw µµ  m8¤û­ü`ÿ-Ló,èæZâøß6îCñïñÉð}çã:Ý£à"ã5á]ã>ëTü#éöËáWòjù€ôUû¬õKøPÞIúsû”™>Æ ÓH®ô 6ü•øõúîùøö²úÛþä.ˆ“ôê«ôbù‹õ|øÛÿú‰ÿ¨Ïø§üüøâöPÿe÷~ï1ÿØú^÷Æ]ýëûKüˆówæ[òJî Ç"ç^úíüÃôÏóýÿ?ùØüb¿§×O'ñDð˜ú‘ôaëôÛh˜ `¢ æwÀü} ŒFùö’ìÿÝfÕÔÜÿÞwÚ¨é8ô$ò÷÷·öqìLú_'‹ ¸úKüø(÷ÆûÌùúoøÁû‘ÿEüþû û"ø}ôñ–ïÍëþï=öÖðéÎêËóœý~ÅDÿÉ|G%_îcÕû­§4 ÷ü›óZêÝè€éÈå\ðÇùùëÿ'·%ô-è{è}êWþóïè4ø º·:ýÖ÷ü¹üÆ IÐ g.œÿíò;í¤ôãõêñüóøöUîê+ð‘ò/ìMí¨î]ñþõYô°öÃÿ<½ ú ç!&d #áð}óTñî`õ¡ö»ý>2 ² H÷Oñçõíìçå×ãé˜êüåãSâØêqü¿„—W/!0-F8£0m$ ê ^qb ²Œ ùêWôcöÀî{ò›÷‚õ7ò¤íò²í­èºñ#öNû£þ÷þŠúìôö2õVò—ûtýÇ6 /”º…L²ýá½ë ü8ÿ‡ Iäˆ þ s ùïýý’óÈûaGøÕ¢ó8úwñ/î¿  ‚’Þó L KqqUl*ç4×,µ„ ÚÎEúuñ”öñÛåÉãNäÜáµäséúêó¦ÿ(ˆß»ú =Ï*ÈF« M»‹>þ" š:þóõ ŒMÕB:Œ ¿ Í g Ð …¥Rÿ£ò î ò¦ùÍ”%j_ þá0/¦$p…mY§ ÒÏÍ  ÷Æ Ñl ~úµô`ø•ü •bc0þ6 qVØ›¿K´ß3#+Ã'ž%œŒ#1^þ¶ •aÿˆðV4-õ=í<ðÚìeßšÙõääï:ñô¬úøú‹¤ ’üï ‡ðýâøÌûÃûLp ± [}à Ô¹5(  ×”ùŒößúî²)Ç ì Ô ùÌñ<ð´é~ëö‡øyûීܱÙ!]ü Êïwíö*ð>ëÖîŽíˆöÆùjéþà}ãòâûèBñFþz{ ç÷ìèî8øk”ÿÁñcøœÿ-üÐùWûuþêtŠ„-ªøö†ùôòâ›ê‚ûý· – îôÎðýó,ùÉÿû 6 ­v=Éüdù]ö›ù¦ü¸T!ëìóÝ÷9úÈþù·íçé:î·îAöÞÿßù»ïöåìý7îaðMOýõH…’”/öEd<Û5±=ðgö÷öèìfãÜâKÛ•Ïý×¥ÓÑ‡ß ÓßÊÌ× âåÛÞ]÷›÷T÷ãOþíþIügüûz€:þçþÔüGêð”§ÇÐTô¬ø¼îàäà.éQíá:ä¶í;â.éHûÞëºæØè(íWõæýGJ  ç 0¶Z ‘ ^fVýÜ XÊýÞZ îö<ë~éÐôLÿÅó™ò ñŽÝ‘æ”öˆéXäþá”æWôzúÛó…ì’ìûò[ø4ý•ÌX¥#p«Lì”û ½½ ÑrúìgÙðÐSÙ\ØnÖ•Þ×!Ötâãý÷jÜ S J¢ âË#þgü¿ü%ÿ\xÙ¤8¿Æ} 5 ô ¶üÐù…ÿŽpúˆë+àèðòÖö{ïíá]åÐæýè?ü¸Ì&€ƺÿ³ú' ŠüZ‚†üNÿ]¤Ý Ê q ˜° ý­³RÉá ÷ }ûêúøõüðöŽçƒàfçôçësïCô&ö*ôÃ÷a÷fö\ýûHl”ÄÃP ª³ûÒþÎø·ûV â‡ý…û÷äþ@ñ&G © âþ#øyõÚø ü{þ]ë† M¤û—ü–øoÜr”ËMævè^ø`øûNùø:Þü"î³ÿå!KYí ÿSÿþDü.ñ²çåñ ô+ëGô…üÓÿ>°Mæ)|7þ+µÿb ûvò,ùºƒr| Góÿ‘  »ýÇüu™ù ôàó÷Î<þ‚` 8Êÿý‡ V ² W±ØûdótôáÉåz‰†£ æ !·Cèï ïM¶Çç ‘ý»ìdò\ñçè1óò÷[ó¬ð)âôäÏãèÕ]Ö“ÝÂê‚þIÿ^÷îÿCˆýŠž"âÆ˜'ÿ­úÅøÇ[줭*ø*Ⱦ |ùRô—þaôrí]ìFérò˜úó!ð#ý ÿùÛk þrûüø„ÿÃþ®‚í¼•4 $ ¥ ÖOƒ× ={zªú\,ø ùBü‹÷Ëî¿îWó5÷ðþSÿË÷ÁùŸQ{úÖœT |×E ¯úSñ˜ ‹ãP4÷^\7þÑÿ¢Åö?ê&úˆú<ìdé£êªô¶øÿkó3ú‡úãÚ$Ö7 · Üôhòcùrñ•ë¡ï_õ™êntݾ}<œ R ÁTÆÁÊ ©¯ f WWùËô†ö:íÓç]é¦êUìÂê2ì:ýæÿG ´‹úN n»üÇéùµ{öãýˆõ0á ç ùöbêìïþéŠî×öÇðôî#üCîmüÁ¯ kÿÉï´çÏÚçüëä$ßøhúÁô ü·(‚2 0û÷»œ Ϻç DTè÷ï/ Kš9 Ý% )ÿóªñ»ó†ôsö_ûI›ý¥õŸø¹ò‚õ‰ ¹þÎù–úÁùö úhö¥ùïôô‘÷ gÿ›ý­Ïúºÿ™† ðªPÙ!*M¤ß7sù¥üøû5îåŸãGçÈã¸ÞáìBê‡æèëõë4ëÀÝøåøð ínøž´— ( “ÆÕáùtñ0øƒöLâ ç[ï&éiïZêÑäõˆÿ‰ª¡ý_[×míÏý«øP*ñüðô ç ñÆ8ùéíöÛð1ð&úÖú.Ö¹÷‹ú‹ôãïð!ôüuùWñ¬é1ýxóïè‹ä„ç’å^æÚö÷ûÇõû×ûIöÇùJóÿw ´„þq#Üz iÀ«ËPBÀ ùÓë4æìšâåýï¤äÓëÝìñäÿÿOað<û¶ÿ>ü`v´1"…@?:ü¸ô±N{ð çÚû¯óïçÆúAéã*þHùƒøÿ¥¢÷?ü´ü“óŸùCý¬üªUŽ RøKõ ýBó…b ˆ ÿÒ<žÿнõŒó ýnôdT ûÁûa÷Vü‘:CÿŸñ¢òóËðJõ8ôúõ8÷˜îøòÔñ!é=é6Ýå¡÷µx YÌ'>àS )Í&R }%J%Ñ2  ² È ´ï<î°ñéüù¯QZòˆøcøþ6Ž u5 r¡pCÿÁ¾² z1T‚šùVò#ñoï[ýkDôë ÷žõ›ýò¦ VÅ w M†ý¢ k¸6#_É¿h"œS?œ‘°²ýÒºüÈç 3KÇóƒöèð™ò²ùÿ¾ö÷SòJðIéïõüñ!ìÃá»á}í'ù è¸!¥9 |ÿ1Åðä “ó. Š … X þô’Û tXɧîþb~üÑþꯨÔÿ4 Å ærþ† GŒ·–¦° ‘òM ÜÿøéŽô1ýzý+n¼Ç#| öÔûš ¸EWõÀzH&= ¡ 7’ý! ¹ÿšf6 ¿^ÑþÜþ<÷pnþ÷ñîõðíü°û<óèè˜á`â‡æêóYýêËâü’øì lønNõù8ÿ]ùlýÛüHp²þÿ u Š à ¢üùÝëîç´ýFò7í=ø5÷‚òõñÍöþ÷8÷zÿYùüP # 5&{pšú®a _ù5ðö¢ïÿñ—å§ñ8ïPîÇô?î´æ˜ðdô–ð;óø˜…ªm Ü …Miý¸ä%𬠺 é¬\$רÿ=úIððïrñ¶õu÷—ïlé‡ëÇéˆéBëQíäñö‘éAíÇú?Ñý>ö%ößùÑ÷zïì©ðú2ú¢ú ùØéðæ-êÇð÷ùö(ðnñçâžãpÜœÏ8ÐHØ´Ö’ægíCânêŸ÷áýC x-àü\ïÖNAx 8öAõ§úVÿ²êBê7ïhíóòÞéræÌæÁðãüpüòyð˜ñ©ôñæîúöÛùýž› Ê8Ö ùÅÊñ  sÚ;[þû½þ˜ õý Fóþ÷YúÄõ÷N÷Öö$ð{ðóÌëÏåïáÀáŠïïú˜ñÁõŒúéñÒñˆìiíªøCÿLý@ÿùü ÷¢ÿ}¼=‘üö¨î6ßçß^âzÍô͸ÖÈћޢä*çàùnö>û7t¥Û'?•"¸ýÔšþIû÷éç2ë­ü}õšæþêÂçÓßRè¢è¤ÝeäŠÞãæ6å¤ôCõó»äÚ›àÿS÷W÷yóî:ð2ø©øÉýätv‚ xþö?øƒþö çiÇв¾5 \ 2ùÌþn ÐÌûŸûüõÎòAóBîZðRé0à{âµé+ô÷T‰ÿø Ç fç÷Û+ ªáô z0 T'ø‹í?ÞwûH÷ââôçYã ×Ôâ1÷(móšóLýFúƒ0ºQ$2.^ $°/(ì"Æ ÇbX'ýþ Ö´¶øZóRïtê8íÑïMîÒàÛ,ç—êß2äféùæü÷éûÓõù¢ô²îù6ütò>øeü8ùÄûéíáüÄÒ)>'.T[±mÀRo 4¥ Íýä÷`õîâæýì·î"ç8æ¼èÂöeý0ú¨,^ \vi"óág$XÊ%‡Wóm V ÕqWÿñFù¬¸÷î ñ£íDæKóÉü2ðSìEùåøµöuùßôOÿð7Ç£ }¡ñ""/.y/7772t.Ò/ƒ+J&¿þTÀ+û`ýþgåÉáwåèìÖßuáâ¹ÜÛâ´ÚÍØ™à#ÖÒÕ·ßäãþæ1åDê òò¯ÿí ½ !‰'Bý 7˜´Í} ò ¥ rgú¯ô ö÷øø ÿæù¡sÍþýûÏüüé ¡« v_¿± O ná { ‚ ³ ¦<ó ˆ Éz *Á©üíö;ûÁôîÏýM÷þó¥ô‚ãñ#üÄôgõÎìƒõ†úÝùÕùýX áÑ í ‚ B Û¶*$ f 1/¼’0ö=óëðÜè:ìþéÁÜänæaáèiïOêTàãëñóúˆö¸ñ?û+ÈþÜô2ï¿÷þ‚óÏøO²hxº Zò °H5¡W o¥Rÿ†ÿÌŒíÀïJü{öýý–ÿø…òËùjGŽ» ø-v IT • 7y ŠhCbë»åÞóIî#ìPñoñ½ôÈðçèé*óóí*èò“õjótõÝûGûaùÌõOôêü9  [ÿ!~S 8où4·^   ¦9Oì£æhþRô7ñßóBùbû@özÿ1+î›ê:îúíÚúäüµôÈý~þ/ùUýPþêö–ðjøxùáï9÷zòÎð¢ø#ò‘ñ€ôòcù#÷ÂñV÷YòËì®ìâç ò-ã¨ÞšçÕêìóBû-Øú±úE¤§ Ë“[ õ ÉÈ®šº€´%ä Õ@ÿMúgûù¨úDNÕþ¾þæðIô/û£é†æÒð…ë?ìó_ó ûAûJõÔÒ½]* ­MØ2-?ÿ£æ˜åøñi· S B„ >üVûÿ¡ ìÕù* ù™ôZú÷êðžµø†f?ü¬ÿzýVùˆöŸüVW ׿ú«÷5ö«øÐµŽú‰øÅõTÿqÔüCïHèÂééñâæiÖ„ãBäVáQöüôªïXüÆööúH F W Åb ÙâÈîÚàšE© Óp mb ˆ2" ²ÿÐF iøííîJêï¿ðÿóýøêüc h ˜ªyv `@¤¨©öÓ ¦ûúkÚÕý¦ü%ûvø±¨ýœùê.ùÌ÷ú3ê°ôp þþ¾çÍÚ©ö“ðÊö(÷7ùh- - °L Íwi+ö“ )'ÄþnþÇ÷ð6ðeóãë²êLíãæí+ýœïÃïºüqó @ x— fãÐ hãè–Þ ;Å?¾ #ÿÒÿ3pÞÿýFôòóûÿÃùêì@ìŸù¡ò¨ò“þ±øxø³þ!ÿ'£š ‡ ð jâ ‰%:$¸$^ ÿDÚkî7  ’ôØóúÂûâòÒò^øÃÿ3þü¦ýYòdòNØÒùÊ ã *&á , þXøÒúFòºðšÿîî'÷úûÕóaþìjÜõöî×äpòg÷íôùYýú9  w ׿þÿ[ðþQ ÔkÆùBú Bö›J "ª qß õÓôg²òæ¤õvòBëéøßnÝëåÅë[ïQñÃó°øŒûÜüÙþ‹ Àû-=žëLc @ OXZùLjüRû&ü¹ùö¶<cØP ‹Zý‰ûÍà íùâ¢OýªE 諒 ˆµ ·ÿó¼îõï•àèÜìÜçBç‚ïîsìéïßÃàaî§ü‘ýGôËùêùÎñܧ¢ “J ï ÄüúÍâû"ó‡ú€ùãø~ÿûÿ™ý›ó¡£‘ÿþýIÿMýòûmõðáùÜú\íhëuànݨíîòòqô>ôŠ÷³ì é ,•ø7üôþjf°p`ú³û…ù‰ûB¼ ž ;ª2ÇyŒ u½õW|îçðþëÖôeÞý¯ûßæþ"[ÊYxûú“û좾– Ô»÷ðê­âàçœë¤êtóöEð£îáãsäwíüîCéLïœú1ùéýå¾²0¦ ÎW ù ’ÎNüMúæúó\ïõÝöñ÷ôýï•òÉbÿ@„ó^úsë0î©û[ùêü»ô~b sä@Öâ xW T yú©õUü¾ ÃÚ€¬þÍøœóÏññLó8÷¥ûøÿb—ý—þÙO\ý ) ø÷ŒõÊtý&pÅ ×`ºú‚ÉrÿõmÛ å‘r Zþ—û ì”ëÿö=÷· cùóúeþUVï‰ô#ý]º þú Ë Á št* —I«!´$Ä ¯ð øõùÑëôÂôýê£ùçG£û1\2ô÷1ùûûÌñvþ™ n%(Š<<ñÞû¾þëìöò"ÿšÿv! h}ÿ»ø‰õéîñMüÉÿîrýÃöüüm^úŒùM@¶ ¿Ùúðù[øóóÿ$ $ ›Av¥ ” ‰Û ® —w& S kGÜ6PÁ[H ù=¸$P‰ÓD | 4 6Ó÷Àø†ù5óŸø5ý;ÿw ÌÄâ hÆþŽÝ»&v'HôµóDíè7îZñnôNÿgûgöeˆúú8ø$óîÉð¶ðmñ¢øIþ•û]ü´ýOû0ûPòÓþ:Àý$úw_ÇŠ=ü½ûîû ŸÇOÿŠþ³ØþÑí›ø.ú·åMîšôÒôõþÆ÷6ëGòö+îí¨ö;óñðÒÿýþøïBúñlù]Ì ô ÍoàXýpnáw/ˆ Ó’‰M C ÜüÌó¤õøGõ:ù_ûrø\ûÄ þtÞ–Uúôývü6ÎÛ-„þÐÊüöéõ÷Cø“èz” Ô´Âüöwüg÷Ùöwí˜î³í®çxî‚ïXðˆô.üDE“ù”ÿ³üšk þÇüFï`ô˜‹ùôuñ»æ"íšòBè@ë=îçøç=â¼íâÿçû¡÷ ûØùô?ïï©öõ÷Ù, KfÇ ¬ÿÚø§£e>ÅL %eô²ûý"f YùDïxòôÍê"í…ðŸôÉ ‡ k»ü¡ Ô 2ÊÿFþ@ùcøÄýöýnü"¿ž'جó÷.ö†ú¹9^|&/(˜ q‘ö‹õšø |ô9í$ò‡í¾úõÿxö¹ôµïùï…÷Oü&Yý_ì5ë>ìÒë­ï$é'é íZê€òíö—í<ëÍð‘ñKöi÷2òsöòñcë7ï]÷ÊN–øüõËôVûô–òAú´ÜTð ûá …{Rí ÃïÛF  -?ú\ôJÿ+úÖðXü<ônçfîèåèãòçtݱêwû/Ó ‰ØøPÐù—ó?÷‰ûÒþľûÇòæñþûbµ ³r Óõy–ë @ýÕBþÂøŠïÂ÷ù>ÿïÂ÷ ý©ÿ©ùä` µûÜøÙójñ¯÷ÛøËù;Ð÷=æ8í^òrðxû…üÌø2ùûÚþ<ô§ùþ} ` ¯ $-fôÿ…¶$ §sòvô+øñÿà æÿÂúKþøº8 u Å ,¡ `½~4ÿîü5öôôæìàîYò'í¾ïzîÂêšôµ÷ûB³ø2÷_ú(þé—zÌ fëîõúó<õ^ô ûÙÿÀùãùpþ§û59$)Õóû M `þHø¥ l >x VÞÐîì£E±ýgˆ¾¢ ©ýƒúÿ|üÄüxÿb÷Ûë*óÄý†þ–úÇ÷å‹ Íl l° ¬„þ ¡M•üÝ/û=øÂý~ÿ¿üêq ¾˜V 1 |C­©¤ ]ì UÒ3@ìÎòŽñüDúÍóEò¾ëdî°ôï’ñÕýNú%û4ÿ­øÆùÄüäû/ÿÀ @¯ðÿe H L,„ †à ÄÁÿ ³C DŠþçDê¹ e ;Cƒ®ÓT-Š!WýW §¡üü"ÿ6ý~Hú¨÷(§ÿb«k÷Œ .KƤ9 H y½ÿŸÙeÏ"L üVðjñ~ûªú<þzõuôQùèÿ¼ú.ûÃÜë nçšüùúIû[Dûÿ„ ü ÿçîûQ´þ½ñòýäúý‰û›  HÓÿtÿI ;'þhøOû–{ûüèùÈô»ÿÎô¶êÿ÷üˆý)×á?ýÿt º6ýª ´·L xbúUõ0ôvî í!í›í$ôú÷àù±ÿ1ýü¦¥ÿü³ú{ù© ² Ò Ê– ½Ÿ+9Dë4ùS¹úm÷A÷zøïõ«ò³ø"ÿý-ÿ[ùQ÷ÇFbµ ³ Â(Ž÷ÃéGæ×ëåíJì´ðDùª÷öô¶ö‚üx ý«ü¬üxû¶Oÿ^ûÏö§ö¬ü=ÿ2üØü¢÷vøiÿŸöJòîÕãúçSëæ¤â³Ú¥Ó›Ú[Û€áSçMà¤åRñŸódþQ€÷eë ·™ÄS}¢p¡¿ Ô Š 7 ¬ ¿ 8M.ûqøK2üdü-ùJ÷Ùü{ø×öíøñö‚ûqþ£ÿ-‘ˆüITY„ ú þ # |îÿMý6%vý4÷Kñø¶ü¢ý©ã> ¢÷ <Jülû¿löÌðþéîùDö/õúJùó£íò£öûøäøJö‘õ#ùøòüðvïtêînùbÿÜþêþsýúø&ôKïðëåß+ß%áêèðñfñùõ'údö%òŽòñìGìûù{ ƒ–÷*ïqë º ŸÂ¬&ÄV'ÍéòÐïœý_ý6ú™òÅéÕôú»ýÿ é ( i. öýÇï^ò‘ø¸ùì> e‹ Ë èæþüÓù¢úçý‚ú×û>ôúÏhûÑþÎ.û-ùžøëù‡Ògý ‰Ú ǽs î×ï óJ+õ—îÉî±ñ&óâõ½ø§ú«ùÁ÷|øGì“ nþ4é G  1VÿºðÄçãVá3áÒê˜öcû*ø ÷÷ìö…÷¡õÛð§ìõòÕLó  ¼ÌG)dJ¾qáþ`õ/í9ì‹í¬í«ì ë]ç¥ãêÙ÷6ý1ø¼ñÛïJòüûþ ½ 0ÿ€üƒöí%òñôê'óÄúùîýhU1 ËþçD§–¸üwûüúRQõi2 5 ¶ ô½ u ¾;Sÿ4ÀÈ]ià ~ þ\æíùèõ¨óWðêõóü£|NýÕü“†ú c åÿH [ˆyï ½Yú¼ðSñ ñ‚ïXî˜î[ì»áûà&í¿öTùùÝùÈüí^[M Þ ÕþKMÍÿŠÿtý¥á§ý:õïôçtí>îáí”ô˜ïêïfù¯øÇÿáÒøDûÙü_ò  z C × æüÕÊÒiÁý•Ô«"r Ù uÁOEûÐù*öŒ …ì vŠ d ÕÚVëyýQþÃò‹ …©¹XÓÿŽÚ¨ßÅßÁW@{ÿc×Ï_ÿVï aّ߀Ôwü˜üÝýÑý<û øèòíå¶ã¡ðƒùJüŽþ}2é•'þ/Ó[ ¾Õ0 ; ToiÇýšó±ðmî0îäó™óòõ–ñ¬ñ'ö‹ò+óeùÊâ ZXœ º œ„i+>u V$½3I&Œÿ ‘O¡;3k÷‘ý £ Ù Oh®Æü©ö¯õÈ÷+û”ý!ý&ÿÃF.}£ ç®Å¹"ÇÈ~ d£+äŒ=Øí 8 < pÙúC÷y÷GùæüNüˆüûöäïvêƒéð¾òuó ñ±ëŽñŒô8íÉì¦ñaô¥ùüÏcѯ!&Á S/ Å `ýö¶ö¥ôkîûô&õ{ó™ûiù]ø_ûÎúXþOùø;òYê*ãæ¯èêöð ô|çÌçœïâðžû=þ]ô§ø ø¦òüLùñõ¨êŒ¬ t>'áá/÷ ù 2]ú3ý‚ü-ù¹ø2÷dó¹ï´öþº ¸» û™Ž . ‚Ýý ¨Ž¸Ñ 1øŸ’‘ûgüÖ.øïòÅõÈø;úøûÎúlüþ üFûnöDõú÷¡ô|ðXðZïí{î>ójø\û¡ý¿<i+ Ç O ¼3   ÕIÿPÿ?ù­ôzüQü”ÿêþsõ¦óFíÊçàìZðãðùûlzøùQù¿ð™òû\ñì`òßôæôâó/ìžèëöéëÀímðÞñ{õ|ú û¬þcéÉ Å á { ……ü,êüýlôÂïpó‘øþÿŸþpûý;þáú‡üÔù}òÕú³¿§,º-Ý Žüu#ÒÿÞýti" X ï ü8òÚO Ú ÂW Z~ÿô{Ρ—ò¨t9. Æ ~ g Nºœ–CžúËõ/û)û:ùþü¼øƒóíò‡ñæìÁîÞô8û^îgû ë çEÏ-þºýîh¼þµü¤õºóúõ¾ðÙõ.þÅúIù'ù&öÎóIómóoøý¸ú´õ4õõöýósóö^ú‡ü©úúˆõºóÏöHó¢ô øüð<ôfùbñõ8úððàñ¥ü¾þò©Ä<L$}”¦ ¦¨ ô rä Ü >S¬ ¿FW R aAZ›¾ÿ–³û ,? W °õÿžü † Ñ{X@ûýäüæûæúxüÐúNùŠù úÏûÆý³û@ö«ïïïö öü÷ŸøÒù\³iñK : æö×r®Jý ¾Ïü¸ý•ø'óyøY÷Ùò_ïXçöå`ã›à÷çöíNóçù2öñôûíê'ò÷ùû˜úÔü'÷ô8ô!îxò×ü­ý.ýøüÿcìÑ üv…§²„ãÀ¸Ä n µx âJ»ü«K×þü”ù>ü{ü›õ]ø)ÚÿäþÂÿåýe"QûÒóåóîõ5÷N÷1ø/ùeú-ý»Vþ üÑþùÊ ´ à  ÷ †éùšóáï°ò÷l÷®õÐøû•ù[úvûeGp¨,BŠù mÿ^ùDø/ú¾õ¶ñhëaâ@ã2ç èpì¼ë(ì¶ônôXï ïbé ê?÷¾þ¯DÿHøUö÷ƒõÞøÔ‡QKý(Í 6 þï !  alÿ½ý¼úvþ»ÁþNý•ý=ýòþ>](ÿ(ÿâ3òWHþÄùþnþC›P  ge7wU× í ¶_Ýûeômóöó£øÇú±ûßüìûÈzô6'Ä =  ¥B šqþ4÷ôñQøäþyX .þ8òø|üø$©þßþNÓ:S8Ò ² ‚pv +£è €,˵ Hÿ¦ÿýôûÅû?ýù²ú‹UÍ^÷¢òbñ¢ì|ê-ò#õ õê÷ñ—íFð'ï*ôôøœøëû0ùõ…üGý›ú0¶B Ox àžãýRâYÿ€þB"û¡öXöƒöÿ‚ « > h;ýð'Åž{ùñöCýLã„_»%®—ý÷ùûáR é5y˜únøZòˆîÂöuüL° xÿßù#é1 3î ¾   d Y¿ D ã ' !ä ábª> z6ý„ñŒþÅýRýCû£ú˜ø¹÷_üüÿŒÿ1ühýfýúÆõ³ðïñ<ð„ï&ð¾êÏïËïè»ìUðõòQûˆøõ•þ&ùß"Æ? ·Y» @ a  øþ^ùžù[ùWøœøg÷ùÿþº_:øÈLû%÷ô¨õIüú1öÿôòÞõ?ûOü¢ýÇ á­ \&Rý÷•ùÃümÿ¬ñ  ¦ 44þ¾ùËóF÷÷ù;ø újø<÷ùµúTý°~ Í ? pÿ˜9Ã& ^@bÐî Y,ýµñ,ôƒú}F-žÿý|ùïõ‹øîú¯üœÿ@¯—f}zKQ6ýºû‰ÿhûõ÷Âö%ö‡ö¤øÔûuý¾ùÒõôõ„÷ ûÿ{ÿEj+X$ì~ê£õûsï£îrösõXö÷íðGó¡øMó@íUí¤î¡ô‚ý[JN ã ^ü×] X C ¨& œ ÙŽý¸ý´£V‘Y Èeü«õìì¬î»ôÝõ'øù§÷)ùýôEòWóö¾úÿŦ„ B "àm…Ð{·ÐÕû;ø ø³€æE¢šþ€ÄYhÕ# ® ô uBq Ä?+s @ …ýAö?óœñ“î‰î£î#îÌë*íÀï@ëîéïìíþì!õ ÿOÌŠ”þóù‰øÛñŸòžùýø½ûþMù2þ£®– þ¬ûðÛ§‘nM© ¯ †¬ÏX :šéÿüý ùzù4‘üàúŠýSõ¸òÐòóê*ë½íXé ðo÷Æóöjùcùˆþ>÷îMî3ñÉñËôåøúDýŠþrúû•þÎÿ‘C‰šÅèûÿÄÿûHûcüœ?O¯Ÿ = ºu | ƒ!ÿûùb÷ ö¸úÏâŸÿ†ÿ’üúó÷)ö<òñlø…ûàõ­òïvìwñ7ôÈõ¬ùîø‰øpý‘5ÿbü]ýýÿ%åü¼û«3ÿ¸û¤þnÍ E žÀÿDúC·oú²ŒUM<g%%þ²þ­ûöÄø ø°ø å+#÷Jï9ñ,óÒõÚÿQgý¶üóü½ümþüºùâùÑ÷éõ¥÷1ýGyÿ½€Àq ¯ß  “ÓóúrùsûLþ`y ù D<sÚ–JÉÌ ët! :^ Ê]~Þm <f I = v › ÂZ#Y Ä.þcýçþd—Ð!`‚ù"õ~õhô«û¿¾-“hû!þÆ E.þEùNü‰Ùý øÆùcûVûÊþ$ žU™þXýCŽý?ÿàî*`ÿMû™ô­óQõ8ù Ù º ¼ œCôü þÊ Õˆ qû k ¨ ®  ǹ>’¤ûøÍú ‡5'ÿsû¥û2øaïûðô¯ö…ÿ©*„´Ì^ 0 Ÿ9ûùŽFÙC!Í™ ßz{°<îBüÜcºþÔùYôFûÆ2âàošï­ » þ°ÿÁú÷'û}T|«ûb÷›û‘þ`ÿ5.ýaö›ùüë÷tø$ûÃûÍý—ÿªN¥Þû‚û¥þcÿÏc§ÿdýSûÛø©úþ·þÚþ]¡gusÆu¦’[7[Û ;  ø–.LÝøJô™ð;ï"õ÷¦õ¬ö}õóäõÍõÞïíLî\ïhñ¿ô½ò,ñ­öùü%/þêŽ}ÿmÿÏ¡ / ,œþ<ú¯øù–ÿ©“Xrú+öôñTð}ôâøoý¥m‘ÿ ç q Y E ì  I Z ;dkÿ~ü÷ýÿlÉÑù‚õõðyî¶ðóL÷Bø”÷ ü¥†ÿúýÆûŽùú¸÷Ãø~þëÿú©±Zýþ¤ÿŠQÿiü™ÿŒÂðǾC ÿ†þ3ÿT9ÿx´´þkýÒúÍóhõóøKófñøñìdí:ñîXîÃîUð¶öøZ÷pù”ù"ûÜú¾õ?ójólõEúMÿYT ÿ:üÂÿýüûœü¶Ìí É  ÜDûü½D7ÿ õ Òaÿ¸úøŸ{;žºð ‘ — í0ŒÊšÐå ÿ#ÿÐÿ-õÿ÷–ò îÖçYëKîˆð*ö@ùûÎý³]ôÿ]üGùLöÁúãR ½ Ûÿjæ'U\¬ < Ç Ë  L P…¼ƒÛÿœùF÷ÞöóUöÙúö÷)ù±ùòÏòºöôòãóèõÙôž÷­øqõ¶÷Âøõùy¡C ž<Å…ÿçÀ°¶¡ 6$hÞþrÿ"F¦0E¹ûâüÙüaüvÕþXù„ÿù·ÈóßÇÞ6Ò $ý7úý‚ ö t¸nxì¶ ôªýGúãùßööóþñïðYï{îYôûõïõuø‹ú¿ý¶«$7$-AâsÚÕRì8õï ÕŸÝÿ xSaçAp¾þü°øööûó¸òÈôšö<üüþ ü'þÀÿj÷þÙû:ûmþ`";QÈ@ ý ‹ Ûcÿïs jÔ‚ÍŸký^÷²õþóóóõö)ù·ø9û4û\ô/ó öéõ`ø÷Áò3øQý‰ÿ²féú Æ:­ Vº”ýSB‡ 1 C ©AšWh~lþý¯þ‡û‘÷1ö$óÜõ~þ^ ‰òû¶ù·ümŽ rd/Ž.f ø · ,l  . ; ô@ãúý÷àòàí=í½í¨ï÷ð˜ï(ð°ó`÷úÈ÷ßõ}öê÷°üþýûÈù‹õÅ÷dM1K™íU ˆÿóÃA : 9 Éÿïý!ûGüOèÎÿpûTûöý ¿$þïûÆùÆõ«ôAò ñôûûˆùýÝøüô±óDùõücýÌY¬Ï†ÿ×ý¡l ý ‘ à@þ¡üˆüNþ‡ü_É¢ÿ³ý€ý=þNþôCµSt³* ¶ ƒ /±üJü¤þ´aUÁý—üVýŽŽÝþ4üyø/ô…ò¡î¥ìçìQìvêzç•æ|é~ðóõ*ùý«ýüÑû”ø'ùUxM Сý…É+ · ß]Ð彜¡ôÁX · k£Œüúý9ÿ—ýþ¦þaü û)ù8ørúÛüÿGÿûþþýù­øÃöCõ”÷ûŒþ‘þ—ûEûHüZý þdÅ%;Jý»þ«ŒüS |Iÿøö…ô­ó)õúÚûqýšübùBúÿú:ûpú`üLôelÿœøigæ §Ý &5‘ " Ÿ§ÿ¶ñÿâþìüNú¸÷ùöçö¨óòµñAî‘êëªíQñqôTògîÛîÕò¾ú)žV ̹uê ! ¤}ËT¨mlý´úgù øÖø)øöâö ùKøvõî~ë¶îñèõÂúüöUô*öLöf÷3÷xöö÷†økùðû1ÿ©×?þàã•P”,¼Ú^ý´ûªýµþþzüpúÀý?{Ó® Ðÿ7¸'+ÿUI ? K¢^h, äd ß „S™AÚý”ýÚuy ¨ œ Á ÅL€þ,ûEù’úöû®ûÜøúõóõœñeîÍóq÷÷ ôDòÁó ö©û~þ(þEýâù·ø<úhüwÿ;VF o ®¥|}ÿ}øxL3ÿ,ûÞõ}ñdðpñ.ó^ôôÖôqø[ø\ögôHðæîróùþ)þôüBÿÿ+ü†üíúÿùaÿ&Ð å Ž M ' Û k`G-Z x  „ÝÛáô¨®¹¡Ö3þú­ö7öÝ÷@ùNýeÿÙþÔ›Ô "   f&µ Ô)ùT8 ÷3bA ‹ èdým÷ó"ñÖî.ïåïîvë6êþìfò&øqùO÷ûùVþü¿ù¥ýoÿj´ÌƆækô› ü „íz°áßö+ª{ •‡ÎüüØFJÿHþïû˜úKúÿù“ûTúÞûéTYŒÿSú#ú»ý#¾Ê œ£»{È < HQ×®=Ѫ ÿDø+öâôŸö½ûíûÌú)ýKÿ¥ªÿ4û|ùñùSøÄôFô¨ôõ¸ú×ýíþë0]‘  ' ? Øþh?ü¼ü,ý%û´ûTúù'Ú. 0 k…û¸ødù–úúdøéù}ýqý2þ8Ú"OoiM>û!k ¶ › Á¯ÂÀ.ÜÄžKÐû‡ìüìøÖúþ.ƒw¸û…øÆùQûŠýl–ŒÚP Un›D9žsÄ)·ü*þ¦  'L&dô˜ À ¡ ñÑ'< #ÌüMøóö4ù"ù£÷Üøú†üÃýÿކ*=þÙù#ùUú úxûÎýoÿ† ù ’ ÿï(ü£ùŽùÔû*ûGùú>¢-Íú[ý4Õÿ_þRüØÕâ̰|ÿ½ýYþÅÂý üäÌëž † »Çý;û–ù¸ùüÜþOýíûXû“úÿûcû‹û%ÿ‚˜D>üÃû0ýðȽ´ƒÂ“úü¦úãÿY3O‹I2 ˆ’§´ 6„™ÙW  á 3ÿ—ýï˜/Ãý»úLû»üú ù\ü™ýYý ÿ!þ¢ý®MIþxý;üGýPÿÄÿå3ÿDþïízPü¼÷­öÓøR÷wôÉóXô‘øãûvùœø÷þVÔ Ô-íúö¦ö—ø…úCý²þ2OƒMü\«ÿæcqýqþÑþ¤_Ì—û¹þ@ýŽþ—üuûóý5Íf–Qþ¸ùFôö²÷j÷™ùöúüÙû‰ûšý}$ßxfÿ7ù·òëðÇô öÔö}úñú9÷Îöç÷û¨ÿ»yà Z‹ ÷&Ñ7ê'f¶ü¢ü´ýº§ôø´÷ÒûýÄûnûnýíý˜ÿ³­þÓÿÀä NJ— £i½ ù$R;τŠæþmüjúü÷Ÿôáõ/öôô‚øðþÚö~þ+øóôÍ÷õøùù*ü슭*1ý&ý±þWýû¬ûßúƒö^õ¢øÇ÷ôÆ÷’üòùlú{ý–üªûwü…ûÐùXüEÿ8þçü"úíôòöNùëúëüzNrvÓ¼äÝòýqùõ÷]ú(ûúªû¹ýFý´û¥õÞð ñò*÷þ;þVüÆü×ýßþgÿÄþÙýWÿ½mça5-Ùæþšÿ’þ5û>ý^VaôÄÿ@AÌô°}jÐób&uý:ÿv¨ÿ5ËQÓõôÎü1öÉõ#û*ÿRäÿ/ÿmÿ1ÿ–þ!üŸùüÑÚgÿàúV÷êúhþ×ý¡üöøMô<ò=ô÷Ç÷ÑúÆû»÷Ìô€ô÷*ýÿ»oUÜW'K´‰„ ›^÷#Áĸ R Š ©Éwâ|ñ [¹ýüûôýÚܰ =“þðú|øö‹õtø°üóÿÿütûmý`þyMS/ñiþ&üÇ÷õšù®üTüú øù ý þUþþ3ýÿ£ÂD·ÖÿÄøàó¢õ8øqúµþ);»¥0 •]Ò~€[UýûÐù úý…ÿòÿãþ‡ÿþÿ“ÿ»ÿÿ‡ýŠüõúÌüÿþýˆûqø3ø‹øÿúÂýóúTõÏðŠñûø³ß$ûÌõIõ«öiù®ýÕ³‘ý{üÙûþ6—¾ % tæû(ûrý¸mT| và ià¿‘ï£?t±UcÿzÿÒþsUO«äÐÄj  È å ùÿ©úÒû þÖÿ<}.-ÿü¾ûCþîÿ”{\Ò4 ïœý³÷Gù¥üxü¤üýÊü_ûü˜K‘ñÊáƒzÿ/ü÷~òwõúçþŸÿsüwûú^øØø{ûÖûhû¨úDùñüæOõÿ²üæùå÷šú4þãüqûÄúÒüb8W™™»´þ“ÿÌB7ÍB?67h£ÿ þãþNûôÃþ»ýìþþFýúêúÊþÜO#ý½ù‰ùMøWû†?× "Òÿ  õí  Âv Ü u²®-î>ÿmù]÷ÚúIO€ÿ6ýÌýOþÄýût÷OúÿÖþÿý†û˜ùýû‡þ‚þCþIýn2o¢ý™ùíû—d» šŠ» ß Y ãf9¨ö‰ÿqý’ÿàl?úø÷Eù´ú`üŠüYù—øû üêýÌ.ßÿ3û¢ÚH iAüþÊY]“mA«gŒ)[Ç'˜1öÿ§úõÐò§õqøßøÂú¡ü¹üêü‹û=ûiý£þ€ÿsýpùø‡ù¶ú}ûú5ù@üºþDóG¤'   ™Ï+ÿAýáý÷û>ûký•ýíýÀýü´üSÿ3ÿ©û”û)þüý×üñú5úþÖAñþ)üÈûAþùРU µòj Ì·OÑb1$å:—ÿáþ4þýJü0þòÿÿÀþFþªþ>½©ÿ7û,øjøûFýkþ*ÿ(ýóýòþÿD•fy «y‹dþ0ü3ùAú¸þ–»ûþ¾ûsùUö>øöû™üJýªý üûúUø¶öOôµøUÿFÐX$Ø28¤2rÆoEÕ%í®ó$^ÿ­šÜýÓùëö(÷¯û"þ¥ý¡þ®ÿáþòþ@ýNûßýsþ™ü¸ûüûÐýÿ_üuúoüÅ÷ÿ4ÿˆþª3—7 £( Ó4‰—ÿGýþvýÝûGúsø-õQôöËø|ý|ÿmÿôd-ýðûÑûŸûþÈÿèý˜þ­ã ë(85¸Ž —ýÛÿ ý ÿòe é Í ,bj>Dɹcþ¹ýõýPþÏÊ$ ’Ñ“Ä Auþìúlø”ø‘øôùàþÜ$çà ñ Æø_þ=ýlþSÿÐý[ùwööuõ‚öùœûëü%üþú/úø÷Ã÷ øVû­û&øn÷Þøþù*þ{ãÿîþXÿƒ© ¡ $Mÿþãþ( ÿ þÊýÄýÉü‹üjÿt„géÿ‡bþÝþ«Ì"âýjü‚þäýFû>û?ü¾úrúÐý$ÿ»ÿÏ£Š7 e“p•þ|þÑÿšÿ%h1ÿ2ûäøœú—óÞžÆþûEû©üÎüöú÷ù|ú»ø÷Îö½öøøÆû3ü­üëü7þx×:3ŒT´fÿÞý~úõùêþI¿ÀŠ4`  ˜þ Owþ¢ü2ûCùdø>ù:ûïûyüUýïü ûøõõ'öê÷üÅ£e±ýrüÈÿ»³iÝd® i&¶ÿœû¼úÄùãúžüû üéÿÎþü›þè´nÿÉü7ûµùvûÿþIú/÷Eô_õKùœøëõ!õ6õ½ô%õô÷¸øÞùýÀûbúfý}ÃüÿRüYü^þ!R¿Dúâÿ þ4ÿãÿ¨Ê¯ýFüÀüÖþo*¹ÿöÍ‘üC$ËZHQ§$ïóª—†äÞý]ú÷ù±ú^ý¾lþn¡[KQ‰Ÿÿ†ûƒúlûéú—ùÀø ùûúwöIõéõÖ÷7ûŒÿ^ð–ÿýÍÿNXÉ@E38oÿþþ´þ9¡Šÿ6ü>ü³þPÔ¶Þ rkXþ‰üÙÕ,‹ÔþÐûþû/^bX÷CÿŒú8÷&ø,ú½øœ÷&úBüÒþ#ðº–ûÔ  œÓ¥Û ¢œîÿwþ0ÿÿÙýNÿüŒÐÄaaƽdÚ#1]}Çÿ×ýçüÀüúýRÿ­ƒüûößô;ø’ýô@’þŸþY`†8§ñ…oçËÿnÿÿÿ˜4Hñþ°þI @þSüÑü-ýËý;ÿgÚn—cÿl@©ñ7ÑwVDÿëú¢úúý àLðP·& ®¿ Ô Éë kS€%CØñ£gû÷yõnù2ú¨ø¯únþ)´­zVÏz–mþsýUþÿùýbûÖù§ùfùíùsú%ù½÷X÷5øòù.üÅüGú÷Âøfþ©l¦ñ&C m O$a[&'ðÊ Í Sž#õVÒ&öÖLvýRÿIa  £ ]Sÿ˜Õ¤Áÿ®ýËú'öóÓóW÷®û?üû›û%ýÿ©vxÀ®ì‚ ÿšýñý³ú"÷ öXöøàøtöõ×ö ùPúþ =AÈÿ!ýçý¥ÿ@ÚýßûHþ’y¤ºýý¬ÿ¼Œ‘¹’­ ™ þ ò¶™ÿ¸<éÿýöýwÿDþþ{ýEüMýýÆúûaüCþ‰öýœýýÿÿ6ÿÉý†ý=üsÿ úÿiÿO}ªÖS ÝQŸÀm]–ôþøý ÿÌý_ûúVúìü§ÕîòIÿXýÇüüüù÷QúsüÏü÷ý=ûŽ÷–öñö/ú þèÿ ÇŽîã  :’œÿ`ƒPßüoýüü±û“ý×ÿœáý”øGøûÜúHú5úbøc÷lùwü]þFÿcÛuv+YàÞ|Jhé°ž¦:·SÃUíÿ¿ý üÍú¯ü±ÿŒQÿû‚ùåú¶ünþÅýãúNû¾þpÀØüŽúúûø·÷Röíöóùbü*ÿ_–Æ|Ôk]÷þãüŽý%ÿgÕ’‚Vu|?]îŠMÿþ|ÿ›xþ•ùrõ_ö…û\ÿ½xa6öúÌ‚+£â;v ½ï‘·4(þRû9ù ùÖøÀ÷§û7ÿnÿþ úÂôÜòXòíñ™òïóõ.öîöû÷úµúRú›û°ý ÐhNøT*Ðïþìýÿãÿ~Ç[²TÏÇÓ#ÿ…«Æû:ÿþüCþ.—¥ìÿøþÓÿçêàýßû^þnJ¤ÿÁÿ fKý¸úÄù;ûÿŸ¶þþþ[ÿöý5ýVü,þ#Öz—²C)Z²Ïÿ¡ûBú¨û]ýÿÀÿêÿ‚ÿNüJú ù-ù]úÞüÝÿG9ÿŽ'Ùo8ÿðúùùùüÖ+ïõ½›º’ÿúúÊøzúüýÀxZ¼ŠýŠú•ù úWü ýýÏüwû¤ùù:ù¸ùúœù¾ùxû?þûÉËÿÁýmþ"^ rû÷ÿCR¶ÿ ÿ0þîûèúŒüÿrmöûøù)ýÛÿ=JbÿZˆ#þüüàüªü“þ®ÝÿBüÒøûö`÷~øãøTùÊùˆú<ü2ý}ü¶üþzþžÿõÿgÿ9êñÞþçÿTøûlýüýžþ´þœþ ‰/ŸÀþTþëßÑ¢Åÿ6ÿê ¦‡ÿ üäù­ù!ý4*?ăÈÝ e rŒûAû Q ™‰þþ÷ÿÜõG2þ1ûšúaúŠø÷ø ûPý‚þÊþiþÕýÍûqú¸û ÿhÅ [ü¡øüöÄøSýþÚÿŸýûœûœýyÿûþcý÷ýpMÃ.¥6  • ,Æ!Žþ&ý>üqýŸØ}Àÿ;t.ÍûœøÔøuüÕ@ÚÿqüÆüÂS¶ §Ð´ m ›æ7è›éñÿ{ûáù>ú„ú¾ûsüèûÍü?þàý1û<ø&÷Lø/ú?ûñûîûü#ýüäùø]ùSüH«ÌrÿFþÿ=ï Ç Û prwÙ°ü¤úrúÏüFÿšýˆúÅùiúfû¸úMùÒø4úÂý•¢;|Äv²!.f_Á ö£ z âE¾]æ  Á¬eÿåýÊýûÁ•ø ¼k"ÿÏþ¦*qÐø’#þ!ýÏý–ÿÇ {ÿgÿSâ¡?´K'av‘Dͯ5ÿtûÝù ù÷ø†ùÄúTûý•ÿ²Aÿaüò÷Zôèô¨öù€û*ü ü„û.ú€ú­ü´S{Åÿ¼ÿAÕ¾Ò.»¹ö÷×ö8½lûmøƒúåý¨þõþÜÿ3ºþ ý‚üûÌúÝý-ô40ÌÀžx`1þüý'sÐÊ@²ˆùþ¸ü)û<ú¹úõûEý ý§ûiú÷ùlúû@úEùÞù¯ú¿û°ýPÿ™ÿÿØþ]ÿ³ÿÇÿR6hd ä  Z ¯ tUC†´Ÿ ßpIÂ=—þSýø²:CK;ÿ}äÚ¡þvþþþÛó¤˜R€ÿ"û5ù7ù4úóû:ýÎýÒþ Ðý°ûåûÒüüûúÔùªúü‘ý•ýmüoû‰û ý*ÿ»Ýÿ…ýýtÊ—ñȾñKÿ™ÿ†¤¡Z²Pwþñýûþ¸ÿchBçÿ™ÿY÷âf)ãýcûùÞùÀûíýHçׂ÷»ÿÿjþÝýïýÿþKÿtýü(û9úrúÐúyúæúütþ?Óàué ›žéþ@ýšÿ4“ï™I ÿCý$ýEüû¦üÝý¢þQþìýÎþ«FM˜àßÿÿ©þ6+iåß s  c†ý—úhûLþ/”«„ÿzüôû-ýÇýÆüÏü©ý×ýZýü¦û%ü.ý®þ”þwý}ýÿàKEÿSÀ‰™ÂuÞÈþ¡üûhûHýÿñÿÈþÎýÒýËý~þ «ÿª­ÿòüûéù~ùhù»ùûyü¹ýÇþ¤þ‰ýâýDÿ[ÿZþ¿ý÷üïúXøQ÷¾øÖúVûÊù£øÉøÚùŠûKü]ú'÷0öhú ØWnýû8ý ƒøÿ"þbýæýÐþþ¶üýD™’ñ»Öμ1á#’×y5…X>Ž ó @ò¹ÿýeý-þ 63„OÿNþPþùþëþ@þ›ýLü·ùy÷ô÷üù‡üÙþºÿ—ÿÿžÿ‹G ÿßÿÈÿ(ÿæþ=þzý+ý)ýèþý~3zÿñý$ü·ûsüþ ÿ±”ÿAÿSÿ§ÿàg͈ƦÜhÅý†ûWúûbü\ýÑþÈÿ‚ÿIÿøþ þÏý¦þŒÿ"ÿ¤üûú¶ûôýçÿþ%þ`þÉüZûRý|j£wµùþ!ý6üüü8üæûzùöôËò'ôÐö=ùúûùúGúlû¾ýPÿÏLµ˜d9¿Á3äWîĸ¦þ2þ}ÿÕð"þ…üúý«ÍÿËþâýküÃú‡ú&ûûMýºÿò,ÊÇ̺ðÀ”½ ©øãj×o¯Œºÿþ‰þb¾P ˜¸ÿþ³ý°þâ/ŠÊŒÊ€ëþàüüû­ýÑmï€"²ÿFÿÿŽÿ7›ÔÿHý±û"ülþˆÿF,!Ú& nþPþ`ÿÎÐþÆþiþŒý ý!þ0þjýðû ûûYù­ôZñóð]ò#õo÷ËøÏùžù5ù\ù‚ù=û­ý.þÍýþAÿøú;cíÝšJj05ÎüòýC϶wwþ…ý““[þùý™þL£G2@éþÓýþûõû9ÿ|¼A2Ù/(Ñÿ[ü4ú»ùÙúëüVýPü û‰úJûü’ýþý†û“ú'ûÄýc!O¤ÿÉü–ý¡Ê έVn^£éùÛ=%™ÿÿñÿK6R!щì[Âe²A®Qi{³ÿß‘Éý¶üLüoü;üðú®ùîùûþv÷ýnúÚ÷?ø<ûçý8þýÅü{þ3`ÔÌ7÷®á‚tºÿýþ6Jt§h’ü‘ú–üfþ¶ý;üüwýþqþPÿrÿ4ÿFÿOÛ|žü"þËûEü ÿÝ9ÿ/ýXý;þÚþ—ÿÐHß~Ðÿ4ÿo’ûÿÄü+û–ü§ÿ¼{^5ÝÿÏþNþ ÿ,¾Ýá¾vÿKýýûŽü)þÆÿ5ö„Óàÿuÿ2]z³ ÌþWÿ=7æ pÿIþrþ$° ·ì:¸°óU Ôÿîÿ¬ÿ‡ðõîZÿùÿíßHIÿÿHÿkírÊðÿdè¾»*××µƒÞŽØÈ£JÙþ•þÃÚÂÇÿ%ÿ ÿ_²@±ÖE´¤ÿÙüý°ÿøiÖÝýüŠýŒþ„þþòýÿ‰¹¬§WŽÿMþ‡ýû`ùƒù÷ûÂý!ýyû“ù…ø€ùÎúˆúqùáø”úwþ3ZDý¸û)ü÷ü´þð¥?>þ¬ü.üOýÿüÿ/ÿj%ßôDÿ‡þ„ŠiÒìâàÿ8RÉðIŠ 5uÇÆ·dÿGÿw‡1Ïÿ‡<þžý.þ—þþèüéü†þîÿ;xÿåþeÿÊ–ó>ÿ.þwÿÊTÇs²RFÿ…ýáüdýóþ@Ôþ¬þçôݪ“¿ÿÖÿÊï…õqÝþ'ý1üÏû¾ûãü.þZÿtœ8µ $N0Œþ2ü’ú²úü˜ýÀý²ü ü`üý†þ´ÿÏþ=ýýÔþ/ÂÑ<&‰–nÄv«þ«ýUþíþþxû¥ùFû¶þ¼5Òÿ«üˆüèþ:ÿCýû“û’þxù>þ{üàû@üþ(ÿæþwþ¸ýÏüxüïý»çŒ ň›×ÿVþýŠý-þñÿ‹£‹Úÿñÿ^{×~2Ø5æb´9‹u°ÿÇüüÐý[ÿ$ÿ2ýwûütþîÿÝÿ[¯’:Âÿ,ºÕûÔü-¹Fÿrý`ýnÿWtÁ;Øý ý«ý7ÿ*žr˜§þýlýGþÿŸÿS!ÿªÿ¾ÑvâÿþÉýMò‚(>ÿ)FöõýÓý.ÿøþ¯üOúú6üÿ_ÿœþÕÿ“þ?ýøüþpßþ"þÆþ9š2äÿ—ÿ A•äD9þªýŠÿñµÀý¥ûbý‚íâï2sì'§´c÷fÉÍÿôýãü ýùýtþîýãü'ûÑøGø•ùïú;ûûQû¦ûßû¦ûƒû‡ücýÆýÄþny9Ñ`PiU1 Ç»Ï3ñáJÈ¿3‹äb<þý§ý ÿ¡þ×ü(þ<a_«ÿLÿêSÞ òþÿ(3ÿFþÈþMmÍM V‰œ“ÜþüŽüûýóþÛþ£ý>üü=ý ÿ] Ã¥ÿ ÿÂÿôä"ÿžüjúIúküèþ²ÿEþ¬ûHù³ù•üäþPÿ&þ6üiûsüºýhþHÿ/Åö ­=ˆüpû`üáýÓþRÿlÿÿaÿpþ/ý[ýâþÿnþ üúúùØûýýJþ?ýžüKý ÿûóAøég,R«*t‰õYßþ‡þ2þgþöÿT. ý©ûCûÓüuþüýîûáúìüÐÿs^þü\ü[þ•£ù±ÿ“þ“þäþÿÉÿ_ïbµÝ4lóæ}ÑrgYw–ÿÉþÑý-ý-ý_ýý’üDýŒÿ§+ÿ þWþ)´ÀõLm'©vå4òþþ”þ­`¶–ÿþûþÑÊMÚV›ìýqüQý’ÿhÓþßü÷üÿWx ~œ1Õpÿ‰þÃþÿãýnüñûÓülþfÿ'ðÿѸX^¸ÿøÿÞð¬]ÿ€ýûû üÏýLÿáþÃüoû^ûrü8þÿþØüîýÁÿ¼ÿþ¦üÅü…ý8þ®ÿê.Fräþ‚þÿ{j¥¬§ {9|K)þÙýÿuoî ÿ€þþXþ¯þêÿ¡ûƒ>ÿÚÿ“ãÿ—þÒýÿæÜÑÆÊÌyåžÕÿ^þvÿ¨Wsýü¯þ•# þðü þ÷ÿËI×þ[ýsü½ûåû5ýpþÿ°ÿ$ i°ŽÕÈþÎþÿ³þþ¿ýÅýþ0þçýâý‡þÒþ§þÿÿÿo¶ åþoÿ×ëWåþ¤üü‘ü&ý}üdûƒû˜üRýýèûvûÔüVÿËQ~ÿ‘ÿ{ì¦æÀRià~Öþ¯ýAýèý¿ÿ»¸ÿyþüýçý$þ^þ_þÄýÂüHü!ü'üÎü¿ýlþÿõþþ¤ý‘þ÷E°¨€ÿ³ÿv(ˆÆÿäÿt ãE{ÿÄþªýþ9ÉTïþøûMú9ûÚý˜ÿ×ÿCÿ€ÿ?íóÛ:ûÉÔ©ÚÿYžþóý÷þ~ÕâJHÿþ ý<ýdþŸÿDÎÿÆÿ–ÿ.ÿÞþÿÂæ9c ?ÿÊÿàíÿôþµ=³þ®üHý&ÿöÿ+ÿñþÿLÿ³ý÷ûû“üqþÒÿÑÿÉÿ9ã2JÿÆ¿þBý`ü›ü(þ ·ËÿŒþÖþÌÿÿÿýþ¼ÿñë·‘ÀÿôþêþAh~øà)BâpËÓCÍh~†˜;m/þÞýþhþÁþ‡þý(ûÔù'ùåù)üæþ>cÿéý"ýÓü²ý%ÿ2ÿÞý¤üæüÓý þñþÂÞÁ)iÕ‰Å,zäUõSÌ \ÿÔþ_ÿ¥Õu„!§ÿžÿ¢ÿúÿ¹‘‚ÿÿdÿtyyÂûÿŒÿ±ÿE›É0æ€é6Ô€½ÿÉh¯…¼Ï´;ÎÿÕþ`þ,þõýOþ]ÿ‹ÿ3þçüªü¶ý×þlÿÂÿ|+š³ÿ(ÿ§ÿ„[^Iÿ%ÿ¸ÿ+‡œqQR†æuø¬ÖÕÿ ÿŒþ]þ¿þmÿuÿ1þ†ü{û¢û üübüTý‚þ€ÿßÿ9ÿCþ0þDþ®ýÚýEÿÊ¢l} 1Aåy…®Æ‚m¾J®%¯y2>{þ¶ýJýfü“û£ûÁüþoþfýüçûýÊþ'±OòÿÙÿ[ÿÙþôþkÿéÿÜ=6íp ±ÁЦÿ«þÐýØý)ÿðÅÿ«þrþ>þÎýŒþïÿ" ·ÿ þNýþdÿÉÿXÿÜþÿÀÿD•n³:îÆCp¹z´¹‘à*Ãÿ 1ÿÄþsÿ?=„ÿÿñþþ>ý”ýÕþËÿ|ÿÉþpþqþMþâýßýµþÁØè¨ÿtÿ0ÿ¶þ¼þ<ÿ¿ÿ5ªw,pñlÇ~Ù¡ƒ2þ¡ý5þ¬þÿrþ(ý ýðý†þNþ²ýÄüü¬ü»ýúýxýéüØü»ýj˜#yÿl j(z+2Jæ?Ý¿ÿwþPýþü²üSü¯ümþyØÿAþýÚý;•œ2ïÏAÿÌþËþÍþ€ÿ½‰2²HÛÈL‹HOIÿ2þàþIA§þ/þ ÿ¶ÿŒþ>ý»ýçþqÿÃþQýü÷ücýúüÆüný6þþoþœþxÿˆ&E 8uLïysJºþyþñþ.H?¦aŒÇœ›ÿ þ½ýêþóÿÏÿtþÝüVü®üIýãý×ýýHþaÿuöˆÑÿžÿæÿiñJ¢¬t§Jxk“ÇÑÀ^=Ü’åÿ‰êkñþ¶ý©ýêý–ý;ý;ý§ýsþþþ¹þÐýFýþlÿ4ÿ!œ“Ãÿ¨þ¬þÿàÿùa…¸Z‰ËÑ'Ýþ þüýÚþ¸ÿ$fmyK•ÿLÿbÿOÿ$ÿ¶þQþKþbþ)þÂýýùüþ*ÿsÿ•ÿ9e3»ËSøa.‹K gSN°€ Z ÿþ‰þ8ÿÁÿ;ÿ¾þÅþÿ¢ÿŠÿ¼þµþÇÿè[íëþ/þaþÿÿÿYÀÿàþLþþŠþ&ÿVÿsÿâÿçHþ)ý‘ý©þäÿcÈÿUÿ­þNþ—þsÿæÿ.1ÑG˜ŠO«ÿÏÿí±ze›ÃXñû8æÀ›ûÙÿr} VŒ‹ÿ¶þÊþ®ÿ´ÿSÿ­þþ·þ6o<ØÿÔþ×þ-ÿÿ»ýü¸û5ýòþLÿÔþþµþ‰ÿ¨ÿMÿÌÿŽÑ lÔë ÕxÔÿ˜þ>ý ý7þTÿ§ÿÙÿüÿ§ÿÿnþ¿ýöüøüþuÿ£ÿ¼þþ“þÑÿ”sçÿ#Êài›ÿ]ÿJS<Eÿ‘ÿ)FeÿþÞýŸþ6ÿÈÿʹÒhþÂü ýòý ÿM»ÿ”ÿÿôþqþLÿëè¶žIE»‰¨ÍÚ^:Àõ™’ŽÅ˜vÿbÿâÿÌÿ'ÿèþÿ¸þÐý<ý6ý’ýþ“þÉþËþÄþQÿJøÆÎÿ¬þ„ýýBý'ý<ý þÕþEÿÿÃþ ÿ¸ÿJN<=È3t´-K™tqéf3žG¦‡ÿÿàþyþþóý2þJþ=þûý…ýµý…þ9ÿsÿ2ÿêþ?ÿÆÿ6tmªÿL!\ïÄ6çÿ XÿÛþJÿ¼ôÈ~¸þ¨ýÞýæþŽÿ#ÿÂþðþâþ«þÖþ6ÿ ÿ}þBþŽþ%ÿ€†ûG»ô¹1TI¿™ž¤gÕÿ›êÒÿÍþòþ8ÿÌþŒþÿbÿÿ ÿŠÿNÿÓþ4ÿˆ£'©ÿîÿ‡‰á6/Aÿ¨ÿ¦*­^Ëâ}=ÿnþ-þÛþÇGúþ1þ•þ¬ÿÂ-\ÿúþƒÿçÿÀÿ³ÿoÿ³ÿŽ5®þAþÿ¡ÿŒÿÿBþÿýÿB;Wÿ[þDþæþ>ÿåþyþ¼þ5ÿ5ÿØþåþ‡ÿyçÏÿþ·ý%ÿr,3ÿÇþTÿY‘Wÿçý‡ý[þÿU`ÿ¹þ+þ¶ý—ýœýÛýdþNÿx+utu…IÓÿ?ÿ¯ÿ×-Ìg‚×âš¾ÿ•ÿžŠžÿèþêþ'ÿ|ÿÿ-ÿWþýýÀþçÿŒÄƽ$9+æê*Ëß„~ÿ±ÿ¼¡øÿÙÿ,),Z÷ÿGÿçþËþ×þÍþTþYý„üòüžþ¸ÿvÿ÷þMÿÆÚc.û¯ÿ^ÿœ™‘ðFg²ŒÇÿcèb%ÿ~þ!ÿ×ÿ ÿïþÍþ½ÿäüÿ ÿÆÿC½-ˆ#Òÿdÿñþ¸þðþqÿTÿ°þ±þÿMŸTIÿòý}ý<þþþÿÿþçþÿþxÿ N-8Ž¢ÿÑþ6ÿYÿnÿøÿ¢L§¬mt£žŽ*_ÿDþ—ý´ýµý}ýçýÿ-Œ»ÉÅõµ`óÚ.¾ÿÏÿŸ$ÏüwM=yÿ×ÿ¾N]¾íÿÀÿ"-ÖÿæÿN’ZÔÿ6ÿ)ÿjæ‰ó‚¬ÿÚÿÙÿ ÿ'þ¼ý.þ ÿõÿëÿÿgÿíÿRl3Õÿ†ÿòþcþ|þÿ‡ÿ¦ÿFüKÆÿ£ÿÿ%ÿïþ¨ÿÀOâ¼ÿ ÿ6ÿgÿqÿ¾ÿ_s ÿÿ­ÿvÿ‰ÿªÿñÿª‰túÿ—þ—þ†ÿÖÿ­ÿÀÿ™ÿeÿgÿ‘ÿ¢ÿŸÿöA{ÿƒþFþÌþ“ÿòÿüÿÿÿ …“b åë‡þtúÿÅÿ¾ÿÿ[ÿbÿ×ÿÂÿñþ)þ²ýÂýiþ*ÿpÿÿ±þÐþGÿOÿéþÍþEÿÚÿ)ÿÿkÿ,ÿ•ÿP¶tªÿ¯þ4þ‹þ ÿbÿòÿlŽ3Gÿ¾þóþÿ¹þCþþþŠþæÿýÍÿRþ­ýþúþûÿÀóáÞ‚æÿ­ÿàÿ UãAb^Hâ¦öuȈ ‰pÜË¢c¢d×"šÿwÿˆÿßÿ¶ÿ´ÿ)þíýÌþqÿYÿ*ÿ‘ÿvîÏþQþÜþ²ÿÕÿ=ÿžþ²þ6ÿÿ„þ¿þ6f~aÿ6ÿh¤÷bVÓÿ4 ˜ÿsÿ ª¸ÿÿÄþ"þ\þúþÿbÿðþÿ®ÿ|ÜÚžÿÿÎÿ’ÿÆþ„þØþ‡ÿ¹ÿ'ÿlþ2þØþ™ÿ,ûžÌƇ"xŸr|©ùÿ%Ø4ã:âÿ#–»x5KíEgêûÿ¢ÿ `fÞÉ[2¶³È¸(ù v¼Yo#ÿNþ.þ–þ|ÿ!¨ÿÉþ%þ|þ’ÿU,£ÿ&ÿ¼þÒþjÿäÿWÕ4<÷vêÿ»ÿy¨Óç]Ÿÿžÿüÿ¬ÿ#ÿÐþ'ÿžÿ›ÿkÿJÿbÿ±ÿ^N¦+ÂçBIæ´šU²ÒÔúÍlÖëÕÿÞþ’þ»þÏþ¬þ„þ„þ‰þ¤þýþÿ±þ/þ4þÜþèÿ¥³×ÿ³þÜþ“ (@8Ã[8ÿNÿ Ð@¨ÿ~ÿÔÿÒÿ!ÿ^þ+þ’þÿaÿŒÿÿ8ÿÿZÿíÿx¸Ržÿ=ÿlÿ³ÿàÿ!LZ½ÿ¥ÿÎÿ!abLH[_\„ãÿLÿŠÿu6I 4f>¥Ìÿ6ÁÎdâÿ¾ÿ/¤]ØÿÐÿ0VN!çÿþÿ[Y¥ÿçþàþ+ÿ0ÿÿÉþÌþiÿI óÿÍR£×\ˆГ]vÂÿlÿŠÿ˜ÿ$ÿ^þÕý þÅþèþ€þùý¶ýºýÛýþ5þdþÔþÿ´þ¨þ·ÿ_ƒ…´L› ÜÚÅÿÿñþNÿÈÿòÿÿÿèþOÿƒÿ ÿ=þªý§ýþDþúýëýZþæþDÿnÿƒÿeÿìþnþVþ®þÿ{ÿ²?Æ46yƒ*`¨›2˜ÿñþÿþÉÿ •ÿCÿÅÿ×qz‡es>ÇÿKÿWÿÝÿ+úÿdÿàþÿiÿyÿMÿMÿÊÿ ½ÿHÿ?ÿ˜ÿÚÿÔÿwÿÿþ¿þÄþûþíþ¹þøþXÿrÿ„ÿõÿ¬>Œ£ÀZÆ7ÿÿKÿ£ÿ‘ ±Ùÿ&ÿ&ÿÅÿúÿ‘ÿ)ÿÿžÿ-Ciÿ‚þ¾þ±ÿ…!i,VZ yäãíÝT°ÿZÿ>ÿÿÖþÿþÿ±ÿ0ÿâþ<ÿÿ¥ÿ}ÿ*ÿKÿCLj€]ÿºþÛþ>ÿdÿÿªÿîÿ6/àÿ ]wwfÊÿ]ÿûþäþÿÿ¨ÿ޶åÿáþìþûÿÚ/Ô×ÿúÿfÿ°þtþóþ¨ÿòÿ‚ÿƒþþžþbÿ«ÿiÿ:ÿ1ÿlÿ–ÿ1ÿ•þAþ¤þ–ÿwÉ—+ÝÿÌÿ¼ÿWÿÌþ²þ)ÿÀÿ ÎÿÛÿ| 8c—C4ÿ½þbÿ€5«ÿýþÿ0eW6'Fl sÿPÿÎÿ”ôê¸V ìÿÅÿƒÿmÿÏÿVÞ ÛcA•¹_éÿyÿGÿnÿÀÿbCõÿ p¯Àÿ·þ.þ‰þ%ÿ[ÿiÿ¬ÿ.²Økîÿ-Îe‹ú:¿ÿ«ÿÿÿ13…õeQÿÝþÿˆ-ˆùÿÙÿìÿjÿÿˆÿY©9ÿLÿòÿg;žÿjÿóÿ®ü¢" ¯½ÿÿñþlÿàÿwÿ¬þYþÕþŸÿàÿµÿ˜ÿàÿpàý GTY¯ÿlÿ¦ÿ –ÿcÿ±ÿF Œ?ÏÿŒÿ–ÿ´ÿñÿ  Ùÿ¤ÿvÿuÿßÿ™Ý‚> èÿèÿÞÿèÿ@ãˆÀÿÿßþ#ÿ0ÿÿ@ÿ¬ÿÿÿÿaÿdÿÿ®ÿŸÿÿ~þvþåþxÿ±¥{Q+6¡%Jþ‹JYIåÿ¡ÿ·ÿèÿíÿ¤ÿNÿdÿÄúÒv W °jØ£Ú-"Áz{²÷>puW5ô‚¤ÿÿÿ3ÿbÿyÿ‹ÿpÿ1ÿXÿ½ÿ·ÿoÿ[ÿ‘ÿãÿ.OÌÿîÿy´1üÿ1Tl_ œÿLÿ=ÿ•ÿ%_=Þÿáÿ4—¡Núÿïÿ)PS@µÿ®ÿìÿ Îÿ‚ÿkÿ•ÿÒÿËÿ}ÿ/ÿUÿÆÿ95úÿÃÿïÿZx&æÿíÿ5ÈÖ]T^CÐÿ¯ÿµÿÉÿÌÿ¾ÿ˜ÿ‚ÿ¸ÿðÿóÿùÿöÿÕÿØÿ2“ª{qÿ8ÿfÿ²ÿþÿEY"ÚÿªÿœÿÄÿ6dœÖâŽ94_‚]ýÿ¨ÿ•ÿÃÿéÿÍÿ¬ÿºÿÐÿ½ÿÿ]ÿÿÍþÑþ ÿ€ÿ©ÿºÿÚÿÜÿÝÿƒÙêáêÃz^Ýÿßÿ*o·Ì ÿcÿfÿžÿÿ)ÿÿlÿ—£VçÿŒÿpÿ§ÿóÿ&<wÈÇ]Üÿÿ…ÿØÿ9!‡ÿ ÿÿcÿŠoÈÿ´ÿÞÿíÿ²ÿÃÿ×ÿÿFÿîþÄþñþBÿ‚ÿÿ(ÿþþ?ÿ†ÿ¼ÿàÿÞÿ©ÿgÿ{ÿŸÿ”ÿeÿ3ÿÿøþÿ(ÿ?ÿ`ÿ¥ÿ¨ÿQÿÿÿCÿœÿõÿ òÿßÿäÿ0YlfY[~§€¼ÿøÿfz sÿÿBÿÂÿT‰8öÿ&¬Âó 49 ®Ž·º‘{tb^praVbvo8áÿÿiÿ_ÿUÿhÿ«ÿ8ùÿãÿÔÿáÿQ`E+#9l¢£o0  Þÿ‹ÿ@ÿ.ÿ{ÿøÿE$µÿOÿ ÿFÿ€ÿŠÿ‘ÿ§ÿ©ÿƒÿLÿ'ÿÿEÿ›ÿËÿ‹ÿÿüþfÿûÿ@³ÿ^ÿ]ÿ‰ÿ’ÿ„ÿÿœÿúÿu¯}ÏÿÙÿæÿ¬ÿ¯ÿóÿYž‚6 Y§ÓГ*àÿâÿ ýÿ´ÿ“ÿÂÿ'X&Îÿ›ÿ¢ÿØÿ óÿÀÿÁÿêÿLN$âÿÅÿÄÿÓÿExš´ÈÄ–Mÿÿ¿ÿ¦ÿÅÿùÿêÿÊÿ´ÿ¼ÿâÿíÿßÿéÿ(ÁÿWÿ3ÿ.ÿ8ÿbÿŸÿÏÿøÿ3=>Pjrmq‹²Ç͹—sYUFÀÿeÿUÿ¦ÿ7-úÿ»ÿ’ÿ˜ÿÅÿúÿ'7÷ÿ<d`D0>SG, òÿu¾ AÕÿÿ„ÿ×ÿãÿ·ÿ¯ÿäÿ)&îÿÊÿÚÿ;2ÿÿÇÿ©ÿ½ÿàÿüÿýÿ×ÿ¦ÿˆÿŸÿÕÿøÿëÿ®ÿeÿ9ÿ0ÿ@ÿXÿoÿhÿbÿ‰ÿ¨ÿÿxÿbÿbÿkÿŸÿîÿ2TNCIG3!4=àÿ¹ÿ¦ÿ©ÿÑÿðÿðÿþÿÏÿvÿHÿJÿrÿ˜ÿ¢ÿœÿ°ÿmµ¯vNQ{²ÙßÔØáÏŽ4÷ÿóÿáÿÿ]ÿ}ÿÞÿP†]æÿU’‰n_9%  øÿ ÿÿ #Ëÿžÿšÿ³ÿåÿúÿíÿêÿíÿùÿ÷ÿÐÿÂÿËÿÔÿÕÿÊÿÍÿéÿJqrDîÿüÿýÿ ãÿµÿ¤ÿ°ÿ¸ÿÂÿãÿ &) 1HYcf`Q?1?kŠ€Láÿìÿ üÿýÿ,ïÿÝÿ8CÒÿÆÿ÷ÿ-J3òÿ53 ÛÿÊÿÙÿøÿêÿÊÿÓÿïÿðÿÔÿ»ÿ¹ÿéÿ@}p&Ñÿºÿæÿ BC)þÿäÿÙÿÃÿ¸ÿ¾ÿÊÿÃÿ½ÿÎÿÙÿãÿþÿ  ÷ÿðÿ,LM@2÷ÿîÿíÿ#'!!  36ýÿúÿ/?A5*øÿ  )'ùÿüÿ%#ÖÿÎÿêÿÿÿöÿâÿÕÿÛÿ.2àÿàÿ'ýÿÝÿÉÿÅÿÓÿÚÿËÿºÿ¾ÿ¿ÿ«ÿ”ÿÿ˜ÿ¨ÿ½ÿÒÿÚÿÚÿÝÿçÿòÿûÿ êÿÞÿâÿîÿñÿíÿèÿæÿèÿíÿáÿÑÿÓÿáÿêÿñÿñÿâÿÛÿíÿ    LISTDINFOIART Jörg GrafICOP(c) 1999 by Jörg GrafICRD19/8/99DISPKDEminimizevtwm-5.4.7/contrib/vtwmrc/sounds/applause2.au0100664000015300001300000022004110237645271020041 0ustar callumfid.snd&û@applause2.wavÿÿÿÿÿÿÿÿ~~ÿ~ÿ~~ÿ~ÿ~~ÿ~þ~~üyöt]pòrôr_çèg|ùyü~þwn|ånVvîrù}}ðynìã}nþììöøshtüÿ|ýïö{ÿýõíodôîplóÞíjéá^làldôî}ÿýyôooâöi~ùu}êwiç|fÞqYßîeën]vðonåîhzöróåh]æÎÓgUwÜ_Rß×íwZh÷æÛl^ëÞìuûèmaüîØûHzÅÛXXtöûéîznÿúedèãckò~ujúéþ{ó÷ïxcý÷jfðßpoöyïóxü}~ý{øòñn_îçe~êyùhnÛïnö|ÿ}øm\÷âümtîñßgJæÊ÷[oækbúwõüasæõoûyöÝðeoyûýiïçþz\÷Übuêz{]|àqëä÷c_Üéhëòymrèöwïáãl^dêÜg_ïðyóqcïóyþhjñßìpïó÷õhoõtïÞôvòlisiôÞæe^æÞp\iíþz÷jýÙuVfíÜzWyØãecèÝjaßÛúyü~~~ûtîâ}otyýýwfó×ïZlïîçv_hðäwmît]nótõq]êáj{|kù{ûòp{úy÷ïùrqznzëþ|øpêæ{q_nòy}÷å{Zmåëvtûoxþl{ûzúvmý{jòítíhmÛifíxîôpîêwuú|ÿþ~þ~ÿ~þ}þÿ{ôôñ|ao÷{~ý}|öl_pèêrrüùrïàcù×ysówüÿ}ý}ÿ~ÿ~þîær]qözý~ÿ~þ~nvû}ÿþ~ÿÿ~þ~}úrp~~ùrïôYiîtüýzû}}ùuôÞînutõízùy[_æâ^aç÷wøxûþenø|~ý}~ütoþþ}þ}ý|ýî÷yû}nwü}ÿÿ~þ~ÿÿ~þ}þþzöqmë÷vùzû{n{}øtk}}ìòmrõÞìoósïØrUfßÞjqôxìûzëhmßþ÷átsn|àæësrø|íù{ýzöoíÞvòònø~|ü|þ~~ý|ý~|ökhþ}ízbüý{ìû{ûyùtfïézÿý}þþ}þýxón]~åë^XâÝ~lwãõt÷zý}l{úwötlëzïëZkð}ra}îmiv~úïøôöeeíêû{qoðß|`uû|ý{øî~zõúëq[ðâînWpìùòpïmWóïsßt\~úyû|ÿþ|ü|ÿî÷{ý|ü{þåîsóï~þ}ý}qøözþ~~~þ~}ùtñïauè}~ý}þ~ÿ}üyn{úyùïú{þûssúëpVùà`mòwýîõiýxaðöýxeâér{gúïròï}ÿÿ~þ}þ~}ûvïå|þ~nízfôúzýnsóøszúy÷î~~þnvùzû|azÜîtú}}û{þûl~ìns÷xúzm|}ùukëõemúíò|o|ëõþríßilêùù{rùöòô{~ý{ýÿzõppäïmt|ý~~þ~ÿÿ~þ~ÿþ|úysôú}~qp÷æðxü}þ}þîøzü}þþz÷u|îuîûrÛénõzýþo÷özþþ~~üvn~ý}þ}þ}ý}küîûïo~ßpnçÿl~uîÞ÷vù|ÿþ~~þ}ÿïö|~ý|myìø{ü{ûï÷vo{ü}ÿþ}ý~}úv|òÿûzuú~|ùxtôùzý~~ý}þþ{ùutçùkýý|ý}ÿÿ~þ~ÿÿ}ý}ÿüwòm]þxoõjr÷||nxû}~ýÿotû}þ}þ~}êzhê÷j{ûîûyöjýìdèîWøèrðqoöz~ûyùôvvú~yð÷zzlýòxýþ|ý}þþ|ûyt÷öwþì}õîatçxúí~îóhôä{}ý~és]qïöòpoæíuüþ{û{prúîýûôrzû|ÿþ~}ûxøöalóyþþ}þ~þ{õï~}ý}þ~ÿ~~þ|û{qõøxùwtòùvöör|üêíarè~}ü|ý}~ýzøñõøvxüývwóûyúzþîúüvnñó|{óéxsù|ÿþ}þ~ÿÿ~ÿ~ÿÿ~þ}þÿmví÷{ý|ûxmþÿ}î÷{ý~~þ~ÿ~ÿ~þ~~üyôçö|~û{oy{ôqgîþðçfgxxû~}ü|ýþzôoqãôtø{ÿþ}þ~ÿ~ý|üîùzü|þþntû}~þ~ÿ~ÿ~ÿ~ÿÿ~ý|ýïõ{|öooëùwù|~ûtnþýyóóõús}~úôrzú{ý~}ý{ùîûzû{m|íù{þÿ}þÿ|ùuwòovþqôøyýþ|üïø{ý~~þ~ÿ~ÿÿ~þ~þ~}ûtoþÿýxn~ûzú{r÷ø|jýÝgi×ênôz~ý|ý~~ÿÿ~ÿþ}ûxn|ü|þ~~ÿ~ÿ~ÿ~þ~~þ{÷î~|ùvôþe~ôwû~|û{ýî÷{ý~~þ}ý{üîú{ý~ÿ~þ}~îõxú{røö{|õmgõ{rø|~ý|þþ{ùxxâêl|ò{øti÷ú|}rõ÷wúðôynyü}ÿ~þ}ûëylüvñnWôÜêo]éæXXúרæz[XþÝâjZøßxXYàÙ{[_ØßT^æên_îÛt[äÕQZËàYfóÞïuù|þhóÓ|WxïoböÜõwû}þ{ëy]{~pÞäqn}íûþ{ÿÞêrú}þzkùí|öçxXXþÕÕbYèäwcëã[xíuùXjÖô^}Ú}MbÎÙXUê×nXïõgéølíôqgoßåïçVF`ÍÏlkÛ}Xoùzùsìê}âQ;N½ÃFt±Ã95XéOÁ®ú,;±´=IÃU3mª»*.³¬ì21[¸³ÁM8@i\l¾¸Ø;9Ñ»O≮N.ñ¬Þ0ï³U2¿®?-ϳMK¶ù6Ø¿O?Û¹U/z­À8>ÃÙ=T¾½`NøZmÞSiÊçkÔdFiÎ~Ex»ÀO:u·Û8Z¼ØLTÛÒXVèþyßü\xäoSr½À=/ã¯Ð6ý°m,U­¸E8ÙÅ;M°Ã6A»Å4?¯º=O¿].B¬­=1ÎÃPW÷Zf¿¿>9ÚÈÞçlHNÍÃY;s¹ÒEÓÂ;3Ë»^w¹×-;´¿JÚÃF7ѲìCØÙGAÖ·ÌGAì¶ã0S¸Õ@U¼¸I.M¼ÏñÈèKRSPÛ¿ËVFkÔþ[VÜÅØh?9߸¾sQTGcÂÃébZFë¼æDsÌ[HÇ¿D8öÁÕêzJKôÛÙÌÕSA\Å×RjÓéLUÎÅ_:DÀ¹íVdR`åîë×ÞSOoumëÍÜM\éiíØìi]ÙÓLNåàd]×Ïg[ÜêU_û~}û}éâmvý[hõâÝZhÌéGYËÏíîN>Ý·ä@`ÙZ\ÎÞcî|jôâòQLØÅzM^aöÊÝSqØqOsÑß^bâîbfãvGغç?FáÎìþ]TéÌtK×Ë^O[pýú×ÍnKXèÓîújHcÊË^FíÉÞXMYéØêjñÜæ÷ouóibcßÉßOVÚÖn[gôìÖgE˼M?ìÊêUÐÄF=Ê¿N=Ú¾VL½È;;Ó¸Ï?QqíÅgLéÛÇú?\úúÇâFEè¼ÕBPþßÍéILïÙÕãYdìSHÓ¹ï=NåÛéyáïeîWIÙÍ[WìÙîdyøuópmÚîXüÚsNWÒÁÝDOéy×ÍXHòÊëMãÈcT}÷y[fÝæodlmmÔÑOEáÆÚ[KU×ÒÞñVTzèÌÍVEcËãTþánYfÙ×jeïmêá[hÜêkaKG@QÝÓrT`ÔöFöÇíPK]ÍÆjDLؽç:NÅÇ}VZcüëÙëM_ÒÝeTì×YïÝFEʼ]>mÈÓ[mÓzMYùàä~÷SEÔ»}?ZÍÏ}\hyÜËçDEÒËakÖÞ\TîåU]ÓÛ]htjÝìWöÖï}èj]èØtRUàÉèK[ßåäðaþlR{ÐßTWÖÊëPeÖíSfØë}×âZV_öæokëäkOðÉYBÚÀoGçÔWRؾá;DÐÇö|ÓdUÛÖVHkÓÙpwàghöóàaQèÍöRlñsõ÷ïï]_ÚÓä`HQÊÆ}P^àv\×ÛVeírþåoYýÕöO~ËåL_ÊßUwíï^[ÜûhÞh^ïuøÞ|oßwXcnêßüúm^cîÜYnÊëTZvÜ÷ôàg_tÿ~ÿþz÷sìÏvHgÌÞM[Ôàô×nCLǾU?òÇéQéÑ]Sþóå×ú]jf~ÕÕ^HeÐÕ}R[ÚÒïüûg|ô|nßËßUTkÖÓg]øcmåoel~îü||àÙgUtäñmjfçØ[[Òß[~þ[gÞÍàWvÛýô{VúÔÜý]mWWÈÖKUãËÞOòÏXCiÎÜuüåýZ[oæÜãfPfÛâôùussóÝ^NÙÎb\ÚÒgWmîÞëuòøsruìãävZmzïØö|oViîÝÙú~WG}Ã×NR~ÑÕXTúÙà^XcÚÓþùyWkÝáõý{_bâêrþõjWjôyóà×òMQÒÒYbxtÚøU[bëÐâni[ûî^~ÕÖîj]oÒÖaWkêy]øÜòqöìeXæÍöRhßíWwÊøIaÝûlüþzörðÛlWlæÎÛLSÏÑ`YþÚm^Ù÷Y}ðøôv~àþmÜëVTÝÒYwÐq]wàÙõmo_í×ü|{ZiîpîÙ~[væðîäÿatÝÚbWÞÛ\QwÔä]cäå_[qßàom~õ~üzduíÙ{CbÈwMkÚãkj÷oYwÙkZìÝìU]Óç\bøØàh\öÓóW]ûÕÚjtô`}ÑëN_ÎÞMYר{ÿoZ_téæóåö]mðqwoôÛ|òÝ_oÝofpìßñk\|Õ{Y~smë÷î~^gèØrVjòçïqvnêÚêûyðu\ýîsú~{m`õÝúyÜnKqÔþuùxâ÷byþÿ~|ãèh_jäÝujýwïåþzúzüóñh]þìöö~|ýüpwqwÞét]YØÔoqry~ôØè[XþØhYëßø[nÚçze`îÜïoùþy÷ygqéÞîuûheûèâ`Vìàüýqmtvåämdwâmgânï×rkôbUlÐØ`eýopõÞëeùzZuéøidØÙ[V÷ÜqvçjêÞ]kãþywëÚnRñØeeÞå^aÞãl|wpõirêû|m{îóäjUèÕdXâÕoUkéãîtòk_qéÚý[lûtàÒæhXrÑð]xûk]íØhZ|ßänv{`ôÏëPiélrÿ~þ}ýzppìßîjh||ôlXwßøhæëXmív~ùíyîÞötüôjéõJc×z|écYêßúúsîtYçÚfNMòÒåÚÚXO^ÙË[HèÒpUPñÊØbX_ÝÕnUiòh]zínëß_XðÛà÷`\kãÜú_fÒÑOJíÐqMmÔæiçãRTÝÎcGèÏmm~zùvõn]û÷ìÚm[ïÞï~``ÙÒöMJãÎs`ø}}onÛòYÝØYXãÓePÝÉqIdämÐËSPÛò\øâlêÕRKÝáoïóx}ÖêCAØ»ÝEgê\èÚWNìÊÌÜd<1[­·8O¬º0/aYQ¯©E!G¢Í)¿«1%»Ÿv4¯¬»A(7­§Ð0*?¶ºFQ®¼*4³Á>]ÅÈR8ÚµY4ñº]BźN:Xâ×ÜëÆì:hÅAx­=$»©VMÝT]õoøÏÏKEÑÌHIÆÔk½ñ1d¹VmµÏIÓÎBCÝDKª«9&?¶ÆK¸¶'+¢©&+¯®>(ö¡Å$:±¯ö+;ªÊ!h¼(1Êï=±¨4)¿À7IÀºÃC7à¾\=c·¹G0@˼Êpöi?7ß«¿67\··<4νQR½Üµç1sÃPàÈXÝÜ;O¿åNnVÛ½åOc]íÇþ=KØËÃÛOæm;U¼ÈhòrC>бÂB7Q¼ÌYó=^«k'â­T7»>BÃÈX<`¸ã3Û®áNÅN;çÔk}éhôÆù;GÏÀÐän;@ÌÊä];R«°-*¾¸LRpMÓ»ÒbUFpÄÉñ63¹°=:²°+(«¦3(ªO.ܹüHnTLµ¾-M¯HC³Z2º¹9?Õ¾d2¾±-:¨º0?ÉÞhÞéeýüní\Ù¾K9Oί¿08ÌÆÆÑ<6ίé1NÈÞÞ_VÃp6˸26©±*;®ü/¼®8/ÆÀRüÐiô_=lµÂ40µª;+X·¯Þ½¸O:QìÜÂÃN?Þ¿T8Í´M7>-ͱMBÄ¿S9YÎìdiÏÊeRïÓW@̽?N²Y8µÃ+K«Ï/H¼¸Ü;;_¿¾?:ÇÈYÓÛ?KÌÏ}URÕÎXjìIOĺo:cºû:íÇRrÈeOÿuÂÏ.CªÇ*[¦Î&?­È:Ý¿@7ȵg@dVñ¸Û7kºo?lçoØèTWæÃÕ>JÑèráZW¿¾A8ÜÃøX]yÕÈÇN4HººLEØÚ]AY¹ÇRòSDöïíÉÖìN>áÇVVØçñÞRJñÒÖXTÆØ?PÎÉø>LÂÍ^ÔÇI3O·ºLBÊÒÏqã®é)GÅzÈÏ4O®ã9ÆÎ<ãÈAOÅÞmÏ^Cm{mºÃi¾ÞZÝSPÁØDÌÉ?]Äòòe<\»ÒJeíXBh²¾=CÖYUºÍ8UÀ×PG^ÒÚíêWOÌËJ\Ç|PÝåañoîÉ[IÊìKÅÙ6K¼Æù[GPÎÀg;Ó¸G/o­º79ÁËBoÖHj¼ÍEA]×ÄÝCnÈ{NX}íÐÂG1ϳþPd>BȶÊ;;éÖÌÆWNåñ}YkÒLN·º?7Ú¿_MÞÞz÷mûøXiãðÕÏF6É©î,MÑ^Ä·j:NâìÛëNQÙÇÌdS\M;LOÉ\DëËÜïvVbïßÒüDGËÐJλH9ÆÀJRïhߨmS|Âë8Y¹ÇE9ïµÑBOÏÅH=º·86¿Û=ÌÊGɸA.^¹ºî5>¿¼ëSHQi^ĸ]5Z»ÝER~×Ôç[LUäÀÙ:KÂÑKîÌNߺ_E_Cm´¿IHZVÛÂìDDô¼ÆDAö[8LïÖºÉ8<ÜÔÅÆE:aºÃ=>ÕÎå×Ù>3دÍAnÜFW¿¿a;DʺÌIGçÙ[\ÑÍeTíàf[îÌo_¼Ï27˼j^Èh@øØUøÂÛ8@»ÅE]ÉÈ[9PÄÖ^ìùJÙ³ó0=òÌÏÛÊàLZv__YÁ²B*L±³^Oj=8Û¬Æ1ü°à7:é¯É*8¬¸6CÁÇû[iv?4¾¢Ë(F¯×*/¶§Â@C\à}áà49¯±>>ÕÒoîÆa6`ÃnÓ}:þ¿ÙýL=õ»ß:UºÕFõÎèTlÙDB·±>,Wµ¶ö?FNÞ¼ÊXE>z¶½GKÐQ9[¸¿FMØëcUtÒzýÕfKrÆÒKMÌÏ9N°Í;XîR]×ÎÏáaâd?¼±]3O¾Àm;HÃÄV@y¼Í@BêÁÙ7F°¸67»Á;gº[8OÄÊVX×ã^Èü-C®³íJ98ò?3µ®GA{:N¨­**±»,n©J3¶Ó0ÑÃ@ÏÁOr\MÄÁK6K©Ÿ49«½®µ,*Ú¾¾¯Å*%J®¤Ð!4§®[D(-©¤_öm0Ÿ«0G·L*Þ­`N¾D9°¯.(·¦K+k¹ÒûþJ=O¿»Ò]O÷øFOÈÆ^EX¼·?.n¸ÀUKlJS¾ºR7áÞ<˰æEeL6׬G.µ´<<òº½6-À­êWN-\©Ã@y?M¬¿2hÔ7t»FA´µ>>ÖYPÆÀ`G½¶H?¹h'â¡Ý'å±Q:Q¿´ý0=¹±`6\·ÈDCCæ«°--·X.™‘Ÿ% "%­4 3¾ÅœžY3\8?¬®=+L¢¥Ï”ž/-±·HÙ²t1]³ã6m¹¼S-B»¹½5#Áž¾-/7d§¦8%BÙ¸®O5ômZ·Ä:ž0Ä9«™ž .œ $˜¿+K%Q›—»©šÕ7h½Ú¤“­ 0± ¢5¦“ž.)Rï°ž¯$,°Ü!,®ž¢ëÏ—¡*>ªžÙÁœ›·.·§¡®4.¹ºWÖ½G?Â_V¬NÄ—`á¡ÝÒÚ%–›&¹¡Õ!(ùӯ­5)¬–£>›Íð¯BB6Z¯Å/*Çž»4¤Î5¦¥É;0BmV¯­)6£V ²¤**¬¾-V¯¸\1>©½8§«Í#¸–®"¸¨_/έÛ629¶œ»,¦Ï*e­­Û&'¸¥Æ+/ª­+e½!f™Ò?¸oÏ­Ý,AÉÊÊ92¸»;×­[,>ʬ´*+®¯/-gÅ­©V$'Ťç/ÇÜ;ºÀ(5£§+'ƹjLZ¾³à22⳸Q.9ÒÙűÐ;AßÉ?/¾¤Ü,AÐÝTäÑ=Z¶êKÈÕRP6<­«60¸µ@>ÉÓ6;»ºxeú\UrãîZCÛ¶Ùôù,4²¸ElÈSÚÀ56¯Ä(=§ª:*[ÀæöÞÔB9²µ,7¯º=UÉýÓì20[³¤°8),R¨­.:¨Ñ%Y®zHÏäNDþ²¾2,Þ­³}5?E=ªŸI'0Q½Îw´Ê2LÑYÂÈ.<«·+;ª±<)4°ªE1±«%¨›V&9éâɼò@oL:·­>1î¹¼R:qÂËw;2>æ®6,jÆÕÁS.L»ÁâoþüêN8L¶±\>dNUÝâ´´5(D¶³f=ZÆÀmHbãK9ϯØH]Úæ7L©¾);ºÏVÌÃX=9F´¬Ï:.<÷»Z4GÁÃMPÁ¿U5JÆÙÎÎ=:¿«Ä6/?Á³ÏNngOëXF¿¼>>»Â6V¯Ô1JºØLÀÞ*9©¯-7¯Ä7?Õ·¹B-[³·Y'1«ªH7bfYÈÄI0í¤¶-3Qɱä/2^³¬Å/)ÕªÇ3A·ºF6DÀ³¹b('Õ«­ºP**È«Æ=A;E;ÄÀ[LZÙãÚÙ54¯§B%]ª¼:-b§»%.­¹8ó»îþV68̬½?KGGÂÁÚK;ÊÀJëÍ}i==ĶÛjôÝÈß4>²É:Ú¾ÒR5=òÞÖº³G-à®Ç;<Ýw<Ë®Î:27¼£Ê&6µ¸I<Û°¼2/åêÿ¿Ë]MI×¼èJ}pOsàmtcúÌéiÓS@ÞÂÊJ.B³«º9*Gº¸ÞD?i»Ç>GÜüÕÇ_Hiërî[sÅo[È?7°«5!?«©À=5O\l¹·?)Rª¾1O¶\1Y¶»J7o½Ú@BųA*×­Ü;Y¿É97³­?/?È©Á-5ÙÉîj×q@Wº¾?CºÎ+9©ª=2W]È´H(Pª¶MXn=LºÚFÄÙ/K¥´$0­Æ4T´º@0T·¿I?iÆÛIþÐTLɰÌ3>ôDO®«4!ΦØ6iïJÇ·b?h[DqÉÇÄèFYyFJȶ¿J24¾¦r*öºWÛÈ=<ÔÆÌlAżP<ãÂ]3Jª«:&>¶ºS\ÓOX½É=E½à2Oµ²Ú17ÎäDÁ­æ.5ʳÙ@d×óM>ϰÊ85ì»ÌKBÝÁñTýýJ\ÈÝê÷Jé¾ÔE>NìÔÈÓNeÏùN?^¹Î?MÕÅÎHCSCZ¶¯Î2/å½Ì~FCË´Ï;AiÏÆEC¸¿?YÓ=;»°fMñ?8c¶µß9:Ƽ>9ÅÅDÛÂCh¸=/««"'¡Ÿ3!2½¥¼1BÏö[u×[@TêŸè>[Ñ[Dæ¶¾;0s»ËIGùÓd0+·¨mMçG^Ñ>=®¨>-WB_¦¯/,î²Â;RÃ;9ÏÏ´¯=8ÙE7\º§¸#'¯ªL-<¯¦J&=źÌ?IÅ¿K1L´¶E3þ¯µ;*G±±@8ÏO9ϵ¼ÕíE5Dnºµ/0©µ*/Ú´«Ý.VÙ/M«¹b=2ǯ?2Á¶GAºÙ;´Å: ¯.!²š2!·ËUî$H–šM0–‘±§¦<ÄO*—œ8&2¬™Ü<îH®±$( žA));«´K³µ*+²¯*,©¢x(*Ưß]J`·n/l­Å.b©L$V®¶e8TÏRÑÊJźNA*'´ ¶Î¬åœ²3$À‘ ×¢6N•Ÿ,Ùªž¡(0‘)—^Ϥњϸ«!ž¿¯-&ÆF`©7-˜/œ˜Á/ëE-³­&Ä”˜.&°åÙž¥="$\²¨¨,K£³IYf4Í©^F·Á=.M»Å_28§¡*بI5¶ž»#¸Ÿ¨F$+V®¥J-­¡ã(Ó§{9óM8í²Í3@½[4±¢E%L­Õ,¿¨8H™¨0¬Òj<*iªž«º˜ðÄ—.·œO*í®X/̾ë¼n->´µO;cºû5¼®85¸m$àœ»(.¼¨7¾«Ê£Ü9°©•Ì9§»4,í§É.º­(&­¤K$VŸÊ-®­­µ0**,ªf&´šâœ–Þ34/ÐÝ8¦œ"¢›"°˜Ö5—¥£‘2¯(˜« >ºCa¶R1YÍÏ»º>)HºÑ¿¡¸¨•Ç+C¸¼58¿¼o4)Á™±)·A¸ /§¸5ʸ>/R´½9;ʹð6>źÕÊá',³¬ÀI8¶¶'3¯Ë?a¸¬ë&'D®¡¸724aµºÀßNÚ0k¡¿Óµ*#¨¨/EÍ9ɬ~-8¸¿.Pž«£“×&7bÓ¶²C)7éb¶ ë#TÏ=tVܧ®G..1?¦œÙ$«ž4®˜5S©4&V»G[¯µi/,­Øù[/?¯±KIÖbS×»Ô/M¤Æ)¯¨®Ç*Ëžß&É«>-Iħµ#+¯´RMåÁF @˜%ä©R9mB»¦L-ø¶Á96Ôh/ÌŸÁ,XÙ97V«£> ë³èºÍ*/X¯¢K9¼»¸À<5»Ò.È»1R¯Â9.ɯֺ«µJ.,K±»25¬ŸLA­~A¼»G7^Ý>ÅÀ'¤«Ao¾I3@n¿¬¸9/AǾ?K²ÔL¿åIJFÌÏOÆÜ5ë®ÉIL>0:°Ÿ½,;Î]öË.1¢¬!5Ÿª(ѧÑ=iM@̼×çêJ?XÉÉÕV;]ºÄ75­¬-)ʬ½0-˦®'ß©<'7;±½8'8¨§K0;̰Ò0D´ï8ÁÂ?fÌîÌX+M¥¹*:³Ó8Ë·FJ··1D•š¯Ÿ,T›Ý'£Æ',Ü`F©¦30ÉéEAµ-8£·,h¬V.šœ"¾œÌ,N±¬K!/Ⱥ®Ø(Q£®0+âÚ5УÜMŸÂ2T'"˜‘"ª³@Ù¶\.ð½.:Ÿž'È‘Æ+˜ž+!o¬´4%ø¤¯/,ÂÁHuMý­ê*ß­@+¸¡Ú%-´¯69×U®£2B³ºÄá=3Z§£<"¨™ï&¿Ç'G¸ÖøFï¯A'ª›&³¢G.9¿¢»-rÚ>œÁ b¡¹(#v›Ÿ>–—&¯˜;2·+!§šM+¦©:ϯ,9¥;³˜Ã½œµ.6DŸIQ®Ôžªœœ2;ú2ô¦³1(/Ç£Þ-­±!=¨Nݪ+É¢²=5@J½®ß>?<ЪµE,*ê¬ÅÜÀÅÆ.4¤ž«NŸ’&¬ž+?¤¿/&6§¦à?&=›ÂL—ë"±®#)©žw.žž'pœ±)+«§.*ÎËLYµ¬Ê1#OžÜË™LÊ•bÌQ"«¡-ÇŸ.;ª¡Ì (¢™,jš©9&.¯ŸEVœ¿#¿ž.S¥¨¶%¬¥BG@(ÆŸÐ>Ë%)™ "«±á[?bµ´91¡Ÿ5%¹¦8QŸ©/'YåÚ¨½!/£«#%­®<¹¢2Þ¾0)7Ÿ¦ 7Ÿ»'&ʦb/ÄÜ5²¢A&ad/¹ŸL$Ñ¡½&¤¥:3FAÁ¥Ì!;®Ï¿¶-*¿Á?á»@/¶ž[D¢t*í¬·8,R´¶aJb=@ƯÀ$, §4Fà2M©Ì$d¢D&·¾.¬£­§T<ɦà"N»5âªI.²±&*ª£Â+àœ¿)9¹®L'1¼Ÿ«$¨§,œ«)5ÜMαI+½¤G&IÙ§a"½ :&îK2ªŸ0!·«6?®G#Ì£Å?lmVèx;?¸·BçÂ%.Ÿ¯'ë°0J¢Í"6µ´ÌG-Q¥¼-NW,¼£MQ®0» ?*±¨4¿¡^6;ói"¬“ú©˜«©¯@Ÿ>BM¬±Bž^mÏ/«Æ§›-›42›o¼ F'.©®&¯¢+ª´Æ.,··»É&,ºÎ5«—.1¤Ÿ¾#9œ±, :½ž#1œS,½)(«&b,¡œÂ”¯¡#/™T2Ÿš¤U¯ö:º£«Ê­”¾"¯˜ßa»;f>W´!'4¬—Î5–¼/¾«ž•”HÃSYH>½FÃ0òøo¹ª¼J  1—!(¨ÖÄÒÞ¾901ؘ¹0£¹Å7*§«*OÂ)H¨;>[ÄÎB<-@=-&»¬fزQ/F¹Æ6Hµ¨AÙœ?)Æ«¶)$¨¡"ŸµI¶,*¨¯5ZmH—«<×5Tœ¯#2²Ã95¾©ÖBC2²©+&Ù¤²-”¥&617«ªÀ1¼—\4º¥¹%8ÊIª¨!!¨¦ÆÎ#´Ÿ¹W?.7©¯.77Ï™¥¿œ­:4¥¦(¬P4FWåSß¼¼ÅC./»žp]®í=KÙùD¾§_(›‘3 ”ß$A*ö”lÀŸ^7HÀ¾6B®²9<™¡Ó£«(³œÅ(6´«5ÅÉT±,ܫޯ¹ ¬¡§*¬•(µœ®6!*¬¦Ö*¨˜ Ž§¦—??&"¥ŸÚ)¨Îp›D=˜¶'Æ¥/K¨Ÿ7!É®g-;¼Yê©9 ¦ž$)­E9ªu1«º"4±´Ý.5°¬=+ÀÀ4»´.9º°Q+н6þ¹ÍÝ8+Éž²%.\C´¥U-ULZ¢²$5ÏȧN>”­-ª¬O+F´ê,j© ¹¥K2Ì®Ó&2ª°02¯ ±#5›´·ž: ­ž;C¾':£K½Ê+7ѽ·äC½:UŸ«<,¼¨:)ÛËÔ°G$½£8$½«:3®¾+Õ¥B&ɦ»*G™£"žµÁª(H MÓ¤Å?+ º›ÂCH&Wœ¯(1>A²¬:"ç ­h@$¯”½7«â(ê¢Í%M´:8­¯Nàå*/²¯L7D¾¯¾H&.¥¡R<)¬‘>¨¦*¡È6¾³`/J½ç»¹(*££¨˜Û&G¸É<2_¾Ì_L\LU¦¨*)ý½¨À%(R± {C§ºÛ8+Ù®²º'Ÿ’_›ž±&#¸¿N«³:5pÔ<ࡸ!,¾úL±¬Â:*U¸>/媞ƪž@&Á°48¯°÷í<"@ž©.3ÏqÆÁ,CªJG­;1­¾-D­»&&¸¥±_6;?ü´ÛT·P,nd]£­$#»©@/˹®Á,«=#¥Ÿ4F¿6V²A4Äði³ÌH?>¼Ê+Üè 2^ý®©9(ŶF8H¨¤%!µºop;q¼×åcOl^EJÐ[hž«˜œ$£À*´Ÿ+f¢½&á·¿Í0E­ÆYÌ7#P ¥K&+௹>;­¨(¾›³?-%⛫'µº>Cº³èM79ÏÝß®§<'¡¤»ÕK9*]¤Â7Çé+N¬Õ5Ú±ÀB9mT6ƱJË®8#>¤Ÿ1Ó¨W>¯Ï J›Èz¸)Oœ½ 4ØÀ«¸<+7ýMÀ¢¾(1½±t<\LR°¬F+«¦¼L/=dÅ®ð;ÐD-Ǧh&Í¢Ù6L*0žž1'c»¾hBBKͽ¸Â+%¼£¯A&7ÎEÁ¡Ë',ΩÍ<½U"ß™·(¾³µK2Áº9>úÂ<-@ºªV0®°-)F°±8FºRk·5'°žk,:?¯ª)(­ª].7¼®ÍD5;tÁ¦¬,)@5Ÿº-1>箯o22T·¥¾£—È親èXV!+››(U§£Ì´£ÍE¿®=%lÐ-¸œU'R==§¦E/Aɬ´.-š¤0ZN6´ÜÜ‘«-£EC•›& ´Ë*K¾Ø³¶ ’1¿ªZÈÇ.-˰±Å,!Åžî!J¯Â8*¸šÂ-®»=*5® V O§Ú+O°ð*H¤§8!ð¨F :¢›È!)>N©¥2$Ü®Í_N.Çšï%¢§O,¬¹#/£¨.=¥Y>¥²ã=,ÄžÌ!.k诣k$L²O/o­¾.2¯©8'OòÅ©Ê9ëSVß-\¦E;§h!E·¨ª&É›¬¯¢Ø+6»¶D3LÕ¯§@ ͪ4)¬œ0Bš­Ãs$—Ÿ*2<7¢Ÿ**»W2r´¶NGÉ<)k¤‹™+» ,–“šc¼Ñá‹–½µ£?À??¢®*Æ¢-$:[ž¶´ :ž'%š¢!H¦­³¨98§6:œµ2¯Z¾žP!Ï¿"'©¥¼¹NÁ¶—™=–Z¦[‘ ?–œ¦º «¡£šŸŒ:*X6¬'L¨,®«i®'¯ž7-,"¨Ž¾ F$Ÿ¡Åœ“´½ ¾:޾P.'§•¡6-¯)6©Ž«›’)šI ŸˆËœ7½0¢¼)«§A?0"!_ 5œ§º|&>¤bK»Ð¯².'|cRŸ¤#<¼§§ð#$­›A<•ž&$=)Ξ<3•³Tš'¬¯7Ç·"K”¬$=/Aš•5*`Ÿ¢&,Ï.ÙÈ>›)–Ÿ $=³É0­°*¨™?+¸F0§ËLµÈÒ2`£Ç(@­Ê%/¼»Ý¹¨@Kµ×¾OF§n;—¬+=G>¶¤º#M¥žï+Ÿ^$©¢.#»£Ë1I»Ê44³¤K"?¯°H¿Å²4ææ<Ëå7ÛÆ8½ž2·–-ž¦7š=¦£$/¡M½žK*·®%) ¦›$µ¾Íb9®2KŸ¦¶#<—# ›Ÿ§µF¸¾ëà;.7Á¨Î2°­'2é-¶8#©¡!š©8­GvŽªÇ«§žÃ$.§Ü-§º*¥¬/Ÿ, Ÿ˜n0®È-ÿ·lKQÜÛ3R¥ªr+$X¸ñ·¼'cœ<Ï›¶/)2¶žÇ:¡^#³Ì% ž*·;±¢,*·ÉFEô´ÎA9/»Ÿé/ÄL)ð¯®p$7űœ½±‘ž&'§šº!=‘ž!¬·×Ï% ¦–Î&Jk(?¡Á)¨#A®¨½,2®¬û=-n§N=¤§8T­'¶­ºã+<®¯=-ÌÎ_®Õ,7?¹¥3&£©(ªÂT£Ä:»G¹®<9ÑhÙ­Ô(>ÄF¾¬=Fp(X¯¿µìAI*ÈšdE¸ç³¿=J2O¥ê&±§#›£2§¾N7,½¦>*¤¡­­Èº@*Ñ«4 ±›Ë&'T¨·<ÂÏ-ЭC.2Kª¨ßOE;å2. §6ÐK'Mº®¨c¬™Ê*9F¾¼.Ó :*¬É/¹Ð=œÜ2Ÿ½8¤¶::aÉÝl¿è6\»¼G'¦šÖ/êH3©ª'œ­"0¹¯±P%-¼®ÆZ4F«Å0äß@¹Ç?Ò;8§ÊK˜²2®ÁBFê»ß8J¸®[+.=±Á#­œÂ",·¾2ʬ+/¦Ï'æI(Æ«yP@&<®¨¬D$9µ²B,=¹§³ÝJ/5NÞÄÙá\6ËŸ²­Ÿf2EMSŲµñ((·¯IÒÈÚÈ*$¹¨½ÙïjF3=êͶºD/9¨Ÿ(´¨:8­´(-Éë·"&¹¨ªþ&0ÝÆKA©ª-*ƶb5<À¯hT±è'/®§=-lIžµ#&EX¿Ÿ«$$ÆÀVUȸH=²y$C·­ª*°œ¼2$0¬®ÃD3˵ßA-4¯©½O+O¨Å($É ¼7`ä58ß×¶®C1ͺÑ>1j¹»É:2ðèaìЫÏ6§ªß'/²UH›¯'©ÎS³Â?ç¶>;—¤&¶¯¸X"-§¥?4ÙÇL/7¾¤¬7/n5,­Æ-53.¯™ß[§:-³Þ'«˜3Mªµv@;7K¬«]sB$kž¯:=F1/g­¥*6ɬ§R!¶• j«±¥ª:¶’01ªÌ/º±)=›¡ò•±&8%—ŒOºG˜ˆ™Š$ ÖŽ˜˜š)Ï“”–ƒ¬!(®¡¹éR*²¤.Ê¡<5£ž'©—Õ7(´•£ Ã¥):—½Ÿœ¦­9(¦ŸX"7§œT›A/48÷Æ   ŽÃ·A ¡›žµ 1©›!QᬖÌ#”ž(*[Ü5!´œ/5dœ–$¬ŽAó².”›™ªÚ6™ &he¸´EÛ¬<2¡›Æ7<#.²;)—È–‡} D% ²Ž´¤Â×"8š¤#0=±š²#>–“$aìLœ¶ožM)J_O¬™¶Ì­q¨š:DžQ/®W-«­lÜ%8ž–©K'$¯›À¯›’˜¿Ó]¦»+9O» Rä›)™–—,šT®œ#,•¥%“•ä——“²"œ+Áš-§7¸È+£¥Ä™©*¬R(Û±¶¿.,¦ 89¸+ÄŸãäÀ%* •¸¤Žâ/®­njÂ/5§´!'¬£Å5.YH1¡›*2¯'¯¥Üí_/¸Ÿ.Sœ¼3µ°&ͦ¨´9*-)²—N¶«,*¹œµ-§Û4´TƘ¯'*?[´¦¹/#A¬¸êØ'&Ÿž-'ຸà0<Éë:¹›QVšVÙ™Ì8£§/ÑÂ>@)SŸ©,"Ì®?L­¼5/S±º),¥§&+œž®£3>¥Ç6®¾Ì½ç4/¾±=6Я±>):¼³ÚJEOfcµ­A+?Ĩ¯+I«Á7Ó¬N.ɯÌ:2äÉH½É(G¥¦<@•«»²Pªž5/¤«8IãD¿Á>P¿·Ò:8¬¬0=ÀGTÎ<8º§ç0ÈÉ3GÝFBÎ¥ŸI"¬¦NK¿I7º±0/­¯66ñÏÂY3Æ®rti/[²íAB䨯(ý¬µÃ9+Ä­ÞÜ\,7Y로-3ž¥P/.M¦¢;%64­—6·™>!½©+¸—Â.É6!¬œ)¬ 8"Õª;B¦":“£4´@³ ¨¡5·«"$«¡D*½¹')©ž3 °«4c·¥P?Á+7¦¯G2y£Ç(½©¯äNH*+±ž²Z6+™ž›"!ž±+¨ (š¦.ŸÓ.³Ö/!FŸP*¬ªÇ]4>­¾(0bÑ«¸4IÃ]ï¸]*G°O.®¦*/ ¹(¹ª­õ=K3B¯³ÝH@Q=V°Æ8KÉÁâCRiâÅVU¿\G¿J*Ы×CèÝÐm(=¤½+L­´/*¿À1o©¸I/'ÊžÕ(kÁH?ΪÍ&:·³®L.»«²DIº,$žŸ#&ž´¼;Mã.6®´19®·BaèFþ[v®û"yžzI¬¹í=;ÐÝ2Fµ­®Î=.!D£¯øN-f£Á+W³o9Dobk¶Â0T¤¥G"Ϩ¨F$=¯ªç.;ÛËk¹¤2N•©/03?ÍÃÒȸP*T¯¸g.7¶Ó<»É1^°Ñ4N¿åPY\ÌÊQWI5»ž^K«KM¼Ö~JBºÎ&;œ¡¥˜6ѨO;²®Û6$1´®ÃÎ^7>ßÂN,ê «,(οØw.C­îA³¾]=(l¦Î5_ÎÛÎabì.=£«3-Ö©Ö!:­¼Ðê(*§œL/»¯¶Ì83\ºµ7_™©#/»ÙaK1U¹ãŨá&5ÿL?ƾDG¹½88Qmª£0;¥«wQ5#ý™¤(?ŸŸ!«‘àBÂ_ÊÌUC>úI]ÉO[ºÔ/;ÖÆ¬Â!/¢®5ZË=>OU»ªµ=",³¨Ó9Lżº~%+§©2<\2Ì£µ8'-»ª¾ÛD-T¦­%À¥ËGLȬÃ$$¸¨¾ú-/¬ª3'í²Çc^hËÅ^[J,TŸ¬*,ÆÁïÇ},7¨¦3(Ö¿XÆ¿9?µÉ6Rð<Á©ÁB.:¼ÇZźM+/³›¸(õ»¬¿00hÅÃÇk>lÌ38©­.1¾»PP¾ÉLIKÓÔ:[³ÙQÕ-.Ÿš4&®›«%¿£H-Ê\A¦¬%.«É(O¢®)ל« µ¢Ù'G¨gK¦?)$D ©),ª­,(À¬ËI>?µ«3'®­'4§³0*5ɤ­96ܽí'/§¤í.3ºµ3+䣥,É Ì2ZCW¦Ï$ã®9,Ȧ¯]8*.¼¥¾0:´±25²[-¼©4!£Ÿ(Ú¾ ¢Çª˜Š‰,­…N1:Ÿ -—’J¥•³+:ÄP­'$¦–œE7”“ Õ’™6Æ—¯C®¡™: .¤(H_GºÏ36KGÏœœ>-ÇŸª&¶žœŒZ$ š” «”–F“¥®ŽÆ5®/W™£t$;¹Ÿ¢!¹˜®%™¢°Œ”! ¼Ÿ•¬¯’µ(ž¦¯¯(>®12ž¨5M78´i=¸¬¦a ¡£8U¢ºD]·•³.Ï(»‘²ì—Œ#®%‘­'Ò®ž®9;Cy°B/ž¯(›²(L±»H1d¹ÙKÊ·/-•ÇÚ›Ÿ/\«Â¼´3$*9ž’^9.¨•Ê/ÊM5–žº@j¢»¿«.'®£µ*«“j&F9âºD®,Wž›Ý¤‘º*¶¹Æ/-¢¥±“²(ÆñJ—²F 79—š-/º¡¶>í.#¯ª.H§µ<6VI/¿›±%NÀ—‘k"°²ÃI%C¨Ÿ§-*¡›9¯¢¯£ÓmØÑG&R™§)²8(«œÜ.¯ÍRÊá¼·/Þ˜ ¼º=§prÚ;ç¸É<,FÕ¾©Ã;S5/ª›ÔOœš*¾ŸH5ÝM¼¤V%9Ì»ÒCmH6¸©L+I¬©Á6,§«8O¤§%j›R¿œ´Cý/D›³&±+Iªµ?Xî$=•œ5®¤²O6.>ÕϬ£Y¬›P#Í«Ïü?7›Ÿ: 9¬H(¢¢H˜:/™žL%<©k"ʬ̫»("*«˜5º¢äS=0­§*+»?3—'I÷g¢·7çåÅÑ%*Æ·ª¢I2˜¾!«¶%¡¢®­(œ/ª &#FÏž¢N',7ÛŸ¸5™º)®:ª=GÌs»ÕQ·Î6Õ»:>½ÛPÀÃ>1HÌ®¤\Ó!¤¥DVÊ4<­Ç"6¤¦:'Ĭ9+ñ«¬=&å®/7žÅÀ¯'SžÆ&3̲»}ÛnÞ»þ)B¬ÊI±È!¹• % bã7'/ž˜\$0ZÍ亰+"´¢Å--°²#@œ=¨P.ÌÄ˼^&Â9ЧýZ¤¾"GÞ™˜ž!™–«YÀ2´®(s¤1'²E˜˜)‹ (’³UŸCj“™ ½‹´,¨Ãc¸;#¤¦B§Š‰ߌ3$ɾ®â&6¯ó8§­.ŸÀ-´ïɘÕ5É+E–˜©œK$­•Ê-žÂ,¹î"®™?$äå6D¹§½+8»ÑEoG?±­G=w1&¯•¶¾ž¾?¶*ÉŽ²b§.MªD6Éø:ø°1*—¤+™í,¶W*¯¦(*ŸŸ+Õ¥?!¿¿.*-¹Ÿ§J§š³0!/þµ©x%?°5&¦œ/ñ¦§É ηԻ¶L,塾#ªº6N¾5!?¯«¡Ý#—˜I=•—/,Ǥ©n.#@¡¶.¸µ3œ¹*-=¢ž%Ë¥«? Äž5(«A¯«E¨³#Ì ²<[/´m-@m¯ ü&>?H§³4;^¥¡¤—57º0R¥.¤¥`“Å5ÕÜ­´-D›¯'à¸67Ò²Ê9Í¿++«›O1»¬Ÿý0§[8 ± <¼BÖº82­ŸFC³ÓÄÙ">˜¯2ª3+žœ1 6ׯµ.5£¹$>®²E 5Ÿ¿Fž$- $!˜Í»NG¡®."ºžÏ.,)¾™¨kšŸ21e²ª>)Ö¯ª±!·”ßU¤ýNÆ.HŸ|­,)¨™1yœ´9S¾.²žJ=¾O]¶4³ %Ÿ•:w­¿F,<Ʋ­:+½O+½­Hܨ{*̼'*­¨;=«¼+-ô:0¸¯ùöºÙ%!Áž©;&\¨ú"D¯ÏÛ¸ÚYD){ž?º™I#¯¨',£½D¡Ô/ûÎû\b¿Ñ>GR?Ç£Ë:¥Ç-Í¥×.¥³1A˳².)´¾8ÐÎAÛy@¯§6#L¿ÓüêEmJ7¿¼>WbÙæ0¼§S°$Iœ«IÚ6; »=³@;¯£S)cÔ;1N¤ ?2Á6+­°-<«©4E·¸£» ¢¤:^µ2(¸§7(§ª"“š%(Ô:D®ê/¾¬F?´K ÕŸP+­©4.D6E¬Ÿ±.'C>/²™­"!ʶnÑÍD`Ú0QŸ­9*ß›_"©ž6,¶©^/Ö©­A /®´ûÇýBÇß(*µ­$΢»8<Ï­Ë!%¼¨°Ì<)E±ÇϳJ#D¤Á!3¤Ÿ4[¤¾5.¼£G&Å¥´2(­Ÿ¾?N}ZF^ÜUÖ¶ÖJ³»¹šš™+ 4­ÉŒ¯¾š<+Î@J¨Ÿ](Û©Î,.缺Ó50a³ªÄ&°“Å'±£šB ••Ë(#:®ªÅH-0¿»ûµÆ#,²®¶­ÅϽ?n½¦Æ%¯0#––"W å›™?!̦—ÌTe”“é«Á«¸%¶¸´À&>´Gªã3*/Óª¦«¿+¡–©$,ÛîºE ™¸/ÛD,©l%¶·3›¯.뮯LÀ–Ÿ9aΟ¢$«‘) O–u¯â(2¾Æ>þÅ@e¯ÈÛG*›®8©Dª–:(²1@9,À˜¨«£®«3Ÿ–¶WV&: £:ÎË#J¢£0K›½È<$ªª/¾º!%ÔÅŪ®Â®WT¨Ÿ¬(«š(¸¥¿!2ŸÞ+ÊFQ¬c,¿ þ-œŸß&"¯žR)-(Nš-,­Y7ªÔ¿¡»2S2¹˜N=´ß@¥G*K.&+¯Š¥œm)& KŽ—Ù®•¹,¿ÃN0\¢«=.)˜5@²Åº¸%A”ž;/·²©xX˜y2•š4(\·½É¹]'0¯©ÕWC'3¥˜·°’¨¼¶2>À¥Ÿ1.ž\1U0>§¬9'¬•£:Ÿ¤º$¦Ã9`ܵ¥Ô#,-B—™4+- v¡À1?Á²ÆßØ,¾˜À7¨X/¬¿3»¼R=%:¥¤;Ïœ·&-ô=T©Âï¦æ!Dº›—cº¡ì#DªF#I³¹²\%M­Ø9Q¹¸J5Ó¶âxó<;PEM¸«­=G£¿MsB߸a?OI_æMÀ¦È$.Ãév¯«Ï..J\ܾq8Fµ¤ô[œ8¸š¼.@T4Z±Ò3K¢Ÿ<bšœÍ*$¯œ¼-O¶Ú>,:¨²0U¹Îë>6¾­>%@¿¯¦H <Úª)®¦>;ÙJ)W¡¶>­«Þ˜µ4ù»Ç9.>¹Ô(šœ,9Ö¦¯25GÖÌO°¬1,»¹,'æÄ1AÌaÏ­Ø-KÎ\¾¶;$QŸÁ#¿«%4¦Z7ª»/TD'¯–Ã'EéÙ°¯V7B­©%Ħ?!*éÀZ¼Ï-'i ®+0»¶J:¿º98¹M(>¢¢W*):²­JJ²½;-=ÇÚÈ×3½£@#:ÎÃDZ¬I*3Hº®ô0B®±),ª´?¿[%X§×&>¨§Å7.ÑËȰJ*¢œÒ/2C±Ã#-£œÉ Û’²½ .¡C5žŸ#H¢ì^²éC×°³/!P§¿+ž >HþYØ&$œš!!¦¨A?>5µ«07¼Fβ.)»œ¦#I¨°A'®”- .(–aœ¢%-¤šÎ+¨©$'£§%-¥·.Õ¿%%§˜½¼¤Á0.ߥ¯,&Û®»F1p»À¾D<»9!»³B.(]¬ÎWÇþßÏ1-¾¦¹>F>,¡?+¢­&¼¼¦¢*B®¦¡*ëŽÕ±-­ª(8½Âá(;©2'ߪ&–¥4«@,Þ]Λª$mâ­¥2;›£C46:§ž ¿ ÎI±§+Ê’o¹ª-T°_D2K¢Ñ#©ž®œGh“°%¤ « K'^®ÅeZ45x»¸¾¸\$¦šß+a_0Mu5¿žè"Ùž«'&µÌR˜«¹Ÿ68¦O=¥²ù8ºŸ ²&œª¼›(UT­­.Ǥ%¤Ž6Q›ø%¨Ú=$ ˜ƒ4ÆC-®›['¶´´š¦7'><8¬ŸÄ( OŸ®.D°À3%D¤²'N™ê8¬RŸ*Ÿš'(¶B/¢¢©Ÿc;ëD5­Ÿ/Ò¦uoºH$8ž©2Ÿ½&F°´õ1=ßM˳ÞJ>6¾ŸË+«¨º:*X¿IG­¯01·­ù'.©§(¯˜Ì8”H¤œ& 8;¸¨ÝaHEѳ>5³o.·¾+¾¥E:^*5¥£Í6-a­¿+'´š½'œ´&ܯl/0À´ÁÊ)#¢–.¿œ:*¯Í+¢g9¦Ç,ÔªÑ6>D]µÊ7ŪG:Â*)Ÿ£-3¾Ì74µ£>N¶Ð½½@.Z°ÉGHqØ<Ô¤Ö+žž!”¤ª®.k®Ó87eƺÌ-]œ¯!*9-Ž‹Q"óa — ¼·ÁNÅÎ 4¡¢§*Ó™Ï8±Í²­7(1>¬›É*ª¢Î4$#¯˜¬5*+E¿´­?@¡¢¬.,˜ž@.&(ª•¦9̤E^§œ¨+¢£žž6ÌÝ 9¸›¼»(3¥ Ù(C›©-1k¯©N#$8¸©¬¥­¾žÔÏÆ.9¯´¾Ý*-¾§½"#«½Ÿ•¡¹ŽÎ"F™8´£&¯L/œ—±'c¼&9š˜ú!£9¥ŒÃ»š*.¯¯®¼?K°»35:7¹«\7_¶´arµ@(˜“/?ª51£›·'4m¾¥¡~žœ(N¨­±³0-¯°®¨¼+$•#²Ÿ'ꟛ¨$S¤¶^+(¿¡®--£¬½—™,3—›,Q¦Æ86N¿¨¦-祰Ò=EI.C¿²¥É!*¶¯>I³¿T2/¾Â,à›ª+'/6ʪ©¹*!®§(,¶¸³Ð4š ,)-c• )"D®§J(kÃѯ¯7!=¯Ä3;¶»_­ª¸®¶›º! Ö£:%¹©,7“-0Ï'§—C+¾:;¦¬5,¨¨ùºÝ-¦·=¼¾('«—Û(¨§º/4Ÿ/(IÀž­Ũº>6εEW¡ºЗ˜B®¢^.Ȧ¿0HÛ?ÍÍ-OªµC,8±²<Û§ì ʯ)0·¦Æ '®®0<¥½!?¨¶à<(F¢©%³Ÿ^!K¤`%Ù´ÒÁ]6b_N¢³$—®4¡·¢³§–k–‘8%À-±”´&¤«:ÏD¿šØ)?9/°œ°DG( >µ¦©ÛUD,?ÊfÉ«¶- H«¾FÛ°±)ð–¿©š§›>7³h"N£É+Ø Ú4›³);MǨÒ#/®±R¶¤8!¡œc+kËK»¬3Q¥ÁL·P0££ÃiÑÊ,9¦¬Åg+.¨¨'$·¡¬1/œž:*9Üžž%-£¡Ä77NÁÅEI³£é °œ¹%š—+"¬—¡,8佫ß0û½b@éÞO·¸.,⺼½ÆJ-6Á²¾I*-¶£»CPZ=6H®©]>ÞS)&¶¬¹6/œ®.DËH?ï³Ò7,.צ°94äÌ=9³¬,%§Ÿ$© ¿Ä/.žœ8"jÔ\µÜ*AÀÜÇÎNÎñ+E¤«:'\¥Ë8¥¿Mªì%œž*x›«*˜°1¸³¹ÛQ>9u¬¹(.¼ÁºÄ)4¤²*žœL'›œ,!;Ö®º+8¥ÉM™¯%§¦ç8<®ª!ª—/!¦»9O7¬Ñ_B$ÄŸV@®î-8ìÂ><žŸ {«Á9G£œVΩÆÌ¼2!Ûž½-Ë¿(*«ž>@¬!-¤¾$pš¬·ŸÙ(ï­UD³vA•¶'¦§·¹@!>­¾H?]­¦;&£<8ºŸ®#2Ó6汫¤/ÚŸµ¦$% *¤¨J¾¸:9´1ÊÂH°´##¯¨C.Ö±Z.@²«/«›;è Â(j¢Z(¤žÄ/)=­§M)%®“' ÐÐ%Ó™” X‘¨-)&Ä›auŸË%B¯´Å+%§ '"¸®ÌMMÞ1<¤­ôc±­/™ C%#6°›Å›’K=¤ÏÊn*.VŸ›t”2•›º§µ Œ9+¢»-/̧¥Ÿ7&U¿±¬6,šš6*æ'&¢™T4¡«0.9RŸ›32˜¡¡ª!ù¤@.ߺÂ1.»«½J9Yi1ÜË&ÖB!تey±I#C§«·S)ª,MÔ-K »\–¶¥•S9Ÿ°6:É¿KI¶¿'+©¬5¿­#'¨¶4GÒ¶Ê2ɯ'Æ›žÉp—¦UÊ97Ÿ¶+¸¥*² Z(V²½À= ;¥«8*ó®·H'U¥K/¥¬++67¬š¼4º?™n*¦¢É''¬¬!<š³%1IO°«6&°£3)¯¾3š©%)¼ª¼I/7·¸5Ĥ2Á¢l+yºG/IËų¼LÊO+ž›Å¬™b¹&Ú©½¢¸(§¼e¾L;IS·º.j@ŸÀ¨Ž-(“Åë±>0Z³½,¾’Â4™Œ­—Dᯩµ®Œ2 »…̬3#R›ª<"ŸÈ-/Ÿ˜ÆÀ32—E §‰W ™¦¦"²´;¡Ò™™/)/µ–©&&Nši'.Yy-ëŸ> ‘47¥W)¨œ(É–Ÿ=¼›¥_$Þš¥#+ž»’--ÈÌž«*—žš‘ ¡$tÁ º”Ÿ§¢Z(¼›ª9”/]‘“J$›¿ª§-“¨&¬´¬)›¢ œÓ)^¢¢¡Ž³­”Ñ'CK9-¼™Ó&ÂÑ^â$<šžï).žA¥‘Ý:Ÿk+ÖÃ=H¥¡'¼¢KA¿7=¤·#Eº9œ& —Ñ1.T¥¢,}š)¼œš©Ú µMšš)Eš£4Ñ -£˜p '਽%.¨§8"R¶k¾Ö&ÜœÉ;´QÉ Y,›˜Ï¯–®¦¥,hªÃ¿*Ï‘½Kš¼9ªº9(›¾'>Ë7,Å·Oµž»»¬·¬R.cC-<¿  ºd2‘Ž: $†Ÿ¯›(4Ï"V—¦'$,䙣 *­>#¯¡85©³40/7«›^(¬¬´¶/1œ¯µ"?”£¦“Ã$­¶5˜¤ &­¢\#Kµ/;¤ÕÙ‘«!™¨$(Gν¦Ÿ)ä˜Ü'EÚ±°?:øOAUÜȺÍô±ð&>dN ž [–¼Þ˜¹'±¼Å­j"*ªžD/²@)«¿I¯;¦9]¤=%¹½+Ì¡>Dž¢Å[..Ÿ›,ÑžÎ*<µ¤§.'¯ÈÜžœ-V¶´´¯¡¯s(7¯Ã2T¦­+1¾¦¥a*ÉÝ ü¤ISª.¨œ'(ÃW¹«ôÝk1A4)ª•Ã/›²'¡¨²T'§£=)¾²Eh»@"Æ—?žŸ%•³3¦˜º¥›M?Ì;>´³>:µYϲ+˜¿Æ©3]©-!¹³Ñ¹+¯™ÆBÒ0#D¯§¿'?£F¿«7_¶PÁÀ.— œ¨$F¢Á%ÆÖº›­!i²É:ЬW&A£¬,/Á_D®­4-È¿/.¤›G$<,)£’±h˜²v¡F 8½´Öe½H8°É6­¾&žœË*,cÛ?`¬©#°ž•LºÝË¡•• ݪ3›©R®+n§¡@@¬æ¡¸=Å5¨ž*[¤¹/:ذª-%©¼#ɪ:4Ѽ¸Ø1/î3&¬ .>¤+ªÀªš œ6¤.CŠ›—‹§±œc.-©§"¦ž;*¸]Õ›¸+bÁ+"M¥ ÇKÇ*ïºF¥Ï¯©*:°¦´+:¢Ï<¼OUÒ«­!&Ÿ³!;Àµ¥5½»@+2XÜž»Q–7)§Ç"A©é8­¸,/7Æ›´(¾¥¶)<¸ëÍT+Ù§Í,e¬j7OB=Æ §)H ®%7¸6¤ÝDªÊÐ×DµÆ: |-¢¨ #Kº ÎI ¹*'DªŸ?>¡«U&-¨¯4š§%-ÿM´?>­®/@¬²V;X·¯Ì0)7~§«1½©%©¿.]­Â$3œ¬2𝩤óR¸²/Kœº.Ï»,#·™«362'¿ @*¨¤(â®IÌŸå4 «%¾”ª¢,,­»3+:¯¨:씑0š“Žu©Š> Pžž£:(B*"‹¡Ÿ"'¬øSkи4[”ª2–XO¢Ý­œ0!£–ž(>›Ä9¾R/Ò§¶::-'±œ¼&Dµ(ËŸ¤ˆRAG—•>ž£&­”­1+‘ŠÅŨ¥4¢›«ËBD&5™˜,Ø’Ž®£š´¤'Õ•–)´Þ'ÙÕŸ•š2,™6HŽHöÎò™£OH?ž™/ë’Ï)—!;™ž$˜“މ !Uš *ªž½,¾Ÿ.$¡£!s£¨>"Gª§¦?-º<³›`8©;+¢­5 d¤,µŽ­H¢c œ¹+™Ž2 ™”Ô%¤›1&¬m$·¤½,%œ•¬:1+Ež£ÇÙ*ÀšW5¬úÙ˜Æ #6¨ŸL)&-ž’Ô$$?™”Z<Û'4 Ÿ:9¨¶-už¬*.«Æ"«Ž».³˜²´” ›¬<¨Ø=15´ž¼"­˜¸,A29Ÿ­£¥X§Æ+»$e£Ï8¹¿$¾¹;´¼»ž®3d¤;&–› *­©ª±¸,ߣP,­¬-4«½/•Ÿ¿¯Hí¦¬:&$d™Ÿ)'âf0?¦¦[Ës(¤¸Ñ©(²1i·;¿>-¥ž¹)2²¹8,¹›Ê¬–£-4œ +:š¦/š¯%S°±w¹Å'™—H™¤ÜSLK}NAÍå;ʹBI¬­/#i¹Âº?'C©ŸM4ª¬ü,cªZ*¹ª"+Ÿ³7=5»¬85WÜ¢¥*.¬¤°»4!.E±¢ÎÚ³/"Jª¨)".,,"Ë¡Ò"!´œIMž¾-1p­¤DÂ’.¹˜þË9½›g3œŸ8H˜–G/šª%œŸ$ËžÉnÉ&4¤¹:G==Ë©¨=+®¬.(Ô¼A1M¸Æ7Ï­1. ¯*œ§):Ç/7­«ÁS&&¿¬Ã¸È!3š®1š¥')N£œ< ¯Ÿ8.¡¥&e—2ÎŽªf’– Q˺¡=9«OUŸÆÊš˜¹5–Ÿ:2#,¢¡)!«©j·:-´-)œ±D«Ë³°',§¿%D¯Èd9,Ϋ´í1J¸9E§:"Ÿœ"L£­]Á´,9¯³£:²‘ŸL¬¬W/jÇZß^Uª¥7¢$¡™™›¢ '•O>¶ "G£©#9˜ÉÖ¥Ÿ‰Þ¹†*ª©2-Ÿ¤¿Ž§½‘7(³.Jž´#››¡¢ /ŸÀ+@<¯˜F@ÊfKU 5#N¦šÔ3§ª60œ‘; &˜ž45§™µ¤½+«®H@³™Ê!ž›Â)I¢à:Àèò6,mÏêeº¨k!+Ǭ ½®—ª"(¨¨9+Bí¾´7.¤£%?ºž +6˜¤+Ÿº*ZF,«¢)#°¦M+[C·”. )*©½ ««°Ë8DÕq51½¢·44AdU} ¦¥™4"¿Ê/,«ÚO&–­'½=2¯·4=P¶žBJ©×dëέ·6 Ò•Ÿ+%c{5È¢Ë!äž?;¾¼¥¶;_-$®£D/ίï9í;&ΤN%ƺ»¦Ä.¡¾^™c;­¦­#¹Ÿ¹ãF7JP/¿˜[Æ—4±·>γÝ$¨–á#-S©¯7>\FIÉ¨Ä 6¢ªV-$ð¨-*¨˜ª),v¹Íİ©±®Š -Ó#ª E8 ¿[a$»›"žš5-?)œú';W«¥3!¹—MG—Å"7¸­¼Q1*Ç¡K$®ª+4ðÛž§¡ (¾£'#µ¡½+©µDÊßH/9šÊ& 5°žç%$ᦟP"¼µ'—›,Кi0¼¬µL¼³$!®­=]N4¸¡¯F% ¥'§¼:¯¨."´§$ž’/ÄØ0Aý«ŸÂ-9Ô:*™Ž?eš,"Ÿ¨'6¾ßÎM7´®,B›œ)~¤ª-"Ç®Û33«©,>¦T$üº15£œ5d°O´¿À‘E'š—0>Ÿ¤`;<#6 ."K¥ŸD=^#·Ž«&§Í*¯Ÿ#±¥Ì”¢ºš»+)N¤«-'~­«B8Ÿª//½µXCF:Ȫ8$§œ=#4ijË;.ΤÍ+¤›à3³Í27Χª-#¯¦8+ï1ÈžÅ/sºÂ9&í¤¹54æÍ0D¬³­­ ,˜¥Ì›®& ŸŠ¥“™‘5Bó¨@ÕŸË¢Ä.¦åÝ©Â,/¸Á'=ª(,ÎË¿Ý%&¤–Æ#*/X¦žÉ(®Ä;»¦G4œ±8²Ï>ž¿,ߨ(G›Ÿ**«¨'F”®+Î<Ÿšœšç¹?.=ꙩ2«´2+»¥º/Iœ¾$gÀB¨¥/±˜š?3áI¨»ʘA"ÂB¸›¹ÐW+UQ,š“HB–Æ*™¤¹¿O•Ÿ+<­0l­²¯;A§&­‰Ätœ.»•±Ä–Ÿ(GA,¦•=@L°š0±­)=6ÑÏI°»7¿ž¨#™•S,~.*£—È/¨›­:"*³²E½®W9;33·™¨áš«?=/W§¾-+9Õ®£­6 %4¥‘Ã( Å'Ǥƞ¹$&“i%'8ªŸ¬J%3Ì=L¦·>·Ë(7Ò㶯."°§#$¨ž¬v#(dTê¿Ó¼¯Î&(«­)-Å©¯20Ãõ4Ë­Ëß^)DªK*·©M@eHJ>ꧬM*-¯§8.¾Û-N¶Í¾¼&)𛮣Zj??Ÿ¬ÛœœO&/K¯À*?©£k,¥§B.GÚvȹÍ{U;+'®’Ô8¤¸ÈZ+4Щ M"À¢­:2جµ)$¶¦M9ÖD<¾¿Saè`^¶­2Kžª+0­¸.6¸°^17=ÏŸ¤(ΤjG®ã):[s»¾ÒÏ]mO0Ï­:.¶±<6ÇÃè¿R.h«¬-1–-(ʰ¼2Õœº'-Ë«³7#1·§²Þ>3X¿[@×¹ÂG01c§g(»²®Ù!3¦*+ÅÃlG5_¯¼K2?¨³(9±ÎDgçÕºÀ1(Ó«Ì@Í»B(A«­Ó3*Á¨0°—j2£›h!  Ç]9_¹/˶./?©ž%¯ß5ž´:­­¦Îð8'ªjáÖ$+¥¢qMEØØ[ÃM/· q%JÄ:ѤT,¦ªSR³°E!(©¤*(ª¤LA´-HŽš­±*Ì™Ÿ)$¨«ð¼¿JP.7£¯,d¹6JÁ&*•‘Ö¢,=–¦%>J±¬ÇC;Åì)hœ§#0 ›LΟj/H.þ ×*¾Ã+Ƨ>6]1¹˜ì%™¹@žžK;®Ä?NÅÔ?C¿©¾%.¨¾$O³EI¯¨n*ž (t¢Ÿ<2›®%Lº=¹®'7¨L.°Å"?ž¦@)+¶¡4¹¢/ «S.G2?«©Â= /«ÀJ­µ4:[:_¯Ô-\£¬.4Ù(9š«&¥©Iuï.IºÍ´à<¡Ö+½¶Fµ¶)*˪®C$%¶›e'Ñç6Ʋþ\ç\ÎÞ.9®».Ó¥K'̼,M¤±<-G³k-±¤&ª¡×4&C°À«¯ %°Õ+°˜:G¨¨Ÿª2IŸ]/¥¥!Þ»*?¸oF½½WHGØÇ-+¯£è4N¿¾>0}ÏFË¥º#&³ž»& ½#¬¡#©¶K³º+%Y§¦ú&(¯žM$5?­›.­’E1–žÛÁ~¦2!¾¥Ç7;[²©;$Ѻ@÷,*µªë5Dº³?.¼®94¾?)®œÏ!\—¡#¨³$+­¤V-²ª¢œZûo¥•ïË¡: ߪ²R$,ɽµž¥U!M¾4;ÖÊ»Ò8@M7Ò£­-*¸¸>=M·®D.9Y«¦-¯¤"-–¦žšV.>?h·Ù=²±!1£j6¤¿"”›#™.™,;¢Ê6nNCœ¿!»œA7ª§5&Áºd¼o+Gµ¿_MÉÏ/Ý¢å"4¼½XÅ«4Ü£»ß2$°›3ŸÎ*1¹·KNÑìÜ×=Oê*U›®,DZ®•°//E¶¾.;¬³96éÜ͸G9¬½ ÏŸ˜É!šœ#Í·FšG)¦ª+&?B¯‘9 ›Á § Oˆ¶ =” ΕŸÈ¦œ0¸•–(‘‹¥e ¬¬ö»›˜·¯6ª¦)$[ÈŶ¼Hb½5@›¿ª>»-"¹˜n5æ&È‘œ©“µ×“¯¿/¨’#–<˜[¬’<"áÞT¯Ø(N0 ˜ŒU,¾ª!'§´k­0½³¾©H#¦’Ù\°ª½*Ý¡C#'[˜ 3IH"5 šµ%»Ÿ4‘‘ ,‹¨˜’™%£Žšë©°Û™™Ç")›¯<Ÿ¶ÁÈ.=ÄH¸Ÿ2?ž²I9J©¸ "°³, Lª¿«¼ / ”¨‘›£¯:³˜É&)ZÀO(¹šá$¯–œ©)Íœ°)¥§-!ǤÍ>ZJЯN,Ý¿<@W»›¢/›°Ë73ÉF/¤žQ-Ò_J¿@P¥¾-XQ/N.5‘‘Aµ¦Ÿ&¦˜›$'¾½¯±"§="C¿æÕÈÆ®ñ˜S-NÅK(ÕŸÌ$;¢©©¡10¥¡F&™D'Î2*Û½®¿,¶š*j–ª+'Q»Ö³«¡ž7šf2¦<­Ÿ<6™¤-%À±¢Á$¾¢©D"/½»âÃI4£¤ÄC@¶Î1 §53©·ö«Ø)¾»D¤%*—§$&Sœª3£I=É)3›©Ñ§‘µ&5t.=Þ¯˜#½  «Ž£0¨« Û¬£ê+›®&M¸]ÌÕ}º/Ú–Ÿ§>Nš¢7/š¼\˜O#ðÚÝHÞ(â"ªB¬º$:®A,¾²ÚW9b´XR®½3&)ÀŸ¯<-?¦ª,(@Ò¬³.&Áž· ´ž­C¶–¬%¼Îã¼J9°¢Õ"'ÚÆ,9œ—L#®®Qº¶25ÍÍÇÍ9h¢Êœ`4;¨%™­/´¸¿R:¼Ã%8©H1ž $Ú£É7n¿W1LÇ©­%7›¨=¸´#»š®!í–¬,®D[˜¬­›¾ ‘•¡ŽÉ QH.TF±”Ñ*›µ%5¤3e—µ4¾2‘«.¼×©ª:*(@¨¯Ki³â(œŸ+,§­œŸ`>%O™¥9¿&¯Ž£/:ž¯ŽŽ˜£ ¥›8ö˜V#ý©¼->§¾+eÊCc:H¡ª#±œä#cµ/0²·çî/=ž¨! lª§T1¿Ø(˜˜©·B:,°šg<Ï;¸¡Í5C:3ꦨ7%?¶ªÉ"#¦”f,–¿’Ç»©4.a§².ºÚ£¹?“½"9š›#§9"›—/'3>›—¿Ñ–§,L¼*;§\-µª;(ž“±Æ‘­.h.#¬œÌ"¸™Å%1ݨ¯,-ÒäõéS´¿)½,À™O$¬I¡‘6;F¿±D/ß«¶+)¯¾8­ÐI«¿Ï¾Ó,웫&&¤¼3ãÆ’µ»§¹]?º°>ÌÜ1˜®+[~>Îí~£´œ)'­³:_Û;8{«µ8ô¶;0ºº+"Ëš¦+.A(°’EY›D(¼¯´Î*5C/®žÌQm/8¸®P+K´G4©¿µš6=¬ŸÅΘ©=AIÒÄ+óšž) ±L!ž™#/¸*“£,Àm§Ÿ*Ï™Ê$¡ AÃÂ!J¥WD®å+/5¼™±0›M©®ÕŽ©/l *‰]¡Š˜±¹))²V+\šY9¡—"Ä‹g& _F§¿8B¹½Þ&ÅI.«ª+@›§À«3ä¥=$½žº¦”È!/ÝÏ3ô•¨²£L3®2R“œž¬+¹½*X»óËM-Ú®72«'žÌ÷ª"/”É?§Í4-¹œ¶,%8©¯2@Ä»º8!9º°Ÿ¯ ¥2¡‹œ.­%4  Œ#*½°å ¥‘=<8#+P¼Ÿ›°E9!7 ¼_¥¬MÍÈ)!¤Ÿ%©‘È»”˜`[˜ŸP¯»˜—$>®N¦¦RͲ®Z¡·¶y`‘¢¬-&–• Œ¤¤Å+#®”,.57ø›– M•™§(#™­ ¹›­¬1 ¢š­M*$²—2¯2›“Ùv)—Ž ¯ 1-/4›”-.[±–™-%w)øI –£fº©Šß ”ž$%Ý ¡®˜1-¥QÔ–™;㜜D1”±î¤#,–”5 ¥•W-§œ¾,§žŸ´X=´•ϳŸ7*CCBRŸ™ Æž,,¯³HZº»W=ÍÃGzI-5«–%Jª¥7c±§98¸¶ÁÄ×<+>¾å—ŸŠ™›"¢Î\ÉO±²&žÍ%–­FD9’ݯ¯¿™¶,òÈBËÉ÷¤¶+¥“ˆ¶Ÿ‹ZÒ°•f®¿¡©>4#Ѫ8Q«Ë)¥«œ’m7@4ݯ=ÈŽ4 &5!¬˜^?²!' /œŽ­A £ß¹­»™¢¿"S®Ë¼È&›ø@ž6ª—G/žœ!½œ­¾)ÊŽÛs¹-˜’ mŸ¯IIÅ»Ç5-Ǫ±/F­Â±­+Ë•éº-ŧͿ~:¸Ê!1¤ I4¤º9¾®(¼“§(!DË;/®šÉ-Û7*·²9F´Æ:LîÅ"¨¢<*»«2'­>!º¸%V¥5'£§ +¢´&A­¸+Ë”§('>ɪÀ%>©N-mÞ´ª*¬¡.,¬¤õ* §‹½â •ªœš•ž–8,?#¯¢&%·¯¨¦5*CÏ´ª¥N'Ÿ›Â(%›”1 9#¶Á-¨°×7C¬ß)?L½¢ò,ÓºÏM+6­»/Û¯X½µ"¥¯*>¨¢M B½,8Ÿ®>˜®!«¨;B·I/g¶³7î›®';Æ&:•¡­³+­—%¥¡+¼¦œ©#г!FŸ1"žš,BºÆ°·5/6=¥¢*&Ë­°/.¥Ì=žÊ[«.­ ëI)¸œÂ1iïLÎO.ºœÏ4¤W¹—È+/>«³**è©§a,DÛAH¶¥¬2$ª¨Ñµ²'àŸà&»˜¼*?@­§Ù^ÎI#$¦š+%›³B•´+Cºß)·:ª‘,Ÿ*1¯­Ì·Ë&*``¹¤¼,+¶¬("·¦Ä*7œž=©¯º²H'¹›£+5›«+/Û¨±¡™1%µ¾7ß½8Øœ;<”¡K+2¢¤I¾ '•£5?61ÞÆÊßЯÆ<ú;+™Ž¸/»›™¹0Û¢%R›Å5©¨'Ô¯:3.;¶Ì;­£.À˜FΕÛI¢²2)I³¾Ä¿B" —™5•¯—<)·>H°=gŽ˜ '•™-*Àh=]AÇ›£,)V²»E䫹1,OÊ×ÝÃÇB5T»²É..··=ѶGCQ)8›š-ǽ#b¸FÚ.,°¸+]­9.¦Ÿ7,G¹¡¥¶8!/Ì2™•³¨Ò˜U5E¡'½yF¸«Ì.FÄ//£Ÿ$ žª$œžºC,Q_,Q²Ë¯»-¤S&›”εo «!#¶Ÿ»)&;±¤Ó.DUD¼¯ú8>½¨F<ž¥3$ß±?-ÉŸ¬,$H×ͺ_K±Á9LA)C©³½¸#"¤™¹Æš¢å\››Æ!6±±¿¼·j.Þ³+'Á¯¶Q'\£Ç.æ¾E̯'ª‘ï=·V*a¯"*²¥Ö*GÆ9䟶´ž§A(¢œæ(2ouÒ°c".¦Ÿi.8Z­Ë-½¾)Ϫ0(±¤õ-:Ó¹â6À­)1Ÿ>§›+)ÝÙ«uÍŸÝQ|.?»kH´«0 ¬¨*¢¬QSZ5L¡¹.¢®UE8Iº¯Æ8.T»Z9³¢N ~žé9§¼HF=¾§È/K±E1›£*<»4=®©x,¶Â¾¿7@`À— ~›³,ÈŸK:¯‘— M¡¯,œ¦˱mI·«Û'-À¿S]­ª ™«©š‘Ç/”;ö‹†1+Ä¥ê;,%޽‹š††,’ŽŒ'𛬮 ß)³•74¶W«, ­›*R«/ «”. F¦+F¿(­™ÂÏì*’ªª¨Qµ-±œ''¤¨)"¨›*Lµ" +¦1Ó. T?)’# ¢™9–± .§™¿>š%$»ÄÒ¾?(:¿|o›š ¨– ?­,?µ”ŸŒ»º’)—Š•‘¿­¯œ(³œ–,¢œhB”’‡œ‡{¨†# 5†¤¢Ÿ%»ž•Âd»8É™œH"U}T9¡¾6{Y@½¶-5ž¥,*:?U» ¯"H˜"¾œÊ9Ž´;©,»›.)š©¡™/®¶%'Æ’K¯™L½=¾”*&”Ÿ¿™ê'Ÿ˜¸¥8½ž¹+(ȸį¡Õ"“«Ê(§ëdQ®ÉØ8ã©'!¥Í/™©-{¶•.§® /¢™¸›Ž/9®Ÿ¨-8±ªÃ:IÔ4:§®"+®¿Í´$"šœ¯¢y=m.-§ž*¯šR5â/+S¤—y:£* ¡l<\Â:UšÚ)½µä\Å¿"š©Þ­.а.|¢DO—ÊÆ¡=;¶½W9%6ž¦3-+Ù— °‘Ã(›¡‘¹%%4Ξ¬癨¬Û·&:!S™®ý“&š!&êR®¦;'Í¡Æ›Ž¸½’®gŸ-'­ÇD¹J5½ÂFoÃK*ÜŸ¹',°¾9“®±¥^@­‘§3˜ž$µµž  ·Ž¶·¬#¬¦&¢T!Oœ/ )v±$¡”š‹(L…5´”„¯“Ž56Žž’¥¢Š0¶˜Å1³Ù¿¯!–‡Ø6A+>9´¥œ91º¶´“W‹žµ4žÒ-”¤,˜ª)/ã39Ÿž5!5â¹®ÀK1(e®½·»MN"'·4¦•'®¤=(­¬3¬E¯—( /®¥–¹BP2˜˜l)¬ú+®½+߬¨Ã'®¼6»¾-ë·%%’¤‡ À,¥•£–!“ŸÍŸ«(/ÇœP#°–ÅŸ˜i#8ؾµN1É¡Æ0’Æ^•µ'7ÊXΧ:<œI?(3®œ°%@§«L̺6>Ê,Ž­$ ,†Å,˜—1+>4“¡;7±;&‘“"$£<²“8²¼)·­9Ö¼Bs¼3&®¡)¯–¼$²´0ϧ96¦Xƨ:ý¥J5¹®¬í/[Î?@?/½—ª(Tg+Ÿ¤9=£§•9¥¦'¥¥O5Æ´&õ•¡:/FµUß—Ï$22¦’!3 )]®¯aÏCš™š¤\•À)Ÿ°&³9!-`®ßHºq¿§#Ÿ–$®¦-YŸ0±œ,& §#$´¢LG“  ­2’œ$/®˜«ΕšOG¤§ŒŸ  ©."¿œº#'˲¼±Ç!.œ¸!¤¡¼râÂE+›š%X›'³”6I›£8"Å£/í¡±;?xm´Á+3CÁ—®!°§±/5­V/±¿+^¬É+'¸žÁ/?>6È ª*&²³&(¯¨¹Ì#©™v/¾l!1³´µ°L3%.—³+ ,!§Åµ‘¶™–ÍQ¬ÉZ°l%¹B7Îű¶>,;Á¥¢03¿v¡L.¨ŸlÈ—kÖš™7UÂX89ª¨,E«;K½$Kœë'N6I?¼•¬™; 8»¨¹9,-µ›Ì. §--·ã8÷>ΟÀ(²¢LD’žœÄ«¾/¼“œ «Ý)ʶ?UºÄÚ8!Û—À6¨¸ÒJ+7©¡-#¨­%&]­©Â>3æË1H±ÍY¼Ð02ʺֿÄ=438²œ±%'JÈ»ÒżB.1Ì¢¹);®±N+)Ï®'¬À?ªÇ´˜¨¿*0!3šœ$$Ÿ¦ª—·003S·¦ª¥’&ª’Ÿ,¹¨´½ÃO,ó§1¯–Â(PF¯ŸD*¯²H<"<¢S[—\-›¢V+HË0¾œ-¤—.`žº*°´¹°ú(.¿»ê·P*­H'. !+­˜{HMél®¬8+¢§»¾@/:mºÅ7N´@5¦­ $½§£93• ´¢Àż5#,K«œÀ)¿Àµ¥Ci£»-(h¸bE¶©[-fÉ5(=¤—ª*&Ǩ´6+À ­.*§›»'š¢(?9®—, ¡#/¨¿&1°¾/½™Hß–8Êž½=YB.>¾ª¬N.92噩*šOÅžem¹RÒÌ#§M)·­/8Ùk¶B$¯Ÿ>9³J&¼£-ª©(Ñž6<°©®L2P«©nA^9$9œœ)¹·$2¢¦;%=ª ¿¿ž·3Y¹/,¬¬;S¼3"Ì™ª«šÂ 4¦¡Ç_Ÿ£; ?¬¾=WѸ²*i¢¤J:œ¿eº0¦`КšÌ$®Ÿ¸-<¥²]Ú^0,Ú£¸(A£¨5NœÎ:§´*.³¹Â¦¹-®£-,8®¡É"%ªœë$© Ké¬,<’˜&E™Á ÁŸB,›œ+'¬»&/¹­¾Lr; g—Ÿ%FªËr¬·6;?+柬3*9ɽå~ÛÄÌWC*/­¡±K(*[º©£*·Ž?4Ÿ¢¶8-GØunµÀ0IºJVµ9$»Ÿd!h²žž(>§.!¡+*³7!«ž8%í±©¹ž£Ó½«Œ§%,,7«§=$Ó¯2>Ÿ³*¦¸¨“7•N¸¦7+Îå8bº§ÊB—²#¨®6°¨.")h¨ª­Å 6›šF*ýYC·ä<¾?-©¯9™¹)ÐÜ$/£­3°¿$¹­,œ™#]”«¤™¿Î<ŽŒ ¢ŒŸ·¢& ‹’¢ž-P¿EÕ[ÌÇ0.9Ìž¦1(JÒBJ¾Î¹¨*£•A˜“²——&/®G$5¨œÇ'4g;.ᤪÖ>3ݼڻæ&3¬¿#-Ÿž%$ž´D•É(›—½.9'¼Ž¯/š¬&"2Ħž¾-R&”!¾+I¢˜‘žö­—ª.¿šH5Æ8Yµ3,ª£*àŸ¦À6)&J˜¬_’$–——ªH¸0¬!¨°7®ì<–›p—&п•Ž‚2µŽÎˆž*¶ª°Ù(Ö¾+O¯¸­I#ÊA¬DÚ—Ô!]º4=§°#˜•"$¦’™&&™œ:2×`'1š›(+n›§$1¿ ‡œ¬’#¹³ý¯ÙÊ&(¡Ç,´¢Ù¬ŸC¾›Ø¡žC"3«£:-} ‘§ õ–¶3Õ,Ÿ€˜±ž›ÑO6\˜ìE› Ô"!™®i›¢$#£’¤±¹*G”+!Z¢­Ä­ô$<¬×-}B&Ÿ™˜¿²«/Å/è»ÓU#·ª"+Åeœ®.-W^OK¶žJ4¢¶[¾ÒM¼=K•H£Œ60²Ä©¬=(6ÂIB›™Ç¢C{¶ÍI"[™O¨©'(-™˜$š–’®²3Ð5 ¡[”Žž«-™¿Zº7"¸ -!¾¼J«¦ Ÿ¨:ì)©°%0³¨Z3¢¦+¼˜Â%>Õ͹ß=6>·­¾¿?'¤Ÿ/5¢’«ÊÀX£¤ª£>C8-«¦M¼È$±Ÿ¨91¦Ë=ª¯$#¯Æ#)¿¯ÄÑH-;ÖÀ«´(%¯¥..¥·*<ÌÌÙi?*KŸ±Q”³#Í̬›Ý'—¾­˜:<Ö·µO15~¬¯, »´8//q£µ)Ÿ)뢺ùÌ(/«`.º¼Í³Ï)²–AG¥Êõª½"!à®-+»¯Ý.*Ì¥¹# £–m#6PÔ³¹52¨¹;¨]]µF&2¢•ÉŸ §¢:Å®# ·Ê7¤›5æÇ'Kž·'1¿Ÿ¢&eÉH¯ Ç!(°²Aη;)× Ã œ–æ()NŸµ(­­N1¬™* C¯;•¦ªª--Ÿ˜;¨’Ó(–œ.=¼ðN¨¯.CO-¹­.9©¬I3ÚØ+6½¿Øú¸´.3´»Z--§£/(ß¹¿éjJ'1ž$±šÑ%µ¬¿®ì;©ÄFÛB3ºÅ&¼›I)mNάF(Ψ\%J£®@;=,7¡œ7ÕÖ"Ÿœ°µÏà!}w×85©Ÿ+µž9$Þ§º=,+©˜5L«³¹X)<¿XЪk 4©°TÞÓ_Y.*­V&LÏ[KÓ®½G@0F­¯9+äÍØ¦ÔS¥;Æ›µ!'¹¥Ñ.~µñK>,@¤P#¬ž°5(ý§R>—ª'¯¤r"9¨­1,Ó¹ä*2 b*1TÛü1/¨œÊ:[-"¿¨ç¾¶/(?¿¦µ-?´Ú*%·U%¼¯3Jª¼-!8§¡å+Ï®"$œ©7©¼DTÐJ.e ¬%"õ¨ª.#«ÓRÚ?8»¼>MÎÙ×[GuṺ%#©žÖ@=(=¦«=1Fk³¯*'¥Ÿ4&³´˜”'Y™©,*²©.$¸¯5a²;;±ÅEÙÊF)*¹Ÿ¯L2*×§A+¨¯3Ÿ½?¸0"¯§;?¼ëN®Á!(ʾ¿Íp=?®©0Lž´)ŸŸüNB"7¡­.h¦;0™«²"B¬2+*F©¥¾K02ÅÉ<öM3°¢ß/9>e£¯9§*(™¥(­±:FªlÔ >|¡¤?9˜Ðä»?ªŸ=&¹£ß*³ª$<¢0%¦½,«©$+¾RPª¨8%¦”¦8šŸ%´¦gÊÌ&*µ£É$VŸ@·©6D¥×+¨¬·ç.>ùM¼­Å<(=¦Ì!åµò£ª0-!&§¡¬,©É)E§¦=$ͯ œÎ»›¨>/ÔÈ&,œ”7#žžÆB.8¹¾LcJ2\«´GA<Σa˘T*¨B)¨°()-Æ Ê&(­‘¦.%6𔇫<’I&­\ +¦ŸP*B©Ÿ^¹‘¦"3¸ÇÙ4 äŸÅfµ* ¼ªµS0’•ÏšHб,Å»¡œªÔ7 ®˜É-VèÆ!/œ!®ž½*8³­©²3"7ÅŶ¹'®‘«ó˜§²Ÿ>(¥¬!-ÚĨÌ#Q¢BQŸ¬¡U-G©©,'i6b›Ã,·&.œ›Š¯ +&/º— —¬¤&ž­=8.Z–«+’Õ¹ž.6®f;JA¦£#’¶3œ§Ì3-™›!§¼GØJ5Öž«ª¡M©¡3P¢¦Èa.l/E+'³±¶Î 9›À½­)®¥0¾.³.°¦=*+M”;È ,ǃ¬·Ã™™•Äš“#/S´—+®' /˜*–£È”ÿ¥™¹¬«JÕÜê8ª?0´¹­ -Z2´­,P¤»-+®˜; "™œ®Sž—<(¯®–•–‰•˜ÌÇŸ¸/Ÿ#¿Ù¦°I¢.+¢ö³™B$™“)¦• ?’ª0³¹#I¢2 «°%N§Î1Ò¤4¯“$3—š”ˆ«(*¡­°•¤~6 ºU掦—-Ë•Ÿ4;ž‘ª,<¾•6)';£˜¿§Ÿ58¡¨*)¡˜²,-¥˜>¡’­+©¸(´˜È+LÏ´L4¤®Í®³¯82¡—Ê.×À+*³ª8=¥s>¨š*É"šÒ«§\.'>¨™Î(£·:«¥"­·=»>*ª©,1¶À:s¦¼'¾Ý´Ÿ3¬y­ž<kš¸1Û:2Ÿ©-‰Ì&/´–¸44¦´E´À'<ºOÒ¯LD¼;'׸צ·.Ÿº6²~J•ž‹œ°Ž,L«¸ÌÝ\jiHAW´¦¸-&-/ª—Ô.«»®˜¢Ž½Î‘:'¥­$& «%";¬Ÿ¬C½›µH›9À¶"ߢ ¥”7NWEž¤-3Ê<-°ª!'œŸ$$Ÿ›¦–"šœ$!¸µ/%F¡¡÷:/2¾©¹4/u?L¬F>¾Ch6¶Ÿ»',¹½.9¯¶`êK,É”M 7³Äœ%$\¢šç3›ž‹›ß›Xi¾(š§Dš½#)N¿®§Ä.'2±¥7L™Å©–Ø)½³ £š<"²¦$¦£)!Û¢ŸH3º¹ÃdÄÊ1?àMÈÄLÎÛ/D»¿¬³!!µÀO£¯ .±])^¦¥ì/¥Â"=¬²²½#'Ã>Á—öR¬Cg½6=¥°#4¦Æ%L¤]áš´.+4αÀJJ¯©$°¢ÙÊ+&Ÿ£*E»,3¬¬I'B¨Í#O®é©¦¦–TB ¶%!sŸžO!&;¬¦ïF¸²*¿£öNÈ3/¡› ¶¢TƼ*-­±4[­C"H©®O2ת_.¹¬¥¶)*®½QË,¶—ËF¨)"žŸ%1ªæ/ÓµB>­ò0“˜¸¢Á5&I©½-G§­E/,/™£œž,(Bº´E]Ç6/ð¨¨9/yDƨL5®UDŸÌ2»¬Æ2*zµÊK73Ý ¡.B½ã¿Ã5:³´_x>*j¨´?Dc=C÷Ù<Õ¯D#Zž³2°íhµE/ÄÑ'Fš¨<¤(¥ž<'3¸ž¯#}µÚOÁ¬ÍSÔ,,·Ë0¸£=0©ß ˹/³²(~±/e¡K!ܨ¿(%²žã)š™,$¼Z*½¹¬žåZ¼c2H·ÎOž¹&6®¸÷Ò*(¢¡*%³´+ì¢@4¨6È“®(«ºV±?#ú,¼”´—&=‘˜!蟭7",­žÆ/('¿œ©ÝO/$2°¨½Y,5¿åÄ¡¿2¡O¶•»!,G;ÈÃ̘Á¤¢)3¡ª%ל¾$Y¢Ä)2XÇ¥±(#G«¢Ë,.:» Ú%>Ðñ_*r«;.¢ª!5­i42\¥¸JÎ’•)¼.G«ÌáH(Õ©<9²NJ¨Ö+:L­­(E¥-®“µ7º()››'+´+& ¨!%§˜»%+(:šžœ›˜¥%Ÿ¢ÁQ«”j'×/$­œR$®¥#™¥B¬“¨¬ÅI£½0›§&=´&+Ÿ© Б›¥¡D8ÓÄ/?©Ë2Œª I7 Ì¢µ«."O®Ñ6˜93ž.¦2©¾0>¼´ãL`)(¯¦«´¬ŸÒ¿á+¯£ìí2@¿&)¾·¬ªC<¢´)&9¤—®£’´Ž æ7¡™!«NH•Z¯ .C>䕟<5.;¥ÑË™£·¯/™šñÓ¸’!›(ƒ=!Œ®.Ð"®¬)KL¥!¡¬'+¦'²8?¢½«È*¸0?•–#™”â’ž* Å£Ð:¡¥"”©*¢ÏU¯*,¨¸:):š› '¤–‰–¡›¦ºÁY+;¡›;#;Ú2,Áª§Ô26¸µ2<¼½Å?).U®ª¬«&;—ËJ˜¾,¤M<®ªË’-O,ë“°&°­£=¶© Å‘ZC›È&Hµy2é»Jþ·¶ï#1¡­.>¹*6’? _œ ¨¬šB J„E*Œœ';³1*±­Äå.¬ªŸŒï­˜7´ª–“–®'¯š°µ,_¸7©‘& ¸/¯¨I/Ì®9%A»¢¥*بÝL½lCé-3ŸŸ9"+Pcµ˜¦$±;"Ä·¯šG>œº1?7:¬¢´2E±;`¬¶J+Ü¢¾µ«;¥›8&§Jµ‘ù:ÎW¸Û3­¬2l´/fžÂ#L§º@ïch¹6)»¶1T™§›–B#ß­g/'+¨“§A˜ž4&ÔÄ/?ª¬B4ôL)Ó—µ –”1Uº1*È—Ÿ¾¬¬3°–º%×ȶªC/©¯N®}!½­'.©¡I)Ÿ˜¯J“§3ª»%-œ¥››(0£9ǾG­õÚÚ&.š™'EÄ3q’ª&”­7Ÿ©'§œ£‘´;&]–«-Pá6Ñ¥¾¤•3°§-#»¤?-­¥6&•–."_æmN&Ï”¹#«›®"Ö£Ä&i£Ù-KÐiìºß#*Ÿ›)µ¦;%x› #9¥¢9Ñ Ü.è±¶S)7»¾W4?°µ><¿½1/»¬¹ò52GÉ«º()³¤ä*<¾³¯5<‘Ÿ-¨H¯›(ו¡) IfK©¶/¥n* L[¬/¬¦37¯Â&+®£?#¿¯2º /8ê§Ÿ2(²D&®­Iº7«–7= §W*.³¨C,DßÏF=¨›f)H¼Ÿµ"ŸŸ$½¨ÁEHlÌÏ=O­Ç(7¾áϨþ!åº5¸­1;¯¼,+Ũ¿.?·¾?3ν/AŸ¶,Ÿ§6BÉ,/¬¯l¼÷#¨šüÜœ0Æš«M).\?ª–<H¼9»«C_­ì3/>¬±Kë6Gš›(®¢ 7•¹' ×3Ÿ¡$ׯ²½&´ŸÀ0.kª¼%1Ÿ¢#@™ .1¸N2®ª$¯§Ó¼O 6¬´ëä:;½\ä Ã 5Îüµ©*­:¶¸+»¥,*­´/&è£É>®Vò˜ÝÆ©**¼ª¬N#;ªÛ&ÀŸT$@ɸÈ-ÊžK.Ç'#™”¥žCYP3nL6¾Ÿê·ª­±##Ÿ¥""ø§Ÿ8ꤿ°è%¡ Ç¾q–“u’›#¹˜¾/¹p7NĨ¶+;­^Iš¤#Lų´G5Ç»,?ŸÆ4©>8*,µ¢²D//L¼Ö|°«ß!·™º(ªžK[Ÿ2¥ž//öJµ®*$§›8":ß«Â)W­ËLJ=é´ÕP·Á-+<Á£Ê$Æ¥:*ж¼Ú("¿œ­"ŸŸNI(ª˜;1­¢».>D2­§/S©6'¾¹?K¼·È<'Q¤°-.¥™¼"-Ýüu19³©4+«»$×£1$©¡6&:¸¡Þ9©ÈNÁÛMiHFÌË丼+'®ª$'¥¢;)U®·4*Í¢²(q¡´%9ŸÇa˜»!3BI¬Ê-µ¦ÞF+%· m*ûªÜ/»¯& »³Í§iÊY%àœ¤.FÅ-T¹1Tº%©«¼¿*"°ŸA*»Æ-ü«¼C%.ž¤&›¼ðŸ×5¶¹$"·›ª!¼½@µµ:-H ¢$&´8%²¢ºÓ<,kÆ`º¼5-k¿ËïL»³,0­ºEÕ>%ϦKI¨å#צ5$À¸Õ³9_–ž%ËŸ>%¾«ù5-㛯=ª/3 ±%.ºÅf®Î#0ζ§»/-O°Ç$Gœ»o©/?¢ä9³=®S9¥­´+ÁäÒ­)Ш¿Ê·4¸™?G¨³./¶¾12¸´+ÁßµÀ%јL2“£')AÏ­²Q?\-)¬¢SWØ4PÀоF*º¦(­›º:$&¬šÁ#7¸;< ¶2µÖ³¤<. ž5"İX[4-¨-ü­ÏÛ¬³%!­¨/.ZÞ®½&Ožo<ºµ¢ç<§¯Þ)-®Ø*´¡9Jª©é*N¾*5«­«II”¾.нŸ¬§¤-(¯­2D³Þ>PIÒ«õ/™œ'%ÉcEÈÄQ2u¦µ.:¶Î<='!Ï’ŒÈ/.Ož¡œ±5:­‘·!žš=*ì{* ´©6°<:?B¹¼JWʾ¾4<˜Ÿ,(·©2<›£K-+ɤE4®ª§½;8&.œ–++œ¥ºâ2¾½œ‘µT0#ª–½#¯{!ì/ÔŒº*»œNm¥ÆvÁ@œ”.•¦”­7ºœ¹×¹à @—–´#°¥!@°š¥®«,;¸Þ¹©º: µŸ=!»OÜ£ šŒ¡…¢;,°ž>'™—]±½™“Qß™¥ÞÜ9'Ô­MÍ©'Ÿ¦P™R-½>:ªÂ;µý !F˜–%! 8¨š+ã¬$ªž¸­£¯Ò(9Ë?Ä·49ÀJ:¬œ¦''©¹¿§¾.5¿¨Ð$D¸*2£±'-±©²¸1+²›ª".´ïgì.-Q°Ÿ±.CÂ*,­¾J«º%'[¬›§,­žœÔ­ž¨ÜÀ¼¸¡ï%13˔ʮ·½68»>(©—Í!í°­½:5=?¯Í"–3ý¯1>©Á#ß™H»®#5¤53ã73­©7,»Ê$\œ» Nœ¬&(6!f’›%3¬­ã°Ç-¡Õ-»­ÚäÊ*-Ÿ˜­3'3_ÞÆ®¶6(?­¯((ª ·4!6®ªJ(ÅŸÃ"+íÓ¯­=;°½"»”¥Äœ›Ë&è2·“¸(D¸ŸºGL+(6Ä›™VA˜–+ö®/8¥ž¼1)&7©X_ä#º«6.(2¢Ÿ¾s)*»ºßÔúM)2žœ5)L¶¤'̨«³*+¡ŸÓ?56¸¯E;ZÔ×4k®#,^r·¾eR!!¡šÜdã/ZÛ%1¦›¦%$—•6?¢«¾QŸÍ™™87ÏWέ°õ+'L®¨ÁI?5IÑ7^ªª™@;­´ÍÍu-H­:"¾¡¹OZ:&C¦©Å1F™¤ųK¤›ª˜++£³""¬œA.ªZ#°¼'­­-¤;(?º§·«œÓ#(Ϫ¯?!v™­(ºß=¼Ì8°¡/ÑÏ\»68¥¨Ú?(1¯²A0G­¯>;M̸,&§¤8F¿ó[3<¥«&Þ­ºÈ@*¿¡Y/í@3¸¦U$î´/j¡º<>4BÇå̪º0'.ǧ«Á7"1®¯?î«Ð0/7Ó´§¡,>–½!Ò¦6Ç–»;¢Á;:"Þ‘°.¤a/¨£#¯—¼''+Ç›¯$1Õò®¬?05>¬ª()©³8YdTÀÑKÍÀ;6®¦3 É£S+ÐÐ0ì«Ëf“µ3¢´//HÙÊ®­.$ưËoDdÄ=/µ¥K%:¹³f=gÙ¾º9)M«§Ï--P÷Ö«º*+¿¡¯&Ø¢´3?~Úµ?$¼»./KIi«³)*·¬µg", ž2!Ò¾/Ц?)Ä»EO½ÃFf¾ÇÑ.!½¡M'Äœ½'?¾­&.°»H@.=«³IYÚçmeTfr;e§«/<¦¦Ö5:ïÜGý¸Ï4AºÙ<ζÛ?7E¹ªÆ)+S^µ¡».<Õcöó<;ܲ®¿F1>ïîÊÊ4)¾žÏ)«¢ͦ±¼]09ƽçÓÆP8E¾¹9*ȦÇ;AJ¶¨>.®Ÿº*:¾¸¿/#A°ª¯´/) ¡««#CžÃΣ×5»XH¹µ\<_âæÀA%ô¡¹g·/I±³§Í=Ê$£¨/°¯*ª(H¶08¥­.7ºP"Hž«/,OïŶxZÇ;:¾âδ1*Ââ<µžÁ+­»õk.4µªÄ:QÏ+:¢¸+é»**¢$¦˜;B˜°(ª Ñ/¢µ·¼:FÓJ3r¨Ì,ß±´º%¬š9$ÓÇnoB·¤H"CÝH§¬!9®N]ÕM²±*$ϲÎÎÔ>SÄãxD;ð˾Î3L®Î=´­*,•¹!(=ß®ËCÍj×·;*ܬ¯<AŸ®2)Y¦­?)=«Å/ÏÄC`ME¸ªK>œ°(ªžh)Ù¼0.¿§¹).ª²8NËç?7Ȱ¼Ç6$4¼ª¯ÐR=2EÚܺ·PHÛWHK1^œ£§ž:<¢©)6³/.£¯,5¾²E/»°N[y,3§¤<)S¹ÕEõ½ÀA1P̽Æ6w«/#«¨/,ا¶#:¡]#¼¬C`ì#2›œ-?œ¼L¥½??Bþ¶¿7>ÀTU·<,¶»9ʨ¯61µSÆ›´&¿¦»)(ѳ¶²N)KÆ?ĦÔ,7öï÷¶º/2«¹(7ìÏŸ¿ ϧº›à ¥ 0Ž5%¨«”­’Ê+™™·¾à«N<£Å$=D-Í¥¬Î:)>±Ï-Gª¤æ,¥¯?¼Ê+4]S´ l4žµM·M'C²¯M#)Ħ©ËR/"Ý®<»=»¨#I˜Rx9E³%.A¿Ÿ©*ÙŸJ/µÇEÏC6®ª20W?~Æ´¨\G––.ì©/-¢Û¼”@1Æ¢”θ¬ºÊ·³;(þÒÞŸš#.«¥ÿU5½·š‘›³“NÃ"§ÂîñH×B,×µøxCD®È+²£¥·N&§¡:(º¡m-°»Mà½Z5ß·EM¤¼,±¤¶˜™!,¨2l¯´š »¯Èßâ®P5›®#/²§¼*6ºBÚ¦7Ô§i1½žÍ&©Ÿ©_.$öœU¥­•›#0Å)9–Ÿ ™¬#¥œ4'¯´;5+Mž®':ºÂ>'ÙœÉÈ¢=*Á¶.(Ø«œ­⨥îT¬'Ã’¤/JÓ&¥.:ÉS:´¤*%ªx>¤I Àù'¥“?'ý£•k!¢³:¡›^’¬(¼â%´ÃÄ›A/ôDª¤$V¥ž²'#æ¹DA¨§(ùŸ¸.¯.8Ê*<œ§0-4ü³]^½\µ¶žžMU=/Á¯»¬Î«’¯J,-šËܪ _–Y%*M­¨¾Ï.½“»&=§Ÿ) ž©4޶*Ÿ¸ã­E:¨¥Ã#!¨© ¼–+ôŸ®M.9™­+ª¨j¬¦Ì:Ÿ>$¥Á#³©42»«2Vžª¯4»•:>­¨è(½¤- ´¦9-±´/>©º2>5.±¦»·N,Á¦¢,·ŸJ1]Ä·¿&¨’\/¦µÂÈ*(W¶¤¶+5»½F8½©V".­£>%ŬÒòa=Cزº+$¯Ÿ.¬˜³-!ª™ß?œº7½Û«¼<¡è<½7&m¯¥¬+"[¸¸Ò5?ä8Í«.#<»¾´Â*<À:M·ÈO>Å­Ý/7¯©1'PNΦ¬N1=Ú8,²¤ÒIM^ü6<¶«³ô83.E­¸?¶¯&0­AF§ËRl(Ÿ¦Z¼d'ž™=#_H7«¨78ºv,I¥Ã=–²jŸ=9¦›¾ž'»›ä$˨@7¼>/ª¨@=;)韯=PS3J²¼F97¸³~çJ,H¨®5.ßÃî·³&¶iL¢¾+O²TÕ¦,³˜=,»2)§žö.K¹a#(¬¡>8§º)<ã8Ô®]=¹«A\§>I£4¸—¯"º˜TÄ¥/,®½GÙ8<©´-?½TZ´B*ª¦œ›.,¶K(º¬0~¢9ÎÕ<žœȬ÷ѱÓ-2¹«8ÖžÉ'̦]/O@K¦«)-ÃUè®F!O¥ªÆ/>¤ªND<9¯°%1©Ã>L6Ǥý/^Yx¬¬8.¾¯¨¿%-®­C7ÔÃF3=¯žÁÓ ®89¹·0,±¯+/¯¯NC·¸)&º´Y¼¿5IÉ:F«®J;:5ɪü.M¾¼ÏOOÈ>#ʺ751Ô®vD´Ó)a¥Ã(/µ¯G5pÈöÕ'$·¡ì8ßB\¬Î/7Õ©½.¢©9(1¯¨79§¹'1¶ºYÙÝ+-¨¦(+¡ª&.®Ñ+_¬¶å9,cªÎ'Bž¤!»¦W>¿Â>@ÍÙ]ÌÜIëN-ʺ"/ÈR`«­W/-j¯¸>)^§Ì,\µÚglGãþBʲ½E+?­½-8³«Î,*ø¯ºdN[qÌÈF;Ï»÷BLjɳR#NŸ°/5uqľMO|FůC.ͼ\ân6JÃÓàÄl/g¦lÖ£A-º½?â»[AT69¯¨Î<.g«z7»Í2ItíµÜ:½»2:¸½OH`ÌÈü>8Á®9-®¨:*U¶¸h;JÔéwìaÁÀ;9¾­B#|¦Ã3FºÔ19­¥A(Ó¹@FÕ×Ê^?ØËU^ÑÜ\oaS][»©Í*)H¸·ËÞ;8¸°Y@29Ä­Ý7XÀÂ}53ǪÈ);«¼4OºÇG/=²¹9O±Ñ6ÚÇ:jºÝÒà)7Ÿ­+£°/LÁIA½·8,¾«û1EÌOKµº8T¯k4Èh,×­âDZ×ÄX.E©§?#1½®½LMÇv3>ʺ½ØM;6H¶¨b:©0/PßYP±«6%È«M@ÅéHéØ><[Ú§ÒC’™4‘‘+5©Öm±Ø*:µ¼ÏÃE,ì²:9©°(.¢¨°žÏ;SYl@M©®·¾ÉÈOOÛ6<©«áH “8¼²(ç§JòåC±R>W;G²®U'/®¤Eù \)¬«#,©Å-T¶ÂhÙ`$:›ºM ÏWÀ:.ß»x]ÒHIÂËf@=À½?N¶½;4ɼPJpöÕd<Ù¬Ã-'KŸ¢)Ì£­7#<´¶Ñù\ZOIÌÈ\ÅÀ71¾§Ã'-±«?)èºLѸBO³E&V­·Òá4(׫ÎÓÅ-7²â>ØßÖ²È%$®žK&ó¾Tº«@,§žÎ!6¤¹(=¶ï6>ɰ¾ÝÑ0*º¯=;˲¹;7ÍA*»ØC¨È/<á¶µ>:¸Ã-/ȶ¿ÖZHOíÛKK®µ)1°¶E8l­¤=&— .;ÈëBJÁÉFMÌ¿x7V¯É1@ÙȼM7·³30Z˹ËP¼°3![­ÐKÚRM½½JAÝwS¾¿;/Á«9+¯©. Ρ°;-F½ºÌ92Ë·Ô÷WCTGi«²C31º¦7+³·.,Ì«­Ä7*8²¬-*ª¦N.7üÅÁÁËe+)¼¦¿:5M¼Â7H±¸R-0¿³ÅÞBAÐP=¯¯7F¾=1¶ª>)s¶ÃÄj3?éaѽýLÊÒ¯Å)B£¹-9kÀ¼Iâ¯>#{¸>ή22¨¸2ZX:½¼;f¿F7ܦ·"6Ÿ¸!*¸ªé4xÎSóNW²¼;N¾8+«§#!ªžâ*/h¦¬#!±¤È3;ÈÌ97±¡Þ'9ºÏBa_è½^ܯ8#µ¡-Ã¥»¶D\Ø%ë®g9^Ûɾ>,_¹Ïͼ>*a´º¿<,¾©D,Á»-M§Ø7ÍKQ±=,¤¢´•º$¦*H£Ç%§ž1¹œI(Áå.ȯwñ['Iž¯/A=6µªQ,H®´RXO.:­©>)K²À;_­¶6(;°¨n-ß½7;ÛSÏ­¸[F-'ܲ#-̼±ß.Û¨@ P­°Å+'éÃ/;¶»Ò]=øJ7®®+DªH,áÀà_û:-e»¿ÙêF.F¯´Óg89¿ÃAæÀ4Až©¯šº-5Ô¹ð1E­®,$É¿V¯¯<.E½ÀOmØQÜ·].LÄMT®»(3¯ÈK¼Ú.Bª°*'»«ÐMI5Π_[¢z-@ïÓ->¬¬3%à®Èåã3/»´=ð©ã%8¶»ï>9͸ñJÑÄ?;¿ÂKÊÔ0`¯ú=TïËÏÈÎ24¸¯î16»®û1=¹¸6,먰0*{¸·Ä8/å°¼>0KÊ\Cº«k'?§µ,.Á­ß,0Ú«®6)Ù¦®6&J¯ÀETèfxtDQº³Ø;=_cxÌÉìyî[ág6H¹´ØMk?>¹¸E[À=6°·-<³ËMÎi9G̲²E)0¿ªÀA=D¼µ:?¶]4ÁÆ;õ;=Ð>D¯¸=?o`÷ÅÇF:ÕµÆ?:gnUöí/<ºÂkáJGÁ½=3½²A:UF·¤Õ+-O²¿7þ¹MòÂ27¶»VTXaÏæ=]­Â,B²p5νZkÍX.7ª¨54¸y,Ø«Z4ÉÀ9;³²;<Ì×ÑR2ê³ÔA=ã±Í<]M<»¬ë2<àR[«³-4µ¼E;VÎQDƿͼa*5²°;H­A ·¢1+·²\6F³À/J¯×1a¬¿'-¯«v3/ᬾJKM¿Ö1¶£.&³Á;ÅÅ:AÓÄÌøPMÚ´Á*,ª§>9ÎV3?ÀµÅL@Ç¿78º­Õ/9ȾëNhg[ƽ@4ŵB/¾­:-¾¶H^Í4:µ¿QËW.¾¤4&°¯IB;o¼=9®­B8Õ½è19­­*'¯¨Q4ȵ@J­È/KÌáÊi@ÑÆ?L¿E3·§æ-8ÄÁ>N³¿;HÜIÚ³ò8JË¿k>z®»%Ú›Ÿ¼5,“¡Žš<Žž)÷½J<¹³5)äÍ%B¥·,-Áª¿+(¹¦L)î­sAÐg\rHÅ­Ï:=8;Ư·K@¸×(.Ç«¯?,Í«?,´¼$=žµ$7´Ï\oµ °1Ë‚:‰Ž'¯¯ #!¸Â4¸©/½›Í#1Iá°(&¹Ÿ¿$%Q°¯ËQ>Kì_ʶW3·®!¦šH5™Ÿ§¥&ã’¡¦—Î#4´®@)Î¥Ã549Ú¯Â5<¾ÃfΤ¯› #(µ¯5)³Î&žœ2ø«O Eœ¬/ÝÄ)+Ω­:+t²ß/W·Øo¶¾)ÑŸ¯40]ÊXG±§t.+=¨¬(*¬¨+¬•Û(ž©".ž¥3-33U·¦¬;)=[ëp <£®4;ºë+N«¼A?\ÁµÎ2.ûÁY[´®2!´<o¥Å*6¯®C4¿³:+á­ÁLw0.Ÿ ¤™Î>E,:±¨·;'0Ç®¯W+M´y5ß®R/­­¯µ13obM¾¯M/ÏÀ==ÝÆµ¹,'¯¥I7Èy?îíeId­¸@OÕÛ>/L¯¯-$¹§üHÌUCºÁ,4±»7Ú©Ý+/Gµ » +¯³þîpC1M«Ä.Á©I'3·´8Φ;&º»-ÇŸL/©¦­:4ª°}[¹¾$#¯¤Ê7+V«Ï:ɹV+7§¥/Lœ£&µœ>%¿½Fÿ8?¾m/r¢¯#+¬²FZñK77µ¥a+g¼B>±²;2Fo°®*­œÎ*5cáËÀÜ@EÎÐÉ¿2/­¯+-¸¬ÇB9]®¶-)¾°\ìÎ33®£V#>®É2=º¦Ê&œž«ž^3MAV¿ÀÐ?;¹¹2)Ò£º(D§L!֬ϽÑ#.¯¸¿È'1¨Ã+˧r&9©®.$i¥³9>ßãëZBÞ¿IAº¸KKK0¼Ÿ=㨻:0Û¹D=ÀÅé|gÔTA\Ó¬¿"7©i1Ì¿¾¶R)8¯¿+ç¡[,¢¸JØ-=¯%<Å8Q®ÀNC>׺rVÒE@¿ÄMZÎÈM+<Ÿ+GžÉ0½¾2E·ÂáÚF;O\áĽ¼D/ÏÊ8˯T/D®®8-Ì­Û+0»§Ó-\»ïøëCCj;×l×<9¿ÀUaHI®­-.´À?NþÕÈÆÓ9(㟽#<¯ÂFC¿®G*OÀ\]½â=rÅXNºÎ/N´];»Â-K¥²,.ÈË^vVÚ¼ùEÖ×RÍò>ºµ*)´¨Ã=:Fß»ÞKÅï:ɾ8W­Ë2=Z̲N1¼Î9·¹=Oúß|=Õ¶]BãmaÄÝ>äÄ><É»ÊR?ÜÂ=6À¯ÈR@<Ñ´å>_ÃÔ7:´®F3ø²¹-"»žÉ+:ØÃÎfïîOaÎcLÊÛWÀJ+ίÛ|uCKļB-è­Â?7S«®) ¹ž}&ë­P-^µÇzQ/L¤°/9iC_Æ»Â82ÈÀO¾µ1-¾²×6-ÁŸ½!)¬¢2³œ<I¬©ï-¦©;DË?<ïÓ¯´'+ª´;ðl>¾Ù'øŸo ê©ÏgÎ<.߬Þ*[«È8RËâAA²·0^¶6>³Y:¬¯&(´«ù59Ó¿ë¾».,µ®N:JÍ¿õJIT»³I0KÎÈ»½O7Dk˹T-v©Ë,R·V\°ë$1¯¨Ø,>¹ÆFT¼ÉQMËÁÛÕA1½¦h'6·ª[*^®æ.@¹·]VÊB4ÊÊE¹°/'º¦O([±ÏHÛÌ??øË7-ƨÇ55Q¹«Õ'-¸©Ã17Ò×ÚÙAb­Á*8±¾JPÙÖ;:¾¸âjî^lj8Ó£ñ ;­´=/̬w5éY9ƬÆ03¾¾=û­¾6,;²©E+×¹sff[l[ÇÀ21³³IZÉJ9˼FFÉÏ`Oö¼Ï89βÍ9D̾Ü;O½d:çÉeǼ?/Þ¼\ûÄ7.±ª94¾ç:Å´Q5F¿¾PMíådW¿Æ+/¸¸ÒÓLKßHZ´],½¨:,¿½aÖ_>PÃÃ?9ÏÊEÍ®ÁG3=W>¾¦k+OÎë®®.$Þ«×9ͺ9*¡¾-1YͳÇ''Ŭ³ÉF¤ª(#Å®ÏHâ±×%/¦«'+ª®6;ÉÌXÑÉ::»«È,1¹¿7h¬Ã),°¤u3ZM4Õ¤¼+M¾9Q²s5ì¼òTÌÞ:N¹Ù9[»ÑRéOCÌÊJßÂIO¾K-å§µ3+߯L-»¥K+Æ»8Hº¿M7Ô®V(W«æ6¹¯/,¶¶?VÊgT_fÚêVíaS»·B4OhįS)ó­J,¶¥6)¸¯D-B¸ÂBY¼ËB>a¸´C+F·Ê;ߨ¼!'¨¨0-´¯4-¼¬_/[´Ù3X­Æ+0³©ë;KNؼsAÌÈ@F}Ø·Á:1C¸¦Ó'?¯Ñ<ÞÉILÛu~Íul¼Ä6(J¤¤:1ª«=4¿²=-ï8,°¦K-EÅÌWÐÅ;5Á´êDGÞÍ:K¦­,t·!8«Ê.>¸®Î7SÅ35ª­)+°®TSáXQÔÉSC[nÏÀçU?3̬ÛZ¯³0!©’¯Ÿ”ß)ʾV¸¨/­¥+&ºŸ¹$,¯°.+¼°ýlÊæXGHÄ¿;7¶­fAL5:±§^*Q¨¯*%Ì´C<µ¡½!&dz³Ê¼š›Ø´›»*7Ç¿X1T³½¼i!.¨¦è63N¸¸â1%mŸ¬97cA+K¢¦A:ÏÆi.0µ¯SCfÓÈH6vº¾P3í¬t0Ö¿Z×Ò63»¥×*©§6,½´VdÌ9-¾Ÿ·"$Ũ¾7P¾qKsaиT,C¼µÔ+3³»z½¿H=IZÜÎ^;Q²°>,×¶SIâÏÏ>5o½²´>$?¬¾9I¿Ú>SËÊáIQÎÃÙ<=ɾi;n©·%,¶¼erYeítoÝÉÑgPMMzÈN8ȬÏ*AªÂ/@ÛȾ>4´©Õ87EN_ǯ´-#Ǩ½F;TÏ[I¸¯8D¥¹;ä¼k-6®¯>AßS[äTÛÆ[ZÆÂC4Ʊ@2ËÀÑÎICÜØLZºÈ0-Ã¥Ö(T«¼6+U­Æ-H§®+$Ì«í5ܪ¼))¿´qq¾Í;<ÔÏP[Å¿ÚD>Ê»ü>KÁÚ9Ö®].ãµU8_ÁÐR×Ác=J¿µU-?ÂÎ]Ò¿Íz[N9<¯ª/)¯¨;:»J-ÖÁJ¸±./«®5::A£§$´ŸÝ*?ȼÏ5H°É>aG?·¯UAmm^êÎüüÆD1ƵC8Ó±Á((§ž2"°ª+(»­V=ÚUF¸¾6P°½=*6±§Ë,/¶³6=­µ&"«˜o)§©ÌHYÉUBD+?žŸD/O5+»¯-+VÀÇ@@º¹gNEGÞÛÊÌ4H¯ê@·½?45½ª4%±žÝ)?ÓoÛçD½©-¶£>@¼éLÒÑ.,¦¢$) «.&5ª«0Z³.0¨º%3®ªç0E¸N%½š]I®À=1Ú´Ìï`4/Í£²".ž¾ã9$²­E8F¼¶@>98£§"9¦N(<«7'£;¨™'1¥7«Ÿ,MŸ-uœµØ§R%©¨ÏBò¸,¬£6A¬Ó%H Ó ²ž!®£ÊØ71¹«¹$¶“²+*,­™BaµB¬¨&©WDœjnž:-¢§#"¾¾M³¶7Ò¯*&«·&H¤¯.*¿ªØ//ë­¹=8ÊÎ@µ¯%(¤¥2%W©¸6?Y?¾¥_&ͱ9FÊS»¼-T¯*,©%7ºÀ¹8Ç )9³¦b$/¸¯[Cº¸<3Ƚ@ݶ83¼x@µÁDÍZ2¸¥6Z¦¶=2E«½'-µÁL´¶*(À¶Î¿ïTÉ9+ÛºÇÌF?ľG>½>:ÃË.C¤¯-8ÇLK³Ä7D̹¹X,*Á¡Â+:Þn¸³0/¹¿ì¹<&»¯/J²]IÀbO¾ÛMS4@¯¼9g¼Ûïj6:·¿:¬ž!¹šÒ/xÔHHηÌ95_Ķ»<2δß,2°®MMV;µ«)&´²ßÌÜ=,DŸ¨$¤©--¾¶ëïQ5ù¸ïÍÊ),±¬¶½'²˜SUÀMË´Þ§Ë&É¥J>m!4šª(t²6DÈ-/¦ŸM);Ë®Â)2¬¶9L¾Éûd<º¦?!Y®n?·µ*'§Ÿ4!W­¼kY>EÖÏYU¸¸33¼ºßQ1=¯»:ù¶×0.½¨Ö7QÍÏ\;GÙ]À©ºD>>]Ñ:/»Ÿ¹'/·Þ;¸­Z.,j©ºMÜM6;O¼°Ï;Æ«-%¦¹]©oL×HKÃÏ?\³½0-¿³óOXÁË.1˽¸¬Æ0,-J®©¯ë(#S¦¨?+HÎ|Rɲë1VºÏhí[I6/ºœ´&-VYÉ´­Ì%,Ãó¿©k:_1:©¬<5ݶV!@ž´,_²CF¬NÏžG*ÅÃYÞL=·§@TªËxËAFÖ?R±¿H@>VèåÁ¿ã{e>?˽êEƬ4ÉË&K°Ý<[ÍÛÞîK=I¾¹;G¥½)Ÿ©+:¹½Ñ.%¹¤I-º¥`&Q­ä26U»µ¼Û0/¾´ÙÜIBÂë5Þ¸?,Z®²ñÓÌ5+GáÞ©¥1 ]¬¬Ë&!¯›DÛ¯1@¤º1RJF©°-@Ð/5µ¥°*"°ŸZ,,7¨¨+(Ȫ£Ì)ÃÚѯÝ3ͯG*Q·ÏKùW:¿¥Ô(;¹¶Â2&߬±å6½µ!¢¢X?T¼×+ï¬0*º¼?Ó³ÁR9O׺º5A·>.»¬ÏGOxêÏK2á¯Ð<þ|3ϧÃ8;NÈÃYÊÃ-0»ÁÉ®á+BÌFJȼ¾K/Ì©I+É»DNÞc׿Ëo=1H¹­¿42ØÎ[ØÁÏL;IÉ»ÄS8FÄÆÔÏ><¶Å,V¯F;¯Á-L²f4ıE4PVǰðIËB9½»Q=>Ì·ÛPX]ÇÈDOÊWFÝÞmí_Ö½LB³Ù&2»­¯é0=ÛÕåKOÃËZ]MÜ·_6Ò½MLÛC@¼²ÄE-:¶¬m.V°Ç?TÙO7E±­u?RQèË>?¾ÄP:9º¥º>42;Ú®±C?Ð^ìÁO=b]S¼¼>H¿¼ï.4µ³H<^ïEO­¬<<»A%A²©®21že.-"H–™ =›¦?>¾·8 2³¬ÁéR9JÀg7À§Ë.=½`)?¦£E7¦²,7ª­3$8¹®¼ÉÛA1.C­¢¾'3©›§> 6²¨°þA]SHJL¼µC1`·Ëê¯Ä#(«¦-&³¯29®©P%;¸{>»­q+<®±7-jµï,Οº-4iX5[¢©43Ë^.?¬¬:4¿ÉEYÜÚÂÏJVB7Ñ·¿Ë;:µÁ3OÏMÞ»»Ñ1-Á²HC´¸5+I¾µ·É?+,à§©<&\¦®7+?Ö·´M0LÐé~i˳d%7ª´4>ÌÙ}iÆ¿.,¯«OIÓåF9IÁµ¼h/6ÏŶµ4%\²û[¯¶G8=Tøòùνm:Ö®Â5.]¸Æ]uãjCF½²L*8¶§Ì+9À¸¿O.1ÒµÌYȸK(4º®ÁH>;T;H¼¶<2À·aoÊZ66i±°t;VÂl7Oµ¶I:IPųÚ19ÅÁlÜËV>_¼ÆHAaÎð¿¸K0@ÃÊaäö\ÛÛO>O­ª8+»½+7®Ç/}¬Ì/R­Ï)=¨¯22ÔÉMG¾³Y<Öq5b¬¾35H毴Ree3>¸»Sk_?zÂÙ[aîùìñ?>øR4]·Ô?}×;B¯ªL+@ÍmÓ´Î:@QS³Í7D¹g-U­¹>=ÖÍJ>DzÊ^JJúc^ÎÌM@Ç¿>KºÈJOtñÀÀ7,ß©¯A.MßOĸG9̺[CÐÍQ_ì\gaXÎÁì]ï^ydCtÃÁ×>FÓVCɾROÊÇd8=¿¸ãb÷ëkYûP?Û¶Ë:3R·¯ÇL>@[ÍÈéêÎiDI\yʸÈ=7NÑÏâçqLÞ´¿?5ÖN©ž=0ÆÂ¬Ã&>§Ã;ÜoBdVTÙËËiéÄ?4¼À/|­W?ÊÌìA6ǧ¸0(6¿§²;;ÀR%L£º,:®Ä,â;&¹®7,\®¼?SXr­n!ÕÌ"8´Ù5¾«Y5>@¬7O¬ÌA8U°¬x+4˺ÅI0Mª¦Â*/ž9)¯¾"j­'9›©%+Å]8¹¤À+1¯³/7¶V*ΰXÉÌ1ɧâ#Ù“ž)$/2º®($X±±@)ÈŸÛ4£+(¿¿45¼¯I8½´g@N:2´´'!4¬›¿)ËÏ«¤*³§5>³U/º®00®Ë%N¬æZ½Ïï=.ì¯Ì,0¬²'N™¯-ÁV׫<½˜O#·À(S¯LF«­+'¶º&<œ¢¨ž2-ÀãJ¿ÀäQLÉ`.d­ºE6JÛMX¬§< :®µ::¹Ñ.`¤¯'(­¤1fž¿9ÀÁ:9ZÍÉY^ÛIOÆ»Ø-8©µ6Ï¿).°®ÉX2,Ó¤­I17ëì:È©j,T¸Ò/?¡©#$¼¶ßß=0½¢Ç).30¡žJ%B¹ÄêO39Ƚ¹¬È(#Ï¡Ô":°°ÁN9IKY­­1"w¨¼@>?Y±®5#ì¡«52Ÿ¨->¾CEÙYû\B¼©Û+=¶Ã57cú¹²L@ë_ÜÏ83θ³­ôÀ«ÕÙ¿Íë>.`¬Ç2M³ß.שE!tœ©"Ó¡¾NÉI;¿È<Õ¶-!©—>K™±'«¬Q4Ù¯*ÅJ““¶oÅ¡Æ32G¹¦·1/OL¬R+B½¹ËÚËq51c±±ñ>2*YžžH'9?;Ô´½ÌÖ;/¿£ð)Ÿ¡/%d­¬x6[ÌDAØF>³§Ä+$n¨´O<9W¸¸o5<º½DÏ»5/±±2;¾P=¹»=v²ò22K­¨u.6Óú3âÐ.XàAkÈÛlÒ·`&<¬Ë+S¯¿¶¾'#ݦ­5-½¾ZæA1Cº§¹45T߸¹>)P¤¼#8¨µ=?ÛV.c¡³'5©°$¯ :-§ª$$·®DDÇM>¹µOÚÃ,"ó¦¨Ç/0ÂÊ6F¹½NG˼ÔP66º´;U¯N'Ì S Ý¡Ä#+³«é4A¼ÅOQ=N®­N37>¹¦å,?ÍéaËɹ·+Ó£¼6P¾ÛZÛ?/¯W]ÄK3B¸¥¼! ¯ÿ/£¤4!}Ÿ¼'œž% ¸©Ñ22ѳºý..À¯»Õ2,@T·Ÿ¯*"U¦­5-W½¿D1h®ÀJ¾Ä,0¼¾FNº¹G8MÙÊûIη¿Ø7+^¸ÑìF+[¡¯.1¾¬á&3­³»»`\üDÖ®\+Ù¨_;¥¶;Ï»20´°:*N±±ÍG?Jhût¼®^"-­µNËëWÁ;)·¥9.¶¾BÈÖ1æ³8:¨¸#.«¯GLÈ\/9¾«º.+¹¨F,¼¬7*˲XKÂG5³®;8t캻-,¯²9Q¶Ü21íª²DPT4Q®­B&L¯W/½ª^8áÏL<ήX-ȬY3OÀÁJBìkðB+и><ÆÆKMÇÆæOBÈÀ7;º¶ÐQCUòw÷T.=Þ»Å7EÁÕ´¯5,V}_qͯ®68¢ª;)=°©¶b)&Φ·O:2f¿ÛÉÎ=5E·¬÷;_[RʹÅ=0}³·ä9/=͵¶¿ë-+¿¹>ö®¾G=]Ö3(¼™§'6¦ªòô0"À½6YH3k·»Ú9<»¾DMÂÁ^ID7J±¯Q5NþU¿²>*À©G6µÂ-6dïÖ=ø]Eø=,ܪ¾<ã¾:D²W*Ò°EB¹Ë77~µ²Z9ßÈEKé@k§°+*˺vɼ82µ·1I¨·,.æçسo7ž>6>©Ó.\¾qaÞòïÃû.7˽·Ó6uº=8ÁÄfÆÕ23ɺ_íµÌ-'Ú¢­A>O5=²°J8ì¸ÆD:BζÁK1=¿ÃwÁÀ;/iÁàïêæÍY?Ë¿EDYEèÔ&6º´¿I:WRó°¶<+F¯¼;MÊnßÜO×à28»°Âh9?¾ÀHMÚß[IgÀÛ?w¿êG~¿Ê7-½¨Z.SÀÍLDÌ·Ô<@jÞÎJB¯«J)3º®T;}ËÙMEaZc¾½ÊÉ<)V¯n7ιÙPdÖO?ëÎKø®Ì+D­Æ+5¹µô:Z¹L2¹¬1$ç¾]J5?¿ºÙVFIåÓÆÉFPÃ\7O¾ñ>˺|MÓÆJXËÕ}YJØÍIñ¿D6»«B+кJIÏÚåÌYBäÎsëÀr+<­¶:L·N&Ö¢O(®J;ØÆãTLÝÉ^RçPFѾÑþZCLÆÉGwÈ?B¸³N.L³T+¾¦F/¹º/8»ÈCÆ«M;Ÿ®+/»¿;X¯Ç2JºÜ9HÂÃßR>Ñ·@4¹¸-,µ§a.Ë´=9·Ð-OÊW²¯-*°­57ÀÑBMÇÃqôâ@JÁF/¯ž? ä¯F>¾¿]KRâÐPEĽL>cßzÔë@XÀÓ?>ñÇÇ×WR^˶S)Hª¼7ϳ0&¾¨Ó=SÉÉéZ[ÔÎN=VÄ´Á0-Á³U[½ìAfnbãLV¿ï@Ë·ï:Eöý`xÙÌâHúÂL6i·½fmï=6x¼»ÌH9L¿¿EV¸á/A¼½ÝA:¿­J+@ÈÆÕLEË·¼f/8¹¹;B²ºE@LZÏ´¿>FXCǵ>.â¼ÉÇÍIA|vTÕÎLMÙäfÛË~[ÛB5¼£Á%*¸¶PlçVvÊÄM;¼µ,,¯±KßÚ4K¸O9®­1-ݸ·I*N©®7,¿´/5­¿9ÓØ8û¿LZ¸Ë:ÄÕ9C¾­³W,$;¡Ÿ5'ËºÑØ0,в¯¯8ÛZP¹ÖØlÌÆ=m¶E*G©­/'Z¶³ÇC@VÓ¹Ý9AVÀ°O.Ú±Õ/-»§è3L¹»80_ÁÉGI¹½;n¬X 6§´/Ч:!åªÜ>ÆÏKÆr*G¨­^1/Ê«Ø3Ö¯>%ã¤Ê)J®ß+=¯­ß=!N»Ã´r/MÂÈýFgÄ[NÖ::µ¸W^Ek«È$2°µ÷O=_½O<½²D/ʲN<ÍÎ:J¯¿3Z´W2Ú½OgÙAÝ®Ï6MÌa9G»¼^T[íÇÝJ8@¶¶Ro÷>jµÙ=kB6¯ X/°©ÊBC9Y««,VŸª--µ¶<3F¶ª\+`¯l<ÌÝ;׫Ë-8çļô;]Ã83§£1%ý¸ç\Íø=EŹÆ_78¹¬F(;µ¬Ó8FÂÈ8?ºËReLÁ¯>(è«Í8Kׯ_1\©«Z"#µ£ü9É¿A>U]´µ69¾ÈRŶB&7¹²¿ÔLHRHͺB.ϧ¸1/ĶÍß0(¸ŸÀ(/ÌãqÇàο7*»¥L$fŸª/)¨œÑ&+ﳺy]ÑÐG2>À¾î¿¼:1¾´2)´¡T$7´µ6Q£ÎW£Ò-Bbh²²4(c¯¼?W·@,¸¬;-í´ÉZáL7e¸»ÖS75ÔµÅ;3Á­q,;°®L7KÔºÊ8;Ì·Ô1?¹ÊãÄJ0_®½3<ÆËÌÄ9,¾ªm1:ׯ¯E%:¯ºBI»Â:@äf׺Å=4ܯÏ+.鸮Þ,E¬´N>8K´¹:4É»K@ž?;¶®J3vÎHJìξV.y®ÇWR=FoÚ¸´â3+l¨·-0°§P"6ª®9.ý¯½38²¯<+T²É6jªÁ'*«ŸQ$>¬¶3-`¹³¼7+»¨A,aÂʵº- U¤«8,ͱ@3ÎÆLΰß30N­®B5òÊJE¾¹G9Mñ¶³C-MµÉEçÚnÁn*6¬¯9E·Ë>FjYkÇÍSaÂÖ4;³¯OEÊW.8³§ß0@ÎÅA7»¬á7=ÒÍ8B«±<;=3ꤦ@+ùÂ<<ëÉ´Ê/D°¿;AÄ¿H>ÊÓ2<°°G:ξV7?¿¸ßlåF3S´¹j;=Ø¿]:Ë¥³(T¥±07ÂÅL6Nº·¶·L&#@§¤O6ÙÔL>J¿ÈL½º./®®0+ʬºA3Y´È8F×rdÌÅUGþ^Ö¸U,b«f-Å®ó30½¤R"T¤°0">¦¦ÅH*(ĬÇÉú*-²¢½1-@¸±Ñs;3Ç·ÞJ5]«Ó)@¬©g,AYB˽ØÞJ;ʯÜÀÇÐòNÐÌWmQ>̼B>¿á=¸¿&D¦¼KùDKÈB1ÔµÈTÙ½<,Ѭ·E/FçÁ°Z+^²ÑSîC9¿­ü?ëD>ÃÍEôB1NçμÄH5Nµ¸A:¿¼62Á´Ä@-CÃÂÌòtßTAEÚ´ÀTaCI¾^?»î5ÊÂSÛüKdoìßàÚj̼6)ưLHØÀ³[)5ö¿jKoN4è¡®¸™®"©¥5)Õ»HU¨®#&«­:?ÐÌo[Îw5C¶¶<-ʧÒ)N®a.MÂÜ÷ÆÌ?;¿°R6MZ½²/*­¬/1½¸ÚAQÉ?â§W,ÅP*¶¢f5O\mìÏÇÙq7)Ï¡×&I­·PPÍW0AÆÉÍÉøFµ¼*)¬žà"+®¯Ì/){«º?0;»³NW¸_,Y§¶'-ª¸+O­ÈIuL>ØÂÛÐ?*Á¢i)ö¯O0À¹BwÁXàÏ:p·6/§¢+£T)Ó¬äIÚFMÇLO¶Ç?NÖ÷=>»µ>9¾Ï7«='\®³<,Þ±ÍJ?M»È/Iªµ6-â³ÎGHÔÄKHËÖWØ×=I¯´8-h³Á@IÀÒ4;±±;:ÌßUüØÒì_ZX^êϽÁ<;ÅëgÃ>9µÂ/N­´9'S¥²&)¯¬H5K»½DDüļK9ÌÆ9@»µñ2d³I7ÇÅ]XET¶·RGPJYóÕ¿¶Ï/0eÅ¿ÞOξ]?MvÊÄW=L̺Ü>ÕÁHHoNe·µD/߯Û7XÑGS¼Àî]J\îMu¿ËlDEÅÀZëÕ>CÅÔRÖÈì?;ƽ>?À¹ÉL/C³ÄNî\El¾¼i;@Õ}OÜ¿ÄK5Y½ìOÌo=KÚµ¶EBØ;?²¾Fk[CÖ¼ÚB<Þ®Æ0?ÔÓÍY@r¾½mBBLŵí<]áNÚ¿L?ÅÀøáW:`ÂWBÐÅlÙ½v0/g»´µ\3ïÄ>;z¿ÆosB@´²/-¯§3'¯¨&®ŸÍ25̯aA¼W .©¢»?(?«â/ÜÑ׬¼)(ö¬º+4­¼CÚXP°Å-8mß±º85çÁÒßÚL;^¯À*4­«;(Ï«þ3GÌÆÞ@<¼±@:ÊçTÙ=:­¥0É®5i£¿*8ÄÌKEéÁÙd¿Ç2/Õ°½GLy?L¾ÂÆÐ9<ÖÇÁÚ>DÐq>d·¹JC¾Î3:¼¯Á;-NÄg׸h6b¼ÈF=Ì»T:å¶ö6P¿ÊShÎ~SgxäÙÌÆQ4EÌÜOt¾À=4Ǹ>>¯±N04¯©!¢ž/B²2'µŸà6¢Á%ÀŸ?F·ÈÙêÐÊA¸¼4.Û¯¿HhÐIHfTɱÎ:;]ÇÑPǾ96¿¼FFÍËÝN=ç·Ú2E­²2)ß®Ò>MÏ»âFËH*ȧn7c×ÐÔG>¸EE¿U7¸¯.3¨À F£ß%c£½+?º×[B/Ρ³-)×®Ì?mÉD<¾½;<ÈÀÿ[âÏ[:а>0³±8-Z®º?N}Kï»Ã>6}ºÁPS¾Ë65Ê·[:ů;,¶¯<6ë½ÇO?γL,Y¬¯<+WÁÚ]AÌ«è,H½ËOSÞÚ[Ag¹ÁC>Ⱦ47§­"¢ +'î¼E?ÞN9Û­Æ2W¸A6źÍJ7̯D+Φæ'MµÍdÙí47º´ÖëQFLz»ÅJgi5=µ­W/>¼¯Õ4<½¹;/Å´PÛ¹7+͹_á¼á?<î¹ö?ü=5h¿ÄÍÅA$/­¥~3M½¾_mO/L¯Á9GÊåu¼Ã2/À°Ì<:¸­8%̨×.@º¾GSÌÿOíÇZ>ž?Z»ó=PÝöe×ÛLõÈþÞÏIFjVʾ<7¾±wGÌj5?¾¯K*Ù©Ç4:Ø»Ü6K°¸<3n¿ßIͱb+z­ë3Kº¼@:ÛÑKPº±^3YÂME¾Ì8IºÀH%Ú­û:PÅÂ\ðÄI8ãÇRÞ·F+˪ÍCg^;L¿ÉÍÃ>6ƼPMÜí]÷ñcÉÉÓÒJÔ¼I4×®É5>Íé?Ѫº5/KÝXd®£Ã&"=¼³ºùCZÍÜQRu÷àÝR;P´¼;@¼¿C?{ÚÈÊM>vÃD6¶¥v$;¯Ã=vÌJgÃ×öÞM3B¹¶Î\K^ñGE¹¬R'7º¶ÌõMÕµP%2±¤º,(PÁ¼ºÿ@æØ=>ĹÔYIZ¾µR#.¬¥ä-:¿¾F6ß«¶32¶^0:»®ã6?ÍçEʶW8̼9=·ÈDÿÛÝÕH@ÑÀÒE3r¸ÖÚÈQB^oZѾÙDDìÏÿÜä4C«¶1>ÄÈÛF;>X³®L,Y°ÃXNHj½o.Ì«@-ж^<ä¿ÕWeÚilËçQïÜ_FKļW=ÚºX>ÞëOÚÅËïI@NÞ¾ºj3?ºÊ3W­Í.Q³P/ë¿C-6ñÀÜG*A©¾7߯JTB;°¨B,Ô»>DÆSFÊÄÍÿJÍÄ,(±ž¹*&J¬¨J'7¿²ÓHÇã1߸9JªÇ.TÏ/L¨¾6Ó¸F:Nu¾½Ýø@1e®¼./µ¯I=åtí½n5EôÖ´ª¼)#¸¯,I¢Á$/¹°½¼_&%¿ ¶1G¶ì-8»¸LAyɵ¹Q:FÝJ<ºµ37²µey_W_06¬¥Þ5:JuËÈïkt{äGc´k.Y·ÉF\Æ_?Ç´X4Z¾õ_¹Ë-/¹³96µ¨ß+4¾´S?ÃÅMikCÖÈoAY¹¹H<îÏÔëKCHÔ³»<2ϽX^ÙLQÆÍMBKкà?öÈkTYOî½ÇMQðHL»¸H:^ÈÅ]>KǼH8×ÊyÚÖiHHoÈÄwM_óÝçù|FBÞÈuWÉÈNeÑJ@ÞÔbÏÊQMÏÌKJÕÝyÖùHP×ÙáÚùé`>ò¶w8æÄrÏÅF4OËÞßÂÌA?ÚðQÐÁwHàÏUYé^\ÐÓdéÚâÞOÜÂÔWAIçÅÕHθN5OÒÏÈßIh¿ï3=Ç·ÂC=ÌÈAGÄÅNIæâÛßN[ä[JpÁ½×?CÈÉ\`l`ZÞ¾ÞAVßwhÔÍWO×ËnDRÓÌÜ[kÙcC`¼ÃR?BêÀÑJ[ÀÙ=Eu×¾ÈONOGŶQ6UÂÇãm@B¿¿BO¾ÕGöÅmAOÊÈJAÛÄÑÙÞI?sÆÐ\cÒû>KÇÌeT\ìØÛ`[áÏÛJEɼO9ßÀYHÜÉdOÆÊ8äÍ|ìñY{ÔÙçWMfxéÇÉFBÊÑIòËIE¾Ç=ê·^=ßÏLWÉÕZWguüÉÐJmÏJGÇ»ß;@ÌÐrlQôÐÕíLUpYcݾ¼O/;º¸êtGPÁÎOÿÓI:_½ÁB?ÅÖNº·9&:©¥J*F°¸9<½ÍJÉÄ56º³X8J¿¼ìWoòhMIYè¿»l¼­à-D´Û1UµÍFWfÛÃÌQ:ë´S1[ÎÕÒÜ×N7OÄËÚÊó6?ËÔ÷åëÙûFPÜoàÃÚIL~_PÛ»Ê<@ÀºK,G«­E*:À¹ÑYhõpéF<˶ÊKKÁÁ@5QËÓĶÇ>4A<>ª L(>ÐÍVF¾¯P-O·ÁI<ÙµI,ß¹èÏÁÕ=0îÔAµ§;"¾¦+%¤¡2*xÕNà¼_5¾©>/¶î#OŸ¼#O¨â,?´²nDN\pSr³Ç+B«Ç.ܪN,IöȵÉB=nÃC3»°:9¯²6/йäFN˵ß0<䨶³H.=·³54®°8.c¯Ä/E¼Åu9?¯°=-7¼©U.ËÂ?IDzÇ-(É ·*3¹°h,G¯x0Ö³ÅMAÚd2謁<@éÐô@>`ºªÍ'4¶ÈICL°°87ÐÑUWÀ½F;^þï¾¼T2?¶¸AExSùÈÁÌVgS1F¹ÅwçêheövTjÊM5îW8yÇÛRTÚlT¾º@.lµç9Lµ°9.½¯Û;<ÖÅåXT^aÍÉU_Ôk>Mµ¼T[FOÄÅ[5=½´ÌFHoKGȯÃ/8µ»E:]´Á3G·½^6BËom½È:4ɱÎELgHg¯¶<4Ö¶ç:JÒÐïáÞhsl[zÛÚÎÎB:Ù¿ËàE6]®µ7-ß­¿>jÆB;×ÃàÝÏ>8´­9-ϺxETÏÅU3p®Å@KùU?þ»¿Íf9;Û¹Â;6¿½>ê²â5=ÌÉJǯN(9¶³÷9I·¿:;NNʲ¹\?E=S²º3:¹Âé÷<=ɵÔÀ[9º²E;Ź6,·«E2׸ìCtÚo¿¿3:¯½,7©ª."ѪÇD?LÆ»ÖK9>·®:/¸´:E¹Þ6M¼½~2/µ¤@)ɺ;=˹ÁF>ÙúFàÍì×\CÛ¼ÇH5FÆËZüÓWLØÄÏf@A̺Ò=7h¾½ÍD<|ÏØÛbSmìʼT2s¼SF¿¿9:¾ÃDì½G:¿¼M[ÈM3PÅϺ·6*ϬØ7WÁî=U½¿^HrÉ]=ðÃoYãßUKÌÅ?A¾ÎJÓÏB=o¶µD2uÄðeÆÉGANjÐyß¾^8NÉÁåNÕÓACdܽ»L/X®½43ã¿ÌäjJMÍÂéKG[Ó½ÁD7åÊWxÐçwkwÌÓ?<λéC_ÆÔLïÁJ7ÒÂBV¿äXÖïD[ÈcEæÝhÉÍFJÙÜiÊÆ>>ÅÙSÊÌSQjÜÈß?FÊÏVÖ¿éAFdØÉÔPLÝÎ\Sî||ædçÖGOÁáKÿßmYÊ¿8/·©T)=°µ?<ÂÁ::¾±Í@GÚT>öJ<ïÐõùtUǼ5/±®54º¸73¸ªk)J­Ð>Úd?Ù½R;Ó·Ï:<ŹL:о\BPí¿¼C1Ó³K/欿29ĽlAâÄF?½P?bÊÔXN^½¼IDaNhÆÆçdfOHZúXÈÆHO¾ÁA>¼M7Z½ÎW\jÆÎ8<¿¹æEPçöìê\\пÖLIüÌéTéÝNLìÊÍ^VÕÑBB¹ºBHê]ÑÄ]>]µ¿D½â/C²µI=íÛlZ\ÌÓFæ¸ú<]íLÙ¼gFàâ`ãåh]Q·A5^äÍ¿ÎøZ:<ÁºJGº³O,;»µâ=>Ñ»Ö>D¾¹?)X¤­66Ëû>O×À½O.Y­¿@O¾:$A¦¦C"3­«X>~Òf8>¿´Í@;OÒ³±=%<ª­4,̯Ë=Bɺ×99À´?*ý¥¯,#ϦÀ8?oμW5ø¿^=ß­´3&`¬·\>:i¹ÎGTÝÍäFEλÈïG;NÌÃÏKDËÃA8ù±®B%>¶·ÊJ?fåÝÄô>VâôÞÛÕS?×ÅLMÙëjçúoâtPÛ»þ8IÞ×øK^ÈÄØH9dºÃQ?e¾ÊF:k¹ÆLBIÞÂÌædLCMÆ¿SWÐïÛê@PÀÍEDiÑÄÍëpSQ\}ÒñRûÒßOPØÔßvNViÙ¿ÏV\õÝnKaÊØM]ÁÇ<9Á¼MFvÄÊ=<º®O+<¶´I:Ó¹ÊM8AÊÈ^ôÅÉG8ìÀPI½Å>Hì^ܺÆ7d·¾ë]:B»¾[II˹_6R¶½5*Ä¥ß*@º²ÂC59Yº¶Ãè68¿»P6M¸¿XYfû{L>j«³+-¸©À-.ºásÚN5Z½ÒVQþÆËQ]ØJKÇÄçcYKtÈj\ÒwÞÉO?\ñ|ÖÐß__ÊÆS8FÃÅ\Z×Ëõ><гÌ:>ÜÁÒ;<¿µÜ;;ÛÄ÷ì¿ê:A_ξë>PÒëñmSÎÈNGvÜÞ\O¾±c-/Ê«»93Þ½ôOt`ZÒÍØÏZ4?¯°42ÍÒhù}xbÍÎ9<¾¿K[ÉÒsJEmo^ËÁÒåvSeM:¿­8*®¢;K¨µ-1´·<@ÁÀJ9MÁ¿yrÐæ@7OÇÇÄÁÒ[=7;a¯­ß76s»ÙNÎÇH5G¾·â@PàbaÇÏ=J¶¶L8DO϶¿XBMfïÃË>H»¾P?OÖØL_¶¾<8ß¹j1H¸µc1<Ͱ¸83ɾ@.ˤÌ&9·¿A>̽þañcÈâ.9¸¹Vý´b 0Ÿ¤*)´Ç8¹®.+¬«./¼Ù9ŰM?ºÚ-;ĸ½T9NÕKG®²##¥œ3!À«_:eÜT͵d,7½¯µP&.®§J/Ç·O%>Þ¸¡®,*ªŸÞ,D³½?à¸?/ð:.¹®<5ÇÊTÍÀE5â¸ÏJEPÏÃäC;j¿ËçnIVÅäCÆ»2/ª£-m¡¼4KÏcbuǬÔ(­©_NÎL@ÖÇT:?º©Q$G¦¬>*LÅDn©È".§¥2,´×$>Ÿ¦.!=¯¨Ì/4ɹN:˽amÙ>=µ¶14¿ÀàÜOCûÏRi´Þ'=¥­5:ÌÿSêgW;Y1D°°<-c¿ÅÁÎ=1GÆ·Àà\93Z¹±Í28¶¶;/U¹·ÏC?ÌÑ28±ªl.8¾¼XÞñ8H·»MÝÂ>3PÅ»ÍHOÄÖ8I¶½PRZEW»¾Sbk8;°¦M'>ºÁJWÁw>ͽWGVkúìÂÊ@KÎ~LjÄÓ@QÆÓnÙÕM:>Ö°·D4GÇ»î=TÎàÆÁ>1gºÍSÖÌE6Ô¬Ù+:¼¾Ø×L>dßLKÓÀÇÔn7.Óª½65r½»íCLRVÆ·ÊF=LæÚàÞÏÛD=Ù¹Ô>OËù^÷_ÍÕ;R¶¿D9ZÇÅÌjIó×>>ÉÄÑÜJZÅÝJTÎÉJ>ÕÄ`\Ûôßó?]µÄ26¸®î9DÊÁ[B[aaÁÀ@;Ë¿nuãBE¹¹9;·Å:Kýy»¼G8HÒÉÔÛDJ¿V6®]3QÎonÜßeJw½ÈNEoÊÙ]JCä»ËXÛàU{M?Ô³½P=L|Ë»n:`ÑPIȶ_7kÍZXÊÖ?_½êFèËYMêéÖÂm8P¹Æ<:ǵØJZçV>N¸´D6ÕÆQNÔÍÕç@<ÜÀÏÝ\GhÍÐÛV?eãNÑÌJƵ1*²®:9¿À:E¶ÅCïÌKMÈÎNPLZ¸Ë8é³P.i²Î?WÝôûvígKTÑÂY9ͯñ:GZÑÊVú»N1ųU>ZÑè|ÛBEºÄARïEàµÚLÓÞMTÚÓg]çáÚÒE7ͶúIVzÚWKÌÅAB¿ÉOm}ïÐmOöÙuYõâÛ¾k-Þ¨J/¸Â?ÎÎ7;¾¸pWï_RXsÀ¾C:fÈÉJKÜOɵ?7¿½dHNåÖÚÞD?Á¾INÜþyìçènâÑF5ë±È:BÏÙknY{ÜéÈÓ?CÒÆV;j¼äF¾¸8.賸U4IÍçÉÀNAAE·­F0ÝÉI}ÅûiìoïûjæöOòºÌ:@ÚÒÇÈI4G¿½Õy]yÝ\OJAÊ­¿.-¸®>9ÍÂÏO@rçþÁ×:Ùyn¼O0À´¿ÉEþÚcï|tÞìõoYÕÖGjÌGIÄìBȽ>NµW-Õ¯YAÅK8¾ÂIÚ]<ɹUB_ÓÆ[;Ö¶L8»=@½Ö9ݯå.G³¹G/K·àHÒOà¸;4¿ÉÈÀ/7µÉMjUâÚlÄP3Á·LIIÞ·^4Y´¶8*Á¬V;lÍ¿I5·½+F²ÈÍ|-D°É=[ÙWÔ»H8ÎÌïÏïD<̰F4¹½=^×úË>6¼»eKD¾·<=b]»Î=ÐÑ>_ÏÚÛ~sr\cqÍÇLFËÍIHÕÅ_IËê<ͺJNÍ>>´Â:ÜÌ?Áµ05¸a_¯S4nbïZ-<Á½mWÝÆO-N¯½ÎN(ï¤C)¾·ESËôϸ_-GÁ>2¹§Î:QOMºÄ77IñÖSÙRCÜÒWtÍßJRÐéHÿ¾îCÞÝUÌÆãO/N©Á,<½ºâ@OÉÑR[òýÌï=j¸ÇWhI@çLP«¶/HÇPú?ÑÏG>Þ»éKîQTµÀ-@­{3žW_JI¹Â8LÁ½ÏFEUãÈkVÚÕØSCxÍÃÆ?,S«»7FÔß×OLÞcÓÍLÖÊGNÙÕßø_\ÓßHѾ<<ºÎ>ÌÆYëQK¾¼LDñNFËÃÞØ_JÒ^9Ѻ|llJèÈmUרeëYNÈçCÌËF[ÜhäÒûSYËÇOH÷o`ÁËCÙä4ήe:_ÎÏTAÒ¹ßDMÓÃ\AXíÁÉLøÜO_ÏÒHLÁÓJëØYyÙOZ¼Õ4E¾ÎOÙÏEW¿ÏNLåÒZOuiÖÂaOÚJMÈYIÄÍB^ÁUTÁ?=¯É2íÆOÅÏ<ѼK9L¾º\7_²æ7ÝÈUgíØÍMIÑòUèeݽQ/Pº½ÚKDMôH5ºÃ->¶ÄkáR?Õ¾J>êÝyÊÆE@Ñ`T¸É5á´E9sáÅç=غH7¸C?ÑÖØÑME÷ÆÎ§%#¼·@½°//°´A>éÝZVÎÇPø¼ö?HzºË*8¦µ+O¨m#y¤c*˲A=¿Í9×­J)é°ÓOtqaãí=E³´<=ÇÔHAb½ÀI>ʺb8I¼ºS9KÊÍyÞ÷XêVIÁ½KHȾB/ǬD'ÇžeI¡¸24W¹±M.w²X<¾I6f°ÀCuÒ?BÇÀîR`{iËÃA7Å·O¹Ð,N¯ÇDUtgãç÷Úßê]9?¹¸ROéUTÀÆ>CÏÎ^\éÜÔI8Æ®á5@ŽK=ìÏÞ`NéÍnYd|ÉÝHþ|CͺRAýüêÅÃA-ú¯ÊQËÅ?4÷ÌZϺÐ?:Q¶Ú1?·¹]?HÙÆàKNØÔñßO@ÙÐOÔâBǹLH¾m,O®ÊKXPιë?K^ÕÉVHÕÆóFQÓôRâÁã9Û®=*Ä·iåè>AǺÛ=FÄËFCؾ|?å¾\IÉL8Æ¿NéÂ]JáýJjÍiVí`θO2λLHxkcÍÊDLÄÔT_î_OÊ¿KDÓÕeUW¿ºN:CíÃÏg`ováÚ\ROWÅ»j7a»YFÔoLÏÍ?U¸ã<×Å?A½¾NMðoþ×cDVÇ¿g=g½m:ظQ8ؽZJÌÔNr×çcmÎâMcÏæZõñìÖNCÊÂVLçÁØ?GßÌÎyTaßã`P_¿Ë9W¿FL·¾>=ÈÏRÜYC½ADÉÕoÝaB[»ú7Ê»IHÜÙbKñºÐ>KîÝÙ\TÇÈ?@ÐÇßPmÍYIÍÉRSÚ\BϼQIÈÒAOÆßHqËgGéÞTÛË[P×ÏV=hºÞ5H¼ÃfpÞ^JåÙRçËwHUÍÞQÙ¿hȺçBKß×ïÛ}F[ÒþéÜPêËNFáÈÏ^DOÐôXÊâCÛÃEF¼É@W×ëohÙãJòËMPÆÈYANÖÍäþ_NϾL<îÜZǾ@A¿ÏJzÚZ{ÓßäVIÚÕDNº·?2ÜÂkçåFüÅJL»Ê=î½?:ÆÅb÷ÞDA¼¾>\ÈHM¿ÆFFÆã?ɽCBÏã\ÎàSÞeLÚ|[½ÉøÉÔfOiÅßEîÎ]_àXMÎÆ\LvØ÷aßÛLMÇÌIPÙÝ÷k÷ÓpDWÇÒKVãÓ×{÷aP{ánãÐTEßÓkø{VnÚ]gÀÌFLÜßrQ^½ÌúÌlhèâ`PÚÐejïehâß~VnÜwè^NÕçVÝÜklæã|kgÞÞV]êêîöt|ÒÙIKÐÔYdÓÛNQáúáÖPNÞâwïfUãËrReïÞ]aÌæLaÜÜaQÊÓDëÏVæÖ\oÎùSîlYÙÛiojmäà}{ùoîÛélì\FÖ½m;S¿ÜMÓÍUStmßÒnNnÏßo÷^V_äÑ`[étÞÏíA?È¿T@ùÅ^IÍÈNNÍÑl__ø]ß¿Z?ÎÊFh¾[>ÔÑJrÊæ{`KæÍôxûnWgÌÒm]XéÖNKÒÖOýÎQ]ÉbMØÚbeôèôZOðÌÚñèUHãÈöY|çrlõyÿõ[]ÜÛo~zJMÉÃK?ÚÈâÿèMH¾Ñ3ì¯^5ÝÀXJ[×¾ÛCnÉySTYÂÍ:Ò¬M$O£°)-´Á;º°/3®¼2F¿Ò>K¸ÅMpv_`rÉËL>m»u2Á«1%¶¥L/ÚÃFEǾU=é¿RGÎÒqSMÆ¿K?_È¿bBïÁå;I½ÁCGÁÃD=ØÅpQaÍÊXNfgõÛoWÊÈDGÉÇC>¹¹23¶³:6¾¶VYÆOOÄÉG=Ï¿WMcwák{Íîä¾ËbJìÃkIlzçÖPC¿®C(Û®`8ÞÅYjêTξD1Í®Ó@hÏA2R»µÀZ??äÈKEËÂ]@ù½ËE>î¿Ó^x^GÕ²æ2MÁÆàB=î½Ï?JÂÄNMÈÒDGÝËÔPCì½ÔL~M@½¼D>[ϾäCXöeäËóGÕ¾H;×ÍYhÓÞPUïr~ìáìKKÒËOJ½À4<·Ã?cÉYFÚ¿qEcõ{Úá`PmÉïJßÏMQ¿Ë>KÖæãâdfìÓØK?oËëXèÏÞWUhUÌ´M)V¦µ'+¯ªô1:οÊK7жN>ÇÁ92·©`+A¯º?_ø;Ñ¿1@¦°-2¾¸ê@A\ǽU9aÁÐRUÞ×sjÖì=JºÀFG}jñËùMÞÈdCRÞÓác]Zá¿Ñ;>ÈÅìûEN¾äGÏu<Û³×?}ü>å¶l7Û·O:ؾÍrEJÖÚfÖîEÏ´D,ѲéYäOKãÙWYÉÌVXsün\ÐË[ØÀ^?NÏÁX7û±÷1ì¶ÜFUøñ}|ÛlTÖàKRÎÃ`@ZÇÇPCùÉã@S¼Ç@AÒÊsJM»ºCEöiÒËIDÀ¾D=ÏËOaÙúétH]ÁÓC[ÌyAM¼¼GEáëimÔÌUMâjVÚÖ\^íâÑèKI^ÖÓÞôMXÌôRÌÏEKÈÌQöÐbdî~ülMLÓÌx}í|QfÅP<ýOKéånúbeÞÙÜ}QLßÃûGòÍaTþwìÎàJFbÀ»M<éÂäESÝËÊVI_ÓÔFS¾ÈMXØWRÄË>N¸×4E»¼TEaÒÍú\fé^VÊÛDá½N6˲V7×»OBÌÕRÿácgë|kÜÛi_fÞÜPQÚÐZ@Õ¾CCÃÏNJcÄÍMYâ\aÏáSN`ÅÄIEÍÎOZ×ÏÿNdýuÓìhÎrBkÌèõÜZTÚUGÁÃ=U·×8Q·É7D¿ÍV^ùût_tÔÝQTÎÈP@οJAäÎõ[åßüÚO=[ÇÈTLØÏÛRDwÄË>;¿µe;KÂÉELÇÉRNépaÎÏ\_SMÛÎÛßZAOÄÁS>ZÊÏ^\ßn[èïoicíÝÙóLLèÊo@ܾWIÕÒH]ºd4ñºåBoÇûMsámãêRfÒâgÞmUáøgèürmjôþzÓßWküäÕ_WßáocïÏßsî_ZyÙÝ]èÎgKuÎè_kííqìgYÕÜUýÚôMMÄÅKXÑëViÖè`YVÚÏkgÞýYÔÑOUÞÌ]>à½q;`¼ØXìmRSÉÁEHÌçgèzQNÓ¿ÔTMýÖsfçàå[]Øû[wôñü|ÿý|þÿdæ×bQYÕÄìKVíùÿÜ×ìJFÓÄxNtÐçSVÒÙIìÂéJNÙÎøbXYÒË^VèîcsåñqpzqlÚÐ[KÛÊ÷_sõñ_UßÐidÔäFTÈØVõÙ`[úxåÚügçàPQÞßëîhbfÓÄsEâÃO=ÛÄé[[ôäfùÙyVñÖWMÜÔ_XÜÓ^[ïsíÞñdVtÚñ[hØÛ]YÜÚ\YïÜîkxõ\cÞew×n\gìéùå_OßÌdN{î]üÛ|ýèibåÞeaèôdòØãxoVbÚúlÚâLLÐÈõHOÇØ?OÇÉNL×êiîciÖÕe^éjUàÒ`]æaOåÌ}WüïybXðêaíåjbiêâïc`àèüðZYyêÖÛbYÛÏ`YýüþnàÕ^NèÖPS×ÑßWLyÙä}s^_ããuïÔØTLéßXîÈåRóØ\RÜÒdYírZëßjöà_PuÎÓQMÛÚ[^ó÷ò}`\dÌËLMßáñ~~p_iváÙk]óì^^ßâw~ýübaÖÕY\ÝÕåMMÛÖhaíèmgsæßwïâjeúîùnîàzowuÜÛ]Yw|{ùyÿödoáölwÿxçÝ_TÒËSOèofÏÊdK÷Öxb_kíñé}_yîåã\[ï}ñçýyüúbdìï\cÏàPnßöhiøðÜæX[öÿjêÝ|ddläø\ñÍàFZÈñRyÓÖQTææéh\üõmçÙogë~sÞâZ^ÚÚf`ñîsùôe^eèÚîhbw÷wùz÷æc^è{]îÞnlÿþýfcøÝëcvëù~ðôziïÐædqize\ÜÜ[Ymãßzçï]}ójéãwõjSaäÙÝf[kxü~{øríÝvjyoæäjd{îe\îêhøäøòùvîïeaãØaTÚÙVeâ÷|mzñ|ü`mÖdSÝíS`ßäeûèfhöülâÚ^YôùõéXVéàíyðì_mõôë\_æ}nâãútmÞæXgýyñó÷^_ÛëYnêyéÙhXáÿYùî÷ÿ|õ_g׿WêÏ^MiÛÚwcæÝY[×Ýqoxwiéò\}óqïñ~þ{ôäûjÚÔ^UîßyuÝßXYßÜncö_R{íþìma~øvsëñViÐÝ^a~~þ~|÷fiçýráém|öfhãßôym÷áo^rèÞrcþyèw]èãzqåÚmgýûèth÷ìíómfòò{|n|þ÷ìme|ì|YbßßoZçÔj\}~uélZãÝxxýàÞcWfìåùwøz~ôiîØýk~pq~~üwmþÿ}ùknïøñúióóiýtoürp{æq_ö}mnìÚè[aÕíWjìè`XéÝb`éûjüùsvrqæs\ÞÚ~_\Ö×Taáq_zé}jûùmâÑsNe×ÚýlhuërXoÝénZlÐîQöàxúqã×n`ñàåe_ßãoðk]~úyû}ÿþ~þ~~ÿ~~þ}þ~}ùlqÙÞjyéyuéc^ßúYbéÔß]]êßa\ëv`oþæï\\ïåtgèâmz÷v÷yÿö_nàò~toùovßæ_nÝ{jïn÷ázjmuóðýüíüoØ×[nâjs~éæ_vèkuzmüõïx_kúýwmý~rswßûYzótùþmi{÷óåíxúzüýmßÜgeåêm|ûüîõg_üåò{ûzm|ý~þ{ñò}tjõèz~üzïòxùvlóh\çÞþzüúg_~íýóìlüìyznn\z×smô{ývéj[áÝçaXù{Þ×[\ùléÝlgùzýëàè]`ßÙáiaûýumöëcfüäçeèÞiyìôlg{æÝn_÷yøwWnèÞÚ^[ë~oàá^Yöä|lwpzçãl[îßonózoãßzkúïwèëfnòéc\çîmùõêñbgøî|dhoæâZdÝîmnøî~ûopõ`cðvöìkjxíßîdgòxlúþzõï~}útzóútòó[^óêëlmö|}ü{þûrùèÿos}ïô|}øîÿwêyd|ú{þüzýòúæùcùýy÷rèßÿos~þ|öð÷daùýyùyû~wêtdûû}íó_mä}w÷z}ôóôæý]óÞx}}l{ôïþ}þ{ñ}pøzýýsáëdòìlt~þþzî÷kÿüxòg^ûý{úxñîljßÙsdz}rqþöh_vééucuâyméwwù~îùzþxayØîbxéèrnþ{èêvþûxöïýýqqüqpþîùfpú|ý}üxlìçhgèælf}ùyýùg~ßúrçâ^Xíîyüqmoðãð|ý{÷îÿ|ü|þþ|úyüúlàÝmcaãÛoz÷{qvî÷roÿyløíÿ}þ}ÿÿ~þ}ÿýlhþúñî_kã}w÷yýýy÷o_äÜný}ûÞ_[âobøuæænýûyýüqpøîödoê{}|küúréèiyáãðptü|÷ï÷f_óìuñï{òÿqûÿ|ü{öëj\÷êflø|þ}ý|þ÷ciï{}ü{üz÷öq|û|ý~~þ}~lxèd`æñcwçñ{xyõroîëëtv÷qåènvoíãomõû{k{Þx^ýùmtùyøêl{âûvúùenégmé~x÷|pÿblÛínck׿hôrnûzõj^~÷u÷|wétcùþ|ý}úhjúþ}uo|çëqo{äâyotþýzïó|þ|óð}~þÿ|øîýzúym~únöêøohtôzxèodíùéñbûü~ë~|ü|þÿ~ÿþ{û||ófrã~yýðãtißÞ}~þ~ýxèèguàøkúþ{ü|þ~ÿþ{ôïüïóenìðneëáyou~üzúzùèhkÛëdvüzöïúxúükýðxv{~xæçoÿûzü}~þ}þþ|ûxmÿÿ}úpüùm|ú{ý~~ý|ü~{òwuûnzùzý~}ü{ùñikáêpþý~roñîulõõnõ÷oþý|þþ|ü}zéêy~û{þûmxÿwèf^ízýì~ÿyèæswø~oåÜeYqñþÿ}ýým}ðó|hýìývo}ý}þ}ûtp||msÛãhûúxù{ýÿ{ðò|ÿþ}þ~~þ}þýqq~úwnýwn~ÿòò|}ý~mi{ïéì^Yìá||ñòþz÷ïûzû}{îùmyóñûzüýrst|óÿ|ý}þÿ~þ~~ÿ~þ~~ûsoþþ~~þ~}ïô{þ}ýyn|ûyùîûzû|~øoðàÿyù|}ùï÷so}þýyn|û{úïöpæÝeiè|{úzü}~ý{ùvnýuzñ~|ü}|öïýso~øpèÞoüéûkaÝÚmÿúxðòýgnêþxîô}þ~þ~ÿývÿèõ_ÿÛshàëqþý~rpüývoxï}q÷klî|øí{ÿþ~þ{ôðýqoõïýroþý|ü|ýÿou~íé|üukêøiüüzü}ÿÿ~ÿ~ÿ~ÿ~ÿÿ}ýym~ùgjø~zïò|þ~~ýyïóz÷mtëõóúyü~}ý~}úroûroüÿ}~ððnqü~~þ}þ~}ûopï}qû~~þ~þ~þ}þýyôf[ÝÙn|øxüüso~ÿý{üükþôïëu|ý÷ðùïúyû~{îóoüó}{û~uáìdú}|ôfãêZòìoðlkï}{ùpoü~}ûy÷ízóúlêîoûþ}þ~ýyòýrûii÷ÿzù{{çïmlkwø|puuoþý{ü|~úsüðt|û{ý}ÿþ|ôïþprÿý|þüs|óþ{ÿó}rüÿ~ÿÿþ{óüqþý|ý~}ûxnzúzþùkýäü|vnù{þüsçìktszú{ý~}ýz÷îþ|ý}ÿÿ~ÿÿ~ÿþ|ûwmü}}ödhòòó}ýxn~}òðxïózús{ñ~{ùzþ÷drâûxû~|ýûiúãòõý|ý~þ{ørewùþlmðüzüþsnóï|ý{÷îÿ~~ûíýyïñzýþs~òþtéø_ÞÙqûw}ç~yù{þûroý~~üorýüuo}ý}þ~~ÿ~~þ~~þ{÷î~|ùszñÿ|ü}~ürnóï}~þ~þ~þ}þþotü~~þ~}üwmúíþ}þ~~þ~}ûvn|ü}|ôï}}ý|ý}}ïô{þþ}þÿ}ý}ÿûmzìþ{ü|þþ}þ~}ûuxñþ{ü|ý~}ïô{þ}þ}ÿûpýý}ætaûÿ{öjoð}|ü|þþ}þþ{õïþ|ýýqpýÿ~ÿÿÿ}úrpþt~óüq~ö{åòkþöðvnù}}ý}þ~~þ|ü}|ðzzíþ{ûzû|~ùoïèr|ùxùxn|ý~~ý}}óÿrýý{ýþr}ðy~økÿïüúanêozøyüÿ|ü}|ñóøïþzùxú~uâþdëõkvþ|ýýtèêj}÷vúþtâàgnïz~ü{ü}~ûqpû|úîùto|ý~~þ~|ñò~}þütêÞþyù{þþ~ÿý{ü~yïnoêq}øuñþ}{nxø{våúcúûyû}~þÿ|úxóè\_è|yøyýÿ}ý|þüorü}üroú{úí~ýëyjíÿb}úyùyû~xçzlëýxøzþþ|ü|þûoxöþõÿ{úoqýÿ~~üvnþÿÿ}jîäaaó}zïóÿ|ýþorû}}üyóîrzó÷ïûpr|ðò}~þ~ÿ~ÿ~þ~ÿþ{öïÿ|ý}~ýxmþùiòÞöirõþ{ûzü~yïmiïpnõw÷í{÷î~|ýÿto~ïó}~þÿ}ý~{ïzuûuççyúvyù{þþ~~üvn~ü|þþ{õïÿ}ý}ÿÿ~ÿ~~þ}þÿ|ïòzûwnþþ~þ}ûuo{ùz|ín}ßüxûüíþ|ü|ý{÷îþ|ý}ÿÿ~ÿ~ÿ~~ÿ~ÿ~ÿþ}ûzýûl÷úiöúxú|ÿý|ý~}únpïz|÷q~ý}ÿ~üvïïjzøyü~~þ~ÿ~~ÿ~ÿÿ~ÿ~~ÿ~þ~~ýz÷÷r{û|ÿýzú|wäòiùýzú{ý~|øha{ú{~ôýrþý|ý}þ~ÿþ}ûyúìptëürup÷óu}ü~|ùïû{þüun~ý|ý}ÿüorüÿ}ý~}úvozýûpñáùnpñÿuëptê|}ûyòünïìjnõôòþ|ý~}ýþotü~~~ýumóîypoé~^åêg÷ovëüõtsè|iîîopÿÿ~ÿ}ûtný}ý}|ótöödxöxüÿ|ý~zòüoòï|~þþqqü~}þ}þ~~ýzöî~}þ}ýzõïþ~|öùp~üzôï}yêîo|û{þýzõítwñý{üýnyíüyú||önøãdráx{ùyü~~þ~ÿÿ~~þ|ý~zñuiüý{û|þþzôï~~ÿÿ~~úmuúræîl}ÿîxs~húövú~~ÿüuxñþ|ü}ÿÿ~ÿ~~ÿÿ~þ}ÿüpqü~~þ}ý{ùîü{ý~}úwn|þýxtðþzíùýzmôïz|õïþ|ý}ÿÿ~ÿ~ÿÿ~ÿÿ~þ}þÿ|ññ|~þ}þ~~ÿ~~ÿ~þ~~üto~üzýýsøö~úr}üyð}sý~üjféæqoÿþ~þ~~þ}ÿüorúzöî~|ý}~üun~üyöïý|ýÿ|úvlìé}~~ûunýt{ð||úyûþuêzbûumø|~ý}þ~~ÿ~ÿÿ~ÿ~~ÿ~þ~~ý{øîü{ýýïïfqäütõ{xëzcþùyüþwo{ùyüýsçëj}ùyü~}ý}}ðò{ÿý{û|}õcaøþ{û|þÿ~þ~ÿÿ~ÿÿ~þ}þþ{óûqþý|ý~~ÿ~~þ~~üvo|òümïìfëÝknõnrý~}þ~}ûvvñý{û{û|~øküët{ù{qvì÷hòäz{úzýþ{øïüzü}|ïó{üzú{xâykëwwôpmòølììoýý{ü|ý~{òÿqû~|ùsyóý{þûmuúsæímõrþë|þ|øöp~ý|üzöøq~ü|ý~~ÿ~ÿ~~ÿ~ÿ~ÿÿ~ÿ~ÿÿ~þ~þ~}ûvpyù|väñjøw~ð|üyvùüjþïnuòíqoòv{ùyú||í}epãïjòúnù~}ý}þ~~ÿ~ÿ~~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~þ}þýqpýûs{òÿ|ý}þ~ÿ~ÿþ{óï}~þ~ÿ~þ{öîÿ|ý~~þ~~üso~ü|~òò~yõï}õûpýþ}ý|ûooï|rüÿþqqû~}ý}þÿ{òð|ÿÿ~þ{òï{þÿ|ùq}ó}únzáødþèqmîò}ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~þ~ÿýzòïyññ{þ|ôï|~ý}ý|þÿzîøl{ùzýünxíùsp{û|þýzõïþ~rpú~zïó}þ|úxøéhïØ{vònþñ|~ý{ü~{òwróÿ|ý~~þþzïõkÿþ|÷jøâznx~ý}ÿÿ~ÿ~ÿ~ÿÿ~ÿ~ÿÿ~þ~þþ|úxûûmßê_øõvzzò~{û|þþ{÷ïúro~ý|ý~~þ{úzþö`må|~zjëìoýýyñð}rpýúoöé||û|ý~~ý|û{~÷jùâ{zùyüÿsoý÷kûêpü}kúuxð{óïyþþ}þ~ÿ~ÿÿ~þ}þþzð~nìùqîylýþ}þÿ}ý~{òþsþ~ö{h|êtqêýzû{úsûéýntý|ùîþ~}ûîü{ý}ÿþ~ÿþ}ý~}ùrüævlû|üym}ü|þ~ÿ~~þ|üzm|ü{úunÿþ}þ~ÿ~~ÿ~þ}ý~{ömpèxkû~}ý}þ~~ý{û{}ôeuã|yøzþý{þûkûäýyú{ý~~ý|ý}|ñ|tþÿýoø÷ýÉÙGýéBÔ¸X>tóæÆÃH-[¯ÆQÍÄC3\Í\×¹ÌB;MȶÎ2;º¹]?FãÈáMPÕÑÿÝXAãÑR×ß@ιREÁå,E¯ÄKULÖ¹Û@I`ÏÅ]HÛÆæJRÛôVóÃÔ:ó­E)Ì·jãÞ??̹Ð>BÈÈHAâ¿ï?ú½mFÊU6ϾPøÂiJæêK^ÌrUí_Öº\2Þ¹QEüzdËÂIGÆÓS]òkQʽM@ÛÏûRPºP9DyÇÌnaokáÐaOPRȹò7W¼cDØôM×ÌAL¹Ð<åÀD>¿½TMòzíÑlAOžq>W½ë9á¸V7ñ¾cHÏÑOpÔã^_ÏâM_ÖßdtóìØQ?οYLèÄÕ?DßÌÏûW_âàZM\ÃÇ:L¿JH¹»A;ËÍPÙ_@ƺH@ËÒeß`AX¼Ù8Ô¸LBß×mLu»Ë?LôäÕ_RÇÄC>ÝÆØM_Ë^GÐÈXTæ]DÙ»^GËÏCKÆÒJiÉnFëÝOãÉgOàÐY>`»Ø6C½ÁdmágJþØVðÍøIPÌÙRßÀù?ÌËuûZíêC[»¿D?ËÑUíîO`ìSÞ½ÝDKçÐßxzq|\OÑÌM_ËdIßËOEÏÌWZÊÉCBË{Fȼ]BTÎÃU@çÃÓILÑÜPeØêï\LÜËfMÜËIBËÃmUWWÙ¼ÜSºÅ=KÜ\ÎÄWMîÚKDľKAÑÏPÝÌLNÎÎo^^þÓßXfÊ[5ΰQ>ÔâQfê}{ÏÌPFwëwýëÚpQßÍSGþÑåLݶí2H¿ËPüßFY¿ÎR[æÛlYÚÐVPßÜfPfábØÆMBßÎÞZ]ÉàÄÏHbÜ\mÖäñSIÜÔFL»µF1õÁnêÛGiÃNH½Æ>i¼E9ÊÃjþÚF?¼»>RÅLLÂÅMEË×AÌ»D>ÕçSÒÚXÚüMàï_¿ÆN°Ë:äÇatNI¿½?8ȹKGÂÕUßa`ÔXóÆOJØ}οI<ÔÄwXòì~Ñâ@MÇÏomfrïÒÍL=Ú»z=ãÂ^Xä^gÙô{ñ_õåZ]ÓÓIKÉËPVÙîaÜaGÏÃRRÞMQ¿ÏJñÎTPÇÊJMÓÛõêJLÓÖbsëe^kßáQ^ÄÑ@OËöxÖKJÌsLÅÌEîÍCA×ÀÇR7DÂÂíéãQRôPê¿VHÍ]C¿¸?3êºÖ@eÆu@GÁ»LCÚßqÖkEhÇÐöQIÏÄTL÷uìÉv?dÑåå_OáÌïYZfôÚÓöFEÌÃONîòÕÞOYØÙ]Rnåßê`YÓÂYCÍÍBJØÝgÑÇJ;cÉÎtQ^É×FvÍ_YÚ^HÒÄbNüÕ÷ZÞÒTLÊÊHKÛÝs{âÏûDRÆÍLNî×ÙùõgQbîsñÔ\DïÏþîïT`Û__ÃËHJÜÙsPZ¾Ä>CÚÚéôe~ØîOnÌcLë÷oÑþJãÊZJíÎöWg~ÝßPTÌÊ[OåïOmÔsUêÎnQíß÷aZûf[îÞÙÚ_MláèÐgAéÂWIÒÓoeaínO_ÍÅxK[íÙuPîØoæÚc^}þþ{úûèÕTB̾H@Û×fiîÙÝYRååfÍËMKjsçlvÌãQbíïý[NÔ¿]EÚÜIPÉÈ_VñírÜèPìËäjcU\ÙÏàcYbRlÂÄwCDÝÌnh~_ÝÏsNOÙÏ_\úbiÑÝ^ÜÞIJÍÇ]Wßâ\RóÒß\^ÏóDîÉONÏäMZÙÜkæãwíIKÅÍSZàÕðuúmpghñîóötîüZÞÎ\Uíïþs_ëÕîcdqìþhÛÖ`Xh×ÖUn×]ñÝNê¿d=uÌztçáaMÞÏcjëbfíèèZgÕqùtNÝÝVåÙneêß~bdÙÝV^úííswøÕ×KJÒÑX`Õ×VOæøèÑTKçêoèmSíÊåS]ìÜgaÍØM]רtSËÌDöÍXçÕY`ÏîSîq[ÕÔnpzx÷ïúzûyõÝãjódHݽû;O¿ÙMØÏSUópéÑzNkÐÝûî^TdÞÑgZõméÓàG>ξ[?kÈdJÓÉRJÓÌ÷^[ø^õ¿v?ÖÇFV¾m<ãÍOdÊäihMéÊõnøtV]ÌÑhi^æÐRHÛÒUzÍWVËüKèÚ^]}ïì]OîÌÙ~ñ\IíÈîWlíùwøzøä_XàÚ÷õlJMÌÁL<âÆÞóÞSGÂË6g¯ñ4ô¾_IYÛ¾ÓE^ÊñPUVÅÊ:é¬a$?¤­++¹½<À¯4/¯¶3AÁÏ?G¹ÀLlú]`lÊÈP>Z½ß3É©8#½¤_/ä¿IAÌÀZ=ÿ¾]DÓÏ|WLÊ¿J>[ÎÁjArÃÛ;C¾¾GCÆÂG;âÂõSfÎÉcN^oøß÷WÒÉHEÌÅG;¾¸51¸¯?3ŵ];DtÄÆ^GëÉNDº¶4/½º_îá[`LF̹î9NÄÖqíIM·»89ÑØúØNKÃË>S·Å5=´»?MÓ\TÇËIXÌñ\Ûà]kùkíw]ÑÝ@[ÈPEË¿ñP~Ù_OÕ¾^8ΰD/¾¶ANÆQJÅÅK<Ù¾ZIkñçròÍß>?Áº]EdãoÿÓìQàÙ¾´I6Û»ÝFeÓ[X×ÚYYËÁ_>PÓ÷MͼoGSfÒË^?d¾å>Û¹R=ØÎ`ÚÄY8y»ÎxL=ì½Ë`JôÆoI_nïÒXCÅ®O(l­ñ8âÄ\mæQÔ¾H0Û®È@ZÌI1I½´¾_?=÷ÃMBÍÁnAh¼ÉG>wÁÐ`r]Eß²Ï3HÂÅÚFÛÊxMJ¿¹GEö^ÚÉNEûL<×ÉVjÙùâùL\ÇÐFVÊêBI¿»LDÛßcrÔÎXMòfWÚÓ_[uäÎæKH^ÔÏßóNSÌèOÎËHIÊÊPyÐ[\ìttrNNÎÌlþç|RcÇZ;̽NEüäyóhbߨçeSKöÁçF}ÍhWús~ÎÚIE^ƼQ;ýÅÞFKçÊÊUG[×ÑGM¿ÈNZ×aQÉÈ>H¸Î4A½»ZAYÒÏügmø`YÍ×Gó¼Y3Õ°i7ë»Q>ÎÑOó×a]ï|jãÝþ_cÛÙUTÜÎiAÞ½I@ÅÌPM^ÈÈMRÙh]ÒÝSPbÉÃODÏÊRTÚÍðL]ür×ád×üC[Íâ}ß[RÚ[EÆ¿?J·Ì8LºÆ7>¿È[_yþ|fx×ÝQOÏÅ\?Ô½P?ýÏíZãØõØSRÊÊgTïkXïëðpZõ××òKKêÌyAë½bGÙÎJS»ö4eºÚ?`ÅêNiçnâáR]ÑÝlÙùQñírî|}mh÷w~ÓåTgtöÖkWÞÛp\iÓÛtó\WlâÜbðÎnJkÍàhiíÝt÷oXØÙSiÛïOLÉÂMPÐìUiÜëbZVßÑ_Wã÷R×ÎPUäÌf=ï½ñIÿkF>FOÝJ?XÚÌÃÛTOiRéãÕÍÅÒÜ^MNX˹¸Æ`SH?=59=A>¹¶ÂbC=X²¶²ÊíSB2097R½²¯¼ßF=DHf^޵¼ÍL:>V¿º²ºÅ?I8;99>½®¯ºã<=O^dwûÓ¹¹ÍE;>ß¾ÂÄkG7825=Ó¸®³ÜH6:ZoéwÍÆ¾¾R8=ݾµ¿ÆÔhNJdÀ³¶ËA7X½¿^R\ËÌóHÓËÁÇÙÖK72I̸Á?.<ëÃã<:ϱ¿s3.=X¾ÆÊÈ·®À`8GÍÊÏH8@÷ÍïKF^¿¿íIÿ=M=?ZoÌ¿¯µÚ×Í»°¸LRH4CTãȲ°¼oG?>=3:Z½¸¼ß;BM]¿¿¿ÌÅѽ»Ó:/4í·ÄÛÇÈÑR1.>XÙÁÅÁë3+0FҾθ³±¾T,/QSεºë?6Gå÷<;Z¯³M.)/H˽®±°¿ßB08?Ï­¥±<*-`ÏZ:m­«¿4&-6ÞÁ­¬¬¾C71Béɼ¬©·E(,8\JǬ¨·5!%BÕÁ»¨©±Ó./=NÙ¶¬¯²`/+9;@R³©À?&-CÑÆZÿÃÙV^fwÎܽ¹¾×ÐÓ?6NÓ˺T81:Fß®¿í>4:9;MãÁ¸´¾¿SJOLJïÀ»ÌU/JÓ¾ÇÓhS=Eo^TVÀº·ç9>È»ÁÇÂm`B@==,-L´®±ÌÿRTÎÌÒÆ·¾È5&*:kÁ¼¨«²\70)*?É­¼\Vód]ûñµ¼Þ`-&%:߸±¬²Ñ7509kÃÃÎZLiÍkZ¼ÆßÕ»¾Ù.&-6Xðµ¾KJ÷ÃoAh¶¿N>:GONF9ƸÉCGN¼ÁÃÈ´½ÚAO;;BÚ¾ÇÏĹÈE7<Á¬®µÅI7*(/+1Û¨¥±Ã½áAiÏÙLP_R-"9½¨·»»ª­ß66530.0>\h÷ÓǾ«¬ªÃ\;E>RZE./KÍÙbP¼··÷ͽµÆÏZ76:::C9Cûº¯¯¿Í×ÊÌwMI\1)%;ŸÊɬ§®Ë\ÞÎT?=÷Ç¿?/+FËÇÂÀÁÏhJL\^8í·ª´ÝDOÍR-/Ü«¬¸X??IWZEJkÙßhF<**0V»°½ÙdJ?m¶©¤¬¹È¼È8').OÝÙͺÉZ5=`XI;FL:3<`ÈÃó羪 ¢¾oÍÆÓ;/X¼¼Ã¾¶ÂR?K÷VTï·¾ßI\û^çÓ¾ÈÜM>7:mÍó󹳸çBOµµç9>D6-+/8ÿòº´Ñã÷ÃÊËsdÍïw93R¼¶¸ÊËíÇû:,=ïÍÔB>9.*>G×Ó»®¦¶E7÷\ÃÀÆk¾»·º²¾¼ÿ<+-1OG<@hÈļÁ®¦¤­ººËI-**..1:N>J̯©£§­¼Ö>:-*-GG:7<ßåWH´·µÆ×ÞÏ<:ӏůÄÎãR71:>H[ëRßÞÌ÷»±Ã`B?:NIPÙ¹ÏíII>77TнÄ_8JK×̹´«´ÃP@@>88kƽ¹¿ÛÙÊǼ´­¸Ê\7.8BENkÕçL30FE:6w˲µÃÙßkͬ§­²ËB>6*.:@bºµ½ÊÕÛÄË×ÞÎX;)*6ßMPPÔ÷ëDdZÛÑwK\{oÛïPÿǸÁÑNVEIÿÂÂÓÖº¶ÍVIQçÛ^×ÛÑÅË\FAH^ZRÛÃÍëûÿÛX3/0^<@BÌãÎÕ¿­­¸´©¬µß81GNHMïÀ´¯¹khf`MQF;CTkSDh½ºÆºÍWIY@<*(7]5SC`﬿¶Á³¸«¸Ñç¾T@09?TE@ïÓÑʵ¬®×J[ÓQ3(5>F4('6,17ί¬°ª¦­ÄßLE<1/A<24O@Ldº¬­ëGFK5::C纭®¯­²¾ÅÌçKC=A7?>VKȸ¿ÐÎÝk>34BL:APǺ³»¯¯¼këO?/.+.76<^Æ´²¬®±¸ºÑ4..*%+,8GÛ½¢¤¡¡¥©·ÿ.345+5`¼½Á¶«±Â½·Ãf;52/.9Xͼ´¯³ÊLãïX8>KïFw9ÿÁÉDÊÄÃRPFS?4;ßÕI..GÙ;EÕ©­º»µ´ÏkëãKFGIGSÎiײ©¯´·ºÉ?95409<>ëÄÊÿTïÏ<.8?1,/@wÃWÛ±«¯¬¸»Åh498<8XØ¿ÎËÑÓçÌÍ÷\»¸ÄÑÅȽƾʽ¼ÂÑÑdÔÆÞçhhdÏÞL;JÛó;6UÙ;87KPG8T`?'1M÷H:O°²Áλ¯¯»ÕËÆÿD<5?9;>`éÖJJĵ¼ÙÆ«¬´É·¹ÃmÕCAZÍ`GD÷TC6HNM_ÌÍ{×Ýû>=8JQI8Cëë×ÈÊãoBãs<,8d»IHÝ´¾dVÕÏ¿ËMSÌÍ^DIVÕZBOÛ^TIXSÙM9=OEAADdÓÃÆÈº­²¸»¼ÑV99=2,1U;18K9-3Á¹×Ë­§´È½ÄëÜ×UFoÃÅTPƼXGOãH;+-8Mbd»²ª¨·Ã¶°Ý>=F=-(-4?Lú¶®©²¹ÁÉTDCK=<9>ïÑooغÓ;.HC-*=O;:É®¯Ö½©«¾Ï½¼ÝC>Ad>HoÁÎØÇ¸ÁÕßwÓïJIkëZKDhÛZ>OTdF>:HSkYRZͼÙGïÒÿL=JÊÅB7k½Ð<:ãÂØHTs¾¹½kº¬§°À½¯ÂR\ÇÚJHáÙÚERoÌç×ãwÛ¾¿XQÈÁY9@TP546oC;5ÊÎÓo¯°ÄNUÏí?4KÎÓÏÊ»³±ÀhëÍÌHEIßho[¼Â¾ÏÆA?8ã?7-Ïýٵ±¬×óKíOMJ\Z[ϲ¶Oi»¼;-.6;01;\ý¾Ë±®¼íd^ÿ;@N^EZ»®ÃáÌ´¸R=^TDQ=>θÍ=3ûÝ:OȲÄS\¼¶ÛãéãO`A25>CXGKïÉÕÊÖÓÎÃÏZBIPo98w¼L3>¼½32ï²ÔwëÁÌÂÓÉWhëÓkÓNoË¿ÅË¿±¯¾Ôʹ¿\K[ÆÑoMÙë^Z÷SJH@J<2(8?TB^Ù´º½Ó¿ËÏíC15>E;HiÈçÓÈ·¿ÉÐÀëéÉóK=B\Õº¼ÃX\ÞÉ@15WãUI\ÀºwKXfK?8:8ChwXßÀ¹ÖåçßLGFhYm÷À½¾Ä¸¸·Ï{wÕI?=I\^XkĹ¾ÈÎÃÁE5AÞF6;ÑÃÈd¼­±^`Ý×::1@OÕÿÔ̲®«ºË¾ºÕ7-;D=49NOOWsÿíkÈûwYëM`oÅûÍÆ¶¼¿Î»Â»ÓÔ?HD`<37ãZIOÄÊÊÚÅÈ[=fïA6?`QOQw˽¿µÁ»¼ºo>9K5=FO?Tůº¾»ª°ÃXûLRE\?:=×ÍwHßÂÓGBMGMF\JïȼÉÎŵº×Oßç\>DOÛf\N˼ÄÍÃÂÅÏáVH_Õ\CVȼÊÏÙ¾ÁÃówXw\L7?Dh>CGÐÕåWÿÚk<2?Êá9<źÃXϼ°»¿¿ÍãÑß:8NÚb;8ÉÂé:P^ÁÆ×AdýV;U±¼Y;ÙËÏXLAO×\?5åÁShÁ×Û·´ÀwRNI?;7@kÆÄßÛ¼¼ÏMKRA757X^QLYoÝÈÍÎÌÌfR`ÝVTb»ºÆç¹²²Ç×ãÒÏ÷?EsÃhBHÖÅbHK_^VOXFIhÝHIï¾ØsLóhïP\fÚ`hRÛïkMQFJKåïwØÌÉÁÆÍÜ÷ÇËßBLÝÏB?TÇZFS×dSMÏëX{ÃÇÊ^×ËÄûoNÞßÕiTÿÃÉdLiákXGPOïTZïËçÂÆÎNZT\6?CïDGDÍÓÌ׺ÃÁçÕ÷ãihBMïÅÕÕĸµÄÆÄÁ{mdwBhûÂ{wZÒPhJN9<7D5;<ÝÞ¾ÍÈɼÂÏN\X]MPbÝÐÓÊÓÄ×ÎRQAX>K>VKçKÙÑ¿fÝTÕBF?XBã\åKÍÀ¶ÇÅÇÃ×s`ZoßÕÿÎËÂ×ÐÈ¹ÃÆÚ¿çëFçZ`DÙLN>ÞíkLÈÊÍJLNoNOVoëÕÓãÝ˺ÆoNÓÑû7@MÉ[VCÝëÒwÕWëdÎNXé¾dG>kwI>HåÏçfÛËË×{Oãïw?HBçV{mÃͽÕÑ\ÒãÛJ××ËNbܹÊdOÚÃÛOD×¼ûDAfÉ÷E6PçÉK?;ÑÈçANÞ»ïP?ØÍÄëÌß¾¹»ÛdÏ·Í@?ÄÝT?ãÅÐkßçkØÍwIPéã?>VÐmIGÊÏÜMo{ÑéÙOG`ÀÄdJÆÁÛGóÎÙN^éïX`^^L`÷iLTÑ×LCÿ×ïG\ÿéJO\÷SïÒÌãËþÓÏÎËXNVç_PiËÉÍßËÉÏdXGMP^GCNÿßhhÑËÓwÿkmãç^RÚÃÅûÓÆÄÉÜoëãÑ[JBhãïOÛÇÆÝÙwÿwoVOL]wPMÿÖ÷ëÝÊÕØÙãOOX÷NSwÈïïÝ¿Ûs\Óÿ^I^_i^÷ZdwÑhTLûoHBZÝçMBR{hHGLdççdûÙÀÉÍÜÈÍÖT`^ïWXLVVÞk_iÉÓÙwãÿïk`MT\ÚÊØçÑÆÇÎmÛé{X`kãsÇÍÔëÅÃÔsÊÌ×\óëÞoã\ÿXÍËßsÉ¿Äd\ëó]LJIJT`NNdÎãoûÉóLDsVGGççoNëëé]ÿYZNbJABkk^NkÙßiOWk÷SKNoÙÝX×ÊÃí÷ãÌï{`ßOTPÛoóûÃÂÃÕ¾¿ÉÝßÔÊÙíwïÚ×ÎçÛÏÅÒÙh]RóÿkDNTkFNXÛk÷`ë\{sëO`ZïVPRïçïhoßÍÏãdVå×çFLdÍ\DEÛÍ÷L_ÙÄÈ×kã×ÏVDHÙáNChÇÎ÷ïÐËûûëiTXb\Y{ËÐÕϾ¿ÌÚëioXL>DJo\dkÍÓÓÓÕ`Z`ûNBJÿ÷`[óÍÕßßéïoi`[\RUhçããåÊËÎßÛÚßZVPf`sëãóãûoOOX^PNT]hëëãã×ÍÍÙçïkh`ûûÿmßÓÖwóÝÏíh{ÿdm÷ã``éÝkQPkíkZ]ÿß×ãóÿÕÙÿYÿïkN\mç`ÿãÑï÷ãÍÛ÷`hwãwïoÑÊÊ×ÏÈÃÙ^Y_ZNJJW`éçÿïÌÉÓkç×ÏsZhç×ÚïãÔÉÏãXmßÝUM]óoRLPQXk{hiÛÌÓX^çÌÿX^wwíowoÙÞçVsçÝVRT`KWTk]çs{^ã÷çXdóÝwswçããçÝo^\÷ÿ\VVkkk\i`ïo÷WçíÜdïïÍØÓsåïÓÝÑå×éÜëíXûãÍéçïÐÓßóçÕËÏáÛÝ××ÕëçóÓ÷oR{`dM\SXOiX^Rÿb\Nk^fUÿÔÏ÷íÛÓíh_dX^dYMJfëwLVçÛdidï{ãh^P]kû]`ïÑÝÞÛÎÓÑå÷^óïhZoéÓçïçÚÝÕÜëïÞßk^hÛÙóó×Òçowïåëwd^díÿ\Z÷ßëkwïååßÞÝßÓÑáûãÐÛo_o{XNY`VQ`ë÷oß×åûëåÿ^hk^Wkëo^ïÓÝ{oßÿVVd]TTkÿ``ÝÛwoÚ×éikówZdkkd÷{hTfçû_Zkßïb^swwé÷`m×ÖwZ{×ÛíëåÛãÙçóiÿoÿ^fwÞãëçÕÛÛëïûÿûëkhïÝ÷÷ßÌÏÔÛÛßßãh`_dmodioë÷ÿo÷÷åÿokçåëddhwk`R\`fXRVo{hX\oi^hdd`oÿ`^këïmmïí÷dbZ^\\UVVhhooÿÿç÷wkíï÷w÷áÞçåãÝÝÛÖ×ÙÞß×Ûïïçãç÷÷íëãÙÛÝÛÑÑÙãÝÙãçÜÛë÷ãÛáïåáï÷ëãÿ^hwo^^ws`doo_Xsóh]÷ãwZ^ik]X^]^io^VhïsZX`w_XZfww{o{ãÙåwíÙÝhVwíw`kwïÿëïïéÛÝÝçÜÙÙëëÝÙÛãëçÞãëmkÿí÷d`w÷÷ikk{ïëûwoëçïwíãÛáÝßÞçíåßåçãçëóûk÷ë{ik{ïh[`÷÷wbkoÿ`hhowïwkoçíof÷ëûk{wowãã{káÕßdoëíhdkomhii``d`Z^kk^_hwh\bk÷wkhowçëëïßÞÜãßÿçéã÷ûo{oÿmwsÿçëwÿïëëów÷ïïûÿíçßéïïÛßç÷ëá×ßáßÖÕÓÞߨÖãûkÿû÷id^o÷ïiwÿïÿmhkdkhhhhhihhkwkdkmsd``wmofkhïwoh÷ÿohkdd]\_bdhdosïéëëéççí÷÷ÿ÷ïëïóïççëëçíëïç÷wóßé÷ÿéãßéçïçßáëçåãÞçëéçéåëïëãßÝãããáççëëí÷kiwwkkkowowswÿwowoosskooow÷iio{kh`hmk`hkofdddo{oifdhdd_\`b```hmkim÷íïëïïíï÷ÿïãçëÿóçóÿÿÿï÷ïï÷ÿëíïïëçßëëåãíïïççëëãëïïóëéé÷ïççåëëíççãíó÷ïwkhowshhhomhdoÿÿkdk÷oihfkkkhisÿokkûïwowoohfhihoooookww÷{oimhhhokwû÷wûëçç÷÷ãßíïííïïççççéåççïïïçëíÿ÷w÷óïûóëáßßççáßãïïçíïóïïóçÚØÛÛÙÝßãåéïwwÿmdhmÿsoowwsmhfhhkoikkkkooooÿwmhomkfkki``dhfkomomkkkood\^bhb^dkÿûÿïíë÷÷÷÷ïëíïïïïïïïéëéåçí÷÷ïëïóïçëëëïéãçåçééëãë÷÷ççéëéãçåãÞÝßÞßãéçéíÿww÷ÿokwodhmikkokwoo{os÷wmoosokhkswokhook``hmhfhwwwiooûwh`^^^`_diikokhmkkmhkwosvtwm-5.4.7/contrib/vtwmrc/sounds/dedoo.au0100664000015300001300000000752010237645271017244 0ustar callumfid.snd".@dedoo.wavÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁ>E>Mº¾¾¼º¾Å¶.,2/./2+S¬°°­¯°®Í:/0./0.Eů°¯®¯¯°ÿ-00.0/0ÿ®¯¯®°®¯ÿÛ..00-.Ûg¯­°°®¯[ç8-000-ÿÿg­¯°¯¬¼ÿÓ/.20-MÛÿÿ¬¯°¬¶gçÛ./4/0ççg­¬°®¬ÿÿÛÿ-20.ÿÿÿÿ¼¯°­ÿÿÿç[.2.4çÿÿÿ­°¯Áÿçÿç<0/6çÿÿçÿ¯­¾ÿÛÿÿÛ4-8ÛÿÿÛÿÿ­¯ÿÿçgÿÓ.,ÛÛ,4Óg¯­°°­ºgçç./20-ÛÓ[®ªçgªçÿÛçÿçÓ-ÿÛÿÿÿÿÿÿÅÿççÿÿçç:ÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÅÿÿÿÿÿÿçÿ:Ûÿÿÿçÿÿ°ÿÿçÿÿÿÛ.[Ûÿÿççg°¾gççÿÿÛ8/Ûÿÿççÿ¾¯çgçÿÿÿÿ22ÛÿÿÛçÿ°°ÿÿçÿÿÿ42ççÿççÿ°²°ÿÿçÿçE44>çÿçÿ²°²°ÿÿÿÿA462çÿÿÿ¸°¶°ºÿÿçç2882çÛÿç°´¶°Íÿçç28:2EÓÿÿ°²¶´°ÿÿÛ468846ÛgͲ¶¶´´gçA6::86ÛÿͲ¶¶¶²´ÿS6:8::8çÿ¶¶¶´¶¶¼ÿ>::8::8綸¸¶¸¸´ÿ:<<:8<:8¾¸º¸¶¸º´ÿ8><:<>8Û´º¸¶¸¼´º8A><<>>:¸¶¼¸¸º¼¸ç<>A<ÿ¸¼¼ºº¼ºç<>A>>AAÿÿ¼¼¾¼¾¼ÅçgAEAEAEÿÿ¼¾¾¾¼ÅÿÛEEIIEEçÿÓ¾ÉÉÅÅçÛÓIMSMMÿ[SÓÍÓÓÍÓÓÍÿ[g[[[g[[ÍÍÓÍÛççÛçÿÿÿÿÿÿÿÿçÿ[[ÿÿÿÿE4468:8424[ÓÍÛÿÿÓ°°°´´¶²°°¶Í[gÿÿÿ:2468:8644>ÛÍÍÛÿç۰²¶¶¶²°°Í[[ÿççÿ4448::8428ÛÍÓçÿÿº°°²´¶¶´²°´É[gÿÿ[:468:::866<çÍÛÿç¾²²´´¶¶¶´°°Å[[ÿççM446:::866:çÉÍçÿÓ´²²´¶¶¶¶´²´ÁggÿÿA868:::::86:ÿÓÛÿÍ´²´´¶¶¶¶´²²Á[[ÿÿÿ<668::::668ÿÍÓÿÿÁ²²´¶¶¶¶¶¶´´¼gÿÿÿ:88::::::88:ÿÛçÿ¼¶¶¶¸¶¶¶¸¶´´¼ÿgÿç[:88:::<<:8:gÛÛÿ縶¶¸¸¸¸¸¸¶´¶ÛgÿÿE:::<<:<<<<::[ÛÛɸ¸¸¸¸¸¸¸¸¸¸¸¼Íÿÿ<<<<<<:<<<<:<<<<<<<<>><:IÿÛ¼¸ºººº¸¸¸ºººººÅÿS>>>>>><>>>>>>AÿçÛ¼ºººººººº¼ºººÅÿÿM>>>>>>>>>AAA>Eÿ͸º¼¼¼ºººº¼¼¼º¸¾ÿA<>AAA>>>AAAA>>gÛź¼¼¼¼ººº¼¼¼¼ºÁÿÿ>AEEEAAAAAEEA>Ag¾º¼¾¾¾¼¼¼¼¾Á¾¼º¾g>AEIIEAAAEEEEAAgÓ¼¼¾ÁÁ¾¾¾¾¾ÁÁ¾¾ÁÿMAEIIIEEEEIIIEEgÛ¾¾ÁÅÁÁ¾¾¾¾ÁÅž¼ÁMEEIMMIEEEIIMIEEÿ¾¾ÁÉÅÅÁÁÁÁÅÅÅžÁÿIIMMMMMIIIMSMIIMÍÁÅÅÉÅÅÅÅÉÍÍÍÍÉÉÓgS[ggg[[[[[gg[S[ÛÍÍÛÛÛÛÓÓççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿççÿÿçggÿÿgÿÿgÛÛçÛÛççÛÿgÿÿggÿgÿÿÛçÛÛçççÿgÿÿgÿÿÿÿÛççÛçÛçÿÿgÿÿÿggÿÿÛÛççÛçÿÿÿgÿÿggÿÿÿÛçççÛÿÿÿggÿÿgÿÿÿÿÛççÛÿÿÿÿgÿÿÿÿÿÿÿÛÛçÛÛÿÿÿÿgÿÿgÿÿÿÿçÛççÿÿÿÿÿÿÿgÿÿÿÿÿÛçÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÿÿÿÿÿÿÿgÿÿÿÿÿÿçÛÛÿÿÿÿÿÿggÿÿgÿÿÿçÛççÛçÿÿÿgÿÿggÿÿÿÛÛÿÿÛÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿÿÿÿÿÿÿÿÿÿÿÿÿççççÿÿÿÿÿÿÿÿÿÿÿÿçççççÿÿÿÿÿÿÿÿÿÿÿÿççççÿÿÿÿÿÿÿÿÿÿÿÿçççççÿÿÿÿÿÿÿÿÿÿÿççççççÿÿÿÿÿÿÿÿÿÿççççççÿÿÿÿÿÿÿÿÿÿÿçççççççÿÿÿÿÿÿÿÿÿçççççççÿÿÿÿÿÿÿÿÿÿçççççççÿÿÿÿÿÿÿÿÿçççççççÿÿÿÿÿÿÿÿÿççÿçççççÿÿÿÿÿÿÿÿÿçççççççÿÿÿÿÿÿÿÿÿÿççÿçÿçÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççççççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççççççççççÿçççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿçççççÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿççççÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/sounds/startup.wav0100664000015300001300000012016310237645271020043 0ustar callumfidRIFFk WAVEfmt "V"VdataG qpnmkmmonmnnoomnoprqqsrssrvvvwvyz{z{|}€‚‚ƒ„„…††‡‡ˆˆ‰ˆ‰ˆˆ‰ˆˆ‡ˆ‰Š‹‹‹Š‰‰ŠŠ‹‹‹‹‹Œ‹Šˆ†††††„ƒ€~|zyxxxwvutsqpppqqssrrqqqqrrssttssrrsttvwwxxxxyzz||}~~~~~~€‚ƒƒƒƒ…„…††ˆˆ‰ŠŠŠ‰‰‰‰‰ˆˆˆˆˆ‡ˆ‡‡††††‡‡‡‡†††…„ƒƒƒ‚€~}|||{{zzzzyxxwwwxwwvvvvvuuuuuvvwwwwwxxyyyyzzz{{{{|||}}~~€€‚‚‚ƒƒ„„……………†††††††‡‡‡ˆˆ‰‰‰ŠŠŠŠ‹‹‹ŒŒŒŒŒ‹‹‹ŠŠŠ‰‰ˆˆ‡†…„„ƒ‚€~}|{zyxwvvuttssrrrrrqqrrrrrrssttuuvvwwxxxyzz{||}~€‚‚ƒ„…†ˆ‡ˆˆˆ‰ŠŠ‹‹‹ŒŒŒŽŽŽŽŒŒŒ‹‹‹ŠŠ‰‰ˆ‡‡†…„„ƒ‚€~}|{{zzyxxwwvvuuuttsssrrrrrrrrrsssttttuuuvvvvwxxyz{|}~‚ƒ„…‡‡ˆ‰Š‹‹ŒŽ‘’’“““““’’’‘‘ŽŽŒ‹‹Š‰‰ˆ‡†…„ƒ‚€~}|{zzyyxxwwvuutttssssrrrrrrrrrssrssstttuuvwxyyz|}~€ƒ„…†‡ˆŠ‹ŒŽ’’“”••––———————––•””“’’‘Œ‹‰ˆ‡†„ƒ‚€~}|{zyyxwwvuttssrrrqqppoooooooonnnnooopqqrsstuvwyz|}~€‚ƒ…‡ˆŠ‹‘““•–—˜˜™™ššš›ššš™™™˜—–•”“‘Œ‹Šˆ‡…„‚€}|{zyxwvvuttssrrqqqpppoooonnnmmmmlmmmlmmnnopqrtuvxz{}ƒ…‡‰ŠŒŽ‘“•—˜š›œžžŸŸŸŸžžœœš™˜—–”“‘ŽŒ‹‰‡†„ƒ~|{zyxwvutssrqqpoonnnmmmllllkkkkkkjjjjjkklmmnpqrtvxz|~ƒ…‡‰‹‘”•—™›œžŸ ¡¢¢¢¢¢¢¡ Ÿž›š™—•”’‹‰ˆ†„‚}|zyxwvutssrqqpponnmmlkkjjiiihhhhhhhhhiijjklnoqstwy{}€‚…‡‰ŒŽ’”–˜šœŸ ¢¢££¤¤¤¤£¢¡ Ÿ›š˜–”’‘‹‰ˆ†„‚~}{zxwvutssrrqpponnmmlkkjihhggggggggggghhijlmnprtvx{}€ƒ†ˆ‹’”–˜›Ÿ ¡££¤¥¦¦¦¦¥¤£¢ Ÿœš˜–”’Ž‹‰ˆ†„‚}|zyxwvutssrqqpoonnmmllkjjiiihhhgggfgggghijlmoqsuxz}€ƒ†ˆŠ‘”–˜›œž ¡£¤¥¥¦¦¦¦¤¤£¡ ž›™˜–”’ŽŒŠˆ‡…ƒ€~|{yxwvuutssrrqqppoonnmllkjjjiiihhhhiiijjklmoprsvxz}€‚…‡‹’”—™›ž ¡¢£¤¥¥¦¦¥¥¤¤¢¡ ž›™—”’ŽŒŠˆ†„‚~|{zyxwvutssrqqpoonnmmllkkkjjjjiiiiiiiiklmnprtvy{}€ƒ…ˆŠ‘”–˜šœžŸ¡£¤¥¦¦¦§§¦¦¥£¢ Ÿ›™—•“‘‹‰‡…ƒ~|{yxwuttsrrqqpppoonnnnmmmllllllllllllmmopqstvwy{~€‚…‡‰‹‘”–˜šœŸ ¡¢££¤¤¤¤£¢¡ ž›š˜–•“‘ŽŒŠˆ‡…ƒ~|zyxvuutssrqqppoonnmmllkkkkkjkjkkjkkkllmnpqruvx{}€‚…‡ŠŒŽ“•—™›Ÿ ¡¢£¤¤¥¥¥¥¤¢¢ ž›™—•“‘ŽŒŠ‡…ƒ}{yxvtsrqponnmllkjjjiiiihhhhhhhhhhhiijjkmnprtuxz|„†‰‹Ž’”–˜šœž ¡¢£¤¥¥¥¥¥¤£¢¡Ÿœ™—•“‘ŒŠ‡…ƒ€~|zxvtsqpnmllkjiihgggffffffffffffgghhijklnpqsvxz}‚„‡‰‹Ž’”–˜šœŸ¡¢£¤¥¦¦¦¦¥¥£¢¡Ÿ›š—•“‘ŒŠˆ†ƒ}{ywutrqonmlkjjiihhggggggffffgggghhijklnorsvxz}‚„†‰‹’”–˜šœž ¡¢¤¥¦¦§§¦¦¥¤£¡ žœ›˜–”‘Šˆ†ƒ}zxvtrponlkjihgfeedddddccccddddeffghjlnpruxz}„†‰‹Ž’”–˜šœž ¢£¤¦¦§§§§¦¥¤¢¡Ÿ›™˜‘”Œˆ‡ƒ‚}zxvtrpnmkjihgfeddcccbbbbaaaabbccefgikmprtxz}€‚…†‰‹’”–˜›ž ¢£¤¦¦§§¦¥¥£¢ Ÿ›™–”’Šˆ†ƒ}{xvtrpnmljigfeddccccbbbbbbbbccdefgijloqsvy|~ƒ…ˆŠŒ‘“•—™›ž ¡¢¤¤¥¥¥¤£¢¡ žœš˜•“Ž‹‰†„‚}{yvtrpnmkihgedcbbaaa```````aabbcefhjknqsvz|‚„‡‰ŒŽ‘“”—™›žŸ¡¢¤¤¥¦¥¥¤£¢ Ÿ›˜–“‹ˆ…ƒ€~{ywtrpnljigfdca`__^^^^^^]]^^_`abcdfhjloruy|€‚…‡ŠŒ’”—™šœŸ ¢¤ª±µ¶´³³²¯¬ª§£˜’‡‚}yvrmifc`_]\[[ZZYWVUVVVVVVVVVWY[^adgjmps~…‰Œ“–˜šœŸ£¥¨ª«ªª©©«¬¬«ª¨¦£Ÿœ™–“‰…zvtrpoljgeca``____]\ZYXYXYZZYXX[^`beilpsvx|€‡Œ“–—™œŸ¢¤¦¨©ªª©§¦§§§¦¤¡ž™–“Їƒ{vqnmmkifdba`___^__^^[[YZ[\][[\_bdfhlpsvz~ƒ†ŠŽ”—˜˜šž¡¢£¤¥¥¥£££¢ ŸŸžœ˜”‘І„}yurpomkhfdba`_^]\\\ZYYXXXXYXXZ]aeghlqtx|€‡‹“—› ¢¥¨¨©©ª©¨§¥¥¤¢Ÿš—“‘Ž‹ˆ„~zwsommlifc`_^^]\[ZXXWVTSSTTSSVY^adfjouzƒŠ”™¡£¥§«¯°®¬¬¬¬ª¨¥£ ž›™–’Ž‹‰‡ƒ{xurnlkihda^^\[ZZYXVUUTSSTTTSVZ`bdflrw{„‹•šŸ£¤¦©­¯®­­­®«©§¦¢ ›™–‘Їƒ}zvsomllieb_^]\ZZXWUUUUTSSRSUY_bdglptx}ƒ‹”˜¡¤¦©­°¯®®­®¬ª©¨¥¡ž›˜•’Їƒ}zvspppnjfca``^]\ZYWVVVSTTTUZ]acfjpruy‡”˜ £¤§ª«««««©§¦¥¤ ›˜—•’‹‰‡ƒ€}{xtrrrrmheddda`^]\ZZYWWVWVW[aefglovx|†Œ’”–šžŸ¡¤¨¨§¥¤¥¤¡Ÿžœ™•‘ŒŠˆ…ƒ€}zwusqoopojfdddcba`_^]\[Z[\]\adijlpu{~‚†Š”› ¡¡¢¥©§§¥¦¦¥£¡žš–”’‘ˆ„‚€}yvspmkjjigc``_^][\Z[ZZYYYZYZ[aeijptz}€‚†Œ”•𢤥¥«¬­­¬­¬©§¦£¢ž›˜•Œ‰†„€}yuqmllmkgca`_]\]][\[ZYXUXX[]abgjpsvw~…ŠŒŽ‘™ Ÿ¢¤¥§¨©¨¥¤¥¤ œ˜–”‘ŽŠ‡„€~zwrnlmonjfbabbb``a``aa```abdeekosvy{~€…Œ‘”—šœŸ¡¤¨©ªª««ª¦£¡¡Ÿ›—“‹†ƒ€}xtpmihhgea\[[\[YYZ[ZYXY[\]^_abdflqxz}~ƒ„‹‘˜›œœ¢¥¨©ª¬®­­«©¤¢ ¢Ÿœ–’Œ‰†ƒ€}xurqpmieccca_\]\\[[\\Z[[]^abedhmuxyy…ŠŒ“—›š ¦¦¦¦¨¨§¤¢¡Ÿœš—”‹ˆ…‚{wtqponifdddc``a`aabbcdccdfhjlmpty||}‰‘”•–œ¢¤¤¦¨«ª©©©§£ žž›–‘Šˆ„}yusqpnjfdcdca^^^`__^abddeffgikmquy{|{ˆŽ‘’•˜Ÿ¢¥¦¥¦§¥¢Ÿ›–“Ž‹ˆ‡‚{yxxvrmihijihfeefgghjknnllnrtvvx{}€‚ƒ†‰Ž“–—––šŸ¡ ¡Ÿ›šš˜–•”’ˆ…ƒ‚{wutsqmihhihfeeegghijkmnnopqswz}~€ƒ„‡‡‘”“””šœœžŸŸœš˜–•‘Ž‹‰‡†}{zzxtpooqqomkknppppqststuwz{zzz{}‚‚‚††ˆ‰ŠŒŽ“’“”“ŽŒŒˆ†ƒƒ{z{|zxvtstvwwuttvxwwy{}}}~€‚‚‚„†‰‰ˆ††‰‹ŠŠŒŽ‘‘‘’’‘‘ŽŒŒŒ‹ˆ…„~}{z|{xustutpqttqqswxyvwz}~{xx|€‚€‚ƒ……„ƒ†ˆ‹Š†…‰ŒŒŒ‰‹Œˆ†Š‹‰ŠŠŠ‰‡†††ƒ€ƒ……}€z|}~€‚‚€}„…„‚†‡‚‚„ƒ„ƒ„ˆˆ…‚…„€€ƒ†‡ƒ€~}}|‚€|}|xy|~€{v|€~}xy††{z‰‰ƒ‹Œ†„Ž•Œ€„‹‹Œˆ‡Ž“Œ„‡„†Šˆ…†ˆŒˆ‚Š‹ƒ|~‡‰„~„„|{{||}~}~|z~~{€~z}}ztx€~~€~v{~tt€ˆ„uuƒŠ{ow‹“‚us’‹}}‹Œƒƒ‹…€‰—z‚’’†„ˆˆ“‹„Š„z€‹„y|‹‰{|„|x}}z‚{tƒŽzks}~ƒzvu€}ju~ˆ|qƒxs‰ˆs~€lo‰x|‡†v}Œˆ{‹€wŠŠ|x‚‰ˆ||ˆ…y‰‡‹„€‚ˆ“Š~†x”x‚Ž‘vyŒ‡†€‚yu‘Ÿ|cp’›€ooz”’mn‡Œ…qnzŒlgy‹r[oˆohw}y€ukot†wcrŒˆtmu€‡‹pƒ‹„˜‡s•Œy„™“Œ”}‘”Ž•ws›£wrˆ™‹vv‹‰qxŽ„tq}ŽŠlk~…}wsy€gr‹…sco‹‘lc}…oy‰ng‰’o_s…šuX}†‡reŒlz“}rw”„Œ}{ŒŠy€‘‚~“ƒw‹}vŠ‘v}š{{~…t…{…Šhw{‚†ukz‰dv~„€oj‹Ž}qf„Žˆo]}›|bi}Œ~t{keŠƒmsu}Œujx„ƒ{t…o‰‰|‚…Š‚}‹Š„€‚–š…pŒ™‚€Ž—†x‰•”w€t‘”uwxw˜‹mzŒkt|~or„~‰un€n|ƒsrwŠ{pwzr}Œwnrg†wwwwz}wq‹wzx‡€~|ƒ‰z~Š—vƒ¡lƒ’Š…Šf‚‹‘}u†ˆxŒ‚t}}{‚wwŽ’jk‰y€—sb{‹t_r•‰droŽsqys…yzyn„‚uvz€s~|~…nr•ˆn}Šwƒzi€¡Žwi¢v|€˜‘{s‘¢|p•£…y‹{t€Œ›~o†„|x„„Žy_p”˜wd|†Šˆje…‹‰ybs—†hv…rn’Žkkx……ls€\ƒy‹qw{ˆ‘tr…‚‡‚€††x~“šq”˜}Œ•‰|‡‡Œx’’z‚‰“”zv|›•ukj{¤~h~‰|as“Ž„shuƒ’Œkfƒ“‡evˆw}p{–~tso‹˜nk~ŒŒvjžƒ„gx—•Œjp«’zl|­£ysuž¶‚p|›¤“rmš¢–ƒh‚Ÿ–la ”s]ƒ’Œgr…‚ˆƒs{s–‰r_‡|ƒ|ew’†v}oy•~uo~Žpz†x|„{‡…{„‚~–‡h†˜Šƒ‹€ƒŽŽ˜…w–”†”‹xŒ¢—|k ‡ˆˆxuŒ¡‘qyxˆ—ˆp}€ƒ|‰ˆnr…‚z‚zrw}†‹xi_“ xUg•‹u{pt…|†{ql‘x{}ww†Ž‚qt‡‹Œp‚‘z†Š‘|†y‰–ˆv‰—Ž~~„Ž~~„‹y}‚ywsg‡qs}xƒ‚cˆ~kyŒ\xƒwˆudrˆ†u~pez…‚|`q—{si}“xlu˜–ois‘Œtt~†’iž€ƒ……˜‹{€™ƒŠu‰…‹–piŠzmy~‚bs~€dp†„ygt~ytn}qv~qs„rptf…ms‹ycxxszjhrˆr|°G}ž„ƒyw„Š„ˆgs³ŠhpšŠ|lm£œcvymˆ‘wkn–t`|jm’h^o}Œs^[z‰n{lPh˜‰fWY{Œ€cVt~xtpofpŠyepvx}fnІzqsvyŠuiw—–hj‚“u_r•ˆYlƒ…xg`Œ™vWe’`Jl’pYbtqsc_~†i]|pT‡ŒPozbeˆw^n}|voZh—h\zƒx}„ntx…—{jc‚©hj…˜–nk‹{Œ‰ti†–xr‚}~x|ij•”lV]†˜€g[l~„`Zn‚…vgav˜}L[ƒ“‹iMf‘†vvhcž„`bxŠŒt`y—Žy€„ˆŽs{“šŠuy…‰ƒ†“‚f…¨zixˆ–|lzŒŠytotzŒ“rPk”Š€mUn™‚met|x‰wfvvch‹—saj„‹z~‚vq†˜„nw‹ƒ‹‘~}w™œ|y‡—“ˆ”Œi“º—xl‹¥Ÿl{’›„xvr‡„rex›ycu†Šugr‰zf„sf{„u~~xor‡•{^iˆ ’wpz”˜ŸŒ}†‘ˆ’¦}ˆ•“™š„w…¡¨Œs…Ž šdc”žŠ~r|ˆ‹‡sq|‘Žqg|“ˆsmz}ˆ~h‚‡|~r{‹r{‰……yy—šƒvx£›w {§‡‡„‡™°“v‡˜–ƒ—Ÿ€v”•ƒƒ‹Št{Ÿ™sgv•Žsy‰…vzŠzn‹~dy—‹‡}^s ™~i|™—„xt•¬›{‹œ¢•u†§šŒ‹’•–‘”ƒ~‹”ŽyЍ†f’ˆ|‡Š{xy˜zij†£”l^v‡—fbŸ|asŒšˆj€ŒŽ’ƒˆ‹—…Œ£›ŒŽŒˆ—¢“v„Ÿ¡•†z“™‹u…”’|p…‡vs‡‡|xt‚Žsb}‘‹rinˆˆ{wwƒ}‚ˆ‚|wˆz„ŽŒ“•Œ„Œœ™‹’†šœˆ‡™’wwŠ•‚c}œš}km…˜Žvgv„‚znvƒ‡€ifyŠjn„yio~}€†mq‹|ƒ„‚“•‰~‹–’ˆŒ‹…ˆŽŽˆƒ‰‘Š|y{Ž€oy}‚†lr‚~skx†‚xqkr|~qgls{„zlhu~xnt†zy€{|„‹‰}|Š’‰x––ˆv{•‘†Š~x‡‡up~‹xwv€„{psz|xnm||sqrttqjiz~ontqpstsru}vs|}~ƒ‡{‡‹Š‚}Š„€„ƒƒˆ†|{zwvy€xxyutvxyssrttppzujlqyviigowwrjikmv|qnw}wuwx€€xx…ƒ„€x}‚‡ƒz}~yxxur{„{pnuwuqotysopomproknrsplkmlmstmjtwqorsv{zvrv}{y{~€z}ƒ~z|}{w{}~{rrtqotwyvnlkloqnmpqmnlefrtmiillopljnpqruuxwtvxz|yz||€„€wx~ƒ‚}zwvy{xxyxvsrpuwrnnttmijossnjilojiptqkgginppnqtrooquzzvy}|ww~ƒ€~}}~€€}vw|{y{zvutssspsvtnmpplpsplghmonnnnnmkjnooprttqtuwy|}zyz}€‚ƒ~}}€ƒƒ~ywz}zwxyvuusopqtvtrqnmnqrqqpolmprspmmnppoqstustuwuwz|}~}}}€‚‚€‚‚~}{y{{zxxvttttrrqpoopnnnooonpqonprrrrsutsvxwxy|{{{|ƒ…ƒ€~…„}}~}zxyyyxxxwutssttsrsrttrpqrsttrqqstuuwxwuuz~~„„…„…„…ƒ„…„‚‚€€~|{{|{zxxwxwvsstttssstusrstuvvvwxwvwyzz|}}||~‚‚€‚„……„ƒ„…„ƒ„„„€€}|yyzz{{zxuuvwxxvuuuuwvxywvwvxyyzzz{{|}}}}‚ƒƒ„ƒ„‡ˆŠŠˆ†‡‰Š‰ˆ‡‡‡……„…ƒ~€|zzyxxxxxvstwyxvuuvxxxxywwxz||zz{{||~€~€‚€„„ƒ€‚„…„‚‚„ƒ‚‚‚€€€€‚‚€€‚ƒ„„…ƒƒ„…‡ˆˆˆ‡†‡ˆŠ‰ˆ††††…„…„„€€€}|{{zxwvvvutsrnmmnoomkiiklnomllnpquwyxx{‚†…ˆ‹Ž‘“–™››ž  ŸŸ¢¤¢¢Ÿžœ›š™•“‘ŽŒŠ‡…„‚€}|}{zxwwwwussrqpommkigfea]XX[_`]YY[bdfhjkrw„‡‡‹™Ÿ£¤§§©¬°³´²°®­­­ª§£Ÿš˜–“Œ‹‰…ƒ‚‚ƒ‚‚‚‚…‡ˆ†……ˆŠ‰‰ˆ‡…„ƒ…‡…zwwurpkhe`^^[]XVWX][[^cegkqv}‡Œ’šž£¥¥§¬³¶´²±²³±¯¯­«£žœŸ™‘Ž‹‰‡……†…~~~‚‚‚ƒ………‡‰Š‰‰ŠŒ‹‰‡ˆŠ‹ˆ‚~{{{xupkgda`]_WYV]^\VXZailorsu|ƒŒ–›˜—™¢¬°°²´²®«°·¸±¨¤¥§£œ˜š˜’Œ‡„…ˆ‡€‚|~‚…‰…‚…ŠŒ‹ŒŒŒŽ’‰‰ŠŠ‡ƒ~|xupmljaXY\\\XTVYZZX`ggijr|}€‘˜žŸ¡¦±´°²³¶¶´²³´°©§§¡žŸœ”ŽŒŒ‹‰„‚€}‚€~‚ƒ…‡Š‰ˆŒ‹Ž”“Ž‘”•ŽŒŠ‰„~‚‚vnnspe[YZ^^USYZWUV\ehbfmu|{|ˆ“–“–Ÿ¥©¯®­°²µ¶²®¯³°¨¤£¡ ž™’’‹ˆ‡‰„…‚|„ƒ€ƒ†ƒ„‰‹‹Š‹–˜ŽŽ”™•‘‘•”‡‰Ž‹ƒ}{{yqnolf`[[\[WU]ZWTWbgbelqou€„‘™’‘˜¡®«§°±°­«¶·´¬«¬¥¤ Ÿ¡š—‘ŒŽŠ‰Šˆ€€ƒ…‚€…Šƒ„Їޑ‹–•‘’•™—’•–“‘’‘†ŠŒ…ƒ€}xtw{pbfgge^Y_^Z\[dea\]jvsmqx€„ˆŽŽŽ™šš¢¦ª®¨¥¬¯°®ª«©¢¦¥ Ÿš™““‘‰††ŠŠ…~„‡†„†‡ŠŒ‰ˆŠ‘•–‘’‘™›””“’™•Ž’‡†‹……‚zwxvvoklibbc``^_\Y_cadgefkmwz~†Ž’––•¤£§¦¨«ª««ª­ª¥¥ŸŸ  ž•‘’–ƒˆŠˆ‡Œ‡}„‡‡Š‡†‹‹‰Ž’•’’”“”𛕑’–Œ†Š‹Š‚z~ƒ|qqsmoqgcbaeba^X^`beffbhkqwux‚‰’‘–š—– «©¤¢¯¯¥§§««§ œ¢¥˜“™š’ŽŒ‰…ƒ†ˆ‹ƒ€……ˆ‡‡‰ŠŠ†‹•—Š‘“••ŽŒ’“’‡Š‰‚…zzqqsspgglg_gibc\^cjndbfhosvy{~~…•’˜œ˜Ÿ¥£¡¥§¥§¥ ¦¦  žžœ”““™•Š…Œ‹ƒ‡‘†~‚†Š†ƒ‹Š‰‡†‹“‘ŠŠ’—”Œ”‘ŽŠŒ‘‰„‚„†zvwxvokotlj`ciif^^dlgecfsqjlo~…{y}‰‘ŒŒ˜œœ™ ¤©¦žœ¦¬§– ¢œ‘‘“’Žˆˆ††‹‡|†‡ƒ„„€…‹‰‡‰‰Œ“Ž‘•’”•’’Œ‹‰‡Š…|ƒ}xwsrspqidjhdgd_aeb^[flfghhiszzv{~„ŒŒŠ‘”—š›ž¢¤Ÿ¡¥¥£¤¢žŸžžž—‘—˜…މ„ƒƒ„€…Š„†‡‡ˆ‹‹’”‘”’ŽŽŒŒ…††€|twyuplnjgidcdda]^_^^dea^hlgkoqtwt„‚‡ŽŒˆ“™šŸš—›¢¤¡£Ÿšž››’”›‘Œ‰‹‡ƒ‰†}z}„†‚|}ƒ†Š„€Š‰‹ŽŽ“‘•‘‹Ž‹‹Œ~„ƒ‚{vxyusphjpkjh`affd^`baa`ccekhjmknut}€{€ˆ‡†—“‘”’ž¡™›Ÿ™›¨›™Ÿ—”‰‰€Ž‚z|„‡‚~zz‰‰|ƒ…ˆ‹†…‰Ž”‹…‰‹•‰†‰‹‡‚€…†}zqvzojhmpleafgcca`^`fb]_achjfhooprvz|€„€ˆ’”ŒŽ”•š —’—šŸ›Ž’˜•”‰…ކ|‰‰zs|……xz~~…€€‡Š„ƒ‹‹…‘“„ŒŠ‹“އ‰Œ‹ˆ…~…†ytyztssllkmogb_fng]]dhi_]fgffkmnmmtyvx€ƒ……ˆ„‡•—’Ž˜˜•“–šœ™Œ‘”“Žˆ…ˆ‡y|„‰…}tz…ƒ}|ƒ‹‡€ƒ‰ŽŽ‰†–”Ž’‹Œ‰ƒ„…†‚|~xpw~pjmoslgimlihhijnojclwtplgp~yxw{}y‚€ˆˆƒƒŽ“Ž”““’’–˜‘‰‹Žˆ†…‚Š‹‚‚†„‚…ƒ{†ˆ‚ˆŠ‡‹‘”Ž“•’‰Œ•Œ†‰‹Š„…y~~wrvwrsrpmmpslegotoifjpqjimtpnpttwxw|ƒ†‡…„‰‘”‹’•š™ŒŒ˜š•‘ŽŽ‡†‡Šˆ{€†ƒ}{}~‚|ƒ„‚„ƒ‡ŒŠ‡ŠŽŽŽ‘ŽŽ”•ŒŒ‘“†‡ˆ„ˆƒ}{{wvy}tmpsrmrtmjppmnqqklvuolnvsnpvwwwvvy{}}ƒ„„‚~‡ŒŒŠƒŠ–”ˆ‹’‘މ…ŠŽ‹…ƒ„†…€z~ˆ„~~|„†„‚„…„†ŠŒ‡‹”‡Ž’‹Ž‹Š‰†€…‹†{v{}{pny|rimrupinoookkmmnmmmmomkmsspssqtyxuzƒ~}‡‹‰†„‰ŽŽ‰‡‹ŽŒ‡†Š‰…ƒ„„€ƒ„|w|‚|yy~}|}ƒ„ƒ„…‰‹‡‰ŒŽŒŠ‹ˆ‰…ƒˆ†€~~{sruvwnekrqidchmkfaehgecfijhcbgmmkmqpmnsx{z}x{ƒ†…†‡†„Š‹ˆ…ˆŠŠ†ƒƒƒ‚€|zxy{zwutx}xuw{|€{~„ƒƒƒˆ‹‰‰ŠŽŒ‰‰‰Š‹ˆ„‚}yy|vsrpnlllifdfhffe`bggd_`gfegcbfghcdkqomijpuwxx{zwwzƒ‡…€€ƒƒ„‡†}}~}~{xvwvusuuuuuutsxz}~||ƒ‡‰‡ˆˆˆ‡‰ŠŠ‰ˆˆ†ƒ„„€}{yvusrqnllieeghfba`bdedba`acecaddbbbceddghjhilkopqtuuwyz|}|}~~€ƒ€~||}~{yxwuvvvuuuutuuwwxy|{|€€€‚ƒ…‡‡†„…††…„ƒƒ‚€~|}zxvtsrpllkkjifddbbccddba^^aabb`a```^_bdccdeggikkpqrsvwz|{~€‚€‚‚ƒ„ƒ‚}}}}{zwvutsrssrqopqtttuwwxy{‚‚‚„†‡‡‰‰‡…ƒƒ„ƒ‚€}{zwusrqomjhgfeeeeb```aceecbabccffefeddeeeegkljfejnrurqoqty{||{|}€€€€~€€|||}|{ywvvwwvussstvvwwwzz{~}~~€ƒƒ„……ƒƒ„…†…ƒ‚€}|zyxvtqponmkjihgefeffffdedddedeeeeddccdeffhhiihkmoqrstvxz{|~€€‚ƒƒ‚~}||{zyxwvuuutssutvwxyx{}~€„…†‡‡ˆŠŠˆˆ‡‡ˆ‡…ƒ‚~|zywutqonlkiiihggfefghhhhhhhhiiiihgghhegfhjkkjiimortssstwz}|}}}€€€€€€€~}}||{{zxwxwwvvvx{{{zz|‚„„…„„…‡Š‹‹Š‡‡‡‡††„ƒ|zywvutsoljjjkljhfefhijiggghhhighhghgfffeefgiiihjkmrssrrux{}|}~~ƒ‚‚‚ƒƒ„‚~~~|zyyxxyxvuuv{z|{{|}‚…‡………†ˆŠŠŠˆˆ†……„ƒ‚€~|zwvtssrpnlkkkllkihhiklmklkklkllllkkighghghgiiikklmoptuvwy|}€‚ƒ„„……‡‡‡†……ƒ„‚€~}|zxwuuuuuutvuwwxz|~€‚‚„…ˆŠ‰ˆ†‡‡‡ˆ‡†„‚€~}|{yxvuttsssssrqopqstsppopqpqnnmklkikiihfiklmklnqsttuwz||}}€€~~}|{xvvvusrqqqqrsrtuy{}~€‚‡Š‘“”—˜™œœ››š™˜—•“Ž‹‰†ƒ~{ywttqomlmmmlkkjlmnooppoppqppppnnlkighgfffgfcbcejmnpomorx~€‚ƒ„†ŠŽŽŒ‹ŒŽŽ‹‡„„…‡‰ˆ†ƒ‚ƒ†ŠŠŠ‰ˆŠ‹Ž‘‘ŽŽŽ‹‰‡„ƒ‚€}{xvttsrponmmkjjhhhghfhffeffgeeeehgghhklpstvtvzƒ…„†‡‰‹‘‘‘‘‘‘‘ŽŒ‰†ƒƒƒ„ƒ€}||}}€€€‚„…ˆŠ‘“”•”“’ŽŽŠ†ƒ~{yvtsqoljiihijjkjklortsttvy{{||{}}~}{zyyyxxwtwwywutvz}€~|}…‰‹‰ˆˆˆ‹Ž‹‹‹‹Š‰ˆ‡‡†…ƒ€‚ƒ€ƒƒ„†„††…ˆˆ‰Š‰ŠŠ‹ŠŠ‰ˆ‰ˆˆˆ…„„ƒƒƒ‚€€~~~~~~~}}{}|||zzxwvvutspqpqpmkkmqsttsqsw{ƒƒƒ‚„‰‹Ž‘’‘‘ŽŽ‘Œ‡ƒ‚‚|xussuwwwvvxy|~†‡‹Ž‘’•™œžžžžžŸŸžœš˜–“‘Œ‰‡„‚€}{xwwwwvtsrssuvwxwvvvy{|ywwvxwxwvuttwwxwvvx{~~~~‚„‡ˆ†‡††ˆ‰ŠŠˆ†††††„‚‚‚‚€~}}‚ƒƒƒ„‹‘’“–™œžŸŸ ¡¡¡¡ Ÿž›™–“‘ŽŒŠˆ…‚|{{zxvuttuuwxwxxy{||~}~}}}|{zxxvtrqppqrsomlnptvtuuuz}‚ƒ„…†‰‹ŽŽ‘’’“’‘“”“”’’ŽŒŒŽŽ’“”–•––—™™™™—––––”“‘ŽŒ‹‰ˆ‡…„‚€~}|{{{zzxwwwwxvvussqrqpolkkkjjhhkkmmmpptwy}‚„ˆŒ’“””–˜™š›œ›š˜—––•”’ŽŒ‹Š‰‰ˆ‡……††ˆˆ‰‹ŒŽŽ’“•–—˜™šš››››™˜––•“’Šˆ‡„ƒ€~{yywwtrqrqqpooonmonnmnmmnpnmnpoprutxxwx{~ƒ„ˆ‡ˆˆŠ‘”˜–––—˜™™š™™˜—–“’‘ŒŠˆ†††‡‡‡††‡ˆ‰‹Ž’’”•–˜™›œœ›ššš™™˜—•’Œ‹ˆ†ƒ}{ywutsrqpnnnnopnpoqpprrsuuvsuvwxz}}~‚„‡‰ŠŒŒŽ“”–––—–•••––—•“’‘ŽŽŒ‹ŠŠŠ‹‹‹ŠŒŒŽ‘’“”•––––˜˜˜—––••“’ŽŒŠˆ…ˆz‚~{{wwswvuvttsvuwxxz{{|}~~€ƒƒ„„„ƒƒ„„…†††……„„„†‡‡‡‡†††‡‰Š‹Œ‹‹‹‹ŒŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŒŒŒŒŒŒ‹ŠŠ‰‰ˆˆ‡‡‡‡‡‡††…††…††…†………††‡‡‡‡ˆˆ‰ŠŠŠŠ‹ŒŒŽŽŽŽŒŒ‹‹ŠŠ‰ˆˆ‡‡††………„„„……………††‡‡ˆˆˆ‰ŠŠ‹‹ŒŒŒŒŒ‹‹ŠŠŠŠ‰‰‰ˆˆ‡‡‡†††……„…………„„„„„„…„…………††‡ˆˆ‰‰‰ŠŠ‹ŒŒŽŽŽŽŽŽŽŒŒ‹ŠŠŠ‰ˆˆ‡‡†††……………„„……††††‡‡ˆˆ‰ŠŠŠŠŠ‹‹ŒŒŒŒ‹‹‹‹‹ŠŠŠ‰‰‰ˆ‡‡††……„„„„ƒƒƒ‚‚‚‚ƒ‚ƒƒƒƒƒƒ„……………†‡ˆˆ‰‰‰ŠŠ‹ŒŒŽŽŽŽŽŽŽŒ‹‹Š‰‰‰‰ˆˆ‡††††††††…†††‡‡‡†‡‡ˆ‰‰‰‰‰‰ŠŠ‰Š‰‰‰‰‰‰‰ˆˆ‡ˆ‡‡††……„„„ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒ„……†††‡‡ˆ‰‰ŠŠŠ‹‹ŒŒŒŒŒ‹‹‹ŠŠ‰‰ˆˆˆ‡‡‡‡††††††††††††‡‡‡‡‡‡‡ˆˆˆ‰‰ˆˆˆˆˆˆˆˆ‡‡‡‡†‡††………„„„ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒƒƒƒ„……†††††‡‡ˆ‰ˆ‰‰ˆ‰ŠŠ‹‹‹Š‰ŠŠ‹‹‹Š‰‰ˆ‰‰‰ˆˆ‡‡†‡‡††††††‡†‡‡‡‡‡‡‡‡ˆˆˆˆ‰‰ˆˆˆ‰‰‰ˆˆˆˆˆˆ‡‡††††…………„„„„ƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚ƒ‚ƒ„„…………†††ˆˆˆ‰‰Š‹š¡•”’•“’‰‡‰ˆ‡‰‹‰ˆ†ƒ‚€‚„ƒ…‡†ƒ‚†‰‹”ŽŒ‘‘‘“–’ޑމ‰Šˆ‡ˆ‡ˆŠ‰„ƒ‚‚ƒ†‡ˆ…„ƒƒƒ†ˆ†ƒƒ‰Š††‰Œ‰ˆˆ‰‡…†„ƒ…†„‚‚‚‚€ƒƒ„„„„…†††…‡Š‰ˆˆ‰‰‡†ˆ‰‰†††…………„‚ƒƒƒƒ‚€€‚‚‚‚€~~ƒ„„ƒ€€ƒ„„„„‚‚‚‚ƒ‚ƒ„„ƒ‚€€‚‚€}}}~~~|{{{|||}}|{z{|}~€€~‚‚ƒƒƒƒ‚ƒƒ„„„……„„„„„ƒƒƒƒƒ‚€€€€€~€€€‚ƒƒƒ„…………††‡‡‡††…††………„ƒƒ‚ƒ‚‚€€€€~~~~~~~~~~}}}}||{z{{||{{{z||~~~~€‚‚‚„ƒ„ƒƒ„„…†††…„ƒ„………„ƒ‚‚ƒ„„ƒ‚‚‚‚ƒ…„„„„„†…††‡ˆˆ‰‰‰‰Š‹‹‹‹‰‰ŠŠ‹‹Šˆ‡†††…„ƒ‚€~}|{zywvuuttssrqprpoppprpqrsuuuvuwy|}~…‡‰‰‡†‡ˆŠŒŒ‹ŠŠ‹‹ŠŠŠŠ‹ŠŠ‹‹‹‹‹‹ŒŒŽŽŽŽŽŽŒ‹‹ŠŠ‰ˆ†„‚€~|zxvutrpmljjjjihgecdefggffeffilopqrsuwz}‚…‡ˆˆ‰‹Ž“•–––””••—–•”‘ŽŒŽŒŒ‰ˆ‡†‡‡ˆ‰ˆ‡†‡ˆ‰ŠŠ‹‹ŠŠŠŠ‹Œ‹Š‰ˆ‡††…„‚€~|zyxvtrpmkiigfeba_^^]^_``aafikoqtxz}‚‡ŠŽ‘””—˜˜™™˜—”’ŽŒŠˆ†„€~}||{{zzz}}€„†ˆ‹ŒŽ‘““”““’‘ŽŒŠ†…‚|xvsqolifca__^^\ZYWYY[]^adfjmnty|…ˆ•—›žœœ›œ››š—“‹‰ˆ†ƒ|zywwttttuvvwxxz}€‚„…†‡‰‹ŽŽŒŒ‹Š‡„‚€}{xusomjgea`^\\YYVVVXZ\\^`chkptx|„‰Ž’•–˜šž ¢¡¢ žš™˜•’‹ˆ†‚€}|ywvvwxwxxz{|~€ƒ„††ˆ‰‰‰‰‰ˆˆ†…„‚}{xvtqnlifca_^\ZWWVVWVWVWZ]acegknty~ƒ…‰Ž’–˜—™™›œœœ›˜•”“’Œ‰‡……„}||}}~~}}}‚„„„„…‡‰ŠŠ‰ˆˆˆˆ‡†…ƒ}{xurpmkhea^\YWUTSQPOONPQSVX[`bfknrw{‚‡‰Œ‘–˜šœ›››˜™™–•‘ŽŠ‰ˆ„‚€~}|{{zzyyz{{|}~€ƒ„…††‡‡ˆˆˆˆˆ‡…ƒ~{xurnlheb_^[YWUSRRSTUWWX[^bhklorw}„‡ˆŠŒ‘”•”’‰ˆ„……ƒ‚||}}}{zz{{||}}}~€‚‚‚ƒƒƒƒ‚€~}|ywutrqnkifdcba_^\\[[]]^_`begknpsuy}„†‡‰Œ‘’’’’’‘’‘Ž‹Šˆ‡†ƒ€~}|{yxvuttsrsrssstttuwxzyxyyzzzyxvutsqpmkifeca`^]\[[[\\]^acehknrvy|€ƒ‡ŠŽ“••—˜™šš™™˜—•“‘ŽŒŠ‡„ƒ€~}{ywvtssssrqqqrssttssttutsrqqonlljigdccb`^^\]]\[[\^_`ceghkmrv{}ƒˆ‹’‘“““•••”“‘‘‘Œ‹‰ˆ‡……ƒ‚€~|||{{zyxxxxxwwvuutttsqonmljihfecba__]]\\\]]^]_adfhiknrux{~„ˆŒŒŽ‘“”””““““““’ŽŒ‹Š‰ˆ…ƒ}|{zywvvuutttuuuutuuuvvvutssrrqpomlkjhhgeefedddeghjlmprsvz}€‚„†ˆŠŒŽ‘‘’‘’‘’‘ŽŒŠˆ‡…ƒ‚~|{zxwuuttssssssssstttutttssrqqpnlljjihggeeeeeefgijlmnqswz|„†ŠŒ’“”•—˜——–•”“’‘ŽŒŠˆ†„ƒ‚€|{yxvvutsqqppqppoooooonnmmmkkkiihhhggfhhihhhiiklnoqqrtwy{}ƒƒ†‡ŠŒŽ‘’’‘ŽŒŒŠˆˆ†…„‚~|{yxxwvutsrrrqqponnmmllkjjjjjihihiiiiiiiiijlmnnooqsvx{|~~€‚„‡‰‹‹ŒŽ‘’’’’’‘ŽŒŒŠ‰‡…‚€~}|{ywutssrrqpooooooooppqqqqqrsstssrssstsrsrrssttuuvwxzz|}‚ƒ„…†‡ˆˆˆˆˆˆŠŠŠ‰ˆˆ†‡†…ƒ‚€~}|{zxwwwwvuutttttsssssssssrrrrrqqrqqqppqqqqqrrssuvxyz|}€ƒ…†ˆ‰‰Š‹‹ŒŒŒ‹Œ‹‹Š‰ˆˆ‡†…„ƒ‚€~}|{zyxwwvvuutsrrqqpoonnmmlllllmnmmnoprsstuuvwxyyzz{}~‚ƒ„………†‡ˆ‡ˆ‡‡†…………………††‡‡ˆˆˆˆˆˆˆˆˆ‡††……„„ƒ‚€€~}|{zxwvutsrqppooooopppqqrrstttttuuuvvvvwxyyzz|}}~€€‚ƒƒƒ„„…†‡ˆ‰‰‰‰ŠŠŠ‰‰‰ˆˆ‡†……ƒƒ‚€}||{zzxxxwwwwvwwvwwxxxxyyzz{{{{{||}}}}}}}}}}}}~~~~~€€‚‚‚‚ƒƒ‚ƒƒƒƒƒƒƒƒƒ‚‚ƒ‚‚€€~~}~}}{{zzzzzzzyyyyyyyyyxxxxxxxyyzzz{{||}}}~~€€‚‚ƒƒ„……†‡‡ˆ‰‰‰ŠŠŠ‹‹ŠŠŠŠ‰ˆˆˆ‡‡††…„„ƒƒ‚€~}||{{zyxxwvvuttssrrrqqqqrrssstuwxxyzz||}€‚ƒƒ„……†‡ˆˆˆˆˆˆˆˆˆˆ‡‡‡‡†‡††††‡‡††‡†‡‡††††……„„„ƒƒ‚€€~~}|{zzxzvxwvvvvuvvvwvvwxwxyyzz{{||}~~€€‚‚‚ƒƒƒ„…………………††††‡‡‡‡‡ˆˆˆˆˆ‡‡‡††…„„ƒ‚€~}}||{{zyyxxxxxxxxxyyz{{||}}~~€€‚‚ƒ„„…†‡‡ˆˆ‰‰‰‰‰‰‰‰‰‰‰ˆˆˆˆˆˆˆˆˆˆˆ‡‡‡††……„ƒƒ‚‚€€€€~~}||{{zzyyyyyyyyyyzzz{{{|||}}}~~€‚ƒ„„…††‡‡ˆˆ‰‰‰‰ŠŠŠŠ‹‹‹‹‹ŒŒ‹‹ŠŠŠ‰‰ˆˆ‡‡††…„„ƒ‚‚€~~}}||{{zzzzzzz{{{|||}}}~~~€€‚‚ƒƒ„„……………††‡‡‡‡‡‡‡ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ‡‡‡††……„„ƒƒ‚‚€€~~~}}}}|||||{|||||}}}~~~€€€‚ƒƒ„„…††‡‡ˆˆˆ‰‰ˆ‰‰‰‰‰‰‰‰‰‰‰‰ˆˆˆˆ‡‡††……„„ƒƒ‚‚€€~~~}}}|||||||}}}~~~€€€‚‚‚‚ƒƒ„„………††‡‡‡‡‡‡ˆˆˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆˆˆˆˆˆˆ‡‡††……„„ƒƒƒ‚‚€€€~~~~~}}}}}}~~~~€€€‚‚‚ƒƒƒ„„„……………††‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ˆˆˆˆˆˆˆˆ‡‡‡‡‡†††………„„ƒƒ‚‚€€€€€€€€€‚‚ƒƒƒ„„…††‡‡‡‡‡‡‡‡ˆ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡††††…………„„„„„„„ƒƒƒ‚‚‚‚€€€€‚‚‚‚‚ƒƒƒƒƒƒ„„„„………†ŠŒ‰‰‰‰Š‰ˆ‰‰ˆˆ‡†‡‡‡ˆˆˆˆˆ‡‡‡‡ˆ‡‡ˆ‡‡††‡‡‰‡††††………………„ƒ‚ƒƒ‚‚‚€‚ƒ‚‚‚‚ƒ„„………………††‡ˆˆ‡ˆ‰‰‰‰ŠŠ‰Š‰Š‰‰‰ˆˆˆˆˆ‡‡‡‡‡‡‡†††………„„„„ƒƒƒ‚‚‚‚‚‚‚‚‚‚‚ƒƒƒƒƒƒƒ„„„„…„………†††††……††††††††…††††††††……„„„„„„ƒƒ‚‚‚ƒƒ‚‚‚‚‚‚‚‚ƒƒƒƒƒƒƒƒƒ„„„„„„„„„……„„……………………………………………„„„„„„„„„ƒ„„ƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒƒƒƒ„„„„„………………………………………„„„„„„„„„„„„„„ƒ„ƒƒƒƒƒƒƒ„ƒƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚‚ƒƒƒƒƒƒƒ„„„„„„„………………†††††††…………………„„„„ƒƒƒƒƒƒ‚‚‚‚€€€~~~~~~~~~~~~~~€€€€€€€‚‚ƒƒƒƒ„„„………………††††††‡‡‡†††‡††‡††††††††††………†………„„„ƒƒƒ‚€€€~~~~}}}|||||||||{{{{|||||||}}~€€€‚‚ƒ„…………††‡ˆˆ‰ˆˆˆˆ‡‡ˆ‡‡†………„„„„ƒƒƒ‚‚‚‚ƒƒƒ‚‚‚‚ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚€€~}}||{{{{{zzyyyyzz{{{{}}~€€‚ƒƒ„…††‡‡ˆˆˆˆˆˆˆˆ‡††……„„ƒƒ‚€€€€€€€€€€‚‚ƒ„„„……†††††††††………„„ƒƒ‚‚€~~||{zzyxywwvvvvvvwwxxz{{}~€‚„„…†‡ˆ‰‰‰‰ˆ‰‰‰ˆˆ‡††……„„ƒ‚‚€€€€€€€‚ƒƒƒƒ„„…………………„„„„ƒ‚€€~~}||{zzƒ{z~|zyzzywwyyzz{~~~~ƒ„„…†ˆˆŠ‹ˆ‹Œ‰‰‰Šˆ„ˆˆ…„„„…ƒ‚€ƒ€‚‚ƒƒ…€ƒ†ƒ……†„†„„„ˆ‚ƒ„†€„„|~€}|xsy~xxxyyw|uxw{yz~y|‚z€€†€€‰ˆ‰„‰…Ž‹ˆƒ‰Œˆ†………‰‚|‡„ƒ…z†ƒz‰{…|Šz‰‚…ƒƒ…„†ƒ„…„|€€ˆ{‡„zx‚}~u~{zv{zuxx|ry|vz{z€zw††y}…Š€„‰‹„†Œ‚…Œ†ƒˆ„€‰‰{‰{„‚„†€}|Œ€zƒ…|‡„}Œ}ˆ‚z‰ƒ……‚yˆz}€t€}wwu„…yx€x}ƒx|z‚tty‡„z~€„ƒ}„~‚Œ‹ƒy‘|‚‡‰Œ|Žƒ‡ƒ€ƒ„‰yŠz€‹v~‚ƒ†vƒ‚z€„{‰v†}}}ƒ}~~{†xvƒ{n}‡nr}xuxt|unƒsr~tuu„{x€}ƒ‰z‚ŒƒxŽ……‰x‹‹{ƒ…‚|ƒ…|||ˆ€oˆƒr†zz…zx‚y‚|{|xƒy|}{}|{|tvƒy}vw|u{vpx~plkz~kt|kw„l‚„h„~}€~†v‚z~‹€z|ކzƒƒ„u††{„„w}wˆwy}~‡ny…xw€wwit}†xq|ˆvv~zw‰hy†l€yto‚r~iwqzewxv|rp|tyz€}v…u„…z~ˆ†‰qgˆ|†„ˆ€pŒ‚s‹t}•gzˆ|vtˆmz”gy‹i{Žky{ƒoy‚q€{r…yxj‹rwe’ueu‹qpox‡ll{~uy}sw€~}uƒ}€ƒŠx„‰‚{‚|…Žp…Œƒq‹…yŠnŠ‹g†…u~ƒƒqx‚‚r{ƒƒqrzivwx…xuoŠ|n€xmmo{tx|ftkt‰f{t|tzu†}|vŒ‰^Ž”jˆ†‡x‹}x‚‹ƒt”€uƒq…|yl‘y|}|z|y…wˆkw–c|y‚r}oqtˆut„ou†vqpŽhv€wq{~m|f†vyr…q|r€Šzw‡†{}{zŽ|‰€„‹v†~ƒ|‰x{Žwxzƒwx‡n{’}Y‚‰€h}‡snŒsyxy}{ws‡zhƒyr}yyl|{xwm‡yc‚†{srƒwn‡„u~…||†‚pŽ~€†v•€v„ƒ}z{†‡|uˆ…s€x}Žpz‡vx€p†‡hx“kzuzz{{u}€z|o~|vxzyt„qv{€qs~uq‚{u‚zv€u}†|m‰‚y‚vˆy‚‹zƒ…‡x|‰}~~’su“p„j…†}w€€m…ƒ{vr‡€jywƒsz‚lwˆyruƒ{m}ƒxuz{n}„wj…xs{‚xvzfx‹‚l‰j‰‹s|„„w…z~…mŒ‚|†…yy‡‰r†‚v€‚tƒvt‹p€{vy„r~xzu‹€^…ut{vy…_ws~{n…€k}€}j|Špx~…l€†{s|Šn}‡~~w„w„}~|ŠƒhŽ‘lu“ƒp„‡r€‹{qz‹„qtˆo‚~wxrx_wx}rqŽxj„k‚}ns~Žia”uwxwpv{y‚wy}u|…us|Štx|‚zuƒ‚vy„ƒw|€{‚|t†‰o}…w€‰yuƒ„pn‹‘`qžrlƒx‚xty…yuz{yw~ru|{yqu…l{|x|{v}|v|‚pz…r~|t~‡ts”pk”xl}–t{{}‰ƒqzƒƒkŒ…l…†xw‚xoˆŠnxvv…{v}u„t|ƒ~jw”n|pwzg|~iƒzp‚†sp}™pc‹‡wuv‡…m€…†e†qxˆ~ƒt„†{j”†q}‹x|„‚s„{|ˆ…pw‘{|qƒˆx{x‰{r‚~x|{u}€zpw‹h€ƒwzy†ry~xusƒq„zy€}{ƒrzŽrv‡s“ptƒ„}t~‰xxƒ~‚{€yƒy”|_””d†ƒz†q‡lwЇpr“l}„€ux„x|xw}r}syqh‡ƒsuŠrz€ˆqv‡€r€{{‚}u‡|…iƒ‘us‰zŒuwŠ…xwˆ‚w„„|t„ˆz€v…‡yu}u†x}‡y~~}ƒ~yƒ}xy†€y}}x~~}q~„wxz~yzx|ƒw}„vvˆ€y||‚ƒu‚ƒv{ttŽ€{ƒu„‘qy‹||‡€x}Œ…nŠz‚€y†ƒz~‡€y~„t†t„uz}‚}y{||z}z€w„}y~x}‹|s€ˆ}}„z}‡|}‚|…~~†~}„ƒ}…‚{‚„„z€†‚}‚~€…‚x‰‚{{€‡€r‡ˆt|‹~w…}z‚v{„x~z€~~~{ƒ}~|ƒ|}€|€ƒx‚‰y|†~‚„{ƒ…‚|…‚}†ƒ|†„€ƒ‚‚€…€‚…{††|€„„~}‡€€|‚„‚€{€†||ƒ€}}|~…}}€€~~€~†€}‚ƒ€…€€…€ƒƒ†ƒ…‚€‡…€…„……€„‚€€„‚€„€€€€€€€€€€€€€€‚€€‚‚‚‚‚ƒ‚‚‚ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ„ƒƒ„‚ƒƒ‚‚‚‚‚‚‚‚‚‚€€€‚€‚‚‚‚ƒ‚‚‚‚‚‚‚‚ƒƒ‚‚‚ƒƒ‚ƒ„ƒƒƒƒ„ƒ„ƒ„„ƒ„„„„ƒ„„„ƒ„„ƒ„„„ƒ‚ƒ„ƒ‚‚ƒ‚‚‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚ƒ‚‚‚‚‚‚ƒƒƒ‚ƒ„ƒƒƒƒ„ƒƒ„ƒƒƒ„ƒƒ„„ƒ„ƒƒ„ƒƒ„ƒƒƒƒƒ„„ƒƒƒƒƒƒƒ‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚ƒƒƒƒƒƒ‚ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚‚ƒ‚‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚ƒƒ‚‚ƒ‚ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚ƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚ƒ‚‚‚ƒƒƒƒƒƒƒƒƒƒ„„ƒƒƒƒ„„ƒ„„ƒƒ„„ƒ„ƒ„„ƒ„„„„ƒ„„ƒƒƒƒƒƒƒ‚‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚ƒƒ‚ƒƒƒƒƒƒƒƒƒƒ„„ƒƒƒ„ƒƒƒ„„ƒƒ„ƒƒƒƒƒƒƒƒƒƒƒƒƒ‚ƒ‚ƒƒ‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚‚ƒ‚‚‚‚ƒƒ‚‚ƒ‚‚ƒƒ‚ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒ‚‚ƒƒ‚ƒƒ‚ƒƒ‚ƒƒ‚ƒƒ‚ƒƒ‚‚ƒƒ‚ƒƒ‚ƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚ƒƒ‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒ–‘„|ƒˆ…€|~ƒ„‚€€ƒ„‚€~€ƒƒ‚€€ƒ…‚€€‚„ƒ„‚ƒ„…„ƒ‚‚……‚‚ƒ††…‚‚„ƒƒ…‚‚‡„…‡…„ƒ‚~†„~‚†„}ƒ„{€„ƒ„{y„‡„€{…‚y„…ˆ|}Šˆ…}w~‡ŽˆvzˆŒ‰€xx…††ˆ~{yƒŠ„~{x‰‰~|vƒŒˆyt€~Œ‡rz‡‚‚‡{tƒ„„‚}v†…ƒ}~}‚|€‰„|p”ˆxp~‡ˆ‹sw„|Žpƒ„|‚†zy“‡‚”ˆ}…””™‚‹Ž…ŠˆˆwŠ€|qtz‚‚~zu€„}zx|{„‚ƒ|y}‚…‡ƒ„‡‚„††}~†…ƒ‚~}}z|~|z~~{~~ywww|}zy{|~}zxy~€€ƒ|{|€‚~~€…„€~~}}~€~}zz|}|{||{zy{||{{{|€€~}~~€€€~~€~}|{{|||{{z{{{{zyz{{{|zz{{}~~~}~€€€}~€|}{}|}}zzzy{{~{|~€}}}~‚€€€€‚‚ƒ„‚‚€ƒ‚„‚€€€|€€€}}~{y|||{xz{{y|yywyy|{zvzyz}z{vx{{yzyyz|||~}}|€€€‚‚„‡„‡…†††„‡‡„……†…„‡„„ƒ‚†ƒ‚……‚„†„……ƒƒ††„„…‚‚ƒ‚‚‚€}|}~{vutqtqomnjkifgfefeeegehcgeknts{|††ŽŽŽ’’“˜”—•”Ž‹ŒŒ‹‰‹ŠŠˆ†††ˆŒ‹‹‘‘““”‘’—••–”’‘‘‹‹‹†…‡~}zxrpooolihgfb__WXVTSSRSRSUYU[`aagrt~†‰™Ÿ¦£¤§¥¥¦¤¤Ÿš—ˆ~{xywy}{xƒ‰“˜—œ¡¡¢¡ ¢žœš“—“‹‰ˆƒ‚€{ywsrtqrqomkjigda[WXTROLKIIMMQVV\il}ˆ”𠤡©°¨®«£¨¦£¡š”‡‚vtvqotorwxuxxyz„‰’›Ÿ¡¦¦¡¤žœœ–—˜“ˆ„ˆ|€€}„‚€{yxutxqwyprnjfe][STOPOEJGGLIMSX`ep}‡˜Ÿ¢§ªª®­©¥¤›ŸœŽ’ˆ~yrlkiifnnnww{ƒy€‡‰ŒšŸ¦­¤¦¨››š‘““’‘ŠŒ‹……{|}}‡‚…Š‚{|~ustw{tsspifb\ZXUSPQQQLNKMMRY]bpv„ŽŸ£©¥£«¥£ œ”˜–ˆ‹ƒxuomginpou{€ƒ‹‡„“—œ ž ££œ—˜‘Œ’Š‹Œ‰ˆ‡„ˆˆ€‡ŠˆŠ‡ˆ„€{yvzznzzkoiea\]XWSQSOFPHHMSPY]gr{˜›¡¥¤¨¨§¥žž–•™‡‰ƒ~yponjoqpu€…ŒŠŒ‘’š‘•˜—–™˜•–•ŒŠ‰ˆ‹ˆ‹ŠŒ‰Œˆ†‰‰‡‰Œˆ†‰ƒ„}zsttsspnngeg_\[WWSQSPKPVSNY`banvz„•𢥥£¡š›“‹ˆ……‚|tussst~~Š‘‘‘“‘ŽŒ“’Ž’”–””Ž‹‡‘‹Ž“Œ‹‡„‰ˆ„†„†ˆ~wuuqwxpsylnkfeb_[UUSQOLNPPSZ]_hepw„Š‘œ¥£¦¥žœ–Žˆ‡‡|€|xwswsx|}„ˆŒŽ“‘ŽŒ‘Š˜“’–•••Š‹‰‡Š‹‡Šˆ„ƒ…„…€‚„~ywwtpstrppniiibZ[RRKLKJKPXS[`c`lv|„’ž£ª¨¤£œ–ŽŠ‡†ƒz‚~zyvtppvyzƒ‡‰’””‹Œ†‰‰Œ•‘”“‘“…‹‹Š‹‘‘’‡‡ƒ„‚…„€ƒ„‚{}}tutvptwtpqqkcec^YUVUSXUVW[]Xdhbgsqr}ƒˆ’𛖙𕋉„~~|ƒ|s~xy}}€ŠˆˆŒ’Œ‹Œ‡…—““’‘Ž‹‰‰ˆ‡ˆˆ‰‰Œˆ…‡„…€‚‚€|wvwvrqqpmmifgf\[YQPQLKLLOKQ[bYapjn{~‰Ž’›žžœœš–’‹‡€|{zxvwzzuy{{~€‚†ˆŠ‘Ž’‹‹Š‡…ˆŒ‡‹“Œ‹“Š‹‰ƒ…Š‚„††Š‰„†‡„‚{ƒ€z{z{zyvrvtkknfdfc__[TUOOPNIMVOWW_ihenrw„–šœ¤£Ÿ˜—™†‚|vstz{vzzyrz~{ˆ‰Ž’•‘“‹‚‚€‰‰‹Œ‡…Œ……†ƒ‹Ž‹Œˆ‰‚|~{yyzy||zzwxzvmonkihjdda^[TRNNPMSSX\`bdcgnkp{}Ž• ›—’„€€|{yzy|yxo}}t}‚†ˆ“–‹ŽŠ‚І„ŠŽ‘Љˆ…„††…‰Š‰ŠŽ…€…{z~y|~yy{xsuspnmjfiff]__TQTPPSOQXYY\degloux‡–ž¢¡—“’ˆ‚zzzxyz{zywyyy}„…ŠŽ’“••“ŒŠ„ƒƒ‡Š‰ŒŽˆŠ‰…†‰Šˆ‹ŽŠ‹ˆ‚€zy{z{wy|tuysqpmihkhadb\ZVSPSSVW[bcfklpppuzˆ“–œžš˜”‰„}zzzzz}|}|}€„‹‹‹‘•’““ŽŒ‡ˆ†‰ˆŠ‹ŒŠ‹‰ˆ‡ˆ‰ˆ‹ŒŽ‹‹Š†ƒ‚€~~}z{{wuuuvrmpoiikgbc_\YYWWVY\^\`ccgjkpt{„Š“™›žœš–Œ‡†|‚}|}|~„ˆ‹‘“’•”’‰‡……†Š‹Ž’Œ‹‰ˆ‡‡‡ˆŒŒŽŠ†€~~{{{|}{zyxvtrpoljkjjjgfa]YVTUUZ[^adggkkptu~‚˜˜£ žŸ—’‡„‚€}~~|{||‚‡‹Ž“”””‘‘Ž‹‰Š‰‹‹‰‰‡†‡ˆŠ‹ŒŒŒŒˆ†ƒ€€~}}|{zxxwwvtrpnlkjihec`][XUVVXZ^aehilnpty…“–˜—–—““Œ‹‡…ƒ€~}|{{{|‚†‰ŠŒŽŽŽŽ‘‘“’‘ŒŠ‰‰‰‰‰‰ŠŠ‰Šˆˆ‡…„‚€€~|zywwvutsqomlkigea^[YXVWXX[Z^_behmpv}€‰’™š™•‘‰ˆ†…„ƒ€~}{z{|~„‡‹Ž‘Ž‘“”••”“ŽŒŠ‰ˆ‡‡‡ˆŠ‹Š‰ˆ…„‚€}{yxwvtspnliigfea`^[ZXWWWXY[]`dilprx€…”•™™˜—–•“’Œ‰…‚‚€‚€~€}}€„‡‰ŒŒŽŽŽ‘’””•”””“’’Œ‹Š‰‰‰‰ˆ‡†…ƒ‚€~}zxwwwwvvspnjiffedb`][XVUVXY\^`bdhmsy~„Š”˜™š›™˜—’’‘Ž‹ˆ„~}~~ƒ…††‡ˆ‰‹Ž’”—˜™™—––“‘‹‰‡…ƒ€€~~|zyxxxxwvvtsqolkigfc`][YXYZ\__cbdehmu|…‹’•—˜———˜™™™˜–“Љ……„ƒƒ„„„„……†‡ˆ‰‹Ž‘•——˜˜–—–•–—˜™˜—•’‹Šˆ‡†„ƒ~{xvtsttuuutsqomkiihhhfdb``__`cehklnqux‚‡‹‘‘••–—™˜š™™——•“‘Œ‹Š‰ˆˆ‡‡‡††††ˆ‹‘’““”””•–—™™š™˜–•“’Ž‹Šˆ…‚~{zxvuuuttsqommlmmmmmkkihfggijmnooprsvy|ƒ†‰Š’“–•—––––•”’’ŽŒŒ‹‹Œ‹‹‹Œ‹Ž’“’’“’“““’“‘‘ŒŠˆ…ƒ}|{zywusqnmllllmnommljjkmortvwvvutuvy}€…‡‰‰‰ˆ‡†‡‡Š”•”“’ŽŒŒŒ‘”••“Љˆ‰‹ŽŽ‹‰‡‡‡ˆ‰‹ŒŒŒ‹ˆ‡††…………„„‚€€~}}|{{zyxwwvvuuttsssssuwyzzzyywwy~‚€€€~€‚‚ƒƒ„…†‡‡‡ˆˆ‰‰ŠŠŠ‹ŒŒŒ‹‹ŠŠ‹ŠŠ‰‰‰‰ˆ‡†…††††††‡‡†„„„ƒƒ„„„„ƒƒƒ‚‚€€€~~~|}}{|}|}zz||||{}~}{}~~}|}€~}~€‚€~|}ƒ‚€~‚ƒƒ„ƒƒ„†‰ˆ‡‡†ˆŠ‹‰‰ˆ‹Œˆ†ˆ‡‡‰ˆ‚…‡†††ƒ„„„„ƒ…„„ƒƒ‚ƒ‚„ƒ}†‚~|€€{|~}€y}}|}~{|‚ƒ‚~€„„…€‚ƒ‚…ƒƒ‚~€‚€€}~€‚‚€‚„ƒƒ„…†…‡ˆ‡‡‡‡‡†ˆˆ‰‰‡‡‡‡……††……ˆ†…ƒ„„„ƒ„‚ƒ‚€~€€€}}~~~}}}}|{{{{|}}}~~~}}~€€€‚‚‚‚‚‚‚€€‚‚‚‚‚‚‚‚ƒƒ„„„…†††‡‡‡‡‡ˆ‡‡‡‡‡‡†…„ƒ‚‚‚‚‚‚‚‚€~~~€€}}{zzz|}}|{yxwxxyyyyzz{{{{{{||~€‚ƒƒƒ‚€€‚ƒ‚€€€€‚ƒ„„…………†…†‡ˆ‰‹‹ŒŒŒ‹‹‹‹‹‹ŠŠ‰ˆ‡†…ƒ€~~}{zxwwvttsqrrrrrppopppqrstvwxxyyz{}~~‚„…†‡‡‰ˆ‡‡‡‡ˆ‰‰‰ˆˆˆˆ‡†‡†ˆˆ‰ŠŠˆ‹ŠŒŒŽŽŒŒ‹‰ˆ‡†ƒ}{z{{yxusqomjihihiiiihhghilnqrtvxx|}…†‰‹ŽŽŽŽŽŽ‘’““““”““““”•”””“’’Œ‹‰‡†ƒ}|{ywusqnmjhheedcba^_]``bdffilmrsu{}‚†Œ“–––˜—˜˜š™œœš›˜”‘ŽŒŒ‘‘Ž‘“–—™™——•’‘‘Ї„~|{yxwvtsnkigfffedddcdcbabbefhikkmnoqtx~‚‹‘””—˜™šœž ¡¡Ÿ™—””’‘’Ž‹‰ˆˆŠŒŽŽŽŽŒ‹Š‰‰‰‰‰ˆ‰ˆ…„€~{zxvtqnkigdba__`abbbdeffhhnqu||‚„‡Š‰Š‰ˆŠ‹Œ‹ˆ…„ƒƒ‚ƒ„‡Œ‘•”••—™›ššššš™–“‹Šˆ…ƒ}{xwuuuvvvtrqonllkllmlkiffdefhilnorsswyz~„Ћޑ‘І†ƒƒƒ‚ƒ„„„„‚‚ƒ†‡‰‹ŒŽŒ‹ˆ‡‡„„‚€~zwtqnlhecaa`__^_`addhgklmoqtx}‚…Š‹ŽŒ‹Œ‘‘”””“”‹‹Œ‘‘‹ŠŠ‰ŠŒŽŽ‹‰…ƒ‚€€}}yurnmkkkkkkkkjjjklnnnpoonkjijhklknllnotwy}…‰‹Ž’“–˜––••””’‘‘‘‘‘‘‘‘’’’‘‘ދЉ‡…‚}zyxwutspoljgcb``_^][[[[]\`acfilpsw|€…‰ŠŽ‘‘ŽŒŒ‹ŒŽŽ‘“”•–•”“““““’’’’‘ŽŒ‰†„‚€~~~|{xvsromllklkjjhhgghiklmlomopstwyx{{{~‚„ƒ†‡ˆ‰‰‹’”••—˜˜˜–•”““‘‘‘ŽŽŒŒ‹Š‰ˆ‡‡†„ƒ€€€€~{ywvttqrqqrqnnkkjmnnqstvvwwxzz}‚…‡ˆ‰ŠŠ‹‰‹Š‹ŒŒ‹‹‰ˆ†„„„„„……†††ˆ‡ˆ‰‰ŒŽ‘‘“““’Ž‹‡„€}|yxvtronllllmnmnoooqrrtsuuvy{}~‚„‡‰‰‹‹Œ‘‘’’“““’’‘‘‘‘‘ŽŽŽŒ‹‰‡…ƒ}zxvutttsrqppnnmlmnorstutsrrsststuttutvwxz€ƒ…†ˆŠ‹ŒŽŽ‘’“““““”“””“”••””“’’‘‘‘‘‘‘‘ŒŠ‰ˆ†…ƒ€~}|{zxvusqonlkjihgecbabcddehiknnprux|€ƒ‡‰Š‹ŽŽŒŒ‹‹ŒŒŒŒŒŒŒŽŽ‘‘‘““““‘ŽŽŒ‹‰‡„~}||{yxvtssrrsssqqqppppqqrsrrqqrssutvvwxxxyy{}€‚„†ˆ‰Š‰‹’”•––•”’‘Šˆˆ‡‡‡‡ˆ‡†…„ƒ‚€€€€€~}{yvtrrrttvwvvuttststvvxxyyxyyyz{|~€‚ƒ„„…‡†††……†…†…„„ƒ‚€~~€‚‚‚ƒƒ…†‡ˆˆˆ‡……ƒ}{yxwutsrrrqqrrrrrssuuwwxxyyyyyz{|}€ƒ„„……†…‡‡ˆ‰‰Š‹‹‹ŠŠ‰‰ˆ‰ˆˆˆ‡ˆ‡‡‡†…„ƒ‚€~}{zxusqpppooppqqqqqqrsvx{}}~}||ywwvvvvvwxyxxyyyyz|~€ƒ…†‡ˆ‡‡†……„……ˆ‰Š‹ŠŠ‰ˆˆ‡‡‡‡ˆˆ‰‰ŠŠˆ‡…„ƒ‚€~}|{zyxxvvuutssrqqponnmlmmnooqrsuuvwxxz|~‚„……„ƒƒ‚€€€€€€‚ƒ„……†††‡‡†……„„ƒƒƒ‚ƒƒ‚‚‚€€€~~~}|{{zzzyzzzyxyxyyxxxwwwwvuvuuttttuuvwwwxyzz{{}~€‚„††‡‡†„ƒ‚€€~}}~~‚ƒƒƒ‚‚€~}~~~€€~~~~~~€€€~|}||||}}}|||{|{zzyyzzzxxwvuvtttsuuvvwxxxy{{|~‚„„††…„„‚€~|}}||{|}}|{{{||}~€‚~}~~€€€~~~€€€€€~}}||}|}{|{{|{zzyyxxwwwwvvuutssrssuvvwwwxyz{}}‚‚‚‚‚€~}}||||{||||}}~€€€€€€€‚‚‚‚€€€€€€€€€€€€~~~~~~~}}|||{{{zzyyxxxwwvutssrrrrrssttuvvxxz||~€‚ƒƒƒ‚€~~~}}}}||||||}}~€€€‚‚‚‚‚‚€€~~~~~}}|||||||{{zzzyyyxwwvvvuuttssrrrrrrrsstvwwxyz|}€‚ƒƒƒ‚‚‚€~}}}}~}}}||}}~~€€€€€€~~~~~~~}}|||{{{{{{zzzzzzzyyxwwvvuuuuutssrrrrsstuuvwxz{|~€‚ƒƒƒƒƒƒ‚€€}|}|||||}}}}~~~€€‚‚‚‚‚‚€€€€€€€~~}}}}}}|||{{{{{{{{{zzzyxxxwwvuuutstttuuvvvwwy{|~€‚ƒƒƒƒƒƒƒƒƒƒƒ‚€~~~~~~~~~~~€‚ƒƒ„„ƒƒƒƒƒƒƒ„„ƒƒ‚‚€€€~~~}||||||||||{{zzyyyxxxwwvvvvvwxxyyz{||~€‚‚ƒƒ„„„„„„„„„„ƒ‚‚‚€€€€€€€€‚‚ƒƒ„„„„„„„…………………„„ƒƒ‚‚‚€~~}}}}}}|||{{{z{{{{{zzzyyyyzz{{{{{|||}~€‚‚‚ƒƒ„„„„…………„„„„„ƒƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚ƒƒƒƒƒ„„„„„„„„„„„„„„„ƒƒ‚€€€~~}}||{{{{{{{|{{{zz{{||}}~}}}}~~€€‚‚‚‚‚‚‚‚‚ƒƒ„…………„„ƒƒƒƒ„……††……„ƒƒƒƒƒ„„„„„ƒƒ‚‚‚ƒƒƒƒ„„ƒƒƒ‚‚‚‚‚‚‚‚€€€€€~~~~~~~~~~€€‚‚‚‚‚‚ƒƒƒƒƒƒƒƒƒ„„„„„ƒƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚‚ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚€€€€€€€€€€€€€€€€€€€€~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚€€€~~~~}}}|||||||||||||||}}}~~~~~~~€€€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚€€€€~~~}}}||{{{{||{{{{{{{||}}}}}~~~€€€‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒƒƒƒƒƒ„ƒƒƒƒƒ„ƒƒƒƒƒƒƒƒ‚‚‚€€€€~~}}}}||||||{{{{{{{||}}~~~€‚ƒ„„……††‡†‡‡‡‡ˆˆ‡‡‡†††……………………„„ƒƒƒƒƒ„„„…„„„ƒƒƒƒƒƒƒƒƒ‚‚€€€€€~~}}}}}}||}}}|{|||}}~€€€€~~€ƒ…ˆ††…„„„„…………‡‰ˆ‡…„ƒ„„ƒ‚ƒ„ƒ„„…††…„ƒ‚ƒ„„‚‚‚ƒƒƒ‚€€~}|}}{zzxxxywwyxxxxywwxzyzz{|~€€ƒƒƒ‚€€‚††††…†„ƒ„€ƒ„„ƒ‚‚‚‚ƒ„„‚‚‚„„‚~„„‚||}~{{x}€~xx|zvtszyzuutv~vsyswyyzyy|y}|{„z€~†‚~„€„}…ƒ}‰~‚~‚†z†{ƒ‚}†„{}Š€zˆ„wŠxƒz„}y~z{€vu€}q{xxswuqyovyuszxvq€~sw}~zƒƒx‚ƒx‡|…~…‰~ƒƒz„€~„‡€|„…}€€~‚‰~ˆ~‚„‚w‡{ˆ}vƒ„vt‰v~x€vy€twz{x{vv{~rv{{uwzn€}~y}…y|†|}‰„zŠ}…†~‰}„€†‚~}Ї|zŽ…vŒz‹}|‰ƒ„|…†|ƒ€€}…~}‚~y„{yƒˆp}„|pƒz|{vx{ƒnvƒ{sr„|m}jv„€|sˆx‡y‚}††t‡Š|{ކ|~‹‡}€Œ~†{…ˆ€‡ƒ€…‰~{Œ…y’z€ƒ‚‡y~†„q|Š{s‡…nŠmx…ws‡o||i†vzs€|oˆ{k†€€r…y€Št‚€‡|ˆ{‹ˆz‡|‹€y”{vŒŠ}‚Žs‡l‰Œ|‡~€‡ƒƒvŒ€tx|ˆr{ƒƒvv‘j}†pu†|k„sxs{{wq‹qu†|tyŠo~ˆz{‚z“pŽ|„zˆŽp†Š€{ƒ’|w„“{x††‡xƒ•m‹†ŒkˆŠ‰ux–|w‡„…lˆˆytˆ†tx€p}†vs}Žhw€„jy|‡lzƒ‚h…‹vp„‡w}‚„{|ƒˆ}|„Š~†‡|‡„‚Š{”z|‹‹wŽ€~Š„x‰‰{…€Š}†…€ˆ}nІvxyt•sv‰„ox‹yvr‰yv€z{~p„…n‹qu‘|n……}}z‰ƒy‡„~€~~‹‰|„ƒy†Œy‘{…yŽ~Ž}€€‡u”‹l“Šx‚‹yŽx}‹~ˆ{{‡…v|€…u{z‚}x|ƒ}}t‚‚z€yˆt‹~‚s‡p‡|„‚Š‚{…{ˆ…ˆ~†t—|ˆˆ€‹€ƒ‡‹‚}ކ€‰…ƒ‡„‚Ž|…ƒ„~„~ƒˆzˆwŽu„‚y€‹ty‹„o„„}y‹yz†ƒ}}„Œs„††|Š‚‡…yuˆx†ŠŠƒ‰ˆ€Šˆ†€‰†Šˆ†€„™z’€Š†‰x”ˆ~}‰ƒ‰…†‚xŒˆ€tŽ‘k‚•vp–…vw“€w‡‚~xŽy|žuqŒuy–ƒ€€Ž„{ˆ€€‹Š‡…„‰’~€…“ˆ……“}‘‹}‚Ž‘y—‰€‰„‡Š‡„‚ƒ†Š~‚Œ~†~‰ƒ~€‰{†|€Žn„‹|zˆ„|}‰†‚sއ{‡~‡‚ƒ†ƒ€‡Œƒx•†x‚‡ˆwŽz„Œˆ|‰†‚’„}‰…Šˆ~Š‚Œ€€†‰‚„xŽ{x•rˆ…}zŠ|€…zƒ~~…Šj†Šu†|ˆu„w~‡‡y|„Š„w‹ŒkŒ‹zw’…tw‹yx”‚~…‡„}ƒ}Ž€z”q†…~†t„s€‡w‡~w†‡qu‚vˆ~„zpŠ‚†vv…ˆt}„|…s‰€u†|‚tˆ‹nw–€t~tx”uqœum{†€w…}…u‰~€|‡x„~‡w†zu“„r|ˆpŒ…h‘~s‚…xz“th•‰oz{{…†f‡Žb‰}rŠzy|€†p…zƒ…r}‡{ix”}kˆ‹h‡‹i†ˆvƒwr˜…cz~tz…zz†uxˆ~t~ƒ‡}ys‡‚ux‰zrŽzyxx“sl{~|y{€€w€„ywzy‚ƒn„‚s}€xt†…ot•{n|†o‰wy‡|}s„„{v|}ˆv{…u{y€ƒn‚‚{€ykŽƒgz~r}zƒz|z|{…s}‚uv}{x€y‚|zw{xƒz}vz~zjŒ‚ztz~~~vy~€xrŠ}sw|…ym‡†qw†}r‚€p†zvw{vw‰ƒsy~~{r|†z||€zqvy…yzu}xƒ{xx‚Šuu{~zt„‡{|txƒ~y~~yuz‚zzy{‡„suz{‚x~ˆ‚ztv~z|…|yvxx…|~~wu|}ƒ‚z||~{v{„|x|x}|x|v~zz|z~}z|€€|z|‚~{€|v}ƒzy€yz€|wy}z}|€yyy|{z~~€xz}‡€u}ƒ{{„~{‚‚|}}~|}z‚zx}v{~zy€‚}yz|}|y{|z}„yy~x{{~€~|z€~y|}}~}yz|€|||z|{}|{{}}}‚z~zy~~|~~}}{v{€}~~}yx{|}€|z||yy~}~|z{~~z€~|€}‚||~}~€~~~|}~}~~|~|x{}€}z{{~~}}~}}~~}~€€}}~~~€}~~€€~~€}~}|~~~}}}~~~}}}€€~~~}~~€€€€€€~}~||}}}}|{|{||}~}}}|}|}~~€|€‚„‚ƒ‚ƒƒƒ‚‚ƒƒ‚€€€€~€€~~€~~€}€€€€€‚€€€€}|}}~}||}}||}~~~}}~€‚€‚‚‚‚……„…„†††††ˆˆ‡†…ˆ‰‡…‡††……†………ƒƒ„„ƒ‚~~|||{{|{zzyxxyyyxvwyzywxxwy{{{zzz{{~|}~€‚„…„…†…†‡ˆŠ‹‰Š‹ŒŒŒŽŽŽŽŽŽ‘ŽŒŽŒŠŠ‰‰‰‡†„ƒ€~|yywvvtqponnljjggfegfeeedfhjkklnpsw{{~€„ˆ‰‘”˜š›ž ¢¥¨¨§¥£¤¥¥¥£Ÿ›™™—–”‘Ž‹Šˆ†††…„ƒ€€~}}}}}|zxvsrpmmihdb_[XVXXXVYW[Z^cgjmnux‚‰”—›ž¢¦ª¬¯²³²°°°°°®¬©¥ š™—“‘Œ‰ˆ„ƒƒ‚‚€~‚„††……†‡‰‰‹Œ‹‰…ƒ‚„„ƒ}yrnjihea\TQPRTUUVTUVY_elpst{~„•šŸ¡£¦ª°µ¶¸¸µ´³³³±¯­§£Ÿ™˜—“’އ„€€~{zzz}€‚‚ƒƒ„†‡‰‹ŒŒŠ‡……„…„€|vqmjhe`ZTPOPPSQTONPUZbejmpvz„‰’•›£¦¬¯³¶¸¹·¶µµ´´±¯ª¤Ÿš˜˜•‘‹…‚}}||zxvuxy|}‚ƒ…‡ŠŒŒŒ‹Š‰ˆˆˆ…€{xsqmid_ZTQNOQQNNJLORX^achjpy†•šž£ª­±´µµ···¶µ´²®¨¥£Ÿ—’Œ‡„~}{xwuuuuvxz{||ƒ…‡ˆ‰‹‹ŒŒ‹Šˆˆˆ…|xurmkc^YSRSOPPJMLIPRT][_fgotz€ˆ‹‘•šŸ¤©®°³²±³³µ¶´±«¦¢¢ Ÿš”І„‚€}{wvuuvvwxyz{|…†ˆˆˆ‰ŒŽŒ‰ˆˆ‡†ƒ}wsomhe^YUPOMMLMKLJLMPV]`dfhox}†ŒŽ•—𢍭±±°±²²µ´²°¬§¤ žœ˜”ŽŠ‡‚~{zxtsrqstuwwxy{~„…†‡ˆŠŒŽŽŒŠ‡†††ƒ}wspnieaZVQOOOMNHNGLORW[Z_dhnux‚ˆ‰Ž‘—Ÿ£¦©ª¬­®¯²°¯«¨¦£¡Ÿš˜“Œ‡„€~|xwuttuvwwwxz}€‚ƒ„…‡ˆŠŒŽŒ‹‰ˆ†…ƒ€{wsoljeb[XSQPOOORLPIORX[a^cekr{„†ˆ“™ £¥¦§©ª¬­®­«§¦¢¢ž™—‘Ї†„{yywxxwwwwy{}€‚ƒ…†ˆ‰ŠŠŠŠŠŠ‰‡…„‚~zvsqnkgb_[YXTVPSSSTRSUW\^dfikmu{‚†‡‰Ž’™œ ¢¢£¤¥¨ª©¨¥¢¢Ÿžš˜”‘Œ‰ˆ…„‚}||||||{{{|~€ƒ„…†‡‡‡‡††‡††„‚€~|yutqnkgea__[\XWUVVZXYW[\_dejmorv{…‡Š‘•™›žŸ   ££¤¢¡Ÿœšš—•’ŽŒ‹‰‰†ƒ‚€}}|}{{{{||}~~€€‚‚‚ƒƒ„„„ƒƒƒ€~}zyxutqmmjhedc``\\Z\\\]^__dafiknpqvy|‚ƒ‡‡Š‹‘’•–———™™›™š—–”–”“‘ŽŠ‹ˆ‰†ƒ„‚~€~}}|z}{~{~|~}€€€€‚|~|{z{|wuvrprqokkjjiliffhggjjkilnlporrvxxz{}}‚ƒ……‡‡ˆ‹‹Œ‹Œ‹Ž‘ŒŒ‰ŠŠŒ‹‡‰‡„‡…ƒ…ƒƒ„€}}~}~}}~}}~}}|}~z}{{z|}xzyzzwvzywyutvuyvwvwwvvyyvuzyvzuzwx{yywzzy{zzy|{{}}}~}}€ƒ}‚‚ƒ‚‚‚‚‚„„‚€ƒ}…}~€}|}{|{|}x||yx~{zy}zzz|yzx|}||}{{{||{}}{{}}}|~||}y{}zx}}w|}xy}yx~w|{|w~{|z|{x|x}}y}{|z|}}{|}{z~}z}{{}{y€zy~}z{{~w|v}~z}{|}}|z|}z{}}z|~{|‚y}z{}y~}z|}{|||z€z{}{|€z}||~}|‚y}€|}{~€x~|{}€{z}{z}}}y|€w~}~v}~~yz|{~~~y€€||€€|}~{~€}|~‚y}y}}€z}~x€|z|}~~}}~€}}€~~€}€}~ƒ}~|‚~€|€€}~€}~€~z€|~ƒ~}…}}‚|~ƒ~€}‚~~~~~{€€z~z{‚}z}}|~|~}~‚}}~€€}‚}€‚}ƒ~€‚}‚~‚~„~|‚ƒy‚€}€}‚}€€~‚‚€ƒ€‚ƒ‚‚€€‚}‚{‚€z}~}~€~|~|~}{„~€€‚€‚€~‚€€€‚~€€€€~~ƒ€~€„€…ƒ~ƒ„‚ƒ‚†‚„ƒ‚‚„†€ƒƒƒ‚„‚‚~ƒ„}ƒ}€€€€€€€€€…~„€‚‚~…‚€„€‚€€‚€€~‚€|ƒƒz€…}|…}~„€~‚€€„‰~……€ˆƒ‚‚†ƒ‚†„‚‚„„ƒ‚‚ƒ…€€„‚€€ƒ~‚~‚‚}~„€~ƒ€‚€€€ƒ€ƒ€‚€‚€€‚€ƒ{€‚~~~~€€|‚€~€€€€ƒ~†‚„ƒƒ„ƒƒ‚‚€„€‚‚€€‚}‚~}…|€‚€€€€‚z|€~€~~||}|}~€|~€y€€}|‚{‚|‚}}„€€~~‚~„|€}€ƒ|}~€|ƒ}€}‚~|‚€}}|€~€||€~|€z|ƒ~{~~~‚{|ƒ{z…{y}~|}{€~~}€|~€|€~|ƒ€|~{‚€z„|€~~„}z…‚|~~yƒx‚€|‚~~|€~€€|~€~‚y|ƒ~y€x€y€€|~|{„w}~~{|~}}~{|€}{~~}|{~|}€}|‚~}}}„|zƒ~~}~}€~~~€€{€€|~}|}…||‚~~|€€~}~}~€|~}{}~}y‚x}‚~{~~ƒ|}~~Šˆ•“’’‘†„|ztmljklltv{…†‹‹Œ‘Љ‡…‚€||uvvxwx{{ƒ…‚~…†~~„}~{|€|}|{~~}}€€}|}}}z|~{||{~vz||{x}x{|||||}|x{~€…ƒ‰Š‹ŒŒ‹††€~|vtttrruty{y|~‚€€|yyzyy||}€‚„„†‰ˆ‡†„ƒ€}}|{zyxyy{zz{}~~||||zzzyzyxz{z{}}}|}|z{zyz|{z||{{}|zzzyyyyywwwyxyz{{|z{||z|}{{|{z{|zz{{{{{{||{z{||yz{{yyzzzxxyyyyxyxy{yy{{yz{|||||{{|{z{||}|}~}||||||{zzyxzyxyzyzzz{{|}}||{z{{z{{{{|{}~}}}||{zzzz{{}€~}~|z{{zzzz{||~€€~}}||{{{{{||}}}~~~~}~~~}||{zzzzzz{|||~~~~~~~}}~}}|}}}}~~~~~€~}|}}||||}}}|||}}}}}}}}~~~~~~~~~~~}~}}}||||{|{|||}|||||}}~~~~}}}}}~~~~~€‚‚‚‚€€~}}}}}}}€€€€~}|||{{{||}~€€€~}}}}}}}}~~~€€€€~~}|{{|||}}~€~}}}}~~~~€‚ƒ……††………„ƒƒ‚‚‚‚ƒƒƒƒƒƒƒƒ‚€~}}}|{{{{{{|||{||}}}~~~~€€€€€~~~~€€€€‚‚ƒ‚‚‚ƒƒƒƒƒƒƒ„ƒƒƒƒƒ„„……………………†……„„ƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚‚‚€~}}|{{zzzyzzyyyyzz{{||}~~€‚‚‚‚ƒƒƒƒƒƒƒ‚‚‚ƒƒ€€€€€€€€€‚ƒƒ‚ƒ‚ƒƒƒ‚ƒ„ƒ„„„„„„„„ƒƒ‚€€€~~~~}~}}}}}|||{{z{{{|}}€‚ƒ„…„†…†††‡ˆˆˆˆ‰‰ŠŠŠ‹Š‰ˆ‡†…„‚‚€~~}~}||{zzxvvtsrqqqqqrstuttuuuvvxxxxy{}€‚„ƒ…„†‡‡††„ƒ„„†††††‡‡‡‰‰Š‰‰‡ˆˆ‡ˆ‰ŠŠ‹‹Œ‘‘‘ŽŒŠ‰ˆ‡††„„‚~|zyxwvtsrrrrrqqqoommmmmmmmnpqrtuvvwvwxxyyy{|~€ƒ„†††††‡ˆ‡††……†‡‡‰‰ŠŠ‹‹ŒŒŒŒŽŽ’“”–•––—˜˜–•”““’‘‘ދЉ‰ˆ†„‚€}|{{{zzzyyyyyyxxvvttsrqonlkjijihhfgffhikkmosvy}€ƒ†‰ŒŽ‘“•—˜™š›œžœ›˜—–”‘‹‰‡†…„ƒ‚ƒ„…‡ˆŠ‘”•˜˜™šš™™—–•”’ŽŒ‰‡„‚|xusrppommmmooqsrtvvxyz{}}€€‚‚ƒƒƒƒ€€€€€ƒ„…‡‡‡ˆˆ‰ŠŠ‹ŒŒŽ‘’’’“’’‘Ž‹Šˆ‡†††…†…‡‡ŠŠŒŒŽŽŽŽŽŽŽŽŒ‹ŒŒ‹Š‰ˆ‡‡‡‡ˆ‡ˆ‡ˆ‰‹‹ŒŒŒŽŽŽ‹‹Šˆ‡„|{xvusrqqopqqsuvz|‚…‡‹Œ‘’’”––——˜™™˜—•”’‘ŽŒŠ‡…ƒ‚€~|}{|}~„†‰Œ“–š›Ÿ ¤¦¨¨©¨¨¦¦¥¤¢Ÿ›™–•’Ž‹Šˆ†…„„ƒƒ‚ƒƒƒ„ƒ„„„ƒƒƒƒ„„ƒƒ‚€€~}{yxwvtttstttvvxy{|}~~€ƒ…†ˆŠ‹‹ŒŠ‹Œ‹‹Œ‹‹‹‹‹Œ‹‹ŒŒŽŽ‘’”––˜™ššœŸž  ¡ ¢   žœ›˜—•“’ŽŒ‹‹Š‰ˆ‡††…†‡‡ˆˆˆŠ‹ŠŠ‰ˆ‡†……ƒ‚}{ywtqnmkhhfeeefeffimquw{€„ˆŒ’••—˜›  ¢ ŸžŸ›™—–”“’ŽŒ‹Š‰‰ˆŠ‰Š‹Ž““–––˜šœžŸŸžœš™—•”’‘‘ŽŒ‹Šˆ‡„ƒ~}|||{{{zzzz|z{yyzyxxwwvvuuuutuuvvvvwy|€‚…‡ŠŒŽ‘“–˜˜™›œœ›™—”“‘‘ŽŒ‹‰ˆ†…„‚‚ƒ„…‡ˆ‰ŠŒŽ‘“”—˜š›œ››™˜––”’‘ŽŒŠˆ‡„ƒ€~~~~~‚ƒ„„…„„„„„‚€~}}||{{zxwssspqonoprxy|||}‚…ˆŠŒ’’‹Š‹ŒŒŽ‹‹‰ˆ‡†…„ƒ‚‚‚ƒ„…†…ƒƒ„……†††‡‰ŠŒŒ‹ŒŽŒ‹ŠŠ‰ˆ‡††……………„„‚€€€€€€€€€€~}}|{zxvtsrqpponmlljijiijknruwuvwz}€€„…‡ˆ‰ŠŠŠ‰ˆ‡†‡ˆˆ‰‡†…‚~~~~€€€~€ƒ„…†‡‡ŠˆŠ‰‹‹ŒŽŽŽŒŠ‰‡‡†……„„ƒ‚€}}}|||||{{zzyyyyyyyxwvtssrqppnnkkhggffggghiikkoqstwwz{~‚…†‡‰ˆ‰‰ˆˆ‡‡†……ƒƒ€~}||{zz{{}}}}}~€ƒƒ„………ˆˆ‹ŠŠŠŠŠ‹Š‹‰‡†…„ƒƒ‚€€~}}||{zzzzzyyxxwwvvvvutssrrqpnmlnmmllkjjghhfgfeeeefikmoqqrsuw|}‚„ƒ„ƒƒ‚‚‚ƒ„„ƒ}|zzzzyzzzyxxxxz{}~€‚‚ƒ„„‡ˆ‰‰‹ŠŠ‰‡†………„„ƒƒ€~|{zzzyyyxxwvuttutututrrqpponoonnlkjihfgfgffgfeedcdfhmnoopprsvwz}~‚‚‚‚€‚‚‚‚‚‚‚€~}{zzyyyxxwwvuuvwyz||~}}~€‚„…‡‡ˆ‰ˆ‡‡‡†††††„ƒ€~}|{{zzyyxvutsrrssrrrrqqqqqpqppoommliiihhhfefedcdcecegillmkmnqswzz~}~€ƒƒ„ƒ‚€~|||||{zyxvvuuwvxxyyxxxyz{|~€€‚‚‚ƒ„„…††††„ƒƒ€~~}|{zxwvuutttsrrqppoooooooonnnmlklllkjhhghfgededffggijkllmortwxyz{{~|~~€‚ƒƒ‚‚€~~~}|{zyxwvuuvvwwwvvwxxyz{|~~€‚ƒƒ„„………„ƒ‚€~}|{yxwvuuttttsrqppppooonnnnmmmnmmnllkkkjkjjjiiihhijkkmnoqqrrtvyyz{|}~~€€€€€€€~~~}|{zyyyxxxwwwwwwxxyz{||}}~~€‚ƒƒƒƒƒ„„„ƒƒƒ‚‚€~}|{{zyyxxwwwvvvuuuuutttssssssrrrrrrrqqqqqqqqppoppppppppqqqrstuuvvwxxyyz{||}}~~~€€€€€€€€€€€€€€€€€€€‚‚‚‚€€€€€€~~}}||{zzyxwwvuutsssrrrqqqpppppppooopppqqqrrrstuuwwxyz{|}~~€‚‚‚ƒƒƒƒƒƒ„ƒƒƒƒƒƒ‚‚‚‚‚‚‚‚€€€€€€€€€€‚‚ƒƒ„„„……………††………„„„„ƒƒƒ‚‚‚€~~}|{{zyxxwwvvuuttssrrrqqqqqqqrrrrsstttuvvwxxyz{{|}~€‚ƒƒ„„………††††††††…………………„„„„„„ƒƒƒƒƒ‚‚‚‚‚‚‚‚‚ƒ‚ƒƒ„‡ˆ‡‰‹‹‹‹Šˆ‡†…ƒ‚‚ƒ„„„…„………„ƒ‚€~}|{yxxxwwwvvvvvvututssssssssttuuvwwxyyz{||}}€‚ƒ„…„†††‡†‡‡‡ˆ‡‡‡‡‡††……††…‡†††‡‡‡‡†…„„‚‚€€€€€‚‚ƒ„…†‡‡‡ˆˆˆ‰ˆˆˆ‡ˆ‡ˆˆˆˆ‡ˆˆˆ‡††…„ƒ‚€~|{zzyxxwwvvvuuuttssssssssttuuuvwwxxxyyz{{|}~~€€‚ƒƒ„………††††††‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡†††……„„„„ƒƒƒƒƒƒƒƒ„„„„………†††‡‡‡‡‡‡‡‡ˆ‡ˆ‡ˆ‡‡‡‡‡††††…„„ƒ‚€~~}|{zzyyyxxwwvvvuuuuuttttttuuvwxxyz{{|}}~€€‚‚ƒƒ…††‡‡ˆˆˆ‰ˆˆˆˆˆˆˆˆˆ‡ˆ‡ˆˆˆˆˆˆ‡‡‡†………………………††††††‡‡‡‡‡‡ˆˆˆˆˆ‰‰ˆ‰ˆ‰‰‰ˆˆˆ‡‡‡†††……„„ƒƒ‚€€~~||{{zzzzyyyxxxyyyyyyyyyyyyyzz{{||||}~€‚ƒƒ„„……††‡‡ˆˆˆ‰‰‰‰‰‰‰‰ˆˆˆˆˆˆ‡‡‡‡‡‡‡†††††††††††††‡‡‡‡‡ˆˆˆˆˆ‰ˆ‰ˆˆˆˆ‰‰‰ˆˆˆˆ‡‡‡††……„„ƒ‚‚€~~}}|||{zzyyyyyxyyyyyyyyyyyyyyyzzz{{||}~~€€‚‚ƒ„„……†††‡‡‡‡ˆˆˆ‰‰‰‰‰‰ˆˆˆ‡‡‡‡‡‡‡‡†‡‡‡‡‡‡‡‡‡†††††††‡‡‡ˆˆˆ‰‰‰‰‰ˆ‰ˆˆˆˆ‡‡‡†††††………„„ƒƒ‚‚€€~}}}|||{{{{zzzyyyyyyyyyyyyyyzz{{{|||}}~~€€‚‚ƒ„„…††‡‡ˆˆˆˆˆˆ‰‰ˆˆˆˆˆˆˆˆˆ‰ˆˆˆˆ‰ˆˆˆˆ‡‡‡‡‡‡††††††‡‡‡‡ˆˆˆˆ‰ˆ‰‰‰‰‰‰‰ˆˆˆˆ‡‡‡†††……„ƒ‚€~~}||{{zzyzyyyyyyyyyyyyyyzzzzz{{{||||||||||}}~~€€‚ƒ„„…†‡‡‡ˆˆˆˆ‰‰‰‰‰‰‰‰‰‰‰‰ˆˆˆ‡‡‡†………„„„ƒƒ‚‚‚‚‚‚‚‚ƒƒ„„„…………†…††……„„„ƒƒƒƒ‚‚‚‚‚€~}}||{{{{{zzzz{{z{{{{{{z{{zzzzzzzzzzzzzzzzz{z{{|}}~~€‚ƒƒƒ„„…………††††††……„„ƒƒƒƒƒ‚‚‚€€€€~~~~~}~~~€€‚‚ƒƒ„„„……††‡‡ˆˆˆˆ‰ˆˆˆ‡††…„ƒƒ‚€€~}||{{zzzyyyxxxyyyzzzz{{{{{{{{{{{|{|{{{{{{zz{zzzzz{{||}~~€‚‚‚‚ƒƒƒƒƒƒƒ‚‚‚‚‚€€‚‚‚ƒƒƒ„„„„…„…………†††††††††††……„„ƒƒ‚‚€€~~~}}}}}}}}}}}~~~~}}}||{{{{zzyyyxxxwwwwwwwwwxxxxxxyyyzyzz{{{|}}~~~€€€€€€‚‚‚‚ƒƒ„„„…………††‡‡‡ˆˆˆˆˆˆ‡‡††††………„„„ƒƒƒƒ‚‚‚‚‚‚‚‚‚€€€€~~}}||{{zzzyyyyxxxxxxyyyyyyyyyzzyyyyyyyxxxxxwxxxxyyyz{|}~€‚ƒ„…†‡ˆˆ‰ŠŠ‹‹ŒŒŒŒŒ‹‹‹Š‰‰‰ˆˆ‡††…„„„ƒƒ‚‚‚‚‚‚‚‚ƒƒƒƒƒƒ‚‚‚‚€~~~}||||{{{{{z{{{{||||||{{{{{zzzzzyyxxwwwwwwwxxyyz{{|}}~‚ƒ„……††‡‡‡‡‡‡ˆ‡‡‡‡‡‡†††……„„„„„„„„„……………††††††††††……„ƒƒ‚€€~~~}}}||{{{{{{{|||||}}|}}}}}}}}}||}|{{zzzyyxxwxwwwwxyzz{|}~€‚‚‚ƒƒ„„ƒƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚ƒ‚‚ƒƒƒƒƒ„„…………†…††…††††††††………„„ƒƒ‚€€€~~}}}|||||||||||||||||}}||||||{{zzzyyyyyyxxxxxyzz{|||}}~€‚‚ƒƒƒ‚‚€€€€~€‚‚‚ƒƒƒ„„……††††††………„„ƒƒƒƒ‚‚‚€€€~~~~~}}}}}}~}}}|||}||{{{{zz{zzzyyyxyxxxxyz{|||}}~~€€‚‚‚ƒƒ‚‚€€€€€€~€€€€€€€‚‚‚ƒ‚ƒƒ‚ƒƒƒƒƒ‚‚‚‚‚€€€€~~~~~~~}}}}}}}}}}}}}||{{zzzzyyyxxxxxwwwwwxxyz{{{||}}~~€€€€€€€€€€€~~~~~~~~~~~~~~~~~‹Š‡‡‹‹††‡ˆ„‚‚ƒ~~|{z{zzzyzzzz||z{}}€ƒ~~‚ƒ}€‚}€{{~€zv|€xs{|wtv|vox|sr{vyvvy|{u{}|}}|€|€ƒ~€‚‚|~~}}x}„~x}…}|{‡~{|‡‚y}ƒ‡}z€†€}}‚ƒ~|„~w„{{€‚~xƒ}z{ƒ{x}v~u{~uz}}x{yyz~zwu|vr€~pt€zsr}vwwzwx}|wy~{z€ƒ|{„|‚{‚~~~~}}~|~{{€€z~z~}‚}{‚}z„‚{€ƒ€~„~ƒ€€ƒ{‚}~|€}}~{}{{|y}|}}|y{‚zx~}z{y|v{xv{}ysy{wxvy{uxwyt{u}zw~~zx}}~~y}„z~~‚~zƒ€{€~€€{{ƒ{|~}{~yz€~{}y‚|z|‚€€…€{„…{‚„{z‚{{~|„{y{|w~||{{wvws}ƒr}€zw}u|€vvyz{o|}yn€sx}~s}xu‚~}‚{ƒ€wˆ}ƒ|}…€~~|~~z‚|y…‰€}†zƒŠ~~‚‚~~}|}~|{{€z{‚z}„}~}„„z~‡„s‚„}z…zzxx|}}yxx€ztxyu{{ys}zwu{t}u{~qw}z||w„y{†}}zˆ~}‰zyŠ…uwŠ}z…{}†xy€€|{}‚x€y{€xƒ‚z}„{€|…}€‚€|‡}|‰}{†yƒ{|y…vwˆzyv‡|vt†‚sv€xuƒ}s‚~xx{€vr†zry‚vt}x~yxu|‰i~€vy~}xŒyxƒ‚€y‚ƒ}~‚~€|€€€ƒ|~~…y‚x€‚yz…|z{…yxˆ~wŠ{y…ƒ{~ƒ~x~rІx†ˆrwv‹…xzƒ†|{z„{y…‚u€ƒx{†yt|‰|y}yz‹xr‡~}v{}|y{‚~w~y€w}†u||€~~xzƒ~zz‚†t~}„{zŽu~‡ƒv†ƒ|€‰z{†ˆt‚‘o€‰„w†‚}xŽ{|…‡xy‰€}„{†}‡|€‚|‚‰~v‹~}„„uƒ‰}}z‰}ƒu‰‰t€„‚}|{‡€u|‰yv|‚‰sv‚{u‰rw‡r„~s€‰vz„{~}‚{†x~Š|oŽˆq~“~r‹„|„z†…vˆ…€yƒˆ‚vƒŽ{y„~{…„~y‡†„zz‚„|…€„‰|x†x€†ˆx‹‚vŒ‰v}Š„‚x…‹{|‚‰x‚„‡q‰~€{|ŠkŠ…q…{‚}x„x„ƒpyŒ|~v‡~v„w~Š{u‰†|x„‹x~yy†‹}y’„v}•‚r…ŒŒw}ƒŽ€{yˆx€‡v{‹r{‡{€yŽ…y‚ˆy‰€„€|Œ‡|‚„Œu„Їw…Š‚†y‘|}ˆ„vƒˆƒ|€‚†t‰‚{†~y‚…‚y„zz’tw‚…|y€ƒ{{}‰{x‚…y„†zyŒ„t‰~~z€†v}–z‰Œ~ˆƒƒ}x‘ƒ„ˆˆ‰y€„z„‡~yƒ“{}ƒw‰ˆ‚~”pŽ‘‚y‚‰x~•{‡Œˆp‰’€y‚Ї€„v„|‚‚|{€‹}zƒ†„u~‰ƒy}„‚…u‚Šuzw…Š„nˆŽ}{|’ˆ|x‡‡yŒ‚„‡…~…ˆ‚ƒˆ†††’|‚Š’u‚•‚ƒ‡ŽxŒ‚‚xŽ€z†„Œ„~€ƒ{‰Œ€ƒŒ€€‹‰‚†‚‰‚Š‚}~Š€}Œ}z†ЉuŠŒ|‹„|‚sŒŠ~{„…ƒw„‡~|‚ŠzuŽ‚|~‚…†u‡‚ˆ}|Ž…x€Ž„…y……€‰ˆ„ŠŒ~…ˆ†Š~‡†‡‚ŠŠ„Ž€„Š}ކˆ„ˆ…Š€†…€€‘‡Ž…‡‚‚€Ž~‡}€‰~„…Œ‚|‡ƒ}ކŒ‚~‰‰}†ˆ|Ї‡€{‹†}‚‰~}†…ƒ‚‡‚}ƒ‡|‚ˆƒ}‡‡ƒ‡€{Š‘tƒ††„‡†wŒŠ‚„‡~…vŒŽ„}‰Žzƒ•yމ†‚‰ƒ‡††‡„‚‡‡†‰ƒ†Šƒ„Ž|‚Œˆ…„‚„ˆ‡†ƒˆ…„‹€…‹~‰Š}‹‡†…„‚‡†……†‚‰}ˆƒ{†Šz~‹ƒvˆ‹w‚ƒ‰~|ˆ€‡€‚‚„€†~…ˆx…ˆ€€…‡ƒ{…Š„|„‹ƒƒ}‹ˆ‹z†Œx†Œƒˆ|ˆ‘yƒŽ…€ˆ‰„ˆ‡ˆ~‰‹{ƒ•ƒy„“ƒy‰Œ„ƒƒŠ€Œމ|…Ž~‡†t‡”ƒy„„„Їzˆˆ…y…Œ‚|‚Ž~|„І…}}‘z~Œ{„€‚…„ƒ~ƒŠ{‹ƒ{ˆƒ€…ˆ…|ˆ…€†ƒŽx“w’‰~Šz}‚’…x‰}‹ƒ‚Œ†‚…‡ƒ„}‘}‘‚}І„…‡‚ƒŒ~‰ˆ}z–ˆ{‚•{—{}’‚‡‚І‡ƒ‚Šy•€rŠŽ‚{|“w†{‹|‹ƒz€Šƒ|‰…x‡…yŠ}Š‚€|Šˆ~~ˆ‡~†€‰ƒƒ~ŠŠ}…„{€€‹…ƒ†ƒ„{€Ž‹|’ƒ|ŠŒ…y†–{‹…„Š{„~ƒ‡|…z‰Š‡‡€‚ŒŽ}‹}{‘ˆ€Ž†|Ї‰‚~‹Ž|zŽ‚‚‚„ƒ~‡€ƒ„}‹€w‰…|…~…}†‚~}‹ƒw…‹~sƒ~Šz…Œ|}Œ€|Ї|‚‹z‹Š~ƒ|……Š‚}Žr††x€”…v€“ƒ~‚Š„‡‚…ƒ‚ƒ‚‡‚ˆ~ƒˆŒƒƒ‡‚†„~‰}„‡†~€‹„{„Š‚y†|ƒ…‡u†Œu‰†x{Šˆwy~~€‚„~y‡xŽwy‡†zz‡~|Š||†„yƒ‹sƒ„ƒ€…ƒ~‚ˆ~‡…€ƒƒ…ƒ€ƒ„~Šƒ}}Œ…|€‡‡|‹{€Š|~‡…ƒ~y…x€|{‚„‚|‡…z€‡€€|†‡y„‚€€~„€{„…}{€†|€}€€€}€€y€†{w…ƒw|…x|†rƒ†x€z‡~t…†zsŠŒrxˆ‡uz†{„ƒ{zŒ€w‡}}„€‚|ƒ…‚vŠx‡€}‚‡~}€…|‡|{ˆ}|€ƒ‚‚x€ˆzƒ€|}‡€}|‚~‚~}|„z~ˆyt‡|w}‡{z~}u„‡vx„y~‡sz‰{|z‡yzƒ|}x‚wy†w€ƒu{†~y|…w}‚„{{‚‚~|‚~|‚„€z€‡}‚z„„}€…{€„~‚}ƒ€|‚€‚}x„~{ƒ}‚{~|}}}„{w‡‚tƒ}{‚~zyŠx€„u{ˆzy‚‚yz€€€xw€{~y}„~z~~„y~ƒt‚|w}€~}yƒ{~}€y~‰xz‚‚€~x…‚|‚ƒ{|ˆ€z~†vx‰ƒx|„…ywˆƒ{v†„{}€…}€|‚~z€…z{‚z}~}~€}|{ƒxx‚€y~y}„}u‚ƒz}z‚zx~‡zy|€‚}z|†}zv}…t|…}vyx‚vx†y}zƒ~x|€}v€‚|v€|{y„y~~{‚€t|‚yzƒq~…~yu‡‚sz„||€zu…€xy€ƒxv}„{u}€~zy{€~xw{|wy†zr|‚}zw|}{zyxwy€|w||u‚rv‚~syxt‚xz{||y}~wz~zvz}yv~}|x{uuƒ}zzv~~zzz{|z|~w~vyzxw€uxzyzxzr€~xxzsxyr€uv~~yv{z{zu~|vx}yt}{u{{uz{xvy~wu{y{xxz|{qxwvz|w{x{zs{{wyzt~{oyƒwqy~vw|xvt{€ss€tv€yq}|t{yy{|wu}{wu{}srzrzzuyt~|su~yq~v{{xr|vu{}ws{}wu{zsv|{rxyyxr{zwtz{vu{ztv{{rwy}ypx~xrw€wqy}{qu{|tt|ytxxz{puzou€zov~yst}mv~{tty€tp}}tu~|ty~{wxz{wvz{wvwu|vpyyuvuzypv~tq}yvuz|vuu}}qu{wyxzyzyvzwuz}wsz{vvz{tvxxxxxuw|{su|{tw{yyyyvy}yuw~ywv|}ty|vu|}ts~|uxxxyqy|sv~vt|~xvv€wv{}xt|}vu|zz{tz~xtx~}ux}{v{~uv}{wzy||ysz€ywzz|{x{|vz|{wz~yv~|ww{|xw}|zw|}zyy{yx}|wy~zz}yv{‚ƒ~„~‚~‚€€~€€€€€~€ƒ}ƒ|ƒ~€‚}‚}‚‚}€~‚}€~€€€‚~~~~‚~}‚€~|‚~€~ƒ|‚‚~€€€}€€‚~}ƒ€€€}~‚€}‚€€}€‚€€~~€€~€€€~‚~~‚€~€€€~‚€ƒ€~~‚€€‚~‚~€‚~‚~€€‚~ƒ€~‚€‚~‚~‚€‚€€€€€€€€~vtwm-5.4.7/contrib/vtwmrc/sounds/warp1.au0100664000015300001300000000753210237645271017207 0ustar callumfid.snd ÿÿÿÿ@Ýÿ÷cgÿ]ÿwgëk_wcÿcUëWOçïgëïÿgkãßçÙËλÝL5018cçY÷̾¹ÍÇÁÀ¼ÌʹÊÏÛÕw>:=:=?JLãwkÎÌYëÄÛÙkJçÎ×ÉÑSJ=6;8:ÿÓÀ³½¹¶¼·¼¿»»ÀÊÄkYg?=QH>K?717>408:DYÕÊÎÿÁÂÂÂÈÊÆÊÍÊÑ×ÙÝãëëïwë]ïßÿÝãÝççÝÿ÷ÿ]kUQ[UUU[_[cÿwÙÛÝÊÊÊÍÙ_LwccYÙwYo@UHJëëßÍ]ÅoÉͺ¼×ÝSS>UMÈÎU::/6/./12=JÁ½¯³´¾µÑ®»²¸½Ê½ÁU;A?HÕ½®µ°»­®·½ãç><9+*'./38>UçÙÁ»¯°»°¼ÊºÁÛÏwãçME95/)-(&5<69HGFSÇÁ¼®ª¬­¯¯®®·w¿ãSÿDD÷÷[wßÑHkQ<=4,+/538NÿÑÀÀ´µ¬µ¿¾»µ³µ¯¹¿ÃMB;58674<44:49A;<>;çc׿½È½µ¿¶°µ¯·³¯»·¸ÇÍëNC646/1)&)(*0/>J:?D=KD]Ì¿¶­ª¤«°®¯·ºëÿS@863/1.4//69IJwÁ´²´®®«¨­±µ¶Â¾¹¼ÑÁcYA;D=794/:>:S÷Éľ³¶²­¦§§¢ Ÿ¢¢£¤¢©¯¸µÀ·»ÅÆÃÉÁÝY_ÏSK72+++)&$($%*37;980+*$$#!"%+/?ݲ«¥ŸŸŸŸŸŸŸŸŸŸŸŸ¦­¹Ñw>0$!'.@Ó¹¬«©¨«µçM;/)(4?Mç·¯´¾¼ÄM8<]wKSÎM<4EO>L¾ºÄû¹ÅH76?J¿»×kïɯ߯ggÓÑÃwQÊÓUÕÝÕcãÆÑoÝçÿg[oëÏo]wÛ[cëïWcë÷Q]wkgSÿ÷×[cÓÝçÝãoQÎ×k]oÛg]SwcãwMwÝYÛocwãÑcgßçëcgÕÿ×o÷ÿwÊÓÕoÿÛÙ]g÷ÎkÿçÿUÝÿÝGëëgYcÿwë]wLÓã[[[]ë×÷ckÕkOÏïg÷ÙÝÓoÕßÕÍ[[ÕÑgJwãw[IÝgLÙÊÙIYÑ¿÷QÕ¹ÓÎÏ?4ë½JKL¼gSôÁ_ÿ´»@WÑc9D8C4N3HCÇçÊ´·¹¿°wUN;95B82:Kßüʾ³±½÷ë?L<<;;>=OÊ翲¸¸³ÃëQc<9?Hßw½Åº®º¿ë[S<]G8DABÉ믲±»¼ÆÿOLD@5AQgľÊÁ¸ãDHL6<0-5DQÙ¾±°±­¹ÁÊÙÈowL_·cÎÆÀw976+',(6M<έ­±Ÿ­Á°½ÙÃc.Yë:YÃßÌÌ24;.09>O޽³¹¶ÉË··ÏÉÛÝcQYwÙUcBJ.2//AMw½¸¶¹ÆÌ»»»ïÑwçW_gßßYL=//.59gë»·³¿Í¼·º¾ÝÏçcwÛëÝãGG8//49QÕݸµÀÍ¿³ÃÓÓÝUÌÿÕëÕWH;05,0GO]ºÀ¿×gÆ­÷Á¿gǸçËÌçÂL4F8'L8;ÓwÕµH̸g¼¿kÂÙÛ»ÃÓ¶ÆggL455?AHkÂÎgUONÉÍÝgݺ·µ³®®¿»Ý<5+('"&'/6>c­ŸŸŸŸ¡¨¯¹w<,%! %(8[Û³®ª«¬«¬¬¯ÎÇ]H:6-+''(+/KÕ¯¢¡ Ÿ¥°Å=+&$!&2F¾­§¤¤ª¸w2)$$)9Ó¸©©«¯·ç4+$,;Ý·¯«²ÛD46DoÁ½ÏëãçQWQÙÍYßgçëgc[okwgÝÛÿÿwcë÷ÿw÷cëçcë_÷ëcÛckgçwwßQÛÿçßkÓoÿß×ëwÓ]×gÌÝ[ÑgÙãçcwë]Ý]ÙMçÓYç]çYÿÿwgçcëÝ[Ý_×_ÝÓ_÷ïÝÝkoÕNÏw_ÈLÃÝwÕIÕNcÕ=ÈDÅÁE¼NÕÕwÑ=ë?[ÝQÊÊÁÉÇUA6Hëʸ¸ÝÍëI>;EMËžÈçgY8@EN߸»¿ÆËWW>H_ʽ¹½w÷A<4D=]ÍËÎÙÊgg[YÎɾ³Á×g@0/:7oãßÍL¾oÝËã»»²®ÈÂÿM<6/2@[Qͼ¹ÀÅÁÛçÃŶÈc?::NE8<=:¾³°·ÕÙßoû¶ÙÉã878:=ë[Iÿƶ³½µÈïQÎÂÄÊg<8.6AÛÙÑÛÙÊßÕº»ÇwãL]cß]=,+*EǶ³¯ÎMLÅÆ½ÀÀÝo9KHC82).?ʰ¨¬ÎDëκ¯°Ñ8/7I_;2)'+<¾©§©¯¯¯­ª°J.!%.7]­¡ŸŸ¦¸Q7,,-16>BS檨©®¸½ëD2+ *<»¨Ÿ¡¨ÂN6+')2ÿ³¥Ÿ£¶C.%&DÛ¯¬®É@4EÊÆO?ËUÍS×IÉ[É[@ÛÉëQYÙßNwk÷ãcWãë÷ëÿïw]ãUgwo]ooY]Qï]wcwÿ÷gko[ëkÿ_ãÿ÷ëÝãëçÝëÎ÷ÍÝÿçëw[ÝwÕgÓÿ÷çwçÝßgÕcÛëwwgÿ÷MëãÓãÝãëkoïLëSwãÏÍÿÙgLYQWÓÆÆÏçLD@c_»Í×wc?EFÛÅÄÓÕÛU>S÷ÕºÑÓwo:G>ÝÊÅëÿwKFY×ǹÆãÎW>B?ÿÍcNW]@WkÁ¶µÂÊÿI>@E]QW=ccFB]k·¿ÎÙ¸½¾ÛQ66:No[>cHÍÄÍßÕ»ÂÊÙ>58?_wUM]ÝÇ¿çÝĺÊÍo<8BLÍwoUÙÓ¼ÅÙk»ÍÙN@2=@Èç¾S»÷·È¾E»çã?D2-4MßÓο¹´¯±ÉÄÀ]:-)$*4D𦡡£±ë2&#/븥Ÿ¢¬¾B.+'(4Yʸµ´±¬¯´Y1$-o»£Ÿ¥²F)!2Ѭ¤¢³E/%,Y½­¬ÈO,8͹´ÎK7ÑÝwÿÌÉgkYÊëç_ï[gëãÿwëëëwç÷ÛgÑkçgÿkoc[kckYk÷wcïk÷wwkw_wwkwkë÷ÿ÷ÝëÝëççÿcï÷[gSïwïÛÑÝÕïwwOUgoÝÛÕÉ×gÿLBOWÎÉÎÍ]@=Kθ½Éï>CKÙ¼¼ÓoA;Gÿ¿¸ÍÈE@Gݼ¹¾ÛH<W¿ºÈÎO8:AÆÄÄÂYEEc»¹¼Ê[;6=ëÊÛÙNAIï¼´¹Æk:;8JwFU@>J̰¬¯¿O4,.<ÝSʼ@ÎUÛÁ×´Íã>/Q@AIÄη¿ÕÝϼ¶çD:48MMÎÄ·¾ÌãÊ¿¸Ê==26KEÝÌ»¹ÌÑζºJ<51?KIÍÌ·È×Êʵµ[B<5w_½çÛ×÷²º½UDN8ÛL]ÝJç;_ѯ¼oÎw÷ãcSSH:31Q¾­¦¨¦¬Ï6%'@Í­ Ÿ ®J-(#)3BÌ´«¬«¬¶Ï8" 0ɨ ¡¶?+'IÁ¦¥·[+'6k´©µk,-S¾­Ê46WÈÝWQ÷[w[÷Ý[og÷ÿw÷ïÿ÷ãëoÿã÷ãwãÛÿëëkëcãëëë÷ëßïÙßãÿ÷k÷cßëÝëwÛëãÝëßoçëÝïgÓgÕßßÑÿÎë×kKÑQËëãÍ[ÍQëgL¿ç½ÑYSALÉÆÂÎS>GQÉÁÉÇc@W[ÆÁÍÊO?CDÍÓ××LD[뽿¿ÁgF>>ã÷ë_>:Oѹ´»»ÎUK;F@=@3:Q©¬¬¸ÿ@.49L3WËݾY¼¿»¶Q]B:>85:BQ4>ÿ»¶Åʸ»ÑW6/0_LDMÝ»¶¹ÄοÆk>-,LNwwÿͽ´¯¼ÕUWo6+/7κ¾Ï׿°±ºÛ>Y?82':ãµ²kÛµ¨¬¾7F÷Y<&%1Û°°²«¤£®C(!*,L¿¦Ÿ¤®Ï<2/.23=¯««­°½Y-+ߪ§«¼?+&+L³¥¡·:)1ǯ©ÀD<ÎÀWÑÕk;40H×=[¶ÑÕÁ¸¿ÂÂJ40-25:YÁ±­©§´Ì=( )G»¬¤§¯ÁF5-/<>N÷¿¯ª«¯Ê>-$+FŨ£¬½<(#+S²¢¤³K+'3ÿµ®³g6:Õ²·k:QÙÝ[;FGク¸»¾×YcJ;:60=[¼¬¨§­Å<-(&/AÀ±©ª°Ë?2-08?Ѿ¸´®ºÆc:,$&6ͬ¥¡®w8&$6o¯¦¯Î4(/@¼©®»>->Û¸ÈJ2OÛKF[ÁÙÎÂç÷ãÙçÿUG93/:ÿ¸¬®¯´ë8+%$-UÄ­£¦­È:+)+2Uç¾·²¯°¯ÉL.#!'D»¥¢ªÆ9*':İ¥®ï;()FÍ®©µk4Iº´¼I-/EYkÝÊÇÂûºµÁëJ7442=Dë¾´®«©®¼A-#!(:ɳ¦§­·k:83/9>Iθ­ª¬µ_:)#/E¾©¥­Î5%#.w±§§½@.'4缬´Q9:ïÂÇN6ë»ÇQQLwÛ÷ãcoo÷oëwwÿ÷÷÷÷vtwm-5.4.7/contrib/vtwmrc/sounds/doh1.au0100664000015300001300000000702010237645271017000 0ustar callumfid.snd ð@ðÞÐÎÓÝìàãn_]WXgd^i`a{`bõçÙàvêäïíj^êÙtûòõ}PWl|íìãçìéÚq^_hïíöóçÝê\_öåån^VZdèãloÙÌÕáäêín`jdcRXoûèñ|_wîãåïßëc``a]ÙÏê}gw_LPÝÌÊåkêÎÈÓxfdUzh_WOPSZOÞÅ¿ÃÕxqQVÝbfKJãäÎÙKDKljM?^êóÊåË¿ÐËÊÅÆjgêÅÉg@MHH5/09JIß½«¢¢®ÎqØÉG1..1J4+**OÇ·®¦£ž¢¯dØÈµ],!%51.&J¶¤¡¢¢œ˜¼40NF 9X5-Ö§Ÿ £œ™™©7(0%+_ɹ¦ £¨¤¦­°°´<%++-´Ÿ¶×·«¤©Á>:éº)&XW- ¹››²14«©µÑ佦¦ò';10£”—«4-𯬻V=à§ž¸1<-!0¦“”­$D®¬Á^[¿§ª,$5=4<³™“?𨦵H:Ù¢›Ç4ÁÆ4E©šŸO] ­@3࡜É3¯¼Ag½¬®ä++߯©®c0K©žº6ª¥ÒYØÃ½i-1¿­ª´I,O¥ž¸!>§¢½ØR@VõX\··µ»^/>¯¥³*.»¤¬ØZ<=ÔÇÏ´±ÁÝ9(>¨®-3¯¡¶RF;^ÅIG¸²¼Ë=,H«¡¬/'Æ¡§¾[*.ì¹²©´Æo42\¬¦³--½¥¯nC/E»»¾¶¿ÑÚ63ù©¡¶)%·©¬µ9*I»´©³×êC7U¶­¬H#!:­¦·ß,-[·°«´Åñ.,N¨ž©:&Ó¦ª¼U')JÀ«¤°ä9'6»Ÿ Â(.¯ªªÙ,.IÏ®§³ºM/9Í®©Å05ƪ¨½:/0G¶­©±Æ>1->µ¯»D/,BÀ¯­Ì3 (O¬¡¨É/(.À¤¢·6.¹¥Ÿ±3(,<¶§©¬S-1K¯©µ8!'h¶¨²íG=A̶«¬µ>78ôª¯Ï,9¾ª«×>06À¨£«Ê0,5\®¯Å6!6ªª×=5AÙ¯¯µÝ9V¼«±Y$9ªŸ¢Á+*J®£§»8-:²¤¨å&=¸Ÿ¤¼>.-G½±«µf/1=½¯¯»4&)Eª¢¦·640¶ª¿U4-9Jµ¯«ÆP,))/HÀ¨ª­ÙC9\É·µÎJ+-6§¨·8!(H³©­¹eLßÊÅÍÂÁ¼^4-$1×¼¯»>BUÓ¸·Åæ>;¿®©Â3&ü¬¥­ÚH7:è³­ª¿E42}´°¼?$!4»ª©´\EGDZ­¾åNJî}ÌXG3+,3íº¬»ÂOSÒϼûƿcd<.5.BmÂʾÞal?ÅļËż°°ó>*Aµ¢©¿U-4EZ»±¿òWóº¶Ï:$&Z¬¥Î3*/Ö¯©¬jK>X·»ÐB#".9¯«µ»`?A]Ƭ·È~JÍØÎÝ/,$'9Ç®©¯Å^=L`¸¿¶ÐhS[ÚÚ[20,Iÿ¶²´ÄN>6ìv¸®ªª¿>%-G§Ÿ¦®J/1Gɨ«º\4@ËÃÆN& 3¼Ÿ›£l"'ܨž¥½v@ν»º[94;ϳµ¹J)) ,Öµ£§°ÀJIE\zÖÈÊÊ[G49>Kh?C;fĹ²¹ºÄóßÕÀ¸Æí6&&&0}ȱ±¹»ÌãÌ¾ÃÆèSÐëwî<+,(/mÙ¯­´µÚEH\л³´±½N<,"+,6ÁÀ¯«½ÆãWáÈdßÌË®»å;#$.O±­¬°~\JQÎÝÜϺ¯¬µl8#%(>¸³§ª¸¾OHJRξº»¾ÕLA;/;34@9ïŹ´¾ÄÑÔâÝÎÀµµ¼â3&#"/KȰ²¹ÈÚéÇÇÆÂ½³´¾ô4 $"+»¨¨»¿J6>c̶´·²¹ÜL, +E³¨ ¥¼H/1^±©¨²ÄÕQ<6/))*+D¼ª¤©Ø?88Ú»¯­°»ÑK3/*+5-;ÉÒ³¯ÉÉ_Zž¿»½¿³»×â3(*%=?®¬®¬ÝMK_­©°´V:8,776>>?t·±ª°êM..Nͯ¯®®³ÄG5%##+ʲ£œ¨¶}.4Nß´¬¬¨°r6'&):·º©¥¶¼åCU`óù³²¸ÜB/"$((KÁ¹¦«·¸ZJWOÚȾ¹µ¼ßO5()')DÒº§ª´»>5DNù¹³¶»q=- #&&CͶ  §ªÕAB:KÚÁ°¬¯ÃL0"6hÁ¤©©©¾Ð|MYm;·¹íH/!$&(?Ûµ¥¥«°ÏEJKiÎʹ¶·ÈO;(#%%/N¿¬¡¢«¯÷=<:H^ʶ³ºá@0$%&'>⺥£§ª¾^N=A_õ¾¶¸ÆR9($&&1]ȯ¨¨ª±ËKD?Mnç¿·¸Ãm:-))(1GЯ¨¨«¯ÏP@?67>JÛ¿·±°¸ÉãUM[cuëæßÖÛêLB<226¿°¹`<>\µª¿Z7<Ƴ¯ç66^ËÅhO:>×ÍhGP\Õ¿ßïã÷Ï·ÄßwIVXB;PÊÎÎk>FTIEE:N½¸¸¼VK˽Ñ`HhÈÆ½È\@BPBdwhRwhV×ÙÅÅÝ÷hëμ»ÍF;?=EÛÃÅÂX712?kÊÇËïVë˽Â\TENDZ¬°Õ3*0篪µwC689H`ZXA?k¿¯±¾B+.Å«¢¬ãA58>N\ÑÀÏB..?ÅÌC4@¼°Ë;.篨»^ACTOÓ¼¬¸C2M¾±¼=+7Dº®²½6$2ß°ÅHÕ© × .­£±3$5Û²¹wçϯ²»´¼¶¾.6>ïǺÀÏ9Ù¬86÷(K,\h^D>^R@JïÄÙ¿¼´·³µÅɾÌdwÿïNB=@^ZBZTïoã¿=×ÿATkÑë×ERXÀºËR:7?ѹ±¾o>2CÉÁão¼ÍëAHXÙ\·w×ëËÓïÇÊÇÝÛh÷çëoÛ×ÙÝkT\k×ÊwZwÙÑÕÛç^LKIdh`oMJXJ\hçkß¾Î\XLPEPhǽÌoJGPTÉïZ>DJkÛo^OIHZÇ÷ÇëëwïÏÕçÕëÉwçÿßÛoFEdëãÊÃÎÉïTÛdçÑÛÏÝëß`OZHPkÓ×Îw`PPïȾÀÓdw`XwFݾÑãJT>NMdÛãÙPIOïïëZK?ON`PwçÃÑÓãÕÊÄÇÑÿITÙïïç^ë÷ËÊ`kdZPKTZÎÌÏÿdokXZ``Nd÷ÙÙ××h\R\÷ÁÁÈÆÇÊÝÏÃÅÌÝÙßïw\`TKXTOIRKBCTïÛÛÑÊÝwïß×ïkdçÎÆÎãëÛwãïVNX^woTZkOVXZãÓÆÊËÍËÊÎÌÿVT\RMOLF>FBCFwëoN`ÑÉÄÍÝßÓÄÍÙß×ÌÎÙçï^V\XoÿÝÑßëëL^kßh\Xd``kÑÉËë÷oÙwd÷LkHXVhLOwßçdçÑÉÅ½ÃÆçÊÉÛwhOh×ßßokT`XïëççßëÝwowdZJBHBVMoZk÷ÛÈßÙÍÆÇÓãwh`Vo`÷ÎwdhãÌÈÃÇÓÿÙ×wÙwoÿEÿLdNITKhÕd÷ÙçËÎÓwãÊÎÏÏ÷ãPXMJEPTXXo`hëÛÙÍÍÉãÕãÏÛççÙÍÛÝdkkP`ïkVTVI`owhk÷ÝßÿowÙëÕÎçVEHVN\ïëë`ëë÷`owkÝÏÙÕïßÙ÷ÓÅÌÆ÷ko\oKRMXTVddZNVNÿÌççÙÙÎÙw×ÓÝLÝ÷h\×ÇdÛk`ÿß÷Z`ßã×hÝÙ××ÓçÝÕÙçïRLTIRLROG`ZÙÝÓÌÄÑÃÛãXÛhwÝïÕï^^ÿÌÌïdZhwïçãTÌÕßLM\wNãVÝÙÍwß\XÿoXÏoïX^ZMowÌZç^ÿÙZwKÑ¿ÊÓhÎÇÃÇÛÊÉÓÏZR^ILH`×ÙïEDRZ\wMkÕwÏÕÑÛÙ÷Ýï×Ãã×w`ÿh\X`ëïOGKNFE@ZëÑãßÏÉÄ¿ÄÌÌ×ßwk÷VNMRNLVV\hçããÛÓÎ×ÓÎÉÓ×ßïdo^Td^^TKOÿÝÏÙwkÿãÓÙßÿçhkçok`oëÝÝw\VZ\ÿ÷ïkwçÝÕÝ÷ßï×Î×çh÷ëkRMMKLMGIKhëwÝ÷ÿkTkÝÑËÎÎÏÉÅÈÊÏÙ×ÕãçÿTFHDHPPdVhhßë`o÷w÷ïÑÉÃÈÈÎËÓÝwh^w÷kLJNT^dRKGMRZkkoçÝÛß×Ý××ÏÕïÿïïÿh\XMPRZTT`ko÷ßÝÕÛ×Ù×ÝÛïïÝÙßßãïoßÿwodoÿkh`^^oïÙÌÌÍÎÝÝ÷\VPV^ÿÿd\VO\TPGGKM`ÿÝÝççÕÎÉÈÅÉÕÿZHCDGKTOZ\ZdßÌÓãïÝÌÇÅÇÎÙÛ×ÑÝÙããÿo\TZLRXXTNPdhoããçÕÓ×ÿçëÿÙã÷hVTRRTR\X`k`^ddëãwk÷ãçëÿ`dÿÏÊÙÙïëÕÛÛÕãÕçãZV\XPXZ^Z\XhhhokX\kÿï`oßÑÊÎßëwß×ïïÿÿk`k÷çÛßïÛÝÍÈÃÃÎ×ëãÝÝëRJDGMHIEHMKMJPhëëwwwwÿ÷çëëïw\\ÿ÷ÿëÿÿÿëÛëëÝÛÏÏ×ß÷ßÓÛÙ×ÝëçoXVVROLJKLT^oowïß×ÏÓÓ×ÙÝÛÕßççwoÿwïkwwd`dkëëÿdXo÷ëwkwëÿçã÷ÿÿÿßãçohwo^XRLOZ`kÿdXT`ÿëçïïßÛÝçw÷çÝÝëk\këÝã÷khëÝëëoÿÿwÿ÷÷÷khk`hkoohhoçÝãÛÛßçïÿwoowÿÛÙÛÿo÷w÷ÿ\\RVZX\ZVTXwïççï÷ÿ÷ã÷ÿÿïë÷ÿë÷ÿwooÿëãëïwoÿÿw÷÷ÿÿoÿ÷çãï÷ÿëÙßë÷w÷h^XVVXV`dw÷kowkwÿÿããßÝçÝÙëëÿ÷ïw÷k`hZ```wh``\`hoÿ÷ÿÿëçÿÿ÷ç×oë÷÷÷ÿÿ÷÷ëã÷ÿïïççÝÛãëï÷ÿïçÿkkdXVTXZRONRX\`oÿÿïïëçßßÛÕÙßçãÙãëïÿïïïÿwÿwokZX\dkkkoÿÿï÷÷÷ÿ÷ëçëÿodd``hoÿïwooÿï÷ëëãÝÝÝãëççëãëÿwÿÿÿk`ZZZ`h^\koookoÿ÷ÿÿwwÿï÷ÿÿÿ÷÷÷hdkkwhhÿïÿÿ÷ëßßãïÿÿ÷çëç÷wkkhkwwoow÷ïÿwwÿwÿÿÿÿï÷÷wwÿ÷ëçï÷ëïÿÿwkwÿoohd`dd\^ddkwÿooow÷ï÷ÿÿ÷ëï÷÷÷wkkÿëç÷÷÷ëïÿÿ÷çëç÷ÿÿÿ÷÷÷÷wkdkkkd```hwÿÿww÷÷÷ïïãããÿÿïçëïÿohkkowookhdkÿÿïÿwwoÿÿ÷÷ÿÿÿ÷÷÷ÿÿhhdhhkoowÿÿ÷÷÷÷÷ïëëï÷ÿÿÿwowoow÷÷÷ÿÿÿÿowokkk÷kokoÿÿÿÿ÷÷ïëëï÷÷÷÷ÿÿÿÿÿowwÿÿÿwwÿÿÿÿÿwwokowÿÿwwwÿÿ÷ÿÿ÷÷ïïï÷ÿwwÿÿoooowwwoÿwwÿÿ÷÷ÿ÷vtwm-5.4.7/contrib/vtwmrc/sounds/splat1.wav0100664000015300001300000000722610237645271017551 0ustar callumfidRIFFŽWAVEfmt ++fact[data[{w|‚Š~s}ˆ‹…v}zru€˜„u†ngSkny‡šžs¡«~Pk|[h„€|¨—{—‰XJk„s€zw€~sguƒ‰ˆ“TGmu“£ª£‘Œ’‘Ž……¨—q]NA:;FN^Ug†ž°ÀÃÃ÷šˆ||y{jOITtsgUR^ew€tŠ~„ÝÀƒqicap{so¤·®‹lˆ}‹ŠŠ†ƒ††xpt}~l_bc^SU_\i}€yz‰‰„‹™šžªÄÄ­¬—xbTDL]t…•˜—ˆ¡š‚~€ykZKGFHX_a€v™¥¥‹‘žž¦š•š vm‚…v`m{H3^y`l~{‹ŽŒ—¤…p} “k|«œnm‰£‚dx€™¯¤œ¤š“„~}rhkgaY_^[_ahuvuvy}Š‹ƒ‹mlzmct~|…”™£ž£¹½¬Ž€}v|zoffp€ŽŽ£¤¢¡–†{wstpc`YV`ofQMUerjYa{•œ‹¢Ÿ‘ºÑ•]€¦€x¢™w|”•‡wu|mw—™wX*8s™ºÓÒ½œ€€ueQI<99BW]lzˆ«µ¸±¨¨©¤ ‹l]X[oziSOj€OBJz®Ägßí®L+‹Öç‡;R†¡Ÿš›Ÿ¢ž}Ze€r:'OjhYL`ƒ¦­Ÿ¥½ÜÏ—i\{’|K;Zzwogw—©®²°µ°•q_„¤¢ŠpZPVEDQm– €d[bwŠ‹jgprw“¶À™wv†£Åˤzlqz‘¯ŸlC15U…ª±³“|thYef€•—vM31?k‡¶Å‡ZS_€µçýÊEGq¹øø¥M7 ‚¼Ô½˜jMf€€€t]TVakˆ›˜ˆqe\hª®Ý¿m9%'^—´À°€[S]nŠ£idaxŸµ°›oXLc€˜©>Ÿ¾g†$Pè[[Ç`VŸ”}†«‘ÑÕŠ’³ŒTO?=R>Îý©wˆH\n@m‹¬Ë©½Ñǵ•„q;;#*xv’Åp.+p”e¾çb—õ¶q^C8io2J†ƒ—ÉÔªr€­¤‡ŽžŒO'-—ó“]!Du~‘Åæâ¦L0[ ¹Á»Ä¬w6#;³èÓ¶d?ž*|÷ ;¡Ã‰ð4™ýã5bì¸py*wÎýÚX oHL{OC‚¯}]‚£³¸ª³¼¶¼”lJ?C'*lVcŽi~¡ÃÏǪ̃s~©ŠH[~I#KmŒ®ÇÌ‘f€Ž~ž¹·‘iHAICJ`}˜›Ÿ­¸¨©¬ Š€¢‚]7"P|EMˆ•‘¢¡‚€˜¨¸Ã–s[E3/7Aiš³¢~ˆ¤¯¶££’tw|emŠ¡›—“t\Qm‡•¦¦˜…Šˆ€whxmdQ\glˆSUzy’­µ¶¡UJln[ÊÑÆÁk4veTh“¥‘ˆk…†išÙ¨’nYMK?cx†›ÓØÈ¹Š\P7@X—ë€w‡¢—œ¹»ªŸoACFe©~7Cr¢ØèÖ½”^("I{qzžÇ®|§ÔÄ¡€dE%"Hw{rt”§ Ÿ£«¬¡ŠlE (…ÕÃh>^ˆ„qyxjqŒ—€}©ÝÞšJ,>~°§wO;BÜñh nòÜ1ªý¿Hs‚)‚é»M.{¼‹>H·ù±Ka‡X:X€©mÏÚD@h€¢Åäæ©Y?Lb}Žˆ„w]NW€iLaƒŠ†Š¡ÀËŸtqƒ—š’y[E;H{­¯žœ‡a?;aŽ«»¹†XPe}®¿©}`_am­«—}YBEb‡–‰‚‹†sos|„“•}fer‚“¡³°‘ˆˆƒtifn‘Žii|„‘‚qpx~“‚Œvnz†””€gYh€ŸÇ¯f-3sÁß›F"7z¶ØÚ«c>O‰¹Â`3?ˆÅت]9R€±ÚχA&¨Êm8}ºz'4¹ýEËýªý™7ýø$ÄòH•Ýq(o·‹Kh««vb‡œ|cx‚u€–ˆgfu€€{ƒš”zq|zyƒ«½„)Òš2£>†©U¦gp“vn‚m…z}zp•¼JG¬‡Y¥‘Zލ[€‹dm…{{Šƒ…€€…w~„x}ƒ‰±Hd¿So´ax«uvœ}j‡€w†}†„s~||„‡…ƒƒ„ƒ„}}‚…‚~~‚—™@†œT€Ò—8“pbÆyB­‡^£…h’l€pŽ€q‹{tŠt†ƒyyx€t„sŠ…u‰†u‚…|~…‚€…€{‡ƒyЉx{ƒ€€€}…€ŠV’~}•t‚q„Œtˆƒy¢Ux¢c“j˜~w‰|€wx·wk›5¡‘3¹{k¤ky–pŠˆt„}uvwz}„€}††…„‡‚‚„‚„ƒƒ„ƒƒ}ƒƒ‚‚‚€ƒ„~‚‰‡|€ƒ„‡€€Š~‚€€„…€{‚ƒ€…†‚€„„€€€~€„‰€}€‚~‡°mL€‚„~†ˆz€ƒ€|€…„vv€„„€ƒ‚‚€€‚€~€†Š…uf‚‰ƒ‚ˆƒ€€€€€€ƒ€€€€€ƒ“‡pd’€v…ˆ‚y}€€€{€Œ~lRšŸr}†ƒ€€~}x|€€{}€ƒ‚€€…€|‡€|…€€x‚ƒ|Їwx}ƒ}€…„€€€€€‚‚ƒ€z„|‚‡y€}€ƒ„€~ƒ}†|„€€y¥R“ƒ‚w…†ys†u{†}‚ƒ€|ƒ€}‚~}vtwm-5.4.7/contrib/vtwmrc/sounds/squeezetoy.au0100664000015300001300000000541510237645271020370 0ustar callumfid.snd í@çõ_Z]_dk÷éÚÑZCVjüëÝпÂ5EØrÚßÌñ50ÐQáZØÑ¯@)ËTÛ_ØË®^&ÆjÐåÖÆ­W%ÇbÙyÞʯ4'ÇMØaͼ³':ÆlËé½®O$ÇþÎâɲ¾$DÍpÏܲ¹&4ËXÑݯÁ#?×uÏȨ=#ÊdÊÔ¬¶NÒåÉ·ª ;ÊhÁ»©7ÆRÀ·«<Æ_¼­½ÒïÚ»¥7¸NÁ¹¥ -»L½¬¹Ù×ܺ¢-³N»®­WÈw¹£.µJ»¬¯_ÌØ²¢&!±Iµ¦Ì½`Æ®§1¸T¯¡,®J±¢ôºo¿£¿ïÐÒ ÷ÚÎÈž-¸Ñ§¼Ý¿¦Û³¾©E­±.*¨±2%¨¯3'¨°*.£¹"`¢J!®§%-¡Í¼¢'.Ÿl!ª®Í¡&6ž4(¡S&¤g&¥L,£78¦+à®'¯Í)§9:§+Ǹ)ª?3¦)˶&¨A6¦)·Ä)£.`¬%¦<;§$¬D7¨$ªA;©%©6a³(¥+¸Ý4©'¨0ÎÄ/ª'«/Æâ;¯+ª,¯<ÈßC´/«,­2¹GçÏ<·/¯-®/µ8¿LßÛMÅ>¹8·5¶6·9»;ÀDÌYçà[ÏNÅD¿=»<º<»=¼?ÀHÊPÛYø|bæOÔHÎIÌIÉFÆEÅEÆHÉKÈMÍNÎNÏZÙ]ÙfÞìrìwÜ_ÖZÕTÒNÏMÒLÔJÒLÏNÍNÎSÏNÏTÙW×aäiáfëtèwüídêeëYôaø`èrïlÜléwìlëqâmânìwìsàuôxí~xïgö÷ootitxn~nxúlnunøþþðíêéæðåìëî÷|o{looevblfg{ty÷|ü÷ìóêçöêîêíêñøtx|oûqlgumrû}øoú}óysô|õë÷õðzìxûrngmyjow|x÷íüëí}óþóíh}ssùÿl÷ùóö}ïþøîòuëöîó}~}ôzmuekoiholò}îúêìyééìöýÿiprtfkinlrsxøxïüxîìëîáîççäèënýoxnozlpdyylø{oûýxëu}{tôzôgztv{xÿúq÷ëñæöíèñòñ|pþ|utlgiuf~zwíoäøïæúì÷öêüõï~ómìorqgmziòkyñkè_Ý]àeõðWÚMÍO×eøâ[ÐMÅHÇKÌXäòcÖNÉCÅ?ÄBÂBÁEÅHÊNØ^èðm×^ÎOÊHÃBÁ=¾;Ã<Å?ËFÔRßløÝYÊLÂD½?º=º=»A¿GÈQÓraÑEÇ=¾8»7º6»9¿BÊOíàLÂ=º:µ6±6µ:ºEÈdtÏA½6¶/²/³2¹<Ç^^Ä>´3®0­3°;¾NlÍ:·/¯,¯.¸8ÌXLÁ6°/¬/®6»PÿÀ:¯.«-¯6ÀaHº/­*¬-¸GRº.©(ª/½ñ;­(§*´LF¯)¦+±O?­(§+ºí4©%¨2à¸*¤'±c2§#¨6K­$£-ϲ'¡+Ĺ(¤*Ƽ(¦+Ù·(¨2U¯'¬C<ª*¸Ñ.¨3ï¯+®W5¨-ѵ)¬K2¨,ï°&­ü+¥2;¤*v¨&¬%¶µ$®½$ªÍ$©Õ%©Æ$«»"®¯"·©#Ö¤'@¡/+¢j"®«"KŸ7%©¯ S >"­¦&-¤´ E¥À!S§¿"Q§º"C¨¶'5©°1(«±ø´·¯";²´Â¶ì¦?´mŸ5!µr ]¿Tµ«%0Â㯧*%·[¾³¨9ÀY¿½£2ÆVÅʤ%(¿IÀܧlÊTÎÑÀ¨='ÎcÊåÀ±Ø'NælÓ⿱@(Æ^ÕjÑʲG(ÉLÔuÜ຺*OçgÙgÒÜ´Ð,åcèèzÕü»Â4KonrbÝhоh9d]`iíæòÖËåGcdþòëíîäÝØèlil~êøxüôþtõì~zûlijhelñzopoitr|õvëîüéëõuÿñyòêíëþüønklwýíéííúnig_lúèáç~yf]\T]ëÔÒÙÜënbUJOÐÅÓèúöiZA9ùïíeäe\5J«ÐælmzR<;­ÁdùQkS=:®½_óVeO9>«È]zZ\H3ú¨áëbnX@2µ­ZÚVwJ7B¨È[aOS;0¶­PãOmD1ë§áïa_O3B§¼XðRU46¬²SéO[7/®®UàVY8/°­PæQX9.¯¬WãVx6/«®NõTX/7§¹VoUR,J£Ä]ZVB*¿¥oôS]7-«­OsLQ,>£ÁcbZC(»¤oðNY0/§³TaLK(Ó£ÞõMY3,¨®[mMN(Ô¢âéM[1.¦²ZhJG&»¤cÞJZ,: ÂjYN;'«©[ãHS&zŸÝæJT/,¢¶_oJE$²¥YÛBU'GŸÙãMN3*£±eáKM%´¤XÒE[)HŸáÜQM1*¢ºUûBB$°¨NÎF\)eŸíÕQR0. »`ëJD%®¨JÛCP'`Ÿ÷ÞMP2,£·ZçLI%³¥RÓIZ*=¡ÒoTP8)¨®VÜIQ&Ç£_ÕK]//£¼hlNH'¶¦gÖLg,:¢Â~]V?'µ©`öIT,8¥½ocY>)¸§ôæU^/5§´gsYD*Õ¥ÕrWQ4-®­YpOH-?¦½dûVB,Å¥ßîZT8.®­XôML/;§»ZdOI,ê¦ÖeRR>-º¨fpPX:/¯¬XøTY85«²PmNO3:ª»OoVX3C¨¿YmYT2I©ÆSeZO0F©ÇSkaP2C©ÃWíeU3=«¾Wßj]79­¸Qä]Z:4²¯XÚfb>1¿¬[ïZXB1^ªÜckVL7=¬»Yß\aB7¸­]Ù\_G3VªÙfmXN97°´TÙ^fF8ÚªÞïhWM=8³·OèNZE7S«Úñ_YG8»®cÓ]eM?:¯¾ZìS\M:M¬ØïøgeO5Ö­lã^_NC2¿²UëS]RE7´³xÕcõYE:°¸_âXiP?9±¾YùS]NA:±¾[âYdTF9´ºeÝYbTJ8¸¶bÛ\j[Q7À²eÝ[cZT6î¯ì_f`WK·Çâômc^[;GºÌ}ýrkle>L·ÈÞßöoj>G·Çùögi\e@B¼Ênybc[nF?¿¿ïæzðmêS>É»ãÝ}yb|V=ñ»áçrb^l]>K½ÑöôibfzI?ÆÁêßxóuíX>ô»ØÚê}lzjEGÁËûóckhwO>ä½âÝzxmýbGIÂÉôíjl_lT@g¾ÙÛæê÷îúMBÎÂéÜþúlîhHIÆÎìígj_nWCXÀÛëùþjhtXDøÁãÞóølõøTFÓÀØÖâélûjNDÖÊñènc^taMFÔËçæúø{ìxTKÐÈáàîönõuVIáËæëvocklYInÌÝäí÷vó}`NZÎÕèíøúýyeTNçÔßÞéïóòs_T`Üßëîýy~÷r`[óØÛßï~þ{ri\Y|ãêútnhdd^[cìßãèëíóðövrþçßßæôþogbdgh|ëèìóþûymnouú}wox|utüúvtwm-5.4.7/contrib/vtwmrc/sounds/warp3.au0100664000015300001300000001745310237645271017214 0ustar callumfid.snd" @gatenew.au.snd éLgate.wav !¶ž² hÀ* Kª™ŽŠŠŒ“Ÿ¶<" )訚•š¦Á6"   ,ש›‘‘›¨Æ7#,ö¬”ЉЖŸ¯ç1"+]¯Ÿ—‹‰‰‰ŠŽ”©Á?)*Oµ£™’ŒŠŠŠŠŠ‹Ž”œ§ºI-&)@¾¨œ”Ž‹‹ŠŠ‹‹‹‹•œ¨¼L3<̬Ÿ—Žš´¹¯µØ9( *F¾©ž£¯Ò;* )?Ä«ž˜”–›¤°Ö:*%9د£Ÿ¤¯Ê>,! #0i·§——›¢®ÌB-"+AÁ¬ ™“‘–œ¦´Ø<+!$4ò´¦–ŒŽ“™Ÿ«¾U3' ",DÁ« š“ŽŒŠ‹Ž‘—§µæ:,*7ý½°­¬«¬­°µ¾ÅÏÙççççççççççççççççççççççççççççççççççÝùççììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéÿíÿÿëÿfyÿÿ}eÿ^ÿ]ÿÿ\jrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿlo]hv_J+'0À£©- 7µ $¤Ž–¸$ +®–Ž‘ž¿/ 2¬—ŒŠŠ‹Ž™°6.µ›Ž‹‹‹‹‹‘ŸÅ,,ÇŸ‘Œ‹‹‹ŒŒ˜©Y4ᦖ“«¯»>! "^¨›Ÿ´;! &õ¥—’—£Æ/ +Ť ®Z) 4ºŸ–— ·<":µ“Ž‘šªö,"A¯’Œ‹—£À7"'J®’ŒŒ‹”ž±O,-e¬–’‘‘“˜¤Ä/ /5=ƨ©½@' )^­˜©Ï2   :º¦©¾:% *p«›¢µL* 8½¥™”—Ÿ°],)U®ž•–Ÿ°Z, "2̨›‘ŒŒ–Ÿ²T14I̼µ´´¸ÁÏéh[[[[[[[[[[[[[[[[[[[[[[[[[[V[XY[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[TYS[XSXP[SSSWUSS[YSSOSSSSSSSSSSSSSSNSSSSSPQZSSSSSSSZSSSSSSSSSSYSSSSSSSSSSSSSS?+-Öšœ"‹¨$£ŒŒ•/)£Œ•Ö2©Ž£; #©™ª. w˜Ž”­) v¡¨9 *¨””¨6 wœŽ•®, (¯•ŒŒ™¼&F ŒŒŒŸ_$+½šŽ”«AFº(=¼N  +²Ÿ©E ìž•›²3 &½£¯; X£˜ž¹.2¯˜‘–£~%%Ο‘›±5!?ª—ŒŒ”¤î+0¼ŒŒœ¸A8&õ¾<  [©¥Á/ <¬››«K %Û©°G" !X§œ£¿0Gª˜“š©^'!?¬™Ž“Ÿ¹6)>¯›Œ™«OEÅ5(?ÇN' ?®ªÀ0=®žŸ±>! ,ɵÍA/+*.8DO[d_[WSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSNSZSSSSYSSSUWSSSSSSNSSSSNSSSOS[VSPRRP[VVSWUSS[[[[SSUWS[V[[USSSYYT[[[[TVV[SZ[[TSS[WTUV[SYTWNSO>4/011"­‘Ž—­U®•‰ˆ‹™½¿3&& 7°Æ+5¦”˜±+'ÓX! 4¦Ÿ®C+ÞšŒŠ¥t¿˜¢O$½¢¹+=§œ©.%5) /OÞP82;FIII@@A<><1,-/4;>>9>^áÛÞçÿßÎåA2-*+2?Oܾ³¶½¾ÁÔKBâ¹´¶ÇH;=JZOA=CóÁ¹¶¼ÆÆ¿°ª¬¼f4/6?VÔÒÍÍÓÛÛîLFNXÝȹ³ÈJ70044444:E[ÏÉÍÏËÅÁ½¿ß=24Iȳ±¼ÎÓÆ¾½ÅÌÉÑ¿²¬®³¼ÚN`ÖÇÇéBDNͽº½Êäÿ^fyK?9¶¢Ä'#¹ Ì6¨¶$)§œµ=º—‘œß=®šžÇK¢Œˆ›“© ///§ª."x¸C).@ÛåOLL:?æ½±°´»ËÍÞÿÿkÐá9-0IêH3/@Ï»Ã^ÿÈËaZñ×Îs?BKmßJ;FW_Ê»½ÎþÓÉÁ»·¾ÔF;:=EB:;E]ÕÔoG?MÓ½¾¿»^94B~ÎÏè]Þ¹¯·ÇãSv`bMKX[WC>gÊÝND⹸ÃÜÿ_äÓµ¯·¼ÀǼ¼ÁÁ¸²²¶¿Â¾ÒÚÈÁÂÏO@NÓÍßëÿÊÀÀÇk5,5EE<8306?[ÜA>:1=\çá^?GFvÉçHHNç¾ÂÝ[]Ù»®«®¼Óʾº¼Ïã¯Ñ(=#@.¼n¶©µ©Ÿ¢†š’ªšž. ì 2Ã"Ÿ"˜Ÿ˜¼£‹”Ÿ¨+" ©,Á£  ™­©’9¤–P¨‡‡Ÿ‹‡Ž! ²«K‘. A¡š-Î(¯‘«9š¥žž  (µ® )Ö:5š¦8›Î-—Œœœ“ # 7«(-©) 6¸œNÌ”¢+½˜³oŠ™“‰¦ "À°'ë¯ *"£°4§œ5 ­¶*ªŽ™¢Ž’2©20§3 2° M½š¹%±žÌ®ŽœŠŸ%&*¢Ë4¤«<)»œÙÛ˜¥.º›½N𙹢’¨( Î4n¾#4ª;4¦½?¯29˜—° ­§0Ñ%ê¿)/ð>/OÉ]SÕÍÜßÛÛÛÛÛÛÛÛÛÛÛÛÛÛå×äÙÞÛÛÛÝçççççççççççççççççççççççççççççàÛçççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççûçóçç÷éïüçôçîëúçüçôçîëÝççöôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhUIIFEHN|ËÇßJ>C[N:H®¡¡±©¦ª³¯µ6(.<8;AÉÆIL¸«¢ž§ÔMŵ½8"CËG,(,I­ ¥À5)'2ìs0(ì²¼L//ݪž«Ý8D¿ª¨´C(*M¯§¥­Íÿ´¡žŸ­ÌÆÏIB,2ÙÚ=*)5Ê­ª»B)&.S×@(&G¸½g5+.N¹³á0$'6ûÈR."!.î¹¶Õ>:Õ¬¡£©ÃJB/14'3]O4)(>¼©«Â7&(6ol4%!-OÌa8,2æ­¥ªÀ?8Y¼­µf2-:ɬ¨°Ée¿¨žŸ®ÍÍjJH3$'?ÊÝA02a³¦©¼E-0FËÚ8(!(?½¶ÇI;[µ¥ ©½IWÄ®¬¹[35o±§ª·Òɯ œ§½Î¹±Ë=)"3æn;,(0O¾¿P/*.:V[A<9>J[ÿa[SZU[Tb`yf^ÿÿÿÿ`yg^ÿÿÿÿÿÿÿÿÿÿÿÿÿûïÿÿÿçÿëûçççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççOçççççççççççççççççççïÞççþçççïÞççþôÞéÿéççÿç÷éÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]YSüØÓåF;66?Ï¿¿Í6&5n:a°>=@$D*'Ë,#:·9+5¼>L¬Ú(.¬˜š¶Mµ¤©¿-?±¨¤«³Ÿ›¡>% %F?$#JµÉ. !0<()͹L+/Ù´û(.°Ï<릜¡¾HÇ®µÈ00.81%%.ÒÕ0/[@&)Ò·e03ì¸ó+".Æ´ÑB樣¾P¿««Ñ;X«¡ ¬´É¿Ò/""4U:)*h«ªÎ27Ù½>%"7ÀÄF8Ï©¤²PVº«¾=5Ï©¬Ó;^±­»:-%(%!?ÒG,-EÈL&5?/(3î¾:2J¾Ü/&1dzÀN×­¥®m<úµµßGÜÍÒD-,CÏJ*",eÌG18ʱÇ90HÅd.*=¸®¼ô¾¨¢®|IƯµÛW¸£ž¥³¯¦´9! -NC-)8ËÉ<-2I_<04FòbIIM`ÿ[WU^fy`b}d_tiéÿíÿòùÿÿÿÿÿÿÿÿÿÿÿõõçîÿÿÿÿõçýîêççýçöüçççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççáñççüççççøêÿÿìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîýçõéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿk[]Û¿º¾çH`À»¾OC¾¾>h-+/KJÈÕ´º¾^¼Ï£¯­«ouÛ471"6Y$&·I0µ³)(Êß'h¬®Ð§«Ê1* PA+[²-&,"À¶E¼¡Æ/ßµKV£ª¤¨-#+<ÎÞ/hµ-+9%*½ºE½¨Ï4ܾ:B«©¹ª¢_&+%ÝÈ>ɹ/!2;(3³±Ø±¦É?¾µ\¼žŸªŸž^#16'6µ¿V¶º2)BF.Z«¹â¬©Ôf²½:殽ۭ·$)#1í<9Ì>!&8+)p¹a஼:PÅ@?¯©º®£½&*/$)åÕAɼ1';<+>¶¿Ú¯«|]¶ÂW¯¢©«ž¢Y/;,+ߺÿĬí,;K2=µ¶Ô²©ÍR»¼Hß±ÃÍ®¯]73%":U6?ÄR1=J8?àÛÿÚÎÞÿÛáçÛÖÛÛÛÛÛÛÛÛÛÛÛÛÛÛÙÓÛ×ÓØÐÛÛÛÛÛÛÙÓÓÖÕÚÓÚÙÓÛÛÛÛÛÛÛÛÛØÓÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÝßÛçççàÛççççççççççççççççççççççççççççççççççççççççççÿç÷çççççççççççççççÝêïüçôèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[[[[`ßÛÛí[SZsRM黲µº²´¾ÁÄü96A91/8^iD<>Z¼¶ÉB75;IE4,++0TÔd<36Fű°ÅF6;jÇ¿ÊK58NÌÀ¼¿ýZɳ­­¯¹ÚÝÈÁß9+'&(/BZD65:Q½´¸Þ>64=SK9-*+7üÉÑV>B๮°½õERн¼ÍK79YÄ»¸ÁÞèǵ°°¶Çk[LID7,()/B}qJ<7?}ÇÇl>38EèíK7/4BëÉÊìM\̸±³¼ÚRE=>;0+(*3G[N>:?fÁ·½ÖA88-+2lÂÖGBcËô;1/>ZF89l¹¶ËNz¾·ÄF:NļÀÛ̹´´ÀÓËß@.*+6MK5-/>I8*&*22,*-BÙòA9IÝè>16MÍØRSdz´À}tÌÉÕH?;>>627LnE4/7HM=14GÔßJ@MÖÜD79]ÍÓhiÇ´²ÂãèžÐPMͼ¹Ã×äÐÒ_=77:8/.7NèN>?WÿJ6.4AH=9HÒÁ×NJpÔv?9G×ÊØûÓ½¹ÃjUîÊÍnTáäóK=@PéK:5?YnMFNÕÇ÷JHmÜZ@>VÇÃÎÚȺ¹Å÷fÓÆÏógÆ·µ¼Å¿¼×A12APPG?DOx[UNX[lo]ÿÿÿÿÿÿÿ]gw_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿbÿÿÿÿ_ÿ\ÿÿÿÿ^p[~lo[g^ÿd~c_wgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVc\isZX[õÞÛÛôSXéÛîZOäèOS>=;INëäÔÖtõß׽ɯÇaSO:.-'+::4BG/+2.,8lMIÍÔ>\ÅÈξÂßE;0+0GG=[Ù<08;08þÓ]˽ÝKïÒ^òº´¼·²¹R;<45TÜL_Âi<:E=<öÊùð¾Ã^~È×SÛÊÞèÉÕ6/4.-8ID@nJ32>96IØãèÄÅSOÜ`JؾÁÅ»Ã>4953@þZhÕf;=G@>jÊÖѾÁmñÍÙ꿵º»´¾E@PGDØËãѾÊÿÙÊiOÚÒóÕÈ^55825HOJ^e@9?D=IÞßäÊÈôjÔâÿȼÀ¿·¼jHE>@fá\ØÉWAHKCMÐ×ãÉÅßÿÓÝ_ãÓäëÌÎN=<54AIFNõK<>?;?kø_×ÓeQÿ^JêÉÒÎÀÂÓÓiA>MQFOòZS[mV\ÿêÿîýÿÿýçùçñèíìéðúëÿèççéðçççþÿìéðçÿÿÿôçüïÿÿÿÿóçûïéëÿÿóÝéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñùùñÿÿÿÿÿÿÿÿèm[üïÿ_ÿ\ln]huÿÿÿÿÿ]hu_d~lo]hvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjq^fT[V[d_tiÿab[W[UW[ÙÓÔØÓÓØæì[IKMIEBDO[PMMUêÛîRHEJPNHC>>DO[[OIJSïÍÐÛVKNWîëÿTHENgÞçó[VoÙËÉÎå[[÷Üç^LGEMlåÛÛo[çØÎÍÍÚìÿ[PME>;:=FMZRKIOYçßøRKFKQ[PJA>EPmèiUMMZõç{TJIN[ÿaRIINXéççy[ïÚÏÍÏßyXSSOJ@=?HENX[SNN_ÞÓØÛfNMSwoVIEHNgÿo[[dëÙÍÒàc\òÝÛàüSS\êÕÓØæöÞÓÉÉÊØün[[PJE?>HQ\jUSSxâÖÔå^SSSaaRHIJPzìÿ[[[ä×ÓÞöy[uççþYSTfêÛáþbìÛØÎÎÝþc`xWKD>>@HNSNFIIVo[SMHHMV[SSSSY[WpvW[nl\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_d~YYxg^pV[[U]gw_cSOY[[woV[SSRMRQMNd_RP[jOIMmïWS\ÙÍÒäúçççgT[råàüâÖÔöUIEILGAAK`ñ\SS\iUIGEOYMMMaÚÛÿ[üàÛqRMbìÜï^äÛÛÞöüï^LEEEKSKIIL[PJEGMQKIKW]ÿ]UkÿkUMOZëÿ[dßÚÓäÿíçßøZXìÛÛÜçø^fTIIJOSMLSeç|XS[i]OINWs[[[õççîÿ^ÿÿmVTfÿÿe[bÿÿiUMIIECFMZ[WSVn[PJILSSSTgéëdS[oxWSSeÿí_ÿïÜÝó[koÿÿ]ol\kUSS[[VMMR^f[[[ÿÿ_[[ynVSW[ÿÿÿÿìÛßù[iÿÿaÿñçÛàçççêXKILSSOMOZ[WSSS[XSSXT[[[XZqj\lnÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[[zab|XZÿeTYSSSZUi\mnzf^ùñÿÿÿ[XZRKIEHMLMURMILIIQ[[[ôö[Wv[[[ÿÿÿÿÿp[SMJNW[[[ÿXSSSNUl[dÿÿg[ol\òçççççô[XNSS[YY\j[SS[QQ\jr^îýaÿ\i[siÿaaySSRMMOY[XZZSSSSSWt_e|ÿ`]ÿ^_ÿèÿÿÿh[[WNV[x[vpW[[[ZWv_dÿcÿ]gwYXÿc_wg]SSSPQ[[[V[T[[[[T`b}d_u[ynV\jqti]n[[[[[i]aÿ[[[[[[aa{e^ÿÿÿÿÿÿÿ^rj\mV[[[[j\bayXZ[[Tb`yfÿÿd}b`Tg^pk\l[[[[[[[[U[[[[[[[[ÿÿÿo[~[pWçÔÙÏÆ>vtwm-5.4.7/contrib/vtwmrc/sounds/doh3.au0100664000015300001300000001147710237645271017015 0ustar callumfid.snd @êèãíìg^i{ïîóïöúîýþz|nmpvöøûwrljn|ïêïîù{ùýzvtozïèéììóúsjjkuûùþüñôôöýog{õúünküëëî|{xyñ{röýoxlfjorüîëäàäðøðõvowína_dhgymuíêàÙØ×ÜëõkcseSTY\kyyþpyëÖÈÆÌÕ×êWE=>N_löíÓÓØÝÊÂÈÐñüYE=86NðêÌÆºº¹ÆÓÔï{O\D3.6:0;ð±­¯¬«ÀNJF;3/?C27:5m®±¯¦ª­®ØJ=*'),=GOÍéGʬ®­©¯°ºB0-'(-AËÊÉËLI¼µ¹­®¶ºV/,&%-Gº®µ¹Å>6ã¾½¯±¿¹þ,**+>๭·ÓO-*s·¹«¨µµÙ,''';ñ¬´Ïk7'8¿¹®¨·ÁÏ-#*.Dº®¬°ÓM;'*Å®®¥­ÕÑ9!$.=¼ª­³ËC:,#:°«§¦½ëQ',Aƪ¨¯Á?/-',½¤¥¤®X@-&AÅ«¥¯ÊD10.,Hª¢§®q0/(&=ºª¤ªß3,.:EE¾¡¢¯Ü,#-2>¼©©­Ê1*.>ÝéP¶£¬É>%(K`Ú¯¬·Ã?+-=ìÂïS²¨¼Z4&9ÅÛʱºÎp5.?ïÀ½O<½®Ê`>.N¾êß»ÇhZ>:bÂÊN7J±­Àn53æ×WÌÁÒÖU8:XξÚ:J¯­Èo6-aÈbÇ»mJM>IüÔ@1g®²Èc17ÌîVÃËYuV?TËÄÒ?3Ó¯²¹V,2O]ɸÊo`DB|ÈÈ\5A³«¸Ø0*MÜî¾ÀïÝR4=Ù¾¸Ù4:º­¿^6/iÈgϼÙYJ>RÈ¿Þ64¿ª±Á9(<éÑùO8?ïÌÄ_;Ë­¸ÊF)4ÎÎȺ×JPHB{ÉÍ]9I³°Áß1+ZÍÕ¹¼cNL?OÊ¿Ãd9H¸²ÉM20ZÇ˽¾nD>AfÉÄí9@¸¯¹Ö/)AÈ»·ÀT>:;^Á¹Ó>X´µÉZ--ẹ»U5>M_Ê¿ÅÜ?=È»Ü_E:÷¿ÈËáC>OaÛÍÉÏ?=¼²ÈÛ<,HÄú¿H6:BfƹÉ?Aĺº¾B.:iǸ½e=<@VɾÆQ7a²´½l-/^Ó½¸ÕIB:=~À¸¾H2í±¼ÜL2>ÃÅËÂY:ELXÊÃÿ>Tµ²Âñ2-RÏøÇM>7:}À¾ÞFܱ¹ÛH.6É»¾Á]:â¹¾ÆT.9ÖȽ½X:>EW˼ÂQ8d¶»Âð.0ÙÆ»´ë:=?Cܼ¼öIÓ¼ÌCCö¹¿>)6ý¿¯¶T:::TÄ»ÉHFö½Í7*=η±ÆC;:=dÇÆiMÀ°¹Æ>)/k¸®¶j?<6=kÐÓè®¶íF-*R¼µ°Ã?;:5N¿¾ÏìÆ³ÂF8.4ű·¼x77CNÙ½ÜBË­¹ÉX*)KÀ³±ÅD;;=PÐÎVñ¶¸ÁÈ>,8úͺµÔJI@@dÞON¼¯¹ÀW+,LÌ»µÉQSH;EcS`µ¨°z8()bµµµÁPD@=H`\Q¾§¬Ò>)%M¹¾¾ÈWXX?D]IP°¥µ×?&+ïÁ¼²ÆRW?8MUEË©ªºj+"6Ï»°·öOG8>bygÞ´©´p5&+ê³±¶×=::AðËÝ_Á­µåF-(Fº·µºQ8>ESÎÔF`²²ÁÎ6&9ÎÄ´´ûDB9@ÑÑI뮯¾Ò1#3θ­³]==6=ÜÐcέ«½].".ȳ¯´n>?:xËc`²©¹c4!)˯­­Ù348;ÞÃý㮬¼Ï1!+_¶§ªÕ7.,8Ö¾Ìű¶Ã×8).Hë«ÃI5.6nÎwÛ°¬´Ã4 (G¾§§ÆF5,5TÞÓ̲¦®k/!#\­«¬¿>:;5?Z]³¥®ÄC!">Ƭ¦¹C5-/UÉÑα¨¯È4"@´¦¦¼:6EvTDb³§«½8!&A½ªªÆH;29O^U౩¬·=##.ß©¥³é8+/?fÒů¨¬ºA#*W¬¢ªÉ?-+6TÜȳ«¯ºl,%+;Á¨¨·r5*/HÖŹ°´¾ÊD+-6A¼©®Â\1+9rÎÆÀ¼½¾¿U0./;¿©­¹ï/+6LÖÆÈ½¶²²ñ/'%3»¦¨±^-,1AÞÍÀ°­¬³G(""7°¤¦®S-,-7kÌ·©¨¬Ã/" 'x¨£§¹:*-2BØ¿²ª«´c+"#/Á¥£«Ì1)-9\Ì»¯­®»B*%%8¶¥£«í.'*:ß¾µ®¯±¾>*"$:´¤¢¬_-&*:ß½°¬®°Ã9("%A²¥£­].')9ç¼­ª®²Ñ2($'J¯¦¥®\.)+9y¯«®²Ì5*&(E³¨¥®Z/)+<ýñ­®¯Ã;-&%<¼«¤¬ô4+*7[ȱ¬­®Ä>-#&;Áª¤¬Ð;*)0G­ª«¯ä9,%,HÁ¬¨²Û<++3Oº«ª¬¼F1+)7ø»¬­¿d9-1>Õ°¬­´x5/,0aÀµ®¹w?41:W¿±®®¼N6,*8ë¼®®¾Z8./æÀ´¶ÇçM71>©²Ú@,'2HѲ±½ÏM727Q¾¯¨«¿X0'+5L¾¯²¹Ù;/.7×°¦£­Ó:(&-;øº³·½þ:26S¼¬§¯Ô=+)3IÚ»ºÄÒW:6?幫§±Û<*'1CÙ¸¶¾ÌX:4q¼µ¾ÊëB6;T¯©«¿M1'):[²¹ÈéD53?Ô¶©¦±Ð>)'/:û¹¶»Ã`806P½ª£ª¹Q+'+0NƼ»½ÙG:9Mí§«»Q-(+3OƼ½ÁãG97Jʱ§¨µÚ5(*/=ÝÀ¿ÀÍT>;HÏ´©¨²Ï:)*/;ïÁ¿ÃÏW=:EØ·ª§¯ÆF,)/7TÈÅËÒ[A+*/7QÎÉËÍjE@JÚ¸«¨­½V/+-2@yÓÐÐúKBHî¼®¨«¶Ü9,,/;VÚÕÙùM@CjÀ¯¨§®¿F.+,2CqÙÙáYFBPʵ«§¬¹è7-,/;VáÚÛhH@D|½®¨©¯ÀJ1--3?^ôæøPDAO̶«§¬µÕ/+-6KùÔØcRIEXؼ®ª¬°ÃL4,-3FõÒÑoNFAKóij«¬¯¼i:/-2>jÓÎæNGBH`Ò½°¬®µÆN9217GsÙÚYGEHTûÑ¿´¯°¶Å_?65:D\îîVMLMYoáμ´²²»ÑO<65;G_íla\VRORbË·¯­°¾ð>4/3>^ÏËÖnMD?DM𼯬­µËM912;KéÏÙnNEBFOkл±®°ºÓP>::>H[yu^PLLQ_üÞ̾·´¹ÃÚXG?>?EN[fc^XPTZbâÉ»³²¸ÂÛYH?=>BIPZZXUU]iúÝÍ¿·µ·¾ÎyOD=;<>FO]jnvjdoã̽´³¶½ÎtL=747=K]mpmyïÞÓÊ¿¹¶·¼ÇìJ:326Á¼ÿRtÿtÿMÿAÿÿGÿqÿgÿ²þ–þ þžþ^þ”þrþ±þ?þaþ þfþ¦þ!þ¥þÿ{þüþåþ‰þÙþÓþ%ÿ¦ÿ3õÿT5b*ÏHV¹œ.ªIÔÇ~·mÕ£§  l.ýßtö >”Ï,q¤±Ä;LÑ,ÇuóçµzXVýRðõœ@±jB‰t  } ^ ˜ à î W Ý D›®. öB ³"Ç)B$ÿ*V)¤$ªŒ Òù(ë Ù/Ç(»»¯V§z§Cªª3«û­¿±‰¹ð½§Ã ÆúÇÊÛË‹ÐfÕÈÙZÝ/àOâsä°çGê¬í&ò;öíùðý°àá k™\À Z$ 'B)+”,ø- /Ë/000Ä/×._.s.G. .„-™,m+'*Ï("'t%#!tÇ÷5£Ù 2 sE*¸`ÿþõý³üÂûeû7ûùú‰úùùÇùCùÒø_øÈ÷m÷/÷÷Åö¯öZö>ö¨ö,÷Q÷÷÷}øºøpùùîù‹úêúû=ûû´úsú2ú ú‹ùgù%ùùùûøŽùÝù‡ú-û‘ûüÈüýÂýþ_ÿ ÿÓÿ¡ÿ6F?ÌÿÜÿÈÿ‰ÿùÿ9»Î^¯úíç°€)•Úÿ˜ÿÅþ¤þ9þÉý~ýµýˆýŽýüýaþ6ÿÓÿ'ÚhÁ G=}…qËáíïÊdZ%³—Hõ¸¿Ÿrj¥}0õÿìÿíÿ½ÿ’ÿ_ÿsÿÈÿ ÀÿØÿÞÿµÿhÿ”ÿ\ÿPÿVÿPÿJÿÿÍÿÉÿW¸ P^ÉÎáß;ÝÏYo:ÐìȵüãÎ8aqz}²Â ×&Ùÿˆÿ<ÿ(ÿÿJÿÿÿøþÿÉÿ9ˆÖó ?`2^rEPSSqf†Ø'ö5y«³£¥„8?áÁ¥)!!µºÑ5óG†>-A q çŒ5GØÁLo‹Huh¶ÌŖʼʹ¦È¡^/5Ðÿ·ÿ®ÿbÿÿtÿOÿ°ÿ¦ÿ¸ÿ°ÿHgûÿP ºÿêÿf`s»U55pv1B‹ç[p‡œk:H÷žíÕ™”1åÿ¶ÿÒÿ¶ÿ-b`ýÉ£Ú  —˜~Fñÿãÿ¥ÿ}ÿŽÿ½ÿ­ÿ©ÿHýÿAKk·FsŽ Üÿ~ÿdÿ ÿbÿˆÿwÿÞþxÿ^ÿaÿòÿÞÿ3ª©•Öæ èâ37×ÕöñÖŸ»–£j¤LëÿcµÿÅÿ«ÿåÿ»ÿÿbÿôÿ€ÿ,ÀÿoÿRÿáþmþ?þCþ>þ^þAþþFþvþbþ‚þªþsþÑþ}þ™þzþaþ8þçýþâýþ¸ý®ýÝýÁý·ýÆý‚þmþþþlÿzÿôÿYYdÇÞ’]Xœº\hfŠB&ßÿA°€ ˜$ãÿpæÿâÿêÿòÿ¾ÿ÷ÿ‡ÿdÿŠÿvÿ_ÿ§ÿ¶ÿ–ÿsÿÿäþËþÑþôþ«þ3þkþ+þ¸ýqý™ý¨ýÆýáýµýÞýþ×þŒþ™þ¤þñþäþìþôþ¿þkÿ•ÿiÿŸÿ¾ÿpÿ¬ÿvÿØþæþsþáþêþÑþÿKÿÿjÿyÿÿ3ÿ¹þlþ7þ=þ¼ýÆýãý©ýeý;ýJý2ý–ýlýþþ-þuþVþ¹þ¨þõþ]ÿäþâþ.ÿ€þ+ÿžÿ@þØþfÿ²þ½þÿøþÿÿéþ&ÿƒÿ¬ÿúÿáÿ¹ÿ^|ÿÖÿ hz/´ÿµÿ,ÀÿfÿÒÿâÿÇÿ“ÿkÿhÿšþCþDþ,þYþ¤þÝþdÿÿÿÅÿªÿ¢ÿÿÍþMÿ{þâþ¸þqþ¿ýžýîýþ”þý þ‹þ¾þåþýþÿ¨ÿ,a|³t_MDÚâÏ’ÁÿÜÿ1ÿÉþ¢ÿ ÿßþýþ'þþþþ±þþþˆþÈþCÿ½ÿÆÿôdq!Ì—V愈iÅÀ†S l±E'Òj¬Â;bIjÿWÿmÿÈþªþ‚þÅþÏþûþ:ÿrþòþ‚ÿ·ÿ…ÿ&«ÿVÓþ¥ÿ Þþÿkÿ°þèþÿÿþXÿšÿ%ÿÙþ[pÿ²ÿGÿ\ÿ‰ÿÿôÿJSÿ~ÿ³ÿ‰ÿ>ÿiþµþQþEÿ&ÿZÿ±ÿ|ÿ®þ ÿªÿ¸þÿÄÿæÿ‚ÿ±þÿÂþ7þÿÎþêþ’þÏþTÿÿ›ÿ•>×8åxRê#ŸÀM^Eõuïµa —”ãÞ  … ² < ¿g $ aÖìøv²)ÐłԟaD J°% ŸüMð+åuâ4ÛÔÅc¶W«:¡ÈŸá¡¥Úª‚¬³Q¸L½è¿ÈìÆ*ʤÎÔÔÙ+ßõãç-êîìqïóýöÏû¿ÿUíJ lÜœ» 5%Â(+Ì,E-l.¤/Þ0d233–1;0/.®,†+h*‘)&(ø&Y%Û#i"u  „Ïc[ Ö ‰K1´úÿ7þ‹ýZü8û5úxùþødødøøŸ÷H÷ôö÷úöP÷x÷Í÷Ö÷¢÷‡÷d÷?÷÷ò÷xøØø¤ùËù%úwúòúÒúû<üqûöû>üÌû!üñûÓûûûfû–û¦û×û‘ü§üñüoý‰ýÅý:þ¥þïþ?ÿ-ÿ[ÿ7ÿ=ÿWÿ5ÿ ÿËþ”þþoþ&þ=þ§þwþ ÿŒþÑþ¤þˆþ®þþþ5þ,þ²ýýåüüÄû†ûûOûsûœû.üçüFýÊýÛþRÿóÿoªžÒ¡ª¹æ&/»N\+ŒFÙR"(ŸÿAÿ3ÿÐþþ¶þ2þ;þËý†ý\ýýäüý)ý¥ý*þ×þÕþÿ—þ™þ_þKþZþ3þ=þPþ£þEÿ5ÿ.ÿ~ÿpÿÇÿ f[xÖ©ƒˆ§èá oªfåÿ!wküÿc´& /Ìÿhÿÿ ÿÅþÌþ¶þþcþ0þþEþþ}þ¾þ¥þ„þÿäþÊþÿKÿÿFÿ€ÿ@ÿ‘ÿ~ÿåþ4ÿÿ&ÿ7ÿ„ÿcÿÛÿÑÿÞÿ-ÈÿØÿàÿµÿ©ÿ ÿÿ@þpþ5þXþgþŸþêþçþ-ÿ§ÿÏÿ¹ÿb’4¬’¦‘¬Õ£Eîÿ©ÿ;ÿØÿ„ÿ2ÿkÿÕþ9ÿÿfÿaÿUÿcÿÿÿ.ÿ#ÿ®þÙþÕþ™þ9ÿhÿ ÿ0ÿkÿëþÿÿÏþûþ$ÿ"ÿ ÿUÿãþ ÿ>ÿ*ÿKÿOÿÿgÿåÿ¾ÿÃÿ.z‚”¢ðõÁ¼ãสDòÿœÿÿ†ÿ0ÿ9ÿöþ|þrþ_þþþ)þCþÜý3þeþ þ¿þ¨þÌþNÿBÿ7ÿñþàþ-ÿ:ÿvÿ›ÿ`ÿ7ÿŽÿ-ÿ8ÿ­ÿžÿ$¥£ÿ4öÿ‘ÿ”ÿiÿæþ´þÏþ)þñýtþ©þTþWþvþøþ"ÿšÿãÿJŘڀÏà䯿–U7ÎÿÈÿÒÿPÿÜÿ„ÿAÿ’ÿÿ•ÿAÿìÿ¡ÿhÿ”ÿ‹ÿ5ÿoÿ’ÿ™ÿ™ÿhÿ°ÿ©ÿ™ÿ8ÿÅþ$ÿþþFÿ,ÿÆÿÿ}ÿ¾ÿ)ÿÿôÿa¡8JÌvkÞÕÚ[Ìzáÿéÿ-Xþÿ$PR»ÿ‚T™„¡¾ZGl ÿ$ÿ%ÿˆÿ#ÿÿþðþ¸þ ÿ^ÿÿ›þ+þsþìþËþuÿ•ÿ‘ÿkÿ„1)¥ j 'ƒ4«ÉÄšÅ0Epk¨äPÞã­3/ø[efÿªÿ¦ÿÕÿšÿZÿaÿÉÿiÿÿÿèþUÿ£ÿnÿÆÿˆÿÉÿ+ùÿÈÿÌÿªÿmÿLÿ©ÿ‚ÿÿùþÿÒþôþ_ÿ'ÿÿCÿÿ~ÿ}ÿ©ÿ©ÿ‹Öò8M*! {6õisoTà;_çŸáG[^Æÿ@‹ÿÿúÿPÿIÿÄÿ~ÿ69\º@——¾ÿìÿðÿ4ÿœÿqÿ ÿEÿÛÿ>ÿ×þÿàþ²þçþ¿þÿ¸ÿrÿWÿÍÿ…ÿ‚ÿãÿ×ÿbÿÊÿ~ÿ`ÿZÿ­ÿéÿÄÿx‰éÿþÿ÷ÿ5ìÿ ŽÿÏÿëÿéÿ–ÿ©þ¬þÿÿnþ£þÛÿRÿHÿøÿŠÿâþ(~ ìÒÀ ‘ÖfséªîÔ2³f]ò´E¹r#ÕŽxðã\æ6祽ä“;ëñg‘{V‡v¡õ‡ÿ?6ÿÌýýþÿRþgÿYÿ/ÿ[ÿõÿ Kÿ}Mÿàÿ¡ÿªþÅÿíÿó¿thüÿû­“ç\,‰ü«ƒ§ O Äà µ ž‘Å÷ƒã?ë½gO¬G£;mZ–V¿Y.Hu=- gü¥îIçYÝqÈî±4œx^Œ˜B— ê©d±ý·‘¸û¸Ý¹ ¼†Á´ÆÇ=É!Ë ÍÒØ”ÞäëñZöú6ýÝþ X- 5?(!J%L)¸,›/‰2m5O8Ò9ß9P8U6d4«2 2à12Ä2‹3C4¤3º18.ä)Ø%­!+B¿<Ôï´ Q ó˜~þjü)ûúIú úÄùù ø~öõPóòDñHð6ðFðïðÚñ¨òNóŠóµóKôäôËõ÷qøùû;üÃüýý.ýúüÌüýý“ü€üˆüNüfüÞû;ü®ü³ýiþÿ†[ÿnwMéuØqÖÿ®ÿÿzþ1þºýÌý#þÿxÿ%!4¡®õ¿PvÿÀþ°ýŸüáûóúsúðù¢ù›ù úúÑú}û.üsýþ£þjÿ‚ÿžÿzÿ6ÿ8ÿ[ÿ²ÿGÄs"ßߺÈÂ8VR±\ei´‚1-ãÿÙþ«þ*þþýÇýïý“þÖþÜþ¬þôþuþþ®ý–ýýOþ™þ¥þüþçþBÿîÿkÿºÿH¡PÃ1P<Qy‹3TûŠñ,çÿíÿ>tã>ŽÇ«Ó裻AÔÿäþkþÍýâýþËýìý+þ÷ý~þÑþáþÿ³ÿ"üÿv #.!Y7 ÄÿQPÐJsî‚Sí¯¸ŠÿUÿÎþiþÈý`ýýÆü4ýmýHýþ‰þÌþœÿïÿ\÷g|ha. ö<—‰ka‹ÿ÷©ÿ•èÿøÿôÿÐÿ¡ÿŒÿ‰ÿ<ÿ~ÿîÿÚÿÖÿ·ÿÝÿ/D2_¾jöÿåÿµÿÿ ÿ¼ÿ¾ÿ¤ÿ=ÿDÿOÿÞÿºÿ„ÚTe„t3Ž<X!  #©ÿÿ"ÿPÿ˜ÿ2ÿÊþìþƒþ¹þÆþ³þÿÿpÿ¦ÿÿÂÿ0J)3q’ÿ+6ÐÿÏÿ,j–GSµß >Ý9Œ°øÿ¢ÿ¦ÿrÿäþ±þáþqþbþÖþ’ÿbÿ¾ÿ¥ÿ<ÿØþÌþ]þþþ¥þ‰þþ¬þ7þ¸þÂþÈþÚþÞþóþáþ¸þÉþñþÿ×þÿþaÿ#ÿUÿiÿkÿÉÿòÿ CÃ$ÝW¼!ƒV‰ç=J€émÝPîyLCfžÿ²ÿÿšþ|þ¯ýƒýÄýËýÏýýký‡ýþGþ6þWþþìþ<ÿÿÀþZÿ:ÿ}ÿxÿÿ‡ÿŸÿÒÿ…ÿfÿ`ÿXÿ†ÿmÿ²ÿ¢ÿ“ÿ´2пí“ïÿÀÿ¬ÿkÿÿ˜ÿ‘ÿ­ÿ5dwÁ¿ÈgI©ÿŠÿåþ6þ7þþèýKþJþþ¦þIþ‹þÀþÒþâþ:ÿÜÿËÿ Þÿêÿêÿáÿ‰ÿÿ·ÿóÿ1%Gÿdÿÿ¢þ8ÿVÿ7ÿ$ÿ©ÿèÿýÿ$'ÿÂþõþ€þ9þ&þþ%þþïýµýAýäüÓü%ýýýoþ#ÿÿ!ÿ¿ÿ2ÿÿciÚÿØÿ¤ƒÿÇ1¥ÿÄ·ÿ‡Œ'.‹d¦à9EƒÞM²Í?òÿ?uÿðÿèÿöÿ³­€®n¸ ’øÿ éÿöþoÿŒÿ¼ÿ€ÿÇÿÓÿYg[ÿ2MóþOÿKþªýÛþQþÿýÿÿKþÿÿ ÿÒÿÍÿ ÿ8•}²Ÿtˆ4:ÇÝÉÞßöÅ h·/KþÈ=þùûäüðùüþÂí{œ,ª!ö%1+ -U'v"DªÿÚõNë±äâÆÚ;Ò+ÊÃ½À˜Æ/ÏÊÕE×ÙÁØ7×EÖ.ÙcÜrßOã/åŠç êí¤ðùó­÷5ûyþñLAÌÆ ãƒ*>{ ›"N$Ÿ%d&Ä&Z'9'&V%_$X#m"â!I!« Q # ›ƒy°Ï¸#ÿ  ~uNr–þêüûMú›ùóø¨øFøzøWøÑ÷”÷Êö÷õNõúô õ#õõ{õàõöÀö\÷ø¨ø2ùÂùoúâú™û'üŽü]ýÈýàý1þfþGþ<þþ þþÞýý‰ý‰ýqýˆýìýMþÿUÿJ–¢n[Vâÿ›ÿ9ÿÿÓþqþ!þÊýzýfý’ýðý™þµþËþ0ÿuÿ ôÿtÿ£ÿˆÿEÿˆþþ˜ý"ýZüü“ûû ûµû£ûeüüøüÀý¼þÓþ¨ÿJžÿî AwÿRÿŒþìþ;ÿ­ÿ6uýD[4_–‚#‰Î,ùÿÎÿ¼ÿòÿóÿ„ÿÜÿ¨ÿ°ÿ>ÿÆýäþYþ¬þtþ£þ#þþdþ”þ7þ=þ³þáþFÿ—þ÷þØþÿ?ÿ¥ÿëÿ– vW½I»Z³(SDÿÿÆýsþ(þFþ?þŸþÁþÿˆÿ×ÿÿXÿ…ÿ“ÿ»ÿ¼ÿ ÿÿ¢þêýôýþéýþþ4þþ—þ ÿ'ÿÀÿ©ÿöÿ-¾ÿ¹ÿÙÿ¶ÿ=ÿÄÿÈÿ„ÿ—ÿ¿ÿoÿ_ÿíÿÚÿ)MIk»·Pr€zÜÿÞÿ¼ÿ=ÿØþÿsþÁýþðý þðý`þèþ”þEÿÿ¹ÿ§ÿF:ZZ³¡­›1ÚÿÍÿÿZÿZÿMÿ[ÿ‚ÿÉÿ™ÿ¢ÿiÿ…ÿÿiÿÐÿÐÿ¤ÿñÿŽÿÆÿmÿÿ2ÿ0ÿÿ9ÿÞÿ÷ÿXÔ,K–÷”®_ XgÖÿ¼ÿ¬ÿÂÿiÿàÿ”ÿÝÿíÿÎÿ€ÿÿÿ’.÷ÿ~ôÿlÿºÿeÿbþþöýþÔýšý þöý´ýúýÁýòý®ýÂýkþ»þtþ³þpÿhÿ¢ÿ;’@½º}ˆ«xÿkÿhÿXÿÿ[ÿ'¡ÿY¸ê%2´èÿÔÿ¢þ_þÑý£ý²ýýhýTý€ýÀýþîþƒÿ8ãJÿhÿ•ÿ=ÿ®ÿÙÿš/ÿ­‹ÆŽºÿ:ßÿ+çÿ@åÿ-)bÿŽÿqËÿéÿ`cP¨žÿéÿåÿ<ñóÿJ ¡ÿýÿ0…q-}7³¤ÒDÎÿ*T×ÿžÿ´ÿ4ÿÇý ÿXÿÀÿŒÿÕÿ¸©^‘ÿÎþçyg)ÿ¡þýþYþþÅý+ý(üÂû³û+ü­ûûû¾ûvûûüGûûäú9û‘ú6üáûHüyü‡ý>þÉý"ÿþÜþqÿL‡€â ›ÀgÄX…ö7¿Ô‘#Øh³¤3¸Ì‡QÕk)yÍQfh´¶1 Ö â$ u Íz÷ÿSýb÷òõ„íÅéäNàÝvÜÌݜߌá“ãåÏåâæ'æLæçwéê5ëí-îÛï˜ñüòŽõ°÷mùÇú`ü–ý-ÿçôãH° ½ r > )ˆ–š-¥ý.2óÄ]+H&4¥í;êdb ÿ ± ¹oVöì›ÑÿçþPþóýÌýÌýjýGýý€ü ü‰ûXû ûÊú ûû¸ú ûûûúûûrûîû^üŽüÈü~ý!þ„þ&ÿxÿàÿ¦•æðñ½ÈJHmøÿ’Žj¢Î½ô&€ïBu`ùÿØÿ§ÿ34œÍa„¤øÙÑÿ"9,̰¥ðÿ›ÿÿþþþþý×ý`þ£þµþûþ‘ÿäÿE²¹•з¹ŒÓ-ø¿úÅdg<A²Ô(ÏØº1;¼»ZSîÿõÿ¢ÿ¨ÿ‰ÿmÿ›þ¡þÕþ@þÂþÿñþaÿzÿ@ÿ|ÿWÿWÿ¤ÿq²û#njÁ=7jŒBº¶´Zý,˜Èq†i³Y!Ðæ –àú¼;?·ÿÿáÿ ÿPÿÈþ¼þ`ÿÿzþ1ÿ ÿ«þ.ÿ ÿ~ÿÐÿ¢ÿ‘ÿ²ÿ²ÿÿÿßþDÿ+ÿšÿõÿŸÿéÿ Ùÿ†zxÜÿÎT‚¸Ì7ž¼¬áÉÿçÿ„ÿUÿFÿZÿÿÄÿkÿ¤ÿþÿüÿ¹ÿúÿ,ÿÁþþ/þ–ý•ýfþ=þCþ'þéþÿjÿÛÿ:‹þ-¶ŽêÆÇ_Bw»ªe`Y‚ œ¯?åÓ7NÝÿCÿrÿƒÿNÿ¶ÿ1dÇÿ*+¤˜ÿ\T«ÿ8Áþÿÿ<ÿÿ¦þÈýƒþ þþþžþOÿj+ÿ¾þÞÿõþ°ÿ-Þ7ðZˆ‘]‚-5‰ì¸!“ZþºáŽÿ4ÿÿ¯þÈþ ÿû°û/ûeû|ûÃúùØùúù4ùÒù¹úùÑùPøYöÕòºõ*õŸôï÷¢ûœ Ëu¶(™š­ö û²ú˜ödñ±êãlÝ”ÛiÛ`Û`ÞñáAç9ìxðôµôrõÈóñ¤îîíáíîÕî•ïêðyóÚöõú ÿ@ ` — 7«ãC[PpUp{†Ú·J›¾› Ns-Z À ;`…­Ðþýqüûšù¦øž÷¯öiöàõ¨õÂõæõöSöJöIööèõõ~õÕõöÒö÷À÷fø¶ø¡ùKú/ûüýÕýkþ#ÿºÿ¹ÿAôf£*­ÿ=ÿ‘ÿƒÿ¿ÿÅL‡¶³Ñ—èâ×_÷SŒbÛÿ<úÿŸÿÿmÿAÿÿŸþ9ÿZÿ¬ÿûÿ‹|`®þpÿcþ“þsý ýü&ûú9únù+ùCù+ùœùÿùêùrúºúû¾ûü0ü˜üÚü¡ü ýDýþ4þ¶þ„ÿüÿ—¯<´$c/Ãe++ðx|yxÝ`Nv£ÿ†ÿ*ÿ2ÿóþÁþþ)þ9þÔýýaýïüýýKýüýèüÞüÊü'ý7ýÚü”ý~þzþÅþ ÿäÿnÒÿ×ÿøÿQÿÿþþùþÑþ†þÿµþ°þØþ(ÿvÿªÿ5! åÿ¦ÿ€ÿœþjþÔýþŸý¶ýýMý!ý÷ü¦ýWý€ýîý.þtþˆþÿÿ ÿ1ÿ]ÿJÿ ÿ’ÿsÿDÿhÿÿþ5ÿÿüþŒþhÿUÿ)ÿ ÿiÿJÿ4ÿŒÿMÿ³þÿþjþQþ^þGþTþ7þ,þúý4þÙýüý}þžþÂþ„þûþ$ÿWÿsÿßþäþ ÿtÿLÿ¶ÿÃÿªÿLÿWÿŽÿwÿ¹ÿD_<†ÿÉÿÖÿlþÿÀÿ‰ÿeÿÿ$ÿWÿ­þÜþÉÿRÿ)ÿ2ÿÞþ5ÿ@ÿÅþ\þÛþÿþkþ‹þÙýþþ‹ýÃýEþ‚þ'þþÿíþ ÿ ÿÐÿ­}.¿SÙùŽÆÂT”)#Vÿ£ÿâÿÁÿ{ÿpÿ1ÿ¶ÿqŸÑÿG,!íH^X¼›µ.ÐPP.Éÿáÿ5u.{"Rÿbÿÿÿ2ÿôþ·þvþiþþ þ™þ|þDþñþåþÑþ<ÿ:ÿ ÿÿ{ÿKs]‚5á`|´Ø}L8‡¼… þÿÿ3ÿ.ÿ›ÿÿÍÿ©ºw÷êïi[C**7Ñž/Hþéûú@öÚìOíèÊí=õßþÝû× R% ‡µ$$&m#¹v­ÿ‘ôzîüçç áóÞíØÛ^Ýãá-æ0êÂïmõGù’û¡úfúÂõ¯òUí{è<ãWá;àcàeáâ˜ä„çÊëXðiõúßýŸxf ã Dº…GR =;[ÕáH9Í+!K»b;—~‡   £ ÿýüû»ù¤øL÷ö§õÏô³ôcôôÒóófóÝòóòóNóÂóôKõ`öŽ÷â÷ù"úû9üäüiýþÀþÏþlÿÿµÿ'¼ÿ¢ÿ«ÿ¡ÿ·ÿRÿB9¨U½¹ö2ˆ('&ÍÀW4tz²J>gŸÄºAÓÕ';«sôpqÿúþéýgýrü ü‰ûýú/û ûåú~ûpûñûQüý ý„ýþáýXþ þ…þ§þìþÿ ÿK\Ým£Vê–eænnSü4‚áâF!õÃÿÇÿ®ÿÁÿþ×þÿ¨þ—þ²ýÉþ þ ü¼ü×ûzü€û8ühüZýý]þDþgþ²ÿtÿ iJk· ÿÿÿ$ÿ<ÿÂÿÿˆþôþÿ`þ ÿ)(f1ŸÈÀ§šÿÏÿûþjÿ˜þ†þÿiþÁÿLÿÿ($èÎÛqG_Ü{Öÿáÿwƒ’>ha,›o•Û—Üÿäþþþ þþ×ünüÄýiü?ü¯ý[ýÆüþþÓý=ÿÿ±þõÿ±ÿñÿ´ çÿ£<ïÿEýÿ¡¸ÿ¨-ÒeZ¹ ÓW×%_ÜuÌcAQ~8mXƒLK®ÿ Àÿïþõþ*ÿŒþ‹þLÿþÿ€9‘é\ü¢ï©ãÿ–þaÿÿRý ütýÅûAý»úÇúÏûš÷ôàôaçŠì»ëGRû,˜%œ ] P ¿»þ&û$òTïRåVæèLêÿíÆñ~ùìûCˆ[þ ÿÚùêõ+ñãíïé£çoæ½äÛämæ&éí·ñoö·úQþ´N©94X Ë F±þ­ñªù¾1ºI2dÑð¼Ð«%L • ǡ҅+oÿXþœüIûÅù*øŒ÷cö öÖõ¥õnõDõhôÂôSôô¨ô~õ ö_öWö®ö÷ë÷ø«ø<ù–ùKú³ú‹ûãûƒüoýÜýþËþÿuÿoÿžÿøþNÿ ÿþÿ‡þ[þ™þ«þ³þpÿtÿª×âº8““‚ˆŸ7m‰Ó](í¼è£ÎêÝ’&(G©þ·þšþý>ýgýõüaüzývýÄýŠþ’þKþ1ÿWÿ>ÿ@ÿ+ÿmÿ´ÿaÿ(­ÿÃÿ ü…ò1`¼ò>õœTÕím¾Ä©i¤ÿ=ÿôþoþ¨þNþþÛý­ýgýŸýpýÓü„üIüüüAüìüý(þçý3ýæý¦ý£þªþÜþõþËÿÌÿ¢sñÌ [þꨅˆúÿ‘ÿjÿ¼ÿ'`ÿ'ÿÆÿB¬ÿšÿÐÿHÿ^ÿïÿÂÿÞÿîþ…þëýÑüý¥ü7üüêü•ü$ý&ý¹ýÄýÁý±þ\þ—þþöþÕþdþ'ÿ<ÿÒþ§ÿwÿ[ÿÐÿ›õ ŒBü€  0£Þ£•)Þÿ©æÿRÿG¤ÿ×üWÝslѰs»¡×¼åDXÚ@ 6ñ_7#vžÿ½ÿ1ÿtþèMlÓ¿`Ã}<:åÐÿ/þGÿ0þ¡ÿÜüÉü[úú+õŽñòžîZñÁô™öo¬… ù?aI‚á8 ÀàûöÞñ•ìÊè°äHã„áñá‰ã¬è‚ëDïwñÏóô÷óªò¶ðãí¢ì©êâéöè–é]ê‡ì%ï7òJõwø„û·þ=Î?–ù “ à`²™ÒÊSNÝ_¤Úƒè}íóÒ€azÜ• e ˜-,ÿ÷ü!ûgùÓ÷"ö õ®óÚòòûñÊñ«ñŒñMñWñUñLñ€ñ(òòòò§ópôgõöïöõ÷ÈøMùYúFûÎûlü©ý™þÿêÿm¡ý@cd`R”«Îú¤ùTân8~k\>éléPñ7ƒfËŠòö[k?°/¶Üÿwÿ’þCþªýpý@ý{üºüdücübüšü­ü ýIýtý¯ýÅý¼ýÒýÝýaþAþÇþÿ-ÿÖÿ=¤ùYߥsËÏ ?ÙãJUå»l"þÿ*¬ÿÿSÿÿþ£þCþÚý°ýeý.ýýNýùü’ýlýýýHþ‰þþ ÿªÿ RV'Çl¶A ;¦¢TßH—¥”†¸(XŠ*xcиQ.Å&ÙÿCÿ•þþOþìýþ;þþþ þåþaþNþÝþíþqþ®þ©þéþëþßþ„þaþlþSþKþqþHþHþ„þÚþ“ÿûÿ‘¡píz÷—{ÿÿxþþ þðýôýwýìýBþ’þÊþÿ^ÿš‡ Y)m”hyboT_<g=JæÖ”|?¿Ž•£tvÿµÿÿ¦þGþ‘ýý@ý2ýúüsüˆülüaüü²ü£üEýlý¢ýãýþ5þ_þëýøýJþyþqþ½þ•þzþ‹þáþ¶þ_ÿƒÿƒÿõÿ{ÝÍǶ£ÓË[*%z$˜<·ÿûÿ-i›ë&¬ƒédzÂu,„ÿ³ÿ”ÿ™ÿÿžÿ­þgÿaÿšÿçÿ;Œ~ ®ÿÿ‘þÜþgþÂýsþïýzýþ±þ¢þþ-þ*þâþJÿšþÝþžÿÒÿ«ÿºÿÅÿçÿ\ÿ,ÿÒÿF@|´œ*íÿìÿ¾ÿGn†¡š_†;bÙ1\ÔüH¹ûHbü5œqäå@üXÿ,žÿÐÿCÿŸþQþGýNýIüRü”ümüüáú ú»÷Â÷µö=ùõ¹óëôYí#ì8ð;ýžý/ „màØ#‡#ax5¶ gÓSüÿõ¼ñ6îþëNë‹ìxî)ò@öUù ýÿðÿ¯þÄûëø öñ]î6ë4èØå‰ãã¤ãLå,èYë»î–ñxôþö1ù[ûûýF&† l ï•®Âg‹Ä×®Ü.SiYò?-æsša 4  •1ðWI•þ"ý*üwú|ù©øè÷¾ööSõ9ôŒó-ó»òœòŒò…òêò ó7ôWô[õ9ö-÷ù÷0ùéùú*ûyûÆûüºüöüYýîýÞýPþŒþÈþÈþ,ÿÿ?ÿ@ÿsÿxÿ³ÿÕÿLâA±A­ò,*%þ ïun´úå,ÒºÞŸæq#ŽB›>Þÿ8ÿþjþAþ­ý¢ýRýTýèüýïü`ýbýVýcýâýþþþXþÓýÆýþþ9þ|þnþnþ¼þ(ÿ8ÿzÿÉÿ”ÿöÿ¸ÿ»ÿ8LõÿòÿØÿ¥ÿïÿœÿñÿ&H áÿuÿyÿÿzþðýlþ~üýýýüýõüéüœüÊü¡üý¶ýsý³þÑþ˜ÿ¡ÿËÿÆÿÜÿøÿ}ÿäÿÌÿ„ÿ›ÿžÿÛÿðÿ×ÿöÿêÿ¦fç5j(D91ÞZJ™øÿnÿlÿJÿïþ7ÿ5ÿÄþäþÀþžþÒþzþþ†þJþ1þÚýÂýóýÓýWý ý¾ü°ü²üôü§üÿüYýýçý3þØþwÿ¾ÿèÿúÿmMôÿÔÿ•ÿkÿâþµþ¾þ”þóþùþÙþêþƒÿ 6ê…@ CjŠ ®»³jBùN`—°ÝÞm–+I£ÿ#ÿ¡þjþûýƒýdý^ýUýrý¦üý‡ýþþãýŠþ—þãþOÿ ÿøþ¬þ–þ þxþÖýˆýBý*þ…ÿ©ÿûÿ(äÿ1g·>xŠNw ‡]:ýþêþþ’þ3þîýùýŽþÿÓþíþÿôþ5ÿ—þ€þþ¬ý ÿ#þPý)û‰ù=ùó÷yôãö¡÷èø¹òûñÓñ þý¸·"é'Ì#ô3ùþ›õÍíwéõåêâ á9â¾ãÕè'î óŠùÛÅí àY”H ì¥þþùkõ¨ñ®îVíÊìþí6ðZóÿöwúzýP¬w™w½Y  ‚ »ò­+ÃR·¯ 9 â ‰  Ô ? _ Ä žÀÌ…çX½þýüûúØúúbú¯ùÁøtø‹÷ðö¤öwööyöoöQöMöö‚ö®öV÷Ï÷‚øýøiùúpúsûÿû%ýûý©þ™ÿÄÿ)sk‹˜Øý :YveÞ¯ûð¶f»G|qÛêáùsT@ubâ×¹ÖåñæÝÀ®:õ°;Áÿøþïüçü)ýºüòûÂûªûªûdûÍûü#üVüÅü‰ýaýçý¬ýþ:þªþ\þ‚þÂþ²þÿGÿvÿÁÿFÿŸÿÊÿ85yãȦµSY¹‡Öþ¦C@àÿ|ÿzÿ)ÿØþ™þ¤þxþvþ>þþ³ýšý ýýÂüÆü®ü»üÛü«üý\ý¢ýþóþXÿšÿbýM>¿òR¿Í“b»ÿSÆÿüÿÚÿíÿ³ÒpCQ«IÄ>V¿J¡ÿÿAÿ ÿfþ´þÊþ©þÿòÿ<VY3J–kY æÿ›ÿwÿÿ6ÿ ÿ–þþ¥þoÿ£ÿÉÿ˜ÿNÿµÿ³ÿJÿœþWþñýøýý’üFü˜ûJûkûaûßûdû´û¶ü.ü£ü‚üõü<ý°ý¯ýïý/þþ þØýSþãþ£þÿvÿ»ÿëÿA‰m—yhJ^ŽÀó×þ@úƒj„q©Ó¤²AL/ñjÐÕsÿÉÿ\ÿSÿUÿRÿ;ÿ_ÿýþ3ÿgÿÎÿÕÿ¹ÿéÿ2ºÿlÿ²ÿ$ÿÖþ¼þÎþÄþþéý÷ý1þ"ÿ÷þÿ^ÿ‡ÿféÿòÿky{äq¿ÜÀP•ÓY€µ2ý\Fîž’pÞÿ_ïÿp>[ƒÊŠðÜýÿ%ÿnþ…þ×ýHýãýÜürûJüÌûú”ùjúöZñÑçÀå>ä¤ò2ª N"¦!½T´ÿ ® RBÌø†ñ’ì‚è®éØëï†óû©]d jG<Eç $áýúöó"ðdïvïðèòìõ5ø~ú¦ü×ý’þÿHÿmÿM1˜…:øšù„~UA„»,ؽø Â î ­ ¥ ˆ 9°öÝeÔ®¡2Z*Æÿ±ÿhÿãþrþKþôýýðü ýuüzü ü§üý;ýÀý:þiþ ÿÿ,ÿnÿ`ÿ&ÿ#ÿFÿªþÖþHþùýéýIþ:þ}þ$þðýàýÍý¬ý¨ýRþžþÈþÿçþíþÿ ÿ’þNþ€þöýþéý¿ýþýËýþ’þÿÿ´ÿ‚Í:Wÿ1Zº¹ôuè„âÿžÿVÿÿùþ!ÿ^ÿ¨ÿ3Ì&:¦êÚNñƒPE$åÿjnøbŸ—¢ÐîH\=ùÀ‚ûÿ®ÿ…ÿnÿðþµþ˜þYþþÉýþþñýöýïýŸý|ýýÌüØü«ü<ýký¢ýþþ:þþQþ£þïþNÿøÿ7@58rØÏßÕ—/ì¤J<ÿÿLn'qŽÒì13:a,Ê»|§IÌÿPÿ@ÿ[ÿAÿ9ÿÿüþÿÒþ©þ¾þ ÿyþ*þ¬þIÿLÿÿ¼þýþ¤þ»þsþGþŽþþÇþ þ¯þ°þüþÔþ>ÿ ÿoÿ§ÿ€ÿÁÿšÿ—ÿfÿÛþ÷þ0þþÏý·ý;ýqýœý¦ýÿý–þÇþÿñÿáÿMÊ:@›¤ÚŒóÔFr㻆mʦÕQßÌõ q  ¾krñÿêÿÔÿuÿÿºÿ”ÿÎÿxÿmÿÿýþÿ²þÿúþêþ:ÿ~ÿ†ÿRÿ`ÿIÿ´ÿ5aºï$>[­+™Ø°tÜÿÓÿmÿKÿWÿùþ­ÿæÿ§ÿ¡ÎÌ;“÷d—_‚ñÿÿ‰ÿ|ÿ;ÿ¸ÿòÿ²ÿ³ÿ‡ÿ$ÿ‹ÿÿŸÿ(¶ÿ˜ÿ ŽÿOÿlÿÿcþ`þ€þSþùýRþïýïý þ1þ™ýÂý2þYý÷ý ýºý”ýoþëþVÿuÿ£ÿz¬â[8[g«+(H4RõÿÜÿ67©š~x}í°WÕÿÚÿ¸þþ þ©ýþbþXÿÿxÿ®ý#ÿpÿæþ1KBýmû“ùËô´ô¡ñøëOãgãÍîWú·<Å)´1¦2Â.2.%Ü<MöÖéŽÞ»ÖÌÏ{Î$ÏÀÔ}Ü—äÿïYûÊÜ Üsñ 9þ¯öÛðèì²êãê[ì¬î[ñˆô‘÷àú!þ¯(È;N ü g ¾  « ï ô t U " «ˆãyõ> † ž  êÆ?Òÿšýðû¸úú„ù+ùùçøäøÊøaøJø/øQøoøQøSøjøSø~øaø{øøŠøøøñøhùÞù¯úÎû÷üðýÿ6¹kìb¤´›OùÃ6ÚWñÚŸù 8‹éuÕÒéïÕ¬s*hÔ™oœs¡ŒŸµÛAg|ÅAfïÌSÌ5»ÿSÿÿ‘þNþþ6þþnþ·þ¿þ{ÿèÿ}ócÓÿç˶@°¢%Ëÿ~ÿ~ÿzÿqÿœÿ°ÿñÿW=óÿ1S·ÿUÿ!ÿIÿŽþ,þÓý’ý8ý×ü¦übüeü#üÄü§üÝüüÓü¬üHüÚû†ûoûÃúÑúûûÂúûvû¾ûUü~ü;ý,þßþÃÿ^¼Hó°=<{vY²`1ºd¹óIÜt×{Ø ¼Ï£˜¢åC¨¨æ:¸™w“|;CÊyµ¼”}XªTïÿvÿüþqþ˜þþ½ý~ý-ý¸ý ýëý²ý%þ³þ§þÿ;ÿLÿ*ÿ.ÿÓþNþCþþ»ýlýäü£üŽüŠü¹ü¯ü ýæü3ý”ýÐýÿýkþÿþÿ‰ÿ7¹%XX½ƒéÎŽ:M%._^~Áó÷àSPÙ‡`qÿÿâþ†þbþ¦þYþTþ9þDþ:þ–þ±þäþøþÂþ·þðþÍþ”þ€þ'þDþGþ[þŒþ†þ0þMþ”þ˜þ‡þšþÿþfÿ1ÿÿ±ÿ˜ÿiÿ¤ÿþÿÁÿ3OŠwŒ†T&]@~€~9®tl„­…èÿèÿíÿ `ÿ!ÿ ÿÂþÕþIþÅþÿÿ‘ÿÿmÿ¸ÿ—ÿ…ÿ ÿpþZþäý²ýYýêü]üWü8üHüüüýJýãý4þsþŒþ¤þLþvþÄþSþLþDþ‘þÙþÓþìþ]ÿºÿ¿ÿ žÿrÿ]ÿ@ÿñþÝþúþÿöþðÿ±Š«Cq\‹°|©õŠn0 `â߯ËÊ×±6¼èõVïÿ‚ÿKÿìþÎþ þäýˆü€üôü=ýœü?üÝüNü4ü¶ü@ýKþTýçýÛûßýýœýêüÁü¿úS÷Ûó`ïÄê~ä|Û…Øfëä h³ eˆ!g'!.ã.(€"Ø} yÿÏöîçòà‡ß@áçåæìæôþê Ùœ£ ÔX 2yü\õìï ë‡è™ç|èwêcíóð±ôEøkû¸ý]ÿ‚”xhA^Úí]\99QÏÊÿûóœF ‘ ›  ÿÓýÀüÿû€ûdûûçúæúáúÆúýú1ûXûxûû‡ú!ú½ùqùJù-ùäøÓø ùöø'ù»ùrúPûütýhþÿ¶ÿyžÉð/í´e3áÿ«ÿLÿÿœþ’þèþ—ÿ!—/¸ñΩáîß«g?x' {åîJ‰åc¥È×´cÁjÍu%ÁÿŽÿ%ÿÿþÄþ¿þ5ÿJÿ°ÿZ¾¼ K{F÷MÔÿ?ÿ³þÛýjý ýýý;ýEýJýšýþhþùþIÿKÿ`ÿ7ÿÿÿKÿáþîþùþ¼þvþ†þþÉþ»þÿ’ÿ ÿ?*ëÿ°ÿ“ÿ@ÿcÿtÿxÿÿìþ.ÿ0ÿßþõþ;ÿWÿxÿÆÿjÂ\Ê‘?+ИÔPàçÿ³ÿˆÿšÿ·_ïQ¡Þ.1¶ÿ­L©ÿ-ÿàþaþùýÛý2þôýþHÿGÿBÿ·ÿ8.µÿMQ:ÚÝÿÁÿ™ÿ ÿFþaþ»þòþ;ÿ‘ÿÚÿ‘Á†ï©Þ]ßÿÿ—þþ#þ¼ý…ý°ýŸýþ,þ§þ¾þ)ÿ„ÿSÿÿÿçÿ·ÿÜÿ>þÿ¤ÿ¬ÿ¬ÿÒÿïÿÿ»ÿ±ÿÐÿ^ÿIÿ“ÿ–ÿ£ÿÿ3ÿóþÒþïþ=ÿUÿ ÿ¬ÿÿÿ ÿºþÅþ²þ7þ$þ.þ/þÎýìý8þ`þVþfþÚþlÿ“ÿüÿCY¼¯e”õÜ©¬’}Hòÿôÿöÿ»ÿ\°ãõÁÏ\gqL£ÿeÿÙþðþ8ÿ3ÿ.ÿŒÿæÿ“¿äÔ3[iWuE…¢ÿàþØþ–þAþ´þ*ÿ~ÿáÿ?§Ó‚6*µ’rÉÿÿ·þðýUýáü„üfüˆü»üÙü]ý¬ýþ5þ<þkþtþþíýûýPþþíý±ýþ;þþ”þÿ©ÿG¤…°Ça 3{[¿yQ…ÿ+ÿzÿgÿtÿŸÿ®ÿjÿšÿ<ÿnÿÌÿ‰ÿ‚ÿÿáÿæÿ—ÿgÿfÿÕÿžÿ³ÿ·ÿ’ÿÿêþ¬þ}ÿvÿ­ÿ'=µÿ¸ÿtÿÿðþÙþÿÿqÿßÿ¥ÿ»ÿ‰ÿ¸ÿþsþDþþþ“ýdþ?ÿZýUþ™ýmýöúÖú½÷pôåðéëäbÝ•Õsæ¢ £ºÿz%<)‡.?27-x%j"”ü¢úœïRçpâ…àÞáräéêð/ùŸÕà W§ïÌ$ýe ±?ý ÷wñ@ìyè·æçIè”êžíñõùƒüÿÍZNÒÝW¢mÄ ¾ à ¦ õ ÷+ò±Ø4 † z  -îw5Fþaü-ûú‰úuúDúøùÇù¨ùJù2ùéø ù0ù÷øÎøø0ø øøAø_øÜøùù#ùPù‘ùÙù[úCûPü[ýþËþwÿòÿxÿw-NŽc5ÿ–ÔbJCoëZútݦÖÄ å³u€|`&COQg÷"ÝüæoÞ¸¥PÎÿÎÿ‡ÿ1ÿõþºþýþ>ÿ}ÿaÿ¨ÿWˆÜ ?Ik)´sNQL-Hj¼Æ¢°iÖÿrÿçþ¢þþ–þ…þªþsþrþ\þ×þ×þ–þðþrÿ‡ÿHÿ7ÿñþ¯þHþOþlýõücýŠý³ý»ý†ýãý'þOþJþjþ¶þÖþxÿ´ÿËÿ u·»ÑSlbBàùœjŒŽë$¶U”ÖõÿÕ¥eïc–Uùÿÿ0ÿÿ ÿ8ÿÌÿ*ŒAÈÛT í”kDö¼G±ÿIÿ„ÿnÿ4ÿ8ÿ›ÿ%†Íáìóó»rrÿÿ þaþÀý‹ýUý@ýýúüäüÈüöüý7ýMýÂýþdþ¢þ¬þSÿ}ÿ…ÿÂÿÖÿñÿôÿ¾ÿµÿÿ ÿ1ÿÿÊÿÂÿàÿ6|“·8\ƒN+X;Ìþ¬”:WO,l-øÿA`]RM['ñÿþÿ“ÿÿ„ÿ”ÿ ÿðþÿ…ÿsÿ|ÿ±ÿÚÿèÿêÿòÿ×ÿ°ÿ®ÿ›ÿKÿÿòþ­þ€þòýQþvþ†þšþÁþ/ÿ°ÿôÿ[°åìÏÝ`Š“ÂÌsP|ÿª04 ¸ ¹ÁáóÈÕÕíéòÆw0Ûÿ˜ÿ…ÿÿ½þ‰þ¤þyþ7þ3þUþ¹þœþaþšþ¤þžþ´þËþÄþ¬þÇþ3ÿKÿ‡ÿ»ÿòÿüÿ0_5 ÷ÿÄÿ™ÿÿ ÿ ÿiÿªÿpÿÓÿ'Lž Ì騲X#íÿBÿ°þçþËþÿ!ÿ÷þ:ÿÿØÿsõ(Q¯ÌXÁÀ™L@cs¢Ðß]¤lr áƒLýÿ3Ýÿžÿ¬ÿäÿÇÿ¼ÿÏÿçÿ°ÿ©ÿ¢ÿ…ÿPÿBÿqÿcÿsÿrÿ%ÿÿ;ÿÖÿEj­Â~|¾ÕcÊßD9'ÐÿÒÿªÿÊÿÂÿÌÿ)z£±¬ºÖ‡®Î“puÚÿÔÿ°ÿ„ÿôþ6ÿÿÕÿ‰ÿpÿˆÿ¶ÿ†Õÿ‡b¸‹…£Îÿ¼ÿ³ÿiÿ—þ£þ:þêýJü±û>û2ú ùÝöIôŠñ!ð=ë-êLàãPÚ¤á˜÷ð¥#„(ï(”)|(ø'#×ofQü^ó„ëßç±æ=ç“ê8ïAõbü”Y lÿ¦/t: $`ÿÞùøô ðìé?ç\çºè ëWî³ñäôÈ÷‚úýqÿÐ×PMÔa|G€'Ög?)@HG!Y½Ú¨[¶ÿÑýúû~úAù’øRø>ø3ø.ønø§øíø{ùú&ú€ú~úúÚùiùùØøíøù#ùêøÕøÄøÞø…ù#úûêûêü—ýOþÊþÿ{ÿoÈ ÐÌ–®·¤©t¶ÿEÿîþÿ¥ÿóÿ(x®¢³¼éë¢Ót[+HWtxŽÝ9PDu|?ø…ŒkM -SID}p™ x³ý/fƒkdP7݆~T¾â ¡³W£ÿaÿ3ÿÿÏþRþ_þþåýMýtý7ý?ý^ýuý©ýþ,þ»ýŠýÉý1þ9ýéýïüý¶ü(ý¬üqüuü”ülü”ü«üöüýêýeþÉþÿFÏëzG†r)Û¡/ûÿ¯ÿ†ÿ‡ÿfÿwÿ´ÿ(wä }ÉC>é³:¢ïÿÿùþÜþŸþÕþÊþÌþÜþ7ÿrÿ´ÿáÿ0½+ ÕK¹ÿXÿßþ‰þ5þNþIþpþ®þ%ÿÿÚÿ#GĽÅg'ØÿXÿ¢þJþ]þ"þþèýÄýÒýõýHþ:þ˜þ ÿ]ÿŸÿ¿ÿ9ApžÊØéØâ—§ƒ Ï”®Þq3)ùÿßÿÀÿ€ÿ“ÿ…ÿiÿfÿÿŸþ†þLþþý³ý]ýý¡üjü+üîûü ü ü_ü¾üöüwý²ýöýSþ¬þðþ#ÿ,ÿŠÿƒÿÌÿ3‹—ÅãÇÆäñéûó®È )åÿ´ÿ¿ÿ‹ÿ‹ÿ˜ÿÃÿ°ÿÔÿÏÿÏÿúÿ@Y`¯¼ªž^4óÿ›ÿoÿÿÈþ‘þFþ#þ þíýþ,þþtþŸþ„þ³þ²þ“þIþCþ%þÀý™ýNý,ýý&ýKýªý×ýþNþ„þ¹þÿÿ>ÿ]ÿYÿmÿPÿNÿ8ÿÿÊþ¬þ~þ´þÎþÿkÿúÿNx£Ãä"-o…šŒEN ÷èÚ¯T!¨ÿ¨ÿ§ÿTÿÿgÿkÿfÿ‘ÿ®ÿìÿ 5@gY0ØÿÿkÿÿžþAþþÎýœýžýŽýýòýRþjþÊþ<ÿŒÿüÿôÿ 70þÿÔÿúÿÍÿ°ÿ«ÿÿ¶ÿúÿ!'LAMª­í첇¦¸–£¿´¥…UKi£¯Þë¾È¶™|@ ¿ÿËÿ¹ÿ§ÿ¾ÿÌÿÊÿÓÿ3L2?L™ ¿‘„VS9òÿõÿëÿéÿõÿ¹ÿšÿ¼ÿÐÿµÿÆÿp z„¯ªÎÞ˜·k66­˜¥”Š”©“ÔRÀÎÈ ûðÉrd]äâš…j*Bòÿ˜ÿìÿ±ÿ˜ÿËÿ½ÿÕÿàÿ,(T^„ù¸Ëºè¿ŸOi<P%ÔÿÔÿ°ÿßÿÙÿóÿÿÿd9:ŸááT ®‚œ²ÍËû(BíÌס¸Â¤ˆ”x%'RFÀÿÙÿ¨ÿÙÿeÿrÿeÿ\ÿQÿýþÿÿÙþ9ÿ;ÿ–ÿ­ÿêÿáÿ:&%0Š4&IìÿàÿÚÿ¸ÿtÿzÿ‹ÿaÿcÿ‚ÿÉÿìÿHbtuÆY’ô1x‚IK/Ø´ª–X$ü !%&&f2sÆÀ†ƒÕz Áÿzÿ2ÿÿRÿYÿ§ÿgÿKâÿÃÿŒÿTÿöþØþKþ þîýþÐýtýbýwýeý†ý½ýIýÓýiþþµþ7ÿzÿ–ÿ?ÿÿ+þëýçýŠýçüáû×ûƒúZúêöoò€ïçÛàðÜtÜ{âû¥ÿ|N Á‘n'#.n0Z42Ì,K"š) MûMõÒïûìë©é‰ëéð¸öyüz ® ù`Mg†  ÍøüGùNõ­ñ“î2ìtëìêoëtìKî#ð‘òªõù…ü”ÿ+¼%ØÈ_ë¡t…€u£¿ø1N'Úª:½pÿ8þJý£ü üYûúQúùùÃùïù3ú‚ú¢úÏúÔú·ú‹úPúVúwúŸú û1û=û ûûú&ûoûâû7ü•üÐü³üàüÒüôüýcýÿý”þöþFÿÖÿ%uça†—ŽaMR„ÁH2îÚùëÛΪb."14V\ôÈ¢HŠTSnŠ¥}q€rFn’qML ,AÊÜ'aÐ?‰¤•”´• Ž²’¾ùC2ÒΛ) Ú°Fó‰)¶ÿhÿsÿnÿtÿ7ÿ.ÿLÿMÿ)ÿþþvþþøýœýýÕü›ü~ü@üeüü:ü üüÌûÏûü$ü‰üõü1ýuýÊýþSþ^þ…þ×þ»þ–þ?þÌýGýãü†üõûÃûóûëûü“üAýÉýþAÿßÿxòR^ˆ(ßm ¥ÿvÿWÿÿÿBÿeÿ…ÿíÿB‰Ñ-$‹¾«ÊÍ­}]€cýÜz^´uˆ„“^V ¹µƒRØÿSÿ ÿ¦þ9þ þúýÓýÆýéý¾ýáý%þNþþŸþÒþêþAÿ8ÿÿ.ÿÿÆþËþ˜þþþÓýÌýåýÇý¼ý²ýÄýþ þþ^þFþPþ+þCþ-þ"þ þöýëýïýÁý„ý»ýÉý þ5þWþÎþþ þÅþêþÿÿÿÿ ÿýþÿÿ ÿ"ÿpÿqÿrÿ“ÿµÿ¼ÿêÿåÿ"åÿ»ÿhÿ’ÿ¶ÿŒÿ‹ÿSÿ2ÿÿûþÿ4ÿPÿTÿeÿŠÿ¡ÿçÿ"<>úÿýÿìÿÿHÿ/ÿÙþ°þ•þ/þþþýëýþSþ¥þ»þñþÿRÿeÿGÿSÿ,ÿïþÈþ–þBþüý‰ýiýbýQýEýpý˜ýÊý%þ\þ×þîþìþ&ÿNÿBÿÿüþéþáþ›þºþ¸þÚþåþåþ÷þBÿ`ÿMÿ}ÿžÿ¡ÿ}ÿŸÿ³ÿ®ÿ­ÿ+p~£¥•…U-øÿÖÿ¦ÿ}ÿJÿFÿ-ÿÿÿþ÷þÿ>ÿYÿ…ÿ…ÿŽÿËÿ±ÿËÿÁÿÍÿàÿãÿ¤ÿ´ÿªÿ‚ÿ­ÿ½ÿ¶ÿÁÿ¢ÿiÿJÿ0ÿÿíþãþÿ9ÿKÿrÿeÿ—ÿêÿàÿÝÿÛÿîÿ¹ÿ®ÿÎÿÂÿ¬ÿžÿ¡ÿdÿ`ÿ,ÿKÿ/ÿ*ÿOÿ…ÿ¢ÿ{ÿÏÿÞÿÓÿÓÿ¾ÿjÿhÿ<ÿÿLISTDINFOIART Jörg GrafICOP(c) 1999 by Jörg GrafICRD19/8/99DISPKDErolldownvtwm-5.4.7/contrib/vtwmrc/sounds/ping.au0100664000015300001300000003367710237645271017123 0ustar callumfid.snd 7Ÿ@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿ÷ÿww÷ëïkkïç÷ho÷ãÿowwwwÿçhkÿçïhoÿo÷÷ïÿ÷w`^ÙÌwCPÁ¼R=Ѿ^AĺM5Ͱ×1X·¿6Lº¾5F°¸<;¶²H4¼°R2ï\/Ì­Ý.ë¯Ï/÷°Ñ/ï¯Ê.R³¾0K®¿/M­º/@®µ4>°¶6=²³;9¶°?6»¯G5½¯I3¿®V/É®÷.ϲw/˱÷-Ó¯Ù-ݯÑ.ï®È.X®Á0R¯Â2N¯½3G¯º7?³¸:?³Ç=<¶ÂA9º½L9¿½P9û^8˺ë9ß»×¼¹E=¾·K;õZ7϶ï8ç·Õ6d¹É7T¼Â9JÁ¼:Bɹ>?ÕºB@ÁºF>È»M?ͽTAÏ¿V?ÓÁ^DÓÅZCÍÄdBÑÇÿEÕË÷HÙÍãLëÑÝTïÛãdçã÷ÿß÷wçßd^ÝÑ`OçÍhNÿÍwNwËëL^ÊßJVÌ×NNÓÑVNÛÑ\MãËkKoËëM^ÌÝN\ÊÙORÊÑTNÊÌZIÊÉGDÌÅI?ÎÀM>ÙÀM>×¾M<ݽO<ç½N<ç»O:w¹Z:`»^;h»`9Xºo9R»ï;O»ç9Mºã9L¹Ý6F·Ó5?¸Ê5=ºÆ6:»Ã67¼½7@¿¹:=Å·=;ɵ@8ѳG7Ý´M6ï³T4k´^4^µh4X´w3Óµß3ݵÑ3w¶Ç4X¹Á6Oº¾6J¼»7B¿¸;=Ŷ?;̵C9Ó´J7¾³R6ô`5È´÷5Ï·Û7׺Ù9ß»Ï9ÿ¿ÉhÈÈ?^ËÅDTÊÄIPÑÅOO×ÇXLÙÄkFÝÃßCwÄÑC\ÅÌCTÅÉFLÈÆJHËÆNEÄÇ\AÉÇÿ?ÕÍÙCãÙÏH÷çËH\wÄNO\ÃXKPÃhJLÆëMXÌëRZÏçT\Õã``çw÷çïVwÑßOhÉÙL^ÃÍHP¿ÆIJ¾ÀJB¿ÆO>ÂÂX<Žh8̺ë8Õ¹Û7ݸÓ6ç·Í5o¶È5`µÃ5O¶¿6J¶×7C·Í9?¸È;<ºÂ?:½¾G7ûP7ɺ\5Ϲw5Ù·ß5ë¶Õ5w¶T6d¶Z7^¶d7Zµÿ8Rµß9N¶Û;L·Ù;I·Ï?¹Ä7<»À:;¾¿;:¿½<8¼>8Ä»?7ǺB7ʺD8˹B7̸E6×·K:ã·M:÷·V9`·`9X¸k9P·ï8K·Û7E·Ó6@·Ì5=·É5;¸Ã4Jº½6C¼»7?½¹7=À¶:9Ƴ=7βA5Ù±H3ÿ°R2Z°d2P±ÿ1ѱã0ݲÓ/÷³Ë0kµÈ/h´Æ/^´Â.Vµ¾/O¶½/L¸»0G¯º3D°¸4@±¶6>³µ9<´´;:¶±>8·±A7¹¯G4»®M2½®V/¿²d.İ÷.ȯß-Ï®Ñ-Ý®Ì.ë¯Ë.w¯È/`°Ç1\²Ç4V³Ã6M¶ç:K¸ßG¼ÓBH¿ÓEHÂÎIGÈÌOHÌËPHÎÈVGÙÈ`IãÈMIëÈRIÿÈXLwÊ\LwÊdMkÌkOhÏÿTdÓçZ\Ûßd\ãÛ`Xï×kXo×÷Zd×çZ^ÙÛ`VßÕhVëÏÿPÿËçPhË×T\ÌÓTVÌÛXPÎÓ`O×ÏoPßÌ÷RïÍçZoÏß^dÑÛk`Ýß÷hëïïwïÿÿïï^hßçX^ÛßTX×ÙNMÕÎNHÛÊNCÛÃO>ï¾Z=`½o>V¼ë>L¼×9G¼Ï:B½É:?¾Ä<<Á¿=;Ž@:Ê»D8Ó¹K8ã¹P9ÿ¸\9Z·ï8K¹×8F¹Î8@»Å9=¾Â<<¿=:Ž?8Ì»C8ѹH7ݹL;ë·R9o¶Z7\µk5R´ï4J´Ù4DµÎ3>µÇ3;·À48º¼65½¹8<µ<7ͲC4ß°M0d¯^/O°÷0F²×1?´Ì3<·Ä59»¿98À½>ιF=ݺL=ëºP;k¹d:V»÷;P¼ë;N¼Û:I¾ÓRÇÆBNÌÆFNÎÆIKÕÅOLÝÈTLãÇ\IÿÆoHdÈëIëÉßHkÊÑIZÍËKRÏÆNJÙÂVDë¿`@k¾÷>X¿ß>O¿Ó>HÁÊBTÈÆHOÍÄLIÙÂ\EÿÃÿE^ÃÛDPÇÍHJÎÉMI×ÇRHçÄ`HkÅ÷HXÈßJPÌ×LMÑÎOKÛËXLëË`MkÊwN^ÌëTXÎÛZOÓÑPJÝÊXGÿÄdD\ÁëDNÀÛFIÀÏGBÂÈM?ÆÄR>ËÂ\>ÓÁo>ÝÁO@ïÁV@oÁ\ChÃdEdÄhF\Ä÷HVÆãKRÉ×MNÌÏTKÑÌ\J×ËMIÛÉTIçËZKëÌ^L÷ÎoPo×ÿXwÙ÷\oßëkwÿïÿÿwïïÿkïçïhwçßkoçãkhçÛw^ïÙë^oÙã^k×Û\\ÙÓ\RßÍ`MÍÉ^IÌÅdDÏÃoBÑÁo@ÑÀw?׿ï>Û¿ç>ã¿ß>ëÁÛ>ÿÁÓ>h¾Ë?Z¿Ç@P¿ÃBL¿¿CI¿½EE¿»G@À¹J=À·L:ÁµO7IJX4ȵk2βë/ׯ×/ë¯Ë/h®Ã/T®¾0J®»2B®·4<¯´89²³;6´¾>3µ¼C1¹¹I/»¶R.À´`.Ųÿ.̱ß.Õ°×.ç¯Í.k®T.T®d.K®ï/E®Ý0>®Í3<¯É5:±Ä88´Á;8·Á>8¹¿C8½¾88¿½:8Á½=8ĽA8ȽG9̽N:Õ¾X<ß¿h?ÿÀïE`ÅßMXÉÛNRÏÕZPÝÕoV÷×ãZh××hZãÏëV÷ÏÙVkÕÑ\`ÝÌhVÿËëT^Ç×ROÆÊVHÈÅ\EËÂdCÏÁoD×ÃwFÛÅÿKçÊÿPçÎkVßÙd\ÝßZ\×ãTZÑãOXÌßLPÊÛJLÈÓKHÈÍLDÈÉO@ÉÄR=Ë¿A;νD9ÓºH6ß·N5ÿµX4`³h4R³ã5I³Ï8BµÆ;=¸À>:»¼67¿¹95ȶ=4Ñ´A3ã²I3k²V4V²k6K³Ý9D¶Í<>¹ÄA;½¾;8û?7˺F7׸M6ë¶Z7d·o8V·ç:M¸×¿Â;<Ä¿>:˽C:Õ»I:ç»P:w»\;`¼o=X½ë?R¾Ý=NÁÕ>KÃÑ?JÅÎAIÈÌCGÉÉDDËÇFCÎÅIBÑÄLAÛÃRBëÃZEoÂhB\ÂïAOÃÙBJÅÏDEÈÊEBÌÅI?ÓÃL@ÙÂO?ßÂR@çÂVFëÃZF÷Ã^FoÆkIdÊÿL`ÍëO\ÕãVXÝÝ`XïÝo\wß÷^hãã`dëãddëãhh÷ãkkÿçkowëÿwk÷÷ïow÷ëkwëãhhãßhdãÝh^ßÙkXßÕoVãÓÿTçÏëR÷ÏÝVÿÑßVoÓÝZhÕÛ`dÛãh`ßßo`ãÝw\ëÝï`÷Ýï`wÛçdhÝßh`ßÛo\ã×wVëÕïT÷ÓçRwÏßOhËÙN^ÉÓMXÇÍLPÆÈLLÆÃPIÊÃTGËÂZCÏÄoBßÄëDïÄÝDhÄÏHVÇÍMPËËRMÎÉ\KÕÉhJÛÊwIçÊçJ÷ËßJwÊÛIhÉÓJ\ÉÎJVÈÊLPÇÇLKÇÃOFÉÀRC˾X?ͽ`=Ѿo=Ù¾÷=Ý¿ï=ã¾ç=ë¾Ý=÷¾Ù=o¾Ñ>d½Î>\¾Ë?V¾ÈBPÀßEMÂ×ILÅÑLJÈÏPKÊÏTLÍÎZLÏÎ^MÓÎdN×ÎkPÝÑ\TßÕ\XãÕ`\çÛddãã`dãã`hãëdkãï^hÙë\dÝç^dÝç\oÛßZhÝÙZ^ÝÕXXÛÍVNãÈ\JïÄ`EoÀk?^¾ï=R½ÝßÀT?ëÀXB÷¿^@h¿o?\¿ï>P¿Ý=K¿Ñ=FÂÌ?CÃÈ??ÇÃB>ÌÁG=Õ¿KAݽN>ï¼T=o»`<\»o;T»ë;M»Ù;H¼Î;C½Ç;?¿Â=<¿=HĽ?CÇ»A?ͺE>Ó¹H<ݸM;ë¸O;ÿ¹V;kº`<`»o=\½ÿ>Û¾ç>ç¿ß@÷ÂÙBoÃÕCdÆÏE\ÉÎHXÌÌIRÏÊMP×ÊPNÌÉVLÑÉ`LÙËkMßÍÿMëÏïNÿÓëPwÕçPoÙçTÿÛïV÷Û÷XïÝwXëÛoVçÛkVãÙhTÝ×hPßÕhPÛÓhOÝÏkNßÎoNßÍwNãÌ\MëÌ`NïÌdNÿËoNkÌÿPdÍïR^ÎßTXÏÛZVÑ×\TÕÓ`PÙÏXPßÏZPãÏ^PëÏ`TïÓhV÷Õk\ÿÝo`ÿßok÷ëwwïÿo÷çooççhoßã`kÛß\h×ÝZdÕÙX`Ó×T^ÑÕRZÎÑRTÎÎTRÍ×TNÍÓVKÎÎ\HÏÊ`EÕÇoDÛÅ÷BãÄçCïÃÝCwÃÕDdÂÎD\ÂëFRÂÝGNÃÕIJÃÏKGÅÌNDÈÉRBÌÅ\@ÓÃo?ßÂç@ÿÁ×AdÁÿCVÂãFOÃ×IJÅÎMGÈÊRDËÆ\BÑÃk@ÙÂ÷@ãÀã@÷ÀÙAoÀhCdÁÿEZÃçITÅÛMOÉÓTMÍÏ\LÓÌkJÝË÷JïÊãKwÊwLdËëN\ÍßRXÏÛXTÓÕ^RÙÓhRßÑoRãÑ÷PëÎëPÿÎßOwÍÿOhÍïP`ÍçP\ÎßTVÏ×XPÓÓ^NÙÏhLßÎwLëÍïKwËãJhËoL`ÌÿL^ÍïOZÏëRZÓçVZÕãZXÙß`ZÛß`ZÝßhZßÝkZçÛ`ZëÙhZ÷×kZw×ÿZkÕïZ`Õß\Z×ÛdXÛ×hTÝÓoPçÏ`P÷ÎoRoÎÿTdÎçV\Ñß\XÕÙ`TÙÕkPßÏÿPëÏëR÷ÎãPwÍÿThÎïVdÏëX`ÑãZ\ÕÝ^Z×Ý^XÙÙdXÝÛhXßÛkXçÛwZëÝd^ïßd^ïßh^ïßh^ïßk^÷Ýo^ÿÝw`oÝÿ`kÝïddßãk^ãß`^çÝh\ëÛk^ïÝo^÷Ýo`ÿßwdÿçÿhÿçÿkwçÿwÿïÿwÿ÷ÿwÿ÷ÿwÿïÿwÿïwoÿïwkÿëwhwçwhoçÿdoç÷dkç÷dÿç÷dÿç÷hwç÷hwë÷kwëÿkÿëÿhwëÿhwëwhwëwdwëÿdoëÿhoï÷hoëïkkïëkhïëokïçwd÷ãÿh÷çÿhïãÿd÷ß÷d÷Ý÷`÷Ûï^÷Ùç^ÿÙç\wÕß\oÕÛ\hÓÙ\`ÕÕ^\×ÑdVÙÕkTÝÑwPßÎ÷OçÍçNïËßNÿËÛNhË×O`ÌÑPZÌÏTXÍÍVTÏÙ\TÓ×^TÕ×`TÙ×hTßÙoVçÙwXëÛÿ\÷ßÿ^ÿã÷`oçïhoïÿkoïÿko÷÷woÿ÷wow÷woÿ÷woÿ÷woÿïok÷ïwhïëwh÷ëkh÷çoh÷çwhÿçÿkwë÷ooïïÿoÿë÷owëëooïëwoïëwh÷ã÷hÿßïdwÝçdkÝãhhßãkhßãkhããokççwoïïÿÿïÿÿ÷÷wÿï÷wÿçÿoÿçÿkÿãÿhwß÷doãïdkãëddççd`çßd`ëÝh\ïÙkZÿÕoVoÓÿRhÏïO`ÎëN\ÎãMZÎßLXÍßLTÍÛLhÎÙNdÓ×P^×ÕT\ÝÓXXãÓ^VïÑdPoÏoPdÑ÷O^ÑçNoÑßNhÓÛO`Ó×O\×ÓRXÛÑVTßÏ\RëÎ`P÷ÍkNkÍÿN`ÎçM÷ÌÝMoÎÕMdÎÑN^ÏÍNXÓËPT×ËRPÙÊVOçÊZMïÉ`MwÉhJÝÈÿIçÈëH÷ÉÝHkÊ×H^ÌÏIVÎÌJPÑÈLL×ÄNHßÃRDëÁZBÏ¿d@Õ¿w?Ý¿ç?ïÁÙ?kÂÑ@^ÄËATÇÇCMÊÃEIÎÁGF¿JCþM@žP?ȽV?˽^>νh>Ó¾ÿ?Û¿ë?ãÀß@ïÂÙBÿÁÕCoÁÏEdÂÌFZÃÊIXÃÈKPÅÇMNÈÇOMÊÇRLÌÇXKÏÇ\JÓÍ`JÙÌkKÝÍwLãÍÿLëÍïMÿÎçNoÏãOkÑßRhÕßVh×ãXhÙÿZhÛ÷^hÝ÷`hßÿ`hß÷`hßÿdhÝ÷`hÝ÷`hÛ÷^dÛïZdÛëZ`Ûç\`Ýç^`ßã``ããddçãhdëãkhïãwh÷çÿoÿçÿoÿç÷wwïïÿÿëï÷ÿ÷ï÷ÿÿïïÿw÷ï÷wÿï÷oÿï÷ow÷ïww÷÷ww÷ïwo÷ïÿoÿïÿoÿëÿkÿç÷hwãïdwßï`wÝë\oÙçZo×wXkÕwVkÑÿThÏ÷RdÎ÷P\ÍçPXÍßRTÍÙTOÎÕXMÏÑMKÓÍNJ×ÌPIÝÊVHçÉZI÷È`HoÇoI`ÇïJZÈçLTÈÙNNÊÕIMÌÑKLÎÎMJÓÌOJÙËRJÝÊVIçÊ\J÷É`JoÉkJdÈwK^ÉïIXÊçJTÌÛJPÍ×LOÏÓMMÕÏOLÙÎTLÝÍXLçÍ^MïÍdOwÎoPkÏÿRhÑïTdÓãV^×ãZ^Ùß\^ÝÝ^`ßÝ`^ãÝd^ëÛk`ïÛo`ÿÝÿ`wÝ÷^kÝë^hßç``ãßd^ëÝh^÷Ûo^wÛw\oÛ÷\hÛç\dÝã``ßß`^ãÝd^ëÛh^ïÛk\÷Ûk\ÿÛo\wÛoZwÙwXk×ÿVh×ïVdÕëT^ÕçT\ÕßTZÙÝVXÛÙXVß×\Vç×`Xï×hZwÕwZoÛ÷\kÛï^hßë`dççddëçhhïçohÿëwkwëÿkoëÿkoï÷kk÷÷ooÿ÷ÿowÿÿwoÿ÷wkwïÿkwïÿkwï÷koïÿkwï÷ooë÷owïïwwï÷wÿï÷wÿïÿw÷ïÿo÷ïww÷ïwo÷ïwo÷ïwoÿëwo÷çÿowç÷oÿç÷kwçïkwëëooëëwoëëwoïëwÿïïwÿëëoÿëëoÿëëkÿçëkwçëhwççhoãçdkççdkßçdhßãddßßh`ãßh`ãÛk\çÛoZçÛoZëÛwXïÙÿX÷Û÷XÿÙïVwÙëXw×çXw×ãZoÙãZoÙß\hÙß\hÙÝ^`ÛÝ^`ÛÛ`\Ýã`ZßßdXßÛhVãÙoVãÕwTçÓÿRïÑïPÿÏçOwÎßPhÎÛP`ÍïP\ÍãTXÎÝXTÏÙZRÑÕ^OÕÑdNÙÎkMÝÍwMßÍ÷MëÌ`M÷ÌhMwÌkNoÌÿOhÍ÷PdÎïR^ÎçTZÏßXXÓÝ\VÕÛ^VÙÙTTÛ×XTÛ×ZTß×\Vß×\Vã×^Xã×`XëÙdXïÙhZ÷Ûk\ÿÝw^oßÿ`oãÿdkçïhkëëkkïëok÷ëwkwëÿooïÿowï÷ww÷÷ÿÿÿÿ÷÷wwëïwoïëwkëãwhïßÿd÷ã÷`÷ß÷`÷ßï`wßï`wßë`wßë`oãëdoãëdoçëhoçëhkçëhkëëkkëëkkë÷kkï÷kkë÷okï÷ooï÷ooïïooëïwkïëwhëëwdïçw`ïãkd÷ßk^÷Ýo^ÿÝw^ÿÛw^wÛÿ^o×÷`kÛï`kÛï`hÛëhhÝç`dßãddßãkhëãohëãwhïßwk÷ãÿkÿçÿkÿçÿowëÿoÿëÿoÿëÿoÿïÿoÿïww÷÷ow÷÷oo÷÷koï÷hoï÷hoïïdkçïdkçëdhãçdhããddãßh`ãÝk^ãÛo\ëÛw\ïÛÿZ÷ÛïZwÛïZoÛë\kÛã^dÝß`dÝÝd`ßÛh`ãÝk^çÝo^ëÝw\ïÛ÷^ïÝï^ÿÝï`ÿÝç`wÝçdoßãhkßãhhßßkhãßkhãßkdßçkdããk`ããk^ãßk^ãßo\çÝo\çÝw\ëÝÿ\ïÝ÷`ÿÝ÷^ÿßo`wãwdoçÿhoë÷koëïwoïëÿoïëÿkïç÷kïç÷kÿç÷oÿëÿowëÿoÿëÿoÿëÿoÿëÿw÷ïÿw÷ïÿw÷÷wÿï÷wÿïÿoÿïÿoïëÿoïçÿkïçÿkïçÿk÷çÿk÷ëÿkÿë÷kÿë÷k÷ï÷owï÷owï÷ooï÷owï÷ooï÷ooïïooïïkoïïokïëokïëokïïohïëwhïëohïëÿhïçwhïçwhïãwdïçÿd÷ãÿd÷çÿd÷çodÿëodÿëkhÿçohÿçohÿçohÿçohÿçwdÿãwdwßÿ`oÝ÷^kÝï\hÛë\dÛçZ`ÙßZ\ÛÝZZÛÙZXÝ×\VßÕ\TãÓ`XëÓdV÷ÑkVÿÑoToÑwTkÓ÷TdÓëT`ÕçT^ÕßT\×ßVZ×ÝVhÙÛVdÙÙX`Û×Z^ÝÕZ\ßÑ\XãÑ^XëÏ`TïÎhRÿÎoPkÏwPëÑïOÿÑçPoÕãRh×ÝT`ÛÙV^ßÙZ\ã×\Zë×`Xï×dX÷×hZã×kXç×oXëÙwZëÙÿZïÙ÷\ïÛ÷\ïÛ÷\ïÛï^÷Ûï^÷Ýï^÷Ýï`ÿÝï`ÿßï`ÿßëdÿßïdÿãëhÿãïhÿãïkwãëhwç÷kwç÷kwç÷koçïkoëïooëïooï÷wwï÷ww÷÷ÿwÿ÷ÿwwÿÿwwÿÿwwÿÿwwwÿwowÿwowÿÿÿwÿwwÿÿwwÿÿwwÿ÷wo÷÷oo÷÷oo÷ïok÷ëok÷ëok÷ëwk÷ëwkÿçÿoÿëÿoÿëÿkwë÷kwë÷koëïkoëïkoëïkoïïooïïooïïoo÷ïwo÷÷wwÿ÷wwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷wÿ÷÷wÿ÷÷wÿï÷oÿï÷kÿëÿkÿë÷hÿç÷dwãïdwãï`oßë`oßç`kßç`hßã`hßßddßßd`ããh^ãßo^çßo\çÝÿ\ïÛ÷\ïÙï\÷ÙïZÿÙë\ÿÙç\wÙÿ\oÙ÷^oÛ÷`kÛ÷`kÛïdhÛëdhÝëdhÝëhhßçkdãçkdãç``çãd`ããd`çßh`çßk`ëßkdëÝkdïÝo`÷ßo`÷ßo`ÿßw`wßÿ`oã÷`kãïdhçïdhëëdhëëhdïëhkïëhdïëhh÷ëkh÷ëkhÿëkhÿëohÿçodÿçodwçwdwçwdoçwdoëwdÿçÿdÿëÿhÿëÿhÿçÿhÿç÷hÿçïhÿçïhÿçïhwçëhwççkoççooççokçãwkëãÿhïãÿhïãïh÷ßëhÿãçhÿãçhwããhoßãhkßãkhããhhãßodçßk`çßw`ëßw^ïßÿ^÷ßÿ^ÿãï^wßï`oßë`kßçdhããhhãçhhçãkhçãkdëãodëãwhïçÿd÷ç÷hÿç÷hÿçïhwçëkoçëkoççokëçwkïçwkïçÿk÷ç÷kÿçïkÿçïowçëowëëwoëçwoëëwoëçÿoïëÿoïëÿoïïÿo÷ïÿo÷÷ÿoÿ÷ÿoÿ÷ÿow÷ÿow÷÷ow÷÷wo÷÷woÿ÷woÿïÿkÿïÿowï÷owï÷owïïooëïowïïooëëoÿëëooï÷ooïïwkïïwk÷ïwk÷ëÿhÿëÿhÿëÿkÿë÷kÿë÷hwë÷kwëÿkwëÿkoïÿooïÿowïÿooï÷woï÷woïïwoïïÿoïïÿoïëok÷ëwk÷ëwkÿëwkÿëwkÿëwhwëÿhwëÿkwëÿkoë÷koë÷hoëïkoëïkkïëkoïëok÷ëwo÷ëwkÿëÿkÿç÷owë÷owëïkwë÷koïïkoïïooïïooïïokïëok÷ïokÿëwkÿëwkÿëwkwëÿkwëÿkoï÷koï÷oo÷ïwoÿïwowëÿowë÷ooëëhkçëhhëëhdëçhdïçh`÷çh`÷ãk`ÿãodÿãwdwãÿhoç÷hoçïhkçïkkëëkkïëok÷çok÷çwkÿãÿkÿãÿkwã÷kwç÷koçïhoçïkoçïhoëëkkëïkkëëooïïooïïooïïoo÷ïoo÷ïooÿïwoÿëokÿïwkÿïwkwïwkwëÿkwëÿkwëÿhÿë÷hwë÷hwëïhoëïhkïëhkïëhh÷çkh÷ëohÿëwhwëÿk÷ëÿkÿïÿoÿï÷owïïwwïïow÷ëwo÷ëwo÷ëÿo÷çÿoëçÿoëçÿoïçÿkïçÿkïçÿk÷ç÷kïë÷kÿçïkÿëïowëïowëëooëëwoëçwoëçwkïçÿkïçÿk÷ç÷k÷ë÷oÿëïkwïïooëïooïëwkïïwk÷ïwkÿïwkÿïÿhÿ÷wkw÷ÿkw÷wkw÷ÿkw÷wkw÷ÿkwïÿkwï÷kwï÷owï÷owï÷ooïïwoïïwwïïwoïïÿoïïÿoïëÿo÷ë÷o÷ç÷o÷ë÷o÷çïoÿçëoÿãëowçïooçïooëëwkëëwkëçÿkïçÿkïç÷k÷çïkÿçïkÿçïowë÷owë÷ooï÷woïïwo÷ïwk÷ïwkÿïÿkÿïÿkÿïÿkwïÿkw÷ÿwo÷ÿoo÷ÿwoÿÿwwÿÿÿwwÿÿwÿÿÿwwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿoÿ÷ÿwÿ÷ÿoÿïÿwÿïÿoÿïÿoÿï÷oÿï÷owï÷owïÿowï÷ooïÿooï÷ooï÷ooïïoo÷ïwo÷ïwo÷ïÿo÷ëÿoÿëÿoÿëÿowëÿowë÷owë÷ooë÷ooï÷ooï÷wwïïwoïïwoïïokïëok÷ëwk÷ëwkÿëÿkÿëÿkwëÿkwëÿkoë÷koë÷koëïkoëïkoïïkkïïokïëok÷ëok÷ëwoÿëÿoÿëwoÿëÿoÿëÿoÿïÿoÿï÷wwï÷wÿï÷wÿï÷wÿï÷wÿïïwÿïïwÿïïwÿïïwÿïïwÿïïww÷ïwo÷ïooÿïokÿïwkwïwkwïwhwïwhÿïwhwïÿhwïÿhwïÿhoïÿho÷÷ho÷÷hk÷÷kkÿ÷kk÷÷ok÷÷ok÷÷oo÷÷wo÷ïwo÷ïwoÿïwoÿïÿoÿïÿo÷ïÿo÷ïÿo÷ï÷ÿ÷ë÷wÿëïwÿëïwÿëïÿÿëëÿÿëëÿwïë÷ÿëë÷wïëïÿïëïÿïëïwïëïw÷ëïÿïïïwÿï÷wwïïÿw÷÷ÿw÷ïÿwÿ÷ÿwÿ÷ÿoÿ÷ÿow÷ÿow÷ÿow÷ÿowÿÿowÿÿowÿÿowÿÿowÿÿwoÿÿwoÿÿÿowÿÿowÿÿwwÿÿwwÿ÷woÿ÷ÿÿÿ÷ÿwÿ÷ÿwÿ÷÷wÿ÷÷ww÷÷ww÷÷ÿw÷÷ÿw÷÷ÿwÿ÷ÿÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿï÷ÿÿ÷ïÿw÷÷ÿwÿïÿwÿ÷ÿwÿ÷ÿwÿÿÿwÿ÷ÿwÿÿ÷ÿÿ÷÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷÷wÿ÷÷ww÷÷ww÷÷wwïïwwïïwoïïÿo÷ïÿo÷ïÿo÷ïÿo÷ï÷oÿï÷wÿïÿoÿï÷wÿï÷wÿï÷wÿï÷ww÷÷ÿw÷÷ÿw÷÷ÿwÿ÷ÿwÿ÷÷wÿ÷÷ÿÿ÷÷ÿÿï÷ÿÿ÷÷ÿÿ÷÷ÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿwwÿÿwwwÿwwÿÿÿwÿÿÿowÿÿowÿÿowÿÿowÿ÷owÿ÷woÿ÷wwÿ÷woÿ÷ÿoÿ÷ÿoÿïÿoÿïÿoÿïÿoÿï÷oÿï÷wÿ÷÷ww÷÷ww÷÷wwÿ÷ÿw÷ïÿw÷ïÿwÿ÷÷wÿ÷÷wÿ÷÷wÿ÷÷ÿw÷÷ÿÿ÷÷ÿw÷ïÿÿ÷ïÿÿ÷ïÿÿïï÷ÿ÷ï÷ÿ÷÷ÿÿ÷ëÿÿ÷÷ÿw÷ïÿw÷÷ÿw÷ïÿw÷ïÿw÷÷ÿw÷ïÿwÿïÿwÿï÷ww÷÷ww÷÷ww÷÷ww÷÷wo÷÷ÿoÿ÷ÿoÿ÷ÿoÿ÷ÿoÿ÷ÿwÿ÷ÿow÷ÿow÷ÿow÷ÿowÿÿoÿ÷ÿow÷wow÷wow÷wow÷wow÷ÿowïÿow÷ÿowïÿowïÿowï÷wwï÷wwï÷owïïwwïïwwïïwoïïwo÷ïwo÷ëwoÿïÿoÿëÿoÿïÿoÿëÿoÿïÿoÿïÿoÿïÿoÿïÿoÿïÿoÿïÿoÿïÿowïÿoÿï÷oÿï÷oÿï÷owï÷owï÷ow÷÷ow÷÷oo÷÷ooÿïwoÿ÷ww÷÷wo÷ïwoÿïÿoÿïÿoÿïÿoÿ÷ÿoÿïÿoÿ÷÷oÿ÷÷wÿ÷÷wÿï÷wÿï÷ÿÿïïÿÿï÷ÿÿ÷ïÿÿ÷÷ÿÿ÷ïÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿwwÿÿÿw÷ÿww÷ÿww÷÷wwÿ÷ww÷÷ÿwÿ÷ÿwÿ÷wwÿ÷wwÿ÷wwÿ÷wwÿ÷wwÿ÷wwÿ÷wow÷ÿww÷ÿow÷ÿow÷ÿow÷ÿow÷ÿoo÷÷oo÷÷ooÿ÷ooÿ÷woÿïwoÿïwoÿïwoÿïÿw÷ïÿw÷ïÿw÷ïÿwÿïÿwÿï÷wÿï÷wÿï÷wÿï÷wÿï÷ww÷÷wÿ÷÷wÿ÷ïÿw÷÷ÿwÿïÿwÿïÿwÿïïwÿ÷÷wÿ÷÷ww÷÷ÿÿ÷÷wwÿ÷ÿÿÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿww÷ÿowÿÿowÿÿowÿÿwwÿwowÿwowÿwowwwowwwoowwowwwowwwowÿwowÿÿwwÿÿwwÿÿÿÿ÷ÿwÿ÷ÿÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷÷÷÷÷ÿ÷÷÷÷÷÷÷÷÷÷÷÷÷ï÷ÿ÷ï÷÷÷ï÷ÿ÷ï÷ÿ÷ï÷ÿÿï÷ÿ÷÷÷ÿÿ÷÷ÿÿ÷ïÿwÿïÿÿÿï÷wÿï÷ÿwï÷wwï÷ÿwï÷ww÷÷wo÷÷wo÷÷wo÷ïwo÷÷woÿïwoÿïwoÿïwoÿ÷ÿoÿïÿowïÿowïÿowïÿowï÷owï÷owï÷ow÷÷ÿw÷÷oo÷÷wo÷÷ooÿ÷owÿ÷ooÿ÷woÿ÷woÿ÷woÿïwow÷wowïÿow÷ÿowïÿowÿÿowÿÿwwÿÿwwÿÿwÿÿÿwwwÿwww÷ÿowÿÿww÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿw÷÷ÿw÷÷ÿw÷ï÷ÿ÷ï÷ÿ÷ï÷ÿ÷ï÷ÿ÷ï÷ÿ÷÷÷ÿ÷ï÷÷÷ïï÷÷ïï÷ÿ÷ï÷ÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿw÷÷ÿÿÿ÷÷wÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿÿ÷ÿw÷÷ÿwÿ÷ÿwÿ÷ÿwÿ÷ÿoÿ÷ÿow÷ÿoÿÿÿow÷ÿowÿÿooÿÿooÿÿooÿÿwoÿ÷wow÷wkw÷ÿkw÷ÿow÷ÿowï÷owï÷owï÷wwïïwoïïwo÷ëwo÷ïÿoÿïÿo÷ï÷oÿï÷o÷ï÷oÿïïw÷ïïwwïïwÿïïwwïïÿÿïëÿwïïÿwïë÷w÷ë÷w÷ë÷w÷ëïwÿëïwÿïïwÿïïwwïïwwïïwwï÷woï÷woï÷wo÷÷wo÷÷wo÷ïÿkÿïÿoÿ÷ÿoÿ÷ÿoÿ÷ÿow÷wow÷wow÷wow÷ÿow÷ÿow÷ÿww÷ÿow÷ÿowÿÿwwÿÿwwÿÿooÿÿwwÿÿwwÿ÷wwÿ÷ÿwÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿ÷ÿÿÿ÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷÷ÿ÷÷÷ÿ÷÷÷ÿÿ÷÷ÿÿ÷÷ÿ÷÷÷ÿÿ÷÷ÿ÷÷÷ÿÿ÷÷ÿÿ÷÷ÿÿ÷÷ÿÿÿ÷ÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwÿÿwwÿÿwwÿÿwwÿÿÿwÿÿÿwÿÿÿwwÿÿw÷ÿÿwwÿÿÿwÿÿÿwÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷÷ÿÿÿ÷ÿÿÿÿ÷ÿÿÿ÷ÿ÷ÿ÷ÿÿÿ÷ÿ÷ÿ÷ÿÿÿ÷÷ÿÿ÷÷wÿ÷÷wÿ÷÷wÿÿ÷wwÿ÷wwÿ÷wwÿ÷www÷ÿow÷wow÷ÿowÿÿowÿÿowÿÿowÿÿowÿ÷wwÿ÷wwÿ÷wwÿ÷wwÿ÷wvtwm-5.4.7/contrib/vtwmrc/sounds/ddloo.au0100664000015300001300000000354410237645271017255 0ustar callumfid.snd ÿÿÿÿ@µµ555555µµµµµµ555555µµµµµµ555555µµµµµµ555555Mµµµµµµ555555µµµµµµ555555µµµµµµ555666¶¶¶¶¶¶Y66666¶¶¶¶¶¶666666@¶¶¶¶¶¶666666¶¶¶¶¶¶666677¶¶¶¶¶¶888888¸¸¸¸¸¸9999:::ººººº;;;;;;»»»¼¼¼¼<<<<==½½½½½½>>>>>>¾¾¾¿¿¿@@@@@AÁÁÁÁÁÁADDDDDëÄÄÅÅÅÅFFFFHHÈÈÈÈÈÏHJJJJJÊÊÊÌÌÌMMMMMOÏÏÏÏÏÏOOOOOOÏÏÏÏÑÑSSSSSSÿÑÑÑÑÑÑSWWWWW×××ÛÛÛ[[[[[[ÛÛÛÛÛÛ[[ccccßßßßßßccccccççççççkkkkkkÿÿÿÿÿÿÿÿÿµµ555555555µµµµµµµµ555555555µµµµµµµµ555555555µµµµµµµµµ55555555µµµµµµµµµ555555555µµµµµµµµ555555555µµµµµµµµµ55556666¶¶¶¶¶¶¶¶¶66666666¶¶¶¶¶¶¶¶¶666666666¶¶¶¶¶¶¶¶666666666¶¶¶¶¶¶¶¶¶66666777¶¶¶¶¶¶¶¶¶888888888¸¸¸¸¸¸¸¸999999:::ºººººººº:;;;;;;;;»»»¼¼¼¼¼¼<<<<<<==½½½½½½½½½=>>>>>>>>¾¾¾¿¿¿¿¿@@@@@@@AAÁÁÁÁÁÁÁÁÁDDDDDDDDÄÄÄÄÅÅÅÅÅFFFFFFFHÈÈÈÈÈÈÈÈÈHJJJJJJJJÊÊÊÊÌÌÌÌMMMMMMMMOÏÏÏÏÏÏÏÏOOOOOOOOOÏÏÏÏÏÑÑÑÑSSSSSSSSSÑÑÑÑÑÑÑÑSSWWWWWWW×××××ÛÛÛ[[[[[[[[[ÛÛÛÛÛÛÛÛÛ[[ccccccßßßßßßßßßccccccccçççççççççkkkkkkkkkµ555555µµµµµµ555555µµµµµµE555555µµµµµµ555555µµµµµµ555555µµµµµµ555555µµµµµµ555666¶¶¶¶¶¶Y666666¶¶¶¶¶¶666666¶¶¶¶¶¶666666¶¶¶¶¶¶666677¶¶¶¶¶¶888888¸¸¸¸¸¸9999:::ºººººº;;;;;;»»¼¼¼¼<<<<==½½½½½½=>>>>>¾¾¾¿¿¿A@@@@AAÁÁÁÁÁADDDDDëÄÄÅÅÅÅFFFFFHÈÈÈÈÈÈHJJJJJÊÊÊÌÌÌMMMMMMÏÏÏÏÏÏYOOOOOUÏÏÏÑÑÑSSSSSÿÑÑÑÑÑÑSWWWWW×××ÛÛÛ[[[[[[ÛÛÛÛÛÛ[[ccccßßßßßßwccccccççççççkkkkkkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿç÷÷wwµµ555555555555¹µµµµµµµµµµµ555555555555εµµµµµµµµµµG55555555555Kµ¯»»»»»»¯¯¯¯;;//////;;;o¯¯»»»»»»¯¯¯Ä;;//////3;;;¯¯¯»»»»»»¯¯¯;;;//////;;;¯¯¯»»»»»»¯¯¯;;;///000<<<°°°¼¼¼¼¼¼¹°°L<<<000000<<·°°°¼¼¼¼»»°°ï<<<000000;;ð°°»»»»»»±±L;;;111111::c±±±±ºººººº²²::::222333;ë²³³³ºººººº³¶;;;;4555558;µµµµµ»»»»»¶¶<<<<;777888<¸¸¸¸¸¼¼¼¼¼»¸F<<<<999999<¹¹¹¹¹½½½½½½¼H>>>>>;;;<<<Ƽ¼¼¼¼¾¾¾¾¾¾Ã?????==>>>>Õ¾¾¾¾¾ÀÀÀÀÀÀKAAAAA@@@@AAIÁÁÁÁÁÁÁÁººÍÍ:<<<<<>>ÙÙÙÙÙ¾¾¾¾¾¾¾YY????????]]¿¿¿¿¿¿ÀãããããGAAAgggggggoJïïïïïïïïÃÃÃïoooooCCCCCCgïÃÃÃÃÃÄÄÄÄ÷oEEEEEEÿÿÿÿÿãÄÄÄ÷÷÷÷÷÷÷÷JÿÿïïïïïïGGGJoooooÇÇÉÉÉÉÉççIIIIIJJJççÉÉÉÉÉÉÉkkkkgJJJKßßßßßßßßgggggggggÍÍÍãããããNOOOOOOccÑÑÑÑÑÑÑÑÑcWSSSSUUãããããÛÛÛÛ[[[[[[[[ÛÛvtwm-5.4.7/contrib/vtwmrc/sounds/ddl.au0100664000015300001300000002760210237645271016720 0ustar callumfid.snd /bV"ddl.wav'¥I  ¿Ä&ûwô/ïªïò2÷:üÿ7‡M{…:eTQmý×èÕÄÍŽÓ\æ˜Óe-G.r\xê~ØõØI鸊&Þ;j!ûéÚ‘Ç–È’Ü+ú†#*)šù~ÛÉÉ3ÉÜVý â‹&ºçgÒÜ˧Ð{Üsé¤ó¾ù¼ýîJ!}4ÊCDÈ4ÚTæc¹˜=ŽUŸæÉºu8¨apìe™D(5ë[Ë$¼:¾[ÌzßXð€üxw_šø#R,»/&ˆ|ö³ÚlÆ*À«ÌWæ÷" 1z/¿BÒêAÚãÛCë*¸Ž/ 0 xæ`ÎÃmÉÜMöÜÏ#–+é*_"pÙ QMûî›ÞQͶÂÃÒáñgþ@[×c”S°/þ»Î׫ˆ3¦/Âqé&µ-;ç< 1" óâ0ûQôíåæÝõØÙfâüõ' ~# 24ª)Cßø,á_Õ|×òçUýÚ] 8ä’ýçØÖÃâ¿øèa'n1ù/t!i ‘öþåü܈ÚÊÞ±å^ì“ó¨û|‘»!ç/Ð7º5%i ãç¦ÆÃ°ª†¸¾Ø)¯GàT²N 6ú‚õ@ÚØËýÉ—ÑDÞÅíÀû,êjŸþ È"+„:ðVßÕŸÖá)ô7 ´=#’ `~ïä±äúï·!8Å"h 2ôâã Ø¤Øàåð9u  2Çf¿ùÌëóÝæÒ®ÍõÒÊâRúؼ2jCÿGb:Ø ÀÿÝÏĽ¹l½¿ÏŸéÛÏP,%0Í,Y!‡¢|øÞî“æàâà‚ãêbögÛö"ªSq·ôpè+ãcçQò~+–j-©òuçìäpé'ô¹ß{Ä ]Ñh‘ùíjåàðáåjí“ù Ûe"Q*Ö,a%^øqèçÔoÇðƹіæq¾¶.«8w6z)ÌÍÿ&êŒÛ¿ÔÓÖÞ0ëùá^u¥ <š óûé÷ä—åë[õú\ rpªîý-óÏî€î²ôBý‹âg»¨ `aøíÛç1å}é.ñ¤ýV &Áó! -{0ø„éIÝ|רÙNâñÂF{$½,&+/!ÿeÿqìÉÝðÕ«ÕOÜÓëüöúl%ˆ&QH¯özë&äbâÑæ2í›÷©½ úÿêûÖð“éç‰ì­÷U¤Ì5Úõ¹ê ä£ç ð¹þŠ ‚ÃÃqûNó¿ï¢î…ïKðìóöZû¸ØT5!L#-| #÷àáÔÑ.Ë9Ò’æ±o.æ5Õ.ÀLPíÞÞîÚàfì¹úŠK … u‰ÿA° m3 å:÷©éEßbÞŠèŽûj›#à+©%™ñùfáBÒªÒµá–úlö(l.}%ˆødãÖÙæÜðê–üí è« ëø¸øº .þö iù$äÔXÑݤ÷©¥3@@Ó:ù"«ÿ0۷Ó¾VÍ1êœ b'U3/-_°ë â"æIô¡È¢°o÷çöázèvû°)=0ð&ÿ cì<ÏNÁ¦Èòãx‹+‘@s?÷*U"â‹ÈèÂxÐí …&l/Ä'·éúcçÒáÛé—úo 1—² óoâ–Ü•åpû3j,Ú5W+b,ïЪÀÆÅ\ÝRÆ#í;>·.5Ôî_Õ&Ì ÔÆêª­ á³ £ø„ìyë´öUe£@8íôÚ|ÓÛò2{)5¤0ËúT܉ÊÛË{ÞüÔ/©3š%Ï ¸îæÙqÒ^Û,ïŽS® }… ¢úöïÖîÏ÷Ȇpü¬ç,Ö¸ÒãßøÞ„3˜@’:R"ÿ4ÜŒÄí¿U̪盵Ü+Ë(rK¡õŠî¹òzýk 3Q àÿdî“à‘Ûöä÷Yº$Ñ.ò*¨ýÓå–×_×öæµýÊb!÷!süqæؽ٧èùƒÇ,/Y#ê ñõáƒÙÝê^úäý K ECúÔù0ÿâ _q&*$±Íü6ßÇk½ ÅÌÞyØ"ý;B¢8{ ú:ë&ÜdÚ]âÅðûè±^úŒõôéüŒ éz'Þ*s Ÿ ò›ÛæÏÐ:Þ„ôæ ¼£ Í ú·ñ:ñ¢û² óáEñEۑΑÎôÝô“…#P-+y§H3ö ó²õf÷Ù÷8ñµèœßöÜøã¿õV¼)|=•D3: úÿ Ý|Äé»jÂeÖuðØ Ýp"Û!0?¬ æ Ë ‚ áû êÍÚÏ·Ï(Úµðx #h2Õ5r+Tgóñ_çýç³íþö7û›ûNõˆí{èé…ô&‚ø.6á2Ã"ëíä×àÌÌÖYæ÷¡{\ò€hº!n#§êÖÿæVÎ ½o¹þÆß•ë";FBÀ2 $ìÁàÛ Ûüß’ãƒçëCòý ]Á-664´'îÓ÷OÞ¶ÍìÈ›ÏÞñðí”m ÅÌþA}!ðqÞÏóÊÕÑáÓù|c&»2.3*+ áýLòRë æXâÎßÒÞßsæòñò.g:Ê<0õÿ:ã­Î£ÄwÆŽÓ.æLúô Ì:¶!Zü$Sû Íò½ãÕ×RзҠݴð00Ì)q/.+ Mäõ¹îê›éßêêêëï÷>šv ¬*ƒ,ä&`Ñ3ïÐß Õ5Ó´ÙÖåPó!ˆ Á.˪,ZE½öÕåÿ×±ÏqÏÌÙxêê¡&Ì/ž/Z&ôÝùªíåyáUàxâ9æLìËõàP,™$((€&¯ ÓüWë¶ß4Ù ÙêàÝëÕøM {.? — dyö­ê§à®Û Ûgâ;îþ"3#m%‹!»: â§ö0ì›åŸážàÝã•éÞózÿ˜ Ê"<&Y$M ÿˆð2ãÈÜPÚÃÞïç²óSÿç °\lu;ü“ðîæÿàaÞKáBèòô0' Í+½ ²ü: ‡I÷í å©á½áÔåûíÀø+Ð@ýnZB ψ÷kî]ç*âàòâëè”ñµý å÷"½)=)ß#Û{6ò•ßÍÑEÉèˈÖoé2Í3-ï; =Ó5s#4 Gï=×$Æ“À½ÆÅ×€ï© l"´3‚93$Â<úQç`ÚîÖóÛˆçöVëUø§ýó'í“í´ó„ýƒ I0î Ÿö3ç(Ü ×¿ÛÚè*ú±ò#¯1³6¾1@!¼ Âð†ØÆ¾ŠÃÓIìS ¥%Ä;XF6D15ÿÿákÉ„»ÑºÇÆnÜjøs*-8<ß©ó5´$&Ö!‹áÌ÷Òì5æNç íÄø€^`ÞÞøíiæåædìsøì»!&#0^mó‘àÅÓ Í‚ÑÁßnôB a#.4;¦8)¡öø6ÞgÊ|ÀWÁýÏ6å’Õà1œ=ö>´3Õàë¸ÖÈ¿Æ/Îxߪö* w!-m0p*ï _öKæ†Ý ÛfáfíCü tEVÙ…]ú?ðêpê”ðúÄäë M <ûûífáÒÜÝÌçö{ñÉ(=.D+Ck ¾ö»á¢Ñ­Ê/ÌÞÙxíÃôs/³9!7Ø,áÿBæÙÓIÈFÇÖÑíä{ûÒi&Ä2H3ø+Ê Ýñ°à4Õ®ÓÞÚ»è}ú »é!æ"b®óJéEå çJï8úÈ'j%œú:îÆç åéhów"|K!Ê!?k £ú’é«Ü€Õû×¾á¿òF-‘(Œ/ÿ.@#r†û忏Ö"ÍlÎVØÁ걩r'×11¥(U€íyÜxÒ´ÑåÙøéü!-…'<'× ‰‚òEå¬ß-ßÛçCó†Ðý6˜—÷víçLçrízø¬Œâ¬ ÚÀó¥çœàaß½æòDðäÈ%Ê%Fºüðë>Ý=ÕÕ֤ߧï3D"$ , +€"{ÂÿnìGÝÔ¼ÔåÝlì‹ÿ3© P(U(B I.åïùâÇÛßÜwä7ñRìÁÃÆíÐ ZûRîÁæTãÉçŠð¬ý ñuG! \üsð$ç3ã§æ\îÙû] <xNxÙòåôÞuÝ»äðJÿúõý$Z$zCÿ•ï áÈÚÚ¯âKïÏ% $•×oÿ!ï:âìܧݚåyòŽäñ! > Fû¨î>äÒáLäOí ùʆ%ÚVœÌô¬êä)äPêuõIt.» +x‰ùåífä´á­åî úñ ROHɶ#ôÛèÍá{àkå×ð£þ— Ðgö&ñ £ÿ™ñ´æÓá2áõèëô›‘éÜaÉ»úïîCåZâåí±ú&ÀCav2÷CìSå¢ä†é'òyþt „"Eá 9ýpòHê7æþéXðÊûºÆV [Ü fÿêòþèhâ~â£èÿôq¶õ="*!`Þ ûý-í†á!Ú{Úûâœïù„…&9&¿ cIòÏå Ü‹ÚÅßäê¿ù#lù‚pü-ñ¢ê¸èëñGù²F .  t •Œÿàûø’øßûéÉ T  \]ýâõuî éŠé]î÷JlF;!æ"›·Èï¡àtÖ<Ó(Ø"ä“öv ²ª+à2¢0”%ñ€ÿUê'صÎÌÓá õ" ß*F0'-Ä#ÙndððâùÚ ØçÝ•çZô ~ 4‡D`#Oû÷øaöwõÂõ§õõfõõ6öUùýÇJ íwb'š= sû–ìÂߎÖÓÏØhä,õ–  .'7N7ˆ.`ís×)Ç$ÀDÃàчç ÕŸ0=¢A9Þ)awùá:ÎîÄñĘ͒Þó *”1)/è'¦> 3ú,ìâåÞ5ÞpâÝêKóRü¢, H›¶šÀ ¨üòëê9ã<ßGßxämî ûl Ô&g-¶.F'qÍ)òTÞ§ÏǞȧÒÇäžûj{(Û7ç>:,œÙÿ9æÌÒœÅöÂÚɦÙî]îá,°5Ò6-åå Ûø æ˜ÚÔ0Õ?Üèxö Eâ#„ x$ûzõðBíë¡ëºíið¶õ¥ü¬ Ά²%åiÏèö>èÑÝá×y× Ý+éJùÎ :™*ò1Ú0ã'æýî¿ÛèΪÉOÌÒØ±êÿ±4'û35Ú/á"U˜úÞçØÂгÐi×—ä½õsÞ6!8&z%œ@ÕNû¿ðúéYåŠå•èñî±õÁýå ˜ æ¶öq z Zü£õ}î½écæsæÂêÃòYüǵbÛ#[#£=£>õ<æ,Ú Ô°Õ˜Ýqë*ü£ W*É/d,R"-ÿiìÏÝrÓÓÑtÖšâLòxZ!Ñ(Í)"ð¤ Bú@íãwÞàßäöíâø§z ËpÍÚ «üÁ÷Ãó÷ñyðHð]ñ¹ôZø;ý< ;‹ú› ƒŽø\îoæmáÔá°æ_ïtû¸ RÑ$È#ò<’Ãó2åmÛÉ×íÚãFðª0%%A'A"ì ~ürîjã¢Ý¹Ýmâëÿø ¨ÎÜËPÙkiýRõtïËìÞì»ïóø1ý“ç 0 \ f R ! Ø|1ý?øóAïŠížî ñö¥þ"–ÄP xUø$í°åÁáÃâˆèñ·ýÜ —Óª Å–r ‚ÿ™òÓèHá°àãë‰ö‘Æ,ñÆûb§üuóiìÔééÙí\óLú‹çS ýx´ ô ·™2þút÷¬õÓôðõö÷üúÑþduª  cÏQ ¿72ú{ô îùì/ìRï“õžý¢i°¶‘ ‰÷¤îñèçæŒèIíÛöVQ ,Md§÷ÛdþõDî‚ê½êrí‚óBú¨r fs …þäùìö?ô4óáõ÷~ú¡þ V7{¾®Ò5æ ýÚú¢÷Æõ±ôÉõV÷oúòÿ}x ' Ä¥_ ÕNkû õ6ðâîÕïxòÅøCÿ% N‹%Ú Ý×ÿÉø×óïŒî¨ð…ôÇú¬2Q Á   þ«ùÑö/ô>ô'õÄø´üoUÙŠ#áP*¹ÿPý#ûcú/ù˜ù¦úWûžýgÿŒÚû<£hêÿÙüšùª÷„ö‹öõøÇûÉÿŒ ¤ èyOüøvöõ,öøoü!)w ‡  Iÿ™üùa÷Ä÷wøvú„ýC<þ%mµ ˜¡tþfü²û‰ûû,ûäýþ…‡Å¦ „“Oÿäþvý4üJûØûõü ýÅÿ>ÖX‰8J¼¢%ÿ‚ýõüºüûèüiýpþÏM³Êl‡H+ÿüþÐýöýJü;ûÝüßÿAž2ü Æÿùeóèð–ð‚ôúÌu 8 #v ùÃ÷ØìÄåâàæóðäþâB#T$3>€ýšë-Ü7Ô%Õß<ðù’Ö)v/k+|~ ,õ‘â*ÕÐÚÖ„äÔøÅ- ›,4.’':¸Mî>ÜéÒìÒYÛKëàœ0%R-¥,q!úsû‹ç˜ØÃÒ#ÕàùóP?o(à-Å)èçôáÊÕÐÒ¨Øõçcúêu Â+3,$¼5Kí)ÜúÔÔnÝÒîRu%,A*?nùÜæïÙEÓ´×bã…õ“ Áß((, &¿bÂòÆá’Ö½ÔˆÛdéÞüî• Â**œ"BÉÿqì>Ý2ÕoÖàRðª*Å$˜*Ä(î ÖøSæpÙéÕZÙ±æ÷¶ ('N*?$`ï¿ñœá×ÊÖxÝÏìDþÍ‹ ›(Ø(Ðuý¸ë|ÝÖØØ·âÆòè¸Q$)2%Æ| ´öòæÚ°×Üèlùº KG&U(b"Ýðá˜ØòØsà4î’‡X O'‚&vg<ü%êäÞØXÚæå.õ ´#Q'Š#„°õ¸åëÛ–ØßÞPêÄû U@%@&w«GïÅáÔÚ5Ú{â’ðÈýÝ&$X ú¸êsÞ´ÙíÝç‡÷ `ñ"|%Ñ!DÊÍô§åäܛڸà›íý^6$$Xÿ†ïâ5Û’ÜŠäåòâxJ$"4º ùqê+ßyÛ•ßKéÏøí y!ˆ$Ž ó½æݼܟâáï2þûïÀ"Â"þîâ¹ÝÞžç+ôàÛÍ–"ù z:øQê à\ÝNá|ìú° kô w"1ËhlòûæGÞ÷ÞåñDr€K!_ |Ó üÀî0ã^ÞŒàµéböÂúÂ!OêKx÷Zêá]ßãªî%üQ 5¾L P˜Yðòaæ®àJà‡çQó=Æê´çp¤ %û•íøä$à&âÎë‰øƒÐ—È1Øöˆê7âzàèåÓð/ýÎ Øden eÿšñîç8á´âƒéxõõ,ü[e…dúíååáÐäåížú$ØäÁÒª-XõÞê†ã°âÅçòò ÿ) Sæ­uQ Šþhñ¡çãã2ä„ëöÙÿI&ÀYwÃù²íøæãˆæøïû¥Š¡™”?ûõZêöäýä©ê ó÷] ¨H<@ ÍýYñ|è­äÁæ…í˜ø{ã@3P}Bøûî0ç#åLéñ†ý ;Y)‡ lÂôýëˆæ`æ“ìõ²n ׊º‹?,üqñ{锿`è„ïŒùü¡#]L˜ãøiî‹èXçë óWþ? x´K… ²ÿ¯ôÆì<ç×èî ÷R[ à¯'•P«û¯ñ ê˜è êñlû\7ÂúšO Ë¥÷þïé£èìíõÿW · —i‘ þÀô´í é_êkïõøÒ# Ŷ†£uJûñçëµéÃìtó6üš©N»Ò\ ‹÷¸ï¦ëêÄîòöªH ÐE‡­•ýôôÇíúêõìUñÌú3Ä …¤Ù¶ ¯ úœòRìêë‚î`ôçý¶ô¹eu }”÷˜ðdìvìŸðÑø( Åa¤ Ú3ýNôÿïì™î:óŽût@ #w"Ð íúJòÞî6íIðBöþ¯ü0›ÿÅ÷žñ?íúîzòŸù‰Á ”`óÆ óüÍõYð'îGðõ:ü“– Ÿ4dõ jòúóŠï—ïò÷ûÿ… 1‚] ÑŸÿ÷Çò5ï‹ðQôZúËE @FMì sÒüqõ×ñaïýñïöÎýÇ ûÝ¡ %ïúôUñ ðßóÜù\3ø B÷‹ ]þøóHñ)ò%öûì¦Ë ž áÓü<ötò±ñ¸ó»øHþjÔ 7 r Û cfú4õ>òŒò«õúž¿² 7 ` ¾ u;þ+øƒôtòÒóð÷üìà4 Ë è Uhøü+÷1ôóyõyù§ÿ » U ö  ±MÿÚúvöAôôt÷2ûÁ&H  ¾ öç9ýìùõµôõ´ù ýÉõ} n . š >ü?ø õŠõ:÷(úêÿ³€W k Q*ÿoúÙ÷`õ¸ö7ø¿üÄi½×  6pZýÑùÅ÷ ö7÷lúgþ…æ§þ rîÆ©üvù÷öúøÅü!?Ô‘†&ÿ)ûaø—÷^÷ôú5ý¥†…cýÝú–øw÷ïùûªÿ³µ~µR¢9üÐúø¡ø·úPýgŸ 3×Bÿüùãù ù§û’þe€E ®ØÐþ û„ùóù¨ú°üÐÿ‘]¦ðúÈšÿîýMûDú?únûÅýøŒüÅŠ&²€ÿ üÏûEú½ûNü×ÿT[§÷?¨Œþ_üû}ûaü:ý×ÿàä}VER´ÿÇýìü‰ûåüý#þ¼Œ9gÚ€náÿ2ýµü¹üqüçýÿÿzU Aµ9þÔý´ýýý¯þÀ H<²–óîÿÃþ­ýåý’ýÃþiÿ^hVõ(çDfÿ~þ¸þ>þ%þpÿ ÿГ3‹Ž?³ ÿlþòþ·þÃÿÿ‰äñ¬IÿäÿŒÿSÿDÿ]ÿ•ÿÝ Ust]7ÿíÿ×ÿÒÿÙÿèÿøvtwm-5.4.7/contrib/vtwmrc/sounds/touch1.au0100664000015300001300000000363110237645271017354 0ustar callumfid.snd#v@touch1.wavúÕûÄÞ¿åWJI?FpKGPHMIX×ùô>=¶D(¯¯ÌªC"7¾À7Ŷ*$-GÀ§³+O¿*b¤>",.".¥¢›Ç­$/0(¿®½«¬³­¢¥È¿¾=.+/4:]@OÝ?౼ʼÁ>+6M6=S7==4R½³»ÀºØHo]<@JDTIGÓÜÙÅÉû[®¬I>NJÛÖüÇç1/<=0)/,'7à°«·½º´¼½²¾ôC;nÎOKßïI@BM>.8P6:ÚÖ¬¡³Ë1Ú¦•¤/ ,£’œ%C§œ‘‘®- +ª“¿,*¯ŽŒœG ʦ‘’´' Ì£Ž¤7 /¶ž­&&À¢“‘«/ 󥑌›]"ݤ”Œ™Ú$ \§˜Ž”»+ *°š±0*³‘ŽžL  Bª˜™Ê*/°’“©= <­œ‘–­9,¼£˜•¥L$8°“—®<!×§˜“žÏ(I®ž–™«>B®š˜ªR'Pªš“š°8>º¥ž©å, 8¸Ÿ©ã--Ö¨›­M( (F¶¢ž¬[)'G³Ÿ¡»8"5»Ÿš¡¿/%=³››®A .Éž“›·21»š˜®E#$=¬˜µ= !4Éž–Ÿ¿+":µ˜—¥ú"!>¢“š¯2/³––¥H)Й—¨M-ü”œµ)+°––¨:.¥’—³+ c›’œÿ"Æ–’¤89 ‘˜»(.¥‘–¯-3¨““ŸOcš’œá @Ÿ‘”£C*ª“šØ$,¯—“™µ-*¤–— W(,«–•š´.$)Ìš˜Ÿ®3 @¡–›§N&=¡–›¡Ê+>¡—§e%6¥˜›¥k&mž˜›¦F$"ØŸ›¯4!&»šž½.6¦™™žÒ)!_Ÿš­9"þŸ›ž±:#3®œ›¡È-O¤››©J'*®œ›¦N'&²›–œÊ*ØžÓ*!¿œ˜žÌ)ež–˜¬4?¢˜™©5&¬š˜¡L%$Åœ••¨8(²œ—š¿)*­› p';¥›—›Á.F£žž¨?$"~Ÿšš k(#q¤¦K%"d¨¢¢®<%,¸ŸžŸ¯;%<¬ŸŸ£º2!?®¤¢ªù**Ϋ¦§´L,$'E·¬¬²Ô6)'/ݳ¯³½N/*+G¹¯°¶Î9)%-Í­¬­·R,%*髨­¶Û/%%?­©°¼ù2%#.½ª¬²Ç?)"(Ý«­¶ÉM-#%L­±ÂoK8++H«¨·ÏL¼¥±û<.36?Χ¡¸Y/*39Oµ §Ó6%$+7娞¯R- %1M±žŸ·=#%1a«ž¨ß.(:¼ Ÿ°M& ,Y§›Ÿ²A#&8¹Ÿž«ï)*KªœŸ¯A !.Ì£ ¬×) +]¦¢¯@ %6·Ÿ¢«Þ&*㤟¢­;! '<­ ¥ªg%!-Ä£¥§¹, !([©§¨­>$#'<±©­«ý(%&-Ï­µ®¼/+-2Û­¯¯®C.4.<º·Á²Y/E=;źâ»Ð.Mï;Ê·]ØÍ.>¿K{½<<`+3¶ÏÛ±a<Ô3/´²Î²È7c<'Ï©¶°´<:; 1¯²¸º<04(µª©¨ÎBB"#ª©«Û;:!C°¨¤¹OW(9³¦Ÿ²KY)-Á©Ÿ±Hb+(å­ž«Qm/"I¶ŸªUÖ6#B¾ž¦^ÆF%CÅŸ§IÏH*WÅŸ¥MÓH&Gí¢¥GëL&\Ý£¢OÔï%UYª¦=`j(ÛÉ¢¤Gãl(Úã¤Kyþ"gȧ¨=LH"[¿ ¥Aï_+˰¥E×I(Wàª9S7'J ­?ì7,U»Ÿ­OÇ87ç´¢¸H×//Q¹¦ÌKË- <ß°¥åKÀ/#BÊ­©PGÊ,#<Э¯::Û.&?Ũ«;?Ê1+J¿¥«49ê,*C¼¢±+3S,-R¯ž°+/<,6ϧ¹(,3,7]«ž¹/.)%2ˤŸÈ,&(.B¹Ÿ¡×0,/“Œ’—,)[: ¼¶É ƒ(ç™4. 8Ÿš˜(†çªƒ4¬/çŽ%“º ¡®[Sª+Ó"²,MÅÅÅ¢(º®60[#8—ºž­¡[­–²Žˆº ¬´¶g<›‘$ .‹¡S‘‰•M²0>¡¸¤—+Å‘´¡§ŽŽMޝ)> žŸŒÓ¯„š*®ž¡E°>‹%¶™Œ(Å (ž:¬ 4¥(Ó>›çAͬ'–¼/¾+!˜A%!('¤¡¾[0/0¼S,!®­0 ›><¡ÿÍ(¾›¤É›6§Š¢!AŸš[š¾¨žMI¾›¾ÿÓ­›­º´¯™§,¯2‰¸#¾Ó’¶E§A¯Û[[²ÿ¯”šÿ§Ÿ£ž«I¯(™Å¶¾§‘œM—´®¸[Û>¢Á¯M´É¡°Å®E°¯:žÿ¬/¸°/[¡º( S­¼I..¼#¦¨%[!°6%$48ÿº/%*:"4ÍgI':ÿ6Eÿ0.[,E4-:¾ª–I<.²0%²:ÿ«0/¬´¾¾A¼Á¸-)¼¸Å¯ç–´Ûœ°Å¬¤0"硯¼•¾´˜“º:¨¥œ<«–Å£­Í–™Ó)çÅ®0%0>žª+8ž›/<¬¸Áÿ¥¥0ÿ¶´Ó²¶¶ºÿ0g>Í­SÍS¸¶08%¤°*)ÿÍ8*­ÉÅ,)SE//¶¶Û.4¾«2:žE+ÿ°+ÉÓ/SE+ÿI0´®-"°ÉM‘(g¤M/0ÛºçÛͺ¼ªA°¬Å­ÍÁ¼E«[¼Éçÿª¬%¾°Í¾6%gŽ)•£°<šI¼0:™2ÁÿÍ­‘ç&-¡º°ÁMÅ#ŘM)¯0¶º>/š˜6®ç8ŸÁ)ÁI&¨§¥ŸIÓSÿ,S"ÿ²2'A2+M-ÛMg/2MMÅ4-²SÍ%>§çI§M,A¸6S0©M›6¾Íÿ,$['-0-¢š—"¼ÍS2"<M›+!ÿ©#¾&¦)/²Eÿg窥6g¨&>6<¡¼I°E¥>ɦŸÁAI•šª²I™—6,Å•–-4Œ“0"²¾–º+•žM©¸¬™°˜4)¾˜¼0™´¾¤«$<Ó²[)-°ÿ.A¯M4('ªg>AçÍ0/ç8¯,MÅÿ¶çMªAÉ[ÿ©ÓÉ:'ÓSEÿ<¢­4°S®[0¸ÍÁMÛ¾<Ÿ¶Ó²Åªÿ¶Å0Á:*´¨­,#&4›Áç¸26<Û§I.*+¼Å¾(/¾'6A>º<.>,Éç'/ÿÿg,'(Sÿ2"+¼:/E¸E0'6EÍÛÿÿEÛÛMÉM¾çgÓÿÉA>Í[gº>ª¸´g<ÿÁÅÛÛÁÁ¯Åɤ²ÍSŸ¶¨­Å¦´ÿÍخɰ¼°«°ÅÅç²²°Å²ÿ[²°ÁÍ[ç¾SÓ­¯¼ÁÍMŸÿÓg¸¸gÿÛçÁ[SAÿºM/A[AIÓÿç¾8SI6ÿ<>[:I:<24¾S<04>IIÿ2E[<><çÿçM0Mç[g[MMÓ°çÓÅ8ÿÿgÛÉÁÛ[g[Ûɺ´Áÿ¼Å¼[ÿÍÉÿ>º¸ÁÅɶ¬´Éÿ«¾®©°S42çÅ«›²º¾¼¼Û¸Íÿ¸çç¾çÁÅçÓżÉŮӪg:¸ÉSÉÿÿ£Í4¦¯´Û6EÅ*SͼI*4Iÿg>ÿAEgÛÿÿgÿ[gSÿA>S[0I[MÿÅÉÛÿçI[ÿ8>EMS>MÿgSAçÿgSÿSÿž:ÛÿggÉç¾ÿ¸ÍgSÿ[S[ÍSÿ¶ºÓÿE>Iç[I¶¾ÉÓÍ[¼ÓS6çÍÛ[ÍÉ´ÓçEIÍÉÓÿgÓÓ¾gSÿÍ´¾ÛÿÓÿÿӾɶÛÍÓÓɸÍçgÓÿÓżÛçº2<ÓgAÛ¾ÛIÅÅ>2ÿ´ªÿÉÛS:SgS0ÿ4Û¾ÛI<ÍÁ22ISÿçÿÿ[ÍÿÓÿgÿM[ÍÍÅAE>EÿÿS[¾É[ÿÛgççSgÛEÿÿÿÿÛÿgSgÛÿSÿAÿÛgEgÅÛgÓç[ÿÿçÍÛgÿÿ[SgçÉÛÛÛÛÿÍçÍÿSAMg[[ÛÿÿçÛÿgÉÓÿÉÅÍSIÛÿ¾ºÛÿ[çÓçÓ[ÿçÍÍÓÅÍgggçMÛÛçÛÅ[ÍSçMÿºÁÓ¾ÿçÿÛÿ[ÛÿçÿÿÛ[ÓçÛÅ[ÓÛÓçÿÅÿE[ÍÓçÿS[ÿç[ÍÿÛÅSÿ[gÅçÛçMgÿÿÛÿÓÛÿÛ[[ÿÓçMÿ[MggçÅÍçMMÿÿÿSSÿÿÿÛMÿÿgÛÛÿSÿÛÛÍS[ÿÿÛÿçÿÿÿÿçgçÓ[MÿÓÁç[çÿÛgçÓÉÉÿÛÿÿÛMgçÿÿ[ÿÿÿçÓÿggÛÿÿÍg[ÿAÿÿÿÿçÿÿÓÿÿÛ[ÿÿÛÉÿÍÍÅÍÿÿÿÿççÿÛÍÅÿÿÿÿÍÿÿÿÉÁÿÛçÿÿÿÿÍÍÍÅçÅ[ÿSÿ²/ÉçSÍ[gºÿçÍS°ÿÓç8¼gççÿÅ[ÛÓÿÅ[çÛÿÉ[Ûçÿ¶[ÿÿÿÉAÛ¾[Í>çÅç´SgÉMÅEg¾[ÉAÛ¶SÛM[ÅMÉç[ÁAÿçͯIÿES¼SÓÁÿ¾8gçS¼>ÿ¼[¾AEÉSºMg°Û¸II¼[ÅAAÁMÅSEº:ÿI[¯gç[S®gçÿI¼[ÿÓÿ²gggg¸<[çAÅAIÉÛÁEÿ¾Í¶Sÿºç¾SMÉSg8:ÁE[MIºgÛÓç¶ÿSÿg¼[ÿÛgÍMIÛSÍ[gçÿÓÿSÓÿÉgMÛÅÁgIÓMÿMÿÅçÍÿ[ÅÿÿEgÓÿçÿÿÍÿgSgÅ[ÿżMÛ2)§Ÿ/ÿggºÿ<ɶ4çS´:>ÿÁ0[ºÉ0¯ÿM:¯g¾ÓS<¸AgSºSÓÉÍAçSÓ6çÓÅMÁÍ<[6$¯°0Ó¦Û6ºI:ÛçSÿ´Û!¶°<ÿ¾Ó:¾´/IÿºÛÓ<Û[Ó>ÛAÿÓÿÍÓMÛÿSº[ÿç¶gÁÓÉMÍÿÍÿÍgÓÿg[Á[ÓÓçSÿÛSSÓçgÿÍSçEÓÛÿgÓÿçISÅÍÓçÍMÓÿÓÿççÓÿÓÍÿ[gÍIÿÓÛÿçÿMAÛÍgÅÉÿÍÿgÿggçͼÍMEÛÛ/®²8ÿ¼M<Ó[4ÁÅÿÿÉÿSEçAÁçÁIççÿ>ÿÿÿÿ¾ÉçMÿ[ÿI´[ÓÿÅÿÿÛÛIÅÛÛÿÿgÁEÿçAÿ¾ÍEçÿMÿÛçSÓÍS[¶Igÿ¼IMS[ÿ[ÉÛAÛçÿÓçÛgSÛÿçÿÛ¾çSç[ÿSÍÿÿÿÛÿEÿÓÿÿÿÍÍ[ÿçÿÿgÛgÓçÿÿÿÿçMÿÿÿÿÉgSÓÉMgÿÁÿÿÛÍgÿ[ÛÛÿ[[[ÿÿÓgÿÉçççÓçÿçÿÓÛçÛgÿÿÿÿÿ[çMg[ÿgçS[ÿ¼çÅçÓ[MIÛçÍçSgÛSÿÛÛIÿÿÿSÿgÿEÓÍMIÅÓÿÿÿÿÿÓ[ÿÿÿMÛÍÿÿgÿçÿçÿgÛÉÿSçÛçS[çÛÿÿ缺Ó[ggÿS[Mÿ[ÿÿÓÓÓÿÛÿÍÛçÿÍÿçÿçIÿgÿSÓÿÿSÿÛÉÿÿÛºçÓÿÍÿÓÿ[g¼Íÿ[I>[ÛÍÅÉMÿÿçÿÍÿgÿÿMgÛÿçÛÍÅÍÍÉÛgSÿ[ÿÁ¾É;çÿÿÿÿçÿ[<[ÿÿÉÿÿÿÍÓÉÁçSçÿÓÉÉÉÅÿMIçÿÿgçÿÿÓÍgÛSÿÿÓÅÓÓç[ÿÿÿgÓÁÉÛÿÿÓçÉÿgçÿÿÿçÛÿgI[ÛçÛÓççÿÛÛçÛÿg[ÿÿÿÛÛÉÛÿÿÿÿçÿÛçÿÿÿÛÿÿÁÿçÿçÿgÿÿÿÿçÍççÿÿÿçÛÿMÿÿgggÿÿÿÛçÉÿçÿÿÿÿÛÓÿÛÿÛÛÿçÛÿgÿÿÿçÿÿg[ÿÿÿçÿÓÿÿÿSÿÿÿÿÿÿÿÿÛÛçS[gÿçÿçÛÿÿÛÉÛÿÿÿÿÿÿÿ[ÿçÿÿÿÿÿÓÍÛçÓÿÿÿÓÿÿÿÿçÛÿÿSÿÿÿÿÿÿçÿÿÿÓÿÿçÿÛçgÿÿÿÿÛçÿÓÿSÿÿÿÿÿÿÿgÿÿÿÿÛÿÿÿçççÿÓgÉÓÍÿg[ÓÍÿÿÿgÅÿgÓÿççÿçgÍ[ÿÿçÿÿççÿÛÿÿÿÿÿÿÓÉÿçÿÿÛÛçÿÿÿÿÿÿÿÿçÿÿÿÿÿçÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿSÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÛçÿÿgÿÿçÿÿçÿÿÿgÿÿ[ÿÿÿÛÛÿÿÿÿÿÿÿÿÿgÿÿçÿÿÿgÿÿÿÿÿÿÿççÿÿÿÿgÿÿÿÓÛ[g[ÿgÿçÍÍÛÿggçÛÛÛÿÿÿgÿgÿÿÿÿÿÿÿÿçÿçÿÿÿÿÿÿÿÿÿÿçÛSggMÿÛÅçç[:ÛÉÛçÿ¼ºMAÿgÉgÛÍç[Ág>ÿÓÅ®«/ÓÛ<¾ÍÓ>çÍ<͸Egçç:ºçÿÿÛAÍçÿÿÓgÍÛ[ÿÿÛÛÓÛAççÿ[ÍÉÅ:¶gEg¾ÿS¾º>çÁEMºÿÿÍÿg¾E%—:>®M>´[0´ÓçÿÍÅSÿÁSÉ>ÍÓççÉ[Ó8ÍÛÛ<¼Ûç[Éÿç<¾ÓÛSÍgÓÍÛIçSÓÿ¸ÛÿEÿgÿÿÿSÓSçºÓE¼6çÍSÿÅSÅÛIçÛÿÓÅÿÿçÍÛÛÓMÿÛ¾SÓMg[ÓÿÛÿÛÿSÛçÉggSçÿÓÍÿÓÿÿEÛ[É[Sÿÿÿgç[[ÿÿ[ÅÿggÿÿgÍ[gSÅÿçÿÛ[ÍÿgÅÿçççÛççgÅgÓMÛÿÉ<ç[ÛMçÛÿçÿÿÿççgÓMÛçÛAÓ[ÍIÿgçSÓ[Ígçgÿÿÿÿçgçÿç>Åÿÿ[ÁÿÍSÿççÿÿçÿÓgÛÛÿÓÿÛAÿ[ÿEÅÿÍ[ÿÿÿÿÿÿçÿÿçÿÿÛÿÿÿÍÿÉEÿ[ç[ÿgçÿçÓÿÛÿÓÿÿÿÿçÓÉçÓIçgÓÿÿÿÿÿÿÿÿÛÿÛç¼ÿçgÿÿÓÛgÿçç[Ó[ÿÿÿÿçÉÿÛÿÍÿÍçÿÿÿSÿÿ[ÿgÿÿÿÿçççÛçÛÛÉÓ¾ÉÓçÛÿÿÛÛgÿÛÿÛÿçÿçÿÿçÿçSgSÿSÿM[ÿÿÿÿÿÛÿÿÉÓÓçÛÛçÉÿçÿÛgÿSÿÿÿÿÿÿgÿ[ÿÿÿgÿçÿçÿÉÛçÛÛÿÛÿÿÿgÿÿçS[I[gSggçÿÿgÿÿgçÿÿÿÿçççÿSÿÛÛÓçÉÍÛvtwm-5.4.7/contrib/vtwmrc/sounds/touch3.au0100664000015300001300000001722110237645271017356 0ustar callumfid.snd#nV"touch3.wavÿðþÖýÌûñûŽýüëüzû‚ú§ù€ý!þœúlû4àã n» ›tVš SÿÎó)äž×³ÑÒØÔãíòùŠÑ ,3€7j5õ/&CäÝ÷gäÇÒ4Â͹ƒ¶#¹kÅ×tí&/!93B²HBEË?X6¬*ȼóªßÓÍ“¾=³Á°$³ö¿IÐäJû'µ8ÞE)L„NšJr?p.ؼÚñ²ÚÕÅC´j«Ý«±>¾¾ÒéÜF.Ò>³JP OÈHŒ< *±Z©é”ÓoÀV²d«µ¬@´VÃbÖüî ox/Œ?iJO MÉE–8"&Ñ¡ÿ è™Ò±À²s¬®“¸ÇÉ ÜÚò™ ,Õ0y?HiLQJA÷3¿ Ñ öTà†Í¾¨¶+´±¹äĵÕç7ú# ¬Ã.y8]>t?q:1ì&µ÷ çñÙ¨Ï<ÉüÊBÏKØ3ã›ñþØ 7ä#&1&)#oK ‹oöÎïBê„çJåìæûêÚð?õ¤û'ÿÁõ'  ª £ æ %3;zÿòþ ý›üªû¾ú²ú%úþüý8þ‹œ›xûù97ÿ=þýwýhýbþþ«þæb耇šçl‚ÿûþvüÖû¼û,ûôý>þ•ÿæ*ÿÙÙNH.2— ëÿ4þYý]ý3þVþÜÿÿÙu”ÿ™ÿ†ÿƒÚ"-=ûm/*ÿˆþõþýVý‘ýÓý0ýýbþÿ32E™€˜A~KÿölŠ ÿ>þÊý™ý©þAþ´ÿnÿ.Ô—R*l š`´itþEüØûJùâù®úûLý;þÑÿÀQÔ•.5«SéK‹ÿáþ±þ¢ý¬üuüýxþ þþ5ÿÿ|ÿKþçþtþ¤ÿ<ÿÖÜM §aÌé‹£²ÿÌÿ¿ÿïÿ'ý÷þCÿ¥ÿÁþlý•ý‹þyÿʳ·ÿÂÿkÿ«;‰š˜ÿâÿÄÿ¾ÿ·ÿ¦ÿûÿþ+|ÿÒþµþø” ½íF§ÿEýÉü‹üñý‡ýyýKþþsþ^þ°ÿ ÿùÇüvšDÿ½Ä>þ#ýUþD”×3Øøþ€þ—þYüöþ„kþÔþUÿ…þbýkÿ™+ŒÁ—(Yü’ýÂÿýýãþÎüýûï–NÄcKmçDùèüÊþÛù”ùµü“ÿ Hç„ë¬òžQ Àÿœôïÿøïë£æÂûjuÍ,÷š€Ç™êít²ÚÖñü› çñ¸è¯÷Hö p úq -¬nÙÑmët òÛq Üêáïôô î·ø‰ô¤üùï€ä&ø9vׇ÷®ö„,ÿð>õ¾Þ£ùê!ço g,†þûÊõ,KŽúœö"”ö ¹ãkÔ9ãºþ«° òÒ7ÿøÝwâ]ˆ¬ùŽï¥õsñUìÆþŸ} ›-îžøÂ Á™íïcû³ú6ë7è$J#Ó!VúÝÿ[Nšûø…6õ}É&Í÷UŒ!/mhKä˜áò÷: R¦øé™ïãäûîð:ÿÕ©#Šä÷xøMŠÎôòôWòƒðËð`ý÷"}7qñdéžúÿýÇøÓ` û˜ÙÃÔzî?U!i‚é­ïúlÚ ä[›Cä¶áxóoý| +0Óžúóëàý “èkæòºø'ó÷ŽÂ%S7üØðÎðœõm– + Âè,μèÙþJúÝäAÿ ô$óÍù ô…ìåözø‹ê"â÷ûÛ#k2ÏöÂæò6ñ@ûvþ!‰ø èÛåAôt EtÊÐ Ýù:öö} j›ó>ãòãJöŠ ÁÑ`‹ôòlö¦þ©®Ñ÷+îIíbö24V­í ’VúüõôEýž º ¯økç áüïv #€ä‘çôÌðbòÏùqŸÖôcí¥ï/ûk ¼¼`ôüõòŽø¼h ¸ý_êá è(Kõ$@ —üãòóhùtöõMëÙéPñÒ:_x §úÝöïùÇ EñHá–à·óÉŠ"7â"-öó‡úQ‹ôßþØðMè‹íGüß áGøŒû=òõókü8+ ;ýMç.à‹îç? ¨‡ùìò÷G,Ò}þöÖæ¿çoô<X"C'ò „ñø÷}$ÿäó,ù,ŒœôeÉsËáön!~.0€ p gïIݼñO[ÉõíâØòå â÷²þÔ]ûÍúÜò± àçÛÍÐßÜ‹íðü¹$.l4œç,Ý|ï–£½sý^úò½×»Ô÷ß!Y.3o¹Ðò¥äëôÌ  NöyÔMΠûb)¡* šÍÝ“îîà ›Ãà7ÎÍ×^í›9KŒ,ð-ªÞ}ä± ˜…œúûí8Ô,Í„ð ¡9Î2˜(ðÀõÚùõ„ëÖúÿlúÍÞ®ØìøäŒ"S¤ … ” þÿeïÝò t¶özÄÐÀâ 2)E3ò,XÞŠÚ$ôÛüàêeêŒðSãBä­Ÿ.­3´ûþÓúåþÜõî)úªXúNãðÔåAx,ïüJÇü[ðÒô %ÞúEÑâÉàcáŠ#l!{+Î#†ó½ÏÙÝ\eô •ðÔãRâ²à˜ë¥·2.8@#öþªçöÛ aüwê‚ð°úðÞ{ä@ .a+Î lý ù5ôû'{ä1¶bÄLú­(3À+#fÎôÛÖ+ÛÖù²œ¨û[ä,í ÿÕ÷>ñ5 P02£áðí6ü¡þÇòéfè‰é™ðXû0,,7Ä'ê0æ×ý} ˆNúàÿ=œíëÖ'Ýþ°ñ#,ð ÃL…öÛ(ëÄð÷íÙ™ßW&£Z@ kŒñ*ëñ¤SÀßÜdó#“³Œx*–Qü)ë¤ñ=ú‰¤ý0AüÜ2ÉìQ#M8»$ÛËÓ.û¥éDí%ÿþYŠírá;úÎÎö‰þ˶ðý±ê óøNö à’ߺì ‘Fý&Ò*Y¡ÖEÝý »yø€ø þDó;â ìu “ e#z¹ÿÇ­ ‹ð÷Úâó RÛç˜Õ™êžù%äV6GýÔóèðÇ õÆüvÔäÚƒøs g  Ït$¶ÙðÉàYêzûk ÞªöIöêú âyÚ˪. 1F~øwõK¨ðÁð~û=þ÷1èâç¥ ©'¸1÷þGA ôýéúêØNêdÒñÛÔ÷u9Àóe÷ÆÓ¿áÉúDƒôñû'÷¬ìâö 0  Õô¸üØ ]öäí÷@ 4ÿ0å+Ýîür'ò-ìfüŸúVýRMúƒ÷M y‰ôiÌqÕ`ûW «Ôñ3íþàÒïwC ìÈìkù™ðTíC "&Þ#ß¹íðþÓ ø;ðhô±÷òöˆïÐô?Ù+w6ö,øÕ ­õLïÃŽ ,ÝÌbá÷Ä$O Vv|÷ŸÝ4ìü4ÈüéèXøÔÿú[ÿN¥ËK]ïøüN uÿ_ðSöiÿ3öœçzíÐ,Ñ'q*ííåþ›+šü¬ÿ±ý©ïçänêõN¬Qܹþ'ø]õ&ø{aý&êß—è_ÿŒoÆÕ ÎüÔ÷zùTþß7ýDòEì¬ïŒû0 Í.UE õþRõðòŽõà Ôï†áªã}øÎ##(ÁÔZõ]óÓøÿ¥ü´ýò,ìMïÊý¼ &ä °û õ’õ†þî ¬ {û˜êðäÅïu ® ];ùcòûöýrîÿ±ô…ì’ì!ötŒ‹Ó Ú÷ÿõÀú… ò:ïeâIåÌûÆir‘ ý°õ'ö#ü­Ð·ûÌð¯ìhóNüX† ˜Lø®ó”õzÿú ˜ <÷4ä™àQïõ FÛçøvõTúP3 Z {õ'ìeìÔø‚£f`Íû`õÄõ~üw ‹‡í‹á æ—þ“«Êç ü±ôMõ%ûÎk 7ùâîðê•ðâ ì;Ð ºÿ¤÷ôõ£ùÿô¼ «öÁå†âëóo„jP©ÁöÑôø%þÖÃeüóðlè´ë€ùB 1·¶ÑrûõÔö±þÉ ¹ Âþœê_ÞŠåîÿ¹£_C¤ø±òäõïý' ȳø„îëóÚ:Ê}y ÈþÖõìò«öót .ò-âmá4ô— |;­îöCóÙ÷úþuITûSï;è0ë!ùÛ ùáõì*üHö·÷–XÍþü¸çÏßZéãÀxñ f÷7ðçõ ýM¦féõì$êàôP2æÿ9uýò÷Wö½ýâ©¡ï¬áÎãôøcC8 Œü‹ò³ò"÷ÌÿâuÖú™ïåë-ñƒë[Ê”E(øìôõá —ìôÜâÜÝ:êódªGÎùõømÿ<·±éô£ìªìÔ÷³¢1OEü,õèõ#úè- kî«ãÓèVý·›Ö Gýó²óˆùŽ9ôvûÿñÌí^ðÜüd 9ÄߘcõeñWôœûE³Iÿ‰ûfù”úúÿªñŒ G1ßþØüúÔùÉúRü$þp$KÞ–æS»üâû@ûŽûXû…üXýüÔIØÖ…Upk þ²ürü2ü·þƒÿƒÿeÿ±Œ‘²]ÿ"þ•þ$ü—üêÿà#0'Í œÿÒýØüü¾ý½ýüõþ%ÿ;>o‚é<Éýðü+ûDûÂü¤ýßþÈÿ_t6C \>þlýxý«üìû¤ûØý.ýòþÌMZÞK³´©Ì  ÿýøÿÿ×R„¸77þeý­þ~ÿ›¨ì/^ÿnÿ¤ÿJÿ”—3ÿžÿßXªÅƒŒQÿ=þ‰þbþ9þ?þßÿ„ÿ÷y¥‰˜ú¥N¼ØÔ•4 S@~Åÿ±þÂþkþ ýùþ«ÿ\ÿ\6£[Ž[—»ÿ¤þ¯ýÿýHü´ü üýVþ~ÄϽ¬ü¡ž—þöýbûàûüíþåM׮ʀduê‹ÿƒþBü’úCû0üïýfýJüsû}ýæÿ¯ûmù4ù z± Ý… ‡ c ûŠð_äºÜ“ÙïÜUâùíÏúQ…ž!Í)«-–.y+0#þ7añôâ¢Ó~ɦÆ"ÆßÎkÛåì)ýC ‚¯%$3œ:8¹4ë/1% s ‡ùÓêSÚúË÷ÁJ½¡ÀÇßÔ‡åJøH Ë,{8_@²C‘A°:k->Ê éùfå¼Ò¹Ã¹¶/º^ÃÝÒ äƒúP†$¯3ä?=FÕH#B¾8Î*N®Žó6ދ̳À;¹$¶÷ºÒÅMÖê¼9Ô'56 @€FŽF±@˜5§'ÅBiñÝMË-½C¶D¶û¾~ÊÃÜ1ï„æ(%þ31<AÀC#>¡3w#ö4ÆëÆØYÊÀ¾¼E¿§ÈIÓåãüõú×H$º17ò:M70ò&cåòødë³Þ5ÖÙÓÏ[ÓºßFç¦ïÀûWÐûn"ä%¸Šæ Ëú¼óóð=ìÌöˆü¡è'×Ìæ ÿ¦ýÕù „?ö}ô‰mA µ÷MB²üCá%èÿÒoø8ì¨ý÷¹ šð1ì&ûù *¹­ü¬ XÙטÔßð; nA!]â´ß•ôý ˜L ô˜ôû9ìQå üû¬à töqùƒ"tòWùùõMä³å} ;*/¬õ[òý wùø& å«èâ×8è“Ÿé­ Ýæ÷QØÜâ‡w~ö¿îýô‘ïtí”ùÿ uCþí™ûrûOìÑñ‡ý_úëé·% î‰þ”ö­ý'ûAû*®)ï–ÈëÒ ý8ž$°ŽýVâ‰å:ýÀAÞÐê¹òN/ù"ð(È—úŠò}÷„ßOõãöT÷ÂóëñDðwÿÀ"0Œ×íÐê~û«ýPûi szøAÙ¥ÙPôt É÷ êsÌôñÛé ‹‰NèÁç™÷…þè ¼î }õ·ë&[êì$úlýõ–û6&š,ýhñNõÄüfþMŸ â‰È—á4~-J!Õã tùIåŒë\b ïõÂåä÷& ß¹õVÕYÿàï÷[  eù‚í ë€ïNù^*E,Xåá#ã~üYlkþT^¬ðwÚ-ã{2"àC ŽÉ ¿î¶ÛKòö´õÝÜè=LÄ  7 _ëôSó $"ý®ßáïö€ež`$D©ñçè†ñÂüÉÿèZ5û.ÙeÑeú¿)¦13K‹ ö’èïòiOkþ=ézäⓎ ÷Ÿ?»$øþí.ý¤I8ïÝ´à%îó›Pë%Gvò^ÕØè®¼ã­ü4þîöáSñÌp ÊüF©çùÞ¤þ’Ó3âãØô«#!/ „†Ù!ÿôøbñ8Ò%ßGúã3"›¹ â ìå±óý¯õ{÷púÝõ"ÛDáºÐ.Æ&ŒÛò/÷´þý¥ñNõ4ýïýsôfæIîaH#ïw÷:ð{î#°gÞ\Ò|âPŽá…!pŽæàÕžñ¸§ÿcðõûËñ­ììþF‰àZˆõ´y¿ê,éßË ‚ô!Ý&äí®-LNnùOúÉþ‡þ»öìþÕ– ÙÞZÌè} A´ | À?Uþoâääùw\‘ù}éõø`ì4úÕ¤+³!÷Øë#ûß  ¬òžñìöñ÷´òžíßI$|%û‘óßw RÿšðWøÿ³™ïeϪÔöóØ$ñ}-@§áßqR»§ò½ç ó¯rýèü4NÄz ô®ô èmósîÊø?øçéØä ýÎ#›/SžùLíù¼ÚÿߣýøåÄâõô{ >zØ WÿøDôéö«§ 1ô…äó娸h;-H¶ÿ‰õßõ&ù=F8ö€îçîÛøBÂü¶z ¿Íù³ôÛôÀþb g®öËæJáðc ö®^,ùhöŽøWýöšØýEñ=ê\ìXúO y ýAüò÷Ø÷%ýÎ ‰ …ÿìÛãé-ä7§ÍNù›ñ’ôjûŠÊöÇíçëxôdv‚ø fD÷Îô÷» ý}ñÏá¥ßúó]OO7¸ötõCúœ”ú)þ˜ñÆêYîü¾ Kú¼ô4õ&þ° ò ]üdèà%ëË£9±qøÃòýõòý%PËõ4ëàêñõ¸|æ?fü»õ†óœøë æsïRàøãø˜ú g¡ Óþ)ôÆôqúPZ)hú%îhèœíßýæ NDpÔùúô©ö° š Ð÷%ä•Þ‡ë‰÷$äƒ÷‘ôøDÿú™ 0…õJìˆíøeûzÐMü)õNô›ûÁK ªìßêådýÒj!!î ²ü ómôÁû®y¦~øSíè£ðG¹ öÕä Þâ÷‰óÄ÷ ó¦õ¼äÝáËò Ý#[õ1õòl÷€ÿÎý2ñ¥ë0î\ü 7ËŽúeõ>õÙþ i VüÑé3ßÍçÙ‹RPµhûpõ$÷¢þ‘h 5øVî_ëñóî«-\ˆìüsõÁõ_ü ú ôýæ%åâøŸõ-D üüò•òB÷âÿz£Ïýôó íñÿ‚IbÅ ñ.ø™óæõèÿ½ % ÔúŒêSã±í©Y·iÊù®ô©÷‡ýÜÿ=¬øï²î÷E2²¨óûÕöqö¤üÍ Šåó—èºë#ü£¢l "ýýõ{ô_ùÌaú¥ÿ]öúòàõ"ý92 n Üãù"õW÷´ý`Zùÿú÷ˆùÊdá ÇÝŸHÿáýªûîûšüü¼ýôÿ'*‚ð =*ý™ý2þdþ?üKû‘ü1þ9X†~Žmÿðÿ’ÿEýüýýýöÿ,ÿòÿûïÖ¤ÈFvþüåü†üôýªþuþèÿW4&f-<ðÿöþÛýZü$üUý4ý¬þBÿ5Ñç냋>ÿÈÿVÿÿUÿþMþQÿ ¢¤üç7ÿ’ÿþ½ýàý›þÍÿÂÿ¬ÿú˜Sf ÷…ÿ÷ÿ)þþ‚þyþ!þ7þlþÆÿ}­¶_ ÿéþûÿ þôþÃÿ ÿ—*¦ÿ©ÿß»f,«EÿþÐþŽþôÿïvtwm-5.4.7/contrib/vtwmrc/sounds/chime1.au0100664000015300001300000001263110237645271017317 0ustar callumfid.snd#v@chime1.wavºº°¦©¸ÿEAEIÿ¬¢ŸŸ¨¸:)4IÿÁ­¢­ÅMgg縰²ÁÁ°®ÍÿÿÍÍÿgÓ²®«²ÿ40Û¬«¯«ª´g:8>g´¨¨°¼¼Å>06ÿÁ¼°¥¢¨¯¾:(&<¼°®¢Ÿ¢ÿ)$)IŪ¨©¨¥§Û,'-IÿÛ²¢ŸŸ®ç,"+ÿº°ªŸ£°[228[ÛÁ´°ª­ºSEÿçÿS篦§°ÿE8[çÛÿº¬¨ÅE2SÅ®­²ÁÍÁ¼ÿ>6ÿ´¶ÍÛÁ°¶ÍM86ÿ°«©©©°[)%0ÿÁ´®««²Í:*,S´´º²£Ÿ¨ÿ2'*8ÿÁ¾°¢Ÿ°2"%EÁ¸°«¨¨°¾A,.Iÿ[ÿ´¨¨ºÿI88Eÿ¼¯¥¥®g6IÿÿIIÓ°°Á[EEÓ¶¾SSÉ«®ÅEIÿÍÉÍççÉ´ÅI,6Á°²´²¶ÛÿIE>gº²ºÅ¶²Í2.8gÿ纯§§­ç-%/Ó¾ÍŬ¦¬ÿ:,-<Á´¾Í¯¥¨ç0/8E[Û¼º¯©­ÿ/-º­ºÿ.<º°¸º¶ºÍÿÿ[SÉ´¾SSͶÉESÍÅÛÿÿÁ®©¬ÿ4.ÿºÁ[ÿ¶ª°ç4.8Á¬°ÿÿ¼¦¬ÁAESÿÿÿÿÉ®©°S46ÿÓÓ¸®«¶çÿÿgÿÿÿMÿ°¬¸ÿÿÁ¶ÅE<ç´§«¼>6SºÍSAÅ®¬ÉEÓ¼Á͸®¨´ÓSM[SÿÛº´´ºÍ[<>Sÿͯ¨¬ÅÿÿçÛÿÿÿ縯°çAIͼÛEgͰ«¼ÿ08ÿçÛ͸®«¬ç<->ÿÛÿÿ¼ª¨°ÿ0-<ÛÅÍÉ´¨­ÅE8>[ÿÓÅÁ¶°¼gEMçÿ[ÿÁ¯°¸ç[[ÿçÿÿç°«²I6>;ÁççÓ¶´É:2Iº´Åÿɶ´Íÿ::ÿÁ¶ÅŸ°ºI04gÍź´°°º[4/MÓÁÛÓ´©«Í:/4ÿÓÓÛ¼­¤°ÿ-/>çççÍ´¯­Å<0<çÓççÁ¯­¶ÿIASÿgÿÓ²®´ÿAMÍÅÍÛÉ´°¶ÿ:Aç°¸Íÿɶ¸ÿA<ÿÁ°ºÓÿÁ°¶ÿ:>纸¼ÅÁÁÍÿ:6ÿÁ´¶¸¶¸Å[>EÿÍÅÍÍÁ²²ÿ>4SÛÁÍͼ¯¬¶S40gº¸ÍÛɲ´ÉE8AÛ¼¼Í;²¸çSEÿÿÛÉž¾Éÿ[[ÿÓÍÍŶ²ÅgMÿÅÁÍg[縶ÓIEÿ¼¸ÁççÁ´¾ÿ>>ÿº²ºçÿÍÍÿMEÿŸ²ºÁÍÓçÿ[[ÿçž¶ºÅÿ>>SÿÓÁ¼¶°°ÓS8EÿÁÍç矴ÓS6AÛ¾ÁÓ͸°°ÍI:AçžÍçÓÅÍÿSSgçÅÁÁÍÍÉÉÍçÿÿÿçžÁÿ[[ÿÍÍÍÛÓÁ¼¾ÿMSͶ¸Ó[[ÿÅÉÿEIç´¶ÅÿçÍÉÛÿMgÓ¶²¼ÿgÿÿgSg翸¾ÍÿÿÿÿÿÿÓÓÍÁ¸¼ÛMAIÿÉÁÍÓͺ¸ÍE:ÿɺÍçÿÓÁºÛSç´¨ª°¼¼Å>0<ÿÁ¸°¥¢¨¯Û:(*<¼°ª¢Ÿ«ÿ)$)I´ª¨©¨¥¬Û,'4IÿͲ¢ŸŸ®M,"2ÿº°¦Ÿ£¼[208[ÍÁ´­ª­ÍSEÿçÿSů¦©°ÿ<8[ÛÛÿº¬¨Å82S¸®­¸Á;¼ÿ86ÿ´ºÍÛ¸°¶ÿM8<ÿ°ª©©ª°[)(0ÿº´®««²ÿ:*/S´´º²£Ÿ¨ÿ,'*EÿÁ¼°¢¢°2"+EÁ´°«¨¨°ÛA,2Iÿ[Û´¨­ºÿE88Iÿ¼«¥¥¸g6IçÿI[Ó°²Á[AEÓ´¾SS¶«®çEIÿÍÉÓçç¾´Å6,6Á°²´²¶ÛSIEAgº²ºÅ¶¶Í2/8gÿ纬§§²ç-%/Ó¾ÓŬ¦¬ÿ2,-SÁ´Íͯ¤¨ç008EÿÛ¼¶¯©²ÿ/ÿº­ºM.ÿº°ºº¶ºÓÿÿ[SÉ´¾SgͶÿESÍÅÛÿçÁ®¨¬ÿ..ÿ¶Á[綪°S4.IÁ¬¼ÿÿ¯¦¬ÿAE[ÿÿÿçÉ®©°S06ÿÓÓ¸¬«¶çÿÿgÿÿÿSÿ°®¸ÿçÁ¶çE<ç®§«Û>6ÿºÍ>AÅ«¬ÉESÿͯ¨¬ÅgÿçÛÿÿÿ͸¯¶çA[ͼÿEgº°«¼S0>ÿçÛ͸®ª¬ç2->ÓÛÿÿ¼ª©°ÿ0/<ÛÅÍÉ®¨­ÿE8E[ÿÍÅÁ¶°¼gAMçÿ[ÿ¶¯°Åç[[ÿçÿgç°¬²I4>ͼÁççÓ¶´ÿ:2ÿº´ÓÿÉ´´ÍI::ÿ¸¶ÅŸ°ÍI0:gÍÁº´°°º[//MÉÁÛÉ´©°Í:/4ÿÍÓÛ¼©¤°A-/SçççÍ´­­Å<0<çÛç縯­ÁÿIESÿgÿÓ²®´ÿ>MÍÉÍÛÁ´°¾ÿ:AÁ°¸çÿÉ´¸ÿ<<ÿ¶°ºÿÿÁ°Áÿ:I纺¼ÅÁÁÍS:6ÿº´¶¸¶¸Û[>IÿÍÅÍͺ²²ÿ64SÉÁÍͼ¯­¶S00gº¼ÍÛ¾²´ÿE8MÛ¼¾Í͸²¸çIEÿçÛÉÁ¾¾Óÿ[[ÿÓÍÍŶ¶ÅgSÿÅÁÍgÿ縸ÓIE缸Éç纴¾S>>Ûº²ÁçÿÍÍÿMIÿÅ´²ºÅÍÓÿÿ[[ÿçź¶ºÓÿ>ESÿÍÁ¼´°°ÓA8EÛÁÍççÅ´´ÓA6AÛ¼ÁÓɸ°¶ÍI:Aç¾¾ÍçÓÅÍÿSSÿçÅÁÁÍÍÉÉÛçÿÿÿçżÁÿ[[ÿÍÍÍÛÓÁº¾ÿMÿͶ¼Ó[ÿÿÅÓÿESç´¶ÅÿçÅÉÛ[MgŶ²ÅÿgÿÿgSÿ翸¾ÛÿÿÿÿÿçÓÓÍÁ¸¼ÿMASÿÉÅÍÓź¸ÿE:ÿ¾ºÍÿÿÓººÛE ÛäúkõGø˜w Öú÷wôî" ÿ‰úø]u h}ùgýbYüËÿ²þ‰Ú"ú*÷FÄ ?ÿæö}÷y.éÿ§ü&÷þýk?`Rü)óiõŠå)4ø´íüÍ þ ¬ûòý ƒ)û)øPþ=9 œÿ%õõñe6ÍñÑöàï=Ãùü þ@ežúæý9¥åüyþIúÿàÿ‚ûÅù2BÀÎðºø°¶  î÷‹ýdù} 2ü÷öóèÐþ³ûÿ.ÿ ÷¶¹køzÿ¿åþ 4ÿöúþý þz)Êôˆù+–È4üeü5#çÿÏõÍý} ´|õÞîwþ¶ã ^ûí®ù &îûWí“ýŒ\ ¶ÿøŠüÑýÎßa§úú¤ýÖÿS ÿzú«ýyú;ôü;ªƒÿªþÂýŸþÙþm˜TÿÕøûø"ý‚# »ö»èÁÊ Úó+økýà ¨ûšó}ùë ^Qô³ï¿þf†û§ð òBŒ8øáò·ùº € ÷"í…Ë ’Øþïó•ô¯Ž¦ð¤ö¢W ‡ÿùî÷ÝNS6ý¸õ—ý*â"þfZýYùÏýd oÿ­ø²õ‘"D¦ö½ö[$gÙþìùÂó ½þPõeõ˜° e ù€ôcüÑ<}ð–îFÔÛ þøJðêø þøšø(eæûoýóý§]Rþÿþþ¹ýèíÿ²Xÿ¢øãü’^Çü;úýòïòžûóø¶ÿ…¿~ûžöÕ`pàëü&ü%ÊB0üIû´ïFØÿÖúdýÜ´&XÓû+ú¼ˆDûæºÿGü‚ÿ:<ý–ÿsýñËýÅþâqÿT¨ýbýºÅÿêýÁæúÜýÀ\¨ýsš&ù¯ýÄõÿdûe÷ZdÆûíÿ½ü-yþZý:z.üf÷„ÈUóö·öÓX 9÷dô½n¹þàõÕøí UûIÛ ý¼ÿ±ÿ6¾ý>ý¤ðÒñú¢ø9æRAüÍúòûcÝnDý"òDïØ4ýèøñÚ:ýòþ°†ûêûˆû úû©üz “ø.÷ÿ ß ù†ò˳ ªTõ®ôMj+ 1Íøuñtø¶ áþ!ìsö½tüêí,òbé« 8õËëdûþÿïP÷qÝ ö7ôÇóÿ „Öü@ù·ýA˜·ñúU÷%¼ý?þøìù¿š qû‚ôáûÈ -ýþõÄÿ×pXý·ýFþwuÄýŽùÍÿýþáþúþ³ tô÷÷…c£{þ±øhþ!ñýçõÁÄ;mÿZû¦ûúŠ…Ð.þXúiÿs¸üÕö\ÿôwãþLúûºc}#ü;ÛÿtÿûþÎþJëøþ×öUûª_ú[÷=5]ùÊùýÙk÷óö?€ –ønúy4 mÿ0ü^ûˆûÜúýûöìý¾úœúWeÂmöfù·U†úÂýHRüdRsûÍúõýÁý ¨ùÙñýy 9 `ýSù÷fï»Úÿ£ùúwÀ ú ý3cÝü÷¾úÙ %ÿmøLü$ ™þêö–ÿÎR݇úBþrœÕˆaÿÔü4I#ÿ“ûÅþ›~üÙørÿRïúÿà“áÉü^û¯ÿ þ­1þþãÀÐü4ý¢ô›þKÿÂÿÑúØþ» ù±û’jü ÷$Áã{ûüúºFùwûK¯ ýtúgÿCÑšÿÐûÀýüÿoû±ýhî ûQ¨ã*Á@ùÜúã‡þüøùŠìûqý¥þöµ¾ƒúaük²ô­Bþéú¥ÿ¥¨‚ýÕû×ÃY—ù(ûµa!üöûþ A†ù¯ûØ%1ú¢ý¥9úúmúÅ…ütþ}þÿ:òj÷Þú'’Ü%ú(ûuý`ù!úAÿ,¾¥þ5þ¢øk¼úåþù1û~×ýÔú‡n{þ¤Öþ ÿ©µy^ûL÷"ýÖü¼¦ýDýEÿùªàÿHû¥üÜþ*þdý®þÎ3’ü¦þ-6ÿäKÿÂûæªüüUûlþa3úÿâø8rÿR¡þ—ý‹Lþx—Mû%üÎ-¨ûöQý È zøCð]Š àúŠô¨ýQ ½púÓöGü¸ æ÷øõîþ1 ýœö¥úµÛ mÊö^ö(D@ÞñH÷È´ ;Dù÷ø(é±#õäø6 ÿÈòöô¿úóó„ýûØBþø×ùÿ Óý\øLü€pðûîù–xÕÿ¼ünüfâÌþ¦ù\ÿwÒoÿ–üÿ•yÿÌþ>ýýÇ–‰ýÜü²üãþ #•ýéú`ù2 õ#ø¶úôÒôþÿùþïÿNùÞýòLƒú´ú¢-~y÷ü|Þˆþ(÷9ü»¡üZø–ü°Á’ü2øuýr¯?üRþIdûNüW¤®úûùs„ü{ûøèmîôùüÎÓ8ÿÝ÷Òù“× Bûøõ !,þ>öžû ònþ…ø6úF þ¦ø¦ý5(þøþ@ÈõûgüìÄÛQýûþSé÷û$ùžá©„ù0ø;!HCú€¹%ýiØŸþ•ù­`6Wùsûb¾K}ù úúÿF‡åùðòa© ësûT÷ŠþZèýùÑýÑÍÞÿÿ£ÿLþ‡ÿáûÖÿ~_Ïÿ4úÖ[Wþ ýþãÐ"tüÓú™RþÀú)ûtQ ­ñõ`ùBl3OûÊù´ü9jGÿ‡ý±ÿÕ"þYÊþ þì8û.ú$é!ÿ ú&üiy:ýQù©ýQn²ùüü[.þüwÛ4ÿXúÇþ˜þüUýõÿdþ•DJüŒü‡ýT5Ò#ýþðþÉ7Ñý¦þ‡ÿÑËý/ûlÝÖùöù„\ Kÿnú§ü<Tÿ«øˆ¿‚*ùýÕÛ%ü%üZÿ•¼üJÝòþ¬þ£ÿÉýÂý*ZÿÇþ‹ÿ0yrþ¯ýî£ÿúüXÿ½‹‹ý|ÿÓý;6LÍý}þÿeÅÿ°YËý­ÿpþè!¬ûCúX¸+$ùÁùt¿ :ýß÷¿ûô|û®÷_þ ô ÿjûÅþlõÿý(ÿ=“ÄýÑúnþ§¤ýIûàÿiŸEìý]…ÿVýÁ޳fûVü¨‡ž2úøüÞ–j1þÎûFÔþù[DÂû°ümFü€ŽòþÕÿáÞÿ‚ÿ¬ü¶jã°Zû¦ýo•Çâøðûxúÿ¿þ§üÃü1þêûÔþFÓÿÿíú¹ûâóÿ*þ“ýTÿ¡Sþû-C7®ûÉüŸÐL…üý,qd@ûZÿá²þù¿˜ÿ ýÈþª-vÿ?ü1þ5µ®ÿünü•:Ìþ(ü·û±z^ÿ¬ùùû,Eœýû¬þt[þŽü‚ÿÙÁ®ünþôÿËýeÕûSÖßÏúþýèÞKýºükAÿ?ÿ¾ Dýqûb¦ ¼ý@û@kEïüNü·v&þ=þÒþxÿ]̺üNþY#ýµý•ù)ûëkçùùÜ÷| ”÷`øËs û©õ,ù­·Áø·øÏöâø‹øÁ 6Éü øBýDã×û=ùPþ’yÜüþ>ÿfˆÄýéÿHüyà_!ÿü÷ÿÜÿïÝ’ÿ¬üþ©% ù¼ú_}OÿHü«ýGÿˆ€Gÿ=Çÿgý]zÿjþ‹ÿ*òþšýeÿÔÞýÞýüFUþzýÎ\ÿÎùBò€¨þ7üÊýY¯euùpúPα*ùûöG€2yü üþýzo”÷ÿÏøˆþÂfŒüxÿ4VýµùOÿäzóýÿóÿOÿRŸEÿêýŠ®LþÏýíÿ8Èþîù̦„…üWûÆ€fzý~ú‹ÏºKÿÃú@¤ÌL‚ÿþYþdûÏÿíú0þÙìÎù üèM‘ý ý;›Ÿü]üBÓíÿü½ü}eýý?ü¾ÿÏ;üøÿÊÿ2£þ þ2ÿæÿ\²éüŠû‚éGÿRüeÿøÌ(ù…ü©îÿ2ÿÿ9þ¶ÿF…ÿ¬ûŠþËpDùQû0½/ý|ûI™tÿyü­ý¶™ «úYùÒþÎkéüdû|ÿ¹\%ÿÇþý˜ÿƒÉþ/ýj2dPÿëÿRÿ6ÿÒ›Müþ[4oÿ‡üÅþ€S®dûEýöº­ÿ_ù¼ý‹¿Ký3ûiýUè‹+ûÞú¿`³ø™þ0î$û±û1ì_Äý3÷ÿ®þJùlü®˜Û™÷÷®® ^ÿ½÷€û3ÿùüR¹±êùú' ¦ãùÆøcñúÙù ‚ßnþûø-ý,½ºÿjü}üÙä{ü+ûW‘?ÿ™þþ\ÿìãûÀÿçüÇþp¿pßüàý¿XsrüQûܽ.ü²ü Àæéú@ý8Z½þ6ü¹ýo@hûù¶E"áûþª†þ^²þ±ýÏýD€§1ûÞüyRtüaþ˜nuýjºÿÿá‚ÿIÿå2ÿ€ýËýpNžÿûâúâk¢ÿû)ý-Äý=úÛþ¿aþëúLþ`3ýÓøOÿÚ© IöÂûîòþèûùý;¢U±ýû£ÿ¨o=üQû*èÐ_ü‰ÿvÿnüöù-ÏýWûuý}0Õý‰ú©ü§†Rÿ]úõû²zšüúx9Vý>ÿ¢9ïüÎù¦)ãdýÅú#ÿƒ–Jü ýlÄßÇü–ú¶ Ìú´üœÖ–ÿZýWaÿæýz¯ýýÿL]ºÿƒÿ¦ý¿ä{û—þ0=xÛþAÿÿaþƒ¦ üïý0žõÿ»û»þèl:ý¤ùíý’3ùÆóµ‡ Ýöh÷³ /ùüÏÿ+›!üŠþz¥ þ,þ•ÛÄÿáü;£]·þ8ÿ‘ÉÿÖÿ¥ÿÙ/?ÿØþ&¦fþŽü‘ANþ€ÿ5¶ÿIØþéþLxÿØþíü7ÉFÑûû¾ëOýƒúÙTøæøcS ¦ƒúF÷2ü‘ñý¬÷ƒüÿ¤5ù¦ùE†iÿ©ú9û’ÿ¤û¨û-/ÕÿZýü2ÓŽûœýTï¥þzúbà[zú1ûèºéüÞø3§Ÿ ÿdýÒþM¯ýóû<tþ¿þ¾ýèYþJÜPÿéú1éxüùöþÛ„ÿûÇúKÿøû‚Vúcü@üïG.þYüìþ$iþEÿœÿt9aþ%ÿóÿ^oÿ+ŒþëÿØÿAÿ… Nü7sÞýÿþ·þ¼ZÿXÿã“ÿÝþÿLGÂÿAÿóý-ÿí>€ÿ'ýÜý!ÀOÿùûÇþy¤ÿÉÿj¼ý€ÿ&.lü]úêàû…øRþy&üÈö<ýG ÙÜúËúÕø×¢ÿvüÛþ(çÿ(þ&üÄ!£þÝýðþ•²ýþ§ú÷ýΙ÷ûîùPþ>Q ÿGútü×ùvIû2üËÿ¤ÝŸü þkÿÞºÿ³ÿÏÿ+ÿŽ ‹ý8ÿEýwbýuýÆšBýtüÙ})£Úü ü`µNþý0þl“Æn3þ¹ûœ,ÿ¼üGý‡ÿz»û–ú'#¶„þýÄý¾ívýúÿËnßûÖù>ý+ûþ{ûsû›´K—ùû§âÿUûnüü¸)eüÃú|Dü<ý)Í©ÿ ÿ}þóýÇÎÍü1ûáýeÖù×û ³i>ý¤øŠLÉÛþWûÍüñÆÂÿäûùûQ,Òü§ü{%êŠû¼üÞšãþû6ÿ‚Ðþ·ý®þåÂÿþý”þ˜]Tÿ$û¬üŽÏý¾ú±ý %ýÌùþ³ÝþYùrþÒ…ÿYþûþ¡ÐþBþõ<Üÿ®üíýAçÜÿaú:ýì»(žú úM©’Óêù@ýÓT£þYü¤f6Eúhû§ü$ûÀý\Y»Iú7üR|/²ù¶üË£×ýýzüÿÿ^¥c¦ý_úÛ¿w|ýû0þ¸£Rÿ¦ø˜üÛq(ûkúò :ƒúûÎþ…yÓû$öâý@# ý÷LÜ›ÔúBö½þ‰Ð&ûã÷éüñ$—ýöGý{•ªþøIý}T1ûzúq‡ÿjùOýª»¢ýêýÇÿ±ÿ¨Øþ(üÛÜ^ÿÿ°þ¾ÿÜÿöáìþ€ý0þO)ÿüý»z¿Xÿ7üë…gÿ‚ýÑÿrTÿ&ü°G0±ú[üä~ý¾ø_üÁþÿø’úYz±ú`ù­¹ù†ù`!ÒþŽù,þx<tYþ‚ùuþà‘ýPü´þáÖh[üBûF™>ûþ—cCÿHþ4‹üˆþ\¢ÿRþZñýrüÍ™~ý±¨—þ"âÿÈÕÿ£ÿVÿÙþøþ^æaü~ÿ”þl˜ÇIûÑû¶Ý¶úOùY Ÿåù«øÿçô¹þ~øÔù *[ùCú£Ñ…éú ø¥ÿÔéÖþúü bEÿaþ:ýÊþ: Óý›û§ÿc1éþ<ýþt,Uþ_þ¡þ^`üÿÅúØü ýõû•ÏÏý‚ûßJê|ýý&þþ­èýðþOÑÿûŠƒÿ üæÿÑ¡Šü ýgÿkÅûý±û†¨üvýýŒl«üxý‡ HÐüGýñÿT£ÿÅþ«ýëºþûþþMÉzVú4ü„”Ídþ~û‡ü oûø¼ú g_5þüœÿ6[$û/ýã¥Ñø©ýÓ­OýŸùÍ´þõÿ€ÕRÿâýþÍ™-ÿ)ý÷ýàî üØü`‡ “ýœýä$6ÒRÿ{ü5þ«Æ¥üþÓñ§óû?þD)2³ýmûß™éü"û'AÕû+ýW§y¼üéúCÿÙùBùÇAÇÿÑú^ýŠC–ÿwûÿº–âÿþÒþ:Ý ýNþœñd<ÿ¥úþ·wìû±øê ûþSûóý=ËýÏúªþ+!AþkûŽþÄìOÿiý¹þÑÿÿô¡„ýdý«Iÿåþ~ÿ¿þjþWûËÿŠu´üAÿ6?þþ•ûÕÿð†çùû‚O‰ÿû/ýâÿ×t˜ý–üþCV®üzýý20¢Šù ý}«IÿIû’þ½!–ÿÆû†þû ÿþ6ý¯ÿ·uÈþ0üdEh»kÿþûý+\ý'ÿ]G*þëüAÿ`KžûÎûåœÇÿ-ýãüPíìæßü_þYÉÔþ0þˆþDý¢ÔÅ`ÿ'ý›ütK]ÛùïúÿD|íúTúÑ–Úúkø äíEüˆù'ý¥%wsûß÷rþÚš@ÿöcøOá ŸžõVú>vòûøÜ÷%  µøWö@ 4Lù6øaÂÅ€û øDþ6žýIö]ü'¸ü»÷»þ¾c?üVüSÃ*J”þþ)ÿë þ ý}ûÍÿW€ÿ‚ýNþ]Ià§ÿÅþÐþ(þ݇õý ýý ~Åÿ!ú¡þUN*GønüÄÞ3þ\û%ÿ2÷ÿëÿûþýý8¶7ûOùÛàï ùeúMm¸úüÚc$ ûý²eÿxýWü-CµWüCú€ÿfœýÄøˆþeô’ÿ=üØüÖÿ:õ&ü—ù"þ`fý÷¦Ñ-³ýNù›l:>ýÀý– Cÿ ýøþ° þ¨ý«ÿLî»þ{û Avÿ6ü±ýrp@ýÑýÿC¾éÿáþ+ÿÕÇþþ/iHþ®û¡Iê£ÿŠþ°ü؆tôü">MyþÔþ»þ1RÿŒþ<ÿòþ <ýíúƒÿ‚cÿ2üUýüÿ+¦—Pÿ¬ûôËÿÞÿ ÿêqÈþqÿeÿ@øÿÈý¢ÿµâÿžÿÿØÿ#ÿ’ ”ü+ÿuXohþŽþŒþÇÜÿý¦þU‡×ûÞüeÏÿûHüëÁfýLú;þ¸Ëý÷Áþ,¯Èû¯ú÷WuþÂûVýQ¯wþ,þDýb ‘hüâûþO”þùÜükÿHù.þ¨Ö“üïý€ûéþ˜ÿ{þ.¿ü^ý%‚lÜúNþs°‚àÿœý¦ý6<¡þÍý3KÅþKýRÿIÿH âÿjþ°uVàý¹ýñÑøüýTÿ¡ý›þfþÅÿ­çÿéþÃþ¦ã5¿þaÿúÿ»°B£üÊýÉt-½üþÓß.jÿþˆþ*’ÿµ½÷ÿ¥þ)ÿ+ÿj¾ ÷ýüxœ°Èû…ü‘ÿ>ûýwíÿšü•ýÊþ1éúqûÕ—ÙfþCøvýYîðûùû³ÿÖéŽüñýðk×0ÿ*þ¬BšÿrÿA-ÿ¬þ¸ÿ‡»OÿÍýKÿŠÖþÕý³§GÿÏýB¨ÓÜÿRþØÿLÎcÿ{¼ÿ"þaÿ.Ïý1þÆGÚÿëü¡þÛKfûùý96ýÍúºë`Øþü«ÿvÄ~ýDþ#œ Åþ.þ@[ÐAü.þ5”ÿËÿršÿ3þÝþüÿD+výBûÿ>o2ü×ùaþëuúèø«ÿ÷1þ¾øþNøÊÑúÂý=7þüUýS J)ÿ¸úgýöóSþtúSýZTBýµýŸþù;Q’þ²þ”ÿõ•Ký‹ýmÿ .ûÚüá)•ýÍü__vÿãüòþŽ·ÐþAüéÿÛiÿ˜üÙþŠXý·þ‘eÿôÐþülþùýü×aþÓiÿÒüS8äÿñýáþ’eìþFþéþß×Tÿ§üøþM4ýOýDÿ’ÿhþ>ýüÿ=åúüYû#€]¦þVü&þãªCüòüfš·ýŽücÚ³ÿ?ü—þ›;.ÿUþ£è6ÿ8ý?ÿ;·vü^ÿCÿÐüÿDeFþ-ûap-þ÷ý¨¶[þ—ýƒöüuý?ÿTÍËú#ü«W0þaúyk‰Ñú·ýk Џú†ý3w°þ þdýeÿ‡0õý’ù2oÿ?þ5þŒ'eÿ¨ýô¹þîû)ÿ½p„þÙý¯ý"4þTÿÄÿ"zØþ&þ35»›þˆŸþýþ-¥ÿ2TÿÐüI€éþ<ýOýJÜÁüü­ÿc?Ûû»þ8)ÖþÃþGÿd#ÿbLEÿýÿ>é0þ§üƾZÿ9þöþ$°ôb&þFþ-´ñÿòþ†þ#T?þPþ«sôüØÿêÅÿÛþýìýË’8ýYû¹ýKÿÞüÜüÞwþ›ü6ÿÃvXÿ¬þˆþÍÿÔ;LgýœýÎÛýÚÿ‹ÿ|´ÿ+ý ý¤e?ÿ?ÿ©ÿ·þ‘1ÿrþpÃþyþ4ØÿrÿþÿJ#ÿPþäBûý4ÿ©ÿÎþÏWìý7þ²¨ÿcü ÿÅ/ þmú4ÿórÊþ~ú0üÇEÍüAütÿÈ/dü÷ý¡þûGÿ#lìþXÿ)ý þ¦ðÑÿ·ùWþ°lþýWÏÊþ%ÿùÔþÙþ'G8ý®üܹàÿ„ýÖþU^áþ;Aÿã|ÿ^ýÉÿfÅü?þÊ ‰ü@ýÚÿH~ÆýðûNþÈË?ÿ/û9þ¹lþ{ü ÿÅ­3ýXý(½JÑûšýá,ì4ý9ü“MgÿÿKý“ýî¦þùûÄÿŽÐ‘žýüü®ð˜ÿãü"$ºÿ¿®þÔü"Ÿu´þÜý鬢ÿwþdþ‰ {þþ·þ³•ˆþÏý’!Þý{•&þ;LéÿÁÝþÿRÿ¦ºý­ýxÿøÿ>ÿô’þ²üJ8ý ûßþ/>;ü°üCGýšýÂlUþ´úÿ€góý.üü  Ûý=úÿþ$OUýZû[vÛ+ý¡üÚ[ûÒü8lÐû´ú¸©/ßü=÷{þV !žú>ûðþb#ŒþõúòûW&âÿ±øGúãì(ÆøïøP× `ø úƒÝ5FùüúˆRuZú5û3¸=üû'WNœý6üIœÿšýiý’ÿ-ªPþ#ü‘ýÜß>ÿ ûCü8¸¾ÿžýñýÿ軩ÿgÿÂýþß5üÿVýËýö<®þìýêþ¹}Ô¹ýûýšý¢â´ÿSýþ-Œ]ËþûûEÿŒ'þý·ù.þ6ÿrþþMÿ›™òÅÿÀýÔþôÏÿþüªþ|A ÿ_þ$ñäýèýJ/"ý¬þSÄÿ¬üxÿ·þQUþƒüoJ©ý/ûgÿ£è/ýyûJFUËúžýcfXý”úÓýnXÿüÕýCE wûoý)gý ÿ>ÿõÿ!H²üü‹çtÿéü2ü¦™çîûPúH}Åü`ûRÜâÿ¿üsý &þÓýå@ þü£k þƒÿLCKÿ<ý–ÿdo¼üãühOûBþ¸8ÿÖüþÓ þgý©ÿ€|BþÓûñÿ{øüü¸ÿí?`üùû묖gü ýÙžáüÈþ²®¾ÿ†þü«ÿÉäãü·ø<NŠKý|øýýžÕû­ú—þá¥Ëÿûý—F,’ü´ü{ž€ÿ¸úþz"wþoû™þsvxýþŸþ[ƒÂÿWüíý’’öþvý®‚˜ÿÕý5þºÿ1¶þ=úùý¨§Ušý|úÖþ{Ãü†ûôþ¡¦"ý±ýŽè·Býýß¾}Þÿ»û+ýª™þ>û(þ˜&3ýêûÉÿP£ÿ ÿÀý7þhãáþËü—ý²2Þý¶ü­-•Ôù•û=£øúwûhÖ;"ý…ü>€fÚü;þ3¼ý¨žÁþ«ý€Ê®µýgÿØÿªþ™Òóý¦Vÿb;Ðþ þ»þ¦R=Vý%ý±ÿ憴ÿÁþ,þIòþfý3iþ þÄ!nþìþ.~ÿžÿ^çÿïúôþb ~ýŽü˜ý„t'úùýküûJþµ½ÍýÄý"²þü3:¾ÿ®û3þÿ UûþG(дþÙþÛUþÈþÒÂÿÉü}þ²q½þšýiÿýñoÿšýtü¿¢híú(ùü`Ôú†ûëüùo¬šÿûT÷Š ²8øGøOºcQûXöñý÷ ^uûÃôÍýNmýøÊûzñÿƒúdþAÞÒ—ý€ýÿcã™þý"þÖ[Pÿ=üG7‚kÿ+ÿÿ! Ùýœÿiyzÿ®üÊ~²þxü"þ) 0ÿsûŠüþ„ø^ýwtU/ûxúÈ ™<û•ûNŠÿúý?Ã]þûûÞý‡ÿY¾üBû;9üÔþÕÿÅ¿ÿûb×|þUý}þ­l°‹ýßþ¤Úyþþun‰¤ýAü©wÏý.ü„þSò¢ÿšýRþrþÍ”qýûxÿfaÿ¬û ÿŸfZÿñýÿ&ÒJþ¿ü(á£,üUûÿ¹ÿþÿÙýíÿ·E.üóûj•Æý¾úHþ|^WþÅüˆq°sD8ÿåüzÿ2Éþ°þþ¾}Yqý»þï,çþý éÿ˜ýßþQsü‹ý³˜óÿWü†ûüù(úÑýV9Xÿ“ýÿÛ€ýíü„þ”>ƒÿAü1ýæ0›9û”þÿt ÿLþoÿÝÕÛþ*^ÿîþ¶þýò)8ÿLü>ÿù„Sþ{üÿý Lþ±ýÙþ†óý|ÿ ¾ÿ}ÿçü-kŸ&Ÿü1þ†U¡üXÿ«ÿ/óý+ÿäÿçþ2þ¥þ®ü*ôñz+û ýxR%Üýìýþ…gÇÿ¯ÿÉÿ¾ÿáþ´ÿŒÂÏÿaþ×lþûýnݳÿõý€ù`ÿ€ÿQrÿúÿæÿIÿ²ÿ ÿ‚Xþçþl´ÿ;¬þsjþÕ@ýšýÛøþiý†þ›¦,þóûìþAY‚ýÜü]<…‡ýùû”þ"ùûbû%ÄÀÿVü•þZ‡dþýûýïXÿü†þžº¶üüdÄ»¿ûØþ%<¦þÁþeFBþöþ•R;‚ÿ™þÙþªþˆ|ÿPúÍüsƒÿüaÿ<±ÿ’ÿkyþaþ³&Qý’þîášVýþü>°¿þ¶üªþÚP +úAüRL7û8ú4ï’ý1û%gæÿˆû­ýÀ¸Àÿ4ýÔü:ÿHþ&þÿGäÿêWüþCÜü½þ™Oþ•þÆQikÿÿ¿Šþ£þ²vãþþ Láþ´ÿ†1jþôþëÿˆöòü\ýZÿ%ý;Üuý½ü™Î~ÿ¯ýæýGÿ¸;ØþÜý,þËëì úœýœÖ™îþŸþ³ÿÚÿ?L—þåþ;ŃÿMýÀÿÔûþ¿ýþ‹ÿ”ÿØ(þJþ«ÿ%L`ÿ/ýd!øü£üLÑýŸü»þÉ àýü‚ÿ‚;nüŠþ²ìrÿ‰ý~ý]Ço`ý~ûRþË9,þxüþk`ÿ ýúþ±ÿqÒõíý°þ+Ídý±ý÷à9þ8ý:ý€A¢ÿýÁþ~ÿýÕÿþý®þ€ÀñÿúüRÿVÿßþëÿ¾ÿ´ÿ‘ÿá?úüNüê·,¡ü†û›n2ü1ûjD‘û(ù¯ÿÃßOýôùhþ|CþtühÐQ†þEÿÔ¢Óý!ÿ¤ã¤·ý¿û€j´þûþý!•Vüõû. ý¢û6ÉR ýÖü…ÿ”ÞÍÿ·ýÝþKÿãnÇþ½þ‰ÿÆŸÍÿÉÿKÿ„þ>"„þ4üçüŠì¬þñú$þb˜¢´ÿ$ûýoÅþÖú£þ%½4ý-ûtÿõü¢ÿûþº‡ÿ©üþž›YþÿÐþ-ü·Õýwþh8ûþ2ÿþª•k²þ;üúü¥Ä«ÿßüŸü´ÿófýZú‹ÿCúÖü‡CŠû¯û¥þƒüsýöþÐ[J¤ûÙý–Ž¥pü®ûãJ Üý¬þnÕþPþ𽨭ý>ý20бÿ©ÿ-ÿŠïÿ:ÿ³GÿS“¦þñÿ—Ù4ÿAÿ0ÿ±* ýþ€Xý§üðþxûžý&üíÿBÎþÊcþþìVqÿúþqÿñÿã—¢ýHüô>Zúÿûfvãßû9ün™u5þ‹ýøÿxÞÿ6ýÆlÇÿÍüý¿µûþÛýdý#iy‹ÿ‹ýÕÿ*¤TÿÛþˆ½ˆOÿ{þ0ÿG¿ ÿxý™ÿbEÿ`ƧÿÇþîþ;\&þBýÓÿïÌþáûÚÿ½Lxý«ýzù\ÿ‘ÿÿ!qýáþ'ÿ6bp2ü²ü»¢0Øü<ý¡eÿ ÿˆ.ÿ±ÿÖÿKÿ_òÕÿ7þPþ[‘ÿ°üÿv{ŽüûûL§ðŸþ~ý@ôn8üþŠk þLþrÿÛ`ÿaü„þµ­²þßûâÿûŠÿpüšýšî ý#üõù„û­ý¢ÂIûGüžÌJþŒþAü]˜ ,þ<ý4ÿûF•þpüZÿÛë{þÅüá§ÿßþ›þWøÿyšüŒü)ú6ÿÓû<ÿGéÿ:ýêý° {vüáþT£ëÿŽþŽþÏΠýiýwñ;þƒú>í½çüÃùìþLïýëú(ü(äC¯û¾øÇþ|ùáû÷zÿÞ"çü©ø£þ®/ûþúâûb~ÿûÍýÈ@¿þdûBþññÿŠþ„ýîþ¤ÃIýfþ¸÷>ÿýý7 ò›þæýÙzÄÿßü5þt%ŸyûËúà}zåü2ú ÏNü3û.zöxüìû¶ÎçüËü$ˆÝþxýOÿifþ*þ}YaþâýjþËÇýuû'ÿâSÉüzý •þÊý×þ½þ­ý@:üühü©+ÿ•ûØþù"uþý¿þúÿÆûfþJ»ÿ ûüH`·û‚ödýxÓ”þÝ÷ˆû,¿ûþç÷çüætúËúôyËýÅùÌþ=@uþKú˜üСZÿû$þ÷ØUþƒþ„Ÿ+ýZÿñ¹Òü`ûæ×¢ûý‹gÿü þ™³íüÏúÏÿfÐYü¿û*Î*NþÂýÂ.OÿÉÿÅÿëÿïÿWòþÿB89\ÿâýþz\‚ÿWþ]þ•´þfyýçÿ'‡ýdýˆ„¨áû0üïåìùø8ý/„!ÿ<ûJþ/ûýhݯÿ‡üÍý \mÿøüÿÏ5!ÿäýÍýDarþ†ýlþà Zÿ"ìþWÂÿÿþCÿ¼ÿz÷ý”þÏÿ21þüõÿúÇýùûþÿ7gü¬û]'þýOýÌa6Îþ5þyü<ÿÐþíýAUn‡üþüé! aüàÿ gqÿ„þxÿjÍÀÿÊýUÐ÷ÿ¹^ýüÿ|}æý¨þsÿ´ü%8¢þ~ýYL<ýý;þ€Çì‘ýHþ¥‹Éÿšücþ`–ÿ þþô•BlþÌþºÿÂŒ]£þ>ÿBWïÿ•ýûþ5\¢þnþ{r¡EýÜýÞ$Eÿ¾ý¶ÿ Œ"þÆý‰|D:ýnü€6\ÿ`ýÇü¤ãäÿAþ9þ©’˜ÿÓýyþØŠÄ4ýßüÿMÄ‚ýDýKÿ® ’‹ý‡ý Öÿ¨ý¥þ 8_þý ÿ¡þžÿÿ½ôæÿ´þÿ¨ÓQ”þPÿo¢[þÈûÚÌCÿý¨þïÿwÉçÿ6ü¹þ^©ƒLü‘ý‚_ìÞýOýóÿ/XJþPþ4ýsLäÿõû=ü6íÛþÓú`ý Üæÿ•û‰ýÄ£—hübû¥¢ý^û¬ýÙÚú%ýÖå|ýöúN‹ãÚüOûAêýûaþœ˜SýÖüøþy$ºýÐûÌpY×ýÿc¹“ýéþ'‚ýÓýðiþýÊéï‡ýsýíÿûšý^ýoÿ1?71ý¬û¥þÛÏQýùýý‹¨xý—ûqýa ÿmú™þ>DÐü€ûò¶vý‡ý[ûr¡þŠüÿ³Ânþü7pÀý`ýY˘Cÿ"þ þfvìþûý`žÄÞýèý£?#ƒþþ©ýžL­ýþ¸ÿÐIºÿŽþúÿªþ•Ë©ÿšý&þŬ–ÿ5ûHþâÊýýÝû5ħÿ¦þÿGÿãyþgÿÉÿê´þ´ÿaj|ÿ­ÿþ¼ýÌÄ¥þžúÿìÀVÿ„ûÞýÌþ—þ ûßþ¢3úü¹ý$¥óÿQû•ý9UOÿ‰ü?þ‹3YýMý¡Â¶ÿ‡ýzÿ8D¦ýÛþ¾¶ŽþtþTÿHhüžÿIû\ÿPþöþÙ¼`ÿ>ÿ‘ÿ·þ§ƒÿ¹þòþíÿ­ÈËý:ÿl”ÿl)ÿ*sºÿœÿÆý&2GTü—ûÈÜ Dý¤ûWþ‚i ü úôþîÄ7ü†ù6ÿ3¼:ýRúþ=LYšøÅú-Ð;¤øbùLp˜úù„¡`4üø±_ üOøÄÿvÅ&üÔùÆ=iÉüøúþÿ;1ý;úMÿ "þ<û.ÿ­JÒþúüØþÚ&þþ·¾{LþêþòlÇþäÿþ>hþ+ÿÌq±ÿ;ÿþÿÄÿvL`ýÅÿècÒþ‰ýœþÞýÖþ­ÀÿØüàýiüˆìûü…Æþü=þÉÿEýfþk—®¾ý}üYÖ£\ý üæÿy¶ýúì°ˆ™þýû‘ÿø×Aÿ ÿIÿ¦9O€þªþ†½49šý—ý Ô^¢ÿÿ6ÿQoÿÒþè‘ÿùû•ýî[!€û#ü”Ú™&ûüŽ.àaþ&ûÌnÀýÿ™c|ÿ¸ÿÿ1äÿS^-Aþðþ’ç¶þàýU©¶ÿýýÞÿƒÿ½üãþd"»þAüþ`iƒÿVý6ÿ‰ÛœÿÌþôþŠOƒ;ýÆý†ïÿ×ûÏÿÁîËÿ£þ}Þÿ4ÿ…ÿ ÈCÿUzÿÿ€÷ ÿÛþ¿Ëÿ3þ¢ÿÉ|ÿxÿ-øÿÀÿ\ÿßÿ>î<ÿ1þ©ÿaÜýþý$V‰ÿŽüÁþŠGFþ×ý!ÿ›Ô-ÿØü3þ8"Oÿ ý,þÉÖ“þýþÃù•þöþÓêÿPÿU#þ‹ÿ9>‡ÿÂÿ}¬Ðþ¡þÛPÄÿNþëÿ}+ÿ[Ĉþ¡þ cÿfÕÿþ¬$÷ýêý¿©ÿf€ÿâÿÿ±ÿ×¹·þ‰ýõÿrËü³û¹ÅQý-ý®ÍÓýºüòg/æÿiÿnþa¹¶ÿuþ´ÿô>¨þÐÌþŽ-éþsïÿÚÿÁÿ ÿ¹þÈ‘cþ»þ¡p§ÿPþØþ^*y²þËüêÒ…#üSý œN>ý“ýZ‡×Xý1ý›þÉ÷býÜü¢ÿµ­ùýeü%}Œûþ©RHüÙþ¡éüHþåžõãþýÅÿèáþjüËÿ÷ðþÏýN¸Ñÿ¡þ|ý}ÑOü{þ÷ìrþ4ÿµ¹ÄÿÈþÿúþ6¨Oÿxýóý]è‚ñý—ýmÿD ¯ýþûÕçÿËÿÑÿ4ÿjíÿ¥ÿ‘`ÿ‰ÿ­ÿ¹¹;þ<ÿÆ2¯ÿèýãâÿ£ÿÓÿ`ÿÖÿ£ÿ.ÿŸàpþÿxÿëÿ!ôˆþþIĶÿzÿÖÿ÷ÿNþ3IdˆþgýTÿYdöü¬ûAb ºü•ý’Àÿþ³ÿ¬ÐþAþ¸ÿXÛþ"þsXDŒþvýëÿѨ•þpþˆ Àÿºÿû‚xý ûs´ÿ‰ýØÿï[þ þ~ÿ_‡“ý#ÿR9þÛýw(býHþÄ>âÿþlþÿ½þ˜ÿZ‹´þ£þËÿëÿ8ÿa´ÿ‚ýœýUUýðþc›þý¥þð‰íÿ¡þþkîý”þïªKÿàýVü˜ë #ýÂû±.ü©ú1O†#ýü’þó&Cÿ<ýïýXü&lþýZéÿÃþþmý+5F‡üÙþS ›\ÿfþc¾ÿIû´þ3 íýqýâÿ¿ÙàÿÇþ*òþn[±ÿ[þŽþ£ÒL¦ýÔü®ôÈ1ý©ý:ÿMµãþøü7þЕ)ÿÛýÿ(5Ùþ?ÿVÿ£ÿðâÿ<ÿãþä¥ÿøÿ8ÿ2ÿ®"öþIÿ’ÿ†? ÿŠþÿ ÿZJ¦þÇÿÿÿ< ¤Mý*þ­íâÿIý}þ#à½þ¶þüÿÒf.ÿËÿ.ÿøÿ¼ÿýÿoÿÛv,þãüdfŸþªþ3‹ÿþ‘kŒ•þ|ý ×ûlþ K4 ýÇü„ÞXÿ£úZÿ¨7üû‘aõxýùûÃ)Õý\ýºm|ÿ&þ€ÿ¹Á5~ýãþh¤¶üçþg‘ŠþóýXÿ :ÍýMýùúýý ü¥ÿ¶Äüü¨ûoÿZ²!üüÿÀf(üžýIå“rüjþ[¶ÿWücÿ=8xý„þÚÿ*eÿºü–ÿÉ0)ÿ•ý søÿ›þƒþ‘ÿôÌÕ©üûý «¸ü¾ý| V’þòü©ÿW“’þ}þáSÝþIýÄÿ Ð þyü[#²ü–ü¢ÿbhŒþ°ü?þ{üfÒkáü¤ýÁ}S#üÒüF£;úüQý$L1ùý7ûÿ-FþDû`ý©…˜ÿÿù·ýá~ÿüOýrñ»þzýþT>Ðü‚ýæ¯àÿ1ûHþ‚ê<ÿÎü±ÿ™ÖÿXI7þoýîþ–d»û†ý,ôfnüœýÿ3tü#ü!Aüòü³éýhü ÿ.F3mÿBþ œ­ÿ°þÇþuv&¦þhþHGÍÿzýÿÎzÿ°þÿ‚ÿžØþ%ýþBý›þDk"þýÊWôûý^ý +Çßü4ýzÿ ®üÃþµÄÿnþeÿÈx:ÿìýxÿpÛýmÿqÿðþ·uÜÿåþ#ÿÒoüü3þšïO,þ7þ¢ý­œÿ¨û+ÿöÞüü€ÿ…¢ý,ü!ÿW¦Íüºý<}~ý†þ"V2cþÕýæÿ…kÿ3ý¸ÿ ÃæuþÎüæÿ\Õ~ýYüèÑ;þÿÊþh†ò?þ¿üÏÿ9Hþüü’ÿǤý­ýþÿ5’ ýuþ`ŽLzÿÿBtÿƒÿçÿ°Ê ÿVý†'uÝþ—ýD_qµþý%ý¹MýïüÒþžrmÿüžýÒ §Šûsý«Ä#ÿÜýS¬+ÿáþ¾ÿ6¢ÁüŽüi’Ãþ ûòü3Æ¡úÓûtô¨þúÿþ|UW4ýþdyòæýþýÍÿãQþQ3ôþÉÿ×|oÿ—ý9þ¾ŽŠþ¥ücÿÓ¥íÿ°üþ‹€¨þEü“-vÿÙý´þBÙŸçÿ.þ?ÿ‹ÿ s]þÓý6á Uþ¶ÿ­ÿ÷i,þ@ý9|Rþÿ±ÿ+UÂÿGÿÈoaþ¿þÏb§üÍý½Y£ü¬ü2V´)û:ûª0Þúsûü»Ltü”úéÿ¹®&üZýˆþ¶÷ÙýÂû~ÿ˜×Ìþýý'ÿ7&þ©ÿ­ÿíÿ”wDýFþÛ%výþüÿ%©©ÿEü›ü4T²ú:ýíW ÿéþ8ÿ­ÿu¸ÿÏÿãsýøþMÃöüÝûº²9mý±û”ÿñ^[ü~ûo·û{üÔwnÄýžû5¬K#ýµû¸ÿˆæMÿ’úBýK*ôþ¶üŽþ…ˆÿéüTÿUÚ×ýËý4ÿÜ„Hòûüñ5õÿOûûiŒ(û½û"ÃÖüiúJ)áèû)û<à{aü²ùÕÿyÚ ü ù¾\Zôùüؤÿ¡úMý3–˜ÿ"û°üùZÿÒü4üC7¹ý ýXª ÿ* [ßþ‡ÿe•þ˜ýrËÿüÛýz»’ÿûý¹ýKÿó‹jþ¹ýÉÿÂÜÝþúüäÿSݽþÕýÂÿ’*Ýþ’ÿqÿàýôhþºýóÿ†ÕPþýy$ÂÿUý6ÿÓ®ƒÿzÿù^ÿÀýwqž­ÿ þþá Vÿœý0ÿ¸«æý×ýQ­ÎÿPþÔþþ‘ÿ·þÿ æÿTÿ‘ÿ2ÿpò•ý½ü^²ÿôþ¥þ¹>+eÿÿÓÂÿ§ÿIÿÀÿ‰3þåþRÆ@MýÃþ§?zÿÐþ´þ4ÿ/2ÿ/ûÙþîÕóÿŠü]übØjõû¡ü• ÿEúpþ[¼ÿ£úñý^„ýÇül¯ÉÿpþÖþƒÿ°Rÿÿàÿ™”ÿ§ÿÉÿÿæÿWnþ±ÿ€ÿ84ýcþÊW¢ÿôüÿ(ÿPþÄÿ!Oðþ¾ÿxÿŽrÿÖÿ—þ¥þsgYþãþ ì(áþGÿ·´ÿhþàÿß]íÿ#ÿþÿþ«ÿÆw×ý~ýùb þ•þ›×Sÿ^ÿmÿWtxÿþŸþõЛüXý*ªBþüåþæ¼£þðü/*‰ìþpþÎÅÿÿ.ÿÍ£ÿýý«YþþýlËÿúþ#ÿÓÿùr½þŸþƒÿEÿô‹Çÿ0þ*þ8 9þòþxÿ¾8+ý¥þqrÄÄÿ«ýþXÒìþþ öþmÿ( ÿ2ÿ(f[–ÿîþÊþn¬/•ýPþœI\ÿÍý•þVÇ-ÿžýVÿ¥èºÿþÈþúÿ òKÿ¦þÿmÿežOÎüýЙH6ýYüðÕ"|ýÅüÜÿwUþ4ÿÿWnhRÿÿ$–ÿ ÅÿHþÔþa$ ÿôühþW’gÿûùìýe’úþZûµýó)þû9þÂ"®þ_úýjþ'úÙý/r¾ýû%ÿc$ þrú5þë6ÿÓú5þ£ŠáÿYü5þäÔ™þÐûêþ¦›Dý>ýp»üÿÛýKýùõ¶ÿËýñý[„2ÿ²üÉ ÿ­ÿ‘ÿ &ŠþH¨±ÿAþäÓÃþåüæÿˆ2£üæýüÿÏþÏý¢ÿGüŠþWü0ÑXýþaãÓÿ$þùý±  ýýF«ÿGý„“§ÿØþÇÿÁ÷ýÁþBýbýÿÓNïÿ.þSþû“GÿñýŠþµýSþn<ïÿ„þ0þù6Moýrþ–ðþ¨þê1þaÿhäFÏýÿNвþmÿ‘/cþÿ©ùÿ•þÎþÄýÓÿlþ«ÿÊÕý?þUêVÿÈýÿ¦Ú×výxý†„¢Rÿ8ýÜý`úþ£üþWçbºýEý"{Jšüƒül?¶üüy‘ ýéü±ÿS›[þ«ü%ÿkY¸ÿ/ûMýï¥þ û¦þCù%†ýVüH=ågý‰üÛþ%QEý=ü¤ïü2ÿ|C„þÁþ€üÿ÷ÿþÿ–ÿ¬þ…ÿÔ€ þ!ÿ9þ!ÿвþŠþâÿOý=þ¨§‚ÿVÿþYFiÿZÿÿ[äÿ17þ‰ÿ%¹þðþ@’éÿ0þªþ6,ˆþßþD6§ÿ9þ’þèþüqýPý¬ÔüÞü½­ï²þoûMÿJ¢±ýòûÚÿ]ôvýrüíÿµ¡Yþ`ýºÿú1ýŒþä'ÿÎü\ÿ¿4!ÿÉü´ÿ¶õÜü*üœö¬;üÖüÒ[þÿüJþtGÿeüçþ—¾µü5þ²ù‰ýÞýfþ'’xÿnüýÕÚËJüÇüLèUþqý<ÈebŒü£þ¸É„ÙýYüOìhšü‰ú’8cšüRüf*šýâûDËPþßüþÝœIÿæû<ÿ·]þþhþA϶ÿØüRþ•K½þ{þÒþä«ÿMÿþʆ‘ÿ£þïÿÝ‚ÔþVý `þíýøþŠËìýþÞÿŽ]aÿŠþqÿ:[ÕýÃþßèƒÿÿãþ¥ÿ>Ÿ ýRþ^[ºýöü$/•þ+ÿ†þ"pþþÓÿÃþ‚ÿ3Û $þkÿuðH¨ýÿCJÓýKýDý÷ûs½%ÿþðüôþïD|ÿýÜý?*>®ü þ8¼AGý¨ý4-Àÿ‡ý°þtTqÿ¨ý9ôuþ}þaÖÿýþ-–ÿäÿ.ÿˆ”ŒþAþáþÖ¸ÿÿPþþá76ýBþq9Ö0þþšÿ]({þgýÕØÌþ­ýOÿk!”ÿAþZÿ.¤`ÿÆý­ÿh‘ÿ þ˜ÿ´’ÿyþCÿìR`ÿ€ýáþÿ¹¡þ“ý’ÿ<Ì0þ·ýÿ6Øþ8ýM3!ŠþtüÿvçêýýMÿ:]qÿžý7þEbàÿþüìþÅ ÿþ­ÿ"86¹ý þMžÿAþ ‚q:ÿÿ„þ®Óýþ[×q¸ÿSþ‡ÿòJ³þþ¤³ÿáþþÙÅáþÏý'ÒOÿþïÿæ5"þ™qÞÿ½þÿ÷³ ±ýçþµIìÿþcþ foÿõý»þÏÿtŒMÿãþúþl ÿ{þ þy:‰1ý:ýJ=ãcü«ýõÖÿXý«ýƒ¤Kÿ7þïý‰“’þUýÿÞÇÖþúü´þ$<„þ¨ý,þ~%GÿìûøþFå7þ9üxÿóžìý/ûÆÈàlþâû1þÝ–ûþÞúhüÿ³mÿðù¿üç9>ÿ]úÐü%³ÿÐûPü6½ºÿêýàýÊÐb~ýÿjˆ—L;þ"þ޲'ÿjü6ÿŒZý+ýÑÿXRØÿRþPþM$hþ&þµzýþíýÞÿû‘Üü3ýý=>^ý†þ(ÁÍÿbý‹ÿÞ±ÿjþ =šÿpþOÿ³KÿÕýxÿBòþ ýÿK4wþ¦þoÖÿKÿ¢2ÿ¦þ˜ÿóÿøcÿþqÿ^ÿ[íÿçÿLþ`ÿ”ÖÿPþƒÿ¿ ¾ÿÈý´þ¾Ê8ÿeÿ}þBÛ€Öþ¡þ¢wÜÿ·þVÿøÿöëÿ‹ý­ý3Žþ‡ü:ÿã%Fþ)ý4®þþþØÿ5)üüÎülužû=þ1ý9pêþ]þ ÿŽ9Üÿ÷ÿùýUùÂÿþý™IÒþ'ýµ†Ûýªþl†¨[þ¥þn³flþ£þÈ‚ÿý™þ<öþ¦ýúÿ’eêýþý€ÿiÿƒÿPÿÕÿYoÿºÿuaÿOÿÿð˜´þ«ýÅÿµèÿ·þBÅÿ!ÿ(%¡þIý J"þõý^ÿa}†þ`OÿÀÿGÿ§ÿI.ÿ¯ý ynnüPüXôõÖüUýñÿ³oý|ý ^ ý†ýýO/ýiýÙÛ³û’þxU$ðüSþ†ÌSþ4ý ô¨ÿþÎþKÿÎ1`ÿÑÿVÿ­ÿ³ñÿvÿNþÈ0Ÿþ×ý–Äý;þ>]6ýSýo…³öþTÿñÿÿOÔþÇþ}-ÿ»þ¥ÿ/ðÿÿ/€ÿ…ÿ³ÿ¼ÿ«ÿ€ÿs×.ÿþØÿgÊýàý¿ÂÿèýÛþšÿ½šDéü„þv<ÿ^ÿÌþÿäkèýCÿ›î¸ÿþ*“¬þW¢ÿužÿrÿPÿÿQ$>ýŒþ|ÿ•ý¡þÐý÷û þEsüÿàýHþU'ÓKÿ¼ýþžUÙþíüþ Š£ÿ=üþžÈhþ®ü ÿÑ ‹ý˜üqo?÷ýýÇÿèñÜý_ü>ÿ¹Ž'ÿõý$þ Ëÿ¥üÿ(ÐûýÓýDinšÿyþ0þÛ}óýBýBh·þþÖþïcÿÏý°þ?p‹ÿBþSþÐ'©ÿyþþxÿŸÉsýçþÇÿ>êÕý„ý¬Ò’þWþoÿÿ¯ýjþciEÿ«üÜý÷ÿîûGÿñˆµýPþ=Òõÿ•þ´ÿDqÿ8ÿlÂÿŒDþˆþg”Oÿ1ýOÿåìyþÙþÍÿäÿ}¨¶ÿþÿ•tÿ`ÿëÿ*qÿÎþ*¤ÞÿÖþšÿofgÿ ÿûþ±-ÿtþ[B÷ÿiÿðþçÿÜÿéþEÿËÿ˜ÿqC!ÿïýËÿžüÿŒþÈþ‘V9"þ4ýäÂû`ýÆýâÿã9°þÿ%ÿ zþÿ¢ý‡ÿ™îþ(þ SsûþŸÌþ`ÿíÿ~ÿ6¼ýxÿZ?ÿšÿkÿÄÿ³‚þWþºì´þéþ Á:ÿ³ýÿž'Wþöü¥ÿ¿‹;üœýn;þÐûØÿŽ?M,þÂý¦Òmÿ_þ/Á­ÿIÿÃþ€ÿí÷sý þ»IÿÑýlþ@²üìýÅy.þ\ýÿ>tÛþ:ý%ÿ$å?þ©üÏÿ0%ý.þÚÿ¨‘ÿòüÌþ8'ÒþüPÿˆ"¡üü檥½üAüìrþ¨ýOG®zÿÔþáþtÿ€œÿÙþMÿ;*tþØþSdÿ"þÂÿÖDUþìþØÿÊ8oÿºýˆþß6}aþ ýÿûÛýÒüiÿÀ§þ<ýƒÿxrÑÿ7þÿ{ô¦þfþ¬ã×~ÿ ýdþ»$qÿŠûªþæfFþ ýÚÿ¶‚ÛþúþÿûæÍÿ þ™þ}*¯ÿÌþþÿïhþ þbÓ„þ°þ}h‡ÿíÿžÿ‰ÿºÿEÿ™…ÿIýãþçà3Ÿü%ý,j3ývü·2Õÿšü<ýÐŒÿþáüFþS'þ6ý¼ÿG.GÿLü.ÿý¿þ>ý4ÿšÍS«ýøüh߃þýþÌŸþyþ$›ÓýIÿ~;"ýÈý|¡ÿ7þÿêüÿØÿøÿoÿ²þoÿÇTÈý‹ýé >ÿàýÿá…ÿ.ÿàýÖÿO¥þýÑÿL—þ¯ý7iù·ý¬ü¤NC/ý¡ü2ÿt$ˆþÅüþæÔ>ÿEý=þ%“gýÛýy3ª¡þ‰ýÇþNcþþçþäÿõ™]þÄýÿžúþÙûÿÕÿ—û&þÞ™þþÒþ¨qXÿÂýýþ†}šÿ1þöþLòÿþwþçÿì–ÿäÿŽþåþçCùýëüEÓAÿ‹ýøþæø‚ÿ³ýáþ;ÞŒ(þÓý0ëÿUþJþgk@ýþËÏtÿ7þÙþ¤î2ÿ£þL¦…ÿƒþxÿwýþEÿ-ÿ‚•AÿÿDQ‘ÿFþüÿš½þ}þàÿ‡ÿO­ÿØþ6ÿ]ô•„þ‚ýúÿ@Gwþþü2ÿ)!ÿéü*þPJàÿüüÐüû‘4ü¢ý™ ã þïü‘ÿX‰{þ®ürÿ"¿xý—ýÿk ÁþKýÒþF²"þµýÿ+šÁþ‰ýGÿ[G¸ÿ|ýáþ±ÇLWþþrÿbìŸþý ÿ~6ÐþIýÿpï@ýºüjÿNçü£ü3ÌÑýPþíÿãwìýAþ‚LÛfþ¢ýnNAþÁþª«þìþ–ÿ‰°]þ(þÇÿ’4þÈý!Òîþ þGÿ´4ÿ4ý÷ÿthýþêþÅÿáƒþ ÿ2lþÍýOw«ýðþO½÷ÿÿ]þâÿkª;þ þ!{þÿÕÿñÿ°Þÿ¬þ;áÿÊýüÿGñý¹þ]ºÿ,þGÿ¹Ÿ‚ÿdþÞÿAñÿÙþrÿ¢ÿUvÿÿ/Ž:ÿ€ÿÑÿ¶ÿÖÿÀÿ-ÿiÿêþ_þ ÿaSŒþÁüÀÿÅ,Cÿ:ýoÿË.ˆþÈýâÿø™þñý1"ý•ý·ïn×ýBþaÿgô+ÿJþœÿ!Äÿôþ"q0ÿ+ÿ5ÐÛþ‰ÿ`ÿDWäÿøþÎþôÑÿÌþÔþ¤éþƒþ’õÿNþ°þFNæSþúü4ÅñÿþöþE›þïÿïÿTÿDÓÿôþ5Ëÿ2ÿeÿXñÿÄýZÿ õý—þšä†þþ8ÿn¿€Uþ®þÁŽÿ—ýúÿ9d¢ÿ¥þtþ°¥Þý¿þ¹ QUþlþB=dþæý~ÿLcMÿFþVÿ¶ÿìn<ÿÿgÿÞÿ]±ºÿÕý<ÿ=cÿ]þöþ‚”ÿÿÐþÓÿtÿmÿ$©ÿOÿJ¯ÿþÿˆþñÿ„yþíý5Žpþfý1¼ÿý:ÿLÀÿØþ±ÿ˜ÿ—­ÿ‰ÿkÿ-ÿÚÿNˆóýþ³ÖLþ}þÀÿ܈ˆþ’þBYÀÿjIÿJþ` ¯ÿzÿÌþ`¨?ÿþúÿ=Ì?ÿ0þºÿH¬œÿîþÍÿÂÿØÿj\ÿrÿ¼ÿ7·¿þ½þ§ÿ°v<ÿäý^ÿ¢£ÿpþÄÿäïÿ•þöþy¿©ÿbýÇþ¿Š´þûû¬þ?3Wþûˆþ5ˆòþõúïýê+]þ,üŒþù¦Ì«ýïüj± ¦ýgý»ÖÏÿAþ4ÿÿ·îþÿþžÿÙÐþžÿ¼ÿ@s+ÿaÿXÿÛŽ{þ[þÛÏVÿÃþAþKÿWxÜýýwRÄ.þ¨þŠžÿ«ýxÿý2Ûþ¹þéÿn´ÿ#ÿøÿÙ ™þ¹þ75Àýÿ;©è\ýBý[ ´ÿþýjþQôÛÿþþ ÿ#ýÄýìh*"þSþÀÿ´•fþ]þ(ß›þ¥þ½#‚ÿíý÷ÿ°ÚÿÿõÿËÿÿ;oçÿ,þÓÿûqÊþþ!ûcÿØþ€ÿsàÿ |ÿßþ~ÿ’Âÿ·þáþêýÃþþ¯ÿ¤ýóÿ$þYþãÐäÿæý9þìB2ÿÈýPÿ;ÿþìþL³¨þÞýüÿ jYþYþJ2vÿAÿ%ÿ[Ûþqÿ]L’ÿhþºÿëÿçþÿ³ÿ• ÿþŠzMÿ“ý‚ÿÝú`ÿ\ýþIuÉÿý¼ý0»`äý×ývÿk°ìþÀý+ÿ‰  þûýGÿ{bnxý4ý•bæÞý|ýašqÿâýÿ#V’ÿÍý]þgôäÿdýþzr¶ÿÇþÈþÌfÐþ›þ&2H=þnþ6‚ÿ0þ¸ÿÑÿ„ß ÿðþ˜ÿMõÿ`ÿûþ&Ò¸ÿÙþ¼ÿ7Àÿÿ`÷ÿÜÿæÿ¥þWQžÿEÿžÿ£ÿS…ÿMÿ>ÿo>‰ÿaÿ#ÿŸíÿÖÿÁþÿ-¥ÿ´þ—þá~ÿYþœÿÎìŠþ"þQç> ý´þ»DÒþ[þ>JÑÿÌþåþÌ"+ÿÇÿçÿ³ÿÿäÿ‘Øÿàý«ÿ9MÿôþúÿÓaþÖþÓò‰ÿ|ÿ­ÿÃþ‡ÿÕ†Üÿ3þ%ÿÊP‚ÿþŠþ#["DþZýkÿ]þ÷ýÂÿ8[Bþ‘ýEÿø•þãþî`uþcþ—%ÇÿƒþºÿD qÿÍÿëÿæÿÿVÿ¸ÿ•”ÿûþ~ÿ¨~ÿ~ÿ&u>ÿÿÀÿæÿnúÿÿaÿ["¶ÿ2ÿ–ÿ(Õÿ«ÿ¢ÿœÿÕÿµ^ÿÿÿÕÒþ¶þKÿ;¢ÿ{þšÿ“n˜ÿRÿ÷ÿ÷ÿCÿ§ÿÿšÿ]õÿuŒþéþ7ãþrÿF~ÿGÿYužÿAþÁ‰ÿiÿgÿ[ÿþþ ÿ=‚ ÿ»þæÿ£ÿ&‘Ôþ§ÿÞÿxÿ/+0ÿgÿSÍÿ©ÿ8ÿJ&¼ÿöþ ÿóÿ“ÿXÿƒÿO+aÿ ^ÿƒÿúÿª8ÿAÿzÿ<ÿ;þ¬yñÿ£þ™þ7·Pþ¶þ5 3‚Zÿ¨þêþ×,óý<ÿÐñÿgÿ§ÿšÿæÿ±ÿ€ÿ(xÿÅÿ±ÿÍÿCÿàÿ½‘ÿÌþ§ÿW*±ÿiÿ’ÿæÿÇÿüÿ Zÿ‹ÿäÿRÿ7-7êþÿ"·þ>ÿ9Á—þúþÕ[õÿ2ÿþþÿÚwuþþ‰ª™þ·ý‘ÿ©uþoýîþ¾¡8ÿ˜ý¬þ價þvý¾ÿÜÈTÿ>ý®þïøGÿòü•þòKAÿŠüãþ3®ÿ<ýéþék®þAþ˜ÿŒÎÜÿÿþfþ+ðD ÿ·þ3¨lßþrþ³ÿ4ðþìý`ÿÂÿ´þ þf!O§ÿ;þXÿì[Rÿøþ|ÿðF©ÿ}þ)ÿ³­ÿýþÉÿøÿ˜ÿøÿ‘ÿ”þcÿwþÀÿcaþ\ÿæ¸ÿ‹ÿéþoÿQêïÿ’þtþŸ-¢ÿ¯ý·ýI™Bfý€ýqdZùýÅü‡ÿ?Àýfûéÿ›)fýpü§ÿCp¼ýŽü9qýÕý1‡V€ý?þ6!\ÿ"þ ÿR²þfþ6}þöþÀÿE*ƒþÐþs0äÿ„þÔþ»èTÿ8ÿAÿæZÿ?ÿ†Ñÿmÿ ÿ<ÿ× ^ÿÍÿÿ‘ÿ®ª ÿªþáþ¡¶›þ ý[þ$‘Êþ¡ü¿þí™~ÿ6ütþœ>Âÿ$þHþ>õIçþkýOÿ i•þÈýåþ°œ?ÿžýxÿ°÷"¨þ7þ<‹±dþwþ±ÿ̘`ÿ—ýÎþ ‰ÿºý—þt´ ÿUýÿ5’þQý«ÿ±{þ™þ‡ÿNUþ·þqÿ«ŒFþÎþúÿò3ßþ%ÿ“¬6ÿåþqÿ“n‡ÿyþ‚ÿF5 çÿGÿoÿÏÿÏÿ®vÿ%ÿKÿ`7+xÿÐþ1LMÿ.ÿDf¼ÿÏÿçþ?ÿ`æœÿYþÁóÿ°þ¢ÿnxÿ3^ÿÉÿþÿ’ÿËÿoÿ$n dþÿS' £þ¬þw«2ÿ0þ6ÿ8È]þéþæ³ÿÒþ}þliËÿÁüÁþoDãü*þ›Jþ+ýÿwáfþVý‚ÿéȪþ|ý›Uçü[þñO¶þ£üÿ¬3DþvüPÿ`§þÂý'ÿúCþ¯ýøÿì?þ9þ4ÿ9€ÿãþ ÿ£ÿ€eÿ“ý 9€çþþÛ*ÿ[þŠÈ:ÿÿÖÿ™Qÿêþ:ÿµÉÿþýþ ûkÿÝþyD³ÿ2ÿÛþŒEÿ¦þœÿŠÂIÿnþrÿX"Žþ¶ÿ†"IÿOÿÀÿ1³ÿ(zÿÿþ&טÿÊþ¼ÿ-Ÿöþaÿ£ÿ·|ÿ²þÍÿÙàÿ:ÿ|ÿkÿúÿb‘ìþ”þØÿɯÿ*þíÿàÿçÿ†9aþÿã΃ÿþõÛ$þ{þT°éþÿëÿ]Ñÿõÿxÿ?ÿ‹ÿ‚`´ÿ ÿÿUÎæÿãþÒþ3‰ÿcÿÿÑÿjOÜÿÛþÿ ©ÿ’þaÿÁu¼ÿÇþAÿsBÖÿ¶ÿÿIÿЦ4ÿÿ ÿ!ñÿ¡þIÿ«ÿÛûfþþ/œêïýõýWÉ{ƒþËý•óýÐþ»h7þþ>#;ÔþJþ©ÿðâýêý¸ÿØEYþ«ý@ƒ®0þ†þ *{¹þ”þ×}åþ]þ/¼£ÿAþÿÝäoÿ¬þãþt¼ÿ¥þ7þ¨’ÿ_þiÿÐ10ÿØþÉÿ—ÿ”ÿ ˜ÿŸþ" ÿ>ÿ$×§ÿ»þ`ÿ° )ÿ%ÿ‹ÿ³ÂÿôþgÿLH˜ÿCÿCÿ]âÿ»þÇþFVÙÜýýý3é×cþÏý9á•<ÿ¥þU æÿEÿ 'ÿOÿ‚òþ¹þŠÙ£ÿÔþ ÿj›Ùþÿ7b÷ÿ9þßþ[*HJþ{þ†0;ÎþwþMÿR4ÿíý£ÿzÿ.ÿ§ÿàÿ`‘ÿXÿäÿ ¹þÝþêA?ÿ”þ’ÿÂÿdwøÿÐþ¦þ}ØÿŸþÿ%æÿòþÝþ9û­ÿ ÿ.ÿ˜ÿÆ3qÿúþºÿÊÇÿƒÿøþ dæÿvÿßþ¨bCÿ1þ"6*hþÒþ÷cúþÀý:ÿ…?£ÿsý¥þ kDþHþCÿ¥èáþ0þ´ÿCŸ£þSþ/PÿæýËÿG®’þýýèš§ÿþƒþ¿%´ÿ·ýHþª YÆýäý^>®µýýý)Âþýþ(|!ÿîþzÿj›þÛþwõ¢ÿíý*Cþ§ÿd PÿZÿ<«ÿ…ÿçþ(Žõÿûþÿo‚Íÿºÿ"þ©ÿ·OÿFþÇÿsbØÿxÿRþ&þþQûõÿêþýþÁøþöþd¿šÿPþÂÿC†þ¥þÕý§ÿ'ÿ›þLS±ÿaÿOÿËÿvÿÿþ˜ÿÜÿâÿ;þØþŸIäÿyþ ÿbþjþL’LþAþ&kL†þ¬þ>Õ;>ÿúþCÿÝÕÿqÿÿëÿucþÿµgÿ¦þîþ4=Ÿþ’þ‚ÿÛêÿ•þâÿ^yÖÿÃþœÿ<Àÿ£ÿ™¶ÿSþƒÿ쪞ÿãþÿY‘oÿDþšÿ2†ÿøþÿqQ)ÿ§ÿ¯ÿÏÿ Ïÿ ÿRÿ9‚ÿ.ÿÄÿoþÿzÿ>ÿ£ÿ""çÿ\ÿ³ÿ¢ÿØÿ;…ÿàÿ¶ÿœÿàÿ‚ÿÓÿ/7qÿÿüÿþÿ øÿÎþÜÿÄíÿéþKÿ3†­ÿ€ÿeÿ˜ÿUØÿIÿBqÿAÿïÿ$ÓÿGÿ‚ÿwÈÿ9þÀÿ[† ÿ1þ+2ÕÿÇþMÿB^iÿÃþ•Äÿ‰ÿ!ÿæÿYcÿ~ÿ‘ÿuíÿ2ÿÿ}Ÿ”ÿáþúþ·ß ÿ›þTÿ5ûÏÿUþ:ÿ,±#ÿAþ<ÿX0ûþ*þžÿ“ZÿHþ‘ÿ8¦yþ¶þP`5þøþn#Ïÿþ¶þŒ_ñÿDþ´þ¢t7¹ýƒþ†¼ÿÓý2ÿ°Õóÿ¦þãþ;ÐoÔþtþÀÿLÒÝþ.þ|ÿ,ìÿþð¾ÿ…ÿaÿ´ÿàÿn‰ÿÿ^ÿf¸ÿûýTÿô!ýþaþ`ÿltþµýºûPþËýâÿÏÊPþþâÿB´þÿ-«ÿtþvÿ• éÿƒþ†þÛ˜¾ÿ&þHþƸDÆýþÙë™Qýcþî–Þÿ$þ´þˆ[{þ™þT`ÿˆþ’ÿUßüÿþ¡þlõ÷ÿ~ÿöþmÿl(Ëÿžÿ`ÿëÿ©ÿdÇÿ ÿ¶ÿ j÷ÿÿ#ÿéÿ[UžÿÿúÿJ‹ÿåþÅÿð Tÿ!ÿ…ÿ7³ƒÿÛþ~ÿ^f ÿ”þNéþ†þ H.ÿôþTÿfÂÀÿÿþ>ÿ ™ÍÿZÿÿ¸ÿÛ4ÿéþ ÁO½þøþO¤ÇÿXÿXÿœÿ“/ÿÎþ‡ÿ—÷ÿZÿ)ÿÖÿqH‚ÿÃþtÿænÿ¦þ<ìÊþ¥þyû`ÿÏýqÿ'¥þâý!ÿIikÿþûþèõÿ)ÿ 9.ÿ¾ÿ«ÿPÿ¼ÿçÿ ;ÿ ÿ]ÐÂÿ—þûþ•»<þÐþ$ÐJ ÿ’þ¾ÿcSPþÝþ¬Rÿ5þæÿG÷ÿ ÿØþLãVÿÿÿdJ±ÿÿaÿ‚¢ÿØÿúþZÿðw4ÿîþ§ÿ@O§ÿ³ÿGÿ‚ÿQHÕÿÿaÿ&`Ëÿ8ÿ~ÿÄÿ@U¶ÿ£þoÿòJAÿÇþÈÂÿßþEÿ ß>ÿŒþiÿû¦òþÅþD»<ÿ8ÿM—ÿªþ 'oÿôþüÿÑÿàÿ9…ÿûþÇÿááþáþqÆÇÿÖþ+ÿ »áþ)ÿíÿ›ÿeÿ¯ÿ ;Öþ)ÿ¼ÿbª‡ÿÿIÿõÿ :ÿÿéÿy$8ÿ#ÿ  ÿ0ÿ³ÿ[Öÿ”ÿmÿØÿüÿœÿáþ]†ÿÿ)ÿ›·#ÿÁþÂÿõ ÿ ÿŒËÿÿtÿFHzÿRÿÜÿþÿÕÿ”ÿ©ÿ"ÿgÿU‘‘ÿ[þkÿý×ÿ’þâÿ<jØÿ ÿeÿÕÿ}óÿ|ÿTÿÖÿ]¯ÿCÿ‚ÿM ÿ#ÿW7Íÿ8ÿ¯ÿ¼ÿŠ™þ>ÿ{×?ÿÝþ¸ÿMÅÿ:ÿ§ÿ;àÿ¯ÿ~ÿñÿ$)ÿÿoÿ{‘ýþ®þàÿÿŠ!ÿuþ¶ÿ•QÖþ ÿ]süÿ^ÿ)ÿéÿFâÿAÿÿÎØÿÿ!ÿ7yÀÿGÿrÿúÿ&±ÿÏÿ~ÿØÿ ÿ³ÿÕÿ ÿ ”ÿ³ÿÉÿñÿ£ÿ©ÿ ¯ÿËÿ'ÿÞÿ°ÞÿRÿ ÿºÿŽ3žÿ¿þ”ÿÎcÿßþ‚ÿòÎþ¨þh¢ÿ ÿ”ÿYÕÿ%ÿÿnææÿwþ'ÿYC³ÿÕýiÿî(iÿ.þ%ÿȱÿ™þÌþu=´ÿNþ8ÿCn<ÿ”þrÿµ)ÿ=þÅÿE[ÿþUþÖÿpOþ·þ[œÿ ÿ%ÿLY‹ÿ†þžÿMGÿ¹þ¥ÿùàÿ#ÿvÿïÿñÿâÿ¢ÿOÿøÿëÿ´ÿ ÿ@­ÿ#ÿçÿdëÿ<ÿMÿF/Íÿÿƒÿq;'ÿÿ÷ÿ™qÅþðþJ‚Íÿoÿ¢ÿÿ&¶ÿêþ"ª©ÿÿþTÿ¿MiÿÈþzÿŸÛxÿŽþOÿÛŒAÿøþ«ÿS{…ÿìþÏÿ1’ÿ÷ÿÿþ­ÿyL¸ÿÐþÿŸ~ÿjþ:ÿÈ)ÿfþ‰ÿÕõ˜ÿÓý6ÿi;%ÿÜýKÿR  ÿ(þÕÿaHÒþªþîUÿÝþ]kÿÈþíÿ¬çÿrÿ^ÿ¢ÿ<Úÿõÿ¢ÿeÿØÿ+õÿ|ÿ–ÿæÿœÿ+Àÿ’ÿÿ-3ïÿvÿ–ÿÚÿ&+ÿ4ÿQwÇÿ ÿ¼ÿJxÿÀÿóÿƒÿíÿ³>ÿÈþçÿ×óÿúþ`ÿ;HÚÿMÿtÿ ÿ&ÄXÿÁþ <M‚ÿÿ‰ÿ†¿ÿþtþ7òtÿ¡þ¶ÿÒB ÿ%ÿ3±§ÿÐþ¶ÿ{âÿ…ÿºÿâÿÂÿ¾ÿ£ÿæÿ>ºÿûþ‰ÿÊ-ÿmÿóÿ*Âÿ–ÿÀÿÑÿàÿ¸ÿMÿ>ÿ—ª–ÿ¨þIÿhÐ@¬þ”þïÿ¦#ÿ†þƒÿÛÛXÿŠþCÿ(A>þŽþO;úÿãþßþì}uþÔþ9Ðdÿ¿þxÿÙÒ?ÿ”þ³ÿÝOÿ ÿ7 ”ÿúÿ~ÿ^ÿ-¶ÿ¯ÿ+ÿñÿ[?ÿ'ÿ^“Xÿÿ”ÿFÆÂÿÌþÿbÄÿ>ÿqÿ’ÿY•–ÿ»þrÿsð\ÿ½þAÿo¢¼ÿcÿKÿ/ +ÿrÿÉÿO€CÿÖþÂÿÓ@¥þcÿ9̸ÿŽþ‚ÿÛQ6ÿÿžÿ¿Eÿ)ÿóÿ`xÿÿ˜ÿŒýþÿÚÿ]zÿCÿAÿl}Pÿ’ÿäÿºÿÚÿ‡ÿ0ÿ"oÕÿMÿ\ÿþÿ1Øÿ­ÿvÿ§ÿþÿ*íÿgÿžÿÏÿàÿºÿÄÿñÿüÿ!ÿìþLò/çþÐþÝ/ðþéþUÄ>ÿ-ÿÄÿcÿqÿOçÿäÿ‚ÿCÿo€ÿkÿÕÿ§ÿÀÿÍÿ©ÿÚÿgÿÿÅÿ^÷ÿ.ÿkÿ@÷ÿ…ÿxÿ1qÿXÿøÿäÿÏÿOÿ§ÿQrÿÿ„œÿÌþÕÿyMÄÿ¿þ.ÿ¢¨€ÿ4ÿ'ÿ1µ±ÿ¬þ¼ÿS‘‰ÿ¡þrÿªè2ÿuþÞÿÛàÿ€ÿÿ±ÿ®1+ÿìþäÿ1cþìþ¢ ÿdþzÿ}}Éÿÿ-ÿD†‡ÿ<ÿÏÿæÿb¸ÿôþEÿˆ»³ÿÙþ+ÿM¨ ÿÒþ°cÿçþ (zÿ‚ÿØÿ¥ÿ‚ÿËÿ –ÿ>ÿóÿ±ÿ¶ÿæÿ%ÿÉÿbëÿ¸ÿ-ÿºÿçÿfÖÿöþ”ÿ“óÿcÿqÿäÿMËÿ¯ÿ>ÿ‘ÿOy¥ÿÿTÿ¾ÿ:ÿ£ÿüÿ$£ÿ~ÿâÿ÷ÿ±ÿVÿJxÿTÿ"zÿÅÿ5¼ÿ¢ÿ‰ÿ ÿuéÿ>ÿ|ÿüÿW–ÿ.ÿ ÿŽJ.ÿûþÇÿÁÿaÿ ¯ÿÂÿéÿœÿ‹ÿÏÿ&Öÿrÿ´ÿàÿœÿiÿÓÿ’ÿvÿÕÿ/«ÿvÿÿ"Ošÿðþ‚ÿ®Œÿ²þÓÿÂu‘ÿ¥þöþª9ÿ{þ-ÿ Œëÿòþ8ÿõÿéÿxÿvÿæÿ±ÿ³ÿ[£ÿÿ±ÿ„JXÿîþ±ÿ°LCÿöþ£ÿ¢sPÿ#ÿÿõÿ3;¶ÿÿÿް¥ÿÿ4ÿþÿ°Zÿ—þàÿ÷ÿTÿýþÍÿ]&ÿMÿëÿ-#ÿ~ÿ YëÿPÿ ÿ´ÿÏÿ©ÿçÿ÷ÿ‡ÿ¢ÿ¾ÿ1kÿgÿ‚ÿ¢"Iÿÿ {ÀÿAÿaÿ1@¾ÿ>ÿ¸ÿ§ÿÕÿ–ÿvÿØÿqÿ”ÿþÿ1 ÿ)ÿØÿ&$?ÿRÿBfTÿCÿïÿ‰ÿ0ÿ¢ÿ5u|ÿÿ.ÿUìŽþÇþ¢ã£ÿªþiÿ›µ'ÿÿ¾ÿ5>qÿ‹ÿ÷ÿÀÿcÿÚÿÿ^ÿ¼ÿÏÿeÿqÿD ‚ÿšÿ…ÿ@;xÿMÿ\ÿ5®äÿìþêþÔþìþ9›)ÿ·þD*Øÿrþÿ‚îÓÿÎþÿ+ÆøþaÿÄÿ Jâÿ!ÿcÿúÿ„9áþ6ÿbbqÿRÿÏÿQ|ÿcÿÉÿÓÿÖÿ£ÿ­ÿóÿæÿÍÿ¥ÿéÿÖÿÍÿ”ÿ©ÿñÿëÿ¼ÿÕÿÍÿÕÿ’ÿžÿ õÿ÷ÿ«ÿaÿ¥ÿÓÿ*orÿÎþØÿŽ-€ÿÿ ÿ{ÿÿoÿHþÿÿrÿd‰ÿ|ÿïÿâÿéÿ¢ÿ¢ÿÅÿ kÿkÿéÿQ:ÿ`ÿñÿO¸ÿ`ÿéÿH€ÿƒÿ+Öÿoÿšÿàÿ¶ÿIÿÿ]H‘ÿ#ÿÍÿ„Äÿaÿ¸ÿ­ÿFÚÿ¢ÿœÿ ÿøÿñÿeÿ€ÿ FÚÿÿ|ÿwJ‘ÿ ÿtÿ{»gÿ®þ±ÿuW§ÿÿ©ÿ9ÜÿÏÿÂÿ¸ÿÀÿ¼ÿÖÿçÿæÿ‡ÿÿÂÿSúÿvÿrÿâÿ$Éÿ‘ÿÅÿüÿ£ÿšÿóÿ"ËÿrÿVÿ¼ÿ-ÿÕÿ÷ÿúÿ§ÿ ÿ÷ÿ¾ÿÂÿ§ÿÏÿ Ñÿ¥ÿGÿ<gÿºÿÇÿçÿÇÿ”ÿçÿ5¢ÿ‡ÿšÿüÿþÿÓÿ‘ÿ‘ÿØÿ´ÿ¥ÿžÿKÿžÿsS!ÿtÿ Öÿæÿ–ÿ¶ÿ(ËÿMÿàÿ@­ÿšÿÇÿÉÿžÿüÿ÷ÿÿ’ÿàÿ€ÿ˜ÿÚÿœÿžÿ çÿ«ÿ…ÿ´ÿñÿéÿÕÿäÿÍÿIÿ ÿ7ÄÿkÿcÿHcÿ€ÿqïÿ0ÿiÿ(†±ÿðþƒÿ$líÿvÿ!ÿÓÿ-BÑÿÖþ ÿ„`tÿéþ‡ÿ°Hxÿ8ÿÇÿïÿ>ÿzÿ1qÿ.ÿÅÿ‚;-ÿÔþõ+yþûþ³¤ÇÿÔþrÿ€wÿ.ÿ@o”ÿ'ÿqÿ[‘~ÿÛþ©ÿSÿ ÿóÿ]LRÿ<ÿÑÿu2ÿcÿ1Hñÿÿiÿ^…ÿXÿÓÿqÿóÿÓÿ­ÿ§ÿÀÿþÿšÿ2ÿñÿ>§ÿ ÿÏÿ@¯ÿzÿ¶ÿ’ÿóÿyÚÿ<ÿCÿ©ÿÿ˜ÿ(SÂÿEÿ€ÿ-óÿ…ÿ‹ÿÉÿ©ÿtÿ­ÿâÿøÿ¢ÿiÿþÿ¶ÿšÿ¸ÿüÿ‰ÿiÿÕÿõÿÑÿTÿžÿ+*¾ÿmÿ-ÿõÿŠ?ÿIÿ¾ÿ+ºÿ~ÿ ÿØÿØÿ‘ÿ”ÿÑÿF´ÿÿÀÿu1Cÿÿ5¤ÿÿ‹ÿd<…ÿoÿ£ÿ¸ÿd¶ÿÌþaÿÊj‰ÿìþ ÿøÿ† >ÿTÿ­ÿ`>…ÿÿžÿFMÿKÿÿ“Äÿ+ÿ^ÿJõÿ‹ÿ2ÿÕÿïÿÓÿÉÿÿÿ1+¥ÿ+ÿÀÿ]…ÿ'ÿïÿŒ ÿ-ÿ ÿ ÿÄ–ÿ%ÿ~ÿ(Ž¢ÿPÿPÿ*$‰ÿÿëÿDrÿ^ÿæÿ…ÿXÿÂÿ1±ÿZÿeÿ‚©ÿGÿ§ÿ äÿÿkÿúÿOçÿ8ÿaÿ1Qäÿ`ÿzÿ±ÿ;óÿ¼ÿÿ¼ÿäÿ¼ÿ ºÿ«ÿ¥ÿéÿÓÿØÿ¸ÿ³ÿâÿ©ÿÅÿäÿËÿcÿƒÿ> Ëÿ?ÿ‹ÿM5zÿZÿÞÿ<Äÿÿœÿþÿ÷ÿËÿrÿ¶ÿ÷ÿäÿiÿ¾ÿÜÿæÿÑÿ´ÿ¸ÿÑÿÄÿiÿ£ÿÚÿþÿqÿ«ÿüÿ¶ÿ§ÿâÿºÿ|ÿ^ÿ“âÿ ÿ0ÿ9ŸÄÿ-ÿgÿ÷ÿ©ÿ…ÿÍÿ ÿõÿ*¢ÿkÿäÿ+¥ÿ:ÿâÿB :ÿGÿhæÿoÿqÿÀÿ(³ÿRÿ¸ÿ kÿ­ÿÚÿ­ÿÓÿËÿ³ÿ¸ÿ¼ÿ¾ÿÀÿ©ÿÄÿ³ÿóÿ£ÿcÿøÿ Óÿ§ÿ‹ÿçÿ ÂÿÿÀÿëÿÏÿ"Öÿÿšÿ^+Rÿ…ÿüÿ ÍÿCÿºÿU|ÿiÿ‘ÿïÿ~ÿTÿïÿOÚÿ8ÿ ÿS1‡ÿÿ”ÿ};³ÿ.ÿ˜ÿ ±ÿ˜ÿ¶ÿ©ÿóÿ9§ÿ’ÿxÿàÿþÿ–ÿTÿ¾ÿ`Zÿ+ÿçÿ€Tÿ'ÿÜÿ5âÿÿxÿs]vÿáþÏÿŠMÿ”ÿÇÿ÷ÿ Çÿ‡ÿTÿñÿ€ëÿÿþ…ÿþÿF*)ÿ^ÿïÿ@’ÿòþÀÿ†DcÿÿÂÿ€F'ÿÿ® ýþßþ °LXÿþÁ ÿ^ÿVÿ {Ïÿ8ÿ\ÿ;BgÿÿÕÿoOoÿöþäÿˆçÿMÿXÿOÚÿcÿcÿ;¾ÿcÿmÿóÿsþÿûþÿ/7¾ÿ\ÿ«ÿ÷ÿ ‰ÿPÿþÿ*Ñÿ–ÿ€ÿàÿþÿçÿÖÿ‹ÿ©ÿéÿšÿtÿäÿïÿ‚ÿqÿ"¼ÿgÿ§ÿ1øÿÉÿ~ÿ‡ÿäÿ>`ÿeÿüÿ3ñÿ‘ÿEÿ­ÿ>„‡ÿÿiÿ1®üÿÒþ%ÿd¨Þÿ´þIÿн«ÿÒþmÿnhžÿ2ÿšÿ` ~ÿiÿéÿíÿ ÿ¢ÿÕÿïÿ¾ÿâÿ«ÿ§ÿíÿÄÿeÿ¼ÿ5‰ÿ>ÿÑÿ" §ÿrÿÄÿÞÿ”ÿ¯ÿ©ÿ>‚ÿ‚ÿØÿ7Gÿÿ Çÿ.ÿvÿ$<Öÿ|ÿ’ÿæÿÜÿÚÿÜÿÖÿ¸ÿ¥ÿ´ÿüÿïÿºÿØÿÄÿ–ÿÕÿØÿ’ÿ‰ÿÓÿ3¾ÿ–ÿÇÿÓÿ’ÿrÿ&³ÿ´ÿœÿ¢ÿüÿ íÿIÿšÿD…ÿoÿÂÿFüÿ‡ÿIÿÉÿy@šÿáþ|ÿj¹”ÿÎþ|ÿhÉÿ-ÿ!ÿ · ÌþOÿLoæÿÿZÿñÿÊÿþÿ-ÕÓÿìþ\ÿj^ƒÿ8ÿ‰ÿLo­ÿÿžÿL/ÿIÿþÿ*Éÿtÿ ÿ(þÿ§ÿ‰ÿÂÿ5ÜÿRÿ¾ÿ÷ÿ¯ÿ–ÿÜÿÓÿøÿóÿ‹ÿ€ÿ£ÿiÿ¶ÿ+–ÿeÿÚÿñÿ¢ÿ‡ÿÅÿøÿÜÿ4ÿºÿ;*Øÿ:ÿÿ+ñÿ‚ÿ‚ÿÄÿ3Àÿ”ÿÓÿ¶ÿ§ÿÑÿÿ WÿAÿ‘ÿqBzÿ:ÿÖÿDøÿ±ÿ~ÿ¯ÿ÷ÿÏÿ‘ÿ ÿçÿ Óÿ¯ÿzÿ÷ÿ+¼ÿ‹ÿ§ÿ±ÿBÿzÿ¼ÿ Þÿ\ÿœÿMàÿ!ÿ”ÿ$-«ÿ´ÿ…ÿÚÿ žÿ~ÿ…ÿL¼ÿTÿ|ÿ/Úÿaÿ­ÿØÿ+ºÿ ÿ ÿÖÿØÿþÿÀÿ€ÿéÿñÿÕÿ¶ÿÜÿºÿÉÿ±ÿàÿ¸ÿšÿàÿ­ÿ–ÿ¾ÿ¾ÿƒÿÀÿøÿéÿ¥ÿ ÿ¶ÿ€ÿÅÿ÷ÿØÿkÿ£ÿ¸ÿ©ÿ–ÿ¸ÿ(©ÿ|ÿ±ÿ ¥ÿÿàÿÜÿÜÿäÿ‡ÿÖÿ¥ÿcÿÖÿrÿcÿHbÿÿÓÿjkÿ%ÿqÂÿ8ÿÿM-Rÿ\ÿ<øÿmÿ€ÿ¾ÿ(~ÿTÿúÿBÖÿIÿ¢ÿ<&˜ÿMÿ«ÿFþÿÜÿ‡ÿCÿØÿ]&Mÿ\ÿ 1õÿgÿ~ÿøÿÓÿœÿšÿËÿ<Íÿvÿ–ÿþÿÇÿ ÿžÿ÷ÿØÿéÿäÿoÿ…ÿoÅÿ2ÿ‡ÿ$YœÿIÿÏÿàÿ­ÿÂÿ´ÿÅÿÞÿ Äÿ˜ÿ¯ÿ¼ÿäÿD©ÿ^ÿ ÿ&1­ÿmÿ¾ÿ ÷ÿšÿ…ÿÕÿçÿ–ÿƒÿóÿ3³ÿ^ÿ¯ÿ;õÿžÿtÿ¼ÿ ñÿ³ÿ±ÿÕÿ¸ÿçÿÑÿ–ÿÉÿõÿñÿ¼ÿxÿ§ÿ ¢ÿšÿ«ÿ¼ÿëÿâÿËÿËÿÿ´ÿÞÿ’ÿ§ÿÑÿàÿ€ÿšÿÉÿ<âÿzÿ~ÿïÿ Üÿ­ÿ…ÿÕÿ"Ëÿ´ÿÿÇÿâÿäÿÍÿ³ÿ¶ÿÞÿ÷ÿ¸ÿ€ÿÂÿüÿ¼ÿ‰ÿeÿ;Õÿqÿ‘ÿ÷ÿ(ÿ‘ÿïÿëÿ§ÿ­ÿàÿëÿàÿ¢ÿ”ÿÑÿ÷ÿËÿïÿÉÿrÿÕÿÇÿäÿ‚ÿzÿ ´ÿšÿÄÿÑÿ÷ÿäÿ‘ÿ ÿçÿÂÿÿÇÿ¼ÿ€ÿæÿéÿàÿ ÿ¯ÿäÿñÿ«ÿËÿÉÿÉÿÓÿ­ÿÓÿ´ÿºÿÇÿ±ÿøÿæÿ¯ÿ”ÿÀÿ$æÿeÿ£ÿæÿÜÿ©ÿxÿÄÿúÿ$©ÿGÿÂÿ] eÿrÿÀÿ]øÿ^ÿvÿñÿ&æÿÿZÿÍÿYMÿvÿéÿDÕÿÿ–ÿÖÿËÿ­ÿ¢ÿéÿžÿ…ÿäÿüÿäÿ´ÿÿ£ÿ Åÿ\ÿžÿ3"žÿoÿ«ÿúÿ(’ÿÿÉÿïÿ÷ÿ¾ÿoÿÅÿDËÿrÿžÿõÿøÿ´ÿ¸ÿÑÿÇÿàÿ¶ÿ±ÿüÿÿ‡ÿÇÿ «ÿcÿóÿ ³ÿ ÿ³ÿóÿ"¯ÿXÿ˜ÿL9’ÿ!ÿtÿuy–ÿÝþ‡ÿ]ÿÿ‹ÿYD¯ÿ<ÿ¶ÿ9^ÿ‡ÿØÿ§ÿÿÉÿñÿ Âÿ€ÿ¯ÿ+ zÿoÿñÿ;ñÿ|ÿ`ÿÚÿ5‚ÿAÿïÿ+ƒÿIÿ±ÿ7L‰ÿcÿ–ÿñÿ7 xÿ8ÿÑÿJ žÿ%ÿ˜ÿL; ÿGÿ¯ÿ3üÿ³ÿaÿ¶ÿ ¸ÿ–ÿžÿÍÿDØÿeÿÿ÷ÿ(Ïÿ§ÿ”ÿžÿ5§ÿaÿ«ÿ Äÿ‡ÿ¼ÿúÿ¸ÿâÿÞÿºÿ–ÿëÿÑÿÍÿóÿ¸ÿÿâÿºÿ¥ÿ©ÿËÿëÿ£ÿ‰ÿéÿ³ÿÿÑÿëÿþÿ§ÿ ÿÖÿäÿúÿ´ÿ¼ÿÉÿºÿàÿóÿÉÿ¯ÿ¾ÿÇÿËÿÕÿñÿËÿÇÿ«ÿÚÿÇÿÍÿõÿ¾ÿ«ÿÇÿÖÿÜÿàÿäÿ–ÿ¢ÿüÿ+«ÿÿ–ÿïÿ-Íÿÿÿñÿ3ÍÿoÿÖÿ÷ÿÚÿõÿ±ÿxÿÖÿ&æÿ­ÿ¶ÿÿõÿ ïÿ’ÿ‚ÿçÿúÿÿÿÉÿ¸ÿ~ÿæÿ§ÿ¼ÿâÿÞÿ”ÿéÿõÿÏÿ´ÿÑÿØÿÇÿËÿõÿçÿžÿ–ÿÓÿ ¯ÿmÿçÿÚÿ§ÿ£ÿÄÿäÿâÿƒÿ˜ÿØÿ”ÿxÿÖÿëÿ¥ÿ¥ÿËÿÑÿçÿúÿÀÿ’ÿ¢ÿïÿ(ñÿmÿxÿüÿ*ïÿ€ÿeÿàÿ9úÿ~ÿƒÿ´ÿ‹ÿ§ÿõÿ<©ÿeÿÇÿ"Óÿ‘ÿ¼ÿæÿºÿxÿ’ÿ(7žÿAÿ’ÿUw‘ÿòþ ÿou‘ÿêþºÿJF¶ÿ6ÿÿ53³ÿtÿƒÿ DÍÿRÿ–ÿ3ÉÿVÿ‰ÿ Üÿ…ÿ~ÿÏÿBqÿmÿúÿ"Þÿ˜ÿÿçÿõÿvÿxÿ(ºÿ‰ÿÍÿÜÿÓÿØÿÑÿÇÿ¼ÿëÿÚÿ±ÿ­ÿïÿþÿœÿ¥ÿÕÿàÿºÿšÿÕÿçÿ¶ÿZÿÀÿ9‚ÿrÿÖÿ5Üÿ¥ÿ¥ÿéÿäÿÖÿÂÿ³ÿ«ÿàÿ €ÿeÿüÿ5óÿ|ÿtÿÖÿúÿÅÿ€ÿrÿüÿ^ÍÿXÿ¢ÿ ©ÿ­ÿØÿÏÿËÿ±ÿÏÿñÿÖÿ¸ÿºÿäÿÉÿ¼ÿñÿ´ÿ¯ÿËÿíÿÖÿ¯ÿ¶ÿïÿóÿ–ÿ«ÿúÿíÿ¥ÿžÿâÿ¾ÿ‹ÿ¯ÿÜÿ´ÿ­ÿÓÿâÿÉÿËÿ©ÿÞÿçÿÚÿÓÿ ÿ´ÿâÿÇÿ ÿÄÿéÿæÿÑÿ ÿœÿøÿ5¼ÿ^ÿœÿ/1zÿÿÏÿüÿrÿšÿúÿ–ÿ¶ÿëÿäÿÄÿ–ÿÄÿËÿœÿÿ¼ÿ‰ÿÿ&¸ÿcÿžÿþÿ(¾ÿƒÿ´ÿÂÿ çÿ©ÿ­ÿÏÿ«ÿþÿ€ÿmÿçÿ<ëÿ’ÿRÿØÿS÷ÿoÿ6ÿñÿoCÿRÿéÿYIÿqÿóÿUÚÿTÿ–ÿ ©ÿ’ÿÅÿõÿéÿÇÿ¸ÿœÿóÿàÿ”ÿÖÿüÿÑÿ³ÿžÿ¶ÿõÿÉÿ~ÿ¸ÿÜÿ¸ÿÓÿÀÿÏÿéÿ¾ÿ¾ÿ¾ÿàÿüÿ±ÿ ÿÖÿÚÿ ÿœÿÚÿøÿÅÿ±ÿÄÿñÿÜÿ¼ÿ­ÿ¼ÿüÿäÿÂÿ–ÿ¶ÿëÿÿ ÿæÿäÿ˜ÿ”ÿøÿúÿ¼ÿ‹ÿÄÿ÷ÿÄÿ‰ÿÂÿ÷ÿñÿÕÿ‡ÿÕÿíÿæÿ«ÿ¥ÿÞÿÞÿÓÿÅÿÂÿºÿÕÿØÿºÿÄÿñÿÀÿ¥ÿÅÿËÿéÿÅÿÏÿÂÿ¯ÿØÿàÿÓÿ´ÿ§ÿéÿÖÿÀÿºÿÚÿâÿºÿ©ÿ¼ÿ éÿ±ÿ ÿ¶ÿÞÿëÿÖÿ˜ÿËÿñÿºÿ¯ÿúÿÍÿ§ÿ³ÿÏÿäÿõÿ–ÿ¢ÿéÿþÿÍÿ¢ÿÓÿºÿ±ÿóÿíÿ§ÿžÿÓÿéÿÚÿ«ÿÄÿ´ÿàÿÅÿ`ÿ¶ÿÄÿ\ÿ–ÿ5«ÿrÿ­ÿÄÿrÿ¼ÿ æÿ¸ÿ˜ÿÕÿÓÿíÿÍÿ¾ÿ§ÿÏÿóÿÑÿÄÿºÿ­ÿÓÿøÿÖÿ ÿ³ÿëÿþÿâÿtÿ´ÿïÿ Éÿ‚ÿÂÿúÿ‘ÿ˜ÿÞÿâÿžÿzÿÏÿ(øÿ¥ÿ€ÿ­ÿ/‡ÿ€ÿÇÿ–ÿxÿœÿ13£ÿmÿ«ÿ*œÿ‚ÿâÿïÿÿ˜ÿñÿÚÿ~ÿ¯ÿíÿ$¼ÿxÿ¾ÿ´ÿžÿ¼ÿ ÖÿšÿÉÿóÿÖÿ¸ÿ¼ÿÏÿÖÿÚÿÅÿÏÿÇÿÉÿÉÿÚÿÜÿ´ÿÕÿÖÿ¶ÿÉÿëÿÑÿ´ÿ©ÿüÿóÿ¥ÿ¥ÿ¼ÿéÿ–ÿ¯ÿØÿïÿÖÿ«ÿÇÿÄÿæÿéÿžÿ±ÿóÿÕÿ­ÿÉÿØÿéÿÅÿ§ÿ³ÿïÿõÿºÿÂÿÉÿÑÿÀÿÇÿíÿÇÿ¯ÿ¼ÿÞÿúÿÄÿ¸ÿ§ÿÜÿ Øÿ‚ÿ‘ÿøÿ-Ïÿ‚ÿ’ÿóÿ ëÿ£ÿ¾ÿØÿ¥ÿÉÿøÿæÿ˜ÿÄÿäÿ¾ÿÞÿçÿÇÿ ÿËÿþÿØÿºÿ–ÿÉÿ÷ÿ³ÿšÿ¼ÿíÿüÿ¯ÿ«ÿÕÿÖÿÏÿéÿÂÿ”ÿËÿéÿ¶ÿ­ÿ¶ÿõÿâÿÖÿ±ÿ¥ÿÀÿñÿõÿÂÿ’ÿÉÿõÿþÿ´ÿrÿÖÿíÿ«ÿœÿËÿúÿÞÿÍÿ©ÿÂÿäÿçÿÍÿ¼ÿÍÿÄÿÑÿâÿÖÿÇÿ§ÿÑÿõÿóÿ¸ÿ©ÿÀÿïÿõÿÅÿšÿÅÿþÿÂÿ‹ÿ¼ÿ ±ÿ ÿ«ÿ÷ÿ ºÿvÿÅÿïÿ ÿ ÿâÿþÿàÿ«ÿ¸ÿÓÿóÿÖÿ«ÿÖÿÞÿÖÿÚÿ±ÿ¼ÿóÿÜÿÀÿÅÿÅÿéÿÄÿÀÿÞÿ¶ÿâÿäÿÀÿÑÿÂÿ¾ÿçÿæÿÏÿÀÿ¸ÿéÿñÿ¸ÿ¶ÿÚÿóÿÜÿÄÿ”ÿÉÿ÷ÿïÿÂÿœÿ¯ÿ ¸ÿ€ÿ­ÿ*±ÿaÿ±ÿ Åÿqÿšÿ$±ÿ–ÿÂÿëÿüÿØÿžÿ©ÿéÿäÿÑÿ¸ÿ«ÿñÿ«ÿ¢ÿàÿüÿÚÿ§ÿ£ÿâÿÑÿ©ÿÀÿØÿëÿæÿ§ÿ©ÿÓÿÜÿ‚ÿ§ÿ÷ÿØÿ‰ÿ¢ÿøÿÉÿcÿ¾ÿøÿ§ÿtÿÓÿ;ëÿrÿ–ÿ Àÿzÿ³ÿïÿ­ÿ˜ÿÄÿøÿ ¸ÿ‰ÿÂÿõÿ÷ÿÞÿ€ÿžÿñÿºÿ¶ÿÅÿÚÿàÿÑÿºÿ³ÿÓÿïÿÓÿÓÿ´ÿ´ÿÜÿøÿÅÿšÿËÿ Øÿ¼ÿ³ÿ¾ÿàÿïÿæÿ–ÿ³ÿøÿøÿÍÿ’ÿ¥ÿ vtwm-5.4.7/contrib/vtwmrc/sounds/pop1.wav0100664000015300001300000001122610237645271017217 0ustar callumfidRIFFŽWAVEfmt D¬ˆXdatajVÿŸþÍý¿ü·û¶úÖù ùXøË÷{÷U÷Y÷–÷ð÷xø$ùôùúúüdýªþxù'½@ °  a ¢áñÒ IÀ LC7ûsï-> º @ È ) ~Èð3Wnþ”üÓúù=÷žõçódòñ·ïî’íì½ëë»ê`êBê/êMê»êëßë‹ì‚í”î³ïþðWòâó[õûöœø_ú!üÀý¥ÿV¤,À) † ç ò ò äKÓJn=ü“ýT†§ ¨ 1 Ö\á\Ù!–ÿíý?ü¸ú(ù©÷8ö×ôvó[ò8ñYðmï£î î¨íUíí í*íqíÊí<îëî»ï¬ð¯ñÁòô?õ¯ö øùû¡üFþ¾ÿRÞXÊ5ŒË û  Ü ¤A¸GiV#ÛeÂR f i F þ×X´8¿2ÿÂý;üàújù'øàö§õŽômó†ò¼ñüðjðäïïOï$ïFï\ï¯ïð¬ðBñóñÝòÉóùô öF÷‚øÔù3û£üùýVÿÙ)¡0wÀ » £ w ; Ö FÂê3·Wò l ° é ý  ð¶y-ù–9çþ•ýEüþú×ù¦ø÷közõ“ôÇóó†òïñœñ`ñ'ñ/ñBñzñ¼ñ3ò°ò`ó ôìôÇõÏöÖ÷ùúWû–üÂýÿOœÝ*gŒxd @ ÿ ¯ S  ' t ” § ‰ n #  D   D e x{ƒ`8ë®xÿAþýìûÀú¬ù­ø›÷¹öòõ#õyôÑóqóÿò½òƒò†òŒò¨òåò:ó§ó1ôÝôƒõMö.÷øù#ú1ûCüoý—þ´ÿ×"/-2<Ή 0 È E œ ë ( / /  é ‘ ' Á " „ ¶æ)3)!ôÖÿÈþ¤ý¥ü•û’úŸù¸øî÷(÷Wö¼õ9õ°ôUô ôíó³ó«óÉóõó3ôôõƒõ/öÝö÷`øSù2ú/û;ü#ý7þKÿLcOT`/¤_ ˜ þ n ¿ ö  . # î · _ õ ‘ åJ›Þ,;iv—‡ˆÿ¡þ«ý¬ü½ûÜúú9ùzøÃ÷2÷ ö5öÖõ‡õNõ0õ!õõ?õƒõÃõö•ö÷§÷MøïøÁù|úbûEü/ýþÿþþÿÝˬ˜g@BßríC š Ë ý ÷ ù ê º ~ - Í5µ&ÈKn ºÒõÿ ÿ3þ1ýxü›ûÖú,úpùÈøGø®÷N÷õööbö3ö öö>öUö—ö×ö7÷¡÷ø¾ø>ùîù©úoû4üüüÙý²þvÿS*À’^›Pä\Ê7‡²á  ëá°_¤B©!ŒÑ-žôHÿÈþèý:ýtü»ûûeúÐùBù±øKøøª÷…÷2÷$÷÷÷=÷l÷¬÷ð÷Gø©ø/ù¦ùIúçúû;üýºýpþEÿÊ1â¥T÷{õ@ ÝE;E*З<Øpùhë>’êD’ÕxÿÁþþýGý¶üümûÖúKúÐùwù$ù¼ø~øKø/ø+ø!ø4øTøzø­øüøQù·ù0ú«ú/ûÆûnüþüœý]þ ÿ´ÿ[ ¥U–+ž-¤ÿk´ú"F\^Q:Ó¥Tý“ÿ{ï>œ L­ÿÿtþ×ý3ýü ü‘û$û˜ú6úçùŸùLùùóøÕøÓøÑøùø ù5ùpùµùúkúÖúWû¿ûWüßü~ýþ¡þGÿéÿq²6ÑUÚE¸$È%ZxzƒT=ÔsÄRÛUÝkË4ª‡ÿîþ[þÂý6ýÎüJüÓûjûû£ú]ú)úÖù²ù£ùùù—ù¤ùÁùåù,úiúÔú(ûˆûûûeüãü\ýäýnþûþ‘ÿ¤§/¦!ŽúV¸ñF{Ÿ¿×ôáã¬_Ñ‚'Ôlù†‰†ÿýþrþþ‰ý ýŸü2üîû“ûIû ûÖú§ú‰úpúLúRú\útú–úÃúøúFû|û×û*ü˜üüügýàýBþÈþ<ÿ¸ÿ1°,”€æDŸã@tšë ";@- üÕœe4á›9âs ®2½DàÿIÿôþ†þþšý:ýåü”ü0üóû±û`û>ûûûäúÜúÜúÞúøú û>û€û ûòûAüŽüðü>ýšýþýuþÐþGÿ¶ÿ-›÷n´-„ä!nŸç<Z‘x‰oX>ß›R¾f´Læ{&ºÿCÿéþŽþ,þÏýiýýÉü’ü=üüäû»û›ûwûoûZûhûsûŠû±ûÈûðû2üeü«üéü-ý‰ýïý;þþýþ\ÿ¾ÿðLŽë:ŠÕCƒ¬ÅáòòëÔÖr3ÿ¾‚3á–%á‚DÖÿrÿ'ÿ·þþ&þÓý€ýEý ýáüüvüPü,üüüüüüüHüeüŠü²üïü%ýqý¦ýþ?þŒþÛþ+ÿ‘ÿÜÿ7“Ó(v¿G‹¯ñAaeƒˆƒt]J.îÑ™ZÞœc ±jÉÿ€ÿ+ÿÛþ”þBþþÍý•ýQý+ýöüÎü«üŒü’ü…üvühü}üŒü›üÇüÞüý3ýfý¦ýâýþcþ²þýþKÿ˜ÿâÿ bªÿGºò-W‚½½÷ ïàÌždFÞœl(Û“QÍÿ‹ÿAÿÿ½þwþ7þþÜý‹ý„ýSý+ýýòüåüÜüÔüðüáüúüôüýIýmý“ý¯ýàýþcþŸþÖþÿXÿœÿÖÿ[ÛXŽËíMd„¬ª±¬±¹½ª‘€X5ÚºƒE×]Øÿ§ÿoÿ)ÿòþÃþ†þnþ*þûýâý¼ý‡ýuýmýiý\ýSýVý\ýXýqý‡ýžýËýâýþLþpþ£þÎþÿ4ÿqÿ¾ÿñÿ J™½6[šÉØí'BDkhboWS-àǘr=áªdFÚÿ–ÿ^ÿ4ÿÿÛþ’þnþBþ"þýýÜý¾ý­ý¢ý„ý‰ýý‚ý‹ý“ý¯ý¾ýÊýùý þ7þUþþ·þÔþýþAÿiÿ˜ÿÜÿ ;^ »ý%Gl­ËÔãüúúçØ¾’vV9굓](þÿÍÿ©ÿvÿKÿ ÿòþÐþ£þˆþWþLþþþïýäýÞýäýÛýÓýÏýÍýõý þþ þLþaþ—þ¥þÊþðþÿXÿ~ÿÀÿæÿþÿ1Q}¦Ð=_xš£¼¿ØÏÔÜ˶¸œa4#ùÓ»ŽU@àÿÂÿ‹ÿrÿMÿ!ÿúþßþ»þ£þ„þrþRþFþ3þ$þ5þþ"þ&þ0þ7þAþRþdþŽþ¥þ´þÎþ ÿÿAÿoÿÿ¸ÿÞÿøÿ"Fj•·ßô#LReztzš’|zzccE6äΠod9 íÿÓÿšÿ’ÿ^ÿ?ÿÿÿÔþÃþ¶þŒþrþdþRþSþJþDþ;þ7þ9þ9þYþaþyþnþ{þ¨þÌþåþåþÿ<ÿcÿ|ÿšÿºÿéÿ$UoŒ¬ÌÌê%0;AP9LL6;ÿæÐÁª†nL/ÞÿÓÿ±ÿƒÿ~ÿTÿ6ÿÿ ÿðþÐþ¶þ´þ¡þŽþ{þnþ}þnþlþuþþ}þ”þ¨þŸþ·þÒþéþÿ%ÿ?ÿVÿtÿƒÿ¼ÿÍÿëÿQ[w ®·×äûÿ ('**!(%%æÝƱˆ`F;"ÕÿÉÿ£ÿÿoÿ\ÿ<ÿ2ÿ ÿÿþðþÖþÎþ¿þ¿þ¶þ®þ²þ²þ¬þ¡þ¹þÌþÖþáþìþÿ ÿÿ8ÿPÿ€ÿ‡ÿ’ÿÀÿØÿæÿ+;Mo“ »Ùááõ÷÷õýûðòãßÎÈ¿ª‘}nS;çÿØÿ´ÿ–ÿ‘ÿkÿiÿPÿ<ÿ!ÿ ÿÿúþêþßþÐþÖþÇþÌþÌþÊþÃþØþØþåþûþÿ ÿÿ-ÿCÿ\ÿoÿ‹ÿšÿÄÿÂÿâÿüÿ*BWhqŸ¦»ÁÈÕÕÙÌÐÙ×·µªˆ‚nU@*(üÿóÿÞÿÂÿ±ÿ£ÿxÿ‚ÿ`ÿ\ÿ:ÿ0ÿÿÿÿýþûþðþÿþìþòþßþîþúþÿ ÿÿ'ÿ#ÿ<ÿOÿXÿeÿ€ÿœÿ§ÿÂÿÅÿéÿ 7HUdyŠ—Ÿ·³ÁȽµµ»¦ª¦Œ„nWYH+úÿ÷ÿÞÿËÿÉÿ¢ÿ£ÿ‚ÿoÿmÿXÿKÿ>ÿ0ÿ-ÿ%ÿÿÿ ÿ ÿÿÿÿÿÿÿÿ8ÿPÿIÿZÿqÿvÿ‹ÿ ÿ³ÿ±ÿËÿíÿúÿ *9@^hdyˆ‚ŒŽ— —Ÿ “Œ“†{sdMS1/ëÿÖÿ¾ÿÉÿ±ÿ‹ÿ‹ÿxÿgÿVÿMÿRÿ4ÿ6ÿ4ÿ'ÿ)ÿÿ%ÿ%ÿÿ#ÿ)ÿ#ÿ8ÿ?ÿ:ÿOÿTÿmÿ|ÿ‡ÿ‹ÿ¥ÿ¥ÿÅÿØÿÍÿúÿøÿ +BHM]`l‚}„ŠŒŒ‚†sdSLO@>&úÿçÿàÿÖÿÅÿ¸ÿ«ÿ–ÿ‘ÿtÿvÿgÿXÿMÿKÿCÿCÿ>ÿ2ÿ<ÿ?ÿ8ÿ'ÿ>ÿ:ÿEÿTÿPÿeÿoÿ‚ÿvÿ‰ÿ–ÿ«ÿ¯ÿ¼ÿØÿäÿóÿúÿõÿ<<BLO`]nybusbh^b[[LQ75  úÿñÿøÿÖÿËÿ¾ÿ¶ÿ§ÿšÿ’ÿ‚ÿxÿvÿxÿ`ÿaÿ\ÿXÿMÿMÿRÿKÿVÿRÿCÿIÿ`ÿeÿoÿiÿvÿ|ÿ‡ÿ‚ÿ”ÿ¯ÿ³ÿÀÿÏÿâÿÞÿñÿõÿüÿ$&(+3DHOOYU>HUODH@5&++øÿëÿéÿÕÿÓÿÂÿ¸ÿ±ÿ³ÿÿÿ‘ÿzÿkÿ`ÿZÿ\ÿIÿVÿ`ÿIÿPÿAÿOÿ?ÿGÿMÿ^ÿ`ÿgÿgÿtÿrÿ€ÿ‰ÿ”ÿ˜ÿ£ÿ¶ÿÉÿÉÿÇÿïÿâÿøÿøÿ*/*/3;J91/&"3((÷ÿíÿëÿÜÿÏÿÅÿÀÿ¸ÿ­ÿ¢ÿ ÿœÿ‘ÿ~ÿ€ÿrÿoÿkÿmÿ`ÿiÿ\ÿVÿVÿXÿ\ÿmÿtÿ`ÿeÿkÿqÿ…ÿ|ÿÿ˜ÿ§ÿvtwm-5.4.7/contrib/vtwmrc/sounds/touch5.au0100664000015300001300000003602510237645271017363 0ustar callumfid.snd#;òV"touch5.wavþäþœþhý¾þþXþƒþãÿÄz£¯awëÿýÿNÿq1R ÿ¬þ~ý„ýüÛüñüÐýæÿbàÜP»*ÿçÿó7ÿÿ]ÿ±þyü:úWú_ûöÿ~†Žÿ{þtüçûÏú‚ú6û/ý%ÿÒ§Ev°ir‚oXþ,ünù«ö¯÷øóùÙøg÷¥ø üÿÂü^û0ÁE¹$  :L»º× ™þMîåÜó̸ÄÅCÌ÷ÙéÏþÌ$ý5w@ÔGcG¨At4ì$¿~ü(äóÍ ·¨E¢£Í°DÆàwüdç&œ9ØMÎYå[aUJ\; (’Öõ1ÚwÁl¬(ž™™J›ó¨G¼KÕÑóÇÑ.EwVÀbf›c{W|Cö+Úlò+Ô"¹Q£h•®‘W—]¦þ¿Ü2úâí4ËL¦^ŸhXhg`èQÚ<ž#aêêÎb¶Ø¤2˜¹–'…­„ùޚý,î6ñL[bbb¥\sO6:§!ùäìMÏóµf ½•¤”s4¯TÈäþ»!C:•NÓ]eÏeÛ\¤Kc4~Šþ>àçÄè­ï P›<Ÿ«{¾Öõò ³$»9;GéQ"SéPFs6¯#\ùgå҄áº]·Ã»úÆWÔúæ¤ùt &è&…-E0W/ù,½&Ct £Cõ ì4å•àôßîâàçÕí2ò÷ýpŽOö 1 ¶  âÿÿÁýÜüûAú@ùéúLûPüný¸þÒÿÌ|»QAßÿþXÿ !¸£@xV|÷™×UóuÿœþRýHüˆü üpý[ýYýcþÿna|JÐ0Ì•­õb*uÿ ýXü'üû«üÁþ’5²Þ•ª¢ðbÄþäý¬üzû™û-úÑúiûbü–ý;þÿêhuɃ]´tè­ô=ÿý­ýÓþ&ý0üüwýÁþHþö+ךÁ¨’x1S.gì :ÿúþ¹ýeý¤þ0ýàýKüBüAþ ÿ™ÿùÿð<˜ôŽýõü÷þå'ª¥ßvãÉÿ‰þäýòüèûÐûaûoüÃþþá?.lœœ»Ø'$þ*ü'úûûügþÿ¡ÿ›ÿþ’ýôýýÊÿS¢Í´"¯ÿü3HÔ¸.ƒwå¦P íÿôÿDþªþoý¥ýýý©ÿ8ÿ„ÿìt ç‘ËÓ“Îû`~¬‹7ÿæþàþDþçÿöÿþÿåÿ£0Ù_[c,ÌOÿœþŸý°ýýjþÃÿ䯉EÖ„øÈ´{µ„Lÿíÿ¢ÿþ/ý†ýqýûþÉÿ%þÊþný¼ý¬þ½ÿ”ÿÒÿÆÿÃÿTÿÿðÕÜ}ݤç«ÿGþþký½üÍüÂýmýþ ÿ†ÑT®XS  ¸‘¾ÿôÿBþvüÅûeúIùÈùìû6ý"+mÚ :&/¦ùœNÿèþ ü3û-û;üÒþåȱÿèþòþ—ÿÿ¢ÿãÿÔvïÖ&ÿÜà DìÆ-ÿÆÿ]ÿ ÿ¦ÿÁÿ­ÿ–ÿ<þ£ýßý/ý8þÿb@±J=Ù8ßa«øþßü)úYùýûŒý‘þµþ£þþÖ’†ÊÀ¶7È%ªnÿÔÿ¸Iÿ}þrþ¼+ÿøþÅþGþ(ýïý8þ+ÿˆÿ¨øÏØsVW"úŽ·ÿþ¯üòü]ýfÿoÿáŸ5ÿø¢ï*ŒŽ þöÿ×ÿ2ýÆý\þ}wÂ4fäþXýÃþwý‹ÿ#†ÿpýý¬ûø÷úûþ–Ó_&¸ÿ‚T-þÌ7žüåýD,0Óÿþký)ÿdÅþóøý®`øáú˜bdÿäá'î¬ ãþüï5w§ #ߺپøÙþ¸óÁß/Ùìã @Âþ¾ëÅ#qzêà÷¾ \Ïêõd’-)(Ä'¼öãý ÐöÚî+‚vÜ;Ñ”îÉò$y‘ò™í†÷ŒàòÒ5õ:$x3šEüåüI§ùèðÑëóÛ·Õæ ;1&X÷Yñcxú ò¡ )]׋Àx×ý|ÿ"*,T+"ÿqÌÑÍþ Ðø éŸðçJÝ™÷<],“(Î Óép÷T\‡éZìý(ûyäíÜqÿ½-É*ãõü±Aú²õªA*÷g··îg#,ʉÔ#UˆÚ9Ô‡ó­‘Tàüåy4øŽè·þ]%«2SÚóYó~!^ð[îò›îÂéKäÌó%ÅIË&ýîFá‚ø. Iƒ÷É ƒÇþö˼ÂÞ* 3+&¢8g$—û•ÊÙÒtj'+×å*ØÏítûaýõ "-#ú‡ý ã¦÷v MâñÚñî=÷ñî$ïTÊ5…/ ›ïñòüÁÿ/ý ¬¯å#­ê¼Å/=t9þ‹¿f´ÜרöG ïù¯Øàäà ) Ñôþz"*.­®ï`ïijZûåXÝéÞ„çúø â2`Gà à©Ðþð@ Ü ÿ5Ê óöÍËñÅícæ1”'‰v´øåÌ·ØÊÅ(UÔÕ„Ï·ô& ÃÖ‚ môßåvþI"ÖkÛ1Ííç§ý¸þÂÑ>4W+·1å ê´ù¦ˆ “ü[/Õ—¯¡Õø$†K5.¿Ñ Pÿ"ã=âøþ¬y±êæÔe𤠩÷mÿî ù# ïâ¤ìs× ô#Ò<ÏÇàý~(!ì63AM5΂Ðçü€ƒ ù÷ÿqïþÒLÙÎ%(»2‰Ô±ïMËéiTèˆÈ Ü|%4j(V 5ó•êË Ý)ŨÄÝìë m ý Ôb4¿&PóÖ×QâoúÉ BúWõ ù2×ßÃÿö8‚F“#Eù—ð–ÿíëêúöºúå4Û¤÷6#d÷GûpmõeßÕóÕµëÄ¢Ê2ë”Ô*a"›+e1WýÄøÑ<ú¦pòÄë¢÷ëôZâ–ì§(ë.Lûõ“ûAõáÚhòŸ›¤à=Í\ñ0·@‚ßù“óÌöóûœõFï ³$¹øi½íŃøÊ‹®vL/¡é}Ò)ãÝã“ ÑæâjôœèáT ö7ë8YêëÑ ÏcùÇîô ÷Ïósçé…6:=šï>ð ü ¯ó‡èx%5§Ùï¼XÓ…0¡0-³ðàÆ¶Ú 9ùÝã±áAø%+÷êü\ß(%lYìù®èÿ_æƒìøü&óÚ§ÞI ;º9±è,åžüÅ å*ý®Äßð¦Ü’àŠû6z!õ¥Âù:ñâî%ò)× ?,é#Øßý8p.&AýñûðÅö§ÒçüÁìÈââäÿõ 2ÊÆ‚ Éøÿó7õ9ä#í-ØzÖ‘ñ**/´)[a¶ð¥ìïáú#õuû)ëìãÊéþÉNÚ ¯ûuñÞïåúQ ä ÷öàÔÒáU9&u,/g »øJï÷óƒüæÛ IûñÃäõã–ñÏ0) ñüµò¼ñ÷Ë}{kçÔ{×tö†ä.v& ¸ÿð,ïÅøp­ %1ø"ç<ßÁèã/RT#ÿtõ¬îÚñJ~1ô7ÛÕíì„ø-*+ãú’óMí ñîû¥{økè%Þ¼ãöí!|Ä_ õÿÊöÁôsýÔþà¥ÐÙü_(  oõÿí´ñ›ûiP¨ ÷Qè”ä,ðïX¯öVŒóîuô(ö…¹ìHÖ¦ÕoïV…)˜$;üüíïaïwø| N ¥þ·îäøêjþ[Ê»SÀ‡óCëÇí>ú3  D÷ÕÞ’ÓÑã• Û,¬1; / iõìòñ›û©¸ ©`ð0áŒßKîiét3†¡Èõ;ò-ù ¬èÔ™ØöVÉ-L#¿Vü°îIíÖöÙ„B+ÿ´î‰ä¾ê$ÿ%Œ¨‚ ¹õ*î÷ðéþ’ª Lô­ÜöÖðêÆ¶,y+L+AñÀêïfúCH SòšêëDù´Tn ©5 ÷Xì:êiòý‘ {üiߞ͜Ór÷ù"$®<zgÿý[®~ ‡ùjìÁêšð¹óµìÂâ«Ù ÑóÑèÞ_ô„ê54=Â.ì¾7%÷?cH 4œ)è7À}§z¢<ª¹GÊÔÊÜèíüû´CebjbP‚9Ù$×ç^ýfê›Ä¬š€…FªÖzñ=ü&® ôP/FHÓ^chÈaŠI) Ÿ÷[ì9äUØ´ÆT¯›$”’¡|¼“Þuª%3\DEQ]Zã`¥]|PP:ˆ¸ã5Çé¯õÉ–Nšd¨‡½YÕUîŠÙ"¦:N5Z]ÒYtM¬<õ){÷ÜßõÊ·Q«p¦™¦×®h¾×Õ ð =&9¾HûTeZjXM¡<¸(gJû¤â/É|´Ù§w¢W¦•´Ê`â û¢Ò(ß; H;MêKÚDQ8>(ßÕxï¼Ý+ÎßÅOÀÊ‚ÉdÔ{âæó½ÞŸ#Š'Z) (W$÷æ îýÖôíé!æàåZæRêDïpõû¸ç < Q î Î ¼ ¯x+åcý‘ûuù=øY÷™÷øËü:þrÿ\Ä5µVßÞÿýüžýmþ!þÏÿØ.O“ÿ¹þö0ŠIõÿ9þ˜ý{ýNþ“ÿòÿ]ÿZÿ#þlþþ£þ¯ÿ‚ÿ÷ÿiÿ ÿ·oK¸&6ÿ’þÿý0üeýGýÊýìÿ-‡Ê=¾ATÿýôýkýÄüÞû[û³ýýðÿ_™å)¡E…=5œýÿªÿFþ[ýüpüèüÂüëþšbؘT`å­X3ô+?fΖêvÿ‚ýìýeýVý‚ý‘þØ^fÿ1þ£ÿÿšÿŒÿ×uÁC± š6z1ºÿ`ýü5újùùûüxýžÿ±ÇãsN ˜«ã/e@ý¡û¬ûû½üáý7ü]ýšÿDÿ@þÿÿ§©×‘ÞW”"n‚n‹ÖÿÖþYþþÅþ»þjþ¦þéÿÿOÿ§ÿ…ÿ¯ÿ›þêý„ýËþ+þ‹ÿ¤Ê7;ÿ´þ;ý÷ý’ý ý‰þ_ýlýýâÿ+ÿÏÿäe™Dÿ`ÿ%ÿß#¢£ä*3þ™ýbý^þwÿ ýöþ ÿ—Êvÿ¥—”Å6¡9ÿþþ®ýóýäþ)þ,þ-ÿÿåAþVý? <ÙD½)ký[ûü¤ÿßí<¸‘çþþ»þiüúþúÿHüÍÿ¹ Ñ"Èÿþÿrur^ÿnû7•ÿú&þÿü€r÷‘åšö÷ ü Wû5ôöìŸäøè9ŰÏý¬õD$þú»ß í/Ü ÷ªîN+fæ…çîýúo~¨ýjö$ õfÉ¥Ð.ô{ŠwþÜøàxúª„¥ùîòÇø äôâ’Y"a$ñ ‡ô˜ûµ ŒþÝñfüeþ×òNâ5é}o2fHðäðÞþI.ö÷AL Í.ÕþÐœê› ý ¨ò •„îÁÐÉᦚ{ íðëÁóê·êÁÑ!ŸtýëD˜%ëvòþAø.æÛê œ*÷þ:öªýÚøŸüËXmèp¿ÐÑî'ù!ḉ&øBÛFâCÿÎõíøvà&îÃõ$î€'%Ó&Xñvúé šTõfô¬òþí+êwëT,ò7v Îä·èˆ„ \9IMññθÓ\öeà$ý ±X4ê¹ÏÇçÜø þžßãÐúk.Ñ'?J ýòNêžÿ áÁå1öeùòDûä . ŸøcíBô¢ý»qÿIoÏ ðØ¬½†â÷ A8b$T ò ‚ïðÚ¬äMÿ… Îïzáÿýtêù8 • ·™ûÝèÎö Ä ~ôØå³ãqèç÷8?2ý2Â××ÝÞüÐ MJüB"ê®Ò˜à™¸!ê&—ì1 ­ Œç×Ô`ó foîÛÔWãùW§ »ç ¤þíÞî Û¨ûñ×èÞ ÷† 6 s³+BxíMã/ïDü޵ü*ùÑHÊÑþÖ4l91ÖÿzþÕòôLå—ñð÷þü äºäV C#· Òõ·-¯òç'þÜ ÖçÕÞÝvñ âþ 1–&TëiÉ`ä1 `ÐüùïþÿîêÞÝmó¹”($˜ úÑ`ƒâïÛ$«DõÞFÖû(ß*'ýï»ÿYúÉïµõÎÚ5ëXÉÜݸÿt ›!r*‘ ôçà—òDö=°ñ¶ö~ñ½ÕËßæü9}-® ´ñø*þ î[ó^þný¶ó:â×ìãû,£ 'òÚþ+î_êgN æ-ØÙÊ&ÞK¶"@"PS&5Ãâ¹Éªè€oãQíñàüÊóÌì]þeÕ&«!4iòì:céíâÊý• Zô½×õÜí ˜8]-8Ö÷K÷§üAþ&õ=ú_ÆÙãØÆŒá4 sË EK!?£ßaÝ3ôMÊûmãÌïâûïšùÜ J5³"vúÑåpôÙ Cåò”ï2ôŠöŒóYìû#Ï0n ðµü Ckí±ñß½úÐÏÉëÛ†.geæ{ ]âÁÓ‘óÈSùä|íÔCýúÿJLÞôY몥 ÆøŒì¾õú–í^á‹õ%}6C#ëþ)ç>íÇ@‹ÿVþƒüíèƒßSîn RAµ/ öñnñºüY ç +øLä ßï¾ !i#Ú¼ó¶ñzõ¶üm¹eùÃíéð‘Mµd UúïôÓôsü² ä ÕúýäïÚä‹~!'òÅöÁï¶ñÁøw ìöê¡çÊñõ&ÊÂo æÿÐõzò÷QÔ?í¶ÞRßï÷ò(!JÐüUï˜ðuù8N šùYëüåfê÷üµx¶Ì÷ ñ‚óÙÿæë .÷üá‰Ú^êt x#ð$»LêöOñŸ÷ ÿñ 7&ò@èéuø] ìNMy Fü‚óòèûP -âÿãçÛä@Ïâ'%‡ ôúañ`ôüB õÔéuæ—ðˆÄøÓ —;öbòÃ÷bá~ëð?Ýkܺò’b$®Qÿ+óñå÷ý¬ ûýçð'èì]üÏ.:¾vù{òÌóÃý‚ 6TüyåÿÜçŠi•"‚‰]øãòµõøýŠ øõ,êøé3ó”úob( ôÿ$ö¬ôŸû ™•ZíìÞàºø<#Ÿ_ ÇüªòMòoù®í ŸÔýï…è¢îdÿqúƒnã÷ÔóÅ÷Uv) †÷ÆãjÝ–íy ä!n!JŸóiïëö¹ í Þ‰ò£è¥é0ö¿ ÒïH0iøsòPóÐý\ nkëÿà!æþј69ùð”óKû{É Óù÷îGë,óÈq$F84üºõ’ôÓùþ¿Å ÷æèåô¶ –¦ 4þ.ôWóBø©ÿ [øó˜õñý—‹ ”Œ¡ÿ•üHûü®ÿaþÝúyööóûl‡d ¦ÿÿqüíü„þVÿ¿ÿ ýû€û)üjÿ%••Ü3ÿäýÄüÏý(ýøýYûMú_üF”ˆÛßþéýèþ ýàüïüêýPýøÿÊB¨Ýƒ‘Ïìÿâÿÿ þöþ ý ü´üÍþ œù¦­6ÿÚÿoÿEþØþÔþ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcÿøýøûCù.ø¥ù‡ú~ýro¨Û‘8w‚Ù_ÿ'ý¯û•ü'ý¤ý¹ü×ùëö+÷ºýøWóËün Èõ]¯c }KQ)2ö&ã°Ó ÈUÆÊÈÔÚåøO ¼õ.[;B¥E@½6M(ˆwëÔ½¥­}¦‡¦«°(ÃÜÖ÷й!$2*GÀVY TÙL='*CgüâéÊD´£±šš·¦S¹hÑì• €'?·RW^¥cla VÛEm.Ý÷5ÜÁ´©á™“¼—३»fÖÿõh‘/ÝFùVê`d^¯QI>~%Ä ËïæÔ5º?¦Ìš§—iž˜®Ã[Þtüfø2VGvWšad_hR‹?t& #í%Ñ~·¡ý”û‘Ç› ­ÅsâLÃÊ:O–^weÖfP^1LÂ5ǯÿ¿äÉœ±à¢¿œ{ŸAªû¼ëÓšîD ½# 7»GO¬RÑP^G 8#%ŸtúÇæLÓËÅÀ¼ÿ¹¼íÅ÷Ô8åæ÷—â$±-ë21-q'ä¼¶ö‰í%åÏàKÝ’ß(ãæêGñiøTþÕŸ ¸ ÷ T ž Ø †Š¦ÿ üÂüfüTü‚ûúuùçûhüVý‰ÿË0»vf÷8þüþmþ~þjýWüíý2ýþÿ–ÿ‡xªcì’ÿpýêýëÿ@ÿìdÿæÿ?ÿ„ÿ°ÿŒÿ·ÿrÿÉÿ$þcÿ|ÿ„þ?ýŸþ¬ÿ=ÿ ÿÍc(ýõÿ±~¨ÿÊþü•ü£þ9ÿ/ÿ‚ÿ´þ}ýxýÎþ¿6H4ÀôA rþ¥ÿX–L_o¦]rÿ<þ!þÿŠÌFÔãþ‹þ|ÿQþ]þ¦dÿ.þS~9"U¢ÍvNþù˜ùGü_ü™ýx£þâþgz¥ÿ̲ ãKkú²ü½|û^øPü­ü…І“â¥äÑs€÷ ÕÀñMÞûô, šÊÑòþP¯ yâÖÝü%œ£í°÷¥geôpà`ñ[b,rø¨ £+)Ø4ëày½s¹[v‚æ®Õ¶ëv +MLøî–ûbïcÛ}ïÄý,rülô]Ý:íêíŽTEö}ãÓÙÄüÉ0­,Gÿ^ïqýþîÿæõ¥z"bæÇ»ÔLõ¢:Uâð"ºÅÖ]Ñy÷ T‰]íºó}ó”鯸9T(%ƒ êJìY &ñëžèˆú´!ïOâxù$ÿ-­ öù íý¢óô &#UÅæ¹^æN+åÆ.ù Ûå^Öíh U yéµãÀüÇíDõáI,HáùDð£’$ö‚ïÝóQðøìðêXñ°¡>Õ+ô³ßHñˆñïøˆûŸ úÚßÅ!ÞW&Ç&™Â„BÓ•ÐBûÞ!è ëŠÙ×íVþ±ÿJ> 7Ý1å…ð‰ýêSÛ’ì#û÷yõ z/ÿ/â híëôû»ý‘û} ",ò@º¼&ù¨3Ó:p¸uåsÚñø QÓÿuß5â?r4úˆøÔ,(]®ðÿéç³#ìlã.ä ë˜úA %‚>µ'»êoÏkè:B õœ >ÆÛ«Ê¥çé *C&Y«4¢×eÔɉ'uárÑíΠ* ? ϵ Àú'é™÷/~íàÒãEüÇÞe®*W,‹ãTâñ†W xw©ìmÀnË)ôAà9³˜ý Ôì àô$ ˆ öÿÛãº"pöy "“ fìÝè8[Õ*ÝòÑ^Ûbôí¾f%I6z ÝBÊ îmÁBû=ü‹àÚØ¶øÊ­-^% ªüÍ5צÝü ë‡úËÓlÓnn.b$\B¿ûÛîžüý"âÜÍŕ
  @ë(/+õßOáõþ Ö ÿÀñTù÷ë Ìñå">Ä)Úãî³ûÎiøËì[öã\û—ëëÛlñ0#¯(èþ®ó¼ йèîíŸ$ìÿIÐÈȯᣠ$Ú´*êL×Í˯òÞÔòú1ê{ô%úJëïêå±, \ÿ¹ö€ zá÷åš.ë ÐbßíÆ='ÊÅùqü<‚õ¢i –Òk¾‘㛥@i¹"Ã!úBÙîÞHø‡7õpãaó}õæªüp)"9WNöLçYý68íkíuó0ó_ìjè;0Q.¤°ñé Àýžëá÷Ê܃ìRÂnÇLòg!]/½uè×ÔÔÒýÛz¡îNÞ¶îõ\ýú« × ›&‚Àóðû,.ñMêâõìõäãvÜ­ûï+.;o–÷©çÚö\8Ýÿ¬öXßÚðÃ|¹?l þ™ô¸ïuð<ý <ÈïxÝMß>öt(£&Ùcôìò°öÒýYÿ‚òLæ”äêðÁ]uû|duû>ôfô@þÛ p Fõ›Þ¯Õ–äÁÓ%Ô)Y–$ö‹ï#ðÎøúÑ ŽôdéµçÖôõ ¾\íÐ ký’óßðõ÷D =èàÙ›Üüù+gá=ÿ‚ý|üÂý$ü/úïû‰ýû c…‹ëz]ýûü\û®ûÌýFþPþEþjlÉZÀãÿeüïübüGüüÄýþJwÿtzõ<ÿ^ÿÿGÿŒÿ”ÿUÿ þÑÿCmj#×ÿñþÿÿ\ÿ ÿnÿÿ*ÿ ÿ·JfÂÿ;ýàþ*þ ýrþBÿ¥ÿ±ÿPÿ~ÿWÿ/ ú —-Ão+ÿrþ·þ!þeþÐÿ6‘ì6?þ¼þ1ÿÿÏÿ©ÿþÐÿuÿâÿÅÿAÿ,1u3Êà þîþTþÛÿâDIÿMþAvtwm-5.4.7/contrib/vtwmrc/sounds/pop2.wav0100664000015300001300000000261310237645271017220 0ustar callumfidRIFFƒWAVEfmt @@data_€€€€…‚€€€€€w~Љgly€‚‡€€—|“¢¨ª‰hL??;?m—¾åñ¸€X3+e°ÁѰzN//o–¸ÙÁˆ\77w¤ÅáÉ`?#;v¤ÅáÝšk;;y¦ÍÝ´w3H}¦ÍÑœlD#+`’Åá¶|D#D|¦ÉÙ¨xN+J€¬ÕÑ–mH';s˜ÅåÁ‡\7H€°ÍÁhF7DqœÉͲ…\BNh‹°¸¤‡eHJg…¢º´“tT??Vx•²¬’h\jy¤uX^€‘”`Xiy…’¦¤€\D/Bv˜¼Ñ¶„\D?Lx ÁÑɘmF33\¶Ñ¾e?;Ln¶É¼rP?Rw²ÅŘpR;/T}—¸ÑѨ‡`B?PTd´—¦ sk€n^}¢‘¨|Tlqn˜Š|TH?Pm‘´¦‘~fXLR|œ¾ÕÙÅ’mF/7^‚¬¼¤ƒkJD`‚¢ºÅ¼—xV?/;^Œ²ÉɶŠjN;?l“¶ÍÑ´…`H3?gŒªÁ¶pVLf†¤®´¬‹sR?Be†œ¦¤ˆsdT\vŒ ¬¤–‰uwƒŽ„p\VVh|“¬°¬u`Xev‚˜“…znfsƒ—œŽzk`Zn‚‘¢® ƒtts~‘—›Ž{\Vj{•‘‰~pq{ƒ˜¢~yvz€‡’’“srqn~…ŽŒ„usy€Šœ¦˜Ž€smglv‹’’‘…€|vy~ƒ†„€uroqwƒ˜˜Š€~€„„ŠŽŠ‚wtqxƒŠ†€|uu€‡‰‹~~~…‰‹Ž†~ut{€|}€€ƒŒ‘˜—’‹Œ„|sqqr‡Š‰Ž„€‚€‚ŒŒˆ“ˆ€€z€…€€‡‚~€€}}€€€ˆ‹‹Žˆ„‚~€ƒ„‚ƒ€vups€‚†Ž‹†€~xu}ƒ„‰„€|~‚…‰‹…{{ƒŠŠ€|uvz€†ˆŒŠƒ€|€…‡ŠŽŽ‡„ƒ‚ƒ‡Š‹‰{wzƒŽŒ‰…ŠŒ‡ƒƒ‚‚‚„‚€z{{‚ˆ‹Œ‡€~~€€ƒ…ˆŠˆ…‚}zz~€„ˆ‰Œˆ„€~€„†‰‡…€€€€€€€„ˆ‰‰‰…€}yvy~€ƒƒ‚‚€‚†ˆ‡†‚€}~|~‡‰‰†~~…‰Œ‹‡ƒ€€€€€‚ƒƒƒƒ‚„„†‡ˆ‰‡†…ƒ‚‚€€€€€€ƒ…ˆ‰†…„ƒ„††‡ˆˆ†ƒ‚€€}}zxyz{€ƒ…†ˆ…„„‚„„ƒ€~|}}}€€ƒ†„‚€|yyvz€‚‚€€€€ƒ„………€€~}}€€€ƒ€€€€}|~€„††…ƒ€~~~€„……„ƒ‚€‚„„ƒƒ€€~„ˆ†…€~€„‡‡‡„‚€€€ƒ†…„ƒ€~||}€€‚„…………„„‚‚€~zyzz{€‚€€€€€€€~~|||}€€€~}zyyy{|~€€}~~~~€€~{zz|}€€}|||}€€€€€€€€€€€€€€€€€€ƒ‚ƒ€}||€‚……„‚€€€€‚ƒ„ƒ‚€€€€€€ƒ„„……„‚€€€€€‚ƒƒƒ‚ƒƒƒƒ‚€€€€€€€€€€€‚€‚€€~€€~}|}~€€€€€~~~€€€€€~|zyz|~€€€€€~}}~€€~~~~€€€€€€€€€€€€~€€€€€€€€€€€‚€€€€€ƒ‚ƒ‚vtwm-5.4.7/contrib/vtwmrc/sounds/chime3.au0100664000015300001300000001253510237645271017324 0ustar callumfid.snd#:¬Dchime3.wavÿÁÿþýüAûªûùïø*ö4ôªóIñòðÏï×ï/î­îeîDînî¿ïïûðÅñëóZôšö!ø ùÓûÊýÇÿé"„Ûø o Ö?–È >‚’…!Z#($Ì&p'Õ)*;+@,1--€. .P.Y.U.-Ë-T,¡+Î*ã)ª(f'%Œ#å!ï À€C  @Ê]ÿMýúµøXõõómñî¸ìCéÓçVä·âdßéÝ«ÛaÙ#×-ÕFÓnÑòÐQÎàÎÍCÌÐÌŠÌ›ÌúÍÎ Ï6ÐNѽÓjÕ×@Ù|ÛâÞ¢áƒäŒç¶ëîAñ¶ô÷ø#ûFþS&¿1„ ¦ a ­ 5؃úu¢Xr¿ nª4ÐlÈ"{¿àþ&ƇOÕC¶MÈ„É1~ì( 6 @ • ¿°Jæe¤ÿ…ýgúãøöóPðéî&ë†é æ¯ä$áØßÏݻۺÙâØÖ~ÔÃÓ‹ÒOÑ3ÐsÏÕÏÏ=ϩРÐÓÑÒ˜ÓöÕ´×ÁÙðÜ‡ß â%å èKësî£ñõõ`ø´û½þ¿{Æ   Ñ`zS »a­ï.X‡ÖXÞw)µ…(ñ—5Æ=|š«W‚‚×ÐnÊ ' è ×—8Ç"þ\û’øÙõÞòýðìèéáç1änáãßrÝÛ0ÙK×°ÖBÕ6ÔXÓxÓ Ò|ÒlÒƒÒÓ ÓÔ_Õ=Ö!×eØ¯Ú ÛÁÝxß*á7ãŠæè»ë\îKñdô§ø ûrþû_ß ]}|R¨”]Õô÷£î ¹pžèýþÛµI8㜄"ØÓÄ ó þ V R ª í T¼Â{,éÁ]ÿ®;¸]‰Ÿÿ…þü»ûQù“÷™õVó2ðâîìhêèæäFâºásàß¿ßbß*ßßißÒàˆázâhãŽäÄæçƒé êŒìí¨ï/ðµòRóäõ÷øÝú_ûçý’ÿ½±"Žö f Ä ý H\Q³1VY?æÊ…ýž$ËI Ù y ³ O ê   ½ s  ‰ Môm¾@ù‡C!{¿} M ® Ù Ù µ r°±OzþLûùù­÷ô}ñüïgìïê¦èhæZäjâáá˜àdß„ß Þ©Þ·ÞÑß3ßðà²á²âÁäå—ç è´ê“ìeîbð—ò»ôâ÷]ùÄü4þ„½: J  ’2ÁŠnÕÿ öÑxL6ãêÉÔÙêþ GS‹q‹u)ð{¢× Ë œ ^ ( ɨœYb‡¨ÿÏÿ/þmýÇý6üVû™ú®ù©ø—÷öô€ó5ñ…ð îKìïëé÷è·çƒæaålä­ä#ã­ãbã5ãOãrãìäMå+åôææèé'ê“ìí{ïgñ<óLõd÷öúý=ÿÏ¿h Ô røL—–Wñ]x‹—W»¥$f½Ö?\ ¬  “ɺÊÞ,¥9àŠsÿéÿºÿ{ÿ#þ÷þÓþµþµþ©þŽþ‡þ¿þÏþÓþèþ¬þÊþ›þ©þ\þ ýáýnüÉü1ûTú}ùŒøŠ÷¿öÌöõ;ôvóÝó<òÜòxò*ò4ò-òKòeòóó^óÕô:ôâõIõÛöDöÅ÷%÷{÷Ýøø‡øàù9ù´úûoüeý–þ± hîýƒ ` µ  ÷ ¤ø5ÓJ½ þ A 9 G / 6JoŸ¿&•†4ü²‘gc¨Ó¤æA¯Hå˜>Óœ=ÅZÎ 7 H } _ Má@WCÚ=aÿJý=úÅøÉö§ôfòƒð”îÕímì7êüêTévéèÃè´èóéXéÚê_êüëêìÜí¶îÙð$ñòNócôõâ÷.ø¿ú0ûºýLþèŸ*!—K¼  † ä2-0îjè:>EÜu¯’êlÓ$ p Ñ  | À ÙäËÔº„g#ÿÒþÚýÎüîü1ûrúñúÁú²ú”úµúíûCû{ûÁüüŠüñýDýZýqýKý-üÜüYû™ú¢ù|øy÷@õüôÝó¹òƒñOðrï„îÒî=íÙí¸í]í_í¸îî±ïqðhñ•ò¤óøõ˜÷ø¥ú7ûâý‹ÿЄIý· b  ¬/†âÕ—/“£r(q©¯‰> Ò V ² 3¾wê´Ž‰zÿªþíþ+ýýü¯üOüû¶û™ûMûûúÀúžúvúfúUú ú+úú4úvúÅûû~üü‡ý ý„þ þ¥ÿMÿ׺{³Ã¿SýRÿ½ÿ þqýÃý ülûÊûúúùuøÙøK÷á÷Zöñö†öõîõ¯õ¹õÔõÿö;ö™÷.÷·øƒùqú¢û§ýþyÿÛSÖPµ _ o n D  ’ ä û ò   G • }}lYNIILh¹ÿ…ÿ3þÖÿþþÿ=ÿrÿÏBzã]¬*|6›ø>k¾ÓÛØ£dˆy¶"N\ÿCþAý ûâú§ùjø*÷%öõôJó<òò1ñºñ]ñ%ññ ññ]ñ¥ñÛò[òÒó_óòôŒõ8õÿöÓ÷™ømù@ú$û0üeýþÊÝcö  ~  X×Öòê$H5 ¾ H•†ˆ i  Þ —5ÉQâ„-ÿËþ”ýüiû™ú›ùÞùTø±øAø÷á÷·÷¬÷³÷òø'ø¥ù=ùÄúcûû’üiýýƒþ2þÆÿ(ÿ{ÿºÿåÿÛÿ¶ÿdÿþrýÇüêüû7ú;ùxøŠ÷Ý÷5ö ö\öööUövöö÷†øø÷ùËúûŽüzý„þOÿQU5ýë¡\ª?à„ë 7 } Á È   k k k k ! ÷ £ïE´ºâø @Fÿyþ¥ýèý"üeü ûtúñúQú;ù×ù|ùcù6ùùù/ù/ù^ùxù˜ùìú;ú‰û7ûâü˜ýˆþjÿ~”™‹–8ùãL–ÚÓ{B­õ1% ʧ?þûý´üDû)ùÚø±÷¾÷öNõªõ]õôíôôõõ!õ•öö‘÷.÷áø—ù2ùÿúãûùüúþÿ,?a_ƒzk,à¨W¼  E H 0ø‹ýe¨Û"L¿,¼LòeGCGJoh¤ÁØò1*VO'Á‚Cî‘1ÿõÿºÿ—ÿyÿ]ÿ3ÿ,ÿ ÿ#ÿQÿyÿ˜ÿ´ÿÈÿÔÿÔÿ—ÿ]ÿ þ—þ ýgü²ûÊûúcù¹øéø:÷œ÷ö»öGõüõÇõªõŸõ˜õÔõøöNöÂ÷@÷¥ø6øàù½ú_û?üýþ7ÿ`”Ü:YÈx È Ô ö ä ä©lhͺ‰)¢ š C Í yÎ<÷†þ®ýxüAû0úUù˜øÒøXø÷°÷†÷÷]÷t÷’÷Ãøø'øuø¬øäùjùÀúhúíû{üü¯ý@ýåþ€ÿÿuÿõUŠ"Zq"É`ÿ¶ÿ[ÿ þ¼þ€þfþ5þþþþ þ>þ:þþ©þ÷ÿJÿ~ÿ´ÿðNp¤¨«¨…†Bÿüÿò$N½ l}þYÀUÅ%]Ÿ˜‘8£ S­ÍãçÿüÿþýSüšûæû8ú”ú$ù×ù…ù/ù#ùùùùuù­úú—û û~ü8üîýuþAÿ ÿÒ‘QôËn:ßpšöL–—_ÐæÞ¸}<ÿðþ—ýjüAûúù@øƒ÷Ø÷Lööö¤ööoö†ö™öÓ÷"÷q÷Íø[øÂù6ùÓúfûû{ü#ü¶ýeþÿÿÒ”@Ã|7ÀvòK¯þ@–ƒ*Ô¥1Á]®>ìy:û¸8°^ñŸ$ÿÄÿ#þ€þ ýjüçüOûßûkûúßúÌúÌúñû3û{ûîü|ü÷ý„ýÿþ¸ÿCÿËR¢Zto-ý”ÿìÿdþ¬ýìýü]û³ûúoùÚùuùø´ø“ø_ørøŠøÂù#ù~úú¤ûhüüãý–þ€ÿgIêΕD÷׆Kî“Là T Ò ! P ² Ÿ ‘ k ÷ oÊ#1 ÞÙ†ÿuþqý„ü¤ûÄûúoúùgù2øäøÆøŽøTø[øOømøŽøÉøóùùBù½ùïúQú—úûû…üü˜ýDýÑþcþèÿ]~ñ^ØO¯^£ÄðóìÕšƒI¿}"ò·eê¤Rÿ‚ÿþ±þ2ýóýjü÷ü¡üƒü*ûçûÍûÊûßüü1üsýý„ýöþ¥ÿXÐhÑnìUÇ7k0Ú„WÍï5sÿœþ÷þOý¢ýüŽü4ûÈûŽûŒûwû™û½üübüÐý-ý’þ þ„ÿÿyÿÏ?¢î<ãL¨û6…¸ì7EI7Lj#³"–Þ+ÿdþ¬ýÞýDü˜ûùûrúûúhú ù©ùqù^ù2ùøóùùBù|ù“ùèú úsúÏûhûÈüVüÙý@ýïþ¥ÿ[ÿì~ÅAÙI´;¢ñNµæ%]Š•¬‡m?Ï{©`ð€b¾&gÿªÿþLý´ü÷üKûÑû3úÝúoú;ùõùÚùÓùÞùÞùÿúNú›ûû~üü‘ý6ýÇþcÿÿuwÂCt§¬¾¬hCÌKÿ×ÿ[þûþþý–ýü¿ü¤ü‡üŠüŽü•üçýýjýÀþ.þþáÿ[ÿº$Ša·ý<m¬ë3g…­¿/7$BSS`E2Þ=ÑH¾"pÿÔÿ3þ¢þýeüÍüOûØûtûúÀúú;ú'úúú'ú7úzúÅúýûdûÁü1ü‘ýýˆýûþ€ÿ ÿyÿ×;Ÿý<o³Ñï5w¡žÊ÷,D==H&ôÀ§9¤Fÿ½ÿ#þŽþý üúüšü;ûòûŒûtûVû8ûFû3ûoûŒûºüüƒüÙýGý·þLþÚÿ]ÿðpñWÈ*i¶ä/:þ¸wÊe‘!ÿÏÿŒÿ=þûþþþÚþ¸þ¿þ›þ¿þéþôþèÿ ÿ6ÿTÿuÿ—ÿÄÿºÿéÿù4 ÿÛÿòÿðÿâÿâÿüÿð$Nz²ã-)0Ó›lÿ‚ÿ:þÃþHýèýƒýüÍübüûÛûªûœû‚û•ûŒûÁüü*ü€üÜýWýÎþ7þ¬ÿ#ÿ­$›ñC ý*Hi•¬Ã¡¡Ã¬¶ÖôMg¦…ƒrTÑt¬¯!ÿ~ÿþ—þý’ýü¨üVûëû¶û~ûVûJû,û"û0ûdû™û½ûõüKü«ýýýèþ>þ±þûÿQÿ±ÿò?z”½ÌÉçÐÓ¶Ÿs4 ÿÔÿÈÿÿ[ÿ]ÿQÿ3ÿ ÿ/ÿ,ÿJÿTÿQÿŒÿŒÿ±ÿÄÿéÿìIKggcgcNK8(1?R`~…¤ø0t’™™‰a&²`ÿðÿ“ÿFþÏþŽþ$ýÜýˆýSýDýýý ýýý2ýWý™ýÀþ þSþ€þÊÿÿCÿ‰ÿ­ÿÔ$?\\i`UKRI?I;Uz‘Ú WWhtWQ&ÚÀs;ÿ£ÿ[ÿþ¿þOþ ýÞý©ýƒýaý@ýýýý/ý@ýWý™ýÊýúþAþþûÿ?ÿ~ÿÏ$wÀÚ-a^l™^W4<øÐ¨sNF!ÿòÿÏÿºÿ¦ÿªÿœÿ¦ÿŸÿ—ÿºÿŸÿŸÿ­ÿÄÿ¦ÿªÿ¦ÿ“ÿ{ÿnÿTÿFÿ þáþÚþÃþÆþ±þ¬þ¿þ®þ”þ¢þ¿þ¿ÿÿ(ÿ%ÿCÿJÿ‚ÿ­ÿÒÿÛÿðÿõÿòÿÛÿÔÿ­ÿŒÿgÿÿ#þþþÚþÃþ¸þ¥þ„þ‹þ‡þŽþ¥þÓvtwm-5.4.7/contrib/vtwmrc/sounds/chime5.au0100664000015300001300000000707110237645271017325 0ustar callumfid.snd ÿÿÿÿ@ÿÿÍÝÍë][NocgÍëÙÛN_N_ÍÿÍßSÝNNÝYÍÙÿÍNÿßA¿_ÿÄAÿ]W¿kÁ¿AÙH?ÁY¾¿gÄ?G÷?¼¼×¼SSD>×g¼¼k¾k<÷<Ý»k»Y<×;ÈÄ_¹çwë;ÝYG¹QëÓ9ëEÿ¸g¸_9Ý9B¹g·ÄYÄ7WQ<¶çȶ7S;9¶gµµ?¾D5Ç8¹¸ÿ³7YÑ3³¿g³Dg]3¹W¼±9¼k3»B°G°91Ñ1³³k¯kSg0ÓSD¯S×Â/ÿ8W®S®ë/¿.6»?®Âg¯.ÿE.®Qç¯.wA8­W®­.¹?.¸7®µ]­-HÄ-¬±ÿ«;SG,¶H±«9°w,¼5Å®A«;+¾+±³H«k]ç+ÂE9ª>ݾ+¹7YªBªg*¸*7±9ªÄS­*ëH,©E÷­*÷<5©B«¨+±)+°.¯µG©*W¹(¨µY¨6kW)®Aµ¨.­ë(³3Å«6§7(µ(®¯A§gYß(¿A3§7Ù¹(³3S¨9§g'³'3®5¨ÅQª'ÙD(¦<ÿª&ç>1¦;ª¥(­&)®*®µD¦(]¶&¥³H¥3wY(«<³¥+ªß%®0Ä«0¥5B¯%ª®9¤QYÑ%¶?.¤.ëµ%®6W¨3¦Y%­%8­.§ÙE³%ÇQ(¤7]ª%×A3¤7«¤'«%*­(®¸D¥(w±%¤³B¤3ÿk&«9¶¤+ªÙ%­/Ç­.¥6E®%«¯8¥QYÈ%¶?.¥/ë·&®8S©3¨Y'­&8®.©×G³&ÅQ(¦7Y«&ÑE5¦6®¦(«'-­*³»>§+÷°'§¹A¦'ëÿ+¬;¼§+«Ó(­5ѱ.©9S®(­³6¨H_Å(·D0¨1®¸(®;S­3¬_*®)<±0®ÝQ¶*ÇW+©8Y®*ÓS9ª9µÑ-®+3°-¹ÂA¬/ë³+«¿B«+ëë/¯?«.¯×.°9׸3®?]³-±¹9¬SgÅ-¹H6­6µ».³EY³8³_.³.D·5µëQ¹/È_0®;W³.Ñ_A¯<¼Ù0³39µ1ÂÈD±8ë¹1±ÇE°1ëç7·Dѱ7·Ù6¹Bß¿AµE_¸3¹¿?³YkÑ5ÁS;³;»Â6¹S]»?¼k8¹7Q¾<¶÷YÁ9Ók9·D]»8ÙkG¸DÅß9»¿Ù>¾QëÇE¾Sk¾;ÁÇD¹]kÓ<Å]B»BÄÇ<¾]gÂDÂk>¿×w>»G]¿>ÝwQ¼HÑß?¿BGÂ?ÓÙS¾EëÂ>¾WS¼>ëçDÂWß¾AÂÙBÁWëÈHÁWkÁ?ÅÈG¾_wÓ?È_ÿ¾DÅÈ?Â_gÅGÇwAÂBYÇD¿÷]ÇBÙÿA¿H]ÄAÝÿSÁQ×çAÂGQÄDÝÝSÂQëÅBÂYSÁB÷ßGÅYçÁDÅÝEÂY÷ÓQÅ]wÄDÈÓQÂgw×DÓgwÂHÑÑDÅggÇHÑwEÄE]ÈHÄ÷_ÑHÝÿEÄS_ÇEß÷YÇWÙçEÅQSÇGßßYÇW÷ÈGÇ]YÅG÷ßQÈ_÷ÅGÈÝQÅGÿ×QÑ_kÇHÓÓSÇkkÙHÙwwÅW×ÓGÑk]ÈW×ëHÈQçÓGÇç_ÈYçÿGÓYYÈWßçWÑWëçQÈ_YÇH÷ßWÓ_wÇQÑkWÇQgßHÝwÿÅY××HÙGgÓYÈ÷kÑGçÝHÅëÿÓYëk_×YÝÓYÈë]ÙWëçSÈgçÑQÓçYÑYÿßSÑw]ÇQw÷WÓwëÙ_Ó_SßHk×kÇ÷wëHëgSÇkç×Q÷]_×_Ó×_ÑS_ßSççwÈ]ëÙSÓß_ÓQw÷]ÑwßÓSßÿY×kÝßk×]këS×ÝÿÓ÷kÿS÷k_ÑÿçÝYß]gÙgÓë_ÙWgßYç÷kÙ_ç÷]ÓggßYÿÿkÓÿßÙWëW_×g×ßkçYkëY×ßëÙ]kk_ëwßÙÿÝë_ëgÿßk×ÿwß]çßkÙ÷k÷_ëëwÙwë÷_ç÷÷ß÷ßw_ÿ_gßÿÝçkÿgkÿkßç÷çgkkgë÷ßçÿëggëg÷çwçÿwëgççwçgk÷g÷ëÿçkwÿgë÷÷»ÿ÷wgwg÷ç÷çëkÿkkÿÿëë÷ëkÿwkë÷ëëkÿkkëw÷ëwëww÷wëÿwëkkÿwë÷÷ëkwkkëÿëëwÿkkÿkëëÿëwwÿwÿ÷÷÷ÿÿÿwÿÿÿ÷ÿ÷ÿwÿwÿ÷ÿ÷÷wÿwÿ÷ÿ÷ÿÿÿwÿÿÿ÷ÿÿÿwÿwwïÿïïoÿooÿoïïÿïooÿoïÿïïÿÿooÿoÿïÿïÿoÿoï÷wëooÿo÷÷ÿëoÿÿkïÿÿëw÷ÿkÿkïëÿëïkÿko÷ÿë÷÷ïkÿwoëÿëïkÿkkëwççoïko÷kçÿwëgkÿkçï÷ëgÿkgçÿïço÷ggÿgççÿçggÿgÿï÷ãÿÿ÷c÷ÿÿãwëÿcïcÿãoãïgïcÿïÿãÿÿëcïÿoßÿï÷cÿccßwßãcïckïgßïwß_gÿ_ßïïßg÷g_çk÷ßkçocë_ãïoß_cï_ïïÿÝkÿï]çÿÿÝkëÿ]ï]ïÝoÝë_ï]wïÿÝÿ÷ã]ïÿgÝÿçë]ï]]ÝkÝÝcã_gï_Û÷kÝ]cÿ[ÛïïÝ]÷c[Ýg÷Ûcçk_ã]ßëkÛ]_ï[ïïÿÙg÷ë[ßcwÙcëÿ[ç]ïÙgÙë]çYÿëoÙwÿßYëÿcÙÿëçYë]ÿÙgÙÝ]ß]gë]ÙÿgÙYc÷YÙ÷÷Û[ïcYÛcÿÙ_ãg]ßYÝëc×Y]ëYëïÿ×cïçWß_o×_çÿYãYï×c×ë]ãYÿëo×o÷ÝWç÷_×ÿëçWç]ÿ×_×Ý[Ý]kçY×ÿ_×WgïY×ÿÿÛYëcW×_ÿ×]ãk_ãYÝï_×Y_çWëïÿ×cïãWÝ_o×_çÿYßYï×_×ë]ßWÿëk×o÷ÛWã÷_×wëçWç]ÿ×_×Ý]Ý_kç[×ÿc×WëïY×ÿÿÝYëgWÙ_ÿÙ]ão_ã[ßï_×[cçYë÷w×cïßYÝ_k×]ëÿ]ß]ïÙ_Ùï_ßYÿïkÙoÿÝYãï_ÙwïëYãcÿÙ_Ùß]Ýcoç]ÛÿcÙYëï]Ùÿÿß]ëk[Û_ÿÝ_çogç]ã÷cÛ_gç[ï÷wÛgïÿ]ßcoÛ_ïÿ_ã_ïÝcÝïcã]ÿïkÝoÿß]ç÷gÝw÷ë_çgÿÝcÝçcßkwë_ßÿgÝ_ïï_Ýÿÿçcïo_ßgÿßcëwkçcëÿgßckë_ïÿwßg÷ÿ_ãgoßgïÿgçg÷ßgßïgçcÿïoãoÿçcë÷kãwÿïgëoÿãgçëgçoÿïgçÿkãgïïgãÿÿëgïwgçkÿçgçÿoïkïÿkçkoïg÷ÿÿçoÿÿgëowçk÷ÿoëoÿçkçooëkÿ÷oçwÿëkï÷oçÿÿ÷kïoÿçkëïkëwÿïkïÿoëkïïkëÿÿïk÷ÿkëoÿëkëÿwïoïÿoëowïk÷ÿÿëoÿÿkïowëoÿÿoïoÿëoëwoïkÿÿwëÿÿïkïÿoëÿÿ÷oïwÿëoïïoïÿÿïoïÿÿëk÷÷oëÿÿïo÷ÿoëoÿïoïÿwïo÷ÿoëowïoÿÿÿïoÿÿoïwwïoÿÿoïwÿïoïwoïoÿÿwïÿÿïoïÿoïoÿ÷o÷ÿÿïoï÷oïÿÿ÷oïÿÿïo÷÷oïÿÿïo÷ÿoïwÿïoïÿÿ÷wÿÿoïwwïoÿÿÿïwÿÿoïwwïoÿÿwïwÿïoïÿwïoÿÿwïÿÿïo÷ÿwïoÿÿo÷ÿÿïw÷÷oïÿÿ÷w÷ÿÿïwÿ÷oïÿÿïÿÿÿo÷wÿïwïÿÿ÷wÿÿoïÿÿïwÿÿÿïÿÿÿwïÿwïoÿÿw÷ÿÿ÷w÷ÿw÷oÿÿÿ÷ÿÿïwÿÿwïÿÿ÷wÿÿÿÿwÿ÷ÿïÿÿÿoÿÿÿïÿÿ÷o÷ÿÿ÷ÿÿÿw÷ÿÿ÷o÷ÿw÷ÿÿÿw÷ÿw÷oÿÿÿïÿÿÿwÿÿwïÿÿÿÿÿÿÿÿw÷ÿÿïÿÿÿwÿÿÿïÿÿÿwÿwÿ÷ÿÿÿÿÿÿÿ÷w÷ÿÿÿwÿÿÿïÿÿÿwÿÿÿ÷ÿÿÿwÿÿÿ÷ÿ÷ÿÿÿwÿÿÿ÷ÿÿ÷wÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/sounds/cardshuffle.au0100664000015300001300000006307110237645271020443 0ustar callumfid.snd)fV"cardshuffle1.wavÿÿÿþÿûÿî.»ÿ°Iÿãÿbÿwÿ|þãÿÿ}ÿÅÿgÿ®;;©Â…Îó•dEÿüÿëÿò>¹ïé{‹›‰_ QŠ]ÑK\ñݯ ‰—“0E×ÈŨˆ¡!ŧͶŒ­áU¢Š\ј´õ„ÿûÿ„ÿÿÿ2ÿ^ÿhÿLþáÿ9ÿQþ¶ÿÿEþþþþ<þtþ³þðþéÿ<ÿnÿaÿ·ÿŽÿ!$ÿÆÿò1ÿèÿuÿ¥ÿ¡ÿ!ÿ¹Qÿ˜ÿÔÿèÿ¸ÿ¾ÿåÿÛÿ¢ÿÑÿ*ÿgÿþèþáþ»þ·ÿþ¼þžþåÿ_ÿô,ÐþÿCýÜþ.=8þãÿz7ÿDýý~ÿ½ÿOýóþ‘þþ‘ÿUý]ý#ýºþ©‹ýÜþ‰ÿ˜üûDüžþ$ñvýFþÁÿ(þåýüíûKz¥ö¬¯ýâíušýïÿMÿ&NýÞ´Ôgª‘=¯ùGÏøÿh/`KA«HîùŸšþŠÿ@þ?ÿØô~¬eÄa ¾IŠ HÆý¤û3üÑÿ·ÿõÿ¢ÿdþºþÖþþFý¹üÓüiý=ýý&þÛÿYüÌúàû|ý¤þ8ü=ú·úÙúkû6ü˜üºü2ú¨ùàùš÷ö™øøŸøÒú=û^ûèüoý¸ÿ.ÿÙÿmÿ¦^ÿž„ÐB+!?þýßÔÿµ¢ü4ù ƒ‡ûóÿ~krúþ#ÿÁ°%û>þœ‚ôjÀ’ÿîÜêªýïŽx–1RòXÙ *þ0>‰Š›²Ï"†ÿVõèúÿn®þþÿŒú7ý' -MøCùŸü‚üŒú—¦K ¶ÿ»ù$õaõ½Æ!þå÷/÷¸ÿgÌüÖöOüq"\ýOþÁAPø«ó=øæþ©ÿ`ÿwü·ù4ÿ>ýÏù!ørÿ±yú ø˜ü•ÿþûþ0üóüüÿÇÞÎüñùÁùiýÝÿ¨þ@þÿ ÿþt¿{HšÝÅÂcú-ÿåþ®ÿ“þ„ý,ü~þeÿ0üÇû|úýúŽú×ûyüñýû5ú[úßüŒü‘ü˜þ(þ‰ý:ü•þöÿŸÿjÿßÿ§8iƒ3bÃíÿŒ‰,qK[jþgWuÿªþ½ý[üéþgÿsÿÿ&ý:ûäûéûÅüýýÀý·ÿ…ÿkþZúÊù<#þ ùèøŸú‡d͇ý ú×üæÿ>%ý>ÿ‰ø0ñþ˜ì AøÊù8úŸþx àcýœüú4Ðè—­ýwåþf ný~ ñžýÖFŠz(£6›’æþƒqæë¾×ùÉ1Èÿ/þzþtùÃþòþaŽk]ÿý.ÿýþÞ„ÙûÔý¦ÿGÿG#þdõåý3ó†øqùa*„ê+$ÿ­|_?M1†^êqûúéMŠù/ú’ µ ©wÿkü8'¼ÿà÷¿êÿ*þªÿÜ _Úö[þ~qùPý¢]J»ÿ?ôùù(åýÅø7ùöAÓÂûÕüXÿ&þ_ÿƒùôùÓû¿5ïÿ=ùÑÿÍü7ýáûDùöýhð¨÷\øÈúeþöýÙù°úÝþ´ÿÄsÿóþëÿƒüêú4ùŽüûüìþ:ûüpþDýÔ¤0ý|üý þ} ÿ¾–ñÿüþTyJýŸ¤‹ªSgåƒôë=@{XF|äŠÄáþÒÿ&„äb ¯RÿÿâØÿ¬þ×þcþ‹þ•ýíúÃùgý^ÿ>ÿ®FÿüÿI\2È`ô¼š 3ëŸY'<=G¡-”+ ØÐPß`ª›°þt¡Xÿ™þ£Má%ÿ;Kƒ<7þÛÿYÿ̉uýÈü¾úí¸¾ÌêÔ pÿMþ×°Ëÿgœ‘¶ÂröX èþ[ <Þcü¯üÈòçÿå·xÅ$YÔ¸ñþXÿýý ôÿ›6#Uÿ€ÏóDûŒü”ý:þnþ+þH†ÿIý5üýNýÍ€zÿ»ûŽýKýÝþÆÿÿþÿvzcþûòP ÿ$ÿ@ÿˆþ2þÊÿ—ÿtÿUÿÞþ×þþFþ"þzÿsIþÿ#"2:ÿþšþ÷ÿþ²ÿnÿ3þDÿ‹ ob%|ghüÍÿJÿ-ý,ÿ¦þ\ý„þüËþ¢ÿÞ;pBFNàýînÈÿiùðþÊÿŽý•>ÿÞÿÃû›øêüyɳþNþÞýœþ¡ÿý¦ÕþÝ)ÿÚû>û‡ÿèZÿ CœäüVûQ‹YÿÆý ý¥“³ÿeÿ²]“ÿdÿ\ÿiü¥þˆÿ·þý©ÿX#þ·þ¥ÿò’ÿ@þ;•ð#èIÞ{ÿ$íë2ÿ;þšþ¯ýÄü_ýþ÷ýôÿÖÿ&üÎûªüÓþFþýýýú‰÷•úóÿ%¨s&xüÛý·§L=ìÿd'þTýnþ1ÿ¥ÿ&ýÍþðý&ý/ÿ þƒÿ•ÿÎþeý¯üÖý]ÿ¡ÿÜþeýPýZþÿ‹þXÿiÿžÿ—üÀûMýŽÿ¹ÿ0þGþÐþ=ÿ¼ÿ‰ÿm„[ YÿôýûýÅýöý°ÿcÿÖþ#ýýý©Uÿ Ùù©úO¸ýÃÙÈüÄÿ&ý^ûù!ý‚ÿ±ÿýüÿ ·…ø„õ7þÍJ ÿ·ô×ó¥ò0ÿöþ[îüþûÛø‰9lú0÷N÷?ÿ/ þ± ³ »ëAæØçð$ï'‰ãIˆÝ!êõ³ûc3Lòñüä$ 4ÌößÞáå&«ûªð(õ÷» ù•á^ ùû ëŠYÂýÛqë{þ—è™ßLá±4zÚéñÅ¢ó£@ùä;¶ÿRëæ£ûóû8wú ø{îºüàèÍûœ 8÷Lìú3 &ø¾-ü\ CöÎrçýQû`ùCö$¢D= Ñëð[óÅ›rôuÐ ÷˜ÿðÛ<þ—Iüó’·øŸÃÿcò…÷O @ëoð÷å(üöúMýÍTýýÿ+ÿÿ÷Bùhÿ¶ü/ÿJùVü§ú²ÿ[-þüBû;÷‚ûŽþ¯ùŠù´ôü –üZüþÿ®ÿ¼þ¦ÿ2òÊ0ÿËüuýí„Ýû¿ÿ €Q  ý™…ê‚KYÓ‚ç  g ò ]p»J ½Êÿiù8bôVƒ½ýñõÿmôkø³ûŸ Ïú‹O” 'þÈ‹ÿoðýÿa 2 êþ4îYïfï}é=üt¬ÿ´šô5õ Ñëý#áŒòUüòàôÈ¡ýí¥ ûÐû.úröCüþó Ø ?öiæ ÌäCþ+}Ïþ’ á+üZ à=qòw  ¤üñù±µ wÜèÓôRÓ=&ìŸä<ÞþàüKôBÿ÷}ú›\ÿÍøy] öûI]ÿýKüfûΓ ìx |þ!þ.üRxWjÑ pP ó7ýPþ•ƒü\:DúnþJ; Þ bÿÇ1Oþ®ööü½þQü;ˆõÅúœ¸3¨öØûÐûùK0@ùüRVûÝùÛ÷Óð³•ø3ûö…/uú÷¿ý„ûù»õ‹ú;Sû!ìòñ˜úãó§îñüÕ þþ?ù6ßâýXþ×ÿ†ü=ô×÷çÿ ÕLþ@ CtLA dáþ‰$ Õ¯ýzû]¬øÿ UþŒúbz˜™4\ý:øZô\õföúªüiûyøØû.&ÿyþþ#þ®÷ù÷Cü`ÿkû`ü¼~øõËœlgMü™õ™ý±*ûãß þÕý:ÿ n y© 9þåûùù‰öÕâ5÷œ°$2"þ;Àý:ÿå¿g|OÜ { ý*üáý½ÿ‘þIý^=û%ùÙücûàü-(üàú{ûúü²ÿ"ýÓÅGþ´þýÿsR·ÿœŒŸþèÄÍ Þ *÷ùýËøyÿ1?üª§ uü‚þVö0úYTïóýòôñï8ïïúZ÷·êgùÚ%ù!ùô‡ýK0 ðú0nÿr òÿüòU büFíþ„ý#“ÿ“þ‡ø5éÿ`ÿéàû/ëÒØ ÎÓõwÉ Gþ¾ž÷€ô¯ÿWìm±ü¥ÿ3H¡þ´ò»ðe M 6ï¹ rõëþ¦ ¼f AŒ  ‹3ÞNj½ýšÿEõ÷€Nþ¾¯ý•õkVü ÷Xüv÷rþeöC÷þ(ø¬ùR,ký úÕcr÷úÎþ }ðýºö‚úþõãùü`Åíü/9 Tþrõ»Ìã [þnö6ù{àúTó†û© ‹ñ0ùmüôø-ütÿf ŒzõIùÉN yþš¸ôçóîÛAüàñbõ»Àþ.üÚý üVþxüëóuôhõÖ÷fúUþ\—üý„ T Ÿ ‘ vàþRûŽÝÿüþp O ½+ 3 )^ ƒûZ‚øû‹ûGýó™ý¶ûõyú¬ÿçùÛñ(úÔkûý‰¶1¢þwûר =‘Z,ÿÒÿ/ZÿØûçûëûKüNÿ¹äÿ±P à áÀÎQ=>bõÿ„¤Ñrøÿ2þ—þƒÏtþyýi ÿ ÿ–üíþ쫇ǧYôŒóÆlþUûàý’úŠý‰»Ì”ýèüzþÛÿBÿCým™-þºý«!¢Ëþ2èýáù¿÷qøEûsø±øFÿÿBý"öâùƒø ý0ðàú©¡ÿÉÈØ êN’ýœÕ@3´ç÷¶Òý=TôžúAìí ôë¤å7›7 øÐÄÔ/n$éÒqÂO,Mæ{ñéüíL÷s ýií3: d aýJþÙÛùÈòA¾ñÂîÑÕýQö0d` O Ç×óÖ *žNý|×-øÝÕýÑYuþ`_ ’ ?0þ$€ÏšÜ!üŒ:ý”íù-÷“ü ÿ¾öþÝn#ê(o¡ –LýmQSûµ€Cƒ éð.ºÿ˜g w#þ¤ú—û²÷žû>ûfý:ùÇö1ôùû}  ÿÏþ#Lx¯Ø ò 0NÁÿˆúpü›¥¤üÿ´ ÿ]… ÷þöö˜üýþ‰ü1“˜Ä ZÃM<EîyYü#ñYôë÷ ù'õ"ÿŽôi1<ûý?þüþÍÖ×ÿ ÿ„ýÍ\ÿyD(Ïúówûè ¢`÷PôxêœØlÔ›åóåVãëÜæ% Ü-O7¸Æì£ Lö}ì›6 ùñ˜¸ãóèê …ùMŽ÷òë÷%¶â÷à»öA¶uøÜðGÍÎ÷ 3 ¢ 6 ½ø÷Î † ˜9ü…’Ù ¼ÿù‡ œ tíL³»öûÿöøî5ûvdýßà´þÖþP ¹£ùÏ+:ø´e± { ;¯íÒû]˜ï6¬ô³à¶òärAùRéÊ÷5 -úVíµì‘ ÿ 2ÿ#þ’ãòÜÈÆþ,üˆù×Zó^ ìıó'îÿÆþbáÍòçûÏæªáVñQð¹ï»õ  TëBCþÎøk˜ð£ê3ïø8üø4ôùáíðÇ D¼üd€ø#c;õxÿ°öeí»òGôÕû9ðãþã (ºûwóç™)^!ü@(d Óë¢õ§5öüZ B'¸÷> ûòÅû Hë yˆ  =!/(`“— "Ö héÿ`ýÖS gÛ²õ!Ú ýºR üŸFt §ó¯ú|ðpñB% ¯Ëñ~ëí¯ýÞ 0 › üÌþ*û’y„{]•ùìò’õ¢ûÐþˆÿU\9ý,ÿ[4ölö/oÿ õï•êRü-ýðvõ€˜2ÿm÷KêZòñ[þ£÷‘ùGï‘þ çýò(÷?ùèôQîõñ€÷òöƒýíýÈû”ü)ÿäûËò¯ô^ú>ûˆú*÷RøÓöÐñ÷öHüÚøÃøRþ ùgó~ò…õA÷|£õçõɇÿVÊþœú~ùåýpGpýòJï}ñ ôpñ&úpeú ²ï¦ï ~¼ô~Îx*+øã”¹Ýõy7CÿÀñ˜ê6óNýîßën• ð ÷³KÝsôxä&ž(†ü±öã – È÷–ÉôPü^«üIñD =pýüñónü;CV~ó³þh†ç³ %òKñ¼[Î üöå 5 þ³þ…ÿŒ ƒH0t Ì “0ÿib #'ÙüŽúQÿ´ ÔYÌxýtœ ò*™?ø Œ/ Î CH ìù˜¦ Ÿ ò EþKþ·®vù9úœª#öö>øöþ-Ñb,wüMö˜îõó1ôåüNþÿþü„túôWû‘ù¥ÿ|÷¥òKüø¬ù8÷™üøaúÑù¾öþQú7D¡ÿÄþ›ÿù1¦ýYû„ü· þqÜ÷¤Þýú ÿ“ˆÿ}ûÿÿ`! AbÓ ×þ1ÿF~€@4X£vµN Q èÉ£ûsþÎÿÇi¨âÉ÷Xÿÿ¼Sþôø÷)úSü ø`ÿåþ¢úPòõ]ùÐÒºN @žø¹ý—&Ñs — “ Uùé” Äê—þ= ×-åùì@jþô _ôä*îóÍžöŠè›ü.ñ¨êÊíˆø4övêôîÍäå êÂ똯û'øí9è¸ê|üLýˆ÷¡ülíçŠøŸ öùú•óÜQðôðîëþ)–ä×è˜öðúü ¥îògæzìmúvá6ò&÷uðy ¡ýWìSètóãÞø 6\õíý² ñlá´xïUôáõOÿUSf žød› ¦ÎO % ¸7 ½ ;  Å ÎÀÿÌ ŽSøoû–üþâMú°ùPÿˆ½þ‰Àºç”ü@ãù—*® ¤ ˜ûL ‹ÿ”BK— À*òéøeîˆï±ùüþ& ýè[öü’í*û& - )øôü°þ ¼ñ³ù‚ýÿóqôå[ê%þÝ K æôü&ø(ƒ'ôNý‰öBùºñ“ê‚ûos÷ýîv!î&û…ý¿õócû ¼û÷÷»Ó+ûˬèùæü>.î2ëwýBþûúGýlùÚ%Rqø¸þž îD + Gft:Æô_å¥ûvì0“ ŸÏ Ëûl¸œÍûÍÿ¾ÿÓùöÅýüƒ U¼þUç í™ v¯Qj&²¤z'䨗 ƒ‘ú³æ „ùÞñí) Sþ–˜Äú•ûûü{ ß2ø'ûl›_b Ðûû ÷ ÁaªüÇÖ&ý¥ü0  "¾õåîýò¢ñ>ùþüýzÿ°Í!ÎÍ ^ÿÌ[ú:õü©ÿZÿzªüjû§ýèûÎüªýÙü¥ÛýâüsØéû¼þÏIþô8kÿ¸ü„þÂÞ/ "ƒÿe÷ùþåíüì–ÞXã˜þ¼VòÁè &ýxòÎé‹{ù5>Ñ»_ôÉùIýŽ$þZúZý”üõy¨û¹ø¡üø' ʤ{…þ[ùô  x& æüjþ©òÃñféåüZ5ëùøÁêÜùîqç0èžç î8ç(~oÿiû#-gÍ!Á.ÛYý=£ñ,¶;qûë'7«°ö­ÿó4ó bç%C§ÿÌNó#íÿåó^ƒzü³÷´Ü ¯ŒýcSè¡ãWÚñýZiúSíÎýC,Ö麩\ÐÛ*÷<ôàöýü„º˜ `úøôƬY LúŠðþÖ…RùÂïù „–âë-ÿŒ²W¶¥X ø9ôµû*û„¿ CãúR  ¹ùÜú‚ûxø‘õ­ô-êrêgî ôðƒíñì#ïôñfô/òàðqò·ëOìFö‚õíÇëµîÆîCíÿöô]ö±üÜôlóÿh¾‡þ£úõöûu÷?óZòY÷uþˆüýtþvúú7õXû“jûò†úöùó"÷dúýüÞûéù÷üoù”û'øõ»öAü ¤ø;öªøRþ©¹@9æY|üáü û6‘ ˜}… oÝŠþùýèÿÁú­Þ®ù5ß–•€8ÿ87ãü‘ø¸3db>÷µù¼Büô-w“ò‡Î¿ùê'èöÞøOõÈ&/ïXÿe`ü ¿>šõÀù„F ‹ôXÚÖë•þB Âú¯î%óœ ÿåþ«ƒö ÷–ôöaÁôVìäú’›µ°üñúÂ:Pý„ø¸ý•ûÂãýŠ •)ÿõ¬ÐþÒÑGüÒË Ù* ” gFƒ'þ÷ù]ñNýHÿŠõsôý+Sü½ùÕÿV>þñþÞú@ô…ÿÀùÍúŽþ—ý€ÿ?õú?{îýåŽ Jû ¨  ïÂø# »ç_ç+"ïIû€(2gBn kóÅöþ‚ ÿÙ  gûrôõ«’þ9ø›ÿ@!Àøº÷ ³F° åü©øµ÷hø‘ü$~ùãÜØï…üWºýàœ Ê F€õ²ÿC8Ö ÚÞŽüÚüv!1zzdýþø±ú¼”ýñ#ØþÛþúéIßüíýÊýÖþ'÷ÿiý‚üÿ¬ý¤ÿ9ú ^LôŒ ñöÂîéü4ñaô5ï¼í…-cúÓåúûÊ7÷1úr£ü\ÿ Ë$ÿŠ÷føÿeJýËôÿ…[ÿaÿt£û5ó¯ýùþß=ø_øqúœýp 3§ü‡þÜöûãË â òLæôº hM\ˆýQ þ k N B »úk÷FÿNø7úýLë0þ(ðÝûÍ)G%þ¨_ ð$0þ0ÿàý¼çéKÒõÂ!g2ùòüžûÀøL×üú™c}?¤mƒi“ Èà w†÷ ÀÐöüø œ ŒúÒô@t ŸøIö ¶ ;ò ½ . 6‹aŽ5†å¼þ¤ï€àÆ 5 #ð÷i÷×ÛÌô™Ë¯×µKîÖìü"Qàîˆ}xý“íªöèòmúÚ nf÷Æô9ýÚ³m­þ¤ hDIrX0 c¸‡ÌUk­¡&d¿øZòýrùôtò˜â<îÁúGüG‘´1\ ¸Mðäõ¥ð~õ»öú¯þƒÿ´ÿó:òžóJûILù±ò¨ò!÷-ñÌòÄ÷¹í½äõìDü’ù¾û9ÿø'óOø˜ùT÷‰÷#ò€ó¶÷šóÕñDñ³îUñòùxùÒø\÷øõò+ø5÷úcúzø0÷×ójïïðëöôbö>ùæúZÿcþ´ÿSú÷òªð\ø}ü’úìøøýøPüiø"õ÷øþÿ@õŒþ’:ýÿú<ýšÿ\øcò ïHôô×ä1¬ûäô)ëúýþbÿ3îùìÓþºÍî›ô9ø ÝøóÓÿëëËíç> DݱÙÇþòTÏ{é²–üo6Þ# 7þ9ý•îËì€ $ð×ÍJËFö.hõò}Žýfá'Ü? Ù9þWêÃÂþ§Ý ~ý{þˆC9üÔÿµøôük ò ñŠùH dŽæ@Wÿ•ó­[cðh- ãúËбèÿíÿIü^ iv âÀÜõ¸ôFÿÆxQ®Ã@ùófðµùÎùxñ®é‘îµx »üäà¬óBú° Y “Õ ²øÊø5®kË J è€ó¾, Ô ÿ&ô%÷bøù6ûvñšï,÷ûø8ùLûpõÅïnö!ûGÅü;ù‰ùç÷ür è > ù°¯² ¤Å f )£æ ÷' p ˆ < > Ÿ•Ä!jÆÙRùüª„ÓJ*-™ÀØ  ¶µgþYNâ[ +úÛ v ™ß < r ƒ F ð¡ÿ‰ÿ‚ô(üv€ + Âÿ¼ýF Mgû¡ºïS!tÆðõ òhJÜùÜü‰ýMös · ç¯ zšÑ õ e  è$š Z ¼šô ƒ˜2ì Æ\òûSHþ*â9çöó¯ùzòýþ}ñuüsò×îöôê”ó[ù9ð…çÇë»ë1ïÿ¤þŸù='ž ”² É ' %`úþ²‹Éª`ü+ú:ÔõÆòâíçð7÷ â^ô[ô þ/öôÝ}ì1ò²þ.ó1ÿIø­çÝü° ÅéçIö“˜ÿß>÷ êöE–öƒòºó ñƒöózïlïŸùÔøëó ð\öZþÜüÿ¹úþ[?þÛö9õøü± uËþ!þ?þ) ùý,È ù˜ñð!îë(îHõÖõ{ôôs÷ÓYüc÷ëÿšOùMõ“ôdïóìÂéÃñ¹ñƒñ€æÇÕñØûsó°ó.ø8ñ¥ä$ó<ûðíHëþôÊôò˜ö ùéÿ[øªúêüŒ üÿŠø ò;ò=÷ouýôÎöÐôø üT©1R ÿŒÀÿ–ÿ•Kÿ¯«w¸öûþK· þ¦ÿä;_PÈúñû›öfùn¨ &ï@*põœ wû#÷šï# ñ ò)3 äù'+ÅðEŒ -üú@øþÕ÷òù25½‘Þqþ™úkÓÂb%îüè'+ µõÂí¶ _¬îtÑ S ü,  ~'jˆœ®Œn ©¶¢ðA”%Ž9qAt/*É+[–ð˜JÓV×îG²N îöÜ8ä@ V ñw- :píùó.ÚÎÑ VÈ­ù4“ “µþÀöÊöÖíüîX ž=õCüyú¹ì%ò÷ ç÷óë„‹‹+óóû·ö¾ N SýuE÷ÿ¼ü·Ê” âýñôþoüýö‹½ niþ§ü%øÃò«ìÿðÎü ²ûöøÜõ/òî“é¸í5óOômïÄõøödö2ù´þÓþ²ùüÿùþ¹ûÈü`ýDü€èÿ)õBôûNdmýÉü¶üËùÞòáòÍóÛõ ö>÷kùZü§ý]úíî ä&ìì÷€ý§ÿ¥ó,ðUù¶ýÞõêïêðšíè2ïcû×yûù¦PÖþèúÔü2ÿéá„üÓú$ùý¶;ÒþVþ9ý@ü0û.ùmô÷îçùSú»ÿªü€ùŸû\ öÿ·:¹ü< K˧} ¦ rX +Ì$ ªN?|' › ²³7í §³Ñ g>g²˜ ëöJþV‹@¸ˆ Ê8uÂxð¿‹{ ͪýÉõV9çùÇøòŽ ðÈòNDÑý·ÿÁzüþŽÁù%õKýü _ýÕ¾ ç —öGùhÿú˜÷ÀðQôJøð©ó¾TÏëù¥ìGè¬ôò„ç²ìu 4 “”›ñŠï5ê]ç õ*ý" SD4¬ Ù(ùØýkþêølúEújf´ ü! ²ÿ²üÿkýíýƒŸù òÔúÿówÿYþ•‹ÿ.úˆø²ú;ÿ(ÿ¯”þ=å˜N½ÿï6sâ‘þú¯£xËG`hýØÿ(ûùùãÿ þmýNÖÿý%ýFýÕû ü—A„EÿÌþöüÞúúúgý’Šþ¶ü±ùùÇÿEÿÿÉoùìú üûýZþ”üü|NÿÈÿxþ¡þfÿ³þZý3ü†úYü ÿñMýNüÄýÆýÇÿa{þù‡ÿÜ ©ú®òâò¬þ#tüÖ÷{õ¤ÜŒ¶õ›ý ÿz mÐíÛö‚ùBýûxø3÷ÇõÖÿÅœ$Ð ^óý&ýþ‡zþ{@!—ýÛûgÿdeÎ<ÿ©õª\þýÿpþ±þny è÷]ÿ¯ÿ´þ˜þÓGLkþzþle ?QªÀÖ û«@Ǥr‹tüFý„ÿj =ÿRkŒÿúÃú¢–úþ+ø2úáûäûG÷‹úßøÛü<úHÿm,“~üýŒ¯cù‹õûõÏ÷øšù÷ÕüXêíùvð_DÔýéï§ûø÷¸÷NüΡõûçø7ôó0ðŸûW ¥púzù…ë5ö…þÁ½ûüþZÿJQýgü¡þJú_ÿ(´ 2 „C ÑÝkã^Jm‚£"óCú#ªÂY Cú’öƒüQbüfù,ó'ýùùýàÿ9Ê1 ÜÿÔ Èý¢ôòñaÿ‰ :ÿNújûMÿí½õÍ!WÎÿ®­ù1ªþ)ø²ø|Tù.ùùÀ2mvýWû`þ#õ_ÿ´÷xù6÷§÷MüNýüÿÚÕquþÑÿüÓþû7þŒøü„”ý&þqüý%=àÿF·‰ÿ§ûûyüóþîÿ[ûûqý'µYû5z´ýéúuú KüPç÷·Uù<ñ¤ Êé÷È÷K\øóøÝøÚw ¹ ÷ x†*ý6f}J˜÷Oýiø4øþ 5ø%öâòW¤ñƒúlöh_õÜüúçý8–û=õ|ý.4jÔRö8ößÓù-öâñþy PñHùËõ§? ï½jþ#ú ûŠü8ùý·þ!øùƒ’ÿÇùÌÿàéøýÿ+ýž rWÿùÎüéˆø¶Ï‰u[ü'Qö†ùíö$ºúó¬â²ä–ù®Ð+]þÀöc Ì ÅûqèùÒ6ÿ—Éíü/þU§ «í¢èDìâþPÿxþGô£öÒ"ˆµ£ÈõÌú©zÞtœúÇúnþ ëùœúåöÊé.ÿZœ#ýîþÅ›Ìþíþxþ«·Yñ%û¿û^ÿ†g7þ7ùYü¢Cÿðþ« ®ßŽ  Ð ¨þ+pýkù+^ ™¦ý={þ½46œ©ÛýsúÈüýÓýÿ.P÷qöÇóöýùØÿöMö=ø*ù‚ý4ùÚr‰¯ Køí‰ ^ùKíü~ê¶ú¯÷Öùpø~þ ‰ FÄ‚û¢÷öÚþ†úøKý¶ôkú û· |`hþÚù8÷6MúŒ÷¹RþÏù7ý—þnû"úlÿ7†Õ Yl·ó‰¸6ô‡þù«ú©ö€# )1ÿfÛÿÝýûû ûûÙËÿîð à ~£þÉûgúÌüoølüþ=²É7ÓE „n¹ ‰ÞþQõþqûü¯ý¾üµŸþˆ ˆ\ÿýfýý5út˜ü‹ŠTð–ýë`õ¼ ^!ì¶üœø9ñ óõÿgØ ßúš"N íèWç6÷âø ç×–øÍØF8{ž°ª÷ÕúBõtøXýãüÐ ªÒÿíùNõéÅø°õ†ü þ÷ø}ù¤÷Bü÷Õû!ºJÒ ·ÿèýuü@` ™;ö¾÷×õFŠø`_ǃÈqçlé;ñÃé€õØÿ€ Øúçý˜ŠûIL!T.;æ3 ×úç 1þ ªÿ4# ­  äÚ Lw Íö½é>å|–ÑîŽíìþ —ãyîö³êbîfêÜúë .çSû… áû=ñÉ Óÿ×ýªþ³þ–újüÅøoEýÃX·û ÿ:î…öjø6ôs÷B´Ù ©þêû’÷Â÷oñÌõqùÃýàþ0þöpúÍý\úÄöøŠøÛ÷þAþ‚KùW ÿÖÖ^uü¼þÌýÀ ù k‹\èY?¼ã9üúê÷2ü~ý<þöøòyß ÊñêøžùŒýŒüöÞ÷þûÕÿ¢í©ÿø + óÞ uÿöÀÿ¥þŽýcü”ö!ïjñA\Õîsþ6þ.+Éô’@ \û°ðôYíÔý5Èÿ~ Û÷CòÏ_Å } ´üMýóûàù÷ùøe÷ûÍ929ª¥NÓ 4¸è4ÇØJãêúwýþøDÿÊüýg‹Yüþoÿ þšýø·÷)û)üúü”ÿúqù\ùÃýrù1ø ûËk4<ü‚üïûiúÍþcûmùHútÿÉü[þ^ÿúÏùfýôÿûgù•ýâüyúïûVùÙõÜø0ú°ü×ýgöõôùÇûÂùÕû%ûëû£üûôçÍ5aJèýð ø”üúÿðYþX€áUíýÈü±û"ü‰üÃúcöþnÖÿfßÿ‰¹˜Xÿ“­xúÓÔ º¾þ ý³ä•‚õò—îrÝÇñÕûa—3Vô’¢÷Êó6ÿ«ónYýÔGôïGùùn3 ˜ò’ô„lêú^ì‡ît{<ù ñÀ wþâùãìC RiöQ÷¾õÈù ã–Mü‘þíÃ’h.AúŒýùûÖÄþ,ûžXÿ~øt†’B¤ÔAÿþ;| kMü…ÝÿGáoÍgÒù'± ÈüÔälüxÿ?ÿŠøú˜»þ¯ø úÿÐïúïü-ú¹›ï&ú–ûŠý\ülý+³VF< “^àôíœgþ¨(u¥ZÿÃý®ÿ€Ü´ƒþó±YýLþuuÿ]ÿœ•þŽL¹{zÃ*»ýÿ”ýãÿ;vÿÌ—}èÿmÒŽÚýrý-ý7þú‰ÿ;þ6üsúLü#ýûÿgŒþªý6ÿ;ýüýægþ¹ú=úýaýþhý¶þþ¸ü2üýšþ~þ±ÿÅýNþOþ}ýÅþHõEþ‚û¾úýù§úKüuü|ûýzý¨üÕûUûlÿVm7ÖõI ¬j @þ(ÿNþLXkU©“Ò”þùýþ_þ‡üÏþ ÿZýÓüýÿ3ýTüÈ&Äþ.ûéÿayÿA°K~ÿËÿþþKÿó.ÿmÿ&ÿ”ÿaÿóý˜üFÚký!øúnp÷—ÿƒü!ûü ûáûßý¢üzú^ü þwÿ‚ûÁûù&ýžþuú ùjÿn”ˆþ¦ýÚÿÂþ²\¼ÿ ÿ’þ4ÿ—ÿOÿþ‰ý—/ÿÇ%ï«­Ú}ÿ“Z VF§Gþl2,'Xd‚‡r–· â i(¸p,±¨@ºº&Ÿ^3ÿCÿ?zqЀÿ)ÿþ¶ÿÒþåþ]ÿÿÕþËþõÿôÿ4ÿÕþ®þGܤ%G4Û†®À,° 2Oß`  oŽ—ÍDüŠòéü†øÕûa·ÿø«E¬ýlü”£öý”ùõ^þêÿâÿfnÿ+øˆýÝùûû¤ÀXý¦ûàû1úûôLºÿÄÿ…þUý0ÔBÿ—ÿh2Þ^þƒÿJõhÿLM ÿŒÿýTÿX¿þeý ý¢ÿ/þ4ýKüðýÜÿýAú‘û=þ®þåÿ:ÿuHy~ÿ'ý.üæþAÿÖÿÿÙ•þzþêÿþå$ýÇþOÝaSJ[:ˆ[ÿËÿ)¼ÝÉ¢fÿ:ÿ–ÿÍÿÿb©ÿ¿ÿõUÿRÿÖþðÿ[þtþ”ýƒþMÿKþ•ÿdþ#üJþÍþÄýþÿÜ×ÿ§ÿèi ¶ ¿ôl‰ø½ü¾ ¼ËüAù¿@ «ôþ\XÛnÿ'i$ÿ<ü#ü} ¢õ`ûðe˜üZÞa NûÒîÏï«ïýöŸð¸{!Jš€úRû…ú¢œ ¡ùi÷ÿ;ôÙ÷²ù÷£üüh ËþûØþ¦!L¼3˜RÎ ›õ+î?õÛö£[À® V÷°þ®`YøFùô÷ð%òXùCIþ‘;øÈ÷1úKúíÑôbùé KˆñNíþIÿÆ{ýˆý!ñ î€  - pÝK iþ} !… í j¹ê… !üþÿ–f®ü ýXþ^§ý:ü=ÿæO Râ€áþæüfü™ÿÄ,þ"âaåá *à6(Ðvÿ‚þ§,±ªÅ¾Èw=×áü?õ î]êzè¢ü^Â'×k÷ ´ ùïÖñFö–ìÃý?ÐÑA ²wú¨öOõ>ùyìþ øÜÿ#÷QþÉü·øÿÿ¡üçû´ýÎÚûç¿ÿôöÃæ{ýÇýú"èGürþ­ -€ü±ñ ö=  {%` 'w©þ±ü÷ûOü?ºkRýÞú¢ùTøºøãúíú³üwý¦ú>ù›ûûFøØ÷hùPþ´üÞø}÷ûø“ù_ù,ûêü ú‡ù÷6öÐùúwù)÷´ùŸvýÞþÀoÙT÷Kö ü]ówõú0ÿóæýâþõ.üŽùŸû™ø«ûlê Pàhý¥þ@jþ¤…šývûü×ÿëÿ©ýqöÝøêö¿òøú=Âþþ©ù÷õWhþŽNÿ÷"ûó#ÐÜþÍù«þs´îÿcù?ûØÿþ³šË Sé­ñ*²v©ÿ2sûü©ûg÷FöóùøŸû³þäûØù ø¬ÿ ¢†ýé?ÏúYöµôéýËi~H=0þÃû#ü*úIü‹,ÿ ü^öýnÙýaýSuÿ?þðÿå›=žÿîý·þãxöUžËª‘ýÁùáùAûÒü»ý4þhþwÿþáü¦ûËü0üùüü„ü”ý-üÂýÿSýuûùTüÿ‡Y ÿuýTüšÿÜÿ¯ü­û“úþöÿiôöùÎñ}õ´ßóÓòa)^ Ší SýáƒðåLøO³þ†÷û û†ëÐõB+ÔÊü:ðÝîþòüqá Þ#Õ^÷ãHpïáõüiïG¬æHæ~ösÿŠý㇖qªÿú¦øüü—úyÿõËÿ²™N ­ŽÉû¾þðú”‰^NÿJt•‹þ„rñGøÍuüzúüÿPHò åtúI<$€ý}ö0z˜~jý!ü®öòü˜šøßÿÏðþdûÒÊN J ØÞNüðú®ûÏúIùIÿy‚ü€öpöF÷õý ,/¡—þ樺QXì»®ú“ûEÿxVÚû+úBþ§€´þÐÿ¯œ¹§ýÚû¢ÿ(ÿJàÛ 1 x(û÷øvï5àáÿ‚ý §ÐùÄçÿüz))Uæçöòdû‡J½. æ +ùÞóД ¯ ßrîÿåëò¤î¥ó1a Ëù‡øjúÛÿ8 N ;üüúXýó*ïy÷Ïü¸Ì ç +t¨Ç÷ó|üE8&üŒÿYø‡ó ýÖ6×rh ézÿð1ÿ÷ýó—óÿø ûγêútÿ¤ Ïýmû¸ø óùòúÎx ²Lý$ÿŠk<ü)g Ö € ÅN mŽiüpå‹êbß´æ©ùÐý—ì~ð-óöùAöÈòþ„þßþ düÍùÎ8ú8ýÂú ± #åô÷+&ø¦÷ýÅß— .Ee- &í!ø~ù…þÚøÍ<öV— ^ú3ybù;ýêü÷ÿÌØµ‡ÑMkLCû¤ý•þ0j ߉;ý¤öôú<ï@ò>øù1%ý˜÷^úµüÈ#õ³î~÷|äáý*¹ ÿ ýGùcþèÿð÷åö÷ÿÔ@ÿSüo÷9üH –¤vÕ© ^xlûöÙÿ/xý:øIÿÍ(ÄZ°þƒXuÿ 1ÉËýðôù4 ò'gü*þ*ε œCþªþbû¯ü;­ ý×û•ý± *(c£;ý´þ«þÿ®ûƒúM 'ÿ¤]þpO¯Lÿü ÿµlhþ¬^Û¢}H ¥‹ ªï!ë¨ðâlïQ # )®ýôñdê^öö– yŠîKë6÷û ú²ölª øïýd K8 ‰ ÜCú ¶y "ŒòÙü´óU÷gýà6ýIûÞþÚú „X‹ Qú*þ(î"êúäùÂûüÿdú0ÿŠïøÿYú ”ÿÐù ý wý‹úÅ .ÿz©ëeuüRþ&Xþür÷¬ûŽöiöžþðûÚúH½û„üªú,ø`ÿx×é ¡a9ÿ~ý}a°ÜÐý–ú)ä½´Qúqþ]ì*üý®þ/ùéýÔ­ Y aQtþà € ãC 9¢½Ïÿ· à Ëû,ôAøÅ/=ô õøÿ¶¡µˆü•‡ûTú‚úBÿv`¡ýþ›ÿÍü=ø6ûOÿ-…Y-üXúJûÔúðèóÍþZÿý`ùã÷À ý²ø+ýìþáû§ý2üüð³0ÿ´ÿõýö>¶¬…ÂÁ78Dÿ• #¶ˆþå¼Qÿì èû4üâ òö¤ï ùŽøófþªó_ñú´Jx¶ ‡ô¹y­þýõ«ù9šüíýÍ÷äúÌðüUpDüoÿ·r9¨þJûæük 5bƒ@þü@û@ü:ýôÿŠ úþ#®\PHøø ÷Þó´ñóøëÿmÜ14¹ÿ¥þü°üýßþ…ù÷àøcù1ø õ'õâø¹ûäÿ¬ Ýlø÷2ÿ«ý§úM÷ üPÿwi3 w *5þRü×õ'ü“ü“ÿþk%ÈþÕûœ÷ÙûÿKÿªÄ {~mÃ:´+ú(ûüùý²þ"þ³ÿ"ù„úþÀxüŠþ½þÝýQ“3î£èòÁéNØÞûS&,çåxÝç“Ãüwûäºâ¬ôï+þñÊ @ËúüĈŠï8õ&úS  Šcÿõ¬uêüO J*8ÿ) '¢üóöðþõ[î °ýÞñ÷ñzò`”¼ùÓü ûtÖ"+öfü(úlø¿þaÞ=η §¨ "m¿þüÅÿ~úìüiþ™û˜û«Êÿù£ÿè²í«òa/ýHX9÷b"ÿq÷˜ù,ø ü   ¥ÿÓö7ø—þôø-ú+ÿ®ú3ý‹RùÔùðþþ½ùßü•ü“÷9þÕÿ«zDóâ– º1Í&æÐ eBœƒÿÿÿºÑÿ·þ.ÿhÿêü³ý›™ýI \ì  È àä"ÿýÝýwùTòçù¢mç¡þ,û­ÿºÑþ}û‡þPj¬þàq ÁFcrCýFL×™  ýÛúûÙþ°®3Úÿ­ühþ0ÿÊüfú˜ý*üœþüÞú‡ûýû^øåúÌû#þþü‚ýü”ý^ü¸úø+ø5ü-üªúëüIýfþÓýqüsû¶øÀúLüþ¶ÿ¬ý_ÿ¡Ñÿ»ÿ,ÿÿþñþRÿò%6–þóýýñû%÷ ÷ñù<ýÄÿÿrýÛýâý(ÝE&¡ Z÷+8Ðÿ…þÈdüüü‰±ÿñþùþøüQþÒnþ”ûàüiþtÿ¶¶ÿýÛüFüåýÉý²ÿTÿXþ4ïþÏûç#ÿ0þþ$RiwT €?þÚÿ$ÿÙ˜ü† Õ2chÿ‹ÍüyùúÞþᥞþ)ùtûÅÿå'D™†þÇÿáûAûù]ù®ÿë–ÿ¸4ɬÿœ…*|Ž›þÅýý‘³d¿ìb*ÙQ€fˆiû/ùîúàýü´éâOÿmüvþœþãÿæs¨Mÿlþ°ÿÎÿùÿÿO!þiýHÿ6ÿ$ÿêÿ þ=ùN¸2àúT‰õÒœ”ÿGþø¬ÿäþ‚þ‘ÿÿ¼þþþý“þBÿ'ÿÿ+þþñýçüãû˜úHûþ*þý ü!ýEýiüwüúéù3ú±÷~ø\ý™ýbÿFþÙúaý¨ý¸úêüŠø+÷ä÷ñõK÷s÷úù„(2¢…f4.cž|»árÂÅý­üÚû/úãý6ý û ü0û:û—ÿÚe( ð aÙ,¹'һ켚ø%6øÿ&ÿÄ$BEX U¨Ç ‚î óÿëý)ýÜþÊÿ$ÿoþ9ü†ú±úaùõù³ùªøãùDûÚý™ÿE9ÿýïüYúÏýƒHôdS*Ôjÿ³¼÷ ;ãçùÇÕEÿC­ì¥ÿo ºæÿ­ÿ˜ÿ‚ÿcNÒ—¿/ÿµýÚû§ù•ø¸ù!ûTûFû”û‘ù­ø§øTù;ù®ûýýfþ˜þ¯ý.ý¡ÿì/W‹* S5´Ðª­ÿûþˆý_üÙû’ú¢û5ûküoûùüüŽýùÿÆÜuÿ£ýžý^þ±þTþ"þjÿJP|ÕÿfþÈþŒýcýý¾ÿü™ÿ¿4ÿþMý¨þOý´üÚÿƒþiýtýÃþ“ÿ¯ŽþNÚ  0ëEoÎhýkÿ•þØüˆý—þÿþÿ!þêþ¾ÿ·þúþ-ÿQ'ÿ!þÄÿÿÛzRÿ”ÿÀÿdþ/ü úðú4ûû†ú ûšýŠÿ.ÿìÿªÿÑýóüøþ»þÝÿUj‰DÿÀþeý±ýÏþˆ ÿ[±¤,¬§Q®0e–Ü%ý}á̽V˜ÔÿÁÿsþÙþÒþšjÏÌ(©ƒÏzÑÿh’á6Ñ“ÿÎãÃÿØaøçùÛ´ýôõò,öóú#ù…í,ò¢ýªï}éðù€ü©ô4÷ü‰ðå ˜ïµýòºÈú%~6ï¹€½’vx2`A݃T"ȶ—þºáy 9oŠ&z¨Dý ô“õ÷ û.þýdÿ®ý‹ýjúÓûïý9úÇôåç‘ô4ÅLÿñú“ Xø÷ Ó­ë· œïü0üpFÞ ;‰ýë°¶ÅÿUøï÷»ûü„ü/ÿKÿ–ü‹ Å h^ÿ!ÿLÿáÿ±[ý†úlÿ™9ÿ,¥8 œ\\Vþƒÿ0¿)Üû¶øÌþ>ù‚óîørþ…\üIøõû[ýîü€ûýUùlú±ûîü þÅü‚ù÷ÿþBúSünüoùú@û›ýõàØãd.¯n  `l ø9æêƒo:ÎÏ>ÉÈÌÐÌ v^ÿóý¾ÿŸœwgþ%ý¾þDýÝþ6Q[þîüÞüêû¶ùŽø¬ûƒø¼ú¤ùÖø&ú ûü/üžÿÂzÿëþÏÿyþgÿ1Œ<úsu òÉO6RYL­¤ÿÙÿpÿZhÿ¸wgA'#ÿ£ý§üü>ü›ûãý¡üþû‚üúâûÞý)û¹ûæûûtý(þÄþBüÛý˜þ@ý¶ý“ýyÿ]h½ìwËšCt 9þ|þ‰ÿQÿ/þãþ;ÿÿžþ#ý@ü­ûfû¯üùþìÿýký%þFýüåý8ý)þ^ÿVÿRýò¶îýÕ§æ<e?ÍI<”õÿ·¥Vb“cì† Ãe9ñþòûøÀ6ýlû4ûþ üÂq ‰ D ¯ûðíÔï¥üÙÞüZôšö U ®»ÿµþëýKþ³ýýü`ýúûr÷ðq oîÂïþ¢ê[íN¤-èÕÜ „ûUÌÖùÃá°ï,þõÇÎóVð¼‡úŸEøùÁåùóøsüÿÿ£ Žò§ýnÜõíSW¸õ& ÊàöZò û!ÿŪÿx7üý¸{NDþ_üüûþXûkøãø˜ýVþ^‰ÿVýýH /²&¯uW[ýuþùEùúM~ýc‰ÿÃUá Mù)…·ôoøjûK Eú>Ûù!ûz÷²H 'ý3åuþ¹Ò·îúhýgÚ Éô&õò: ¨újý3^üÆMWú÷Gùûzõ%ô#ürýÑÒú/ùSý<ÿ( KôþJ{ÿ}ã »ÿ÷0Èaÿõ½Nî —aàüSð¿úþ$þß÷‚ú¿ Îýà÷æþmz9ôÉ Àô`ñŸú ¼’Ÿ¨13ÿ„ýcù”d`þBˆþù)ö˜õÿ8ýÊý~¶ Üøæúìõ²óGû6þ=–ûrøÊü>øóCò¸÷Äþ[üVâýÙü«züÇc×#º6ü»ú:ûa÷rûáBÀXdé+Šý먉W¦]NПhüëûêþgŸÿâü‚ÿp !þnü1ûñý³ü ýþÿ<ýeþ<>³tÿý¬ÿjsÿ*•íþ%þìÂþ¿Ó§Dþòþiüý-æÈû¸ý¸ýÏý¨þ™ÿýÿÿvý%þ­þþ~Üdþ'þ"ÿ<þ¢ýþäý«ÿ2ÿèÿ–šµzFÿ›Dÿïÿ‰öÿÒDõýü`üuýÓÿòú·ôUÿ«þ":H=é8‘ÿ• ’ë`†ɯ=köüêÿ`ÿü©ûÊþébþ„øcü%ò\Ìšý8üþúˆûÖR1¯ðÓ åÝû^ÿ &Eü6#nšý›ÿ‚&Šÿ únøÜþ›ÿ1ýäµÿ)þ ÿsýÐÀÂ.üªýRþdùóþŠÇüçý6`Ê4»þbÿæüpþŸÿÑ3Ñ!·ÿrþ÷ÿÆü¿þ€ý:ú3û|ßõF.z±>üâúŸýöÿšý ýÀä^8gñýiýEÿõ-4‘ônnÿûý’üXû©ûþIfÿ[ýþsýþþÿlÿWþðHÑ[=&üÿþTýÇÿ׫ ÆÙIþþ^ÛÀÿ}ÌÏdãüþUþú–ù¦û’ýÉþAü’þÿþ„û&úJþ{ÿþ"ÿÿvþæþxþGqü¢úÊü.ý³þyü#üþÒÿÞ.K²ýÆül.ßgþ¼ýŒþœaÿëÿ½õ"ÿÃ1ÅK9Eƒðµ‘ÿa"ö&þIþÀ#ÿ%©Z®h…*ÿ¢é8ÿ÷Yþoþë þÇþýYþ¨—ÒÿŸþèýäþüý¥þ$üáþ pûÂøÏý¤ýúcþÓS‚¡þäýç\ÿömÿÏÿÁÿ þ˜úüsœ-û™üöÿàþ–IlÿþyÿDü«þÈ@ÿ‘ÿ•ÿ_ÙJ^©yÿSPZÿœÿ|Õ݉äЖ¢!rˆü¼û.þüžÿÁ§Fþ*ç1ÿf£<ûœù9ù†e òTSdƒyçûBýËþYÿÿdþ'ÿóþ&÷þù7üyûåùêúÏøÏúþvþ—ù?úKø}÷5üf§APÿÀüƒüªú Œ•M >ºù‘ü"þ÷aø|ú»ï,ñéúBû?ù¥ø©øÚý€ûËù øIúòý°û­ÿ±ÿšÿË þx7Ø…+¡= [í²+ÿ= Z 9¤8„P!7ÿsýTúœû%ý]Xs“ Ò[þ´ý”ÿvýß²Y­0þߘêÿÏRAMµ)þáû»úFü,ýÍþA2ö’ø1× '`üüû4ü7þ±ûŒü/ùLúÆZ^ûìøˆùJü:ú&ÿXÆX­Øüå‹'ÿ qü‘ýåùèùúü1ø>ù«ûòü×ü„ù”ø—ø­øhù^ù{ú¥üòÿ þýÿþž ŽG07ÿ—þæîü÷½×þWÿ‚üÎûîüòñ߂ծ©¾ýäQýÑþ1ü¦ö·ûúý˜úR× ° Þ¹®ÿ!úÓþL\ ˆ Œ LÕürú"úÈö ý½;CÓÚ/þþ•ó;ÿÌþcôàû ûöU4°OûÛöÏÿïùnõmÇ@Œ³¡ÿvûç‹eá ª6þó ™ƒûýý]ÿŠÙ6”òüÐüG·ÌïöÃ&ï4é§îú“ûÝýæÿ÷Íÿ2‡Ñúÿ !îøó˜ l ú=þÐý°].OýþÔñ%Dü’ öª à (ú´óãΪ<zþ?û‹ - ^üeú ÷óíoæÙï´ù*üç_ ( C‡ùÓý¥õ þ†÷áó;øYÿbüãúû!ƒRüØü Œ5šqýûg÷Ú÷«òhó[óô¦ûp«„>£ªÿ¿ûóØ‹!ý\ÿkˆþÝ¡hŽrÏžsO› ÏH¬R¸ÿíþþ „yø· ¡.<çü¦ï)þ­±ù•ôÎújàÖÝ> ´ô$ÚWôŸx ólîý þ`û“ëyð\ø1Ý@åµ ;]þâñËí’þ8ÿõ>>nù÷+°rüºò3ýÿeþŸò–í ã;úTúðüÏøIT÷ëï¬þ‚ì%ŰG*óâÏâpäÐëëCê°ðDõ+ýGø|ôßÐã Aƒþ±ûÖÿ%þ’aü–ø¤þÏÿöŒ±ýVü¼û ö%ö"øÞõtô3õÐ÷ŒöóvðYñÿôÜò]ð]óWö2÷ýø²ö7ñžôZô,÷œþäþSüûYúÎúÊýEþÿmþƒþAÐ)þ‘ôyFJ(ÉØÎ‚ˆàw æ ëÃĶô 3Ñò¸Mø÷G÷Oõ ø °® fß« baÂó¯øg øþñ R z§s 4  /üÓÿŠýDvâ OýRþÌ5qïüû+úfûÓþ¯þŒÿÔt"üÂûá <ü÷ºøaûHþ.ÿ%À Á-ösý3 nßøºó!íIøE ¢$ø•ýûjú€øïMØã»&ôÕö¸ùšõ÷ò5÷Îýf, Ð:ÿ«ÿñýæútœÜÿS ’ š2ÿ~\ÿ‹l. Q¿í„ n TkÒrR 3 ç ‹r»ßýKÿÿé?²Èé(«(bGk§'ý…#Åwÿ­üdù¾úäû°þßÿäýòû^÷=ùdý”ýøõäùü{ù2ôa÷rùü÷Ä÷®öÁõóPñ¼õM÷Îõ<õLõCöÝù£ú3ü‰üTûûœúqü{ûsù_û¯ùeùüžüqüÿ]rE–[&=_@ñÈ‹õ¿e+Œ¸ý6kˆå•Œ —þëÿ§Ï zý˜þ_­ÛÿDÿrý’ qù­„͑٪ÿ»xÙGÿÈýó£Jù¬¡ÿqýHýþ®s üzú]øÄù[ù¤ùåü÷èù¶úÏùúµüúÕû®,ÿÈýJþlþðýnýÖþÇÿjþ½ÿ^þ½þý7ûYý«hþ ý}þÏÿ yýÿQûLþ¹ÿðþ¶ýå“bþ‹û¾ùÃ÷ùûžÿ‹‰þnú³ùýÕ Aÿù_û;\D mÒãsÿÿ´ÎUñ¹ Ç 3\4mý;yŠ·mðÖYþéÿß33Lþ?þãÿ üæþ¶>×ÿYþ þ ýûªý_ÿŸþÕü{û;ý ýµýïý­þkÿuÿþ8ÿ×ùáö+þ»ÄšÒ ù”õ\ùp¥üó÷¢þ.Ã` û¬ø7üòøõüÍü.÷„÷Xþ¤è©inýbýÌú0û p®} ¯ôäúàäMõ ¿öæ núú–„Húù3@«| Œ®!û5£ÿr÷`òøš¾d™ÏúfýÇ4ûûõ÷ÕýJö6ú_ “ &û@ö^øšøÔúÔ7ÿ°ûŒýüýàýqÿ.‹]ضU픫?ùrøñüÏþ ›©ÿ׆A Òà7ˆƒbBfÿ8ÿŒÿ›þÏþ=ü®ü¤ûþdþ øÄú)ýíô¡ š÷sõÍöŽø,ùöüýùù þ®uüÐü2“óæTÿMúàež¢ü?þE'qk ¶ 3±‘y ƒÿ¾ürþ‡oü%ýžÿáû7û5ý¹žH ÿVüYû)(Fÿ÷¹ÿhýÅýT [ € â Ÿ~UF*ÿfýïüNù#úóüîýUÿ?Ju½•êÑ៞üùûºûxöçùw m ÏèúýÔ¤"òÞÙXèþ#àô)ÜhýDòݺûù bßÖèø¤ùôí¯ ‚ ñòú9µ45ïü‹ÿ:ÛõÛøûþÑý¦y·¢ø¦ýiýþ‘¼ç÷­ÿ4&5ùÛýSPþ™ûø§úÓÚÿ{úêüÛ€^ºŒþÊÂÿ£•þ&8ÃB ‡ÙkŸÊ)ÿ2þ<©´â¦ÿvÆý™úÉü­þ—ÿœþ"û¼þ‚Ìÿû“óR â ûXÚû^ûêtµù8ù˜¤l:ü®þ‘Cý©þÏÇÉåþðÿë„ÿ0ývý8ÿùLþíþGÿþ¸¼#~zý:"V=ÿ<ûöýCÍ„ÿ9ÿ̹÷îÿãÿ¾þðÿóþ¶ÿ;EýÒþ²ÿÛýMýÿ2ý3ýŽÿrFò±óåíÜÝþLúì­êÓh <ù‰òÿ—ód? õúTò ´ èÿ½þmþ6Óþ7aþhùèþÒþbus; ãùÑørû•œ Ù0o6ÿãýÍÿÿJúvúÜÿ#°†_ý¿úYö}ûpþaù`ôõùwýý·þÿÎÿþçü˜ørøýýÇÿûÉýdüýŒ ²5 éÍøRúÿ ÿŒütøÆøùæß ½@ýîöºþ–v n„þkøOüb ã÷ ðû@¢ Å·k’ ioýœøEü<ýøýÅDSÍÏü­ý×UI²ÿ¾ Ë â ½> ºÿÈWýÖý4ÿm¥{÷âøuû“ÿRzüüöÇøÖþ!ÿõ:ÿqÚqØýPöíó–ñÙóvø#÷}öóøèûRü;ýJ,½,æ¢Äœ<èljbxÞïzÿ…úì þÜý!ý¬ÀZ–ýË_Œ ì%å9nôíLÊíø@ ýˆíÅÞa G ø^íøE|÷oýšî(ùóÔöœÜü­ëªüoýÝýUùŸìœóT ûÉñ×øÔÿüþú.ÿ¾¸ÿþÝ øëþ•ætýaDzBþÔaû‡þ!™þèùçø`üÖûÏü/~'–yÿu–uIÿîþÐý|ûŽù'ýÏü¶ýÿx˜ýü÷ýýìÈ´4ä2ÕþÝÿýÇücý×1 }ÿ†ünø½öÕü¦Êÿ›üòý%þªS£ÿw‘¼i’95_=ÿ|ÿÃþÅþ™ý\ý˯¤|úöø³ø@_§üÆõ¢ïûw}*û3ÙüTý+8<ÉP ìÇ!¥aÈHøgõwû @Ozº t Éóö óþÿ ‹ ’ÿÆú  ôôûðdÞ÷GôµdÞÂö’ꣲ ðpøS$ûSõßû±û`þ°úÆýÓÀ ˆ Oݪ g ùçû6ùiùŠøô‘öõóú=W ÿbœÿÒ¬)tý˜üLùÞù¿ùFö–÷?öÀ÷&ù û•ÿ#eËØWbë™%€ôÿ±ÿÃ×-ûÆú»þ ƒ¯ÿ‘þùk Y«ï/ÿÍ*Dÿâÿ‘ýóü¬ÿÑ 4$ÿ0ÿ܈½üÜüþ þÿoþ‚ü¦9AþÍþ|œ­âÿÿþÊÿ[,ÿÄþ9þãIáÿÿþ5ÿ·þŽüBüäý†ýý»ý\ÿ§þ¸þiþlþ¯KþKû±ûÛþ~þð¦Jÿµþý¸3üðü0ýÖüŠþ,ü~üÕeÃR;QÿYÿ¯ ýüÊýŽý¤þþþÂý/þHˆÿÎþ÷ Þ[É$Ë¡ú¿ú'ø6ûl =õdí 2ü÷kù• ‹ òý¥î¡è xüùE tÿHôW6Ó³ý%ûÂö/þ’ÐÌÖÆÚ†kx¡ :üÒöUò|éNÝ6àÐØTÉáàWîpñbüÿ ß l^eaÅã n t üù¦óúlý’èU wûÀ7 ˆÿþäzõéóøÿ­ë¡Õ½çfýµÿ¨…ð÷<ô%ñ õŠ÷ú–ýâüù=þk|¶(ˆ%Ê!áZ£çyP¯P¨ÿXü. ñ®ÿì,ÿþrÿˆÿq¿ÿûHýã!áýÉ"þ«ÿ‘-ÿmþ©CÿÁýpýfúúÿ ÿ*ÿ0ÛYÐýžÿÿ4þ®üÓýÆþßäöûÁö¥ùÞùwòèä|òügÊÿT$õ`úÅöûüTŒä ’L Ìýoüçÿ½÷Û÷¸øyôŽö6þžÌûÚü¹¡†—ü3ûnþ©Íý<ýêúaû¶sÿJýùý}ÿ™vAª¾2Nƒû{ü˜ýýRÿ¥ÿlþJ( ¬þRüõþÇþ÷ÿDýòúaûbû¸ûwû*ùZûÄýðþlÿkn+›ö]o|\ïÿÐÿŽ˜ÿ)„ŸŸÿJEÿUþ³aþéþÿšÙ…”ýóþþýoýØýû× ( ÏýY {úgêÑÊ KûËLÜùÊ1 |ý9ÿÀT}‘÷7ñú¨‹ÿðˆý‘ ‰ ÎÅ{üÏÿÇÚ#û)õñÿ„ÿ£0ùÿzô_M ªý«!.üvóRúÖùwÐ\‚þvù¦£ŒàûŸ:sù|ú¦þ[þíØþNH×ÿË“ê¿ýÂü›þãš'ÿˆýéý2½¸ý ú+ÿ}ÿüý0ýÜü ú“þÉÿUýÊý½ÿ‚ÿÿ àórwÿç_ý¾þ$þ¤èEŸÿèÿ!Ú ÛVÿÅý·c8jÿ¿TVüðþÛþÌüøý ü±þýküÌÿ/þÏh=.?áípþåÿbþ\üCýdþý—þúÿÚÿ¶üGýzPÿ·ü?ýxÿÿÍYÿöþÞÿT…>þlXÿ,ÿ‹ÿÙýËþ þ×ÿþ‘þ9 %“ÿ›ÿ%ÿ»rþQþœþ®ŒFþôýºÿÉ2+þéþÀÿþýý)ý+þ.ýíÿ+ÿ€ÿŽÿYÿçºÿ"þ}AÿƒþoÿYÿÆÿSþ)ýóÿQüœþk.ÿ,þôÿ–2ÿMþãDPY’0ÿ/RêDêØˆþžIï@]ûØýÛþöƒ‰óˆ Ø[ôl þðûîÝï>÷€ ÂýŠà4èò?æý{óÙú© } ÀfüÉ L :¥$/™ Üù[ 'EýE W ©d‚þZ!û„ÝýZ·ÿaü8ü±÷lû„2ÿý¬û›úúVÿCEý¥AÿÏÿGÿ£µþ¾ý[Xâÿ¶ÿWÿOþŽ=&[ž¬6‘Á þÏývÿ8·`úÿ@ûßúÊý”ûëùËú¶ÿzÞ~Ù…üjû·ûÞ|ÃüÏÿáü¿(ÿþmþäÿrÀÿìÿyNþsý/ÿ4R>@ Ý~eþ»[^ÿ¤jÿ9ýãý+þütþûæþÿ‹þÂÿdÿWüçýàý~üöÿxÿ;þõvtwm-5.4.7/contrib/vtwmrc/sounds/boing1.au0100664000015300001300000002064710237645271017336 0ustar callumfid.snd#!„@boing1.wavÿÿgÿÿÛ¾ÿ[ÍÿÍÅ/¨6&A¥­°°Í°+*#.ÿŸÁÓÿ/Ͷ¾Ÿ¼ÿÁ-#'/4IŸ¨´²Û²-ɶ©°°E##$/0A°ÉÛŲÿŸ¥°¥¯¶S'##,8ç[g4<ÿÓ¾¤¤Ÿ©°º8M*2Ó0,/4A¯ÿŸ¦°´60('AÓŶÅ:60ÿÅgŸ¥®ÁÉgS#8ÿ'+62ºÿÉŸ¯©¼IS%2ç°º®É:+gS6¯Ÿ°çɸÓ#&Ó(*+2çM¼ª§¬¸Å'-/ÓÍÛ´¸S6Í6MŸŸÅ[°ªÿ#ÿÿ-/+gEŰŸ­¶º+40SÿÅÁ®:*ÿ26°ŸÿIÅ®²$ÍÓ/)8EE¾°Ÿÿ­´*&ÿIÿSª°4Mÿ,[Ÿ¤[ɺ«2'Óg-/>/M°¦ÿ°¨¾#0ÿÿ+Ű>IÛ+0¨ŸÿM´§ÿ+Û¶406E2¸¤ÿ°£°/#gÿ+ÿ¼AMI)<¨Ÿ¶S°£Û6ÿº<04/-°¶¾²¤°>#ÿ2/º¶g[:(ÿ´¯çÿ«­ÿM¸gM:/+Á¯Í¸ª«Á%A6.Ó¾AÿE#E¸¾ÅͲ®Óç²[>ÿ:)Á¸g¸®§É,ÿ8-çÁEÿE&MÉÁ¼Ó®«ÛM®¾.ÿ.+°SM°­©I<Û%[IÉÿÿ®°ÿ°®2gS*MÉÿÛ°¨¼<ÿ>MÿMÓç0)ÿ[磮°ÿ>gºM¼Å>--*ÿgIÁ¶°§ÉÛç<%ÿÿMº©®°I>Û¶Eºç<4*-ÿSÛÿŨ¦<¼Û+4ÿÿ[¸®­ÿIA´ÿÉ´çA8+EMçÛgÿ¦Ó>Åÿ(.ÿAM°­§ÍMI¼>º´ÛS<0SEÛçÿ¾§Å<¾ÿ*:I>Ûº¦­Å<¾I>Å´ÛS0<>MÛÍg®­[ÿ¼4-8:SÓ´ª°ÿÉÓgç°°ç4.<<>¸Mº«¼MÁç*.8>gÿ®°Á[¶ÿÿº­ÁI/4I6ºÿM°²ºgºE-4:[[¶°°MÁÿçç°ºÓ42M4Áÿÿ¸®°ÿ¾S./-AMÛ°®gÉÿÿÿ¼¶¾A4E<͸ÿº©«ÛºÛ/-*8:ÿŨÉçÿÿÿÓº°ÿ06>E¾ÿ綨ºÓ²<.&6/Eÿ§¯çÿÍgÛͰ¸ÿ8I8ÿÁÿÍ®­Áºÿ8*..6IÁ¬¶ÿç[gÿ¼¸¶IA>:;缮®É¸g6+//AEÁ®°ÿÓSgçÁÁ¶EA6>ÿ¼ÿɬ°Á¼ÿ--/8>M¸«¼ÓÓMMÓç°¸A:4:ÅÛÿ¸©°¾ÍÅ-..88[ͤÅÉçE<Óÿº¸S>8:ÿÍÿ´©°ÉÉÅ,--<6EÁ¦²Å¼ÿ>çÿÓ¸ÿ<60gÁÛÛ©®ÁÛ¸>/.86Ag®°º¼Û8ÿÛgÁ¾M>4IÿÁÿ¼¯¸ÅÍÍ6//<I<ÿͰ¼°²MMÛAS²ÿMEE>ÍÓ¶²Å°ÿºg.*:I<ÿ[ɰ²°´Aÿg6Í´ÿ[I>AÅÿ°Å¸´çÛÉ-)4::ÿMͰ­°ª[[><[ÉÁÿI::[Û´Ûº°¶Û¼:,-48SMÿ¼ª²¦¼ÿ:>:IÉÍM>4E簾Ű²¼gÍA,66I[ÿÿ¯©¶«°g>6/6ŶgM>>ÿº´ç¸º°çÿÿ404ISÉgÿ¬¶°®¼E4*6:¼¾ÿMMSE²¾Á¸°°M[Û426SgÉÿÍ´¬¶°´[4%A:SÁÿÿgÿ<ŶºÉº¯ÛMgÿ80ÿÁ¸Ûº­¼ÿÿEI484MçÉ[¸«Å¶¶¶ÿ+E/<ÿ[ÓÓÿÿÿÍ´Ûº²²ÍÿAA844EÿÅÍÓ¯¸¶¶¸²684->EÛÛÁÍÛIÓ¼¾¼°²Í[I>6AÿÅç¶¶¾¯Ó´´[[28,MSÓÿÅÓÿSÿ¼ÛÁ¸¯ºgM6:>I4ÿÓͺÿ°¶ç¸¾ÉME,//ÿSSÅÓçÿ¼É¼¸°¯¾ÅS86g4>ÿÿÁÿ°¸ÿÉ´®ÿ[0/(I[EÓº¼gÍÅÛÿ¼­­°ÉS/A4))'6<>ÿ¶ºÛɾÓÁ¾°­É¼44>(60ÿçÉŲ¼Ó´­°¼ÿ4,.:4SÁÅÿÿÛÿ¾É°¯¸°:ÿ4:00IÿÿÛÁÓÛɯ¸´¸I,,<2EººÅÓÿÿÛÿ°Á¬ÓggÿMÿÛÛÛ¸°°­º>4:-0g°¶Óÿÿ[ÿÓÿ©ÍÉÿçg208Iç¸Ó¸«°Í:4,*>­ºSÍÿ2Ͱ²SͶ°8ÿI/2EI<Á¾Í°®©Ág8/*ÿ°[ÍÓMEÿ­ÿÿɬºEÛ4,8<8MÉÿ´°©¯Åg:.,ºÿÛÁS8>¾ÿÛÍ«°ÿ´É->I:AÿM¾¼«´°Ûÿ*.¼6g¼S/gÛçgº®¾ÿ®É*gg6ÿMÛÿ¯°°ÿçE(Ûg>ÉÍ:6ÛÛgg¬°ÿ¶¼24ÿ>SSÍÿ¶°§ÍÁç&ÓÛ4ɼE:ÿÿ[I´«ÿ¼°2*M84Içÿů¤çÉ>.Û[E¼Í<8ÿÿSÿ¯°Ó¸¬6E[A/Eÿçÿ¬²ÿÛ84çSÿ¶ÿ4AgÿMÉ«ºÓ®²<:[E2ÿºÿÅ«¾ÁE4ÍÛ:¾¸Iÿ¯ÿ8Iÿ:[ººÓ¶¯Û6ÿ[0+ç[ÿÁ­°I:ÛS:Û°AAÿM8ÿ°ÛÍ®­ÿEÿg.AÿÓ[²©².IÛ>4°ç:Iÿ>:º¼ÿͦ²AÿÍE/EÅIS°ªÓ4Ûÿ8Û°ÿ4ÿÿ4[¶¼ÿÁ¨g>ÿÛ80ççSÿ¥¬:[ÉE4ɶ>ÿÍA:Û²Óÿ®¾ÿ<Íÿ6<ÛÓI°¨Ó:ÿç4>¶ÿ>gÿ>>º¸Ó¼°¸AgÛI.<ÛÿM²ªÁ:ÁM2ç¶ç6ÿÿ6g¶¸ç¸°ÿEçÛ4/ÿÍMÿª°<çÅ:A¾²<[ÿ:6ÿ°ÿɰ°[MÁç48ÅÉ<´ª¾6çÿ48°É>SgE4¼¾çŪ°EgÉS42ÁME¸¥Å8ÉI0[°Ó:ÿÿçÿ.ɺÛ窬ÿEÿÿ62ÿç[ÿ¦¶EççA0¾°IEÿÿ0[¶Ûÿ°¬ÿ>ÿg<6[ÿMÿ°«ggÍI/A¸ÿMÿÿIIººÛ´­°MgII8E[ÿÿÛ°®ÿÿÛM2IÛÿIÿÛ>AººÛ¾¬°SMIA>AgÉÓÿ°°çÿÅç4>ÿç6SÍ<:²ºÿÍ©ÛSE[AIMÿÓÍSͰÓMÅÉ>2çÉAÿ¼gAÁ¸[ÿ¯¼ÿÿÿ4<ÿÿIÅÿ<ɬÁE´S.0ÍÍAÁÁÿ[¸Íÿç°ÉÓÅS4[ÿA>ÁS>¾­¼g²Í2.ÿÛE;ÿgÓÅÿÿ¼¸¼¼[4:ÿIEÛÍÿS²ªÓç¾S0-ç[ÿç¾[SçÓÿç¶°ÅÁÿA4[ÿAÿ¾ÿIÓ¬Û[Óÿ<,gÿÿÿ¼ÛgÿÛÿÿͰÓÅÉÿ2[çg<ÅÅçM­¯[MÅÿ04gÍS;çIÿç[ÿ°¶Å¸¶A-Aÿ82żM<°ºgS°Á/>ÿÛEÓ¾ÿgÛÛ[Û¶ÁÁ¼ºM,Eÿ4>ÿ²SS²¸[S°S:<ÿÿI¼Éÿÿçÿ[žºÅ¼ºÿ00MA<ÿ²¼Eɰ¾SÉÓSEAMÿçÛÅÛÿÿÛÓŸÁͯI+2gE0¾°ÍEůÿÿÛ¾AAIASÿÿÍÍÿgÿÿÓɶÍÁ°E04ÿI4¾°ÅEŶÿgç¾MI0Ó¶ÿ[Ó¶Û[ÓÛgg<[ÿgÿÓÅÓÛçÿÿ¼Åçɰç4IÍM0çºÿEÿ¶ÛÿÅÓÿMEE[[ɾÁÍÛçEçÛÿÿ¼¯<2Ûÿ8<º¾gEÉÁSÓɼg[EMEçÍÅÅÁÉIÿÿçSɰÿ4AÛA2ÿºÁIººÿ[º¶g[ÿI:gÅÓÿ¾Ígç¾ÍEÓ°ÿ0ÿÛ<:ÿ¸gM¸ÁÓÿ°ÛES[84ɶÿÓ¾ÛEÿ¾ÿg²¶8:ÿ4ÿÛMSÅçSÿ¼ÓÿÅÓ62ÿÛME¸ÛMɸÅSÁÿ8>ÿgÿÛÿçÉÛÿ¾¶ÉÿÁÛ>ÿÿIÿ¾SI¼ºgÛÁÿ4ÿçggçgÿg[ÿ¸ºç¾²ÿ:çÛ8[ÉÓIÓ°g[Áÿ<>çÛÿÿÿÓASç¼çÛ¸É[SÁÍAÿçSI²´ÿÓÅS4AÓÿ[[¼ÛEÿ¾Íÿ¼¸çMÿÁS[ÉÿIÿÁÿÿÉçS:SÿÍEgÍÿM͸Íg¼ÓMIÁÿIÍÅÿÿÁÍÿÿÓg:IçÛEÿÉÿ>ɲÓ纼I<ÉÿAgÅ[[¼¸Íçç[>ÿÉÿM¾¶ÉÓÛÿ6:ÿÓgSÉÛE[¾Éÿ¸°ÿSÛçAMÍgIÛÁÁ;ÿ[0ÿÁISÅÛ8AÁç[É®ÍEºÿ6ÿÓÿEÉÁÅç¾ÓS8[ÓMIÅÓEIÁÍ[ɲÿEÓÅAMÉÿSç¼ÍçÍÅg8ÿÓM[ÓÓ>ÿÍç[¾¼[[¾ÿSçç[ÿÛ¾ÓÉÓÅIEçÿE[ÍgAgÅÓMºÉ[[¾ÿ[ÓÉ[[ÿÉçÍÛÉÿEççSÿÅÿEgÍçSż[S¾ÿSçÛgMÛççÓÉÁgEÿÛISÉÿI[ÉgS¼É[ÿÉÿMÍÓÿ[ÓçÍÛÍÁg>ÿÿ[IÉÛÿMÓÓSɶÿIçÓM[ÛÿSÿÛÓÛ;ÍMIÿÿEÿÉÿAÿÉÿS´¶Mÿ¾ÿAÛÉ[[ÍÓçÛ¾¼ÿ:ÿÛMgÉÓESçÿMç²ÿEÁçE[ÁÿEÓÉç纶çEMÿSSçÿÿg[ÿÛçÁ¸ÛgçgI[Íÿ[ÉÍÿÅÁÓÿÿ>AÿÿgÿÉÿAÓ¾ÿÛ°¼MçÛIEÿç[ÿÅÛçÛÉÓÿA[ggSÿÉÿ[ÓÁçÿ¶¼SÿÛM<ÍÅMÛ¸çSçÅÿÿÉMÿÿMÍ´ÁÿçÍÿ[Ó¾Ígÿÿ<<ÿÛÿͺÓIÿÉÿ[¼¼EEçÓ>M¾ÅÿÿÁÓSç¾ÍÿÍÍISÓÿSÿ¾ÿIÓÉÿSºÉM<çç<[źggÅÿIÿ¼ÓÿÓÉ[>ÿÿSÿżgÿÉÍÿÿ¾ÿ>EÿgIç¸ÅgçÅÿ[Û¼ÉÿÓÿAEÿÿSÛÁçÿÛÍÿgçÛMEÿÿ[[͸ÉçÛÅÿgÛÅÿÿÉ[Iÿ[S[Á¾ÍÓÉÉgMÿÍÿÿÉgEMÿ[ÿźÿçÓÿM[¼ÛEMÿgIg¼ºÓÍÅçE[ÁÿgÅÓ>>Í[EÓ¸ÿMÓÓ[SÅÁSMÿÿ>AÁ¾ÛÿÅÓMÿÉçÿ;[SÓÿI[¸ç[çÅÛMÓ¾ÛIIÿIEÿ¼ÅÛÉÓgIÓÛÿÛ¼ÿEÛçIgÁÓgÿÁÿSÿÁÅMSçgEÿºÉÿÉÉIAÓÿ[ç¸çMÛçEgÉÍÿÿÅÿ[gÅÅgSÛÿAÿ¼ÓÿÁ¾MMÿÛSç¸ÿAÿçAMÍÓÿÿÓÿ[ç¸ÁMÿÛM:ÿÅÿÿºÛEgÍÿ[ÉÁgÿÿÿgçÓçÿÿÿgg¾Éÿÿçg:ÿÓÿÓºÅÿÓç[ÿÉÿgçÿ[[ÛÿçÓÓÿSçÁçÿÿÿAIÿÿÿͺÿÿÍÓÿÛÉÿÿÿ[SÿÿÿÓÉÍgÿ¾ÓSÿÍS<ÿÿ[ÿ¼ÿ[çÍÿÛºÛÿ[ÿ[IÿÛÓÓÅç[ÓÅÿçÉM:gÿM[¾ÛÿÿÍÿÿÍÛÿçÿgMÿÿ[ÿÅç[Û¼çÿÅçASÿIMÅÓÿçÉÿÿÓÍÛÿÿÿÿÿÿ[ÿÍgIÓ¾g[¸ÿ>gçI[ÅçgÿÛÿÿÉÁÓgÿÿSgÛÛÿÓÿgÛÅgÿ¾E:ÿÿMÿÅÿ[ÿÿÿÿÓÅÓ[ÿÿMÿÓÿÛ¾ÿÿ¾ÍgÓÓEIÿM[ççÿÿÿçÿÿÓÉÿÿÓggçÿÉÁÿÿ¾ÅMÍÓAMÿS[ÿçççgÓÍÿÓ¾ÿSÛçÿççÅÓÿÿ¾Óÿ¼Í>[gEIÛÿÿÿÿçÛçɼÿgÿ[gÿçÅÅÿÿ¾ÿÿÅÿMÿ[I[ÿ[ÿÿÿÿçÿÉÍÿçÿÿÿgÿÁÛ[¾¾ÿͼÿMÿÿIÿÿÿÿSÿçÿÿÁÓÿÛÿÿÿÿçÍÿgÁÍÿ¾ÍgSÿ[ÿÿÿÛÿSÿÿÿÛÅÿÿÿççÿÿÁÿEÿÉ[Û¼ÿMÛM[çÛÛÿÿÿÿ[ÓÁÿÿÿÿÿÿÿÁÛ[ÿÓÿÿÅÓSÿÿMÿÿÍÓÿÿÛÿÿÅçÿÿÿÿÿÿÍÉgçÉgÿÉÓSÿgM[ÿÿÓÿÿÛçÿÓÓçÿÿçÿMÿºÛ[¾Ó[ÉÁÿÿÿS[ÿÿÛÿÿççÿÓççç[gÿSÿÉÅSÿÉÿÿ¾çgÿSSÿÿÿÓÿÿÛÿçÍÛÛçgÿÿSÿ¼É[ÍÉÿÿÅÿgÿSSÿÿçÓÿÿÛÿçÓÛÓÿgÿÿSÿºÛgÉÓgçÅÿÿÿSSÿÿçÛÿÿÿÿçÛÛÛÿÿÿÿIÿ¾ÿgÍÓgçÁÿÿÿ[S[ÿÛÛÿÓÛÿÿÍçÿÿÿÿÿSÛÁçÿÛÛ[ÿÁÿÿçgMSÿÛçÿÍçSÿÍÿçÓÿÿç[ÿÁÉÿÓÓ[ÓÅçÿÛÿSgÿÿÛÿÍÿ[ÿÓÿÿÓÿ[ççIÿÅÛ[ÓÍgÿÉÛÿÿÿS[gÉÓÿÉÓ[ÿÉÿçÉÓgÛÿIÿÉÿÿÉÿSÓÅÿÿÓÿMgÿÿgÛÍÿSÓÛÿÓÁÿ[Íÿ<ÿÁÿÿÅçMÿÅÛÿÍçMMçÿ[çÅÛSÓÓÿÛÁÛSÿÛIIÿÍgçÉÿgÓÉÛÿÓÿS[ÿgÿÓÍÿÿÓÿÿÛÛÿÿÛgI[ÓÿçÁÛÿÿÉÓÿÍÛ[Sÿ[[ÛÉÛÿÛÿÿÿÍÛÿÿçÿEÿÍÛÛÁÓ[ÿÓÿÿçÛ[MgÿÿÿÅÓÿÿÿÿÿÛÉçÿÿÍSEÛÍÿÿÁÿMÿÛÿÿÓÛM[ÿÿÿÿÉÓççÛÿÿÓÓçÿÉÓE[ÓçÿÅÉSgçÿgÿÉgSSÿgÿÉÅÓçÿÛÿÿÛÅÿgÓÿESÉÛÿÉÉÿgÓÓÿÿÓÿMMÿÿÿÓÍÛÿçÿÿÿçÍÿ[çÿAIÓçÿɾggÓÿ[ÛÉÿMÿÿMÿÉÉçÿÅÿ[ÿÍÿ[çÓgIçÍÿÛ¾ÉSÿÛÿÿçÉÿMÿÿ[ÿÉÁçÿÍÿSÿÍÛ[ÿÅÿEÿÓÿÿÁÁgÿÛÿÿÓÉÿ[ÿÿMÿÛÍççÛÿÿÿÍÍÿçÉÿEgÛggÅÉÿgÛçÿçÉçMÿÿ[gçÉçÿÛÛÿgÍÛÿÿÉÛMÿÿÿÿÓÁÿÿÛÿÿÿÛÿgÿÿÿSÿÓççÛÓÿÿçÓÿÿÓÛÿgÿÿgÛÉÛÿççÿÿççÿÿÿgSÿÛçÿÛÓÿÿÿÛÿÿÓÓS[ÿÿgÓÉÛÿççÿÿÛÛÿÿÿg[gçÛÿÛÓÿÿÛÓÿÿÓÛ[gÿgÿÓÉÛÿçÿÿÿÛÓÿÿÿgSÿççÿÓçÿÿÓÿÿÛÓÿÿÿ[[ÓÓÿÿÛçÿÿÛÓÿÿÿg[ÿÛÿÿÍÿÿÿÓÿÿÓÓÿÿçggÓÉçÿÛçÿÿÛçÿÿÿÿ[ÿÛÿçÓÿÿçÛÿÿçÛÿÿÿgÿÿÛççÿÿÿçÛçÿçÿ[gÿÿÿÍÓgÿÓÿÿçÓÿÿçgSÿÍÛÿççÿÿÓÓÿÿÿÿ[ÿÿÿÛÍÿÿçÿÿÿÛÿÿçgÿÿÛççççÿÿÓÓÿÿÛÿ[ÿÿÿÿÍÿÿÛçÿÿçÿÿÿÿÿÿçÓÿÿçÿÿÓçÿçÛSÿÛÿÿÍÓgÿÍÿÿÓçÿÿÿg[ÿÉÛÿÛçgÿÍÛÿÿÿSÿÿÿÓÉÿÿÓÿÿÛÛÿÿÿÿgÿÛçÿÛÓÿÿÍÍÿçÛggÿÿÿÿÿÿÛÿÿÛÿÿÿÿÿÿÿÛçÿççÿÿÓçÿÛÿ[ÿÿÿÛÿÿÿÿÿçÓÿÿÛÿ[ÿÿçççÛÿÿÿÓÿÿÛÿgÿÿÿçÿÿçÿÿççÿÿÛÿÿÿÿÿÿççÿÿÛÛÿççgÿÿÿÿÓÿÿÛÿççÿÿçÿgÿÿÿÛÿÿÿÿÿççççÿÿÿÿÿÛçÿçÿÿÿÓçÿçÿÿ[ÿÛÿÿÛçÿÛÓÿçÛÿÿÿÿÿçÿÿçÿÿÛçÿÛÿÿÿÿçÿÿçÿÿÿÛÿççÿÿÿgÿÛÿÿÿÿÿççççÿÿÿÿÛçççÿÿççÛÓçÿÿÿ[ççÿÿçÿÿÿÿÿçÿÿgÿÛÿÿÛÿgÿÛÿÿÛÿÿÿÿÿçÿÿçÿÿçÿÿÿÿÿÿÿçççÛÛÿççÿÛçÿÿÿÿÿçÿÿçÿÿÿÿÿÿÿÿggÿçÿÿÓÿÿÛçÿÿçÿÿÿÿçÿÿçÿÿÿçÿÿÿÿÿgÿÿÿÿÛÛÿççÛççÿÿÿgÿçÿÿÛÿÿÿÿÿÿÿÿggÿçÿçÛÿÿÛÿÿÛÿÿÿ[gÿÿÿÛÿÿÿçÿçÿÿÿgÿÿÿÿÓÿÿÿÛÿçÓÿÿÿgÿçÿçÛÿÿççÿççÿÿÿÿÿÿçÍÿÿççÿÛÛÿÿÿgÿÿÿçÛÿÿçÿÿççÿÿgÿÿÿçÍÿÿçÿÿÛçÿÿÿgÿÿÿççÿÿçÿÿçççÿgÿÿÿÿÍÿÿççÿççÿÿÿgÿÿÿÿÿÿÿÿÿççÿÿçÿÿÿÿÿÿÛçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿççÿÿççÿÿÿÿÿÿÍÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿÿÿÿçÿÿÿÿÿÿÛçÿÿÿÿÿÿÿÿçÿgÿÿÿÿÛçÿÿçÿÿÿÓÿÿÿÿÿÿÓçÿçÿÿÿçÿÿÿçÿÿÿÿÿççÿÿÿÿÿÿÿçÿÿÿÿÿÿÛÿÿçÿÿççÿÿçÿÿÿÿÿÿççÿÿçÿÿÿÿççÿÿÿÿÿçÛççÿÿÿÿÿÿççÿÿÿÿÿÿÛÛÿççÿÿÿçÿÿÿÿÿÿçÓçççÿÿççÿÿÿÿÿÿÿÿÿÿçÿÿççÿÿçÿÿÿÿÿÿÿçççççÿÿÿÿÿÿÿÿÿÿÿÿçççççÿÿÿÿÿçÿÿÿÿÿÿççççÿÿÿÿÿÿççÿÿÿÿÿçÛçÿÿÿÿÿÿçÿÿÿÿÿÿÿççççÿÿÿçÿÿççÿÿçÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿçÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿçÿÿÿÿÿÿçÿÿçÿÿÿçÿÿÛÿÿÿÿÿÿÿççÿççÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿÿÿÿÿççÿÿÿÿÿÿçÿçÛÿÿÿçÿÿçÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÛçÿçÿÿÿÿçÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿçÿÿÿÿÿÿçÿÿÿÿÿÿçÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/sounds/pop3.au0100664000015300001300000000136710237645271017036 0ustar callumfid.snd(Ï@one dripþþÿþýÿþþ~~|}~~~ÿ~~þ~þþþþýýÿúäáXFEVÀ­ª°Ü0!"7» –Ž‘˜ª- Њ‰‹’§2  Œ‹—¹$ -¯˜Ž‹•¯) 4ª•Œœé '¹™ŽŒŽ›Î ,®–Ž’¤8ÖœžM ÎœŽ“¦4.¬–Ž›Ö%¹™›Ê*±˜’ŸFG¡”‘™»%1ª–’˜±)2ª—“›½%M¡•–¢E+²š•œÄ$%Öœº(&ØÄ&-´œ™¤LJ¦š¹+/²œ¬8+¾Ÿœª> +¿ ­: 0·ŸŸ¸/#C¬Ÿ§ù( -Ť¢·3"'P«¢®D&&>±¤¬W)';¶¦¬[*(>µ§¯K*+L°©¹<*/Ù­¬Ð2,>»¬·F-2߯¯á3/M·¯Æ;/@¿¯¾B1>Ʋ½H3>Ê´¿H5AǶÅD7J¸Ñ>:]½¼z/./9]ŵ³¶Ã\=1/5BÜÁ³±²¯O$#1汩¨¬ÄV1))+;q¼®­®¾Z8,,.=Ù½¯¯µÄQ㵯¬°ÉQ5/,0Gß¹°°·ÔL4.06MÒ»µ¹½äD826=\È»²¶¸·D#%6Ì­§¦®ÌH.()-?ܵ¬­¯ÆL3*+/HÊ·­®µËG8..5BÖÄ»Ç:i¬ª³z3((/@ų­¬¸ÅJ3/.9NƳ°®»í?1..;gȶ³·Å^>1/6BëŹ¹¿ÎO=66=LÙÀ»·½¿¿>$ (;«¦§¯Ö>,(*/HȰ¬­±ËG1*,2JƳ­¯·ÐD5./9Oʾ¹Õ<Ô¬­»P0)+5Q½²¬¯½Ò?2/0>g¼²±²ÅZ;//3Bæ¿¶¶ºÕK:02:MÓ¿¸»ÆåG:58B\;ººÅÈÉ>&#*:Ë®©¨®Ï?.)*/GÍ´¬­´ÏB/+-5Oij®¯¹×B5.1;Vʾºß>Ƭ®¾H.),8q¸¯¬±Áï:0/2Dะ¯µÍL6//6MÑ»³¶½äD6/4=_ɼ·½Ìd?858Caɼ¹ºÈÜÌO*$*:É®©©°Õ>.)+2JÊ´¬®¶Ó@0+-7Xô®±¼á@4.1_ɼ¹¼ÆÝÝP.')6ܳªª¯ÈD0*+/@Ô¹®¯¶ÎE4,-6L̹°±»ÖI7/2;NÕÄ¿oK¹«®½H.)+5^¼¯«®»Ý=0-0>ü»±¯³ÆW7/.2DÞ¼µ³¸ÒK7/29SϾ¶¸ÁîE837@bȼ¹»ÃÜÞg1&'1ý´ª©¬¿J3**.=Û¹­­³ÄM5,,2CѸ¯¯·ÇO90/6DáżÎS¿®´ÇC/*-:þ¹¯¬±Às;0.4Hع±±¸ÏM7008Qκµ·¾}A5/4?oȼ¸½ÎZ?75;IâÁº»ÂÍkçÓ7&&.Xµ©¦ª½I1)(-=ݺ­«°ÁJ5,*1D̶®­·ÎG4./9Mλ¸Ç]ʸÀè>1/9Pɵ²µÀþH859EæÁ¸¹½ÌO<67?TÏÁ½¾ËnD;7:HûÈ¿¾ÅòN@;=E^ÖÇÁÅÔhXQÓ»S+&+F»«©¬¼K2**/>ϸ®®¹Ù>1,-;h½²¯´ÈW9118Pϼ¸¼ÙHcÏÜnIBIZãÊÀÇÑ}PJFKU|ÐËÊÕí`KHJRiæÐÕÜé]OHINXíÚÖÞu_OKLQcýâÜæýc[ZýÚ¿±Ø,#&9¿«§ª»K/((/Hij­¯ÀW4,,3Rò®²ÃO9/1<\·µ»ØK=?IWßÌÅÄÌêYKFK]ÝÉÈÎß]LGHQùÒËÍßcMEEJ\ãÎËÛjOEBJ_ãÒÍÕî[KHLYwÛÎÏÛtðíÈ®É)!6¶¤ ¨Ë1$ '>¿ª¦­É<*',AÄ®ª¯ÆD/,1Mñ®·ÑD32AÞÉÇ¿¿Ì|G=?LçÆ¾À×R>;>OÚÆÂÌtJ??IiÒÉÌßUGDJ^âÒÏÞaOKM^ÞÏÐÞ`MIMkÕÊÌÝÜüÏ®Ä( <«Ÿ¯8$M­¡¥¼9%"-é®§¬É9*+;É®«´å7,/G¯®ºc9./IÀ¯®¿J1.;Ý·°ºc6.5[½´»ê=37Nɺ½ÞB8:P̾ÃóC:?cÈ¾ÅøF=CjÊÁÊjC>OÚ¿¼¿¶Û'%ÙŸ›ª9)¼ŸŸ·.;¯¢¨Û,#,Ý«¦¯\-):í­É=YÉÁÐTDNøÆ¼ÓH?N̾ÊcFN×ÉÍûGG^ÚËÜXLNlÝå_RSdëü^UTaþr^Z[dþüf\Z]n÷s_Y_tú|lfmïéÏÇH1=Я¸>/9í¹ÁJ;FòÍÝLGaÝã[JRàÏàVKZÛÐëTN\çÜoOHkºº]:<×´¿M?UƼßBEðÆÇ`DNßÍáOI]ÜÞcMOvârVS]t~aU[pút_Z_v~^U\véëj[_xåèÝÉ`8BйÀ>1IÈ¿ß?<`ÇÌ\CIëÏîPL_ÚØgQ\êÚëZR`ëé^MOQû»ÁB7H¾³Ù=CݽÅPB_ËÊoIOØËëRNjÖÞ[Q[÷ãgRWsïlWSb÷{\Q[|ûgXVaþ~cZ\løyýùìÍ|:?Õ»ÁC3Fɾé>>wÇÏSDRÖÏcJNöÔèYSoÝèaU]íò]TQYZä»Ä?5Lº´ò\ÉÉdGNßÍåSO{ÔØlUfÞÜ÷^\|èíjWY[ܸ»E0?»®Ç=7y¸½Z=LÈ¿ÚJGêÆÒYK^ÔÑrNR÷×â\RaïîlZ_xû{_Yeyùv\_ÿ}üvgtú|~ý|åÛVASɾ×D=UÊÄçHEdÍË{MNuÑ×nVTuØÙü\^}æçkZ\jt\Mô¸¶R-1ͬ±X18Ѳ¸]7>ϸ¾[µ§®Y./S¶­¼J4:麹ÏJ=HÞÃÆçMEOéÏÏóSLTüÝÝë_RWlçãñgVZsêçïw`azíêùylcwçèñkZ\lëÛßúa[eñÝÜîh[_ýæéú}ldrü~~ýr[STRNLÔ­©½8%'E¯¢§Â3%+S°§¬Ë6*/O¹¬±Ô;-0LÁ³¶Ô?35GÑ»ºÊT;7B}ǽÆkC<@[ÑÆÉßTGHU}ÔÚjëÐÖñVIL\âÌÈÐpNHNqÛÏÏáhXW\mäÖÙëh\[[c}u`THFÓ®©²_-'-O³§¨´\0+/K½­¬µá;./?뺯¶ÎH409ZƸ·Ä`=59JÚ¾ºÀÝK<;Gk;¿ÎjHAETíÒÎÞòßä|cPMVÿÖÎÎÚý^UU\ußÖÒØíj[TVdýßÕÝóePJEFOX˯«³ä5)*7ಪª²Ô?0.6T±­³ÈM6/2BÙ¼³µÄ_=56>bȺ¹ÁßJ:7DWðÑÈËÌÈÒlK>?M}Ì¿¾ÇâVE@HWìÌÅÈÐ}PGEMbÞËÈÍÞ]KGKYð×ÌËÛrXMMShâÔÒÚéoVNTaêÔÎÍÓÙÔj>55@è½³´¿ÿ>43;TË»¸½ÓM<7:KÝ¿º¼ÇïL>=GeÎÀ¿ÇÙûZJLXwÑÅÁÊàcMHOjÚÉÅÌß]IFMbßÍÊÐæ]LIPhêÓËÓì_OMRbâÐÍÖîfTR[mìÚÒÚëm[cøçË¿ÐJ73>á¼³¶ÇZ;49GéÀ¹½ÓQ=8=VÓ¾ºÃÚWA>JóË¿¿ËñVKHLiÐÀ½ÆÞP?BRáÆ¿ÄÝUECLzÌÄÇÛYHGPpÕÉËÜbMIOmÖËÌÝ_MINoØÌÏáqUMX}ÝÓÓßlY^ùϾÉL94?غ³ºã?35HÖ¼¸Ãm?8HyÍ¿ÀÓ^IH[ÝÒÓØé~~hfvöÞÛîziexÿïäî{gY^yüëæóu`_pzôïývfh}þ}þ~~ÿÿ|îäï}~ÿ~}ïäî|ÿþ|÷äÙÎÓV>=O̺ºËM87GÓ¼»ÎQ=:JÚÀ¾ÎYA?OÛÃÃÑeHEXÛÊÊÝyúxm~ùåÓ×ïzb_~àÖÛñxhnôéåíûuoz÷èèùnelýêåøüo]júëåöþoh|ü|ý~~ÿ~ÿ~ÿ~ÿþ|ùëÝÝmOM^×ÇÊáUFJfÒÅÌzNHO}ÏÊÔxNK^çÏÍåfWTdìÞéleìÍËèNCLçÅÁÎeGG]ÏÁÇÞWFMóÍÆÏqMIYâÎÎç_OQnÜÖàqWQaõÞÜëiTWnêÛÜíj[_záÛç~liþìåéo^büßÚßîbS]ôàÚÞñfZbúßÙã~e^hþßÛì}g]jzý}õÎÂËoE>LÝ¿»ÉcC?QÖÀ¾Í^EDTÖÃÅÕ]GG[ÛÊÊÛ]JJ[àÎÎâ_NM]ìÖÓâiRReîÖÒåi\Zd÷ÞÚäxjeizíççéømgeséæçëÿjfoôéæçîxhguïæë}lfghekrçÉ¿É|D;Aoź½ÑS?>RÓ¿½Ç}IAIhÐÂÅØ]GDPòÎÅÌéVGHZâÎÊÒ{SLQiãÐÍÛ|\SWkâÕÔßúbVYoìçßÛÛßw[V[oéÙÓÚü^XWcôßÚÞ÷eZ\kþæÞçz_ZSWjxÛľÄáI;HpÌ¿ÀÌòLAEQëÊÄÉÛ^IDMkÛÌÉÐñYKIRx×ÍÏÛoUMO^ð×ÎÔãlVS\oèÜÚé_`øàÙâ}g[[hîÝÛÛèþl[^yôçÜÞê÷ngggxû{ún]Z`ÝÅ¿ÅÛVB?JcÖþÆÛcJDK]àÍÆÇÓöVJHNgâÎÈÐæeOLQdòÝÎÎÝödROZhï×ÒØçr]SWgyäÔÒÛôl^Yb{~ìÛÛãí}jffjýíáÛè~{kdj|~ùèåìþ|ûndnýÿ~þäÒÌÏæ_NINbìÒÈÉÔð]OLRmäÔÌÎÝ}aPMXmìÖÎÖä}_URXgôÝÓ׿x^TU^pìÞÚÜçÿl\ZgyìÝÛÜèyûv[OO]ï×ÏÌÒìgUMO[øÞÓÍ×êoWRS]|ëÛÒÔßw_Z\iÿêÙÒÕÞøeZ\lýé×ÔÙçuk^\mûæÛÚÞðwa[eoüãÚÜïÿx__p{øéåíüxjdk~~ùæèÿ}ûoqú{ûèæèèåáúXMMTsÖÊÈÎå_OLN]ïÛÎÏßúbPOaôÞÔÒÙêra_o÷áà~}üyìéÿ}ý}þ~~ÿ~ÿ~~ÿ~ÿÿ~ÿ~ÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿþ|îÜÚì_PLSsÛÌÉÕ}[LK\óØÍÏánUNX}ÛÒÔÝòfZbúàÔÕâþ`ZiïÜÓØèr]Z_}ÙÒÜíw^Ze÷ßÚßðm[[kíÝÚåúo\]røâßîýkerþôæåóûqhwüîäð|ÿþ~~íæèçççú]QUfæÑÍÔì[LOkÝÏÑåiTRa÷ÙÓß÷eZdößÓÖåùmh|ý~àÖÛókehzàÖÛókfg|àÚÝïjeitïæìþjes|ïéù|kkþúçèüÿjkþúèçü|ý}þêåõ|þÿ~ÿêåö}ÿ~þnegsåÖÙëm\^wåÚÞöcZ^väÛärgfmìÚßùÿnh~ìçåë÷voxüåÞëúmh~ìæçözü~|ëë~}ýÿzïèú|þ~ÿ|ññ{ÿþ}þ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~þ~þÿ|òææï|~ý{òåì~}ý|úçèû}ÿý{øçòzý~þ}ùèåìýkdtëßÛèndmðâÜáþnv}îåîþsp|óæëüwoyøéæù{ü}~ëåò|ÿý{üîù{ý~~þ~ÿ~~ÿ~ÿ~~ÿ~ÿ~~ÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~~ÿ~þ~~þ{óçççôfguöÞÜíyjdyâÛÜìjfoüâßìükjÿëæò|~ý}~êë|~ÿþ}ýîù{ý~~þ~ÿ~~ÿ~ÿ~~ÿ~ÿ~~ÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿ~~ÿ~ÿ~~ÿ~ÿÿ~þ~þÿ}ëåôþrekÿàÙã÷nhwîÞÙãõnhyýìäõýpgyüíäó|ÿþ}~êë{ÿþ}üz÷îÿ}þ}ý{÷îþ|ý}ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿÿÿÿÿÿÿÿÿÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿ~~þ|ûëäëù{jkúæÚÜì|jesõçÞäôÿqqþðæåõþ}ouúíåèø|ÿþ|ùêåëý}þ~þ|ïäï|þ~ÿ~~êåõ|þ~~ÿ~ÿ~~ÿ~ÿ~~ÿ~ÿÿ~ÿ~ÿÿÿ~ÿ~~ÿ~ÿ~~ÿ~ÿÿ~ÿ~ÿÿ~þ|úçèü~ÿ~þ{ñççèõ{þþ|ûëäêü}þ~þ|ðäí}~þ}ÿýzòç÷zü}~ü{úîû{ý~~ÿ~ÿ~~ÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿ~ÿ~~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿþ|îäï|þ~þ}ýëåéú|ý~ÿÿ|íäð|þÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿÿ~ÿ~ÿÿ~ÿ~~ÿ~ÿ~~ÿ~þ~ÿêåõ|þþ}ý~|ëê}}ý}þ~~ÿ~ÿ~~ÿ~ÿ~~ÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~ÿ~ÿÿ~þ}þÿ{òð|~þ}þ~~ÿ~ÿ~~ÿ~ÿ~~ÿ~ÿ~ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ~ÿ~~ÿ~ý}~ùpínyßQÌPdµvtwm-5.4.7/contrib/vtwmrc/sounds/bleebloo.au0100664000015300001300000001356510237645271017743 0ustar callumfid.snd%P@bleebloo.wavEEEEEEEEE<<<<<<<ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ<<<<<<<<<<<<<>>>ggg>>>>22222222>>>gggg>>>>>>>gggg¼¼¼¼ÛÛÛÛÛÛÛ¼¼¼¼°°°°°¼¼¼¼¼¼¼°°°¼¼¼¼ÛÛÛ22222>>>>ggg>>>>>>>>ggg>>>>22222222>>¼°°°°°¼¼¼¼¼¼¼°°°¶¶¶¶¶ÉÉÉÉÉÉɶ¶¶¶¶¶¶¶8888888MMMMMMMM8888888MMMMMMM888888888¶¶¶¶¶¶¶ÉÉÉÉÉÉÉɶ¶¶¶¶¶¶ÉÉÉÉÉÉɶ¶¶¶¶¶¶M8888888MMMMMMMM88888888MMMMMMM888888Éɶ¶¶¶¶¶¶ÉÉÉÉÉÉÉɶ¶¶¶¶¶¶ÉÉÉÉÉÉÉɶ¶¶¶¶MM88888888MMMMMMMM8888888MMMMMMMM8888ÉÉɶ¶¶¶¶¶¶¶ÉÉÉÉÉɼ¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼¼ÁÁÁÁÁÁÁÁ<<<<<<ÿGÿhÿ‡ÿ„ÿ\ÿeÿhÿ‡ÿ¥ÿ±ÿ®ÿ¢ÿÓÿÙÿÙ0XaRÿëÿÇÿ·ÿ®ÿÖÿú ÿëÿîÿñÿÊÿ´ÿÖÿÖÿÐÿÓÿÐÿÍÿÊÿëÿúÿôIda3-9<R¤¤¡Ž‹pX9?-!L 3*96-XŽ‚¡ÑíùËÎÞÎáÂÎÂÈ‹*ÿåÿ«ÿ–ÿ»ÿ®ÿŸÿxÿeÿSÿ>ÿ_ÿ‡ÿ«ÿŸÿÿxÿPÿ>ÿ,ÿ>ÿSÿeÿkÿŠÿ»ÿÍÿîÿý ÿîÿÊÿÇÿ·ÿ~ÿÿÿrÿŸÿ¾ÿÄÿÇÿÖÿßÿñÿúÿåÿÓÿÁÿ“ÿœÿ»ÿ±ÿ¥ÿ¢ÿ·ÿ¨ÿrÿŠÿœÿŠÿ»ÿÐÿÐÿÐÿÙÿôÿëÿÐÿèÿ÷ÿÙÿëÿÐÿå Ej[UdLL*ÿýÿèÿèpªÞóðó¡U'I^I$-R^^j3ÿÙÿŸÿ“ÿ™ÿ»ÿÍÿâ<E$I9!?’ˆ¤ÈˆvdX|‹v|daUIE'!ÿßÿÐÿÄÿœÿÁ*3I?EgdaÿñÿÙÿ“ÿÿ®ÿôIyj$  '3$ÿôÿ¨ÿÇÿî 0<X‚’$ÿô 6O<ÿ¾ÿŸÿÊÿÜÿîBdXÿÜÿÄÿnÿþïÿÿ6mÿâÿ5þõÿ~0Uÿ„ýòý|þûNdm7­úö‚õãø û¿ÿ-¢ y› P¬úªöõšùhÿÇ[ ‡ ñ /Àÿ/üü6þlRÿ®û6ô§ï ííð»öµýoM¡õXÀ¼ÿ þ&ÿnˆ!ž•¬XýÎûŒú ùtùâû0ý£üá ë € ”ãû¤õÂó ô0øü£ÿô‹„2âJ2]ÿbþDþfÿhªgÅEûŸA—ÿ¨ýæý/ýÈÿ-Uþµû@øöB÷ûO”Ë Ä 1  ýÁüíýWý…ýcüÔûùÀø(÷„øÍü '® K Ï tHÑþ¯üðýxÿàW|ý¦úºøâøùâü…8gpa'útôüò¢óúøŸþ`Yƒ^•TþuýrÿA™ (»Ö îøÄôFõ”ú’j%nî;üàô[ê¥ãáæ9ñxÿŸ w•ƒ UüHø>øú ý¾oÕ m²üùùùèÿ%’  'vùîö×øü§®påþòùîõÝôÂ÷xýÔ[ Ãi ·Öümöoô¹öàûaùŒ!IfÈžóRÿ˜Mj „íˆý‘ùnùüBáwâ‡NýEø±ô•ó÷Aÿrž £Q™ýu÷ÊóçõûIÿ»oI B l £ E »Zëöýæüöþ äWÊ{mÿ–þþTÿýÞÿ‡üQøÓö¯÷ ú=þßÔ½… Ägÿ ý?üöÿÍèÃÍÔýûûùø øÍü Gǯ,-üËû¿ý ÿŠŸj‚º§üùJø;øÖú§ýlajÿñýû‚üNþÇQî °ýËûù7ù û!ÿ(è¼Oô”žÿkÿ~|¹3ÿñÿxýQú€ùYù“úzûùýüùüHüHýþ ÿñ5q†1. Z º »N!½€¬!ý¬û9ùPöò½ññœóðöïùâüæ9¯;Xá'$¼]# ã<ÿb f' i ™EZܲHý¦ùõ”ó’òßóƒõZ÷)ùSýWiÕ¤6![PÎþ£ü¹ú.ú‰ÿ¦Jœ:Àú·`þÍüúUøúùúúùnõ^ó­ö2ûªpà ¤{‰­Ÿ„ÿþ;úÃùú=üÚÿV¶yÿ„åð ‹ 8 œfcû¶ô›îãïóU÷ZùÜúçúºû‚þ˜" ‹ † k m èUÿÍùÒö ôÿö ÷Wøú"þŠzôÇ™ªý&ùÕõ—ñ8ïÎó.û|!V› .ý £õSúOï‘éÇð¦ä¶d ’ø\ímîÂñëòÆõÝùþ â±!ü÷Šø«ýšü9öïótñýôÿü9ˆ“Õ ôÁ¹ Vµø¾ó}ónöéýšùæÚWØýÔúÆ÷5ôðõWúa¾ ±s  åGÿýæü³ý¦6þÜþfýiûûRü'ú›ù€ú ûLý‘ÎW*3 ÿÓ°DXÉnHûüöË÷~ü¼i㋤ »ƒùý£ü0ýûýúø÷õøhûmE„©èpÿJÿñ|ýãü£ýú½ø"ùýü¹ý&ÿШå! „ n35sý/ù+ø(÷Ç÷Jù}ýKÿn*ûÖþrø–öK÷2ûCQÓ¨~~;ÿuÿÿŠþ)ýKÿ“ãôÛÜE0ÿ/ýòþTý&ú"úLÿVV7ɳeÊÀcþ>û³úÀùnútþ§ÿ„þ¬ÿ\ÿôI¬ÁûÝÿÍýiüKþ¸BYÖØÿÐÿ¢0cþuüàûáûüZýûúûùýýþOgŒhQÿ üóûÅûäý¬ÿÊL¡Ú+:ºœÿPû¹ø™÷;ø„ù¥ù¨ú¡üpþ[Š÷A¹ÿÐ?9ièφqüýrû˜üýQÿîšý¾öàõúçn jó1êMêŸî°öKÿ_:Ô1úØóOó^ýH (µtõ¹ðÇö]Þsãÿ\ü'üaý”úÞöˆö»û ÿSc ¦™`ýZöõõ§÷–ù“þéÛÎ { z ¤ù1õÔöæûó‡ -ù÷ëâÐäwðu]Ûtú­ÿúáúŒûóüdúqúU9 Üͬ˜öÔè å:î<üŽ Žb£`ùôô ÷²ûêÿå1ZÈxúï¾êígø5ºY°ƒ åo÷îmìXðµøå~fÑ+•øxì®æê®û3 n× º`ô•ì+ì´òÙù=ýþ è"&°ø»ïŽîNózýÎ åYNG gþú‰ðÓë"ì1õ-v £ O Y©ó´ï¾óÌùôT ” «B Uôö…éÙæÛï¦þZ “Œµb¥ùº÷þ? &ˆG FþŠõàêãã%çùïŽûÈ >{{ï€QçôpéGáãë7H ° 2Óþxø‡÷]ùýþuöqé…É Ý÷æmã5é`ò‰üWü¿ñ´ì7ñôpöEûö‹ <)¾âM[p›üúù«øÄøMûÏ‚ðþoýNýlþ)‘ Ô7P ä¿üöù‰ó˜í3ëèñønýEÿ±ýQúþ#§ e ôtfý‹ò·éÊêŸòèùtü× \à zÛ+/þÐùñöò÷]ùýü­þcûÞòêZûáöÔòð“õNý‘G$ 5Ý’zoöÿGÿSÿådT¦ÿeú÷ø%ûOþ ¸ðÿ„ümønó›ñðiðõõý‘Ëóæ ŠêöÁïõîWð£õúƒ< Ï ëçòÅÿ–ó,Јý¾úL÷»÷JùÏÿ{ ­»Ú «Ÿü!ôdð¸ó=ù®ÿôO Ý HYKýÁû†úÒûûgü¿þŠ3þãùŒõ0ôÿøœ ]õ°ü – F ?þlù÷¾ü<™M]äûêô†ëÆèî¼ùCÿÇ öþ“û6ö÷ÐÖ§ÌùÿûŒùMýþ£3ûþ,ÿAš|¹ùñèØçÔZâùÉ MÏ©§ ñµ¯ÿ»ü§ûÿýã!) ‘„$¿ þ>ñ ìnëíóøJüaÿVý²ù_÷ùq‘êjüùVö/÷Gþ–¡ » µ›òþ„û@ù1ùbü6ÿ‹ G ÁeûçõÚörú†ÿÍ4 1Ô9 r<ùÃô*ò½õ¶úØ×Ûï3üù–ù}ù7ø·úÃþléŸ!åìþAûUû›ýò™ t©Q ¸ý)ð&êœëññŠü‘$ ¶ Îÿ~ôXì¡ëŒñü3 åBûŒò´ïÎ÷„Ç ˜.åLQ”7úóòÕðMñÖø r ïõþû¼ó^í­îHónûŒ˜ % ‡rýTøÄôêôö…û$Ä î¸³ =wþ;÷Äõõùù¢°ò ŸÿuöWï©ïÅó=øDs ûá^ +ý©øýùºü!jšZ# 1Ê÷2í†ëºïµù(h Ï Í ÿ÷Zñ/ïõóÌù¢Ø ¾d· ÐÎøŸöo÷û¤o A ¨ØŽûR÷ÐùPýÎZp 4 JÓûÂõð#ð“öÎý×Ä D Ԭù“òúò¥õKø÷ÿ´ù Ãý/øÄöþøëü 鎺©úwôIô‚ù̪a  ºù ûyöõˆù€þ, l Á®þûùSôOò´õaùwþÓ3 )}øÍö#ù"þ¯q Ip ¥LþlöÅó=ô¼øÊýÎßO@ÿîùîôòôvú=Âm P “ ¬Æ¿û¡ùÉü”ª« f Í €þ£öBñœóUørþc>HfôÿMøÖóÃóöû^ÿè_+øûj÷]÷2ûL  õ òÉ&ýøÐ÷>ø»ûöùR Ð +ýõÑòJôø®þ`Y$¼®¡üúûpÿ_cL ¯ n¸ý÷Äõ³÷Óûçdà `Kìþ>øóÌô§ù%ÿ"! = “¸û¼õdó›öKúä•@ÎLyüÅø/õùøVýù‡L›@Îþûaü3ÿéF Ú M Bh­û¼øÖùYü'ÿè0 Sý¯÷²óÛôø_ý ;' ,Òjû0ö ö ù¢þÄ 8  Ùp`ýúCútýšTг’þøùñöšö‹ùÕþGµª]¡¯þù÷ø(ùèþš½ £ {Æäü9øîøÁüs"X©4ÿû^öïôØöoúªÿ¨ARÞþ ù7öT÷fü šÿ º Ò Üýòø¨ö¾ùþÁy  )åBúÕ÷~÷»û3ÿÙÓajoþ¸ùÌö]öÔûO ¬ »Ì…ü9ø%öxø,üZùñ3üåÿ¢û¤ù.ùhü ÿò'_yü¿ø¢÷,ùŒýi<ºó:àþ©ú±øœùMüÿ©¸ì?ÿü…ú4ùÏüÿhAÌÞ€¶û‚÷õj÷©üçëÒ±cþÜü<ûüãU,´“©þ2ý©þ&ÿâì£s”ì;~©ÿbýBü9ü‚ÿ·ýé ,îÿ®÷æó¤ôóù´ (ôÁþµû¶úkü*¯z¢—|<ÿý‹úäø«øSúzÿ¢•XÁþ»úýø´øúhþÖ\  ¤AÿûXúnüþÊXv°´8þ)úÞùÒú¤ý<?ý€ÿ®û³øÐøÊûjÿÙˆfŒúõÔõöøÍüÔ— mÞùýÁû!ú‰ûý£”½ÕuÿúÕø®ù¢ü*ÿúC N c7Hû|÷ ÷ìûdÿ»½ ¦ Pÿ“ÿkû9ùôûaüöÿ õ ñx*üðûü0þM?™Ã¡ Âûê÷föŽø™û¿ÿE ¦ ¸Øÿúù4ô¿ôö£ýÚ ,>)©þò·ë}ëúñåù¨o ëþë 'þ,øAôó÷uÿß­ ¯Å«ÿø±ö6÷)û§± ˜µ 1¨÷ëFç^ëMò¢üü¡O¶ÿ„õ¿ñ{ôªûIMãÁruúørîjê–ë.î$õ”ÿÜ‚ ; ÐRþ ÷~õ0ö—ü^Ì Õ Xþ&ôçñSõ‚ýR¼"Ñþ;ô$ííÈôÕýã˜á±ù«ísèEìáö²× ôø×‚<÷#ñ¾ò–öŽûêû ž°!Hlññç å˜í’ü ¾Ù\ –ýNï»èŽêñßý¾ ßž8É åþuöòø ýÎ ˆ  ¨§ü*ñ÷ìLíaöHA{áÁð]۩ѡըå˜ý`3'+E$aüóÒîªñ÷ûŒÀï:ùóäã5ÛŠß|í6þ¬ t.‡§ø÷êbâ]ã–íCý m*1íø¨ðóOþ œRÓ a +Ýù÷ íÛë=ï”øxò & " ~Ùüóqîöð–ù1›ÔG ˆõàç‘åçïþ¦ åi‚’øMñ·îˆðõ6ý¡ ¢ À+ü^ôÕô9ûçE»Ô­µ °÷cìÃæFç‘ñ)ê]cXþ©óFóRüÔs ~³üõ¶÷{ýÎ~?ö]å=Úþâ¯û#-¾6½0OîéxÙÔ5âïþ£¬!q˜üöçBÜÓåóÿ¾ÿ½ R÷ é“êxñxõ0õ?ùŒ J ø x € ÷ò÷>ô0øJýø¼…šÖ ÿúø/ô[ò1ø \‹hÔØúçñeìIíjøPQò &ûíí¶ç!ìkúh¼v \´þlûCüÿ ªaddþøþþyæÿÿ»\¤|'ôœ,IýÈûø_öéùèý‚Åú )ÏNþÇúŒõ”ô˜úUŠ r + ~VýÁ÷Gô°õ'ù± © k 7ý£ô¶ðJï‘ò‰û›‰ ¨ ’óyüÿúÞøúøîþ8L f}ÿ8ú€÷¦÷ øSú½ÿ ë õ  ® û9òÜðJñÖø  Ì Þ ¥ýÁòƒî?íîõ‚ ¬ ÒøÐó·ó•úÆŒ ¡£ j%ù.ò‰òtöòþ – 1føYñýïæòúûȰ/C³Lù·ð¸ì¤ïB÷$' wW°øDäM× Ý õ6 .E$0¿ +ÿ%þ£üí[æðùÀLÞ±ÿœüíÞàBé 2%,)¡ üTþ»*êåÕGÚ¾é£ë´ê¨÷Ó M¸ Ò*¿0ªñ–Ýàç‹ê ç³äƒï£¾<*ž8-.ô °›•ôçÈñnöxî°ìúû[ñÒŽÓiñ™ á•i0C-ʈîšåqí3òÙï‚ó( ÐùŽõ$ñuý»uò8iþ»ù÷üÂgöËç^ç¿ûž ï_›°ÿ~¹™úýù AÔ 8?äòÃæ@ø~ªN ÊÛ¨¸ô›êúßCÔ Øäìýopj\ « XúdðAô‚ÿʘ$ã$‘<óà ØùÜÓ먫?ûû§ù"öò ó†ü$©Àýzbû^êrè»øJ!üWúÃû9ýþûÞî³éÖõTØFd';-©EøåLæ¡òPú7S¶$"O 4õ§ì‰ëCëMñ¨ûÔ T ²óÌäÞðî›x ¦ øÀ F øâø‡íÈî ú ênõ?éç<ê¢ð]öû°ù)þoþI¬ø–ûv ½5 l~úÉñ¥ð¦øûÞù:øëÿ Ít â2ì¡ã_ç§öì ,«JÀ ¡ÿê)×ß*ún¤Ó"á Ø÷¸áÚäJÿŠM ¥J©!®'º%# ã¾`±¾¸šÃáÐåý ˜x|#ä$ì5àEÚàì4^‰'J³ $§OB •`ûOíÈãuæð÷u ¯³ý?èWâ–æùí¡ÿô‹2©)³ ªü” ±éÍÓH̲Ô߉ðµ U%Z%,ØïùzóFëåéšóXùŽû0úúñÍÛ Ì×ÕÄî§ Ùpi"p*Å&‡üˆþ;Âòeä÷î³ K²$6} +öQØžÍoÛlíÂ÷æþ–Íç?hÍ`[5]($öàùñ ‘µ ]ôÈèÈæ’ìúøîŽù :RÇó:íaê¥ÞóÔT݃õÚîŒ ãVp òö‹ç§èøèa %#°ýÅèã,ð®rµ9ï±·òëæêá—ç ôäü‹ R!k° &ûXòºä´Øaâß66#0M-5•êçí¼è—àæïŸ0°4pü£ßÌÍÓÌÔéÛ,ãkóüù®üŽ tÆÿ´ß•Úˆóz?&ø5@=›.×çÈÆŠ»qóߡ :6«K¥FÚ0Õ)èû9÷ÊöËõ0öõjç‹ÌŹ"¼ÞÍxÖÙÑí’8+?+ã"t)žAND.0³#×Ë \ï©ÙsÑRǺP¾QÚ£ÿ5¨*[:£@?'ëøV̺nÈúãŠï¾íÈöE q×ÑûúIù_÷šÖ©4f95%-¯k÷ÖCÅéÈPؘëúûa 8‡ÖùVç<Ú£ÌfÅþÏ%áÝóÕÖª8Aš/V͈ ãþ#õô³÷;üŽÝ ^ Aû•è&ÛÞqê)óù«úzøÇÿÇ­þ8ð¬ïZùt5&~*œìnâ¦êÖõðû0üðü¶÷µëëãúñ,Ä4¾HàKO=k,]!.‚íUÆï®d¨Å±TÀÙÒ^ê8vÑm^ ÀÁzñY뙿!18­CJ@ã,N êGÖýÓà|÷»3 ^ Ûˆå‰Ú»å½ï ï)ô¡½‘}ÿ>ímïfé ²À#a&òY$¿)Xù ÷û¤îpé`âæÖGËsÉÏÛÇü” nç û6aóOáÚÂÕrÒÅáÅûd¸$ã5ú6ë-Y+‘-Š ¨3ö,ïÎðöc Ézê)Íò¾ÂÆMÞºôI˜yÜf!77 oõpäî×ÒjÞ•ó7±&(,)"¶ AòÞí×%ÞtìCù: ²ëˆû_ ¯ÿrí•åhíÕ÷øð¯ÝÃÙãó­o5˜ú#×%) u?èfÑÂÇ{Ìšß•òtø¾üÀøíÿØ3Õ"è…˜ò2B?*Bè;;'>Qípê¨üQ ( ˜Ý÷øôCñßð2õÿú ô+ Íþ;úÃø2ç×ÑRÉíÕÐå´ìáïòûÞ¡1á=e:#;>ð1ÿ õ .õ…á?Ô Í¾Æx¾ûÇoã–`Ú"ü#yÌúÒëèïö÷ìð)ê¸÷6Pøœÿ% x _u#ö7›>ž7j&¾iÅýEàÈÂ’ÅÅ…ÒW𲤠W V‹d) ûžüýàð]ÞÞXðxoìKUùÉðþø{¼&ë3µ6Ÿ+ˆ/ííÐÕ½í²â±“À"×ò2*GJë74ïð)ãêï#çæåêõŽÐô•÷ÍG-5 , % *0@!7ûóÙ‘Ë3È¢ÅÄ!Ì,ÜôêåéÖßÅá9òþø~êèûû@í'M1ð;‡FóM˜Dn,”| Æ ·ù+òbï£éÓä½ìXúhúqéæ×aÐzÙá£Ù¶Ì¾Õ~õ³ ‘û†Û&981ù7§CúBî1§ 1‹ õdÖ“ÆÎÓÞÞä}æ•ó=+ :–üÿküjëœ×ªÌ£ÔÍçNò¨üj iÍaô†þcò!(->8dBr@H)m1x ÊðÌ·B³®¼óÍTÝÖèô9 o‹ã ~ý…ñnàÌQÇ2Ûøß × À=9'TªVlAà%ã‹üBéWÞã»ìnèæáÛÖÒóÍ5ÓÈèÔò¤Ôü#92Ú3` øMÞúÖb×ØÙ¿ÞÒðï Œ6ècÞîÈüÎ÷µðÍÿЦ- '8"z(ñ/4-¾$Ň÷äqÝzØ³ÐØÏeÛ¸ëhð‡ð÷/Í n ªgN• ñ/ÙˆÔµçjõÔí|ãŠîàÿ¯ ;%.Ð=®H2HÝDƒ= .QøYßUÓBÎ,ËöÌlÎ_Ù­í¶ùYýŽ<L|ùƒñÖö”ù\óðûL*Zÿ5ì}Û)ÉhÃÏÖÉûª"í@K\Fd9‹*ÑÿVá”Ê­ÄgÑòßâ*‘‘êÜÁáÅõ§V, 5w#9þ×·¿#¾rÓšð¦ìáá ]ö?ëPî!û¿&6î;õ3ßyðõæ¤èBëºíð,ùÒ ÿ%íäÞÏÛGÜ5Ú¬ÙWÝnì^ÄOýìõø ù ìÃÛ¾Û/ð~ ®?(=8OL‰WõRF<%ôŒÍÖ¯X¢µ­ºÆòÛ¯êÙ]d+(ý ÷âë–Ó×ðºh½ÿҔ}¶&ë.3²A5Véh˜jû]‘Bë—òMÈY«–£¯©‹­´©)¥€±ÌZçù €§!·c lþû )`| «z(#Æ [ œøß3~M0[S•7.cîÌ…ª#”Z–Ч̹ŠÎìX (H‹á `þ ý2^ ‰øÞ$õÍ †ÿYþþ?Ä_'.96t‰ãºœ©¸³zѰöŽ ' ûó€ñêuåÃñÊ”*í1#¶ÎúÀê÷ÞÙä\øÜ- „$ì!Ìt¬ûÈáBþþû÷Äüóüéï²ÛDƸ©¾iÖ4ñúW«*ª0g% ³òhÚ3ÌÏ(ÝåíÒûv ô&Š>öI¥Bò0m‹à 5ˆôöëíô0ô6ïûõ£@n^!R¶8ûËè¸ÚxÑvËÔÅéÁ™Ç Úõø"%#¹-Ö)›—ˆVÿ–ôíò™fÚ"Ø$#¶ ® 5|ÓSr¶ï6ݽÙjÖVɺý¼|Í#ݽæ0ð–‹(e=¥<-!ƒ¾ öÔòýÿ¢ 1 p ï¸$`Ã6Äšû<îé¸ú4 p üÑòåÞÕkÏÌÛàî”þ> ² žšð]æÌè ò· ;*v:û4D#|BZk¶)"d ùÆõ…öiõàô öB¹ û’ó¤éþò+þ8ûÂì€ßáÛšÙ'ØÜrå§ô-G Ö‰ ‘¯"zÕ D f‚#…+Ñ/½/1O4Ð."5ÿ8ò7ìÕÞðËùÇÓ`áãMÙvÑ|ИÑmÕ Ý®ç³õW" S x , –½ b*ç5(A©LªPþLäC:/RVû$Øö¼Â®†°¼OÊ|ØåIñYöšöéûdþ‡÷ßôý]¹ÞüÚû4æ’²ä$Ú-V2]0ª./Ò)'côÕáé×ýÍ{ÃùÇ;ØCèëÉêÖíípìòßÿ“ „ÖµòÏ, áö¯öšÖ¶”ÙÛ$<%Á!½“ Þõãø Nè ýü­ï¯ìƒöûžðÓáËÚìÝ´èõö ÈÏÿúzB[ø Pü°ûp!гì`íÛæCê‡ò–ø,û˜ý|úêõÝöµX ¸ ¸ýµéJÜ5árîÎü¶b, :W6î$Qé¦ß@è¬úÉ­ !L%˜Ÿñ çöç<ëh÷ üÜw×[ ù ûöð#òSûÂþ>þ¾· %#H(Æ8 îûCôêð)äëÝîà³änì úU­ýcþA7 ¼þÍù´Z? ÁaR 빯ÿuEü‹ñÊë¥ðù(úúô|òºú:2ô¥óõüîÝð÷¸Ç( ý+Ñ 8N ²uYŸŽò >þWûLäßÇý¾÷Üõsë7ÙÔÕáÔïôòÆóý¾0-¢6R. >õü*í¶ìêïré>äÕñ«­v b î·Fø N±!4ì‰Ð’À÷À»ËêÚ¯ê%ûÞ÷ìí˜ý w"ðîð/ï—þA Û$,B5b5D-l;E  ]  ´ ×·ú÷ìúÞÌÚ9å’ôöùÕö¸ð¸èòç!ìwñ“÷þ>ù¢ð&çjçB÷¾Y)Õ:DUFçA2”Þ[ï‘í$í¡æ9ÜÖÛ–ãMíù÷] ¨%íÒØ­Ô2ãÜù\\ Sê M¯srþÙÇ +ŒÎ¿Çú˜ö)÷õûXúóú.ýø¤ùhìzç­ëMî‚ôE ë ½jþ²õTòúø5ÿ“:  $ U“ü×E Tö ^ i zNûžêŸÙšÕxÝ\à'ÞžèæÑ49¶&mìÝkÚûßðëÜû ,þrùŸù†þì `p| œu2«+ë äGÒ°Õ¾æ’ù·ÿ sûdï£ìL÷š ΋ÍóRíñ ó€õv¬Ú,]4+š€ü õÂúFýò jêöÎôgô-ç<טÓ×Éã8ó’ýàý)ý£çc rù"ò ý¯Ì%/(†"Ã!$W °ù–ëÕçˆæ!ædñò§¦÷æí6ñ¢ù:úq÷ÍðéPï¾ø¨öô*ü$6ª½ å G' tûù‰ú§“æ" eÞÞè»ß‚äºèŽênõj¤ ^·û[ôØñëðríÛïùå ÑdBdЂžý6÷Öý6<4;gAù’ÿôÛî?èòå^á Ù—ÓÂØáfëÒû (¯ JüyùâC Ÿ ¡z›BOÍÙü*÷õðöæùwüZý©ý¯ÿÐ Ñ ¾üsöÅþ\èý ¯æ F÷ï×翯¿ÓšïWByH!EÞp¶h¸÷Öú‰¥*¢Ž°g0íUÏ“ÅÑ­åöÈ f˜šÈÎùÉô¶ôö£ó±ëæXèBñAи¥Oˆ÷Mó.øñlé¬"t± YøSîsñGúw¹ÿøœòê»àˆß˜í‰ùô÷¦ì+ãúè²ú= `p%f.S(_¸öÚéšé©ï‘õðüíî íPñëçKïTýT[ùÏóÛó ö ùÌûÂÿD' ™©ô0ìê/ííõ×þ–ÔW"Û&™ü Áö,í^ò†ÿ% ­ŽÙ`ô­ñ¾ùkøà£¯õãë÷ìŒòYúû ŽÓúýôÈò“ó÷û$müˆýÎY i  ºŸ•×ÊÇÅ ó _Í÷ïðïìõÚÿß (‚Éô’îòtõãïâøß0ç9ðlòeñâ÷èÛ0˜|‰¡ÑÛïÝãÞ•Þkáòìúý h—¸#óñ¥éèÝê>í¡ó7økùÜõWíóëbòÀðLcH'÷/¢+$!•Ÿ Üý¬ï)àÿ݃ånìáïíªë½î‹ñŠíáéÐïË’ëò>FÚ ûõ¿è|æäïÚøúýËG[$û üËÄ M3É¿õï<ç*áŽä7ìqóRøxK~ å*O'V½ zKù½òôé~âÊëkýïÀúêDëö¦úXöZô¿öàþ$ ]¦¬0þŠþGÿ_ýTüv… _ ½©ÿ KöXÿ÷ªù¥ýWô‰îTëÃì[ñø,û˜úíøótï×õðëê×bû.û|ö¦õéù1þ/n ½ .Yûdü$ ¬ Ê #¢¯ ¥öNíòºýrB ½’û›ìýæ¶ëŸò†÷šûIýž‘‚v œ òäáÌÝ`„PïcÛÇÒWØ›âÍåtì¡öìõEô|û6ü¿‡%”K ú§ðÐígôÅÿÊü­ññV°1PK&ë&&Ö"þ“cùøíŒÞÏÒÌfÐÛÓñ¥ _Ÿõ ‡ü3í†é,îKõóó#ž1Û*'G¨ó†ëèãè»ï¯øø–ùú·ø~ü‘ ‹AÊÒ^EÿòÃß¶ÚEÙ³Ý:åCçpèiõæ è¹C ï ¥I´¦ê®?þ)ô‰õ ôÛì±í ý ª 8 b˜UûsïáÑßÈèlðòùz> å !]° €2™m÷ZìRä"Ü»ß!ìLüa S8Ó€ümû!ÿ Áo íø ñ5îŽîíò÷”‘¶þ Q³3<ú¡ôXñ2ëëæ@èð`úC(?©(C%?öò¢ð~ëœîZún=‚ û¼üCR63Eû<ìÕÞ ×žßÛó­ V™ kÞü'öŽýi ‹3!¥ ö<ë¢éÄèBä½ã_ëMý DqõQíyõãè   Ã(~¸ó}å†âoéìRñýcýæùù@"4$3HŒ†C Öù ót9 —í¿ÞݺìtþýúQ ÑšúCÿ¾ w¹'Ê"7=^õˆãPØ9ÙËèì÷oôªëJìêõ^üjX[°ù& c|ùMölõóñê™éÜêké íçûªjŽŸò ) è eÚw ’ýEóUñ/ñ®îæë‰ðòþÖ k±Ž ý…!üÅE¬HùMù ýrø>òö¸à «sûaïëFìÛîBöK î%,Í$$kùè÷öû¼BÉý§òó.ùVùqõ§øÁ³{÷`ðMô˜ÿD‹ÿú°ºÖþ&÷²ù´cé ûm¤°£g^ i œ 7 Êù÷Áïµîpõ³[zˆ!þoüÎüªþž]úÛíÿåç|ðÖùVˆ D‹˜Ó#êO%n¿ûò\ëÉêuïÁùÏM ߨú ìúäðð,õpú‹ÿ÷ú}ôÒì•êýõ ? – xîHPY“rׄÿVøÓñëï¬ó†þÊwo¿AÅ¥J9Ž÷£ù%E÷‡óŒõüÿYÛþøïTîðS®!· + Îó:áÂ×’ÙgäÕéææCïû“  p hm Óð žþ,òºîæìèò"” ñúæUâ2èìø>Ÿ{&Ÿ3T(•²9þ{ØûjõQø¾ú·îEÛÕ¾åIþMÖÎ Túhðïæþß 1Á V ¬ÑþTðçæpí÷)ùï)éGò´< /ž² mþ ^¶ %÷GíïHòñPùÉ Ìå åùCñeñ±ò®õíùÆKÞ'!º úRõíõÎ÷Züì9 Ø üé&Ý:ÛZàÅî v ½ÇQ FYøïKñ‡pÈ(Ÿ* #ù(éÄà0à3éuôÂøkôpïøñJ÷lû•üT|?gŸ ÓýòõÈòð;ïñ ö`ù+ørüV =¶¬õ½ Üüú÷öûùYþÇÿÿ\å zû!ôäðJñÜô!ï£ì=òtú¡úýùYýf ü„ìUj ‰ÿ®ö<óOïàè”ådíýø né O|¥ þßÎ ÊøuíÅëkñ»ü|eúUƸúÕõ6÷ þ 0 óµ² iý£öŽøëüÝþÄþúö¦öö‚ùŒª½Wûçöéõ£ü³y~ ÉÔøøAýÝþþcó&ÿ–û$ú›Q Cï ÞOÿŸ÷òFô¤úIþi©Þ I \\üZø ÷8õˆð„è©ãuæÌî×òPîÝï²ÿk9çÓL ÓÑÕΩ P]údû˜þAûö&ñJîòb÷ôò†ýf±#ð%~Ž+þ#òÃå.ÕDÈýÍAÝ å€ì(ýÚ ´ @ ˆš2`8•%K1ëßàùÝÉ×´Ý–õ< ~81ò´ëºóŒ$– Ã$ù ø ß'ÚNâuë–ïìöcyóúæ¶êA÷©?È”ÿåûpþDý ² Þ 1ÔY‹ýZô°í|ë«óý¾þ õÔò¢öú•ýÈàó fóóØõÝ\ z cüø>ôaõyò:îˆù¨Îì~þiú ÿ®l. ÃùŸòõõ—îNêßô<t gù«ô¼ù¨ú•òÏï õEýׂúŒôŒóŒù_ g&™+—4÷ìïNìÃõ×k =c O~öxîî3î?îÈù4Žsüñî-ö / ˆ³éþAÿuå Š3ûVÔ sùðfìðµý¦ ¯ð hÞþÍ÷ ñ)ìé ïTüÀøô­÷`þ¯"òÿ™Í S ìüdÿ%ð5KP§<] Õ6ö<ñ“ñî÷uþÜpûaïå æ!ò_ ò ‰cÕu¬ú­üí,â¨+ÿ øßùÀÿ–þ“þf<þ„÷ õ­þ& 2È ­óïòõãüZþ]úÏ÷Çûv<`' @ 1  r' Z M°>#ûâ•âþéú­ùúý¬5ëBûØù™öHô!õ9õæö ù úOùÏøôøkú"R lL KÿÖùßùtý-ÿ%ÿe « –Qr¤ –Þ íÅ<ùkùeýKÿôÿûRöþó˜ðõîTïõùÿë*¶¦„pú1õÔõ<ôÕ÷¦%ßV¶öµþ ßSZ)¾HSý—óðìÏëíðôöûÈ÷Gìžíª@% ›ù ûúÃçNÛÁÖÖ:ß¼èæðÜ÷ Ü&}àCw*°%×>ýþôÂëœÜ‡ÙÎïu ) ûôáçËùwöÕŒ!±þããßß’ñ>Æ3ü£ù½ØþíÞåóöìœ!wk ³$ßþGúÛýŽ5ü*ímãâèrô ùßóØê%ê„óaôvëeèZô6*Ÿ¦™û¡ú1ö×øhá¢!ë kWÝþÓõ‘óºû-[÷Äç¤ß°ã,íÛû[ ¾-ÙªÿJók÷Íú´ðÊæðî^%¥Âüþ™H÷#ìýòèZ S4ûŒô›ì§ãeã¸ôÏŽ!F¹ C\„ýÁôyñîüj ¬ þ¦õ÷PýšúáðïÅœ©ÿúó.ò(ö|öÝöû¤õ•/Ó¿üÎüÝŠ Cˆ b c«ú§ïŽî—ùÕŽ ê  ¾Ñžðó˜åÛçNøŽ BþÜø>û Åû¶÷ßÿ/ ø dõÂï‘óI÷õù‰þ 5Ëù´ÊYùSô$õËúÏÿ_2­füÑùŒý]ý haÿVû•û†û¤ýT çëc’üŽ÷5ômøÿè8Hþü-ýøÿ~þþ…ØTÃü¶ó•ô¿< hû¤üæôÄxÿGüBù"øâ' ˜›JÔ\ ÁÃüüæü…þüðúóû§ü°ü‚ÿ € c6ÿAôÞïTïoñGñnðòô ú†¡ Û ·fùzõQø´þ NÐm e @ )°üíüTþ;ÿ–ÿ/ÿŠÑÁ~¿ÿ ÿÿŸþ¦úáõÿõöûÅOÿÖý6ü-ÿuF rcèNÐ}Ýùòèó½ø%õŽë´è õ g#"[ ýü” 'ˆ ³ ¦¹ÂøÇørúzø úýÙ¯<¹ôdòbIcŠ õäCØžÕ_Ýò"éùqøÙú"úÃúçû¼ =,£<‡4GWü*ޡΊØÉnîãô.Ã+¹™þïè©ÙÑÕ¥ãGþDv1L+Ž /äâÖß'îüú!å QÖüû¼ ~èjQ÷ï3è—é`ò=ýþ! ´ÌûñeéÙãnâíË™ïíóÞtÝç—ö9".¨ þDÿ .ê°Ò Ÿø"øuÿ8?þ/úÉüyýïû*óÃïú·<µçôLöcûpõ¶í ôp h!¥"zWúÀóÆö÷ö¬úw^æüWõ|óªózñ´ôOLw Sö‹õpö|ð¬ì:ñAûÅÿÜú½ø(Ô&ú è©ü w÷ßéÖìíøkNùH 5ÿ>QÿöE÷WI ü…öu÷£üþ]ýé¦ Šè÷ûôáý—•-ø„õ­øûØügøåöQûÕôIüaùYûüùÜûË”é÷©íÒñÓ¿ A±~qüËútû•ý6ýHýŽËþGø„üsí! 9þãúý<?ìíøèòñnø,~ " OÌûÒódòFöˆýBž _”ô†æÒâÍî‹‹ïM X ¥ ¨3¹ùÜø~ý<DȈ؈Ԓ(/æ8Ñÿüùwöõ‚úBß K ´Èÿ(öõóªôö÷,÷£õªõùýÿ;öãìÌê¥ø8È,à%i”÷þ¦ Ž5 ”¾ =þTòtî¤ø®€–ÿxÿ„úçññ ÿÊ8œ ‹ÓøßäýÙÝtéòúÍûyéJç§ø_°— =$',/!ÀÅûªîHé¯çöïK Y ~ñkÞÕãxø%˜ ¥Í!F.q&BçZÜDåòÌø ö×ûêŒÿûŒòzýåþè }üjímáiÝ.âëå÷Wþ ûgôC÷¬ú zµø«üѽQì}âÍó" T Q÷fóXõ|ó­ø( ~¥#s Íù"ø«üBøSî”èí’üZ o ôO % MPõ|óƒþÄüòö¦ 2 ´ C ø ü^ïlï»÷Óù1ðõç|å1êPð“÷JIÚ!º Ðýæøöi÷>ü?õväôí<ôgfcÓ“×8ê¹ý)÷lö¯øhý‰ Výù«ÿ/Ëøeñ™ø5•³ ' EqüíïråUçùø% i0<` ™âúçð#ì¤óIý2ˆþùÙøxû!ýÝüÔý/F' øÍê;éDðõ§öTútC ÇcÍþ©ïTìIó±ý×ì¤ Ü xZûÕû|þÇÿÙ1FäßÎùö…ôÛðõë¨å7Û ÒüØáì º¿ À' N •éøhêGóF Fa\":#¤×ý©å7֨ݙg(¢4J"4 «ýiêP×תì7i ¶¶˜Ëæ’ÛfÝ\áåqì´ù7Âp6¦ÿœÂï!¨‡çõ§í¤ëîìïÎ÷,þPÿnù†õÔý© ÙÀ —¦’úäóôöHî…ßdÙ áµïB÷rÿYø#ž&²I Áöéê,æ|éAðµø;þÄ u  &fÚ­ ÷ úÛæ†ÕÖØ3è²õ÷ø"üBÿ¾c%ˆ1Ž)¤AûyòÒóÀñ™ïõú= qzúïTâ¬æ3ñ“ÿ Áƒ¤² \êÙ×IØvßOáÔè]ûgÛ&å&ÐsÆþ,ùÙõ‹õúO²!œûÅöõõù%†ñIŒbú[ùŒöÚð#î0òPõÅòÏíØóðêN„Ѫb( øïÑímì é ì7ô•ûžm¿'züWïuðóºõú%¦þ&÷`üT ë+  — ¯¡ó.ëŒìòÙû¡üðö£ónö‚û¼ù,‰ C3 æ<ý`ÿÿ5û’ûÞÓ > „¥¤¼¸þ`ýiû ôäóþ©I¥ Êk.ÿ%ø¨û¿åœýWú"B ` î /ÍmýTû-ü3üüùýó›ï»÷WÅŒ ÿúêñuþ À×<ª ê wùî¶ð>ôùø\[ ÆEÄõÎ÷8= u¹8Mè)ÖGÔ²×íâfö— µc éüÿ÷²÷û[ •'º9;;/"Þõv܇Ô`ã/þ¾6F ´ô!äSâèïˆû M úX3ôáûs I?üTóðëúããMö Ôý{þ,ì˜âßã‡î|çi § ü°ù_õ-ótü' ÒñþõíÏêîùñÐóaú%©©ÿ%üýW²PþÁæå û¼ë´êèîÿìêSõ‹ K"É, ü ¤ ´äô[öÑ© òeí¶ûÛÜaºø¨óRìÃæ¶änê±øYÿÄûí÷Äù4üTþ Q Ÿ)›#dÛ…þ‡öòíUè¦î¤õô­ò±ôÿýì  ÐO ) ÝþïÁëúóhýr1 ² ":ûmô‰ùVg¶c G 8Òžû°L \¹ÔÀ ,6ÿøÍúUý¾ü$÷Áô@ðlïû÷¸!jû[öÁõËûcºòÛ3Lþ„úíÿn ÇÍ  »'ìû÷Jõüô­ô›ú"n k|W< ©ù ô-óÒ÷Áþ ²Ðÿ8÷Äôáõ÷ úzý×l W þ nv? Äìý)úIû!ýWì «“Ȧïoãñçõ<– ¥I ¥ÞWü³÷é÷&û!gÿ;þ>'ù FE ’ÅQü9úaüQ¿Ó°ø;ð~ë+æ^æ*ó( %(˜ºõÚèˆôùÞ ˜ Oÿ¥ì’Û×"áï#þµ)­+Ú9Ý ñ1òå÷; ïòö2ëßê8ä·àyæç÷> ¬ M¼ œþ2÷ý˦%$¦„ú=çBסÕxæj¸ÜX!ù1åðáWõB 7`ÿëeê>ðÓôðú¯ ~$ á } ˜ \û³îæívîZìLé2åOäéÜôLȹïÎõ‘ì÷ý×Fíåp¬¥ôÒécç<é#òÕŸO0 ëSöìó+øPþÿ¥ù™ðÙìkë«ì"íêònüã — Ÿÿ»ý#›#ù'ndËAï‚Ü_ÞŒõpÁ^O•òèç”àTß ít@öüôIèìâ~á9êP^¡Zþ +þßöcðøò¢ûEÿý6Ž ©& ÖØ ‰müWø÷÷÷÷“ù€ýÿYWÎò©*ú·óƒó÷õB ¯m ±šûØÿÍ Hu̸ WýÝòbêýéuïšùåÿ\ „ÌèN©Š { Ï0üæõ òÙôóø÷ú^÷¯õöøkýWZèùˆ‡ÿ– ¢_Sa ½›‰ü„ûO÷W÷oútüEûsü|X“ÿÿ„ü6ó€íÏíï/ô ùnþ»= é ] Žöìü‚ú¤!¢²úçôªøe% å24‹mü¶ô›óÕùPÿýHù÷ù7ú÷Áò®ñ„õüþAp 1 ²ýþþûyü Ñ ú?AX éù–ö÷øþJ¯a÷¦ñ„î”îjñröéý²Åµ¤0‰’ÃþÓú.÷Pù«8 ü`Nü—ô-òñúÌ Ô' ;Éëxû¡ô3î³ê™é í[ùÙ¶&Ç+¼°úzïõ?ûpýÅêXZ‹3éãÔÙÕ\æªô›âû1g"4ÿîð„ï 1"ÆÀ3¡øúÚ)Í#ʹÆÙÊvßÿ˜J§ÿ '6 è (% +W#È'ðãØžÕ"âóê'póÌìLì‰ôÒ| – 11üªóCïø{wþû-÷ê¸ßåáþøý*¼$΋üÚþ5ûÅörùº' w6þõý»ÔüZæÝ%"÷JöÁ~âõ écíŒõEúýå§§  X èèô³î*ózö‘îöé)ñ®ýr'-Ǻ Gf$ D÷þî*õÅæåéï‹è»ê¾ð&öoû9<nû¿ýûû§ûû!û$޲–ú½ö]÷/û !×* Fåý»õæê ãuï#cvüZñÍðÐôžùtþ¯Ü ÇÏ ¶ì*zü‚øÐÿIL„­ O  µã4þ;öWó.÷~ûçøññÇðÖø„!Îþ#üªýÿ´h ˆ¥ú[õùPþrýÝûá/ZŸ º l¼Bü‹ú.ûCû÷²ö£ûäûm¼ Ð… VŒ ÿÇùò·óüHîþMùƒû˯aF ½£ "°ëþiõÔð©õgÿ8“³ й ï÷Êò òwø úÕ÷“ôÅöËüËADýÎü'E:ù œ n Êÿ§ÇˆýÈü3¶… Ÿ ±Qž Ä`þ>üÑüšúÏù‰øë÷ õ£ô˜ô@öÎú7üÿm ™Ô™þlû°û˜þ#~Ò  Ä_‹ÿb—}3UIºÇ5üõ'ñ,ñõûùy–äíEù™÷ùtýcdïÌëŸ`ÿJ§`fü£ýiöŠ…ÿ\ÿ"ÿ‡ý¸ùqöÚø·ü!ÿ“¾']jüdüŽýÅüàøóáôgùÒÿÜU  .Ž ˜ r^ þ{þxäö¶ÿýµúLö—ö ùºýQþüÅúC÷ø÷÷¬ùü-³ ÿÁÿ2þÿ~ÿ±üùûmÿJ\Ë  T_ý»þ5ÿèÿ{×ñ’ÓˆýÑüüûíùôøîûÿ\š”ýuü<û­üýþ;°÷ךˆQ”&Ëÿü9û¿þ`Á§8ÿ÷ûp÷“õ*õËúÿ±ä ò¬qlUþ‡üTù®÷µ÷rù_ü0ÿ]  . åIœ¦©þù¢÷¸ù†ûÛü¹ýÔ—Rü?öìñÁì(æÌèù@×P øÍøJ ‰ æqðè z…ðWêðÄöEù†ó{O"üp ¸<þWø“÷rÖÈ7ФÖPÙ‚é šcÊøâû*UJ [!›6´>í.Ç xäÙÎÎôáÅøÙ ì À,ø«ò íï?úh jÝ Tú1çÙÎßLë€õøîôÞõ°üö6q8#O-„ŽüñÍþþ L ©ÿ>û9ýòö¦ë±í öéÿûì§êS÷ìùƒç¹Ý¥ëh£îô$êSísîãóÒ4]Q¼àƒ-ûÏó^è6ÜîÞë÷ ã±² = ±øŸùUö9á ÞÆõÿX{müñÐí¿î‘ïBñ¢þG ¨ 5ŸBú=îàä¢íª ;/ qºÇüQ÷þò(ñ~ø·þ¸ý`ùÒü×R àý)ëtëîü­Vü§öÝøuû3þÖ…ˆâ…¹‹ IH þû¶ñJò«ûŒ+ \°Vœˆ6ýÈóçëëœô’ýéþ`öxðTò‰ûvÄbþ¬ùÜùhüsUÿëü¹ | )tcO Y G¼ á M×õì%è¯çÅë7ö/` PöM÷ î.cûÅøùqù:ô¶ð²òßûó|ð M ê ƒ æ ŽBËô@íÅó¤ûyþ8Ø«êý‘õÈô‚úŒâáÿÄø»ú¡7•cóšÑj8 “uS ßZûFø,ööÚûU©¹vDýãûOü<pqû8Ñþ“úºóÏî-ð ÷¦ÿå Ó  áû­øYû@Nˆ Ô M t3¼ûÛúzý#§ß w(ˆÿ´ö6îíípñøÿ “~ûÞõKõjû|¦âüs袳úÀôöu' Œå † vÔÉ9ú±õÔò÷ò½õ°úŒþ©˜µ¡ l ¸Ø·Äþ¯÷Äî¤è)é&ðÐûÆ‹9c&OÿÙûgøÄù+ûÈþµ¬þýÑù–ø/ø™ùzù%÷Ä÷løÊúqûáü|üjþ¦äÿnþiþÇv¯³ÿ{´ 5 POþ]ù‰øÄúUû¹þ55 u M”ýTûCù÷øñøëú%ü0ýü3ûmûpú•úûOüvü|ý|º 5¶DþûûÅÿQÝÿ“þxý¯ÿ·å 1 IysûÞøJöÔ÷8øåüvâùJý¾÷Zò«ïísì†ñ·9YÕäþMGBó ×8•{ ¢õpâòß ç9ðû ¸j—ñ' 2 ø÷ø÷ÜæôRÓéˈؘÝÌÞ´ï3$ ý¾úÞ:Ô\8(‰616Ÿ!ümÛûÒ'á<õj| 8 ¥éòÌë¥ë îTùú 5j ³ú÷fêä·å‰ïËúû³ÿœè –Öš,Ô0°rð¸Þé¸Q bÿåôì¤âéÜñÞLì ÿ¾þÜê;äÉõãÿåö6îÔû3 CNjÜgö6öÅîŸe|mŠläó§â»×LѿֺèÔùMÄ*î+ËAôBüùòqê±ÝÑ¿Õ>ëWi6e5•ù®ï9ëCò+üšÿÍÿ_/KÛûyõð𛹭 @Øüéù ù÷¸öcóqí¿ìóRí Ñ5ørüùQ|þÐügÕ=ýïø\÷Døúdý#YM† XÕ¢}§ SŽ ¥|ölö‚úŒù†ðæè<ëJû‰ Ç‹ ‘irF‹5ý?ú÷ÊóIóùèOÛâ í?Ùt]ü õ‚óÏøÁü3ú.÷÷]öòö¸üD©È‰’¶þx&ÿ"ýÿÓÔýrûvÿÖ Vj¶¨Ûû’úOý¸ÿö¦óüKëÀ w {jùÀìXéGó9­O { :  ˆ.¯‘pýÅùVù"üB õJ& ªsüdû-ûóü|þðIý¯û-ù¨ø±öiõ£ûMˆü^õöÎý¦ Xœüs÷Üù q Ø ã!úñŠñô|÷ÜúdüÿŠÀ è Ò 5(ûsòßðãõËþ Ç §N÷WðMðŠ÷ãï Ð#ÚO ¦°fýú7üÝpdùÃôäô’÷øÿAŽý ü¹¼¤ × û˜öEó½ò%ñôõ*üy : JŸË;¦  Ãæ [ mù½åýÚÞ[ñ‡.ætÕ]ØÑ`À öˆñ5ö)ðŠæmæ ã ÔòÏYݽö¦ i SGY Á «5z9$‘íÞã÷îyÿß› ÷ä\ßpá<áþêô…  Û~ùìFì ÿxc!Ïm Îñ5ßêäk÷P4 ø8îEééùÃíSòüvþþãúáû˜ÿâó+ï3ùë þ>û£ ŒÄ Æîû¤øï ‰ ¢ â°0K wÿôò屿*ò=úÀü6ÿ·I g'=ÿœâGýî°ÜD×nåƒønc g& Ìú€ïìUê¢íô úóu ˜ 8 &§^¨'=÷cS\ýZëœß’ãîy÷5ü© › $ZùùÏùõãöéþ~Ø õ'òqî?öHùŒ| " ç ð „|üaöxù¢ › UEÿÓøŸóçñÁö2þÙÿøMõãú4ýËýxú€ûO¢ ÎWÁÿAüÿý×þã!þÄûçÿ„ˆ ÊÊþû-ùYö—öæþ>ûLî鑜 ÖGõdê8éóhÿœ½þ£û$õàíIè3ñët®'!v…GBýàûðúkÿ»X?ÃÌÿ±öòC÷¦þf”âûUú}ÿu:R²ÿû¡û¤jo…—lguò1 8'ô¤èþå±ëÃöý6ÿŸ ¬²Ø·@Ÿû¹í$í*ë“êSù’ú(ààÚá`åqéÍû$ÇQ ñ'ô.G+? ©ð ÝkÞ´öŸ$&S6óžÜ¨àðí'óŒýÎ „¹ú½ö‹ý/ý÷ö|ù7ýHAÿ¬÷Tñô‚û³A ¬mÿåý9ÿ“‹+AÝþrõü‹ B ® Eû@íÏì†ì ày×Þåüdk]ÿïcëó£G/ 4S*UNø,å4ÖôÚç×óÀý¯Õ ëôÑ œÿÿ¾½p&ÿöÎèEÜPÚéäÆ÷ï'¹mb? þûvîèéèWéÖöˆ C¬ 2öòîdõaüàúzû*|h\Îíçßäà*î!µÄ%¦#­Ø½üZêPÕVÒ-àóñþõ pŠÇöHóÞù%ýìŸ 6Ô| t¬ü¶þ¯´ 7-®6 5ýöoñîî°îaðñÊò´ñ´ð ñJôXõHöfý« ~ ß‹v kÒ]ý‹ùñø®÷»ú[M¤Õ/ þiòé¸ê,ôv « 1”úý]ômõàH!åŧöˆÜÓÐwÕ‡ä=ö3ŸÁ#U&x>"=,û#Þ ûùPïäÛlÙÔÈÖÄKÊyÕAä ÷ d$¼2—8×?'9¹!@’ö?çHÙ‘Û)ë‚ã|ò·áÝÝ_ê>d!%,+וé÷/ýÅÛÿì G† –òtÙÈÍŠÔfë“ Ç ”ððäéø/Ùñ S@ Éÿö”÷éUÿ"õ°ô°ÿÔ€üñGëëò·8V¢,N/"íêÖ‰ÑØÓÔ ÜÓíÈ<H79?Êü!ÿ25ßý¾ñ±åÌäÆñ5¼ ,r%—oô<ÛÄÔ„ß^ðÓþTmƒ$ÞôIäwâòÒ½äj ò·à|ÔÙ×@å[øŸ 7Ï$f#ö9{mË ^'9þüòœéæèïò7üóøgøúï‹èÅéð÷“ýÔ9ß- « Q þ)¹% #­'8óÞéæä äåéìñ ûmÐ…Ê—þ»üýNgÁ þ¬÷ ðiîïþôüý,!l5åå #þoúºýÝ SÅUÖêþæóð`ò†ô˜õpô˜ôö©÷ãø"üÜËjùøxÿ â øúý]ù"öiûO· &<YÆûÿôFîÝð–÷šýéü¬û¿ôíîÑëbîãöHÿ¹ q'M!+ÿñ9j©¨ò:åêæžë¥ïEïÔîüú%'*/Û3W1ˆ"­ç|Í“ÂÛÈbÖ}å•ò±øîÚ‹Ð÷ßí#-;õHD3;øçïE݉ÕâÜJõ0†&A!q ¦çÎÓyòJµ!½ bÿ¥øeïZëßó}ümâ è‚ ¨0óëMí¡îùêéïšòñúR ÿájË›mí÷Áðì˜í^ôsý|ý÷oùÜD’ïŸñ´êëÜðó§ú당×ö/ïëîî!ù_¶¼ Õ K nå¨ `ýòüdóžçÔäÒêò÷û­³©ýÿÖø¢í9écóÛÿ¨MòÁü|÷æúÏþ£ßƒ$') $ ú Ÿü<ìOà¿Ý¥àè ö‚­CÜ Îa¦‹§J«?úRõ¹ð¸ï9÷„š „tZ©ôíï|ñöÔýãR%"z"dá#ïòå1å:òSºÄeò@èë´ôóýü…÷ÓýlÔ á – !ÈÔþ‡ümÿÓsý6úðü þß – Y Óü±„Ôü—ø÷röÎùƒÿ¨“¡. §…üÔô êÜè‘î'ø¾ïÖ "Ê<õãíLôxï¬Ûúî‚êí¤÷¢ ½ jIüZ÷JùtýÔÿ(ýKøîñåíùò=û˜ ¯½Á¹ 'ã!%õ(7!Ï Ýë ØÑÒ×ÀçÂõý ’$v1[2N*p-ó±ÛZÛAçð÷Óº {øêÖÍAÀ ÄšÐýã¨ÿœé6ŒDÉ=Ir,úúøí6é2ô  Î Ž Yzö,ë_îËúzA˜cj 5•ï¦ÖýÒpãu±$s."[`löóø~üÈýšÿë lúáìÞóÚ<âó}“ĸî ö ÷lü^û÷£ûC ˆ[$Ú¬÷òç…ààßÅã»õ-*­*ïòÙšÏeÒmã2Ñ å3,/ ^¬øréÍÞaÛàæüýþ]!¨–Òö/ëCäbå ïøýZm å ç|Ëøuìðà9܇ç-ûÂ#-"° Úû ù÷ÂV#^*v"O +ïòÕAÈPÊaÕ“ç3ûÒ Ü ì!ø¢îòƒ‹Z±G£øÜöìõBóhöcþÜ 8# $ø„à§ÒÂÓ9á©ø U4jž´Õ ø éÐçgïf÷fùöÅóðô[ü þøyC'ùbû¿©… †wÝ Sü§øÙøù¨úÛùVù=þ¦_¶•|ú§ù þ>  o$m&\\ý£åØÛTØIÙäŒõ6] ²„”ü §s}ÃÊ bò™ÚWÒ”Ú]ç¿óIörõÚÿÙ&å.±.âÿåÚà³õ< ÃÆÔñ´äVà!ç¿õ ‚‡A åe Aþìúöõø¢ ;!½% ë•°ùºà^ÏŸÎèÜð¸þ{ý|ùô9 Àä 5 ¯ ,„7Õ2¼ Ê Ýöþííìêîàï íóêkäèãé»ðÍðÊï3óRüš¨ , d`Ý!Ö^ /øëî°èBåäåííIù“þÙûUü3 WrÉF –]ý|õõËþÀÿœñkèËéoêGìCùýq'å,ÇÄ œÿSúaû³ÿÍ® 8Xýþö<ó^óû• ÐÀ Cù«ëÀèZíðûŒ ™.Þò… &ú÷îªé²è©çèãó7Q . zÃ-ÿèT‹AS ½ ˜úý þ)Zƒ¢ÿ–öfòFôòßëCæíí ùâ;g¯ L kÄ ˜õíÕîBõ6ý‚Kÿ/ýfþæþþýoþÿ«ûjõaôú†Ê 혴ûõæ÷Jùt÷Ùöû7y§  ò {ÿßúÌúCüZÿbÿ~üTûgþý  1uÿkò ÌRˆ IðÓ×±Ï:Õræ˜ø~ýù¢é`#E* /w)ªw YùSéòÜ ìˆæÕǾ‹Ë-ÝCî°Bè%cþáý©x  ‡|­V!ÀZr~Ë\ôsáBÓþÓæÝkß­Ö ÕÐë¥ tHç1Ç`þÄùköìùëþÊ¿vâÑ ¢ œ SÒBü-ùkø«údýfþ»üíùèø ÷öõ÷{ûXãƒëÎö$¼þMüüÎÿâK¹*1ggÐÚþûûCöËóòSõ0ù1ûžüdýoÿhÔmþ¯þÿô²L ‹ å â|¢þÄüü'ýÿSð‘°§þûêü!þDÿ¾þü<û˜üÂþlÿSÿã9þý/„äbïÿYý û­úkû-ÿ–‰¨&ÿÊþ,ýüÅþ“±ñÁò¬9ÿ8ÿþòÿ ÿ,ZÅÿèüùùÙþrY jÍ×þWüvü­ýHüæû¡úÉú€ú:ú1ûLý‘ÿbÿ¥ÿÿÿ÷¼þ%#QþãüðüüËÿðäÿ·ý úk÷x÷ú(ÿ&~²ÿœü¹ú÷û˜ýïü¦«AðÿÓÿÍÿ~ÿbÿ~ÿýìüËýýü‹úhø5÷,÷–øåû6þìò´ŠªýæüãýÎÿe‹ä9Zaþ£þDg;Á¹<¶ïHÿýü§üÎüàýšÿ2ׯ¬ÿúÌ÷Ù÷šùÙü ÿMù5Þý9ûÿý”ÿ ÿ/þéþøÿ“ÿ"þýˆþ2þþDþJýlüsü¿þÿÍÿšÅÑýãúLø;÷ïøåú+û!û¹üüvüQüÑÿ«¢bÍÂÿ\ýlüZüEýNþ¾ÿ„ÿýéü‹ûù™ø(öÈö”÷éùJú†üˆþ֛˰0¹¡-ÿÓÿ ýZûðúáúhûüþGÿ{ÿÁþ#ûðúù½û<ý`ÿ„,àÿÇþ#ýýšþ]ÿßÛù*þ>ü6ú+ø ÷2øù÷üýýZý ýÁþ þý`ü^ûÛûUûü-þû² l-þ“û³ù@ø¥ùåüýfþ5ÿÿŸÿ·þþýÅü‘û³úÌúhú÷ü0ýéÿ%ÿ»XZòcÿèÿ"ýøü!úžøî÷ÁøúüíÿDgÿ–þ ü0ú(ù ù.ú(ûUü×þPÿ“ÿîÿ\þõÿ/ÿeÿþoý¸üóüZü0ü…ý ýÈþ¬ÿ~ÿ¢ÿPÿ{OB?¯ ŽÿœÿAþ»ý9úúù}ùîû$ü*ýý×þþïþ²ýæýiþr|,u<³þûý ýEý¬þPþ þÄÿ\ ÿåÿ\ÿAÿ´a-þïüÎû[û†üTýKþþ¼‡¸ÿ®üàûÈû†ûÈü9ü¼ý üjû$ú´ûöþGÿß3ÿ´ÿxÿ™ÿß[’‚°È^U Özè¯ÿÇü”ùýøJ÷ûùPü*ÿGTKþõüHú§úú˜üþ ÿô!Úc`Í“f9ÿ™ÿ~þéýÝüšûyû*ûçý?þ²*í0ÿþMþþþþoþ¾þ¬ýÅüûÛû¶ûØüEý‚ÿ‡¶Ä‹òp¤ÿbþßÿÄg/ãÞÿ¢þÊýìýTüüüéüÔüû@ú’ú(ú7ú’ûFüŽþTÿ®* ÿ´ÿÖÿåÿrþ»þDþ™ÿY <ÿÄÿ2þ¯ýøüû^úÏúáûyû’ûöýþPÿþéþÁþ“þýüsý‚þþ<ÿm¹‚Lþ²ýÎýuý—ýlü×ü|üÂýxýËýìþ`ÿ,ÿô˜þ¾ý`ü|üªýÚÿ ÿMÿ“BÿÁÿþxþÄÿÓ¼ÎÿSÿ5ÿ“ŽÂóÿ-3T©üÎÎÿ‡þ&ý/ýWþxÿœ'ÿ–þüsü9üàýþPÿ!Πš2A ¯—ÿîþý‘üÂüWüüüvüùý¬þ~ÿhaö›6‚‘5x5×mÎÿœþ,ýEýKýü³üWü0ü<ü?ü?üNýþ‡-H× N29 ÿ±ÿ«ÿ8þ üéü…ýýxý ýý©þÍÿÿý×ýˆýõþAþPþuÿnË‚äÿåÿAÿ,þþþTþþ>þÙÿþÓþÊÿÿYÿGþýÁý/üšü…ü¿ý)ýãÿU?šÂà¹Èÿ>ýïý)ü¼ü<ûíü—þ>ÿÿú ÿÇÿÿVþéþ£þ£þïÿPÿVÿ"þòþÖÿ/ÿ™ÿ¾ÿ®ÿAþ~ýòýìþWþæÿ þ‡ýÔýãþ{ÿx’ü3þïþPþ þ™ÿÿ»Xí‹…ÞUjÅêaÿnþ~ýÈý¦ýæþTþ]ýïý»ýæþ`þõÿu'Ô˵&&>2àlE¦Ú2äÿ™þãýÔü‘û³üýþŠÿÿÇLBÿAÿÿÖíÿʸ#š6ZÑ2²¹[ÿ/þýý²þÿÄËmÿÊþõþWþ8þÇÿYÿ»ÿŸÿ~ÿ¢þ ý¦ýãÿÇ„Ü)Ëÿ÷þòÿHóþ üjüý|l$­˜uý…øâöµ÷Pùèý©Hõÿ*ÿŸÿëÿ“þ©ý¾þ5[E»Èg!6éްþ8ü3ûíü|üÂüûÈý¾;új¥þùÿ,ü û‚üýìyïü6ø»öcöìù½ù·õ?óOúÒ† h Á< ýP)$+¯ ÖíÓõÏÏÛ îK< ‘àX!¥)@!_„ R ý èÑå·í•ééÛÍØ=á3æß^Ùmãòôªü@#L#'$¯(O&¸ÉÃÿöêè#ó4úç÷Çòkí6ï üÔ—õÝñÙÿî*¡19üû6öˆóIðþ÷DIûÇ +ÿò´éûäßë(ÿMŸö }KðÁäÉé»õªóŒè‚è»òôáñkùwà .¼iÂjý/ ëzùeË ™æÏЧÔààèõó•ŸydûñnõÎ'_ ©Ú]ˆ¾šæÒÜœè óIò·ó"û^ ¸) 1úÏñózöuó=íFì[ôÒA˯&þ%Žd)? Óú•écÝbÙ³áKòz³àùÜòFîë(æÛçöó˜bÙ>­)ÔS6*`ñÓæjä.ìù¥¾~óûR÷rü| ÎY X*ΠLJûyôËó­÷¸ÿ  Y ÉüBôêòtïÔêhæ6è¸ò¢!OfÓüŽýÅÑ× ÿŸöñÄö`û°üû˜]cû`ŽrŸò·ä€åXôÜ ! õ¼ø‡ö£úçsÏ ü5 Cùtò´ù‰Ê e"2€öìnîT÷þÍcÞÂïó§ë.ðøÐ÷{ôêøeúüü ·!n-2.%%rtû-óXðçÔþÐeÚ¯âûñ\qÌÚǾ¿ÁÚHýu«ˆãJ /ñ)æóì’ø“]-Ä?ˆ=Ì0O¶ùYè£ÝVßFè‹øAÂ!›‰ LøGêëëqíØê ÝÖȺ¹u½”Ï+éÁ :+'<½Bi͸Ýwî¹ù¥Üåpœòèð{ö,û$ÿå>Âúö¾÷oùFï+0*3!O ¢ q"ÿ“øM÷Mòkèþß*Ûãß'á²æÿ÷ø V] ¶ ÌZ¡üKïéß0ÔoÓ`ÛQí!ê„+Å&V=ù»%ï&Ð ´èsñAêÙî¤ûv 1Ý˜Ë Pòòôá/ØêÚ¯ÛæØÛÞÃöW”+%Ûøxô9š'"6Ò/«³õ—ÖÉÆ`Ï–ï,Ù(_+j#aH*è»Û“ÞØíê £ ¦ÅüZ÷»ñkêœèíù@ª)$H+W&ßñúØæ›Þnèÿúõ)*- %~ òä_ÜÍ×ÏÚ£é ÷fû-÷²õðù÷ý‚û§ûžï¼<Èe ·Es;Þ # ÑŽñæ¿îK' žGòäùzð2ðAõaûI) )IùðDô$Ù”"Û'k$ü¸`ìRà¤ß•ç‘õ'K`û’õ÷Äý6Q 5 Ààÿù7ùîþ>Á ÷wEBo 1ØÖÚüQô­ëáNÜnÞƒéDü< ð§mÙ… ù ‰ r.rÿGû†ú1úù.÷ öcúŒT  $0& ¤ ózæ˜åëFõ‚ÿJÇýTù ö?ö]û6„ö€>vþ¯þÜ;È ² ø EÛ±·ñüjègýÔü­üàÿV¸ÈøëìäåRäè9ó’Äpí!šì øbV ï]Ö )ûü÷Göø"ù\÷¾õ‹ô˜ôáõõ­öøSû•ÿÁ« ¦R kòúX÷¦ùMü°ÿÙBý—ùV÷Çù=ý»&¶óQHö  Y P ÝáøMôy÷Jý‘ÚÔÿMúªó¡ìØë‰ðcø> •«õ ÇœOþDÿ) Ù “ —ýþ¬ùÜù@üþߪÑr i ÷ ´IüWö#ôõ£úRÿMÿ¢úwõsó­õªúª‚t Þ pòfýûùîùºýË .¹ÇÙþ‚þ²õ'ïþïþó›÷²úêýÚþßü$÷/ô¹÷]ÿYì!Ýù¢÷Z÷~ù_ûùþ/IùW—6¼æ ¹ M Óü'ÔRþ)úçø5ö|õ”örøÖû‚þLÅÿ¢ÿ32ûøÑýÁùSõüöNú%OÑ3ÍRü¶þAþ{Ø®B Þ„þìú±üpo ã ý ,Éý©òYçàãGåóíž÷Pÿ«÷ Èþ„ýÎþ¬$ãHccl $Y i Á ‡¼ïúOô6òñö£üÅc! # –ÿSùƒôðõKû ; SñQþïý/ü‘ý²ÿ¾$¡ Äþæý6þ`µ {*6ú§÷ø{ýiÓ[ù1§þiü$ù}úþ¡B¡Î+ó§ãèÜß ëzÿ“¬yïÛø·òýøVaì> ùëèøó@ ù`c èïñåå®ç”ñeûm„ÿGúÉý`±òËy’üNôFó"øåüsú½ùûR°;ýï÷Tøýcþû<úRù½ùœüQþÓþü^ùPûª† l ÌYý þÿèû<õ”ôdôÈôñJðø>ÿüãôÛåÀá»ê"û ²L¿“Êö`î‘ídòCù´þã6aûÅùŸþß þ\ r…öûï íçò+û¹eÛyø8ò€óaûCY ×dû|üÅh îP™*_úÞöûûg6õXû†ö?ð~ídñÙüE*&A þ W l 8[)ü'ôpñÁñ%ðfñòò†õNü6 uï-ªö»è<ãÓëVøÖ吆ûùðxíöõ-¯ÀN;QñGèæé/ï‹øßÊ  98Ô ‡9ø¨ö¸úävÎÿG÷ZíÕãÍàEìwfA$ü&tÂüÿ÷cújûmôðïéæè»î$øÄ5 > Áz)°Í wò{û­ïoççîãö¬ùtø‡÷ûüÄ © ã0«1¡ D @ OùÃóƒóðøåþã © ™GöÁìÏè3êóÌˆÊ =ÿñèïìöN— „Q| —ýTï6çéZô¾â +üñMïéõÝ ÚÖü³ñÜæ˜åíUúðäö †Cü¼õònõ?ü§ qä! qÌQýòûÂýoŮ뛴ÿŸø»ñîÝòÌúŒÙ Œâ" Êùƒó"ó}öËúªý”þüæúö‘öKûF× l èËÿYù1÷8øÙýõ  r$ûØúú ûFü­ü‘û¶û¤ýU?”Û3ú@÷ìøåûXÿѰ'ýãû[ûLþ`Ã[8d[©˜þGü‹û­üþs¼ÿMýûŒù+÷8÷¬ù úÉýˆÿ»L°9HßYÛj¸þ–ûËúÕüH‹ñųÀ*ýãü³ý?ÿ/Ê+}b]ÿ"ÿÿ¥þÍý#ü-ü<ý¯35Ùïþ©ýýýÝÿx92D2‚ûØ kjýÈúäù‰ùŸû@þ#-jÿ–þü$ü þÁ)ÌÎŽå, ýÈü‚úäúaý2ée×öþéGç$õ¿ t8$] _dKÈý]æÑIÏzÝâî¼ùe÷íFõK’4~Eê=˜šðîdàÅÜkæüöNøuêAàùåFé~äåÛ¾Þnðþ“Ø$)g,„OpTP ã ‘ûOèûÜÇåLÿÍ ‹ b Fø¾Þ´Ûfïu™§üàöxøöEñ÷ú¡k&u&ø’ûªèoä=éñÍüT ©ÔKáû•ûêüÚü¿'ç÷;åØÙ×Þ1îýݦfÀ¼' ?fÞÓ ú+ñ«î|áBÐðÕ–ï.­ÔÑ‘ªù\ôžû³¦üdñ·÷þ iÏá Þ`úÌþûåúúèQß­æùõ P"Ê!téù ëåãDÚضævvË( â¥mÇØùõ‹êœãã{ò™ Ã#["‰¼þøû-ûgõpïHó˜þuÇ1 ® CPø/ñnñòhðÖð`òóäú½ŽïJó oç‡J À X=œ ãŽþ)÷¬ï¾ì"ïÁúa`ÿ“ôïxïZî¼ï¦õ³þ²¾4 Ÿ™•eÓ ý EBÊö‘æÌäCô¤ a£N¦ý…ðåƒé,÷&pXX¯Ï%úûËûžþDøýèKÙaÝ:ïÔÿ‡ˆ—áÁã÷øöûû@þa2h l k   ý ).ÿåõvë¨å âQå±ð ý‹Þ î J Ç‘|Øû°ò_ïþôçý $®Ø ÷–„úðÙï¦õ‘ûÅÿû þdù‰ðÜódþ Ø )’âýòeê¢ìÏô9ø„ù™úýþ“¿ø§ ë Ì)O ¾ z ô˜ÿœøóîŽíÒó›ûäg¹þ¬ý&üÅý‘ý#û@údúêüZÿJY Mð‰“絯ú1óçï íðïÑ÷DˆÒóÐÿëü-ú±ù·ù\ú¡ýü<öÈôOùÃÎbc þû  è¯3Þ ’Oû¡óîQðõyútýÔ³3 ÜãJý—÷]ðéííð–ö?úÃý¸¤ïÆù³ñ,ö?n¼*â* Ô¤þ²üû¶þoÿJ(®kè ý÷Öõõ³øèüNÿbT'ýþþ<d þ  ïØ>ÂU<Çî/ýùÒùkø8õgõ‚ú=3Ù•*œÑüÅùëù4ù®ûyÿ8> ò‚Ô PŸüÅøßùÙýTy)£Êø%3¹ôÿ_øýõõ'ùYÞ ¯ ü òïû0÷÷2÷Á÷Üùü!ÿbW¦ÐÎ ‡ ,áÖ&N×׈„?±üyúø±÷ö`÷cù¢ü¼UG‹Z!ûgøúhýé•rîzM ®Ÿ ÈOþü°ý¬Ñq´ÝEýÔû¶ûû¤ûyûÏþ)<Èpÿâþ„üªûÏý<ÿeÑŠd G õ ¬!¯üªøŸøÖü|ÄJʈýEú ùúðýïÿÄþûýüüŽþ;RÇqY^ÿ;‚øâw“lÿÜþþ/ýŽýÑÿë?r'O»u—j‚ÿ,ýoüãÿ‡rÔ?˜ÿôþûþ»ÿnÿœþ{ý ü3üü‚ü¼ý|þÖmöþÁþþÿ,Û¼öãðÿüˆúíû†ýŽþ™ý ü6ümþi•RR­ÿ¨ý©ý#þT§»þ.˜±Ú¶ÿkÿVÿ>þüªýTÿÿeþü|üüüû˜úðûpýrÿ®§R*EN/Tj<IvRÿ‡ÿYgpŽHÂÿuýBútøMùüg'„“¾Wÿ«ÿPý]ú÷;÷Jù=ú­û†üˆþ St/EüÅûpýoŽ%®©þuü£ý—þÄÿÿu'ÿ ý¸ûžùÌùúLÿ Ï)*Î ·Ì»2v˜üéøÖ÷ãøúúú€úú"üþ ¼3 $ DûÕåÉØáÞºð¯n(Þ5<>4Šº÷ZÑȼªÅ—Ýnðxø8ñÖê%øÜ×+¼7ð7C*ê (Q•çà[íªïÅÛJÓþÞaÛõÐXØõí {;øAA9%Kâw™T#ÿ,u %÷‡Ë¤µ›½ßâ,ZdÀö Vj Qûðç^ßÈåhçíä“ëÀ• Ÿ*|$¦Cüãíð û*üÔø%÷röWñÁó^ý—`Âø|ù ê â8äì ö«€7ÿö¸÷“ú4~…"ä_µï…ßÛÕAÛ/ñÖÛ㈠œüvëÆç¹ïxõ-ó=öËkÈ^ mñùîóúóôCà!Þ›ï'3'œ"³ 'úÆòÏëFãkáKèþý ĘOþ ƒŠdêëÀÝG×eßg÷> Ó÷6ü—ýoa€ n oùÌò¢í¶èë}øŠoÑ ZŠó†á?âôêó$ùÁ<ÜÑ$¬)^%øƒ Ðúíâ£ÙÖ.ßï ùSúáù÷Êôùñ¢óêþu e츢+aÝý…ú½÷Íð²éJí¶ÿ<( Ê`Øðòæðí*ü 5¹£™ {þ™öæôçø<ïîÈß'ãró(ý‚ Ÿw 4È-… ð#” À®þÙþ; C]3ýòì ÚfÐÛÓiâuúç!I$ !½ˆæýïu˜øø{ð–ë·ëó.3…! (ŽÿüjöWóÏöÝøÖøåüy~ é©Y œŠÿÓþ©ü ùÕ÷ÙóêÐåÌç3ëŒò7ü ”‰¤áï LŽ·pû6û Ä9ôªÛ2Ì&ÒŽçýHõ!O090­ˆõÖkÅšËêÝåï3økó@ò7 &*äAÔM¼Je8p#9 î騒×^æ9ì@ßÕúÜ2â–áá‹ë½ódìk뀬"á0X,&%c!€X?œœì´ÓšÁÌÈ´èÂí¹ ˜#4 ŠúÍ † Ls÷ÊèÑä%ã»ÝÙÖ·Ýeù%Ñ30†bý×ïiî<êúä–ìUÿ“6é ï ñ4ÿÇÿÖøî$í’öãù P° ýÈùüªþÓÿnyz` üyéòÓ¯É"×}÷f×'ß(¥ Ûí›ÜØXßùíOö|ý< ºY#‚Ö å¥ÿøVõŽñâ>ÑðÓÔèr O-/1ª"^ ;ölìäæmáéà|ç!úÒ ‰ˆ1 t¬ÉÀõpëwãœÛŠÜ±ëwÿ> l ¢ m¯þ8ÿÍÝŠ u•þþÊù·ó:õûdû$ö£óáï?êíêù®—× Æ ú ò{.‡3{)» ~ûÏïë«ë.çTáõßžá#åê¨ñ÷ù_þÍìè ìwÈðv &:ðþDûžúLû!öþíËìÞùYyu"^ráùóäö ü¹q _  ¬öï/ñ2úƒµÿ·ñ,ã±ãèîEø m ôS?ÈÞìÑK< ôUÂÿhýˆúýøòåëVãŠÞqÞýæáôíÓǺöS|· í÷ ê%äèæ‰ïüWM±¤þÖøò%ó•ûð± õ aiP•üÚø¢õõQù¨ÿ“ïÿ¢ûä÷õô‚òÃòkòÃõyû$'|g° ðAf _ l ((ìÕÛ]Übìýã ßN#U-;'J3ï—Ða¾‚ÀoÎß$ìŒìýï… o'è:ãI8N—C÷/áºöãöþ„÷ÊÜGÆ¿ÜÀ ȽÛéßëtêŠöþŠ*ü.Sv Ä*8$ÿ/Õ#ÞÚN¿fÇäèÿ å Ñßé$ìר ÇûCðþîdë1ëÏ÷5ÿô5 †ñÚõÔìß=õ”±*­*'fóÛìúöc~ ôyùö?âfמÚàæód©½]#ÅÃÓ~™!ø íß›ÎPƸոó. ÷d(!"@ 4;ú1ìáKçHþ>tÖ˜žþ;ý‘ IñkÙTÍÓ/éã !Œ(ÃÙúŒéßÈãA𓲣p3 ¬ü¹þJI §Løìtì÷7I{ ~üšç ÚˆßLòÆ ìD4N¦ Ê ù÷æû<ý…üíöàê)ß’á)ì½û0ì*3O} Æ _$FF© t BüöðZëeèéçyåæ°í•÷¯3oý ÷öìû­±üNR] PØÿÇþ¦ÿëO Ûbø´õyø_õÅï ï<ôjüs·­0Vxòèé òÉþ`Êàùâ÷‡þõ”)µ )éþÇú¡÷¾úÉ£ bÏL•Ä wLö—î<çâ,áÑçîÎõÚüÙ åÛìþC‹*ÿbú[÷rô¤õù€ü…ÿD@ gˆ÷ôæmàHåõZ ´!±/ +È… wü-ïÎè9å·ê¸öøÅ/‚÷éìå[åÉëßøVü»HgH’¼¿þ é ü žûÛòzî<ñ,ùîÿîþßúíöñ/íùìÀíï3ðò:ú+úœ ý ûàú­ö,ùߪگz9ü<êÞIàTò+ qx'+#3çËÑÇèÍòÞçõ ÛZ +tµ MÁrö¾ïþõ' ' wàúäø2ù´ýÑ6ý ýiyŽÿbùòºò÷ÿ8KeþMëSä«ìóù ûÏõ|îªî'ø l˜) 3à6Ò0ÓIéÐÛØgÝ÷ë·öã÷;øhüüýšy"˜& %Ýí ÷8òóUïç‚ã´Þ:Ô ÑpÕÙãæÈB˜1*6ô, ]Ê#H*|!úXÚ?Âz¿©Ô8ç‘íÈðcôL 1á ÍúUï õÑùßó=î³ð»ù· ;õ+”&¢ñââìåÏð»÷ öÑø ÿ8«ÐÎöR ÿÓånÐÏʳÔèKÞë%)> /åÎ Þ Ø ô!æêâ8ݓ܇êPþÁ h³ýÒ åêt E _ýøýü‚øÊò´ïiöˆ=å:ç÷ñö]ÿœ ;sÔð €ú†éßܫӻӸßÕô¼X ôÊËüvðcì"ñ)üæ ” ŒÔ‹ÿ‡ÿ„|Dÿ·ùø5ýõ©þ„ù¨ûS ª~<UýÑòîìóì•í$ï|ôŒú†Ër!ÿô8ˆÚ$&&ÑÇí¾‰ ì9ùŒ÷¬óÒîQëèìLï—ôÞ÷ZøüHüâ ; Æö[ƒ÷¾í0ë.ïÁú+ôüêrTM€ûdüì<ÿ¥é… p±î4 ºþøîˆåÀä"è×ñ¢ù=þ©ÎïBý)ú.ýà åY: Ææúô^ò_÷Ü& Ÿ×uw åÊûó@ïið`õùý¦ãuÿÜvµ  ÿ ô’û$ð“ë«ëï|øµ ßþi GÒ ýþ¦5(ä / % Õ YmÌž.ÿûªøâöŽö…ù"ùŸ÷Aö¦øù‰ú’ü!ì0] 2 % ŽE PõN .t‹ÿÊÿœþ¾þ»v¹þæþ–ErÚ…°HþéûRö‘ô§ùÿ>+ “ I û¹ö×ùÿ«*˜÷Ä|ê€ tS† Ãkþoûóûùüÿÿ¢Lüa÷ó§óÞ÷úŒýþPÿÿÿÓÿ\°‘“^ Ÿ _ Á’þø÷û ê"¯{úÇmügü3ýuý,üBý9‹ªþþ2v¿?çý6ør÷Jû3p2ŠÇCÈ Ê Ù œ*—^¿à“¯þlüüþ™¼)öÿ¢ü ùøúCþ¾G–¹ýŽûû‚ý‘ÿë£ÿ ™ + fÌÖ…þü£ýHþMþÿVæ%IöüjôUí§ì€ñùœ] × € L=þìûŒýÿÿ·ýrúáùkø»ùßý¬æ|OÊ Ãâ?û‰ø8÷ßúüjþµmÿ–ýõþþ{ü‚øÁöàø5útüÔ…’ רüÝôáóõ÷2øÍú­ýrðA‚ þ o‰rüÚµ%/ý¦ûùÆ÷fôòúöEú˜ýãѦ»¢ Isüú+úqý£z¬ýûLü£™$û3öæô-ôçúÉ`   ™ÿßû-ø“ø/úºþµÚÅþZýÿu-Å Nþüú[øâûg¿ÍóR'P2þìûžúzüNþÓÞø0 G ¦Mü×öxòðoóXø¨ýþøÿ_ÿÿ Ú1gç°rNN?ø¦ÿSüpù±øVù}û³ý9þì¼×þÐýüÝý²þõþ£ü|útùèûØj«'ÛÍ9ýÑý¸ÿÄÈÑÿ"ý¸ý£þ;ÿô‹¼þûíû*úXû3þ~Ž·•¨púê÷DùƒÿÔõÎáf×zàE÷P”Ñ#*&%ÇW CñÖYÍ{×Léröòó¤äÜäºù¼!\/è3K)¹D MýEðûîyõ?ñ¥ãrÛrÔrÌfбÚûäÜö… õ 1¥ .Š £e-å-¾ïëëÑÅÆcλç°þ ~ èÍZ' n «?ûù€ALïéã2äeöÝ ¡ýµþuê±äçéò¥ü6* ÆK´üªúL² ¨§ö©è äCêõ'Ë¿”üãý© ¾nwY!ò«ä ß¤Ü ÝPëÙÿA ÁÏùÏû0 ÌnÖ÷ôúÌþJú½ýf ¹Éùkõº˜ÿÙíÂáÛæÈz!n*Ž$—š/íLÛu×.àvî9þ5 Þ2êù:ïéô‚þò²dûÛôÞïøðÁö#þ&ë þ&õ|öEýÑ‘£$ ß ö‰¯\ö]í@èÅè3ìïòò"ö‘û˜þµlJ0LÏ •Ç™<ùúó•õ×úRþJü¹õÝõ$ùCöÝòèõmýš DŒåX „ ‡úéÿGú÷¸úóýüsûÏûû0þr Ö Fqÿ>üa÷©ò%ð òúý õ}t$ŠøÜö6ûa1Ñ þéóð5øAËOv /ÊjüHý,þ`û-÷Áöõ‹øÓÿñ—sü”õ!ñuö‘'½ ò Hõÿ«þæ? Á4ö Éþðæëì[ó%þ & ® ãæ÷ò.òPóOõ­úÒÿ…dI•R "Ž  æ ~ ™| ûFùô³ñbó´ø,úÀûóý¸ÿ¥ÚÊU‰ Äþ©û¿û¿úø úð ~ü¿ümønõaôÏùn¶ / ' þŠþïûpøÜøÁû¡Bqg5ÿ?oËý`ümüÚû³ùSønû-áF½åe´ì{öêÿ5þþÖ§„Eüéü¿|Œ«5Žæüÿ“ý¯ûÅùÀ÷Ä÷TùMúêù7öþø"üd$5á±Q’v¯láê{Ï£—hêüsú÷üQþcÿÜÿÊüËøn÷>øMùwý# E ; .|ýÑý|ÿ寄nÐ? „ˆÝpþïÿ‹vþÐý×ýÚüæû9úíüjþ]þcü0û'üÝmø´‰PþÁù“öÅ÷»û[þÍ`m ¦Vùýõýuþý”ûªúÆüÈTÿDû¼øÁ÷W÷Døuú:úêúƒúÌþ‡ ) h Et—ÿÍý ü…þ͹!üöòŒó(öcùÏýŦ0 Ó · â\ÿ,û ù%ø“ù™üÿ_ÿÿT’ Ý æ'øÔþ&þ~-Mò¸/W¿Uÿâþ„ûaø öãø±úÌûŒý&?13ÿ%cûi²&ÝÿñÿÊ#ÿ«ûFø,ø ù@ùßü‚ì Ì ç6ê¾ÝVá©õ< (# (Þ&D2è¦Ñ°ÌNÙQëköõ­ï<ôRÒ¸'î/n0¡!Þ :þßðZâ¸ãîí³ï»ëîâÊÕÍfαØdê5ùŸ®“–"&%2-A6á0ƒÙíӅļÀhÏ“í-d5 Kü*ýæùýóÛþ#° +ù\ëPì§øÓ9Ð&ï$‹´ü¹ëÌìõ^óØî§õÝÊ[aú4ûŒžÇ½?òêâí0ìÒê¨ïo÷øSøô~ó(.®¦> róÞqÖÖÔìÚ3ìOY¼"ÇïÿÿýðoîZû ý? ¦ ×yÿŸ ~ë qáüHÝëÈnÁJÇSß*¶*6É/ñ!= >ë–Ò³Ê ÐáúU€#¿'Aí ÕâÀ 8³ÿÄöíyéßðMû$¦Ó ûÎúwöÈöÑú7ý£üHú+ý©" xÒý‘ù(÷õó^íùéÇå½éæø¨TÄ-<Ž Ùè¸$Èûa-ý¾úqóÏížî6ñ¨øþ)÷Çêœäýçšð,úþì¡ ¬[q^ý<û•ø øIØ ï ® C¦Œ çÿ>ø™ðríaï¾òñ÷õý»­]û3ö¸üã¿ †›únë™äºên÷‡P AYzÇ?psà¼düÑü$]èÙNLö ÑÑôðë÷é êÄìðð»ô'õöÔýä,Ïœ ÄÿAúaúƒú(ý,ÿí1§¹ j!÷Äò+ð²õÚþÍPc²¶ü‚û!ü þ u§kÿ{ùkò™ïÔó=÷Mù úqúÏùù¨Û Sá]£L ;ÛìLF\ݼB¶þ™ýú[øø±ù÷Üø±üÿ_³|ýæûsý¦ÿåæ×gÿxýcÿŸ< þ ;»'ýÑù1ùü¿ ¨±¼ú’óƒî!êé„éþìçõdÞ G~æ ÍÈ­ E è0 ¤ q ¢ =3ùñö…÷û@ÿ5sÿÇúÏõ…ô!÷µûmûÏû’ýŽÿ®³f V zŒþ²úƒúûmü‘ÿîê À Ñü­úCû‰þcŒƒüBøÜý¯…# ®ûüãkЧÏÜã«,!,8‹;_(¥ ëÔÐzÜÍí¡úØüÚô!òîÿ¾ Ÿ¸"˜#©e _eŠþ8ð;ܟѹÒ$ÎÇkÂÏÊd匯3"'¯D†#Å6ÞD(;¾uïEÖúÏtÎrÔãÖ÷„B [Ñ ååçïæ¶õHu0öéñ~òÉöü6ðs"ƒÉ!ï—ñÙøÜøŠö»ü‹+f0,kìí‚èrïróÉîKçvêîóä÷Óø~ÿ,›Å „iNþãñÓË-ÌÚÅõv €|$Ý¥ísæ ð,ûÕ£æÌ=¹ùŸïÁù &Rñ2ãn×(Ëήí6/0¶' ÕmêëÔõÔ¦ãhõQ {é,×-Ÿ4ýéuåkèWë“ï ÷cx ùü 4þóóå¡à^èˆöB¬ Òš‹]Ëýšó+é5äåçÑìê–çî'ÿ« ŸòãE xì #‚"Ï&Ô/ “ýëSßÌÞäâëMë‰è…ç…é“ïôêöfø5ÿè 8øp:%n @VnwôÄþéüËZÇ!I!ŸDû!ô˜ç×ßðáæaï&ûOÑ ~y Lý¦ý9ù%ñMëkìð÷ C RøçÿÖ RÌ5ùöÑþÐ'gõŸ 8øê¾ã2å:ëì÷ïÔø¥ÿx•# ït(È c\3 Jtþøöï ,0üèÿ8üyùCôØôçùÏýû-)M+þ2öÁôü÷ÙýZ~ & o†uþ–úúø·ù†ý£*ýìÛ  :ÍÞ– ð]Gþãüdû0ø–õ¿øÿIˆsuøPñ÷ñeò4õþ™ /ê Ì:ùœð‡ìkî÷‡_°'›  ú§úó[“:h( - ‰þ)ô<í˜ë(í’ô¼ýE1UíS—ÿ‡þ;þuÿáæ“O / ‰'N ‡p.ýýúúýûLùõšñSëÏéÊïoù“/ V â€üóô¶óFøþÜAm!ÀÛ Œ ° ŽY…ýÁüZÿ«ŸÎ4üNôÏôúIÎ…ûô¹ðÜð»ò€÷ÿÓ fáE Õ š±&_wÔ ` Ø’üô¼ñ/ñòôÈû<©­úLö,õŽ÷òü¿­²b`ý”ù±økú(ý? rcµ°äÿÇüãþÿÇm¢jmû*ö£÷Múûü?üdùúöHõ÷]ý/tÔËÒ‹?ÿ%ÿ«EŒ…j ² à €æ²ÿ2úR÷Üû˜’wvùÙòúñÜöuü ÿÄB)Ùþ¸ô’éòãëçð÷oïå„-“/n"žÇù:ã Ýeä¥îÂú+mÿ„ÿßµ ³/5 ºÑv­IýéðæÂé¦íUêGãÓélü-ÅðŠÝ±ßaüj'ÀIJUõQ9Kå.Ï7ÍéÕ;ÚïÞnç‹ö‹ÿeìä!Û2]*ΪâÊ×’à3ñ .Úý9÷ìôÏï#æ9é £$s5.*Lfôá…ßëÉýÝì !:³Îó±áÚ9Þ4ç9êââÖèØçTþõâ0¶DŒM[=Ïê Í`ÂÁÙÌÎß¿ïòöiùŸtù/Þ2 ÐïéâÊÛ/â“ø¥ ï ýõðùY ÕŒ!Iÿ,áEÇ®¾ÅÉCÚfìz"óú ÿùâôFõÿÿ2ü w õTÊgþÖøñGï‘÷ZRU%9üìØçðéãë±êâîsüææ`% Dp÷#ãåÚQÜ»åÕë“ï<ú• Óã` 5ý`ýô rcci2[J> úFëtãá<éô¤÷øó˜í!ç‚ë@ú’ 乩ŠÊ V¬ÿœúOò™ïñhôüöû÷µû'° D46ñ&P ª÷»æ¹ÛŠÚßóèózÿ¥ t, ™ Ó+æòÌéÜè¯î-òÜó.õÂÿ( ¢ © J ºÎRc ¯‰¿ôCçŽæîéúq´ûs¦ùý#öížåwã~ê ò‰õ6ôCù½…æ!K eýìøöæþ»° · ® ¢ Xþ¯ùYù±ÿÛ³eiÿôþiÿöý…ûýþœ i S †þ£õÂîËìúïBó›ùÉÑ ú® V\ýéúhù·útþt i?YVsý¬ômî*í­ñŠöû|` ¸Í «ú€ñÐï‚ó±ü>­  ÿÖ÷oñ÷òqøØ ™®@YOðz§ ûøŠøGöWò@íöèÂæØìnô’ûRõ%Ÿ‘ï‚ ß {  Þ‚ ÷;ý&úû¿9 G › ¥wÿbúÞ÷òõíôgódôpúG èÇ è¨yûóô‰îðîÚóÉü¨<Mi3R”ü—óîêñì†õù¶ Í‚ M û9óÃîênêÇñbûöÉŃñ ‰ ì ,$6ûXøx÷Ðøútýÿ„)þqé' ð;×ÌÇßÈeßy%"‰0w;œ>,éÕùßß^ÏkÏYÜßõ¹ ‘}øýñ¾ô-L!!ë"ð1Ñòië I ‡ü3áОÍlÍõÊŒÅÝÏÏé‡s CÉ™Â-5=bGóOîòM÷i÷ù·ªâëþüšýoÿ(Aÿkúºü*ŽÊnãÔG , g ± o BÝö¯ô@ÿr u >]š°û0íì’ñðµë½ë4ó†üÚW Oé,ã(ka„ú›üéþ÷£ñ)ò‰ø·ý²µ c äWaüÅý…ÿþþþé휞 ¥ „ §ã¿~uý?õÑð„ï?ñDöþþò Ä S I Ø ~qÿôþþ»ÿkãC¶ Ü k„û3÷éý‹7 h ÌíüÎõôùø5úFü6 j ²ê ø{ôóô°öÔú¡þl0o£E% E0²í ²më• kÝ _åüæ÷þõ‹÷ŠúOùÜøÖöxñúònûy[ À Yð8ý9þcÐá  FüëŸÊ¡ dü*õ<ìÃåÆåLìtøe; ? ü ¦ÃOãø»ó÷šþiØ ý W Cüº&jïï1Wþ únúžü‹ýˆýÚý‚üøñõ”õT÷)öš÷éÅ þÎ~„ÅÿnýBùÏ÷ú·þéþ |- »2þ©ÿuêöÿ~û¡öô÷ßüšLÉŽTÝÿŸýàÿ™ûsòúñ5ôF÷éýÎNÿbþÇݰ $, Aàÿ‹ˆ 8ü!þÇ'_ý²úFõËïïñVú}üí÷ìöù·…ÿ8ùzü¼J ÷ •8s5ë‚úÌñ“òÏú}  Ùó~ùYè‘áèù Äå¤Gö¯ðcò\÷ÙÿÍs £å* ò±þòý£.|ô °ÛÑùÜô-ö¬ûUþûþßöÝðÇñâõÎý2k  ! +ƒ0ùPôžñ÷ñGøAuB9›„FÄÿŠúÕö‹óCóqôêù¥2 V… ·z¦é5ûdúÕþþl˜’Þ÷cîóë.í˜õæK " \»úÉôÒï¬óa]¾ù_vû§òƒò·õŽô°úLÄw¶žýö ÷&û-ùYôÞò_ï6ïHô•÷¾øû^W†  ü „vö òŸö,üNÈ ß : ÂÑþ5ûÏûXøò}ðDïøð–÷PäMZ å­þJúáû@üùÿô¼­ï Ç:ýý?•Þü<ñréõížô‰øëþ;ÒËCùâîÔìRôdGòdÿŠï‘ä_àèòÿ1Φ¿õ£ã8Ø3ß’óϨO¬û­ü< O¼ôaí ñûUÍÛ é @ À ¨.úw÷ ûj‹ìù\ï¯êëýø– BS„ Aü‹íçsîmÿPe 5 ·þ„ò‰ï‹ò4õÔû»ª ­å›¼òîä_Ù Õ–Ýeðß*; Ðz JùÒî¤ëßò´X;1ïÝÃØâö/ˆôHOôÅçHâïæÅòYïùõïãó·éÖéï|÷Zù D L u¶ý©÷]õú"P þ ÷ ®þ©ùºõˆóÉõTùþxn^xüK÷÷oû¤˜Ó Á Ÿ zÿùôöBöÁû Q^ P å?múúö òïøñëöcúíÿÖ\(2¿ iœ1>Eýòúä÷ÖõÿõQùSl æ ôˆ tö…ýiüóÿ¢{ ] H¤öü÷¸÷¦üplÀ™ãý×ø¥ö`ùÿ%º õ å tÿ2ü‘ü…ûXøœöZó•ð{ñúú[®¸üpç­àÚéã.48[žhX.köÎÇ2¯v°yÁÙÚ‘õv Ìd":¢ðÒÑʆ٪ôª‹;¬€ÿ½èæÆ­ç«ÈJø¨":3‹#§Ã÷ßùM›},l>çFs@ 2é&ͰúÕÞ®Ê!À“½¤¸)¶³ÆâŠûÛ Yªæ³fu$(÷(¾hûŒûaâŸ9i¬¸€ ïó%×ÃÇPÅ<ˎɘ¹µ­¡¬Ö´bɪè»øSñü‘0 (yÈÿúþ» ×ófh$¼4H8XÓSÀ7¤‘äëÄùº ÀÏ%ßüänØðÒàÕ¥ØöÞçâoÝ_Û]ã2éuê±îàûØ•4lå Ý0HY%a˜_–O.SâÝ_Ç÷Êàæùº~3ø;ñýçðØFÇŸºµÒ¾©ÐÀé/tš!7!þiøÙö¾üZž ØÔÓ h>(8°=Û0ÀòÜâfåï|÷šö¸è/Ò$Á®¾ËÈ×§ì^œò_×úƬÅÒ¿ì˜ Ð$4:Ý:Í9‚;x@A»7dTôØ÷¬ÀP"†X òñÛÇÓ Ýíöõð]Ù‘¿û®:§ÿ¯Ã-áKÏ#mÆ ¬üù"[”-;0})Oï•%]1y9×:Á0†¼ þ5õ­í¡âÍÒàÁ=³â¯¶³Ë°å±ø8ý&ø„òýðó€ýµ ÚÍc  rÇ!R1U;â7³#¹ ¢ùböû¥†+H,EÙû ßωÌ|Óšàê–ïHï]íØïrö£Ô }Á ÞÿÖîéç6îसm—íÒ$:ŽFRA—,rÂôØå’âZë úÉ N6ò±ÞaÓéØ èŽûU%¸øJî3í³ù ¦afXÇ#áïOQG÷Jíöêñòºtt)w$ù‚òºßÙÞ‰ê\ø2׿ö)í[îÅú „¶ç Ôù\í6ívú: ÉK(¥&Mb þïüj~ © ¯öÁçóÞ+Üâ¬ïBýov Ø ÿôõ$îKî9ôù(úzû˜?Ñ? ø ZýþôvôÈmD¸%#%H>°•÷5ìçìòåüZµ™x‡’ù÷ô‚óó÷‡úÀùh÷Wú"… VÂðßuÞû’ùÜ-$ˆ+'î!qáŠ"L$þ¯õŽñnóóûÔŸ§ f BóCü°÷Ðó†ñGðòPü×o#.M0ó)¡Õ Ùþ²óÕï…ò±û[Â÷A)e Õ ¾øøßîÔèlè&íòÀöéøñøÁú þ²,®ñÏgR ΋õ‘é9ÿGý]   % Ö›`þMù õ!ñ¾ðTónõ^ïQä®ÜbÛåžö‹k ~ ºÑÊ f`©} tú𥠣 ã¡Aû6ÿ"úwòwéMßjÖ®ÔìÜbê%ù±™­Û/s¥ †c{ Y–ÿ!ªÌ"t'ú#ˆJ ÿ«øÓ÷#õ òŸî¶ê¨èìë ðòùŸ‹!¼7ùõTù@_ö#'!Ø[ùÿ ò9æ ®årãÝz;ÿþ)ýÑþÿÇUÿkþMýŽü?ú‰ø™öHöÅü㉬^Ç Ï Š ] %­‡4ùð£ âtÿðòº>cùH;€¢Ôýþþcý ùèöó"ñ÷ölÿ8ü ™ ~þ>ý þ¬˜ tK ~þü-j' 7 Ökúžò4í3í3ò_ùCýæÿSþúÒöÁóIòkõQù€ü'üKú7ø®û… àî97ûdõöøÈ ò œìù=ðõí­ð„õ…ú•þÖªÈý…ø™ö÷ÓýKE É*üEûý”núg¨Ÿãr:y J £d©°BÙ0à'ÿ÷ùMõNõªù½ ¦È °pþŠö ôøSvÿËïX w D ¨ w á ]~” 1  P+ÿ>ø ó›ó4ö‹û3uþ¾ùîø®ûÅQÕ ` –’²pÿ5ª+N „  îØ0úX÷Öû-‘Bÿ8ûFøÍ÷÷ÐùSú}úù=øbøøýú‰üã‹V/°ÿåþcýüÝþT¶øzx¶ÿPÿ„ÿ„ýBúöÝôáõ ÷¬üyì:C>Øþ5ú½÷ì÷¦ùVû$ûáûù=øùýü<ÿ„Ud¥¤ýfüü£þ¸ÎØþ¦ûËùôú¤ý]ÑGð’ÀÇ›ÿMþ²þ©ÿG^?j¹ÿ´þûÿ“¼pâ~e[0¡´œlEr“L±‚üãøMõÎöWøÖûgý,ýýKþ9‡ Ç >  5½ÑT]‘~Ÿ»xc`Ñfq•cýÁûCúIú}ûûUüdþ ÿ™¹\}I†5‚ÿJý‘ûäúRùVú ü-þ–°éù›þ~ü­ûÒûÞýþfþ¦ý|û­ú7ùwù–úzüEþ°°0ÿ¢ýoû­û9ü°þ5þ/ý2üKüüdý2þi£vÿ¨ýQûjúÏúùëù ÷øö…õgõà÷ÜúÛþ¸T>¢|ümøå÷G÷þù=ú‰üüÎü­ü”ý¸aœ4ðèÿVüEûû§üšý]ýfýNýQýü^ûÅûäüËþ)ÿ>s3ÿ{þAüÚüEü'üaýµÿú¶Èð›¿!ÿ(ÿÿë*ãüòxǩˎËש4Í þ;ûaúCúÌüàÿʬ¨JKjÈ铬AEþ8ûÈúúûÂýþ þDþ‡þõþÍý©üHûXúÛúÕû|üàþÓ^ù?cmêÿAý`ü—ü¶ý‚þÁ0Þ6þŠü×û¼û†ûóüQüˆýýlý]ý|ýõþÇÿYÿëÿýÿ5ý¦ûÕú7ùtùåúúÀûóý?þ#þ©þfý¬ýü!úÛúOû^ý<þ~þþTýûý<ü£ü9ü…ýrþ~ÿDÿÄÿýÿþ¾þÿ%ÿ÷ÿœþæþ`þZþ`þxþZýãýxý¯þ™ÿnÿÄÿÿÿÿ(ÿþ–þ þ~ÿ¢ÑïHÿ2ýiýýxþMÿœ‹ÿý‚ü-ûóüùÿ8‘Aˆ|Lþ¸ýcüjûÕûÿüÔþ ÿç×K&…§ÿ±ÿSÿUIÿúÿPþ™þ™þÁþµþWýòýlüàü üÅýuþÿ(¡³*ÿrÿ,þòþ¸þ»þìþ]ýoü‚ü'üHüTüWüÑý‘þ þý¯üÚüTýþM¼HQ¼aÿ±þ™ýüüüŽý¦þéÿbÿ~ÿþ üíûäûXûûvü0üÚý2ýüúêúÏúÞûsüàþlÿÍØ$žÿ–þ ý²üŽûêûªüTýÝÿ®’[ÿ™þMüËû¹û‰ûsûúdùëúžüý”þßÿ·ÿñÿÿ%ÿYÿîÿúÿÿYÿuÿVÿ þ©þ`ýïýrüÈûóûgû!û•üýµþÍÿAÿMÿþiýfüŽü—ý2þþ¬þÇþlý¸üËüsüÑýþµÿVÿÿ{ÿ%þõþ¾þ»ÿÿ~3Û°Ú-ÿ,þTýÁýÝýÑý‹ý]ý]ýcý|ý¬ý¯ý¬þPÿrÿ»ÿMþ‡ýˆüæü§ýýÔþ>ÿÿ÷Ø3°ÿ¢þrý£ý?ý¯þ»ÿâ í!þæý¬ýý…þ5þ£þ¦þ2ýHüšüQüEüªý/ýýøþiþ¬þ“þZþ2þ]þ£ÿÿœÿ±ÿVþ ýÈýuý¬ýøþ/þAþ)þþýÁýBýüÑü§üùýxýþþuþ¯þÊþÙÿ>ÿDþøþÄþiþ;ýÎý‹ýxý`ý…ý²þþuÿDv¤aÿ{þüÑü‹ü¹üÎýýuý¦ý]ýüÈüùý¬þxÿ ÿþïþ{ýéý`ýuýøþßÿ>ÿMÿÿhÿ8þÐþµþþÿëÈ--äê¹ÿÿ\ÿGÿÿþ¬þ„þµÿÿDÿ/ÿ2þìþý ýýˆþTÿ{ΔàÎ*­g'<ÿÓÿ·ÿ¢ÿÿþ©þ¯þòÿÿ%ÿ5ÿ%ÿPÿSÿŠÿå*ÿŸÿnÿ“ÿÄÿ´ÿ¥ÿbÿ‡ÿÐÿÇÿœÿ_ÿ™^3ö{ræðÿñÿ2ÿDB6<ÿý ûùëùtøŸ÷Ä÷DøSûCÿ‡õà ýòûðýˆWÉÓIûvøÄùŸþ;~cÿŠü¿ú·ùtùSù@ø(øåý P’B‰œ½$äkÿ¥ùÜ÷÷øÊú÷úªøœø®ü¼× ‡ Iúúú"üó0¦IüBø8ö¦øúÞýšÿÿ»þìÿB­Nólüðú^ü’(pSýu÷ãõ õjø®üÈÿMÿeýÝüWü ýæ×í % ( ¾w`ÿ8ÿ¥?]ýoùÜ÷Š÷©ùúFúÒú‰ú(ü^Àª Hveÿnú›öoô3õ*ø´ý`Kþ.8`»ÓxþÙüûÈýË›øi×ÿŸýŽüHûÈüýNþŠþcý)ûíûUûËý£3¿vÿÖýìüæý#þ‡[i¢_t“µvþ£ü¹úžù=ùCûþ©ôÛFÔþDüsüüþÿ»›3…Ž$þÖý£ý]ýšýÅýý—ý¸þ¸'áHK! þÙýüÔþ ÿÇÈ£³ÿMþý,ü‘ü¿ý|þMþßÿ\[|”,#~cÞ£ÿÈUþ8üüüöþ#ÿ«Þ]Ë3È;ˆ?Žó ÿýÎûöú’ú+ú÷ü$ýrþ²3 _^p„ žÿßÿVþõþý‘þ`ÿœ<fi˜ÿÖÿVþìþ`ý»ýlýÚþÐÿŠÿÖ‹!í•ÿýÿÐ'›v'ÿèÿâªïãÇÅOþþþþÍÿSÿ¾ÿý?ÿ¥ÿþMýˆý<ýWýýKýæþ™ÿ_ÿúXÿÜÿâ…W2é8²þ£üZû3ûpü³þ•­šÝZÿÁý—üjü°ýÁþïÿ¥ªZ?Ñ;ùÿÙÿþãÿnImÿ÷ÿ´ù8Ju*þ8üÑüBüéþ,ÿn$Ñ&”¶ÿÊÿxÿ~ÿ–IŽè\ÜQþ,ýýøþ¸ÿ>ÿþÄþÄþæÿ 'ÿëÿ„ÿAÿ_ÿÊ ÿ»ÿ(þûÿGÿëyÿxþPýÎýéþcÿ%XšÎ<ÿ{þýþýìþxÿ(ÿ¨ÿñÿýÿ¥ÿ–'­s¼0?ÿMþþ`þ¯þõÿþ“þMþ2þþTþþµÿÿ¨L›6ÿŸþÇþþÐÿ´XØ*9…rEcRÿ_þrþ8þWþ‡þßþÄþ]ý¾ý#ü¼ü°üÿýˆþ>þÍÿ"þþþÜÿAÿ¨3Å‹”P>Wc¿Ž˜$ÿrþµþ]þ»ÿXLÿŸÿ"þòþµþÁþ¾þÓÿ,ÿŠÿ¢ÿÿþxþ/þfÿSˆ`¼ïùÔŽ-Ø…d޶$0³ÿÇþ£ýÈý©þ þ¾ÿxÿ«ÿ‡ÿxÿrÿ_ÿ;ÿþÜÿÿ;ÿk ŽW`„5mRÿÿ(ÿ%ÿ™^ÂWÚ/—¬]ÿ»ÿGÿVÿŸÿÓRžÂÈó0©,]j¶<R^‚•¤[ÿÐÿ„ÿ~ÿ~ÿSþïþ²þÁþÍþþþòÿ8ÿ™’ªBÿ“þþþ þÊÿGÿâ?RUj‚9ÿÁÿþþ`þ;þfþrþ„þøÿŸ<¹-*y¦6­y*ÿhþÍþ¬ÿ%ÿÍLÛE¤U ÿèÿèÿÜ$˜ $ó¤ÿ{þøþ~þ~þ»ÿ8¤ùÿóÛÂ…ž¹Û°¶'Þ¡ªÈó`gp]‚cjK°j*Iv’³¼¼•[ÿ÷ÿŠÿnÿeÿ_ÿ™ÿÊÿÓ¹— WKsªEÿßÿîjv°ò)QÁ×” $9ÿ‡ÿkÿ±$…ÛöÑ|ÿbÿÿÿ>ÿhÿÙ-?*ÿåÿ®ÿ»‚ÿ-'ùç0K9ÅÿåÿDþþþøÿPÿФ6¼È—6óۿŶamÑ!ZysÂpd^<IR|ˆp<ÿÇÿDþ¾þ¬þßÿ"ÿŸ!ÿâÿ\þæþÍþµþ²þÙþéÿÿ¾yËáíöÅÈ[ÿŸÿþ²þÍþûÿPÿhÿPÿ¨¶$gNä•I-ÿñÿÓ6°0s?üíÔØÎ¤s ÿÖÿÐÿßB¤°j-ÿÜÿ±ÿ‡ÿ/ÿ%ÿ%ÿGÿÿî$?E!ÿåÿÙÿôÿÖÿÇÿî!9gUÿñÿÁÿÙ EIÿèÿîB…¡ HsmáBÿ¾ÿMÿÿ;ÿhÿÙBÅó¶¤gÿnÿDÿ,þÙþßÿ ÿuÿ±ÿâ$IpmmRÿýÿ»ÿ{ÿÊ'a°*<$Þ|[6ÿÐÿþ þþ¦þÇþþÿDÿ„ÿ¢ÿ«ÿÊ$ÿÙÿ´ÿÿVÿGÿŠÿ¾ÿÓÿôU­’ÿîÿå0?Lÿ“ÿþ¸þæÿ{ÿÁÿ·ÿë ÿåÿ»ÿŸÿåE¿!HcE*ö$°-ÿ·ÿ¥ÿÁ<[EÿÐÿxÿ(þõþïþûÿ_ÿ«ÿô?I6ÿÙÿ™ÿ¾ÿÙÿÖÿâg|gs[g^ÿ–ÿ„ÿÄO?±é¬Åôóë%ëÃøA &œ1 «ù¥ø,H7¥ê¥à³óºé úCð/ô‰ &íÒàê»!%#¼pñ»â)ç—ü ÿâõEø™Þ  D÷æéÜ ž½÷&ðPôÿS •ý§ÿ®ô!öfà^ÿ®ò¢ìÃñÓûç0ÿ«þÿ‡‹¸ ×Ô÷²õ3øåû¿øëó ïïÝõ$ýš‹p8Û0þøëú4ý©ýKüsBm›ÿÁõ§ñ÷5© òŸøôjÿ¥•ù1üÔþý‡ùÕííëò–ýµýøõ—öf,‰ qýÁö|ù}àyï ùÌó+ôáüü~Eû•üé'Úþ‘þMç!à[ìFþÙ ¸Ëý¯Ï;ëU÷`îæð¬÷£üü3úûü² •ò Øñÿûíûªúƒ÷Tó¡òý÷ÖÿÍýH³  ® O xˆþ +)ûùó í¿ïìø¨W*mâ¾¼ Hzÿøôõ^ú+þfþ£ý”Rê „ Óÿ ô$ñ·ø>öÓœWÛ|X„ýúÕùtø÷úÒþ2yºdö )W1×ÿ2ü‘ú4ù«ú†ûüÝY œ ! "þù=ø¨ü$i¬þ¯þi×üöùzøèüöA®Lª½ÿü|ù:ùYûðþ‡d|Q[ÿ¾Z%ÛRåDçýfúºùqú%ü6ÿ%Ô_Dgüüû¼ûÛû‰úÕú[ûágâïHb²æ]Úÿü^üjþ“ÿßÿ«ÿÄm*ùµ ¬ÂÿÐýûûmüQýNþÖ6ÿÍþZþp„¸GìòNW|ÿ2ýWý£ÿ«Å^ÿ_þþûö>WýòùÆù†ý&Qºkû¿U°È‘‡ô͹þ/ýýEþÄçHü$5Îþ¬ýïý—þAÿßÂl@ju#K oùþŠü‹ý#ÿî`ò#g?2×ÈýûüªÿÁr¾²]üÁVÿúüóû‚û•ý×sÐ]òØEùRþ¯þ;þÍÿþ`ýxý]þ¯‹FÀºŽþÓý”þ8³r£I¹¸Ó”þòüÔýµÿuÿJý¸üWû‰ýË,þõüùý&þ–? Ôçu+k8iŽÿ¾þlýoüHû¹ý/ÿú¾ºIåyÿÓÿ\E—ÿåüÔûXüEüsûLý¸­s üÝñô0úªøúüZ`ðÑü§ö]÷W÷Ö÷8ô<òÀõãøYûÅ VümÇà1-"Ï-æUåCõ…cùôðAëÆëeô5yyýàH=H ûóŒî—ÿ®ªå¶Žø¨î|è‹ï ûsÿÔÀÞ‡ÿ/û0ÿô óóðøÿYü ÷xô³øÍ# ‡ö ëÉëòßþÐ fø k)÷Jôüj1:ûô0õ‘ùÒüú÷ùSýû ðÊòY£`<½ ÍýþõöìüZûyø¥øYôðrøx™Ë ¢, ~føòöÚv ý ú=úúÿ¾È «ñÍé¾í ø Ví­ûÿYßÿ5ú›þÓŠl# " 6>÷–ñŠ÷þqòšúÏùÿ/† ,Êù¨ùÕþfÝõ¶ï…óíýõ_fýBþD · ÕHüaøAú%ÿ,ÿrùÌô­õ‹þu ò å€ÿÓü¿ú·ùhúÒýûvUˆâÿYû$ü­ìkÞ® üQ÷¬ùÿ¥ëÂËPqÎøýô^ø«ÿP*pTÇ­ÞŽþú=ö—÷uþôzÿúû›øJù‰ü×ÿ–dþÍø™öûú´&Žv™Ëjþú}ùù´ýZÓXY‚À¬ÅåÿDù‰ôÅôöæø±ü*#ðîN ÿÜý—ý‘ðøe8ÿJù÷Dýïªyôø„ïë÷í­öï #³U× |jùºïïãõ×øÄúÞýuþÓ×4ÿ»óUê\îZý& b×OüóûLûöüQ3º iý‚ùbü³þrùÏòFî³óRþОðûùeþ¸³ ßgùeûš]ûóôõéÿ‡®|ã·g'OV ÿJ² E 2Íý#ø,õˆó·ó˜ôí÷ûdK9 q¶áú$;! ü­õíô÷©üdýæþ Q û”–×°ÿPù«ùÌûÕú÷éõöõæúªdKý…ûCÿA7 Ü 8ÌŽv?M£’üúRþ¾i„mÿåS ¢- ãþcóLîãñè÷ïüÂÿè‚yžãýrû-ùèøëùýûáý£ÿúr–gÎUMÿü¿ú:ùîý”&ÿ¨ýxüjû|üˆ˜z f Ó6ÿÊùñø{ùù1ú§ý» ¶Ñt¥ÐÁþiû*ù¥ý !ÿ%ùÄUúƒööúÿ_Gƒ- ;éJýò÷ ó­óž÷¦ýo/hvÅ ; ¬cJýTøhôpòëô†÷ÐüBîI ¾ÿûäûUû<úùwú´ý‘H"¥O^(Èû÷`õ°ö2ù¨ÿ%ÖO˜ƒuþßü¹ûù«øöû÷æû‰ÿOï õÝþüËûÅúŒú­ûûÒüHþlBxúýþ2ü0údøbøkûþ ·"Ôÿ÷Ñâ¢ßbëƒÔü6÷ûú·“ p„ ßý—ò«ð&öBýýoùVû°ÕæYÈû õ0ù v bàü9þ¯B¸üèø{ð>ñ™øhs³©c¡ o ¾Ôö îÅñŸø~ÿ´²ÿû-úC µ• q7¦pÊVÊüÈ÷‡ùt¡EÄþïú4û¿X“¡ùÉñ¥ñ>öËümýfúk÷þùeÿ=<Á ý üˆýãþãþý¬ÿÿÍÿ>û¤ôüð²óFýª *ý©p  5ýÿåþAÿ®°þûõÔï6òåû¿¶Eüöcô‚ûdê×ï ·?1ÆöúªöþøDû ÿ÷,rð# ‹Yý •<òîöNÿ>æþ,üÝþæMí—û­úCþø(-صfÖþEþÖüQüaýþ£m 6ÿ>0ê¤Ë~õnL»ÿ{ý)þ–yõcüóù´ûjs‹Ñ­ù ‹•æþZúäùùºüþ©<|éÖ  ü×ù\ùŸý1ß‘<ÿ>ÿ"þMûÈøõZõp÷þû'ý‚ÿŠŽ&eØI¹þ„ûùùÏøåù=ùYùŸûóþ|k‰Ó¹üðù½ùbü¹ÿëä³ÿ»ýËýý©ü¶û|ü ÿ;ì½EÈVàý‹úóùtøDùhý6ÿú‚<9ÿuY‡éÿ ýÈüEú›ûêý”ýcþ¯ãN$Xÿ_þ–UËÈB;„,il¿þþMþéþ£ÿk]àNxÁÅGî([zKþÄþGþ#þÍ-OÿDÿ_<Å»ÙÁy3dþ ýýüËýiþÐ 66!ÿÇÿJÿå?äÿPþ{þþlÿ«Iÿ»ÿ2ý‘û•ú†ú€ûXüBý‹þìRňBcðEÿ®ÿxþþýˆüöþ8ÿÁ Åÿôþ™ÿ ÿñÿ¾ÿnÿ(þ üšüdý?ýý ÿИþãýãþ>þýˆþTÿVþÍþ ÂÿYþŠþþþ¦þÿ ÿ5ü—úÌûû<ûüýBüÑüWþ,ÿ·ÿÿuþGûÂû•ü0û$ûLþ#ÿýÿÐ9c’þÍÿS¼ÿñÿÿåþ`þÊ››ÿ¨ÿÐÿÇþZý²þŠýÚü3ü³þ¦ÿ–!ígcØÿþþ2üæü|ýõÿ\ÿÄÛ~{sBËþìýˆýüûû¹ý ý]ýµÿ5OÿÄÿîÿ8þþþlþŠÿEHÿáªþ¾ýÝýþÿŽ©Í™²Ð/ˆã6þ‡þ þéÿÁ'¶aÿÿœìŸ·–þ÷ö)údóp ` ‚ýTþcc÷„îàñú}ˆá¿÷ = Ø þð,æÕíáþxªmûäö  AÈ £ ¢úóõaøÖý6ýïû¤ùÕýµL = ƒzÑ-ÿÇÿ5ÿÜ?ý¦øúú– Pý2û­Ž @ýæüÿ þûäÿe5E+¹oÿnümü‹ý×ûÏùwüÿèOÿ®2€¤1°˜)ýÔû’ú"ú¤üˆýWý¬ÿ JºÿÇþÊÿ>ð.Ê¿ý²þ>ÿ~Ñ~'þ&ªtùüøëù¨ÿY… _ 5]ÿ¢þ¸þJü<úqú4ü‹þþ”{L 4f ÷ýšøuöËö`÷õúíýE\æ ©|1³aÿÙü¼ûXüvþ{0uî1"88¡'ÿëþZþ>$ÇûD¾¸è¨Šÿ2ü<ûöýÿʂх¾¸ÿ¾¡ ˆÿœÿÊÿÿÙæèVÿMü3üÑþ“LH¯”Bã{ˆ]ùZàÿÙú’÷Óøbû þ²µÊŠèYÝ—ýû•û¹û‰ûOý)ä1‰‰ ÿèþÁü ü'þ~$ÿÿb9ìæÁøÈýxú÷©ö¾ù±ÿ\A¨·’cà$þ¾û‚ùñúLúOú}ü¼ÿ–mþz•Eÿný ûÿü<ýÚý¯ü­üðý×þ²ËiD¦ýlû û¡þ6ÝF.²!þü¶ýWÿ_ÿPþûÿÐÿëétÍ/ÂýBúÛû°ýÚÿ5ž—š6ýòûóùëùÀû¿ýÿå«?;ÿÿ,ÿþ/L],B©þ>Åý…ø“÷ û9üùûdÿ/ T ‚>"  ¨‡ùó1õÝûêý2ù"øåü­þûs1zÈþWýņ±ýxû6Q¹I;Ù$ùîô6ö‹ü6ÿnmÿèþÍÿ¥ÿ‡ûIû¨ øµþ2ŽÏJöNû­òPì+íó˜û "#éfEõ!ôçóØìÞïa"­)ž„²ûÕ$ÒÿPï—çBåðâ`àšèõg] Xõ`˜{_ü¿ý Ôóü6úÕûóýè©éùžêø?S ˆ˜Aè·Zý vùþ»ûÏþ)ÿ"úÕñÄè<äôêÓö ¬ ÖÆÿÙ úüˆûLõ£í@êeí†ó­üÑëZ ¾ ¾úðûž¶0 ïG°üæúdýfùþ`ú´ý&³ÿüaúø{úFø öà J1ÿ>þ`&jÇúªõE÷¯ûý)û÷,öZý¯ìÅË ë„þDü‘ùòî|ò¥ù®þ–© õã uÿŸû9þ/Q³ýfûýÈ8 rÑ]ÿ“°Ý-ûô9ò÷š”E…zxSwë—ý&ü¼ÿ5ˆþÍû ÷i÷#ûíïB.‹ÿÿ\ EþAü!þ,­ÿÊ‚œ¥¥ýEùÃøÇøÖû§å=\eXû¹ö—ñŠîpòký` šŠØ~?È VýÑïšêÄîÅô•øÁûÏüüQÿ\ô k$ C8ýTý6ÿßüõæøè   )Ø£ü<ø÷ùMü×þAþÿ»ŠF \Z ßAüø"õ¶óÆòºó‰÷Üþ™H­þ²!uúR öúðøŸúÆþAR¼8è ; L3Bÿûöø™÷Möà÷xú´ÂU % VYÿûÿúÉü‚°­.¬ýþýãÿôk¢…þŠûXùJûOÿPò° ²ÙÿAÿ_`Æ ãüã÷„ôíõæùýWË0d¶Uÿ"8¡ Š GaTú÷ø´ú4üÂÿ¥K) ÿÁçˆÿ´¬Ù•yMýøû˜ü ü‚ü‹ügûXû9a* >…¢ý¦üˆýûsø“ù\þG2ëœ,þrþ©ÎHÿñÿPþÜV+Ù†•®þrûÕøÙø±úÏû­û[üæÿÖB] Hê“ìýÎû$ü¶ÿ¨yêfÿMýüBüvÿÍê¥Âý¾ùëøûjÿ/ÿJÿœ' LŽÿ¾ÿÿÖ^ÿVþÿu¼ìå¥`ÈþAw¯‚þÙý<û¹ù÷úhýHj¬sþéüËü—ýHý‹þ#þÖþ¬þÇÿñð0ÝÑÔÿ¥þ–þAþ/ÿ„c™uÿýü6ú%û@ý]þÖyÿý]þ/ÿ¨ÿÖÿÇUÿ·ýÑüÚüKû*üB—‘µ²ÿÿJÿåžÿ(þ™ÿ¨ÿbý¦ýcþ„ÿ¥ÎDþMûúùåúüóÿþ þÄ$¶ÿ"ÿDþýoþÄÿ,ýTüªþ„ÿnÿuoÿ·j§þxýþ ý)ü‹þ&ÿŸþÖþìócÿ8þ ýÎü<ûÂþ£|H¹ØþÖüaüðÿÿ÷Ŭ¿ÿëþ`üBýKÿ/ÿk?H µ×vÿüšüýìþßþÍÿ~gÿîÿèÿ™ÿ,ÿý¬üpýýøýþÿ"K/ÑWOþÓþcÿrÿ~þ þ‡þïÿÿuÛÑ*ÿ»þüÑüQü‚ýþã|¾#N¤ ÿ(ýÎýËþÁÿD”Q~õƒ½¦ÎþÙüàüdýoýÝþipïÅZòÎýéüaüQù÷ôçñòøßì È’ Ǧÿ´=¹ zûüé~ÛcØ!ç¿’#Î*á'þähÒdÛ,ø®-5/"Ïõ6Ù‚ËÖôòâd Týiì4Û>ѤÙÅõ¹]+B0%Žêù7õÿØÊ+”#Ô ñâÝkÔMÚ6òÆËQÿ,ß9Ï·Õ¥ãñô ½*=4“¦ÿœñ¾ç¿à³çü Tˆô³ïæáácë4þJ Z bõ9² » Î ò ©ùqë™Þ Ö–ßdñ>ûüý¯û­öoï&í¿û§H(±+m%»Ñ_ÿ{òPøe =Ÿ Žï ÖJÊÑyêe³¼tƒõ—ñeâ&ÓÜ)¶ùwï¾òtüvþì÷rí^ãPÕñÍ{Û¾&µ7:,#|ðõâ¸ç—þPÍ7³6V©ø×ƒÊ¤ÔèuøŠûÛøñ÷/ôËñ\ñxø„ƒÖ)w/7"˜ ™ø“õ6ûdþg¾üªù û^þ2ýûCûOÿ;ÿJùœü0g Ø ®¼_ý#óáê>èøò4ÿ/ G° {ù™êÄå"êÓú¡ Ì,C½øbö2ý9äÄè M †(ö‹ë±êðþú4ÿuþõðêÁæçóO ’_ÛÿŠP’„Ǻû9ùVùÃõ9ñÇôá÷fò€ì±ï õ¿ûXV¿¿O’‹œó³×õÑê¨êóXýl~àýÎôísòC[Ñu$4ññé‡í¼û@ˆ ºßûªô!ï]îÝótüË”SŸ þ©÷Üû¶¨¦„l áý¯òºó‰úá’ü$ûË÷øørý 19RPþ²ùŒøÐ ™9 Óþ¸úªûÿ8¾öýŽø õ°ùSÿ“(øÿù€ó.ïQðŠøbS&Bùôúq÷)ý…ù +*&û°öô^÷ìþ,þµ’ÿÙÿ“ý£ýZvë­° Ïžþýìý¯þ&ÿ·ÿýHþTsB! †þÐü¹•Ú$® ¡öÿnþfüBûóÿ2Q…û^÷rö|ø·þø«Â­Gÿèû‰ú.û•þ&3ø`?ÿÿ üü¼sM:öÕìÿèò7:+úOö¯øúÿ8ƒÝg5þ#þPN¥ˆ ` ¿ÎþïýEþ  ”RýÔüdúÛù·ú^ý/žñ Iÿ–ÿܶo2þ²úÃöÝôÿ÷ýé]~$üªúáüã¶Ù — ‹¤&ÿnþGýiü§ü3ü'üùþï9ÿ„ÿSNÝšš…Ž0*”gþ¾B"úÄ£ÿVû³ûþ#ÿŸ'K°ÿkü£ü¹þÓð;éþÁþ>ÿÿ‡þ„þþòþTþPÿMÿ;þ/ýøþü³û†ûªû<û|þ JÃæ$ÿåÿÐþ`üÎû<ùÃúzýNÿÿ_mEÿ¨þÜÿ\Xü»ÖˆK×ZÔˆ×êý”úÛù¨ú%üæ‚  ÆÉ%ÖµJ#ýø‡÷ùœü°‚8ŸÓÿÙû$÷Ó÷ãúðþu3þû,—ÿ ‘þÜùwöÁ÷ÄúºþÄ5$½,þéüÅüÝý¦ý ü‚ýrþÁ0µ.ÊËÿ¢ÿG•&5f–fÈÿr0~iDþNþõüú(ùýü-þÄÿ{ÿ™|²*ÇÝÿ¾ügúƒù@ùÙýf`ÝK]ÿ¨þ;ÿ2©Ý²ÿëüóü$ýéÿV?¹Êüp÷óýõ°û9ÿ~êo¬>þ'þ¯ý Ê 5È„ûmøßþ 8ÿèý©ýòþÿ—$_þéÿ«¶ Þ o0ö<îàï¾øÙæeùë÷µÿ" {ª ¯¸#þlúh÷Zô9öÿb x-j£ý`õæô¶÷`ü¶ë ¶ ‡þÜõíÞênîíúIÿ¿ Ç Ê°úó=û$Sþ–þÓÿPûžûRb m ÍÓIrL Qþ&úêóóï—õ*ýiÿÊ ºV ¦þ û^ø¾÷¦ø¨ü§ÿ?°Zý”ø¨÷“ú4ý9Ñ CqË\õíèâøê÷TÿMgá®n E qTÿýøü^øÓñÇëâî0ø“Ê Ÿ.ZWË’µþÖöðGñSöˆü0© zë ›d®WþuüÅþ#˜ú 5 „ýˆõ¿ñó†÷xú^þc¾­ü #¿²^ý úhþ³ <õéò¨õ…û¡ + › âßûmô îËìðñ»ûLÊ a hü5˜þÙü<ø÷#úLÿA›ßpý‚ý¯ÿâò° ëü ŒOþ÷“õí÷lùüÿüÎøûFòØ K ²òõÿÖþDùwðéîàö&ü|ýà^ö ú| ŸfÿÁótêŠéÙðµûöØ R g åTLþÊýŽü‹ýµùéÞþGþfý¯úaùÀý…ÿœýòþ,Âÿà ÜÀÿ±ùSöˆõ¶ö<ü 1  xë›úªõ…ó˜õ<ø2û9ÿÊO«L}„&ÿýµû­ûjú¤ù·únü-ýcþPÁkÇ{S°þlúðúUü§ÿn*cf•þÓüíûú:úçü³ÿeßQÚŽüHùVøÖûÿ5lg! 5Bzÿû¿ûûCüÝÿ,ÿüˆûûvüsýÎêŸRýLÌ|ûI÷;õÅõ?öxùúþ‡Ê1[«µÿßýšüÔý¾þ ÿ>‚Hýiû’ûXûÞþˆ7L~ÛÿÐÿüHú(ûÅþû3o2þÁù÷ùýWPä ÂúBü×úFúOüàÿýÝæ«ŽÿÍþãþ£þ>þ)ýNû§úêúÒú§ûFýKÿ¨0TfÓ:Ô ½ G=þr÷5ò%ñî÷þ,²Æ_¬ÿYþrþþ#ÿ¢,FÞ,ýˆù±ø%ùßþ‹_p1¶þiý<üÑûüû^üþDù ãä^ÜýûûXüæþп jþÇû!ø(÷úFÿ>¨  ™³®ÎþÜ'x¦Åý÷TóñÄôùJ èK•âåpþïþZÿSÔlÐÊ¥)Øýlù÷÷T÷Zù‰ý9!AˆÿÙý?û¤üË ùÑ ƒÂÿ±÷~óóÞø ü R¾æK¹?/Snq²^ýÁü6ü9ü”ü‹üÿþþìÿ¾íùEþøüúOùúdýÔjå¨ÿÊügú@ùÒûsþM\Ϙøþßû†øâ÷>øeüKB‘Iq8”­¿ŽQÿý#ûúûþ`@<ïÿ»üˆû!úúû‚üÔþïN~hRY2˜þý?ýþ/þõþ™ýrü ü^û¼û³ý<ÿ·ŒeIþ“þ þÓ gÿ÷ýþü‘ü<ü9üðþZ òÖ«ý8çü­ø´ö—÷ïûáBå$[wÔÿÜÿÿ"ÿ±ÈˆªþÐý‚ý/ý£ÿ¹®Faå×ÿMýøý?ûÕú[úRû ümþ¬`;YæÿVü…û9ü<þµ0‹£HþæüàüTýWÿ‡‚x&yý»û@ùÜùÉú¤ü6þTÿŠÿþ¾ÿ´Ñö˦êQq´o6ûËø¢ø5ùzû¡þ~?E6ÿþ‡ÿ\9ŽÈ$þ üðü^ý þx’—r×þý)û¹úhúUû†ýKÿ÷ e_»BÿýýãÿGÿýÿÐþþýoûÏû¼ýNÿÁ埩üýû*û@ý/ÿÖÁÓɆbv?ÿ{þûþìÿ´Hš¢å²ÿÐüÔûOû*ûöý¯m)“~¬£”ü¡Ø?°þÄüpû9ú•ú=û@þ5K¯à8ÿëýü”üªýµÿÐfYýüÿÁþü‘ûûŒü$ü…ü‚ýiþÇÿ‡TÓ“Ç¥™jþßýÅý ýý`þDÿx-ÿ2þ#þ ÿ,^ q³ÿ%þüóýýàþ þÊþ»þ`þ#þ&þxÿG‚׋¿Bÿ,þGý¯ý)ý]þ“ÿë$ãݧþrü‚û9ûüþ„gìïÔv3ÿœÿ5ÿDÿŠÿ2þ“ý×ýŽý¸ýõþæ[‚/~ZšUþßýõýü£ý‹ÿÈ2 S©ÿÿ,ýÝý/ýý#þ5ÿPÿÖ*mIÿŸÿSÿ±ÿŸÿ_ÿ™ÿÖÿ«ÿkÿ¾!ˆÈá•ÿ–þ¬ý¸ü­üüQýþ„-ÿ{ÓŸfþ ýKý—þ“ÿ®]Î/ÿ„þ;ýÈþþ{þÓÿ5ÿ´E°0‡–o~©›þ“ý”ýüý,ÿ5”]YJ&-ÿý¬üæý2ýÈþ„ÿ_¼”…B³ ÿ"þ»þãþûþéÿÿSÿ~ÿÿþæÿÿGÿ„ÿÇÿ™þ ýïý”ýŽþJÿñÑ‹&-ÿŠýTûùüüÑý£þ£ÿÊsdI ÿ™ÿ%þ©þDþþ)þJþ~þßÿn-ËB-˜ÿßÿ2þ,ýHü-ûdûªüÚþ¸ÔÄõÇfêÿŸþiþ8þ²ÿÿAÿ±ÿ¨ÿYÿ þìþãþÇþßÿÿþ¾þ¬þ¦þ£þõÿDÈ<ପÿYþGý×þ,ÿbðNþùLÿþ™þcþþ]ÿnEvËšÚvöpÿëÿŸÿhÿxÿîËà;Z‹‹‘x¡þÜýBü9ûóügýò<55ÑÿîþÙýæý¯ýÎþ,þÜÿ!›Ô#Ú0ÿÄþþþ¬þ¬ÿÿ„ m[’‹ÿÁþ¾ýÝý¯þ ÿM¶ò¬£Žÿ„þßþÁÿ"ÿ¥ÿ÷aÎg¼c$Â?ÿ®ÿ2ÿÿÿ,ÿ„0›á<ìBjmÿ;þýQüóý`þ¬6vB¦rËKÔÿVþÊþþþÖÿ>ÿ± OŽ^Up…<ÿ™ÿ(þµþþ þ¬ÿ¢çHão<ÿþ©ÿ/ONHòø¬0?ÿ¾ÿ¨ÿÄÿý•…?{?…Þj!6ÿÙÿ(ÿÿ>ÿ¥6³¿Tÿ_þcþ)þ™ÿ>;×>c¾Ý‹ÿPþlý©ýÈþPÿ,!ðv¦°|`W­jÿîBÈÇF†Pþ–þAýKü³ýËIܶ ²ÿ´ýú÷ûýµþ‡þ£'¼ ˆ¸µ!þcþþ~ý üdü<ýòÞh¤ÝëdüÎýÿu¿þúOø/ùúÞþ ¾Iü¶u-üÑùýù€ú§ûíþ`gàýËù\÷Çú1þÁ„ „L ½‚³ùºõÈö û-~ŽåÈüdûØÿ«•Öœ8ÈÿôÿÙ¶mŽ~Gþ’þÿ,`ÿüaû•üÔþZþÊ÷{¿ÿ·3 o&Î>Í¿ü¹øúõ¿óÕõ¼ûË Ê €ò;šÿ™ý¦ý,þ;þ)üWúúüˆÿŸç…ö7˜ ÿÓû­ùeù}úÞüÂþæ¼µ˜ { .Tlýiøœ÷/÷þúÉ?·*7×?üüú:ùMûpØm'Þ+ÿŸügû˜ûðû³üýxþ‡þõÿ\ÿ¢ÿ%þ£ÿ$„»þJù«öÁ÷–ûž;ƒÕC/þ©û9útú½û ü‚þ‡ÿ“aüŸÄI«y`Ô•ÿ´0ÿÙýøüNüþGyE5o³ÿGýlþ9T¶X­0þüíü‹ýTþ~ai Èÿ·þ™ý”û‚ú.ûý”! w2ý²û û!ü—üÚüûÕüÚþþ‡þDþÿÄÞÚûÓ¾æ0þÙüÔûêûËü°ÿM/“oZ0ýÝü×ýì?xúøþûù“úÃýæÄÌ7/9þüyüKýýïþJþ¾þ£ýæýŽþŠB?£³$3ÿÙÿ(ýoûªû!û’üKý‹ÿY*éÎÿ8þfþWþýûþ戎)?g…ÿÁÿ_ÅÇh8û—ÿèþ¦ý¯ýKþÿÊpfrÔ‘#xBÿëý`üû¶üýéÂÍ ÌÊ3ÿ üàûXûXügýþÿî׋fþûý…ýÔþµÿ¢…˜ÿýÎý#ýHþ£sÄ£ïç'6•Ë„¦¿ÿ·þìÿL°—ÁÊëSM|þÄü?ûŒüýìÔ; ©?&ˆo¿]¤ÿ(þZþ,þþ>ÿe3]]òÿÜþ»þþþ/þæÿÙEüBéÝ’OBˆB¶çÿÖÿPþòþþÿ»ˆ-?D;¶6ÿÊ6‹…Ôç›[ÿ™ÿåíÚHÓ¯o­ÿhþWýòþÿh-æì¹|üBÿʤѶ<þïý”ý2ýÝÿ¡`Ÿ¾Hýûü|üüNý,þÁ-”K$Kjùç-9­'ÿÐÿþþ¾ÿGÿ{UùòõoTÿÇþæÿÿ¢LcZ8Ž$ç¤ò 2‘&çÿrþxýµü¶ü£ýµþþ¡;þ£ì-ÿÓþoþ8þãÿ%ÿ%ÿ;þÍý©ý2ýµþ þÇU”jË6ÿ¢þ¾þþ,ýéý»þ]ÿ"ÿ2ÿuÿÜÿ«ÿrÿ™ÿÇÿ{ÿ_ÿ·ÿßÿ2ÿÿþŠþþcÿ„ÈPÇ×üÿ~þxþcþÊÿAÿ¨!ÿ»ÿhÿDþÍÿÿîvvLÿîÿPþAý—ý¾þþÿ®ª$QÿÿþuþWþ8þfþûÿuÿhÿþÙþŠþþPÿçp £!ÿëþýµýšý²þDÿ\Uù]Ž0¼Ž ÿ¢ÿ“ÿ«ÿŠÿYÿkÿDÿÿGÿå•E`‚ÿ±þÖýòýrýòþÿed sÿÓþõþTþ`þ¾þÖÿÿnþòýìýcýxýWý`þPÿDÿnÿë‹ÿôþ»þGþoþ&ýËýãý²ý<ý#ýoý¦ýÚþ£ÿVÿ(ÿkO¹Xÿèÿuþýˆý2ýÎþJÿ%ªKTˆØ 6ÿ÷ÿëUd'6U<³ª‹ÑÑ<ÿVÿ(ÿ;þÍþ~þþÿÐE¹ðgEL<§csÅÿ¨ÿSþÊþ¦ÿ,ÿÓ[íQsvW­ÿÙÿ¨ÿ¾ÿß'|-p`gB6¼ #ŽÑÿ´ÿ¾$¹m¼vNØvÿÖÿôÿÿ,ÿþÐþ£þ¯þÍþìÿ"ÿ«-U‹aÿŠþßþPýÑýÎþ²ÿxÿÓ§s—í¡Ž ÿ«ÿ÷Bÿåÿß^[$I^ÿÊÿxÿ±ÿ¢ÿSÿSÿÊÿôÿ»‚O<Þ›ž­y$…63QùÈü’ÿ8þµþõÿ;ÿ–ÔðˆÑÿÜÿ´ÿ¢ÿuÿxÿåÿ™ÿÙ[‚3U?ÿ¨ÿbÿDþ¬ýìýÚþTþÊÿ(ÿýy’|mÿ±ÿ±ÿ·ÿeÿkÿÊÿñÿ÷ÿý0‚È`”|‹0Xž¹0ç°|!ÿ«ÿbÿeÿYÿJÿ2ÿþ¸þ¯þ²þþ¾þõþÓþlþ;ýõý/ü6üþ]ÿî ÿbÿʰ6ý&û-üWþ¸!”ï£?ÿëüWûXýÈÛïË'!-Èå¢$ýÝûíû3û¡ü£ÿu„„{^•ŽB#J߬ÿVý#ûêüjý ÿ;!f)Zä¤yÿýþõÿ,ÿ»ÿÿ“mþJü­üÚþßžp£þ>ügüý»[Egÿ™ý)ûÛü”þÿ‡E°-§ÿ¢þþþøþcþo¤QØýû¡üÅÿ‡¿5ÅòÔý<üWÿ·*þÊüÂýWþ¬ÿÜ$ÔWŸ Ôÿî!ÿ«ý/üKýþ#þõÿÿ¾£û ÿýoýø 3þüEüKý‚þWþ¾ÿ"¶Esgcpþ‡ý6ýNþ`þ;ý¬þ¾‹Žÿ;ÿÊØRþûÿ,Z/yþ]þrÿ´ y`ùy‚ÿñÿßÿuþÊÿxÛ!m?ÿ;þuþ{ÿÂD«JÛÿ÷ÿ>ýBü6üÑýÚþfþïÿ÷<2ÿÁÿ~ÿ‡þÐý¾ý‘ýãý©ýæÿMü#m0‘ ÿGþþÿåÿúÿ%þæÿþ£þìÿ\ÿÙ&J&Eÿ{ÿúÿhÿOHç‹ÿýÿþþ¸ÿ2$Ë„ì-ðyÿý‘ýcþ X$‚9v-žH-ÎOÿ÷ÿÜÿýÚþ$×ïÔiÔÿâþµþGþ>þþµþ¾þìÿÿuþZþ þã”585B2‚þ¯þæÿDþ~þ{ÿÁv‚$æc8]ðð›ÿþý<ýrþrÿ"ÿu']xðWIÿhþÙýÎüóüÑüóý…ÿ8'oi° Lÿ®ÿuÿuÿÇÿ{ÿPÿ÷ÿ®þìÿA!ª<³Nü›ÿ„ÿÿþïþ]þoÿÿŠ'ÿîÿ{ °3ÿÓ¿Ô$ÿVþ>ýŽý9ý/ýàÿMBŽš ÿÐþ)ýýþ¸ÿ~*ðÎŽ¡<6Ôÿ»ÿÖÿßþßýìþ]þõþÍþµÿ2-üÂ9|›ÿîÿ¥ÿ±ÿþPý×ýàþZþæÿŠ›s]/$[ÿÍÿ8þÍþÊþÐþrþoþßÿ»|ØÿümÿýüÝü—üjüÑýšþ5ÿÿ» í5”æ¿ØÿhþõÿJÿAÿ–ÿåÿîRÿ!ˆÿôIÿ„ÿDÿ~ÿ–ÿ2þ8þþ„ÿ8ÿ· ³?¦0pEÿôÿ„ÿPÿAÿ‡ÿôÿ¾ÿ;þÙþõÿŸ¤`Ë‘*’ÿ™þ¦þ8þ,þ{ÿÿ¾I¬)Ñšp3›s˳ÿâÿú›B¹òóÿÜÿ·ÿ±ÿþAþ8þÐÿAÿ¢’Bp'˜ÿëÿ»ÿœÿ{ÿ{ÿYÿ8ÿGÿÍ…-Žs<ê¡ÿÐÿ´ÿ>þþWþ™ÿÿ~ÿëˆ-”£HË9ÿ·ÿÓÿÓÿÿMÿh˜Þ9¶ùÔ¼?á°m$ÿ·ÿÁÿëÿŸÿ“ÿâg•°ŽE ÿuþßþŠþ/ýæýæþDþµÿr-gÅÿªs¹ØÅ0ÿ“ÿ,ÿÿÿ5ÿ»•E3êˆÿèÿnÿ"þ¸þ¯ÿÿbÿDÿ,ÿ¨U^Ëžÿ¢ÿ“ÿ{ÿ‡ÿ«ÿ„ÿ{ÿrÿ~ÿ«ÿô˜üù‹Bÿ¾ÿYÿ„ÿåÿÊÿ·ÿ¨ÿ‡ÿbÿnÿÖ‹öðÈjE6ÿîÿ´ÿ{ÿ5ÿYÿýÞ|ÈË£Waÿ÷ ÿÖÿ¥ÿ–ÿ¥!žÞ$ÂŽ°’EÿèÿÓR˜ç9¶§¿¡y?ÿôÿ™ÿ„ÿ¾s¤vdO6ÿœÿŠÿuÿuÿ~ÿ~ÿ» X9$Rÿ¥ÿÿåjŽ‹ ;Si——Ñ¿pÿŸþ]þT„þ ü-ü0üóýEý¸ÿNDi;¹ÿ8þ/ýÑýÚýïþýæþÿœ ñÐÙïÿ8ýü§ýŽþ5þ þþÖÿôBÿý$—J ¢"0þ#üÂýþ`^—¬uÿüû¹þM?5œää°üBú úíýÚ]8.¬ÿÄûÅú§ü6 ‡þuüªü­ýÿ’DKþ2ýÝþÜv< ýûýBý»ýoü…ýÝ`V½‡Ñ rÛþÍþ„ÿAÿ5þþýTýý|þù=nÑŽÿDþþ{ÿPX¿0ÿ®E äç?/'ÿÿÿ þþMþMþ5ý×þWj+oÑÿëþ;üéüéþJ'Häÿ´þÐþ¬þ“þDþIæ–]áÿuýæüàüíýòÿeª ï£”-ÿ‡ÿ¨X›gÿ~ý<ú¡ú"ümÿnpQš Ëÿ"ýýýŽýÚý]üíýHþGÿ“ÔÔ—šÂŽÿ¢ÿ8þìþÍÿP ÿ"þ‡ÿ(R<³‹6ÿ_þ™ÿ2ž6þTý©þ]ÿÿ>ÿŠ<9ÿVþ¾ÿ/ÿúUvjÿ¾þ)üÈüjüüþ‡U|„üÿSþþ¸þ þ/ý—ýBýrþþæÿâT©&בóBÿ´ÿ2þµþoþÜ/¢ÙYlHÿåÿJÿôW‹æù-þÄþJþxÿóQ¾c ØX*p§ŽyIÿîÿî$ügQä¿Xÿ"ý`üˆýýÚþ ÿ–•EKç­Þ Ø3ÿþ{þ/þ)þÍÿëªóüËÞä3›ÿ„þ¬þAþ5þ¦ÿ±gW2•ªÅ­ÿ8þ–þPþÁÿ¢aØ‹Ž¿aÿrþÜþZýÚý‹ý×þWÿÿô¿$ ŽÿÁÿÿÿ·ÿ»ÿÿ5þãþý‘ýïþiÿ(|¦ Ë*ÿþWýÁýãþTþfþrþ¯ÿ%ÿÿŸÿèÛ¦æ‚dÿýìýHü×üŽýHÿ L*ש<Bˆ”9¼|ójÿIBÿèÿÙ³Ú„Qcª*þõþ/þþcÿ/|¿à/#9ÿúÿ8þ{þTþ¯þãþ;þþÍÿPÿ‡äÅvZÛÿúÿ¢ÿÖ'ÿèÿŠ*cNvUËˈ2ÊpþþþWþZþÍÿßH5? Å ÿkÿnÿñÿ_þ5þ8þÓþ‡þ,þ&þ;þãÂ* sÿèþûþýÔþþAþ©ÿ±gU0ÿþ„þþDÿAØÿxÿ;ÿ8ÿ„ÿ{þ¬þþrÿ%íüÑgÿ¥ÿ/ÿ_ÿ8þþfþÙÿGÿ«˜ÂûP/ï¶ÿâþýKýþ#þMþÍÿÙÛmÑÿôÿîÿÄÿÙÿ´ÿrþõþGýüÚýfÿ -Ô³ ÿœÿ þýËþDÿóÂp‹¹¤‹›äçäȳ¶ÂK]•ÿ‡ÿMÿ¥ÿ÷ÿñ<*8Å•›ÿDÿÿ"ÿJÿY9ãxˆ‚*ÿ´ÿþ©þþþrþøÿ™pE<dÿ–ÿþòþ¸þ þ“þxþJþ²ÿ ÿÿuÿÁžB?¹g?ÿ“þµþ~þrþø<H×ùšÔOÿ±ÿuÿ5ÿÿ/ÿx ŽÔáØ•ÿ~ÿ2þéþÍÿ ÿ2ÿAÿJÿ±ÿôÿkþòÿÿ"ÿ2ÿ¥ÿÇÿ÷Xp<ÿ·þ»ýæý×þ&þÿ(ÿMÿnÿŸÿÿhÿYÿÿ ÿnÿ–ÿ·ÿÄÿxÿ þ²þ/þ~ÿ%ÿÄy¤ˆ|•v0ÿîEÿúÿý !I§*m|…9ÿ´þòþþéÿ» ù?Bÿ_þøÿ8ÿ™g!ÿþòþÊþòþéÿÿ´ÿÍÿ™ÿVþûþ©þ]þiþ²þõÿÿhÿ´6BO[|›yˆí›$ÿèÿ–ÿ¢! [ˆvÿ‡ÿ{ÿÓÿ»ÿô^§Î’$ÿSþÍÿ™Ô'§…˜˜ÔöŽª|ìKÿ®ÿ,E*<ÿu?…ÿÓ Ôsÿ5þìÿî3Bÿîÿ ÿ“?ÿÖÿ(þþÿ“ꬕÿ»ÿúÿÇÿ™ÿJþÿ8Š–yþõý‹ü¿ýãÿ{0ié§ÿýÅü þ>jewIJòéá!`jÿeý‚ûû¼þ©]Eˆˆ6þÖþcÂÿÁý×üšýÑþ²ÿ5>£þrÿ/ÿè-9ÿ¾ÿÊÿYÿ¹ØX þ{þ#ÿþWüBü¶þ²ÿnÿô¼Ñ;`ýlû¹ûçþÎå;·,ÿñþÙÿÿY³T!x)ÿÿ;&/¹ÿ ü9û[ý]þÿ«>@jþüàýã|lïJqŽýWü°ýWg,òxÿîÿn¶¿ ÿrþ þÿ»[-,ÿÓþÁý û¹ü¶0¯+ŠþûüýýïþõL…m#uÛðE$þãÿÜg;ÎyaÿÓþ8þ¾ ÿ±þøýiýþªö‘|ÿ,þfýTýEÿ5ŽØÿñþý¯þÁpïÈ•Xÿ÷þÇþfÿ(6Ûÿþ þfÿȬØÿ þ‡þ;ý|ý¦þoÿÿëW‚ÿ*á3ÿMþ2þDþ¯þÓÿ(ÿPÿ5ÿDÿ„’¬šv0§¼Eÿxÿ/ÿhÿ5ýàýZþuÿ–§ó`-ÿÄþ`ýàþþ¦ÿAÿ¥ÿè‹ÔOÿœþþþøÿhÿÇ3vÿÖþÊþ)þýïþoÿÐØ-ÿ;þ¦þ/þPÿMÿÙ ÿ(þõÿ„ÿ±ÿ‡ÿbÿh ¹°Þ©ΕþŠýBý,þTpHòòŽÿ“þ~þþ„ÿÁäc6ÿ¾ÿPþþuÿÿܶ]æÄHBþïþÜÿMÛ…Î!ÿ¾ÿ%þõÿ9j^?ÿ®þÖþ`þoþ ÿÿÜ…ðNÈ¿³ÿVþþÿx'c—¼…ÿSþ~þWÿ,U6³BÿñÿÿGÿuÿ«ÿÙI§y‚Û¹ÿýÿbþÐþ ÿxˆÔjÿŸþÖþøÿ|caÿÙÿGþrþ¸ÿØEWvóÿŸþŠþýoý²þÖÿÖÑB£v^þ¯ü³ûÒüaý×ÿÐ6ãTΪIs<ÿåÿŠÿ¥düö©2¶‚ÿÖÿÐ˶ Lg‚ÿ¥!¿ÔË‚ÿ™ÿnÿâ›Þ§ÿ,ý¯þMÿSÿ~ÿY”0ÿ®þÙþWýfýý¸ÿXê‘Ȱÿrþ£ýˆýþ‡^°ÿåÿœE¡ÿîÿ~d ŽÿëÿŠÿ>ÿDÿ®IR3­þìþ þ5ÿ~ Ýà”3­Lÿ¾ÿ{ÿ,þòþÐÿRüT|þŠþõ޶ÿ“ÿ™çKÿñþŠþxþuþ–ÿú¤ÿÊÿSÿ¾ÿßÿuÿrÿÙ9ÿÜÿ{ÿ~ÿ2ÿ>ÿýEÿ5ýïþ~ÎÊ£ÿßÿÿ6…ÿ þÿE›$ÿ·ÿñÿýÿ þxÿÙ—]ÿ~ÿDÿ ÿSÿîªð°<ÿÁþ–þDþÐÿ~ÿÐÿŸÿå¡ÈÿŸþDýéý×ý¬ü¼ûyúÒúáü^$ý 8 + €ì)úó±ò ôÿùÒþ¸öÄl|ÿúÿŠvU ² Ðüñ)N/¬ÈÿĸÚý£ö‚ðûïï¯ò1öBútý²[c5Í1 „ ª-¶§ å MÈ™ýÈú˜øŠ÷–ö…öö2õsô‰õv÷²ùhúkû@û­üHýìüô  ¢*- ¸†>A?vþüùþW³Œ9  `B(þµúh÷ótð“ï£ðãóçö…ùbþæ' & ‡`ÃÓæÿbü*ùnøåúÌÿP µ¶ }ÿšþ ûOù\ø>ø\øÙú1ü Ò ¢¯˜ý¯û¿û0üý<þTþÜÿ~•ÿœ]Åÿûùùâù“ûŒÿb–Ãõ Á ÇyþµþcþJþuþ{ýÎüTúÆùŸùâûý þÿ,ÿëj`‹‡ 8Mqu³ý#ùö,õÿ÷Ðú€þ ‰ i EUSŽý ú÷ù:÷ÙøùSû§þ“T{·âkŠ”þøüˆúíú‰ûgý]»Pº>éˆýšûùÕúOüþ~È„1%À(P þPýü-ûíü‚ý‘ÿV<þ]›þZüˆû‰ûúÛûpýHÿ«ò~œ1\.\Îÿ¨þ¾þÓ…NšàæÔÿ±ý û úLúðüQý)ýþþ¯ÿ{¡oïcÿñýÚûðúÃúÕüvÿ_;Y™©2Î#þ£ý—üÅüûpûFüýýNýKýõÿ$ÔÈÿñÿŠapĸK°pÿ¥þÍý×ýfþ&ÿ%ÿ¢0*×ì]ÿSþ¦þ²þÇþŠþÿ ›¿&;‹þxýuü­ûŒûûžü§ýÈþìXWËÿYþþ2þPþ¸ÿJ*üíÔsTàæ×›þòüvú‰ú†ü9þrˆæ&‹¹‚|ÿîþþþ,ý‘ýŽþ„ÿ÷c»œåܸ2é­§Xÿ«þ¦þ ýøþ þAýxü§ü|ü‹ü'üýþ]ÿ´ØêX[ÎNéZ¦ãÚÄB…aÿŸÿþ þþøÿ<¿Î¡9ÿ®ÿþÊÿ ÿÿYÿèEpvE$ –VøÝ‚Ø•Oÿ¢þÍþTþ~ÿ ÿÙX<ÿÇÿhþõþ¯þéþÐþþÄþþþÇÿVÿÍ!¤óBjËàBÿ~þÖþ–þ2ý»ýHý]ý¦ýÈýæþ™ÿŸO’[ÿôÿý×üÿüÑýKþÿ÷  0vÿxþ£ý×ýü¶ü-ûáüyýþé›lŽ dÿ~þûþrýøþ#þ¬ÿ/ÿ±dü]æ2ì'[ÿþµþÿ ÿhÿ»ÿ®ÿ>þÙþ©ÿÿPÿhÿ–ÿ„ÿYÿ–*êŽùH2šÞÿÇþ„ý¬ýWý,ý`þþþòÿ¢§³³Ûÿñþ ý…ý»ÿÿé‡{dþÄþ5þ ÿ»ùéæBÿÙþ,üÿýþ*$ˆ•£,‚ÿîþŠþ þÜê»FL )þý6þLÚï#`ÿ"ýûÛûjûûûðý/þÜjý³¤O¬þ ûÿüöÿÐÏ lvåÿuöÚíçÑì›ûÛäü ÷òch/ õù¨óOø\ý&ý<ü‚üÿþ¸þ0 ú%õ§ûØî“öÎïÑñYõ÷òÙí|ïTù\ .$ì.8ÐØå âcñÜú1ôÞó@º z2W ðÚBöøì=ÖÏʶË6âì û\y^ûíÞŒáÎúÞ ÌZd¤ cüàâ„Ò§á£Y£õ"d(-i)’tý øÐø õ-ïÁÜGÄ…ÀJнèãùÃþ>ÞǸp¦üaí|ÙÝɷʿٗ럡þØ'Ù488mB“RžLÒ2¦Xí@»Cš–Ö¦çÃCëhÑ:oV W„6L ©æÞÝ(î¼ç &ø)g/úkß9É@¸ò¾?áÎæHþe)_Y7XûÂØ£¢Ñºôàÿ {'«4S6ä48%f ïŽ×ðÈåÉUÝÝ(+>X>ä)äÁÕ_­´’Û‹[—h°²ÒöÑD0êA²PGYUQG6}ó‰é8ðÖrì:5F|<Ùßùb×kÁèºn¿iÐzìR c h)}#Ž ,ï²Ñ¡º·©Ìrï É¡VÙL"ýþÍÿ®úäîéÝ\Í,ÄpÉßyà%WC+SmOQ:>·ô›Ðí½BÀkÔÊéòõ$ùÆÿÇ Õ&#'+¦ Êø¢ô3óÀð‡íécäÀç'ñbö]#í"ÉBsð‡èãŸÞ7âÊö¬æ#¶-„-$‹áCù.óódü¹a Âþéõ×ôõôaõüEa¹Ù¾ à/û˜ù·þ2þù7õyï,éòï`õBöuþ  «pXæqýòõæ#*ùÕa ô"õâÖ×ÒÜèôöý…¾ ÙäŒýfKš”Jÿhóôa À‹ „Èôóîañbû’|æ àôÅéèKöã XlP ŽJûÛõî6èiðJÔò3)*‘ÿ¼0ìü°øŸöNúÏL]cùòúÛÐÔ£ç¶û¹)¦¹þ©ûýΚtm³öK÷{W`« { ðú|º¹ú­÷,ó±ìžâãÞèéþõ;2òø÷ôù·r _OóêçäŸéfø¢K#§&ûyþö¾òîûm - †®ø¾ì%å¡çîpú˜mµigø´ó½ö…ùƒýúQƒÚ ù@ìRèç¤ëÒõÿýT¿Ø ¢ Ê]v : Ç®Lø„öNøÄù–üügõ£òŸùŸœä%Ô0g-ßRÍõóúýò¥h a½þþð,àWÜ)åUôÿ5þð8O:ýÅøŸöñ%èläÃëøý ƒH&A"ÃŒùPð“êñìõÿ¢“ÿ´ûúäûXøÄö]öéøÁúúþ,dÿ´þ‡aéS©áBþDý?ÿLjÿúýiþ;Âþ ôêé ÞÌÜßäåñþþ øŸ »d÷oñŠð¦óçöþùýý¾ÿ¥?TåSö _þŠñrí-õ9͘ éøúìUèììðÙó7ô|õš÷5ùýš¦Y ^ÚõÚî…î ô^ý…Ôß}" ÀL‹8Ûküyó§íÛë î÷Ð|Î ¢ÏS /vZ Vý»ôêñÐ÷œ÷ !ýÞü‚ñòùñþþ¡^„&ü—ôÿñ“óO÷“ûê°à ‰ IûöóLïðù=I] x˜Pÿ~û6øVôyñóúX P9sþæþ>ÿe02Á¿ü$øÙùÏýì¼þ£ùÀõmòÙôù¨ â Þçþ8ôêíŒê„ígô›üÅ / º :- ô ò?ü§÷rò«ð»ñ“óÉøþ„;Åþ–ý2û§úªü°’>À$nHþòüNúúû¡ý‚ÿ(ÿbþãþÙý¯ûRú^ú€ùÌøŠøøkú[ýýiüü¼ÿÐ.ÿ’2æït§ é Y  / é c Kà£ýTù‰÷cø·ý¦„ %Ë +Þþ¯÷ìôCóqõ‚ù=üÚÿÿ·ýúúû¹ý¬ÿ¥ˆ»ÃR B •óU µ¨0ý—ú½øëø¨ùúüã¹oúô’cÿ±ûL÷õ‹öŽú7ýÈ|lúbì>{ ‘çÿúÿYÿœdNæ~¿ýþøÐóáñŠñ±ôIùþDæ‚pËdÿü*øÄ÷Gùýl C ‘ ÁÌsüùwù‰ûíþÇüB'ýBùýú.ýþÚØ„þ2õ‹î|ë@ìtñÙùJLô}À„;ï©Îþòý‚ûðûÏþ`FpÓÛþDûóúÉüyÿÓÚuZ6sÞáÿÐþPüsú@øâù%úäý¯WPIÇu;$X°È¬ûý ¡vûÈøÁørúRýH™ŠQÞ²t^%ÿ5ùÙöKö¯úÕ¶° r õ7êûÛù¢ûÏTŒ ) ¸éÉè~¥)jRÿÇÿeþýlûø“õ¶ó›óRõãúÀÿ¢A‡Äñ!Uèþþúù úüˆ›ÄÞð}L¾[üjøÄö‚öcøDúçýWþfþüvù†÷¬ø“úðüæþÿœÿëÿ¾ÿ·ŽÂ»¯6þïý|ýý`ÿ‡ÇzM¸ÿ«üQùÜø–÷Ä÷ ö‘öNö¯øûþ¦Ñ_åømþ„ýÚþ£˜N#~l#Çœ®´µ§ÿ(ÿ„Êï1ÑUýÅû¼úäû¼ý²þòÿkÿëXÿ±ÿ¥<ò5ýw< Ä c Ä!ÔÿhýÈýý»þWÿJˆ8bO!þlüšûÒü!üùýýýoý&ý&þ2ÿÙ££$‹¿)º¡ 5hZÿâþÄþòÿ«ÿ‡þ,ümûùÌù+ù®ú±ûaû°üTüãý)ý©þ–ÿ–ÛÅÛEÿÓÿжÿÔ*?ÿÊ3ËØ[ÿ“þ¦þ;ýæýKüóýoý¯ýü”û¿ú^ù@ø¾øÖù«ûFý þfÿŸ­ËÿÜþÙþ)ý£ýµþ™6ãM~‡>;ÅþõýûçûçüðþJÿ–|sÿÄÿ þ©þéÿñÿmáÿôþòþ,þMÿMÑŽû¥‡åYMÓÐ`äþZü$ûpüHþ#ÿèíjþDüúžú4ú¤û§üÑý#ýýNýïþÍj¬„˜Óâ² êˆ6ÿÊÿbÿŸ Žùÿåÿ8þßþÄþûÿ‡ gÛä¡'ÿÿþµþ5ý¬ýý”ýÝþDÿ UŽrœÜâ#—‹‘ùIÿ\þ¯þPþ¾ÿ–•-Îÿxÿþxþrþ¯þfþýòý£ýüðýÎþøÿúç<Âv -'éÑüÿÜþÖý¾üËüWü3ûáû¿ûû­üjýý`ý‚ýãþ]þZþDþ]þ™þÇÿ\-Žlʵu¾Ë6ÅÿÿVÿþ¸þxþuþ~þÄÿ,ÿAÿþŠýìý&ü”üüþGÿ“*jÿ«ÿ“ÿâp‚lf£‚Ýlø{”^ÿ/þ™þßÿ“aÞ$ËÿôÿeÿDÿ;ÿhÿœÿÓÿÓ 3!BÔQˆˆäþÖý…üÝü‹ü§ý6ýÝþiþÓÿr[Eš¦2HRÿŠÿkÿ¥ˆ¹’ÿýÿ/þcþ#þÊÿ´…ÿÿˆÿújç›ÿñÿuÿÿGÿnÿþþýšüüüü‹üŽüÚý©þPþWýËýHü¿üšüéüüýý`ýæþ]þ–ÿÿŸs¹íˆÿÇÿeÿÿÿ¢ Žð…ÿ‡þ“ýøý¦ýxý¯þþýòýøþ&þ)þZþ¾ÿ%ÿhÿÁÿ÷<˜Îü‹ ê$ÿ®ÿDÿ8ÿŸg0yÈÅp$*y¹”ÎÿÊþòþ`þDþòü”E 6?*êÈüBÎHcüš$’ÿ´ÿ–3Öö:Ëû õjô­ù($¢zfü—ùü3þ ¨ÈÌôŒäÉâiñ¨ Ü© Ñÿñ•ÿúíõãó ñkïlî¹ñôú+¨Ê  åúþÜöãíÒìõæ‚SþZ÷#ïìÞñÐù‚ðdÂý”üý² VI'A$y˜ò}ã‡îK €'Í/"ÝòìÃ÷ › ‘QsÁý‹ôñÇø¢Ð Á÷²éßâøëtøè÷ÜëÃäbè<øý RÓóFã ÙN׺à‹÷2E*¹04&Ð)óÏÞÜ_ñn ºÝîÞ –! r å]ûù:ÿ± EQR:» & ~ðøxõ£óýïàå˜ÙÚBñåø"Xš îûì·Ü ΫÓÈë+’o¡>ôÂëê¥õ‹Ã7ŒÒ ´¿Aþûûøèø>ûn'ÖÅ MùeñÐõþT ȦC (÷ìì%ð]ûÞÇ–áýˆø–ñï öÈë9DÏRb£Oû‚ôØðoëwéZì±õ§È ¸ {ú½ûpJ M nwüæóLñÖûF àX• ½ÿ8ö&õíÿ»Ë4¥ïÝåqêböBþŠn,h3Äòtê"ëßñSõNùÏýÅþJý¬û¿ö»ñMîíCïôXüH`pwýiöìõÚôØò ôûäÀ  ù ×K|Ž _^ýÝ÷`ö9ùMýþþl] ûË úLì€æØæÅéZí¡ñóôõ-öô0ñôõšþÄIªÊ#¼& o púíò}ímî×÷/ åÐ`Äû’ûIæ „’mû›òñôíý6Ø Ç­Ïü*÷/÷ûçÔð­âŠ + Çýàÿ‹¿ýÑø5ðréGæÈì÷“ÇÎ=© iÿ8÷uõ õN÷¾þ#‡¬ 2 Ú _ÑJº _ý—ðììðôÿÍ / ˜}×ÈÿùÒðÙçjâåFímö‚àÔ¯ ù2éþT÷©ò¢òœø÷Ä ;5m^ýc÷ïønü¿$ûwU;ý¾ûpüˆæ¦kù[»• +  ñ¼üú^ø¨ø÷õ9òƒðï²õEþµÔâÔþ¬ûøßù(üŽi iTû ÆçÿÖ÷òhõûª‚:a·Ö¤ ø ô >Iÿ%õÂêúãáÂæðïBøm D Dê‡ ‚Èÿ2ý ýýýQû¤úÏúªù(ö×öxøŸû‰ýÑÿräTPc0ÿ–ÿÁByAoÿÿxÿßþ ý²ÿ ÔÁƒ| ² f 2 `óü£÷µô3òôô÷]û­óÀÄup‹­ 8 Éu&ùX‚ÿ%ûùø„ù.þ™>¤Ðjý ü?ü|ûªúÛü|ÿbŽtMòcçÿèãŸá×Wüý¦û˜ü$üãý‚T-ÿ{ýü‚ýýµý‘ûäúLú1úXúÆû¹ý,ÿ2šÍ„Ù"85¤þ>þf'¾ Kþøü”ûûúÕü¼]Ê»{KOþAý#þ8DÞÿMÿ‡‹S´þÜý/ü×ý?ý—þuÿè¿6aþéÿ±µR Ê cX©ÿôüvù€øú7$[ 5ÍhÑ A½ý&÷5óÉòœôÞú†ù M PQ–?ü3øå÷D÷øýü'ÿÈlÞÿxþþ#þcÿ ÿ\þ»ýšý ýcþTÿ÷'ÿ„-ÿxþ™þJÿœ ÿGüBú}úOû6üNý»þþÿVÿ–ÿÜ”„u2Ú»8Ķþ>üÎüéýü¿ýKÿØÿüéûdû^ü3ýZÿŽ©Ã6 ã æö–#ÿbûÅù±û$þ'5ìÞå_éiÑ|‹ŠŸjþDû›ùôùnú­ý¦dÅ»û`Ë?0êÿüãû3ùJøøÖúúþ„ø’¿÷PJ„PÝýrûªútúçüÿÿмEmvÿüóúÉù¢ù–úú÷ýÿÖEï>‚þüúLú4ü¿E rM ?þüKûRû^û¡ûêüàÿrà´´Ddýlü'ü×þÿJBÿîþæþõÿîÛNÓ–hÇIýþüTûóü”þ „t N þ^ýÈûú@úäü!ý&þfÿý[ÿ«!f „ÈIÿJþÐÿÄcúÛ‰ñYŸÿbþþuþÙþòdãă_cþúzø÷cøPú¡ýrÿ® ci‹ÿ>þ`ýéü§üTýþÓÿëÂá¶³sÿüˆú½úqúÏûÒý…ÿJEÈEþü—ü3ý6ýµþ¬¹Ë<!ÿþòÿœÿôÿßÿuþøþ“þ,þþûØl `Žþ™ý©ý6ý/ýÅþÿÿ„ÿÓ -ˆé&#ÿÍýøýÁþPÿ´WÑ;ŠŸ£ ÿèÿÁ*§sÿëÿ®ÿ~ÿSÿþýrüû§ûðügýÿßïÎìùÿDûüú}ûüÿU©=„Èþ™ýlý?ýŽþþ þæÿ{‚3H líÿVþþþ²ÿÍü£…þWüéü£ýTþAþ8ýQüšûäû’üjþ öÎ#¶þæý6üÑý þZÿOÂUÿñÿ±ÿ_ÿ"þÐþcþ{þÜ?%MÀ"eGöÿÖý?û¶ûÈýZþéÿ_ÿý¾üdûÒüíþÜÔ#°›ÿ‡þ“þDþÄÿŠvÚþ ÎŶ-ù¾¯kâ]Èÿè³KãüþÐýÝýÔýµýŽþ ›È'ÿÍÿ\ÿ´ÿ"ýàüãüûIûûRû˜ý ÿrÅ’ÿÇÿ8þxüüúÛúaü3þrÿúyuòfÿŠü§üjþ»*;W—Eþ~þ>ÿ{ícÿý,ýþ/GÝpþ#ý)ý£ÿ;Â*þý?þAÿÓRÿþ™ýBûÒûüþA…ý6 ñ2‹sêHmB3NšqÓ Ý]Åg6sü‘øf|ý¦ú¡ùJú›ümýãÿDÿ÷ÿîþÄü”ú¤ûýÅÿÜÿÜþ“ý¸ýiü‹û'ûªþŠÛáþÄýTÿYAÙ©µT¡ü³ùœúžÿrV‰x¦?Iþ;ÿÿû/ÿÊý©þòê&f‹ÿ,ü6ûLüaþ!š#ˆÿßÿŸa þ“ý£þéÅÖM+åýŒ²ÿâÿÿþ2ü¶ümþf‚ BÅj[ÿDþïˆ œñ(“{üÛÂ&‹ÿ¤ÿýìý©ÿÿ÷ÿrÿÿ“ÿëÿÖþ¯þÖ$¸ìÿßþüóûžú"ú’ýxp©W©ÎšvÅNïÿÓý]ü üæýEþ‡ÿŸÿëÿÐþÊü‹ûŒü<ýcÿ"*š¸`ÿåm'ÿeþþþüšûú´ügþþý‘ý£þ]þòÿÿJÿ™áWZÿ¨þuýšü üQýã``aÿ·ÿŠÿe98"k"ÁÿÜþýãþûp%eÑöþþý£ýýTþZÿDÿ¾'NMO®_ûÂù!ÿ;ÿúË2¦ÿ„ý¬üæüyü?ýEþÙÿ„ÿ«ÿú­Ñfyáaÿ‡ýÁü<ûËüü”ý²ÿM¤‘à Ž×ËKùUÿ„þ„þ;þ¯þ©þ¯ÿ2ÿþ£þïþæþÍÿPÿxþýHü—ü|ýþé'Zcóþ ûŒú˜ú§ûIüˆýõþ“þþÿ¢ˆ0]'ªŽ ÿ5þ5þÿDÔ©öÿSýàüÑü<ü”ýWþ©g!ùš³*ÿ™ÿ_þþþòÿSÿÁÿÇÿbÿAÿþéÿS$ÿÿÁBˆÅsÅ §pÿÊÿŸÿåÛK‹ÿ«þÖþ~þrÿR'ùÿîÿþxþ¸ÿ\ÿôÿèÿÐÿÍÿ8þfþþ`ÿ5›È]£RþWý?ýý£þ²ÿ´Žç?þ¬ýKüÑý#ýiýŽýÝý¸üÿýþÿvN?³ÿèþþþDþ2þÖÈ…ÿ“ÿkÿ«m›…ÿ¢þ8ý ýýæÿkËu™DÁÿúÿuþ¯þ“ÿ„Ôȸì¦xH¹gv$gÿŠÿ;ÿ„pmXˆ˜ÿýj? rüêÿÊÿ/ÿŠ‹ö8]fØÿŸÿ¨ÅÎW‚-þÁýãþÿ«<ˆ„—þÁþlÿÿë›…éK$禑¶ÿÇÿþõÿ>ÿèêÂ`OÿMþýàý£þ)ÿ 39NÑXÿßÿþþãÿgKš…íÿÇþÜþ¯þ©þWþ)þ)ýæýàþGÿG^W ×Þÿßÿ„ÿYÿÊŽHÑévÔÔ]]‹ÿÿ«þßÿ(ÿåZæìævÿ„ÿMÿuÿ«ÿxþ¯ýÑýiýµþï‹Ñ$$ÿÿÿ(*›ÿþÍþGýìþ„ÿÄ¿-γ9ÿþÖþ,þ]ÿMIÞöíÞ’a9ÿ–þûÿ¨gv<3³Qßè¸QÿhüÑúkøÊøúú¤ü”þʤ`ùÿôÿ ÿ 32 )²Yi§ÿeþþþ þýrþÿhÛì¸;‚ÿSþµÿuž-ØÿAþýWüpüaüÚýòÿÄWüÅE¿ÿëÿ·ÿÓÿî0ÿŸþ™ý‹ü‹ûÅûÒüéÿ?5ÂÈ ÿú^× ª*'›Ëò(&¤ý¦ûsúÀûÿþ0pÚ‘ž$a‹yOÿÍÿ2ýæüvü0ý”*¬-ýþûùCù@úÕý)ÿëWÖP)ÈþlüªûÕûüüÂý²ÿn¨ÃSyÿåþìþuþßaxY}Ûô¾Iþ¾þ]ÿ"ùZÁrü|Ëm[ËNË…þÊþ„ÿÖfÍ·+Ç`êÿúÿ«9gyާ›3ÿ¾þÓýæýÎÿ%9,òÔLý—ûáüýàgu‡P”þ»û0ùø¨úýH¡5î1 ÿÿ\ü‹ú­úÛý6¹Áâ¼üóúdùÃû*ýš$x¦©Ê*ÿnþ]þ;ÿ ‹³gþlüšû úqûýéÅ2¯ÿþûØû†ýÿ%'ZÚÿ·üüúðúúÛýuÎÖŒÿ2ü‘ûsûêý¬$ÑÊ@Vÿ‡ýÚý9ýEýÈþÖÿåž$¬ïÅy¡Ž ¦ü`‘ÈLþÄþþ‡ÿ·Hµ]Äçÿ"ýéýTýËþÍÿëT8°’ÿþÖþæÿÇÑEá$ÿ™ÿMÿEö-ÿßÿþæÿÿrÿîÿþÇýïýÅþ;ÿÿßÿëÿDýìüÚü§ýŽÿ(Ñ×àÿÙþ,ý?ýýTþ>ÿ~‹ #‘…ÿ· ªê¤*UňuÎ,ÿÿ8ýEüüjþ‹r¨[7cÑdÿAþlþþ¯ÿÇZ﬿ÿýûíü^ýûÿ´'#TÿÖþÄþ]þþþPþ™ÿ"ÿbÿ«6ÿ÷ÿÇÿPÿAÿ“pÝP¿aÿ,þýÚÿ{”Ç/‚ÿ5ýcüàüóþ '¬jvÿåÿAþ–þ þÊÂ6¼`vÿÄÿGÿ5ÿ2þþÿG6ØÈÿþ{þcÿPÈü©šþý]ý‘þãÞ’°Î›˜ªdm ¹~ ÝÑŽÿ÷R…í‹©•ÿ%þPþþþ»`¿2c©T6ÿ®ÿ“ÿ¾|ò >ïfŽ  y¬ˆÿÙÿ{ÿ«-ðQÿèþéþ)ýQüËý/þ2þõ'QN-dÿ%þ]þ&þÖÿÖØÎ£žÿÜÿ\þøþéÿ_ÿ´ÿDþ¾þ–þÍÿ8ÿÿÿ,ÿÇ$'UŽ›¼ÔUÿœþlý üüBü°ýþÿÿÙX*ÿŠÿGÿGÿ>ÿMÿkÿ>þ£þýÁþ,þ“ÿ,ÿ¨ÿ¨ÿÿhÿÜËZ'˜<*ÝM¯/aþßþ‡ÿ5Rv2éRÿýªÎHÝgØ?Im ÿeÿþßþÍþÇþ‡þAþiþ²þþ»ÿ"þòþþÿÿ¾ÿÿ´ÿVþïÿ'›Zö³”cŽ6^ä¬]£Ú&¯òQUÿÍÿ±ÿ¢ÿ„ÿeþÇþ‡þ–ÿ%Ø-Iþ²ýTüQû‰ûËü°ýõÿ¨p9ÿâÿþìþþcþýõþþ]þ£ÿÿrÿhþøþ¾þrþþþWþ¦ÿrˆˆlPŸé5Ep 0ÿåþÓýû‚úúzûÒþuàÊN|þ–ü*ùñøM÷8÷øú[ýZg]ÿ„ýÔüéý)þTÿ¢¿ŽQxV>©PoŸ±ŸÝ<!'¯©Y×5‚æ).bu?þcûÅú(ú úóüZý¾þÿÿ2ÿkÿ»ÿèÿ™þ`üðüû¶ûÅü|ý‘þ]þ„ýãýü ý#þ¯„z€X€Mõãmš{`„ë9Þ0Ÿu!þéýlüíüùý|þoÿýé®Pÿ üú7ùÌúwüaþì¿Ú5`ìGÓTsþŠü¼ûäü9ý‹þÙÿŸÿ»þéý×ý<ý¸þÿ5ÿœÿ´ÿèÿ„þ ýTüû¹ü|ýÚÿh[çÅ­ªyÿþ)ýü6ûçü|ý²þÖÿ,þïþ¯þì*Ô/Ó Þý¬úƒù\û³Iƒ ] ²!þ#úŒ÷ûø–ü'Ÿtìùÿýcû!÷ÐóÞññ–öfýò¼Išþ5üQþŠV° ³¸Z zºýZö6òñõKü~'š!Jùþ²ýNý|þÖ­éФêöõÿôûL÷õ”ö»üÚp«2 ¦ ùYôóöüj<D¦üàø™÷rù¢þTOí) ÆÒ#ý]øèö/öûûêþ i fýuù¨ù7û$ý/ýEúÀöøôçõàù®þ²MÞqQýcù÷iùüæâòùÿJýoþÿë9WêÿœþZþ8þÿÿʪÎìa ¦ . D ÕU¹ûgèiÒQËpÖGßáîŽZ©òT¿O"mHUÔC«Ôó"Ê•­­Àå×·ÿb.ŠCVAE3àó÷ZëýêJìäœÌ|¹ ¹Êsên[.hGUÅU—D.kÝ×õˆÊð¤2šN³ âÊ[;ÙH??.ôäg?òÆé¤DM¥¨°ŽÊR÷&&òIÖUH‡1ÑÝ f!Y(Æ ÇÿÔŠ³w­Ä”í<w=«PÄQYCå) Û#ÀD¹JÊI鸦 úWèàÎÜÅìÛÓ Ä>Y¥U×6FÓÒ¯Ž£{£cªàÂê«BÊL:6ØÔîíâ&íU:Þ#çŠX ¡ F îóžÎÁ¯6¢l¬Ïʪñ“„&%ÂõTé{Ù*Íû×Ìù!z;“:W,óXÐÕͲí*載Íë@9WSjSg8L ŸÔ»¢ï„:€{—€ÂÏô˜ø<÷GéFDG*GÈ;¥#' úóúòÜðuèTÜ\ÒÒ|æ6ª,&ë½Ç¨°û¨à¬ÀÁ%ç¹lDteÇrrcQ:2wÛWÂí¿¾ÑUë“úáùÉóŒóü-!!Û/C0Ì" ßøÙêDØdÈ7ƇÛÙæ(è;61'ß!Ò&™(%g@ó"ç¿ÝÔÄÐÀÒsÞFîsøhþ`ùÃiÇ×#ö¸ãÓæÅf½ùÈ"á¯Ä:HF¡?33ij&êœ×÷Ð[Ⴊ/LNŽbÝcZNÔ3Nså†Ìõ¹A³ßɉóäÞ-“0ƒ/b(.ªüsæËö³k­%¼-Õ±îªåcÛæ*¿y÷iÖ¼!¶m¿iËÖëåñxöòqêëãâßóâÇïÿÓøèNà¤äJòZ!ý5è<´=}EdP_S=JÀ5¢[òÐÀ·]²5É7ðQ³­I J'+!÷Ëú±ö‘òŒïÈè‚ÖCÀD³n²Ö¼Å΢ãhû)‰,K#^nø«ÛõÉ.Ç~ÏtÓ¯×®ê¾ :3”Qè_Y[˜L›7ÉÍAï`ë÷ò‰üv›%&4è;õ8y(ÆiùEî?Å|¡NŒdˆ–x°ÅKÒÝCìXŸ'VHï_¥k¬n%cÃ#’ÿŠäPßvðuj’€ìÛÖ4ͬÐ@Ò9Ì<ÁÜ¿ ÉÒÛŠëSôØùqøñí›Ù¤È¨Â˜Ì&åº0("@ZG6>¹2|+K- 6L>¤?U7)À#’)/˜)ùAéµÃ|®ÿ²ŠÊî-¯$ú§ØC¼‰¯Ë°»½ªÖCõ° ' -G!=H؆¹¬®m¹ñË”âAý×4²AòER@`5e'h ÿÄ÷–ñé¸ÞCÖCÔfÔæÓ×ÏhÎxÝqûV,‘$HoáoÓ ÜÙôF ô£'Ó(ë%$ù..8Þ;¬8°717*1<$<0.ôdáËÔàÏÑááŽþu â=YF‘5ºšãº†¢ÝŸªÙÀrÙî¶Ú7F E^4 æùPÞtÏâ×LõíDhVÍPA4lÚóç-éÍðñ·ì7ãÐäJö O1B@¼; œûÂÜ ÌÏàíø" â\®þ“ï è”ô!å±Ù?ÔAßý…$'DÀSÕLí4Ãú:òûy ÒýàdÇh¼öÅÜ~úÕX$à*×+3&¢B”Sý²ûÛõäÑ'ÈÏhèf +¹:„5Ù$šXòÛ&&&åïÿßæÌÙËÞ’òŒ bs Sð>ØíÐÖ1äôõȜݶãÿAè×ÞÖ†âcò÷þÙ<ÿ\¨R(e0’(zøâÄ×±ÖŸÚ¯ßjãAævèrçyäÃä@êGø; e¿%Z#¶˜Ošúdôçî åÆß-â¦ó4 î't:=.ºÞúÞì†ð ¢%Ê"IO¹ïûãñߤâ#ç*ì®óžúOü°ûjûÒ\!¿ˆlý/ú›ú ýˆ :/µVÒ 9ûØõEöÔÿMv!º0ƒ2ˆ(ÏÆ·éõv÷/éJç÷&g3EwD(0ùšúÕ| Ña ûù÷8B…'.*³ Äù:ò·õ—üšïEóûX³Bô z‹÷£ó+ònö¦Þ , µ¶ø,õ‚÷JûÅP 1„k þÖô@ê2áiÞÀã¨ïþø †nEÊä tsÿ õ‚îQë4íò\÷¬ù‰öcòë÷T6º ÿG÷ûñ;ëtè¾îæþÓ;/"ÿV8aó"ïì÷ €íNÚç?ûËôØôÞú^ÿ™ÿ>ø·ðæñ8þ – zñMàéÚ—ã%÷2 n›ÿJñ;ðcýÝe&f5êDâTäúðiìù%é+|%T‚Yõjî…ð¦ü3 wHjþÖêÊÛÔ‡Ù$é„I¸tãü£ô¿óíù(–Ï# úŠ tWõÈê“ã«â/æyñýc³ À)k÷–ê¾æê´ó·úÒýZû°öÚð„ì•ïxø„~ NÁ ûðëœãßélú4 (á6’8^0p#ªc ó6)ûùòœéæ‚ëƒöTåå$Î~ V #Ôù“îyá9ÖÑ3ÖYæ¤ýÑO&G,Q(…Øåè¹vž¸ˆÿýÚüKùÏøÖüšÐÿõöì(ãßjâ–ë_õHüó@ $ õåAVõˆð`÷fŠ \ýÈðÙèxçÝðÇýQzÕÿâö#éPÛšÔïÜîéú‘¶×6ô³æÛåhïþ>¦ bd<üjÿúùAjú Ü×ÿ–ÿ´s¾zšü‹ùkùJüì Ùú¡Ðúª÷ ûê†Ý‘ž7æCÍ!öaùîóÒ÷‡g wY™  CãËÑgŽûüòŸè,á¦ätñ£ mÈ þìöBôL÷ìüšÿ{LÿüdûCý/ÿL Lñì ÐÊÿ™ýÈü¹úŒöõô¡öuúƒýûÂ÷~ó›ðßî—î‹ñ«öQû!ÿA þ©øðßëºí*õN ¨‘Î ¾Iüøhø¨üæÚ‰³ùâòFëèé¯íÿöÚ˹ –ýü öòù†¹ qV±þ 7 Ü  ½ ° ëMüÎø(øÄý‘ƒË’ÈŸ ߎûLû^ÿVVzšüNöòóíö¸m ÃÂÝ p¿ø‡ô õTû6ý ûOýïà¥bbÐ(Éž4füõBîËê‡ë+ðïùÕ©¸ÿŸøèó’ò™öuþZ!ä›*úaøŸúOþ/]œýüýl¤Ymâaýüý¬ÿ(þµûçø÷÷~÷rù¢ÿnU ë ÌÞÿùôù@ûá‹ ÁJO<¬ FªÙ`ÿ"ü‚ú˜ùøÙùúû‚ýþTþGýûþ©ÿåÑK ä  ] þ—÷süóûCüþ~Šß  ™¢ˆÚwú’õótõWù™þ»rÎÿGù¢ô†ó öãþW K ‚úIõ×ôôOõ”öõüõöö öÚøùùÕù€÷]ôüôRö¸ûXÿŸŸ ¾]ÿJýïý¬ýìüéúÌùeù%úûöþ&í}uÿû­ùÌúü^ÿ„Ô2ÎB' Ê º zNƒ“_’σ]-ýõúíù¥ú.ü‹ÿô¸ „ ò ô « Ù¿hsc‘cÄmgÐ`ÿ»þ5ÿ,uôÝ &úþÜúêúaûêþà&ýEùÜ÷Ðöiõ^õóø±û¶ýEþAÿÿúþ¬üÔúêùwøÍø¨øMø®ùVø™ö¾ôsòÃòó.õÚù}ü¶þ>þ;ýuý‚þ“ÿVþõýìü£ûùÌøåøGø»úUüümü ûªúhøßøeøîúIüQý ýEüÔýý¬þ þ¾ÿMÿYÿ2þlü”ú·ú·üÂÿ{àì½øµÿŸÿnÞOÿúþ~ûÞú(úûjþPà´Xv-’'O r„Ç>½ _彟ÇE!ÑÿâþÇþŠþ¯ÿ_vmÿeþÄþüBú˜úú7û ügþ£ KEþ¯üpû†ûmû³üóþ þý<úêøG÷;ø–ûü¶þ;þïý ûIúÃüðaAiþõû÷òöÅ÷µúûaûpûíüvýþ–jvÅÿ¾üæúäùåùŸúLû¡üÝýþÿÿôÿîÿÇ‹”i—¹ÿ÷ÿuÿÇ ÿáþüãûËüüÚý…ý¦ýàþTþfþïp¯ir~ðÿþcýÔþ2ÿx•EM’$=å þÐþþZÿuUÿ±þüúøuø±úªüíþµ!•ÿßþ¯ýüQýWÿ2s¹žÿÖþüùûpúºûOûÏúÛúaúêúúú^úØûÕû¡úÏù†÷ÓõÈõ6÷ùnûjý¬ÿnþ–ü§ûíûÛü ýiþZþZþµþ¸þ2ýÈýìþÖ9ï‹þ¯üÔûCù«ù_ú"ûüsþ„ˆ# uTE¶ªLEõ¦ #Žÿ“ÿýáZÀè©ÿÁÿè°ÿJ¿þþý¬ýý6þþÿ;üQÊqÑÿ–þMýZü|û-úÕûÛý©ÿ(?ÿxý©ü'ûúûCþfÛš jþ¸ü3ù öxö÷#øPù7ùÜù}ùSúûü<ýcþýÚüãûØúäúUú^ú øxöšõó÷ôaöføñû üüKüýþZÿ*$þæüËû@úFù±ù†ùkøâø¨ø,öïöZ÷WùCúÀûËüðþÿ5þ¾þ,ÿň˻ûÑBÿþTþ>þZþÄÿÿ´ÿ±ÿ~þéþþìÿrÿú¤*ù-ÿýÎý‚þ‡6àD¨î=LœŽpTžÿâÿâ ?[0ÿbþ,ýüHûsúÀú:ùeøœøeùúçüËý¬ý ý‘ýˆý ûÈúOù}ø÷øÓúRý/ÿnžLþ²ü—úƒø«÷æøø·ù¢úCú½û*ûŒü!ý9ýŽüöûöúáúzûü*ýcþ~ÿ,ÿýõüZútù ø5÷÷5÷‡ùû˜ý9þÿaùjévÿ,þ/ý9üdûêü0ýˆÿM[˘ÿôÿ\þÖþoþ»pà„¸¼ÿ·þüàüûŒûû¼þ;öD·O€\e¸Ñþ¦üˆûú§ûÅýþÖÿ\ÿMÿ þßþþ»ÿ\6Ñ’ ÿVþxýòþTþþþÇþ5ýéý ûêûùëùÒû•ý ýüÚü0ûüüBüöþÿVÿ{ý¦û6ùJø÷]÷>ø%ù¥ûŒü¶ü§üyüšüNûÂû[ú¤ùzø%÷÷øø–ùúnü¶ÿÎ1"™ûäþZüóüöþÿG¼Ñû~†Ï•ߘýšûÈû-ûŒýþÐyøÇTÿ ýü üEý”ÿ÷úxÑïïàè’9½ô²›þ²ý2üÑý‹ÿDˆfiÚ<ÿúÿxÿ„ÿþMþÿ(ÿ þ–þGý‚üyû¡û9ûýÿÿÍÿ,ýû¹úkúú•ûËýQþ]þüHúØúwúƒú†úžûyý þÇ ÿÍýÑû•ú·ûúÛúÛüýý2üúÀø¾øø8øYøbù:ú§ûdûäýþfÿÐj$ÿYþ©þ–þÁþrþ¾ÿ»ÿÖ3!]¾ŒBm§}¾¸5ÍjÀ« cv‘Wûf ÿ{ý£ýKÿ8”‹ãyý¸ú•ùúüÿE±'Îúê^Có ~ )±ÿÄú†ùû9þãHDyû­÷iõBöû9AuËü-÷©ôÏôCö2ùÌü'üú÷–õíö»ú[þ¯`‘ÿ,û3ø"÷>øùÆúðú ÷ ô!óCôX÷]ü¶T@q¶û¡öþõ'õíøÁýÿÖÿJý‚üTü3üüþþ“ý‚ú¡ö¾óóóä÷`þ( ¸ #þÙý6ýãão£ÿ¢ý¬ý9ÿÀ_ïþÍüHûŒýÿÁrï]üþ²ÿ"5$ þ %  ï·¼ýÚüÑýþGÿ»­KÚýù6ÔYý`ùCöõ÷;ù4û¶þG³¶þõýøýxýxýcýæÿ BmÿDüóú+ø>÷£÷ãù ú½û¤ûgú}ùkù%úLüýõÿnþþýHûžúƒùÜùâûvþZvŽÿSý)ú‰ø÷Üù(ûðþÄÂŽEÿüùûaû¶ý/þrÿx…Û$ÿPÿ¥ÈNŠÜi8Bþuý ýHýþÁÿÄÿ»ÿu£xbáØmŠlMø¹3ÿ(þlýfü—üüÂþ¬¿ë†ß AËÿ üÿüüvý ÿ“‡Cü=´5KK»™Ýžþ¾þþ8þ©ÿ¢a9ÿDýæýýfþlÿJO¹ þïþuþþÍÿĈLÿ_þuý…ýQþþ]þþAþÖþµþÇÿâ6ÿMþ üÅûêû¿ü3üöþJÿŠ*[0ÿñÿhþ~ý üùýŽþÖÿ<¬]™c˜ÿ%þxþ‡ÿrÛãÐtèûW ?lѬ2ÿÄŸ§EÅÎÓÝØ ÿhÿ´ÛKËÿ~þ{þlÿ±sÚ„œ&—àišÅÿÙ0í‹éáUïù–ï<çæååè&ï#ù1œ* V 9 m  .³÷ätÙ!Ùmã ð‡ú›þ²9õ¿ù“ö…ì›êYíñ\ôÏóíFï 5–Íý6ÝîÛú=o'ÓKðåzóƒ} ü-éT݉Þ@ñ$5ñ;ƒâ° dµÂÜú;((0=úGæ?…!ØõBÍ2ÀÙÙó ðC`±YØ/îòë¼0 |£Ê¿#éG4,é12š8ê:Ú.k”çšÄHµ¼»äÍiå‰ç,ïH~JD+õ‚í۾£èKfµ hå}¿¯pÀbï'´MêN‚)!ï—À)³MÉéfûdüEùºÿŸk0†Jñ\bªY¢;Ð Üñ»Æ²ßÅêJ †O÷“Én¥ Ÿ´½ŽñP!•4fàëeµ–÷›é¾”îð.+.V&l'–:àTg^)LÒ$æõÔÓÉFÛ X \)ùÏïé„ÙÅוâþï9î—âҪҽºDºƒÄpÞ—(=F9QbD:(ºP ÄŸ*¶4Á5h1R*ù$ÝØœ¦òeÖ¢ÕGïr «4êçãÒí¿»²¯´ŒÁÉÙK÷©+pUú:ÞÕ"éo:NQ–T­GT/(Þÿ“é;Úòã2ÿAÌ%ìûÞÛ~ÆcÂ(ÌÞŒôg pW ÁñÓ߰С½öªG¡¼°»ØáÛ?$V,L1(˜ý2ß¶Þ§õ|7 ëÊ¿Â4ÓÚò @Ç+éÙЛDŽЧÞ7â¸ßØÂÒÂÕ–êîm,{8R2© ´sò%é÷Z.AòY¨\WI8"zóŒÎ¿¯Ï“ø«%¾=ƒ5ê¸ÆÙ²Ê¶—Ólþæ$ï1‹<ô˜ÑØÈ7ØÌõTꞌ ò$N;oEç8¹pì=Ò*ÔòFïADb%²õÔÏ«Èãñ‹D}ZÃNZ"êéMºœª)½Úíù$ÈH/Ho&¾ñ߿֣£A½¡è…¯C\`]ÁH”$Hý»â × ×=ÚÞŒé£ÿ«/Œ,ïqíjÌ`Á.ÑÕ÷>×3»+9 8àaÀ„¸È%êJe1g=R5h¶ú Û̋Շôí4â2Ž ç3½È«Ç¶³ÕÙùS«r½ nýEùq +ó Þ1Öáìþ5ˆ3E2 ò°âßÓKÙîó /ÜÍ èüÈò ðóhûŒ Lƒ .îþ5ø/ëtÚÔÞÌôù Õð%E,Ç3„2B$ãúäçÝ+å•ý]“)í&o Õê¸Ô“×ðõ¼!:DŸO¯?^:ñ¢ÑÌÇÇ×}÷¯Š.w4~+‚ ØåkÍòÕÊçà9ü‹l'¥+<$*øÙäÜß3çùû6%ì)°ê\ð{á#Üê¸ ï+ >F?¼3ûêß|ÕëäÀ'¨=.?ÿ1¡ñî^ÍQ½Ã|ÞXu 4,i&ÁüSöÈìCçˆì®ü<#!n+0)aSú§ÝÏÙš÷šB:”D6Æ~ñúÔ¾ÉØÓ ìVJŠï?Ý™Ù-âô9å¨fà ¾ +¢S uþòû•Þ ò³ _$QéÈúØæíÜ\ß¶ì§ùÆzJþÇôÅéâ2æ'ôíðœì` øýðoò¢ÿrWB%õ&Jóî—ÚiÕÊãûyV®wøèòÉó´÷Zùhø´ø,û¤øRÌ döøäÒâÐô‚ .±?¹?*-ø“ë7ëýôÞL +´^‡ ÚþÐöµóá÷JU Ç¿Ž !äæð¯èëùœø*:¯:¬'±•çvÕØ‚í§ :((5M-“Ûô!ÜÊ×ÒåXü‡!á°¹÷Šõ<ú}% e à æžs§6õyê™ç?ì÷šßrè ®*÷Çô’õ³ú:‹gù 8 ôáí^ð;ý2 É:T$ªù+ðŠíî6ñåö<ü栅 õEã)Ü âÓõ Yf#9Û _ùÕî|ì1ñhùeïQ^× þ–ô†î¶íÞññü å2Sö÷ ô‚öòýÝ ˆÑk Jú­ó=øP¢9šð ;¹w IyŸÎ Þ° o|ó(ì:ón\Qû û÷]ç?áêÜ] 4x6À'1 œðáãòzrö–ûÈäÌÙ‘ßmðõ¸ µÆý6ö<ö<ûçjÚ iÝ Lq ö Vû*ì(ârâiíÿÍó™Jûpú.ÿ’ +— ßþ&íá<â)íÏû$é¡ýþޏީk V]úÒøŠýþ 2è>¡üóì’å4ê,ûŒ$`%HEûä Ù”Þªð,í¡$° nBù€øJü§ÿâüTõöóFöãþÄ4 ]fŽüÎ÷¾øü”˜—ÿßÿÓ1 º 7üÿú(ûËýüEùÃ÷²øœûUÿeÐñå VýòõÂô^ýr z'>!q ŠðÍàEáìóO þ,×/Û'"V;@fÿbêuÜÚEá í¶ö ÷£õÂï&æªæ$îQöûýE|û³õ£ö|&>5b;Á4Š!€ ò á?ÜSåÛ÷6M x3÷¸ðòï îEìî'ûã$B(¢½ÂçgÚÚ çKÿ„ /k0OcþTá]Ò‹×äðé,r8H0ª¬öÙsÎoÖæäøý »ø Ã!¥ú ö¸ß•ËdÀÄØ0÷]ˆ)a(tøÜÄÍ#Ïálý2¾&#¶ þ„ë=à°áxë–øÊ… ï Ô ] ~ ¯÷ûïûìÉîò®öæ÷‡ôRîªé,çHëMõ‘ʳ…; êüãìóç¤ñ¨ä .Ó/!@ ~ôžè`çKíFõÝþЧ¡_Ä « õdìªéÙîZù¢yùð™ (ùkècÞàÝñ8 «-ß,iÈFò–éZííüŽ 4¬¤y ÀþþóáíËî6ôŒþ¸ ¹ ÁÇüŽ÷Ðó€ñ‡öKŽ‹òû mü”êýÝ®Úc䓸{ ÿæ#Î>ñé;ë™÷G˜”ûBÃ×ïâ“à°èõ 39€ÿ„ô*éáéá£êeù® Äd¢Ž >ú±ì@änåÆïËÿ{MÖDöê/ãá¯ç<ò1ÿñ «ï pûöˆî0í›ô þû Äõe÷òîãí›ôÏ* Œó×p¶cŽÿSþòÿME”B l'tøÖìkæ•ìû˜!ŸIõ—ñÍóäù€„ Æ<æO ͼøÓö<ùMT ´÷àÃTãûõñMðÇõ³ÿr )‹ ëVõNèÔã¢èò÷W f ´ùqëtçTîŽýø aÂÍcŸø/óköø òí³¶ÿ–÷–ñìÕì îÔõ|O ‡SâìúXìãhã¢íRüÿI?"^¯Ñýrîdéî÷3 Á B~ý&ù+ùeý”æ Á DØ üÚö¸óó@øe§ „  Ÿ )@‹ùô¤ômù= V ®mü*ñ;î6õ * + ¯wàgÁ]ÿýùeóð÷\›`¬økñ÷òÃúZñÍÎûs÷Mô§õaú’/ þ¿ T?û[ùúü9ýïÿÍùµHÝÛÿœüüùÀøbøÍú.ý¦BG3ýÂú¡õôú§; ; ÷ ¾Iþ~ù«ú‹ e%‡¹ ½ÛÿÊûúUüQþµÿnEM(M@:iü‚÷iô9ò"óùþ ú q¬ <Q’· û<ø÷Gú- ³¾ q$õÚó4÷Pü‘scàþõú‰ø{ûÿ{W „˜û|õÑðÙïãó4ùâµ 2 2EþÇý‘ýÔüBõÿì•åúèZóíÜÑé3øîí’èÎì ö)ÅÀ?üöøôöókô†øýþ2ãæþlù"õQõéúð) 5 zéÕKÿuþ,þþYz“ŠI]E<•¯ùtôŒô¼öé÷ïøèù÷¦ó:ïËó[v¯ï ¥™ ÷ˆ÷ò·öÁ¶çC-Þõàç âûê>øú #Ùìå÷Wð¸ó‰ýÔ  t¨øëçmñ¨½² –÷êDëJ÷Ö ÔŸ-ßþ`ìãúç*ñ8ÿ â ¤bø¥îyé©ë1ñS÷iùÌ÷ãòôî×ñúhI]º¤Púó÷cúÕïŽ$–ûêò·ëMêSïæ÷²þþÅùºñ®êŸèìï»úÌ. . ÒΟý÷“öµøÇûÿaû÷¤F ;|æ*üSuþøòhïÝñ¨÷¬ K  ‘¬üTö¬öˆüj±Ë= \Jü£úäÿ$<û ðí0üTû ûÛýiýüù±÷`öÁ÷Äúýæä…þÍþÿ8fòÿèü£ù·÷Öø“ýKÇ nJ ¥8ýõú¡û[þfKi;-üø¢ö¾÷Äúºþ,6mÿkþ>ýÑüÑüNû-ùÏû†þ)!ÿ>ÿ±5å ü¿ûOü‹ü$ & ¬¿¯ÿ´ýû•û›üÑÿ>ø%/¦þoü‘üBüÔüyü üýB¤ +èqÖ(·ª=Âýøûáûžü|ÿïîv³;þ~úÞøîøŸù¢ú[úkúùFù:ú^üZÿ{þwï'ýúúäþD»–r3þrüKý/g)Ápýø·õàõ|øhü°ÿ»ÿ,ú’ö²óŒðÁðÙôUù+þ/¯#ÿëûvù“ûý”• Âÿhüaøõ|õTøüóÂÑÿþ]ûXúú¡ý¹ƒ?ýˆùw÷ÜøÐü¼#' ˆ°*Ùjý6ú‰ú^ûËÿ881}†"¬&‚ÿbüÎú[ùhù™úØý© ä i°„‘ÿkýoüóýéÿSÿßÿGÿ ÿ>þïþýBüÅý þ~ÿ÷OBÿ™þ]ýü*ýIG`9ýˆûù®úü<þ!|þ5û6ø;õ­õKö”ø8úLü ýõþµÿþûþøþüÂý)þÐÿ‡þŠüéûÒü?ý<ýÎþ™þ¯ýøÿÑJi§dˆþZú•øö²ö‚ø>ù÷¦ø8ü× 1D Ja›ÿnúÀø±úÏÿ“S5ûÿþÇüvúŒú+ü!ÿŠÑ-þiü!ûOû¼ýé‹-]Urþ ýZÿ¾~ øN ’ˆsû$÷‡÷rûÑnPˆþügüû-ú^ú±ûªüšü³üüüàýuýûËúðûäýTþþMÿP°]`ÿý)üÂþ)?Èÿ/ü§úÛùýúCüQþ¯ÿþÍý úêúØýBÿ¢ îäêÇý ÷Š÷ û°1TÀøþÙü$ûvüà˘X{üóø¨öû÷Jù·þ„/µ*þÇümúnù¢ú.üHÿ¾ïucÿ¢ÿx!Êb¥ŒŠü¶ûú¤ûÈþ`‹ÖY#ÿüÔûyû³ýþþJý—üHû@ú˜ú7û-ý…ÿ“ÿþüÑüŽý2þPþûüú´ú}ûLü¹þ&þÖÿ/ÿVþ‡ü¶ú•øÇù"û•ýHþý×û3÷`ô¶ôõQøôý—êטþ#û¤úù“úLûÞýŽþÙÿÍ*ÿ´þ¸ýæýšýTý ýÎü°ûüü<ü*ûØûUûüvþþ¸ÿÄÿ ?ÿýàý¸ýøý©ýrþ;ÿ«KK5æK‚Ž ›yH>¥âÀ…üûðýoþZÿd{¾×ÿùè÷iø>úÃýæÛà*0ÿeþéþÜÿGÿßÿÐþ¾ýøþæLamüÿýý¬ýBþ <sÿMý<ûÞüãýõþTý¦ûêúhú‰ûäýüÎû¡úðûðýàþ¯ýšûCù±ùèûIûäûCú§úhûdüðý ü°û’ûáüaüHûdùßøîù@ùøÓú%ü‘ýãýòûüùùûýÿ,0ÿ¥þ²ý»üúžúýýj„À8©Žÿ{'ˆ‹ÿÙþxýTý#ýZýWýþÿÓüóä!ÿ/þ ýõþ)þ¾þ“þ„ÿÿÓ$Äℵ‹çl¬Ñaÿ5þxþþþ5ÿxWI³É²þïûÅúùÏú+û-ü°þ`ÿ/ÿ·<RvXÿrÿáÎò|þìüŽúóúUúnû[þ‡ÿPÁþ‡üÈüûðú½úIûLüÝþ/þWýiüKûÂüÿ»P?þ/ý#ü°ýEþAÿÿ~ÿ«ÿ¾UT8”9ÿ´þ~þÿ>°ÈÿÄþ‡ýxüðü”üàýìÿ;ØsÿŸþ¯þÿ"ÿ¨s¬/ÿeþMþþ{ÿ®?‘ï.+Ç  žmá<ö-šWçþ²ýlüÔü¼ýšþÿ ÿ þÇþÓÿ>¹¤þþýÁý<üÝüËýýNþ&þ þ/ý×ýéþþÁÿxÿuÿ_ÿý”û¶úaúûü*ü­ü‘ûÒûúžúØüˆÿ òVÄA˜þý ýšÿ¿ššÿVýiüöþ>˜¾“ìV ýãûLúüþ8­ È6§ÿþ–þ)þ¯'yÝš?aÿ"þÿ ÿîv-ÿÙØŽ .4ÊÎpÿÓÿ«ÿ¢ÿ ýéýfýiþÿ/ÿÐÿ\þÁþßÿÿMÿ5þŠþþþßþ„ýæý9üÚüÔýý9ýcý/ü”ûFúû[ýþÓÿî6ÿ(ýüúkù¢úCû’üÑýˆýEüû ù¥ùøýù±ú´û¼üªýNýŽý|üÚûÕúúúêûØýWÿX¡ÿxüÿúdøîøÖú.ûðýQýþþAþMýÈýlüöûùúýúzúwûý¬ÿJaü¼ÿúÿý¾üãý‚ÿDv)èÐògÿ~þcþ þÙÔÊiÝ`ÿÐþæþÖÿŠU6!6ÿœÿÿ¨ÿrÿ(þÓÿÿß!‘l©vÿÇþýþþ~ÿ±Îgÿ5ýøüíü×ý9ýÎþ{þ‡þ¸ÿ"ÿDÿþlýýý ýoþ/þïÿ«ÿÁÿ2þþ/þ8þ‡ÿ( ž9ÿ"ý»ü£ü6ü‹ý‚þMþrýøýuüæü­üËü³ü¼üóýxþ þcþÜÿ;ÿGÿ,þ™þýãý|ýÝÿ/UÈÎÿ÷þ¾ý”üóýiþ{g2,”ÞXŽš¸S,u6]龊– ‘5JôÖm© =_ʵ)*!ù)ìÖþѧÿÊÿPÿ¥…Ñ/Ç×p6ÿYþ™þ‡ÿ{¿Î²;,×!•Û3ˆ¬ÎWÔ§’ÅäÔ‹'ÿßÿú3˜ªÿýÿGÿ„$y¡óäOÿþûþþÿ_O?×ËUÿñjd!ÿåÿÙpüH9Øjÿ™þ¯þfþJþTþïÿuÿÓI¶³øåG>TÿÙÿÿP'‘¶¬ÿã‘9›ÿëÿ{ÿÍ ÿëÿbþ¦ýøþþ²ÿS ‹ð<'vÿÊÿ¨ÿ8þéþÊþ‡þ“ÿMÿ÷ÿŸþ¾ý×ýuþ þÍÿrÿ–ÿ„ÿPþ²ý¦üùüvü$ü<üàý¸þþ~þŠþoýÑüÔü'ü-üšýý/ýüÿüÚü°üEü!üýiþ~ÿåW š3þTüéûÞûÞüÈýÈþÁÿgÿ‡ÿJÿœI§ä'ÿdÿÍÿ,þþfþéL渣Eÿ–ÿnÿâN>`øK3j¡T#ï#Hùÿ™þ‡þþuÿ59‹ ¸ ?Iÿÿÿ3¶•ÿŠÿþøÿPÿ·ÿÄÿÐÿÓÿ¨ÿ5þÊþý,üüý?þ þéþãþGýÎýNüùýý&ýü ûùû˜ûÈüüTüóýlýÔþþuþÖþéþÓþ þTýàýEü³üümüÅýxýÝþ&þGþ5þþ/þÿ ÿ‡ÿÖÿ‡þ ýrüNû°ûÞüvýþõ!Ñ$¡0ÿ¨ÿ‡ÿ‡ÿ´-í|p6ùó]à{»HyË ÿ¨ÿÊ3,2Š"uïm!T×Bˆ  ”&—©Ú)— š i Ôyg)ãø]¬¶£ùòªÿÜÿJÿÿÿMÿÐjÑUÿÐÿ_ÿÿÿ ÿ\ÿŠÿkÿ/ÿ>ÿ\ÿrÿœÿëv¼­…X3*ÿåÿåÿñÿß !9aÈ-Nyv0¶a|í9‹vgj© Âÿöÿ8Ô2”× gXÞE¦¼à üÿoˆ”HÈTá›ÑQÝD r‚ö! È‹§Øùѳ°ËíÈ*ö’Rÿ´ÿhÿPÿ;ÿ\ÿÄI•ùEZ`pT`ŽTBvÿôÿ»ÿ“ÿhÿSÿ;ÿ;ÿAÿ2ÿþ£þiþxþ{þ{þãÿ‡^`Î#ãcÛ<ÿåÿô0Î`#~Zaÿ¥ÿ{ÿÜU¿äêêöQËoï)šöpùvÿ¢ÿ~ÿ®y]BT|©Z•ÿ¨ÿÿ ÿ8ÿkÿ»ÿý$ÿëÿÁÿ´¤È§¤ªˆXÿÇÿbÿ>ÿ8ÿGÿuÿkÿþlýìýàþþJþ ÿ"ÿ¨ÿåÿœÿ"þ»þ‡þýˆýoý²ýûþDþÊÿeÿÓÿ±ÿGþ“ýÎýrý9ý6ý?ý‘þ#þãþßþ ý?üˆü0üZýþ ÿ‡¤Ø?ÿ¢ÿ;ÿ„ÿô•TˆTËÿåÿ;ÿ ÿ{-3oïÇT&‘ViTcù')P1nŠì„xà]µ¯5”#°£PÓ2à„¬#òQÿåˆ|8léêÿ¾þÊþcÿ'9ÎBþ»þ þþµÿ5ÿVþÙý×ü³û¼ûäüüþ雿;öíÿôÿ™ÿuÿ"þ™ýéüÅûú‰údû$üýòþïÿ8ÿ þDýýHýxþ/þxþoýÔýü§üÂýxþþ©ÿ5ÿŠÿÁÿë*‚Oÿ±ÿ~ÿ¾ÂËZüùÿúyTöÚ?ÿrÿ„UEH2è5YG;8æ©¿üˆYŠr)ûÁTi„u2ÿ2²þ¾,—$íy^‹s‹mÿßÿJÿYÿÄ›`©¶ÿÄþìþþlþcþÊÿu!<LÿúÿÓÿýÿèÿÇÿ¢ÿœÿë?’¶Ë³Eÿþ–þ5þ2þ„þ»ÿ ÿ8ÿrÿ¥ÿÿÁÿÄÿÿ%þÄþrþýý¸þ~ÿb?Þ!Å0ÿÇÿÁX’¤öÿöêùüÿä?ÿåÿßp ŽÈÅpÔÎ$Û‹‚R3a’ðN‚Eä’‚¡ª¡sL9^¶íó<óvÿëÿSÿ%ÿ>ÿMÿbÿ·ÿÁÿxÿ;þæþÄþãÿÿ¥RŽ[*aäH0­O ÿ÷ÿ«ÿDþÖþ¸ÿ>0àNìLÿ®ÿMÿ8ÿ/ÿ%ÿ/ÿuÿŸÿô$ÿâÿÖEÎ6gZΤ˜ÛH¿5‹Ñ¬ö3ágéQ²ÊNÝ9gÿô‚äN¹ã Bã EêÅHæ Hù-0'9ç³6ÿÜÿœÿVÿAÿ_ÿ®O˜¡‚aÿâÿ>þõþ¾þþ„þ™þÜÿ,ÿrÿ“ÿÿþÐþ¸þ„þ‡þuþiþ þ»þµþ¬þ»ÿÿnÿ¾ÿâÿâÿ¥ÿ;þþÿ ÿÿÿxÿÓ!ÿ¾ÿeÿbÿuÿ®ÿÜBÎN‘N¤ÿúÿ¢ÿkÿPÿ{ÿ¢|¶çÛ§˜¤ª§ËáðùK…—…È Hx¸ï2c²Ð¦2£ £KQjm§Lÿñÿ´ÿhÿ‡ÿ´ÿâX¹6$ð¡|p•ÛáËs*ÿúÿ{ÿGÿ5ÿ_¿W¼¬B¿ÿúÿGþýìý ý‹ýýæþGþãÿ5ÿAÿ;þÖþÊþ¾ÿGÿñ˜íá­d9Xg-ÿîÿÿGÿ"ÿ%ÿGÿDÿþÓþ²þ©þ¸ÿÿÿýŽ TK!äLÿ±ÿ«ÿâOÞpÚ, ÿ‘9¡ ÿÖÿ™ÿ{ÿ´ÿô$¤'Âùˆ0³ÿ÷ÿxÿPÿkÿ·ÿèQv<Ô˜pUÿîÿ÷3s•§‚^RX< $ÿýÿ™ÿ5ÿþìÿ%ÿGÿ%þìþøÿ/ÿYÿÖUy|mIXRR-!'!ÿ„ÿ(þûÿ(ÿ–ÿâX¶¹¡|0ÿ´ÿxÿÿèO|Î`…Ôצ ‘¶ö,Ñyö³g[‹j6 ÿÙ'ÔvËìù—öOÿÖÿÖdH;Ñã²TÑÿÿ8þ2ýrüÚüüÅý…þ;þµÿÿ>ÿAÿVÿuÿ»ÿÙÿúÿúÿœÿAþÜþ]þ2þ;þÿGÿÖ6^O9<*' ÿßÿ–ÿxÿPÿþïþ™þiþ‡þµþÁþÖþòÿPÿÐ^¶?‹¼ü‚XÿÖÿ\ÿÿþÇþÙþÓþÙþãÿÿ™ÿÁÿ·ÿÄÿÖ aO9?ÿýaË Z|p¿…<ÿÍÿ´ÿÖÿý[ÎBs-ÑáÛ¼¼Žd9*ÿôÿŸÿÿ„ÿrÿ®ÿú303v¼³‹žaÿ÷ÿnþÙþþoþoþŠþÜÿbÿ¢ÿ¾ÿåÿÇÿëÿÄÿkþõþ~þZþ ýéþþþ8þ5þþý¾ýÚýÝýãþTþ“þÐÿ2ÿrÿuÿMÿ"þÄþµþ»þãÿPÿ»ÿôÿ«ÿ;ÿ þ£þý£ýHý<ýxýõþ{þÖþûÿ>ÿ(ÿ(ÿ~ÿ–ÿŸÿbÿbÿœÿëXž¿í'ê-NT6-]9-6!ÿÈ¿äB”öE©õDD5cPoDòŽ)y*`ãuõ>Mòiö ÂÅÚàŽE𹑚?Ñž˜m[!ÿèÿúÿÜÿÐ3¿ÿê^ÿâÿ{ÿÓˆ j0ê¡ÿëÿSÿÿÿeÿ«ÿŠÿ\ÿþ¯þÁÿ"ÿâO*ÿýÿþõþZþþ>þxþÐþÙþÙþ¬þoþoþþ–þ`þ]þoþ‡þ©ÿÿ¨$mOÿ‡ÿþ¦þ¯þãÿ~ÿë*Xª$vÈéÅcËÿúÿSÿ>ÿŠ Ôö3E©öQNÚ”Q<]¬QT,ãšyyŽšHÈ^ÿå[ˆÅ¿­gÿåyÛÿ’sÿ´ÿÐ*jg^Rd›ù‹?Hˆ|ÿŠÿSÿ_ÿ~ÿ¨ÿ»ÿ¥ÿÙÿÜÿñ0aösÈ—ZÅ$ÿ·ÿŸÿÊvê0H]‹m­…v›çáÈ|ªóKNð§?ÿÊÿÿÿÍÿú<mˆ¼¿ð<E-ç˜IÿîÿåÿñÿÁÿ~ÿ8ÿþøÿ/ÿrÿhÿ/þÍþiýàý²ýÝþ>þòÿ5ÿ_þõþPýïý‹ýEüíüÈüÎüíý/ý£þþlþûÿ´$36ÿîÿuþòþWýÔý ý—ýý¸þþ“þþÿ8ÿÿ™ÿ„ÿxÿxÿ‡ÿ“ÿ¾ÿÍÿ™ÿ2þ¬þDýÚþþGþ©ÿAÿÁ3X‹¹°›§mÿ®ÿAÿÿ2ÿkÿ·¡9p‚g3$Ñ­›ªüc¦ÅŦvc”£Îö×¹Nö¶¹* ÎWÂdÿâÿ„ÿnÿbÿ®ÿÓO!ÿÇÿhÿ_ÿnÿ±ÿñU¿ö!H?ðù¶3ÿ¾ÿeÿ"þæþÐþ þµþÄþÖþæþ¾þÓÿ ÿGÿxÿÿ{ÿPÿVÿ¨ÿëÿÖÿxÿ þÍþ‡þrþþ‡þ‡þPþ&þ þþþAþ`þcþAþýãý²ýÈýàþþþøÿ;ÿÿuÿSÿPÿþÖþ þ¾ÿ ÿ5ÿbÿ¾0EL6am’¶¤³È³¼áK”|W*ùí 03ù93?'6$çžm[¼$vŽ£ÅÔÈË •ˆdX? ÿßÿÄ$?R^ŽíüáËêÿΛX3ÿÐÿ¢ÿÇÿî0³!óðùíÈѶ¶¼¡›pOÿëÿÄÿÁÿ·ÿÐUÑÅç -3-Bðª¡ÅðêÑÈùáÅ•*ÿÓÿ¨ÿÿrÿ“ÿ‡ÿÿ“ÿeÿbÿ{ÿÿ«ÿâB˜ü‚ÑöÝ|?á›vjL6ÿ«ÿ¨ÿå^¼Ë›9ÿýÿœÿhÿŠÿ„ÿñg§•ps?ÿôÿ{ÿGÿJÿYÿ¢RO ÿ¾ÿ¨ÿxÿœÿ™vtwm-5.4.7/contrib/vtwmrc/sounds/boip.au0100664000015300001300000000165210237645271017103 0ustar callumfid.snd!‰@boip.wav $E¯œ’‹‰‰Š’œ®A! ,ˤ˜Œ‹Š‹‘šªT& 0½Ÿ”Ž‹‰ŠŒ›¬G! !=²ž–Œ–Ÿ¼2 6¹Ÿ”Ž‹‹ŒŽ–£Ø%  %ÏŸ“ЉЕ¢è# *Þ‘Œˆ‡‰—ª;   Y¡’Œ‰ˆ‹œÄ' 1²šŒ‹”¡Ö% F¨—ŒŒœ»* .­—Љ‹ž×$ "ÌœŽ‰ˆŠžR %‘“ S -²›”’—£p! ëž‘ŒŒšµ+#™‰‰ŽœêUŸ‹‹‘¦- A¡“”¢A "½š›Æ  5£’Ž™À ÅšŽ˜½ &­“Œ—ÏO›Œ‡Š–Ð̘Œ‹“¹ ,§“Ž’§- (©•”¢4 $®˜•žO •§' =œ’­!$©‘—êý›¤(7Ÿ’–·<’˜¾Ι•ª!-¨šžÕ[œ•£+-ž‘–¹,§š¨)+¢— <¼––½=š "º’²©–©«—­$¡•®&ž•À ž“±2›–± ½šœW F™©!´“š,E“’= Ÿ•h¢”¿«)!œ™%/˜¥<—¡°–Y(œ* ©™g:•–,¼‘¡#=•¢,™Ÿ"/š«'¨ÊÛ>½£2'°½*Ò­--«³H¥œ+(–¢¶•2®>¿¦*¥+(™É«ŸœU¬Ÿ?Ÿ%9 7¥ø¼ÊIJ­Ö¥CŸ9.Ÿ#9®µ'œìª +¯ÖÕ'ÍM½G>ª=Å·,8J/4±8:´)AÄD68Êʯ¸BIîYLhsÚB·ºN¦­³Ÿ©À»½»µ²Á`¸·³©µ¾¶¼y{ÞfÄÁʾÉÈßMÞÒα®±±Ôȹ¿©©¦¤Ò¶£¯°¶Ë¾¯ÁFß»Ö=S¸¶ÊRP»Ä7_ØBÎëKßÖb9JiDL>=7/?<.26*(.-*/1,-.8vtwm-5.4.7/contrib/vtwmrc/sounds/applause1.au0100664000015300001300000011626010237645271020047 0ustar callumfid.snd&œŠ@applause1.wavù€@À@@ÿ€úÀüúÿ€À@ü@ÿ@À@€€ÿ€ûÀþ€ÀÀø€ú€€@ÿ€ý@€ü€ù@ü€€þÀÀúÀõ€ü€€€öþ€@üÀúý@€€ü@û@@@ÀÀü@úüÀ€þý€ü@ù@ùý€€€üÀû@ÿÀÀøÀ÷€ÿÀø€ü€€@€ÿÀõ€òø€€ €üÀú€€€ýÀ€þ€øü@ý€€À @ø@@ø€÷€@€þÀþÀÿ€ €þþ€üÀý@û@ü € €üÀÀÀø€òø€€€€ÿ€öü€€À@úþ€@ÀþÀûÀ À€øÀÿ€€þÀýú@ùÀ@À@ýÀþýÿÀ@€@@óôû€À@€ÀÀøø€@ €ú€þÀ€€@ø€ÿ@€Àÿ@ÿ@€ûÀ@ €Àÿ€þ@üø€ù€Àý€ÿ@@@@€€€ø€ûÀ@À€þ@û@ÿÀÀ €Àýó÷€ûÀþÀÀÿÀþ@ÿ€÷ú@€€€À €@ñú@Àþ€ýÿ€€ý€@€ú@ùÀûÀ€Àü€ô€€@ø€ö€úú€@€ €À@@úõõÿÀ €ú@üÀÀùÀüþ@üÀÿú€ý@À@€@@ö€÷ýþÀ@@À€üÀÀÿ€@À€øùþÀÀ @üÀþ€Àú@úÀ€€þ@ò€þÀ € ü€û€ûÀÀ ÿ@ú@ýÀ@úùÀ€ûÀÀüÀúü@ýÀý@ýÀÀüüÿ@@üÿÀ€@÷ú@ÿþ€€ ûþ€ÿý@þ@@Àý@ÿÀ€Àò€ú@@þ€@ €ûÀô€ÿÿ@ùÀ€ý@@@À@€öú@ÀÀ€ÿùÀÀ€Àÿ€€þ@úÀ@úÀùÀû€€ûÀø€ÿ@€@øï€ñÀÀ@€ €ÿÀ÷öû@ùÀ€ú€ø€@ €ü@üÀÿ€üÀï€ð€À€@ö€õ€Àÿ@€ÿöÿ@ @óú@€ü@ü@øÀ €@ÿ÷€@@ü€ €@Àþ@õð€ô€ €€€€úÀüÀý@ûþ@À€@@€€ùùÀüÿÀ@€Àù€þ@À€ÿÀÿÀþÀýÀý€ý@þÿÀý@@ÿ@û€@€ û€òò€ùÀ € û€ú€û@ÀúÀö€ú@ÿ€û@ý€@ýÀÀÀÿÀÿÀ@€üÀ€ÿþÀüÀÀû@úÀý@@ý€ù€€Àý@@€ýÀüû@@þ€À üüÀýÀü@üÿÀ@ þ€õùÀ€Àÿ@€ýÀüÀþ@ÀÀýù@ùÀ@ € ûÀû@ý€þ@û@ø€ € ÀúÀú€þÿÀ€ÿ€€ÿø€û@€ûñ€úÿ@þ€þÀ€@ @ý€øÀö€ý@ü€üÀ ô€÷þ@€À@þ€€Àùöý€ÀÀþ@þþ€ÿ@À@ þù@ú@€ÀÀ@ü€ü@ùÿÀ@À€€€þ@ÿõ€÷üÀ €€€ü@ò€ô€ÿÀÀü€ûÀô÷€ € €€ø€ð€î€€€ù€þ@@üÀ€ûÀþÀý€ü@€úüÀüÿ€ÿÀ€Àô€þ@À@@ñô€€À@ €ÀÿÀûÀüùÀö€þÀ €€õ€ü€€ë€ý@ öö€ý€€ÿ€À€Àý€ø€@@ÿþÀ@ø€ü@€ €ýÀô€ô€üø€ €@õ€ÿ€Àý€€ üþ@ý€÷€ô€Àý@€€€@þÀýù@úú@€ €€ùÀûÀý€ÿú€ûÀ@ÿú€@€ú@üÀÿ€€€ÿÀý€€@ú@ûÀþÀ ýÀöüþ€ü€ÿ€À@@€ü€@ö€õ€@ €€öü€€Àÿÿ€þýÀþÀÿ@ù€ò€€ ÀüÀ÷€ýÀÿÀþ@À €ÀûÀþûþ€ÿ€úþ@@ þ€ñ€øÀÀ@Àû€ùÀý@ÿ@ÿ€@À@ü@÷€ùýÀ@Àþ@÷ë€ê€÷€€€î€î€ù €û@öõ€ €ûþ@€þ@ûÀ@@ý€ÀúøÀýÀö@ øøýÀú€ø € €úøùÀý@þ€À@üù€@þÀý@À €ú@ñ€ö€ý@ € €@ø€öó €@@û@õ€÷þÀ €€÷€õ€ÿÀÀÿÀÀ€þû€ûÀÀ@Àý€üÀ@ €ýÀö€÷@€ õï€ùÀüÀû@ÀÀÿÀûû€ÿ€@ú@þ€€€ùÀõ÷@Àÿ@ûÀÿÀ€ÀÿÀÀþÀþ€ÀÀ@@ÿÀüû@ýýÀÿ€@ €@÷þ€€€ÿ€þ@ùÀýÀû@øÀúÀ Àþ@Àý÷ ÿõ€÷€@ÿÀùÀ€ý€üÀ@@÷õ€þ@øÀ€€þÀú@À €Àù€ô€ÿÀüÀù €@ø€@@ÿ@õ€û€@€ù@ùÀ€€ü€ø€ÿý@þü@ö€ö€€ Àÿ€ü@ø€@€ÀÀú@ýû€üþ € ôõû@ÀÀ@€ûø€ú@@À€Àü@ý€ýú€À€ü@ÿÀú€À Àû€ýÀùÀ€€ÿ@ý@€÷€ø€ÿÀ Àñ€ø€€ý€ø@€À÷øû€€@ÿÀ@@û€ü€ýÀÿ€Àÿ@÷€÷€@€ÀÀÀý@ûý€@ÿÀùÀÿ@€ÿûúÀüÀþÀþ@ €ñ÷€ûÀÿÀ€ÿ@€Àÿ@ýüÿ@Àþ÷€€ÿ@€€@÷ü@ÿ@@Àöí€ó€ ü@ü €@ù€÷À€ÿ€ù€@@ÀûÀþ@þÀþ@À€ÿð€ú€€€ü@ô€€€@ ü€ÿÀ@ýÀ €Àü€ú€þ@ù€þ€@@€€ù€÷€ý@Àü@ü€@Àý@ú@À€@þ@ûÀþ€ÿ@ü€€€@À@@úüý@ÿ@@ÿ@ü@@€À€ñ€è€ï€€€ €õ€Àö€@À€€À@@þ@øÀø€ÿÀþÀÀ€ø€ú€ü@À@€€Àý€û€ûÿ€ÿ@€À@üýÀýÀü@ €€ð€ö€À @ý€ûÀ@@ö€ü@€ÿ@ù@€@Àø€ø€ýÀ@û@ø€ÿ€À€ÿ€ý@@€þ€øþ€ÀÀÿ@@úøÀý@€€€üÿÀÿ€þÿ€@€ÿÀþÀÿ€þ€ù€ü€À€€ÿ€@@Àö÷ý@ €þÀû€ü@þ€þ@þ@û@ý€@û€@ €ÿü€@ü€€Àñ€ô €€€é€î€À@î€ð€ ú@óþ€ €@@€÷€øÀ€þ€ÿ€÷€ÀüÀö€€Àì€ý€üó€À€øÀû@@@À@þÀÿÀÿ@ÿÿÿ@ü€ü@À€ýýÀ@@ûöÀ €üÀúü@@À@ÿÿ€þþ@À@€ÿ€ýÀþ€ÿý€þ€€€ÿ€ÿ@@@üÀþ@ÀÿÀþ@ÀÀÿÀû€úÀÿÀþú€ÿ€€ú€ûÀý€ÀÀÿ@û€ÿ@ÿÀûúÀü€ÀûüÀý€ÿÀý@úúÀý@ÿÀÀ@ÿ€ÿ@€€û€û@ü@€€ýÀüÀú€üÀ@€þÀÀ@÷€ï€õ€ €  € ûÀî€û€€ú@û@ €€ú@ýÀÿüþÀÿ@ý@€ Àöø€û€€€ø€ú€@ýÀÿ€ûûÿÀ€€@þÀþ€ú@ûÀþÀ@ÀÿÀ€@Àÿ@ùüÀûÀü€@ÿ@û€@ÀÀþÀ€þ€ú€ÿ@€@ú€úÿÀ€€€ÀÀÀþû€ÿÀ€@ÿÀùú€€@û€û@À@@ÿþ@øøÀÀû@ÿ€€üÀüü€ÿ@@À@úû@ûÀ@ÀÿÀ@Àÿ@ü@þ€þÀ€@ÿÀø€ý€€ü@ü€À€ÿþÀù@÷€ü@ÿ€À@€ü@À€ú€ÿ@@@þ€@û@øþ@ý@÷@@ÿ€ý@þÀÿ€€€@€þÀ€€þÀ@ÿ€€ €÷ôú€€€€@ó€ó€À@@ú@ù@ÿÀý@ü@ÿ@€üÀùÀÀÿúÀý@û€ÿ@@À@@þ@øÀÀ€ÿ€ûü€ýü@þÿý@@ÿ@ûø€ÀÀ@@øø€øüÀÿ€€þ@@À€þÿ@€þ€üýü€þ€€€ûÀ÷À@þ@€À@øÀø€@þ@ÿ€ÀüÀÀ@þúÀüÀü@ÿ€@€þÀÀÀÿûÀüþ@þ@ý@Àþ@ÿù€ø€þ@€@ÿýÿ@€ÿ€ô€û€þ€õ€À@ÿÀÀý@ûÀ@@ú@ýÿÿÀ€ €øÀü@À€ýýýÀ@@þ€@û÷€úÀ€ÀÀöú€û€€Àÿ@€ý€ÿ@@þÀ€@÷ý@þ€ÀþÀ€€ý@üÀÿü€ÀÀÿüÿ@Àø€øÀýÀ€ü@ùù€@ ÀüÀùö@@€ÿ@ù@÷€ €ý@ô€ùþÀ@@ø€õ€üÀþ€ùþý@ÿ €ü@þ@û€ý€þ€óû€À@ûÀÀ€û@ý€þÀþÀ€ÀùÀü€@€@øö€þÀÀûþÀ€ û@ü@øÀ€€@Àý€ÿÀÀ€ú@€ý@î€@€ý€ý÷ þÀÿ€þÀüÿ@ÿ@@Àû@ú€ÿ€À€À€@@ €úÀô€÷ÿÀýûÀ ü€ÿ€€ù€ô€ÿö€÷€€ø€À €ñûÀ€Àþ€@@ÿô€ñ€Àø€þ@ @þÿ@À@ù€û@ü€óüÀ €øù€ý€ø€€@ú@ôý€ €€ýÀùÀö€@€Àþûö€û@À€€€ÿÀýþ@Àü@ù@@ûÀú€÷€€€ ÀôõùÀþÀ€ú@ÿ€ ÀýÀý@øÀò€þÀ€ÿ@@€€€€þ€üþ€þ€ÀÀÀÿ€ÿ€À û€ö€øÀÀ@ÿùÀ€Àøý@À€üÿÿ€ûÀõ€ú€@ €þÀø€óë€ø€€€ýÀð€ €ù€ö€ý€þÿ€þ@þ@@ýÀÿÿ@ÿÀþ@ÿÀÀÀù€ùù€üÀþ€@Àýÿ@þ@ûûý€ûÿ@þ€@€ þþÀû€ÿÀøÀ÷€û@ €Àû@ôô€ý@€þÀýÀúÀ €ÿ€ÿüÀ÷@Àõø€ÿôÀÀþ€öø €Àö€ý€€@ÿ@€ýÀ@ÿ@óùÀ€@À€À€ö€õú@üÀ€ÿ@ü@€ú@üÀü€ú@û€þ€ €ð€ê€ò€ €Àý@úÀÀû€û€@ÿ@@øù@ýþÀ ýÀ €Àú€úý€ @ü@ï€ô€ú€€ô÷€€@@ó€ö€@€ùøÀÀÀ€€ó€è€ï€þÀ€@ÿ@û€ø÷úÀ€À €û@ôö€@€ý€û€þ@€@ø€øÀÀý@@@ ÀûøÀÿ@€üÀ@€þ€þ€€Àþ@÷ù ÷øÀ€þÀ€@ô€øÀýÀû@ÿ€@@Àÿ€ø€óÀ€€ú€í€ï€ ø€ý@þ€ú€ÿ€ ÀûÀÿ€Àõ€ë€ú€€€ý€ñô€ € €Àö€@ ûÀûüÀþÀüÀ€÷€øÀúý@@ €ú€û€€€ý€À€û€øÀù€@@úÀ÷ø€À@€À@ÿ@þ€€€þÀúþ@@ü@üÀøÀ@ € €ÀøÀñ€ø€þ€À €@€@Àþ€ø€þ@€ý@õ€ùÀ€Àù@ù€@€ÿ@÷ýù€÷ €ø€ùÀú€ý€ü@ÀþüÀÀ@úÀ÷€ù@ Àþ€ö€€óç€ò €€ €ÀÀò€ð€ô€€ûÀøýÀ€÷€ø€üÿþ€@@@ûÀÿÀ€üÀû@üÀÀ@@øþ€üÀù@€ €@úú@÷€€ý€€@ùÀöù€À@ÿÀÿÀûÀùÀÀÀû@ú@þÀ€ÿÀÿ@ö€û@ýü@@þÀ@û@õ€úÀ@ €€ÿ@û €÷÷€ûÀ@ÿÿ€À€À€ü@Àþ€ÿÀ@ÀúÀó€ù €þ@@Àø€üÀÿó€÷€û€ÿÀ @õøýÿþÀÿý@€ €ú€€€€ÿÀõ€ê€î€@€@ó€€í€ð€ó€Àýø€ù€ÿ€À€þÀ@@ú@øù€þøÀûÿ@€ øÀú@û@ú€øù@€€€@ï€÷ €÷€õ€€ øú@€÷€÷€ý€ýÀÀÀý€þÀ€ À €þÀû@ý@ý€÷€ÿÀÿÀ@ÿýÀ€ýÀ÷úÀüÀ€ÿ€ü@ú@þÀÀû€õ€ý ÷€þþ@€ÿÀþù@€ÀþÀÿüÀ€Àþ@þ@@ÿ€€ø€üÀ@ÀûûÀ € €å€ç€úÀ€ û€ÀúÀú€û€ô€@Àþý€üûÀÿ€ûÀý@€ €Àú€ü@üÀÀÀû€öùþ€€À@÷€÷ü€üÀþ€Àþ€øÀ õõ€ùÀ€@€@ø€øÀ€ €ø€ÿý@ýÀþÀ@€@ý@þ@@€üùüÀ@€ý@ÿ@€€€Àÿ@þ@ü€ÿüÀûÀýÀùÀÀþÀü€ÿÀûù€ €À@úý€ÿÀ÷€ÿ€@ ñ€ô€ôýÀÀ€ýÀûÀ€Àõ€ù@@ ýø€ýÀ@ý@Àù@ø€€€ü@úÀ@ô€@€ ûý€ü@ô€€ú@ôü@ý €Àó€þÀ €üÀó þñ€ø€÷€ €ÿûÀ€Àû@üÀ€ €Àÿ€þÀþÀùÀ€@ùó€@€öè€ÿ@@ÿý€þ€ÀÀ ÿÀñ€ñ€ €Àý€ €€@û@õ€ù€ú€ûÀ€þ@€ì€ó@ Àúó€û@ÿ@þÀù€@ €@ü€ûÀý€Àû@û@ÿ@À@ø€ö€ú@ €þÀûÀ÷€þ@ý@ý€ü@ÀþùÀýÀþ€ÿ€üÀü@ÿ Àøû@@@ÿùúÿÀ÷€ú@À €€ýý@@÷ö€û€€€þù€Àû€À@ý€@€û@@Àôù@@€ þ€ÿ@ü@ý@ú€÷€õ€ú€Àû€ûû€@ÀÀÿ€ö€€ @øÀüÀÀü@øù@ýÀûÀüÀÀ@ÿ@Àü€û÷€ùÀú€€ €@ú@À€€ýÀø€ýÀÀ@@Àû€€€ÀÿÀü@€Àü€€þõ€ÿ€ ò€ù@À€þ€ù@þ€ÀÿþþÿÀÀÿÀÀ€Àû€ù@ÿ@ü€ÿÀÿüÀ@ €€û@ø€û@ü€ýýÀ€ÀÀúÀøÀ€Àÿ@þúÀ@ùÀÿ€@ €ô€ë€€û€÷€ €üÀ€€øÀýÿ@ÿÀü€úÀú€ö€À€þ@À@@ñ€ê€ó€ýÀ€ ôð€þ@Àò€ý€@€@ €þ€ñ€òýÀ€ý@ýÀÿ@ý€ÀüÀú@þ€ÿ€@€þÀÀþ@ý€ÿýùþÀ€@@ý€üü@þÀ@ûÀþþÀÿ@€Àþ€€@ÀÀü€þ@ÿÀû€ÿ€ÿÀ€ÿÀý€ýÀ@ €øó€ôû@ €÷€æ€€€÷€þÀ ö€ù€ø€ú@ñý@ÀÀ@ý€üÀúÀ@€@þÿ@ý@ €ùü@À€ùÀöÀÿ@þ€þÿýÀ€€ûÀûù€û@þÿ@€@þ@@ÀÀþ€À@ÿý€þ€€Àú€øÀüÀ€€ç€ë€€@ò€î€ €€Àò€ø€@€@üü€ûÀûÀ@úÀûÀ€ý@ø€ùÀ€þ@ý€ÿ€€@þ@ý€ýÀþ@€ ý€û@ÿÀ@ýýû€ýÀýýÀ@€û€ûÀ@û@@€@Àþ@ý€þ@ÿ@@€üÀûþ@ÿ€€þ@ÿÀ€€Àÿ€ÿÀÿÀü@@€ÿÀÿÀ€À@@þÀüÀÿ@þÀúÿÿ@ÿ@ý@Àû@ú€ýÀþ@ÿÀ@ü@@@ûøú€€@ÿúÿ@ÿ€ €ýü@û@ý@@þ€ûÀý€Àú@ùÀú€þÀ€ÿ€þÀþý@ü€ýÀþÀþ€À@ÀÀô€ô€@@€€Àý€€Àþ@ÿ@€ù€ü@ÿ€ÀþÀþ@@À÷€û€ÿ@@ý@ÿ€þ@ú@ûÀ€€ùø€ûÀü@€ þÀÿ@ùüÀùÀû@€€ÿÀÿ€Àû€þ€ÿ@À@ù@ûÀÿ@ÿ€þ€Àý€ü@ü€þ@û@ûþ€@Àû€ûÀÀÀúÀùü@@Àÿ€ÀÿúÀÀ€@@Àü@úÀù@û€ €@€ü€À@ú€ø÷úÀÿÀ€€ý€ÿ€@ÿ€û@û€ÿ@ÿÀü@ÿÀÿ€ÿ@€ÿÀüÀýþ€ÿ€þ@@þýÀ@€@ý@@ÿÀþÀÿÀ@þÀ@€úÀýü@þ€À@ÀûûÀüúÿ€Àÿ@ý@úÀ€ý@@þ€ÿÀþÀÀ@ÿÀ@ý€@ ùÀüÀþ€ýÀ€þ@ÿ@ýÀþ@ÿÀöõ€ø€€@ÿý@þÿÀ@þ€ÿ€@Àÿ€ù€€ý€ú@€€€ú€ÿ€ÿ÷€þÀ€@@À€ü@ú@ÿ€À€@üÀûÀüý€€ þùÀûÀÿ€@@ÿ€üÀùÀþ@@À€Àý€@@üü@ÿ@þû€ùÀþÀÀüú€øþÀüû€ú@€€Àÿÿ@€ý@þÀþÀýÀþÀ@ú€ÿ@ÿÀ€ÿ@@Àú€@@øÀú@þý€À÷€ô€ø€ €÷€óù€ÀþÀù@þ@þ@ú€üÀÿ@û€ûÀü@@ÀÀ@û€þ€€@ÀÿÀ@ €ÀÀö€ð€õ€ € €ýõ€ € €û@öûþ€ €þ@÷€þÿ€ýÀý€Àü€ùöø€þ€@ €ÀþÀ@À€ü@ú@ÿ€þÀþ€À@€@ÿô€î€þ €@þþÀÿø€ö€ €óùþÀ € @üù÷€ù€üÀ@€þÀ €@ÿÿ€ÿú@ü@@ÿ€ÀþÀ@Àü÷@ýü€ÀøøýÀ@ÀûÀü€ÿÀý€üü@ý@À@øÀùÿÀþ@ýý@@@ÀÿÀ@@ÿÀ@ÀþÀþ@€@þ@€@ö€øý@€ ü€ï€üÀ ö€ñþÀ€õô€À@ûÀø€ú€ÿ€ÀÀ€@ûÀ@@÷€÷ûýÿ@ Àû€ûÀý€@ÿû@@ýÀû€ÿÀ€@ý@ü€ÀÀ€ý@ÿ€ÿÀ€ûÀýü@þ€À@@þü@ø€ú@ÿ€€@ÿÿý€ÿ@À€ÿ€üÀýÀÿ@ý@ÀÀ@úÀõ€À€€üÀü€@÷€ý€€úþ@@ûüÀþû€@ €û@þÀýÀÀ@ÿ@ÀÿÀþ@@@€@þÀÀþÀý€ýü€ü€ÿ€ýú@ý€€€üÀùÀ€@øÀþ€@À€û@þÀö€ú@À @@þüÀ@€@Àû@ü@þ@üÀûýÀÀ€@€@À@@û@ûÀþ€ÿ€ÿ€€€þ@úüÀûÀÿ@€ý÷òø€€€€î€ã€ë€ €€ý@÷€øÀþÀ €@ùü€@@€ÿÀù€ù€ý€€@ÿ€þ@ü@þ@@€Àþ@þúû@ÀÀù€ÿ@@€@À €üÀöøÿ@ü€û@ýû@@€@@ûÀýÀþ@@Àü€ÿÀ@þ@ü€üÀüü€üÿþ@@@ÿ@@ÿÀþÀ€@€÷€÷@€ €øö€ù€€ÿþÀ@ýÀÀ @€ô€æ€æ€ €€€ð€å€ï€€€Àï€óþþÀô€ûÀÀ€ €ý€í€é€ý@€€€€úÀ €€€ö€ö€Àþ@ø€úòû@ù€ü@ú€@ù€ÿÀúÀûÿÀ€À€ÿý@üÀý@€úø€üÀ@ý€€þÀýÀþ@@þþÀþüü€@@@ü@ùù@ü@€€ Àý@þÿ@€ýÀ@€@@€ÿ@ú€€úò€÷ € þ@@@üÀýÀþÀ€@ú@ûþ@Àþ€@À øÀõú€@ þ€üÀ@ûÀù€þ€ÿÀ€üù@ùÀÀÀ@À€ýÀþ@@ý@÷€€@€ÿÀ@þÿÀÀ€@@€Àü@À@ÿ@üüÀþ€ÿÀÀþ€ü@@@ü€€À€€ñì€ð€@@ÀüÀú€ú@ùýÀ÷@€ý@€@€Àöù €þ@ þ€ú@þÀþ€À€ €Àç€á€é€€€€ûÀý€üÀ € €ü€ò€À@€õð€ó€À € @@@€þ@óôüÀÀ@@þ@ûú€û@û€þÀ@@@þÀý€ÿ@Àõöý€û€ì€û@€€ÿî€Àüð€þÀ €€ð€ó€@ú@öúý€ù€ÿÀÀÿ@ùÀÿÀ@€€€ý@þ€ÿ€ð€õÀ €@@À€@ÿ@ø€÷û€ý€ý@þý@@üÀþ@ý€Àþ€üüÿÀþ€€€@Àû@€ÀÀÿÿýÀü€ý €€ø€ýÀÿ@ùÀù€÷€ü@ ú€ú@€€ÿ€ü€ÿ€÷€úÀÀøÿ@ýÀþÀ€þÀþÀûÀ÷€ü€@ü€ú€ýÀ@À€€ @ù@ùÀû@€@ÀÀÿ€Àý€üý@þ@ú€úýÀþ€@@ÿ€ÿÀ@@@€û€ü@€ý€ýÀ@ÿÀ €û€ï€î€þ€€€ÿ€öþÀ@ÿÀÿÀûÀÿ@€ýòí€õ€À€@ûÀùÀ€ü@À@ú@ý@ü€úÀÀ ÀüÀú€ý€ÿ@ÀÀ@€ÿ@ÿ@ú€ûÿ@@û@øúÀÿ€ÀþÀÀ@ÿ@øÀú€ý@ €À@€ú@ò€ù€ÿÀþ€ý€@ €€ûòòü@€ü€öû@ €û@ùÀÀÀùÀúÀü€ùÀú€ €ÀÿÀú@õ@€þ€€€û@ö€ú@€@ô€€€@ý€øÀø€ù€ûÀýÀ€ÿ€þ@ €ý€õ€À€ø€ø€ü@€ÿ€üÀû@û€€Àú@øÀü@þ€ûÀü€€@ü€û@À€ý€ý€ÿ@ü@@ÿ€ùúÿ€€€ÿ€ý€ÿÀÿ€úü@@€ÿ@þýÀ@ýý@þù€ÿ@€ €€ü€€ÀööýÀ €À@€ÿ€€@ú€ñ€úÀ€ÀýÀõ@À€û@üÀ@ €üù€úÀý€€€ý€ü€ €õ€ö÷@€Àÿþ€þÀü@ùÀúÀÀ€þ@þ@@@ö€÷û€ÿ@ýÀÀ €À€@€ýð€ï€@ € þ@ü@ñô€€ è€à€ €ûþÀ@ÿ@€ ú@÷€úÀÀþ@ù€û€€@À@@@ù€÷þ@À €@÷€€ýÀú@ü€ùÀóû€€ @@@üÀü€üÀ€ÿÀúÀü@À@@þ€ú€@€ÀüúþÀÀ@À@þÀûÀø€@ÿÀûüÀÀÿ@ÿ€€@ü€€ý€þúÀÀ€ û@ó€ð€ €€í€ò€@ú@øÀ@ €@ñ€ù€€À€Àýüú@þÀÀ€€@ÿ€üÀÿÀÿ@ù€øÀ@Àÿ€Àÿ@ü€øÀ÷@@þÀþý@ýÀþ@þÀÀý@@À€€€ÿ€ù@÷ö€ú€ýÀÀ€€ùú@þ€ýÀõ€÷þ@@€þý€@ €€ûò€ô€ €ûý€@ûÀö€ü@€ @ø€ôþ€€ÿ@€À@ó€÷€ù€€€@ø€÷€@Àÿ€ü€€ÿÀþõû€€þ€ €€ì€ñ€€€øÀî€â€ô€€÷í€ýÀ€ý€ö€€€í€ùÀ@€ÿ€þ@ñ€õ€øÀ÷€€€€öüÀ€û@ù@€ €øõ€ÿÀû€ý €Àÿ@ûÀøÀ€ €€÷öÀý@ûÀ@@ô€òù@@€þÀ€þÀ€øÀù@ÀÀ@ÀûÀô€üÀ€þ€þ€þü€øöúÀ€ €€@û@þÀÿÀñ€ö€ÿ€€ €õ€ñ€ô@ €÷ô@@ý€òó€€üÀé€ê€ €ý@ûþÀú€õ€ÿ@€€ùÀúÀ@û@ùú@€ õ€ñ€ü@ÿ€€ü€üÀý€ü€@@€ú€ýþÀúÀô€ÀÀû@ý@@@À÷€ù€ÿÀ@ÀÿÀ€ÿþ€€üÀøÀú€þ€Àþ@ùÀúÀ€Àÿ@ûü€ý@À@ù@û€Àû€üÀþ€ü€ÀÀü€ÀÀÿøú@@ÿÀÿ€þ€ýüÀ@@€@ÿÀÿ@€@€ýÀþÀýÀý@ú@ùÀý€ý@@@À€ùÀûú@ÿ€€@õô€ € €ü@÷€ø€û€@þ€€@€ó€õÀÿÀÀ@ÿ€þüÀú@ÿÀ@ €÷øýÀ€€ý@øø€û@ý€€€ý@ù@û€üÀý€ÿÀû€þÀþ@ÿ@ÀúÀøü@ÀÀ€À€Àþ@üÀýþÀü@ý@@@@€ü@û€ø€@@þ€û@€€ú@û@ÀÀûÀó€ÿ€ þÀù@@ €øÿ÷ú€€À€Àÿ@þ@þÀ@Àú€@ €À€ €ô€î€ö €öî€õ€ €Àúï€ø@€ @öì€øöó€@À€€ö€ýÀýÀ÷€ü@ ûü€@ÿ€ü€ÀÀ€@ý@ù€€ÿÀþùÿ€@ÿ@ú€ø€@ýú€Àý€ùÀ€€ýÀ@ÿ€ý€ü€€à€à€ì€ €€úí€@€€û@óð€þ@ÀýÀ €û€ôô €ù€û@Àÿ@ø€ÿÀ@€úÀûþ@€@@ÀÀù@ô€ø€€€ý€€ÀøÀùÀÀ@ÀùÀû@ €þÀù€÷üÀþ@üû€€ øÀøÀý@@ÀûûÀÀýÀû€ýÀù€ù@ý@ÀÀ€ý@üÀÿ@ÿÀÿþú@@ @ü€ùÀû@ý€ÿÀý€ÿ@@@Àþ@€@þ@þÀ €ø€óø€À€€@þÀ€Àý€þ@€ü€ý@üÀ€€@@þÀø€øü€ € €€üÀÀ€ýÀòö@Àý€ý@ ÀüÀ€ÿ€úÀõ€ôýÀ€ Àü€ù€€ÿ€øøÀÀ@Àô€óö €õ€ùÀ@À@€þ€øÀù€€ €üÀù€÷ùÀÿ@@€€ÿüÀÿ@üÀùÀþ€€ÿ€ÿ@ÿÀÿ€@ý€ý@@ÿÀüÀ@@üÀþ€@€Àüù@ÀýÀÿ€ÿ€÷ûÿ€€ÿþ€þÀÿ@@ÿþÀ@€Àý@ÀÿÀþ€À€Àý@û@ÿÀÿþÀÿÀ@þ@ü€ýÀÿ€€þÀÿü@€ÿû€ú@ÀÀ@ÀÀü€û@ÿ€ÀÀýÀ€ÿý@ÿ€€þ€ùÀüÀ€ü@û@À€€úúþ€À€ÿÀøùý@ÿøÀýÀ@ÿ€@À€ÀÿÀü€üý€þþ€À€÷û€ÀÀ@@ü@ÿÀ@Àÿ@ÿÿ€û€üÀ€ ú€÷€ûÀÿÀÿÀú@õ€ùýÀ€€Àÿ€ú@ù€@Àþ@ÿ@ý@üÀúÀ@@À€€ÿ@÷€õýÿ€€€€@ý@õ€øÀý@@@@€øÀù€ý@€À@ý€þ€À€€ø€úÿ€ÿ@þ@@€@þÀÀÀÿ€@ûú€÷€úÀ@þùÀú@À€€ÿý@ýû@ö€€ÀÿÀÿ@ÿÀ@@þ@ýÀÀ€ÀüÀýü€€@€û@€€ÀýùÀ€øöù@ú@û@þÀ@ÿ@@€ýÀú@ú@üýÀ€€ €€üü€€@@ÿÿ@ûý@ý€þ@ÿÀþ€ýÀ€üÀùÀÀ@ÿ@ýÀû€øÀÀÀ@þû@ÿ@ÿ€ÿÿÀÀÀÀû€û€ ø€€ùþ€üÀà€á€÷€ýÀ € €þ€û€@øü@@û@ú@þ@ú@ûÿ€À€þ€Àÿ€À €€û@ýú@üü@@€À@ÿ@û€ü@@@ùÀþ@ÿ€À€@ûÀû€€ÿ@ûþÿ€ÿ@ü@ÿ€@@ý€ýÿ€ÿ€ÿÿ@ÿýÀ@ù@÷€€€€ÿ€ý@€Àüÿ€@ÿÀú€üþ€ü€û@ü€@þ@€ÀþÀýÀý@€þÀùü€@€þÀ ýüÿ€úÀó@@@@€@ü@ùÀþ@û€ü@€üÀ€€ÀýúÀÀÀÀ€ÿþ@€üÀÀ@€@@÷ùÿÀ@ýÀú@@ü€úÀú@ý@€€ÿ€üþÀ@þÀ€À@þÀý@€@úýÀþÀ€ÿÀÿ@þÀýÀþ€€üúÀúÀü€üÀ@Àÿ€ÿÀû€@À€ò€í€ó€ €€ €ë€€€ øà€ä€þÀ€ €ò€û@€ €üÀú@üÀøÀõ€ú@ € Àø€÷÷@€€ €ÀÀùú@ý@Àþþ@ÀÀùü€@ü€@Àü÷€ø€@ÿ€ý@@@À@€@ý@ûÀþÀ €ÿôë€õ€€Àè€ó€ €ÿ€ï€ë€@€@û@û@ýÿÀ€@û@öôüÀ € €@€€ÿý@÷ûþ€ý€€÷ø€€ý@õü@ ü@ûÀÿ@û€ú€ÿ€€ýÀøÀõø€À €÷ö€€ ü@øÀ@ÿ€@ýøþ€€ý@ÿ@ÿþ@ýÀÿÀÿýÀ€ü@þ€@þÀüÀùÀü@€@€€ùú@@@ÀûÀûÿû€ü€ý€þ€ýÀ€ €ú€ý€þø€þÀþùÀþ@ýý@ü€ €@øÀö€þ@@€þ@ú@û@þ€Àÿ@@€úøö€ÿ€€û@úø€€@þÀ@ €þÀüÀ@€þøÀü@@@ýü€þ@ý€üÀýÀÿÀý@ €ôñ€ø€ý€@@ü€ö€ì€ò€€ €À@Àû€ý@€ýÀô€ €€÷ñ€ñ€û@€€ ù€ô€þ€€üÀü@ý@@€ü@ü@ý€þ€@@÷ûÀÿ@€þ€ó€ €÷ü€ÀûÀüÀù÷€€@ýÀû@üÀþÀÿ@þ€ü@üÀþúþÀ€€þ@ÀÀü€û@@Àþ€üÀû@üÀþÀÀ€þ@þ€þÿÀ €€øÀó€÷ÀÀ€ü€À@øÀù@€þÀúûþ@À@€€ü@üÀÿÀÿ@ø€ûÀÀü@þ@û@ýþ€ÿ@ü€ÀÀÀÀ€ÿÀûü@@@þ€ÿ@ü@üûÀ€@@û€ø€@ûû€ý@€ÿ€ú€À@øøÀ€ÀÿÀ€ÿÀ€õ€ýÀûÀÿ€@ü@ú@ÿ€ý@ýÀû@ÿ@€ùÀúÀü€€@@ÿ€þÀ€€€ÿ€€þÀþ@þ@ü€ÿ€À€ý@û@ÿ€€ÿ€ú@üÀÿÀþ€@€@@À€ÿ@üÀþ€@ÿÀýÀ@€Àþ€ÿ@þÀþþ@ÿþ€ý@ü@À€Àÿ@û€ý@ý€ÿÀÀÿÀøú@€ý@ÿ€þ@ý@ÿÀý€ü€Àþÿ€ü€€ÀÀþ@ €ú€öÀÿ@ÿÀÀü@ùÀûÀþ@À€Àü€ùÀý€@ÿ@ý@þ€üÀü@ýÀ€þ€€€@@ÿ€ý€€@ÿÀûÀÿ€@@ÿÀý@û@úÀ@€þ€ú€ýÀ€ÿý€@@€€û@ù€úû@@€þ€€ýÀþÀûÀùÀ@ÿÀ@ÿ€ ü€úý@ÿÀûþÀÀýÀ@€øÿ€@úÿ@€ýÀú€ÿÀüùýÿ@ÿ€@ÀüÀÀÀ@ýÀÀÀ@@ü€ûÀý€þ€ÿ@ÿ€€€€ÿÀûþÿ€ý€€ý€÷€ý@ÀÀù@ù€û@ù@€€Àÿ€ýþ€À€€þÿÀþüý@ýÀ@À€Àû€ö€ €øôú€À€@ø€ó€ø€À€þúÀ@û€÷ö€ÿ€ÿ€@ü@ €üÀúÀüý€ûÀûÀ@@@@€÷€ú@û€þ@ÿ@ýÀ@@€@€þÀÿÿýÿÀø€øü€ÿÀ€Àÿ€@Àþ€ÀÀûö€ÀÀ@€ €€ú€ê€æ€À€€þÀþû€ýÀ@€ÿ€ù€÷€€õù@€ € €üÀç€ô€ ú@ï€ €€€õï€ô€À€úÀü€ € ï€ç€@ €þÿ€ÿ€þ€€÷úÀüÀúÀø€À €÷øÀû€€þûÀ€ýÀûÀ÷ @@ÿÀýûÀþ€úø@Àÿ@€ÿû€üÀ€ €ýþ@þÀü€ü€ýÿ€@€ÿ€ý÷€ûÀ@ÀÀÿü@ü€€€€ÿÀ€€üÀûÀûÀüþ@€@@ÀÀüÀýý€€ÿ€þõúÀ@ €úÀ€ÿ@ €Àë€÷€€øÀôÀ€€þ€@@Àü@ø€ûÀÿ€ü€À€€€@@@€@úû€ý€ü@ý@ÿ@ýÀü@@€@€ý@û@ €ÿë€ï€@€À€ €ø€ñ€ò€ï€ÿ€ù@À€@ ÿï€ó€€€î€ú€ €Àý€Àý€üó€óÀ €þýÀûÀùÀþ€ÿ@€€@ÿ@óõû € €@ûÀ€€Àÿ@ùÿ€þ€Àôõü@üñ€ýÀ €€ü@€ÿ€÷€õ€ùÀ@ €úÀýÀ@ý@ú€þÀ@ÿ€€@ù€õ€ûÀü€€@þÿÀ@Àù÷€€€€ø€üÀýù@ûÀ€ÀÿÀúú€ýþÀû€ýÿ€ý€üÀþÀýÀú@þ€ÿÀÀÿþÀÿ@€þ€ýÀüÀý€þ@ÿ€€€@ÿ€û@þÀÀ@€ÿ@ýüÀý€ÿÀþ@ÿ@À€ýÀù€ü@þ€ú@ûÀ€ÀüÀÀ@À€€ÀÀýûÀüÀþ€ü@ý€À@@þÀÀ@€Àý€ü@û€û@þ€€€@@ü€÷€ü€€@ÀÀ@ú€ûÀÿ€ÿþÀýþ€€€@@ûö€ø€À@þÀÿ€ýÀýÀüÀü€ûÀÀ@@€ý@û@üÀü€üÀÀ€@þ@þüû@û€þ@€À@þ€ý€þ€À@@û€õ€ü@€@ýÀ€üÿÀÀ@ûÀû@þÀÿ€€@@ÿ@üü@Àþ@úÿÀÀ@ùÀñ€î€@ € þöý€@€Àú@øú@ÀÀú÷€û€þÀÿ€ÿÀ€ø€ú@þ@ú@ù€ÿÀ €@ûú€ÀÀý@ýÿ@ûÀøÀ€@üÀÿ@ÿ@ü@€€@üÀý@ï€ï€€úÀùÀ €À@€€òñüÀüõ€ù€û€úÀ@€ ù€î€€€øÀ û@ñ€ö€€ýþ úñ€÷ €þó€ù@ý@ù€ÿ€À€ÀÀý@ùÀú€€À@ÿ@þ@ÿÀ@Àþ@ÿ@Àÿû@ûÀ@@ûòý@@ûÀúÀ€€@ÀÿÀÿ@@ÀÀÿÀþ€ý@ý€À€üÀÿ@@ÿ@ûÀýÀÀûÀû€@@þó€À€ó€ó€€@@ÿÀý@À€ýÀü€ûÀ÷€€@@@üû@ý@þûüÀ@þ@ûÀÀ€@ÿ@ûúÿÿ€ýÀÿ€À@€ýþÀÀ@@þ@ýÿÿ€@ÿ€€ÿ€ö€€€ý€ÀÀþþ€øýÿÀ@üÀÀ€€@úÀû€Àý€ûÀ€@ý@@ýú@ûÀþÀþÿ€þÀýÀ@@þÀþ€ý€ÿ€þ@þ€€û€ü€€ øý€Àüô÷€€À@ÿÀûÿ€ü@ýÀÿÀþ€ÿþ@ûÀý@ÿ@þÀý@ù€ü@üÀÀ€@@Àý@€@ @ùòô€úÀ € €Àýü@€ýÀûÀþ@ûùÀþÀýÀÿ@@Àý€ùÀ€þ€÷€ú€À @ý€ý@€ÀÀû€þ@@ÀþûÀü@@þø€÷ú@ÿ€À@ÿ€ýÀùÀü€€@ýÀÿ@@€€€ÿý€ýü€ü@Àÿ@€€ÀÿÀÿ€ÿ€ý@ù€û€ÿûÀû€þ€@ûÀø€€þ€ý€÷€€€ó€ì€ú û@À€ý€ýÀýÀ€ €û€ü@é€ì€ €ûä€ô€€€ð€ï€ü÷ý@€þ@ý@€÷€ñ€Àù@ ÷€÷€€€ÀÀ@@ÿ€€ÿ€€ýûÀ€ÀÀü@ùÀúÀ@ýÀÀ€üÀ÷ùÀüÀþ€€ÿ@ý€þ@ÀÀ@@ÀÿÀþý@ÿ@ÀÀ@@€ÿ€ý€ý€þ€þ@þÀÀÀýÀÿÀþþþ€ý@ùÀþÀÀüÀû@þýÀÀ€À@ø€ùþ@€@À€ÿÀ@€û€÷€þÀÀ€Àüû@þÀÿÿÀýú€þ€ý@þ@þýÀÀÀ€þÀ€€@€€ýÀþÀþý€À€óó€ÿÀ € ÀúÀÿÀ€ÿ€þû€€@€û@ú€ÿ€þ@@ÿ@ü€Àûù@ü€ €@ý@üÀý€€@þ€ú€ÿ@Àý€ü €ÿÀÀÿÀøÀû€ýÀû÷€€ÿ@ÿÀÿ@ü€ÀÀø€úÿ@@€þ@úÀ@@€ü@ù@@€ü@ú€ú@€€€€ûü@ÿ@€ÀþÀûÀùÀû@€€@ý€ÿ@þ€üÀþ€€ý€þ€ýÀüÀ@üÀÿ@À@þ@ÿÀÀ@@€üù@úù@ú€ €ý€€Àý€þ€@ÿÀÿ@ýÀ@Àþþ@ýÀü€üÀþ€€€þ@ù€ù€@€ý€€€ÿüý€@@ý@ü@ûÀ@€Àý€ú€þ€Àû€üÀÀ@ÿÀÿ€þ€ý@ýÀÿÿ€û€üþ@€@€ÀÀÿûÀü€ÿÀ@€€@þþþÀ€À€ÿ€üû€ü€ýÀ@þý€€@€û€@À€@ú€ü@€@ú€û€À€€ÿú@û€@ÀûÀÀ@ó€ø€@ €þüÀý€ø€ø€ÿ@ü@€€û@û@ Àþ@ü@ü@ÿ€ÿ€ÿ€@€@ùý@û@ÿ@€ùü€úÀ @€û€ùý@ý€ú@ü@€€Àþ€ÿÀ@þûÀýÀ€À€ø€þÀ@€û€û€ûÀ€Àú€ýÀýñ@ö@Àñ€ç€ù@ € €÷€ú€ÿ@þ@ø€öú@€ À€@ýÿ€þ@ý€À€@À@ÀüÀü€þÀ@ÿÀûÀøÀû@@@@@À€ÿÀûÀýÀþÀýÀ@ÀÀ@Àþ@ÿ€û€ûÀÿ€ú@ü@À€@üüÀþý@ÿ€€€À€ü€ý@þþ@ýÀþ@ú€€€Àø€ê€á€€€€ì€ð€€€þùÀý€@€€ý€÷õ€þ@@@À@À€À@ý€þÿ€€ü€@€€þø€øøÀû@ÀÿÀþÀÿ€ÿ@ù@ þ@ö€ÿÀ€û@ý@À€@ü€@Àöú@ÀÀ@@÷€øû@@€ü€ý@Àþ€þ@ÿÿ@û@ú@ €À÷€ö€üÀý@ÿ€€û@ü€ÿ@À@ýÀÀ@þÿ€€Àùú€€ÿÀÿ@ý@@ÿýÀþÀþû€ý@ÿÀ€€€ûü@€À@@þýÀÀ@@ü€ýÀÿ@ÿ@€ÿÀúö€ €€À@û@€@þõñ €øÀüÀ€ÿ@ü€ @ÿÿÀÿÀþÀÿ€Àÿ@÷ø€þ€@€ú@ø € €@ö€û@ÿ€À@ÿÀÿÀÿ€þ@ÿÀýÀý@ýüÀ@üý€À€ûÀýÀþÀ@€@úôö @@ýÀý@ü@ýÀÀþ€ÿ@€€€÷€ú€þÀ@€€þýÀÿÀû@ûÀýÀ@@€þÀ@€Àû€üÀÿ€ýý@@@ÀýÀý€À@þÀÿÀÿ@ÿÀÀ@Àþù€ü€ÿ€@þÿÀþÀÀþ@þ@ÿÀþ@þÀ€@@ÿ€ý€ý€þÀ@@üÀÿÿ@€ÀÿÿÀÿ@À@þ€ÿ@ÿÀ@ÿ@þÀþÀÿÀùÀþ@€ø€ó€ù€À ù€ø€Àÿ@€@Àý€ýÀ€ÿ€ø÷€ý€ €€ù€ô€õ€ õ€ð€ò €€ë€ù@ €@ÀÀû@í€ÿ€ €ú@ÿ€øÀøþÀþÿÀþÀþÀþÀûÀüÀú@û€ý€ÿÀÿ@ € €ûÀþÀ€øÀö€ûÀ@À€À€ý@ùÀü@@@þ€þÀ@ÀýÀ€ü@ü€û@þ@Àþÿ@ù€øÀý@À€@@ÿ@þÀÿ€À@üÀûû€þÀþ@À ú@õ€øþ €€üÀ@úú€€üò€÷€ÿ@€ÿ@û€@ €@ €@þÀóøû € €õùÀþÀ@@€óþÀ €ü@ò€÷ÿ@ú€ö€@ €û€À€ÀÀþ@ø€@ø€üÀ€Àü€ø€ü€üÀú€ùú€@€üø€@€ÿÀüÀû€üÀ € €€ÿ€ÿ€þ@ýÀùÀúú@À€ûÀþÀýø€ü@ÀÀ€ÿÀýÀÿ@€€ÿ@@€ÀÀ@ý@úÀþÀÿÀ@€@þ€ý€þÿü€þþ€þ@ü€û€€ÿÀ@@@ÀýÀ€þ€üÀþû@€@ý€û€þÀ ÷ûÀþ€ü@ÿ€ý€Àû@úÀý@ÿü€À@ù€òö € ó€ù@ @ñ€ó€€€ÀþñõÿÀþÀ€üÀú€þý@û@ÿ€À@Àÿ€ýÀ@€ÿ€þ@ÀýÀýÀ€€þÀþÀýÀûÀùÀÿ@ÿ@üÀüÀÿÀ@€€À€þ@ùþ@€þ€ÿ€@€€Àÿ€ý€ûúÀÀ€€ÿü€@øÀýû€ö€÷û€€€þ@ÿÀÀÀýÀýøù€€€ó€ñ÷€€€@æ€ù@€ ÷€ô€€ÿ@÷€Àþ@ø€ € €ú€÷€€úÀû@€€þ€û€@ýÀø€öû@ ûü€õ€ÀÀ@€@ÀÀü€ý@€€Àý€÷€ü@@€ÀÀÿ€€@Àþ€ûøÀüÀ@ÿÀ@@@ý€ø€üÀ€€@€þÀýÀþ@ü@@þú€ü€€€@€À@ý@€€ýö€ùÀ€úÀø@€Àþ@øøÀÿ€ÀÀýÀÿ@€ÿ€À€€ÿ@ÿÀýÀúÀþ@@À@€À@€@€üÀù@ü€€ÀÀý@Àþ€ø€ûÿÀ@ €Àò€ùÀÀ€ÀýÀþ€øü€ÀÀû@ý€ý€ÿ€@ùÀû€þÀÀÀ û€øþÀ@@Àÿ@÷ù@ÿ@€@€€ù@÷ô €€þý@@@@ù€ù€þÀ@ÿ€úÀþ€€ýýÀ@Àû€ú@ý@@@€ÿÀ€@ú€ÿ€À €ûôø€ÿÀý@€ Àü@ûÀý@@@Àþ€ùÀüüÀ@þ@ÿÀ@€÷€ý€€€ÿÀú€ûÀÿ@À@üÀù€üÿÀþ@þÀÀÀ@ÿÀ€Àý€ü@ûÀû€€þ€ü@ü€@@üøü€ÿ€ÀÀ€þ@ÀÿÀüÀ€Àý€þÀÀ@Àÿ@ÿ@ý@ú@À@ý€€ú@ý€@þÀû@ý@þ@ý€þÀÿÀÀ€Àñ€í€ï€ €€@ú@ùÀ€@@þü€û€ûÀ@ €ê€ø€ÿÀ@@þÿÀ@€À@ÿ€ô€÷ÿ€üø€ú€ÿ@@ÿ€@üÀûÀý@€À€þ€€ûõÿÀ€€ýÀöùÀ€€ÿ@úÀù€û@@þúÿ@ÿ€ù@À@€Àþ@@@ù€ú€ÿ@€€ü@÷€û€ €ù@õ € €@û€ÿ€ûÀþÀúÀ÷ù€ÿ€€À€ûüÿ€ÿ€@ÀþÀ€@û€@ÀÀ€ÿ€@ýù@ú@ÿ@ýÀ€@€@Àü@ù@ö€À€ýÀþ@@@ý€€þ€Àû÷€ÀÀûÀûÀþ@ý€ÿ@@ÿÀ€ü€ý€@ÿö€÷€ü@ü €ÀÀ €@öð€þÀ€@ýÿ@ý€ø€ù€€@öÿ€ Àü@÷€ùÀý@€€ôü€@û@ú@ýÀøÀ÷€€@ÿÀÿ€þÀþÀÿ€þ€€þ€À€æ€€€€€ýà€ã€€€€óùÀ € ü€ñ€€ö€÷€úÀú@€ þ€ü€ÿýÀö€óÀ €€ €ÿò€ö€ÿÀÀÿùú€þ€ÿûÀø€ú€€ÀúÀû€üÀÀ€@ü@ø€ùÀ@€€@À€ù@û€ÿ@üÀù@û€þ@€€ûÀúÀÿ€€@þ@ö€û@üÀ@€þÀÀ@ÿ€ùÀ÷€üÀ@@€@À@ýÀÿÀþ@ý€€€ý@øÀù€€À@ÿÀûþ€€À@ÀþÀþÀý@ý€@þ@@€Àþö÷þ@@€þ@þÀý@@À@Àþ€þ€þÀ@@Àÿ€@@ÿý@ýÀÿ@€úÀ€@ÀÀ@ÀÀûÀýþÀü@üý@ÀÀ€€@€þÀüú€€ÿÀ@€@@€@ÿÀ@@þ€ùù€þ@þ@ûÀÀ@@€üÀü€ûÀû€û@ÿ €Àÿ€€ùöûÀ@€ÿ€ÀÀ@€ûùÀúÀÿ€ÀÀüÀø€ù€À@@À@@ýÀÿ€Àý@ü@üÀ€Àø€ó€€ùî€ð€ þ€ø€€ø€ù@À÷û@ú@ý@€@ÀÿÀÿÀ€ÿ@ûÿ@€ þõøÀ€ ÀûüÀÀøúÀ€þ@øÀøÿÀ€ýÿÀ@þÀÀ@@€ÿÀÿÀ€@ÿ€þÀ@@€À€ý€ü@þ€À@@À@þû@ÿ@@ÀþÀ@€ýÀû€øÀû@þÀÿþ@ÿ€@Àû€ø€üþ€ýÀ@ÀÀÿÿþÀÀ@ÿ@ý€ü@þ@@€üüÀ÷€ù€ øÀð€ø€ Àøóõ€@ €þø€úÀÀ Àõ€ø€€€ €è€ê€ýÀô€ô€Àù€üÀ ø€À÷÷øú@À@@û€û€@ÿÿÀ€€ ü@þ@ü€û@ù€ÿ@€€ýÀûÀÀÀû€û@ÿ€@@ü@üýÀý@ÿÀþ€ÿ@ÿÀÀþÀþ@ÿ@À€þ@ûýÿ€ÿÀÀ@@ÿ@ÿ@üùûþÀ@ÀþúÀù€ûÀ@üÀýýÀÀ€À€@Àö€ô€ö€ùÀÀ€ €€û@ü@€€ ÿÀó÷ý@ü€Àô€@€ö€è€æ€€€€ç€ë€ü€€€ö€€ € €î€ë€ø€€üø€@€õ÷€ ü÷û€ÿÀÀÀþû€À€@ýüÀý@@þ@€ þ€þü€ü€ü€ýÀþ€ÿ@úÀø€@ÿ€ÿ€€€è€à€à€€€€õ€øü@À€ö€øÿ@üý@€€þÀþ€ø€ú€ú€À€ ú@í€óÿ@À€ý@üÀû@€ €ÿÀýÀû€üÀ€@@ûÀú€ÀÀþ€À€Àþü€ÿ@ÿÀ€ÿ€ÿý€ý@€Àÿ@ü@þÀ€€€Àþ@ÿ€€ÀþÀû@ù@ûý€ÀÿÀ@ÿ€þûÀüþ€€ÀÀ€ÿÿÀÀ€ÿ@ÿÀ@€þÀüÀýû@üý@€€üÀ Àü€øÀý@€ @þýý@ÿÿ€þý@À@ÿ@þÀþ@ÿþýÀÿ@@@ÀüÀÿÀÀÿÀ@@üÀü@þ@ü@ýü@þü@@@@ý€ÿÀüû@ýÀ€þ@þ@ÿ@@üÀù@üÀ ý@ä€ç€@€ì€€€@ôøÀý@ø€õñ€ùÀ€ øÀú€øü€@€ÀüÀÿ€@À€û€þÀ€ÿ€þ@ù€ô÷€À€€ôøÀ@ü€ü€ý€À€ÿ@þ€À@@€ý@ü€À@þþ€À@ýúÀü@øÀø€Àü@ø€€€ý@úùÀ@@ÿ€þ€þ@üýÀ€Àÿ@þþÀ€ý€ýÀ@ÿú€þ€ûÀ€À€ù€ì€ã€ü@€€öç€@€ ÷ò€ù@€À@ûÀþÿÀ€À€€@€Àü@€€ÿ€ÿ€ÿÀÀ€@€ÿÀþ@ý@ÿÿ€ý€ûÀýÀÀ@þÿ€À€þ€@@þ@þÀÿ€€€€€Àý€ý€ÀÀ€@þ@þ@ÿþ@À@ÀüÀø€ù@ þùÿþ€ÀÀü@ø€ùÀÀ@û€ÿÀÿ@ý@üþÀþÀ€@ñ€ø€À€ý€ü@€ûÀý@€üÀþÀ€€ÀÀÀÿ@ÿý@ÿ€À@þ@@Àÿ@üÀÿ@@@ÀÿÀýþ@€ýÿÀÀ€÷€øþ€ €@õ€ÿ€ €þÀú€þ€û@øÀüý€ý€úú€@þ@@þ@þÀþÀÿ€ü€þ@ÀÀýÀýý@€€@€ÿÀþ@ý@€ÿÀ@€À€@ÿ€@€@û€û@€€ÿ@ÿ@ý@ÿýÀýþÀþüÀ€€ÿþ@þýÀý€ÿ€ÿ€þÀ@@€ÿÀÿÀýþ@@@ÿÀ@ýþÀÀ@@úø€ýÀý@ý€þ@@û@ù€ÿ@ÿ€þÀþÀþ@ý€À@@À€ý@ýý€ÿ€À@ÿÿÀý€@þÀý€þ@ÿ@þ@€@þÀÿ€@@À€û€þÀÀý€ñ€ €ýô€ø €@ýýýÀþ€ÀÀÿÀüÀ@€€@þÀû€ýÀ€@ÿýý@ÿ€ÿ@@ÿÀýÀþ@Àý@ý€ÿ€ûÀù@ý€À@ÿ€ýÀÿ@ÿý@ü@þ@À€@À€þ@ûÀúÀ€€À€ÀÿÀÿÿÿÀÀ@@€ÿüÀþþÀþÀ€€€€þ€ýÀûÀÿ@ýûÿÀ€ÿ@þ@@ÿ@€À€þ€@Àþ@üÀþ€@€@ÿÿÀþ€Àþ€ÿ€@@@ü@üúÀÀ€€ÿÀû@ü€þÀ€€ÿ@þ€þ€ýý€ý@ý€ü€@€€@ÿÀÿÿ@û€þ€€ÀÀ@ÿý€ýÀÿ@þ€€ÿÀþÀ€þÀýü@ûÀþ@€@ÿ@ÿÀÿ€ÿ@ÿÀÿ@þÀ€€@@€þ@ÿ@ü€ú€€þ@À€ÿüÀþ€À€ÿþý€þ@Àý@ü€ÿ€€ÿüûÀÀÿÀÿ@ÿ@€À€ûÀü@À@€þ€ûÀø€þ€€@ø€øÿ€Àý€ûÿ@€ûý@ú@øÀü@@€€ü@@@À€ûù@õ€€ òü€ €ü@ûþ€ý@ü€öù€ÿ€ú€€üý@€€€@€þÀÀþÿ€Àþ@þ€ÿ€ÿ€þÀ€€€@þÀþ@þ@ÀÀ€€ÀÀýý@üÀý€ÿÀ€@€@ÿ€ýÀü@ýÀÿ€@ÀþÀþ@þ€€€ÀüüÀû€þÀÀÀÿ€þÿ€þ€ýÀÿÀÀüÀ@ÿ€À€ÿ€þÿ€þ@þ@ÿ€ÀþÀ€ÿ@þ€€ÿÀþ@ýÀþþú€ü@ÿ@ÿÀ@ÿÀÿ@þÀ@@ý€ý€ÿÀÀÀþô€ñ€@ € €ÿ€ÀÿÀ€ÿ@Àþ€ú€ûÀü@û@úÀþ€ÿ€ÀÀ€÷€øý@€@€@þ€ÿÀþÀý€ý@ûÀ@ÀÀÿ@ÿ€ÀüÀü@þþ€þÀÿ€€€€ö€óñ€À @û@ø@@üûÀÿÀÿ@Àÿ÷€öü@þÀ@€€@À@ÀÿÀÀÿþÀú€ú@ý@ø€ú@ÿÀ@€÷î€ò€ø@ Àþ€@€ÿþÀÿûÀüü€ÿ@ €€€þüÀþ@ÀÀü@ù€ù@€€ÿü@üÀÀÀÿþÀüÿÀ@@ý€þ€ÿÀÀ@À@À@ÿ@û€ú€ý@ýÀÿÀÿüüÀÿ@ÿ€ÿ@Àû@øþÿø€ý€@ÿ€@ÿÿý€@À@@€þÿ€ÿ@€ÿ€ÿ@ÿÀÀ€À@€@þûúÀúúÀÀ@ýÀýý@ý@@üþ€ýÀû@ý@ ü÷€ï€ý@ @@€ÿ@ý@ñð€€€úýÀý@ÿ@ Àûý€@@€€ÿÀýÀÿÀþ€€Àþ€ÿÀÀÿ€þÀÿ@ø€øÀþÀÀ€@€÷€î€øÀÀ€úÀø€€@€ñ÷@@Àü€þ€@þ€ûû€ü€@Àý@úÀ €øÀúÀüÀ€ÿüÀ €ý@ùï€@€ûÀþú €ì€ç€ë€€€ €ü€õ€ýÀ@ÀöòÀ ÿü€À@@@þ@€ý@ÀÀ€ÿÀþ€ÿ@@ÿ€üÀýÀýÀ€À@ÿ@À€€ý@þ@ûøÀú@À@ÿ@@@ÿÀþ@À@ýÀû@€@üý@ÀÀ€þý€€þ@Àÿ€þûÿ€þû€ü€À€þ@üúûþÀú@û€€@Àý@þ@Àþ@ÿ@€Àþ@@ÀÀ@€þÀ€ÿÿ@À€€þ@ýÀý€ÿÿ€þ@üü@þÀ@ý@üý@@Àÿ@ý@þ€@€@@@@ÿ€ÿÀÿ€ÿ@ÀÀ€€ÿ€ÿ€ÿ€@ýÀþýÿÀ€ÿ@þ€üûÀ€@Àü@ÿÿ€ÿ@@ÿÀ@€þ€üÀ@€ÿ€ÿ@ÿÀ€ÀÀ€À@ÿ€þÀþ@Àý@ý€Àÿ@ÿ€ÿýüÀüÀýýÀþ@ÿÀÿü@þ€ýþÿ@ÿ€þ€€üýÀ@@Àþ@û€ý@À@ÿ@ÿ€€€@üÀÀý€ÿÀ@€€€ÿ€þ@üüÀý€ÿ@ýýÀþÀ@€Àü@ú@€À@û€ù€þ€@ý€üÀý@@€ý@ú€Àÿÿ@þÀÿÀ€þÀÀÀ€ýÀÿÀ€ô€øù @ü@ý€ýÀ€û€ú€À€À€þÀü€ÿ@ÿÀúÀ@þ€û€þ@þ€ý€Àí€ð€ €ý€@€@þÀø€ù€€@@üÀý€€ÿ€÷ü€@@ü@þÀÿ@þþ€ü€ûÀÀ@@@@@ÿÀþÀþ€€ýÀþÀ@€ÿÀ€ÿ@ÿ€ýÀ@@Àþ€@@þÀý@ú@ú€û@€@ýÀûÀÿÀ @úÀþ@ÿ@þ@@€þÀÿ€û€ùÀû€@@@€€@@@€ÿ@€ÿ@ü€øÀú€ý@þ@üúÀÀÀÀ€€þÀþÀÿÀÿ@ÿü€üÀÿÀ@þÀ@@€þÀý@@@ÀÀÿ€ý€ÿÀÿÀÀþÀ@€ÿ@ÿþÀýÀþÿÀ€ÿ€ÿÀÿ@ý€ýþ@ÿÀ@@ÿÀ€€€ýþ@€ÀþÀþù@øùÀÿ€@€@€@ü€ù€ûüÀýÀ@À@ÿ@ÿ@ÿ€üÀþ€€ÀÀÿ€ÿ@ÿ@€€@ÿÀ@À@ÿÀÀ@þÿ€€À@üÀýþþ€ÿ€@ÀÿÀÿ€ý@ûô€òúÀ€ €€ñ€ð€÷€  ú÷ùùÀüÀ€€Àþ@ü@þ@@€ÿÀÿÀ@ÿ@ýÀ€ÿ€ý€ý@À@@û@ù@ü€@ý€ù@÷€þÀ@€ýÀ@@þýÀý€þ@þ€þ@þÀ€@ÿ@ÿ@À€@À@@€@ÿ@þ€ýû@ú€ý€€À€ÀÀ€ý€ú@úÀ€À€@ÿ€@ÀÿÀþ€þ€ÿ@þÀý€ÿ@ÿÿÀÀÿ€þ@ÿÀÿýÀÿ€€ÀÀþÿÀ€þþýý@ÿ€@ý€þÀÀ@üÀü€ÿÀÀ@€ü€þ€ÀÀ@ÿ€ý@@€þÀÿ€ÿ@ü@ÿÀþÿ€€þ€Àÿ@ú€ùÀÿÀ€ý@ü€þÀþÿ@@€ü€ü@þÀÀÿý@û@÷€þ@ ÿÀý@À€@ü@úÀÿ@@€û€úÀÿ€ýÀý€ý€þÀ€Àÿ@ý€Àÿþ€€ÿü@ø€ì€þÀ€ ù€@ €€í€ó€@ À@€€@úÀú@ý@ÀûÀøÀú€À€ÀÀÿ€ý@À€ÿ€À@þÿ€üý€þÀÀ@Àý€ùúÿ@€@ü@ùþÀÿÀüü@@€ÿÀþ@@€@@À@ú÷€úÀÿ€ü@€þ@ÿ€ÿ€ýÀüü@ü@û€û@ýÿÀþ@Àÿ€À€ýÀý@ÿ€@ÿÀÿÿÀÿÀ€@þÀþ€þ@€@À€ÿý€ý@ýÀÿÀ€À@€ÿÀ@ÿýÀý€ý@ý€ÿ@þÿ€@€ÀÀÀùÀû@þ€€ÿÿ@À€@Àÿÿ€€À€€þ€üÀþÿ€@þÀþý@þ€þÀþÀÿ@þ€ÿÀ€€ÿÀÿþÀÿ@ÿ@ÿÀÿ€ÿÀÀÀ€ýÀýý@€À@Àÿ€ýÀù@ø÷€€ @þÀûÀ@@ýÀü€ü€ý€þ@ÿ@þ@þ@ÿÀ€€þÀýÀ€@ÿ@@ý@þÀÿÀý@û€ü€ÿýÀ@€ý€ÿ@ü€€@€@ü€ú€þÀ ÿÀô€ýÀ€ €Àù€øÀý€ÿ€ÀÿûÀýÀÿÿ€À€@ô€ø€ ÀùÀÀ€ù€€Àü@ýÀüÀþ@ý@ú€þÀÿ@ÿ€ÿ@þ€ÿý@ýÀÿÀÿ@ÿÀÀ@ÿ€ÿÀÿ@þÀÀÿÀ@€@@ÿÀÀÿ€ÿ€@ÿþÀÿ@þý@þ@€À@€þÀÿÀ€@þ€Àþþ€ÿ€@ÿ€þÀ@Àÿ@ü€úÀü@ €@ë€í€ÿ €€Àû@ï€ €€þÀþý€€þÀý@ýþ@€ÿ€ÿ€Àü@À€ €@ù@ì€ô€€ ö€÷À€ý@û€ÿ€ýÀø€ûÀ€@û@ö€@ € €ø÷ü€€@üÀýÀ€ÿ@ý€þ@ý€ÿ€ÿÀÀÿ€þ€þ€þÀ@ÀÀÿÀ@€€ÿ€@ÿþ@ÿ@À@@ý€ÿ€ÿ€@À@ýý@ÀÀþ@ý@þ€€ÿ@ÿ€ÿ@ÿÀÀ€Àÿ€@@ÿ€ÿÀýÀÀ@ÿÀüý@þ€þÀýþÀ€€@ÿ@ÿ@À@ÿÀÿ@ýÀþ@ÿÀÿÀÀ€ÿ€ÿ€ÿÀ€€@@ÿÀ@€ÿý€€À@þù@ø€ý@ÀÀý@À€þÀÀü@ý€@€@À€ÿÿÀÀ€ÀÀÿÿ@€ÿþ€ÿÿ@ÿþÀýÀ@ÿ@ÿÀÿ@þ@ÿ@ÿ@þÀÿ€€@ÿ€ÿ€€À€@€À€@€ÿ€ÿ€À@þþ@Àý€þý€€ÿÀüÀý€ýÀ@€þýÿÀ€€û€ûÀþÀ@@ÿþ€þ€ÿ@@ÿÿ@ÿÿÿÀÿ€ÿ€þ€þ@ÿ@€À€ÿÀþÀÿ@ÿÀ@€@@@ÿ€ÿ@ÿ€ÿ€ÿ€ÿÀþÀ@@þ@ý@ý€ÿ€ÀÀþÀú@ýÀ€ÀýÀú@Àþ€ÿÀý€ÿ€€€ýÀýÀþÀþÀý€þ@€€ÿ@ÿÿ€ÿ@þ€þ€þÀÿÀ€ÿ€ÿÿ@€@ÿÿ€À@Àÿ€€À€ÀÿÀ@@€@þ@ýÀþ@ÿ@€ÿ@ÿ@ÿ€ÿ@ÿÿÿ@ÿÀ@ÿ@ÿþ€þ@ÿÿ€@ÿ€ÿ€€@@@À@ÿ€À@ÿ€ÿ@Àÿþ€ÿÿÀÿÀÿÀÿ@þ€þÀÿ€ÿÀÿÀÿ@ÿ€ÿÀÿÀÿÀ@@@€€@€@ÿÀ@€@þ€ý@@€ÿ€ü@ÀÀÿúÀû€ü@€@@û€þÀÿ€ÿÿ@ÿÀÿÀÿ@þ€þÀÿÀÿÿ€À€ÿ@ÿ€@À@€@À@ÿþ€þÀ€€ÿ@þÿ@ÿÀÿÀÿÀÿÀÿÀÿÀÿ€ÿ€ÿÀÿÀþÀÿ@ÿ€þÀÿÿÀÿ@ÿ€@Àÿ@ÿ€ÿ€@@@ÿ@ÿ€ÿþÀþÀÿÀþ@þý@þ@@ÿÿ@ÿÀÀ€þ€ýÀþÀÀÀÿ@ÿ@ÿ@€@ÿÀÿÿ@Àÿ@ÿ@ÿ€ÿ@€ý€À€þúùú@ €ù@ô€ù€@€@û€ùý€@ý@ü€þ€@@Àû€þ€ýÀû@ÿÀ@€ý@û€ü€À€ÿ@þ€Àý€ú@ûÀ@€@ÿÿ@€€üÀû€ÿÀ@€ý€û€ý€À€À@ù@÷€û@ýÀþ€üÀþ€@@þ€þ@þ@üÀüÿþÀÀ€ÿÿÀÿÀýÀü€ý€ÿ@Àÿ@þ@ÿ€@ÿ@@€þ@ýþ@@ÿÿ@@ÿ€þ€ÿÿÀÿ€ÿÀÿÀÿÀÿÀÿ@@@@Àÿ€ý@ÿ€@þý€þÿÀÿÀ€ÿÀ@ÿÀÿÀÿ@ÿÿ€ÀÿÀÿÀÿÀÿÀ@ÿÀÿ@@Àÿ€@€@ÿÀþ€ÿ@@ÿ€þ@þÀÿ@ÿ@ÿÀÿÀþ€ÿÀÿÀÿ@€@@ÿþÀþ@@@ÿ@ÿ€ÀÀÿ@ÿ€€ÿÀ@þ€þ€ÿ@þ€ÿÿ€ÿÀÿ€ÿ@úû@@À@ÿ€þ@€Àÿ€ü@ü€þÿ@ýÀý@þÿÀÿ@€ÿÀÿ@@Àÿ@þþ@€þ@ýÿ@ÀÀÿ€þ€ÿ€@Àý@ü@ý€ÀüÀýÀÀÿ€ÿ€€€ÿþÀþÀ@ÿ€ÿÿ@€ÿ€ÿÀ@ýÀÿ@À€ÿ@ÿ@þ€ÀýýÀþ€À€@ÿ€ÿþ€Àÿ€ÿÀÿ@þÀþÀþ@ÿÀÿÀ€ÿ@þ€þ@üÀý€@ÿ€ûü€ÿÀ@ÿÀýý@@€€ý€ý€þ@þÀÿÀ€€ÿÀý€þ€ÿÀÿÀ@€ÿ€ÿ@€ÿÀ€ÿ€@ÿ@ý@þ€@@ü€øÀÿ@€üÀúÀÀ@þ€ÀÀ€þÀ@€ûÀü€@@€Àÿ@ý€ÿÿ€ÿÀÿþ@ü@€€Àþý€þþ€ý@ýþ€@À@ÿÀýÀýÀþÀ€ÿÀÿ€ÿ€À@€€€ÿ€À@@ÿ€ÿ@ÿ@€€ÿÀþþþ€þÀþ@þ@þÀ€€@@ÿ€þ€ý@À@þÀÿÀ@ý@û€@ÿ€À@þÀÀ€þÀÀÿ@€@ÿÀÿ€ÿÀÿ€þÀþÀþÀþ@€@@@ý@@üÀùõ€ €ûÀüÀ@@ÿÀÀÿ€þþþ@€@€ûÀø€úÀ@€Àþ€Àý@ü€@@þ€ýü€ÿÀÿý€@Àþ€ÿ@ÿ@@@ÀýÀþ€ÿ€þ€þ€þ€ÿ@@@ÿ€þÿ@ÿÀÿ@ÿ@ÀÿÀ@À@ÿÀÿÀÿÀÀ@ÿÀþ€ý€þ€þÀÀ€ÿ@þ@ÿ€@ÿÀþÀÿ@€ÀÿÀþý€@@ÿÀÿ€ÿÀÿÀ@€ÿÀÿÀ€ÿÀÿÀÿÀÿ€ÿ€@@ÿ€ÿ@@€ÿ@ÿÿ€ÿÀ@@ÿÀ@@À@ÿÀþÀý@ÿ@ÀÀþ€þÀ€ÿ@@ÿÀý€€ý€@€ÀþÀüÀ÷€÷€€€øÀö€@ ýù€ýÀý@øÀÿ@üÀ€@ý@þÿÀÿ@Àÿ@ÿ@€€ÿÀ@Àÿ€ÿÿ€þ€ý@À€ÿ€ÿ€ÿ€@ÿ€ÿÿ€@ÿ€ÿ€@þ€û€þ€ ÿ@ùùÀ@ €÷€ð€À€ €÷ü@ü€ø€û@Àý€üÀþ€À@ú@ÿÀ@þ@ÿÀÿ€À€þÀÿþ@þÀÿ@ÿ@@À@ý€ü€þ€ÿ€ÿ@€À€€€€ýüÀ€@üÀý€þÀ€€€@þ€ü€ü@þ€€@@ÿ€þ€ÿ€ÿÀÿþ@ÿ@@ÿ€ÿÀÿ@þÀþÀÿ€€Àþ€þ€ÿÿ@ÿ@@À@@ÀÀÀÀ€€À@÷€ø€€€À€÷€õõ€@ÀÀ@@ùõÀ@@úÀþ@ÀþÿüÀ€ÀÿÀÀ€ýÀüÀüÀ@ÿÿ€@ÿÿÿ€ÿþ€@@ÿ€þÀÿ€@@ÿÿÀ@þÀÀÿ@ÿ@ÿ€@€ÿ@þÀþÿÿ€@À€@€ÿÀ€ÀÀ€€ü@ýý€ýÀÿþÀÿÀþÀÿ@þÀÿ@ÿÀ€@À@€@ÿÿÿ€@€À@ÿ@ÿÿ€ÿÀÿÀÿÀ@@ÿ@þÀÀûúÀü€@@ÿÀþÀÿ@þÀþ@þÀÿ@þÀÀÀ€þ€ÿÿ€þÀ@€ÀüÀ@€€ûÀû@@þ€€ÀÿÀÿÀý€þ€€þÀþÿ€ÿ@þÀÿ€@€ÿ@ÿÿ@@€@€€ÿ€ÿ@ÿ@ÿÀÿÀÿÀ@€@ÿÀ@€ÿÀÿÀ@À€ÿ€@€@ÿ@ÿ€À@ýÀýÿ@@@ÿÿÿÀÿÀÿÀÿ@ÿÿÀÿÀ@€€@€€€ÿÀþ€ÿÿÀÿÀÿÀÿ€ÿ@ÀÿÀÿÀÿÀÿ€ÿ@ÿ@€€þ€þþÀ€€ÿ@þÀþ€ÿ@@@€ÿ€ÿ@ÿ@ÿÀÿÿÿÀÿ€ÿÀÿÀÿ@ÿ€ÿÀÿÀÿÀ@ÀÀÿ@þ€þÀ@ÿÿ€@@@@ÀÀÿ€ÿ@ÿ€ÿ€ÿÀÿÀÿ€þÀþÀÿ@@@@ÿÀÿÿ@ÿ@ÿ@ÿ@ÿ@@@ÿÀÿÀÿÀÿÀÿÀÿÀþÀÿ€ÿ@ÿÀ€€@ÀÿÀ@ÿ@ÿÿ@ÿ@ÿ€ÿ€ÿ€ÿÀÿÀ€À€@ÿÀÿþÀþ€ÿÀ@€ÀÀü@ù€ú€û€Àÿþ@ýÀýÀÀÀ@þÀýÀÿ@ÿ@ÿ€@ÿ€ÿ@€ÿýÀÿ@ÿÀ€ÿ€ÿ€ÿ€@€€ÿÿÀÀþÀýÀ@ÿ€ÿ@ÿ€þ€ÿÀÀ€ÀÿÀþ@ý@þÿ@ÿ@@ÿÀÿÿ@@@Àÿ@ÿÀ€@€@ÿ€þ@ý€þÀÀ€Àÿ€þ@ýÀ€ÿ€ÿ@À@ÿ@ÿ€ÿÀÿÀ@ÿÀ@ÿÀÿ@ÿÀÿÀÿ€ÿÀÿ€ÿ@þÀÿ@ÿ€€þ€ÀÿÀ€@Àÿ@ý€ùÀÿ€@ýÀü@þ@€þÀû@ÿÀ@@ÿ@þþÀþÀû@û@ÿÿÀ€À€ÿþÀÀ€ü€û@@€Àý€þ@þ€€@@€þÀùú€ùÀùÀÀ €øõù@@€ü@úþÀÀÿ€ýýÀ@ÿÀþÀ€þÀþ@þ€ÿÀÿ@þ€ÿÀ@ÿ€þ@@€ÿ€ÿ@ÿ€ÿÀÿ@ü@ü€@@ÿÀ€€€þÀ€Àÿ@ÿÀÿ€@Àÿ@ÿ@ÿÀÿ@þ€þÀÿ€ÿÀÿ€ÿ@ÿ€€@ÿÀ€@ÿÀÿ@ÿ€€@ÿ€@ÿÀÀ€ÿÀÿÀ@ÿÀÿ@þÀÿ€ÿÀ€ÿÀÿÀ@ÀÿÀÿ€ÿÿ€ÿ@ÿÿÀ@ÿÀÿ€@€@ÿÀÿ€ÿÀ@ÿÀÿÀÀÿÀÀ@ÿ@ý€€€@ÿ€þ@ý€ÿ@Àÿ€ÿþÀ@ÿÀÿ€@@ÿÀÿ@þ@ý€À@ÿÀ@ÀÀÿÀÿÀÿÀÿÀ€ÀÀ@ÿÀ€þ@ÿÀÿÀÿÀÀÿ€þÀ€@ü@ü€ÿ€@@ÿ€ÿ@ýÀÀÀÿÀÿ€ÿùú@ÿ€ €ÿ@ø€ÿ@À@û@ù@Àþ€þÀÀÀüÀû@À€@ÀÀþ@þ€€@ÿ€ÿþþ€€€ÿÀÿÀÿ€@@@ýÿ@@ÿÀÿÀÿ€ÿ€ÿ€ÿ@ÿÀþÀÿ€þÀÿ@þÀÿÿÀ€@@@€ÿÀ@@ÿÿ€ÿ€þÀþÀÿ€À@ÿÀ@@@@ÿÀÿ@ÿÀÿ€€@€@ÿÀ@À@ÿÀÿ€ÿÀ@ÿÀÿÀ@ÿÀÿþ@þ€ÿ€À@€@ÿ€ÿ€ÿ@ÿ@@ÀÿÀ@ÿÀ@@@ÿÀ€€ÿÀÿ@ÿ@ÿ€ÿÀÿÀÿÀÿ€ÿÀÿÀ@€@€ÿÀÿÀÿÀ€@ÿÀÿÀÿÀÿÀ@@@ÿ€ÿ€ÿÀÿ€ÿ@ÿ@ÿ€ÿÀÿÀÿ€ÿÀ@À@ÿÿÀÿÀ€€þÀü€ý@ÿÀÀÿ€ýÿÀ€€€ÿ€ÿþÀÿ@ÿ€þÀÿ@À@ÿ@ÿÿÀÿÀÿ@ÿ€ÿ€ÿ€ÿÿ@ÿÀÿÀÿ€ÿÀ@€@@ÿÀÿÀÿÀÿ€ÿ@ÿÀÿ@ý€ýÀ€@€ÀûÀü@ÀÀÿ@ý@ü€ÿ€ùÀÿ@ÀýÀû@Àþ@þ@ÿ€ÿ@þþ€ÿÿ@@ÿÀÿÀ@@@@@ÿÀÿÀÿ€ÿÀ€ÿ€€@ÿÀÿÀÿ€ÿ€ÿ€ÿÿÿ@@€€@Àÿ€ÿ€€@ÿ€@@ÿÀÿÀÿÀÿÀÿ€ÿ€ÿÀÿ€ÿ@ÿÀÿÀÿÀ@ÀÀ€ÿÀÿ€ÿ€ÿÀÿÀÿÿÿ€€À@ÿÀÿÀÿÀÿÀ@@ÿ€ÿ@€ÿ@ÿ€ÿÀÿ€À@ÿý€þÀ€@ÿÀþÀ@ÀÿÀýÀý€ÿÀ€ÿ@ÿÀÿ@ÿ€€ÿ@þ€ÿ@@@ÿÀÿ€@@ÿÀÿÀÿÀÿÀ€ÿ@ÿÀ@€ÿÀÿÀÿÀÿÀÿ@ÿÀÿÀ@@ÿÀÿ€ÿ€ÿ€ÿÀÿÀÿ€ÿÀÿ€ÿÀÿÀÿ€ÿÀÿ€ÿÀ@ÿÀÿ€@ÿ@ÿ€ÿ€@€@ÿÀÿÀ@€@@ÿÀÿ€ÿ€ÿÀÿÀÿ@ÿÿÿÿÿ€€À@ÿÀÿÀÿ€ÿ@ÿ€ÿ€€€€þü€ýÀü€@€@ÿÀ€€þûÀý€À€ÀýÀýÀþ@þ€Àýû€€@€ü€ÿ€ÀÿÀýÀÿ@Àý@ÿ@€@ÿþ@@@ÿ@þ€€ÿÀþÀÿ€Àÿþ€ÿ@€€ÿÀÿ€@€ÿÀ€€@ÿÀÿ€ÿ@ÿ@ÿÀÿÀÿ€ÿ@ÿÀ@þ€À€ÿ€ÿ€@ÿ@þ€€ÀÿÀþÀÿ@@€ù@û@À@ÿÀþÿ@À@ÿÀÿ€ÿ@ÿÿÀ@€ÿ@ÿ€ÿ€€€þ€ÀÀ@þÀþýÀÿ@ÿÀ@ÿÀþÀÿ€€ÀþÀþÀÿ@@ÿÀ@ÿÀþÀÿ€€@@€@@€@ÿÀÿÀ@@þÀÿ€@ÿ€ÿÿ@ÿ€ÿ€ÿÀÿÀÿ@@@@À€ÿ@ÿ€ÿ€ÿ@ÿ@ÿÀÿ€@ÿÀÿÀÿÀÿÀÿÀÿÀ@@ÿÀÿÀÿÀÿÀÿÀÿÀ@@ÿÀÿ€ÿÀÀ@ÿÀÿÀ€@ÿÀÿ€€ÿÀÿ@ýÀý€À€þü€Àÿ€ÀþÀþ€@ÿ@ÿ@À€ÿÿ€€ÿ€ÿÀ€@@ÿ€ÿ@ÿ€ÿÀÿ@ÿ€@ÿÀÿ€ÿ€@ÿÀÿ€ÿÀ€€@ÿÀ@ÿÀ€@ÿÀÿÀÿ€ÿÀÿÀÿÀ@€€ÿÀÿ€ÿÀÿÀÿÀ@@@ÿÀÿÀ@@ÿÀÿÀ@ÿÀÿÀÿ€ÿ€ÿÀÿÀÿÀÿ€ÿ€ÿ€@ÿÀÿÀ@ÿÀÿÿ€€ÿÀÿþ@À@üÀ@þÀ€ÿÀÿÿÀ€@ÿÀ@ÿ€ÿ@ÿ€ÿ€@€€@þÀÿ@ÿÀÿ€ÿÿÿ€À€ÿ€ÿÀ€€@ÿ€ÿ€@ÿÀÿÀÿÀÿÀÿÀÿÀÿÿ€€ÿ€ÿ€@@À€ÿÿ€ÿÀ@ÀÀþ€ü€þ@@@þÀû@ü€þÀ€@ÿ@ý@þ€ÀÀÿÀþÀþÀ€ÿÀ€@ÿÿÀ@ÿ@ÿÀÿ€@ÿÀÿÀÿ@ÿÀÿ€ÿÀ@@ÿ€ÿ€þ€ÀÀÿÀþÀ@Àþ€ý@€Àÿ@þÀÿ€ÿÀÿÀ@€ÿÀÿ€ÿÀ@@ÿÀ@@ÿÀÿÀÿÀÿ€ÿÀÿÀ@ÿÀÿ€ÿ€ÿ€ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀ@@@ÿ€ÿÀ@@ÿÀÿÀÿÀ@@ÿÀÿÀ@ÿÀÿÀÿ€ÿÀÿÀ@ÿÀÿÀÿÀÿÀÿÀ@@€ÿÀÿ€ÿ€ÿÀÿ€ÿ€ÿÀÿÀ@ÿ@ÿ@@ÿ@ÿ€ÿÀ@ÿ@ÿ@€ÿ€€ÿÀ@ÿÀ@@@ÿÀÿ€ÿ€ÿ@ÿÀ@ÿÀÿÀÿÀÿÀÿÀÿÀ@ÿÀÿÀÿ€ÿÀ@@@ÿÀÿÀÿÀ@@ÿÀ@ÿ€ÿ€ÿÀ@€€@@ÿ€ÿÀÿÀÿÀÿÀÿÀ@@@@ÿÀÿÀÿÀÿÀÿÀÿÀÿÀ@ÿÀÿÀÀ€ÿ€€ÿ€ÿÀÿ@ÿÀ@@ÿ€ÿ€@ÿ@þÀ@ÿÀÿÀÿÀÿ€ÿÀ@€@ÿ@þ€ÿ€ÿ€€ÿÀÿÀÿ@ÿ@ÿÀ@ÿÀÿ@ÿÀÿÀÿ€ÿÀÿÀÿÀÿ€ÿÀÿÀÿÀÀ@@ÿÀÿÀÿÀÿÀÿÀ@ÿÀ@ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀ@ÿÀÿÀÿÀÿ@ÿ€@@Àÿþ€ÿ@@ÿÀÿ€ÿ@ÿÀ@€@ÿÀÿ€ÿÀ€ÿ€ÿ@€@ÿÀÿ€ÿ€@ÿÀÿ€@€@@ÿÀÿ€ÿÀ@@ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀ@€@ÿÀÿ€ÿÀÿ€ÿÀÿÀÿÀÿÀÿÀÿÀ@ÿÀÿÀ@@@ÿÀÿÀÿÀÿÀÿÀÿ€@€@ÿ€ÿ@ÿÀ@@ÿÀÿÀÿÀÿÀÿÀÿÀÿÀÿÀÀ@@@@@@@@@@ÿÀ@€ÿ€ÿ@@ýÀvtwm-5.4.7/contrib/vtwmrc/sounds/warp2.au0100664000015300001300000005071610237645271017212 0ustar callumfid.snd&Q¨@warp-8012Hz.au.snd QˆLwarp.wavSNMUSSSSSZ_[[[gÿhÝçÛÛÛÓÙÎÛÐÓÓÚÛÖæÛñçÿçÿmf[[^[Z_[g]ÿgÿgsgiigs[g^gTe[W[[mgêiíÿåçÛÛÚÓÖÏÚÎÙÐÛÛõçyf^OSJMHEEHLFJEMFSMWS[wÿÝçÕÛÍÓÍÓÍÓÓØãÜëàg~]gcgUPSNSPYN[W[fdg^g[n[gUrS[UXYNZXg\{gmgÿáóÔÛÏÓÍÓÏÓÒÓçßÿçmgN[KKEAECIEIEIFMM[[bîùÔçÐÓÊÑÌÎÎÌÐÎÛÓïÝgg_[[YSJMIOISMSS\]`vhø`ÿgxg^[S_O[NSOh]qg\jqÞæÎáÌÍÆÌÌÍÎÌâÜÿmSRBIAE?LIT\løjü[[JM@I>EA_]ÕâÝÖÜÈàÏhÖÿÎûÍÓÈÅÈÁÒÉöæIS<=:86;AAMCQEYGSEKGXgXàßÆÆ¼Á¼ÈÅØçnPYFIFS\ênÿfdgSIEECMELViÝáÙÔåábSJ?>A=>C\{ÞÞÚÒÖÏåÛmØçÎâÆÅ½½¿½ÊÃÿt=>8M7<6DYÉÉ¿ÖÉåļº¼ÙQH\KÐɽÃÉÝçÿÔËçT6409<][wWCEKg÷~J=3<6PöÅÅÅÏÍɽ¶¼¾mSMZÈâÎÿÅÌÊW>.2.7CJN@>?MPÓ[g=34:HÚ½Á¼Í¼Áµ²¯ºÇOOJSΞÑÞjÿõÊÖç?0/,18UJQ>?BOÿÒiM=2<;[ѽÆÃÓÁ»³®´¿~MAXTÇÉÆÔq}qÍÌÊ]>-2.9=TOH?BETÌÛäC77?GÙ¾½»Ì½Åµ´­¼ÂLKGWgÍÍóãFSPÎÖÜC3+.6:VÝÍc>77G×¼ÏRJDnĹ·¿yTF_Ä»´¿ZF=OÞ¿¾ËPA6?QÍÂÛF:1=OÍÅèM35@ãÊÉøH56E×½¸ÉH=:LÏ¿¸ÁlMBgË·®·ñTCW˵µ¿ó?1:UN>Oî;*-OßB18[ÛçõÆH\¾¹¼º²½ENÎÊÓɶË::[ÔjiÄí68MêKYÄï//>R?MÑX2/?[Rø¿ÈD?ÝÂɹ¬¯×|½·Á»®´oCÿÞNb¿ä/+7:39ö^.+486AÐÛ5.C]\ݺµüCØË;­«ÁJļͿ°®É=gÝSYÅÅ>,4820LY0'-688ä¿R6EâÔɰ©·ìƶ»½²ª¸IVÛ[eɵã03M<7QÇN-.<62PÐN30HE<Ñ´ÅOHÈÇÔ¶¨¯Øþ¼¾Æ¸«´V@{LAMÅÜ/,963>Øt1.C>7W»½T;gYEÛº¿S9TcAP¿ºZ@ÒÀÔÕ¯¬»Í¶±¿Å·µSMQh0+2<-&-.*$2:81dÈçÕ»ª±º²§µ·´­ºÔ»¸ä3IîF/?O4+:d6GÄÕFàÀÂgʸºÿ¿¶ÜEP¾Y8:î@22B4->E:+:PQA]ÁÇ{Ѱ¼¿Â­¸Íɵ¼\ÝÍõ4-==2*7F208_;:VÇSNÙ²ÁÅ¿²ÏTîÌFA85:FdæÇÍÍÿØFa?;:G>=ZYÅÖ¸À»Ë¾îäSW_=G?ÞaÉ[ÏO\G>=5>:J9ç\¸¸¬¬©ª¯²ÃÀMN/-+0/..-2*.(,)0/>?ïÁ¶«¨Ÿ¥¡«§¹´ãÛMK7<6<=<96863437=FDNÛɳº´»»Êó?>28/--5DâÍžº¾¶Á·É¹ÒÃç¾ÏÄÇË×LG10*+%*()48ë×·À¸Á¯º¸ÉÏÀÖÂeºÌ¬¾°ÙÁlæC<355,45OOÔXoRSL@:5;7::SÓ¾´»²»®º´ÂÂuÅjh]Ó;Ê×ûNH<7/+,.-:>gkÆ×»Å·Ê¾ÝÝRÞHOnhÊÕÊ[ZFC:6..89LPÒÍ´°­¬­©µ¯Í¿SÙ5K5Q?L<:732,/(7/>8má¹´°­°«¶·ÍÛþ_NBoYÍÛÛwÉ;źÊËMN@@OF]C>NdÖÀºÂ_:.--)944;GÚÆ°²¬ÄÑ?IHÓɯÁ°³­§¥¢®·E4+)*./<29- !32`GÉÆ·­««ºÂiíÀ¶¶¦µªÂ»ÀÆ¿ä?3&*1E\ÖÁÞÒÍνڻîH..2?eßÍóDHODðAT.3.¹´¯¬¬¿À©Ÿ¡®¯ÀE@É©®¾Âø4-NÖG/,0!%O½½áãÏ>GѲÝ×¾ÎsÙ»Õº­¦¨³¯¬ÆnDi9+,2.)-M>>KÇg¿ÌȽ¦»iL¿¿e»±g*;Î_?ãÅ4'H½L=Àº9*GçJC¸É97Ê»ÝÁ½Ü,7NÊHýE8+5FUÚiÎFÿ©¼ÛÍÉÌʳ½N6[>+,B5,,$:¶ÊDa§­³©ŸºaǯÓAÐØ-/4.*nU12Ä´½²§®V繸÷̼O-.?83;8/&-5NSÛ@?7DS¿©®ÅW¸½Ã¸¬ÆGDè@NßÎ:Û:9;9ÎÝ<1JADi»ËCuÞa?ǽQ2E=AK¼g2,;77QÛÞÕﲫ¨¥¶®¬¦È¼¾À063. &(&)?UCá´­¶©¤©°¨«°Ä­»ã6Ø@>/W06;è5.6C40S_GgµÃg\ºàJ\¼~Kû¾ALJØ4C?J-Bfd>êÂXîß¹AQíÆ?XÄÁ[Ö²ÚØ[¿1:4D(38>+AML:UÊSSȹØK¾¾Íѯ¶¹¯¤­ÈÃÎQ/7($,()(I.62ÍG?_¾VÑÀ°¾²¦¦¯´­¾æMÍ2.-A&07[1=c×BýÅñ(!&-,'6?@?ľÜܽ½P`ÄÍ@øÄ_cî¾EzÏ´HÚi¸V¿Á»öº¯¹Æ¿ÌE69/$"%#/JþWÈÉÅö¾½ÅÀËëgYÀ¸®¯´ÊÔKS>[=G*5/@È´®²¾ÉËÒÇÚÿ>F+59ÚÍÌÅÈE>-nGA[Ắª®ÂgG;SIÑÍÎ~`Ó˲½ÉF+( "(,6?5OY¶°¡§£³²¼¿¹µÇÙ8571EPÓOgC?OÑ´´Çp=PV÷ÊÊØJ2>GÅ¿¨»½G.5+/:;8:_ßÈ­¯¦¸ÓB4D=Ìnï[DïÙ¼´Î¼D03*gNÒÉÍ×ËǼ¹ºÐR//MKº¼¯¯¹¶Ù¾Ø8,'#"/-*&E¿´«§¡¸Ì½øÙë´¥¸Á¯¨­¸­³[(*/'+9ÝM0EhO?CB%$"!M·½º¹¬¬«šŸ­®¬Îß¶¦­I?4-4LÂ5 &$'P»ÏMAèSͬ®ÆA=g[Ä®©¾ALL9=YÞ-##/Cy¯«±¹Ç°³Å»µÝ4(@>@IÍW7;ßòÿL®²ÁÄ´¸ºÄ¿]8)/))4),]}Mv·®Å½Ã¶O^¾¹·­°©Û¸«¤»oKA&""4++-(!(OÂÛ?6>98¿®¥²¬±ÅPµ¨¯:-'%"@ÍÝP㺩µA24-1/í/"#%,G¶ÍB8ÞÙb¹ª­º¸¬¬¬Ÿž¬Ïëàg//*!'+HÿÊÁ°£ £«­ªaïξ,%&4.?I%0ÊM4Þ¤­×Þ®Z}Í­v3W°½É¥¤»G`;*$1)%2AÕÖM@B>5îºÉ³º°´£ª¥Æ¹J@(LFM5CÉXUºª{L.8$-DÌ,-\Ä;C¶­V<ÍÎA·£«V`±Ñ;HX.('S14v®íAROVgÈI.3H?¶£¥ ŸŸ¬ª¬¬;6."'3(+ !/ý,1=ÃÿÅœ—¢£ž­­«ªR?gI1ç·¾<$6%%$1"57K«¯ÐegbÈ¿±·³¿¯³¤¢«µºk;+BC32éCGC37ѺB0($3xpÞ¾Ÿ¤ž–’›¢¬´§¦³.A20&-+/*xÍ««¢¢±¼«¡¥žœŸª±§«ÁJ3(()/*8¿±¶ÍÍm͍«­µ±¶Ó¼Á|5!)*4,-0z¼¶¹³¾Ô×»©ª¥®µ¶°®¶ÛK($ *);3>\¼ª¥±¿@)""+#(-Iµ›š §¶¹Ïê85*#,=º³»88-T^Þ4JPÞ±°££«ÄÞúÕÛ:4(0/?.=8SÒº«±½<1,<5G681ÉÁ££¢¬ÍÀ×»ÅH2./F̽·¿Å6~E½¿Ô4)8BÎË·çP<<7733#)/^ÎÏŹ°©©§®½¿VÅźÓMAJȵ¢°ÃJK09Îl*#)!'ÆÀH;8/)Ú°ÏÔ[;:ɤ¬¼Æþ51ØMGZF<>´½¸Æ¬È¾¯°]iÇZ[Ê»./2-,AÌ,+008ãª½ÝÆ,M·µ_ÈM.1¾¸TÆI##.E6BÅNC¼©·°Ÿ¬À½ºPY¿»Ì³²ÌCGÞ/E9" 3ÉÇ2?QRÀ¢¥µjLÐQ šž¬®½Z¬¥²@/%$YQ<9+ #R?587+)¬¾¬£º×ª¨Í×R+-ÊÄ?B>9>º¯ÅÁN;-57,*n¼¿XIKЫŸœ²¹·Ä<ß¼V)HÃ:-IG8ɪ²Ó²Æ3H¡®WϪuF°£»QÁÆ:7XZ=6)(,.1Þ]>/Ñf^Û¯È>fÂüÛ±¿×=Ò>ܾÙEÌÉ]?¶»<;¾3%H¨>3×»:<¨¨ïK°K01¼FI>E;06âÏ=,1MCf²¥´Ö§«º¯¥»5?@?SÈÔ¿NE:KI52K0$.A2ľɾž¡¢šž®¯¥¤M?/,(,$G´²L±¢¡Å¦¡Û¦¢¶÷¼¬1-Jg *=!28%7T2)AÙäI­©­¨˜¡©§¢»D5/,3(.̶´­œ©¹º­9'!.") .-$6¿¶¼¨˜¡˜•¢¥¢¨l?Ë_&/,*, &!B>EÞ­¨¯¥¢¨²«½¹¾¤ª®´£«ÕC6(!#/-FÁµ¶»®ÂM7P,6B²·¬£œ¢ª¦¾=)'>ÛÇȨ¶Â<ôÉ?¼¬¦§˜—–¦ª¾ID¼©œ™”— §«ØM.3$#*.&&-(%,>OMƬ®°ª¥¶ËË=" *@+7}¿»«®òJKd3&2E0׫¢¡ž˜£²¾.!%#2:GÉêÒoÍ,+,+'.o»½¨œœ¡ª§°½ß¯MJß»Z.)$ #4&4ÿ¶­¡©¹°­¯³¼¼9**8,5K?-3Y¼¾¯ªºÅ­§¬®¼D)*=S6DN?9=öLC.,%-î·£§ª»·°ª½Ù84'0.?a;6&*237G:IÆÇ®±¨¬£ªž©¬ß»ÿÌ_H!-/>->S϶®ÙD%-÷¸®\À­ž—¤°¾HJ_Þx:6/.>XGË:HOÆú¾ßàÌNK:)$#"BH¾½UÆ«¯À­ÃÝ˯Ê2KB/3ÊD14½Ð¶¨«é´¨äÊ­·=1F24ÌÉC&.,/Ig-"L±«© ¥—š¥Èá))3çBPO13ÙÆ@/**==93^Ð͵¥¯¿ç»M¯šŸ¸ÐÓAq¶_#+½­J=?=^¤›»ÅÈÅV«¬|=9+*6ÓGjµ§¬§ž­Owa18E.$5¹´ª±â**5,!%6'=¿ª°¢ ¯hÉ>/.`[H¼ÀòÄŸ¤¨£Z@³°¸¹Ä'")%$&$\Dľ?Bß3(Z±IÅ¡ÇȪ²¹¥¥¦°«Æ}ÈS?øC%6&J) 7-ÔŸ˜²Á¬Â屯>$&+7ÔüÐ]Ê,)2[,/Æ«³›™ªU¾¯µÝO$!žèÓ2-8N:;0$)³¥§Ú­º(!**\^*"?n»¤§d/<;]­«NCÔÿ»œ¡÷ëµñZ¸À-''7*:Ç¿¶»G0Ž÷àC'/Û¼Ó«¯Ï±˜–¢¦·'ý\%E¾<.¾_6SZ&b¼©´¥¹¸¢©³×7#('-EÀ7+Kf­žŸNNÉMB¯­^6·Î´¿´2(#&%&´¨®á¡Ÿ¬­¡«Ûº­ÈrçUl2,$H&"%-'Q®_-MÜǵ°*&BGH§¥ÀQ¨®¯¬¤í0'"-.-((È¢ÃÁ ŸÑ°§¼+FI&!=?*01ÅØÓ?íIÖ­š©ÛÖ©ÊE»:3*:ôº^í¯£  ªY&"2E>-7ù¥¬¶«¦Ë6õ--0<**!/LË[½­ÅM¹«+h£¼,4¹ã¾¯©E?ƾvæ[¿Ë%)+(+gÌ¥›Ÿ™•™š«Ì¾Ø).Ù¹EH>((&7dœ’—ž—œµ¬­Ï&7?ãÍźËÂ;+=().%&@UѨ«Æ¾£§¨¬ÇGÎAí_^¿M#+Eo3ðo-.»»IרØ4<î2Ô¯º_²¤ªÀÓ~NP#0%Í4)¾¢¯¾ž¨Iû¾(-PÒ=¹²µª±´ÿë5#6--/Ó6ر¶G»ØM,V=1ÐÀçЯÃÅ·?./13»¢ž®¢¥³Í°75=5'#-,)"ÕF@íAPÃÜa²¾¾¯©ò﮿7O£¿­¨²YÕ­¹N>-%$)#2"N66¶©¯4ÍH8KªL'R¥Ã³› ´º®>gÉÝ0#)'?4#,.22j²§¥¥¢¥®¬±µªÀ2,;5/,J.H[Xèʺಷ¯³ÃÈþ·³¿M0!&+9N94̪¡œ›¦¸ºªYUÊh*/?:?º»;,e+½ÁÁ¨”–œ””¡³Y!!7.2IB2:»ÈËF="=tÎÌÈ23ÅÌç²­ÇA¬§¥œ›³¾º¾Ú+.#"--,<ÜÉʯ¾k¾§¢§¥¬ç»ºŸ¶¨µ8+.ý?:?-%1MŹ£·;-T;.;0-UV¤˜šžšœ¡¬®=$'B$&013óÊ{3Hj&/ݱÀÂó24gÏÿ¸µú·¢§¨¦¯. *Ǿ®ž¬¨š¡·Ì/2MêÀ"&%&(¾œ¢”Šž˜Á4G0% (,S90.ÍÅÆ¥š¨Cu¿]Ó¯¼Iíµ«µ­±K,&*'D93VÝÜi¼`'3:6-G®½Ê­šŸ¬µÉ4;ÅÌ),%)$(/NYL¦ ž«¡ÃÁÌ';.@³Ÿª¶¬¼´Ë>"8Ìo;7ï6ߢ𶷭­¿ª ¾'"'BGdɶ«Ÿ¤°ª´B=9<'c×Q,4X,;¶e6,4*5¾½­¿½¹²Ÿž¢Ÿ¬A8Ô0!"%S//ê¹Vʯ¹aì±­¢¤³ÅM-+02,K5®›Ç©¤Î_ž»Ì¶©%'8L°˜–šž¬ªgv796S,-<©²>.<¸³¯º¾B2i¹D':¶­¥•”L1«²GDB$2UÝà--MǼºb$/Õ,6¹²Þ§—¢§¤Ÿ«¦·8)%&,?龩¤¬Ä¹¬ÏΩ­C+M)/ϨƩ³¿ZŸ¥Ö(%**+59®¬UZÃDB°¡@I­¢µ©«í6:Ï®©oBSNÅ©î5Ï2-¬žš›¡¹ZØf^Ì\8¯¯È²­õ>E.#'& d ¹?¯Ý)Ú£A%A3/e®´î¶W­¬Á}¤ª;½£7%;>4*´M³±²¯žœœž®BµÅ+3- $9Ü9½žŸÀÎɤD$7C.HD* -@R¬Ç8ݳô¸Ç,N=*&5/&B¹ÇÝ¿¬µ¥¯á4&"OC=*S&6¦›^Ú»,)Ä8-Y?:®¯LNý4:»ÉCÛ;/Áð=*3'-Òº\Ûªšž¥§«0!.'#>ª¡¡¡À¢ŸR5«3O«¨·¡ Ìv4%4À,#ZI8Í÷).=,Ó½Õࢮ®¶¥Ý@+Ã9327-$~²Ë[='<ß9<Æ.ͦÁ«À+1®1'(1,¦ ´µªOÎÿ,", 4®±É¿¾ê¯¾> 0//6Ó騙§¡·KÎÞ4+$,cQF:&+³¯½½fS³¨¤Á=,¹ãmB(*9(?ØÂΫU¿ÂhNÌ8.RI×¥Ÿ«¸Ù,?»Ç/2"f·¾¾9!%0g¸MO§›“‘–¨·T(&(-#7Q[H«´è/!%,Üç»û¹¾¦Ÿ ®¾Mѯ¹ÍɱD5=+-7¨§¢“œšœŸ¾¯Ï@6-!7Ëí1LK穨À±¶vÃÉOaM,':4?½ïE׿gÓ¼64>,3ݱఴµªª¯º«3:891M;,06d«È::&*°¼°ž°£˜”¢«¹,# %3?"HÚR¼¨ºXt+ #&"(=cå©®?F99CZ8/4°¦¬¿ÏÐL8""cRÛ½¥ª¶©ž²ó@ÔOe/ U¼­«µ©¦™—œ­G.ÕK¨–œ¤›œù-g-*Ù´;/>"$,%*Á°È÷Ÿ ¥ª¢X$!--EÅÁQ78¼Î<,L=Fݳ¥¥ž£Ÿ·#+Æ'<¤¥¾Ÿ’³/O/1¬¾UD;Aµ«>14)+H¶ÊôºÁ´¹ÿÔ?;AA/@Rå7AUN?¹S=:¿¼ºÆJ1:*çG9"/¹ÓÛž™·»½ë(<.+00l¸ª§¢¼5]ï9n¼(&+¼\G®™—–¤»ã>( -@ÈÌ먡¥¡¾,&Í»-/,!® ¬¼^ëG¬¦·?F=ÕÎûàÁ$ÉÂ4,EÃ6?¯§Ÿ¦¬¹u/o3%=9ë¶­=-.$.ÌÉ¿¦Ÿ¡ª›¶($%%C·Ÿ–—Ÿ¦©¡ÉE°íO¬£¨¹ÁÅ2*6Eü½¨¢©ÈÄÊ-%7,4¬«§šžånÂ*)%=Q/GEM­›¬¶§¤Æ«³%#&(#+½£¢³79.^hìßA=EO4/2H¹æ¤›ÇÓ¯2$Ú8-ɶÆL"8¼¼¡¬ì¯¨3']*I3Ш¤©¦£¯Á/25/ "/­¢£Ÿ©§¹ÐS-kL¸­J¶˜Ÿ³Î>":+C¬©Ž“²Æ]* 6 )N.e¼­ºãpA=>²M}»©Ç¼ºo¯Æ5#/&;«É.Õ¬¿œ›N>/K®K"%ÄNäÜ++À´Ãª­N°oQ²ÌbʼÅîC¾Óº´Ú'%" Ξ˜–™±¬¥Ó¼ ¨;¬¬;=7":¾\a1'ã¨ßEµö²œ’šš–¼*(-9­§¾C8¨¡–‘š˜”@#3"¿A"Á/ï7. (P~ÂMÒ³Á§¸#$)T²®¡”–œ›¤¼:4124% "=ÈÙ^­¹±¥Ÿ¬5X±Èj¬­‰–ŸH&)~½ë¤¢7/?)K¯§¢žŸ®&?µ›”›©¢¯Ûÿκº802J¿°Ö2.[µ?Nº0<œ™¨X5'FÏÖ³¥´°¬k4A/í2##)P4©—¥”™, %ʺÂI17H««b/ô1#/(#ÉN]çáܸO*F=¨¢’©7" ͨ­£‘›Z9&0¿É¹© ±¹Í»,'6  *¾®¦˜‘“”’›¼¿+!#!(*%'й¨Å¸¯µ­›¡®ªª^WVÏ·V?À¨¶Åh34DY«§Ÿž˜®¡œ¯Ø6('9S½—šžœœ¿[LE%M?W·™ºÂ¨¬;Ÿš©«£7"áͺWC¥¢¸²¿±£˜šžÐ Пš¢V;:ICPŸž®¥¥*ߤ Ÿ¦Í,,8#@½¶¤š¥:(" Ο½EDJ,²¢ÂE'%;Èê<=%+6"$)Vª®ðS45ò¼,;Å´³œ§B5¸¾ê9K-\ÌϦ®¸©•œº¾©@,4$ÈmWÀ¨¦¨¶¸È¯³¥œ¤?&Þ¹œ›ž«Ã.(÷¯Å¬§{1fC%&=ÞÇŸœ°A $Ð^;̾+I¡›°ÀÓ#5Ù=<­´£«Ö2'¾Ð­®¨¹¨µBX;/.('7^¤ÁG/"$è©˜Ž“”š?  8­›—£¸Þ;!*1*#=ôAÄØ°È¯¯®À©§:/Í!Û¹ž—•œŸ:($%ÂÃÁ¦˜º/<)B·¡ž«¯¸4 !7N¸Ÿ¢¢žª¥[,&ÖBº¬F+©ÃP§¡¸¤¡®©­JF?&?Ì—˜·Áª5*()¯œš´+;º´¢ªÇa,+>ê­½A-¹Ú¹œ¡(ʶÑÕÄ++?ݨ°C%%$ܾ¦—›­°é"8Cÿµ«Jÿ/')Ü£žŸ±H( 9>嬩§«½-,. @M½Ÿ¸©–¥ç_)æO)/¶²«›¡¨§».<»¦³-)%'#<¦®œ¥R%× •šŸ«¿Ì- (ŸŸªž”±É¼+*8N¢¬´±®LÔXK:»-!#/o¸§¨¹8*(!&NºgÌ®ì;««l¦¶­Ý6'(§›œž´20O-(39¯ž²Á§«§š£ÇV?,3-(+=26.=¾î¯@&¸©«—›ÍV,",Lä©¶/&Ft«—¦AƱ°—£Ã°1 f²¬Ÿ¨<9ÁÂǸK*C®ö©““š“¤2""%LÅX8&1Æ˜Ž—˜C$.':¶¡³²¬W-ª™¤¶W½Î®³µ)ͧš’E$]®©Í(ºŸ‘¨/. ñµG-8\J¶¶=&./*Ý©³§©ÕG9Å¡ž¦œ¦?éÆ*!/D£©´¯¬H:W­¥¤³,.½²ÒOM",1/«¡\28?£›–¦8Õ•”¯!&.®—–Š•Ÿ»-#0X¦–šž­kÉ t6¨¬¾Ç2! "?@&5¹¶¬œ¬6/8<« œ›—œ¦ª­P7²·:# -Þ/2¸È?´»)&-*++K¶œ‘‘œ>ešª^G%i°¥ªË>p7,¸¥O¾ª®Ñ¼©  ©ª°(IXª”™_"(7©™Ÿ¾%<«“š£Í(-%1p·Î[Å¿ /½¶˜˜¢Ï%"=Ƥ©Ê ZÆuݲYê¡ Ÿ¤¨6&.M² ¶ô=f¬¬Êø+ÏøY^;+ %P¯­¥«­°¯º1%%/;N»°äS­´;¬«;'Öº±Ÿ›ž›Ÿ¨Ð´ºÞ´œ §Ÿ´)0³­¸£ª®ÆrÀ´Ÿžœ ¢¸Æ³°9.-6Y­¢œô#-£¡š—²°¦Í#¶ŸŸ¾.8å½´ÿ4“Š ¨Ä53$+\Ç¢š¤I%,QA)8??J®ÄâGO)$62æ«6<:Oª™š¾'¹™•¯A;19°¬ÂËŸš¢¡³&1å¶£Ÿ¨·¯¶®®³®¢²8*4B¥”œÊ%$¶ŠŽ‘º" Ç ˜›¨1/4Üœ—½%°ž¢§§š¦¨žœ¨æO+>X›œ˜¦<Ö£½ÜŸÊ.%3ý©™‘Œ“à(,/îÕî55$;0()#/«–‹Œ—¹6$§—¤ªè'­Ì¸®M<»¹5ͬµV03‘¯,'$-6Ú¢¢»E5'.!"]¾»¶¶K#$D¬žšŸ¼ &$"C–’¬(À¯Î;(Ò¸)%;«“‡Žª=?¬•’Î 8”—À DÏÍÒ8%(##d›¬G"+­¬h55¹‘žK' _ž¡¯Ñ:'oË®œ™¨©¢ªŸ•”—±*&8ǧÀ/'·Ÿœ²#¶œ¢4·¨¢¢¦›•¢I.41:Øß#!'5[*,î®­¦Ÿž², "m¿½Éß-0£”™¸>²°.!'»ž– ¼ÊMé±¤š“Ÿ·<¯§®113¦™Ë+*¶”‰Ž©'EœŽ•£ºÎÓ͵¯  Ÿ¯N+6Uÿ1â ”˜¡ö-#,HàÎÕÕ8##³“Ž¡)@®í(%9³—‘˜¯40,#ø˜ˆˆ¸> %0*fÇKNÌ;?ÛÿÁ–¡¢N*6­™¢¥º'6²ºò.%#@¬’Œ—'Ù¤£ª¨é>·®0(:š–¸(O·¥ŸÍ".Z›‹œÈ.#72ëmÿ®9-8'=À‹ª )›ž»8%+¸“ž®È¨©¸6tº©–˜Ú¶Ÿ³ÑÐ4,«©Ú»±œ”°)?뫘Œ™¼Âß8¿¥§¦§½ß§› ÈB]ŸŒ‡—d!)Î5(Ë‘¾I9*Ö¬/,_<(-ºš¡Ì/178ª ©¢bñ­œ˜¬K+/@³™šœ¤µë,.(/U««´Áå+# (dÛ#Ï™˜¶'oÎ.6²›˜Ñ+L­œ M4>IÛ­Ÿ¨,!&9âš‘šS+/¾@2<%-F+&:Žœ6"³Ÿ§¦¬û:æ¯U&)¿¨D/©­¶ ¬4*I#9´¥®¿.)).?ÈJ¦™š ¨¸¹0&$+Í-"$'$Rd+#SÂ>çÿ²š™·GºÃŸ’¥ï^²ØK- Á޹B.*¹™¡´â/¬˜ÎJ.$"7/!.Ó§¡‘•™²) EF^\1Ñ™˜²_!I½`+)f°º®ÈÈ¢š5 /¨§¡Ÿ;/Y¡©;-®§®Å*=¦œ¤º2 þ¦© ³åÍ•‰Š§"!·•¯=A(:¯82¯¯°Õ(#n£µ#u¯©»¡4Ȥ›7*i¦š¬AHž™¤¡³NUºsFÁ=#* ªœœ¢? )Þ{.%®ˆ”ÎB.F3A2NÑåK"%ݯ»´Å 5F¼©¤o QG+¶”œ+)(!¼ž—œžŸ¸CÊ–š§Ö8ß•‘±Á¦µWÌiA[Óï0¨´¯¡¶/-Ie7-&± ÈØ_%'# #Ì—¿/¤™¡½e¤’»³½:9«µGª¯ Xš™¾+-Z¢¨ž›–›«½/Z¾£™’Ÿµ\¶Æ{# ¾µËÅÉ&3Í/%'&{•™F'¹œž¹$&=³³Ú_O P¼ ž£©¢ž«Ù9ꘕ›£¤U»œº@oÊ#;°¾¶©³¯¢«(À^op­»¼¨7,Ë´P"9»»3RŸŸ¦¹P¦Ÿœ£ÇBø2=´â(,®¨<<«Ä³½4'0)*7C6>.¯ ¿$$š‡±M© ²¤ž¨+¾”’®%Ík)Á› ˜“©s½ ­ªW$ .©¯@"º²¥Ç$,/E<§¯Î$+F¿9_%<)+»¶Ÿ¥')=«–œ¾DLúª’›²6<Ô½ ¡Ã#-Á®¬¥ËB4,*-¹œš§-"LÃI.#[½UÈÑÔ¯°á%!Ý¡œ»í,+S­¦¶=.^kʹ¥ž¨ÝQFÂ¥Z$.Ìœ¥H%!3=)#/?7.S?Ý+$>»*"I¨·.-$*?<$7²‘”©4^­©ÅS¬£œ§'".ü¤ª;!·––’­E8¬£ª´å'(")!*ÖÂ9;eMî1'2¤¥ªÉ*%É¡¸Å("ÅÄý¬¡š•¬´²G­š¥Ç¨½!0K).¼;I5Dç>',$>oÑN¬¸Þ7,)d§¤6M­[¸Ÿ£¡–›»¯B*( ($(L_8¬®ZâK ºçb³IH¸¯©A$-84*%8«¦¡¥<±ªB6<9¸ŽžT"!È¿èh¾àM0@D;ª¡;$Ñë>µk,/)Ë·9  ,;æÃ!C¿A? 059*3"+L#+Ÿc*18*:-!W ©ÞCL°Ÿž¯i`¥›¢­¹B­Ÿª®«¤œ–ŸÒÿ« ª6Õ­¼›•§;'+->W,/Û°Ý#ÁÕ¥Ý;{®Z;·•‘ŸÀ+'<âD98H°øÏ³¢œÆ3748¤¤O_¡®¨é,F¶2#Ö¬Þ:+0¬Ÿ¢Ê #ï?K³·C­K/8Öž­ž¦¬ÍO$?ÜXœ–ª¬º¯?//×½³Ÿ«Í§ž¦²§ÆDNÓ££·bÿ»¸´¿ÐJÉš›ßn«®£™Ÿë=-#&L¸š£¿8?l­Ö-Pª¨¬³T8ÕN¼ëÄ& &,Nœ”˜¬&ª—ª¼°·ª¿3N="!½›ØÅ$+*¨¿*5¯ •œ§Nc%$ÆH0,¯›—¶8 )!'5;µ·¸".-- W¾¬¯>"B8©¶!".Oÿ-'*-=®«¿¢œ¿4[®Ã´½8%LJ/'6+-*ů³·G&/;»ž µ¹½»™£C'  Êë/<ɰü3S®¯¸AÀ¾<\Ÿ±W]Ê/.¼š ž«°º¨Â¼6)H­Ÿ¡œšÊ;lm© –¢¨©ÌÈD)6­ ¥µ: .**2_cM9,RÎFȹI(ë¬¹ÉØNÇÁ°) §›¬á./Á=:˳›˜§_(X¦—š–¡¼1vÍŸ›§[¶ÓÇ ¨OHÓØ½°½\O-'M¿Á¦¸,$-18'I8À®¾ð&.åÇϹ­¬¿¾º°íÅ­¬:[ž››Ü:i¼3ãÈα£º®³¿¼¡4)²¯Í÷@,Ñž¥y"7­˜œ½g¥ŸâM$#Eš’›.*½¬šš¼³ÑÛW¨¨Ó¬ ¢¬©fLM-6§³x«°&0&ª°# ÿ§Èîè­««V%&%.ÊŸžÏ9&')kÒO7>§›£¥¢¯Á´T@5L£š¸[ÿb780*X¾¼G$.Zá;#&%*.@­´C 4)0¿±—¡ª²àÛ´•——œ¸¬¡œ•›¦X2w´¨™¢½L×´È-/þ+*&ϲA,-4/.''/jÇ·F?/$>òªž­ Ÿ£Ÿžš›©±§ž—œ¦ª§¥Ÿœ®R&'&+ÆD!$9§¤ºÑ'#+7©´=+$$/_8>I<¬®,&-H­Ù//$+n»©ª:-%-=95.Iu¥›˜¤®³¹®Çº›¥« Ó6<\¯T¼§¹u7,43C¶³µ?,"*Û¸¾­·¾ œ¯=/O("î,'Í´,! )(?E_2$2Ü:,EÑS3 /˪¤¤©A;Gý¸œ­Ó¢ž—­ÏµÌµ›  ™–•›¨¥ž—— Ÿ¹»®¬ÐÀŸÀ77-(/¾Ô/I4MÓºÃ.*/_½£¯`ÞJ PIºÁi¹·³žœž¦0,D1ºŸ¡¬Æ?'oŸ—¡­§I,·²ä¶ÌTѰº±C$)%/#+8-=³Á4V2',Hÿ406Ï­¼F¸ÎíŹ2+4?=?8*+2/'+++$"(##(%!"* !%!'=IêĬ©³¶µ±´±®¬«ª¨½¸®YC2."Éœ¡§œ¯=<À­°¹¸«Ÿ§í@m¹¡«(à´£8$M¼¼Ä¿-!/Vÿ;Í1©.,22-*5))DnBÎ3-ϬÌ)K«®2"/ßË8($+*%$*;Õ 0ÌJK?'Ež’œFT½·®®°¦—˜˜šË>ÛÈÓͳ·½¨ž²D-EÅÀ°ä+;É­®P+&*c?Ÿ¸Iƨڧœ¨;3»P>¯Ë;>p··¹ã)3³Ê8$«£¬®9!¯¤§¥k;ÑÀ¬¬ÅÏ«ª¸w?>>O¸¿T¹^µÉ40/")®¦¿IÉ4/0,,3,&4/!'Y2º¬ž  œ‘žÏ¸¥ž«ñ/¯›“¢ß+/ÃA #&)&(/«½4$:!#+%,44+ !K¾¤ž¥¥žŸ¦²®¦ ¡©¹Ã®¤œ®|B3¯×9G±©±¦¬u;įª´­ÄÀ²ºÅ¼@Óž¡—˜¢£¥®¯¢¤¦¤¡œ˜§Ôf½»Ú4,>B;Q92**-/.é¿E46Y55.KOï§§=CI0E×=.>_¶´ÈÑ·¿±ä´·º«Ëº­¤š¢­¨Ÿœ¥Èð?dǶ¶ª¢ §ÄOö¯¶Àgj踪ž¤µÉ¼·´¹¿ü=:¬›². 1¿¥ž¨»]TuÅ¿¼§™¦«¹Å©¦¬¤¬¹¿¯«±ÃW\L9;+&'X°V$$KNÈ(",.%'2$.92:ÛMLÎK{¹ºGËØTT4*6MÞR/:J/ &&) :7/.!)-'(7>77GDE¼««°SC>2-18EN)#-0**. RD/JFO·A0:01è4SÈÅÀ°E*18-"$"+ß·±Ð)"m­¬ÆÿHAPHÎÀ¬®±±¤«¥˜ž®¥®»ªŸš¦£¦³¸¾Á¡˜¡¬±Ï­œªKþ_̱ ¡¸üEcÔ»´ÇÛ;A.(*2:ÉÁ>/Z6?ÛEÕ­¹Í¶¸¬¢¦¼ÌAD±¦ª²Ñ>¿²Æ¯Ÿž Ÿª®Ÿ™š›£ªÈ˺¾®²¾Ð¿ÚY-*8>50YÂÌ6Ckη·ÜéÁ³©¢¡Ÿ¤«ª¬¿Í÷ャÒ8'#.»°¿4",""**( /O[Éé-ߦž¡µÒ¸ÎJSò¶±êIÈ:-00*/54=R^7'C;2MG55>16:7QlÑ»ôDÉÄ\Ït<ײ¯¥ž¦¯³¬¦Ÿšœ°´—Ÿ£¶BI·´Åk5/+&Dê}APÈ»Ù'(B}³ºv8)#'.B¬®5/íÿ½¥¥¿úâ´¯¡¢«ÿÀ¬¦¡´=F¾Ä³°ÐYÓÆâ?8G×¹ª°û*B¸²µÒ((,4,):* ,;/+)!$%&#)8+*D¼]>,/QËË[>WUBEE&-N<6=MXºÚÈ|CIM7:<,),..K·®^)2üϬ¯PH½°²´½¾ª£¦®®¯¶ÄÃkÿꪩ­²©©®­¡žœ™šŸ œšž£´µ¬§ºÿYîÂÙÌ×?&'81)3[N7;2.-/:IÅÁ¸´®¥œ£³°°«®¯¶«§££­»ÅÁ½±®¥«»Â¬±¬££¶ö?A4?+/óe?86PEíÁK/4ʹ´ÇÞ<8/..8>2DM@Z¼Í?2OJ81p·½JOgöñµ¸JE¶²ÊÛL27ßÕþÚÅŸº¸¶¿ñrÈþÈ»ÚN½©¥­ºÄÞÚ¹Ëâ³¢ž ©®¸©Ÿ›œ¡¼D;7ùª±f=($0D.&,+! &#!"')*$!-0(&"#,,2/'&;rÛ;"'LÁ¬£«¾¾³¤¢£¯ºV:F¦ªÉ¼­®«¦Â_\ìhÊÃÄźd248.&"#*-(,2;5>;-'/DHK¾´ÁdC1:ÒÉÕS8.20=د¾Ì8+$.(!+KNDk:>Ä·ïT?>O|ôL5*-9=EM=)%(:>3-##%*:7/**.CJ.+KÀ¸¯Á¼¼¶¿­±ÈçÍM<`ù>I½¼Óä_rÁ««¶E@U½½ÍÔâdF=/.&)*3KZ;Lº§Ÿ¨ñ6j´ª¢žŸ œ›™–ž®É¿°Ÿ¡µÈ³«¯¸¶þ99CEÞ»µºº·³ÀªÍÓrF1%!"-/0,*!&(& !'./)$$$%*+)6k®®¸|KIPů©¯·´§¡Ÿ£©§Ÿ¢¨¤¡Ÿ §®¯®°¸ÅÁØ@/0D=4>çÌÉÍH66.!+l±·L-.>IM9+6^Ôçk,$)7ÕÄJ:>KHD8KO]ÜNCj¾þ:04MðÂY?BT¹­°½Áؼ¬±Ì>,+6.(% "135VE3GÀ¶³ºujõ²­´´ÆL:-& "/NUÿR0-1/JÁÎDTH@l¼¸¿m÷ƺ·Ââù·­°°»Íɾ¸·ØL<1$$)16+&'''.3.&'-.)&#'/:7/,...4<>:A4-15./.,¹--2CðÑ;0ï°¥žœŸ¤®·°¹ÚŸ¿ü師®ÎKE_½¶¿d.,=B-.â¹¶ºÆ^R=.'%,9IE.$*:89DÝ¿µ¼ÎÖȽ¾ígÖ± Ÿ©­§¤¦¨§¥¨­±µ¸¯ ›œ¤¼Ã¸·¶¯À5$%/D>NJ1+1EI6&$))*2:/% &-/:6-(--*#%/Ͻy:694*&#"*&'7PI7$(9ZKENzɸ½ÚÚµ±ºÍs๼ÁÆÓc=4Õ½Ãß;5KÛÆÁÇÝýË̺­«­´¾Á»­©®·«¥£¥³É»¬¶Ék嫪±Î[̳·¹¾¾s::A9.)#!&*/::/--)*5}ÕD6@Nı«­¬¬ª©´­§¨¬¥Ÿ¡¦«ª©ª«±¼ºÇÏ]?PÒÍÛÏz|¾²«¬·×ZS⺫²U<îÆÏN3',;[\A0+.H·ª°t8MJ>6.,-96,!))!  (/' (/>E><>900?504GOÏÁS8;[ÝÓS68T¼­½fGýÄ·¹¼·­¦¢¨¥¦¨«¬¬®«¨¯ìRÖº«ª´¼¼¯¨¥¬ÎF?Oĵ¹¾·º²¦Ÿ §¯ÀÐÓÔÜâa]Ë»¸»ÉìXIImȶºÜz»²¸ÃaFVƾÁf@RÆÃ]A77ZÉ\3*'*>>A<;HæàþÝ»´·ÈðçÛÎÍáMMi¸ÀØÀ³¶ÂËçÏ·­«ªª®°ºëc̵´¿eZ[sZN=49IagP3/4=E@+!!!#!&*1E?>Jz]8,()*)%)*-0505<90/+#'+,'"$&-0+# $*0628842::=SL;>}ÖÏë\G;9S»®­°´®¥¢¤§©®¬©¥ŸœŸ¡¦¯²ª£Ÿ ¥­¶µ«¥©·ÝSq¹×_[UÝÐmA5.081*(+%).0-,,,20,##*..,/-*%'+1AQáȱ¨£¥¬°®¦œŸ¤©ª¤ £¢ ¡ žŸ££¡¡¡¡¥§°ºÁ¹®¨«¶ÈÛÝÁÁ[1)&(/-&!#',1/*%#"&/=PßÉÉÉÅ®¦§¦¢£¥££§¦£¢ ¢££Ÿ›šŸ¯ÏÞм±°ºÎÚ˺³±®®³º½´¬®ºô<677@ýÊÌç[?88@E>;6.+*)*,/--2/*)+.28FF=8CÝÃÁÆÍÓÖåÔȼ¼ÁÑjH>D]ÉÂÈʸ¶­½¼¸¼ÏXB96=SL=2++4IF:0/27E]gcè½®¬¯²®¦¥­»Ì͹­§¥§«²±°³¶³ª§©§ Ÿ¢¤¥§£Ÿžž¦²¼¹²´ÆçßçfZgI8/5CE9./0/++(#!!#%$"#(+,)$&/AE;/)+:ϼËûbξºÆüSéÀ¸¹Íãè»®­´ÇÓÙËÕh9-,:÷ÉøA969>A>?TÕÐW<3-+,/Jз­­­¬­³¶°«§¨«¯¯­ª©ª°¯­©¨¬­©¦¦¥¤£¤¨¬®­¬­­µÉZgÖÓÛÛö[U~ÛïZ?9/,&$%&#.! ##$%$ "#"#%%! #'**),3::829La[TzßÞÿgçÛeS]ØÅÉáaTÝÇ¿ÇäNABMYòêiOABR^F407CMBAGU|Ì»°°®¬¨¢žž¡¥¥¤¢¢¥«³ºµ¯¯°¹ÅÕÛ÷_[þÎØ_MG:4.,-288-$!#)--+),.469<<5/,,,*++-*%"%-56249A?AFw̽¶¯®¬©§§ª­ª§¤¤¦¨©©­²°®¯´»¿ÍÛqÿÔËÅÁÅÉÉÉÁÈÁÅÉ˽¸¾ÉÉľ¾»¸²´¹º´¯®®°²°µ»¼º¼½ÁÌÑŽ¾½¾ÈÍÍÛçn[fUSM\ÿ_?62462,)-443222100/0/-//004:EEB>>AAHSRIGENfôPEAAKSSEWùÓÓÓÉ¿¾¾¼µ¶¹¼¾Á¾¾ÁÁÁÁÁÅÉÊÓÎÇÆÉÉËàSᆲ©­¶½ÆÒɼ¶¸¼ÃÊÊÌòI=88CWäÔÓÓçÿ^MNgÝÍÈÅÌçQEA>>DIE=5236547AWPIAAIIEDSÊ´±¯¯­«¬­®­­­­«¬«©¨«¬®¯°°´¸ÀÀºµ²´¶ºÄâREEMM­=866402462/0220///////224246<<8:<<:Wkh[oäÎÙç÷çÿßÛÍÍÍÝgNEEEIIE>::?FMK>8:@EIEEEEEEEIIPS[USLN[îçfUMVSUMMNZOIAIPPMIMViéÿaTSMKM[OHAEQgz\OMS[ìÐÁ½ºººµ±°²±¯®®®¯¯­«©ªª¨ª«¬ª¨§¨ª­¯¯¯³¹¾¾»»½ÎøW^þçoQMIMIE><>JSSSMFA@<91144668:>GMMKKTêÏÉÊÒÍÍÍÓ^HBIIII?<<88::::<=>>=<:51038:<<::CJ[[aSTYgúÜÓÓÓÓâçùÛÛçÿ}[[ÿÜÏÍÍÍÉÀ¼¹´´²²°®®­®®¯®­­­­­­­­­®®®®°µ·º¼ºº¸º¿ÆÚçuÿÿqg\]gõççîôççççççnYTegíf[[vÚÍÇÇÉÍØáÜÛÓÐÓÓçrzÿÞçÓæâaSMbñÝýu`gTSLEA?>>><<:::;<<>>>>>><::=EMYg÷çÛÛÛÛÏÉÉÉÉÉÉÅÁ½º¸¸¸¸´´´´´´²²²°°°¯®­­¯²´´´´³²µ¸¼½ÆÍÛÛÒÊÉÍÔÿ^SMFEEIMM[eTKD<967;<<<>>>>>EEEIIQ[[[vgx~çßÿçögÿhÿïçÿÝÛÍÍÍÍÍÍÉÇÅÉÉÍÉÉÅþ¼¼º¸ºº¾¾¾¾¾¾ÁÅÉÉÉÍÍÍÓÓàÿéj[QIEEEEEIKSMMLEEEEEB>::8<=AAAA>>><::<Î>>>?AA>><<;::<<>BM[_x\SSgÿÞÛÓÓÓÛçÿ][SSS[SSMMN[SMMMMSSSSSSTd[^[SSSMRKINZgõÛÛñç}zÿmççnÿ|zçççÿÛÛÛåííiigsÿûsg[emòÿçççêéÛÛÛÛÛÛÝÜÓ×äÛÛÓÓÍÍÍÓÔÓÓÓÍËÉÅÅÅÅÁÁÁÅÅÉÉÇÅÅÌÓÛçÿïçÿwgwÿgoÿhkÿlhëðlçøçççççuÿgîÛÛÎÉÉÉÍÍÍÍÍËÉÉÍØÓÛÓÓÓÓÓÓÓÓÓÓÖåÛÛÛÛÓÖÍÍÉÉÉÉÉÉÉÉÉÇÅÆÍÙÛÛæÖÓÛçõ`[[[[[[[[[gcÿkhÿogÿÿÿÿgÿogÿwg][[_SSSSSSSSYMMMMSUXSg[[[[[[lggn[[[[[[[[g|zg^[[[[[SSSSSSSSSVMMMPXSSVMMMMMSTSSSSSSS[^gy}gîgÿgÿÌèöççççççççççççççççççççÿëgÿogÿwgÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/sounds/doh2.au0100664000015300001300000000736010237645271017010 0ustar callumfid.snd Ð@X`õÞéêïêÚÝéíñèþgTVuæàt\xÚò|úÝÛêrséÛîéãzë÷ìlba]ü]X^X\bhùûèÛßì{çéèþ}óîåþäåæàýo÷êÝëe^_ekb[eãì}ôgòßÙÔæäßâqYgìoZVZchZ\goõöÜÚÕÎÜïtpóÿ\T]îÖßààäìáí|îôtngluqjltûùsm\_ozgjæmôÜßÜæqukdü÷ùèéjkìôôudüz[fi]ly_÷áÞÙÜîîäíâùìïäçtpblYPR]nìüðûçÞxslìàÞãëèozþYVrrþeiøþdbxäÝøíïØÓÛélðûÚèpòåÔ÷Yjïî_NMeæZaßçßêhoZóÎÏË~[l}ÜtK[éÍÎYSëááîo^XM]Uý¾¾Î??깯¾Hɤ™›À"8`ÔÄÌ­ž›­O²ÕP¾¥›¢7+¹°ÇÛÉ©ž¦8)¾®Äͼ¥«'X¨¯^P¸ŸžË$¾¨ÄHO·Ÿ¥H1®¤»HÚ§žµ!¾¢¯MCΦ¢Á"'¿¤«zOÈ©©ç3µ¥¹II_³«¿.1ͯ¼QçÛi÷¯î'-=½°»ÏLEºª¶*!G¬©¸KBÊ««<)·¦§¯æ@Ç©ª;/¬ž¥È>Lµ¬Ó *¤¬¾[=د¬L4¯¢­æ;9ê¶,#ÑŸ®>)3º§¿'&Ц¤«Ñ,.ݪ­*)¾ŸŸ¿2,J«­3!#X¤¥·B-Eµ§¾(#Ϥ£¯Q*7¹¨³+!4¶£ª^)+Nª¨³Ÿ®4%R«·Ö:6ϸ¸ÅD>g¼°Ù, )í§£³[.0:ZÁ¼¾ÇBDϰ®C&)?§¦F..˧ªÔ0-l¦£ǫ̂©³ÏzfO7TÓ³´éG`¹¨Ò, 驞×$Ož—žK"'¿ªÌ.#½ž«.+µšš§J:¥˜¦/F¡Ÿ¯G%G¿§¬ÄL')ܨŸÄ$¾žž¯+"^«ž¦µ>#(ø¦¡É.'¾© Æ**𪢮Æ1)0½£ Ó$Ù£ž«;'>µ¤«ºU/,H·¥®8$(>¯¤¹J)%O°¦¬Û9-1ȦŸ³%9£¢¨C4Ç¡¡«¸.*:Ä£µ9&Y¯ ­9"!J¹ ª¶G+*C° ®A%9¶¡¤É-$)I­©¬ÂG,-A¯ ¯>"$;­¢«ì+#5»§¦É;''M§¤=$¸¡­6"?¬œ£¹>#&{ªž¶- Wª¤«=&*B誳ã-,X¯¡»/@¶¡§ð)#.}ª¦¨¸B+,K«¡´:"9±¥¡Ë( &G¬¤¨¸?()A®Ÿ­<&.±©¥É&!*Þ¢¡«Í-)0½¡¡r'¾£ž«,&?¬Ÿ©µB),O¬£¼2%i«¢Á6$.𵯸ÂãV4DÓ®§Å6 :¼£Ÿ·9$$6·§Ÿ¨È1#(㥡»*:«Ÿ£Ó",¾ž¡µV+)B·¢¡Û%L§ ¢ï-½ ¢­è*&9¼Ÿ¦Ï'&N¢ž°7):µª¨³Ú1(9Í©ª½7&%1º©§À8(,Fº¤©ºA+-橨¶91à±=7·ŸŸ²J&#>«ž¨9(°œœ°+C£™ŸÅ)$Éžš®,.«œœ¾$#d¤ž¤¼1!+]§¡³= .¸¢¥»1+0X¶«®Ã:/6Ô¬¹Ä/!'-¹§¥»3$)[®ž ­='&A´ª¯O% )^§¤¬N)'6ɪ¦¯\.5˧§Ð(>«œžÅ%U ™žÉ#-³›ŸÇ#Y¢–Ÿ='²žž¯5$(Eª¥¶B $A·¢§ú.'2Ï´®´ÌC;D¼µºü'*,P©¦ªZ*&5ܬ¦¯í42U²µÁ0$,´Ÿ¢°2$L­ž£µ@*/X¶³Æ3(*?µ¥ªË2%0Û®§­á6/Lº­º?$-Ϥžª@ /³ŸŸ°9&-f¥¤¾53½›º/!I±¡¦ÆB3:Ç·Àô.+7Y±¬¶ö4.;ܸ°¹ÓXQüÉnt708;¿·¯ÃN43EÞ´¶½éXPÓËÖb/.1<¾­­·J16DÁ­±¾YBb½Æë7#'2ݤ¡­Ù)$/Ù¨¡°_.6Á¯°\%#G§šž¿+#h«Ÿ«M/3á«®Å- -®š«/>²Ÿ¥¿L1DÔÛÇ<),,¼ª¢®G(%=̧­¹ëPUÔèïB*.,ܱ¨¬ê0)8~²­¯È}Cê{ãx1/,7Ƭª°M11=ϵ°½Õ\˼ÝW0"(0Y§§«Ä/)/n­¥´Ï8MЯ¬¿;(&6¿¬¬Ç=.(0`¾¯®¼ÚZPÒ¾¸·Çì4,(#9Wº¬°·ÇNI¿µ¬Ä5)O¬ ¡µ0/X¬©©¯Æ[ϸ«§Ç. i¦›š¨L)Ï£Ÿ¦¯ÍXNOϸ¹i1!,穞žª|(!';ï¯ÃH;Uº§©¸;)¸¢ž£¶fêÈ­¦º81µœ–›¯0.¼£¢§·Ï_V]ȹ¸Î- 8»¡¡¹H'(;É®·é917Ö«žž­PZ®¢¢­¿í˾©«¾:*駱›¥T"$V®¦¤¬´¿ÆÀººÎ2#,[«Ÿž¤´P.2=T|D=9"$\¨š™žµ1)ذ£¡¨¶å\ù½¹Ì>!"Q©Ÿ›¢®ÏîN>6'(+3\¹¦žž§¼=0̨ £­­¨ª§¿."Tªœ›¥²C%"'A¿©¤ª¼ÈÞ¿¯´Æ=Oªžœ¡¬³±½ù5(Þªžž¢²ÔD)".O¶©¨«­«©£«g%-¾¤ž¢©ºI.%$,A᪫­½Ôé[eC/'$*8Ù´©¤§ª¬²ÀL).جŸŸ¦¯ÁG.#%1^»­§¦¨°ÄQ:/*,/;Kd¼²®¯ºÆÙðH:3.7;Mᦦ©¼ö;-( &-F묩¡¡¦¬¾à;'%.Kí§¤¥«³Ù=0,/Iű°¼ËD0*-0336DbǾ»¼»´²®¯³¸ÉãcOLKL=40/4567>Kjƺµ³³¶µ´·½ÉÛa_\JJILL9469??>DYÕ¿¼¼»»»»ÃÉËÏÚêXJYklUG==;;AELEHSØ¿¾½¼¼»¸¼ÂËÌÈÎì^kõjL>9754426?ZØÇ½¹·²µ¶¶·»ÄÜðþ^ZNC?<661/4?L]VTyÓÅÂÅÎÍÍÙíj`jäáíorúñûh}ôéõdyðíï^X\[XWTVq|áÐÎËËÔÎçúÙÞöX[^otWVTXMWiníØÓÐÎÐÏÝlZm~ù[JN\qj`gðÛßïáäÞÎÓÖÜùmro`ûþeZPW`rXTSO_Y^ÜÊÉÎÑÚÏÑßêg_óã÷\U[_OGIMZ^nqøÛÕÓÒÛÝÍËÐÓÕÙÓüdêñàÿWOPW`XQ][QV\_sêàêððÓÎÞÜÓÒÕÙünlöîêp]ja_\Y\f]\hÜÐÏÞbqqolY]oòïýïÚßöpheíìiüøÜâþssïå`PcgzviÞÖÜÕÏÚ÷fXVMJMZte`cÝàlfoÝÜÚÞÜßàØÜáïß×Þyb\^]QUfuêjüêþñj^eúåÚÔÝxîäÞù`kcl^Z`ééyäúçèomr`}ðbnyïno]`tjaõÑÛòëãÖßýú|ßv`k÷ååþ_ZS^k[RdÿíûZæÒ×ÕÚèìéûyjxúìcW^ûänTOZ{wkyèÕÖØÕ×ßðíoa_üîycvÞÝêôyeëiYehyjknõûñà~sçÞééoiôzmäÖÙØódxc]gbïÚÛÝõhzom^\Y_icovtwm-5.4.7/contrib/vtwmrc/sounds/whoosh5.au0100664000015300001300000000760510237645271017552 0ustar callumfid.snd e@ëücêjóövêótmßüé[ãïgßXÙmdäZàù]ÙrgìsßeðîelÜr_äåfnß^øØNøÏT÷iíÚQmÚvaä{qñlöëôýròïlìrúù_âí_éìw÷äsZÕnfêoóbåqZÜh_îÛYkÞhïrwáhóÞ`Ýgíßor|ëæZmÕ[^Öm[îåxSÔüWÛlurèæPÛÚQôÓk\Úëoiâë_åmbãõOÛâUßläê^à÷cémjØdjtßekâjáZ×fhÞ_èÿríéUÚý]ùî}ýêlú_ÖWy×[öpñçfî×SßÜPÝâ]ç÷kf~×YgÏhZánõ{å`áëOßxíó^âÝWîÚeryãUÖ]zâhúîåxWàáPß|æù[áðzSÛçQææZÚhnÖljZÐr`åfÖZÜguÏV\ÑõañoáglÑXyÛ[uíýébtÚ\kßRÞsîj_ãvmìúüï[Ödtßv÷éêTåÖXmääoWásnâ`çåkòaßkëùaÖYeÓYgðeÞrWÙè]èyáßU×ê\Ð_`ÌOiãhömRÐiXÝ\Ýonï~èä\ÙðílaÔi^èê[Ûþjbàê_óêîSÕYåâUÔqmvç\åhrÿkÙQäì{\øÜþW×ÛRÓ\ìÓVßbñÞLìÝXfïmXägìðýë[ÏuWÐÞU÷×fe×újæôîhúáXàçSû×Vr×RÑWøâNÚé_þyôfxá^èþjçþaå÷Yçþ~íZ×r_Ùdéâ\ÚläåVÛù]åx{àagÜo^ëaæëUÜëmc×möÞfærß`\Ï]\ßîNðâWþoé\ãñ{îíüúÝzùoÝ|_àyåêeèísõZdÒX\xhÐSjÓ[ÞbçßXö~ãñfbÍPíÞQÏ_wtæçYíÚ[êênùôpákåé]åêastda_ÝV`ßðykØkõ×iéäqýôrîùqæ\Þ~Oã_çw\ßûRÍqZÍnbÖaÜ÷~íbxõ~òUÛkî`XÐlc~ápdeÌ[sàmñçirÖ_ãZÜàKámyì\[Î[]ðàøn_Õñ\×LÉlLÎßggÐNßäláOÐéKðáZÞôQÒ^îæNÌþeÖYÛüfÝyòiÚa[Ñ`RàåP÷ËIqÙZí|÷ÿXÕñ[ÖV~ÙïflâÿöeoÚXëmt×TÜóXÎcoØxïïwtmcÞYîý^õéZÞ{âîYÎVeÉWkËMeÏIãð[ßbøÜ^ê×KÎX`Ì^êåûtwoôþðGÉjNÐYÑPÿÏMÞí_àõngÙeÒiYÏk[ßhüÚTÞáPÑjcÜUnËIcËZpêÞë_Üz[êÕ\Z×éWjß_i]Ø`UÍ[]ÍëFËÛDÐåUÕRùÌKíÙëuôíØ^ÛÒIÏÔEgÓWb]îïKîÑnRÛÕuTÖÚKÌúKøÓçBÏÕQjÏWeËMeÍWvÜóÛã]oÓgbîìp^Ï^IÀZEÔØOkÕRaÅNJÄ÷KÞØÿð_ÕT×çHÜqöóMÄuKÎpëÙGÐèVÏUpËHÏTØÖDÌjUÍVPÉWnëXÎPîÖOÎonËVêÓXWÌRSÐà?ÏÏ?ÁuOÎôTßÒNVÎhHÒçLÔsbÜâYïÚq^ËRéÍCÖrÖ^JÅbWVÎëNØ]ìÉGÐ~÷ê[ÉmPËS^ÏïKïÒOl×XøHÌä?ÄÜHÏtòó\ÏQÝã]vÓgIÄ\[ßæ_ÃTdÂKáênV^öçKàÜBÓ×IÚÑýOÙä^ÛpmÍëpuääMÓ~q^k_jÙ_MËýNÇKËÙJÉhýÉLnÛ`åWcÝTKËV}U×åùñWÈØJÍÊZ}ê[îÕN_×óJÈKîÛHßpiy÷ÛdMÐäVÕë^ÉrYkÛü\gÅDÒ~LÈNÓ\VÆEoî_ÒncÒä]Ïöß_Ú\WÌIÞfìYóÚZêuÓ\ÿÔSÐþf\ìJÖtJÞíáRîÍKfÀNJ¼Z[÷ÍqPÜÎAÀà<¹ëLíÞßAàùIåQù~kg\Ëfx}ÜÇFÍâYÇSØaÆLK·N=Î×THÖÇ=ÚÇDiÉl^ðÎULÐYûbý}÷VéÇM]ÞØæOÏéß^ïÎEÐÉ>âÄXMÊÊMM¾Q=ÂM[GÈT>Áv;½Ø?ÂceÄ^ÝÎSÓ_ÞZùÏ]\ÓeWÄGùÞó\_ëßXQååj\Æß?½]Z¿GïhâÜPOÖuGÓxSðÍYkÕÍ>ÅzM¾;ÎÙIàkUÉJË\P¿HÕe}á[Ç[O¼>ÝÜOåÓ@ÖÂIÑÞGÄOÈJN»=püäÚNîÏÔOâÉGN¿>_ËgB[¿HKÐÒ|kßÞÉOgàäjÛQuÎJJÞ×U_ÖÆ\ÛvßÛWÏS]ÑLuÖæFÔ¿;ÀMóÎGÌFÇAèË:ÎâLñÖgkÓÆKaÈhGÏZÑ`ZÌSÚPséQÎkNÝËsNÙº@ZнU>°K4µ[?×ìGNÂOøÐëjI½MVÇS[ÉMfÇHëJÌs>ÁÈ@ûº?]¾Fià\æëZÆé?ÁÃ<^³7^ÄRîó8½Ô5¿Ü@ÃëTàËK{ÁWJÒPÞÐBôØpRÏÖÜÚèNÍÖ[?¾ô0¶B[ÊLphÐE×Å>éÓWÚ9¾lVº3³â6®>å½?ÄEÊü?×ÖBÕnkÖCÄçÍIÚÂ8rØ\NÅÌ7½öNoZ¿_5þIK¾IßùFÁMMÀEBµ?rÛÝÏ9°ZÎT½GN°8ÄÕ4ÐêOJ»5ÍÑ3¯:>­µk:Èeqbìï¾)¼°-_©)V¶?ÜE¿K>´S5¯JîÆ7ºN¾*¨»œ,>¤ ¬E;½ï<Ò®#¥[.¬;L|K°6æµ<¾<¼Ë+£,[­$ª'¹­!­Ü5À>¼Å/¼ÒCB¯2ê®1Ѹ/Æ¿:²I¿P8¶X&ªS,¡!¨G9©*¿¸-»Ì;·AL«'_²?GÄÀ1®;Ìã;¬6Y¬(­E<¦*¾O¼#¥´š=8Îgµ+Ͱ7/¢4*ž'ì°,¬P-¥,ºmM¶?ºCÈ'ž<%ž-Ï»/¶Â7ÚQÌC[J:¹<μ1¦JT¤$Ó¤Á¸-ó²4×¹&²ÔïkBÉinÉ9ÒØKKÆÅ&©þ@¼^BP§8:§)ºM»>Aª©|6¶L-Ì¢ ÖŸ§U+®Ú@üD«'U¤(¾¸+ºF³¹š<.¤,òâÆG^ÅOãQF°AO¹5Ø_M¯>Ê>L³:Á:ºPÊÞ-ª7¶*½X@¬.¼Òž&e§)¹Ý?ȯ&¸À;ÝTÍÌB»9¾ØÍXI½Ô#«Ê.¹áÁ"¨­©c6¹HØBµ6ËÒÇKü¬+mH·p.©&¥2D°7J±7X¹-¬/«C+¨>\Ç»9ÄÏÝÍ)¨8-›1%›/œf1õ··¨¯¨¬«¦#^±§«·N'žI*®È&ÁÅÁ)ª·$Á9¤#j¢"V¡=7´7­/ª'ε7.¦;/¢ÿ%®NOiÄÄ<îÌ98¬EB´Ä1¡Ÿ«¤œɼ*©.º.¥-c¿ó,£?'’9£»°O:¶3ÍDÓ¢šÙ™E+»²*½3Û­;5¢N–?›¾6ï›(̲AÚ4§M!©¿&©>·– (’L¿ÅÍ-µÌB³Z*Ÿ :9¢(×3ª)k»TßA£/»§œ!?´-±0«:G´÷AÑÊa,½¾6ÛB·-¼UÎÁ+¦38ŸA—-"•'=œ™*ÊÁ#¤*©(¿.¡-Ú®%õ.ÇAº²"£ì)Ëžô#˜"[­/ÌfÓPJ³%ϧ3;ÌÞ.½¯¾¿- N™#>¼'ɺK³Ï9¬*>£'µ5!™%u¼">¯E¡Æš&;ž¢OÎØ¯b“1‹_›ž;A.2N»U(¦!³>ÅÁ4¨9>Ķ7«M:Áž®œÆ®™/œ-²>¬óë5çͨ32-©¼+0h«$Ê4¬V/Ý:´@J¥i"•"§yœš ’M+‹-Î?Ò%.¥‹&!œI4¤*?ñ+>*²:Ù̸#¢/®Û;(¯)ʽ®0—ª‰)‰ž–´™¤ –*.DžW A¢ÞÉ/%²'«$X¯¹ª–œ¯ˆÃž›¥$¨›«‹½'¸6N(š¦¥09—˜>™L5'0£1°—Ù­ÍŸ&X3©Ÿ*[ŒÜ¢ª8®—2—))'ʯoÓ-¼)·Ž_V!F›—'.Ú-ב¥YŸ/Ì-8Ö¢,œšÀKH–.^š-&Ë™©) 0€¦ &š‡–Ê-—ª)¿›ÛÞe)#=¬ž. ­—¥& Î¥™©;—Ž”©. ›ž« )&â¤)$§®»J1/M¯Æ& Ÿ¦œÖ ÈÅ7¢™L-¸$÷›¸.š8/Î4,šÆR«$À¦34½Ò¸—< @‘‹¤0#8¯¡³b"¾˜¢Ÿ;蜪¼ó47½<@/2-R›‘¥/%ÏÁ½Â-,L,´­¦¤+!%>§«ÒÁí¾»¾Å¸µ¹ÊAJÌÅÝæÑvtwm-5.4.7/contrib/vtwmrc/sounds/doh4.au0100664000015300001300000001110010237645271016775 0ustar callumfid.snd  @heZamZXRZ\\jøÕÐÍÑáÐßßïP]wtöæo^nabZjâÝÝëæîne\gìÓÖáþo~ö_\d~ìöþæu_ldjmgùàå×ÖäkaøãsUZ}wlcW^ktàÛÖÝÞð|þ|ÛÛß_\vn_X\qqddqlêßævüèôßê|ãÞínbxöfY\d^õz^or\ðöfÜߨÚõûÝÞ}rXgüyfléèìîwZtçèßçéÚÖëvhyoj^ZcYvmåØãð``hv}uçßßòäÞèß×ëj_xðû[Rsøñöuhhc^õ|îår_exwæÜåýäøloìÙÏÛvVJPPS^T^díÚÏÍÊÊØÕÚèwWS]çì_IJPkÝâårÕÐÜÞÙÐßxÝÛá]J=?CDHnͺ»ÂÙÊ¿ºÝ_HQO8/.6=kÑ·©¤¨½Øo¾×;-.ÞD*$:ëÔά¤˜ž¬º]½B,'6;4&7eº½Ì¾¦ºu9÷F).6lQȰ®¬¯±¦Ÿ¥Ñ+*.+ 0˪¦ª¤ª¬¸×·¡­<,4/&öª¡¬Â³±¹Ù5ÈŸ¨G"%>N;$߬¦¿=Ú¸¿Ø7ÁœŸì$)÷ÞE"%ΰë3\¸ØY9{žœ½**äÎS)K©±{8:½ÂB;?«›«8%;må4 7­©¼K5θ_B7tŸž»,(N}X,#ú¥©½@7ÏÑIJ6𢡹0#3I>1#^¢¡¯J.KÈVnDO§œ¨B#;=>,JŸœ«I',àØ\@<±šœÍ 1T_/3©­:!%ãµÂíD¸œžÎ+l¸O<«Ÿ­Fg¯¯Î0O£º#%Å©±9^¥©H <¥¡º3-µ¬*!q¥ªDD¹²Ã)<¬¦º/+µž«-$Ρ¦Q7òº¾0#>«¤³0(Ô¦­."Ï ¢~,@¼Â>'6¯¤¯;(h¥¦D!ø¡ Ï*1ƾW.8·¦±8$:©¢Ý">©Ÿ¿-4ÎÀÒ/4¼«°@)A®«M$#:©¤¿A1T¾Ó?^»®¸62鮹2%&]¦©À>-IÀÛ[Ü´Ã45Ĭ½0#+Ë¥¨å06?æÊMÞ¸²»=-R¬®C(*Õ¦¥Í+"6½®¶÷_èc5H¸ª¹7*'ò¨®Ø9+N»ÁÇóõÛN_¸°Í/,$K¨¬³:)7Ó¼µºÿO7ܰ´B)'-´¤¬Ó4&3˹©±ÝC/?±¨Ý(!-½¡¤À1&-Y¹®¯¿D-3º¤±4 #G¤Ÿ·4$)ͯ·¸ÒO78¾§­@'.­¥³J%(ûº¯­¹ÓA8ɯ¾;*#7©£¬C!)Q¶­µoD;\´¯ú1*&Ô¨¦­:&+N¸§¯Ô=;Á­º5#-¯¡©È/&<ϵ®¾m?;Ū½2 #=­Ÿ¨þ)%5Æ««¸}17¿©®B% 1°£«ø)#7೬¹Ù92Ï­±[-!-µ§¦¸/(/M±§­Æ;4è¶ÂM.#<¸­¨Ô-+6嬫¸ò.;Ȳ¾@'"M­¦¬S)*A¼«°Áý;G¾´Ç:()C¯£®M(&>·«®Î;0N®ªÒ*!%좡´7#'v¯¨®Ø;.H¯¦½/!=©¢®Q&'B½ªª¿B2E¹­Ë7'#y®¨­:('9¿¦§³V,8Ì®¹i-&EΫ¯L22?˰¶¿E6X¹¯º?%%@µ§¨ä-,;¿¬¯Î:-i­¬Õ)"ᣜ¨H#!=³¥­n--ɦ§Ü(!̤Ÿ¬7!&=²¦­Ä7+V®§¿1 M¯£¥M)&5¹§«¾<&4Ϫ©Ê2)e¬Ÿ²C)+G¹¯ºÓ73W¸¨±a)"8É©©È>18ì¹·¼p5/?ɰ¹Y0,=Æ´»Ï?Eá¹ÂM7?ƨ«Í,M¦ž¨F! 9± ¨Ý+*Û§¡º.:®œŸ|%&Ç¡ž©H$0Ê¥¦÷%*¿žœ¼+$`ª¡­Ò+(A´¤³>:®œ£Ê+"-챯»?2E½¨®f%%È š§E#!1¹¥ªº7)>·¦®@(·œœ°/!)ù«¨¿=-E³¨±?!+·žœ¬65±£ªË47é«Ú(A«šŸÍ%&磟§e)+D¯©¼6@®ž¥`)"2ƪªµ]8Eʱ¼K+!/Ƨ¡­A()8À¯·Ù>7Ô­©·4)Á¡œªB('<³¨ª·@-7p³´V,#.Ħ¢¯<%)F·­ºô@X¹­´K#$讀¡è%'Ï¥¡«g3>Ûµ»I( 2ʤ¯= .ɪ¥³WA>lÊé@*.K¸ §Ç1$+i¯¨¨ÅI>FÍÊm6$*H· ©Ð.!,x­¥ªñ36H¾ºî5%,\° ªß0(5Ç­ª°W9Eþ¼ÃK*"/Y«¢¯j+(:Å®©´WKJÖÆq='.G·Ÿ¨¾0"*L²¨§ËD9GÈÎk+&/K¨¡¬Õ*%/Ϋ£°_A=lÛT3&,BµŸ¦¼6"(G¯¢¨Ö94JÊÀk.&0v©ž¬P$.¼£ ²<4>Ï´½;"-Ä ¯; !:± ¥¿=6DϾî/$+Aª¡¶.$=´£¦ºl>FzZL.)3I¯¨®Ï1,1ý´«¯ÁçP[QN8+.8Á¥£«_&#.Ù©¤¯Ç`HOJ:)$1S¬Ÿ¦µ8#&?º§ªÌ`O{Ìî?*#/y¬ž£¾0#=¶¤¦ÀhDOËÕO+#-?®ž¤µ6 &;¼¥§½~@CÞåì8(-6¹£§²C+*<ʬ©½ß=;Vo×D/05Ǭ¬°^3.:Ø®¬¸ÊQJ]÷[5++8¿©§­Ñ6+/M¶«¯ô.+Eµ¥¨Ì) 2¸¢§µE-1Nij³ÃÍv[h@47;K¼±®±_3/0@Ì¿¾¾³±ÇK-"-X¢ž¥½/#*@¾£¨¸Î?Kßîç3$(0½¦¦­Y.(5s¯¬°³ÑçF:-&-8饫Æ;+-:Ѱ³·¼ËÅÏS<% ,>³¡¦¯c-*9׫¦¹l<<[ËÊY,!&6³Ÿž§ß)(>³¨¯´¿ÈÌt?+"+k¤Ÿ£º3',Aº¥ª­ºSQ:93&*/Wª¥§º6'(5ʧ¨¨¯ß`73+&.3Ç©¥¦¾6''4½¥¦«¾VM=8;+)3=µ¤¥©Þ,&-L®ª¯³ÏílB5*&.<¿££¦¿.$)=´¨²µÅäØL=."&,D©Ÿž¨F'#*g¬««®ÇËI83$!)/¾¢Ÿ ½/#&3¼¤§©¸æb:40%&.@®¤¢ª^,&.]«¥«²ê]RB?-(+/ß®ªª¿<.0E½«®¸ÆøìaK:,,6<Å­­®÷73;ä²®º·ËÕv;2(&.<ɧ£§µ7++7Ê®®¯´ÇÈK7+!+;¶ ¢¤¼3*)4ꪫ¸ÍÖC;3%$,/Í©§ ¯G-'-ß­«¨®»¼J3, #*2¾­¥¥º@..7À±­©³½{91-&,/>´®¨¬ÑI8:M»´°°ÁÈP<2(&/=ꬮ°ºK=9AÕ¸¾¸·À¾h<+#'/C¶¦¦¦¿8.+:¾¯³¯ºÂÄJ<*!''8¸¬ ¢»F/+;È»­ª²´Ñ90$((M°¨Ÿ¨¾C3-<˽«­»ÃP91'$,/m¯¯©¯ÅlE?û¸¾µ»ÎÍC7,$*/>»®«ªºjI=OÇÔϺ»¶ÃY4%!'3檤¥­L206궸¶³¸´ÍI1""&J¬¥Ÿ¦Ó:+'7Õ»©§«ª½J7"$L°­ ¨Àì8-C˾­®·¯Ë=3"))c°®¥­ÊG>8d·Â³µÇ¿í;3' +-X¬«¦¬ÅêN:?cMʶ·­¹è>%&*R¶µªª¹¿îHÕ»½ÄF.24Eͼ½ë:/-4SÄ·²²·¾_QÒ·ª®Í/!Τ›š«X0)/îŶ¨«©­û>%-À«ž¢ªÃJ12^ê´¯¶´ÊK9*"+,<¾¼«ª·¾âC]¸¸¸Ê.(%,õ³¨«»8*$'PÉ®«­¯»ÛMϺ®²S+,¼žšž­?*-5éÃÌ´¬¬­½H)+Ê®¦¢²¿ï:ASì¿­¯¯»@2#(ß´­¨·¿þjKܾ̯µ³°O7!%%R¶«¢²ÇYH?GÕÓ°«ª¨Í8&:»º¥Ÿª´r3,58̯«§³ô1!!&-Ù¨¢¤¬Þ=15lOq²­®µÎ9)*¨§¥®¹º÷qÊÐÌ»¾½¸ÙU-("+Ú½§¦¿ÚH>OÆÃ½¯Â¯¹?8%#M¾¸­·ÀÏÃϺ±Æ²³»³V1(+0I´°ª®ÊøJE=H=T¶¯¥¯ß5 SÉ®ª½ºÂÒßÐÞ[ËàóÂËN--.9˼ʽɶÃÔºÓçÄinÜB-$%0g­©©¯XPNüoå¾³«­¾J),н¥¤¯´ÍöÏßKï¿¶«¿H3 #&õ­¨µ´ÂÕÛßåmÀ»³²l@($#>Îì¹¾ºÏÀÂÂÈÁ¸ËÈv0,)#'+-H迱¯¯®¬ªª®»Éå^K?6/.(&))5\̳®¯­«¬­±¹¿Ó^MC<1-,(*,-2.++..>M×»»´··¯¯¯¹ÄÊßïUOSE?3.1/39659;?I^ãÚžºµµ¸½ÃÈÌÚààâ}J92//48D\õÍž»¹¸»¼¿ÈÈ×âëa[M?7//248IáÅþ¼¸¶¶·¼ÀÎÛÝÿ^WWS>41/28>PîÏÈý¹¸·»ÃÈÍÕäm]jy[K?96217DnÒÑɾ»·¸¾ÂÊËÌäoæÕÝãdRN?5113Fb~ØÔʼÁÄÃÃÃÇÊÏÈÈÔzjUHA4//6>J^ïÔÈÀÇÊËÉÅůľ½ÀÈãdN>8327:>GNYäÔÍÅ¿º»¾¾¼»»¿ÎÐß^I<831225T[ÒÀ¹µ¹ºÁÄÎâjY[URPTSYdfíÝÔÎÕþXMLEEDMuïØÎĽ½¿ÉÕî{[NLBBFBBQbïÏÏÊÀ¿Éæ^^QPOW]îÙéÞÛÏÌÍÕßçiYH>??EINqØÓÊľ¾ÂÅÍÛyOKB?DRX\êáÞÏËÑ×ÞéreZ^WMNNO\foâÔÉ¿¼¾ÈÎÕâ[NCGEEIHWiíÚÎÍÉÆÊÎרØâZOMKLKFM_ßÎÍÊÈÊÎÖçûîe\MIKGNUYfåÝØÒ×ÏÌÒÐËÐØ_PLDFFLMWeôÚÎÈÇÉÌÍÛàôoýoûeSOOLSQYZZúÞÔÜ×ÛØÙßëfëjyìøþ~X[WZmjkûìëÙÝàÙÓÏÛçíàÞòTTaajbgZWfúèèâÙØvgf_vb_èðváîáãxøýjsÝÞßÚÞ~cfcWUnld_aflûiíïæÝæÝàæm^YVwìwiré÷ÿ__wÿèÛÏÎÖsùþ^ýxohbck^\ZT^yicéåÕÍØÙìggdkøñrhcvóèåçíòÙâyY[g_oùíâÝíqcnóãìñïúïããéíûme^q[^ebìëßîôêèÞòj^[_poî|øì÷cZrqéêëèâìgîúsðórvtwm-5.4.7/contrib/vtwmrc/sounds/shutdown.wav0100664000015300001300000012351610237645271020221 0ustar callumfidRIFFF§WAVEfmt "V"Vdata"§~}}}}}}~~~||}}|}~€~~}}}}~~}~}~~}}~€€€€€€€€€€‚‚‚‚€€‚‚€‚ƒƒƒƒ‚‚‚‚ƒƒƒƒƒ‚‚‚‚‚‚‚€€€~~~~~~~~~~~~~~~~}}~}}}|{{|{||{{{{||{|{}}~}}}}~~€€‚‚ƒƒƒƒƒ„…………„………„„ƒ„…„„„„„„„„………„…†††…„„………„„„„ƒƒ‚‚€€€€€~~~~~~~~~~~~~~~~}}||{zz{zyyxwvvuvvuwxxxxyzz|}}€€€‚‚‚‚ƒ„„„‚‚‚‚‚‚‚ƒ„…„…„…………†‡ˆ‰ˆˆ‰ˆ‡‡‡‡‡ˆˆˆ‡†……„„„„„„ƒƒƒ‚€€€€~~}||||||}}}}|}}~}~~~~~}}}|||{{zxxxwwvvvwvvvvvvxyzzz|||}}‚ƒ„„…„„…†‡ˆˆˆ‰‰‰‰ˆˆˆˆˆ‰‰Š‰ˆˆˆˆˆ‡‡‡ˆˆˆ‡††……………„„„ƒ‚‚‚€€€€€€€~~~~~~~~~}}|}|||||{{{zzzyyyyxxxwwwvwvwvwxxxxxxyzz{|}~~€‚‚ƒ„„…††‡‡ˆ‡ˆ‰‰Š‰‰‰‰‰‰‰ˆˆˆˆ‡‡‡††…………„„„„„„ƒƒƒ‚ƒ‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€~~~~}}}||||{{zzzzzyyyxxxxxxxxxxxxxxyyzzz{{|}}~~€€‚‚ƒƒ„„„…†††‡‡ˆˆ‰‰‰ŠŠŠŠ‹‹‹‹‹‹ŠŠŠ‰‰ˆˆˆ‡††……„„ƒƒ‚‚‚€€€~~~~~~~~~~~~~~~~~~~~~~~~~~}}||||{{{zzzzzzyyyxxxxxxxxxxxxxxxyzzz{|}}~€€‚ƒ„…††‡ˆ‰ŠŠ‹ŒŒŽŽŽŽŽŒŒŒ‹ŠŠ‰ˆˆˆ‡††…„„ƒ‚‚€€€€~~~~~~~~~~€€€€€€€€~~~~}}||{{zzyyyxxxwwwvvvvvvvvvvwwxxyzz{|}~€‚ƒ„…†ˆˆ‰Š‹ŒŒŽŽŽŽŒ‹ŠŠ‰ˆˆ‡†…„„ƒ‚‚€€~~~~~~~~~~€€€€€€€€€€€€€€~~~}}||{{zzzyxxxwwwvvvvvvvvvvvvwwxxyyz{||}~€‚‚„…‡ˆ‰ŠŒŽŽ‘‘’’’’‘‘‘ŽŽŒŒ‹Š‰ˆ‡†…„ƒ‚€€~~}}}|||}}}}~~~~~~~~~}}||{{zyyxxwvvvvuutttttttuuvvvwwxxyz{|}~€‚„…†‡ˆŠŠ‹ŒŽŽŽŒŒ‹ŠŠ‰ˆ‡†…„ƒ‚‚€~~}}||||||||||}}}~~~~~~~~~~~~~~~}}}}}}||{{zzyyxxwvvuutttttttttttttuuvvwwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŒŽŽŽŽŒ‹‹Š‰‰ˆ‡††…„ƒƒ‚‚€€~~}}|||||||||||||}}}}}}}}}}}}}}|||||||{{zzzyxxwwvvuutttsssssssssttuuvwxxzz|}~€‚ƒ„…†‡ˆˆ‰ŠŠ‹‹ŒŽŽŽŽŽŽŽŽŽŽŽŒŒ‹‹Š‰‰ˆˆ‡††…„„„ƒ‚‚€€~~~}}||||||||||||||||||||||||||||{{{zzzyyxxwwvvuuutttttttsstttttuuvvwxxzz||}~€‚ƒ„……†‡ˆˆ‰ŠŠ‹‹ŒŒŒŽŽŽŒŒŒ‹‹ŠŠ‰‰ˆˆ‡††…„„ƒ‚‚€€~~~}}}|||||||{{{{{{{{{{{{{{{{{{{zzzzzyyxxxwwvvvvuuuuuttttttuuuvvvwxxyz{|}~€‚ƒ„…††‡ˆˆ‰ŠŠŠ‹‹ŒŒŒŒŽŒŒŒ‹‹‹ŠŠ‰ˆˆ‡‡††……„„„ƒƒ‚‚€€€~~~}}}|||||||||||||{{{{{{zzzzzzyyyyxxxxwwvvvvvuuuttttttttuuuvvwxxzz{|}~€‚ƒ„…††ˆˆ‰ŠŠŠ‹‹‹‹ŒŒŒŒŒŒŒŒ‹‹‹‹ŠŠŠ‰‰ˆˆ‡‡††……„„„ƒƒ‚‚‚‚€€€€~~~}}|||||{{{{{{{{{{{zzzzzyyxxxxwwwwvvvvuuutttsssrrrrrrssttuvvwxyzz{|}~€‚ƒƒ„……†‡ˆˆˆ‰‰‰ŠŠŠŠŠŠ‰‰‰‰ˆˆˆˆˆˆ‡‡‡†††……„„„„ƒƒ‚‚€€€€~~~}}||||{{zzzzzyyyyyyxxxxxxxxwwwvvvvuutttssrrrrqqpppppqqqrrrsttuvwxxyz{|}~~€€‚ƒƒ„……††‡‡ˆˆˆˆ‡‡‡‡††††††……………………………„„„ƒƒ‚‚‚€€€€€~~~~}|||{{zzyyxxxxwwwwwvvvvvuuuttttssrrrqqqpppppooooooppppqrrsttuvwxxyz{||}~€€‚ƒƒ„……†††††‡‡††††††††††††††††††………„„„ƒƒ‚‚‚€€€~~~}}||{{zzyyxxxxwwwwvvvvvuuutttssrrrrqqpppppooonnnnnooppqqrsttuvwxyz{|}~€‚ƒ„…††‡‡ˆˆˆˆˆˆˆˆˆ‡‡††††………………………„„„„„„„ƒƒƒ‚‚‚‚€€€€€~~}}||{zzzyyxxxwwwwvvvvuuttssrrrqppppoonnnnnooopppqrrttuvwxyz{|~~€€‚‚ƒ„…†‡ˆˆ‰‰‰ŠŠŠŠŠŠ‰‰‰ˆˆˆ‡‡†††††††††††……………„„„„„ƒƒƒƒƒƒ‚‚‚‚‚€€€~~}}||{zzzyxxxxwwvvvuutttssrrqqppoooonoooopppqrsttvvwxyz{|~~€‚‚ƒ„…†‡ˆˆ‰‰ŠŠŠŠŠŠŠŠŠ‰‰ˆˆˆ‡‡‡‡††††††††††††††………………„„„„„„ƒƒƒƒ‚‚‚€€~~}|||{zzyyxxxwvvvuuttssrrrqqppppoooooooppqqrstuvwxyz{|~€‚‚ƒ„…††‡ˆˆ‹ŒŒŒŒŽŽŒŒŒ‹Š‰ˆˆ‡†…………„„„„„„„„„…………………††††††…………„„ƒƒƒ‚~~|{zzywvvuttrqrqpppponnnnnmlmnnoonopqtuvvxz|}~€€‚„…‡ˆˆˆˆ‰Š‹Œ‹Š‹‹‹‹ŠŠ‰ˆˆˆ‡†…„ƒ‚‚‚‚€€€‚‚‚ƒ„…†‡ˆˆ‰ŠŠŠ‹‹ŠŠŠ‰‰‰ˆ‡††…„ƒ‚€~~|{zxxwwwutsssssrqqqqppppponnnlmnoppopqrtuvxzz}~‚‚„†ˆˆ‰ˆ‰ŠŠŠŠŠŠŠŠŠŠ‰‰‡††‡†…ƒ‚‚‚‚‚‚‚‚ƒ„„……†ˆˆ‰‹Š‹ŒŒŒŒŒŒ‹ŠŠŠ‰ˆ†…„ƒ‚€~|{zzxwuttsrqpopoopnommnlllkjllnoopnpruwyy{€‚„„†‰ˆŠ‹Œ‹ŒŒ‹ŠŠ‰‰‡†…„„ƒƒƒƒ‚€€€‚‚‚‚‚‚„……††ˆˆ‹‹ŒŽŽŽŽŒ‹ŠŠˆ†„ƒ‚‚€~|zzyxwvuttsssqqppqqqpoonnomllmqstrrqtwx||~‚„…††‰‰ŒŽŽŽŒ‹ŒŒŒ‹ŠŠ‰‡†…„ƒƒƒ„ƒ‚€‚‚ƒƒ„„††‡ˆˆ‰ŠŒŽŽŽŽŽŽŽŒŒŠŠˆ†„ƒ‚€~|zxwvuutssrqppooppoonnllkklmqstsqrvx|~€„†ˆ‰‰‰‹Ž‘’ŽŽŽŽŒŠ‰‰ˆ†ƒ‚‚‚‚‚€€‚‚‚‚ƒ…†††ˆ‰‹ŒŽŽŽŽŽŽ‹ŠŠˆ†„‚€~|zxwuutsrqppnnnnnnonnnllllortuvtvxz~ƒ†ˆˆŠŒŽ‘“••”’‘ŽŽŒŠ‡…„ƒƒ‚‚‚‚€€‚ƒ„…††††ˆŠ‹ŒŽŽŽŽŒŒ‹Šˆ†„‚€}{zxvutrsrrqpoopoonopoonnopsvwwxx{~‚„ˆŠŒ’””––˜––”’’‘ŽŒŠˆ‡†…„ƒ‚ƒƒƒ‚‚‚‚‚„„††††‡ˆ‰‰ŠŠ‹ŒŒ‹‹ŠŠ‰‰ˆˆ‡…ƒ€~|zyxxvusqqpqrpoonoqpqqoopqsuwxyz{{~„†‡‰ŒŽ’“––—˜˜˜—–––•““‘ŽŒŠ‰††‡‡†„ƒƒ„…†…………†‡‡ˆˆ‰‰Š‹‹Š‰ˆˆ‰Š‰ˆ†„‚€€~|zxvusponmmkjhhhhhhggijkmnqsuvy|‚††‡‰Œ‘””•—™œœš›œœš™™™—”’‘ŒŠŠ‰ˆ‡†…„„…„„…†††……‡ˆˆˆˆˆ‰ŠŠ‰Š‰‰ˆˆ‡†…ƒ‚‚~{zxvusqolkjihgfedcdfhfffjnqpqsx}~€ƒ†Š‹Œ“•——˜š›››šššš™˜–•”’‘Ž‹‰ˆˆˆ‡†…††‡†††‡ˆˆˆ‰‰ŠŠ‰‰ŠŠ‰ˆˆ††„‚‚€~|zywurqqpnljklkihjkkkjjkmnoprtvwxy}ƒƒ„„ˆŽŽŽ‘””””““”“””’‘ދЉ‰Š‰ˆ‡†††‡‡‡†††‡ˆˆˆˆ‡ˆˆ‰‰ˆˆ‡†††„ƒ‚€~{{zwvsrsqopolklmnnljiklmnoqrpqsxzzz|€ƒ„††‡‹Ž‘’’’’“””“’Ž‹ŠŠŠ‰†………„ƒ‚ƒ„ƒ‚‚‚‚‚ƒ„„‚€€€~|zxxyxwyzwsqqsssststrpoqrssqsvvvvwxyz}€€‚„‡‹Š‰ˆ‹’’Ž’”“’ŽŽŽ‹‰ˆˆˆˆ…‚‚„…‚||…~xy|€ytv|zsrz~{tptz|womt|{rmpwzvpswyxtsw{|zy|„‚~}…†‡‡…‡Š‹ŒŒŽŽŽŽŽŽŽŒŠŠ‹Š‰ˆ‡‡ˆ†††ƒ‚ƒ„…„|{„}€~|}zxz€}y{z|z|xrtz€ypozzvtrv{wtuuwxtuux||urx~|y|}ƒ‚ƒ‡ˆ††‡‰Š‰ŒŽŒŠ‰ŒŒŠŠŒ†…†‰Œˆ„ƒƒ††‚„…€~|„†~xv~‰‡}pu„„}vv€‚|vux|€{yz{yvsxxy{zvuw{|zuv}~~zwz}‚€€€~~~€„‚ƒ‚…„€€†…‚‚††€€‡ƒ…‡„‚‚‚‚…ˆ†}‚‡ˆ…~„‰†„†‡€€†‰…yƒ‰ˆ|€~‚ƒ€|xˆ‚yr~‚||x~€{yvx{€{r{€yx|v~…|x~ƒz}…„€|y}‰Ž‚xyƒŒ‚{‚ˆ{|€ŠŠznzŒŒ~sx|„Œ~qy~†‰zxy‚}n}‹xt}Œˆƒzs€ŠŠ‰{zy‰‡zwv†€{y~ƒŠ~~„{w…x|o~‡~ˆzv€„„„zz~Œ…t~„{…‹}p|‚‡w~€‚€|„|ƒƒvsƒ†}yz†}~{z|€{z‚ƒtr{„}xvty~x|„ty„r~Š|yp„Œu~†€ƒu€•|zƒ{‡Œwƒ|‚…€‚ˆƒ{‰‡|ˆ‡„}€{†ƒ„un|˜ˆny~r†‘zi‰‹kz‰znˆnoƒ†ˆ}evŽƒ…~rwƒ†„|xp†‰ˆ|q}{“xi~ކnh„|{rm‚‰‰uqwn““usnŒrr…†ƒ‡nuŠ„tr‡Œ–~d~„›‚v~y€Žzs|€”ˆq~‡ˆw{‰‡€t€Š€|z„ƒ|v‡ƒxx‡ƒ~{zƒƒ‡zs‰{Š€x‡‚n‚Žˆƒrv„~‹Šyd‡y‚~~l|‘|~…tuŠtzzvtw‰x‰}fkŽy|viˆon€‘~{{s”~z{x‡—uh„Ÿ{tu’†uw‰‡sp†žˆwr˜Žp‡”zx€y–’}i|—Š€|uˆ’…k|Š„Ž}T|²–__uˆ¦…jgt–Ž|rkƒˆŽ{oq€‰xt…„wo€‰vzl~ˆ…xl|…‹ymr‚Žˆogy†Ž‡rh’‹w†xyŒ‚†|‚‘zz‚€‰‹rƒ ˜rlŽ‹„†r–’t…‰y…}†‘~‰|t…Œ‚w†|}ˆ„uu€ƒƒ†~‚pt‚Šxg|‚ކln€’†hr‘„}wj}ƒ~yv~€ƒx‚ll“’ex…}ˆ}q†ƒvjpŒŠzoqІ‰‚mt’ˆ„xrq€ŒˆŽ}s…Š€…s‡ˆ‹v{˜r‹ƒ~z|„Іw€…Œs~†z‚„‚w|ˆ‚†|lv”zqhšsur†”€r{€…’uiƒ”‡ml„–„js†‹‰vz|~‚Šr†zmŒŒj~’y{‡vpˆ|ƒ‡qz†€l…|{}n‰•uj‚„€z}tŒ•{mz~™†l}‚††~x†„‡€vxƒ‚jsˆŠg}‰Œ„tzŒ‡u€‹znsˆ‡lgŒ’Žxl}ˆ‚ƒ„~zƒxhŠƒr`|ž‹swyrˆ‡„x~yx…‹np€}„|‚sz„}u~~u„zh‚vz~s„tzr‹‰ooƒ††usŒˆqr~‹ˆzŽvc‹™{u‡vŠˆvƒƒt†Š‚xЉw{‚‚~†Œ€pvŠ„|rw”‚kl”’rx‡xƒ„g†“uo…zƒyvxvwzu}xz†|zoo„……jh„‡€}fr‰p`†“pvrt€Œ~diŽ‘onv€…rf€ }l„ƒx…„r……tmˆŽ’‚lvŠ›ŠbzœŒrcœvpqŽvpt‚‰u|y}Šz~y‰wo‡‚Š„sl„ig…n|‚€uz€}o€‹qudp–ltv†‡od{ˆ’„ch†‡xy…du‘Žt[‚•†fn„†‚vƒzz„|x‹‚zx†|ŒnxŽ}†ˆ~}‹‚q‰v|‚‰„ux€‹}rŠ‹nx‚…~rˆˆ{wl€€{}q‚ˆ~{p~„‡Œqgƒ•‡pmˆ‰‰ubyœˆnq~Šqf€{‰‡stzzŠ…gs€}€‚ro~‰x‚up…uz…~x‚wx‰‚wyw‰€Œ†rvy‡Š†~sƒ„‰xv„ˆv}Œƒty„…||„„€zu~‹ˆz~y{ˆƒx†„v„Œqsˆ’ƒr|Š€}v€Š‚‚vo€…’vrtŒš{fo‰“|t|t|“†niƒ†}t|~ˆtl‚uŠ„mn€Š}~wpu|Šˆyjtˆ‡vtƒƒ{zsz™t^z–Œƒzp}‘–ve}š•wmw‘Ž~w}‰†~~~ƒz{‹Š„~uv‚˜…xvƒˆŠ|{}‰†vxˆ‘ou…Ž‚vjz–„tv{|‰{imzjl†ƒyr€rv„{szz}y|‚ur‚„vtx‚‰‡utyw„‚p‚ˆ‚‚tp„œ’lk‚’“{pxƒ‘’ztv‚Œ€qy“upn†ŽŠzuƒˆƒ|w}‚Œ‰|{‚…}}z|‹~wyv„‚xy‡‚zov~…‚zqx„„lk‚‚{ws}„umn‚‡|uupt~ˆvrr†}qx‡|tx‰zkr‚Œ‹uzˆ‚u~„€Š„wv‡ˆ|t~’Švtw†‚ty„…|vw€„xu|Š‹|w€x|v‚ƒ‡zxtzŠ„tq‰‚wt|x{xrr{‡ykt}{vfz†€lj{„~xrq~€xuz€xsw‚†~|z|ˆˆ}s{‡}}††~}y€†‚}~~~ƒ~v{{z…ƒyxuz„ˆ€st„‰‚vz…€}~‚€€{xƒŠt|{†vr|†yv}~wqzz|y{qtx|z|wtuz|~yrrvy}yu{€xv{{ƒ|}r„†~|€‰~€~x}Š…zv€ƒ…~syƒˆ|usz…€{x€ux†~u‚…€€|y„„‚‡ƒz|†Œ€xv{…w{z~|wwz|{{xwzxytsxƒ€tnu{{yxuuz‚}vsv~„x}~y‚„†|s†Ž‚|x|‰„{€~|}~~~|w{‡ƒvy€~‡€z{€~„†~zƒ„†yƒƒ€~~~~€€{xy{ƒzvz~|zzz{~{wxy{vy{~zxxz{}|~||zz‚††‚{{Љ€ƒ„‚‚‚‚‚}z~„‚~z|~€„…||‚~~„ƒƒ‚ƒ„††‚‚†„{ƒ†„~{‚|z|‚„~zyy~~~z{y|||z{||zyy}|~€~~‚‚‚ƒ‚€……ƒ†‡†„††‚‡‡‚‚„ƒƒ~~ƒ‚‚‚‚€}|ƒ‡‚‚ƒƒ€ƒ‡‚~‚†„‚‚…‡†‚€‚„€ƒ†…€~~~}‚„|~‚|xz~||{|{{€‚~yy|||‚~|~€€~‚‚‚ƒ††ƒƒ‚„ˆŠ‡††††ˆ††ˆˆ„ƒƒ…††ƒ‚„…ƒ‚‚€ƒ„ƒ‚‚ƒ‚‚‚‚‚€‚ƒ‚‚„ƒƒ€~€ƒƒ€~~|~~}~~{yyz{|{zyyzz{z{{|}€~}€€‚ƒ„„„ƒ†††‰‰‰ˆ‡ˆˆŠ‹Šˆ‡‡ˆˆ†††‡‡…„ƒ„…ƒ‚‚„„‚~}‚}|~~|z{||zzxz|zwvvz|ywtwyzz|zyyy{~~}|{|€‚~‚…„‚ƒƒ…‡‡‡‰ŠŠ‡ˆŒŽ‹‰‰‹ŒŒŒŠˆ‰Š‰ˆ†…„ƒ‚‚€~z{zzyvtuutspqrqppprpnppsutstuyz{|~€ƒ†ˆ‹ŒŠ‹“––’’”•™˜—•“‘’““Šˆ‡ˆ†ƒ~}|zxvtttsqqpoonmnnnnkkkkkkjjjjmpqrppsxz}~€‚‚…ˆŒ’’•–™˜œž ¡£¡¡ žžŸŸž›—“Ž‹ˆ„€}{zzxusqomjkjlkhfcabbeee`[Z]ciijccdiquwzww|€‰‹‹‹“™˜™œœ£¡¢¥¦¥£Ÿ ¦¦£˜–˜—•’Œˆ„‚„„€|ywxvusponnmlifeddcb`][[`dea^^afmmnlkoty€„‚ƒˆ––˜˜šžž£¥¦¤¤¢¤¦¦£¡žœœš˜•Ž‹Šˆ†‚€}{zyxuqnmooojgfdfebbb`^^dghc``glrprpsvz€„‰ˆŠˆ‹’—›ž˜šœŸ¤¤ ¡    š—–”””Ї…††„}zyyzzxtqpqrroljhghheb`bfjjfachnsrprrv~€†‡†ˆ‰—š˜šš¡£¢£¤¥¤££¢Ÿœœœœš“ŽŽ‹Š‡…‚~|{z{zvtqqqqnmmkihffgfdbabdhjjffhlqtvwvxz†ŠŒŒ“šŸžœ ¤¥¨¦¥¦¦¤££¢¡™™™—“‰ŠŒ‰…~}~|yxwxuqmlmoojheedcbcb]^`defeeefkpswwsx}ƒˆŠ‰“—™œ¡¡¢§¥¦¨¦§¨¨¦¥¢¡¡œ››—”‘ŽŒŠˆ†ƒ€€|yyyxtqoponnkiffgfbdbb`cdhhffcgptvtmvzƒ††ŒŒ’”™œž¡¢¤¦¤¤¦§¥¥££ œžš—”‘ŒŠˆ††„~zz{|xtppqponjjidcdihb^]`fkicafhpqrrtxwz€‹Œ†‡Œ”™›š˜›¢¥¨¦¦¤¤¦¨¨¥£ŸŸŸš™–•”‘Œ‰ˆ„‚||~wsuuqopmlljggfeddcdb]adeikb`cntvplpu|~ƒ‡‡…ˆŠ’šœš˜›Ÿ¡¤¦¦¨¦¤£¤¥¤¢Ÿž–”•”Œˆˆ…€~}z{{trqojnpljfaegdbbc_^^[bjfccadkmnrtptw|†††‰Ž’”—™šž¢¤£¢££¦§¦§¢œœ¢ž˜š—ˆƒŠˆ}}}wsyyolnmnkegjfed`bcb`]]\dggdadaisqoqswsxƒ‰ˆ‰†…Ž˜›˜˜š¥¨¢¡ ¦¨§žŸ¢¡œ›”–˜”އ†‰‰ˆvyx}vsrlknokhgehd_dceb[[``dbdf`bdjoompruwz‚‚„ˆˆ‘”––šžŸ¥¤ £¤ ¦©¦¢œšœ›œ”ŠŽŽ‡‰†ƒ||~wvxsprijnjhhdcfbfd^^db^`a_dgfadjnkmrrv{z~€ƒ‡ŽŠŠ’œ––›¡£¢Ÿ¡¢¥¦¦¤œŸ¤–’”˜“ˆ‹Œ„„}z€}unpvqmlimmh`dggicV_lgZZagog^`fsrpknvz~{}‚ˆ‹Š‹•™š™›¡¤ ¡£¡¦§¦ œŸŸ¡œ–””’‰†ˆˆ…€{vt}yqqjjnlmifhbcheddd`\_hhaaihhfjimxxqwwx„ŠŠŒŽ– žž žž¢¦¨§£¤¢Ÿ¡ Ÿ›˜˜˜”Œˆ‹ŠŠ„zxz~zqrwpljflpjgdbfffddf\]fi]fhgjhemsrtprz}‚ƒƒ„ŒŽ‘‘—¢Ÿœšœ¦ª¦¡£¤£¥¡Ÿ  ˜––—“ŒŠˆ€„|wzytqonmmkkhhgfaeheeca^`eeffbfmlhijy{rst~…„„‰ŠŽŽ£Ÿ˜˜ ¦¦ £¦¥¢œžŸŸžœ–‘‹†‰†y|€yxyrnpplmohjjgagiffd`dh_^dhfhghelpmmrw}zt~‚ˆŠŠŠ’”™—› ¦¡Ÿ¦¦¥¤œ ¢Ÿœ˜–™–ŽŽŽŠ„ƒzqnvwpqjfikihhedfc^gkd`[ajfcfgejkklptvxw|w~‡ˆ‹ŠŒ‘—ššœœœ  œ¤£¡¡ ›œ——”˜”І‰ˆ†€}zrrtvtnohblpiegd`fgdfd^bddbeggdfhklrsqmqz€}‹ŽŠ‹˜›•˜›œ ¡™ ¤œšœš›”‘’Œ‡„€€|{{zvsnlponfekkge`bgfg`[eg_bbbdhfcfopklrsvy}€~zƒ‘‹Š’˜˜–œ¡¡œ˜Ÿ £Ÿ˜˜œž˜Œ˜’‰‚…Š…~zx|zxqnnopnhjhhjeefehc`defea_ehh`clolhlrtw{||w€††Œ”ˆŒš™™œœžŸ š˜ ¤£ž’’™˜’‘‡ˆ‹‡~wƒ|rqtsqnpmjkhfjhfdgdcgh`cfbcgdfihdlomqsuvwx|„ˆ†ƒŠ‘–š˜˜˜™¢¤ ž˜ žœœ––•ŠŒŠˆ‡}y~€zsqstrpjejrledfikd`fdffaaddhhbglkjkqquxzx}}€ˆ‡‹ŽŒ”™›™ž››ŸŸ£ ¢ ››šœš—“Ž‘ŒŠ‚€‚‚|z{vrrtspmmllkhhjhgfedhfbffdffhffinrnnqvxy~„…†‰ˆ”™–—–™£§¢œ¤¦   ž š’””Šˆ…†€|~}wzwppssonljjjllhefjidcefhhhdfkrmhpuuvxw~…ˆ‚€ˆ•—‘’ ŸžŸ £¤£¤£¢ œŸžš–“Œ‡‚‚€~zywxtsnortoijmnkhehpjfeffilhddqtplluyy|‚‚„ŠŒŽ••”–šŸ¡¡¤¥¡¡¤¦¨¨ žœ›žŸ™’’‘‹†‚„ˆƒwuz}{tooqttnkjmnkggnlfdcgjhdelonkinrz}{|}€ƒˆ””••𢥣¡¤¦¨©¤¤¤¤£ ›š›™‘ŽŽŠ…‚‚‚}xvxyvsronpqmlknnjfiljffgjkebhnsohjsww|}‚‚‚ˆ’““”’”›¤¦¢  ¤¦¨¤¤¦¤¡›œž˜”…‚ƒ€€zwwusttrqlllmplfejigefddddehjmhemrvzwu}‚†…‡‘•—›žŸŸž¢¦¦§¤¢¤¤¢£Ÿœœ˜”‘‹‡‡…‚€~zzywvvtrpponnmjjkjggffgfd`aekmlffmsxvtv|„…ŠŽ’”š  žž£¦¤£¤¥¢ ¢ žœš•”’ŽŒˆ„‚‚€|xvvvvvrpppnnmkkihggfbgeaacfdghklpnnrz„ˆŽ’”–›œž ¢£¤ ¡¤¥£Ÿ Ÿœ™–“”’Œ‹ˆƒ€~€{wuuvwtpqnpolljjihhffdb^`bhiebfjnprtvy~ƒˆŠŒŽ‘•—šœ ¡¡¢¤¤£Ÿ¢£Ÿœ™—˜–‘ŒŠˆ†„‚€~|yxzxwtsrppqpnllhgggecdb`a^`bfjiijkpttx{€…ˆ‡ˆ‹—˜š›ŸŸ ¡¢¤¢ ŸŸ¡ž›—••’ŽŒ‰‡„‚‚~|zzzyxwsrrssonmjihgfddba_^aaefgggllttx}}‚ƒ…ŒŽ•—š›œž ¢¢£¡£¢¡ Ÿœš—–•“ŽŒ‰ˆ„ƒ‚~|zzzzyxvrrrrrpmkjhghhdb_adegffeglntvvz{~…‡‹Œ”˜›œ›žžŸ¡¡¢¡ŸŸž›™˜–“’Œ‰‡††„‚€€}|||||zvssttrpnkihffdcd`a`bedfhnonnnv„†ˆ†ˆŠŽ•™›œœœž ¢¢   žŸžœš–”’‘ŽŒˆ‡„‚‚€€~|{zzzzwvutsppnkkigfddba^^`fhhgghntwzzz}‚ˆ‘–šœžžž žŸ œ›˜˜—”‘ŽŒŒŒŠˆ…ƒƒ€}|||||{xutvutqnkjigecb`_^_bdfgfginrwz~€……Š’—––˜›œžœŸ›š™˜•’‘‰†…„ƒ‚€~}}}|||{{zzxxvuttqnlkihgedb__bfihffhnsvy{|„†Š‹’”—™™™ššžž›˜––—–”Љˆ‡†ƒ€~}}}|zyxxzzzzxvutvutronmlkjhgfcccfjllmloquxz‚†ˆ‰ŠŒŽ’•˜š›™——–™šš˜”’Ž‹‰‡„‚€}|zz{{zywvwxyzzxuttutsromljiigddbbejklijnsxx{}„‡‹ŒŒŽ”˜˜˜˜˜—˜˜™˜–“ŽŒ‰†„„‚}zzzyywwvvvwwyxxwvvutssrrollghgffdbbehknllqqwx{‚…ˆ‡ˆŠŽ‘“•˜˜™––•—˜˜—“‹‰†…ƒ€~|{zzxwvvvvvvwvvxwwvuutrqqomkjjhfebbdgjjhilqstw|‚„„…Š“•˜™–•—™˜˜”“”“‘Šˆ‡…ƒ}{yyxywuuuvwvvvvvwvvvtrppnnkjhhec``chjjiilptvw|„†ˆ‹’•šš—–˜›™—•””“‘ŽŒ‰…‚€~zxwwxvutuvvvvvvwwvvvtrqppnkigghdb`bdijkllorv{~…ŠŽ’–™™šœ™™˜–™–”’މ†„€}|ywwwwwvvutvwxxxvtuttrqomlkigfbcbbefjhiiktvz{~‚…‡ˆŒ•————™™šš›˜–’’‘‰†ƒ€~}|{ywvvuvvvvuuuwwvsrtsrronlihhfeb`bdhjllllnu|€‚…†ˆ‹‘•˜™š˜——˜š™š˜•“ŽŒŒ‹ˆ…‚}|{zyxwwvvuuutvxxxurrrtrollifecedb_^cfhhhlptxz~‚‚†Œ‘–•’“•šœœœ™—–”“’ŽŒ‰…€€|ywvvuvvwvututwvutrrqpmlkjgfeeb__^ehkjjlotw|…ˆˆ‹‘––˜šœ›™™žœžš•–’’Ž‹‡„‚€~|{yxwvtuuvvvtvuuusqqnnljkhecbab^^_`hjlklpv{}†Š’”•™›ž ŸŸœ›œœ˜•”‘ŽŠ‰†„‚~}{yyyxwuttuvwvutsrrpqonkhhfdbb``]]_bghjilpt{„‡ˆŽ”––ššž ¡ ž››žž™–”Ž‹†„‚€~|zyxxxwvtssuvvuroononkjdddbb^^\]\^bghlknsv|~ƒˆ‹Ž“”—˜šœŸ¡¢ žž™—”‘ŽŒŠˆ†„€||z{zyywvvutuvvsqomnlkjgdb`_^]\\[]`dfgfipvƒ„‡‡‹’•œŸŸž  ¢¤£ žš™—–•”’Ž‹‡…„ƒƒ~{zxxxyxxwuuutrqoonligedba`]ZXXY^bfhhhipt€„‡Š‰’–šœ £¤¢  ¡£¤¥£Ÿš•••–”‘Œˆ…„„ƒ‚€~}{{yyxxxyxvusrpppnmjgcc``_]\ZXW[^chijmorx|„ˆ””–’—œ¤¨¨¦£¢ ¢¤¥¥ œ—••“’ŽŠ‡„‚€~}}|zxwvvxxxwtrponlkigfc^\[Z\[Z\[^]aflotrv|‰Œ’”˜› £¤¦¤¤¥¦¦¦¥£¢œ™—–”‘Ž‹ˆ…„‚‚€}{yxxxyxwvtrpppnljiec`a^^\XWV\bbb_cfnsx|~‚‚ˆ•—™šœ¡¢¤¤¦¦¨¨¦¤¡ Ÿž›—“ŽŒŠ‡…€~~|{zyxxvvutqppnljfgdb_^\[YWY\bbabcgnrzz}~…Š’’•›ž¡¢¢££¤§¨©¦£ žŸ žœ–’‘Ž‹‰‡†„‚€}{zz|zxvssrrpomhgfcb`^\^ZYZZ_abfehlptx|‚…†ˆ’˜›ž ¢¢¥§¨©¨¦¦£¢¢žŸœš—”‘Œ‹‰‡…ƒ€~||{zyxutrqqpnkigccb`a]ZWXY`bbdcdglqwz|€‚…Š“–˜™œŸ ¡£¦§©§¥£¢¢¢¡ œš•”“’‰ˆ…„‚~||zzzvtrrrqokihedaa`]\Z\\]_`dghhimsw|€‚„†ˆ”˜™™› ¢¢¥¥¦¥¢£¢¢¡žœ™—’’ŒŠˆ†„~~}|zxwutqqonljhgdcaa`^]^``a`bcgjnqrtty~„†ˆŠŒ”–—šœž ¢¢¢¡ ¢¢¤¢ œšš˜˜–”‘ŽŒŠ‰‡…ƒ~|{zxvttrqomliihedbc`__`bdgeedhjnrtwxz}€‚†‰ŒŽ’“”•–™œŸ ¢ žŸ  žœš—–””’‘Ž‹‰‡…„€~}{xwuttrrppmlljiijjhhgghikllmnnprtvxy{}„…‡Š‹Œ“”•–—˜™šš››šš™˜—–•“’Ž‹Šˆ†…„‚€}|{zyxxwvutsssssrrrrrrrsssttttvvwxyzz{|~€‚ƒƒ„…‡‰ŠŒŽŽ’“•”””•––••”“’’‘‘ŽŒŠŠ‰ˆ…„ƒ‚€~}|{zzzyxwxwwwvvvvwxwvxwwxxzzzz|||}~€‚„…††ˆˆŠ‹ŒŽ‘’‘‘‘’‘ŽŒŠŠ‰ˆ†…„‚‚€~~}|||{zzyzzzyyyyzyzzzyyzzzzz{{|~~~€‚ƒ„…†‡‡ˆŠ‹ŒŒŒŽŽŽŽŽŒ‹ŠŠ‹‰ˆ‡…„„ƒ‚€~~}}||||||{{z|{{{{{zz{{{zz{z{|{|}~~€ƒƒƒ…†‡‡ˆŠŒŠŠŒŒŽŽŽŽŒŒŒ‹‰ˆˆˆ‡…„…„‚€€€€~}}~}||||z{{z{|z{{{{zyz{{zzzz{||||}~€‚‚‚‚ƒ…‡ˆˆˆŠ‰‰‹ŒŒŒŒ‹Š‹‹‰ˆˆ‰†ƒ„…ƒ€€~|~|{||{yz|{z{|yyzzyxz{zxxyyxy{}|}{|~€‚ƒ‚‚‚ƒ†…†‡‡Š‰‰ŠŠ‰ˆ‰‹Œ‰‰Šˆ††‡†…„„ƒ€€~}~||||{zxyzzyxxxzxwxxxvxxxxvvwxwxz{xwy|~}}€€€‚„ƒ„†‰…‡…†‡‰Šˆ‰‰‡……††…„„‚€€~~|}}{zzzyyxxyzywvwxwwxxwvwwvvwvvvwwxxxwvxz}~{z|~ƒ„‚‚ƒ…†††ˆˆ‡‡ˆ‡††††††„ƒ‚‚€~~|{||{xxyyyxyxwwwwxxwvuvvuvvvtttvvuvwwxxwyz{||}~~~€‚ƒƒ„„…†††……††††……„ƒ‚‚‚€~~}|||{|{zyyyyxxxxxvvvvvvvvutttttuuuutuvvwxyxxyz||}}~€€‚‚ƒ„„„„„„„„ƒƒƒ‚€€~}}|{|{|{||zzzzzz{{{zyxxxxxyxxvutvvxxxwvvvwxyyyzzyyyz||}}}||{}~~~~||||||||z{{||||{||}~~€~€€‚‚‚‚ƒ„ƒƒƒ‚‚‚‚‚‚€~~}~~~}|{{|{|{{{zyyyyyyyyxwvvxwvvtututtpqqrqsrtsruwxz{~‚„†ˆ‹ŒŽ‘’”””””•••”‘‹Šˆ‡†ƒ~|zzyyywwvuvvwwvvuttwuvsqpopnopnnlnmqostxxz|~‚„†ŠŒ‘’–—˜—–˜˜——••”‘ŽŽŠˆ…„„‚€~}|zyxwwwwxwvtttvvutssqrrronmprtrqnrvz||}€…ˆŒŽ’•™™˜•–˜šš˜•“‘Œ‰†…†…ƒ€~~}{zyyzzzyvvvxyxvttussrpnloqspnlnqxy{z{}€†‹Ž’—™›™™™šœ›™—•””•”‘‹ŠŠŠ‰†ƒ€}{xwwxxxxwvvvvvvtutrrqoonprponnpswyz|}‚†ŒŽ‘‘“–—™š™™™˜š™——•–•“‘ŽŽŒ‹‰†„‚€~}{ywvvvvvuuttuvttrrrrqolllnnonkknsw{{||„ŠŽ’‘””—™ššššš™˜—–—––”‘ŽŽŒˆ„‚€€€~{xvvuvuttsrrrttrrrqpnmnkkmmokkjlovzyzz}ˆŒŽŽ’•˜š™˜•–˜™š˜––––•“‘ŽŽŒ‰„€€}yurrtttrqoopqsrpnopnlljijkmlkijlrw{z{~€„ŠŒ’”—˜–•––––•––––””’‘Ž‹‡„‚~{xurqrstrpnnppponnlljjgffgjkjhgjotxz{|}ƒˆŒŽŽ”•–•”““”–––•””•””’‘‘ŽŒ‰†„‚€~|zvusrrrrronnppolkkljhfedefgfhgiipsyyx|„Š‹ŒŽ”””’’’”•””•–””’’“’‘ŽŒŠ‡„‚‚€~zwuutrqpppoomnmmljhhffdcbedefehlnqtxx}‚†ˆ‹ŒŽ’’’’’“”””“””•–”“’‘‘ŽŒ‰‡„‚‚}zxwvutrqpppppomlkjjjgfeddffhhghknswy{|~ƒ‡Š‹Ž‘’““’’”•–”•”•––•”’‘މ‡„ƒ‚€~{yxvuttsqpooonljhihgfdcccdghiijmrvz||€‚…‰ŒŽ‘“”––””””––——–•”“’’’Ї…ƒƒ‚€}{xwvvvusqnnnonnkhfffgedeefghihlqtx{||€„‰ŽŽŽ’•––”““•–——––––•””“’‘ŽŒ‰†„ƒ‚~{xxvvvusqonmnnlifggfedccdfijlknqvz|ƒ†ŠŒ”•–•”••—˜——————––”“’‘Ž‹‰‡†…„‚€~|zzzyxvtrponnlkhgfdecddfghjilprx{~‚‡Œ‘‘’•—˜˜—–—˜šš™™™™˜˜–•”“’ŽŒ‰ˆ††„‚€~|{z{zxwtrqpnnllkigeeeffhijklmqty{~€„‡ŠŽ‘‘‘‘”•—˜———˜˜™šššš™˜˜—•”“’Љˆ†„‚€~|{zzxvtrqonkjjigfdccbefijjjmqux{}ƒ†ˆ‹‘’”••––—˜˜™˜™šššš™˜—–””’ŽŒŠ‰‡†„‚€}|{zywusqpnkihhheebdbeghjlknpux{{~„ˆ‰ŠŒ’“”•””–˜™™™˜™™˜˜˜—–”’‘ŽŒŠ‰ˆ‡…ƒ‚€~}|ywutrqomkihgfffddefhjklmoqtxz}~€‚…†‰‹ŒŽŽ’’“”•––––——˜———–”“’‘‹Šˆ‡†„ƒ€}|zxvtsqomkihhgffedceehijkknpruxz}€‚„†ˆŠŒŽŽŽ‘’””””••–———––””’’Ž‹Šˆ†…„‚~|zxvtrqomkhgffffeddddefhilmnppsvy|~€€‚ƒ†ˆŠŒŽ‘’“””•–••––––””“‘ŽŒŠˆ†„ƒ‚€~}{ywusronljihfeeeeefeffhijklnoqtvwz{}‚„…†ˆ‰Š‹Œ‘’“””•–————––•”“’Œ‹‰ˆ†„‚€~|zxvtrpmkiihgedcbcddeeefghjkmnprtvxz|~€‚„„†ˆŠ‹ŒŒŽ‘’”•––——˜˜˜—––”“’ŽŒŠ‰‡…ƒ~}{xvtrpnkjihgecbbccdddcdfghhjlmpqsuvx{}€‚ƒ„†‡‰‹ŒŒŽ’“”––—˜˜˜™˜˜—––”‘ŽŒŠˆ†ƒ€~|zxvtrpnljhhgfedcbbbccddddegiklnprtvx{}€‚„…‡ˆŠ‹ŒŽ‘’”•–˜˜™ššš™™˜–•’ŽŒ‹ˆ†„‚}{yxvsqomlljhgedcdddddddefghiklnoqruwy|~€‚„†‡‰Š‹Œ’””–—˜˜™ššš™˜˜–“‘ŽŒŠ‡„‚€~|zxvtrponljihhfddcdddeeeffhjklmopstvyz|~ƒ…‡ˆ‰‹ŒŽ‘“”•–—˜™™™™™˜—–”’‘Ž‹ˆ†„‚€}{yxvtrponljihgfffeedeeffgghijlmoqrtwxz|~€‚„…‡ˆ‰‹ŒŽ‘’””–—˜˜™™™™˜˜—•”’ŽŒŠˆ†„‚€}{zxvtrponljigffefeeeddeefghijkmnprtwy{}€‚„†ˆŠ‹ŒŽ’”•–—˜™™šššš™™—–”’ŒŠˆ‡„‚€~|{ywusrpnmljihgfeedddddeeffhijlnprtvxz|~€ƒ…‡ˆŠŒŽ’”•—˜™š›œœœœ›šš˜—–”‘ŒŠˆ†„‚€~|zywutrpnlkjhgfeddddddeeefghjkmnprtvx{}€‚„†ˆŠŒŽ’”•—˜™šœœœœœšš™—–”’ŽŒŠˆ†„‚€~|{ywutrpomlkjihgffffeeefffhhjkmopsuwz|~€‚…‡ˆ‹’”•—˜š›œœœ›š™—–”’ŽŒŠˆ†„‚€~}{yxvtsqpnmljjihhgggggghhijklnoqstvy{}‚„†ˆŠŒŽ‘“•–˜™š››œœœœ››š™—–”’‘‹Šˆ†„‚€~|{yxvtsqponmlkkjjjiiiijjjkllnoprtvxz|~€ƒ…‡‰‹Ž‘“”•–˜˜ššš››››š™˜˜—•”’‹‰‡…ƒ€~|zywvtsrppnnmllllkkkkkllllmnoprsuwy{}‚„†ˆŠŒŽ’”•––—˜˜™š™™™˜˜——–•”’‘ŽŒŠˆ†„‚|{yxvtssrpppooonnnnnnnnnnoopqrstuvyz|~‚…†ˆŠŒŽ‘““”••–––——–––•”””“’ŽŠ†„ƒ€}zxvutrppooonmmnnmnnoppppqrsuvvwy{|~€‚„…‡‰‹ŒŽ’‘’’’’’’’‘‘ŽŽŒŒŠ‰ˆ‡†„ƒ‚}|zzywvuuuttsstssssstttsttuuuuvxyz{|}‚ƒ„†ˆ‰ŠŠ‹ŒŽŽŽŽŽŽŽŽŽŽŽŒŒ‹ŠŠ‰‡†…„„ƒ€~}|zxyywvuuvvutrtuuuttuvvvvvwxyyyz||}}~€‚‚‚ƒ„…†‡‡ˆˆ‰‰ˆˆ‰Š‰‰ˆ‰ŠŠˆ††‡‰ˆ†„‚„„…ƒ€~€~{y{zzyxwxxwxwwvvxzyvvwyzzwwz}||zy|€}}‚ƒ€€‚ƒ„ƒƒ„…„„†…„…††…„ƒ…‡†„‚‚„‚‚~€‚€~{zz~€|yxx{~|xtx|}xuy}~~|vy€€}zy{€‚~|{|€€~€~z€„€{ˆ…~|‚†„€}~€‡…€{ƒ‚„~~{|ƒ…|z|€„€{||}€€€|z~€~|z|~€~{{~€€{x}€~z|€„|uv|†‚zxu|ƒ†~vx~ƒ„vv~ˆ…~zxˆˆ~z‚„ƒ‚ƒˆ‰ƒ{€†ˆ~‚†„z|‚€}~|~}zz€y{ƒ‚z{†„~zrw‚xuvz}||yv{|yy|{€ƒƒ‡‡††€~†Šˆˆ‚}€…|z‚Šˆ}z{€…ˆrz„ˆ„tqz€†vvx€€{w|}zx|z{|~|xzyx}‚}tx~|‚„€|~{~‰Š‚|‡Œ„…ƒ„‰|„‰„‚…†{}ƒ€€†}~~x„ƒ|tx‡‚zww€‚zt{†xnx„€rgy†ƒztx~„‚|x|€ˆŒ‡~~‚ŠŠ‰Œ„ˆ‰…~ƒ‹Š}†‹„~~…‚€ƒz€ƒ|xz‚‰{qz‚€}tvyux~{{vx~zx}y}|~~„}‡€‚Œˆx€ŽŒ‰ˆ|‚‹„ƒ„‚ŽŒ…{}Š…yy‚…ЇtpŽ…xwy|‡~y|zz€€}yyzw}{vt}€{uow‚‚zx|y‰€vƒŽ}zŠŠ‡Š‚‹‡ˆ‡…†‚ˆ†„Ž}z‰~ˆŠ€xy‰Žtv~Š‚rp€‡‡{or€Œ€ywlxˆ€olz‰ƒthv~†x€~rŠ~}‡†}‡†€€”„~†ƒŠ‹„x†‡‰ˆ‹‚|„ƒ€„„~†‚|x‚Œ}s€†zƒty„ƒvtz…‡v~xo~xyvyr|{|sv}|vz„Œ|z…ŽŒxŒŒŠƒ{‚†Œ‹€‡…Šw}އ€}ƒ‰‰~rz†‚ˆxo„‹zw{u|„|wxz{}zjt‡}xtlx‰yp{‚€uz…Š~zƒ€€‡‰ƒ}„…ˆ‡ƒ€†‡„‚ƒ†„{…Œ~x€ˆ„zz„‚}uu†Œzxzx„ˆud|Ž|vwgt„nlyp€ˆvkxŠzz|zŒƒ€€zƒ…‰|}ˆˆ‚„‚z‚ƒv{†Œ†tvˆ‘†yx€„~‚t‚‡~uz„{~ƒtwƒ{xzxwxx}xotz€€{lr‚‚€}vt„„‡~}‚†ƒƒ‚€„…‚ƒŠ€}ˆ††‚ƒ€‚†xŒŠvt‚ˆˆ~uv{‰ˆww|„„x||w||sy|xvvtx€rp€„}z|x|„„z‚ˆ‚v€…„ˆ„€…‚‚ƒ†ˆ~‚‹‡}€„„~|„ƒ~ƒ|y€„~}‚€vwŒ…xn|‚‚ƒwp~|wrz„€ph€wtz|€‚yx|ƒˆ~y€ˆˆ‚}|€†‰Šz|„†Š…|ƒŠ‚|€†Š„x~„Š}{y}ƒ„zy~z€†ˆst~|€{vsx€}qz{t~w|ur|…€~{zƒ…}‚€‚…‚}ƒˆ…|~‚‡Ž‚z‚‹‚Š~x‡ˆ|~„zŠ|s…‹vx~‚}|€s„}{~|{||ty…np|~zwy~|zx~†~y|‡Šƒ{y…„І~€~‡’n†‡€†€~…„€€„~€}…€|}‚‚v{|}€~}ztx~wxs|ƒyz|ux‚…}w‚‚~|€€†ˆ†|uˆ†~…ƒ‹~€„ƒ†‡‡{†}y‚„€€…ƒx|}ˆˆyvt€‡†€xz|{}‡~vr}„|wzwv~€z{‚yxy€€‚€z|ƒ†„‚~~~ƒ‰ˆ€‚ƒ„€„Їƒƒƒ„††…€‚„ˆ|…ˆ~zz‚‚„~vƒ|€€u|€|{}}{zxv~€|vxzx€„}}€~ˆ‚€~ƒ‡ˆ€{„‹†ƒ‚„„†„„‚ˆ‰„„€……‚††~|‚Šƒ|z}}††zz‚}w}{~ˆ‚tpt|‡€tsz€‚|x|{y‚‚|€‡}y‚…†ƒ~‹‰„€‚‚ŠŒ‚~…†„…ƒ€€†€††~‚„|yƒ…ˆ„xv€‚†zv}…}y{}}|{yz|x|zz}|vx‚z{z~€‚ƒy|€ƒ…ƒ‡€‚ƒŒ‰‚|~Š’‚x†‰‰€x…„€‚|~‚„zw‰~|xy‚„~rs‚„tq}~}‚rk~‡ƒyow„…~wy{‡ƒz‚€|~ƒˆ€‚†}…‡††‚~ƒŒz~ˆŠƒ€…„€€€z{†‚||{ƒ~w|~z~{vy~yz|uww{wzz|w€{~„w|„€†zx†’x„„„ˆ„‚††€€‡‡†„ƒ€ˆ†…z~€…††{yx{…„{ƒ~vv}‚wx{v}xx~‚|sp|ƒ}{sx†€vt|…„‚||z~†‚†‚€†ˆ…‚ˆ‡‚†…„Œƒ|‚Ї†|{€‡Œ‚xr~‡ƒ„uv€„|vz{~|~xrx~{|}sr}‚}ttwz†€x}z„~|€†„ˆ…|}…Œ‰ƒƒ‚…ˆ…„‚‰Š||…†††‚~zˆƒ|}z}‚}wƒ|xu}{{yvoz€}s|vs}vy}zz|y~‚‚z}€~„…€‚‚„‹……ˆ€„‹†ƒ†…‰„~„ˆ€wƒ€€{|…„‚{xƒz}~{||vw~}zy{wn|}|qsz~|€‚yru„‚‚|y{ƒ……ƒ}€‚†ˆ}ƒŠ‡„‡Šˆ‡‡ƒ‡‹‚€~†…‡~z‡€{|€ˆ‡~txzƒ„wr|€|y{zvvs€zz{}|tut‚…zs|}†ˆsxƒ†„€ƒŠ†‚zŽ“‰}|…ŒŽ†€„†‰ˆ†€€~ƒƒ†ˆ~}y€†‚zzzƒ|zwzx{{{zw|yq}|yzx|z~||yx}€‚~€ƒ|~‚‰Š„x€‰…ˆˆ…„ƒˆƒˆˆŽ„„…„ˆˆ~}€‚€‡‚z||‚†„}stz†‡zpx}y~€xsy}~xx|}{u|w{~‚|z„€~€}†‹†~ˆ‘€~„Žˆ†„ˆˆ‚‡…ˆ‚„„…ƒ‚~…†~v{„ƒ€xz~‚tl}€}uqx|uz|zvx~|‚xu~|€‚€|wƒ‡€~„„€‚ˆ‰„ƒ‚‚†ŠŠˆƒ……‡…‚„…ƒƒƒ‚…ƒ€‚{~‚„||}|{~xx||ruvx~yxvxyzxvx|||z|~~|}~„…‚€ƒ„‚„†‡ƒ††‚ˆˆ„„……Œ„€‚ƒ‚ƒ„€}‚†‚~|‚ƒ~wy„‚|xvz€€xuy}z|ztxzx|zy{wxzyy~{{~{~€€|€}…ƒ†‰‚ˆ‰Š„€†ˆ‡‰ƒƒ††Šƒ€€ƒƒ}{~„ƒ}wx€|{x{z}~zwx|{|{wtzzz|wtz€}xuz€~yz€€ƒ~z~„†„|‚‰Š…‚‚ˆŠ…€„‹ˆ„‚‚ƒ††}€„†ƒ}z}z|zz~~{yxyzxzyvuy||xvwz{|zxy|{|}}{€~|}„‚€~ƒ††‚„†‡†ƒ‚‡Š†‚€ƒ†ˆ…‚€‚‚ƒ~~}}}}}~}xxz{{zzxxz||xuxzzy|{yyzzzz}~|z{€~}}}~ƒ…„~ƒ……‚†ˆ‡†…„†…†„ƒ…†„€€„„€||~€~{xy||{zyzzyz{zyyy{}|zyxzz||||zz{}|{|}~€€€€„†„ƒ„†ˆ‡†„ƒ…†‡……„‚‚ƒ„„‚€‚€~~}~}||yy{|{{{zzzyzz{zz|}}|{zz{~€|~€€~}~€‚‚‚„…„„ƒ„†††††„„……„ƒ‚„…„‚‚‚ƒ„‚‚‚ƒ‚€~€~}}|||||||||}|z{{|{||||||}~~~~€€‚€€€‚‚„„„„ƒ‚„‚‚‚‚ƒƒƒ‚€€€€€€€~~~€€€€€€€‚‚‚ƒ………„„„„„„„………………„ƒ„‚„‚„……„„ƒ„‚€€€~}|||{yxwvvttsrrrrsrqpooopqqsswyx{{~ƒ‡Š‹‹Œ’““’”–˜™–•““““‘ŽŽŽŒŠˆ‰‰‰‰Š‰‰ˆ‰ŠŠŠˆ‡†††…„ƒ€~}zvtrqnjfba\ZTRQRPQSYbjnqv~†ˆŒŽ•œ ¤§©ª¦¤¢¢¡žš—•”Œ†~|}}|zy{}€€‚ƒ‡Š’”˜šš›œžžžž›š˜–•’ŽŠ†ƒ€|vqljffdb^ZYXWVSRRTWZ`emvx‚‚‰Ž‘™™œ¢ ¥§£¢œš˜˜•‘‹‰ˆ†‚€|z{|}}~~„ˆˆ‹”–™™›››œ›š—–’‘Œ‰…}zvspnnnljhgffda^]\YVUW\`hjrv{‚ŠŽ‘Ž’”¤¢¡œ›žž›—ŽŠ‹Š†ƒ€€€~}||}~‚„…ŠŠ‹’”“”“•––•’ŽŽŽŒˆ†„ƒƒ‚€|zxvtrrpmkihjd_\ZYWTTRZ`cnpu~‚ˆ‘”•šŸ¡¢¢ ˜—•”‹‡„ƒ„€~}yyyzz|~~€‚ƒ‡‹ŽŒ”—˜”’’“––’ŽŒŽŒ†‚‚‚‚€~}|{xursrplljihd`\ZYTTVTX_fuw~‚ƒŠŒŽ–—›œ£ žš•Š„…ƒƒ}{yyywy{|~‚‚ƒ†‡ˆŒŽ‘“”–’’‘ŽŒŠŠŠŠ†‚ƒƒ‚€|z}}ytqqpolhecba_ZVRQSUX`hqsz€ˆŽ‘—šžž ¢ Ÿš“Œˆ‡‚|}|{xwxzx|}~ƒ‡‡ˆŠ‹‘‘“‘“•”’ŽŒŒ‹ˆ‡†…„‚ƒ€€}}}vtusrojhhdb^\YTVQPQUafnrw„Š’–’–Ÿ¢£¤¢  ˜”މ„‚€~}zxxvz{{~„‰‰‰ˆŠŒŒ‘Ž’‘‘’Œˆ‹ˆ†ˆ†††„ƒ€€~||{yxrppljhd_\\[UPOPPUY`jv|„†Š–žœž¡¡¥ª¦ž–”’Œ†€€||zuuxtuy|~‚ƒƒ†Œ‹‹ŽŽ“–”‘‘ŽŽ‹ˆ‰ˆ‰„„ƒ~{z|~yssrnngfef`_^]ZTTTRXafux„Š‘‘–™¢¡  Ÿ¢Ÿ–Žˆˆˆ…|~~|{vuxwz{|€„…†ˆ…‰‘Ž’“’‘Љ‹ŠŠ†‚……€€~|||zxvsqohhjfc`ZZ\TPTW\bjwz}ˆŽ•“–ž¡£¢ ˜”ŒŠˆ†ƒ€€~|wwxtty{€~€…‡‡Š‡Š‘”’’‘‘‘‹†‹‰††‚‡‚{z|z||vprtplifad`]\VVVVUZdjtuz{„ŠŽ–œ ¢ œ›š—ŒŠ‹ˆ†„‚}}|xvsuzz}}~ƒƒ…†ˆ‰’‘ŽŽŽŽŠ‡‡Šˆ…„€~||xwvuspomkihfdcc`\\[ZYZ_fnsrw}„„†‡Œ’™˜˜™šš˜’ŽŽŽŽŒˆˆ‡„zzz{{|||~€‚€ƒˆ†‰ŠŠ‹ŒŒˆŠŒŠ‡ˆ‡††„€~}{zyxvqonoligffccc`]\\\[_dhnrvv|‚„‚„Š’”˜–—𙕑“‘ŠŽŽŠ†„‚~|{|~€‚‚‚„‡ˆŠ†‡ˆˆˆ‡†‡ˆ†ƒ„ƒ‚|yxvvvqolkjhgcbca`a`]]_afjprsv{~„†‰’•˜•••—“““’’’ŽŽŠ†ƒ‚€€‚‚~€ƒ€~‚††ˆ…ƒ††ƒ„†„…ˆ„„„}{{zxwwupspnnljihghjhddhjjjlpuvwyz}ƒˆŠŠ‹ŒŽŽŽŽŽŽ’ˆŒŒ‰††„ƒ…„ƒ‚‚€~~€~~~|{{{yzzz||}{yzzz}}|||~€|||{|{||{|{zxzz{|{xw{}zyzzzy}|}|~~€‚€ƒ‚„„„„…„‚ƒ„††‚€ƒ…„ƒ€‚€~|~€~}}||~~}}}}~€‚€ƒƒƒƒ‚‚‚‚ƒ‚€€€€~~~~~~~~~~}~~€~~€‚€€‚ƒƒƒ‚„„ƒ„„‚„„ƒ‚ƒ‚‚‚‚‚‚€~}}||||{{|{{{{|~~}|€€€‚ƒƒƒ‚„„ƒ‚‚‚‚€€~€€~~€‚…„€ƒ†„ƒ„„ƒ‚‚‚‚‚€€‚~€~~}||~~|{{{}}{z||}}}}}~€€€‚‚€ƒƒ„ƒ€€‚€}€~}~~€€‚‚‚ƒ„‚‚‚‚‚‚ƒ€€‚‚€€€~~€}|||~{x{{||zxz{|{||{|}}~~}}‚€€€€‚ƒ‚~‚ƒ‚~~€€€€|z~€€~{}€~~€‚‚€‚‚‚ƒ‚€€~~}~€}{|~~|{|{||{{{yy{|{zzz|{z{{{||||}~}~}~~€€~~}~~€~|}~~~€}}€ƒ€~€€‚‚‚€€€€~~€}||}~~~{zzz||{|{yyz|{yyzy{zzz{|{yx{}||z{~~{z}~~}}|}~~~}}~~~}~}~~~~~€€€~~€~|z}€~~{{~~|{||||||z{||||yy{|{yyzz{}{y{z{|{{{|||~}}~~||~~~~}~~~~}~||~~~~~}|~€}~~}~~}~€~}|~}}~}|z}~}{}|z}}{|||{|{|{||z{{{||{{{{{{|~||}{|~}}}~~~}}~€~|~~~}}}}~~~~~}~~~~~|€~||}~~~~|z{~~}}|{{}}|}|{{||~}z|}|||}||}|}~|||~~~}|~}}~€€~|}~€~}€~~~~}€~~}}}€€~|~~€€{|~~~~~€~}{|€|{~€~|}~~~~}}}~}~}}}|}~}}}~~€~~~€€}€€€€€€€€€€€€€€€€€€€€}€€€€€~€€~~€~€}}‚|~~€~~€€€€€~€€€€€€‚€€€€€€‚€ƒ‚~€‚€€€€€€€€€€€€€€~‚€€€‚}€‚~€‚€€~€€~}€€€€€~€‚€€€€€€€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€€€~€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚€€€€€€€€€€‚€€€€€‚‚€€‚‚€‚€€€€€€€€‚€€€€€€€€€€‚‚€€€‚‚€‚‚€€€€€‚€€€€€‚‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€€€€€€€€€~~~€€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€‚‚‚‚‚ƒŠŠˆ†††ƒ‚„…„„„„„‚€‚‚€‚€~І„ˆ………‚€}||~~z}~zy|~w{~w|zz~u~~v€z~|‚~‚€ˆ…}‚‡Š„‚ƒˆ‰ƒ‚…‰‚‡ˆ}…†ƒ…|‚…‚~‚‚~~~ƒ‚~€€ˆƒ|~€‚€~€‚|}‚|||t€uuyxqvvnoxzotz}~z|z~…€‚‰„ƒ‰Œ……Œˆ‘š‰‚Š‰‡„ƒ†„†‚„~}||†ˆ€€‚†~ƒ„‚†‚†ˆ€…ƒ€ƒ†…ƒ‚€€zw|~{z|ywttsrqtutqtvqpvxzz€€~„€€„ˆˆ††‰„„€‚‚‚‚ƒ|~|zz{|~~~}}|{}~€€‚„ƒ‚‚‚‚‚ƒ„ƒ~~}||}~~{{{ywyzyxxxzvvvvuttttvvvwzyz}€€~€ƒ……„„„„………„‚€€‚€~~~~||{|~~~}}~~~€€‚ƒ€€€€€€€€}~~||}}|{yyxxwvutttsqrqrstxyz|}~€€‚ƒ„††††††……ƒƒ‚‚‚€€~~||||~~~}}~}|}‚‚‚ƒƒ‚‚‚‚‚‚€~€~~}~~~|z{zzz{zzxwvutssrrrsstuwz{}€‚‚‚……†††ŠŠŠ‡†…„„‚€~~}|{|||}|}~€€€€€‚„„„‚ƒ„„‚€€~~|{{{zzzyzz{zzxwwwwxxyxwxvvuvx{€‚ƒ„†††ˆˆ‹ŒŒŒŒŠ‡†……„„ƒ‚‚~~€€€~~~}}~~}||{{zzzz{z||zyxyz{{{{|||{{{{{}|}{{|}}}|}~~~~‚ƒ†‡ˆ‹ŒŽŽ‘‘“’’’‘Ž‹Šˆ†……„ƒ€~||{zzxyxxxwwwwwvxwxxwwwvxxvutuvxvwwy{}|}~€€‚……†„ˆ‰ˆ‰ˆˆˆ‡††††‡‰ŠŒŽŽŽ‘‘’“”““’‘ŽŒ‰ˆ†„„€~}|zwvtttrqqqpppqppnoqssrrstvvy{|ƒƒ„…ˆŒ’’‘ŽŽŽŽŒ‡…„ƒ‚ƒ…‡ˆŠŠ‹ŒŒŽ’“•”’’Ž‹Šˆˆ‡„‚~|xusrqponnljhiiihilnmmmmrux|ƒ…††ˆŠŽ”•—––’‘ŽŽŽŽŽŒ‹ˆ……„…‡‡ˆˆ‡ˆˆŠ‹ŒŽ‘“““ŽŽŒŒŠˆ†„ƒ€}yutttsqpnljihhiiikloopnquz€‚„‡ŠŽŽ’”––“ŽŽŽŽŽ‹Šˆ‡ˆ‰ŠŠ‡‡†‡†‡ˆŠŠŒŒŽ‹‰ˆˆ‡††…†…‚|xwvttqonmkigfefhijllmorx|€‡ŠŽ’““•••–“’‘ŽŽŽŒŒŒŒŠ‰ŠŠ‰‰‰ŠŠŠˆˆ‡‡…„…††‡ˆ‡†……ƒ‚€€‚‚€~zywvurpnnlljhhfdffghhns{~~‡ŠŽŒ’’—˜—–”Ž‘‘Œ‹Œ‹ˆ‡ˆŠŒŽŠ‹Š‹ŒŠ‰††††‡„~~€€€~}|||}||zxxyywtpoonnmjiijklllkjmpw}}„ˆŒŽŒŠŽ‘’‘’Ž‹ŒŒŠ‹ŠŒŽŽŒ‹‹‹ŒŒŒ‹ŒŒŒŠ‰ˆ†…ƒ‚‚}|||{zyxxy{zzzxxxvutppqprpnnlijiiifhnrwyyz€‚†ˆˆ‰ŠŽŽŽŽŽŽ‹Š‹Šˆ‰‹ŒŒŠŠŠŠ‹Š‰ˆ‡‡‡†„‚}}}|{yxyyxxvtrrrsqpmllljjhgijjjjiijlpv}~„ƒ†‡…†ˆˆ‹Ž’’Ž‹ˆ†‡††‡ˆ‹‹ŒŠŠ‰ˆ‰ŠŒ’’’’‘Љˆ‰ˆ‡†…„~|zxxvwxxwsqpmljhijjigfedb`acegimsxyz|€†††‡‹’‘ŽŽŽŒ‰‡ˆˆŠ‰ŠŠŠŠˆˆˆŠŒŒŽ““ŽŽŽŒ‹‹Šˆ‡…ƒ~|{{zzyvvtrqnlkhghggfedeegghghjntxzz{€ƒ‡ˆ†ˆ‹ŽŽŒŠˆˆˆ‰‰ˆ‰Š‹Œ‹‰ˆˆŠŽ‘’“‘ŽŽŽŽŽŒŠˆ†……„~}||{yxvutssqomkkjhgffeeffgffgjoswwz‚…†ˆˆˆ‰‰ŒŒ‹ŒŒŒŠ‰‰ˆˆŠ‹ŒŒŒŽŽŽ‘’’’‘ŽŽŒŠˆ†††††„‚€~|{zxwutssrpmjhhhggffghggfhhilqw|}~€„ˆŠˆˆˆŠŽŒŒŒ‹ŠŠˆˆˆ‰ŠŠ‰‹’‘“”’‘Ž‹‰†…„„ƒ€~}|{zxutsstrpnljjhffdddeefefilptwz~€ƒ„‡ˆ‰‰‰ŠŽŒ‹‹Š‰††ˆŠŒŽŽŽŽŽŽŽ’”“’Œ‹‰†„ƒ„„„‚~|yxwvvtssrpnjhededddegggeefimruz~‚…‡‡†‡ˆˆŠŒŽŽŽŒŠˆ…ƒ„…ˆŠ‹ŒŽŽŽŽ‘‘‘Ž‹Šˆ†„„„„‚€}{yxvutsqqponkhfeddbabbcdfehioux|~‚†‰Š‰ˆˆ‰‹ŠŒŒŒŒ‹Š‡…„„†ˆˆˆ‰ŒŽŽ’’Ž‹‰‡…ƒƒ‚€~|{zxvsrpponlkjihgeeddcdfffhjmqtvz|€‚…†‡ˆŠ‹ŒŠ‰ˆ‡†‡ˆ‰ˆˆ‡†‡†††‡ˆŒŽ‘’‘’‘ŽŽŽŽŽŒŠ‡…ƒ€~}|{zzzyxusqoomlljjhgdbbabbbcdhlpsuyz‚„†„†ˆ‰Š‰‰ˆŠŠŠ‰‡†„„……†‡‡‰ŠŽŽŽŽŽŠ‡…„ƒ‚€€~}{xvtrpnnmmlkjhfdccbbccdfgknsxy|~„†…†‡‰‹ŒŒ‹Š‰ˆ‡†…„„„…††‡†ˆˆ‹‹‘‘‘ŽŒŒŒ‹Šˆ†…„‚€~|{zyxxwutrqpnmkjjihfeddddcbcgkotvz}€„…‡†…‡‡ŠŒŠŠˆ‰Š‹‰†…„„……†…‡ˆŠ‘‘ŽŒŒŒŒŠˆ†…„ƒ}||{zyxvtsrpnljihgfeddbccdefjnrx{€‚„†‡‰‰ˆˆŠŒŒŒŠŠ‰ˆ†…ƒ‚ƒ…†ˆˆ‰‰‹ŒŽŽ‘’’‘Ž‹Šˆ††…„ƒ€~|{yxvtsqqponkihfedcccddfgjlqtvz~‚…†‡ˆŠŒŒ‹Š‰Š‹‹Š‰‡‡‡††„ƒ„…‡‰ŠŒŽ‘‘ŽŽŽŽŽŽŒ‹‰†„‚€}|{zzywusqomljhgffeedddfegjmqvy~‚…†ˆ‰ŠŠŠŠ‹ŒŒŒŒ‹Šˆ†„„„„…†‡‰‹ŒŽ‘’’ŽŽŒŠˆ‡†…„‚~|zywvtrqpomkihgfddcdffghkosxz}€„ˆ‰‰ŠŠŒŒŒŒŒŠ‰ˆˆ‡…„„…††††ˆŠŒŽ‘’’’ŽŽŽŒ‹Š‰‡†„‚€~}|zxvvttrqpnnljiggffffghhijnqtxz„…ˆˆ‰ŠŠ‰‰ŠŠ‹ŠŠ‰ŠŠ‰ˆ‡„„……†‡ˆŠŒŽŒŒŒŒŒŒŠˆ†…ƒ~|zzzyxutqpoljgffeddccdfgfikpstx|……ˆ‰‰ŒŒŒŒ‹‹ŠŠˆ‡…………†……†‡‰Š‹‹‹ŒŽŽŒŒ‹Šˆ‡†…ƒ‚€~|zyxvtrqponljhgfdcbbbddeehlpuwz~‚†ˆˆˆ‰‹ŒŒŒ‹ˆ‡††…„„„…‡†‡†ˆŠŠ‹Š‹ŽŽŒŒ‹Šˆˆ‡†„‚€€~|zxwusqonnljhfeedccbcefghjnrvwz~‚†ˆˆˆŠ‹ŒŒŒ‹‹ŒŒŒ‹‰ˆ‡†…„„ƒ……‡ˆ‰Š‹Œ‹ŒŒŒŒ‹‹‹ŒŒŒ‹Š‰‡†„‚€~}|zywvtsqomjiihfeefggggghjjmotw|€ƒ†ˆ‰ˆˆŠ‰ŠŠ‹ŽŽ‹‰ˆ†…„„…†ˆŠŠŠŠ‹ŠŠ‰ˆ‰ŠŠ‹‹ŒŒŠˆ†…ƒ€~~|{ywurpnljihhhffeefffefhknpux|€„‡‡‰ˆ‰‰ŠŒŽŽŽŒŠˆ†††‡Š‹‹ŒŒ‹‰ˆˆŠŠŠŠŠ‹ŒŒŠˆ‡†…ƒ‚€‚‚€~}zxurpnligffedcdddeggfjmntvz}ˆŠ‰‹ŒŒŽŒŽŒŠŠŠ‰†…†‰Š‰‰ŠŠŠŠ‰†‡ˆ‡ˆ‡Š‹Š‹‰‰ˆ†…‚€€~~}{zwtsqnljhhhgffhhhigjlknqtuz}~‚†ˆ‡‰ŠŒŒ‹‹‹ŽŒŒ‹‰ˆ‰ˆ†ŠŠ‰‹Š‰ˆˆˆˆˆ‡‡ˆŠ‰‰ˆˆ‰‰†„‚€€}||{yxvutpnmjihhhgfghhgghjknpsvy|€‚ƒ…‡ˆˆŠ‹ŠŠŒŽŽŽŒŒŠŠŠŠŠ‰ŠŠŠˆ‡††…„„ƒ„„„…„ƒƒƒ‚‚~~}||{zyxxvsqonnmllllkkjiiijlnprtvxz|}~€‚„††‡ˆ‰Š‹‹ŒŒŒŒŽŒŒŒŒŒŠŠ‰ˆ‡††…„„„„„„ƒƒ‚‚‚‚‚€€~~||zzyxvvttsrqppoonnmlllllllnoprrtuvwxz|}€‚„…†ˆˆŠŠ‹ŒŽŽŽŽŒ‹‹ŠŠŠˆˆ††…„ƒ‚€~}|{yxwvuttsrrqqppopponnmmlllllllmopqrsuvxz{|~€‚ƒ„…†‡‰Š‹ŒŒŽŽŽŒ‹ŠŠ‰ˆ‡†…„„‚€€~}|{zyxwvutsrrrqpoonnnmlllkkjjjjlmopqstvwxzz|}‚ƒ„…†‡ˆ‰ŠŒŽ‘‘‘‘ŽŒ‹Š‰ˆ‡‡†…„ƒ‚€~}|{zyxvutsrrrqpponmllkkjjjjjjjklmoprtuvwyz|}€ƒ„†‡‡ˆŠ‹Ž‘’’’’‘ŽŒ‹‹ŠŠ‰ˆˆ‡†„„‚€~}|{zyxwvutsssrrqponnmllkkjkllmnopqstvwyz{|}€‚ƒ„…†ˆ‰‹ŒŒŽ‘‘’’’’ŽŒŒŒ‹Š‰‰‰ˆ‡†…„‚€~|{zyxwvtssrrrqqppoonnnmmmnnnoprstuwxyz||~‚ƒ„…††‡‰ŠŒŒŽ’’“““““’’ŽŒŒ‹‰ˆ††…„ƒ‚€~|{zxxwvvutsrrqqqpppooonnmnoprstuvwxyz{|~‚‚ƒ„…‡ˆ‰‹ŒŽ’’””••”“’ŽŽŽŒ‹‰‡…„ƒ‚‚€~}|zxwvvvvuuttssrrrrrrrrppopprstuvxyzz{|~€‚ƒƒ„…†‡‡‰Š‹Ž‘‘‘’’““’’’‘ŽŽŒ‹ŠŠ‰ˆ†…„‚€~}||{zyxwvuuuuuttttssrrrrrrrrrrstuvxy{||}~€‚„„…†‡ˆ‰‰ŠŠ‹ŒŽŽ’’‘ŽŒ‹Š‰ˆ‡†„ƒ‚€€~~|{zzxwvvvuutuutttstssssssssstttuvwxz{|}€‚„…††ˆˆŠŠ‹ŒŒŽŽ‘‘ŽŽŽŒ‹‹‰‰ˆ†…ƒ€~~|zyyxxwuuuvvvvuuuvuuutuuuvvutvvwxxyz|}€€‚ƒ„†‡‡ˆˆŠŠ‹‹‹ŒŒŽŽŽŽŽŽŒŒŒŒ‹‰‡‡……„ƒ‚€~}{zzxxxwwxwwwvwwwwwxxwwwvvwwwxwwxxxzz{|}€‚‚ƒ„…†‡ˆˆ‰ŠŠ‹‹Š‹Š‹‹‹‹‹ŠŠ‹‹Œ‹ŠŠŠŠŠ‰‡†…„ƒ‚€~~}|{{zyxxxxvvvwwwvvvvwwwwwwxxxxxxxyzz{||~~€‚‚ƒ„††††‡‡ˆˆˆˆˆ‰‰ŠŠ‰‰‰‰‰‰ŠŒŒ‹Š‰‰ˆ†…„ƒƒ‚€~}{zzyyyyyyyxxxxxxxyyzzzzzzzzzz{{|||||||}~~€‚‚‚ƒƒ„„„…††††‡†††…†††‡‡ˆ‰ŠŠ‰‰‰Šˆˆ‡‡‡†…„‚‚~}}|||{{{zzyyyzzzzz{|{zz{z{{{{{{{{{{{{||}~~€€‚‚‚‚ƒƒ„„„„…††‡‡‡‡‡ˆŠŠ‹ŠŠ‹‹‹Š‰ˆˆˆ‡†…„‚€€~~}}}~}||{|||||||}}}}|}}}}}}}|||}||||}~~~~~€€€€€‚‚‚ƒƒ„„………†‡ˆ‰‰Š‹‹ŒŒ‹‹ŠŠ‰‰ˆˆ‡††…„ƒ‚€€€€~~~~~~~~~~~~~~}}}}~~~~}}}}}}}}}}~~€€€‚‚‚‚ƒƒƒƒ„…‡ˆˆˆ‰Š‹‹‹ŠŠŠ‹‹ŠŠŠ‰ˆ‡†…„„ƒ‚‚‚‚‚‚‚‚‚€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~€‚ƒ„……†††‡ˆˆŽ’ŒŒŽŒ‹‹‹ˆˆˆ………„ƒ‚‚€€€~‚€‚€€‚€€‚€}~€|}€|}~{|}z{{|{|{|{z~~}~„‚‚ƒ…†„†ˆ„‡ˆˆˆ…‰Š‚…‰ƒ€†„€……„…Š}‚Š€€ˆ†}†…€„‚|„~~€€|~‚~{ƒ|x‚w~|z{z~}v~|y||z|}z€€ƒ†‚„ˆ‚‰‚†ƒ††„Ž‚‚Š„|…‚ˆxˆ‚‚…ˆ„‚„‹€€Š†}ˆˆ~€Š€|„„|{‰y€zƒ}~z|‚v~r‡xv†uzxz|}z{„w€‚‚yŽ|~‘‚x‡~‡„Š}‚Œ~‡…€}‰ˆy~~v’‰‡„‚…‰„z€|‡‹|‚„„y…x‚†wxˆ‚t~|w}xw‚zxy€vu~|t~}w€z„y‰|Œƒzx‰‡|Œ}†„‚ˆz‹~„zŠ|Š}€††€„…~Š~†€‹{ˆ†~~Š}~~‚}€~|€€~y…t€~r}‚pv{zw{xt}|l„tvu}|z†w~tƒ„…{Š~€‰‚„„€„~ˆz~Šz‚€„€ztˆ‡{„‡{†€€ˆz‹rƒ‰r‚€}xƒy|y}~u}zx|v~r|v{us~vtx{o{{qt„u{‡|z„‚}‡vŠ|†€z|~ˆ|€ƒ|ƒy„‚~x|‚‚}sŠ|ˆ|‡{~ˆs…z‚}{z}u‚z}s†p|v‚qvzwwr|qwxquzrvr{y„s‚ƒv†‚w‡zŠ}}‰|‚~€|‡v‡{†w†„z…„z‡„|‡€~‚|€x€…q†v†syƒzq‡o}ry}st}qwp€j~qwyvxyzx|sŠ‚k•x}‚…zƒ}‰~wˆ€€x†v‰~{†z‹z€ŒxŠz…„yŒy~qˆ„v„†q†z~z}x}~r…t{r|r|zk}}ntƒj|ywt~yw€{†|†}„|Šv‹|{w‚‚~‚|ƒ~…}ˆ„ƒˆ†z‰„†‚ƒz‘w~Švˆ|wt|„zy{r„wt}|vspx}ryt~r}}t„|y€‚z……|ƒƒ…|‹y†€…€~„|…}…~€‡‚‚Œ†‡~†‹z…‰„„x‰ƒu‡‚y}Šs}€ƒo†~wx€~lŠqqŠny|zvyw€q€zv‹|z„Šw~Œ}x}zŠ€‡}‚…~€‚€‚ˆrŠˆxŒ‚€„‹~ƒ‚Š}}“v‚v‹z„ƒx†yƒ~z„z~€y~xtxr|xt€ut‚szx|~z|€€€ƒ„z‰‚~†„‚‚„|†‚~‚…}…{†}„‰|’t‡ˆyŒ}‰€„}‹zƒ‚€|†{€t‚„m‚€t}|yy|zvx€ijƒxz{~€w‚„x††z……}„ƒ…}…„€€ƒ†xˆv„€€ƒ‚€‡xŒxŽ…x‹„„‚„xŒ~vv„z|~t€~t€}ut|{r~t|vxyzyyx~|z†|~‡wŒ~€ˆ|€ˆ~„~‡|ƒ„|€€„y…†vˆˆu‰„{ˆ€…|ˆ‡|„‚„{‚ˆvƒ‚y…w†y|ƒu„u}yzzvp}|ptuƒpxv{ƒv€†oŽ~{t‡‚„~†‚ˆ€~…~‚…|‚‰y„…‰{Œ{~‡‡}‚€…x…~{€~z€€v„w{}wztw‚r€€r}€{|†ƒ|ŒxŠ}‚‡x€Šr„†w~~€}w}‚k‘wyuv‹zІw‘†s m’‹rŠpˆn‹‹hŽx€u|ww{‚cŽqj†spxj†zgŒsw~zz€|‰ƒp–xj˜{€ƒ}}€‚‚Š|x‡pŠŠ{x˜h’‚q’|z…‡{„~‹p–€oˆƒx‰s‰v}€|z~y€jŠ{k€†nwƒ|l‰tz‚v‚y‰q†‹pˆp‹‡~ˆ…yˆ‰}}”u€–p‚‹~|Ž~yŒ‚yŒ‡nކt†‹x‚„‡u{zˆ}€yiˆ†n†}z~zz~znƒ€n€zq||p{nz’t{”tz”y|ˆˆ|„Š|‡‰„}…‡ƒ{Ž}‚‚…€„{…‡v~‹}vˆ„||ˆzƒ€wŠuŠw{‘o|“rw‹s~|x„xx€xt{s{}{s…v€{~€|€…qx†{…ƒv”zˆ‰‚€†ƒ†ƒ†„†‚‹y€‚„{~Š|‚yŽv…‹s‚ˆ€w†€~{‡|„|w‰|{z„~qŒyq‹{rƒ}tƒjˆzzz{‚w|ƒx„w~†x{†xƒˆn†l“…rŒ„~Œ|Š‚ˆ|„ˆ…x‰y€’xz†nˆŠ|s„lŒ†m‚’e€Žk„p…}xvˆvz{‡o€q„€n€ƒtu†o‚ˆjŽx{‡xƒ{„†y‚ˆ|€ˆƒw‹Šv‹ƒ„€€–lŠ’u}’u††}†|r†Št€‹vƒ‚}|‚~w€€wz‹ruŽvm…†j~ˆm‡xq‚„l}}}{y}t€}~~y‰|{ƒ~ƒ†t„ˆ~„‹€‚~І€|‡Š€‚‚€…~‰v„…‚~z‰|‚‚†z€ƒt|‰zv„x}ƒp|~z|yx€}yrn€ƒtu~y‰m}„||‚z†yƒ†|~†‚}†ƒ‚‚ƒˆˆwŒ…ˆvŠŒ{ƒ‚…‚x‰|„€„{€ƒx†ƒs…‡m†€zz€‚rˆxs€~xz‚urˆxm€rwu|ƒy{~v„vŠv{Œ€yƒ†{Іz‡Ž}‚€‰‚ˆ‡|‹ƒzƒŒw„…€€‰{‰~y€ˆ|„x„‚y|„zv~‚w„p{xz|zy}|{v€z|t€†r}x|}}ƒxzt{„‡z…ˆ„wŠ€„ƒŠˆy†€ƒ„~}Œ†yˆˆ{|††{}ˆ~~‚x…€z|~ˆ~t|…{o‡{{|x„yw~~v}xz„wy}{t€z|}~z}{…|xƒˆ|ƒ„„ƒ‚‹†€…ƒ……ˆˆˆ{‚ƒ€„†~€†ˆ}‚†~{†|~ƒ~€„x}vy…‚x~~xw|~xx~|xxyvvz‚}|{}{}‚€„„}‡~†††‚„‡€…†ƒƒ††ƒ€ƒ‚‚†~}ƒ‚€‚}…}~‚~|~{‚z{y|z~€w}}yy}xx||yz~zx}„ƒy}‚€~~„„~€ƒ…‚…ƒ„ƒ„†ˆ„„…„†ƒƒ‚‚†ƒ€ƒ…„ƒ„~}€‚€~~~}|€|||~€€x||yz~}{|{|}x|}|}|{~‚{y|~€ƒ~}‚…„€††„„ƒ„‚„ˆˆ„„†‚†‚„‡†‚ƒƒ‚‚€~€„~‚{‚}}}|~€|{}}{}{|{z~{|}|}z{~}|~}~€€€~ƒƒ‚‚„„„„…ƒƒ„…„…††ƒ‚ƒ…ƒ‚ƒ…‚‚€ƒƒ‚~~€€~~}€~z|}|~€~|~|€z}~|y|~}z{}{{{€}|~€€‚‚‚ƒƒ‚„ƒ‚ƒ…††…†„„„ƒ†„‚„„‚‚€€€~}}~~}}}}~{|{z}}{~{||||~}~~}|{}}}~}}~~|~€}}€€~€ƒ‚€€€ƒƒƒ€€ƒ‚ƒ‚‚‚€‚~€€€|}€~~~}||~}}|}}|{|{{|~~|z{}{z~~~|z}~|}~~~}}€€~‚~€‚‚‚€€€€„‚€€€€€~€€}}}~~}~~|z||}}||||{|{{|~~|}|{|}‚}€~}~€€~€~€€€~~~€€€€~}}~}~}~}~~|~€}{}}}||}~|zz||||||{zy{}{z|}|{{{{|}~||}~~€€‚‚ƒƒƒ„…„„„„…„„……†…ƒ‚„„…„ƒ‚‚‚€€‚€~~~~}{zz{zzxwwvuuuvurqrrstrrrqqsttrrtwxwxyyz{‚ƒ†ˆŠ‹Œ‹ŒŽ‘’’‘‘ŽŽŽŒ‹‰ˆˆˆ‡†„ƒ€€~|||||zzzyyxwuuustspnllljhjiffehijjjklprsvvy~‚…ˆŠŒŽ”–——–™™š›šš™˜–•”““ŽŽŒ‹ˆ†…„„ƒ‚€~}~~~~}~€€€‚‚€~€~}|{xutqpomjgdbaabecaa_cfimpqsvw{†‰Œ‘”–šœžžžžœšœœš›š—”ŒŠˆ…‚€€~~}z{z{|}~~€€‚„ƒ‚‚~}€€~}zwtrrnnkfbcbbdb^^^bffjhinqvz~€…ŠŽ‘•˜•˜œž  Ÿœ››˜•’ˆˆƒ„€~}||z||||{{€€‚‚„„‡ƒ‡†„„ƒ„‚€~}yvvrnnkfca\_`c`[X\[chjmjiks}‚††ƒŠŒ‘›œœ›œŸ¡¡ ¡œœœ›˜’”Ž’Œ†‡€|€~{zuvy||{||y|„€ˆƒƒ‡‡‡‡ˆˆ†ƒˆ‚€€}xyvroijfaa_\\`]XX[_`cffioosy€‚„ˆ‹Ž”–˜›œ¡ ž¡Ÿž¢ž›Ÿ–—“ޒމ„ƒ}€}}z|wuwuwzzxz{|€~‚‚‡…ˆŠˆ‰ŒŠ‹Œ‹ˆ†„‚‚|xwqplgfe^]XX[\]YWX[\edikkptx†Œ‰•˜—œž¢¢  žœœœ™•’Œ‹ˆˆ„€|x|vzyuttrvwxzy{€|‚…‚‡ˆŠ‹ŽŒŒ‹ŒŽ‹Œˆ†ƒ€€{|wtnhhebb^WXWV\XZWY```fkmqst‚‰Š‰’’–œ›ž  ¡Ÿ¡¢¡œ˜˜˜““ˆ‹ˆ…„||zvwytxttuvx||{€‚‚‰†‹ŠŒŠ†„ƒ€~|vtnljdfa_XYXX_\\WW_`dikmpqv}€‰ˆŠŽ—š™œžž¡ Ÿž œšš™—•‘‰ŠŠ„„yz{yx|uxwv{~}~€ƒƒˆ†ŒŽŽŽ‘‘Œ‹‚Š‚‚|wurmijfcb\ZV]\\^[Y]]edkplrpx‚ЇБ–™˜Ÿ œŸŸ žžœ™™—‘“މЅ„„|€}y|x|yzz~~€‚ƒƒ‡ˆ‹ŽŽŽ“”’ŒŽŒŠˆ…‚~|xrrnkjfeb[]ZZ\^^]Y^[ahhnnmur|„‡‹ŠŒ™›  žœ ž¡¢ž™™•–”‘‘Œ‰ˆ†„€ƒ}~~|~z~|€€ƒ‚„…ˆˆŒŒŽŽ‘’’‘ŒŒˆˆ†€€~zxurlnidfb]\^X\]`Y`[]`hlkrnpzzƒ‰‹‹”–ž  ž¡žž£¥   ™—›–”–Œˆˆ†„ƒ‚~}~y~~z€~€‚„†‰ˆˆ‰ŒŒ”Ž‹ŽŒŒˆƒ„~zwsqljlgfb^^\[a^b``^`djnpqrux{„‰ŒŽ‘–› Ÿ¡ŸŸ¢¢¡ ™˜”–•–Ž„††‚†||{{~}}|~€ƒ„ƒ‡‰„‹ŒŠŽŽŽŽŽŒŒŽ‡‹‰…€~}{ytrpkmlhhebbbbacbcegifinmtvxz|~‚†ŒŒ’‘Ž”–—žœšš™š™ž›–™‘ŽŒŠ†‚ƒ‚€‚€|}z{|{~|}|~‚‚ƒ„…†‡ŠˆˆŠŠˆ‰ˆ‰††‡ƒ‚€||zwvtspnoojmlhlkilllnlnnrrvtuux}|~€ƒ‚††ŠŠ‰Ž’’Ž‘‰ŠˆˆŠˆˆƒƒ‚|‚€~x~}~€~€€ƒƒ„„ƒƒ‚„…‚„„ƒ€~€‚|||{xyyyyuwuuvwvvvutxvxxwwyvwzx{{xz{{}|}€}~€„€„‚„…‚„ˆƒ‡ˆ„††††ˆ…‡‡†€ˆ‚‚ˆ€‚„~‚ƒ‚}ƒ€|†zƒ{‚€z€z‚x€|~}~~||~€xƒ|z€||€~z}z‚||~~~}|~z‚{}xƒ|}}€||€}~}~€}|‚z€€}|„x‚~z‚}}€}~}€~{„~z€€~‚}‚~€€€|„€|‚‚}‚€|ƒ~~~‚|€‚{€‚z€~}€|}}ƒ|~„{€ƒ~‚€„‚|„‚~‚ƒ‚~„‚€€€~„z{€~~~~~~~{€{~|€|ƒ{~„}„}~„~‚€€~€~€~}}~~~~}€|~~|€€~‚~€~ƒ„€†~‚‡…‚‚„€‚€‚€‚~€€€~‚~€€€€|„~€‚€~…€‚‚€€€€€€‚~€€~~~|‚|~{€~|€~€~€~~‚€}„~„€~‚€‚‚|ƒ€€€€~€~~~€~€‚{ƒ{„|ƒ€€ƒ€ƒ‚€‚‚ƒƒ€…„|‚‚|‚€z‚€zƒx~y~z}||€|}~€{~{€{€||€~z€y‚|||~|~|~{}~||~}z~z~~}}‚x€‚|~ƒ|€€ƒ}‚ƒ~€ƒ~€€€€~€€}~‚||‚|z€€z~z€|{€z~~~}}~}{~}}}|€||~}}}~z}~{||{~{{z||zy||{zz{{|z}y||||z~}|}~~|~~|~‚~~€~|€~€~}€|€|}~}z~}}~}|~}~}~~}~~}~~~~z}~z~{}|}|z~|{||{|z||||z}|y}~x~}{|}}z|z}}|}~|{€}z~|}€}~€~~~}€}‚}~‚}€~}€}€}~~€~~|€~|~€{~~}}|}}{}~}|~}{~}{|~|{|~{~|z|}{||}|||||{}||z}~z||||||}~{|z|~}|~|€~~~~€€|~~‚}}€|€€}~€}~€~~~|~|}~€~{}}z€}}}|||}}|}|}||}|{}||||{|{|}|{z|~{|||||||~}|}|}}~~~{~€~}~~~~€€~€€~€~€€€~~~€~~}~~}~~}~~}}~~~~~~~~~~~~~}~}}~~~}|}~||}}}}|}}|}}}~~~~}}~~~~~~~€~€€€€€€€€€€€€€€€~€~€€€~~~~~~~~~~~~~~~~~~~~~€~~€€~~€€€€€€€€€€‚€€€‚‚‚€‚‚€‚€€€€€€€€€~~~~~~~~~~~~~~~~~~€€€€€€~~~€€€€€€€€€€‚€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~}}~~~~~~~~~~€€€€€~‚€€€€€‚€€€€€€€€€~~~~~~~~~~~~~~~~~~}}~~~~~~}}}}~}~}}}}}}}~~}|}}}}}~~~~}}~~~~~~~€€€€€€€€€€€€€€€€~~~~~~~~~~}}}}}}}}}}}|||||}|||||||}}}||}}}}}}}}}}~~~~~~~~~€€€€€€€€€€€€€€€€€€€€€€€€~~~~~}}}|}|||||}|||||}||||…ƒƒ‚„ƒ…~|zzy|z~|„……†‡ˆˆˆ‡‡††„„ƒƒƒ„ƒƒ……†††††††…„„‚‚€€€~}~~~~~~€~~~~}}|€ƒƒ„…†…ƒ€€|{vuqsqrrswz}‚…ˆ‰ŠŠŒ‹Š‰‡‡‡…†„…†††‡ˆ‰ŠŽˆ’ޒЉ„„}zxyvywzy}}€€‚‚ƒƒ‚‚€~~~}}~~€€~|}zyxyxxxxxwxz||€€‚ƒ„††ŠˆŒˆ‹ˆŠ†ˆ‡‡†…†„„ƒ„„„„ƒƒ‚‚‚‚‚ƒ‚ˆ…Šˆ‹Š‹Šˆ‡„ƒ€~|{zxxy{{}}~~€€~|{zyxxwvwxy{}~ƒ„†††…„„ƒƒƒƒ‚‚‚ƒ„„…†††‡ˆˆ‡†…„„ƒ‚‚€€€‚ƒƒ„„„„ƒƒ‚‚‚€€€€€€€€‚‚‚‚‚‚‚€€~~||{zzyxxyz{{zzz{||}||{{}€€‚ƒ…ˆ‰ŠŠŠŠŠŠŠ‰ˆˆ†††……„„„„…„ƒƒ‚‚ƒƒ‚€€€‚‚ƒ„„„„„„„ƒƒ‚‚€~~~}}}||{zzyyyyyyxxyyyzz{||~ƒ„„…‡‡ˆˆˆˆˆˆˆ††††††††…„„„„ƒ‚‚€€€€~~~~~€€‚ƒ‚‚‚‚‚‚‚€€€‚‚‚‚‚‚ƒƒƒ‚€~|{yxwvuuvxyxyyz{|||||{||}~~~€ƒ„…‡ˆ‰ŠŠŠ‰‰ˆˆ‡‡‡…ƒ‚‚‚‚ƒƒ‚€~|{zzz{{}}€€‚‚ƒƒƒ‚‚ƒƒ„ƒ‚‚€~|{zyxwuttttttttuvvwxy{{}~‚ƒ„†‡ˆ‰‰ŠŠŠŠŠŠˆ‡†…„ƒ€€€€~~}|{{{{zzz{|}}~~€‚‚‚‚ƒ„„„…………„ƒ‚€€~}|zyyxxwvuuuuvvttttuvwyy{z|~€‚‚‚ƒ„†‡ˆˆ‰‰‰ˆ‡††…„„„„ƒ‚‚‚€~}|{{|}}~~~€€€€‚‚‚‚‚‚‚‚‚ƒƒƒƒ„„„ƒ‚€~}||zzyxxwvuuvvwwwwxxy{|||{{|~~€€‚ƒ„…†‡‡‡‡‡‡‡†…„„ƒ‚€€€€€~~~~~~~~~~}~~€€€‚‚‚ƒƒ„„…………††………………„„„ƒƒ€€~||zzyxyyyzyyz{|~~~}}~€‚‚‚ƒ„…†‡ˆˆ‡‡†††…ƒ‚€€~~}}{{yxvvtsrqpppppqstvxz|~€‚„‡ˆ‰Š‹ŽŽ‘ŽŒŠˆ†…‚~}|{{|{{||}~~€€‚ƒ„†††‡ˆ‰ŠŠŠ‰ˆˆˆˆ‰‰‰ˆ‡††††…„„‚‚‚€€€~~}|{{yxwvutrqonmmnoprtvz|„…ˆ‰Š‹ŽŽŽŽŽŽŽŒ‹ˆ†„‚}zwutrsrssstuwy{}~€‚…ˆ‹Ž‘”•–˜™šœš˜–”’ŽŒŠˆ†…„ƒƒ€||||||||}~€‚‚ƒƒƒƒ‚‚‚€~~||zxvtqpmljihijmortwy|~~€‚„„…†‡‰ŠŠ‹ŠŠŠˆ…‚}|zywwyz|}‚‚ƒ„†‡‡‰Š’•šœœœ›šš—”‘Ž‹ˆ†…„ƒƒ‚~}|{zyyyz|}ƒ„†‡‡‡‡††…„„ƒƒ‚‚€~|yvspmjhgggffghjiklnprtxy}€ƒ†ˆŠŠŒŽ‹Š‰ˆ‡†„„‚€~~~}~€‚ƒƒ„…†‡ˆŠŠŒŒ‘‘‘ŽŒŒŠˆ†…„ƒ‚‚€€~~~~~~~€€‚‚‚‚ƒ‚‚€€€~}|||{zxwusrpnlljiiiikjkllnprtxy|~€„„†ˆˆŠŠ‰ŠŠŠ‰‰††…„ƒ€~~||||}}~~€‚‚ƒƒ…‡‰‹ŒŽŽ‹Š‰ˆ‡††„ƒ‚‚€€~}}}}~~€€€€€€€€€€€€€€€~~}|zyxwvusrqpoommkllmmlmmnpsvyyz|„„……………††……ƒ‚€€€~|{{{|||}~€‚ƒƒƒƒ„†ˆŠ‹ŒŒŽŽŽŽŒ‹Šˆˆ‡††…„‚€~}|||}~~€€€€€€€€€€€€~~|{{zzyxvvvvtsqqppnnnnonnnoonnqrvyz||~€‚€‚ƒƒ„„„‚‚€~}}}||}€‚€€€‚ƒ„…ˆ‰‹‹Š‹Š‹Œ‹‹ŠŠŠ‰Šˆ‡†„ƒ€€€€€€€€~~~~~~€€€€~~}|{|{{|{zzyxwutrrqrrpqqqppppooopprvwzzz{|}~€‚„…†‡‡‡…„ƒ‚‚‚ƒƒ‚€€~€€‚ƒ„„„„„„„††ŠŠŒŒŽŽŽŽŒ‹ŠŠ‰ˆˆ‡‡„ƒ€€~~}}~~~~~}~€€€€€~}}|||||{{zxwvvusrrsrsrqqqqqpppprtuxz|}|||~€ƒ„…†‡ˆ‰ˆ‡†…ƒ‚‚‚ƒƒƒ‚€~~}~~‚ƒ„„„„„„ƒ„ˆ‰ŒŽŽŒŠŠŠ‰Š‰ˆ‡„‚€~}}}}}}~~~}||||}}~€€€€€€€€€€~{zywvtstttssrqqppqprrttttuvxz{||}~‚„„„„……‡†‡†…„ƒƒƒƒƒ€€€€€€€€‚‚‚ƒƒƒ„„„…„††ˆŠŠŒŒŒŒŒ‹Š‰ˆˆˆˆ‡…„‚€~~}~}}}~~}}}}~}}~~€€€€~}|{{zyxvvtssrrsqrsttutttssttvwxz|~~~~€€‚„…†…††„„ƒ‚‚‚‚ƒ‚€€~€~€€€‚‚‚‚‚‚‚‚‚ƒ„…†‡‰ŠŠ‰ŠŠŠ‹‹ŠŠ‰ˆˆ†…ƒ‚€€~~~~~}|||||||}~~~~~~~~}|||{zzyyyxvuttttsrrrrrssttsstvyy{||~€€ƒƒ……†††…„‚‚€€€€€~~~~~€€‚‚‚‚‚‚ƒ„„…††‡ˆ‰‰ˆ‰‰‰ŠŠˆ‰ˆˆ†„ƒ€€~~~~}|{z|||}~~~~€€€~~|||{zyxxwvurrrrrqrrrssrrsttvwz|}}}|~~‚„†„„ƒ‚ƒ€€~~}~~~€‚‚€‚‚ƒ„„„„………„…†‡ˆˆŠŠŠ‰‡‡††…„„ƒƒ€~}}}}~}}~~~~~€€€~~}||}}}}||{zyyzzyzyyywvvtsssttttssrrstvyz||~~€€„„†…………„ƒ€€€€€€~}}~~€€‚‚‚ƒƒ‚‚‚ƒ„…†…………††ˆ‡ˆ‰‰Š‰ˆˆ††………„ƒ‚€~~~}~~~€€€€€€€€~~~}}|}}||z{zz{zzxxxwvuutuvttututtsttvwyy{yzz}}‚„…„„ƒƒƒƒƒ„„ƒ‚€€€€€€€€€€€‚‚‚‚‚ƒ‚ƒƒ„†‡‡ˆˆŠŠŠ‰ˆˆ‡††††…„ƒ‚€~~~~~~~}}}}~~~~~~~~~~~~~~~~}|{{{zzyxwvuuttttsttuutttutvtvxyzyyyzz{|~€€‚ƒ‚‚‚„„…„„„ƒ‚€€€€€€€€€€€~€€€‚‚‚‚‚‚‚ƒ„†‡ˆˆ‰‰‰ˆˆˆˆˆˆ‡†…„‚€~}}|||||{{|||}~~~~}~~~~~~}{zzz{zzzzywvtsttttsssrrrststuwyyxyz|}}}~€€‚‚‚‚ƒƒ‚€€€€€€~€€€€€‚‚‚‚‚ƒ„„„„………†††††…………„ƒ€€~}}||{{zzzz{{|||||||||||||||{{zzzyyyyyxxwwvvvvvvtutttstttttttuvwwwwxyzz{||~~€€€€‚ƒƒ‚‚‚‚‚€€€€~~~~~~~~~~~~€€€‚‚‚‚‚‚ƒƒƒƒƒƒ„…„„ƒƒ‚€€}||{{z{zzz{{{{{{zzz{zzzzzz{{{{{{||||||||{{zzyxxxxxwvvvvuuvvvwwwwwwxxyz{}~€€‚‚‚‚‚‚‚‚€€€‚‚‚‚‚‚‚€€€€~~~~~}~~~€€‚‚„„…„†…†…†……„ƒ‚€€€€€€~~~~}}||{{zzzzzzzz{{{||||||||||{{zzyyxxxxxxxxxxxwxxxwxwxwwwxxxyzz{|}~€€‚‚‚ƒƒƒ„„…„…„…„…„„„‚‚€€~~€€‚‚‚‚‚ƒƒƒƒ„„„„„„„„„„„ƒƒ‚‚€€~~~~~~}}}}}||||||||}}}}|}}}}}|||{{{zzzyyxxxxxxxxxxxyzzz{{{||}~~€‚ƒƒ„„………†††††…………„„„„„„„ƒ„ƒƒƒƒ‚‚‚‚‚ƒƒ„„……………„ƒƒ…‡†„ƒ„„„ƒ‚‚„……ƒ‚‚‚‚€€€€~~~~}}}~~~}~~}}}}}||||||||{||{{{|||||||||||}}~~€€€‚‚ƒƒ„„……††††††‡‡‡‡‡††‡†††††††…„„„„ƒƒ‚ƒƒƒƒƒƒ„„„…………†††††††††††‡‡‡‡‡‡‡†††………„„„ƒ‚‚‚€€€€€€€€€~~~~~~~}}}|||||||}}~~~~~~~~~€€‚‚ƒ„…††‡‡ˆˆˆˆˆˆˆˆˆ‡‡‡†††††††††††††………„„„„„„„„„„……†††‡†‡‡‡‡††††††‡††††…………………„„„„„ƒƒƒƒ‚‚‚‚‚€€€€€~~~~~}}}}}}}}}}}}}}}~~~~€€€‚‚ƒ„„…††††‡‡‡‡ˆˆˆˆˆˆˆˆˆˆ‡‡‡‡†††††………„„„„„„„„ƒƒƒƒƒ„„„„……………††††††††††††††††††††………„„„„ƒƒƒ‚‚‚€€€€€€€€€€€€€€€~~~~}}}}}}}}}}~~~~~~~~€€€‚‚ƒ„„„…†††‡‡ˆˆˆˆˆˆˆˆˆˆˆˆˆ‡‡‡‡‡‡‡‡†††………„„„„„„„„„„„„„„„„…………………………………„„„„ƒƒƒƒƒƒ‚‚‚‚€€~~~}}}}~}~~€€€€€€€€€€€€€€€€€~~~~~}}}}}}}~~€€‚‚ƒƒ„„…††‡‡ˆˆˆˆˆˆˆˆˆ‡‡‡†††………„„„„ƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚€€€€€€‚‚ƒƒƒ„„„„„„„„„„„„„ƒƒ‚‚€€~~}}||||||||}}|}}~~~~€€€€€€€€~€€€€€‚‚‚ƒƒ„„„………†………………„„„„ƒƒ‚‚‚€€~}}||||{|}}~~€‚‚‚ƒ„„„„……††††††……„ƒ‚‚€€~~€~€€€‚‚‚‚‚‚€~~}}||||{{{{zzzzzzz{||}~~€‚‚‚‚‚ƒƒƒƒ„„„„„ƒƒ‚‚€€€€€€€€€‚‚‚ƒƒ„„„„………„„„„ƒƒ‚‚‚‚€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚‚€€~~}}|||{{{{{zzzzzzz{{{{||||||}|}}~~~~€€€€~~~~~~~~~€€‚‚‚ƒƒ„„„„„„„„„„ƒƒƒ‚‚‚‚€€€€€€€€‚‚ƒƒƒƒƒƒƒ‚‚€€€~~~}}||||||{{{{{{{{{{{{{{{{{{{{||||||{{{{{zz{zzzzz{{{{|||}|}~~€€‚‚ƒƒ„„„„„„„„„„„ƒƒ‚‚‚‚‚€€€€€€€€€€€€€€€€€‚‚‚‚‚‚‚‚€€€~~~}}||||||||||||||||{{{{{zzzzz{{{{zzzzzzyyyxxxxxxwxxxxxxyyyzzzz{||~~€€€€‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€€€€€€~~~~}}||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzzzzyyxxxxxxxxxxxxxxxxxxyzz{||||}}~~€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~~~}}}}}||{{{{{{{{{||||{{{{{|||||||||{{{{{{{{{{zzzzzzyyzyzzzzyyyyyyyzzz|||}}||~~~€€€€€€~~~~~~~~~~~~~~~~~~~}~€€€€€~~~~}|||{{{{{{{|{{{{{{{{||||||||||||||||{zzzzzyyzzzzzzzzzzzzzz{{{z{{|||}|}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~€€€€€€€€~~~~~}}}}}}}}„†€~€}}~}|||{z{{{z{zz{zy{yz{xz|zy}{w}|{~}z|€{{~~z~}}}€€~{~‚|}ƒ~}„~|ƒ~yƒ~}|€}|€w‚y~€}z~ƒ}|‚}~€‚€~†~‚‚€‚€~~}€}|zzƒ}y{|||~||}{}}{|ƒy~€x~x‚{x‚~tƒ€r~ƒys‚q|‚t{||y|||y}|}z|}}~€}€€}~†~}„z…€y€„}v…‚x€‚x‚}~|‚€x…‚zy‹|wŠ~vˆƒ|†‚|„~†{†x‚}}|€€x~zy‚~v‚w€|€z~z~~€}|ƒ|}‚y}z€|||~|{{€wy{v~~x}||~w€|yƒz{…{|‚~}€}‚~ƒ~‚~€€€z€„{€€|„}{‚ƒ~|‚ƒ}|„€‚~…}€†~ƒ‚€†‚€‚ƒ~ƒ}„|†€z…~€|‚~}€„||‡{~…z‚€{†~{†~{‚}}„}|€|€€|~„wƒ€w€||€{€x‚~wƒ}zƒ‚zƒ„|„ƒ|‚‚‚†zˆ‡|€Œ|}Œz€ˆzƒˆx„„}‚„€…‚ƒ€‚ƒƒ€‚„€ˆ~‚†„Š|ƒŒ~ƒˆƒŠ‚†‡…y‰…z…„|‡€~„…€‚„€†~€‡„|……|†€~‡~‚‚‚„z†‚}€‚„€{†„x†{}ƒ‚|‚~€~‚z‡|„‚€…‚„…€‚…‡€‚Š}†Š€†Š€†„€‰€†„€ƒ…ƒ€‡€‡†ˆƒ€†…€…‡€†‹†€…‡…†„‰‚‡„ƒ‚†ƒ„‚ƒ€‡‚‚‰~†~€Š€€‚…ƒ‚†{„Œz„‡‚ˆ}ƒ…€‚‚€†{†~€ƒ~~…€}ƒ~‚‚}…}‚‡|†|‰}Šƒ|Š‚ˆŒ‰„ˆŒ†„ŠŠ€‡„„„‚†€‚ƒƒ~ƒ‚~‚„€†€}‰‚{‡‡~†„І„ƒŠ‡ƒ‡††‰‚†‰ƒ†ƒ‹{……€€„ƒzˆ‚z†ˆ~|†ˆ~Š€}„ƒ~„‚ƒ„ƒ}Šy€ˆ€}ˆ|~ˆ||€ƒ‚z†}xŠ}x†|„~„‚€‚€†€‚…„~‡€„ƒ|~}Š~†„{…Šw„Š|€‡€„‚~„„€†‚€ˆ€‚…‡{‹}‡ˆzˆ‚ƒƒƒ†‡†zˆ‚‚„‚}„~ˆ|‡z‚€ƒz„†|}†}‰|‚~~ˆ||‡~|€…sƒ…zxŠ~u€ty‚‚|y‚y€}|€~€~€€‚~€„{‚‡|~„‚~‚‚‚~ƒ€€~†„{~…‚~‚…~~…~€„v†ƒ||…‚‚~~|Œ|~~Š‚y†ƒy†‚‚}…€ƒz‚„x†z‚‚w„}}ƒ‚v‡|tˆ„s…~{€‚||‚{|ƒzƒ~|~…{{ƒ~y‚~u…€|w„~vƒ€x€|{}‚}|y‚}z~ƒ{€„wˆ|zŠxwŠ„t‰~q€u‰}~€ƒ{‚~„}€…x€‰p††lˆƒv…~}~…x„wƒ…y~‡x„…w„‚}|„~|~‚~~€z~‚{ƒz{‚|~z|‡{v‚„|p|u‚~u‡t†{}‚~w‚n‰~oŠvy†n…~rˆz{z‚€t~‚y~||€v€…qŒ}t„†q†}{…vˆxx†ƒoŠr†€{~}Šs|Œt~ƒ~~xˆzs}t‡u‚‰|x†zyxw‹zz}Šv~€}x†~|~‚|y†{}~€|vŠ|w~„v‚‚w}ˆnˆv‚}~}y„v|‚r‚‡n~‚s„x{|€|xx}~y€x‚„u~‚~z€z~‹yxˆ€zƒy‡„s|{u†€|}€‡x‚}~ˆ||€‚{x‰y€|ƒvŠ{|†}…€yŠy~„}‚~‚€{ƒ‚{€ƒ{Šx{†}{†z~zˆx€„w„‚~v„ƒw„€t‰v…z~~€z~„t‰vz‡y|t‰z|‚~z‡w~|‡u|‡„n…ˆt€€‚~|…~†v‡~†z}Œ€w…ƒƒwŠ|„{‚ƒ€~‚yˆ}}‚~€†rpŽ€t‡‚|„ˆw€Š|}†‰nŒo€q‚‰z~‚†v‚Žw€~Œq‚‚z‚~|‚{|Šr††tx”s~‚y„€x€…z€{€‚|}€t‡~z‚yƒx„z~„z~|~€{…zˆpŽƒl‘…o‹~€†z~†{†z}ˆ~z|…~z…€€{~€‚v„zˆ||y‰€uƒ‡pƒtz…„}v†€|„|~„|~~x†‚s…†u‚~|x†€sƒƒs‚‚xzz~€}~{|}~~u‚~zs†l„€v|€~w…yv†~m‰€s€„xz‚{{y„~z€~|~‚z€~€}w‹|w†~|xŠzu‡~y€~y}ˆt‚‚vƒvyˆ}oŒ|w€~w‚}{|„v€„|wƒ}|}~|€‚z{‡rˆ€w~Šwv†vzˆuuŽsu„{vx„p„n‹{r‚~w|‚zxƒvzwy†yx}‚wv†{t‚t„xyƒt„{v€‚ty†u{‰s€„s€‡tzŠ}v„€z€‚r†qŒs€†zw†‚q„y|€}z~y‚|z€~}y…||y‡z}}}…p‡y{…€u~‰pƒ€zz„z}y€}{‚uƒ‚n„†q}{|‚xy‚€v‚{z€yuz†vx‚|{{}z~}|w‚w~€t€~xƒ|x|ƒ{zz~x}ˆpˆs|†{vˆ{|‚~~|€‚tˆ~v†{|~‚|w„€v‚|€y€}{ƒx€|~tˆ|x}…x|„w„~w„{~~x‡x}ƒy}x~Šn‡t€xy€ƒt~†t‚}z{}||v|~v„{{‚v~ƒu{ƒ~t…v‚‚o…}z~|z{€}t†t€‚v€†s€zz…zzˆ||€‚~|‚‚y‚‡s‚†tˆƒq„Œq}‰y{…{x€†y€w‰v‚{~‚~{‚ƒv‚…zw‰~}}~|‚t‚Šn|ŽsxŠ€sƒr}„€€~ƒ„~€€„~~ƒ€„€}‚„~~~ƒ}‚ƒy„~~‚€~€„|„z€‡€z‚ƒ~€‚€‚|„„}|…€|~„€}~„|€„€|€~‚|‚}‚{€‚~€~€„~{€€~‚|‚€|‚€{€‚|‚|€€~~‚}€€€~~€~€{‚}}‚~{€~~}€€~~€~}|€€~€~~~}~~~~~|~~|€€~|€|€~|~~|}}~~~~~}€|~|~~~|~€vtwm-5.4.7/contrib/vtwmrc/sounds/highhat.wav0100664000015300001300000007171610237645271017766 0ustar callumfidRIFFÆsWAVEfmt D¬ˆXdata¢s»þŸý5ü¤úñø?÷xõÊóòxðîîlíìÐê½é¡èÞçþæ‹æååÿåeææ%æ6çïcö/VðÓ#ö¨ç*G£9aŠE\×DÏÓ¨ ˜%×þT+ª2Ë[*ljsEI& 2þ9)Kí-RÕ¤ N8L8Š&@dO0ð1ö 5ÍBDG¬K!ÿ Œ6¡D$«!±$M7üÞ² I/ÏDh1´nï+’;®,CûýYHW%ïÍ4à';NóÒö@6NYð‘éôl+« uÌ)>ÚõöíÚ$ç༕ 2ö˜ÖŽþßÛïëѧå6ù¨ÝÌåhºÇžçÊ~½b³É°Öïjÿ¶•ޤçΣÝÈÇáéHð'¹ª"¬Ú³˜ dùÈÛÂçÜ3ü-³è°UÎ ×à-ÕètîT’ÛËäÞÖëZëEî&Ñ—ã³êªä…Áçù ¶:ܾèFïcÛÖÉÍê:þÛñôê÷ù'ýÆŒÚÕ Àhþã#J3+:% ÷Æâqán"ª%i#›õLîSüD«Xñ‘ûN £ aûç(Ž4+÷E +ƒóeæË/(¥,rL"©·"ô#¡Í&×oÐ-UÏ# „ÝŒâæj1/(8ï+å>áçîì/÷ôØê2ÿ‚ÝQÖTì0 …óºú-5  bÐ.ßmê`ª?ÂÊý(Pî1±ç¿ì¢óßÐv³}éI&r› ë$ÇÆž‚¶·Iº„ï®âgò)×€èÿ둼Ñ˺úÀ?Òeû4ýˆÕÉqñôèèÛuóšöÚ·Ð@õåà¤Ê E>"¸±æÖ·C3Ñ"Òû3Ï Wþ üe@› ³lô“4ä%0néV ;øáŒö8J:H û5ß´›hsí2h/·iÉ Úàgûètþá*2 HÐÚYþ×þ.æMö gâ ¤øfºÕþu ±l]¥>/ÓFÔmç˜íŒð‚ø¦ñÿ jñ*ª „×ÇóÊWþ— êýAàí¿"ɇõR(í¨ÔSç4à²Óèýà$‡õo±2Û†9J'[ à9ÔÅéÚÕýñë#-þˆëšÅÍÇžåàb* ÔœÒÃø %Âú֔䲿Ç7íœë¤óÒöúªý‡:éôá&ãVö8â¶Þ§ ƒ8ŸÌ -û¶Þ'53+È UÒ©éµ.eïÏæ}SRúÂä^  çõÉ #’üÓ„ EX·±èÃ’êD_? ¥©Î÷€¥'$U·,Ç-Yõ®ûg†ôÃñŠeô¿ù|þ Û6×Ó¢üêô—å~ÑÞå_ü +.$_"…eâ•îPþ¿þ×ÀßÎߤ(ð÷í±®ûp ¤ìî·W÷H'¥ ¿üäãïórrøÉæ§âŒê.†E#2%CýîžÎhÜÙ¯á\ù%ž÷H{7áMä.乿ËdÎý 1jÔô>êjÝ;cèèˆû< Á$» ³ÿ¤Á 4RÄMúyÛ6ôy·ä^1ŽçWÓ]á2ÿàÞ€ ^1ã÷…$ÿ°òhá"ç-[/k ½#vÀߢìŸÉõÿÑv*š*äæÖÔô©B uÝïÝâèt*& ò ë¦ÖÜ€$' ‹ õ7| öã+!Ù$‚‚ò:Ü— DÈùý @»\íºó‚äÜçÆÕØäÛ! Õ:Ø!äÚé0ØŽÈüeà½{ ü’ï¬Àêëå¼úäÝö;åëä nò¾ñl lKJøÄúÂRñ® .Ûôúúñ,=ý¬9á'¡Ë§ÜÎÖÔØ&*e't€ý&&+ûðÀÝÿá\Àöèèx ‡"Wь%!2 -aËà˜â7ÿöŒŒŠ÷|è ¹m!G9ýÍí­ %måKøŸ Ï!ˆ é9ý?A\à”ß™tðÞAä"ÄîÀ ô#ürä¼)ï°ÛùîWû°#ÅL<ñùûþ8àãÛ¸(¬ôÍ9ßTüï〠ßñï*õu$~-gûžâÒÛjó¹±+âq(QëóÔ1ó¡Ds5ï›ê:#ø|Óq“V Bíëþ'늖"›þóJûnÆ÷Ÿø‘8Ïî9ôÙõ‘E$ð óûúÝÖ¾;_ÿP "é1ç¤ÏÞ箺-üšÛ™ú?<_Ýïþ" á‚ÑÈÉɼâóúøž5ø ì-þ¸ ülƒOPúÌaôZÇåÀõ ë(ýÑûÉ.@ê ÚöêŒù–&þÎø®PLë¾ šï$%ú¾ñæ(kû­Ïîò w+ ÿò7-vÓêøVÙöýÜú&î[#K¿* dœâù¼ûlÒè›"Ã[4Ü`6â/ì–s –ÿ.ø†âoê@ìѵð Öé羈þ*åÞ¥%'c%["Ìß߯æÍûÅt,Fï*Ú¤ñªýóa-î’Ý„ëøõû[÷?ò©W›Ÿïë$ ôQÝ·%¢8îJû¿êöD­Aô^eÐDÖ úÿœ>Œ ÒëP{°ý,ágÛ„¶7øëßÂÝþd31aÖþëJ÷ÒýH«Êß·¬ÿ ðXæ<a¢êÐüT‚@ŸëyÐñú6Ööýõ¬…F'1'äê¦ÑXø#°ýé8q4® ¢ØYêH¯ïGõ‹ôiù+n ^'5ÜnäF / Îþ­ÌEÚ×¹¥ Æ÷”ñ8÷ã÷¥wªö9ø þäø_ö>"õì¤o(åð á Ýe.[ Ž!çÞ¦übõ¢ ìµÿ3úµë[&uø3 v×ËôëPóyø?âß~ $¶((ÜøÞv=|Ú¤õ[õ ZøüÉÿëêÛê… w бãï,øûüý÷Z—!³hæ¢!“*ÙŸÄ“„ÿ^ÒöEÌËû;ûfî4Ûª'(|úoú£%æ;|ìëê”è í…þöú­JEÔ Öû7©Ó_ݶóë&ìuí{#Å-Ùlæ!ñ!ϵýŽ]õYõt÷'ívÄ'Îøªÿfà VóNÅâ/‹"yÿßYùP† æÒÛÔýÎø™ ó¬2k‘îÇË®à{ÊhúÂuý'ófóÇ·ÿhÞS” [ìWþu EÑ!ßÕ8Ó6·°ÕÇöcýöñ1¨Ôrät÷½þ^ 7©1AŸèò4kî³Y Pî8â4öÛ WðÃüº½  .âåò¨™Úé¤ã3ó†!K$Òܵ‡;#ü™ÊüûpóDø é£Í –ªñ~{ÿüë þûJÞ¹·öýÓÌßI+w 7øIøAò°áö”æÞÐ ýíê"‹æƒúâ?Ýv÷bþuŸýçGê©çB ¤rð, dç'ôO›+T&•à ×ÙÜößÔÛÅT`Eàþsj Ué*úyëQW,ëºq½Èàá%»!æÒï¥÷u'ÏûLÉÌjD'DøH ÙãcØPì¼÷úöè joÿ2í)#µ"ÌêÔ½àsúƒ÷õ ƒ &˜ •¶áÀöú'¡„ô~á&îâ )#«zîrër`² N®žõƒê½û«!­FöïHö úVøý°ðPÚà ©Ü:)jêý˜íùȱí dîi÷a¨ïSûÊ&Z fØtåä ÝñÝ&}ðÆû ò îéå_ ­ Ìã Ù'÷¾ô- üNPîÀí½û^Þ, #™¾Êù¯@öÔø^ÙìWì4 ëªzåÄ eû"“õ¥Ë½åWõoúÛÿ–ï:Àr [Û¯ê4 é ó^ëøgýgìbdð‡TÏóÖêFôÌ üòõ¨2 >õóôgûòì•òjt Ó•õÞÞö AÒêò>¦+ûÐØôÞ›cßkжõ¸ Þü_ AÂæ5ïß–v|ó5úâHý’x x ã'é}äøüª“³íÑ© ÝíaôB ýœ.Û[úP×ûPü=ïúýRB¡Ûm'ïCõÖ *´óæ"Ìþâñí ò8äæfüh ‘÷£æ>îrç™ÝÅ ’üí¿3 BßðÁ+ò¦õå.Eløyä°Þ}9jÐá|ú6Œ’øÅø¢ ¢ ögò¨ñCýJð³¾%ýáAðzñ¯ü¬é‹“5Ú»å¸êoñ^ù¨d& óUòŒùºìzñ‰½˜ä¸÷[}ý»‰Zý­ú®&Ã"×üûÞèö ;æÓêv÷ìÜkûà eò·ïݤ £ cø þºü ú^ëtð®ùY6„òUù%ÄuñT!8‰qá%Ûhü%»ßýéúÌwÿq&¡ò•ãöÛÿ[,ÿ‡ü<þ‹ô„òÓb÷èemü0ÿbîIáÔí(d8ãû@õ½÷ ÿkþ;8ºóŠûMý5Bú.ôõô(Ø–ëuëྠ<îÚûMäîýLþbü  \öi›þ/ùÓõîj GÃs>î2ë ùÆ»Éû"þ•Ö^Ûïu Z øî×øæ™—ÉÿŽèˆôhø•îˆ÷ÿ¬ÿÏ Àa=zü.ñ£ýÒàúÇ š•õKùiù8÷ÿ­úäóû¿äü«ìÊÝøÿ¡æŠûŸö Ró‰ö§)Œømçuÿ-v÷ÓùÁ~ï»l"„]ÒôKñöy üû)ë:îo~Q§ë hõT09ø÷!É·ýS#ê6çÏðæÜZÿ¢îäøôÉŸúí'ý|üïçüÿ¸vé<ð=wöZÙÓ7 aÿ]ìiëÛòQù*ñ>õÁ> îþëö±ÿ†LéÕçÚùüÜ,ÿë“ —õ‰ú@ú.Ï ­+ “ $)ôFÖRó¡ïe © Cþçì”ý:&üÞQÿi ¸üié û$ ½N qþóòóïµñœþ¼ÿ5ªœôôÎ at ÙÄðáí¶ó’Å‘ôçîSÒòPûgûøñ8÷p#µ?ùÓî”êÿƸ‘9äMäÇú Hö¿ 5_ óªèOøgæý´ e3 2ídîÄUûHù6ú ¬ïvþ ã óø,ìrð« ßÿÖû<ðÿ>þÒ‰ïõnÿîuíuïQÒM¿÷ó‘ý÷1þ—þÊÖù²é¨ÿyÿü‡óíüh é$êcñúèÒúxê æú# ƒ A÷,üÃþÜòç^ùë> :êôYk¶¤îâüt÷µò2ûÓ#à qóìïÿ©üù•—üÚ÷ñý. QýE‘ùHû·ï$õXzÿ!,ú@ñÑ2ê?üôbî†<SùùìûíÿAû´ül$â+ ý4ûXøÆîa»ÍO zúˆ4ý&þ ÷BýáVÿKöYù’ü…úäÿ%ý¢þFÿ¿÷ó± —ù‡;šûÚôñôÓùJ †óýó:îùþ“õú÷ù%ßF4ûIõÆùñøö »„ý„ÿ)ÿ7ÿõ!¿þ_%\íoîéüÛúéüxþ4ÿ®Fû£û ÇÒÏô®›þûùnÖù‚ò¦úÄ à µ 1ü&ì#ñ^û=5üK´þ 1¯ ùö÷ÂôCû­þ74Nñ…ÃúùkùçþþšcD ·ökð8ûv>1ü±Áúxù­÷ËýÑû´þæÿÙ÷ ëüuö3¶=-ôÀööúxþqø‰Véþùnÿ§¬zúÊùSùq~¦õMôÄý%ú±üñú2ùd’lý\ûýæÏýï< -þp0ø‹úüúÉøCþEþ äC‡ÿ õx÷’²’ ÇøëóBÿfþý–Òý:õGüeÿŽþ2GüâüÆþâþKÿh ¼Xÿ°Âýõöoü¯þKÂýúéü©ü)û¾ýb’æøáÿù ׫ù™ú]þ1è¨þöÁþ¿õÛŒDÿÈüéþÐßý¤þþ£ÿ=û¢þù´ü/þQÿ¨ ÂûãôÍùÛýîþÍÿØÝÿ3Ö¢ü€ú~úúý‡ÿA®™+ùªÿâüÿu€ÿVüfúªøy€ Óù ûÎþœûßý*3þ Ûý'Àÿ‹"ý%ÿŠóýþ×üËûîÉ Ñû"ù·ûÜþ4¾rÅüKJ‡üßhqú°û Þþ¡ÿ3ùwúÊþfTÿןÿÿÀýxO}ý6ýïüý^7®ûÜù©þ³ýúý)˜ÿÿ‡K›þlýà xþÍýÍýªÿ„ýþUþÏBÿþMÿðMýpûBý‹zPüü‚ÿ{µûdúÿWîþ qþ[þþyýóìý„ý­þ‚Vëþñÿ¼Yþaÿ ÿ{EþFÿ;9ýÛýÜþþÿeäÿËýÁþEþE. ó~ü3þuÿ¡ý~õýRþÓþ+wœöþöúïüÞþ×þ±ÿe)ÿ±üLþÿæ ÿÖýRþN|þºü…þWêÿ7ÿ·ý¯þžþÑþïÿ3ü‹ýlpýXÿ7ÑþÿÉÿˆöþMÿ*þþý¹'ýáýÈþTÿÑþ¢þÕþB%ýqþlúYþÝý,øÔýbþ×þgÿMÿ,w*qþÁþ"þyÿpÿÿÛÿ~ÇíÆþƒþ|þZÿUþ&þí9ÿ<þÿü­þÏýWþ¬ÿÿ?·“þÃþÜþÁþ£ÿÚþÜþÿXÿÉÿ”5F;ÿ—þqþÃþlÿ¾ÿ^ÿ´þMÿÿeÿ•þ¬ÿüÿ×þûþ.#ÿRþMÿüÿnÿÿ¬ÚþÕþ‡ÿôþlÿ@ÿåþ”.ÿeÿ þÿÿöþMÿKÿgÿÈñÿkþóÿ£ÿ"þþçþõÿwÿmþ!ÿ@ÿÒÿFÿBÿBÿûþšÿ‚Ëÿ¯þùþ#ÿ_ÿeÿ0Tÿ9ÿòþ¿þéþ%ÿ£ÿ”ÿ.ÿBÿ;ÿ@ÿuÿ2ÿuÿQÿ£ÿüDNþ*þŽþ\ÿ ÿ{ÿuÿ7ÿ~ÿòþFÿcÿ‡ÿÅÿ4ÿÓþjÿ,ÿQÿuÿ ÿ)ÿ‚ÿ9ÿÿ2ÿaÿ{ÿÇÿ~ÿMÿ¡ÿFÿàþwÿyÿXÿ¡ÿMÿ ÿ,ÿÿVÿ’ÿ‚ÿ„ÿÒÿ‰ÿÿÿ ÿÿMÿ€ÿaÿ;ÿÿ–ÿªÿgÿÿ'ÿZÿpÿ_ÿ_ÿTÿšÿaÿcÿeÿ;ÿDÿjÿºÿ\ÿcÿ.ÿVÿÉÿnÿ,ÿXÿQÿ\ÿVÿVÿ˜ÿsÿ¡ÿDÿXÿ%ÿQÿQÿÍÿ¼ÿ'ÿÿþôþMÿ±ÿ’ÿ0ÿZÿwÿcÿaÿXÿZÿ_ÿXÿ_ÿMÿQÿ‚ÿ‡ÿHÿ;ÿQÿVÿuÿ®ÿ¨ÿnÿ=ÿ ÿ0ÿTÿpÿyÿgÿjÿ7ÿDÿlÿ~ÿaÿTÿwÿKÿlÿsÿDÿÿDÿQÿ±ÿÐÿÿ%ÿlÿOÿ%ÿjÿXÿ9ÿ7ÿHÿaÿeÿnÿTÿcÿZÿOÿZÿeÿTÿKÿjÿTÿ~ÿ¦ÿKÿ)ÿÿ%ÿOÿuÿlÿ@ÿBÿOÿ_ÿZÿBÿ=ÿcÿÿBÿ;ÿ=ÿ.ÿ;ÿQÿlÿlÿ=ÿXÿTÿ\ÿKÿXÿpÿ@ÿBÿQÿTÿMÿcÿ=ÿZÿjÿ\ÿDÿ.ÿDÿHÿ@ÿTÿMÿnÿZÿ;ÿFÿVÿ\ÿwÿjÿBÿFÿVÿ_ÿXÿTÿMÿwÿjÿHÿgÿBÿTÿaÿ\ÿ_ÿVÿZÿTÿVÿcÿaÿeÿXÿTÿMÿVÿlÿ{ÿ_ÿHÿXÿ\ÿeÿ\ÿXÿ_ÿZÿlÿZÿXÿ\ÿsÿjÿXÿcÿXÿjÿuÿwÿQÿTÿ_ÿlÿXÿjÿZÿ_ÿlÿuÿnÿnÿVÿcÿ_ÿZÿcÿgÿ_ÿgÿjÿaÿeÿeÿyÿsÿaÿeÿeÿlÿlÿ_ÿwÿpÿ_ÿcÿgÿaÿeÿnÿgÿOÿ\ÿnÿnÿcÿaÿaÿaÿjÿyÿcÿZÿXÿaÿjÿjÿjÿgÿjÿaÿcÿgÿlÿgÿcÿ_ÿjÿ\ÿXÿcÿZÿ_ÿgÿ\ÿ_ÿcÿnÿaÿXÿcÿjÿXÿ_ÿaÿjÿZÿVÿQÿQÿZÿZÿZÿ\ÿaÿXÿQÿeÿaÿ_ÿZÿ\ÿOÿZÿXÿgÿjÿQÿMÿXÿVÿXÿTÿVÿcÿXÿTÿZÿZÿZÿ\ÿXÿaÿZÿaÿXÿ_ÿZÿXÿXÿVÿaÿ\ÿXÿOÿ_ÿZÿTÿ\ÿ\ÿMÿZÿVÿQÿXÿ\ÿQÿVÿ\ÿOÿVÿaÿ\ÿcÿXÿVÿXÿXÿjÿlÿ_ÿaÿ\ÿVÿcÿ\ÿeÿlÿZÿTÿTÿ\ÿ_ÿaÿaÿ_ÿZÿaÿZÿeÿ_ÿ_ÿ_ÿaÿ_ÿ_ÿ\ÿlÿeÿaÿgÿcÿjÿeÿ_ÿcÿlÿgÿeÿgÿwÿgÿjÿlÿlÿcÿuÿlÿnÿwÿlÿeÿlÿlÿjÿgÿjÿsÿ~ÿjÿnÿlÿuÿnÿnÿsÿ~ÿ~ÿnÿuÿlÿnÿsÿnÿpÿlÿ~ÿ{ÿpÿwÿwÿpÿwÿpÿyÿwÿyÿ{ÿlÿsÿpÿ{ÿ{ÿuÿuÿuÿ{ÿwÿsÿnÿsÿyÿyÿyÿlÿuÿuÿ{ÿnÿwÿyÿsÿpÿuÿpÿuÿpÿuÿwÿyÿ{ÿpÿnÿuÿwÿwÿuÿwÿyÿsÿuÿnÿsÿyÿlÿlÿnÿnÿlÿpÿnÿjÿcÿpÿlÿgÿlÿuÿnÿgÿnÿcÿpÿjÿgÿnÿlÿZÿeÿjÿeÿgÿnÿcÿeÿcÿaÿgÿcÿjÿgÿeÿeÿcÿ_ÿ\ÿjÿgÿcÿeÿlÿaÿjÿcÿpÿpÿcÿeÿgÿcÿpÿcÿgÿgÿgÿeÿeÿlÿcÿgÿeÿeÿeÿpÿpÿjÿaÿjÿnÿcÿjÿgÿlÿpÿuÿpÿgÿsÿnÿgÿgÿcÿlÿpÿjÿyÿpÿuÿuÿlÿlÿlÿyÿpÿsÿwÿyÿlÿsÿuÿpÿyÿuÿ{ÿyÿwÿuÿuÿwÿuÿ{ÿ{ÿ~ÿ€ÿwÿ~ÿ~ÿ‚ÿ~ÿ~ÿ~ÿ{ÿ„ÿ€ÿ~ÿ~ÿ{ÿ~ÿ„ÿyÿ{ÿ~ÿ‡ÿ{ÿ€ÿ€ÿ{ÿ€ÿ€ÿ€ÿ‡ÿyÿ„ÿ€ÿ~ÿ‡ÿyÿ~ÿ‚ÿ~ÿsÿ€ÿwÿ„ÿyÿ‰ÿuÿsÿ~ÿ‰ÿ„ÿ€ÿ~ÿ{ÿ‚ÿ‚ÿyÿ‚ÿ‚ÿ„ÿ~ÿ~ÿ‡ÿ€ÿ„ÿ„ÿ‚ÿ~ÿ‚ÿ‡ÿ‡ÿ€ÿ€ÿ{ÿ€ÿ~ÿ~ÿ„ÿ{ÿ€ÿ„ÿ‚ÿ~ÿ„ÿ„ÿ€ÿ~ÿwÿ{ÿ€ÿyÿ€ÿ‚ÿwÿ„ÿ{ÿwÿwÿ‚ÿ~ÿ€ÿyÿ€ÿ~ÿyÿyÿ{ÿwÿ{ÿ~ÿ~ÿyÿ~ÿ€ÿsÿyÿwÿ‚ÿ„ÿ~ÿ~ÿwÿsÿ~ÿyÿyÿyÿ{ÿ€ÿ{ÿsÿyÿ~ÿ{ÿuÿyÿ~ÿuÿ~ÿyÿwÿyÿ€ÿuÿ€ÿpÿyÿyÿwÿ€ÿ~ÿ{ÿwÿ{ÿ€ÿyÿuÿ~ÿsÿ{ÿ{ÿ‚ÿ~ÿyÿ‰ÿ~ÿ{ÿ‚ÿ‚ÿ€ÿ~ÿ„ÿ€ÿ~ÿ~ÿ~ÿ„ÿ€ÿwÿ‚ÿ‚ÿ„ÿ„ÿ‰ÿyÿ„ÿ‰ÿwÿ„ÿ~ÿ€ÿ„ÿ‹ÿÿ‰ÿ‚ÿ‰ÿ‰ÿ‰ÿÿÿ’ÿÿ~ÿ‡ÿ„ÿ‡ÿ‰ÿÿ‹ÿ‚ÿ‹ÿÿÿÿ’ÿ‹ÿÿ”ÿ„ÿ‚ÿ’ÿ‚ÿ‹ÿ”ÿ’ÿÿ‹ÿÿÿ‹ÿÿ–ÿ’ÿÿÿ‰ÿÿ‰ÿ‰ÿ‹ÿÿÿÿ‰ÿ‹ÿ’ÿÿÿ„ÿ‡ÿ‡ÿ„ÿ‹ÿÿ‡ÿ‰ÿÿ’ÿ‚ÿ‡ÿ–ÿ’ÿ‰ÿ‡ÿ‰ÿ€ÿ‹ÿ”ÿ‰ÿÿ‰ÿÿ‚ÿÿÿ‰ÿ’ÿ‡ÿ‡ÿ‹ÿ’ÿ’ÿ„ÿÿ‡ÿÿ‡ÿÿÿÿ‹ÿÿ”ÿ˜ÿ„ÿ‡ÿ‚ÿ„ÿÿÿ‹ÿ~ÿ‰ÿ‰ÿÿ„ÿ‰ÿ€ÿ€ÿ€ÿ‚ÿ~ÿ‰ÿ€ÿ„ÿ~ÿ„ÿ‚ÿ~ÿ€ÿ‡ÿ„ÿ~ÿ‚ÿ~ÿ‰ÿ„ÿ„ÿ‚ÿ€ÿ‰ÿ„ÿ‚ÿ‚ÿ‚ÿ~ÿ‚ÿ‚ÿ€ÿ‰ÿÿ„ÿ‡ÿ„ÿ‰ÿ’ÿ‹ÿ‹ÿ‚ÿ„ÿ€ÿ‰ÿ„ÿ‹ÿ~ÿ‚ÿ€ÿ‰ÿ‰ÿ„ÿ‡ÿ‡ÿ‹ÿ~ÿ~ÿ„ÿ‹ÿ~ÿ‰ÿ‚ÿ„ÿ‰ÿ~ÿÿÿÿ’ÿ‰ÿ„ÿ‰ÿ‡ÿÿ‡ÿÿ’ÿ‰ÿ‡ÿ‰ÿÿÿ‹ÿ‰ÿÿ‹ÿÿ‡ÿ”ÿ‰ÿ’ÿ”ÿ”ÿ‡ÿÿ’ÿÿ”ÿ–ÿ’ÿšÿÿ˜ÿÿ”ÿÿšÿ˜ÿ”ÿšÿ–ÿ˜ÿ˜ÿÿ”ÿšÿ”ÿ–ÿ˜ÿÿšÿšÿ–ÿšÿ–ÿŸÿŸÿ’ÿ˜ÿšÿ˜ÿ˜ÿ–ÿ–ÿ–ÿ˜ÿÿ–ÿ–ÿÿ–ÿŸÿÿÿŸÿ˜ÿ–ÿ–ÿ–ÿ”ÿ”ÿ’ÿšÿ–ÿ˜ÿÿ˜ÿ–ÿšÿÿšÿ–ÿÿ–ÿ–ÿÿ–ÿÿ”ÿÿ–ÿ˜ÿÿ”ÿÿÿ”ÿ˜ÿ–ÿ–ÿÿ’ÿ‰ÿ’ÿ–ÿ‹ÿ˜ÿ”ÿÿŸÿ”ÿ”ÿ–ÿ–ÿ”ÿ–ÿ˜ÿšÿ”ÿ’ÿ˜ÿÿ’ÿ–ÿ”ÿ˜ÿ”ÿŸÿÿ’ÿ–ÿÿ–ÿÿ–ÿ’ÿ’ÿ”ÿ˜ÿÿÿ‹ÿ”ÿ”ÿÿ˜ÿ˜ÿ‹ÿ’ÿ”ÿÿ‰ÿÿ˜ÿ–ÿÿ’ÿ‰ÿ’ÿ˜ÿ”ÿ’ÿ’ÿÿ‰ÿÿ’ÿ‰ÿ–ÿ”ÿÿÿ‰ÿÿ–ÿÿ–ÿ‰ÿÿ’ÿÿ˜ÿ’ÿÿ‰ÿ”ÿ‰ÿ’ÿ–ÿ‹ÿ”ÿÿ’ÿ’ÿ”ÿ–ÿ’ÿÿ’ÿÿÿÿ”ÿ’ÿ’ÿ’ÿ’ÿ–ÿ”ÿ”ÿÿ’ÿ”ÿ˜ÿ–ÿ˜ÿ”ÿ–ÿšÿ’ÿÿ’ÿšÿ’ÿ–ÿšÿ–ÿ˜ÿšÿ’ÿ”ÿ”ÿÿÿšÿ”ÿŸÿÿ”ÿ£ÿÿŸÿÿŸÿšÿ”ÿ˜ÿÿ˜ÿÿŸÿÿ˜ÿ˜ÿ£ÿÿšÿ¡ÿŸÿŸÿ£ÿ¡ÿ¡ÿŸÿ˜ÿ–ÿ£ÿŸÿŸÿ¡ÿ˜ÿŸÿ£ÿ¡ÿÿšÿŸÿŸÿ¦ÿŸÿ£ÿÿŸÿ¦ÿÿ¡ÿšÿŸÿšÿÿÿ¦ÿ£ÿ¡ÿŸÿÿ£ÿ¡ÿŸÿ¡ÿ¡ÿšÿ¦ÿ¡ÿ£ÿ£ÿ¡ÿ£ÿÿ¡ÿŸÿ¦ÿ£ÿÿšÿ¦ÿ£ÿ¦ÿšÿ¡ÿ£ÿ¡ÿÿ¡ÿ£ÿ¡ÿ˜ÿ¡ÿ¡ÿ£ÿŸÿ¡ÿ£ÿŸÿ¡ÿÿ£ÿŸÿšÿÿŸÿŸÿ¡ÿ£ÿšÿ£ÿ£ÿ¦ÿ£ÿ¡ÿ¡ÿ˜ÿŸÿÿ¡ÿšÿÿŸÿ£ÿŸÿ˜ÿ¦ÿŸÿ–ÿÿ˜ÿŸÿ£ÿ£ÿšÿšÿ˜ÿšÿ–ÿ£ÿ¡ÿ£ÿŸÿŸÿÿ˜ÿÿÿŸÿ–ÿ£ÿ¡ÿŸÿšÿšÿ¦ÿÿšÿÿÿšÿ˜ÿ£ÿ˜ÿ¡ÿ£ÿÿ¨ÿÿšÿŸÿ£ÿ˜ÿ£ÿ˜ÿ¡ÿÿŸÿŸÿ¡ÿŸÿ£ÿ¡ÿŸÿŸÿŸÿªÿŸÿ£ÿ¡ÿ£ÿ£ÿÿ¨ÿŸÿ£ÿ¨ÿÿ£ÿªÿ¨ÿ£ÿ¡ÿ¦ÿ£ÿ¬ÿ®ÿ£ÿ£ÿ£ÿ¦ÿ¦ÿ£ÿ£ÿ£ÿ¦ÿŸÿ¨ÿªÿ¬ÿ¬ÿÿªÿ¨ÿ¡ÿ¬ÿ¬ÿ£ÿ£ÿ£ÿ£ÿ¡ÿ¨ÿ®ÿ®ÿªÿ¨ÿ®ÿ®ÿ¡ÿ¦ÿ£ÿªÿªÿªÿ£ÿ¦ÿŸÿ£ÿ¬ÿ¦ÿªÿ®ÿ³ÿªÿµÿ®ÿ£ÿ¦ÿ®ÿ±ÿ¦ÿ¨ÿ¡ÿ£ÿªÿ³ÿªÿ£ÿŸÿªÿªÿªÿ¬ÿ³ÿªÿªÿÿ¨ÿ®ÿ±ÿªÿ¦ÿ£ÿ¦ÿ®ÿ¬ÿ±ÿ¬ÿ®ÿ¦ÿ£ÿ£ÿ±ÿ³ÿ®ÿªÿ¦ÿ¨ÿ¨ÿ®ÿ¬ÿ£ÿªÿ®ÿ£ÿ¨ÿ¨ÿ£ÿ¨ÿ¨ÿªÿªÿ¨ÿ®ÿ¬ÿ¨ÿ¦ÿ¨ÿ±ÿ¡ÿªÿ¨ÿ¨ÿ¬ÿ®ÿªÿÿ£ÿ®ÿ¦ÿ¨ÿ¬ÿªÿ£ÿ£ÿÿªÿ¦ÿ¨ÿ¬ÿ¡ÿ¨ÿ¦ÿ¨ÿ¨ÿ¦ÿ¡ÿŸÿªÿªÿ¡ÿ¨ÿ£ÿ£ÿŸÿ£ÿ¬ÿ£ÿ¦ÿ£ÿ¦ÿ¦ÿ¬ÿ¡ÿ¡ÿ£ÿ¬ÿ£ÿªÿ¦ÿªÿ¦ÿªÿ®ÿ¨ÿ·ÿ¦ÿ¬ÿªÿŸÿªÿªÿ³ÿ¨ÿªÿ¬ÿ®ÿ±ÿ£ÿ¨ÿ¦ÿªÿªÿ¬ÿ¬ÿ¬ÿ£ÿ¦ÿªÿ®ÿªÿ¨ÿ®ÿ¬ÿ³ÿ¨ÿ¨ÿµÿ³ÿµÿ¬ÿºÿ±ÿ³ÿ±ÿ¬ÿ±ÿ·ÿºÿ±ÿ¨ÿ¾ÿ³ÿ±ÿºÿ³ÿ³ÿ±ÿµÿµÿ®ÿµÿµÿ®ÿ±ÿ³ÿ³ÿ³ÿ¾ÿ·ÿ·ÿ³ÿºÿ³ÿ®ÿ¼ÿ¾ÿÅÿ±ÿºÿ±ÿ³ÿµÿ±ÿ³ÿ®ÿ³ÿ³ÿ±ÿ·ÿµÿ¾ÿµÿªÿ¬ÿ¬ÿµÿ±ÿ¬ÿ³ÿ¼ÿ³ÿµÿ·ÿ³ÿµÿ·ÿºÿ³ÿµÿ³ÿ¬ÿ±ÿ³ÿ·ÿ¦ÿ¬ÿ·ÿ·ÿ®ÿ³ÿ±ÿªÿ±ÿ·ÿ±ÿ±ÿµÿµÿµÿ·ÿµÿªÿ®ÿ±ÿºÿµÿ®ÿ¬ÿ±ÿ±ÿµÿªÿ®ÿµÿ±ÿªÿ·ÿ¬ÿªÿªÿ¨ÿ±ÿ±ÿ±ÿ¨ÿªÿ±ÿ¬ÿªÿµÿ®ÿ®ÿªÿ¦ÿ®ÿ¨ÿ³ÿ¨ÿ®ÿ±ÿ¬ÿªÿ¨ÿ±ÿ³ÿ¦ÿ®ÿ®ÿ¨ÿ±ÿ®ÿ±ÿ±ÿ¬ÿªÿ¬ÿ¦ÿ¬ÿ¬ÿ¦ÿªÿ¬ÿ¬ÿ±ÿ®ÿ±ÿ¦ÿ¨ÿ³ÿ±ÿ®ÿ¦ÿ¬ÿ¨ÿ¨ÿ¦ÿªÿ®ÿªÿªÿ¨ÿ¨ÿªÿ¬ÿ¦ÿ¦ÿ¬ÿ¬ÿ³ÿ±ÿ³ÿ³ÿ³ÿ¬ÿ±ÿ±ÿ¨ÿ¦ÿ®ÿ±ÿ³ÿ¬ÿ®ÿ·ÿ®ÿ·ÿ®ÿµÿºÿ®ÿ¬ÿµÿ®ÿ±ÿªÿ·ÿºÿ³ÿºÿ³ÿ¾ÿ³ÿ¼ÿ±ÿ³ÿ·ÿµÿÀÿ¾ÿºÿµÿºÿ³ÿ¼ÿºÿ¼ÿ¼ÿ±ÿºÿºÿ·ÿ³ÿºÿ±ÿ·ÿ·ÿ³ÿÀÿµÿ¾ÿºÿ¼ÿÅÿºÿ³ÿ±ÿµÿºÿ·ÿ¾ÿµÿ·ÿºÿµÿ¼ÿ³ÿ³ÿ¼ÿ¼ÿ¼ÿºÿ·ÿ·ÿºÿºÿºÿºÿ¼ÿÂÿ³ÿÅÿ¾ÿ³ÿºÿ¾ÿÇÿÂÿºÿÂÿÂÿºÿÇÿ¾ÿºÿ¼ÿ·ÿ¾ÿ¾ÿÀÿ¾ÿ¾ÿµÿ¼ÿ±ÿ·ÿµÿµÿ³ÿ¼ÿ¼ÿºÿ¼ÿ·ÿÀÿµÿ³ÿ·ÿ±ÿ³ÿ·ÿµÿºÿ·ÿ¬ÿªÿºÿ±ÿ¼ÿ·ÿµÿºÿ±ÿ®ÿ³ÿªÿµÿªÿºÿªÿ±ÿºÿ·ÿºÿ³ÿ±ÿ³ÿ·ÿºÿ®ÿ¬ÿ¬ÿ³ÿ±ÿ±ÿµÿµÿ®ÿ¬ÿ®ÿ®ÿªÿ¬ÿ±ÿµÿ¬ÿªÿ·ÿ·ÿ¬ÿ®ÿ±ÿºÿ¾ÿµÿ³ÿ³ÿ·ÿ·ÿ®ÿ¬ÿµÿ·ÿ®ÿ±ÿ³ÿ®ÿºÿºÿ¼ÿµÿ±ÿ·ÿµÿ±ÿºÿªÿºÿºÿºÿ®ÿ³ÿ¬ÿµÿºÿ³ÿ¼ÿºÿ®ÿ³ÿµÿºÿ·ÿ¼ÿºÿ¼ÿ¾ÿºÿºÿµÿ¼ÿ³ÿ¼ÿ¼ÿ·ÿºÿÀÿ¾ÿ±ÿ¼ÿ¾ÿºÿºÿÂÿÅÿ¾ÿ¼ÿºÿºÿµÿ·ÿ¾ÿ¼ÿ¾ÿ¾ÿºÿºÿµÿ¼ÿÂÿÂÿÂÿÀÿ·ÿºÿ·ÿ·ÿÀÿ¼ÿÀÿÀÿÀÿ·ÿµÿÅÿ¾ÿ¼ÿ¼ÿµÿ·ÿ¼ÿÂÿÂÿ¾ÿ·ÿ¾ÿ¾ÿµÿ¼ÿ¼ÿ·ÿ·ÿ¬ÿµÿÀÿºÿ¼ÿºÿºÿºÿ¼ÿÀÿÀÿ®ÿµÿµÿ±ÿ¾ÿ·ÿµÿÂÿ¼ÿ·ÿµÿ¼ÿ¼ÿ¼ÿ¼ÿ³ÿ³ÿ¼ÿ·ÿ¾ÿÀÿºÿÂÿ¼ÿ³ÿ¾ÿ·ÿºÿµÿ·ÿµÿµÿµÿºÿµÿµÿ·ÿµÿ·ÿ·ÿºÿÀÿºÿ±ÿµÿ³ÿµÿºÿ³ÿ¼ÿµÿµÿ³ÿ³ÿ±ÿ·ÿ·ÿ³ÿµÿ³ÿ³ÿ¾ÿ³ÿµÿ¼ÿ³ÿ®ÿ³ÿ·ÿ³ÿ±ÿºÿµÿ¼ÿµÿ·ÿ®ÿ³ÿµÿ±ÿµÿºÿºÿ·ÿÀÿ¼ÿÅÿºÿµÿ·ÿºÿ±ÿºÿ¾ÿÂÿÀÿµÿ¼ÿµÿ·ÿ¾ÿºÿµÿºÿµÿ¾ÿÀÿ·ÿ·ÿ¾ÿÀÿ¾ÿÇÿµÿ·ÿ¼ÿ·ÿºÿºÿºÿ¾ÿ¾ÿºÿµÿÅÿµÿ¾ÿ·ÿ¾ÿ¼ÿµÿ·ÿ·ÿ·ÿ¼ÿ·ÿ·ÿÂÿ¾ÿ¾ÿ¼ÿÀÿ¾ÿ¼ÿÂÿ¼ÿºÿºÿÀÿÀÿ¾ÿÅÿ¾ÿ¼ÿÀÿÂÿ¼ÿºÿºÿºÿºÿ¾ÿÀÿ¼ÿ¾ÿÀÿ·ÿÀÿ¾ÿ¼ÿ¾ÿ¼ÿ¼ÿÇÿ¾ÿÀÿÀÿ·ÿµÿÇÿ¾ÿÉÿÀÿÅÿÀÿÀÿ¾ÿÀÿÂÿ¾ÿÅÿ¾ÿÂÿ·ÿ¼ÿ¾ÿ³ÿÇÿÀÿÀÿÇÿºÿ¼ÿÀÿÂÿ¾ÿÅÿÂÿÀÿ¾ÿ¼ÿÂÿÀÿ¼ÿ¼ÿÍÿÀÿÂÿ¾ÿÇÿ·ÿÀÿÂÿ¼ÿ¼ÿ·ÿ¼ÿÇÿÅÿ¾ÿÅÿÀÿ¾ÿºÿ·ÿ¾ÿÂÿµÿ¾ÿºÿ·ÿ¾ÿÅÿÀÿÂÿ¾ÿ¾ÿ·ÿ¾ÿÀÿºÿºÿµÿ¼ÿ¾ÿÀÿ¼ÿºÿÂÿÂÿÀÿ¾ÿÀÿÀÿ¾ÿ¾ÿºÿºÿÀÿ¼ÿ¼ÿÂÿÀÿÉÿÀÿ¼ÿÀÿ¾ÿºÿÅÿ¾ÿÀÿÀÿ¾ÿÂÿ¾ÿÂÿÀÿÅÿ·ÿÅÿºÿÀÿÂÿ¼ÿ¾ÿÂÿ¼ÿºÿÀÿÀÿÂÿËÿÂÿ¼ÿÂÿ¼ÿºÿÂÿÂÿ·ÿÅÿÀÿÂÿÅÿÉÿÉÿÅÿ¼ÿÂÿÇÿ¾ÿËÿÅÿÇÿÉÿÂÿÂÿÂÿÂÿ¾ÿÂÿÀÿÅÿÀÿºÿÇÿÇÿ¾ÿÅÿºÿ¾ÿ¾ÿÅÿ¼ÿÉÿÍÿÇÿÇÿÉÿÂÿÉÿÅÿÇÿÂÿÂÿÉÿÅÿÂÿËÿÉÿ¾ÿÅÿÇÿÉÿÉÿÇÿÇÿËÿÅÿËÿÇÿÉÿÀÿÇÿÇÿÅÿÉÿÉÿÉÿÇÿÉÿÉÿËÿÀÿÉÿËÿÉÿÉÿÉÿÉÿÉÿÅÿÍÿËÿÒÿËÿÉÿÉÿÅÿËÿÍÿÅÿÀÿËÿÇÿÍÿËÿËÿÉÿÅÿÉÿÉÿÀÿÉÿÇÿÅÿËÿÍÿÉÿÇÿÉÿÅÿÍÿÐÿËÿÉÿÅÿËÿÉÿÉÿÍÿÉÿÉÿÍÿËÿÇÿÉÿÉÿÉÿÅÿÇÿÇÿËÿÉÿÍÿÇÿÉÿÉÿÅÿËÿÉÿÉÿËÿËÿÂÿÉÿÉÿËÿÉÿÇÿÇÿËÿÉÿÉÿÉÿÉÿËÿÇÿÅÿÉÿÉÿÇÿËÿÉÿÇÿ¼ÿÉÿ¾ÿÅÿÂÿÂÿÍÿÉÿÐÿÉÿÀÿÇÿÅÿÀÿÅÿÂÿÉÿÂÿÇÿÅÿÂÿ¾ÿÂÿÉÿÅÿÉÿÉÿÍÿÇÿÂÿÉÿÉÿÉÿËÿÇÿ¼ÿÉÿÂÿÂÿÂÿÂÿËÿÇÿÅÿÅÿÉÿÂÿÉÿÉÿÂÿÇÿÉÿÅÿÉÿÉÿÂÿÀÿÇÿÇÿÇÿÇÿÇÿÇÿÉÿÇÿÇÿÂÿÅÿÅÿÅÿÅÿÉÿÇÿÉÿÉÿÀÿÀÿÂÿÅÿÉÿÀÿÀÿÂÿÉÿ¾ÿÇÿÀÿÂÿÇÿÂÿÅÿËÿÇÿÉÿÍÿÅÿ¼ÿÇÿÅÿÅÿÉÿÀÿ¾ÿÉÿÇÿÇÿÉÿÅÿËÿÍÿÍÿÍÿÉÿÂÿÐÿÉÿÉÿÉÿÇÿÇÿÅÿËÿËÿÐÿÉÿËÿÉÿÐÿÉÿÇÿÇÿÉÿÂÿÉÿÉÿÉÿÍÿÅÿËÿÐÿËÿÒÿËÿËÿÍÿÂÿÂÿÍÿËÿÐÿÉÿ¾ÿÉÿÍÿËÿÍÿÍÿÅÿÀÿÀÿÇÿÉÿÂÿÍÿÂÿÂÿÅÿÂÿËÿÉÿÇÿÇÿÅÿÂÿÉÿËÿÀÿÂÿÉÿÅÿ¾ÿÉÿÅÿÅÿÉÿÉÿËÿÀÿ¼ÿÅÿÀÿÀÿÉÿÂÿÇÿÉÿÅÿ¾ÿÇÿÉÿÂÿÉÿËÿÅÿÀÿÉÿÉÿËÿÍÿ¾ÿÀÿÅÿÂÿÂÿÅÿÀÿÂÿÂÿÅÿÅÿÅÿ¾ÿ¾ÿ¾ÿ¼ÿÀÿ¾ÿÂÿÀÿÂÿÀÿ¾ÿ¾ÿÀÿÂÿºÿ¾ÿºÿµÿ¼ÿÂÿÅÿ·ÿºÿ¾ÿ¼ÿÅÿ¾ÿ¼ÿºÿÀÿ¾ÿµÿ¼ÿÀÿ¾ÿÀÿ·ÿºÿ·ÿ¾ÿºÿ·ÿ·ÿ¼ÿÀÿÀÿÀÿÀÿºÿ³ÿ¼ÿÂÿÂÿÀÿµÿ¼ÿÂÿ·ÿ·ÿÀÿºÿ¾ÿ¼ÿ¾ÿ¾ÿ¼ÿºÿ¼ÿ·ÿ¾ÿºÿºÿÂÿ¼ÿÂÿµÿºÿºÿ·ÿ¼ÿÂÿÀÿÇÿºÿ¼ÿÀÿÀÿÀÿ¾ÿ¼ÿÅÿ¾ÿÂÿÅÿÀÿ·ÿÅÿÀÿ¾ÿÅÿÂÿÉÿ¾ÿ¼ÿÂÿÀÿÅÿÂÿ¼ÿÀÿÂÿ¼ÿÇÿÂÿºÿÇÿÉÿ¼ÿÇÿÀÿÀÿÇÿÀÿ¼ÿÉÿÂÿÉÿÀÿÂÿ¾ÿÀÿ¾ÿÀÿÇÿ¾ÿÇÿÇÿÅÿÅÿÉÿÇÿ¾ÿÀÿÂÿÅÿ¾ÿ¾ÿÀÿÀÿÂÿÅÿµÿÂÿ¾ÿÂÿ¼ÿÂÿÂÿ¼ÿÇÿ¼ÿÂÿÀÿ¾ÿºÿÅÿ·ÿºÿ¼ÿ·ÿÂÿÀÿ¾ÿÂÿ±ÿ¼ÿ¾ÿ¾ÿºÿÇÿÂÿµÿºÿÅÿÀÿÀÿ¼ÿ·ÿ¼ÿºÿ¾ÿ¾ÿºÿÀÿ¼ÿ·ÿ³ÿÀÿ¼ÿºÿ·ÿ¼ÿ·ÿ¼ÿ¾ÿ·ÿ·ÿ·ÿ¼ÿ¾ÿµÿºÿºÿ¼ÿ¼ÿºÿ¾ÿµÿ·ÿ¼ÿ¾ÿºÿºÿ·ÿ¼ÿºÿÀÿ¾ÿ¼ÿ¼ÿºÿºÿºÿ·ÿµÿÀÿÀÿÂÿÂÿºÿºÿ¼ÿÂÿºÿÀÿ¾ÿºÿ·ÿºÿºÿµÿ·ÿµÿ¾ÿ¼ÿ¼ÿÂÿÀÿ¼ÿÅÿÀÿÂÿºÿ¼ÿÂÿÇÿ¼ÿÀÿ¼ÿÀÿÀÿÀÿ¼ÿ·ÿÅÿÂÿºÿÉÿÀÿÀÿÇÿÀÿ¼ÿ¾ÿ¼ÿÀÿÀÿÅÿ¼ÿÀÿÅÿÅÿÀÿÀÿÅÿÂÿÇÿÉÿÉÿÅÿÀÿÀÿ¾ÿ¼ÿ¾ÿÇÿÀÿÉÿÀÿÂÿÀÿÀÿ¼ÿÅÿÉÿ¾ÿÇÿÂÿÅÿÀÿ¾ÿÉÿÅÿ¼ÿÇÿÂÿÇÿÅÿÂÿÇÿÂÿ¼ÿÅÿÅÿÅÿÅÿ¼ÿÇÿÇÿÇÿÅÿÉÿÀÿ¾ÿÉÿ¾ÿÀÿ¼ÿÂÿ¾ÿÂÿÇÿºÿÉÿ¾ÿ¼ÿÉÿÂÿÂÿÇÿÅÿÅÿËÿÅÿÂÿÀÿ¼ÿ¼ÿÇÿ¼ÿÉÿÂÿ¾ÿ¾ÿÅÿÅÿ¾ÿÅÿÀÿÀÿ¼ÿ¼ÿÅÿÂÿÀÿÇÿÅÿ¾ÿ¾ÿ¾ÿ¼ÿÀÿÀÿ¾ÿ¾ÿ¾ÿ¼ÿÀÿ¼ÿ¾ÿÀÿºÿÂÿÀÿÅÿ¼ÿÀÿºÿÂÿÀÿ¼ÿÇÿÀÿÂÿºÿ¼ÿÅÿ¾ÿºÿÇÿ¼ÿ¾ÿ¾ÿ¾ÿ³ÿ¾ÿ¼ÿÀÿÀÿ¼ÿÀÿ¾ÿºÿÂÿÀÿ·ÿ¾ÿÉÿ·ÿÀÿÅÿÀÿÅÿÂÿ¼ÿÂÿÇÿÂÿÂÿÀÿÉÿÀÿ¾ÿÇÿÀÿÀÿ¼ÿÀÿÀÿ¼ÿÂÿÅÿÅÿ¼ÿ¼ÿ¾ÿÇÿÉÿÅÿÀÿ¼ÿÇÿ¾ÿ¼ÿÅÿÉÿÅÿÀÿÉÿÀÿÅÿÇÿÂÿ¾ÿÇÿÀÿÀÿÇÿÇÿÅÿ¾ÿÂÿÇÿÉÿºÿÇÿÇÿÍÿËÿÉÿÂÿÂÿÅÿÇÿÉÿÂÿÉÿÍÿÅÿÉÿÇÿÂÿÇÿÅÿÇÿÇÿÉÿÇÿËÿÀÿËÿÍÿÅÿÂÿÉÿÉÿÍÿÉÿÅÿÀÿËÿÉÿËÿÉÿÉÿÂÿÉÿÇÿÍÿÂÿÅÿÇÿÇÿÉÿÉÿËÿÍÿÉÿËÿÉÿÉÿÉÿËÿËÿÇÿÇÿÉÿÇÿËÿÉÿÉÿÉÿËÿÉÿÉÿÉÿÇÿÉÿÉÿÉÿÉÿÉÿÉÿÉÿÉÿ¾ÿÍÿÒÿÍÿÅÿÉÿÐÿÉÿÉÿÉÿÉÿÉÿËÿÉÿÅÿÐÿÇÿÅÿÉÿÅÿÇÿÂÿÂÿÉÿÇÿÇÿÍÿÉÿÉÿÍÿÉÿËÿÅÿÍÿÉÿÉÿÉÿÅÿÇÿÇÿÉÿÅÿÇÿÉÿÇÿÉÿÇÿÂÿÉÿÅÿÉÿÅÿÇÿÀÿÂÿÇÿÂÿÅÿÀÿÅÿÅÿËÿÉÿÅÿÅÿÉÿÉÿÉÿÉÿÅÿÇÿ¾ÿËÿÐÿÉÿÀÿÂÿÀÿÉÿËÿÅÿÉÿÂÿÅÿÇÿ¾ÿËÿÉÿÉÿÅÿÇÿ¾ÿÅÿÇÿÅÿËÿÇÿÇÿÉÿÉÿÉÿÅÿÅÿÅÿÉÿÅÿÉÿÅÿËÿËÿÉÿÅÿÇÿÍÿÉÿÇÿÇÿÅÿÇÿ¾ÿÀÿÉÿÅÿÂÿÉÿÂÿÅÿËÿÇÿÇÿÂÿÉÿÉÿÂÿÇÿÅÿÉÿÖÿÍÿÂÿÉÿ¼ÿÅÿÉÿÉÿÇÿÀÿÉÿËÿÇÿÂÿÇÿÅÿÂÿÉÿÉÿÅÿÂÿÅÿÅÿÇÿÇÿÉÿÅÿÅÿÅÿÇÿÅÿÂÿÉÿÉÿÅÿÇÿÉÿÅÿÇÿÉÿÉÿËÿÉÿÂÿÂÿÉÿÉÿÇÿÂÿÅÿÂÿÅÿËÿÅÿÐÿÉÿÂÿÀÿÉÿÉÿÉÿÂÿÉÿÂÿÇÿÔÿÉÿÍÿÉÿÉÿÇÿÇÿÉÿÇÿÉÿÉÿÅÿÉÿÉÿÉÿÉÿÅÿÅÿÇÿÉÿ¾ÿÉÿÉÿÅÿÇÿÉÿÉÿÇÿÉÿÂÿÉÿÉÿÅÿÉÿÉÿÀÿÉÿÅÿÉÿÉÿÅÿÉÿÂÿÇÿÂÿÉÿÇÿÀÿÉÿÉÿÇÿÇÿÇÿÅÿÅÿÅÿÉÿÇÿËÿÇÿÂÿÇÿÇÿÂÿÒÿËÿÉÿÂÿËÿÅÿÉÿÉÿÅÿÉÿÂÿÅÿÂÿÉÿÂÿÂÿÂÿÅÿÉÿÀÿÇÿÇÿÉÿÉÿËÿÐÿÅÿÉÿÉÿÅÿÀÿËÿËÿÉÿÉÿÇÿÅÿÀÿÉÿÀÿÉÿÅÿÇÿÍÿÅÿÀÿÉÿÂÿÉÿÇÿÉÿÅÿÅÿÉÿÂÿÐÿËÿÉÿËÿËÿÂÿÇÿÂÿÇÿÇÿ¾ÿÇÿËÿÂÿÉÿÅÿÅÿÇÿÉÿÉÿÉÿÇÿ¾ÿÉÿÅÿÉÿÉÿÇÿÅÿÅÿÅÿÅÿÇÿÂÿÍÿÉÿÉÿÉÿÅÿÇÿÀÿËÿÇÿÅÿÍÿÉÿËÿÂÿÂÿÉÿÉÿÉÿÉÿÉÿÂÿÂÿÇÿÉÿÇÿ¾ÿÉÿËÿÇÿÍÿÂÿÅÿÉÿËÿÇÿÇÿÇÿÂÿÅÿÀÿÉÿÅÿÅÿÍÿÇÿÇÿÉÿÇÿÉÿÂÿÉÿËÿÉÿÀÿÀÿÅÿÅÿÅÿÇÿÉÿÅÿÉÿÅÿÉÿÅÿÇÿÅÿÉÿÂÿÅÿÉÿÉÿÂÿÇÿÅÿÉÿÉÿÂÿÉÿÉÿÅÿÉÿÂÿÅÿÅÿ¾ÿËÿ¾ÿÂÿÉÿÇÿÉÿÇÿÇÿÉÿÇÿÂÿÅÿËÿÉÿÂÿÅÿÉÿÇÿÇÿÇÿÉÿÉÿÅÿÇÿÀÿÂÿÂÿÍÿÉÿÒÿÍÿÉÿÉÿÀÿÅÿÉÿÅÿÉÿÂÿÉÿÇÿÀÿÅÿËÿÇÿÉÿÉÿÅÿÀÿÅÿÂÿÅÿÅÿÅÿÉÿÉÿÉÿËÿÇÿÇÿÅÿÇÿÅÿÀÿÉÿÅÿÂÿÂÿÀÿÇÿÇÿÂÿÉÿËÿÂÿËÿÉÿÉÿÉÿÉÿÀÿÅÿÅÿÅÿÅÿÍÿÍÿÅÿÇÿÍÿÉÿÂÿÉÿÇÿÂÿËÿËÿÉÿÇÿÂÿÂÿÉÿËÿËÿÍÿÉÿÉÿÉÿÉÿÂÿÅÿÉÿËÿÐÿÉÿÍÿÍÿÅÿÉÿÉÿÅÿÉÿÉÿÇÿÇÿÇÿÉÿÉÿÉÿÉÿËÿÐÿËÿËÿÒÿËÿÐÿÍÿËÿÉÿÅÿÍÿÉÿÉÿËÿÉÿËÿÒÿÐÿÍÿÐÿÉÿÉÿÉÿËÿÍÿÖÿÒÿËÿÍÿËÿËÿÐÿÇÿÐÿÉÿÒÿËÿÒÿÔÿÐÿÐÿÉÿÍÿÉÿÉÿËÿËÿÍÿÉÿÇÿÉÿÉÿÉÿÍÿÅÿÉÿÉÿÐÿÒÿÇÿÉÿÐÿÍÿÇÿÅÿÐÿËÿÇÿÉÿËÿÉÿÉÿÍÿÒÿÉÿËÿÇÿÇÿÉÿÉÿËÿÅÿÍÿÅÿËÿÉÿÉÿÅÿÅÿËÿËÿÐÿËÿÉÿÅÿÇÿÉÿÇÿÉÿÐÿÉÿÉÿÉÿËÿÐÿÉÿÐÿËÿÉÿÉÿÉÿÉÿÉÿÍÿÉÿÉÿÉÿÉÿÇÿÐÿËÿÉÿÇÿÉÿÉÿÂÿÉÿÉÿÇÿÉÿÇÿÉÿÍÿÍÿÉÿÉÿÒÿÉÿÉÿËÿÉÿÐÿÉÿËÿÉÿÉÿËÿËÿËÿËÿÐÿÉÿÉÿÍÿÉÿËÿÍÿÉÿÉÿÉÿÉÿËÿÍÿÐÿÐÿÍÿÐÿËÿÉÿÐÿËÿÒÿÇÿÍÿËÿÉÿÉÿÉÿÐÿÍÿÍÿËÿËÿÂÿËÿÉÿÔÿÐÿÐÿÍÿÒÿÍÿÉÿÐÿÉÿÔÿÒÿÇÿÉÿÍÿÍÿÐÿÍÿÒÿÒÿÍÿÐÿÒÿÒÿÉÿÐÿÐÿÍÿÍÿÉÿËÿÐÿÐÿÙÿÍÿÐÿËÿÉÿËÿÍÿÒÿÒÿÛÿÇÿÐÿÒÿÉÿÍÿÔÿÙÿÍÿÍÿÐÿÐÿÍÿÖÿÔÿÐÿÍÿÍÿÒÿÐÿÐÿÖÿÒÿÍÿÔÿÔÿÐÿÐÿÍÿÒÿÒÿÒÿÙÿÐÿÔÿÐÿÖÿÐÿÔÿÖÿÒÿÔÿÒÿÍÿÍÿÒÿÐÿËÿÒÿÖÿÔÿÉÿÔÿÉÿÒÿÐÿÍÿËÿÖÿÒÿÒÿÔÿÐÿËÿÖÿÖÿÒÿÖÿËÿÉÿÒÿÒÿÒÿÔÿÍÿÝÿÔÿËÿÍÿÔÿÖÿÒÿÐÿÐÿÐÿÐÿÉÿËÿÐÿÐÿÔÿÐÿÉÿÒÿÖÿÔÿÔÿÖÿÍÿÖÿËÿÒÿÖÿÖÿÖÿÝÿÔÿËÿÖÿÖÿÍÿÒÿÒÿÐÿÍÿÔÿËÿÔÿÐÿÐÿÔÿÒÿÒÿÐÿÔÿÒÿËÿÉÿÙÿáÿÐÿÐÿÐÿÒÿËÿÔÿÖÿÒÿÖÿÖÿÖÿËÿÔÿÐÿËÿÔÿÒÿÙÿÍÿÖÿÐÿÒÿËÿÒÿÐÿÛÿÒÿÙÿÔÿÍÿÐÿÖÿÖÿÔÿÔÿÛÿÙÿÔÿÒÿÍÿÖÿÒÿÒÿÖÿÖÿÍÿÐÿÒÿÉÿËÿÔÿÖÿÛÿÒÿÒÿÖÿÙÿÖÿÐÿÒÿÍÿÖÿÐÿÖÿÔÿËÿÙÿÔÿÐÿÐÿÔÿÐÿÐÿÖÿÖÿÙÿÒÿÍÿÒÿÖÿÖÿÙÿÒÿÒÿÍÿËÿÍÿÒÿËÿÒÿÐÿÍÿÔÿÒÿÔÿÍÿÒÿÍÿÒÿÖÿÍÿÐÿÐÿÒÿÍÿÒÿÉÿÐÿÖÿÖÿÙÿÖÿÒÿÍÿÍÿÐÿÒÿÍÿÖÿÒÿÖÿÔÿÒÿÍÿÔÿÍÿÍÿÙÿÒÿÍÿÔÿÍÿÐÿÖÿÍÿÍÿÔÿÐÿÐÿÐÿÐÿÐÿÖÿÔÿÒÿÐÿÖÿÒÿÔÿÙÿÐÿÒÿÖÿÐÿÒÿÝÿÛÿÔÿÝÿËÿËÿËÿÒÿÔÿÒÿÒÿÙÿÐÿÒÿÒÿÒÿÔÿÙÿÐÿÐÿÍÿÔÿÒÿÐÿÛÿÔÿÐÿÖÿÔÿÛÿÙÿÐÿÒÿÐÿÙÿÒÿÐÿÐÿÐÿÖÿÖÿÙÿÐÿÔÿÖÿÙÿÔÿÐÿÐÿÛÿÖÿÐÿÔÿÔÿÍÿÛÿÒÿÝÿÐÿÙÿÛÿÐÿÍÿÖÿÖÿÙÿÔÿÛÿÔÿÙÿÙÿÛÿÖÿÛÿÐÿÙÿÒÿÒÿÒÿÔÿÖÿÖÿÖÿÝÿÝÿÍÿÙÿÙÿÙÿÍÿÙÿÙÿÝÿÝÿÛÿÔÿÒÿÖÿÝÿÛÿÙÿÛÿÔÿÍÿÔÿÔÿÙÿÖÿÐÿÒÿÒÿÍÿÖÿÖÿÔÿÒÿÒÿÒÿÙÿÒÿÐÿÔÿÙÿÒÿÔÿÒÿÒÿÖÿÐÿÔÿÙÿßÿÔÿÒÿÔÿÍÿÛÿÍÿÖÿÖÿÔÿÙÿÙÿÔÿÛÿÍÿÔÿÔÿÔÿÒÿÐÿÐÿÙÿÖÿÒÿÙÿÒÿÐÿÐÿÔÿÙÿÙÿÔÿÒÿÙÿÒÿÒÿÔÿÒÿÖÿßÿÒÿÒÿÍÿÐÿÒÿÒÿÒÿÒÿÔÿÒÿÖÿÒÿÒÿÙÿÒÿÔÿÔÿÍÿÒÿÛÿÍÿÔÿÝÿÔÿÐÿÐÿÔÿÔÿÐÿÒÿÔÿÔÿÖÿÒÿÔÿÙÿÐÿÒÿÖÿÔÿÔÿÔÿÒÿÖÿÍÿÔÿÖÿÛÿÔÿËÿÒÿÍÿÔÿÔÿÒÿÒÿÒÿÖÿÙÿÍÿÔÿÛÿÍÿÖÿÖÿÛÿÝÿÐÿÝÿÐÿÙÿÖÿÖÿÍÿÒÿÐÿÙÿÔÿÐÿÒÿÒÿÔÿÝÿÔÿÒÿÙÿÖÿÐÿÔÿÒÿÐÿÐÿÝÿÔÿÔÿÒÿÝÿÖÿÒÿÖÿÔÿÍÿÒÿÖÿÔÿÙÿÐÿÒÿÔÿÖÿÒÿÐÿÒÿÔÿÙÿÒÿÔÿÖÿÔÿÐÿÔÿÔÿÖÿÐÿÔÿÔÿÒÿÖÿÙÿÙÿÙÿÔÿÔÿÒÿÔÿÐÿÒÿÐÿÝÿÙÿÙÿÝÿÔÿÒÿÒÿÒÿÒÿÙÿÔÿÖÿÔÿÍÿÔÿËÿÔÿÒÿÙÿÒÿÙÿÙÿÔÿÛÿÐÿÒÿÔÿÒÿÍÿÖÿÒÿÛÿÛÿÙÿÖÿÍÿÔÿÔÿÔÿÒÿÛÿÔÿÍÿÖÿÒÿÔÿÖÿÖÿÙÿÙÿÔÿÒÿÔÿÔÿÔÿÖÿÒÿÙÿÒÿÔÿÐÿÔÿÔÿÒÿÙÿÔÿÖÿÛÿæÿÐÿÒÿÖÿÛÿÛÿÒÿÔÿÔÿÖÿÙÿÝÿÔÿÔÿÖÿÖÿÛÿÛÿÔÿÛÿÖÿÔÿÙÿÖÿÛÿÛÿÖÿÙÿÖÿÛÿÙÿßÿÖÿÝÿÙÿÖÿÛÿÖÿÙÿÙÿÖÿÙÿÖÿÔÿÙÿÖÿÙÿÝÿÛÿÖÿÛÿÝÿÒÿÖÿÖÿÛÿÐÿÖÿÙÿÖÿÖÿÒÿÒÿÖÿßÿÛÿÛÿÔÿßÿÖÿÒÿÍÿÒÿÙÿÙÿÛÿÔÿÖÿÛÿÔÿÔÿÒÿÖÿÙÿÙÿÔÿÖÿÛÿÐÿÔÿÔÿÙÿÛÿÐÿÒÿÖÿÙÿÖÿÖÿÛÿÙÿÒÿÙÿÛÿÖÿÔÿÖÿÙÿÖÿÔÿÛÿÙÿÖÿÙÿÙÿÔÿÖÿÒÿÙÿÖÿÖÿÝÿÖÿÖÿÖÿÔÿÖÿÍÿêÿÙÿÐÿÝÿÔÿÖÿÔÿáÿÙÿáÿßÿÖÿÔÿÛÿÙÿÝÿÙÿÝÿÝÿÙÿÙÿÛÿÖÿÔÿÙÿÛÿÛÿÝÿÝÿÙÿÖÿÙÿÔÿÛÿÝÿáÿÖÿÝÿÝÿÙÿÝÿÙÿÙÿÛÿáÿÝÿÛÿßÿÙÿßÿÖÿÙÿÛÿßÿÒÿßÿÛÿßÿßÿáÿßÿÒÿÙÿÛÿÝÿÙÿÙÿÝÿäÿÝÿÔÿßÿÙÿÖÿÛÿÝÿÛÿÛÿÝÿáÿßÿÝÿÛÿäÿÝÿÙÿÛÿßÿßÿÖÿÙÿáÿÙÿÛÿáÿÙÿÙÿÛÿÝÿÛÿßÿßÿÛÿßÿßÿÝÿßÿÛÿáÿäÿßÿæÿßÿÖÿÛÿßÿÝÿäÿÝÿÝÿÝÿßÿÛÿßÿÝÿäÿäÿáÿÛÿÝÿÝÿÙÿÝÿÝÿÛÿßÿáÿÙÿáÿÖÿÝÿÖÿÝÿáÿÝÿÝÿÛÿÖÿßÿäÿÙÿÛÿßÿßÿáÿáÿÛÿÛÿÝÿßÿÝÿßÿßÿÝÿÝÿÛÿèÿáÿÝÿßÿÙÿÝÿÝÿÛÿáÿäÿÛÿáÿèÿßÿÝÿáÿäÿäÿáÿÛÿáÿáÿßÿÝÿäÿáÿÝÿáÿêÿäÿáÿáÿßÿÝÿäÿäÿáÿæÿáÿÛÿæÿíÿäÿßÿßÿßÿäÿäÿßÿßÿèÿÝÿÝÿÛÿæÿÝÿèÿßÿäÿáÿäÿäÿáÿßÿêÿáÿÝÿèÿÙÿßÿæÿèÿíÿßÿßÿäÿäÿæÿèÿßÿäÿæÿäÿáÿáÿæÿßÿæÿÝÿèÿêÿäÿáÿÝÿßÿäÿßÿßÿäÿáÿæÿäÿäÿæÿßÿæÿæÿáÿäÿäÿèÿäÿÝÿêÿæÿáÿæÿÝÿæÿèÿÝÿÛÿæÿáÿßÿÝÿíÿßÿäÿèÿäÿèÿÛÿáÿáÿßÿÝÿäÿßÿßÿáÿæÿáÿáÿäÿèÿáÿáÿÝÿÛÿäÿáÿßÿÛÿáÿäÿáÿÛÿÝÿáÿäÿáÿäÿÝÿäÿßÿÝÿáÿÛÿáÿæÿÛÿÝÿßÿäÿÛÿÝÿßÿßÿÝÿæÿÝÿäÿÝÿÝÿæÿæÿáÿÝÿáÿßÿßÿæÿßÿÛÿÝÿÙÿßÿáÿÝÿßÿÛÿÝÿäÿÝÿäÿáÿÛÿßÿäÿÝÿÝÿäÿÝÿäÿáÿäÿßÿÛÿßÿáÿäÿÛÿèÿæÿÝÿæÿèÿßÿäÿäÿæÿæÿßÿäÿÝÿáÿæÿßÿäÿæÿáÿáÿäÿßÿßÿäÿÝÿêÿäÿßÿßÿßÿßÿäÿáÿäÿßÿæÿäÿáÿäÿÝÿäÿíÿäÿáÿßÿßÿßÿäÿæÿêÿäÿèÿáÿèÿíÿäÿßÿäÿæÿæÿäÿäÿáÿßÿèÿäÿèÿæÿæÿáÿßÿáÿäÿæÿáÿáÿáÿäÿÝÿæÿæÿèÿßÿßÿäÿäÿßÿßÿßÿáÿßÿßÿèÿßÿæÿßÿÝÿáÿäÿäÿæÿÝÿáÿÛÿßÿßÿäÿßÿÛÿÝÿÝÿßÿÝÿäÿßÿÝÿÝÿÝÿÝÿæÿáÿÝÿßÿÛÿßÿÖÿäÿÙÿáÿÝÿÛÿÛÿÙÿßÿßÿÝÿÛÿÛÿßÿßÿÖÿßÿÛÿÖÿêÿÛÿÝÿÝÿÛÿÛÿÛÿÝÿÝÿÝÿÛÿÝÿáÿÛÿÛÿÝÿæÿÛÿÙÿßÿßÿáÿÙÿßÿßÿÝÿáÿÝÿÝÿÝÿßÿÛÿÝÿáÿÝÿÝÿÛÿÛÿÛÿÛÿÝÿáÿÛÿßÿßÿÙÿßÿáÿáÿÝÿÛÿäÿáÿÙÿáÿÙÿÒÿÖÿáÿÙÿÝÿÖÿäÿáÿäÿáÿÛÿÝÿÝÿÝÿßÿßÿÙÿÛÿÝÿÝÿÝÿÛÿÝÿÛÿÙÿßÿÝÿßÿÝÿÝÿÝÿÝÿáÿÙÿÝÿÝÿÝÿÝÿÛÿßÿßÿßÿÖÿÙÿÝÿßÿÝÿßÿÝÿÙÿÝÿßÿÛÿÛÿÝÿÙÿÙÿÖÿÝÿáÿÙÿÛÿáÿßÿÛÿÙÿáÿÝÿÝÿßÿáÿßÿêÿæÿÙÿÝÿÝÿáÿÛÿßÿßÿäÿÝÿßÿÛÿÝÿáÿÙÿÝÿÝÿßÿÛÿÙÿáÿßÿÝÿÖÿÛÿÝÿÙÿÝÿÝÿÔÿáÿÙÿÛÿÛÿÝÿßÿÛÿÒÿÖÿÛÿÖÿßÿÛÿäÿßÿÛÿÛÿÝÿßÿÛÿÝÿÛÿÝÿÝÿÝÿáÿÛÿÖÿßÿßÿáÿÛÿáÿäÿäÿäÿÝÿÛÿÛÿäÿßÿßÿÛÿÝÿÙÿáÿÛÿäÿßÿÛÿÛÿßÿßÿßÿßÿßÿáÿßÿáÿáÿÝÿäÿáÿáÿáÿÝÿÝÿæÿßÿßÿäÿÛÿßÿäÿáÿáÿÙÿÛÿáÿÝÿáÿßÿáÿÝÿäÿÝÿßÿáÿäÿÝÿáÿÝÿßÿáÿßÿáÿæÿÛÿáÿßÿæÿêÿáÿÝÿäÿäÿáÿäÿáÿäÿáÿÛÿßÿÛÿæÿßÿæÿäÿÝÿÛÿßÿæÿäÿäÿáÿÝÿäÿÝÿáÿäÿÛÿÛÿáÿÝÿèÿÝÿäÿèÿÖÿäÿáÿÝÿÛÿäÿßÿæÿáÿÝÿáÿäÿèÿÝÿáÿáÿÝÿäÿßÿßÿÝÿÝÿáÿæÿÛÿßÿÝÿáÿßÿÝÿáÿáÿæÿäÿäÿèÿßÿáÿÝÿáÿáÿßÿÙÿÛÿäÿßÿßÿæÿáÿÛÿÝÿäÿáÿäÿáÿáÿáÿÝÿÛÿäÿáÿæÿÙÿáÿáÿæÿäÿèÿÝÿæÿÝÿßÿáÿÛÿáÿáÿáÿÝÿßÿæÿáÿÝÿßÿßÿáÿßÿäÿßÿÝÿáÿáÿæÿáÿßÿÛÿæÿáÿèÿïÿÝÿäÿæÿßÿßÿáÿÖÿáÿäÿÛÿßÿäÿßÿèÿäÿáÿÝÿäÿäÿäÿäÿáÿäÿÝÿÝÿáÿêÿáÿßÿäÿäÿæÿáÿäÿäÿäÿäÿäÿáÿáÿäÿèÿÝÿßÿßÿÛÿáÿÝÿáÿßÿäÿäÿáÿÛÿáÿêÿäÿäÿèÿäÿßÿßÿßÿæÿäÿäÿäÿäÿäÿßÿäÿáÿäÿßÿÛÿáÿäÿæÿæÿáÿæÿäÿäÿßÿßÿæÿáÿæÿáÿáÿäÿèÿáÿæÿæÿáÿäÿèÿæÿæÿæÿæÿæÿáÿäÿáÿèÿäÿáÿíÿèÿáÿæÿæÿäÿæÿßÿæÿêÿæÿæÿäÿáÿíÿïÿäÿèÿïÿèÿáÿæÿèÿèÿíÿêÿáÿèÿèÿèÿêÿíÿêÿæÿêÿæÿæÿèÿñÿèÿäÿäÿêÿèÿäÿèÿïÿæÿæÿäÿèÿæÿêÿíÿèÿèÿèÿèÿêÿèÿèÿèÿèÿæÿæÿèÿïÿêÿäÿáÿæÿäÿæÿáÿáÿèÿêÿèÿäÿßÿäÿíÿêÿÝÿêÿíÿæÿêÿäÿæÿßÿæÿïÿèÿäÿæÿäÿäÿáÿäÿæÿæÿæÿäÿÝÿêÿäÿßÿáÿáÿêÿáÿèÿæÿáÿêÿäÿäÿæÿæÿèÿêÿÝÿæÿèÿäÿáÿæÿáÿáÿáÿÝÿæÿßÿäÿßÿèÿßÿáÿäÿÝÿßÿÝÿßÿáÿæÿáÿßÿáÿæÿáÿÝÿßÿáÿáÿßÿèÿêÿäÿáÿáÿäÿÝÿáÿäÿÛÿáÿáÿÛÿáÿÝÿßÿÝÿÝÿáÿáÿäÿÙÿßÿáÿÝÿáÿÝÿßÿáÿáÿäÿèÿßÿäÿÝÿæÿæÿÝÿáÿäÿÝÿÛÿáÿßÿæÿäÿßÿáÿæÿæÿßÿÝÿÝÿáÿßÿáÿáÿßÿáÿÝÿßÿÝÿáÿáÿèÿóÿäÿäÿÝÿßÿáÿßÿßÿáÿßÿáÿäÿßÿíÿáÿäÿäÿáÿßÿäÿÝÿæÿäÿßÿáÿßÿäÿáÿßÿáÿæÿáÿæÿÛÿáÿÝÿäÿßÿáÿèÿæÿèÿßÿèÿáÿèÿæÿáÿáÿáÿÛÿæÿáÿßÿáÿÝÿÝÿáÿáÿäÿßÿÛÿáÿáÿïÿèÿäÿáÿäÿäÿßÿäÿèÿäÿáÿßÿäÿáÿáÿèÿêÿßÿßÿêÿæÿäÿáÿäÿäÿÛÿáÿäÿáÿáÿßÿêÿáÿáÿèÿêÿäÿßÿÝÿßÿáÿäÿæÿßÿÝÿÝÿäÿäÿáÿêÿäÿáÿæÿáÿÝÿáÿßÿæÿÝÿßÿßÿßÿáÿßÿäÿÝÿáÿßÿÙÿßÿÝÿæÿäÿßÿßÿæÿáÿßÿáÿáÿÝÿßÿßÿèÿßÿßÿßÿÝÿÝÿÝÿÝÿÙÿßÿÝÿßÿÝÿáÿÙÿÝÿßÿßÿÛÿÛÿßÿÝÿáÿáÿÖÿÖÿÙÿßÿÝÿÝÿáÿÛÿáÿÛÿäÿÝÿÝÿáÿäÿáÿÔÿßÿáÿáÿÛÿÝÿÛÿÙÿÝÿßÿßÿÝÿáÿßÿÛÿÝÿßÿßÿÝÿÝÿÝÿßÿÝÿÝÿáÿáÿÛÿÙÿäÿßÿßÿßÿÛÿÝÿÙÿßÿßÿßÿßÿáÿÝÿÝÿÛÿÔÿßÿÖÿÛÿßÿÛÿÙÿÝÿÝÿÖÿáÿßÿÙÿÛÿÛÿÛÿÝÿÙÿÛÿÛÿßÿÝÿßÿÛÿßÿÝÿÛÿÙÿÛÿÝÿßÿÛÿÝÿÙÿßÿáÿßÿÛÿÝÿáÿáÿÔÿÛÿáÿæÿáÿÙÿÝÿáÿßÿÝÿÛÿáÿßÿßÿÙÿßÿÖÿÝÿÛÿÙÿÙÿßÿÔÿßÿßÿÝÿÖÿÛÿáÿÙÿÙÿÝÿÖÿáÿÙÿßÿßÿÝÿÛÿáÿáÿÙÿßÿáÿÙÿÙÿÝÿÛÿÙÿÝÿßÿßÿßÿäÿÛÿáÿÝÿáÿßÿÙÿÛÿÝÿÛÿÖÿßÿÝÿÛÿÙÿáÿäÿÛÿßÿÝÿÝÿÝÿÛÿÝÿäÿáÿáÿÝÿÖÿÛÿáÿÛÿáÿÝÿáÿÔÿÛÿÝÿßÿáÿÝÿÝÿÝÿáÿßÿáÿßÿÝÿÝÿÛÿßÿßÿÛÿáÿÝÿßÿáÿäÿäÿáÿÙÿÝÿÙÿÛÿÝÿßÿáÿäÿÝÿßÿÝÿáÿÝÿßÿßÿáÿÝÿßÿÝÿßÿæÿßÿáÿÝÿÝÿáÿÝÿáÿßÿáÿÝÿÝÿäÿßÿáÿßÿßÿßÿÝÿäÿÝÿÝÿßÿæÿÝÿáÿäÿáÿÝÿßÿÙÿßÿäÿßÿÛÿáÿÖÿßÿÙÿßÿäÿÝÿäÿÛÿáÿáÿßÿÛÿÝÿÝÿÔÿÔÿÙÿÝÿßÿßÿÛÿßÿßÿÛÿÛÿÝÿÝÿÖÿÔÿÝÿÖÿÙÿÙÿäÿáÿÛÿáÿáÿßÿáÿÝÿáÿßÿÝÿßÿÙÿÛÿáÿÛÿÙÿßÿÝÿáÿßÿÝÿÙÿÝÿßÿÛÿáÿÝÿÝÿÝÿßÿßÿÝÿÛÿáÿßÿáÿæÿÝÿßÿÙÿáÿäÿÛÿÙÿäÿáÿßÿÖÿáÿßÿÛÿÛÿÝÿÝÿÙÿÛÿßÿßÿáÿäÿßÿßÿáÿßÿÝÿÛÿáÿäÿßÿáÿÛÿÙÿÝÿáÿÛÿáÿäÿæÿÛÿÛÿäÿßÿßÿßÿÛÿÙÿáÿáÿÝÿÝÿÝÿÝÿÙÿÝÿäÿáÿäÿßÿßÿáÿæÿäÿÛÿæÿáÿÝÿáÿæÿÝÿÛÿÛÿáÿßÿßÿÙÿÝÿæÿäÿßÿßÿßÿáÿßÿáÿÝÿáÿßÿßÿÝÿÝÿßÿáÿäÿÝÿßÿäÿáÿäÿßÿáÿäÿäÿäÿáÿáÿáÿáÿßÿäÿßÿÝÿáÿáÿÝÿáÿäÿßÿäÿäÿáÿäÿßÿÙÿáÿäÿáÿäÿÙÿÝÿäÿáÿæÿáÿáÿáÿáÿèÿäÿäÿßÿÝÿäÿáÿßÿÝÿäÿßÿèÿèÿæÿäÿáÿäÿßÿßÿßÿäÿæÿÛÿäÿßÿáÿäÿèÿáÿáÿèÿÝÿäÿêÿßÿáÿæÿäÿÝÿäÿÝÿíÿáÿèÿæÿæÿáÿáÿáÿáÿíÿáÿäÿæÿÛÿÛÿáÿæÿáÿßÿáÿÝÿæÿáÿæÿæÿßÿáÿÝÿßÿèÿèÿßÿäÿäÿæÿèÿáÿæÿáÿæÿæÿäÿäÿäÿßÿáÿäÿÝÿÝÿßÿÛÿáÿäÿäÿÛÿæÿßÿßÿæÿßÿßÿßÿßÿèÿæÿßÿÝÿáÿßÿäÿèÿßÿäÿäÿáÿßÿÝÿÝÿßÿáÿáÿÝÿáÿÝÿÝÿäÿáÿáÿáÿáÿäÿßÿÝÿäÿÛÿáÿÝÿáÿäÿÝÿáÿäÿßÿßÿßÿÝÿßÿÛÿßÿßÿáÿßÿÝÿÛÿÛÿáÿÖÿßÿÛÿäÿÛÿÛÿßÿßÿáÿÛÿáÿÙÿßÿäÿäÿßÿáÿÝÿÖÿßÿáÿÛÿßÿßÿßÿÝÿßÿáÿßÿäÿáÿÝÿÝÿæÿßÿßÿßÿÛÿÝÿäÿÙÿÛÿßÿßÿäÿáÿÛÿÝÿÝÿÛÿáÿäÿäÿáÿßÿßÿæÿÝÿßÿßÿäÿÝÿÛÿÛÿáÿÝÿßÿßÿßÿßÿäÿßÿÙÿáÿÙÿßÿÝÿßÿÝÿÖÿÝÿáÿäÿßÿáÿÝÿáÿÙÿÛÿäÿßÿßÿèÿÝÿæÿáÿáÿæÿáÿäÿäÿäÿäÿæÿßÿÝÿáÿÙÿÝÿáÿßÿáÿáÿÙÿÛÿßÿáÿÛÿÝÿÛÿßÿäÿßÿäÿáÿßÿáÿßÿáÿßÿÙÿßÿßÿáÿáÿÙÿßÿßÿÛÿßÿèÿÝÿßÿáÿÝÿáÿßÿáÿßÿßÿßÿáÿáÿßÿèÿÝÿáÿäÿæÿáÿíÿäÿáÿßÿßÿäÿæÿßÿáÿßÿßÿäÿÝÿÝÿæÿÛÿáÿßÿßÿßÿáÿÝÿäÿäÿÝÿßÿßÿßÿäÿÛÿÙÿÛÿÙÿÛÿÝÿÛÿÝÿÝÿßÿÝÿÝÿáÿßÿÛÿáÿÛÿÝÿßÿßÿÝÿßÿáÿÛÿÛÿÛÿÙÿèÿßÿßÿÛÿÛÿäÿäÿäÿÛÿáÿÝÿÖÿßÿÝÿÝÿßÿÝÿÖÿÙÿÝÿáÿÛÿÙÿÙÿÝÿÛÿÙÿÔÿßÿáÿÛÿÝÿÙÿÝÿèÿÛÿÛÿßÿßÿÛÿÖÿÝÿÝÿÖÿÛÿÛÿßÿßÿáÿßÿÝÿÝÿÛÿáÿßÿßÿáÿÝÿáÿÝÿßÿÛÿßÿÝÿÛÿáÿßÿÝÿßÿÝÿáÿÝÿÝÿÝÿÙÿßÿäÿÛÿÙÿÛÿáÿßÿÝÿÙÿÙÿÙÿÝÿßÿÝÿßÿÛÿßÿÝÿÝÿßÿÛÿÛÿÙÿÛÿÛÿÝÿßÿßÿÛÿäÿßÿÝÿáÿßÿßÿÝÿßÿÝÿáÿßÿÝÿáÿÛÿáÿÝÿÖÿáÿÛÿáÿáÿÝÿÛÿáÿßÿÝÿÝÿÙÿÛÿÝÿÝÿÛÿáÿÛÿÖÿÝÿáÿÛÿÝÿßÿÔÿÝÿäÿÛÿÝÿÖÿÛÿßÿÝÿÝÿÙÿÝÿÒÿÝÿßÿÛÿÖÿÝÿßÿÝÿßÿÙÿßÿßÿÛÿÛÿáÿèÿáÿÛÿÛÿÙÿÛÿÙÿÖÿÖÿÙÿÝÿÝÿÝÿÖÿÝÿÛÿÝÿßÿÔÿÔÿÙÿßÿÝÿÙÿßÿÛÿÛÿÙÿÙÿÛÿÛÿÝÿÖÿÖÿäÿÙÿÙÿÖÿÝÿÔÿÙÿáÿÛÿÙÿÛÿÛÿÝÿÙÿÝÿÛÿÝÿÝÿÖÿÖÿÙÿÛÿÝÿÙÿßÿáÿÝÿÛÿáÿßÿáÿáÿÛÿÝÿÝÿÖÿáÿáÿßÿÛÿÝÿáÿÙÿÛÿÛÿáÿÛÿÛÿáÿÛÿáÿÝÿßÿßÿäÿÝÿÝÿÛÿáÿáÿáÿÖÿÔÿßÿÙÿáÿßÿßÿáÿÛÿÖÿÝÿÝÿÝÿÝÿÙÿÝÿÝÿÝÿßÿÛÿÛÿæÿÔÿÛÿßÿßÿÝÿßÿßÿÛÿÙÿÝÿßÿÝÿäÿßÿßÿÛÿáÿÙÿÙÿßÿáÿÝÿÛÿäÿßÿßÿáÿÛÿÒÿÛÿßÿÖÿÛÿßÿÔÿÒÿÐÿÛÿßÿÝÿßÿßÿÛÿÝÿßÿÖÿßÿÙÿÖÿÖÿÛÿáÿÛÿÔÿáÿÙÿÛÿÛÿÖÿÛÿÛÿÝÿÒÿáÿÛÿÙÿÝÿÖÿÙÿÝÿÝÿÛÿßÿÖÿÛÿÙÿáÿßÿÙÿÝÿÛÿáÿßÿÝÿÛÿáÿÝÿÛÿÛÿßÿÖÿÔÿÛÿÝÿßÿÙÿÛÿßÿÛÿÙÿÛÿÝÿÝÿßÿÛÿÝÿßÿÖÿÛÿßÿÝÿßÿÛÿäÿßÿÛÿÝÿÝÿÛÿÛÿÙÿáÿÛÿÙÿäÿßÿßÿáÿÝÿÝÿÙÿáÿßÿÛÿßÿÛÿÝÿÖÿÛÿáÿßÿßÿäÿßÿÛÿÙÿÒÿÖÿÙÿÛÿÛÿÝÿßÿÝÿÝÿßÿáÿÛÿÝÿÝÿÛÿáÿáÿßÿÛÿÙÿßÿßÿßÿáÿáÿáÿßÿÝÿßÿÖÿÝÿßÿßÿÝÿÙÿæÿßÿáÿßÿÝÿÝÿÝÿßÿßÿßÿáÿÔÿÝÿáÿáÿßÿßÿÝÿÖÿÝÿäÿáÿÙÿßÿÙÿÛÿÛÿæÿÝÿáÿßÿßÿáÿßÿáÿÛÿßÿäÿäÿäÿßÿáÿæÿßÿáÿäÿßÿÝÿæÿßÿáÿßÿÝÿáÿáÿäÿßÿäÿáÿßÿáÿßÿßÿßÿÙÿáÿÝÿßÿÝÿÛÿáÿæÿèÿÛÿáÿÝÿßÿäÿäÿäÿáÿáÿáÿÛÿßÿáÿÖÿäÿäÿáÿáÿäÿäÿÝÿßÿßÿáÿÖÿßÿæÿäÿáÿáÿáÿáÿßÿÝÿäÿÛÿßÿÝÿÝÿáÿßÿÝÿÝÿæÿßÿßÿßÿßÿáÿÛÿáÿáÿßÿßÿäÿÝÿßÿäÿÛÿáÿÙÿÝÿäÿßÿßÿäÿßÿÛÿäÿäÿßÿáÿáÿáÿäÿáÿÝÿßÿßÿäÿáÿÝÿßÿßÿÝÿßÿÛÿÝÿßÿÛÿßÿÝÿÙÿæÿßÿáÿÝÿáÿáÿáÿáÿßÿÛÿáÿßÿÖÿäÿßÿÛÿÝÿßÿÛÿßÿáÿßÿßÿäÿßÿßÿäÿÝÿäÿÙÿÖÿáÿßÿÝÿÝÿáÿäÿÛÿáÿßÿáÿÝÿÖÿáÿáÿáÿÖÿÖÿßÿáÿáÿßÿßÿäÿäÿáÿßÿÙÿÝÿÝÿÙÿÙÿßÿßÿáÿäÿÝÿÝÿÙÿÙÿÖÿäÿáÿáÿÝÿÛÿßÿäÿÝÿÙÿáÿäÿÝÿÖÿÛÿÛÿÝÿÝÿÝÿáÿÝÿÝÿáÿßÿÔÿÙÿæÿÙÿÛÿßÿÝÿßÿáÿÝÿßÿßÿáÿßÿÝÿÖÿÛÿßÿáÿÝÿÝÿáÿáÿßÿáÿáÿßÿÛÿÙÿßÿäÿÝÿáÿáÿÝÿäÿäÿáÿÝÿäÿáÿÝÿßÿÝÿáÿáÿäÿáÿßÿÝÿßÿÝÿÝÿßÿáÿáÿÝÿÛÿÛÿÝÿÛÿßÿßÿÛÿáÿßÿÛÿáÿÛÿÝÿßÿÖÿÛÿÙÿßÿÝÿÝÿáÿÛÿßÿßÿßÿÝÿáÿÝÿáÿÝÿÙÿáÿßÿÝÿßÿÝÿáÿáÿÝÿáÿßÿáÿßÿÙÿáÿßÿáÿßÿÛÿÙÿÙÿäÿÝÿáÿáÿÛÿÝÿÖÿáÿÝÿÛÿÛÿÖÿÛÿßÿÙÿÝÿÛÿßÿÙÿÝÿÝÿÛÿßÿÖÿÝÿÙÿÝÿÛÿÔÿÖÿÙÿÝÿÖÿáÿßÿÛÿÖÿÙÿÛÿÛÿÙÿßÿÙÿÖÿáÿÙÿÖÿÝÿÛÿÒÿÝÿÙÿÔÿÔÿÔÿÛÿßÿÝÿßÿÙÿæÿÙÿÖÿÖÿÒÿÝÿÝÿÙÿÒÿÝÿÖÿÙÿÔÿÛÿÙÿÝÿÛÿÖÿÙÿÔÿÔÿÛÿÖÿÖÿßÿÛÿÛÿÝÿÙÿÙÿÖÿÙÿÙÿÝÿÙÿÙÿßÿÙÿÖÿÛÿßÿÙÿÝÿÝÿÙÿÙÿÔÿÝÿÛÿÛÿÝÿÛÿÛÿáÿÙÿÝÿÝÿÒÿÛÿÒÿÛÿÙÿÝÿÛÿÙÿáÿÛÿÖÿÝÿÝÿÖÿÖÿÛÿÛÿÔÿÙÿÔÿÛÿÛÿßÿÛÿßÿÝÿáÿÛÿÙÿÖÿÝÿÛÿÙÿÙÿÙÿÝÿÛÿÙÿÙÿÝÿÔÿÝÿÙÿÖÿÖÿÒÿÙÿÔÿÙÿÖÿÔÿÖÿÙÿÛÿÙÿßÿÒÿÙÿÔÿÒÿÛÿÙÿÛÿÖÿÙÿÖÿÙÿßÿÙÿÔÿÖÿÝÿáÿÒÿÖÿÐÿÛÿÛÿÒÿÔÿÙÿÙÿÝÿÔÿÔÿÙÿÖÿÖÿÖÿÔÿÛÿÙÿÐÿÖÿÝÿÙÿßÿÒÿÛÿÙÿÛÿÔÿÛÿÛÿÖÿÒÿÔÿÒÿÖÿÙÿßÿÙÿÔÿÖÿÖÿÖÿÛÿÝÿÙÿÝÿÛÿÙÿÙÿÖÿÔÿÙÿÙÿÖÿÙÿÙÿÖÿÝÿÙÿÔÿÙÿÒÿÝÿÙÿßÿÖÿÙÿßÿÖÿÒÿßÿÛÿÙÿÖÿÖÿÛÿÝÿÛÿÖÿÙÿÛÿÝÿÛÿÔÿÛÿÝÿÛÿÛÿÛÿÝÿÙÿÝÿÙÿÖÿÖÿÙÿÖÿÙÿßÿÖÿÛÿßÿÝÿÝÿÛÿÝÿÙÿÝÿÙÿÖÿÛÿÝÿÛÿßÿÛÿÛÿáÿÝÿßÿÛÿÛÿÙÿÛÿÖÿÛÿÙÿßÿÛÿÛÿáÿÛÿÖÿßÿÛÿÛÿßÿáÿÛÿßÿÝÿÙÿÝÿÛÿÖÿÒÿÔÿÙÿßÿÔÿÛÿáÿßÿÙÿÔÿÖÿÙÿÖÿÙÿßÿÛÿÖÿÛÿÖÿßÿÖÿÖÿÝÿÒÿÖÿÙÿÙÿÛÿÖÿÖÿÛÿÛÿÙÿÔÿÔÿÖÿÛÿÙÿÝÿÙÿÙÿÙÿÖÿÖÿÝÿÙÿÙÿÝÿÔÿÐÿÙÿÙÿÙÿÛÿÖÿÛÿÖÿßÿÒÿßÿÝÿÔÿÙÿÛÿÒÿÛÿÙÿÐÿÝÿÙÿÙÿÙÿÙÿÝÿÛÿÛÿÙÿÐÿÙÿßÿÔÿÔÿÙÿÝÿÝÿßÿÝÿÖÿÛÿÙÿÖÿÖÿÛÿÛÿÝÿÐÿÙÿßÿÒÿÛÿÝÿÔÿÔÿÙÿÖÿÛÿÖÿÛÿßÿÙÿÝÿßÿÛÿáÿÙÿÙÿÙÿÙÿÙÿÒÿÐÿÐÿÙÿßÿÖÿßÿÝÿÙÿÙÿÛÿÝÿÔÿÝÿÔÿÖÿÐÿÖÿáÿßÿÛÿÛÿáÿÝÿÙÿÝÿÖÿÖÿÙÿÖÿÛÿÖÿÝÿßÿÙÿÖÿßÿßÿÝÿÙÿÛÿÛÿÛÿÝÿÙÿÛÿáÿÝÿÛÿÝÿÝÿÙÿÖÿÛÿÝÿÙÿßÿÛÿÝÿÙÿßÿÝÿÛÿÙÿÛÿÙÿÛÿÛÿÝÿÛÿÛÿÝÿÔÿÖÿÛÿÛÿäÿÖÿÝÿÛÿßÿÖÿÙÿÖÿÖÿÙÿÙÿÝÿÛÿÛÿÛÿÛÿÛÿÖÿÝÿÛÿÔÿÝÿÝÿÛÿÛÿÖÿÝÿÔÿÒÿÛÿäÿÙÿÛÿÛÿÛÿÖÿÙÿÒÿÛÿÔÿÖÿÛÿÛÿÙÿÖÿÙÿÖÿÔÿÛÿÛÿÝÿÔÿÛÿÛÿÒÿÖÿÙÿÙÿÙÿÔÿÙÿÛÿÛÿÙÿÙÿÔÿÔÿÖÿÒÿÔÿÙÿÔÿÝÿÖÿÙÿÙÿÛÿÖÿßÿÔÿËÿÒÿÛÿÙÿÖÿÙÿÛÿÔÿÔÿÔÿÔÿÒÿÙÿÔÿÔÿÔÿÖÿÐÿÒÿÒÿÔÿÐÿÔÿÙÿÖÿÖÿÔÿÒÿÔÿÔÿÔÿÔÿÒÿÔÿÙÿÒÿÒÿÒÿÍÿÖÿÔÿÒÿÉÿÖÿ®ÿ%ÿŽþþyýûüŒü!üÍûkû ûÒúúVú1úðùÜù©ù°ùˆù¥ùgù»ù†ù>úHû›þÌ(üàü¾ýâþš wôÒÎ ×  Š} ž \[þoØò ô « @cûô ÎË ~ìƒ 'µƒü™ü,TFö® õêûŠ Ù„×ÝcÎ F Ç - Ô Àðù,ó ôî#"ûEÈ>JÔýŠ |RhøéþvT'ÿÕ–û—2ø©ð›øT øoõ6÷=ù+ù ôvþ'æ_ GþPîóíHù®ýÞõëê·ïûõò0õòºì¤êÒïþ;øò÷~ñÃá¹ëÝÿó¤ø{öÊþíhã»ðÍí>õ½ þø”íáçZûì Àû òˆò€æ‡ú)ýûèøoç[ìÙ  û¢ñö…ü{Çö`ù2|úÔÕ÷t—êàó' C¤üfóÅúþ NÜ8×õJ÷rû97…8 4aúþ) ¿’ÿSwrýéþcû/ž£ ¼ Hùûüý&þ*Î gù€ýâø÷(<¤úTíSýÀú· Ô]øøòç&Ëô!ú•õ0ÿ©þW;øáövù(þ a›þ°ùQæÖö3ú¯øò ÉÿïUîûfþÓù-þGúpôTó©õù‰öAû\ûãôµÿ幉ü õ«÷ ö™÷…õ ô©òêò©ûAEC÷8û—ñÄù<÷ÉÿÅøØô2ÿ¤¡øÂDïùþRöú¨ý”ÿY ¾ýñ±øIøY: Uý Ÿsö;¶üœû4ûÉ íÿsüÿüÀƒ²þÌy~ÿDýÞüëúßý' ± 8û†û`ù• ázú9”ÿþ{ÿÔ hâú^7ýWg·ïú õmó4û”}ý—ùmœ[ üvü8û6ÿô½÷› ˆ<çþ*ñíïì{°÷Tún\ûGî{òÅ Å Ëö[îy­­þøéêJðÎ… q4òþœw ú3îù–ÿ[¦ñóà4~öÒÿïýÈòTøÿ‰øú_ÃG÷xõ û þÂòjüƸþNõþÞ!Ê÷«pŠ ýŒóHù/FGK‚0ýS8høù¦ÿ8û#ÿí , ú›üñ  ‚øI' ÅúýbùÜ Hyö[óex ‡ÕõzüfüP–ýÚiÓþm îêý3ôõ—úÛí ^ Zø<ê3ü. ÑUûXÿ–ýaø ò þ³{ý¦ Š Ùøóï}òºê ~ôãû‚ýŽõ£• üûðõDÿ¹TõOýþxó ô8þi|ú[üÁóáû·Ôyû\ðbõþ;PИÿ2ýªÿð|ó,ñvu u 4ûÓõñÿÎðþ„ùßûöüB…úêÿxcÇG:þnôýf t&¶üÔø÷ý:£û#öÉÿ†„y¡ö%ý./âþ½«ìyÿ:üv™÷9úìý{‰ Øùúw› Ìy.nÿƒúìýäÿ‹ÿ}høÜð´þ™ I@4 ç õ<ñ-ù” txÌ ÿ¹ýÃþ/þûóû¡[o6@ú%ï™÷Ðÿ—ê ñúÞþV9úá(¾ñÆ'R(þÍûT½þÙÿ öµêùÍöÐüñ`hJMDúsõ·ÿå_ÿîýõû þEÚû£ù½þ¼Pþ8ün{ý•ùOý¢…þ$²çÌî(ë )îýÍöiù!˜ ± |/Rú1J÷5ó”ö„ï7PßøÆÊuúÂö{ÇÏô¾ýÍôô&¨Ÿw œ xó`þ¸ ‰6ô;ýUý‰ü-,¾ýÓþâDgû±ÿ–ûüvþ•þ+ù$ù  ½‚øÞül’Cþ3ÿ-gÿÊú³ˆùÔý¢ˆû ý ùþdôúެýÏ ­ú!õëú/üçŽ éþðùMö˜T("ýÕ÷­ükþë·ÙÿÆþþåü4û”økõwÿ>|õëAþã‘ wñññÿz 4›ü³ÿ>„ýŽüò÷ïïÆ½ ýcù·úú7GúÿÁ“ ÷ý9ˆ "û¨ó'øtþ*-üi1óý¡ Bfu“÷#ú¤ v 'û’êtô$¼â^ûéúaä]f–ð'ÿQûÚû.‹ùðìô­ ­þ i ÿúÿßöœùˆ|D `â òtþÒ¥ùÓù°ª:ù]På #ÿdùÒøÆùz* ,ÿ«ü)ý»ýŽü×úlÿZ¦«ópuÿ÷bý˜ÿ· ¿þdü»ýë÷¾ú@áÿ“õøó¶úI$×ü:¦ üóû¸ó¾ýV1‰ Nü–þ®ýHùæö‹ÿÒýzÅ ¢ý† ôþ/þ§û²ûo¯ñ;øâ·úêÿÅlžùƒþßX­ƒüŸøŠùmŸÿÖûþ‚af ãùëüô% ñÈþi¨lÿÚøöªýEpE¹]Jî½÷rãûˆþ# Îüã÷nýÝý¾—¤ÅXÿGb¯øüÿ¯ü^ù}ýZ Ôfüƒõ#ø•L§ô€ÿJ§H9 öü0ùþï ]ü¾Øô1ü¼ÿÅÀý_›ú õ¼Îþ`þ^û ¬6ŸýwCûüRêözüï6ùÏûuìçü9ýÖû-þ‰·Žüù üe«ÐzúÐøÿºpÿ¢˜ÒÙ÷ý]¸÷!úËø+uz÷øá¤þfúË  Û˜íþ/ üÇÿþ÷ý=ÿþ9ý Áþõ\žûüõIüæ0düþ†¸|ø¶õÁ˜ÿù®¼û)ÿûƒýú/üåí0Uþ%ÿE#úÎI‘xÝäóóü Y gÿcûcÿÉÿ7 Þ÷|ø=ý¿mŸú|ü æìiªøÉû­üïü¨ûyûpùóF¤øþý‰¸þ—ðæÿÛCjï±ï…þ»¯pÿ1ü,ú¦ÿ`øêùöúæý´… Ìõ;TMýßø©û(ülI ý‘z]ú<÷Åú¨ >/üþk3ü™ú^Ã]ú ÷@õ¸£ý¦ï4ù|ÊÓ£McûIþ¶úfzúØ÷ýný¦Ø @ E¶þ"ùIÁü›ü¢ ¤©ðîû‡6÷¶þm;^V\ýœù×ø¶• t¸ñ޶ü™æýÿ³Nù×õ´õ’ÿɼ<Š{ûøb'û‘î 2ûöüAû ö^*Vÿún$ ¹ö›õÂùµ ] ¹åþpý¢úâþ4ÿ«ªÿõÃøµ,BOöÙõØóøDú¬ÄÑîþ4ùMøxþ9ÿâ¡wøäïœùveÎ@øøCþ€ð,ÿÿñøˆ÷kRòþÛóÝjäÿQoþþ%ýRþ¾ýÓùÎ ÓaÌ•þôúêÍùÀZjÏýÕþñúx—`$ óÿ?û.úHöKø9 À^3ñûütþq(üæMúÿˆýývùûÄ^õ;xùïý[üþ¹Qù¹öÀÿ† u‡ü|óÝúIþø¸ ¹ 7ü9â0õoóž÷}ÛùþÞþ³úò÷a; A }ûP÷  Õ¥ýpöƒóEþ û³ª¬ªk zú*Ñ=¦üÄ÷¡ý¯üɯƒòþ4ùTúü‡ÿê´±úúl Ä(üKOÿ÷ôøü ìö¹ýeVDý…÷¥òb× 1 ²ùfúmþWv&—þFòÙúúïù¼ž[¢Ëýf0ý–¡ß‡‚ éþáùúÇø£ÿƒú?x=ÐøÓ÷€ÿŒÙâˆÀû²ùt÷ÐH0Ëý!üö‘ûFøm÷O]6*þ€lýKÿ¬öîûEþ€5ú¥Ïç:üDSôùÿ²:Bÿ‰ÖþAûÿúýçùi¥ ›ÀìEùáù†ý3 Žþ½ùÆù…X’ÿ9ÿû1þßÿŸø—ü´ “ J>h ëþÖôù´þžþ™÷þv.–Mý8! õÔô’ü¸þ'ÿÏ[ .ÿ\û†#1÷k÷ÛŒþ]ü7dŸþý°h‰ÿ‹úoÀýšù–ÿZ› X ûÃúî¢üÈù¶÷v kný÷nø}û8þÖ0n úÝÿö7úÐþüŽþE(þaý3þùû± uèöµø’üÿ|ã | å„Qù{öã÷ܧÓùˆýüýfþfÓîýüý}èg‘û{ÿÓù€ø0äØûŒüùù³ÿ fþíúYþîø ^Œü©ü§ûŠ÷Gü™šýú5ú1ÿÏýJöúiýýè”bxÉÿ¨4BýdÊB-ûÕú-ùZýÿIêÿ2=ÿ‚ÿÑÅ;ýÿ·ÿ”±ÿ¼ÿ¨öüû. 8 ½ý¸ú—úovü;ÿ®ý4ÿÄû þ‘ÖyÿbþaýùsïºyÇýžþ.ÿ!!ügû’ÿ ~6ùkûÖû§ûTD ,ÿ…óÅö`²pqþ û3fÒ¸ãøøG÷×þÔ¶²þû~ÿ±ý8k/þ!ÿÉÿ'ý—üÞüø$Ûÿõûú!ú¤þl²zþ6û‘û}÷>þ»ý¾ý’ý’üj5h §6ûiýûºGþüýÁü–úúGü û›œ„žg^û0ÅÊþÐü½ùnýmTÿš8ÿÑÑþÓüüû¿þöþÿ"þŽüML¸þ@/ÿqþÈ%ýÝø¨|õXý’ú7yÿUþpOýDý¨ N ÿú8÷‰úðþ 8†ý1ü8þÙü±üÑE)‡Üü˜ý×ÒÿäúNþåþÂ@JÇÿïüNü+ùpöyâ£enûèýüþ­þ‰ÿŸÿ¬ýð^ýCþÙÊúÿáÿ ÿÿc7ùùû¦Õwÿˆ§Ìþeûëèµý¥ùuÿµÿ þèý!üû„ŽþÒI9}ý½þÖûÄûÇÿJaÿdúG3[mü*üÿ÷Žü6û&=ü,ü £ÿ™þ>6| @:þüÙüFÿlâ'ýà÷uýÙÿ‰ÿrÛÙüùkûm~=ÿûþ¯þ>ŠþÇ íÿÒÿfúmü«þ‘ïÿÐÿ_eÿœý‹’ÿ×üúÿ•¨Ï4äüŸÑxøsÿS–ÿYùá~ÿ¬ýKüÙú!üBÿ‘œ-þu~¶†,Âû!ú7ú«þž·ýÍÿÏýù6ý×¼Ïbünøyûþbþfþ›=þýþèRþDý4ý±ÿÕ6Sý4»ùâüì¦ýú±÷lj€#üþ™þÓü„ÿî•Gü&þŸýÝÿþ!ÿåh¥ôþûˆý sÿþd?(ükþ#V½nÚþ¾ý?‘ý'ýžþÛóeNþÕþ»Dýèýÿ4áÜþÙËÿôüºü„ÿ£ÿùþ¨ÿÿ¸úÿqþèý—þæ×8þÃþüÝÿ¶ÿl¡ÿ‘ýûZÿZÿÍÃÿFýAþÞüRþÃþÿ]Etö‡ÿêýyÿËÿeÿeÿÁþñv·ÿÐÿ=ÿ þdþcÿ%,ÿþÃþ~ÿ@ÿjÿ·ÛÿÐÿ¯íüÉVÀýCüáý”ÿ5wžªíOý¶üüý(ÑZüýpÿÖÿ ŵû.ýéþ žþyÃÕ'Mý'ýÝýµÿÉÿGîý¾ýÿ'*·ÿ§þJý‘ý©þ”æþýªýåþ¯sŽþÆyÿr®ÿ-þ¼ÿÉÿE­ó¾ýíüþšý~ÿB«þßÿlÿcýµÿÙ™8þ1üÓþïÿôþ7Xÿ~ÿi tþ:þ¯æ!5þ,ÿ¦ÿÞþNþ;¾¯zþ›åþìý~ÿd‚3þ\ÿZÿÂÿ˜ÿXÿüeÿTÿ!Hÿ‚0ɪ#ÿOOÿhþBÿ˜ÿ€ÿú!ÿåþm;™þÒÿ›þÔÒÿ©þCþ£ÿŸßÿ¿þªÿðMÿ›þõÿ®\ÿ¶þ2ÿ¡ÿÝàþÊþÒÿ4ïÿÿéþÿ ïÿ×€¡ÿÃþ]+ÃþöþšeÿÂÿÿfßîþÙÿÿ›þÂÿ³ÿ£ÿ±ÿ üÿ‹hAƒþËýaÿ‹ÿŒþÿ ÿ™Å0.ÿ,ÿ.Deëþ‹ÿZïÿÿÿ\ÿÿ³9ÿXÿ]ÀÿÿßÿÐÿQÿßÿþÿ©¼ÿ´þ{ÿ·ÿs§wÿÿ£ÿïÿÂÿ€ÿ@ÿDÿ–ÿlÿÇÿq7¦ÿ…¡ÿÿÿ¡ÿsÿ¬™–ÿ³ÿ¨gÿ™þ’ÿ3ÉÿüÿFÿ ¼ÿJðþ“þÉÿ³ÿDÿ9háÿæÿ€£ÿ'ÿ ÿuÿ*íÿ‰ÿ˜ÿïÿO‹ÿÉÿÀÿVÅÿR0³ÿ‚ÿ¨ÿ˜ÿíÿ_ÿ˜ÿúÿÅÿÿŸÿÛÿ3yºÿ·ÿŸÿÀÿßÿúÿšÿüÿ5áÿQÿšÿ!¦ÿÿšÿÐÿÅÿÐÿ¬ÿªÿÐÿÛÿáÿõÿÝÿµÿwæÿpÿ‹ÿæÿÇÿøÿõÿÙÿõÿÔÿÿV£ÿÿÖÿúÿóÿÉÿ~ÿ£ÿïÿ¾ÿŸÿ£ÿñÿèÿþÿßÿÛÿ_ñÿXÿŸÿÖÿïÿÍÿ®ÿ±ÿ‹ÿ’ÿõÿFíÿ±ÿ–ÿªÿ‡ÿ˜ÿÉÿüÿÐÿáÿÛÿa¦ÿ‹ÿ¼ÿÇÿ³ÿêÿ¾ÿ¦ÿZïÿÐÿ¬ÿwÿªÿºÿáÿúÿÇÿÍÿºÿïÿÂÿÉÿIËÿlÿÀÿ·ÿÖÿ±ÿÍÿÒÿÂÿÒÿÛÿøÿóÿÉÿíÿ±ÿèÿÍÿ£ÿÅÿ³ÿÉÿÝÿÍÿáÿÛÿÝÿÐÿÀÿÀÿüÿ¼ÿºÿ¬ÿÀÿÙÿÖÿÂÿÒÿêÿäÿÅÿµÿÀÿÙÿøÿßÿÇÿÖÿËÿÒÿúÿËÿºÿæÿÐÿºÿÐÿÛÿíÿíÿÅÿÇÿ¾ÿ³ÿªÿ¾ÿÛÿÒÿñÿÖÿÔÿáÿºÿËÿÍÿÙÿúÿÂÿÂÿÉÿÛÿïÿïÿÝÿ®ÿÉÿÀÿÀÿËÿÉÿÙÿÙÿÒÿäÿÔÿÅÿÇÿÅÿÐÿÐÿÔÿèÿÒÿvtwm-5.4.7/contrib/vtwmrc/sounds/touch2.au0100664000015300001300000001414710237645271017361 0ustar callumfid.snd#DV"touch2.wavFµJˆ5ây"‰+ýHú&÷ÃöóPñªòFö$úûþ¬éý*x'ñH×öçæÕ;ÇÏÀ ¿vÆÓ äÆú¸k)n<¾IõPrP¿JZ='*ƒãøïÝ¢Ãv¬°ú˜¹›ø©U¿×Ýû¥¾0H«]|h¾hñ`üS·@ö(k ^í5Ï©³Ø›óŒj†ûŒ_œEµ#ÓåõÌå9€U^iÈuÝxÿr3aƒIU, ‰é ÆÁ¨ 8‚g€ˆ°šõ¶Xײü 4@¶[bnkxwbm[ÞCz&â– ¥Ýœ„øƒæ²¡_½=Þ—H%Dé]nQv¹vlnYO>· ¢ˆß]¿)¢åàƒ3„Dú§,Ä£åƒÈ*"H–`âqwt.ffPB4næõ¯Õw¸+ ¤’ ”£Íº×ÖÉôï.«EaTý]n^{XaK98N!à îòÛÇÞ¹×±v¯­´òÁZÓ èýG‘!¡/I8[<;&6V-¹ éäóìèêàÚ$×bØÍÞ æÜïB÷yS[„]"Ç« ”<ÿ-ûgøeöúõåõö5øúhüÀÿ§øàfìþIýúþB ÷5ÿy§ÿWÿ0ý?õÝü(ûñôˆüã¹v¡÷§Þ‹òßÖøDî”ȯÿnÙöá5PW§ÿ òÒ!ùÙÙé‘ _óèè R(fçZæXþ·3Îü¥÷žp+eò-½€Ç'ôQ?ÅË"5ýZÕ,Ø ÷Œè#Ü —í?õû ߉Ûn'é*} ùñqü* vûPêføö!CðÓÚzⲇ=2âí‚ðµÆvõ øP*•ÖÌ,Ťâ­³!dk ¨" òëJÉìâ!A&ôòªìoñ!åòçòU"·)ñ“ùÚåŠ ýPæ–ó¡«ømãçõO1ÑŸúXô üÃl÷¾ýÝ ¡!Ûù®vÉP -4&ŸÄšóéÓKÞ†FFaóÒÚrð§·ôæìÕØ)þ)jîïLûr 2#ñ@ñ~ò ë‚çúèuF4ØAŽ àÑå Ó Ñþaü¿å~îVÄÈʼõÀ.8H! kè3ɉæ!$öþ~ØÐÝöT)³!„!•"ïVädwÀüÖÚsß3ôˆø»ïçú 6³¤öÛè¿ñ5ûÂqüóèÛ ÿÍŠ¬ÏØe"ÆAÆ*×£p ï™Ö}ã6) |éåØéøjŸˆõm [)€"ðü×å÷öÕ˜ Üó¿ákÝvâòêXÑ>Ü?f‡ÑÁÚ”bþÏåÝæUÇ1×ò¿)W1#\ ìZÒá)È'íž‚î Í´á; N`¶_šlÿéêjëË+#l÷«ÌiÓ³ò\60 z(<6B=ê–Þë®ü û Û ÄùÝÆžºû÷â;Do*þèÿj1óî߀ëL, 9ÿ á–Ûz)8Œô²Ø#54óOáüûÏEååÏÕë €ê"ß7/pí²Ä ßS ñYÌ÷¯û‹þÔçÔ±ëÝ+Ñ* Jùÿ 2 ÉáBÓ0ýæb×¶Éñ9)¹29fÿiýŸîÌñãy&2웿Ò1ûN‘#-1™<ãðÖòé³JÎ òß÷¢óõÏçÕ¬EB²: íîõ‰ }þýê®ïj ó†ß!烨8“±ïÀ…ƒ î³å?>'ÀZÖÍÀÔ¶þÈ')Æ K,ê!³â(ÀyãP4Ÿí}ð9ûòïÄã3÷o.+˜'#-ðcÉ ÀévÞÅþjUöDÓ*ÔÀ 4> 47 "óÇõSû¡:÷2úþÛÍáS·XÑï> :;¾ T)\Ú¹ÓÀíüÝËCánéœöçï|Q< ,plä›ò ! ðÂêñô)ò?êª÷'#< ì÷B ˜¸íëî´"ùý Æ#º¦á­‰7â(gÉ’7àYÇ2é×¾'ü¥ßbåÉýÿó÷ö¾£(_ÆùÏæ”ÿ<ù%è:ò…ûöí ÛVí! @”.¤øá1éÁv qkþ¿¸þ>åì×LåÐ…=$û‡Íõ’ñ+ñúã @ ÷và·×ûè§ ¶' ,ã?ö—ñ0õPþpMÛù–é9ã`ëÞþ ÔÅ¡ |ý#õò0øò [\ú^áÓìÝî 's/¥#y ÊøïðD÷kg :ózåäâÖïnä(çèÇõ’ïór£ƒëbبØVñ5§,'N SïœíJögH å¦÷çàç üT{æ>‰.öïîòþ†Û¬÷ÛÊÑ–âµ {(*ç õìí¶ò^ü¥R #}îmàfâ ô m{[ kü£ò»ñ4øƒ Ð>äÑÿØÝú‘?-$« û?ïtð)øÌ6 æÖö‡æmà`éß\úŒµ÷œò7ôL¾ iï¨Ù/Ô×ê†|*t(ÊûòÝðQø*‰ ™Õûtë]â!æõúeR9Õº dû9ñ"ñ€ý¨ºûãßÚÓ<ßÈã$¥+ ƒ ¿øúðó7ýÿ ‹´ò$ãâˆñJçx f þ“ó¦ò#ú †ºèLÔ]Õõóž,ß&n‘ü©î·î¬ø­ f?ùóèÞåTûlå³Tâõ¨ï^ò-¯· ÄôŽÛ­Òöåµ '¿(Ä óêí»òþ W "Vï|áêâçõo ñ¢£[ úÀñŒð¿ú2 ]çbÖ1ܧüÌ+ ëÔûHï¥ðeø³% ø¢éoäHí±ÿ4Ïà Ïô!ïsôÿÐ. Ýó…ÝSÙ;ï´T($œ ñî×õÆQ 6 _ÇïgäºérýÒ5ž×íöêðöð†þ×.ÿ˜å¢Ø äu"ý)O´•òÇì°òYûñÖ 4Aû"ïzçmðrŽý Öúòßí¯øMòÏ òï­âçV÷X'ä׈½áiíB÷7ö>éáøšè¤åÞ»ÿI #·kò÷Ø@êßþÄôÐ*ÒÝ*ÝFæ} Ž*‹þùïºêôñÊuö .<&ú•rÅè|ãs; Ó ­8ìQ. }ÞhàjêÊõ%ô¶åT–°›úWÕ÷ðªöýµý‰ÞëªÞù g,ÿ$&ñ/6ÝäšÑNëkÿ8!TÖÚ1 gâ@ÃáéïE …â 7+ uë”Ë+  ëö©þ¥ö§ª39ó¡Ó‰ù¡ö:óÜjül•¯ñ"ãØë؃âûÜÉ ²]óoØþá;öÝ^ùl9†÷CÄò— aÌ€èTûB!nõš÷/ðrà4  ùå)xõ£Ñ7.”û^î÷ûm]'X+Ëïqö ²*PñÇïå%ŒGç-ô×ðo «OçKÖçø´ò¯ã òé¼ósý«(ÑMÀàP»\jü*í¢ ‚ûå ÷ì§ü3Y÷…%U~ç?Ü)éá0‰áåzÿ ›Ô׊Þ ÿknËæb"Ö³ó_ ýºê,B2HüÀâÞéçä°"iîuù&GCÒƒÒÝ*ãL úö˜q œÓüûìãôÏ„fð (ô­Ú+â´åÑÆ,°æ¨îFy ã Ôï{Óˆ Ùoô4T6Úß/ûùåüvêT,‹‚ؽçºñ²~'â)⛘ ï ñï^ͶtZùo ÚÌmäxáýþê« 1í}Ñ-»Þö×öo-nþúÞ]¥Yüú•á0ó'8 ¯Oë?Ѽ ›û ûBÿëhÙîóÛña ` ‰õrøXÞçáò:}ô¾;·êçæ>ûX &§÷ÊòÂÔUòN¯Sú\ñg=\£åõéLýþ½ ¯÷Sùi˜ñä.Úõÿ‚ù ºôø®¾G÷)äðæüîóm@û ØÝäc —^ô_DëÑäø0 ¼¬þ}ò¸ýÇóäÖññ` ïû¡óç *¨äxæéýóü Eùû žãã×ײþR öxöµV§÷žâWîbºJfòåð)Ú»å| Ýbñéÿt²•î9æ÷  ƒýTôïóô ÔÕï‰DKûãóNM9§åç´þƒ »ø"÷‡žåZØçþƒHöõ»¡òøºäÈðŠÖKÊó  _ÜÝãU g8ñöüëì¨îÕãKö_ â2þ÷òE § ŸùëÖ‡í'5fÿjó ¯Dxéê*>áønöNrÎì%Û¢ûŽù œ÷õϼþç?ñN„õú´ (ß ã¸ lBìõbü %*÷?ä\ô½Ø´@õ+ü² [(÷÷Öò '—þíþ0ÿ­üý_|›´ÿEü©üá‚þ ÿù5 þúþyü…ümþáÕ~ÿeþ©ÿbþ9þÍÿ”ÿjÿU‰ÿÊþáÿþzÿ›ÿÓ Åÿ½þyÿßÿØýsýÔÿ˜þ—ÿ!ÿÄþ€ÿ½ÿLþêý¤þÿFþRþüÿÀÿ5þ6ý•þÇvtwm-5.4.7/contrib/vtwmrc/sounds/break2.au0100664000015300001300000014706310237645271017327 0ustar callumfid.snd#ÎV"break2.wavÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿþþýýÿÿÿÿýý üüêê îîõõüüññ ññ××óó÷÷êê÷÷ææîîøøääøøêêÒÒØØøøååÐÐÛÛòò××ÃÃááËËÉÉååããÑÑÍÍòò ÕÕììââîî ññþþ ôô ââääááêêóóööùù ((óó ææññ "" ááááññóóÞÞììááØØÞÞòòååóóææììÕÕÖÖààÍÍÆÆÝÝÏÏââããßßååììîîýýôôííÿÿûû (( ööççøøÉÉþþòòõõääããïïÕÕëëòòúúýýëëúúîîôôúú÷÷ õõýý  00BB$$þþððññååóóÉÉääööííççÕÕïïôôØØõõ÷÷ÚÚáá÷÷ïïééìì ëë<<00LL<> ññ!!úú!! ààêê$$÷÷ûû ññòòçç÷÷êêØØääÚÚ&&êêþþããÐÐååÃÃÂÂÃÃççÖÖËËÃÃèèÞÞ¼¼ÊÊããþþ##!!''3399EE44BB""GG00,,??5599ÿÿ òòååËËííûûõõÚÚééöö õõ4466 ÷÷ &&úúûûÄĽ½ÀÀÅÅééÞÞúúûûããÃÃÀÀúú êêççôôúúïïþþ ûûúúùùååññÖÖààËËééÞÞ ßßöö**99,,11'';;,,%%ïï ++++ ÷÷ìì÷÷$$ ûû ùùýýóóííøøßßññççóóúúééííßßÜÜööãã úúêê!! ÷÷##ææÖÖååóóððððóóððââþþóóÿÿÍÍååââÏÏÖÖÒÒÞÞßßÔÔôôôô(( ããûûòòïïôôÜÜïï ÿÿûûçç ** **""22èè++,, ÎÎðð ÞÞèèææõõûûøøÀÀ»»±±ÔÔÑÑÄÄÇÇææööýý!!,,<<;;**--%%þþïïëëííüüîîûûýýôôøøääààççõõÎÎÆÆññôôúúýýååööõõþþìì!!--""((úúÿÿööøøååìì÷÷33õõ ''##00!!øø××ÙÙÞÞ ççîîìì¼¼ÝÝååüüööããììÖÖ÷÷ïïââ,,((ññ!!$$õõýýííýýïïÿÿ%%óóòòßßÝÝÃÃÒÒððììááÝÝååýýöö ææ þþýý ""þþÝÝããöö íí::11--ïïþþýýÊÊãã((êêçç áá'' ññêê ýýèè÷÷ !!ââ÷÷ôô÷÷ððÿÿîî ++,,55 îîÓÓÙÙ ÷÷ööööÛÛøøõõÜÜààííääêêÒÒÖÖääòòààëëùùøøÜÜëëÑÑööííææõõùùüü ððññèèííüüõõ44%%üüééûû ((  ,, ûûøøôôøøïïþþééÚÚååÞÞÆÆùùÿÿææããââøø ÝÝùùÿÿ ûûùùööþþÿÿ øø øø""88'' ññììììùùÞÞÑÑ¿¿³³µµ½½ÅÅÙÙÛÛØØÜÜÙÙåå$$## -- ïï óóééççÒÒôôÓÓÙÙÜÜõõûûÎÎÛÛââøøððóóññüü÷÷ ((;;"" 11//))ïïøøúúÓÓèèøø××ÜÜëëööØØïïøøçç÷÷þþûûþþùù55@@))((ÿÿ ýýûûûûèèîî÷÷ììÜÜÚÚõõÔÔùù!!üüÿÿ÷÷êêôôääööòòææååóóååììÚÚÞÞèèääÄÄýýùùññììììïïÛÛääÌÌÇÇææññ   üüõõôô $$))::""++öößßóóÿÿîîýýýýëëþþ úú 00þþññ""þþââããáá //33""77 ççüüââùùêêÙÙååÈÈÏÏÄÄââÌÌüüååòòÚÚøøöööö**ÚÚööííüü ööûûþþåå ööîîûû%%++óóÿÿíí þþïïòòööùùûûððúúùùêêóóÞÞ½½¾¾¹¹¿¿»»ÓÓïïëëýýææóóòòÿÿ üüòòææúúññèè÷÷èè ""òòðð÷÷ââÖÖççùùÿÿýýää##  ýýðð55//1133AAOOKKKK(( úúúú þþøøõõïïúú&&++õõææÿÿùùÜÜééôôããççííââÓÓÞÞââõõÙÙÍÍççêêÖÖÞÞÕÕääõõèèååûûææÖÖ ííøøýýððóóääëë 11""3355**77÷÷ ììææýý õõêêééññÿÿîîëëÝÝææÔÔññÿÿôôüüãã òòññííÚÚØØÍÍÔÔÎÎââØØððññïïêêðð óó44  ññ ííææêêÞÞÖÖííââ ++ÿÿ$$ ææ ùù÷÷ÛÛÏÏááííÁÁææøø%%õõððóó  üüÿÿööýý ûûøø øøøøøøýýýýîîúúÜÜÝÝááËËÎÎÁÁÛÛÙÙÌÌää 55 ïï2244**!!ôôõõõõööèèûûââõõêêÜÜããÚÚøøùù22 úúýýïïìì¾¾ÕÕÁÁääÝÝææÎÎÒÒÐÐÊÊÒÒññööúú ôôîî 11þþ88)) òòÙÙ÷÷ÿÿúúçç ùù00""$$úú 55&& ôô)) ùùòòëëùùõõ ((ïï##ûûÿÿ ääùùïïµµÞÞññóóõõþþÿÿææÞÞÒÒÙÙßßååååééããóóßßÖÖôôééññÙÙññ ððôôóó&&))..## üüóóïïÿÿýý**ààèèðð115522;;66??%%##üüççöö ôô!!ïïÿÿùùÍÍÝÝôôããßßááüüîîêêúúòòõõóóððúúèèÕÕÉÉÇÇææèèããîî úúããÕÕããõõààòòããíí÷÷ ììõõøø  ììóó ææààááÎÎÖÖèèîî)) ððààããßßîîúúüüüü//++ þþôô((##,,DD%%ññ××ééââÒÒÚÚææÔÔããôôüü ððÿÿ ÷÷ ÷÷ ääõõ##ÓÓéé÷÷ååææùùääààééùùææïïííøø üüóóïïßßÍÍûûõõââõõùùùùüüþþããééóó ''÷÷þþ ""11 !! ððöö÷÷úúööííûûúú ááÖÖùùââððÿÿ**$$ýýèèïïèèääîîççßßÖÖääýýòò ååÿÿ ððÞÞøøþþøøõõôôóóââÛÛççññèèååââêêßßËËëëññÿÿÜÜóóññááôôÿÿùù ççèèëëØØòòááÔÔññÒÒää òò ####ûûææùùùùøøúúþþÞÞôôôôûûúú..!! ííêêòòèèàà"" õõøøÿÿååêêóó//ùùÿÿëëýý ôôüüõõ ÷÷øøøø-- þþññýýëëïïÝÝââùùææØØ ÷÷õõòòååëëîîûû@@  $$õõææ ññîîÛÛýý))'' üüùùóóààûûõõûûÎÎããééÇÇÜܽ½ííÖÖáá×ׯÆÛÛÉÉÉÉÚÚææ¹¹ðð÷÷õõÌÌþþããììõõ""ððññ !!)) //CC8811 óóðð÷÷ùùùùèèúúââÒÒããããÕÕèè÷÷ôô ÕÕÏÏÃÃÞÞòòüü üüîîÿÿþþääååÙÙììýýõõ ëëùùëëððôôÌÌÈÈííÔÔÞÞúúüüßßþþòòÕÕããêêÜÜôôõõïïØØÔÔÕÕÜÜËËÐÐïïàà$$**òòããééòòààÕÕòòÞÞþþ 33==!!11((77,, ÖÖòòôôþþ ööôôýý  ííÏÏÚÚÉÉÎÎ÷÷ ÷÷îî33ýýòò //PP!!!!@@,,÷÷òòàà$$ëëþþýýÝÝÝÝóóÚÚËËÍÍßßÙÙââÅÅææÆÆÚÚããÞÞééÍÍóóîîÞÞþþ22ûû''.. üüüüÞÞåå!!êêüüêêÛÛââááþþýý$$óóØØÐÐööüü11$$  úúððããèèóóôô þþÓÓÐÐÖÖææïïþþ // øø ççãã((6677 îîÏÏÚÚÆÆÜÜãã½½ááëë%%èèååýýÞÞ××##,,þþÚÚÞÞûûßßßßññéé ïï ããûûþþ.. %%øøïïÍͼ¼ÔÔÖÖØØÔÔóóúúððûû ÔÔÖÖþþôô$$""UU00LL..''22::11&& ôôëëÓÓýýòòýýîî ÞÞääííùù þþùùóóôôììýý÷÷úúìì ííââüü >>!!ûûöö ûû÷÷##ññôôïïèè÷÷òòûû÷÷ üüÒÒßßàà ííÝÝççøøÑÑùùååÛÛïï $$ööýý××ùùÙÙããöö ööþþüü''..òòôôÊÊééööúú!!555544--%%## ''9933 ** 55&&ýýýý$$'' ññÕÕààÃÃääúúòòññúú &&HH"" íí÷÷öö&&55öö ÿÿççééöööö÷÷üüÿÿþþôôùù&&??""îîââ÷÷ÜÜÈÈÏÏççííÉÉÏÏÐÐÝÝÐÐ××ïï!!55ýýýýüüôô!!22##&&ööÚÚÝÝþþîîùùìì÷÷óó!! ââðð ÷÷ØØááûûòòõõ ++00##77%%ëëõõææèèÍÍììîîòòææùù''++&& õõüü ííïïøø óóýý33ãã33÷÷ûûããéé ýýïï ûûÜÜúúÿÿÚÚçç ààîîééÝÝÒÒÖÖøø,,ññóó..%%55$$((//ùù íí××îîÞÞóóúú þþ ëë##++ÿÿ ÷÷ôôÿÿØØîîÔÔååÞÞùùúú&&ýýøø ððóóêêòòååÏÏÚÚÊÊËËööââßßõõññýýûûêêÉÉúú114499::èèÝÝÓÓÀÀÅÅããææíí  ÿÿèèààííûû ÿÿØØÈÈÞÞääôô))))ÿÿööÔÔääÍÍ÷÷ëë00óóêêõõöö ßß!! ÷÷ææôôëë ääüüûû ++ïï $$ þþééññëëää ââÝÝûûööààææÞÞ÷÷ããùùüüóóííøøììÐÐââÿÿ øø,,,, ôôþþèèþþ ååôôüü ÷÷ééúúææëëþþ//$$ ÔÔññááûû))÷÷ÞÞ ææããÿÿÈÈââ ,,  UU;; ))ùùììðð** ëëÕÕééõõ êêêêúúííëëÿÿôôüüîîûûëëããÖÖÛÛÈÈÇÇ¿¿ääÛÛîî ÝÝóóèèààÞÞòòóóëëõõÜÜøøûûòò   îî ööææîîààááþþøøóóúúüüýýûûþþÝÝææððÿÿòòþþ""ââ""îîíí CCêê55êêîîýýêêÙÙôôææ **--4433 66 ññ ÿÿëëØØãã÷÷ÒÒßßøøððÑÑÙÙûûïïèèûûää ëë ýýøøååëëïïööëëççÝÝþþ øøùùþþññêêõõõõ&&**ññýýññééÑÑ ññççÞÞññôôïïëëòòíí <<""  ((êêÓÓééèèîîÙÙááúúââÝÝääøøùùííòò ûûúúóóÛÛááññááÌÌÆÆèèÿÿûû$$ùù ïïððññüüïïÛÛääÝÝââØØððýý $$îîáá ûûññ ÷÷ììôôøøòòùùþþòòþþççôô÷÷ôôÿÿõõááààääîî22''õõ ,,$$òò ââööððêê÷÷ááúúïï ..ýýÎÎùù÷÷ÿÿööøøõõøø((ííûûßßââáá÷÷ôôääÏÏ 33 ççèèüüææÙÙÕÕÑÑÕÕ ÷÷ðð ææýý  ûûóó22þþ ýý ððøøîîþþùùÐÐææüüôôççååëë÷÷ççõõøøêêààææââíí""ööææààüüþþ îîïïááÂÂÏÏÍÍààììóóùùääÛÛááìì++++22 îîÛÛûû îîþþ**úúååÑÑááââïïììååøø##ýý++ííÞÞ !!** ..77!!øøþþøøääóóííØØÿÿîîòòïïééåå 44))øø ææîîõõññíí 2222õõ,,##ùùòòóóèèúúÅÅëëêêÞÞîîôô üüóó÷÷þþ õõááýý!!%%))øøüüüü×׿æööååÿÿóóëëüü èèééàà´´ÖÖððøø &&BB$$&&%%ÛÛççÖÖèèõõééûû++!!òòññòòèèÖÖúú ùù !! þþóóÝÝõõ ÷÷ññ55éé××ÖÖÏÏååþþååÜÜÿÿççüü ìì4411-- ííÕÕËËïïÖÖêêòòüüää þþëëÝÝüüííëëýýüü #### þþ ûûèèÛÛÑÑååùùëëðð&& ÛÛääÿÿïï÷÷ "" 4422$$))))þþããÞÞããííúúïïééÓÓÚÚôôããÝÝùùÙÙççööõõõõÜÜØØØØùùòòééþþ úúôôøøúúÿÿööùùÝÝîîëëððþþ 44 ++ÿÿÿÿ,,""ùùààääêêååååððååÓÓÞÞêê$$ ûûþþææØØëëììððññüüññííîîññóóûûððååîî!! 00 ,,ãã÷÷"" ùùíí ààÓÓÕÕååââççööüü((((99--ýýññêê ÷÷ððïïüüððôôþþþþççÒÒòòèèøøþþîîüüÐÐííîî99ûûÿÿûûüüææõõûûèèïïØØ ööééýýééññ $$ ðð÷÷ýý êêìì ììêêþþûû%%ýýùùîîõõååèèãã÷÷''úúééïïééîîøøííååääÜÜîîþþGG,,ããÜÜÇÇÆÆéé(( ééááÑÑÒÒããääÞÞ"" üüÿÿýýââææììììññ  ççôôÛÛòò ûûÿÿ÷÷õõëëùùðð ííääééÞÞêêþþ ýýúú,,îî ÿÿþþ õõ//ììææ//ðð××øøþþôôøøíí÷÷ÝÝ÷÷ïïÚÚÖÖóó ûûööééõõööËËÔÔûû üü îîííòòÿÿ!!ééüüùùååÝÝããÓÓáá ÿÿ ïïúúüüííýý ÷÷ååÉÉÜÜÙÙååïïýýÝÝßß÷÷ããèèúú !!ññùùùùääßßòò÷÷ññôôøøûûççôôîîææÖÖ ùùþþööööóó  ((ññôôññññþþýý ## øøííááÜÜççââÉÉîîññïï 11ÜÜõõþþ ##ããóóÙÙÙÙåå55 ææùùööîîññööóóööééîîÓÓïïûûøøøøþþ õõÿÿ  ÷÷ÙÙìì þþ÷÷ììððääüüÍÍééÿÿùùææÞÞóóÛÛààÓÓóóôô ýýÛÛóóôôññþþÿÿ  òòúúòòõõððòòîî  %% úúûûëëõõûûòòïïôôèèððßßððüü öö çç   ââââóóôôôô÷÷êêîîúúîîääóóÿÿèèææÞÞÐÐããÛÛÈÈîîééööõõúú êê   !!ááààõõÚÚççêêùùññïïþþññþþøøààóóïïîîþþúúññþþððîîßßææÞÞ++11.. ùùõõññÞÞííôôööìì óóúú ((%%ööøøõõÿÿððãã þþøøêêýýòò ééÿÿôô ûûññùùææðð îîÙÙêêññßßóóÝÝððþþêêüüõõéé ææááëëþþøøææóóýýÖÖüüõõ÷÷ôôññêêðð &&$$ââÝÝóóúúÿÿþþøøôôèèøøïïõõÿÿïïââÚÚððîîððüüùùììßßùù $$,,22ýýùùûûüüßßììòòÒÒÉÉííõõççññÿÿ ÷÷ææííééõõÎÎèèÿÿ ÷÷ üüëëêê þþ  ÿÿ ÷÷ÿÿ ÷÷ééáá ýýùùýýûûïïïïûûúú  ïïúúëëîîøøóóïïððúúþþøøóóççýýääÓÓÑÑûûððããúú ÿÿïïúúèèññîîûû ððøøøøòòüü çç××ààññêêììøøüü÷÷ùù÷÷ææÝÝééÛÛóóôôêêþþööõõþþ øøÜÜóó   þþûûßßííúú úúùùññééææññññ// ññúú ÿÿ ùù üüÿÿ  ÿÿþþïïääááááððÞÞïïúúÿÿèèØØèèëëãã××ùùúúòòøøøøÚÚóóüüþþããòòøø ïïõõòòëëääööüüõõ!!úú --$$ !!ðð÷÷ðð ììññÞÞââÚÚÛÛÎÎÿÿýýçç%%öö && ææòò  úúííææããééùùññüüýý))    ööøøòòûûããééåå ûûòòøø øøØØïïææÙÙääúúùù òòßßïïóóöö44ööýýììííÝÝëëõõöö ÿÿüüææ** ## üüþþõõëëææööõõûûíí ììïïüüþþýýùù÷÷þþ !!õõúúôôèèðð ôôÞÞ÷÷øøççÛÛþþ÷÷ññìì""'' îîää  þþ þþ  ééúúîîüüððúúùùýýõõúúëëôôèèêêúú ðð öö ""ïïååùùêêÝÝÕÕððøø üü  ÷÷ÙÙêê êêÿÿ ôôååííääëëëëÿÿüü÷÷óóúú!!&&//6644)) ààÓÓßßÝÝÏÏÔÔööõõûûóóççôôææëëúúþþõõòòßßððîîêêææ  þþõõüü ññûû øøééïï ööòòþþüüóóîî òòüüøøííûû úúýý%% !!þþ ññòòüü ööììøø úú  ýýÿÿääããÿÿ÷÷ïï ééîîþþ  ýý üüöööö óóýýññ÷÷ÿÿúú öö÷÷òò îîôôôôëëÙÙââõõýýîîýý ÷÷õõïïÔÔßßííùùôôññèèéé ôôôô òòóóúúþþïïïï÷÷öö**"" ûû÷÷ûûóóíí èèùùøøððúúòòþþ ÞÞÙÙïïööÿÿüü  !! ööÿÿ óóùùòòúúççßßïïþþúúþþ ÷÷ èè ééóóïïøø ææêêîîïïøøîîëëùùúúééííúúççÏÏóóùùûû úúôô ööóóÿÿööûûêêõõþþòòùùíí ùù÷÷óóôôõõþþ  ûûïïîîðð÷÷øø÷÷òòøøééóóùù ýý   ÿÿååèèððóó--ôôýýïïááééÿÿùùññííóóôôøø÷÷ññððúúððääüüïïààããíí úúûû ïï ååííîîûûÿÿ þþêê÷÷ññôôøøûûëëõõùùúúððùùëëììúú õõìì óóòò  òòøø÷÷ÝÝ÷÷ &&þþ%%  ççóóööóóþþþþããþþùùææïïõõ üüððääõõÿÿÿÿ  ûûîîúúòòøø òòóóøøõõ þþïïõõþþ ùù þþ&&ööúúññöö õõ ûûêêòòääèèÚÚïïààää ìì  ÷÷ííããûûððþþïïääööòòêêþþ''úú÷÷òòããííððÿÿõõïïøøôôææööõõøøîîóóúúÔÔââýý ííõõøøååööþþýýùùüü èèýýôôøøóóóóííëë÷÷ ííîîææÖÖììññ õõùùßßúúîîííÿÿííêê ýýóóððþþûûüü  ññççþþüüýýììþþûûóóþþüüííììùù ùù øøûûúúññúú$$ õõ ÿÿùù ûûúúèèþþóóÿÿ þþõõôôééññîîòòëëôôøøþþ%%óóóóööùùïïõõüüûûññîîííööèèøø÷÷ ïïþþ ææðð ôôõõ üüýýòòòòôôííãã ýýÖÖèèüüüüêê÷÷úúëë÷÷ööþþüü÷÷&& óóùù  ûû÷÷ûûûûõõññûûûûññóóôô õõùùúúööøøýýòòõõääééüü  ûûëëøøððüüõõóóùùóóùùííààýýýýþþþþûûïï  þþõõ ××þþúúööúúååóóççûûóóüüöö÷÷ ýýöö÷÷üü øøïïúúöö ÿÿûûüü ÿÿèèëëììèèîî òòõõÿÿ ÷÷ ûûõõ úúüüýýññùù ÿÿûû þþúú ööüüüüúúûûÿÿ ööõõôôõõïïììââëëððõõùùûûèèññîîääûûøø÷÷ ïïþþüüîîõõÿÿÿÿÿÿ üüúú÷÷ýýùùÿÿññëëùùôôþþ üüúúóóïïççüüððââ÷÷ééììõõ  ýý ööééúúþþüüùù""!! øø ùùïïååêêþþõõüüÿÿÝÝëëÙÙòò ññ  ööûûûûïïÚÚööööúúøøþþÿÿôôÿÿééññþþ   ææ øø÷÷ ýýääññùùÿÿúúÿÿøøüüøøììææûûÿÿüü"" ýýõõùù÷÷òòùùððççúúêêôôüüüüòò êêîîþþýýôôòòîîììýýööýýèèþþøøùùííýýõõýýþþ õõ òòõõýýøøììèèõõùù ûûëëþþ úúúúùùëëëëúúççûûòòññ ûûõõååððùù þþééììøøëëúúþþüü÷÷õõ!!ùùõõóóììýýüüøøøøõõÿÿ ëëììôôûûðð ÿÿ øøïïÿÿþþ úú##üüùùýýööøø"" ôô÷÷ùùééûûüüüü üü$$ øøòòþþììùùþþííùùóóíí÷÷ùù  ùùýýîîÿÿþþîî÷÷ùùüü÷÷ÿÿ  ððçç÷÷ùùÿÿééããööûûýýúúïïÿÿúú ÿÿ ÿÿññòò  éé ÿÿúú þþÿÿ õõîîýýööüüññýýììóóøøòòññýý þþûûùùîîððùù ööïïááððééÜÜááùù÷÷êêôôÿÿÿÿüüùùééïïÛÛääòò òòëëúúüüùù ýý (( ÷÷òòÞÞ úú  úúïïïïýýÿÿùùóóççþþ øøææ ÿÿúúýýììòòûûîî úú éé÷÷ ÿÿ þþóóììççúúññ  úúòòüüøø ööõõ ùùññêêðð üüââùùëëøø þþïïõõååóóìì÷÷  ûûùùêêõõôôååííýýòòââôôïïðð øø÷÷òòõõ ííëëüüððííûûûûýýûûÿÿþþ ýýøøýý ýýõõ÷÷ þþååññúúðð éé îî÷÷úúõõõõ ýýêêëëùùôôÿÿúúööýýóóôôüü ööííõõ üüÿÿûûøøééþþ ööîîúúüü÷÷üü ÷÷ôô ùùþþ ÷÷ùùóóõõ÷÷ôôööøøîîððññðð))## ýýøøþþ þþ ÷÷óóýýÿÿ÷÷ ÷÷þþøøøøúúúúúú ýýôôúúíí÷÷ûûúúååûûööóóþþôôããòòîî ûûëëôôççõõõõþþÿÿ  þþññôôòòðð ööØØïïØØðð    ýýûûüüøøÿÿõõ ûûòòøø úúîî  ÷÷ööòòõõ øøÿÿýýóóþþøøêêòòôô ÷÷ùùøøþþ ôôùùðððð  óóìì××ëëüüúúùù õõøø !!ùùþþôôôôûûûûúúýýòòôôóóõõ ùùýýþþþþððþþùùûûýýööööþþ  ôôææøøþþþþþþóóîîïïõõññüüþþ  ýýúú÷÷ôô ööóóööÿÿùùûûûûúú èèêêûûûûóó÷÷ôôýýþþýýþþþþîîøøýýùùÿÿööõõúúúúúúóóûû ýýööììþþüü üüúúééòòýýõõôôììúúòòööÿÿ  üü ýýýýòòóóÿÿÿÿ úúøø ûûôôùùüü ûûÿÿùùííùùùùýý üüýý ûûííííûû  ùùýý  óóååêêþþ üüôô÷÷ùù òòôôøøõõóóþþ úúþþùùõõúúùùüüõõííëëøøõõôôððÿÿûûýýùù  úúööõõùùõõùùüüþþ÷÷ììþþúú úúééóóüü  ýýôôððûûúúùùúú ÷÷óóììååïïûûþþøø÷÷÷÷ööûûûûýýúú ññóóýýýýúúþþ òòððøøÿÿüüþþÿÿýýÿÿøøÿÿ ûûöö÷÷ÿÿ   ùùööúúóóöö  ÿÿýýùùøøÿÿõõúú óóûûóóîîûû õõ  õõóóúú÷÷ììþþÿÿ ÿÿööððúúððúúúúùùùùþþýýëëôôýýýý÷÷óóôô ûû ûûûû  ÿÿóóòòôôýý ÿÿ ÷÷ííòòøøÿÿýýøøòòððññüü  ÷÷øøññùùÿÿüü÷÷þþøøòòþþýýóóííùùúú ññùùôôòò÷÷òòþþõõûû þþþþüü ïïôô÷÷þþøøýýòòùùõõýýøøóóóóóóþþ  þþþþøøþþùùôôýýúúÿÿüü÷÷óóÿÿûûþþ óó÷÷þþþþ ýý ýýþþ÷÷ööýý ððþþÿÿïïêê ïïòòûûùùüüýýÿÿ  ññññÿÿÿÿùùúú   ûûþþûûúú ûûüüÿÿùùòòòòûûüüûû ÷÷ýýüüééüüüüþþ üü úúööòòööùùýýÿÿ øøøøÿÿûûýýüüÿÿõõõõ óó÷÷ÿÿýýþþùù úúüüòòóóøøúúúúûû ÿÿùùííôôûûòòþþ ÷÷ûûýýýý÷÷ùù ÷÷ÿÿ ýýúúïï üüùùõõ÷÷øøúúüüþþúúøøóóòòÿÿþþüü   üüîîøøôôÿÿùùõõúú÷÷üü ýýððòòÿÿÿÿøøööüü  úúþþÿÿòòûûüü ÿÿ÷÷üüýýþþþþýýùùööùùõõøø ýýüüþþþþþþóóððôôýýúú÷÷ÿÿúú õõññ÷÷÷÷ùùøø÷÷ûûþþûûôô÷÷üüööøøýý þþýýúúýýõõõõîîòòþþööùùþþýý ÿÿûûóóõõôôûûüüýýððòòýý þþ÷÷úúüüïïññûû üüøøÿÿ ÿÿøøýýññòòôôððöö   óóííïïúúÿÿÿÿþþùùùùôôýýÿÿûûùù øøññõõøøýýúúÿÿþþøøþþÿÿüüýý úúôôüü  üüýýýýööøøþþööüü÷÷øøÿÿùùýý ýýÿÿúúþþýýüüööõõÿÿ úúûûþþþþýýùùúúûûööîîòò üüþþûûüü ÷÷ôôïïööõõ÷÷ ùù÷÷ùùûûûûõõýý òòùùúúøøööþþüüùùþþøøûûüüþþÿÿÿÿûûýýûûûû  ÷÷ûûÿÿþþúúþþýýüüùùüüýýüü ÿÿøøüüûûÿÿÿÿ  ýýþþúúôôüüüüÿÿòòøøýýýýúúööüüÿÿ  üüûûññýýòòôô  úú÷÷ûûþþüüùùððùùõõõõùùööþþøøûû  þþööêêøøüüêê÷÷ ùù÷÷÷÷þþ ýýúúûûùùýýóó ÿÿùùøøþþûûþþúúýý÷÷óóúúûûÿÿÿÿ÷÷þþùùùùõõÿÿ ÿÿÿÿúúôô÷÷üüÿÿÿÿúúÿÿþþþþ  ÷÷ûûôôõõùù  þþüüûûûûýýùùÿÿÿÿúúùùüüýýüüúúôôôôííýýûûïïúúõõññøøùùøøÿÿûûüüÿÿùùüüúúúúúúùùññøøýýûûûûùùõõ üüûûôôþþ÷÷ÿÿûûüüøøþþþþùùôôúúÿÿ ÷÷ÿÿøøööûûþþÿÿúúüüÿÿ øøúúùùûûûû  ýýÿÿþþôô÷÷úúüüúúúú ÷÷ûûûûÿÿþþüüþþùùûûööÿÿÿÿüüøøúúÿÿüü øøõõüüøø ýýûû÷÷üüûû÷÷ýýÿÿøøúúþþ÷÷óóûûüüüüüüøøøø÷÷ýýüü þþ÷÷ûûúúóóóóýýúúþþüüüüøøýýõõööüü÷÷õõùùûûÿÿÿÿôôÿÿõõûûûûûûÿÿüüüü÷÷þþ  ÿÿ÷÷ûûôôýýðð÷÷üü  üü÷÷ûûþþ þþ÷÷ÿÿûûûûýýûûùùþþûû þþüüùùüüüüÿÿþþööúúööÿÿÿÿûûûûüüþþööÿÿùùÿÿ üüþþÿÿüüúúÿÿúú÷÷ýýþþûûûûûûþþüüÿÿöö÷÷ úúûûÿÿøø ÿÿööööííööùù üüüüûûÿÿööýý þþúúùùÿÿõõ÷÷ ýýÿÿýý÷÷úúüüúúþþúú÷÷ûûôôööýýüüûûúúýýõõûûüü üüûûüüøøûûööúúýýúúõõ÷÷ÿÿüüýý ÿÿÿÿüüþþøøúúýýõõ ÿÿôôúúÿÿ ÿÿýýýýýýõõóóúú÷÷ûûøø÷÷þþøøýýÿÿýýÿÿúú  ÿÿøøýýþþ õõùùüüþþúúøøòòþþ÷÷÷÷üüÿÿ úúýýûûøøôôýýþþööööþþüüððööõõõõ üüþþþþüü óóÿÿ÷÷ööÿÿÿÿùùõõ÷÷÷÷ùù  ÿÿüüøøøøÿÿööùùóóóóýýûûýýÿÿ ýýþþóó÷÷üüøøûûüü÷÷þþÿÿÿÿøøúú øøôôÿÿÿÿüüøøööüüøøþþÿÿüüüüûûõõýýýý ÿÿýýþþýýüüùùøøÿÿüüûûþþðð ùùÿÿööûûýýûûùùþþûûþþÿÿùùüüûûúúÿÿúúóóõõþþÿÿ ÿÿþþööùùýýýýúúÿÿúúùùõõüüÿÿ ýýøøõõôôûûÿÿûûÿÿøøÿÿùùòòùù ññýýýýÿÿþþóóüüýýþþýýúúÿÿûûúúúúûûýýøøüü÷÷ûûýýýýþþþþÿÿþþ øøþþøøþþýý÷÷üüüüûûýýüüûûûû øø÷÷ûûüüøø÷÷ýýþþúúüüùùööùùýýùùþþûûüüúúüüýýûûÿÿûûÿÿôôøøûûüüûûøøûûÿÿûûøøÿÿÿÿÿÿ ûûüüúúùùúúûûôôøøýýýýúúøøþþûû÷÷þþþþþþööúúøøùù ööÿÿûûÿÿøøÿÿúúúúÿÿüüùùþþùùööýýÿÿýýýýøø÷÷ûûúú÷÷úúüüýýùùõõýýýýþþõõÿÿþþûûüüýýÿÿùùÿÿúúþþ ýý÷÷ññõõÿÿþþþþ ûûòòüüøø ýýùùõõúú ööüüÿÿþþýýûûööùùüüúúúúùù üü ûû÷÷þþüüþþûûúúÿÿüüúúøøûûÿÿúú÷÷õõúúÿÿøø÷÷üü þþýýùùüüýýþþýýúú ýýÿÿþþûûýýüü ûûýýûûûûüüùùûûýýþþûûôôûûüüûûúúûûóóüüþþÿÿüüÿÿÿÿÿÿùùûûýýùùôôüü öö÷÷úúÿÿüüýýþþóóññúúýýûûúúùù üü úúýýùùþþ ûûøøýýþþùùýý þþÿÿüüøøúú÷÷ýýûû÷÷ýýúúÿÿÿÿýýüüþþþþõõóóúúþþûûøøööûûúúÿÿüüÿÿÿÿøøüüÿÿýý÷÷ûû÷÷õõúúüüþþüüÿÿþþøøûûùù÷÷óóÿÿþþþþ ÷÷üüÿÿýýûûþþùùúúøøùùþþýýþþ ööóóùùúúþþúúÿÿÿÿýýýýýýüüôôúúþþþþúúòòúúööþþýýúúþþüüõõööúúûûþþþþÿÿôôýýýýÿÿüüÿÿøøþþþþúúÿÿÿÿúúýý÷÷ÿÿÿÿþþÿÿúúúúööûûüüÿÿÿÿûûÿÿÿÿ ýýúúûûÿÿúúüüúúúúúúüüööýýûûþþúúüüÿÿ÷÷ýýüüÿÿüüüüùùúúüüùùýýýýýýýýþþÿÿþþþþÿÿûûüüûûüüþþÿÿýýþþúúþþûûúúþþøøþþÿÿýýøøùùÿÿûûÿÿýýøøýýýýÿÿýý þþÿÿüüüüýýþþýýþþþþýýýýÿÿùùøøÿÿÿÿÿÿþþþþúúüüÿÿûûùùïïïïþþùùÿÿüüõõÿÿüüøø÷÷þþþþýýÿÿööööüüýýýýÿÿüüüüüüóóõõ þþÿÿøøûûÿÿùùþþþþ÷÷úúüüýýúúúúòòÿÿýýûûööûûþþþþûûûûþþûûùù÷÷ýýÿÿööþþýýùùýýÿÿþþþþýý ÿÿüüùùúúþþûûþþüüüüýý ööøø÷÷÷÷ÿÿ÷÷ññööúúþþþþþþÿÿùùüüýýøøþþúúûûõõÿÿþþýýûûûû ööýý ÿÿûûûûûûúúþþýýúúöö÷÷þþûû üüòòùùüüþþýýþþøøûûþþþþþþúú ÿÿÿÿüüûûÿÿýýûûÿÿþþúúúúþþõõþþøøþþõõþþùùþþùùúúýýüüýýýýþþùùúúÿÿùùúúþþûûûûÿÿýýüüùùýýûûüüúúýýÿÿüüþþþþ üüúúûûÿÿþþüüýýûûþþÿÿûû÷÷üüýýýýýýúúùùùùüüùùþþýý þþþþþþþþ ýýøøúúùùûû þþÿÿúú óóýýøøüüüüÿÿÿÿþþüüýýúú÷÷ÿÿÿÿ öö÷÷þþùùùùüüøøúúûûùùÿÿýýúúùùþþôôýýüü  þþýýóóüüúúúúÿÿþþ÷÷ÿÿ÷÷ÿÿüüþþÿÿûûüüþþ ÿÿþþùùþþûûÿÿÿÿ ÿÿÿÿ ûûýýøøýýýý÷÷ôôïïùùùùûûùùÿÿýýøøùùüüøø úúûûööùùüüüü ÷÷ýýÿÿùùþþÿÿüüýýùùúúüü÷÷ÿÿûû üüûûþþ ûûýýÿÿþþùùúúøøÿÿúúùù ÷÷ùùúúþþüüúúþþûûýýþþøøøøýý÷÷üüûûþþøøôô÷÷ùùÿÿ  þþ   ýýüüýýÿÿýýþþûûõõúúïïóóööùùôôøøññùù÷÷îîïïùùõõûû÷÷øøûûóóýýøøúúïïððûûþþüüýýÿÿòò÷÷úúýý ÿÿ  üüúúûûþþ þþÿÿûûûûÿÿùùþþøøüüøøýýüü õõÿÿûûïïôô÷÷öö÷÷úú øøÿÿÿÿ      üüÿÿþþüüûûóóûûõõüüùùýýûûýýøøôôùùþþõõõõööÿÿøøþþ÷÷ûûúúýýññùùüüóóôôúúúú ýý   þþÿÿýýûûÿÿüüþþýýýýýýÿÿ÷÷õõüüþþýý  ýýþþ  þþûûýýûûþþÿÿððûûùùþþùùÿÿþþþþûûùùòòøøóóôô÷÷ùùüüüüýýøøööýýùùööïïÿÿôôòò÷÷ùùÿÿ úú ÿÿüüüüÿÿ   üüûûùùùùúúøøÿÿññüüôôúúýýýý  ýý úú ûûøøûûüüúúüü   ÿÿ üüûûÿÿ ÷÷þþûûÿÿýýüüùùþþúúööùùóóûûûûÿÿóóúúýýùùôôÿÿüüõõÿÿøøùù ýý ÿÿþþ ÿÿûûþþýýøø÷÷ùùöö÷÷òòööýýýýÿÿýýüüõõ÷÷õõýý üüýýùùûûøøþþööÿÿüüÿÿüü   ôôüüýýÿÿýýÿÿþþ úúûûýýüüööüüýýÿÿúúúúþþùùþþûûøøûûùùøøúú÷÷úúÿÿýýýýüüþþÿÿøø  ÿÿýýúúùù  ÿÿÿÿ ÿÿ þþýýûûõõúú òòþþýýþþúú ùùüüøø þþûûþþúúüüööùùýýúúøøùù îîõõÿÿüüññùùùùøøüüûûþþ ööüüÿÿøøþþÿÿÿÿþþûû ýýÿÿþþùùùù ýýøøùùüüööúúþþÿÿøøüüÿÿööõõòòîîøøúúýýýýøø   øøÿÿùùøøûûýýóóùùôôÿÿøø÷÷ûûûûýýûûúúüüûûùùõõÿÿùùøøòòþþùùùùþþýý õõúú  úúùùÿÿÿÿþþýý úúþþýý ööüüÿÿõõÿÿýýýýùùóóóóüüýýüüþþûû üüûûòòööüüûûþþüüýýûûûûÿÿþþþþúú ûûýýúúûû ÿÿ óóüü õõÿÿ÷÷÷÷üüûû øøùùýýööüüþþøøôôõõöö ööýýôôôôÿÿúúüü úúþþÿÿùùúúõõýý ýýøøþþööüü úúùù  ÿÿÿÿþþ ööýýöö÷÷þþøøýýûûööýýýýùù÷÷ øøûûööüüúúüüýýÿÿ ÷÷ þþýý üüþþ õõùù  øøøøÿÿ ûûþþÿÿúúûûþþÿÿ ùù÷÷  ûûþþüüÿÿüüûûÿÿýýööÿÿÿÿôô þþüüùùýýúú ùùþþûûùù òòýýôôþþüüýýÿÿúú ùùûûóó ýý÷÷÷÷ ÿÿûûÿÿþþûûööúúûûüüüü þþ÷÷þþþþóóþþüü ûû üüóóÿÿýýþþùù ûûÿÿ üüôôÿÿ ÿÿððþþ þþýýôôüü øøýýüüýýýý ùùüüüüýýööýýùùööüüóóüüýýýýþþýýüüøøüüÿÿøøþþùùùùüüùùþþ øøúúúúùùþþüüüüûûüüÿÿúúúúúú ûûýý ÿÿþþùùúú÷÷ûûÿÿýýûû þþýýýýÿÿüüýýùù þþþþÿÿøøùùÿÿ ýýÿÿÿÿúú÷÷ûûøø÷÷úúùùûû ÷÷ÿÿùùøøÿÿøø üüþþýýýýÿÿýýùùÿÿúúýýþþõõ ôôùùøøúúÿÿýý ÿÿüüüüüüúúûû üüýýþþ óóûûûû þþþþüüÿÿøøþþüüþþþþ þþýýööúúûûûûóóÿÿþþþþÿÿ÷÷ÿÿýýüüúúýýûû þþÿÿüüûûüüýýüü üüûûøøûûÿÿþþûûýýûûüüøøÿÿ üüþþþþùù ÿÿùù þþýýþþûûüüõõüüÿÿÿÿúúùùþþÿÿþþþþþþÿÿøøÿÿÿÿÿÿøøýýþþûûþþþþüüÿÿ ýýûûÿÿûûýýûûÿÿúúÿÿýýùùüüüüûûÿÿúúýýúúøøþþýýÿÿÿÿÿÿÿÿþþúúýýþþýýùùööûûÿÿûûþþÿÿüüþþÿÿùùÿÿùùþþþþýýüüüüýýþþ÷÷úúûûûûüüýýýýýýÿÿùùûûýýûûýýþþýýüüüüýýÿÿþþÿÿÿÿþþÿÿþþÿÿÿÿûû þþþþüüÿÿûûýýþþýýúúüüþþûûýýþþùùýýÿÿøøÿÿÿÿþþúúýýýýúúûûüüûûúúÿÿýýûûÿÿÿÿ ûûÿÿüüûûþþýýýýýýóóúúþþ ùùüüüüÿÿõõýýùùüüþþýýúúýýýýõõÿÿ üüûûþþùùúúÿÿþþÿÿûûþþýýþþþþÿÿúúýýýýúúÿÿþþþþýýøøýýûûûûûûüüýýûûÿÿþþûûûûþþÿÿþþýýÿÿÿÿþþýýþþüüÿÿÿÿýýÿÿûûÿÿýýýýÿÿþþÿÿÿÿýýýýüüÿÿýýüüýýúúÿÿÿÿùùþþúúþþúúÿÿýýüü÷÷ þþüüýý ÿÿýýÿÿüüÿÿûûþþýýÿÿýýýýþþþþþþûû úú þþþþýýýýüüûûûûýýþþüüùùþþúúúúûûüüýýÿÿÿÿûûÿÿøøûûÿÿúúûûÿÿýýþþûûþþÿÿþþÿÿÿÿýýýýúúüüùùûûýýÿÿùùùù÷÷ýýýýýýúúûûýýøøüüüüúúõõÿÿúúþþþþûûüüÿÿÿÿúúüüýýúúÿÿûûûûøøýýþþþþÿÿýýÿÿÿÿ ýýúúüüùùýýþþúúýýþþúúþþÿÿýýýýüüÿÿþþûûùùýýüüþþýýûûýýÿÿýýþþ÷÷üüúúüüøøþþýýýýýýüü÷÷úúôôüüÿÿûûýýüü÷÷ ÷÷ýýÿÿÿÿóó ýýýýùùüüýýüüÿÿûûþþýýüüüüûûûûÿÿüüýýþþøø÷÷øøûûôôÿÿÿÿööýýýýúúùùúúÿÿùùúúøøûûÿÿüüüüþþýýýýþþùùþþüüþþýýýýþþööúúüü ùùûûÿÿ÷÷þþÿÿþþÿÿúúþþÿÿþþûûýýýýÿÿýýýýûûûûüüÿÿüüþþÿÿÿÿüüÿÿþþ÷÷úúþþÿÿþþûûÿÿþþýýúúûûþþýýýýÿÿüüýýúúÿÿùùþþýýüüúúúúÿÿúúûûÿÿþþüüýýûûúúýýúúøøýýÿÿüüùùüüýýúúüüþþúúüüþþ÷÷ýý÷÷ýýýýýýÿÿ÷÷üüüüúúûûþþýýýýýýûûüü ûûÿÿûûýýÿÿÿÿúúÿÿüüúúööÿÿýýþþýýúúÿÿþþÿÿþþÿÿýýüüþþüü÷÷ÿÿÿÿùùþþùùýýúú þþûûüüþþýýÿÿýýþþýýÿÿÿÿ÷÷ýýýýýýüüûûýýþþÿÿüüüüþþüüúúýýüüýýüüÿÿÿÿÿÿþþýýýýýýûûÿÿýýüüûûþþþþÿÿúúýýýýþþþþýýÿÿûûúúþþùùÿÿÿÿÿÿÿÿþþýýÿÿúúýýÿÿþþþþüüýýÿÿýýýýþþÿÿÿÿýýùùýýþþÿÿÿÿûûÿÿûûýýþþûûþþûûþþøøÿÿþþüüþþýýÿÿÿÿûûüüÿÿÿÿþþýýûûýýÿÿþþþþÿÿüüúúýýÿÿýýþþþþþþýýýýýýüüþþþþýýýýûûøøÿÿýýýýýýýýüüþþüüùùþþýýþþüüüüýýüüÿÿûûþþÿÿ÷÷ýýúúúúýýøøþþþþüüøøÿÿýýüü õõûûþþÿÿÿÿþþüüÿÿÿÿúúþþøøúúýýøøûûúúÿÿüüÿÿüüþþûûûûþþÿÿýýööýýýýþþÿÿüüüüûûüüúúøøûûüüùùüüúúÿÿþþüüýýøø ýýûûþþÿÿýýÿÿýýÿÿúúÿÿýýÿÿøøÿÿþþþþüüÿÿþþÿÿÿÿøøÿÿùùÿÿøøþþþþüüÿÿÿÿÿÿûûøøÿÿýýýýþþýýùùÿÿùùÿÿÿÿýýýýùùýýýýúúùùüüÿÿüüÿÿüüýýÿÿûûÿÿÿÿøøÿÿúúýýýýýýÿÿýýÿÿÿÿþþýýþþÿÿþþþþÿÿÿÿþþþþÿÿýýüüûûøøýýûûûûýýþþýýÿÿþþüüùùúúüüúúÿÿþþøøýýüüýýýýÿÿþþÿÿüüûûþþúúùùûûûûÿÿøøýý ùùþþÿÿüüþþþþûûüüÿÿùùúú÷÷ÿÿüüýýùùüüþþûûüüÿÿþþ÷÷üüþþûûüüúúÿÿþþÿÿýýþþüüýýýýüüüüþþþþüüÿÿÿÿþþÿÿýýÿÿýýüüüüÿÿÿÿýýþþÿÿþþþþýýýýûûýýúúûûûûüüüüÿÿüüÿÿþþüüýýÿÿþþþþÿÿýýüüûûÿÿûûþþùùþþûûÿÿýýÿÿúúþþþþûûúúýýÿÿûûÿÿýýÿÿÿÿúúýýþþýýýýüüþþüüþþûûüüþþüüÿÿüüüüÿÿûûþþûûûûüüÿÿüüÿÿÿÿÿÿûûþþþþýýþþþþþþýýþþúúýýýýüüþþýýÿÿÿÿüüýýþþþþþþÿÿþþÿÿýýþþüüýýþþþþþþýýÿÿÿÿýýûûÿÿûûûûýýýýþþûûþþüüÿÿþþþþüüýýýýûûÿÿýýþþõõþþþþùùþþüüúúýýüüýýþþþþÿÿþþûûûûþþøøþþþþýýÿÿüüþþýýþþõõýýÿÿúúýýþþýýþþÿÿüüþþþþýýÿÿüüýýüüþþüüýýþþÿÿÿÿüüùùýýýýýýýýþþÿÿùùûûÿÿüüúúýýþþüüûûÿÿÿÿþþýýÿÿýýüüüüýýþþúúÿÿýýùùýýýýþþúúÿÿÿÿúúýýüüþþþþÿÿýýþþüüúúþþýýÿÿÿÿýýûûÿÿûûþþüüÿÿúúüüþþøøþþþþþþþþùùþþøøüüÿÿÿÿýýûûûûûûüüüüüüÿÿüüÿÿøøûûÿÿþþúúùùüüÿÿûûþþþþýýþþÿÿÿÿþþûûÿÿûûþþüüÿÿùùýýÿÿüüþþþþÿÿûûþþÿÿûûÿÿþþýýýýÿÿÿÿýýüüýýþþÿÿþþþþøøÿÿÿÿÿÿþþþþýýÿÿ÷÷ýýÿÿþþÿÿÿÿøøÿÿþþýýþþþþÿÿÿÿÿÿþþþþüüþþüüÿÿýýüüþþÿÿþþþþÿÿúúÿÿüüúúÿÿþþýýýýýýþþúúýýÿÿÿÿÿÿÿÿÿÿýýüüüüþþÿÿüüÿÿýýûûÿÿýýýýÿÿÿÿûûýýÿÿüüþþþþþþýýÿÿùùþþýýúúþþþþÿÿúúýýÿÿþþüüþþþþûûúúþþüüüüýýþþþþýýýýþþüüÿÿýýÿÿûûüüÿÿÿÿþþþþþþþþûûýýþþÿÿþþÿÿüüýýüüýýþþÿÿÿÿýýþþÿÿüüÿÿþþýýþþþþþþüüúúþþýýþþþþýýÿÿþþýýþþþþýýÿÿýýûûþþþþþþÿÿÿÿüüýýýýýýüüýýüüþþýýøøþþþþþþÿÿûûýýþþýýýýÿÿûûþþÿÿüüüüýýÿÿþþþþÿÿûûýýûûýýþþÿÿþþþþÿÿþþÿÿþþÿÿúúüüÿÿÿÿþþþþÿÿÿÿüüþþýýþþÿÿûûüüÿÿûûüüþþýýûûþþýýÿÿÿÿþþþþÿÿÿÿþþÿÿþþüüýýûûþþÿÿþþüüûûýýÿÿþþÿÿþþþþÿÿÿÿþþÿÿüüýýÿÿþþûûÿÿÿÿýýÿÿÿÿüüþþþþþþüüÿÿþþÿÿÿÿýýÿÿÿÿþþÿÿÿÿÿÿýýûûÿÿÿÿýýÿÿüüþþÿÿÿÿýýýýþþýýÿÿüüúúÿÿÿÿÿÿýýþþüüÿÿÿÿýýÿÿüüýýþþþþýýÿÿþþþþýýþþÿÿÿÿþþýýýýÿÿÿÿÿÿþþýýþþþþýýúúþþÿÿýýÿÿþþþþÿÿüüÿÿÿÿÿÿþþýýþþþþÿÿýýÿÿþþÿÿþþþþÿÿÿÿûûþþúúþþÿÿþþþþþþþþþþþþÿÿÿÿþþÿÿüüÿÿÿÿýýüüÿÿÿÿÿÿþþþþýýýýþþþþüüþþþþþþÿÿÿÿüüÿÿÿÿþþþþýýýýþþÿÿýýýýÿÿÿÿÿÿþþþþýýÿÿÿÿÿÿþþÿÿÿÿþþÿÿþþþþþþÿÿþþÿÿüüþþþþþþÿÿýýýýþþÿÿþþþþÿÿþþüüþþþþÿÿþþÿÿþþýýÿÿÿÿþþÿÿýýþþþþýýüüÿÿÿÿþþüüýýÿÿýýÿÿþþÿÿþþÿÿþþþþýýúúþþüüÿÿþþþþüüÿÿüüüüýýÿÿþþüüÿÿýýþþÿÿþþÿÿþþýýýýýýþþüüÿÿþþýýþþýýýýýýÿÿûûÿÿýýÿÿÿÿþþþþÿÿÿÿÿÿþþÿÿýýþþüüÿÿþþÿÿÿÿÿÿÿÿüüÿÿþþýýþþüüÿÿüüÿÿÿÿþþýýÿÿþþþþüüþþÿÿþþþþÿÿþþÿÿþþýýüüüüýýÿÿþþýýþþÿÿÿÿþþÿÿüüýýÿÿþþÿÿþþýýþþÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿüüÿÿþþÿÿþþÿÿÿÿþþþþþþÿÿþþÿÿÿÿüüþþÿÿÿÿþþÿÿþþÿÿýýÿÿýýÿÿÿÿþþÿÿÿÿüüþþþþþþþþýýÿÿÿÿÿÿýýþþýýÿÿÿÿþþýýÿÿÿÿýýÿÿþþüüüüýýÿÿþþüüÿÿÿÿÿÿÿÿýýþþþþþþýýþþþþÿÿÿÿÿÿþþþþþþÿÿýýÿÿÿÿÿÿþþýýÿÿýýÿÿýýüüÿÿþþÿÿÿÿüüþþþþÿÿþþþþýýÿÿþþýýþþüüýýÿÿþþÿÿþþÿÿþþþþüüýýÿÿýýþþþþýýþþÿÿýýþþýýÿÿÿÿÿÿþþüüþþþþþþýýÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿþþýýþþÿÿÿÿþþýýþþÿÿÿÿþþþþÿÿûûÿÿÿÿÿÿþþýýÿÿÿÿÿÿýýþþÿÿýýýýÿÿÿÿýýýýÿÿþþüüÿÿýýþþþþûûþþÿÿÿÿüüþþþþýýÿÿüüýýÿÿþþþþýýÿÿþþþþÿÿþþþþþþþþýýÿÿþþþþþþûûýýþþþþÿÿÿÿÿÿýýþþÿÿÿÿÿÿþþþþÿÿþþüüÿÿÿÿþþýýÿÿÿÿÿÿÿÿÿÿÿÿýýþþÿÿÿÿþþÿÿþþýýþþûûþþÿÿþþüüýýÿÿÿÿþþþþþþþþÿÿÿÿýýÿÿýýþþÿÿýýÿÿþþÿÿÿÿÿÿþþüüýýÿÿÿÿýýýýÿÿþþÿÿüüþþÿÿþþþþÿÿþþþþþþþþÿÿýýþþþþþþþþþþýýþþüüþþþþÿÿÿÿýýÿÿþþÿÿÿÿÿÿþþÿÿÿÿþþûûÿÿÿÿþþÿÿþþþþþþýýÿÿÿÿþþýýÿÿÿÿýýþþýýÿÿÿÿüüþþÿÿþþþþÿÿþþÿÿÿÿþþÿÿüüýýÿÿýýþþÿÿüüÿÿÿÿþþÿÿÿÿÿÿýýÿÿüüüüÿÿýýÿÿþþÿÿþþýýýýþþþþþþþþüüýýüüþþýýüüÿÿýýýýþþÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿþþþþýýÿÿÿÿýýþþüüÿÿÿÿûûÿÿÿÿûûûûþþýýýýÿÿýýÿÿþþýýýýÿÿýýÿÿûûýýüüÿÿýýþþýýþþÿÿþþýýþþÿÿüüþþþþýýþþþþþþýýûûþþþþüüþþýýÿÿþþÿÿüüÿÿÿÿýýÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿüüþþÿÿþþÿÿþþÿÿýýûûþþþþÿÿÿÿÿÿþþþþÿÿþþÿÿüüÿÿþþÿÿûûÿÿüüþþÿÿÿÿÿÿþþÿÿÿÿþþýýÿÿþþÿÿÿÿþþÿÿÿÿþþüüÿÿÿÿÿÿÿÿýýýýýýþþþþÿÿþþþþûûýýþþþþÿÿþþþþÿÿüüþþüüþþýýþþýýÿÿÿÿþþþþÿÿÿÿÿÿþþûûÿÿÿÿÿÿýýÿÿÿÿþþýýþþÿÿþþÿÿýýýýþþÿÿýýýýþþþþþþüüþþÿÿýýÿÿýýÿÿýýýýÿÿÿÿüüþþÿÿþþÿÿþþþþþþÿÿþþþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþþþÿÿÿÿýýÿÿþþÿÿüüýýýýÿÿþþûûþþþþüüýýûûýýþþýýÿÿþþýýüüüüýýûûûûýýûûüüúúþþþþùùÿÿüüýýûûþþýýýýÿÿûûÿÿÿÿûûÿÿþþþþýýÿÿÿÿÿÿýýÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿþþüüÿÿÿÿÿÿüüÿÿþþýýÿÿþþþþüüÿÿÿÿþþÿÿüüýýÿÿþþýýýýþþüüÿÿÿÿÿÿþþþþþþÿÿþþþþÿÿþþþþÿÿþþýýýýÿÿýýýýýýÿÿþþýýüüÿÿÿÿþþþþþþþþÿÿþþÿÿüüÿÿÿÿÿÿþþýýÿÿÿÿþþÿÿþþÿÿþþÿÿÿÿþþÿÿÿÿÿÿýýþþýýýýþþþþþþýýÿÿþþþþÿÿÿÿþþýýÿÿÿÿþþþþÿÿýýÿÿþþüüÿÿþþþþþþüüþþüüýýþþúúþþýýÿÿýýÿÿýýÿÿþþÿÿÿÿÿÿþþÿÿýýÿÿýýþþÿÿÿÿüüÿÿþþþþÿÿÿÿþþþþÿÿüüÿÿÿÿþþÿÿÿÿÿÿþþÿÿÿÿüüþþþþÿÿÿÿÿÿÿÿýýÿÿþþþþýýýýÿÿþþþþÿÿþþûûüüþþýýýýûûýýýýÿÿûûÿÿüüûûÿÿýýÿÿÿÿüüüüüüþþýýüüýýþþþþýýþþÿÿýýþþýýþþþþþþÿÿüüýýþþýýþþýýÿÿÿÿýýÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿýýÿÿÿÿÿÿþþþþþþÿÿþþþþþþÿÿÿÿýýÿÿþþþþþþýýÿÿþþýýÿÿýýþþüüÿÿþþþþýýýýþþýýÿÿÿÿþþÿÿýýÿÿþþÿÿýýÿÿþþÿÿþþþþÿÿÿÿþþÿÿýýýýÿÿþþþþýýÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿýýÿÿýýþþÿÿÿÿýýÿÿÿÿÿÿþþýýÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþýýþþÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿþþÿÿýýþþýýÿÿÿÿþþþþýýþþÿÿÿÿþþÿÿüüÿÿÿÿÿÿýýÿÿÿÿýýÿÿþþýýÿÿþþÿÿþþÿÿýýÿÿÿÿþþýýÿÿÿÿÿÿÿÿþþýýÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþýýÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþþþýýÿÿþþþþþþÿÿýýþþÿÿþþÿÿÿÿþþÿÿþþþþþþþþþþýýýýÿÿþþþþýýþþýýÿÿþþÿÿÿÿþþÿÿþþÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþýýÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþýýÿÿÿÿþþýýþþÿÿýýþþþþþþÿÿÿÿþþÿÿþþÿÿþþþþþþÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÿÿÿÿÿÿþþþþÿÿÿÿþþÿÿÿÿÿÿþþÿÿýýÿÿÿÿÿÿÿÿþþÿÿþþüüÿÿþþÿÿþþþþýýþþÿÿþþþþÿÿÿÿýýÿÿþþþþþþþþÿÿþþÿÿÿÿÿÿþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿþþÿÿÿÿþþþþÿÿÿÿþþÿÿþþþþÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿþþþþÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿýýþþþþÿÿÿÿýýþþþþÿÿÿÿþþþþþþýýÿÿüüþþüüÿÿþþýýÿÿÿÿþþÿÿýýüüÿÿýýÿÿýýýýþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿýýÿÿþþÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿýýÿÿþþÿÿÿÿþþþþÿÿþþÿÿþþþþÿÿûûÿÿÿÿýýÿÿþþýýþþÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿþþÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþþþÿÿÿÿþþþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþýýþþþþþþÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþþÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþýýÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿþþþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿþþÿÿÿÿÿÿþþþþÿÿÿÿþþþþÿÿÿÿýýþþþþþþÿÿÿÿÿÿþþÿÿþþÿÿþþÿÿÿÿþþþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþþþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿþþþþÿÿýýþþþþÿÿÿÿþþÿÿÿÿÿÿþþþþÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿþþþþÿÿþþÿÿþþþþÿÿþþÿÿÿÿþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿþþþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/sounds/touch4.au0100664000015300001300000002707710237645271017371 0ustar callumfid.snd#.V"touch4.wavÇ`¹œ¸¿JÌRßK÷.õ&›<(KTnV¾Q9De2äñÈ>¬uš“Ù–V£sºuØH÷ÅÀ(]<'RìbtfmbYW˜F1Y»ùtÜ¿ ¥Ã’lj͊Ė««’ÇGè k/KŸbqëy#wiQ×5HxöÓù³b—H…Ó€„‹’ì¬B̯ð|15bPáeör“t”n6_ÇJ/H ï¾Î½°L–Q†o‚\‰°› ´ûÓ×öõK:zT2f[põs˜m&^*F)¤ éÆÉ_«ü”{‡¦†ŽŒ ¼ºúÚ"ü(:¶T eóp…rªj¡X ?9#-öæëÇÁ¬³™gÓ‘NœÀ°7ÊWè“Ñ#¤;4MLY®^ì\RkB,Ô¸û5âÌüγ§°õ´›¾™Ïâñö¢ š * 3’8¿84r, F|9öëEãJÞÝÞ¥âPèSïÞö¡ýã\ š)3†ÇÚ ±XÿÑü³ú´ùÉøËø×úKü ýgþÎþB$Àå?lÿsÿB^³&RáϨ8åO Óÿ…ÿ_þâþþýÆý·ý ý¦ýÂþþé]ë¸éªÌ±?,þöüðû±ûmü5üvý~þqQönieDÌýúÿ ýÝü©üCû«ü ýcþ;ÿ .βËsd^è(Íþðþ|ÿ ÿFÿLþïÿgïYÿã2ÿæþÿýÝþ`þ¹þŸÿjP ¨ÿÀÿþùÿ‹,&½ëÉþXýý¥þ¿ÿ°|ÿÌÿŸ„ÿœÿkÿyÿÿ‰ÿxýîüüœþÁÿÏÿ€ÿåÿ§þÃþ;ýðþ^ÿèþÜþ<þyþñþ±þýÿÿ²VkYÿ«þËýMü†ü¶ýcþ4ÿÿ:ÿ¼ÒÿÅþ‘þ‡þQýþýçüÌü°ý«þ‚ýËþ³ÔGÿ¨ÿŒýõûßúËúHûWý*ÿ B8<ãÿo][„þþþý3úÇúû4ýPþó”ÿåþBÿ-PþÝýNý=þzÿ‰!º® •R‰ýGý#üÒûNüNýÿÿž ÿÂÿÕ9,Û⟶-\ÐÊëýüBþ8J÷¡óüæú÷ýaþx†@‚è—ÿœú¡ü©WŠŠ-85†þ!üÍÿ8ý×ý2oüõúÚkÌÿ¯ÿ«ÿ ÿR?ÄCüLûM#'ûâþý EJ ÝèHá^þBÜ ÚôþõÀ;ò©ÚÌï"nW©õø4=\éèÚûùIð ÇïïÌ#5þGâÍð(9} DöE'šzÝ ºÜÔIÌáCC íýðøÖ*æäá¼-ýŒéí÷£òßÙ$ãnÑ+Â"\Àòzßø3ðõòòüèÚ×yòq.b6ƒ[èóëæþ‚ñÀûþH8íšÆ/ÎÔòi(cf'ƒüÝŸÌîFH á–çyé/í¢äï.ë()zßïlêì Öªóëè#ù+ó«àUï‰/Éãô§ôðý· ÿôÑ'VW̳ýß½Å3~"’ÄÀxçÐåIØ‘4é Þ"údOð4ô¼/à Cùïëõÿ— ‚ú[ï ð îÕêaé"î³K@4Óù|ÛëÍ—&û ßÕ æÝWÁ‰×>G%¤(€ 柮ÓÌÉéöÌ#çÄïÁÖåçÿ9 áAä!ép¬Yî…Ùç÷Ûó÷ïå*_2ã[ïë‘ööÿí¿ÿ¥ ¶Yù±¼`µªòX18²¤ S;Kæ¼Ù#𛈔¾ßößë'áúzôñC':ãïêçg¤Ê”ìßÜà€éùY C&+B,sëýÍæ Nå ° j7Û²Ëhé¦.(*©h NmôÕfÒ£j%à ¯ÜoÍvï!‚ ¯õx sü/êøa é Í„àíû©Á{],y. ãâëôf´ßõàë½-Ι¥Ho:î ûð¸éfß\õj ²ò^׺æ“¶#þ øœ³$à ‚ë[ì2¾ ,ÿ(ÕÈË9Øãõºtû*…;„Ó#É¢õ V·(÷ÕÿQ÷fÚ×jüï,Y….üÖnýÒïà Ž¹ðó̵×\ö68$ÏùØéöºë+a'/ƒÏ ¿Zäs§K ™K-Ô*3üÙÙjÞÅ÷Iê1ù¹ìñöãÕÉ£ìú-xD¢(¦ýöîBú íö éÖõ¨ÿ"úxêÛ¬ø³-œ+üAóÜVþ¹ædðW$ëölÇQÅå7P,]#M"“-™ ¼Í5Ê]ø^C%÷àêR÷Rü¹ìðíú +$ñ.X†ùæô÷ ÎãÞuçx7ä†ÍŠç„& CÏ%QÿðôùøÑMþ6ô ·$l2Çä½.ë4ÀðO&!ƒõQÕíà2o72ïàHôaôdè†'0Ç:¦iíMä ÿôßþì ìñÛòUëFèé Ë8U.dýîûñ ùùé9ûRp’â#¹{Æú#+Ë4F(÷€ÑÓAyôé=Û|ïD…ý[ûE ""B&o zìð¤ Ô Øð0êõ’ó±ßKÛ˜2­>…>ï+àïóeЀü˜F´õïÜ>ÚôßÞ# Db ­üSñÐí.ðŒÿÚ LXê{ؘÝòù¹",3(ŸˆˆôPóúù_¬û–ð¨ä„ãƒð­Y_ ©÷¬ògô\" œó—Û:ÔÙë>0.,¿(òOí¸ðÜúÏ 0ÿîãôç´ûqÓ< üªò›ð€ùý ðû}à<ÓÞˆ½%Ü.4 ‡ µõÜìñÔýìü a…õ²ç1âžîñ-§½t \ý ñ¶î™óÄÆ• îÓØzØAôæ.ƒ&˪ýœï‘îåöö& š÷„æLßäé=þÂg ‘÷¬ð„ó­^höÛ·Ó+å %‚(eº(ñVìäó’ýºë Õÿ°ïŽäjåüöÙÒ7oJúñ“ðWøB >¯ÿ…ä2ÓÛÛáý)!,ö!ÂúÁðìòú&Ø ýõIæQáÈì®Üó€2-'õëðjôì‡O ï­ÙÖòî,È(÷&ÞqQò°ð÷Ÿ E îüÛíˆäç‘ùÁ9{z©ØùñZñˆüê‰Kü©â¹ÖvâOw%a+©‰ øìïSñ°û"h „`ò¯æòåŸó1¼ r¶1ôÆñžøà E~éìwÙ9Ù£ó·«(Ý"Y¾ü.îî÷‹Y º ünìœäáë»ÿ›ä³LŽõæð«óÕr€÷ñà ×@çu ’#$Þ§óEíØóßþ{ š Ð ómèè®÷N &©ÙøñcñÕú) ¼’ì–ßäŒýo Ü ¸ùkñeóƒú—ßúÁññîóôªÿN ~ & þ‹û5û"ÿ*sÿû5ø}÷ªûå ‡ ¸§©üÚüûþqÿþ’ü[úGú¬ûÐþJÆupìn%ÿ-ý,üäþfþ¼üžûûQüØà²¥žDÿ¶ÿ(þÈþWýßþ7ÿKŵn‰·m5wlÿXÿâVþ…ü±ü'üNþòá.jcð`3ÿoÿTÿâÿqþ þý½þ”?= ¾6~uàþþý£þ"½äăÿyýêþ#þûÿÂxoÿØÿ–ÿßÿ¤]G|¶-gWÿþfþÃþåþý$üÀügýIÿ7àäMo*ÝþÙýæþþùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²UL w½à‰ùÿÂÿ,Ü&Gÿìÿá'ƒÏÿ­ÿÒÿ©ÏÅÿ}ÿý€~¹ÿ9üìþÚ¹.ÿñýiû ÿ=ƒôþ‹÷:ýbΊömùf/ b×ù1óÎÿq ª«ý×ðËû\:ûó7õf¨T úïÀüh  áÑî4öñˆeÞóïñ£ü· ÃýæîT÷ èéï±ófÿ±š i÷…ï·÷__ ëèî®ó¦A èósòküÐ<üiñLôÅ /Ýyò)òåF æöêñ³öŒ a7Yó¹ñŠ|² Æ÷"ñTý3 9ïü÷ó6òTôöö+îK ßyú§ð7÷ïKÈõ†ïþÕ| fùîí=ýS BÃýðôà(å÷oí¢ÿš * ZýxíÁù‘{LóKñTÿªGsú‚ìû0 ¢€ îˆõìû<Vöï-ûÇ¿ Ýþÿìæøaé Ëñdóìÿ¡ Rúîþøç ‡ Pî©õÜ0 Jô„ò”úÑ  þ8ï`õ" n “ðLò¥þ‹& —÷Íñ6õÄ  AÖðÌò/¦E Úô$ñÉúõ!ü‚òò‚ v¸Aó"ð!± w7ø(òF÷º 9Qô¯ð¢æI OöØï.ý yûºò:ó#§P7÷)î_| ÓˆúÑïPù 54ÿØô3ᅤ̃úì¯ýt $ÿ-ð‹õ¸5®Æ÷‹îRÿuH ýÚìÊù«©ÿ—òò—ÿôë#ûíyûZ  ëòîöE5¬õ|ðEû@O ¹ÿíq÷yïñô[þl@ çù¼ð÷˜ a ïCôÎö¡Æónò4ùÍ‚ 0üºïðôG Å ªðÎò·4 ¼ Œ÷1ñüöf Ç °<ñßñÌu  Ÿôöñ“û« üËó~ôó3öañÁ£ M vúIó1øéÖ #ö ôyØ ˜„ú&õö¹Ý $þQú ý EÒyüÿû*Æ=4þgüIÿÈÚ'ÿÿ•ó9‡]ÿ‰ƒ7©’ÿ;ÿ·ÿä|ÿµÿzÿtÿÊ@+>ÿ³ˆ8lÛM ¯§tÿóm ÛÿÿCeBÿçÿ¸ÿÓ<Rÿâÿè&*lœZÿñH%ÿ®ÿ|ÿöÿúÿ‡þÑþÆÿ ÿ4þÃþOþ’ÿOÿæÿÊÿNÿ>ÿô¾bÿoÿ2ÿ£KdÿùÿZÿˆ 4þãþÇÿO*ÿoþxþÿ|Aÿ±ÿnÿsf°SÿÅÿjÿäÿ±ÿ¸ÿþëÿ ÿÿŸÿ“ÿ«ÿ8ÿoÿÊÿü ÿ|ÿòKätÿÈÿÅÿÿ›ÿ²ÿ|ÿè.ÿÿµÿÛ$ÿÒÿKÿVÿ’ÿÈÿpÿRÿ7ÿcÿ«ÿœÿ‡ÿZÿµÿáÿá @mΨ¼Ž}> ÿïÿÕÿ¡ÿÿ–S,påxn³úìÿõqæ£ÿïÿœÿì_ÿŠÿVÿjÿÂÿúÿùÿxÿhPÿ_ÿQÿË*ÿ»ÿþòÿcÿàÿ–ÿ%ÿ$ÿÏÿêÿþíÿÿž-ÿcÿ+ÿ±|ÿÇÿLÿ×®‘ÿÒÿ‰ÿù„6ÿ¡ÿbÿ‰ÿ«ÿîÿâÿ¬ÿ£ÿyÿ²ÿúÿˆÿÿ’OÿÒÿŽÿøª¶ÿþÿ|ÿFÿÃÿÛÿèÿ„ÿ,ÿ^oÿéÿôÞ®ÿÉ9v)ÿ`ÿe†!ÿ\ÿ»cµJÿ´ÿálÿÁl«#-èÿúHgéÕC#Ê´HÿûÒnÔQ <O=ÿáÿ´ÿ›ðÿ³Fþÿºÿr)‡MÿÎÿ³þâœË\ÿ¬ýŒ~‹öÿü¬ýqqx#ý.ùoVk…þ¶ö«ý+ öÿ¥ö<öŸ{ ¨úù&ñ å Ïý+ï”ú]'¨ódñåå ùlì{ü  " íçõB÷/¶õ#î2ý4å þëÁ÷Ø ß ð2ñ³þÖè ºúoíÓùA¥eWí+ôLØ¥ ó/ïÄúqß ÒýÌí;õA µ+Uï£òza u÷~ï§öÖSjDî{ò_z ¶ò%ðÞû;-™ûÉðoô ‘Ññ&ñ+á£ö˜ñS÷ÝjLÿçñ#ðO¿» òwî„ý Qßø‹ïÓòÄ Ø".òîrŸFöhï5ú ïýÀòðhƒAôÅìÿñ ÎùÓï*õB£b+ô톼 rù,ìmû7 Š<þMðžðËÚçF÷)ëþ H{ýHìó÷I?ã\ô4ï)·Ê öüë:ûG 5´î®óø¦mõö˜ì›ü=@ gÿbë?÷1A‡ññ5ýùÎ ¨û‹íUø² CÑ¡íØôpÓ0 Áõ,ðbùøq ëÿÏîõ.ûÿ_ð|òýšc „øüïhõ. Á„>ïLñûŸ. ‰óÜð®ùg‰"ýµðoòq «Mkñúðsµ÷¸ðåõ{ BÖƒñtïU¹ ¼ ôZïXûI •Çúïññð˧hôí÷È upøEð6÷â œÿþô6ïÎÃØ 9÷²í­þŒ X¶ü™ñ­õ\÷NöÑí÷> `û&í¢ú í7óñnóAûùçìfý’ ºDÿ…î¿öãÎ]ôöWïtþܤ ýæìNùz2©¿ðÇó¥_Vù¸îú^ Ê `tííöˆrN*óþñûdÿ ÐýÓínõÛ ³[”îÇòoÿ¥ã ¤öªïö€' ÎÌîYòj©‰ …òð¼úž+$û,ïÏñò —´¯ñï“8PÁöïðnõÙ eø5ò2îñk: ôôúíúûà ÕûŠñ ñЕ­{ôLìŸÞ åyù@îžøp }³¶óÕï¦Ò÷ ÊøåìËýÕ G+þOðëõj RöØíÏÖo 3üÜí^ú¸›|õòîò¹R")úfíNý$ Ö‰äîröÈVõ‚ð{þ#¼ ­þÎí¶ú %Wpñ(ôÈ Pùtï°ùÈÆ i.íÏõjÖeó ò#ûõM üíï5õ— (q#ïâòôºå ¦ö“ñ+öë ¯ SÜïÆñ ‚ ·ò4ïóû `ªúzð|ò žò…îÓ ÌÃ÷+ïÇöª µmÿ±òîF`0 ¼õóì±ü· —ûËð5òT+¯Óõ[ì]0 øsúqìÙ÷üƒ}ò»ïsuš ù}ëÐüÇ -Êÿ"îÖõ;;höˆîdþÚv ýÂìgùF7riñ5òó¯sÔùôíFú| S.bí)õœÉ’Aôñü~ ’þPíÑ÷L d""ïðóÁg  ýø6ðø–i íDîPóÖñ 6òñ1úÚÊ ‡û+î÷ó g1ð ðýpc GöFñ÷b§Âñ~ñD©ü 1ô{ðjýS ˜wû-ñÔó —eóòî^½ |K÷ïøŒ jnÿoó7ï¼Å\ $÷&ìÜþ* OMü¸ð¬õA¼÷îÙ¢_ íý?îÜúü 2ïôfó%VÌû î)ü³ {¯mðDö÷ÉòÕ÷òjþ« É lþpòüÞ d´öŽú7Š iãü„øÇÿKîµÆù§þ¨üÎýõ…ËÿŽýÎÿªa‘ýÃÿwF%\þÌÿQÿ-ýÿÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÐþìlj¥¬ ˆ ‘$>UüÂ÷Ë÷Xúý¦ÿ>œ¡áMÝ™ÿ0úÚö*ôg÷5ùƒú:øRö²øþµý÷û :%­ Øûû' öñö´å¥ÓÃI¼J¿õËÊÜð)Ó 2cDN¡QÒNmD@4wÜwì.ÑĹJ¦œš) ‹´$ÐxïI A"Q4K‚`)f‰aIW…H4^§ÿ³àgý¬‚šÖ Ž£–C¨ŠÂÍá*¯"É?X‰ltrThåXS?×!ÿKß0¿@£Ê޳„6„tŽ.£aÁ¨ãZÖ)]H‰bXt-yõseNQ¥6ÆVöŽÕ‰·çŸøÒ…‰s—œ¯&ÌHí*p0ÀM#c¶rúØ2’õr÷`õ)J劦·‡ý¹3ç4› J"Y%wþûϺÐc÷CT!ËüeÖ[äönôjè²\!Áí„ÀKØD0« ÙªÖ§òpÿ4®¼$['ÀñìÞªÿ.ïî×騛ñ3öé‡ñ±>Ù*ÔüÉè7ïQû¶.ÿOLÒ´Ÿ%ÂMîKe;9¤;ÿøNÓCØ<þ†î“ï‡Ñê:¡ ©ñ…S)ê-é¨â/ì¨<úhá¦Ûöàí·ýÄo:àM¢ÇϧȜó3= ÈÿÔá £ðÃÄÑ÷(©:'(™ €)íì¿:Øm¶*Ÿû©ÈåÍ"ÿ6G &¿ ìî×ágÈ(’ÆÊãÀ’ä ÿÅܘ$ŠBN2úüóÜ9â}ó\œ ¿£uÍ-¥ÅÖW/kU7" Bþ¼ dáŽá¡¨ ,éãÑoóî,À#+ø^þ9" $¬ý(ÚBæ\w„óËËìÈÛ.) l)p<ßE² ÚÄoË|ÿ5u <öèõmÿ‘í¢Í ×£ ‡09Ô! þ2ËDïèÇ›èû¶—‿ÙÕ\?H"{6›‰þËï÷æÙ j.¨¼_½‚í¸¨Y;"©9Î&`ídÏhÝþúy[•ô9ðÐøÆÕ¤Ã;þ2F˜RÁ'Û÷–ìù·Ðé æ_ù@M÷"à ×ß ?"&¡õTûë]ðÚ<óU#Ø úãØ¹:ÃûîXá2ª&ž/v5Áù†¸tÈÕ!Å?ïæ¼÷@õmâúíÂu/õ5¾þóSú*{ôêÔ­íV&¶×¦ÄÚð8©Iëºø#ó¨øÈþöüðw™+€ùzµÉ½‡ø˜! £Lù0Ø|åÞËÞ?û5²ãnÞzó¸ètâÛAŠ@µiå䳕ˆõÑç9íÊódñ[åÕçìWCJ%Èñbñò â;òæƒd(ßÂÏ;­¬Ë‰ Z9ü6íI1sïÂyÙŽv&&ß]Üö ÿÌöûxô.–*énëçû:G¥ãŽèŽø»îšÕ:ÝSOG¿CJaä@âüc ¿ûóM¯é|Ò[Ú.ýo)V#˜Ú ãùµï•ìmòÌÛ¯ÿ[à=ϤÜsÿ#N3©*c}ø;í6ï÷&b»üêßáéó. è<¯eôôìï…󧈬çâÎúÍSìq}6@11Úîgë òšÿõ  ›ûzèŠÝñâÿúk‹ j CÞ eùï%íðü N÷ùÚËÍvÜ=>.55%q ÕõÎë/ñ±ÿ 4NïÁá%Þ£í Ù#„“ÿòêï-õ=y+ç Ï]Ð×ój!Z5¬+<ÓýëêìL÷)º È ønäòÜVåwþ†à"K Ò9ºõí#ïzÿnÍ€ôQÕ@ÊŠà 5.É0ÊNŸòXì.ó~þ’  /ÿªëÚÞ%Þ£ñÅ ´z Ò@ ‡û´ð2îWù%²KìàdËÉÓ ø¥$q4ò)JÊø¡êKìí÷Sg `±õÂäŠÞeém©C!øw£ó¢î‚òÕ&v áîÓÎÐèá£1K0”ð;ìBôl ò  üKç—Ü6àôÚû!G¤ õøÇï îMúÚ#?7ßõÍ:ÖÙþ['Î3˜$­ pó{èíŽùC÷Ý©õnãËÝté®ad"ÌVÿÔð"ë©ò_úi ýï7ӑͪè²Í1q/:hïÞí'õ™ H EûŠçÛãà ÷‘u_  Ì÷lï„ð¡þ ,þžÞ2ÎÁܨe+„3ù#» ñçpíÆû ;áèóâÝžì.ù+"¢äüdïëçóQJ 3êéÑHжï?M0T)³þ•îVîø-ýö ÉûÒç¾Ý&ãäûM6>ïÜðØêhîëeðù®ÜóÒ~ãZü'Ÿ+ÃÆðò†é°ï.ü; ¦ôåºâÑñ Â Û „ù@ðÜðÍù› ç¡&éÔÖ5ÙŽ÷l7+!Ó ïùÚì ëNõ5$ š I¸ðèèMêËø" kí\þòðíšò=ûçvýâöeò|õçŸ v ¡ ý~úòøqö1öùýoÿ²ÿÖÇó‹ôW³cþúwùüúÎù|øùmþ³ 6’ möÿGûfø~÷ïù–üúÿøAW}§ÄM ¿Âoû–øaùû¨übýjþü‚Tû¦Ùe'Pþ½ü÷ü€üóý£þ¸ÿÑG ÎsG±MþüýˆýHþé~Èè:ÜYߪþ·üÊûqû¼ýs9¶î£/`³ö0ÿœþ‹þHýmüLûþýsÿjŠ(¹ªþ»ýûÿ0Uwÿnþeÿ±@ÿüýÀýqþuÿÿ}ÿ¯ÿhÿù5þ½ýŽþ­ÿíµ'þkþËM>“#ÿÖÿðÿ¨ýõü@ü–þ  ÿÖÉâ€-ÿÜTÜ•þ¨ýNþšþóýÑýmþ@P1®ÿñþÁþ»ÿî5¬L¹ ÿîÿ­ÿõ2ÿ™ÿ<ÿhÿò)ÿÿ ÿpÿþ¿þ{ÿøTGÒW@–~z4ÿÛÿpþÏÿ´ Ã>veÿîð‡ó<ÿ È´6A»¦ÿ?ÿ`ûEP|b™ÆJ5ÿZýÕýþ¼¹Ž4ÿ¼ÿ€'ZþÅþ:þKþþcþþ2þQþLþmþÇÿyFÀîÑrÿÑvtwm-5.4.7/contrib/vtwmrc/sounds/chime2.au0100664000015300001300000005002710237645271017321 0ustar callumfid.snd#Oô+chime2.wavÿþÿüÿýÿýÿûÿþÿÿÿþÿûÿýÿüÿúÿùÿûÿûÿöÿþ ÿóÿô ÿÿÿòÿþ ÿôÿï ÿýÿêÿû ÿìÿê!ÿûÿ×ÿó(ÿØÿÑ7ÿúÿ¿ÿï>*ÿÒÿÍ-FÿßÿŸÿûc%ÿ£ÿÃ]hÿ¶ÿj«ÿXÿ¯’yÿ†ÿU5¾ÿQÿΨeÿqÿe^°ÿÁÿ6Ô=ÿ7ÿ‚ª¸ÿ…ÿ!2ÿ ÿ}IJÿgÿ!Z ÿ ÿ±×tÿ6ÿ?œÿµþÚÿÿ%ZþæÿHòÿiþ¯KKþ¾ÿXÿMþÑcDÿêþ¥ÿ¯=˜þÛÿðnÿþIÿì¡þ{þí;wÿ/þ3µyþ…ÿM€@þâþPˆÏÿéþ'ÿ¼óñþXþDÿÿ\ý¶ÿêWåýÝþW“ÿ"ý·:WýñþþÛvþiýÞÞxÿÜýiÿ”©Eýšý²—àÿkýÿ°µ ýTýù)äÿ ý9LÛRý þÙ¼ÿýâýi‡CÿüTÿfµäüÙüâÐÿ/üÿ‚Žýý»¸@þiüOl¯8ûÆþŽ!üýûü¿qÿkûþëçùüû'·ÿû.ÿÑü ûìüãBÏý°ûw lúrýüûïúg8OÿÍù°þA®¥û]úžå0ÿLút/CÃù¿û÷ùVü¾ú(1@Sø&üÚýŒúúøù%?ÿ>÷ý‹{ùú£ú9gýûøÿò1÷”û ˆƒúÝ÷ ´ =³õ<ûC úXöw± ÑÿOõqý³ oøüø“[vüõœ² mõ–ùtù Mù4óúï „ÞòÚù¬ øÍô¾ ¶'ôý— â$õ=öÝ— Yù×ò]™ 8ñ‚öé V hø:ñŸWdèîÏø: ÷"óòu{þoï™ü£½AòôÆ [(÷üì¦Âq\ìÄó×±ÿ÷ìY¼ ì¨÷èÆyørÿ¦åè“þ\û# Ѓåî:êãéA ©‡¯òú6ØdâèÿûÔ*A¹†ŽÞfå5çaèÞ¶ø#ãxô-Ï5×— ¯ýn6é)²žšÑ:ßì{æU*×r]%×Õ*ïçÉÙÏX†þá>=0ùr ɾòÖ¹óâòÂ?š,N›¿Æ`Û±ÓÖÒ‘0ì¨:ã/¡àCú©·¾Ï: 5ü¶US8¸ôÙ¯ÌPÒÕ‡;!(\:w6²ÑèéW¹1Áõ%õ V1Gbð› 1¥‰³îôŽ×¤Té7Nr5¦QÙÁTÀtJÿÌaƒJcßøýQ™|¸þúŠëÆ^?;—· ß§dÄhÑ‹ÅæV°*9Q¼G˺ëNž–²‹›a.S¾þ}:žö­Ÿì]ËŽ^‰X–LeرdÒL ˜¤+9oa$g4éãùÏ“÷…8ðíÝdh~pX1×U¦”Æð´±±ÐMÑ0 lš\ Ü,ÞtˆGCøŒýKv9jÆ3£#¦œ¡±»£ÉLI³Q”_`JæØ€Á‹ºžýeÿmõt=ŧœFä0Æ¿Z¶K7mR‚¹>Ø©ž¤ô à ÐVGe}ö«Ã©^úvÝ ]qN'ý;“®»Är¾À³X<˜sPAM߀õ©²/ Ñõ-_ªI (=žˆÉ×ÍoÊ`CÃ&>?¥<ìÒRêØ·'È%+ Q—I2ý |µ|ÆÑë<Þ1;×(” M)wƽèÉeÙÙ&Ó$?Ü@AíË¢½\ÌyaóüDí1?±K¿)д×qßï4Y(n;i4å°íóÅFɽ X99ü £½õÕ–í¥áÁ:º!a+Ë*lã ñ©Øè× ¨0,¡(ïý wË Úþþ¿è0‰b¬"‹ÖôïèJâÕ# ¼Ï%Œå×ÚC °ï0/)] ô8Øoí1é‘ë†Â¤ñ+ò÷Þ2ߎ±ý„$—çzWá¼ð*ôðRc$Åpì™øçé‹êþؤtü· é"ô˜üäúè˜ † þÊñ—øìò ÷5 œøØPûÿóD÷Žªþ;~iA¾!ÿÊÿ³þ2ý¯ÿ¸ÿ£×3R2ü¡û–ý•üíˆikýý¸ù¾ø,ÀÿŽU'‰õû÷vüÁûL à /O øÃùüö‚ôXƒN ) }û¡ÿÌð ò³ÿý9? à ñWöfô§óÛ =ª> (ø“üçêÒðiÿ{ýù tÛíÖñò¦ór% UjðlùˆåGéÚöþ•9ûÀ Fæ"íÊõ-ñÁÏÖìèöÿá±ä¸ Âÿ`#RüUÜ6éuùmøá!ö}“âíLéjèë°ÙP‹ðjýcÜúè€Øþn(T¦ê †Ú¯èLëìÀ¡ 4ë¹öá0å&TR$³=ù†ØÚIàsûGïo"­{ \Üðzç'æîq Û%ìÊó«þøØÞåýîøc#T= J +ß]ê#ï êàd8\dícø¨Ý™äÀ…f!ÇýÿyýÞËãëùSî, -.!"Ãå"ð]ß!ÜŽÔ_!n#ø^ýÞÚ¬Õ‡úÉô$@' T™àÖìå³ä¨?Õ& Sógô1ÕÒØ>ý_ÿ )Ö%ÒO sà<Þrç¥ìm|"£XñƒèÍÔïÛ^ÿ Ç), É kÝÃÙoõ2éª#‰å ¿ãÍð:ÝDÛ9 J9#Q)»ü¿ÜåÛºýªñD'«!Q#¥ÜÚæãƒÞ_¶ ™#¸"pñfû؆܂Uû,I"1¡êÑöæJçÞæG ¬‰×é‚õ‡Û¾ä ¯!)%nþ†  ÙCâõîÒ³anàÙòçáðêß T$$sõœðÙ‚â ùøï(ÑY 5 @Øœãç ì$ £a%Š!(ï%ô\Ùà܇êŽ&&¯ý¸ dÒ£â§ó7êÂ)ŠÉq°êãõwãárË$"æó‘ùÖ4â‹ÿì«'œ ðÜûö’ëœæ¯ª™`!ÎçøÜÚܳ ïö-qš ÀØLìíéêÌk!´ ïÅñ“Ú&ÛA^ý!*ò÷ ­Ú¬ì8ðÖëç"HðdNå^ôæÝgßÑ ÷þJ#p"úí0Û~í}úß÷r#-Åt×åòÁå‹îè ²õ;ýøãBìMûµ&ã õöáC÷nížéTQ¯Ãò‰“êGêwÈô_%w°÷fá7󸻿»+, ˜¤âHý¥ë—é,þE"Qô Ûïz—ò['Á Á Á áØï¯ê.ê/p7‰øõ/ÿñàžê%û¾½j 7 ¤áÁî%ì%ðì¯=¶FöQü æèiÖýI"·é¤ÛÁñsï‰ö V ø¦Õìlû¸ê;öƺà î ´ñ0ûÌÚFïÍýþ° Î å-îë²ñãë_øšvNÿô™÷PÞûèaþ?ÿ…óï WíîX÷8ï7U Á?òkøóîväÄ=ù¼*ýë 4ëÿðŽû™øü_+d÷8îâè¿é³]d^Êù ééä¡ôü6Où)òÂíèæèNG §)!6ý˜ýcè¨ßúþ:ý¹×$ÖSï$ã òä­ þ] AçïfóéÒåäZÁZ!*ÿòÐé²àÎû±õ¬ R ÌRíïä-ðÁß*n¸#¼ü™ùGè4ÝåýD:'±àñ[Ý:öߺ öè,ßû¶ùLö¿×åÿa º'ûÊ `ïÌÜ"þ°ë âJì 'ñêóø ã? JÕ÷Ykèß ÿ…ðûʉ DÂîyèÐïZä ¢QÄ%¦ùýóåÙ—ùÌ÷¼ä#â pðÁêIùäRÕ 5$hï'ý¼éhÝÅ8÷Íõù)¢å/ñ2ü*ëß©i¿HîVÿ›èáäi ^û d{ýu @àÊååýÉìò#áêª"ËãÏþåháÏßú0uób êæŸåãˆí 6‰¶!öá¸øÃõYÚØ\õäµ?åpà+åá3ï³" ù|ƒÞúï à%̶c IÞ^ûñàÌÚíöŽ+Z"+ù†ŠØ‡âDÿfè3%¾ ®Ýiîëì|Ü\'ü(óŠäÞ1ñô7­"‰SïàMÞ…ñßQÊÔ(Þé¹õãå²Ù²Œž$!)þ *Û'ÚÌøçp"eøkèë2èFå|àÿE"Ú*.ýÕÿ¿ß:Õ_ø'ñåT"ó¶ ñÔé`ì¼èÁ“ò6ÿ õ¬å™àsû<ú™nb Ð Úçî~íÃñ¢ùµ!L¯þõÿãæ4úU;<Œ RŒçâüíÞë ‡œ €õùú;Üqç0öSÿNðé Ð ‚çèðfîjzÀIï¼÷áwæ5`ääåü&܇ë%ööùÿ °]½ ãŽúñé9òdÄZ¬ï¨þ{Ýçê Áõ&\ó¸ðߨö³ôºíÒ!  ßùÍàèë‡ÎôT'aöTÛ[ø´vé'Iû‹ ¹ ÖÜhõè€óvãøMè %éO üâXùföm(Vÿà ×;úþòƒïw!lý¥® Mê]þÆéïžÃøçí¡ö •áÔóúÕë—\î UÿïB2òBò·Øûi° ’öm çV÷J,ì¼oú²Z ÓäB—ë÷öÖËö„Ò .ú| ¶èHû_ÿTóéÏ é¦úêï0ñÉáÿ"C÷h çVð=¸ïÇ× ø¬ìüÚúCêTŽÿ5?û)Gòþëéð6 ˆþ‹ëøzõ˜ï$I‘/é÷_î ñÑV÷ñ> ªº ÏìpôTôØîr„¯k«ùþ±ê íŒû½ DšÆ\ôëTø¥î^ ›V s ùQÿköÛå7Ôø w(û6 Úð3æÔý¾ê+ Ì×þÕbðYøÛù7ê©â Ö¢óšÿÉì€å¼¶öø0/ ‰óNé5ûŸê5 « —ó9öÒòÙåi ¶åiŸýrþÙîcã3ÿZõ}LÍ`ï¡î¿ó æC  )ùÛÿÓò8à+HøS§© ÞôaèiùdäI d c­öiùÑñ’æòÚÿ‹„þì 2ðËè2ðþÀgîìñuñmâH ¯P3bÿ…GéÏåìùÈòaÅ zëï¼íÛäy¾õ“ú î8åN2îÔ ËÿÑkêòøsâܤΠ§Œìéœí½ë0 "ö$9zùæuã‡ðÒþŒéÀVù ™*êo÷Ïðë  Nö…$äuèeú6înׯ |ëaøÿìñêêÝÙg…öÒêåií×åòŸ#þÙ ôã3üçõ}õÍó` |æCòÁý[ ßÿÓYà+ïøSóG© ÞOèiû½äIñU cô­nùÑ$æòí¹ÿöH„Œ 2íè2ø¿ðê½Àûþgñu¶âHòlPö¡b 9G½åìýEòóµÅÿÀz–ï¼üÕäyò„¾ýד„4åNöFîÔù<Ë€k hòùâÜñ³ÎèŒ1œtë0ôoö$õ(z,uUðÒûòéÀúÇùô*ö÷Ïý=ëü¾ …N$þgèeû)îný£¯ÿã|ûLøÿø%êêÿVÙÁ…Àêü3í×÷;òÿØ# ô¼üçûàõüçó| |‹ªþ¶òÁú±ý[ù ßýÆYåï™óGÿ8 ügOƒû½6ñU¢ôü,nû $ú³í¹üköHÿýŒêí4ø¿þ)ê½ÿÕûþ5þõ¶Fòlšö¡þù 9ÿ¡½ŸýE¿óµýÿÀöÉ–ýüÕbò„'ý×÷;„ùV4XöF Fù<ýS€ö¼ hoùóñ³ú–èð\1ÿt Qôo¨õ(õÐ,ÿpU0ûòaúÇðOôôDö ·ý=èü¾ýð…íöûóþg Âû)^ý£ñóÿãö6ûL ¨ø% vÿVûqÁôÀ6ü3 Û÷;ÿMÿØô ü¼cûà«üçøz|ød‹fþ¶ ú±þúùô×ýÆýåß™ÿ8ø­ügøâƒ6±¢þúü,÷û û©ú³íük'ÿýüëê÷‰4vþ) ˜ÿÕ¢5ø8þõøIFþœšÿEþùù¥ÿ¡ýXŸW¿ÌýüöÉö[ýüŠb '˜÷;÷ùVö)Xé F býSüö¼îno÷Œóú– ‹ð\ý0ÿø QÚ¨tõÐWÿpùa0þÊa…ðOÿÝôDöö ·÷½èýð ‡íö”ûóö¸ Â(^ Ðñó±ö6õ0 ¨öB v¼ûqŠôû6î… ÛýøÿMZôêüñ½cñ±«iøznødqfõ’ û þú "ô×sýóÿßñªvø­ œøâþ’ö>±|þú ’÷“û©ò íù' &üëN÷‰ü/vñ% ˜ý¢ üø8DøIôþœõAÿE^ù¥óýXû­Wî¼Ì>üÄö[ÊüŠòÔ ñÕ˜b÷ Ïö)ûQéò¤ bÿ0ü rînÖ÷ŒöO÷* ‹íý0ÐøùíÚ÷–tW\ùaúþÊéO…úÛÿÝhöö ¶÷½ð$îe ‡ Ô”ö¸ï(ìÛ Ð÷± Kõ0öBôä¼õWŠ>û žî…üÉýø÷ ZQê æñ½Xñ±ô¹iýžnxq®õ’ï¥û ó™ " seóÿ÷Tñªí©vã œšþ’[ö>ñ3|úL ’ “ kò õcùó0 &íN£ü/û±ñ%öàý ü/Düòôï#õAüô^óû­õ}î¼ö®>©Ä ËÊüºòÔí}ñÕübÔ Ï 7ûQú$ò¤ôòÿ0ß r )Ö¾öOõÀ÷*úñíîÐÌùíùÞ÷–ü8à\Ñú¼éOÿMúÛgh% ¶Õð$þKîeÍ ÔÖþïö_ìÛþ]÷Z Kú^ôäúnõWq> žCüÉÿ÷ ¡Qh æú5Xöô¹1ýžZxþ®ößï¥ÿŽó™ o ìeö:÷Tô’í©Sã 4šA[÷¿ñ3üúLÚ ¿ köúõcöâó0„í H£ÿåû±õ>öàÿ ¿/üò÷ ï#úküô\Ïõôõ}÷þö®¥© ¿ ËüºõNí}ýÞü >Ô 7õgú$ö‰ôòöß s )ü9¾ô^õÀÿ,úñÎî>Ì÷¶ùÞþùü8à*ÑýE¼ü¼ÿM g_%ølÕôQþKþ¤Í 6ÖêþüJö_ü(þ]=Z1ÿÊú^ü=únˆqî Cýÿöù¡ý»hLú5öü”1ÿïZ þ”ößû^ÿŽý opìZö:þ½ô’úSþ< 4±Aÿ÷¿ø~üþÛÚ ”¿ |öúùðöâô¹„Ü H _ÿåõ>ü'ÿø ¿Kw÷ îúkù3\û6Ï`õô…÷þþž¥ýh ¿>äõNÿxýÞúí >ýE õgÿ¶ö‰ü\öþ s—ü9·ô^þàÿ,÷ZÎýñ> U÷¶öþùýþT*$ýEÿ€ü¼ÿá þ6_û£øl0ôQÂþ¤† 6ü êø“üJfü( =ï1úÿÊøkü=ÿЈ8îþ­ þ&ýþöùÙý»RLÚŠü”þ?ÿïþŠ ‹”©û^œýýFpû„ZÿËþ½;úÞþ<›±Ñÿ§ø~þYþÛ˜ ” |ÿÿùðù¤ô¹ü¡Üˆ _üµü'ü1ø“Kcw…îû—ù3þBû6ê`&…ý þžù`ýh >’äÿsÿxú½úíÿ ýE˜ (ÿ¶ÿxü\þþ(— ·›þàþ÷Zÿƒýñl UÉö÷Ëýù‡þTÆ$ £ÿ€/ÿáù+þ6û±û£i0w¨†ú.ü Ôø“ Qf× ógïúxú $økÅÿÐùª8ú6þ­#þ& °þþkÙö„Rÿ"Ú ¸ŠGþ?óöþŠö‘‹½© #œúÊýFô˜û„àÿ˨;ÜÞò ›õŠÑ Ú§€þYûø˜ï û–ÿÿœù¤íü¡ö¸ˆôè üµü1þÏ“ôµc«…*û—CþBîóêñ|& ‡ý {ù`ö îè’{ÿs$ú½âÿ ë˜õ•()ÿxMþ÷7(íÿ !›øþ€ÿƒë l÷oÉ}÷Ëù‡ô´Æí £g/^ù+ÿ‡û±êSiýÈw¼¨åú.éSÔñ` Q_×Bóg÷Oúxéš $ÅWùªÔú6ê!#ïú °ûþk:ö„øVÿ"ï ¸]G9óö¿ö‘︽ý³ #âúÊ Fô˜óˆàõ±¨NÜò õOõŠéÁ ÚŒ€ûø¦ïì½û–õ‹œyíö¸óGôèêy  þÏVôµç{«õx*hC îóð…ñ|ôÛ ‡{½öú—îèñ{X$ÿâ,ëôàõ•ùš)†MË÷7øíÿ÷,!Rø€µë ö1÷o÷_}  ô´Sí ÷agü0^ÿ‡^êSúÇýÈ÷Ó¼'å [éSÀñ`úú_§B ¬÷O6éš÷KølWÔÔ¥ê!úšïúô‹ûú: ÿøV·ïõÖ]ù©9 ¿ Ðï¸ú1ý³ñóâ F¶óˆ5õ±î¦Nù-õO “éÁ÷yŒô{Û¦ 2ì½?õ‹ùNy ^óGŽêyóO õœZV Cç{ú2õxô†h ªð…’ôÛîc÷š½îú—¾ñöÀXéûÿÑ,íôàzùšð†÷ãËÁø'÷,ôÂRî;©µyö1ÿu÷_ë¢ úÆ ìSÎ÷að9ü0ò‡ f^‘úÇùŠ÷Óë™'U [þÀPúúëe§òÇ ¬;6t÷Kö]ølêVÔ'¥Púš©ô‹íêú÷O ÿv·$õÖôMù©îu « Ð<ú1øpñóæ¹ý"¶15-î¦ìŠù-ë_ ¢ “÷yþ/ô{çôÛýí 2”?ØùNæëâ ^_ŽdóO÷½õœè]Z_ C.ú2%ô†ëÝõ@ª’üîcóì÷šé×îоêöÀ©éûëMÑýlí,z öðëI÷ãðÁ'ôÂ÷tî;æu©Ðy=ÿu¼ë¢êÐúÆõìÎð9óò‡í f U‘xùŠýLë™ç…UøÝþ¨P Hëeð;òÇó2; t ö]ø·êVé'qP¨© {íêíq÷OôDv D$ àôMõÿîu쎫œ<qøpƒæ¹ï'ý"ó¨1 -¾ìŠúbë_ï² ¢¡°þ/ÿçôìÛýí÷”@Ø}æ÷Oëâð<_ndš÷½è]íþ_ùs.í% žëÝôõ@òàüzóìÿé×ðDÐü²êd© ©ëMôŠýlóû,õ öjëIû~ðëMù³˜÷t Íæuó Ðñk= W¼øêÐüUõïÿ2óÖíïn Uî¡xKýL ç…þDøÝïò¨ü› Hqð;Ÿó2òÍ õ% ˜ø· déúûqïâ¨üW { õíq­ôDòž Dú* à 6õÿ ŸìŽöÖœíèqkƒïï' ó¨ñ ÷û¾šúbbï²÷Z¡ñó°Aÿ)ìÛF÷ïé@ùB}‰÷O Nð<òžnð šðríþúùsì¾íþt žIôÕòàðPö+z ÿqðDøZü²ìŠdT ©+ôŠWóûìõñbj ^û~ÄëM÷Çù³ê4˜ÿæ Író ¡ñkð Wøø ÖüU ïïÁÿ2ìqPÖ`ïnþî¡ïKþ) ÂþD ïòñœü›ôsq ŸÛòÍûµõ%ìv ˜ü d*úû•ïâñ¨üWòà õ À­òžû°ú*ëÍ 6ü Ÿ\öÖ tíèñ=kï¢ïm MñÂø ÷ûíAšbâ÷Z«ñóïA÷i)ÄF pïéóùB¿ N…òžüÅð íðþrqúrì¾ï>þtóáI VÕ©ðPúJö+îÉ þ@q AøZÿ¬ìŠïõTø!+ 8W ðì÷Lñbò ^¼Ä—÷Ǽê4ñ?ÿæü³r'¡ÿð îüøòS Ö ¦ FïÁü·ìqïfPþ` Üþšïõûþ)ùW¡ iñœøôsò þ“Û bûµxìvóíüüD*• ½ñ¨ô­òàó À‰ ôû°þëÍð«üü¾\ ¢ t4ñ=õiï¢öemüM ³ø üíAð¹þðâÖ«Ðïô÷ióÊÄM p ”óÿZî‹÷¿¿ÿ…üüÅ5í÷îþúq=r ï>ü¯óáö³ VýÏ©’úJKîÉø’þ@û A0ÿ¬ Eïõý§ø!ô^ 8ý] ð þ÷L›òû*¼û—€¼ôñ?ùNü³÷w'Cÿ [îüCòSú ¦úFHü·Äïfÿkþ÷) Üÿ»š?õûÿ ùWô[¡úHi ºø Kòø þ“ó× bHx 1óí?üDõIû& ½±ô­þóöʉôà ôpþ /ð«òü¾÷½ ¢ýj4 Iõi¶öeùÚüùC ³€ü Bð¹ý$þðïhÖùÒÐ Wô œóÊùMò» ”dÿZ Y÷¿ýaÿò-üÙ5N÷î™úï|=î» ü¯Þö³ý5ýÏð’þ¼KÓø’ ~ûð^0ñ© E ´ý§êô^üý]ï þý¦› +û*Mûòð€øÔô lùN÷w÷öCì [-C1úúíšHõÙÄ 0ÿk Á÷)õ0ÿ»ï"?òÿ 8ô[˜úHóë ºø¹ K ø šó×øHòF 1? ¥õIÿ™û&ñ€±þþ¿öÊñôÃñÞpõ / òy÷½ÿMýjô Iÿ¶ ùÚýùCñ€ös B Rý$ ÔïhùNùÒòÍ WŠ œ ˆùÿÄò»ø"d[ YêýaWò-õ@Ùù€Nò™yï|þ¦î»ûHÞý5RðøŽþ¼üªÓ© ~ ð^çñ©öƒ ´újê˜üãïüôý¦û +&M Ðòð.øÔ÷å lüII÷öìüŒ-ø21hsíš´õÙú 0üÝ Áàõ0†ï"ú‡ò÷Ÿ8%˜‘óëÿÆø¹òi ùž š Iø¼òFøÇôü ¥”ÿ™ úñ€®þôŽ¿úZñ ñÞ 0õúÁ ÷Žy£ÿM\ôýäÿÂù ÿÕýÁñösú‰ R÷3 ÔhùN 9òÍ:Šø” ˆþlÿÄ_ø"[õ/êööW7õ@ Žù€þæòö?yþþ¦ 1ûH©÷Ìö`RøŽ »üªþ^©ô ý<ç ÷öƒnújøÚ˜üÏããüô–ûû-&÷« Ðü. ÷åþ!üIñ[Iù´ žüŒ ø2øæhóMs‰´ ¨úlüÝöLàüž† °ú‡Š÷Ÿ÷i%ô;‘ÿÆ :òiïùžô€ Iü«¼ øÇôüó”ø¦ ù ® aôøLú[ïý _ , .úÃÿt÷“ð£ü±Yèýæ ^ùôÿÕï¹ ¸úŽüË÷<ëÆeýÇ -ï85øžî6þnôJT&óõAùf÷ì_( vûþè=öRìïüõÇ ~Ÿ9÷Þó/övëCÉ ¢ þbZô/í ýCüm Ýÿb cøíòÃüØðÌQ…vû<û÷Åëðïþ9 ünþ' àñŒòùÊôE y B Ý ·ùøªó|ò¼xÆ tVcÿ«ösè2ü«õÉ ‰nC÷ô€ômï܃  ZáýTô´ìŽüºþ² g z óYðƒøÉñ à %<øpû2ðJò]~ óÿwšðhí(üÁ÷V’Æ ?ôRõïpíg ˆ7°—üÚÿì'ë&ýÒùy˜d ÆîŒöô‚ña â îù†þ ì¾í•û´–Í{íKñáõùöF3  ô óm÷¼ë¨î³0¬ôSÔíùð<üö[£ 1 & ~óóðð\ëY.×&û.ÝìQî~þAôÍ 5 ¯EòJûNôò ÿ z &øÎmòýñ¥÷ñø bÿ­ žè§û^õûô›ÌT ý >ô¸ÿÈð*÷¤ìýéõ ý`ôìî÷Íþ¸ôF­ì ` ðÎ ñg÷–äüØð EûISòTûc÷yÆ“’~í…÷€ötùkïyõHÉíÂþã"ùN;ÿ"œëÿ­ù˜ø(Ç ‚ {ö6ƒñ©öíéø•þ¦|íðürûÊöüžV ò'Šövø‘ ÖúÁä÷ä .îØûÖ*ô›þ2¼ÚðŠ ö‹ø ôÿa @ /ô+vëÀ÷©É÷ ®À 5îÔuõù„ øþc ýœûeeò]õ®ÿø‚ ä›a ]ñYþèøöí *ÿÕ d òûv¶ôÓù'NôÙ ½ÿÉ D÷Íÿ®ýôò Õú€Ò ®÷÷Qô÷=çöXèK Æ÷¿ýaüèõ A- ßû"÷¤ò‹øÞS ñ‰ ¯öÌö—ùŒô]Ôœ ¤þèÿÙùpö)þæŸÿ¯æøO÷Ãú Gñqò÷ÿŸøBûÿgVÕü…÷*ü¥›šØr&ø·ûPú=ûB¼Û ú¢ûêûþôMùþ;[²Í ø,ú’ÿdùp ›^r÷ÔÿÊ÷;ùÔóýÏ ëm5ù¥þ þkÿ耓bÒõãÿYø¨ýá~þ† )åþîJ÷ÿ^ÿÖ ¿ö”ÿ)ùIú£õýN¯î Ïÿ¯þÙóþúœV xÐ%À÷mRö“þý*ü ƒXýsûõêÄ@ü× †ÿJ!²ò‘Rù úÔ ’ù PÉö÷Ëôšãˆü° ÿ'ÿÛEöŸWþôù]2úÃÎù÷–çú^ü&ºøoµÿ¤ <ûKÏÿqøþšúÉôüÝö‘úçóéÿ¬û¤ 9û™§Ëú8qû8üK°ùŽ+@ü¥úY¤!ûèùþªLøe¶üAÿÏsúa€þûë¾ûe0^þ:úÿêÿ køW¥•ÿkÆþïþ¬÷tÎù(Sÿn>œ¿ùPÿAý8û<§ýœ‹µý@{ú{þû`þ=™ÜZúŒ‰ýÄ'0ÿøü—ûMý§ž¤¬dý:ûöÿaúì ûw'úJö›°ýPöhÛýùnÿBü´¿,{ú.üiûhø ]ÿM."ü ù^ûG~ýšŸVùÛùûoøupSûˆý€õh÷ôÿ¶õ ä¶úðöûÑú;‡éýýµû ô£ÞýÒì ˆviùV÷Iü¹ø“^0Rümúìûú÷ÔÔ5Ú qÿ*ùMö9ƒû)Î(²ø‡úúk÷¯È‘3 ׈»ú(õïý‘þð •Ø†ýšõÅû-ö3dÄ uÂ-û=õþûÖ¨ Q¹(û¡øýôõæì¼Ö §üz„û4öñ«úµé"’÷Ðû„ý¨ú²>‘âúF™ý!ú›–ý„Ëüß]ùü£ÿcø¿7ÿ³~zûäBýéùËåúÜ%¹úWÖùyýÀýöð`þÐýÓ¦ùúØúp yû‡\<÷ÈéûFûÃá÷©ÀþÈö þù 'þš³ëøláùûU‰ùÂ8$û–õøéüž¨ö dN à÷‚ûÌöŽ6ø JhúÒ“øÉý¨ø g±¢ Ä÷EÙþRõl -÷¹Ëë÷#y÷Tü}Îö< )' `öõªüeöÝû¹3ƒùè÷AùÖ;õè öž. cø(Þûk÷‡ûÓDü·ûhøÆ7õèô… ÆûVûývôCú!€üývù»ø›ÿ¾õ`™Óô øú£†ûõ|ñýÊÅ dþ @ø,õþøöžwào ‰û2ü"ü$õ„ª ¡üX·øÏó…Löö¶Ëß >úüoþÌôÒ44 ïûúgúô1´úQþÈý<÷où”3ö¼ :By ÷Ýÿùù7ô¾ƒü` ‡ýû/ù0ô¹š÷žgñs ÞöèûŠøáòÅdJ üü—÷›ôzÜùN Ç IJ Wø'ø”üTóµO¶ï eúµÿ¿÷Wô¹eþrê uàø]öük÷Øðà °ùÍú÷XóT`, š ÿ·÷Íë‘ý$÷<. Ó† =øÀö!öò%)Î Pvzý´öNïQý1þá ÈVØ4õ&òµùÐó< ç k ù„ûáò†ô P¶ @ŠÿŠ`ò¡ï×ý7ø’c ? îõüö¢ñËð-œâðýMÿ=îüî þ"úgé8 Îñ ÷rö'óx æ*@^úsþÒïð8éüR£ Š?hïúóæ÷i÷ª  6 ô ãõ;øëî’ñÚ`##ðò€üÿ÷¾ö p h ²ôáõ«òœîQ&n ÔîûÞï&ñþ‚öjz sJ 7ôCûûö'ôÿ8 ­ AùØôÝó7¯ù; ¾ÿ¹ ðìü ÷möA „# ÷èöYÿÑòtøÙ¢þ6”ýÁóï°øýþçõùùÊÄó¿ó…øÍÀýM ÆíûøCôPû½›ø¶1YXCð3Vø¼÷úú` Ÿ¬öׂðjÿ ˆúG•ÿBÌî‡ÿ¹ú‡ùL’ª Šõ÷£ÿóÁø? ùA~þÙdð“ü÷ügøM <†D´ô-à÷Ûù§ öúú ™½ù°ñ[üqÿõÐþv ³òÎâ÷íù/ 4ÿx uÖõçÎî¸øâaø]€’èÛñY>ö¡úx 6þ  ðÉüVô^÷2ÿ=ù› È×óÿùCøB †ÿÛ ·{ü!¹öyú(ö~¹VÿÑ uùÿºþAô¶bûPÐ ù&ö3øˆÅ÷Æ—ƒµTøøýÃý]÷'¾8 Bû×øáô$QùìxNAø)÷ûúõà‘ÑV žÿÿÞúi÷Ÿÿ°Xÿºžùsøp¦úîÀ[îêømÿ­ùiû¾iÿ~?Cý Þøzý&ƒ„†­ÉÔùÍüûûø”»}=ü†ü—ö úþ'‹}ÝKùXûaÿ|úk¨¸.ù ÿÓøŠúÀ‚þ#­¡6-ú™þUþ¨ÿì¬WTŒ÷fÿsùÁþ3«þ¿£ÃÿøqÿvÿÝI«—ÿIúKûqö¶ý¶H¤ 7bÿ»ÿôùþMûlüå<ì|ø¸÷þÿ$cü´KýÖ‡÷p¦6ýQïÿfÖô™Ñú*ûœ ú{ç«øTÅöSL‹ý1 ÿHÿàŸø #ÿú^ôûŽˆ9øÜû8ü¼*ù”rÿ²Öü;ÿ†ú û•ÏNýXç{û­XõÀ±ÿºüM«üEñ­ûûóüÛ!ú‰bý(Ýû6îÎûÇ´úéiËùމüÓÿ×ìû<þOü‹yü)³þ€šÿîÿ14ùƒcÿ—þc£þàøÃ¯ú—û©ÿ…ûƒ{úWÿ^ý¥û÷Éýú±rý­ûSÿ$*þ‚•¾»ÖûbMþú‹ÿA«ýûÆAþ7Å’¶ý¨ü–ÿyûX=–x¬ü)!û,ø•ýº â‘ý‹úsÿ_ý6+dþSûü÷üùE±ÿhaý&cúeüCýùÙÁÒ úÏúü%ù©Ãè(0ü:ýã÷ ù3ÿÂÊ‘ 3pKû¹øüwûiºµÒ‡ý„þûÓöh“þ)Øä<‘ú`ø¥ý;ù¼Œ`Ùüüû·üšù;¡ÏÿKCúZ÷¿oûë½ n$ù²úøûJøü0 %ržû÷ƒýòþ^+ì©ýú÷`ûï÷‘´ÜÑ£&ûý÷3þ\ü~ÚtüQùGþF÷}%&< ©ýûõø^@ûŠªnùü9þûˆj*\Ìû.€ý•ûuŒý†}áý]\ú)ý*ÿ}ùä<ÿ¿ðtüŠçþ>úÆû¬¦Ñû=˜úþ„ø`]ÿþ,GúYûQùü<ýgùùüüoòøü…DþR‹÷²ÚþhúÀ²þÓó©ù¡ú•ü¨ú¿£üKØú ý)÷¤Ÿ+ ûøÝdüxø9ùasaû¦4ùñþšùY敇5øªeþ–÷µù øøŽø·ý2÷ÍÑ! Œøh=üùøUÆüi4%ú3Ìø©úÓ·÷‡ 3[Õ·ùkhü'ø‰õü˜ïü¿£ü%ùñÛ÷‰þIo ·üÒýßö(3ûžˆýŽú¿ùÍÿÉ÷±6¢ ûGüG÷0%þ%­ ‹þ^gùpöÍÿ#ø#AÃáÓûúüÂüÅö×ÉeF ”üðùúõŒønŸ]» @û}ýþþö ¶,… 'ü¢-û}öCû>YýäøÕúŸø?gè ù1ÿúúSö”ý,ÎþPVúMö‘øý{ ìøeüEú ôîCS ðýzøûö^úh,™ê¥ùpùÌüîõºDõ ‡û“ÿÊøÃö”*þ³s èùŸ÷²ýù0ì¡ÑúÒûøÅõj¨% ¥ ݶÿÃù'îðýø®Õ Š 8ùò÷Â÷µôpÍ„œ“þ÷éòý©ÿ* ¢5ØöòôéúÖõY 7± æú—üôÂöCîŒ öÿž&ôÙò…ý®ùÎ ÿ a ÷§ø0ô(òµÐ IýÀÿ^ñÑñþqûV ’ mY ×óˆøß÷Ëõ êN ß ÍûaÿòAòÚÂüï± G^Wò§õìøØù Ø V ô ¼÷úñ}ó†YÙ Íòqó&ôÃý€ù I°©çö¿÷gôÛñI Àü.ñûó‡þÂø à±æ (ö=ü©÷Ïö*ÿZá \úáºö½õ^ºúE ~ÿÅCïdüµøà÷å <ò ò’÷ûÿØô¿úWþ„0 þ#ñòsú,ÿ÷« E§ªtõ5sõ¢ú›ý ›•ü¨3öKüwÓùò òãùøùW ¬ûU Mâøe;óÿ6îûA íÿbûñÿÄûvúq  “nù|õØù’0úh tæÿ Mó5ý|ýùž ùp1cö36ù?ú½ û× q•úC4óÜýÓ÷ tþ¹YŽõ»ùPúZtÿª~÷£&ñ°úøù­R!‚óÞø>ûkuþÜ âöü¿Gö_ø·ÿ^ú¶ õ­Rõ¨ÿ:úlù™áÿâ ü̼øû+ëø"dîÿÚ¦ú8ÿÆþŽöªïü ΈúUÝ÷æùÓ£ù2Gºjâú0þ'ýÒø°f.§üúö4úúÜÑù†ù`ûv÷£ÆÎ ˜ÿ<ÿäûbùÿ:ÞÿÇVú—ù‰ûÐ9Åkâù¿ÿ¼úü|Ñÿ•'±ýŽ·ùËý¥ml6Û‚úãü¶ûôü­mšÙý"ý0÷ËûþÂóe-¶Šúƒü1ÿ“ûfP†ëúFÿÛùÚû­þvSX%ûŒþ¡þäÿïÚEGøêÿŒúÛþ…Øþ÷ ÿ@çùÇÿŽÿãÒ_šÿiûNü@ø[þàZhöÿÈÿ2öíþšü<¢Qª±9úìùjÿKœýJ¤>þ8øõ‰,ýËYÿúö Qû3üd®ûv€Œù²¾ø ¶Žý± ÿiÿåúùwïÿEû`¶üYBxú"üýR˜ú»0ÿÀoü¹§ÿœû‚ü_©ŠýÑØeüt‘÷–dÿÆü÷üð<ûû²ü­ýl‘û„˜Þý«¡ü:{ü‰ûÔ'Kú·\ýeÿÞfü½þý*5üÎ"þÅ;ÿñÿVüú¯$hÿ˜eþ®Wÿúû’Íÿ›·l6û^ÿ{þü³ëþWØ/þ¸ü-ÿKôþÈ‘m™Rü9þtÌæÿd]ý¤üŠ5þaÐçw þý5ÿ’ü1wEüÝü ùzþ$([Hýþûwÿ|ý¹—8Ð+ûúý…üÔúÿ„“íý¬Äûkü¾þX˜áN~ûÂû„üÙúÓ_5 üìþFø²útÿÍv,‚ÏÞüƒù}ýüA9¨#ýúþkü˜ø,Iþ€Å@¹ûjúý¾úãb‚¹ýŠü‚ý;úb¢äg.ÿmûeùGZü¬®ë*1úÝûæü*úI™sór]€ûýùþTþ¬dDSËþZøûü°ù#Óõ-…ü»ø×þ«ý%‚c/èýúˆþ™ù_¡¬ý–¹ü¶ùËÕü_kÊrúeüîþdü_–¶üiþüO‚ýývöýÜZûBý³ÿ•û ?ÿÌcný0Œþ’ûÂXü}&éü"[ûŠþv ùÐZÿ0þ„èû8¸Bü3xüò’úeüÆýúPIþ¤NùD°þµû¿=ÿ 4fúÖSû›üÒÅû¿ì#üþ¾û+ý²~ù:-òãú8¿ý#ù’;ú£š\üyÖûþhúeym¥úðþÛøÏ=ú`BùúÂúý–ù])yºùÛÐýŒùÍzý5ÈûN±úûÑ1ù'p{ ú®òüäù÷dý+›ý_üãû€ù) vZ§üتþGø eüºþ»ûÁúþÿÔøÏÊ—Rü_üÿøãXþ”´þ¯úµø”ÿNù§ ¦RüÂýbýeø qˆýˆ‚û$÷“àùæˆï—Cü]ý˜ÿ0÷úš$Ö`ýIòü^ø Òü+ ìþ ú:û«ÏùÂä‹Wú„ÿüûnøk¶ý¥øþ¥}ûiøjgú[¨¦üùáýû6÷mCçÌýøkú[øA?û€’êŠóú¹ûýˆ÷¾êÒü§ürÿÔú/øoïþõû#¦ñúàùUý™ú‡ÂRÞûØüú2÷ïXà7ùA÷Ùü¡úh)jÛŠûÂüùèöü2;Ý Òà<ùú÷vþ»úÛ†g€ù·úîú øïÔNýÊ@ùÀøæôþ 7» ëøßù4úØù…-üÓýøýzù7øÊ];˜ÌÒùF÷õüÃûkž°¦üXüOú»øïþ¦ÓÿüÿÂùšø¸þýÂúsñþùšûÕû>ü¡0»!ýxýóø€ú:ÿ”i° Ýù{ùøü6ûÄÒØàûÍþù ùDˆÿÌp6ÿÛ¯ù¢ú©ÿüÙ×_O½úfüðûgùÞzÇw’ü°jøÜùøýàs«²ù(ûûûOûGb]Smü¿ý‘øqùLÿ×;ààvøØú+û°ú¦^5q‚ûÁýØù^ø^ÿpô 5`úùãþÙû„x÷GúúQýú”ùÚ}üµIýå–ùùúÇ#ýT.!…¨ùHü$ü,ú0‡ÀÞüëÿ¡úùüaþÜÙÿ͸ùíûþ!ú‚Œç‚ü†ÿfý0ù­~þ FØþJTûûDÿ§úÅ½àŽ³úúþêü{ûY¼ºã þdÎúfú‘ÿÔýw*¢e&ûü9ýbúM¢ðývÃúèùh§ý¡PX`úþü”þ=û3´h†üªÿ¾üú¹Êþe'ýüúrüÿÿÞü©±:Þhû+ÿ“û‘ûþ|ÿ¿cúþ6 ùvüLÿ‰ým¨‘ÊnúòþžüKü;Fqý‡úëûÅÏüÄ1P\û°þÊýÌûÉ:ÿµ×müÒÖû4üUrýøÖ%ÿ²õû ýñÿüÒ ¿ûûÿ*û{û'dÿ2[,ÿÕúÌüŠþßýPÎá½ßüþ}û³ûY‹ÿuܬÿ`ü-ý™þžªªû‹þ*ýëüžÍg½üè.ûTþ »þÎÊ ÷ú™þúýþ7Z<”¨ý3ÿºüý†¹ÿ±… ÿÉ#û°þ5þ°ý>d¤"ÀýŒýEýgÒÿ(˜@ÿ§°üºþCÿÌý®>†ÛÕüüÿ±ýçþÿÊÌ9þà3üíþu\þ¤QÒ_üÿ'ý^þ)ÿÝŒÉÿÆü’þ’ÿÃþõÉ®!ýÿþ[þUŽ&g§þT‰ýlþÌkþîEÿSüÿ¢ÿYþ­aÿÀ{'ý3âýÑÿªUÿ’#þÆü;ÿYÿÿø"Âý“ÿÿþvÿTÿö(åþ…lýDÿ þþ7EõþjEÿ ÿR³ÿž•}ÿ-Zþÿk0ÿ0UÿñÿÈ}þ$ÿÀÿ»s¹ŽþOýÈÿ¥ƒÿ6ÿýPýêÿRÿÔÏ\hþš<þ#ÿÄkÿ¯yÿÂFþtÿÔÿÁÈÿúöXþÃIþêÿÝÞÿ¡ÿÒÿRþˆ#ÿãÿÿmž4þÜRÿ+-ÓÿõçÿéÿJÿñþ¬ÿæÿöR1m\ÿ Nÿ&rÙÿµ þñÿÌì³ÿ»ÿ¨rpÿ{ÿ9šÿÿÿwÿùµVÿIÿ38Î6ÿvÿ²cGÿ‹ÿ[ÿôbÿÉp>ÿ¹ÿÿþ<ÿàM,ÿÕÿÅ 0ÿ×ÿý=2ÿêÿ¾ÿÞ&9"ÿývtwm-5.4.7/contrib/vtwmrc/sounds/chime4.au0100664000015300001300000001012410237645271017315 0ustar callumfid.snd#1@chime4.wavÿÿÿÿÿÿÿÓ[:EMÿÁ¸¸ÉS0+4[«£¦Á:'$0[¬¢¨º>+%.ç°¤¦°I'")S°£¥°E("(M®¤£²ÿ+"%<¶¨¢¬É0#&0ɧ¢¨É<&#+g­¤¤¶<+"*:¶¥¢¬ÿ2$%/Í©¢§¾4'".M¯££°I-#(6¼¦£ªÛ.%$4ç«¢¥º8(",E°£¥¯I(#(I¼¦£ªç-$$8¸©¡«Á0##0Ŭ¡¨¸8$",Û©¢¦¾A&"*g¬£¤ºM'"'M®¢£´<*!+A°¢¢°A+!*g´£¤¯I'!(S¸¤£¬[)"&E°¥¥¸S)#(I°¦¤²ÿ,#+<¶¥£¯S/$(6¾§£«ç6%&8Óª¤¨Á4($0[¯¤¥´>($+[¸¦¥®ÿ-%'<ͪ¤©Å4%%0Ó°¥¨´E)$*M¼§¥²Û/%&6¾¬¤«º:'$-ÿ´¥§ºS+$(A´¨¤¯Í0$%4Á¬¤ªÓ8&%.竤§¾I)$*S°¤¥´>+#+>´¥£¯M.$)8º¦¤¬ÿ,$'>Á§£«Û-%&:¸©£®Í/$%6ºª£¬¾."'6º££®[/)2º¢Ÿ¬ÿ0!%>¼¦ŸªÓ."$8Í©Ÿ§Á0%2Á¬Ÿ©º8".Ó°Ÿ¦²E'*M°¤¡´ÿ-$<¸©Ÿ­Å4!%0ͪŸ§ÁE'*M°¥¡´ç.*:¾¦Ÿ¬Û8$#/Û¬¡¥¼:*.E´¢Ÿ°S0'4ŨŸ©Í0%!4ÿ­Ÿ¤º:+-E²£¤°I*!)Eº¦¢¬ç-#%8É©Ÿ®Å0"#2¼¬Ÿ«¸4$!/É©Ÿ©Å6%(2Ū¡¬Ó:'&0ͬ¡ªÅ2(%6ç­Ÿ©¾6*$4Á¯¡­¼:'#0Ͱ£«¸>("/箥©¾E+$-[°§§¸[.#/A¶¦¤´M0$,:¾©£¯ç:')<Ó®£«Á8,%4S´¥¦¸E0%.S¾ª¦¯ç0()<Û¯¤ª¾<)%0ç¶§ª´S.&,EÁ¬¦®Í4''8ۦ­º>+'/g¸¨©ºg/'+A¸¬¦²Í4'(6Á¯¦®Û:))0Û®§«ÁE+(.ç°ª­Å:.+6g²ª¬¼>/+4S¶ª­ºI.*0ÿ¸«­¶M/+0g²¬­¾g/*0M¶¬«¼ÿ0)/Sº¨ª¼S4'2M¾ª©¸g8(0Aɬ«´ÿ4*.MÛ¯©°ç:-,AÓ´§´ÍE,*:ÿ¼ª¯¾g0)4g¼®¬¾ç8).IÍ´©¶ÓE-.<ÿ´ª¯Óÿ2*2g¾¯«¼ç<+2EÛ°¨²çM/-8ÿ¸¬®ÉS4)6SÅ­ªºÿ>+0>ç°©²Û>/,Aÿ¶­²ÓI4.Ag¼®´ÉS2.:ÿÅ®°¾g6.6gͰ¯Åÿ8.2SÁ²®¾ç<.0MÉ´­¼ÿ>.4IͰ­¸ÿA/2AÓ²®¶ç:/0MÛ´®´Û>00Iÿ¶­ºÓA//AÓº®¶ÍI0/>ç¶®´ÓS20:ÿ¼°°Éÿ806[Á°°Ág>08IÓ²°ºçI22Mÿ¸°´ÓI80AgÁ²²ÁgA28[Ó¶²ºçA44Iÿ¼²´ÍS62<ÿÉ´´¾ÿ<46SÛ¸²¸ÿE:gźºÉÿA::Eÿɸ¼ÛgA:Ig͸ºÓÿI:EgÛ¼¼ÍÿE:Ag羺ÅçM<>[çźÉÛg<>Mÿɼ¾ÛÿIESÿÛÅÁÛÿ[EMgÿÅÅÓÿÿEE[ÿÍÁÅçÿME[ÿÛÁÁçÿ[EMgçÁÁÍÿSEEgÿÉÅÉç[IE[ÿÍÅÅçgEESÿÓÁÅÛÿIEMÿÛÅÅçÿIEIÿÓÅÁçÿMEIÿÓÅÅÛÿMEMgÛÅÅÓÿSEMgÛÅÅÓÿIEIÿçÅÅÍÿMEIÿÿÅÅÓÿSEEgçÉÅÍç[II[ÿÉÅÉÿÿIISÿÍÉÉçÿMIMÿÛÉÉÛÿ[IMgçÉÉÓÿgMM[ÿÓÓÓÿÿ[[gÿÛÓÓçÿ[[[ÿÿÓÓÛÿg[[ÿÿÛÛÛÿÿ[[gÿçÓÓçÿ[[[ÿÿÓÓÛÿg[[ÿÿÛÓÛçÿ[[gÿÛÓÓçÿ[[[ÿÛÓÓçÿ[[[ÿÛÓÓÛÿ[[[gçÓÓÛÿg[[gçÓÓÛÿ[[[ÿçÛÓÓÿg[[ÿÿÓÓÛÿg[SgÿÛÓÛÿÿ[SÿÿÛÓÛÿÿS[gÿÓÓÛÿÿ[SgÿÛÓÛÿÿ[[ÿÿçÓÓçÿg[ÿÿÿÓÛçÿg[gÿÿÛÓÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿççÿÿÿÿÿÿÿççÿÿÿÿÿÿÿçÿÿÿÿÿÿÿÿçççÿÿÿÿÿÿÿççÿÿÿÿÿÿÿççÿÿÿÿÿÿÿçççÿÿÿgÿÿçççÿÿgÿÿÿçççÿÿggÿÿÿççÿÿggÿÿçççÿÿggÿÿÿççÿÿggÿÿÿççÿÿÿgÿÿÿççÿÿgÿÿÿÿççÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿggÿÿÿçÿÿÿggÿÿÿççÿÿgÿÿÿÿÛçÿÿgggÿÿççÿÿÿgÿÿÿÛççÿÿggÿÿçççÿÿggÿÿÿÛÛÿÿÿggÿÿÛççÿÿggÿÿÿÛÛÿÿÿgÿÿÿÛçÿÿÿggÿÿçççÿÿggÿÿÿççÿÿgÿÿÿÿçÛÿÿÿggÿÿççÿÿÿÿgÿÿÿÿÿÿÿgÿÿÿÿÿçÿÿgÿÿÿÿççÿÿÿÿÿÿÿÿçÿÿÿÿÿÿÿççÿÿÿÿÿÿÿÿÿÿÿ[gÿÿÿÛÛÿÿgggÿçÛÛÿÿgggÿÿÛÛÿÿgggÿÿÛÛÿÿgggÿÿÛÛçÿÿg[ÿÿÛççÿÿ[[ÿÿçÛÛÿÿgggÿÿÛÛÿÿg[gÿÿÛÛçÿgg[ÿÿçÛçÿÿ[ggÿÿÛÛçÿgg[ÿÿÛççÿÿggÿÿçÛçÿÿgggÿçÛçÿÿgggÿÿçççÿÿggÿÿçççÿÿgggÿçççÿÿggÿÿÿççÿÿÿggÿÿççÿÿgÿgÿÿççÿÿÿggÿÿÛçÿÿgg[ÿçÛççÿgg[ÿÿççÿÿgggÿÿÛÛÿÿÿ[gÿÿÛÛçÿg[gÿÿÛÛçÿÿ[gÿÿçÛÿÿÿ[gÿÿÿÛçÿÿ[[ÿÿçÛçÿÿg[gÿÿÛÛÿÿÿ[gÿÿÛÛçÿÿ[gÿÿçÛÛÿÿg[ÿÿÿÛÛÿÿÿ[gÿÿçÛçÿÿggÿÿÿÛçÿÿg[gÿÿÛÛÿÿgggÿÿçÛçÿÿggÿÿÿççÿÿgggÿÿççÿÿgggÿÿççÿÿÿggÿÿçÛçÿg[gÿÿçÛçÿÿ[gÿÿçÛçÿÿ[gÿÿçÛçÿÿggÿÿçççÿÿggÿÿçÛçÿÿg[ÿÿçÛçÿÿggÿÿçççÿÿgggÿçÛçÿÿgggÿÿççÿÿg[gÿÿççÿÿÿggÿÿçççÿgggÿÿçÛçÿÿggÿÿÿççÿÿgggÿÿçççÿÿggÿÿÿççÿÿgggÿÿççÿÿgggÿÿççÿÿÿggÿÿÿççÿÿgggÿÿççÿÿgggÿÿççÿÿgggÿÿçççÿÿggÿÿçççÿÿggÿÿçççÿÿggÿÿçççÿÿgggÿÿççÿÿgggÿÿççÿÿgggÿÿççÿÿgggÿÿççÿÿggÿÿÿççÿÿgggÿÿççÿÿgggÿÿççÿÿggÿÿÿÿçÿÿÿggÿÿÿçÿÿÿggÿÿÿçÿÿÿÿgÿÿÿççÿÿÿggÿÿççÿÿÿggÿÿÿçÿÿÿÿgÿÿÿççÿÿÿgÿÿÿÿçÿÿÿÿgÿÿÿççÿÿÿgÿÿÿççÿÿÿggÿÿÿçÿÿÿggÿÿÿçÿÿÿggÿÿÿçÿÿÿggÿÿÿçÿÿÿÿgÿÿÿçÿÿÿÿgÿÿÿÿçÿÿÿgÿÿÿçÿÿÿÿgÿÿÿçÿÿÿÿgÿÿÿÿçÿÿÿgÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿgÿÿÿÿçÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgÿÿÿçÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿgÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿçÿÿÿÿgÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvtwm-5.4.7/contrib/vtwmrc/vtwmrc-PWMish0100664000015300001300000001273510237645271016726 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-PWMish # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # m4 Variables # define(WMname, `PWMish') # Border width, autopan border width, desktop and door bevel widths... define(WMborder, 5) define(WMpanborder, 5) define(WMdesktopbevel, 1) define(WMdoorbevel, 1) # Title heights (must be set manually for VTWM windows and applets)... define(WMdesktoptitle, 0) define(WMdoortitle, 0) define(WMiconmgrtitle, 0) define(WMapplettitle, 0) # # Boolean Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-bools) NoBorderDecorations # # Parametered Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-parms) # See also 'Lists' below... IconManagerGeometry "+5+5" 1 RealScreenBorderWidth 0 # Gap between frame and titlebar font (titlebar changes) FramePadding 4 # Gap between FramePadding and buttons (buttons change) ButtonIndent -2 # Gap between titlebar elements TitlePadding 3 # Button border width (TitleForeground color) TitleButtonBorderWidth 0 ClearBevelContrast 40 DarkBevelContrast 40 BorderBevelWidth 1 ButtonBevelWidth 0 DoorBevelWidth WMdoorbevel IconBevelWidth 1 IconManagerBevelWidth 1 InfoBevelWidth 1 MenuBevelWidth 1 TitleBevelWidth 1 VirtualDesktopBevelWidth WMdesktopbevel UnknownIcon "xlogo32" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" DoorFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" #VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Functions and Bindings # # Read in the bindings file... include(HOME/vtwm/vtwmrc-binds) LeftTitleButton "photon_menu.xpm" = f.menu "ArrangeMenu" RightTitleButton "photon_minimize.xpm" = f.iconify RightTitleButton "photon_maximize.xpm" = f.fullzoom Function "decorate-virtual" { f.exec "nexpm -vtwm -in HOME/vtwm/images/djhjr.xpm &" } Function "clear-virtual" { f.exec "nexpm -vtwm -solid gray75 &" } # # Lists # # Read in the sound file... include(ifelse(SOUND, `Yes', `HOME/vtwm/vtwmrc-sound')) # Read in the lists file... include(HOME/vtwm/vtwmrc-lists) # Check 'BorderColor', as that's the highlight color... #NoHighlight NoTitleHighlight #SqueezeTitle DontSqueezeTitle {} Pixmaps { # TitleHighlight "eyesline.xpm" # TitleHighlight "byzantine.xpm" # VirtualBackgroundPixmap "djhjr.xpm" MenuIconPixmap "photon_rarrow.xpm" } # Box-stock Background is, of course, "maroon" # Box-stock Foreground and IconBorderColor is "gray85" # Box-stock MenuTitleBackground and BorderColor is "gray70" Color { DefaultBackground "gray75" DefaultForeground "black" MenuBackground "gray75" MenuForeground "black" MenuTitleBackground "gray75" MenuTitleForeground "black" RealScreenBackground "gray65" RealScreenForeground "black" VirtualBackground "gray75" VirtualForeground "black" BorderColor "gray75" BorderTileBackground "gray60" BorderTileForeground "gray60" TitleBackground "DeepSkyBlue4" { "VTWM*" "gray75" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray75" "xcb" "gray75" "*clock" "gray75" "xload" "gray75" "as*" "gray75" } TitleForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBackground "DeepSkyBlue4" { "VTWM*" "gray75" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray75" "xcb" "gray75" "*clock" "gray75" "xload" "gray75" "as*" "gray75" } IconForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBorderColor "DeepSkyBlue4" { "VTWM*" "gray75" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray75" "xcb" "gray75" "*clock" "gray75" "xload" "gray75" "as*" "gray75" } IconManagerBackground "DeepSkyBlue4" { "VTWM*" "gray75" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray75" "xcb" "gray75" "*clock" "gray75" "xload" "gray75" "as*" "gray75" } IconManagerForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconManagerHighlight "gray90" DoorBackground "gray75" DoorForeground "black" DesktopDisplayBackground "DeepSkyBlue4" { "VTWM*" "gray75" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray75" "xcb" "gray75" "*clock" "gray75" "xload" "gray75" "as*" "gray75" } DesktopDisplayForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } } # # Menus # # Read in the menus file... include(HOME/vtwm/vtwmrc-menus) vtwm-5.4.7/contrib/vtwmrc/vtwmrc-menus0100664000015300001300000002171310237645271016702 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-menus # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # Menus # menu "XWindowsMenu" { `"'SERVERHOST`"' f.title "Shells" f.menu "ShellsMenu" "Editors" f.menu "EditorsMenu" "" f.separator "Desktop" f.menu "DesktopMenu" "Network" f.menu "NetworkMenu" "Toybox" f.menu "ToyboxMenu" "Wallpaper" f.menu "WallpaperMenu" "" f.separator "Arrange" f.menu "ArrangeMenu" "" f.separator "VTWM" f.menu "VTWMMenu" } menu "ShellsMenu" { " Shells " f.title "mc" f.exec "HOME/bin/startxterm -g 80x43 -title 'mc' -name 'mc' -e mc &" "rxvt" f.exec "HOME/bin/startrxvt &" "xterm" f.exec "HOME/bin/startxterm &" } menu "EditorsMenu" { " Editors " f.title "nedit" f.exec "nedit &" "ted" f.exec "Ted 2>/dev/null &" "tkhtml" f.exec "tkHTML &" "vi" f.exec "HOME/bin/startxterm -title 'vi' -name 'vi' -e vi &" "vile" f.exec "HOME/bin/startxterm -title 'vile' -name 'vile' -e vile &" "xcoral" f.exec "xcoral &" "xvile" f.exec "xvile &" "" f.separator "bitmap" f.exec "bitmap &" "editres" f.exec "editres &" "gimp" f.exec "gimp &" "pixmap" f.exec "pixmap &" "xfig" f.exec "xfig 2>/dev/null &" "xpaint" f.exec "xpaint 2>/dev/null &" "xv" f.exec "xv &" # "xv +vsp" f.exec "xv +vsp &" } menu "DesktopMenu" { " Desktop " f.title "asbutton" f.exec "asbutton -n 4 &" "ghostview" f.exec "ghostview &" "gv" f.exec "gv &" "hexcalc" f.exec "hexcalc &" "jpilot" f.exec "jpilot &" "meltdown" f.exec "meltdown -s &" "tkman" f.exec "tkman &" "xbmbrowser" f.exec "xbmbrowser &" "xcb" f.exec "xcb &" "xcalc" f.exec "xcalc &" "xcalendar" f.exec "xcalendar &" "xload" f.exec "xload -jumpscroll 20 -update 3 -g 96x93 &" "xlock" f.exec "xscreensaver-command -lock &" "xmcd" f.exec "xmcd &" "xmmix" f.exec "xmmix 2>/dev/null &" "xpostit" f.exec "xpostit -g 96x40 &" "xtplaygizmo" f.exec "xtplaygizmo &" "" f.separator "asclock" f.exec "asclock -exe xcalendar -led grey85 &" "oclock" f.exec "oclock -g 96x93 -bd SeaGreen -fg SeaGreen -transparent &" "mouseclock" f.exec "mouseclock &" "rclock" f.exec "rclock &" "sunclock" f.exec "sunclock &" "t3d" f.exec "t3d -nice 2 &" "xarclock" f.exec "xarclock -g 97x93 -arabic -fg white -bg black -fn -adobe-helvetica-medium-r-normal--*-80-*-*-p-*-iso8859-* &" "xclock" f.exec "xclock &" # "xdaliclock" f.exec "xdaliclock -fg SeaGreen -transparent -fn -adobe-utopia-medium-i-normal-*-*-260-*-*-p-*-iso8859-* &" "xdaliclock" f.exec "xdaliclock -fg SeaGreen -transparent -fn -adobe-times-bold-i-normal-*-*-260-*-*-p-*-iso8859-* &" } menu "NetworkMenu" { " Network " f.title "asmail" f.exec "asmail &" "chimera" f.exec "chimera &" "knews" f.exec "knews &" # "mosaic" f.exec "Mosaic &" "mozilla" f.exec "mozilla &" "mutt" f.exec "HOME/bin/startxterm -title mutt -name mutt -e mutt &" "netscape" f.exec "netscape &" "xarchie" f.exec "xarchie &" "xbiff++" f.exec "xbiff++ -update 60 -g 96x93 &" "xdir" f.exec "xdir &" "xgopher" f.exec "xgopher &" "" f.separator "FTP" f.menu "FTPMenu" "Login" f.menu "LoginMenu" "SSH" f.menu "SSHMenu" "Telnet" f.menu "TelnetMenu" } menu "FTPMenu" { " FTP " f.title "host1" f.exec "HOME/bin/startxterm -title 'ftp:host1' -name 'ftp:host1' -e ftp host1 &" "" f.separator # "host2" f.exec "HOME/bin/startxterm -title 'ftp:host2' -name 'ftp:host2' -e ftp host2 &" "host3" f.exec "HOME/bin/startxterm -title 'ftp:host3' -name 'ftp:host3' -e ftp host3 &" # "host4" f.exec "HOME/bin/startxterm -title 'ftp:host4' -name 'ftp:host4' -e ftp host4 &" "" f.separator "host5" f.exec "HOME/bin/startxterm -title 'ftp:host5' -name 'ftp:host5' -e ftp host5 &" } menu "LoginMenu" { " Remote Login " f.title # "host1" f.exec "HOME/bin/startxterm -title 'rlogin:host1' -name 'rlogin:host1' -e rlogin host1 &" # "" f.separator # "host2" f.exec "HOME/bin/startxterm -title 'rlogin:host2' -name 'rlogin:host2' -e rlogin host2 &" "host3" f.exec "HOME/bin/startxterm -title 'rlogin:host3' -name 'rlogin:host3' -e rlogin host3 &" # "host4" f.exec "HOME/bin/startxterm -title 'rlogin:host4' -name 'rlogin:host4' -e rlogin host4 &" "" f.separator "host5" f.exec "HOME/bin/startxterm -title 'rlogin:host5' -name 'rlogin:host5' -e rlogin host5 &" } menu "SSHMenu" { " SSH " f.title "host1" f.exec "HOME/bin/startxterm -title 'ssh:host1' -name 'ssh:host1' -e ssh -l username host1 &" "" f.separator # "host2" f.exec "HOME/bin/startxterm -title 'ssh:host2' -name 'ssh:host2' -e ssh -l username host2 &" # "host3" f.exec "HOME/bin/startxterm -title 'ssh:host3' -name 'ssh:host3' -e ssh -l username host3 &" # "host4" f.exec "HOME/bin/startxterm -title 'ssh:host4' -name 'ssh:host4' -e ssh -l username -p 27 host4 &" # "" f.separator # "host5" f.exec "HOME/bin/startxterm -title 'ssh:host5' -name 'ssh:host5' -e ssh host5 &" "host6" f.exec "HOME/bin/startxterm -title 'ssh:host6' -name 'ssh:host6' -e ssh host6 &" # "host7" f.exec "HOME/bin/startxterm -title 'ssh:host7' -name 'ssh:host7' -e ssh host7 &" } menu "TelnetMenu" { " Telnet " f.title "host1" f.exec "HOME/bin/startxterm -tn $TELTERM -title 'telnet:host1' -name 'telnet:host1' -e telnet host1 &" # "host2" f.exec "HOME/bin/startxterm -tn $TELTERM -title 'telnet:host2' -name 'telnet:host2' -e telnet -8 host2 &" "" f.separator # "host3" f.exec "HOME/bin/startxterm -tn $TELTERM -title 'telnet:host3' -name 'telnet:host3' -e telnet host3 &" "host4" f.exec "HOME/bin/startxterm -tn $TELTERM -title 'telnet:host4' -name 'telnet:host4' -e telnet host4 &" # "host5" f.exec "HOME/bin/startxterm -tn $TELTERM -title 'telnet:host5' -name 'telnet:host5' -e telnet host5 &" "" f.separator "host6" f.exec "HOME/bin/startxterm -title 'telnet:host6' -name 'telnet:host6' -e telnet -8 host6 &" } menu "ToyboxMenu" { " Toybox " f.title "blast" f.exec "blast &" "xbl" f.exec "xbl -draw 2 -keyboard 4 -buffer 2 -buttonheight 4 &" "xboing" f.exec "xboing -sound &" "xeyes" f.exec "xeyes &" "xmine" f.exec "xmine &" "xneko" f.exec "xneko -t 0.07 &" "xoids" f.exec "xoids &" "xtetris" f.exec "xtetris &" } menu "WallpaperMenu" { " Wallpaper " f.title "ico" f.exec "HOME/bin/stopxroot; nice -2 ico -softdbl -faces -colors green blue yellow red white -delta +10+10 -r &" "pyro" f.exec "HOME/bin/stopxroot; pyro -root &" "xcursor" f.exec "xcursor &" "xearth" f.exec "HOME/bin/stopxroot; xearth &" "xfishtank" f.exec "HOME/bin/stopxroot; xfishtank -m 25 -C 25 -c black -r 0.08 -i 0.04 -b 20 &" "xneko" f.exec "HOME/bin/stopxroot; xneko -t 0.07 -r &" "xroach" f.exec "HOME/bin/stopxroot; xroach -rc grey -speed 8 &" "" f.separator "logo" f.exec "xsetbg -grey -border black -center /home/hawkeyd/vtwm/vtwm.gif &" "none" f.exec "HOME/bin/stopxroot &" } menu "ArrangeMenu" { " Arrange " f.title "Auto Raise" f.autoraise "Raise" f.raise "Lower" f.lower # I just never use this... # "Raise Lower" f.raiselower "Nail" f.nail "Ring" f.ring "" f.separator "Focus" f.focus "Unfocus" f.unfocus "" f.separator "Move" f.move "Size" f.resize "Iconify" f.iconify "" f.separator "Full Zoom" f.fullzoom "Horiz Zoom" f.horizoom "Vert Zoom" f.zoom "" f.separator "Left Title" f.squeezeleft "Center Title" f.squeezecenter "Right Title" f.squeezeright "" f.separator "Bind Buttons" f.bindbuttons "Unbind Buttons" f.unbindbuttons "Bind Keys" f.bindkeys "Unbind Keys" f.unbindkeys "" f.separator "Identify" f.identify "" f.separator "Delete" f.delete "Destroy" f.destroy } menu "VTWMMenu" { " VTWM " f.title # These are dependant on the virtual screen counts... # "Virtual 1" f.setrealscreen "+eval(WIDTH * 0)+0" # "Virtual 2" f.setrealscreen "+eval(WIDTH * 1)+0" # "Virtual 3" f.setrealscreen "+eval(WIDTH * 2)+0" # "Virtual 4" f.setrealscreen "+eval(WIDTH * 3)+0" # "Virtual 5" f.setrealscreen "+eval(WIDTH * 4)+0" # "" f.separator "Auto Pan" f.autopan "New Door" f.newdoor "Snap Screen" f.snaprealscreen ifelse(SOUND, `Yes', `"Sounds" f.sounds') "Static Icons" f.staticiconpositions "Strict Icon Mgr" f.stricticonmgr "Warp Snug" f.warpsnug "Warp Visible" f.warpvisible "" f.separator "Icon Mgr" f.showiconmgr "Virtual Mgr" f.showdesktopdisplay "" f.separator # "VTWM Windows" f.menu "VTWM Windows" # "" f.separator "Refresh" f.refresh "Restart 95ish" f.startwm "vtwm -d :0.0 -s -m -p -f vtwm/vtwmrc-95ish" "Restart MWMish" f.startwm "vtwm -d :0.0 -s -m -p -f vtwm/vtwmrc-MWMish" "Restart PWMish" f.startwm "vtwm -d :0.0 -s -m -p -f vtwm/vtwmrc-PWMish" "Restart TWMish" f.startwm "vtwm -d :0.0 -s -m -p -f vtwm/vtwmrc-TWMish" "Restart TWM3d" f.startwm "vtwm -d :0.0 -s -m -p -f vtwm/vtwmrc-TWM3d" "Restart borderless" f.startwm "vtwm -d :0.0 -s -m -p -f vtwm/vtwmrc-NoBorder" "Start MWM" f.startwm "mwm -display :0.0" "Start TVTWM" f.startwm "tvtwm -display :0.0" "Start TWM" f.startwm "twm -display :0.0" "" f.separator changequote(%, %) "Exit" f.exec "HOME/bin/stopxroot; kill `cat HOME/vtwm.pid`" changequote(,) } vtwm-5.4.7/contrib/vtwmrc/vtwmrc-sound0100664000015300001300000000613310237645271016702 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-sound # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # PauseOnExit 3 PauseOnQuit 3 Sounds { "(vtwm start)" "HOME/vtwm/sounds/startup.wav" "(vtwm stop)" "HOME/vtwm/sounds/shutdown.wav" # "f.exec" "HOME/vtwm/sounds/ping.au" "f.newdoor" "HOME/vtwm/sounds/ping.au" "(client map)" "HOME/vtwm/sounds/ping.au" "f.delete" "HOME/vtwm/sounds/doh2.au" "f.deletedoor" "HOME/vtwm/sounds/doh1.au" "f.destroy" "HOME/vtwm/sounds/doh3.au" "(client unmap)" "HOME/vtwm/sounds/ping.au" "f.bottomzoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.fullzoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.horizoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.leftzoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.rightzoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.topzoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.zoom" "HOME/vtwm/sounds/bleebloo.au" 50 "f.squeezeleft" "HOME/vtwm/sounds/tshhh.wav" 50 "f.squeezecenter" "HOME/vtwm/sounds/tshhh.wav" 50 "f.squeezeright" "HOME/vtwm/sounds/tshhh.wav" 50 "f.iconify" "HOME/vtwm/sounds/dedoo.au" 30 "f.hidedesktopdisplay" "HOME/vtwm/sounds/dedoo.au" 30 "f.hideiconmgr" "HOME/vtwm/sounds/dedoo.au" 30 "f.showdesktopdisplay" "HOME/vtwm/sounds/dedoo.au" 30 "f.showiconmgr" "HOME/vtwm/sounds/dedoo.au" 30 "f.stricticonmgr" "HOME/vtwm/sounds/bleebloo.au" 50 "f.resize" "HOME/vtwm/sounds/chime5.au" "f.movescreen" "HOME/vtwm/sounds/chime5.au" "f.move" "HOME/vtwm/sounds/chime5.au" "f.forcemove" "HOME/vtwm/sounds/chime5.au" "f.deiconify" "HOME/vtwm/sounds/whoosh4.au" 50 # "f.warp" "HOME/vtwm/sounds/whoosh4.au" 50 "f.warpclassnext" "HOME/vtwm/sounds/whoosh4.au" 50 "f.warpclassprev" "HOME/vtwm/sounds/whoosh4.au" 50 "f.warpring" "HOME/vtwm/sounds/whoosh4.au" 50 "f.warpto" "HOME/vtwm/sounds/whoosh4.au" 50 "f.warptoiconmgr" "HOME/vtwm/sounds/whoosh4.au" 50 "f.warptonewest" "HOME/vtwm/sounds/whoosh4.au" 50 "f.panup" "HOME/vtwm/sounds/whoosh1.wav" "f.pandown" "HOME/vtwm/sounds/whoosh1.wav" "f.panleft" "HOME/vtwm/sounds/whoosh1.wav" "f.panright" "HOME/vtwm/sounds/whoosh1.wav" "f.enterdoor" "HOME/vtwm/sounds/whoosh1.wav" "(autopan event)" "HOME/vtwm/sounds/whoosh1.wav" "f.autopan" "HOME/vtwm/sounds/pop1.wav" 30 "f.snaprealscreen" "HOME/vtwm/sounds/pop1.wav" 30 "f.staticiconpositions" "HOME/vtwm/sounds/pop1.wav" 30 "f.nail" "HOME/vtwm/sounds/pop1.wav" 30 "f.ring" "HOME/vtwm/sounds/pop1.wav" 30 "f.warpsnug" "HOME/vtwm/sounds/pop1.wav" 30 "f.warpvisible" "HOME/vtwm/sounds/pop1.wav" 30 "f.autoraise" "HOME/vtwm/sounds/pop1.wav" 30 # "f.raise" "HOME/vtwm/sounds/pop1.wav" 30 # "f.lower" "HOME/vtwm/sounds/pop1.wav" 30 "f.focus" "HOME/vtwm/sounds/pop1.wav" 30 "f.unfocus" "HOME/vtwm/sounds/pop1.wav" 30 "f.bindbuttons" "HOME/vtwm/sounds/pop1.wav" 30 "f.unbindbuttons" "HOME/vtwm/sounds/pop1.wav" 30 "f.bindkeys" "HOME/vtwm/sounds/pop1.wav" 30 "f.unbindkeys" "HOME/vtwm/sounds/pop1.wav" 30 "(menu map)" "HOME/vtwm/sounds/chime3.au" # "(menu unmap)" "HOME/vtwm/sounds/chime3.au" "f.identify" "HOME/vtwm/sounds/chime4.au" # "(info unmap)" "HOME/vtwm/sounds/chime4.au" "(bell event)" "HOME/vtwm/sounds/chime1.au" } vtwm-5.4.7/contrib/vtwmrc/vtwmrc-NoBorder0100664000015300001300000001317710237645271017272 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-NoBorder # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # m4 Variables # define(WMname, `NoBorder') # Border width, autopan border width, desktop and door bevel widths... define(WMborder, 0) define(WMpanborder, 5) define(WMdesktopbevel, 1) define(WMdoorbevel, 1) # Title heights (must be set manually for VTWM windows and applets)... define(WMdesktoptitle, 0) define(WMdoortitle, 0) define(WMiconmgrtitle, 0) define(WMapplettitle, 0) # # Boolean Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-bools) DecorateTransients NoIconManagerHighlight ShallowReliefWindowButton ButtonColorIsFrame # # Parametered Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-parms) # See also 'Lists' below... IconManagerGeometry "+5+5" 1 RealScreenBorderWidth 0 # Gap between frame and titlebar titlebar font (titlebar changes) FramePadding 3 # Gap between FramePadding and buttons (buttons change) ButtonIndent -1 # Gap between titlebar elements TitlePadding 2 # Button border width (TitleForeground color) TitleButtonBorderWidth 0 ClearBevelContrast 50 DarkBevelContrast 60 BorderBevelWidth 0 ButtonBevelWidth 1 DoorBevelWidth WMdoorbevel IconBevelWidth 1 IconManagerBevelWidth 1 InfoBevelWidth 1 MenuBevelWidth 1 TitleBevelWidth 1 VirtualDesktopBevelWidth WMdesktopbevel UnknownIcon "xlogo32" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" DoorFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" #VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Functions and Bindings # # Read in the bindings file... include(HOME/vtwm/vtwmrc-binds) # These are nice built-in 3D buttons... LeftTitleButton ":xpm:darrow" = f.menu "ArrangeMenu" RightTitleButton ":xpm:dot" = f.iconify RightTitleButton ":xpm:resize" = f.resize Function "decorate-virtual" { f.exec "nexpm -vtwm -in HOME/vtwm/images/djhjr.xpm &" } Function "clear-virtual" { f.exec "nexpm -vtwm -solid gray67 &" } # # Lists # # Read in the sound file... include(ifelse(SOUND, `Yes', `HOME/vtwm/vtwmrc-sound')) # Read in the lists file... include(HOME/vtwm/vtwmrc-lists) # Check 'BorderColor', as that's the highlight color... NoHighlight #NoTitleHighlight #SqueezeTitle #DontSqueezeTitle {} Pixmaps { # TitleHighlight "eyesline.xpm" # TitleHighlight "byzantine.xpm" TitleHighlight ":xpm:raisedlines" # VirtualBackgroundPixmap "djhjr.xpm" MenuIconPixmap ":xpm:rarrow" IconManagerPixmap ":xpm:zoom" } # Box-stock Background is, of course, "maroon" # Box-stock Foreground and IconBorderColor is "gray85" # Box-stock MenuTitleBackground and BorderColor is "gray70" Color { DefaultBackground "gray73" DefaultForeground "black" MenuBackground "gray73" MenuForeground "black" MenuTitleBackground "gray73" MenuTitleForeground "black" RealScreenBackground "gray57" RealScreenForeground "black" VirtualBackground "gray67" VirtualForeground "black" BorderColor "gray73" BorderTileBackground "gray67" BorderTileForeground "gray67" TitleBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } TitleForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBorderColor "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconManagerBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconManagerForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconManagerHighlight "gray90" DoorBackground "gray67" DoorForeground "black" DesktopDisplayBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } DesktopDisplayForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } } # # Menus # # Read in the menus file... include(HOME/vtwm/vtwmrc-menus) vtwm-5.4.7/contrib/vtwmrc/vtwmrc-TWMish0100664000015300001300000001172210237645271016725 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-TWMish # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # m4 Variables # define(WMname, `TWMish') # Border width, autopan border width, desktop and door bevel widths... define(WMborder, 2) define(WMpanborder, 5) define(WMdesktopbevel, 0) define(WMdoorbevel, 0) # Title heights (must be set manually for VTWM windows and applets)... define(WMdesktoptitle, 0) define(WMdoortitle, 0) define(WMiconmgrtitle, 0) define(WMapplettitle, 0) # # Boolean Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-bools) DecorateTransients # # Parametered Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-parms) # See also 'Lists' below... IconManagerGeometry "+5+5" 1 RealScreenBorderWidth 0 # Gap between frame and titlebar font (titlebar changes) FramePadding 2 # Gap between FramePadding and buttons (buttons change) ButtonIndent 0 # Gap between titlebar elements TitlePadding 5 # Button border width (TitleForeground color) TitleButtonBorderWidth 1 ClearBevelContrast 40 DarkBevelContrast 40 BorderBevelWidth 0 ButtonBevelWidth 0 DoorBevelWidth WMdoorbevel IconBevelWidth 0 IconManagerBevelWidth 0 InfoBevelWidth 0 MenuBevelWidth 0 TitleBevelWidth 0 VirtualDesktopBevelWidth WMdesktopbevel UnknownIcon "xlogo32" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" DoorFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" #VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Functions and Bindings # # Read in the bindings file... include(HOME/vtwm/vtwmrc-binds) # These are the box-stock flat buttons... LeftTitleButton ":darrow" = f.menu "ArrangeMenu" RightTitleButton ":dot" = f.iconify RightTitleButton ":resize" = f.resize Function "decorate-virtual" { f.exec "nexpm -vtwm -in HOME/vtwm/images/djhjr.xpm &" } Function "clear-virtual" { f.exec "nexpm -vtwm -solid gray60 &" } # # Lists # # Read in the sound file... include(ifelse(SOUND, `Yes', `HOME/vtwm/vtwmrc-sound')) # Read in the lists file... include(HOME/vtwm/vtwmrc-lists) # Check 'BorderColor', as that's the highlight color... #NoHighlight #NoTitleHighlight SqueezeTitle #DontSqueezeTitle {} Pixmaps { # TitleHighlight "dot1x3.xbm" TitleHighlight "hlines3" MenuIconPixmap ":rarrow" } # Box-stock Background is, of course, "maroon" # Box-stock Foreground and IconBorderColor is "gray85" # Box-stock MenuTitleBackground and BorderColor is "gray70" Color { DefaultBackground "gray60" DefaultForeground "gray90" MenuBackground "gray60" MenuForeground "gray90" MenuTitleBackground "gray60" MenuTitleForeground "gray90" RealScreenBackground "gray50" RealScreenForeground "black" VirtualBackground "gray60" VirtualForeground "black" BorderColor "gray75" BorderTileBackground "gray60" BorderTileForeground "gray60" TitleBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } TitleForeground "gray90" IconBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } IconForeground "gray90" IconBorderColor "gray75" # IconBorderColor "DeepSkyBlue4" # { # "VTWM*" "gray60" # "XTerm" "SeaGreen" # "Xqsh" "maroon" # "ssh:*" "maroon" # "telnet:*" "maroon" # "rlogin:*" "maroon" # "*ftp:*" "maroon" # "xbiff*" "gray60" # "xcb" "gray60" # "*clock" "gray60" # "xload" "gray60" # "as*" "gray60" # } IconManagerBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } IconManagerForeground "gray90" IconManagerHighlight "gray75" DoorBackground "gray60" DoorForeground "gray90" DesktopDisplayBackground "DeepSkyBlue4" { "VTWM*" "gray60" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray60" "xcb" "gray60" "*clock" "gray60" "xload" "gray60" "as*" "gray60" } DesktopDisplayForeground "gray90" } # # Menus # # Read in the menus file... include(HOME/vtwm/vtwmrc-menus) vtwm-5.4.7/contrib/vtwmrc/vtwmrc-TWM3d0100664000015300001300000001313310237645271016446 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-TWM3d # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # m4 Variables # define(WMname, `TWM3d') # Border width, autopan border width, desktop and door bevel widths... define(WMborder, 4) define(WMpanborder, 5) define(WMdesktopbevel, 1) define(WMdoorbevel, 1) # Title heights (must be set manually for VTWM windows and applets)... define(WMdesktoptitle, 0) define(WMdoortitle, 0) define(WMiconmgrtitle, 0) define(WMapplettitle, 0) # # Boolean Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-bools) NoBorderDecorations ShallowReliefWindowButton ButtonColorIsFrame # # Parametered Variables # # Read in the variables file... include(HOME/vtwm/vtwmrc-parms) # See also 'Lists' below... IconManagerGeometry "+5+5" 1 RealScreenBorderWidth 0 # Gap between frame and titlebar titlebar font (titlebar changes) FramePadding 2 # Gap between FramePadding and buttons (buttons change) ButtonIndent -1 # Gap between titlebar elements TitlePadding 2 # Button border width (TitleForeground color) TitleButtonBorderWidth 0 ClearBevelContrast 50 DarkBevelContrast 60 BorderBevelWidth 1 ButtonBevelWidth 1 DoorBevelWidth WMdoorbevel IconBevelWidth 1 IconManagerBevelWidth 1 InfoBevelWidth 1 MenuBevelWidth 1 TitleBevelWidth 0 VirtualDesktopBevelWidth WMdesktopbevel UnknownIcon "xlogo32" TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" IconFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" DoorFont "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*" #VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Functions and Bindings # # Read in the bindings file... include(HOME/vtwm/vtwmrc-binds) # These are nice built-in 3D buttons... LeftTitleButton ":xpm:bar" = f.menu "ArrangeMenu" RightTitleButton ":xpm:dot" = f.iconify RightTitleButton ":xpm:resize" = f.resize Function "decorate-virtual" { f.exec "nexpm -vtwm -in HOME/vtwm/images/djhjr.xpm &" } Function "clear-virtual" { f.exec "nexpm -vtwm -solid gray67 &" } # # Lists # # Read in the sound file... include(ifelse(SOUND, `Yes', `HOME/vtwm/vtwmrc-sound')) # Read in the lists file... include(HOME/vtwm/vtwmrc-lists) # Check 'BorderColor', as that's the highlight color... NoHighlight #NoTitleHighlight SqueezeTitle #DontSqueezeTitle {} Pixmaps { # TitleHighlight "eyesline.xpm" # TitleHighlight "byzantine.xpm" TitleHighlight ":xpm:raisedlines" # VirtualBackgroundPixmap "djhjr.xpm" MenuIconPixmap ":xpm:bar" IconManagerPixmap ":xpm:zoom" } # Box-stock Background is, of course, "maroon" # Box-stock Foreground and IconBorderColor is "gray85" # Box-stock MenuTitleBackground and BorderColor is "gray70" Color { DefaultBackground "gray73" DefaultForeground "black" MenuBackground "gray73" MenuForeground "black" MenuTitleBackground "gray73" MenuTitleForeground "black" RealScreenBackground "gray57" RealScreenForeground "black" VirtualBackground "gray67" VirtualForeground "black" BorderColor "gray73" BorderTileBackground "gray67" BorderTileForeground "gray67" TitleBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } TitleForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconBorderColor "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconManagerBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } IconManagerForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } IconManagerHighlight "gray90" DoorBackground "gray67" DoorForeground "black" DesktopDisplayBackground "DeepSkyBlue4" { "VTWM*" "gray67" "XTerm" "SeaGreen" "Xqsh" "maroon" "ssh:*" "maroon" "telnet:*" "maroon" "rlogin:*" "maroon" "*ftp:*" "maroon" "xbiff*" "gray67" "xcb" "gray67" "*clock" "gray67" "xload" "gray67" "as*" "gray67" } DesktopDisplayForeground "gray90" { "VTWM*" "black" "xbiff*" "black" "xcb" "black" "*clock" "black" "xload" "black" "as*" "black" } } # # Menus # # Read in the menus file... include(HOME/vtwm/vtwmrc-menus) vtwm-5.4.7/contrib/vtwmrc/vtwmrc-bools0100664000015300001300000000161310237645271016666 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-bools # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # Boolean Variables # RestartPreviousState NoGrabServer RandomPlacement #DeiconifyToScreen StaticIconPositions #WarpSnug #WarpVisible #WarpWindows DontDeiconifyTransients # Left unset so class and ring warps ignore the iconified - # see 'Functions and Bindings' below... #WarpUnmapped NoCaseSensitive NoIconManagerFocus ShowIconManager SortIconManager # see Zoom in 'Parametered'... #PrettyZoom RightHandSidePulldownMenus OldFashionedVtwmWindowsMenu #StayUpOptionalMenus #StayUpMenus SnapRealScreen NaturalAutoPanBehavior NotVirtualGeometries FixManagedVirtualGeometries FixTransientVirtualGeometries VirtualReceivesMotionEvents VirtualSendsMotionEvents # See 'Functions and Bindings' below... #NoDefaultTitleButtons #NoDefaultMouseOrKeyboardBindings # Covers both of the above... NoDefaults vtwm-5.4.7/contrib/vtwmrc/vtwmrc-lists0100664000015300001300000001003410237645271016703 0ustar callumfid # # DESCRIPTION FILE FOR vtwm - $(HOME)/vtwm/vtwmrc-lists # # PRE-PROCESSED BY vtwm-5.4.6 USING m4 # # # Lists # WindowRing NoWindowRing { "VTWM*" "as*" } IconifyByUnmapping WarpCursor #OpaqueMove #NoOpaqueMove {} #OpaqueResize #NoOpaqueResize {} UsePPosition "off" { "MPlayer" "on" } Cursors { Button "arrow" # Frame "arrow" IconMgr "arrow" Menu "arrow" Title "arrow" } # In addition to the default icon manager... IconManagers { "Xcoral*" "+5+405" 1 "xv *" "+5+605" 1 } NailedDown { "VTWM*" "xbiff*" "xcb" "*clock" "xeyes" "xload" "xpostit" "as*" } IconManagerDontShow { "VTWM*" # "xbiff*" # "xcb" # "*clock" # "xeyes" # "xload" # "xpostit" "as*" } DontShowInDisplay { "VTWM*" "xbiff*" "xcb" "*clock" "xeyes" "xload" "xpostit" "as*" } NoTitle { ifelse(WMdesktoptitle, 0, `"VTWM Desktop"') ifelse(WMdoortitle, 0, `"VTWM Door"') ifelse(WMiconmgrtitle, 0, `"VTWM Icon Manager"') ifelse(WMname, `95ish', `"MPlayer"', WMname, `MWMish', `"MPlayer"') ifelse(WMname, `PWMish', `"MPlayer"', WMname, `TWM3d', `"MPlayer"') ifelse(WMname, `TWMish', `"MPlayer"') ifelse(WMname, `95ish', `"xbiff*"', WMname, `MWMish', `"xbiff*"') ifelse(WMname, `PWMish', `"xbiff*"', WMname, `TWM3d', `"xbiff*"') ifelse(WMname, `TWMish', `"xbiff*"') ifelse(WMname, `95ish', `"xcb"', WMname, `MWMish', `"xcb"') ifelse(WMname, `PWMish', `"xcb"', WMname, `TWM3d', `"xcb"') ifelse(WMname, `TWMish', `"xcb"') ifelse(WMname, `95ish', `"*clock"', WMname, `MWMish', `"*clock"') ifelse(WMname, `PWMish', `"*clock"', WMname, `TWM3d', `"*clock"') ifelse(WMname, `TWMish', `"*clock"') "xeyes" ifelse(WMname, `95ish', `"xload"', WMname, `MWMish', `"xload"') ifelse(WMname, `PWMish', `"xload"', WMname, `TWM3d', `"xload"') ifelse(WMname, `TWMish', `"xload"') ifelse(WMname, `95ish', `"xpostit"', WMname, `MWMish', `"xpostit"') ifelse(WMname, `PWMish', `"xpostit"', WMname, `TWM3d', `"xpostit"') ifelse(WMname, `TWMish', `"xpostit"') ifelse(WMapplettitle, 0, `"as*"') } # Confusing if click-to-type focus is enabled... AutoRaise { "VTWM*" "XTerm" "Xqsh" "xbiff*" "xcb" "*clock" "xeyes" "xload" "xpostit" "as*" "XVroot" "XVschnauze" } # These are dependant on the virtual desktop size... # Set the window dimensions... define(Dwidth, 20) define(Dheight, 19) # Translate to an X geometry string... define(Dgeometry, translit(Dwidth*Dheight, *, x)) #Doors #{ # "1" "Dgeometry" "+eval(WIDTH * 0)+0" # "2" "Dgeometry" "+eval(WIDTH * 1)+0" # "3" "Dgeometry" "+eval(WIDTH * 2)+0" # "4" "Dgeometry" "+eval(WIDTH * 3)+0" # "5" "Dgeometry" "+eval(WIDTH * 4)+0" #} # Calculate the region dimensions... define(R0width, eval(WIDTH - VDwidth - 50)) define(R0height, eval(Dheight + 2 * WMborder + WMdoortitle)) # Calculate the region coordinates... define(R0x, WMpanborder) define(R0y, eval(HEIGHT - (R0height + WMpanborder))) # Translate to an X geometry string... define(R0geometry, translit(R0width*R0height+R0x+R0y, *, x)) # Calculate the grids... define(R0gridx, eval(2 * WMborder + 5)) define(R0gridy, 0) # Set the resource... AppletRegion "R0geometry" South East R0gridx R0gridy { "VTWM Door" } # Calculate the region dimensions... define(R1width, eval(WIDTH - 200)) define(R1height, eval(64 + 2 * WMborder + WMapplettitle)) # Translate to an X geometry string... define(R1geometry, translit(R1width*R1height-WMpanborder+WMpanborder, *, x)) # Calculate the grids... define(R1gridx, eval(2 * WMborder + 2)) define(R1gridy, 0) # Set the resource... AppletRegion "R1geometry" North East R1gridx R1gridy { "as*" } # Calculate the region coordinates... define(R2x, WMpanborder) define(R2y, eval(R1height + 20)) # Calculate the region dimensions... define(R2width, eval(100 + 2 * WMborder)) define(R2height, eval(HEIGHT - R2y - (VDheight + WMdesktoptitle))) # Translate to an X geometry string... define(R2geometry, translit(R2width*R2height-R2x+R2y, *, x)) # Calculate the grids... define(R2gridx, 0) define(R2gridy, eval(2 * WMborder + 4)) # Set the resource... AppletRegion "R2geometry" North East R2gridx R2gridy { "xbiff*" "xcb" "xload" "oclock" "xarclock" "xclock" "xdaliclock" "xpostit" } vtwm-5.4.7/contrib/nexpm/0040775000015300001300000000000010260161306014100 5ustar callumfidvtwm-5.4.7/contrib/nexpm/xpm.COPYRIGHT0100664000015300001300000000312510237645271016210 0ustar callumfidThe following still applies to the parts of sxpm.c that were used to create nexpm.c: /* * Copyright 1990, 1991 GROUPE BULL * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of GROUPE BULL not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. GROUPE BULL makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * GROUPE BULL disclaims all warranties with regard to this software, * including all implied warranties of merchantability and fitness, * in no event shall GROUPE BULL be liable for any special, * indirect or consequential damages or any damages * whatsoever resulting from loss of use, data or profits, * whether in an action of contract, negligence or other tortious * action, arising out of or in connection with the use * or performance of this software. * */ Arnaud LE HORS BULL Research FRANCE -- Koala Project (XPM - X PixMap format version 2 & 3) Internet: lehors@sophia.inria.fr Surface Mail: Arnaud LE HORS, INRIA - Sophia Antipolis, 2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE Voice phone: (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F vtwm-5.4.7/contrib/nexpm/Imakefile0100664000015300001300000000024410237645271015722 0ustar callumfidUSRLIBDIR = /usr/lib/X11 LOCAL_LIBRARIES = -lXpm $(XMULIB) $(XTOOLLIB) $(XLIB) DEPLIBS = $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB) SimpleProgramTarget(nexpm) vtwm-5.4.7/contrib/nexpm/nexpm.c0100664000015300001300000003303110237645271015404 0ustar callumfid/**********************************************************/ /* */ /* pxpm.c: this is sxpm.c hacked by Ralph Betza so that */ /* it can be used to set a background picture for the */ /* vtwm panner window, */ /* */ /* Works for vtwm, not for tvtwm. */ /* */ /* And then also changed to set backgrounds for */ /* *any* window. */ /* Ralph Betza, June 1993 gnohmon@ssiny.com */ /**********************************************************/ /* Copyright 1990,91 GROUPE BULL -- See licence conditions in file COPYRIGHT */ /* Since most of the code is from sxpm.c, the above copyright should ** still apply. */ /*****************************************************************************\ * sxpm.c: * * * * Show XPM File program * * * * Developed by Arnaud Le Hors * \*****************************************************************************/ #include #ifdef VMS #include "decw$include:Xlib.h" #include "decw$include:Intrinsic.h" #include "decw$include:Shell.h" #include "decw$include:shape.h" #else #include #include #include #include #include #endif #include Window window_by_name(); Window point_to_window(); /* XPM */ /* plaid pixmap */ static char *plaid[] = { /* width height ncolors chars_per_pixel */ "22 22 4 2", /* colors */ " c red m white s light_color", "Y c green m black s lines_in_mix", "+ c yellow m white s lines_in_dark", "x m black s dark_color", /* pixels */ "x x x x x x x x x x x x + x x x x x ", " x x x x x x x x x x x x x x x x ", "x x x x x x x x x x x x + x x x x x ", " x x x x x x x x x x x x x x x x ", "x x x x x x x x x x x x + x x x x x ", "Y Y Y Y Y x Y Y Y Y Y + x + x + x + x + x + ", "x x x x x x x x x x x x + x x x x x ", " x x x x x x x x x x x x x x x x ", "x x x x x x x x x x x x + x x x x x ", " x x x x x x x x x x x x x x x x ", "x x x x x x x x x x x x + x x x x x ", " x x x x Y x x x ", " x x x Y x x ", " x x x x Y x x x ", " x x x Y x x ", " x x x x Y x x x ", "x x x x x x x x x x x x x x x x x x x x x x ", " x x x x Y x x x ", " x x x Y x x ", " x x x x Y x x x ", " x x x Y x x ", " x x x x Y x x x " }; /* #define win XtWindow(topw) */ Window win; Window Compensate(); #define dpy XtDisplay(topw) #define screen XtScreen(topw) #define colormap XDefaultColormapOfScreen(screen) #define root XRootWindowOfScreen(screen) #define xrdb XtDatabase(dpy) int sDoByName; int sDoByNumber; char * pTargetWindowName; void Usage(); void ErrorMessage(); void Punt(); #define IWIDTH 50 #define IHEIGHT 50 typedef struct _XpmIcon { Pixmap pixmap; Pixmap mask; XpmAttributes attributes; } XpmIcon; static char **command; static Widget topw; static XpmIcon view; char *point_txt[] = { " ====> Please select the window", " ====> whose background you wish to", " ====> change by clicking the", " ====> pointer in that window.", 0}; XColor NameToXColor(); unsigned long NameToPixel(); main(argc, argv) unsigned int argc; char **argv; { int ErrorStatus; unsigned int stdinf = 0; unsigned int sSolid = 0; unsigned int w_rtn; unsigned int h_rtn; char *input = NULL; unsigned int numsymbols = 0; XpmColorSymbol symbols[10]; char *stype; XrmValue val; unsigned long valuemask = 0; int n; char *solid_color = NULL; Arg args[3]; topw = XtInitialize(argv[0], "Nexpm", (void*)0, 0, &argc, argv); if (!topw) { fprintf(stderr, "Nexpm Error... [ Undefined DISPLAY ]\n"); exit(1); } /* * arguments parsing */ command = argv; if (argc < 2) Usage(); for (n = 1; n < argc; n++) { if ( ! strcmp( argv[ n ], "-target" )) { sDoByName = 1; pTargetWindowName = argv[++n]; continue; } if ( ! strcmp( argv[ n ], "-vtwm" )) { sDoByName = 1; pTargetWindowName = "VTWM Desktop"; continue; } if ( ! strcmp( argv[ n ], "-id" )) { sDoByNumber = 1; pTargetWindowName = argv[++n]; continue; } if (!strcmp("-solid", argv[n])) { solid_color = argv[++n]; sSolid = 1; continue; } if (strncmp(argv[n], "-plaid", 3) == 0) { continue; } if (strncmp(argv[n], "-in", 3) == 0) { input = argv[++n]; continue; } if (strncmp(argv[n], "-stdin", 5) == 0) { stdinf = 1; continue; } if (strncmp(argv[n], "-s", 2) == 0) { if (n < argc - 2) { valuemask |= XpmColorSymbols; symbols[numsymbols].name = argv[++n]; symbols[numsymbols++].value = argv[++n]; continue; } } if (strncmp(argv[n], "-p", 2) == 0) { if (n < argc - 2) { valuemask |= XpmColorSymbols; symbols[numsymbols].name = argv[++n]; symbols[numsymbols].value = NULL; symbols[numsymbols++].pixel = atol(argv[++n]); continue; } } if (strncmp(argv[n], "-rgb", 3) == 0) { if (n < argc - 1) { valuemask |= XpmRgbFilename; view.attributes.rgb_fname = argv[++n]; continue; } } Usage(); } n = 0; XtSetArg(args[n], XtNwidth, 1); n++; XtSetArg(args[n], XtNheight, 1); n++; XtSetArg(args[n], XtNmappedWhenManaged, False); n++; XtSetValues(topw, args, n); XtRealizeWidget(topw); view.attributes.colorsymbols = symbols; view.attributes.numsymbols = numsymbols; view.attributes.valuemask = valuemask; if ( sDoByName ) { win = window_by_name( root, pTargetWindowName ); win = Compensate( win ); } else if ( sDoByNumber ) { win = strtol( pTargetWindowName, (void *)0, 0 ); } else { char ** ptr; for (ptr = point_txt; *ptr; ptr++) printf("%s\n",*ptr); win = point_to_window(); /* use pointer to get window */ win = Compensate( win ); } if ( ! sSolid ) { if (input || stdinf) { view.attributes.valuemask |= XpmReturnInfos; view.attributes.valuemask |= XpmReturnPixels; ErrorStatus = XpmReadFileToPixmap(dpy, win, input, &view.pixmap, &view.mask, &view.attributes); ErrorMessage(ErrorStatus, "Read"); } else { ErrorStatus = XpmCreatePixmapFromData(dpy, win, plaid, &view.pixmap, &view.mask, &view.attributes); ErrorMessage(ErrorStatus, "Plaid"); } /* Now we are ready to display it... */ XSetWindowBackgroundPixmap(dpy, win, view.pixmap); } else { XSetWindowBackground(dpy, win, NameToPixel( solid_color, 0L )); } XClearWindow(dpy, win); XFlush( dpy ); Punt(0); } void Usage() { fprintf(stderr, "\nUsage: %s [options...]\n", command[0]); fprintf(stderr, "%s\n", "Where options are:"); fprintf(stderr, "%s\n", "[-vtwm] Target is the vtwm panner."); fprintf(stderr, "%s\n", "[-id window_id target Window's numeric ID."); fprintf(stderr, "%s\n", "[-target window_name] target Window's name."); fprintf(stderr, "%s\n", " (if none of the above specified, target is selected by mouse)"); fprintf(stderr, "%s\n", "[-solid color_name] Ignore all pixmap parameters, set\ background color."); fprintf(stderr, "%s\n", "[-d host:display] Display to connect to."); fprintf(stderr, "%s\n", "[-s symbol_name color_name] Overwrite color defaults."); fprintf(stderr, "%s\n", "[-p symbol_name pixel_value] Overwrite color defaults."); fprintf(stderr, "%s\n", "[-plaid] Read the included plaid pixmap."); fprintf(stderr, "%s\n", "[-in filename] Read input from file `filename`."); fprintf(stderr, "%s\n", "[-stdin] Read input from stdin."); fprintf(stderr, "%s\n\n", "[-rgb filename] Search color names in the \ rgb text file `filename`."); exit(0); } void ErrorMessage(ErrorStatus, tag) int ErrorStatus; char *tag; { char *error = NULL; char *warning = NULL; switch (ErrorStatus) { case XpmSuccess: return; case XpmColorError: warning = "Could not parse or alloc requested color"; break; case XpmOpenFailed: error = "Cannot open file"; break; case XpmFileInvalid: error = "invalid XPM file"; break; case XpmNoMemory: error = "Not enough memory"; break; case XpmColorFailed: error = "Color not found"; break; } if (warning) printf("%s Xpm Warning: %s.\n", tag, warning); if (error) { printf("%s Xpm Error: %s.\n", tag, error); Punt(1); } } void Punt(i) int i; { if (view.pixmap) { XFreePixmap(dpy, view.pixmap); if (view.mask) XFreePixmap(dpy, view.mask); XFreeColors(dpy, colormap, view.attributes.pixels, view.attributes.npixels, 0); XpmFreeAttributes(&view.attributes); } exit(i); } Window window_by_name(wdw,name) Window wdw; char *name; { /**********************************************************/ /* */ /* Copied from xcursor.c, who copied it from xwininfo. */ /* */ /**********************************************************/ Window *offspring; /* Any children */ Window junk; /* Just that */ Window w = 0; /* Found window */ int count; /* Number of kids */ int loop; /* Loop counter */ char *wdw_name; /* Returnewd name */ if (XFetchName(dpy,wdw,&wdw_name) && !strcmp(wdw_name,name)) return(wdw); if (!XQueryTree(dpy,wdw,&junk,&junk,&offspring,&count)) return(0); for (loop = 0; loop < count; loop++) { w = window_by_name(offspring[loop],name); if (w) break; } if (offspring) XFree(offspring); /* fprintf( stderr, "w=%x\n", w ); */ return(w); } Window point_to_window() { /* from xcursor.c, also from blast.c */ int status; Cursor cursor; XEvent event; Window target_win = None; int buttons = 0; /* Make the target cursor */ cursor = XCreateFontCursor(dpy, XC_crosshair); /* Grab the pointer using target cursor, letting it room all over */ status = XGrabPointer(dpy, root, False, ButtonPressMask|ButtonReleaseMask, GrabModeSync, GrabModeAsync, None, cursor, CurrentTime); if (status != GrabSuccess) { fprintf(stderr,"Can't grab the mouse."); exit(4); } /* Let the user select a window... */ while ((target_win == None) || (buttons != 0)) /* allow one more event */ { XAllowEvents(dpy, SyncPointer, CurrentTime); XWindowEvent(dpy, root, ButtonPressMask|ButtonReleaseMask, &event); switch (event.type) { case ButtonPress: if (target_win == None) { /* window selected */ target_win = event.xbutton.subwindow; if (target_win == None) target_win = root; } buttons++; break; /* there may have been some down before we started */ case ButtonRelease: if (buttons > 0) buttons--; break; } } XUngrabPointer(dpy, CurrentTime); /* Done with pointer */ target_win = XmuClientWindow( dpy, target_win ); /* XmuClientWindow() is suggested by blast.c, but ifdeffed out. ** What happens is that blast gets the ID of the frame window, ** created by the window manager, not the ID of the window you ** really pointed to; but for blast it's OK: the shape *should* be ** given to the frame. */ return(target_win); } Window Compensate( win ) Window win; { Window dummy; Window dummy2; Window * children; unsigned int n; if ( XQueryTree( dpy, win, &dummy, &dummy2, &children, &n )) { /* Test for children submitted by Steve Ratcliffe */ if (children) { win = *children; XFree( children ); } } /**********************************************************/ /* */ /* It is possible that Compensate() is vtwm-specific. */ /* */ /* In any case, xlswins() reveals that the window ID we */ /* get from the pointer or from the name is always the */ /* *parent* of the window we really want, and since it */ /* is always at the bottom of the stacking order we */ /* know that it is the first window returned by */ /* XQueryTree. */ /* */ /**********************************************************/ return win; } unsigned long NameToPixel(name, pixel) char *name; unsigned long pixel; { XColor ecolor; if (!name || !*name) return pixel; if (!XParseColor(dpy,colormap,name,&ecolor)) { fprintf(stderr,"nexpm: unknown color \"%s\"\n",name); exit(1); /*NOTREACHED*/ } if (!XAllocColor(dpy, colormap,&ecolor)) { fprintf(stderr, "nexpm: unable to allocate color for \"%s\"\n", name); exit(1); /*NOTREACHED*/ } return(ecolor.pixel); } vtwm-5.4.7/contrib/nexpm/README0100664000015300001300000000274610237645271015002 0ustar callumfidINTRODUCTION If you use vtwm, perhaps you would like to set or change the background of the "Virtual Desktop" panner window... This posting provides a simple program, based on sxpm, xMoveIt, and xsetroot, that draws a pixmap in *any* existing window. Instead of drawing a pixmap, you can make it set a solid background color for the window -- which is useful to cancel the effects of a previous nexpm invocation! There is a special parameter for operating on the vtwm panner window; otherwise, the target window is specified either by name, by numeric ID, or by using the mouse pointer. It is possible that the Compensate() routine, which is the only original code here, is vtwm-specific. There is probably no use for this technology except when applied to the panner window. Putting a pixmap in the background of an xterm window may be hazardous to your mental health. INSTALLATION xmkmf make COMPATIBILITY My version of xpm is, from README, "3.0 (91/10/03)"; older xpm libraries will not understand the built-in default "plaid" pixmap. OTHER USES The same hack could be applied to xmartin, xv, xloadimage, xneko, or anything else, if you have source for them, to make them capable of displaying in other windows. FILES Imakefile README nexpm.c this is what it's all about patchlevel.h required xpm.COPYRIGHT came with sxpm... DISCLAIMER I'm not responsible. This is free stuff, and I wrote very little of it. Enjoy! --Ralph Betza gnohmon@ssiny.com vtwm-5.4.7/contrib/nexpm/patchlevel.h0100664000015300001300000000000410237645271016403 0ustar callumfid0.0 vtwm-5.4.7/contrib/support/0040775000015300001300000000000010260161306014465 5ustar callumfidvtwm-5.4.7/contrib/support/sysrc_add_apps.sh0100664000015300001300000001221210237645271020026 0ustar callumfid#!/bin/sh # # Adds installed applications to the box-stock system.vtwmrc file. syntax () { # could be a "here-doc", but it'd break at least one shell echo echo "Usage: ${0##*/} [-i in_file] [-o out_file] [-m menu_decl] \\" echo " [-a app_list | -A app_file] [-f] [-h]" echo echo "Default in_file: $DEF_INPUT" echo "Default out_file: $DEF_OUTPUT" echo "Default menu_decl: $DEF_MENU_DECL" echo "Default app_list: $DEF_LIST" echo echo "app_file is a list, each line containing one application specification" echo "(or the keywords \"SEPARATOR\" or \"TITLE::string\"). The specification is" echo "of the form \"name::string\", where \"name\" is the menu entry and \"string\"" echo "is the command to execute. Whitespace in either part is indicated with" echo "a single colon." echo exit } check_replace () { CWD=$PWD cd `dirname "$INPUT"` && INDIR=$PWD && INNAME=`basename "$INPUT"` cd `dirname "$OUTPUT"` && OUTDIR=$PWD && OUTNAME=`basename "$OUTPUT"` cd $CWD if [ "$INDIR" = "$OUTDIR" -a "$INNAME" = "$OUTNAME" ]; then if [ $NO_PROMPT -eq 1 ]; then echo "Replacing in_file with out_file." else echo -n "Replace in_file with out_file (y/n)? " read ANS [ "$ANS" != "y" -a "$ANS" != "Y" ] && \ echo "Exiting." && exit fi OUTPUT=$TMPOUT fi } check_X_path () { ANS=`which xterm 2>/dev/null` if [ -z "$ANS" ]; then if [ $NO_PROMPT -eq 1 ]; then echo "No path to X applications (xterm)." else echo "The path to X applications (xterm) isn't set." while true; do echo -n "Enter full X path: " read ANS [ -z "$ANS" ] && echo "Exiting." && exit [ -d "$ANS" -a -f "$ANS/xterm" -a \ -x "$ANS/xterm" ] && break done PATH=$PATH:$ANS fi fi } check_proceed () { echo echo "in_file: $INPUT" if [ "$OUTPUT" = "$TMPOUT" ]; then echo "out_file: $INPUT" else echo "out_file: $OUTPUT" fi echo "menu_decl: $MENU_DECL" echo "app_list: $APP_LIST" echo "app_file: $APP_FILE" echo "Search path: $PATH" echo if [ $NO_PROMPT -eq 1 ]; then echo "Proceeding..." else echo -n "Proceed (y/n)? " read ANS [ "$ANS" != "y" -a "$ANS" != "Y" ] && echo "Exiting." && exit fi } check_app () { if [ "$1" = "SEPARATOR" ]; then printf "\t\"\"\t\tf.separator\n" >>$2 else CMD=${1%%::*} STR=${1##*::} if [ "$CMD" = "TITLE" ]; then printf "\t\" %s \"\t\tf.title\n" $STR \ |sed -e 's/:/ /g' >>$2 else [ -z "`which $CMD 2>/dev/null`" ] && return printf "\t\"%s\"\t\tf.exec \"%s &\"\n" $CMD $STR \ |sed -e 's/:/ /g' >>$2 fi fi } DEF_INPUT=./system.vtwmrc DEF_OUTPUT=./custom.vtwmrc DEF_LIST="TITLE::Shells emu eterm mxterm rxvt xterm xvt" DEF_LIST="$DEF_LIST midc::xterm:-e:midc top::xterm:-e:top" DEF_LIST="$DEF_LIST TITLE::Editors nedit xcoral xvile" DEF_LIST="$DEF_LIST vi::xterm:-e:vi vile::xterm:-e:vile vim::xterm:-e:vim" DEF_LIST="$DEF_LIST SEPARATOR gimp xfig xpaint xv xbmbrowser bitmap pixmap" DEF_LIST="$DEF_LIST TITLE::Desktop applix soffice abiword lyx ted::Ted" DEF_LIST="$DEF_LIST gnumeric ghostview gv xcal xcalendar" DEF_LIST="$DEF_LIST SEPARATOR tkman xman" DEF_LIST="$DEF_LIST SEPARATOR gmplayer xine xmcd xmmix xmms" DEF_LIST="$DEF_LIST SEPARATOR hexcalc xcalc editres" DEF_LIST="$DEF_LIST xbiff xcb xev xeyes xload xmag" DEF_LIST="$DEF_LIST SEPARATOR moonclock mouseclock oclock" DEF_LIST="$DEF_LIST rclock sunclock t3d xarclock xclock xdaliclock" DEF_LIST="$DEF_LIST TITLE::Network chimera ie mozilla netscape opera" DEF_LIST="$DEF_LIST links::xterm:-e:links lynx::xterm:-e:lynx" DEF_LIST="$DEF_LIST SEPARATOR exmh knews xdir" DEF_LIST="$DEF_LIST ftp::xterm:-e:ftp telnet::xterm:-e:telnet" DEF_LIST="$DEF_LIST elm::xterm:-e:elm mutt::xterm:-e:mutt" DEF_LIST="$DEF_LIST pine::xterm:-e:pine tin::xterm:-e:tin" DEF_MENU_DECL="menu \"apps\"" NO_PROMPT=0 TMPOUT=out.$$ LISTOUT=list.$$ while getopts "i:o:m:a:A:fh" OPT; do case $OPT in i) INPUT=$OPTARG;; o) OUTPUT=$OPTARG;; m) MENU_DECL=$OPTARG;; a) APP_LIST=$OPTARG;; A) APP_FILE=$OPTARG;; f) NO_PROMPT=1;; *) syntax;; esac done [ -z "$INPUT" ] && INPUT=$DEF_INPUT [ -z "$OUTPUT" ] && OUTPUT=$DEF_OUTPUT [ -z "$APP_LIST" ] && APP_LIST=$DEF_LIST [ -n "$APP_FILE" ] && APP_LIST= [ -z "$MENU_DECL" ] && MENU_DECL=$DEF_MENU_DECL [ ! -f "$INPUT" ] && echo "$INPUT: File not found" && syntax check_replace check_X_path check_proceed if [ -n "$APP_LIST" ]; then for APP in $APP_LIST; do check_app $APP $LISTOUT done else if [ -f "$APP_FILE" ]; then while read APP; do check_app $APP $LISTOUT done <"$APP_FILE" else echo "$APP_FILE: File not found" exit fi fi [ ! -s $LISTOUT ] && echo "No applications added." && exit uniq $LISTOUT $$.$$ mv $$.$$ $LISTOUT cat "$INPUT" \ |awk -v list="$LISTOUT" -v menu="$MENU_DECL" \ 'BEGIN { \ split(menu, menu); \ } { \ if ($1 == menu[1] && $2 == menu[2]) { \ print $0; \ do { \ if ($1 == "{") print "{"; \ a = getline; \ } while (a && $1 != "}"); \ if (a && $1 == "}") { \ while (getline app "$OUTPUT" [ -s $TMPOUT ] && mv $TMPOUT "$INPUT" rm -f *.$$ echo "Done." vtwm-5.4.7/desktop.c0100664000015300001300000012326210237645271013145 0ustar callumfid/* * $Id: desktop.c,v 3.0 90/11/20 16:13:09 dme Exp Locker: dme $ * * Copyright (c) 1990 Dave Edmondson. * Copyright (c) 1990 Imperial College of Science, Technoology & Medicine * All Rights Reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of Dave Edmondson or Imperial College * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. Dave Edmondson and * Imperial College make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. */ #include #include "twm.h" #include "screen.h" #include "add_window.h" #include "menus.h" #include "parse.h" #include "events.h" #include "desktop.h" #define strdup Strdup /* avoid conflict with system header files */ extern char *strdup(char *); extern void SetRealScreenInternal(); extern void SetRealScreen(); extern void SnapRealScreen(); extern void SetMapStateProp(); extern void twmrc_error_prefix(); void SetVirtualPixmap(); void SetRealScreenPixmap(); /* djhjr - 4/27/98 */ static int starting_x, starting_y; /* djhjr - 11/3/03 */ static int original_x, original_y; static void GetDesktopWindowCoordinates(tmp_win, x, y, w, h) TwmWindow *tmp_win; int *x, *y, *w, *h; { /* djhjr - 4/27/98 */ int border = tmp_win->frame_bw + tmp_win->frame_bw3D; /* Stig Ostholm */ if (tmp_win->nailed) { if (x) *x = tmp_win->frame_x / Scr->VirtualDesktopDScale; if (y) /* *y = tmp_win->virtual_frame_y / Scr->VirtualDesktopDScale; */ *y = tmp_win->frame_y / Scr->VirtualDesktopDScale; /* DSE */ /* RFB 4/92 no SCALE_D */ /* *x = SCALE_D(tmp_win->virtual_frame_x); */ /* *y = SCALE_D(tmp_win->virtual_frame_y); */ } else { if (x) *x = tmp_win->virtual_frame_x / Scr->VirtualDesktopDScale; if (y) *y = tmp_win->virtual_frame_y / Scr->VirtualDesktopDScale; /* RFB 4/92 no SCALE_D */ /* *x = SCALE_D(tmp_win->virtual_frame_x); */ /* *y = SCALE_D(tmp_win->virtual_frame_y); */ } if (w) { *w = SCALE_D( tmp_win->frame_width + Scr->VirtualDesktopDScale / 2 /* djhjr - 4/27/98 + tmp_win->frame_bw + tmp_win->frame_bw ) */ + (2 * border) ) - 2; if ( *w <= 0 ) *w = 1; /* 4/92 RFB */ } if (h) { *h = SCALE_D( tmp_win->frame_height + Scr->VirtualDesktopDScale / 2 /* #ifdef SHAPE */ /* + tmp_win->title_height */ /* #ifdef SHAPE */ /* djhjr - 4/27/98 + tmp_win->frame_bw + tmp_win->frame_bw ) - 2; */ + (2 * border) ) - 2; /* 4/92 RFB -- subtract borderwidth from windowwidth... */ if ( *h <= 0 ) *h = 1; /* 4/92 RFB */ } } /* Stig Ostholm */ /* * create the virtual desktop display and store the window in the screen structure */ void CreateDesktopDisplay() { int width, height; int border; /* djhjr - 5/17/98 */ #ifndef ORIGINAL_PIXMAPS Pixmap pm = None; GC gc; XGCValues gcv; XSetWindowAttributes attributes; /* attributes for create windows */ unsigned long valuemask; unsigned int pm_numcolors; #endif if (!Scr->Virtual) return; width = Scr->VirtualDesktopWidth / Scr->VirtualDesktopDScale; height = Scr->VirtualDesktopHeight / Scr->VirtualDesktopDScale; /* done in SetVirtualDesktop() - djhjr - 9/26/01 * we have some checking for negative (x,y) to do * if (Scr->VirtualDesktopDX < 0) { Scr->VirtualDesktopDX = Scr->MyDisplayWidth - width - (2 * Scr->BorderWidth) + Scr->VirtualDesktopDX; } if (Scr->VirtualDesktopDY < 0) { Scr->VirtualDesktopDY = Scr->MyDisplayHeight - height - (2 * Scr->BorderWidth) + Scr->VirtualDesktopDY; } */ Scr->VirtualDesktopDisplayOuter = XCreateSimpleWindow(dpy, Scr->Root, Scr->VirtualDesktopDX, Scr->VirtualDesktopDY, /* djhjr - 2/7/99 width, height, */ width + (Scr->VirtualDesktopBevelWidth * 2), height + (Scr->VirtualDesktopBevelWidth * 2), /* was 'Scr->BorderWidth' - submitted by Rolf Neugebauer */ 0, Scr->Black, Scr->VirtualDesktopDisplayC.back); /* djhjr - 2/7/99 */ { XSetWindowAttributes attr; attr.backing_store = True; XChangeWindowAttributes(dpy, Scr->VirtualDesktopDisplayOuter, CWBackingStore, &attr); } if ( width != Scr->VirtualDesktopMaxWidth ) Scr->VirtualDesktopMaxWidth = width; if ( height != Scr->VirtualDesktopMaxHeight ) Scr->VirtualDesktopMaxHeight = height; /* vtwm 5.2: RFB growable but not unreasonable interior window! */ /* * re-written to use an Image structure for XPM support * * djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS Scr->VirtualDesktopDisplay = XCreateSimpleWindow(dpy, Scr->VirtualDesktopDisplayOuter, /* djhjr - 2/7/99 0, 0, */ Scr->VirtualDesktopBevelWidth, Scr->VirtualDesktopBevelWidth, Scr->VirtualDesktopMaxWidth, Scr->VirtualDesktopMaxHeight, 0, Scr->VirtualDesktopDisplayBorder, Scr->VirtualC.back);/*RFB VCOLOR*/ XDefineCursor( dpy, Scr->VirtualDesktopDisplay, Scr->VirtualCursor ); /*RFBCURSOR*/ if ( Scr->virtualPm ) /*RFB PIXMAP*/ { /* Background pixmap, copied from tvtwm */ Pixmap pm = None; GC gc; XGCValues gcv; pm = XCreatePixmap( dpy, Scr->VirtualDesktopDisplay, Scr->virtual_pm_width, Scr->virtual_pm_height, Scr->d_depth); gcv.foreground = Scr->VirtualC.fore; gcv.background = Scr->VirtualC.back; gcv.graphics_exposures = False; gc = XCreateGC (dpy, Scr->Root, (GCForeground|GCBackground|GCGraphicsExposures), &gcv); if (gc) { XCopyPlane (dpy, Scr->virtualPm, pm, gc, 0, 0, Scr->virtual_pm_width, Scr->virtual_pm_height, 0, 0, 1); XFreeGC (dpy, gc); XSetWindowBackgroundPixmap( dpy, Scr->VirtualDesktopDisplay, pm ); XClearWindow( dpy, Scr->VirtualDesktopDisplay ); } XFreePixmap (dpy, pm); } #else /* ORIGINAL_PIXMAPS */ pm_numcolors = 0; /* djhjr - 5/23/98 9/2/98 */ #ifndef NO_XPM_SUPPORT if (Scr->virtualPm) pm_numcolors = SetPixmapsBackground(Scr->virtualPm, Scr->Root, Scr->VirtualC.back); #endif if (pm_numcolors > 2) /* not a bitmap */ { valuemask = CWBackPixmap; attributes.background_pixmap = Scr->virtualPm->pixmap; Scr->VirtualDesktopDisplay = XCreateWindow(dpy, Scr->VirtualDesktopDisplayOuter, /* djhjr - 2/7/99 0, 0, */ Scr->VirtualDesktopBevelWidth, Scr->VirtualDesktopBevelWidth, Scr->VirtualDesktopMaxWidth, Scr->VirtualDesktopMaxHeight, 0, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); } else { Scr->VirtualDesktopDisplay = XCreateSimpleWindow(dpy, Scr->VirtualDesktopDisplayOuter, /* djhjr - 2/7/99 0, 0, */ Scr->VirtualDesktopBevelWidth, Scr->VirtualDesktopBevelWidth, Scr->VirtualDesktopMaxWidth, Scr->VirtualDesktopMaxHeight, 0, Scr->VirtualDesktopDisplayBorder, Scr->VirtualC.back); /*RFB VCOLOR*/ if (Scr->virtualPm) { pm = XCreatePixmap( dpy, Scr->VirtualDesktopDisplay, Scr->virtualPm->width, Scr->virtualPm->height, Scr->d_depth); gcv.foreground = Scr->VirtualC.fore; gcv.background = Scr->VirtualC.back; gcv.graphics_exposures = False; gc = XCreateGC(dpy, Scr->Root, (GCForeground | GCBackground | GCGraphicsExposures), &gcv); if (gc) { XCopyPlane(dpy, Scr->virtualPm->pixmap, pm, gc, 0, 0, Scr->virtualPm->width, Scr->virtualPm->height, 0, 0, 1); XFreeGC (dpy, gc); XSetWindowBackgroundPixmap(dpy, Scr->VirtualDesktopDisplay, pm); XClearWindow(dpy, Scr->VirtualDesktopDisplay); } XFreePixmap(dpy, pm); } } XDefineCursor(dpy, Scr->VirtualDesktopDisplay, Scr->VirtualCursor); /*RFB CURSOR */ #endif /* ORIGINAL_PIXMAPS */ XSetStandardProperties(dpy, Scr->VirtualDesktopDisplayOuter, /* djhjr - 4/27/96 "Virtual Desktop", "Virtual Desktop", */ /* djhjr - 5/19/98 "VTWM Desktop", "VTWM Desktop", */ VTWM_DESKTOP_CLASS, VTWM_DESKTOP_CLASS, None, NULL, 0, NULL); /* Stig Ostholm moved a few lines away from here */ /* djhjr - 2/15/99 border = 0; if ( Scr->UseRealScreenBorder ) { * border = 2; * border = Scr->RealScreenBorderWidth; * DSE * } */ border = Scr->RealScreenBorderWidth; /* * re-written to use an Image structure for XPM support * * djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS /* create the real screen display */ Scr->VirtualDesktopDScreen = XCreateSimpleWindow(dpy, Scr->VirtualDesktopDisplay, 0, 0, /* djhjr - 2/15/99 SCALE_D(Scr->MyDisplayWidth - 2 * border), SCALE_D(Scr->MyDisplayHeight - 2 * border), */ SCALE_D(Scr->MyDisplayWidth) - 2 * border, SCALE_D(Scr->MyDisplayHeight) - 2 * border, border, /* make it distinctive */ /* RFB 4/92: make borderwidth 0 instead of 2 */ /* RFB 5.2: some people need the border... */ Scr->VirtualDesktopDisplayBorder, Scr->RealScreenC.back ); /* RFB 4/92 */ if ( Scr->RealScreenPm ) /*RFB PIXMAP*/ { /* Background pixmap */ Pixmap pm = None; GC gc; XGCValues gcv; pm = XCreatePixmap( dpy, Scr->VirtualDesktopDScreen, Scr->RealScreen_pm_width, Scr->RealScreen_pm_height, Scr->d_depth); gcv.foreground = Scr->RealScreenC.fore; gcv.background = Scr->RealScreenC.back; gcv.graphics_exposures = False; gc = XCreateGC (dpy, Scr->Root, (GCForeground|GCBackground|GCGraphicsExposures), &gcv); if (gc) { XCopyPlane (dpy, Scr->RealScreenPm, pm, gc, 0, 0, Scr->RealScreen_pm_width, Scr->RealScreen_pm_height, 0, 0, 1); XFreeGC (dpy, gc); XSetWindowBackgroundPixmap( dpy, Scr->VirtualDesktopDScreen, pm ); XClearWindow( dpy, Scr->VirtualDesktopDScreen ); } XFreePixmap (dpy, pm); } #else /* ORIGINAL_PIXMAPS */ pm_numcolors = 0; /* djhjr - 5/23/98 9/2/98 */ #ifndef NO_XPM_SUPPORT if (Scr->realscreenPm) pm_numcolors = SetPixmapsBackground(Scr->realscreenPm, Scr->Root, Scr->RealScreenC.back); #endif if (pm_numcolors > 2) /* not a bitmap */ { valuemask = CWBackPixmap | CWBorderPixel; attributes.background_pixmap = Scr->realscreenPm->pixmap; attributes.border_pixel = Scr->VirtualDesktopDisplayBorder; Scr->VirtualDesktopDScreen = XCreateWindow(dpy, Scr->VirtualDesktopDisplay, 0, 0, /* djhjr - 2/15/99 SCALE_D(Scr->MyDisplayWidth - 2 * border), SCALE_D(Scr->MyDisplayHeight - 2 * border), */ SCALE_D(Scr->MyDisplayWidth) - 2 * border, SCALE_D(Scr->MyDisplayHeight) - 2 * border, border, Scr->d_depth, (unsigned int) CopyFromParent, Scr->d_visual, valuemask, &attributes); } else { Scr->VirtualDesktopDScreen = XCreateSimpleWindow(dpy, Scr->VirtualDesktopDisplay, 0, 0, /* djhjr - 2/15/99 SCALE_D(Scr->MyDisplayWidth - 2 * border), SCALE_D(Scr->MyDisplayHeight - 2 * border), */ SCALE_D(Scr->MyDisplayWidth) - 2 * border, SCALE_D(Scr->MyDisplayHeight) - 2 * border, border, /* make it distinctive */ /* RFB 4/92: make borderwidth 0 instead of 2 */ /* RFB 5.2: some people need the border... */ Scr->VirtualDesktopDisplayBorder, Scr->RealScreenC.back ); /* RFB 4/92 */ if (Scr->realscreenPm) { pm = XCreatePixmap(dpy, Scr->VirtualDesktopDScreen, Scr->realscreenPm->width, Scr->realscreenPm->height, Scr->d_depth); gcv.foreground = Scr->RealScreenC.fore; gcv.background = Scr->RealScreenC.back; gcv.graphics_exposures = False; gc = XCreateGC(dpy, Scr->Root, (GCForeground | GCBackground | GCGraphicsExposures), &gcv); if (gc) { XCopyPlane(dpy, Scr->realscreenPm->pixmap, pm, gc, 0, 0, Scr->realscreenPm->width, Scr->realscreenPm->height, 0, 0, 1); XFreeGC(dpy, gc); XSetWindowBackgroundPixmap(dpy, Scr->VirtualDesktopDScreen, pm); XClearWindow(dpy, Scr->VirtualDesktopDScreen); } XFreePixmap(dpy, pm); } } #endif /* ORIGINAL_PIXMAPS */ /* declare our interest */ XSelectInput(dpy, Scr->VirtualDesktopDisplay, ButtonPressMask | ButtonReleaseMask | KeyPressMask | KeyReleaseMask | ExposureMask); /* Stig Ostholm moved some lines to here: */ Scr->VirtualDesktopDisplayTwin = AddWindow(Scr->VirtualDesktopDisplayOuter, FALSE, NULL); /* djhjr - 5/19/98 */ Scr->VirtualDesktopDisplayTwin->class.res_name = strdup(VTWM_DESKTOP_CLASS); Scr->VirtualDesktopDisplayTwin->class.res_class = strdup(VTWM_DESKTOP_CLASS); XSetClassHint(dpy, Scr->VirtualDesktopDisplayOuter, &Scr->VirtualDesktopDisplayTwin->class); /* limit the minimum size of the virtual desktop - djhjr - 2/23/99 */ Scr->VirtualDesktopDisplayTwin->hints.flags |= PMinSize; Scr->VirtualDesktopDisplayTwin->hints.min_width = SCALE_D(Scr->MyDisplayWidth) + (Scr->VirtualDesktopBevelWidth * 2); Scr->VirtualDesktopDisplayTwin->hints.min_height = SCALE_D(Scr->MyDisplayHeight) + (Scr->VirtualDesktopBevelWidth * 2); #ifdef GROSS_HACK /* this is a gross hack, but people wanted it */ Scr->VirtualDesktopDisplayTwin->nailed = TRUE; #endif /* GROSS_HACK */ SetMapStateProp(Scr->VirtualDesktopDisplayTwin, NormalState); /* :ereh ot senil emos devom mlohtsO gitS */ /* position the representation */ DisplayScreenOnDesktop(); /* map them all */ XMapWindow(dpy, Scr->VirtualDesktopDScreen); XMapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplayOuter); /* create the autopan windows if we are doing this */ if (Scr->AutoPanX > 0) { short l; /* left */ Scr->VirtualDesktopAutoPan[0] = XCreateWindow(dpy, Scr->Root, 0, 0, AP_SIZE, Scr->MyDisplayHeight, 0, CopyFromParent, InputOnly, CopyFromParent, 0, NULL); /* right */ Scr->VirtualDesktopAutoPan[1] = XCreateWindow(dpy, Scr->Root, Scr->MyDisplayWidth - AP_SIZE, 0, AP_SIZE, Scr->MyDisplayHeight, 0, CopyFromParent, InputOnly, CopyFromParent, 0, NULL); /* top */ Scr->VirtualDesktopAutoPan[2] = XCreateWindow(dpy, Scr->Root, 0, 0, Scr->MyDisplayWidth, AP_SIZE, 0, CopyFromParent, InputOnly, CopyFromParent, 0, NULL); /* bottom */ Scr->VirtualDesktopAutoPan[3] = XCreateWindow(dpy, Scr->Root, 0, Scr->MyDisplayHeight - AP_SIZE, Scr->MyDisplayWidth, AP_SIZE, 0, CopyFromParent, InputOnly, CopyFromParent, 0, NULL); /* set the event masks on the windows */ for(l = 0; l <= 3; l++) { XSetStandardProperties(dpy, Scr->VirtualDesktopAutoPan[l], "Automatic Pan", "Automatic Pan", None, NULL, 0, NULL); /* * Added the leave event for pan resistance - * see events.c:HandleEnterNotify(). * * djhjr - 11/16/98 */ XSelectInput(dpy, Scr->VirtualDesktopAutoPan[l], EnterWindowMask | LeaveWindowMask); XMapWindow(dpy, Scr->VirtualDesktopAutoPan[l]); } /* end for l */ } /* end if Scr->AutoPan */ } /* * re-written to use an Image structure for XPM support * * djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS void SetVirtualPixmap (filename) char *filename; {/*RFB PIXMAP*/ Pixmap pm = GetBitmap (filename); if (pm) { if (Scr->virtualPm) { XFreePixmap (dpy, Scr->virtualPm); } Scr->virtualPm = pm; Scr->virtual_pm_width = JunkWidth; Scr->virtual_pm_height = JunkHeight; } } #else /* ORIGINAL_PIXMAPS */ void SetVirtualPixmap (filename) char *filename; { if (!Scr->virtualPm) Scr->virtualPm = SetPixmapsPixmap(filename); } #endif /* ORIGINAL_PIXMAPS */ /* * re-written to use an Image structure for XPM support * * djhjr - 5/17/98 */ #ifdef ORIGINAL_PIXMAPS void SetRealScreenPixmap (filename) char *filename; {/*RFB PIXMAP*/ Pixmap pm = GetBitmap (filename); if (pm) { if (Scr->RealScreenPm) { XFreePixmap (dpy, Scr->RealScreenPm); } Scr->RealScreenPm = pm; Scr->RealScreen_pm_width = JunkWidth; Scr->RealScreen_pm_height = JunkHeight; } } #else /* ORIGINAL_PIXMAPS */ void SetRealScreenPixmap (filename) char *filename; { if (!Scr->realscreenPm) Scr->realscreenPm = SetPixmapsPixmap(filename); } #endif /* ORIGINAL_PIXMAPS */ /* * add this window to the virtual desktop - aka nail it */ void UpdateDesktop(tmp_win) TwmWindow *tmp_win; { int x, y, width, height; Window dwindow; if (!Scr->Virtual) return; if (!tmp_win->showindesktopdisplay) return; if (tmp_win->icon) { XUnmapWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); return; } GetDesktopWindowCoordinates(tmp_win, &x, &y, &width, &height); /* Stig Ostholm these 3 lines */ dwindow = (tmp_win->nailed) ? Scr->VirtualDesktopDScreen : Scr->VirtualDesktopDisplay; /* if it already has a vd display window, just move it to the right place and map it, else actually create the window */ if (!tmp_win->VirtualDesktopDisplayWindow) { Pixel background, border; #ifdef notdef if (!GetColorFromList(Scr->VirtualDesktopColorBL, tmp_win->full_name, &tmp_win->class, &background) && !GetColorFromList(Scr->TitleBackgroundL, tmp_win->full_name, &tmp_win->class, &background)) background = Scr->VirtualDesktopDisplayC.back; #endif /* notdef */ background = tmp_win->virtual.back; /* 7/10/90 - uses border list not foreground */ if(!GetColorFromList(Scr->VirtualDesktopColorBoL, tmp_win->full_name, &tmp_win->class, &border) && !GetColorFromList(Scr->TitleForegroundL, tmp_win->full_name, &tmp_win->class, &border)) border = Scr->VirtualDesktopDisplayBorder; /* the position and size don't matter */ tmp_win->VirtualDesktopDisplayWindow = XCreateSimpleWindow(dpy, dwindow, x, y, width, height, /* Stig */ 1, border, background); /*RFBCURSOR*/XDefineCursor( dpy, tmp_win->VirtualDesktopDisplayWindow, /*RFBCURSOR*/Scr->DesktopCursor ); /* listen for expose events to redraw the name */ if (Scr->NamesInVirtualDesktop) XSelectInput(dpy, tmp_win->VirtualDesktopDisplayWindow, ExposureMask); /* save the twm window on the window */ XSaveContext(dpy, tmp_win->VirtualDesktopDisplayWindow, VirtualContext, (caddr_t) tmp_win); XSaveContext(dpy, tmp_win->VirtualDesktopDisplayWindow, TwmContext, (caddr_t) tmp_win); #if 0 0 /* Stig Ostholm */ 0 /* comment out this section */ 0 } else 0 /* unmap whilst we reconfigure it */ 0 XUnmapWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); 0 0 if (tmp_win->nailed) { 0 x = tmp_win->frame_x / Scr->VirtualDesktopDScale; 0 y = tmp_win->frame_y / Scr->VirtualDesktopDScale; 0/* RFB 4/92 no SCALE_D */ 0 /* x = SCALE_D(tmp_win->frame_x); */ 0 /* y = SCALE_D(tmp_win->frame_y); */ 0 0 /* reparent this window into the little screen representation */ 0 XReparentWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, 0 Scr->VirtualDesktopDScreen, x, y); 0 } else { 0 x = tmp_win->virtual_frame_x / Scr->VirtualDesktopDScale; 0 y = tmp_win->virtual_frame_y / Scr->VirtualDesktopDScale; 0/* RFB 4/92 no SCALE_D */ 0 /* x = SCALE_D(tmp_win->virtual_frame_x); */ 0 /* y = SCALE_D(tmp_win->virtual_frame_y); */ 0 0 XReparentWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, 0 Scr->VirtualDesktopDisplay, x, y); 0 } 0 0 /* calculate the sizes and position */ 0 width = SCALE_D( 0 tmp_win->frame_width + Scr->VirtualDesktopDScale / 2 0 + tmp_win->frame_bw + tmp_win->frame_bw ) 0 - 2; 0 height = SCALE_D( 0 tmp_win->frame_height + Scr->VirtualDesktopDScale / 2 0/* #ifdef SHAPE */ 0 /* + tmp_win->title_height */ 0/* #endif */ 0 + tmp_win->frame_bw + tmp_win->frame_bw ) - 2; 0/* 4/92 RFB -- subtract borderwidth from windowwidth... */ 0 if ( width <= 0 ) width = 1; /* 4/92 RFB */ 0 if ( height <= 0 ) height = 1; /* 4/92 RFB */ 0 0#ifdef DEBUG 0 fprintf(stderr, "%d*%d+%d+%d\n", x, y, width, height); 0#endif /* DEBUG */ 0 0 /* move and size it */ 0 XMoveWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, 0 x, y); 0 XResizeWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, 0 width, height); #else /* 0, Stig */ } else { /* Unmapping is fixed by XReparentWindow */ XReparentWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, dwindow, x, y); XResizeWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, width, height); } #endif XMapWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } #if 0 /* Stig */ 0/* Stig Ostholm */ 0/* 0 * remove a window from the desktop display - aka unnail it 0 */ 0void RemoveFromDesktop(tmp_win) 0TwmWindow *tmp_win; 0{ 0 int x, y; 0 0 if (!Scr->Virtual) 0 return; 0 0 /* 0 if (tmp_win->VirtualDesktopDisplayWindow) 0 XUnmapWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); 0 */ 0 /* reparent its representation out of the real screen window */ 0 x = tmp_win->virtual_frame_x /Scr->VirtualDesktopDScale; 0 y = tmp_win->virtual_frame_y / Scr->VirtualDesktopDScale; 0/* RFB 4/92 no SCALE_D */ 0 /* x = SCALE_D(tmp_win->virtual_frame_x); */ 0 /* y = SCALE_D(tmp_win->virtual_frame_y); */ 0 0 XReparentWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, 0 Scr->VirtualDesktopDisplay, x, y); 0} #endif /* 0, Stig */ /* Stig Ostholm * Nail/unnail a window on the desktop display. */ void NailDesktop(tmp_win) TwmWindow *tmp_win; { int x, y; if (!tmp_win->VirtualDesktopDisplayWindow || !Scr->Virtual || tmp_win->icon) return; GetDesktopWindowCoordinates(tmp_win, &x, &y, (int *) 0, (int *) 0); XReparentWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, (tmp_win->nailed) ? Scr->VirtualDesktopDScreen : Scr->VirtualDesktopDisplay, x, y); XMapWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } /* * state during the move */ static unsigned int moving_x, moving_y, moving_w, moving_h, moving_bw; static unsigned int moving_off_x, moving_off_y; Window moving_window; TwmWindow *moving_twindow; /**********************************************************/ /* */ /* RFB 7/16/93 -- moved these static variables up to */ /* this part of the file so that I could use moving_bw */ /* in DisplayScreenOnDesktop(). */ /* */ /* Note that moving_bw is set to 0 if you clicked *in* */ /* the window; therefore it can only have a non-zero */ /* value if you clicked at a random location in the */ /* panner, making the RealScreen jump to the pointer, */ /* AND you also had RealScreenBorderWidth set. */ /* */ /* This is almost the final step in getting the panner */ /* to behave pefectly! It still jitters a bit at the */ /* edges... */ /* */ /**********************************************************/ /* * correctly position the real screen representation on the virtual desktop display */ void DisplayScreenOnDesktop() { int border; if (!Scr->Virtual) return; /* djhjr - 2/15/99 border = ( Scr->UseRealScreenBorder ) ? moving_bw : 0; moving_bw = 0; */ border = moving_bw = 0; /* the -3 is to account for the 2 pixel border and the 1 pixel * offset added by SCALE_D.... */ XMoveWindow(dpy, Scr->VirtualDesktopDScreen, Scr->VirtualDesktopX / Scr->VirtualDesktopDScale - border, Scr->VirtualDesktopY / Scr->VirtualDesktopDScale - border /* SCALE_D(Scr->VirtualDesktopX), */ /* - RFB changed 3 to 1 */ /* SCALE_D(Scr->VirtualDesktopY) */ /* - RFB changed 3 to 1 */ ); /* 4/92 RFB -- simply use SCALE_D; well, no... ** the problem is that SCALE_D adds 1 if the result is 0, but ** just gives the right result otherwise. */ /* Way back, somebody wrote: */ /* I've convinced myself that this is not necessary */ /* XLowerWindow(dpy, Scr->VirtualDesktopDScreen); */ } void ResizeDesktopDisplay(w, h) int w, h; { int bw, x, y, np; if (!Scr->Virtual) return; /* added compensation for the titlebar - djhjr - 2/23/99 */ h -= Scr->VirtualDesktopDisplayTwin->title_height; /* added compensation for frame and bevel widths - djhjr - 2/7/99 */ bw = Scr->VirtualDesktopBevelWidth * 2; if (Scr->BorderBevelWidth) bw += Scr->BorderWidth * 2; np = 0; if ( w - bw != Scr->VirtualDesktopMaxWidth ) { Scr->VirtualDesktopMaxWidth = w - bw; np = 1; } if ( h - bw != Scr->VirtualDesktopMaxHeight ) { Scr->VirtualDesktopMaxHeight = h - bw; np = 1; } if ( np ) { XResizeWindow( dpy, Scr->VirtualDesktopDisplay, Scr->VirtualDesktopMaxWidth, Scr->VirtualDesktopMaxHeight ); } /* calculate the new vd size */ Scr->VirtualDesktopWidth = SCALE_U(w - bw); Scr->VirtualDesktopHeight = SCALE_U(h - bw); x = SCALE_D(Scr->VirtualDesktopX); y = SCALE_D(Scr->VirtualDesktopY); /* redraw it so that the real screen representation ends up on the display */ np = SCALE_D(Scr->VirtualDesktopWidth) - SCALE_D(Scr->MyDisplayWidth); if (x > np) x = np; np = SCALE_D(Scr->VirtualDesktopHeight) - SCALE_D(Scr->MyDisplayHeight); if (y > np) y = np; #ifdef FUDGING /* this is a bit of a fudge factor to account for the borderwidth */ x -= 2; y -= 2; #endif /* FUDGING */ SetRealScreen(SCALE_U(x), SCALE_U(y)); /* done in setrealscreen now */ #ifdef notdef /* move the display window */ XMoveWindow(dpy, Scr->VirtualDesktopDScreen, x - 1, y - 1); #endif /* notdef */ } /* * F_MOVESCREEN function * move a window in the desktop display - possible including the `real' screen */ void StartMoveWindowInDesktop(ev) XMotionEvent ev; { int xoff, yoff; #ifdef notdef TwmWindow *Tmp_win; #endif /* notdef */ if (!Scr->Virtual) return; moving_window = ev.subwindow; if (!moving_window) moving_window = Scr->VirtualDesktopDScreen; XGrabPointer(dpy, Scr->VirtualDesktopDisplayOuter, True, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask, GrabModeAsync, GrabModeAsync, Scr->VirtualDesktopDisplay, Scr->NoCursor, CurrentTime); moving_x = ev.x; moving_y = ev.y; /* djhjr - 4/27/98 */ starting_x = ev.x; starting_y = ev.y; /* find the window by looking at the context on the little window */ if ((moving_window != Scr->VirtualDesktopDScreen) && (XFindContext(dpy, moving_window, VirtualContext, (caddr_t *) &moving_twindow) == XCNOENT)) { /* i don't think that this should _ever_ happen */ moving_window = None; moving_twindow = NULL; return; } /* use Junk globals - djhjr - 4/28/98 */ XGetGeometry(dpy, moving_window, &JunkChild, &xoff, &yoff, &moving_w, &moving_h, &moving_bw, &JunkMask); moving_off_x = moving_off_y = 0; if ( xoff <= moving_x && moving_x <= ( xoff + moving_w ) && yoff <= moving_y && moving_y <= ( yoff + moving_h )) { /* The pointer is IN the window. ** don't start by moving the window so its upper-left is at ** the cursor! RFB */ moving_off_x = xoff - moving_x; moving_off_y = yoff - moving_y; moving_bw = 0; } /* djhjr - 4/28/98 */ XMapRaised(dpy, Scr->SizeWindow); InstallRootColormap(); if (moving_window == Scr->VirtualDesktopDScreen) JunkX = JunkY = 0; else { XGetGeometry(dpy, moving_twindow->frame, &JunkChild, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkMask); /* djhjr - 9/28/99 */ { int hilite = moving_twindow->highlight; moving_twindow->highlight = True; SetBorder(moving_twindow, (hilite) ? True : False); moving_twindow->highlight = hilite; Scr->Focus = moving_twindow; /* evil */ EventHandler[EnterNotify] = HandleUnknown; EventHandler[LeaveNotify] = HandleUnknown; } /* djhjr - 10/2/02 */ if (Scr->VirtualSendsMotionEvents && (moving_window != Scr->VirtualDesktopDScreen && !moving_twindow->opaque_move)) MoveOutline(Scr->Root, JunkX, JunkY, moving_twindow->frame_width, moving_twindow->frame_height, moving_twindow->frame_bw, moving_twindow->title_height + moving_twindow->frame_bw3D); } /* added 'original_? = ' - djhjr - 11/3/03 */ original_x = JunkX + Scr->VirtualDesktopX; original_y = JunkY + Scr->VirtualDesktopY; DisplayPosition(original_x, original_y); /* get things going */ DoMoveWindowOnDesktop(ev.x, ev.y); } void DoMoveWindowOnDesktop(x, y) int x, y; { if (!Scr->Virtual) return; /* * cancel the effects of scaling errors by skipping the code * if nothing is actually moved - djhjr - 4/27/98 */ if (x == starting_x && y == starting_y) return; /* djhjr - 2/7/99 */ x -= Scr->VirtualDesktopBevelWidth; y -= Scr->VirtualDesktopBevelWidth; x += moving_off_x; y += moving_off_y; /* check that we are legit */ if (x < 0) x = 0; else { /* added real screen's border!? - djhjr - 2/15/99 */ int np = ( Scr->VirtualDesktopWidth / Scr->VirtualDesktopDScale ) - moving_w - Scr->RealScreenBorderWidth * 2; /* RFB 4/92 no SCALE_D */ if (x > np) x = np; } if (y < 0) y = 0; else { /* added real screen's border!? - djhjr - 2/15/99 */ int np = ( Scr->VirtualDesktopHeight / Scr->VirtualDesktopDScale ) - moving_h - Scr->RealScreenBorderWidth * 2; /* RFB 4/92 no SCALE_D */ if (y > np) y = np; } moving_x = x; moving_y = y; /* move the display window */ /* removed '- moving_bw' - djhjr - 2/15/99 */ XMoveWindow(dpy, moving_window, x/* - moving_bw*/, y/* - moving_bw*/); /* djhjr - 4/28/98 */ DisplayPosition(SCALE_U(x), SCALE_U(y)); /* nah... it's pretty easy! - djhjr - 4/17/98 * move the real window * * this is very difficult on anything not very powerful * * XMoveWindow(dpy, moving_twindow->frame, SCALE_U(x), SCALE_U(y)); * */ if (Scr->VirtualSendsMotionEvents) if (moving_window != Scr->VirtualDesktopDScreen) { if (moving_twindow->opaque_move) XMoveWindow(dpy, moving_twindow->frame, SCALE_U(x) - Scr->VirtualDesktopX, SCALE_U(y) - Scr->VirtualDesktopY); else MoveOutline(Scr->Root, SCALE_U(x) - Scr->VirtualDesktopX, SCALE_U(y) - Scr->VirtualDesktopY, moving_twindow->frame_width, moving_twindow->frame_height, moving_twindow->frame_bw, moving_twindow->title_height + moving_twindow->frame_bw3D); /* djhjr - 9/28/99 */ Scr->Focus = moving_twindow; /* evil */ } } void EndMoveWindowOnDesktop() { if (!Scr->Virtual) return; /* djhjr - 4/28/98 */ XUnmapWindow(dpy, Scr->SizeWindow); UninstallRootColormap(); if (moving_window == Scr->VirtualDesktopDScreen) { /* added '(Cancel) ? ... :' - djhjr - 11/3/03 */ SetRealScreen((Cancel) ? original_x : SCALE_U(moving_x),/* - moving_bw,*/ (Cancel) ? original_y : SCALE_U(moving_y) /*- moving_bw*/ ); } else { /* djhjr - 4/17/98 10/2/02 */ if (Scr->VirtualSendsMotionEvents && (moving_window != Scr->VirtualDesktopDScreen && !moving_twindow->opaque_move)) /* erase the move outline */ MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); /* same little check as at the top of DoMoveWindowOnDesktop() - djhjr - 4/27/98 */ if (moving_x != starting_x || moving_y != starting_y) { /* move the window in virtual space */ /* added '(Cancel) ? ... :' - djhjr - 11/3/03 */ moving_twindow->virtual_frame_x = (Cancel) ? original_x : SCALE_U(moving_x); moving_twindow->virtual_frame_y = (Cancel) ? original_y : SCALE_U(moving_y); /* move it in real space */ moving_twindow->frame_x = V_TO_R_X(moving_twindow->virtual_frame_x); moving_twindow->frame_y = V_TO_R_Y(moving_twindow->virtual_frame_y); /* djhjr - 11/3/03 */ if (Cancel) XMoveWindow(dpy, moving_window, SCALE_D(original_x), SCALE_D(original_y)); XMoveWindow(dpy, moving_twindow->frame, moving_twindow->frame_x, moving_twindow->frame_y); /* notify the window */ SendConfigureNotify(moving_twindow, moving_twindow->frame_x, moving_twindow->frame_y); } /* djhjr - 9/28/99 */ { int hilite = moving_twindow->highlight; moving_twindow->highlight = True; SetBorder(moving_twindow, False); moving_twindow->highlight = hilite; Scr->Focus = NULL; /* evil */ EventHandler[EnterNotify] = HandleEnterNotify; EventHandler[LeaveNotify] = HandleLeaveNotify; } /* added '!Cancel &&' - djhjr - 11/3/03 */ if (!Cancel && !Scr->NoRaiseMove) { XRaiseWindow(dpy, moving_twindow->frame); XRaiseWindow(dpy, moving_twindow->VirtualDesktopDisplayWindow); RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); } /* djhjr - 6/4/98 */ if (Scr->VirtualSendsMotionEvents && !moving_twindow->opaque_move) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } moving_window = None; return; } moving_window = None; moving_twindow = NULL; } /* Stig Ostholm * move and resize a window on the desktop. */ void MoveResizeDesktop(tmp_win, noraise) TwmWindow *tmp_win; int noraise; { int x, y, w, h; if (!tmp_win->VirtualDesktopDisplayWindow || !Scr->Virtual || tmp_win->icon) return; GetDesktopWindowCoordinates(tmp_win, &x, &y, &w, &h); /* Resize the desktop representation window */ XMoveResizeWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, x, y, w, h); if (!noraise) XRaiseWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } void SetVirtualDesktop(geom, scale) char *geom; int scale; { if (Scr->Virtual) { twmrc_error_prefix(); fprintf(stderr, "VirtualDesktop already defined -- ignored.\n"); return; } if (scale < 0) { twmrc_error_prefix(); fprintf(stderr, "VirtualDesktop scale must be positive, not %d\n", scale); return; } Scr->VirtualDesktopDScale = scale; JunkMask = XParseGeometry (geom, &JunkX, &JunkY, &JunkWidth, &JunkHeight); if ((JunkMask & (WidthValue | HeightValue)) != (WidthValue | HeightValue)) { twmrc_error_prefix(); fprintf (stderr, "bad VirtualDesktop \"%s\"\n", geom); return; } if (JunkWidth <= 0 || JunkHeight <= 0) { twmrc_error_prefix(); fprintf (stderr, "VirtualDesktop \"%s\" must be positive\n", geom); return; } /* * More flexible way of selecting size of virtual desktop (ala tvtwm) * M.J.E. Mol marcel@duteca.et.tudelft.nl */ if (JunkWidth > Scr->MyDisplayWidth) /* specified as total pixels */ JunkWidth /= Scr->VirtualDesktopDScale; else if (JunkWidth*Scr->VirtualDesktopDScale < Scr->MyDisplayWidth) { /* specified as number of physical screens */ JunkWidth *= Scr->MyDisplayWidth; JunkWidth /= Scr->VirtualDesktopDScale; } /* else specified as size of panner window */ if (JunkHeight > Scr->MyDisplayHeight) /* specified as total pixels */ JunkHeight /= Scr->VirtualDesktopDScale; else if (JunkHeight*Scr->VirtualDesktopDScale < Scr->MyDisplayHeight) { /* specified as number of physical screens */ JunkHeight *= Scr->MyDisplayHeight; JunkHeight /= Scr->VirtualDesktopDScale; } /* else specified as size of panner window */ /* tar@math.ksu.edu: fix handling of -0 X and Y geometry */ /* account for VirtualDesktopBevelWidth - djhjr - 9/26/01 */ if (JunkMask & XValue) { if (JunkMask & XNegative) { Scr->VirtualDesktopDX = Scr->MyDisplayWidth - JunkWidth - (2 * Scr->BorderWidth) - (2 * Scr->VirtualDesktopBevelWidth) + JunkX; } else Scr->VirtualDesktopDX = JunkX; } if (JunkMask & YValue) { if (JunkMask & YNegative) { Scr->VirtualDesktopDY = Scr->MyDisplayHeight - JunkHeight - (2 * Scr->BorderWidth) - (2 * Scr->VirtualDesktopBevelWidth) + JunkY; } else Scr->VirtualDesktopDY = JunkY; } JunkWidth *= Scr->VirtualDesktopDScale; JunkHeight *= Scr->VirtualDesktopDScale; /* check that the vd is at least as big as the screen */ /* handled above, M.J.E. Mol ** if ((JunkWidth < Scr->MyDisplayWidth) ** || (JunkHeight < Scr->MyDisplayHeight)) ** { ** twmrc_error_prefix(); ** fprintf(stderr, ** "VirtualDesktop must be larger than screen (%dx%d)\n", ** Scr->MyDisplayWidth, Scr->MyDisplayHeight); ** return; ** } */ Scr->VirtualDesktopWidth = JunkWidth; Scr->VirtualDesktopHeight = JunkHeight; /* all of the values looked reasonable */ Scr->Virtual = TRUE; } void VirtualMoveWindow(t, x, y) TwmWindow *t; int x, y; { if (!Scr->Virtual) return; /* move window in virtual space */ t->virtual_frame_x = x; t->virtual_frame_y = y; /* move it in real space */ t->frame_x = V_TO_R_X(x); t->frame_y = V_TO_R_Y(y); XMoveWindow(dpy, t->frame, t->frame_x, t->frame_y); /* update the display */ /* UpdateDesktop(t); Stig */ MoveResizeDesktop(t, FALSE); /* Stig */ if (!Scr->NoRaiseMove) { XRaiseWindow(dpy, t->frame); /* XRaiseWindow(dpy, t->VirtualDesktopDisplayWindow); Stig */ RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); } } /* * F_SNAP function * for Kevin Twidle * this snaps the real screen to a grid defined by the pandistance values. */ void SnapRealScreen() { int newx, newy; int mod, div; mod = Scr->VirtualDesktopX % Scr->VirtualDesktopPanDistanceX; div = Scr->VirtualDesktopX / Scr->VirtualDesktopPanDistanceX; if (mod > (Scr->VirtualDesktopPanDistanceX / 2)) newx = Scr->VirtualDesktopPanDistanceX * (div + 1); else newx = Scr->VirtualDesktopPanDistanceX * div; mod = Scr->VirtualDesktopY % Scr->VirtualDesktopPanDistanceY; div = Scr->VirtualDesktopY / Scr->VirtualDesktopPanDistanceY; if (mod > (Scr->VirtualDesktopPanDistanceY / 2)) newy = Scr->VirtualDesktopPanDistanceY * (div + 1); else newy = Scr->VirtualDesktopPanDistanceY * div; SetRealScreenInternal(newx, newy, FALSE, NULL, NULL); /* DSE */ } void SetRealScreen(x, y) int x, y; { if (Scr->snapRealScreen) SetRealScreenInternal(x, y, TRUE, NULL, NULL); /* DSE */ else SetRealScreenInternal(x, y, FALSE, NULL, NULL); /* DSE */ } /* * handles the possibility of snapping */ void SetRealScreenInternal(x, y, dosnap, dx, dy) int x, y; int *dx, *dy; /* a pointer to an integer that contains the value (AutoPanBorderWidth + AutoPanExtraWarp) is passed in to both dx and dy when autopanning, or NULL is passed. On return, the value is modified to store how much the pointer should actually be warped, in case AutoPanWarpWithRespectToRealScreen is nonzero. -- DSE */ short dosnap; { int xdiff, ydiff; TwmWindow *Tmp_win; /* check bounds */ if (x < 0) x = 0; if (y < 0) y = 0; if (x > (Scr->VirtualDesktopWidth - Scr->MyDisplayWidth)) x = Scr->VirtualDesktopWidth - Scr->MyDisplayWidth; if (y > (Scr->VirtualDesktopHeight - Scr->MyDisplayHeight)) y = Scr->VirtualDesktopHeight - Scr->MyDisplayHeight; /* if ( Scr->RealScreenBorderWidth ) */ /* { x -= 2; */ /* y -= 2; */ /* } */ /* how big a move is this ? */ xdiff = Scr->VirtualDesktopX - x; ydiff = Scr->VirtualDesktopY - y; { /* calculate how much we might warp the pointer */ int x_warp = ((xdiff<0) ? -1 : 1) * ((50 + abs(xdiff) * Scr->AutoPanWarpWithRespectToRealScreen) / 100); int y_warp = ((ydiff<0) ? -1 : 1) * ((50 + abs(ydiff) * Scr->AutoPanWarpWithRespectToRealScreen) / 100); /* make sure the pointer warps enought with respect to the real screen so that it can get out of the autopan windows. */ if (dx) if ( abs (*dx) < abs(x_warp) ) *dx = x_warp; if (dy) if ( abs (*dx) < abs(y_warp) ) *dy = y_warp; } /* make sure it isn't warped too much in case ``AutoPan 100'' and ``AutoPanWarpWithRespectToRealScreen 100'' (also known as ``NaturalAutopanBehavior'') are set. -- DSE */ { int max_x_warp = ((xdiff<0) ? -1 : 1) * (Scr->MyDisplayWidth - 2 * Scr->AutoPanBorderWidth); int max_y_warp = ((ydiff<0) ? -1 : 1) * (Scr->MyDisplayHeight - 2 * Scr->AutoPanBorderWidth); if (dx) if ( abs(*dx) > abs(max_x_warp) ) *dx = max_x_warp; if (dy) if ( abs(*dy) > abs(max_y_warp) ) *dy = max_y_warp; } /* move all of the windows by walking the twm list */ for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL; Tmp_win = Tmp_win->next) { if (Scr->StaticIconPositions && Tmp_win->icon && Tmp_win->icon_w) { /* * Make icons "stay put" on the virtual desktop when * not otherwise nailed - djhjr - 12/14/98 */ XGetGeometry(dpy, Tmp_win->icon_w, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth); XMoveWindow(dpy, Tmp_win->icon_w, JunkX + xdiff, JunkY + ydiff); } if (Tmp_win->nailed || (Scr->DeIconifyToScreen && Tmp_win->icon)) { /* * The window is nailed or... * The window is currently an icon, we are trying to * keep things on the screen, so move it around the * virtual desktop so that it stays on the real screen */ Tmp_win->virtual_frame_x -= xdiff; Tmp_win->virtual_frame_y -= ydiff; } else { /* * move the window */ Tmp_win->frame_x += xdiff; Tmp_win->frame_y += ydiff; if (!dosnap) { XMoveWindow(dpy, Tmp_win->frame, Tmp_win->frame_x, Tmp_win->frame_y); SendConfigureNotify(Tmp_win, Tmp_win->frame_x, Tmp_win->frame_y); } } } Scr->VirtualDesktopX = x; Scr->VirtualDesktopY = y; if (dosnap) SnapRealScreen(); else DisplayScreenOnDesktop(); } /* * pan the real screen on the virtual desktop by (xoff, yoff) */ void PanRealScreen(xoff, yoff, dx, dy) int xoff, yoff; int *dx, *dy; /* DSE */ { /* panning the screen can never mean that you need to snap */ SetRealScreenInternal(Scr->VirtualDesktopX + xoff, Scr->VirtualDesktopY + yoff, /* why not? - djhjr - 1/24/98 FALSE, dx, dy); */ Scr->snapRealScreen, dx, dy); /* DSE */ } /* * raise the auto-pan windows if needed */ void RaiseAutoPan() { int i; if (Scr->AutoPanX > 0) for (i = 0; i <= 3; i++) XRaiseWindow(dpy, Scr->VirtualDesktopAutoPan[i]); } /* * Raise sticky windows if StickyAbove is set. -- DSE */ void RaiseStickyAbove () { if (Scr->StickyAbove) { TwmWindow *Tmp_win; for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL; Tmp_win = Tmp_win->next) if (Tmp_win->nailed) { XRaiseWindow(dpy,Tmp_win->w); XRaiseWindow(dpy,Tmp_win->VirtualDesktopDisplayWindow); XRaiseWindow(dpy,Tmp_win->frame); } } } /* * Lower sticky windows. -- DSE */ void LowerSticky () { TwmWindow *Tmp_win; for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL; Tmp_win = Tmp_win->next) if (Tmp_win->nailed) { XLowerWindow(dpy,Tmp_win->w); XLowerWindow(dpy,Tmp_win->VirtualDesktopDisplayWindow); XLowerWindow(dpy,Tmp_win->frame); } } vtwm-5.4.7/events.h0100664000015300001300000000752610237645271013011 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: events.h,v 1.14 91/05/10 17:53:58 dave Exp $ * * twm event handler include file * * 17-Nov-87 Thomas E. LaStrange File created * ***********************************************************************/ #ifndef _EVENTS_ #define _EVENTS_ typedef void (*event_proc)(); extern void InitEvents(); extern Bool StashEventTime(); extern Time lastTimestamp; extern void SimulateMapRequest(); extern void AutoRaiseWindow(); #define LastTimestamp() lastTimestamp extern Bool DispatchEvent(); /* depreciated - djhjr - 10/6/02 extern Bool DispatchEvent2(); */ extern void HandleEvents(); extern void HandleExpose(); extern void HandleDestroyNotify(); extern void HandleMapRequest(); extern void HandleMapNotify(); extern void HandleUnmapNotify(); extern void HandleMotionNotify(); extern void HandleButtonRelease(); extern void HandleButtonPress(); extern void HandleEnterNotify(); extern void HandleLeaveNotify(); extern void HandleConfigureRequest(); extern void HandleClientMessage(); extern void HandlePropertyNotify(); extern void HandleKeyPress(); extern void HandleColormapNotify(); extern void HandleVisibilityNotify(); extern void HandleUnknown(); extern void SendConfigureNotify(); extern void InstallRootColormap(); extern int Transient(); extern void UninstallRootColormap(); extern void InstallWindowColormaps(); extern void RedoDoorName(); /* djhjr - 2/28/99 */ extern void RedoListWindow(); /* djhjr - 3/1/99 */ extern event_proc EventHandler[]; extern Window DragWindow; extern int origDragX; extern int origDragY; extern int DragX; extern int DragY; extern int DragWidth; extern int DragHeight; extern int CurrentDragX; extern int CurrentDragY; extern int ButtonPressed; extern int Cancel; extern XEvent Event; #endif /* _EVENTS_ */ vtwm-5.4.7/parse.c0100664000015300001300000020161410237655640012605 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: parse.c,v 1.52 91/07/12 09:59:37 dave Exp $ * * parse the .twmrc file * * 17-Nov-87 Thomas E. LaStrange File created * 10-Oct-90 David M. Sternlicht Storing saved colors on root ***********************************************************************/ #include #include #include #include #include #include "twm.h" #include "screen.h" #include "menus.h" #include "list.h" #include "util.h" #include "gram.h" #include "parse.h" #include /* Submitted by Jason Gloudon */ #ifndef NO_M4_SUPPORT #include #include #include #include #endif extern void twmrc_error_prefix(); #define BUF_LEN 300 static FILE *twmrc; static int ptr = 0; static int len = 0; static char buff[BUF_LEN+1]; static char overflowbuff[20]; /* really only need one */ static int overflowlen; static char **stringListSource, *currentString; void put_pixel_on_root(); int RaiseDelay = 0; /* msec, for AutoRaise *//*RAISEDELAY*/ extern int yylineno; extern int mods; int ConstrainedMoveTime = 400; /* milliseconds, event times */ static int twmFileInput(), twmStringListInput(); void twmUnput(); int (*twmInputFunc)(); extern char *defTwmrc[]; /* default bindings */ /* Submitted by Jason Gloudon */ #ifndef NO_M4_SUPPORT #define Resolution(pixels, mm) ((((pixels) * 100000 / (mm)) + 50) / 100) #define M4_MAXDIGITS 21 /* greater than the number of digits in a long int */ extern Bool PrintErrorMessages; char *make_m4_cmdline(); #endif /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT extern void SetSoundHost(); extern void SetSoundVolume(); #endif /*********************************************************************** * * Procedure: * ParseTwmrc - parse the .twmrc file * * Inputs: * filename - the filename to parse. A NULL indicates $HOME/.twmrc * *********************************************************************** */ static int doparse (ifunc, srctypename, srcname) int (*ifunc)(); char *srctypename; char *srcname; { mods = 0; ptr = 0; len = 0; /* djhjr - 9/18/03 */ #ifdef NEED_YYLINENO_V yylineno = 1; #endif ParseError = FALSE; twmInputFunc = ifunc; overflowlen = 0; yyparse(); if (ParseError) { fprintf (stderr, "%s: errors found in twm %s", ProgramName, srctypename); if (srcname) fprintf (stderr, " \"%s\"", srcname); fprintf (stderr, "\n"); } return (ParseError ? 0 : 1); } /* Changes for m4 pre-processing submitted by Jason Gloudon */ /* added support for user-defined parameters - djhjr - 2/20/99 */ #ifndef NO_M4_SUPPORT int ParseTwmrc (filename, display_name, m4_preprocess, m4_option) char *filename; char *display_name; int m4_preprocess; char *m4_option; /* djhjr - 2/20/99 */ #else int ParseTwmrc (filename) char *filename; #endif { int i; char *cp = NULL; char tmpfilename[257]; #ifndef NO_M4_SUPPORT char *m4_cmdline; int m4_status; #endif /* * If filename given, try it, else try ~/.vtwmrc.#, else try ~/.vtwmrc, * else try system.vtwmrc, else try ~/.twmrc.#, else ~/.twmrc, else * system.twmrc; finally using built-in defaults. * * This choice allows user, then system, versions of .vtwmrc, followed * by user, then system, versions of .twmrc. * Thus, sites that have both twm and vtwm can allow users without * private .vtwmrc or .twmrc files to fall back to system-wide * defaults (very important when there are many users), yet the * presence of a private .twmrc file for twm will not prevent * features of a system-wide .vtwmrc file from exploiting the mew * features of vtwm. Submitted by Nelson H. F. Beebe */ for (twmrc = NULL, i = 0; !twmrc && i <= 6; i++) { switch (i) { case 0: /* -f filename */ cp = filename; break; case 1: /* ~/.vtwmrc.screennum */ if (!filename) { cp = tmpfilename; (void) sprintf (tmpfilename, "%s/.vtwmrc.%d", Home, Scr->screen); break; } continue; case 2: /* ~/.vtwmrc */ if (!filename) { tmpfilename[HomeLen + 8] = '\0'; } break; case 3: /* system.vtwmrc */ cp = SYSTEM_VTWMRC; break; case 4: /* ~/.twmrc.screennum */ if (!filename) { cp = tmpfilename; (void) sprintf (tmpfilename, "%s/.twmrc.%d", Home, Scr->screen); break; } continue; case 5: /* ~/.twmrc */ if(!filename){ tmpfilename[HomeLen + 7] = '\0'; } break; case 6: /* system.twmrc */ cp = SYSTEM_TWMRC; break; } #ifndef NO_M4_SUPPORT if (cp) { if (m4_preprocess && (access(cp, R_OK) == 0) ) { if ((m4_cmdline = make_m4_cmdline(display_name, cp, m4_option)) != NULL) { twmrc = popen(m4_cmdline, "r"); free(m4_cmdline); } else { m4_preprocess = 0; twmrc = fopen (cp, "r"); } } else { twmrc = fopen (cp, "r"); } } #else if (cp) twmrc = fopen (cp, "r"); #endif } if (twmrc) { int status; if (filename && cp != filename) { fprintf (stderr, "%s: unable to open twmrc file %s, using %s instead\n", ProgramName, filename, cp); } status = doparse (twmFileInput, "file", cp); #ifndef NO_M4_SUPPORT if(m4_preprocess){ m4_status = pclose (twmrc); if(!WIFEXITED(m4_status) || (WIFEXITED(m4_status) && WEXITSTATUS(m4_status)) ){ fprintf(stderr, "%s: m4 returned %d\n", ProgramName, WEXITSTATUS(m4_status)); exit(-1); } } else { fclose (twmrc); } #else fclose (twmrc); #endif return status; } else { if (filename) { fprintf (stderr, "%s: unable to open twmrc file %s, using built-in defaults instead\n", ProgramName, filename); } return ParseStringList (defTwmrc); } } int ParseStringList (sl) char **sl; { stringListSource = sl; currentString = *sl; return doparse (twmStringListInput, "string list", (char *)NULL); } /*********************************************************************** * * Procedure: * twmFileInput - redefinition of the lex input routine for file input * * Returned Value: * the next input character * *********************************************************************** */ static int twmFileInput() { if (overflowlen) return (int) overflowbuff[--overflowlen]; while (ptr == len) { if (fgets(buff, BUF_LEN, twmrc) == NULL) return 0; /* djhjr - 9/18/03 */ #ifdef NEED_YYLINENO_V yylineno++; #endif ptr = 0; len = strlen(buff); } return ((int)buff[ptr++]); } static int twmStringListInput() { if (overflowlen) return (int) overflowbuff[--overflowlen]; /* * return the character currently pointed to */ if (currentString) { unsigned int c = (unsigned int) *currentString++; if (c) return c; /* if non-nul char */ currentString = *++stringListSource; /* advance to next bol */ return '\n'; /* but say that we hit last eol */ } return 0; /* eof */ } /*********************************************************************** * * Procedure: * twmUnput - redefinition of the lex unput routine * * Inputs: * c - the character to push back onto the input stream * *********************************************************************** */ void twmUnput (c) int c; { if (overflowlen < sizeof overflowbuff) { overflowbuff[overflowlen++] = (char) c; } else { twmrc_error_prefix (); fprintf (stderr, "unable to unput character (%d)\n", c); } } /*********************************************************************** * * Procedure: * TwmOutput - redefinition of the lex output routine * * Inputs: * c - the character to print * *********************************************************************** */ void TwmOutput(c) { putchar(c); } /********************************************************************** * * Parsing table and routines * ***********************************************************************/ typedef struct _TwmKeyword { char *name; int value; int subnum; } TwmKeyword; #define kw0_NoDefaults 1 #define kw0_AutoRelativeResize 2 #define kw0_ForceIcons 3 #define kw0_NoIconManagers 4 #define kw0_OpaqueMove 5 #define kw0_InterpolateMenuColors 6 #define kw0_NoVersion 7 #define kw0_SortIconManager 8 #define kw0_NoGrabServer 9 #define kw0_NoMenuShadows 10 #define kw0_NoRaiseOnMove 11 #define kw0_NoRaiseOnResize 12 #define kw0_NoRaiseOnDeiconify 13 #define kw0_DontMoveOff 14 #define kw0_NoBackingStore 15 #define kw0_NoSaveUnders 16 #define kw0_RestartPreviousState 17 #define kw0_ClientBorderWidth 18 #define kw0_NoTitleFocus 19 #define kw0_RandomPlacement 20 #define kw0_DecorateTransients 21 #define kw0_ShowIconManager 22 #define kw0_NoCaseSensitive 23 #define kw0_NoRaiseOnWarp 24 #define kw0_WarpUnmapped 25 #define kw0_DeIconifyToScreen 26 #define kw0_WarpWindows 27 #define kw0_SnapRealScreen 28 #define kw0_NotVirtualGeometries 29 #define kw0_OldFashionedTwmWindowsMenu 30 /* RFB */ /* djhjr - 2/15/99 #define kw0_UseRealScreenBorder 31 * RFB * */ #define kw0_StayUpMenus 32 #define kw0_NaturalAutopanBehavior 33 /* DSE */ #define kw0_EnhancedExecResources 34 /* DSE */ #define kw0_RightHandSidePulldownMenus 35 /* DSE */ #define kw0_LessRandomZoomZoom 36 /* DSE */ #define kw0_PrettyZoom 37 /* DSE */ #define kw0_NoDefaultTitleButtons 38 /* DSE */ #define kw0_NoDefaultMouseOrKeyboardBindings 39 /* DSE */ #define kw0_StickyAbove 40 /* DSE */ #define kw0_DontInterpolateTitles 41 /* DSE */ #define kw0_FixTransientVirtualGeometries 42 /* DSE */ #define kw0_WarpToTransients 43 /* PF */ #define kw0_NoIconifyIconManagers 44 /* PF */ #define kw0_StayUpOptionalMenus 45 /* PF */ #define kw0_WarpSnug 46 /* DSE */ #define kw0_PointerPlacement 47 /* cg */ /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 4/18/96 * #define kw0_Use3DMenus 47 #define kw0_Use3DTitles 48 #define kw0_Use3DIconManagers 49 #define kw0_Use3DBorders 50 */ /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 * djhjr - 4/25/96 * #define kw0_SunkFocusWindowTitle 51 */ /* djhjr - 6/25/96 */ #define kw0_ShallowReliefWindowButton 52 /* djhjr - 9/21/96 */ #define kw0_ButtonColorIsFrame 53 /* djhjr - 1/6/98 */ #define kw0_FixManagedVirtualGeometries 54 /* djhjr - 1/19/98 */ #define kw0_BeNiceToColormap 55 /* djhjr - 4/17/98 */ #define kw0_VirtualReceivesMotionEvents 56 #define kw0_VirtualSendsMotionEvents 57 /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 5/5/98 * #define kw0_Use3DIcons 58 */ /* djhjr - 5/27/98 */ #define kw0_NoIconManagerFocus 59 /* djhjr - 12/14/98 */ #define kw0_StaticIconPositions 60 /* for rader - djhjr - 2/9/99 */ #define kw0_NoPrettyTitles 61 /* djhjr - 6/22/99 */ #define kw0_DontDeiconifyTransients 62 /* submitted by Ugen Antsilevitch - 5/28/00 */ #define kw0_WarpVisible 63 /* djhjr - 10/2/01 */ #define kw0_StrictIconManager 64 /* djhjr - 10/11/01 */ #define kw0_ZoomZoom 65 /* djhjr - 10/20/02 */ #define kw0_NoBorderDecorations 66 /* djhjr - 11/3/03 */ #define kw0_RaiseOnStart 67 /* djhjr - 9/24/02 #define kws_UsePPosition 1 */ #define kws_IconFont 2 #define kws_ResizeFont 3 #define kws_MenuFont 4 #define kws_TitleFont 5 #define kws_IconManagerFont 6 #define kws_UnknownIcon 7 #define kws_IconDirectory 8 #define kws_MaxWindowSize 9 #define kws_VirtualFont 10 #define kws_DoorFont 11 #define kws_MenuTitleFont 12 /* DSE */ /* djhjr - 5/10/96 */ #define kws_InfoFont 13 /* djhjr - 5/15/96 */ #define kws_ResizeRegion 14 /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #define kws_SoundHost 15 #endif #define kwn_ConstrainedMoveTime 1 #define kwn_MoveDelta 2 #define kwn_XorValue 3 #define kwn_FramePadding 4 #define kwn_TitlePadding 5 #define kwn_ButtonIndent 6 #define kwn_BorderWidth 7 #define kwn_IconBorderWidth 8 #define kwn_TitleButtonBorderWidth 9 #define kwn_PanDistanceX 10 #define kwn_PanDistanceY 11 #define kwn_AutoPan 12 #define kwn_RaiseDelay 13 /* RAISEDELAY */ #define kwn_AutoPanBorderWidth 14 /* DSE */ #define kwn_AutoPanExtraWarp 15 /* DSE */ #define kwn_RealScreenBorderWidth 16 /* DSE */ #define kwn_AutoPanWarpWithRespectToRealScreen 17 /* DSE */ /* djhjr - 8/11/98 * djhjr - 4/18/96 * #define kwn_ThreeDBorderWidth 18 */ /* djhjr - 4/18/96 */ #define kwn_ClearBevelContrast 19 #define kwn_DarkBevelContrast 20 /* djhjr - 5/2/98 */ #define kwn_BorderBevelWidth 21 #define kwn_IconManagerBevelWidth 22 #define kwn_InfoBevelWidth 23 #define kwn_MenuBevelWidth 24 #define kwn_TitleBevelWidth 25 /* djhjr - 8/11/98 */ #define kwn_IconBevelWidth 26 #define kwn_ButtonBevelWidth 27 /* djhjr - 2/7/99 */ #define kwn_DoorBevelWidth 28 #define kwn_VirtualDesktopBevelWidth 29 /* djhjr - 9/8/98 */ #define kwn_PanResistance 30 /* djhjr - 5/22/00 */ #define kwn_MenuScrollBorderWidth 31 #define kwn_MenuScrollJump 32 /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #define kwn_SoundVolume 33 #endif #define kwn_PauseOnExit 34 #define kwn_PauseOnQuit 35 #define kwcl_BorderColor 1 #define kwcl_IconManagerHighlight 2 #define kwcl_BorderTileForeground 3 #define kwcl_BorderTileBackground 4 #define kwcl_TitleForeground 5 #define kwcl_TitleBackground 6 #define kwcl_IconForeground 7 #define kwcl_IconBackground 8 #define kwcl_IconBorderColor 9 #define kwcl_IconManagerForeground 10 #define kwcl_IconManagerBackground 11 #define kwcl_VirtualDesktopBackground 12 #define kwcl_VirtualDesktopForeground 13 #define kwcl_VirtualDesktopBorder 14 #define kwcl_DoorForeground 15 #define kwcl_DoorBackground 16 #define kwc_DefaultForeground 1 #define kwc_DefaultBackground 2 #define kwc_MenuForeground 3 #define kwc_MenuBackground 4 #define kwc_MenuTitleForeground 5 #define kwc_MenuTitleBackground 6 #define kwc_MenuShadowColor 7 #define kwc_VirtualForeground 8 /*RFB VCOLOR*/ #define kwc_VirtualBackground 9 /*RFB VCOLOR*/ #define kwc_RealScreenBackground 10 /* RFB 4/92 */ #define kwc_RealScreenForeground 11 /* RFB 4/92 */ /* djhjr - 10/20/01 */ #define kwm_Name LTYPE_NAME #define kwm_ResName LTYPE_RES_NAME #define kwm_ResClass LTYPE_RES_CLASS /* * The following is sorted alphabetically according to name (which must be * in lowercase and only contain the letters a-z). It is fed to a binary * search to parse keywords. */ static TwmKeyword keytable[] = { { "all", ALL, 0 }, /* djhjr - 4/26/99 */ { "appletregion", APPLET_REGION, 0 }, { "autopan", NKEYWORD, kwn_AutoPan }, { "autopanborderwidth", NKEYWORD, kwn_AutoPanBorderWidth }, /* DSE */ { "autopanextrawarp", NKEYWORD, kwn_AutoPanExtraWarp }, /* DSE */ { "autopanwarpwithrespecttorealscreen", NKEYWORD, kwn_AutoPanWarpWithRespectToRealScreen }, /* DSE */ { "autoraise", AUTO_RAISE, 0 }, { "autoraisedelay", NKEYWORD, kwn_RaiseDelay },/*RAISEDELAY*/ { "autorelativeresize", KEYWORD, kw0_AutoRelativeResize }, /* djhjr - 1/19/98 */ { "benicetocolormap", KEYWORD, kw0_BeNiceToColormap }, /* djhjr - 5/2/98 */ { "borderbevelwidth", NKEYWORD, kwn_BorderBevelWidth }, { "bordercolor", CLKEYWORD, kwcl_BorderColor }, { "bordertilebackground", CLKEYWORD, kwcl_BorderTileBackground }, { "bordertileforeground", CLKEYWORD, kwcl_BorderTileForeground }, { "borderwidth", NKEYWORD, kwn_BorderWidth }, { "button", BUTTON, 0 }, /* djhjr - 8/11/98 */ { "buttonbevelwidth", NKEYWORD, kwn_ButtonBevelWidth }, /* djhjr - 9/21/96 */ { "buttoncolorisframe", KEYWORD, kw0_ButtonColorIsFrame }, { "buttonindent", SNKEYWORD, kwn_ButtonIndent }, { "c", CONTROL, 0 }, { "center", JKEYWORD, J_CENTER }, /* djhjr - 4/19/96 */ { "clearbevelcontrast", NKEYWORD, kwn_ClearBevelContrast }, { "clientborderwidth", KEYWORD, kw0_ClientBorderWidth }, { "color", COLOR, 0 }, { "constrainedmovetime", NKEYWORD, kwn_ConstrainedMoveTime }, { "control", CONTROL, 0 }, { "cursors", CURSORS, 0 }, { "d", VIRTUAL_WIN, 0 }, /* djhjr - 4/19/96 */ { "darkbevelcontrast", NKEYWORD, kwn_DarkBevelContrast }, { "decoratetransients", KEYWORD, kw0_DecorateTransients }, { "defaultbackground", CKEYWORD, kwc_DefaultBackground }, { "defaultforeground", CKEYWORD, kwc_DefaultForeground }, { "defaultfunction", DEFAULT_FUNCTION, 0 }, { "deiconifytoscreen", KEYWORD, kw0_DeIconifyToScreen }, { "desktop", VIRTUAL_WIN, 0 }, { "desktopdisplaybackground", CLKEYWORD, kwcl_VirtualDesktopBackground }, { "desktopdisplayborder", CLKEYWORD, kwcl_VirtualDesktopBorder }, { "desktopdisplayforeground", CLKEYWORD, kwcl_VirtualDesktopForeground }, { "destroy", KILL, 0 }, /* djhjr - 6/22/99 */ { "dontdeiconifytransients", KEYWORD, kw0_DontDeiconifyTransients }, { "donticonifybyunmapping", DONT_ICONIFY_BY_UNMAPPING, 0 }, { "dontinterpolatetitles", KEYWORD, kw0_DontInterpolateTitles }, { "dontmoveoff", KEYWORD, kw0_DontMoveOff }, { "dontshowindisplay", NO_SHOW_IN_DISPLAY, 0 }, /* Submitted by Erik Agsjo */ { "dontshowintwmwindows", NO_SHOW_IN_TWMWINDOWS, 0 }, /* djhjr - 6/25/98 */ { "dontshowinvtwmwindows", NO_SHOW_IN_TWMWINDOWS, 0 }, { "dontsqueezetitle", DONT_SQUEEZE_TITLE, 0 }, { "door", DOOR, 0 }, { "doorbackground", CLKEYWORD, kwcl_DoorBackground }, /* djhjr - 2/7/99 */ { "doorbevelwidth", NKEYWORD, kwn_DoorBevelWidth }, { "doorfont", SKEYWORD, kws_DoorFont }, { "doorforeground", CLKEYWORD, kwcl_DoorForeground }, { "doors", DOORS, 0 }, { "east", DKEYWORD, D_EAST }, { "enhancedexecresources", KEYWORD, kw0_EnhancedExecResources }, /* DSE */ { "f", FRAME, 0 }, { "f.autopan", FKEYWORD, F_AUTOPAN },/*RFB F_AUTOPAN*/ { "f.autoraise", FKEYWORD, F_AUTORAISE }, { "f.backiconmgr", FKEYWORD, F_BACKICONMGR }, { "f.beep", FKEYWORD, F_BEEP }, /* Submitted by Seth Robertson - 9/9/02 */ { "f.bindbuttons", FKEYWORD, F_BINDBUTTONS }, { "f.bindkeys", FKEYWORD, F_BINDKEYS }, { "f.bottomzoom", FKEYWORD, F_BOTTOMZOOM }, { "f.circledown", FKEYWORD, F_CIRCLEDOWN }, { "f.circleup", FKEYWORD, F_CIRCLEUP }, { "f.colormap", FSKEYWORD, F_COLORMAP }, { "f.cut", FSKEYWORD, F_CUT }, { "f.cutfile", FKEYWORD, F_CUTFILE }, { "f.deiconify", FKEYWORD, F_DEICONIFY }, { "f.delete", FKEYWORD, F_DELETE }, { "f.deletedoor", FKEYWORD, F_DELETEDOOR }, { "f.deltastop", FKEYWORD, F_DELTASTOP }, { "f.destroy", FKEYWORD, F_DESTROY }, { "f.downiconmgr", FKEYWORD, F_DOWNICONMGR }, { "f.enterdoor", FKEYWORD, F_ENTERDOOR }, { "f.exec", FSKEYWORD, F_EXEC }, { "f.file", FSKEYWORD, F_FILE }, { "f.focus", FKEYWORD, F_FOCUS }, { "f.forcemove", FKEYWORD, F_FORCEMOVE }, { "f.forwiconmgr", FKEYWORD, F_FORWICONMGR }, { "f.fullzoom", FKEYWORD, F_FULLZOOM }, { "f.function", FSKEYWORD, F_FUNCTION }, { "f.hbzoom", FKEYWORD, F_BOTTOMZOOM }, { "f.hidedesktopdisplay", FKEYWORD, F_HIDEDESKTOP }, { "f.hideiconmgr", FKEYWORD, F_HIDELIST }, { "f.horizoom", FKEYWORD, F_HORIZOOM }, { "f.htzoom", FKEYWORD, F_TOPZOOM }, { "f.hzoom", FKEYWORD, F_HORIZOOM }, { "f.iconify", FKEYWORD, F_ICONIFY }, { "f.identify", FKEYWORD, F_IDENTIFY }, { "f.lefticonmgr", FKEYWORD, F_LEFTICONMGR }, { "f.leftzoom", FKEYWORD, F_LEFTZOOM }, { "f.lower", FKEYWORD, F_LOWER }, { "f.menu", FSKEYWORD, F_MENU }, { "f.move", FKEYWORD, F_MOVE }, { "f.movescreen", FKEYWORD, F_MOVESCREEN }, { "f.nail", FKEYWORD, F_NAIL }, { "f.nailedabove", FKEYWORD, F_STICKYABOVE }, /* DSE */ /* djhjr - 4/20/98 */ { "f.namedoor", FKEYWORD, F_NAMEDOOR }, { "f.newdoor", FKEYWORD, F_NEWDOOR }, { "f.nexticonmgr", FKEYWORD, F_NEXTICONMGR }, { "f.nop", FKEYWORD, F_NOP }, { "f.pandown", FSKEYWORD, F_PANDOWN }, { "f.panleft", FSKEYWORD, F_PANLEFT }, { "f.panright", FSKEYWORD, F_PANRIGHT }, { "f.panup", FSKEYWORD, F_PANUP }, /* djhjr - 11/15/02 */ { "f.playsound", FSKEYWORD, F_PLAYSOUND }, { "f.previconmgr", FKEYWORD, F_PREVICONMGR }, { "f.quit", FKEYWORD, F_QUIT }, { "f.raise", FKEYWORD, F_RAISE }, { "f.raiselower", FKEYWORD, F_RAISELOWER }, { "f.refresh", FKEYWORD, F_REFRESH }, { "f.resetdesktop", FKEYWORD, F_RESETDESKTOP }, { "f.resize", FKEYWORD, F_RESIZE }, { "f.restart", FKEYWORD, F_RESTART }, { "f.righticonmgr", FKEYWORD, F_RIGHTICONMGR }, { "f.rightzoom", FKEYWORD, F_RIGHTZOOM }, { "f.ring", FKEYWORD, F_RING }, { "f.saveyourself", FKEYWORD, F_SAVEYOURSELF }, /* djhjr - 4/30/96 */ { "f.separator", FKEYWORD, F_SEPARATOR }, { "f.setrealscreen", FSKEYWORD, F_SETREALSCREEN }, { "f.showdesktopdisplay", FKEYWORD, F_SHOWDESKTOP }, { "f.showiconmgr", FKEYWORD, F_SHOWLIST }, { "f.snap", FKEYWORD, F_SNAP }, { "f.snaprealscreen", FKEYWORD, F_SNAPREALSCREEN }, { "f.snugdesktop", FKEYWORD, F_SNUGDESKTOP }, { "f.snugwindow", FKEYWORD, F_SNUGWINDOW }, { "f.sorticonmgr", FKEYWORD, F_SORTICONMGR }, /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT { "f.sounds", FKEYWORD, F_SOUNDS }, #endif { "f.source", FSKEYWORD, F_BEEP }, /* XXX - don't work */ { "f.squeezecenter", FKEYWORD, F_SQUEEZECENTER },/*RFB SQUEEZE*/ { "f.squeezeleft", FKEYWORD, F_SQUEEZELEFT },/*RFB SQUEEZE*/ { "f.squeezeright", FKEYWORD, F_SQUEEZERIGHT },/*RFB SQUEEZE*/ /* djhjr - 7/15/98 */ { "f.startwm", FSKEYWORD, F_STARTWM }, /* djhjr - 12/14/98 */ { "f.staticiconpositions", FKEYWORD, F_STATICICONPOSITIONS }, { "f.stick", FKEYWORD, F_NAIL }, { "f.stickyabove", FKEYWORD, F_STICKYABOVE }, /* DSE */ /* djhjr - 10/2/01 */ { "f.stricticonmgr", FKEYWORD, F_STRICTICONMGR }, { "f.title", FKEYWORD, F_TITLE }, { "f.topzoom", FKEYWORD, F_TOPZOOM }, { "f.twmrc", FKEYWORD, F_RESTART }, /* Submitted by Seth Robertson - 9/9/02 */ { "f.unbindbuttons", FKEYWORD, F_UNBINDBUTTONS }, { "f.unbindkeys", FKEYWORD, F_UNBINDKEYS }, { "f.unfocus", FKEYWORD, F_UNFOCUS }, { "f.upiconmgr", FKEYWORD, F_UPICONMGR }, { "f.version", FKEYWORD, F_VERSION }, { "f.virtualgeometries", FKEYWORD, F_VIRTUALGEOMETRIES }, { "f.vlzoom", FKEYWORD, F_LEFTZOOM }, { "f.vrzoom", FKEYWORD, F_RIGHTZOOM }, { "f.warp", FKEYWORD, F_WARP }, /* PF */ { "f.warpclassnext", FSKEYWORD, F_WARPCLASSNEXT }, /* PF */ { "f.warpclassprev", FSKEYWORD, F_WARPCLASSPREV }, /* PF */ { "f.warpring", FSKEYWORD, F_WARPRING }, /* djhjr - 5/30/00 */ { "f.warpsnug", FKEYWORD, F_WARPSNUG }, { "f.warpto", FSKEYWORD, F_WARPTO }, { "f.warptoiconmgr", FSKEYWORD, F_WARPTOICONMGR }, { "f.warptonewest", FKEYWORD, F_WARPTONEWEST }, /* PF */ { "f.warptoscreen", FSKEYWORD, F_WARPTOSCREEN }, /* submitted by Ugen Antsilevitch - 5/28/00 */ { "f.warpvisible", FKEYWORD, F_WARPVISIBLE }, { "f.winrefresh", FKEYWORD, F_WINREFRESH }, { "f.zoom", FKEYWORD, F_ZOOM }, { "f.zoomzoom", FKEYWORD, F_ZOOMZOOM }, /* djhjr - 1/6/98 */ { "fixmanagedvirtualgeometries", KEYWORD, kw0_FixManagedVirtualGeometries }, { "fixtransientvirtualgeometries", KEYWORD, kw0_FixTransientVirtualGeometries }, /* DSE */ { "forceicons", KEYWORD, kw0_ForceIcons }, { "frame", FRAME, 0 }, { "framepadding", NKEYWORD, kwn_FramePadding }, { "function", FUNCTION, 0 }, { "i", ICON, 0 }, { "icon", ICON, 0 }, { "iconbackground", CLKEYWORD, kwcl_IconBackground }, /* djhjr - 8/11/98 */ { "iconbevelwidth", NKEYWORD, kwn_IconBevelWidth }, { "iconbordercolor", CLKEYWORD, kwcl_IconBorderColor }, { "iconborderwidth", NKEYWORD, kwn_IconBorderWidth }, { "icondirectory", SKEYWORD, kws_IconDirectory }, { "iconfont", SKEYWORD, kws_IconFont }, { "iconforeground", CLKEYWORD, kwcl_IconForeground }, { "iconifybyunmapping", ICONIFY_BY_UNMAPPING, 0 }, { "iconmanagerbackground", CLKEYWORD, kwcl_IconManagerBackground }, /* djhjr - 5/2/98 */ { "iconmanagerbevelwidth", NKEYWORD, kwn_IconManagerBevelWidth }, { "iconmanagerdontshow", ICONMGR_NOSHOW, 0 }, { "iconmanagerfont", SKEYWORD, kws_IconManagerFont }, { "iconmanagerforeground", CLKEYWORD, kwcl_IconManagerForeground }, { "iconmanagergeometry", ICONMGR_GEOMETRY, 0 }, { "iconmanagerhighlight", CLKEYWORD, kwcl_IconManagerHighlight }, /* djhjr - 10/30/02 */ { "iconmanagerpixmap", ICONMGRICONMAP, 0 }, { "iconmanagers", ICONMGRS, 0 }, { "iconmanagershow", ICONMGR_SHOW, 0 }, { "iconmgr", ICONMGR, 0 }, { "iconregion", ICON_REGION, 0 }, { "icons", ICONS, 0 }, /* djhjr - 9/10/03 */ { "ignoremodifiers", IGNORE_MODS, 0 }, /* djhjr - 5/2/98 */ { "infobevelwidth", NKEYWORD, kwn_InfoBevelWidth }, /* djhjr - 5/10/96 */ { "infofont", SKEYWORD, kws_InfoFont }, { "interpolatemenucolors", KEYWORD, kw0_InterpolateMenuColors }, { "l", LOCK, 0 }, { "left", JKEYWORD, J_LEFT }, { "lefttitlebutton", LEFT_TITLEBUTTON, 0 }, { "lessrandomzoomzoom", KEYWORD, kw0_LessRandomZoomZoom }, /* DSE */ { "lock", LOCK, 0 }, { "m", META, 0 }, { "maketitle", MAKE_TITLE, 0 }, { "maxwindowsize", SKEYWORD, kws_MaxWindowSize }, { "menu", MENU, 0 }, { "menubackground", CKEYWORD, kwc_MenuBackground }, /* djhjr - 5/2/98 */ { "menubevelwidth", NKEYWORD, kwn_MenuBevelWidth }, { "menufont", SKEYWORD, kws_MenuFont }, { "menuforeground", CKEYWORD, kwc_MenuForeground }, /* djhjr - 10/30/02 */ { "menuiconpixmap", MENUICONMAP, 0 }, /* djhjr - 5/22/00 */ { "menuscrollborderwidth", NKEYWORD, kwn_MenuScrollBorderWidth }, { "menuscrolljump", NKEYWORD, kwn_MenuScrollJump }, { "menushadowcolor", CKEYWORD, kwc_MenuShadowColor }, { "menutitlebackground", CKEYWORD, kwc_MenuTitleBackground }, { "menutitlefont", SKEYWORD, kws_MenuTitleFont }, /* DSE */ { "menutitleforeground", CKEYWORD, kwc_MenuTitleForeground }, { "meta", META, 0 }, { "mod", META, 0 }, /* fake it */ { "monochrome", MONOCHROME, 0 }, { "move", MOVE, 0 }, { "movedelta", NKEYWORD, kwn_MoveDelta }, { "nailedabove", KEYWORD, kw0_StickyAbove }, /* DSE */ { "naileddown", NAILEDDOWN, 0}, /* djhjr - 10/20/01 */ { "name", MKEYWORD, kwm_Name }, { "naturalautopanbehavior", KEYWORD, kw0_NaturalAutopanBehavior }, /* DSE */ { "nobackingstore", KEYWORD, kw0_NoBackingStore }, /* submitted by Tim Wiess - 8/23/02 */ { "noborder", NO_BORDER, 0 }, /* djhjr - 10/20/02 */ { "noborderdecorations", KEYWORD, kw0_NoBorderDecorations }, { "nocasesensitive", KEYWORD, kw0_NoCaseSensitive }, { "nodefaultmouseorkeyboardbindings", KEYWORD, kw0_NoDefaultMouseOrKeyboardBindings }, /* DSE */ { "nodefaults", KEYWORD, kw0_NoDefaults }, { "nodefaulttitlebuttons", KEYWORD, kw0_NoDefaultTitleButtons }, /* DSE */ { "nograbserver", KEYWORD, kw0_NoGrabServer }, { "nohighlight", NO_HILITE, 0 }, { "noiconifyiconmanagers", KEYWORD, kw0_NoIconifyIconManagers }, /* PF */ /* djhjr - 5/27/98 */ { "noiconmanagerfocus", KEYWORD, kw0_NoIconManagerFocus }, /* djhjr - 1/27/98 */ { "noiconmanagerhighlight", NO_ICONMGR_HILITE, 0 }, { "noiconmanagers", KEYWORD, kw0_NoIconManagers }, { "nomenushadows", KEYWORD, kw0_NoMenuShadows }, /* djhjr - 4/7/98 */ { "noopaquemove", NO_OPAQUE_MOVE, 0 }, { "noopaqueresize", NO_OPAQUE_RESIZE, 0 }, /* for rader - djhjr - 2/9/99 */ { "noprettytitles", KEYWORD, kw0_NoPrettyTitles }, { "noraiseondeiconify", KEYWORD, kw0_NoRaiseOnDeiconify }, { "noraiseonmove", KEYWORD, kw0_NoRaiseOnMove }, { "noraiseonresize", KEYWORD, kw0_NoRaiseOnResize }, { "noraiseonwarp", KEYWORD, kw0_NoRaiseOnWarp }, { "north", DKEYWORD, D_NORTH }, { "nosaveunders", KEYWORD, kw0_NoSaveUnders }, { "nostackmode", NO_STACKMODE, 0 }, { "notitle", NO_TITLE, 0 }, { "notitlefocus", KEYWORD, kw0_NoTitleFocus }, { "notitlehighlight", NO_TITLE_HILITE, 0 }, { "notvirtualgeometries", KEYWORD, kw0_NotVirtualGeometries }, { "noversion", KEYWORD, kw0_NoVersion }, /* submitted by Jonathan Paisley - 10/27/02 */ { "nowindowring", NO_WINDOW_RING, 0 }, { "oldfashionedtwmwindowsmenu", KEYWORD, kw0_OldFashionedTwmWindowsMenu },/*RFB*/ /* djhjr - 6/25/98 */ { "oldfashionedvtwmwindowsmenu", KEYWORD, kw0_OldFashionedTwmWindowsMenu },/*RFB*/ /* djhjr - 4/7/98 { "opaquemove", KEYWORD, kw0_OpaqueMove }, */ { "opaquemove", OPAQUE_MOVE, 0 }, /* djhjr - 4/7/98 */ { "opaqueresize", OPAQUE_RESIZE, 0 }, { "pandistancex", NKEYWORD, kwn_PanDistanceX }, { "pandistancey", NKEYWORD, kwn_PanDistanceY }, /* djhjr - 4/7/98 */ { "panresistance", NKEYWORD, kwn_PanResistance }, /* djhjr - 6/22/01 */ { "pauseonexit", NKEYWORD, kwn_PauseOnExit }, { "pauseonquit", NKEYWORD, kwn_PauseOnQuit }, { "pixmaps", PIXMAPS, 0 }, { "pointerplacement", KEYWORD, kw0_PointerPlacement }, { "prettyzoom", KEYWORD, kw0_PrettyZoom }, /* DSE */ { "r", ROOT, 0 }, { "raisedelay", NKEYWORD, kwn_RaiseDelay },/*RAISEDELAY*/ /* djhjr - 11/3/03 */ { "raiseonstart", KEYWORD, kw0_RaiseOnStart }, { "randomplacement", KEYWORD, kw0_RandomPlacement }, { "realscreenbackground", CKEYWORD, kwc_RealScreenBackground },/*RFB 4/92*/ { "realscreenborderwidth", NKEYWORD, kwn_RealScreenBorderWidth }, /* DSE */ { "realscreenforeground", CKEYWORD, kwc_RealScreenForeground },/*RFB 4/92*/ { "realscreenpixmap", REALSCREENMAP, 0 },/*RFB PIXMAP*/ /* djhjr - 10/20/01 */ { "resclass", MKEYWORD, kwm_ResClass }, { "resize", RESIZE, 0 }, { "resizefont", SKEYWORD, kws_ResizeFont }, /* djhjr - 5/15/96 */ { "resizeregion", SKEYWORD, kws_ResizeRegion }, /* djhjr - 10/20/01 */ { "resname", MKEYWORD, kwm_ResName }, { "restartpreviousstate", KEYWORD, kw0_RestartPreviousState }, { "rhspulldownmenus", KEYWORD, kw0_RightHandSidePulldownMenus }, /* DSE */ { "right", JKEYWORD, J_RIGHT }, { "righthandsidepulldownmenus", KEYWORD, kw0_RightHandSidePulldownMenus }, /* DSE */ { "righttitlebutton", RIGHT_TITLEBUTTON, 0 }, { "root", ROOT, 0 }, { "s", SHIFT, 0 }, { "savecolor", SAVECOLOR, 0}, { "select", SELECT, 0 }, /* djhjr - 6/25/96 */ { "shallowreliefwindowbutton", KEYWORD, kw0_ShallowReliefWindowButton }, { "shift", SHIFT, 0 }, { "showiconmanager", KEYWORD, kw0_ShowIconManager }, { "snaprealscreen", KEYWORD, kw0_SnapRealScreen }, { "sorticonmanager", KEYWORD, kw0_SortIconManager }, /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT { "soundhost", SKEYWORD, kws_SoundHost }, { "sounds", SOUNDS, 0 }, { "soundvolume", NKEYWORD, kwn_SoundVolume }, #endif { "south", DKEYWORD, D_SOUTH }, { "squeezetitle", SQUEEZE_TITLE, 0 }, { "starticonified", START_ICONIFIED, 0 }, /* djhjr - 12/14/98 */ { "staticiconpositions", KEYWORD, kw0_StaticIconPositions }, { "stayupmenus", KEYWORD, kw0_StayUpMenus }, { "stayupoptionalmenus", KEYWORD, kw0_StayUpOptionalMenus }, /* PF */ { "sticky", NAILEDDOWN, 0 },/*RFB*/ { "stickyabove", KEYWORD, kw0_StickyAbove }, /* DSE */ /* djhjr - 10/2/01 */ { "stricticonmanager", KEYWORD, kw0_StrictIconManager }, /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 * djhjr - 4/25/96 * { "sunkfocuswindowtitle", KEYWORD, kw0_SunkFocusWindowTitle }, */ { "t", TITLE, 0 }, /* djhjr - 8/11/98 * djhjr - 4/18/96 * { "threedborderwidth", NKEYWORD, kwn_ThreeDBorderWidth }, */ { "title", TITLE, 0 }, { "titlebackground", CLKEYWORD, kwcl_TitleBackground }, /* djhjr - 5/2/98 */ { "titlebevelwidth", NKEYWORD, kwn_TitleBevelWidth }, { "titlebuttonborderwidth", NKEYWORD, kwn_TitleButtonBorderWidth }, { "titlefont", SKEYWORD, kws_TitleFont }, { "titleforeground", CLKEYWORD, kwcl_TitleForeground }, { "titlehighlight", TITLE_HILITE, 0 }, { "titlepadding", NKEYWORD, kwn_TitlePadding }, { "unknownicon", SKEYWORD, kws_UnknownIcon }, /* djhjr - 9/24/02 { "usepposition", SKEYWORD, kws_UsePPosition }, */ { "usepposition", USE_PPOSITION, 0 }, /* djhjr - 2/15/99 - this is dumb - if RealScreenBorderWidth is defined, use it! { "userealscreenborder", KEYWORD, kw0_UseRealScreenBorder }, *RFB* */ /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 4/18/96 * { "usethreedborders", KEYWORD, kw0_Use3DBorders }, { "usethreediconmanagers", KEYWORD, kw0_Use3DIconManagers }, * djhjr - 5/5/98 * { "usethreedicons", KEYWORD, kw0_Use3DIcons }, { "usethreedmenus", KEYWORD, kw0_Use3DMenus }, { "usethreedtitles", KEYWORD, kw0_Use3DTitles }, */ { "v", VIRTUAL, 0 }, { "virtual", VIRTUAL, 0 }, { "virtualbackground", CKEYWORD, kwc_VirtualBackground },/*RFB VCOLOR*/ { "virtualbackgroundpixmap", VIRTUALMAP, 0 },/*RFB PIXMAP*/ { "virtualdesktop", VIRTUALDESKTOP, 0 }, /* djhjr - 2/7/99 */ { "virtualdesktopbevelwidth", NKEYWORD, kwn_VirtualDesktopBevelWidth }, { "virtualdesktopfont", SKEYWORD, kws_VirtualFont }, { "virtualforeground", CKEYWORD, kwc_VirtualForeground },/*RFB VCOLOR*/ /* djhjr - 4/17/98 */ { "virtualreceivesmotionevents", KEYWORD, kw0_VirtualReceivesMotionEvents }, { "virtualsendsmotionevents", KEYWORD, kw0_VirtualSendsMotionEvents }, { "w", WINDOW, 0 }, { "wait", WAIT, 0 }, /* djhjr - 10/16/02 */ { "warpcentered", WARP_CENTERED, 0 }, { "warpcursor", WARP_CURSOR, 0 }, { "warpsnug", KEYWORD, kw0_WarpSnug }, /* DSE */ { "warptotransients", KEYWORD, kw0_WarpToTransients }, /* PF */ { "warpunmapped", KEYWORD, kw0_WarpUnmapped }, /* submitted by Ugen Antsilevitch - 5/28/00 */ { "warpvisible", KEYWORD, kw0_WarpVisible }, { "warpwindows", KEYWORD, kw0_WarpWindows }, { "west", DKEYWORD, D_WEST }, { "window", WINDOW, 0 }, { "windowfunction", WINDOW_FUNCTION, 0 }, { "windowring", WINDOW_RING, 0 }, { "xorvalue", NKEYWORD, kwn_XorValue }, { "zoom", ZOOM, 0 }, /* djhjr - 10/11/01 */ { "zoomzoom", KEYWORD, kw0_ZoomZoom }, }; static int numkeywords = (sizeof(keytable)/sizeof(keytable[0])); int parse_keyword (s, nump) char *s; int *nump; { register int lower = 0, upper = numkeywords - 1; XmuCopyISOLatin1Lowered (s, s); while (lower <= upper) { int middle = (lower + upper) / 2; TwmKeyword *p = &keytable[middle]; int res = strcmp (p->name, s); if (res < 0) { lower = middle + 1; } else if (res == 0) { *nump = p->subnum; return p->value; } else { upper = middle - 1; } } return ERRORTOKEN; } /* * action routines called by grammar */ int do_single_keyword (keyword) int keyword; { switch (keyword) { case kw0_NoDefaults: Scr->NoDefaultMouseOrKeyboardBindings = TRUE; Scr->NoDefaultTitleButtons = TRUE; return 1; case kw0_NoDefaultMouseOrKeyboardBindings: /* DSE */ Scr->NoDefaultMouseOrKeyboardBindings = TRUE; return 1; case kw0_NoDefaultTitleButtons: /* DSE */ Scr->NoDefaultTitleButtons = TRUE; return 1; case kw0_StayUpMenus: if (Scr->FirstTime) Scr->StayUpMenus = TRUE; return 1; case kw0_StayUpOptionalMenus: /* PF */ if (Scr->FirstTime) Scr->StayUpOptionalMenus = Scr->StayUpMenus = TRUE; return 1; /* djhjr - 2/15/99 - this is dumb - if RealScreenBorderWidth is defined, use it! case kw0_UseRealScreenBorder: *RFB* Scr->UseRealScreenBorder = TRUE; return 1; */ case kw0_OldFashionedTwmWindowsMenu:/*RFB*/ Scr->OldFashionedTwmWindowsMenu = TRUE; return 1; case kw0_AutoRelativeResize: Scr->AutoRelativeResize = TRUE; return 1; case kw0_ForceIcons: if (Scr->FirstTime) Scr->ForceIcon = TRUE; return 1; case kw0_NoIconManagers: Scr->NoIconManagers = TRUE; return 1; case kw0_NoIconifyIconManagers: /* PF */ Scr->NoIconifyIconManagers = TRUE; return 1; /* djhjr - 4/7/98 case kw0_OpaqueMove: Scr->OpaqueMove = TRUE; return 1; */ case kw0_InterpolateMenuColors: if (Scr->FirstTime) Scr->InterpolateMenuColors = TRUE; return 1; case kw0_NoVersion: /* obsolete */ return 1; case kw0_SortIconManager: if (Scr->FirstTime) Scr->SortIconMgr = TRUE; return 1; case kw0_NoGrabServer: Scr->NoGrabServer = TRUE; return 1; case kw0_NoMenuShadows: if (Scr->FirstTime) Scr->Shadow = FALSE; return 1; case kw0_NoRaiseOnMove: if (Scr->FirstTime) Scr->NoRaiseMove = TRUE; return 1; case kw0_NoRaiseOnResize: if (Scr->FirstTime) Scr->NoRaiseResize = TRUE; return 1; case kw0_NoRaiseOnDeiconify: if (Scr->FirstTime) Scr->NoRaiseDeicon = TRUE; return 1; case kw0_DontMoveOff: Scr->DontMoveOff = TRUE; return 1; case kw0_NoBackingStore: Scr->BackingStore = FALSE; return 1; case kw0_NoSaveUnders: Scr->SaveUnder = FALSE; return 1; case kw0_RestartPreviousState: RestartPreviousState = True; return 1; case kw0_ClientBorderWidth: if (Scr->FirstTime) Scr->ClientBorderWidth = TRUE; return 1; case kw0_NoTitleFocus: Scr->TitleFocus = FALSE; return 1; case kw0_RandomPlacement: Scr->RandomPlacement = TRUE; return 1; case kw0_PointerPlacement: Scr->PointerPlacement = TRUE; return 1; case kw0_DecorateTransients: Scr->DecorateTransients = TRUE; return 1; case kw0_WarpToTransients: /* PF */ Scr->WarpToTransients = TRUE; return 1; case kw0_ShowIconManager: Scr->ShowIconManager = TRUE; return 1; case kw0_NoCaseSensitive: Scr->CaseSensitive = FALSE; return 1; case kw0_NoRaiseOnWarp: Scr->NoRaiseWarp = TRUE; return 1; case kw0_WarpUnmapped: Scr->WarpUnmapped = TRUE; return 1; case kw0_DeIconifyToScreen: Scr->DeIconifyToScreen = TRUE; return 1; case kw0_WarpWindows: Scr->WarpWindows = TRUE; return 1; case kw0_SnapRealScreen: Scr->snapRealScreen = TRUE; return 1; case kw0_NotVirtualGeometries: Scr->GeometriesAreVirtual = FALSE; return 1; case kw0_NaturalAutopanBehavior: /* DSE */ Scr->AutoPanWarpWithRespectToRealScreen = 100; return 1; case kw0_EnhancedExecResources: /* DSE */ Scr->EnhancedExecResources = TRUE; return 1; case kw0_RightHandSidePulldownMenus: /* DSE */ Scr->RightHandSidePulldownMenus = TRUE; return 1; case kw0_LessRandomZoomZoom: /* DSE */ Scr->LessRandomZoomZoom = TRUE; return 1; case kw0_PrettyZoom: /* DSE */ Scr->PrettyZoom = TRUE; return 1; case kw0_StickyAbove: /* DSE */ Scr->StickyAbove = TRUE; return 1; case kw0_DontInterpolateTitles: /* DSE */ Scr->DontInterpolateTitles = TRUE; return 1; /* djhjr - 1/6/98 */ case kw0_FixManagedVirtualGeometries: Scr->FixManagedVirtualGeometries = TRUE; return 1; case kw0_FixTransientVirtualGeometries: /* DSE */ Scr->FixTransientVirtualGeometries = TRUE; return 1; case kw0_WarpSnug: /* DSE */ Scr->WarpSnug = TRUE; return 1; /* djhjr - 6/25/96 */ case kw0_ShallowReliefWindowButton: Scr->ShallowReliefWindowButton = 1; return 1; /* obsoleted by the *BevelWidth resources - djhjr - 8/11/98 * djhjr - 4/18/96 * case kw0_Use3DBorders: Scr->use3Dborders = TRUE; return 1; case kw0_Use3DIconManagers: Scr->use3Diconmanagers = TRUE; return 1; case kw0_Use3DMenus: Scr->use3Dmenus = TRUE; return 1; case kw0_Use3DTitles: Scr->use3Dtitles = TRUE; return 1; * djhjr - 5/5/98 * case kw0_Use3DIcons: Scr->use3Dicons = TRUE; return 1; */ /* obsoleted by the ":xpm:*" built-in pixmaps - djhjr - 10/26/02 * djhjr - 4/25/96 * case kw0_SunkFocusWindowTitle: Scr->SunkFocusWindowTitle = TRUE; return 1; */ /* djhjr - 9/21/96 */ case kw0_ButtonColorIsFrame: Scr->ButtonColorIsFrame = TRUE; return 1; /* djhjr - 1/19/98 */ case kw0_BeNiceToColormap: Scr->BeNiceToColormap = TRUE; return 1; /* djhjr - 4/17/98 */ case kw0_VirtualReceivesMotionEvents: Scr->VirtualReceivesMotionEvents = TRUE; return 1; case kw0_VirtualSendsMotionEvents: Scr->VirtualSendsMotionEvents = TRUE; return 1; /* djhjr - 5/27/98 */ case kw0_NoIconManagerFocus: Scr->IconManagerFocus = FALSE; return 1; /* djhjr - 12/14/98 */ case kw0_StaticIconPositions: Scr->StaticIconPositions = TRUE; return 1; /* for rader - djhjr - 2/9/99 */ case kw0_NoPrettyTitles: Scr->NoPrettyTitles = TRUE; return 1; /* djhjr - 6/22/99 */ case kw0_DontDeiconifyTransients: Scr->DontDeiconifyTransients = TRUE; return 1; /* submitted by Ugen Antsilevitch - 5/28/00 */ case kw0_WarpVisible: Scr->WarpVisible = TRUE; return 1; /* djhjr - 10/2/01 */ case kw0_StrictIconManager: Scr->StrictIconManager = TRUE; return 1; /* djhjr - 10/11/01 */ case kw0_ZoomZoom: /* DSE */ Scr->ZoomZoom = TRUE; return 1; /* djhjr - 10/20/02 */ case kw0_NoBorderDecorations: /* DSE */ Scr->NoBorderDecorations = TRUE; return 1; /* djhjr - 11/3/03 */ case kw0_RaiseOnStart: Scr->RaiseOnStart = TRUE; return 1; } return 0; } int do_string_keyword (keyword, s) int keyword; char *s; { /* idea from Seth Robertson - djhjr - 9/17/03 */ if (s == NULL || s[0] == '\0') return 0; switch (keyword) { /* now in gram.y - djhjr - 9/24/02 case kws_UsePPosition: { int ppos = ParseUsePPosition (s); if (ppos < 0) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid UsePPosition argument \"%s\"\n", s); } else { Scr->UsePPosition = ppos; } return 1; } */ case kws_IconFont: if (!Scr->HaveFonts) Scr->IconFont.name = s; return 1; case kws_ResizeFont: if (!Scr->HaveFonts) Scr->SizeFont.name = s; return 1; case kws_MenuFont: if (!Scr->HaveFonts) Scr->MenuFont.name = s; return 1; case kws_TitleFont: if (!Scr->HaveFonts) Scr->TitleBarFont.name = s; return 1; case kws_IconManagerFont: if (!Scr->HaveFonts) Scr->IconManagerFont.name = s; return 1; case kws_MenuTitleFont: /* DSE */ if (!Scr->HaveFonts) Scr->MenuTitleFont.name = s; return 1; /* djhjr - 5/10/96 */ case kws_InfoFont: if (!Scr->HaveFonts) Scr->InfoFont.name = s; return 1; case kws_UnknownIcon: if (Scr->FirstTime) GetUnknownIcon (s); return 1; case kws_IconDirectory: if (Scr->FirstTime) Scr->IconDirectory = ExpandFilename (s); return 1; case kws_MaxWindowSize: JunkMask = XParseGeometry (s, &JunkX, &JunkY, &JunkWidth, &JunkHeight); if ((JunkMask & (WidthValue | HeightValue)) != (WidthValue | HeightValue)) { twmrc_error_prefix(); fprintf (stderr, "bad MaxWindowSize \"%s\"\n", s); return 0; } if (JunkWidth <= 0 || JunkHeight <= 0) { twmrc_error_prefix(); fprintf (stderr, "MaxWindowSize \"%s\" must be positive\n", s); return 0; } Scr->MaxWindowWidth = JunkWidth; Scr->MaxWindowHeight = JunkHeight; return 1; case kws_VirtualFont: Scr->NamesInVirtualDesktop = True; if (!Scr->HaveFonts) Scr->VirtualFont.name = s; return 1; case kws_DoorFont: if (!Scr->HaveFonts) Scr->DoorFont.name = s; return 1; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT case kws_SoundHost: if (Scr->FirstTime) SetSoundHost(s); return 1; #endif /* djhjr - 5/15/96 */ case kws_ResizeRegion: XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, "northwest") == 0) { Scr->ResizeX = R_NORTHWEST; return 1; } else if (strcmp (s, "northeast") == 0) { Scr->ResizeX = R_NORTHEAST; return 1; } if (strcmp (s, "southwest") == 0) { Scr->ResizeX = R_SOUTHWEST; return 1; } else if (strcmp (s, "southeast") == 0) { Scr->ResizeX = R_SOUTHEAST; return 1; } else if (strcmp (s, "centered") == 0) { Scr->ResizeX = R_CENTERED; return 1; } else { twmrc_error_prefix(); fprintf (stderr, "Invalid ResizeRegion \"%s\"\n", s); return 0; } } return 0; } int do_number_keyword (keyword, num) int keyword; int num; { switch (keyword) { case kwn_ConstrainedMoveTime: ConstrainedMoveTime = num; return 1; case kwn_AutoPanBorderWidth: /* DSE */ Scr->AutoPanBorderWidth = (num<1)?1:num; return 1; case kwn_AutoPanExtraWarp: /* DSE */ Scr->AutoPanExtraWarp = (num<0)?0:num; return 1; case kwn_RealScreenBorderWidth: /* DSE */ Scr->RealScreenBorderWidth = (num < 0) ? 0 : num; return 1; case kwn_MoveDelta: Scr->MoveDelta = num; return 1; case kwn_XorValue: if (Scr->FirstTime) Scr->XORvalue = num; return 1; case kwn_FramePadding: if (Scr->FirstTime) Scr->FramePadding = num; return 1; case kwn_TitlePadding: if (Scr->FirstTime) Scr->TitlePadding = num; return 1; case kwn_ButtonIndent: if (Scr->FirstTime) Scr->ButtonIndent = num; return 1; case kwn_BorderWidth: if (Scr->FirstTime) Scr->BorderWidth = num; return 1; case kwn_IconBorderWidth: if (Scr->FirstTime) Scr->IconBorderWidth = num; return 1; case kwn_TitleButtonBorderWidth: if (Scr->FirstTime) Scr->TBInfo.border = num; return 1; case kwn_PanDistanceX: if (Scr->FirstTime) { Scr->VirtualDesktopPanDistanceX = (num * Scr->MyDisplayWidth) / 100; /* added this - djhjr - 1/4/98 */ if (Scr->VirtualDesktopPanDistanceX <= 0) Scr->VirtualDesktopPanDistanceX = 1; } return 1; case kwn_PanDistanceY: if (Scr->FirstTime) { Scr->VirtualDesktopPanDistanceY = (num * Scr->MyDisplayHeight) / 100; /* added this - djhjr - 1/4/98 */ if (Scr->VirtualDesktopPanDistanceY <= 0) Scr->VirtualDesktopPanDistanceY = 1; } return 1; /* djhjr - 9/8/98 */ case kwn_PanResistance: if (Scr->FirstTime) Scr->VirtualDesktopPanResistance = num; if (Scr->VirtualDesktopPanResistance < 0) Scr->VirtualDesktopPanResistance = 0; return 1; case kwn_RaiseDelay: RaiseDelay = num; return 1;/*RAISEDELAY*/ case kwn_AutoPan: if (Scr->FirstTime) { Scr->AutoPanX = (num * Scr->MyDisplayWidth) / 100; Scr->AutoPanY = (num * Scr->MyDisplayHeight) / 100; if (Scr->AutoPanX <= 0) Scr->AutoPanX = 1; if (Scr->AutoPanY <= 0) Scr->AutoPanY = 1; } return 1; case kwn_AutoPanWarpWithRespectToRealScreen: /* DSE */ Scr->AutoPanWarpWithRespectToRealScreen = (num<0)?0:(num>100)?100:num; return 1; /* djhjr - 8/11/98 * djhjr - 4/18/96 * case kwn_ThreeDBorderWidth: if (Scr->FirstTime) Scr->ThreeDBorderWidth = num; return 1; */ /* djhjr - 4/19/96 */ case kwn_ClearBevelContrast: if (Scr->FirstTime) Scr->ClearBevelContrast = num; if (Scr->ClearBevelContrast < 0) Scr->ClearBevelContrast = 0; if (Scr->ClearBevelContrast > 100) Scr->ClearBevelContrast = 100; return 1; case kwn_DarkBevelContrast: if (Scr->FirstTime) Scr->DarkBevelContrast = num; if (Scr->DarkBevelContrast < 0) Scr->DarkBevelContrast = 0; if (Scr->DarkBevelContrast > 100) Scr->DarkBevelContrast = 100; return 1; /* djhjr - 5/2/98 */ case kwn_BorderBevelWidth: if (Scr->FirstTime) Scr->BorderBevelWidth = num; if (Scr->BorderBevelWidth < 0) Scr->BorderBevelWidth = 0; if (Scr->BorderBevelWidth > 9) Scr->BorderBevelWidth = 9; return 1; case kwn_IconManagerBevelWidth: if (Scr->FirstTime) Scr->IconMgrBevelWidth = num; if (Scr->IconMgrBevelWidth < 0) Scr->IconMgrBevelWidth = 0; if (Scr->IconMgrBevelWidth > 9) Scr->IconMgrBevelWidth = 9; return 1; case kwn_InfoBevelWidth: if (Scr->FirstTime) Scr->InfoBevelWidth = num; if (Scr->InfoBevelWidth < 0) Scr->InfoBevelWidth = 0; if (Scr->InfoBevelWidth > 9) Scr->InfoBevelWidth = 9; return 1; case kwn_MenuBevelWidth: if (Scr->FirstTime) Scr->MenuBevelWidth = num; if (Scr->MenuBevelWidth < 0) Scr->MenuBevelWidth = 0; if (Scr->MenuBevelWidth > 9) Scr->MenuBevelWidth = 9; return 1; case kwn_TitleBevelWidth: if (Scr->FirstTime) Scr->TitleBevelWidth = num; if (Scr->TitleBevelWidth < 0) Scr->TitleBevelWidth = 0; if (Scr->TitleBevelWidth > 9) Scr->TitleBevelWidth = 9; return 1; /* djhjr - 8/11/98 */ case kwn_ButtonBevelWidth: if (Scr->FirstTime) Scr->ButtonBevelWidth = num; if (Scr->ButtonBevelWidth < 0) Scr->ButtonBevelWidth = 0; if (Scr->ButtonBevelWidth > 9) Scr->ButtonBevelWidth = 9; return 1; case kwn_IconBevelWidth: if (Scr->FirstTime) Scr->IconBevelWidth = num; if (Scr->IconBevelWidth < 0) Scr->IconBevelWidth = 0; if (Scr->IconBevelWidth > 9) Scr->IconBevelWidth = 9; return 1; /* djhjr - 2/7/99 */ case kwn_DoorBevelWidth: if (Scr->FirstTime) Scr->DoorBevelWidth = num; if (Scr->DoorBevelWidth < 0) Scr->DoorBevelWidth = 0; if (Scr->DoorBevelWidth > 9) Scr->DoorBevelWidth = 9; return 1; case kwn_VirtualDesktopBevelWidth: if (Scr->FirstTime) Scr->VirtualDesktopBevelWidth = num; if (Scr->VirtualDesktopBevelWidth < 0) Scr->VirtualDesktopBevelWidth = 0; if (Scr->VirtualDesktopBevelWidth > 9) Scr->VirtualDesktopBevelWidth = 9; return 1; /* djhjr - 5/22/00 */ case kwn_MenuScrollBorderWidth: if (Scr->FirstTime) Scr->MenuScrollBorderWidth = num; return 1; case kwn_MenuScrollJump: if (Scr->FirstTime) Scr->MenuScrollJump = num; return 1; /* djhjr - 8/16/01 */ #ifndef NO_SOUND_SUPPORT case kwn_SoundVolume: if (Scr->FirstTime) SetSoundVolume(num); return 1; #endif /* djhjr - 6/22/01 */ case kwn_PauseOnExit: if (Scr->FirstTime) Scr->PauseOnExit = num; return 1; case kwn_PauseOnQuit: if (Scr->FirstTime) Scr->PauseOnQuit = num; return 1; } return 0; } name_list **do_colorlist_keyword (keyword, colormode, s) int keyword; int colormode; char *s; { switch (keyword) { case kwcl_BorderColor: GetColor (colormode, &Scr->BorderColor, s); return &Scr->BorderColorL; case kwcl_IconManagerHighlight: GetColor (colormode, &Scr->IconManagerHighlight, s); return &Scr->IconManagerHighlightL; case kwcl_BorderTileForeground: GetColor (colormode, &Scr->BorderTileC.fore, s); return &Scr->BorderTileForegroundL; case kwcl_BorderTileBackground: GetColor (colormode, &Scr->BorderTileC.back, s); return &Scr->BorderTileBackgroundL; case kwcl_TitleForeground: GetColor (colormode, &Scr->TitleC.fore, s); return &Scr->TitleForegroundL; case kwcl_TitleBackground: GetColor (colormode, &Scr->TitleC.back, s); return &Scr->TitleBackgroundL; case kwcl_IconForeground: GetColor (colormode, &Scr->IconC.fore, s); return &Scr->IconForegroundL; case kwcl_IconBackground: GetColor (colormode, &Scr->IconC.back, s); return &Scr->IconBackgroundL; case kwcl_IconBorderColor: GetColor (colormode, &Scr->IconBorderColor, s); return &Scr->IconBorderColorL; case kwcl_IconManagerForeground: GetColor (colormode, &Scr->IconManagerC.fore, s); return &Scr->IconManagerFL; case kwcl_IconManagerBackground: GetColor (colormode, &Scr->IconManagerC.back, s); return &Scr->IconManagerBL; case kwcl_VirtualDesktopForeground: GetColor (colormode, &Scr->VirtualDesktopDisplayC.fore, s); return &Scr->VirtualDesktopColorFL; case kwcl_VirtualDesktopBackground: GetColor (colormode, &Scr->VirtualDesktopDisplayC.back, s); return &Scr->VirtualDesktopColorBL; case kwcl_VirtualDesktopBorder: GetColor (colormode, &Scr->VirtualDesktopDisplayBorder, s); return &Scr->VirtualDesktopColorBoL; case kwcl_DoorForeground: GetColor (colormode, &Scr->DoorC.fore, s); return &Scr->DoorForegroundL; case kwcl_DoorBackground: GetColor (colormode, &Scr->DoorC.back, s); return &Scr->DoorBackgroundL; } return NULL; } int do_color_keyword (keyword, colormode, s) int keyword; int colormode; char *s; { switch (keyword) { case kwc_DefaultForeground: GetColor (colormode, &Scr->DefaultC.fore, s); return 1; case kwc_DefaultBackground: GetColor (colormode, &Scr->DefaultC.back, s); return 1; case kwc_MenuForeground: GetColor (colormode, &Scr->MenuC.fore, s); return 1; case kwc_MenuBackground: GetColor (colormode, &Scr->MenuC.back, s); return 1; case kwc_MenuTitleForeground: GetColor (colormode, &Scr->MenuTitleC.fore, s); return 1; case kwc_MenuTitleBackground: GetColor (colormode, &Scr->MenuTitleC.back, s); return 1; case kwc_MenuShadowColor: GetColor (colormode, &Scr->MenuShadowColor, s); return 1; case kwc_VirtualBackground:/*RFB VCOLOR*/ GetColor (colormode, &Scr->VirtualC.back, s);/*RFB VCOLOR*/ return 1;/*RFB VCOLOR*/ case kwc_VirtualForeground:/*RFB VCOLOR*/ GetColor (colormode, &Scr->VirtualC.fore, s);/*RFB VCOLOR*/ return 1;/*RFB VCOLOR*/ case kwc_RealScreenForeground: GetColor( colormode, &Scr->RealScreenC.fore, s);/*RFB 4/92 */ return 1; case kwc_RealScreenBackground: GetColor( colormode, &Scr->RealScreenC.back, s);/*RFB 4/92 */ return 1; } return 0; } /* * put_pixel_on_root() Save a pixel value in twm root window color property. */ void put_pixel_on_root(pixel) Pixel pixel; { int i, addPixel = 1; Atom pixelAtom, retAtom; int retFormat; unsigned long nPixels, retAfter; Pixel *retProp; pixelAtom = XInternAtom(dpy, "_MIT_PRIORITY_COLORS", True); /* added tests for success - djhjr - 1/10/98 */ if (XGetWindowProperty(dpy, Scr->Root, pixelAtom, 0, 8192, False, XA_CARDINAL, &retAtom, &retFormat, &nPixels, &retAfter, (unsigned char **)&retProp) != Success || retAtom == None) return; for (i=0; i< nPixels; i++) if (pixel == retProp[i]) addPixel = 0; if (addPixel) XChangeProperty (dpy, Scr->Root, _XA_MIT_PRIORITY_COLORS, XA_CARDINAL, 32, PropModeAppend, (unsigned char *)&pixel, 1); } /* * do_string_savecolor() save a color from a string in the twmrc file. */ void do_string_savecolor(colormode, s) int colormode; char *s; { Pixel p = ULONG_MAX; GetColor(colormode, &p, s); if (p != ULONG_MAX) put_pixel_on_root(p); } /* * do_var_savecolor() save a color from a var in the twmrc file. */ typedef struct _cnode {int i; struct _cnode *next;} Cnode, *Cptr; Cptr chead = NULL; void do_var_savecolor(key) int key; { Cptr cptrav, cpnew; if (!chead) { chead = (Cptr)malloc(sizeof(Cnode)); chead->i = key; chead->next = NULL; } else { cptrav = chead; while (cptrav->next != NULL) { cptrav = cptrav->next; } cpnew = (Cptr)malloc(sizeof(Cnode)); cpnew->i = key; cpnew->next = NULL; cptrav->next = cpnew; } } /* * assign_var_savecolor() traverse the var save color list placeing the pixels * in the root window property. */ void assign_var_savecolor() { Cptr cp = chead; while (cp != NULL) { switch (cp->i) { case kwcl_BorderColor: put_pixel_on_root(Scr->BorderColor); break; case kwcl_IconManagerHighlight: put_pixel_on_root(Scr->IconManagerHighlight); break; case kwcl_BorderTileForeground: put_pixel_on_root(Scr->BorderTileC.fore); break; case kwcl_BorderTileBackground: put_pixel_on_root(Scr->BorderTileC.back); break; case kwcl_TitleForeground: put_pixel_on_root(Scr->TitleC.fore); break; case kwcl_TitleBackground: put_pixel_on_root(Scr->TitleC.back); break; case kwcl_IconForeground: put_pixel_on_root(Scr->IconC.fore); break; case kwcl_IconBackground: put_pixel_on_root(Scr->IconC.back); break; case kwcl_IconBorderColor: put_pixel_on_root(Scr->IconBorderColor); break; case kwcl_IconManagerForeground: put_pixel_on_root(Scr->IconManagerC.fore); break; case kwcl_IconManagerBackground: put_pixel_on_root(Scr->IconManagerC.back); break; } cp = cp->next; } if (chead) { free(chead); chead = NULL; } } /* added 'type' argument - djhjr - 10/20/01 */ void do_squeeze_entry (list, name, type, justify, num, denom) name_list **list; /* squeeze or dont-squeeze list */ char *name; /* window name */ short type; /* match type */ int justify; /* left, center, right */ int num; /* signed pixel count or fraction num */ int denom; /* signed 0 or indicates fraction denom */ { int absnum = (num < 0 ? -num : num); int absdenom = (denom < 0 ? -denom : denom); if (num < 0) { twmrc_error_prefix(); fprintf (stderr, "SqueezeTitle numerator %d made positive\n", num); } if (denom < 0) { twmrc_error_prefix(); fprintf (stderr, "SqueezeTitle denominator %d made positive\n", denom); } if (absnum > absdenom && denom != 0) { twmrc_error_prefix(); fprintf (stderr, "SqueezeTitle fraction %d/%d outside window\n", num, denom); return; } if (denom == 1) { twmrc_error_prefix(); fprintf (stderr, "useless SqueezeTitle fraction %d/%d, assuming 0/0\n", num, denom); absnum = 0; absdenom = 0; } if (HasShape) { SqueezeInfo *sinfo; sinfo = (SqueezeInfo *) malloc (sizeof(SqueezeInfo)); if (!sinfo) { twmrc_error_prefix(); fprintf (stderr, "unable to allocate %d bytes for squeeze info\n", sizeof(SqueezeInfo)); return; } sinfo->justify = justify; sinfo->num = absnum; sinfo->denom = absdenom; /* added 'type' argument - djhjr - 10/20/01 */ AddToList (list, name, type, (char *)sinfo); } } /* Submitted by Jason Gloudon */ /* added support for user-defined parameters - djhjr - 2/20/99 */ /* added support for sound - djhjr - 6/22/01 */ /* added support for regex - djhjr - 10/20/01 */ /* added support for i18n - djhjr - 9/14/03 */ #ifndef NO_M4_SUPPORT char *make_m4_cmdline(display_name, cp, m4_option) char *display_name; char *cp; char *m4_option; /* djhjr - 2/20/99 */ { char *m4_lines[6] = { "m4 -DHOME='%s' -DWIDTH='%d' -DHEIGHT='%d' -DSOUND='%s' ", "-DPLANES='%d' -DBITS_PER_RGB='%d' -DCLASS='%s' -DXPM='%s' ", "-DI18N='%s' -DCOLOR='%s' -DX_RESOLUTION='%d' -DY_RESOLUTION='%d' ", "-DREGEX='%s' -DUSER='%s' -DSERVERHOST='%s' -DCLIENTHOST='%s' ", "-DHOSTNAME='%s' -DTWM_TYPE='vtwm' -DVERSION='%d' ", "-DREVISION='%d' -DVENDOR='%s' -DRELEASE='%d'" }; char *client, *server, *hostname; char *m4_cmdline, *colon, *vc, *env_username; char *is_sound, *is_xpm, *is_regex, *is_color, *is_i18n; int i, client_len, opt_len = 0, cmd_len = 0, server_is_client = 0; struct hostent *hostname_ent; /* djhjr - 2/20/99 */ if (m4_option) { opt_len = strlen(m4_option); /* this isn't likely ever needed, but you just never know... */ if (m4_option[0] == '\'' || m4_option[0] == '"') { if (m4_option[opt_len - 1] != '\'' && m4_option[opt_len - 1] != '"') { fprintf(stderr,"%s: badly formed user-defined m4 parameter\n", ProgramName); return (NULL); } else { m4_option++; opt_len -= 2; } } } /* the sourcing of various hostnames is stolen from tvtwm */ /* pad for NULL terminator - submitted by Jonathan Paisley - 11/11/02 */ for(client = NULL, client_len = 256; client_len < 1024; client_len *= 2){ if((client = malloc(client_len + 1)) == NULL){ fprintf(stderr,"%s: cannot allocate %d bytes for m4\n", ProgramName, client_len + 1); return (NULL); } client[client_len] = '\0'; XmuGetHostname(client, client_len); if(client[client_len] == '\0') break; free(client); client = NULL; } if(client == NULL){ fprintf(stderr, "%s: cannot get hostname for m4\n", ProgramName); return (NULL); } if((server = XDisplayName(display_name)) == NULL){ fprintf(stderr, "%s: cannot get display name for m4\n", ProgramName); return (NULL); } /* we copy so we can modify it safely */ server = strdup(server); if((colon = index(server, ':')) != NULL){ *colon = '\0'; } /* connected to :0 or unix:0 ? */ if((server[0] == '\0') || (!strcmp(server, "unix"))){ if (colon){ *colon = ':'; colon = NULL; } free(server); server = client; server_is_client = 1; } hostname_ent = gethostbyname(client); hostname = hostname_ent != NULL ? hostname_ent->h_name : client; #ifdef NO_XPM_SUPPORT is_xpm = "No"; #else is_xpm = "Yes"; #endif #ifdef NO_SOUND_SUPPORT is_sound = "No"; #else is_sound = "Yes"; #endif #ifdef NO_REGEX_SUPPORT is_regex = "No"; #else is_regex = "Yes"; #endif #ifdef NO_I18N_SUPPORT is_i18n = "No"; #else is_i18n = "Yes"; #endif /* assume colour visual */ is_color = "Yes"; switch(Scr->d_visual->class) { case(StaticGray): vc = "StaticGray"; is_color = "No"; break; case(GrayScale): vc = "GrayScale"; is_color = "No"; break; case(StaticColor): vc = "StaticColor"; break; case(PseudoColor): vc = "PseudoColor"; break; case(TrueColor): vc = "TrueColor"; break; case(DirectColor): vc = "DirectColor"; break; default: vc = "NonStandard"; break; } if((env_username = getenv("LOGNAME")) == NULL){ env_username = ""; } /* * Start with slightly more than the minimal command line, add space for * nine numeric fields, ensure we have room for each of the strings, and * add some breathing room * * Then add space for any user-defined parameters - djhjr - 2/20/99 */ for (i = 0; i < 6; i++) cmd_len += strlen(m4_lines[i]); cmd_len += M4_MAXDIGITS * 9 + HomeLen + strlen(vc) + strlen(is_xpm) + strlen(is_color) + strlen(env_username) + strlen(server) + strlen(client) + strlen(hostname) + strlen(ServerVendor(dpy)) + strlen(is_sound) + strlen(is_regex) + strlen(is_i18n) + strlen(cp) + 16; if (opt_len) cmd_len += opt_len; if((m4_cmdline = malloc(cmd_len)) == NULL){ fprintf(stderr,"%s: cannot allocate %d bytes for m4\n", ProgramName, cmd_len); return (NULL); } /* * Non-SysV systems - specifically, BSD-derived systems - return a * pointer to the string, not its length. */ sprintf(m4_cmdline, m4_lines[0], Home, Scr->MyDisplayWidth, Scr->MyDisplayHeight, is_sound); cmd_len = strlen(m4_cmdline); sprintf(m4_cmdline + cmd_len, m4_lines[1], Scr->d_depth, Scr->d_visual->bits_per_rgb, vc, is_xpm); cmd_len = strlen(m4_cmdline); sprintf(m4_cmdline + cmd_len, m4_lines[2], is_i18n, is_color, Resolution(Scr->MyDisplayWidth, DisplayWidthMM(dpy, Scr->screen)), Resolution(Scr->MyDisplayHeight, DisplayHeightMM(dpy, Scr->screen))); cmd_len = strlen(m4_cmdline); sprintf(m4_cmdline + cmd_len, m4_lines[3], is_regex, env_username, server, client); cmd_len = strlen(m4_cmdline); sprintf(m4_cmdline + cmd_len, m4_lines[4], hostname, ProtocolVersion(dpy)); cmd_len = strlen(m4_cmdline); sprintf(m4_cmdline + cmd_len, m4_lines[5], ProtocolRevision(dpy), ServerVendor(dpy), VendorRelease(dpy)); /* djhjr - 2/20/99 */ cmd_len = strlen(m4_cmdline); if (opt_len) { sprintf(m4_cmdline + cmd_len, " %*.*s", opt_len, opt_len, m4_option); cmd_len = strlen(m4_cmdline); } sprintf(m4_cmdline + cmd_len, " < %s", cp); if (PrintErrorMessages) fprintf(stderr, "\n%s: %s\n", ProgramName, m4_cmdline); if (colon) *colon = ':'; if (!server_is_client) free(server); free(client); return (m4_cmdline); } #endif /* NO_M4_SUPPORT */ vtwm-5.4.7/list.c0100664000015300001300000004001110237645271012435 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: list.c,v 1.20 91/01/09 17:13:30 rws Exp $ * * TWM code to deal with the name lists for the NoTitle list and * the AutoRaise list * * 11-Apr-88 Tom LaStrange Initial Version. * **********************************************************************/ /* * Stolen from TVTWM pl11, updated it to conform to the POSIX 1003.2 * regex spec, backported VTWM 5.3's internal wildcarding code, and * made it work without regex support. * * D. J. Hawkey Jr. - 10/20/01 */ #include #include #ifndef NO_REGEX_SUPPORT #include #include #endif #include "twm.h" #include "screen.h" #include "list.h" #include "gram.h" #define REGCOMP_FLAGS (REG_EXTENDED | REG_NOSUB) #define strdup Strdup /* avoid conflict with system header files */ extern char *strdup(char *); struct name_list_struct { name_list *next; /* pointer to the next name */ char *name; /* the name of the window */ #ifndef NO_REGEX_SUPPORT regex_t re; /* compile only once */ #else char re; /* not used */ #endif short type; /* what type of match */ Atom property; /* if (type == property) */ char *ptr; /* list dependent data */ }; #ifndef NO_REGEX_SUPPORT static char buffer[256]; #endif int match(); /*********************************************************************** * * Wrappers to allow code to step through a list * ***********************************************************************/ name_list * next_entry(list) name_list *list; { return (list->next); } char * contents_of_entry(list) name_list *list; { return (list->ptr); } /**********************************************************************/ #ifdef DEBUG static void printNameList(name, nptr) char *name; name_list *nptr; { printf("printNameList(): %s=[", name); while (nptr) { printf(" '%s':%d", nptr->name, nptr->type); nptr = nptr->next; } printf(" ]\n"); } #endif /*********************************************************************** * * Procedure: * AddToList - add a window name to the appropriate list * * Inputs: * list - the address of the pointer to the head of a list * name - a pointer to the name of the window * type - a bitmask of what to match against * property- a window propery to match against * ptr - pointer to list dependent data * * Special Considerations * If the list does not use the ptr value, a non-null value * should be placed in it. LookInList returns this ptr value * and procedures calling LookInList will check for a non-null * return value as an indication of success. * *********************************************************************** */ void AddToList(list_head, name, type, /*property, */ptr) name_list **list_head; char *name; short type; /* Atom property; */ char *ptr; { Atom property = None; name_list *nptr; if (!list_head) return; /* ignore empty inserts */ nptr = (name_list *)malloc(sizeof(name_list)); if (nptr == NULL) { fprintf (stderr, "%s: unable to allocate %d bytes for name_list\n", ProgramName, sizeof(name_list)); Done(); } #if 0 while (*list_head) list_head = &((*list_head)->next); nptr->next = NULL; #else nptr->next = *list_head; #endif nptr->name = (char *)strdup(name); if (type & LTYPE_HOST) { nptr->type = (type & ~LTYPE_HOST) | LTYPE_PROPERTY; nptr->property = XA_WM_CLIENT_MACHINE; } else { nptr->type = type; nptr->property = property; } nptr->ptr = (ptr == NULL) ? (char *)TRUE : ptr; *list_head = nptr; } /********************************************************************\ * * * New LookInList code by RJC. * * * * Since we want to be able to look for multiple matches (eg, to * * check which relevant icon regions are on the screen), the basic * * procedure is now MultiLookInList and uses a (pseudo-)continuation * * to keep track of where it is. * * * * LookInList is a trivial specialisation of that. * * * * Also, we now allow regular expressions in lists, so here we use * * Henry Spencer's regular expression code. It is possible that we * * should pre-compile all the regular expressions for maximum * * speed. * * * \********************************************************************/ int MatchName(name, pattern, compiled, type) char *name; char *pattern; #ifndef NO_REGEX_SUPPORT regex_t *compiled; #else char *compiled; #endif short type; { #ifdef DEBUG fprintf(stderr, "MatchName(): compare '%s' with '%s'\n", name, pattern); #endif if (type & LTYPE_ANYTHING) return (0); if (type & LTYPE_REGEXP) { #ifndef NO_REGEX_SUPPORT regex_t re; int result; if ((result = regcomp(&re, pattern, REGCOMP_FLAGS)) != 0) { regerror(result, &re, buffer, sizeof(buffer)); regfree(&re); fprintf(stderr, "%s: (1) regcomp(\"%s\") error: %s\n", ProgramName, pattern, buffer); return (result); } result = regexec(&re, name, 0, NULL, 0); regfree(&re); return (result); #else fprintf(stderr, "%s: (1) no support for regcomp(\"%s\")\n", ProgramName, pattern); return (1); #endif } if (type & LTYPE_C_REGEXP) { #ifndef NO_REGEX_SUPPORT return (regexec(compiled, name, 0, NULL, 0)); #else fprintf(stderr, "%s: no support for regexec(\"%s\")\n", ProgramName, name); return (1); #endif } if (type & LTYPE_STRING) return (match(pattern, name)); fprintf(stderr, "%s: bad list type (%d) comparing \"%s\" with \"%s\"\n", ProgramName, type, name, pattern); return (1); } static char * MultiLookInList(list_head, name, class, /*win, */continuation) name_list *list_head; char *name; XClassHint *class; /* Window win; */ name_list **continuation; { name_list *nptr; #if 0 Window win = None; #endif #ifdef DEBUG fprintf(stderr, "MultiLookInList(): looking for '%s'\n", name); #endif for (nptr = list_head ; nptr ; nptr = nptr->next) { /* pre-compile and cache the regex_t */ if (nptr->type & LTYPE_REGEXP) { #ifndef NO_REGEX_SUPPORT int result; if ((result = regcomp(&nptr->re, nptr->name, REGCOMP_FLAGS)) != 0) { regerror(result, &nptr->re, buffer, sizeof(buffer)); regfree(&nptr->re); fprintf(stderr, "%s: (2) regcomp(\"%s\") error: %s\n", ProgramName, nptr->name, buffer); nptr->type |= LTYPE_NOTHING; } else nptr->type |= LTYPE_C_REGEXP; #else fprintf(stderr, "%s: (2) no support for regcomp(\"%s\")\n", ProgramName, nptr->name); nptr->type |= LTYPE_NOTHING; #endif nptr->type &= ~LTYPE_REGEXP; } if (nptr->type & LTYPE_NOTHING) continue; /* skip illegal entry */ if (nptr->type & LTYPE_ANYTHING) { *continuation = nptr->next; return (nptr->ptr); } if (nptr->type & LTYPE_NAME) if (MatchName(name, nptr->name, &nptr->re, nptr->type) == 0) { *continuation = nptr->next; return (nptr->ptr); } if (class) { if (nptr->type & LTYPE_RES_NAME) if (MatchName(class->res_name, nptr->name, &nptr->re, nptr->type) == 0) { *continuation = nptr->next; return (nptr->ptr); } if (nptr->type & LTYPE_RES_CLASS) if (MatchName(class->res_class, nptr->name, &nptr->re, nptr->type) == 0) { *continuation = nptr->next; return (nptr->ptr); } } #if 0 if (win && (nptr->type & LTYPE_PROPERTY)) { char *s = GetPropertyString(win, nptr->property); if (s && MatchName(s, nptr->name, &nptr->re, nptr->type) == 0) { free(s); *continuation = nptr->next; return (nptr->ptr); } if (s) free(s); } #endif } *continuation = NULL; return (NULL); } char * LookInList(list_head, name, class/*, win*/) name_list *list_head; char *name; XClassHint *class; /* Window win; */ { #if 0 name_list *nptr; #endif name_list *rest; char *return_name = MultiLookInList(list_head, name, class, /*win, */&rest); #if 0 if ((Scr->ListRings == TRUE) && (return_name != NULL) && (list_head->next != NULL)) { /* To implement a ring on the linked list where we cant change the */ /* list_head, use a simple unlink/link-at-end alg. unless you need */ /* to move the first link. In that case swap the contents of the */ /* first link with the contents of the second then proceed as */ /* normal. */ name_list *tmp_namelist; if (list_head->ptr == return_name) { char *tmp_name; short tmp_type; char *tmp_ptr; tmp_name = list_head->name; tmp_type = list_head->type; tmp_ptr = list_head->ptr; list_head->name = list_head->next->name; list_head->type = list_head->next->type; list_head->ptr = list_head->next->ptr; list_head->next->name = tmp_name; list_head->next->type = tmp_type; list_head->next->ptr = tmp_ptr; } for (nptr = list_head; nptr->next != NULL; nptr = nptr->next) { if (nptr->next->ptr == return_name) break; } if (nptr->next->next != NULL) { tmp_namelist = nptr->next; nptr->next = nptr->next->next; for (nptr = nptr->next; nptr->next != NULL; nptr = nptr->next); nptr->next = tmp_namelist; nptr->next->next = NULL; } } #endif return (return_name); } #if 0 static char * MultiLookInNameList(list_head, name, continuation) name_list *list_head; char *name; name_list **continuation; { return (MultiLookInList(list_head, name, NULL, /*None, */continuation)); } #endif char * LookInNameList(list_head, name) name_list *list_head; char *name; { return (MultiLookInList(list_head, name, NULL, /*None, */&list_head)); } /*********************************************************************** * * Procedure: * GetColorFromList - look through a list for a window name, or class * * Returned Value: * TRUE if the name was found * FALSE if the name was not found * * Inputs: * list - a pointer to the head of a list * name - a pointer to the name to look for * class - a pointer to the class to look for * * Outputs: * ptr - fill in the list value if the name was found * *********************************************************************** */ int GetColorFromList(list_head, name, class, /*win, */ptr) name_list *list_head; char *name; XClassHint *class; /* Window win; */ Pixel *ptr; { int save; char *val = LookInList(list_head, name, class/*, win*/); if (val) { save = Scr->FirstTime; Scr->FirstTime = TRUE; GetColor(Scr->Monochrome, ptr, val); Scr->FirstTime = save; return (TRUE); } return (FALSE); } /*********************************************************************** * * Procedure: * FreeList - free up a list * *********************************************************************** */ void FreeList(list) name_list **list; { name_list *nptr; name_list *tmp; for (nptr = *list; nptr != NULL; ) { tmp = nptr->next; #ifndef NO_REGEX_SUPPORT if (nptr->type & LTYPE_C_REGEXP) regfree(&nptr->re); #endif free(nptr->name); free((char *) nptr); nptr = tmp; } *list = NULL; } /*********************************************************************** * * MSDOS-ish, Unix-ish, VTWM 5.3 wildcard support * **********************************************************************/ #if 0 static int is_pattern(p) char *p; { while (*p) { switch (*p++) { case '?': case '*': case '[': return (TRUE); case '\\': if (!*p++) return (FALSE); } } return (FALSE); } #endif #define ABORT 2 static int regex_match(); static int regex_match_after_star(p, t) char *p, *t; { register int match; register int nextp; while ((*p == '?') || (*p == '*')) { if (*p == '?') if (!*t++) return (ABORT); p++; } if (!*p) return (TRUE); nextp = *p; if (nextp == '\\') nextp = p[1]; match = FALSE; while (match == FALSE) { if (nextp == *t || nextp == '[') match = regex_match(p, t); if (!*t++) match = ABORT; } return (match); } static int regex_match(p, t) char *p, *t; { register char range_start, range_end; int invert; int member_match; int loop; for (; *p; p++, t++) { if (!*t) return ((*p == '*' && *++p == '\0') ? TRUE : ABORT); switch (*p) { case '?': break; case '*': return (regex_match_after_star(p, t)); case '[': { p++; invert = FALSE; if (*p == '!' || *p == '^') { invert = TRUE; p++; } if (*p == ']') return (ABORT); member_match = FALSE; loop = TRUE; while (loop) { if (*p == ']') { loop = FALSE; continue; } if (*p == '\\') range_start = range_end = *++p; else range_start = range_end = *p; if (!range_start) return (ABORT); if (*++p == '-') { range_end = *++p; if (range_end == '\0' || range_end == ']') return (ABORT); if (range_end == '\\') range_end = *++p; p++; } if (range_start < range_end) { if (*t >= range_start && *t <= range_end) { member_match = TRUE; loop = FALSE; } } else { if (*t >= range_end && *t <= range_start) { member_match = TRUE; loop = FALSE; } } } if ((invert && member_match) || !(invert || member_match)) return (FALSE); if (member_match) { while (*p != ']') { if (!*p) return (ABORT); if (*p == '\\') p++; p++; } } break; } case '\\': p++; default: if (*p != *t) return (FALSE); } } return (!*t); } int match(p, t) char *p, *t; { if ((p == NULL) || (t == NULL)) return (TRUE); return ((regex_match(p, t) == TRUE) ? FALSE : TRUE); } vtwm-5.4.7/cursor.c0100664000015300001300000001350310237637163013006 0ustar callumfid/* * Copyright 1989 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in advertising * or publicity pertaining to distribution of the software without specific, * written prior permission. M.I.T. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /*********************************************************************** * * $XConsortium: cursor.c,v 1.10 89/12/14 14:52:23 jim Exp $ * * cursor creation code * * 05-Apr-89 Thomas E. LaStrange File created * ***********************************************************************/ #include #include "twm.h" #include #include "screen.h" #include "util.h" void NewBitmapCursor(); static struct _CursorName { char *name; unsigned int shape; Cursor cursor; } cursor_names[] = { {"X_cursor", XC_X_cursor, None}, {"arrow", XC_arrow, None}, {"based_arrow_down", XC_based_arrow_down, None}, {"based_arrow_up", XC_based_arrow_up, None}, {"boat", XC_boat, None}, {"bogosity", XC_bogosity, None}, {"bottom_left_corner", XC_bottom_left_corner, None}, {"bottom_right_corner", XC_bottom_right_corner, None}, {"bottom_side", XC_bottom_side, None}, {"bottom_tee", XC_bottom_tee, None}, {"box_spiral", XC_box_spiral, None}, {"center_ptr", XC_center_ptr, None}, {"circle", XC_circle, None}, {"clock", XC_clock, None}, {"coffee_mug", XC_coffee_mug, None}, {"cross", XC_cross, None}, {"cross_reverse", XC_cross_reverse, None}, {"crosshair", XC_crosshair, None}, {"diamond_cross", XC_diamond_cross, None}, {"dot", XC_dot, None}, {"dotbox", XC_dotbox, None}, {"double_arrow", XC_double_arrow, None}, {"draft_large", XC_draft_large, None}, {"draft_small", XC_draft_small, None}, {"draped_box", XC_draped_box, None}, {"exchange", XC_exchange, None}, {"fleur", XC_fleur, None}, {"gobbler", XC_gobbler, None}, {"gumby", XC_gumby, None}, {"hand1", XC_hand1, None}, {"hand2", XC_hand2, None}, {"heart", XC_heart, None}, {"icon", XC_icon, None}, {"iron_cross", XC_iron_cross, None}, {"left_ptr", XC_left_ptr, None}, {"left_side", XC_left_side, None}, {"left_tee", XC_left_tee, None}, {"leftbutton", XC_leftbutton, None}, {"ll_angle", XC_ll_angle, None}, {"lr_angle", XC_lr_angle, None}, {"man", XC_man, None}, {"middlebutton", XC_middlebutton, None}, {"mouse", XC_mouse, None}, {"pencil", XC_pencil, None}, {"pirate", XC_pirate, None}, {"plus", XC_plus, None}, {"question_arrow", XC_question_arrow, None}, {"right_ptr", XC_right_ptr, None}, {"right_side", XC_right_side, None}, {"right_tee", XC_right_tee, None}, {"rightbutton", XC_rightbutton, None}, {"rtl_logo", XC_rtl_logo, None}, {"sailboat", XC_sailboat, None}, {"sb_down_arrow", XC_sb_down_arrow, None}, {"sb_h_double_arrow", XC_sb_h_double_arrow, None}, {"sb_left_arrow", XC_sb_left_arrow, None}, {"sb_right_arrow", XC_sb_right_arrow, None}, {"sb_up_arrow", XC_sb_up_arrow, None}, {"sb_v_double_arrow", XC_sb_v_double_arrow, None}, {"shuttle", XC_shuttle, None}, {"sizing", XC_sizing, None}, {"spider", XC_spider, None}, {"spraycan", XC_spraycan, None}, {"star", XC_star, None}, {"target", XC_target, None}, {"tcross", XC_tcross, None}, {"top_left_arrow", XC_top_left_arrow, None}, {"top_left_corner", XC_top_left_corner, None}, {"top_right_corner", XC_top_right_corner, None}, {"top_side", XC_top_side, None}, {"top_tee", XC_top_tee, None}, {"trek", XC_trek, None}, {"ul_angle", XC_ul_angle, None}, {"umbrella", XC_umbrella, None}, {"ur_angle", XC_ur_angle, None}, {"watch", XC_watch, None}, {"xterm", XC_xterm, None}, }; void NewFontCursor (cp, str) Cursor *cp; char *str; { int i; for (i = 0; i < sizeof(cursor_names)/sizeof(struct _CursorName); i++) { if (strcmp(str, cursor_names[i].name) == 0) { if (cursor_names[i].cursor == None) cursor_names[i].cursor = XCreateFontCursor(dpy, cursor_names[i].shape); *cp = cursor_names[i].cursor; return; } } fprintf (stderr, "%s: unable to find font cursor \"%s\"\n", ProgramName, str); } void NewBitmapCursor(cp, source, mask) Cursor *cp; char *source, *mask; { XColor fore, back; int hotx, hoty; int sx, sy, mx, my; unsigned int sw, sh, mw, mh; Pixmap spm, mpm; Colormap cmap = Scr->TwmRoot.cmaps.cwins[0]->colormap->c; fore.pixel = Scr->Black; XQueryColor(dpy, cmap, &fore); back.pixel = Scr->White; XQueryColor(dpy, cmap, &back); spm = GetBitmap(source); if ((hotx = HotX) < 0) hotx = 0; if ((hoty = HotY) < 0) hoty = 0; mpm = GetBitmap(mask); /* make sure they are the same size */ XGetGeometry(dpy, spm, &JunkRoot, &sx, &sy, &sw, &sh, &JunkBW,&JunkDepth); XGetGeometry(dpy, mpm, &JunkRoot, &mx, &my, &mw, &mh, &JunkBW,&JunkDepth); if (sw != mw || sh != mh) { fprintf (stderr, "%s: cursor bitmaps \"%s\" and \"%s\" not the same size\n", ProgramName, source, mask); return; } *cp = XCreatePixmapCursor(dpy, spm, mpm, &fore, &back, hotx,hoty); } vtwm-5.4.7/desktop.h0100664000015300001300000000451410237640615013145 0ustar callumfid/* * $Id: desktop.h,v 3.0 90/11/20 16:13:13 dme Exp Locker: dme $ * * Copyright (c) 1990 Dave Edmondson. * Copyright (c) 1990 Imperial College of Science, Technoology & Medicine * All Rights Reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the names of Dave Edmondson or Imperial College * not be used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. Dave Edmondson and * Imperial College make no representations about the suitability of this * software for any purpose. It is provided "as is" without express or * implied warranty. */ extern Window moving_window; /* indicates that we are doing a move in the vd display */ extern void CreateDesktopDisplay(); extern void UpdateDesktop(); /* extern void RemoveFromDesktop(); */ extern void MoveResizeDesktop(); extern void NailDesktop(); extern void DisplayScreenOnDesktop(); extern void StartMoveWindowInDesktop(); extern void StartMoveWindowOnDesktop(); extern void EndMoveWindowOnDesktop(); extern void DoMoveWindowOnDesktop(); extern void ResizeDesktopDisplay(); extern void VirtualMoveWindow(); extern void SnapRealScreen(); extern void SetRealScreen(); extern void PanRealScreen(); extern void RaiseStickyAbove(); /* DSE */ extern void LowerSticky(); /* DSE */ extern void RaiseAutoPan(); /* convert real space to virtual space */ #define R_TO_V_X(x) ((x) + Scr->VirtualDesktopX) #define R_TO_V_Y(y) ((y) + Scr->VirtualDesktopY) /* convert virtual space to real space */ #define V_TO_R_X(x) (-(Scr->VirtualDesktopX - (x))) #define V_TO_R_Y(y) (-(Scr->VirtualDesktopY - (y))) /* scale up and down from desktop display to real sizes */ /* #define SCALE_D(x) (((x)/Scr->VirtualDesktopDScale)+1) */ /* don't pass me something like `x++' - please */ #define SCALE_D(x) ((((x)/Scr->VirtualDesktopDScale) < 1) ? 1 : (x)/Scr->VirtualDesktopDScale) #define SCALE_U(x) ((x)*Scr->VirtualDesktopDScale) /* how wide/high the autopan windows are */ #define AP_SIZE (Scr->AutoPanBorderWidth) /* DSE */ /* djhjr - 5/19/98 */ #define VTWM_DESKTOP_CLASS "VTWM Desktop" vtwm-5.4.7/parse.h0100664000015300001300000001363310237645271012613 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: parse.h,v 1.14 89/12/14 14:51:25 jim Exp $ * * .twmrc parsing externs * * 8-Apr-88 Tom LaStrange Initial Version. * **********************************************************************/ #ifndef _PARSE_ #define _PARSE_ extern int ParseTwmrc(), ParseStringList(); extern int (*twmInputFunc)(); extern void twmUnput(); extern void TwmOutput(); /* * This is private to VTWM, to indicate no or invalid functions. * * djhjr - 4/20/98 */ #define F_NOFUNCTION 0 #define F_NOP 0 #define F_BEEP 1 #define F_RESTART 2 #define F_QUIT 3 #define F_FOCUS 4 #define F_REFRESH 5 #define F_WINREFRESH 6 #define F_DELTASTOP 7 #define F_MOVE 8 #define F_POPUP 9 #define F_FORCEMOVE 10 #define F_AUTORAISE 11 #define F_IDENTIFY 12 #define F_ICONIFY 13 #define F_DEICONIFY 14 #define F_UNFOCUS 15 #define F_RESIZE 16 #define F_ZOOM 17 #define F_LEFTZOOM 18 #define F_RIGHTZOOM 19 #define F_TOPZOOM 20 #define F_BOTTOMZOOM 21 #define F_HORIZOOM 22 #define F_FULLZOOM 23 #define F_RAISE 24 #define F_RAISELOWER 25 #define F_LOWER 26 #define F_DESTROY 27 #define F_DELETE 28 #define F_SAVEYOURSELF 29 #define F_VERSION 30 #define F_TITLE 31 #define F_RIGHTICONMGR 32 #define F_LEFTICONMGR 33 #define F_UPICONMGR 34 #define F_DOWNICONMGR 35 #define F_FORWICONMGR 36 #define F_BACKICONMGR 37 #define F_NEXTICONMGR 38 #define F_PREVICONMGR 39 #define F_SORTICONMGR 40 #define F_CIRCLEUP 41 #define F_CIRCLEDOWN 42 #define F_CUTFILE 43 #define F_SHOWLIST 44 #define F_HIDELIST 45 #define F_NAIL 46 #define F_PANDOWN 47 #define F_PANLEFT 48 #define F_PANRIGHT 49 #define F_PANUP 50 #define F_RESETDESKTOP 51 #define F_MOVESCREEN 52 #define F_SNAP 53 #define F_HIDEDESKTOP 54 #define F_SHOWDESKTOP 55 #define F_ENTERDOOR 56 #define F_NEWDOOR 57 #define F_SNUGDESKTOP 58 #define F_SNUGWINDOW 59 #define F_AUTOPAN 60/*RFB F_AUTOPAN*/ #define F_RING 61/*RFB F_RING*/ #define F_SQUEEZELEFT 62/*RFB F_SQUEEZE*/ #define F_SQUEEZERIGHT 63/*RFB F_SQUEEZE*/ #define F_SQUEEZECENTER 64/*RFB F_SQUEEZE*/ #define F_SNAPREALSCREEN 65/*RFB F_SNAPREALSCREEN*/ #define F_VIRTUALGEOMETRIES 66/*marcel@duteca.et.tudelft.nl*/ #define F_DELETEDOOR 67/*marcel@duteca.et.tudelft.nl*/ #define F_ZOOMZOOM 68 /* RFB silly */ #define F_WARP 69 /* PF */ #define F_STICKYABOVE 70 /* DSE */ #define F_MENU 101 /* string */ #define F_WARPTO 102 /* string */ #define F_WARPTOICONMGR 103 /* string */ #define F_WARPRING 104 /* string */ #define F_FILE 105 /* string */ #define F_EXEC 106 /* string */ #define F_CUT 107 /* string */ #define F_FUNCTION 108 /* string */ #define F_WARPTOSCREEN 109 /* string */ #define F_COLORMAP 110 /* string */ #define F_SETREALSCREEN 111 /* string */ #define F_WARPCLASSNEXT 112 /* string -- PF */ #define F_WARPCLASSPREV 113 /* string -- PF */ #define F_WARPTONEWEST 114 /* string -- PF */ /* djhjr - 4/30/96 */ #define F_SEPARATOR 115 /* djhjr - 4/20/98 */ #define F_NAMEDOOR 116 /* djhjr - 7/15/98 */ #define F_STARTWM 117 /* djhjr - 12/14/98 */ #define F_STATICICONPOSITIONS 118 /* submitted by Ugen Antsilevitch - 5/28/00 */ #define F_WARPVISIBLE 119 /* djhjr - 5/30/00 */ #define F_WARPSNUG 120 /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #define F_SOUNDS 121 #endif /* djhjr - 10/2/01 */ #define F_STRICTICONMGR 122 /* Next four submitted by Seth Robertson - 9/9/02 */ #define F_BINDBUTTONS 123 #define F_BINDKEYS 124 #define F_UNBINDBUTTONS 125 #define F_UNBINDKEYS 126 /* djhjr - 11/15/02 */ #define F_PLAYSOUND 127 #define D_NORTH 1 #define D_SOUTH 2 #define D_EAST 3 #define D_WEST 4 /* djhjr - 5/15/96 */ #define R_NORTH 1 #define R_NORTHEAST 2 #define R_EAST 3 #define R_SOUTHEAST 4 #define R_SOUTH 5 #define R_SOUTHWEST 6 #define R_WEST 7 #define R_NORTHWEST 8 #define R_CENTERED 9 #endif /* _PARSE_ */ vtwm-5.4.7/version.c0100664000015300001300000000653210237645271013161 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /* djhjr - 4/23/96 char *Version = "Virtual Desktop TWM (VTWM) - R5 Release (5.3)"; */ /* djhjr - 9/10/96 char *Version = "Virtual Desktop TWM (VTWM) - R5 Release 5.4"; */ /* djhjr - 3/12/97 char *Version = "Virtual Desktop TWM (VTWM) - R5 Release 5.4.1"; */ /* djhjr - 11/17/97 char *Version = "Virtual Desktop TWM (VTWM) - R5 Release 5.4.2"; */ /* djhjr - 1/1/98 char *Version = "Virtual Desktop TWM (VTWM) - R5 Release 5.4.3"; */ /* djhjr - 2/5/98 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.4"; */ /* djhjr - 3/14/98 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.4a"; */ /* djhjr - 3/20/98 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.4b"; */ /* djhjr - 8/11/98 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.4c"; */ /* djhjr - 9/27/98 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.5"; */ /* djhjr - 1/30/99 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.5a"; */ /* djhjr - 11/8/01 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.6"; */ /* djhjr - 10/1/04 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.6a"; */ /* djhjr - 10/2/04 char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.6b"; */ char *Version = "Virtual Desktop TWM (VTWM) - X11R4-6 Release 5.4.7"; vtwm-5.4.7/list.h0100664000015300001300000000674610237641630012456 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: list.h,v 1.12 90/09/14 14:54:42 converse Exp $ * * TWM list handling external definitions * * 11-Apr-88 Tom LaStrange Initial Version. * **********************************************************************/ #ifndef _LIST_ #define _LIST_ #define LTYPE_NAME (1<<0) /* match against window name */ #define LTYPE_RES_NAME (1<<1) /* match against resource name */ #define LTYPE_RES_CLASS (1<<2) /* match against resource class */ #define LTYPE_PROPERTY (1<<3) /* match against a window property */ #define LTYPE_HOST (1<<4) /* match against a host name */ #define LTYPE_REGEXP (1<<8) /* match as a regular expression */ #define LTYPE_C_REGEXP (1<<9) /* match as a compiled regexp */ #define LTYPE_STRING (1<<10) /* match as an exact string */ #define LTYPE_ANYTHING (1<<11) /* match anything */ #define LTYPE_NOTHING (1<<12) /* match nothing */ #define LTYPE_ANY_STRING (LTYPE_NAME | LTYPE_RES_NAME | \ LTYPE_RES_CLASS | LTYPE_STRING) #define LTYPE_ANY_REGEXP (LTYPE_NAME | LTYPE_RES_NAME | \ LTYPE_RES_CLASS | LTYPE_REGEXP) #define LTYPE_EXACT_NAME (LTYPE_NAME | LTYPE_STRING) typedef struct name_list_struct name_list; extern void AddToList(); extern char *LookInList(); extern char *LookInNameList(); extern int GetColorFromList(); extern void FreeList(); extern name_list *next_entry(); extern char *contents_of_entry(); #endif /* _LIST_ */ vtwm-5.4.7/version.h0100664000015300001300000000471110237320377013160 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: version.h,v 1.7 89/10/27 14:01:42 jim Exp $ * * TWM version externs * * 8-Apr-88 Tom LaStrange Initial Version. * **********************************************************************/ #ifndef _VERSION_ #define _VERSION_ extern char *Version; /* djhjr - 9/19/96 */ extern char *lastmake[]; #endif /* _VERSION_ */ vtwm-5.4.7/menus.c0100664000015300001300000047410210237645271012625 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: menus.c,v 1.186 91/07/17 13:58:00 dave Exp $ * * twm menu code * * 17-Nov-87 Thomas E. LaStrange File created * ***********************************************************************/ #include #include /* djhjr - 10/27/02 */ #ifndef NO_REGEX_SUPPORT #include #include #endif #include #include #include #include #include #ifdef NEED_PROCESS_H #include #endif #include /* DSE */ #include "twm.h" #include "gc.h" #include "menus.h" #include "resize.h" #include "events.h" #include "util.h" #include "parse.h" #include "gram.h" #include "screen.h" #include "doors.h" #include "desktop.h" #include "add_window.h" /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT #include "sound.h" #endif #include "version.h" #define strdup Strdup /* avoid conflict with system header files */ extern char *strdup(char *); extern void IconUp(), IconDown(), CreateIconWindow(); /* djhjr - 4/26/99 */ extern void AppletDown(); /* djhjr - 12/2/01 */ extern void delete_pidfile(); /* djhjr - 10/27/02 */ extern int MatchName(); extern void ResizeTwmWindowContents(); extern void SetRaiseWindow(); extern char *Action; extern int Context; extern int ConstrainedMoveTime; extern TwmWindow *ButtonWindow, *Tmp_win; extern XEvent Event, ButtonEvent; extern char *InitFile; int RootFunction = F_NOFUNCTION; MenuRoot *ActiveMenu = NULL; /* the active menu */ MenuItem *ActiveItem = NULL; /* the active menu item */ int MoveFunction = F_NOFUNCTION; /* or F_MOVE or F_FORCEMOVE */ int WindowMoved = FALSE; int menuFromFrameOrWindowOrTitlebar = FALSE; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT int createSoundFromFunction = FALSE; int destroySoundFromFunction = FALSE; #endif void BumpWindowColormap(); void DestroyMenu(); void HideIconManager(); void MakeMenu(); void SendDeleteWindowMessage(); void SendSaveYourselfMessage(); void WarpClass(); void WarpToScreen(); void WarpScreenToWindow(); Cursor NeedToDefer(); /* was an 'int' - Submitted by Michel Eyckmans */ int ConstMove = FALSE; /* constrained move variables */ /* for comparison against MoveDelta - djhjr - 9/5/98 */ static int MenuOrigX, MenuOrigY; /* Globals used to keep track of whether the mouse has moved during a resize function. */ int ResizeOrigX; int ResizeOrigY; extern int origx, origy, origWidth, origHeight; int MenuDepth = 0; /* number of menus up */ static struct { int x; int y; } MenuOrigins[MAXMENUDEPTH]; static Cursor LastCursor; static char *actionHack = ""; /* Submitted by Michel Eyckmans */ /* * context bitmaps for TwmWindows menu, f.showdesktop and f.showiconmgr * djhjr - 9/10/99 */ static int have_twmwindows = -1; static int have_showdesktop = -1; static int have_showlist = -1; void WarpAlongRing(); /* djhjr - 4/18/96 */ void Paint3DEntry(); static void Identify(); void PaintNormalEntry(); /* djhjr - 5/13/98 */ static TwmWindow *next_by_class(); static int warp_if_warpunmapped(); /* djhjr - 7/31/98 */ static void setup_restart(); void RestartVtwm(); /* djhjr - 9/21/99 */ int FindMenuOrFuncInBindings(); int FindMenuOrFuncInWindows(); int FindMenuInMenus(); int FindFuncInMenus(); /* djhjr - 9/21/99 */ void HideIconMgr(); void ShowIconMgr(); /* djhjr - 9/17/02 */ static int do_squeezetitle(); /* djhjr */ #undef MAX /* DSE */ #define MAX(x,y) ((x)>(y)?(x):(y)) #define SHADOWWIDTH 5 /* in pixels */ #define EDGE_OFFSET 5 /* DSE */ /* djhjr - 5/5/98 #define PULLDOWNMENU_OFFSET ((Scr->RightHandSidePulldownMenus)?\ (ActiveMenu->width - EDGE_OFFSET * 2 - Scr->pullW):\ (ActiveMenu->width >> 1)) * DSE * */ #define PULLDOWNMENU_OFFSET ((Scr->RightHandSidePulldownMenus)?\ (JunkWidth - EDGE_OFFSET * 2 - Scr->pullW):\ (JunkWidth >> 1)) /*********************************************************************** * * Procedure: * InitMenus - initialize menu roots * *********************************************************************** */ void InitMenus() { int i, j, k; FuncKey *key, *tmp; for (i = 0; i < MAX_BUTTONS+1; i++) for (j = 0; j < NUM_CONTEXTS; j++) for (k = 0; k < MOD_SIZE; k++) { Scr->Mouse[i][j][k].func = F_NOFUNCTION; Scr->Mouse[i][j][k].item = NULL; } Scr->DefaultFunction.func = F_NOFUNCTION; Scr->WindowFunction.func = F_NOFUNCTION; if (FirstScreen) { for (key = Scr->FuncKeyRoot.next; key != NULL;) { free(key->name); tmp = key; key = key->next; free((char *) tmp); } Scr->FuncKeyRoot.next = NULL; } } /*********************************************************************** * * Procedure: * AddFuncKey - add a function key to the list * * Inputs: * name - the name of the key * cont - the context to look for the key press in * mods - modifier keys that need to be pressed * func - the function to perform * win_name- the window name (if any) * action - the action string associated with the function (if any) * *********************************************************************** */ Bool AddFuncKey (name, cont, mods, func, win_name, action) char *name; int cont, mods, func; char *win_name; char *action; { FuncKey *tmp; KeySym keysym; KeyCode keycode; /* * Don't let a 0 keycode go through, since that means AnyKey to the * XGrabKey call in GrabKeys(). */ if ((keysym = XStringToKeysym(name)) == NoSymbol || (keycode = XKeysymToKeycode(dpy, keysym)) == 0) { return False; } /* see if there already is a key defined for this context */ for (tmp = Scr->FuncKeyRoot.next; tmp != NULL; tmp = tmp->next) { if (tmp->keysym == keysym && tmp->cont == cont && tmp->mods == mods) break; } if (tmp == NULL) { tmp = (FuncKey *) malloc(sizeof(FuncKey)); tmp->next = Scr->FuncKeyRoot.next; Scr->FuncKeyRoot.next = tmp; } tmp->name = name; tmp->keysym = keysym; tmp->keycode = keycode; tmp->cont = cont; tmp->mods = mods; tmp->func = func; tmp->win_name = win_name; tmp->action = action; return True; } int CreateTitleButton (name, func, action, menuroot, rightside, append) char *name; int func; char *action; MenuRoot *menuroot; Bool rightside; Bool append; { TitleButton *tb = (TitleButton *) malloc (sizeof(TitleButton)); if (!tb) { fprintf (stderr, "%s: unable to allocate %d bytes for title button\n", ProgramName, sizeof(TitleButton)); return 0; } tb->next = NULL; tb->name = name; /* note that we are not copying */ /* djhjr - 10/30/02 * djhjr - 4/19/96 * tb->image = NULL; */ /* tb->bitmap = None;*/ /* WARNING, values not set yet */ tb->width = 0; /* see InitTitlebarButtons */ tb->height = 0; /* ditto */ tb->func = func; tb->action = action; tb->menuroot = menuroot; tb->rightside = rightside; if (rightside) { Scr->TBInfo.nright++; } else { Scr->TBInfo.nleft++; } /* * Cases for list: * * 1. empty list, prepend left put at head of list * 2. append left, prepend right put in between left and right * 3. append right put at tail of list * * Do not refer to widths and heights yet since buttons not created * (since fonts not loaded and heights not known). */ if ((!Scr->TBInfo.head) || ((!append) && (!rightside))) { /* 1 */ tb->next = Scr->TBInfo.head; Scr->TBInfo.head = tb; } else if (append && rightside) { /* 3 */ register TitleButton *t; for (t = Scr->TBInfo.head; t->next; t = t->next) ; /* SUPPRESS 530 */ t->next = tb; tb->next = NULL; } else { /* 2 */ register TitleButton *t, *prev = NULL; for (t = Scr->TBInfo.head; t && !t->rightside; t = t->next) prev = t; if (prev) { tb->next = prev->next; prev->next = tb; } else { tb->next = Scr->TBInfo.head; Scr->TBInfo.head = tb; } } return 1; } /* * InitTitlebarButtons - Do all the necessary stuff to load in a titlebar * button. If we can't find the button, then put in a question; if we can't * find the question mark, something is wrong and we are probably going to be * in trouble later on. */ /* was of type 'void', now returns button height - djhjr - 12/10/98 */ int InitTitlebarButtons () { Image *image; TitleButton *tb; int h, height; /* * initialize dimensions */ Scr->TBInfo.width = (Scr->TitleHeight - 2 * (Scr->FramePadding + Scr->ButtonIndent)); /* djhjr - 10/18/02 * djhjr - 4/19/96 * * was 'Scr->use3Dtitles' - djhjr - 8/11/98 * if (Scr->TitleBevelWidth > 0) Scr->TBInfo.pad = ((Scr->TitlePadding > 1) ? ((Scr->TitlePadding + 1) / 2) : 0); else Scr->TBInfo.pad = ((Scr->TitlePadding > 1) ? ((Scr->TitlePadding + 1) / 2) : 1); */ Scr->TBInfo.pad = Scr->TitlePadding; h = Scr->TBInfo.width - 2 * Scr->TBInfo.border; /* djhjr - 10/30/02 */ if (!(h & 1)) h--; height = h; /* * add in some useful buttons and bindings so that novices can still * use the system. -- modified by DSE */ if (!Scr->NoDefaultTitleButtons) /* DSE */ { /* insert extra buttons */ /* djhjr - 4/19/96 */ /* was 'Scr->use3Dtitles' - djhjr - 8/11/98 */ if (Scr->TitleBevelWidth > 0) { if (!CreateTitleButton (TBPM_3DDOT, F_ICONIFY, "", (MenuRoot *) NULL, False, False)) fprintf (stderr, "%s: unable to add iconify button\n", ProgramName); if (!CreateTitleButton (TBPM_3DRESIZE, F_RESIZE, "", (MenuRoot *) NULL, True, True)) fprintf (stderr, "%s: unable to add resize button\n", ProgramName); } else { if (!CreateTitleButton (TBPM_ICONIFY, F_ICONIFY, "", (MenuRoot *) NULL, False, False)) fprintf(stderr,"%s: unable to add iconify button\n",ProgramName); if (!CreateTitleButton (TBPM_RESIZE, F_RESIZE, "", (MenuRoot *) NULL, True, True)) fprintf(stderr,"%s: unable to add resize button\n",ProgramName); } } if (!Scr->NoDefaultMouseOrKeyboardBindings) /* DSE */ { AddDefaultBindings (); } ComputeCommonTitleOffsets (); /* djhjr - 6/15/98 - moved it back to here... */ /* djhjr - 9/14/96 - moved to CreateWindowTitlebarButtons()... */ /* * load in images and do appropriate centering */ for (tb = Scr->TBInfo.head; tb; tb = tb->next) { /* djhjr - 4/19/96 tb->bitmap = FindBitmap (tb->name, &tb->width, &tb->height); if (!tb->bitmap) { tb->bitmap = FindBitmap (TBPM_QUESTION, &tb->width, &tb->height); if (!tb->bitmap) { * cannot happen (see util.c) * fprintf (stderr, "%s: unable to add titlebar button \"%s\"\n", ProgramName, tb->name); } } */ /* djhjr - 9/21/96 tb->image = GetImage (tb->name, Scr->TitleC); if (!tb->image) { tb->image = GetImage (TBPM_QUESTION, Scr->TitleC); if (!tb->image) { * cannot happen (see util.c) * fprintf (stderr, "%s: unable to add titlebar button \"%s\"\n", ProgramName, tb->name); } } */ /* added width and height - 10/30/02 */ image = GetImage (tb->name, h, h, Scr->ButtonBevelWidth * 2, (Scr->ButtonColorIsFrame) ? Scr->BorderColorC : Scr->TitleC); tb->width = image->width; /* added 'height = ' - djhjr - 12/10/98 */ height = tb->height = image->height; tb->dstx = (h - tb->width + 1) / 2; if (tb->dstx < 0) { /* clip to minimize copying */ tb->srcx = -(tb->dstx); tb->width = h; tb->dstx = 0; } else { tb->srcx = 0; } tb->dsty = (h - tb->height + 1) / 2; if (tb->dsty < 0) { tb->srcy = -(tb->dsty); tb->height = h; tb->dsty = 0; } else { tb->srcy = 0; } } /* for(...) */ /* djhjr - 12/10/98 */ return (height > h) ? height : h; /* ...end of moved */ } /* djhjr - 10/30/02 */ void SetMenuIconPixmap(filename) char *filename; { Scr->menuIconName = filename; } void PaintEntry(mr, mi, exposure) MenuRoot *mr; MenuItem *mi; int exposure; { /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0) Paint3DEntry (mr, mi, exposure); /* djhjr - 4/22/96 */ else PaintNormalEntry (mr, mi, exposure); } void Paint3DEntry(mr, mi, exposure) MenuRoot *mr; MenuItem *mi; int exposure; { int y_offset; int text_y; GC gc; /* djhjr - 4/29/98 y_offset = mi->item_num * Scr->EntryHeight + 2; */ /* djhjr - 5/22/00 y_offset = mi->item_num * Scr->EntryHeight + Scr->MenuBevelWidth; */ y_offset = (mi->item_num - mr->top) * Scr->EntryHeight + Scr->MenuBevelWidth; /* djhjr - 9/25/96 text_y = y_offset + Scr->MenuFont.y + 2; */ text_y = y_offset + (((Scr->EntryHeight - Scr->MenuFont.height) / 2) + Scr->MenuFont.y); if (mi->func != F_TITLE) { int x, y; if (mi->state) { /* djhjr - 9/25/96 Draw3DBorder (mr->w, 2, y_offset, mr->width - 4, Scr->EntryHeight, 1, mi->highlight, off, True, False); */ /* djhjr - 4/29/98 Draw3DBorder (mr->w, 2, y_offset + 1, mr->width - 4, Scr->EntryHeight - 1, 1, mi->highlight, off, True, False); */ Draw3DBorder (mr->w, Scr->MenuBevelWidth, y_offset + 1, mr->width - 2 * Scr->MenuBevelWidth, Scr->EntryHeight - 1, 1, mi->highlight, off, True, False); /* font was font.font->fid - djhjr - 9/14/03 */ FBF(mi->highlight.fore, mi->highlight.back, Scr->MenuFont); /* djhjr - 4/29/98 XDrawImageString(dpy, mr->w, Scr->NormalGC, mi->x + 2, text_y, mi->item, mi->strlen); */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawImageString(dpy, mr->w, &Scr->MenuFont, #else XDrawImageString(dpy, mr->w, #endif Scr->NormalGC, mi->x + Scr->MenuBevelWidth, text_y, mi->item, mi->strlen); gc = Scr->NormalGC; } else { if (mi->user_colors || !exposure) { XSetForeground (dpy, Scr->NormalGC, mi->normal.back); /* djhjr - 9/25/96 XFillRectangle (dpy, mr->w, Scr->NormalGC, 2, y_offset, mr->width - 4, Scr->EntryHeight); */ /* djhjr - 4/29/98 XFillRectangle (dpy, mr->w, Scr->NormalGC, 2, y_offset + 1, mr->width - 4, Scr->EntryHeight - 1); */ XFillRectangle (dpy, mr->w, Scr->NormalGC, Scr->MenuBevelWidth, y_offset + 1, mr->width - 2 * Scr->MenuBevelWidth, Scr->EntryHeight - 1); /* font was font.font->fid - djhjr - 9/14/03 */ FBF (mi->normal.fore, mi->normal.back, Scr->MenuFont); gc = Scr->NormalGC; } else { gc = Scr->MenuGC; } /* djhjr - 4/29/98 XDrawImageString (dpy, mr->w, gc, mi->x + 2, text_y, mi->item, mi->strlen); */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, mr->w, &Scr->MenuFont, #else XDrawImageString (dpy, mr->w, #endif gc, mi->x + Scr->MenuBevelWidth, text_y, mi->item, mi->strlen); if (mi->separated) { /* this 'if (...)' - djhjr - 1/19/98 */ if (!Scr->BeNiceToColormap) { FB (Scr->MenuC.shadd, Scr->MenuC.shadc); /* djhjr - 9/25/96 XDrawLine (dpy, mr->w, Scr->NormalGC, 1, y_offset + Scr->MenuFont.y + 5, mr->width - 2, y_offset + Scr->MenuFont.y + 5); */ /* djhjr - 4/29/98 XDrawLine (dpy, mr->w, Scr->NormalGC, 1, y_offset + Scr->EntryHeight - 1, mr->width - 2, y_offset + Scr->EntryHeight - 1); */ XDrawLine (dpy, mr->w, Scr->NormalGC, Scr->MenuBevelWidth + 1, y_offset + Scr->EntryHeight - 1, mr->width - Scr->MenuBevelWidth - 3, y_offset + Scr->EntryHeight - 1); } FB (Scr->MenuC.shadc, Scr->MenuC.shadd); /* djhjr - 9/25/96 XDrawLine (dpy, mr->w, Scr->NormalGC, 2, y_offset + Scr->MenuFont.y + 6, mr->width - 3, y_offset + Scr->MenuFont.y + 6); */ /* djhjr - 4/29/98 XDrawLine (dpy, mr->w, Scr->NormalGC, 2, y_offset + Scr->EntryHeight, mr->width - 3, y_offset + Scr->EntryHeight); */ XDrawLine (dpy, mr->w, Scr->NormalGC, Scr->MenuBevelWidth + 2, y_offset + Scr->EntryHeight, mr->width - Scr->MenuBevelWidth - 2, y_offset + Scr->EntryHeight); } } if (mi->func == F_MENU) { /* djhjr - 10/30/02 * create the pull right pixmap if needed * if (Scr->pullPm == None) { Scr->pullPm = Create3DMenuIcon (Scr->MenuFont.height, &Scr->pullW, &Scr->pullH, Scr->MenuC); */ Image *image; Pixel back; back = Scr->MenuC.back; if (mi->state) Scr->MenuC.back = mi->highlight.back; else Scr->MenuC.back = mi->normal.back; Scr->pullW = Scr->pullH = Scr->MenuFont.height; image = GetImage(Scr->menuIconName, Scr->pullW, Scr->pullH, 0, Scr->MenuC); Scr->MenuC.back = back; /* djhjr - 10/30/02 } */ /* djhjr - 4/29/98 x = mr->width - Scr->pullW - 5; */ x = mr->width - Scr->pullW - Scr->MenuBevelWidth - EDGE_OFFSET; /* djhjr - 9/25/96 y = y_offset + ((Scr->MenuFont.height - Scr->pullH) / 2) + 2; */ y = y_offset + ((Scr->EntryHeight - Scr->pullH) / 2) + 1; XCopyArea (dpy, image->pixmap, mr->w, gc, 0, 0, Scr->pullW, Scr->pullH, x, y); } } else { /* djhjr - 4/29/96 Draw3DBorder (mr->w, 2, y_offset, mr->width - 4, Scr->EntryHeight, 1, mi->normal, off, True, False); */ /* djhjr - 4/29/98 Draw3DBorder (mr->w, 2, y_offset, mr->width - 4, Scr->EntryHeight + 1, 1, mi->normal, off, True, False); */ Draw3DBorder (mr->w, Scr->MenuBevelWidth, y_offset, mr->width - 2 * Scr->MenuBevelWidth, Scr->EntryHeight + 1, 1, mi->normal, off, True, False); /* djhjr - 4/29/96 FBF (mi->normal.fore, mi->normal.back, Scr->MenuFont.font->fid); */ /* font was font.font->fid - djhjr - 9/14/03 */ FBF (mi->normal.fore, mi->normal.back, Scr->MenuTitleFont); /* djhjr - 9/25/96 XDrawImageString (dpy, mr->w, Scr->NormalGC, mi->x + 2, text_y, mi->item, mi->strlen); */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, mr->w, &Scr->MenuTitleFont, #else XDrawImageString (dpy, mr->w, #endif Scr->NormalGC, mi->x, text_y, mi->item, mi->strlen); } } void PaintNormalEntry(mr, mi, exposure) MenuRoot *mr; MenuItem *mi; int exposure; { int y_offset; int text_y; GC gc; /* djhjr - 5/22/00 y_offset = mi->item_num * Scr->EntryHeight; */ y_offset = (mi->item_num - mr->top) * Scr->EntryHeight; /* djhjr - 9/26/96 text_y = y_offset + Scr->MenuFont.y; */ text_y = y_offset + (((Scr->EntryHeight - Scr->MenuFont.height) / 2) + Scr->MenuFont.y); if (mi->func != F_TITLE) { int x, y; if (mi->state) { XSetForeground(dpy, Scr->NormalGC, mi->highlight.back); XFillRectangle(dpy, mr->w, Scr->NormalGC, 0, y_offset, mr->width, Scr->EntryHeight); /* font was font.font->fid - djhjr - 9/14/03 */ FBF(mi->highlight.fore, mi->highlight.back, Scr->MenuFont); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString(dpy, mr->w, &Scr->MenuFont, #else XDrawString(dpy, mr->w, #endif Scr->NormalGC, mi->x, text_y, mi->item, mi->strlen); gc = Scr->NormalGC; } else { if (mi->user_colors || !exposure) { XSetForeground(dpy, Scr->NormalGC, mi->normal.back); XFillRectangle(dpy, mr->w, Scr->NormalGC, 0, y_offset, mr->width, Scr->EntryHeight); /* font was font.font->fid - djhjr - 9/14/03 */ FBF(mi->normal.fore, mi->normal.back, Scr->MenuFont); gc = Scr->NormalGC; } else { gc = Scr->MenuGC; } /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString(dpy, mr->w, &Scr->MenuFont, #else XDrawString(dpy, mr->w, #endif gc, mi->x, text_y, mi->item, mi->strlen); if (mi->separated) /* djhjr - 9/26/96 XDrawLine (dpy, mr->w, gc, 0, y_offset + Scr->MenuFont.y + 5, mr->width, y_offset + Scr->MenuFont.y + 5); */ XDrawLine (dpy, mr->w, gc, 0, y_offset + Scr->EntryHeight - 1, mr->width, y_offset + Scr->EntryHeight - 1); } if (mi->func == F_MENU) { /* djhjr - 10/30/02 * create the pull right pixmap if needed * if (Scr->pullPm == None) { Scr->pullPm = CreateMenuIcon (Scr->MenuFont.height, &Scr->pullW, &Scr->pullH); */ Image *image; ColorPair cp; cp.back = Scr->MenuC.back; if (strncmp(Scr->menuIconName, ":xpm:", 5) != 0) { cp.fore = Scr->MenuC.fore; Scr->MenuC.fore = (mi->state) ? mi->highlight.fore : mi->normal.fore; Scr->MenuC.back = (mi->state) ? mi->highlight.back : mi->normal.back; } else Scr->MenuC.back = (mi->state) ? mi->highlight.back : mi->normal.back; Scr->pullW = Scr->pullH = Scr->MenuFont.height; image = GetImage(Scr->menuIconName, Scr->pullW, Scr->pullH, 0, Scr->MenuC); Scr->MenuC.back = cp.back; if (strncmp(Scr->menuIconName, ":xpm:", 5) != 0) Scr->MenuC.fore = cp.fore; /* djhjr - 10/30/02 } */ x = mr->width - Scr->pullW - EDGE_OFFSET; /* djhjr - 9/26/96 y = y_offset + ((Scr->MenuFont.height - Scr->pullH) / 2); */ y = y_offset + ((Scr->EntryHeight - Scr->pullH) / 2); /* djhjr - 10/30/02 XCopyPlane(dpy, Scr->pullPm->pixmap, mr->w, gc, 0, 0, Scr->pullW, Scr->pullH, x, y, 1); */ XCopyArea (dpy, image->pixmap, mr->w, gc, 0, 0, Scr->pullW, Scr->pullH, x, y); } } else { int y; XSetForeground(dpy, Scr->NormalGC, mi->normal.back); /* fill the rectangle with the title background color */ XFillRectangle(dpy, mr->w, Scr->NormalGC, 0, y_offset, mr->width, Scr->EntryHeight); XSetForeground(dpy, Scr->NormalGC, mi->normal.fore); /* now draw the dividing lines */ if (y_offset) XDrawLine (dpy, mr->w, Scr->NormalGC, 0, y_offset, mr->width, y_offset); y = ((mi->item_num+1) * Scr->EntryHeight)-1; XDrawLine(dpy, mr->w, Scr->NormalGC, 0, y, mr->width, y); /* djhjr - 4/29/96 FBF(mi->normal.fore, mi->normal.back, Scr->MenuFont.font->fid); */ /* font was font.font->fid - djhjr - 9/14/03 */ FBF (mi->normal.fore, mi->normal.back, Scr->MenuTitleFont); /* finally render the title */ /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawString(dpy, mr->w, &Scr->MenuTitleFont, #else XDrawString(dpy, mr->w, #endif Scr->NormalGC, mi->x, text_y, mi->item, mi->strlen); } } void PaintMenu(mr, e) MenuRoot *mr; XEvent *e; { MenuItem *mi; /* djhjr - 5/22/00 */ int y_offset; /* djhjr - 4/22/96 */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0) { /* djhjr - 4/29/98 Draw3DBorder (mr->w, 0, 0, mr->width, mr->height, 2, Scr->MenuC, off, False, False); */ Draw3DBorder (mr->w, 0, 0, mr->width, mr->height, Scr->MenuBevelWidth, Scr->MenuC, off, False, False); } for (mi = mr->first; mi != NULL; mi = mi->next) { /* djhjr - 5/22/00 */ if (mi->item_num < mr->top) continue; /* djhjr - 5/22/00 int y_offset = mi->item_num * Scr->EntryHeight; */ y_offset = (mi->item_num - mr->top) * Scr->EntryHeight; /* djhjr - 5/22/00 */ if (y_offset + Scr->EntryHeight > mr->height) break; /* some servers want the previous entry redrawn - djhjr - 10/24/00 */ if (Scr->MenuBevelWidth > 0) y_offset += Scr->EntryHeight; /* * Be smart about handling the expose, redraw only the entries * that we need to. */ /* those servers want the next entry redrawn, too - djhjr - 10/24/00 */ if (e->xexpose.y < (y_offset + Scr->EntryHeight) && (e->xexpose.y + e->xexpose.height) > y_offset - ((mr->shadow) ? Scr->EntryHeight : 0)) { PaintEntry(mr, mi, True); } } XSync(dpy, 0); } static Bool fromMenu; extern int GlobalFirstTime; /* for StayUpMenus -- PF */ void UpdateMenu() { MenuItem *mi; int i, x, y, x_root, y_root, entry; int done; MenuItem *badItem = NULL; static int firstTime = True; fromMenu = TRUE; while (TRUE) { /* block until there is an event */ #ifdef NEVER /* see the '#else' - Steve Ratcliffe */ #if 0 if (!menuFromFrameOrWindowOrTitlebar && ! Scr->StayUpMenus) { XMaskEvent(dpy, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | ExposureMask | VisibilityChangeMask | LeaveWindowMask | ButtonMotionMask, &Event); } if (Event.type == MotionNotify) { /* discard any extra motion events before a release */ while(XCheckMaskEvent(dpy, ButtonMotionMask | ButtonReleaseMask, &Event)) if (Event.type == ButtonRelease) break; } #else while (XCheckMaskEvent(dpy, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | ExposureMask, &Event)) { /* taken from tvtwm */ #endif /* 0 */ #else /* Submitted by Steve Ratcliffe */ XNextEvent(dpy, &Event); #endif /* NEVER */ if (!DispatchEvent ()) continue; if (Event.type == ButtonRelease ) { if (Scr->StayUpMenus) { if (firstTime == True) { /* it was the first release of the button */ firstTime = False; } else { /* thats the second we need to return now */ firstTime = True; menuFromFrameOrWindowOrTitlebar = FALSE; fromMenu = FALSE; return; } } else { /* not stay-up */ menuFromFrameOrWindowOrTitlebar = FALSE; fromMenu = FALSE; return; } } if (Cancel) return; #ifdef NEVER /* see the above - Steve Ratcliffe */ } #endif /* re-instated - Steve Ratcliffe */ if (Event.type != MotionNotify) continue; /* if we haven't received the enter notify yet, wait */ if (!ActiveMenu || !ActiveMenu->entered) continue; done = FALSE; XQueryPointer( dpy, ActiveMenu->w, &JunkRoot, &JunkChild, &x_root, &y_root, &x, &y, &JunkMask); /* djhjr - 9/5/98 */ if (!ActiveItem) if (abs(x_root - MenuOrigX) < Scr->MoveDelta && abs(y_root - MenuOrigY) < Scr->MoveDelta) continue; #if 0 /* if we haven't recieved the enter notify yet, wait */ if (ActiveMenu && !ActiveMenu->entered) continue; #endif XFindContext(dpy, ActiveMenu->w, ScreenContext, (caddr_t *)&Scr); JunkWidth = ActiveMenu->width; JunkHeight = ActiveMenu->height; /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0) { x -= Scr->MenuBevelWidth; y -= Scr->MenuBevelWidth; JunkWidth -= 2 * Scr->MenuBevelWidth; JunkHeight -= Scr->MenuBevelWidth; } /* djhjr - 5/22/00 if (x < 0 || y < 0 || x >= JunkWidth || y >= JunkHeight) */ if ((x < 0 || y < 0 || x >= JunkWidth || y >= JunkHeight) || (ActiveMenu->too_tall && (y < Scr->MenuScrollBorderWidth || y > JunkHeight - Scr->MenuScrollBorderWidth))) { if (ActiveItem && ActiveItem->func != F_TITLE) { ActiveItem->state = 0; PaintEntry(ActiveMenu, ActiveItem, False); } ActiveItem = NULL; /* menu scrolling - djhjr - 5/22/00 */ if (ActiveMenu->too_tall && x >= 0 && x < JunkWidth) { short j = ActiveMenu->top; if (y < Scr->MenuScrollBorderWidth) { if (ActiveMenu->top - Scr->MenuScrollJump < 0) continue; else j -= Scr->MenuScrollJump; } else if (y > JunkHeight - Scr->MenuScrollBorderWidth) { int k = JunkHeight / Scr->EntryHeight; if (ActiveMenu->top + k >= ActiveMenu->items) continue; else j += Scr->MenuScrollJump; } if (ActiveMenu->top != j) { ActiveMenu->top = j; XClearArea(dpy, ActiveMenu->w, 0, 0, 0, 0, True); } } continue; } /* look for the entry that the mouse is in */ /* djhjr - 5/22/00 entry = y / Scr->EntryHeight; */ entry = (y / Scr->EntryHeight) + ActiveMenu->top; for (i = 0, mi = ActiveMenu->first; mi != NULL; i++, mi=mi->next) { if (i == entry) break; } /* if there is an active item, we might have to turn it off */ if (ActiveItem) { /* is the active item the one we are on ? */ if (ActiveItem->item_num == entry && ActiveItem->state) done = TRUE; /* if we weren't on the active entry, let's turn the old * active one off */ if (!done && ActiveItem->func != F_TITLE) { ActiveItem->state = 0; PaintEntry(ActiveMenu, ActiveItem, False); } } /* djhjr - 5/22/00 */ if (ActiveMenu->too_tall && y + Scr->EntryHeight > JunkHeight) continue; /* if we weren't on the active item, change the active item and turn * it on */ if (!done) { ActiveItem = mi; /* djhjr - 5/20/98 if (ActiveItem->func != F_TITLE && !ActiveItem->state) */ if (ActiveItem && ActiveItem->func != F_TITLE && !ActiveItem->state) { ActiveItem->state = 1; PaintEntry(ActiveMenu, ActiveItem, False); if (Scr->StayUpOptionalMenus) /* PF */ GlobalFirstTime = firstTime = False; /* PF */ } } /* now check to see if we were over the arrow of a pull right entry */ /* djhjr - 5/20/98 if (ActiveItem->func == F_MENU && */ if (ActiveItem && ActiveItem->func == F_MENU && /* ((ActiveMenu->width - x) < (ActiveMenu->width >> 1))) */ ( x > PULLDOWNMENU_OFFSET )) /* DSE */ { MenuRoot *save = ActiveMenu; int savex = MenuOrigins[MenuDepth - 1].x; int savey = MenuOrigins[MenuDepth - 1].y; if (MenuDepth < MAXMENUDEPTH) { PopUpMenu (ActiveItem->sub, (savex + PULLDOWNMENU_OFFSET), /* DSE */ (savey + ActiveItem->item_num * Scr->EntryHeight) /*(savey + ActiveItem->item_num * Scr->EntryHeight + (Scr->EntryHeight >> 1))*/, False); } else if (!badItem) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ badItem = ActiveItem; } /* if the menu did get popped up, unhighlight the active item */ if (save != ActiveMenu && ActiveItem->state) { ActiveItem->state = 0; PaintEntry(save, ActiveItem, False); ActiveItem = NULL; } } if (badItem != ActiveItem) badItem = NULL; XFlush(dpy); } } /*********************************************************************** * * Procedure: * NewMenuRoot - create a new menu root * * Returned Value: * (MenuRoot *) * * Inputs: * name - the name of the menu root * *********************************************************************** */ MenuRoot * NewMenuRoot(name) char *name; { MenuRoot *tmp; #define UNUSED_PIXEL ((unsigned long) (~0)) /* more than 24 bits */ tmp = (MenuRoot *) malloc(sizeof(MenuRoot)); /* djhjr - 5/22/96 tmp->hi_fore = UNUSED_PIXEL; tmp->hi_back = UNUSED_PIXEL; */ tmp->highlight.fore = UNUSED_PIXEL; tmp->highlight.back = UNUSED_PIXEL; tmp->name = name; tmp->prev = NULL; tmp->first = NULL; tmp->last = NULL; tmp->items = 0; tmp->width = 0; tmp->mapped = NEVER_MAPPED; tmp->pull = FALSE; tmp->w = None; tmp->shadow = None; tmp->real_menu = FALSE; /* djhjr - 5/22/00 */ tmp->too_tall = 0; tmp->top = 0; if (Scr->MenuList == NULL) { Scr->MenuList = tmp; Scr->MenuList->next = NULL; } if (Scr->LastMenu == NULL) { Scr->LastMenu = tmp; Scr->LastMenu->next = NULL; } else { Scr->LastMenu->next = tmp; Scr->LastMenu = tmp; Scr->LastMenu->next = NULL; } /* djhjr - 5/4/98 if (strcmp(name, TWM_WINDOWS) == 0) */ if (strcmp(name, TWM_WINDOWS) == 0 || strcmp(name, VTWM_WINDOWS) == 0) Scr->Windows = tmp; return (tmp); } /*********************************************************************** * * Procedure: * AddToMenu - add an item to a root menu * * Returned Value: * (MenuItem *) * * Inputs: * menu - pointer to the root menu to add the item * item - the text to appear in the menu * action - the string to possibly execute * sub - the menu root if it is a pull-right entry * func - the numeric function * fore - foreground color string * back - background color string * *********************************************************************** */ MenuItem * AddToMenu(menu, item, action, sub, func, fore, back) MenuRoot *menu; char *item, *action; MenuRoot *sub; int func; char *fore, *back; { MenuItem *tmp; int width; MyFont *font; /* DSE */ #ifdef DEBUG_MENUS fprintf(stderr, "adding menu item=\"%s\", action=%s, sub=%d, f=%d\n", item, action, sub, func); #endif tmp = (MenuItem *) malloc(sizeof(MenuItem)); tmp->root = menu; if (menu->first == NULL) { menu->first = tmp; tmp->prev = NULL; } else { menu->last->next = tmp; tmp->prev = menu->last; } menu->last = tmp; tmp->item = item; tmp->strlen = strlen(item); tmp->action = action; tmp->next = NULL; tmp->sub = NULL; tmp->state = 0; tmp->func = func; /* djhjr - 4/22/96 */ tmp->separated = 0; if ( func == F_TITLE && (Scr->MenuTitleFont.name != NULL) ) /* DSE */ font= &(Scr->MenuTitleFont); else font= &(Scr->MenuFont); if (!Scr->HaveFonts) CreateFonts(); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT width = MyFont_TextWidth(font, #else width = XTextWidth(font->font, #endif item, tmp->strlen); if (width <= 0) width = 1; if (width > menu->width) menu->width = width; tmp->user_colors = FALSE; if (Scr->Monochrome == COLOR && fore != NULL) { int save; save = Scr->FirstTime; Scr->FirstTime = TRUE; /* djhjr - 4/22/96 GetColor(COLOR, &tmp->fore, fore); GetColor(COLOR, &tmp->back, back); */ GetColor(COLOR, &tmp->normal.fore, fore); GetColor(COLOR, &tmp->normal.back, back); /* djhjr - 4/22/96 */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ /* rem'd 'Scr->MenuBevelWidth' djhjr - 10/30/02 */ if (/*Scr->MenuBevelWidth > 0 && */!Scr->BeNiceToColormap) GetShadeColors (&tmp->normal); Scr->FirstTime = save; tmp->user_colors = TRUE; } if (sub != NULL) { tmp->sub = sub; menu->pull = TRUE; } tmp->item_num = menu->items++; return (tmp); } void MakeMenus() { MenuRoot *mr; for (mr = Scr->MenuList; mr != NULL; mr = mr->next) { if (mr->real_menu == FALSE) continue; MakeMenu(mr); } } void MakeMenu(mr) MenuRoot *mr; { MenuItem *start, *end, *cur, *tmp; XColor f1, f2, f3; XColor b1, b2, b3; XColor save_fore, save_back; int num, i; int fred, fgreen, fblue; int bred, bgreen, bblue; int width; /* djhjr - 4/22/96 */ int borderwidth; unsigned long valuemask; XSetWindowAttributes attributes; Colormap cmap = Scr->TwmRoot.cmaps.cwins[0]->colormap->c; MyFont *titleFont; if ( Scr->MenuTitleFont.name != NULL ) /* DSE */ { Scr->EntryHeight = MAX(Scr->MenuFont.height, Scr->MenuTitleFont.height) + 4; titleFont = &(Scr->MenuTitleFont); } else { Scr->EntryHeight = Scr->MenuFont.height + 4; titleFont= &(Scr->MenuFont); } /* lets first size the window accordingly */ if (mr->mapped == NEVER_MAPPED) { if (mr->pull == TRUE) { mr->width += 16 + 2 * EDGE_OFFSET; /* DSE */ } /* djhjr - 4/29/98 * djhjr - 9/18/96 * if (Scr->use3Dmenus) mr->width += 4; */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0) mr->width += 2 * Scr->MenuBevelWidth; width = mr->width + 2 * EDGE_OFFSET; /* DSE */ for (cur = mr->first; cur != NULL; cur = cur->next) { if (cur->func != F_TITLE) cur->x = EDGE_OFFSET; /* DSE */ else { cur->x = width - /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_TextWidth(titleFont, #else XTextWidth(titleFont->font, #endif cur->item, cur->strlen); cur->x /= 2; } } mr->height = mr->items * Scr->EntryHeight; /* djhjr - 4/29/98 * djhjr - 4/22/96 * if (Scr->use3Dmenus) mr->height += 4; */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0) mr->height += 2 * Scr->MenuBevelWidth; /* djhjr - 4/22/96 */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ borderwidth = (Scr->MenuBevelWidth > 0) ? 0 : 1; /* djhjr - 5/22/00 */ if (mr->height > Scr->MyDisplayHeight) { mr->too_tall = 1; mr->height = Scr->MyDisplayHeight - borderwidth * 2; } /* added this 'if () ... else' - djhjr - 4/29/98 */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0) mr->width += 2 * Scr->MenuBevelWidth + 6; else mr->width += 10; if (Scr->Shadow) { /* * Make sure that you don't draw into the shadow window or else * the background bits there will get saved */ valuemask = (CWBackPixel | CWBorderPixel); attributes.background_pixel = Scr->MenuShadowColor; attributes.border_pixel = Scr->MenuShadowColor; if (Scr->SaveUnder) { valuemask |= CWSaveUnder; attributes.save_under = True; } mr->shadow = XCreateWindow (dpy, Scr->Root, 0, 0, (unsigned int) mr->width, (unsigned int) mr->height, (unsigned int)0, CopyFromParent, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); } valuemask = (CWBackPixel | CWBorderPixel | CWEventMask); attributes.background_pixel = Scr->MenuC.back; attributes.border_pixel = Scr->MenuC.fore; attributes.event_mask = (ExposureMask | EnterWindowMask); if (Scr->SaveUnder) { valuemask |= CWSaveUnder; attributes.save_under = True; } if (Scr->BackingStore) { valuemask |= CWBackingStore; attributes.backing_store = Always; } mr->w = XCreateWindow (dpy, Scr->Root, 0, 0, (unsigned int) mr->width, /* djhjr - 4/22/96 (unsigned int) mr->height, (unsigned int) 1, */ (unsigned int) mr->height, (unsigned int) borderwidth, CopyFromParent, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); XSaveContext(dpy, mr->w, MenuContext, (caddr_t)mr); XSaveContext(dpy, mr->w, ScreenContext, (caddr_t)Scr); mr->mapped = UNMAPPED; } /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0 && (Scr->Monochrome == COLOR) && (mr->highlight.back == UNUSED_PIXEL)) { XColor xcol; char colname [32]; short save; xcol.pixel = Scr->MenuC.back; XQueryColor (dpy, cmap, &xcol); sprintf (colname, "#%04x%04x%04x", 5 * (xcol.red / 6), 5 * (xcol.green / 6), 5 * (xcol.blue / 6)); save = Scr->FirstTime; Scr->FirstTime = True; GetColor (Scr->Monochrome, &mr->highlight.back, colname); Scr->FirstTime = save; } /* djhjr - 4/22/96 */ /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0 && (Scr->Monochrome == COLOR) && (mr->highlight.fore == UNUSED_PIXEL)) { XColor xcol; char colname [32]; short save; xcol.pixel = Scr->MenuC.fore; XQueryColor (dpy, cmap, &xcol); sprintf (colname, "#%04x%04x%04x", 5 * (xcol.red / 6), 5 * (xcol.green / 6), 5 * (xcol.blue / 6)); save = Scr->FirstTime; Scr->FirstTime = True; GetColor (Scr->Monochrome, &mr->highlight.fore, colname); Scr->FirstTime = save; } /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0 && !Scr->BeNiceToColormap) GetShadeColors (&mr->highlight); /* get the default colors into the menus */ for (tmp = mr->first; tmp != NULL; tmp = tmp->next) { /* djhjr - 4/22/96 if (!tmp->user_colors) { if (tmp->func != F_TITLE) { tmp->fore = Scr->MenuC.fore; tmp->back = Scr->MenuC.back; } else { tmp->fore = Scr->MenuTitleC.fore; tmp->back = Scr->MenuTitleC.back; } } if (mr->hi_fore != UNUSED_PIXEL) { tmp->hi_fore = mr->hi_fore; tmp->hi_back = mr->hi_back; } else { tmp->hi_fore = tmp->back; tmp->hi_back = tmp->fore; } */ if (!tmp->user_colors) { if (tmp->func != F_TITLE) { tmp->normal.fore = Scr->MenuC.fore; tmp->normal.back = Scr->MenuC.back; } else { tmp->normal.fore = Scr->MenuTitleC.fore; tmp->normal.back = Scr->MenuTitleC.back; } } if (mr->highlight.fore != UNUSED_PIXEL) { tmp->highlight.fore = mr->highlight.fore; tmp->highlight.back = mr->highlight.back; } else { tmp->highlight.fore = tmp->normal.back; tmp->highlight.back = tmp->normal.fore; } /* was 'Scr->use3Dmenus' - djhjr - 8/11/98 */ if (Scr->MenuBevelWidth > 0 && !Scr->BeNiceToColormap) { if (tmp->func != F_TITLE) GetShadeColors (&tmp->highlight); else GetShadeColors (&tmp->normal); } } /* end for(...) */ if (Scr->Monochrome == MONOCHROME || !Scr->InterpolateMenuColors) return; start = mr->first; while (TRUE) { for (; start != NULL; start = start->next) { if (start->user_colors) break; } if (start == NULL) break; for (end = start->next; end != NULL; end = end->next) { if (end->user_colors) break; } if (end == NULL) break; /* we have a start and end to interpolate between */ num = end->item_num - start->item_num; /* djhjr - 4/22/96 f1.pixel = start->fore; XQueryColor(dpy, cmap, &f1); f2.pixel = end->fore; XQueryColor(dpy, cmap, &f2); b1.pixel = start->back; XQueryColor(dpy, cmap, &b1); b2.pixel = end->back; XQueryColor(dpy, cmap, &b2); */ f1.pixel = start->normal.fore; XQueryColor(dpy, cmap, &f1); f2.pixel = end->normal.fore; XQueryColor(dpy, cmap, &f2); b1.pixel = start->normal.back; XQueryColor(dpy, cmap, &b1); b2.pixel = end->normal.back; XQueryColor(dpy, cmap, &b2); fred = ((int)f2.red - (int)f1.red) / num; fgreen = ((int)f2.green - (int)f1.green) / num; fblue = ((int)f2.blue - (int)f1.blue) / num; bred = ((int)b2.red - (int)b1.red) / num; bgreen = ((int)b2.green - (int)b1.green) / num; bblue = ((int)b2.blue - (int)b1.blue) / num; f3 = f1; f3.flags = DoRed | DoGreen | DoBlue; b3 = b1; b3.flags = DoRed | DoGreen | DoBlue; /* djhjr - 4/23/96 */ start->highlight.back = start->normal.fore; start->highlight.fore = start->normal.back; num -= 1; for (i = 0, cur = start->next; i < num; i++, cur = cur->next) { f3.red += fred; f3.green += fgreen; f3.blue += fblue; save_fore = f3; b3.red += bred; b3.green += bgreen; b3.blue += bblue; save_back = b3; if (Scr->DontInterpolateTitles && (cur->func == F_TITLE)) continue; /* DSE -- from tvtwm */ XAllocColor(dpy, cmap, &f3); XAllocColor(dpy, cmap, &b3); /* djhjr - 4/22/96 cur->hi_back = cur->fore = f3.pixel; cur->hi_fore = cur->back = b3.pixel; */ cur->highlight.back = cur->normal.fore = f3.pixel; cur->highlight.fore = cur->normal.back = b3.pixel; cur->user_colors = True; f3 = save_fore; b3 = save_back; } start = end; /* djhjr - 4/22/96 start->highlight.back = start->normal.fore; start->highlight.fore = start->normal.back; */ } } /*********************************************************************** * * Procedure: * PopUpMenu - pop up a pull down menu * * Inputs: * menu - the root pointer of the menu to pop up * x, y - location of upper left of menu * center - whether or not to center horizontally over position * *********************************************************************** */ Bool PopUpMenu (menu, x, y, center) MenuRoot *menu; int x, y; Bool center; { int WindowNameOffset, WindowNameCount; TwmWindow **WindowNames; TwmWindow *tmp_win2,*tmp_win3; int mask; int i; int (*compar)() = (Scr->CaseSensitive ? strcmp : XmuCompareISOLatin1); /* djhjr - 9/5/98 */ int x_root, y_root; if (!menu) return False; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT if (!PlaySound(F_MENU)) PlaySound(S_MMAP); #endif /* djhjr - 5/22/00 */ menu->top = 0; if (menu->w) XClearArea(dpy, menu->w, 0, 0, 0, 0, True); InstallRootColormap(); if (menu == Scr->Windows) { TwmWindow *tmp_win; /* this is the twm windows menu, let's go ahead and build it */ DestroyMenu (menu); menu->first = NULL; menu->last = NULL; menu->items = 0; menu->width = 0; menu->mapped = NEVER_MAPPED; /* djhjr - 5/4/98 AddToMenu(menu, "TWM Windows", NULLSTR, (MenuRoot *)NULL, F_TITLE,NULLSTR,NULLSTR); */ AddToMenu(menu, "VTWM Windows", NULLSTR, (MenuRoot *)NULL, F_TITLE,NULLSTR,NULLSTR); WindowNameOffset=(char *)Scr->TwmRoot.next->name - (char *)Scr->TwmRoot.next; for(tmp_win = Scr->TwmRoot.next , WindowNameCount=0; tmp_win != NULL; tmp_win = tmp_win->next) WindowNameCount++; if (WindowNameCount != 0) /* Submitted by Jennifer Elaan */ { WindowNames = (TwmWindow **)malloc(sizeof(TwmWindow *)*WindowNameCount); WindowNames[0] = Scr->TwmRoot.next; for(tmp_win = Scr->TwmRoot.next->next , WindowNameCount=1; tmp_win != NULL; tmp_win = tmp_win->next,WindowNameCount++) { /* Submitted by Erik Agsjo */ if (LookInList(Scr->DontShowInTWMWindows, tmp_win->full_name, &tmp_win->class)) { WindowNameCount--; continue; } tmp_win2 = tmp_win; for (i=0;iname,WindowNames[i]->name) < 0) { tmp_win3 = tmp_win2; tmp_win2 = WindowNames[i]; WindowNames[i] = tmp_win3; } } WindowNames[WindowNameCount] = tmp_win2; } for (i=0; iname, (char *)WindowNames[i], (MenuRoot *)NULL, F_POPUP,NULLSTR,NULLSTR); if (!Scr->OldFashionedTwmWindowsMenu && Scr->Monochrome == COLOR)/*RFBCOLOR*/ {/*RFBCOLOR*/ menu->last->user_colors = TRUE;/*RFBCOLOR*/ /* djhjr - 4/22/96 menu->last->fore = WindowNames[i]->virtual.fore;*RFBCOLOR* */ /* djhjr - 5/4/98 menu->last->normal.fore = WindowNames[i]->virtual.fore;*RFBCOLOR* */ menu->last->normal.fore = Scr->MenuC.fore; /* djhjr - 4/22/96 menu->last->back = WindowNames[i]->virtual.back;*RFBCOLOR* */ menu->last->normal.back = WindowNames[i]->virtual.back; /**********************************************************/ /* */ /* Okay, okay, it's a bit of a kludge. */ /* */ /* On the other hand, it's nice to have the VTWM Windows */ /* menu come up with "the right colors". And the colors */ /* from the panner are not a bad choice... */ /* */ /**********************************************************/ }/*RFBCOLOR*/ } free(WindowNames); } MakeMenu(menu); } if (menu->w == None || menu->items == 0) return False; /* Prevent recursively bringing up menus. */ if (menu->mapped == MAPPED) return False; /* * Dynamically set the parent; this allows pull-ups to also be main * menus, or to be brought up from more than one place. */ menu->prev = ActiveMenu; /* * Submitted by Steve Ratcliffe */ mask = ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | PointerMotionHintMask; if (Scr->StayUpMenus) mask |= PointerMotionMask; XGrabPointer(dpy, Scr->Root, True, mask, GrabModeAsync, GrabModeAsync, Scr->Root, Scr->MenuCursor, CurrentTime); ActiveMenu = menu; menu->mapped = MAPPED; menu->entered = FALSE; if (center) { x -= (menu->width / 2); y -= (Scr->EntryHeight / 2); /* sticky menus would be nice here */ } /* * clip to screen */ /* next line and " - i" to "x = " and "y = " - djhjr - 5/22/00 */ i = (Scr->MenuBevelWidth > 0) ? 0 : 2; if (x + menu->width > Scr->MyDisplayWidth) { x = Scr->MyDisplayWidth - menu->width - i; } if (x < 0) x = 0; if (y + menu->height > Scr->MyDisplayHeight) { y = Scr->MyDisplayHeight - menu->height - i; } if (y < 0) y = 0; MenuOrigins[MenuDepth].x = x; MenuOrigins[MenuDepth].y = y; MenuDepth++; XMoveWindow(dpy, menu->w, x, y); if (Scr->Shadow) { XMoveWindow (dpy, menu->shadow, x + SHADOWWIDTH, y + SHADOWWIDTH); } if (Scr->Shadow) { XRaiseWindow (dpy, menu->shadow); } XMapRaised(dpy, menu->w); if (Scr->Shadow) { XMapWindow (dpy, menu->shadow); } XSync(dpy, 0); /* djhjr - 9/5/98 */ XQueryPointer(dpy, menu->w, &JunkRoot, &JunkChild, &x_root, &y_root, &JunkX, &JunkY, &JunkMask); MenuOrigX = x_root; MenuOrigY = y_root; return True; } /*********************************************************************** * * Procedure: * PopDownMenu - unhighlight the current menu selection and * take down the menus * *********************************************************************** */ void PopDownMenu() { MenuRoot *tmp; if (ActiveMenu == NULL) return; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT PlaySound(S_MUNMAP); #endif if (ActiveItem) { ActiveItem->state = 0; PaintEntry(ActiveMenu, ActiveItem, False); } for (tmp = ActiveMenu; tmp != NULL; tmp = tmp->prev) { if (Scr->Shadow) { XUnmapWindow (dpy, tmp->shadow); } XUnmapWindow(dpy, tmp->w); tmp->mapped = UNMAPPED; UninstallRootColormap(); } XFlush(dpy); ActiveMenu = NULL; ActiveItem = NULL; MenuDepth = 0; if (Context == C_WINDOW || Context == C_FRAME || Context == C_TITLE) { menuFromFrameOrWindowOrTitlebar = TRUE; } } /*********************************************************************** * * Procedure: * FindMenuRoot - look for a menu root * * Returned Value: * (MenuRoot *) - a pointer to the menu root structure * * Inputs: * name - the name of the menu root * *********************************************************************** */ MenuRoot * FindMenuRoot(name) char *name; { MenuRoot *tmp; for (tmp = Scr->MenuList; tmp != NULL; tmp = tmp->next) { if (strcmp(name, tmp->name) == 0) return (tmp); } return NULL; } static Bool belongs_to_twm_window (t, w) register TwmWindow *t; register Window w; { if (!t) return False; #if 0 StayUpMenus if (w == t->frame || w == t->title_w || w == t->hilite_w || w == t->icon_w || w == t->icon_bm_w) return True; #endif if (t && t->titlebuttons) { register TBWindow *tbw; register int nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; for (tbw = t->titlebuttons; nb > 0; tbw++, nb--) { if (tbw->window == w) return True; } } return False; } /* * Hack^H^H^H^HWrapper to moves for non-menu contexts. * * djhjr - 10/11/01 10/4/02 */ static void moveFromCenterWrapper(tmp_win) TwmWindow *tmp_win; { if (!tmp_win->opaque_move) XUngrabServer(dpy); WarpScreenToWindow(tmp_win); /* now here's a nice little kludge... */ { int hilite = tmp_win->highlight; tmp_win->highlight = True; SetBorder(tmp_win, (hilite) ? True : False); tmp_win->highlight = hilite; Scr->Focus = tmp_win; } if (!tmp_win->opaque_move) XGrabServer(dpy); } /* * Jason P. Venner jason@tfs.com * This function is used by F_WARPTO to match the action name * against window names. * Re-written to use list.c:MatchName(), allowing VTWM-style wilcards. * djhjr - 10/27/02 */ int MatchWinName(action, t) char *action; TwmWindow *t; { int matched = 0; #ifndef NO_REGEX_SUPPORT regex_t re; #else char re; #endif if (MatchName(t->full_name, action, &re, LTYPE_ANY_STRING)) if (MatchName(t->class.res_name, action, &re, LTYPE_ANY_STRING)) if (MatchName(t->class.res_class, action, &re, LTYPE_ANY_STRING)) matched = 1; return (matched); } /*********************************************************************** * * Procedure: * ExecuteFunction - execute a twm root function * * Inputs: * func - the function to execute * action - the menu action to execute * w - the window to execute this function on * tmp_win - the twm window structure * event - the event that caused the function * context - the context in which the button was pressed * pulldown- flag indicating execution from pull down menu * * Returns: * TRUE if should continue with remaining actions else FALSE to abort * *********************************************************************** */ extern int MovedFromKeyPress; int ExecuteFunction(func, action, w, tmp_win, eventp, context, pulldown) int func; char *action; Window w; TwmWindow *tmp_win; XEvent *eventp; int context; int pulldown; { char tmp[200]; char *ptr; char buff[MAX_FILE_SIZE]; int count, fd; int do_next_action = TRUE; actionHack = action; /* Submitted by Michel Eyckmans */ RootFunction = F_NOFUNCTION; if (Cancel) return TRUE; /* XXX should this be FALSE? */ switch (func) { case F_UPICONMGR: case F_LEFTICONMGR: case F_RIGHTICONMGR: case F_DOWNICONMGR: case F_FORWICONMGR: case F_BACKICONMGR: case F_NEXTICONMGR: case F_PREVICONMGR: case F_NOP: case F_TITLE: case F_DELTASTOP: case F_RAISELOWER: case F_WARP: /* PF */ case F_WARPCLASSNEXT: /* PF */ case F_WARPCLASSPREV: /* PF */ case F_WARPTOSCREEN: case F_WARPTO: case F_WARPRING: case F_WARPTOICONMGR: case F_COLORMAP: /* djhjr - 4/30/96 */ case F_SEPARATOR: /* djhjr - 12/14/98 */ case F_STATICICONPOSITIONS: /* djhjr - 5/30/00 */ case F_WARPSNUG: case F_WARPVISIBLE: /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT case F_SOUNDS: #endif /* djhjr - 10/2/01 */ case F_STRICTICONMGR: /* djhjr - 9/9/02 */ case F_BINDBUTTONS: case F_BINDKEYS: case F_UNBINDBUTTONS: case F_UNBINDKEYS: break; default: XGrabPointer(dpy, Scr->Root, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, Scr->Root, Scr->WaitCursor, CurrentTime); break; } /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT switch (func) { case F_BEEP: case F_SQUEEZECENTER: case F_SQUEEZELEFT: case F_SQUEEZERIGHT: /* djhjr - 11/4/03 */ case F_MOVESCREEN: case F_FORCEMOVE: case F_MOVE: case F_RESIZE: case F_EXEC: case F_DELETE: case F_DELETEDOOR: case F_DESTROY: case F_DEICONIFY: case F_ICONIFY: case F_IDENTIFY: case F_VERSION: case F_QUIT: case F_WARP: case F_WARPCLASSNEXT: case F_WARPCLASSPREV: case F_WARPRING: case F_WARPTO: case F_WARPTOICONMGR: case F_WARPTONEWEST: case F_WARPTOSCREEN: /* handle uniquely */ break; case F_POPUP: /* ignore */ break; case F_LOWER: case F_RAISE: case F_RAISELOWER: case F_NAIL: case F_NAMEDOOR: case F_BOTTOMZOOM: case F_FULLZOOM: case F_HORIZOOM: case F_LEFTZOOM: case F_RIGHTZOOM: case F_TOPZOOM: case F_ZOOM: case F_BACKICONMGR: case F_DOWNICONMGR: case F_FORWICONMGR: case F_LEFTICONMGR: case F_RIGHTICONMGR: case F_UPICONMGR: case F_FOCUS: case F_SAVEYOURSELF: case F_STICKYABOVE: case F_RING: case F_WINREFRESH: /* djhjr - 9/9/02 */ case F_BINDBUTTONS: case F_BINDKEYS: case F_UNBINDBUTTONS: case F_UNBINDKEYS: /* ignore if from a root menu */ if (Context != C_ROOT && Context != C_NO_CONTEXT) PlaySound(func); break; default: /* unconditional */ PlaySound(func); break; } #endif switch (func) { case F_NOP: case F_TITLE: break; case F_DELTASTOP: if (WindowMoved) do_next_action = FALSE; break; case F_RESTART: /* added this 'case' and 'if () ... else ' - djhjr - 7/15/98 */ case F_STARTWM: if (func == F_STARTWM) { /* dynamic allocation of (char **)my_argv - djhjr - 9/26/02 */ char *p, *delims = " \t"; char *new_argv = NULL, **my_argv = NULL; int i = 0, j = 0; p = strtok(action, delims); while (p) { if (j >= i) { i += 5; new_argv = (char *)realloc((char *)my_argv, i * sizeof(char *)); if (new_argv == NULL) { fprintf(stderr, "%s: unable to allocate %d bytes for execvp()\n", ProgramName, i * sizeof(char *)); break; } else my_argv = (char **)new_argv; } my_argv[j++] = strdup(p); p = strtok(NULL, delims); } if (new_argv != NULL) { my_argv[j] = NULL; /* djhjr - 7/31/98 */ setup_restart(eventp->xbutton.time); execvp(*my_argv, my_argv); fprintf(stderr, "%s: unable to start \"%s\"\n", ProgramName, *my_argv); new_argv = NULL; } if (new_argv == NULL) { i = 0; while (i < j) free(my_argv[i++]); if (j) free((char *)my_argv); } } else /* djhjr - 7/31/98 */ RestartVtwm(eventp->xbutton.time); break; case F_UPICONMGR: case F_DOWNICONMGR: case F_LEFTICONMGR: case F_RIGHTICONMGR: case F_FORWICONMGR: case F_BACKICONMGR: MoveIconManager(func); break; case F_NEXTICONMGR: case F_PREVICONMGR: JumpIconManager(func); break; case F_SHOWLIST: /* added this 'if (...) else ...' - djhjr - 9/21/99 */ if (context == C_ROOT) { name_list *list; ShowIconMgr(&Scr->iconmgr); /* * New code in list.c necessitates 'next_entry()' and * 'contents_of_entry()' - djhjr - 10/20/01 */ for (list = Scr->IconMgrs; list != NULL; list = next_entry(list)) ShowIconMgr((IconMgr *)contents_of_entry(list)); } else { IconMgr *ip; if ((ip = (IconMgr *)LookInList(Scr->IconMgrs, tmp_win->full_name, &tmp_win->class)) == NULL) ip = &Scr->iconmgr; ShowIconMgr(ip); } RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); break; case F_HIDELIST: if (Scr->NoIconManagers) break; /* added argument - djhjr - 9/21/99 */ HideIconManager((context == C_ROOT) ? NULL : tmp_win); break; case F_SORTICONMGR: /* djhjr - 6/10/98 */ if (Scr->NoIconManagers || Scr->iconmgr.count == 0) break; if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; { int save_sort; save_sort = Scr->SortIconMgr; Scr->SortIconMgr = TRUE; if (context == C_ICONMGR) SortIconManager((IconMgr *) NULL); else if (tmp_win->iconmgr) SortIconManager(tmp_win->iconmgrp); else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ Scr->SortIconMgr = save_sort; } break; case F_IDENTIFY: if (DeferExecution(context, func, Scr->SelectCursor)) { return TRUE; } Identify(tmp_win); break; case F_VERSION: Identify ((TwmWindow *) NULL); break; case F_ZOOMZOOM: /* RFB silly */ /* added args to iconmgrs - djhjr - 10/11/01 */ Zoom( None, NULL, None, NULL ); break; case F_AUTOPAN:/*RFB F_AUTOPAN*/ { /* toggle autopan *//*RFB F_AUTOPAN*/ static int saved;/*RFB F_AUTOPAN*/ if ( Scr->AutoPanX ) { saved = Scr->AutoPanX;/*RFB F_AUTOPAN*/ Scr->AutoPanX = 0;/*RFB F_AUTOPAN*/ } else { /*RFB F_AUTOPAN*/ Scr->AutoPanX = saved;/*RFB F_AUTOPAN*/ /* if restart with no autopan, we'll set the ** variable but we won't pan */ RaiseAutoPan(); /* DSE */ }/*RFB F_AUTOPAN*/ break;/*RFB F_AUTOPAN*/ }/*RFB F_AUTOPAN*/ case F_STICKYABOVE: /* DSE */ if (Scr->StickyAbove) { LowerSticky(); Scr->StickyAbove = FALSE; /* don't change the order of execution! */ } else { Scr->StickyAbove = TRUE; RaiseStickyAbove(); RaiseAutoPan(); /* don't change the order of execution! */ } return TRUE; /* break; *//* NOT REACHABLE */ case F_AUTORAISE: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; tmp_win->auto_raise = !tmp_win->auto_raise; if (tmp_win->auto_raise) ++(Scr->NumAutoRaises); else --(Scr->NumAutoRaises); break; case F_BEEP: /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT /* sound has priority over bell */ if (PlaySound(func)) break; #endif DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; case F_POPUP: tmp_win = (TwmWindow *)action; if (Scr->WindowFunction.func != F_NOFUNCTION) { ExecuteFunction(Scr->WindowFunction.func, Scr->WindowFunction.item->action, w, tmp_win, eventp, C_FRAME, FALSE); } else { DeIconify(tmp_win); XRaiseWindow (dpy, tmp_win->frame); XRaiseWindow (dpy, tmp_win->VirtualDesktopDisplayWindow); RaiseStickyAbove(); RaiseAutoPan(); } break; case F_RESIZE: { TwmWindow *focused = NULL; /* djhjr - 5/27/03 */ Bool fromtitlebar = False; long releaseEvent; long movementMask; int resizefromcenter = 0; /* djhjr - 10/2/02 */ /* djhjr - 10/6/02 */ #ifndef NO_SOUND_SUPPORT int did_playsound = FALSE; #endif if (DeferExecution(context, func, Scr->ResizeCursor)) return TRUE; PopDownMenu(); if (pulldown) XWarpPointer(dpy, None, Scr->Root, 0, 0, 0, 0, eventp->xbutton.x_root, eventp->xbutton.y_root); EventHandler[EnterNotify] = HandleUnknown; EventHandler[LeaveNotify] = HandleUnknown; /* allow the resizing of doors - djhjr - 2/22/99 if ((w != tmp_win->icon_w) && (context != C_DOOR)) */ if (context == C_ICON) /* can't resize icons */ { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } /* * Resizing from a titlebar menu was handled uniquely long * before I got here, and I added virtual windows and icon * managers on 9/15/99 and 10/11/01, leveraging that code. * It's all been integrated here. * djhjr - 10/3/02 */ if (Context & (C_FRAME_BIT | C_WINDOW_BIT | C_TITLE_BIT) && menuFromFrameOrWindowOrTitlebar) { XGetGeometry(dpy, w, &JunkRoot, &origDragX, &origDragY, (unsigned int *)&DragWidth, (unsigned int *)&DragHeight, &JunkBW, &JunkDepth); resizefromcenter = 2; } else if (Context == C_VIRTUAL_WIN) { TwmWindow *twin; if ((XFindContext(dpy, eventp->xbutton.subwindow, VirtualContext, (caddr_t *) &twin) == XCNOENT)) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } context = C_WINDOW; tmp_win = twin; resizefromcenter = 1; } else if (Context == C_ICONMGR && tmp_win->list) { /* added the second argument - djhjr - 5/28/00 */ if (!warp_if_warpunmapped(tmp_win, F_NOFUNCTION)) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } resizefromcenter = 1; } if (resizefromcenter) { WarpScreenToWindow(tmp_win); XWarpPointer(dpy, None, Scr->Root, 0, 0, 0, 0, tmp_win->frame_x + tmp_win->frame_width / 2, tmp_win->frame_y + tmp_win->frame_height / 2); /* grr - djhjr - 5/27/03 */ focused = Scr->Focus; Scr->Focus = tmp_win; SetBorder(Scr->Focus, True); /* save positions so we can tell if it was moved or not */ ResizeOrigX = tmp_win->frame_x + tmp_win->frame_width / 2; ResizeOrigY = tmp_win->frame_y + tmp_win->frame_height / 2; } else { /* save position so we can tell if it was moved or not */ ResizeOrigX = eventp->xbutton.x_root; ResizeOrigY = eventp->xbutton.y_root; } /* see if this is being done from the titlebar */ fromtitlebar = belongs_to_twm_window(tmp_win, eventp->xbutton.window); if (resizefromcenter == 2) { MenuStartResize(tmp_win, origDragX, origDragY, DragWidth, DragHeight, Context); releaseEvent = ButtonPress; movementMask = PointerMotionMask; } else { StartResize(eventp, tmp_win, fromtitlebar, context); fromtitlebar = False; releaseEvent = ButtonRelease; movementMask = ButtonMotionMask; } /* substantially re-worked - djhjr - 5/27/03 */ while (TRUE) { /* added exposure event masks - djhjr - 10/11/01 */ XMaskEvent(dpy, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ExposureMask | VisibilityChangeMask | movementMask, &Event); /* * See down below, after this loop - djhjr - 5/27/03 */ #if 0 /* discard crossing events before a release - djhjr - 10/11/01 */ if (Event.xany.type == EnterNotify || Event.xany.type == LeaveNotify) { /* this can't be the proper place - djhjr - 10/2/02 */ SetBorder(tmp_win, True); continue; } #endif /* * Don't discard exposure events before release * or window borders and/or their titles in the * virtual desktop won't get redrawn - djhjr */ /* discard any extra motion events before a release */ if (Event.type == MotionNotify) { /* was 'ButtonMotionMask' - djhjr - 10/11/01 */ while (XCheckMaskEvent(dpy, releaseEvent | movementMask, &Event)) { if (Event.type == releaseEvent) break; } } /* * See above, before this loop - djhjr - 5/27/03 */ #if 0 if (fromtitlebar && Event.type == ButtonPress) { fromtitlebar = False; continue; } #endif if (Event.type == releaseEvent) { if (Cancel) { if (tmp_win->opaque_resize) { ConstrainSize(tmp_win, &origWidth, &origHeight); SetupWindow(tmp_win, origx, origy, origWidth, origHeight, -1); ResizeTwmWindowContents(tmp_win, origWidth, origHeight); } else MoveOutline(Scr->Root, 0, 0, 0, 0, 0, 0); ResizeWindow = None; resizing_window = 0; do_next_action = FALSE; } else { if (resizefromcenter == 2) { /* added passing of 'Context' - djhjr - 9/30/02 */ MenuEndResize(tmp_win, Context); } else EndResize(); /* DispatchEvent2() is depreciated - djhjr - 10/6/02 */ DispatchEvent(); /* djhjr - 5/27/03 11/2/03 */ if (!Scr->NoRaiseResize && !Scr->RaiseOnStart && WindowMoved) { XRaiseWindow(dpy, tmp_win->frame); SetRaiseWindow(tmp_win); } } break; } /* DispatchEvent2() is depreciated - djhjr - 10/6/02 */ if (!DispatchEvent()) continue; if (Event.type != MotionNotify) continue; XQueryPointer(dpy, Scr->Root, &JunkRoot, &JunkChild, &JunkX, &JunkY, &AddingX, &AddingY, &JunkMask); if (!resizing_window && (abs(AddingX - ResizeOrigX) < Scr->MoveDelta && abs(AddingY - ResizeOrigY) < Scr->MoveDelta)) { continue; } resizing_window = 1; WindowMoved = TRUE; /* djhjr - 5/27/03 11/3/03 */ if ((!Scr->NoRaiseResize && Scr->RaiseOnStart) /* trap a Shape extention bug - djhjr - 5/27/03 */ || (tmp_win->opaque_resize && (HasShape && (tmp_win->wShaped || tmp_win->squeeze_info))) ) { XRaiseWindow(dpy, tmp_win->frame); SetRaiseWindow(tmp_win); if (Scr->Virtual && tmp_win->VirtualDesktopDisplayWindow) XRaiseWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT if (did_playsound == FALSE) { PlaySound(func); did_playsound = TRUE; } #endif /* MenuDoResize() is depreciated - djhjr - 10/6/02 */ DoResize(AddingX, AddingY, tmp_win); } /* djhjr - 6/4/98 return TRUE; */ /* djhjr - 7/17/98 * djhjr - 4/7/98 * if (!Scr->NoGrabServer) XUngrabServer(dpy); */ if (!tmp_win->opaque_resize) XUngrabServer(dpy); /* * All this stuff from resize.c:EndResize() - djhjr - 10/6/02 */ if (!tmp_win->opaque_resize) UninstallRootColormap(); /* discard queued enter and leave events - djhjr - 5/27/03 */ while (XCheckMaskEvent(dpy, EnterWindowMask | LeaveWindowMask, &Event)) ; if (!Scr->NoRaiseResize) { RaiseStickyAbove (); /* DSE */ RaiseAutoPan(); } /* update virtual coords */ tmp_win->virtual_frame_x = Scr->VirtualDesktopX + tmp_win->frame_x; tmp_win->virtual_frame_y = Scr->VirtualDesktopY + tmp_win->frame_y; /* UpdateDesktop(tmp_win); Stig */ /* djhjr - 5/27/03 MoveResizeDesktop(tmp_win, Scr->NoRaiseResize); * Stig * */ MoveResizeDesktop(tmp_win, Cancel | Scr->NoRaiseResize); /* Stig */ /* djhjr - 9/30/02 10/6/02 */ if (Context == C_VIRTUAL_WIN) { /* * Mask a bug that calls MoveOutline(zeros) after the * border has been repainted, leaving artifacts. I think * I know what the bug is, but I can't seem to fix it. */ if (Scr->BorderBevelWidth > 0) PaintBorders(tmp_win, False); JunkX = tmp_win->virtual_frame_x + tmp_win->frame_width / 2; JunkY = tmp_win->virtual_frame_y + tmp_win->frame_height / 2; XWarpPointer(dpy, None, Scr->VirtualDesktopDisplayOuter, 0, 0, 0, 0, SCALE_D(JunkX), SCALE_D(JunkY)); /* grr - djhjr - 5/27/03 */ SetBorder(Scr->Focus, False); Scr->Focus = focused; } /* djhjr - 6/4/98 */ /* don't re-map if the window is the virtual desktop - djhjr - 2/28/99 */ if (Scr->VirtualReceivesMotionEvents && /* !tmp_win->opaque_resize && */ tmp_win->w != Scr->VirtualDesktopDisplayOuter) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } break; } case F_ZOOM: case F_HORIZOOM: case F_FULLZOOM: case F_LEFTZOOM: case F_RIGHTZOOM: case F_TOPZOOM: case F_BOTTOMZOOM: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; /* djhjr - 4/1/00 */ PopDownMenu(); fullzoom(tmp_win, func); /* UpdateDesktop(tmp_win); Stig */ MoveResizeDesktop(tmp_win, Scr->NoRaiseMove); /* Stig */ break; case F_MOVE: case F_FORCEMOVE: { static Time last_time = 0; Window rootw; Bool fromtitlebar = False; int moving_icon = FALSE; int constMoveDir, constMoveX, constMoveY; int constMoveXL, constMoveXR, constMoveYT, constMoveYB; int origX, origY; long releaseEvent; long movementMask; int xl, yt, xr, yb; int movefromcenter = 0; /* djhjr - 10/4/02 */ /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT int did_playsound = FALSE; #endif if (DeferExecution(context, func, Scr->MoveCursor)) return TRUE; PopDownMenu(); rootw = eventp->xbutton.root; if (pulldown) XWarpPointer(dpy, None, Scr->Root, 0, 0, 0, 0, eventp->xbutton.x_root, eventp->xbutton.y_root); EventHandler[EnterNotify] = HandleUnknown; EventHandler[LeaveNotify] = HandleUnknown; /* djhjr - 4/7/98 if (!Scr->NoGrabServer || !Scr->OpaqueMove) XGrabServer(dpy); */ /* djhjr - 7/17/98 if (!Scr->NoGrabServer) XGrabServer(dpy); */ if (!tmp_win->opaque_move) XGrabServer(dpy); /* use initialized size... djhjr - 5/9/96 * djhjr - 4/27/96 * Scr->SizeStringOffset = SIZE_HINDENT; XResizeWindow(dpy, Scr->SizeWindow, Scr->SizeStringWidth + SIZE_HINDENT * 2, Scr->SizeFont.height + SIZE_VINDENT * 2); */ XGrabPointer(dpy, eventp->xbutton.root, True, ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | PointerMotionMask, /* PointerMotionHintMask */ GrabModeAsync, GrabModeAsync, Scr->Root, Scr->MoveCursor, CurrentTime); /* added this 'if (...) else' - djhjr - 10/11/01 */ if (context == C_VIRTUAL_WIN) { TwmWindow *twin; if ((XFindContext(dpy, eventp->xbutton.subwindow, VirtualContext, (caddr_t *) &twin) == XCNOENT)) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } tmp_win = twin; moveFromCenterWrapper(tmp_win); /* these two - djhjr - 10/4/02 */ w = tmp_win->frame; movefromcenter = 1; } else /* added this 'if (...) else' - djhjr - 9/15/99 */ if (context == C_ICONMGR && tmp_win->list) { /* added the second argument - djhjr - 5/28/00 */ if (!warp_if_warpunmapped(tmp_win, F_NOFUNCTION)) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } moveFromCenterWrapper(tmp_win); /* djhjr - 10/11/01 */ /* these two - djhjr - 10/4/02 */ w = tmp_win->frame; movefromcenter = 1; } else if (context == C_ICON && tmp_win->icon_w) { DragX = eventp->xbutton.x; DragY = eventp->xbutton.y; w = tmp_win->icon_w; moving_icon = TRUE; } else if (w != tmp_win->icon_w) { XTranslateCoordinates(dpy, w, tmp_win->frame, eventp->xbutton.x, eventp->xbutton.y, &DragX, &DragY, &JunkChild); w = tmp_win->frame; } XMapRaised (dpy, Scr->SizeWindow); DragWindow = None; MoveFunction = func; /* set for DispatchEvent() */ XGetGeometry(dpy, w, &JunkRoot, &origDragX, &origDragY, (unsigned int *)&DragWidth, (unsigned int *)&DragHeight, &JunkBW, &JunkDepth); /* added this 'if (...) else' - djhjr - 10/4/02 */ if (menuFromFrameOrWindowOrTitlebar || movefromcenter || (moving_icon && fromMenu)) { origX = DragX = origDragX + DragWidth / 2; origY = DragY = origDragY + DragHeight / 2; } else { origX = eventp->xbutton.x_root; origY = eventp->xbutton.y_root; } CurrentDragX = origDragX; CurrentDragY = origDragY; /* * Only do the constrained move if timer is set - * need to check it in case of stupid or wicked fast servers. */ if ( ConstrainedMoveTime && eventp->xbutton.time - last_time < ConstrainedMoveTime) { int width, height; ConstMove = TRUE; constMoveDir = MOVE_NONE; constMoveX = eventp->xbutton.x_root - DragX - JunkBW; constMoveY = eventp->xbutton.y_root - DragY - JunkBW; width = DragWidth + 2 * JunkBW; height = DragHeight + 2 * JunkBW; constMoveXL = constMoveX + width/3; constMoveXR = constMoveX + 2*(width/3); constMoveYT = constMoveY + height/3; constMoveYB = constMoveY + 2*(height/3); XWarpPointer(dpy, None, w, 0, 0, 0, 0, DragWidth/2, DragHeight/2); XQueryPointer(dpy, w, &JunkRoot, &JunkChild, &JunkX, &JunkY, &DragX, &DragY, &JunkMask); } last_time = eventp->xbutton.time; /* djhjr - 4/7/98 if (!Scr->OpaqueMove) */ if (!tmp_win->opaque_move) { InstallRootColormap(); /*if (!Scr->MoveDelta)*/ /* djhjr - 10/2/02 */ { /* * Draw initial outline. This was previously done the * first time though the outer loop by dropping out of * the XCheckMaskEvent inner loop down to one of the * MoveOutline's below. */ MoveOutline(rootw, origDragX - JunkBW, origDragY - JunkBW, DragWidth + 2 * JunkBW, DragHeight + 2 * JunkBW, tmp_win->frame_bw, /* djhjr - 4/22/96 moving_icon ? 0 : tmp_win->title_height); */ moving_icon ? 0 : tmp_win->title_height + tmp_win->frame_bw3D); /* * This next line causes HandleButtonRelease to call * XRaiseWindow(). This is solely to preserve the * previous behaviour that raises a window being moved * on button release even if you never actually moved * any distance (unless you move less than MoveDelta or * NoRaiseMove is set or OpaqueMove is set). * * It's set way down below; no need to force it here. * djhjr - 10/4/02 * * The code referred to above is 'if 0'd out now anyway. * djhjr - 10/6/02 */ /*DragWindow = w;*/ } } /* * see if this is being done from the titlebar */ fromtitlebar = belongs_to_twm_window(tmp_win, eventp->xbutton.window); /* added 'movefromcenter' and 'moving_icon' - djhjr - 10/4/02 */ if ((menuFromFrameOrWindowOrTitlebar && !fromtitlebar) || movefromcenter || (moving_icon && fromMenu)) { /* warp the pointer to the middle of the window */ XWarpPointer(dpy, None, Scr->Root, 0, 0, 0, 0, origDragX + DragWidth / 2, origDragY + DragHeight / 2); SetBorder(tmp_win, True); /* grr */ XFlush(dpy); } /* djhjr - 4/27/96 */ DisplayPosition(CurrentDragX, CurrentDragY); if (menuFromFrameOrWindowOrTitlebar) { releaseEvent = ButtonPress; movementMask = PointerMotionMask; } else { releaseEvent = ButtonRelease; movementMask = ButtonMotionMask; } while (TRUE) { /* block until there is an interesting event */ XMaskEvent(dpy, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ExposureMask | VisibilityChangeMask | movementMask, &Event); /* * See down below, after this loop - djhjr - 5/23/03 */ #if 0 /* throw away enter and leave events until release */ if (Event.xany.type == EnterNotify || Event.xany.type == LeaveNotify) { continue; } #endif /* * Don't discard exposure events before release * or window borders and/or their titles in the * virtual desktop won't get redrawn - djhjr */ /* discard any extra motion events before a release */ if (Event.type == MotionNotify) { while (XCheckMaskEvent(dpy, movementMask | releaseEvent, &Event)) { if (Event.type == releaseEvent) break; } } /* * There used to be a couple of routines that handled the * cancel functionality here, each doing a portion of the * job, then returning immediately. They became redundant * to just letting program execution fall through. So now, * the 'if (Event.type == releaseEvent) if (Cancel)' below * does just that, clearing a few flags first. * djhjr - 10/6/02 */ if (fromtitlebar && Event.type == ButtonPress) { fromtitlebar = False; CurrentDragX = origX = Event.xbutton.x_root; CurrentDragY = origY = Event.xbutton.y_root; XTranslateCoordinates(dpy, rootw, tmp_win->frame, origX, origY, &DragX, &DragY, &JunkChild); continue; } /* DispatchEvent2() is depreciated - djhjr - 10/6/02 */ if (!DispatchEvent()) continue; /* re-wrote this stuff - djhjr - 10/4/02 5/24/03 11/2/03 */ if (Event.type == releaseEvent) { MoveOutline(rootw, 0, 0, 0, 0, 0, 0); if (Cancel) { DragWindow = None; ConstMove = WindowMoved = do_next_action = FALSE; } else if (WindowMoved) { if (moving_icon) { tmp_win->icon_moved = TRUE; XMoveWindow(dpy, tmp_win->icon_w, CurrentDragX, CurrentDragY); if (!Scr->NoRaiseMove && !Scr->RaiseOnStart) { XRaiseWindow(dpy, tmp_win->icon_w); SetRaiseWindow(tmp_win->icon_w); } } else { if (movefromcenter) { tmp_win->frame_x = Event.xbutton.x_root - DragWidth / 2; tmp_win->frame_y = Event.xbutton.y_root - DragHeight / 2; } else { tmp_win->frame_x = CurrentDragX; tmp_win->frame_y = CurrentDragY; } XMoveWindow(dpy, tmp_win->frame, tmp_win->frame_x, tmp_win->frame_y); SendConfigureNotify(tmp_win, tmp_win->frame_x, tmp_win->frame_y); if (!Scr->NoRaiseMove && !Scr->RaiseOnStart) { XRaiseWindow(dpy, tmp_win->frame); SetRaiseWindow(tmp_win); } } } break; } /* something left to do only if the pointer moved */ if (Event.type != MotionNotify) continue; XQueryPointer(dpy, rootw, &(eventp->xmotion.root), &JunkChild, &(eventp->xmotion.x_root), &(eventp->xmotion.y_root), &JunkX, &JunkY, &JunkMask); if (DragWindow == None && abs(eventp->xmotion.x_root - origX) < Scr->MoveDelta && abs(eventp->xmotion.y_root - origY) < Scr->MoveDelta) { continue; } WindowMoved = TRUE; DragWindow = w; /* djhjr - 4/7/98 if (!Scr->NoRaiseMove && Scr->OpaqueMove) */ /* djhjr - 10/6/02 if (!Scr->NoRaiseMove && tmp_win->opaque_move) XRaiseWindow(dpy, DragWindow); */ /* djhjr - 5/24/03 11/3/03 */ if (!Scr->NoRaiseMove && Scr->RaiseOnStart) { if (moving_icon) { XRaiseWindow(dpy, tmp_win->icon_w); SetRaiseWindow(tmp_win->icon_w); } else { XRaiseWindow(dpy, tmp_win->frame); SetRaiseWindow(tmp_win); if (Scr->Virtual && tmp_win->VirtualDesktopDisplayWindow) XRaiseWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } } if (ConstMove) { switch (constMoveDir) { case MOVE_NONE: if (eventp->xmotion.x_root < constMoveXL || eventp->xmotion.x_root > constMoveXR) { constMoveDir = MOVE_HORIZ; } if (eventp->xmotion.y_root < constMoveYT || eventp->xmotion.y_root > constMoveYB) { constMoveDir = MOVE_VERT; } XQueryPointer(dpy, DragWindow, &JunkRoot, &JunkChild, &JunkX, &JunkY, &DragX, &DragY, &JunkMask); break; case MOVE_VERT: constMoveY = eventp->xmotion.y_root - DragY - JunkBW; break; case MOVE_HORIZ: constMoveX = eventp->xmotion.x_root - DragX - JunkBW; break; } xl = constMoveX; yt = constMoveY; } else if (DragWindow != None) { /* added 'movefromcenter' and 'moving_icon' - djhjr - 10/4/02 */ if (!menuFromFrameOrWindowOrTitlebar && !movefromcenter && !(moving_icon && fromMenu)) { xl = eventp->xmotion.x_root - DragX - JunkBW; yt = eventp->xmotion.y_root - DragY - JunkBW; } else { xl = eventp->xmotion.x_root - (DragWidth / 2); yt = eventp->xmotion.y_root - (DragHeight / 2); } } if ((ConstMove && constMoveDir != MOVE_NONE) || DragWindow != None) { int width = DragWidth + 2 * JunkBW; int height = DragHeight + 2 * JunkBW; if (Scr->DontMoveOff && MoveFunction != F_FORCEMOVE) { xr = xl + width; yb = yt + height; if (xl < 0) xl = 0; if (xr > Scr->MyDisplayWidth) xl = Scr->MyDisplayWidth - width; if (yt < 0) yt = 0; if (yb > Scr->MyDisplayHeight) yt = Scr->MyDisplayHeight - height; } CurrentDragX = xl; CurrentDragY = yt; /* djhjr - 6/22/01 10/6/02 */ #ifndef NO_SOUND_SUPPORT if ((!ConstMove || constMoveDir != MOVE_NONE) && did_playsound == FALSE) { PlaySound(func); did_playsound = TRUE; } #endif /* djhjr - 4/7/98 if (Scr->OpaqueMove) */ if (tmp_win->opaque_move) XMoveWindow(dpy, DragWindow, xl, yt); else MoveOutline(eventp->xmotion.root, xl, yt, width, height, tmp_win->frame_bw, /* djhjr - 4/22/96 moving_icon ? 0 : tmp_win->title_height); */ moving_icon ? 0 : tmp_win->title_height + tmp_win->frame_bw3D); /* djhjr - 4/17/98 * move the small representation window * this knows a bit much about the internals i guess * XMoveWindow(dpy, tmp_win->VirtualDesktopDisplayWindow, SCALE_D(xl), SCALE_D(yt)); */ if (Scr->VirtualReceivesMotionEvents) { tmp_win->virtual_frame_x = R_TO_V_X(xl); tmp_win->virtual_frame_y = R_TO_V_Y(yt); /* djhjr - 5/24/03 MoveResizeDesktop(tmp_win, Scr->NoRaiseMove); */ MoveResizeDesktop(tmp_win, TRUE); } /* djhjr - 4/27/96 */ DisplayPosition (xl, yt); } } /* djhjr - 7/17/98 * djhjr - 4/7/98 * if (!Scr->NoGrabServer) XUngrabServer(dpy); */ if (!tmp_win->opaque_move) XUngrabServer(dpy); /* djhjr - 4/27/96 */ XUnmapWindow (dpy, Scr->SizeWindow); MovedFromKeyPress = False; if (!tmp_win->opaque_move) UninstallRootColormap(); /* discard queued enter and leave events - djhjr - 5/23/03 */ while (XCheckMaskEvent(dpy, EnterWindowMask | LeaveWindowMask, &Event)) ; /* from events.c:HandleButtonRelease() - djhjr - 10/6/02 */ if (!Scr->NoRaiseMove) { RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); } /* update virtual coords */ tmp_win->virtual_frame_x = Scr->VirtualDesktopX + tmp_win->frame_x; tmp_win->virtual_frame_y = Scr->VirtualDesktopY + tmp_win->frame_y; /* UpdateDesktop() hoses the stacking order - djhjr - 10/6/02 */ /* djhjr - 5/24/03 MoveResizeDesktop(tmp_win, Scr->NoRaiseMove); */ MoveResizeDesktop(tmp_win, Cancel | Scr->NoRaiseMove); /* djhjr - 10/4/02 10/6/02 */ if (Context == C_VIRTUAL_WIN) { /* * Mask a bug that calls MoveOutline(zeros) after the * border has been repainted, leaving artifacts. I think * I know what the bug is, but I can't seem to fix it. */ if (Scr->BorderBevelWidth > 0) PaintBorders(tmp_win, False); JunkX = tmp_win->virtual_frame_x + tmp_win->frame_width / 2; JunkY = tmp_win->virtual_frame_y + tmp_win->frame_height / 2; XWarpPointer(dpy, None, Scr->VirtualDesktopDisplayOuter, 0, 0, 0, 0, SCALE_D(JunkX), SCALE_D(JunkY)); } /* djhjr - 6/4/98 */ /* don't re-map if the window is the virtual desktop - djhjr - 2/28/99 */ if (Scr->VirtualReceivesMotionEvents && /* !tmp_win->opaque_move && */ tmp_win->w != Scr->VirtualDesktopDisplayOuter) { XUnmapWindow(dpy, Scr->VirtualDesktopDisplay); XMapWindow(dpy, Scr->VirtualDesktopDisplay); } MoveFunction = F_NOFUNCTION; /* clear for DispatchEvent() */ /* sanity check (also in events.c:HandleButtonRelease()) - djhjr - 10/6/02 */ DragWindow = None; ConstMove = FALSE; break; } case F_FUNCTION: { MenuRoot *mroot; MenuItem *mitem; Cursor cursor; if ((mroot = FindMenuRoot(action)) == NULL) { fprintf (stderr, "%s: couldn't find function \"%s\"\n", ProgramName, action); return TRUE; } /* * Changed this 'if ()' for deferred keyboard events (see also events.c) * Submitted by Michel Eyckmans * if (NeedToDefer(mroot) && DeferExecution(context, func, Scr->SelectCursor)) */ if ((cursor = NeedToDefer(mroot)) != None && DeferExecution(context, func, cursor)) return TRUE; else { for (mitem = mroot->first; mitem != NULL; mitem = mitem->next) { if (!ExecuteFunction (mitem->func, mitem->action, w, tmp_win, eventp, context, pulldown)) break; } } } break; case F_DEICONIFY: case F_ICONIFY: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; /* added '|| (...)' - djhjr - 6/3/03 */ if (tmp_win->icon || (func == F_DEICONIFY && tmp_win == tmp_win->list->twm)) { /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif DeIconify(tmp_win); /* * now HERE's a fine bit of kludge! it's to mask a hole in the * code I can't find that messes up when trying to warp to the * de-iconified window not in the real screen when WarpWindows * isn't used. see also the change in DeIconify(). * djhjr - 1/24/98 */ if (!Scr->WarpWindows && (Scr->WarpCursor || LookInList(Scr->WarpCursorL, tmp_win->full_name, &tmp_win->class))) { RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); WarpToWindow(tmp_win); /* PF */ } } else if (func == F_ICONIFY) { /* djhjr - 9/10/99 */ TwmDoor *d; TwmWindow *tmgr = NULL, *twin = NULL; MenuRoot *mr; /* sanity check for what's next - djhjr - 9/10/99 */ if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *)&d) != XCNOENT) { twin = tmp_win; tmp_win = d->twin; } /* * don't iconify if there's no way to get it back - not fool-proof * djhjr - 9/10/99 */ if (tmp_win->iconify_by_unmapping) { /* iconified by unmapping */ if (tmp_win->list) tmgr = tmp_win->list->iconmgr->twm_win; if ((tmgr && !tmgr->mapped && tmgr->iconify_by_unmapping) || ((Scr->IconManagerDontShow || LookInList(Scr->IconMgrNoShow, tmp_win->full_name, &tmp_win->class)) && LookInList(Scr->IconMgrShow, tmp_win->full_name, &tmp_win->class) == (char *)NULL)) { /* icon manager not mapped or not shown in one */ if (have_twmwindows == -1) { have_twmwindows = 0; /* better than two calls to FindMenuRoot() */ for (mr = Scr->MenuList; mr != NULL; mr = mr->next) if (strcmp(mr->name, TWM_WINDOWS) == 0 || strcmp(mr->name, VTWM_WINDOWS) == 0) { /* djhjr - 9/21/99 */ have_twmwindows = FindMenuOrFuncInBindings(C_ALL_BITS, mr, F_NOFUNCTION); break; } } /* djhjr - 9/21/99 */ if (have_showdesktop == -1) have_showdesktop = FindMenuOrFuncInBindings(C_ALL_BITS, NULL, F_SHOWDESKTOP); if (have_showlist == -1) have_showlist = FindMenuOrFuncInBindings(C_ALL_BITS, NULL, F_SHOWLIST); /* djhjr - 9/21/99 */ if (!FindMenuOrFuncInWindows(tmp_win, have_twmwindows, mr, F_NOFUNCTION) || LookInList(Scr->DontShowInTWMWindows, tmp_win->full_name, &tmp_win->class)) { /* no TwmWindows menu or not shown in it */ if (tmp_win->w == Scr->VirtualDesktopDisplayOuter && FindMenuOrFuncInWindows(tmp_win, have_showdesktop, NULL, F_SHOWDESKTOP)) ; else if (tmp_win->iconmgr && FindMenuOrFuncInWindows(tmp_win, have_showlist, NULL, F_SHOWLIST)) ; else if (tmgr && FindMenuOrFuncInWindows(tmgr, have_showlist, NULL, F_SHOWLIST)) ; else { /* no f.showdesktop or f.showiconmgr */ DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ if (twin) tmp_win = twin; break; } } } } if (twin) tmp_win = twin; if (tmp_win->list || !Scr->NoIconifyIconManagers) /* PF */ { /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif Iconify (tmp_win, eventp->xbutton.x_root - EDGE_OFFSET, /* DSE */ eventp->xbutton.y_root - EDGE_OFFSET); /* DSE */ } } break; case F_RAISELOWER: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; if (!WindowMoved) { XWindowChanges xwc; xwc.stack_mode = Opposite; if (w != tmp_win->icon_w) w = tmp_win->frame; XConfigureWindow (dpy, w, CWStackMode, &xwc); XConfigureWindow (dpy, tmp_win->VirtualDesktopDisplayWindow, CWStackMode, &xwc); /* ug */ XLowerWindow(dpy, Scr->VirtualDesktopDScreen); } break; case F_RAISE: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; /* check to make sure raise is not from the WindowFunction */ if (w == tmp_win->icon_w && Context != C_ROOT) XRaiseWindow(dpy, tmp_win->icon_w); else { XRaiseWindow(dpy, tmp_win->frame); XRaiseWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); break; case F_LOWER: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; if (!(Scr->StickyAbove && tmp_win->nailed)) { /* DSE */ if (w == tmp_win->icon_w) XLowerWindow(dpy, tmp_win->icon_w); else { XLowerWindow(dpy, tmp_win->frame); XLowerWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); XLowerWindow(dpy, Scr->VirtualDesktopDScreen); } } /* DSE */ break; case F_FOCUS: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; if (tmp_win->icon == FALSE) { if (!Scr->FocusRoot && Scr->Focus == tmp_win) { FocusOnRoot(); } else { if (Scr->Focus != NULL) { SetBorder (Scr->Focus, False); /* djhjr - 4/25/96 if (Scr->Focus->hilite_w) XUnmapWindow (dpy, Scr->Focus->hilite_w); */ PaintTitleHighlight(Scr->Focus, off); } InstallWindowColormaps (0, tmp_win); /* djhjr - 4/25/96 if (tmp_win->hilite_w) XMapWindow (dpy, tmp_win->hilite_w); */ PaintTitleHighlight(tmp_win, on); SetBorder (tmp_win, True); SetFocus (tmp_win, eventp->xbutton.time); Scr->FocusRoot = FALSE; Scr->Focus = tmp_win; } } break; case F_DESTROY: if (DeferExecution(context, func, Scr->DestroyCursor)) return TRUE; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT /* flag for the handler */ if (PlaySound(func)) destroySoundFromFunction = TRUE; #endif /* djhjr - 9/10/96 */ if (tmp_win == Scr->VirtualDesktopDisplayTwin) { /* added this 'if (...) ...' and 'if (...) else' - djhjr - 9/21/99 */ if (have_showdesktop == -1) have_showdesktop = FindMenuOrFuncInBindings(C_ALL_BITS, NULL, F_SHOWDESKTOP); if (FindMenuOrFuncInWindows(tmp_win, have_showdesktop, NULL, F_SHOWDESKTOP)) XUnmapWindow(dpy, Scr->VirtualDesktopDisplayTwin->frame); else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } { TwmDoor *d; if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *) &d) != XCNOENT) { /* djhjr - 9/10/99 XBell(dpy, 0); */ /* for some reason, we don't get the button up event - djhjr - 9/10/99 */ ButtonPressed = -1; door_delete(tmp_win->w, d); break; } } if (tmp_win->iconmgr) /* don't send ourself a message */ { /* added this 'if (...) ...' and 'if (...) else ...' - djhjr - 9/21/99 */ if (have_showlist == -1) have_showlist = FindMenuOrFuncInBindings(C_ALL_BITS, NULL, F_SHOWLIST); if (FindMenuOrFuncInWindows(tmp_win, have_showlist, NULL, F_SHOWLIST)) /* added argument - djhjr - 9/21/99 */ HideIconManager(tmp_win); else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ } else { /* djhjr - 4/26/99 */ AppletDown(tmp_win); XKillClient(dpy, tmp_win->w); } break; case F_DELETE: if (DeferExecution(context, func, Scr->DestroyCursor)) return TRUE; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT /* flag for the handler */ if (PlaySound(func)) destroySoundFromFunction = TRUE; #endif /* djhjr - 9/21/99 */ if (tmp_win == Scr->VirtualDesktopDisplayTwin) { if (have_showdesktop == -1) have_showdesktop = FindMenuOrFuncInBindings(C_ALL_BITS, NULL, F_SHOWDESKTOP); if (FindMenuOrFuncInWindows(tmp_win, have_showdesktop, NULL, F_SHOWDESKTOP)) XUnmapWindow(dpy, Scr->VirtualDesktopDisplayTwin->frame); else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } /* djhjr - 9/10/99 */ { TwmDoor *d; if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *) &d) != XCNOENT) { /* for some reason, we don't get the button up event - djhjr - 9/10/99 */ ButtonPressed = -1; door_delete(tmp_win->w, d); break; } } if (tmp_win->iconmgr) /* don't send ourself a message */ { /* added this 'if (...) ...' and 'if (...) else ...' - djhjr - 9/21/99 */ if (have_showlist == -1) have_showlist = FindMenuOrFuncInBindings(C_ALL_BITS, NULL, F_SHOWLIST); if (FindMenuOrFuncInWindows(tmp_win, have_showlist, NULL, F_SHOWLIST)) /* added argument - djhjr - 9/21/99 */ HideIconManager(tmp_win); else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ } else if (tmp_win->protocols & DoesWmDeleteWindow) { /* djhjr - 4/26/99 */ AppletDown(tmp_win); SendDeleteWindowMessage (tmp_win, LastTimestamp()); } else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; case F_SAVEYOURSELF: if (DeferExecution (context, func, Scr->SelectCursor)) return TRUE; if (tmp_win->protocols & DoesWmSaveYourself) SendSaveYourselfMessage (tmp_win, LastTimestamp()); else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; case F_CIRCLEUP: XCirculateSubwindowsUp(dpy, Scr->Root); break; case F_CIRCLEDOWN: XCirculateSubwindowsDown(dpy, Scr->Root); break; case F_EXEC: PopDownMenu(); if (!Scr->NoGrabServer) { XUngrabServer (dpy); XSync (dpy, 0); } /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT /* flag for the handler */ if (PlaySound(func)) createSoundFromFunction = TRUE; #endif Execute(action); break; case F_UNFOCUS: FocusOnRoot(); break; case F_CUT: strcpy(tmp, action); strcat(tmp, "\n"); XStoreBytes(dpy, tmp, strlen(tmp)); break; case F_CUTFILE: ptr = XFetchBytes(dpy, &count); if (ptr) { if (sscanf (ptr, "%s", tmp) == 1) { XFree (ptr); ptr = ExpandFilename(tmp); if (ptr) { fd = open (ptr, 0); if (fd >= 0) { count = read (fd, buff, MAX_FILE_SIZE - 1); if (count > 0) XStoreBytes (dpy, buff, count); close(fd); } else { fprintf (stderr, "%s: unable to open cut file \"%s\"\n", ProgramName, tmp); } if (ptr != tmp) free (ptr); } } else { XFree(ptr); } } else { fprintf(stderr, "%s: cut buffer is empty\n", ProgramName); } break; case F_WARPTOSCREEN: { if (strcmp (action, WARPSCREEN_NEXT) == 0) { WarpToScreen (Scr->screen + 1, 1); } else if (strcmp (action, WARPSCREEN_PREV) == 0) { WarpToScreen (Scr->screen - 1, -1); } else if (strcmp (action, WARPSCREEN_BACK) == 0) { WarpToScreen (PreviousScreen, 0); } else { WarpToScreen (atoi (action), 0); } } break; case F_COLORMAP: { if (strcmp (action, COLORMAP_NEXT) == 0) { BumpWindowColormap (tmp_win, 1); } else if (strcmp (action, COLORMAP_PREV) == 0) { BumpWindowColormap (tmp_win, -1); } else { BumpWindowColormap (tmp_win, 0); } } break; case F_WARPCLASSNEXT: /* PF */ case F_WARPCLASSPREV: /* PF */ WarpClass(func == F_WARPCLASSNEXT, tmp_win, action); break; case F_WARPTONEWEST: /* PF */ /* added '&& warp_if_warpunmapped()' - djhjr - 5/13/98 */ /* added the second argument - djhjr - 5/28/00 */ if (Scr->Newest && warp_if_warpunmapped(Scr->Newest, F_NOFUNCTION)) { RaiseStickyAbove(); RaiseAutoPan(); /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif WarpToWindow(Scr->Newest); } else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; case F_WARPTO: { register TwmWindow *t; /* djhjr - 6/3/03 */ int did_warpto = FALSE; for (t = Scr->TwmRoot.next; t != NULL; t = t->next) { /* * This used to fall through into F_WARP, but the * warp_if_warpunmapped() meant this loop couldn't * continue to look for a match in the window list. * djhjr - 10/27/02 */ /* jason@tfs.com */ if (MatchWinName(action, t) == 0 && warp_if_warpunmapped(t, func)) { tmp_win = t; /* PF */ RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif did_warpto = TRUE; WarpToWindow(tmp_win); /* PF */ break; } } /* djhjr - 6/3/03 */ if (!did_warpto) DoAudible(); } break; case F_WARP: /* PF */ { /* PF */ /* added '&& warp_if_warpunmapped()' - djhjr - 5/13/98 */ /* added the second argument - djhjr - 5/28/00 */ if (tmp_win && warp_if_warpunmapped(tmp_win, F_NOFUNCTION)) /* PF */ { RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif WarpToWindow(tmp_win); /* PF */ } else { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ } } /* PF */ break; case F_WARPTOICONMGR: { TwmWindow *t; int len; /* djhjr - 5/13/98 Window raisewin = None, iconwin = None; */ /* * raisewin now points to the window's icon manager entry, and * iconwin now points to raisewin's icon manager - djhjr - 5/30/00 * TwmWindow *raisewin = None; Window iconwin = None; */ WList *raisewin = NULL; TwmWindow *iconwin = None; len = strlen(action); if (len == 0) { if (tmp_win && tmp_win->list) { /* djhjr - 5/13/98 raisewin = tmp_win->list->iconmgr->twm_win->frame; */ /* djhjr - 5/30/00 raisewin = tmp_win->list->iconmgr->twm_win; iconwin = tmp_win->list->icon; */ raisewin = tmp_win->list; } else if (Scr->iconmgr.active) { /* djhjr - 5/13/98 raisewin = Scr->iconmgr.twm_win->frame; */ /* djhjr - 5/30/00 raisewin = Scr->iconmgr.twm_win; iconwin = Scr->iconmgr.active->w; */ raisewin = Scr->iconmgr.active; } } else { for (t = Scr->TwmRoot.next; t != NULL; t = t->next) { if (strncmp (action, t->icon_name, len) == 0) { if (t->list && t->list->iconmgr->twm_win->mapped) { /* djhjr - 5/13/98 raisewin = t->list->iconmgr->twm_win->frame; */ /* djhjr - 5/30/00 raisewin = t->list->iconmgr->twm_win; iconwin = t->list->icon; */ raisewin = t->list; break; } } } } /* djhjr - 6/14/00 */ if (!raisewin) { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } /* djhjr - 5/30/00 */ iconwin = raisewin->iconmgr->twm_win; /* added '&& warp_if_warpunmapped()' - djhjr - 5/13/98 */ /* added the second argument - djhjr - 5/28/00 */ /* was 'raisewin' - djhjr - 5/30/00 */ if (iconwin && warp_if_warpunmapped(iconwin, F_NOFUNCTION)) { /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif /* djhjr - 5/30/00 XWarpPointer (dpy, None, iconwin, 0, 0, 0, 0, EDGE_OFFSET, EDGE_OFFSET); * DSE * */ WarpInIconMgr(raisewin, iconwin); } else { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ } } break; case F_SQUEEZELEFT:/*RFB*/ { static SqueezeInfo left_squeeze = { J_LEFT, 0, 0 }; /* too much dup'd code - djhjr - 9/17/02 */ if (do_squeezetitle(context, func, tmp_win, &left_squeeze)) return TRUE; /* deferred */ } break; case F_SQUEEZERIGHT:/*RFB*/ { static SqueezeInfo right_squeeze = { J_RIGHT, 0, 0 }; /* too much dup'd code - djhjr - 9/17/02 */ if (do_squeezetitle(context, func, tmp_win, &right_squeeze)) return TRUE; /* deferred */ } break; case F_SQUEEZECENTER:/*RFB*/ { static SqueezeInfo center_squeeze = { J_CENTER, 0, 0 }; /* too much dup'd code - djhjr - 9/17/02 */ if (do_squeezetitle(context, func, tmp_win, ¢er_squeeze)) return TRUE; /* deferred */ } break; case F_RING:/*RFB*/ if (DeferExecution (context, func, Scr->SelectCursor)) return TRUE; if ( tmp_win->ring.next || tmp_win->ring.prev ) RemoveWindowFromRing(tmp_win); else AddWindowToRing(tmp_win); #ifdef ORIGINAL_WARPRINGCOORDINATES /* djhjr - 5/11/98 */ tmp_win->ring.cursor_valid = False; #endif break; case F_WARPRING: switch (action[0]) { case 'n': WarpAlongRing (&eventp->xbutton, True); break; case 'p': WarpAlongRing (&eventp->xbutton, False); break; default: DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ break; } break; case F_FILE: action = ExpandFilename(action); fd = open(action, 0); if (fd >= 0) { count = read(fd, buff, MAX_FILE_SIZE - 1); if (count > 0) XStoreBytes(dpy, buff, count); close(fd); } else { fprintf (stderr, "%s: unable to open file \"%s\"\n", ProgramName, action); } break; case F_REFRESH: { XSetWindowAttributes attributes; unsigned long valuemask; valuemask = (CWBackPixel | CWBackingStore | CWSaveUnder); attributes.background_pixel = Scr->Black; attributes.backing_store = NotUseful; attributes.save_under = False; w = XCreateWindow (dpy, Scr->Root, 0, 0, (unsigned int) Scr->MyDisplayWidth, (unsigned int) Scr->MyDisplayHeight, (unsigned int) 0, CopyFromParent, (unsigned int) CopyFromParent, (Visual *) CopyFromParent, valuemask, &attributes); XMapWindow (dpy, w); XDestroyWindow (dpy, w); XFlush (dpy); } break; case F_WINREFRESH: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; if (context == C_ICON && tmp_win->icon_w) w = XCreateSimpleWindow(dpy, tmp_win->icon_w, 0, 0, 9999, 9999, 0, Scr->Black, Scr->Black); else w = XCreateSimpleWindow(dpy, tmp_win->frame, 0, 0, 9999, 9999, 0, Scr->Black, Scr->Black); XMapWindow(dpy, w); XDestroyWindow(dpy, w); XFlush(dpy); break; case F_NAIL: if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; tmp_win->nailed = !tmp_win->nailed; /* update the vd display */ /* UpdateDesktop(tmp_win); Stig */ NailDesktop(tmp_win); /* Stig */ #ifdef DEBUG fprintf(stdout, "%s: nail state of %s is now %s\n", ProgramName, tmp_win->name, (tmp_win->nailed ? "nailed" : "free")); #endif /* DEBUG */ RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* DSE */ break; /* * move a percentage in a particular direction */ case F_PANDOWN: PanRealScreen(0, (atoi(action) * Scr->MyDisplayHeight) / 100 /* DSE */ ,NULL,NULL); break; case F_PANLEFT: PanRealScreen(-((atoi(action) * Scr->MyDisplayWidth) / 100), 0 /* DSE */ ,NULL,NULL); break; case F_PANRIGHT: PanRealScreen((atoi(action) * Scr->MyDisplayWidth) / 100, 0 /* DSE */ ,NULL,NULL); break; case F_PANUP: PanRealScreen(0, -((atoi(action) * Scr->MyDisplayHeight) / 100) /* DSE */ ,NULL,NULL); break; case F_RESETDESKTOP: SetRealScreen(0, 0); break; /*SNUG*/ /* Robert Forsman added these two functions */ /*SNUG*/ { /*SNUG*/ TwmWindow *scan; /*SNUG*/ int right, left, up, down; /*SNUG*/ int inited; /*SNUG*/ case F_SNUGDESKTOP: /*SNUG*/ /*SNUG*/ inited = 0; /*SNUG*/ for (scan = Scr->TwmRoot.next; scan!=NULL; scan = scan->next) /*SNUG*/ { /*SNUG*/ if (scan->nailed) /*SNUG*/ continue; /*SNUG*/ if (scan->frame_x > Scr->MyDisplayWidth || /*SNUG*/ scan->frame_y > Scr->MyDisplayHeight) /*SNUG*/ continue; /*SNUG*/ if (scan->frame_x+scan->frame_width < 0 || /*SNUG*/ scan->frame_y+scan->frame_height < 0) /*SNUG*/ continue; /*SNUG*/ if ( inited==0 || scan->frame_xframe_x; /*SNUG*/ if ( inited==0 || scan->frame_yframe_y; /*SNUG*/ if ( inited==0 || scan->frame_x+scan->frame_width>left ) /*SNUG*/ left = scan->frame_x+scan->frame_width; /*SNUG*/ if ( inited==0 || scan->frame_y+scan->frame_height>down ) /*SNUG*/ down = scan->frame_y+scan->frame_height; /*SNUG*/ inited = 1; /*SNUG*/ } /*SNUG*/ if (inited) /*SNUG*/ { /*SNUG*/ int dx,dy; /*SNUG*/ if (left-right < Scr->MyDisplayWidth && (right<0 || left>Scr->MyDisplayWidth) ) /*SNUG*/ dx = right - ( Scr->MyDisplayWidth - (left-right) ) /2; /*SNUG*/ else /*SNUG*/ dx = 0; /*SNUG*/ if (down-up < Scr->MyDisplayHeight && (up<0 || down>Scr->MyDisplayHeight) ) /*SNUG*/ dy = up - (Scr->MyDisplayHeight - (down-up) ) /2; /*SNUG*/ else /*SNUG*/ dy = 0; /*SNUG*/ if (dx!=0 || dy!=0) /*SNUG*/ PanRealScreen(dx,dy,NULL,NULL); /*SNUG*/ /* DSE */ /*SNUG*/ else /*SNUG*/ DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ /*SNUG*/ } /*SNUG*/ else /*SNUG*/ DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ /*SNUG*/ break; /*SNUG*/ /*SNUG*/ case F_SNUGWINDOW: /*SNUG*/ if (DeferExecution(context, func, Scr->SelectCursor)) /*SNUG*/ return TRUE; /*SNUG*/ /*SNUG*/ inited = 0; /*SNUG*/ right = tmp_win->frame_x; /*SNUG*/ left = tmp_win->frame_x + tmp_win->frame_width; /*SNUG*/ up = tmp_win->frame_y; /*SNUG*/ down = tmp_win->frame_y + tmp_win->frame_height; /*SNUG*/ inited = 1; /*SNUG*/ if (inited) /*SNUG*/ { /*SNUG*/ int dx,dy; /*SNUG*/ dx = 0; /*SNUG*/ if (left-right < Scr->MyDisplayWidth) /*SNUG*/ { /*SNUG*/ if (right<0) /*SNUG*/ dx = right; /*SNUG*/ else if (left>Scr->MyDisplayWidth) /*SNUG*/ dx = left - Scr->MyDisplayWidth; /*SNUG*/ } /*SNUG*/ /*SNUG*/ dy = 0; /*SNUG*/ if (down-up < Scr->MyDisplayHeight) /*SNUG*/ { /*SNUG*/ if (up<0) /*SNUG*/ dy = up; /*SNUG*/ else if (down>Scr->MyDisplayHeight) /*SNUG*/ dy = down - Scr->MyDisplayHeight; /*SNUG*/ } /*SNUG*/ /*SNUG*/ if (dx!=0 || dy!=0) /*SNUG*/ PanRealScreen(dx,dy,NULL,NULL); /*SNUG*/ /* DSE */ /*SNUG*/ else /*SNUG*/ DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ /*SNUG*/ } /*SNUG*/ else /*SNUG*/ DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ /*SNUG*/ /*SNUG*/ break; /*SNUG*/ } /* Next four submitted by Seth Robertson - 9/9/02 */ case F_BINDBUTTONS: { int i, j; if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; for (i = 0; i < MAX_BUTTONS+1; i++) for (j = 0; j < MOD_SIZE; j++) if (Scr->Mouse[i][C_WINDOW][j].func != F_NOFUNCTION) XGrabButton(dpy, i, j, tmp_win->frame, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, Scr->FrameCursor); break; } case F_BINDKEYS: { FuncKey *tmp; if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; for (tmp = Scr->FuncKeyRoot.next; tmp != NULL; tmp = tmp->next) if (tmp->cont == C_WINDOW) /* djhjr - 9/10/03 XGrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->w, True, GrabModeAsync, GrabModeAsync); */ GrabModKeys(tmp_win->w, tmp); break; } case F_UNBINDBUTTONS: { int i, j; if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; for (i = 0; i < MAX_BUTTONS+1; i++) for (j = 0; j < MOD_SIZE; j++) if (Scr->Mouse[i][C_WINDOW][j].func != F_NOFUNCTION) XUngrabButton(dpy, i, j, tmp_win->frame); break; } case F_UNBINDKEYS: { FuncKey *tmp; if (DeferExecution(context, func, Scr->SelectCursor)) return TRUE; for (tmp = Scr->FuncKeyRoot.next; tmp != NULL; tmp = tmp->next) if (tmp->cont == C_WINDOW) /* djhjr - 9/10/03 XUngrabKey(dpy, tmp->keycode, tmp->mods, tmp_win->w); */ UngrabModKeys(tmp_win->w, tmp); break; } case F_MOVESCREEN: /* * Breaks badly if not called by the default button press. */ { long releaseEvent = ButtonRelease; long movementMask = ButtonMotionMask; #ifndef NO_SOUND_SUPPORT int did_playsound = FALSE; #endif StartMoveWindowInDesktop(eventp->xmotion); while (TRUE) { /* added exposure event masks - djhjr - 10/11/01 */ XMaskEvent(dpy, ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask | ExposureMask | VisibilityChangeMask | movementMask, &Event); /* * Don't discard exposure events before release * or window borders and/or their titles in the * virtual desktop won't get redrawn - djhjr */ /* discard any extra motion events before a release */ if (Event.type == MotionNotify) { /* was 'ButtonMotionMask' - djhjr - 10/11/01 */ while (XCheckMaskEvent(dpy, releaseEvent | movementMask, &Event)) { if (Event.type == releaseEvent) break; } } if (Event.type == releaseEvent) { EndMoveWindowOnDesktop(); break; } if (!DispatchEvent()) continue; if (Event.type != MotionNotify) continue; #ifndef NO_SOUND_SUPPORT if (did_playsound == FALSE) { PlaySound(func); did_playsound = TRUE; } #endif DoMoveWindowOnDesktop(Event.xmotion.x, Event.xmotion.y); } /* discard queued enter and leave events */ while (XCheckMaskEvent(dpy, EnterWindowMask | LeaveWindowMask, &Event)) ; /* will clear the XGrabPointer() in events.c:HandleButtonPress() */ ButtonPressed = -1; break; } case F_SNAP: SnapRealScreen(); /* and update the data structures */ SetRealScreen(Scr->VirtualDesktopX, Scr->VirtualDesktopY); break; case F_SNAPREALSCREEN: Scr->snapRealScreen = ! Scr->snapRealScreen; break; /* djhjr - 12/14/98 */ case F_STATICICONPOSITIONS: Scr->StaticIconPositions = ! Scr->StaticIconPositions; break; /* djhjr - 12/14/98 */ case F_STRICTICONMGR: { TwmWindow *t; Scr->StrictIconManager = ! Scr->StrictIconManager; if (Scr->StrictIconManager) { for (t = Scr->TwmRoot.next; t != NULL; t = t->next) if (!t->icon) RemoveIconManager(t); } else { for (t = Scr->TwmRoot.next; t != NULL; t = t->next) if (!t->list) AddIconManager(t); } break; } case F_SETREALSCREEN: { int newx = Scr->VirtualDesktopX; int newy = Scr->VirtualDesktopY; /* parse the geometry */ JunkMask = XParseGeometry (action, &JunkX, &JunkY, &JunkWidth, &JunkHeight); if (JunkMask & XValue) newx = JunkX; if (JunkMask & YValue) newy = JunkY; if (newx < 0) newx = Scr->VirtualDesktopWidth + newx; if (newy < 0) newy = Scr->VirtualDesktopHeight + newy; SetRealScreen(newx, newy); break; } case F_HIDEDESKTOP: if (Scr->Virtual) XUnmapWindow(dpy, Scr->VirtualDesktopDisplayTwin->frame); break; case F_SHOWDESKTOP: if (Scr->Virtual) { XMapWindow(dpy, Scr->VirtualDesktopDisplayTwin->frame); /* djhjr - 9/14/96 */ if (Scr->VirtualDesktopDisplayTwin->icon) DeIconify(Scr->VirtualDesktopDisplayTwin); } break; case F_ENTERDOOR: { TwmDoor *d; if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *) &d) != XCNOENT) door_enter(tmp_win->w, d); break; } case F_DELETEDOOR: { /*marcel@duteca.et.tudelft.nl*/ TwmDoor *d; if (DeferExecution(context, func, Scr->DestroyCursor)) return TRUE; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT /* flag for the handler */ if (PlaySound(func)) destroySoundFromFunction = TRUE; #endif if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *) &d) != XCNOENT) { /* for some reason, we don't get the button up event - djhjr - 5/13/99 */ ButtonPressed = -1; door_delete(tmp_win->w, d); } break; } case F_NEWDOOR: PopDownMenu(); door_new(); break; /* djhjr - 4/20/98 */ case F_NAMEDOOR: { TwmDoor *d; if (XFindContext(dpy, tmp_win->w, DoorContext, (caddr_t *) &d) != XCNOENT) door_paste_name(tmp_win->w, d); break; } case F_QUIT: /* djhjr - 9/14/96 - it's in Done()... SetRealScreen(0,0); */ /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT if (PlaySound(func)) { /* allow time to emit */ if (Scr->PauseOnQuit) sleep(Scr->PauseOnQuit); } else PlaySoundDone(); #endif Done(); break; case F_VIRTUALGEOMETRIES: Scr->GeometriesAreVirtual = ! Scr->GeometriesAreVirtual; break; /* submitted by Ugen Antsilevitch - 5/28/00 */ case F_WARPVISIBLE: Scr->WarpVisible = ! Scr->WarpVisible; break; /* djhjr - 5/30/00 */ case F_WARPSNUG: Scr->WarpSnug = ! Scr->WarpSnug; break; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT case F_SOUNDS: ToggleSounds(); break; /* djhjr - 11/15/02 */ case F_PLAYSOUND: PlaySoundAdhoc(action); break; #endif } if (ButtonPressed == -1) XUngrabPointer(dpy, CurrentTime); return do_next_action; } /*********************************************************************** * * Procedure: * DeferExecution - defer the execution of a function to the * next button press if the context is C_ROOT * * Inputs: * context - the context in which the mouse button was pressed * func - the function to defer * cursor - the cursor to display while waiting * *********************************************************************** */ int DeferExecution(context, func, cursor) int context, func; Cursor cursor; { if (context == C_ROOT) { LastCursor = cursor; XGrabPointer(dpy, Scr->Root, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, Scr->Root, cursor, CurrentTime); RootFunction = func; Action = actionHack; /* Submitted by Michel Eyckmans */ return (TRUE); } return (FALSE); } /*********************************************************************** * * Procedure: * ReGrab - regrab the pointer with the LastCursor; * *********************************************************************** */ void ReGrab() { XGrabPointer(dpy, Scr->Root, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync, Scr->Root, LastCursor, CurrentTime); } /*********************************************************************** * * Procedure: * NeedToDefer - checks each function in the list to see if it * is one that needs to be defered. * * Inputs: * root - the menu root to check * *********************************************************************** */ /* was of type 'int' - Submitted by Michel Eyckmans */ Cursor NeedToDefer(root) MenuRoot *root; { MenuItem *mitem; for (mitem = root->first; mitem != NULL; mitem = mitem->next) { switch (mitem->func) { case F_RESIZE: return Scr->ResizeCursor; /* Submitted by Michel Eyckmans */ case F_MOVE: case F_FORCEMOVE: return Scr->MoveCursor; /* Submitted by Michel Eyckmans */ /* these next four - Submitted by Michel Eyckmans */ case F_DELETE: case F_DELETEDOOR: case F_DESTROY: return Scr->DestroyCursor; case F_IDENTIFY: /* was with 'F_RESIZE' - Submitted by Michel Eyckmans */ case F_DEICONIFY: case F_ICONIFY: case F_RAISELOWER: case F_RAISE: case F_LOWER: case F_FOCUS: case F_WINREFRESH: case F_ZOOM: case F_FULLZOOM: case F_HORIZOOM: case F_RIGHTZOOM: case F_LEFTZOOM: case F_TOPZOOM: case F_BOTTOMZOOM: case F_AUTORAISE: case F_NAIL: case F_SNUGWINDOW: return Scr->SelectCursor; } } return None; } void Execute(s) char *s; { static char buf[256]; char *ds = DisplayString (dpy); char *colon, *dot1; char oldDisplay[256]; char *doisplay; int restorevar = 0; char *append_this = " &"; char *es = (char *)malloc(strlen(s)+strlen(append_this)+1); sprintf(es,s); /* a new copy of s, with extra space incase -- DSE */ if (Scr->EnhancedExecResources) /* DSE */ { /* chop all space characters from the end of the string */ while ( isspace ( es[strlen(es)-1] ) ) { es[strlen(es)-1] = '\0'; } switch ( es[strlen(es)-1] ) /* last character */ { case ';': es[strlen(es)-1] = '\0'; /* remove the semicolon */ break; case '&': /* already there so do nothing */ break; default: strcat(es,append_this); /* don't block the window manager */ break; } } oldDisplay[0] = '\0'; doisplay=getenv("DISPLAY"); if (doisplay) strcpy (oldDisplay, doisplay); /* * Build a display string using the current screen number, so that * X programs which get fired up from a menu come up on the screen * that they were invoked from, unless specifically overridden on * their command line. */ colon = rindex (ds, ':'); if (colon) { /* if host[:]:dpy */ strcpy (buf, "DISPLAY="); strcat (buf, ds); colon = buf + 8 + (colon - ds); /* use version in buf */ dot1 = index (colon, '.'); /* first period after colon */ if (!dot1) dot1 = colon + strlen (colon); /* if not there, append */ (void) sprintf (dot1, ".%d", Scr->screen); putenv (buf); restorevar = 1; } (void) system (es); /* DSE */ free (es); /* DSE */ if (restorevar) { /* why bother? */ (void) sprintf (buf, "DISPLAY=%s", oldDisplay); putenv (buf); } } /*********************************************************************** * * Procedure: * FocusOnRoot - put input focus on the root window * *********************************************************************** */ void FocusOnRoot() { SetFocus ((TwmWindow *) NULL, LastTimestamp()); if (Scr->Focus != NULL) { SetBorder (Scr->Focus, False); /* djhjr - 4/25/96 if (Scr->Focus->hilite_w) XUnmapWindow (dpy, Scr->Focus->hilite_w); */ PaintTitleHighlight(Scr->Focus, off); } InstallWindowColormaps(0, &Scr->TwmRoot); Scr->Focus = NULL; Scr->FocusRoot = TRUE; } void DeIconify(tmp_win) TwmWindow *tmp_win; { TwmWindow *t; /* * De-iconify the main window first */ /* re-vamped the zoom stuff - djhjr - 10/11/01 */ if (Scr->DoZoom && Scr->ZoomCount > 0) { IconMgr *ipf = NULL; Window wt = None, wf = None; if (tmp_win->icon) { if (tmp_win->icon_on) { wf = tmp_win->icon_w; wt = tmp_win->frame; } else if (tmp_win->list) /* djhjr - 10/11/01 */ { wf = tmp_win->list->w; wt = tmp_win->frame; ipf = tmp_win->list->iconmgr; } else if (tmp_win->group != None) { for (t = Scr->TwmRoot.next; t != NULL; t = t->next) if (tmp_win->group == t->w) { if (t->icon_on) wf = t->icon_w; else if (t->list) /* djhjr - 10/11/01 */ { wf = t->list->w; ipf = t->list->iconmgr; } wt = tmp_win->frame; break; } } } /* added Zoom()s args to iconmgrs - djhjr - 10/11/01 */ if (Scr->ZoomZoom || (wf != None && wt != None)) Zoom(wf, ipf, wt, NULL); /* RFBZOOM */ } XMapWindow(dpy, tmp_win->w); tmp_win->mapped = TRUE; if (Scr->NoRaiseDeicon) XMapWindow(dpy, tmp_win->frame); else { XMapRaised(dpy, tmp_win->frame); XRaiseWindow(dpy, tmp_win->VirtualDesktopDisplayWindow); } SetMapStateProp(tmp_win, NormalState); if (tmp_win->icon_w) { XUnmapWindow(dpy, tmp_win->icon_w); IconDown (tmp_win); } tmp_win->icon = FALSE; tmp_win->icon_on = FALSE; if (tmp_win->list) XUnmapWindow(dpy, tmp_win->list->icon); /* * RemoveIconManager() done in events.c:HandleMapNotify() */ UpdateDesktop(tmp_win); /* * Now de-iconify transients */ for (t = Scr->TwmRoot.next; t != NULL; t = t->next) { if (t->transient && t->transientfor == tmp_win->w) { /* this 'if (...) else' (see also Iconify()) - djhjr - 6/22/99 */ if (Scr->DontDeiconifyTransients && t->icon_w && t->icon == TRUE && t->icon_on == FALSE) { IconUp(t); XMapRaised(dpy, t->icon_w); t->icon_on = TRUE; } else { /* added Zoom()s args to iconmgrs - djhjr - 10/11/01 */ if (t->icon_on) Zoom(t->icon_w, NULL, t->frame, NULL); else Zoom(tmp_win->icon_w, NULL, t->frame, NULL); XMapWindow(dpy, t->w); t->mapped = TRUE; if (Scr->NoRaiseDeicon) XMapWindow(dpy, t->frame); else { XMapRaised(dpy, t->frame); XRaiseWindow(dpy, t->VirtualDesktopDisplayWindow); } SetMapStateProp(t, NormalState); if (t->icon_w) { XUnmapWindow(dpy, t->icon_w); IconDown (t); } t->icon = FALSE; t->icon_on = FALSE; if (t->list) XUnmapWindow(dpy, t->list->icon); /* * RemoveIconManager() done in events.c:HandleMapNotify() */ UpdateDesktop(t); } } } RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* * added '&& Scr->WarpWindows'. * see the kludge in ExecuteFunction(F_ICONIFY, ...). * djhjr - 1/24/98 */ if (((Scr->WarpCursor || LookInList(Scr->WarpCursorL, tmp_win->full_name, &tmp_win->class)) && tmp_win->icon) && Scr->WarpWindows) WarpToWindow (tmp_win); XSync (dpy, 0); } void Iconify(tmp_win, def_x, def_y) TwmWindow *tmp_win; int def_x, def_y; { TwmWindow *t; int iconify; XWindowAttributes winattrs; unsigned long eventMask; /* djhjr - 6/22/99 */ short fake_icon; iconify = ((!tmp_win->iconify_by_unmapping) || tmp_win->transient); if (iconify) { if (tmp_win->icon_w == None) CreateIconWindow(tmp_win, def_x, def_y); else IconUp(tmp_win); XMapRaised(dpy, tmp_win->icon_w); RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); } XGetWindowAttributes(dpy, tmp_win->w, &winattrs); eventMask = winattrs.your_event_mask; /* * Iconify transients first */ for (t = Scr->TwmRoot.next; t != NULL; t = t->next) { if (t->transient && t->transientfor == tmp_win->w) { /* RemoveFromDesktop(t); Stig */ /* * Prevent the receipt of an UnmapNotify, since that would * cause a transition to the Withdrawn state. */ t->mapped = FALSE; XSelectInput(dpy, t->w, eventMask & ~StructureNotifyMask); XUnmapWindow(dpy, t->w); XSelectInput(dpy, t->w, eventMask); XUnmapWindow(dpy, t->frame); /* moved to make zooms more aesthetically pleasing -- DSE */ if (iconify) { /* added Zoom()s args to iconmgrs - djhjr - 10/11/01 */ if (t->icon_on) Zoom(t->icon_w, NULL, tmp_win->icon_w, NULL); else Zoom(t->frame, NULL, tmp_win->icon_w, NULL); } if (t->icon_w) XUnmapWindow(dpy, t->icon_w); SetMapStateProp(t, IconicState); SetBorder (t, False); if (t == Scr->Focus) { SetFocus ((TwmWindow *) NULL, LastTimestamp()); Scr->Focus = NULL; Scr->FocusRoot = TRUE; } /* * let current status ride, but "fake out" UpdateDesktop() * (see also DeIconify()) - djhjr - 6/22/99 */ fake_icon = t->icon; t->icon = TRUE; t->icon_on = FALSE; /* djhjr - 10/2/01 */ if (Scr->StrictIconManager) if (!t->list) AddIconManager(t); if (t->list) XMapWindow(dpy, t->list->icon); UpdateDesktop(t); /* restore icon status - djhjr - 6/22/99 */ t->icon = fake_icon; } } /* * Now iconify the main window */ /* if (iconify) RFBZOOM*/ /* RemoveFromDesktop(tmp_win); Stig */ /* * Prevent the receipt of an UnmapNotify, since that would * cause a transition to the Withdrawn state. */ tmp_win->mapped = FALSE; XSelectInput(dpy, tmp_win->w, eventMask & ~StructureNotifyMask); XUnmapWindow(dpy, tmp_win->w); XSelectInput(dpy, tmp_win->w, eventMask); XUnmapWindow(dpy, tmp_win->frame); SetMapStateProp(tmp_win, IconicState); SetBorder (tmp_win, False); if (tmp_win == Scr->Focus) { SetFocus ((TwmWindow *) NULL, LastTimestamp()); Scr->Focus = NULL; Scr->FocusRoot = TRUE; } tmp_win->icon = TRUE; if (iconify) tmp_win->icon_on = TRUE; else tmp_win->icon_on = FALSE; /* djhjr - 10/2/01 */ if (Scr->StrictIconManager) if (!tmp_win->list) AddIconManager(tmp_win); /* moved to make zooms more aesthetically pleasing -- DSE */ /* moved again to ensure an icon manager entry exists - djhjr - 10/11/01 */ /* added Zoom()s args to iconmgrs - djhjr - 10/11/01 */ if (iconify) Zoom(tmp_win->frame, NULL, tmp_win->icon_w, NULL); else if (tmp_win->list) /* djhjr - 10/11/01 */ Zoom(tmp_win->frame, NULL, tmp_win->list->w, tmp_win->list->iconmgr); if (tmp_win->list) XMapWindow(dpy, tmp_win->list->icon); UpdateDesktop(tmp_win); XSync (dpy, 0); } static void Identify (t) TwmWindow *t; { int i, n, twidth, width, height; int x, y; unsigned int wwidth, wheight, bw, depth; Window junk; int px, py, dummy; unsigned udummy; /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT PlaySound(F_IDENTIFY); #endif n = 0; (void) sprintf(Info[n++], "%s", Version); Info[n++][0] = '\0'; if (t) { XGetGeometry (dpy, t->w, &JunkRoot, &JunkX, &JunkY, &wwidth, &wheight, &bw, &depth); (void) XTranslateCoordinates (dpy, t->w, Scr->Root, 0, 0, &x, &y, &junk); /* looks bad with variable fonts... djhjr - 5/10/96 (void) sprintf(Info[n++], "Name = \"%s\"", t->full_name); (void) sprintf(Info[n++], "Class.res_name = \"%s\"", t->class.res_name); (void) sprintf(Info[n++], "Class.res_class = \"%s\"", t->class.res_class); Info[n++][0] = '\0'; (void) sprintf(Info[n++], "Geometry/root = %dx%d+%d+%d", wwidth, wheight, x, y); (void) sprintf(Info[n++], "Border width = %d", bw); (void) sprintf(Info[n++], "Depth = %d", depth); */ (void) sprintf(Info[n++], "Name: \"%s\"", t->full_name); (void) sprintf(Info[n++], "Class.res_name: \"%s\"", t->class.res_name); (void) sprintf(Info[n++], "Class.res_class: \"%s\"", t->class.res_class); Info[n++][0] = '\0'; (void) sprintf(Info[n++], "Geometry/root: %dx%d+%d+%d", wwidth, wheight, x, y); (void) sprintf(Info[n++], "Border width: %d", bw); (void) sprintf(Info[n++], "Depth: %d", depth); Info[n++][0] = '\0'; } /* djhjr - 9/19/96 */ #ifndef NO_BUILD_INFO else { char is_m4, is_xpm; char is_rplay; /* djhjr - 6/22/01 */ char is_regex; /* djhjr - 10/20/01 */ char is_i18n; /* djhjr - 10/20/01 */ /* djhjr - 6/22/99 */ #ifdef WE_REALLY_DO_WANT_TO_SEE_THIS (void) sprintf(Info[n++], "X Server: %s Version %d.%d Release %d", ServerVendor(dpy), ProtocolVersion(dpy), ProtocolRevision(dpy), VendorRelease(dpy)); #endif /* * Was a 'do ... while()' that accessed unallocated memory. * This and the change to Imakefile submitted by Takeharu Kato */ i = 0; while (lastmake[i][0] != '\0') (void) sprintf(Info[n++], "%s", lastmake[i++]); /* djhjr - 1/31/99 */ #ifdef NO_M4_SUPPORT is_m4 = '-'; #else is_m4 = '+'; #endif #ifdef NO_XPM_SUPPORT is_xpm = '-'; #else is_xpm = '+'; #endif /* djhjr - 6/22/01 */ #ifdef NO_SOUND_SUPPORT is_rplay = '-'; #else is_rplay = '+'; #endif /* djhjr - 6/22/01 */ #ifdef NO_REGEX_SUPPORT is_regex = '-'; #else is_regex = '+'; #endif /* djhjr - 9/14/03 */ #ifdef NO_I18N_SUPPORT is_i18n = '-'; #else is_i18n = '+'; #endif (void) sprintf(Info[n++], "Options: %ci18n %cm4 %cregex %crplay %cxpm", is_i18n, is_m4, is_regex, is_rplay, is_xpm); Info[n++][0] = '\0'; } #endif (void) sprintf(Info[n++], "Click to dismiss..."); /* figure out the width and height of the info window */ /* djhjr - 4/29/98 height = (n * (Scr->InfoFont.height+2)) + 10; * some padding * */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ i = (Scr->InfoBevelWidth > 0) ? Scr->InfoBevelWidth + 8 : 10; height = (n * (Scr->InfoFont.height+2)) + i; /* some padding */ width = 1; for (i = 0; i < n; i++) { /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT twidth = MyFont_TextWidth(&Scr->InfoFont, #else twidth = XTextWidth(Scr->InfoFont.font, #endif Info[i], strlen(Info[i])); if (twidth > width) width = twidth; } if (InfoLines) XUnmapWindow(dpy, Scr->InfoWindow); /* djhjr - 4/29/98 width += 20; * some padding * */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ i = (Scr->InfoBevelWidth > 0) ? Scr->InfoBevelWidth + 18 : 20; width += i; /* some padding */ if (XQueryPointer (dpy, Scr->Root, &JunkRoot, &JunkChild, &px, &py, &dummy, &dummy, &udummy)) { px -= (width / 2); py -= (height / 3); /* added this 'if ()' - djhjr - 4/29/98 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->InfoBevelWidth > 0) { if (px + width + 2 * Scr->InfoBevelWidth >= Scr->MyDisplayWidth) px = Scr->MyDisplayWidth - width - 2 * Scr->InfoBevelWidth; if (py + height + 2 * Scr->InfoBevelWidth >= Scr->MyDisplayHeight) py = Scr->MyDisplayHeight - height - 2 * Scr->InfoBevelWidth; } else { if (px + width + BW2 >= Scr->MyDisplayWidth) px = Scr->MyDisplayWidth - width - BW2; if (py + height + BW2 >= Scr->MyDisplayHeight) py = Scr->MyDisplayHeight - height - BW2; } if (px < 0) px = 0; if (py < 0) py = 0; } else { px = py = 0; } XMoveResizeWindow(dpy, Scr->InfoWindow, px, py, width, height); /* done in HandleExpose() in events.c - djhjr - 4/30/98 */ #ifdef NEVER /* djhjr - 5/9/96 */ if (Scr->use3Dborders > 0) { XGetGeometry (dpy, Scr->InfoWindow, &JunkRoot, &JunkX, &JunkY, &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth); Draw3DBorder(Scr->InfoWindow, 0, 0, JunkWidth, JunkHeight, /* djhjr - 4/29/98 BW, Scr->DefaultC, off, False, False); */ Scr->InfoBevelWidth, Scr->DefaultC, off, False, False); } #endif XMapRaised(dpy, Scr->InfoWindow); InfoLines = n; } void SetMapStateProp(tmp_win, state) TwmWindow *tmp_win; int state; { unsigned long data[2]; /* "suggested" by ICCCM version 1 */ data[0] = (unsigned long) state; data[1] = (unsigned long) (tmp_win->iconify_by_unmapping ? None : tmp_win->icon_w); XChangeProperty (dpy, tmp_win->w, _XA_WM_STATE, _XA_WM_STATE, 32, PropModeReplace, (unsigned char *) data, 2); } Bool GetWMState (w, statep, iwp) Window w; int *statep; Window *iwp; { Atom actual_type; int actual_format; unsigned long nitems, bytesafter; unsigned long *datap = NULL; Bool retval = False; /* used to test for '!datap' - djhjr - 1/10/98 */ if (XGetWindowProperty (dpy, w, _XA_WM_STATE, 0L, 2L, False, _XA_WM_STATE, &actual_type, &actual_format, &nitems, &bytesafter, (unsigned char **) &datap) != Success || actual_type == None) return False; if (nitems <= 2) { /* "suggested" by ICCCM version 1 */ *statep = (int) datap[0]; *iwp = (Window) datap[1]; retval = True; } XFree ((char *) datap); return retval; } /* * BumpWindowColormap - rotate our internal copy of WM_COLORMAP_WINDOWS */ void BumpWindowColormap (tmp, inc) TwmWindow *tmp; int inc; { int i, j, previously_installed; ColormapWindow **cwins; if (!tmp) return; if (inc && tmp->cmaps.number_cwins > 0) { cwins = (ColormapWindow **) malloc(sizeof(ColormapWindow *)* tmp->cmaps.number_cwins); if (cwins) { if ((previously_installed = (Scr->cmapInfo.cmaps == &tmp->cmaps) && tmp->cmaps.number_cwins)) { for (i = tmp->cmaps.number_cwins; i-- > 0; ) tmp->cmaps.cwins[i]->colormap->state = 0; } for (i = 0; i < tmp->cmaps.number_cwins; i++) { j = i - inc; if (j >= tmp->cmaps.number_cwins) j -= tmp->cmaps.number_cwins; else if (j < 0) j += tmp->cmaps.number_cwins; cwins[j] = tmp->cmaps.cwins[i]; } free((char *) tmp->cmaps.cwins); tmp->cmaps.cwins = cwins; if (tmp->cmaps.number_cwins > 1) memset( tmp->cmaps.scoreboard, 0, ColormapsScoreboardLength(&tmp->cmaps)); if (previously_installed) InstallWindowColormaps(PropertyNotify, (TwmWindow *) NULL); } } else FetchWmColormapWindows (tmp); } void HideIconManager(tmp_win) TwmWindow *tmp_win; { /* added this 'if (...) else ...' - djhjr - 9/21/99 */ if (tmp_win == NULL) { name_list *list; HideIconMgr(&Scr->iconmgr); /* * New code in list.c necessitates 'next_entry()' and * 'contents_of_entry()' - djhjr - 10/20/01 */ for (list = Scr->IconMgrs; list != NULL; list = next_entry(list)) HideIconMgr((IconMgr *)contents_of_entry(list)); } else { IconMgr *ip; if ((ip = (IconMgr *)LookInList(Scr->IconMgrs, tmp_win->full_name, &tmp_win->class)) == NULL) ip = &Scr->iconmgr; HideIconMgr(ip); } } /* djhjr - 9/21/99 */ void HideIconMgr(ip) IconMgr *ip; { /* djhjr - 6/10/98 */ if (ip->count == 0) return; SetMapStateProp (ip->twm_win, WithdrawnState); XUnmapWindow(dpy, ip->twm_win->frame); if (ip->twm_win->icon_w) XUnmapWindow (dpy, ip->twm_win->icon_w); ip->twm_win->mapped = FALSE; ip->twm_win->icon = TRUE; } /* djhjr - 9/21/99 */ void ShowIconMgr(ip) IconMgr *ip; { /* added the second condition - djhjr - 6/10/98 */ if (Scr->NoIconManagers || ip->count == 0) return; DeIconify(ip->twm_win); XRaiseWindow(dpy, ip->twm_win->frame); XRaiseWindow(dpy, ip->twm_win->VirtualDesktopDisplayWindow); } void SetBorder (tmp, onoroff) TwmWindow *tmp; Bool onoroff; { if (tmp->highlight) { /* djhjr - 4/22/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->BorderBevelWidth > 0) PaintBorders (tmp, onoroff); else { if (onoroff) { /* djhjr - 4/24/96 XSetWindowBorder (dpy, tmp->frame, tmp->border); */ /* djhjr - 11/17/97 XSetWindowBorder (dpy, tmp->frame, tmp->border_tile.back); */ XSetWindowBorder (dpy, tmp->frame, tmp->border.back); if (tmp->title_w) /* djhjr - 4/24/96 XSetWindowBorder (dpy, tmp->title_w, tmp->border); */ /* djhjr - 11/17/97 XSetWindowBorder (dpy, tmp->title_w, tmp->border_tile.back); */ XSetWindowBorder (dpy, tmp->title_w, tmp->border.back); } else { XSetWindowBorderPixmap (dpy, tmp->frame, tmp->gray); if (tmp->title_w) XSetWindowBorderPixmap (dpy, tmp->title_w, tmp->gray); } } /* djhjr - 11/17/97 */ /* rem'd out test for button color - djhjr - 9/15/99 */ if (/*Scr->ButtonColorIsFrame && */tmp->titlebuttons) { int i, nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; TBWindow *tbw; /* collapsed two functions - djhjr - 8/10/98 */ for (i = 0, tbw = tmp->titlebuttons; i < nb; i++, tbw++) PaintTitleButton(tmp, tbw, (onoroff) ? 2 : 1); } } } void DestroyMenu (menu) MenuRoot *menu; { MenuItem *item; if (menu->w) { XDeleteContext (dpy, menu->w, MenuContext); XDeleteContext (dpy, menu->w, ScreenContext); if (Scr->Shadow) XDestroyWindow (dpy, menu->shadow); XDestroyWindow(dpy, menu->w); } for (item = menu->first; item; ) { MenuItem *tmp = item; item = item->next; free ((char *) tmp); } } /* * warping routines */ /* for moves and resizes from center - djhjr - 10/4/02 */ void WarpScreenToWindow(t) TwmWindow *t; { int warpwin = Scr->WarpWindows; int warpsnug = Scr->WarpSnug; Scr->WarpWindows = Scr->WarpSnug = FALSE; WarpToWindow(t); Scr->WarpWindows = warpwin; Scr->WarpSnug = warpsnug; /* * This is an attempt to have windows redraw themselves, but * it doesn't always work (non-raising windows in particular). */ XSync(dpy, 0); } /* was in-lined in WarpToWindow() - djhjr - 5/30/00 */ void WarpWindowOrScreen(t) TwmWindow *t; { /* * we are either moving the window onto the screen, or the screen to the * window, the distances remain the same */ if ((t->frame_x < Scr->MyDisplayWidth) && (t->frame_y < Scr->MyDisplayHeight) && (t->frame_x + t->frame_width >= 0) && (t->frame_y + t->frame_height >= 0)) { /* * window is visible; you can simply * snug it if WarpSnug or WarpWindows is set -- DSE */ if (Scr->WarpSnug || Scr->WarpWindows) { int right,left,up,down,dx,dy; /* * Adjustment for border widths submitted by Steve Ratcliffe * Note: Do not include the 3D border width! */ right = t->frame_x; left = t->frame_x + t->frame_width + 2 * t->frame_bw; up = t->frame_y; down = t->frame_y + t->frame_height + 2 * t->frame_bw; dx = 0; if (left-right < Scr->MyDisplayWidth) { if (right<0) dx = right; else if (left>Scr->MyDisplayWidth) dx = left - Scr->MyDisplayWidth; } dy = 0; if (down-up < Scr->MyDisplayHeight) { if (up<0) dy = up; else if (down>Scr->MyDisplayHeight) dy = down - Scr->MyDisplayHeight; } if (dx!=0 || dy!=0) { /* added 'Scr->WarpSnug ||' - djhjr - 5/30/00 */ if (Scr->WarpSnug || Scr->WarpWindows) { /* move the window */ VirtualMoveWindow(t, t->virtual_frame_x - dx, t->virtual_frame_y - dy); } else { /* move the screen */ PanRealScreen(dx,dy,NULL,NULL); } } } } else { /* * Window is invisible; we need to move it or the screen. */ int xdiff, ydiff; xdiff = ((Scr->MyDisplayWidth - t->frame_width) / 2) - t->frame_x; ydiff = ((Scr->MyDisplayHeight - t->frame_height) / 2) - t->frame_y; /* added 'Scr->WarpSnug ||' - djhjr - 5/30/00 */ if (Scr->WarpSnug || Scr->WarpWindows) { /* move the window */ VirtualMoveWindow(t, t->virtual_frame_x + xdiff, t->virtual_frame_y + ydiff); } else { /* move the screen */ PanRealScreen(-xdiff, -ydiff,NULL,NULL); /* DSE */ } } if (t->auto_raise || !Scr->NoRaiseWarp) AutoRaiseWindow (t); } /* for icon manager management - djhjr - 5/30/00 */ void WarpInIconMgr(w, t) WList *w; TwmWindow *t; { int x, y, pan_margin = 0; /* djhjr - 9/9/02 */ int bw = t->frame_bw3D + t->frame_bw; RaiseStickyAbove(); RaiseAutoPan(); WarpWindowOrScreen(t); /* was 'Scr->BorderWidth' - djhjr - 9/9/02 */ x = w->x + bw + EDGE_OFFSET + 5; x += (Scr->IconMgrBevelWidth > 0) ? Scr->IconMgrBevelWidth : bw; y = w->y + bw + w->height / 2; y += (Scr->IconMgrBevelWidth > 0) ? Scr->IconMgrBevelWidth : bw; y += w->iconmgr->twm_win->title_height; /* * adjust the pointer for partially visible windows and the * AutoPan border width */ if (Scr->AutoPanX) pan_margin = Scr->AutoPanBorderWidth; if (x + t->frame_x >= Scr->MyDisplayWidth - pan_margin) x = Scr->MyDisplayWidth - t->frame_x - pan_margin - 2; if (x + t->frame_x <= pan_margin) x = -t->frame_x + pan_margin + 2; if (y + t->frame_y >= Scr->MyDisplayHeight - pan_margin) y = Scr->MyDisplayHeight - t->frame_y - pan_margin - 2; if (y + t->frame_y <= pan_margin) y = -t->frame_y + pan_margin + 2; XWarpPointer(dpy, None, t->frame, 0, 0, 0, 0, x, y); /* DSE */ } /* * substantially re-written and added passing 'next' to next_by_class() * * djhjr - 5/13/98 6/6/98 6/15/98 */ #ifdef ORIGINAL_WARPCLASS void WarpClass (next, t, class) int next; TwmWindow *t; char *class; { int len = strlen(class); if (!strncmp(class, t->class.res_class, len)) t = next_by_class(t, class); else t = next_by_class((TwmWindow *)NULL, class); if (t) { if (Scr->WarpUnmapped || t->mapped) { if (!t->mapped) DeIconify (t); if (!Scr->NoRaiseWarp) { XRaiseWindow (dpy, t->frame); } XRaiseWindow (dpy, t->VirtualDesktopDisplayWindow); RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); WarpToWindow (t); } } } #else /* ORIGINAL_WARPCLASS */ void WarpClass(next, t, class) int next; TwmWindow *t; char *class; { TwmWindow *tt; XClassHint ch; int i; /* * if an empty class string * if a TwmWindow * class = the TwmWindow's class * else if a window with focus * if it's classed * class = the focused window's class * else * return * if still an empty class string * class = "VTWM" */ if (!strlen(class)) { if (t) class = t->class.res_class; else if (Scr->Focus) { i = XGetClassHint(dpy, Scr->Focus->w, &ch); if (i && !strncmp(class, ch.res_class, strlen(class))) class = ch.res_class; } /* djhjr - 6/21/00 */ else { DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ return; } } if (!strlen(class) || !strncmp(class, "VTWM", 4)) class = "VTWM"; /* djhjr - 8/3/98 if (!(tt = next_by_class(next, t, class))) if (t) tt = t; */ /* djhjr - 5/28/00 */ while (1) { tt = NULL; do { if ((tt = next_by_class(next, t, class))) { /* multiple icon managers: gotta test for those without entries */ if (tt->iconmgr && tt->iconmgrp->count == 0) { t = tt; tt = NULL; } } else if (t) tt = t; else break; } while (!tt); /* added the second argument - djhjr - 5/28/00 */ if (tt && warp_if_warpunmapped(tt, (next) ? F_WARPCLASSNEXT: F_WARPCLASSPREV)) { RaiseStickyAbove(); /* DSE */ RaiseAutoPan(); /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound((next) ? F_WARPCLASSNEXT: F_WARPCLASSPREV); #endif WarpToWindow(tt); /* djhjr - 5/28/00 */ break; } /* djhjr - 5/28/00 else XBell(dpy, 0); */ t = tt; } /* while (1) */ } #endif /* ORIGINAL_WARPCLASS */ /* moved from add_window.c - djhjr - 10/27/02 */ void AddWindowToRing(tmp_win) TwmWindow *tmp_win; { if (Scr->Ring) { /* link window in after Scr->Ring */ tmp_win->ring.prev = Scr->Ring; tmp_win->ring.next = Scr->Ring->ring.next; /* Scr->Ring's next's prev points to this */ /*if (Scr->Ring->ring.next->ring.prev)*/ Scr->Ring->ring.next->ring.prev = tmp_win; /* Scr->Ring's next points to this */ Scr->Ring->ring.next = tmp_win; } else tmp_win->ring.next = tmp_win->ring.prev = Scr->Ring = tmp_win; } /* moved from events.c - djhjr - 10/27/02 */ void RemoveWindowFromRing(tmp_win) TwmWindow *tmp_win; { /* unlink window */ if (tmp_win->ring.prev) tmp_win->ring.prev->ring.next = tmp_win->ring.next; if (tmp_win->ring.next) tmp_win->ring.next->ring.prev = tmp_win->ring.prev; /* if window was only thing in ring, null out ring */ if (Scr->Ring == tmp_win) Scr->Ring = (tmp_win->ring.next != tmp_win) ? tmp_win->ring.next : (TwmWindow *)NULL; /* if window was ring leader, set to next (or null) */ if (!Scr->Ring || Scr->RingLeader == tmp_win) Scr->RingLeader = Scr->Ring; tmp_win->ring.next = tmp_win->ring.prev = NULL; } void WarpAlongRing (ev, forward) XButtonEvent *ev; Bool forward; { TwmWindow *r, *head; /* * Re-vamped much of this to properly handle icon managers, and * clean up dumb code I added some time back. * djhjr - 11/8/01 * Cleaned it up again. I musta been high. Twice. * djhjr - 10/27/02 */ if (!(head = (Scr->RingLeader) ? Scr->RingLeader : Scr->Ring)) { DoAudible(); return; } if (forward) r = head->ring.next; else r = head->ring.prev; while (r && r != head) { if (r->mapped || warp_if_warpunmapped(r, F_WARPRING)) break; r = (forward) ? r->ring.next : r->ring.prev; } if (r && r->mapped) { #ifdef ORIGINAL_WARPRINGCOORDINATES /* djhjr - 5/11/98 */ TwmWindow *p = Scr->RingLeader, *t; #endif /* done in WarpToWindow - djhjr - 10/27/02 Scr->RingLeader = r; */ RaiseStickyAbove(); RaiseAutoPan(); /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(F_WARPRING); #endif WarpToWindow (r); #ifdef ORIGINAL_WARPRINGCOORDINATES /* djhjr - 5/11/98 */ if (p && p->mapped && XFindContext (dpy, ev->window, TwmContext, (caddr_t *)&t) == XCSUCCESS && p == t) { p->ring.cursor_valid = True; p->ring.curs_x = ev->x_root - t->frame_x; p->ring.curs_y = ev->y_root - t->frame_y; if (p->ring.curs_x < -p->frame_bw || p->ring.curs_x >= p->frame_width + p->frame_bw || p->ring.curs_y < -p->frame_bw || p->ring.curs_y >= p->frame_height + p->frame_bw) { /* somehow out of window */ p->ring.curs_x = p->frame_width / 2; p->ring.curs_y = p->frame_height / 2; } } #endif } else DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ } void WarpToScreen (n, inc) int n, inc; { Window dumwin; int x, y, dumint; unsigned int dummask; ScreenInfo *newscr = NULL; while (!newscr) { /* wrap around */ if (n < 0) n = NumScreens - 1; else if (n >= NumScreens) n = 0; newscr = ScreenList[n]; if (!newscr) { /* make sure screen is managed */ if (inc) { /* walk around the list */ n += inc; continue; } fprintf (stderr, "%s: unable to warp to unmanaged screen %d\n", ProgramName, n); DoAudible(); /* was 'XBell()' - djhjr - 6/22/01 */ return; } } if (Scr->screen == n) return; /* already on that screen */ PreviousScreen = Scr->screen; XQueryPointer (dpy, Scr->Root, &dumwin, &dumwin, &x, &y, &dumint, &dumint, &dummask); /* djhjr - 6/3/03 */ #ifndef NO_SOUND_SUPPORT PlaySound(F_WARPTOSCREEN); #endif XWarpPointer (dpy, None, newscr->Root, 0, 0, 0, 0, x, y); return; } void WarpToWindow (t) TwmWindow *t; { int x, y; int pan_margin = 0; /* djhjr - 5/28/00 */ int bw = t->frame_bw3D + t->frame_bw; /* djhjr - 9/9/02 */ Window w = t->frame; /* djhjr - 5/30/00 */ WarpWindowOrScreen(t); /* djhjr - 5/30/00 */ #ifdef ORIGINAL_WARPRINGCOORDINATES /* djhjr - 5/11/98 */ if (t->ring.cursor_valid) { x = t->ring.curs_x; y = t->ring.curs_y; } else { x = t->frame_width / 2; y = t->frame_height / 2; } #else /* added this 'if (...) else' - djhjr - 6/10/98 */ if (t->iconmgr) { /* djhjr - 5/30/00 if (t->iconmgrp->count > 0) XWarpPointer(dpy, None, t->iconmgrp->first->icon, 0,0,0,0, EDGE_OFFSET, EDGE_OFFSET); return; */ if (t->iconmgrp->count > 0) { w = t->iconmgrp->twm_win->frame; /* was 'Scr->BorderWidth' - djhjr - 9/9/02 */ x = t->iconmgrp->x + bw + EDGE_OFFSET + 5; x += (Scr->IconMgrBevelWidth > 0) ? Scr->IconMgrBevelWidth : bw; y = t->iconmgrp->y + bw + t->iconmgrp->first->height / 2; y += (Scr->IconMgrBevelWidth > 0) ? Scr->IconMgrBevelWidth : bw; y += t->iconmgrp->twm_win->title_height; } } else if (!t->title_w) { /* added this 'if (...) else' - djhjr - 10/16/02 */ if (Scr->WarpCentered & WARPC_UNTITLED) { x = t->frame_width / 2; y = t->frame_height / 2; } else { x = t->frame_width / 2; y = (t->wShaped) ? bw : bw / 2; /* djhjr - 9/9/02 */ } } else { /* added this 'if (...) else' - djhjr - 10/16/02 */ if (Scr->WarpCentered & WARPC_TITLED) { x = t->frame_width / 2; y = t->frame_height / 2; } else { /* * Added 't->title_x + ' to handle titlebars that * aren't flush left. * Submitted by Steve Ratcliffe * was '(t->frame_bw3D + t->frame_bw)' - djhjr - 9/9/02 */ x = t->title_x + t->title_width / 2 + bw; y = t->title_height / 2 + bw; } } /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (!Scr->BorderBevelWidth > 0) y -= t->frame_bw; #endif /* * adjust the pointer for partially visible windows and the * AutoPan border width - djhjr - 5/30/00 * was '(t->frame_bw3D + t->frame_bw)' - djhjr - 9/9/02 */ if (Scr->AutoPanX) pan_margin = Scr->AutoPanBorderWidth; if (x + t->frame_x >= Scr->MyDisplayWidth - pan_margin) x = Scr->MyDisplayWidth - t->frame_x - pan_margin - 2; if (x + t->frame_x <= pan_margin) { if (t->title_w) x = t->title_width - (t->frame_x + t->title_width) + pan_margin + 2; else x = -t->frame_x + pan_margin + 2; } /* added test for centered warps - djhjr - 10/16/02 */ if (t->title_w && !(Scr->WarpCentered & WARPC_TITLED) && (x < t->title_x || x > t->title_x + t->title_width)) { y = t->title_height + bw / 2; } if (y + t->frame_y >= Scr->MyDisplayHeight - pan_margin) { y = Scr->MyDisplayHeight - t->frame_y - pan_margin - 2; /* move centered warp to titlebar - djhjr - 10/16/02 */ if (y < t->title_y + t->title_height) x = t->title_x + t->title_width / 2 + bw; } if (y + t->frame_y <= pan_margin) y = -t->frame_y + pan_margin + 2; /* was 't->frame' - djhjr - 5/30/00 */ XWarpPointer (dpy, None, w, 0, 0, 0, 0, x, y); /* djhjr - 10/27/02 */ if (t->ring.next) Scr->RingLeader = t; } /* * substantially re-written and added receiving and using 'next' * * djhjr - 5/13/98 5/19/98 6/6/98 6/15/98 */ #ifdef ORIGINAL_WARPCLASS TwmWindow * next_by_class (t, class) TwmWindow *t; char *class; { TwmWindow *tt; int len = strlen(class); if (t) for (tt = t->next; tt != NULL; tt = tt->next) if (!strncmp(class, tt->class.res_class, len)) return tt; for (tt = Scr->TwmRoot.next; tt != NULL; tt = tt->next) if (!strncmp(class, tt->class.res_class, len)) return tt; return NULL; } #else /* ORIGINAL_WARPCLASS */ static TwmWindow * next_by_class (next, t, class) int next; TwmWindow *t; char *class; { static TwmWindow *tp = NULL; TwmWindow *tt, *tl; int i, len = strlen(class); XClassHint ch; #ifdef DEBUG_WARPCLASS fprintf(stderr, "class=\"%s\", next=%d, %s t, ", class, next, (t) ? "have" : "no"); #endif /* forward or backward from current */ tl = (next) ? ((tp) ? tp->next : Scr->TwmRoot.next) : ((tp) ? tp->prev : Scr->TwmRoot.prev); for (tt = (next) ? ((t) ? t->next : tl) : ((t) ? t->prev : tl); tt != NULL; tt = (next) ? tt->next : tt->prev) if (Scr->WarpUnmapped || tt->mapped) { i = XGetClassHint(dpy, tt->w, &ch); if (i && !strncmp(class, ch.res_class, len)) { #ifdef DEBUG_WARPCLASS fprintf(stderr, "matched \"%s\" \"%s\"\n", tt->class.res_class, tt->class.res_name); #endif tp = tt; return tp; } else { #ifdef DEBUG_WARPCLASS fprintf(stderr, "(1) skipping \"%s\"\n", (i) ? tt->class.res_class : "NO RES_CLASS!"); #endif if (i == 0) break; } } /* no match, wrap and retry */ tp = tl = NULL; for (tt = Scr->TwmRoot.next; tt != NULL; tt = tt->next) if (Scr->WarpUnmapped || tt->mapped) { i = XGetClassHint(dpy, tt->w, &ch); if (i && !strncmp(class, ch.res_class, len)) { if (next) { #ifdef DEBUG_WARPCLASS fprintf(stderr, "next wrapped to \"%s\ \"%s\"\n", tt->class.res_class, tt->class.res_name); #endif tp = tt; return tp; } else tl = tt; } #ifdef DEBUG_WARPCLASS else fprintf(stderr, "(2) skipping \"%s\"\n", (i) ? tt->class.res_class : "NO RES_CLASS!"); #endif } #ifdef DEBUG_WARPCLASS i = 0; if (tl) i = XGetClassHint(dpy, tl->w, &ch); fprintf(stderr, "prev wrapped to \"%s\ \"%s\"\n", (i) ? ch.res_class : "NO RES_CLASS!", (i) ? ch.res_name : "NO RES_CLASS!"); #endif tp = tl; return tp; } #endif /* ORIGINAL_WARPCLASS */ /* this was inlined in many places, and even more now - djhjr - 5/13/98 */ /* added the second argument - djhjr - 5/28/00 */ static int warp_if_warpunmapped(w, func) TwmWindow *w; int func; { /* skip empty icon managers - 10/27/02 */ if (w && (w->iconmgr && w->iconmgrp->count == 0)) return (0); if (Scr->WarpUnmapped || w->mapped) { /* submitted by Ugen Antsilevitch - 5/28/00 */ /* if F_NOFUNCTION, override WarpVisible - djhjr - 5/28/00 */ if (func != F_NOFUNCTION && Scr->WarpVisible) { int pan_margin = 0; if (Scr->AutoPanX) pan_margin = Scr->AutoPanBorderWidth; if (w->frame_x >= Scr->MyDisplayWidth - pan_margin || w->frame_y >= Scr->MyDisplayHeight - pan_margin || w->frame_x + w->frame_width <= pan_margin || w->frame_y + w->frame_height <= pan_margin) return 0; } if (!w->mapped) DeIconify(w); if (!Scr->NoRaiseWarp) XRaiseWindow(dpy, w->frame); XRaiseWindow(dpy, w->VirtualDesktopDisplayWindow); return (1); } return (0); } /* djhjr - 9/17/02 */ static int do_squeezetitle(context, func, tmp_win, squeeze) int context, func; TwmWindow *tmp_win; SqueezeInfo *squeeze; { if (DeferExecution (context, func, Scr->SelectCursor)) return TRUE; /* honor "Don't Squeeze" resources - djhjr - 9/17/02 */ if (Scr->SqueezeTitle && !LookInList(Scr->DontSqueezeTitleL, tmp_win->full_name, &tmp_win->class)) { if ( tmp_win->title_height ) /* Not for untitled windows! */ { PopDownMenu(); /* djhjr - 9/17/02 */ #ifndef NO_SOUND_SUPPORT PlaySound(func); #endif tmp_win->squeeze_info = squeeze; SetFrameShape( tmp_win ); /* Can't go in SetFrameShape()... - djhjr - 4/1/00 */ if (Scr->WarpCursor || LookInList(Scr->WarpCursorL, tmp_win->full_name, &tmp_win->class)) WarpToWindow(tmp_win); } } else DoAudible(); return FALSE; } /* * Two functions to handle a restart from a SIGUSR1 signal * (see also twm.c:Done() and twm.c:QueueRestartVtwm()) * * adapted from TVTWM-pl11 - djhjr - 7/31/98 */ static void setup_restart(time) Time time; { /* djhjr - 6/22/01 */ #ifndef NO_SOUND_SUPPORT CloseSound(); #endif SetRealScreen(0,0); XSync (dpy, 0); Reborder (time); XSync (dpy, 0); /* djhjr - 3/13/97 */ XCloseDisplay(dpy); /* djhjr - 12/2/01 */ delete_pidfile(); } void RestartVtwm(time) Time time; { setup_restart(time); execvp(*Argv, Argv); fprintf (stderr, "%s: unable to restart \"%s\"\n", ProgramName, *Argv); } /* * ICCCM Client Messages - Section 4.2.8 of the ICCCM dictates that all * client messages will have the following form: * * event type ClientMessage * message type _XA_WM_PROTOCOLS * window tmp->w * format 32 * data[0] message atom * data[1] time stamp */ static void send_clientmessage (w, a, timestamp) Window w; Atom a; Time timestamp; { XClientMessageEvent ev; ev.type = ClientMessage; ev.window = w; ev.message_type = _XA_WM_PROTOCOLS; ev.format = 32; ev.data.l[0] = a; ev.data.l[1] = timestamp; XSendEvent (dpy, w, False, 0L, (XEvent *) &ev); } void SendDeleteWindowMessage (tmp, timestamp) TwmWindow *tmp; Time timestamp; { send_clientmessage (tmp->w, _XA_WM_DELETE_WINDOW, timestamp); } void SendSaveYourselfMessage (tmp, timestamp) TwmWindow *tmp; Time timestamp; { send_clientmessage (tmp->w, _XA_WM_SAVE_YOURSELF, timestamp); } void SendTakeFocusMessage (tmp, timestamp) TwmWindow *tmp; Time timestamp; { send_clientmessage (tmp->w, _XA_WM_TAKE_FOCUS, timestamp); } /* djhjr - 4/27/96 */ void DisplayPosition (x, y) int x, y; { char str [100]; int i; /* djhjr - 5/10/96 char signx = '+'; char signy = '+'; if (x < 0) { x = -x; signx = '-'; } if (y < 0) { y = -y; signy = '-'; } i = sprintf (str, " %c%-4d %c%-4d ", signx, x, signy, y); */ /* * Non-SysV systems - specifically, BSD-derived systems - return a * pointer to the string, not its length. Submitted by Goran Larsson i = sprintf (str, "%+6d %-+6d", x, y); */ sprintf (str, "%+6d %-+6d", x, y); i = strlen (str); XRaiseWindow (dpy, Scr->SizeWindow); /* font was font.font->fid - djhjr - 9/14/03 */ FBF (Scr->DefaultC.fore, Scr->DefaultC.back, Scr->SizeFont); /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_DrawImageString (dpy, Scr->SizeWindow, &Scr->SizeFont, #else XDrawImageString (dpy, Scr->SizeWindow, #endif Scr->NormalGC, /* djhjr - 5/9/96 Scr->SizeStringOffset, */ (Scr->SizeStringWidth - /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT MyFont_TextWidth(&Scr->SizeFont, #else XTextWidth(Scr->SizeFont.font, #endif str, i)) / 2, /* djhjr - 4/29/98 Scr->SizeFont.font->ascent + SIZE_VINDENT, */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ /* djhjr - 9/14/03 Scr->SizeFont.font->ascent + */ Scr->SizeFont.ascent + SIZE_VINDENT + ((Scr->InfoBevelWidth > 0) ? Scr->InfoBevelWidth : 0), str, i); /* I know, I know, but the above code overwrites it... djhjr - 5/9/96 */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ if (Scr->InfoBevelWidth > 0) Draw3DBorder(Scr->SizeWindow, 0, 0, Scr->SizeStringWidth, /* djhjr - 4/29/98 (unsigned int) (Scr->SizeFont.height + SIZE_VINDENT*2), BW, Scr->DefaultC, off, False, False); */ /* was 'Scr->use3Dborders' - djhjr - 8/11/98 */ (unsigned int) (Scr->SizeFont.height + SIZE_VINDENT*2) + ((Scr->InfoBevelWidth > 0) ? 2 * Scr->InfoBevelWidth : 0), Scr->InfoBevelWidth, Scr->DefaultC, off, False, False); } /* djhjr - 9/21/99 */ int FindMenuOrFuncInBindings(contexts, mr, func) int contexts; MenuRoot *mr; int func; { MenuRoot *start; FuncKey *key; int found = 0; /* context bitmap for menu or function */ int i, j, k, l, fallback = 0; if (mr) { if (Scr->DefaultFunction.func == F_MENU) if (FindMenuInMenus(Scr->DefaultFunction.menu, mr)) fallback = 1; } else { if (Scr->DefaultFunction.func == func) fallback = 1; else if (Scr->DefaultFunction.func == F_MENU) if (FindFuncInMenus(Scr->DefaultFunction.menu, func)) fallback = 1; } for (j = 0; j < NUM_CONTEXTS; j++) { if ((contexts & (1 << j)) == 0) continue; if (fallback) { found |= (1 << j); continue; } for (i = 0; i < MAX_BUTTONS + 1; i++) { l = 0; for (k = 0; k < MOD_SIZE; k++) { if (mr) { if (Scr->Mouse[i][j][k].func == F_MENU) l = FindMenuInMenus(Scr->Mouse[i][j][k].menu, mr); } else { if (Scr->Mouse[i][j][k].func == func) l = 1; else if (Scr->Mouse[i][j][k].func == F_MENU) l = FindFuncInMenus(Scr->Mouse[i][j][k].menu, func); } if (l) { found |= (1 << j); i = MAX_BUTTONS + 1; break; } } } l = 0; for (key = Scr->FuncKeyRoot.next; key != NULL; key = key->next) if (key->cont & (1 << j)) { if (mr) { if (key->func == F_MENU) for (start = Scr->MenuList; start != NULL; start = start->next) if (strcmp(start->name, key->action) == 0) { l = FindMenuInMenus(start, mr); break; } } else { if (key->func == func) l = 1; else if (key->func == F_MENU) for (start = Scr->MenuList; start != NULL; start = start->next) if (strcmp(start->name, key->action) == 0) { l = FindFuncInMenus(start, func); break; } } if (l) { found |= (1 << j); break; } } } return found; } /* djhjr - 9/21/99 */ int FindMenuOrFuncInWindows(tmp_win, contexts, mr, func) TwmWindow *tmp_win; int contexts; MenuRoot *mr; int func; { TwmWindow *twin; TwmDoor *d; TBWindow *tbw; int i, nb; if (contexts & C_ROOT_BIT) return 1; for (twin = Scr->TwmRoot.next; twin != NULL; twin = twin->next) if (twin != tmp_win) { /* * if this window is an icon manager, * skip the windows that aren't in it */ if (tmp_win->iconmgr && twin->list && tmp_win != twin->list->iconmgr->twm_win) continue; if (twin->mapped) { for (i = 1; i < C_ALL_BITS; i = (1 << i)) { if ((contexts & i) == 0) continue; switch (i) { case C_WINDOW_BIT: case C_FRAME_BIT: break; case C_TITLE_BIT: if (!twin->title_height) continue; break; case C_VIRTUAL_BIT: if (twin->w != Scr->VirtualDesktopDisplayOuter) continue; break; case C_DOOR_BIT: if (XFindContext(dpy, twin->w, DoorContext, (caddr_t *)&d) == XCNOENT) continue; break; default: continue; break; } return 1; } if (twin->titlebuttons) { nb = Scr->TBInfo.nleft + Scr->TBInfo.nright; for (tbw = twin->titlebuttons; nb > 0; tbw++, nb--) if (mr) { if (tbw->info->menuroot) if (FindMenuInMenus(tbw->info->menuroot, mr)) return 1; } else { if (tbw->info->func == func) return 1; else if (tbw->info->menuroot) if (FindFuncInMenus(tbw->info->menuroot, func)) return 1; } } } else if (!twin->iconify_by_unmapping) { /* not mapped and shows an icon */ if (contexts & C_ICON_BIT) return 1; } } return 0; } /* djhjr - 9/21/99 */ int FindMenuInMenus(start, sought) MenuRoot *start, *sought; { MenuItem *mi; if (!start) return 0; /* submitted by Jonathan Paisley - 11/11/02 */ if (start == sought) return 1; for (mi = start->first; mi != NULL; mi = mi->next) if (mi->sub) if (FindMenuInMenus(mi->sub, sought)) return 1; return 0; } /* djhjr - 9/21/99 */ int FindFuncInMenus(mr, func) MenuRoot *mr; int func; { MenuItem *mi; for (mi = mr->first; mi != NULL; mi = mi->next) if (mi->func == func) return 1; else if (mi->sub) if (FindFuncInMenus(mi->sub, func)) return 1; return 0; } /* djhjr - 6/22/01 */ void DoAudible() { #ifndef NO_SOUND_SUPPORT if (PlaySound(S_BELL)) return; #endif XBell(dpy, 0); } vtwm-5.4.7/gc.c0100664000015300001300000001173410237645271012065 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /********************************************************************** * * $XConsortium: gc.c,v 1.22 91/01/09 17:13:12 rws Exp $ * * Open the fonts and create the GCs * * 31-Mar-88 Tom LaStrange Initial Version. * * Do the necessary modification to be integrated in ctwm. * Can no longer be used for the standard twm. * * 22-April-92 Claude Lecommandeur. * * **********************************************************************/ #include #include "twm.h" #include "util.h" #include "screen.h" /*********************************************************************** * * Procedure: * CreateGCs - open fonts and create all the needed GC's. I only * want to do this once, hence the first_time flag. * *********************************************************************** */ void CreateGCs() { static ScreenInfo *prevScr = NULL; XGCValues gcv; unsigned long gcm; static unsigned char greypattern [] = {0x0f, 0x05, 0x0f, 0x0a}; Pixmap greypixmap; static char dashlist [2] = {1, 1}; if (!Scr->FirstTime || prevScr == Scr) return; prevScr = Scr; /* create GC's */ gcm = 0; gcm |= GCFunction; gcv.function = GXxor; gcm |= GCLineWidth; gcv.line_width = 0; gcm |= GCForeground; gcv.foreground = Scr->XORvalue; gcm |= GCSubwindowMode; gcv.subwindow_mode = IncludeInferiors; Scr->DrawGC = XCreateGC(dpy, Scr->Root, gcm, &gcv); gcm = 0; gcm |= GCForeground; gcv.foreground = Scr->MenuC.fore; gcm |= GCBackground; gcv.background = Scr->MenuC.back; /* djhjr - 9/14/03 */ #ifndef NO_I18N_SUPPORT if (!use_fontset) { gcm |= GCFont; gcv.font = Scr->MenuFont.font->fid; } #else gcm |= GCFont; gcv.font = Scr->MenuFont.font->fid; #endif Scr->MenuGC = XCreateGC(dpy, Scr->Root, gcm, &gcv); gcm = 0; gcm |= GCPlaneMask; gcv.plane_mask = AllPlanes; /* * Prevent GraphicsExpose and NoExpose events. We'd only get NoExpose * events anyway; they cause BadWindow errors from XGetWindowAttributes * call in FindScreenInfo (events.c) (since drawable is a pixmap). */ gcm |= GCGraphicsExposures; gcv.graphics_exposures = False; gcm |= GCLineWidth; gcv.line_width = 0; Scr->NormalGC = XCreateGC(dpy, Scr->Root, gcm, &gcv); greypixmap = XCreatePixmapFromBitmapData(dpy, Scr->Root, (char *) greypattern, 4, 4, 1, 0, 1); gcm = 0; gcm |= GCStipple; gcv.stipple = greypixmap; gcm |= GCFillStyle; gcv.fill_style = FillOpaqueStippled; gcm |= GCForeground; gcv.foreground = Scr->Black; gcm |= GCBackground; gcv.background = Scr->White; Scr->GreyGC = XCreateGC (dpy, Scr->Root, gcm, &gcv); XSetDashes (dpy, Scr->GreyGC, 1, dashlist, 2); if (Scr->BeNiceToColormap) { gcm = 0; gcm |= GCLineStyle; gcv.line_style = LineDoubleDash; Scr->ShadGC = XCreateGC (dpy, Scr->Root, gcm, &gcv); XSetDashes (dpy, Scr->ShadGC, 0, dashlist, 2); } } vtwm-5.4.7/menus.h0100664000015300001300000001674110237645271012633 0ustar callumfid/*****************************************************************************/ /** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ /** Salt Lake City, Utah **/ /** Portions Copyright 1989 by the Massachusetts Institute of Technology **/ /** Cambridge, Massachusetts **/ /** **/ /** All Rights Reserved **/ /** **/ /** Permission to use, copy, modify, and distribute this software and **/ /** its documentation for any purpose and without fee is hereby **/ /** granted, provided that the above copyright notice appear in all **/ /** copies and that both that copyright notice and this permis- **/ /** sion notice appear in supporting documentation, and that the **/ /** names of Evans & Sutherland and M.I.T. not be used in advertising **/ /** in publicity pertaining to distribution of the software without **/ /** specific, written prior permission. **/ /** **/ /** EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD **/ /** TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT- **/ /** ABILITY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND OR **/ /** M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAM- **/ /** AGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA **/ /** OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER **/ /** TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE **/ /** OR PERFORMANCE OF THIS SOFTWARE. **/ /*****************************************************************************/ /*********************************************************************** * * $XConsortium: menus.h,v 1.24 89/12/10 17:46:26 jim Exp $ * * twm menus include file * * 17-Nov-87 Thomas E. LaStrange File created * ***********************************************************************/ #ifndef _MENUS_ #define _MENUS_ #define TWM_ROOT "bLoB_GoOp" /* my private root menu */ #define TWM_WINDOWS "TwmWindows" /* for f.menu "TwmWindows" */ /* djhjr - 5/4/98 */ #define VTWM_WINDOWS "VTWM Windows" /* for f.menu "VTWM Windows" */ #define MAX_FILE_SIZE 4096 /* max chars to read from file for cut */ typedef struct MenuItem { struct MenuItem *next; /* next menu item */ struct MenuItem *prev; /* prev menu item */ struct MenuRoot *sub; /* MenuRoot of a pull right menu */ struct MenuRoot *root; /* back pointer to my MenuRoot */ char *item; /* the character string displayed */ char *action; /* action to be performed */ /* djhjr - 4/22/96 Pixel fore; * foreground color * Pixel back; * background color * Pixel hi_fore; * highlight foreground * Pixel hi_back; * highlight background * */ ColorPair normal; /* unhiglight colors */ ColorPair highlight; /* highlight colors */ short item_num; /* item number of this menu */ short x; /* x coordinate for text */ short func; /* twm built in function */ short state; /* video state, 0 = normal, 1 = reversed */ short strlen; /* strlen(item) */ short user_colors; /* colors were specified */ /* djhjr - 4/22/96 */ short separated; /* separated from the next item */ } MenuItem; typedef struct MenuRoot { struct MenuItem *first; /* first item in menu */ struct MenuItem *last; /* last item in menu */ struct MenuRoot *prev; /* previous root menu if pull right */ struct MenuRoot *next; /* next in list of root menus */ char *name; /* name of root */ Window w; /* the window of the menu */ Window shadow; /* the shadow window */ /* djhjr - 4/22/96 Pixel hi_fore; * highlight foreground * Pixel hi_back; * highlight background * */ ColorPair highlight; /* highlight colors */ short mapped; /* NEVER_MAPPED, UNMAPPED, or MAPPED */ short height; /* height of the menu */ short width; /* width of the menu */ short items; /* number of items in the menu */ short pull; /* is there a pull right entry? */ short entered; /* EnterNotify following pop up */ short real_menu; /* this is a real menu */ /* djhjr - 5/22/00 */ short too_tall; /* menu taller than display? */ short top; /* first item displayed */ } MenuRoot; #define NEVER_MAPPED 0 /* constants for mapped field of MenuRoot */ #define UNMAPPED 1 #define MAPPED 2 typedef struct MouseButton { int func; /* the function number */ int mask; /* modifier mask */ MenuRoot *menu; /* menu if func is F_MENU */ MenuItem *item; /* action to perform if func != F_MENU */ } MouseButton; typedef struct FuncButton { struct FuncButton *next; /* next in the list of function buttons */ int num; /* button number */ int cont; /* context */ int mods; /* modifiers */ int func; /* the function number */ MenuRoot *menu; /* menu if func is F_MENU */ MenuItem *item; /* action to perform if func != F_MENU */ } FuncButton; typedef struct FuncKey { struct FuncKey *next; /* next in the list of function keys */ char *name; /* key name */ KeySym keysym; /* X keysym */ KeyCode keycode; /* X keycode */ int cont; /* context */ int mods; /* modifiers */ int func; /* function to perform */ char *win_name; /* window name (if any) */ char *action; /* action string (if any) */ } FuncKey; extern int RootFunction; extern MenuRoot *ActiveMenu; extern MenuItem *ActiveItem; extern int MoveFunction; extern int WindowMoved; extern int ConstMove; /* private variables now - djhjr - 10/6/02 extern int ConstMoveDir; extern int ConstMoveX; extern int ConstMoveY; extern int ConstMoveXL; extern int ConstMoveXR; extern int ConstMoveYT; extern int ConstMoveYB; */ #define MAXMENUDEPTH 10 /* max number of nested menus */ extern int MenuDepth; #define MOVE_NONE 0 /* modes of constrained move */ #define MOVE_VERT 1 #define MOVE_HORIZ 2 #define WARPSCREEN_NEXT "next" #define WARPSCREEN_PREV "prev" #define WARPSCREEN_BACK "back" #define COLORMAP_NEXT "next" #define COLORMAP_PREV "prev" #define COLORMAP_DEFAULT "default" extern int InitTitlebarButtons(); extern void InitMenus(); extern MenuRoot *NewMenuRoot(); extern void SetMenuIconPixmap(); extern MenuItem *AddToMenu(); extern Bool PopUpMenu(); extern MenuRoot *FindMenuRoot(); extern Bool AddFuncKey(); extern int ExecuteFunction(); extern int DeferExecution(); extern void Execute(); extern void FocusOnRoot(); extern void SetBorder(); extern void ReGrab(); extern void WarpToWindow(); extern void PaintEntry(); extern void DeIconify(); extern void SetMapStateProp(); extern void Iconify(); extern void PopDownMenu(); extern void UpdateMenu(); extern void SendTakeFocusMessage(); extern void PaintEntry(); extern void SetBorder(); extern int CreateTitleButton(); extern void MakeMenus(); extern void PaintMenu(); /* djhjr - 4/27/96 */ extern void DisplayPosition (); /* djhjr - 5/30/00 */ extern void WarpWindowOrScreen(); extern void WarpInIconMgr(); /* djhjr - 10/27/02 */ extern void AddWindowToRing(); extern void RemoveWindowFromRing(); /* djhjr - 6/22/01 */ extern void DoAudible(); #endif /* _MENUS_ */ vtwm-5.4.7/system.vtwmrc.2D0100664000015300001300000001174710237645271014370 0ustar callumfid# # system.vtwmrc.2D # # Default VTWM configuration file; should be kept small to conserve string # space in systems whose compilers don't handle medium-sized strings. # # Sites should tailor this file, providing any extra title buttons, menus, # etc., that may be appropriate for their environment. For example, if most # of the users were accustomed to uwm, the defaults could be set up not to # decorate any windows and to use meta-keys. # # # Variables # NoGrabServer RestartPreviousState NoDefaults ShowIconManager SortIconManager IconifyByUnmapping RightHandSidePulldownMenus NaturalAutoPanBehavior NotVirtualGeometries FixManagedVirtualGeometries FixTransientVirtualGeometries MoveDelta 3 ResizeRegion "NorthEast" FramePadding 2 ButtonIndent 0 TitlePadding 5 TitleButtonBorderWidth 1 VirtualDesktop "5x2-0-0" 16 PanDistanceX 100 PanDistanceY 100 PanResistance 750 AutoPan 100 TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" MenuTitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*" DoorFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" InfoFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" VirtualDesktopFont "-adobe-helvetica-medium-r-normal--*-75-*-*-*-*-*-*" # # Lists # SqueezeTitle WarpCursor NailedDown { "VTWM *" "xclock" "xload" } NoTitle { "VTWM *" "xclock" "xload" } DontShowInDisplay { "VTWM *" "xclock" "xload" } IconManagerDontShow { "VTWM *" "xclock" "xload" } Pixmaps { "MenuIconPixmap" ":rarrow" } Color { DefaultBackground "maroon" DefaultForeground "gray85" BorderColor "grey70" BorderTileBackground "gray60" BorderTileForeground "gray60" DoorBackground "maroon" DoorForeground "gray85" TitleBackground "maroon" TitleForeground "gray85" MenuBackground "maroon" MenuForeground "gray85" MenuTitleBackground "gray70" MenuTitleForeground "maroon" IconBackground "maroon" IconForeground "gray85" IconBorderColor "gray85" IconManagerBackground "maroon" IconManagerForeground "gray85" VirtualBackground "maroon" VirtualForeground "black" DesktopDisplayBackground "grey60" DesktopDisplayForeground "grey85" } Monochrome { DefaultBackground "gray50" DefaultForeground "gray85" BorderColor "grey70" BorderTileBackground "gray60" BorderTileForeground "gray60" DoorBackground "gray50" DoorForeground "gray85" TitleBackground "gray50" TitleForeground "gray85" MenuBackground "gray50" MenuForeground "gray85" MenuTitleBackground "gray70" MenuTitleForeground "gray50" IconBackground "gray50" IconForeground "gray85" IconBorderColor "gray85" IconManagerBackground "gray50" IconManagerForeground "gray85" VirtualBackground "gray50" VirtualForeground "black" DesktopDisplayBackground "grey60" DesktopDisplayForeground "grey85" } # # Functions and Bindings # Function "move-or-iconify" { f.move f.deltastop f.iconify } LeftTitleButton ":darrow" = f.menu "arrange" RightTitleButton ":dot" = f.iconify RightTitleButton ":resize" = f.resize Button1 = : root : f.version Button3 = : root : f.menu "main" Button1 = : title : f.move Button2 = : title : f.resize Button3 = : title : f.raiselower Button1 = : frame : f.move Button2 = : frame : f.resize Button3 = : frame : f.iconify Button1 = : door : f.enterdoor Button2 = : door : f.namedoor Button3 = : door : f.deletedoor Button1 = : icon : f.function "move-or-iconify" Button3 = : icon : f.menu "arrange" Button1 = : iconmgr : f.iconify Button3 = : iconmgr : f.warp Button1 = : virtual | desktop : f.movescreen # # Menus # menu "main" { " VTWM " f.title "Applications" f.menu "apps" "" f.separator "Operations" f.menu "ops" "Arrange" f.menu "arrange" "" f.separator "Restart" f.restart "Exit" f.quit } menu "apps" { " Applications " f.title "xclock" f.exec "xclock &" "xload" f.exec "xload &" "xterm" f.exec "xterm &" } menu "ops" { " Operations " f.title "Auto Pan" f.autopan "New Door" f.newdoor "Snap Screen" f.snaprealscreen "Static Icons" f.staticiconpositions "Warp Snug" f.warpsnug "Warp Visible" f.warpvisible "" f.separator "Show Icon Mgr" f.showiconmgr "Hide Icon Mgr" f.hideiconmgr "Show Desktop" f.showdesktopdisplay "Hide Desktop" f.hidedesktopdisplay "" f.separator "Refresh" f.refresh } menu "arrange" { " Arrange " f.title "Autoraise" f.autoraise "Raise" f.raise "Lower" f.lower "Nail" f.nail "" f.separator "Move" f.move "Size" f.resize "Iconify" f.iconify "" f.separator "Full Zoom" f.fullzoom "Horiz Zoom" f.horizoom "Vert Zoom" f.zoom "" f.separator "Left Title" f.squeezeleft "Center Title" f.squeezecenter "Right Title" f.squeezeright "" f.separator "Identify" f.identify "" f.separator "Delete" f.delete "Destroy" f.destroy }