Page 1 of 1

Nisus indexing macros

Posted: 2003-11-28 07:02:36
by davidchristmass
Hi folks, having loads of difficulty getting the indexing macro to work as shipped with 6.5

After much scratching about, I have managed to get some kind of efficency in the code.

All the indexing schedules work well, and I found loads of bugs, one being that the macro remembered the clipboard, others were crashes, and unrecognised commands like set column, clipboard, etc. then onto the merge macro arena, which was difficult too.

What I have not attended to is the sub indexing part. This replacement macro, just works with indexing and merging.

A few additional things need to be resolved, these are in the forum of indexing titles, and names. It appears under test, this script replicates names, with duplicates, space comma. It looks pretty complex, and I really miss not having a book of macro codes, in one place, Joe and the boys must have worked very hard to bring it this far, a shame not to take it all the way.



Here is the complete macro,


<-----------

//¥Indexing// This is the controlling macro for the others on the list. The first to be called is "Index Proper Name" followed by "Index XÉ of YÉ," (which finds text in the form of the "Book of Ruth," "Gospel of John," "University of California," "United States of America," etc.) "Index Proper Nouns," "Index Titles/underline," (which will put any underlined text into the index, but assumes that most book and journal titles are underlined; others can be "cleaned up" later) "Index Frgn Wrds/italic," (which will put any italicized word into the index, but assumes that most foreign words are italicized; others can be "cleaned up" later). Each of these indexes is saved as Index A-E then merged individually with Index A by Merge Indexes. Individual capitalized words generally deemed unworthy of indexing ("The, These, Yours, etc.) are then removed by Remove From Index. This list is probably incomplete and can easily be expanded without affecting the functioning of the macro simply by copying the line (Find/Replace ":^Your\t\(:d+,\s\)*:d+\r" "" "agWt"), inserting the appropriate word (instead of "Your" and adding it to the macroÑÑbe sure to format the line as Any Font, Any Size, + Any Styles, Any More Defined Styles and Any Color. Finally, the index is formatted. I like to use Palatino 10 pt. and have the index in two columns which is how the macro here sets it up. These parameters can easily be changed. Sub Index is maintained as a separate macro for those who wish to use it.
Index Proper Name
Save "Index A"
Key
Close
Key D
Select All
Remove Index As
Show Clipboard "Off"
copy "" ""
Jump "1"
Index XÉ of YÉ
Save "Index B"
Key
Close
Key D
Select All
Remove Index As
Show Clipboard "Off"
copy "" ""
Jump "1"
Index Proper Nouns
Save "Index C"
Key
Close
Key D
Select All
Remove Index As
Unmark Index
Show Clipboard "Off"
copy "" ""
Jump "1"
Index Titles/underline
Save "Index D"
Key
Close
Key D
Select All
Remove Index As
Unmark Index
Show Clipboard "Off"
copy "" ""
Jump "1"
Index Frgn Wrds/italic
Save "Index E"
Key
Close
Key D
Select All
Remove Index As
Show Clipboard "Off"
copy "" ""
Jump "1"
Open "Index A"
Open "Index B"
Merge Indexes
Close
Key
Close
Open "Index A"
Open "Index C"
Merge Indexes
Close
Key
Close
Open "Index A"
Open "Index D"
Merge Indexes
Close
Key
Close
Open "Index A"
Open "Index E"
Merge Indexes
Close
Key
Close
Open "Index A"
Remove From Index
Format Index
//Format Index
Select All
Times
//(I like my texts in Palatino but it is possible to change this to any font on the menu)
12
//(I like my texts in 10 point type but it is possible to change this to any size on the menu)
//click
Layout Page
Set ColumnsÉ
Key 2
//(I like my index to be in two columns but it is possible to change this to any size in the dialog)
Key

//Index Frgn Wrds/italic
Jump "1"
Key Zxy
Replace All "Zxy" "&" "o-O-SAi©-wt-Gg"
Find/Replace "\(.+\)" "\1" "-oIaWgt"
Create IndexÉ
// The rest of the macro formats the index.
Key 4
Key

