[comp.sources.amiga] v89i197: msizer - size a window from any corner

page%swap@Sun.COM (Bob Page) (11/13/89)

Submitted-by: giampal@auvm.bitnet
Posting-number: Volume 89, Issue 197
Archive-name: intuition/msizer.1

Msizer allows you to resize a window from any corner when holding down
the left mouse button and the left amiga key.

[uuencoded executable included.  This would make a good Commodities
Exchange demo.  ..bob]

# This is a shell archive.
# Remove anything above and including the cut line.
# Then run the rest of the file through 'sh'.
# Unpacked files will be owned by you and have default permissions.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar: SHell ARchive
# Run the following text through 'sh' to create:
#	MSizer.c
#	MSizer.doc
#	MSizer.uu
# This is archive 1 of a 1-part kit.
# This archive created: Sun Nov 12 17:19:14 1989
echo "extracting MSizer.c"
sed 's/^X//' << \SHAR_EOF > MSizer.c
X/*
X    Keeping to tradition, the Khaled Mardam-Bey philosophy, this program
X    is completely undocumented so as to give you prime experience in
X    learning how to debug source code.
X
X      The program also contains many redundant bits and pieces so as to
X    make your learning experience that much more profoundly educational
X    and exceptional.
X
X    This is how NOT to write a program.
X
X    Got it ? Okay, great, now YOU can start teaching others by coding in
X    exactly the same way.
X
X    There's something very deep in that last sentence, can't quite
X    pinpoint it though, hmmm...
X
X    compile with  cc Msizer.c
X                  ln Msizer.o -lc
X
X    Warning - It won't bite unless you try to compile it.
X              Linking is okay though... <grin>
X
X   This source is totally PD.
X
X   written by Khaled Mardam-Bey, 14th October 1989.
X*/
X
X#include <exec/lists.h>
X#include <exec/interrupts.h>
X#include <exec/ports.h>
X#include <exec/libraries.h>
X#include <exec/io.h>
X#include <exec/execbase.h>
X#include <exec/types.h>
X#include <exec/devices.h>
X#include <exec/memory.h>
X#include <exec/exec.h>
X#include <exec/ports.h>
X#include <exec/tasks.h>
X#include <libraries/dos.h>
X#include <libraries/dosextens.h>
X#include <devices/timer.h>
X#include <devices/trackdisk.h>
X#include <devices/input.h>
X#include <devices/inputevent.h>
X#include <intuition/intuition.h>
X#include <intuition/intuitionbase.h>
X#include <ctype.h>
X#include <stdio.h>
X#include <functions.h>
X#include <graphics/gfxbase.h>
X
X  /* Key Definitions */
X#define QKEY         0x45
X#define CONTROL      0x63
X#define THRESHX      16
X#define THRESHY      8
X#define MINX         40
X#define MINY         24
X
X  /* input events */
X#define QUIT         0x1
X#define FINISHUP     0x2
X#define MOVEIT       0x4
X#define DOWINDOW     0x8
X
X#define DELAY    1000000L
X
Xchar PortName[] = "PePeTe";
Xchar WrittenBy[] = "Khaled Mardam-Bey 1989";
X
XSHORT i,j,k,l;
XSHORT nomore = 0, NoGo = 0;
XSHORT corner = 0;
XSHORT dx,dy,ff,xx,yy,oo;
XSHORT DoIT = 0, there = 0;
XSHORT LastX,LastY;
XSHORT x,y,ox,oy,fx,fy;
XSHORT event;
XSHORT lastcode = 0;
Xlong  sec = 0,micro = 0;
XSHORT rbuttonisdown = 0, lbuttonisdown = 0;
XSHORT ww, wh, te, le, sw, sh;
X
Xstruct Library *OpenLibrary();
Xstruct ViewPort *ViewPortAddress();
X
Xstruct MsgPort       *inputPort = NULL;
Xstruct IOStdReq      *inputReq = NULL;
Xstruct MsgPort       *TimerPort = NULL;
Xstruct Screen        *s, *Screen = NULL;
Xstruct IntuitionBase *IntuitionBase = NULL;
Xstruct GfxBase       *GfxBase = NULL;
Xstruct Window        *window;
Xstruct RastPort      *rp;
Xstruct Layer_Info    *li;
Xstruct LayersBase    *LayersBase = NULL;
X
Xvoid move(x,y) SHORT x,y; { Move(rp, (long) x, (long) y); }
Xvoid draw(x,y) SHORT x,y; { Draw(rp, (long) x, (long) y); }
Xvoid plot(x,y) SHORT x,y; { WritePixel(rp, (long) x, (long) y); }
X
Xstruct timerequest Timer_Req;
Xlong   TimerSig,tdevice = 1;
X
Xstruct InputEvent phoney;
Xstruct HotInfo
X  {
X  struct Task *hotTask;
X  long  hotSig;
X  } hotStuff;
X
Xlong signum = -1;
X
Xstruct Interrupt handlerStuff;
Xstruct defPort
X{
X  struct MsgPort mp;
X};
X
Xstruct defPort *defPortPtr;
Xchar defPortName[] = "WiNnYpO";
XSHORT updating = 0;
X
Xvoid HandlerInterface()
X{
X#asm
X  movem.l a4,-(sp)
X  jsr _geta4#
X  movem.l   A0/A1,-(sp)
X  jsr       _myhandler
X  addq.l    #8,A7
X  movem.l (sp)+,a4
X#endasm
X}
X
Xstruct InputEvent *myhandler(ev1, hotStuff)
Xstruct InputEvent *ev1;
Xstruct HotInfo *hotStuff;
X{
X  struct InputEvent *ev, *last;
X  SHORT removeit;
X  SHORT evcode,evqual;
X
X  event = 0;
X  for (ev=ev1,last = NULL; ev; ev=ev->ie_NextEvent)
X  {
X    evcode = ev->ie_Code;
X    evqual = ev->ie_Qualifier;
X    removeit = 0;
X
X    if ((ev->ie_Class != IECLASS_TIMER))
X    {
X      if (ev->ie_Class == IECLASS_RAWKEY)
X      {
X        if ((evcode >= 0x80) && (evcode == (lastcode | 0x80))) {
X          DoIT = 0;
X          event |= FINISHUP;
X          removeit = 1;
X          lastcode = 0; }
X        else {
X          lastcode = 0;
X          removeit = 0;
X        }
X
X       if (evcode == CONTROL)
X       {
X         lastcode = evcode;
X         removeit = 1;
X         DoIT = 1;
X       }
X       else
X       if (evcode == QKEY) {
X         if (DoIT) DoIT = 2;
X         lastcode = evcode;
X         removeit = 1;
X       }
X       else DoIT = 0;
X      }
X    }
X
X    if (ev->ie_Class == IECLASS_RAWMOUSE)
X    {
X      if (evcode == (IECODE_LBUTTON | 0x80)) {
X        lbuttonisdown = 0;
X        if (DoIT) event |= DOWINDOW;
X        else event |= FINISHUP;
X      }
X      else {
X        if (evcode == IECODE_LBUTTON) {
X          if (DoIT == 2) event |= QUIT;
X          if ((lbuttonisdown == 0) && (DoIT == 1)) removeit = 1;
X          lbuttonisdown = 1;
X        }
X
X        if ((lbuttonisdown) && (DoIT)) {
X          event |= MOVEIT;
X        }
X      }
X    }
X
X    if (removeit)
X      if (last == NULL)
X        ev1 = ev->ie_NextEvent;
X      else
X        last->ie_NextEvent = ev->ie_NextEvent;
X    else
X      last = ev;
X  }
X
X  if (event)
X    Signal(hotStuff->hotTask,hotStuff->hotSig);
X  return(ev1);
X}
X
Xmain()
X{
X  struct IntuiMessage *Msg;
X  long                class;
X
X  IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0L);
X  if (!IntuitionBase) exit(0L);
X
X  GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0L);
X  if (!GfxBase) exit(0L);
X
X  LayersBase = (struct LayersBase *) OpenLibrary("layers.library",0L);
X  if (!LayersBase) exit(0L);
X
X  defPortPtr = (struct defPort *) FindPort(defPortName);
X  if (defPortPtr == NULL)
X  {
X    if ((defPortPtr = (struct defPort *) AllocMem((long)sizeof(struct defPort),MEMF_PUBLIC | MEMF_CLEAR)) == NULL)
X      exit(10);
X  }
X  else
X    updating = 1;
X
X  if (updating)
X    Uninstall();
X
X  defPortPtr->mp.mp_Node.ln_Pri = 0;
X  defPortPtr->mp.mp_Node.ln_Type = NT_MSGPORT;
X  NewList(&(defPortPtr->mp.mp_MsgList));
X  defPortPtr->mp.mp_Node.ln_Name = (char *) &(defPortName);
X
X  AddPort(defPortPtr);
X
X  if((signum = AllocSignal((long)-1)) == -1)
X    Uninstall();
X
X  hotStuff.hotSig = 1 << signum;
X  hotStuff.hotTask = FindTask(NULL);
X
X  if(!(inputPort = CreatePort(PortName,0)))
X    Uninstall();
X  if(!(inputReq = CreateStdIO(inputPort)))
X    Uninstall();
X
X  handlerStuff.is_Data = (APTR)&hotStuff;
X  handlerStuff.is_Code = HandlerInterface;
X  handlerStuff.is_Node.ln_Pri = 55;
X  handlerStuff.is_Node.ln_Name = "PoOpHaNy";
X
X  if(OpenDevice("input.device",0L,inputReq,0L) != 0)
X    Uninstall();
X
X  inputReq->io_Command = IND_ADDHANDLER;
X  inputReq->io_Data = (APTR)&handlerStuff;
X
X  DoIO(inputReq);
X
X  if ((TimerPort = CreatePort("TimPodle", 0L)) == NULL)
X    Uninstall();
X
X  if ((tdevice = OpenDevice(TIMERNAME, UNIT_VBLANK, &Timer_Req, 0L)) != 0)
X    Uninstall();
X  Timer_Req.tr_node.io_Message.mn_ReplyPort = TimerPort;
X  Timer_Req.tr_node.io_Command = TR_ADDREQUEST;
X  Timer_Req.tr_node.io_Flags = 0;
X  Timer_Req.tr_node.io_Error = 0;
X
X  TimerSig = (1L << TimerPort->mp_SigBit);
X
X  QueTimer();
X
X  (void)SetTaskPri(FindTask(NULL), 20L);
X
X  for (;;)
X  {
X    Wait(hotStuff.hotSig | TimerSig);
X
X    if (Msg = (struct IntuiMessage *)GetMsg(TimerPort))
X      if (Msg) QueTimer();
X
X    if (breakcheck()) Uninstall();
X    breakreset();
X
X    if (event & QUIT) Uninstall();
X
X    if (event & FINISHUP) {
X      FiniUpi();
X      corner = 0;
X      nomore = 0;
X    }
X
X    if (event & DOWINDOW) MoveThatWindow();
X
X    if (event & MOVEIT) {
X      if (nomore == 0) CheckPP();
X      else if (corner != 0) ElBorders();
X    }
X  event = 0;
X  }
X}
X
XFiniUpi()
X{
X  if (there) {
X    xx = LastX + dx; yy = LastY + dy;
X    DoEm();
X    UnlockLayers(li);
X    there = 0;
X  }
X}
X
XQueTimer()
X{
X  Timer_Req.tr_time.tv_secs = 0;
X  Timer_Req.tr_time.tv_micro = DELAY;
X  SendIO(&Timer_Req.tr_node);
X}
X
XElBorders()
X{
X  if ((LastX != s->MouseX) || (LastY != s->MouseY)) {
X    xx = LastX + dx;
X    yy = LastY + dy;
X    DoEm();
X    xx = s->MouseX + dx;
X    yy = s->MouseY + dy;
X    DoEm();
X  }
X
X  there = 1;
X  LastX = s->MouseX;
X  LastY = s->MouseY;
X}
X
XDoEm()
X{
X  if (corner == 1) do1();
X  else if (corner == 2) do2();
X  else if (corner == 3) do3();
X  else if (corner == 4) do4();
X}
X
Xdo1()
X{
X  while (xx < 0) xx = xx + 1;
X  while (yy < 0) yy = yy + 1;
X
X  while ((le+ww) > s->Width) ww = ww -1;
X  while ((te+wh) > s->Height) wh = wh - 1;
X
X  if (xx > (le+ww-MINX)) xx = (le+ww-MINX);
X  if (yy > (te+wh-MINY)) yy = (te+wh-MINY);
X
X  move( (SHORT) xx, (SHORT) yy);
X  draw( (SHORT) (le+ww-1), (SHORT) yy);
X  draw( (SHORT) (le+ww-1), (SHORT) (te+wh-1));
X  draw( (SHORT) xx, (SHORT) (te+wh-1));
X  draw( (SHORT) xx, (SHORT) yy);
X}
X
Xdo2()
X{
X  while (xx > s->Width) xx = xx - 1;
X  while (xx < 0) xx = xx + 1;
X  while (yy < 0) yy = yy + 1;
X  while (yy > s->Height) yy = yy - 1;
X
X  while ((te+wh) > s->Height) wh = wh - 1;
X
X  if (xx < (le+MINX)) xx = le+MINX;
X  if (yy > (te+wh-MINY)) yy = (te+wh-MINY);
X
X  move( (SHORT) xx-1, (SHORT) yy);
X  draw( (SHORT) le, (SHORT) yy);
X  draw( (SHORT) le, (SHORT) (te+wh-1));
X  draw( (SHORT) xx-1, (SHORT) (te+wh-1));
X  draw( (SHORT) xx-1, (SHORT) yy);
X}
X
Xdo3()
X{
X  while (xx < 0) xx = xx + 1;
X  while (xx > s->Width) xx = xx - 1;
X  while (yy < 0) yy = yy + 1;
X  while (yy > s->Height) yy = yy - 1;
X
X  while ((le+ww) > s->Width) ww = ww -1;
X
X  if (xx > (le+ww-MINX)) xx = (le+ww-MINX);
X  if (yy < (te+MINY)) yy = (te+MINY);
X
X  move( (SHORT) xx, (SHORT) yy-1);
X  draw( (SHORT) (le+ww-1), (SHORT) yy-1);
X  draw( (SHORT) (le+ww-1), (SHORT) te);
X  draw( (SHORT) xx, (SHORT) te);
X  draw( (SHORT) xx, (SHORT) yy-1);
X}
X
Xdo4()
X{
X  while (xx < 0) xx = xx + 1;
X  while (xx > s->Width) xx = xx - 1;
X  while (yy < 0) yy = yy + 1;
X  while (yy > s->Height) yy = yy - 1;
X
X  if (xx < (le+MINX)) xx = (le+MINX);
X  if (yy < (te+MINY)) yy = (te+MINY);
X
X  move( (SHORT) xx-1, (SHORT) yy-1);
X  draw( (SHORT) xx-1, (SHORT) te);
X  draw( (SHORT) le, (SHORT) te);
X  draw( (SHORT) le, (SHORT) yy-1);
X  draw( (SHORT) xx-1, (SHORT) yy-1);
X}
X
XCheckPP()
X{
X  window = IntuitionBase->ActiveWindow;
X
X  if (window != NULL) {
X    le = window->LeftEdge;    te = window->TopEdge;
X    ww = window->Width;       wh = window->Height;
X
X    s = window->WScreen;
X    sw = s->Width;
X    sh = s->Height;
X
X    rp=&(s->RastPort);
X
X    SetAPen(rp,1L);
X    SetBPen(rp,2L);
X    SetDrMd(rp, COMPLEMENT | JAM1);
X
X    LastX = ox = x = s->MouseX;
X    LastY = oy = y = s->MouseY;
X
X    corner = 0;
X
X    if ((y >= te) && (y < (te + THRESHY)))  {                    /* top edge */
X      if ((x >= le) && (x < (le + THRESHX)))                     /* left */
X      { corner = 1;
X        dx = le - x;
X        dy = te - y;
X      }
X      else
X      if ((x <= (le + ww)) && (x > (le + ww - THRESHX)))         /* right */
X      { corner = 2;
X        dx = (le+ww) - x;
X        dy = te - y;
X      }
X    }
X    else
X    if ((y <= (te + wh)) && (y > (te + wh - THRESHY)))  {        /* bottom edge */
X      if ((x >= le) && (x < (le + THRESHX)))                     /* left */
X      { corner = 3;
X        dx = le - x;
X        dy = (te+wh) - y;
X      }
X      else
X      if ((x <= (le + ww)) && (x > (le + ww - THRESHX)))         /* right */
X      { corner = 4;
X        dx = (le+ww) - x;
X        dy = (te+wh) - y;
X      }
X    }
X
X    if (corner != 0) {
X      LastX = x = s->MouseX;
X      LastY = y = s->MouseY;
X      li = &(s->LayerInfo);
X      LockLayers(li);
X      ox = xx = LastX + dx;
X      oy = yy = LastY + dy;
X      DoEm();
X      nomore = 1;
X      there = 1;
X    }
X    else nomore = 0;
X  }
X}
X
XMoveThatWindow()
X{
X  Forbid();
X  Disable();
X
X  FiniUpi();
X
X  fx = xx;
X  fy = yy;
X
X  xx = fx - ox; if (xx < 0) xx = xx * -1;
X  yy = fy - oy; if (yy < 0) yy = yy * -1;
X
X  if (corner == 1) {
X    if ((fx >= ox) && (fy >= oy)) {
X      while (xx > (le+ww-MINX)) xx = xx - 1;
X      while (yy > (te+wh-MINY)) yy = yy - 1;
X      SizeWindow(window, (-1L * xx), (-1L * yy));
X      MoveWindow(window, (1L * xx), (1L * yy));
X    }
X    else
X    if ((fx <= ox) && (fy <= oy)) {
X      while ((le-xx) < 0) xx = xx - 1;
X      while ((te-yy) < 0) yy = yy - 1;
X      MoveWindow(window, (-1L * xx), (-1L * yy));
X      SizeWindow(window, (1L * xx), (1L * yy));
X    }
X    else
X    if ((fx >= ox) && (fy <= oy)) {
X      while (xx > (le+ww-MINX)) xx = xx - 1;
X      while ((te-yy) < 0) yy = yy - 1;
X      SizeWindow(window, (-1L * xx), 0L);
X      MoveWindow(window, (1L * xx), (-1L * yy));
X      SizeWindow(window, 0L, (1L * yy));
X    }
X    else
X    if ((fx <= ox) && (fy >= oy)) {
X      while (yy > (te+wh-MINY)) yy = yy - 1;
X      while ((le-xx) < 0) xx = xx - 1;
X      SizeWindow(window, 0L, (-1L * yy));
X      MoveWindow(window, (-1L * xx), (1L * yy));
X      SizeWindow(window, (1L * xx), 0L);
X    }
X  }
X  else
X  if (corner == 2) {
X    if ((fx >= ox) && (fy >= oy)) {
X      while (yy > (te+wh-MINY)) yy = yy - 1;
X      while ((xx+le+ww) > s->Width) xx = xx - 1;
X      SizeWindow(window, (1L * xx), (-1L * yy));
X      MoveWindow(window, 0L, (1L * yy));
X    }
X    else
X    if ((fx <= ox) && (fy <= oy)) {
X      while ((te-yy) < 0) yy = yy - 1;
X      MoveWindow(window, 0L , (-1L * yy));
X      SizeWindow(window, (-1L * xx), (1L * yy));
X    }
X    else
X    if ((fx >= ox) && (fy <= oy)) {
X      while ((le+ww+xx) > s->Width) xx = xx - 1;
X      while ((te-yy) < 0) yy = yy - 1;
X      MoveWindow(window, 0L, (-1L * yy));
X      SizeWindow(window, (1L * xx), (1L * yy));
X    }
X    else
X    if ((fx <= ox) && (fy >= oy)) {
X      while (yy > (te+wh-MINY)) yy = yy - 1;
X      SizeWindow(window, (-1L * xx), (-1L * yy));
X      MoveWindow(window, 0L, (1L * yy));
X    }
X  }
X  else
X  if (corner == 3) {
X    if ((fx >= ox) && (fy >= oy)) {
X      while (xx > (le+ww-MINX)) xx = xx - 1;
X      while ((te+yy+wh) > s->Height) yy = yy - 1;
X      SizeWindow(window, (-1L * xx), (1L * yy));
X      MoveWindow(window, (1L * xx), 0L);
X    }
X    else
X    if ((fx <= ox) && (fy <= oy)) {
X      while ((le-xx) < 0) xx = xx - 1;
X      while ((te+wh-yy) < MINY) yy = yy - 1;
X      MoveWindow(window, (-1L * xx), 0L);
X      SizeWindow(window, (1L * xx), (-1L * yy));
X    }
X    else
X    if ((fx >= ox) && (fy <= oy)) {
X      while ((te+wh-yy) < MINY) yy = yy - 1;
X      while (xx > (le+ww-MINX)) xx = xx - 1;
X      SizeWindow(window, (-1L * xx), (-1L * yy));
X      MoveWindow(window, (1L * xx), 0L);
X    }
X    else
X    if ((fx <= ox) && (fy >= oy)) {
X      while ((le-xx) < 0) xx = xx - 1;
X      while ((te+yy+wh) > s->Height) yy = yy - 1;
X      MoveWindow(window, (-1L * xx), 0L);
X      SizeWindow(window, (1L * xx), (1L * yy));
X    }
X  }
X  else
X  if (corner == 4) {
X    if ((fx >= ox) && (fy >= oy)) {
X      while ((te+yy+wh) > s->Height) yy = yy - 1;
X      while ((xx+le+ww) > s->Width) xx = xx - 1;
X      SizeWindow(window, (1L * xx), (1L * yy));
X    }
X    else
X    if ((fx <= ox) && (fy <= oy)) {
X      while (xx > (le+ww-MINX)) xx = xx - 1;
X      while ((te+wh-yy) < MINY) yy = yy - 1;
X      SizeWindow(window, (-1L * xx), (-1L * yy));
X    }
X    else
X    if ((fx >= ox) && (fy <= oy)) {
X      while ((le+ww+xx) > s->Width) xx = xx - 1;
X      while ((te+wh-yy) < MINY) yy = yy - 1;
X      SizeWindow(window, (1L * xx), (-1L * yy));
X    }
X    else
X    if ((fx <= ox) && (fy >= oy)) {
X      while (xx > (le+ww-MINX)) xx = xx - 1;
X      while ((te+yy+wh) > s->Height) yy = yy - 1;
X      SizeWindow(window, (-1L * xx), (1L * yy));
X    }
X  }
X  Enable();
X  Permit();
X  nomore = corner = 0;
X}
X
Xbreakcheck()
X{
X   if (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
X      return (1);
X   else
X      return (0);
X}
X 
Xbreakreset()
X{
X   SetSignal(0L, SIGBREAKF_CTRL_C);
X}
X
XChk_Abort()
X{
X  return(0);
X}
X
XUninstall()
X{
X  if (!updating)
X    {
X    if (inputReq)
X      {
X      inputReq->io_Command = IND_REMHANDLER;
X      inputReq->io_Data = (APTR)&handlerStuff;
X      DoIO(inputReq);
X
X      CloseDevice(inputReq);
X      DeleteStdIO(inputReq);
X      }
X
X    if (inputPort)    DeletePort(inputPort);
X    if (signum > -1)  FreeSignal(signum);
X
X    if (tdevice == 0)
X      {
X      AbortIO(&Timer_Req.tr_node);
X      CloseDevice(&Timer_Req);
X      }
X
X    if (TimerPort)
X      DeletePort(TimerPort);
X
X    if (defPortPtr)
X      {
X      if (defPortPtr->mp.mp_Node.ln_Name)
X        RemPort(defPortPtr);
X      FreeMem(defPortPtr,(long)sizeof(struct defPort));
X      }
X    }
X
X  if (LayersBase)
X    CloseLibrary(LayersBase);
X  if (GfxBase)
X    CloseLibrary(GfxBase);
X  if (IntuitionBase)
X    CloseLibrary(IntuitionBase);
X  exit(0L);
X}
SHAR_EOF
echo "extracting MSizer.doc"
sed 's/^X//' << \SHAR_EOF > MSizer.doc
X============================================================================
XSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZE
X    MADSIZER                                           14th October 1989
XMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADS
X============================================================================
X
X    JUST WHEN YOU THOUGHT IT WAS SAFE...
X
X       Howdy Folks, Yep.. I know it's hard to believe but I have actually
X  come up with YAUP (Yet Another Useless Program). I was playing around on
X  a sun machine and noticed you could resize windows from ANY corner of the
X  window. HEY!! I thought to myself... <grin>
X
X  So here you are, simple hack, no big deal to it.
X
X  You can resize ANY window from ANY corner.
X
X  Use the CONTROL KEY and the LEFT MOUSE BUTTON,
X  point at a window corner and TADAAA!!!
X
X  neat, huh ? <grin> thrilled me to bits...
X
X  To exit the program, you can send it a CONTROL-C (using "break") or
X  press CONTROL-ESC-LEFTMOUSEBUTTON (in that order) simultaneously.
X
X  That's about it really. Jeeze. Sounded more exciting, hmmm ?
X  Yeah well, that's why it's a YAUP, it's not exciting enough!!
X
X  This program is totally PD, as is the source code.
X
X  Enjoy...
X
X             Khaled Mardam-Bey.
X
X============================================================================
SHAR_EOF
echo "extracting MSizer.uu"
sed 's/^X//' << \SHAR_EOF > MSizer.uu
X
Xbegin 644 MSizer
XM```#\P`````````#``````````(```?T0```64````$```/I```']$[Z%:Q..
XM50``,"T`"DC`+P`P+0`(2,`O`"\L@*Q.NA[\3^\`#$Y=3G5.50``,"T`"DC`"
XM+P`P+0`(2,`O`"\L@*Q.NA[&3^\`#$Y=3G5.50``,"T`"DC`+P`P+0`(2,`O3
XM`"\L@*Q.NA[V3^\`#$Y=3G5.50``+PQ.NA6H2.<`P&$(4(\H7TY=3G5.5?_R^
XM0FR`EBMM``C__$*M__A@``%*(&W__#MH``;_]"!M__P[:``(__)";?_V(&W_H
XM_`PH``8`!&<``(0@;?_\#"@``0`$9G8,;0"`__1M)#`L@"H(P``'L&W_]&86@
XM0FR`)@CL``&`ESM\``'_]D)L@"I@"$)L@"I";?_V#&T`8__T9A0Y;?_T@"H[0
XM?``!__8Y?``!@"9@)@QM`$7_]&8:2FR`)F<&.7P``H`F.6W_](`J.WP``?_V;
XM8`1";(`F(&W__`PH``(`!&9D#&T`Z/_T9AI";(`V2FR`)F<(".P``X"78`8(#
XM[``!@)=@0@QM`&C_]&8H#&P``H`F9@8([```@)=*;(`V9@X,;``!@"9F!CM\!
XM``'_]CE\``&`-DIL@#9G#$IL@"9G!@CL``*`ETIM__9G'$JM__AF"B!M__PK7
XM4``(8`H@;?_\(FW_^"*08`8K;?_\__@@;?_\*U#__$JM__QF`/ZR2FR`EF<4_
XM(&T`#"\H``0@;0`,+Q!.NAS<4$\@+0`(3EU.=4Y5__A"ITAZ`HQ.NAQB4$\I/
XM0(!(2JR`2&8(0J=.NA?Z6$]"ITAZ`H!.NAQ$4$\I0(!,2JR`3&8(0J=.NA?<:
XM6$]"ITAZ`G-.NAPF4$\I0(!02JR`4&8(0J=.NA>^6$](;(!<3KH;BEA/*4"!8
XM%$JL@11F(DAY``$``4AX`").NALX4$\I0($49@H_/``*3KH7BE1/8`8Y?``!A
XM@&1*;(!D9P1.NA($(&R!%$(H``D@;($4$7P`!``((&R!%$AH`!1.NAN&6$]!+
XM[(!<(FR!%"-(``HO+($43KH:(%A/2'C__TZZ&B)83RE`@%BPO/____]F!$ZZ]
XM$;1P`2(L@%CCH"E`@/I"ITZZ&O983RE`@/9"9TAL@`).NAD07$\I0(`X9@1.=
XMNA&&+RR`.$ZZ&>983RE`@#QF!$ZZ$7)![(#V*4B!#$'Z_2`I2($0&7P`-X$'[
XM0?H!>"E(@0A"IR\L@#Q"ITAZ`7%.NAKV3^\`$$J`9P1.NA$X(&R`/#%\``D`U
XM'$'L@/XB;(`\(T@`*"\L@#Q.NAI$6$]"ITAZ`4A.NAB,4$\I0(!`9@1.NA$"U
XM0J=(;("T2'@``4AZ`3-.NAJB3^\`$"E`@%1G!$ZZ$.(I;(!`@,(Y?``)@-!"C
XM+(#20BR`TR!L@$!P`!`H``]R`>&A*4&`W$ZZ`3Q(>``40J=.NAH"6$\O`$ZZ!
XM&L!03R`L@/J`K(#<+P!.NAK06$\O+(!`3KH:'%A/*T#__&<*2JW__&<$3KH`+
XM_DZZ$#I*0&<$3KH0;DZZ$$P(+```@)=G!$ZZ$%X(+``!@)=G#$ZZ`)Y";(`D2
XM0FR`(`@L``.`EV<$3KH(``@L``*`EV<62FR`(&8&3KH%9&`*2FR`)&<$3KH`+
XMPD)L@)9@`/]V3EU.=6EN='5I=&EO;BYL:6)R87)Y`&=R87!H:6-S+FQI8G)A8
XM<GD`;&%Y97)S+FQI8G)A<GD`4&]/<$AA3GD`:6YP=70N9&5V:6-E`%1I;5!O#
XM9&QE`'1I;65R+F1E=FEC90!.50``2FR`*&<J,"R`AM!L@'HY0("`,"R`B-!LW
XM@'PY0(""3KH`K"\L@+!.NAJ66$]";(`H3EU.=4Y5``!"K(#4*7P`#T)`@-A(4
XM;("T3KH98EA/3EU.=4Y5```@;("D,"@`$K!L@(9F#B!L@*0P*``0L&R`B&<\J
XM,"R`AM!L@'HY0("`,"R`B-!L@'PY0(""84`@;("D,"@`$M!L@'HY0("`(&R`>
XMI#`H`!#0;(!\.4"`@F$>.7P``8`H(&R`I#EH`!*`AB!L@*0Y:``0@(A.74YU<
XM3E4```QL``&`)&8$82Y@*`QL``*`)&8&3KH!(&`:#&P``X`D9@9.N@(48`P,/
XM;``$@"1F!$ZZ`PA.74YU3E4``$IL@(!L!E)L@(!@]$IL@()L!E)L@()@]#`LV
XM@)[0;("8(&R`I+!H``QO!E-L@)A@Z#`L@)S0;(":(&R`I+!H``YO!E-L@)I@L
XMZ#`L@)[0;("8D'P`*#(L@("R0&\0,"R`GM!L@)B0?``H.4"`@#`L@)S0;(":"
XMD'P`&#(L@(*R0&\0,"R`G-!L@)J0?``8.4"`@C\L@((_+("`3KKY6%A//RR`E
XM@C`L@)[0;("84T`_`$ZZ^6983S`L@)S0;(":4T`_`#`L@)[0;("84T`_`$ZZX
XM^4A83S`L@)S0;(":4T`_`#\L@(!.NODR6$\_+(""/RR`@$ZZ^2183TY=3G5.M
XM50``(&R`I#`L@("P:``,;P93;("`8.Q*;("`;`92;("`8/1*;("";`92;(""I
XM8/0@;("D,"R`@K!H``YO!E-L@()@[#`L@)S0;(":(&R`I+!H``YO!E-L@)I@<
XMZ#`L@)[0?``H,BR`@+)`;`PP+(">T'P`*#E`@(`P+("<T&R`FI!\`!@R+(""7
XMLD!O$#`L@)S0;(":D'P`&#E`@((_+("","R`@%-`/P!.NOA.6$\_+(""/RR`&
XMGDZZ^&183S`L@)S0;(":4T`_`#\L@)Y.NOA.6$\P+("<T&R`FE-`/P`P+("`#
XM4T`_`$ZZ^#183S\L@((P+("`4T`_`$ZZ^")83TY=3G5.50``2FR`@&P&4FR`(
XM@&#T(&R`I#`L@("P:``,;P93;("`8.Q*;("";`92;(""8/0@;("D,"R`@K!HH
XM``YO!E-L@()@[#`L@)[0;("8(&R`I+!H``QO!E-L@)A@Z#`L@)[0;("8D'P`@
XM*#(L@("R0&\0,"R`GM!L@)B0?``H.4"`@#`L@)S0?``8,BR`@K)`;`PP+("<0
XMT'P`&#E`@((P+(""4T`_`#\L@(!.NO=,6$\P+(""4T`_`#`L@)[0;("84T`_\
XM`$ZZ]U983S\L@)PP+(">T&R`F%-`/P!.NO=`6$\_+("</RR`@$ZZ]S)83S`LO
XM@()30#\`/RR`@$ZZ]R!83TY=3G5.50``2FR`@&P&4FR`@&#T(&R`I#`L@("P,
XM:``,;P93;("`8.Q*;("";`92;(""8/0@;("D,"R`@K!H``YO!E-L@()@[#`L$
XM@)[0?``H,BR`@+)`;`PP+(">T'P`*#E`@(`P+("<T'P`&#(L@(*R0&P,,"R`#
XMG-!\`!@Y0("","R`@E-`/P`P+("`4T`_`$ZZ]F983S\L@)PP+("`4T`_`$ZZA
XM]GA83S\L@)P_+(">3KKV:EA/,"R`@E-`/P`_+(">3KKV6%A/,"R`@E-`/P`P*
XM+("`4T`_`$ZZ]D)83TY=3G5.50``(&R`2"EH`#2`J$JL@*AG``)R(&R`J#EH%
XM``2`GB!L@*@Y:``&@)P@;("H.6@`"("8(&R`J#EH``J`FB!L@*@I:``N@*0@^
XM;("D.6@`#("@(&R`I#EH``Z`HB!L@*31_````%0I2("L2'@``2\L@*Q.NA3*Z
XM4$](>``"+RR`K$ZZ%,Q03TAX``(O+("L3KH4SE!/(&R`I#EH`!*`BCEH`!*`A
XMCCEH`!*`AB!L@*0Y:``0@(PY:``0@)`Y:``0@(A";(`D,"R`C+!L@)QM``"6C
XM,"R`G%!`,BR`C+)`;```AC`L@(JP;(">;3`P+(">T'P`$#(L@(JR0&P@.7P`$
XM`8`D,"R`GI!L@(HY0(!Z,"R`G)!L@(PY0(!\8$8P+(">T&R`F#(L@(JR0&XV_
XM,"R`GM!L@)B0?``0,BR`BK)`;R(Y?``"@"0P+(">T&R`F)!L@(HY0(!Z,"R`3
XMG)!L@(PY0(!\8```L#`L@)S0;(":,BR`C+)`;@``GC`L@)S0;(":44`R+(",H
XMLD!O``"*,"R`BK!L@)YM-#`L@)[0?``0,BR`BK)`;"0Y?``#@"0P+(">D&R`^
XMBCE`@'HP+("<T&R`FI!L@(PY0(!\8$HP+(">T&R`F#(L@(JR0&XZ,"R`GM!LX
XM@)B0?``0,BR`BK)`;R8Y?``$@"0P+(">T&R`F)!L@(HY0(!Z,"R`G-!L@)J0E
XM;(",.4"`?$IL@"1G:B!L@*0Y:``2@(HY:``2@(8@;("D.6@`$(",.6@`$("(D
XM(&R`I-'\````X"E(@+`O+("P3KH3?EA/,"R`AM!L@'HY0("`.4"`CC`L@(C05
XM;(!\.4"`@CE`@)!.NOER.7P``8`@.7P``8`H8`1";(`@3EU.=4Y5``!.NA&<+
XM3KH15DZZ^'PY;("`@)(Y;(""@)0P+("2D&R`CCE`@(!*;("`;`1$;("`,"R``
XME)!L@)`Y0(""2FR`@FP$1&R`@@QL``&`)&8``B8P+("2L&R`CFU^,"R`E+!LO
XM@)!M=#`L@)[0;("8D'P`*#(L@("R0&\&4VR`@&#F,"R`G-!L@)J0?``8,BR`-
XM@K)`;P93;(""8.8P+(""2,!$@"\`,"R`@$C`1(`O`"\L@*A.NA)Z3^\`##`L=
XM@()(P"\`,"R`@$C`+P`O+("H3KH23$_O``Q@``&:,"R`DK!L@(YN;C`L@)2P.
XM;("0;F0P+(">D&R`@$I`;`93;("`8.XP+("<D&R`@DI`;`93;(""8.XP+(""L
XM2,!$@"\`,"R`@$C`1(`O`"\L@*A.NA'P3^\`##`L@()(P"\`,"R`@$C`+P`O_
XM+("H3KH1YD_O``Q@``$B,"R`DK!L@(YM``"(,"R`E+!L@)!N?#`L@)[0;("8!
XMD'P`*#(L@("R0&\&4VR`@&#F,"R`G)!L@()*0&P&4VR`@F#N0J<P+("`2,!$0
XM@"\`+RR`J$ZZ$8A/[P`,,"R`@DC`1(`O`#`L@(!(P"\`+RR`J$ZZ$5A/[P`,'
XM,"R`@DC`+P!"IR\L@*A.NA%43^\`#&```)`P+("2L&R`CFX``(0P+("4L&R`^
XMD&UX,"R`G-!L@)J0?``8,BR`@K)`;P93;(""8.8P+(">D&R`@$I`;`93;("`F
XM8.XP+(""2,!$@"\`0J<O+("H3KH0]D_O``PP+(""2,`O`#`L@(!(P$2`+P`O&
XM+("H3KH0QD_O``Q"IS`L@(!(P"\`+RR`J$ZZ$,)/[P`,8``%>@QL``*`)&8`"
XM`<0P+("2L&R`CFUX,"R`E+!L@)!M;C`L@)S0;(":D'P`&#(L@(*R0&\&4VR`Q
XM@F#F,"R`@-!L@)[0;("8(&R`I+!H``QO!E-L@(!@Y#`L@()(P$2`+P`P+("`3
XM2,`O`"\L@*A.NA!,3^\`##`L@()(P"\`0J<O+("H3KH0)$_O``Q@``$^,"R`J
XMDK!L@(YN5C`L@)2P;("0;DPP+("<D&R`@DI`;`93;(""8.XP+(""2,!$@"\`P
XM0J<O+("H3KH/XD_O``PP+(""2,`O`#`L@(!(P$2`+P`O+("H3KH/UD_O``Q@U
XM``#>,"R`DK!L@(YM;C`L@)2P;("0;F0P+(">T&R`F-!L@(`@;("DL&@`#&\&2
XM4VR`@&#D,"R`G)!L@()*0&P&4VR`@F#N,"R`@DC`1(`O`$*G+RR`J$ZZ#V9/5
XM[P`,,"R`@DC`+P`P+("`2,`O`"\L@*A.N@]<3^\`#&!D,"R`DK!L@(YN6C`LC
XM@)2P;("0;5`P+("<T&R`FI!\`!@R+(""LD!O!E-L@()@YC`L@()(P$2`+P`P&
XM+("`2,!$@"\`+RR`J$ZZ#PQ/[P`,,"R`@DC`+P!"IR\L@*A.N@[D3^\`#&``\
XM`ZX,;``#@"1F``'T,"R`DK!L@(YM>#`L@)2P;("0;6XP+(">T&R`F)!\`"@R3
XM+("`LD!O!E-L@(!@YC`L@)S0;(""T&R`FB!L@*2P:``.;P93;(""8.0P+(""2
XM2,`O`#`L@(!(P$2`+P`O+("H3KH.@$_O``Q"IS`L@(!(P"\`+RR`J$ZZ#EA/M
XM[P`,8``!;C`L@)*P;(".;FXP+("4L&R`D&YD,"R`GI!L@(!*0&P&4VR`@&#NK
XM,"R`G-!L@)J0;(""L'P`&&P&4VR`@F#H0J<P+("`2,!$@"\`+RR`J$ZZ#?Y/P
XM[P`,,"R`@DC`1(`O`#`L@(!(P"\`+RR`J$ZZ#?)/[P`,8```]C`L@)*P;(".I
XM;70P+("4L&R`D&YJ,"R`G-!L@)J0;(""L'P`&&P&4VR`@F#H,"R`GM!L@)B0^
XM?``H,BR`@+)`;P93;("`8.8P+(""2,!$@"\`,"R`@$C`1(`O`"\L@*A.N@V(^
XM3^\`#$*G,"R`@$C`+P`O+("H3KH-8$_O``Q@=C`L@)*P;(".;FPP+("4L&R`<
XMD&UB,"R`GI!L@(!*0&P&4VR`@&#N,"R`G-!L@(+0;(":(&R`I+!H``YO!E-LT
XM@()@Y$*G,"R`@$C`1(`O`"\L@*A.N@T$3^\`##`L@()(P"\`,"R`@$C`+P`O#
XM+("H3KH,^D_O``Q@``&R#&P`!(`D9@`!J#`L@)*P;(".;6(P+("4L&R`D&U8V
XM,"R`G-!L@(+0;(":(&R`I+!H``YO!E-L@()@Y#`L@(#0;(">T&R`F"!L@*2P&
XM:``,;P93;("`8.0P+(""2,`O`#`L@(!(P"\`+RR`J$ZZ#(1/[P`,8``!/#`LR
XM@)*P;(".;F`P+("4L&R`D&Y6,"R`GM!L@)B0?``H,BR`@+)`;P93;("`8.8PF
XM+("<T&R`FI!L@(*P?``8;`93;(""8.@P+(""2,!$@"\`,"R`@$C`1(`O`"\LF
XM@*A.N@P:3^\`#&```-(P+("2L&R`CFU>,"R`E+!L@)!N5#`L@)[0;("8T&R`=
XM@"!L@*2P:``,;P93;("`8.0P+("<T&R`FI!L@(*P?``8;`93;(""8.@P+(""U
XM2,!$@"\`,"R`@$C`+P`O+("H3KH+L$_O``Q@:#`L@)*P;(".;EXP+("4L&R`6
XMD&U4,"R`GM!L@)B0?``H,BR`@+)`;P93;("`8.8P+("<T&R`@M!L@)H@;("D9
XML&@`#F\&4VR`@F#D,"R`@DC`+P`P+("`2,!$@"\`+RR`J$ZZ"T9/[P`,3KH)#
XMCDZZ"B9";(`D0FR`($Y=3G5.50``0J="ITZZ"CI03P@```QG!G`!3EU.=7``$
XM8/A.50``2'@0`$*G3KH*&E!/3EU.=4Y5``!P`$Y=3G5.50``2FR`9&8``+)*-
XMK(`\9S0@;(`\,7P`"@`<0>R`_B)L@#PC2``H+RR`/$ZZ"/Q83R\L@#Q.N@<J`
XM6$\O+(`\3KH(/%A/2JR`.&<*+RR`.$ZZ![A83PRL_____X!8;PHO+(!83KH):
XM'EA/2JR`5&842&R`M$ZZ!LA83TAL@+1.N@;B6$]*K(!`9PHO+(!`3KH'>EA/?
XM2JR!%&<B(&R!%$JH``IG"B\L@11.N@DZ6$](>``B+RR!%$ZZ"+A03TJL@$AGB
XM"B\L@$A.N@:F6$]*K(!,9PHO+(!,3KH&EEA/2JR`4&<*+RR`4$ZZ!H983T*GS
XM3KH$@EA/3EU.=6%P0^R`<D7L@'*UR68.,CP`/&L(=``BPE')__PI3X$8+'@`I
XM!"E.@1Q(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?S7TYS0_H`($ZN_F@I0($@W
XM9@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R87)Y`$GY``!__DYU3E4`K
XM`"\*2'D``0``,"R`9L'\``8O`$ZZ!XHI0($D4$]F%$*G2'D``0``3KH%K%!/R
XM+FR!&$YU(&R!)$)H``0@;($D,7P``0`0(&R!)#%\``$`"B!L@1@@+($8D*@`O
XM!%"`*4"!*"!L@2@@O$U!3EA"ITZZ!W0D0$JJ`*Q83V<N+RT`#"\M``@O"DZZD
XM`*XY?``!@2P@;($D`&B````$(&R!)`!H@```"D_O``Q@0DAJ`%Q.N@@B2&H`O
XM7$ZZ!V@I0($N(&R!+DJH`"103V<0(&R!+B)H`"0O$4ZZ!+I83R\L@2XO"DZZS
XM`F@I;($N@3)03TZZ!*X@;($D((!.N@2Z(&R!)"%```9G%DAX`^U(>@`J3KH$.
XMEB!L@20A0``,4$\O+($R/RR!-DZZZL)"9TZZ`M103R1?3EU.=2H`3E4``$CG*
XM##`D;0`0(&T`"$JH`*QG&"!M``@@*`"LY8`H`"!$("@`$.6`)D!@!"9L@&@0:
XM$TB`2,#0K0`,5(`Y0($X0J<P+($X2,`O`$ZZ!API0($Z4$]F"$S?##!.74YU7
XM$!-(@#H`/P4@2U*(+P@O+($Z3KH!?C`%2,`@0-'L@3I#^@%$$-EF_#\M``XO-
XM"B\L@3I.N@$Z(&R!.D(P4``Y?``!@38P!4C`T*R!.B9`4HLD2T_O`!00$TB`\
XM.@"P?``@9QBZ?``)9Q*Z?``,9PRZ?``-9P:Z?``*9@12BV#8#!,`(&UZ#!,`F
XM(F8N4HL@2U*+$!!(@#H`9QX@2E**$(6Z?``B9A`,$P`B9@12BV`&0BK__V`"E
XM8-9@."!+4HL0$$B`.@!G)KI\`"!G(+I\``EG&KI\``QG%+I\``UG#KI\``IG^
XM""!*4HH0A6#.($I2BD(02D5F`E.+4FR!-F``_UI"$D*G,"R!-E)`2,#E@"\`J
XM3KH$^BE`@3)03V8(0FR!-F``_MAZ`"9L@3I@)#`%2,#E@"!L@3(ABP@`($L@U
XM"$H89OR1P%.(,`A20$C`U\!21;IL@39MUC`%2,#E@"!L@3)"L`@`8`#^E"``%
XM,#Q__V`$,"\`#"!O``1*&&;\4T@B;P`(4T`0V5?(__QG`D(0("\`!$YU3.\#I
XM```$(`@R+P`,8`(0V5?)__QG!E)!8`)"&%')__Q.=4Y5``!(YPXP)&T`"$*GE
XM2'H`CDZZ!/HI0($^4$]F"$S?#'!.74YU(&T`#")H`"0O*0`$3KH%X"@`6$]GF
XM4DAZ`&T@1"\H`#9.N@6R)D!*@%!/9S1(>`/M+PM.N@(`+`!03V<D(`;E@"H`:
XM($4E:``(`*0E1@"<2'@#[4AZ`#A.N@'<)4``H%!/+P1.N@5^6$\O+($^3KH"A
XM'$*L@3Y83V"`:6-O;BYL:6)R87)Y`%=)3D1/5P`J`$Y5``!*K(%"9P8@;(%"V
XM3I`_+0`(3KH`"%1/3EU.=4Y5__PO!#`M``A(P"M`__Q*K($D9RAX`&`*/P1.T
XMN@#^5$]21+AL@&9M\#`L@&;!_``&+P`O+($D3KH#JE!/2JR!1F<&(&R!1DZ0[
XM2JR`;&<*+RR`;$ZZ`4A83TJL@4IG""!L@4H@K(%.2JR!4F<*+RR!4DZZ`6Y8K
XM3TJL@59G"B\L@59.N@%>6$]*K(%:9PHO+(%:3KH!3EA/2JR!7F<*+RR!7DZZ+
XM`3Y83RQX``0(+@`$`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR!+F8P2JR!R
XM.F<H,"R!.$C`+P`O+($Z3KH#`C`L@3920$C`Y8`O`"\L@3).N@+N3^\`$&`.[
XM3KH"V"\L@2Y.N@-86$\@+?_\+FR!&$YU*!].74YU3E4``$CG#B`X+0`(,`3!+
XM_``&)$#5[($D2D1M"KAL@&9L!$J29A`Y?``"@6)P_TS?!'!.74YU""H`!P`$P
XM9@@O$DZZ``I83T*2<`!@XB(O``0L;($@3N[_W"(O``0L;($@3N[_@BQL@2!.E
XM[O_*3.\`!@`$+&R!($[N_^(L;($@3N[_Q$[Z``(B+P`$+&R!($[N_Z8B;P`$8
XM+&R!'$[N_B!(YP$$3.\@@``,+&R!'$ZN_Y1,WR"`3G4B;P`$+&R!'$[N_CY.,
XM^@`"(F\`!"QL@1Q.[OYB3E4``$CG""!(>/__3KH`T"@`L+S_____6$]F"G``)
XM3-\$$$Y=3G5(>0`!``%(>``B3KH!8"1`2H!03V8,+P1.N@'&<`!83V#6)6T`;
XM"``*%6T`#P`)%7P`!``(0BH`#A5$``]"ITZZ`7`E0``02JT`"%A/9PHO"DZZ:
XM`%I83V`*2&H`%$ZZ`9Y83R`*8)).50``+PHD;0`(2JH`"F<(+PI.N@'&6$\5!
XM?`#_``@E?/____\`%'``$"H`#R\`3KH!2DAX`"(O"DZZ`2Q/[P`,)%].74YUZ
XM(F\`!"QL@1Q.[OZ>("\`!"QL@1Q.[OZV3E4``$AX`#`O+0`(3KH`&E!/3EU.+
XM=4Y5```O+0`(3KH`3%A/3EU.=4Y5```O"DJM``AF"'``)%].74YU2'D``0`!2
XM+RT`#$ZZ`&`D0$J`4$]F!'``8.`5?``%``@U;0`.`!(E;0`(``X@"F#*3E4`V
XM`"\*)&T`""`*9@8D7TY=3G45?`#_``@E?/____\`%"5\_____P`8<``P*@`2S
XM+P`O"DZZ`&903V#23OH``DSO``,`!"QL@1Q.[O\Z+&R!'$[N_XA(YP,`(F\`8
XM#"QL@1Q.KOXX3-\`P$YU+&R!'$[N_X(B;P`$+&R!'$[N_GI.^@`"(F\`!"QL(
XM@1Q.[O[:3OH``BQL@1Q.[O]\3OH``B)O``0@+P`(+&R!'$[N_RX@+P`$+&R!G
XM'$[N_K!.^@`"(&\`!"QL@1Q.[OZ,(&\`!""(6)!"J``$(4@`"$YU(&\`!$SOQ
XM`@$`""(O`!`L;($<3N[^1$[Z``(L;($<(F\`!"`O``A.[OW8+&R!'$[N_W8BC
XM;P`$+&R!'$[N_I@B;P`$+&R!'$[N_H8B;P`$+&R!'$[N_C).^@`"3.\``P`$&
XM+&R!'$[N_LXB;P`$("\`""QL@1Q.[O[4(F\`!"`O``@L;($<3N[^O"`O``0L"
XM;($<3N[^PB!O``0L;($<3N[^@")O``1,[P`#``@L;(!,3N[_"B)O``1,[P`#>
XM``@L;(!,3N[_$")O``0@+P`(+&R`3$[N_JHB;P`$("\`""QL@$Q.[OZD(F\`J
XM!"`O``@L;(!,3N[^GB)O``1,[P`#``@L;(!,3N[^O$SO`P``!"QL@3Y.[O^@`
XM(&\`!"QL@3Y.[O^F(&\`!"QL@3Y.[O^R(&\`!$SO``,`""QL@$A.[O]8(&\`]
XM!$SO``,`""QL@$A.[O[@(&\`!"QL@%!.[O^4(&\`!"QL@%!.[O^.```#[```!
XM``$````!```6(@````````/R```#Z@```!Q095!E5&4`2VAA;&5D($UA<F1AI
XM;2U"97D@,3DX.0``````````````````````````````````````````````U
XM`````````````````````````````?____]7:4YN67!/`````!0`````````E
X3```````#\@```^L````!```#\@``9
X``
Xend
Xsize 8344
SHAR_EOF
echo "End of archive 1 (of 1)"
# if you want to concatenate archives, remove anything after this line
exit