billr@saab.CNA.TEK.COM (Bill Randle) (06/06/90)
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu> Posting-number: Volume 10, Issue 37 Archive-name: NetHack3/Patch8s Patch-To: NetHack3: Volume 7, Issue 56-93 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 19 (of 24)." # Contents: Install.ovl mac/MD.proj.hqx others/exesmurf.c # Wrapped by billr@saab on Tue Jun 5 09:09:04 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'Install.ovl' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Install.ovl'\" else echo shar: Extracting \"'Install.ovl'\" \(14761 characters\) sed "s/^X//" >'Install.ovl' <<'END_OF_FILE' X Instructions for compiling and installing the Overlaid X NetHack 3.0 on an MS-DOS system X ====================================================== X (or, How to make PC NetHack 3.0) X Last revision: June 02, 1990 X X (Credit for a runnable full PC NetHack 3.0 goes to the overlay team of X Pierre Martineau, Stephen Spackman, Norm Meluch, and Kevin Smolkowski, X who built on the work of Steve Creps and Mike Threepoint.) X X XI. Dispelling the Myths: X X Compiling NetHack is not as easy as it sounds, nor as hard as it looks, X however it will behoove you to read this entire file through before X beginning the task. X X The NetHack executable that you are about to get will be generated by an X overlay linker. The beauty of this overlay linker beastie is that it will X create an executable that will function in much less memory than it would X "normally" take to run. Do not be deceived. The RAM requirement for the X overlay version is about 550k! You can load the program in less RAM, but X you will begin to experience a serious amount of disk thrashing at 530k X or less. Absolute minimum will probably be in the neighborhood of 380-400k. X You do not want to run the program like that! The more free RAM you have X available for the program, the more smoothly it will run. X X The magic piece to the overlay puzzle is a program called ovlmgr.asm. This X is a replacement for the Microsoft (and we use the term loosely) overlay X manager. This program has been enhanced since its release in November X 1989. It will now allow NetHack to use EMS memory if any is available, X therefore, RAM requirements can be reduced to the minimum with at least X 256K of EMS. X X As of patch level 7, version 3.0 has an added feature in the Makefile. X This feature enables a structured break-up of the object modules so that X we can link heavily used functions together without actual source code X movement. This has provided a great speed improvement for this release. X See the file others\maintain.ovl for more information on this structuring. X X XII. How long is this going to take? X X On an XT class PC it has been rumored that NetHack can be built in 8 - 10 X hours. X On a 286 10MHz PC you can build NetHack in about 3 - 3.5 hours, X On the flip side if you have a 386 33MHz PC with a *VERRRRY* fast hard X disk, math coprocessor, 32 bit bus, and severe I/O caching you will have X NetHack in about 15 minutes! X X Hope you enjoy the game. We have worked very hard to try to bring it back X to the PC. X X XIII. Tools: X X The following programs are necessary to successfully compile the overlaid X version of NetHack: X X A. Microsoft C, version 5.1 or newer. X X B. The Microsoft Overlay Linker, version 3.6 or newer or preferably, X the Microsoft Segmented Linker, version 5.01.20 or newer. The X overlay linker has been known to cause problems with other X programs, but not with NetHack, yet. X One of these linkers should be included in your MSC version. X X C. NDmake, version 4.5 or newer, (available from your local ftp site). X As the overlay makefile is pretty large, you will want to use the X large model of NDmake: MAKE45L.EXE, as your make program. X MSC 6.0 has a new make program distributed with it that might be X able to handle the Makefile.ovl with a few modifications. This has X not been completely tested. We recommend NDmake 4.5. X X XIV. Optional tools: X X The following programs are not necessary, because pre-built copies of the X files are included in this distribution. However, if you want to build X NetHack 100% from scratch, you will need them. X X A. An 80x86 assembler. X This is for assembling the ovlmgr.asm file into ovlmgr.obj. If you X want to assemble your own copy of the overlay manager. The file X others\ovlmgr.uu is a uuencoded version of the assembled ovlmgr.asm. X For details, see the file ovlmgr.doc. X X B. Yacc/Bison & Lex/Flex workalike programs for the PC. X The source files for the special levels compiler are built using X bison and flex. Precompiled copies of the files lev_lex.c, and X lev_comp.c have been provided if you do not have these utilities. X Bison & flex should also be available at your local ftp site. X X XV. To compile your copy of NetHack on a MSDOS machine: X (or "just follow the "simple" steps outlined below.) X X1. It almost goes without saying that you should make sure that your tools X are set up and running correctly. X X2. Make sure all the NetHack files are in the appropriate directory X structure. You should have a main directory with subdirectories X src, include, auxil, others, amiga, mac, and vms. If you do not X follow this structure, the Makefile.ovl will not function properly. X X All the shared and UNIX-specific .c files and the source Makefile(.src) X belong in src; all the PC *.c files and PC make files belong in others; X all the .h files belong in include; other assorted files belong in auxil. X Check the file "Files" in your top level directory for an exact listing X of what file is in which directory. X X We will not need any of the files from the amiga, mac, and vms X directories, so you can delete them if you need the space. X X If you downloaded or ftp'd the sources from a UNIX system, the lines X will probably end in UNIX-style newlines, instead of the carriage X return and line feed pairs used by DOS. Some programs have trouble X with them, you may need to convert them (with a utility like X Rahul Dhesi's "flip"). Also, every file should end with an empty X line, because both Microsoft C and MASM have a habit of ignoring the X last line of each file. X X3. Move/Copy files from the others directory to your src directory X based on the following criteria. You will probably want to include X most all of these files. X X You will definitely need pc*.c, msdos.c, and trampoli.c. X X random.c is only needed if you want the high-quality random number X generation routines. X X You should be able to use either others/lev_lex.c (generated by flex) X or src/lev_lex.c (generated by lex), but the one in src is smaller. X If you have flex or some other lex work-alike, you can use that to X produce lev_lex.c from lev_comp.l. X X The file termcap.uu is the fixed version of the Fred Fish termcap library. X You will need to run a uudecode utility on it to generate the file X termcap.arc. termcap.arc contains several files of termcap routines. X Using them with NetHack involves very little knowledge of the UNIX concept X of a termcap database; mostly you need to know enough to set a TERM X environment variable. You can unarc termcap.arc here in the others X directory, but if you are going to use it, it is probably best to unarc a X copy in the src directory. That way you will not miss copying any X files over. Wherever you unarc it, get rid of the included makefile X since a better version has been provided as Makefile.lib. X X ovlmgr.uu (MS-DOS overlay manager) is the uuencoded assembled X object module for the overlay manager in case you do not have an assembler. X You will need to run a uudecode utility on this file too, to generate X ovlmgr.obj. X X Exesmurf.uu is the uuencoded copy of the exesmurf utility which displays X and modifies the contents of an executable file header. It is similar X to Microsoft's exemod utility but it provides infomation on overlays X which EXEMOD does not. It is used to modify the Nethack executable's X memory allocation. X X4. Rename the file Makefile.ovl to "Makefile." (no extension), and move X it into your src directory. X X The PC NetHack makefiles are set up for NDMAKE, a public domain X "make" utility. Both Microsoft's "make" leaves much to X be desired. It is worth the extra effort to get NDMAKE if you don't X already have it. Among other things, NDMAKE automatically generates X link response files when the link command involves so many objects X that the command would become longer than DOS can handle. If you must X use Microsoft's or Borland's "make", you'll need to edit the makefile X into a form your make can use, and add instructions to generate a link X response file. X X If you are going to be constructing the Fred Fish termlib you will need X the Makefile.lib. Copy this to your source directory too, and do not X change its name. X X Makefile.top in the top directory, Makefile.src in the src directory, X and Makefile.aux(il) in the auxil directory are for UNIX NetHack. You X will not need these, and you may delete them. X X Makefile.pc, Makefile.msc, and Makefile.tos are for compiling non- X overlaid versions of NetHack, and for the atari. You may delete these X too. X X4. Now go to the include subdirectory to edit a couple of the header files X there. X X First edit config.h according to the comments to match your system and X desired set of features. Mostly you need to check the WIZARD option, X make sure the HACKDIR is set properly, and check TERMLIB and COMPRESS. X X Using Microsoft C and overlays, we've managed to enable all the special X features. You may include all the neat features you want. X X Also check pcconf.h, which should not need much editing (if you are X including termcap.uu and random.c). If you are not including these, you X will need to comment out TERMLIB and/or RANDOM. You should make doubly X certain that OVERLAY is defined in pcconf.h, since otherwise things will X compile properly but very ugly things are likely to happen wherever X function pointers cross overlay boundaries - the linker is a little thick X about that. X X Commenting out the #define TERMLIB in pcconf.h to disable use of termcap X routines (relying on the ANSI_DEFAULT feature) will make your job a bit X easier. However, you can compile with both TERMLIB and ANSI_DEFAULT X and simply not set your TERM variable if you do not wish to use the X termcap file settings. X X6. If you want to change the high score list behavior, examine the top of X topten.c, in the src directory. You may want to change the definitions of X PERSMAX, POINTSMIN, and ENTRYMAX. I set POINTSMIN to 51 and ENTRYMAX to X 50 to keep the size of the score list down. X X7. Go to the src directory and edit the top of your Makefile. Be sure the X directory you want the game installed (GAMEDIR) in actually exists. X X If you elected not to use the high-quality BSD random number routines by X commenting out RANDOM in pcconf.h or tosconf.h, comment out (or set equal X to nothing) the RANDOM macro in your Makefile. X X If you elected to use Fred Fish's termcap library (bundled in as X termcap.arc), you will have to generate termlib.lib from those sources X by typing "make -f makefile.lib". You must also set the TERMLIB option X in Makefile.ovl to link in the resulting termlib.lib. X X If you have a MASM compatible Assembler, you may want to enable the option X in the makefile to rebuild ovlmgr.obj, although a ready-made object file X is provided for those of you without. Before assembling ovlmgr, be sure X to read ovlmgr.doc as there are several options that you may or may not X wish to enable/disable. X X If you are recompiling after patching your sources, or if you got your X files from somewhere other than the official distribution, "touch X makedefs.c" to ensure that certain files (onames.h and pm.h) are remade, X lest potentially troublesome timestamps fool "make". X X8. Now, enter "make45l install", and take a long siesta; your computer will X be occupied for a long time. If all goes well, you will get an executable. X X9. Make sure the support files -- data, rumors, cmdhelp, opthelp, help, hh, X history, license, and oracles (if ORACLE was #define'd) -- were copied X to the game directory. If not, move them there from the auxil directory X yourself. rumors can be created manually by entering "makedefs -r", X data by entering "makedefs -d". X X If you compiled in the special levels (if STRONGHOLD was #define'd), make X sure castle, tower?, and possibly endgame are there, too. They can be X created manually by entering "lev_comp filename.des", where filename.des X is the appropriate description file (found in the auxil directory). X X Make sure the files NetHack.cnf and termcap also made it to your game X directory. If not go to the others directory and copy NetHack.cnf and X termcap to your game directory. Edit NetHack.cnf to reflect your X particular setup and personal preferences, by following the comments. X X If you'll be running NetHack from a different subdirectory, you will X want to "set HACKDIR=c:\games\nethack" (or whatever drive and directory X you want to use) now. Add it to your autoexec.bat (in DOS), if you'll X be playing often. X X11. Play NetHack. If it works, you're done! X X XNotes X----- X1) First and foremost: We have been developing with MSC 5.1 as a compiler X and NDmake 4.5 as a make. NDmake is readily available on the Usenet; X obtaining MSC might be more of a problem. MSC 5.0 is broken. You *will X not* be able to compile the overlay version with that compiler due to X problems with the /Gt option allowing the CONST segment to become X > 64k when linking. X MSC 6.0 and its make utility have been used to generate an overlaid X NetHack.exe, however sufficient testing has not been completed at this X time for us to "recommend" its use. X X2) Save files and bones files from previous versions will not work with X NetHack 3.0. Don't bother trying to keep them. Record (score) files X from before 3.0 patchlevel 7 will almost work, but you need to make one X change manually to them: At the end of each line is a word or phrase X specifying what killed the player. Change the string to start with the X words "killed by", "killed by a", or "killed by an" (whichever is X appropriate). If the death was petrification, it should read "petrified X by" instead of "killed by". Don't change "starvation", "quit", "escaped", X or "ascended". X X3) To install an update of NetHack after changing something, enter "make" X from the src directory. If you add, delete, or reorder monsters or X objects, or you change the format of saved level files, delete any save X and bones files. (Trying to use such files sometimes produces amusing X confusions on the game's part, but usually crashes.) X X4) During linking the Microsoft Overlay Linker will need temporary storage X space. Make sure you have about a meg of free disk wherever you have X defined your temporary storage. END_OF_FILE if test 14761 -ne `wc -c <'Install.ovl'`; then echo shar: \"'Install.ovl'\" unpacked with wrong size! fi # end of 'Install.ovl' fi if test -f 'mac/MD.proj.hqx' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'mac/MD.proj.hqx'\" else echo shar: Extracting \"'mac/MD.proj.hqx'\" \(17003 characters\) sed "s/^X//" >'mac/MD.proj.hqx' <<'END_OF_FILE' X(This file must be converted with BinHex 4.0) X X:$@eKDf9NC@Cc,R"bEfS!8&*25NY"5%`!N!JhP#4S!*!%!3#3!cAk!!!dqJ!!!CS X!!""G$80bD@0VCA3J4h*KF'J#!*!$39"36%0(8NBK"!eYB@YPC'9QFbj`FQpU!J# X3!e"56dT,38K-!3#3"&J!!&"56dT,38K-!3#3"&J!!%e9!*!0!U)XCN!!N!BhP!# X3#K8!N!-3A3pQD@jN)%e')'CKBh4[FR-#!*!$39"36%eZ4Q3K"!!+!#`!N!3L#J# X3$PN8!!"F!+(@VNLKeUj2SGH0eJ#3(Jc-!!%0KJ!@!*!'!r!!N2m!N2m!N2m!N2, XF!!!"@!!!F!8!!%459P)"8!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+h XX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!# Xf!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!! X`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m X`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!8 X3#'eKDf9NC@CcYJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!! X!rc!!YJ#3"4""8&"-EQK04!J!!B!!N!-+#!!!"J#3!`B!N!9J!*!$F!#3"e!!N!- XJ!"`r2!!"UI!%#Mmm!!'Tm!3H2c`!!DR`"$)r2!!"UI!%6Mmm!!'Tm!5%2c`!!DR X`"+3r2!!"UI!%aMmm!!'Tm!6Q2c`!!DR`"air2!!"UI!!N!-%!*!("!#30!&B!!" X`"3!!4&*@8J&3!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B X!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$# XYl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc! X!YJ#3"4!!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4! X!-+hX!!$r-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$ Xr-!#f!*!&%!!`VH`!!2m`!,B!N!83!$#Yl!!!rc!!YJ#3"4!!-+hX!!$r-!#f!*! X&%%&38%aYDf3U!!!"J!#3!`J!!2m`!,B!N!d+!*!-*!!!-iUS!$0Qk!!cCi`!!!+ X)!*!&-J#3&N#!lNi!-fES3!!!d!!cCV3!N!8cC[!!-fEd!$0Qq!!cC[`!-fF!!$0 XR"!!cC`J!-fF-!$0R%!!cCa3!-fFB!$0R(!!cCb!!-fFN!$0R+!!cCb`!-fF`!$0 XR0!!cCcJ!-fFm!$0R3!!cCd3!-fG)!$0R6!!cCe!!-fG8!$0R@!!cCe`!-fGJ!$0 XRC!!cCfJ!-fGX!$0RF!!cCh3!-fGi!$0RI!!cCi!!-fH%!$0RL!!cL!!!-i-N!$0 Xq5!!cIK3!-hhN!$0pY!!cH0J!-h0S!$0YC!!cCm#!!!@N!!!"!!)!#3N!!3!!rj! X)SL3#2!!D!!%!!#R968&,43!+E@&VC@4PCR-ZB`#3!`'JR-eYS*c0ED#Fc@d!'J! X#!!!RrNe"3dJ"#NeKBdKPB@4PFR-!N!-"SLaT$U)XD3kL,'N1!"J!!3!!+GC$6dj X'!!KMEfjQD@FZD!"c!!+L(KlhSKiHpk)H([F!'J!"!!!TeP45383!#R4bB@4cG'4 XM,QJ!N!-#SKiG4D)H(8@L(Ke&!"J!!3!!+GC(6%p#!!KRE'pLB@`ZD!"S!!1Jar@ XhS-IeYk$(pEF!&J!#!!!SB&084%N""h0dC'P[,QJ!!!1L(K[jSKiEqD)H'rN!&J! X"!!!TeN026e)!"f0[Eh*N,QJ!!!1L*`[LSLF,iU)R#q)!'!!"!!!TeNe"3d-!#@e XKBf0[EQBZD!!!"+)H(JDL(Ki'SKiH"J!@!!%!!#R@690%6`!(EA0NEh-ZD!!!"+) XH(Y1L(Kl6SKiHd`!B!!%!!#R@8eP69!!)FhPcG'9Y,QJ!N!-%S*cGjD#FhH@JR0h XP!"B!!J!!+'"858e&!3CdD@eP,QJ!D!!%S*cG0k#Fh6HJR0dh!"B!!J!!+'"'3dj X8!3G'BfjdE#jS!!!%S*cGV+#FhDbJR0fX!"J!!J!!+'"69%4%!3K6G'4NC@BZD!# X3!`5JR0h9S*cGeD#FhG8!'!!#!!!SB&084%`"#&0dC'aTBLjS!*!$"+$(p0QJar6 XCS-Idf3!B!!)!!#KJ8e4553%)8h4bD@jR,QJ!N!-%S*c03k#Fc81JR-e$!"J!!J! X!+!03390$!3K`BA0MB@`ZD!#3!`5JR-BRS*c'*k#FaLF!'J!#!!!S!e&958-"#e& XeD@0VC(*KGbjS!!!%S*c&jU#FaHDJR-AQ!"J!!J!!+!0'6dj8!3P'Efjd6@Gb,QJ X!!!5JR-A9S*c&eD#FaG8!'J!#!!!S!d9@48i"#N9fC@jd6@Gb,QJ!N!-%S*c'Hk# XFaRZJR-Cl!"S!!J!!+!0A58j%!3YAD@jNEhG0Ch)ZD!!!"+#FaJ5JR-B%S*c'"!! XB!!)!!#J$689193%*6@9ZG8eRFLjS!!!%S*c'Ak#FaPqJR-CI!"`!!J!!+!069%4 X'!3a6G'4'D@aP8'YR,QJ!E`!%S*c'2k#FaMqJR-Br!"`!!J!!+!0648G0!3a6C@G XYC@jd6'4b,QJ!E`!%S*c'ED#FaQfJR-CY!"`!!J!!+!086dp-!3e8EfpXBQpi9A4 XTE#jS!!!%S*c'$U#FaJkJR-B1!"J!!J!!+!028e98!3K28e9dD@`ZD!"T!!5JR-A X$S*c&`k#FaF-!'J!#!!!S!d4*38`"#d4TB@a[CdeRFLjS!!!%S*c&fU#FaGUJR-A XD!"J!!J!!+!0'58a&!3P'D@aP6@Gb,QJ!!!5JR-AXS*c&l+#FaH`!&!!#!!!S!dK X'8bi""8K'8bjS!!!%S,%p&D#a24@JX6d9!"B!!J!!+!0$6da2!3G$Efa[FLjS!!! X%S*c'+k#FaLZJR-BV!"`!!J!!+!054902!3e5CA0[GA*MC8eRFLjS!!!%SLQSeU) XTU0DL+DM@!"J!!3!!+GC&@&4&!!KPH(4PFQiZD!"R!!5L(KZDSKiEQU)H'jS!'J! X"!!!TeNe"3d%!#NeKBd&XCA*d,QJ!,J!"SKiHBD)H(Q'L(KjK!"S!!3!!+GC349* X0!!T`CA*YEfjcG#jS!#i!!U)H(DUL(KfUSKiGUJ!B!!%!!#R@68p133!*E@pZBA4 XdDbjS!!!#SKiGiU)H(H+L(KhL!"J!!3!!+GC06dj'!!PYEfjQE'&R,QJ!!!'L(Ki XZSKiH,U)H(Li!'J!"!!!TeNp#5N-!#QpLDQ0XBA0c,QJ!,J!"S*c&Sk#FaD1JR-@ XM!"`!!J!!+!0$6dj8!!a$EfjdFQpX6@Gb,QJ!!)!!"J3!N!2m!J!*#3!"!!$rN!L XL(MID!"B!!3!!+G906dj6!!GYEfjcG#jM!!!"S*c0ED#Fc@fJR-eY!"S!!J!!*rj X0380)!3T0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!B!!%!!#R@3dp14J!)Bfp XZCQPR,QJ!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&%!!TdFQ&NFh4NBbjS!#i X!!U)H(8@L(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&X,QJ!D!!$S-IeYk$(pEH XJar@h!"B!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)H'rQL(K[j!"B!!3!!+GC X$6dp5!!GMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!!+GC0380$!!PYB@0MEfj XQ,QJ!!!5L(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fecC'pc,QJ!!!5L(Kl6SKi XHdk)H(Y-!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!) X!!#KJ9%P043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!@!!)!!#KJ4N019!%(4Q0 XZG'`ZD!!!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%)8h4NC'9Q,QJ!N!-%S*c XGeD#FhG@JR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N X!'!!#!!!SB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e$S*c03`!B!!)!!#J$8%& X63`%)F'&cBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!!+!0498P$!3Y4G@PMDf4 XbBAFZD!!!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%*4QpZG%eRFLjS!!!%S*c X&eD#FaG@JR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLjS!*!$"+#FaRZJR-ClS*c X'H`!D!!)!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B%S*c'"+#FaJ3!'!!#!!! XS!de&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!F!!)!!#J$8e4%4J%-8h4 XN4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%-8f9RE@9ZG%a XNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*[H&9dD@`ZD!! X!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!%S*c&`k#FaF1 XJR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-ADS*c&fJ!B!!) X!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!+!0)4P-Z!39 X)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)ZD!!!"+#FaLZ XJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)TU0DL+DM@SLQ XSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZD!"S!!3!!+GC X0380"!!T0B@0"E'9bG#jS!#i!!D)H(Q'L(KjKSKiHB3!D!!%!!#R@8%9563!+F'9 XbE@pZFh3ZD!!Z!!+L(KfUSKiGUU)H(DS!'!!"!!!TeNe26N%!#@e[EQ&dG'XZD!! X!!U)H(H+L(KhLSKiGiJ!B!!%!!#R@68p14J!*E@pZCQaKCbjS!!!"SKiH!D)H(J' XL(Ki"!"J!!3!!+GC06dj6!!KYEfjcH@dZD!#3!`'L(K`hSKiF0k)H($F!&J!"!!! XTeN965%X!"Q9cD'XZD!"S!!'L(Kp&SKiI4D)H(d8!&J!"!!!TePC"98`!"hCKG@a Xd,QJ!!!'L(K``SKiF-+)H($!!&J!"!!!TeN938NN!"Q9`FQNZD!#3!`'L(K[$SKi XE`k)H'm-!&J!"!!!TeN026%m!"f0[E'pb,QJ!JJ!&F!#3!rJ#!!N*!!%!!2q3#+) XN!Zd!'!!"!!!Te8p#5N8!#@pLDQ9MG(-ZB`!!!D#Fc@fJR-eYS*c0E3!D!!)!!#I Xq68&$5!%+6@&M5'9KC'9bF`!Z!!'L,'N1SLaT$U)XD3i!'!!"!!!TeN026NB!#'0 X[EQCTCbjS!(-!!U)H([HL(KlhSKiHp`!D!!%!!#R@9&*"4!!+G(*KC(0dC'-ZD!! XZ!!+L(Ke&SKiG4D)H(88!'!!"!!!TeNG-6d)!#'GXEf*KE#jS!'J!!k$(pEHJar@ XhS-IeY`!@!!)!!#KJ8e4%53%(Fh4ND@mZD!!!!k)H'rQL(K[jSKiEq3!@!!%!!#R X@3dp28J!(Bfp[FQ3ZD!!!!k)R#q+L*`[LSLF,iJ!B!!%!!#R@68&$3`!*E@&MBfp XZCLjS!!!%SKiH"U)H(JDL(Ki'!"B!!3!!+GC08d42!!GYFf4[FbjS!!!%SKiHdk) XH(Y1L(Kl6!"J!!3!!+GC6@908!!KcHA0dC@dZD!#3!`5JR0hPS*cGjD#FhH8!&J! X#!!!SB&4*688""R4TE@8ZD!"S!!5JR0dhS*cG0k#Fh6F!&J!#!!!SB%C$6P3""dC XMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!!SB&084%3"#&0dC'4PCLjS!*!$"+# XFhG@JR0h9S*cGe3!B!!)!!#KJ8e4%6!%)8h4NE'PL,QJ!N!-%S-IdfD$(p0QJar6 XC!"J!!J!!+'"69&**!3K6G(*TEQFZD!#3!`5JR-e$S*c03k#Fc8-!'!!#!!!S!e" X"8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c'*`!D!!)!!#J$899*3`%,8A9TBfY XNFQ&h,QJ!!!5JR-AQS*c&jU#FaHB!'!!#!!!S!dC26P3"#8C[ER40Ch)ZD!!!"+# XFaG@JR-A9S*c&e3!D!!)!!#J$49C&6J%+4ACPER40Ch)ZD!#3!`5JR-ClS*c'Hk# XFaRX!'J!#!!!S!eG*6N3"#eGTEQ4[GdeRFLjS!!!%S*c'"+#FaJ5JR-B%!"J!!J! X!+!0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c'Ak#FaPm!(!!#!!!S!e084%B"$&0 XdC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm!(!!#!!!S!e0&4dd"$&0PCfePER4 X-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!!S!e426d`"$94[EfaLEhK9G'PX,QJ X!!!5JR-B1S*c'$U#FaJi!'!!#!!!S!dp6993"#%p69A4TE#jS!'N!"+#FaF1JR-A X$S*c&``!D!!)!!#J$4%P"6!%,4'PKE'pR6@Gb,QJ!!!5JR-ADS*c&fU#FaGS!'!! X#!!!S!dC*6%8"#8CTE'90Ch)ZD!!!"+#FaHbJR-AXS*c&l!!8!!)!!#J$5%C6,J% X&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!!S!d026%m""d0[E'pb,QJ!!!5JR-B XVS*c'+k#FaLX!(!!#!!!S!e*&8dm"$9*PFfpeFQ0P6@Gb,QJ!!!5L+DM@SLQSeU) XTU0B!'!!"!!!TeN9B9%8!#'9iG'9bELjS!'F!"+)H'jUL(KZDSKiEQJ!D!!%!!#R X@68&$33!+6@&M3@aPFR3ZD!!Z!!'L(KiESKiH'k)H(KX!&!!"!!!TeNp#5Li!"@p XLDLjS!!!"SKiH,U)H(LkL(KiZ!"S!!3!!+GC23NT$!!T[BQTME'&cFbjS!#i!!D) XH(QQL(KjTSKiHD3!@!!%!!#R@8&*28!!'F(*[F#jS!(-!!D)H'm1L(K[$SKiE``! X@!!%!!#R@3dp-6`!(BfpXEh)ZD!!!!B)!"0`!N!2d!J!*#3!"!!$rN!LL(MXi!"B X!!3!!+G9338j*!!G`B@jTBbjM!!!"S*c0ED#Fc@fJR-eY!"S!!J!!*rj0380)!3T X0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J!B!!%!!#R@3dp14J!)BfpZCQPR,QJ X!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N&%!!TdFQ&NFh4NBbjS!#i!!U)H(8@ XL(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ&X,QJ!D!!$S-IeYk$(pEHJar@h!"B X!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD)H'rQL(K[j!"B!!3!!+GC$6dp5!!G XMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3!!+GC0380$!!PYB@0MEfjQ,QJ!!!5 XL(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fecC'pc,QJ!!!5L(Kl6SKiHdk)H(Y- X!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+#FhH@JR0hPS*cGj3!@!!)!!#KJ9%P X043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`!@!!)!!#KJ4N019!%(4Q0ZG'`ZD!! X!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!%)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@ XJR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!#3!`5Jar6CS-IdfD$(p0N!'!!#!!! XSB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e$S*c03`!B!!)!!#J$8%&63`%)F'& XcBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J!!+!0498P$!3Y4G@PMDf4bBAFZD!! X!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!%*4QpZG%eRFLjS!!!%S*c&eD#FaG@ XJR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLjS!*!$"+#FaRZJR-ClS*c'H`!D!!) X!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B%S*c'"+#FaJ3!'!!#!!!S!de&6P8 X"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`!F!!)!!#J$8e4%4J%-8h4N4QPXC9" XVCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63%-8f9RE@9ZG%aNFLjS!*! X$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'*[H&9dD@`ZD!!!"+#FaJk XJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3!%S*c&`k#FaF1JR-A$!"S X!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-ADS*c&fJ!B!!)!!#J$4NP X-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J!!+!0)4P-Z!39)4P-ZD!! X!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh)ZD!!!"+#FaLZJR-BVS*c X'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+)TU0DL+DM@SLQSeJ!B!!% X!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZD!"S!!3!!+GC0380"!!T X0B@0"E'9bG#jS!#jMD)!!!$!!N!2`!!!*#3!"!!$rN!LJb!28!"3!!J!!+&P"6P0 X*!!4"6P0*!#k!!!!`!*!$l!!!#3N!!3!!rj!)S-J0[!!8!!)!!#KC98j*@!!%G@j XTH!!ZJ!!!0!#3!qJ!!!N*!!%!!2q3#+#Z`J)!'!!#!!!S"8e"3e3!#%eKBe4bBA" Xc!!##!!6F!*!$j!)!#3N!!3!!rj!)SKiPl`!@!!%!!#R938a-6`!(B@aXEf-ZB`! X!!D#Fc@fJR-eYS*c0E3!D!!)!!#Iq68&$5!%+6@&M5'9KC'9bF`!Z!!'L,'N1SLa XT$U)XD3i!'!!"!!!TeN026NB!#'0[EQCTCbjS!(-!!U)H([HL(KlhSKiHp`!D!!% X!!#R@9&*"4!!+G(*KC(0dC'-ZD!!Z!!+L(Ke&SKiG4D)H(88!'!!"!!!TeNG-6d) X!#'GXEf*KE#jS!'J!!k$(pEHJar@hS-IeY`!@!!)!!#KJ8e4%53%(Fh4ND@mZD!! X!!k)H'rQL(K[jSKiEq3!@!!%!!#R@3dp28J!(Bfp[FQ3ZD!!!!k)R#q+L*`[LSLF X,iJ!B!!%!!#R@68&$3`!*E@&MBfpZCLjS!!!%SKiH"U)H(JDL(Ki'!"B!!3!!+GC X08d42!!GYFf4[FbjS!!!%SKiHdk)H(Y1L(Kl6!"J!!3!!+GC6@908!!KcHA0dC@d XZD!#3!`5JR0hPS*cGjD#FhH8!&J!#!!!SB&4*688""R4TE@8ZD!"S!!5JR0dhS*c XG0k#Fh6F!&J!#!!!SB%C$6P3""dCMER4X,QJ!!!5JR0fXS*cGV+#FhD`!'!!#!!! XSB&084%3"#&0dC'4PCLjS!*!$"+#FhG@JR0h9S*cGe3!B!!)!!#KJ8e4%6!%)8h4 XNE'PL,QJ!N!-%S-IdfD$(p0QJar6C!"J!!J!!+'"69&**!3K6G(*TEQFZD!#3!`5 XJR-e$S*c03k#Fc8-!'!!#!!!S!e""8d-"#("KFf0KE#jS!*!$"+#FaLHJR-BRS*c X'*`!D!!)!!#J$899*3`%,8A9TBfYNFQ&h,QJ!!!5JR-AQS*c&jU#FaHB!'!!#!!! XS!dC26P3"#8C[ER40Ch)ZD!!!"+#FaG@JR-A9S*c&e3!D!!)!!#J$49C&6J%+4AC XPER40Ch)ZD!#3!`5JR-ClS*c'Hk#FaRX!'J!#!!!S!eG*6N3"#eGTEQ4[GdeRFLj XS!!!%S*c'"+#FaJ5JR-B%!"J!!J!!+!0048j9!3P0C@je6@Gb,QJ!!!5JR-CIS*c X'Ak#FaPm!(!!#!!!S!e084%B"$&0dC%CTE'93DfFZD!#3!`5JR-BrS*c'2k#FaMm X!(!!#!!!S!e0&4dd"$&0PCfePER4-C()ZD!#3!`5JR-CYS*c'ED#FaQd!(!!#!!! XS!e426d`"$94[EfaLEhK9G'PX,QJ!!!5JR-B1S*c'$U#FaJi!'!!#!!!S!dp6993 X"#%p69A4TE#jS!'N!"+#FaF1JR-A$S*c&``!D!!)!!#J$4%P"6!%,4'PKE'pR6@G Xb,QJ!!!5JR-ADS*c&fU#FaGS!'!!#!!!S!dC*6%8"#8CTE'90Ch)ZD!!!"+#FaHb XJR-AXS*c&l!!8!!)!!#J$5%C6,J%&5%C6,QJ!!!5JX6d9S,%p&D#a248!&J!#!!! XS!d026%m""d0[E'pb,QJ!!!5JR-BVS*c'+k#FaLX!(!!#!!!S!e*&8dm"$9*PFfp XeFQ0P6@Gb,QJ!!!5L+DM@SLQSeU)TU0B!'!!"!!!TeN9B9%8!#'9iG'9bELjS!'F X!"+)H'jUL(KZDSKiEQJ!D!!%!!#R@68&$33!+6@&M3@aPFR3ZD!!ZS*b!!!6F!*! X$i!)!#3N!!3!!rj!)SKj,$3!B!!%!!#R968&$4J!*E@&MCQPXC5jM!!!"S*c0ED# XFc@fJR-eY!"S!!J!!*rj0380)!3T0B@0)C@&NCA*c!#i!!D)XD3kL,'N1SLaT$J! XB!!%!!#R@3dp14J!)BfpZCQPR,QJ!F`!#SKiHpk)H([HL(Klh!"S!!3!!+GC88N& X%!!TdFQ&NFh4NBbjS!#i!!U)H(8@L(Ke&SKiG43!B!!%!!#R@4da23J!)Cfa[BQ& XX,QJ!D!!$S-IeYk$(pEHJar@h!"B!!J!!+'"69%4*!3GcG'4TEbjS!!!$SKiEqD) XH'rQL(K[j!"B!!3!!+GC$6dp5!!GMEfpbC#jS!!!$SLF,iU)R#q+L*`[L!"J!!3! X!+GC0380$!!PYB@0MEfjQ,QJ!!!5L(Ki'SKiH"U)H(JB!&J!"!!!TeNe64%m!"fe XcC'pc,QJ!!!5L(Kl6SKiHdk)H(Y-!'!!"!!!TeP0C8e3!#(0jFh4PE5jS!*!$"+# XFhH@JR0hPS*cGj3!@!!)!!#KJ9%P043%'G'PYC5jS!'J!"+#Fh6HJR0dhS*cG0`! X@!!)!!#KJ4N019!%(4Q0ZG'`ZD!!!"+#FhDbJR0fXS*cGV!!B!!)!!#KJ8e4%4!% X)8h4NC'9Q,QJ!N!-%S*cGeD#FhG@JR0h9!"J!!J!!+'"69%4-!3K6G'4XD@)ZD!# X3!`5Jar6CS-IdfD$(p0N!'!!#!!!SB&088NN"#&0dFQPZCbjS!*!$"+#Fc81JR-e X$S*c03`!B!!)!!#J$8%&63`%)F'&cBf&X,QJ!N!-%S*c'*k#FaLHJR-BR!"S!!J! X!+!0498P$!3Y4G@PMDf4bBAFZD!!!"+#FaHDJR-AQS*c&jJ!B!!)!!#J$4Np19!% X*4QpZG%eRFLjS!!!%S*c&eD#FaG@JR-A9!"S!!J!!+!0&9N91!3T&GQ9ZG%eRFLj XS!*!$"+#FaRZJR-ClS*c'H`!D!!)!!#J$9dP14!%,9fPZC'ph6@Gb,QJ!!!5JR-B X%S*c'"+#FaJ3!'!!#!!!S!de&6P8"#8ePER90Ch)ZD!!!"+#FaPqJR-CIS*c'A`! XF!!)!!#J$8e4%4J%-8h4N4QPXC9"VCbjS!*!$"+#FaMqJR-BrS*c'2`!F!!)!!#J X$8d9(63%-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!% X09'p[E'*[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'P XX,QJ!D3!%S*c&`k#FaF1JR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+# XFaGUJR-ADS*c&fJ!B!!)!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-A XX!"3!!J!!+!0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`% X(3fpXEh)ZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch) XZD!!!"+)TU0DL+DM@SLQSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU) XH'jUL(KZD!"S!!3!!+GC0380"!!T0B@0"E'9bG#jS!#k!!!!S!*!$h!#3#8B!!3# X3"4S!N!-"!!J%E@&TEL#3!`!!!SJ!"+#FaMqJR-BrS*c'2`!F!!)!!#J$8d9(63% X-8f9RE@9ZG%aNFLjS!*!$"+#FaQfJR-CYS*c'E3!F!!)!!#J$9%p26!%09'p[E'* X[H&9dD@`ZD!!!"+#FaJkJR-B1S*c'$J!B!!)!!#J$6e099!%)6e09G'PX,QJ!D3! X%S*c&`k#FaF1JR-A$!"S!!J!!+!0%58&-!3Y%D@&XEfG0Ch)ZD!!!"+#FaGUJR-A XDS*c&fJ!B!!)!!#J$4NP-43%*4QPXC8eRFLjS!!!%S*c&l+#FaHbJR-AX!"3!!J! X!+!0)4P-Z!39)4P-ZD!!!"+#a24@JX6d9S,%p&3!@!!)!!#J$3dp-6`%(3fpXEh) XZD!!!"+#FaLZJR-BVS*c'+`!F!!)!!#J$8N966`%08Q9cEh9bBf90Ch)ZD!!!"+) XTU0DL+DM@SLQSeJ!B!!%!!#R@49K843!)CAKdCA*Z,QJ!C`!%SKiEQU)H'jUL(KZ XD!"S!!3!!+GC0380"!!T0B@0"E'9bG#jS!#jMD)!!!$!!N!2`!!!*#3!"!!$rN!L XJb!28!"3!!J!!+&P"6P0*!!4"6P0*!#k!!!!`!*!$l!!!#3N!!3!!rj!)S-J0[!! X8!!)!!#KC98j*@!!%G@jTH!!ZJ!!!0!#3!qJ!!!N*!!%!!2q3#+#Z`J)!'!!#!!! XS"8e"3e3!#%eKBe4bBA"c!*!&D!#3!``+6%aKFh4$E'PMDb#!!!!S!!!'D!!!"Q` X!"J!!!QJ!!3!'!!!,+J!"!*!$#!C-3faTBfXJJ!!!,!!!"Q3!N!8'!!!"L!!"!!B X!!!UU!!%!N!--#%a6CA4$C@aX)*!$!*!$$!!!"Q!!!!CN!!!#3!!!!3#3"'!!N"- X%!*!H5-!"!`!(!*!$r!#3!f!!N"-%!*!H5-!"!`!)!*!$q!#3!f!!N"-%!*!J!3- X!"J#3!r3!N!0J!*!6"!#3(NM!!3-!N!A`!*!$B!#3%`3!N"jNFJ)%!!%!N!2X!*! X$B!#3%`3!N"m#!3-!!J#3!qJ!N!0J!*!6"!#3(Q4b!3-!!`#3!q3!N!0J!*!6"!# X3(Lf-!3-!"3#3!q!!N!0J!*!6"!#3(L!)!3-!"!!!"c!!N!-+!*!Eh%*i#NUGcNk Xk!&41ZJ"Q,$a*6N4B6VS&ENIkrmSQM%IkrmJQK%kk!'C1ZJ+S6VS'*Nkk!0a1ZJ# XS3QG)H2rr5'm!"%KA2c`!!5)krl*1ZJ1#6V83!#"Y!'a1N!#Tp&(i#Pjq!%kk![T XR#%U3!'F%#0!!"Nje)$J+H'B-,$aD6dj&6VS&"#!-4rVrCLD!6R9CMbmm4%&838* XRUD!J9b"3)RJ*##!0N!#*4rVr6LD!S#kTSb`m8e458dkk"-j(q[mf*S`X2%4548a X1ZJ5q)%`J"'F-6VS"YJ5!!*!$$'Ed6[S&DNj@rpT"q!N3)Np`)+!ZF!(3%9S4dX" X"qJ!5F!@J,P@25'm!!UQA6Pj1G5jbFh*M!%Ik"HiQZ!Tm,cJ+J'B#@)p1G8MRrrJ Xq,`!m8IJ+AQ!+@Bm[#+QP)"qJ3%kk!L4R4%IkrVJQL#!3CqBL3%U4CLi!%!$!,$a X$8N9-6VS%,'FN2Lm!2#"-)!4R$%kk!(J%J!#3!`aQp%kk"0"1ZJ'F60mIrdjeF!q XTb8kk"Aa1ZJ!)6VS%p%je)(J+l+!P)&!L5#)BB!T"k!!)G!'%'0$#8FRrp*!!L0# X*CJ*1G5)!S#iJH!VX)!'J*#*36qrr`#"23UJ!%M&T!!3!&U!93UG)D3!-)%qTmM) XB6VS"RL4BeF%d'#)BEM*R&P*"C`C53@FD6R8b+2rd6VS"Z0056R8b+2rd6VS"L00 X56R8b+2rd6VS"MY1Urrj1G8kk!8ib+3!-5QN!#QBF9%*U$("MUFP53QEide*1G8k Xk!965U3!1de*1G8kk!@c5U3!18N*Q"0056R9$p4!#[P&Qe!aK2caQcP*#CJB+DJ! XArrib)9K")RVpI0+4NNV68Nje-KK1ZJ%14I83!0AB0"KR-L)BEL4R$P*"CK3b+2r Xd6VS"&Q!B-LMrp%kk!1KJ$M)Srr41ZJ$`B!C1ZJ%3dSh6NNje)KK1ZJ%%de*1G5" Xkr4!J1[d35UJ!!'FS-LJ!+'FL*#J!'&P#3qd!%02S!!69@6,m2ca#'4,S!$dbr+R X`88&Ql%(S!%!%J!#3!d"QaNje)(Vmc#!kr-abrh3!5UJ!!'FB[LJ!2@B50LJ!+'F X-e%1bU!!%C33L+!!%3HJ!3!5!!*!$3'E@)(VmUL"3"%%!%$$"jNS``Nje@Bm[2%0 X24%8r"kQJ)&p3q!TH)!K1G5Kkr(BLG"J!Nq`!102-6R8SH[aH`[`!3#)d'"JSH[a XQdT41G5Kkr%V#r!"!)M3B#*+kr%j1G5Kkr$M#r!"!)M3B%0+kr$K1G5Kkr#E#r!" X!)M3B"!D"!*!$%%je6VVrSM)T!!a+D3!+CJC1Z[qiB!41Z[r@dUN!$Nje)&mb'$3 XBX&KAbIrk5N*RrNl`)2`JAc)B0"L`Q&I*rrT+3QIq6[!JqL"I-KJd',"#EJU3!%& XY"Y"!3I!!!M!3Crj1m!!!)#m!"#p"!!3L,`!),em!"%MR2!!N!#B"5%,%`bJ!+J& X)4FM&e%4)3T!$`-(3JNcI!$`L(dje)#m!"#p"!!3L,`!),em!"%MR-3"1ZJ#F60m X!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!(`J!8cI!)`L(dje)#m!"#p"!!3 XL,`!),em!"%MR-3"1ZJ!X60m!M#)I6R8J,`!%,d%!"#)[!!J[A`!%51Fa!%kk!!` XJ!8cI!)`L(dje5S"U(%U"DJa%J%5"6VS!)%5"6R9%J%kk!"C%J%5"6R9+J@S+4)& X1ZJ!'4)"1G5im!!$rrl+!B`BL!(!!6R@`Kf)-J-&)3$)!3N")3%jeXSGL'Li!3N" X)3)$"5%")4ci!5%H1`6!(5%Fb"dje*!!Q!H+)iSQbKf,iJ-(!Kc)$`X!Z!dK(cX" X)4p+(C3L5JQ)%4)&1G90!B14q!&(i#PjCMbm'2`HTS#!IC`!!VLC!@Bm[#kQP*Km XJ#bJ$8NI[4e*(1JGJ&PQ2,`Br"kQJ)"pR!!#)8NF'K!!!Irj9Mbm!UDB`(`J!!!9 XQh&$i#Pl24CT(CK`J!k"!,`ZTSL!6C`!!@Lm,UC)S8b",S#P`!8je)!5K(L!)C`! X!3LK),`ZTSL!6C`!!0L",)!0J'&Q2,`Br"kQJ)"pR!!!L8NFJ3#!m!!"rrLm))&! XL60R!S#kTSe(0rpUCa#C-F!&1G5",5N9Q"+!M6R@J(dje-MbTm%2kqXC1ZJ"S-Mb XTmN2kqbK1ZJ"F-MbTmd2kqaa1ZJ"3-MbTp%2kq`K1qJ"%,`JJE`!),fJ!!J!))(J X#TR!-d*!!X,J#UQBN6VS!C$)mUI"1ZJ"%-MbTmNkk!$`b2+Rc6VS!0$)mUI41ZJ! XX)&p1G6!"S8BN5(!-5RJ#MQS%T4jJ!U%H-!'J4c$m6VNJb6$m6[NJbNje-!'K4L* XS!!LJ(c!")%QJ4dje!*!%6R8J1[riC`3J3%+3!%je!!!"!*!$0IS!!$6k!!!"QJ! XNEb!$8!#3!a`"NJ!15%&65!#3!hTD6dj&!*!$KNY*6N3!N!159da23`#3!jj*6N4 XB!*!$UN024%8!!`#f4%&833#3!qC69&*6!*!$mN4548`!N!2q8eP08`!!!3T$6NC X(!!!"&P0*@N8!!!%L3e*&6!!"!5j%3P9(!!%"4PK6@8d!!3&H!!%!N!FQl%`!!2r Xr!!!(IJ!Ql0J!!2rr!!!$p!!QlG!!!2rr!!!(A!!Ql(3!!2rr!!!VJJ!QlD`!!2r Xr!!!&AJ!QlI`!!rrr!!!&`J#3"36rr`!!"FS!N!8"rrm8!#h'!#EYi!!!rrm!!!A X5!#EXh!!!rrm!!!A@!#EXY!!!rrm!!!AD!#EYe!!!rrm!!!AH!#EXe!!#rrm!!!G X`!#EXl2rr!!B!!!93!#EYj!!$rrm!!!AL!*!&"2rr!!!&jJ#3"32rr`!!"HS!N!8 X%rrm!!!AZ!*!&!rrr!!!&mJ#3"36rr`!!"IB!N!3&E@YKD'`"-N@Q!: END_OF_FILE if test 17003 -ne `wc -c <'mac/MD.proj.hqx'`; then echo shar: \"'mac/MD.proj.hqx'\" unpacked with wrong size! fi # end of 'mac/MD.proj.hqx' fi if test -f 'others/exesmurf.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'others/exesmurf.c'\" else echo shar: Extracting \"'others/exesmurf.c'\" \(5158 characters\) sed "s/^X//" >'others/exesmurf.c' <<'END_OF_FILE' X/****************************************************************************** X* * X* EXE header list and modify * X* * X* by Pierre Martineau, 90/05/20 * X* * X* Version 1.1 * X* * X* Placed in the public domain * X* * X******************************************************************************/ X X#include <string.h> X#include <stdlib.h> X#include <stdio.h> X#include <math.h> X X#define BOOLEAN int X#define TRUE 1 X#define FALSE 0 X XFILE *wrkfile; Xlong min, max, stk; XBOOLEAN listflg = FALSE; XBOOLEAN minflg = FALSE; XBOOLEAN maxflg = FALSE; XBOOLEAN stkflg = FALSE; X Xstruct exehdr { Xunsigned signature; Xunsigned mod512; Xunsigned pages; Xunsigned relocitems; Xunsigned headerparas; Xunsigned minalloc; Xunsigned maxalloc; Xunsigned ss; Xunsigned sp; Xunsigned checksum; Xunsigned ip; Xunsigned cs; Xunsigned relocptr; Xunsigned ovlnum; X} exehdr_area; X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ Xchar *dot, *slash; Xchar fname[128]; Xchar *args; Xint i; Xlong offset, oldstk; X X printf("EXE list and modify V1.1, by Pierre Martineau, 90/05/20.\n"); X printf("This program is public domain and may be freely distributed.\n"); X X if ((argc < 2) || (argc > 6)) { X usage(); X return; X } X X/* Extract filename from first argumemt */ X X strcpy(fname, argv[1]); X dot = strrchr(fname, '.'); X slash = strrchr(fname, '\\'); X if ((dot == NULL) || (slash > dot)) X strcat(fname, ".exe"); X X if ((wrkfile = fopen(fname, "r+b")) == NULL) { X printf("\nCouldn't open file %s\n", fname); X return; X } X X/* Process any remaining arguments */ X X if (argc == 2) X listflg = TRUE; X else { X i = 2; X while (argc-- > 2) { X args = argv[i]; X if ((args[0] != '-') && (args[0] != '/')) { X printf("\nInvalid switch in paramater %s!\n", argv[i]); X usage(); X return; X } X args++; X if (strnicmp(args, "min", 3) == 0) { X args += 3; X min = atol(args); X minflg = TRUE; X } X else if (strnicmp(args, "max", 3) == 0) { X args += 3; X max = atol(args); X maxflg = TRUE; X } X else if (strnicmp(args, "stk", 3) == 0) { X args += 3; X stk = atol(args); X stkflg = TRUE; X } X else if (strnicmp(args, "v", 1) == 0) X listflg = TRUE; X else { X printf("\nInvalid paramater %s!\n", argv[i]); X usage(); X return; X } X i++; X } X } X X fread(&exehdr_area, sizeof (struct exehdr), 1, wrkfile); X if (exehdr_area.signature != 0x5a4d) { X printf("\nNot an EXE file!\n"); X return; X } X while(!feof(wrkfile)) { X if (listflg) X show_hdr(); X if ((minflg || maxflg || stkflg) && (exehdr_area.ovlnum == 0) && (exehdr_area.signature == 0x5a4d)) { X if (minflg) X exehdr_area.minalloc = min; X if (maxflg) X exehdr_area.maxalloc = max; X if (stkflg) { X oldstk = exehdr_area.sp; X exehdr_area.sp = stk; X if (!minflg) { X exehdr_area.minalloc += ((stk - oldstk) / 16); X printf("\nAdjusting size of minalloc!\n"); X } X } X fseek(wrkfile, ftell(wrkfile) - sizeof (struct exehdr), SEEK_SET); X fwrite(&exehdr_area, sizeof (struct exehdr), 1, wrkfile); X if (ferror(wrkfile)) { X printf("Write error while trying to update header!\n"); X fclose(wrkfile); X return; X } X } X offset = exehdr_area.pages; X offset *= 512L; X offset -= sizeof(struct exehdr); X fseek(wrkfile, offset, SEEK_CUR); X fread(&exehdr_area, sizeof (struct exehdr), 1, wrkfile); X if (ferror(wrkfile)) { X printf("Read error while trying to get a header!\n"); X fclose(wrkfile); X return; X } X } X fclose(wrkfile); X} X Xshow_hdr() X{ Xlong lsize; X X lsize = exehdr_area.pages; X if (exehdr_area.mod512 != 0) X lsize--; X lsize *= 512L; X lsize += exehdr_area.minalloc * 16; X lsize += exehdr_area.mod512; X lsize -= exehdr_area.headerparas * 16; X X printf("\nOverlay: %d\n", exehdr_area.ovlnum); X printf("--------\n"); X printf("Size (512 byte pages)\t-%6x\t\t%6u\n", exehdr_area.pages, exehdr_area.pages); X printf("Remainder (last page)\t-%6x\t\t%6u\n", exehdr_area.mod512, exehdr_area.mod512); X printf("Header size (in paras)\t-%6x\t\t%6u\n", exehdr_area.headerparas, exehdr_area.headerparas); X printf("Minalloc (in paras)\t-%6x\t\t%6u\n", exehdr_area.minalloc, exehdr_area.minalloc); X printf("Maxalloc (in paras)\t-%6x\t\t%6u\n", exehdr_area.maxalloc, exehdr_area.maxalloc); X printf("Load size (in bytes)\t-%6lx\t\t%6lu\n", lsize, lsize); X printf("Relocation items\t-%6x\t\t%6u\n", exehdr_area.relocitems, exehdr_area.relocitems); X printf("Relocation table offset\t-%6x\t\t%6u\n", exehdr_area.relocptr, exehdr_area.relocptr); X printf("Checksum\t\t-%6x\t\t%6u\n", exehdr_area.checksum, exehdr_area.checksum); X printf("Initial CS:IP\t\t- %04x:%04x\n", exehdr_area.cs, exehdr_area.ip); X printf("Initial SS:SP\t\t- %04x:%04x\n", exehdr_area.ss, exehdr_area.sp); X} X Xusage() X{ X printf("\nUsage: exesmurf exe_file [/v] [/min#####] [/max#####] [/stk#####]\n"); X printf(" where: min = minalloc\n"); X printf(" max = maxalloc\n"); X printf(" stk = stack size\n"); X printf(" ##### = decimal number of paragraphs.\n"); X} END_OF_FILE if test 5158 -ne `wc -c <'others/exesmurf.c'`; then echo shar: \"'others/exesmurf.c'\" unpacked with wrong size! fi # end of 'others/exesmurf.c' fi echo shar: End of archive 19 \(of 24\). cp /dev/null ark19isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 24 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0