//Index Proper Name
Jump "1"
find/replace "\(:u:l+\)+\s\(\(:u:l+\)\s\(van|von|de\)\s\(zur|der|de|ungern|la\)\s\(:u:l+\)\)" "\2, \1" "IaWgt"
// Pedro Calderon de la Barca
find/replace "\(\(:u:l+\)+\s\(van|von\)\s\(zur|der|de|ungern\)\)\s\(:u:l+\)" "\5, \1" "IIaWgt"
// John van de Kamp
find/replace "\(\(:u:l+\s\)+\)\(:u:l+\)\s\(:u:l+\.\)" "\3, \1, \4" "IaWgt"
// Martin Luther King Jr., Henry Cabot Lodge Sr.
find/replace "\(\(:u:l+\)\s\(van|von|abdel\)\)\s\(:u:l+\)" "\4, \1" "IaWgt"
// Ludwig van Beethoven
find/replace "\(:u:l+\)\s\(\(Ben|Bar|Ibn\)\s\(:u:l+\)\)" "\2, \1" "IaWgt"
// David Ben Gurion
find/replace "\(\(:u:l+\)\(\-\(:u:l+\)\)*\s\)+\(de\s\)*\(\(la\)\s\(:u:l+\)\)" "\6, \1 \5" "IaWgt"
// Fiorello La Guardia
find/replace "\(\(:u:l+\s\)+\(:u\.\s\)*\)\(:u:l+:u:l+\)" "\4, \1" "IaWgt"
// Rob Roy MacGregor
find/replace "\(:u:l+\)\s\(\(O'\)\(:u:l+\)\)" "\2, \1" "IaWgt"
// John O'Hara
find/replace "\(\(:u:l+\)\s\)*\(\(d'\)\(:u:l+\)\)" "\3, \1" "IaWgt"
// Carol D'Agostino
find/replace "\(\(:u\.\s\)\(:u:l+\)\)\s\(:u:l+\)" "\4, \1" "IaWgt"
// J. Edgar Hoover
find/replace "\(\(:u:l+\)\s\(:u\.\)\)\s\(:u:l+\)" "\4, \1" "IaWgt"
// John F. Kennedy
find/replace "\(\(:u\.-\s-\)+\)\(\(:u:l+\)+\)" "\3, \1" "IaWgt"
// FW Albright, P. D. Q. Bach, etc.
find/replace "\(:u:l+\)\s\(:u\.\s\)+\(\(:u:l+\)\-\(:u:l+\)\)" "\3, \1 \2" "IaWgt"
// Norman P. Q. Horman-Pitt
find/replace "\(\(:u:l+\)\s\(:u:l+\)\)\s\(\(:u:l+\)\-\(:u:l+\)\)" "\4, \1" "IaWgt"
// Susan Judith Klein-Katz
find/replace "\(:u:l+\)\s\(\(:u:l+\)\-\(:u:l+\)\)" "\2, \1" "IaWgt"
// Felix Bartholdy-Mendelsohn
find/replace "\(\(:u:l+\s\)+\)\(:u:l+\)\s\(I+\)" "\3, \1, \4" "IaWgt"
// Rupert Roderick Rymbaugh III
find/replace "\(\(:u:l+\s\)+\)\(:u:l+\)\s\(IV\)" "\3, \1, \4" "IaWgt"
find/replace "\(\(:u:l+\s\)+\)\(:u:l+\)\s\(V\)" "\3, \1, \4" "IaWgt"
find/replace "\(\(:u:l+\s\)+\)\(:u:l+\)\s\(VI+\)" "\3, \1, \4" "IaWgt"
find/replace "\(:u:l+\)\s\(\(d'\)\(:<':l+:l+:l+\)\)" "\2, \1" "IaWgt"
// Ercole D'ercole
find/replace "\(\(:u:l+\s\)+\)\(:u:l+\)" "\3, \1," "IaWgt"
// Rupert Roderick Rymbaugh
find/replace "\(\(:u:l+\)\-\(:u:l+\)\)\s\(:u:l+\)" "\4, \1" "IaWgt"
// Jacques-Yves Cousteau
find/replace "\(:u:l+\)\s\(:u:l+\)" "\2, \1" "IaWgt"
//Jimmy Hoffa
Create indexÉ
//Gets rid of the line of names, suffixing space comma because they get repeated
Find/Replace ".+\s,\>\t\(:d+,\s\)*:d+\r" "" "agWt"
// The rest of the macro formats the index.
Key 4
Key

//Index Proper Nouns
Jump "1"
find/replace "\(:u:l+\)" "&" "Ia-Wgt"
// This finds any single capitalized word of at least two letters.
Create IndexÉ
// The rest of the macro formats the index.
Key 4
Key

//Index Titles/underline
Jump "1"
Key Zyx
Replace All "Zyx" "&" "o-O-SAi©-wt-Gg"
Find/replace "\(.+\)" "\1" "-oIaWgt"
Jump "1"
//This finds any text in Underline style and marks it for the index
Create IndexÉ
// The rest of the macro formats the index.
Key 4
Key

//Index XÉ of YÉ
Jump "1"
find/replace "\(\(:u:l+\)\s\(:l+\)\)\s\(\(:u:l+\)\s\(:u:l+\)\)" "\4, \1" "IaWgt"
// Feast of Unleavened Bread
find/replace "\(\(:u:l+\)\s\(:l+\)\)\s\(:u:l+\)" "\4, \1" "IIaWgt"
// Gospel of John
Create IndexÉ
// The rest of the macro formats the index.
Key 4
Key

