[comp.sources.amiga] v89i112: color - set screen colors

page%rishathra@Sun.COM (Bob Page) (05/03/89)

Submitted-by: sco!brianm@uunet.uu.net (Brian Moffet)
Posting-number: Volume 89, Issue 112
Archive-name: graphics/colors.1

A SetPalette clone.

[uuencoded executable included.  ..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:
#	color.c
#	color2.c
#	data.c
#	gadgets.c
#	main.c
#	lmkfile
#	setcolor.lnk
#	setcolor.uu
# This is archive 1 of a 1-part kit.
# This archive created: Wed May  3 00:01:01 1989
echo "extracting color.c"
sed 's/^X//' << \SHAR_EOF > color.c
X/*
X**	Brian D. Moffet
X**	June 13, 1988
X**
X**	Placed in the Public Domain, Please keep my name on it
X**	and provide source when you provide the binary.
X**
X**	uunet!sco!alar!brian
X*/
X
X#include <intuition/intuition.h>
X#include <graphics/rastport.h>
X
X
X#define	WINWIDTH	260
X#define	WINHEIGHT	100
X
Xextern char Version[];
Xextern char Author[];
X
Xint	pen = 0, bpen = 1;
Xstruct	Window *Set_Win = NULL;
Xstruct	NewWindow NW;
X
Xextern struct Screen *S;
Xextern int MaxBit;
Xextern USHORT colortable[];
X
XColor_Window( S )
Xstruct Screen *S;
X{
X	register int class;
X	register int code;
X	APTR	ptr;
X	struct IntuiMessage *mess;
X	int i;
X/*
X**	Many hard coded numbers are in here, they shouldn't
X**	be.  I should take the size of the window and scale that,
X**	But this was a quick hack...
X**
X**	The window allows mouse buttons and gadget movement.
X**	Instead of waiting for a gadget, when I get the first one
X**	I enter a fast loop to track the mouse.  I could get better
X**	color updating this way.
X*/
X
X	NW.LeftEdge = NW.TopEdge	=	0;
X	NW.Width			=	WINWIDTH;
X	NW.Height			=	WINHEIGHT;
X	NW.DetailPen = NW.BlockPen	=	-1;
X	NW.IDCMPFlags			=	MOUSEBUTTONS
X						| CLOSEWINDOW | GADGETDOWN
X						| GADGETUP;
X	NW.Flags			=	WINDOWCLOSE | WINDOWDRAG |
X						WINDOWDEPTH | SMART_REFRESH
X						| ACTIVATE | NOCAREREFRESH |
X						RMBTRAP;
X	NW.FirstGadget			=	NULL;
X	NW.CheckMark			=	NULL;
X	NW.Title			=	Version;
X	NW.Screen			=	S;
X	NW.Type				=	CUSTOMSCREEN;
X
X	Set_Win = (struct Window *) OpenWindow( &NW );
X
X	if( Set_Win == NULL ) return( -1 );
X
X/*
X**	Draw Boxes for individual colors.  This will handle to 32
X**	colors.
X*/
X
X
X	pen = 1 << MaxBit;
X	for( i = 0; i < pen; i++)
X	{
X		short sx, sy, w, h;
X		unsigned short color = colortable[i];
X
X                SetRGB4( &S->ViewPort, i, (color>>8)&0x000f,
X			(color>>4)&0x000f, (color)&0x000f );
X
X		sx = ((i % (pen/2)) + 1) * WINWIDTH / (pen/2+2);
X		sy = (i < (pen/2)) ? 54 : 63;
X		w = WINWIDTH / (pen/2 + 2) - 2;
X		h = 5;
X		Draw_Box( i, sx, sy, w, h );
X	}
X
X/*
X**	Draw the border
X*/
X
X	Move(Set_Win->RPort,  40, 19);
X	Draw(Set_Win->RPort, 250, 19);
X	Draw(Set_Win->RPort, 250, 52);
X	Draw(Set_Win->RPort,  40, 52);
X	Draw(Set_Win->RPort,  40, 19);
X
X/*
X**	Add Misc Gadgets
X*/
X
X	Add_Gadgets( Set_Win );
X/*
X**	Add the proportional gadgets for the individual colors.
X*/
X
X	Add_Prop( 0, 45, 21, 200, 10 );
X	Add_Prop( 1, 45, 31, 200, 10 );
X	Add_Prop( 2, 45, 41, 200, 10 );
X
X	pen = 0;
X	Set_Gadg_Color();
X
X/*	Process Mouse	*/
X
X	while( TRUE ){
X
X/*	Wait for message, the loop until no more movement	*/
X
X		Wait( 1 << Set_Win->UserPort->mp_SigBit );
X
X		while( mess = (struct IntuiMessage *)
X					GetMsg( Set_Win->UserPort ) ){
X
X			class = mess->Class;
X			code = mess->Code;
X			ptr = mess->IAddress;
X			ReplyMsg( mess );
X
X			switch( class ){
X				case CLOSEWINDOW:
X					CloseWindow( Set_Win );
X					return( 0 );
X				case MOUSEBUTTONS:
X					Work_Mouse( code );
X					break;
X				case GADGETDOWN:
X					Set_Color( pen );
X					break;
X				case GADGETUP:
X					Do_Gadget( ptr );
X					Set_Gadg_Color();
X				default:
X					break;
X			}
X		}
X	}
X}
X
X/*
X**	Draw a Box of the appropriate color
X*/
X
XDraw_Box( i, x, y, w, h )
Xint x, y, i, w, h;
X{
X	SetDrMd( Set_Win->RPort, COMPLEMENT );
X	SetAPen( Set_Win->RPort, i );
X	RectFill( Set_Win->RPort, x, y, x+w+2, y+h+2 );
X	SetDrMd( Set_Win->RPort, JAM1 );
X	SetAPen( Set_Win->RPort, i );
X	RectFill( Set_Win->RPort, x+1, y+1, x+w+1, y+h+1 );
X}
X
X/*
X**	Do the mouse tracking
X*/
X
X
XWork_Mouse( arg )
Xint arg;
X{
X	int penno;
X
X	if( Set_Win->MouseY < 52 )
X		return;
X
X	if( arg == SELECTDOWN || arg == MENUDOWN )
X		return;
X
X	if (arg == SELECTUP)
X		pen = ReadPixel( Set_Win->RPort, Set_Win->MouseX,
X						Set_Win->MouseY );
X	else
X		bpen = ReadPixel( Set_Win->RPort, Set_Win->MouseX,
X						Set_Win->MouseY );
X
X	Set_Gadg_Color();
X}
X
X/*
X *	The current color box.  The foreground color is
X *	color 1 and the background color is color 2
X */
X
Xstruct IntuiText CColor = {
X	1, 0,
X	JAM2,
X	0, 0,
X	NULL,
X	" -Current Color- ",
X	NULL,
X};
X
X
XSet_Gadg_Color()
X{
X	unsigned short c[3];
X	struct Gadget *G;
X	int i;
X
X	c[0] = colortable[ pen ] & 0x000f;
X	c[1] = ( colortable[ pen ] >> 4 ) & 0x000f;
X	c[2] = ( colortable[ pen ] >> 8 ) & 0x000f;
X
X	G = Set_Win->FirstGadget;
X
X	i = 0;
X
X	while( G != NULL ){
X
X		if( G->GadgetType == PROPGADGET ){
X
X			if( G->GadgetID == 'R' ) i = 2;
X			if( G->GadgetID == 'G' ) i = 1;
X			if( G->GadgetID == 'B' ) i = 0;
X			ModifyProp( G, Set_Win, NULL, FREEHORIZ,
X				(USHORT)((0x1110) * c[i]) , 0, 
X					(USHORT)(0x0fff), 0 );
X		}
X
X		G = G->NextGadget;
X
X	}
X
X	CColor.FrontPen = pen;
X	CColor.BackPen = bpen;
X
X	PrintIText( Set_Win->RPort, &CColor,
X		(WINWIDTH-IntuiTextLength(&CColor))/2, 75 );
X}
X
X
X/*
X**	This produces a line
X*/
X
Xextern USHORT  SData[];
Xchar *Color_Name[] = {"Red ", "Grn ", "Blu " };
X
Xstruct IntuiText IT = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	NULL,
X	NULL,
X};
X
X/*
X**	This adds the horizontally moving Proportional Gadgets.
X**	The HorizBody was found mostly by trial and error,
X**	As I found the Doc to be less than helpful.
X*/
X
XAdd_Prop( color, sx, sy, w, h )
Xint color;
Xint sx, sy, w, h;
X{
X
X	static struct Gadget G[3];
X	static struct PropInfo P[3];
X	static struct Image I[3];
X
X	P[color].Flags = FREEHORIZ;
X	P[color].HorizBody = (USHORT)(0x0fff);
X
X	I[color].Width = 4;
X	I[color].Height = 6;
X	I[color].Depth = 1;
X	I[color].ImageData = &SData[0];
X	I[color].PlanePick = 0x01;
X
X	G[color].LeftEdge = sx;
X	G[color].TopEdge  = sy;
X	G[color].Width    = w;
X	G[color].Height   = h;
X
X	G[color].Flags = GADGHBOX | GADGIMAGE;
X	G[color].Activation = GADGIMMEDIATE | RELVERIFY;
X	G[color].GadgetType = PROPGADGET;
X	G[color].GadgetRender = (APTR)&I[color];
X	G[color].SelectRender = NULL;
X	G[color].SpecialInfo = (APTR)&P[color];
X	G[color].GadgetText = NULL;
X	G[color].GadgetID = (int)(*Color_Name[color]);
X
X	IT.IText = (UBYTE *)Color_Name[color];
X	PrintIText(Set_Win->RPort, &IT, sx - IntuiTextLength(&IT), sy );
X
X	AddGadget( Set_Win, &G[color], -1 );
X	OnGadget( &G[color], Set_Win, NULL );
X
X}
SHAR_EOF
echo "extracting color2.c"
sed 's/^X//' << \SHAR_EOF > color2.c
X/*
X**	Brian D. Moffet
X**	June 13, 1988
X**
X**	Placed in the Public domain.
X**	Please allow me to retain credit for this, and please
X**	distribute source with the binaries.
X*/
X
X#include <intuition/intuition.h>
X#include <intuition/screens.h>
X
X
Xextern struct Screen *S;
Xextern int MaxBit;
Xextern USHORT colortable[];
X
Xextern struct Window *Set_Win;
X
X/*
X**	This sets the colors when the mouse is moved.
X*/
X
XSet_Color( pen )
Xint pen;
X{
X    register struct IntuiMessage *I;
X    struct Gadget *G;
X    USHORT *g, *b, *r, class;
X    unsigned int color;
X
X    G = Set_Win->FirstGadget;
X
X    while( G != NULL ){
X        switch( G->GadgetID ){
X            case 'R':
X		r = &( (struct PropInfo *)G->SpecialInfo )->HorizPot;
X                break;
X            case 'G':
X		g = &( (struct PropInfo *)G->SpecialInfo )->HorizPot;
X                break;
X            case 'B':
X		b = &( (struct PropInfo *)G->SpecialInfo )->HorizPot;
X            default:
X                break;
X         }
X         G = G->NextGadget;
X    }
X        
X/*
X**	Mouse Movement while Gadget is down loop
X*/
X
X    while( TRUE ){
X
X        I = (struct IntuiMessage *) GetMsg( Set_Win->UserPort );
X
X	class = I->Class;
X
X	if( I != NULL ) ReplyMsg( I );
X
X        color = ( ( ( *r ) >> 12 ) << 8 ) |
X                ( ( ( *g ) >> 12 ) << 4 ) |
X                ( ( ( *b ) >> 12 )      );
X
X        if( (color) != colortable[ pen ] ){
X
X                SetRGB4( &S->ViewPort, pen, (color>>8)&0x000f,
X			(color>>4)&0x000f, (color)&0x000f );
X                colortable[ pen ] = color;
X        }
X
X        if( class == GADGETUP ) return( 1 );
X    }
X
X}
SHAR_EOF
echo "extracting data.c"
sed 's/^X//' << \SHAR_EOF > data.c
X/*
X**	Brian D. Moffet
X**	June 13, 1988
X**
X**	Placed in the Public domain.
X**	Please allow me to retain credit for this, and please
X**	distribute source with the binaries.
X*/
X
X/*
X *	data for chip ram.
X */
X
Xunsigned short  SData[] =
X{
X	-1,
X	-1,
X	-1,
X	-1,
X	-1,
X	-1,
X};
X
SHAR_EOF
echo "extracting gadgets.c"
sed 's/^X//' << \SHAR_EOF > gadgets.c
X/*
X**	Brian D. Moffet
X**	June 13, 1988
X**
X**	Placed in the Public domain.
X**	Please allow me to retain credit for this, and please
X**	distribute source with the binaries.
X*/
X
X#include <intuition/intuition.h>
X#include <graphics/rastport.h>
X
X#define	BETWEEN	5
X
Xextern int pen, bpen;
Xextern int MaxBit;
Xextern unsigned short colortable[];
Xextern unsigned short oldcolortable[];
Xextern struct Window *Set_Win;
X
XDo_Gadget( addr )
Xregister struct Gadget *addr;
X{
X	switch( addr->GadgetID )
X	{
X		case 1:			/* Make Black and White */
X		{
X			unsigned short r, g, b;
X			int i;
X			for (i = 0; i < (1<<MaxBit); i++)
X			{
X				r = (colortable[i]>>8) & 0x0f;
X				g = (colortable[i]>>4) & 0x0f;
X				b = (colortable[i]>>0) & 0x0f;
X				make_bw(&r, &g, &b);
X				colortable[i] = ((r&15)<<8) | ((g&15)<<4)
X							| ((b&15));
X				SetRGB4(ViewPortAddress(Set_Win), i, r, g, b);
X			}
X			break;
X		}
X		case 2:		/* Smear of Colors */
X		{
X			int i;
X			if ( pen > bpen)
X				smear( colortable, bpen, pen );
X			else
X				smear( colortable, pen, bpen );
X
X			for (i = 0; i < (1<<MaxBit); i++)
X			{
X				unsigned short r, g, b;
X				r = (colortable[i]>>8) & 0x0f;
X				g = (colortable[i]>>4) & 0x0f;
X				b = (colortable[i]>>0) & 0x0f;
X				SetRGB4(ViewPortAddress(Set_Win), i, r, g, b);
X			}
X			break;
X		}
X		case 3:		/* Switch Colors */
X		{
X			int j, i;
X			unsigned short r, g, b;
X
X			j = colortable[pen];
X			colortable[pen] = colortable[bpen];
X			colortable[bpen] = j;
X			for (i = 0; i < (1<<MaxBit); i++)
X			{
X				r = (colortable[i]>>8) & 0x0f;
X				g = (colortable[i]>>4) & 0x0f;
X				b = (colortable[i]>>0) & 0x0f;
X				SetRGB4(ViewPortAddress(Set_Win), i, r, g, b);
X			}
X			break;
X		}
X		case 4:		/* Make the default palette good */
X		{
X			int i;
X			for (i = 0; i < (1<<MaxBit); i++)
X				oldcolortable[i] = colortable[i];
X			break;
X		}
X		case 5:		/* Copy Foreground to Background */
X		{
X			int i;
X			unsigned short r, g, b;
X
X			colortable[bpen] = colortable[pen];
X			for (i = 0; i < (1<<MaxBit); i++)
X			{
X				r = (colortable[i]>>8) & 0x0f;
X				g = (colortable[i]>>4) & 0x0f;
X				b = (colortable[i]>>0) & 0x0f;
X				SetRGB4(ViewPortAddress(Set_Win), i, r, g, b);
X			}
X			break;
X		}
X		case 6:		/* Make Palette Original */
X		{
X			int i;
X			unsigned short r, g, b;
X
X			for (i = 0; i < (1<<MaxBit); i++)
X			{
X				colortable[i] = oldcolortable[i];
X				r = (colortable[i]>>8) & 0x0f;
X				g = (colortable[i]>>4) & 0x0f;
X				b = (colortable[i]>>0) & 0x0f;
X				SetRGB4(ViewPortAddress(Set_Win), i, r, g, b);
X			}
X			break;
X		}
X		default:
X			break;
X	}
X}
X
X
XAdd_Gadgets( W )
Xstruct Window *W;
X{
X	Add_BW( W );
X	Add_Smear( W );
X	Add_Ex( W );
X	Add_Copy( W );
X	Add_OK( W );
X	Add_Undo( W );
X}
X
X
Xstruct IntuiText BWText = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	"B/W",
X	NULL,
X};
X
Xstruct Gadget BWGadget = {
X	NULL,
X	10, -9, 0, 8,
X	GADGHBOX | GRELBOTTOM,
X	RELVERIFY,
X	BOOLGADGET,
X	NULL,
X	NULL,
X	NULL,
X	0,
X	NULL,
X	1,
X	NULL
X};
X
X
XAdd_BW( W )
Xstruct Window *W;
X{
X	BWGadget.GadgetText = &BWText;
X	BWGadget.Width = IntuiTextLength(&BWText);
X	AddGadget( W, &BWGadget, -1 );
X	OnGadget( &BWGadget, W, NULL );
X}
X
Xstruct IntuiText SmearText = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	"Smear",
X	NULL,
X};
X
Xstruct Gadget SmearGadget = {
X	NULL,
X	30, -9, 0, 8,
X	GADGHBOX | GRELBOTTOM,
X	RELVERIFY,
X	BOOLGADGET,
X	NULL,
X	NULL,
X	NULL,
X	0,
X	NULL,
X	2,
X	NULL
X};
X
X
XAdd_Smear( W )
Xstruct Window *W;
X{
X	SmearGadget.GadgetText = &SmearText;
X	SmearGadget.Width = IntuiTextLength(&SmearText);
X	SmearGadget.LeftEdge = BWGadget.LeftEdge + BETWEEN +
X		IntuiTextLength(&BWText);
X	AddGadget( W, &SmearGadget, -1 );
X	OnGadget( &SmearGadget, W, NULL );
X}
X
Xstruct IntuiText ExText = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	"Exchange",
X	NULL,
X};
X
Xstruct Gadget ExGadget = {
X	NULL,
X	30, -9, 0, 8,
X	GADGHBOX | GRELBOTTOM,
X	RELVERIFY,
X	BOOLGADGET,
X	NULL,
X	NULL,
X	NULL,
X	0,
X	NULL,
X	3,
X	NULL
X};
X
X
XAdd_Ex( W )
Xstruct Window *W;
X{
X	ExGadget.GadgetText = &ExText;
X	ExGadget.Width = IntuiTextLength(&ExText);
X	ExGadget.LeftEdge = SmearGadget.LeftEdge + BETWEEN +
X		IntuiTextLength(&SmearText);
X	AddGadget( W, &ExGadget, -1 );
X	OnGadget( &ExGadget, W, NULL );
X}
X
X
Xstruct IntuiText CopyText = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	"Copy",
X	NULL,
X};
X
Xstruct Gadget CopyGadget = {
X	NULL,
X	30, -9, 0, 8,
X	GADGHBOX | GRELBOTTOM,
X	RELVERIFY,
X	BOOLGADGET,
X	NULL,
X	NULL,
X	NULL,
X	0,
X	NULL,
X	5,
X	NULL
X};
X
X
XAdd_Copy( W )
Xstruct Window *W;
X{
X	CopyGadget.GadgetText = &CopyText;
X	CopyGadget.Width = IntuiTextLength(&CopyText);
X	CopyGadget.LeftEdge = ExGadget.LeftEdge + BETWEEN +
X		IntuiTextLength(&ExText);
X	AddGadget( W, &CopyGadget, -1 );
X	OnGadget( &CopyGadget, W, NULL );
X}
X
Xstruct IntuiText OKText = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	"OK",
X	NULL,
X};
X
Xstruct Gadget OKGadget = {
X	NULL,
X	30, -9, 0, 8,
X	GADGHBOX | GRELBOTTOM,
X	RELVERIFY,
X	BOOLGADGET,
X	NULL,
X	NULL,
X	NULL,
X	0,
X	NULL,
X	4,
X	NULL
X};
X
X
XAdd_OK( W )
Xstruct Window *W;
X{
X	OKGadget.GadgetText = &OKText;
X	OKGadget.Width = IntuiTextLength(&OKText);
X	OKGadget.LeftEdge = CopyGadget.LeftEdge + BETWEEN +
X		IntuiTextLength(&CopyText);
X	AddGadget( W, &OKGadget, -1 );
X	OnGadget( &OKGadget, W, NULL );
X}
X
X
X
Xstruct IntuiText UndoText = {
X	1, 0,
X	COMPLEMENT,
X	0, 0,
X	NULL,
X	"Undo",
X	NULL,
X};
X
Xstruct Gadget UndoGadget = {
X	NULL,
X	30, -9, 0, 8,
X	GADGHBOX | GRELBOTTOM,
X	RELVERIFY,
X	BOOLGADGET,
X	NULL,
X	NULL,
X	NULL,
X	0,
X	NULL,
X	6,
X	NULL
X};
X
X
XAdd_Undo( W )
Xstruct Window *W;
X{
X	UndoGadget.GadgetText = &UndoText;
X	UndoGadget.Width = IntuiTextLength(&UndoText);
X	UndoGadget.LeftEdge = OKGadget.LeftEdge + BETWEEN +
X		IntuiTextLength(&OKText);
X	AddGadget( W, &UndoGadget, -1 );
X	OnGadget( &UndoGadget, W, NULL );
X}
SHAR_EOF
echo "extracting main.c"
sed 's/^X//' << \SHAR_EOF > main.c
X/*
X**	Brian D. Moffet
X**	June 13, 1988
X**
X**	Placed in the Public domain.
X**	Please allow me to retain credit for this, and please
X**	distribute source with the binaries.
X**
X*/
X
X#include <intuition/intuition.h>
X#include <graphics/gfxbase.h>
X#include <intuition/intuitionbase.h>
X#include <intuition/screens.h>
X
X#include <stdio.h>
X
X/*
X**	Easier to type IB than IntuitionBase
X*/
X
X#define IB IntuitionBase
X#define GB GfxBase
X
Xextern struct IntuitionBase *IntuitionBase;
Xstruct GfxBase *GfxBase=NULL;
X
Xstruct Screen *S;
Xint MaxBit;
XUSHORT oldcolortable[32];
XUSHORT colortable[32];
X
Xchar Version[]="Setcolor 1.1  PD";
Xchar Author[]="Brian Moffet sco!brianm";
X
Xchar *Usage[] = {
X	"setcolor [-num]",
X	"	-num: number of seconds to delay before attaching to the",
X	"	      active window.",
X	" Gadget Definitions:",
X	"	B/W: make the palette a grey scale palette",
X	"	Smear: blend from color 1 (letters in box) to color 2",
X	"	Exchange: exchange color 1 and color 2",
X	"	Copy: copy color 1 and color 2",
X	"	OK: Set the palette with your new colors",
X	"	Undo: reset colors from last OK or beginning",
X	NULL
X};
X
X/*
X**	setcolor [num]
X**	where num is the number of seconds befor program takes
X**	action and attaches itself to your window.
X*/
X
Xmain( argc, argv )
Xint argc;
Xchar *argv[];
X{
X	int i;
X	int del;
X
X	if (!strcmp( argv[1], "-h"))
X	{
X		puts( Version );
X		puts( Author );
X		for (i = 0; Usage[i]; i++)
X			puts( Usage[i] );
X		exit( 0 );
X	}
X
X	del  = atoi( argv[1] );
X	if( del <= 0 ) del = 0;
X
X	IB = (struct IB *)OpenLibrary( "intuition.library", 0 );
X	if( IB == NULL )
X	{
X		fprintf( stderr, "Error Opening IB\n" );
X		exit( 1 );
X	}
X	GB = (struct GB *)OpenLibrary( "graphics.library", 0 );
X	if( GB == NULL )
X	{
X		CloseLibrary( IB );
X		fprintf( stderr, "Error Opening GB\n" );
X		exit( 2 );
X	}
X
X/*
X**	Avoid the Delay( 0 ) bug
X**	Part of my background is to avoid system calls whenever
X**	Possible.  I would have never found the Delay( 0 ) problem..
X*/
X
X	if( del )	Delay( del * 50 );
X
X	S = IB->ActiveScreen;
X	MaxBit = S->BitMap.Depth;
X
X	for( i = 0; i < 32; i++ ) 
X		oldcolortable[i] = colortable[i] =
X			GetRGB4( S->ViewPort.ColorMap, i );
X
X	Color_Window( S );
X
X	i = 32;
X	while( --i >= 0 )
X	{
X		unsigned short color = oldcolortable[i];
X
X                SetRGB4( &S->ViewPort, i, (color>>8)&0x000f,
X			(color>>4)&0x000f, (color)&0x000f );
X	}
X
X	CloseLibrary( GB );
X	CloseLibrary( IB );
X}
X
X/*
X *	Make a color palette into a gray-scale palette.
X */
X
Xmake_bw( r, g, b )
Xunsigned short *r, *g, *b;
X{
X	unsigned short v;
X
X	if (*r == *g && *g == *b)
X		return;			/* only shades of grey. */
X
X	v = (*r * 298 + *g * 588 + *b * 114) / 1000;
X	*r = v;
X	*g = v;
X	*b = v;
X}
X
X/*
X *	get colors to go "smoothly" from color 1 to color 2
X */
X
Xsmear( c, begin, end )
Xunsigned short *c;
Xint begin, end;
X{
X	int d = (end - begin);
X	int rd, gd, bd;
X	unsigned short r, g, b;
X	int i;
X
X	r = (c[begin] >> 8) & 0x0f;
X	g = (c[begin] >> 4) & 0x0f;
X	b = (c[begin] >> 0) & 0x0f;
X
X	rd = ((c[end] >> 8) & 0x0f) - r;
X	gd = ((c[end] >> 4) & 0x0f) - g;
X	bd = ((c[end] >> 0) & 0x0f) - b;
X
X	for (i = 0; i < d; i++)
X	{
X		int j = (i + begin);
X
X		c[j] = ((r + (i * rd) / d) & 0x0f) << 8
X			| ((g + (i * gd) / d) & 0x0f) << 4
X			| ((b + (i * bd) / d) & 0x0f);
X		
X	}
X}
SHAR_EOF
echo "extracting lmkfile"
sed 's/^X//' << \SHAR_EOF > lmkfile
XCFLAGS=-b0 -cw -v
XOBJ=data.o color.o color2.o main.o gadgets.o
X
Xcolor: $(OBJ)
X	blink with setcolor.lnk
X
Xdata.o:	data.c
X	lc $(CFLAGS) -abd data
SHAR_EOF
echo "extracting setcolor.lnk"
sed 's/^X//' << \SHAR_EOF > setcolor.lnk
XFROM LIB:c.o+color.o+color2.o+main.o+data.o+gadgets.o
XTO setcolor
XLIB +LIB:lc.lib+LIB:amiga.lib
SHAR_EOF
echo "extracting setcolor.uu"
sed 's/^X//' << \SHAR_EOF > setcolor.uu
X
Xbegin 644 setcolor
XM```#\P`````````0``````````\```69```!V@```!D```!-````4````.<`K
XM``"(````(D````,```&@````:0```10````%````&@```#<````I```#Z0``W
XM!9DD2"0`2?D`````1_D```'@<@`@/````)Q@`B;!4<C__"QX``0I3@(8*4\"+
XM($*L`APF;@$4<``B/```,`!.KO[.*6L`F`(42JL`K&<``'`@#Y"O``0&@```-
XM`(`I0`'D80`!+B!K`*S1R-'((F@`$-/)T\D@`G(`$ADI20(HT(%2@$)G4H`"4
XM0/_^G\!5@$)W"``@`E.`U($?L@``(`!3@E'(__8?O``@(`!3@A^Q(``@`%'*K
XM__@B3R\)8```>"EK`#H!Y'!_4H#1K`'D80``PD'K`%Q.KOZ`0>L`7$ZN_HPIJ
XM0`(<+P`D0"`J`"1G$BQL!$`@0"(H```I00(43J[_@B(J`"!G&B0\```#[4ZN4
XM_^(I0`(D9PKEB"!`)V@`"`"D(&P"'"\(2&P!X"!H`"0I:``$`BA.N@!X3KH%7
XM.'``8`0@+P`$+P`@+`(,9P0@0$Z03KH4="QX``0B;`1`3J[^8DZZ`$Y*K`(<A
XM9QHB+`(D9P1.KO_<+'@`!$ZN_WPB;`(<3J[^AB`?+FP"($YU<&1@M$/Z`!!PE
XM`$ZN_=@I0`1`9^Q.=61O<RYL:6)R87)Y`$YU3G5(YP<P+B\`&"9O`!PL+P`@*
XM+P=.NA*06$\D0"`*9@1P_V`V""H``P`#9Q!(>``"0J<O!TZZ#2!/[P`,+P8OW
XM"R\J``1.N@\03^\`#"H`2JP!^&<$</]@`B`%3-\,X$YU``````````!P84Y5A
XM_\1(YR<P)F\`7"1O`&!^`'P`>@!P`!M\`"#_^W(`*T'_]G3_*T+_\D'M_]`;^
XM0/_Q&T#__"M!_^0K0?_H*TC_S$H39T)P`!`3<AA=06LXL'L0"&;V3OL0!``CI
XM8```(``@8```%@`K8```#``M8````GX!8`Y\`6`*>@%@!AM\``'__%*+8+H0+
XM$W(PL`%F!E*+&T'_^W`JL!-F$"!20^@`!"2)*U#_]E*+8`Y(;?_V+PM.N@HT+
XM4$_7P!`3<BZP`68F4HMP*K`39A`@4D/H``0DB2M0__)2BV`.2&W_\B\+3KH*=
XM!E!/U\`0$W)LL`%F"AM\``'_\5*+8`AR:+`!9@)2BQ`;<@`2`!M`__!P,%U`Q
XM:P`"5+)[``AF]$[[``0`8V```BH`<V```>@`6&```7X`>&```7@`<&```5X`_
XM;V```0P`=6```.(`9&````)*+?_Q9PP@4D/H``0DB2`08`H@4D/H``0DB2`09
XM*T#_[&P*<@%$K?_L*T'_Z$JM_^AG!'`M8`I*!F<$<"M@`G`@&T#_T'``$`8B8
XM+?_H@H!P`!`%@H!G"%*M_\Q2K?_D+RW_["\M_\Q.N@B64$\K0/_(("W_\DJ`E
XM:@9R`2M!__(@+?_((BW_\I*`2.T``O_$;RX@;?_,(DC3P6`"$MA3@&3Z<``00
XM+?_[(BW_Q"!M_\Q@`A#`4X%D^B`M__(K0/_(T:W_Y$'M_]`K2/_,2@=G``%0*
XM&WP`(/_[8``!1DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L8`#_-
XM8DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L2BW__&<2(&W_S!#\'
XM`#!R`2M!_^0K2/_,+P`O+?_,3KH'\%!/*T#_R&``_R@;?``P__L@+?_R2H!J0
XM!G`(*T#_\DHM__%G#"!20^@`!"2)(!!@"B!20^@`!"2)(!`K0/_L2BW__&<6?
XM(&W_S!#\`#`0_`!X<@(K0?_D*TC_S"\`+RW_S$ZZ!\Q03RM`_\AP6+`M__!F5
XM`/Z^2&W_T$ZZ!FA83V``_K`@4D/H``0DB2)0*TG_S&8(0?H`W"M(_\P@;?_,%
XM2AAF_%.(D>W_S"M(_^0@+?_R2H!K*K'`;R8K0/_D8"!P`2M`_^0@4D/H``0DS
XMB2`0&T#_T$(M_]%@!G``8```C"`M_^0B+?_VLH!L"'0`*T+_]F`$D:W_]DH'\
XM9S93K?_D;1AP`"!M_\P0&"\`*TC_S"!M`!!.D%A/8.)3K?_V;4AP`!`M__LO&
XM`"!M`!!.D%A/8.A3K?_V;1)P`!`M__LO`"!M`!!.D%A/8.A3K?_D;1AP`"!M#
XM_\P0&"\`*TC_S"!M`!!.D%A/8.(@"TS?#.1.74YU``!.5?_V2.<!,"9O`!XD'
XM;P`B*VT`$/_V'AI*!V<T<"6^`&8BL!)F!%**8!HO"TAM__8O"F$`^\Q/[P`,^
XM*T#_^F<$)$!@TG``$`<O`$Z36$]@QDS?#(!.74YU3E7_\$CG(3(F;P`L#*P`[
XM```@`Z9L``"&$!-R(+`!9PQR";`!9P9R"K`!9@12BV#H2A-G:"`L`Z;E@%*LM
XM`Z9![`.NT<`D2'`BL!-F)E*+)(M*$V<*<"*P$V<$4HM@\DH39@Q(>``!3KH.4
XM>%A/8)Y"&V":)(M*$V<8$!-R(+`!9Q!R";`!9PIR"K`!9P12BV#D2A-F`F`&=
XM0AM@`/]R2JP#IF8&(&P"'&`$0>P#KBE(`ZI*K`.F9GQ!^@$D0^P#;"+8(M@B8
XMV"+8,I`B;`(<(&D`)$AX`"@O*``$2&P#;$ZZ!'Y/[P`,0>P#;"(()#P```/N^
XM+&P$0$ZN_^(I0`(P*4`".'($*4$"-"E``D`I00(\Y8"3R2QX``0K0/_P3J[^=
XMVB!M__`B0"-H``@`I'X`*T#_]&`J+&P$0$ZN_\HI0`(P3J[_Q"E``CA!^@"F4
XM(@@D/````^U.KO_B*4`"0'X$(`<`0(`!@:P"+"`'`$"``H&L`C0`K```@`,"$
XM/$JL`(!G!'``8`8@/```@``N`$*L`#0@!P!```$I0``P<`$I0`!6(`<`0``"Y
XM*4``4G`"*4``>"`'`$``@"E``'1!^@KR*4@"$"\L`ZHO+`.F3KH`,D*73KH([
XM<$SM3(3_W$Y=3G5C;VXZ,3`O,3`O,S(P+S@P+P`J`````````````````$[YH
XM`````````````````````````````````````'!A+PLF;P`(2JL`%&<,""L`7
XM`P`;9@1P`&`V+RP!W$ZZ!VY83R=```0G0``02H!F"G`,*4`$/'#_8!8G;`'<`
XM`!1P\\&K`!AP`"=```PG0``()E].=0``````````````````3E7_[$CG+Q`N_
XM+P`T)F\`."@'<#'`JP`89P9P_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`%&8`*
XM`(0(*P`"`!MF>G``)T``#'+_OH%G``)"+PM.NO].6$]*@&<,".L`!0`;</]@'
XM``(J".L``0`;2@9G#B`K`!0B`$2!)T$`#&`(("L`%"=```Q3JP`,;18@:P`$0
XM0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`+PLO`6$`_U)03R(`(`%@``'6""L`@
XM`@`;9UAP_[Z`9@9P`&```<(@!QM`__]*!F<B<@J^@68<<@(O`4AZ`;(O*P`<M
XM*T'_\$ZZ]]1/[P`,*@!@&G(!+P%(;?__+RL`'"M!__!.NO>X3^\`#"H`?O]@+
XM``#@".L``0`;2@9G4G#_OH!G3%2K``QR"KZ!9B8@:P`$0^@``2=)``00O``-R
XM(BL`#$J!:PHO"R\`80#^KE!/4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,2H%KL
XM``$<?O\@*P`$D*L`$"M`__!G<@@K``8`&F=22'@``D*G+RL`'$ZZ!(!/[P`,J
XM*T#_[$H&9SA3K?_L;3)"IR\M_^PO*P`<3KH$8$AX``%(;?_]+RL`'$ZZ`Y!/S
XM[P`82JP!^&8*$"W__7(:L`%GR"\M__`O*P`0+RL`'$ZZ]MA/[P`,*@!@`GH`<
XM</^Z@&8(".L`!0`;8`RZK?_P9P8(ZP`$`!M*!F<.(BL`%"0!1((G0@`,8!@(Q
XM*P`"`!MG"'(`)T$`#&`((BL`%"=!``P@:P`0)T@`!+Z`9RY3JP`,;18@:P`$7
XM0^@``2=)``0@!Q"`<@`2`&`2(`=R`!(`+PLO`6$`_9!03R(`<##`JP`89P1P/
XM_V`,</^X@&8$<`!@`B`$3-\(]$Y=3G4-"@````!(YR`P)F\`$"1+2A)G)'``(
XM$!)![`#9"#```0@`9PIR`!(`=""2@F`$<@`2`!2!4HI@V"`+3-\,!$YU`````
XM``````!P84Y5__A(YP,P)F\`("1O`"0N+P`H($I*&&;\4XB1RBP(($M*&&;\%
XM4XB1RR`((DO3P"M)__B\AV,"+`<@!B!*8`(2V%.`9/H@;?_X0C!H`"`+3-\,R
XMP$Y=3G4@;P`$(F\`"!(8LAEF"$H!9O9P`$YU;@1P_TYU<`%.=2\+)F\`"'``V
XM$!-![`#9"#```P@`9P12BV#L(`LF7TYU("\`""!O``1.5?_T(D]R"DZZ!A0&(
XM00`P$L%*@&;P(`D0X;_)9OI"$)"/3EU.=0``("\`""!O``1.5?_T(D\B``)!;
XM``<&00`P$L'FB&;P(`D0X;_)9OI"$)"/3EU.=0``,#$R,S0U-C<X.6%B8V1ER
XM9B`O``@@;P`$0^\`!#(``D$`#Q+[$-SHB&;R(`DB#UB!$.&RB6;Z0A"0@4YUP
XM(&\`!")(<@!P`"\"#!``*V<&#!``+68"4D@0&`0``#!M$@P```EN#"0!Y8'26
XM@M*!TH!@Y@P1`"UF`D2!)!\@"%.`(&\`"""!D(E.=4Y5_^A(YP$R+B\`-$J'$
XM;@9P_V```-)P"+Z`9`(N`"`'5H`N``)'__PD;0`((&T`"-''WZP`%$/L`!`F8
XM42M(__`K2?_T(`MG``"0($L@*P`$T<`K2/_L(FW_\+?)8Q`DBR5'``0L;?_T!
XM+(IP`&!XM\EF&BQ3)(X@*P`$(@#2AR5!``0L;?_T+(IP`&!:M<AD")^L`!1P'
XM_V!.M<AF+$J39PX@4[/(8PB?K``4</]@.-^K``1*DV<.L]-F"B`I``31JP`$P
XM)I%P`&`>*TO_]"MM_^S_Z"938`#_;B!M__0@BD*2)4<`!'``3-],@$Y=3G4`!
XM`````````'!A2.<',"XO`!@F;P`<+"\`("\'3KH%_%A/)$`@"F8$</]@'B\&8
XM+PLO*@`$3KH#7$_O``PJ`$JL`?AG!'#_8`(@!4S?#.!.=0``2.<!$"9O``Q^[
XM`!X;2H=G,E.L`$9M%B!L`#Y#Z``!*4D`/B`'$(!R`!(`8-P@!W(`$@!(;``ZA
XM+P%.NOHF4$\B`&#&4ZP`1FT6(&P`/D/H``$I20`^<`H0@'(`$@!@$$AL`#I(A
XM>``*3KKY^%!/(@`@`4S?"(!.=0``2.</$"XO`!@L+P`<*B\`("\'3KH%/%A/L
XM)D`@"V8$</]@'B\%+P8O*P`$3KH"($_O``PH`$JL`?AG!'#_8`(@!$S?"/!.+
XM=0``````````<&%(YP,P+B\`%$J';@9P`&```*1P"+Z`9`(N`"`'5H`N``)'0
XM__Q%[``0)E(@"V=`("L`!+"';3*PAV8,(%,DB)^L`!0@"V!N("L`!)"'<@BP;
XM@646($O1QR2()$@DDR5```2?K``4(`M@3"1+)E-@O"`'(BP`A-"!4X!.N@**B
XM(BP`A$ZZ`F(L`%"&(`96@"P``D;__"\&3KH&"EA/)D`@"V<2+P8O"TZZ_5(N=
XMAV$`_U103V`"<`!,WPS`3G4``````````'!A+P<N+P`(+P=.NO\R6$\N'TYUX
XM``!(YP$@+B\`#%*L!#@@;`0T4Z@`#&T6(F@`!$7I``$A2@`$(`<2@'(`$@!@*
XM$B`'<@`2`"\(+P%.NOB(4$\B`$S?!(!.=4Y5``!(YP`P)F\`$"1O`!1"K`0X7
XM*4L$-$AM`!`O"DAZ_YQ.NO6$+HM(>/__3KKX3B`L!#A,[0P`__A.74YU``!('
XMYP,0+B\`$$?L`!@@"V<T""L``@`;9B@(*P`!`!MG("`K``20JP`0+`!*AF<2[
XM+P8O*P`0+RL`'$ZZ\,9/[P`,)E-@R"\'3KH$6%A/3-\(P$YU``!(YS<0+B\`(
XM'"9O`"`L+P`D2JP"$&<$3KH#@$*L`?@B!R0+)@8L;`1`3J[_T"H`</^Z@&8.G
XM3J[_?"E``?AP!2E`!#P@!4S?".Q.=0``2.<_`"XO`!PL+P`@*B\`)$JL`A!G,
XM!$ZZ`S1"K`'X(`53@"(')`8F`"QL!$!.KO^^*`!P_[B`9@Y.KO]\*4`!^'`62
XM*4`$/"`%#(`````"9Q8,@`````%G"$J`9A@@!F`4(`30AF`.(@=T`'8`+&P$.
XM0$ZN_[Y,WP#\3G4``$CG-Q`N+P`<)F\`("PO`"1*K`(09P1.N@*X0JP!^"('+
XM)`LF!BQL!$!.KO_6*@!P_[J`9@Y.KO]\*4`!^'`%*4`$/"`%3-\([$YU```O\
XM!RXO``A*K`(09P1.N@)V(@<L;`1`3J[_W'``+A].=4CG,``D`"8!2$)(0\3!_
XMQL#`P=1#2$)"0M""3-\`#$YU2H!J```>1(!*@6H```Q$@6$``"!$@4YU80``^
XM&$2`1(%.=4J!:@``#$2!80``!D2`3G4O`DA!-`%F```B2$!(04A"-`!G```&+
XMA,$P`DA`-`"$P3`"2$(R`B0?3G4O`W80#$$`@&0```;AF5%##$$(`&0```;I3
XMF5E##$$@`&0```;EF55#2D%K```&XYE30S0`YJA(0D)"YJI(0X#!-@`P`C0#[
XM2$'$P9""9```"%-#T(%D_G(`,@-(0^>X2$#!028?)!].=4Y5_YY(YS,R?@`@M
XM;`(H'BC__W!/OH!O`BX`(`=#[?^O8`(2V%.`9/I"-7BOD\DL>``$3J[^VB9`4
XM2JL`K&=,("L`K.6`)$`L*@`X2H9F!"PK`*!*AF<T(@9!^@"R)`AV"RQL!$!.J
XMKO_0($=2AR`(&[P`"@BO(@9![?^O)`@F!RQL!$!.KO_0</]@3DJL!#!F$D/Z]
XM`(9P`"QX``1.KOW8*4`$,$'M_Z\I2`"H2'@`/$AX`/IP`"\`+P!(;`#$2&P`Q
XML$AL`)Q"ITZZ`0A/[P`@4X!G!'#_8`)P`$S?3,Q.74YU*BH@57-E<B!!8F]R_
XM="!297%U97-T960@*BH``$-/3E1)3E5%``!!0D]25``J*BH@0G)E86LZ(`!I=
XM;G1U:71I;VXN;&EB<F%R>0```````````````````"\'+B\`"'``*4`!^$J';
XM:R*^K```;!P@!^>`0>P"+$JP"`!G#B`'YX!![`(LT<`@"&`(<`DI0`0\<``NI
XM'TYU``````````!P84CG`0)P`"(\```P`"QX``1.KO[.+@`"AP``,`!*AV8$U
XM<`!@($JL`A!G&"!L`A!.D$J`9@1P`&`,2'@`%$ZZ`'983R`'3-]`@$YU8;1.T
XM=0``2.<P,BQL!#`@;P`8(F\`'"1O`"`F;P`D("\`*"(O`"PD+P`P)B\`-$ZN.
XM_J1,WTP,3G4``$Y5__PO"R9O`!`@"V8$<`!@%B\+3KKW#B9`2&W__"\+3KKWV
XMOB`M__PF;?_X3EU.=4CG!P`N+P`0("P``%.`+`!*1FLP(`9(P.>`0>P"+"HPA
XM"`!*!6<:"`4``F84(`9(P.>`0>P"+"\P"`1.NOR,6$]31F#,+P=.NNNF6$],Z
XMWP#@3G4``$CG."(L;`0P3.\'```83.\`'P`D3J[_9$S?1!Q.=0``2.<`,B9L/
XM!$0@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B1R"E(!$@I2`1$3-],`$YU2.<!G
XM,BXO`!1P#-Z`(`=R`"QX``1.KO\Z)D`@"V8$<`!@.B='``A%[`1$(&H`!"=(D
XM``21R":(2I)F`B2+2JH`!&<&(FH`!"*+)4L`!$JL``1F!"E+``1!ZP`,(`A,<
XMWTR`3G4``````````````````````^P````!````!0``"&X````"````"P``F
XM``P````&`````````_(```/I```!VDY5_]Y(YS\0)F\`1G``,\````$$,\``"
XM``$",_P!!````08S_`!D```!"'#_$\````$+$\````$*(_P```)H```!#"/\[
XM``,0#@```1"1R"/(```!%"/(```!&"/\````!````1PCRP```2`S_``/```!=
XM,$AY```!`DZZ!HY83R/`````"&8&</]@``*`<`$B.0````3CH"/``````'H`/
XMNKD`````;```V"`%T(!!^0```$C1P#`00>L`+'(`,@#@@70/PH)V`#8`Z(/&`
XM@G@`.`#(@B\$+P,O`2\%+P@[0/_B3KH&7$_O`!0@.0`````B`$J!:@)2@>*!\
XM(`4O00`<3KH%ZE*!(#P```$$3KH&4"(O`!PD`52"(@).N@70.T#_ZKJO`!QLX
XM!'(V8`)R/R0Y`````&H"4H+B@E2"(#P```$$.T'_Z"("3KH%HE6`<@4T+?_J#
XM2,(V+?_H2,,[0/_F2,`[0?_D2,$O`2\`+P,O`B\%80`!HD_O`!12A6``_R)(;
XM>``32'@`*"!Y````""\H`#).N@5D2'@`$TAX`/H@>0````@O*``R3KH%2$AX:
XM`#1(>`#Z('D````(+R@`,DZZ!3)(>``T2'@`*"!Y````""\H`#).N@4<2'@`&
XM$TAX`"@@>0````@O*``R3KH%!BZY````"$ZZ!1I(>``*2'@`R$AX`!5(>``MB
XM0J=A``-"3^\`4$AX``I(>`#(2'@`'TAX`"U(>``!80`#)DAX``I(>`#(2'@`8
XM*4AX`"U(>``"80`##D*Y`````&$``?I/[P`H('D````((&@`5G``$"@`#W(!P
XMX:$O`4ZZ!,Q83R!Y````""\H`%9.N@2D6$\K0/_P2H!GS"!`+B@`%'P`/"@`7
XM&"MH`!S_]"\`3KH$3%A/(`=R(`1!``AKQ+"[$`AF]$[[$`8```!`8```0@``[
XM`"!@```J````"&```!@```(`8````B\Y````"$ZZ!')P`&`L+P9A``#F6$]@[
XM@B\Y`````$ZZ!&!83V``_W0O+?_T3KH$!&$``4!83V``_V),[0C\_\).74YUE
XM3E4``$CG/P`N+P`@+"\`)"HO`"@H+P`L2'@``B!Y````""\H`#).N@/\+H<@9
XM>0````@O*``R3KH#L"`$T(94@"(M`!C2A52!+H$O`"\%+P8@>0````@O*``R7
XM3KH#L$*7('D````(+R@`,DZZ`[@NAR!Y````""\H`#).N@-L(`92@"(%4H$DM
XM!M2$4H(F!=:M`!A2@RZ#+P(O`2\`('D````(+R@`,DZZ`V1,[0#\_^A.74YUQ
XM3E7__"\'+B\`$"!Y````"#`H``QR-+!!;5IR:+Z!9U1R:;Z!9TYR=-*!OH%FE
XM(#(H``Y(P4C`+P`O`2\H`#).N@-:3^\`#"/``````&`B,"@`#DC`,B@`#$C!R
XM+P$O`"\H`#).N@,V3^\`#"/`````!&$```@N'TY=3G5.5?_R+P<@.0````#0Q
XM@$'Y````2")(T\!R#\)1.T'_^B)(T\`R$>A)`D$`#SM!__S1P#`0X$@"0``/,
XM.T#__B!Y````""MH`#[_]GX`2JW_]F=D<`,@;?_VL&@`$&9.,"@`)G)2L$%F^
XM`GX"<D>P068"?@%R0K!!9@)^`"`'T(`R-0CZPOP1$'``,`%R`"\!2'@/_R\!>
XM+P!(>``"+P$O.0````@O"$ZZ`EQ/[P`@(&W_]BM0__9@EB`Y`````!/`````@
XM'B`Y````!!/`````'TAY````'DZZ`A0B/````022@$J!:@)2@>*!2'@`2R\!'
XM2'D````>('D````(+R@`,DZZ`>0N+?_N3EU.=4Y5__A(YS\P+B\`,"PO`#0JJ
XM+P`X*"\`/"`'<A9.N@'R0?D```"$(DC3P#*\``(B2-/`,WP/_P`&+T``("`'%
XM<A1.N@'.0_D```#&)$G5P#5\``0`!"1)U<`U?``&``8D2=7`-7P``0`()$G57
XMP"5\```````*)$G5P!5\``$`#B]``"0@!W(L3KH!B$7Y`````"9*U\`B!C=!;
XM``0F2M?`)`4W0@`&)DK7P"8$-T,`""9*U\`B+0`8-T$`"B9*U\`W?``%``PF'
XM2M?`<@,W00`.)DK7P#=!`!`F2M?`(B\`)-/!)TD`$B)*T\"7RR-+`!8B2M/`A
XM(B\`(-'!(T@`(B!*T<`A2P`:U<`@!^6`0?D```!$(DC3P"91$A-(@4C!-4$`1
XM)M'`(]````!<2'D```!03KH`L"(&DH`NA2\!2'D```!0('D````(+R@`,DZZO
XM`(X@!W(L3KH`O$'Y`````-'`2'C__R\(+SD````(3KH`7"`'<BQ.N@"<0?D`.
XM````T<!"ER\Y````""\(3KH`@$SM#/S_V$Y=3G4``$[Y````*$[Y```26$[Y&
XM````'$[Y`````$[Y````E$[Y`````$[Y````3$[Y```#Q$[Y`````$[Y````T
XM%$[Y````6$[Y````8$[Y````D$[Y`````$[Y````K$[Y````.$[Y```5I$[YQ
XM````'$[Y`````$[Y````,$[Y```2.$[Y````>````^P````#````````!T8`I
XM``=>```&[````"H````"```&S@``!K(```:.```&B```!G8```9P```&6```!
XM!3@```4R```%$@``!0P```4&```%````!/H```3@```$@@``!$H```0T```$>
XM$````]0```.R```#A@```W8```-F```#0@```S(```+J```"T@```FP```)0!
XM```"0@```>X```'@```!R@```;0```&>```!B````2X```#J````H````)@`-
XM``"`````$P````,```;$```&I```!=@```62```%;@```'0```!N````9@``Y
XM`&````!6````4````$@````^````-````"X````F````'@```!8````0````8
XM`0````0```=2`````0````8```!<`````P````<```12````K@```)`````!@
XM````"```!;H````"````"0``!P0```<0`````P````T```;F```''```!S0`.
XM```'````#@``!V0```<B```&_@``!SH```;R```&^```!T`````&````#P```
XM!U@```<6```'*```!RX```=,```'"@````````/R```#Z@```!D`````````_
XM`0`````@+4-U<G)E;G0@0V]L;W(M(``!``$````````````````,`````%)EB
XM9"```$=R;B```$)L=2```````#(````X````/@$``@``````````````````Y
XM```````#[`````0````"````3````$@```!$````*@````````/R```#ZP``:
XM`$T```/R```#Z0```%!.5?_F2.<W$"XO`#H@>0````@K:``^__A*K?_X9U@@)
XM;?_X,"@`)@Q``$)G,`Q``$=G&`Q``%)F-"!M__@@:``B0^@``BM)_^Q@(B!M:
XM__@@:``B0^@``BM)__1@$"!M__@@:``B0^@``BM)__`@;?_X*U#_^&"B('D`T
XM```(+R@`5DZZ`+!83R9`+"L`%"`+9P@O"TZZ`)A83W``(&W_[#`0X(#H@.&`1
XM<@`@;?_T,A#@@>B!Z8&`@7(`(&W_\#(0X('H@8"!*@`@!]"`0?D```!(T<!P(
XM`#`0L(5G0"!Y`````-#\`"P@!>"(<@_`@20%Z(K$@2(%=@_"@R\!+P(O`"\'3
XM+PA.N@`T3^\`%"`'T(!!^0```$C1P"`%,(!P0+Q`9@#_5G`!3-\([$Y=3G5.7
XM^0```"A.^0```!1.^0```#AP80```^P````"`````@```'@````.`````P``(
XM``<```#<```!$````,P````"````#0```2X```$T`````0````X```$Z````]
XM`````_(```/I````YTY5_^I(YS<P)F\`/DAY```!U"\K``1.N@,Z4$]*@&9$)
XM2'D````$3KH#/$AY````%4ZZ`S)03WX`(`?E@$'Y```!J")(T\!*D6<2(`?E(
XM@-'`+Q!.N@,06$]2AV#<0J=.N@,B6$\O*P`$3KH#$EA/+`!*AFX"?`!"ITAY8
XM```!V$ZZ`NI03R/````$,$J`9AQ(>0```>I(>0```%Q.N@*\2'@``4ZZ`MY/6
XM[P`,0J=(>0```?Q.N@*V4$\CP`````!F)B\Y```$,$ZZ`LQ(>0```@Y(>0``T
XM`%Q.N@*`2'@``DZZ`J)/[P`02H9G$"`&<C).N@*>+P!.N@*`6$\@>0``!#`CK
XMZ``X`````'``('D`````$"@`O2/`````!'X`<""^@&P^(`?0@$'Y````"-'`%
XM0_D```!(T\`O!R1Y`````"\J`#`O2``H+TD`+$ZZ`A)03R!O`"0P@"!O`"`PS
XM@%*'8+PO.0````!.N@((6$]^(%.';40@!]"`0?D````(T<`Z$"!Y`````-#\X
XM`"QP`#`%X(!R#\"!=``T!>B"Q(%V`#8%QH$O`R\"+P`O!R\(3KH!VD_O`!1@;
XMN"\Y`````$ZZ`=8NN0``!#!.N@',3.T,[/_.3EU.=4Y5__Y(YR$P)F\`&B1O]
XM`!XP$C(3LD!F"B!M`!`T$+1`9RK"_`$JP/P"3-*`(&T`$#`0P/P`<M*`(`$B2
XM/````^A.N@$V+@`VAS2',(=,WPR$3EU.=4Y5_]I(YS\0)F\`2BXO`$XL+P!2=
XM*@::AR`'T(`R,P@`)`'@2@)"``\F`>A+`D,`#P)!``\@!M"`>``X,P@`.T'_S
XMZB($X(%X#\*$>``X`I*$>``X,P@`*T'_^"($Z($[0O_N=`_"@G0`-`.2@G0`'
XM-`1P#\2`<``P+?_JE(!"K?_F*T'_]"M"__`[0__L("W_YK"%;```AB('TH`K\
XM0?_BTH$O00`<(BW_^$ZZ`+PB!4ZZ`'1R`#(M_^[2@'`/PH#A@2`M__0O00`@Q
XM(BW_YDZZ`)@B!4ZZ`%!R`#(M_^S2@'`/PH#I@20O`""$@2`M_^8B+?_P3KH`\
XM<B(%3KH`*G(`,BW_ZM*`<`_"@(2!("\`'#>""`!2K?_F8`#_=$S?"/Q.74YU=
XM``!.^0``$EA.^0``#"1.^0``$'!.^0```,1.^0``#HQ.^0```%!.^0````!.'
XM^0````!.^0``%2!.^0``$+!.^0```#A.^0``$CA.^0```#QP80```^P````'6
XM`````````TX```.0```#6@```WX```.$```#9@```U0````!`````0```W(``
XM```*````!@```;@```#,````N@```*X```"0````>@```#X````L````(@``3
XM``X````)````!P```8(```%X```!8@```3H```$P```!*````18```$,```!W
XM!`````8````+````T@```)8```'"````_````,(```"&`````0````P```-X,
XM`````@````T```.6```#;`````(````.```#B@```V`````````#\@```^H`Y
XM``"(`````%-E=&-O;&]R(#$N,2`@4$0`0G)I86X@36]F9F5T('-C;R%B<FEAH
XM;FT``'-E=&-O;&]R(%LM;G5M70`)+6YU;3H@;G5M8F5R(&]F('-E8V]N9',@H
XM=&\@9&5L87D@8F5F;W)E(&%T=&%C:&EN9R!T;R!T:&4`"2`@("`@(&%C=&EV\
XM92!W:6YD;W<N`"!'861G970@1&5F:6YI=&EO;G,Z```)0B]7.B!M86ME('1H2
XM92!P86QE='1E(&$@9W)E>2!S8V%L92!P86QE='1E``E3;65A<CH@8FQE;F0@#
XM9G)O;2!C;VQO<B`Q("AL971T97)S(&EN(&)O>"D@=&\@8V]L;W(@,@``"45XR
XM8VAA;F=E.B!E>&-H86YG92!C;VQO<B`Q(&%N9"!C;VQO<B`R``E#;W!Y.B!C8
XM;W!Y(&-O;&]R(#$@86YD(&-O;&]R(#(`"4]+.B!3970@=&AE('!A;&5T=&4@%
XM=VET:"!Y;W5R(&YE=R!C;VQO<G,`"55N9&\Z(')E<V5T(&-O;&]R<R!F<F]MI
XM(&QA<W0@3TL@;W(@8F5G:6YN:6YG`````"X````^````>````(X```"D````V
XMT````0@```$P```!4````7H`````+6@``&EN='5I=&EO;BYL:6)R87)Y`$5RH
XM<F]R($]P96YI;F<@24(*`&=R87!H:6-S+FQI8G)A<GD``$5R<F]R($]P96YI1
XM;F<@1T(*`````^P````*````!@```<P```'(```!Q````<````&\```!N```9
XM`;0```&P```!K````:@````````#\@```^L````B```#\D```^H````#____C
XM____________```#\@```^D```&@3E7_\DCG-S`F;P`R,"L`)@1```%M``.F&
XM#$``!FP``Y[E0$[[``)@```68```T&```7A@``(F8``"5&```O!^`'`!(CD`H
XM```$XZ"^@&P``VX@!]"`0?D```!((DC3P#(1X$D"00`/.T'__B)(T\`R$>A)`
XM`D$`#SM!__S1P#`0`D``#SM`__I(;?_Z2&W__$AM__Y.N@723^\`#"`'T(!!0
XM^0```$C1P#`M__X"0``/X4`R+?_\`D$`#^E!@$$R+?_Z`D$`#X!!,(`O.0``X
XM``A.N@6B<@`R+?_^=``T+?_\=@`V+?_Z+H,O`B\!+P<O`$ZZ!7Q/[P`44H=@R
XM`/]&(#D````$(CD`````LH!O%"\!+P!(>0```$A.N@4\3^\`#&`2+P`O`4AY_
XM````2$ZZ!2A/[P`,?`!P`2(Y````!..@O(!L``)Z(`;0@$'Y````2")(T\`RA
XM$>!)*@$"10`/(DC3P#(1Z$D"00`/T<`P$`)```\O.0````@[0/_V.T'_^$ZZ[
XM!/)R`#(%=``T+?_X=@`V+?_V+H,O`B\!+P8O`$ZZ!,Y/[P`44H9@C"`Y````X
XM`-"`0?D```!((DC3P'(`,A$B2-/`(#D````$T(`D2-7`,I+1P#"!0JW_^"M!'
XM__QP`2(Y````!..@(BW_^+*`;``!SM*!0?D```!((DC3P3`1X$@"0``/(DC3+
XMP301Z$H"0@`/T<$R$`)!``\O.0````@[0/_V.T'_\CM"__1.N@1&<@`R+?_V&
XM=``T+?_T=@`V+?_R+H,O`B\!+RW_^"\`3KH$'D_O`!12K?_X8()"K?_\<`$BW
XM.0````3CH"(M__RR@&P``4S2@4'Y````"-'!0_D```!(T\$PD5*M__Q@TB`YZ
XM````!-"`0?D```!((DC3P"`Y`````-"`T<`RD$*M__QP`2(Y````!..@(BW_:
XM_+*`;```_-*!0?D```!((DC3P3`1X$@"0``/(DC3P301Z$H"0@`/T<$R$`)!"
XM``\O.0````@[0/_Z.T'_]CM"__A.N@-T<@`R+?_Z=``T+?_X=@`V+?_V+H,O;
XM`B\!+RW__"\`3KH#3$_O`!12K?_\8()"K?_\<`$B.0````3CH"(M__RR@&QZ<
XMTH%!^0```$@B2-/!1?D````(U<$RDB)(T\$P$>!(`D``#R)(T\$T$>A*`D(`D
XM#]'!,A`"00`/+SD````(.T#_^CM!__8[0O_X3KH"YG(`,BW_^G0`-"W_^'8`Z
XM-BW_]BZ#+P(O`2\M__PO`$ZZ`KY/[P`44JW__&``_W9,WPSL3EU.=2\+)F\`Y
XM""\+80``)BZ+80``9"Z+80``RBZ+80`!,"Z+80`!EBZ+80`!_%A/)E].=2\+G
XM)F\`"$'Y````!"/(````,B\(3KH"5C/`````($AX__](>0```!@O"TZZ`CI"Y
XMER\+2'D````83KH"2D_O`!@F7TYU3E7__"\+)F\`$$'Y````2B/(````>"\(W
XM3KH"#C/`````9C`Y````'$C`2'D````$+T``#$ZZ`?(B+P`,TH!:@3/!````W
XM8DAX__](>0```%XO"TZZ`<Y"ER\+2'D```!>3KH!WB9M__A.74YU3E7__"\+Y
XM)F\`$$'Y````E"/(````PB\(3KH!HC/`````L#`Y````8DC`2'D```!*+T``R
XM#$ZZ`88B+P`,TH!:@3/!````K$AX__](>0```*@O"TZZ`6)"ER\+2'D```"H-
XM3KH!<B9M__A.74YU3E7__"\+)F\`$$'Y````VB/(```!""\(3KH!-C/`````A
XM]C`Y````K$C`2'D```"4+T``#$ZZ`1HB+P`,TH!:@3/!````\DAX__](>0``U
XM`.XO"TZZ`/9"ER\+2'D```#N3KH!!B9M__A.74YU3E7__"\+)F\`$$'Y```!G
XM'B/(```!3"\(3KH`RC/````!.C`Y````\DC`2'D```#:+T``#$ZZ`*XB+P`,9
XMTH!:@3/!```!-DAX__](>0```3(O"TZZ`(I"ER\+2'D```$R3KH`FB9M__A.7
XM74YU3E7__"\+)F\`$$'Y```!9"/(```!DB\(3KH`7C/````!@#`Y```!-DC`S
XM2'D```$>+T``#$ZZ`$(B+P`,TH!:@3/!```!?$AX__](>0```7@O"TZZ`!Y"Z
XMER\+2'D```%X3KH`+B9M__A.74YU3OD```(H3OD`````3OD```"03OD```'4D
XM3OD````X3OD```!\3OD````P<&$```/L````"P````(```*@```!J@```00`8
XM``*.```!Q````/X```-Z```"[````AH```%R````R@````(````%```&5@``Z
XM!F@````3````!P```U````)V```#1@```L8```*6```"?@```?0```&R```!E
XM2@```28```$2````H````%8```,T```"L@```F(```'@```!.````$0````M4
XM````"@``!D0```8T```&*@``!A0```8,```&!@``!?H```7T```%V```!<@`8
XM``6^```%J```!:````6:```%C@``!8@```5L```%7```!5(```4\```%-```W
XM!2X```4B```%'```!0````3P```$Y@``!-````3(```$P@``!+8```2P```$V
XME```!(0```1Z```$9```!%P```16```$2@``!$0```0H```$&```!`X```0"R
XM```#_`````$````.```&;@````0````/```&>@``!EP```9B```&=```````9
XM``/R```#Z@```&E"+U<``0`"``````````````````````````````K_]P``6
XM``@`"0`!``$````````````````````````````!`````%-M96%R``$``@``/
XM`````````````$0````````````>__<````(``D``0`!````````````````K
XM`````````````@````!%>&-H86YG90```0`"````````````````B@``````R
XM`````![_]P````@`"0`!``$````````````````````````````#`````$-O<
XM<'D```$``@```````````````-0````````````>__<````(``D``0`!````G
XM````````````````````````!0````!/2P```0`"```````````````!&@``]
XM`````````![_]P````@`"0`!``$````````````````````````````$````K
XM`%5N9&\```$``@```````````````5X````````````>__<````(``D``0`!?
XM````````````````````````````!@````````/L````!@````H```%P```!W
XM*@```.8```"@````5@```!`````````#\@```^H```!X````*```````````8
XM````````````````````.@``````````````````````````````````````Z
XM`````%P`````````````````````````````````````````````````````<
XM`````````````````````````````````````(`````$`/__````#@`.````>
XM````$_P`````__\````$``0``````````````(C__P````0`!````````!08/
XM`````/__````!``$````````%"(``````"`@("`@("`@("@H*"@H("`@("`@D
XM("`@("`@("`@("`@2!`0$!`0$!`0$!`0$!`0$(2$A(2$A(2$A(00$!`0$!`00
XM@8&!@8&!`0$!`0$!`0$!`0$!`0$!`0$!`0$0$!`0$!""@H*"@H("`@("`@("4
XM`@("`@("`@("`@("`A`0$!`@("`@("`@("`@*"@H*"@@("`@("`@("`@("`@"
XM("`@("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!W
XM`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@(";
XM`@("`@("$!`0$"````````(````#[`````,`````````T````+P```"4`````
XM`P````L```"L````.@```!@````````#\@```^D````%+PXL>0``!$`B+P`(Q
XM3J[_.BQ?3G4```/L`````0````L````$`````````_`````"7T1E;&%Y````%
XM`````````````_(```/I````&B\.+'D```(8("\`"$ZN_L(L7TYU+PXL>0``Z
XM`A@@;P`(3J[^C"Q?3G4O#BQY```"&")O``A.KOZ&+%].=2\.+'D```(8(F\`U
XM"$ZN_F(L7TYU+PXL>0```A@B;P`(("\`#$ZN_=@L7TYU```#[`````4````+`
XM````5````$`````L````&`````0````````#\`````-?3W!E;DQI8G)A<GD`8
XM``!0````!%]#;&]S94QI8G)A<GD````````\`````U]297!L>4US9P``````/
XM`"@````"7T=E=$US9P`````4`````E]786ET``````````````````/R```#2
XMZ0```#<O#BQY`````")O``A,[P`#``Q.KO\0+%].=0``+PXL>0`````B;P`(Y
XM3.\``P`,3J[_"BQ?3G4``$CG,`(L>0`````@;P`03.\`#P`43J[^X$S?0`Q._
XM=0``2.<P`BQY`````")O`!!,[P`/`!1.KO[.3-]`#$YU```O#BQY`````")OO
XM``A,[P`#``Q.KO["+%].=0``+PXL>0`````B;P`(("\`#$ZN_JHL7TYU+PXL-
XM>0`````B;P`(("\`#$ZN_IXL7TYU+PXL>0`````@;P`(("\`#$ZN_;HL7TYUH
XM```#[`````@````&````R````+````"8````?````%X````^````(`````0`)
XM```````#\`````)?1V5T4D="-````,0````"7U-E=$1R360```"L`````E]3;
XM971!4&5N````E`````-?4F5A9%!I>&5L``````!X`````U]296-T1FEL;```@
XM`````%@````"7U-E=%)'0C0````X`````E]$<F%W````````'`````)?36]V*
XM90`````````````````#\@```^D````I+PXL>0``!#!,[P,```@@+P`03J[_E
XMUBQ?3G4``"\.+'D```0P(&\`"$ZN_[@L7TYU2.<`(BQY```$,$SO!P``#$ZN&
XM_T9,WT0`3G4``"\.+'D```0P(&\`"$ZN_S0L7TYU+PXL>0``!#!,[P,```A,)
XM[P`#`!!.KO\H+%].=2\.+'D```0P(&\`"$ZN_M0L7TYU+PXL>0``!#`@;P`(I
XM3J[^MBQ?3G4```/L````!P````L```"4````@````&0```!0````-@```"``=
XM```$`````````_`````$7TEN='5I5&5X=$QE;F=T:````)`````$7U9I97=0(
XM;W)T061D<F5S<P```'P````#7U!R:6YT251E>'0`````8`````-?3W!E;E=I(
XM;F1O=P````!,`````U]/;D=A9&=E=````````#`````#7T-L;W-E5VEN9&]WO
X@````'`````-?061D1V%D9V5T`````````````````_(#+
X``
Xend
Xsize 14792
SHAR_EOF
echo "End of archive 1 (of 1)"
# if you want to concatenate archives, remove anything after this line
exit