kim@amdahl.UUCP (Kim DeVaughn) (05/04/87)
[ For all you do ... this line's for you ... ] I came across this tool on one of the local BBS's over the weekend. It was originally published in the Transactor magazine, and from the comments (in the printed, magazine version), it is freely redistributable. Since there have been a few utilities posted here recently that "twiddle" various structures in running applications to modify menus, and such, I thought y'all might find it useful. The article in the Transactor has alot of useful supplementary material as well. BTW, this magazine is about 80% oriented toward the C-68/128 machines, but the 20% coverage they're devoting to the Amiga truly makes it worthwhile for Amiga hackers ... very good, *technical* articles, source, etc. (the current July '87 issue has Bryce Nesbitt's "Pop To Front" program [in assembler] for the currently active window, for example). Hi, Bryce, and thanks! Anyhow, if you're interested in the Transactor, their addresses are: U.S.: Transactor Canada: Transactor PO Box 338 Station 'C' 501 Alden Road Buffalo, NY 14209-990 PO Box 3250 Markham Industrial Park Markham, Ontario L3R 9Z9 Subscriptions are $15 for 6 issues (US or Canadian), and as of the July issue, will ONLY be available by subscription (pity ... you should see what the Postal Carrier does to my magazines :-( )! The Structure Browser article was in the May 1987 issue, and back issues are available ($4.50), as are disks. I know, I know, the above is a bit commercial, but these people are providing quality information, and seem to be rather "obscure" ... hence, the plug! (And no, I'm not affiliated with them in any way ... wish they were 80/20 the other way with their Amiga coverage, though!) So without further verbosity, here is the Structure Browser (the uuencoded executable will be along in part 2). Watch for the .signature at the end ... if it ain't there, you didn't get everything! /kim # This is a shell archive. Remove anything before this line, then # unpack it by saving it in a file and typing "sh file". (Files # unpacked will be owned by you and have default permissions.) # # This archive contains: # sb.c sb.doc sb.h sb.lnk sbGadget.c sbGraphics.c sbIntuiText.c sbMsgPort.c sbNode.c sbScreen.c sbTextAttr.c sbWindow.c sbio.c echo x - sb.c cat > "sb.c" << '//E*O*F sb.c//' /* The Transactor Structure Browser (SB) V1.0 * From Transactor Magazine, Volume 7, Issue 6 * * By Nick Sullivan and Chris Zamara (AHA!) (c) 1986 * * SB displays system structures via pointers found * in other structures. You start from IntuitionBase. * * Structures implemented in V1.0: * IntuitionBase, Window, Screen, RastPort, BitMap, Gadget * * Usage is through Intuition, clicking on a structure member * names to display info or a new structure. * * ***** THIS PROGRAM MAY BE FREELY DISTRIBUTED ***** */ /* include not needed for Aztec C using provided makefile */ /* I keep all the files in directory sb on df1: * To keep the system happy, I 'ASSIGN SB: DF1:SB' then 'CD SB:'. GG. */ #include "sb:sb.h" #define MIN(x,y) ((x)<(y)?(x):(y)) #define FLAGFIELDS 4 extern struct IntuitionBase *IntuitionBase; extern struct IntuiText ChoiceText[], BackIText; APTR OpenLibrary (); int level = 0; /* current level of nesting */ static char textlines[MAXGADG + 1][80]; extern void PrIntuiBase(), HexLine(); void main() { int choice = -1; SetupGadg(); OpenStuff(); /* open intuition library & window */ while (choice) { putHeader("Choose a library structure", NULL); ChoiceText[0].IText = (UBYTE *)" Intuition struct Library"; BackIText.IText = (UBYTE *)" Quit Program"; switch (choice = GetChoice(1)) { case 1: PrIntuiBase ("The IntuitionBase structure", IntuitionBase); break; } } CloseOut(); } void PrIntuiBase (string, IBase) char *string; struct IntuitionBase *IBase; { static struct StructData structdata[] = { { "(LibMode", "struct Library)", 0, SZ(Library) }, { "(ViewLord", "struct View)", 0, SZ(View) }, { " ActiveWindow", "struct Window *", 5, PTRSIZE }, { " ActiveScreen", "struct Screen *", 5, PTRSIZE }, { " FirstScreen", "struct Screen *", 5, PTRSIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)IBase, DATASIZE, 0); switch (choice = GetChoice(DATASIZE)) { case 3: if (IBase->ActiveWindow) PrWindow("The currently active window", IBase->ActiveWindow); break; case 4: PrScreen("The currently active screen", IBase->ActiveScreen); break; case 5: PrScreen("The first screen on Intuition's list", IBase->FirstScreen); break; } } level--; } void put (option, stuff, base, offset) int option; struct StructData *stuff; char *base; int offset; { register long lnum; register int inum; char buf[40]; int i; sprintf(textlines[option], "%-16s%-24s", stuff->membername, stuff->membertype); switch (stuff->printtype) { case 0: /* don't print anything */ buf[0] = '\0'; break; case 1: /* print a long */ lnum = *(long *)(base + offset); sprintf(buf, "$%8lx %0ld", lnum, lnum); break; case 2: /* print an int */ inum = *(short *)(base + offset); sprintf(buf, "$%8x %10d", inum, inum); break; case 3: /* print a byte */ inum = *(base + offset); sprintf(buf, "$%8x %10d", inum, inum); break; case 4: /* print a string */ if (!(lnum = *(long *)(base + offset) )) sprintf(buf, "NULL"); else { for (i = 0; i < 30 && *((char *)lnum + i); i++) buf[i + 1] = *((char *)lnum + i); buf[0] = buf[i + 1] = '\"'; buf[i + 2] = '\0'; if (*((char *)lnum + i)) strcat(buf, "..."); } break; case 5: /* print a pointer */ if (!(lnum = *(long *)(base + offset) )) sprintf(buf, "NULL"); else sprintf(buf, "$%8lx %10ld", lnum, lnum); break; case 11: /* print a long */ lnum = *(long *)(base + offset); sprintf(buf, "$%8lx %10lu", lnum, lnum); break; case 12: /* print an int */ inum = *(short *)(base + offset); sprintf(buf, "$%8x %10u", inum, inum); break; case 13: /* print a byte */ inum = *(base + offset); sprintf(buf, "$%8x %10u", inum, inum); break; } strcat(textlines[option], buf); ChoiceText[option].IText = (UBYTE *)textlines[option]; } void FlagPrint(string, names, flags) char *string, **names; ULONG flags; { int i, line, fields = FLAGFIELDS; char buf[32]; SetBackText(1); /* 'prev level' */ for (i = 0; i < 8; i++) { strcpy(textlines[i], "-"); ChoiceText[i].IText = (UBYTE *)textlines[i]; } putHeader(string, NULL); for (i = line = 0; i < 32; i++) { if ((flags & (1L << i)) && names[i]) { sprintf(buf, "%-19s", names[i]); strcat(textlines[line], buf); if (!--fields) { ChoiceText[line].IText = (UBYTE *)textlines[line]; line++; fields = FLAGFIELDS; } } } if (fields < FLAGFIELDS) ChoiceText[line].IText = (UBYTE *)textlines[line]; while (GetChoice(line + 1)) ; } void HexDump(string, address, unit, size) char *address, *string; int unit; long size; { int line = 0, c; char *buf[80]; BackIText.IText = (UBYTE *)" Exit Hex Dump "; if (size == -1) size = 0x7ffff; do { sprintf(buf, "%s from %lx (%ld)", string, address, address); putHeader(buf, NULL); if (line == MAXGADG) line = 0; while (line < MAXGADG && size > 0) { HexLine(address, unit, line++, size); size -= 16; address += 16; } c = GetChoice(size > 0 ? MAXGADG + 1 : line); } while (size > 0 && c == MOREGADG); } void HexLine (address, unit, line, size) UBYTE *address; int unit, line; long size; { USHORT i, j; char buf[80]; static char hexdigit[] = "0123456789ABCDEF"; sprintf(textlines[line], "-%6lx: ", address); for (i = 0; i < MIN(size, 16); i += unit) { switch (unit) { case BYTESIZE: j = *(address + i); sprintf(buf, "%c%c ", hexdigit[j / 16], hexdigit[j % 16]); break; case INTSIZE: sprintf(buf, "%04x ", *(short *)(address + i)); break; case PTRSIZE: sprintf(buf, "%08lx ", *(long *)(address + i)); break; } strcat(textlines[line], buf); } ChoiceText[line].IText = (UBYTE *)textlines[line]; } int SetOptionText (hdrtext, data, object, size, offset) char *hdrtext; struct StructData *data; APTR object; int size, offset; { int i, sum; SetBackText( offset ? 1 : 0); putHeader(hdrtext, object); for (i = sum = 0; i < size; i++) { put(i, &data[i], object, sum + offset); sum += data[i].datasize; } return (sum + offset); } void PrString(heading, string) char *heading, *string; { char *newstring, *malloc(); putHeader(heading, NULL); newstring = malloc(strlen(string) + 1); *newstring = '-'; strcpy(newstring + 1, string); ChoiceText[0].IText = (UBYTE *)newstring; GetChoice(1); free(newstring); } //E*O*F sb.c// echo x - sb.doc cat > "sb.doc" << '//E*O*F sb.doc//' Panorama Librarian: Please read note at bottom ********************* CUT HERE ********************* Structure Browser The Transactor, May 1987, Volume 7, Issue 6 There are two changes from the original listings for Lattice C. One relates to the size of an integer in the defines. The size of an integer in Aztec is sixteen bits, however, Lattice uses thirty-two. I changed the define to SHORT. The other change is in one of the structure definitions where a BYTESIZE definition needed to be padded to sixteen bits by calling it INTSIZE for proper alignment purposes. These are all the changes I can remember I had to do. I also have added a few additional structure definitions and will be adding more as I find spare time. One thing to remember when traversing linked structures... the Amiga is constantly in action and what may have been a valid pointer when it was displayed but may be pointing to garbage by the time you actually look at the data it was pointing to. Anybody interested in looking at the nitty-gritties of the system should find this program interesting and possibly even enlightening. Please buy a copy of the magazine to help support the publishing of additional excellent programs like this one. There are also two other Amiga articles in the same issue. The first gives some insight into the infamous GURU messages and the other describes Amiga file structures. ********************** CUT HERE *********************** Panorama Librarian: Please confirm we can release this without violating any copyright notices. The fine print on page 2 states... "All material is copyright by Transactor Publications Inc. Reproduction in any form without permission is in violation of applicable laws." //E*O*F sb.doc// echo x - sb.h cat > "sb.h" << '//E*O*F sb.h//' /* Lattice C Ver 3.1 */ #include <intuition/intuition.h> #include <intuition/intuitionbase.h> #include <stdlib.h> #include <stdio.h> #define SZ(x) sizeof(struct x) #define DATASIZE ( sizeof(structdata) / sizeof(struct StructData) ) #define PTRSIZE sizeof(APTR) /* for Aztec C make the following 'sizeof(int)' */ #define INTSIZE sizeof(short) #define BYTESIZE sizeof(char) #define MAXGADG 16 #define MOREGADG 25 /* id of "more" gadget */ struct StructData { char *membername; char *membertype; int printtype; int datasize; }; //E*O*F sb.h// echo x - sb.lnk cat > "sb.lnk" << '//E*O*F sb.lnk//' FROM LIB:c.o+ sb.o+ sbGadget.o+ sbGraphics.o+ sbio.o+ sbScreen.o+ sbWindow.o+ sbIntuiText.o+ sbTextAttr.o+ sbMsgPort.o+ sbNode.o TO sb LIB LIB:lc.lib+ LIB:amiga.lib MAP sb.map //E*O*F sb.lnk// echo x - sbGadget.c cat > "sbGadget.c" << '//E*O*F sbGadget.c//' /* include not needed for Aztec C using provided makefile */ #include "sb:sb.h" extern int level; void PrGadget(string, gadget) char *string; struct Gadget *gadget; { static struct StructData structdata[] = { { " NextGadget", "struct Gadget *", 5, PTRSIZE }, { "-LeftEdge", "SHORT", 2, INTSIZE }, { "-TopEdge", "SHORT", 2, INTSIZE }, { "-Width", "SHORT", 2, INTSIZE }, { "-Height", "SHORT", 2, INTSIZE }, { " Flags", "USHORT", 12, INTSIZE }, { " Activation", "USHORT", 12, INTSIZE }, { " GadgetType", "USHORT", 12, INTSIZE }, { "(GadgetRender", "APTR)", 5, PTRSIZE }, { "(SelectRender", "APTR)", 5, PTRSIZE }, { " GadgetText", "struct IntuiText *", 5, PTRSIZE }, { "-MutualExclude","LONG", 1, PTRSIZE }, { "(SpecialInfo", "APTR)", 5, PTRSIZE }, { "-GadgetID", "USHORT", 12, INTSIZE }, { "-UserData", "APTR", 5, PTRSIZE } }; static char *flagnames[16] = { "GADGHBOX", "GADGHIMAGE", "GADGIMAGE", "GRELBOTTOM", "GRELRIGHT", "GRELWIDTH", "GRELHEIGHT", "SELECTED", "GADGDISABLED" }; static char *activatenames[16] = { "RELVERIFY", "GADGIMMEDIATE", "ENDGADGET", "FOLLOWMOUSE", "RIGHTBORDER", "LEFTBORDER", "TOPBORDER", "BOTTOMBORDER", "TOGGLESELECT", "STRINGCENTER", "STRINGRIGHT", "LONGINT", "ALTKEYMAP", "BOOLEXTEND" }; static char *systypenames[16] = { "SIZING", "WDRAGGING", "SDRAGGING", "WUPFRONT", "SUPFRONT", "WDOWNBACK", "SDOWNBACK", "CLOSE", NULL, NULL, NULL, NULL, "REQGADGET", "GZZGADGET", "SCRGADGET", "SYSGADET" }; static char *applitypenames[16] = { "BOOLGADGET", "GADGET0002", "PROPGADGET", "STRGADGET", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "REQGADGET", "GZZGADGET", "SCRGADGET", "SYSGADGET" }; int sum, choice = -1; USHORT bits; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)gadget, DATASIZE, 0); switch (choice = GetChoice(DATASIZE)) { case 1: if (gadget->NextGadget) PrGadget("The next gadget in Intuition's list", gadget->NextGadget); break; case 6: bits = gadget->Flags; switch (bits & GADGHIGHBITS) { case 0: flagnames[0] = "GADGHCOMP"; bits |= 0x01; break; case 1: flagnames[0] = "GADGHBOX"; break; case 2: flagnames[1] = "GADGHIMAGE"; break; case 3: flagnames[1] = "GADGHNONE"; bits ^= 0x01; break; } FlagPrint("Flags set for this gadget", flagnames, (ULONG)bits); break; case 7: FlagPrint("Activation flags set for this gadget", activatenames, (ULONG)gadget->Activation); break; case 8: bits = gadget->GadgetType; if (bits & SYSGADGET) { bits = (bits & 0xff00) | (1 << (((bits & 0xf0) >> 4) - 1)); FlagPrint("Gadget type flags set for this gadget", systypenames, (ULONG)bits); } else { bits = (bits & 0xff00) | (1 << ((bits & 0x0f) - 1)); FlagPrint("Gadget type flags set for this gadget", applitypenames, (ULONG)bits); } break; case 11: if (gadget->GadgetText) PrIntuiText("The gadget's first text (IntuiText structure)", gadget->GadgetText); break; } } level--; } //E*O*F sbGadget.c// echo x - sbGraphics.c cat > "sbGraphics.c" << '//E*O*F sbGraphics.c//' /* include not needed for Aztec C using provided makefile */ #include "sb:sb.h" extern int level; extern void PrPlanes(), PrRastPort2(); void PrBitMap(string, bitmap) char *string; struct BitMap *bitmap; { static struct StructData structdata[] = { { "-BytesPerRow", "UWORD", 12, INTSIZE }, { "-Rows", "UWORD", 12, INTSIZE }, { "-Flags", "UBYTE", 13, BYTESIZE }, { "-Depth", "UBYTE", 13, BYTESIZE }, { "-Pad", "UWORD", 12, INTSIZE }, { " Planes[8]", "PLANEPTR", 5, PTRSIZE * 8} }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)bitmap, DATASIZE, 0); if ((choice = GetChoice(DATASIZE)) == 6) PrPlanes("BitPlanes belong to the BitMap", bitmap->Planes, bitmap->Rows, bitmap->BytesPerRow); } level--; } void PrPlanes(string, planes, rows, bytes) char *string; PLANEPTR planes[]; UWORD rows, bytes; { static struct StructData structdata[] = { {" BitPlabe[0]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[1]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[2]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[3]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[4]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[5]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[6]", "PLANEPTR", 5, PTRSIZE }, {" BitPlabe[7]", "PLANEPTR", 5, PTRSIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)planes, DATASIZE, 0); choice = GetChoice(8); if (choice >= 1 && choice <= 8 && planes[choice - 1]) HexDump(structdata[choice - 1].membername, planes[choice - 1], PTRSIZE, (long)(rows * bytes)); } level--; } void PrRastPort(string, rastport) char *string; struct RastPort *rastport; { static struct StructData structdata[] = { { "(Layer", "struct Layer *)", 5, PTRSIZE }, { " BitMap", "struct BitMap *", 5, PTRSIZE }, { "-Area Ptrn", "USHORT *", 5, PTRSIZE }, { "(TmpRas", "struct TmpRas *)", 5, PTRSIZE }, { "(AreaInfo", "struct AreaInfo *)", 5, PTRSIZE }, { "(GelsInfo", "struct GelsInfo *)", 5, PTRSIZE }, { "-Mask", "UBYTE", 13, BYTESIZE }, { "-FgPen", "BYTE", 3, BYTESIZE }, { "-BgPen", "BYTE", 3, BYTESIZE }, { "-AOlPen", "BYTE", 3, BYTESIZE }, { "-DrawMode", "BYTE", 3, BYTESIZE }, { "-AreaPtSize", "BYTE", 3, BYTESIZE }, { "-linpatcnt", "BYTE", 3, BYTESIZE }, { "-dummy", "BYTE", 3, BYTESIZE }, { "(Flags", "USHORT", 12, INTSIZE }, { "-LinePtrn", "USHORT", 12, INTSIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)rastport, DATASIZE, 0); switch (choice = GetChoice(MAXGADG + 1)) { case 2: if (rastport->BitMap) PrBitMap("The BitMap for the RastPort", rastport->BitMap); break; case MOREGADG: PrRastPort2("More RastPort members", rastport, sum); break; } } level--; } void PrRastPort2(string, rastport, offset) char *string; struct RastPort *rastport; int offset; { static struct StructData structdata[] = { {"-cp_x", "SHORT", 2, INTSIZE }, {"-cp_y", "SHORT", 2, INTSIZE }, {" minterms[8]", "UBYTE", 0, BYTESIZE * 8}, {"-PenWidth", "SHORT", 2, INTSIZE }, {"-PenHeight", "SHORT", 2, INTSIZE }, {"(TextFont", "struct Font *)", 5, PTRSIZE }, {"-AlgoStyle", "UBYTE", 13, BYTESIZE }, {"(TxFlags", "UBYTE", 13, BYTESIZE }, {"-TxHeight", "UWORD", 12, INTSIZE }, {"-TxWidth", "UWORD", 12, INTSIZE }, {"-TxBaseLine", "UWORD", 12, INTSIZE }, {"-TxSpacing", "WORD", 2, INTSIZE }, {"-RP_User", "WORD", 2, INTSIZE }, {" wordreserved[7]", "UWORD", 0, INTSIZE * 7 }, {" longreserved[2]", "ULONG", 0, PTRSIZE * 2 }, {" reserved[8]", "UBYTE", 0, BYTESIZE * 8} }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)rastport, DATASIZE, offset); switch (choice = GetChoice(DATASIZE)) { case 3: HexDump("Hexdump of RastPort minterms bytes", &rastport->minterms[0], BYTESIZE, (long)BYTESIZE * 8); break; case 14: HexDump("Hexdump of reserved RastPort words", &rastport->wordreserved[0], INTSIZE, (long)INTSIZE * 7); break; case 15: HexDump("Hexdump of reserved RastPort longwords", &rastport->longreserved[0], PTRSIZE, (long)PTRSIZE * 2); break; case 16: HexDump("Hexdump of reserved RastPort bytes", &rastport->reserved[0], BYTESIZE, (long)BYTESIZE * 8); break; } } level--; } //E*O*F sbGraphics.c// echo x - sbIntuiText.c cat > "sbIntuiText.c" << '//E*O*F sbIntuiText.c//' /* module written by G. Gagnon, Mar 24, 1987 */ #include "sb:sb.h" extern int level; void PrIntuiText(string, intuitext) char *string; struct IntuiText *intuitext; { static struct StructData structdata[] = { { "-FrontPen", "UBYTE", 3, BYTESIZE }, { "-BackPen", "UBYTE", 3, BYTESIZE }, { "-DrawMode", "UBYTE", 3, INTSIZE }, { "-LeftEdge", "SHORT", 2, INTSIZE }, { "-TopEdge", "SHORT", 2, INTSIZE }, { " ITextFont", "struct TextAttr *", 5, PTRSIZE }, { " IText", "UBYTE *", 4, PTRSIZE }, { " NextText", "struct IntuiText *", 5, PTRSIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)intuitext, DATASIZE, 0); switch (choice = GetChoice(DATASIZE)) { case 6: if (intuitext->ITextFont) PrTextAttr("Structure TextAttr",intuitext->ITextFont); break; case 7: PrString("The text pointed to by IText", intuitext->IText); break; case 8: if (intuitext->NextText) PrIntuiText("The next IntuiText in Intuition's list", intuitext->NextText); break; } } level--; } //E*O*F sbIntuiText.c// echo x - sbMsgPort.c cat > "sbMsgPort.c" << '//E*O*F sbMsgPort.c//' /* module written by G. Gagnon, Mar 24, 1987 */ #include "sb:sb.h" extern int level; void PrMsgPort(string, msgport) char *string; struct MsgPort *msgport; { static struct StructData structdata[] = { { "-mp_Node", "Node structure", 0, 0 }, { " .ln_Succ", "struct Node *", 5, PTRSIZE }, { " .ln_Pred", "struct Node *", 5, PTRSIZE }, { "- .ln_Type", "UBYTE", 13, BYTESIZE }, { "- .ln_Pri", "BYTE", 3, BYTESIZE }, { " .ln_Name", "CHAR *", 4, PTRSIZE }, { "-mp_Flags", "UBYTE", 13, BYTESIZE }, { "-mp_SigBit", "UBYTE", 13, BYTESIZE }, { "(mp_SigTask", "struct Task *)", 5, PTRSIZE }, { "-mp_MsgList", "List structure", 0, 0 }, { " .lh_Head", "struct Node *", 5, PTRSIZE }, { " .lh_Tail", "struct Node *", 5, PTRSIZE }, { " .lh_TailPred", "struct Node *", 5, PTRSIZE }, { "- .lh_Type", "UBYTE", 13, BYTESIZE }, { "- .l_pad", "UBYTE", 13, BYTESIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)msgport, DATASIZE, 0); switch (choice = GetChoice(DATASIZE)) { case 2: if (msgport->mp_Node.ln_Succ) PrNode("MsgPort->mp_Node.ln_Succ", msgport->mp_Node.ln_Succ); break; case 3: if (msgport->mp_Node.ln_Pred) PrNode("MsgPort->mp_Node.ln_Pred", msgport->mp_Node.ln_Pred); break; case 6: PrString("mp_Node->ln_Name",msgport->mp_Node.ln_Name); break; case 11: if (msgport->mp_MsgList.lh_Head) PrNode("MsgPort->mp_MsgList.lh_Head", msgport->mp_MsgList.lh_Head); break; case 12: if (msgport->mp_MsgList.lh_Tail) PrNode("MsgPort->mp_MsgList.lh_Tail", msgport->mp_MsgList.lh_Tail); break; case 13: if (msgport->mp_MsgList.lh_TailPred) PrNode("MsgPort->mp_MsgList.lh_TailPred", msgport->mp_MsgList.lh_TailPred); break; } } level--; } //E*O*F sbMsgPort.c// echo x - sbNode.c cat > "sbNode.c" << '//E*O*F sbNode.c//' /* module written by G. Gagnon, Mar 24, 1987 */ #include "sb:sb.h" extern int level; void PrNode(string, node) char *string; struct Node *node; { static struct StructData structdata[] = { { " ln_Succ", "struct Node *", 5, PTRSIZE }, { " ln_Pred", "struct Node *", 5, PTRSIZE }, { "-ln_Type", "UBYTE", 4, BYTESIZE }, { "-ln_Pri", "BYTE", 3, BYTESIZE }, { " ln_Name", "UBYTE *", 4, PTRSIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)node, DATASIZE, 0); switch (choice = GetChoice(DATASIZE)) { case 1: if (node->ln_Succ) PrNode("Node->ln_Succ", node->ln_Succ); break; case 2: if (node->ln_Pred) PrNode("Node->ln_Pred", node->ln_Pred); break; case 5: PrString("ln_Name",node->ln_Name); break; } } level--; } //E*O*F sbNode.c// echo x - sbScreen.c cat > "sbScreen.c" << '//E*O*F sbScreen.c//' /* include not needed for Aztec C using provided makefile */ #include "sb:sb.h" extern int level; extern void PrScreen2(); void PrScreen(string, screen) char *string; struct Screen *screen; { static struct StructData structdata[] = { { " NextScreen", "struct Screen *", 5, PTRSIZE }, { " FirstWindow", "struct Window *", 5, PTRSIZE }, { "-LeftEdge", "SHORT", 2, INTSIZE }, { "-TopEdge", "SHORT", 2, INTSIZE }, { "-Width", "SHORT", 2, INTSIZE }, { "-Height", "SHORT", 2, INTSIZE }, { "-MouseY", "SHORT", 2, INTSIZE }, { "-MouseX", "SHORT", 2, INTSIZE }, { " Flags", "USHORT", 12, INTSIZE }, { " Title", "UBYTE *", 4, PTRSIZE }, { " DefaultTitle", "UBYTE *", 4, PTRSIZE }, { "-BarHeight", "BYTE", 3, BYTESIZE }, { "-BarVBorder", "BYTE", 3, BYTESIZE }, { "-BarHBorder", "BYTE", 3, BYTESIZE }, { "-MenuVBorder", "BYTE", 3, BYTESIZE }, { "-MenuHBorder", "BYTE", 3, BYTESIZE } }; static char *flagnames[8] = { "WBENCHSCREEN", "CUSTOMSCREEN", NULL, NULL, "SHOWTITLE", "BEEPING", "CUSTOMBITMAP", NULL }; int sum, choice = -1; ULONG bits; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)screen, DATASIZE, 0); switch (choice = GetChoice(MAXGADG + 1)) { case 1: if (screen->NextScreen) PrScreen("The next screen in Intuition's list", screen->NextScreen); break; case 2: if (screen->FirstWindow) PrWindow("The screen's first window", screen->FirstWindow); break; case 9: if ((bits = screen->Flags) & 2) bits ^= 1; FlagPrint("The screen's flags", flagnames, bits); break; case 10: PrString("The Screen's Title", screen->Title); break; case 11: PrString("The Screen's Default Title", screen->DefaultTitle); break; case MOREGADG: PrScreen2("Screen members (page 2)", screen, sum); break; } } level--; } void PrScreen2(string, screen, offset) char *string; struct Screen *screen; int offset; { static struct StructData structdata[] = { { "-WBorTop", "BYTE", 3, BYTESIZE }, { "-WBorLeft", "BYTE", 3, BYTESIZE }, { "-WBorLeft", "BYTE", 3, BYTESIZE }, { "-WBorBottom", "BYTE", 3, INTSIZE }, { " Font", "struct TextAttr *", 5, PTRSIZE }, { "(ViewPort", "struct ViewPort)", 0, SZ(ViewPort) }, { " RastPort", "struct RastPort ", 0, SZ(RastPort) }, { " BitMap", "struct BitMap", 0, SZ(BitMap) }, { "(LayerInfo", "struct Layer_Info)", 0, SZ(Layer_Info)}, { " FirstGadget", "struct Gadget *", 5, PTRSIZE }, { "-DetailPen", "UBYTE", 13, BYTESIZE }, { "-BlockPen", "UBYTE", 13, BYTESIZE }, { "-SaveColor0", "USHORT", 12, INTSIZE }, { "(BarLayer", "struct Layer *)", 5, PTRSIZE }, { "(ExtData", "UBYTE *)", 5, PTRSIZE }, { "(UserData", "UBYTE *)", 5, PTRSIZE }, }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)screen, DATASIZE, offset); switch (choice = GetChoice(DATASIZE)) { case 5: if (screen->Font) PrTextAttr("Structure TextAttr",screen->Font); break; case 7: PrRastPort("The screen's RastPort", &screen->RastPort); break; case 8: PrBitMap("The screen's BitMap", &screen->BitMap); break; case 10: if (screen->FirstGadget) PrGadget("The screen's first gadget", screen->FirstGadget); break; } } level--; } //E*O*F sbScreen.c// echo x - sbTextAttr.c cat > "sbTextAttr.c" << '//E*O*F sbTextAttr.c//' /* module written by G. Gagnon, Mar 24, 1987 */ #include "sb:sb.h" extern int level; void PrTextAttr(string, textattr) char *string; struct TextAttr *textattr; { static struct StructData structdata[] = { { " ta_Name", "UBYTE *", 4, PTRSIZE }, { "-ta_YSize", "UWORD", 2, INTSIZE }, { "-ta_Style", "UBYTE", 3, BYTESIZE }, { "-ta_Flags", "UBYTE", 3, BYTESIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)textattr, DATASIZE, 0); switch (choice = GetChoice(DATASIZE)) { case 1: PrString("ta_Name",textattr->ta_Name); break; } } level--; } //E*O*F sbTextAttr.c// echo x - sbWindow.c cat > "sbWindow.c" << '//E*O*F sbWindow.c//' /* include not needed for Aztec C using provided makefile */ #include "sb:sb.h" extern int level; extern void PrWindow2(), PrWindow3(); void PrWindow(string, window) char *string; struct Window *window; { static struct StructData structdata[] = { { " NextWindow", "struct Window *", 5, PTRSIZE }, { "-LeftEdge", "SHORT", 2, INTSIZE }, { "-TopEdge", "SHORT", 2, INTSIZE }, { "-Width", "SHORT", 2, INTSIZE }, { "-Height", "SHORT", 2, INTSIZE }, { "-MouseY", "SHORT", 2, INTSIZE }, { "-MouseX", "SHORT", 2, INTSIZE }, { "-MinWidth", "SHORT", 2, INTSIZE }, { "-MinHeight", "SHORT", 2, INTSIZE }, { "-MaxWidth", "SHORT", 2, INTSIZE }, { "-MaxHeight", "SHORT", 2, INTSIZE }, { " Flags", "ULONG", 11, PTRSIZE }, { "(MenuStrip", "struct Menu *)", 5, PTRSIZE }, { " Title", "UBYTE *", 4, PTRSIZE }, { "(FirstRequest", "struct Requester *)", 5, PTRSIZE }, { "(DMRequest", "struct Requester *)", 5, PTRSIZE } }; static char *flagnames[32] = { "WINDOWSIZING", "WINDOWDRAG", "WINDOWDEPTH", "WINDOWCLOSE", "SIZEBRIGHT", "SIZEBOTTOM", "SIMPLE_REFRESH", "OTHER_REFRESH", "BACKDROP", "REPORTMOUSE", "GIMMEZEROZERO", "BORDERLESS", "ACTIVATE", "WINDOWACTIVE", "INREQUEST", "MENUSTATE", "RMBTRAP", "NOCAREREFRESH", NULL, NULL, NULL, NULL, NULL, NULL, "WINDOWREFRESH", "WBENCHWINDOW", "WINDOWTICKED" }; int sum, choice = -1; ULONG bits; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)window, DATASIZE, 0); switch (choice = GetChoice(MAXGADG + 1)) { case 1: if (window->NextWindow) PrWindow("The next window in Intuition's list", window->NextWindow); break; case 12: bits = window->Flags & ~SUPER_UNUSED; switch ((bits & REFRESHBITS) >> 6) { case 0: flagnames[6] = "SMART_REFRESH"; bits |= 0x40; break; case 1: flagnames[6] = "SIMPLE_REFRESH"; break; case 2: flagnames[7] = "SUPER_BITMAP"; break; case 3: flagnames[7] = "OTHER_REFRESH"; bits ^= 0x40; break; } FlagPrint("Flags set in this window", flagnames, bits); break; case 14: PrString("The Window's Title", window->Title); break; case MOREGADG: PrWindow2("Window menbers (page 2)", window, sum); break; } } level--; } void PrWindow2(string, window, offset) char *string; struct Window *window; int offset; { static struct StructData structdata[] = { { "-ReqCount", "SHORT", 2, INTSIZE }, { " WScreen", "struct Screen *", 5, PTRSIZE }, { " RPort", "struct RastPort *", 5, PTRSIZE }, { "-BorderLeft", "BYTE", 3, BYTESIZE }, { "-BorderTop", "BYTE", 3, BYTESIZE }, { "-BorderRight", "BYTE", 3, BYTESIZE }, { "-BorderBottom", "BYTE", 3, BYTESIZE }, { " BorderRPort", "struct RastPort *", 5, PTRSIZE }, { " FirstGadget", "struct Gadget *", 5, PTRSIZE }, { " Parent", "struct Window *", 5, PTRSIZE }, { " Descendant", "struct Window *", 5, PTRSIZE }, { "(Pointer", "USHORT *", 5, PTRSIZE }, { "-PtrHeight", "BYTE", 3, BYTESIZE }, { "-PtrWidth", "BYTE", 3, BYTESIZE }, { "-XOffset", "BYTE", 3, BYTESIZE }, { "-YOffset", "BYTE", 3, BYTESIZE } }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)window, DATASIZE, offset); switch (choice = GetChoice(MAXGADG + 1)) { case 2: if (window->WScreen) PrScreen("The screen referenced in the window structure", window->WScreen); break; case 3: if (window->RPort) PrRastPort("The window's RPort (RastPort)", window->RPort); break; case 8: if (window->BorderRPort) PrRastPort("The window's BorderRPort", window->BorderRPort); break; case 9: if (window->FirstGadget) PrGadget("The window's first gadget", window->FirstGadget); break; case 12: printf("Sorry, selection not implemented\n\n"); break; case 10: if (window->Parent) PrWindow("The 'parent' window", window->Parent); break; case 11: if (window->Descendant) PrWindow("The 'descendent' window", window->Descendant); break; case MOREGADG: PrWindow3("Window members (page 3)", window, sum); break; } } level--; } void PrWindow3(string, window, offset) char *string; struct Window *window; int offset; { static struct StructData structdata[] = { { " IDCMPFlags", "ULONG", 1, PTRSIZE }, { " UserPort", "struct MsgPort *", 5, PTRSIZE }, { " WindowPort", "struct MsgPort *", 5, PTRSIZE }, { "(MessageKey", "struct IntuiMessage *)", 5, PTRSIZE }, { "-DetailPen", "UBYTE", 13, BYTESIZE }, { "-BlockPen", "UBYTE", 13, BYTESIZE }, { "(CheckMark", "struct Image *)", 5, PTRSIZE }, { " ScreenTitle", "UBYTE", 4, PTRSIZE }, { "-GZZMouseX", "SHORT", 2, INTSIZE }, { "-GZZMouseY", "SHORT", 2, INTSIZE }, { "-GZZWidth", "SHORT", 2, INTSIZE }, { "-GZZHeight", "SHORT", 2, INTSIZE }, { "(ExtData", "UBYTE *)", 5, PTRSIZE }, { "(UserData", "BYTE *)", 5, PTRSIZE }, { "(WLayer", "struct Layer *)", 5, PTRSIZE } }; static char *IDCMPnames[32] = { "SIZEVERIFY", "NEWSIZE", "REFRESHWINDOW", "MOUSEBUTTONS", "MOUSEMOVE", "GADGETDOWN", "GADGETUP", "REQSET", "MENUPICK", "CLOSEWINDOW", "RAWKEY", "REQVERIFY", "REQCLEAR", "MENUVERIFY", "NEWPREFS", "DISKINSERTED", "DISKREMOVED", "WBENCHMESSAGE", "ACTIVATEWINDOW", "INACTIVEWINDOW", "DELTAMOVE", "VANILLAKEY", "INTUITICKS", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "LONELYMESSAGE" }; int sum, choice = -1; level++; while (choice) { sum = SetOptionText(string, structdata, (APTR)window, DATASIZE, offset); switch (choice = GetChoice(DATASIZE)) { case 1: FlagPrint("IDCMP flags set in this window", IDCMPnames, window->IDCMPFlags); break; case 2: if (window->UserPort) PrMsgPort("Window->UserPort",window->UserPort); break; case 3: if (window->WindowPort) PrMsgPort("Window->WindowPort",window->WindowPort); break; case 8: PrString("The screen title when this window is activated", window->ScreenTitle); break; } } level--; } //E*O*F sbWindow.c// echo x - sbio.c cat > "sbio.c" << '//E*O*F sbio.c//' /* include not needed for Aztec C using provided makefile */ #include "sb:sb.h" #define CHOICEWIDTH 280 #define CHOICEHEIGHT 8 #define SPACING 9 #define TOPGADG 30 #define PUTTEXT(text, x, y) { Move(rp, (long)x, (long)y); \ Text(rp, text, (long)strlen(text)); } struct IntuitionBase *IntuitionBase = NULL; struct GfxBase *GfxBase = NULL; struct Window *OpenWindow(), *MainWindow = NULL; struct RastPort *rp; extern int level; APTR OpenLibrary(); struct IntuiText ChoiceText[MAXGADG + 1]; struct Gadget ChoiceGadg[MAXGADG + 1]; extern void CloseOut(), Redisplay(); struct IntuiText BackIText = { 3, 2, JAM2, 5, 2, NULL, NULL, NULL }; struct IntuiText MoreIText = { 2, 3, JAM2, 5, 2, NULL, (UBYTE *)"(MORE)", NULL }; struct Gadget BackGadg = { NULL, 10, -12, 140, 12, GADGHCOMP | GRELBOTTOM, RELVERIFY, BOOLGADGET, NULL, NULL, &BackIText, NULL, NULL, 0, NULL /* gadget ID is zero */ }; struct Gadget MoreGadg = { NULL, 300, -12, 59, 12, GADGHCOMP | GRELBOTTOM, RELVERIFY, BOOLGADGET, NULL, NULL, &MoreIText, NULL, NULL, MOREGADG, NULL }; struct NewWindow NWindow = { 0, 10, 640, 189, /* left, top, width, height */ -1, -1, /* use screen colours */ GADGETUP /* IDCMP flags */ | CLOSEWINDOW, WINDOWDEPTH /* window flags */ | WINDOWCLOSE | WINDOWDRAG | RMBTRAP | ACTIVATE | NOCAREREFRESH | SMART_REFRESH, &BackGadg, /* first gadget in list */ NULL, (UBYTE *)"The Transactor Structure Browser V 1.0", NULL, NULL, 0, 0, 0, 0, /* sizing limits (non-resizable) */ WBENCHSCREEN }; void SetupGadg() { int i; for (i = 0; i < MAXGADG; i++) { ChoiceText[i].BackPen = 0; ChoiceText[i].DrawMode = JAM2; ChoiceText[i].LeftEdge = 0; ChoiceText[i].TopEdge = 0; ChoiceText[i].ITextFont = NULL; ChoiceText[i].IText = NULL; ChoiceText[i].NextText = NULL; ChoiceGadg[i].LeftEdge = 20; ChoiceGadg[i].TopEdge = i * SPACING + TOPGADG; ChoiceGadg[i].Width = CHOICEWIDTH; ChoiceGadg[i].Height = CHOICEHEIGHT; ChoiceGadg[i].Flags = GADGHCOMP; ChoiceGadg[i].Activation = RELVERIFY; ChoiceGadg[i].GadgetType = BOOLGADGET; ChoiceGadg[i].GadgetText = &ChoiceText[i]; ChoiceGadg[i].GadgetID = i + 1; /* gadget IDs start at 1 */ } } int GetChoice (num) int num; { struct IntuiMessage *GetMsg(), *message; ULONG msgclass; /* message class from IDCMP */ APTR IAddr; /* pointer to gadget from IDCMP */ Redisplay(num); /* put up choices in windows */ FOREVER { /*** main event loop ***/ Wait (1L << MainWindow->UserPort->mp_SigBit); while (message = GetMsg(MainWindow->UserPort)) { /* get what we need from the message port */ msgclass = message->Class; IAddr = message->IAddress; ReplyMsg(message); /* reply to message right away */ /* check for gadget selected */ if (msgclass == GADGETUP) return ( (int)((struct Gadget *)IAddr)->GadgetID ); /* finish up if the close gadget is clicked */ else if (msgclass == CLOSEWINDOW) CloseOut(); /* clean up and exit */ } } return(0); /* dummy to stop warning */ } void putHeader(string, ptr) char *string; APTR ptr; /* put title and pointer at top of screen - * if ptr is NULL, put string only. */ { char buf[80]; SetAPen(rp, 0L); RectFill(rp, 1L, 10L, (long)MainWindow->Width-25, 27L); SetAPen(rp, 3L); if (ptr) { sprintf(buf, "%d: %s (address $%lx):", level, string, ptr); PUTTEXT( " Member Type Value (hex/decimal)", 20L, 10L + 2 * rp->TxHeight); } else sprintf(buf, "%d: %s:", level, string); PUTTEXT(buf, 20L, 10L + rp->TxHeight); } void OpenStuff () { /* open intuition & graphics libraries and window */ if (!(IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 0L) ) ) CloseOut(); if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0L) ) ) CloseOut(); /* now attempt to open the main window */ if (!(MainWindow = OpenWindow(&NWindow)) ) CloseOut(); rp = MainWindow->RPort; /* rastport for graphics routines */ } void CloseOut() { /* close everything up before ending */ if (MainWindow) CloseWindow(MainWindow); if (IntuitionBase) CloseLibrary(IntuitionBase); if (GfxBase) CloseLibrary(GfxBase); exit(0); /* exit program - we may be deeply nested */ } void Redisplay(num) int num; /* clear window, remove old gadgets, prepare and add new ones */ { struct Gadget *gadg; BOOL MoreFlag = FALSE; int i, c; SetAPen(rp, 0L); /* rectfill with background colour to clear */ RectFill(rp, 1L, (long)TOPGADG, (long)MainWindow->Width - 2, (long)MainWindow->Height - 2); if (num > MAXGADG) { num = MAXGADG; MoreFlag = TRUE; /* put up "more" gadget */ } /* remove all choice gadgets */ gadg = &BackGadg; while (gadg = gadg->NextGadget) RemoveGadget(MainWindow, gadg); /* render gadgets according to single-digit code at * the start of the gadget's intuitext */ for (i = 0; i < num; i++) { ChoiceText[i].FrontPen = 1; if ((c = *ChoiceText[i].IText) == '-' || c == '(') { if (c == '-') { *ChoiceText[i].IText = ' '; ChoiceText[i].FrontPen = 2; } PrintIText(rp, &ChoiceText[i], (long)ChoiceGadg[i].LeftEdge, (long)ChoiceGadg[i].TopEdge); } else AddGadget(MainWindow, &ChoiceGadg[i], -1L); } if (MoreFlag) AddGadget(MainWindow, &MoreGadg, -1L); /* display gadget imagery (the text) */ RefreshGadgets(&BackGadg, MainWindow, NULL); } void SetBackText (sflag) int sflag; { BackIText.IText = (UBYTE *)(sflag ? " Previous Page " : " Previous Level "); } //E*O*F sbio.c// echo Possible errors detected by \'wc\' [hopefully none]: temp=/tmp/shar$$ trap "rm -f $temp; exit" 0 1 2 3 15 cat > $temp <<\!!! 249 941 6869 sb.c 43 278 1747 sb.doc 24 68 551 sb.h 15 19 201 sb.lnk 104 381 3947 sbGadget.c 142 578 5368 sbGraphics.c 40 141 1351 sbIntuiText.c 60 210 2176 sbMsgPort.c 38 112 1005 sbNode.c 108 435 4154 sbScreen.c 28 86 754 sbTextAttr.c 195 747 7555 sbWindow.c 211 773 6176 sbio.c 1257 4769 41854 total !!! wc sb.c sb.doc sb.h sb.lnk sbGadget.c sbGraphics.c sbIntuiText.c sbMsgPort.c sbNode.c sbScreen.c sbTextAttr.c sbWindow.c sbio.c | sed 's=[^ ]*/==' | diff -b $temp - exit 0 -- UUCP: kim@amdahl.amdahl.com or: {sun,decwrl,hplabs,pyramid,ihnp4,seismo,oliveb,cbosgd}!amdahl!kim DDD: 408-746-8462 USPS: Amdahl Corp. M/S 249, 1250 E. Arques Av, Sunnyvale, CA 94086 CIS: 76535,25 [ Any thoughts or opinions which may or may not have been expressed ] [ herein are my own. They are not necessarily those of my emplodic al
kim@amdahl.UUCP (Kim DeVaughn) (05/04/87)
[ "Send lawyers, guns, and money ..." ] begin 755 sb M #\P = !P " "5 )D %4 C 70 M #( !P0 88 !R !$0 )L %L !"0 N< U 7 M " C 6P +8 S - !NT #K +0 #$ < M,@ ^D "3OD /L 0 !< " _( /I M "5$Y5__R_^0 1D!D[Y %''#_*T#__$ZY $ZY #-$JM__QG M3D*G2'D $3KD 'F4(\C_ !\ 0(_P _ &' !+P!.N0 M 5)8CRM __P,@ %FOB\Y $AY 3V$.4(]@K$ZY #I$Y=3G5. M5?_XO_D $9 9.^0 !1QP_RM __A2N0 !*K?_X9P GB!M Q"IW % M+P O"$AY ]"\M AA >$3^\ %'(%+P$K0/_\3KD %26(\K0/_X#( M %9T@,@ 1G)@R V:N(&T #$JH #1GI"\H #1(>0 41.N0 M !0CV"0(&T #"\H #A(>0 6!.N0 !0CV _W@@;0 ,+R@ /$AY ! M?$ZY %"/8 #_7E.Y $Y=3G5.5?_(2.<# +_Y !&0&3OD 4< M("T "')03KD !E(($#1_ B;0 ,+RD !"\12'D &A+PA.N0 !G!/ M[P 0(&T #" H @,@ YD ("Y8!.^P@"8 -F #I@ !@8 B& M *Y@ $J8 !X& =Q@ '88 !U& =!@ %48 !>& 9Y"+?_08 ! MO"!M !#1[0 4( @@0"X0+P<O!TAY !K$AM_]!.N0 !G!/[P 08 !DB!M M !#1[0 4( @@0#P02,8O!B\&2'D &X2&W_T$ZY &<$_O !!@ %F(&T M$-'M !0<$$B&2,8O!B\&2'D '#2&W_T$ZY &<$_O !!@ $\(&T $-'M M !0@""! +A!*AV862'D '.2&W_T$ZY &<%"/8 !%$*M_\P@+?_,#( M >;!8@1]' 2A!G#B!'T< ;D C14JW_S&#><"(B+?_,&X 8T1M _]!"-1C2 M($?1P4H09P TDAY !TTAM_]!.N0 !JA0CV +P@;0 0T>T %" (($ N M$$J'9A9(>0 ==(;?_03KD 9P4(]@ "4+P<O!TAY !W$AM_]!.N0 M!G!/[P 08'@@;0 0T>T %" (($ N$"\'+P=(>0 >E(;?_03KD 9P3^\ M$&!0(&T $-'M !0@""! /!!(QB\&+P9(>0 ?9(;?_03KD 9P3^\ $& F M(&T $-'M !0<$$B&2,8O!B\&2'D (!2&W_T$ZY &<$_O ! @+0 (<E!. MN0 &4@@0-'\ $AM_] O"$ZY &J%"/("T "'(43KD !E(($#1_ M 0@+0 (<E O2 (3KD !E(($#1_ B;P ((T@ #$S? ,!.74YU3E7_ MT$CG( "_^0 1D!D[Y %'' $*T#_]' !+P!.N0 !>98CT*M__P@+?_\ M#( (;%IR4$ZY 92"! T?P 2'D (,+PA.N0 %*!0CR M__QR M%$ZY 92"! T?P $("W__')0+T@ !$ZY 92"! T?P (F\ !"-( M Q2K?_\8)I"IR\M A.N0 >90CW *T#__"M __@@+?_\#( @; MM'(!X:$D+0 0Q(%*@F< )SE@"!M S1P$J09P CB M__SE@"!M S1P"\0 M2'D (.2&W_U$ZY &<$_O P@+?_X<E!.N0 &4@@0-'\ $AM_]0O M"$ZY &J%"/4ZW_]$JM__1F/B M__AR%$ZY 92"! T?P $("W_^')0 M+T@ !$ZY 92"! T?P (F\ !"-( Q2K?_X< 0K0/_T4JW__& _T(, MK0 3_]&PT("W_^'(43KD !E(($#1_ 0@+?_X<E O2 $3KD !E( M($#1_ B;P $(T@ #" M__A2@"\ 3KD %26(]*@&;L3-\ !$Y=3G5. M5?ZXO_D $9 9.^0 !1Q"K?_\(_P (4 & RM_____P 49@@K? ' M__\ %"!M PO""\(+RT "$AY ")4AM_KA.N0 !G!/[P 40J=(;?ZX3KD M 'F4(\,K0 !#__&8$0JW__ RM $/_\;#1*K0 4;RX@+?_\4JW__"\M M !0O "\M ! O+0 ,84A/[P 0!*T 0 !0&K0 ! #&#"2JT %&\$<!%@ M!" M__PO $ZY !4EB/*T#_^$JM !1O# RM &?_X9P#_6DY=3G5.5?^H MO_D $9 9.^0 !1P@+0 0<E!.N0 &4@@0-'\ "\M A(>0 D@O M"$ZY &<$_O Q";?_^#*T 0 !1L!B M !1@ G 0<@ R+?_^LH!D $* M("T # R !&< *(,@ )G; R 68 +9P # M__X@;0 (T< 0 M$ ) /\[0/_\ H /__+T .B(($#1_ C<0$$B 2, B+P H$ / M($'1_ C<2$$B!2,$O 2\ 2'D )02&W_K$ZY &<$_O !!@4G ,"W_ M_B!M C1P" (($ R$$C!+P%(>0 E9(;?^L3KD 9P3^\ #& F< P+?_^ M(&T "-' ( @@0"\02'D )<2&W_K$ZY &<$_O P@+0 0<E!.N0 &4@@ M0-'\ $AM_ZPO"$ZY &J%"/< P+?_^T*T ##M __Y@ /[<("T $'(4 M3KD !E(($#1_ 0@+0 0<E O2 3KD !E(($#1_ B;P (T@ M#$Y=3G5.5?_XO_D $9 9.^0 !1Q*K0 89P1P 6 "< O $ZY %YEB/ M+RT $"\M A.N0 >90CW *T#__"M __@@+?_\L*T %&P^Z8 @;0 ,T< @ M+?_XT*T &"\ +RT $"\(+RW__&$ ^*!/[P 0("W__.F (&T #-' ("@ #-&M M__A2K?_\8+@@+?_XT*T &$Y=3G5.5?_\O_D $9 9.^0 !1Q"IR\M A. MN0 >90CR\M Q.N0 $018CU* +P!.N0 !L!8CR! $+P +2M(__Q2B"\M M PO"$ZY 4H%"/(^W__ !!P 2\ 3KD %26(\O+?_\3KD <B6(]. M74YU #[ !\ " 'Q@ !YX =R '8@ !TH ;2 &" M!> 3J $3@ Y0 -L #0@ QH , "V H )6 " M+ @ &$ !1@ 30 $: ! @ +8 "< ;@ $8 \ M +@ L # (- !^@ ;( %H !5 4, $A !$@ M /P #M@ 70 / " "&8 0F >@ "3H :& %M@ M - !4 (] "'8 8B $G@ #0 @ &@ , ) M: !>0 !* !P H DP (' !8@ 4X $; ]@ ! M @ L $Z !( $ - !" #$ 7 )1@ "0P M D ))@ !%8 ?T %& \( +B 'T !Z@ =\ &V@ M!A( 3T #G@ W8 -, #) PH ** "8 C8 (* ! MC ""P @4 'X !L 68 %@ !4@ 4P %! !'P 1D M $0 ^@ /0 #K@ 6P CH (4@ !K0 76 $%@ 6 M "0 #@ @ 8 (X "$H :L %S@ ! X %8 B M 8 #\@ ^H "9 $-H;V]S92!A(&QI8G)A<GD@<W1R=6-T M=7)E "!);G1U:71I;VX@(" @(" @<W1R=6-T($QI8G)A<GD ("!1=6ET("!0 M<F]G<F%M %1H92!);G1U:71I;VY"87-E('-T<G5C='5R90 H3&EB36]D90!S M=')U8W0@3&EB<F%R>2D *%9I97=,;W)D '-T<G5C="!6:65W*0 @06-T:79E M5VEN9&]W '-T<G5C="!7:6YD;W<@*@ @06-T:79E4V-R965N '-T<G5C="!3 M8W)E96X@*@ @1FER<W138W)E96X <W1R=6-T(%-C<F5E;B J &L !T M "( "$ C@ 2 FP *D % ! +D M #' !0 0 #7 Y 4 $5&AE(&-U<G)E;G1L>2!A8W1I M=F4@=VEN9&]W %1H92!C=7)R96YT;'D@86-T:79E('-C<F5E;@!4:&4@9FER M<W0@<V-R965N(&]N($EN='5I=&EO;B=S(&QI<W0 )2TQ-G,E+3(T<P D)3AL M>" @)3!L9 D)3AX(" E,3!D "0E.'@@("4Q,&0 3E5,3 N+BX 3E5,3 D M)3AL>" @)3$P;&0 )"4X;'@@("4Q,&QU "0E.'@@("4Q,'4 )"4X>" @)3$P M=0 M "4M,3ES "!%>&ET($AE>"!$=6UP(" )7,@9G)O;2 E;'@@*"5L9"D M,#$R,S0U-C<X.4%"0T1%1@ M)39L>#H@ "5C)6,@ "4P-'@@ "4P.&QX( M #[ H " !. 30 $H !) 1@ $4 !" 00 M #X ] /R #ZP 50 /R #Z0 (Q.5?_R2.<@ +_Y M !&0&3OD 4<</\K0/_X4KD 2JW_^&< ?@@;0 ,0J=P#R\ +PA( M>0 1@O+0 (3KD A$3^\ %'(/+P$K0/_\3KD %26(\K0/_X<B@$@0 M AKNK"[& AF\D[[& 8 +8 !A@ A@ #D !V +8 &8 M) %@ "(&T #$J09X O$$AY $R&$ _U10CV _W @;0 ,,"@ ##M M__8"@ __\"@ ,,@ 1D2.. 3OL( F &8!9@(& J(_P 3L " M9@CM #_]V H(_P 3V "9F <(_P 3_ ":F 0(_P 4* ":@AM M #_]W ,"W_]B\ 2'D )F2'D 443KD 0$3^\ #& _N9P "!M PP M* .+P!(>0 T9(>0 !2Y.N0 ! 1/[P ,8 #^P"!M PP* 0.T#_]@* M #__R] 0( /9T "@ _P B+P $ H$ #PZ(E3@70!XZ* @CM __8" M@ __\O $AY #]$AY %4TZY $!$_O Q@ /YD,"W_]@) _P R+?_V M D$ #U-!= 'C8H!".T#_]@* #__R\ 2'D 2(2'D 5Y3KD 0$3^\ M#& _B8@;0 ,2J@ &F< _AHO* :2'D 6?3KD 4(]@ /X$4[D M3-\ !$Y=3G4 ^P % 0 ?( &T !6 3( !" M @ ( (B '@ !, % "$ >P 'F !K@ :@ %2 M !3 2P $F !$@ 0X $& ! @ /H #V Z .0 M "F . $ ( 5 $ / "%@ $ 7 $@ M $ 8 "@ /R #Z@ 70@3F5X=$=A9&=E= !S=')U8W0@ M1V%D9V5T("H +4QE9G1%9&=E %-(3U)4 "U4;W!%9&=E %-(3U)4 "U7:61T M: !32$]25 M2&5I9VAT %-(3U)4 "!&;&%G<P!54TA/4E0 ($%C=&EV871I M;VX 55-(3U)4 "!'861G9714>7!E %532$]25 H1V%D9V5T4F5N9&5R $%0 M5%(I "A396QE8W1296YD97( 05!44BD ($=A9&=E=%1E>'0 <W1R=6-T($EN M='5I5&5X=" J "U-=71U86Q%>&-L=61E $Q/3D< *%-P96-I86Q);F9O $%0 M5%(I "U'861G971)1 !54TA/4E0 +55S97)$871A $%05%( P M % ! !P F @ ( L -0 ( " .P M $( " @ $@ !0 @ ( !6 70 P " M9 ' , @ '< "# # ( "* F 4 $ M G@ *P % ! +( "^ !0 0 #1 X $ M $ Y0 /( % ! /@ $" # ( $) !$P M 4 $1T%$1TA"3U@ 1T%$1TA)34%'10!'041'24U!1T4 1U)%3$)/5%1/ M30!'4D5,4DE'2%0 1U)%3%=)1%1( $=214Q(14E'2%0 4T5,14-4140 1T%$ M1T1)4T%"3$5$ @@ (1 "' B8 (Q ".P D4 )0 " M60 !214Q615))1ED 1T%$1TE- M345$24%410!%3D1'041'150 1D],3$]734]54T4 4DE'2%1"3U)$15( 3$5& M5$)/4D1%4@!43U!"3U)$15( 0D]45$]-0D]21$52 %1/1T=,15-%3$5#5 !3 M5%))3D=#14Y415( 4U1224Y'4DE'2%0 3$].1TE.5 !!3%1+15E-05 0D]/ M3$585$5.1 "I@ K *^ "R M0 +@ "ZP O4 ," M ##P QP ,H #, SH %-)6DE.1P!71%)!1T=)3D< M4T1204='24Y' %=54$923TY4 %-54$923TY4 %=$3U=.0D%#2P!31$]73D)! M0TL 0TQ/4T4 4D511T%$1T54 $=:6D=!1$=%5 !30U)'041'150 4UE31T%$ M150 #A@ XT .7 #H0 ZH .S #O0 \< M #S0 ]< /A #ZT)/3TQ'041'150 1T%$1T54,# P,@!0 M4D]01T%$1T54 %-44D=!1$=%5 !215%'041'150 1UI:1T%$1T54 %-#4D=! M1$=%5 !365-'041'150 !#0 0_ $2@ !%4 M !%\ 1I $<P !'U4:&4@;F5X="!G M861G970@:6X@26YT=6ET:6]N)W,@;&ES= !'041'2$-/35 1T%$1TA"3U@ M1T%$1TA)34%'10!'041'2$Y/3D4 1FQA9W,@<V5T(&9O<B!T:&ES(&=A9&=E M= !!8W1I=F%T:6]N(&9L86=S('-E="!F;W(@=&AI<R!G861G970 1V%D9V5T M('1Y<&4@9FQA9W,@<V5T(&9O<B!T:&ES(&=A9&=E= !'861G970@='EP92!F M;&%G<R!S970@9F]R('1H:7,@9V%D9V5T %1H92!G861G970G<R!F:7)S="!T M97AT("A);G1U:51E>'0@<W1R=6-T=7)E*0 /L 20 4 3$ M $P !+P 2X $E !) 2, $B !# 0L $* !"0 M 00 $# ! @ 0$ $ _P /X #] WH -V #<@ M VX -J #9@ V( -> #6@ U8 -2 #3@ TH -& " MA@ H( )^ ">@ G8 )R ";@ FH )F !_ ?@ 'L M !Z =P '8 !S <@ &\ !N :P &H !G 9@ M &, !B 7P %X !; 6@ %< !6 4P %( !/ M 3@ $L !* 1P $8 _( /I R$Y5__B_^0 1D M!D[Y %''#_*T#_^%*Y $JM__AG8"!M Q"IW &+P O"$AY 6"\M M A.N0 "$1/[P 4<@8O 2M __Q.N0 5)8CRM __A=@&;"(&T #%"(< B M;0 ,,"D G( ,A$O 2\ +PA(>0 +AA$$_O !!@FE.Y $Y=3G5.5?_X MO_D $9 9.^0 !1QP_RM __A2N0 !*K?_X9P CD*G< @O "\M Q( M>0 8@O+0 (3KD A$3^\ %'((+P$K0/_\3KD %26(\K0/_X#( ! M;;X,@ ANMN6 68 @;0 ,T<!*D&>H("W_^.F ($#1_ 7@@+?_XY8!9 M@")M S3P# M !+ [0 6+P!R!"\!+Q$O$$ZY %R$_O !!@ /]N4[D M3EU.=4Y5__B_^0 1D!D[Y %''#_*T#_^%*Y $JM__AG=B!M Q" MIW 0+P O"$AY #*B\M A.N0 "$1/[P 4<A$O 2M __Q.N0 5)8CRM M__@,@ !EG) R F:V(&T #$JH 1GK"\H 1(>0 !"IA /XX4(]@ MFB\M__PO+0 ,2'D 1&81!/[P ,8(13N0 !.74YU3E7_^+_Y !&0& M3OD 4<</\K0/_X4KD 2JW_^&< 00@;0 ,+RT $' 0+P O"$AY % M<B\M A.N0 "$1/[P 4<A O 2M __Q.N0 5)8CRM __AR( 2! "&NX ML+L8"&;R3OL8!@ !!@ ", #V %X .8 , -@ "(&T M#-#\ "AP""\ <@$O 2\(2'D 9R3KD 7(3^\ $& _VH@;0 ,T/P 3G . M+P!R B\!+PA(>0 !I5.N0 !<A/[P 08 #_1"!M S0_ !&< @O '($+P$O M"$AY &N$ZY %R$_O !!@ /\>(&T #-#\ %QP""\ <@$O 2\(2'D ;? M3KD 7(3^\ $& _OA3N0 !.74YU #[ D ! #"@ N0 M *^ "F 30 (N !A@ ,H \ " ( ,8 "" M >8 %D !0@ *@ "& &@ P ' #! MX *X " MD@ B0 '8 !P@ 7P $. P '@ R ! @ ) M !F -P !. ! !< '\ !6 )P . ! !@ M 'T !4 )0 & _( /J !P2U">71E<U!E<E)O=P!5 M5T]21 M4F]W<P!55T]21 M1FQA9W, 54)95$4 +41E<'1H %5"651% "U0 M860 55=/4D0 (%!L86YE<ULX70!03$%.15!44@ #0 P " M $P !D , @ !\ F #0 $ L ,P T M ! .0 #X , @ $0 !/ !0 "!":710;&%N97,@ M8F5L;VYG('1O('1H92!":71-87 ($)I=%!L86)E6S!= %!,04Y%4%12 "!" M:710;&%B95LQ70!03$%.15!44@ @0FET4&QA8F5;,ET 4$Q!3D505%( ($)I M=%!L86)E6S-= %!,04Y%4%12 "!":710;&%B95LT70!03$%.15!44@ @0FET M4&QA8F5;-5T 4$Q!3D505%( ($)I=%!L86)E6S9= %!,04Y%4%12 "!":710 M;&%B95LW70!03$%.15!44@ UP .0 % ! .T #Z M!0 0 $# !$ 4 $ !&0 28 % ! 2\ $\ M !0 0 %% !4@ 4 $ !6P 6@ % ! 7$ M %^ !0 0H3&%Y97( <W1R=6-T($QA>65R("HI "!":71-87 <W1R M=6-T($)I=$UA<" J "U!<F5A(%!T<FX 55-(3U)4("H *%1M<%)A<P!S=')U M8W0@5&UP4F%S("HI "A!<F5A26YF;P!S=')U8W0@07)E84EN9F\@*BD *$=E M;'-);F9O '-T<G5C="!'96QS26YF;R J*0 M36%S:P!50EE410 M1F=096X M0EE410 M0F=096X 0EE410 M04]L4&5N $)95$4 +41R87=-;V1E $)95$4 M+4%R96%0=%-I>F4 0EE410 M;&EN<&%T8VYT $)95$4 +61U;6UY $)95$4 M*$9L86=S %532$]25 M3&EN95!T<FX 55-(3U)4 @@ (/ !0 M 0 (? ")P 4 $ "-P D( % ! DL )3 M!0 0 )D ";@ 4 $ "@0 HL % ! IX *D M #0 $ *J "L0 , ! "M@ KT # 0 L( M +* P $ +/ "V0 , ! "W@ NH # 0 M N\ +Z P $ +_ #!@ , ! #"P Q( , M @ QD ,C # )4:&4@0FET36%P(&9O<B!T:&4@4F%S=%!O<G0 M36]R92!287-T4&]R="!M96UB97)S "UC<%]X %-(3U)4 "UC<%]Y %-(3U)4 M "!M:6YT97)M<ULX70!50EE410 M4&5N5VED=&@ 4TA/4E0 +5!E;DAE:6=H M= !32$]25 H5&5X=$9O;G0 <W1R=6-T($9O;G0@*BD +4%L9V]3='EL90!5 M0EE410 H5'A&;&%G<P!50EE410 M5'A(96EG:'0 55=/4D0 +51X5VED=&@ M55=/4D0 +51X0F%S94QI;F4 55=/4D0 +51X4W!A8VEN9P!73U)$ "U24%]5 M<V5R %=/4D0 ('=O<F1R97-E<G9E9%LW70!55T]21 @;&]N9W)E<V5R=F5D M6S)= %5,3TY' "!R97-E<G9E9%LX70!50EE410 $7 !&( " M @ !&@ 1N @ ( 1T $@0 ( $AP !)$ " M @ !)< 2B @ ( 2H $L@ 4 $ $P0 !,P M - 0 !-( 3; #0 $ 3A $ZP P " $\0 M!/H , @ !0 4, # ( 42 %'0 ( " % M(@ !2L " @ !3 5! X 5' %6 ( M %7@ !6L "$AE>&1U;7 @;V8@4F%S=%!O<G0@;6EN=&5R;7,@ M8GET97, 2&5X9'5M<"!O9B!R97-E<G9E9"!287-T4&]R="!W;W)D<P!(97AD M=6UP(&]F(')E<V5R=F5D(%)A<W10;W)T(&QO;F=W;W)D<P!(97AD=6UP(&]F M(')E<V5R=F5D(%)A<W10;W)T(&)Y=&5S #[ %P ' &9@ M!F( 96 &4@ !D8 9" &-@ !C( 8F &(@ !A8 82 & M!@ !@( 7V %\@ !>8 7B %U@ !=( 7& %P@ !;8 6R M %I@ !:( 66 %D@ !88 6" %=@ !7( 0> $&@ ! X M 0* #_@ _H /N #Z@ ]X /: #S@ \H .^ #N@ M ZX .J #G@ YH .. #B@ WX -Z #;@ VH -> # M6@ TX -* #/@ SH ,N #*@ ?P 'X O #3 M_ 0A20 :(&\ !-'\ !6" M__Q2@#% "92K?_\8 #^RDY=3G5.5?_T MO_D $9 9.^0 !1PO+0 (80 "EEB/(GD ((&D 5G $"@ #W(!X:$O M 4ZY 7%B/('D (+R@ 5DZY <%B/*T#__$J 9\@@0"MH !3_^"MH M !S_]"\ 3KD "$6(\,K0 $#_^&8.(&W_]' ,"@ )DY=3G4,K0 @#_ M^&:L80 !PF"F3E7_L$CG, "_^0 1D!D[Y %'$*G+SD 3KD !8 M4(\@>0 @P* (2, $@ !ER&R\!+P!T"B\"=@$O R\Y $ZY M.$_O !1P R\ +SD 3KD !84(]*K0 ,9W0O+0 ,+RT ""\Y $AY M [$AM_[!.N0 !G!/[P 4('D ,"@ .@* #__^. !H *+P!R M%"\!+PA.N0 !Q/[P ,2'D $^3KD !$$6(\O $AY ! R\Y $ZY M $_O Q@'B\M @O.0 !(>0 7E(;?^P3KD 9P3^\ $' ('D M ,"@ .@: "B\ <A0O 2\(3KD <3^\ #$AM_[!.N0 $018CR\ M2&W_L"\Y $ZY $_O Q,WP ,3EU.=;_Y !&0&3OD 4<0J=( M>0 8%.N0 *Q0CR/ $J 9@)A1D*G2'D &33KD "L4(\CP M 1*@&8"82I(>0 +Q.N0 #!8CR/ "$J 9@)A$"!Y ""/H #( M 3G6_^0 1D!D[Y %'$JY "&<.+SD (3KD <6(]*N0 M !G#B\Y $ZY F%B/2KD $9PXO.0 1.N0 )A8CT*G3KD M 6 6(].=4Y5_^Y(YS O_D $9 9.^0 !1Q";?_Z0J<O.0 !.N0 M %A0CR!Y "# H A(P%6 ,B@ "DC!58$O 2\ =!XO G8!+P,O.0 !. MN0 #A/[P 4#*T 0 AO#' 0*T "#M\ '_^BM\ //_\(FW__"!1 M*TC__+'\ &<2+P@O.0 A.N0 'Q0CV#<0JW_]B M__:PK0 (; M^G(43KD !E(($#1_ 00O !($#1_ 0B: ,< 0$2M __(,@ M "UG"@R *&8 (X,K0 "W_\F8H("W_]G(43KD !E(($#1_ 0B M: ,$KP ("! T?P $$+P B M__9R%$ZY 92"! T?P $("W_]G(L M+T@ "$ZY 92"! T?P %8,B@ !$C!($#1_ 5@P* &2, O "\!+R\ M$"\Y $ZY 1$_O !!@*B M__9R+$ZY 92"! T?P %8</\O "\( M+SD (3KD 3^\ #%*M__9@ /[^2FW_^F<:</\O $AY :"\Y M"$ZY $_O Q"IR\Y "$AY /$ZY 8$_O Q,WP ,3EU.=4Y5 M "_^0 1D!D[Y %'$JM AG"$'Y !I& &0?D &U(\@ 83EU. M=0 #[ ( " "S@ EX ? "0 !@X 8( & M!= 7* %N !;( 60 $D !'0 0L #Z ^ /2 # MR@ [P .T #E@ XH -\ #< V( -4 #1@ M0 *R M "H@ F0 (. !C@ 7 D "@ !80 5D %4 !4( M 4J %$@ !0( 3& $N@ !$X 0> #G@ QX +J "N M G@ )" "+@ @ $X !*@ 2 $2 ! @ /0 #D MU *P "> @@ '8 !H 7 $X ! - !0 7 M #^ Q *H "W@ FX 5\ %.@ !2( 3Z $L@ +P M "2 * !?0 02 #K@ SX 'X !8 X ' & M!>P 0* #I@ S8 'P !6 8 ' &@ ^X /8 # M: TP &X !F 88 ) &P R0 *^ # @ I@ 14 M "- !"0 )( "!@ < < %U@ !;X 66 %:@ !)8 M /" #@@ /R #Z@ '( # @$ 4 @ M "A-3U)%*0 @,! % ( ( K_ M] ", P " ! $ P !+/_T M #L # ( $ 0 * !D 5&AE(%1R86YS M86-T;W(@4W1R=6-T=7)E($)R;W=S97(@5B Q+C H"@ "]__\ ) M ,0#@ #P E 25D.B E<R H861D M<F5S<R D)6QX*3H ($UE;6)E<B @(" @(" @(%1Y<&4@(" @(" @(" @(" @ M(" @(" @5F%L=64@*&AE>"]D96-I;6%L*0 @365M8F5R(" @(" @(" @5'EP M92 @(" @(" @(" @(" @(" @("!686QU92 H:&5X+V1E8VEM86PI "5D.B E M<SH :6YT=6ET:6]N+FQI8G)A<GD 9W)A<&AI8W,N;&EB<F%R>0 @4')E=FEO M=7,@(%!A9V4@ "!0<F5V:6]U<R!,979E;" /L !0 D #6 M S@ (( !6 - /R #ZP 1$ /R #Z0 )M. M5?_TO_D $9 9.^0 !1QP_RM __A2N0 !*K?_X9P !/B!M Q"IW 0 M+P O"$AY !&"\M A.N0 "$1/[P 4<A$O 2M __Q.N0 5)8CRM __AR M, 2! "&NZL+L8"&;R3OL8!@ !E@ #6 "V +0 *8 D@ M E@ !0 F "8 !8 B!M Q*D&< _W@O$$AY "<F$ _TY0 MCV _V8@;0 ,2J@ !&< _UHO* $2'D *63KD 4(]@ /]$< @;0 , M,"@ %"M __0( !9P@(0 *T#_]"\M__1(>0 E)(>0 K!.N0 ! 1/ M[P ,8 #_"B!M PO* 62'D +#3KD C:4(]@ /[P(&T #"\H !I(>0 M M9.N0 "-I0CV _M8O+?_\+RT #$AY "\6$23^\ #& _KY3N0 !. M74YU3E7_^+_Y !&0&3OD 4<</\K0/_X4KD 2JW_^&< -(@;0 , M+RT $' 0+P O"$AY $6"\M A.N0 "$1/[P 4<A O 2M __Q.N0 5)8 MCRM __@$@ 5MN@R !FRRXX!.^P@"8 I@J& D8#Y@HF!6(&T #$JH M "AGEB\H "A(>0 !5A.N0 !0CV""(&T #-#\ %0O"$AY %:TZY ! M2E"/8 #_:"!M S0_ "X+PA(>0 !8%.N0 !0CV _TP@;0 ,2J@!1F< M_T O* %&2'D 653KD 4(]@ /\J4[D 3EU.=0 ^P % M 0 4 $F !"@ :P ^ ! ( )D !A@ 60 : M 0 0 )8 @ 8 (V "&@ ( ( !O@ % M - # E( (P "% ?H &B !5 3H $@ !! M /X #, K #0 ! #0 -( ! $0 @ " M%P 7H . @ !@ %R !@ /R #Z@ 6P@3F5X M=%-C<F5E;@!S=')U8W0@4V-R965N("H ($9I<G-T5VEN9&]W '-T<G5C="!7 M:6YD;W<@*@ M3&5F=$5D9V4 4TA/4E0 +51O<$5D9V4 4TA/4E0 +5=I9'1H M %-(3U)4 "U(96EG:'0 4TA/4E0 +4UO=7-E60!32$]25 M36]U<V58 %-( M3U)4 "!&;&%G<P!54TA/4E0 (%1I=&QE %5"651%("H ($1E9F%U;'14:71L M90!50EE412 J "U"87)(96EG:'0 0EE410 M0F%R5D)O<F1E<@!"651% "U" M87)(0F]R9&5R $)95$4 +4UE;G560F]R9&5R $)95$4 +4UE;G5(0F]R9&5R M $)95$4 P % ! !P I !0 0 Y M0P ( " 20 %( " @ %@ !? @ ( !E M ;0 ( " <P 'L " @ ($ ") @ ( M "/ E@ P " G0 *0 $ ! *P "Z ! M 0 #" S0 , ! T@ -X # 0 ., #O M P $ #T ! 0 , ! !!@ 1, # 5="14Y#2%-# M4D5%3@!#55-43TU30U)%14X 4TA/5U1)5$Q% $)%15!)3D< 0U535$]-0DE4 M34%0 (8 ")0 ",@ CP )$ %1H92!N97AT M('-C<F5E;B!I;B!);G1U:71I;VXG<R!L:7-T %1H92!S8W)E96XG<R!F:7)S M="!W:6YD;W< 5&AE('-C<F5E;B=S(&9L86=S %1H92!38W)E96XG<R!4:71L M90!4:&4@4V-R965N)W,@1&5F875L="!4:71L90!38W)E96X@;65M8F5R<R H M<&%G92 R*0 M5T)O<E1O< !"651% "U70F]R3&5F= !"651% "U70F]R3&5F M= !"651% "U70F]R0F]T=&]M $)95$4 ($9O;G0 <W1R=6-T(%1E>'1!='1R M("H *%9I97=0;W)T '-T<G5C="!6:65W4&]R="D (%)A<W10;W)T '-T<G5C M="!287-T4&]R=" ($)I=$UA< !S=')U8W0@0FET36%P "A,87EE<DEN9F\ M<W1R=6-T($QA>65R7TEN9F\I "!&:7)S=$=A9&=E= !S=')U8W0@1V%D9V5T M("H +41E=&%I;%!E;@!50EE410 M0FQO8VM096X 54)95$4 +5-A=F5#;VQO M<C 55-(3U)4 "A"87),87EE<@!S=')U8W0@3&%Y97(@*BD *$5X=$1A=&$ M54)95$4@*BD *%5S97)$871A %5"651%("HI PD ,2 P $ M ,7 #(0 , ! #)@ S # 0 S4 -! P M ( -& #3 4 $ #7@ V@ * WD .# M &0 .4 #G H #J@ [4 9@ \@ /5 M !0 0 /E #\ T ! #]@ ! - 0 ! 8 M 02 # ( 09 $(P 4 $ $,P !#P % ! M!$4 1/ !0 13=')U8W1U<F4@5&5X=$%T='( 5&AE('-C<F5E;B=S M(%)A<W10;W)T %1H92!S8W)E96XG<R!":71-87 5&AE('-C<F5E;B=S(&9I M<G-T(&=A9&=E= #[ $4 , %3 !4@ 4\ %. !2P M 4H %' !1@ 4, %" !/P 3X $[ !.@ 3< $V M!,P 3( $O !+@ 2L $J !)P 28 $C !(@ 1\ $ M> !&P 1H $7 !%@ )J "9@ F( )6 "4@ @P (( M !_ ?@ 'L !Z =P '8 !S <@ &\ !N :P M &H !G 9@ &, !B 7P %X !; 6@ %< !6 M 4P %( !/ 3@ $L !* 1P $8 _( /I ! M"4Y5__2_^0 1D!D[Y %''#_*T#_^%*Y $JM__AG $^(&T #$*G M<! O "\(2'D $L+RT "$ZY (1$_O !1R$2\!*T#__$ZY !4EB/*T#_ M^'(@!($ (:[JPNQ@(9O).^Q@& &6 -8 .8 M Q@ D M 6 (@;0 ,2I!GB"\02'D .F80#_8%"/8 #_>"!M P@* 8 H # M ___*T#_] * P.R(#( $9$CC@$[[" )@!F 68"!@*B/\ #R@ M SX([0 &__=@*"/\ #V SY@'"/\ #YP T)@$"/\ #] T(( M;0 &__<O+?_T2'D ,F2'D 0"3KD 0$3^\ #& _O @;0 ,+R@ ($AY M $&TZY (VE"/8 #^UB\M__PO+0 ,2'D 0N81)/[P ,8 #^OE.Y M $Y=3G5.5?_XO_D $9 9.^0 !1QP_RM __A2N0 !*K?_X9P !?B!M M PO+0 0<! O "\(2'D 6,+RT "$ZY (1$_O !1R$2\!*T#__$ZY ! M4EB/*T#_^') !($ (:[BPNQ@(9O).^Q@& &6 10 +8 [ M I@ #$ #& *H )8 @ A@ !6 V "P "8 M B!M Q*J N9P#_9"\H "Y(>0 !HQ.N0 !0CV _TX@;0 ,2J@ ,F< M_T(O* R2'D :Z3KD %*4(]@ /\L(&T #$JH #IG /\@+R@ .DAY & MV$ZY !2E"/8 #_"B!M Q*J ^9P#^_B\H #Y(>0 !O%.N0 !0CV M_NA(>0 !PM.N0 H18CV _M8@;0 ,2J@ 0F< _LHO* !"2'D <N80#] M,E"/8 #^MB!M Q*J !&9P#^JB\H $9(>0 !T)A /T24(]@ /Z6+RW__"\M M Q(>0 !UIA$D_O Q@ /Y^4[D 3EU.=4Y5__B_^0 1D!D[Y % M''#_*T#_^%*Y $JM__AG #>(&T #"\M !!P#R\ +PA(>0 "*XO+0 ( M3KD A$3^\ %'(/+P$K0/_\3KD %26(\K0/_X!( !;;H,@ AL MLN. 3OL( F .8"Y@3F"D8*)@H&">8&8@;0 ,+R@ 4DAY *J$AY +*$ZY M $!$_O Q@ /]\(&T #$JH %9G /]P+R@ 5DAY +1TZY %"/8 #_ M6B!M Q*J !:9P#_3B\H %I(>0 "UA.N0 !0CV _S@@;0 ,+R@ :$AY M +:TZY (VE"/8 #_'E.Y $Y=3G4 /L !P $ 00 ! M0 [ $D #6 :P ^ !@ ( 0< #,@ Q && M !9 !H ! ! IH " !@ G@ )6 P @ M -J !O@ % ! "P C0 = #@ ! H /P #S@ M ZH .D #3@ P +H "R J8 *4 "<@ E (N ! MH@ 50 $Z !'@ 1@ $( !! /P #X \ .P #> M V@ )H T @ !, /V #U 0 7 "K R8 M %Z #@ , 8 #'@ 7( & _( /J "YR!. M97AT5VEN9&]W '-T<G5C="!7:6YD;W<@*@ M3&5F=$5D9V4 4TA/4E0 +51O M<$5D9V4 4TA/4E0 +5=I9'1H %-(3U)4 "U(96EG:'0 4TA/4E0 +4UO=7-E M60!32$]25 M36]U<V58 %-(3U)4 "U-:6Y7:61T: !32$]25 M36EN2&5I M9VAT %-(3U)4 "U-87A7:61T: !32$]25 M36%X2&5I9VAT %-(3U)4 "!& M;&%G<P!53$].1P H365N=5-T<FEP '-T<G5C="!-96YU("HI "!4:71L90!5 M0EE412 J "A&:7)S=%)E<75E<W0 <W1R=6-T(%)E<75E<W1E<B J*0 H1$U2 M97%U97-T '-T<G5C="!297%U97-T97(@*BD , !0 0 M < )@ ( " + #4 " @ #L !" @ M ( !( 4 ( " 5@ %X " @ &0 !L M @ ( !R ? ( " @@ (T " @ ), "= M @ ( "C K@ ( " M +L + ! ,$ M #, !0 0 #; X@ 0 $ Z@ /@ % ! M 0P $7 !0 1724Y$3U=325I)3D< 5TE.1$]71%)!1P!724Y$3U=$ M15!42 !724Y$3U=#3$]310!325I%0E))1TA4 %-)6D5"3U143TT 4TE-4$Q% M7U)%1E)%4T@ 3U1(15)?4D5&4D532 !"04-+1%)/4 !215!/4E1-3U5310!' M24U-15I%4D]:15)/ $)/4D1%4DQ%4U, 04-4259!5$4 5TE.1$]704-4259% M $E.4D5154535 !-14Y54U1!5$4 4DU"5%)!4 !.3T-!4D52149215-( %=) M3D1/5U)%1E)%4T@ 5T)%3D-(5TE.1$]7 %=)3D1/5U1)0TM%1 "+ M CD )$ "4 EP )G "<@ H$ */ "F J0 *R " MO0 L8 +3 "W0 N< +O M "_0 PL ,8 !4:&4@;F5X="!W:6YD M;W<@:6X@26YT=6ET:6]N)W,@;&ES= !334%25%]2149215-( %-)35!,15]2 M149215-( %-54$527T))5$U!4 !/5$A%4E]2149215-( $9L86=S('-E="!I M;B!T:&ES('=I;F1O=P!4:&4@5VEN9&]W)W,@5&ET;&4 5VEN9&]W(&UE;F)E M<G,@*'!A9V4@,BD +5)E<4-O=6YT %-(3U)4 "!74V-R965N '-T<G5C="!3 M8W)E96X@*@ @4E!O<G0 <W1R=6-T(%)A<W10;W)T("H +4)O<F1E<DQE9G0 M0EE410 M0F]R9&5R5&]P $)95$4 +4)O<F1E<E)I9VAT $)95$4 +4)O<F1E M<D)O='1O;0!"651% "!";W)D97)24&]R= !S=')U8W0@4F%S=%!O<G0@*@ @ M1FER<W1'861G970 <W1R=6-T($=A9&=E=" J "!087)E;G0 <W1R=6-T(%=I M;F1O=R J "!$97-C96YD86YT '-T<G5C="!7:6YD;W<@*@ H4&]I;G1E<@!5 M4TA/4E0@*@ M4'1R2&5I9VAT $)95$4 +5!T<E=I9'1H $)95$4 +5A/9F9S M970 0EE410 M64]F9G-E= !"651% 1& $4 ( " $5@ M!%\ % ! !&\ 1V !0 0 2( $E , ! $ MF0 !*0 # 0 !*D 2V P $ 2[ $R0 , ! M $S@ !-L % ! !.T 3Z !0 0 4* %$@ 4 M $ %(@ !2X % ! !3X 5' !0 0 50 %6P M , ! %8 !6H # 0 !6\ 5X P $ 5] % MA@ , !5&AE('-C<F5E;B!R969E<F5N8V5D(&EN('1H92!W:6YD;W<@ M<W1R=6-T=7)E %1H92!W:6YD;W<G<R!24&]R=" H4F%S=%!O<G0I %1H92!W M:6YD;W<G<R!";W)D97)24&]R= !4:&4@=VEN9&]W)W,@9FER<W0@9V%D9V5T M %-O<G)Y+"!S96QE8W1I;VX@;F]T(&EM<&QE;65N=&5D"@H 5&AE("=P87)E M;G0G('=I;F1O=P!4:&4@)V1E<V-E;F1E;G0G('=I;F1O=P!7:6YD;W<@;65M M8F5R<R H<&%G92 S*0 @241#35!&;&%G<P!53$].1P @57-E<E!O<G0 <W1R M=6-T($US9U!O<G0@*@ @5VEN9&]W4&]R= !S=')U8W0@37-G4&]R=" J "A- M97-S86=E2V5Y '-T<G5C="!);G1U:4UE<W-A9V4@*BD +41E=&%I;%!E;@!5 M0EE410 M0FQO8VM096X 54)95$4 *$-H96-K36%R:P!S=')U8W0@26UA9V4@ M*BD (%-C<F5E;E1I=&QE %5"651% "U'6EI-;W5S95@ 4TA/4E0 +4=:6DUO M=7-E60!32$]25 M1UI:5VED=&@ 4TA/4E0 +4=:6DAE:6=H= !32$]25 H M17AT1&%T80!50EE412 J*0 H57-E<D1A=&$ 0EE412 J*0 H5TQA>65R '-T M<G5C="!,87EE<B J*0 '<@ !WX ! ! !X0 >. !0 M 0 >? 'JP 4 $ 'O !\@ % ! !]\ ?J M#0 $ ?P '^@ T ! ( " L % ! "!L @H M ! 0 @N (.0 ( " (/P "$H " @ "% M A: @ ( A@ (:P ( " (<0 "'H % ! M"(, B- !0 0 B5 (G0 4 $4TE:159%4DE&60!.15=3 M25I% %)%1E)%4TA724Y$3U< 34]54T5"55143TY3 $U/55-%34]610!'041' M151$3U=. $=!1$=%5%50 %)%45-%5 !-14Y54$E#2P!#3$]315=)3D1/5P!2 M05=+15D 4D515D522499 %)%44-,14%2 $U%3E5615))1ED 3D574%)%1E, M1$E32TE.4T525$5$ $1)4TM214U/5D5$ %="14Y#2$U%4U-!1T4 04-4259! M5$5724Y$3U< 24Y!0U1)5D5724Y$3U< 1$5,5$%-3U9% %9!3DE,3$%+15D M24Y454E424-+4P!,3TY%3%E-15-304=% F> )J0 ";$ F_ ) MS "=8 GA )Z@ "?$ GZ *!@ "@T H7 *( "BL HT M *00 "DT I; *:@ "GD J# *C@ M *F4E$0TU0(&9L86=S('-E="!I;B!T:&ES('=I M;F1O=P!7:6YD;W<M/E5S97)0;W)T %=I;F1O=RT^5VEN9&]W4&]R= !4:&4@ M<V-R965N('1I=&QE('=H96X@=&AI<R!W:6YD;W<@:7,@86-T:79A=&5D M #[ (L . +) "P K\ *^ "O0 KP *[ "N@ M KD *X "MP K8 *U "M K, *R "L0 K *O M"K@ JT *L "JP JH )D@ "8X F" )?@ "7( EN ) M8@ "5X E2 )3@ "4( D^ ),@ "2X DB )'@ "1( D. M ) @ "/X CR ([@ ".( C> (T@ ",X C" (O@ "+( M BN &@ !GP 9P &; !F 9< &4 !DP 9 &/ M!C 8L &( !AP 80 &# !@ 7\ %\ !>P 7@ % MW != 7, %P !;P 6P %K !: 6< %D !8P .. M #B@ X8 -J #9@ V( -> #6@ U8 -2 #3@ TH M -& #0@ SX ,Z #-@ S( ,N #*@ R8 (@ "' M A (, " ?P 'P ![ > '< !T <P ' ! MO ; &L !H 9P &0 !C 8 %\ !< 6P %@ M !7 5 %, !0 3P $P !+ /R #Z0 #5. M5?_XO_D $9 9.^0 !1QP_RM __A2N0 !*K?_X9P IB!M Q"IW ( M+P O"$AY F"\M A.N0 "$1/[P 4<@@O 2M __Q.N0 5)8CRM __@, M@ AG2 R !V<F#( &9JP@;0 ,2J@ "&>B+R@ "$AY !&$ZY M %"/8(X@;0 ,+R@ #$AY !*TZY (VE"/8 #_=B!M Q*J 09P#_ M:B\H !!(>0 4AA /\^4(]@ /]64[D 3EU.=0 ^P " 0 M * ^ @ ( #, &@ $ ( 4 0 0 MO )H "" - $ 1 B $ 7 #@ $ 8 M !@ /R #Z@ %PM1G)O;G1096X 54)95$4 +4)A8VM096X M54)95$4 +41R87=-;V1E %5"651% "U,969T161G90!32$]25 M5&]P161G M90!32$]25 @251E>'1&;VYT '-T<G5C="!497AT071T<B J "!)5&5X= !5 M0EE412 J "!.97AT5&5X= !S=')U8W0@26YT=6E497AT("H * M P $ 0 &0 , ! 'P "D # @ "\ M Y @ ( _ 2 ( " 3@ %D % ! M &L !R ! 0 !Z A 4 $4W1R=6-T=7)E(%1E>'1! M='1R %1H92!T97AT('!O:6YT960@=&\@8GD@251E>'0 5&AE(&YE>'0@26YT M=6E497AT(&EN($EN='5I=&EO;B=S(&QI<W0 ^P 0 $ 0P M $( _ /@ #L Z -P #8 S ,@ "\ N M *P "H G )@ #\@ ^D @3E7_^+_Y !&0&3OD M 4<</\K0/_X4KD 2JW_^&=2(&T #$*G< 0O "\(2'D !"+RT "$ZY M (1$_O !1R!"\!*T#__$ZY !4EB/*T#_^ R 6:^(&T #"\02'D M ""3KD C:4(]@J%.Y $Y=3G4 /L @ $ !N / M ( " > !H ! " $X " $@ &@ R M 0 !< . 0 !@ & _( /J (R!T85].86UE M %5"651%("H +71A7UE3:7IE %573U)$ "UT85]3='EL90!50EE410 M=&%? M1FQA9W, 54)95$4 ) ! 0 1 &P ( " M (0 "L # 0 #$ [ P %T85].86UE # M[ @ 2 =@ '( !F 8@ %8 !2 1@ $( M #\@ ^D !;3E7_^+_Y !&0&3OD 4<</\K0/_X4KD 2JW_ M^&< 3P@;0 ,0J=P#R\ +PA(>0 4PO+0 (3KD A$3^\ %'(/+P$K0/_\ M3KD %26(\K0/_X!( ";;P,@ QLM.6 3OL( F "Y@ !(8 #_ MI& _Z!@ !>8 #_F& _Y1@ /^08 #_C& &1@ ""8 H"!M Q*D&< M_W8O$$AY "/$ZY %"/8 #_8B!M Q*J $9P#_5B\H 1(>0 E5. MN0 !0CV _T @;0 ,+R@ "DAY ";DZY (VE"/8 #_)B!M Q*J 4 M9P#_&B\H !1(>0 G].N0 !0CV _P0@;0 ,2J@ &&< _O@O* 82'D M *;3KD 4(]@ /[B(&T #$JH !QG /[6+R@ '$AY "MTZY %"/ M8 #^P%.Y $Y=3G4 ^P " 0 / ^ @ ( M %B &@ $ ( 4 < 4 !4 2X $, Z@ M - "N - 4 5 !5@ 30 $2 U@ +0 ! M%P X ! & 8 #\@ ^H "V+6UP7TYO9&4 3F]D M92!S=')U8W1U<F4 (" @+FQN7U-U8V, <W1R=6-T($YO9&4@*@ @(" N;&Y? M4')E9 !S=')U8W0@3F]D92 J "T@("YL;E]4>7!E %5"651% "T@("YL;E]0 M<FD 0EE410 @(" N;&Y?3F%M90!#2$%2("H +6UP7T9L86=S %5"651% "UM M<%]3:6=":70 54)95$4 *&UP7U-I9U1A<VL <W1R=6-T(%1A<VL@*BD +6UP M7TUS9TQI<W0 3&ES="!S=')U8W1U<F4 (" @+FQH7TAE860 <W1R=6-T($YO M9&4@*@ @(" N;&A?5&%I; !S=')U8W0@3F]D92 J " @("YL:%]486EL4')E M9 !S=')U8W0@3F]D92 J "T@("YL:%]4>7!E %5"651% "T@("YL7W!A9 !5 M0EE410 "0 & "0 % ! #( ^ M !0 0 !, 6 T ! 7@ &D # 0 &X M !Z ! 0 "! BP T ! D0 )P - 0 M *( "N !0 0 "] R0 V .0 % M! /( #^ !0 0 $, !' 4 $ !*@ 38 - M 0 3P %& #0 %-<V=0;W)T+3YM<%].;V1E+FQN7U-U8V, M37-G4&]R="T^;7!?3F]D92YL;E]0<F5D &UP7TYO9&4M/FQN7TYA;64 37-G M4&]R="T^;7!?37-G3&ES="YL:%](96%D $US9U!O<G0M/FUP7TUS9TQI<W0N M;&A?5&%I; !-<V=0;W)T+3YM<%]-<V=,:7-T+FQH7U1A:6Q0<F5D /L M '@ !0 (P "+ B (< "$ @P ( !_ ? M 'L !X =P '0 !S < &\ !L :P &@ !G M 9 &, !@ 7P %P !; 6 %< !4 4P # M\@ ^D S3E7_^+_Y !&0&3OD 4<</\K0/_X4KD 2JW_^&< M )X@;0 ,0J=P!2\ +PA(>0 %PO+0 (3KD A$3^\ %'(%+P$K0/_\3KD M %26(\K0/_X#( %9T8,@ )G( R 6:L(&T #$J09Z0O$$AY M K&$ _WQ0CV"4(&T #$JH 1GBB\H 1(>0 +IA /]@4(]@ /]X(&T M#"\H I(>0 ,A.N0 "-I0CV _UY3N0 !.74YU #[ ( ! M N #X " @ ,0 : 0 @ !0 ! !8 M "R F@ 'X T 0 !< . 0 !@ & M _( /J -"!L;E]3=6-C '-T<G5C="!.;V1E("H (&QN7U!R960 <W1R M=6-T($YO9&4@*@ M;&Y?5'EP90!50EE410 M;&Y?4')I $)95$4 (&QN7TYA M;64 54)95$4@*@ D % ! !< @ !0 0 M N -P 0 ! /0 $4 # 0 $H !3 ! M 1.;V1E+3YL;E]3=6-C $YO9&4M/FQN7U!R960 ;&Y?3F%M90 /L M"@ !8 "@ G ) ", @ 'P !P ; & !< M _( /I &[2/ 4"/( 5" /2.=^_BI +'D $(\X M ! (\\ !,0KD !(D\E.KO[:*$ C[ "8 .$JL *QG "*( V0K0 $ M(\ $80 !S$*G3KD P6(\@0"!H *S1R-'((F@ $-/)T\D@.0 %!R M !(9(\D !<T(%2@$)G4H "0/_^G\!5@$)W" @.0 % @>0 %0D %. MU($?L ( !3@E'(__8?O @( !3@A^Q( @ %'*__@B3R\)8 ="/L #H M $80 !2&$ 3(CP $@O "1 ("H )&<6+'D "D($ B* (\$ X M3J[_@B(J "!G'"0\ #[4ZN_^(CP %AG"N6(($ I: ( *0@>0 $@O M"$AY "!H "0CZ $ 7$WY "8" \ 4V<*4X!R "S!4<C__$WY M $ZY "O' 8 0@+P $+P @.0 "QG!"! 3I!.N0 %Z8L>0 $ B M>0 *1.KOYB2KD "<9PHB>0 )Q.KOYB2KD "@9PHB>0 *!.KOYB M2KD !@9PHB>0 &!.KOYB2KD !(9RPB.0 #QG!$ZN_]PB.0 %AG M!$ZN_]PL>0 1.KO]\(GD !(3J[^AB ?+GD !,3-]_?DYU<&1@ /]@ M0>P 7$ZN_H!![ !<3J[^C$YU0_D !D< !.KOW8(\ "D9]1.=4Y5 !2 MN0 F!3N0 =8@.0 =9*@&L8('D '.4KD '.("T "!" <@ 2$& : M("T " * _TAY !RB\ 3KH+"E"/(@!.74YU3E4 $*Y "8$AM PO M+0 (2'K_G$ZZ"D9/[P ,2'D '*</\O $ZZ"M90CR Y "8$Y=3G5.5?_X M2.<!&"AM @,N0 " )D; KG $!0,@ "!G#@R "6<&# M"F8$4HQ@XA 42@!G "((#D )DY8!2N0 F0@0-'\ ";"9($!0, B M9C)2C":,< 0%$J 9PP,@ ")G!%*,8.P0%$H 9@QP 2\ 3KH$T%B/8()" M%%*,8 #_?":,< 0%$J 9QH,@ "!G$@R "6<*# "F<$4HQ@WA 4 M2@!F F (0A12C& _TA*N0 F1F""!Y 2& &0?D )L(\@ )H2KD M )D9GHB>0 $@@:0 D<"@O "\H 1(>0 '!.N@%T3^\ #"\\ #[DAY M <$ZZ 2A0CR/ #$"/ #&'($(\$ ,4(\ ,@(\$ ,<Y8!" MIR/ "\$ZZ /Y8CR!Y "\") (V@ " "D?@ CP NQ@+DZZ .PCP M Q!.N@#H(\ ,8+SP /M2'D "83KH NE"/(\ ,@?@0@!P" " M 8&Y ##" ' ( ( "@;D ,4 +D ( # #'$JY J&<$< !@!B \ M " "X (_D ,0 !Q" ' ( !(\ ' (_D ,8 !YB ' ( M "(\ 'B(_D ,@ """ ' ( " (\ ($0?H"WB/( ,"\Y M ":"\Y "9$ZZ "!0CT*G3KH D%B/3-\8@$Y=3G5.^0 !.^0 #!. M^0 !.^0 &A.^0 '@ ;2YY 3$ZY %Z"\\ %$ZY %@$Y5 M__PO+0 (3KH+QEB/(&T "-' *TC__" M !!3K0 02H!O&B!M P0$")M__P2 M@%*M Q* &<&4JW__&#:(&W__$(0("T "$Y=3G5.5?_T*WP &H__1*K?_T M9T@@;?_T""@ @ ;9C(@;?_T""@ 0 ;9R8@;?_T("@ !)"H ! K0/_X2H!G M$B\ +R@ $"\H !Q.NA &3^\ #"!M__0K4/_T8+(O+0 (3KH",%B/3EU.=4JY M &840J=(>0 01.N@!04(\CP C^0 %P "X<"@O "\\ M^G( +P$O 4AY \"\!2'D #6+P%.N@ 43^\ (' 4+P!.N@'46(].=0 M3OD "43OD "L3E4 %*Y "^" M @@>0 O00@%*Y "]$Y=3G5. M50 0KD +X(^T " O1(;0 0+RT #$AZ_\1.N@923^\ #"!Y "]$(0 M(#D +X3EU.=2!O @B;P $2AEF_%.)$MAF_" O 1.=4Y5__A*N0 OQG M&B!Y "_"\0+P@K2/_X3KH34%"/0KD +\2JT "&8&< !.74YU6*T ""\M M A.N@W06(\K0/_\2H!F!G 3EU.=2!M__P@K0 (*TC_^%B(( A.74YU3E4 M $*G8998CR!M A9B"/( "_' 3EU.=4Y5__0@;0 (68@@"") (A%9@2M M__PK0?_TL+D +\9PA"IV$ _UQ8CR\M QA /]26(\K0/_X2H!G+B M PB M+?_TLH!C!"M __0O+?_T+RT ""\M__A.N@F<3^\ #"\M AA /]^6(\@+?_X M3EU.=4JY &840J=(>0 91.NOZ(4(\CP C^0 %P %4<#PO M "\\ ^G( +P$O 4AY !@$AY !9DAY !2"\!3KK^2$_O "!3@&<$ M</].=7 3G4 $Y5__A(YP$(?@!)^0 PR^N0 D1L'DJ49Q0(+ " -G M F *+RP !$ZZ"*!8CU*'4(Q@VB\M PO+0 (3KKY%E"/3-\0@$Y=3G5.5?_$ M2.<@(' &WP (/_[<@ K0?_V=/\K0O_R0>W_T!M __$;0/_\&T#__1M __X; M0/__*T'_Y"M!_^@K2/_,(&T "! 02@!G7G( $A!P( 2 "&M0LKL("&;R M3OL(!@ "-@ R (& "( K8 $@ "U@ "&WP ?__8!@; M? !__Y@$!M\ '__6 (&WP ?_\3G%2K0 (8)@@;0 ($! , P9@H;? P M__M2K0 ((&T "! 0# *F82)&T #")26)(K4?_V4JT "& 22&W_]B\M A. MN@@>4(_1K0 ((&T "! 0# +F8T4JT ""!M @0$ P "IF$B)M P@45B1 M*U#_\E*M A@$DAM__(O+0 (3KH'WE"/T:T ""!M @0$ P &QF"AM\ '_ M\5*M @@;0 ($!!2K0 (&T#_\ * _W(X!($ (:P ";+"[& AF\$[[ M& 8 !C8 "0 '-@ 'X 6& 8( !X8 !>@ &]@ $D M=6 /@ !D8 DHM__%G#")M P@45B1(!!@"B)M P@45B1(! K0/_L M2H!J"G(!*T'_Z$2M_^Q*K?_H9P1P+6 ,2BW__F<$<"M@ G @&T#_T' $"W_ M_B(M_^B"@' $"W__8* 2H%G"%*M_\Q2K?_D+RW_["\M_\Q.N@>$4(\K0/_( M2JW_\FH&< $K0/_R("W_R"(M__*2@"M!_\1*@6\T(&W_S-'!+P O+?_,+PA. MN@:*3^\ #' $"W_^R\M_\0O "\M_\Q.N@963^\ #"MM__+_R" M_\C1K?_D M0>W_T"M(_\Q*+?__9P !4!M\ "#_^V 49*+?_Q9PPB;0 ,(%%8D2 08 HB M;0 ,(%%8D2 0*T#_[& _UA*+?_Q9PPB;0 ,(%%8D2 08 HB;0 ,(%%8D2 0 M*T#_[$HM__QG$B!M_\P0O P4JW_S' !*T#_Y"\M_^PO+?_,3KH&_E"/*T#_ MR& _QQ*+?_Q9PPB;0 ,(%%8D2 08 HB;0 ,(%%8D2 0*T#_[$HM__QG'B!M M_\P0O P4JW_S"!M_\P0O !X4JW_S' "*T#_Y"\M_^PO+?_,3KH'!%"/*T#_ MR PM %C_\&8 _KQ(;?_03KH'3%B/8 #^KB)M P@45B1(E K2?_,L_P M9@@K? A#_S"\M_\Q.N@406(\K0/_D2JW_\FLR(BW_\K"!;RHK0?_D8"1P M 2M _^0B;0 ,(%%8D2 0&T#_T$(M_]%@"G 3-\$!$Y=3G4@+?_VL*W_Y&P& M0JW_]F (("W_Y)&M__9*+?__9T)3K?_D("W_Y$J :QAP "!M_\P0$%*M_\PO M "!M !!.D%B/8-Q3K?_V("W_]DJ :U1P ! M__LO "!M !!.D%B/8.)3K?_V M("W_]DJ :Q)P ! M__LO "!M !!.D%B/8.)3K?_D("W_Y$J :QAP "!M_\P0 M$%*M_\PO "!M !!.D%B/8-P@+0 (3-\$!$Y=3G5.5?_V*VT $/_V(&T #! 0 M4JT #!M __\"@ /]*@&=\#( E9C0@;0 ,$! , E9@92K0 ,8"(O M+0 (2&W_]B\M QA /LP3^\ #"M __I*@&<&*T #&"L2KD T9R0(+0 ' M__]G'' $"W__R\ (&T "$Z06(\@;0 ,&U#__U*M QP ! M__\O "!M A. MD%B/8 #_;DY=3G5.5?_L*VT "/_T(&T #" H !@"@ #!*@&<&</].74YU M(&T #" H !@"@ @ !6P40!2(%(P1M!__Y*J 49@ I@@H ( &V8 )QP M "% P,K?____\ "&8$3EU.=2\M Q.N@5<6(]*@&<0(&T # CH 4 &W#_ M3EU.=2!M P(Z ! !M*+?_^9PP@* 41( A0 ,8 H@;0 ,(6@ % ,(&T M#%.H P@* ,2H!K%")H 12J $("T "!* <@ 2$6 8("T " * _R\M M PO &$ _R10CR( ( %.74YU(&T # @H ( &V=T#*W_____ AF!G 3EU. M=2 M @;0/__2BW__F<L#( *9B1P B\ 2'D (4(&T #"\H !PK0/_P M3KH$^D_O PK0/_X8"!P 2\ 2&W__R!M PO* <*T#_\$ZZ!-A/[P ,*T#_ M^'#_*T "& 2P@;0 ,""@ ;9P9P_TY=3G4@;0 ,".@ 0 ;2BW__F=@ M#*W_____ AG5E2H P,K0 H "&8F(F@ !%*H 02O -2J@ #&L,+PAP M_R\ 80#^1%"/(&T #%*H PB;0 ,(&D !%*I 0@+0 ($(!*J0 ,:@1.74YU M</\K0 ((&T #" H 20J 0*T#_\$J 9P D @H 8 &F=H< (O $*G+R@ M'$ZZ")Q/[P ,*T#_[$HM__YG3%.M_^P@+?_L2H!K0$*G+P @;0 ,+R@ '$ZZ M"')/[P ,< $O $AM__T@;0 ,+R@ '$ZZ!$)/[P ,2KD 89@P0+?_]# M&F>V3G$O+?_P(&T #"\H ! O* <3KH#JD_O PK0/_X8 1"K?_X#*W_____ M__AF#"!M P(Z % !M@%" M__BPK?_P9PH@;0 ,".@ ! ;2BW__F<0(&T M#" H !1$@"% Q@"B!M PA: 4 PB;0 ,(&D $"-( 0@+0 (#(#_____ M9S13J0 ,(BD #$J!:Q @:0 $4JD !!" <@ 2$& 8("T " * _R\M PO M &$ _-Y0CR( (&T #" H !@"@ #!*@&<&</].74YU#*W_______1F!G M3EU.=2 M__1.74YU3E4 $JY ,&<$3KH*:B\M A.N@ *6(]P $Y=3G5. M^0 !P "!O 0,& 9OI3B)'O 0@"$YU(&\ !" O QO"B(O @0P5. M9OH@+P $3G4 "!O @B;P $("\ #&\6L\AE#-' T\ 3(%. 9OI@!A+84X!F M^B O 1.=0 3E7_\' (&T "!(0*T#__"M __@K0/_P# $ +68,< $K0/_X M*T#_\& 2(&T "! 0# *V8&< $K0/_X(&T "-'M__AP ! 0+P!.N@+06(]* M@&<H("W__'(*3KH'C"!M C1[?_X4JW_^'( $A $@0 ##0@2M __Q@P$JM M__!G!$2M__P@;0 ,(*W__" M__A.74YU !.5?_P< LK0/_P0BW__U.M__ @ M+0 ,<@I.N@>(!H$ P("W_\!N!"/0@+0 ,<@I.N@=P*T #$JM QFT$'M M__31[?_P+P@O+0 (3KH"6E"/< N0K?_P3EU.=4Y5__!P"RM __!"+?__4ZW_ M\" M P"@ <&@ # B+?_P&X 8]" M SF@ * '____RM Q*K0 , M9LY![?_TT>W_\"\(+RT "$ZZ ?Q0CW +D*W_\$Y=3G4 $Y5__)"+?_[< @K M0/_\4ZW__" M P"@ \@0-'\ "&" M__P;D CS("T #.B H /____ M*T #$JM QFS$'M__/1[?_\+P@O+0 (3KH!FE"/< B0K?_\3EU.=4Y5__PK M;0 (__P@;?_\2A!G&' $! O $ZZ 898CR!M__P0@%*M__Q@X" M A.74YU M !.50 (&T "$JH !1G#@@H , &V8&< !.74YU+SD (L3KH!8%B/(&T M""% 0A0 02H!F#G ,(\ )(</].74YU(&T ""%Y "+ 4 JC____S M !AP "% PA0 (3EU.=4Y5_^HO+0 (3KH%+EB/*T#_ZDJ 9@9P_TY=3G4@ M;?_J""@ P #9Q)P B\ 0J<O+0 (3KH"2$_O PO+0 0+RT #"!M_^HO* $ M3KH!U$_O PK0/_Z2KD 89P9P_TY=3G4@+?_Z3EU.=4Y5__Q(YP$ 2KD M P9P1.N@<F0KD 8+RT $"\M PO+0 (3KH ,D_O PN R'_____V82 M3KH &B/ &' %(\ )(( =,WP" 3EU.=4[Y I$[Y ,$Y5 @ M+0 (#( P;0P,@ #EN!' !8 )P $Y=3G4 "!O @B;P $$MAF_" O M 1.=0 ("\ ! P &%M"@P 'IN! 0 "!.=0 3E4 "\M AA!EB/3EU. M=4Y5_^Q(YR<X+BT "$J';@IP $S?'.1.74YU#(< (; )^"" '5H#D@.6 M+@!'^0 E@H4[G\ &=:("P !+"'94RPAV86)I2?N0 EP@#"!,( A, MWQSD3EU.=2 L 20APR "&4D(@P@3-'') @D0B24)4 !":*G[D )< M($P@"$S?'.1.74YU)DPH5&">( <B.0 CS0@5. 3KH#YB(Y "/$ZZ [Q0 M@"H ( 56@.2 Y8 J "\%3KH U%B/+ !*AF<:+P4O!DZZ!'Q0CR\'80#_)%B/ M3-\<Y$Y=3G5P $S?'.1.74YU !.5?_\2.<! $JY ,&<$3KH%<D*Y M&"\M ! O+0 ,+RT "$ZZ "Q/[P ,+@ ,A_____]F$DZZ_F8CP !AP!2/ M "2" '3-\ @$Y=3G5.^0 $P 7TY5__HO+0 (3KH"LEB/2H!F!G#_3EU. M=2\M ! O+0 ,+RT "$ZZ >)/[P ,*T#_^DJY &&<&</].74YU("W_^DY= M3G4 $Y5__P@+0 (!H ,0J<O $ZZ :90CRM __Q*@&8&< !.74YU(&W_ M_" M @&@ PA0 (+PA(>0 P!A $P4(]*N0 DQF""/M__P ), M(&W__-#\ P@"$Y=3G5.5?_\+RT "&&26(\K0/_\2H!G!$Y=3G4@?/____\@ M"$Y=3G5.5?_X2.<!"&$ *!P "/ $"/ ""/ #"/ "6"/ M "7"/ "4"/ "3"/ "5$JY "0&=:(#D (\(CD ) TH!3 M@2 !(CD (\3KH"#"(Y "/$ZZ >)0@"X ( =6@.2 Y8 N "\'80#^^EB/ M*$"Y_ !F"G#_3-\0@$Y=3G4O!R\,3KH"E%"/< !,WQ" 3EU.=4Y5__@K M>0 P#__$JM__QG'"!M__PK4/_X+R@ ""\(3KH 8%"/*VW_^/_\8-Z1R"/( M #!"/( # $Y=3G5.50 (&T "")M PC: $ 21R"*((&T "$J09@(@ MB2!M A*J $9P@@: $(*T #"!M @A;0 , 1.74YU !.^0 !A.^0 M !.5?_\2.<! $JY ,&<$3KH##D*Y &" M !#E@"! T?P (P+Q O M+0 ,+RT "$ZZ 'A/[P ,+@ ,A_____]F$DZZ^_8CP !AP%B/ "2" M M ! ,@ )G)@R 6<02H!F-" M Q,WP" 3EU.=2 'T*T #$S? (!. M74YU< O "\ +RT "$ZZ !A/[P ,3-\ @$Y=3G5,WP" 3EU.=0 3OD "( MD&].5?_\< CP !@K0/_\("W__+"Y "1&PTYX @0-'\ ##$J09R @ M0-'\ ##"(H 2RK0 (9@X@0-'\ ##" (3EU.=5*M__Q@P' )(\ )( M< !.74YU @0B)#) F 4A"2$/$P<; P,'40TA"0D+0@B8)) A.=4J :@ M'D2 2H%J ,1(%A @1(%.=6$ !A$@$2!3G5*@6H Q$@6$ 9$@$YU M+P)(030!9@ (DA 2$%(0C0 9P !H3!, )(0#0 A,$P DA",@(D'TYU+P-V M$ Q! (!D &X9E10PQ!" !D &Z9E90PQ!( !D &Y9E50TI!:P !N.9 M4T,T .:H2$)"0N:J2$. P38 , (T TA!Q,&0@F0 A30]"!9/YR #(#2$/G MN$A P4$F'R0?3G5.5?_\("T #"\ +RT ""M __QA!E"/3EU.=4Y5_^A(YP,X M+BT #$J';@IP_TS?',!.74YU#(< (; )^"" '5H#D@.6 +@ D;0 ((&T M"-''( @L -^Y "7$?Y "6"A3N?P 9P IB ,($S1[ $(@@K0?_L ML(9C$B2,)4< !":*< !,WQS 3EU.=;G&9A@DE" 'T*P !"5 0FBG 3-\< MP$Y=3G6U[?_L9!"?N0 EQP_TS?',!.74YUM>W_[&8Z2I1G%+R48Q"?N0 M EQP_TS?',!.74YUWZP !$J49Q"\E&8,($8@* $T:P !"B0< !,WQS 3EU. M=29,*VW_[/_H*%1@ /]4)HJ1R"2()4< !" (3-\<P$Y=3G4 $Y5__PO/ M, !"ITZZ $I0CP* P "M __Q*@&8&< !.74YU2KD P9QX@>0 #!. MD$J 9@9P $Y=3G5"IW 4+P!.NNQT4(\@+?_\3EU.=6&J3G5.^0 $0Z&@ M ^P ! 0 !0H $ "0 !\@ >R & !>H $ M%P !20 4P !>@ 5X "M & &X0 !M\ ; &N( !J* M :A &3P !DH 9%@ &0H !C^ 8\ &(8 !A^ 82@ &#X M !A8 78 %U8 !=$ 72@ %SP !<D 7'@ %Q@ !<2 7# M%S8 !<P 7*@ %L8 !:\ 7W@ %]@ !>L 6L %EX !86 6 M#@ %>8 !7: 5A@ %7@ !5> 5*@ %0P !1B 46@ %#( !0F M 4" $X0 !.4 39@ $M0 !#B /X@ #J0 U" +Z ""( M @< 'S@ !_0 ?N 'Z !]( >\ '6@ !S0 ;B &S@ M!L8 :@ &F !GX 9V &: !F 96 &!@ !B@ 8@ & M"@ !?0 6& %'@ !-8 3, $O@ !+0 2F $G !(X 1V M $N@ !*( 2* $< !&8 18 $2 !# 0F #] ^X M /H #X ]H .H #C !.( 3< $&@ ! H /^ #H M YH .4 #A PX ,& "_@ LX 0\ #S@ [H *D " M<@ E8 )0 "1@ D *T "B@ CH &J !H@ 9@ &0 M !6 4 (L !A@ .X (@ !_ ? ': !S@ <8 M &\ !M 8 %N !.@ 2X $F !% /H #> T M )P "6 ? '( !, . "@ B ' @ " M" !D !CB 6)@ %'( !1X 0_@ !18 40 $_@ 8 : M ;K@ &"H !@P &3 !00 !8 0 !P 9& _ M #7T-H:U]!8F]R= ;J -?8VAK86)O<G0 !M4 E]R M;'-M; :1@ )?<FQS;65M &BP "7T-81#,S !EH M E]#6$0R,@ 9F@ )?0UA-,C( &4@ "7T-833,S !E( M E]C:&MU9F( 8Z )?9'-E96L � #7TUE;4-L96%N M=7 7I@ )?<F)R:P %OP "7W-B<FL !;8 E]L M<V)R:P 6= )?;'-E96L %BP "7V1W<FET90 !70 M E]G971M; 4W )?9V5T;65M %,P "7W1O=7!P97( !2T M E]S=')C<'D 4H )?:7-D:6=I= %'P "7V1R96%D M !0< E]W<FET90 3L )?7V=E=&)F $T@ "7W-T<G5P M<@ !,4 E]S=&-L7V@ 2M )?<W1C;%]O $E0 "7W-T M8W5L7V0 !'X E]S=&-D7VD 18 )?;65M8W!Y $30 " M7VUE;7-E= !$8 E]S=')L96X 1! )?<W1C;&5N $00 M "7V1C;&]S90 !#< E]?9FQS8F8 -A %?7W!F ,X@ M )?7W!F;70 "%P "7U]E>&ET @0 E]#6$)22P ' ML )?<F5A;&QO8P !SX "7V9R964 <B E]M86QL;V, M &P )?<W1R8V%T !J@ "7W-P<FEN=&8 9P E]C>&]V M9@ %Z )?97AI= !8 "7W-T<FYC870 4T E]? M;6%I;@ "O )?<')I;G1F H0 #\@ ^H "8 M M M &1O<RYL:6)R87)Y &-O;CHQ,"\Q,"\S,C O.# O M J " /__ #@ . M *BH@4W1A8VL@3W9E<F9L;W<@*BH /__ ! $ M , "L15A)5 __\ $ 0 Z@ !I;G1U:71I;VXN;&EB M<F%R>0 "HJ(%5S97(@06)O<G0@4F5Q=65S=&5D("HJ #__P X #@ M $8 /__ ! $ $T0T].5$E.544 /__ M! $ 5P 04)/4E0 __\ $ 0 !>@ !I;G1U M:71I;VXN;&EB<F%R>0 <H M 'L M T* P,3(S-#4V M-S@Y86)C9&5F @#_____ $ 0 !0 M /L "0 !@ '* !J 8P M %R !6 4 #\ Y@ .( #\ )?7VUE;'0 M E@ "7U]P;V]L ), E]E<G)N;P "2 )?7W5F8G, M PP "7U]N=69B<P )$ E]?34Y%140 "0 )?7VUS M=&5P CP #7U]-96U,:7-T # )?7V)U9G-I>@ BP M "7U]I;V( &H E]?9FUO9&4 J )?1$]30F%S90 M *0 $7TUA=&A4<F%N<T)A<V4 * #7TUA=&A"87-E MG )?87)G=@ FP "7W1A<F=V )H E]A<F=C M "9 /R #Z0 "U(YR "+'D "D3.\ !@ ,3J[_XDS?0 1. M=0 +PXL>0 *0B+P (3J[_W"Q?3G5(YS "+'D "D3.\ #@ 03J[_UDS? M0 Q.=0 2.<P BQY I$SO X $$ZN_]!,WT ,3G4 "\.+'D "D3J[_ MRBQ?3G4O#BQY I$ZN_\0L7TYU2.<P BQY I$SO X $$ZN_[Y,WT , M3G4 "\.+'D "D3J[_?"Q?3G4 /L " !@ "H C@ 'P M !L 4@ #8 @ !@ /P E]);T5R<@ I M )?4V5E:P (@ "7T]U='!U= !X E]);G!U= M: )?5W)I=&4 $P "7U)E860 P E]#;&]S90 M ' )?3W!E;@ #\@ ^D Q+PXL>0 $!, M[P # A.KO\Z+%].=0 +PXL>0 $ B;P (("\ #$ZN_RXL7TYU+PXL>0 M $ B;P (3J[^VBQ?3G4O#BQY 0$SO , "$ZN_LXL7TYU O#BQY M0" O A.KO["+%].=2\.+'D ! (&\ "$ZN_HPL7TYU+PXL>0 $ B;P ( M3J[^ABQ?3G4O#BQY 0")O A.KOYB+%].=2\.+'D ! (F\ "" O Q. MKOW8+%].=0 ^P ) & + "< B '0 !@ 2 M #0 < ! /P U]/<&5N3&EB<F%R>0 *P $7T-L M;W-E3&EB<F%R>0 )@ #7U)E<&QY37-G A )?1V5T M37-G ' "7U=A:70 !< U]39713:6=N86P $0 M #7T9I;F1487-K , )?1G)E94UE;0 !@ #7T%L;&]C M365M /R #Z0 !PO#BQY !")O @@;P ,("\ M$$ZN_\0L7TYU+PXL>0 0B;P (3.\ P ,3J[_$"Q?3G4 $CG, (L>0 M 0B;P 03.\ #P 43J[^SDS?0 Q.=0 +PXL>0 0B;P (("\ #$ZN_JHL M7TYU #[ 0 ) 7 #X @ ! /P E]3 M971!4&5N 6 -?4F5C=$9I;&P X E]-;W9E M' )?5&5X= #\@ ^D R+PXL>0 !,[P, M @@+P 03J[_UBQ?3G4 "\.+'D (&\ "$ZN_[@L7TYU+PXL>0 @ M;P (3J[_-"Q?3G4O#BQY $SO P "$SO , $$ZN_R@L7TYU2.< (BQY M $SO!P #$ZN_R),WT0 3G4 "\.+'D 3.\# (3J[_'"Q?3G4 M $CG,#(L>0 @;P 8(F\ '"1O " F;P D("\ *"(O "PD+P P)B\ -$ZN M_J1,WTP,3G4 /L !P D ": @ &8 !( - " M $ _ #7T%U=&]297%U97-T E 1?4F5M;W9E1V%D M9V5T ? 1?4F5F<F5S:$=A9&=E=', 8 -?4')I;G1) M5&5X= !$ U]/<&5N5VEN9&]W # #7T-L;W-E5VEN9&]W @ ' -?061D1V%D9V5T _(# end -- UUCP: kim@amdahl.amdahl.com or: {sun,decwrl,hplabs,pyramid,ihnp4,seismo,oliveb,cbosgd}!amdahl!kim DDD: 408-746-8462 USPS: Amdahl Corp. M/S 249, 1250 E. Arques Av, Sunnyvale, CA 94086 CIS: 76535,25 [ Any thoughts or opinions which may or may not have been expressed ] [ herein are my own. They are not necessarily those of my employer. ]