//Merge Indexes
//This macro "merges" two indexes together. The top two windows should be the index windows, generated by "Make Index...". The two documents producing the index should not have any overlapping page numbers. The page numbers of the top window should be higher than the page numbers of the window behind it. The merged index replaces the second window's contents.
//If you are using the "Sub Index..." macro, run that macro after all the indexes have been merged.
Click R-13, -10
Select All
Copy
Show Clipboard "On"
Find/Replace " " with "\t*" "aA"
Send Back
Toggle Front Two
Select All
Copy "" '&\CC'
Click R-13, -10
Show Clipboard "on"
Select All
Sort Paragraphs
Find/Replace "^\r" with "" "gaAt"
Find/Replace "\([^\t]+\t\)\*\([-0-9, ]+\)\(\(, see also\)\(.+\)\)-\r\1\([-0-9, ]+\)\(, see also.+\)-$" with "\1\6, \2\4\7,\5" using "aAgt"
Find/Replace "\(see also\),\( see also\)-" with "\1" using "aAgt"
Find/Replace "^\(.\)\(\r\1\)-$" with "\r\1" using "aAgt"
Find/Replace ", -$" with "" "aAgt"
Find/Replace "\t*" with " " "aA"
Close
Paste
//Remove From Index
Find/Replace ":^After\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Against\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^All\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Among\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^And\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^At\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^But\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^During\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Each\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Even\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Except\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Finding\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^For\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^From\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^He\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^How\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^In\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Inc\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Instead\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^It\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Its\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Last\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Me\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Most\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^My\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Of\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Once\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^one\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^She\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Since\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Some\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^The\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Them\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Then\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^There\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^These\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^They\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^This\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Those\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Though\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Through\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Toward\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^We\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^What\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^When\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Where\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^While\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Who\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Why\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^You\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Your\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^ \t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Zxy\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Yxz, Zxy of\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace ":^Zyx\t\(:d+,\s\)*:d+\r" "" "agWt"
Find/Replace "Zxy" "" "agWt"
Find/Replace "Zyx" "" "agWt"

//Sub Index
//This macro converts multiple entries of the same heading in an index file to subindexes of the heading.
//Copy main index ruler
Jump "1"
Key
Copy "7"
//Clear text which might have been copied with the main index ruler.
7
Show Clipboard
Select All
Clear
Close
//Find all sub index entries
Find Next "\(^.:+\),.+\r\(\1,.+\r\)+" "gtT"
Copy "6" '\1'
//Mark selected region
MarkÉ '\1' "t"
Key
//Create subindexes
Jump '\C6'
Find/Replace "\(^.:+\),\s*" "\t" "gst"
//Paste header for subindexes
Jump '\C6'
Key
Paste "6"
//Paste the sub index ruler. Note, the tab in this ruler can be moved anywhere to set the indents on the sub indexes.
Paste "" "\
"
//Paste the main index ruler at the end of the marked text
Jump '\C6'
Key
Paste "7"
//Delete marker
MarkÉ '\C6' "t"
Paste "6"
key D
//Repeat macro
Sub Index
//un-index
Find Next "Å" "-ATgi-w-o-O"
Unmark Index
un-index
//un-ToC
Find Next "Å" "-ATgi-w-o-O"
Unmark Contents
un-ToC
//unindex as
Find Next "Å" "-ATgi-w-o-O"
Key R
unindex as
------------------->

Cut and paste,
in a new macro and test it. Just do indexing, it will sort the whole blessed thing out.

I need to spend more time on this, I know, but people are probably in a rush to get work done, phds, etc, and getting this far, will be a major step.

Any advice, about OEM updates for this macro, will be appreciated.

mailto:davidchristmass@macunlimited.net

Best wishes to you all

DAC

Nisus indexing follow up

Posted: 2003-11-29 06:30:23
by davidchristmass
Hi, I posted a post yesterday, re indexing macros

I spent some time on tidying the macro up, other things such as sub indexing, and of course, I remembered the blessed codes won't turn out right on a posting up, so the bin hex version is here.

You need to de bin hex it, using stuffit.

I am posting it here, because I guess it will need looking at, and checking on other versions of nisus, and of course, in time, it may end up with the other macros on the nisus site.

-------->

