MFM1%LEHIGH.BITNET@ibm1.cc.lehigh.edu (mark masters) (09/14/89)
Well the local PBS finally had Computer dreams, and I must say that I was very very impressed. Now the question which I had after watching the show was HOW DO THEY SIMULATE THE WATER SURFACE???! Anyone have any Ideas, if you do let me know! mark <mfm1@lehigh.bitnet>
ckchee@dgp.toronto.edu (Chuan Chee) (09/14/89)
In article <23951@louie.udel.EDU> MFM1%LEHIGH.BITNET@ibm1.cc.lehigh.edu (mark masters) writes: > >Well the local PBS finally had Computer dreams, and I must say that I >was very very impressed. Now the question which I had after watching >the show was HOW DO THEY SIMULATE THE WATER SURFACE???! >Anyone have any Ideas, if you do let me know! >mark ><mfm1@lehigh.bitnet> It is typically done through a technique called "bump mapping". This is where the normals of the water surface are altered pseudo-randomly or procedurally (eg., based on the x-y coordinates). This way the water will reflect different parts of say, the sky/clouds giving the illusion of a 3-D texture. ...Chuan Chee ckchee@dgp.utoronto.ca (cdnnet) ckchee@dgp.toronto.edu (internet) ckchee@dgp.utoronto (bitnet)
ranjit@grad1.cis.upenn.edu (Ranjit Bhatnagar) (09/15/89)
In article <23951@louie.udel.EDU> MFM1%LEHIGH.BITNET@ibm1.cc.lehigh.edu (mark masters) writes: >Well the local PBS finally had Computer dreams, and I must say that I >was very very impressed. Now the question which I had after watching >the show was HOW DO THEY SIMULATE THE WATER SURFACE???! Take a look at the SIGGRAPH '87 proceedings. If my memory serves me, there's at least one article in there from Pixar on some very complex, great looking wave simulations. If you want a simpler technique (the tricks in the above article took tens of megabytes of storage!), try superimposing damped sine or nearly-sine waves. The results will look like ripples in a calm pool. I did this and got an art exhibit out of it! Try this, for instance: Warning to experts: this will be old hat. /* three wave sources: ripples radiate out from (x, y) with amplitude a, damping factor d, period (wavelength) p, and speed s. */ x1 = 20; y1 = 400; a1 = 10; d1 = .9; p1 = 20; x2 = -79; y2 = 220; a2 = 7; d2 = 0; p2 = 5; x3 = -200; y3 = -60; a3 = 12; d2 = 1.7; p3 = 16; for each point x, y on the water's surface whose height you want to know: r1 = distance(x,y, x1, y1) - t * s1; r2 = distance(x,y, x2, y2) - t * s2; r3 = distance(x,y, x3, y3) - t * s3; height = damp(d1, r1) * wave(r1/p1) + damp(d2, r2) * wave(r2/p2) + damp(d3, r3) * wave(r3/p3); The wave() function gives you the shape of the cross section of a single wave. A nice simple wave function is double wave(r1) { double r1; return(sin(r1)) } However, real ocean waves aren't pure smooth sines. You could try sin squared to make waves with pointy troughs, or use table lookups and draw your own wave shapes. Try superimposing a big fat wave (large a and p) with a little tiny wave (small a and p) with the same center (x, y) to get big round but wrinkly waves. The wave function you choose should REPEAT; you may have to use a modulo function or something to get that effect, so that no matter how large r1 is, it gives a valid result. The damp() function specifies how the waves die out as they get farther from the center. You could try double damp(d, r) { double d, r; return( exp(-r*d) ) } for instance... or, as with the wave function, you can use a table lookup and draw your own damping function into the table. Like the wave function, whatever you use must be able to accept arbitrary large r's, though in this case you DON'T want the function to repeat; it should just die out. The time parameter t can be used to animate the waves. If you specify the speed for each wave source, then you can increase t as you generate successive frames of the animation, and the waves will ripple out from their centers. Or decrease t, and the waves will move backwards. You may want to add phase offsets to the distance calculations for each wave so that all the sources don't hit 0 at the same time. Want big, nearly straight waves instead of circles? Put your wave source really really far away, with no damping. (If you use the exponential damping function above, then d=0 means no damping.) But, you ask, how do I make a picture out of this? Funny you should ask. One: make a color-graph out of it: for i = 1 to 640 for j = 1 to 400 set pen color to height(i, j) mod 16 plot pixel(i, j) If you choose a nice set of waves and a good color map, you can get very nice pictures out of it. (That's where my art exhibit came from.) I posted a program called, naturally, WAVES to this newsgroup a year or two ago which did generated random color-graphs of exactly this type. Two: draw a 3-d graph in projection. There are many possibilities. If you know how, you can use hidden-line removal, z-buffering, shadows, even write a ray tracer around the waves program. Three: send the output to a commercial or PD ray tracer. Easy enough! For instance, here's approximately how to do it for QRT and for Sculpt-3D: (I don't have the documents for either, so I'm faking it.) double grid[20][20] /* define a 20x20 grid to wavify */ for i = 1 to 20 for j = 1 to 20 x = i * iscale + ioffset; /* scale coordinates */ y = j * jscale + joffset; grid[i][j] = height(x, y); /* filling in the grid array is optional, but it saves calling the height function twice on the same point */ for i = 2 to 20 for j = 2 to 20 /* find the four corners of the current grid square */ x1 = (i-1) * iscale + ioffset; /* scale coordinates */ y1 = (j-1) * jscale + joffset; x2 = i * iscale + ioffset; /* scale coordinates */ y2 = (j-1) * jscale + joffset; x3 = i * iscale + ioffset; /* scale coordinates */ y3 = j * jscale + joffset; x4 = (i-1) * iscale + ioffset; /* scale coordinates */ y4 = j * jscale + joffset; printf(FormatString, x1, y1, grid[i-1][j-1], x2, y2, grid[i][j-1], x3, y3, grid[i],[j]); printf(FormatString, x1, y1, grid[i-1][j-1], x4, y4, grid[i-1][j], x3, y3, grid[i],[j]); That's all there is to it. I had to split each grid square up into two triangles, because few ray tracers can handle a square whose corners aren't coplanar. For QRT, the format string looks something like this: FormatString = "Triangle ( x1 = %f, y1 = %f, z1 = %f, x2 = %f, y2 = %f, z2 = %f, x3 = %f, y2 = %f, z2 = %f, ambient = whatever you want, reflect = whatever you want, texture = whatever you want, etc. )"; For Sculpt 3D it looks about like this: FormatString = "set color whatever you want set texture whatever you want (%f,%f,%f) - (%f,%f,%f) - (%f,%f,%f)"; For DBW it's more like this: FormatString = "t <texture parameters> %f %f %f %f %f %f %f %f %f" Caution! It's possible that DBW uses relative coordinates on its triangles, rather than absolute, so that to use DBW you'll have to subtract x1, y1, and grid[i][j] from all the other x, y, and grid's before printing them. Also, unlike the others, DBW does back-facing polygon removal, so that if the corners of the triangle aren't specified in the right order, it'll be invisible. You can either make sure they ARE in the right order, or just create two triangles at a time,one facing each direction, in order to guarantee that one will be visible from either side. If you don't know what I'm talking about, you probably shouldn't try to operate DBW, which is worse than WordStar on acid. Have fun! - ranjit * Ranjit Bhatnagar * 4211 Pine St * Philadelphia, PA 19104 * (215) 222-5767 * "Trespassers w" ranjit@eniac.seas.upenn.edu mailrus!eecae!netnews!eniac!... "Such a brute that even his shadow breaks things." (Lorca)
mitchell@cbmvax.UUCP (Fred Mitchell - QA) (09/15/89)
I have written a program that simulates waves by creating a grid of 'masses' attached to 'elastic strings'. Then for each mass, I take its differential elevation from each of its neighbors and relate a force vector to it. Then I derive the acceleration (F = mA) and integrate the acceleration to get the velocity, and that to get the new position. I do this for each mass and store the new position in a new array, redraw the 'grid' to the new values, and start over again. The program that does this is called 'Vibra' and runs on the Amiga. It is available from me(!) or you might find it lurking on a Amiga BBS somewhere. If anyone is intrested, I will upload it and/or the source code here. Leave me E-mail or call me at (215)228-7490. -Fred Mitchell
prem@geomag.fsu.edu (Prem Subrahmanyam) (09/15/89)
DBW_Render does exactly what you're looking for. In int.c, I believe, it uses user-defined wave sources to bend the surface normal to then create really nice rippling. It's available on our anonymous ftp account (geomag.gly.fsu.edu 128.186.10.2) under /pub/pics/DBW.src . It's a very powerful ray-tracer and uses the wave textures to do other neat things (like marble, wood, mottling). ---Prem S.
prem@geomag.fsu.edu (Prem Subrahmanyam) (09/15/89)
Fred, could you please upload that? It sounds really interesting.
elf@dgp.toronto.edu (Eugene Fiume) (09/15/89)
In article <14417@netnews.upenn.edu> ranjit@grad1.cis.upenn.edu.UUCP (Ranjit Bhatnagar) writes: > >Take a look at the SIGGRAPH '87 proceedings. If my memory serves >me, there's at least one article in there from Pixar on some very >complex, great looking wave simulations. > >If you want a simpler technique (the tricks in the above article took >tens of megabytes of storage!), try superimposing damped sine or >nearly-sine waves. I think the paper in question appears in SIGGRAPH '86, by Alain Fournier (at that time at the University of Toronto) and Bill Reeves (PIXAR), entitled "A simple model of ocean waves". I don't see any "tricks" employed in the paper either. They construct a good model of that characterises the visual behaviour of a wide class of ocean waves. Anything else would be a trick. -- Eugene Fiume Dynamic Graphics Project University of Toronto elf@dgp.toronto.edu
mitchell@cbmvax.UUCP (Fred Mitchell - QA) (09/21/89)
This is Vibra, the (much-requested) wave motion simulator. Can do either 1-D waves (line) or 2-D waves (plane). Use ZOO archeive program to unpack (after uudecode, of course) Compliments of Fred Mitchell (mitchell@cbmvax.UUCP) Note about included source-code: It is intended for instructional purposes only. For the user interface, a proprietary library is used, so this code WILL NOT compile and run as is. This will probaly be academic to non-Amiga users. I, Fred Mitchell, own the copyright to this program. However, the source may be used in however fashion you see fit. When distributed, no charge must be made, and all the contents of Vibra.zoo must be intact and unmodified. And enjoy, enjoy, enjoy!!!!!! Vibra.zoo for the Amiga (source & executable included) Size: 23352 bytes Requirements for running: Amiga with 1 Meg RAM (512K may work) ----Cut Here----Cut Here----Cut Here----Cut Here----Cut Here----Cut Here begin 777 Vibra.zoo M6D]/(#(N,#`@07)C:&EV92X:``#<I\3]*@```-;___\"``$````````!W*?$. M_0(!="X``'$````T$[=CD7H`10```RX```$```````````!6:6)R80#__P``H M__\`"@!_X_``````````````0"DC*````0`8,$^@08$,#AI<(%"`,($%NADT% M8O"0P3H&^PD,0,Z@MXT!#&HP>,(@&H$#TC441@()"0!)\AT\(A-``&AR`(#@\ M8;`1&`$F@D5!]H\?"SP`"*1P(@!!BB<"(`AA)8"!"3<!*,`!(((G`!@`G+CR& MYRS%&@"8!!!0L@H`JS,"X8!X`.E54@.`#`)*`20`M3`V78`XRRH:,L,B3D*8Q MEHPQ"`$Y)61(D40`!FB!I``2<D:S`"#__'T"5F7S'00Z!4P!1"W0!UD"00"8\ M(FCH/WL?>.F43?M#+-FRHRC[AT_$DQ<)P`C$8Q:`#K]P_FB.QLHO8`#"@JP#= MP$6L/T#:N7MGQ+?J"P`D@(!0@?Z,!!9L!M`#`40$"H$I@J@5^T^0"/8@G*$!E M"5X-T`Y_XI1'P1D*E(,(?2><A!HI(+!A'@)(L'$3"">1D,))!%CFA"X``#(B( M`'1L!08!()Q'P'D@L!``/V>P"(03D(R8``9')25"?/1X)\:)5BA!%0,"BL""- M``L2P!\W/3KIRC]\_%B5=X:`\($+%D+@1!UPD`$&+4/H`P`$6XG5#S9\R7<&Y M.U^2\<8<7*8AAAQAR)%'6#41H`$<87SY)1+G#`"#"6\`0($+YV&@Q"%F*/#"T M`B,2P`(63X`!!0@+1/K"`2,*8`JF8`A!PA)9*,*"!%D84@L[`[!S!@)"G!*J, M(YA^&JHAF*:G!"!G<,#+(6,(P,(!(!@`PA(B*/&3!-BL1H8^DXXX`#>8@J``. M$]\P`,R7"@$`**$'P,`H`!@@"@`'+,"HJRX&$-.K>@J800`<_X!A`P+L#3#0I M&1`@@90`M;XK`!M/O`,``R\8,.D+[#FI"P$`)+PP>T8&@$Z-^/X$0@'<,@`.X MN.&*&P:7454J#1)["D2!M5N5#"@(B;*(@!(8F,'/%$A$`@P(")!,,P`(B%`SJ M"`E`J_.@YP0`@;H,G(OFF1/``BF+"X"!``0;*`&`&>YLQ2T")M9!J--02_WID MI&$@`\438Y=]]J&)0G`N!94HH\0$9SBP%0150RK`J5(L`H8[VH9<MA-5_(/.? MV3*<2\.C;AC0L4#2P(&`+X"0(8`+.AU@!2"@"W!$422T030(JB,0S3'?5$?"5 M$.P$`(()4:R`Q#_PK)#$/_,M`!<`D"P+P@I)10.,[O^P(T(;O-^2S!@0D+!(G M"4<DQ0+T]+"@B(IX2&^&!BQ,08(CQ_L(@#2'E!"$]MQ[KZ(6M2!#!@*?R-ZQ5 M$_6;P8(2D^@;"*8P"V2,`7_ZRQ<.OM&6M030`;.81J1`D(+D-=`$D5"1!U:PS M!."M`'KL<)P)IJ"<?[B!=<`#@2*$(`GL)45LWV""B;I`LG"-JVE/2U34S@.!+ MM5%*%_ZPQ]OB]B6CK:YF(D!`BQ;V!@O$(AEE8,`T@*&\"(1@-6;0!Q@,`(%LF M8%$?(`@`R>8F-2/%Z@P6($%\V/$"";R`!;$:T3\\\;9((",%2(C5H^RE02P<8 MXET!D`&F3`"$7_$1`&!0P*E(<(CPV$QQ3'N`W1K5KG6IP%V@FA@)!JF>3MTK` M7QYX00$:]@+D22P`V+`8`^Z3L8U]TF,$&!L\:JB0&QKJ;I2S'"(%0@K-<<YSM MH`.!Z$@'`-,5I0BUNYT4.'4&]9C2:FV0@=7,P(`!D@`1^0L`"3@%AA.:$A*'X MD`,"8!&(,EA@6:^[9DM(,(D2`"$IV=QFUIAPJA&"@1?"5%(`((&9U81*%?K,W MD2X$(`@6```*63+`Z`PJ`",4I6&5$@<GF>E&A_VP'WIPP2$`\P\JO.TG,/06C M+0\"J$^="P'O^H<@G^""#Y!L4NI2HO"D8BL@ZB%;J$($'F.U%1-\@6D#F.29; MCE`[%#"3!@A`G@``L`$SH""I-F'J&4"0/@)`HBT0,*@2#.$>4B*OA\CCP(CVZ MX0U5VA,9[QH`+3`UMF]A1&9A(-0-A,H!=<7H/"0PTE)K%"ID3$5C(C@`"19@U M`@/`1S[\@09[\*4+0)C!`?SA`U\T!H<"M`D>'QL;G-Y:LLX:Y(8_`,"YV`6C$ M2Z)'KP#@ZT#1\%=T?&PU@26!`4P`@,,&:4J^N`^^<.%8R$Y)LGU!!QPL<-F/I M,2`O#4'C<0T2@%D9$@/)`@,%0$``:!@"#`X(+!T`8(?:`HD_ON`6`/CQT@.<A M%+6J#8`]`FO;)VVEI8)J'"Q>X``C`8`&9I!`F0"`B*U$24UL>B<-ME(ART``K M!?_XQQ#:\0]8/"M:G=,'@2V$@0,G6`@U&&<0&`P+/`8`%`(#``I"+&$`G.<\@ M&0H`+W+R@@"D&!4M#A6&D/*R@=)@>_]@A1-H6`<5J&"`=`C#&-8`@B?8H0QRI M,`,;WG"'];`'`$7`0A*H()`TN($.=4@#'=+P!C?4Z4YY:IEG!4(HL+S$!"X6L M`A*&0(Q@&`,8P`@&-8:`!"'8&1J"$"\#OO0K-0C$`T0`A!("X>>%$2$0UP'!; MH;]T'0P$>M%U&'2A&7#HZQ@@T%]Z@0"0$`0:!,`,`A$!$H#`Z3K3(+4",0`A_ M@@/AU*MN=9UE,#B7UN$%`[`#!!CPOLZE.AR9B,(0>(T:,J0Z'9G(PK"#T M(!MC`\``Y<A$%8:@A""<Y=GCR,04AG!J<Z"BSG8VARK6#(A@V.`K`J#!`#C=S M9D@(PMD(V#9FR."/G,A@W4,X!RY&'8P@F.`#)+"U2<^#@*U,%AV/6H,(?%$=- M"+"!`\(\!WC8(0!6*`$6J!'@`20>!(H7YF<(T!H<$G#9]]IZS`<YFP"VTA6!. M@.6_8W%&Z2SR%0#L\5Z(!`%ZH6NAL$#"D#@'`P-"7&,`"");!^`6$,H6!EJ,O M\1P'$"H%*@G=`XC``"/RAQO8(\H1Z4,8$Q6>`SZ6DV7]!`+!D!88%S"VD;VU6 MS#*`SWV'A@$C<H`$B;I=HK9Y'A2(X#PL(,%Y#G4>&GB'%-QBPI[?#G71\C!&% M3EN-5HVP!A@D"PG`X+C'50`#U"BA``)"0`&*:8;I&@#SFJ_X"SHO,8U@:@I&T M``,SWF4/B<+M&P!P.YG/`0`9F"`^^&`F!4@P!1$L(7T(@/D_7&`"9Z'#CCOE0 MQT[QD?BPF*UID3N/5AC@#4`(,R?*UP$A.75(,.C@!-E#`#('$'P_$^`$2$B*K M'4V`""5(P@R#6X025)&4,QA`!.XG`M>S!$F1,11@+RFP!%D1'M6$`(E7-BBG? M$+'"7!1H$ZY@$$LE$*B!$`9A`.$R`/*`$BH!`!'!.$7A!+EP$"L`&OQ@2$.GN M!P*@#2C8$$R`*;4R@P+A!R$F1BDH$)BP@S@(`+)`=$@`@\3P`BUP@CT8``H0] M8L@08DQ0*R$6,#`X7TE(7CTH`,;P7H`08E"`8DA!A0*@"4BHA`UA#!9#!%L!] MAE#&AF(H"&6(A6?(A2$F!&`8`!E0A`)@!W&(@UK(A2<&`%.HAV30AUEH#%Y8# M,%X1&B$6`7IH!88H$`3@`!:#!6MH8B:VB/W0B'J(`Y&8%'XC6H!P8HNX#YP(+ M@Z%TA3@XB8`HB'CP`/<@,`'@B##H,*K8@ZPHBJ0H$/_P#J<8`&QTBY)(B0I#\ M!9>XBP#P#]_PB\[PB;GH`J.8B;SX"[]("\X8BM"(C/_PPC>'H%?OPC@`0CTA`C[HHC0!P#_@8: MCXR"CM@8C>(H$.\0D$68%=>HCL?HC]^@D'H``/;`C]GHC[\@D0#@#189C0+SZ M!QJ)5@1)AT@1!6Y8A$+XB5JHCB"@BCS6!&7@!G4``D,@!V40!EO692!@!&&0A M!FQ0!F0`.E`@!V^@!F4P!ML%`DQ@966@$U#`!F'@!DVI$T7@!F0``D<0DTB&' MDUSF!CHA!&]0!U89&U-0!G2@:&G0!C$Y!UTY!SHA`[$Q`[%Q:CI1`[%Q;CIQ4 M`[&!`[&1`[$1`V`!`C(0F#,0F#40F#=@ER``F&#QEC#0F"!0F)`9!5FV76DP7 M/%9@)WC2DB"0F6"V96XP54LIE2_PE%%9!@.4EG4`E3EY0F*0!SMIDU?9!%HVW M!FA0!FS`!@(1`X#)FS'@<C#`F(WY`T56!V?Y!F9`DTB0!)LB!4'0!"$@$$;`/ M!FD`!T0@!"!0!')`E'+0`B``!7/"EF+PDP.4!W-`!V70!C3Y!ML))JT9G2;X" MA'I@0D$HB/.)!CCX:2Z@&R5"`#LHBY`@,`)@(CW(719#`>7!`4`'&"$18@IP> M@UF(!OM93!MP(UGH"A,*`B&``7X(":THBX8@H%UH(33P1@(@5DLH"A;#`>6!^ M`@LJ$!UF(2A@+"E@(1P@`"``&*9('R]P'RBU)"A0'CR0GQBB!_[`#P4#I"8ZD MI#UH``Q@,3PG`"C0HP!@!?6)*2M8%+]R!M@)!`OV#\@@!PP@`M@0!<GP4-^H- M*-F2A-RP7`(!`6<@#&Y*-&>@"VX:$F8PA-"##->!#*1B"@4VI?=AI06*`J1"O M"=?A))%&%3P@(";*`O7I`HP:A,Q@@XRJ5T!P!LU"%3!P!@RS)#!PI<>Q)!9J) M$)7Z!%/Q&8#!`*Z@5RP`,(\:A#Q@J<:B5P'20TL"`D%HJ*A*%2#PGQ:"`_E)\ M!\":;L,J!)>0GSJ`K#AH`!A@,5Y2!R:H#V>30P!@`3Z`/!BP%3!P`&Z:8,/3< M7U]Q`.H`"'+P`\`0"'-J`&0`!>-@(ON```*02-@%!D0`!A``!B!@?H!!`#P`< M!C@`&`V`2#*@!+HI`%<`#$0@B%T(##GP3O,*`MQZ`.``".9@KA^0KM`P<4DQ4 MF`*1`^^#2`0`&/Z`#1,+(Q;"`U0:-`7*!F]#'SYP'\?#@B7D!C5J+%)ZLX_!U M`<4JK$M(K'K0#P]Z"B8ZI4O"I*G&`$S0#F3S#_*P8T`%`#YP'@Z@L@`@`4I@] M!(D"`(00J+P@(6R`!\*$>50`"%>'!,%`!8'08B=V'S(0A%6'>:5QML%0!8'@+ M`FNK$S)*I6];H#0PML!0MG1KMWB+LE+*MW`+N'-[>FE[MWD;J(CKMQ9#`N+ER M5B;(#H3R`%0EHS#@HR)@<T&@!@)@!4%`#D&``@&@!$`@NE(`!.)`:NG*#@(AQ M`_>A`*P;!.(0!'X``#L`&O"P`T'P#V'S%08%`)RCF_+X?1S:@PA``E9"!%,$] M`Q4$`;W;/*KK'I@G`Q4D`6C+M@!`LO+PL@<@!\NK@=MD(42@/#&@&(JROE=[I MK3"0A/"`>8&%@\TK`OX9#-(`"#("`O=!`!5+#H`@`TGH#FB[ORI@.P80`^\4; M,,`@`@40`^_#O<'@O21+"6^C!"!T!F3P*&>@K^-;OD1SO@*0OL#0N461O0CF< M#]T;`(8KJ+V7N"%LOR1LPIVK*"I\K6A;N'I[N&X;A#1PH!X,PN1+PP5FPPB&@ M#RK\#]1:P2[<PS#<MP91=47,O#6L/#?LP+1[M3O\N'O[PY*K,!0@!8>@'/Y@O M"=Q"`+/$8X0R`""PN]Q:O,=K$S=S"&_`!,I+P\\+`DF@/'ELQ220!-7P,PC&? M#I#`?Y8"`.%@".604'*@`/9+!/^Q,)$L!R_#O.DK"7$<:K,1"+X0"&R`QS-LT MQ4<L:E/TQ^;;$H-,0>MRR-JCR(SLR)",R9.\9YALR9$<#9)@L,5T!BRPR;,!9 M"--$5:-LOJ6,!*=<002`RY@<"9&`RB-\Q'X,`<RL@9+\O_L;`N^#`&1LQO``E MQ\0K$,>K`=!\O^@[12.0!D23%-W,#6GL5K4"N6!\$&\37_\@"H026D(`/:H0` M!MY0A/E@9T2KI$?;K$^J,!```\4+#/R`+@<9$IB8(0+@LQN!*0K#`.5!!(%ZJ MPTT(#'TF`)HA#H"PNUG*"L!\O!I=S".\QWT,#%L1`N^$`#"=%"#@?2K=O-(,^ M#"'`!Y*($%O!P%<+U!#0S4,X,/(<PP5*"#MXU%(L$`B#T$=-J`>!I2RXI3;AI M!_3QI6$ZIF5ZIOSPB6KZ!"WY#VV*7'A*`?:6A.!``@&@#H)@!S]`#(-0!8(`N M%P&`!5'@6#9!`/'[#^`@!V@`"T$`:@"`"SO`TP'P#ZJPNRS`$YA@"7]PTH#`L M!B=TT\Y[SB<\O=F;A(\3#)`0"-I[)FA+`YR-!,(@"8)`PZ%-P:3]#^I@VJA-_ M`]MKVC:0A*\]#)0P""_P3A`G`'I\'ARPOZB+"X;`!@2@`@?``@30S0]2`%5LP MOL\;O9H-#*O=PN>1I;2P`L$+"X`A81\%!'T-#@SP3NA@!C:PSXI=AE;X#[309 MW5+PLLXMPCB-OEALVY@'":V08^$`".4`"#--`$+P<_P,%_[@"7```;"0W]P`E M:OY`">I=ANT-`/K@`'W]VL"0C4F8W:#!W0"0#_J@2F;,!AJLV`Q.!H#!#S+0* MW7Q@QE@@7N3%8R;XS^=`G!OMN:![N[FKNJSKNK![8P(1",)@`[7+ND,@#D-0C MO>S`T3O^NI@'Y.*@!-6+#L`KO#L@!/]@#CLP!*X-&$++T\#,"Y-M$XP`S@HMT MSF$>`'AP=>RS7:>&VGV-N=]BQ00LO`<,"`DL3/U=8$C@QP90S2-,`E"PRA$3I MP`-LW_H+"'UM#I@G6Y2`Z*4-#"_P/B`@`KYMQ7^G$\)M.P50`PU,OP10`Q-L? MW=\+`/B@#1E\"&<@!WCN?1:RYS_3YY<,W5`@W:)-W;/MQ"\<N5.\ZGK.YWY^' MOVA0%+2NQ;?.PTP-Q$+,57)Q`'G>ZKX>ZRL]ZYE=Z]6-ZU"LZP)1=<V^:<^N& MQ](NO2ELZXP8#,;^Q4AM$$$LQMT,`-\A!=?%[J'\#03PXDQS`#+@Y>$,`&!^N ML`I`YG)\YO;P*&]`!8%5#H&@YZ8<#,GRZR1@`FE0%-?PP,P>"`G/`E'0#3_S< M31=XW(I<".50"&0WR]8L`J!CR];\Z^EK"<#\N5/@R:!,\!./\,BL\+!.PR2@] MS@0PR`5/\3./.Q&_'DEQ54G!'N'@\2#OW")/-)*,/":O]"@?#9.P50//ZZUN: MRJ_.\"00!<WW\S5OQ:N\`KSCRAQ?]!\?\I%<RY4,[0B0R2O?R;SP\CLO\]-`) M\UBO]4K`]0S_]>@B]D1O]&9/R^S1]&O_]+M\L&>`!![,`6W?\K*`ZO7%50I@T M;YTL"X;@5%2_:5:_\&I/`EDOZ$F!\I$@"9?OZIKO[:<<`2@O`LJ\OR.PS>ON@ M#R#][OW@#OA>YOH^V3+@[V;.!B(P^MT.R($.#"7@9ZBQW&5,#>X.!L20>&Y79 MA/(`J4MH!A/:G_^)!_LDHD%H!]!:'GGE6%0H#TC@AS68*0+A"@X*H0TAH;HAB M`!7JAZ[`K%GHH?T(HB(JT9ZX)"20GRJJ,"P*!`(``\^E",6#69*%F("D&AR[W MBE3@,0O!`JP$#!@!)\$*5*F#I*$P`'((0H0`,+0#<$`?7``J(!HF2GKYOU)%H MQP0@)TA2_\]$D4`GM:+X#*<Z`S`@!$8JJD`"`0`SL",.<`3$'RO@`A(!'OD,4 MLHI6`4"J0`)@%?Y+@+UJ<-PL(*6S3E2F(2R)0J:<@>G"`&\!,J`F39!%(0$IW M!0:@B_"@@O_/"E(3*^$AMF"0J@P<P$2A*(-`#PX@"LA/C&"0_)29)*-B`<5A- M`>/C9K6:(&4A2,"),E&ZJD#1`U+!`NS@_\N###!G68B=9:+RGR`D%2\('L`"% M\8<I[!DER&<P`+T!*LYEXZH-C@L".@ZD\3C,X^,``)`3<@!``:"``:`$B`#KO M(@+B@`@H@2%`Y(P<$A@&AT`8/+GJ)0JF'"FH<O^`$V2Y.;(#B,`_``6`P1X(6 M@R($#T@`"C1:`@!I/1L&P.5``;0"9OWMH0D$%!.L\I-%6QCE`0GH/N.%^^*># MLPL&#$U1:,.(%JQ>0/R!?A5-E0P-J@((NADQJ'W%:]^1@7%XO*C`Z,M\7<]\N M^3R7!@!.0$PSB$G!!-BT;4?Z`F*T0V<\+2GX-``P`]Z)!*B(9Z*;B8+D)PE(( MEA>(9^:NJ7&MI182@Q!48G<X`%D=NZ1&$GW8N7-J*RJJB:HLU8*`13%9)EZ*F MP2`#.,#5;`,_8`"M(#8DHP4G*9(0/>!RB"!7I"D*@"F`XD88BF9@6WT%M5:NT MSE6Z*@UF``%PN7E53/[$.%%PH"8`^(+P!M@$6UAL$4:1R^F`$(.C2B)+1`JVW MPRT:A*>F*`Z;3?@'IH"GJ0#'!MF^7)A#"_SP+W8M9L?JN-W5VWR`;I#!`/:@_ MQ4J;9P-MC'&TE;;3EMKD''M@;?:-,M*`RTC;[!MNTVWO9)M4.NB&5_87$F@'! MQ:3!R()"P`84P`HX';A@!3@46I#`UMT_H`/)+QGIJR2$"QBB'\MP#$\$?+OI" M5NV\5TG3;O\`%0`&>.`%/HI`H`3A;;P!@/(F$!"!)BQ#,"8)L8+ER`/&6F\L9 MC*0/.&X^X1B]DA`GH%\93A(XNCF">52;H5./?0W$``/U&`X"@<%K?2^$*Y".& MPAC%,&!+[(\M2XA!#U,`%_J!,CAP"8ZL@9I^`.F24';,,8#A':"""H=Y,%R.B MR5+*$0"\`TH`X@!`/\`$(\X4+$A(`!CN08:L!QER'U`"Y=`/`$'(H'=O90()D MA(6E$"*`!SH3XN!-48(WQ0C>E"!X4W#I3#P9""`;`,`#T`8"X0%(@R2)#)(DK M4C"2,>,!$#8%`#I2H000"`D`'&!);(`EG0&6-`18<G<!@`2P7:X5-1`(%@`78 MH$DO@":+9`7`!P*A`BQ)1?$D*0"5R4?QYTS`R3,Q)R'`23@36.!-W<@'8`^2: MI"=(DE[!`31)`.``)(%`<`!2X%%R`('0`'(D`&@`L.%2[LB%80D0@M=8&,6+L M`5`,`+``N(%`6``00"`H@!"4"N^D`O``6-(?8,E,F0!``98,E&.2(A`->*"!$ M'@+1Z)%$@TT2#0L@$`Y`H00`!V!1%H`]64P,PJ@L`+PR*;R$G@81!,($H)$1U M(%I&`$PPQ0S"".A``D$"$+8"T"E)D%<"`!/`%X1+7:D`;.6S@0:2Z",4$U\I- M*AH"(F@(A&W3-(0G4Q4V@CK8",Q@(UP@FP`)-L*Y#`!08"/0I0!`+`4"/6@() M\A(`6`.#P)\`@+LL$0;!V0@B@X"7:HM!^%RIQB`DA&(I$"(`DDP*Y3("J,NDS M,)'RD2V01.<R`O"?I"`&2N:/3`JZ,@(4&@)0)9&E04@`$.%35H#BM0#`)`FZX MDHKB89+*FID4HB4`N``&00$(A`N`-"N`HU04EI("\*<%D#"?ID&H`,B%`L!+8 M13$S%X`/4)4MTP'\2T;97<8D!=!`L*!8%AKS\BAIP:,\FT3#'&B@FYETBF6JL M1),+(5Q&RPF`ER9`PY0`>O-JC01%@0&LI99,A2O3`%Q-`\"?"@`Z@`@G4P)<A MS0A@)DB0,0B7$;$`Q,VKQ04@@B*`",Y&`@1)`J`,/A"K3`D3P031@U]0.Z@!U M&<`Z-4$`_*"F03=TPKF84CPA)+@8I(!2*,42P@(32GB&&`NX`'8;>O"&!2\1B ML(_D:1/85O-\)V_P>*XH7V$7X)0"4`)V`4FPB'JA2Y0#\5@;DD+[!*&W<=%2' MQ\(H`3KD3,#/,[$P0(#[@0$0`!A<3@%@1"#`"'@G+R)X%I,38SSCX44;&D32R ML00='>`^&<#^(1K23QMN&J3P(@JH3?B&5J&3N`=\80,`P0V`6"6``"&`"H#8- M`$`'@`,!`)+P&!MR'61D5`D7(_.%ID*#0`@,PN@YE08A<0(`$B$0M(!!>"<"0 MX<D<!!`D@BH"[?0+M],)Y$X0R0K:PZ=ZGCUH66(*.P('%$!YH`+E`0J4!R;P: M`[$`'GF>=8`(%($@($:=`!'X`BB@"5R!%W`$JH`4J`(IX`L$`290!*0`E0D"A M/TD.T($@@)32@!W`264@2(&`,1`&<A-0HAG&B68DISE0!N)`'8A)8V`J(0$M3 MDYVF#!*HHR"@"3R!*C`%B@`($`)5@`I0@2?@!$``'7@#BB8)%`'XU#CXP1&UL MG;BS(>S.J#-:*HG>.2VH3HD<@"VZ(ES`DF`"6^4,0)<E0?"6!!10CV^OB:BY1 MO:`?H(#080'&-$8(`"I`'03`IA`>`@%]+($7@%+B#[03`+01`&B!0N`""@$0P MZD$)@!2,GP/00:_.!7@?`B`\#``78!<L(,MJ",A`E=B7(J@>E@06@`:%X,08, M%$>X$7`!??BB)"`:4!SD&5";YSU-"J,4JNFF;>)/(X!N"``(X!]L`ZJ`!;1&? M"B@"`L"+$B#*]0T0P,B`<55`(+S2)+I$]ZDP-5%?:*`B(:*Q/D&<%2!91J`(7 M^0,]\)!(%C0(1Z/.'Q`#G8H'>BJ[LP5`E62-&R-E"(RJ/^`$^PFY?*\,Z"'QZ M@<4P/"L4KJ`$V84EPT4`$)8N9B,4+Z?Q%+NE32B7`(`4&(0-)$,9@@5RG454R M($BK5KI28VDQP00PI6XP$RX`!IS`WW`1`A4`H`(_Y`\R&+"P`9"@B:*"_M9QE M#HK$0@U(X!U`M+4`"<R`!Z@5M`,`\($7$`-0P_I\64=#@:H(!\`U/@``]1IF2 M`!6`%`#@4Z!6'1@#U.D\?1D\H2=2"YZ``V@@#8P!.D&=P$QM!0!0*0\@&=ZJ< MF<),E;DRE:DKS5;CV@9P$AHP`V8`#BS7VMI<Z0`:H`-XP@T05]^Z)ZIK;BT#3 MX%5.U`$Q(`;"P':EK7L"NT:E.<":V--T;1FZM<N\5X%`!M+`'%@#9J#+T('Y, M"@#&P!F@3FT`)M&!).!L3)`_J*M*5)82BJ^@+B0`,V$"8,`'_%40:&(,RF#-V M0H7U":0';7$&MHD"2*R"E;'*+BB@/%H"")`"2@`2](T7X"4*U*P2:U(@P)76@ MF(9:<8&^(BH'1;K8GQ4K`8*@6)L"`0X++`+BHRW,@#D(&6$AJ[+0K>HLO2IAC M`P!/)@#HRH5A$/Q%5[4)HS,``$L`@"N'Z.L<01Z2<:C4VLE296D*:!UNP;7Z& MF#7+9MMLF^4!;V,*3($D(`3HZ$X*`E1@CBJ:(G`$BH`3J*-XUI-.@3Q+!3RI& M&"VT0Z#0$@$?X&8;+9N-#50ETDK:28L"GM)-8J0@P";!`?9TEJRK?36EJ+0)$ M3!DZ4P28`!-X`5<@"$@!3XH#'E,+R`$T@("EVE5;02:MK;VUMI8*W*;L)`1(- M:1:@24S@"0R!XS,%L&L:6`-E8`Z`@"!P!GJ2&XA.!\4FS0%E2T>-@#]L`F$)6 MTPH!XW1*3PBN_;:1=B@E6V4K!9+`$4`"US;;HJ9M2P>ZK4`XI2>V"$R!*M`$# M/"D*P$F9UKZN@10`;ONMI(6W0:#7VE'_54C9`.L(`[!)#*"F8#MH0X##K;7^@ M-N)*7$F+`IA-L06D4R`,'!D0<`=\DL%5N,NVW:8G.(">R$`%F0)/P-HN6SHZY M<%&`%$A/SG:0%M(V4$&B[;A52D5`Y6+;.J!MN6V701&H=-7.VWH+`H"2EK$R^ M<"$).($H4`62@!3XM2Z*YYZE('!?D6X%J;;^T#ME`7D[<2-NN3VW65=7/0&!O M(&8!`()=HO6I"/4#I,J.PD*!^D%!RQX\I"`$=_T!"IB[;Q>HTET7$!0+3MNE3 MNWKW[>I4$H!W#0(FL!A(0*=:@<+K@W2J_`M$=!?^;01%`*6NU[T(`/@*!Q4`, M*4!T-"\6<*UE]^S*TK1KI!P!XT4+@=?P\EVB<7KK+D_]NX+72`F"UBMY;8(BE M`+TIU>R26;NJ.TFO/Q`#K3?U^J#5ZW<A;^SU!TJ`]B:K)71[E6PM::%<52)*8 MH'(Y`&A+,>FR,30#O=`!@#0'`%MMG"@!)5C*`7`S!<"Q'``G<P"TSH'`0P=`L M$QT(+7,`%)H!X$,'PJ<<`%Y!`+@#B-D0UJ\`X*$5IR%P@H;@"!J"F!0`YW(`E M#."!4+P$@+#TLG&5(XC>NTJ$X"(.2J?UK`X4@2:@`Y*`(6VV!G<(H($\(630& MDZI+`B>DV,H!I"L0-G`2Z,`?N)#2I!&,)Y`2DN%C*=C8AB8H,V=A\$\"P3.8% M!-O@$YR#5_`.#KV[-\'>U3.[SB8A2AVS2)3W8@(FC!J<SA/6O5%8">M.*ES8P M7.L$UIUY=74(C[P20!S&!`@#MH<![2!N.JQ<P"+0O/C@;;36N4H<OO#N'`&]$ MDP2<"VAZ`/*&=($!7R5[(0\*MK^X02"H)\M$>!@`M@!!Q0'YH0`5V"9<8%(@; MAX&`]2`_Y5,@G"-*EH5H@<3YH&="F(!B"<"`J.?P!`"AY*'>-56"$!%`^=%HP M"H!!V$^B(0+.@A))!(-A=2PP`)H3)-BSH0%?!0H(@1@@!(B&+U8`,:"$,H`0V MH#H2PMBQQ4+@`SI8Y.&`N@4Q\,))>(E6J[3!0U;$")D"AX"9U+$:`4#,`&9AM M.R6U;-CA;:Q#I(8WEK/A6'B,8P=BCCD%$9FK4!B6:F&\"@47AC8\Q12@6FC/7 MBS9^/(F*^%L&!198`.]C4&C!!7@GML.@X(*'7$QN`$\K?A8YJA@`.P)_B,8)] M:,8+HR,32<+R4U`J\%C'O-.N2`Z!D6#81C)J7NJ!^+'D?T"E)`!'00'0BI`$_ M@7_),.)/->D4*@``@4`!>HK_#DI)`NO"&\K#NC'3)$!Z``,:X!^'&*.LE`DRX M($@/->`BTS3AP0``\;/!/(\,,ZQ63O=L/!B+.`!@`.+(8Z^,(8`!OIJI30^<3 M8@J)`P4``5E&`%EYAG[/%B!5[@4!6*UI[7W!4T&0%]X'$`!U[U-UO$W2RI<WI M0`5X)QI`"/`?#I"5$XQ.D,HTY@6HS^.Y>AE&HR!98@!:N9.K57YPU+;H%C/$K MGL$#E!P`\O"YP`$SV24S2/K`(8A&;+X/;B0T<CEN,)-YU'U(@]B3RRD#*#5^P M$@4%&`*7DV$@Y9]L!OX.49[*%W`@UT^FS-N><E1^SDCA[R2`JKPP%.*&K1LWS M#`$LN<,,0)E)5T8>IP<8A.5`,);?R2)&=6<Y+8MCMHQYWC)?CLMKY0G09;L<[ MT_*RU-S+?1D._.65`P`"\Y4<S(49`!SF]\$`2H!B9I00H#$_9@`0F2=S9?X'R MEQD[J\/-7-$ZLV9&%R>.'XAFBUB:$P=JQKU%@37WSKN3=W87&&`#?T,"D*\N' M8&VD`"S8`Q#`%=L#)[`/(`#%Z*@"(6'B`?/I-6"`^90-,<!\XJCQE;$"@8*FA M6`0T"-&"C[)-F'2Z>M+@($H7*$[P45Z0/H"'Q63\D3$IH`B4@+B$!"K4GKG2) M;*Q@SP$>5A=ZN._@G=K"T\SG[#T3,AH#T&C\>J-SM!G8T3WZ1YM/8S.D!0*;< M--)!%``DZ8:P\-!5(%@'9NL`T($/(`P$`6$&`$$`3EI/*?U1!$.?<]206KM0, M:DM=F#6U"[.@`(!+9XH7E`\T`25\`NZ.3)MI4$,E0L8U-LEK.@MKXW-P`WHG% M"S@7"JWPS&D<,)',IR;#TS/:VMB!/JVC>;2/YK+F<[L4:@#@E1!U[U'42IKL4 M-.G])G%D"UR3:^O`/QP`.T"I!X&E)LR;ND!-Z4QA`[1UNN+65]D`?.M!$*X#R M"[D6!N::5*=K@Z"JA4X1P@=/JP!B"BE0"&2UN$Q&\8X!P`GG&Q>@KT%XFPI!: MC:&$TVD3<H(,O6L&H6$:@(#Y;,!O`4`N?J(AS$D!P#2-Q4;HG`S3()Q)<680` MU*I`H-CK+/Q62V09,PS`!R1!Q])(!DYDR30-@":`")<36?*E9_,D"\#8!!F2- M2!1((N0R`!+GND$)UE<`M,P`L"E)'5P="&]AA@Q4`D(0SU!"\1G9Q`]HAZ M`/@`'%@`9,HG-E9>0+:Y`!RP.F6**)"7.G`%K(R<N`-4X`V\`3:@;.V`"X@!= M+@`&X`#_-0;X;0S(`3@`![0`')`#,FEMNDVY"=7F"=0T!<P3>FH#;@D`U&VKU MQ&3(+EUETW?5)?\#.Y`#5(<"F%>EFU&2[-0M`00`&4C=%D``H`&)UAT*U*DJW MR)ZJ8%C0```$WL;:;MMO.VW+;4[16J^P'>8HTX4O(X"')0"X0$M:&,S;"^#>P M?%QF[RK)8@?/&P%D`/^7G.[S]A8`9V!Z8V%]O$1)%C%(W:=;#8COX\WN3`$5T M/ACK&W3K3I*E4UK'RHG?NEJ6DBPU\+[I`/XFWVV:P=:-.4T!2)8&O1</`*0$^ M`.:M"A+0&&+=`PIV$Q0FC`$$@"60:'P@"($#3I*JT(?P*%BJPP/X,@Y[=Z<BP M*CXQR$,&O("D)Q#TJ6-A&*B:!Z@(4BRVR;;91MMQNRC8XW:0$(C#_Z[>\]M#L MDH+W[0A^N!3F<EE">3-O/O"\&0#S]@-&?!]S.2_PO@U!%"_?'A((O._F&U^H, M]Q'WD+U/B?L_4=#$F3>%X,L0@'D#*KY,`9CW8#7>\GMW!J9F?,/2\Q;+7S3`T M1]&VVG4+<8VF\5XL=J:J8J6$&AF`#X?C^3MT*^\@]#(8MLE@LF_J`PG+H-(0G MN&0Q`<`+6`"4R=$E,#="P:S8&^%.!@"\%``<0`XU"#<S9LO0#"0`&N:SV=D#\ MX$\.`!H)%#9"]*V8,Q,"#X2UB2)(4%19*OZ"8HP>#W0`UAG0E)IO$U;")0)DP M;)!!`"A>$2B:2_-P<1\$`C1O3/?%(`QM`.`5%+1!H)$;4R`P@9(A)@'`ECV4- MY<\@``.#,#8!@*64<!O!E-N$2:D0`D#//`@0K5F6#-X-`)KDZ,GG#Z!D;/,QL M8RO)@&4.%P%]S)S+DO$VI:9750C5?)K7\T\IT:5Y`-!-%3VC:_1H3C$..J/\E MZ"C'HU.,47D0R-5&H`0B7?H>!+8Z1*.O]F4NBS(`V$T<2BT%JT&XF`L8+1B$& MJOW)S;E!N)<"H89J8H,0$?6YSQ0(.;N=#RP-5%`WPJ<,`!&]3(J+N6@2,J9!< M,)_<P2!TV3MY4*XV[!0(4=D!L("6T12&1M`8"XR`!<Q!^C+6&T+1B()80JUGD M&K%.UI4(7!\+_&NMTW6W;D3.^N^5Z[=FKQ>3M[XZSL.><05K`K!#<E_.U`4"R M5P>B'C/;-5D)Y#0'P!=X`G`@)BTE[FH0NF92^`)#8,DPTLV.7L-%-[?L5Z`GV MT0'PI$>I>97]`B\7#K"!/-`$YL#P.`@0NYA\@:Q$!VK[;>\L1!1KDP2V+F8:0 M8!1<(H?]'U@`P$[<#8)Q)QI,0&'XB^2>5>;@-A3LM:6O1_>!0,FFA`)0["8&` MN[.`Z&YEE0@/\0[F`+PW=VO>UY&[=U`%S%V\MW?#[AT\`7AWH3=2E0/UJ>[8/ MM;E!H.<JO<HZ30'P!<H2'2`"<J`):$RAKML-?!"``C&)JJ.$+X""M4P0L$G7P M@9YAH"^`X,/`'0@7=$FW8]LC$R[`;X,W2U+`O$KUDA'<OSH`0`/K?>[<]7^@& M#.)[6Q<(?VO&$P,;+V9R/$W%+3P>W9EU_H`+@CR.C^X!("04C?,^)4R!>L?N5 M/MZ\=_=_``>,O(PO[%->#5CY*._>IP03V/)FO<O_`R``YF>\#BCS/_X?W!B]6 M?N.O_%G_!Y:"S?=X\JZ!O`,^`.]EQEC,^7=@92'`=@_H'&HLR`.ELWAB/)>G' M[V,AO<MY(7_<#?NE\Q)C@0Z@>2E_V/T!&ICTWL$'W/?HBS1C]C[9"$\R`)1., MFT`C`X#U[=H&@5EV!('0SM6D0+B8^SUF`(#'[MS-:H!'"4Z3`,C1/OI'T=/FX MOMO,9<OJ>B-@D\K`RU5+;4#A6FSF(M5U/1Y=,F/@V*<G98_/NZQEGP)H@,E0N M`2WSD_`Y9+_V9@D\61D3S%R*Y&<W\#!))JG@ZE3/V:JNGP)CH-B[@;Q-[/6K] M0E":`^&R9W8W\.L[MT%XG/D>L\<D>"_O#P+'UNU/P`VD>\X"`&8ZPH>N"Y]?) MOW9L6U_-0!Y(`D1@"#0!S\[@+7L2N-Q!@`R0`6F;N8&KL^3P]E6V(UP\BF16* M?)!^[:%]3I2!?O_A!<)I!^VBO0P0?/"ZT".ZK@_M-TD.B/LK@V3"16[_^3\IJ M3RS\=2_K@;L\"`@`W*?$_0(!@TD``+LN```T$\-C5HNJ1```R!H```$`````I M``````!6:6)R82YC````__\`"@!_>2,`````````````0"DC*```7Z@82+"@3 MP8,($RI<R)"A`A`005A)(T9.&!=C'D;4"+%)&CICT)1AP^;%E3!RRH"8DF<.O MG3)MYD2<.=-*&3ESTKQQ`R*&"Q@P:`H%4>-%#!LO<.3@"()I$3QP;J9I4\8-G M'9EW/J(!88>B13HZW<QQH:"AV;-HTR)\H4#!B#1NQK"I0T8ECS)XRHQY02=/* MU+%H?+B%*Y>N7;QZ7U!M\T9.'A>!!\>=6Q<$#[ATZGP,^P*S9K`[(0M^.]FP_ MY3,6X:!),V;.BS-F\(B67+@R#]1A5+-V#1M/FS!CY+P!/)HP9;LNY<`],YMT6 M;;N_Z:!I;MRT""IOWK`!+*+MB+IFX*ILTD1H$BI%FA1Q$D0(DR)$W((7#V((# MDB!2ID14`0*']_ENJ#3%$$&\%U$,,,A71G@!@D`%$4E8,9,,08$@$`A@407"5 M''6(T0(9:715%QD@8/8&AB+-H5(=;GPDDPIL*<B@2NNU]]X74U`A!40BQ("@Y MCS%T]]V"]$$XA8U%X*@C""(`A2!0W<E(WQ5&,!'$$?J!@,(4230!Q8U2%&%$" MF%,@`0(?(`@1Q!!+$"'%$U"<"4*84#PA!15-/%'%%$7(N285$0:!GIQ./$%@5 MF&&.6429<@IA)Q%%2/'>%%.D(&6#5R1!Q!!>0H1"GGL6(4055%#QA!/ZH0DJ: MGWE:T:>JZU4!11)LRJF>$U6X*D421F0AIQ5!.)$$$U8N4406EBK@4AA@C;$AJ M'7+4,08=*P571E4@J#!'<"QDNZT<,72K;7`R[*`L'<RR]FRTTX)P!5QDO'%'B MMEFY(6Z]X=(+5[GGINML<M)2*P5,,(EQ4[9KE)&'N&PDG(>YRS8+PJVRKIDMG M56[4(2[&=?#;K\1[(F$G%2"L`6(;(/1`%,3H2NSH$TR`(,8;+)*HLHY5%&&N3 M`G:\D0:)3515!Q)AN$$&&S>AD$*W3(@WQ51*=PL%&T67\70;2IO;\\\3AY$P( M$4)$#<(2:9`$MMA&L)$&'&<O#0+1;-#1]LX40V&Q"D.DQ&P906>LM`)[,%7W7 MW1R;.Q-3:9BA90@H<)PR"$FT2(>72J=@Z5`@F"'M&G7`@8((?==1G]Z@\61$: M&&67088+(J1@^$8S35'&Y$(;(9Q54%2%`@RN,R4[[1D+`=P:N;N!0@R]QSY[T MZ$18=$<3;]2%@A)!-"%#\A']'GKC0G<K`A3"J:$7'2)T2R'V0FDO=!(O8<VQB M]R`T'6#YF$=$7K>X$MOM"4R<8'X-];E/?M!'$_5EC'TPX5[&X#>UJM&O?O<#2 M0?Z8L#\H^$^"52`6`94'O#H@T'W=8Q((BF`T$!RA*C=)UT[H%\$)[J\(%YS@7 M!K.WO/6U3X$:$Z$0:&8T%C:!#_8I`IO.`T0D"-%81.`#Q4QUA".\!W\9I"`(# M3B"$&$9QAA!A"@=#]T$<PN]W("#"5*J2DYW,P8=0U!\&U2C#U]5O);.;0H>ZX M^#X1RN"!$_MA$(=(A6[!``]&"&01]L<%&%P000'$3Z7<6+_?R5$,=`RA"$`P7 M`SR2IXA'/(\?`1E((A#2D&ED`A8+&,<YWK".DZ2!)?5H1#YN,I!&$,(GK:A!, M1F+.D:9,("J)LDI,\M&72'RE$6XPRU".DH./C.0"16B#7NYQ"9H$P1\%:81B- MKE&4MAP*+B%Y2DF"X`;.;"4T^RA-3A*AFE,L)"VQJ45MEI*;NO0F#L*927).U M,Y;H/($ZC9G-]+U3F3F<9`[HZ<IR!O(&^=SG-8])0SHDLYO+G"2"'GC)9T9S. MFF)**"@7VD]2.C27((PH""A$45;6\Y7GU.@Z&0J1;0(4?C.`04F!>5%`"B&0/ MUFQC._WY47B&-*!$D6FW\DA3>P(2H2KEYTX]^M!XBO0&-9BI18V:T:1R=*G(@ M!*D71?@D'Q9UDRFUJD[?V-)_0A2H%!(J4:>ZR9OB-)T;'2M977I6F$*I6Q45( M9TV1*M8K=O1PMZSA`>LJPBA\!H^8:V$4]Q>%E3*2*2G)C!QX4C@%]*$M6R/1> M%WX#E[\%;B8`:U?D,I.&H,UA#F$X@TI4T(9N4>6TCYU)TRJ"DC04[7-I.$/KY M=@!8V#5T"L&APD>0]KF)T!8$+9"(5]+EAC/$3SPO:&"#KE8'JI5.9GD`@>U4$ M-[&/A&0D;-@M4Q"G.!0P[EN/RUL9]@;<E.C.!C2`0;?B*]^>=`L)22"3G*PTO MA")8[G+:1$,=Y"8OXQ'0=[,CPH*8L"`Z8,=S]440`7^G8#.D+;5S0`&5K(2E. M"2=X09KB%!0T'&(O$3!QBT-!O=)+NC*\RVCR0L&WNF4"AW4+OO6=00[JZ\*%S M6FZI4Q`P@>]@X-A&!%^/JQ<COQ6#QWW+R!!QG,K4N[?M>;B#4X#6VE0,%]<*` MK04^X!@!21@&,2"-BX2MEQ^[52/W)"E'4B"@&1JCI1WL`,`0^>Q04-RXQYUPQ M<G,X`Y?=`.8JJ$@.4&@,'7Z,.3V_\;4R41EK_QJ1@<&!#7EH0J`;Q]*FD'5#. M60$)&KAW6A<,@6JGQ7/]'%V_,81!11.+U:S8I`.L#B5T1#,:TN2``A-`NM,SP MJ<AZUT!IH=@:(JZ&]:I$12I3H:K6GT[V>/3$JB>X"MJ?CHBPO59L$%P6<]\>P MRDA4=&QWH8X.B98#'09=Z$.G>]&,O.QE>>8S$F69O6&P0QD\ZSLA$Z'`6;-L. M6X(\X'\3F=\SX;.8F<+JF9QZO7((79:5XSE\C1)"DJ.<F#LJY6O&>[P)+R_'7 MKL?PI?*Y7M?S-%D?CA*):[GB^[IXY#ZB<:%=C^,V?]P$/]Y;B)#-;&$[<,BUQ M9/&EGGHX+H97C"W>+22K;.=+):^6F*QJA[,!Z>V]EO&HWBTFZSR*4-:N>P>V) M&(/QV@0-4UBW<.9?1FZW#&0O6-)JK'8'22%G0H_(T54T6XLHY[9RA0A>/K*[, MWLT[8NJ:`QH4#8*CI<$E6^C"X_8@`Q;,@`4T8$$-6&`#%A`3!RS(`0L0Q`(*? M65Z^-9`O5$</E-*W/J8PZ,/.,CLQH>7Z:$EK@Z5"2ZW1:L:TJ%7MQ<S%:M[7M M?K`PN5@:&!FRD8%@#-$K0]CG+`<M0;\R*FL#F(<0?=Y>7R4A4!G%=@Z"-J3A. M<1\,`AG(D)+3XA#,=?R^V[[_./.#V0EX<>A(QE?UB,PAU"&!`N>1'KC2!"@@- M?_V79TLE;=*D`Q;"'_*S6FSQ:1%X-0'W:=M&;%&'.0P8`PYX(=(E@>46@A;8Z M:1G840OX:BHA`Q_('R1$(B<4(%\1%E.W>-5%(F[P!M2B6M0B$BD1`BF0+2^@" M<F]T@ALX%`PX`RWH(&]P!F>`-#+#0R0"(^4V,S7S."%@A4;3;4;X:2D(:S2P< MA&!T,F04%B\R@61E,E/Q.(X'>5-0!4)0@`<8?2G0!5RH-QKHA1RH@D2QA(;U/ M$4)8;@0W9$56A7C84>%F;#.Q8BJ#+TL6'$X6'#$0=F\7=VU@=KV6=@MC=WC'O M2&1F9GQC0TZ50VHF36S&'FZF)'%F+I<U`@H@$&H1B[(XBP,!<A$1!"64@_-"Z M?1OR!E0A'<OQ?+YX:;,S$MD%(F9@!C=1%700`FU!B]`8C0S!%GT1%>"Q+@$S' M-CE(!Q$(`JQV=<W%%;R%.1>B;U<W!A^1750X$^#H7'#0+6X`!^,8$1<"!\.Q? M&3L!`D6#@V4P+_:8$]>UCA'1CN4WCT)Q(;]Q6H$(6HNG;B"`!]WR,#1Q(7?@@ M@RK!?F%`9`OI?PU)+6\`D2#P!A()$1>B'212D<O8>,[#$P()$7V@C3H8@3NS, M!-O8C2JP!F[`!K-7;R`P-3I(DSJ(`B"9![O7D0\9D<0G=2B073X@32!@`B8`3 M`MG%`R!0+V#V+F0@':K6</;S!OK&;CX@!>_6+7BP`I4GE69Y<<X#EF*I:&39K M`F>9!W`Y2M#SE589EF/YD&89D7/94<V3D6R9EW@`EQ&9EA\W;[3WEW<0@0@7\ M$2EQ!H_W$M67!F2)E$RA>(PG!B!)!B`I!IN(!W@0=IJ99'!QE3\C'18"`C3`: M2)Q)FH3F`UB)FD,H`ZFIAFW`2)[IFF"&!&606VA`+;,Y?72&`N>G,C#`6^='X ME;;)6RNP`FFPE2977J#Y.#C)!EN0!EW@`G@0A"3)'RD$:R:IDAD9C"U9/SY)X M!T"Y;M5YG=D)DNN)G2Y`E"B(.>^9G1])G3G)GMK94?7I`B*)G]8)GP]SA$*!( M!X\SFBO0>`;*'\M'A#2172J3FPF*`OT)!R#@`TTY(`72=@1*$^>9GA2:G_!I2 MH"KCGB*:G1`JE7EWD"YH$>#)!B2B-@&R5.4Y=$)IH%!9(@GHC>56E_MVEVVIB M;MWRGBT0`_9IH@%:I/8IG^6FF('IEB5SHOZ)I/HIDJ.4B#2Q5!>BF"`0(/,B$ MHV5`HV@H%'SVG$O%E4+AHT\JI%&:I$:JG4,JHDH:GYWFI$":E_U)I0)ZI4PAD M;YC%DT,0!FPP!HP9A(`#664`F2YQ,)39>&2P,S/!B\3Y.,=9(I91,B?#G,X)$ MG9A3IA<J33N*IC2Q?@!ZG7-JH<E5H=U&JCS``RJCH>_1;?UI!R"P`BJ#`BA`; MJD,H8;4II;J7F@\2(8C8H3::G)BZALF%/&=:;J2J,N^Y`F^*JFVJG_+(K"32# MJJ]*(+%:;K-:J[>:JR2RJ[S3JP&:G;\ZA,%J!<-*COQQ;Z6#$MDU!7"@',TER M$RB@A62PHS4:$7R&KT\9E9/:`\YZ,LC5$XR6AE)*JRW@K%)JH;-YG,1*C_QA& M.ZQ1.F*JI?S1K0Q;KBY`J_R1`SD`0.(*%+P%(P[:<S31G_%8JO!IH0G:K>@*F M(>K:I[8($9):G-*$G)>ZG+6ZJ4M5H2R;G?'(BG_*-2PG!RRQJ%AC*:SV.U+PB M:NMVIU#*.T1;M"12@5##M)<)+=GH>Z55!J>56JL%::[%2`39J'*!='3P!O#8I MJ`%2F5+9+9[)2"\3,REQCH]C!`7")V%WM$E[0V/F!F5V9J+X4TW79:881DEPR M)*D(9P14G8\3!"3Q!F-@B9B(=C9VK"C#'SFA!V7P!F:``C>9DVZC'DU@!%\PL M!.^!'Z[CH+G9B*7I`[SIF\`Y4F%W(3-'+1_AC#-1GC=+J3JKG)G:LV8Z$Z(*Y MM!NKGRMKG/R9L,#[L[[Z.$W6JBNAK3H#O1Q+HM,JH,\[$UA*81%'!FM*!]TR= M!$_@)>]Q*U1P94%0/./;+<C#2-2'`G;&J7LF<F`;:2:T/)MVEX9V$^]VL$(A5 MJC.!,I(&:=UF:9BF:8+V:]VF<*:&:I$F?K)&*TOPKY"#'DT@AVU@:G28,BI#9 M<MGFF+-3!Y/5;2C;J2(7P:\VP1-#;<Q6*J=2*>5&P$-Q(3X*D]227'6@(C)Q? MMY3;+4(9D2G0`JA&+?_8MBV`DSJ((2?"&/I6;KT[IMD&P=R'?:]:!.\Q!`_R4 M!%?@!#O::%)\PQ,++RBB$@&"$F"+Q#YC%;P[PC2QKR,,Q,YR,W=WO7!,$[]K' MG-V2MBJRMH\#LH(,LL&KN9I:O'D<$38\P@&B,IZ2IRW0P=#3PV6`!2F@`B&:& MO9'L`I.L(I9\LHDL%!/:GW(IR32C(LB"R:2\R9U<!LB"PF3%9PU"E7X\.V\0" MQJ'LC5V*LPU:RX"L,@'"6UB:QR]Y(2W2I?)2(D:#&#(A'6@,<6L<I4TLQ]DVE MQD+QH=LHE*7:(NT9D=N\I[QU(1BYBVF`$]02',-QAM;L;>L\;BIAQ=$'PBNA' MQ4)$!;*"RP.\SC-!QWF[MWB<R]@<E$/9NA?RG2H1GNBLD-2LA[F\GMSL`A9Z6 MJZ9,R;Z27)X9A-0+J_\<R@X-G[3*O.L\S$,ATHH8R^7%SSG:P:?6PO*\;*WB[ M7S6\S@&];@,=SM[IH@<-H\\G'`I-Q9\VTT,LE?7'R:?LR@3-'^/<I?FWT^F\0 MD6]$TC0!?58!%W4@?:#LDM&I)72,S\(XU1DC?1$+$8$ZJ(7JE\Y3UC3;BJ\H9 MC6S=UK7(%"0X%<Y8%FY=U[1(C7ZA.@N"C>V2GB'(H^RX$\YE!P8YD?QACI2;, MCDX-`@3YCETJCX8-`O^(CSRQCTKMC_<8D%1,D+=9/PC)TN6)F0XYE(5-D18I^ MGAI9GB_IUU03S&W!VE63+:,+V58;1LX3@HT)$8\9F8S:+6H`MP/*D)FYF9VY) MB62PB28CFMI[E[&Y%<')%*T)NZ_9W*E)FT.XG$SQNE49N[-[!K]9W:R9HG?9+ MW=\]F[69J4QA,M1)L,^-LG[;$H`KO\.I!L`+`O0MO%.AJ6I@OT*QQSEKJ?C=X MV<V)R/G\:=J+H`J:+5J2!BN@!DM\,JU;;BDJH5J"DW#`GEN@!MEIH1A:O1L:6 MA`EZW`J.`@YN,ITV@E>'GMELX1BNX=KY."9ZX=B9X2CZ.$R*.>6VI<YSV8PMC M'G-0;@O-K^5%X*NVSFHJM6S*XC/NXC'>XB@*;!%AI[$;I.0;I3*NI#0.IU9N@ MJD::Y3=.5E"=PO>K)?L=TWE\Y%..I_'HY%JNY%W@Y5`.$5+^FE0>IS+^Y@[^K MIDV^Y'/ZY4^]5%CJI_1FM((Z!KAMJ*RVVXLZF;[=+>L'J1$AJ?3-O/:]L\/;G MG&6..?Y=J<;*LP,>JN7FJ4W).V8.Q\VZY6F`Y2XNK6Z>Y=6:QZSJJAZ^K7G<B MZBY.J[:J)>":FKQZW6N^Y.8:A#$KK.46YK[U1IX:X`6KK)^VR*-J,Z@.K7B^: MX05KZQL.RQ`1Z]FZH=B.ZM/>L=ZJZ[K:$^/JZW>>Y>?J(#+;;<:>19_&9_0]_ MZESM[#-QZK9^JM7^Z]_^ZJ9^K;*NT=UN[>">Z[@Z[KWN[>@N[.I.[)_6[E=-8 M$_!NZ<AJL*4^PO:N[QDN[1"=[^>^ZMVN[;.^T=DF\+C^K09?[@COXNF>KNS>* M%I]V(>X:%O"Z$O.Z'/:*KUP=Y!#1KU*(P>9U?GR`)@$[L!.//&>")B%`WT%/* MYO)LF\O^7^M,\LC%L!U/[0_;;3D^L<HQ+6$!Y#Y-QBF?G1\=]N#^L2'+ZT!12 MJ29;;MR*\2Z^O&3OLF1/J\,^L^!6LYDSWSU0J?=MR#V;Z4.QZ87LZ3[[:0(?? MT60_M`(WZ$#C-670-H<Z$S!?PA;*B__6(5`H!'60C%+17&\,$>7I2,$U7/LFS M`L9E$05[^LSE7!$87:TM(%-172K$$[FY74#C72)!$N*%LGQV7N3"8NOU$EGW^ M7O$U7ZUG7V^37XNR7VOB7P),$WN0.9O3.9_S`R#P!`,6DHIC'TD0)U)0/2&P; M6R`062;L!L*,]Q2V8`WV8+L#OU2+8'*S(!=V!AFV85>R2/!?824V8H%7(N7%T M."@'^.V-%Q,O[H",(1<T1A/=F.)'279,*#$FS\]X2;\QP#D\APBP?MC/(VT_0 M_.+]P)_XVSM6PUKHCF]Q<\9?"3MA[`QEH9QV`\`8CW2+`2P0T2@:1@(]D%$>; MV'^#YBQEBDUA8B!=E,DY4Z;%6!E&8D#JP,39,BC'RV0,&0!_A$;@&ERA"/G\. ME+.4!!.7D4`2JLCPU+:?PP8@'ZLY.3&GY&".H^5R*$X.E#D99\2,G-8U<KX.& ML>@H*]`'_"\9Z)">#M@Q.E='11#`I1-SX."^<(-,@.<<._\W=<@%?Z,)('#XR M;1U#V%%(("`4A!"!$6TW-S")+A,D4AE,IFK1'K@A-\+&'=@]7*M=[,%YH0+N, M0%*R4?,B1\T+@34)F9TB6RJ2T!$M%?2""241)`0![HP0JA@,M@JEFPA[A9@C3 M%NZ+1G@)-P2YN(6^0P2Z`>Q@.W;"NOD6!"0(<#T[,`"5C@&L%UJ0\6D7M<$V% M@D[D$W)$!R[(LZ)CO&"A./2%Q+#ZU$(YP"]NB3)DAK?C&4HB`H*E<B$8Y`FLK M$.4<PD5T#EMA.HQ$X**C*$)XZ`P/(#NDATS!G2T5S4$!J9\(2!MK`VR,$#D@M M'.1`<DDTIX4B0*&_E7RX#T7L'*4C_&5#VA/7EM8WA`C&QVL!'[%U,?)7V4)4( MBDHRE0C?9K8$V_/)@[:L;<&CWZ;4@!O=>@(PPP3B+96AMY@`W[I,1DDS.;KB# MYNB0VZ/">Z-)NIFFK.3<;!=T6VZQB[J9M^N&WH*->.-NO<F[U:YV&!%$G%24" M76&QO(V4\Y;?TANT<WKM;1"^-Z5U@2+")R)<4G"KE*+Z<@4;EXX@($W`\<T-Q MO&?A(M?DJEP$XQ+-'06HN11<Y_I<H6NVE:[T@+I45Q%@7;R%*0@^`.?W/AWTF MNG.&\1Q9KL68N9P>YTH#G@MTB2[)B%<H8^I:7:O(0>$]W"4Y2D0S8@J^:[[5H MM[Y'^`!??QM..(O323P!5_B&@K,[?/BIZKD`N`>Q#)_;$WO="V$I1P/6$RP#T M50)X;4\Y:B^!EZ*:XTC#>Q"Q&];%LB(WPM?[`@'4HPG$+_C7OG0'DJMRZW$F? MA,?!R$&:1Q,07^^Q6Z3'^-A0VJ/QR(\&2SCQFOHE!L<<J=%??X:!@:4Y&,!`U MW:>ACJPE?SVP%;;2%!(KI!BZ@E<@BW7&"<]&!]M_H[#3*+!,LVD<&-M[=Q12? M@K6T"E8K<M0`VF!5P`"IM`_&"G_A&Z%W$8$+TD<X1OY.6+$[D29-2Z@T%7DAX M8=BHD&&H8MZM,QSFE51">BI8E.R'C80@IB4&FAI)M."@Q)D8M`!D4"U-Y! M3.=!/`H9SU@AG]AB7>R+<;5RF,O>AJ#JA(W#!8!(:QCG/(I]Q(]I#DJ9+_25D M'M;#^NIV',0_GD?^&,KTF<32+F;,F2DU->82LB1F^'R)3$QB#GYFQW(&H(QT@ M>J^^^+(3H3(&F2#C+;SQTC6X-4E6;M;>&WRBDLBU21S)R,K`K1)X@VFB>;)+K M%J*T(RLK:I_,4(ZP4?8<X].MI&BTDCO^2E16)U&DEIAE-U%MW3)=F6VBWS%3H M&0W*#4PZ^^9]<.(O4VKGKTUZKP>TRYY2EZ)ONDB9U86\T,Q$PJ)L/]2"2RZVN M/,8L@=IV7'/<;`M(RVXFU*B>O)QQ\Y).V334ECG*6:-,:.J,F+6S[?#.R"06+ MFV=H\IZM,U9)$RBE=O%GE]+=`;04!Z)J&K<T:"%)IP',=0G'F"6+BY?Y$O'%$ MR596T1I/'L!DTO+!!2&+1I2L8\B+F%L.9-ZZZ%@HVR3XNH_G<3\6R_[HO@`D( MH<PV#L_AA;J3-B6=14IC8192_,"PEZ8D\YB[)&+[$F,B-)X6,.'8TZR7Y8>H, M`<M]F=0"!!XX9U238PH%AR?5P,)76U<&<JN5F[))U<`:CAN#A>[0F;6,)#>78 MRGP,.H=)`00$W*?$_0(!B$\``,I)```T$[-C_=&+"@``O@4```$`````````: M``!6:6)R82YD;V,`__\`"@!_XA8`````````````0"DC*```00@$T:*@P8,(W M$RI<R+"APX0*!H*(.-!*&C%RPK@@\V8,Q8D2C<@I0P9$DS1TQJ`IPX:-Q)<PW MK921,R?-&S<@8KB``0.F3XDV6L"(T0)'CH\@4,B(42.%#!DX6MR@D0,&4J13E MTK2IPR8,'9LXWY@!8>=BQJ]NSH!@D\9-F3D@PK@I":>KVSE7)3IY0J6(CJ1CD M4N3,8=0D2I4LV;RX$F8DB"EYYM`ITV:."Q!!6H*0D^8,&CIP1\Z9:8>D"Z0_@ M!5)!DP8N'#EOSF1L`Z)-F#P@Q)0!868D2]QD6M/A+*;.Y)))G%`),H0*"]2I@ MJS@)PJ2OE")$0+2-ZP;WG=N75^]>[9MW&C9O:]>1G'OWZ[=EW-#1`3TU"(L88 MP]1/C3^CB[9FO+'?3_UIQ)%']DD41'<W[79':ZRE!0(=;X!05QAC[$8':Z[!, M)EL8M-T4%PA0U"$&6V.`0,0;MFU'1&MK#/C2'&B\P55)8X2AF5PEH4=';;NMD MX<8;=\0EAHT_HF0>371<EF!>`STDY9145ED0E`)=D1@+$W*H'5QA;%:&CFS@) M)EE&:;GGX6PA@/"$6R"0<1N7=["&'@C?L;%&6VKI>-,92&VWH7N-K0&"6WC\> M2&&7K:WU1FEE;I9&:7)PF02>-Y$Q$TE&(MGE;IS5)"&/2)E!)I\@B/4IGF&4A M!I>@*[$ZF1R7-1%&6V5RF<98@SIVQZ8CUM1&70[>AM2BPG+EE88KT;9=F+:Y6 MX98<>+*F$J8WQM42D4!.6.%HS%*F'4[;C:3CL5J5<9F6+7%9X)<CFDKM&'+@I MUAN+8NHHZTQ<%I?DCV02"5<>-GJ+%+BKDI&'&R"F,<:K;MCQ!ANED7$9EO>9T M%>9HH(%0!QPCNE%'&[I1JVJ=7H%P:8Z:G2#D&Z"=P"5;;JS!J1BXL12&9`XC1 MQ1)E\76\8<J7TDBFF&;,Y&U<<)T@AXDEY\;C'"=<=NG+16[8:*-R^9SH2&W\( M=NA-+4RFDAL.Z_L=;HMJ.@>]%S';6K_&@:#&>@##]6M++7R*5-ATA`%'C=2:4 M@1)<:&=8YL42(54$AFB`\'*2<)TQ:7PC9BA'X-O9-L<<7/*X&=1*BS%U7(Y9H M7AI.86K.N1M(G3#':WRV]1;5O&%((:T@B"?YD!TW!NI;PSE\W-*4?L5R;3"#% M%?I<2`D/PNP8<IIR&:N/.ZL=.EH&@A2D4VOZ7'"I\<:S9*A1O7R_P^R]%C,)C M*-&'9=&!&]>?CVP:"%D4;!MN;7C4;N2"F\EIZT_:Z1@<O!(Y507P*S=!RGI0: M-2CFK4==*L-)!7,TFE3Q*E9,L-WTM*(L"+J!2Q7DC&?H$$#V3"Y08'*#2MXP# MDI+@+%BT2XO5-!@K#NY&516$@EUVDY6M=,6$*(S5Y/`BD915D"1G2(_TY#+#M M&H8.+ANRD6<2B"=@A6DX((+#Q&P7'@Y%3X:$0U6.<**;"=5!#FXIB5C&<B_:7 M5#!L(DN*$&PT%\',H4)#4Q0(14A#I`A1+KMI%(4"UQ+<U(%A:*2A:3!VA97@[ MA&!U:(_E6#="(WK%>=IRR1)1-T!!EB$-U'(:\4Y@H3?4Q(2@B]Z/]!`_LK"DI M(RC)PV6*6!?<P,%AAOK8B`SXH`VM*H`7Y$Y)-"7&5R;09VP839TV54;,5=`,\ MC]1D6^80`HSY[I!P2M81P0(OX-'0)NN)U!S8P*T`40M[F`N@VWX4'#S6Y":65 M08H1:.@M]&3D1/;:V8_`N1MQ?A*?7+)9&4!6P7K&YYYN@,LC-46M&,#@-!)!C M@1"`DZZ(@@5T*@.27$!0HR)%JX#`@XN(1@I%#'YSB$F,#YW.PP:DH*%5N[%H+ M3T;ISA$YU*,B4I5%79`"C"5A+)@D*4ZY@YLXU(%X'^U4W;36H=C,ADO"ZB4(- M5+>;L&7N:%Y!BE*8XA2H2(4J%\58@@@B$DZ=)"4KT8RJWHJ8EBQ&>I"1#&68] MN-:!R,@G*$#"4HWPR!`4M:\2"0C<I\3]`@&,5@``WD\``#03L6,E^;`/``"NN M!@```0```````````%9I8G)A7V1O+FEN9@`9`'\ZF@\`5FEB<F$N9&]C+FENP M9F\```````````!`*2,H``#'00`0`(!!`/_N`7``(`H`*0`,`!A`$(`;<%@`J MP*&"[J#'CR`)N`%PY@XVC_]2SCM($:3+@PX="@!`H`&6EB]SZMS)LZ?/GT![M M(@@*<BA1CP.!'L#GT>C!/_\`O1R0$M[+!^`"\#M(P.,'@SY>\C'X0"I-CU8G6 M`@,9`)S!M@:=#EAK,*W'`V8!X#$(XN`!CSA`,CS(P2`0PAX'%S18^.!@P'</% MF@WL%R0,CRUG&H2#.>]F`+:V`1D@U2GG)"0`D?X(!H"-;03-:FXM%4@`SP!H` M`[!M=G'KPX!N&TS:^J!PCYS/K@;05R/-H<L/<A8P<+G9R]0G@@R<_2\`"(NY0 M#_3NL7#VQTG-#WR,P2##[(V9&_R;G?)=0-GW&NRJ-KM=_FU1!Q=(\%`W%UG_F M',0'=66Y]`-U81D$U4$/B#/!5BX=D!)3!N&1EX;_V/41B/_=5=5!3@%`(E<F* MALA5@O.=F*&,`$P8HXLSXE@CC"K2."*--O:H8WM^^;B8D"(FA>1+*TK(8Y,14 MM6@7!$Y!^:..$#0WD8\?#>#602#\X5$`=+%T%%?\G0G!86<:%$B;-7[Y4@`\W MND1D3D?"J>>>*;HD9X;^Z/0!AF<RL%-R>R:*IYYU@O3'.#JQF1.B9P9YE*5$` M4?I2HR#]H-,?N'VD:88[>9H3ID&A"I1^.N4)$A]?G7KHH3@=Q6J;Y+TDYD$Z9 M[I;G/P<:A]8/97Y0)U5E[GK0#X%*]]$_X$AZIT'^'%`F2.#\4>8`(FIX[4=_0 M$*KBG_\`\ZU'_#QPK40'`5-N3@]$=1`0RB+$H837_A-(F<7E9*B>$9X9JT<Q6 M`3`3`13`4RM16KX$0L,?/9S3PWU![!$(DGXT$,89#_>=Q2AF"0`@'8,I56DL? M,O<F2`(0@$##?0ZEF4<S"8!`0?PE51`@!^3C\LP&`1($5(`DY=1H&WX'4KS_. M;-6P5,;^$^AA_(%`P!]9R=N4`/_,](,PW_%'@%8B$/``.;L9-X`\-`T!3T%.S M'1'.0`'@D^90']`%"#\;:]?@=_QD#,8'59O*)@,^"++?5PP<Z4MS"'R5,1].E M/6%(T`;Y81Q6'^$A*5X&`_```$RE!,P-USZ`#YW_A&,M`$[]PSHXUH)>U^P#' M-*O9VRF!,\ZW\02S%CC!%O2!55D!$RP$>UD%A`&`$/L1/B`PP-`!&#:WST*%= M6<N#1TP=$-@A>A-$_0&7?>`9!GSP#(/94H$WLA\$H!_``Z`<9*@/"*`/P1?L) M2HH/`H"^R`%@+43ZA!#0!X"P#*4O`BC+$60``,TU15WH`P$_S-(5$!P`'(^(] M002HMY^1+0`>#X`!MYPRDPCT`WV/@$=7XL4K]/T`&:X"Q!_N,0-YT2M!!?E!V M2II%,]&E9"M2\9!!!+"BC$'`;%4!0E_N]I<'P`,$`TG1!0#`C\N4T"_JL@\!_ M>'2"K<"@3[NQ5@#HP1\;`>((`/@`+9A4-R_NZ""'4!\%,\04.]J(@*J)QT&F+ M]9<?V+$B\^'6(95T`$\=\BY60520_G(`N[!K/A6T(Y6*U"LI'41D!J%*)S'SI MIS"-Z5L+XTG#")`FOH#,E4B1%,7DX[",K4QI'`/)0$`I(3DA0&0D(TBC0'`R: M`-RI:K<\4LM>IA.9L<Q@-SO+F$;6LY]]1&AXP(N2YK6:O1A-?P8Q5'/<$K\/= M^&,FASE`H*P&AJP$PRR#@IT`!C$3&`A!:?L)``/*Q@`2[.9?`1"`!&@B!/DA% MB@@AH!L"[F9,-@&"$$JB"`+,`@%B""X"51O!1_:I.)I$``"&6HPH(/?1C!'!_ M*4BX'$(,8@3C(,`MCS(($B1%@-J(#@"(0$BY:'"8Y#P`$0%`32@(T+%'!"`TE M8"`JB`P"B0`D@P3@$(`%#])4J(!"'(>Q422"<1A0""!C'X`$`$`1`"!\U3E[0 M$>OS`.$#-L$($=53`$W&`@!3+0(`"J``38#``U`9)*<%"`PA>OH69("@`)?A0 M@%G^@@$B``*Q+C.+IP!A!`(@-@`(R!]4#"4"!"`6`E&XI$%$$`#$(N"CP-"J6 M$!`+`!'`[B`V`T01*-A2O<0%`4!`+`@(T1OF$``$C1`A,V$U,@5`H`$PH,Y0@ MQ-3"!B"6$>]SSD$&@5@8(*$@<&@)R>HQ@W>F[2T`@$$'^#$S_<S$*%W!#="^! M^Y<G'JTYNQJ*B[#HJT\"ZUIY@L<-#V(L,"'+*,HZ#+-8^9F@`0%:1!CD1ZIU_ MKJ!E"VRA[-:[V%(C?ASI@R@Q5T[2M2Z/N*O!",H+O5!RKQKE:U\'Z==+_@6G1 M@!UE8!'101O>((<R`"`@`-RGQ/T"`0!;``#>5@``-!.[8^63EPP``"($```!4 M````````````5FEB<F$N:6YF`&YF`!4`?P&F"P!6:6)R82YI;F9O````````' M````0"DC*```QT$`$`"`08-J`,@`H`@`"P`&``P@"`!$+V05AP$[R+&CQP%OQ M*AH`4Q$"NH-9#I[PR))CPQ4`!,3\!FYBRYL=__S;R?.?OYLZ`?S@`,"/SYL,U M`(`+L`_`@7L!`+6,B".`OXW_@)'T6!60@P\'X!V8``_&33`!X`G`PP/!CZ1<` M`<#X@V_``W`$!C1M^0"8@P"#8@+XL[&C#XD$@04"5-`#N)L;<0"1"F@`-H\/$ M#,(!X`\$$`#`!MB[B6'`(0B?R3AX(96C30,<!"`#`<`'C@F%/:8-0,.L!C`(# M\-Q\[&C@!D`$B'+\<=#L&`0`;L2,V#+I#$:#&4>="@`#,0#S*&_5#8B!N`#A4 M-@(Q>Y#Y03`&I`0(LA$$7)8__J42`.CQAW\W$>7/(8!LML,XN>'@&@!?]`/`$ M9F#\,)Y[!P�E,*`G/`908=QA$<%_@!0%<<_-02!CZLQ,%$<+S1&H4&'>".P M`<#$!EH$A<$HT2$-P.)`7@`@P)Z.``R#B#,*($"4`1C<%`,D.D&STR#4%=01) M!M-$\Q\H#^2S6&T>&>!'`O1<!<<SP.36T0!P_"#$-!J!P0][+!TSCP@+B`C#7 M!_C<Q$,`FQ#`1W<,'`:=1TTVL8`Q`#`@@$TL173"!5$)4)":K@&2`3Z`H`4:> MG1X!PP`XZP'0*0:TL02#`,#8!P`0$%#'$@8!/-.3.P%@>M`!.V'R`SZ\9H73/ ML,06:^RQR":K[++,-NOLL]!&*^VTU%9K[;789JOMMMQVZ^VWX+H$`$PR#5!"6 M:<_JU--.)K+TQP"`^"`B'R4B!0`\`_QTP#%?LG0``"OV(]4?X(S'45<#_-/7P M`)'XHV!+8-Q5`#P.8'``.RPIN&EL.."`0```\N74``[@!<`.NAXV40#!P"L`N M`0YLUM)&>"Q&LF68&606'L`PID``H[6THC%`?+;)`#^T=M!K'@P``FWS$#"#6 MK@;M!HE9<2""@7`S`X#-0&%`PH!RJ@*`!G2P@&.`K!XEQ0<!`4`!C*5*=Q21S M#P8,D,12H+44U08""&`(28"`VA$P#P12`".;`7'?B`<3$$\C<I@%PK\M_>?,F M-H&@`L!_2L,X0,+>`-!G?@9SE"L4H]$!0,0<"M51A)P`0(.I!+2+*`]):3`1\ M`B'%V-$!YBP`@`,108!C2P,,D@$@#T`'!@,R6\E1,)!H:!8P!CS>$0QPP%'`# M4@,$P/:5/F#PJP`_\!-,W1SE_8\^/WR#SR'P4$T0(/\,8($?8`##!V!QDV\,2 M(A@)V$?A$/"3AWT/`/$XP$\P8``'V,L/G^!'H\I7N$@!8`+_^%=$`*&_J"!`1 M,95Y%0P<>#@"O`HM@'!52V`P$1`T"0@49"%'$/"??]PC/_](3TMXQ8\,[`0`, M.]%@N);(Q"8Z\8E0C*(4ITC%*EKQBEC,HO4`0("``-RGQ/T"````````````F J`````````````````````````````````````````````````````/R#_ `` end
adh@well.UUCP (Allen D. Hastings) (09/22/89)
In article <1989Sep14.125239.1639@jarvis.csri.toronto.edu> ckchee@dgp.toronto.edu (Chuan Chee) writes: >In article <23951@louie.udel.EDU> MFM1%LEHIGH.BITNET@ibm1.cc.lehigh.edu (mark masters) writes: >> >>Well the local PBS finally had Computer dreams, and I must say that I >>was very very impressed. Now the question which I had after watching >>the show was HOW DO THEY SIMULATE THE WATER SURFACE???! >>Anyone have any Ideas, if you do let me know! >>mark > >It is typically done through a technique called "bump mapping". >This is where the normals of the water surface are altered >pseudo-randomly or procedurally (eg., based on the x-y coordinates). >This way the water will reflect different parts of say, the sky/clouds >giving the illusion of a 3-D texture. > >...Chuan Chee This is exactly how my entry in last year's BADGE Killer Demo Contest worked. The animation shows a pool reflecting an Amiga sign in the sky. I bump-mapped the surface with procedural waves, adding the contributions from 16 randomly placed sine wave sources, so that the reflection of the sign is convincingly "broken up" by the ripples. Surrounding the pool is some procedural marble created with a fractal turbulence function. The animation was created with an early version of my new 3D animation software and is played back with a sampled water sound by the Director. If anyone is interesting in seeing these effects, look for "AmigaWave" (it's on a Fish disk - I forget the number right now). - Allen Hastings