Article 1168 of comp.sources.amiga:
Submitted-by: agmsmith@dragon.achilles.net
Posting-number: Volume 96, Issue 32
Archive-name: libs/SkipListLib-1.0/part01
Aminet URL: ftp://wuarchive.wustl.edu/pub/aminet/dev/c/SkipListLib.lha

[ See companion postings in comp.binaries.amiga for the complete Aminet
archive  ...zim ]

This is an implementation of William Pugh's Skip List algorithm as an
Amiga shared library, skiplist.library.  It lets you have the
flexiblity of linked lists with the sorting ability of arrays, without
the fixed size problems of arrays or slow (linear) sorting speed of
lists.

The GNU C source code for the library is included.  Examples of using
it in GNU C are also available (including a unique words counting
program).  You can easily add it to other languages just like you add
other Amiga libraries.  Read SkipList.h for heavily commented data
structures and functions, or just play around with WordCount.c to get
started quickly.

#!/bin/sh
# This is libs/SkipListLib-1.0, a shell archive (produced by shar 3.49)
# To extract the files from this archive, save it to a file, remove
# everything above the "!/bin/sh" line above, and type "sh file_name".
#
# made 10/25/1996 13:15 UTC by zim@ibx.com
#
# existing files will NOT be overwritten unless -c is specified
#
# This is part 1 of a multipart archive                                    
# do not concatenate these parts, unpack them in order with /bin/sh        
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#  17436 -rw------- SkipListLib/Examples/Exercise
#  14484 -rw------- SkipListLib/Examples/Exercise.c
#  12908 -rw------- SkipListLib/Examples/WordCounter
#   9107 -rw------- SkipListLib/Examples/WordCounter.c
#   1272 -rw------- SkipListLib/Libs/random250.library
#   5928 -rw------- SkipListLib/Libs/skiplist.library
#   1149 -rw------- SkipListLib/SkipListLib.readme
#  64052 -rw------- SkipListLib/Source/SkipList.c
#  23923 -rw------- SkipListLib/Source/SkipList.h
#
if test -r _shar_seq_.tmp; then
	echo 'Must unpack archives in sequence!'
	echo Please unpack part `cat _shar_seq_.tmp` next
	exit 1
fi
# ============= SkipListLib/Examples/Exercise ==============
if test ! -d 'SkipListLib'; then
    echo 'x - creating directory SkipListLib'
    mkdir 'SkipListLib'
fi
if test ! -d 'SkipListLib/Examples'; then
    echo 'x - creating directory SkipListLib/Examples'
    mkdir 'SkipListLib/Examples'
fi
if test -f 'SkipListLib/Examples/Exercise' -a X"$1" != X"-c"; then
	echo 'x - skipping SkipListLib/Examples/Exercise (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting SkipListLib/Examples/Exercise (Binary)'
sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
begin 600 SkipListLib/Examples/Exercise
M```#\P`````````#``````````(```H]````Y0```!0```/I```*/2/(````
M."/`````0"//````2"QX``0CS@```#R3R4ZN_MHF0$JK`*QF%D'K`%Q.KOZ`
M0>L`7$ZN_HPCP````#1%^0```SAT_V%*+SD```!$+SD````4+SD````83KD`
M``X`+T``!$7Y```#8'0`820L>0```#PD.0```#1G"DZN_WPB0DZN_H8@+P`$
M+GD```!(3G5+^0`````F2G8`8!HH&RH5NH1F!"!`3I"UA+6%N(5D!KB#8P(F
M!"`;9N*U@RJ#MH)FSDYU"E!R97-S('1H92!R971U<FX@:V5Y('1O(&-O;G1I
M;G5E+@``3E7_L$AY````R$ZY```:D"!Y```!<"\02'@`4$AM_[!.N0``%)S>
M_``03EU.=5-K:7`@;&ES="!H96%D97(@870@861D<F5S<R`E;&0Z"@`@($QE
M=F5L("5D"5LE9%TM/@DE;&0*`$%C=&EV94QE=CH@)60)4VEZ93H@)6QD"4YE
M>'15<#H@)6QD"4YE>'1$;W=N.B`E;&0)4F%N9&]M26YD97@Z("5D"@`E,#AL
M>"``"@``2.<@,"9O`!`O"TAY```!&DZY```:D$*`$"L`0'00E(!03W(/LH)M
M*B`"Y8!%\P@`+QHO`G(0DH(O`4AY```!/$ZY```:D-[\`!!2@G(/LH)LWD*`
M$"L`02\`+RL`3"\K`$@O*P!$0H`0*P!`+P!(>0```5-.N0``&I#>_``8)$M'
MZ@`<+RH`6$AY```!EDZY```:D%!/6$JWRFSH2'D```&=3KD``!J06$],WPP$
M3G5,:7-T(&]F(&YA;65S(&EN(&QI<W0@870@)6QD.@H`)7,*`"5S"0``+PHO
M`B1O``PO"DAY```"4$ZY```:D'0()&H`/%!/M/P``&<N2H)N#G0(2&H`"$AY
M```";V`,4X)(:@`(2'D```)S3KD``!J04$\D4K3\``!FTG((LH)G#DAY```!
MG4ZY```:D%A/)!\D7TYU4"4P,F0Z(``H*0!%<G(A`$QE=CH@`"4M,F0`("``
M("`@("`@(``E8R``WOS_]$CG/SXL;P`\(&X`1'XBOHAD#'H0T/S_[R](`"Q@
M""H(4H4O10`L?``2+@!`0H`0`5"`L(9O``,TE\LN"QX!)D>WQF\``A(H"YB&
M+P1(>0```N1.N0``&I!%[@`\=@`D"CI\``!03V<``=9"KP`P'VH`!``SN*\`
M,&X4M(IG!#I\``$@!.6`($J1P"0H``2Z@VX(MJ\`+&T``8A"@!`J``2X@&\T
M<"U*@F8"<"`@>0```7`B`")H``0@:0`(2>C__R-,``@@"%.`:D"PJ0`8;4(,
M`0`*9C1@.G`J2H)F`G`P('D```%P(@`B:``$(&D`"$GH__\C3``((`A3@&H,
ML*D`&&T.#`$`"F<((%$0@5*18`PO"2\!3KD``!/<4$\@4DJ"9C@@>0```7`B
M:``$(&D`"$GH__\C3``((`A3@&H&L*D`&&T,(%$0O``@4I%@``#B+PE(>``@
M8```O+#\``!F-B!Y```!<")H``0@:0`(2>C__R-,``@@"%.`:@:PJ0`8;0P@
M41"\`#]2D6```*0O"4AX`#]@?K2(9CA"@!`H``1R/KB`;P)R/R!Y```!<")H
M``0@:0`(2>C__R-,``@@"%.`:D2PJ0`8;48,`0`*9CA@/D*`$"@`!'(_N(!O
M`G(M('D```%P(F@`!"!I``A)Z/__(TP`""`(4X!J#+"I`!AM#@P!``IG""!1
M$(%2D6`@+PDO`4ZY```3W%!/8!*Z@V8.2'D```+L3KD``!J06$\D4E*#M/P`
M`&8`_C(^#6<``.!(>0```N].N0``&I!83V```,ZWQF9<2'D```+T3KD``!J0
M1>X`/'8`6$^T_```9P``KG0`NH-N!K:O`"QM%A0J``0O`DAY```"^DZY```:
MD%!/8!*Z@V8.2'D```+_3KD``!J06$\D4E*#M/P``&;$8&P@"U*`)`:4@$AY
M```#`DZY```:D"1N`#QV`5A/M/P``&=*NH-N!K:O`"QM)!`R*`@,```?;@00
M/``_2(`X0"\,2'D```,*3KD``!J04$]@$KJ#9@Y(>0```O].N0``&I!83R12
M4H.T_```9K8@>0```7`B:``$(&D`"$GH__\C3``(4TBP_```;0H@41"\``I2
MD6`.+PE(>``*3KD``!/<4$]2AA(N`$!"@!`!4("PAFX`_-),WWS\WOP`#$YU
M5&AE(&9I<G-T(&9E=R!R86YD;VT@;&5V96P@;G5M8F5R<R!O9B`E9#H*`"5L
M=0D`)6QU"@!.=6UB97(Z(``E)25D9"``"DYO<FUA;#H@``I!8W1U86PZ(```
MWOS_L$CG/B(H+P!P*CP``"<00>\`:$/O`*1"J/_`6$BSR&SV+P5(>0``!H9.
MN0``&I!T`5!/1>\`)"!$+'D````H3J[_IB8`<@?"@F<*+P!(>0``!K%@""\`
M2'D```:V3KD``!J04$\@`^6`4K((`%*"?$"\@FS"NH)E'$7O`"0@1"QY````
M*$ZN_Z;E@%*R"`!2@KJ"9.A(>0``!KM.N0``&I!T`5A/3>\`'G`#L()M!'`'
MD((O`$AY```&Q"\.3KD``!JH+P(O#DZY```:D-[\`!12@GP0O()LT$AY```&
MRTZY```:D'0!6$]%[P`>(`70@"8`UH5P`["";01P!Y""+P!(>0``!L0O"DZY
M```:J"`"T((L`^"N(`8O`"\*3KD``!J0WOP`%%*"?!"\@FS&2'D```;53KD`
M`!J0=`%83T7O`!Y-[P`H<`.P@FT$<`>0@B\`2'D```;$+PI.N0``&J@O'B\*
M3KD``!J0WOP`%%*"?!"\@FS02'D```&=3KD``!J06$],WT1\WOP`4$YU86QL
M+@!I<P!T:&%T`&%N9`!/<'1I;6%L`&%R90!,:7-T<P!3:VEP`%!U9V@`5VEL
M;&EA;0!3;6ET:`!-+@!'+@!!;&5X86YD97(`3V]P<RP@<F%N(&]U="!O9B!M
M96UO<GD@:6X@061D3F%M97-4;TQI<W0N"@``2.<@,B0O`!1%^0````@F2B!"
M<!QR`4A!+'D````H3J[_W"Q`O/P``&802'D```B]3KD``!J06$]@)"\:2&X`
M"$ZY```?N%!/($(B3BQY````*$ZN_]!!ZP`TL<IDLDS?3`1.=4]O<',L(')A
M;B!O=70@;V8@;65M;W)Y(&EN($%D9%)A;F1O;4YO9&5S+@H`)3`V9```2.<P
M`B8O`!`D+P`44X)K;B!#<!QR`4A!+'D````H3J[_W"Q`O/P``&802'D```E.
M3KD``!J06$]@1$ZY```=/"\\``]"0"\`3KD``!-T6$\N@$AY```)>DAN``A.
MN0``&JC>_``,($,B3BQY````*$ZN_]!1RO^:0D)3@F223-]`#$YU3V]P<RP@
M<F%N(&]U="!O9B!M96UO<GD@:6X@061D3F]D95=I=&A.86UE+@H`3E5,3`!0
M<F5V:6]U<R!N;V1E(&%F=&5R(&EN<V5R="!I<R`E<RX*```O#B\")"\`#"!"
M<!QR`4A!+'D````H3J[_W"Q`O/P``&802'D```H$3KD``!J06$]@1DAX`!0O
M+P`42&X`"$ZY```?W-[\``P@0B).+'D````H3J[_T"(\```*,4J`9P0B`%"!
M+P%(>0``"C9.N0``&I!A`/8>4$\D'RQ?3G4`=6X`3F]D92!N86UE9"`E<R!D
M96QE=&5D("5S<W5C8V5S<V9U;&QY+@H``-[\_^!(YS`R)"\`.$AX`!0O+P!`
M1>\`'$?O`"0O"TZY```?W'8<+T,`)-[\``P@0B)*+'D````H3J[_Q"(\```*
MV4I`9P8B/```"M@O`2\+2'D```K<3KD``!J080#UBM[\``Q,WTP,WOP`($YU
M1F]U;F0@=&AE<V4@;F]D97,@<F5L871E9"!T;R`B)7,B("TM"@!"96QO=SH@
M("`@("`@("`@)7,*`$5Q=6%L.B`@("`@("`@("`E<PH`06)O=F4@;W(@97%U
M86PZ("5S"@!.5?_D2.<^(B0M``@F+0`,2'@`%"\#1>W_Y$AM_^Q.N0``']Q\
M'"M&_^C>_``,($(B2BQY````*$ZN_[(H`"!"(DHL>0```"A.KO^X*@`@0B)*
M+'D````H3J[_K"0`+P-(>0``"W)%^0``&I!.DB`\```*,4J$9P0@!%"`+P!(
M>0``"YA.DB`\```*,4J%9P0@!5"`+P!(>0``"ZQ.DB`\```*,4J"9P0@`E"`
M+P!(>0``"\!.DM[\`"!A`/1<3.U$?/_(3EU.=7-K:7!L:7-T+FQI8G)A<GD`
M56YA8FQE('1O(&]P96X@<VMI<&QI<W0N;&EB<F%R>0H`0V]M;6%N9"`H06X]
M061D(&YA;64L($,]0VQE87(L($1N/41E;&5T92!N86UE+"!&;CU&:6YD(&YA
M;64L(`I(/6AE861E<BP@26X]26YS97)T(&XL($P]3&ES="P@3CU.86UE<RP@
M43UQ=6ET+"!26S`Q73UR86YD=&5S="D_(`!);G-E<G1I;F<@)60@<F%N9&]M
M(&YO9&5S+@H`4F%N9&]M(&YU;6)E<B!T97-T('=I=&@@;F\@8V%C:&4L(`!2
M86YD;VT@;G5M8F5R('1E<W0@=VET:"!L:7-T(&-A8VAE+"``56YR96-O9VYI
M>F5D(&-O;6UA;F0@;&5T=&5R(&EN("(E<R(N"@!$96%L;&]C871I;F<@>6]U
M<B!L:7-T(&]F("5U(&YO9&5S+BXN"@``3E7_.$CG.#).N0``$.IT`2QY````
M/$/Y```,G'``3J[]V"/`````*&800D)(>0``#*U.N0``&I!83TI"9P`"(D'M
M_S@L>0```"A.KO_B0D-%[?^P('D```%P(F@`!"!I``A'Z/__(TL`""`(4X!J
M!K"I`!AM"B!1$+P`#%*18`XO"4AX``Q.N0``$]Q03TAM_SAA`/1Z2'D```S.
M3KD``!J0('D```%P+Q!(>`!0+PI.N0``%)S>_``42H!G``&"+PI.N0``'\A"
M-0BO('D```%P(F@`!%A/(&D`"$?H__\C2P`(4TBP_```;0H@41"\``I2D6`.
M+PE(>``*3KD``!/<4$\0+?^P2(`R0"!Y```!;`@P``"8`6<&0>G_OV`$0>G_
MGW@1N(AE``#Z(`C0B#`["`9.^P`"`"0`[``T`$8`[`!6`.P`9@""`.P`[`!P
M`.P`K`#L`.P!"`"X2&W_L4AM_SAA`/KT8```SD'M_S@L>0```"A.KO^^8```
MODAM_[%(;?\X80#[?&```*Q(;?^Q2&W_.&$`_#Q@``"<2&W_.&$`\?Q@"$AM
M_SAA`/+*80#Q.EA/8```@DAM_[%.N0``&YPD`"\"2'D```U.3KD``!J0+P)(
M;?\X80#YI-[\`!1@5DAM_SAA`/D`6$]@2@PM`##_L6802'D```UJ3KD``!J0
M0J=@$$AY```-C4ZY```:D$AM_SAA`/;&4$]A`/#,8!9(;?^P2'D```VR3KD`
M`!J080#PME!/2D-G`/X6+RW_?$AY```-V$ZY```:D%!/0>W_."QY````*$ZN
M_[X@.0```"AG#"QY````/")`3J[^8G``3.U,'/\@3EU.=2\*1?D````D2I)G
M""!:3I!*DF;X)%].=2\*+P(@.0```"QR_[*`9A1P`$'Y````,$J09PA82%*`
M2I!F^$J`9Q8D/````"SE@"1`U<(@4DZ064JTBF;V2'D``!"`3KD``!M$6$\D
M'R1?3G5*N0````1F"G`!(\`````$89Q.=4YQ2.<X(B1Y````-+3\``!G``""
M0?D```!42A!G/BQY```"N"(()#P```/M3J[_XB0`(\````!09@I(>``43KD`
M``!F+'D```*X(@!.KO[:+'D```*X(@).KO[4(&H`)+#\``!G'BQY```"N"(0
M3J[_H"QY```"N"(`3J[_@B/`````3$*Y````&"/*````%&```50D>0```#@F
M.0```$`L>0```#P@`U*`<@!.KOU4(\````!(9@I(>``43KD```!F($!T`4J#
M9W00$@P``"!G"@8`__<,```!8@922E.#9NA*@V=8$!(,```B9BA22E.#9T00
M$@P``")G%`P``"IF!E)*4X-G,!#:4X-FYF`H4DI3@V`B#```(&<<$A(0`08`
M__<,```!8PX0P5)*4X-G!@P2`"!FY$(84H)@B"/"````&"8"Y8,L>0```#P@
M`UB`<@%(04ZN_50D0"/*````%&8*2'@`%$ZY````9B!Y````2'@!N()D%$/J
M``0@`]"*(HA*&&;\6$FPB6+T)CP```$`+'D````\(`-R`$ZN_50D@&<R+'D`
M``*X(@`D`TZN_<`L>0```KA.KO]\>'BX@&84+'D````\(E).KOU.!H,```$`
M8+Q*DF8*2'@`%$ZY````9DS?1!Q.=4CG("(D>0```#2T_```9S8B.0```%!G
M"BQY```"N$ZN_]Q*J@`D9UHL>0```K@B.0```$Q.KO^"+'D```*X(@!.KO^F
M8#PD.0```$AG-"1Y````%+3\``!G'"`29PPL>0```#PB0$ZN_4XL>0```#PB
M2DZN_4XL>0```#PB0DZN_4Y,WT0$3G4``$SO``,`!&$*(`%.=4SO``,`!"!Y
M```"P$[H_VHO"R\*)'D```%P0J=(>``!1_D``!3H3I,DP%!/9QQ"ITAX``).
MDR3`4$]G#D*G2'@``TZ3)(!03V8*2'@`%$ZY````9B1?)E].=0``2.<\("@O
M`!@D;P`<,BH`##`!`D`"0&<20JH`"'H!(\4```)H</]@``"2"`$``F<.0JH`
M!$*J`"`":O_[``P(*@````UG""8J`!1$@V`"=@`(*@`!``UF#"!J`!1!\#C_
M)`A@`B0#""H``P`-9A`DJ@`04X(E0@`(`&H`"``,(%(0A%*2("H`"&P@MH!N
M!@P$``IF%B\*3KD``"$X6$]*@&<$</]@%"2J`!`E0P`8)4(`"`!J``@`#"`$
M3-\$/$YU2.<P,"8O`!0F;P`<)$,D+P`88"`O"TZY```AK%A/""L`!@`-9AQR
M_[*`9PP4P'(*LH!G!%."9MRVBF<&0A(@`V`"<`!,WPP,3G4``$CG(#)(>``X
M2'@``4ZY```;M"1`4$^T_```9W1(>`0`3KD``!Q0)4``&%A/9TXE?```!```
M'`!J`(``%$?J``@O"R\O`!PO+P`<3KD``!9(WOP`#$J`9Q8L>0```#Q!^0``
M`70B2DZN_Q`@"V`L+RH`&$ZY```;Z%A/8`AT#"/"```":"\*3KD``!OH6$]@
M"'0,(\(```)H<`!,WTP$3G5(YS`"+&\`$'8`O/P``&8$</]@2"\.0J="ITZY
M```62-[\``Q*@&8"=O]*+@`-;!`O+@`03KD``!OH0JX`$%A/)`Y1@BQY````
M/")"3J[_!"\"3KD``!OH(`-83TS?0`Q.=2\.+PI@1D'J``BP_```9SPO"$*G
M0J=.N0``%DC>_``,2BH`%6P0+RH`&$ZY```;Z$*J`!A83RQY````/")*3J[_
M!"\*3KD``!OH6$\D>0```71*DF:P)%\L7TYU``!(YSPZ*"\`)"9O`"@D;P`L
M+PI.N0``(3@F`#`J``Y83PQ```)O:#A`+PQ.N0``&3183TJJ`"QG4BQY```"
MN"(J`"A.KO^")``L>0```K@B*@`L3J[_N$J`9@A.N0``'_QV`2\J`"Q.N0``
M&^A"J@`L6$\L>0```K@B`DZN_X(L>0```K@B`$ZN_Z9":@`.2H-F``"$2H1G
M``"^<`!T`#!\``&V_```9TX2$PP!`')G(&X(#`$`86<08%P,`0!W9E8@/```
M!@%@""`\```"`70!#"L`8@`!9@0P?``"$C"X`&<4#`$`*V8N>OS`A7H"@(5*
M,X@!9B!Z`[J$;!Y(>`'_+P`O!$ZY```8?"Q`WOP`#+S\``!L"'``8#XL1%-.
M2H)G%DAX``)"IR\.3KD``!EZWOP`#$J`;=X":O^0``PO#DZY```:;EA/2H!G
M!@!J``$`##5.``X@"DS?7#Q.=0``*@!(YR`B2'@`#$ZY```<4"1`(\H````<
M6$]F"DAX`!1.N0```&8L>0```KA.KO_*)(`L>0```KA.KO_$)4``!"QY````
M/)/)3J[^VB!`("@`X"5```AF,$JY````-&8B+'D```*X(CP``!>H)#P```/M
M3J[_XB/````!A"5```AF!B5J``0`"$S?1`1.=4CG,#(F>0```!Q%ZP`,)CD`
M``&`=`.V@F\4(AIG"BQY```"N$ZN_]Q2@K:";NPB.0```81G"BQY```"N$ZN
M_]Q,WTP,3G5(YS@R)"\`("1Y````'"`Y```!@'8`L(-O#B!*2I!G"%A(4H.P
M@V[T#(,``'__;P1X&&`BL(-F-"`#Y8`F0$AK``0O"DZY```=?"1`4$^T_```
M9@QX#"/$```":'#_8%(CR@```!Q2N0```8`(`@`*9A9P`\"")#P```/M2H!G
M#B0\```#[&`&)#P```/N+'D```*X(B\`'$ZN_^(B`^6!)8`8`&8*3KD``!_\
M</]@`B`#3-],'$YU2.<X`B`O`!1V`'@"N(!L+B!Y````'"0`Y8(L>0```K@B
M,"@`3J[_W$J`9@AV_TZY```?_"!Y````'$*P*``@`TS?0!Q.=4CG/`(@+P`8
M)"\`("!Y````'.6`*#`(`$ZY```@8$J"9Q!Z`KJ"5\!(@#8`2,-$@V`"=O\L
M>0```K@B!"0O`!Q.KO^^)`!Z_[J"9Q8L>0```K@B!'0`=@!.KO^^)`"Z@F8&
M3KD``!_\(`),WT`\3G5(YSP"*"\`&"0O`!PF+P`@3KD``"!@('D````<Y80L
M>0```K@B,$@`3J[_UB0`>O^Z@F8&3KD``!_\(`),WT`\3G5(YSP"*"\`&"0O
M`!PF+P`@3KD``"!@('D````<Y80L>0```K@B,$@`3J[_T"0`>O^Z@F8&3KD`
M`!_\(`),WT`\3G4O#B`O``@@>0```!SE@"QY```"N"(P"`!.KO\H+%].=0``
M3E4``$AM``PO+0`(3KD``!K(4$].74YU3E4``$AM`!`O+0`,+RT`"$ZY```:
MZ-[\``Q.74YU```O+P`(+R\`""!Y```!<"\H``1.N0``(E[>_``,3G5.<=[\
M_\PO"B\"(B\`1"`O`$@O;P!```@_?`((`!0O?'____\`$$*O``Q"KP`@0J\`
M*"\`+P%%[P`0+PI.N0``(EXD`"\*0J=.N0``(>`@`M[\`!0D'R1?WOP`-$YU
M2'@`"$ZY```<4"!`6$^P_```9Q8@N0```8@A;P`$``0CR````8AP`$YU<@PC
MP0```FAP_TYU3G$O"B1Y```!B+3\``!G#B!J``1.D"12M/P``&;R)%].=4*G
M0J<O+P`,3KD``!W8WOP`#$YU3G$``"\"("\`#"\`+R\`#$ZY```@-%!/5H!T
M_,2`+P).N0``'%`@0%A/2H!G!D*868)F^B0?3G4O#B\*(B\`#&=8)'D```&,
M(!)G3K*J`!1E!K*J`!AE!"1`8.PB05E)+'D````\($H@$4ZN_T`@*@`8D*H`
M%+"J`!QF'BQY````/")*3J[_!"QY````/")*("D`&)")3J[_+B1?+%].=4CG
M`#HD>0```8PH;P`46$Q*DF<>+'D````\($H@#$ZN_T8@0+#\``!F``"&)%)*
MDF;B1^P`)"`Y```"E+"+90(F0"`+!H````__`D#P`"9`+'D````\<@!.KO\Z
M)$!*@&8$<`!@3D'J`"`E2``0)4@`%"!J`!!"D")J`!!!Z__@(T@`!"5(`!S7
MRB5+`!@L>0```#Q!^0```8PB0$ZN_Q`L>0```#P@2B`,3J[_1B!`(,P@"$S?
M7`!.=2\.+'D````\0?D```&,3J[^_B!`2H!G%"QY````/")`("@`&)"(3J[_
M+F#6+%].=0``+SQ!QDYM+SD```&83KD``"`T4$\&@```,#DCP````9@O/'__
M__\O`$ZY```@1%!/3G5.<2/O``0```&83G5.<4CG,"(D;P`4)B\`&&<.+P-.
MN0``'%`D`%A/8`)T`+3\``!G,$J"9QH@*O_\68"V@&0"(`,L>0```#P@2B)"
M3J[]D$J#9P1*@F<*+PI.N0``&^A83R`"3-]$#$YU3E7__$CG,#`D+0`()FT`
M#"1"$!)(@"!Y```!;`@P``,``6<.4DH0$DB`"#```P`!9O(O+0`02&W__"\*
M3KD``!YHWOP`#+;\``!G#B(M__RUP68$)H)@`B:!#!(`+6842H!O(G8B(\,`
M``)H(#R`````8!)*@&P.=B(CPP```F@@/'____],[0P,_^Q.74YU2.<_/BIO
M`#0F+P`X)F\`,$(&>`!*@VT``1)^`;Z#9P`!"GXDOH-M``$"+&\`,!`62(`@
M>0```6P(,``#``%G#E)+$!-(@`@P``,``6;R$!,,```M9P8,```K9@0<`%)+
M2H-F3`P3`#!F1!`K``%(@#)`('D```%L"#```)@!9PA^6+Z)9PA@(GYXOHEF
M'!`K``)(@"!Y```!;!`P``$"``!$9P942W808`9V"&`"=@HH2RH\```@-!`4
M2(`R0"!Y```!;!(PF`$0`0(```=G5@@!``)G!D7I_]!@$`@!``!G!D7I_\E@
M!$7I_ZFVBFTV)`I&@B\#+P).N0``(%!03["$90XO`R\$+$5.EE!/M(!D#'XB
M(\<```)H>/]@!"@`V(I23&"2M\QF#KK\``!G!"JO`#!P`&`2#`8`+68"1(2Z
M_```9P(JC"`$3-]\_$YU3.\!`0`$(D`2V&;\3G4``"`O``0@0$H89OR0B$:`
M3G5.<0``3.\!`0`$(D`B+P`,4X%E#!+89OA@`D(94X%D^DYU``!(YR`B1?D`
M``&<+'D```*X3J[_?$J29Q*PFF8((](```)H8`Y82DJ29NYT`2/"```":$S?
M1`1.=4SO``,`!"!Y```"P$[H_W9,[P`#``1A"B`!3G5,[P`#``0@>0```L!.
MZ/]D+PXL>0```#QP`"(\```0`$ZN_LX(```,9PQ(>``"3KD``""66$\L7TYU
M```J*BI"<F5A:PH`2.<^."HO`"1P_R0%4X)\!;R"90``AD7Y```"M$?Y```"
ML'`!Y:"!DRP2!09F:DGY```"E"@%Y80B$P4!9UIP`>6@)`!&@,*`)H%\`;RT
M2`!G/"82A(,D@B!T2`"P_```9B1\`KR%9B0@>0```7`O*``(2'K_@DZY```B
M*$AX`!1.N0```&8O!4Z06$\D@R0%4X(L$@4&9Z!P`$S?''Q.=0``2.<P("1O
M`!`P*@`,"```!F<6<@$CP0```FAP_V!.`&H`0``,</]@1`@```-G/"`J`!`D
M$I2`)@!*@F<@+P(O`S!J``XO"$ZY```:+-[\``Q*@&W*E(#6@$J"9N`":O_W
M``Q"J@`(0JH`&'``3-\$#$YU```O"B)O``@@:0`$1>C__R-*``132+#\``!M
M"B!10H`0$%*18`HO"4ZY```F\%A/)%].=0``+PH@+P`((F\`#"!I``A%Z/__
M(TH`""((4X%J#+*I`!AM%`P```IG#B!1$(`"@````/]2D6`,+PDO`$ZY```3
MW%!/)%].=0``+PHO`B1O``PD+P`02A)G'"\"$!I(@#!`+PA.N0``(>!03W+_
MLH!FY'#_8`)P`"0?)%].=24`WOS_W$CG/SXF;P!8*F\`7'@`2A-G``1P$!,,
M```E9@`$1IW.?/]^`!]\`&D`-4GO`#IZ`$*O`#9%ZP`!0?D```)L<@%T`!8P
M*`"V$F8*(`'EH(Z`4DI@"%*"=@2V@F3F=@2V@F3>$!(,```J9@Y22B`=;`2.
M@T2`+$!@+$B`(CD```%L8!@@#N>`0?8(`$'VB-`0&DB`3?```!`22(`B00@Q
M``(``6;>#!(`+F9$4DH0$@P``"IF"E)*(!UM-"P`8#!\`$B`(CD```%L8!H@
M!N>`($#1QD'P:-`0&DB`0?```"P($!)(@")!"#$``@`!9MP0$@P``&AG#`P`
M`&QG!@P``$QF!!]:`#42&A`!!@#_VTB`,$!V4[:(90`!]"`(T(@P.P@&3OL`
M`@'4`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F
M`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!
MY@'F`>8!Y@'F`>8!Y@"H`>8!Y@'F`>8!Y@'F`>8!Y@'F`>8!L@"H`>8!Y@'F
M`>8`J`'F`>8!Y@'F`>``J`"H`>8!Y@&X`>8`J`'F`>8`J`P!`'!F#A]\`&P`
M-1(\`'AV`8Z##`$`9&<&#`$`:68R(!UL#A^\`"U82E*%)`!$@F!@"`<`!&<(
M'[P`*UA*8`P(!P`#9P@?O``@6$I2A20`8$`D'0@'``!G.`P!`&]F$$J&9@1*
M@F<('[P`,%A*4H4,`0!X9P8,`0!89A9*@F<20>\`2A&\`#!8`%*%$8%8`%*%
M2>\`2@P!`'AG%@P!`%AG$#!\``H,`0!O9@HP?``(8`0P?``01_D```*!#`$`
M6&<&1_D```)Q+P@O`B](`#1.N0``($103QDS"``@;P`L+P@O`DZY```@4%!/
M)`!2KP`V(&\`+$J"9LYV_[:&9@1\`&!.=OW.@V!((!T8@&`@*%T@3$H89OP@
M#)"(1H`O0``VO(!DVB]&`#9@U$GZ_/YV`2]#`#9@R"!=((1@$$H!9@)32BA+
M)@J6C"]#`#9\`)W.("\`-KR`8P(@!B9%U\!P`+W+8P0@#I"+)D`(!P`!9RQT
M`+J"8R8O+P!4$#<H3DB`,D`O"4ZY```AX%!/=O^V@&<``2!2A%*"NH)BV@@'
M``)F.'0`M\)C,G("PH<O+P!4<"!*@6<"<#`O`"]!`#A.N0``(>!03R(O`#!V
M_[:`9P``XE*$4H*WPF+2"`<``68L=`"Z@F,F+R\`5!`W*$Y(@#)`+PE.N0``
M(>!03W;_MH!G``"P4H12@KJ"8MHD+P`VO()C("\O`%1(>``P3KD``"'@4$]V
M_[:`9P``B%*$4H*\@F+@=`"TKP`V9"8O+P!4$#0H`$B`,D`O"4ZY```AX%!/
M=O^V@&=:4H12@K2O`#9EV@@'``)G)'0`M\)C'B\O`%1(>``@3KD``"'@4$]V
M_[:`9RY2A%*"M\)BXB9*8`#[KB\O`%1(@#)`+PE22TZY```AX%!/=O^V@&<&
M4H1@`/N.(`1,WWS\WOP`)$YU2.<@,"9O`!`R*P`,,`$"0`!@9Q!"JP`$=`$C
MP@```FA@``#."`$``V<2+PM.N0``(3A83TJ`9RI@``"V("L`(&<@)H`G:P`D
M``1"JP`@(&L`!$/H__\G20`$4TBP_```;'HP*P`,"```"68``(0"0``#9RHD
M>0```71*DF<@,"H`%`)```D,0``)9@Q(:@`(3KD``"$X6$\D4DJ29N``:P`$
M``PO*P`4+RL`$#)K``XO"4ZY```9ZB!`)T@`!-[\``QF"`!K`"``#&`DL/P`
M`&T44T@G2``$)JL`$"!30H`0$%*38`Q"JP`$`&L`0``,</],WPP$3G5.965D
M('9E<G-I;VX@)2XQ,&QD(&]F("4N,S)S```6P$YU2.<P,BQY````/"8Y```"
MR$7Y```#)"0:9T`F6B)K``0@`TZN_=@F@&8L0?K_LB\K``0O`R)/1?K_Q-[\
M_\0F3TZN_?8O"TZY```HF$AX`!1.N0```&93@F;`3-],#$YU2.<@(BQY````
M/$7Y```#)"0:9Q`B6B`19P8B0$ZN_F)3@F;P3-]$!$YU3VL``$CG.#(L>``$
MD\E.KO[:(D!R_[*I`+AG/D/Y```#`'``3J[]V"@`9RY'^0```N!#^0```LR5
MRB-O`!P`#)'(<`!R`'0HZ4IV2,F.3J[^I").+$1.KOYB3-],'$YU```#[```
M`+\`````````7@```/(```#X```!#@```:P```&R```!W````>(```(0```"
M%@```BH```(P```"/@```D0```*$```"B@```J@```*V```"O````M(```+8
M```#8````V8```0J```%*@``!3@```4^```%6```!5X```5N```%=```!9P`
M``6B```%L```!;8```72```%V```!@H```80```&'@``!B0```9D```'"```
M!PX```<R```'/```!T(```=Z```'@```!YH```>B```'K```![X```?$```'
MY@``!^X```@"```(%```"!H```@X```(0```"$H```A<```(8@``"18```D<
M```)+```":P```FR```)O```"<H```G4```)W@``"GX```J$```*F@``"K(`
M``K"```*R```"R0```M"```+3```"U8```M<```+]```##8```P\```,1```
M#%0```Q<```,;```#'0```R$```."@``#A@```XN```.-```#H@```Z8```.
MG@``#K(```[$```._@``#\````_*```/T```#_H``!`````0"@``$!```!`J
M```0,```$$8``!!,```0V```$-X``!$^```1O```$F@``!+@```3H@``$]``
M`!1T```4M```%/8``!4*```5-```%5P``!5P```5I```%;X``!7<```6`@``
M%A8``!8P```67```%G0``!:D```6L```%TX``!=T```7B@``%[0``!?*```8
M$```&,(``!DD```99```&90``!G>```9_```&B```!H^```:8@``&IX``!JZ
M```:W```&R0``!LP```;2@``&Z8``!O"```;T@``'4H``!UF```=C@``'<H`
M`!X6```?'```'V(``""````A#@``(1@``"&````AU```(AP``")$```E`@``
M)18``"6X```E\@``)B@``"90```F?@``)JH``";2```G'@``)X(``">D```H
M4@``*%P```!K`````0```$(```!H````_@```\````/T```$.```!'8```2^
M```$]@``!C8```CT```.5@``#J0```[.```/#@``$10``!$>```1,@``$40`
M`!%0```19@``$7(``!%^```1L```$FX``!*F```2M```$OP``!,$```3%```
M$QH``!,D```3,@``$X@``!.6```3_```%4@``!5H```5?```%C@``!:"```6
MD@``%KP``!;(```7T```%]P``!@*```8(```&$8``!A6```89@``&&X``!B,
M```8U```&.0``!D,```94```&;```!G(```:"@``&DP``!I^```:T@``&UH`
M`!MF```;<@``&X```!OT```<5@``'(@``!SF```=%```'40``!U8```==```
M'?```!Y````>5```'IP``![<```>_@``'R@``!]^```@`@``(`@``"`:```@
M*@``(#P``"!8```@K@``(+0``"#&```A````(4X``"*<```BW@``(R8``"3H
M```D]```)PP``"=F```H%@``*!P``"AV```HL@``*,(``"C(````40````(`
M```"````"`````X````8````/````$P```!2````6````'(```!X````C@``
M`)8```<>```'9```"00```DX```)F@``">P```IL```*J```"S@```P(```,
M&```#"@```X2```.)```#D8```]R```06```$&(``!!J```0A```$)X``!"L
M```0P@``$.P``!#V```1!@``$80``!&*```1E```$9H``!&@```2/@``$D@`
M`!)<```2E```$L0``!+P```3.@``$TH``!-6```38@``%4(``!7.```6(@``
M%[P``!?J```8`@``&#P``!B&```8W@``&48``!EJ```9B```&@(``!I$```:
M=@``'!(``!PN```<.@``'&8``!RB```<X```'/(``!T.```=)```';(``"!D
M```H$```*'`````````#\`````)S=&%R=``````````````"9G)O;5="````
M```J`````F9R;VU#3$D`````0`````)?7V5X:70``````&8````"7V5X:70`
M``````!F`````G1O9&]S````````B`````-C86QL9G5N8W,```````"4````
M`G-T86)L;V]P````H`````)N;W1N;W<``````*P````";VQD<')I``````"Z
M`````E]G971A-```````Q@````5?7U]G;G5?8V]M<&EL961?8P```````,@`
M```#7U=A:71&;W)+97D`````[`````5?4')I;G13:VEP3&ES=$AE861E<@``
M`:`````%7U!R:6YT1F%T3F]D97-);DQI<W0```)X````!E]0<FEN=$9A=$QI
M<W1'<F%P:&EC86QL>0```PX````$7U)A;F1O;4QE=F5L5&5S=```!N`````$
M7T%D9$YA;65S5&],:7-T````".H````$7T%D9%)A;F1O;4YO9&5S````"8``
M```$7T%D9$YO9&57:71H3F%M90``"EH````%7T1E;&5T94YO9&5">4YA;64`
M``````L$````!5]&:6YD3F]D95=I=&A.86UE```````+U`````)?;6%I;@``
M````#@`````%7U]?9&]?9VQO8F%L7V1T;W)S`````!"`````!5]?7V=N=5]C
M;VUP:6QE9%]C```````0@`````5?7U]D;U]G;&]B86Q?8W1O<G,`````$)@`
M```"7U]?;6%I;@```!#J````!5]?7VEN:71C;VUM86YD;&EN90`````1````
M``1?7U]N;V-O;6UA;F1L:6YE```1``````5?7U]G;G5?8V]M<&EL961?8P``
M````$0`````%7U]?9VYU7V-O;7!I;&5D7V,``````!$`````!5]?7V5X:71C
M;VUM86YD;&EN90`````2Z@````5?7U]G;G5?8V]M<&EL961?8P``````$W0`
M```%7U]?9VYU7V-O;7!I;&5D7V,``````!-T````!5]?7V=N=5]C;VUP:6QE
M9%]C```````3=`````-?7U]M;V1S:3,``````!-T`````U]?7V1I=G-I,P``
M````$X`````!7V1I=@``$X`````"7VQD:78``````!.``````U]?7V1I=G-I
M-```````$X8````$7U]?:6YI='-T9&9I;P``````$Y`````%7U]?9VYU7V-O
M;7!I;&5D7V,``````!.0````!5]?7V=N=5]C;VUP:6QE9%]C```````3W```
M``)?7U]S=V)U9@``$]P````"7V9G971S`````!2<````!5]?7V=N=5]C;VUP
M:6QE9%]C```````4G`````)?9F]P96X`````%.@````%7U]?9VYU7V-O;7!I
M;&5D7V,``````!3H`````E]F8VQO<V4````5B`````1?7U]E>&ET<W1D9FEO
M```````5Z@````5?7U]G;G5?8V]M<&EL961?8P``````%D@````"7V9R96]P
M96X``!9(````!5]?7V=N=5]C;VUP:6QE9%]C```````7J`````-?7U]I;FET
M<W1D:6\``!>J`````U]?7V5X:71S=&1I;P``&#8````"7V]P96X``````!A\
M`````E]C;&]S90`````9-`````)?;'-E96L`````&7H````"7W)E860`````
M`!GJ`````E]W<FET90`````:+`````)?:7-A='1Y````&FX````%7U]?9VYU
M7V-O;7!I;&5D7V,``````!J0`````E]P<FEN=&8````:D`````5?7U]G;G5?
M8V]M<&EL961?8P``````&J@````"7W-P<FEN=&8``!JH`````E]V<')I;G1F
M```:R`````5?7U]G;G5?8V]M<&EL961?8P``````&L@````#7W9S<')I;G1F
M```````:Z`````5?7U]G;G5?8V]M<&EL961?8P``````&N@````"7V%T97AI
M=````!M$````!5]?7V=N=5]C;VUP:6QE9%]C```````;1`````1?7U]E>&ET
M871E>&ET```````;?`````5?7U]G;G5?8V]M<&EL961?8P``````&YP````"
M7V%T;VP``````!N<`````E]C86QL;V,````;M`````5?7U]G;G5?8V]M<&EL
M961?8P``````&[0````"7V9R964``````!OH````!5]?7V=N=5]C;VUP:6QE
M9%]C```````;Z`````)?;6%L;&]C````'%`````%7U]?9VYU7V-O;7!I;&5D
M7V,``````!Q0````!%]?7V5X:71M86QL;V,``````!T*````!5]?7V=N=5]C
M;VUP:6QE9%]C```````=/`````)?<F%N9```````'3P````"7W-R86YD````
M`!UP`````E]R96%L;&]C```=?`````5?7U]G;G5?8V]M<&EL961?8P``````
M'7P````"7W-T<G1O;````!W8````!5]?7V=N=5]C;VUP:6QE9%]C```````=
MV`````5?7U]G;G5?8V]M<&EL961?8P``````'F@````"7W-T<G1O=6P``!YH
M`````E]S=')C<'D````?N`````5?7U]G;G5?8V]M<&EL961?8P``````'[@`
M```"7W-T<FQE;@```!_(````!5]?7V=N=5]C;VUP:6QE9%]C```````?R```
M``5?7U]G;G5?8V]M<&EL961?8P``````']P````"7W-T<FYC<'D``!_<````
M`U]?7W-E=&5R<FYO````'_P````%7U]?9VYU7V-O;7!I;&5D7V,``````!_\
M````!5]?7V=N=5]C;VUP:6QE9%]C```````@-`````-?7U]M=6QS:3,`````
M`"`T````!5]?7V=N=5]C;VUP:6QE9%]C```````@-`````5?7U]G;G5?8V]M
M<&EL961?8P``````($0````#7U]?=6UO9'-I,P`````@1`````-?7U]U9&EV
M<VDS`````"!0`````U]?7W5D:79S:30`````(%8````%7U]?9VYU7V-O;7!I
M;&5D7V,``````"!@`````U]?7V-H:V%B;W)T````(&`````%7U]?9VYU7V-O
M;7!I;&5D7V,``````"",`````E]R86ES90`````@E@````5?7U]G;G5?8V]M
M<&EL961?8P``````(3@````#7U]?9F9L=7-H```````A.`````)?9F=E=&,`
M````(:P````%7U]?9VYU7V-O;7!I;&5D7V,``````"&L````!5]?7V=N=5]C
M;VUP:6QE9%]C```````AX`````)?9G!U=&,`````(>`````%7U]?9VYU7V-O
M;7!I;&5D7V,``````"(H`````E]F<'5T<P`````B*`````5?7U]G;G5?8V]M
M<&EL961?8P``````(EP````#7W9F<')I;G1F```````B7@````)?7U]S<F=E
M=```)O`````%7U]?9VYU7V-O;7!I;&5D7V,``````";P````!5]?7V=N=5]C
M;VUP:6QE9%]C```````F\`````5?7U]G;G5?8V]M<&EL961?8P``````)O``
M```%7U]?9VYU7V-O;7!I;&5D7V,``````"?H````!5]?7V=N=5]C;VUP:6QE
M9%]C```````GZ`````-?;F5E9'1E>'0``````"?H````!5]?7V=N=5]C;VUP
M:6QE9%]C```````GZ`````1?7U]I;FET;&EB<F%R:65S```H"@````1?7U]E
M>&ET;&EB<F%R:65S```H:@````)O:W1E>'0`````*)0````%7U]?9VYU7V-O
M;7!I;&5D7V,``````"B4````!5]?7V=N=5]C;VUP:6QE9%]C```````HE```
M``-?7U]R97%U97-T`````"B8`````FQ?9F%I;``````H[@````)?971E>'0`
M````*/0````%7U]?9VYU7V-O;7!I;&5D7V,``````"CT`````E]?971E>'0`
M```H]`````5?7U]G;G5?8V]M<&EL961?8P``````*/0````%7U]?9VYU7V-O
M;7!I;&5D7V,``````"CT`````````_(```/J````Y0``$0```"@*```(LP``
M"+````BM```(IP``")\```B:```(E0``"(\```B+```(@P``"'\```AZ```(
M=P``"'(```!$`````````````````````$-/3CHO+R\O+T%55$\O0TQ/4T4`
M`"`@("`@("`@("@H*"@H("`@("`@("`@("`@("`@("`@B!`0$!`0$!`0$!`0
M$!`0$`0$!`0$!`0$!`00$!`0$!`004%!04%!`0$!`0$!`0$!`0$!`0$!`0$!
M`0$0$!`0$!!"0D)"0D("`@("`@("`@("`@("`@("`@("`A`0$!`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`($!`0$!`0$!`0$!`0$!`0$!`0
M$!`0$!`0$!`0$!`0$`$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!$`$!`0$!`0$"
M`@("`@("`@("`@("`@("`@("`@("`@(0`@("`@("`@(```````!H````"```
M`7@````````!=`````,``````````````9`````````!C`````$```!G````
M#````&D```!#````=@````<```!X````!P```,H````:````RP```!$```#,
M`````@```,T````"````S@```#\```#/````&P```-$````3````U0```!``
M``#6````'@```-@```!"````V0```#\```#:````!@```-L````=````W0``
M`!P```#>````#0```-\````-````X`````T```#A````3P```.(````&````
MZP````@```$Q````#0``````````(S`M("LP,3(S-#4V-S@Y86)C9&5F,#$R
M,S0U-C<X.4%"0T1%1@``````0```````````````````````````````````
M``````````````````+T`````````Q0````E```````/``4`````````````
M``````````8``P```````"B4`````&1O<RYL:6)R87)Y`&EN='5I=&EO;BYL
M:6)R87)Y````=71I;&ET>2YL:6)R87)Y``````(```*X```"P``````````(
M```1`````%@``!.0````=@``%ZH```!B```H"@```$0`````````#```$NH`
M``!8```5Z@```&P``!@V````8@``&WP```"````="@```$X``"AJ````1```
M``````/L````&P``````````````!`````@````,````$````!0````8````
M'````"`````D````*````"P````P````-````#@````\```"[````S@```-`
M```#2````U````-@```#:````W````-X```#@````X@````*`````0```$``
M``%L```!=````7P```&,```!E````KP```+$```#*````RP````!`````@``
M`7`````````#\`````)?7W-D871A```````````#7TYA;65!<G)A>0``````
M"`````1?7V5X:71?9'5M;7E?<F5F````0`````5?7V5X:71?9'5M;7E?9&5C
M;````````$0````"7V-L:6YE``````!(`````5]C9`````!,`````E]W:6YD
M;W<`````4`````-?7U]S=&1I;W=I;@````!4`````E]?7V-T>7!E````:```
M``)?7V-T>7!E7P```6P````"7U]?<T8```````%P`````U]?7V9I;&5L:7-T
M`````70````#7W-T9&9I;&5S:7IE```!@`````-?<W1D97)R9&5S``````&$
M`````U]?7V9U;F-L:7-T`````8@````$7U]?;65M;W)Y;&ES=````````8P`
M```!7V$``````9@````#7U]E<G)O<G1A8FQE```!G`````)?97)R;F\`````
M`F@````#7V9L86=C+C$P```````";`````1?;&]W97)T86)E;"XQ,0`````"
M<0````1?=7!P97)T86)E;"XQ,@`````"@0````)?7TU35$50`````I0````$
M7U]?<VEG;F%L9G5N8P```````I@````$7U]?<VEG;F%L<&5N9&EN9P```K``
M```$7U]?<VEG;F%L;6%S:P```````K0````#7U]?1$]30F%S90`````"N```
M``1?7U]5=&EL:71Y0F%S90`````"P`````1?7U]O<VQI8G9E<G-I;VX````"
MR`````%B;V1Y```"S`````%O:P`````"X`````-?7U]D;W-N86UE``````+T
M````!%]?7VEN='5I=&EO;FYA;64```,`````!%]?7W5T:6QI='EN86UE````
M``,4````!%]?7TQ)0E],25-47U\```````,D````!%]?7TE.251?3$E35%]?
M``````,T````!%]?7T58251?3$E35%]?``````-<`````E]?961A=&$````#
ME`````)?961A=&$``````Y0````````#\@```^L````4```#\`````-C;&5A
M;G5P9FQA9P``````````!%]I;FET:6%L:7IE9"XV```````$`````E]?7V9I
M;&5S````"`````)?7U]A<F=V`````!0````"7U]?87)G8P`````8````!%]?
M7W-T9&9I;&5D97,````````<````!%]?7T143U)?3$E35%]?```````@````
M!%]3:VEP3&ES=$)A<V4````````H````!%]?7T-43U)?3$E35%]?```````L
M`````U]?5T)E;F-H37-G`````#0````$7U]?8V]M;6%N9&QI;F4``````#@`
M```"7U-Y<T)A<V4````\````!%]?7V-O;6UA;F1L96X```````!``````E]?
M7V5N=@``````1`````-?7U]3879E4U````````!(`````E]?96YD```````#
5Y`````%?96YD```#Y`````````/R
`
end
SHAR_EOF
echo 'uudecoding file SkipListLib/Examples/Exercise' &&
uudecode < _shar_tmp_.tmp && rm -f _shar_tmp_.tmp &&
chmod 0600 SkipListLib/Examples/Exercise ||
echo 'restore of SkipListLib/Examples/Exercise failed'
Wc_c="`wc -c < 'SkipListLib/Examples/Exercise'`"
test 17436 -eq "$Wc_c" ||
	echo 'SkipListLib/Examples/Exercise: original size 17436, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= SkipListLib/Examples/Exercise.c ==============
if test -f 'SkipListLib/Examples/Exercise.c' -a X"$1" != X"-c"; then
	echo 'x - skipping SkipListLib/Examples/Exercise.c (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting SkipListLib/Examples/Exercise.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'SkipListLib/Examples/Exercise.c' &&
/* Program for testing the SkipList.library from GNU C.
X *
X * $Header: Big:Programming/C/SkipLists/RCS/Exercise.c,v 1.5 1996/08/19 16:08:45 AGMS Exp $
X *
X * By Alexander G. M. Smith, agmsmith@achilles.net, July 1996.
X * Compiled with GNU C version 2.7.0, command line:
X *   gcc -v -noixemul -O2 -Wall Exercise.c
X *
X * $Log: Exercise.c,v $
X * Revision 1.5  1996/08/19  16:08:45  AGMS
X * Cosmetics.
X *
X * Revision 1.4  1996/08/19  15:09:47  AGMS
X * Now has interactive skip list testing.
X *
X * Revision 1.3  1996/08/17  12:57:34  AGMS
X * Working but hard coded version, no interactivity yet.
X *
X * Revision 1.2  1996/08/14  14:34:11  AGMS
X * Added a header printing function.
X *
X * Revision 1.1  1996/08/11  13:14:05  AGMS
X * Initial revision
X */
X
#define LIBCALL_DECLARATION extern __inline
X
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <proto/exec.h>
#include "SkipList.h"
X
APTR SkipListBase;
X
X
#define NAMELENGTH 20
X
typedef struct FatNodeStruct
{
X  SkipNodeRecord  skipNode;
X  char name [NAMELENGTH];
} FatNodeRecord, *FatNodePointer;
X
X
X
/* Wait for the user to hit return. */
X
void WaitForKey (void)
{
X  char TempString [80];
X
X  printf ("\nPress the return key to continue.");
X  fgets (TempString, sizeof (TempString), stdin);
}
X
X
X
void PrintSkipListHeader (SkipListPointer TheList)
{
X  int   i;
X
X  printf ("Skip list header at address %ld:\n", (ULONG) TheList);
X  for (i = SKIPLISTLEVELCAP - TheList->activeLevels; i < SKIPLISTLEVELCAP; i++)
X  {
X    printf ("  Level %d\t[%d]->\t%ld\n", SKIPLISTLEVELCAP - i, i,
X    (ULONG) TheList->levelPointers [i]);
X  }
X
X  printf ("ActiveLev: %d\tSize: %ld\tNextUp: %ld\tNextDown: %ld\t"
X  "RandomIndex: %d\n", (int) TheList->activeLevels, TheList->size,
X  TheList->nextSizeUp, TheList->nextSizeDown, (int) TheList->randomIndex);
X
X  for (i = 0; i < RANDOMCACHESIZE; i++)
X  {
X    printf ("%08lx ", TheList->randomCache [i]);
X  }
X  printf ("\n");
}
X
X
X
void PrintFatNodesInList (SkipListPointer TheList)
{
X  int i;
X  FatNodePointer TheNode;
X
X  printf ("List of names in list at %ld:\n", (ULONG) TheList);
X
X  i = 8;
X  TheNode = (FatNodePointer) TheList->levelPointers [SKIPLISTLEVELCAP-1];
X  while (TheNode != NULL)
X  {
X    if (i <= 0)
X    {
X      i = 8;
X      printf ("%s\n", TheNode->name);
X    }
X    else
X    {
X      --i;
X      printf ("%s\t", TheNode->name);
X    }
X
X    TheNode = (FatNodePointer) TheNode->skipNode.next;
X  }
X  if (i != 8)
X    printf ("\n");
}
X
X
X
void PrintFatListGraphically (SkipListPointer TheList)
{
X  int             CurrentLevel;
X  SkipNodePointer CurrentNode;
X  int             CurrentNodeNumber;
X  int             GapStartCount;
X  int             GapEndCount;
X  signed char     Letter;
X  int             LetterIndex;
X  int             LineNo;
X  SkipNodePointer NextNode;
X  const int       NodesPerLine = 35;
X  SkipNodePointer PointedToNode;
X  BOOL            PointerErrorFound;
X
X  if (TheList->size >= NodesPerLine)
X  {
X    /* List too big to fit on screen, leave out middle part.  Print
X       NodesPerLine / 2 nodes in first part including root node and gap.  Node
X       number GapStartCount will be replaced by the gap marker.  Nodes are
X       numbered from 0 to TheList->size (extra one for header node). */
X
X    GapStartCount = NodesPerLine / 2 - 1;
X
X    /* Resume printing at this node number. */
X
X    GapEndCount = TheList->size - NodesPerLine + GapStartCount + 2;
X  }
X  else /* Printing all nodes. */
X  {
X    GapStartCount = GapEndCount = TheList->size + 1;
X  }
X
X  /* Each node gets printed in two columns.  The first few lines printed show
X     the list pointers, with "-" if the pointer level passes over a node, ">"
X     if a pointer points to a node, "*" for a node pointing somewhere, "?" for
X     a bad pointer (one that points at some other node when it should point at
X     this node or that points at this node when it should point somewhere
X     else.  "0" for null pointers. */
X
X  for (LineNo = 0; LineNo < TheList->activeLevels + 8; LineNo++)
X  {
X    if (LineNo < TheList->activeLevels)  /* Print pointer picture? */
X    {
X      CurrentLevel = TheList->activeLevels - LineNo;
X      printf ("P%02d: ", CurrentLevel);
X
X      /* Use skip list header as a fake first node. */
X
X      CurrentNode =
X      (SkipNodePointer) &TheList->levelPointers [SKIPLISTLEVELCAP-1];
X      CurrentNodeNumber = 0;
X
X      PointedToNode = CurrentNode;
X      PointerErrorFound = FALSE;
X
X      while (CurrentNode != NULL)
X      {
X        if (CurrentLevel <= CurrentNode->size.asBytes.nodeLevel)
X        {
X          if (CurrentNode != PointedToNode)
X            PointerErrorFound = TRUE;
X
X          PointedToNode = ((&CurrentNode->next) + 1) [-CurrentLevel];
X        }
X
X        if (CurrentNodeNumber < GapStartCount ||
X        CurrentNodeNumber >= GapEndCount)
X        {
X          /* Print the first character of the node's column. */
X
X          if (CurrentNode->size.asBytes.nodeLevel < CurrentLevel)
X            putchar ((PointedToNode == NULL) ? ' ' : '-');
X          else
X            putchar ((PointedToNode == NULL) ? '0' : '*');
X
X          /* And now the second character, shows what it is pointing at. */
X
X          NextNode = CurrentNode->next;
X
X          if (PointedToNode == NULL)
X            putchar (' ');
X          else
X          {
X            if (NextNode == NULL)
X              putchar ('?');  /* Where is PointedToNode pointing to, then? */
X            else if (NextNode == PointedToNode)
X              putchar ((NextNode->size.asBytes.nodeLevel < CurrentLevel) ?
X              '?' : '>');
X            else /* PointedToNode pointing at some other node. */
X              putchar ((NextNode->size.asBytes.nodeLevel < CurrentLevel) ?
X              '-' : '?');
X          }
X        }
X        else if (CurrentNodeNumber == GapStartCount)
X        {
X          printf ("()");
X        }
X        else
X        {
X          /* Else not printing this node. */
X        }
X
X        CurrentNode = CurrentNode->next;
X        ++CurrentNodeNumber;
X      }
X      if (PointerErrorFound)
X        printf ("Err!");
X    }
X    else if (LineNo == TheList->activeLevels)  /* Print node level numbers. */
X    {
X      printf ("Lev: ");
X      CurrentNode =
X      (SkipNodePointer) &TheList->levelPointers [SKIPLISTLEVELCAP-1];
X      CurrentNodeNumber = 0;
X      while (CurrentNode != NULL)
X      {
X        if (CurrentNodeNumber < GapStartCount ||
X        CurrentNodeNumber >= GapEndCount)
X        {
X          printf ("%-2d", (int) CurrentNode->size.asBytes.nodeLevel);
X        }
X        else if (CurrentNodeNumber == GapStartCount)
X        {
X          printf ("  ");
X        }
X        else
X        {
X          /* Else not printing this node. */
X        }
X        CurrentNode = CurrentNode->next;
X        ++CurrentNodeNumber;
X      }
X    }
X    else /* Just printing the columns of names. */
X    {
X      LetterIndex = LineNo - 1 - TheList->activeLevels;
X      printf ("       ");
X
X      CurrentNode = TheList->levelPointers [SKIPLISTLEVELCAP-1];
X      CurrentNodeNumber = 1;
X      while (CurrentNode != NULL)
X      {
X        if (CurrentNodeNumber < GapStartCount ||
X        CurrentNodeNumber >= GapEndCount)
X        {
X          Letter = ((FatNodePointer) CurrentNode)->name [LetterIndex];
X          if (Letter < 32)  /* Note signed char. */
X            Letter = '?';
X          printf ("%c ", Letter);
X        }
X        else if (CurrentNodeNumber == GapStartCount)
X        {
X          printf ("  ");
X        }
X        else
X        {
X          /* Else not printing this node. */
X        }
X
X        CurrentNode = CurrentNode->next;
X        ++CurrentNodeNumber;
X      }
X    }
X    putchar ('\n');
X  }
}
X
X
X
void RandomLevelTest (SkipListPointer SomeList)
{
X  int Bins [SKIPLISTLEVELCAP];
X  char FormatString [10];
X  int i;
X  unsigned int Max = 10000;
X  ULONG RandomNo;
X
X  for (i = 0; i < SKIPLISTLEVELCAP; i++)
X    Bins [i] = 0;
X
X  printf ("The first few random level numbers of %d:\n", Max);
X  for (i = 1; i <= 64; i++)
X  {
X    RandomNo = GenerateRandomLevelNumber (SomeList);
X
X    if (i & 7)
X      printf ("%lu\t", RandomNo);
X    else
X      printf ("%lu\n", RandomNo);
X
X    ++Bins [RandomNo - 1];
X  }
X
X  for (; i <= Max; i++)
X  {
X    RandomNo = GenerateRandomLevelNumber (SomeList);
X    ++Bins [RandomNo - 1];
X  }
X
X  printf ("Number: ");
X  for (i = 1; i <= SKIPLISTLEVELCAP; i++)
X  {
X    sprintf (FormatString, "%%%dd ", (i <= 3) ? 7 - i : 3);
X    printf (FormatString, i);
X  }
X  printf ("\nNormal: ");
X  for (i = 1; i <= SKIPLISTLEVELCAP; i++)
X  {
X    sprintf (FormatString, "%%%dd ", (i <= 3) ? 7 - i : 3);
X    printf (FormatString, (3 * Max) >> (2 * i));
X  }
X  printf ("\nActual: ");
X  for (i = 1; i <= SKIPLISTLEVELCAP; i++)
X  {
X    sprintf (FormatString, "%%%dd ", (i <= 3) ? 7 - i : 3);
X    printf (FormatString, Bins [i-1]);
X  }
X  printf ("\n");
}
X
X
X
const char *NameArray [] =
{
X  "Alexander",
X  "G.",
X  "M.",
X  "Smith",
X  "William",
X  "Pugh",
X  "Skip",
X  "Lists",
X  "are",
X  "Optimal",
X  "and",
X  "that",
X  "is",
X  "all."
};
X
X
/* Add our list of canned names to the given list.  Allocate a FatNodeRecord
X   for each name. */
X
void AddNamesToList (SkipListPointer TheList)
{
X  int i;
X  FatNodePointer MyNode;
X
X  for (i = 0; i < sizeof (NameArray) / sizeof (char *); i++)
X  {
X    MyNode =  (FatNodePointer) AllocateSkipNode (TheList,
X    sizeof (FatNodeRecord), MEMF_CLEAR);
X
X    if (MyNode == NULL)
X    {
X      printf ("Oops, ran out of memory in AddNamesToList.\n");
X      return;
X    }
X
X    strcpy (MyNode->name, NameArray [i]);
X
X    InsertSkipNode (TheList, (SkipNodePointer) MyNode);
X  }
}
X
X
X
/* Add a number of random nodes to the list. */
X
void AddRandomNodes (SkipListPointer TheList, int n)
{
X  SkipNodePointer NewNode;
X
X  while (--n >= 0)
X  {
X    NewNode = AllocateSkipNode (TheList, sizeof (FatNodeRecord), MEMF_CLEAR);
X
X    if (NewNode == NULL)
X    {
X      printf ("Oops, ran out of memory in AddRandomNodes.\n");
X      return;
X    }
X
X    sprintf (((FatNodePointer) NewNode)->name, "%06d",
X    rand () % 1000000);
X
X    InsertSkipNode (TheList, (SkipNodePointer) NewNode);
X  }
}
X
X
X
/* Add a node with a particular name to the list. */
X
void AddNodeWithName (SkipListPointer TheList, char *String)
{
X  SkipNodePointer NewNode;
X  SkipNodePointer PreviousNode;
X
X  NewNode = AllocateSkipNode (TheList, sizeof (FatNodeRecord), MEMF_CLEAR);
X
X  if (NewNode == NULL)
X  {
X    printf ("Oops, ran out of memory in AddNodeWithName.\n");
X    return;
X  }
X
X  strncpy (((FatNodePointer) NewNode)->name, String, NAMELENGTH);
X
X  PreviousNode = InsertSkipNode (TheList, (SkipNodePointer) NewNode);
X
X  printf ("Previous node after insert is %s.\n",
X  (PreviousNode == NULL) ? "NULL" : ((FatNodePointer) PreviousNode)->name);
X  WaitForKey ();
}
X
X
X
void DeleteNodeByName (SkipListPointer TheList, char *String)
{
X  BOOL DeleteDone;
X  FatNodeRecord SearchNode;
X
X  strncpy (SearchNode.name, String, NAMELENGTH);
X  SearchNode.skipNode.size.asLong = sizeof (SearchNode);
X
X  DeleteDone = DeleteSkipNode (TheList, (SkipNodePointer) &SearchNode);
X
X  printf ("Node named %s deleted %ssuccessfully.\n",
X  SearchNode.name, DeleteDone ? "" : "un");
X  WaitForKey ();
}
X
X
X
void FindNodeWithName (SkipListPointer TheList, char *String)
{
X  FatNodePointer NodeAboveOrEqual;
X  FatNodePointer NodeBelow;
X  FatNodePointer NodeEqual;
X  FatNodeRecord SearchNode;
X
X  strncpy (SearchNode.name, String, NAMELENGTH);
X  SearchNode.skipNode.size.asLong = sizeof (SearchNode);
X
X  NodeBelow = (FatNodePointer) FindBelowSkipNode (TheList,
X  (SkipNodePointer) &SearchNode);
X
X  NodeEqual = (FatNodePointer) FindSkipNode (TheList,
X  (SkipNodePointer) &SearchNode);
X
X  NodeAboveOrEqual = (FatNodePointer) FindAboveOrEqualSkipNode (TheList,
X  (SkipNodePointer) &SearchNode);
X
X  printf ("Found these nodes related to \"%s\" --\n", String);
X  printf ("Below:          %s\n", NodeBelow == NULL ? "NULL" : NodeBelow->name);
X  printf ("Equal:          %s\n", NodeEqual == NULL ? "NULL" : NodeEqual->name);
X  printf ("Above or equal: %s\n", NodeAboveOrEqual == NULL ? "NULL" : NodeAboveOrEqual->name);
X
X  WaitForKey ();
}
X
X
X
int main (int argc, char *argv[])
{
X  char CommandLine [80];
X  SkipListRecord MyList;
X  int n;
X  BOOL StopRunning;
X  BOOL Success;
X
X  Success = TRUE;
X
X  SkipListBase = OpenLibrary (SKIPLISTLIBRARYNAME, 0 /* version */);
X  if (SkipListBase == NULL)
X  {
X    Success = FALSE;
X    printf ("Unable to open " SKIPLISTLIBRARYNAME "\n");
X  }
X
X  /* Loop to read commands from the user and display the current list. */
X
X  if (Success)
X  {
X    InitSkipList (&MyList);
X
X    StopRunning = FALSE;
X    while (!StopRunning)
X    {
X      putchar (12); /* Clear screen with a form feed character. */
X
X      PrintFatListGraphically (&MyList);
X
X      printf ("Command (An=Add name, C=Clear, Dn=Delete name, Fn=Find name, \n"
X      "H=header, In=Insert n, L=List, N=Names, Q=quit, R[01]=randtest)? ");
X
X      if (fgets (CommandLine, sizeof (CommandLine), stdin) == NULL)
X        break;
X
X      CommandLine [strlen (CommandLine) - 1] = 0; /* Remove LF character. */
X
X      putchar ('\n');
X
X      switch (tolower (CommandLine [0]))
X      {
X        case 'a':
X          AddNodeWithName (&MyList, CommandLine+1);
X          break;
X
X        case 'c':
X          DeleteAllSkipNodes (&MyList);
X          break;
X
X        case 'd':
X          DeleteNodeByName (&MyList, CommandLine+1);
X          break;
X
X        case 'f':
X          FindNodeWithName (&MyList, CommandLine+1);
X          break;
X
X        case 'h':
X          PrintSkipListHeader (&MyList);
X          WaitForKey ();
X          break;
X
X        case 'l':
X          PrintFatNodesInList (&MyList);
X          WaitForKey ();
X          break;
X
X        case 'i':
X          n = atol (CommandLine + 1);
X          printf ("Inserting %d random nodes.\n", n);
X          AddRandomNodes (&MyList, n);
X          break;
X
X        case 'n':
X          AddNamesToList (&MyList);
X          break;
X
X        case 'q':
X          StopRunning = TRUE;
X          break;
X
X        case 'r':
X          if (CommandLine[1] == '0')
X          {
X            printf ("Random number test with no cache, ");
X            RandomLevelTest (NULL);
X          }
X          else
X          {
X            printf ("Random number test with list cache, ");
X            RandomLevelTest (&MyList);
X          }
X          WaitForKey ();
X          break;
X
X        default:
X          printf ("Unrecognized command letter in \"%s\".\n", CommandLine);
X          WaitForKey ();
X      }
X    }
X    printf ("Deallocating your list of %u nodes...\n", MyList.size);
X    DeleteAllSkipNodes (&MyList);
X  }
X
X  if (SkipListBase != NULL)
X    CloseLibrary (SkipListBase);
}
SHAR_EOF
chmod 0600 SkipListLib/Examples/Exercise.c ||
echo 'restore of SkipListLib/Examples/Exercise.c failed'
Wc_c="`wc -c < 'SkipListLib/Examples/Exercise.c'`"
test 14484 -eq "$Wc_c" ||
	echo 'SkipListLib/Examples/Exercise.c: original size 14484, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= SkipListLib/Examples/WordCounter ==============
if test -f 'SkipListLib/Examples/WordCounter' -a X"$1" != X"-c"; then
	echo 'x - skipping SkipListLib/Examples/WordCounter (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting SkipListLib/Examples/WordCounter (Binary)'
sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
begin 600 SkipListLib/Examples/WordCounter
M```#\P`````````#``````````(```<"````U@```!0```/I```'`B/(````
M."/`````0"//````2"QX``0CS@```#R3R4ZN_MHF0$JK`*QF%D'K`%Q.KOZ`
M0>L`7$ZN_HPCP````#1%^0```OQT_V%*+SD```!$+SD````4+SD````83KD`
M``4^+T``!$7Y```#)'0`820L>0```#PD.0```#1G"DZN_WPB0DZN_H8@+P`$
M+GD```!(3G5+^0`````F2G8`8!HH&RH5NH1F!"!`3I"UA+6%N(5D!KB#8P(F
M!"`;9N*U@RJ#MH)FSDYU<@S2KP`(+P%R#-*O``@O`4ZY```7U%!/3G5.<2\*
M(&\`"")O``PD:``((&D`""`J``B0J``(9A!(:``,2&H`#$ZY```7U%!/)%].
M=5)A;B!O=70@;V8@;65M;W)Y('=H:6QE(&%D9&EN9R!W;W)D<RX*``!.50``
M2.<^.B@M``@D;0`,)@_>_/WR*@]'[P`,=``@:@`$2>C__R5,``132+#\``!L
M#B\*3KD```G`6$\B`&`((%)"@1(04I)\_[R!9SP(*@`&``UF-"`!('D```$T
M"#```!@!9P1P(-"!(@`0,!@!`@```V<0#((```'^;J`7@2@`4H)@F$J";Y1*
M@F=X0C,H`"!$(D4L>0```"A.KO^X($"P_```9PA2J``(8`#_;B!$<`[0@G(`
M+'D````H3J[_W"Q`O/P``&<F+PM(;@`,3KD``!@`?`$M1@`(4$\@1").+'D`
M```H3J[_T&``_RY(>0```10@>0```3@O*``(3KD```QD+D-,[5Q\_]Q.74YU
M4F%N(&]U="!O9B!M96UO<GD@=VAI;&4@<V]R=&EN9R!C;W5N=',N"@``2.<@
M(B!O`!`D+P`4)&@`/+3\``!G2B!"<`QR`"QY````*$ZN_]P@0$J`9AI(>0``
M`DX@>0```3@O*``(3KD```QD4$]@&B%*``@@0B)`+'D````H3J[_T"12M/P`
M`&:V3-]$!$YU4V]R=&5D(&)Y(%=O<F0@("`@("`@("`@("`@("`@("`@("`@
M("`@4V]R=&5D(&)Y($-O=6YT"@`]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]/3T]/3T]("`]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]
M/3T]/3T]"@`E+3,R<R`E-&QD("`E+3,R<R`E-&QD"@!(YP`X(&\`$")O`!0F
M:``\*&D`/$AY```"WD7Y```0S$Z22'D```,63I)03[;\``!G-+C\``!G+B!L
M``@O*``(2&@`#"\K``A(:P`,2'D```-D3KD``!#,)E,H5-[\`!2V_```9LQ,
MWQP`3G5S:VEP;&ES="YL:6)R87)Y`%5N86)L92!T;R!O<&5N('-K:7!L:7-T
M+FQI8G)A<GD*`$]P96YI;F<@9FEL92`B)7,B(&9O<B!I;G!U="!T97AT('1O
M(&)E('=O<F0@8V]U;G1E9"X*`'(`56YA8FQE('1O(&]P96X@:6YP=70@9FEL
M92$*`%5S86=E.B`E<R!F:6QE;F%M90I#;W5N=',@=&AE(&YU;6)E<B!O9B!T
M:6UE<R!E86-H('=O<F0@87!P96%R<R!I;B!T:&4@9FEL92X*0GD@06QE>&%N
M9&5R($<N($TN(%-M:71H+"`Q.3DV+B`@4'5B;&EC($1O;6%I;BX*`%!L96%S
M92!W86ET+"!D96%L;&]C871I;F<@8V]U;G0@;&ES="XN+@H`4&QE87-E('=A
M:70L(&1E86QL;V-A=&EN9R!W;W)D(&QI<W0N+BX*``#>_/\,2.<X.B1O`1A.
MN0``!S9V`'0!+'D````\0_D```/H<`!.KOW8(\`````H9AI"0DAY```#^2!Y
M```!."\H``A.N0``#&103TI"9P`!$'@!N*\!%&Q,+RH`!$AY```$&B!Y```!
M."\H``A'^0``#&1.DTAY```$4"\J``1.N0``"P0F`-[\`!1F-D)"2'D```12
M('D```$X+R@`"$Z34$]@'D)"+Q)(>0``!&X@>0```3@O*``(3KD```QDWOP`
M#$I"9P``F$'O`!PL>0```"A.KO_B+WP```#(`'`O`T?O`"`O"V$`^Q903T'O
M`)0L>0```"A.KO_B+WP```#D`.A%[P"4+PHO"V$`_"XO"B\+80#]*DAY```$
M["!Y```!."\H``A)^0``#&1.E-[\`!@@2BQY````*$ZN_[Y(>0``!14@>0``
M`3@O*``(3I103R!++'D````H3J[_ODJ#9PHO`TZY```+I%A/(#D````H9PPL
M>0```#PB0$ZN_F)P`$S?7!S>_`#T3G4``"\*1?D````D2I)G""!:3I!*DF;X
M)%].=2\*+P(@.0```"QR_[*`9A1P`$'Y````,$J09PA82%*`2I!F^$J`9Q8D
M/````"SE@"1`U<(@4DZ064JTBF;V2'D```;,3KD``!686$\D'R1?3G5*N0``
M``1F"G`!(\`````$89Q.=4YQ2.<X(B1Y````-+3\``!G``""0?D````<2A!G
M/BQY```"?"(()#P```/M3J[_XB0`(\`````89@I(>``43KD```!F+'D```)\
M(@!.KO[:+'D```)\(@).KO[4(&H`)+#\``!G'BQY```"?"(03J[_H"QY```"
M?"(`3J[_@B/`````%$*Y````&"/*````%&```50D>0```#@F.0```$`L>0``
M`#P@`U*`<@!.KOU4(\`````09@I(>``43KD```!F($!T`4J#9W00$@P``"!G
M"@8`__<,```!8@922E.#9NA*@V=8$!(,```B9BA22E.#9T00$@P``")G%`P`
M`"IF!E)*4X-G,!#:4X-FYF`H4DI3@V`B#```(&<<$A(0`08`__<,```!8PX0
MP5)*4X-G!@P2`"!FY$(84H)@B"/"````&"8"Y8,L>0```#P@`UB`<@%(04ZN
M_50D0"/*````%&8*2'@`%$ZY````9B!Y````$'@!N()D%$/J``0@`]"*(HA*
M&&;\6$FPB6+T)CP```$`+'D````\(`-R`$ZN_50D@&<R+'D```)\(@`D`TZN
M_<`L>0```GQ.KO]\>'BX@&84+'D````\(E).KOU.!H,```$`8+Q*DF8*2'@`
M%$ZY````9DS?1!Q.=4CG("(D>0```#2T_```9S8B.0```!AG"BQY```"?$ZN
M_]Q*J@`D9UHL>0```GPB.0```!1.KO^"+'D```)\(@!.KO^F8#PD.0```!!G
M-"1Y````%+3\``!G'"`29PPL>0```#PB0$ZN_4XL>0```#PB2DZN_4XL>0``
M`#PB0DZN_4Y,WT0$3G4``$CG(#`F;P`0,BL`##`!`D``8&<00JL`!'0!(\(`
M``)48```S@@!``-G$B\+3KD``!E,6$]*@&<J8```MB`K`"!G(":`)VL`)``$
M0JL`("!K``1#Z/__)TD`!%-(L/P``&QZ,"L`#`@```EF``"$`D```V<J)'D`
M``$\2I)G(#`J`!0"0``)#$``"68,2&H`"$ZY```93%A/)%)*DF;@`&L`!``,
M+RL`%"\K`!`R:P`.+PE.N0``$"8@0"=(``3>_``,9@@`:P`@``Q@)+#\``!M
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
M!P`"9R1T`+?"8QXO+P!42'@`($ZY```9P%!/=O^V@&<N4H12@K?"8N(F2F``
M^ZXO+P!42(`R0"\)4DM.N0``&<!03W;_MH!G!E*$8`#[CB`$3-]\_-[\`"1.
M=2\O``@O+P`(('D```$X+R@`!$ZY```0YM[\``Q.=4YQ2'@`"$ZY```6C"!`
M6$^P_```9Q8@N0```7@A;P`$``0CR````7AP`$YU<@PCP0```E1P_TYU3G$O
M"B1Y```!>+3\``!G#B!J``1.D"12M/P``&;R)%].=2\"("\`#"\`+R\`#$ZY
M```82%!/5H!T_,2`+P).N0``%HP@0%A/2H!G!D*868)F^B0?3G4O#B\*(B\`
M#&=8)'D```%\(!)G3K*J`!1E!K*J`!AE!"1`8.PB05E)+'D````\($H@$4ZN
M_T`@*@`8D*H`%+"J`!QF'BQY````/")*3J[_!"QY````/")*("D`&)")3J[_
M+B1?+%].=4CG`#HD>0```7PH;P`46$Q*DF<>+'D````\($H@#$ZN_T8@0+#\
M``!F``"&)%)*DF;B1^P`)"`Y```"6+"+90(F0"`+!H````__`D#P`"9`+'D`
M```\<@!.KO\Z)$!*@&8$<`!@3D'J`"`E2``0)4@`%"!J`!!"D")J`!!!Z__@
M(T@`!"5(`!S7RB5+`!@L>0```#Q!^0```7PB0$ZN_Q`L>0```#P@2B`,3J[_
M1B!`(,P@"$S?7`!.=2\.+'D````\0?D```%\3J[^_B!`2H!G%"QY````/")`
M("@`&)"(3J[_+F#6+%].=0``2.<P(B1O`!0F+P`89PXO`TZY```6C"0`6$]@
M`G0`M/P``&<P2H)G&B`J__Q9@+:`9`(@`RQY````/"!*(D).KOV02H-G!$J"
M9PHO"DZY```6)%A/(`),WT0,3G4O"B)O``@D;P`,8`922DH!9Q00&4B`,$`2
M$A`!2("0P+#\``!GYB`()%].=4SO`0$`!")`$MAF_$YU``!(YR`B1?D```&(
M+'D```)\3J[_?$J29Q*PFF8((](```)48`Y82DJ29NYT`2/"```"5$S?1`1.
M=4SO``,`!"!Y```"A$[H_W9,[P`#``1A"B`!3G5,[P`#``0@>0```H1.Z/]D
M+PXL>0```#QP`"(\```0`$ZN_LX(```,9PQ(>``"3KD``!BJ6$\L7TYU```J
M*BI"<F5A:PH`2.<^."HO`"1P_R0%4X)\!;R"90``AD7Y```">$?Y```"='`!
MY:"!DRP2!09F:DGY```"6"@%Y80B$P4!9UIP`>6@)`!&@,*`)H%\`;RT2`!G
M/"82A(,D@B!T2`"P_```9B1\`KR%9B0@>0```3@O*``(2'K_@DZY```:"$AX
M`!1.N0```&8O!4Z06$\D@R0%4X(L$@4&9Z!P`$S?''Q.=0``2.<P("1O`!`P
M*@`,"```!F<6<@$CP0```E1P_V!.`&H`0``,</]@1`@```-G/"`J`!`D$I2`
M)@!*@F<@+P(O`S!J``XO"$ZY```0:-[\``Q*@&W*E(#6@$J"9N`":O_W``Q"
MJ@`(0JH`&'``3-\$#$YU```O"B`O``@B;P`,(&D`"$7H__\C2@`((@A3@6H,
MLJD`&&T4#```"F<.(%$0@`*`````_U*18`PO"2\`3KD``!H\4$\D7TYU```O
M"B\")&\`#"0O`!!*$F<<+P(0&DB`,$`O"$ZY```9P%!/<O^R@&;D</]@`G``
M)!\D7TYU2.<\("@O`!@D;P`<,BH`##`!`D`"0&<20JH`"'H!(\4```)4</]@
M``"2"`$``F<.0JH`!$*J`"`":O_[``P(*@````UG""8J`!1$@V`"=@`(*@`!
M``UF#"!J`!1!\#C_)`A@`B0#""H``P`-9A`DJ@`04X(E0@`(`&H`"``,(%(0
MA%*2("H`"&P@MH!N!@P$``IF%B\*3KD``!E,6$]*@&<$</]@%"2J`!`E0P`8
M)4(`"`!J``@`#"`$3-\$/$YU3F5E9"!V97)S:6]N("4N,3!L9"!O9B`E+C,R
M<P``%L!.=4CG,#(L>0```#PF.0```HQ%^0```N@D&F=`)EHB:P`$(`-.KOW8
M)H!F+$'Z_[(O*P`$+P,B3T7Z_\3>_/_$)D].KOWV+PM.N0``&ZQ(>``43KD`
M``!F4X)FP$S?3`Q.=4CG("(L>0```#Q%^0```N@D&F<0(EH@$6<&(D!.KOYB
M4X)F\$S?1`1.=4]K``!(YS@R+'@`!)/)3J[^VB)`<O^RJ0"X9SY#^0```L1P
M`$ZN_=@H`&<N1_D```*D0_D```*0E<HC;P`<``R1R'``<@!T*.E*=DC)CDZN
M_J0B3BQ$3J[^8DS?3!Q.=0```^P```!B`````````%X```#:```!"@```7(`
M``(.```"+@```CX```*F```"M@```Y(```.8```#H````\H```/0```%3```
M!5P```5R```%@@``!9P```6L```%M```!;X```7.```%Z```!?@```86```&
M.@``!E8```9F```&?@``!J0```<D```'*@``!XH```@(```(M```"2P```GN
M```*4@``"G0```K*```*^```"Q(```LF```+4```"W@```N,```+P```"]H`
M``OX```,'@``##(```Q,```,=@``#)@```RP```,X```#.P```V*```-L```
M#<8```WP```.!@``#DP```[^```/8```#Z````_0```0&@``$#@``!!<```0
M>@``$)X``!#:```3B@``$YX``!1````4>@``%+```!38```5!@``%3(``!5:
M```5C```%9X``!7^```6#@``%XH``!?&```8E```&2(``!DL```9E```&?P`
M`!HD```:U```&V8``!MP````6P````$```!"````:````98```(T```"K```
M!7@```6B```%U```!>X```9<```&A```!V````=J```'?@``!Y````><```'
ML@``![X```?*```'_```"+H```CR```)````"4@```E0```)8```"68```EP
M```)?@``"=P```HV```*O@``"V0```N$```+F```#%0```R^```,S@``#/@`
M``T$```.#```#A@```Y&```.7```#H(```Z2```.H@``#JH```[(```/$```
M#R````](```/C```#^P``!`$```01@``$(@``!"Z```1)```$68``!&N```3
M<```$WP``!6"```5K@``%;H``!7&```5U```%C```!:2```6Q```%R(``!=0
M```8%@``&!P``!@N```8/@``&%```!AL```8P@``&,@``!C:```9%```&6(`
M`!I<```;*@``&S```!N*```;Q@``&]8``!O<````2P````(````"````"```
M``X````8````/````$P```!2````6````'(```!X````C@```)8```'4```!
M]@```B````*6```"R```!58```5H```&#```!C````9T```&E```!JP```:T
M```&T```!NH```;X```'#@``!S@```="```'4@``!]````?6```'X```!^8`
M``?L```(B@``")0```BH```(X```"1````D\```)A@``"98```FB```)K@``
M"UX```OJ```,/@``#?@```XF```./@``#G@```["```/&@``#X(```^F```/
MQ```$#X``!"````0L@``%DX``!9J```6=@``%J(``!;>```7'```%RX``!=*
M```78```%ZX``!AX```;)```&X0````````#\`````)S=&%R=```````````
M```"9G)O;5="```````J`````F9R;VU#3$D`````0`````)?97AI=```````
M`&8````"7U]E>&ET``````!F`````G1O9&]S````````B`````-C86QL9G5N
M8W,```````"4`````G-T86)L;V]P````H`````)N;W1N;W<``````*P````"
M;VQD<')I``````"Z`````E]G971A-```````Q@````5?7U]G;G5?8V]M<&EL
M961?8P```````,@````&7T-O;7!A<F57;W)D0V]U;G1296-O<F1S````R```
M``=?0V]M<&%R95-O<G1">4-O=6YT4F5C;W)D<P``````Y`````-?0V]U;G17
M;W)D<P````$\`````U]3;W)T0V]U;G1S`````G@````%7U!R:6YT5V]R9'-!
M;F1#;W5N=',```-\`````E]M86EN```````%/@````5?7U]G;G5?8V]M<&EL
M961?8P``````!LP````%7U]?9&]?9VQO8F%L7V1T;W)S``````;,````!5]?
M7V1O7V=L;V)A;%]C=&]R<P`````&Y`````)?7U]M86EN````!S8````%7U]?
M:6YI=&-O;6UA;F1L:6YE``````=,````!5]?7V=N=5]C;VUP:6QE9%]C````
M```'3`````5?7U]G;G5?8V]M<&EL961?8P``````!TP````$7U]?;F]C;VUM
M86YD;&EN90``!TP````%7U]?97AI=&-O;6UA;F1L:6YE``````DV````!5]?
M7V=N=5]C;VUP:6QE9%]C```````)P`````5?7U]G;G5?8V]M<&EL961?8P``
M````"<`````%7U]?9VYU7V-O;7!I;&5D7V,```````G``````E]?7W-R9V5T
M```)P`````1?7U]I;FET<W1D9FEO```````*N`````5?7U]G;G5?8V]M<&EL
M961?8P``````"K@````%7U]?9VYU7V-O;7!I;&5D7V,```````L$`````E]F
M;W!E;@`````+!`````)?9F-L;W-E````"Z0````$7U]?97AI='-T9&9I;P``
M````#`8````"7V9P<FEN=&8```QD````!5]?7V=N=5]C;VUP:6QE9%]C````
M```,9`````)?9G)E;W!E;@``#(0````%7U]?9VYU7V-O;7!I;&5D7V,`````
M``R$````!5]?7V=N=5]C;VUP:6QE9%]C```````-Y`````-?7U]I;FET<W1D
M:6\```WF`````U]?7V5X:71S=&1I;P``#G(````"7V]P96X```````ZX````
M`E]C;&]S90`````/<`````)?;'-E96L`````#[8````"7W)E860``````!`F
M`````E]W<FET90`````0:`````)?:7-A='1Y````$*H````"7W!R:6YT9@``
M`!#,````!5]?7V=N=5]C;VUP:6QE9%]C```````0S`````5?7U]G;G5?8V]M
M<&EL961?8P``````$.0````#7W9F<')I;G1F```````0Y@````5?7U]G;G5?
M8V]M<&EL961?8P``````%7@````"7W9P<FEN=&8``!5X````!5]?7V=N=5]C
M;VUP:6QE9%]C```````5F`````)?871E>&ET````%9@````$7U]?97AI=&%T
M97AI=```````%=`````%7U]?9VYU7V-O;7!I;&5D7V,``````!7P`````E]C
M86QL;V,````5\`````5?7U]G;G5?8V]M<&EL961?8P``````%B0````"7V9R
M964``````!8D````!5]?7V=N=5]C;VUP:6QE9%]C```````6C`````)?;6%L
M;&]C````%HP````$7U]?97AI=&UA;&QO8P``````%T8````"7W)E86QL;V,`
M`!=X````!5]?7V=N=5]C;VUP:6QE9%]C```````7>`````5?7U]G;G5?8V]M
M<&EL961?8P``````%]0````"7W-T<F-M<````!?4````!5]?7V=N=5]C;VUP
M:6QE9%]C```````8``````)?<W1R8W!Y````&``````#7U]?<V5T97)R;F\`
M```8$`````5?7U]G;G5?8V]M<&EL961?8P``````&!`````%7U]?9VYU7V-O
M;7!I;&5D7V,``````!A(````!5]?7V=N=5]C;VUP:6QE9%]C```````82```
M``-?7U]M=6QS:3,``````!A(`````U]?7W5M;V1S:3,`````&%@````%7U]?
M9VYU7V-O;7!I;&5D7V,``````!A8`````U]?7W5D:79S:3,`````&&0````#
M7U]?=61I=G-I-``````8:@````5?7U]G;G5?8V]M<&EL961?8P``````&'0`
M```#7U]?8VAK86)O<G0````8=`````5?7U]G;G5?8V]M<&EL961?8P``````
M&*`````"7W)A:7-E`````!BJ`````U]?7V9F;'5S:```````&4P````%7U]?
M9VYU7V-O;7!I;&5D7V,``````!E,`````E]F<'5T8P`````9P`````5?7U]G
M;G5?8V]M<&EL961?8P``````&<`````"7V9P=71S`````!H(````!5]?7V=N
M=5]C;VUP:6QE9%]C```````:"`````)?7U]S=V)U9@``&CP````%7U]?9VYU
M7V-O;7!I;&5D7V,``````!H\````!5]?7V=N=5]C;VUP:6QE9%]C```````:
M/`````5?7U]G;G5?8V]M<&EL961?8P``````&CP````%7U]?9VYU7V-O;7!I
M;&5D7V,``````!K\`````U]N965D=&5X=```````&OP````%7U]?9VYU7V-O
M;7!I;&5D7V,``````!K\````!5]?7V=N=5]C;VUP:6QE9%]C```````:_```
M``1?7U]I;FET;&EB<F%R:65S```;'@````1?7U]E>&ET;&EB<F%R:65S```;
M?@````5?7U]G;G5?8V]M<&EL961?8P``````&Z@````%7U]?9VYU7V-O;7!I
M;&5D7V,``````!NH`````F]K=&5X=``````;J`````-?7U]R97%U97-T````
M`!NL`````FQ?9F%I;``````<`@````)?971E>'0`````'`@````%7U]?9VYU
M7V-O;7!I;&5D7V,``````!P(````!5]?7V=N=5]C;VUP:6QE9%]C```````<
M"`````)?7V5T97AT````'`@````%7U]?9VYU7V-O;7!I;&5D7V,``````!P(
M`````````_(```/J````U@``!TP``!L>````#`````````````````````!#
M3TXZ+R\O+R]!551/+T-,3U-%```@("`@("`@("`H*"@H*"`@("`@("`@("`@
M("`@("`@((@0$!`0$!`0$!`0$!`0$!`$!`0$!`0$!`0$$!`0$!`0$$%!04%!
M00$!`0$!`0$!`0$!`0$!`0$!`0$!$!`0$!`00D)"0D)"`@("`@("`@("`@("
M`@("`@("`@(0$!`0("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M"!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`!`0$!`0$!`0$!`0$!
M`0$!`0$!`0$!`1`!`0$!`0$!`@("`@("`@("`@("`@("`@("`@("`@("$`("
M`@("`@("````````,`````@```%``````````3P````#`````",P+2`K,#$R
M,S0U-C<X.6%B8V1E9C`Q,C,T-38W.#E!0D-$148````````````!@```````
M``%\````9P````P```!I````0P```'8````'````>`````<```#*````&@``
M`,L````1````S`````(```#-`````@```,X````_````SP```!L```#1````
M$P```-4````0````U@```!X```#8````0@```-D````_````V@````8```#;
M````'0```-T````<````W@````T```#?````#0```.`````-````X0```$\`
M``#B````!@```.L````(```!,0````T`````````````0```````````````
M``````````````````````````````````````*X`````````M@````E````
M```/``4```````````````````````8``P```````!NH`````&1O<RYL:6)R
M87)Y`&EN='5I=&EO;BYL:6)R87)Y````=71I;&ET>2YL:6)R87)Y``````(`
M``)\```"A``````````(```'3````%@```JX````=@``#>8```!B```;'@``
M`$0`````````#```"38```!8```,!@```&P```YR````8@``%=````"````7
M1@```$X``!M^````1`````````/L````#0``````````````!````K````+\
M```#!````PP```,4```#)````RP```,T```#/````T0```-,````"@````$`
M```(```!-````3P```%$```!?````80```*````"B````NP```+P`````0``
M``(```$X`````````_`````"7U]S9&%T80``````````!%]?97AI=%]D=6UM
M>5]R968````(````!5]?97AI=%]D=6UM>5]D96-L````````#`````)?8VQI
M;F4``````!`````!7V-D`````!0````"7W=I;F1O=P`````8`````U]?7W-T
M9&EO=VEN`````!P````"7U]?8W1Y<&4````P`````E]?8W1Y<&5?```!-```
M``)?7U]S1@```````3@````#7U]?9FEL96QI<W0````!/`````-?<W1D9FEL
M97-I>F4```%(`````U]S=&1E<G)D97,``````4P````#7V9L86=C+C$P````
M```!4`````1?;&]W97)T86)E;"XQ,0`````!50````1?=7!P97)T86)E;"XQ
M,@`````!90````-?7U]F=6YC;&ES=`````%X````!%]?7VUE;6]R>6QI<W0`
M``````%\`````U]?97)R;W)T86)L90```8@````"7V5R<FYO``````)4````
M`E]?35-415`````"6`````1?7U]S:6=N86QF=6YC```````"7`````1?7U]S
M:6=N86QP96YD:6YG```"=`````1?7U]S:6=N86QM87-K```````">`````-?
M7U]$3U-"87-E``````)\````!%]?7U5T:6QI='E"87-E``````*$````!%]?
M7V]S;&EB=F5R<VEO;@````*,`````6)O9'D```*0`````6]K``````*D````
M`U]?7V1O<VYA;64``````K@````$7U]?:6YT=6ET:6]N;F%M90```L0````$
M7U]?=71I;&ET>6YA;64``````M@````$7U]?3$E"7TQ)4U1?7P```````N@`
M```$7U]?24Y)5%],25-47U\``````O@````$7U]?15A)5%],25-47U\`````
M`R`````"7U]E9&%T80````-8`````E]E9&%T80`````#6`````````/R```#
MZP```!0```/P`````V-L96%N=7!F;&%G```````````$7VEN:71I86QI>F5D
M+C8```````0````"7U]?9FEL97,````(`````E]?7V%R9W8`````%`````)?
M7U]A<F=C`````!@````$7U]?<W1D9FEL961E<P```````!P````$7U]?1%1/
M4E],25-47U\``````"`````$7U-K:7!,:7-T0F%S90```````"@````$7U]?
M0U1/4E],25-47U\``````"P````#7U]70F5N8VA-<V<`````-`````1?7U]C
M;VUM86YD;&EN90``````.`````)?4WES0F%S90```#P````$7U]?8V]M;6%N
M9&QE;@```````$`````"7U]?96YV``````!$`````U]?7U-A=F534```````
F`$@````"7U]E;F0```````.H`````5]E;F0```.H`````````_)3
`
end
SHAR_EOF
echo 'uudecoding file SkipListLib/Examples/WordCounter' &&
uudecode < _shar_tmp_.tmp && rm -f _shar_tmp_.tmp &&
chmod 0600 SkipListLib/Examples/WordCounter ||
echo 'restore of SkipListLib/Examples/WordCounter failed'
Wc_c="`wc -c < 'SkipListLib/Examples/WordCounter'`"
test 12908 -eq "$Wc_c" ||
	echo 'SkipListLib/Examples/WordCounter: original size 12908, current size' "$Wc_c"
rm -f _shar_wnt_.tmp
fi
# ============= SkipListLib/Examples/WordCounter.c ==============
if test -f 'SkipListLib/Examples/WordCounter.c' -a X"$1" != X"-c"; then
	echo 'x - skipping SkipListLib/Examples/WordCounter.c (File already exists)'
	rm -f _shar_wnt_.tmp
else
> _shar_wnt_.tmp
echo 'x - extracting SkipListLib/Examples/WordCounter.c (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'SkipListLib/Examples/WordCounter.c' &&
/* Example program for using the SkipList.library from GNU C.  Given a file
SHAR_EOF
true || echo 'restore of SkipListLib/Examples/WordCounter.c failed'
fi
echo 'End of libs/SkipListLib-1.0 part 1'
echo 'File SkipListLib/Examples/WordCounter.c is continued in part 2'
echo 2 > _shar_seq_.tmp
exit 0
-- 
Bill Zimmer - zim@ibx.com