(This file must be converted with BinHex 4.0)
:%dPZC'9iD@jR)%eKBh*[FbjcDA3!8dP8090*9#%!N!3J!*!&pCe6G(9QCNPd)#K
M+6%j16FY-M!`-5""E'&NC'PZ)&0jFh4PEA-X)%PZBbiX)'KdG(!k,bphN!-ZB@a
KC'4TER0jFbjMEfd[8h4eCQC*G#m0#KS!"4!!!#!!N!4b!!%!N!0b$Ed0TD95CA0
PFRCPC+@P!+@3"!%!!$m!!,A6fGLllPGN!*!0$p`Y!!!Z%3!!#p3!N!32!%PZC'9
iD@jR)%eKBh*[F`!"CXG668&$6NP653%!rj!%!*!+J!#3"B[f!!"TVJ!!%dN!N!3
2!%,"e(pUM'U4hAY-m8LkpM,I#!1R(RAC$q0mKIT3Z,bjfelijJE`3T6!cAq[A"3
AFL#UG[[R1ENbDNkC948EEZjb6NGPYK[9dCj4M*l@qd+#(INj#H'i[bB%`VUeR+q
!l!HIGPeAHEFDlTUGFQGFpTq49,mY!Th`&FH+84aLTJXV&(UF`U@SHfiGaqQNp[f
fTX[+c1jC8'9JBVUiK5P*U4`(!-S0-pQV1"K6R#LqA[@eUqS+UCG,SMCDKcIBQ5`
)pc2elri%B#-rqG)3bCLZ$QMqm-#[G[hJ5@Z6)U)S5ZdpK4GXYp1J"N(Kr1MRY%c
TD01TKrj[&jPQBRXm0AE"2!-AbVBLLSJ)XT&jN!!2S5#[`c1SCN14"+J5GQ@i+[F
"[30eBY`h320r0'dHUfUFh!R5*rSf3E2JH8%5f,GFHh26m`eZ*'2*PQPF0+dGKR9
8*kSZ!)Hkf["FSS&RF6XA@`BQ0b+(,eC8913kJG66"qeqmZ4N4*!!Gl'"834PY[e
SS3I&'*k4JGLZaeaUm!)1JNT#Hq*QGZ$GCdPA$i4al*AK@,Yjq0-PLYS&'K9jqUQ
LNcrqZaKSRH[5Ch%PY&&d8ThGfMhSmh6Cf)Gi'QArLc0pS`eDX[+kH,1Lfe44#!J
Y5*!!Jp[HV2XpHTEJ&'IYiS$NI@afdCUdB+UIALcA6,6"b8ZdpR183N,bQqh`5MT
+j($G98#C*%Y0QRX&-+4SK3%R2mYRTq2hjX@#42%'TqRCQl+I)pSmd!BN3SUXPN3
m$GHqj5@1L*&A`U8,fBVcKL,eSf&IG6)#F,Z15"0[Kda'mPmKQ(ZX&h3*`LAKU$)
ELj8RiAfh#fH$lYe)h)jRD(SQ05(UN!$D[8Tide&`qeqm%'MP50B("jmi`b,$Vpi
Tb6'i`5K6b-*2!['`$I,8*BFbIYF2488rl4%'1hdB)Uk@e@IT34FPY%8m1USX#e4
iG5BBJ[,)Cpj%!1Xi'icaJLSB%FX&INM0MXGJD54MehJ2-S"c"!Q8SNl&Xh8FSYp
fKJQANC[ZKqIV#18XP$mff*GAT2eYVa9X2GiSZ5Ah1@!i-6K"dMDb5["@ZRE3El2
kJZDHL(R%i-hfYSq+VRJVr&%+-L53!!,I"hD9TllA"FKAXL5C#B#dPpU%A!e1Qqe
3TKQY,k`(38@mNJRDT-%aLSdbJl8!rGYZ)4)QTmD0A5ar+bbZ*@%hI9h1)SK4+pl
NME[`a&Zh#VlQL%5b1b-q0qa"H[fPT%imr#G!N6mNZX$Z(eb!HIKVlTQiJ&kE,Id
PaUK&LieMqSfHXZ[6Kdm3'q`Nr%a!V9JQ)&dUCRrDkcClcG19iQj1%L`T8`qPd!&
IDF'b$If#R[6`S60r%pi[Da)#pi#Fhbf$ElVBY0BU9S!2ZqSNif#[[kIcSJ#dSh2
3k`L4IQ!6))VhUVI45$Dj)(qEKkB*l-kP3$JqS$L&U%mB,N(3`Z38fJH80''J$Xh
Y`4eMHM*ihjp[AqQbcLqYKq-0M"iTTCD(mhCH-KCqLBT#la*5P(KQaAj%X4U8L[h
q35pee(qK*8&LU(R&B9BCCL5AB-E1LB(mG%j16kVCYB@4"ES-UXD+Z9NX,)K)Yr(
d[Xb@$6pX*c[[MGc2%iVdVjPil-eS20dkHkiA$FKNB)!`N!$@Va,TMEeT8Ia$V+4
RHaJ!dkj3'L@9Ki+)kKL90'q4H9d*qBC"9KGhCH"aA+$hMdY'C`%IpSMYmC,GlXj
5Pji%UNTah9K5Y*TE2&UJ,$[,kQ)ie-ErK&ZbSY,0IDINPpcqMhGL!qYS8j4f4(@
%#Ldr+APmE0p2IjDq[+&#CPhFAa`fEIFk,f[3mUaD%lUMa8488GAV3+-5(jh2D5L
fP5hGMmI2Z1[Bh6E9a!-FLF2-I2YHUfQScldB-YV@A(4bh93Hq08qYTLl0-61![0
3#C*br%%JCFN(-SpM1$+!mNR'iSSAcbflrqbm'G9II8lC""9f*(i%[FL-b"T(466
pEbjL08`I`#Qk(N4E2YEQjpj0DpVjIF)m&Y-ZVQEj'2*"XZ%&!X+51lmBI5q+Ef,
3'cSU!&q%cS53!"S0e2#h%cmB6[-,H1M[&9S*5mPX)ppJM&#P)q&C8eC8h@KXVA3
e!deYq)@T@PZV&a'IQ!bAjhb`,H!h$T'mZI+hM@83m8K1H2[KhTIqi89X0dZ8NYQ
b)lfDp'RS85E2#P+r2V*GF)#qa!e,P(`K5XF!VP@[-E'("95+$e9rPN(5%@*!J[8
E[4ZjVZFCe'5l(c&KE(1a*r2,BTNPRXXV`92S%@&p&bK3ml`$&QA)2p6HKmeY`mI
'M@AD4%B+ZJHNPJ9Qce#`FQ[dNih0TRTq'p`,#b`(j`dS1KbVe9aZ#kF[NkQ"YYA
KHTabI,Z`%ZUjHa@b+,EFFJZN$XQeZNUK9,YGk2'Rl)q-`1l2G)D1j(b(M3GVA*N
X9cEA-DBc1M!&AI-&L1LER-00!USC"GhV44KD@CTa+8CZ%UJ-9AUT0$Zjr9XIYV3
cGB*Ek2R$K6dQr$aJdp2KjL,fdSBLkj4-fb3UVFh3r[J*i(DKTI2mCI[NJBq&0"Z
mDQ"&(l[5dbF#FU0r1TXMm$14d20XH"b*(91RkIl-"AcB`Kke3RXXIf0-6)K4'Dp
%U4`Mi`HAPQ9IC,qF#aNUL8)pI+Ef!T')kk`#`#Z#0+Rh*d@@,5(S8'#BkDNehX@
'Mm9TpMk!cIekBm+'VR-r1P3m9f&NRm'R0%$"YD9%!P-PpKBmk5X0kj+j(BBccBS
&ZPphjLd#KJ"&R2'1ciXMk8HAPQ+kRiDRb#8ELP[D2'V8lmI*a%M$@&pVUcB(q05
j12fPi)HUGi1k,hLT!(e4J%LYZ![dD,,Q%Jk0(LbY$-ZB9hX*lA94,8-69'lTX`p
HG6S%Xa3ZQYH&&%@LY45YF,2$%dJ639lHff3@+HJrM#`CKG&1&NXB33P'CZLJbYS
qHEl"6p`'c*)#i&Bmj$bBSYk2%5"`f2$8k1C1mp0qcic!af4HT0[5rAYMjl3cS)f
3!*I*"G5bl'4SL'PIJHY@8!R$$ATjIfq%0a!"Bm,-LHZ9Z0GUBQ5562(00hG2*N3
q+P2eV@Zl1hY4kj3S+PU!%NSGF8f3!'iQ"miq8H3!K[CCQcD8YH@icKl"%M`%9Uq
f84%IhRZK*RiL'I#%IBDDEY(LUjB8$c)%@mXp!&#5eRi$i&mjm%C*B0"r%V2rJNS
4Q-LDCB8qL*!!"Sc9BcQ)U#IZdhhd'USai0+jEQr)51&`'(f&!1kPq6aq6Ae3j0I
i!J1+5iG5l6er,1p9hSpERMGQ((ZMrq*RFG9p#*B5RZMmYSA1'`Ui0")k9["51G6
DG-%4Ti[dqMcb3IBBbIhDMrBlZX%hlK)D0Tr%$VqrB,UJ&eRPki3$FmP)X484`eF
S+!mX3rKl[mMQ+NdH9T(1R#(+eaYPP5h$f+$leN5c**IQq&,(RF3I[-VrhDTdj%e
K`ieB5j,`RcfD$ec3Q11-K+X@L!c6EdpDFkiX)RiF!Vi88)X"Rmf&iM!5T9004G&
GZrQj&$A*E-1jNTbL(ETZ+9$8&G@V)0pk$84+emmAZX&UGP4HqS,,f&cEC'pVPSL
m[bPc`Tb1DC'@S34E'eD*0[NAHFahjjAl8*,&L(*d!#m#JGDI3rXXEl+IV*mT#qd
Mh*UX@-B$Dk`f6fkI1&Akcqb*f3`h!3Pb+e5qPAD2iZZlS)35NLPXD22E4BbZid3
2P$16Td)kr1iUm"D+#fKrFpr"Xa)jLG#8NKdh&Sr2d'Sq!dEb3erKEQ%DYkC6"`P
9CZp&dJAYC`c#UKl)h*2DY&,JML''DSmHFk+3!&A$""25GHH(90QA6E%%44lH`"X
pQaJT'lR2M3+T!Rr%P2XrPGr['BZ-rke[V@f#V,39KjQ234lS'0dMqf`,RhbNbcb
Jp[chLd3C,e)T0'K3qBbTFA2HdTJi-"M9KCJ)2qKd8c9YVl2!YE8Y$9j#5mhG#1C
T0%cjK69U426HL2F6E5C$0Q50C6qfUjQl!LjPS9(3ddaM@*0HKD"bQ%[cXhK9cDl
p$Kc8"0)(rD!49D2L4e5ZbPr`fq!ZJ&NeUDLiU)@)`Imh3hQUr%h3jND`c2R8E-4
m#80VErZVc3'bVebQM[fIF8BU9cPS+ZPcqB2("&+dTf8S5YlDYB&Rkfl$N5!lYBk
AA[8$Trp46J*`d@%89CUTD*@Q"`D021(!iQ$),"+8*V"1"6,1qdJ-q6`+9m#p2*-
r#`03Tp-E)``,`3ek#+UFapYr&@c`C+QGh0j@#q&"Qk"VN3NF'RjhC+%Nk99mlJU
5!kh%R`Vi*FmcflP9iK8J6L,"abe2!#caZ'p@`U'Ea![eZU28k5RTXA)rk9m$Zea
F@G4ZT0603+Ue9'(`-9PhaA8CBiUYP*X!iTaY!$Gf2V*$jH[@$BXmZ%i"r9+T)JV
INqZpfc6`MJ(-*FZDX2rlMQ(&6rcFEhjmH#P4G%$MV[V9@D*pp[(HK2+f3e'dGIc
+$1[p"hkF8E,9jDA[Y[!&5595MPel&N(46BXQUYCG-4"&5YZ!#ZiV(ILFHBa&B8e
ldJVR$e`Gm@fF4qM*f!dLQ[#XTilTSjF%f,kD'*T)*D,C9iRhX@PNX$4bf4GR'`k
lPUqJXkk-beb`@@X$EMd@KDka-hc0@-Nde2FHp+#Em#h@ANpGUj!!qp(*5Ae&1%'
"eacH@!-G@NJd64!F0J&HP1`LSGTcMJB1ZM"FrAAQ6H5%*kaUV@a1U+KqRi*#('h
ZLeK[JXd8@2p8&`q`&P6,5Ekb25kQ5lD['JD')%G2GFr#Rfp34rbpB6!TkT)*)'p
CmX&G46hFF'06GqJ@c("CV*VV&m4JC%dlfS)!8-!4[iC6dm8HEYC28j(er$L8rHS
Vr6mmG[h1T&J`+j!!Ta!KN5V4h$$N5R)((35EbEQGMP#3!$Gam`'5N!"Nd,5c'33
RLUh)i,((q&iiFRSf583(P$5SiN%($jQ@XUNUpG#-meM"[Tlj"),'ajrpdZ@#aL'
cXT!!!jicClEI&R%G3ie9!h%aB14C(FqATYFCVE3-P3@"SY![FK2fbm3SmL1Lc1C
CkB6Y0Rb!9EM*(1BP+pQb-Xdr!cdHFjN2&(NQV&SNA+K`(M42R8(p$DeIqDSJ)c)
!plD'e3NEE"Qc%K-NA(XZ$P-V!4i6TfL"iYBjeJFMP9**&a@HPe89EbMYCD`I5B5
5jG,*C,k&T($T')MES,PXZqP$FF"lK1`d&"ea[3hb"-GK[6-I)E'(XBbD!GMS$m1
pPTjPI,Q1mZLppG2e@NaJP,4)MCkF-HU533&KG001r)+#&DV292%2#8Fj['LLG&2
M*Qr*+80,m)q@L@Q)qUlVc4HmEZ&X)5TY,ZQilG3%mk$-XpI"Q)jh5b@lZ)+lMVd
mB1bDS3VHcF89le`VYN!TPPi[m[1H$jJ!L&d[`2fA-ELPJYTNZfC"d$Q51YYV$C*
rQe0IaA-)h4X2[8Y(Z1A&MUArKaB2Ub!dXY',&P89HaZrq13he26@BLSK05ThT*&
ckU5DfV$FrIY3P(d%c([E6*%Rl3U5'PdTYdQQH@i'f8T@5j*U4Y@,#@V&#bi(BBF
[3U8iamdED+H19Arq3cD$%La2jGf"fdfP1L9'fC*5ba"Uck5XR`rJ&IFr+eh#`@i
&4HEKq$+V#j@NrKdd*EA+"GKRl23AG3RRj48iF,V1LMqYCZIYBD1"-pNBre&+E(H
bVMEF'K0bmXLqB2XV*J3bLJ*U%$&5ARbrBhphcU9QZ8FkqMA&-qkhMqkhDKK'8I0
"KpE&d-iba+qF@U895QHXcmilcP'NL5edle!I5,md$(cDK*,+e0*@mGECV$(Xq)#
`Xmkh5!YaZiBfY5ij[KqS[DFr,Ya3Rm+,@SGGEI5R+P`*M`0mf3"f"(jHNa5r+PS
MBBPCbr,(VD01fE%YpN!V8IZV+$j2GF*BEeDF-m"c4qd)Q40@f&VJ$$eSCIrKEqY
`[jEHb4J8beP6EH3cc'UQ&&Re+&pQ%"PVi'K0#!j)-&G$d&pC#R'*MhA+0p+kHad
0+bFN@ED@5*J5Cp@Pb9kQhRICLGNG0@c,hNNDiH!C)[BL`8R0)0QA9'r5cjjRe4l
h2"S$JK''H2r14r+k+1V5fee*-F6(RQS4D-#H$SlXTppHVQa$ZaZdD)Y(a16FNJB
fi,6&jDf+c'dKYZqf+F8SYY2rYc(PUp'ajRHCdKC$m%2V2Y80'HPr,8`p[6T%VX*
%S&[`Q1@%"VD)H$6S('I`J0r%ZA$YP#R"YApBK!2iMDYG!Lp[IB"dcMB`Q)M#3kH
$Y[c#@)#'aBb6F#4hcS553M"V-cKT-9GXYBQpqXf5XH'B!1qBNqCiqBj'*d#9!Bk
3!-BA04)5FjT$MN!#*+GQ,B#hQ'KR![m&XD-4,Q%SE84NM8KXc)EZjq+TPMTkd`f
bYRV@JVHMkG4F6A,RK-H8VM*e%2$9bZXe)#FA-"$8cS%VP0qA*'MZBdr'&CJSRcP
6hqMdNBD4)FcjYKS94'JE289'b@P0Kp,-)+l$pAYJ[RH6f5MQZF+-Ea"Q)&lhA02
Aej%N`LE,6!IrK)LcI9NDVG1VYBR!BS6Qi6rBAK6p#8UJ3+CqM44(riVe4-,%0CP
(Yi19,1ka2[+@-!"#`G5XllBXk&0C*Rp)M3jFh@jYRpb2@U[BMe%%GjHrL+!U!8f
Hm-%T3(UGSNdT")5EbGpA9VBV-BI[ACA`[6U@ahY3d5XM%lik9B4-a@br&ljM4S9
[`APD#$B6BYRK(,BfkL(8PI$)38(*"Hl!+0km"JB$p'J%6M+Y,)S5X-f)$SLc3TL
KX[V9JiTa,HCV&eI'q-IBGcjBXIFJm[aBR2Q!j[BLE#NC0fG&dkQp44(!bF6)"Je
5jjMT!SKkrB`%+FrJ0Xh&p!14NXTCIeh)d61-LdqFAQI,GrJ%--E*lHG$'lE+kMQ
&cHZbZC9q1qP6GC0+hNQT&X,520HGm[-b-iqQlHp+JdDNG*-+3$%@aL&akN-4&-c
(K9(V,*j24VhUpI`KLj!!T$(ma[aI,fV1dHN%Lke9e`U"@YHIS8[FVr$p-PKjJf`
H9TL0b-cNiZ`*kEX#$cEZDH(VF)I(5NSCq-X&&(H-A+jA[44Vhe&&D8iZ&E06ILr
bUpE-X0&j[6L49q,)lUTa%FHV#CJ-j*J,j"%L0YjcACi8ha*#SGrck%P,!cHI2AZ
TNM($i5Rj(CH&&8l,UkTblP6bNka,QdJ-m1DKASRk-&6E8NPXi4CK[FB`@`[d2ZD
,GQF@mij&b2lZe*Z"4e2%!Z-K[@ecAR)fCX'KU5MT)%je#!58f-jXeJ%f@SI9+L[
6H8FK!X`H[H1bd$""b9pIeI*PJKLBX&ClfiVe06,)*(08Y8Q52-k(pZ`H&a9FiZ%
RKHj@)@RST&+diI$Mj(QJ4q0KcY9!C1"[pES-ieLcD!Ea'J*)q)M`Qc+Bk"G,E-`
!)VEc&,qcNi2#pjhmLSPH2"N2pcDI0kN5(U92,dmIBbT(LPpTE"UbL-0fm"kUhpN
`ATkb4BJQ#lL!ZYA@$`Ue8PNHQLX6Z$[1[)4rfES&3QMUlNqHLH,&!(d[&P994LE
GT32B(2q1!NGGC('"&c(mJcH[+pJiVb$cI2J%)jPlGZACp5#H',,VJeq4q!Ce)&E
%HN"a5Q[iH3LdaLGXNd,fjFri8J1`NESYP,k&9JAf`+Pdf1@(mI8C'`IFV48h-qd
r@jf&UI8EilFSR#LYXcX8qX!Y!$[Ujj,3`X,+H5&@$+)`+C*0a3aD*N[di`Sdm0r
6KiI[@)eAa)HiHY)lZ#A`8%Tl)#6["JR8$Glc6`XEk&[aI+(h32,%F3-erlH,6IQ
RXCq[*@,NL+"Gj)p`9"PB5H16'LTSi"L"RkDN3*Hb9SdX'C5[TKM-TA(PlKAl*F)
)hq0lmCSRP9qH)qkHS-26&c$!Jq)Jf2,2fR%A,Y&hLPAq5`f@FI-m-+T(,pKhjkk
1NVMrVf"[@%0(HA1UmH@YTB1Z1-FjNb+dZ2U5D`KY,3am,rPjDM`d%S*6ka&)&E"
pipi`Z81'JB4,TP3$LUh&$*N,HQjV%[*rNKh&4"-A(G[l`Z+(r#,+cVHZ%qB#49@
1)&lQrPhP[*!!j-'91RMAca-1D$0RG8IXI9-6Z,Fpi3V[3fNU[Ya6-Z0JrjQhKe`
84'-*RVMBL5jDSA[VbeqfN!$!2+J*8J&cUlkRP1,I@ZVI92,Q&-N#Kc$JY1$6*aU
Qe'&di8T!$L9p[#4QCUq['DE!lb0YJh0Rfq$8)T[*&Xk1$fEUVDdUU(b3!208cb6
EED1UFI&16C,p)m'd(4&FA*I$6QY#PfKX1@2'frdVCd%Jqbk-kVhhbGHE%P+hUZh
BVHpe6)NM&U(L8,G&X@,%rC5Z&$@hbHq(9h4'MiP9aQf1R446k6Z86[hb*#3-3GA
U8m'Q%"dQ!!1fcbj@#!@M#SlirfNM4C!![1p&DKFhPVre#f[rp[88#Ep$h4$"B@Q
9i64XBbYACQ+2bFYkVlF6fE,QL&!dHG3DI'F$V$&Re3h)DUmBGTHf8'&UH&5@Bk3
[2'T*pAFYH&I5[&&rHrA!5kI@9EUqQXGD46+XAmHpp0S-'GEThNdZ`2)MmDmQfSf
aCc8rA'0!qC!!X8H,,05L05,ldB8CKYm'm3b,q,18B%B'RV9aNdj6mhM3SH,f'3,
QZU)B-afh30,R"MQJU-bEUMmRH5a-Ha%3LfFiBkG,+#(lL$N+&TdiZ,MjM'HZUr`
VaAG'aj,RD5N$cl%0X2NKepNKh1@ZpF6)M,`1A0QI3"Fpcd5#+U*YFL@c8h@&[60
,FLcba%QpZf-e8IUB"!B'Yra%"5E#9)-(0jk[6A,mZNL-2kb*dYI*3[ReFr5MCPB
ZiLJ4eb5$[r,j5!)(p-V(a$S0QhQ`CBq!"$8j,G8ZY0pp9)B+&d9l!hk)FdSNc65
D[r&r,9qMSr6$i6063lDkIN2P+PpXc@he(pX*a`eY*#*2*HUi3++)!1##[p0+)e&
c!&U(HQ`%4FpH(HlQr`'1[FaLCr#Ga$K5YI4k5N,HB[YXeV5$4!B%TBHpiB9@HNp
4K@e-Lp'hD(AQNX5&eRp+9LA0fjf+B"A2mMGB%+JjH58hRahREJ)G3r6)-IEA,41
rhI8f3K&6AH(A$d5QqBYV95cVaf4'Yq5J5IZ4H2U#hbb0kX(d4Ce0QMMHPYZKUUE
N-akZNEe1M@9$N@CDriBJ%$l2X,KQr,68"4R@`Bh5(YJmC'fD8,`Cc'q9"qe9@VB
Td1VA%j8rGR9p5B[HYDFV2NEdq&Aa,4!aL,,j5JSR'@RecmL-kk)1a*SKT6HIe%J
*S&j5$c-[!fM9,(T'[92N(!#Hr'a-j2[,K2UhGqlXQ&a-ieJ0qThh32)T"Mp`,JQ
+SNRfKcQ(e#$,K[*[c2GFQDprL-HHblB)Sd%Mhib(cAL[8@"3`M5LNSQ,(JE0VHk
$REJ1BBG'E$T"F59aHf)iYik9&IiDI)EmfT!!l10Z&D-qK&dke-(+#Y0PE0ae'MM
``D$T-`X1-$E#b14UL,B,@`ikI@'e"aCE5k8GLJ'lfj%LCjYd,mGbm&C-a$@Y!G!
&H[6lk4AB,aFh)4DB,d80Rl"qNpe*TI6`dfY$pX6GN!1hqG#"ZDZTFpS-U"GS+e@
'8'[,GP`'r1DAYhZBD$I!bqV0Kf&@STemc1I'jkIk"kRAj*!!HX'A+A*%BP6Xk%+
c*FH'b`)p6!b[dUD)M0L6X-&PpNU-D-Gmcj5e-+@4j6ap99f6Y9P$prTPd3*d$jK
#XS'lC5TmCk#Jj*+8iLkCMYa3'Xb,F!Q8Ri`dA(#Hjie-ICrfdr9mKcN5lNBF@50
CCNL@P'&@eKrlbNMUY(BN6k@(R1l(jX[F&![DfeGXaV9*QKcM1r#Rab0m!a#GUHm
'P0akb4Q8e@X5)DDRIH044ZcYf"ka53DiH*j*VM&)3)iVRNbmap0(820[YIeD8(,
6hiB"k3#p5fPQ$@a+66mllkqSlAKBUiVDe!AK%*(MfMhrY$3*0rCUb5fh5DZT2PQ
McR(aRHK&%r0Z4QcZXZrB![4&&1rfa5+Ij!1p!*&pYdE4@ZHSAQfa0bQZ!RN[j2T
[a-r1$*-kNFX,*V("4jP)MT8mcR)a8lCNE!#44'TVB9(KfQI%CZ`Sb3MT)M1qP[j
mJr'4TP*!MbG+jl)REMqHF&*QT`5#VcLh`UrB$E!j'43E[qKJR@Qi8MT4LMdl%Y4
8EfiERr9'b6e-J%Qhd#"BAD0`QB%6N!!55RCf,LFa0P&d&e)rrZA(B@0N$V%I[G%
MFL`!Nh-61@4IcZ9ISjcSR@jCaE)P8I*eH'`&1jV"6*(m2&@GFFiBcKJ)cS9D[3(
J`Q1X40,T4KRqB@*VH9QJFMUF1AJl++Nm3L@MRPa2Q6Z0'J`%XpGV`cJ('`%YrpH
5e(8Q3k$&[hR,HESG6eP-8P!Ba0cL0rkkpJHQ&p9bUpPC`Jm#q+%&GT+!&DpZ!,0
BlB!6@e"F@Y9#I*V`DHi$MBa-`f(&'5UeHhS9$fDXMUA,)MI#'G84EkE,'UqZ00J
`)825&F!6mA`Qc%1DE(--Z$15TSYaT[mGMYE$lVM@*aTH6mPr60PX6BG`MJT"ZNf
)MNVpbS2@NJiKlP[6fV2@r#k63pCdYECa[kp)dljU,JpU0l%a@-CP*NK*S*AN6P@
M[Sp1V"[[,GCRUE1jDCp)-4&4b(GkC*V!IY)!!!:
------------->


That is it,

Thanks

David Christmass

PS. Read the user note up top, its a valid file.