amiga-request@ab20.larc.nasa.gov (Amiga Sources/Binaries Moderator) (02/19/91)
Submitted-by: caw@miroc.chi.il.us (Christopher A. Wichura) Posting-number: Volume 91, Issue 015 Archive-name: graphics/gifmachine2116/part02 #!/bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 2)." # Contents: GIFMachine.uu Sources/main.c # Wrapped by tadguy@ab20 on Mon Feb 18 16:19:00 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'GIFMachine.uu' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'GIFMachine.uu'\" else echo shar: Extracting \"'GIFMachine.uu'\" \(23896 characters\) sed "s/^X//" >'GIFMachine.uu' <<'END_OF_FILE' Xbegin 666 GIFMachine XM```#\P`````````#``````````(``!!<````(`````````/I```07$CG@(!^, XM`"QX``0F;@$4<``B/```,`!.KO[.2JL`K&820>L`7$ZN_H!!ZP!<3J[^C"X`N XM0_H!('`D3J[]V$J`9CA#^@$23J[^:$J`9R`L0$ZN_\0B`&<60?H!""0(=B-./ XMKO_0(DXL>``$3J[^8E"/(`=A``#.<`!.=2\`2?D``(``F?P``(``(#P``-_,F XM(CP``0`!3J[]5$J`9AX@!V$``*(L7U"/<F=.KOXR(DXL>``$3J[^8G`43G4@O XM0"1`(D`@/````!L@W%.`9OH@'&<.($G1W-70((HD25.`8/`H2=G\``"``"E?@ XM@&PI1X!X+'@`!"E.@'!,WP$!2.R``(!\(D=.N0```81P`&`$("\`!"8`("R`. XM>&$``"HL;(!L<@!.KOXR(DXL>``$3J[^8BYL@'PB3)/\``"``$ZN_4X@`TYU9 XM)`!G#BQX``1.KO]\(D).KOZ&3G5D;W,N;&EB<F%R>0!9;W4@;F5E9"!+:6-KC XM4W1A<G0@,BXP(&]R(&=R96%T97(N#0!.5?_82.<P,B9)2.T!`?_83KH-$B`+> XM9PI.N@W6<`5A``3V0_H!JG``+&R`<$ZN_=@I0(`09A1(>@&62'H!JDZZ.\QP5 XM!6$`!-!03T/Z`;!P`"QL@'!.KOW8*4"`%&842'H!G$AZ`8).NCND<`5A``2H4 XM4$]P'W(`0>W_X!#!4<C__$'Y```]^")(2AEF_%.)D\AP&$'Y```_E"1(2AIFR XM_%.*E<C0@"()TH`@"M*`4H$@`4ZZ#(@K0/_X9A1!^@%L(@@L;(!L3J[\3'`%Z XM80`$2D'Z`3XO"$AY```_E"\(2'D``#WX+RW_^$ZZ.U!/[P`40?H!2"((0^R#Y XME"0)1>W_X"8*+&R`;$ZN_.(I0(.09A).KO]\(@!T`$ZN_B9P!6$``_@@;?_X6 XM3KH,7"`L@YAG"B!`80`+>#E`@[Q*K(.@9R8@;(.@(!`I0(`(;09R9+"!;Q1!X XM^@%`(@@L;(!L3J[\3'`#80`#M$JL@[AG#B!L@[@@$.&`Y8`I0(`$)FR#E"`+< XM9A1!^@$^(@@L;(!L3J[\3'`#80`#A$ZZ,;Y@"B!+6(L@4&$``^1*DV;R<`!AN XM``-J3-],#$Y=3G4J*BH@57-E<B!);G1E<G)U<'1I;VXA"@!M871H:65E961O. XM=6)B87,N;&EB<F%R>0!5;F%B;&4@=&\@86-C97-S("5S(0H`:69F<&%R<V4N] XM;&EB<F%R>0``FS,S.S0R;4=)1DUA8VAI;F6;,S([-#!M``!/=70@;V8@;65MG XM;W)Y(0H`1TE&9FEL97,O32]!+%1/+TLL04Q,+U,L3D]"3U)$15(O2R].+%A#O XM3TU0+U,L1$E42$52+U,L6$9,25`O<RQ91DQ)4"]S+$1%15`O4RQ"549325I%/ XM+TLO3@``26YV86QI9"!.3T)/4D1%4B!L:6YE('1H<F5S:&AO;&0@<W!E8VEFP XM:65D+@H``$YO($=)1B!F:6QE<R!S96QE8W1E9"X*`$9I;&4@;F]T(&9O=6YD> XM+@H``%!A=&@@=&]O(&QO;F<A"@!)+T\@17)R;W(@(R5L9"$*``!%<G)O<B`C3 XM)6QD('1R>6EN9R!T;R!O<&5N("5S+BXN"@``1TE&`"5S(&ES(&YO="!A($=)? XM1B!F:6QE+BXN"@``0V]N=F5R=&EN9R`E<R```"YG:68``"XN+B!/=70@;V8@L XM;65M;W)Y(0H`+F1E97``+G-H86T`=&\@)7,N+BX*`$5R<F]R(')E861I;F<@Z XM<V-R965N(&1E<V-R:7!T;W(N"@!3:6=N871U<F4@/2`B)7,B+"!7:61T:"`]+ XM("5L9"P@2&5I9VAT(#T@)6QD"@``3F\@9VQO8F%L(&-O;&]U<B!M87`@<W5P. XM<&QI960L('5S:6YG(&EN=&5R;F%L+@H`1VQO8F%L(&-O;&]U<B!M87`@8V]NX XM=&%I;G,@)6QD(&5N=')I97,N"@``17)R;W(@<F5A9&EN9R!G;&]B86P@8V]LY XM;W5R(",E;&0N"@``3W5T(&]F(&UE;6]R>2!T<GEI;F<@=&\@86QL;V-A=&4@Q XM<&EC='5R92X*```N+BY)+T\@97)R;W(@<F5A9&EN9R!'248@9FEL92X*`"XN3 XM+E5N:VYO=VX@9&ER96-T:79E(",E;&0@96YC;W5N=&5R960N"@`N+BY#;VYV) XM97)S:6]N('1I;64@=V%S("5L9"!H;W5R)7,L("5L9"!M:6YU=&4E<R!A;F0@3 XM)6QD('-E8V]N9"5S+@H``',```!(YP$"+@`@+(``9PHB`"QL@&Q.KO_<("R`Z XM%&<*(D`L;(!P3J[^8B`L@!!G"B)`+&R`<$ZN_F)*K(`89PPB+(`8+&R`;$ZN% XM_+X@+(.09PHB`"QL@&Q.KORF<`%.N@A"<`!.N@@\(`=.NOH,3-]`@$YU2.<A` XM$B9((#P```(:3KH'IBE`@!A*@&840?K\B"((+&R`;$ZN_$QP"F$`_V8@;(`8' XM,7P!```2$7P``0`0(&R`&"%\```0```()`@B"RQL@&Q.KOS*+@!@5"!L@!@@\ XM*``82H!O,$JL@YQG-!`H`!`(```#9@XB```!``0@;(`8$4$`$!`H`!`"``#W. XM(&R`&!%``!!@"D/H`1@@26$``(PB+(`8+&R`;$ZN_,0N`$J'9Z@B+(`8+&R`[ XM;$ZN_+X@;(`83KH'.D*L@!@@!P2`````S6<D<AN0@6=*<D>0@6<H4X!F-"(L[ XM@`PL;(!L3J[\3'`!80#^GF`L0?K\6B((+&R`;$ZN_$Q@'$'Z_%PB""QL@&Q.< XMKOQ,8`PO!TAZ_%I.NC5H4$],WTB$3G5.5?_$2.<_,B9(,"R#\%)`.4"#\"(+< XM)#P```/M+&R`;$ZN_^(I0(``9AA.KO]\+PLO`$AZ_"I.NC4F3^\`#&``!8HB> XM+(``=`$F+(`$+&R`;$ZN_I)"+?_O+P0F`B(L@`!![?_I)`AX!DZN_KPH'UV`G XM9A)P`T'Z_`I#[?_I3KHW@$J`9Q`O"TAZ^_Q.NC324$]@``4X+PM(>OP&3KHT[ XMPB(++&R`;$ZN_)HF0"!+2AAF_%.(D<L@"")+T\`D25F*<`1!^OOL(DI.NC;2; XM4$]*@&8"0A(@2TH89OQ3B)'+(`@N`%R'("R#F&<H2FR#O&<2($!*&&;\4XB1X XMP"`(4H#>@&`0($!*&&;\4XB1P"`(+@!2AR`'3KH%>"1`(`IF$D'Z^Y8B""QL' XM@&Q.KOQ,8``$GB`L@YAG-"!`(DH2V&;\2FR#O&=&(@HD"R8'+&R`;$ZN_(Y** XMK(.T9P9#^OMP8`1#^OMP($I.NC;F8"`@2R)*$MAF_$JL@[1G!D'Z^U!@!$'ZT XM^U`B2"!*3KHVQ"\*2'K[2$ZZ,\Y03T'M_]PB""QL@&Q.KO]`+P0B+(``0>R`G XM@"0(=@%X!TZN_KPH'U^`9PY!^OL@(@A.KOQ,8``$`B!"80`$=D'L@()A``1N< XM<``P+("`<@`R+(""+P$O`$AM_^E(>OL23KHS;$'LO!Q.NC5\3^\`$$)L@]9P3 XM`!`L@(0B`'0'PH)2@70!XZ(N`@@```=F+$'Z^PXB""QL@&Q.KOQ,?`!'[(",P XM8!`@!A=```(70``!%H!2AE:+O(=M[&!&+P=(>OL03KHS#%!/?`!'[(",8"XOY XM!"(L@``D"W8!+&R`;'@#3J[^O"@?5X!G$"\&2'K[#$ZZ,MY03V```T12AE:+7 XMO(=MSG``,"R`@%Z`<@A.NC7>(@!T0-2"TH+N@5*`T($N`#`L@()R`#(`Y8$@% XM`4ZZ`]`I0("(9R0P+(""<@`R`.F!TH$@`4ZZ`[@I0,^89PP@!TZZ`ZPI0+THJ XM9A)!^OK"(@@L;(!L3J[\3&```M)P`#`L@(!2@"(`Y8F2@"P!?@!Z`&`P(&R`6 XMB"](`"0@!DZZ`W`@;P`DT<4@@$J`9A)!^OJ`(@@L;(!L3J[\3&```I!2AUB%^ XM<``P+(""OH!MQG``,"R`@%Z`<@A.NC4D+`!2AGX`1^R]+F`@(`9.N@,D)H!F% XM$D'Z^CPB""QL@&Q.KOQ,8``"3%*'6(M*K(.T9P1P&&`"<`:^@&W02JR#J&=(B XM?@`^+("`?`!@."`'3KH"Y$'L@[XA@&@`2H!G$B`'3KH"TD'L@\HA@&@`2H!F! XM$D'Z^>(B""QL@&Q.KOQ,8``!\EB&<`R\@&W"<`$I0(.,?@!@``#@(BR``"QL_ XM@&Q.KO[.+@!P_[Z`9@Y!^OG4(@A.KOQ,8``!O"`'<B&0@6<@<@N0@6<*<@^0X XM@6<D8```F"`L@`!.N@.T+@!(QV```)8@+(``3KH*5"X`2,=@``"&2JR#H&<$; XM3KH>-DJL@ZQG!$ZZ)B!*K(.P9P1.NB=<2JR#I&<*3KHC?'`!.4"#UC`L@((,[ XM0`#(8PY*;(/69P@Y?``!O2Q@!$)LO2Q*K(.T9A1*K(.H9P9.NAFF8`1.NA@X) XM3KHIR"`L@[1(P"!*3KH,L"X`2,=@#B\'2'KY-DZZ,)A03WX!2H=G`/\>0>W_T XMT"((+&R`;$ZN_T`@+?_8<C).NC.2+T``)"`M_]1R/$ZZ,V0O0``H("W_T"(\? XM``%1@$ZZ,U(B+P`HT($B+P`DT($H`"`M_^1R,DZZ,UHO0``D("W_X'(\3KHSH XM+"]``"@@+?_<(CP``5&`3KHS&B(O`"C0@2(O`"30@9B`(`0B/```#A!.NC-2% XM+``@!B(\```.$$ZZ,O*8@"`$<CQ.NC,Z*@`@!7(\3KHRWBX$GH!P`;R`9P9!9 XM^OC:8`1!^OC6)DBZ@&<&0?KXRF`$0?KXQB1(OH!G!D'Z^+I@!$'Z^+8O""\'F XM+PHO!2\++P9(>OA@3KHOFD_O`!PP+(/P(@!303E!@_!R`#(`(`%.N@$H("R`5 XM`&<.(@`L;(!L3J[_W$*L@`!,WTS\3EU.=4Y5_O1(YR,2)DA\`"(+=/XL;(!L' XM3J[_K"X`2H=G("('0>W^]B0(3J[_FDJ`9PH@+?[Z2H!O`GP!(@=.KO^F(`9,M XMWTC$3EU.=4CG(!`F2'``,!,B``*!``#_`."!=``4`7(`,@!P`$8`PH!P`!`!$ XMX8"`@C:`3-\(!$YU0>R#V$ZZ,/I![(/D3KHP\D)L@_!.=4CG`1(N`'`,WH`@9 XM!R(\``$``2QL@'!.KO\Z)D`@"V8$<`!@'C`L@_#`_``,0>R#V-'`(DM.KO\*O XM)T<`"$'K``P@"$S?2(!.=4Y5__Q(YP`2)D@@2Y#\``PO2``((D@L;(!P3J[_( XM!")O``@@*0`(3J[_+DS?2`!.74YU2.<!,BX`(`?`_``,0>R#V-'`)DA@#B)*8 XM("D`""QL@'!.KO\N($LL;(!P3J[^^"1`(`IFXDS?3(!.=0``2.<Q,DJL@'1G: XM!'X`8!9#^@!\<``L;(!P3J[]V"E`@'1G+GX!D<A#[(`X)$A'[(!,<``B`'1N* XMU()V0"QL@'1.KOZD2D=G"B).+&R`<$ZN_F),WTR,3G5T;W!A>BYF;VYT``!F+ XM;W(@0TQ)('5S92!O;FQY(0!'249-86-H:6YE(&ES`$-/3E1)3E5%``!I;G1UU XM:71I;VXN;&EB<F%R>0```$Y5_\Q(YS\R(BR#C%*L@XPO`4AZ`X(K0/_63KHMJ XM8%!/+P0B+?_60>R#]"0(=@$L;(!L>`E.KOZ\*!]R";"!9Q!!^@-P(@A.KOQ,> XM<`%@``,^($).NOX.0>R#]DZZ_@9![(/X3KK]_D'L@_I.NOWV<``0+(/\<D#`G XM@3E`AP)G!G(!.4&'`GX`/BR#]'P`/"R#]DILAP)G!D'Z`X1@!$'Z`X!P`#`L^ XM@_IR`#(L@_;2@%.!<``P+(/X=``T+(/TU(!3@B\(+P$O!B\"+P=(>@,.3KHLQ XMK$_O`!@0+(/\"```!V=<<@`2`'`'PH!2@7`!XZ`O`$AZ`S(K0/_H3KHL@E!/@ XM?@!'[(/^8"XO!"(M_]8D"W8!+&R`;'@#3J[^O"@?5X!G$"\'2'H#+DZZ+%1PH XM`6```EY2AU:+OJW_Z&W,8"IP`!`L@(1R!\"!4H!R`>&A*T'_Z$'L@(Q#[(/^] XM(#P```,`+&R`<$ZN_9!P`$*G2'H##CE`AOXY0(<`3KHL!%!/(BW_UBQL@&Q.F XMKO[.&4"'"`P``/]F$$'Z`PPB"$ZN_$QP`6```>QP`!`LAPAR`20!X:(F`E*#L XM*4.'"B8"5(,L`U(LAP@0+(<(+T(`*G0`%`#EH2X!>@!"+(<.<@`?0``D*4&'^ XM$"E!AQ0I08<$+T,`)B`M_]9A``,V*`!@``%(2JR'!&<&<`%@``&(<``B/```% XM$``L;(!P3J[^S@@```QG%"\L@`Q(>@*F3KHK5G`!3KKT6E!/N*\`*F8T$"\`9 XM)'(`$@!T`>.B+@(L+P`F&4"'""`M_]9A``+6*``@!'(`$@`;0/_;(`%A``.<\ XM8```RBX$OJW_W&T,+BW_X'H!&6W_V[@8("W_Z%.`?``<`&`^#(4```0`;Q1!6 XM^@(X(@@L;(!L3J[\3'`!8```Z"!%4H5#[*@81>RX&"`(%;%X``@`(`?0@'X`N XM0>R(&#XP"`"^AFZ^(`=R`!(`&T#_VR`!80`#)BX%4X=@$'``0>RX&!`P>`!A! XM``,24X=*AVKL>@`@+?_<(@#2@20M_^!![(@8,8(8`$'LJ!@1K?_;"``L`%*&& XM+BW_Y+R';1`0+(<(<@RP`60&4BR'"-Z'*T3_X"`M_]9A``'L*``K1O_<*T?_W XMY+BLAPIF`/ZL(BW_UBQL@&Q.KO[.+@!P_[Z`9@1P`6`D0?H!AB((3J[\3$J'4 XM9Q1!^@&$(@A.KOQ,(BW_UB0'3J[^PG``3.U,_/^H3EU.=2XN+DEM86=E(",E/ XM;&0@96YC;W5N=&5R960N"@`N+BXN+BY%<G)O<B!R96%D:6YG(&EM86=E(&1EH XM<V-R:7!T;W(N"@``+BXN+BXN6'!O<R!F<F]M("5L9"!T;R`E;&0L(%EP;W,@$ XM9G)O;2`E;&0@=&\@)6QD+"`E<VEN=&5R;&%C960N"@````!N;W0@```N+BXN! XM+BY,;V-A;"!C;VQO=7(@;6%P(&-O;G1A:6YS("5L9"!E;G1R:65S+@H`+BXN) XM+BXN17)R;W(@<F5A9&EN9R!L;V-A;"!C;VQO=7(@(R5L9"X*`"XN+BXN+D1E: XM8V]M<')E<W-I;F<@;&EN92!N=6UB97(@)35L9```"BXN+BXN+DDO3R!%<G)O" XM<B!D=7)I;F<@9&5C;VUP<F5S<VEO;BX*``HE<P`*+BXN+BXN0V]R<G5P="!'$ XM248@9FEL92`H3W5T0V]U;G0I"@";,C)$FTME9"X*```N+BXN+BY787)N:6YG? XM.B`@56YA;&EG;F5D('!A8VME="X*``";-40E-6QD`$Y5_^Q(YS\"*T#_['H`M XM<``0+(<(<@$D`>&B*`(L`6```*A*+(<.9@``A"`LAQ"PK(<49F(B+?_L+&R`> XM;$ZN_LXN`'#_OH!F%D'Z_RXB"$ZN_$QP`2E`AP0@+(<*8'(O!"(M_^Q![(<8N XM)`AV`2@'3J[^O"@?L(=G%$'Z_OXB"$ZN_$PI0X<$("R'"F!$*4>'%'``*4"') XM$'(!4JR'$$'LAQ@4,`@`&4&'#AE"O!D0+(<.$BR\&<(`2@%G`HJ&<@`2`-*!0 XMW(8908<.O(1F`/]6(`5,WT#\3EU.=4CG/2`N`'``$`=R`\'!0>R#_M'`,"R#< XM]#0LAO[00L#!,BR#]C8LAP`H`=A#>@`Z!.6%(FR`B-/%)%'5P!38%-@4V%)L+ XMAOXP+(/X,BR&_K)`9E9";(;^<`!![(!@,BR'`A`P$`!T`#0LAP#4@#`L@_HY2 XM0H<`M$!E%E)LAP)P`$'L@&4R+(<"$#`0`#E`AP!P`#`L@_9R`#(LAP#2@"\!6 XM2'K^@$ZZ)MA03TS?!+Q.=0``3E7_Z$CG/S(N`"('+&R`;$ZN_LXL`'#_O(!F= XM$$'Z`7`B"$ZN_$QP`6```5P@!@2`````_F8``/A!^@&((@@L;(!L3J[\3'`04 XM3KKWL"M`_^AF%$'Z`;PB""QL@&Q.KOQ,<`%@``$BE<I\`"('+&R`;$ZN_LXJ3 XM`'#_NH!F$$'Z`<(B"$ZN_$QP`6```/Q*A6<``(`O!"('0>R\*"0(=@$H!4ZN' XM_KPH'["%9Q!!^@&4(@A.KOQ,<`%@``#.)DHH!MR%(`9.NO<V)$`@"F840?H!H XM0B((+&R`;$ZN_$QP`6```*A*A&<4($LB2B`$+&R`<$ZN_9`@2TZZ]TP@2M'$W XM(DA![+PH(`4L;(!P3J[]D&``_UP@;?_H(4H`""%&``PB2$'LO!PL;(!P3J[_X XM"G``8%@O!DAZ`39.NB664$\B!RQL@&Q.KO[.+`!P_[R`9@Y!^@%6(@A.KOQ," XM<`%@+$J&9@1P`&`D+P0B!T'LO"@D"'8!*`9.KOZ\*!^PAF?`0?H!*"((3J[\) XM3'`!3-],_$Y=3G4N+BY)+T\@97)R;W(@<F5A9&EN9R!E>'1E;G-I;VX@8FQO- XM8VL@9G5N8W1I;VX@8V]D90H`+BXN0V]M;65N="!E>'1E;G-I;VX@96YC;W5N; XM=&5R960N("!#;VYT96YT<R!W:6QL(&)E('-T;W)E9"!I;B!A;B!!3DY/(&-H= XM=6YK+@H`+BXN+BXN3W5T(&]F(&UE;6]R>2!A;&QO8V%T:6YG(&-O;6UE;G0@Q XM8FQO8VLN"@``+BXN+BXN22]/($5R<F]R(')E861I;F<@8V]M;65N="!B;&]C5 XM:RX*`"XN+D5X=&5N<VEO;B!B;&]C:R!F=6YC=&EO;B!C;V1E(",E;&0@;F]T_ XM(&MN;W<L('-K:7!P:6YG+@H``"XN+DDO3R!%<G)O<B!S:VEP<&EN9R!U;FMND XM;W=N(&5X=&5N<VEO;B!B;&]C:RX*`$Y5_W1(YS\R)D@K0/]Z0?H*%"((+&R`7 XM;$ZN_$PL;(`43J[_XB1`(`IF%$'Z"@XB""QL@&Q.KOQ,<`%@``G@(@LD/```- XM`^XL;(!L3J[_XB2`9APL;(!L3J[_?"\++P!(>@H`3KHCE$_O``Q@``F,($HL\ XM;(`43J[_%B!*<`%.KO_<2H!G$D'Z"@`B""QL@&Q.KOQ,8``)9"!*(#Q)3$)-T XM(CQ&3U)-=/\L;(`43J[_K$J`9Q)!^@G2(@@L;(!L3J[\3&``"38@2G``(CQ![ XM3DY/+&R`%$ZN_ZQ*@&<20?H)JB((+&R`;$ZN_$Q@``D.+SD``#^0+SD``#^," XM2'H)JDAM_\).NB,B3^\`$$'M_\(B2$H99OQ3B9/((`D@2D/M_\(L;(`43J[_& XMOD'M_\(B2$H99OQ3B9/(L(EG$D'Z"4PB""QL@&Q.KOQ,8``(L$'M_Y`B""QL> XM@&Q.KO]`<``;0/^<&T#_G9'(*TC_GD/M_W\K2?^B*TC_IG`0(@A![?]_$,%1` XMR/_\0>W_D"((+&R`;$ZN_1A![?]_(DA*&6;\4XF3R"`)4H`O0``D($I#[?]_W XM+&R`%$ZN_[ZPKP`D9Q)!^@C*(@@L;(!L3J[\3&``""X@2BQL@!1.KO^F2H!G> XM$D'Z"*HB""QL@&Q.KOQ,8``(#D(M_ZE@``#$($IP`"(\04Y.3W3_+&R`%$ZNA XM_ZQ*@&<20?H(>"((+&R`;$ZN_$Q@``?<<!,@2D/Z"*0L;(`43J[_OG(3L(%GV XM$D'Z"%`B""QL@&Q.KOQ,8``'M"!*(FL`""`K``PL;(`43J[_OK"K``QG$D'Z( XM""8B""QL@&Q.KOQ,8``'BB!*0^W_J7`!+&R`%$ZN_[Y3@&<20?H(`"((+&R`Z XM;$ZN_$Q@``=D($HL;(`43J[_IDJ`9Q)!^@?@(@@L;(!L3J[\3&``!T1![+P<Y XM+&R`<$ZN_OXF0"`+9@#_+"!*<``B/$)-2$1T%"QL@!1.KO^L2H!G$D'Z!Z(B9 XM""QL@&Q.KOQ,8``'!C`L@(`(````9PAR`#(`4H%@!'(`,@`[0?^J,"R`@@@`: XM``!G"'(`,@!2@6`$<@`R`#M!_ZQP`#M`_[`[0/^N2FW_?&<$<AA@`G(&&T'_S XMLG(`&T'_LQM\``'_M!M!_[4[0/^V,"R]+&8"=`H;0O^X2D!G!'(+8`)R"QM!I XM_[D[?`%`_[I*0&<((#P```&08`1P9-"`.T#_O"!*0^W_JG`4+&R`%$ZN_[YRK XM%+"!9Q)!^@;D(@@L;(!L3J[\3&``!D@@2BQL@!1.KO^F2H!G$D'Z!L0B""QL$ XM@&Q.KOQ,8``&*"!*<``B/$-!34=T!"QL@!1.KO^L2H!G$D'Z!IHB""QL@&Q.S XMKOQ,8``%_DIM_WQG!'``8`8@/```"``N`$ILO2QF`G0`(`>`@BM`_Z8@2D/ML XM_Z9P!"QL@!1.KO^^68!G$D'Z!E(B""QL@&Q.KOQ,8``%MB!*+&R`%$ZN_Z9*Q XM@&<20?H&,B((+&R`;$ZN_$Q@``662FW_?&8``:X@2G``(CQ#34%0=#`L;(`4) XM3J[_K$J`9Q)!^@8`(@@L;(!L3J[\3&``!61^`&!8(&S/F-'',!!R`#(`Z(%TH XM>-2"PH(;0?^_<@`R`,*"&T'_P'(`,@!P#\*`Z8$;0?_!($I#[?^_<`,L;(`41 XM3J[_OE>`9Q)!^@6F(@@L;(!L3J[\3&``!0I4AW`@OH!MHB!*+&R`%$ZN_Z9*) XM@&<20?H%?B((+&R`;$ZN_$Q@``3B2FR]+&<2<``P+(""(@!*@6H"4H'B@6`(, XM<``P+(""(@#I@=*!+@$@2G``(CQ32$%-=/\L;(`43J[_K$J`9Q)!^@4N(@@L* XM;(!L3J[\3&``!))";?^H($I#[?^H<`(L;(`43J[_OE6`9Q)!^@4$(@@L;(!L` XM3J[\3&``!&@@2B)LSY@@!RQL@!1.KO^^L(=G$D'Z!-XB""QL@&Q.KOQ,8``$> XM0C`L@(((````9S9P'W(`0>W_BA#!4<C__"!*0^W_BG`@+&R`%$ZN_[YR(+"!] XM9Q)!^@2>(@@L;(!L3J[\3&``!`(@2BQL@!1.KO^F2H!G$D'Z!'XB""QL@&Q.A XMKOQ,8``#XB!*<``B/$)/1%ET_RQL@!1.KO^L2H!G$D'Z!%0B""QL@&Q.KOQ,O XM8``#N$'Z!)@B""QL@&Q.KOQ,<``P+?^J7H!R"$ZZ(+@[0/^B"````&<$4FW_? XMHD)M_Z9@``,:<``P+?^F+P!(>@1L3KH==E!/<``B/```$``L;(!P3J[^S@@`V XM``QG,B\L@`Q(>@1.3KH=4B!*+&R`%$ZN_]`B$BQL@&Q.KO_<($HL;(`43J[_8 XMRG`!3KKF.%!/,"R`@C(M_Z:R0&<``.!^`'P`8```QGH`&WP`@/^D0FW_J&``E XM`*0P+?^HP/P``W(`,BW_IN6!(&R`B-'!(E#3P"9)2FW_?&<,<``0,W@`.T#_G XMZF`$.U/_ZAM\``'_I7@`(`;E@$'LO2[1P"9(8"AP`!`M_Z5R`#(M_^K"@&<*A XM(%/1Q1(M_Z2#$'(`$@#2@5*$6(L;0?^E2FW_?&<$<`A@`G`&N(!MR'`!L"W_U XMI&8*<(!2A1M`_Z1@#'``$"W_I.*`&T#_I%)M_Z@P+("`,BW_J+)`90#_4E*'^ XM4(9*;?]\9P1P`V`"<`&^@&T`_RQ\`$?LO2Y@``&J(%,0$!E`O8YR`$*LOHY^5 XM`3M\``'_G!M`_YX[0?^:.T'_H&```00P+?^<(@!202!3T<=2AQ00=@`V`$'LO XMO8X1@C@`.T'_G!M"_Y\P+?^@2D!G"E-`9P``@F```,@P+?^<#$``@&,D<@`RR XM`%.!(`%A``+4$"W_GQE`O8YR`70`.T'_G#M"_YI@``":$"W_G[`M_YYF.'``< XM,"W_FG(`,BW_G)*`=`.R@FT8<@"P06,*<@`R`"`!80`"CG`!.T#_H&!B2D!FG XM7G`!.T#_H&!6,"W_G%-`.T#_FF!*<``P+?^:<@`R+?^<DH`J`1`M_YX2+?^?N XML@!F"')`TH&Z@6\F(@53@4B`2,#!06$``GH0+?^?&4"]CCM\``'_G'``.T#_; XMH#M`_YH;;?^?_YYP`#`M_Z*^@&T`_O0P+?^@2D!G!E-`9PY@*'``,"W_G&$`. XM`?I@''``,"W_FG(`,BW_G)*`$"W_GDB`2,#!06$``AH@2B)LO2@@++Z.+&R`1 XM%$ZN_[ZPK+Z.9Q)!^@$^(@@L;(!L3J[\3&```*)P`#`M_Z)R`"!;8`(0P5.`] XM9/I2ADIM_WQG!'`88`)P!KR`;0#^2$AZ`71.NAIT6$]2;?^F,"R`@@@```!G' XM"'(`,@!2@6`$<@`R`'``,"W_IK"!;0#\R"!*+&R`%$ZN_Z9*@&<00?H`R"((` XM+&R`;$ZN_$Q@+"!*+&R`%$ZN_Z9*@&<00?H`JB((+&R`;$ZN_$Q@#D'Z`0PB[ XM""QL@&Q.KOQ,($HL;(`43J[_T"`29PHB`"QL@&Q.KO_<($HL;(`43J[_RG`!= XM3-],_$Y=3G4N+BY7<FET:6YG($E&1B!F:6QE+@``"BXN+BXN+D5R<F]R(&%L' XM;&]C871I;F<@249&(&AA;F1L92X*```*+BXN+BXN17)R;W(@)6QD('1R>6EN= XM9R!T;R!C<F5A=&4@)7,N``HN+BXN+BY%<G)O<B!W<FET:6YG('1O($E&1BX*@ XM`%=R:71T96X@8GD@1TE&36%C:&EN92!V)6QD+B5L9"!O;B```$=)1B!#;VUM@ XM96YT($)L;V-K.B``"BXN+BXN+DQI;F4@```E-6QD```*)7,`FS5$`)LU1)M+, XM5W)I='1E;BX*``!(YP,`+@`@;+THT>R^CE*LOHX@!U.`$(!\`&`8(&R]*-'LU XMOHY2K+Z.0^R]CA`Q:``0@%*&O(=MY$S?`,!.=4CG`P`N`"P!("R^CB!LO2@B; XM2-/`<@&2AQ*!5*R^CB!LO2C1P"`&$4```4S?`,!.=0``3E7__$CG`P)!^@#(# XM(@@L;(!L3J[\3$)LOI0P/`__<@!![`_,$,%1R/_\?`!@``"`<``P!B\`2'H`^ XMQDZZ&$103W``(CP``!``+&R`<$ZN_LX(```,9Q0O+(`,2'H`J$ZZ&"!P`4ZZ0 XMX2103WX`8"AP`#`&Y8`@;("(T<`@!\#\``,B4-/`+TD`#"!)80`$RB!O``PPL XM@%)',"R`@+Y`9=!!^@!H(@@L;(!L3J[\3%)&,"R`@KQ`90#_>G``,"R^E"\`: XM2'H`2DZZ%[I,[4#`__!.74YU+BXN4F5D=6-I;F<@<&%L971T92!T;R`Q,B!B- XM:71S+@HN+BXN+BY,:6YE(``E-6QD```*)7,`FS5$`)LU1"5L9"!T;W1A;"!U& XM;FEQ=64@8V]L;W5R<R!U<V5D+@H``"XN+D1I=&AE<FEN9R!P86QE='1E('1O, XM(#$R(&)I=',N"BXN+BXN+E-E='5P``";-41,:6YE(```3E7_R$CG/S)!^O^^P XM(@@L;(!L3J[\3$)LOI0P/`__<@!#"`4FW_YC`L@(`R+?_FQ XMLD!ETCM\``'_Y&!0<``P+?_DY8`@;("(T<`B4"]``"0O20`H($EA``-@(&\`/ XM*#"`("\`)"!L@(C1P#`L@(#`_``#(E#3P%>)+TD`)"!)80`#."!O`"0P@%)MS XM_^0P+("",BW_Y+)`9:1!^O\F(@@L;(!L3J[\3#M\``'_Y&```N)P`#`M_^0O. XM`$AZ_J9.NA8D4$]P`"(\```0`"QL@'!.KO[."```#&<4+RR`#$AZ_HA.NA8`1 XM<`%.NM\$4$\[?``!_^9@``)L<``P+?_DY8`@;("(T<`D2#`M_^8B`,+\``,@1 XM4B)(T\$O00`D3>W_T1S9'-D<V7``,"W_YB)M_]0@42)(T\!T`#0`+%/=PG0`) XM-`#1PA0I``%(@DC")@+EBY:"%!!(@DC"(@+EB=*"%"G__TB"2,(@`N>(D((4M XM+O__2()(PM2`U('4@W``,"W_YB)M_]0@:0`$(DC3P'(`,@`L:P`$W<%R`#(`? XMT<$2*0`!2(%(P28!Y8N6@1(02(%(P2`!Y8C0@1(I__](@4C!*T+_X"0!YXJ4B XM@1(N__](@4C!TH+2@-*#<``P+?_F(FW_U"!I``@B2-/`=``T`"QK``C=PG0`( XM-`#1PA`I``%(@$C`)`#EBI2`$!!(@$C`)@#EB]:`$"G__TB`2,`K0?_<(@#GK XMB9*`$"[__TB`2,#0@="#T((B+?_@Z($N`2(M_]SH@2H!*T#_V.B`*`!P`!`M@ XM_]$B`-*'+`%R`$8!O(%O#'0`%`"4AQM"_]%@!B`&&T#_T7``$"W_TB0`U(4N9 XM`KZ!;PQT`!0`E(4;0O_28`8@!QM`_])P`!`M_],D`-2$+@*^@6\,<@`2`)*$# XM&T'_TV`&(`<;0/_3(%(O2``H0>W_T6$``/H@;P`H(B\`)-'!,(!P`!`M_]$B? XM`'1XU(+"@G8`%@"6@2X#<``0+?_2(@#"@G8`%@"6@2P#<``0+?_3(@#"@G0`I XM%`"4@2H"<`*^@&\*(@?EB9*'Y($N`;R`;PHB!N6)DH;D@2P!NH!O"B(%Y8F21 XMA>2!*@$@4W``,"W_YM'`(@<0@2!K``1R`#(`T<$B!A"!(&L`"'(`,@#1P2(%S XM$(%2;?_F<``P+("`4X!R`#(M_^:R@&T`_80@;?_4*TO_U"9(0?K[ZB((+&R`C XM;$ZN_$Q2;?_D,"R`@C(M_^2R0&4`_11P`#`LOI0O`$AZ^\9.NA,V3.U,_/^D? XM3EU.=4CG(1`F2'``$"L``NB`<@`2*P`!='C4@L*"=``4$^F"`H(```\`A(&$I XM@"X"<``P!T'L#\Q*,`@`9@Y![`_,$;P``0@`4FR^E"`'3-\(A$YU``!.5?_06 XM2.<_,D'Z!-XB""QL@&Q.KOQ,,"R`@#(L@()^`#]``"H_00`H8``$:`@'``!G\ XM#'``,"R`@"(`4X%@`G(`.T'_Y@@'``%G#'``,"R`@B0`4X)@`G0`POP``W``4 XM,`+E@"!L@(C1P")0T\%![?_;$-D0V1#9<``P+("`(BR`"$ZZ%5)R9$ZZ%6PLA XM`'``,"R`@B(L@`A.NA4\<F1.NA56*`!P`#M`_^([0/_D8```E$)M_^9^`&!20 XM,"W_YB(`POP``W0`-"W_Y.6"(&R`B-'"(E#3P29)$BW_VQ03M`%F&!(M_]P4! XM*P`!M`%F#!(M_]T4*P`"M`%G#E*'OH9O"'(!.T'_XF`04FW_YC`L@(`R+?_FQ XMLD!EHG``(CP``!``+&R`<$ZN_LX(```,9Q(B+(`,+&R`;$ZN_$QP`4ZZVJ92A XM;?_D,"R`@C(M_^2R0&0(2FW_XF<`_UQP`#`M_^13@$)M_^(R+(""4T$O0``D" XM.T'_Y&```)1";?_F?@!@4C`M_^8B`,+\``-T`#0M_^3E@B!L@(C1PB)0T\$FN XM21(M_]L4$[0!9A@2+?_<%"L``;0!9@P2+?_=%"L``K0!9PY2A[Z&;PAR`3M!& XM_^)@$%)M_^8P+("`,BW_YK)`9:)P`"(\```0`"QL@'!.KO[."```#&<2(BR`7 XM#"QL@&Q.KOQ,<`%.NMGB4VW_Y`QM``#_Y&,(2FW_XF<`_V!P`#`M_^20KP`DC XM*@!4A7``.T#_XCM`_^9@``"20FW_Y'X`8%`P+?_FP/P``W(`,BW_Y.6!(&R`( XMB-'!(E#3P"9)$"W_VQ(3L@!F&!`M_]P2*P`!L@!F#!`M_]T2*P`"L@!G#E*', XMOH1O"'`!.T#_XF`04FW_Y#`L@((R+?_DLD!EI'``(CP``!``+&R`<$ZN_LX(I XM```,9Q(B+(`,+&R`;$ZN_$QP`4ZZV292;?_F,"R`@#(M_^:R0&0(2FW_XF<`` XM_UYP`#`M_^8L`%.&0FW_XC`L@(!30#M`_^9@``"20FW_Y'X`8%`P+?_FP/P`C XM`W(`,BW_Y.6!(&R`B-'!(E#3P"9)$"W_VQ(3L@!F&!`M_]P2*P`!L@!F#!`M: XM_]T2*P`"L@!G#E*'OH1O"'`!.T#_XF`04FW_Y#`L@((R+?_DLD!EI'``(CP`< XM`!``+&R`<$ZN_LX(```,9Q(B+(`,+&R`;$ZN_$QP`4ZZV&93;?_F#&T``/_F) XM8PA*;?_B9P#_8G``,"W_YI"&+@!4AW``,"R`@+"'9@QP`#`L@(*PA6<``-IP% XM!;Z`;02Z@&P20?H!/B((+&R`;$ZN_$Q@``$20FW_Y"@O`"1@``":0FW_YG``6 XM,"W_Y.6`(&R`B-'`)DA@,G``,"W_YB(&TH`D`>6*E(%R`#(M_^0F!-:!Y8,@< XM;("(T<,B4-/"($H0V1#9$-E2;?_F,"W_YB(`POP``R!3T<$D2'(`,@"RAVVVN XM<``50``"%4```12`<``B/```$``L;(!P3J[^S@@```QG$B(L@`PL;(!L3J[\" XM3'`!3KK7=%)M_^1P`#`M_^2PA6T`_UX@!SE`@(`@!3E`@((N+?_>4H<K1__>! XM<`2^@&T`^Y`P+P`J,BR`@+)`9@PP+P`H-"R`@K1`9RH(`0``9P@@`5)`.4"`' XM@'``,"R`@'(`,BR`@B\!+P!(>@!D3KH-_D_O``Q,WTS\3EU.=2XN+E)E;6]VT XM:6YG(&)O<F1E<BX*```N+BXN+BY4;V\@;75C:"!O9B!P:6-T=7)E('=O=6QD# XM(&)E(')E;6]V960N("!.;W0@;6]D:69I960N"@`N+BXN+BY.97<@=VED=&@@/ XM/2`E;&0L($YE=R!H96EG:'0@/2`E;&0*``!.5?_82.<_$C`L@(#B2#M`_^0(# XM````9P12;?_D<``P+?_D+P!(>@(B3KH-2E!/0FW_[F```>IP`#`M_^XO`$AZB XM`C).N@TP4$]X`'H`?@`^+?_NY8=@``%B.WP`!/_L(`1R`\#!(%,B2-/`<``0_ XM$>6`.T#_YG0`%"D``>6".T+_Z'8`%BD``N6#.T/_ZG8!N$-C4'8&.T/_["8$- XMQL$@4R)(T\-R`!(I__W2@70`-`#4@3M"_^8@4R)(T\-P`!`I__[0@'(`,BW_. XMZ-*`.T'_Z'``$"G__]"`=@`V+?_JUH`[0__J<``P+("`<@`R!%*!LH!L3%1M% XM_^P@!,#\``,@4R)(T\!P`!`I``/0@'(`,BW_YM*`.T'_YG``$"D`!-"`=``T( XM+?_HU(`[0O_H<``0*0`%T(!V`#8M_^K6@#M#_^H@4]'&<``P+?_L<@`R`$J!Z XM:@)2@>*!=``T+?_FU($O0``D(`(O00`H(B\`)$ZZ#R00@'``,"W_['(`,BW_& XMZ"0O`"C2@B]``"0@`2(O`"1.N@\"$4```7``,"W_['(`,BW_ZM*"+T``)"`!% XM(B\`)$ZZ#N(10``"4D541"!L@(C1QR9((`7`_``#+``P+("`N$!E`/Z((%/1< XMQG``$4```A%```$0@'``(CP``!``+&R`<$ZN_LX(```,9Q0O+(`,2'H`>DZZ3 XM"W)P`4ZZU'903T'Z`&XB""QL@&Q.KOQ,4FW_[C`L@((R+?_NLD!E`/X,0?H`L XM4B((+&R`;$ZN_$PY;?_D@(!,WTC\3EU.=2XN+D-O;7!R97-S:6YG('=I9'1H^ XM('1O("5L9"X*+BXN+BXN3&EN92```"4U;&0```HE<P";-40`FS5$0V]M<')EF XM<W-E9"X*`$Y5__1(YR<R2'H`_DAZ`.Q(>@#(3KH*SD_O``QZ`&```)IP`#`%` XM+P!(>@#D3KH*ME!/?@`P+("`+`!31F`^(`=R`\#!=``T!>6"(&R`B-'"(E`@C XM2='`)$A'[?_W+$L<VAS:'-H@!L#!T\`D21#:$-H0VA+;$ML2VU)'4T:^1F6^. XM<``B/```$``L;(!P3J[^S@@```QG%"\L@`Q(>@!X3KH*1'`!3KK32%!/0?H`B XM;"((+&R`;$ZN_$Q213`L@(*Z0&4`_V!(>@!H2'H`4DZZ"A9,[4SD_]A.74YUE XM+BXN1FQI<'!I;F<@:6UA9V4@)7,N"BXN+BXN+B5S(`!H;W)I>F]N=&%L;'D`1 XM`$QI;F4``"4U;&0```HE<P";-40`FR5S1$9L:7!P960N("`@(`H`-0!V97)T1 XM:6-A;&QY``!#;VQU;6X``#<`3E7_]$CG!S)(>O_L2'K_W$AZ_X).N@F(3^\`% XM#'H`8```I'``,`4O`$AZ_YY.N@EP4$]^`#`L@((L`%-&8$@@!<#\``-R`#('U XMY8$@;("((DC3P211U<`B2D?M__<L2QS9'-D<V7(`,@;E@2!L@(C1P2)0T\`@) XM2138%-@4V!+;$ML2VU)'4T:^1F6T<``B/```$``L;(!P3J[^S@@```QG%"\L[ XM@`Q(>O\H3KH(]'`!3KK1^%!/0?K_'"((+&R`;$ZN_$Q213`L@("Z0&4`_U9(1 XM>O\N2'K_`DZZ",9,[4S@_]Q.74YU``!.5?_L2.<W,GX`1^R^F&`@?`!@$"`'N XMD(8B`$ZZ"Y@7@&@`4H9P$+R`;>I2A];\`!!P$+Z`;=I^`$?LOYA@``"8?``DM XM2V```()Z`&!P(`4L;(`03J[_W"0\/[TO&B8\G[YVR$ZN_[)([P`#`"0@!DZNJ XM_]PD/#_BR+0F/#E8$&).KO^R2.\``P`L(`=.KO_<)#P_TR+0)CSE8$&)3J[_> XMLDSO``P`+$ZN_[Y,[P`,`"1.KO^^3J[_XA6`6`!2A7`0NH!MBE*&U/P`$'`0, XMO(!M`/]Z4H?6_`$`<!"^@&T`_V1,WTSL3EU.=4Y5_^Q(YS\@+@`L`1HM``MPF XM`!`M`!=R`!(%)`%(PNF"0>R^F")(T\+2P'(`$A%T`!0M`!-V`!8&*`-(Q.F$> XM(DC3Q-+"=@`6$70`%"T`#W``$`<O00`<(@!(P>F!(DC3P=+"<``0$7(`$BT`R XM%S]!`"!R`!(M`!,D`4C"Z8)R`!(M``\O0P`F)@%(P^�^R_F"1)U</5PC(O& XM`"#4P7(`$A)T`!0%=@`6!R]``"H@`TC`X8#3P-/$TL)P`!`1)`!(PNF"T<+0; XMP7``$!`B+P`JT($B+P`FT($B+P`<T(%,WP3\3EU.=0``3E7_J$CG/Q)(>@8LZ XM3KH&WEA/<`!R`!E!SYX90<^=&4'/G$)M_^0K0/_**T#_X&``!6A*;+TL9RYP( XM`#`L@()3@'(`,BW_Y+*`9QQP`#`!=``T`5*"+P(O`$AZ!@9.N@:.3^\`#&`2^ XM<``P+?_D+P!(>@7\3KH&>%!/<``B/```$``L;(!P3J[^S@@```QG%"\L@`Q(S XM>@7>3KH&5'`!3KK/6%!/,#P__W(`0>P?S!#!4<C__"X!+`%@4D)M_^I@/C`MX XM_^HB`,+\``-T`#0M_^34A^6"(&R`B-'"(E#3P7(`,A'E@4'L'\PD,!@`0>P?> XMS%*P&`!*@F8"4H92;?_J,"R`@#(M_^JR0&6V4H=*;+TL9Q9P`#`L@()3@'(`3 XM,BW_Y+*`9P1P`F`"<`&^@&V,+P9(>@5&3KH%N%!/,#P/_W(`0>P/S!#!4<C_> XM_"X!+`%@9$'L'\Q*L&@`9U8@!^"`<@`2`"`'Z(!T#\""=@`6`"`'P()T`!0`O XM<``0+,^<+T``+'``$"S/G2]``#!P`!`LSYXO`"\O`#0O+P`T+P(@`2(#3KK]1 XM>D_O`!!![,_,(8!H`%*'6(8,AP``$`!ME'@!?@-@``$"?@!Z`'P`8"9![!_,C XMT<8F2"`39Q9![,_,(C!H`$ZZ"`BPA64&*T?_W"H`4H=8A@R'```0`&W2*BW_5 XMQB`M_]PB`.")0>S/G!&!6``B`.B)=`_"@D'LSYP1@5@!P()![,^<$8!8`GX`; XM?`!@``"&0>P?S$JP:`!G=BHM_\8@!^"`<@`2`"`'Z(!T#\""=@`6`"`'P()T= XM`!0`<`!![,^<$#!8`"]``#1P`$'LSYP0,%@!+T``.'``0>S/G!`P6`(O`"\O. XM`#PO+P`\+P(@`2(#3KK\BD_O`!!![,_,T<8F2+"39`PF@"`$0>P/S!&`>`!26 XMAUB&#(<``!``;0#_=%*$+@56ARM'_\9P$+B`;0#^]D?LSYQ@*B`M_\H@;,^8/ XMT<!R`!(K``)T`!0K``'I@G8`%A/A@X:"AH$P@U2M_\I6BT'LS\RWR&7.?@!@I XM``(.&VS/G/_;&VS/G?_:&VS/GO_90FW_ZGP`8``!WG``,"W_Y-"'Y8`J`"!LI XM@(C1Q3`M_^K`_``#*``B4-/$<``P$2(`X(%T`#0`Z()V#\2#=@`V`'`/QH!P' XM`#`1Y8!![,_,+C`(`'``,!$O0``H<`!![`_,'T,`)"8O`"@0,#@`=@`6`2M`' XM_]QP`!`"'T$`)A(O`"0?0@`E=``4`7(`$BW_VB]!`#1R`!(M_]DO`2\O`#@O# XM`R\"(@/!04ZZ^U1/[P`0L(=D""X`<!`K0/_<$"\`)G(`$@`0+P`E=``4`'8`B XM%B\`)"]#`#!V`!8M_]LO0P`T=@`6`'``$"W_V2\`+P,O+P`\+R\`/"`!(@).] XMNOL"3^\`$+"'9`@N`'`1*T#_W'``$"\`)G(`$B\`)70`%"\`)'8`%BW_VR]`G XM`"AP`!`M_]HO0``X<``0`B\`+R\`/"\#+P(@+P`X3KKZMD_O`!"PAV0(+@!P1 XM$BM`_]P@;("(T<4B4-/$)DDJ+?_<<!"Z@&0J(@4V@2(%Y8F2A4'LSYP;<!@`Y XM_]M![,^<&W`8`?_:0>S/G!MP&`+_V6!$NH!F%'(`$B\`)B0!`$(`(#:"&T'_/ XMVV`L<A&Z@684<@`2+P`E)`$`0@`P-H(;0?_:8!)R`!(O`"0@`0!``!`V@!M!' XM_]G<AU)M_^HN+?_F,"R`@#(M_^JR0&4`_AC=K?_@4H<K1__F2FR]+&<6<``P) XM+(""4X!R`#(M_^2R@&<$<`)@`G`!OH!M`/W.2FR]+&<8<``P+(""4X!R`#(M= XM_^2R@&<&0?H!.F`$0?H!."\(2'H!)DZZ`8)03TILO2QG%G``,"R`@E.`<@`R[ XM+?_DLH!G!'`"8`)P`7(`,BW_Y-*`.T'_Y#`L@((R+?_DLD!E`/J.<``P+("`B XM<@`R+(""+T``("`M_^!.N@1^(CP```/H3KH$(B(O`"!.N@1L(CP```/H+T``O XM($ZZ!%XB+P`@+T``)"`!(CP```/H3KH$2B\!+R\`*$AZ`*)(;?_.3KH!%G``Y XM,"R`@B]``#`@+?_@(B\`,$ZZ!")(;?_.+P`O+?_@2'H`@$ZZ`,),[4C\_XA.B XM74YU+BXN0V]N=F5R=&EN9R!T;R!32$%-(&9O<FUA="X*+BXN+BXN3&EN90``2 XM<R`E-6QD+24U;&0`("4U;&0`"B5S`"P@)31L9"!U;FEQ=64@8V]L;W5R<P";N XM)7-$FTL``#,T```R-P``)6QD+B4P,VQD`)LT1%1O=&%L(&-O;&]U<B!E<G)OP XM<B`]("5L9"P@365A;B!P97(@;&EN92`]("5L9"P@4&5R('!I>&5L(#T@)7,N* XM"@````!.50``2.<@`B(M``A![0`,)`@L;(!L3J[\1DZN_\0B`$ZN_IA,WT`$? XM3EU.=4Y5``!(YP`R)FT`""\+(&T`#$/M`!!%^@`4+'@`!$ZN_?8F7TS?3`!.4 XM74YU+P<N`$'K``$6AR9(+A].=25S('8E<PI#;W!Y<FEG:'0@J2`Q.3DP(&)Y, XM()LT.S,S.S0R;4-H<FES=&]P:&5R($$N(%=I8VAU<F&;,#LS,SLT,&T@*)LSY XM,FUC87>;,S-M0)LS,FUM:7)O8RYC:&DN:6PN=7.;,S-M*0H*57-A9V4Z("`@$ XM("`E<R`\FS,Q;4=)1F9I;&5S*',IFS,R;3X@6YLS,VU43R";,S%M1&ER96-TK XM;W)Y('P@1FEL99LS,FU=(%N;,S-M04Q,FS,R;5T*("`@("`@("`@("`@("`@6 XM("`@("`@(%N;,S-M3D]"3U)$15(@FS,R;3R;,S%M3&EN92!4:')E<VB;,S)M\ XM/ET@6YLS,VU80T]-4)LS,FU=(%N;,S-M1$E42$52FS,R;5T*("`@("`@("`@R XM("`@("`@("`@("`@(%N;,S-M6$9,25";,S)M72!;FS,S;5E&3$E0FS,R;5T@- XM6YLS,VU$1450FS,R;5T@6YLS,VU"549325I%()LS,FT\FS,Q;5-I>F4@:6X@9 XM2T)Y=&5SFS,R;3Y="ILS,6T``````@```'0R+C$Q-B`H,34@1F5B(#DQ*0``, XM`""(6)!"J``$(4@`"$YU```,``!A;0H,``!Z;@0$```@3G4``$Y5__Q(YP,PU XM)D@D22X`2H=G,DH39RY*$F<J<``0&TZZ_\QR`!(:+T``$"`!3KK_OB(O`!"2V XM@"P!2H9G!"`&8!I3AV#*2H=G$$H39P1P`6`*2A)G!'#_8`)P`$S?#,!.74YUD XM``!(YP,P)D@D22X`2H=G($H39QQ*$F<8<``0&W(`$AJ0@2P`2H9G!"`&8!I3B XMAV#<2H=G$$H39P1P`6`*2A)G!'#_8`)P`$S?#,!.=0``(`A*&&;\4X@0V6;\" XM3G4``$CG,``D`"8!2$)(0\3!QL#`P=1#2$)"0M""3-\`#$YU2H!J```>1(!*? XM@6H```Q$@6$``"!$@4YU80``&$2`1(%.=4J!:@``#$2!80``!D2`3G4O`DA!X XM-`%F```B2$!(04A"-`!G```&A,$P`DA`-`"$P3`"2$(R`B0?3G4O`W80#$$`L XM@&0```;AF5%##$$(`&0```;IF5E##$$@`&0```;EF55#2D%K```&XYE30S0`$ XMYJA(0D)"YJI(0X#!-@`P`C0#2$'$P9""9```"%-#T(%D_G(`,@-(0^>X2$#!& XM028?)!].=0```^P````'````````&HP``!J&```"6@```A@```)B```"!@``J XM`0(````!`````0```'P````````#\@```^H````@````````"``````````#. XM.@``````````````````#\H`"0`!__\````)``X````<```/U@````#__P``Q XM`!T`!````!P```_H````)/__````!``$````'```#_8``````0@(!`(```0"< XM`0``````!````%0```!(````0````"P```/L````!0````````!8````1```= X>`#`````<````#`````````/R```#Z@````````/RO X`` Xend Xsize 17040 END_OF_FILE if test 23896 -ne `wc -c <'GIFMachine.uu'`; then echo shar: \"'GIFMachine.uu'\" unpacked with wrong size! fi # end of 'GIFMachine.uu' fi if test -f 'Sources/main.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Sources/main.c'\" else echo shar: Extracting \"'Sources/main.c'\" \(10893 characters\) sed "s/^X//" >'Sources/main.c' <<'END_OF_FILE' X/* Copyright 1990 by Christopher A. Wichura. X See file GIFMachine.doc for full description of rights. X*/ X X#include "GIFMachine.h" X#include <dos/rdargs.h> X#include <dos/dosasl.h> X#include <dos/stdio.h> X#include <workbench/startup.h> X Xstruct GIFdescriptor gdesc; X Xstruct RGB **BitPlane; Xstruct RGB GlobalColourTable[256]; X Xextern UWORD *SHAMmem; X Xextern BYTE *PlaneBuf; X Xextern BOOL Laced; X Xextern UBYTE *Planes[24]; X XULONG ImageNumber; X Xextern struct MinList CommentList; X X/* indicates which memory list to allocate from */ Xextern UWORD CurrentMem; X X/* the current GIF file handle */ XBPTR GIFfh = NULL; X X/* here we have some defines relating to our GADS call */ X#define ESC "\x9B" X#define GIFMACH ESC "33;42mGIFMachine" ESC "32;40m" X X#define ARG_TEMPLATE "GIFfiles/M/A,TO/K,ALL/S,NOBORDER/K/N,XCOMP/S,DITHER/S,XFLIP/s,YFLIP/s,DEEP/S,BUFSIZE/K/N" X#define ARG_FILES 0 X#define ARG_TO 1 X#define ARG_ALL 2 X#define ARG_NOBORD 3 X#define ARG_XCOMP 4 X#define ARG_DITHER 5 X#define ARG_FLIPX 6 X#define ARG_FLIPY 7 X#define ARG_DEEP 8 X#define ARG_BUFSIZ 9 X#define ARG_sizeof 10 X X/* we will make the argument array global so that other modules can get at X the ARG_TO, ARG_ALL and ARG_XCOMP fields easily */ Xstruct RDArgs *ArgsPtr; Xchar *ArgArray[ARG_sizeof]; XBOOL ArgToIsDir; X X/* size of the read buffered i/o space */ Xstatic ULONG BufSize = 2048; /* default size is 2k */ X Xint NoBorderLineThresh = 0; X X/* some mem pointers used when we do dithering */ XBYTE *CurrentLineErr[3]; XBYTE *LastLineErr[3]; X X/* this flag says if we scaled the image */ XBOOL DidXComp; X X/* we print this when the user hits the break key */ Xchar *AbortMsg = "*** User Interruption!\n"; X X/* storage for our library bases */ Xstruct Library *MathIeeeDoubBasBase = NULL; Xstruct Library *IFFParseBase = NULL; X X/* storage for our anchor when looking for pattern matches */ Xstruct Anchor { X struct AnchorPath APath; X char Path[256]; X } *anchor = NULL; X X/* here we have our main routine */ Xint __regargs main(char *cmdptr, int cmdlen, struct WBStartup *WBMsg) X{ X register char **FilesPtr; X struct RDArgs MyArgs; X extern UBYTE __far arg_help[]; X extern UBYTE __far VersionID[]; X X InitMemory(); X X if (WBMsg) { X WarnMustUseCLI(); X MyExit(5); X } X X if (!(MathIeeeDoubBasBase = OpenLibrary("mathieeedoubbas.library", 0))) { X MyPrintf("Unable to access %s!\n", "mathieeedoubbas.library"); X MyExit(5); X } X X if (!(IFFParseBase = OpenLibrary("iffparse.library", 0))) { X MyPrintf("Unable to access %s!\n", "iffparse.library"); X MyExit(5); X } X X memset ((char *)&MyArgs, 0, sizeof(struct RDArgs)); X X if (!(MyArgs.RDA_ExtHelp = (UBYTE *)MyAlloc(strlen(arg_help) + (2 * strlen(GIFMACH)) + strlen(VersionID) + 1))) { X PutStr("Out of memory!\n"); X MyExit(5); X } X X MySPrintf((char *)MyArgs.RDA_ExtHelp, arg_help, GIFMACH, VersionID, GIFMACH); X X if (!(ArgsPtr = ReadArgs(ARG_TEMPLATE, (LONG *)&ArgArray, &MyArgs))) { X PrintFault(IoErr(), NULL); X MyExit(5); X } X X MyFree((char *)MyArgs.RDA_ExtHelp); X X if (ArgArray[ARG_TO]) X ArgToIsDir = IsDir(ArgArray[ARG_TO]); X X if (ArgArray[ARG_NOBORD]) { X NoBorderLineThresh = *((LONG *)ArgArray[ARG_NOBORD]); X if (NoBorderLineThresh < 0 || NoBorderLineThresh > 100) { X PutStr("Invalid NOBORDER line threshhold specified.\n"); X MyExit(3); X } X } X X if (ArgArray[ARG_BUFSIZ]) X BufSize = *((LONG *)ArgArray[ARG_BUFSIZ]) * 1024; X X if (!(FilesPtr = (char **)ArgArray[ARG_FILES])) { X PutStr("No GIF files selected.\n"); X MyExit(3); X } X X InitDiff(); /* one time init for the RGBdiff function */ X X while (*FilesPtr) X DoPattern(*FilesPtr++); X X MyExit(0); X} X Xvoid MyExit(ULONG result) X{ X if (GIFfh) X Close(GIFfh); X X if (IFFParseBase) X CloseLibrary(IFFParseBase); X X if (MathIeeeDoubBasBase) X CloseLibrary(MathIeeeDoubBasBase); X X if (anchor) X MatchEnd(&anchor->APath); X X if (ArgsPtr) X FreeArgs(ArgsPtr); X X FreeAll(1); X FreeAll(0); X X XCEXIT(result); X} X X X/* this will walk through a pattern doing conversions */ Xvoid DoPattern(char *pat) X{ X register int error; X X if (!(anchor = (struct Anchor *)MyAlloc(sizeof(struct Anchor)))) { X PutStr("Out of memory!\n"); X MyExit(10); X } X X anchor->APath.ap_Strlen = sizeof(anchor->Path); X anchor->APath.ap_Flags = APF_DOWILD; X anchor->APath.ap_BreakBits = SIGBREAKF_CTRL_C; X X error = MatchFirst(pat, &anchor->APath); X X while (!error) { X if (anchor->APath.ap_Info.fib_DirEntryType > 0) { X if (ArgArray[ARG_ALL]) { X if (!(anchor->APath.ap_Flags & APF_DIDDIR)) X anchor->APath.ap_Flags |= APF_DODIR; X anchor->APath.ap_Flags &= ~APF_DIDDIR; X } X } else X Convert(anchor->APath.ap_Buf); X X error = MatchNext(&anchor->APath); X } X X MatchEnd(&anchor->APath); X MyFree((char *)anchor); X anchor = NULL; X X switch(error) { X case ERROR_BREAK: X PutStr(AbortMsg); X MyExit(ABORTEXITVAL); X break; X X case ERROR_OBJECT_NOT_FOUND: X PutStr("File not found.\n"); X break; X X case ERROR_BUFFER_OVERFLOW: X PutStr("Path too long!\n"); X break; X X case ERROR_NO_MORE_ENTRIES: /* normal termination */ X break; X X default: X MyPrintf("I/O Error #%ld!\n", error); X break; X } X} X X/* here we have the routine that gets ready to do the conversion */ Xvoid Convert(char *name) X{ X register int index; X char *basename; X char *ptr; X char sig[7]; X int size; X int error; X int colours; X LONG cmdcode; X X struct DateStamp StartTime, EndTime; X X CurrentMem++; X X if (!(GIFfh = Open(name, MODE_OLDFILE))) { X MyPrintf("Error #%ld trying to open %s...\n", IoErr(), name); X goto LeaveConvert; X } X X SetVBuf(GIFfh, BUF_FULL, BufSize); X X sig[6] = NULL; X X if (FRead(GIFfh, sig, 1, 6) != 6 || strncmp("GIF", sig, 3)) { X MyPrintf("%s is not a GIF file...\n", name); X goto LeaveConvert; X } X X MyPrintf("Converting %s ", name); X X basename = FilePart(name); X ptr = basename + strlen(basename) - 4; X X if (!strnicmp(".gif", ptr, 4)) X *ptr = NULL; X X size = strlen(basename) + 6; X X if (ArgArray[ARG_TO]) { X if (ArgToIsDir) X size += strlen(ArgArray[ARG_TO]) + 1; X else X size = strlen(ArgArray[ARG_TO]) + 1; X } X X if (!(ptr = MyAlloc(size))) { X PutStr("... Out of memory!\n"); X goto LeaveConvert; X } X X if (ArgArray[ARG_TO]) { X strcpy(ptr, ArgArray[ARG_TO]); X X if (ArgToIsDir) { X AddPart(ptr, basename, size); X strcat(ptr, (ArgArray[ARG_DEEP] ? ".deep" : ".sham")); X } X } else { X strcpy(ptr, basename); X strcat(ptr, (ArgArray[ARG_DEEP] ? ".deep" : ".sham")); X } X X MyPrintf("to %s...\n", ptr); X X DateStamp(&StartTime); X X if (FRead(GIFfh, (char *)&gdesc, 1, 7) != 7) { X PutStr("Error reading screen descriptor.\n"); X goto LeaveConvert; X } X X FlipWord(&gdesc.gd_Width); X FlipWord(&gdesc.gd_Height); X X MyPrintf("Signature = \"%s\", Width = %ld, Height = %ld\n", X sig, gdesc.gd_Width, gdesc.gd_Height); X X NewList((struct List *)&CommentList); X X DidXComp = 0; X colours = 1L << ((gdesc.gd_ColInfo & 7) + 1); X X if (!(gdesc.gd_ColInfo & 1L << 7)) { X PutStr("No global colour map supplied, using internal.\n"); X X for (index = 0; index < colours; index++) { X GlobalColourTable[index].rgb_Red = X GlobalColourTable[index].rgb_Green = X GlobalColourTable[index].rgb_Blue = index; X } X } else { X MyPrintf("Global colour map contains %ld entries.\n", colours); X X for (index = 0; index < colours; index++) { X if (FRead(GIFfh, &GlobalColourTable[index], 1, 3) != 3) { X MyPrintf("Error reading global colour #%ld.\n", X index); X goto LeaveConvert; X } X } X } X X size = ((gdesc.gd_Width + 7) / 8) + 1; X size += (size + 127) >> 7; X X if (!(BitPlane = (struct RGB **)MyAlloc(gdesc.gd_Height * sizeof(struct RGB *))) || X !(SHAMmem = (UWORD *)MyAlloc(gdesc.gd_Height * 16 * sizeof(UWORD))) || X !(PlaneBuf = (BYTE *)MyAlloc(size))) { X PutStr("Out of memory trying to allocate picture.\n"); X goto LeaveConvert; X } X X size = (gdesc.gd_Width + 1) * sizeof(struct RGB); X X for (index = 0; index < gdesc.gd_Height; index++) X if (!(BitPlane[index] = (struct RGB *)MyAlloc(size))) { X PutStr("Out of memory trying to allocate picture.\n"); X goto LeaveConvert; X } X X size = ((gdesc.gd_Width + 7) / 8) + 1; X for (index = 0; index < (ArgArray[ARG_DEEP] ? 24 : 6); index++) X if (!(Planes[index] = (UBYTE *)MyAlloc(size))) { X PutStr("Out of memory trying to allocate picture.\n"); X goto LeaveConvert; X } X X if (ArgArray[ARG_DITHER]) { X size = gdesc.gd_Width * sizeof(BYTE); X X for (index = 0; index < 3; index++) X if (!(CurrentLineErr[index] = (BYTE *)MyAlloc(size)) || X !(LastLineErr[index] = (BYTE *)MyAlloc(size))) { X PutStr("Out of memory trying to allocate picture.\n"); X goto LeaveConvert; X } X } X X ImageNumber = 1; X X /* at this point we start looking for images, extensions or the gif X terminator. we call the appropriate routine as we find each. */ X X for (error = FALSE; error == FALSE;) { X if ((cmdcode = FGetC(GIFfh)) == -1) { X PutStr("...I/O error reading GIF file.\n"); X goto LeaveConvert; X } X X switch(cmdcode) { X case GIF_IMAGE: X error = DoImage(GIFfh); X break; X X case GIF_EXTENSION: X error = DoExtension(GIFfh); X break; X X case GIF_TERMINATOR: X if (ArgArray[ARG_NOBORD]) X StripBorder(); X X if (ArgArray[ARG_FLIPX]) X DoXFlip(); X X if (ArgArray[ARG_FLIPY]) X DoYFlip(); X X if (ArgArray[ARG_XCOMP]) { X DoXComp(); X DidXComp = 1; X } X X if (gdesc.gd_Height > 200 && DidXComp) X Laced = TRUE; X else X Laced = FALSE; X X if (!ArgArray[ARG_DEEP]) { X if (ArgArray[ARG_DITHER]) X DitherTo12(); X else X ReduceTo12(); X X GIFtoSHAM(); X } X X error = WriteIFF(ptr, (BOOL)ArgArray[ARG_DEEP]); X break; X X default: X MyPrintf("...Unknown directive #%ld encountered.\n", X cmdcode); X error = TRUE; X } X } X X DateStamp(&EndTime); X X { X register ULONG Hours; X register ULONG Minutes; X register ULONG Seconds; X register ULONG Seconds2; X X Seconds = (EndTime.ds_Days * 86400) + (EndTime.ds_Minute * 60) + (EndTime.ds_Tick / TICKS_PER_SECOND); X Seconds2 = (StartTime.ds_Days * 86400) + (StartTime.ds_Minute * 60) + (StartTime.ds_Tick / TICKS_PER_SECOND); X X Seconds -= Seconds2; X X Hours = Seconds / 3600; X Seconds -= Hours * 3600; X X Minutes = Seconds / 60; X Seconds -= Minutes * 60; X X MyPrintf("...Conversion time was %ld hour%s, %ld minute%s and %ld second%s.\n", X Hours, (Hours != 1 ? "s" : ""), X Minutes, (Minutes != 1 ? "s" : ""), X Seconds, (Seconds != 1 ? "s" : "")); X } X XLeaveConvert: X FreeAll(CurrentMem--); X X if (GIFfh) { X Close(GIFfh); X GIFfh = NULL; X } X} X X/* this will check to see if we have a directory or not */ XBOOL IsDir(char *name) X{ X register BPTR lock; X register BOOL result = FALSE; X X struct FileInfoBlock __aligned fib; X X if (lock = Lock(name, ACCESS_READ)) { X if (Examine(lock, &fib)) { X if (fib.fib_DirEntryType > 0) X result = TRUE; X } X UnLock(lock); X } X X return result; X} X X/* this will convert a word from LSB/MSB to MSB/LSB */ Xvoid FlipWord(UWORD *word) X{ X register UBYTE swap1; X register UBYTE swap2; X X swap1 = *word & 0xFF; X swap2 = (*word & 0xFF00) >> 8; X *word = swap1 << 8 | swap2; X} END_OF_FILE if test 10893 -ne `wc -c <'Sources/main.c'`; then echo shar: \"'Sources/main.c'\" unpacked with wrong size! fi # end of 'Sources/main.c' fi echo shar: End of archive 2 \(of 2\). cp /dev/null ark2isdone MISSING="" for I in 1 2 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked both archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Mail submissions (sources or binaries) to <amiga@uunet.uu.net>. Mail comments to the moderator at <amiga-request@uunet.uu.net>. Post requests for sources, and general discussion to comp.sys.amiga.misc.