dolf@uva.uucp (Dolf Starreveld) (08/05/86)
As much as anyone else, we wanted to know more about the internal format of MS Word document files. Since no information showed up after several requests in this newsgroup, we decided to have a peek inside and see what we could find out ourselves. We found out quite a lot, though not everything. Below you will find a binhexed file (MS Word document) describing what we have discovered. The list of things that we can explain contains items such as: character style formats, paragraph layout formats, tab settings, footnootes, runningheads, picture paragraphs, file header and the text itself of course. We are still working on it and we have already discovered a few things that are not in this document. We still have to put it in, so be prepared for the next version of this document. We encourage everyone to make use of the information provided, but we expect you to be fair and place every program you develop based upon this information in the public domain, or at least make it a shareware product. (Free for us of course !). Also we would like anybody who discovers new facts about the format, or who finds errors in our explanation to inform us. We are currently working on a skeleton program which will provide functions to read an MS word document and store all formatting information in memory, so that with the addition of a few user defined procedures things like mw2troff (msw2troff) can be made. Expect the source of this program (AZTEC C) in net.sources.mac in the future. description Dolf Starreveld / Maarten Carels Department of Computer Science, UvA Usenet: {dolf,maarten}@uva.uucp {seismo,decvax,philabs}!mcvax!uva!{dolf,maarten} Snail mail: Dolf Starreveld Department of Computing Science University of Amsterdam Kruislaan 409 NL-1098 SJ Amsterdam The Netherlands Telefone: In Holland: 020-592 5137/5022 International: 31-20-592 5137 or 31-20-592 5022 Telex: 10262 HEF NL (------------------- Cut here -------------------------------) (This file must be converted with BinHex 4.0) :$Ne6)&G[FQ3JCQpbE@&d!&G%3NjA6e*%!*!%-B!!N!3H2Iib!!#V!*!,+5m!@!" J!'!!B3"L!'-!N#3SV`!!++m!N$K08b"AEh*N)%CTE'8JCQpbE@&d#9"KCf8J!5" [CL!e$8eTBh*[8fpQG#"AEh*N)'CTE'8JCQpbE@&d#`Y0,NSZ)%0KFQ9XFb`,35j (,L"6G'&bFQ9fC@aN#`Y%CA"KFR4YC@jd)'pQ)%0[EA"eG'9b)&0MD@9ZBf8J#e9 ZDACPFR0TG(NJEfBJ3@ecG'9bC'&Y$@8YE@&TE$SJHf4PBhCKH#`JF'KTE'&LFb` JFf9TFfe[I5&YBhCKH#&eGQ%KHfeKBA*dC@iXC'pXCRd,FbeYB@PX1L",FR9TFfa KB@iJ0$!j,#!a-$Ni)&0+)#""EA0dCA*NB@dX)&4SC5"1CA4SCA*XB@jNF`f3!c% Z)%PZG(*[C(9MG'P[ELi09'KTFb"NEf0eE@9ZG#"NCA0MFQPLCA-JG'KP)(0dFR9 MG(9bC5"[CL"dD'8JCQPXCA-JF(*[C(9MC@3JBRNJ6@PMFQp6EfCd)&G28N3Z)&4 SCA0P)'CTE'9c)'&bC5"[CL"dHA"P)04A4%*1e5iJ9'KTFb"VEQphE'9NCf8JDA- JCf&dD'9bC@3JBRNJE'p[DfPZCb"KG#"QD@aPFb`JB@jN)(4bH@PZCb"dEb"TER4 PFR"bCA3JG'KP)'*jG'9c)'PZ)(4SC5"QD@aP,L""E'`JD@jQEh*YBA4TEfiJDA- JBQ9XD@9fC@3JG'mJBQ8JBfpbFQ9MG#`JBR9d)'j[)(*PFh"[ER0TBQPXDA4j)'C [FL"PFR*[FR-JEh)JEfeTFh0TEfjc)'0KEL"LC5"dB@YPELiJ8'aPBA0P)'aPG#" eFb"VEQph)'PQ)(P[G5"QD@jN)'9bFQpbFb"TEL"dD'Pc)'4[Bh9YC@jd,#"[FL" TCL"jEh8JCQPZC#"YEh*P)'&LEh9d)(4SC5"cG(*eBh4eFQ8JEfBJG'KP)'CTE'8 Z)&4SC5"QD@aP)'C[FQeKG#"eFf9N)'*j)%e6)&G[FQ3JCQpb)'pdD'9b)'0[EA" eG'9bFb"dD'&Z)%eKBh-JE@&j,#"[FL"YBANJEQpd)'*P)(4SC5"cB@eP,JeAC5" hD@aX)'4PFf0bD@*P)'&XE#"cG(*eBh4eFQ9c)'pQ)(4SC5"QD@aP)'C[FQeKG#" LH5"YC@&ZFb"[CL"$)(0dFR9MG(9bC5"NC@0XBA*KG'P[ER-X)'&c)(4SDA-JDA- JB5"MEfjfC@jTC@jd)(GKH5"dEb"NCA0MFQPLC5"dD'PZCh-Z$3db,L"(C@jPFQ& X)'CTE'8JFh4bG@0dGA*P,Je")#"08b"AEh*N)'CTE'8JEfBJG(P`C5$89d4#6Y8 JBf&Z)'*P)'4TGQPNC@3JD@jdEb"KG#"XC@&cG#"QEh9b)'4TCQCPFQ9ZG#"YB@P Z)("KFR4c,L"AC5"hD@aX)'0KE'`JG'KPFf8JF'&bG(-JG'KP)0*SC@&NCA,6,#$ 5G'9iG0-X)0*MD'&bB@0dCA)JCQpbE@&dFp-JB@jN)0*`BA*KCh*KF'JJCQpbE@& dFp-JFQ9cF'9MG'PfC@aj,L"8D'9cC5"`BA*dFb"KF("PBA)JD@iJG'KP)'CTE'8 JD@iJG'KP)'&LEhCP)'ePER4TEfjPC#"[FQ4PFL"TEL"dD'8JCQPXC5Gc)'4KG'% JCQpbDbiJ9'KP)(*PFfpeFQ0P)'C[FQXJDA-JB@ahBAPc)'9YF(4j,#"T,Q8Z)'j [G#"KE'a[Bf&dC@3Z$94SC5"QD@aP)'0KEL"LC5"cC@9Z)'&c)'*PD@jR)'*eD@a d)'CbEfdJBQ&cD@-JBQa[BfYc,#"PB@0S)$%b1#"LHA4PFb"XEfjR,L"8D'Pc)'P c)(4SC5"MBA0P)'C[FL"KE'`JF'&bG(-JEfBJG'KP)'CTE'8X)'&XG'K[G@GS)'P d)'4[CA-JEQpd)'&`F'9KFL"dEb"LC5"cD@GZD@CTBf&ZG#"QEh)JG'KP)(4PH(3 JF'&bG#iJ9'KTFb"TEA"XD@9c)(4SBA3JG'KP)(0THQ8JEfBJB@iJ69-J9fpbC#" QD@aP)'Pc)'&XGf&jFb"K)'eeE(4TF'aP)'pQ)$%b1#"LHA4PFb`JG'K[G@GS)(G TG'KTEL"PB@0S)'pQ)(4SC5"`BA*dFb"YC@jdD@pZC@3X)(4SC5"XBA0d)'*jG'9 c)(4SC5"XBA0d)'*XEf0V)'*PE'pZCfPZCb"dEb"K)'0PFR4KD@iJF'&bG#"YBAN J+'&ZC#"eFh9KE'aj)(GTE'`T)'0[ER4KD@iJCf&bBQ&RC5i03@CdCA)JG'KP)'a KFh3JdR"KFQ&RFQ&`D#"QEh*YBA4cdb"LE'pMDb"cEfeP)'e[FQ8JD@jQEh*YBA4 TEfiJDA-JF(*PFf9ZG#iJ9'KTFb"TFb"TEQC[FQeKG'P[EL"MEfjZC@0dC@3JG'm JC'PfDA0TEfjc,L""Fb"jCA3JEfjXH5"dD'8JF(*PFf9ZBf8JEfBJG'KTFb"TEQC [FQeKG'P[EL"TFb"VEQphEL`JG'KP)'PZCQpbE@&dD@pZ)'PdFf9XCL"TFb"cG'P XE#"eEQ4PBfpNC@3Z)%e[FQ8JDA-JG'mJBQ8JCAK`C@0dC@3JD@iJG'KP)'jPBA) JCR9dGA*P,Jd0-b")C@&NCA)Z$94SC5"SC@&NCA)JF'&bG#"MEfjcDA0dFb"[CL" K)(0TEQGXC5"LE'pMDb"[CL!a-MJJBRPdCA-Z)&4SC5"YC@&ZD@jR)'pQ)'e[Fh3 JF'&bG(-JEfBJG'KTFb"SC@&NCA)JDA-JH@9d)(9ZBfaPBA)X)'*eG#"dD'8JD'9 KC'9b)'0KEL"LC5"NC@CTEQ9N)'PZ)(4PFQec)'pQ)'%J3b"cG(*eBh4eFQ8JBA- JCQpXE'phFcS0,bS,#94SDA-JFh4bG@0dGA*P)(0dBA*dFb"PB@0S)%e6,9G28N3 J*eG%3NiR)'CTE'8Z#bS[#h0dFR9MG!PID'9KC'9b#AX,,bSJ-$!J+Lm*GA0SEh* d#@KI-6X*,bSJB@ahBAPc)$"iCQ8c-L!U,`X[+L!`-#!U,`PeFfK[FR3*D&mb1`N [+L"KE(GKHA-J-#!U,`X[+L!`-#!U,`PeFfK[FR3*D&mc1`N[+L"KE(GKHA-J-(K KBM!`)#S[#bmU)$!`)#S[#A0SEh*d#@KIG@jV-9XdA6X*,bSJB@ahBAPc)$!J+Lm ,,bSJ-63J+Lm*G@a[EQF*D&p&9$X*,bSJ8'pcDA4TEfiJEfBJ-A0d)'*jG'8JF'& cG#"dCAKd)#S[#bmU)$%f)#S[#A9cD'pbG!PSAh"`BA)l#5mU)'*XEf0V)#-JEfB JCQPbFh3JF'&bB@GbBA"S)'*XEf0V)#S[#bmU)$%i)#S[#A9cD'pbG!PSAh!b1`N [+L"LE'pMDb!M)'pQ)'CTFR0d)$mr)'*XEf0V)#S[#bmU)$)`)#S[#A9cD'pbG!P SAh!c1`N[+L"cB@eP)#S[#bmU)$)b)#S[#A9cD'pbG!PSAh!d1`N[+L"LE'pMDb! M)'pQ)'CTFR0d)$q3!b"LE'pMDb!U,`X[+L!b0#!U,`PeFfK[FR3*D&p`06X*,bS JBQa[BfXJ)b"[CL"QDA*cG#!rN!3JBQa[BfXJ+Lm,,bSJ-MBJ+Lm*GA0SEh*d#@K IF$Bl#5mU)'*XEf0V)#-JEfBJE'&cG#"LE'pMDb"TEL"QD@aP)#S[#bmU)$)i)#S [#A0SEh*d#@KIG@jV-PXa0edl#5mU)'&XGf&jFb!`)#S[#bmU)$Bd)#S[#A9XEfj R#@KIG'aPEQGdD$X*,bSJ6'9ZCh4S)'pQ)(4PH(3J+Lm,,bSJ0MJJ+Lm*G@a[EQF *D&pdE'9ZCh4S-6X*,bSJ6'9ZCh4S)'pQ)(4PH(3J+(0dEh*PC#"dGfPMC5NJ+Lm ,,bSJ0c)J+Lm*FfK[FR3*D&peEQXc@c)fA6X*,bSJB@ahBAPc)$!J+Lm,I6X,G(P `C@4PCL"cG(*eBh3JAfKPB@4PFL"08ep)C@&N1`e8D'8JE@9KEQPZCb"[CL"dD'8 JdR9ZDfj[Gfl6)'CTC@aNFb"TFb"ZEh3JH@9d)'4TFf0[GQ9bC@3Z)&4SC5"SAd9 8)'CTC@aN)'0[ER4KD@jc)(4SC5"KC'4bCA0c)(GTG'KTEL"dD'8JCQPXC5"[CL" dD'8JBRPdC5"UGA0d)("KFh3JG'KP)'aKFh3JBfKKFQ&MG'9b)'PZ)(4SC5"NEf0 eE@9ZG#"dCAKd,#"T,Q8Z)(4SC5$5G'9iG0-JF'&bG#iJ9'KP)'KIG'aPEQGdD#" QD@9XC#"MEfjdB@PZFb"dD'8JE'9ZCh4S)'pQ)(4SC5$5G'9iG0-JF'&bG#"TEL" LHA4PFbi0N!-d,L"8CAKd)("KFR3Z$94SC5"dCAKd)("KFR3JBfpZG'&TER-JB5" MEfe`E'9dC5"bCA"bCA0PER4KG'P[EL"[CL"dD'8JG'9iG#"TEL"dD'8JC'pMG@e PER3X)'PZBfaeC'PZCb"bG@jZD@jR)'KPB@4c)'&ZC#"QEfpdEQpdCA-Z)&4SC5" dCAKd)'Pc)(*PF(*PFf9ZG'9N)'PZ)(4SC5"[FQ4PFL"TEL"hD'PMD#"TG#"[Bf0 eFR-JD@iJG'KP)'4[Bh9YC@jd,#"TEL"dD'8JCAKdC@jNC@3J6@&MD@jdEh0S)'& cBfPT)'0SBA*KBh4PFL"cCA3Z)&0[E@8JBA0MD@NJGQ&XG@9c)'KKGQ8JFh"PBfP KE#"YC@&ZD@jR)'K[Gf9fCA)k$6"i-$%*F'&RC5"ZG@eLCA)J+#K`B@GP+5"RE'p cFf&bH5N,-(J`03PKGA4[)'jeE@*PFQ9N)'C[Eh4ZEh4P)(*PCQ9bC@jMC5!S+'C [Eh4ZEh4P+5"RE'pcFf&bH5N,-(J`BJP'Eh*MC@3JEQ9h)'aTEQ8JGfPdD'PZ)(" KFQ&RFQ&`D!X`H$"M#89ZC#"[CL"NDACTFfP[EL"[FL"QEh*MC@3JEQ9h)("KCf8 ,-(J`C!P&EQ3JEfBJF'&bB@GbBA"S#c"i-@B*6h"dD@pZB@`JD(P`D'9Z$94SC5" KBQpfC5"TEA"XD@9c)(4SBA3JG'mJCAKdFQ&MG#"K)(4PH(3JEfjXH5"fCA*cD@p Z)'pQ)'&Z)%e6)&G[FQ3JCQPXC5"[EQ8JEfjXH5"ZC@9NFb"dEb"PH(4bB@0d)(4 SC5"dCAKd)("KFR3JEfBJG'KP)'CTE'8X)("[Fh0TBQaj)(*PF'aKBfPZCb"cEfe P)'pQ)(4SC5"cF'9MD@&X)'0SBA*KBh4PFR-JGfPdD#"KEQpdD'9b,#"NCA"PEQ4 TEQFJEfiJGfKKG#"jEh8JGf&ZG#iJ5@BJH@pe)'4[)'j[G'KTEQFX)(P[G5"hD@a X)'0PFR4KD@jXH5"RCA3JGQ9bH5"XEfjR)'aTEQ9c,#"cD@jMC5"jEh8JGfPXE#" RCA3JB5"ZCAGXD@jP)'0SBA*KBh4PFL"[EQaj)'&d)(4SC5"PEQ3JEfBJC@&MD#" `BA*KCh*KF'JX)(0[)("PFQKKF(-JH@pe)(GKER3JG'mJC'mJFfpYC5"XD@jP)'C [E'4TEQFZ)&"TBh4eFQ9c)'&bC5"cG'pbC@3JGfPdD'PZ)(4SC5"dCAKd)("KFR3 X)'&XEfjR)(GTG'JJB5"SC@&NCA)Z)&4SC5"`D@0dGA*P)'Pc)'%JFfPZCfaP)(" KFQ&RFQ&`D#"LH5"TG#"cC@aQ,L"8D'8JF'&bB@GbBA"S)'C[FQeKG#"bG@iJF'p TER4TEQFJG'mJG'KP)("TBh4eFQ8JD'&c)'%JBQPd)(0PG#"dEb"TEQ4TBf&dC5" dD'8JBfpbFQ9cF'pZC'PZCb"`BA*KCh*KF'JJDA-JB5"`D@0dGA*P,Jde,L"'Eh* YBA4c)(*eER-Z$89fCA*jG'KTEQFJBfpZEQ9MG'9N)(4[)(4SC5"QEh*YBA4dD@j R)'pQ)(4SC5"dCAKd)'Pc)(0dEh*PC#"TEL"hD'&d)(GP)(GTE'`JBf&XE#$5CQp bE@&d)(*eER26)'&ZC#$5CQpbE@&d)'4PFf0bDA"dEh*cdbiJ35"QEh*YBA3JFR9 Z)'0[ER0TFh4c)'pQ)(0PGQ9bB@`JBRPdCA-JEfBJCQpbE@&dG'PZCb"TEQC[FQe KG'P[EL`JC'9cBh*TBQ9N)'*PE'ph)#KcC@0dD@pZ)$BJB@jN)$FT,L"")'C[FQe KG#"NCA0MFQP`G'pb)'0[ER0TFh4c)'pQ)$BJBRPdCA-Z)%Pd)'Pc)'4PFf0bD@* PC#"LH5"dD'8JCQpXE'phD@jR)(0dFR9MG(9bC6S0,bS,#94SDA-JFh4bG@0dGA* P)'4PCQPZCA-JB5"QEh*YBA3JC'9cBh*TF(4[FLi,+Lm,Fh4bG@0d#9pQC'9cBh* TF(4[FJPl#bmU)$!`)#S[#A9XEfjR#@CNAh0dBA*d1`N[+L"cG'&bG#"[CL"dCAK d)'C[FL"ZCAKd)(*eEL!U,`X[+L!`0#!U,`PcD'pbG!PQC&pbG@il#5mU)("[D@j dCA)JG'mJG'KTFb"QEh*YBA3JFR9Z)#S[#hdl$89KBfJJCQpbE@&d)'*XEf0V)(0 dBA*dFb"hDA4S)(4SC5"[CQCcCA3JD@iJG'KP)(4PH(3JF'&bG#"hD'9bC5"dD'8 JCQpbE@&dFb"[CL"dD'Pc)'*XEf0V)(0dBA*d,L""CR4PFL"dD'8JD@jTG'PKE#" cG'&bG#"K)'jeE@*PFL"[CL"QEh*YBA3JC'9cBh*TF(4[FR-JCQpXE'ph,L"8D'8 JFQ9cG#"[CL"dD'8JCQpbE@&d)'*XEf0V)'0[ER4KD@jc)'C[FQeKG#"bG@jc,L" #Eh4S)(4SC5"QEh*YBA3JFR9Z)'&ZC#"dD'8JCQpbE@&d)'4PFf0bDA"dEh)JEA9 cG#"LC5"MEfjdB@PZC@3JD@iJG'KP)(0KE@8JCQpbE@&d)'*XEf0V,L"")'jPGb" LE'pMDb"TFb"KE'a[Bf&dC@3JD@BJC@PdD'9b)'pZC5"NEf9c)'j[G#"QDA3Z)!e 8D'8JE'&cG#"LHA4P)'PZ)'%JCQpbE@&d)'*XEf0V)#K[CQCcCA3J-(JhCLNJBfp ZG'&TER-JG'KP)'jeE@*PFL"[CL"QEh*YBA3JC'9cBh*TF(4[FR-JF(*PFf9ZG#" TEL"dD'8JBQa[BfXZ$94SC5"QEh*YBA3JFR9ZFb"KFQ8JFh4[FQ9N)("bC@0PC'9 N)'*j)'%JBRPdC5"MEh9ZG#iJ9'KTFb"LHA4PBfpeER3JCfPfCA-JG'KP)'jeE@* PFL"[CL"LHA4PFb"TEL"dD'8JCQpbE@&d)(*eEL"dD'&d)'&bC5"KBh4eB@aXH5" cG'pbC@3JD@iJG'KP)'CTE'8Z)&4SC5"[G'KPFL!SEQpd)(0dEh*PC#NJBRPdCA- JEfBJG'KP)'C[FQeKG#"bG@iJBA*P)'&XE#"kCA*[,L"2GQ9bB@aX)'CTE'8JFfP kC5"TFb"bC@4eBf9N)'*j)'j[G#"cG'pbD@jR)(0PE'4[E@aj)(9cC@3JCQPPE'4 c,L!09'KP)'CNAh0dBA*d)'CTC@aN)'Pc)'%JF'pTER4PFL"TEL"dD'8JG'9iG#" `BA*d)'pQ)(4SC5"NEf0eE@9ZG#iJ9'KP)'jPH(3JCQpbE@&d)'&`F'aTCA-JCR* [E5"dD'9bC5iJ9'KP)'CNAh*eEL"QD@9XC#"TFb"KEL"[CQCcCA3J+(*PE'&dDAC P)(4[)'*jG'8J0#"TEL"dD'8JCQpbE@&d)'*XEf0V+5"dEb"dD'8JCQpbE@&d)(* eELiJ$6BZ)%0SBA*KBh4PFL"QEh*YBA4c,Je8D'8JBfKKFQ&MG'9b)'C[FQeKG#" bG@jc)'4PCQPZC5"SEhFJG'KP)'0SBA*KBh4PFR-JD@iJG'KP)(4PH(3JE'p[Dbi J9'KPFf8JF(*[F'9bG'PPFb"TEQ0XG@4P)(4SC5"QEfjd,#"cDATP)'&ZC#"cG(P XC5"[CL"dD'8JBfKKFQ&MG'9bFbiJ9'KP)'0SBA*KBh4PFL"QEh*YBA3JFR9ZFb" KFQ8J+'&d)'aPBA0d+5!f)'*jG'9c)'a[EQFZ)&4SC5"YC@&ZD@jR)'pQ)(4SC5" LHA4PFb"TEL"dD'8JCQpbE@&d)(*eEL"TFcS0,bS,#94SDA-JFh4bG@0dGA*P)'4 PCQPZCA-JBfKKFQ&MG'9b)'C[FQeKG(-Z#bS[#h0dFR9MG!PIBfKKFQ&MG'9bAfC [FQeKG!Pl#bmU)$!`)#S[#@*jG'8*BfCIG@jVEQphEMX,,bSJ-$%J+Lm*BRPdC3P MCPpQEfjd1`N[+L"QEfjd)'jeE@*PFL`JFfpYC5"QE'&RFb!U,`X[+L!`-L!U,`P LHA4P#@0QAh"[D@jdFfPkC6X*,bSJG'PYCA-J-L`J-#!p)'4PCQ&eE(3J+Lm,,bS J-$-J+Lm*BRPdC3PMCPpQE'&RFc%l#5mU)'e[FQ8JCQaKCh-J+Lm,,bSJ-$3J,bS *BRPdC3PMCPpQE'&RFc)l#bmU)$!e)#S[#@*jG'8*BfCIF'pcDA4TEfil#5mU)(0 eF'9b,h0eBR0MFQP`G#"`DAKPE#"cD'PQG$mJ+Lm,I6X0)f4PCQPZC3P$5%CI8e" &3`N`H$J`#5mU)(0[E@9dD'PZCb"cF'9MD@&X)#S[#bmU)(CKE(9PFb"QEh)JG'K P)'0QAfC[ER3JCQPPE'3J+Lm,)f4PCQPZC3P$5%CI4NC"63N`H$0Q#5mU)'C[ER3 JER9YBQ9b)'eKFfXJ+Lm,)f4PCQPZC3P$5%CI3Np-4!N`H$J`#5mU)'*[E'3JBQP d)#S[#b0NC@CTEQ8*3dK'AdP838`*-(Jd-!N[+L"TG'&XD@-JBQPd)#S[#`X[+L" fB@aeCA-JCQpb)(4SC5"QE'&RFc%JB@jN)'CXB@Gc-L"QD@9XC(-J+Lm,)f4PCQP ZC3P'-9p96!N`H$J`#5mU)(9ZC'9bE'PZC@3J+Lm,)f4PCQPZC3P'-9p63`N`H$" M#5mU)&0YB@aX)%0KF(-J+Lm,)f4PCQPZC3P'-Pp26!N`H$%`#5mU)'peG'aTEQ8 J+Lm,)f4PCQPZC3P'-Pp65!N`H$!i#5mU)(0SB@4[Gb!U,`f3!cFZ)&"KFQ&RFQ& `D#"QEh*YBA4c,Je8D'8JCQpeFR4S)("KFR3JEfBJG'KP)'CTE'8JBfpZG'&TER- JG'KP)("KFQ&RFQ&`D#"QEh*YBA4c,L"8D'8JCQpbE@&d)(*eER-JFh4KFR3JGfP dD#"ZEh*YB@`JF'&bB@GbBA"S)'C[FQeKG(4TEQFJD@jQEh*YBA4TEfiZ)&4SCA* PB@CdCA)JCQpXE'ph)(4SC5$5G'&L)'4PCQPZDA4TEfjcdbiJ3A-JE@&ZH5"dB@) JC'9QD@jTG'P[ER-JBA-JEQ9PC'9N)(GTE'`JBQ8JD@iJG'KP)'C[FQeKG#"bG@i Z)&4SC5"dB@)JC'9QD@jTG'P[EL"TFb"NCA0MFQPLC@3JBRNJG'KP)(0dFR9MG(9 bC5"LC@a[GcS0,bS,#94SDA-JFh4bG@0dGA*P)'4PCQPZCA-JG'&LF`XU,`YcG(* eBh3*Ah4QEh*YBA3JH`X[+L!`-#!U,`PcD'pbG!PdAh"[FfPdD@pZ1`N[+L"dB@) JF'pcDA4TEfiJ+Lm,,bSJ-$)J+Lm*FfK[FR3*G&pQE'&RFcX*,bSJG(P`C5"[CL" dB@)JFh4[F#!U,`Yp1`YdHA"PC'9Q)(0dFR9MG#"IG'C[FQeKG#"08ep8B@)l$5m U)(CKE(9PFb"QEh)JG'KP)(4ICQaKCh-JCQPPE'3J+Lm,)f4PCQPZC3P8Ad&-58G 1690,#6"i0M#3!`N[+L"YBA0V)'C[FL"dB@)JB@aTCfjYC@jd)#S[#`Q3!bmU)'& XD@GZE@9ZG#"fB@aeCA-k)#S[#b0NC@CTEQ8*9&p-48C8#6"i-*!%#5mU)'aPCR3 JB@aTCfjTEQFJG'&L)#S[#b0NC@CTEQ8*9&p$48j849)*-(Jb-*!$#5mU)'0PER4 PFL"KE'PREQPZCb"dB@)J+Lm,)f4PCQPZC3P8Ae**4dK8#6"i0$#3!`N[+L"bD@G SG#"KE'PREQPZCb"dB@)J+Lm,)f4PCQPZC3P8Ad4&3dP038`*-(Jf-*!$#5mU)'4 PBfPYB@`JG'&L)#S[#`XMC'9QD@jP#94I6%9"4%e65`N`H$"M-$!*,bSJE@&cDb" QEh)JG'&L)'aPB@4PFL!U,`X*N!-[+L"XC@&NCA)JGQ&XG@9c1L!U,`XMC'9QD@j P#94I3Na"6NX*-(J`N!3*,bSJBQaKEQXJE'9KC'9b)#S[#b0NC@CTEQ8*9&p%6e4 6#6"i-$3`-!N[+L"NEh4dC@3JE'9KC'9b)#S[#b0NC@CTEQ8*9&p%390)#6"i-$J `-!N[+L"NBA0SC@3JE'9KC'9b)#S[#b0NC@CTEQ8*9&p-58j"i-'-`-!N[+L" XD@jP)'aPB@4PFL!U,`e8D'8JCQpbE@&d)(*eEL"TFb"NC@CTEQ9N)'*j)(4SC5" cG(*eBh4eFQ8JBQ9XEhFk$5mU#`P8D'Pc)(0dFR9MG(9bC5"NC@CTEQ9c)("KFQ& RFQ&`D#"QEh*YBA4c,JXU,`YcG(*eBh3*Ah"QEh*YBA3*H`X[+L!`-#!U,`PcD'p bG!P`AfCXB@Gc1`X[+L!`-L!U,`PcD'pbG!P`Ah9ZDfj[Gfia1`X[+L!`0#!U,`P cD'pbG!P`Ah*TCfKd1`N[+L"bD@GSG#"TEQ4PER3J+Lm,,bSJ-$BJ+Lm*FfK[FR3 *F&pQDA*cG$X*,bSJCQPbFh3JD@jNC@jd)#S[#bmU)$!i)#S[#A0SEh*d#A"IE'9 QG$X*,bSJE'9QG#"TEQ4PER3J+Lm,,bSJ-6!J+Lm*FfK[FR3*F&pXD@jPAh0`B@0 TEQFl#5mU)'aTEQ8JFh"KBfPZCb!U,`X[+L!a-L!U,`PcD'pbG!P`Af*PCQpbC6X *,bSJE'PZCA-JBQ9QEh*P)("KFQ&RFQ&`D#!U,`X[+L!a0#!U,`PcD'pbG!P`Af& QG'9b1`N[+L"XD@jPFb"KCR4PFL"`BA*KCh*KF'JJ+Lm,,bSJ-6BJ+Lm*FfK[FR3 *F&pbD'9KC&p`D@0d1`N[+L"bG@jZD@jR)'KPB@3J*L"`D@0dGA*P)'PZCQmJ+Lm ,,bSJ-6JJ+Lm*FfK[FR3*F&peEQYZEhGZ-MX,,bSJ-M!J+Lm*FfK[FR3*F&peEQY ZEhGZ-cX,,bSJ-M)J+Lm*FfK[FR3*F&peEQYZEhGZ0$X,,bSJ-M3J+Lm*690I9'& L#A"IG'&LFb"E-&d*,bSJE'PcG#"[CL"dB@)JC'9cBh*TF(4[FR-J+Lm,I6X,G(P `C@4PCJPcG(*eBh3JAh"QEh*YBA3*690I4Qed1`d[+L"fB@aeCA-JCQpb)(4SC5" `AfCXB@Gc)'CTC@aN)#S[#b0NC@CTEQ8*8%CI4Np29%e"8dX*-(KQCM!`#5mU)'e KFfXJCQpb)'C[Eh4ZEh4P)'PZCQmJ+Lm,#C!$,bSJGQ&XG@9c)(9ZDfj[GfiJ+Lm ,#b0NC@CTEQ8*8%CI5P969%e"8dX*-(J`-'-`#5mU)'eKFfXJCQpb)'TeFh4TCQP MBA4TEfiJ+Lm,#C!$,bSJDR9cG'PQD@0KG'P[EL"fB@aeCA-k)#S[#b0NC@CTEQ8 *8%CI6%9'9!N`H$#3"!N[+L"XC@Cd)'TeFh4TCQPPC#"`BA*KCh*KF'J,)f4PCQP ZC3P34Pp$48j849)*-(J`-$3`#5mU)'0PER4PFQ9N)("KFQ&RFQ&`D#!U,`XMC'9 QD@jP#9"'Ae**4dK8#6"i-$!i-!N[+L"bD@GSG#"UGA0dD@CTC@3JF'&bB@GbBA" S)#S[#b0NC@CTEQ8*8%CI5P969!N`H$!`Bc!*,bSJDR9cG'PQD@9N)("KFQ&RFQ& `D#!U,`XMC'9QD@jP#9"'AdY&49!*-(J`-$%`#5mU)'YPCA!JGfPdD#"ZCAKd)(" KFQ&RFQ&`D#!U,`XMC'9QD@jP#9"'AdY&49"-#6"i-$!b-!N[+L"VC@9`)'aTEQ9 c)(4[Cf9dD'9b)#S[#`X[+L"fB@aeCA-JCQpb)(4SC5"bG@jZD@jRAfKPB@3JCQP PE'3J+Lm,)f4PCQPZC3P55&p0390,#6"iCM#3!`N[+L"YBA0V)'C[FL"bG@jZD@j R)'KPB@3JD@jQEb!U,`X*N!-[+L"bG@jZD@jR)'KPB@3JGQ&XG@9c1L!U,`XMC'9 QD@jP#9*)AdC*8P08#6"i1$#3!`N[+L"KF("PBA*c)'pZ)'CTFR0d)("KCf8J+Lm ,)f4PCQPZC3P55&p&9N91#6"i0$#3!`N[+L"[EL"PGQ9Z)("KCf9c)#S[#b0NC@C TEQ8*8NKI6d4%#6"i-M#3!`N[+L"[EL"[C'3JF'&RCA-J+Lm,)f4PCQPZC3P55&p #6e486dd*-(Ja-*!$#5mU)'&`F'9KFR-JEfiJBQpdG'pY)'pQ)("KCf8J+Lm,#b0 NC@CTEQ8*8NKI8%P$9!N`H$!i-$!*,bSJG'KTFb"`BA*KCh*KF'JJDA-JB5"`D@0 dGA*P)#S[$8&XE#"QD@9XC(-JFQ9`FQ9cC@jdD@jR)(0THQ9c)'&ZC#"NDA0dB@j MCA-JBA*P)'PZ)%e6)&G[FQ3JBQ&cD@-JG@jTG(-X)'*PD@jR)$%[-M!JEfBJB5" `EfPZG#`JEh)J-5ma0$3`)'pQ)'&Z)'PZBfJJ+'&cFh9YD@jR)(4SBA3JB5"`G#" PFA9KE(-J-5mh-L"[CL"KEL"TEQ0S+5i05@iJG'KP)("KFQ&RFQ&`D#"QEh*YBA3 JFR9Z)'pZE(NJG'KP)(4KBL"NCA0MFQP`G'pbFb"ZC@9NC@3JCQpb)'&XE#"NC@C TEQ9N)(4KBR-JBA*P)("bCA0PER3Z)&4SC5"XDA0d)'pQ)(4KBL"NCA0MFQP`G'p bFb"TFb"PEQ4PC#"LH5"K)(4KBL"NCA0MFQP`G'pb)(GTG'JJG'KP)(4IF'pcDA4 TEfiJCQPPE'3JCA&eB@`JG'mJ-#i035"`D@0dGA*P)'Pc)'PNC@jdD@CTC@3JBRN JD'&fD@jR)(4SC5"55&p35808)'*TG#"cCA3Z)%PZ)(4SC5"dCAKd)("KFR3JEfB JG'KP)'4[Bh9YC@jd)(4SC5"`D@0dGA*P)'Pc)("bCA0PER3X)("bC@0PC'9N)'* j)'%J0L"LHA4P)'KPB@4PFLiJ3@CdCA)JG'KP)'KPB@4PFL"dD'8JF'PMG(9bC5" QEfaXEhGc,#"TEL"35808)'C[FQeKG#iJ+(0PC5"*ER0TC'8J6@&MD@jdEh0S+5i J9'KP)("TBh4eFQ8JD'9KC'9b)'Pc)'4PCQPZC@3JBRNJG'KP)(0dFR9MG(9bC5" RDACPEL"LC@a[GcS0,bS,#94SDA-JFh4bG@0dGA*P)'4PCQPZCA-JB5"`D@0dGA* P)'KPB@4PFJXU,`YcG(*eBh3*Ah"SC@&N)(X,,bSJ-$!J+Lm*FfK[FR3*F'KIEfC QFf9d1`N[+L"[CQCcCA3JCR*[E5"XC@Cd)'eKFQGTEL!U,`X[+L!`-L!U,`PcD'p bG!P`D&piC'PcG$X*,bSJC'PcG'pbG'P[EL"TEL"i)'4TFQ9MG'P[EL!U,`X[+L! `0#!U,`PcD'pbG!P`D&pjC'PcG$X*,bSJC'PcG'pbG'P[EL"TEL"j)'4TFQ9MG'P [EL!U,`Yp1`YdHA"PC'9Q)(0dFR9MG#"IF'KPB@3J690I8'PMG$X09'KP)(0THQ8 JB@jN)(0TCfjTCQPMB@jMC5"[CL"dD'8JG@jVEQphEL"QD@9XC(-JDA-JEQpd)(P PG#"NDA0MEhCPFQ9N,Jd-!!J-!'-!!!J9!'!!!!M-!&d!!!`3!&N!!!`S!&B!!!` X!&0MG@8#!!+!&!)!&!-!&K3#!"3#!*3#!"3#!*3#!"3#!*3#!"3#!*3#!"3#!*3 0!*!$J!#3!jN!H!#3!jS!F`#3!k!!F!#3!lS!E!!!!BS!D3!!!CS!CJ!!"#)!B`! !"$`!B!!!",)!A3!!",J!@J!!",`!9`!!"-!!9!!!"-3!8@0eC3)!&!)!P!)!&!) !P!)!&!)!P!)!&!)!P!)!&!-!P"`#!"3%!"3B!J)!&!d!!!6%!!!%c3"i!!!%cJ" e!!!%e3"b!!!%h!"[!!!%j3"X!!!%jJ"T!!!%l3"Q!!!)*3"M!!!),J"J!!!)j3" G!!!-+3"C!!!-33"@!!!-43"6Bh9P!J!#J"3#!"3$!"B8!J!8!J#8!J!8!J#8!J! 8!J#8!J!8!J#8!J!8!J#8$3!!$%8!!!de!(J!!!e#!(8!!"'Q!()!!"'f!'m!!", V!'`!!"1S!'J!!"D8!'8!!"DF!'%!!"DG!&d!!"E@!&S!!"ED!&F!!"Ek!&3!!"F !!&"MG31!&K3#J"3#!*3#J"3$!"38!i!@&!)!&!-!&K3#!"3#!*3#!"3#!*3#!"3 0!!!A!*!$&e!!H!!!&e%!G3!!&fB!FJ!!'&J!E`!!'Dd!D`!!'Di!D!!!'bm!C!! !'c)!B3!!'dF!AJ!!('B!@`!!(cd!9`!!(fi!9!!!*@B!8'0e!`!@&!)!&!-!&K3 #!"3#!*3#!"3$!"B8!J!8!`!@&!)!&!)!P!)!&!+!&!d!!#9Q!!!Qk`"i!!!QmJ" d!!!Rh!"a!!!Sj`"Y!!!T,`"U!!!CVJ"S!!!E,`"N!!!E-J"K!!!E4`"H!!!FCJ" E!!!I23"A!!!IEJ"8!!!PCJ"3Bh8$!"B8!J!8!`!@&!)!&!)!P!)!&!-!&K3#!!) !&!-!&K3#!"3$J"B8!J!8"3#3!i!!N!1J!'N!!!%5!'B!!!')!&F!!!'*rrm!!!' +rrm!!!'E!&3!!!1B!%8!!!3Krrm!!!3Lrrm!!!3p!%)!!"mp!&F#J"!1!-!!N!B #0`#3!r!#J"!1!%!!N![`!J"!%B#!!!!&S!@J!*!)m!S!!!3p!!!&L3"X!!!()!" T!!!)*!"T!!!)*Irr!!!),`"Q!!!)j3"A!!!-+J!`!!!%)Irr*S!J!*!%!Y!!N!A `!*!)"iF!!!X6!!!3e3#3"Ji!N!J#0`#3!r!#J"!#!-!1!-!!N!B#0`#3!r!(!!! -+J!!$6-!E!!!$66rr`!!$6Arr`!!$8-!D3!!$Q!!@J!!$cJ!1`!!%DB!,!!!$J$ !!*!'!MF!N!2`(S!J!*!%!Y!!N!A`!*!)#0`!N!B1!-!!N!B#0`#3!r!#J"!1!-! !N!B#0`#3!r!(!!!4TJ!!%EF!E!!!%ZX!A3!!%kN!0J!!&3`!*`!!&AS!*`!!&T! !!#F!!"%1!-!!N!B#0`#3!r!QJ#!!N!3#d!#3"I!!N!J(K`!!#a-!!"$9!*!'$J$ !!*!'!MF!N!2`$J!3!*!,m!B!!"D3!!!!&e%!E!!!&fF!A3!!'&J!6J!!'Di!*`! !'c!!*`!!'c(rr`!!%5D!)!#3"!,3!*!&m!#3#!H(!!!,p3!!%EJ!N!B1!-!!N!B #0`#3!r!1!"!!N![`$J$!!*!'!MF!N!2`"J!!'c%!!"Xbrrm!!"Y)!(J!!"aQ!'N !!"dE!%)!!"mp!%)!!"p[!$-!!"%QJ#!!N!3#d!#3!`i!N!J#0`#3!r!QJ#!!N!3 #d!#3"I!!N!J(K`!!#r8!!"&'!*!'$J$!!*!'!MF!N!2`!S!3"J!!(fm!!#(X!&3 !!#9R!&3!!#B)!%8!!#E&!%8!!#IF!%8!!"p[!$-!!"%QJ#!!N!3#d!#3!`i!N!J #0`#3!r!QJ#!1!-!!N!B#0`#3!r!QJ#!!N!3#d!#3"I!!N!J(K`!!#r8!!"&'!*! '"3!!*p`!!#MR!&3!!#NZ!%8!!#N[rrm!!#N`rrm!!#IF!%8!!"p[!$-!!"%QJ#! !N!3#d!#3!`i!N!J#0`#3!r!QJ#!1!-!!N!B#0`#3!r!QJ#!!N!3#d!#3"I!!N!J (K`!!#r8!!"&'!*!'"'B!38'd,QMrr`@K0R)&S#-S!!%%06er!Y!!!!3e+-F!!!3 e!!%!"Rrr!!%!!333"@-!(5$M!Y!!N!A`!*!)"iF!!32Lrj!%!$%!N!-H!!%'-5i j)'12k!#3!`%$r!!GC5"6F'&MC3#3"!a%Eh9LE'8J8h"KBf8!!!)!!J!!++m!!`! !-!#3!bL`!!(rN!3)4QpbE@&dFmN!63!!!5d!N!3&9'&LFmN!9!#3"R!!!-X!!!F !N!YE#%4[Bh9YC@jd%%4TGQPcD@pZ)%aKH@peG-N!N!3",3#3"!P'EfpdEQpdCFN !43!!$9)!"3!+!!%!N!8#!!!)C3!$!!!5D`!%!!!EI3!&!!!KE%S!N!8"'J!!b`! !*J49EQ4["&*PC'm+3f&Z*h3J9@jNE`G$EfeYB@jN!d0eG!4$Eh"j"9"KFh4P"%9 NDA3+4QpbE@&dG'PZC`C8HA"TEQF-8R9XCA)J3fKKEQGP[*J!!!: -- Dolf Starreveld Department of Computer Science, UvA Usenet: dolf@uva.uucp {seismo,decvax,philabs}!mcvax!uva!dolf Snail mail: Dolf Starreveld Department of Computing Science University of Amsterdam Kruislaan 409 NL-1098 SJ Amsterdam The Netherlands Telefone: In Holland: 020-592 5137/5022 International: 31-20-592 5137 or 31-20-592 5022 Telex: 10262 HEF NL