EDEN-1.62/0040755000177700001640000000000010256252772011163 5ustar empublicemEDEN-1.62/dtkeden-1.620100755000177700001640000254262210256064266013124 0ustar empublicemELFX4 4 (# 44477 7  ;#l  ((((( Qtd/lib/ld-linux.so.2GNUc5]`Q_*CE\T #Y(gi6 '>7<A  ;w "l9r{BH&o.by/ 2: I4 ah8Xz $,DFj)xNkM }Z-L %1mdVv^K?PG!qSRWe~0uO=[+sp|J3ȳ سG;  &  (:,8Hlq X hg&x m3  ȴ ش   !6 (r 8AH* X| h8x] ' %SKȵ صW_ p { (: 8V H#e XZ9 hxU- <t &o0ȶzضq D<  (I 8 He X hxZR  <ȷط? 9  { (d184H0 X:`h xa yPn ȸ ظ .X #(Y 8A H6+Xy h1 xX! 9t J@ȹ\ع @  D it 7 A(8]  HG?XM hP x5+  zL Ⱥغ L_ Sd(#8HF X6hC xF  d,Ȼ6ػ@ R MtD  (" 8VHX:>hex q4 ȼؼ<M7  $ +(38H- Xh xFDVZ  Ƚ\Wؽj : D  ( 8+yH X9hx(; m ' t Ⱦ*ؾ9l r! L W (8=H X:h>gxO[ ;[ Zȿ ؿX |( 8HX hux]{=j 4 $  Vl  X- <X (8{ H H Xhxh /< &3KW 5d $ L <( d;8^ H X^- h(xF-U 4) qb2s &5nU H  (r8( HX\h x P  gl z |-& > (i 80Hlibtk8.3.soXMapWindow_DYNAMICXGetVisualInfoXRootWindowTk_CreateEventHandlerXResizeWindowTk_MainWindow_initTk_SetGridTk_DeleteEventHandlerTk_ConfigureWidgetXSendEventTk_SetInternalBorderXFreeTk_ResizeWindowXFreeColorsTk_MainLoopXCreateColormapTk_CreateWindowFromPathTk_UnsetGridTk_InitTk_ConfigureInfoTk_SetWindowVisualTk_MakeWindowExistXLoadQueryFontXQueryColors_finiTk_DestroyWindowTk_NameToWindowXInternAtomXAllocColorXCreateWindow_GLOBAL_OFFSET_TABLE_XSetWMColormapWindowsTk_FreeOptionsTk_SetClassTk_FreeCursorXWarpPointerTk_GeometryRequest_Jv_RegisterClassesXUnmapWindow__gmon_start__libtcl8.3.soTcl_GetVersionTcl_GetStringResultTcl_EventuallyFreeTcl_InitTcl_ReleaseTcl_PreserveTcl_PkgProvideTcl_DeleteTimerHandlerTcl_EvalExTcl_AllocTcl_FindExecutableTcl_SetResultTcl_SetObjResultTcl_NextHashEntryTcl_EvalFileTcl_CreateInterpTcl_DStringFreeTcl_InitHashTableTcl_GlobalEvalTcl_SetVarTcl_DStringAppendElementTcl_DStringAppendTcl_ResetResultTcl_GetVarTcl_AppendResultTcl_PutEnvTcl_DeleteCommandTcl_FirstHashEntryTcl_CreateCommandTcl_NewIntObjTcl_DoWhenIdleTcl_CreateTimerHandlerTcl_EvalTcl_DeleteCommandFromTokenTcl_CancelIdleCallTcl_LinkVarTcl_DStringInitTcl_VarEvalTcl_FreelibGL.so.1glXQueryServerStringglPixelStoreiglTexImage2DglReadPixelsglGenTexturesglRotatefglXUseXFontglFlushglColorTableEXTglVertex3fglXQueryExtensionglPixelMapfvglDisableglDepthMaskglMatrixModeglViewportglBeginglDrawBufferglXMakeCurrentglTexParameteriglXChooseVisualglTexCoord2fglGenListsglLightfglLightfvglGetIntegervglXDestroyContextglLoadIdentityglPointSizeglPixelTransferiglPopMatrixglClearColorglDepthFuncglGetStringglMaterialfglLightModeliglPushMatrixglBindTextureglEnableglNormal3fglCullFaceglFrustumglClearglMaterialfvglShadeModelglScalefglTexEnviglXSwapBuffersglTranslatefglXCreateContextglXGetConfigglColor4fglBlendFuncglEndglDeleteListslibSM.so.6libICE.so.6libpng12.so.0png_set_strip_alphapng_get_rowbytespng_create_read_structpng_set_sig_bytespng_set_gray_to_rgbpng_get_gAMApng_set_expandpng_get_PLTEpng_get_IHDRpng_read_infopng_destroy_read_structpng_check_sigpng_read_update_infopng_read_imagepng_create_info_structpng_set_gammapng_init_iopng_read_endlibXt.so.6XRaiseWindowlibX11.so.6XStoreColorXGetRGBColormapsXInstallColormaplibXmu.so.6XmuLookupStandardColormaplibXext.so.6libdl.so.2libm.so.6logsqrtcoshtanhatan2powsinhlog10expatanasinacoslibc.so.6longjmpputcharstrcpyioctl__strtod_internalstdoutungetcstrerror__xpg_basenamememmovegetenv__strtol_internalqsortfscanffgetsdirnamememcpypcloseperrordup2tolowersystemfeofmallocoptargvsnprintfselectpopenpipecfsetispeed__ctype_tolower_loccallocstrcatchdirfseekcfsetospeedoptindstdinstrstrunlockptrandsignalstrncmpstrncpyrealloc__strdup_IO_getcstrtokforksscanfstrncatfreadgettimeofdaygetoptlocaltimecfmakerawgrantpttcgetattr__assert_failptsnamestrcmpgetcwdfgetcgethostnamesprintffclosestderrsrandomfputc__ctype_b_locisdigitfwriteaccess__xstat__errno_locationsetbuffopenfileno_setjmp__ctype_toupper_loc_IO_stdin_used__libc_start_mainstrchrfputsexecvpsetsidtcsetattrvfprintfraisefree__cxa_atexit_edata__bss_startGLIBC_2.0GLIBC_2.1.3GLIBC_2.3GLIBC_2.1  ii   si  ii  ii  ii   @ eD fH L P               $  (  , 0 4 8 < @ D H L P T X \ ` d h l p  t !x "| # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L$ M( N, O0 Q4 R8 S< T@ UD VH WL XP YT ZX [\ \` ]d ^h _l `p at bx c| d g h i j k l m n o p q r s t u v w x y z { | } ~                 $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |                                            $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |                                             U,O5 % % h% h% h% h% h % h(% h0% h8p% h@`% hHP% hP@%$ hX0%( h` %, hh%0 hp%4 hx%8 h%< h%@ h%D h%H h%L h%P h%T hp%X h`%\ hP%` h@%d h0%h h %l h%p h%t h%x h%| h% h% h% h % h(% h0% h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h% h% h% h% h % h(% h0% h8p% h@`% hHP% hP@%$ hX0%( h` %, hh%0 hp%4 hx%8 h%< h%@ h%D h%H h%L h%P h%T hp%X h`%\ hP%` h@%d h0%h h %l h%p h%t h%x h%| h% h% h% h % h(% h0% h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h% h% h% h% h % h(% h0% h8p% h@`% hHP% hP@%$ hX0%( h` %, hh%0 hp%4 hx%8 h%< h%@ h%D h%H h%L h%P h%T hp%X h`%\ hP%` h@%d h0%h h %l h%p h%t h%x h%| h% h% h% h % h(% h0% h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h% h% h% h% h %  h(% h0% h8p% h@`% hHP%  hP@%$ hX0%( h` %, hh%0 hp%4 hx%8 h%< h%@ h%D h%H h%L h%P h%T hp%X h`%\ hP%` h@%d h0%h h %l h%p h%t h%x h%| h% h% h% h % h(% h0% h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h% h% h% h% h %  h(% h0% h8p% h@`1^PTRh:hH:QVh@US[g9P4tЋ]ÐU=T u)( t( ҡ( uT ÉU tt h ЃÐUWS p|1҉DžtDžp xڃxp$jjxPh e[_UUq;w $?;øBa ;;鸗;⸝;ۍvU ~ t DÐ h@USP @] tk 9tt  ]ÉB P5t  t t  븃h;hn1ڃ j@ @| t/ @u| P Ph;5D zڃh;떍v S Ph;5D K vU @u JH!‰ Ív5D jjh;͍vU @u j 5D jjh<<эvU tm 9tUx A ÍvA P5x : t x  붃h;hng1ڃ j@ | t/ @u| P Ph;5D ڃh;떍v JUH!‰ ÉU ÐUx  DUvUjU9ÉUWV,-<}عfh ut6 h _Xh;<VZYV5V-ue^_Ãh?<ԃ 5V- PhA5D $UVS @ dPD|  @|  VYXhC<VE Pu @ dPSLSVXZ5V- V @u Se[^ÍvPShM<5D ֐P @ dPh;5D 8h;hn1ۃ" 5V- Ph(A5D $uUSSXZh_<SYXuSXZ5V-u S]à 5V- Phj<5D  $USE PuhS uzSh<  ;H,t+PQ҉uP<uPh< ha  S5` h<p]Ív ha {qvUSE PuhSXZSh<AS5` h<5D ]U u uh<UWVS @ dP}K|  @t P @ dPh;5D | u VW @ dPSUXZShn tS5` h<5D 2 @tPShM<5D  S)   1;B,vLHC0<P    ;B,wfz{ h< p$ph<XZ phc  B$1H9}.B<  hR B$CH9|ԃ h=3 BHBT B$_. t5D jjh=)<  #~x  t5D jjh/= =  j tP0RPjjrT ?B htPh@=y hY=lp=# C0~= h;hn1ۃ P5` h=5D  VW5D uY[5D j &$JUuhnmÍvU 5` h=5D | 1ÉUh ttAh4j.$ F 5` hHA5D | Ðjj$USjhm|  p ]PSu PjujUL @uX up  ujh&]5D j0jhAJːQuhM<5D 돍vup 0hA5D L h5V- u=p X tlX p u8p I *5D j"jhAP2hB5D [5p 뤺d 5D jjhDBD `5D jjhdB#"p S0hB5D Y5p hhBm$X $d | vU u u=p X t$X PE E6d ڐUVS 1ۅt; jh h 4h‹ CRBރfB u̡ 1ۅt9 jh h 4$‹ CRBރfB u̡ 1ۅt9 jh h 4‹݄ CRBރfB u̍e[^UuUE`   < ÍvUWVS<` U EfEƋy A,Eu  @ fUfPUƅ@(@$!J @ T  BBtf} - Љf}SPuEȋMP:PE$f}P=t=PhB5D     0PAZu|  BT BHtiE- `  u e[^_ÉP - ЉPhC5D 뷋B;H t P=z @u p ;Qr hM<5D Ճ j| t>|  u_u]| t uH S uy| t넉PSh=5D ؐPSh=5D 5D j jh>9x1 fB%@ft L.CFރD.t9h>EP+ p1ۉE؉ Q| t^ @u0| UB V p  B BP؉Qh;5D 뫃h;hn1뗃 h| t= @u| C @ Phh;5D Ĩh;hnZ1븍vUS 5D j 4<  9w19P0c t>P5D  9vы]UVSt ut @ 5t 0 h | r @G| t >/$hj1nP5t % @ SXZh5t Y[V5t $| ts @uO| h>SXZ5t S$@te[^ÐE&>e[^nPhh;5D v떃h;hn1ۃQShM<5D FVP"1Phh;5D h;hn$1SPhM<5D ( hHC$U 5` hpC5D  hB>h D5D ÉUh`>he>hj>5` hr>5D Yt u>Ph>5D 7 h` h>5D 5D j>jh(FhB>h>5D $vUj@h` bu  ` P5` h>5D $UVSjhhFjt ue[^ÃPSPXZh>S3Y^hp StPh>VjW붃Z0 PSh0G6̐UWVSh]} jDžt = 1h WS` [vPh>³3< `-hp Vt~QVh|GxSk$o VWjl Bңl ajh$ Y$e[^_V5` h?5D yV5` h?@ 01ۃ@  l ؉ Q|  @uk| ي@\tNAu S| jSj @u SnVShM<5D ۀ8nu@ P؉Qh;5D mh;hn1ۃWvWV5H jz5D jLjhG_5D j%jhHP5` h0H5D Ѝv hxH?US]j q| tE @u$| CC@@]Pj h;5D ăh;hn1밍vUSQ]u]Ð SuUWVS} WZE؋CE @CuBu9 SHuGGE؉E܉FEFe[^_PShM<5D 밐UVSuF @Xu] 3;FPR @Pu# SHuFFe[^ÐPShM<5D ^ƐP3hM<5D EUVS ]sj FCpsXu SEBBe[^ÍvUVSE1t1@Xt 3FVhH5D [ue[^5D jjhH#UVS]C9Ëu Mt(tv;ptP19H!u1[^ÉIu1ԍvUSR] ۋEtA9t=SPS @u]]vPShM<5D ڐ]ÍvUMSQ9ʋ] tPXI $ÍvUWVS }G9Njut;t)su uNtS19H!u1e[^_É1USQ] ۋEtu9tqSPSCt @u< s @u ]]QShM<5D ܐRPhM<5D 뭐]ÍvUMSQ9ʋ] tPXI $ÍvUU1ɄtB1uÐUVS uV tV3t [hu1ҍe[^ÉUWVS(jl| S @+| 1} Q|  @| uPE K<fCE}CC CfCTECC,C0C,C C$C CDECHCDCPECTCPC\Ec j5@ B@tt4 BF@ ;p~Ǎe[^UWVS, B@xt h) BPB EȋBE̋BUȉEЉ%=t R ZYPh, EЋ01у QX_XVS詡 uSfEu؉]腨e[^_ÐUWVS< EB@;pW B@tt2R/ B@Eċ|1ыEԍDEFEă ;p~Eԃ @P袱ǡ @@;p) tW迚 @F@ ;p~SuWfEu؉}薧e[^_ÉUWVS  EEB@;HE h;B@Utt4 B@M|GE~* ÍvPt7t747 Ku EE B@M;H~ u$ e[^_U @@P~fx t1P謯v@vUVS B@XhBB@ppp l up j5t $踾 j @@pjR$萾4$@ϡ uSfEu]ۥe[^á Q@@phL5D ѐi h\ (UWVS, B@HB@@E9EЉE̿ {vhrB@t8t848Q @@\8XZhp S՛t` jҟ SVj>EΠEЋẼ 9E  뉐ׁVuEfEPu؉E躤e[^_ÉPSh|h<뫃 hPx USS KQz~MB = |B= ~ -w1fzt]à jAp ppC@pi ׃ hʼnUWVS}W119H!t1CRuPfEu؉EͣS1F9H!uЃ Ve[^_ÍvUWVS}W119H!t/CQuPfEu؉EkS1F9H!u҃ Ve[^_ÐUVS B@XB@fH ى%=t&ft SZYPht1 BPB %=& rV tV3!tuPVhh<ʣQuPfEuEkfEC$5 uPuEGCt}RufEEPu'C,$C $ C@uPfEuECD$GCP$$uu hSʓe[^_f@Qu hRu hҋE t"M CtЃ"t!\tACu"C\C\\C"f[E EC;PP vSt0t0401UE у;P\ } f,E CEU ;P~f]PE 0hPE 0hPE 0hPE 0hE EEE ]e[^_邒PE 0h WE 0hVE 0hVuh#SA1 u E%fH\ 9tKR=WE0h,UWVSU8u e[^_É P譑($蟑 jh]P蹊^_U2PfUBjuu^_hu 1Rk;u}2Eus@nzuE E4Fl;u|΃hxEu D kY[h u j1[@hu ]j$h%uhu hu jq S[ s@9t C<<t2t C<< t t C<<tC<EE S. s@t C<<t t C<< tC<EUWVS}t!jh4hu ee[^_þEEE t Vs@x[huE}~ɋE D PU艗E쾥EE t Vs@$x[huE}~h\>juuG~EU9U侥}'EUVs@wuEE9E|ًUD 1s@jVhFu ƅ͐ Scs@Vv SEs@UVSE0E 19t3s@v@)wufNfSf9Ѹ f9te[^ËE Ee[^vUWVS, B@HfH ft0%=t" P^_Ph^ BPB %=r VC 1ۉEtV3Ivt,ߋ[huSufEEju袋e[^_Ís,9s0t`C= tI= 8=  t1҅ts8R!C8PufEuV-wʺ ŋt @ 3Ct @uu s裀QsssQXZVS4t9ChGh @u Si1&PShM<5D u֋ChUԉ RPhM<5D uqQPhM<5D }u:B0ZfH UWVS E-w~$ jE e[^_à j觓U  j薓U ӋE x9 vutt4Fp 9E ݐ u닍v j:U 량US j"hb @pp0uSfEu]>]ÐUS A@@hzA@ppp } A@XxrAPz~OBEBEB KEt!vPuuuK贈u A @p]áT EX E\ 멃h8hn諉 n h4 $U PBH~8hBppp *X @Z@phn8ÍvhUVS B@;pM hB@tt4YX @@t BF@ ;p~We[^U B@@~WhB@ppp R @Y@p^rtRuPfEuEo hĆ UWS B@H~}hB@ppp Ȼ @@x1щ $:X @Z@pS~$fEx uPuERe[_Ív h# hUfErRuPuE ÍvUWVS, @@Eԋ@EH]Ѓ S}s| P @)| Ũ}~:]Ћ}̾KhEt0t040蜺UԋD2 KuӋEЋUDphp h{$ pXZjSo$w$x^_u̡ @@pjv@t5 @u uze[^_QuhM<5D oԡ @@phĄSufEPu؉E荄PSh;5D oh;hn装E h\+[vUWVS< @@E̋@EH>h6Urrr E$蠍}E~9]ȉǾKh6Et0t040ܸŰD2 KuӋEȋUă DEPq@tOnud 5H mÉ$Dn^_Su)vYu0nXZuċEptƃFte[^_ÃUrh== 5@ zmÉ$m_XSuuYum ufEVu؉u؂뵃 hUWVS| @@E@EHhWUrrr 袷Y[jEpoE P }E~:]ǾKhWEt0t040HUD2 KuӃEUDjh`v Vk Vt-Ct&VPLtS1 H!u1e[^É1UWVS8j]1gщ $O| q @<| SPEZD$ Pbũ 3躓j EEEO|  @|  E@j$O| te @uD|  B zu1  eH[^!‰_ÉPj$h;5D L뤃h;hn&b1둍vPj h;5D KAh;hna1*P߹Qh;5D Kh;hna1UWVS< APz~B %= h A@PBE؋BE܋BEA@@f}K=  1 DB ыRAY qAM܋Y$R9ډ ~; <tt4tt4r uG ;MODž)9}n$v 4Rtt4Et0t040 u + 9|$)+[ P gۉ~ ߉@ Ou ++[ Pgۉ~ ߉@ Ou +9É>[Dž$+9DžvU܃B ppr B ppr 藥 /PBt2t-E܋HAttq@r@oGs$G+ 9Z + 9 +U9ljỦU}.1ۋ؋9D G+ 9|ԋ$ +B9ljC9p;XtKV+RT9tv9zR9uv;u+@t9tFV+RT9tv9Z'R9uv;u$G+^ 9lj EȉẺEȋ +9}.1ۋ؋9D G+ 9|ԋu̍E9% j eH| 4 @  | F‹AYVHD ~U 4h7SQS5V-h5~V밋VR@@tGtBW4h]S_Q SF@@p@vU9$ S8G|  @ | Dž9}1TTF9Ɖ|ϋ$+ 9‰; Q9B @BBu A0@NF0D$+ 9` ~D$\ LQSu苅$+ 9‰R+@D; R[E܍P @ XJ\B`AJY4hRVNXZV5V-2D1щ $`YXWP PWfDžHHLV B@RfDž884h]V` dM RVE܋@p@,$+ 9É`P@ $+ 9É޿;{P W3huPLR5V-:0 G;{~$+ 9|sPsss uu܉؃ uP蟆CS e[^_ÉȺd֙QR։ș)VW3hRKQ"1DžA;p 4hQVKS5V-.\B;p~B@D1ى Q]YXW_L PWfDžHHL/S B@RfDž88B uuu-B Epp0B uuu BWSh&V9jV5V-3PjjSfE*] uuuAWhh4V-9jV5V-<3PjjSfEn*] uuu^AWhhBV8jV5V-26PjjSfE*] uuu AWhhOV8jV5V-2RjjSfE)] uuu@$D$D$ P ` TAh\\(`  ]p` p;sPEpp0Epp0uuud5 Me[^_QVhgh<DAPVhgh<+APVhgh<ACPVhgh<@DžpP;Z xL|Dfxt0WdqqqqhlV6V5V-vplPp ;B~?lPBtt4^plVT X D\ DT U:X D:\ D:Epp0r rr Epp0lv,v(v$轆1ۃ @$%=U B@xt h hB@ppp sh @@p ppr B@pB@pÐUVS ɋu u>ue[^Í S4 jhS.XZVS-^X5V-$,U B@xt hĚ hB@ppp rh @@p ppq B@pB@pÐUWVS= trE 8tM9u e[^_É S3 jhS-Y^uS,XZu S,^_5V-$+롍v1Ҿ}ˋ} у L Q)Y^uP.XZhS._Xu S.Y^hċS.XZSh  @u SM1 WShM<5D &ېUVSu >u e[^É S2 jhȋS+XZuS+YXVS+XZ5V-f$*뤐UWVS  B@xt hڋ} hB@ppp o @@= @E1у Q:(fY^uPk-XZhċS^-^_Sh @u S/e[^_QShM<5D B%ؐ uVz P7@}1у "Q' uhSR1;=@T-uXtDShn: @u S1/=QShM<5D $؉Shn,υtl1߹у1 Q& ShP0XZVh@T-` @u V.dWVhM<5D $ۍvSh@T-Lh hn: Vp < < < 衡1}1у Q& uh$UWVS  B@xt h= { hXB@ppp 2m @= @X1߹у Q%cEfY^Su*XZhċu*_Xuh @u u4-e[^_VuhM<5D "ԍv SS P551߹у "Q$ SEhP.E8=@T-tIuhn8 @u un,2SuhM<5D !ԐQuuh<) @u uPuhM<5D !߉th1}у1 Q# uhDP-XZSh@T-i @u SEPShM<5D !1ҾЋ}ˋ}у L 0Qu#uuhpPB-Sh@T- @u S?+PShM<5D  ۍvh hn6` Vp < E< < CF- wJ$E1 >1у Q" 6hnPEp,Ǎvh vvv51п ˋ>эL  $I"h 6hPE, h1߹у Q" SEh$AU B@xt hw hB@ppp )ih @@p pp i  uÐ B@pB@p؍vUWVS ]ts@?u e[^_Ð Sp < < zp tуh< S뾍vUWVSE] DE1߹Q 5 Eu e[^_ÍvSP ,Mt 8tYt98t @uEEe[^_p(PuhM<5D Ճuh@T- 뭋U9Rr5 R.Suq}W19H!t@vh@T-st/IsuS19UH!uá 'usKуuh@T-jΐUSQ ҋE] u]É P?Nt] E]ax 8uϡ 8tʼn] E@T-]UWVS,5 4 B@xt hț6t hB@ppp Hfh @@p pp*f h @@p,p(p$ f @@PUЋX@($EGME޿޿޿ÌtQfESujuEg0 uuuJ ufEjuE90e[^_ÃEuЃ\POE뗍vEuЃPPnOE뎐EuЃDPROEojhhuLEԃvUWVS, 4 B@xt hgr hɌB@ppp ydhɌ @@p pp[d hɌ @@p,p(p$:d @@PUЋX@($ExKE޿޿޿ÌtQfEWujuE. uuu ufEjuEj.e[^_PűEuЃ\PcOE떍vPűEuЃPPAOEPűEuЃDP%OEmPuh،h<6/UWVS,=  B@xt h<p hB@ppp bh @@p ppb h @@p,p(p$mb @@PU^Xp(IE޿uUEԃDuPMt&RufEEju,e[^_PufEEjؐ޿u EԃP똍v޿Ìu Eԃ\yQufEjuEm,덍vU B@xB@fx t ho B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@p艉Ív@4ڍv@(v@먍v hn UU B@x~`B@fx tJ@B@fxt1@B@fx$t@( \$\$$V@(v@͍v@봍v h&n U B@xB@fx t hAm B@fxt h[m B@fx$t hwym PB@p(B@pB@pˈÐ hx?m UU B@xB@fx t hAl B@fxt h[l B@fx$t hwl PB@p(B@pB@p7Ð hwl UU B@xB@fx t h1l B@fxt hA l B@fx$t hwk PB@p(B@pB@pÐ h؜k UU B@xB@fx t hAik B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pÉ@@׍v@4뾍v@(륍v@댍v hj 9U B@x~dB@fx t hAj B@fxt hej B@pB@pvà h(3j U B@xB@fx t hi B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@p%Ív@4ڍv@(v@먍v hPoi UU B@xB@fx t h)i B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@p衅Ív@4ڍv@(v@먍v hph UU B@xB@fx t hah B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@pÍv@4ڍv@(v@먍v hg UU B@x~dB@fx t hɍg B@fxt hyg B@pB@p҄à hGg U B@@~7B@fx t h g B @pvà h#f U B@xB@fx t hf B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@păÉ@@׍v@4뾍v@(륍v@댍v he 9U B@xB@fx t he B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@p0É@@׍v@4뾍v@(륍v@댍v he 9U B@xB@fx t hd B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@p蜂É@@׍v@4뾍v@(륍v@댍v h 7d 9U B@x~dB@fx t hc B@fxt h9c B@pB@p2à h8c U B@xB@fx t hT]c B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@pÍv@4ڍv@(v@먍v hob UU B@xB@fx t hTb B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pLÉ@@׍v@4뾍v@(륍v@댍v hda 9U B@xB@fx t hTa B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@p踀É@@׍v@4뾍v@(륍v@댍v ha 9U B@xB@fx t hT` B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@p$É@@׍v@4뾍v@(륍v@댍v h/` 9U B@x~dB@fx t hT_ B@fxt h_ B@pB@pà hԞ_ U B@x~dB@fx t hTY_ B@fxt h5_ B@pB@pzà h_ U B@x~TB@fx t hT^ B@fxt@ $B@p~Ð@v h^ U B@x~dB@fx t hA^ B@fxt h^ B@pB@pR{à h@] U u%`    < 5D j$jh@LvU  < % u<  ##}5D jjh=эvUh@NhnÐUS h6 hn]kT X C\ C؋]vU 1ɋUt ;Tt#@<ŀ uRRhh R Ëŀ U VSuɋC 5C t>| u4uBC C t| u ա C ue[^Ë<  ȉȍBPVhh5D 빉 2P5C h5D C O<  ȉȍBPVhԠ5D  U VS  tOA-wAq x:vvPBtt4NI x ً Zu, PC P< P e[^͐5D jjh\NUWVS| ЃC }] L C B<  BD B :j' ۉXt Sf_- $   < Bȉ19d7P貎 Ph5D $5D uuu ;j5D j suuu ]SH<  <  ZEȉẺBEЉB < w Nt N]u wr   < Bȉ197GP谍 PhΤ5D < $B5D ppr0i5D j h< = ]P@xB|B < EhEP|RxQSUEMH E؉x< E܉|< EE  uxx|BEB <  u e[^_Ív  < BȉȍP7h5D 봍v5D j jh $5D u|xg<  ȉȃ BPxPh05D < 5D j jhh $5D u|x?g<  ȉȃBPh5D x P 5D j   < BȉF9|#5D j jh $5D uuukf<  ȉȃ BPSh05D < +.;5D j L  < BȉF9|f_RE E< EE< EE u"EEBEB < W\5D j jhm $5D uuuJe<  ȉȃ BPEPh05D < ` pE E< EE< EE u*EEBEB <  wj@y5D j jh$5D uuujd<  ȉȃ BPEPh05D < X*hE E< EE< EE u*EEBEB <  w@5D j jh$5D uuuc<  ȉȃ BPEPh05D < XJh7hXс < AЉЍP7hx5D l  P7VGP ZYPhd UH  < = P@EBEB < EIEEЉE< MU= MȉỦMU P@EȋBE̋B < EurUȉU؋EЉUU؉EE‹M= MM|*= ~ -w juuuQq à PZYPhO5D j jh$5D uuuia<  ȉȃBPh5D Eȃ PD 5D j jh$5D uuu`<  ȉȃBPh5D ,CE P /5D jjh|U VSu ]uHVSV19H!t#jswS19H!uߍe[^j3h5D 럍vUVS ]u C=|Q= ~^-w@VSz~X19vZPS5` ~]e[^>e[^Ðh hn ǃVS&~Y^jj3h05D dU VSuNC pVSC  tVSe[^ÉPh#3h< ֐5D j,jhT뙍vUVS0 /< =  P@EȋBE̋B < Eush{EЋUPMRQM؉U܉MUEEw@C 0C XZV]S0tVSe[^Ph#3h< ؐ5D j jh$5D uuu]<  ȉȃBPh5D (Eȃ P 5D j0jhxUVS ` uu8= s0` e[^Éh@hn ` SVr Ph5D ~` UWVS ]1 uu 9tu>s9u = j@t)ue[^_%E P‹C)$ 5D jjhPRoU = UM sH E cEn UWVSu ])W| tF @u& | 9t9ue[^_PWh;5D *Ãh;hn; 1USS] p =< sQSu5p 6p ]ÍvhzhnːUSp ]p )@P0| t? @u| SPl]ÍvPp )@Ph;5D Zʃh;hnk1UWVSu }]Yu]x` e[^_ÃSWr)Ɖ]=` 1x$XuXu $4$XuXu^u$낉UWVS]Su +] ƍE ` w$lZuc<$[4$S$KXuBXui$1E e[^_ÉUWVSHjYu+XZ5` u+.E` < = P@EBEB < E MUEj MȉỦEЉM؉U܉E|  @v5| EfE-@$1ۋ}ع Q|  @uS| uPFWuuu[Y[V5` %,$<4$Ee[^_P}عQh;5D 뇃h;hn1pE܉FwE܋UVFevU܋FRP];{E  V D D D D G]܃ ;{~hhnPj h;5D oh;hn1Y5D j jh$$5D uuuW<  ȉȃBPh5D LE P UVSjt h'Xu4$e[^ÍvUVS2t hÉ4$e[^USQEt=@T-t d t Ћ]Ã5 XPS&#uۃh/IS #uh@T-S"1҃막UuEbUSPEt=@T-t d t Ћ]Ã5 XDS"uۃh/ISl"uh@T-SR"1҃막UuEbUWVS\E-=$ԥjh‹M_U X1IQR2[^jh‹$e[^_Ðjhuu h]StX1ZIQS뺍vQu hԐjhK u h]S-^_jSY[jhKpjhjE ;p* Rtt4E ;p|F ;p~ۃjhjhg1E ѐhhnJU< <  uEE BEB < Ív5D j jhH$5D uu u%S<  ȉȃ BPEPh05D l< cqUS< = ]P@EBEB < EuEECEC؋]5D j jhd$5D uuuAR<  ȉȃBPh5D rE P ^UVS]fS= l= S= t8 ue[^3Pu Ph5D Ґ  K8t+D u QPqH돉C= = ~= lv j *| t> @u| rPZS8-Pj h;5D U˃h;hnf1븍v-C 9C$vQ3h٧5D - u vR3h5D UVuS,V19H!t( sXsS19H!u؍e[^ÐU u  Ð5D jjhڍvUVS       tP19H!ЋX19H!Ph C<C8u[ u:  u=   te[^ve[^ÐP3h 5D m뮃 Sqt@ u d SXd P3hL5D  QP3h5D j/jhЦmUVS      19H!ЃX19H!Ph #C8$q ud j\E$3uuuS^ FA  x=   te[^ÉR3h5D  tP3h(5D 5D j0jhT'vUSS u6  Ah5V- ]Ív5D jjh뱍vU VSu ]uLS< ˆS<$>CtC8uq S7T u j C8u S ` j jsj` à j `  jsjU-}` W>:< $stC8uH Sy)T u j mC8> ` jG j `  jsj[(V-` 냃>< $0{tC8uH S T ui j 0C8 ` j j `  jsjW-` 냃>1t$fP%ft B NC؉UBU늁ft&Qhl tUE@CYUCUWVS 5 EEX T % >(<ƍvfX% ftG  t9X $T @D-BX ãT 볍v m d< t\ )X ƀ@D-X :Njf4X%f.f_'!"JT @D-X EãT @D-/ue*uTl< t \ t!X ƀ@D-X T 5X h@D-~Ǎe[^_/ #u #u닃$u5T fP%ft4X T @D-BX kT +X t_jj jhAD-< h t 5\ tX ƀ@D-%e[^_Ã5X h@D-< t =\ tƀ@D-$뼃jh@D-aX ك@tB~fX%fu _X d e[^_XPuuhG< h t \ tX ƀ@D-5X h@D-ҋX T @D-BX "ãT tW\tuhhn몋X "T @D-BX T zUX T @D-BX ]< T t \  X ƀ@D-ƀ?D-1hAD-@D-I $=| tc @u4| hAD-St ]uuhh P@D-IQh;5D C릃h;hnT1ۃ듐5X h@D-$vWX @T @D-BX 'ãT tW\tuhhn몋X "T @D-BX T zX T @D-BX < T t \ t^X  ƀ@D-ƀ?D-hAD-=BD-uAD-EPuuhghhn΃5X h@D-ad _e[^_p t p 15X h@D-5T X T @D-BX ]%T tT >t <9< t \ tX ƀ@D-X 믃5X h@D-Љ|< t \ t!X ƀ@D-X T 25X h@D-/ljUVS A(Q 9Њ]}'Q(ABQ( P@(De[^ÍvA Pq t F 밃h;hn1܉USP BtuHtNztBB(B$ P?1҃ t tP @$؋]Ð r t 1vB@BUWVS  {aujCtmf{tnǐfp%@ftDCt0Ht P ̃ uyƃՉC0@CNjSC(e[^_;H Eu.u svUSP Pt.Jt؋]Ã@PPÉ$ͼu1֐@USPT 1>l X = D-$@D-@X -T T E!D-X ="D-U@D-@X T X hÉT fPfu_u6X !T @D-BX T 뺉WX ƀ@D-=@D-@T-}>İ~İt1f=tȍe[^Ívf>tFf^ۍvCf[vuf렐8fHU( uMEPEP=t'=tÐEEPuuuEE]5D jjhO 뚍vU( uQEPEPQ=t+=tÐE+E܉EPuuuEm]5D jjhb萿떍vU( uQEPEP=t+=t+ÐEEEPuuuEM]5D jjhu떍vU( EPEPU=tK=tÐU܅tEљEPuuuڐuhDUEـE@t E]Puuh Eۉ5D jjhDCU8 EPEP=tK=t ÐU܅tEљUPuuuCڐuh tUE}EfEִ fEm]m֋EP $]륍v5D jjh|KU E PEЃ t\(t Pj=YZPh< tufE]RuuuP͉u5D jjh̼cU E PE f=t2f=t, P< PPh<ZYPhtE=tE=~=t1EE@fEQuEuufEE5D jjhǭCU E PE f=t2f=t, P; PPh;ZYPhEE=tX=D=t T ÉEE@fEEPuuuˍv=ufEEϐ5D jjh߭/UWVS<  uV]SU؃ fdMfVfwfft3 P: PESP:ZYPhд#e[^_fuƋU܋BEċE̋xEą~* ]čvPt2t242 KtU~& PEt0t040l KuEă P$quuuS99 uuuV'91}܈Љˋ}̉эL QZYũ uPP uPu؉EC 5D jjhPNUWVS\ & uVV]SMEPD h/uuuM؃fUffwfOft4 P8 PEWP8[^Phд<e[^_ÐfuŋEh/pp0E5E܋XXZUB@؍@ Pr蓳 ƅ~/ F@FUt:t:@4:Pw KuE%M=qt M` ~ uvju]貺C< ЈC<]hC@먃h;hn&1CuuuS6 uuuV61ҋ}Љˋ}܉Ӎ\ SfE5|  @| u܃ uPE^PEE Epp0EUEBE BuuuE%= ` ~ u*ju]fC< ЈC<]C@PSh;5D 販"h;hn1 5D jjhUSSC  C uC ]É5D jjh!谵C ӉUSC  C uI EP詾 f}t*h4uuu;Et C ]Ív5D jjhI(랍vUSC  C uI EP% f}t*h\uuuEu C ]Ív5D jjhq褴랍vUSC  C uI EP衽 f}thuuu3Eu C ]Ív5D jjh 랍vUSC  C uI EP f}thuuuEt C ]Ív5D jjhĮ蜳랍vU( EPEP=t7=t3ÐM1t U܅tRuPuE藻֐ EPc3PEPR3 PQhC3YZPh螼두5D jjhخܲSU( EPEP=t7=tsÐM1uU܅tRuPuE׺֐ EP2PEP2 PQh2YZPhT޻두5D jjhSU( EPEP]=t'=tÐER#EuPuE& EP1PEP1 PQh1YZPh.롐5D jjhlcU( EPEP=t'=tÐER EuPuEv EPC1PEP21 PQh#1YZPhȵ~롐5D jjh輰cU u%< HMPU@PRQEÐ5D jjh(lvU uE PyÍv5D jjh<0֍vU uP5\ 5X 5T eÍv5D jjhPʍvU u)C QufERuUC É5D jjhi蔯뾍vU u!PC pp0̷C Ív5D jjhHƍvUMUVf9S։tfwtfwhft ff==1=tU +Ue[^É=td=uU EJ;HtҾ9λ 6tt4tt49 uFU ;rE1늃uu /ƒrEm E1Ҁ@tEGi9f EfE]E fE] U ui< B=t#=|!-w1zfBBÍvB P- PPh-ZYPh͉5D jjhL{U8 E؃ PUEPLUM؃ f9tfwVfwJftCft<uuuuuuufEPuȉE5D jjh萬WU8 E؃ P虵EP萵UM؃ f9tfwRfwFft?ft8uuuuuuufEPuȉE[Ð5D jjhůث[U8 E؃ PEPشUM؃ f9tfwVfwJftCft<uuuuuuЃufEPuȉE衳Ív 5D jjhׯWU8 E؃ P%EPUM؃ f9tfwVfwJftCft<uuuuuu^ufEPuȉEO5D jjh`WU( uQE؃ PmEPdXuuuuuuufEPuE`É5D jjh떍vU( uQE؃ PEPXuuuuuu`ufEPuEÉ5D jjh h떍vU u`E Pu C t7pp0uuu tC C ɋC BC 5D j'jh<ݨUWVSC PUP8Xp UPuSUC 'tx;stHE[USC sf{f{tC< ЈC<-C@uSR u e[^_ÉP3hd5D 襛Ph3h<趱nUWVSE؃8P" huuuC PUԋP8pUYPC Xuԋ]SU&tw;stHEЉ[ỦSC sf{f{C< ЈC<8C@uS] u e[^_ÐP3h5D 豚Rh3h<°oUSPE%= ]t=t]ËEf@f=t P'EE] EE]\UE%=tÍvEfx u@@ f@@E EjUS4 E PtEPk hYuuu=E%1=D R跫$Quuu5h6uuuE%  hY uuuE%=t]É` ~ uzju蠴]TC< ЈC<] C@hYuuuOUE܈guuEuPpXZEpp0EȋU܉ẺBEЉB*CU5D jjh;謤TUS$ hXEP语XZuuuOE؉$蔭 hXuuufE%1= Rh[uuuE% hX7 uuu6E%=t]É` ~ uOxjuײ]苦C< ЈC<]AC@hXuuuU܊EfEhXpp0U܋EBC[U5D jjh dUS$ haEP[XuuuE؉$ hauuuE%1=! R0hduuuNE% ha uuu膪E%=t]É ` ~ uvju']ۤC< ЈC<]葧C@hauuuU܊*EdEhapp0bU܋B+EB>CWU5D jjh,H`US$ XE؃ PP hjuuu"E%1= R蜦hwuuuE%tv hjE%=t]Ív` ~ u uju訯]\C< ЈC<]C@몋EERufEPEu}qhjEpp0E@ Epp0ːNU5D jjh}US$ `E؃ PȨ huuuE%1= Rhwuuu2E%tw hoE%=t]Ív ` ~ usju]ӡC< ЈC<]艤C@멋ESuPfEuEEphEpp0VE܃ pp0ǦE@=+FU5D jjhL0US$ XE؃ P8 huuu E%1= R脣huuuE%tv hE%=t]Ív` ~ urju萬]DC< ЈC<]C@몋EERufEPEueqhEpp0EH Epp0ːNU5D jjh訜US$ `E؃ P谥 hڰuuuE%1= RhuuuE%tw hڰWE%=t]Ív ` ~ upju]軞C< ЈC<]qC@멋ESuPfEuEEphڰEpp0>E܃ pp0诣EH=FU5D jjhlU u  Ð5D jjhڍvU u  Ð5D jjh訚ڍvUWVS  }u_5 u e[^_Ð w www,D$ P}w 3$Ww뭉5D jjh눍vUSC  C uAf{ t!RSCfEPu]E3]ÉC<tՃ SQ3h5D UWVSEP賢 f}huuu=@T-ƅX=` ]~e5\ W_-X l h@T-VbXZhVEl WV+v4$蠽 uvf{ tVWSCPfDžHHLP< t 5\ t e[^_É SC<t SP3h5D 衋ojhhV/ÃJh@T-WhXV3{;~uCE܃u܍XV]׍vo,USC  C u- R[RSfE Pu]E诟]ÉQShط5D 貊뼐UWVSL rh8EȃP5XZuuuE؉$] h8uuuU؉%fHt(ShZSuuue[^_ËE܉E=tx=tQSRP^_PhP뷉~ Mq;^~&\ t7}PGpjSU؋w%fE؍[Elq~Epu1I9v6\ 8tʋEVP1IQjSEU؋p%fE؍D냉5D jjhR萕rU uC  0C 5D jjhkL΍vUWVS, uuuv C PfE'Efp~0}ȉ W#EȋU܉ẺDEND Quuu&e[^_SVh5D (qUS$ X EP谝 f}1h uuuvU؉%=]p t%=%=tT%t8t h N]ËERufEPEu:ڋEQpp0f{ud t3h"Uf{ hC<Z SuUB S S裙tU?5D jjh UWVS, h8E؃P!XZuuuEȉ$]Eȃ =te=t"VSSPZYPhPPe[^_Ð~3u;^~PvjSHuP[tt4˚뽋uKxLu1I9~P1IQjSu3WufEPEu륋u5D jjhUW E PE =tR=3=t }PuEfEjuۉ=u͋EQpp0ߍv}1WIuMfEQ5D jjhɱ<XUWVS, !E؃ PB hLuuuEhLpp0EUԋBH Rppp UԋB;x}2 v3P H AD3AD3UԋBG ;x|HE%=te[^_á` ~ udju]3C< ЈC<]C@몃hhn觙5D jjhUVS  E؃ PEP h6uuuuh6vv6WF@@Pv迊 ËC@Cuu܍@uPE% =^te[^Ë` ~ ucjuC]C< ЈC<]譔C@몃h;hnk1ۃ\5D jjh褎UWVS< Eȃ P誗 hEP薗XZuuu6E؉$]x huuuJh}ww7 WB@9~PB@PjSWB@Pw* ƋN9|"IvB BBIBB 9}uu̍[uPE%F =wte[^_Ë5` ~ ubju舜]<C< ЈC<]C@멃h;hn谖16W5D jjhTUWVS, <h=EȃPXZuuuE؉$}Õ h=uuuh=uvv64 ^;{~PsjW ^Ptt4OC9#IBBBBBAC 9~HCE%=^te[^_Ë ` ~ ut`ju]谎C< ЈC<]fC@멋^15D jjh7rUWVS  E؃ Pv hTuuuH}fW= q= 2-$fP7tfިt٨Ph! w YV19H!t9PC019H:Ph^%S19H!tVȃ j BG7hdw,V19H!t:C90ntlP谅S19H!tVˍvQw@7h,脅e[^_à Po7hqT$5@ wwwhƋQw7huXZ7h~$5@ www^hy j5@ juu9j ~>5D jjhUVSuV19H!t7vPC6ItRhm5D X|S19H!uE e[^}UWVS uZ` S119H!t=Jt6T t.9$R19H!ЅtHt =T u׍v~c u7ue[^_5D j jhLET e[^_R6hW5D l{ 뫃 j }| tb @u6 | T AT qH T [Q6hpPj h;5D z 묃h;hn1ɋ 듉G j H}|  @uY | T AT H1T Hq T ! ` 5D j jh~ƆPj h;5D .z 뉃h;hn91ɋ mU=X T t$5X hT 聩=X T u` T ÉUWVSj <|T |  @5| v6vT 19H!tBCBCCtF3C^ @u S蹃` T e[^_WShM<5D yPj h;5D xVh;hn1@UWVS  } O19H!t8vsj,uVPVS19H!u΋O9tvwWO9uE P9H!tU j z|  @| CBzPS19U H!uO19H!tP sj Kz,| tT @u3| EBrPS19H!ue[^_ÉPj h;5D ]w뵃h;hnn1뢍vPj h;5D )wh;hn71PE0h5D vXu R0UWVS E P9H!‰UEp,vExju_ SPS7$ y|  @| EBZPjWV覥PV$ x| tX @u7| rPEzP19U H!‰U8e[^_Pj h;5D u뱃h;hnދ1랍vPj h;5D u+h;hn觋1UWVSu F9Ƌ}tVtAvKQ<Ѓu9QYQ?</A%EE<)Ut@<:t<Ci]iUU~-Uue]<)t<:uċ}E }!ǀ;)t GCEt#e9EtM ]AAM]}EUvXu @뀁 usts mu˃ ^xu Q I AE7]@EC]DEEM{?MM]B% B<]ۉEuCtmuJtUE}3EGEG]G}t$E@EEUBUEs1EъE1]C]؃uEM/AMŠE-뱐}}뱀FwAt B]M+M1DžlhEjE~ MU ]$)tOPhEuP/bEMDEAG1AH!ȉAAM]K]Ox_EUDBUt+GBЉU)1҅J!Љ‹uEMAMPhuufh]OyM)]A)CSЋ})1҅9GCJGKG!։}uFUE+l:0Rh]uCSaEUDE]9|)PhuueGhE]9|ڋ]ƋMAQ99uE)ȉl!E}]]]pEMuTt>Kt*EMEAEAAM] TEUBUE}G}HJt_}AEGEGG}]x-;]tUE+EEEBEBEB뎋}EG돋U<t <uE9UtMA띃U똍vkE]C]"vUr UESuM} ]$HtEtHM1}w}UCU]`E{E"]]}G}GEEEE5EUBXU]p^XE}1EDž|[\}-L(EtU(B4D*E|EX]p]t}t4}t1D.ЋMF~E 3}u狅|x‹EtMA|UBU]CC]܍vF$]_]Gpp\t}9p|f;p*xOL(EtM(AT(ȉ|FE;p~F묋]8u(juM 1uEP pVt}8Džp:U`u(juU 2uEP ލFM(QE $1D@D.F~1D@D.F~1D.F~1D.F~1D.F~1D.F~]e]C<:t <.t<=Qu(EPRH]DžtM({:y]x^Eă)PS[xuEt 1H!R1ɍ`x$tt-1D.FB~A~΋]C]E 1vD.FB~ЋE^vXDžt]M}U`)XE]pu(juE 0uEPUU ]ĉ]\MM]]1EtU(B u#\tuE@EGEX]U(pB <y~8MIMUBM ]$;UB]Kz] ]Ȑu(juM 1EuEčEPj \]ĉ]끐]C]pj u?؃ ~%MPM6]CS]4F E!lj}UE u(BP u(uEPEPE@P$}7 ÉEC]p uUWVSUEE}(E,uE$D]EU؉E䐋E xE UBEE BE u E t&E@UBEEBUBEBE u0UREPU RuEPURuV0M)ىCKtUx 9tEU,;}E E8|uE8]CEEE+M9UBEBUBEJU] BۉExB UBEE؈BEEUEUe[^_ÍvEVS(xUJJEEU1뷉UWVSM} uFw-$,~Yڋ!!9t Eu ͉[^_ÐAAQ98t릍vUVSu ]jjVCPzFYۍC;~~{@WFPu ! WuPPPU Ɖut2@t/Jt#~?FuDž1~?tx@=~ Džw@(@‰E ^C߃1.$t<)tF@t<)u>FMٲσV֍RB>)Ĵ?F<=\CFPt]uKtr!~{]SP-~ SuPPPƉE v`EPju uPU ,t $Cp }WFPfu | WuPP@PƉE uat:t'~~ ܃u믋TFX uE zUWVS}GU u G8])O4192Et5K~v8FA8:uK[^_1K~萊FA8uKԐUWVSEE } EtUM]UM]GE~,X~ _G Í4E;p GG$vPjuuuuGPue u&GWǀ?8tEEe[^_EEP,tU;PX H 5\ ЉuEMً + $+ Cu9DT |݋EU]t:SSVuVSSSh h * %U-E E * 0e[^_T-(If5U-h (I딉UWVS}7 ËG-wY$Su SSh h * $5U-h * SSh h * $5U-h * e8 e[^_à WH tv@ Xt1@ u S@H TC$[u{ 79 P7+ PhI h * ($[^TD QSh` h * $XZ5U-h * AUWVS E -]uw=$ PSh h * #_X5U-h * N Vh7S8 e[^_PSh h * t#_X5U-h *   VhBQSh h * F#XZ5U-h *  VhMQSh h * #XZ5U-h *  VhW\QSh h * "XZ5U-h * } Vhc+QSh h * "XZ5U-h * L VhpPSh h * "_X5U-h *  Vh{PSh h * T"_X5U-h *  Vh Ss(=T-u޿(ItAShT-x#X UPShh * !^_h * SV>/5U-h Z말UWVS u] C~{usV[ ΃WtE Ee[^_c=B=8 sV9=8  e[^_;=8 vu Cpm$XZ=8 s V09=8  e[^_=8  s$&ue[^_à s{9pt sZYPj|<wPhT-Vs?$[$T-Gt5X ~P {7w= Phh * YE * 7Ee[^_d< sbUVS]t=C~su s[ ӃWtjj;e[^kF 58 s958  e[^f58 u Cp$%X58 s F958  e[^58 v s$%K sxt sZYPj:F=T-}(IPsX$ szPs; Ph h * 85U-h *  $T-iFtBX ~96vy; Phh * Y[h * 6$\: P VXZhjY^Ph CXZSh CY^Sh CXZShCY^ShCGXZSh  @u SDGP PShM<5D ̸T-~ sMUVS]t=C~Vu s[ ӃWtjj8e[^^ se[^Euƒ Cp$ZX58 s c958  e[^QL58  stGhT-VXstFBue[^H D F߃ sZYPj7럍vUWVS u }t7uNv6h5D F=t=tvuʍe[^_ÉvGP5D jjh8KuU5D jjhXZD 0jR5D jjhUWVS M}1M];H  ( /!( EOU@ 01эy ) U)9|;VS/EUC;H ~uSe[^ ( _Ðh j96EWUWVS } ) }1M];H ENU@ 01эy * U)9|K_CVSEU;H ~ut_uCSe[^ ) _Ívh ja5ETUSQ] / CWt]tsh / | / ]ÉC@u$Ph / SXZhh / B[ {t먃hh / "[C농vUVSuFWtY1ۃt- vKqtvKue[^à Fp$Vv C~t2 v봐UWVSu 1tVutEut4ut#utuG u[^_USS]Kth\5V-K4u]ÍvUh&5V-UWVS E E?MuF8F$0 tuvS tku(IUztP,0 (0  jhDEph|5V-UZ,0 $0  (0 u;FZ,0 9 u jh E0hp3 PhP5V-[UB,0 (0 uF =t"=tuvue[^_É uD$Ehl0h5V-,0 (0 U1zPE@rP;,0 u; u^_h5V-,0 (0 ;뾐,0 = jh 6hr5V-%,0  uD j tRjh(IPUBv U2^vUVS] ۋutl 0 tsPWt( jhsh5V-cC 0  C==C u[ue[^É V_$h3hP5V-hXXs $h‹5 h5V- 5뇍v V$hl3h5V-sFP4$XZh5V-,Uh5V-XZh 5V- j5< j$0 (0 ,0 ,0 u\o5< j 0 5YXh05V-gXZh5V-UYXhT5V-C1Ív띐USP ]tO;  ]ÍvSP  t  ҃h;hn1ڃ S3| t' @u| PSh;5D uh;멉USR ]tK; ]ÉSP  t  փh;hn71ڃ S| t' @u| PSh;5D h;멉UE8UE8UE8U tm 9tUD1 A ÍvA P5D1   t D1  붃h;hn71ڃ j | t/ @u| P Ph;5D ڃh;떍vUjUPU PUP UPUPÐUjoUPU PUP UPÍvUj?UPU PUP ÐUj UPU PÍvUjUPÐUE [w$<vø1USQ]C a$Ct @u: s  @u ]] QShM<5D 6RPhM<5D 믃 so sa s S sE냍vhjY*lCd PYs ȋCJ P뷋Ct @u s C RPhM<5D l֍vUVu1St=F a$4Fu1PvË؍e[^SP ZYڃ v$ v Pv{ PQvn[ZPvË 롃 v MPv> PQv1[ZPva v~ËFV S CEvhj(. v PSv[ZPvPv v v PQvUWVS 1҈Ћ= ]Ή߹эL 9}S5 e[^_Ív P.ӐUWVS ]SBK`$ scEo e[^_L hj?_s$ *Ys E 뽃 hj^sg$Nj t: hjXs>$ Xs )EZ hă s$[ Cu$EPshh@0  E@0  hCXs$.Xs$s sh릋CtP딸 hXsH$Xs3$`b ) h[st4 1׹эD Ӄ"t%\tF@u͍e[^_\@\\@"١ t+ hj=Xs$ (XsD hӸ tЍB $ V_sL1у|([E du\ s s4$ VXs$ sXs$ ^Xs $ IXsp V/Ys$ Zsy$ Xs 뺃 V^sPRh5D ^_hjL$[ t 4 4 Cto= t P$5 t< hjjY s$OZs z h¡ t EE t4 s $$$$G CLf tS hjX s $$$$G Cu  P h뫐 h sT$HXs E h#Xs$ĐUWVS ]t-SBF6$5U-S$e[^_Pshh@0 [^5U-h@0 s shڋ{tPȸ5U-C8 tAPpXsK_X5U-h U^s 0^_5U-hV뽃5U-h YsXZ5U-h_sY^5U-h`b [ 5U-h[ tЍBw$$5U-VSRh5D sZYhj  sN_X5U-Vm5U-VMYs(XZ5U-h 2Xs ^_5U-h Ys XZ5U-h Xs5U-VYsXZ5U-h XsT5U-V<5U-VXs}1у|(5U-hjCtz t P/XZ5U-h J5U-hj&Xs ^_5U-h Ys _X5U- hu5U-h= 5U-hjY^5U-h‹ XZ5U-s _ $_X5U-hmsu5U-h‹PO hYs XZ5U-5  뮃5U-h‹Y^5U-s $XZ5U-h{u5U-h‹H h^s Y[5U-5  볃5U-slXZ5U-h5U-se= tQ5U-s %XZ5U-h _X5U-h`1 Y^5U-h  SJ5 5@1 hd h`1 #5U-h`1 UWVS ]u t[Cuvs[ v ۃ S$@1 $ue[^_à Vt  SF9jjmE UB9ЉUE9Eu  SJ4$ 2 pY 2 0$$1 uX  2 0 X  Ph8 h1 ;XZh1 51 X2 00_2 05X uX  khU 51 _ΉU-@;X t2 ppK 2 pu 2 0':  :  :  :  : : : : }: n: _: P: A:  2: # X 2  xXWq# S$9tjjoE;t7SW-<$%$N5U-hf  Ã5U-hv 룃jjk 2 p[0 2 p6$XZ2 phԃ 2 p$^_2 ph؃5U-2 pZY5U-ha  @u 2 p[P2 phM<5D P2 0pjN:  j jKz:  : @‚@ ! @u jM:  2 : P j!: 2  S5:  FV ts3h 5D  j4:  2  :  PP1h 믐 j):  8 jOp:  ~ jPV:  d jQ jRà jSփ jTϋ 2 A:  2 pjYf2 pjTP2 ppj: ?: @z: Ak: B\: CM: D>: E/: 6 : I: ": $: 5: : ,: .: F: \: : G{: *l: +]: -N: /?: 002 0jW2 V0pj2 S0jjZYPj:  2 0jWjjjU:2 V0p2 S0pߡ2 QpjjV2 Rp0P2 pP2 ppӍv6PVh}5D f52 6@f`~2`P^4 h 5D C(f<^ً52 6`W4 h0M5D 52 2 I2  U-=X52 H!ÁEw!3`9[CvE dPE parsUBe erBrorP` 4 ׺h8M1ȋUЍDP52 H!1w$`9VCw52 ܃  u+ @ u,2 o2 2  52 tFZ 52 wf6`2 =d 9tX@2 U--2 2 t5D jjhKM_;2 t#PPh5D ;2 u݃5D j 9 p t4 @uT 5d ( @u 5h e[^_P5h hM<5D WR5d hM<5D ;됉62 =t]U-u;2 U-5U-H 2 Xp 2 2 =d 2 5D jjhbM8묋=p t4 @uN 5d " @u 5h 1S5h hM<5D WV5d hM<5D ;떉=أ2  U-UU-u U-k` 4 RhyM5D PuhM<5D PGPh(}}1ȋUЍDP~GMtMPuA^X4 u0ZYhKu!G\ hH}1< ΋E֍D0E hM652 U-uM U-t  U- 2 ˡU-U-C2  2 S H2 4 5 U-hM5D [둁`މ52 4 5 U-hM5D 5D jjh_  PU-`  U-/5D jjhMN U-u$UҸ6EE U-5D jjhMS52 h N5D hVW5l hN5D I=d  h9N5p t4 @uQ 5d  @u 5h mQ5h hM<5D S5d hM<5D 듍v5D jjhON=UujÉUSD 5U-\ Q u E4 xS|~hq SSh 2]ÐUVS]u 5U-h XZ5U-SY[5U-hXZ5U-VU-E EWe[^U   ÍvUWVS 1> 1t)Rut$~s799~1e[^_Ð{$ UM1 v9Lt @>~1Ë vU B 9t#U  B  Í P5 Z t  릃h;hn1UWVS5 =@T- ~}` ~th ~k ~bl ƅh@T-V_XhVl tT5 VZYV5  5 SU-$" e[^_Ãh@T-뫃5 n=%t9t S븍v=@T-th ~  ϸ5 U-륉UEP߃]w$4 NøZhlmY۸WԸK͸XƸf뿸I븸H뱸S몸J룸Q뜸V땸n뎸o뇸p뀸jvql ]XUVSu 'w4$ FuW$L  hko 'e[^à hkN   ȉ V   뙃 V  u:   \ M > / #  : " "ue[^: ! ! fp%fu9_t4fu V$ V w Vs _ &SfpfuŃ_t  1 fp%fg.tmEtPetKjj j5 _U-$&v'  1 f V  j. k/fp%fu1.t EtetPjj5 U-$'^ Vfp%fu"+t-u V  V fp%fuhPjj5 sU-$'  HX   $ $ VN :vfp%f1xy1t}2t_atArt#fp%f j. jr  ja  j2  j1~  j h`  ] h_ڐfp%fu hcR fp%fuՃ hdrt2 j.7   $aK jr  gt> j.   $a$r haat( j.   뺃 ja  dt7 j.M   $r} hbLv"t t  j"^5 +U-$$ t t Vc O 5 U-$G$k > 5 j\kQ  A&t hhЃ hMv|t hj뱃 hL=t hJ땃 hO=t hNv hP=t hSV hTf=t hQ6 hRF/t( hf1  b hU  }it5: !v   jtS: !v/  ji  j  j<[ǡ: !tB!. t   hU׃"u҃ h hݍv   tۃ tփ1tD: !v   ji<$-  j<Y P  >t`: !v<  ji$-$1   jt vыFtuFFh h h Vmth h h VQt-h F00V1u=t = nF`h h h VucF=tO= t@F 8 t5>Ft FF h h h Vtth h h VXah h h V8Ah hhV!h hhVShhVPhh V PhhVtPh뫐Qhh VORhh h h hVNh h hV.{h h hV[h h hVhhhV= |= u-vD h h11V  h hF00V h h2hV  h hF0h봍vV-w1h 2hV\h F0hh 22V.h F00F F0h $hhh h hhhV h h hhhV h h hhhV ih h hhhV{qhh hhVh hhh h h Ph h  hhhh hh뾃 hhhhh랃 h hhh V] n h hhh V5 F h hhh V  h chh hVhh hhhh Vohhh \Phch h h V0}h h h V]h h h V=h h 6Ph h Vt Ph GvjE耸FPh h Ph hhh ViV= |= -v~ h h 11V[ l h h F00V6 G h h F00V " h h 2 h h 2hV  h h F0hV  h h F0hV  h h  hhhhVO ` hhhhmPh h V( h hhhV  h hhhh h h Ph h h h   ^u hhh'VtڋF 9̓ VX v 8 v  )hhhV= |= U-vh22h2vUSQ]t]Ð sut?HuߋCE]&tuă s s s 빐U5(V-XZuh  U-U u Rv5D j@jh! $ލvUSS ]u5(V-S蔳]ÍvQSh 5D bҐU u- U-,V-H/ hx;Ív5D j@jh" 뺍vUWSU tl tg,V-u:1 U-t*QPh]S+XZSh U-莾e[_à h ,V-ݍv=,V-t,V- U-v h U-UWVS5V-5V-h ST $}5V-5V-h SrS]5V-5V-h  SRS=H" )$& 5V-h# S$ 5HV-h> S" $ f$ # #$5V-t uHPPBVHVh% 5D ȉƄ+( ]e[^_PSh S?$ؐUWVSZ4ݝ,Xݝ8X$VS9"$P($HP840uhg SճS P'_0uh S茳Sw[^0hP0HPմ$V-Džt(0su S[ u؋t. x0h' 5D sT h' e0uC1Ƅ.qƄ. 聮e[^_PSh Sc$ؐUWS]1у QVljŠtv<\t(ABuWS艳}e[_\B\эvUWVS =T uV@1ۃt<#C+u슅<`yVP11ۃDždtFv< ,< $<,ud3dhC+udlhPzh1ۃt%v PL+hC+huލhK1dXSjjjjjjP Vph Sd$PtVh SJS5xVh S/SdQVh P$XZVVVVVVVVh' S$Sh u"d$ h :hHdRtPh( ST$@xVh( S:S%|Vh( SS dSPVh( P$VVVVpVVVVVh ) SѮ4Sh`dttPh\* Sv$bxVh* S\SG|Vh* SAS,dQPVh* P$VVVVpVVVVVh* S4ShxdtPh4, S蘭$xVh\, S~Si|Vh, ScSNdOWVh, P7$#VVVVpVVVVVh, S4Shh  h h) ued;dF PVhh Q_PCC;d~hmdU;dghPh. Q$ VVpVVh8. QPC;d~hd;dhKhPh. QL$2 VVpVVh. Q PC;d~h d tPhh/ S趪$xVh/ S蜪S|Vh/ S聪Sldk PVh1 PU$AVVVVpVVVVVh/ S34Shu"d h0 hN ucdZ ;dD P|Vhh Q蓩PCw;d~hĀ d ;dghPh1 Q $ VVpVVh(1 QPC;d~h׀ u"d h1 9h u"d h1 h u"d h1 hu"d h,2 hU udd;dE PVhh Q蟧PC;d~h u"d h2 hdtPh2 S$xVh2 SS|Vh2 SɦSdPVh3 P蝦$VVVVpVVVVVh<3 S{4SfhρdtPhX4 S $ xVh|4 SS|Vh4 SSdWVh4 P迥$VVVVpVVVVVh4 S蝥4Shd@tPh6 SB$.xVh$6 S(S|VhH6 S SdQVhl6 S$VVVVpVVVVVh6 SŤ4Shu"dT h7 h(u"d h7 hu"dP hT8 h[ hi  ht  h h  sh  Kh #h] u"d h8 hG udt3 h8 te[^_à h qPph S$ th S褢$Pph! S肢$n th! Sf$R xh7! SJ$6 0y+*~OV .ztPh8 S赡$XZVpVVh9 S藡SrhtPh9 Sj$VY_VpVVh9 SLS7tPh<: S$ XZVpVVh`: SSnVh:  h: iVh4; S hX; EVh; S h; !g tPh; Si$UxVh< SOS:|Vh$< S4SXZVVVpVVVVhD< S$S hQ! o tPh = Qϟ$Y[VpVVh0= Q襟Pp tPh= Qr$XxVh= QLP1|Vh= Q%P _XVVVpVVVVh> Q$P tPh> QÞ$xVh? Q蝞P|Vh8? QvP[XZVVVpVVVVhX? QG$P, tPh(@ Q$xVhH@ QP|Vhh@ QǝPY[VVVpVVVVh@ Q蘝$P} hXA   hA 9 tPhA Q;$!_XVpVVhA QP VhDB S hhB r hB ` hB K hn! 6[hShVh! Pkt hC PjSVo獝hShVh! Qt hPV-TV-XV-\V-`V-dV-V-V-$@V-V-$@V-V-$@V-qtHdt@l@puP5 h Q 5D f) hn PhQ 5D rf  hn Ph.Q 5D Df  hZn Ph?Q 5D f  h,n PhPQ 5D e G5D jjhaQ Gr U uÍvhrQ 5V- UىUWVS  ۋu} u'ۉ5V-=HV-u [^_Ív [^_ҐUhf#kV-]V- E]V-PE]PEPtpV-jPV-j]hEPcjXV-h]jEPc h`V-j]jEPcV-uÉxV-]pV-PE]hV-PE]PEPpʉxV-]pV-PE]hV-PE]PEPp3vUWVS,1;= YD hD 1_e$P Se$@i;= }C|u9t;= | hD m$P me[^_ÍvWlVC]ԋEPC ]ԋEPC]ԋEPo{EEEE?EQP@hVhC]C$ E]C,]C4PhV]WhC<]CD E]CL]CTPhV]-hC\]Cd E]Cl]CtPhV]h݃E@Rh?hVUg݃]ԃ EPhV:g$dCT]ԋEPCL]ԋEPCD]ԋEPC<]ԋEPojjjsbG=o4$uk`h3PjhVf h?hxC]C ]C]E h@k h hh@f h hh@f h hh@f h hh@f h?hh@f$@j h hh@wf h hh@`f h hh@If h hh@2f h?hh@e @PGb;= |UhD a$P a$bh?jjh?9mjjj` jjh?` jjh?` h=jhL?u` jjh?d` h̽jhL?P`h?jh?jljjj/` jh?j` jh?j ` jhL?h=_ jh?j_ jhL?h̽_h?h?jjAljjj_ h?jj_ h?jj_ hL?jh=}_ h?jjl_ hL?jh̽X_lvUWV EDEELEEE?E?E?E?E?E3fu Ep~[p,Hl~6 ChsdClChPh e$ e$D e$]XZEwPEE @&EE@ EE@'C]C ]C]C]C$]C,]C4]C<]CD]CL]CT]C\]CEC[$B[eG ]G]G]G$]E=E=E=E?E333?E333?E333?E? hP ZG$]EPG]EPG]EPG ]EPeG$ E hD iZ$mZ h =ZUSPtCLu [Tu]ÐoaPC]EPC ]EPC]EPdjjh?C]EPSW jh?jC$]EP8Wh?jjC,]EP WCD]EPC<]EPC4]EPzcXsP\^CUS$ ]҉V-tr uyV-]V-E]V-PE]V-PE]PEP^$A|a?^V-u S]Ív㐃EPEPH`5D j jhQ c  tfE+@V-U+DV-ЃP-Q 4$<$PhN 5D VEU@V-DV- 5D j%jhu Pjw,u EO4$U1e[^_PVhlev(R̃ VЃ뷃 VЃ뢃 v OF xt Vp랃 WP jhtW u N[^h)T u /O͐ u aM jhW u N뭐UWVS@uF PPDžG1DžHV0DžLDžPF4TDžX F8\Dž` FU tGCU t=X t34Y t)pY tY tY t ۸HU t؅PE@ 0:@Ã1t&Ss Ѓ B)@REU=ǃ1ue[^_Í>PuVs71@;  t @=~ˋU<@; J hNU h= hU h8UVSU 1۾J @; 9tC~e[^Ã4PqE@; ِUUM ttItPrB p0k:QPB USQ]u]ÐPC 05XZC 0 EǃːUSQ]t u]ÍvPC 0DǃۍvUSP]ut u]ÃSh\f@ǃUE ÍvUE@tÐUEÉUUJt1ttU(UBtt u Ð}fE fE[ PEPQM B m]mMM0m]mm]m?tUUUBtt uà jjE PQB 0: UE ÍvUEÉUU EÍvUE@ ÍvUE@ @UE@ @ÉUE@ ÍvUWVSMɋ} uZE@ Pv7Ã1)EPh V:XZEPh F:YXEPh 6:XZEPh &:YXEPh :XZEPh :YXjh 2XZjh 2YXjh 1XZjh 1YXjh 1XZjh 1 ShuVWjj;2uh 1Y^uh 1XZuh 1_Xuh ~1Y^uh o1XZuh `1؍e[^_ÉE vUWVSuuu aǃ~1} hc DuE>EuHhbU u!3Y[h0Z u3uuh|U u2hU u2]]SXZVjuuh\Z u21] 9EVE 1҅;f>PfD>$$$fD>[ [ $[ $[ Euf>PfD>$$$fD>$$Eu@f>PfD>$$$fD>$$Eu f>PfD>$$$fD>$$Euf>PfD>$$$fD>$$Euf>PfD>$$$fD>$$Euf>PfD>$$$fD>$$Euf>PfD>$$$fD>$$EuPRhU uv0E}'EEE9EhU u80ujjhU Ɖ$.tu 1ҍe[^_à w0Zw0ۉUWVSu)܍FEЃ9r˃u+<$o+Xu~Xus;ủuuo1ủÉÉ$(# WVPuuuSEXuủ}*UUEPh %^_EPh %Y[jh XZjh  t} x }AEE؃xEẼ u@PUZ"EËEt E@ E w3$[ >FFC CPRQWC FC;uuԃ} }  uhhjuuju h (0 u)uh Y[uh XZuu, EPEPEP)Xun)juhuujF 뀃j>FFC C FC9tC;uu  9u 9uڍv>FFC 9CFC~C;uu>FFC 9CFC~C;uu>FFC9 CVUUUCFC;uuM>FFC CɈ9ҍFC~C;uu>FFC CɈ9ҍFC~C;uu>FFC CɈ9ҍFC~C;uuVUUU>FFC CɈ9ҍFC~C;uuHR$E@u}fE fEm]mE؃$$эvE؃$\ ]۸t MA } tM} t* uhPjuuRu h 0juPuuR jMɸtMA 뉃}ut MA EPEPuuM"EZtNuhhuhQh uhhjuuS=t+===x뇻뀻v;E&xuuE hE?h]t( u  u wh h3 PvUS EPj]YXuh # Sh(h  Sh(h  u h(h  uh(h E]USuu uou 1҉Ћ]Ðuuu uGuUSuu u+u 1҉Ћ]Ðuuu uSuUE E E ÍvUEt Ív UEEu[      @ߐUE ÐUSPEtHPh0\ `. jt 8$I] ) jEpj6*$81]ÍvUEtHPh0\ -EhN] p41ÐUEtHPhh\ -EhX] p1ÐUj5U5h tjt"5D jjh^] $$!5D jjh|] #ZY5  0@u h] 5$뵃 h] UhEtHPh\ ,P5V-Epu E EUPUEEP@UPDUU$jEjp0}1ÐUWVS }}tE T e[^_ËG8uPjj jw jj jw$PjjjjjjV-0{"E 01룍vR5V-Pu jj jw jj jw$Pjjjjvj6띐US]S Hs SH[ jjh`h] Sjjh(hKSjjhhSpjjhh?SYjjhh] SBjjhh] S+jjh9h] Sjjhh] Sjjhth] Sjjh<h] Sjjhh] Sjjhth] Sjjh)h^ SjjhHh ^ SsjjhHh^ S\1҉Ћ]ÍvUV- E 0jhdh-^ 5V-<5V-"uáV-Q0h=^ 5D $UWS hU^ =` 1щ $_X5` S!9 5V-V-$4!V-v5t S>!XZh]^ S!  @   jh hi^ 5V-jh hq^ 5V- jh hx^ 5V-jh h^ 5V- jh h^ 5V-j5D hh?5V-yhh h^ 5V-_j Z Y_he>5Z +hhZ h^ 5V-!j2wZ XZh`>5Z hhZ h^ 5V-j 9Z Y_hj>5Z hhZ h^ 5V-j<Z XZhB>5Z qhhZ h^ 5V-gjZ Y_hd5Z 3hhZ h^ 5V-)j Z XZh_ 5Z hhZ h _ 5V-jAZ _Xh_ 5Z hhZ h _ 5V-S5V->ue[_S5` h\ 5D  jh5V- Ph] 5D `$Djh h._ 5V--jh hq^ 5V- jh h5_ 5V-jh hE_ 5V- LV-Q0hc pvUVS= u] x@jjSVu e[^Ív V E EV_ e[^%vPShq_ 5D r멐UVS= u] x@hjSVJue[^à V3 E E(] e[^C%vPSh_ 5D 멐Ut t}tt1Ív  t$ @u5 5 ( : t t RPhM<5D _봉 t ;_ ;F Ba -UWVSt Vt jh Wh_ 5V-Fjh 5 h_ 5V-& =@T-uB@ = D-uf >> e[^_Éh D-h >ߐh@T-h@ &뮐x  u!h_ ߉f+QPhd` hSY ;_  ; ` hh5U-Sv^_h_ Si߃t _ h hf t$ @uy 5  N8 u ` t Ѿ` hfhPS XZh/` S߃QPhM<5D  mv Ba %` UWVSEd@` tdD` u}dzdDž`Bt"< td`dt< uE@` ƉP`ShZ Z d<` uZ Z d?` tdC` dzdDž`Bt < td`dt< u?` ֹu]V`ShZ kWju hG` [^u hZ  ju ha Z e[^_ÉQ`ShSƅh$ ;t `u Z xphZ p`vP`ShSƅh$:t `u Z SphZ ;vUWVSt uw$` u h>޿; ޿; j(Džt< tvCt< u?` tRC` t>@` t*D` t<` u3u o;tC8 ; e[^_Ã=Z t{=Z tWPƅY^u hXZu hZ _Xu hY^u PXZu hW|\Pu  ju ha V S3uU޿t:޿Ba t޿@ j. j$ j j ju hJ` 2u PXZu ha  @u W}PWhM<5D Yۃu hR` Qu h[` AUWVS ]} LW-U-(V-Z Z PSY[Wv"ue[^_USP 9 ~%@[ CC ]Ív j "| K @#|  h|  @| C uv j| tD @u#| @[ @[  @ 3Pjh;5D Ńh;hn1뱍vP5@[ r  uh;Phh;5D v)h;hn1Pj h;5D ?h;hnM1ۃvUUBBÍvUE  @ÍvUWVS u E1ҋ^E߈щM}ыEL9KPSk  tMF&M Ee[^_U h;hn1͋UU ]АUWVS ] ESE1uыL9ȉE1эL9Ms"EE1эL9Mr3s  tUCuU Ee[^_h;hn1̋EE UUVS^]sfX%ft ?4Fљ[^ÍvDUWVSju|  @|  \ C 1} Qn| t\ @u-| u PC'Ce[^_ÉP} Qh;5D {뭃h;hn1뙐Pjh;5D I5h;hnW1ۃUWVSuV \ ۉtV3Ut[ uVWe[^_ÉUSu@!E $"C]ÐUSEPPPPPh`d S 5W-S]ÐUVS] ;,u C0SB='tz9t; V&$C0Cp& Pha h W-m 1e[^2Cp& Ph2a h`[ A XZh`[ C04!뾁(rtS뵃 C0v뗉CH @08tTSHJA='tu9uMB0CH@p& Ph2a h`[  YXh`[ CH@0 [;,t V%$CH@0CH@(qtSH|CH @0-U\ tm ` 9tU\ A ` ÍvA\ P5\ R t \  ` 붃h;hn1ڃ j\ | t/ @u| P\ Ph;5D ڃh;떍vU` ÐUWVSlu] \ O%=?$e F(\ t9RPhh`[  Y_5W-h`[ Y_SvHe[^_QPhHa Ńh!vdXZ5W-hvKXZh!붃Sv:_X5W-h듃5W-hY[h!v XZ5W-hjh!vXZ5W-h|!tC5W-hQa XZh"v_X5W-h Y[h"vHwh!vu_X5W-h!t5W-hYa 둃h!v;Y[5W-h5W-hfa XZh"vY[5W-h XZh!\5W-h_Xh!vY[5W-hna aSvXZ5W-h 5W-h\ \ "y^t*<\tQ<"t<5W-\ Ch\ Luփ5W-\ "h\ 15W-Ch0v ǃ5W-Chsa vvFٽf f٭ە٭P$E@va tRh`[ Y[5W-h`[ 5W-h{a XZV5W-ha F0h`[ 0WF0ha 뙃5W-hj6XZh!v+_X5W-h Y[h!vH ^_5W-h5W-ha +5W-ha XZh"vY[5W-h XZh!FHp_X5W-h Y[h!FHpHm5W-hjd[_h#vJ}Quha h`[ XZ5W-h`[ "Eh$P ^_5W-h Emh PY[5W-h E'h#PXZ5W-h Eh P^_5W-h jEh!PRY[5W-h Y[5W-h (EԃRPhh`[ `^_5W-h`[ Y[5W-h E؃Zh!PXZ5W-h Eȃh P^_5W-h Eh PpY[5W-h ZEЃh PB 5\ ha h`[ ~XZ5W-h`[ ^_5W-h]؃E?7.M5\ Sƅ^_ha Sm$&5\ 5\ hd h`[ ^_5W-h`[ e 5\ ha h`[ Y[5W-h`[ ; 5\ ha h`[ {XZ5W-h`[  5\ ha h`[ Q^_5W-h`[  5\ ha h`[ 'Y[5W-h`[  5\ hd h`[ XZ5W-h`[  5\ hd h`[ ^_5W-h`[ i 5\ h$e h`[ Y[5W-h`[ ? 5\ hb h`[ XZ5W-h`[  5\ hb h`[ U^_5W-h`[ Y[5W-h Q5\ h+b h`[ XZ5W-h`[  l ƅ5\ SWXZh?b S:$$ Q5\ hFb h`[ XZ5W-h`[ 7}5\ 5\ hdb h`[ g_X5W-h`[  5\ hb h`[ =Y^5W-h`[  Shb h`[ XZ5W-h`[  5\ hHe h`[ ^_5W-h`[ Y[5W-hb rXZ5W-h `E~5\ 5\ hb &PShb h`[ ^_5W-h`[ \ 1҈Wο@T-)VSSY^hb SXZh@T-L5W-hb n5W-hb (5W-hb 5W-hb i5W-hc V5W-h c >5W-hc &5W-hc s5W-h(c -5W-h/c 5W-h6c 5W-h=c [5W-hDc 5W-hLc ~5W-hZc f5W-h]c NC5W-hj6XZh!5W-hmc XZh D5W-huc _Xh vY[5W-h XZh Bh vY[5W-hXZh 5W-h}c _Xh vY[5W-hc q5W-hpc =5W-hfa C_Xh%v8Y[5W-h "XZ5W-h[ 5W-hfa _Xh%vY[5W-h XZ5W-hAU 볃5W-hfa _Xh%vY[5W-h XZ5W-hc m5W-hfa n_Xh%vcY[5W-h MXZ5W-hd'5W-hfa (_Xh%vY[5W-h XZ5W-hFU 5W-hfa _Xh%vY[5W-h XZ5W-hc 5W-hfa _Xh%vY[5W-h {XZ5W-h"T U5W-hfa V_Xh%vKY[5W-h 5XZ5W-hc>5W-hfa _Xh%vY[5W-h XZ5W-hc 5W-hfa _Xh%vY[5W-h XZ5W-hc 5W-hfa _Xh%vyY[5W-h cXZ5W-h=5W-hfa >_Xh%v3Y[5W-h XZ5W-hc 5W-hfa _Xh%vY[5W-h XZ5W-hEU 5W-hfa _Xh%vY[5W-h XZ5W-hc k5W-hfa l_Xh%vaY[5W-h KXZ5W-hc %5W-hfa &_Xh%vY[5W-h XZ5W-h@U 5W-hfa _Xh%vY[5W-h XZ5W-hc 5W-hc _X5W-hY[h#o5W-hc ̓5W-hc 뽃5W-hc 뭃5W-hc 띃5W-hc 덃5W-hc z5W-hc g5W-hc _Xh# 5W-hc XZh#v_X5W-h Y[h#vHXZ5W-hc 5W-hc _Xh#vtY[5W-h ^XZh#vHS^_5W-hc E5W-hc *Y[h#vXZ5W-h  _Xh#vHY[5W-hc 5W-hc XZh#v_X5W-h Y[h#vHXZ5W-hc 5W-h d XZSvyY_5W-h cXZh!FHpUY_5W-h ?X1&Z#P5W-hd _XS=X 5W-vX _X5W-h Y[5W-h\ XZ5W-h‹^Hu5W-h ^_3s}[H u˃ V~5` 5\ hd h\ 5W-h\ <5W-h"d !_Xh!vY[5W-hXZFH0p_X5W-h`b Y[FH0Tv h(d H:h!v_X5W-hALh!vY[5W-h<*h!vn_X5W-hh!vLY[5W-hh!v*XZ5W-hh!v_X5W-hh!vY[5W-hh!vXZ5W-h^5W-hG XZh!v5W-hyUWVS }G@t x P G0X ue[^_ÃGpwHQtGWHPGpWXZ5W-h6E` uF9E}O9Eu WH* @u Wx bSWhM<5D jѐSG0hd h\ YX5W-h\ X KXZ5W-h9YXh(\ t(XZ5W-h6K9}` 5 Pg vUEVSt!5D P$e[^1 \ t5D Sa[ uF~ɍvUWVS 11ۺ \ t @ FuC~D  EPlj1ۃ \ t @ uC~hjVWXZh9d u 19|1hhe Eu D [^hGd u e[^1_à 4C'9|뺉UE E EEvUWVPu} t&%=?$j WvHe^_Á!th"vXZh"̓h!vY_h!봃h"WvqYX뙃 F04u\ 녃h"v=XZh!FHp+Y_h!FHpHI}EEhEGE&EEEąEȅEЅEԅugE܅uME؅u3E̅uEh Ph Peԃh PR뺃h!P?렃h P,놃h Pih!PHh!P'h!Ph!Ph Ph#Ph Ph$Piah h vDY_h eh vXh%h#h#h#vXZh#WvYXh!FHpX1&Z#PWvH6vvHuh!voXZFH0p`Y_FH03 h(d @wh!Uu u\ \ ÉUVS]u 5W-h XZ5W-SxY[5W-hfXZ5W-VXW-E EWe[^;UVS h]u | t? @u| Xpe[^ÍvPhh;5D ʃh;hn1Uh$| t7 @u| EXPhh;5D V҃h;hng1Uh| t; @u| EBÐPhh;5D ΃h;hn1UWV hF| tE @u!| -uxe^_ÐPhh;5D jăh;hn{1Uh| t; @u| E EBɉÉPhh;5D ΃h;hn 1Uh\| tC @u| EBE BH=ÍvPhh;5D ƃh;hn1Uh| tC @u| E EBBHÍvPhh;5D  ƃh;hn1Uhl| t? @u| E EBEBHɉPhh;5D ʃh;hn1USP](==}#=ty=tC sZsH @u ]]PShM<5D   @u sPshM<5D ڃ 땐= |='~=-o s4Xs +Xs"XsYsZsXs Xs$Xs(Xs,Xs0Xs4Ys<]ÐUU o w$p Mø<o o o ۸ Ը>͸ ƉUUo w $q o øo o 𸟮 o UWVS\u] M %=?= $q FHt'PF0hHv SVY_SvHe[^_ÃSF0bSvXZho 뿃SvsSjjhp 릃SvRSjjhރSv:SjjhƃSv"Sjjh 뮃Sv Sjjh떃SvXZSj.D)SvSjjhoa `Pvha vSRvvhp SvSjjhp  SvuSjjh) ۃSj{_XSvSSjjh `SvH8Y^Sj}vwSj[wXZSvSjjh SvHXZSj]뾃Sj[?Y_SvSjjh SFHpSjjh SFHpH륃Sj(Y_SvXZSj)O}Sj jh p ~E,$v Sjjhp YEuyEJuEuEu_E0uEąuȅE̅uxMЅuREԃt P[ Php S$E؅uSjjh Sjjh/p wSj jhBp cXZSu<Ph c hPp S^_SudQhb hPp SXZSu9Phc hPp Sz_XSu Qh c hPp SVXZSuPhT hPp S2_XSuQh*c hPp SXZSug}Ph1c hPp S_XSuCNQh8c hPp SXZSuPh?c hPp S_XSuQhZp hPp S~XZSuPho hPp SZ_XSuQhMhPp S6XZSucPho hPp S_XSuk4Sjjh_p Sjjhfp Sjjhh Sjjhkp Sjjhsp SjSjjhmc XZSvSjjh SFHpSjjh SFHpHSjjhuc Y_SvSjjh SvHSvaSjjhSjjh{p _SjjhSv& ho hp VSv hMSv ho ʃSv h 봃Sv hZp 랃Sv h?c 눃Sv h8c oSv h1c VSvf h*c =SvM hT $Sv4 h c  Sv hc Sv hb Sv h c Sv hb Sv hp Sv hb uSv h-\Svl hc CSvS hΨ*Sv: hc Sv! h Sv hV] Sv hoSv hc Sjjhc Sj jhSjjhp Sjjhp Sjjhp Sjjhp Sjjhp Pvhp SvHuSv1FH8u ɉuSjjh (FHSjjhXZSvSjjhSFHpSjjhSFHpHSjjhp vSjjhp SvSjjhA SvfSjjh<SvKSjjhSv0SjjhSvSjjhSvSjjhSvSjjhhSvSjjhMSj-Y_SvvSj@UVS]C='u t>Kt@3P PhEv VXZVsKVjjh6X e[^É3P Php VؐUWVSl]%=?$hv KHtHRC0hHv 5m m 1эL m YsHe[^_ÃC05m vm 1эL m 뿃 sE^_ho v s.m  & f sm  * K sm  + 0 sm f, @ sm  - sm f.m  sm  / 4 t=Psha 5m sm v1эL m Psh,v C}fE fEmUmUR$E@u PRhsshw sm f.r@m # sm f.c١m f{ sm m f, @XsHm dm f}m m f[ sm 4m f, @Xm sHm f]밡m f[ sm m f, @_CHpm m f, @^CHm pH땡m f(m  sm f),}s=m  p 󥤋m 1׹эD Um _$h{ m TEXT@m 1эD Mɣm };EE}TEE}mE E}ąMȅ3E̅EЅEԃt> P/ Php 5m cm 1эL m E؅t3=m /p fm ׹1эL m m f }@=m Bp fm 1 эL uЉ m (Ph c hPp 5m m 1XL ủ m WRhb hPp 5m Um 1XL uȉ m Vhc hPp 5m m 1[эL uĉ m 8Ph c hPp 5m m XL u m PhT hPp 5m m XL u m IQh*c hPp 5m Gm эL Zu m QPh1c hPp 5m m XL u m Ph8c hPp 5m m XL u m Qh?c hPp 5m m эL Zu m AjPhZp hPp 5m ?m XL u m Pho hPp 5m m XL u m QhMhPp 5m m эL Zu m {Rho hPp P~m XL u m >;=m _p fm ARCAm IMAGf@Em TEXT@BOXUNKN@OWNm f< sm m f>Hm subs@tr(m  s~m f, @CH_pm ]m f, @m XCHpHm strc@at(m  sm f, @m XsH` sm  // @m :m strl@en(m m itosf@(m  s ho hp 5m  sd hMփ sO ho  s: h 묃 s% hZp 뗃 s h?c 낃 s h8c j s h1c R s h*c : s hT " s h c  s hc  sk hb  sS h c  s; hb  s# hp  s hb z s h-b s hc J s hΨ2 s hc  s h  s{ hV]  sc ho sK hc =m c fm =m fm ׹1эL m m cent@re(m 1 эL s m m f, @m 1эL m vm encl@ose(@돡m redu@ce(xm appe@nd(m 1 эL s m  m f, @m 1XCHL p m m f, @m 1эL m bm dele@te(Vshp 5m m 1эL [H m  tP sECHt,m f, @m 1эL m CHËum f)vm _m if m 1 эL s m =m fm 1эL CHZp m u=m fm 1XCHL pH m p 6=m fm =m p fm  sm  || @ sm  && ߃ sm  == ǃ sm  != 믃 sm  < sim  <= y sNm  > s3m  >= Cm f- m srm f@UWVSPuF='Vm ] 6P PhEv 5m 1ۋm ع_L v m om f; @m эL m Y[h3v PXZ6P _Xh] P[^5V-Ϊ$e[^_Ð6PI Php 5m m 1[UWVS UBx'Pm ] 0p Ph=v 5m vm 1׈؉эL UXBp m 4 _Xh[v 5m 4 m эL m Y[h] UB0e[^_Ð0p/ PhNv 5m m 1럐UW-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-W-ÐUWVuP}Tw ${ } }u Ee^_Eu}ڃ PEu} PEu}릃 PEu}댃 P{E u} o P^E$u}$R PAE(u}(5 P$E,u}, PE0u}0 PE4u}4 PE8u}8 PE밃h?h@ЃhB뒃h=뢡,m Vph 4N PhUD,m p0 ,m 0bh]hh! ,m S0j*,m Q0j/x,m R0j%wP,m 0h^P,m 0h_P,m 0h`DP,m 0hadP,m 0hbP,m 0hc,m W0h\1,m V0h]\hd,m 0Fj(Nh2[,m S0j.h9%h:2h;h<,m Qph!Wh",m Rph)jP,m 0j+P,m 0j-.hEhFhGlhHyhIhJEhKRhL_P,m ph"4 PhU,m h#P,m ph*4P,m pj4 Ph+P,m 0j.ph6,m Wpj4_ PhMi,m VphN,m SphOn,m QphP4,m RphQP,m ph#P,m 0j,h$h,h4P,m pj4 PhR,m {P,m phSP,m 0j&!P,m ph$4L PhU몃h%f,m PDƹ< P,m W0j.',m Vph%,m p0DW-ƹh L,m p0DDС,m p0D-뼋,m U  .5,m u   ,m E   5,m u   ,m E  5,m u  ,m E  w5,m u  X,m E  :5,m u  ,m E  5,m u  ,m E  5,m u  ,m E  5,m u  d,m E  F,m S0j>4h&h.,m Qpj4H PhRR,m RphSP,m 0j&CP,m ph& h( j jtPj hî SÃPjjj Ph ,m p Ph ,m 4 PhTS j tPj hͮ S蓮ÃPjjjV Ph!,m p@ Ph!,m 4' Ph(,m  PhTSv` PSh}5D Υ$m `} f~ ~2~ ^R4 h 5D C营f<^ً$m P 4 h0M5D `$m 0m 2 m  W-=υ$m }H!1w! 94Cv FdPfpars@e er@ror Q4 h8M1эLQ$m H!1w$ 9CCw$m ܃ VD @ V諮0m j0m  m  $m tB$m wf (m  9tX@ m W--,m D(m t5D jjYhKM;(m t#PPh5D \;(m u݃5D j 9 t4 @uT 5 設 @u 5 莭e[^_P5 hM<5D עR5 hM<5D 転됉 $m =t[W-u9=,m X-DƉ=,m $m  m  (m 5D jjhbM躮뮋= t4 @uN 5 褬 @u 5 芬1S5 hM<5D ١V5 hM<5D 轡=أ$m W-YW-uW-p 4 RhyM5D ]PVhM<5D FPGPh(}1эLQ茭~GMtMPVѨXZ4 V¨ZYhKV赨Gu hH}< 1эt hM ҉$m $55W-uOW-t W-,m DX-0m U,m H0m 4 5W-hM5D 돁ډ$m '4 5W-hM5D 跟5D jjh_ # W- W-5D jjhMi W-u$UҸNEEW- 5D jjhM蜫S5 m h N5D W5 hN5D  c h9N5 t4 @uQ 5 2 @u 5 Q5 hM<5D dS5 hM<5D H듍v5D jjhON謪U 5W-| XZuh} USPW-]u]]vQSh 5D 辝ڐUWVS 1[ ҹt.Rut~s799~Ĺe[^_Í{ߍvUWVS 1.ݠ ҹt.Rut~"s799~ǹe[^_Ív{܍vUWVS 1  ҹt.Rut~"s799~ǹe[^_Ív{܍vU( 0 4 ÍvU, B 0 9t#U( 0 B( 0 Í, P5( ң t (  0 릃h;hn1US5( t+@  X- ]Ív 5( *t 4Ť Ή=@T-` ~h ~u H ~kƅ( 8_l tmh@T-SXZhSۢl t<5( SYXS5( ¨ 5( 蝙X-Zph@T-Ã5( 됡l qhS]( l PUSP]4 $\ &fX%f]_Tf-     ."#&|=tz!titG/t6~t S4 ]4 H 4 4 4 4  4  4  4  4  4 v4 g4 X S4 = Sn4 H 茥fXfu+_t&( 0 4  S4 v3fX%fT.tFPjj5(  X-$H( 0 4  j.4 Ev  衤fX%fu j.덃 SE4 kfX%f.tCPjj5( BX-$( 0 4 3Pjj5( X-$=( 0 4 V S4 >诣fX%f͐蓣fX%f 5( ¡( 0 X[t$ PX"t,\t S4 4  5( ߞX-$>( 0 W nt S j 1 4 )&t j&E h]|t j|) h\=t j= h^=t j! h_=t h` ha=t hb hch/t j/ h1KUVS( th5t S跢^XhN S蚜ZYhp SM hIo @&hN Vj褲e[^Ð,  P| t7 @u| ( cP, Ph;5D %҃h;hn61S5` h?5D $ԝUWVS uF9Ƌ} t;t)Ct"WPtS19H!u1e[^_É1UWVSDu Vut e[^_à j0|  @| 1 Q谕| tw @uI| CVPC CC CUCCCC$C(C$BCZTP1Qh;5D 袒뒃h;hn賨1{Pj0h;5D n)h;hn|Uuh HX-@x ÉUWVS uF9Ƌ} t;t)Ct"WP[tS19H!u1e[^_É1UVS]5HX-PS5 v$ tj tQ5tE e[^vPPe[^Éu˃v\ېvDσ Sh눍vUWVS}Wh ] *~M<+ h "uVte[^_à j :|  @| 1} Q| t_ @u0| CuP6CF3C^nP}1Qh;5D  몃h;hn1Pj h;5D ؏Ch;hn1ۃ-pp t p$Wh [UVS]5HX-QS5 v$ti tQ5tE e[^OQSvPPe[^ÍvuRSv\ۉRSvDEð 볐UWVSE] Euh  h uW(trSPSCt @u> s诘 @u]e[^_锘VShM<5D ڐWPhM<5D ڍEð e[^_~\~ Tt #~$$ hְ  vUHX-t E à h  U    ÍvUWVS uV19H!ÿt@CtmtQ1 jh sh 5V-bS1 9H!uƒh 5V-|e[^_Ívh2 5V-|뙃 hN  끉UWVS =  } 8hb Wr|XZh We|  9H!s hn T s 9sth W|4$s9sth W{4$s$9s(th W{4$h W{S 9H!Vh( W{Y[h~ W{XZhH Wr{1e[^_à jh shl W踘 ֐UWVS E =X-  = _ ` p X-X-h  l f`   fP D:9Éh ) 'Es ' ~  ' D)ĉ% 6RSWPd )č% u H= X-\;h  l G  DG9h  =X- ` @  d tiX-O=w X-  d   d w 9`  ɉ d P d  ҉D ~)Ћl @ X-A w$  l 0iD  l h =X-))Å l h unʃ l  d @  f3B \ ƍ d ` w f9 t  ` = v 5D jj hRMs;h t#VPh5D Ї;h u݃5D j uh  l # h, h h l 0 l 0 @ PQh}5D 9 d  f ~2 P^4` h 5D Cf<^ً d P 4` h0M5D ˆ d p &` @ X-= d pH!1w 9*Cv FdP׈pars@e er@ror Q4` h8M1эLQl d H!1w! 9?Cw d ߃ V @ V"p ip v` @  d tA d wf h = 9X@` X--l h t5D jjhKM_r;h t&vPPh5D ̄;h u݃5D j q5  t4 @uT 5  @u 5 e[^_P5 hM<5D GR5 hM<5D +됉 d tTX-u2l H`X- l Pd ` = h #5D jjhbM3뵋= t4 @uN 5  @u 5 1S5 hM<5D RV5 hM<5D 6떐=أd  X-aX-uX-q 4` RhyM5D ՂPVhM<5D 辂PGPh(}1эLQ~GMtMPVIXZ4` V:ZYhKV-Gy hH}_<` 1эt hM ɉ d x~5;X-uBX-t X-l `X-Bp J l Hp 4` 5X-hM5D 聁뜁ى d Vv4` 5X-hM5D C5D jjh_ 词 X- X-5D jjhMqX-u$MɸiEEX-=5D jjhM'V5` h N5D 苀P5 hN5D l=  h9Ny5 t4 @uQ 5 轊 @u 5 裊Q5 hM<5D S5 hM<5D 듉5D jjhON8UVS@h^ 5V-8 o4$迋$跋 jhq Sׄ juSɄYXh_<V|XZ8VnYX5V-Co4$胃${XZhw 5V-!o hh h< e[^ÍvUEMUWVS 1݀ ҹt.Ru}t~"s799~ǹe[^_Ív{܍vT Ut \ ` ÍvUX B \ 9t#UT \ BT \ ÍX P5T 讅 t T  \ 릃h;hnۓ1U5T t 4ń hÍv 5T .`X-$USR]T ` uVfXfu(_t#xT \ ` 뮃 S` ]Ã~u t u` ۅu袉fX%fu_t tу t̃ tǃ tƒ#t So` ` 냍vX  P~| t7 @u| T PX Ph;5D !|҃h;hn21뾐UWVS [Ö>y00)19sא0F9r [^_UVS[R00)ɍqu j[^É0NuUS[01҅tRju|]ÐUSR  t ЋuX[US[ûRb]EVERYONEUNKNOWNOHDEARINTERNAL%scout%donald%arcaNEWOTHERsystem error: ereallocMALLOC emalloc(%d) 0x%x out of memoryENTSTK pushEntryStack(%s) ENTSTK popEntryStack ENTSTK clearEntryStack errorComplete 1 0 appendErrMALLOC free 0x%x appendHistTcl error (appendHist): %s notice: %saction in %s%s%s: notice: %s %s: warning: %s %s: error: %s called by action %s while executing string near line %d, char %d: ^ DATSTK reset_stack errorf: longjmp while executing file %s while executing stdin in action %s called by %s%s: error: %s: interrupt button pressed FILE_DEVSTRING_DEVPARSER yyparse() returned %d PARSER yylex() returned %d run: setjmp ...%s->TKEDEN_LIB=Failed to putenv TKEDEN_LIBhttp://go.warwick.ac.uk/EDEN/r1081.62dtkeden%s: %s version %s (%s) unknownLib directory is %s hostName is %s See %s for more information %s: gethostname failed /eden.eden+sac:h:vul:ew:argument p %s systemEveryOneAllowedautocalceden_error_index_rangeeden_notice_undef_referencesynchronizehigherPrioritypropagateTypeinitialisation%s: can't open %s %s: unknown argument %s A`ptopEntryStack failed: TopEntryStack <= 0Tcl error (errorComplete): %s Tcl error (errorContentf): %s %s: interrupted using control-c: press again within three seconds to quit checkRunSet: doing Tcl_DoWhenIdle and setprompt checkRunSet: RS->nitems=%d: run action %s checkRunSet: doing Tcl_DoWhenIdle checkRunSet just swopped RS: RS->nitems=%d checkRunSet: swapping RunSets checkRunSet: doing Tcl update checkRunSet start: RS->nitems=%d interrupted: clearing both RunSets (current queue and todo)MCSTAT run start: %s %s%s%s Inp_Dev level: %d MCSTAT run end: Inp_Dev level: %d, errorflag: %d Failed to get current working directoryUsage: %s [-s|-a] -c -h {-w} {-l} {-v|-u} {-e }|{} {-e }|{}... -s invoke as the server ("superagent") -a invoke as a client ("agent") -c channel number: 0,1,2,3, ..., 99 -h hostname of the machine running the dtkeden server (only required if running as a client [-a]) -w dtkeden client login name -l name of the directory containing the library files -v output version information and exit -u output this usage information and exit -e execute 'code' if file is '-', standard input will be read See %s for more information Use the -u option for information on usage of command options func cwd { return _eden_internal_cwd(); } proc cd { _eden_internal_cd($1); touch(&cwd); } dirname is _eden_internal_dirname; basename is _eden_internal_basename; PI = 3.14159265358979323846;couldn't open initialisation file %s: %seden_backticks_dependency_hack%%eden include("%s"); /* (invoked from command line) */ -w option not valid with -s (login name is for client only, not for server) Channel number must be less than 100 %s: Could not find library files location (try using the -l argument) Failed to get current working directory -- we will not be able to restart. Continuing anyway.** printRunSet: %d: %s ** printRunSet: no items in RS screenDoNaLDdefaultWinDoNaLDSYSTEM*%s %d %d redeclare local variable:local variable is not in this level:compiler error while patching codeused outside definition$undefined.REALINTEGERMYCHARCONSTANTFORMULABLTINRLIBPROCPMACFUNCTIONPROCEDUREPROCMACROAUTOPARALOCALBREAKCONTINUESWITCHCASEDEFAULTDOFORWHILEELSEAPPENDINSERTDELETERETURNISTILDE_GT',''='PLUS_EQMINUS_EQ'?'LAZY_ORLAZY_ANDBITANDBITOREQ_EQNOT_EQ'>'GT_EQ'<'LT_EQ'+''-'SLASH_SLASH'*''/''%'NEGATENOT'!'PLUS_PLUSMINUS_MINUS'#''&'ASTERISKEVAL'$''['']''`''('')'';'':''{''}'programlvalue@1primarysecondarystmtwhileforexpr1end_expr2end_expr3thenelsecompoundstmtlistcasesexpr@2evaluatecolonlazy_andlazy_ordefndeclare_relation@3tilde_gtdeclare_formula@4declare_action@5def_begindef_endrefer_optid_list_optid_listdeclare_para@6declare_local@7local_listarglistargument_listlocal variablereturnshift'case' used outside switch'default' used outside switch'continue' used outside loop -> %s , encountered `%s'Error: state stack nowShifting error token, Discarding token %d (%s). , expecting ` or `parse errorShifting token %d (%s), Next token is %d (%sNow at end of input. Reading a token: Entering state %d Stack size increased to %d parser stack overflowStarting parse CFJ@GNO>;*<?QP9+7.KLMRS  !"#$%&'(),-/01234568:=ABDEHI !%)-.58;>ACEINSUX[_bfltz~  $(,0158;>AHLPTX\`egikmoqsz{ZjJ'UKlL>X>GUMlMNUOU+lU,lU-lU+UW=lDUUDEUUEUYNlOXNOYKlLrlP&P&lP"P"UP#U*lP$U*l*lP%U*lP QQPPglhZ]^_`abZ\ZNlOP[NlOcZ NlOcZ NlOcZdZePNPlPPlPOlO!RfSfZNOk   VXGUKiLl;ll<ll>ll?ll@ll=ll7ll8ll9ll:ll5ll6l.mU<llFClBll.cloll1ll/llpllqll3ll4lnNlOIQ20vyskuKLPMlMtuKLP)kxlPMlMwxlP({kz~|f}RSQk*kPP*l*l    &')++6789<>?BEIKLNPSTVXZ`fkpy    !"(*-39:;>BCGKRS[agxyz}=` I]III  Ia IIII IJJJJ"J'J,J2J8JAJHJMJUJXJ\J bJ gJnJuJ|J JJJJJJJYJJo JJJJJJJJJJJJJKK KKKK$K0K4K8KAKFKJKNKRKVKZK^KbKfKjKnKvK}KKKKKAKKKKKKKKKKLKPL   KKKKKKL LLL'L7L:LILBLLLVL^LhLtL|LLLLLLLTTTUUUUUUUUUVVVWVVVVVXXXYYZZZZZZZZZZZZZZZZZZZZZ[\]^^__`aabcdeffghijjjjkkkkklllllllllllllllllmlllllllllllllnopqrrrstsuvwvxzy{{{|}~~  LGHDEF|}~IJK10]kB/>MN.Cqop&'@%2C_ baO3yu;nm`z$ ^ =? 574Aedhi[\WXYZQRVSTUfg; P;6(vj!#8:l,+9rc<"x*)>--./02345679:;<p=q>?  ###0###Hhr###P) +   k   r388883+ :.51#YDr6 >Mo=rYxn]r @ F|E|gJb81P@RVWno\^ABC`abDlem`abEeFeeg`abcd8fiheecdecdeeon8JLMN TXYZ]   rstuvwxyz{|}~8U{|}~8888 8 yz{|}~ !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*+,   !"#$%&'(G*O !"#$%&'(G*j   !"#$%&'(G* !"#$%&'(G*     'GHI !"#$%&'( G*S'G* 'GHrstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~uvwxyz{|}~wxyz{|}~***P**!"()>?@)*PN F+,-Q4K6+,-PNKNPKPKK+,-FGDE3N3NKKDEOON=?K()Q[DEK`abKFefghLKk*F)ONqQs(u_wxyz{|}~=L;<=>?@ F* RK#$%P!P*LP./0123456789:;<=>?@HF LQS789:;<=>?@`fF  "#$%&'.56789:;<=>?<>FBCDEGIJKMNPR  "#$%&'.<>BCDEGIJKMNPRS  "#$%&'.<>BCDEGIJKMNPRS  "#$%&'.<>BCDEGIJKMNPR  '.<>'.<>BCDEGIJKMNP  '.<>'.<>BCDEGIJKMNO  ' '> .J'MNP<>'>>./0123456789:;<=>?FQ./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FM./0123456789:;<=>?FM./0123456789:;<=>?F*L./0123456789:;<=>?F./0123456789:;<=>?F123456789:;<=>?F3456789:;<=>?FKKA^ Z 'XzKZK+`r%t9!K!U.UU;UMUZhUKKKKKKKKK(Q^kx8E^wFUbKKK@F7L[77KK7FU7KFUcan't reference local variable within eval()can't reference local $ variable within eval()'break' used outside loop/switchassignment used inside formulaReducing via rule %d (line %d), or... (%d other possibilities)parse error; also virtual memory exceededexitexecuteincludeinclude_file_eden_internal_cwd_eden_internal_cd_eden_internal_dirname_eden_internal_basenameusbhidopenusbhidreadusbhidcloserawserialopenrawserialcloserawserialreadapplysubstrstrcatsublistlistcatfloat_type_convertwritelnarraynameofformula_listaction_listsymbolssymboldetailsymboltextsymboltableforgetpackget_msgqsend_msgreceive_msgremove_msgqrealranderror_nobackgndpipeipopenipclosefdreadyrawreadrawwriteregmatchregreplacegetenvputenvprinthashtouchgettimeftimefeofgetcharfgetcstatfgetsungetcfscanfsscanfsendServersendClientpropagateaddAgencyremoveAgencycheckAgencyqueryObsrenewObsdebugDisp2PSStringRemainDisplayScreenPlotShapetodosasami_vertexsasami_set_bgcoloursasami_poly_geom_vertexsasami_poly_tex_vertexsasami_poly_coloursasami_poly_materialsasami_object_polysasami_object_possasami_object_rotsasami_object_scalesasami_object_visiblesasami_viewportsasami_setshowaxessasami_material_ambientsasami_material_diffusesasami_material_specularsasami_material_texturesasami_light_possasami_light_ambientsasami_light_diffusesasami_light_specularsasami_light_enabledsasami_light_attenuationsasami_light_directionalinpdevlinenoinpdevnameusage: debug()failed to get cwdstring eden_internal_cwd()failed to cd into '%s': %sfeof()int feof(stream)fgetc()int fgetc(stream)stat(filename);stat()failed to stat %s: %sstring gets()fgets()string fgets(n, stream)ungetc()void ungetc(c, stream)fscanf()sscanf()substr()substr(s, from, to)sublist()sublist(L, from, to)%.15g'%c'(%s is variable)(%s is built-in function)(%s is int-valued C function)(type=%d, val=%d)(%s is user-defined function)s = nameof(&var);lcat()execute()execute("%s"); execute(string_expr);include()can't read file apply(function, list);symboldetail(symbol);symboltext(symbol);symbols(type);pointer%d ---------------------- (%s is formula)(%s is C function)(local variable #%d, data pointer: %d)char pointer: %d)edenDefn ,func procmacro proc errorInfo isinternalwinfo exists .view.left.list.view.left.list curselection.view.left.list get wrong # args: should be "cleanup eden.eden.t.text see insert } masteragentsetupViewOptions".view.left.list insert end address=pack(data,...);array()list = array(n, data);user_errorrun-time errortouch()getenv()string = getenv("env_name")putenv()ok = putenv("env_name=value")backgnd()/dev/nullbackgnd: can't execute %s pipe()pipe(): can't execute %s ipopen()/dev/ptmxptemldterm/dev/consoleipopen(): fork failed ipopen(): can't make pipe ipclose([rfd, wfd, efd]);ipclose()fdready()rawread(fd, maxbytes);rawread()rawread(): %srawwrite(fd, string);rawwrite()rawwrite(): %srawserialopen()rawserialopen: tcsetattrrawserialopen: cfsetispeedrawserialopen: cfsetospeedrawserialopen: tcgetattrrawserialclose(fd);rawserialclose()rawserialread(fd, maxbytes);rawserialread()rawread(): %dusbhidopen()usbhidread(fd);usbhidread()usbhidread(): short readusbhidclose(fd);usbhidclose()regmatch(pattern, subject)internal matching error %dtodo()todo called: queuing <%s> todo(string);real realrand()Disp2PS(screen, file);StringRemain(screen, box);string tcl(string)catch {destroy .%s.b%d_%d}canvas .%s.b%d_1b%dscout_show_2Draise .%s.b%d_%dlower .%s.b%d_%d .%s.b%d_%dcanvas .%s.b%d_%dscout_show_canvastext .%s.b%d_%dscout_show_textcatch { destroy .%s.b%d_%d }PlotShape()locustruetransparent%s.%s_xOrigin%s.%s_yOrigin%s.%s_xScale%s.%s_yScaledraw_shapetcl variable not found: sendServer()sendServer sendClient()sendClient sendClient("", "");sendOtherClients renewObs("Observablename")renewObs()renewObs("unknown error in Query()no such an observable %squeryObs("Observablename")queryObs()queryObs("current state: %s = @ current state: %s = %s propagate()addAgency()oraclehandlestateremoveAgency()no such observable checkAgency()n must be an integersasami_vertex(n,x,y,z)sasami_set_bgcolour(r,g,b) must be an integer must be an integer must be an integer must be an integer must be an integer must be an integer must be an integersasami_viewport(x,y) must be an integersasami_setshowaxes(n) must be a string must be an integersasami_light_pos(light,x,y,z) must be an integer must be an integerstring _eden_internal_dirname(string)string _eden_internal_basename(string)void _eden_internal_cd(string)int scanf(format [, pointer ... ])scanf can handle at most 9 variablesint fscanf(stream, format [, pointer ... ])fscanf can handle at most 9 variablesint sscanf(string, format [, pointer ... ])sscanf can handle at most 9 variablessubstr: index out of range (from < 0)sublist: index out of range (from < 1)(%s is real-valued C function)(%s is user-defined procedure)(%s is user-defined procmacro)(local variable #%d, location 0x%x, value oops - internal error - unknown type of pointernameof(): address needed (got %s)include(filename[, filename...]);symboldetail(): address or symbol name needed (got %s)symboldetail(): no such variable symboltext(): address or symbol name needed (got %s)symboltext(): no such variable Tcl errorInfo (from tkdefine): dumpeden notation-option show-not-yet-define".eden.t.text mark set insert 1.0.eden.t.text config -state normal.eden.t.text insert end {AGENT .eden.t.text config -state disabledforget(): pointer or symbol name needed (got %s)listcat: -ve number in 1st argumentpid = backgnd("cmd", "cmd", "arg1", ...);pid = pipe("cmd", "cmd", "arg1", ...);ipopen(): couldn't set terminal attributesipopen(): couldn't get terminal attributesipopen(): ioctl couldn't push ldterm moduleipopen(): ioctl couldn't push ptem moduleipopen(): couldn't open slave pttyipopen(): couldn't get name of slave pttyipopen(): failed to unlock the slave ptty ipopen(): failed to set permissions on slave ptty ipopen(): failed to open master ptty %s ipopen(): can't execute command file %s: %sfileidlist = ipopen("cmd", "cmd", "arg1", ...);fdready(fd, type, [sec, milli]);fdready(): second type argument must be one of 'r', 'w' or 'e'rawserialopen(file - eg /dev/ttyS0);rawserialopen: couldn't open filerawserialclose(): couldn't close fileusbhidopen(file - eg /dev/input/event0);usbhidopen(): couldn't open fileusbhidclose(): couldn't close fileovector overflow: found more than %d matchesregmatch: pcre_exec p='%s' s='%s' rc=%d o[0]=%d o[1]=%d couldn't compile regular expression '%s': failed at offset %d: %snewStringBuf 0x%x s=0x%x l=%d %s reallocStringBuf 0x%x s=0x%x l=%d rl=%d %s %s freeStringBuf 0x%x s=0x%x l=%d %s reference (%d) to subpattern that was not usedreference number greater than the number of subpatterns (reference %d, subpatterns %d in pattern "%s")reference cannot be negative (encountered %d)$ in replacement denotes a reference and must be followed by an integer (found %c)regreplace: p=%s r=%s s=%s o[0]=%d o[1]=%d regreplace(pattern, replacement, subject [, limit])Eden tcl() command, whilst executing `%s`, got Tcl errorInfo: %s Eden tcl() called with @ parameterDisplayScreen(&screen, screen_name);DisplayScreen called with screen undefinedPlotShape(viewport_list, segid, &attr);if [ winfo exists .%s.%s ] { .%s.%s delete t%d }sendServer("servername", "scripts")sendClient("clientname", "scripts")no ORACLE privilege on observable %stcl("show hist 1"); /*** renewObs ERROR %s ***/ tcl("show hist 1"); /*** queryObs %s ***/ tcl("show hist 1"); /*** queryObs %s%s ***/ propagate("Observablename", "scripts")addAgency("LSDagentName", "LSDtype", "observableName")removeAgency("LSDagentName", "LSDtype", "observableName")checkAgency("LSDagentName", "LSDtype", "observableName")sasami_poly_geom_vertex(,,)sasami_poly_tex_vertex(,,)sasami_object_poly(,,)sasami_poly_colour(poly,r,g,b,a)sasami_poly_material(,)sasami_object_pos(object,x,y,z)sasami_object_rot(object,x,y,z)sasami_object_scale(object,x,y,z)sasami_material_ambient(material,r,g,b,a)sasami_material_diffuse(material,r,g,b,a)sasami_material_specular(material,r,g,b,a)sasami_material_texture(material,texture)sasami_light_ambient(light,r,g,b,a)sasami_light_diffuse(light,r,g,b,a)sasami_light_specular(light,r,g,b,a)sasami_light_specular(light,e)sasami_light_specular(light,d)sasami_light_attenuation(light,attenuation)sasami_object_visible(object,e)+A_h  +, @ T h h h    ../ //^/0///0000060F0V0AVMEXEC|MCSTAT reset_compiler_status VMEXEC execute end execute(0x%x) (now %d items on DATSTK) VMEXEC|VMREAD execute: next is pc=0x%x, *pc=%s VMEXEC|VMREAD execute(0x%x) (to start, %d items on DATSTK) CALSTK end call %s (level %d) (datum at 0x%x, pushed to DATSTK %d) func/proc/procmacro '%s' neededCALSTK|DATSTK call %s: frame level %d call to %s %s nested too deeplyfunc/proc/procmacro needed, found %sSYMTBL|DEFNET change_targets %s internal error: change_sources()SYMTBL|DEFNET change_sources %s VMOPER|VMREAD|SYMTBL|DEFNET related_by_code VMREAD|SYMTBL|DEFNET related_by_code_runtimelhs VMWRIT code %s to location progp=0x%x EVAL error : unsuitable usage of eval syntaxmuldividenegatelazy_notconcatconcatoptjmpjptjpfjpntjpnfdduppopdpushUNDEFpushintconstpushcnv_2_booleqswitchcodedefinition_runtimelhsassigninc_asgndec_asgnpre_incpost_incpre_decpost_decnoupdateresetupdatelookup_addresslocaladdrindexcalcmakelistgetvaluesellistsizeappenddeletequerybitandbitoreagerfreeheapevalrelated_by_coderelated_by_code_runtimelhs0x%x (%d)CALSTK|DATSTK ret_call %s %s starting: args %s %s ending: return DATSTK push DATSTK pop (DATSTK now %d) VMOPER|CALSTK eval : CYCLIC DEFINITION: ABORTEDprogram too bigVRWRIT codeswitch no. of 'case' overflowtext buffer overflow@%f%cй$0\hschedule: not scheduling %s %s eval_formula_queue: formula %s not changed: not evaluating it eval_formula_queue: formula %s changed and ready: evaluating it eval_formula_queue: formula %s not ready: not evaluating it MCSTAT|FQUEUE|SYMTBL|AQUEUE eval_formula_queue invoke_action_queue: invoke action %s invoke_action_queue: action %s not invoked MCSTAT|AQUEUE|DATSTK|FQUEUE invoke_action_queue SYMTBL|FQUEUE|VMEXEC change %s->changed = %d) MCSTAT|FQUEUE|AQUEUE reset_eval FQUEUE schedule %s AQUEUE schedule %s MCSTAT resetLock VMOPER|MCSTAT|FQUEUE eager SYMTBL mark_changed(%s) end hptr=0x%x heap overflowstart hptr=0x%x HEAPAL getheap(%d) VMOPER|HEAPAL freeheap input buffer overflowautobreakcontinuecasedefaultprocprocmacroFALSETRUEOFFMOTIONENTERLEAVEOpenDisplaycartCARTtransPIintersectparallelperpendbetweencolinearintersectsseparatesincludesdistlargerdistsmallerdistmidpointsqrtasinacosatanlogincidentDD_randomrtosdotxdotydot1dot2dotraddotargpolarvector_addvector_subpt_addpt_subtractscalar_multscalar_divscalar_modsysClock%lf%x%oFloating-point format errorscoutScreenInitOpennotationGetnotationSwitchnotationPushPop%donald0%sasami%lsdnotationChar('\'');notationChar('%c');notationChar('\\');notationChar('#');single char expected.agentName config -text {}unexpected end-of-file in /* */ comment%s: Can't find scoutScreenInitOpen: do you have the correct -l setting? notationGet: called when currentNotation != NEWOTHERunexpected end-of-file in string constantunexpected end-of-file in character constantexpecting string, char or integer for virtual agent.agentName config -text {current agent: parameter with illegal type passed to C-lib function (got %s for parameter no %d)parameter with illegal type passed to C-lib function: (got %s for parameter no %d)VMOPER|DATSTK add VMOPER|DATSTK sub VMOPER|DATSTK mul VMOPER|DATSTK divide VMOPER|DATSTK mod VMOPER|DATSTK negate VMOPER|DATSTK lazy_not VMOPER|DATSTK not VMOPER|DATSTK concat VMOPER|DATSTK concatopt VMOPER|DATSTK jmp jpt (loop construct)VMOPER|DATSTK jpt jpf (loop construct)VMOPER|DATSTK jpf jpnt (loop construct)VMOPER|DATSTK jpnt jpnf (loop construct)VMOPER|DATSTK jpnf VMOPER|DATSTK and VMOPER|DATSTK or VMOPER|DATSTK bitand VMOPER|DATSTK bitor VMOPER|DATSTK ddup VMOPER|DATSTK popd VMOPER|DATSTK pushUNDEF VMOPER|DATSTK pushint VMOPER|DATSTK constpush VMOPER|DATSTK cnv_2_bool VMOPER|DATSTK gt VMOPER|DATSTK lt VMOPER|DATSTK ge VMOPER|DATSTK le VMOPER|DATSTK eq VMOPER|DATSTK ne : CYCLIC DEF : ABORTED'=':VMOPER|DATSTK|SYMTBL assign +='+=':-='-=':++ (pre-inc)'++':VMOPER|DATSTK|SYMTBL pre_inc ++ (post-inc)-- (pre-dec)'--':VMOPER|DATSTK|SYMTBL pre_dec -- (post-dec)VMOPER|MCSTAT noupdate VMOPER|MCSTAT resetupdate MCSTAT|VMEXEC|SYMTBL update indexing into list/stringVMOPER|DATSTK indexcalc VMOPER|VMREAD makelist HEAPAL|DATSTK makearr(%d) VMOPER|DATSTK getvalue VMOPER|DATSTK sel VMOPER|DATSTK listsize VMOPER|DATSTK|SYMTBL shift VMOPER|DATSTK|SYMTBL append VMOPER|DATSTK|SYMTBL insert VMOPER|DATSTK|SYMTBL delete query (?)%c %s%s ~> [, %s%s=%s is%s /* current value of %s is */VMOPER|DATSTK query index out of range (%d is outside the range %d...%d)type clash: expecting %s (in %s, got %s)type clash: expecting reference to variable (in %s, got %s)type clash: expecting reference to variable (in %s)type clash: number type required (got %s)division by zero (trying to calculate %d/0)division by zero (trying to calculate %f/0)division by zero (trying to calculate %d%%0)type clash on negation: number type required (got %s)type clash: lazy not: expecting %s (got %s)type clash: logical not: expecting %s (got %s)type clash on concatenation: expecting strings or lists (got %s and %s)type clash: eager logical and: expecting %s (got %s and %s)type clash: eager logical or: expecting %s (got %s and %s)type clash: bitwise and: expecting %s (got %s and %s)type clash: bitwise or: expecting %s (got %s and %s)type clash: convert integer to bool: expecting %s (got %s)VMOPER|DATSTK|VMREAD|VMEXEC switchcode VMOPER|VMREAD|DEFNET definition %s definition_runtimelhs (adding definition)VMOPER|VMREAD|DEFNET definition_runtimelhs %s %s %s is %s, not a read/write variableVMOPER|DATSTK|SYMTBL inc_asgn VMOPER|DATSTK|SYMTBL dec_asgn VMOPER|DATSTK|SYMTBL post_inc VMOPER|DATSTK|SYMTBL post_dec VMOPER|VMREAD|DATSTK addr: %s VMOPER|DATSTK|SYMTBL lookup_address: %s VMOPER|VMREAD|DATSTK localaddr: %d index error: data isn't a list or string (when trying to find item with index %d)index error: list or string required (got %s, when trying to find item with index %d)reference to undefined variable %s (turn these notices off with eden_notice_undef_reference=0;)zero sized list found in 'shift']; /* %s last changed by %s */ IDlist nowaddID: not adding id=%s addID: id=%s addID: id=* refer_to: sp=%s, Q=builtinC-funcReal-funcvar???string neededunknown data types = type(expr);i = int(expr);f = float(expr);c = char(expr);c = str(expr);FGG*GF5Gdata = _type_convert(data, "type");:;<=>?[\]^_` ``@`  @ ]KkKpKvK|KKK6POOOOOOOOOOOOOOOO,P,P,P,P,P,P,P,P,PO,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,P,PO,P,P,P,P,P,P,P,PO,P,P6P6P6P6PhPhPhPhPPuOuOP,P,PPuO,P,P&P&P,P,POOQ___________________________________Q___ RQUZ__Z________________Z___________________________Z`__`____________________________`QSTSTTTTSTTTTTTTTTTTTTTTTTLTTVTTTTTTTTTTTTTTTTTTTTTTU]x]]]]]cccccccccccclccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,eeee-e-eeeee`eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedeeeeededeeeeede/pfffjm/p/pff/pffffffffffffffff/pfffffffffffffffffffffffffff#off/pffffffffffffffffffffffffffff:p q\ljlCkjljljljlkjljljljljljljljljljljljljljljljljl\ljl(l\l\ljljljljljljljljljljljljljljljljljljljlmlsmsmsmEmsmsmsmsmsmsmsmsmsmsmsmsmlsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmPmsmsm[msmsmsmsmsmsmsmsmsmsmsmsmsmsmsmsmlsmsmsmcmsmsmsmsmsmkmsmsmsmsmmrrrrdssssst8t\tptttuKuu(v(v(v(v(v(vxxxxxxxxxl{l{{{{{{{{ $$$$$$$$2Jӆӆӆ<<+Љ``\r1l8|8|8|8|8||||}}},}||||||}!~e~~~1}}}}}U}lowerupperalnumasciicntrlgraphprintpunctspacewordxdigit3.9 02-Jan-2002\ at end of pattern\c at end of patternmissing )invalid condition (?(0)nothing to repeatunknown POSIX class nameunknown option bit(s) setregular expression too largeunmatched parenthesesinternal error: code overflowfailed to get memoryparentheses nested too deeplymissing ) after commentmalformed number after (?(assertion expected after (?((?p must be followed by )erroffset passed as NULLunrecognized character follows \numbers out of order in {} quantifiernumber too big in {} quantifierconditional group contains more than two branchesunrecognized character after (?<unrecognized character after (?internal error: unexpected repeatrange out of order in character classmissing terminating ] for character classinvalid escape sequence in character classPOSIX collating elements are not supportedlookbehind assertion is not fixed lengththis version of PCRE is not compiled with PCRE_UTF8 supportback reference to non-existent subpatternfprintfsprintffopenfclosefseeksetbuftracesrandatan2log10powsinhcoshtanhstdoutstderrcontext change_scope%s is [ OPENSHAPExf_fi_, &%s ]; _xi_InitDoNaLDViewport(); plot_pointplot_labelplot_lineplot_circleplot_ellipseplot_shapeplot_arcplot_rectangle%%donald viewport %s %%eden %%donald %s %s %%eden nSegmentnodesegment%s %d | Symbol Table :- Symbol Table End. variable name too long~.donald.t.text insert end { } } viewport.donald.t.text insert end { {\n".donald.t.text insert end {, } master = }.donald.t.text insert end "cleanup donald.donald.t.text see insert 3%%%a%"S%%.donald.t.text insert end { }.donald.t.text insert end {viewport .donald.t.text insert end "within .donald.t.text insert end "}\n".donald.t.text insert end {AGENT .donald.t.text config -state normal.donald.t.text mark set insert 1.0.donald.t.text config -state disabled[ INF ] + - * % dotx(doty(dot1(dot2(dotrad(dotarg(cart(polar(line(rot(scale(vector_add(vector_sub(scalar_mult(scalar_div(scalar_mod(intersect(parallel(perpend(circle( && || ! between(colinear(intersects(separates(includes(distlarger(distsmaller(label(dist(midpoint( == != > >= < <= sqrt(asin(acos(atan(log(exp(float(incident(trans(ellipse(DD_random(arc( // rtos(?1?2?3?4?5?6rectangle(reflect(inf mod div .x.y.1.rad.argpt_betwn_pts(trunc(rand(piitos(xf; free_treecopyTree @ \[if then else false) ? dumpdtree\[]!(I!image( impose print_tree", %donald is open2shape(define = ""; hJ.<JXhhhhhhhhhhhhhhhhhhhhJͳhh<hhhhhhhhhhhhhhhhhhhhhh<Xhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh|XͳõA*õõõ*õ$*::?^??η?????????8???????E????????^?????????????????????????D$ùU^jj-Ѽ-jým }3X   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu "(-/269;=?ACEGIKMOQSUZ_dgkmqsuwy{}   #&),/4:>CHOXcjlnprtvxz|~vwv$}x{ymm zwzmr|szr|sw|w~m  LmLmLmImImM()&' pqpmq$PnorMsrXspMqpMMqnMonMonMMonMoYZ[^]ZPONQRUVSTW*no+nMoabefdc$Pno$Pno%no%nononMonMMo=nMMMo!"#./0123456,-@7<>?9CEF;8:ABDGHhh`$JJm~K~K~Km~Km /14@prstuvwxyz{|}~  "#$%&'-./01234578:=>?@ABDFHJLNPRV]_`abcdefghijmopqrstuxz{|}~=` IT &\ X [ d ^ c h II` n ^ v |   J        uJ   bJ-                     " ) - 3 9  A J R [ d q z           YJo KJJJJRJJJ K&               %  , 0 : ? G O V ] d k r y   K}K=     I  K           vvvwwwxwwwwyz{{{||}}~~~~~~~~~~~~~~ *+012345! "./,-mndefghijklpytzxqrso{|u}vw~   (812 9IH UVZYWX ]:"6&()KJLMPQNORCDEGF$%[^S7'#_\=;<B?@cT`>AabLMNOPQRSTUVWXYZ[{|#C Q7ksua7j!#r<W;&EUdoOK3PmKuvkky^\h]j_`ainostpwz}q~ryEEFly y     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@AB CDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHI  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJbc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFxHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJ  EFMMMJ$$JInLLnMnM[n]^LMabcdef$PnmCDoonHIJnqIMqmmKnnnnxhnm\]^_`a``QIrmhNxpqrabcdefo NOQRSTUVWYZ[]^abcdefqYZ[]^abcdefm   !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIPZ`hmnpr  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGH PZ`hmnprs  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnprs  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hnopr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hnopr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGH"PZ`#hnprNOQRSTUVWYZ[]^abcdefNOQRSTUVWYZ[]^abcdefNOQRSTUVWYZ[]^abcdefNOQRSTUVWsYZ[]^abcdefMNOQRSTUVWsYZ[]^abcdefNOQRSTUVWqYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOmQRSTUVWYZ[]^abcdefNOmQRSTUVWYZ[]^abcdefMNOmQRSTUVWXYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefNOQRSTUVWYZ[]^abcdefOQRSTUVWYZ[]^abcdefQRSTUVWYZ[]^abcdefSTUVWYZ[]^abcdefWYZ[]^abcdef88.Vr88/CRap998$x ""85G^q 2DVgx,?Qcu(Pds '6ETcr8+88Vg8sINFXIFIXI_1FI_1IMAGEBOOLEANLABELGSPECGSPECLISTANYCIRCLEELLIPSEARCRECTANGLEGRAPHOFVIEWPORTWITHINTHENIMGFUNCCSTRINGBOOLINUMBERRNUMBERITOSRTOSTRUNCFLOATSQRTASINACOSATANLOGEXPRANDOMROTSCALETRANSREFLECTPARALLELPERPENDDISTANCEMIDPOINTPT_BETWN_PTSCOLINEARINTERSECTSSEPARATESINCLUDESINCIDENTDISTLARGERDISTSMALLERQUERYSEMICOLONEQUALSCOMMAATSIGNSTARPERCENTDIVMODTILDETILDE_SLASHDOTXDOTYDOTARGDOTRADDOT1DOT2UMINUSLIDAMPERSANDHASHVERTBARNEWLINELPARENRPARENLBRACKRBRACKLCURLYRCURLYLANGLERANGLEprogram_listwithin_idwithin_clausestmt_listdeclarationtype_nameevaluationexpr_listfunc1func2func3local_identifierlocal_idgraph_spec_listgraph_spec%+eden %-eden %%donald within %s { %%eden %donald } %eden autocalc = ON; autocalc = OFF; rnumber(%lf) cstring(%s) impossible error occurs in %ssyntax errorundefined id: %sid list expectedredeclared identifier: %sundeclared identifier: %s%sstack overflow%sstack underflownot openshape or graph: %stype mismatched (context was reset)DoNaLD: %spropagate("id list and expr list unmatched%s is not declared as a functionbooleanimageitosopenshapept_betwn_ptsrealreflecttruncwithin/donald.edenmtttv}ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt5P@((H$\~ h;^u ,hb8`iH$3BQscheck.cillegal use of `~'D D`ddctEEaxxdnxxxxxxx` 1ESalSasami: %sOut:%s Input string too long!sasami_bgcolour_r=%d; sasami_bgcolour_g=%d; sasami_bgcolour_b=%d; sasami_viewport_xsize=%d; sasami_viewport_ysize=%d; sasami_show_axes=1; sasami_show_axes=0; %s newmtlmap_kdksillum kd %s %s %s map_kd %s newmtl %s %s_mat_%s=%d; Unable to open MTL file '%s'!mtllibusemtlvnvt %d/%d/%*d %d//%*d object_poly %s_%s %s_p_%d polygon %s_p_%d vertex %s_vt_%d %s (1-%s) %s vertex %s_v_%d %s %s %s %s_%s=%d; Unable to open obj file '%s'!_sasami_vertex_%d_x is %s; _sasami_vertex_%d_y is %s; _sasami_vertex_%d_z=0; Syntax : material load_objload_full_objpolygon_sasami_poly_%d_colour_a=1; objectlightdump_verticesdump_polysdump_objectsdump_materialsdump_lightsopen_displayclose_displayUnknown commandsasami_viewport_xsize is %s; sasami_viewport_ysize is %s; sasami_bgcolour_r is %s; sasami_bgcolour_g is %s; sasami_bgcolour_b is %s; Syntax : light Syntax : polygon %*s %s "%[^"]%*s %s %s_sasami_vertex_%d_z is %s; -------------------- Sasami closing down! -------------------- -------------------- Sasami initialising! -------------------- proc _sasami_bgcolour_mon : sasami_bgcolour_r,sasami_bgcolour_g,sasami_bgcolour_b { sasami_set_bgcolour(sasami_bgcolour_r,sasami_bgcolour_g,sasami_bgcolour_b); }; sasami_viewport_bpp is int(tcl("winfo depth .")); proc _sasami_viewport_mon : sasami_viewport_xsize,sasami_viewport_ysize { sasami_viewport(sasami_viewport_xsize,sasami_viewport_ysize); }; proc _sasami_showaxes_mon : sasami_show_axes { sasami_setshowaxes(sasami_show_axes); }; MTL file error - unknown command '%s'MTL file error - could not get diffuse colour!material_diffuse %s_mat_%s %s %s %s MTL file error - could not get texture filename!material_texture %s_mat_%s "%s" MTL file error - could not get material name!Got material name '%s', assigned id %d Obj file error - could not get MTL filename!Obj file error - could not get USEMTL material name!Obj file error - could not get object name!Obj file error - could not get vertex co-ordinates!Obj file error - could not get texture vertex co-ordinates!Obj file error - unknown command '%s'Obj file error - polygon data with no object!poly_material %s_p_%d %s_mat_%s Unable to locate texture vertex for face!poly_tex_vertex %s_p_%d %s_vt_%d Unable to locate vertex for face!poly_geom_vertex %s_p_%d %s_v_%d Obj file error - could not get polygon data!Found material name '%s', retrieved id %d Could not find declaration of material!proc _sasami_vertex_mon_%d : _sasami_vertex_%d_x,_sasami_vertex_%d_y,_sasami_vertex_%d_z { sasami_vertex(%d,_sasami_vertex_%d_x,_sasami_vertex_%d_y,_sasami_vertex_%d_z); }; _sasami_material_%d_ambient_r is %s; _sasami_material_%d_ambient_g is %s; _sasami_material_%d_ambient_b is %s; _sasami_material_%d_ambient_a=1; proc _sasami_material_%d_ambient_mon : _sasami_material_%d_ambient_r,_sasami_material_%d_ambient_g,_sasami_material_%d_ambient_b,_sasami_material_%d_ambient_a { sasami_material_ambient(%s,_sasami_material_%d_ambient_r,_sasami_material_%d_ambient_g,_sasami_material_%d_ambient_b,_sasami_material_%d_ambient_a); }; _sasami_material_%d_diffuse_r is %s; _sasami_material_%d_diffuse_g is %s; _sasami_material_%d_diffuse_b is %s; _sasami_material_%d_diffuse_a=1; proc _sasami_material_%d_diffuse_mon : _sasami_material_%d_diffuse_r,_sasami_material_%d_diffuse_g,_sasami_material_%d_diffuse_b,_sasami_material_%d_diffuse_a { sasami_material_diffuse(%s,_sasami_material_%d_diffuse_r,_sasami_material_%d_diffuse_g,_sasami_material_%d_diffuse_b,_sasami_material_%d_diffuse_a); }; _sasami_material_%d_specular_r is %s; _sasami_material_%d_specular_g is %s; _sasami_material_%d_specular_b is %s; _sasami_material_%d_specular_a=1; proc _sasami_material_%d_specular_mon : _sasami_material_%d_specular_r,_sasami_material_%d_specular_g,_sasami_material_%d_specular_b,_sasami_material_%d_specular_a { sasami_material_specular(%s,_sasami_material_%d_specular_r,_sasami_material_%d_specular_g,_sasami_material_%d_specular_b,_sasami_material_%d_specular_a); }; _sasami_poly_geom_vertex_%d is %s; proc _sasami_poly_geom_vertex_%d_mon : _sasami_poly_geom_vertex_%d { sasami_poly_geom_vertex(%s,%d,_sasami_poly_geom_vertex_%d); }; _sasami_poly_tex_vertex_%d is %s; proc _sasami_poly_tex_vertex_%d_mon : _sasami_poly_tex_vertex_%d { sasami_poly_tex_vertex(%s,%d,_sasami_poly_tex_vertex_%d); }; _sasami_poly_%d_colour_r is %s; _sasami_poly_%d_colour_g is %s; _sasami_poly_%d_colour_b is %s; proc _sasami_poly_%d_colour_mon : _sasami_poly_%d_colour_r,_sasami_poly_%d_colour_g,_sasami_poly_%d_colour_b,_sasami_poly_%d_colour_a { sasami_poly_colour(%s,_sasami_poly_%d_colour_r,_sasami_poly_%d_colour_g,_sasami_poly_%d_colour_b,_sasami_poly_%d_colour_a); }; Syntax : poly_material _sasami_object_poly_%d is %s; proc _sasami_object_poly_%d_mon : _sasami_object_poly_%d { sasami_object_poly(%s,%d,_sasami_object_poly_%d); }; Syntax : object_pos Syntax : object_rot Syntax : object_scale Syntax : object_visible (e=0 to make invisible, 1 to make visible) Syntax : light_pos _sasami_light_%d_ambient_r is %s; _sasami_light_%d_ambient_g is %s; _sasami_light_%d_ambient_b is %s; _sasami_light_%d_ambient_a=1; proc _sasami_light_%d_ambient_mon : _sasami_light_%d_ambient_r,_sasami_light_%d_ambient_g,_sasami_light_%d_ambient_b,_sasami_light_%d_ambient_a { sasami_light_ambient(%s,_sasami_light_%d_ambient_r,_sasami_light_%d_ambient_g,_sasami_light_%d_ambient_b,_sasami_light_%d_ambient_a); }; _sasami_light_%d_diffuse_r is %s; _sasami_light_%d_diffuse_g is %s; _sasami_light_%d_diffuse_b is %s; _sasami_light_%d_diffuse_a=1; proc _sasami_light_%d_diffuse_mon : _sasami_light_%d_diffuse_r,_sasami_light_%d_diffuse_g,_sasami_light_%d_diffuse_b,_sasami_light_%d_diffuse_a { sasami_light_diffuse(%s,_sasami_light_%d_diffuse_r,_sasami_light_%d_diffuse_g,_sasami_light_%d_diffuse_b,_sasami_light_%d_diffuse_a); }; _sasami_light_%d_specular_r is %s; _sasami_light_%d_specular_g is %s; _sasami_light_%d_specular_b is %s; _sasami_light_%d_specular_a=1; proc _sasami_light_%d_specular_mon : _sasami_light_%d_specular_r,_sasami_light_%d_specular_g,_sasami_light_%d_specular_b,_sasami_light_%d_specular_a { sasami_light_specular(%s,_sasami_light_%d_specular_r,_sasami_light_%d_specular_g,_sasami_light_%d_specular_b,_sasami_light_%d_specular_a); }; Syntax : light_enabled (e=0 to disable, 1 to enable) Syntax : light_directional (d=0 for positional, 1 for directional) Syntax : light_attenuation Syntax : set_bgcolour Syntax : viewport _sasami_light_%d_attenuation is %s; proc _sasami_light_%d_attenuation_mon : _sasami_light_%d_attenuation { sasami_light_attenuation(%s,_sasami_light_%d_attenuation); }; _sasami_light_%d_directional is %s; proc _sasami_light_%d_directional_mon : _sasami_light_%d_directional { sasami_light_directional(%s,_sasami_light_%d_directional); }; _sasami_light_%d_enabled is %s; proc _sasami_light_%d_enabled_mon : _sasami_light_%d_enabled { sasami_light_enabled(%s,_sasami_light_%d_enabled); }; _sasami_light_%d_specular_a is %s; Syntax : light_specular [a]_sasami_light_%d_diffuse_a is %s; Syntax : light_diffuse [a]_sasami_light_%d_ambient_a is %s; Syntax : light_ambient [a]_sasami_light_%d_pos_x is %s; _sasami_light_%d_pos_y is %s; _sasami_light_%d_pos_z is %s; proc _sasami_light_%d_pos_mon : _sasami_light_%d_pos_x,_sasami_light_%d_pos_y,_sasami_light_%d_pos_z { sasami_light_pos(%s,_sasami_light_%d_pos_x,_sasami_light_%d_pos_y,_sasami_light_%d_pos_z); }; _sasami_object_%d_visible is %s; proc _sasami_object_%d_visible_mon : _sasami_object_%d_visible { sasami_object_visible(%s,_sasami_object_%d_visible); }; _sasami_object_%d_scale_x is %s; _sasami_object_%d_scale_y is %s; _sasami_object_%d_scale_z is %s; proc _sasami_object_%d_scale_mon : _sasami_object_%d_scale_x,_sasami_object_%d_scale_y,_sasami_object_%d_scale_z { sasami_object_scale(%s,_sasami_object_%d_scale_x,_sasami_object_%d_scale_y,_sasami_object_%d_scale_z); }; _sasami_object_%d_rot_x is %s; _sasami_object_%d_rot_y is %s; _sasami_object_%d_rot_z is %s; proc _sasami_object_%d_rot_mon : _sasami_object_%d_rot_x,_sasami_object_%d_rot_y,_sasami_object_%d_rot_z { sasami_object_rot(%s,_sasami_object_%d_rot_x,_sasami_object_%d_rot_y,_sasami_object_%d_rot_z); }; _sasami_object_%d_pos_x is %s; _sasami_object_%d_pos_y is %s; _sasami_object_%d_pos_z is %s; proc _sasami_object_%d_pos_mon : _sasami_object_%d_pos_x,_sasami_object_%d_pos_y,_sasami_object_%d_pos_z { sasami_object_pos(%s,_sasami_object_%d_pos_x,_sasami_object_%d_pos_y,_sasami_object_%d_pos_z); }; Syntax : object_poly Syntax : object _sasami_poly_%d_material is %s; proc _sasami_poly_%d_material_mon : _sasami_poly_%d_material { sasami_poly_material(%s,_sasami_poly_%d_material); }; _sasami_poly_%d_colour_a is %s; Syntax : poly_colour [a]Syntax : poly_tex_vertex Syntax : poly_geom_vertex Syntax : load_full_obj ""Syntax : load_obj ""Syntax : material_texture ("" or )_sasami_material_%d_texture is %s; proc _sasami_material_%d_texture_mon : _sasami_material_%d_texture { sasami_material_texture(%s,_sasami_material_%d_texture); }; _sasami_material_%d_texture is "%s"; _sasami_material_%d_specular_a is %s; Syntax : material_specular [a]_sasami_material_%d_diffuse_a is %s; Syntax : material_diffuse [a]_sasami_material_%d_ambient_a is %s; Syntax : material_ambient [a]Syntax : vertex ڳ$?徱Իڰdz屹ٰܳٳܰ. <= (1900000000-1)vUID >= 1400000000sa_findvertexfoundvuid == vuid--- Vertex list ---Vertex %d : (%g,%g,%g) sa_index_from_pUIDpUID >= 1900000000sa_findpolyfoundpuid == puid--- Poly list ---Poly %d : Geometry : Vertex %d (link UID %d) Texture co-ordinates :--- Object list ---Object %d : Polys : Poly %d (link UID %d) No objects to list.--- Material list ---Material %d : Ambient : %g,%g,%g Diffuse : %g,%g,%g Specular : %g,%g,%g No texture---------------------Texture file : "%s" No materials to list.--- light list ---light %d : DisabledPositionalPosition : %g,%g,%g Attenuation : %g DirectionalEnabledNo lights to list.sa_getUID: exceeded limit for number of identifiers for Sasami general data, presently %d -- please ask for GENUIDEND to be increasedsa_getvertexUID: exceeded limit for number of identifiers for Sasami vertex data, presently %d -- please ask for VERTEXINFOUIDSTART to be modifiedsa_getpolyUID: exceeded limit for number of identifiers for Sasami polygon data, presently %d -- please ask for POLYINFOUIDSTART to be modifiedResizing vertexinfostore from %d items to %d items Resizing polyinfostore from %d items to %d items wrong # args: should be "pathName setXrot pos"wrong # args: should be "pathName setYrot pos"wrong # args: should be "pathName setZrot pos"wrong # args: should be "pathName setXpos pos"wrong # args: should be "pathName setYpos pos"wrong # args: should be "pathName setZpos pos"wrong # args: should be "pathName setXscale pos"wrong # args: should be "pathName setYscale pos"wrong # args: should be "pathName setZscale pos"wrong # args: should be "pathName setRotThenTrans pos"wrong # args: should be "pathName setFrustumLeft pos"wrong # args: should be "pathName setFrustumRight pos"wrong # args: should be "pathName setFrustumTop pos"wrong # args: should be "pathName setFrustumBottom pos"wrong # args: should be "pathName setFrustumNear pos"wrong # args: should be "pathName setFrustumFar pos"%d usec since last render (= effectively %Lf fps) first render -- no timings available Sasami: Unable to generate texture binding! Sasami: unable to load texture file `%s`Successfully loaded %s: size=%i,%i depth=%i alpha=%i setXrotsetYrotsetZrotsasami_getXrotsasami_getYrotsasami_getZrotsetXpossetYpossetZpossasami_getXpossasami_getYpossasami_getZpossetXscalesetYscalesetZscalesasami_getXscalesasami_getYscalesasami_getZscalesetRotThenTranssasami_getRotThenTranssetFrustumLeftsetFrustumRightsetFrustumTopsetFrustumBottomsetFrustumNearsetFrustumFarsasami_getFrustumLeftsasami_getFrustumRightsasami_getFrustumTopsasami_getFrustumBottomsasami_getFrustumNearsasami_getFrustumFar/sasami.edenTogl_Init error %d sasamiWindow %d %dMax lights : %d Extensions : %s Renderer : %s Version : %s Vendor : %s OpenGL driver : sasamiWindowClosesa_r_render: Loading texture file '%s' $@-heightHeight400-widthWidth-setgridsetGridSetGrid-rgbaRgba-redsize-greensize-bluesize-doubleDouble-depthDepth-depthsizeDepthSize-accumAccum-accumredsizeAccumRedSize-accumgreensizeAccumGreenSize-accumbluesizeAccumBlueSize-accumalphasizeAccumAlphaSize-alphaAlpha-alphasize-stencilStencil-stencilsizeStencilSize-auxbuffersAuxBuffers-privatecmapprivateCmapPrivateCmap-overlayOverlay-stereoStereo-cursorCursor-timeTime-sharelistShareList-sharecontextShareContext-identIdent-indirectIndirect-pixelformatpixelFormatPixelFormatMesa_HP_RGB_SMOOTH_MAP_LIST1.7TogltoglSorry, overlay was disabledconfigure-extensionsrenderswapbuffersmakecurrentwrong # argsCould not allocate fontunloadbitmapfontTry: configure or render Togl: Unknown option: ?options?"Togl: couldn't get visualTogl_CreateWindowtogl.cshareWith != ((void *)0)8x139x15fixedTogl_LoadBitmapFont%%!PS-Adobe-2.0 EPSF-1.2 %%%%BoundingBox: 0 0 %d %d %%%%EndComments %02x %%%%EndPreview gsave /bwproc { rgbproc 5 -1 roll { { 2 1 roll } ifelse } forall pop pop pop /colorimage { pop /rgbproc exch def { bwproc } image } def } if /picstr %d string def %d %d scale %d %d %d [%d 0 0 %d 0 0] false %d colorimage grestore %02hx %%Sorry, this instance of Togl was not compiled to work with Tcl/Tk 8.4a2 or higher.or one of the user-defined commands: Couldn't configure togl widget wrong # args: should be "pathName read filename"could not create rendering contextTogl: couldn't choose pixel formatshareWith->GlCtx != ((void *)0)Togl: X server has no OpenGL GLX extensionError: Togl_FreeColor illegal with private colormap Error: Togl_AllocColor illegal in RGBA mode. Error: Togl_SetColor requires a private colormap -adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1-adobe-helvetica-medium-r-normal--10-100-75-75-p-57-iso8859-1-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1%%%%Creator: OpenGL pixmap render output %%%%BeginPreview: %d %d %d %d %% dup length 3 idiv string 0 3 0 add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } systemdict /colorimage known not { {currentfile picstr readhexstring pop} vvvvvwvvvvw@333333?zG?)\(?_@VIEWING_GAMMArb1.2.2@ՖՖXȘ Q``Tcl: eden: wrong # of arguments - expecting 1, got %dTcl: evaluate: wrong # of arguments - expecting 1, got %dTcl: refresh: wrong # of arguments - expecting 1, got %d%s: Tcl error whilst evaluating %s Tcl errorInfo (from EXinit): %s Tcl error (Tcl_GlobalEvalEC): %suserinterfaceinputstopping old EDEN process... starting new EDEN process... can't execcan't forkquitrefreshgotodumpedendumpscoutdumpdonaldsetupViewOptionsinterruptrestartdumpLSDgetOldNotationgetCurrentNotationtcl_interactiveTcl_AppInit failed: %s DISPLAY/edenio.tclsvcPorteshostoldNotationoldAgentTypeoldAgentName_dtkeden_isServer_tkeden_version_eden_svnversion_tkeden_variant_tkeden_web_site_tkeden_sasamiAvail0.0_tkeden_win32_version_tkeden_appleesportcurrentNotationdtkedenloginnameTcl error (Tcl_EvalEC): %sTcl_EvalEC("%s") Tcl_GlobalEvalEC("%s") .prompt config -text {set notation {Enter LSD description:Enter SCOUT statements:):Enter Sasami statements:Enter statements:Enter Enter EDEN statements:$$>>$><$>>%scout %sasami %lsd Enter LSD description for AGENT %s: Enter DoNaLD statements (in context ]]J]can't redeclare %s %s to %s %%scout %s %s; %%edenI_%s is pt_add(pt_subtract(dotint() / \\%.1frowcolumnI_%sformbox(textbox([%d, , "%s"_change %s_change(); }; proc %s_setText { auto currText; currText = $1; ; proc %s_getText { return %s_TEXT_1; ; proc %s_change {}_click; proc %s_mouseButtonPress : %s_mouse_1, %s_mouseClick { if (%s_mouseClick) { %s(); }%s_mouse, %s_mouseClick { ; proc %s {}click_DFreliefDFfontDFbdcolorDFsensitiveDFalignDFborderDFfgcolorDFbgcolorDFymaxDFxmaxDFyminDFxmin"pict1"[0,0,100,100]""[[0,0,100,100]]substr(strcat((()#)91611121714dotnedotnwdotsedotswdotndotedotsdotwboxshift(boxop(, BOXINTERSECT), BOXCENTRE), BOXENCLOSING), BOXREDUCE)app(del(I_%s_temp%d(int(unknown operatorcleanup scout.scout.t.text see insertproc P_%s : I_%s, %s { ShowImage(&I_%s, &%s); } ; proc %s_textCHANGE : %s_TEXT_1 { tcl("$%s_boxName delete 1.0 end"); if ($1!=@) { tcl("$%s_boxName insert end \""//$1//"\""); %s_TEXT_1 = currText; } } %s_mouseClick = FALSE; .scout.t.text mark set insert 1.09r;{ͺY̻ l 6U V%k=U'm$4GZy#x;V,*Ln,Oxx, O E,xxxxxxxxxxxxxOxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_______x_,kxx"Mxxxxxx,,,,,,,,error !!!boxframewindowNOADJLEFTRIGHTEXPAND %% & %g.r{ type: TEXT alignment: %s sensitive: ON relief: %s: pictDONALDARCATEXTBOXUNKNOWNstrlen(.%salignmentcentre(enclose(reduce(append(delete(%s( endifUnknown operator!%s %s; -6=DKRY`g- Nf~+C - ?Znz!:Sl4Mf.=L:Up`IXgv\"%s\"scoutDefn%%scout %s %s = %%scout %s %s; %%eden Lc~  (yM`-BWl&>Vn.F^#;R  (C^yff &@Zw%BJRZkptuigrhojzq^sxyvw  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_`abcdeflmn  $(,05;@FKQV\aglrw} "&*.26:>BFJNRVZ^bfjmqvz} !%-/37?ADHLPTX\`dhlptx||{|q}~q q q qqqqqq#^q ^q"^q ^q$^q ^q%^q^q&^q^q'^q^q(^q(p^(q^q*^q^qr"#$%&'()*s!qsq"#$%&'()*"32tru1trru5tu7:@ABD?WXYZ mn#ghijkabcdefabcdefabcdef_`htu4tuo;<=>WXYZ$vrwghGHIJKLMNWXYZ%xryxrryo8OtrruPtruQtruRtruStruWXYZr&tu6TtrruUtrupWXYZ'vwoWXYZrzz zzzzzzzzzzzz zzzj(ceTtrruUtrupWXYZ*[tru\trru #%./89BCLMVW`aoxy !#$%),-023456789:;<=>?@BEGJLMOQSWY\=` I     # AJ(  I^   6 U^ h ?        " ( 3 G P = = A H O U \ e l sp t {  kp         ʭ ӭ ڭ          % 0 : D M Z ` f l r w |       gJuJ   bJ î ͮ خ JYJo JL RJ0 Jk JJJKK% ޮ   4K^KJJVKZKfKjKJKNKbKnK  I >     " * 3 = E T ^ g s {{|||||}}}}}}}}~~~~~~~~~~~~~~~~~#$%&'()*+!!!!!!!!./0123456 78EFIly,-"=>C?@ABcGHpqrstuvw}ghij 9dUVWXYZabOPQRSTJKLMN[\]^_`nof|<emz:Dkx{;~#$F{|}~g /@Qaw| ) ))!&; Hps?@AB'E(H,I,=COPXY[^efoprwxyz@1Ppsl        g{N)Am Wcc111FFFFFF: )::::::*fyM) )x  #: )$Jf4m[\Yhfi&(*,.02Zjklm[\3tu\45]^n_nco[\6dopqrstu7v`a8ffccw9`aHIx yfz:c;f9:;<=Jdffffff>@LYqmN[\]^_`abZP[\eRfGr]^T_DEtVvfXfKIxfffffyMI`abcqdre%')+-/1OIfQI  SIUIWI7f?Af 6NOPQRSTUVWXYZ 5 !c8"kzdu#$HIJKLM%&'()* +,u-|}~./01 luuuusw{Gklm[\opqrstucyzYhiZjklm[\]^n_ !" opqrstuv clm[\w<=>?@ABCDExyzopqrstucdz23BfCghijpF356783X336&'(33Z3753Jq 3N3P6R8T36P8p NRc"#$%&'(^TU(W^*^12Y45rYzcZuuxrr'(6uq^YqtzvqYOPQRSTU^WTU^WIp[\YcopYchY^Z32TUeWqrtjvxppqpc^opp^vYabcdef^oprgh^GHIJKLMN"Ygh^'(Z^oprr129^5rghugh^ !"#^%qqr"*+,-gh^1V#qrTUqWabcdefghBtDcLqoBpDrghijkBmnBqpvrGpbr3 fghiqrtfgovwxytJfghfprtqr6qrqrt3ttijkmnqropYoptabcdefghYpqotabcdefttpqtpqmnghtq(qttqzqq7z:q?@ABDzz7zz:zz?@ABYDzz zzBz&'()zzzz.30"#$%&'(r*rrrrrpYBYuZFGfghijuuuZ!uu%*+,-1$%&'(nqrBabcdefghqsoyOPQRSTUWoc`abcdefghijkmntvx  "#$%&'(GHIJKLMN1245"#$%&'()* OPQRSTUW"#$%&'(*c%&'(h!"#$%&'()*tv x OPQRSTUW_`abcdfghickmnqstvx678:;<=>?@ABD_`abcdefghijkmnYryw_`abcdefghijkmnXw_`abcdefghijkXmn_`abcdefghijkmn_`abcdefghijkmnXu_`abcdefghijkXmn_`abcdefghijkXmn_`abcdefghijkXmn_`abcdefghijkXmn_`abcdefghijkmn_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmn u Y_`abcdefghijkZmn_`abcdefghijkmn_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnq_`abcdefghijkmnq_`abcdefghijkmn678:;<=>?@ABDabcdefghijkmncdefghijkmn\sG\q2Jbz(@WpW (Au3GTa  n}  + ? I V e r             + 8 E R         1 J ] p         ( Q ` s      * I g     =[z"5DWdROWCOLUMNCONTENTJUSTINTEGERHONESTWINDOWALLSTRVARINTVARPTVARBOXVARFRAMEVARWINVARDISPVARIMGVARFORMPTFORMBOXFORMFRAMEFORMWINFORMDISPSUBSTRSTRCATCONCATSTRLENTOSTRINGDOTFRAMEDOTSTRDOTBOXDOTTYPEDOTPICTDOTXMINDOTYMINDOTXMAXDOTYMAXDOTFONTDOTBGDOTFGDOTBDCOLORDOTBORDERDOTBDTYPEDOTALIGNDOTSENSITIVEDOTNEDOTNWDOTSEDOTSWDOTNDOTEDOTSDOTWBOXSHIFTBOXINTERSECTBOXCENTREBOXENCLOSINGBOXREDUCEENDIFImageFileImageScaleERRORDOTRDOTC'.'statementvar_listenquiryvar_namestr_exppoint_expbox_expbox_listframe_expwin_expwin_field_listwin_fieldwin_listdisplay_expimage_expSCOUT: %syyerror: %s allbdcolourbordercolorbordercolourcentreenclosefgcolourreducestrlen/scout.edenptQ w      !~$F_~I>!m~x!u~A{~!~~h~*~'~)~,~>~AB~c~d~d~d~dE(EFlH#L+M30P;XQD(XM^XC_LDfL.pLCvS ~L`4pؖxD̒ 0ldde^ d'j5x?PcDĞRf~tXЀ|D.ئA@Y$qHȁ,݁!:G  $Id: screen.q.c,v 1.6 2001/07/27 17:54:03 cssbz Exp $$Id: code.c,v 1.24 2002/03/01 23:45:10 cssbz Exp $ L @7T$(/ 9 =$ A E,JK4LOTdYck<u$L֨@ ծ p-hId$!ţ#Σ$֣(&ߣ''(0)8+ +@- (.)/-0L162,4=5D`7JQdW]fk{< $Id: eval.c,v 1.12 2002/02/18 19:27:11 cssbz Exp $    $Id: heap.c,v 1.10 2001/07/27 17:32:20 cssbz Exp $$Id: lex.c,v 1.30 2002/02/18 19:28:14 cssbz Exp $ LL$èp KAKKL̨ѨL 6!"=# ٨ި&K,L*$6f:J.Q/,?r}w}}W}}}}}}p}}5~;~B~I~Q~ gY~>~_~>m~?p ??h?t?u~{~~~~~~~~~~~~~#+3;DMX_fpvS ~? e^ ' 5I?G R\&>۴)3<DLU`js~y héȩͩҩשܩO O  %0;}}} ~~'~:G+=(++7-=)--8//4==0!=1~>'>=2<=3&&-||+bf n r t $Id: lib.c,v 1.7 2002/02/18 19:29:51 cssbz Exp $$Id: machine.c,v 1.22 2002/07/10 19:24:49 cssbz Exp $  $Id: refer.c,v 1.8 2001/07/27 17:52:39 cssbz Exp $T T T $Id: type.c,v 1.19 2001/12/06 22:50:22 cssbz Exp $Y~gM /L٨ި   R DJPV\bhntzظ  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~>~~x$Id: custom.c,v 1.8 2001/07/27 16:44:15 cssbz Exp $vH~?$hx WxX8Hȴ(y xص$Id: symbol.c,v 1.14 2001/08/02 16:26:11 cssbz Exp $< SetGraph("%s","%s"); %s_viewport = "%s"; A%s = NullStr; proc P%s:%s, A%s, %s { %s(%s, &%s, &A%s); } A%s = @; forget("A%s"); forget("P%s"); dd_delete(&%s,&%s,&A%s); %s = @; forget("%s"); forget("P%s"); $Id: tree.c,v 1.12 2001/08/02 16:26:11 cssbz Exp $zJv oa   !!+4<AF)IR\hs}234#d  &pc !'*-036UVWXYZ9DMJv QWG $]`c[ fk WQ!!+4<Ao )pR\hs}234~J!UV`b WXYZ9D, )$Id: utility.c,v 1.8 2001/07/27 16:34:39 cssbz Exp $$Id: parser.y,v 1.16 2001/12/06 22:27:37 cssbz Exp $3 4 n  ;      # 4 F a  $Id: lex.c,v 1.21 2002/03/01 23:37:56 cssbz Exp $1KM02   \L@.==sE~F,[hK!y 4%Y~+bp   DjCMg ):UA (GR3>7\$N LL3;<<< ?5    9O 6é)O 7`Bu-,/K  8% *G $Id: check.c,v 1.11 2002/07/10 19:20:26 cssbz Exp $NrS?q??$@@333?333??333333L?L?L??fff?fff?fff??333?333?333??Q Q Q Q  Q Q Q Q Q Q Q _ $Q Q Q 0R R sR d4 R R R d8R R R d<"R #R *R @1R 2R 8R D>R ?R IR dHSR TR ZR L`R aR nR dP{R |R R dTR R R dXR R R d\R R R `R R R ddR R R hR S  S dlS S $S _ |/S >Ba $Id: script.c,v 1.15 2002/03/01 23:39:40 cssbz Exp $$Id: symbol.c,v 1.14 2001/08/02 16:26:11 cssbz Exp $$Id: tree.c,v 1.8 2001/07/27 17:03:59 cssbz Exp $$Id: print.c,v 1.8 2001/07/27 16:58:33 cssbz Exp $$Id: store.c,v 1.11 2001/07/27 17:00:29 cssbz Exp $$Id: parser.y,v 1.16 2001/08/02 16:26:11 cssbz Exp $@m n $Id: lex.c,v 1.17 2002/02/27 16:55:56 cssbz Exp $fp  _p o h o o ?p o p kp î Yͮ Zp  6Rb   c ] c   o  ( O=S KW/ Pp Xc 7 T o  p U  )N 3Zp <    @ Qb b LMB~0M G 2;~/KV o 1c ?c *c 8c p Cb @ @ c >]> c A @ @o 6fV] Jc ?7 ?T =o 4 I-Ec FZp 8p eb BoKΨGb DM5c H 7c L1c ;?c 9*c <8c :$Id: agentList.c,v 1.7 2001/07/27 16:36:46 cssbz Exp $  $Id: parser.y,v 1.6 2001/07/27 16:41:17 cssbz Exp $  $Id: lex.c,v 1.7 2001/10/15 16:10:29 cssbz Exp $ Ì x O u     (;H`Љ $  HX(0ooo γ޳.>N^n~δ޴.>N^n~ε޵.>N^n~ζ޶.>N^n~η޷.>N^n~θ޸.>N^n~ι޹.>N^n~κ޺.>N^n~λ޻.>N^n~μ޼.>N^n~ν޽.>N^n~ξ޾.>N^n~ο޿.>N^n~.>N^n~.>N^n~.>N^n~.>N$ GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)IPZ -< 4Pt$ =9o$BdJF8e*<l6Lx9EsN4PRL*`(m.j} ?S"`a<)l ["H) ,tL0e$=(D (JkP] id"u,+T 7 wouldBlockT notationTypeToString} topEntryStack pushEntryStack popEntryStack clearEntryStack pushMasterStack popMasterStack clearMasterStack/ topMasterStack errorComplete errorContentf% appendHist] noticef warningf warning*errorfyyerroreden_interrupt_handler`Control_CcheckRunSetqueueeden_initQterminateyrun_initrunuser_tracesetLibLocationAprintUsageTprintVersionhsetHostName|init_edenmainemalloc_perealloc_plibLocationprognamestartstartValid(gargv:gargcLautocalcdeden_error_index_rangeveden_notice_undef_referenceeden_backticks_dependency_hackinterruptedstartupargcstartupargvstartupcwdsocketPorthostNamehostNamePtr(everyone:synchronizeLEveryOneAllowed^higherPriorityppropagateTypeisServerloginnameloginnamePtrInput_DevicesInp_DevInp_Dev_SaveNTopEntryStack)initRunSetSclearRunSetwgetActionrmActionaddAction,printRunSetemalloc_perealloc_p#SEARCH_symptr>DELETE_symptr_ATOMlMOVE_symptr_QSEARCH_agent-DELETE_agent_ATOM[MOVE_agent_Qhashindexlookupinstall installGlobalUndef5 add_agent_Q search_agent_Q delete_agent_Q SEARCH_entry DELETE_entry_ATOM7 MOVE_entry_Qi search_local add_local_variable insert_level_marker% init_LocalVarList9 delete_local_levelv printlocal local_declare lookup_local dispatchP patch emalloc_perealloc_pqhashtablebreak_qcont_q-QrmarkGarbageunmarkGarbageincGarbageLeveldecGarbageLevelclearGarbage4defnonlysetyyparseinityyparse emalloc_p erealloc_p yychar yylval yynerrsyydebug<M5 usageY debug inpdevlineno inpdevname _eden_internal_dirname _eden_internal_basenameV _eden_internal_cwd _eden_internal_cd gettimefinttimefinetimef_eof<get_char}fget_charfile_statfget_stringfget_string'unget_charXscan_ffscan_fsscan_ftsubstr sublistprintprintstdoutwritelnb_write+nameofzscatlcatGb_exitqexec_stringexec_filerapply<symboldetailsymboltextsymbolssymtbl2listprinthashtkdefineDatumtkdefinetkdefine1isUserDefined(isNotYetDefinedAdumpeden;viewOptions!forgetf"pack"array"user_error"touch5#get_environg#put_environ#error_no#backgnd^$pipe_process$ipopen &ipclosea&fdready'rawread(rawwriteg(rawserialopen(rawserialclose(rawserialreadM)usbhidopen)usbhidread*usbhidclose*regmatch-,newStringBufx,reallocStringBuf,freeStringBuf,replaceRefs-regreplace.todo /get_msgq4/send_messageH/receive_message\/remove_msgqp/realrand/E_Disp2PS/E_StringRemain/E_tcl2init_ScoutScreenList2search_ScoutScreenQ'3add_ScoutScreen3DisplayScreen8PlotShapef;sendServerz;SendServer;sendClient<SendClient<SendOtherClients =renewObs=queryObs>propagate>propagate_agency8?propagateAgency*@propagateAgency1@addAgencyBremoveAgency:CcheckAgencyJDed_sasami_vertexDed_sasami_set_bgcolourDed_sasami_poly_geom_vertexIEed_sasami_poly_tex_vertexEed_sasami_object_polyEed_sasami_poly_colourNFed_sasami_poly_materialFed_sasami_object_posFed_sasami_object_rot/Ged_sasami_object_scaleGed_sasami_viewportGed_sasami_setshowaxesGed_sasami_material_ambientYHed_sasami_material_diffuseHed_sasami_material_specularIed_sasami_material_texturezIed_sasami_light_posIed_sasami_light_ambient4Jed_sasami_light_diffuseJed_sasami_light_specularJed_sasami_light_enabled#Ked_sasami_light_directionalLKed_sasami_light_attenuationKed_sasami_object_visibleKDebugLemalloc_p Lerealloc_p[LblibtblLInput_DevicesXMWidgetMap&kreset_compiler_statusinitcodestack_overflow_errstack_underflow_errdisAssFexecuteret_callcall evalB change_targets change_sources related_by_code[ related_by_code_runtimelhs code codeswitchk addentry saveprog push_text3 savetextj code_definition$code_definition_runtimelhscode_evalcode_related_bycode_related_by_runtimelhs;handle_checkhandle_check1oracle_check8oracle_check1yevalDatumpushpop{emalloc_perealloc_pUndefDatumprogpprogcompiler_flagentry_ptrentry_tbl=stackOstackpapcframefptriggeredActioninsttbltextcodetextptr schedule_parents_ofresetLockeval_formula_queueminvoke_action_queueXeagerchangemark_changedformula_listaction_listreset_evalw emalloc_p erealloc_p formula_queue action_queueVgetheapfreeheap.emalloc_p@erealloc_p|hptrheapPZI changeNotationn makedatum init_lex builtin_ft_check scoutScreenInitOpen%notationGetnotationSwitch|notationPushPopyylexappend_linebuf8keyinsflushRestOfLinepeekemalloc_perealloc_pcurrentNotationInput_Devices3nextcVyytexthyylenginEVALagentNameagentTypeappAgentNameappend_agentNameappend_NoAgentNameinPrefixG4call_lib7call_floatemalloc_perealloc_pVVfreedatumnewdatumnewhdatout_of_range_errorWmustintmustcharmuststrmustlistmustaddrLaddress_errorrget2numaddsub mulD dividey mod negate lazy_not not* concat concatopt@ jmpe jpt jpf jpnt jpnf- andb or bitand bitor ddup& popdN pushUNDEFb pushint constpush datacmpcnv_2_bool"gtcltgele&eqZneswitchcodedefinitioncdefinition_runtimelhsassign inc_asgnMdec_asgnpre_incpost_incpre_decUpost_decnoupdateresetupdateupdateaddr3lookup_addresslocaladdr+indexcalcmakelistmakearrgetvaluesellistsizeshift6appendinsertdelete`query#emalloc_p5erealloc_p BprintlistpaddIDclear_IDlistsave_IDlist*refer_torefer_by1checkok1{checkok2checkok readyemalloc_perealloc_pIDlistlastNullInIDlistautocalc ctostypeno1typenameet_typet_intSt_floatt_chart_str6t_str1t_super~ emalloc_p erealloc_p|dpcre_versionpcre_info@pcre_fullinfopcre_compile9pcre_execypcre_mallocpcre_free`install_custom_variablespemalloc_perealloc_pilibtblrlibtbljchange_promptchange_context*resume_contextOreset_contextwbackup_contextrestore_contextchange_scope resume_scope symbol_searchYcontext_searchnew_symbolfree_symbollook_up^look_up_treelook_prev0declare_openshapedeclare_actioneden_delete. eden_declare Declare DeclareGraph0 Delete print_symbol_table print_all_symbols donald_full_names eden_full_name expr_to_donald_name expr_to_eden_namedumpdonaldemalloc_perealloc_pKdd_scriptt_changed viewport_nameisGraph'* )initbufNextendbufsis_shapeis_openshapeis_graphdtree4qdtree3dtree2dtree1Rdtree0naryfreeTreecopyTreeJdumpdtreeprint_tree DefineDefineFunc checkDonaldExprOracle emalloc_p erealloc_p dumpbuf6l6Jgetmememalloc_p7erealloc_p9 dd_parsedd_error~don_err propagateDonaldDefemalloc_perealloc_p+withinHandleC dd_charU dd_lvalg dd_nerrsy dd_debugE|dd_restartmap_name_to_token.map_token_to_namedd_lexinit_donaldemalloc_perealloc_pdd_promptdd_appAgentNametranslation*sNcount_idecount_exprPR sa_error3sa_exit_trapFsa_outputisa_init_sasamisa_inputsa_eden_initZsa_load_mtlstrtodouble@ sa_load_obj sa_addescapes sa_parsestringV sa_scriptn sa_inputstring sa_skipline sa_eden_initialised objmateriallistd` sasami_vertexLsasami_set_bgcoloursasami_poly_geom_vertexsasami_poly_tex_vertexBsasami_poly_coloursasami_poly_materialsasami_object_poly9sasami_object_possasami_object_rotsasami_object_scale5 sasami_object_visibleu sasami_viewport sasami_setshowaxes sasami_material_ambient: sasami_material_diffuse sasami_material_specular sasami_material_textureH sasami_light_pos sasami_light_ambient sasami_light_diffusev sasami_light_specular sasami_light_enabled sasami_light_attenuation] sasami_light_directionalwmQWsa_structures_initjsa_getUIDsa_getvertexUIDsa_getpolyUIDsa_index_from_vUIDsa_clear_vertexinfostore sa_addvertex|sa_findvertexsa_getvertexsa_dumpverticessa_adduidlistqsa_finduidlistsa_getuidlistsa_index_from_pUID$ sa_clear_polyinfostoreZ sa_addpoly sa_findpoly sa_getpoly) sa_dumppolys^ sa_addobject sa_findobject sa_getobject sa_dumpobjectsJ sa_getfirstobjectb sa_addmaterial sa_findmaterial sa_getmaterial sa_dumpmaterials@ sa_getfirstmaterialX sa_addlight sa_findlight sa_getlight sa_dumplights6 sa_getfirstlightN sa_addlist sa_findlist sa_getlistiemalloc_p{erealloc_pfirstpolyfirstobjectfirstmaterialfirstlightvertexinfostorevertexinfostoresizepolyinfostore polyinfostoresize}AsetXrotgetXrotcsetYrotgetYrot3 setZrot getZrot setXpos getXpos setYposP getYpos setZpos getZposs setXscale getXscaleC setYscale getYscalesetZscalegetZscalesetRotThenTransgetRotThenTrans)setGlFrustum<setFrustumLeftgetFrustumLeftsetFrustumRightgetFrustumRightsetFrustumToprgetFrustumTopsetFrustumBottomLgetFrustumBottomsetFrustumNear&getFrustumNear~setFrustumFargetFrustumFarXsa_r_initsa_togl_destroyfunc%sa_togl_createfuncLsa_r_opendisplaysa_r_closedisplaysa_r_resizeviewportsa_r_setupcamera3sa_r_setuplightingsa_r_render_axessa_get_face_normalsa_get_face_normal_from_uid_listrsa_r_render_object_polysLsa_r_render_objectsysa_r_rendersa_r_updatesa_r_setshowaxessa_getandbindnewtexture/sa_loadtextureemalloc_perealloc_psa_r_xsizesa_r_ysizesa_r_bgcoloursa_r_showaxessa_camera_pos$sa_camera_rot6sa_camera_scaleHsa_camera_rotthentransZsa_camera_frustum_leftlsa_camera_frustum_right~sa_camera_frustum_bottomsa_camera_frustum_topsa_camera_frustum_nearsa_camera_frustum_farsa_def_light_pos1sa_def_light_pos2sa_def_light_ambientsa_def_light_specularsa_def_light_diffuse globTogl2sa_r_initialisedQsa_r_maxlightsclastRenderTimeulastRenderTimeValidD1/Togl_Init/Togl_CreateFunc/Togl_DisplayFunc/Togl_ReshapeFunc 0Togl_DestroyFunc40Togl_TimerFunc[0Togl_ResetDefaultCallbackso0Togl_SetCreateFunc0Togl_SetDisplayFunc0Togl_SetReshapeFunc1Togl_SetDestroyFuncu1Togl_SetTimerFunc1Togl_CreateCommand2Togl_MakeCurrent2Togl_ConfigureI9Togl_PostRedisplayp9Togl_SwapBuffers9Togl_Ident9Togl_Width9Togl_Height:Togl_InterpC:Togl_TkWinM;Togl_AllocColor;Togl_FreeColor<Togl_SetColor~<Togl_LoadBitmapFontN=Togl_UnloadBitmapFont=Togl_UseLayer=Togl_ShowOverlay=Togl_HideOverlay>Togl_PostOverlayRedisplay:>Togl_OverlayDisplayFunca>Togl_ExistsOverlay>Togl_GetOverlayTransparentValue>Togl_IsMappedOverlay>Togl_AllocColorOverlayS?Togl_FreeColorOverlay?Togl_ClientData?Togl_GetClientData?Togl_SetClientData@Togl_Display;@Togl_Screenf@Togl_ScreenNumber@Togl_Colormap`BTogl_DumpToEpsFileCTogl_StereoFrustuml># pngLoadRaw`pngLoadRawF{pngLoadpngLoadF pngBind!pngBindF!pngSetStencil!pngSetAlphaCallback<"pngSetViewingGammac"pngSetStandardOrientation Tcl_AppInit&EXinitTcl\EXinit~Tcl_EvalECTcl_GlobalEvalECI emalloc_p[ erealloc_pm interp mainWindow sptr[", .getNotationsetpromptFevaluateC emalloc_pU erealloc_pg linenoy prompt_on currentAgentName currentAgentType currentAgentNamePtr currentAgentTypePtr current_Notation otherNotation curScripty,unewScript resetScript0deleteScriptUappendEdenappendnEden emalloc_p)erealloc_p0 Ehashnew_symlookUp"installIntVarcdeclare_image_actiondeclareappendTreeList$clearTreeList8translatedefinelistsymdumpscout propagateScoutScrD emalloc_pc erealloc_pu st_script scoutErrorStr=int_treeinthonest_treestr_treewin_treeQsym_treedef_treetree2tree3]freetreeemalloc_perealloc_pDDscoutTypejust_nameprintdef4printsym?(JLstoreDefnstoreSympropagateScoutDefP initDefaultWindowist_parseQscout_errst_erroremalloc_p erealloc_p@ useOldTreej defaultWindow st_char st_lval st_nerrs st_debugp] st_restartst_lex init_scout emalloc_p erealloc_p0 st_scriptH st_prompti declare_LSDagentadd_ObsQUEUEadd_Obs_Q remove_ObsQUEUE remove_Obs_Q declare_ObsQUEUE init_LSDagentList dumpLSDb emalloc_pt erealloc_p LSDagentName current_LSDagentuO Olsd_parseLSD_errlsd_erroremalloc_perealloc_pLSDErrorStrlsd_charlsd_lvallsd_nerrs lsd_debugGflsd_restartFlsd_lexemalloc_perealloc_pMU0  intzaPzz'0.T,.F Z#E#( ## ##-### G#$#(^#,R#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>_#T?_#XPAZ#\C#`Z7 gU+w   # # ;Z#  }  3RL # E lSKF ! G# %H#7zuN Ku# S N^& Z % *# M +Z# 1,#-  \nl3Int Z +18 CIK,l  nf ##  $S#  %#  &0# (1 '#d 5V# 2 6#  6#,  7 #8 9#< :#< ;#< , =#@ ? @~#D  @~#P d @~#\ E8#hV V}V   )S#u 4}# r +i ,Zs -a .sym /8v 32 l- # #obj 8#[ q 68f  nf #8f xe l- x# x#obj 6#A f A 3x 1Z#y 2Z#K 6 ]8 V0# W0# X0# Y0# Z0# [0# \0#W Ts ]all ^Z|t adp b#ip c# sp 8#  #  # # , # |W nf# CU+#= s # , # =# - I Z# [ =# 0 =#- N nf# CU#Z  nf # CU #)L H_K  b c# eW # mZ#W K  p ] Z & EY F# HZ# JZ# L # & Ou  m ?LLSD5   nf# S#ptr#  #  # d Z# hZ# # Z# Z#$ Z#( z #,  #0T ZU ~!fdZS *~" ZQ g ZW} 6U#n6 R$<OZU% VU#mU S&.iMU& uPU%  iU#mR&YlU&`U$rU'l U#tl ( NU#tl R% xU  X %% xU#fmt)I aS  ~%] HU*  ~% HU#fmt)I  } % w&XU#fmt& ' })I)%*:XpU#s9#t9 %@pU#fmt@W+qA+B+C+hD+E,{FZ) GZ!iGZS)H)H IS)IK%U#s`$Z2U* * i  *TZ*'%4U#sigZ%( U* !a Ch+ "-DZ%\e[U#cmdd*,d %Q34p\;U+zr!isZS!st8R%ya<JU*>Z%LmU#pcP.runZpU*SF#ptr_V*nf/G V @ ZS,{Z+0L H1tzZZ2Z00 Z ZS3!pS!nZV  %d |U!pe S%An|U*^ mV oS!cwdpS4U&NaU&ndU%$?U BV)nf k} y  5!Z@MU*TZS*'W!op!P ##ZV %Z^,),G+Z+D .+5. !/W nf0V!s18P+;0?Z+@+~ @6tL O!^7B2/8E9R/8e8q8}:) ^%)^%3)Y^T)^Z:) q%)q%3)YqT)qZ3  sV sS!inpsP sQ!csR 25c;R~Z>>?_| > Z?*._ > > _6>q d 5W@> d* MK@>' B>  r@>z gAfp  @>S @>4 @>v > Qi ?`t ?>d` ?$f ?gZx ?&i@ ?SjZl ?k^p ?<l^\ ?Jp^d ?kt^t ?,yZ| ? {Z ?| ?}h ?fZ   ?? ` ?n ?S ?a ^D ?Q ^x ?^ ?d^ ?H Z ?  ?#    ?;! ?\  ? BRS1X BRS2d BRS6p  IZ C;JZ  Ko t  Z  "Z  x    Z  q tP int  ,]' s# ,# #  -  I 3# [ # 0#-,. F 3# E# ( # # # # -# # # G#$ #( ^#, R#0 #4 3#8 #3#< %k#@ )A#D 5 *O#F +#G / #H 8v#L >#T ?#X PA3#\ C#`   # # ;3#   " 33M PUrsMSw UrsMSx &{Urs%MWptr'Sa(X 6|Urs5MVptr7S, CMUrsBMSsB ,BPhl SPUrsRMPptrTSnU3V x 3[h  3| *. N?   int o V'(, .F O#E #( # #  # #- # # # G #$ #(^ #,R h#0 n#4 O#8 #O#< %d#@ )3#D5 *A#F +t#G /#H 8v#L >(#T ?(#XP AO#\ C#`  h h#  n# ; O#1  *  3 IntO ,l nf## $H# %M# &%# (1'#d5# 26# 6#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )H#u4#Gr+@i,Os-a.Gsym/v3~2  l- ~#  ~#obj #G[Gq 8f nf #8f e  l- # #obj# fvf@3x1O#y2O#3]8V%# W%#X%# Y%#Z%#[%# \%#Ts]Sall^O> UQSobjVnOQPPlj EUQPAS (HqU 'Q 'Sm ?LLSD5- tUQWobj nOVPS[  UUQPAS *XU )Q )S, +OUs*Ri,OQR7Us6Vsp9S HUsBstBOPtBOiBOP IZ*JOPspKS<LOrMbN O 7 PO! QO ROQ T SU    5 k Unf  UAQVnf AASS H =UAQVnfWQS# H @UAQSnf  VQPspPSˆZ  nfֈ# VH#numH# #    l- # #obj Z #e W e       UQ WobjZ hnOVP S7  UQ PA Si  (U ' Q ' S *  .UnfVA S }  0Unf"E S"F V#% W 5U$VO"EZ S%0"A! R&5)8[U#v ~ 1\U$V0OV'E2 "Q3 S#  ;U"E< S( EO bU$nfDS"EF P(  POdU$nfOV"EQ S#P 6 `%U)p_MP)Q_S*%"AaR# 9 f(U$ eMW)peMp)QeV"AgP"iphMS 4[   n n n O+ (| +* .( _ ? 5 /`  ` 5% P + 3   5  :  ," [( ,c \4 MW int   , ]'Int3   ,l nf## $V# %G# &%# (1'# d5# 26# 6#, 7#8 9#< :#< ;#< ,=#@ ? @#D @#P d@#\ E#hV V  )V# u4#Dr+:i,3s-a.Asym/v3 ,.F 3#E#( ## ##-### G#$#(^#,R #0&#43#8#3#<%k#@)A#D5 *O#F+,#G/<#H8v#L>#T?#XPA3#\CB#`    # &# ;3#D<R3 2  l- #  # obj #R[Rq  8f nf #8f  e  l- # # obj# f:3 x13# y23#3] 8V%# W%# X%#  Y%# Z%# [%# \%#Ts]Mall^3ta dpbA# ipcG#7; ^ 9G# dp:A# ;g@ $>G# end?G#R @B SU^ QGRdpRAR gvU$eGRendfGR xxU+~U4< xUi3Wj3Rn'3VX xUsdpAsymG{funsw FX 0 U! 3P"6 zW3U!V3#lex $ y,$;R $)$ I$3 $ P$F $v 9$!L$$ %[3p&P% 6 l'` < %#D 5 *L#F +)#G /9#H 8#L >#T ?#X PAZ#\ C?#` 7  "   # ## ;Z#49"O"3tnR L| |#Elet w ! x# z y#K F ! G# % H#7 N K #N!X% &o# '># )# -# .# /z# #0# 1o# 2>#( 4#, 8#0 a;#4 F#8 7G#@ H#H xUE#P VE#TIntZ7=D OUW,l nf## $S# %# &0# (1'#d5b# 26 # 6 #, 7#89"#<:"#< ;"#< ,=#@ ? @#D @#P d@#\ ED#hVbV  )S#u4#r+i,Zs-a.sym/Dv32  l- #  #obj D#[q ! B8f nf #8f 'e  l- # #objB#M fMvf3x1Z#y2Z#3W,,spD# # # # ,#` nf# CU7#m ?LLSD5`70)0B <  # S!# "# ## c$# %B # &#4 '#8R )LH  b c# e # mZ#  p^ & Z &E YF# HZ# JZ# L # ) "&O Y "V.UsU~ t0U Z&  Z % *~ # M +Z# 1,#-    nf# S#ptr#  #  "# d Z# hZ# # Z# Z#$ Z#( z #,  #0, ^U dWh 3U dWh tS0  9  :Z#  ;Z#! tm,  Z# W Z# * Z#  Z#  Z#  Z#  Z#  Z#  Z# X #$  #( 4U"V"[S dWX#V kU$V$[S%dWX# w$l=U%cwd%V%d&WX$['S&U7@U#`FU%secGWh%minGWX$-GWH$GW%monGW$GW$GW$.H`S$IZ'TZ0 #BZU$[Wh$\Zd#dLU$eWh$geWX$fH$jg P'lZ#6`qLU%drWh$:Ss6P)#oU%dWh(o)*Z#_U%dWh$:S6P#:`U$S%buf&*retZ%dW+:,M-YP.|'Z/ffZ0d0Je #U%dWX$S%tS%sV$ZQ#'U%dWX%nZV$:S6S$P%tS%sT#X3U%cZS1:S6#G4mU%dWh%arg%iZV$[S#FpU%dWX%arg%iZV$:S6W$[S#t7-U%d8WX%arg9%i:ZV%str;W$[<S# MU0^U%dVWX$WZS%toWZW%lenWZT%iWZP%sXD%tXP%strXP2mYWW#s`U%atW%iuZS$4uZT$uZP%touZL3'Z#X!U4dW4f6V5ZS%iZW#X!v!U4dW&!x!!U#+ !!U%i ZV#zv!"U%dWX$5 WH%sS$nfV#6)"#U%d*WX%i+ZV%len,ZT%s-W2m.WW#G@#h$U%iAZp%jAZS$KAZl$4AZP%aBW'LZ#qQh$$U6aRZ#T[$%U$\ZS%d]Wh%n^V7run_ZS'qkZ#rw%&U$!x6V$nfyS%dzWX${ZT7Wrun|ZS%i}ZP%n}ZL&&"'U8F$''U4Q!W$PZV%dWX%AS'Z8<-''U4QW$PZV%dWX%AS'Z#(')U9 :{, Z;<%spDS%dWh$nfV%iZP;Z.|((1 %1%D<#S)*U9 :D, Z;X<%spDS%dWh$nfV%iZP.@*N*1 .%1.%D<#+E*,U9 F;YGZ%spHDS%dIWX%pJT$PK!V%iL!P%anyM!$rM!L$M!H=+-+1 R%1R%.+-+$YRR$RZP.8+P+1 S%1S%D<#v=t,K.U9 uv:<vZ%spwDS%dxWX%pyT$Pz!V%i{!P3'ZD<#L..U9 %spDS%iZVD<#N.0U4dW4sS%iZp%tQ#A*064U4sp)D$+) ~$+) |.1T2%PG!S%QG!V%sH|#t846U4spsD>uZ.4 5%P!S%Q!V%sp?( Z617U4spDR?R?Z47u7U4spDR8^x7%9U$S%sP@ 1 %1%38$YP1Z3P'ZAAZ(99U5nfV%s1S%sP.h9u91 %1%?Z9<U5R 5   5TZ5' S9$p9 %spDS%pl$(h$P!d%i!V$ "W$N"c$ \;GLZ+{*:;:,B*:;:,,",.+;:D:,B;:D:,,",..&;=;1 N%1N%D<D/~Z0E}/;<0E:0: 0;Z? aZ<[>U5`R 5 `  5T`Z5'` 9b$cp9 d %speDS%pfl$(gW$Ph!h%ii!d$jV=6 =#=1 u%1u%=\ x==1 %1%.==1 %1% D<A!Z\>>U4s1P4s2P*mZ= q>>1 %1%.>>1 %1%#">@U9 ":Q!, Z9T 9] >! D!%dWX$ZV%sV%spDS$DW%iZT%Q!R.T?b?1 %1%"D<8f"v @AU4d W5 .MAA%n$!W%i$!V#"2V5AAU%mem6S%d7Wh#"@ABU%nA!S%dBWh'TZ&YBJCU#5#gLCCU>#hDCOi%ijZV#g#vCLDU%dwWh%sxP##mLDDU%dWh%sS##E%EU%dWh#^$(EFU%pidZP%dWX%pT$TZP%iZS$' L=C$EF%f6S.iFF'Z#$FkHU%pidZV%dWX%pL$TZH%iZS$' D$P.G H'Z# & lHLU%pid ZS%d WX%p $T Z%i ZS$' $1$P$,ZV$ZS$*s*t;% FZ;%LZ;&Z.IK'iZ#a&bLMU*rfdZ%wfdZS%efdZV#'M/PU%fdZ|%secZ|$gZ|$#Z|%retZP$"|$~$B}$7|%tv|%tvp'P%dW|=]'NN$Z|$g ZW='NN$ Z|$g  ZW.NN$ ZQ$g  ZW#(o% 0PXQU%s& W%t& S%fd' ZV$' ZS$( OV%d) WX#g(}G XQRU*fdH Z%sI R$J %P%nJ %W#(8a RiSU1b %fdc ZS%dd Wh%newe %rf ZP#(y lSSU*fd Z#M)J SUU%s W%t S%fd ZV$ ZS$ OV%d WX#) UUU1 %fd ZS%d Wh)( \)# *># >+># ",0# #*4 UWU%fd ZS$ ~%tv ~*tvp '$x %P%ev )~%d W~=v* VV$ ZQ$g  ZW@*h' Z3' Z#* W&XU*fd ZP*D#+J (XZU%re +~$1 ~$ Z~$% +~%rc Z~%i Z~$" S$) ~$ W$ ZV*s %t S%d W~@+'i Z.xZ}Z'I Z*+Z!,s Est #Elu Z#v +?r,x r,Z[U54x ZW%resy r,V%lz ZS!,#, [t\U4sb r,W54 ZV%l ZS$I ZR#, t\]U4sb r,S?-j r,]^U5V S5)  5" 5% 4rc Z%n Zp%i ZQ%rp S$ r,W$3 Zl$$ h$ Zd3'A Z#.S ^McU%re +~$1 ~$ Z~$% +~%rc ZV*i Z$" ~$) ~$V ~$ Z~$P Z~1 1 Z*s %t V%d W~%si Z~$ r,~$ r,S# / PccU6\ & ccU& ddU& d dU& ddU#/ dldU%d Wh&p lddU&" ddU#0* deU>/+ %d, Wh.@ele19 80R!F edgU4vE S5nfE  4boxE $?G WX$QG WH%sH W%spI DV%aJ W;0Z Z.g@g'P Z81e dghU4vd 5nfd  4boxd %df WX%ig ZW%jg ZW%sph DT=b1gg1 n %1n %.gg1 o %1o %1  l-1#  1#obj Z#1 11refZ# zZ#1P2 nf# W# P2# ;Z# @V2#1112i$ l-2# 2#obj\2#g2ig2!22F} hhUG'3b2hiUHnfV A2S.hhI %I%G32ijUHnfS E\2HJF2Kw3 Z3 A)2R#37? jăU$|A WX$ Z|$ Z|$k Z|$q ZS%k Z|%l ZW%r Z|$ Z|$ Z|$ V2|$ V2|%new V2Q$ 1H%ref V2V%r2 V2R$nf |$ ZQ%s 37}%t W$ P2{$ W}$ P2{$; Z{$@ V2{$  2{%ssq 2}=\5+n;T$U) ~.'\Z&csU#<^mtU5l55l >X<n$o) ~%spS.'Z# =U555V><$) ~.ď'Z#=˒U99=9b=:d=RD:}=TZD%spDV$nfp%sS%tV$ZV="<="#>̒ז99>9=:6>R:>%$Դ%p%%1l$>"<&0ؖqU#-?*CtݗU4spBDS9D9D-?*sE.1 I%1I%8?"<#$@SCU4spRD4sRS9bT=9SU:?H V%AQWp%AXS9dY$@$Zl=@Ԙ1 h%1h%.1 h%1h%!#@vDU5nfuP4suS9bw=:@RxD9Q y$@9dz$@%sp{DP#BuU%dWX%spDT$nfP$S$ L$ZH>:AZ9H Z=nAo|1 %1%=A1 %1%=A1 %1%=A' Z=A5' Z.8Q' Z#:CkxBU%dWX%spDT$nfP$S$ L$ZH>BZ>BH 9H Z=B>K1 %1%=CS`1 %1%.hu1 %1%#JD|DU%dWX%spDT$nfP$S1 %AQP%AP:CH 9H Z=D1 %1%='Dly1 %1%.1 %1%#DĞU*iZ%x]%y\%z['#Z#D'U*i(Z%r)]%g)\%b)[' FZ#IEJU*iKZ*rL*gL*bL' WZ#E [U*i\Z*r]*g]*b]'hZ#ElsU*imZ*rn*gn*bn'yZ#NF,}tWU*i~Z%r^%g]%b\%a['/Z#FXU*iZ'"Z#FU*iZ%x]%y\%z['Z#/G{U*iZ%x]%y\%z['!Z#G |CU*i Z%x ]%y \%z [',Z#G0DئU*x1Z*y1Z'<Z#G@ئ@U*nAZ'IZ#YHM@#U*iNZ%rO^%gO]%bO\%aO['xZ#H8|$U*i}Z%r~^%g~]%b~\%a~[';Z#IU*iZ%r^%g]%b\%a['Z#zIU*iZ*r*g*b*a'Z#IGU*iZ%x]%y\%z['Z#4JH+U*iZ%r^%g]%b\%a['=Z#JA,U*iBZ%rC^%gC]%bC\%aC['lZ#JipU*iqZ%rr^%gr]%br\%ar['lZ##KU'Z#LKU'Z#KU*iZ%a['Z#K:4U'=ZK"5"[K  # # #L mZ L| L*. )QWMfp [L7oLSMKL   5 =0=Z+ nZoZpZL L;!L \#L M"N$;L $c $ 2 GM"5"\7M Oh7 {M"O$ckM 9H ?Z"a#4:  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  3 IntO ,l nf## $H# %<# &%# (1'#d5# 26# 6#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )H#u4#Gr+/i,Os-a.6sym/v3~2  l- ~#  ~#obj #G[Gq 8f nf #8f e  l- # #obj# f/3x1O#y2O#3]8V%# W%#X%# Y%#Z%#[%# \%#Ts]Ball^Otadpb6#ipc<#Zsp# <# 6# # ,#Y4U]ZD fѰUAp԰Uv%Uk nf# CU#63(vUdRiOP5 6  F xUp<V<S,OqtUiOVYOj utUspW L2 ,S!]"!|"iOVdX=0O#S  O$#p<O%O&j 'x H$#<'O%(O& ( ~&j `'x ~& j ?'x &5 j й'x &P j 'x ) <O* R +d,O- pop.d,O/B oNTU0L2Oh0&PX& /m( &+ pu( H1%<eO/ mTɾU2splS3lV4  n""5AoS/ +}̾U2sp|S3|V4  ~""6=0O7*"/[ U8? #O""5spS0V/ XU8 #O""5spS0V05 h# TO9 A( H: ><XU2fV0<S/k ~U2tbleS5ip<R0f<V5teW/ U2dp6R2ip<Q: <<U3<S3-<V0R":8TOU2spP6b6S%H O:ytOU3nf >R"/S+U2d5s25iOV  O?j ,U'x )l@ ?& U( h)P@  6 2[& nnn OA(| A*.( A)T A <`  BA A#< Aq*e   A)   =BA', A6< Cpc!<C  Z cAz%r < Cfp& ZˈAOOd   =A  DE%< E&p  W'u  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  3 IntO ,l nf## $H# %<# &%# (1'#d5# 26# 6#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )H#u4#Gr+/i,Os-a.6sym/v3~2  l- ~#  ~#obj #G[Gq 8f nf #8f e  l- # #obj# f/3x1O#y2O#3?Usp>SP@QQAVa C<WO A{RUvPSQV UmOcU0< HOQVspSOVdU!u"O#QV#spS#dh8$O%4 b c# e@# mO#&@4' pF(P+ U)F,OS$6O(C U*spBS+=BOV,D)E<S(|jU*spiS#PkS#QkV(zfU)P{OV#P|S#Q}W-oO. @#dX(:hU#PS#QW)POV-O.#dX(" jU#PR#QS 2 2/["  nnn O0(| 0*.( 1pc<0T 0]  /O , 'R,)rint7=D OUW,lnf#*#$#%1#&# (1'*# d5b#26y# 6y#,7#8 90#< :0#< ;0#<,=*#@? @#D@#Pd@#\ ED#hVbV )# u4#  r+$ i,% s-* a.+ sym/D v3          0 ',.F %#E*#( *#*# *#*#-*#*#*# G*#$*#(^*#,R #0#4%#8#%#<% #@)#D5 *#F+#G/&#H8#L>7#T?7#XPA%#\C,#`    ##;%#9&0#<0#3s2  l- s#  s# obj D#<[<q y8fnf *#8f e  l- # # obj# f$3 x1%# y2%# 3W, spD#1#+#*# ,*#7$*U, .F Z#E #( # #  # #- # # # G #$ #(^ #,R #0 #4 Z#8 #Z#< %o#@ )>#D5 *L#F +#G /#H 8#L >>#T ?>#XP AZ#\ C#`F   #  # ; Z#R  K  3 # E l& Z ?% *# M +Z# 1,#-J Z IntZpv} ,l nf## $S# %# &0# (1'#d5# 26O# 6O#, 7Z#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E}#hVV  )S#u4#r+i,Zs-a.sym/}v3I2  l- I#  I#obj }#[q eO8f nf #8f ke  l- # #obj# f3x1Z#y2Z#3e]8V0# W0#X0# Y0#Z0#[0# \0#Ts] all^Ztadpb#ipc#%sp}# # # # ,# dp sym } { Zfun esw  F 0 bc#e#mZ#p1?b  8Z# (1# Z#?b um ?LLSD5<C  nf# S#ptr#  #  # d Z# hZ# # Z# Z#$ Z#( zC #,  ?#0% n tU!/uP" YU!ZP!"S#pR$ gU%cZP&ZhU'U( cZU!nfWJ  nf# BZ#)  #iZS*+ %+% ! " 7 ZhU!nfƓW  nfʓ#) ` #iZS*8G+ %+% ' ( ZhU#iZd#rh#mZW#nZ`#eZ\)ZX)[ߓW)ZV#uP, - , - - -, . ~Z/E}@.9 <z/E:@/:/;Z0 ZU1m R}1  }ZZZ1  Z1  !Z2i"ZS2sp#}S3$S*7F4 g%4g%0 qqZU5a u6c1s#6c2s#tZ#2tabu  3[u  , , 7U7U8%$uU3E}V9>: Z*)M;uZ<xU2reth:dZ:x Z:uZ:YZ;GZ<|ZU=sP2dh2retX>t99;Z:/Z:C Z:WuZ:kYZ;'Z8 qSU?Z2dh2tS:Z: Z:u Z;Y Z@ TU3 S9\ 9 AmrunZS>BZBZ9 BB8Z>s$3$%ZSCP38~2c9ZP1  c@}OU?(12iZW2nZV2sS3w}l   < ZUD0>2sS2uh9 , I\- , I\- - -, Z88U=cS| G* .> F_Ff .G ~ut   G;! F\##bof*Z G{+ZT  VHGj,E@D-G-ZX F 4G 8Z\   Gb@@T-  GA D-G=0BZ` G CZd G DZh GEZl )fYE  )\Zp 3Zh 0/Int0intBHO Z`b,l nf#5# $# %<# &# (1'5# d5m# 26# 6#, 7#8 9;#< :;#< ;;#< ,=5#@ ? @#D @#P d@#\ EO#hVmV  )# u4#  r+/ i,0 s-5 a.6 sym/O v3   ;',.F 0#E5#( 5#5# 5#5#-5#5#5# G5#$5#(^5#,R#0#40#8#0#<%#@)#D5 *#F+!#G/1#H8##L>B#T?B#XPA0#\C7#`  # # ;0#D1;.G;.3~2  l- ~#  ~# obj O#G[Gq 8f nf 5#8f e  l- # # obj# f/3 x10# y20#3b7 spO# <# 6# 5# ,5#B'])U(7i*0j*0VA+',%Ph<@00dGb70. |LUK7AQR/[iS0S<a0Otdhb/. ;.0[ B| *.B fp-U09o!U0  intza'0.>,.F Z#E#( ## ##-### G#$#(^#,R~#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>>#T?>#XPAZ#\C#` ~  ~# # ;Z#G  @  3 IntZ ,l nf## $S# %R# &0# (1'#d5# 26# 6#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )S#u4#]r+Ei,Zs-a.Lsym/v3$2  l- #  #obj #][]q 8f nf #8f e  l- # #obj# fE3x1Z#y2Z#3]8V0# W0#X0# Y0#Z0#[0# \0#Ts]Xall^ZKsp# R# L# # ,#!!G8UdFiIZV [8UdZ s\Pa]LWi^ZV wUdv szPa{Lpi|ZWW4!UiZlowZ upZ'Uda S HUda SGHUda Sg Uda SLTUda Srp 1Ua Ó!Z4JUdp1LSdp2LVaddLUd1hd2X sub=Ud1hd2XD mul#@Ud1$hd2$Xy !8Ud19hd29X modSTUd1Thd2TXrUE )lTUdmh +!Udh* notUdh !  Ud1Xd2HlenZsPiZS ZD ZW@ !  UXW H5 daLVdpLlenZsiZSQ!ZSe jmpR " UiSS jpt\$  Ui]Sd^h jpfn )UioSdph  ,UiSdh-  1UiSdhb and4Ud1hd2X orUd1hd2X !dUd1hd2X !dUd1hd2X& !aUdhN  dU h G!U ( 9Udh M #<U!!1ZU"d10"d20i2ZVr3E[#k~$ E%$E% !WUcgtk@Ud1lhd2lXdlHlt}@Ud1~hd2~Xd~HgeUd1hd2XdH&lepUd1hd2XdHZeqpUd1hd2XneeUd1hd2XB hUdhcUspSp RV$RWl(1h%L#Z&&'+&&%Usp S!T "RV$"R#W$P(1%L%#&Z&&(+'&&5 (X)Z dU*5 c*cS)!tbU*5 s(+u&&spvP w   d$Udh5 XtmpHspRM!$Udh5 XspR !Udh5 XspR!"!#Ud#h5 #Xsp%R R#$UdSh5 SXspURU: $(&Udh5 XspRy!(&'Udh5 XspR ~ ''U !'%(U<(((U"spW'&R35 (0)Usp S#()dhY!0)6+UdXspS+b+=0Z+ Z+Z ~ !W(! &#&*L*dI~  +0 R8++UdShnTS `+@-U5 bXdpbLRbHicS+<d !@--U-(.U"nVarrXdH!(./Udh5 XspS+,IZ+J%pTZ&#/&/-Zsel/0URXdatHiS #01Ud$h6_=12U5 >Xdp>LTi?W!Q2,4U5 RhdpRLVdSXaSLS c,45U5 dXdpdLWdeHpeaeLVifQposfS`A*|5^7U5 }Xdp}LVp~Ha~LiQposW `79U5 XspWPSQV'&&&Z  5.[ //// Z0 >| 0* .> /)Q/_/L1pcR1fpK/=0Zh!Z  Eh8#B9"int  ,]'Int3   ,l nf## $V# %<# &%# (1'# d5# 26# 6#, 7#8 9#< :#< ;#< ,=#@ ? @#D @#P d@#\ E#hV V  )V# u4#Dr+/i,3s-a.6sym/v3 ,.F 3#E#( ## ##-### G#$#(^#,R#0#43#8#3#<%k#@)A#D5 *O#F+!#G/1#H8v#L>#T?#XPA3#\C7#`   # # ;3#D1G3 ~2  l- ~#  ~# obj #G[Gq  8f nf #8f  e  l- # # obj# f/3 x13# y23#3p'"$9:UQ#VP&S!0:G<Uid/VPhRni3WAsQAbQ]H<<U*<=UASPWQV =j?UspQ "S1"V!WAɏRAЏR1 l?@UspպQ՚ id׺W"؏p7"ٚ!ٚS0AߏRPAR{?"3@CAUspWQVidQPS"3DAAUspWQVidQPS #!3AAU sp S Q V!$3WN>3A#BU sp=P@RQAQ^2[N " 3"""#| #*. #T #!` #p  3!9J$Bn"  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rs#0y#4O#8#O#<%d#@)3#D5 *A#F+#G/#H8v#L>(#T?(#XPAO#\C#`0 s  s# y# ;O#<  5  3 ,l nf## $H# %<# &%# (1'#d5# 26# 6#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )H#u4#Gr+/i,Os-a.6sym/v3~2  l- ~#  ~#obj #G[Gq 8f nf #8f e  l- # #obj# f/3x1O#y2O#3sp# <# 6# # ,#B H# nf#m3$BBUd2 ps5P1YDOBCU<CWiEOSe<RC>ϰ)Ch"CDhDDDD(4*<oE:*:M;OH"DsEUdhHEXEHEXEIy/Ex*6/E5*5MtE#FUdh6u"$F|FUdh{"|FIUdbufwY"V"OS"OwiOwOwd1w  !) f"\IJU"d]X"t^H"s_V"i`OS#Ga$ 9 2[)  %y%y%y% O& (| &* .( 'fp   P"  E#;5J#'$U0  intza'3,.F Z#E#( ## ##-### G#$#(^#,R#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>>#T?>#XPAZ#\C#`97 F@W c >   # # ;Z#jc3PrM(FE###K>#z)L##M#>N#(Q}(!N%T#=#U##yZ%@7O(V}A)\lcc]A#fcc^A# (_A#O#`A# G)atM(HfX&gZ#w$ht#'iZ#%jZ# lcckA#O#lA#$m##n#v(o# 9$p#$'q#((r#,"sA#0&tA#4)uA#8'vA#<"wA#@]$xZ#DZM(yX% l-# *'A#%i(N@JJU*(mZJKUn&l*R"ltQz)ltSren50;&ZKKUn&*R%S$ZVa >Qre5&ru#ZKMUQ&u%KV{'Z%Z1$cd{ptrAScZQiZWLM$ ApAL#MMNUpAQcd{R4$APN;OUpASC)tP%tP%Kcd{RminZpmaxZl#ZP%Z Zp&ZVccSdZPopZP >$PPUptrAQuPcd{R"ZVV (ZP[&_p$dU&Yl$V )Z)ZQ^'Z"Z"ZVZW#Z>&Zb&Z(Z'ZcZV>&ptrA@'AD'$H $) Z1% Z~( ZW" Z~|% Z ?SsStcW setZ#Z#tR! "ZRe iZWT)Z~lenZ~V#V 3WzW[ZP WWZP /#ZPZQbraS XXket(Q 8ZyZlen{ZR 8__sU> l .\$]dZ~ U \\ucZP\]$A V]^ (AR K^<_(l~)mZRimZQ (nAWP&ZP`` (ZRI&RdaKcU%OZV"OZ 'Ot'O Q&Pu%PK $P "PZP%QtW'Qt,cdQ{0ptrSAh>Td%USh#V`^)W\(XZXl)YZlM%YZphcZQ,(ALccU>AQ%tW)ZV(Q$& cMdU>% AS%% tV(( AQop* ZRB@%J PddU>I AS(L AQopM ZR'n ZdeU>m AS%m tWco ZVdq ZP(r APopt ZR}( eZqU" @% Z % K) t) 3%" ;i& Qp##? mre S ZwC( ZWc ZS% Zw' Zw{' Zw# Zw% Zw% ZW' 0w wptr Aw# LX' yH) wmin Zwmax Zw) ZS"% Zwff& A h(i %3 Zwh(ich8 ZP Xii' AH#& ZP A,kmset Zw# Zw# tRy #q Zw%r Zw#s ZW@chg ZPZ'$O \qqUM ZR0'M AVM ZSmdM 'WimsN EpP AQz#' qЋU0' A& AWa$ Zmd 'ims E" #F Z q%Sv)y8){' Ei% Xop ZPmin ZVmax Z' Zi Zc ZS% p ZV ( ZSl-AV*'A~ rVs$$V$~ KuuZQ  wwppIA~ .-xxpp)A~ KyHzppA~ hzl{ppA~ :}xppvA~ 2J)YA~lppA~lenZ JZ~Z~6pp@ASDrc~~n'tVi')j$ZS (%ZR +Љl-AV*'AS ^ ZR  AS 4 AQ4Ћ# ZD' ZQ' Z~9ZO#)ZЋ5Un&*5' )@PZ&Z%ZQ#t 2&Z$-)Z+&ZWz)Z#Z&ZimsE 'z=#A' AS)!A("A~re#5($v#%~T$&C%' Ս'(ktR"ltP8rcZQ'(tP"tRpARώݎppZPscZQ!!"y> %#]%t i#^#Qx F$&TF$s'UJS$3n*@ $)@ KG $(\6;qq&Z$$`a7%?$)  +%H8)*  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  33 nf# CU# O  nf # CU # z'8U 8 3[( nnn(| *.(   4   v  &]I;? +U0  intza'3,.F Z#E#( ## ##-### G#$#(^#,Rs#0y#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>3#T?3#XPAZ#\C#` s  s# y# ;Z#<  5  3  b c# e# mZ# p3Zq, Z#opZ# A<q# 8 q# mid q# ( q#,-2w t f , nf# # ,# ; #  Z# +# #,e?b  8 Z# (1 #  Z#?b .c7sym8# [9##e+ÒU,sStRiZVlenZp>,Zl*l*ĒޓUsymSO+UcntpSw6-ZUixZP,UiZS*LUiZQ -#LɘU1"S -@̘U1?S +JU Y,S/UnfRVsymTS q-`0Unf_VsymaS u,qUnfpPsymrS,U!symS"* ^.-UnfVsymS#ĚҚ$ %$% _*U1VsymS%PZW#*$ %$% 0g-ݛUnfWsymS%I+V#ƛ$ %$%,Usp&{DV$ %$%#Zg$ %$%_,~U!idSbp!vpV. <*6˞U!sym4W!vp4 s7Sid8S *^̞ U!id\S\Z !vp\V#$ %$% , UZV1SsymWdcZW0 *ۥU1Ssym Vdc ZVt S -ܥU1SsymV%I+RdcZV ,UVZW5* symViZS+اU c *اU!id%nfc  ( sStViZplenZW%*Zl s -.U!id-%nf/c  ) s0St1Vi2Zplen3ZW%*4Zl  ,XU1VS p -nU1lVeoV%PpZS%nfqV'{ K-ZUnf& $ %$%& ê$ %$%& ǪԪ$ %$%&2 ت$ %$%&X $ %$%#$ %$% D-IUVZS(Z) -LdU(Z)I,d)UVZ5* A+Zsymp*E,Z&k$ %$%&ͫ$ %$%+(Z)#ܭ$-%%\+P*,tUVZV5* symS,+-5',Z-J*&pET$ %$%#l(Z) ,Zt;U(Z)  4[ yyy.3|  Z.*.3  *"Z.,]U-e-c  * .2Z8 -5<  p s*:@ n,Mp@ Z*OZH V*PZL +R +   ?.EVT-.A+wZP -ZT +ZX -c\ p+Z` s+Zd + h   )%W-   %,    -%6+    %H*  4 (%-$  V %{* FI  x %/,!h` %R+Sc  / %, 0 %-$0 %-+Z(0 %+Z,0  (NK<.+  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  33, O# opO# A<# 8 # mid # ( #,-2> t f , nf# # ,# ; ##  O# +# #>,>V m c nO# . o#?b  8O# (1# O#?b N',K<U#T?#XPA3#\C#` h  h# n# ;3#1  *  3 Z/LU(#T?(#XPAO#\C#`0 s  s# y# ;O#<  5  3, O#opO# A<# 8 # mid # ( #3,-2(/k/ 0V0J0/00//0 / / / /0 ?b  8O# (1# O#?b ^sZi[Or\ t]F^b0WOUVOlex y<;R> I3 ^ PFv ! [Op( l`  t  P  . f t*I -x  U t  L  } t* R   t  q `  t*Z #{  , t*Z  n> `  )k0O U-)0U-)/OU-)OU- O\ $O2 yyn%O2 % &2  '2 N(O2 Z)O`   H  + 3  ;   ,+ 4 .d  /h  ;Ol b<Op  G:  KO:  s0  #.V4-1+U0  intza'0.>,.F Z#E#( ## ##-### G#$#(^#,R#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>>#T?>#XPAZ#\C#`F   # # ;Z#R  K  3, Z#opZ# A<# 8 # mid # ( #3,-2>(qsiZr!t3FD0@UI nfG# HZ#.0Z6UnfiZS$ZVendZWcmpZ %%b,8aUZQiZPn'dUcZR61VUZS!1}Z4G %%  1ZXUcZP&UcZV rx!"x!"!.!: M(!`"m(!!#EZQ#SZS"M!`"m!!$~Z%E}@$G<z%E:@%:G%;Z$mIy!%Ex@$6!%E5@%5G'c(4U&nfd'ke'}'Bf7P(>g(Eh=)runiZ*S*>*&0j 7  H+ X 1[H 0|q Z, >| ,* .>   b=0Z Z,,U-%1( )Z 1*Z _+Z 0,Z: 0-Z 1.Z ,:0/Z 00Z   >,0I 0ZJ41+int2',%#op%#A<# 8 # mid #( #93,-92  t f ,L,nf,#,#,,#; #  %#+L# L#, ?1%4EU h1.HU 1-Sid0,Vsym1W.-2,*3,,R!1f% U 1eSI3g%V)g%P`q1% KU 1RE%PL%|1%LU 1RE%PL%R%]1%U 1RE%PL%M%R%e1%6U 1RE%PL%M%R%X%1%8U 1VI1eJU1dS23[  2\(Lx/2\?b 8\#(1c#\#inti'?b %  0.u,.F \#Ec#( c#c# c#c#-c#c#c# Gc#$c#(^c#,R#0#4\#8#\#<%#@)#D5 *#F+#G/#H8#L>u#T?u#XPA\#\C#`    ##;\#~ i w i 3 " bcc#e.#m\#.c"p34 &EYFc#H\#J\#L# i &OMD8Q2x@#y@#z@#233 r@#g@#b@#a@#1 38n9\#uid>\# ?#l-@# >3A>&40{U6|\#P3}#1~#;3# .\#,'4q/2\n\#pos#rot#8#4K\#L<#P q#Tl-q#X3n\#Y3\#)u# # l-#D319LxUs8c :Gerr;~;|2KxUi_3UUsTcSt_AU4m\3r\zDUcyiR{v i I04?UoI}233\S4\2\3\ Zid=2@UnfccSod}cmdd{>3utldr3on\Si\Sid\o3r 4\S&3dow3SM0C63\ xb%8\ ui i  \ !@ 3@U"sc#ccV$@\$1\\$2\X#i\P#d\P$C3\T$3\P%x 2_U&nfc&cS&1\#od}#cmdd{#ldy$2dv$&3dt'm4\$Z2\l$i3x l$3l#n\W#i\V#id\l$3\l$3t$E4\l$=4\l$^4\l$2S$ 3\S#x@k#y@S#z@[$ 4\S#arg~ l$I2\k$1\R$1 k$3l$3l$S] #631\(, F r2\w c % 3}`U"s|cS#c~cQ#outcW#ocR) b%\c#\% 1(U&c#sd}$l2d{#ody#cmddv#i\S#n\P#id\V$ 4\S#arg~ n$>3 j$I2\j$1\R 63\ r2@\ " i   \*#h (V-p*2)I U-*2*\,V-*2+\T *3,$V- e4 c.(42  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  34mOD83Q2 x# y# z#2,3  r# g# b# a#1 4x' n(O# ),# K*,#$ +,#D }4,#d -#h 4.O#l /#p l-0#t741738 n9O# uid>O# ?# l-@# 3AN4q b5rO# poss#4t%&40{ U6|O# P3}# 1~# ;,# .O#,'4Y8/2\ nO# pos# rot# 8#4 KO#L <#P 8#T l-8#X34 nO# pos# ,# K,#< ,#\ O#| # O# # l-#I4IF(?)UnOWxhy`zSvFPN 7@))Ur6Pg6Pb6P28, L))UpKOvKOSidKOVMPP3NPBe))UpdOvdOSiddOVfPP3gP/~)F*Up}Or}Sg}pb}ha}`P"H*i*UpOmOSP3l**UoOpOSidOVobj3PP>**UoOxɬSyɬpzɬh53P!*&+UoOxSypzh53P5 (+j+UoOxSypzh53Pu =l++UoOvOS53P 0++Ux/OPy/O  =++Un<O4 J++UmIOrISgIpbIhaI`.K4 P ;e+F,UmdOrdSgdpbdhad`.f4 P H,,UmOrSgpbha`.4 PH ,,UmOtV.4 S ,6-UoOxSypzhK5 P 8--UmOrSgpbha`K5 Pv --UmOrSgpbha`K5 P l -&.Um Or Sg pb ha `K5  P &(.I.Um%Oe%OSK5' P] >L.|.Um=Oa=SK5? P V|..UmUOdUOSK5W PnnM5d ?.<72  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  34mOD83Q2 x# y# z#2,3  r# g# b# a#1 4x' n(O# ),# K*,#$ +,#D }4,#d -#h 4.O#l /#p l-0#t741738 n9O# uid>O# ?# l-@# 3AN4q b5rO# poss#4t%&40{ U6|O# P3}# 1~# ;,# .O#,'4Y8/2\ nO# pos# rot# 8#4 KO#L <#P 8#T l-8#X34 nO# pos# ,# K,#< ,#\ O#| # O# # l-#I4IF nO# Y3O# )(# F# l-F#D4../Uy7^O//UY7lO/ 0Ur2zO 0C0U5OD00U5OP 500U6ORORv6v01Ub5OWxhy`zXROS7ON7v12Ub5OVROP]5OQ5v 2T2Ub5OSvvPi7T22UROVk62-3U{?kSnOP5Q7R 5803v3U{?7kPn7OS79QB6Wx33U{?VkVnVOSrXP$ 7qO33U7pOPZ 6}3 4U6|OR~OR %5 4/5UU6OWROS7O 6 055UU6OVROPP6OQ) 7 55UU6OSp P^ 556UROW6S 4 6i7UnOP05 R7 Q> .7. l77Un-OS7/ Q v6N 77UnMOSrO PJ 4a7f8Ui3b V6cS5 h8r8U 5 t89UnOPw3 R&3 Q I7 99UnOS&3 Q g6 99UnOSr P@  69:U&3 S5" ::U E5/ :N<Un.OP70 R61 Q Z6a P<<Un`OS6b Q "7 <<UnOSr P6 75<>U6 S6 >&>U 7 (>>U{? SnOP:6 Qg5 RL  Q5 >>U{? PnOSg5 Q5/6 > ?U{? VnOSr P n n n O!(| !*.( !5 X !5 \ !5 ` !6 d !5vh !7 Ol !6# p !7$Ot 6TOx 6UO| s5VO 7g_a ?92  intoVPoo'0.I,.F O#E#( ## ##-### G#$#(^#,R#0#4O#8#O#<%d#@)3#D5 *A#F+#G/#H8v#L>I#T?I#XPAO#\C#`Q   # # ;O#]  V  3 N VC J%# ? K%# < L%# dN M%# U9 N)LHIY bc#ee#mO#eYp3kK F ! G# % H#4mOB8rD89:Q2xw#yw#zw#2O3 rw#gw#bw#aw#1 4x'n(O# )O# K*O#$ +O#D }4,#d -#h 4.O#l /#p l-0#tZ41Z738n9O#uid>O# ?7# l-@7# 3Aq4q b5rO#poss#4tH&40{ U6|O# P3}# 1~# ;O# .O#,='4|[/2\nO#pos#rot# 8#4 KO#L <#P [#T l-[#X34nO#pos# O# KO#< O#\ O#| w# O# # l-#l4lA 9  :O#  ;O#w:^O ?g?U<^T^O '^V _~SD?S?D?S?IywExK6wE5K5c]9nOh??Um m~PTnO'n9sO??U<sTsO 'sV t~S????3 :O?@U ~PTO' e<O@o@U<TO 'V ~SL@[@L@[@ ;Op@@U ~PTO' -:O@@U<TO 'V ~S@@@@ G;O@AU ~PTO'P ;OAwAU<TO 'V ~STAcATAcA :OxAAU ~PTO'ń t9OAAU<ʾTO 'ʄV ~SAAAAs :OA!BU ~PTO'ڄ <O$BBU<TO 'V ~S\BkB\BkBC 8OBBU ~PTO' 8OBCU<TO 'V ~SBBBB9OC)CU ~PTO': O,CCU< T O ' V  ~SdCsCdCsC;OCCU ~PTO'yE9"OC DU<"T"O '"V #~SyCCCC~OE}K<oE:K:;O)U<2O D+DU1 1~PT2O'2:9,DDU<EODEU<ETEO 'EV F~SDDDDe9VOE-EUU U~PTVO'V;[O0EEU<[T[O '[V \~ShExEhExE;lOEEUk k~PTlO'lr:qOE FU<qTqO 'qV r~SEFEF79O FEFU ~PTO'L9OHFFU<TO 'V ~SFFFF;OFFU ~PTO'&7OF8GU<TO 'V ~S GG GG~8O8G]GU ~PTO' :O`GGU<TO 'V ~SGGGGX:OGGU ~PTO' _:GKU!nfk}BP">"#runOHI;OP  $%8(KKU<($L$9/KLU</P:5OLPU7}&38P%GO&  $;PPU'PP%O&$<PQU(xOV(yOW <OS)18Q1RU$u=4RUUK5uS*iOW<{X   )9CUiWUf;clWVXU(ab (bb$(cb<*rdX+lew\>:XX'YU{? *iO*c\8S*vlP l q$Fm<(Y]U81FW|9 9V9W*vlS*tvlPr;H<{<{>;!8:$9]8$;_<uSjwh;x`i:yoP)<__U$:_ `U(sO,/8 ``U*a|$r<`_aU(fS*o}(}---- O. I| .* .I .3,OV-.S4-OHV-.2.OV-.3/OV-.;2hV-.<3PV-.<4V-.95OV-./<w .8?w .O;@w .8Aw .8D{ .:E{ .y;F{ .(;G{ .R8H{ .5:JV-.<NO - O~.F<PO .9V@V-.:WO D":m`aO2U 0  intza'0 .>, .F Z#E #( # #  # #- # # # G #$ #(^ #,R #0 #4 Z#8 #Z#< %o#@ )>#D5 *L#F +#G /#H 8#L >T#T ?T#XP AZ#\ C#`N 7 \ V   #  # ; Z#n g 3)LHT bc#e*#mZ#*p#EtHNAJ~`fNx30N/!=GxZ#}y#Z#h==# H#ZD?%(G@BO=RZCPD^nf_#>`#Kd#xPg# Dj# R1Do^iOT#HT#=Gz4LxQTF!=%C=Y>Z  QJ#KO#XD## key[#+Q4fJ#6=#%FZ#+PZ#?Z#DZ# ?Z#$(JZ#(Q#,M#0 Q VV+QRDJ KOR#LZ#3># DJXIDGELOELQE}REHejIfj-Dij6Pkj>ljHmj_=^(I (Z# (# b@># @># >Z(.IGCY_PA  O# 6N# $Z# ?E# hLE# ]BE#(CZ#EGZ#DbOe*  RZ#F Z#F * #< r P'O#Rx #/A#WZ# \Z#>Z#KZ#kDZ#e?~ # cHZ#$O* #(SJO#,ZE #0@!E#4M"E#8C#Z#<$?#Z#@E$Z#DM%Z#H?&z#LLr 0 DO'< { <FyB7#O8E#EQ9#K:E# @;Z#P<Z#E=Z#KE>E#A?E# A@Z#$uMAz#(ABz#,QCZ#0JD#4LE#8sDF   xZ#yZ#WZ#\Z# PZ#qB#PZ#WK l OE#red>#X>#U>#F# pad# F  Lr { <TGZ#FHE#EIZ#RJ{ # EK#/AL#EM#\N#xOZ# yOZ#$-APZ#(JPZ#,_Q0#08HR0#4wASZ#8 %NT t<fYZ#FZE#E[Z#R\{ # E]#/A^#E_#\`#xaZ# yaZ#$-AbZ#(JbZ#,_c0#0Cd0#4wAeZ#8Cf g<xkZ#FlE#EmZ#Rn{ # Eo#/Ap#Eq#\r#xsZ# ysZ#$-AtZ#(JtZ#,_u0#0Lv#4wAwZ#8FxxD|Z#F}E#E~Z#R{ # E#/A#E#\#xZ# yZ#$-AZ#(JZ#,PZ#0.Z#4wAZ#80NZ#<_0#@wCsZ#FE#EZ#R{ # E#PZ#.Z#Mg4Z#FE#EZ#R{ # E#Lx #G(Z#FE#EZ#R{ # E#xZ#yZ#WZ#\Z# PZ#$Es0Z#FE#EZ#R{ # H#xZ#yZ#WZ#\Z# PZ#$>Z#(MZ#,OTZ#FE#EZ#R{ # H#>Z#MZ#f>Z#FE#EZ#R{ # E#_Z#C`0Z#FE#EZ#R{ # ?#E#xZ#yZ#WZ# \Z#$PZ#(QZ#,>Z#FE#EZ#R{ # E#E#?yZ#FE#EZ#R{ # E#E#yKZ#NHZ#FE#EZ#R{ # E#E#QZ#_Eh Z#FE#EZ#R{ # ?#E #&M ( Z#FE#EZ#R{ # E#E#?#xZ#yZ# QZ#$Ft4$Z#FE#EZ#R{ # E#E#xZ#yZ#W Z# \ Z#$P!Z#(.@"#,Q#Z#0Q$o .'Z#F(E#E)Z#R*{ # E+#E,#x-Z#y-Z#K.71Z#F2E#E3Z#R4{ # E5#W6Z#\6Z#P7{8F:Z#F;E#E<Z#R={ # ?>#E?#x@Z#y@Z#WAZ# \AZ#$PBZ#(.@C#,.DZ#0p=EE#48IFQPIZ#FJE#EKZ#RL{ # EM#EN#XOZ#GPZSZ#FTE#EUZ#RV{ # ?W#EX#XYZ#u>Z]^ e]Z#F^E#E_Z#R`{ # Ea#bAbu#\c#_dZ#PeohZ#FiE#EjZ#Rk{ # El#JRmu#\n#Loj(|rZ#FsE#EtZ#Ru{ # @Lv#Pw#JRxu#0yu#N>zu# \{#$?|&$Z#FE#EZ#R{ # P#JRu#0u#N>u#\# O Z#FE#EZ#R{ # E#J#newZ#_Z#>2bsl S z 0Z#FE#EZ#R{ # E#Nu#[Z#)#B( Z#FE#EZ#R{ # E#CZ#2HZ#PZ#HZ#R{ #Dj#FE# 7#KD7#M7#N4 Z#FE#EZ#R{ # E#eM!O`ZF A CtBgQx/N G5GNT4@NJJy8PJh?A?ohCC=QcFM>^LDFIR&JH P(MLgpad!!z O ." HS#/IS#WS#DS#9?S#O># D!b"nfu#FE#@:"h#PO#fid# 0#'K 0# JM 0#'R 0#QG 0#KZ#nJ0# JZ#$Jh##(D."#,EA."#8Jn##DDZ#H9?Z#Lb"."Pn"t#XICu##A>m##/EHu##I R|o@ # $Z#ZfK#$<$#Z<$O}$tQ %!P&}$#H)$#,## $tQ/B$%L 89Z#I<#M>#eI?# E@#BZ#HEZ#IBH%#$LL$J'cPR{ #J#QZ#O* # RZ#E#jN#J#?## qN#$xN#(;J#,?##0L##4D #8N0#TH{ #XNE#F0#N#N## Bd#OIZ#BZ#B#!B#)B#\MZ#EZ#`QZ#1B#9B#AB#F#cP-%l !gA g0 @@ j4 mZA p0B8 r'D8'm'9:u' +9:t Q!+# E,# R{ # @## # E<# >## VCZ# ?Z# TNZ#$ MZ#( [LT#, 0?Z#0 CZ#4 XAZ#8 _CZ#< CHZ#@ GZ#D =Z#H 5DZ#L RZ#T8CZ#X_NZ#\,=Z#`VQZ#dHZ#hGZ#lIZ#p!AZ#t>Z#xU= Z#|ZH Z#LZ#gBV#nOV#QV#P#JZ#C`-#D`-#K`-#'>`-#F`-#R,#D=$#>%`-#J&Z#O'#A?(Z#P)Z#H,,#O.'#B/'#9K0'#}E1t'#Kw+!+!+'Mx2+L+Z!+Z+(  O * #6N #|A Z#R Z# $ Z#? E#hL E#]B E#G Z# (C Z#$=P L+,( *J #M !E#M "E#{O #E# @ $E#K %E#Q &E#0J 'E#6N (# E )j#$D *+K=,,ZR+C,,#iElI, -#\'C- A  MC-# "II-# AO-#,,, A - +-nP`auaUt!+R-GxaaUt!+Ql-!+Rpos!+P ".HN!+aaU!IVVt!+S"aa# %#% X.E !+abU!< !+Qt !+R /J;bcUdpy9{ !M:ZV!^J: /W!TR:#S{J<uR=ZPQ>Zpi?ZQWI@+/l/AAh#PBZ$#ZEI&/ +,%/G@1ZcdU! 0SK2ZlDK2ZpA2ZtH2Zx&/OqddU!Kp`-P&/={ddU!Kz`-P& 0NddU!K`-P&40:EddU!K`-P&[0W>dd!K-'Fd&0>-!<!+P!K`-R&0nH0eAeU!<!+P!K`-R&1=DeUeU!<!+P!K`-R&C10FXeieU!<!+P!K`-Ru1IleeU!S#<!+&1@eeU!<!+S!K`-P&1MeeU!Y?!K1R=Z| P'+&*2G$efU!<#*2R02 'g2l?t f[fU!sS#<u!+2Q\ffU!S#<!+%3IZfgU! V!<!+S!TZ!'a!FZ#-?Z#CZ#UAZ#\CZ#@HZ#GZ#=Z#2DZ#9QZ#;RZ#5CZ#\NZ#)=Z#SQZ#HZ#GZ#R=Z>ZWCZpQNZl /5[G4ZgbkU!2! 2 !T2Z!'3#<5!+6ZT 7P ,8XX#K91(4,h?h# I%#I%(4Ch^hEKVP(4ii@g'P@hUP)/5i j*B5)O5i j*b5*n5*z5+O5~Z,E}V+5<z,E:V,:,;Z A6HZdknU!!  !TZ!'-1^on#nfV#B#TR#W<!+V$DA6PBG6SU-J' ;8Fn%uU!TR#!? !sLV#<!+^J,Sdpy{ _ZEWMZRE_E Z_{= ;8`P ZS  Z_swa{ `b?L8 FL8` .7@NZW"Bq^qA!+PE,R.7 =Z Z_(7rYsGi ZS @l t'_(7t!tRnZP.&88F<+_P=Z_$PA3!+PL8Z/\8Z 8= (uuU!sL < !+S87M uvU! < !+STR #V 9JK v}vU! < !+SI9BC v`xU! V!I \'S#< !+&p9 R `xxU!< !+P&94A xxU!< *2P%9Q VxxU!< *2P%9QC ZxxU!< *2P%:? ZxxU!< *2P%C:J xxU!< *2P%n:@ #xyU!< *2PM;N yzUdpy { !ZE  !C ZV!W V'!oM P\P V'SK l Xi ZRF ZWN xa$h0dr xdg x[db x\v^ x]%;I Ez{U!<~ *2Sred~ ' !X~ '!U~ '"z{"K l hoM Z`&<G {|U!< *2R!O E &~<mI |}U!< *2S!R EPred '!X '!U '"@||"K l h%N=D '}@~U!< *2P!? VSG Z nA #S{? ZV ZRP Zp@ 'Wnf VP(7=}D}i ZP"}~io ZP&=H @~~U!< *2!@ 'Ri ZS&=TO ~~U!< !+R!D ZQ&=@ ~U!< !+S&>Q@ YU!< !+S&:>= \U!< !+S&a>gG U!K `-P%>H ZU!< *2P%>B ZU!< *2P%>FL ZU!< *2R%S?C EtU!< *2Rred ' !X '!U '"t"K l h&?L tU!< *2R!O E &?$L% U!$ P%?@, ʀU!<+ *2P&@O3 ̀݀U!<2 !+P!2 R%;@VF? { U!<> *2P%f@?OE   U!<D *2P%@AK Z U!<J *2P%@HQ -U!<P *2P A@ '0U!B Z!W 0W!\ 0V4] 'S$@ t'px? t'lJ t'hbD t'dM t'`1R t'\[ b'X`- >`- E`- I 2O ; Q!+ D'/M D@; uF DJ :#<tSX2U0  intza'0.>,.F Z#E#( ## ##-### G#$#(^#,R#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>O#T?O#XPAZ#\C#`D77 W   # # ;Z#c  \  3 N VCJ0# ?K0# <L0# dNM0# U9NY VCQ0# ?R0# <S0# dNT0# VV0# PWI# ]XI# \YgAg04mZ[n7D83   # E l h\7$_0UEV;^O=U ?<B\&&WV @gm~&&OU8 D ^ EO# .\ F# ] G# \ IO# ^ J# @[ K#msg M# _ Nq# IV P1# _ Q\#$ eX R&#( ` TZ#, X U#0 ;] V#4q_ B rZ#U8S W~ & Z  % *# M +Z# 1 ,# -  WE_zV>[7U%[XWO+WOSZaSQW [0OY3a^6S red #X #U #W RU mX R #red #X #U #lZ #[  S red #X #U #lZ #W #W y7]U red #X #U #W #HU #_ vX O7kY nf s#R #IG C#2` # U UR  [ xU Z#key s#(1 s#AS # Y kW    lT  #:W #day #- #h_ #R #\ %  S nf  #) O#Y m#Z@W #dn[ #h^ #l~R #pU #tY #x;X U#|}S #] #pX #/T #X #X #U #i^ #T s#|T #R #[ s#D] #V #\ #KX #IW  #U #(` s#a[ s#^ #sU # ` #<\ #IY #W #\ #_ s#qV s#W !#^ %+#yS )+#] *+#lX ++#+T ,+#X -+#X .+#T /+#e^ 0+#  bW 3 U 5Y W #] #%V #S # bY # R # +S [ -T ?M_  #V _#9_ _#S 7#EZ #\ #PV 7#D_ X#Z X#] 7#}Z #SY #P #F #Z #=Z w#7\ C#7V #V Z#_ Z#S Z#` Z# _ Z#W #\ #pS #R #] #] #S #^ #] C#U C#U !C#U "C#^ #C#^\ $C#/S %#6[ '#crc (#^ )#^ *#V +#U , #xU -#Y .#Y /#Y 0#Y 1#%V 2#S 3#S 4#R 5#bY 6# [ 7#W 8#jV >#\ C#T E#>Y Gm#U Im#V N#p^ O#W P#_ TZ#T V# Y W#X \C#0Z ]C#@X ^C#w[ _#^ `#U a#X e#_ i#V nC#\ om#Z r#_T s#[ u#Z v+#)Z w#Z xC#dS yC#m\ zC#\ {C#`Z |#T }#T ~#B^ #T #Y #!\ Z#T Z#W #X #W s#V s#R C#R C#;X U#P] #MS #QS C#z_ U#v_ U#] U#] U#/] s#KX #%Y 7#R^ #] Z#] C#S #Z #T #_ #J[ #^ +#X #&U #X #4Y #X 7#,[ #!Z #U C#W Y3S kqMg^ MC-^ MX MZzW ^ M[ \ 7=XMCZ] djM!C!Y ZM Y 7MT M76u]57Ured57X57 U57gRWU;`XxVYR^cZ UicZVpdZQg(]p ̋UjRpZd1pg w1pZh1pZd2pCSw2pZh2pZ sxql\syql]xrZVyrZhxxrZPyyrZWcrZRdsCQC[_Z̋FUxQVext cQS(^ZW  %%{aVZHԎUjRW \)>VdIWYZPxZpyZlcZSeZh  XԎUjRpWW\V[l)>SYZhVZddI`>S ZH`Z"UQXZWZVfpS!eR Z$U"fp #X Z $Reh%pngM\$(`$AVd$)C$YTuW$]@$WL$\P$RZT$WZX%iV$YLZ u7 C!{YjZ6U#jQ#o_jZ #VjZ#Xj$kZS%fplV !. UvZ8U"fpv#o_vZ #VvZ#Xv$2Vw$0Vw$Rxeh%pngyM\$(z`$AV{d$)|C$V|C$YT}uW$]~@$WL$\P%rwV%rhW$RZT$WZX%iV&m$[P$qZ R'ߕ(bY. &%p(CV$uW(C%q(CS%r)ZW%g)ZQ%b)ZR%a)ZR)%pal$YZ$5WS*)_Z+Z, Y0hU# TZS#VZ #SZ%id0x!!{^0hU#Q#o_Z #VZ#(# TZ#SZ#VZ %id0S!!]0U##o_Z #VZ#(# TZ#SZ#VZ %id0S-!V U"red7#X7 #U7-"a]0U#T6"P6"7777"-c"FT0{U#;`\-"Z|U#ZZP.. S97 Y97 /X97 g]:6"  Z;Z _CZ ]D  [Q WT  1?xG11a  intoV`O'3, .F O#E #( # #  # #- # # # G #$ #(^ #,R ~#0 #4 O#8 #O#< %d#@ )3#D5 *A#F +#G /#H 8v#L >3#T ?3#XP AO#\ C#`;  ~ ~#  # ; O#G  @  3`d)LH3 bc#e#mO#p3XID G:L O:} R:H e3I f3H m3L  Lu~<TGO#FH:#EIO#RJ~# EKT#/ALT#EMT#\NI#xOO# yOO#$-APO#(JPO#,_Q%#08HR%#4wASO#8%NTw<fYO#FZ:#E[O#R\~# E]T#/A^T#E_T#\`I#xaO# yaO#$-AbO#(JbO#,_c%#0Cd%#4wAeO#8Cfj<xkO#Fl:#EmO#Rn~# EoT#/ApT#EqT#\rI#xsO# ysO#$-AtO#(JtO#,_u%#0Lv#4wAwO#8Fx{D|O#F}:#E~O#R~# ET#/AT#ET#\I#xO# yO#$-AO#(JO#,PO#0.O#4wAO#80NO#<_%#@wCvO#F:#EO#R~# ET#PO#.O#Mj4O#F:#EO#R~# ET#L{#G (O#F:#EO#R~# ET#xO#yO#WO#\O# PO#$Ev 0O#F:#EO#R~# H_#xO#yO#WO#\O# PO#$>O#(MO#,O W O#F:#EO#R~# H_#>O#MO#f>  O#F:#EO#R~# ET#_O#Cc  0O#F:#EO#R~# ?T#ET#xO#yO#WO# \O#$PO#(QO#,>  O#F:#EO#R~# ET#ET#? | O#F:#EO#R~# ET#ET#yKO#NH  O#F:#EO#R~# ET#ET#QO#_E k  O#F:#EO#R~# ?T#E T#&M  ( O#F:#EO#R~# ET#ET#?T#xO#yO# QO#$Fw 4$O#F:#EO#R~# ET#ET#xO#yO#W O# \ O#$P!O#(.@"T#,Q#O#0Q$r .'O#F(:#E)O#R*~# E+T#E,T#x-O#y-O#K.71O#F2:#E3O#R4~# E5T#W6O#\6O#P7~8F:O#F;:#E<O#R=~# ?>T#E?T#x@O#y@O#WAO# \AO#$PBO#(.@CT#,.DO#0p=E:#48IFTPIO#FJ:#EKO#RL~# EMT#ENT#XOO#GPZSO#FT:#EUO#RV~# ?WT#EXT#XYO#u>Z`a e]O#F^:#E_O#R`~# EaT#bAb>#\cI#_dO#PeohO#Fi:#EjO#Rk~# ElT#JRm>#\nI#Lom(|rO#Fs:#EtO#Ru~# @LvT#PwT#JRx>#0y>#N>z># \{I#$?|)$O#F:#EO#R~# PT#JR>#0>#N>>#\I# O O#F:#EO#R~# ET#Jj#newO#_O#>5bsl    H o 0O#F:#EO#R~# ET#N>#[O#)#B+ O#F:#EO#R~# ET#CO#2HO#PO#HO#R~#D3#F:# ,#KD,#M,#N7 O#F:#EO#R~# ET#eMO`OF ACwBjQ{/N G 5G NW 4@ N J J| 8P Jk ?A?rhCC=TcFM>aLDFIR)JH P+MLjpad o OHuIm ?LLSD5Int OZOUY Y' TYOP'Y-P/[S`lO'Uk k' TkOP'k-P3`wO(_Uv v' TvOP'v-P`O`tU ' TO'- QaOtU ' TO'- O - !pidPx/aOU ' TOP'-PTRP!e`O[U˻ ' TO'-WTRV" џ#$џ###">џڟ#$џڟ###"#,#$#,###$6?#$6?###%&5%<o&E:5&:-&;O'&aO\U( 'S)\`^gU(T]O(']-P)hmU(TO('- *>* *fO*ra*n*a #*H O*# +nf*@a)*`9*l`*`,kI}+R,$S+0,X`Z ,gaZ ,`Z ,`Z ,S`Z ,``Z ,:aZ -,`OP # ?( 9  I  Y .~/ '/0YpۦU1gV1rS.`/ '/0ܦGU1V1S  0[         O2 3| 2* .3 2 D'V-2\aEV-2 QV- S( A{qHx/a  int o V'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  3 )LH( bc#e#mO# p3I?b  8O# (1# O#?b  m ?LLSD5 T ,l nf## $H# %(# &%# (1'#d5# 26w# 6w#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )H#u4#:r+i,Os-a."sym/v3q2  l- q#  q#obj #:[:q w8f nf #8f e  l- # #obj# f"3x1O#y2O#a<OH/U: : T:O'; =  c0Ubd~aeW,ghbj   b%U!str "TR#spP#s1~#s2R S#iO~a~I 5a(U!strV #sS oaW#iOoa5o$%#O F&'aZqU(sYS),YW*[V+\+\\+^,\`  4[ nnn  b  O- (| -* .( -dO8 -aO< -@a@ -` -l`! -`" -ra# -a& -a(V-a2OZ 3Z qDD}tFbaint  ,]'?b 83#(1#3#?b l,. F 3# E# ( # # # # -# # # G#$ #( ^#, R#0 #4 3#8 #3#< %k#@ )A#D 5 *O#F +#G /#H 8v#L >#T ?#X PA3#\ C#`   ##;3#s  l  3 ib&t-U'S0!bA0EU@RU9bHH]UGP$0P`UsOpOVOb_Us^p^Sn^3V  4[ |  3*. \bL@[ [b3 -b3  TE}%? cU0  int z a'3,.F Z#E#( ## ##-### G#$#(^#,Rs#0y#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>3#T?3#XPAZ#\C#` s  s# y# ;Z#<  5  3, nf# Z# def#  "#  opIZ# lQ5# rQ5#H, *D. Z# z# Y# box# lc # c!# c"# c## c$# b%#$ Pc&#( c'#, c(#0 c)#4 sb*#8 qc+Z#< bc-#@c.3tDQsKcLiMtvN"tOwP*3S({?b  8Z# (1# Z#?b )LH3 bc#e'#mZ#'p-sZ UnfrS`uZc #Uh~ZVnf~ vS"c$wUnfVhZWvSHV %%ccxUnf"Z symSb۵UnfPs}   Zܵ|UZVD ZpS$.|QUtRwc"TcU,dUt+V +ZS!w-*!s.S!arg/S"0Z"b1#b3 ~#c3 }$%R>Z&' %RZ& (  CqUtW#$ZV!topZp!iZS"bZ)Z*bbtUsP!iZV!pS+ zbZU  9 TZ '?"#p!iZS#PZV!spP!p W#( R%Z&, XcZUs1 Ps2 P- %-%.s bUtV ZW)L tZ!w*/s!argV, bZUdef Z  c%U nfSsV*$0  40[  1y1y1y2 3| 1 Z2* .3 2\) W- 0c* `[  ss2 \  O2b4  W-  0[k  \ #T/ZX #}.\ #.A \ #.Z\ #H/ Z` #.  \ #b Z\ )H\ (. c  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  3 D. O# z# Y#box# lc # c!# c"# c## c$# b%#$ Pc&#( c'#, c(#0 c)#4 sb*#8 qc+O#< bc-#@opIO#lQ#rQ#Hc.DQsKcLiMvN_tOwP3_,N nf# O#def#  _# S, pe.)(Ui(St*PcBUiAOtCPcPUsOPtQRQd^Uw]t_PcllUsymk{PkOPtmR dzlUvy{PdefyPt{R(.\Ut1P-OPtR]/.\Ut1P-OPt2PtRd UtS  1[ nnn(|  O*.( ~IoQd c  intoV'0.3,.F O#E#( ## ##-### G#$#(^#,Rs#0y#4O#8#O#<%d#@)3#D5 *A#F+#G/#H8v#L>3#T?3#XPAO#\C#` s  s# y# ;O#<  5  3, nf# O# def#  "#  opIO# lQ5# rQ5#H, *D. O# z# Y# box# lc # c!# c"# c## c$# b%#$ Pc&#( c'#, c(#0 c)#4 sb*#8 qc+O#< bc-#@c.3tDQsKcLiMtvN"tOwP*3S({&d0nU/O9dMpULdLOR.0db UtaVfpa.Swc*argdVfCd UvSfp.V v 2[f yyJld c  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rh#0n#4O#8#O#<%d#@)3#D5 *A#F+t#G/#H8v#L>(#T?(#XPAO#\C#` h  h# n# ;O#1  *  3, nf# O# def#  #  opIO# lQ*# rQ*#H, D. O# z# Y# box# lc # c!# c"# c## c$# b%#$ Pc&#( c'#, c(#0 c)#4 sb*#8 qc+O#< bc-#@c.(iDQsKcLiMivNtOwP3Sp bc#e#mO#p0&EYF#HO#JO#L0# @ &OdBUtASwCargHSYdBUvA{VC@~ WOb`Ut_ca  3[  n n  i!bdX] Em td;O4  Lx/ cU0  intza'3,.F Z#E#( ## ##-### G#$#(^#,R~#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>3#T?3#XPAZ#\C#`; ~  ~# # ;Z#G  @  3, nf# Z#def'#  -# 'opIZ#lQ2#rQ2#H, 5D. Z# z'# Y'#box'# lc '# c!'# c"'# c#'# c$'# b%'#$ Pc&'#( c''#, c('#0 c)'#4 sb*'#8 qc+Z#< bc-'#@c.>34'5'dz6'7'c8'c9':'̱;'b<'Pc=' c>'c?'c@'sbA'qcBZbcD''F 1Z#fE@#dFqDQsKcLiMqvN-tO'wP53S?b  8 Z# (1 #  Z#?b d<U dR5wUwQ5 fQ'VRDsdqiZvRtXw5f'3xF EdWZx$UVZlex y;R I3  PFv 5!H [Zpf0  El` K,.F Z#E#( ## ##-### G#$#(^#,R#0#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>>#T?>#XPAZ#\C#`F   # # ;Z#R  K  3, nf# Z#def2#  8# 2op IZ#l Q=#r Q=#H, @D .  Z# z 2# Y 2#box 2# lc 2# c !2# c "2# c #2# c $2# b %2#$ Pc &2#( c '2#, c (2#0 c )2#4 sb *2#8 qc +Z#< bc -2#@c .I E 3Zz 42Y 52box 62lc 72c 82c 92c :2c ;2b <2Pc =2 c >2c ?2c @2sb A2qc BZbc D22 F  1Z#f EK#d F|D Qs Kc Li M|v N8t O2w P@3 SD sd|iZvtw@f2>F $?b  8 Z# (1 #  Z#?b b 6 nf3#val4Z# 5Z#P nfN# OZ# nf# Z#%eZUnfiZS$ZVendZWcmpZ %%8eZ]UnfÓiZS$ZVendZWcmpZ, %%dZ`UnfۓiZS$ZVendZWcmpZ %%dUOn'xUcZR61xUposZP,e}Z  m 5X!Uc4ZS!m " # " " !% m " # " " !T m )" # )" " posZR$ Iy|%Ex@$ 6|%E5@%5  ? ~ X!d"U&nfk? }BO V> '2 run!Z(S(>(&0" O  e 1[U  ))))dr* >| ) Z** .>  )b )=0Z) Z)"Ee-ZH *\/B W-$*e0DX- j / We6Z   b .aeP{    he  0e( Z, $eZ0 _Z4  Q*+d"!f>fU0  int z a'3, .F Z#E #( # #  # #- # # # G #$ #(^ #,R s#0 y#4 Z#8 #Z#< %o#@ )>#D5 *L#F +#G /#H 8#L >3#T ?3#XP AZ#\ C#`  s s#  y# ; Z#<  5  3  ,l nf## $S# %B# &0# (1'#d5# 26# 6#, 7#89#<:#< ;#< ,=#@ ? @#D @#P d@#\ E#hVV  )S#u4#Gr+5i,Zs-a.<sym/v3~2  l- ~#  ~#obj #G[Gq 8f nf #8f e  l- # #obj# f53x1Z#y2Z#3cObs nf #Obs Hoe  l- # #objc#nene 5f( nf # e #  # _ #5fNe0 l-N# N#obj # fsfjT)LH3 bc#e#mZ#p|@e3_d""ULQ2jVnf2WL4_S"" 9%9%eA_"#ULQ@jnf@VLB LAC_S -fY#$UnfXe` $w$UOQ_Vnf_WOAaSC$P$ e%e% enx$%UnfmS!_ oZZZ!wRp" qsprPLAs_V  %&UlfWZSnfOASOQVLA_P e&'UnfS!I RspP"s H LA_V '(UlfZSnfpOASOQWLA_V  ye( )UZP#LA_#OQ$ )%)U% e())UOQVOAS&fZW' Z(h )Z* fZ)*+Up WTZ'#LQjLA_S)Z  6&[ @ + y+ y+ y+ Z, 3| ,* .3 + ,bx &T ,f_HX-&-Z K S7,+x/>f  intoV'(,.F O#E#( ## ##-### G#$#(^#,Rs#0y#4O#8#O#<%d#@)3#D5 *A#F+#G/#H8v#L>(#T?(#XPAO#\C#`0 s  s# y# ;O#<  5  3Obs nf #Obs oe  l- # #obj#e3D:i7Os8O9F: fWO,+6UVOlexi5 y+;R1, I%-3 / P;-F2v 0!0 1  1[OpL  l` fU0  intza'3,.F Z#E#( ## ##-### G#$#(^#,Rs#0y#4Z#8#Z#<%o#@)>#D5 *L#F+#G/#H8#L>3#T?3#XPAZ#\C#` s  s# y# ;Z#<  5  33 Obs nf #Obs  oe  l- #  #obj#eDiZsOF t2 nf0# 1Z#8e=Z77Unf<i>ZS$>ZVend>ZWcmp>Z77 G%G%fU7 8U"n']88Uc\ZRF61h88UposiZPi8x8E:UcwZS y 0[i yyy Z3| *.3 fDf$T %ZX g'Z\ _(Z` g)Zd  TO ae2D % : ; I$ > $ >  I : ;  : ;I8 &I  : ; : ; I8 I !I/  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ; I: ;I : ;' I : ; ( ( .? : ;' I@ 4: ;I !4: ;I " U#: ;I $.? : ;' I@ %.? : ;' @ &.? : ;' @ '.: ;' @ (.: ;' I@ )4: ;I*: ;I +.? : ;' < ,4: ;I? < -.? : ;I< ..? : ;' I@ / : ;0.? : ;' < 1.? : ;' I< 2.? : ;' I< 3 4.? : ;@ 5!I/6.? : ;< 718191: ;.? : ;' I <: ;I=4: ; I >4: ; I? < ?4: ; I?  @!A4: ; I? < B4: ; I C4: ;I?  % $ > $ > : ; I I  : ;  : ; I8 : ; I8 : ;I8 : ; I !I/ .? : ; ' @ : ; I .? : ; ' I@ 4: ; I : ; I 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I 4: ; I .? : ; ' @ : ; I  : ; ( ( 4: ; I? < 4: ; I .? : ; ' I< .? : ; ' I< !I"4: ;I #.? : ;' @ $: ;I % U&.? : ;' @ '4: ;I(.? : ;' I@ ): ;I * +4: ; I?  ,4: ;I?  % $ > $ > : ; I I : ; I   : ; : ; I8 : ; I8 : ; I 8  : ;  : ; I : ;I8 &I: ; I!I/  : ;  : ; .? : ; @ : ; I : ; I .? : ; ' @ .? : ; ' @ 4: ; I 4: ; I  : ;  : ; I .? : ;' @ !: ;I ".? : ;' I@ # : ;$ : ;%4: ;I & U'4: ;I( )4: ;I *.? : ;I< + U,.? : ;I< - .4: ; I? < /4: ; I?  0!1!I/% : ; I$ > $ > I!I/  I : ; : ;I8 &I  : ; : ; I8  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ; ( ( : ;I : ;' I.? : ; ' @ : ; I 4: ; I? < 4: ; I ! : ; "4: ; I #.? : ;' @ $4: ;I %4: ;I &.? : ;' @ '.? : ;I< (1).? : ; ' I *4: ;I+1,1-1 . /.? : ;' I 0: ;I14: ;I2.? : ;' I< 3 U4: ;I 5: ;I 6.? : ;' < 7.? : ;' I< 8.: ;' @ 94: ;I? < :.? : ;' I< ;.? : ;I< .? : ;' < ?.? : ;' I@ @ UA.: ;' I@ B1C.? : ;' < D< E : ;I8 F.? : ; ' @ G.? : ; ' I@ H: ; I I4: ; IJ4: ; IK.? : ; I< L4: ; I?  M4: ; I? < N!I/O4: ;I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ;  : ; .? : ; ' @ .? : ; ' < .? : ; ' @ .? : ; ' I@ .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I? < .? : ; I< : ; I !.? : ; ' < "I#.? : ;I< $ U%.? : ;I< &1'1 (41 ) *.? : ; ' +: ; I, -.? : ; ' I .4: ; I/.? : ;' @ 04: ;I 1 U2: ;I 3: ;I 4.? : ;' < 54: ;I 64: ;I? < 7.? : ;' < 8.? : ;' I< 91:.? : ;' I@ ;4: ;I<.? : ;' I< =.? : ;I@ >.? : ;' I< ?.1@ @.1< A4: ; I?  B!I/C4: ; I?  D!I/E4: ;I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .: ; ' @ : ; I 4: ; I 4: ; I? <  U.? : ; I<  U.? : ; ' @ .? : ; ' @ .? : ; ' < I .? : ; ' I< !.? : ;' < ".? : ;' I< #4: ;I $.? : ;I< % : ;&' ': ;I(.? : ;' @ )4: ;I *: ;I +: ;I ,4: ;I? < -.? : ;I< . /4: ; I 04: ; I?  14: ; I? < % $ > : ; I I : ;  : ; I8 : ; I8 : ; I 8  : ; : ; I $ >   : ;I8 : ; I!I/  : ; .? : ; ' I@ : ; I 4: ; I.? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  !4: ; I? < !I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ;  : ;  : ; I : ;' I: ;I : ; ( ( .? : ; ' @ !: ; I ".? : ; ' I@ #4: ; I $.: ; ' @ %: ; I &.: ; ' I@ '.? : ; ' @ (.: ; ' I@ )4: ; I * +4: ; I,1-1..? : ;' I /: ;I0.: ;' I@ 1.? : ;' I< 24: ;I 34: ;I 44: ;I5 : ;6 : ;I8 7.: ;' @ 8.? : ;' @ 94: ;I? < :.? : ;I< ;.? : ;I< <.? : ;' I@ =: ;I >4: ;I?: ;I @.: ;' @ A.? : ;' I< B.? : ;' < C UD : ;E.? : ;' I< F4: ; I? < G4: ; I?  H!I/% : ; I$ > : ; I I : ; : ; I8 : ; I8 : ; I 8  : ; : ; I$ >   : ;I8 : ; I!I/  : ; .? : ; ' @ : ; I 4: ; I 4: ; I  U.? : ; I<  4: ; I? < 4: ; I?  4: ; I? < % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' @ : ; I 4: ; I .? : ; ' I@ : ; I .? : ; ' @ .? : ;' @ 4: ;I .? : ;' @ 4: ;I4: ;I .? : ;' @ !.? : ;I@ ": ;I # $4: ;I%.? : ;' I< &I'.? : ;' < (.? : ;' < ).: ;' @ *: ;I +4: ;I? < ,.? : ;I< -.? : ;I< .4: ; I /4: ; I? < 04: ; I?  14: ; I? < % $ > $ > : ; I I : ; I   : ; : ; I8 : ; I8 : ; I 8  : ;  : ; I : ;I8 : ; I!I/  : ; .? : ; ' @ : ; I 4: ; I  U U.? : ; ' @ .? : ; ' I@ 4: ; I 4: ; I4: ;I .? : ;' I@ : ;I !4: ;I "4: ; I? < #4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I  U4: ; I : ; I .? : ; ' @ 4: ; I 11.? : ;' I : ;I !I/!.? : ;' @ "4: ;I #.? : ;' < $I%4: ; I? < &4: ; I?  '4: ; I? < % : ; I$ > $ >  I : ;  : ;I8 &I  ' I : ; : ; I8 I!I/ : ;I : ; : ;I8 .? : ;' I@ .? : ;' I@ : ;I 4: ;I4: ;I.: ;' I@ : ;I 4: ;I  4: ;I  U : ; U !4: ; I? < "' I#4: ; I?  $4: ; I %!I/% $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ I.? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/  : ;' I: ;I : ; I8  : ;  : ; I : ; .? : ; ' @ 4: ; I? < 4: ; I 4: ; I : ; I .? : ; ' I@ .? : ;' @ 4: ;I .: ;' @ : ;I .? : ;' @ .? : ;' I@ !: ;I ".? : ;' < # $4: ;I%4: ;I & '.: ;' I@ (.? : ;I< )*.? : ;' I< + U,4: ;I? < -.? : ;' < .4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ; I.? : ; ' @ : ; I .? : ; ' I@ .: ; ' @ : ; I 4: ; I .? : ;' @ : ;I 4: ;I.? : ;' I@ 4: ;I .: ;' @ : ;I 4: ;I .? : ;' I< I .? : ;' < !4: ;I? < ".: ;' I@ #4: ; I $4: ; I? < %4: ; I?  % $ > $ > : ; I I  : ;  : ;I8 : ; : ; I8 I !I/ .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ; (  : ;  : ; I.? : ;' I@ : ;I  : ; : ;4: ;I  U4: ;I .? : ; I< 4: ;I  .? : ;' @ : ;I ! : ;": ;I#.? : ;' < $4: ;I< %.? : ;' < &I'4: ; I (4: ; I? < )4: ; I?  *!I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ;  : ; I.? : ; ' @  : ; .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I 4: ; I.: ; ' @ : ; I 4: ; I? < .: ; ' I@ .? : ;' @ : ;I 1!1"1#4: ;I $.? : ;' I %: ;I&4: ;I'4: ;I (4: ;I? < ).? : ;' I< *I+!,4: ; I?  % $ >  I$ >  : ;  : ; I8  : ; I8 : ; I  : ; : ; I .: ; ' @ .: ; ' @ : ; I 4: ; I .? : ; ' I< I.? : ; ' I< .? : ; ' I@ 4: ; I .: ; ' I@ : ; I .: ;' @ : ;I I!I/ %  : ;  : ; I8 $ >  I$ > : ; I : ;I8  : ; I !I/  : ;' I: ;I : ; I8 .? : ; ' @ : ; I 4: ; I? < 4: ; I 4: ; I .? : ; ' @ .? : ; @ .? : ; I< .? : ; I< !I/: ; I  .? : ;I< U!.? : ;' I@ ": ;I #4: ;I $4: ;I %.? : ;' @ &: ;I '4: ;I( ).? : ;I< *4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8 .? : ; ' @ : ; I 4: ; I 4: ; I? < 4: ; I .? : ;' @ : ;I 4: ;I % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8 .? : ; ' @ .? : ; ' I@ .? : ; ' I@ : ; I .? : ; ' @ 4: ; I : ; I  U4: ; I4: ; I .? : ;' I@ : ;I : ;I 4: ;I 4: ;I .? : ;' @ 4: ;I.? : ;' I@ 4: ; I? < !4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; : ;I : ;' I<  : ; I8 .? : ; ' I@ : ; I 4: ; I 11.? : ;' I : ;I.? : ;' I@ : ;I 4: ;I .? : ;@ .? : ;@ !4: ;I"4: ;I? < #.? : ;' I< $.? : ;' @ %.? : ;I< &' (: ;I ).? : ;' @ *4: ;I +4: ;I,.? : ;I@ -4: ; I? < .4: ; I?  % : ; I$ > $ >  I : ;  : ;I8 I !I/  &I : ; : ; I8 : ;I : ;' I< ' I : ; : ; : ;I : ;I8 : ; I : ;I : ;: ;I.: ;' @ : ;I 4: ;I 4: ;I .: ;' I@ !: ;I " #4: ;I$ U%.? : ;' I@ &.? : ;' @ '.? : ;' @ ( )1*1+.? : ;' I ,: ;I- : ;. U/!I/04: ;I14: ; I? < % : ; I$ > $ >  I : ;  : ;I8 &I  : ; : ; I8 I !I/  : ; ' II'  : ; I8 : ;I : ; : ;I8  : ;.: ; ' I@ : ; I : ; I .: ; @ 4: ; I 4: ; I .: ; ' @  4: ; I .? : ; ' I@ !.? : ;' I@ ": ;I #: ;I $4: ;I %4: ;I & U' (4: ;I) U*.? : ;I< +,.: ;' I@ -.? : ;' @ .4: ; I? < % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/ : ;I : ;' I: ; I<  : ; : ;I8  : ; : ;I : ; : ;I : ; ( ( .: ; ' I@ : ; I 4: ; I 4: ; I? < !4: ; I "1#1$1%.? : ;' I &: ;I'.? : ;' I@ (: ;I ).? : ;' @ *4: ;I? < +4: ;I,4: ;I - ..? : ; ' /: ; I0.1@ 11 24: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ;I : ;' I : ; ( (  : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I 4: ; I? < .? : ; ' @ 4: ; I .: ; ' @ !: ; I ".? : ; ' I< #4: ; I $ U%.? : ;I< &!I/'.? : ;' @ (: ;I ): ;I *4: ;I +4: ;I? < ,.? : ;' < -4: ; I?  % $ > $ > : ; I I  : ;  : ; I8 : ;I8 : ; I !I/ .? : ; ' I@ 4: ; I .? : ; ' @ : ; I : ; I 4: ; I? < 4: ; I?  % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ;  : ; I: ;I : ;' I.? : ; ' I@ : ; I  4: ; I: ; I 4: ; I .? : ; ' @ .? : ; ' I< .? : ;' @ : ;I .? : ;' @ : ;I !4: ;I "4: ;I? < #4: ;I $ U%.? : ;I< &' U(!).? : ;' I< *.? : ;' < +.? : ;' I@ ,.: ;' I@ -4: ;I..: ;' @ /4: ;I04: ; I 14: ; I? < 24: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/  : ;  : ; I8  : ;  : ; I.? : ; ' I@ : ; I 4: ; I : ; I .? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ;  : ; I.? : ; ' I@ : ; I .? : ; ' @ : ; I 4: ; I .? : ;' @ : ;I 4: ; I 4: ; I? < % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ;  : ; I : ;' I: ;I.? : ; ' @ : ; I 4: ; I .? : ;' @ : ;I 4: ;I  U.? : ;I< .? : ;' < 4: ; I 4: ; I? < !!I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ;  : ;  : ; I : ; I.? : ; ' @ .: ; ' I@ : ; I .? : ;' I@ : ;I  : ; : ;4: ;I  U4: ;I 4: ;I   .? : ;' @ !: ;I ".? : ;' < #4: ;I< $4: ; I %4: ; I? < &4: ; I?  '!(!I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ;  : ;  : ; I : ; I.: ; ' I@ : ; I 4: ; I 4: ; I 4: ; I 4: ; I.? : ;' @ .: ;' @ : ;I 4: ;I 4: ;I 4: ;I? < .? : ;' @ !1"1#1$.? : ;' I %: ;I&4: ;I'.? : ;' I< (I)4: ; I? < *4: ; I?  % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/  : ; I8  : ; I 8  : ;  : ; I : ;  : ; : ; I: ;I : ;' I.: ; ' I@ : ; I : ; I 4: ; I  4: ; I .? : ; ' @ !.? : ; ' I< ".? : ; ' < #4: ; I$.? : ; ' @ %.: ; ' @ &4: ; I '.? : ; I< ( U).? : ; I< *.? : ; ' I@ +4: ; I? < ,4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; : ; I : ; I8  : ;  : ; I.? : ;' I@ : ;I  : ; : ;4: ;I  U4: ;I 4: ;I   : ;' I : ;I!.? : ; ' @ ": ; I #.? : ; ' < $4: ; I< %4: ; I &4: ; I '.? : ; I< ()4: ; I? < *4: ; I?  +!I/% : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/  : ; : ; I : ; I8  : ;  : ; I : ; .: ; ' I@ : ; I 4: ; I 4: ; I 4: ; I 4: ; I.? : ; ' @ .: ; ' @ : ; I .? : ; ' @ 4: ; I? < 4: ; I?  p /usr/include/usr/include/sys/usr/include/bits/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include../Miscmain.cstdlib.hselect.htime.htypes.hnotation.htime.hstdarg.htcl.hrunset.heden.hsymptr.q.hagency.q.hstdio.hlibio.hstddef.hemalloc.hbuiltin.hcustom.hsetjmp.hsetjmp.hsigset.hinput_device.h'.:&F:9kz]y+rrrrdKW;gm:8VA TM (eIP eTV&dP:8VA TM,K:=,H/:dG <,0xq4:XˎHyc˞ƫzU :I,+V;:MVeYd/ s 9 D:=#WKT,edVXJ:Hë7K 6r?\V*VW[z[[gcdr:ed\eWjezVt9$v VV%#U!WUu606f3w)-JUrv9Ge\,Vo!77`3Vo!77`3Vo!77`2d:Y](q5([9#9efgXrs ődXmr<, t+YUX 7VXF,:o?~[4 ʪVpqVp,,,,p'FJ8Vh:X68dԸpF,Ht:YYm=4 '8:{rdxf"eWsGd%"t;r d/'d  xqY%hco+ddmU+K95+K+5UZ Uw HVh9vc 9yUxyqn.cVVY5K;SWX6J;SW Uv9 Gx;SWX6JDXVVWXXVWYVTd8dWae.'Y-"Gc,]Xm[^+u'f6I;Y;INo`LU:Vwcu+d~Uu /usr/include/usr/include/bitsrunset.crunset.hemalloc.hstdio.hlibio.htypes.hPd'drr9eb>fVepz9?::T,,d%;o;::T,,d8V8:Ǝr, )-J8zqY /usr/include/usr/include/bitssymptr.q.cagency.q.csymbol.centry.q.csymptr.q.heden.hagency.q.hnotation.hentry.q.hstdio.hlibio.htypes.hemalloc.hRfT,x*:d:p,)rT:,rrWfR<p,|*:dVdrT:,rrWzf)-d:[Y5=H8t, *<8,۲—=pXٳܞǎH6<:JpOr*:2:u8:rs~x bison/usr/include/usr/include/bitsyacc.ybison.simpleeden.hsymptr.q.hagency.q.hemalloc.hstdio.hlibio.htypes.hdrrz+:8VA ,Hdrry+:8VA )G:d=:d=, UuGc;zdyIVUdTq:9Upri{cucd caI7;ae cyG!U_c@9cbd,W;e jyUNy+digL bd3 .|f cbd2c*dh*d,J}V{zU1y+di ++hchcf99ReVǥ]dT:V#}$|G(%}+%P<rt crUVV14(~eX[VY9sr#dHVHV#~UZV8VcU#V8VoBreZV  dqUM,8dV,:+dV,XUU[#Z[UHd /HW1V8rTVVs-ZH8:WHVVa I!VgUTrVH 'zTrVHtX 'H9sZ-QTVTVHZ U(rZrr\Y9bT.^hSekz1S-e?*8,) #bd.bdgyUxz+i.:#7qdT\*Vjuhw d^?rAcןb<s*rP4~ w+ cjzU?z+ipUqco{dh8rwgwZ%dD /usr/include/bits/usr/include/sys/usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/linux../pcre-3.9builtin.cstdio.hstat.hstdlib.hscreen.q.ceden.hsymptr.q.hagency.q.htime.htypes.htime.htime.hstdio.hlibio.hstat.hnotation.hstddef.htcl.htermios.hselect.htypes.hinput.hpcre.hscreen.q.hemalloc.hbuiltin.hinput_device.hsetjmp.hsetjmp.hsigset.hdGcVԝ(f:bVp'fWH*,}m\<6.,, m\Xr Ytd,rsy# qdxUW /8,dh=5=Z>4>,/gV#T}cc}c}q9V=gV#TwWI79I9:9S$H!Q/rH,# VV8ddb:Vrf$ YV8:TeV#TTdb:m)Vxq[rŔeV$TTea::m(Vx[pŔeV$TTea::m(Vx[pœH8,T8:ƪ;7fH:*-<v?HVdd:T:eV/Tz#fe U#UJrJHV1===9pq==9 UwHx+Hy9dVKdV=XsWHF:Vd,rbrV) 7-fVbr,dNf?edVro/e;VuU cs9Wyp+V wU2>T,W厯T,~W厒 f8:dv 9r$Yshx8 f8:dv 9rojqxU% W28:*:,<pVV<:(p :Ee8:Vxrtyc ,Ʒ:FVV<rr$Yt 9tcF8eF:VtZ:Ԛiۑ=fZ 9wW+..r:Td u+ 9uG:Iq+H:-H: +Wb,bH,VBWXUsUYqlXXH8,*HxcUAV,@:: .dޞ:$auI2VVHz+n- UzVVVV\:V1+/T.dt:S7udI(' -n, V&\',)cd ,B) 9d,B9W,X.7V:r,ILV ) `.(X quƀWz tG 9s,;6Uu+U 9vU 9r:p c:p c*Vx%xU ~:8VVvq8:~:Vupnu4 d;%U]Vrbp d:V,bp V,zq:u*,8s:!XIWro G 0"?p,S;, 6NY TV +.HtV]+drdrgXD9;k.1dTb&9urguftE;VzU^dVS ZEuVg.*z q-$V f Uet5,rV:r c:wTeS#qetWp:re7V*,-cs +Pb,UetXp:rm9?@[Grr[Ay xTrԀ`rv+rs+ru+ru+rvUrnqy9x9y9z9cz,UXVrW$x::?Wd;aef "dbdd c$c)tdw+3Ǭ78Ǭ78)8):)'7:8*:8*,&#::7ڸ<(f+!mg. cwq cVTdHTeTdHT cBC </n'3<(fHp 9`f (f:$n %$na-cSc-qS94rp 9-b:r8:,)p';r)pv96,-2G&,$1#$FddV$#,)Nv%x9T:db:;k?~/EU,$1#$Fd#d~/EU,$1#$FdL#4%/uG Gt9qV4)G,$1#$FdB@s/uU/Ci(/H' &/H'9p- Q7-8:m9,q,hq;8;8,);r:x2s9:na-8:b,:g(a-*:Ԏ`MsMrJwqxG%r2b,d):HHbe9uFs=H=:8:/*,-tVWsyr  Wrs.)eeVd,VJ[,8 c,d G,'h^>f;,,dcdcU99dcdcU99dcdcU99dcdcU99պEeOc4$1syyy_&dd-ws&#sQz+?(eV?{=,\zq,dV= y,p+a-VƪH]y, Vb:T:ga-V+GZv:b, %y6H,V4p0DoXVsqb,V'c Vb:T:d:V;cH$Z:F:M u/H,V-+-VXPErWy qwq:V,,:VaF:V9ceV x9 (l>,#Er"5=<<+ldWpNWd+ )\yj0m:?V::8:-JJz V:;7;,JJz< V;Y c,|tUUfXV;;<xUxxz!f ;;<,x+xx{qfXVVWv9 fXVVWv9 fXVVWv9 gXW;;;<xGxxxy*f VWx+ qgXW;;<xUxxy"gXW;;<xUxxy"gXW;;<xUxxy"f WWw+ qf.Wz+ qgXW;;;<xGxxxy*gXW;;;<xGxxxy*gXW;;;<xGxxxy*g WWw+ qgXW;;<xUxxy"gXW;;;<xGxxxy*gXW;;;<xGxxxy*gXW;;;<xGxxxy*d WWw+ qd WWw+ qg W<:x9yqd WWw+y /usr/include/usr/include/bitscode.ceden.hsymptr.q.hagency.q.hstdio.hlibio.htypes.hemalloc.h4fVdV,V#d=r:Vd/g=bV "P0PZfEddV+7e,Z 4 }o+}Uc}9}+tc ct99Xy9@Ȝn}q:&:LYb:.1sz(.o--g4y8drr;v9T,Td,,:?HK :d|xuQ=:(@z9iXUpR.:ds c8,:s ŕr{R<oc{9{+t(d8ԸoMdycr~1{P:&:0ZV~,rZV~,r wq fZ wq f\!pu+:,zU?:hHwzqdyU:]t$*W,p9U  $4J V<V7K5!:>d UnWesr+g,g5f$$4nWe8:Hr,,Vz@XdYfW $ 9wq 08Vd ldW /usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include../EX/usr/include/bitslex.cstdlib.hnotation.heden.hsymptr.q.hagency.q.hstddef.hscript.hstdio.hlibio.htypes.hemalloc.hyacc.hinput_device.hsetjmp.hsetjmp.hsigset.htcl.ht;YXRfde@ddve t 9*,| q u 9rp,#T,+Ցr- f r;qWm)GWc)UWU)qU9Y9q%I1Id:c1*7Vr+zqA-3U 66XRtr>+E,H8VTr yV*r/|" q4oVrJ6XRtdyt8y' cF)& &VCdrdbV,9tbV,Wkf^ZF,#zU1z+1 +xSVT,,)dt.wqvV.vr,Vr.gae"X6tMousuq}q9%,. ^(V~8dqW~SeVdWcӜ+U7eqV9GGGq`h(-.Hnob u+Vt+՜U.. [.W8djqSeVdWb+7eV. `%V8d0lUSeVdVe+7e1~/ qXXWQ UXdcV VdxU],< U dr%~I  }sei"(9 (r c&V U -sVh4y+zU ^uKxVh96WHa7*X6t*VTV28:HXw6WHa7*X6rsRmDPvn**8V1Vl0V/V:K8d ;Ye:rseha-,XX2u qrwt^`4>\=:^::HJdV8:icj99Vf5-;?tG 9>\=:^::HJdV8:i!V:-xzU +>wrrgr#wǸX?, ;2qU,yU:c0wW;- ;2pV,xUIq0wW;- ;2pV,xUIc0wǹW;- ȋ;xqVVxUHd90wǹW;- ȋ;xqWVxUH,dU0wǹW;- ȋ;xqVVxUHd90wǹW;- ȋ;xqWVxUH,dU 0ddבm=-0tpV, &.r18,ǪR.g&Xy$z)v‰:kV,qupV-(fF8;Vדb:4Je,UGyUV^+$dȇm=/eXR:V:s,H" qɸ/;h ;yU&zcI z@a;V Grjo8 8tƸXqU <s:~:V1ƹI.:,Ƹ$a;I*+bsJ;~:,a;I%d:I:,}; +&5ZH Ӝ8WV.Vm|gvUr+ /usr/include/usr/include/bitsrefer.csymptr.q.heden.hagency.q.hemalloc.hstdio.hlibio.htypes.h9#:;?0 -dH$NZ{:r4/bHnU?,bd$`d0 GVT/=Xf;8:*:)iV?M8:p:- duV+#7eT:57,y1@yU ctzU?::*:-y9 V|zU?::*:-y9 V| Ꮥ>dV( /usr/include/usr/include/bitstype.cstdlib.heden.hsymptr.q.hagency.q.hstdio.hlibio.htypes.hemalloc.h$B2Vp: +dHwVI8: ᐘ<8}HIdv:+qV^Ӹrs>sr(x+s,::99U-)g9hd[:+; 9$,YZrԸ:, q;7:$v,VT,);ssV"qy9@y92w9 Uy9A=:o9pqrc=w=r c:pV- 8,Ux8rV7n<ctr(X: *:.* ;3U gV~V:7:,b:t:XO~d"UOpV.b:M8HH:yU]:jUW!U4Z/:XzUnqWU E;e'G UVocfd8:rdUT~}rd8H|wy k Wu8V8,88:,r~S?dS++w9d3v9 cs[ GqWH:>&"p,fqW&>.H*:*:ncV8,8e)::87: U;:$Œ `<6::}q7V:@ 4>eV<8V88:d UcryG:r> Gsd8:>s:v 1V?ssIhd:d9Ud8:*:-Ə UW8dsS-1z?;r-:Gq>::#U:`.gWVSq:a-WV9X; Ut!WrBV.jq-+y5='gh0d9q9?  #dUrX rs Ud8:sS- c8ed?:y9?df7I1WQgQKZX[KWdb:9}9:dfs::b-PŎLq7-r|iWVr$|$~rf 0crTd.:|fdwU~gƏ/-:pe)hr:8dd^cVrWec?U:db,z9'U:9-s8VrGUdPdP:sU:X:8UJU:UhdPzcw'e~rjˎV\bd dbdt`R'7w}q,;u-,kR&d[*'de VUS+dq9n99o+9ghV#Awq:A-::7::>-9p9q.>HAZ1 U qx}d8::+jUAU#5&.#y$}Ur;U ԫv,3yUpcGq99z:,d,ro8!(;:, G&'s;*  U8:*dWf<60Ecr,,Fs;1  U)f<60q,::vU+d,ro8!(;:, G&&s;*  U8:*dWf<60EcrFs;1  U)f<60U,::vU+d,ro8!(;:w Gw+ 9G'%;*8:8H8:wUg b:8df<6+U:*,;.g5 # g5 # g5 # g5 # g5 # g5~:XVpVpVpVpVpVp,::uUs+zӎ;Ԫ 9vs;iz+M:tU7;)eVivG qo:,ro8!(;:Uy9@x+k)q(vUԪ 9 s;4zUT:Z#wU$`f6cq(`<6a:rn!*:|e He:8:8-::8:8:<gUT,e:&;S;7g UXhOy+@- G 9w9 9:[]zNa9`9d8::~qs;b::%XU5=@zc[@sU 9y9@dUcWnq'f0wU;w:[t: Urp:r: ,g--9s IH>ӣzEM cF:~cet;e:8V*,=FUVZ?:@,)RT:W) } /usr/include/usr/include/bits../Edencustom.cstdio.hlibio.htypes.hemalloc.hcustom.h8& c /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/usr/include/bits../Eden../EXsymbol.csymbol.htree.hstddef.hstdio.hlibio.htypes.hemalloc.htcl.hscript.hV*:p:Wd7HHmh4xHX~qK ;V8:Imw#*d.` R.(.e*,x=;w:XG#LTs~**8,~-dVua. ,zL$z8:R3* VYVsVzV:X6< tD -V,m quVrrTr,xdrdb,(wŒ#X"u ,zz(8:0;7Vq c+$>Վ|V;,#+#+#3#]#]##]#%:6V8厮W*厮W<GT,eVs<dS;r?9HUɸ<jqVW8dWmWdWDȪT,esvaS; 7d8,rrrrrHWR&+H!Uɸ<pqVVq+WdWn;ԎT,.d'Q=:eH5x68 d::2ȨV*Wy9jy y yU\: y9Nsqcr+r:bprYӄudVb,VyTzVVV9d:duVd3$epgbɪ3bWa;`0qVW⹪5nVzuVz+0P[zU?:sqqvƎrŎd"œVXVwq5 /usr/include/usr/include/bits../Eden../EXtree.ctree.hsymbol.hstdio.hlibio.htypes.hemalloc.hscript.hoper.h<Vp:.:{D GVp:.nD G:/:/:/dQ:8VA TMfsdddd4h;?fsddd5g;[fsdd6f;?fsd7e;Zfs8d;9:'ouxGr)9;]CWo9I-`rduC!-,cK;,ZBHY2qUH$m9 (_ :?WcƎƎ 9I~9!+ ƎrV++ƎrnUdd r+qG~H;-H;<+րَ= UnHl+J +UsIUx rsUdv ,rGd𸝨UvƎs9JYc~+t+3 ~,,U.UcUooy,Uu vU-FdV~d^c-dVrzqFdWd,rxUFdWdUU VrUU HX6I):: Z6d8,:dd x9bӟVw wUv:x+:< $n<8,(dd,J!kUlc Ux+HPFVT.ve8VVr /usr/include/usr/include/bits../Edenutility.cstdio.hlibio.htypes.hemalloc.hL%oB bison/usr/include../EX/usr/include/bits../Edenbison.simpleparser.ytree.herror.htcl.hscript.hstdio.hlibio.htypes.hemalloc.hpri{cucd caI7;ae cyG!U_c@9cbd,W;e ŌjyUNy+digL bd3 .nf cbd2c*dh*d,|zU1y+di ++h9fcTVǥ]dT:V#|$9| yUV#-VVqUh4Z uUes~UivUV Zs0U[X6:;;W&amUxcZ V#(d-:cpbddklbdr:KՒXV~UVVVGBUVV,VVYVVVVWTTVVW@XXZYWe\wR,bT.^hSekz9wS;ei18,) ##bd.bdgyUxz+i.:V#7qdVNB*Vjuw d^ArAcבb>s2P4$~ w+ cj[zU?z+pUqccomdh8rwgwZ%dEd GXWjX6f /usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bits../Edendd_lex.cstdlib.hstddef.hstdio.hlibio.htypes.hparser.htree.hemalloc.h?,:U,VYIHv9,Q fbf,)d/TdH&:8VEs1pr, <o s $dqn+swruqopssvrvwq qmvrruq w9ƹ +}q{G+}+n+"+xU| UbU,UYUUќg"UUtmcuV|UXQsU|gJ[)ct*UcJ  G6cHƜ|rᑑXXXXXwUݜݜݜU9KZoKYY)rQU Z rkU UY Zy [Ԝs\wU,  @UkY&Y&]Y&]YPkYPkY€kYƸzU)qXP8,yUU ŜUU8rl+9U>-UZ%X ŜrwU8rw+U Ŝt8r j+yzUWxcPuY8,QL8rK,~[P7d Tre:urc md 1 check.ctree.hsymbol.h4$d\';adHVrwvcdwUVVrc:IVSo-GfK U}z9,dsdtdu2dvBrF.|qY|qr'r:V}+}+b rQrzU}= yA)z #wDA1+r~U 4>~844~qr}~%#u~D"D>d\dX>sŎUy}9 x cvczy /usr/include/usr/include/bits../EXparser.ctcl.hstructures.hstdio.hlibio.htypes.hscript.hL8sV3d%Vp:,drXZg,fq  9 lVdd:;T:*V:TV7drU9VTd tY~p:$};)z+1'e\e\e\P)y+gkyTciWEeW-G~,;rrrszG1esef7eH;s.*Jr*Iv{H*gc04)WU)9quVTd tY~p:$}$e)O-,'-e qJdWtMv +\I\I\I\I\I]8dVFd P>a-.ȁWeT,;<ŏ sW \e%'l'^sWeT,1;A&`k&\~8dVdVpddbV#-L8dVdVpdVdbV#-ZWEeWeVWHeT-ss. b\q,},-p,W G.7L7;so::U"}% `-,QY qJdWtK)y2W-W-H UI ] W)-V-] W)-V-] W)-V-U;!IWE-Wx%xU  UW7-Vv vU]W7-Vv vU] W)-V-]I UIWE-Wx%xU  UW7-Vv vU]I]I]I]I\IWE-Wx%xU  UI] W)-V-] W)-V-] W)-Vǁ]I UI]I]       I  UI Z Gwor:dr::lVuVuVtVtVtVtVhW)-VW_W)-VW^W)-VW\KJIW)-VgZGW)-V[9W)-VrrW9W)-VrrW9W)-Vrrf9eGWGW)-V[9XcGdG]GԆz[ԆzA,rW-VefWE-W,ePKJOWE-Wr\9G,f)u /usr/include/GL/usr/include/usr/include/bitsfunctions.cstructures.hgl.hstdio.hlibio.htypes.h(dqddetA;k[z9i<[z9i< dd6f< <[z9i< d7e< d7e< d7e< <>> dd6f< dd6f< dd6f< ru d7e< dd6f< dd6f< dd6f< < Uw9 c f  /usr/include/GL/usr/include/usr/include/bits../Edenstructures.cstructures.hgl.hstdio.hlibio.htypes.hemalloc.h.-d,SVW&SVV(rdԹIAdԹIAdԹI9rrV 4<%agMtfW-umYj-7Wrr6r- cxG,d `.DJ1-, exQ X}-W;l :V Gu'=wm[lru-s +w,: <6 `<3E- X6<!W$ʰ»<`:d:p:Wd<`:d:p:Wd<`:d:p:W-Xn\ddd_ddddeddddmŚTd,%%,%%,%%d~H)TW;zYWH~xGV UV[zZuqV 9H ;*r8-2vh;xU;WD.XR.frV8: >dddddddddddd <:VVd6:;rzU1d$ 9xcAWiZbddd>&>t+rrrvrrrrf-HfXW)-,qsgcW$rs& qwc 9)e/9WWWzc;)$:GdS:u<6<dddee:s9qm=.d ycFh /usr/include/usr/include/GL/usr/X11R6/include/X11/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bitstogl.cstdlib.htogl.hglx.hXlib.htk.htcl.hX.hXutil.hgl.hstddef.hstdio.hlibio.htypes.h`adrd\S,.'KHO,v9He- 9Ve(VrU c 8::;j9;wW(9,`k$:Bvi=c>$:,ݷ4440¶10w+:%r$%(Wٳr,+Ӷ9|:>:>:9?,ܛ,*ʴdz,+İ:հ:b:)-#6YR:Ldr0 VwU.R.<6rV) U' :Z:L: U:Y:d/:K:UyUjeTr?g,\*r*zL4>.,-);ۧs8,?;:ճ-;::-;::-;::-;::-;::-;::/;:;+/:::::::::,,,2<yyG8X\ylF}}}}}} qvc 9<<h99GfVw$dḫ2  /usr/include/usr/include/GL/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bitsglpng.cpngconf.hgl.hstddef.hglpng.hstdio.hlibio.htypes.hpng.hsetjmp.hsetjmp.hsigset.hzlib.hzconf.h4; eS-(>~g,J4:)IV6:-b5` պS-);/7-Vf,(sC;:$**v4Tyx9UVDH8v4Tyx9 qcjH,ƪ8Txy9 ,ƜH8Txy9_Hr8v4T ,H8v4T*;":X.};Vp,-ycK/y+,F:X<KԸ&d<6$8;6%9'<f%Ve:f%dag;f%Vds;f%Vde8'᪎f/::H];q /usr/include/usr/include/bitsprint.ctree.hsymbol.hstdio.hlibio.htypes.h/:nqn+sssssss  cv Uv+sss '=ger5;}+XLUs+o+++U}U~U-}+~U Vy+~W7;rus8y9bWWWW᪪VU~U~ U9:-:-:-:-:-:W:W:W:W:W:W:W:W:W:W:W:W:W:W:W:W:W:EUWWWWU n:Pc mḝW\ḝWWWWWGUd}U~:,s#z /usr/include/usr/include/bitsstore.ctree.hsymbol.htcl.hstdio.hlibio.htypes.herU?|6PUpUkUUUeU|Uc&j1WrRbdVFrVd}UbdVru+bdVprVFr[c},dbVTVdrVs+H8d8d`VWWW#bdVUqprVqt~U3qq~s UuU*,-,-,-,-,-,W,W,W,W,W,W,W,W,W,Wq,W,W,W,W,W,W,W,UV V :8d8dV~]-%U:8d8dVFH8dVec:r8dԪdU8d8eTVdpeTV,FH8eTVHfŪ>UŪ--WWWU8d:|Uco;VTeWI7eV,,wG-TefWĜVIz bison/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/usr/include/bits../Eden../EXparser.ybison.simpletree.hsymbol.hstddef.hstdio.hlibio.htypes.hemalloc.hscript.h;:=:9s:)s:)us:)s:)s:Ss:Ss:Ss:Ss:Ss:Ss:Ss:S:\:Wxs:Spri{cuUd UaI7;ae cy+j+_c@9cbd,We Ōd[yUNy+jgL bd3 .|f cbd2c*dh*,'|G,zc*@y+di +7TVǥ]dT:V#|Ci+*}+}U}NN$N G#,c G G q q qsȜy qG~+9</~Ŝ/dUIZ~Ŝ,':WG~ U:VXV-UV"9`U,VVVV:VV0X*P-V$.VXV(pYVYV-/p bT.^hSekz1S-e?*8,) #bd.bdgyUxz+i.:#7qdVNB*Vjuʜw d^?rAcבb<s*rP4~ w+ cjzqpUqcqomdh8rwgwZ%dEgXW/Wo;.v /usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bits../Eden../EXst_lex.cstdlib.hstddef.hstdio.hlibio.htypes.hparser.hsymbol.htree.hemalloc.hscript.h,VY-eHv9V,VYeHv9V†,VYeHv9V,:Yd/TdH&:8VE,8djV*r;,m:GI$WWWWWY~UOU*J᎜'uVzU GUc~'KyTU cUk 8:ZXP, UڎzV +WYWP]YWP]YWP]YWP]YPkYPkYűH8rgmd  /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include../Eden/usr/include/usr/include/bitsagentList.cLSDagent.q.hObs.q.hstddef.heden.hsymptr.q.hagency.q.htcl.hstdio.hlibio.htypes.hemalloc.hd"2R $3y-28:st|0uqe#" $HVGtG|0vqgK::YVHrI,@, ,>dԫԫԫp,l" bison/usr/include/usr/include/bits../Edenbison.simpleparser.yObs.q.htcl.hstdio.hlibio.htypes.hemalloc.h,+pri{cucd caI7;ae cyG!U_c@9cbd,W;e jyUNy+digL bd3 .nf c8d2c*dh*d,J{9yc,1y+di +hcUf996eVǥ]dT:V#{$ļbT.^hSekz1㧔S-e?*8,)Ӕ #bd.8dg-yUxz+i.:V#7qdVNB*VjYhw d^@rAcבb<s*rP4~ w+ c2zU?z+ipUqco{dh8rwgwZ%dD~ZdzcV,d: 0 /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/usr/include/bits../Edenlsd_lex.cstddef.hstdio.hlibio.htypes.hemalloc.hparser.hObs.q.h7<,VYeHv9V S)-Yd/TdH&:8VEi,"R,uVz+ܜcWWX&sm|  AB HH.V. AAB .AB a.$ AB AQ.. T.EAB x.PAAB ^.AB B.lMC AB AM  AB A."AB E.$AB EW.X. T.$xKAB HL.. T.$AB GG.N. T.$HAB GS.j.T. PAB GS.R.W.XAB N.<p~AB FO..I.N.n..b.R.o.AB K.*AB ^.4rAB H.0mAB DG.C.].E.W.\.O.CAB [.W. \AB Bb..<AB F.L!AB @pAB F. a.G.I.E...y..M. \AB DH.$|AB Bb..X.6AB T.AB c. b.dHAB J.(AB HI.^.H. O.X@ AB Ii.h.S.P.J..j.E.Q.Z.t..m.Q.L.U.n.| PAB DK.(AB AT. AB Fj.|AB BW.EAB BK.PZAB Bf.| AAB B UAB Al.U.H)AB D tWAB F\. AB Ar.X.S.X)AB D#AB FAB BG.(AB FB...AB R. GAB FJ. YAB Fa. @vAB BM._. cAB Fh. AB Ar.X.S.)AB DZAB Bc. 0wAB FX.AB BK.8#AB Y.\aAB Bz.^AB Ax. BAB DD.dLAB BG.uAB DE.$(lAB Fe.y.| < AB F.< AB F.< x AB <  AB  < AB F.< x,AB _.<  AB << `AB F.0 .`.w. ^.s. L.U. T.| P AB P.P 0xAB f.}.P %AB [. P cAB E[.y. P 4AB FY. P AB FY. P lAB F`.$P @AB \.A.H. \.P AB GD.P )AB M.P hAB K.P LsAB f.P +AB O.P sAB f.(P `EAB DZ..H. O.$P AB FE..(P AB Fg..P.P AB Ad.$P 49AB Ep..0[.(P p]AB Fp..0[.(P ]AB Fp..0[. P 0.AB Fb. P `_AB Ff.4P AB F].V.^. P.s. n.,. P X!AB T. P x!AB M. P !dAB Bw. c.$P !AB FZ.|.M. P "AB Fw. P #AB FH.P h$9AB `.I.$P $AB Ek.].X.(P %AB FM.C.x. P &vAB AV. R. P $'aAB Fm. P '_AB Fk. P 'AB E}.M. P ) AB E}.M. P *AB Fc. P ,AB Fz. P L.IAB BL.s. P .$AB FH.(P 0zAB I^.[. S. P 84AB F].P 6eAB P 47AAB $P x7AB A`.J.H.P (9AH DW.,P 9AB F_.. P.. P <AB FU. P \>dAB BY.A.$P >'AB Fw.M. P @AB Fe.P AGAB DB.P AAB Dk.P BZAB f. P LCxAB Bq.r. P CAB j.{.P.P LDAB Eg.P E%AB [.,P (EAB Fe.y.Z.X.H.(P FwAB Fl.x.T.8P lHAB Fl..Y.d.I.J.H. T.P L AB BZ.(P MAB IZ.c. d.,P 0P(AB FZ..H.M.E.,P XQAB BZ.{.H.M.N.P RMAB EZ. P lSzAB ].C.M.(P S/AB FZ..U.E.P UAB DZ.$P UAB HZ.. [. P WzAB ].C.M.4P (XAB IZ.r. ..Q.A. _.(P ZAB FE.. W.(P [AB Fc.G. ]. P t\AB AZ.t. P ]AB FY.8P ^qAB Io.. l.R. .. l.$P PcAB j.T.V.I.b.P cAB P dAB P dAB P dAB  P dTAB ].R.[.P ld2AB e.P d2AB e. P dAB z.T.O.(P eAB FD..e.(P dg-AB FC..k.P hAB P hXAB Ba. P iAB FG.P jAB In.. . . H.. O.#. i.. U.}.G. }.f. ..  .. S.. U.g. O.p. U.g. O..W.P ăAB Ar. P `iAB FG. P ̅AB Fv.@P x~AB If.:. I.. [.0Y.. O.. P AB ].P lAB Hc.P AB ]. P t3AB In.P oAB H[. P AB FZ. P ̒ AB FZ.P ؖAB ]. P tiAB F|.(P cAB F[._.T. P DcAB A\.V. P AB Fh. P xAB Fg. P D}AB Fh. P ĞAB o.X. j.P AB V. g.P AB o.P AB o.P AB o. P tAB o.m.0q.P XAB k. P AB o.X. j. P AB o.X. j. P |AB o.X. j.P DAB k.P ئhAB l. P @AB o.m.0q. P $AB o.m.0q. P AB o.m.0q.P AB k. P AB o.X. j. P HAB o.m.0q. P ,AB o.m.0q. P AB o.m.0q.P AB k.P AB k.P AB k.P AB k.| 4MAB @.MAB @.԰AB M.9AB DM.(NAB v. x6AG G.$AB ID.d.C.tAB FO.. T.[. P.a.P.R. T.d. P.m..}. D.T.[.a. }.. ~.S.V..W.[. A.S.X.t. A.S.X.t. A.S.U.`.M.,8AB . Q.M.v. }.K. }.TuAB IM.$̾AB Bt.l.\.uAB IY.$`AB Ed.z. }.$X|AB B@.T. T.$AB Fv.[.R.8AG k. AB FK.<KAB A].AB DT.0 AB FI.L.W.U.N.}.H.,~AB FG.U.N.s.H.(4AB FB.{. }.5AB BO.P,AB BO.|AB Ay.AB F.L.AB Ay.AB F.L. oAB Fe.$,AB L.[. A.U.$AB D`.[. }.|  "AB B@. T. "KAB ADZ."5AB h.$"SAB BW.L.^.("dEAB E\.I.H.I."]AB As.$" xAB I^.h.\."vAB Ir. "jAB Fv. "hjAB Fv."AB Aj.|  L$AG G[.L$AB c.| $t AB $yAB BK.$gAB T.$hAB M.$GAB  $OAB F^. $LAB FZ.4$hAB F?..W.k..n. $]AB Fj.$$AB k.w.C.J.0$AB L.E._.E.W.E.[.E.n. $[AB I.E.h.E.$$AG D[.y. \.$$xAB DQ.G. H.L.$$AB Dl.F. H.L.$$AB DB.p. H.L.$TAB IL.E.o..P.H.c.X.}.[.Z.o.i..e.v.H.H.X.u.l.E.N.K.c.X.I..E.N.H.c.X.I..E.\.V.|.E. $AB F.d$.AB F.Q...Q.u.g.k...c.k.u.[.e.x.n.L.T. $AB BL.$AB Ap.$$0AB FK.M. $HAB A`.J.,$0\AB A0.^. b.o. e.| ((AB Fx.0V.y.M.,(AB FG.M.[.PX.| $d)AB B{.h.T. d)8}AB FK. d)AB FK.d)AB Q.d)PAB A_.d)PAB A_.d)HIAB AR.d)IAB AR. d);AB AY.Y. d)AB K.,d)4AB BJ.F.t.M.t.M. d)LuAB W.V.X. d)yAB W.V.[. d)@yAB W.V.\. d)AB [.V.d. d)AB [.V.d.$d)TAB W.k.M.G.j. d)AB W.\. O.M.(d)AB W.\. O.M.a.s.<d)AB FT.I.N. O.M..Q.I.^.[.Ld) XAB FT.I._.N. O.M..Y.X.t..I..t.d) JAB Aw.d)$ AB D_.d) AB D_.d),AB D_.d)AB D_.(d)4AB [.V.h.a. O.M.(d)AB [.V.h.a. O.M.(d)AB [.V.Y.`. O.M.(d)dAB [.V.Y.`. O.M.d)MAB i.d)d9AB S.d)EAB _.d)QAB l.d)<IAB \. d)fAB K. j. d)AB M. O.M.(d)AB W.I.N. `.G.W.(d)@AB W.I.N. [.H.W.(d)AB W.I.N. ].J.W.(d)AB W.I.N. `.G.W. d)pyAB S.I.X. `. d)yAB S.I.X. `. d)hAB S.h. @.$d)AB Fk.k.f.(d)AB IA.s.f.d)\AB Ar.d)NAB F.0d)dAB DT.I.V..u.P.c.,d)$AB DY. P..u.w.c.,d)AB DY. P..u.{.c.(d)!AB DT..C.v.c.(d)#AB DT..~.B.c.(d)$AB DT..C.v.c.(d)(&AB DT..~.B.c.d)'5AB h.d)'5AB h. d)((AB Fe.d)(xAB Du.$d)0)AB ID..d)8+cAB Dy.0d)+AB FY. P.}.x.j.P.d)@-AAB ^. d)-AB Fc.$d)(.AB DT.E.[.(d)/(AB FY. P.l.M. d)0AB DT.a.`.(d)1SAB FT..t.,d)2DAB ET.I.V..t.,d),4AB FT.T. P..t.(d)5nAB FY. P..~.4d)`7RAB FT.Z.Q.r. Z.i. o.|  d49bAB Br.f.(d4:/AB F.V.S.d4H<BAB _. d4<AB FB.$d4=AB Fv.J.(d4l?gAB Fu.J.M.J. d4@oAB Cw. d4DAoAB Cw. d4A+AB FH.d4ACAB | 5$BnAB A`. 5BrAB F_.5C6AB K5@CAB c.5CAB .5DAB u.5tEAB y.5$FXAB t.$5|F^AB I}.. 5IAB FL.| ,7J AB ,7J`AB F,7KAB G,7KAB F,7MAB B,7PNAB F ,7AB GX.0H:AB Fq.[.`.H.T.P.G. H:EAB F].,H:AB F^.l. S.e. $H:AB Fh.0^.h.4H:KAB FE.q. S..J.N. S. H:̞?AB Ff.TH: AB Fl.g.E.W.W.c.H.h.X.H.w.J.U.H.{. S.a.K.\H:AB Bc.h.V.V.b.H.e.[.H.w.J.h.N.O. S. S.l. S.N.H..a.<H:ܥ5AB Bc.h.P.N.S.H.e.X.}.^.J. H:AB Fa.H:@AB R. H:اAB Fs. H:AB Fm.H:AB Ac.0H:AB BY.S.\.H.T.P.G.H:|AB CH:1AB A[.H:LAB N.HH:dAB F}.Y. B._. T. L.K.u. `.L.~. V.K.8H:,HAB B[.d. D.^. M.k. H.N.^. O.$H:tAB N.S.Z.B.| 0@<AB Ae.0@AB Aa.0@AB 0@AB 0@AB 0@ıAB B.0@3AB E.0@в-AB E.0@'AB E.0@(!AB E.0@LAB E.0@h?AB  0@9AB Aw.X.R.P0@pAB AHo.Y.O.N.O. M.K. V.O. M.K.I. M.K.V.P. M. 0@TgAB F{.40@AB Fg.W.M.C.H.F.H.00@DdAB Fg.H.X.H..H.@0@AB F\.i.H..O.v.W.U.H.1.,0@AB F].p.c.H.c. 0@AB A^.H.0@,AB P.| HCLxAB DD.| P|CAB F..i.t.a.T.H.B. S.U.S.^. .J.|CAB H. |CsAB GX.a.U. |CDiAB BT.K.| HD!AQ  HDbAB F`.HD8)AB HDdAB R. HDfAB IF.HDXAB dHD AB Bo..j.k.Q.|.t.p.o.].c.m.`.x.n..d..d.l.^.HD( AB GU.| E4AB G.@EH_AB Fg.A.J.k.I.J.l.P.V.P.\.J.ExAB Bb.E +AB EL<AB EMAB E^AB PE8 AB AHF..T.. .. .. ~.. D.m. . EvAB AV._.W.| FL,AB L.Fx1AB d.F?AB AW.FUAB o.FDAB E|. FKAB Ib.HF@CAB IZ. . U.x. I.\. I.B.O.b. I.E.M. FRAB F!.F AB Ig..O.y.[.}.S.{. I.i. I.T.[.i. I.. I.T.T.S. U.{. I.[.T.M. U.{. I.J.O.g. I. F`iAB BX.~.dFAB I[.,.U. [.~.0I.o.Z..0I.x.Z..0I.x.Z..0I..K.q.[.l. P.I.[.l. P.@.Z..0I.s.K.q.[.l. P.!.K..Z..0I.x.Z..0I.x.Z.}.0I...^. I.J.Z.^. I.J.Z.^. I.u.Z.X.0I._.Z.j. O.J.Z.|.0O.J.Z.|.0O.J.Z.|.0O.t.Z.j. O.g.U.e. O.G.K.y. k.R.K..| $PJ(cAB FV.e.U. PJ@)PAB  PJ)3AB BL.]. PJ)3AB BL.]. PJ)NAB E[.f. PJH*!AB DF.O. PJl*3AB BL.]. PJ*BAB EU.`. PJ*BAB EU.`. PJ(+BAB EU.`. PJl+!AB DF.O.PJ+ AB A.PJ+ AB A. PJ+NAB E[.f. PJ+NAB E[.f. PJH,NAB E[.f.$PJ,ZAB FF.F. PJ,BAB EU.`. PJ8-NAB E[.f. PJ-NAB E[.f. PJ-NAB E[.f. PJ(.!AB DF.O. PJL.0AB BL.Z. PJ|.$AB DF.R.| M.AB H.M/7AB j.M/7AB j.M 07AB j.MD0MAB o.M06AB  M0AB FV.M1VAB BG. M 24AB DD._. MT2|AB BH._. M2]AB DE.M03FAB DMx32AB BK.M30AB h.M3.AB  M 4#AB FD.M05PAB BG.M5*AB DD. M5AB FE.M6AB E.Ml7BAH EM7*AB DD.M7AG DL.Mh8 AB Mt8AB E.M9BAH EM9*AB DD.$M9AB AX.q. U.M: AB M:^AB H.MP<IAH EM<*AB DD.$M<RAB AX.h. v.M> AB M(>eAB DE.M>FAB DM>2AB BK.| (R ?[AB BI.(Rh?%AB Y.(R?[AB BI.(R?%AB Y.(R@[AB BI.(Rp@%AB Y.(R@[AB BI.(R@%AB Y.(RA[AB BI.(RxA%AB Y.(RA[AB BI.(RA%AB Y.(R$B[AB BI.(RB%AB Y.(RB[AB BI.(RC%AB Y.(R,C[AB BI.(RC%AB Y.(RC[AB BI.(R DAB S.$(R,DxAB H.E.M.0M.I.$(RDdAB BI.@.M.(RE%AB Y.$(R0EdAB BI.@.M.(RE%AB Y.$(REdAB BI.@.M.(R F%AB Y.$(RHFdAB BI.@.M.(RF%AB Y.$(RFdAB BI.@.M.(R8G%AB Y.$(R`GdAB BI.@.M.(RG%AB Y.D(RGAB GF.e. J.@. J.@. J.^. R.s. .(RK AB (RK AB H(RLAB Gd.{. O.s.L.o.z.U. T.Z. T.Z. T.Z. T.(RP6AB i.(RPGAB F (RQ!AB H.E.o.4(R4RAB Fg.h.d.V.H.E.V.(RUAB H.. (RlWAB E.$(RXXAB F].W.P0(R(YhAB F_.A.N.I.[. (R]AB AD..0(Rd^iAB DP.Q._.M.S.m. m.(R_"AB U.(R_AB (R `AB I.$(R`AB GX.P. W.|  Y`aAB  Yxa7AG E Ya=AB BY. Ya*AH 4 YbAB FM.n. U.b. z.y. @.$ YcAB DS.[. [. Yd AB  Yd AB  Yd AB  Yd AB  Yd AB  YdKAB  YeAB  Y0eAB  YDeAB  YXeAB  Yle7AB AX. Ye/AB A[. Ye AB O. Ye)AB _. Y f;AB Ad. Y\fMAB Av.$ YfAB Fh. `.@ YgAB FW.k. Q.e. .. Q.k. I.. 0 YdkWAB FX.. P.M. }.0 YniAB If..N.Z.0^. Y(ucAB DL.q. Z.$ YuAB BZ.v.S. YvaAB AO.l.I.0 YvAB Bk.I.a.N.r.O. Y`x5AB h. Yx.AB X.N. YxAB  Yx AB  Yx AB  Yx AB  Yx AB  YyAB FL. YzAB Dd.i.  Y{aAB c.`.  Y|AB Dd. Y}@AB F. Y@~KAB Bm. Y~CAB i. Y~GAB A]. YAAB Ai. Y\HAB Ap. Y AB  Y AB  YAB  Y AB  YAB k. Yt7AB j.  Y AB  YAB  ỲAB  Y AB  YAB  Y AB  YAB ( Y0AB Fd.. P.0 YAB FI.. K.. V.$ YxAB Fe.U.d. Y4hAB A.0_. | a AB aHAB H.a0AB Ba AB F a̋zAB Fl.aHAB F,aԎAB Fz.a.0[. E.0Z. ajAB FK.4a$AB FT..0\.P.h. N.N.M.aNAB BK.da8AB FK..0d.m.P.h. N.N.M.. Q.7.0N.p. B.d.0]. Z.I. .a|AB DI.ahDAB DI.aDAB DI.aAB a AB a0KAB a| AB |  caAB AS.v.H.c7AB U.c(7AB U.c`AB E. ctAB I.H.].cAB U.f. $cAB Fp.o.0c. c\AB DD.~. coAB U.,chAB HE.r.X. . T.$cpkAB BU.r.U.$cܦkAB BX.o.U.|  \eHAB `.R.g.4\e0AB IQ. h..k.x.E. \eqAB I.(\e(AB Ia.L.N.$\e]AB Fr.].| DftAB Ay.Df0AB DfHAB $Df`AB F.f.R.(DfAB Fo.g. R.| fJAB B f AB FE. f$SAB FD.fx+AB DC. f7AB GT. O.8fܵAB BW.e.V. S. Y. S.. S.m.~.f|AB B.fTAB  fdAB IJ.(fAB Fm.x.I. ft]AB GL.H. fAB Ft.fAB U.fAB Eh.f"AB S. fiAB BT.K.| @i(|AB BN.@ilAB H.@ipAB H.@i|AB BH.@ipAB H.@ilxAB H.@ixAB H.@i\tAB H. @i=AB Ar.a.R.| `j^AB `jp:AB (`jt AB Fx.#. O.(`j {AB B]. O.q. O.| (jAB Fz.]. T.,jLAB IJ.q. T.. T.(jAB Fp. T.. T.| kAB  kAB BE.`kxAB F.=.h.. Y.. `.=. .Pt.h.Pt. Z.h. H.h. t.k$4AB [. kX7AB AT.U.|  leAB Ff. leAB Fc. l`eAB Fc.l!AQ lAB R.lxfAB GF.@lxAB A..B.W.i.i.`.V.i..~.lX! AB HY.|  md"WAB F_. m"@AB FG.m#"AB K. m $WAB F_.$mx$AB BT..O. m %AB FL.$m&AB BT..N.,m'QAB FQ..R.p.O.m(+AB ^.m )AB $m()AB F@. g.$m)VAB F\.". |  o,+l AB F.o6AB Hi.op7AB H.|  o7eAB Fc.o7%FD o8AB R.o8LAB I.$o8]AB AZ.{.w.linebufendshort unsigned intunsigned char_IO_FILEnotationTypeinitFiletimevalgargcpopMasterStacklastchostNamePtrframelong long int__fd_maskstderratoi__endptrpushEntryStack_cur_columnflushRestOfLinestmp__jmpbufstartValidcharnohptrentry_tblarg_declareEDEN__pad1__pad2gargvinterrupteddefine_level_IO_read_ptr_markersrcsidterminatefullnamesa_init_sasami__s2_len_unused2Inp_Dev_Savereset_pseudo_machine_statuswarning_shortbufoutpemalloc_pprintUsagepostexecNEWOTHERedenCmdTcl_EvalEC_IO_read_baseuDatumeden_interrupt_handlerTopEntryStacknitems__time_t__s1_IO_save_endeden_backticks_dependency_hack_old_offset_IO_write_basemasterStackSizetclCommand__off_t_IO_lock_tsetprompttoAppend_IO_markerILIBTBLhigherPriorityerrorfTcl_Interpinstmain.cTcl_DStringsymptr_queueSCOUT__nptrSASAMIblibtblsymptr_QUEUEfreeheapentry_ptrnextcclientData__suseconds_tyylexFrameDONALDerrorflag_IO_buf_basesavepclocal_declareHandleOflastBeepTimestypeerrorCompleteappendHist_IO_write_ptrnautoTopMasterStack__saved_maskprognameoptindtimedEventsEnablederrorMessagesetHostNameinstall_custom_variables__resultswitch_level_sbuf_flags2setLibLocationnotationTypeToString_fileno__jmp_buf_tag__jmp_bufstrtolerrorsbufstartupargcstartupargvinit_edenpopEntryStacktopEntryStackeden_notice_undef_referencesocketPortret_callyyparselibLocationcompiler_flagBLIBTBLlinebufsizestackpinput_devicenoticef_chain/dcs/emp/ashley/workingcopies/EDEN-recent/EdenInstshort intspaceAvlinit_lexargerrerealloc_pinit_LocalVarList_IO_save_base__gnuc_va_listStateOf__sigset_twarningfexecuteinit_LSDagentListinitPtrStuff_IO_buf_endGNU C 3.2.3 20030502 (Red Hat Linux 3.2.3-49)__d0fdset__off64_tEXinitautocalctimeoutstmpoutrun_init_locktv_usec_IO_write_endInput_DevicesargpprintVersionheadclearMasterStacklastControlCTimeargProcessedusedArgnewlineerrorLinecompiler_flagsQloc__valstaticSpaceinit_donaldyyerrormarkedfreeProcentryStackSizestdinstartupcwderrorContentffileincheckRunSetilibtbleden_error_index_rangeeveryoneInp_DevpropagateTypetopMasterStackfd_setoptargretpcuser_tracereset_compiler_statusARCAwouldBlock_IO_backup_base__fds_bits__baselong long unsigned intControl_CclearEntryStackloginnameloginnamePtrsetyyparseinitOracleOfisServerEveryOneAllowedsynchronizeINTERNALrlibtblinit_scout__s1_lensetTimerpushMasterStackinterpntmpprocmacroRLIBTBLparserettoPutEnv_nextloop_levelDebuginitStrhostNameformulainerrorfretcallargIntv_sec_IO_read_end_vtable_offsetinitcode__mask_was_savedlocation__d1printRunSetgetActionclearRunSetaddActionrunset.crmActioninitRunSetadd_agent_QMOVE_symptr_Qmarkrcsid3ObsNameappend_NoAgentNameSEARCH_agententry_queueQdsthashtablercsid4rcsid5hashindexdispatchsymbol.cdelete_agent_Qentry_QUEUEcont_qDELETE_symptr_ATOMadd_local_variableSEARCH_entrylookup_localcurrentNotationSEARCH_symptrMOVE_agent_QDELETE_agent_ATOMDELETE_entry_ATOMMOVE_entry_Qprintlocalappend_agentNamebreak_qsearch_localbuiltin_ft_checksearch_agent_Qinsert_level_markerinstallGlobalUndefdelete_local_levelQsrcinstallyytnameyydefaultyyvs1yypgotogarbageyyvsyyprhsinEVALyy_parse_inittbeginyystacksizeyyvalyyreduceusableyyssayycharnUsableyysspyydebugyyerrlabclearGarbageyydefactUsefulGarbageyyss1yylvalnGarbageyyerrlab1yacc.cyyvsayyvspyynewstatedefnonlyyypactsettoyyr2incGarbageLevelgarbageLevelyynerrsunmarkGarbageyycheckyydefgotoyylenyyerrdefaultyytranslateyyrhsyytabledecGarbageLevelyyabortlabYYSTYPEyyerrstatusyychar1yyfree_stacksMAXGARBAGEnargyyr1textptryyacceptlabyy_token_readyyrlineMAXUSABLEtextcodeyybackupyyssssp1yyerrpopyyerrhandleyystatereflectsecondsed_sasami_material_textureed_sasami_set_bgcolourusbhidreadisNotYetDefinedeval_formula_queuefullUpdatectos__ssize_tcheckAgencyinput_eventdumpedenPlotShapec_cctm_yearipopenpush_text__blkcnt_ted_sasami_viewportfilenameSendServer_eden_internal_dirnamelskipindicesstrtodst_gidpropagate_agencydefnReferpushlistvp_listtm_minbuildAcceptTablerawread_eden_internal_cwdbuiltin.cnoOfscreenpropagateAgencyptsnameSendOtherClientsmakearrst_ctimadd_ScoutScreenlastBoxtlocmasternameRemoverenewObsmodesfinetimetm_monsegided_sasami_poly_colourwritefdstotalboxNametypenosearchKeyreplaceRefsnameofrawwriteviewOptionstm_zonesymcmpreal_pcreprinthashed_sasami_light_directionalnewStringBufst_modearrayfdreadyed_sasami_vertexc_cflagtz_dsttimetemppropagateAgency1attrPtrscatMaxRefinttime__statbufexec_stringf_eofreplaceKeynotationPushPopacceptableed_sasami_object_polyed_sasami_light_attenuationerroffsetsaveHeapPtred_sasami_material_ambientslengthed_sasami_setshowaxesgrantptunlockpted_sasami_object_rotresied_sasami_material_diffuseregreplaceSendCliented_sasami_light_specular__ino_tsscan_fst_rdevusbhidopenfget_stringwinfotkdefine1st_nlinkspeed_tcc_tst_inotz_minuteswestfget_chartm_mday__pathreceive_messageget_msgqed_sasami_poly_materialexceptfdsisdigitatofshow_not_yet_definedlookAttrResultpointernboxed_sasami_object_postermioslasted_sasami_object_scalesubstring_lengthintQst_uidtm_wdayremove_Obs_Qfile_statusbhidcloserskiplastMasterpropagateerrorSWwinNotcflag_tsendServersymtbl2listreallocDone_eden_internal_cdmilliput_environrawserialclosereplacedE_StringRemaindiscarduser_errorreadfdserrorInfoc_ispeedtm_ydaylimitpipe_processWidgetMaped_sasami_light_enabledisUserDefinederr_msgwritelnUndefDatumrequestedLDisplayScreensubstroracle_checkst_blocksremoveAgency__unused4__unused5reallocStringBufbtreeclientNamelcatst_sizedd_debugnewsubjectb_writeaddAgencyerror_noforgetoldrefc_lflagqueryObsrefer_to__dev_tsubstring_starttm_hour__uid_ted_sasami_object_visiblesymboltextinpdevlinenonext_reftimespecinit_ScoutScreenListst_blksizemaxbytesLSDtype__nlink_ttm_isdsted_sasami_light_ambiented_sasami_light_diffuseserverNamecommandoWinInfolookAttr_eden_internal_basenameclocklistlentypenameviewport_namec_oflagmyHeapipclosetzoneE_Disp2PStv_nsecst_atiminpdevnamest_devexec_fileget_environtimezoneremove_msgqed_sasami_material_speculargetcharschedule_parents_ofE_tcltouched_sasami_poly_tex_vertexovectorpushlist1st_mtimscreenNamerawserialreadtm_gmtoffsearch_ScoutScreenQpackparaprintstdoutslavenewrefapply__blksize_tslavenamec_ospeedfdesScoutScreen_ATOMsendClienttm_sectodoed_sasami_light_posadd_Obs_Qb_exitviewport_listed_sasami_poly_geom_vertexrawserialopenfscan_ftkdefineDatumrcsid2c_linesegPtrselectread_bytesprintc_iflagpipefds__mode_tnoOfoScreenbackgndunget_charfreeStringBufst_debugerror_codesend_message__gid_tgettimefromBtreessptrrealrandsublistusagesymboldetailsentScriptstkdefineregmatchevalDatumclear_IDlistcode_evaloracle_check1saveprogsave_IDlisthandle_check1related_by_code_runtimelhsoprogpresume_pointstack_underflow_errcode_related_by_runtimelhscode_related_byinsttblprog_startlvaluep_enddisAsscode.cstack_overflow_errmustaddrcall_libdefpINSTTBLsavetextcall_floatrelated_by_codecodeswitchcode_definition_runtimelhscode_definitionhandle_checkprog_endchange_targetstriggeredActionsplistrefer_byp_beginaddentrycheckokchange_sourcesaction_listlockvalueeagerinvoke_action_queuereset_evaleval.cmark_changedscheduleresetLockchangeformula_listgetheapheap.csecondCagentTypefirstCsa_scriptgetAgentNamescoutScreenInitOpeneddd_scriptkeywordsappend_charscoutScreenInitOpenlsd_lexpeekscoutScreenInitOpenSymst_scriptnew_yytextkeyintranstabsetHighPriorsa_inputdd_lexyylengis_floatskip_one_line_commentnumber_tokenkeyword_tablest_lexbuiltinFsis_hexexecstrinPrefixskip_percent_commenttempyytextmustintnotationmaxScriptkvalmuststrbackslashmakedatumkeyword_tokenmulti_symbol_tokenchangeNotationappend_linebufbuiltinF_tablebuffer_overflowdirectionnotationSwitchnotationGetskip_commentid_tokenlib.cinsertsize1mustchardec_asgnconcatpushintlocaladdrpre_decswitchcodeconstpushcurrValuewheremustlistaddress_errornoupdatenewdatumdummyqueryprog_beginnewStrindexcalcnewhdatjpnfjpntpopdlistsizepost_incneed_rwvNullListsize2assignmakelisttempStrdatacmppre_incfreedatumlazy_notout_of_range_errorpushUNDEFnAppendlookup_addressUPDATEmachine.cpost_decappendaddIDbitorcnv_formula_to_rwvdivideget2numcnv_2_boolbitandgetvalueresetupdateinc_asgnconcatoptddupSourceslastNullInIDlistcheckok2Symbolrefer.cprintlistSourceTargetscheckok1t_floatdatatypedynbuft_intt_supertype.ct_strt_str1dynbufstrlendynbufsizebravaluecondrefend_match_ptriendterminatorstart_patternoptptreptrboptchangedrepeat_maxskipbytescheck_escapeis_counted_repeatEND_OPTIONSoldlinkoffsetstart_bitsrefnumctypesbralinkpcre_freestart_bracketusing_temporary_offsetsBOOLoptsetgreedy_defaultcompile_blocknotbolreq_charunsetduplengthtop_backreffind_fixedlengthminvalsave_offset1whatlookbehindcur_is_wordprev_is_wordisclassutf8check_posix_syntaxis_anchoredend_offset_topEND_REPEAToffset_vectornegate_classoffset_overflowread_repeat_countsoldptrmatch_refposix_class_maps/dcs/emp/ashley/workingcopies/EDEN-recent/pcre-3.9temp_optionsoffset_maxbracket_lengthclass_lastcharis_startlinebranchcountlitspcre_mallocnewptrbREPEATCHARsubreqcharstudy_datamaxpuscharerrorptrFAILEDminimizelast_branchPCRE_ERROR_RETURNmaxvalbranch_newextraeptrblockbranch_extrastart_offsetecodeOUTPUT_SINGLE_REPEATocountoffsetcountgreedy_non_defaultptrptrerrorcodeprevreqcharexternal_retop_bracketreq_char2compile_regexbranchlengthstudystart_subjectNORMAL_CHARrep_minpcre_fullinfotaboffsetsave_ptrtempcodecompile_branchmatch_blockoffset_endpcre.csaved_eptrexternal_extrasave_offset2save_offset3repeat_minstacksaverep_maxbracountoriginal_imsstart_matchendonlybracketspreviouscodeptrfind_firstcharbrastackptrsubcountlitssaveptrctypebrastacktempptrscodecbitsoptstopmagic_numberiptrfirst_significant_coderunlengthmatch_dataSINGLE_CHARACTERpcre_versionnoteolpcre_compilenotemptyreal_pcre_extracheck_posix_nameoldoptionsposix_name_lengthsnewoptionsreq_char_ptrpcre_infocondcountlocal_negaterepeat_typeerroroffsetpcre_execresetcountREPEATTYPEminpbralenstackketoffsetreverse_countbranchreqcharfirst_charposix_classREPEATNOTCHARclass_charcountcompile_dataoptbitpcre_default_tablesyieldend_subjectop_typeposix_namescustom.c/dcs/emp/ashley/workingcopies/EDEN-recent/Miscsymtabeden_deletex_delete_attrbackindxlook_up_treechange_contextx_delete_openshaperestore_contextDeclareGraphdumpdtreeeden_declaredumpDonaldDefinitionid_lendonald_full_namefreeTreewithinHandleresume_contextbackcontextresume_scopelasttypex_draw_actisGraphsym_prevexpr_name__retvalchange_promptbackupIndxSizebackupIndxprint_all_symbolsneednlderiveddumpbufMaxBackupIndx/dcs/emp/ashley/workingcopies/EDEN-recent/DonaldbackupContextSizedeclare_openshapesymbol_searchinitbufx_delete_graphprompt_lendumpDonaldDeclarationdeclare_actionNORMALnew_symbolfree_symbolnode4print_symbol_tablemap_token_to_namedumpdonalddd_promptDeclarebackup_contextlastmasterx_default_attrexpr_to_donald_nameeden_full_namechange_scope2look_upreset_contextindentisGraphAttrx_default_graphlook_prevcontext_search__leninsert_nlchange_scopeexpr_to_eden_nameGlobalSymbolsbackupContextMaxBackupContextDeletex_delete_actlastvpopcodecopyTreeorigprint_treetempnamedtree0dtree2dtree3CommaglevelnaryexprNamecheckDonaldExprOracleop_stringexpr2Rparendefnametree.cis_openshapetreeListSizeexpr1DefineappendTreeListdump_strop_strdumpbufsizedtree1extendbufdtree4inPrintTreeis_shapeis_graphDefineFuncpropagateDonaldDefDonaldExprOracleCheckTopTreeListstagegetmemutility.cUnclassifiedparser.cdd_errorStackUnderflowUndeclareIDUndefinedIDTypeMismatchno_iderrorcodesdd_nerrsdon_errwithinNameRedeclareIDNotOpenshapeOrGraphImpossibleIdExprUnmatchappendEdenFuncExpectdd_appAgentNameOutOfMemorySyntaxErrordd_parsedd_charerrorstringdd_lvalerrStrdd_restartIdListExpectStackOverflowDonaldAppAgentNamegtargettranslationenvcontentsmap_name_to_tokenisOpenshapetokenizedd_lengcurlyCountnew_dd_textdd_lex.caction_ATypeClashcheck_children_typesemantic_3check_idsemantic_1semantic_2semantic_4check.ccount_exprcount_idtexcoordssa_parsestringinwordcolourinfocurrentpolynodetailsa_errornegativesa_r_bgcoloursa_inputstringcurrentobjectnameobjectinfoptrsa_load_mtlnumargscoordptrcurrentmaterialidscopysa_getpolyUIDcoordsa_exit_trapindecimalsa_r_bppsa_eden_initialised/dcs/emp/ashley/workingcopies/EDEN-recent/Sasamicvertexsa_skiplinesa_load_objvertexuidexponentobjfilecurrentmaterialtolowersargdecimalcountgeometryidatasa_outputcurrentobjectnewmaterialsa_r_xsizepoly_idsa_r_showaxestexvertexliststrtodoubleatexit_uidlistdargsa_addescapesobjectinfoobjmateriallistcolourinfoptracceptedsa_structures_init_polyinfosa_eden_inittexture_vertex_numbersa_r_ysizepolygon_numbercurrentobjectidtexturefilelightinfo_vertexinfomaterialinfofunctions.cGLintlightinfoptrtextureneedsloadingmaterialinfoptrsa_dumpobjectssa_addobjectsa_finduidlistnewuidlistsa_addpolynewobjsa_dumplightssa_addlightsa_findlistfoundvuidcurrentlistsa_polyuidcountersa_getvertexsa_getfirstmaterialsa_getfirstobjectsa_dumppolysfirstpolysa_index_from_vUIDsa_clear_vertexinfostoresa_addmaterialsa_dumpmaterialssa_vertexuidcountersa_getlistnewlistsa_getuidlistfoundpuidsa_findlightsa_getmaterialsa_getobjectsa_clear_polyinfostoresa_uidcountersa_getfirstlightsa_findpolysa_adduidlistcurrentlightstartindexsa_addvertexcurrentuidsa_addlistvertexinfostoresizesa_getlightsa_findobjectstructures.csa_findmaterialsa_getvertexUIDsa_dumpverticessa_getUIDpolyinfostoresizeoldsizecurrentuidlistnewlightsa_findvertexsa_index_from_pUIDcurrentobjsa_getpolysetFrustumNearsa_camera_frustum_rightgetXscalesa_togl_destroyfuncsa_r_setupcameraGLfloatcurrentsa_def_light_diffusesa_camera_frustum_bottommat_shinesetYscalecurrentidsa_getandbindnewtexturesa_camera_frustum_fargetFrustumNearpolylistsa_camera_frustum_topsa_def_light_pos1currentvertexidsetYrotsa_togl_createfuncgetFrustumTopsetRotThenTranspngInfogetXrotgetFrustumLeftsetZposcurrentpolyidgetYscalecurrenttexcoordidrender.csa_r_render_objectssetFrustumBottomsa_r_render_axessa_camera_rotthentranslastRenderTimesetFrustumFarlastRenderTimeValidsetXposglobToglsa_get_face_normal_from_uid_listsa_r_inittimeSinceLastsetXrotsa_r_setshowaxessetGlFrustumgetFrustumFarsetZscalesetFrustumTopgetYrotsa_def_light_pos2getZposgetYpospolymatsa_r_opendisplaysetFrustumRightcurrentRenderTimesa_def_light_specularmat_specgetXpossa_camera_frustum_nearsa_get_face_normalsa_def_light_ambientsa_camera_possa_r_rendergetFrustumRightsetYposgetFrustumBottomgetZrottogl_errorgetZscalesa_r_closedisplaysa_r_initialisedsetFrustumLeftwasinitialisedsa_camera_frustum_leftsa_r_maxlightsgetRotThenTranssetZrotsa_r_render_object_polyssa_r_updatemat_diffmat_ambsa_camera_scalelightparamssa_r_resizeviewporttoglsetXscalesa_loadtexturesa_camera_rotDepthsa_r_setuplightingdbl_flagTcl_ObjoldAlphaFlagstaticBucketsOverlayWindowoldAuxNumberXPointertypePtrvalue_maskattrib_listoneWordValueTogl_WorldChangedTogl_DisplayFuncTogl_PostOverlayRedisplaynew_itemoldDepthSizexcirculateTogl_SetReshapeFuncfreeIntRepProcmajor_codeDefaultDestroyProcnextEntryPtrprivate_dataxpropertyTogl_TimerFuncXNoExposeEventXCirculateRequestEventmwidthDefaultOverlayDisplayProcStereoFlagTogl_SetCreateFuncoldWidthXCreateWindowEventTk_CursorXColormapEventred_maskeyeDistparentPtrfontnamemin_mapsoldRgbaFlagdescentOverlayTransparentPixelcmd_nameci_depthsTogl_Renderlsbfirstroot_input_maskXDestroyWindowEventTogl_HeightTogl_DumpToEpsFilerebuildSizexreparentxgravityXSelectionRequestEventnameUidTogl_TkWinindex_bitswhite_pixelswapbytesabovexvisibilityGLvoidTogl_InitTogl_HideOverlayfree_privateTk_OptionParseProcfontbaseTogl_GetClientDatagrabPixelsattemptgreen_multbit_gravityTogl_ShowOverlayXFontPropfontbaseAsTclObjectTogl_SetTimerFuncTkClassProcspatchLevelOverlayFlagx_rootTogl_SwapBuffersmax_bounds_XGColdRgbaGreenatomGLenumfontinfosame_screenmodalProcdo_not_propagate_maskTogl_ScreenNumbersave_under_XICTcl_Command_backing_pixelxconfigurexkeyGLuintshareWithmainwindummy10dummy12dummy13dummy14dummy15dummy16dummy17dummy18customPtreyeOffsetblue_maskShareListsiblingbackground_pixmapxmotionTogl_GetOverlayTransparentValueTcl_SetFromAnyProcXClientMessageEventinColorconfigSpecsEpsGreenMapwinPtrTkClassCreateProcxbuttonXButtonEventbits_per_rgboldAccumBlueTogl_EventProcTogl_WidtholdRgbaBluexresizerequestXCrossingEventoldHeightTogl_AllocColorOverlayxconfigurerequestTcl_UpdateStringProccmapSizemax_mapsoldRgbaRedXVisibilityEventDefaultDisplayProcsetFromAnyProcTogl_LoadBitmapFontoldAccumFlaggenerateEPSrequest_codebucketPtrskiprowsndepthsXSetWindowAttributesXCharStructprocsPtrresourceidmin_boundsTcl_ObjTypechangeslayerTcl_FreeInternalRepProcascentXStandardColormapdownShiftkillidwidgetCmdreqHeightTcl_CommandTk_Cursor_Togl_DestroyFuncbacking_planescmapXMapEventTkClassGeometryProcEpsMapSizeshareCtxextensionsdirectCtxbacking_storeXExposeEventdefValuesubwindowFindToglWithSameContextGlCtxsend_eventDefaultTimerProcXMotionEventdbl_flagsnumBucketsTogl_SetDestroyFuncxselectionrequestTogl_DisplayxcirculaterequestListCountserialnvisualstemplateTogl_ResetDefaultCallbacksXColorcard32bestmatchxanyXReparentEventdummy19Togl_CreateWindowtwoPtrValueXCirculateEventindex_sizexexposeTcl_FreeProcxgraphicsexposemap_entriesmax_byte1Togl_WidgetTogl_OverlayDisplayFuncrefCountcolormap_sizeoldDepthFlagFirstTimeTogl_MakeCurrentoldStencilSizeXKeymapEventTogl_FreeColorlongValueRemoveFromListinternalRepTogl_ColormapTogl_UnloadBitmapFontfirst_keycodeoldDoubleFlagXUnmapEventIndirectroot_depthTogl_SetDisplayFuncXMappingEventlbearingattsxclientdrawableVisInfoTogl_CmdreleaseTypeoldStencilFlagspecFlagsprintProcTk_Windowptr2Togl_ExistsOverlayTkClassModalProcgeometryProcrbearingXConfigureRequestEventdummy11standardCmapsdbClassTogl_SetColoreyeShiftDefaultClientDataTk_Window_Togl_TimerDrawableargvNameeventPtr_XExtDataTogl_AllocColoridentPrivateCmapFlagTogl_Configureget_rgb_colormapy_rootrowlengthkeyTypebase_pixelpathNameTcl_HashSearchdefault_gcvisinfobucketsdefault_charhp_cr_mapsnextPtrxcolormapxmaprequestTogl_Interpn_propertiesdummy1per_charOverlayUpdatePendingxdestroywindowxunmapdummy3Tcl_TimerTokenmajorTogl_Callbackxcolmin_char_or_byte2EpsBlueMapminorTogl_DestroyXWindowChangesTk_OptionPrintProcfrom_configureGLXContextdupIntRepProcborder_pixelXGravityEventmheightsubColorall_chars_existDefaultReshapeProccmd_procblue_maxTogl_FreeColorOverlayPixelFormatTogl_ClientDatadoubleValueownerTogl_IsMappedOverlaytimerHandlergreen_maskinstanceDataXSelectionClearEventxkeymapVisualIDAtomTk_ConfigSpec_XDisplaycursorxselectionclearis_hintclassUidkey_vectornextIndexTogl_CreateCommandxerrorblack_pixelXMapRequestEventToglCmdDeletedProcmax_char_or_byte2reqWidthXAnyEventexactevent_maskdbNameminor_codeTimerIntervalsave_undersred_multred_maxcreateProcListBaseTogl_CmdProcskippixelsXFocusChangeEventscrnumXErrorEventcurpixTcl_TimerToken_XKeyEventxfocusvisualidbitpixelFindTogloldSetGridoldAccumAlphadummy2dummy4dummy5dummy6dummy7dummy8dummy9message_typenoFaultXAllocColorTogl_ReshapeFuncTcl_DupInternalRepProcmindistxcreatewindowxnoexposeattributesOverlayCmaproot_visualuser_redrawCommandTableTogl_ScreentablePtrTogl_UseLayerVisualptr1ShareContextgreen_maxbackground_pixelXGraphicsExposeEventext_dataTogl_SetClientData_XEventTogl_CreateFuncXSelectionEventtogl.cEpsRedMapwin_gravityxmappingXFontStructparseProcnumEntriesPixmapXVisualInfoTogl_StereoFrustumctableTk_FakeWinAddToListupdateStringProcstack_modeborder_widthXResizeRequestEventClient_DataOverlayIsMappedrequestorXPropertyEventusing_mesaattrib_countfindProcTcl_HashEntryDefaultCreateProcTcl_HashTableoldAccumRedborder_pixmapoldAlphaSizeinternalBorderWidthTk_CustomOptionnumCmapsXConfigureEventxcrossingRenderOverlayNextblue_multscreenNumotherValuePtroverride_redirectTogl_IdentToglHeadOverlayCtxTogl_PostRedisplayTk_Uidmin_byte1alignmentoldAccumGreenxselectiontkwin__GLXcontextReccomponentsnum_textx_pixels_per_unitdither_indexpcal_X1pixel_depthheadersrgb_intentpalette_lookuppng_sPLT_tppngLoadRawFsecondusr_widthcheckForGammaEnvpng_color_8_structStencilRedpng_row_infoz_streamtext_lengthnum_prev_filtersvalidsave_buffernum_rowsint_x_whitepng_color_structzlib_window_bitspng_const_charprgb_to_gray_statusminfilterusr_bit_depthiwidthpng_error_ptrpng_unknown_chunk_twrapstpng_free_ptrskip_lengthint_y_redcompression_typepngSetViewingGammarow_pwrite_row_fnpng_time_structpcal_X0background_gammargb_to_gray_green_coeffpng_structpng_unknown_chunkcur_palettecallbackpcal_purposesave_buffer_sizeint_x_blueunknown_chunks_numpng_sPLT_tmmx_bitdepth_thresholdalloc_funcfrequencypng_colorppng_sPLT_entry_structiccp_compressionup_rowpngLoadFpng_infopy_pixels_per_unitgamma_16_to_1png_size_tuLongbig_row_bufsub_rowz_stream_schunk_namebackground_1Componentszlib_levelerror_fncolor_typeunpackzbuf_sizeendinfozallocio_ptrfree_funcHalfSizefillerscal_s_heightcurrent_text_ptrBytefpcal_typeoutput_flush_fnpng_unknown_chunkppng_uint_16pngSetStencilgammaEnvnum_transmagfilterdata2gammaExplicitalphaflush_rowspng_uint_32png_bytepintfmonthx_offsetunknown_chunkspng_voidppng_infopng_textpendppng_write_status_ptrrow_pointersscal_pixel_widthpng_color_8sig_bytespng_charpcurrent_textpng_colorcurrent_text_sizepng_structpfilter_typeint_y_greenpinfoBuild2DMipmapsStencilBluehistgamma_to_1free_meglpng.csignatureopaqueint_x_redpng_sPLT_entrypcurrent_text_leftmmx_rowbytes_thresholdint_x_greenadlerpng_read_status_ptrmem_ptrgamma_tablepng_color_16_structsig_bitpassscreen_gammaSetParamspng_user_chunk_ptrasm_flagsbackgroundscal_unituser_transform_channelspng_sPLT_structpngLoadpng_textpng_malloc_ptrStencilGreeninterlacedpng_row_info_structcolspng_uint_16ppcurrent_buffer_sizedo_filterphys_unit_typepngSetStandardOrientationfree_fnend_fngamma_from_1zstreamwrite_data_fnpng_uint_16ppush_lengthgrayglcomponentuser_transform_depthwrite_user_transform_fnsave_buffer_ptrrgb_to_gray_red_coeffstandardorientationtransformationsread_row_fnspare_byteusr_channelsGLubytescreenGammamalloc_fnidat_sizetotal_outmng_features_permittediccp_profiley_offsetgamma_16_tablepng_row_infopinfo_fnpng_text_structpng_color_16glformatpng_progressive_end_ptrpng_fixed_pointpng_bytepng_bytepppcal_unitspngRawInfotrans_valuesprocess_modeavail_inzbufsplt_palettes_numpng_info_structpaeth_rowBytecurrent_buffer_ptrscal_pixel_heightnext_outcurrent_bufferpng_progressive_row_ptrbackground_gamma_typemod_timepng_timeread_data_fnpcal_nparamsinv_filter_costsfileGammatotal_inResizetime_bufferreservedpcal_paramsheuristic_methodpngSetAlphaCallbackDefaultAlphaCallbackirowbytesnum_chunk_listprev_rowpng_user_transform_ptrMaxTextureSizeint_y_whiteinterlace_typepngBindFPalettemax_textSafeSizerow_numbericcp_proflenxlenpng_flush_ptrvoidpfsave_buffer_maxread_user_chunk_fnint_y_blueflush_distpngBindnext_inoffset_unit_typeavg_rowgamma_16_from_1png_rw_ptrpng_charppnum_paletteavail_outint_gammapng_progressive_info_ptrzfreezlib_strategyscal_s_widthuIntglColorTableEXTwarning_fnread_user_transform_fnExtSupportedminutemipmapinv_filter_weightspng_struct_defgamma_shiftpng_sPLT_entryinternal_statePalettedTexturesrgb_to_gray_blue_coeffzlib_methodpng_int_32data_typesplt_paletteszlib_mem_leveliccp_namenentriesviewingGammapngLoadRawwin32versionsasamiAvailcurrentAgentNamePtrcurrentAgentType__pid_tEXinitTclTcl_GlobalEvalECvariantcurrentAgentTypePtr__resevaluateCmdgotoCmdquitCmdtodoCmdwebSite/dcs/emp/ashley/workingcopies/EDEN-recent/EXrefreshCmdapplecurrentAgentNamerestartCmdmainWindowsvnversioncurrent_NotationTcl_AppInitevaluategetNotationclientVarNamesentDatanotnamecurScriptprompt_ondistributeotherNotationreadInstmtTypegetClientNamelabelLSDagentNameresetScriptscriptLeveldeleteScriptscript.cappendnEdennScriptBuffernewScriptbdtypedumpscoutautogen_proc_namefontlistsymscoutErrorStrscoutDefAgencyCheckdeclare_image_actioncheckScoutDefOracleuseOldTreepropagateScoutDeffgcolorbdcolorxmax/dcs/emp/ashley/workingcopies/EDEN-recent/ScoutbgcolorsymbolcmpsensitivepictalignclearTreeListprocClickNameWinStructxminlookUpborderymaxinstallIntVaredenStrnew_symyminpropagateScoutScrstr_treesym_treeinthonest_treedef_treewin_treefreetreescoutTypeprintdefjust_nameprintsymjustprint.cstoreSymScoutDefnstore.cprintStoreDefnstoreDefnst_parsesubstscout_errWinFieldst_nerrsst_restartst_errordefaultWindowst_lvalinitDefaultWindowsearch_fieldst_promptst_lex.csearch_constantst_lengnew_st_textsearch_tokenScoutAppAgentNameconstantstokensfieldsObs_queuedeclare_ObsQUEUEremove_ObsQUEUEprintObsadd_ObsQUEUEObs_QUEUEObs_ATOMoraclesearch_LSDagent_QLSDagent_queueadd_LSDagent_Qsearch_ObsQUEUELSDagent_QUEUEdumpLSDagentList.cdeclare_LSDagent/dcs/emp/ashley/workingcopies/EDEN-recent/LSDLAnameLSDagent_ATOMfirstObscurrent_LSDagentlsd_nerrslsd_errorlsd_charlsd_debuglsd_restartLSDErrorStrlsd_parseLSD_errlsd_lvallsd_textlsd_lex.cnotAgentlsd_leng0@O a     d B R B R  sUUUjYd4 7 )))))))))***THfIxIIfIkIII5KK,LCLpO%P*PP[[ \@\[[[[[[5egghregglljkjjiih"hhhijoBpklmnppnnz|}k}axl ,5[x<v<F|"'BGJs x3bh}S&hX$X :=I\H[^n 8q]e@T $ C  $ <7 I MXik+D[XMdw,@u#& "kr `"`k###w$##,%g%r%u%b'''$Aq''@$A'('<=;;; <g<<H=z=C5DDEXDDC5D,EJEXDcD$l$_^T$d&Y8C   9 31.6CWH0? $ < <qv  I @K4 TH%%|Dng P  L.symtab.strtab.shstrtab.interp.note.ABI-tag.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame.data.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_frame.debug_str.debug_ranges#(( 1HH7 Љ ?``$ Go(2To*pc ((+0l XX+H u3p3{XXDv(;(`;`{  7  75  l( m m m m8@ @rV# @r$ d{D;EQ@yWTd. p 0 g+*  9 @e" { I(HЉ`(X   X (; `;       @  !"|  * 8 K X( \T h ~     ; @ 3 t    x & 3  <" O _ pp sX  wd  { 4 5` 6 6 6 @ 3t x |     `N;O& PT&U$! X&&`Y&+Z64\h>`]6E_hM ` U m ] k s x ~ @          d `  6$'a '_   x7 (9 !\>d (@ 1e 8dg- ? $O 6Vă ``i k̅ t P 3  3   3 2p g h   O ` h ]   & , h4 G T[ jh T 0\ l    1 6\   N   3 3 x $,@ 486K`\ @pK }M PN  ,E`,MU`]\ k` sd x3 ~h 4 @l p 2 2 2 2 2 : : 1 1  8 2         d " f + X 4 : <  4D 4 N H_ W + b L< m M x ^ v    x  |        %  8 K  e  v     `a xa7 a= a* b dkW ; 4 le7 f; \fM  (uc ) g 5 u H ni Z v i 0u ` 0 va y  @;  J  0        & : K Z f t H 0   ̋z H Ԏ |  1 a 7 (7 ` t    Z  Z ( Z 2 Z < Z K Z Y Z  5a q o Z z Z  (  5     @[  5 \ h `[ X \ ` %\  \ j\ a\ P "   \  2 3 44 -m 3] @ 5= { g`} ` ~ ` ` @! `&` `+ 4 (> E (M  U  ]| k s x@m ~ n  5   m 0m (m ,m $m D  DC 2L V x] de te `e ( , 0 4   " xf H @ 7 0 d"W "@  $W ()  4     L@  ` H!  &  + 040 >@ 0Ep M 0U 0] k s x ~     ` p h l d D @   1T X \ ` 'd V 0t7e  8 " 8L 0:$ G 4# RA[ Zy ]Pc btW o@V-~T-@ B ȳ )V  6e سG ;*T 8Tu Gx S] [iT pA  d  &%  Lx   ?[ ` 3. V-'԰ : J >5n E(:,b vL.0 |.$ #  x x 0K M  (+B +  Z  "B[ ,,B = Q8^HlrDe d  U-6 U-Xhg\H h (+ &D .l =xJ$  N F% \$V-l \ mp7   x32 1S 8     (  <  ( =d Dȴ TF [LCx a49 h(l n) v ش L tE G  :   "61(rP ^PZ jp@% r {  $Bn > 0Ed h P I u H C `x5 d |  !d t @[ 'PG ;4M Q8^c gx! o x HL!  X|h8x| 'P<I Di A #%5SL5 \ȵhصyT    p D-`;@D- (:    %i 78VIpy Lt Q(V-[H#nXZ~(>e 'Q   h)3 xU` K U-S/ ( 3<B&T` o U-] Ğ _ E% R h m t\ ȶ   +  8d  G XA[ `ld2 jM o ضq`  H @  l   D \ 0) L ̒  C ! 1 ? E@ V-N k2] @ \t 5 p h 0h K  (IV-&  3v @ H8]= fHzP, @o C% t y )N X  A  )x~ 37% ?`X-H:D XU c<R qhxZ|    x  X!  p 0 Q! !4<NX) [H g\a z @ t ^ D '5 o 6 ȷ` ; ط"5* -, 9J >\ H  NMx  YK e,+l  o9' lSz 0x   { <*  X  4  h  xK - x  = 7* J dE ^ ` l F% }  P x  $S 06 X X! +N 0 G { !$ &!(d9!84F!DX-P!H[!c f!X:x! 24 ! !9 !H*! !h!! ! ! !xa",Z " '"y7"PA" G"! N"_" q"|"ؖ "X-P"- "(. "0w "̾ "d  "8] "ȸ"e "| #t8 #ظ##$ /#8-N D#$ L#h?% T#g#! r# {#.#z #E #0P( # ####Fd #*B #( $ $3 $d ($8A9$D L$ e$ q$J  ~$dH $ $(.! $ $H6$E% $X$ $ %0 % #%@~K 9%XX Z% v%h%xX%%  %%p~ %?[ % %8G% %7 %@&B% &ȹ0&D 5&c E&p] M&. [&l n&` {&Br &̘ &o &ع&̀ &lx &@v &HV-&@ &(X 'XQ 'd2 'K 3' 7' B' Q'Lu U' m' '6 'dK '̞? ' ) '@ 'D ' ( (t(l*3 2(+ ;(:^ G(x  R(" W(% a(< j(` r(( (d ( (_" ( ( ( (A( )()Dc #)^q .) F)8] V)PA f)(  n)HG?)| ). )XM)t )U )(c )V-) )$ *h* )*x5;*& K*lW ^*d k*0 {*l *+*@C *X ***L*Ⱥ*RM *غ** + +  %+X ,+ :+ܦk K+@C R+! ]+HFd n+ D ~+L++`_ +{a +S+d+ + + ,t , ,)3 *,d^i 6,f >,(J,H b,< p,` {,t ,1V ,8,Dd ,PV-,' , ,l ,c , - -HF-X6+-hC6-:/ <-) I- Q-xFb- }-p: -h ---d- -C% -` - .(| .+  .ئh 2.t  ;.~G L.@)P `.X-j.t.  .(& .Ȼ.,V-.8# .j .ػ.l7B .f . /G% /l?g %/`i 3/X7 ' V1d \1 f1D o10z x1 19 1 15 1ȼ1 1(! 1^ 1h? 1@y 1ؼ<1x 1 2(x 2Y 27+2A+ 32< ;2U-E28e ^2 q2@ w2c 2l 2 2, 2# 2 22H:H 2 ` 2hX 3H,N !3/( %3 93M B3Z O3L X3/7 b3 k3e  x3$ 33*B 3@  3#" 3(3/7 3P6 3@-A 3@[ 3W-D484e  &4H<B 348) E4LD Q4H-b4 D  g4x+ u4d 4D 4X4h4xF4V4 47 5 5x #5 45A5 H5Wz T5 ]5h5w5`Gd 5$FX 5Ƚ\5P 5ؽ5t] 505P 5\ 5C[ 5 50 68+c 6< 6 6,6$B[ 66U A6L R6<K \6( h6:x6 66 6x6 66W-6W-6(6L 6Ed 7(N 7S %7 97x D7| R7>2 ]7` @f7t3 q78+7  7 7HX-7H7 7X97  7h7K  8`7R 8x8 (8x, 18(; 78x$ D8 M8'_8to88  z8j 8,Dx 8.$ 8 8@ 88H) 8V-8t7 8p 8 9Ⱦ99B *9ؾ9=9 F9t  U9rt9:. {9E 94R 9hV-99 9W9d 9 < 9X : :(":82:l+! H:Dd S:He:j p:>F |: :X::x :p : :)  : :P : :h>:x;[;!;8 *;;>;ZX;A ^;+ h;ȿq;x ~;ؿ;;|;;;t ;hj ;lH ;03F ;~ < U-<T2| ,< ?<47A O<U-W< n<b <p <# <x. <9 < < <W-<(< < <] <8=4r =H=D} #= 2=X@=  X=o b=p k=,C[ u=X }=x =h=x=T  =C ={=T =  =x =4 = >84 >xA% >h$9 >='>49>$ @>D0M S>Fw `>Vw> >>| > > >>@% >d >X-><? ?X&? 07 4?x1 A?8 J?(Yh c?V-l??? ?4h ?Ls ??(?ti ?t ?8{?pk ?X| @8 @H@V-.@0e B@9b L@ [@+N s@H @ @X@ @ @h@ % @s @| @  @xhA2D A W-P'A/  XG, ]G0 fGd wG  GV-GЋe GhGxG< GP GT Gܵ GH Gв- HH Hg(H 7H AHlOHdH|tH-HHH HX-H4 H0. Hl H$ HhD H H\ H# IC6 I30 IAG #I&,I| 9III8 PI(aIx jI yI] I I80IHIJ` call_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____EH_FRAME_BEGIN____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxmain.crcsidentryStackSizeEntryStackmasterStackSizeTopMasterStackMasterStacklastBeepTimesetTimertimedEventsEnabledinerrorfretcalllastControlCTimeRSRS1RS2runset.csymbol.crcsid3rcsid5rcsid4LocalVarListyacc.cMAXGARBAGEMAXUSABLEnGarbagenUsablegarbageLevelgarbageusableyytranslateyyprhsyyrhsyyrlineyytnameyyr1yyr2yydefactyydefgotoyypactyypgotoyytableyycheckyy_parse_inityychar1yyssyyssayyvsyyvsayystacksizeyyfree_stacksc.0yystateyyerrstatusyysspyyvspyynyylenyyvalbuiltin.cpushlistpushlist1defnAcceptTablebuildAcceptTableacceptablesymcmppackparaAppendRemoveScoutScreenListrcsid2searchKeyreplaceKeylookAttrlookAttrResultcode.caddr.0eval.cschedulelockheap.clex.csetHighPriorappend_charbuffer_overflowbofkeywords.0keyword_tokenbuiltinFs.1number_tokenid_tokennew_yytexttab.2table.3multi_symbol_tokenskip_commentskip_one_line_commentscoutScreenInitOpenedskip_percent_commentgetAgentNametranstab.4backslashlib.cmachine.cneed_rwvNullList.0cnv_formula_to_rwvUPDATErefer.ctype.cdatatypepcre.crep_minrep_maxescapesposix_namesposix_name_lengthsposix_class_mapspcre_default_tablescheck_escapeis_counted_repeatread_repeat_countsfind_fixedlengthcheck_posix_syntaxcheck_posix_namecompile_branchcompile_regexfirst_significant_codeis_anchoredis_startlinefind_firstcharmatch_refmatchcustom.cGlobalSymbolscontextNORMALindxbackindxbackcontextMaxBackupContextbackupContextSizebackupContextMaxBackupIndxbackupIndxSizebackupIndxchange_scope2x_default_graphtempx_default_attrx_draw_actx_delete_attrx_delete_actx_delete_openshapex_delete_graphname.0name.1expr_nameisGraphAttrindentinsert_nldumpDonaldDeclarationlastvpneednllasttypedumpDonaldDefinitionlastmastertree.cstagetreeListSizeTopTreeListinPrintTreedumpbufsizeappendTreeListTreeListtransorigCommaRparendump_strglevel.0glevel.1tempnamedefnameDonaldExprOracleCheckglevel.2DonaldExprOracleutility.cparser.cwithinNameerrorstringdd_lex.cdd_textbufsizedd_lengstateisOpenshapecurlyCountDonaldAppAgentNamesaveaction_Atokenizegtargetcheck.cTypeClashcheck_idsemantic_1semantic_2semantic_3semantic_4check_children_typefunctions.cstructures.csa_uidcountersa_vertexuidcountersa_polyuidcounterrender.ctogl.cconfigSpecsDefaultCreateProcDefaultDisplayProcDefaultReshapeProcDefaultDestroyProcDefaultOverlayDisplayProcDefaultTimerProcDefaultClientDataToglHeadAddToListRemoveFromListFindToglFindToglWithSameContextget_rgb_colormapTogl_CmdCommandTableTogl_TimerTogl_RenderRenderOverlayTogl_WorldChangedTogl_WidgetToglCmdDeletedProcTogl_CreateWindowTogl_EventProcci_depths.0dbl_flags.1Togl_DestroynoFaultXAllocColorFirstTime.2ListBaseListCountgrabPixelsgenerateEPSglpng.cDefaultAlphaCallbackStencilRedStencilGreenStencilBlueAlphaCallbackStandardOrientationPalettedTexturesMaxTextureSizescreenGammagammaExplicitcheckForGammaEnvSafeSizeResizeext.0ExtSupportedHalfSizeBuild2DMipmapsSetParamsex.cedenCmdtodoCmdevaluateCmdquitCmdrestartCmdrefreshCmdgotoCmdversion.0svnversion.1variant.2webSite.3win32version.4sasamiAvail.5apple.6getClientNameclientNamereadIndistributescript.cnScriptBufferscriptLevelScriptBuffertableedenStrssscoutDefAgencyChecksymbolcmpcheckScoutDefOracleScoutDefOracleprint.cstore.cprintStoreDefnstoreScoutDefnsubstst_lex.cconstantstokensfieldssearch_constantsearch_tokensearch_fieldst_textst_lengScoutAppAgentNameagentList.cLSDagentListLSDtypesearch_LSDagent_Qadd_LSDagent_Qsearch_ObsQUEUEprintObslsd_lex.clsd_textlsd_lengnotAgentnothing.c__dso_handlesa_addpolysetYposnetodoSEARCH_agentlastRenderTimeviewport_namelocal_declareglXQueryServerStringTogl_GetOverlayTransparentValuedumpLSDsa_r_maxlightsisUserDefinedptsname@@GLIBC_2.1expr_to_donald_nameTcl_GetVersionclearTreeListchange_targetsnotationGetsscan_fglPixelStoreinegatenotationTypeToStringed_sasami_object_posTogl_ReshapeFunccos@@GLIBC_2.0inpdevlinenoappend_linebufgetmemprintfgetc@@GLIBC_2.0setXrotprognamesa_clear_polyinfostoremainWindowstack_overflow_errjmpdelete__strtod_internal@@GLIBC_2.0insert_level_markersasami_light_attenuationsasami_light_directionallcatchangecount_idpngSetViewingGammafdreadyInp_Dev_Savesasami_object_scalesasami_viewportnewStringBuffget_stringsetYscalesasami_light_posed_sasami_light_posglTexImage2DTcl_GetStringResultTogl_SetReshapeFunceden_notice_undef_referencesa_inputstringLSD_errdd_scriptstrncat@@GLIBC_2.0strchr@@GLIBC_2.0Togl_PostOverlayRedisplayappend_NoAgentNamedeclare_ObsQUEUEt_floatinthonest_treeglReadPixelsjptgetFrustumTopobjmateriallistpng_set_strip_alphaDefineinEVALfeof@@GLIBC_2.0lsd_errorsa_load_objsa_getuidlistshiftglGenTextures_changedfpunget_chardecGarbageLevelinit_donaldprompt_onXMapWindowdumpdtreeed_sasami_object_rotassignatan@@GLIBC_2.0lookuptouchscan_fpatchinttimewouldBlockTcl_EventuallyFreeungetc@@GLIBC_2.0grantpt@@GLIBC_2.1_DYNAMICbuiltin_ft_checkt_charsa_r_initdumpbufpng_get_rowbytessa_getfirstmaterialcurrent_NotationXGetVisualInfo__ctype_tolower_loc@@GLIBC_2.3Togl_ColormapprintRunSetgetZrotdd_parseaction_queuectoslook_upsetFrustumRightswitchcodeinitRunSett_superrelated_by_codenoticeft_intTogl_PostRedisplayfirstlightinterruptedb_writelibLocationsetZrotsa_r_resizeviewportreset_compiler_statusXRaiseWindowget_msgqwritelndec_asgnentry_ptrglRotatefrun_initdumpscoutwrite@@GLIBC_2.0localtime@@GLIBC_2.0Tcl_InitTcl_Releasewin_treefileno@@GLIBC_2.0sa_findlightpropagateDonaldDefSEARCH_symptrstrcmp@@GLIBC_2.0png_create_read_structcode_related_byglXUseXFontlog10@@GLIBC_2.0IDlistglFlushsavetextglColorTableEXTusageclose@@GLIBC_2.0asin@@GLIBC_2.0agentType_fp_hwyytextoracle_checkperror@@GLIBC_2.0ret_callcnv_2_boolTogl_ScreenNumberpropagateScoutScrpng_set_sig_byteseqcallsa_scriptfprintf@@GLIBC_2.0fork@@GLIBC_2.0sa_addlistremove_Obs_QgetActionloginnamegetenv@@GLIBC_2.0sasami_poly_tex_vertexTcl_PreservelastNullInIDlistpcre_fullinfosignal@@GLIBC_2.0dd_debugrawserialreadsendClientTcl_PkgProvidepclose@@GLIBC_2.1related_by_code_runtimelhsDELETE_agent_ATOMdd_nerrsreplaceRefsed_sasami_vertexsa_r_setshowaxesgetFrustumLeftstrtodoublestartupcwdglVertex3fcheckRunSetfreeStringBufXRootWindowdefinitionleTopEntryStackresume_scopeTogl_TimerFunc__fini_array_endsetZposE_Disp2PSddupnotationPushPopglXQueryExtensionyyparsedd_errorpeek_eden_internal_cdTogl_Screengargcsetyyparseinitcfsetospeed@@GLIBC_2.0user_tracelookup_addressdtree0queryObsqueuedd_appAgentNameaddress_errorkeyincurrentAgentNamesasami_light_diffuseTk_CreateEventHandlersa_adduidlistltselect@@GLIBC_2.0tree3sa_dumppolystextptrglPixelMapfvinit_ScoutScreenListcontext_searchsa_togl_createfunc__assert_fail@@GLIBC_2.0curScriptTogl_Displaymark_changedInp_Devvsnprintf@@GLIBC_2.0freetreestrerror@@GLIBC_2.0code_related_by_runtimelhscheckok1getYscaleed_sasami_poly_colourmakedatumsasami_poly_colourdirname@@GLIBC_2.0Togl_IsMappedOverlayTogl_HideOverlaysa_def_light_diffusePlotShapelsd_restartlsd_lval__libc_csu_finiusbhidreadsa_dumplightstcsetattr@@GLIBC_2.0Tcl_DeleteTimerHandlerpngSetStandardOrientationcodeswitchcurrentAgentTypePtrTogl_TkWininit_scoutautocalcsa_addvertexsa_r_setupcameraXResizeWindowputchar@@GLIBC_2.0__cxa_atexit@@GLIBC_2.1.3MOVE_agent_QgetNotationdelete_local_levelpng_set_gray_to_rgbentry_tblDeclareGrapheden_backticks_dependency_hackscoutTypesa_inputresetupdateevalDatumprintUsageglDisableprogpsymbol_searchglDepthMasksa_getpolysymtbl2listhasheden_initprogTogl_Interpeden_deletelsd_parse__errno_location@@GLIBC_2.0dtree2rawserialclosepow@@GLIBC_2.0debugglMatrixModesa_def_light_pos1printsymsa_getlightTogl_GetClientDatafirstpolyget2numvertexinfostoreerrorContentfincGarbageLevelsa_getobjectinvoke_action_queuefirstmaterialgetFrustumBottomconcatmustintEveryOneAllowedlookUpsa_clear_vertexinfostoreconcatoptprintstdoutsasami_material_diffusestackinit_lexsystem@@GLIBC_2.0ed_sasami_material_diffusetolower@@GLIBC_2.0png_get_gAMAst_promptTcl_EvalExinpdevnameaccess@@GLIBC_2.0sa_getvertexerrorCompletestack_underflow_errsasami_poly_materialTk_MainWindowpre_incdeclare_actiondeclare_openshaperandom@@GLIBC_2.0sasami_material_texturestoreDefnputs@@GLIBC_2.0Tcl_Alloc_initnameofpopen@@GLIBC_2.1DELETE_entry_ATOMglViewportpropagateLSDErrorStrmakearrgetvalueadd_local_variablechange_sourcesTogl_DisplayFunclsd_lexglBeginTogl_SetCreateFuncrmActionsa_addmaterialmalloc@@GLIBC_2.0pngLoadRawFsasami_light_ambientpre_decgetXrotTcl_FindExecutabledd_restarteveryonesetsid@@GLIBC_2.0Togl_AllocColorlook_prevrawreadreset_contextglDrawBufferfscanf@@GLIBC_2.0setFrustumNearsasami_object_rotglXMakeCurrentreset_evaldtree4translatescanf@@GLIBC_2.0ed_sasami_viewportsa_camera_frustum_bottomhostNamePtrpcre_versionsetHostNameinsttblsasami_light_enabledbackup_contextpipe@@GLIBC_2.0getFrustumRightTcl_SetResultsa_camera_frustum_farpngSetStencilsetpromptcurrentAgentTypeTogl_UnloadBitmapFontsa_get_face_normal_from_uid_listed_sasami_material_specularfread@@GLIBC_2.0memmove@@GLIBC_2.0XStoreColorpushEntryStackTcl_SetObjResulterrorfsetYrotTk_SetGridgetFrustumNearsa_dumpobjectsTcl_NextHashEntrygetXscaleTk_DeleteEventHandlerhptrpropagateAgencyfscan_ftopEntryStack_eden_internal_cwdappAgentNametypenochange_scopeSendOtherClientsTcl_EvalFileTogl_SetClientDatadef_treedelete_agent_Qsa_r_ysizeed_sasami_material_ambientregmatchrawwriteE_StringRemainschedule_parents_ofmodget_stringeden_full_nameadded_sasami_light_enabledpropagateScoutDefsa_addobjectTogl_ResetDefaultCallbackseden_declareinit_LSDagentListstdout@@GLIBC_2.0stderr@@GLIBC_2.0sa_camera_frustum_righttranslationTcl_CreateInterpsasami_object_polyget_charsa_addlightTogl_Widthscatexec_filetextcodeyynerrsTk_ConfigureWidgetsa_def_light_ambienttriggeredActionnewhdatsa_r_updatesa_parsestringunmarkGarbageXSendEvent__xstat@@GLIBC_2.0lazy_notglTexParameteripropagateAgency1regreplace_eden_internal_basenameglXChooseVisualclearEntryStackbreak_qvfprintf@@GLIBC_2.0emalloc_psa_structures_initTk_SetInternalBorderpcre_mallocsa_init_sasamisasami_vertexinterpsa_camera_frustum_leftexec_stringfseek@@GLIBC_2.0clearMasterStacksetbuf@@GLIBC_2.0remove_ObsQUEUEsa_get_face_normalsend_messageflushRestOfLinevertexinfostoresizeXFreesa_load_mtlyylengtime@@GLIBC_2.0cosh@@GLIBC_2.0Tcl_DStringFreeglTexCoord2frawserialopenglGenListssymbolsresume_contextcode_definition_startotherNotationTcl_GlobalEvalECt_typest_restartsetFrustumBottomgetRotThenTransgetopt@@GLIBC_2.0Tcl_InitHashTablesublistTogl_FreeColorfgets@@GLIBC_2.0Tk_ResizeWindowsa_r_initialisedhandle_check1bitanddumpdonalddefinesasami_poly_geom_vertexsa_r_renderdatacmpXFreeColorsed_sasami_light_ambientcompiler_flagappendEdennewScriptsa_findvertexglLightfsetFrustumLeftsa_camera_rotsymboldetailcheckDonaldExprOracleSendServerSEARCH_entryappendnEdensendServerTcl_GlobalEvalchdir@@GLIBC_2.0Tcl_SetVaraddIDMOVE_entry_Qrlibtblfputs@@GLIBC_2.0ed_sasami_material_texturejust_nameEXinitTcl_DStringAppendElementstrstr@@GLIBC_2.0longjmp@@GLIBC_2.0loginnamePtrgetZscalesa_loadtextureoracle_check1int_treesasami_setshowaxesed_sasami_setshowaxesprintdefTogl_ShowOverlaysasami_set_bgcolourlsd_debugglLightfvInput_Devicespost_decTcl_DStringAppendsa_skiplineinit_LocalVarListformula_listglGetIntegervsa_findobjectTogl_Configureed_sasami_poly_geom_vertexgetFrustumFarrefer_bysa_addescapesst_errorinPrefixst_nerrssa_getmaterialrealrand__strtol_internal@@GLIBC_2.0qsort@@GLIBC_2.0Togl_CreateFuncTcl_ResetResultglXDestroyContextsa_def_light_specularsa_camera_frustum_topchange_contextevaluateatan2@@GLIBC_2.0__xpg_basename@@GLIBC_2.0print_symbol_tableglLoadIdentitydispatchTk_MainLooppng_set_expandTogl_DestroyFuncaddActionTogl_AllocColorOverlayglPointSizesa_getfirstobjectXCreateColormapexecvp@@GLIBC_2.0mustaddrglPixelTransferiuser_erroripcloseTogl_MakeCurrenttree2printhashglPopMatrixnew_symforgetbitorfreedatumpngBindFtkdefineinit_edensa_dumpmaterialsis_graphresetLockstrncmp@@GLIBC_2.0getheapdtree1printlocalnarymulTcl_GetVaruseOldTreeTk_CreateWindowFromPathaddrsearch_agent_Qpng_get_PLTEcheckokinitbufdd_promptinstall_custom_variables__fini_array_startgargvTogl_InitpopMasterStacked_sasami_object_visiblejpntpost_incpopfputc@@GLIBC_2.0__libc_csu_initsa_getandbindnewtexturesearch_ScoutScreenQsasami_material_specularselscoutScreenInitOpeninitcodesearch_localstoreSymsa_getUIDis_shapepcre_compile__bss_startTk_UnsetGridsasami_object_posmaindeclare_LSDagentTk_Initsa_getvertexUIDsa_r_closedisplaymakelistsetXposdefaultWindowTk_ConfigureInfoTogl_CreateCommandclear_IDlistmap_token_to_nameput_environTcl_AppendResultheapinstallIntVarremove_msgqsynchronize__libc_start_main@@GLIBC_2.0glClearColorraise@@GLIBC_2.0Tk_SetWindowVisualexpr_to_eden_namedeclare_image_actionlastRenderTimeValidLSDagentName__init_array_endpng_get_IHDRdivideusbhidclosecall_libTcl_PutEnvexp@@GLIBC_2.0setFrustumFart_strTcl_DeleteCommandmustcharTk_MakeWindowExistlistsymsa_findpolyTcl_AppInitsetRotThenTransfree_symbolresetScriptlocaladdrstackpDefineFuncXLoadQueryFontsetXscaleusbhidopensa_r_opendisplaypush_textclearRunSetdup2@@GLIBC_2.0ed_sasami_poly_tex_vertextanh@@GLIBC_2.0restore_contextexecuterealloc@@GLIBC_2.0st_scriptst_debugstrcat@@GLIBC_2.0new_symbolsetFrustumTopdisAsseval_formula_queuecurrentAgentNamePtrstartValidTogl_SetColorsa_getlisthostNameSendClienttan@@GLIBC_2.0data_starterealloc_pcurrent_LSDagentXQueryColorspushMasterStackprintf@@GLIBC_2.0Togl_ExistsOverlayglDepthFuncsa_togl_destroyfuncqueryglGetStringlook_up_treedefnonly_finiadd_ObsQUEUErenewObsmemcpy@@GLIBC_2.0sqrt@@GLIBC_2.0count_exprDisplayScreensetGlFrustumtkdefineDatumstartupargcprint_all_symbolsglMaterialfMOVE_symptr_QsptrTogl_FreeColorOverlayrunfclose@@GLIBC_2.1glLightModelisa_findmaterialTcl_FirstHashEntrysaveprogchangeNotation__ctype_toupper_loc@@GLIBC_2.3atexitpushUNDEFsa_r_setuplightingsa_camera_posisdigit@@GLIBC_2.0ed_sasami_light_attenuation__strdup@@GLIBC_2.0yydebugframewithinHandleTk_DestroyWindowglPushMatrixTk_NameToWindowsasami_object_visibleprint_treeTcl_CreateCommandpngLoadRawsa_findlistorgettimeofday@@GLIBC_2.0Togl_DumpToEpsFilepolyinfostoregtsymboltextblibtblwarningf__preinit_array_endXInternAtompng_read_infoTcl_NewIntObjglBindTexturepngLoadFsnprintf@@GLIBC_2.0XmuLookupStandardColormaparrayindexcalcglEnableremoveAgencygethostname@@GLIBC_2.0glNormal3fopen@@GLIBC_2.0glCullFaceXAllocColorcurrentNotationaction_listipopensa_finduidlistcode_definition_runtimelhsdd_charsa_dumpverticesinstallGlobalUndefisNotYetDefineddd_lvaled_sasami_set_bgcolourmap_name_to_tokensym_treehashindexTogl_SwapBuffersfreeTreejpnfpropagateTypest_charglFrustuminitDefaultWindowcall_floateagerexit@@GLIBC_2.0Control_CglClearcheckAgencynotationSwitchXCreateWindowTogl_OverlayDisplayFuncEXinitTclstr_treesetZscalewarningst_lexcalloc@@GLIBC_2.0png_destroy_read_structUndefDatumpcTcl_DoWhenIdlenextcformula_queueTogl_Identandsa_def_light_pos2tkdefine1getYposb_exitpng_check_sigsscanf@@GLIBC_2.0_edatasa_index_from_vUIDpipe_processcfsetispeed@@GLIBC_2.0gettimeTcl_CreateTimerHandlersetLibLocationsocketPort_GLOBAL_OFFSET_TABLE_free@@GLIBC_2.0getXposreceive_message_endioctl@@GLIBC_2.0clearGarbagepng_read_update_infosa_getpolyUIDsa_exit_trapaddentrysa_r_render_object_polysglobToglXSetWMColormapWindowssa_outputTogl_StereoFrustumf_eofTcl_Evalgetcwd@@GLIBC_2.0propagate_agencypolyinfostoresizepng_read_imageTcl_EvalECcodeevalacos@@GLIBC_2.0sa_camera_rotthentransTogl_SetDisplayFuncprintlisthigherPrioritysasami_material_ambientstdin@@GLIBC_2.0startupargvTcl_DeleteCommandFromTokenappendHistDebugglMaterialfvadd_Obs_Qfget_chared_sasami_object_scaledd_lexpng_create_info_structappendscoutErrorStrcfmakeraw@@GLIBC_2.0Togl_LoadBitmapFonted_sasami_light_diffusefirstobjectst_lvalpcre_freeed_sasami_object_polystrncpy@@GLIBC_2.0getZposglShadeModelTk_FreeOptionsyylvalglScalefTk_SetClasssa_r_render_axesstartcheckok2sasami_light_specularinstalladd_ScoutScreened_sasami_light_specularfopen@@GLIBC_2.1markGarbage_setjmp@@GLIBC_2.0update__init_array_startlsd_nerrssave_IDlistoptarg@@GLIBC_2.0Tk_FreeCursorpngLoadpopdinsertglTexEnviTcl_CancelIdleCallTogl_Heightapply_IO_stdin_usedTcl_LinkVarisGraphrefer_tostrtok@@GLIBC_2.0sa_errordon_errlookup_localgeerror_nosa_eden_initjpfisServerdonald_full_namemustlistsrandom@@GLIBC_2.0readyXGetRGBColormapsE_tclTogl_UseLayerfile_statyylexdefinition_runtimelhsDeletenewdatumadd_agent_QXWarpPointerbackgndget_environpushintpopEntryStackglXSwapBuffersdumpedenaddAgencyTcl_DStringInitglTranslateffinetimeed_sasami_poly_materialWidgetMapsprintf@@GLIBC_2.0sa_camera_frustum_nearout_of_range_errorfwrite@@GLIBC_2.0cont_qglXCreateContextTogl_SetDestroyFunct_str1copyTreenoupdatesa_r_xsizepngSetAlphaCallback__data_startsa_r_bgcolourglXGetConfigmuststrsin@@GLIBC_2.0Tk_GeometryRequestsubconstpushscout_errTogl_SetTimerFunceden_interrupt_handler_IO_getc@@GLIBC_2.0freeheapDELETE_symptr_ATOM_Jv_RegisterClasses__ctype_b_loc@@GLIBC_2.3glColor4fagentNameterminatereallocStringBuf_eden_internal_dirname__preinit_array_startextendbufrand@@GLIBC_2.0ilibtbled_sasami_light_directionalsa_camera_scalegetYrotTogl_ClientDataglBlendFuncsa_getfirstlightpushlistsizeappend_agentNameDeclaresa_r_showaxespcre_execXUnmapWindowlog@@GLIBC_2.0viewOptionsoptind@@GLIBC_2.0sa_eden_initialiseddeclaredeleteScriptdtree3glEndis_openshapeunlockpt@@GLIBC_2.1topMasterStackhashtablepng_set_gammatcgetattr@@GLIBC_2.0read@@GLIBC_2.0Tcl_VarEvalglDeleteListspng_init_ioprintVersionlsd_charcode_evalsubstryycharinc_asgnpngBindnoteden_error_index_rangechange_prompttypenamesa_index_from_pUIDpackTcl_Freehandle_checksinh@@GLIBC_2.0linenoXInstallColormapst_parse__gmon_start__sa_r_render_objectsyyerrorstrcpy@@GLIBC_2.0png_read_endpcre_infoEDEN-1.62/tkeden-1.620100755000177700001640000237574410256064226012765 0ustar empublicemELF4T 4 (# 444ll` ` 7#xx x ((((( Qtd/lib/ld-linux.so.2GNUc5]`Q_*CE\T#Y(gi 6 '>7<A  ;w "l9r{BH&o.by/ 2: I4 ah8Xz $,DFj)xNkM }Z-L %1mdVv^K?PG!qSRWe~0uO=[+sp|J3 G; ̳ ܳ&  :, lq , <g&L\ lm3|     ̴x ܴ!6 r A ,| <8L\Q l' |%SK W_̵ ܵp { :  V #e ,Z9 <LU- \l<t |&o0zq D<̶ ܶ I  e , <LZR\ l |<3 9 ̷ܷ { d1 4$ ,:`< La \ylPnt |  ̸.ܸX #Y A 6+,y <1 LX! \9lt| J@\   it̹ܹ + A ]  G?,M <D L5\+ l |zL  L̺_ ܺSd# F ,6<C LF\ l |d,6@ R ̻MܻtD  " V,:><eL\ lq|4 <M̼7 ܼ +3 - ,< LFD\VZl | \Wj ̽: ܽD   +y ,9<L| m \' lt| *9` r ̾L ܾW  = ,:<>gLO\[l |;[ ZL |̿ܿ   ,u<]L{\=j l4  |Vl  , <X {   ,<h L/< \&l|3KK 5X $ <t ^  ^- ,(<FL-\Ul |4 qb2s &5nU H  r( \, <  L \gll |z |-& > i 0 libtk8.3.soXMapWindow_DYNAMICXGetVisualInfoXRootWindowTk_CreateEventHandlerXResizeWindowTk_MainWindow_initTk_SetGridTk_DeleteEventHandlerTk_ConfigureWidgetXSendEventTk_SetInternalBorderXFreeTk_ResizeWindowXFreeColorsTk_MainLoopXCreateColormapTk_CreateWindowFromPathTk_UnsetGridTk_InitTk_ConfigureInfoTk_SetWindowVisualTk_MakeWindowExistXLoadQueryFontXQueryColors_finiTk_DestroyWindowTk_NameToWindowXInternAtomXAllocColorXCreateWindow_GLOBAL_OFFSET_TABLE_XSetWMColormapWindowsTk_FreeOptionsTk_SetClassTk_FreeCursorXWarpPointerTk_GeometryRequest_Jv_RegisterClassesXUnmapWindow__gmon_start__libtcl8.3.soTcl_GetVersionTcl_GetStringResultTcl_EventuallyFreeTcl_InitTcl_ReleaseTcl_PreserveTcl_PkgProvideTcl_DeleteTimerHandlerTcl_EvalExTcl_AllocTcl_FindExecutableTcl_SetResultTcl_SetObjResultTcl_NextHashEntryTcl_EvalFileTcl_CreateInterpTcl_DStringFreeTcl_InitHashTableTcl_GlobalEvalTcl_SetVarTcl_DStringAppendElementTcl_DStringAppendTcl_ResetResultTcl_GetVarTcl_AppendResultTcl_PutEnvTcl_DeleteCommandTcl_FirstHashEntryTcl_CreateCommandTcl_NewIntObjTcl_DoWhenIdleTcl_CreateTimerHandlerTcl_EvalTcl_DeleteCommandFromTokenTcl_CancelIdleCallTcl_LinkVarTcl_DStringInitTcl_VarEvalTcl_FreelibGL.so.1glXQueryServerStringglPixelStoreiglTexImage2DglReadPixelsglGenTexturesglRotatefglXUseXFontglFlushglColorTableEXTglVertex3fglXQueryExtensionglPixelMapfvglDisableglDepthMaskglMatrixModeglViewportglBeginglDrawBufferglXMakeCurrentglTexParameteriglXChooseVisualglTexCoord2fglGenListsglLightfglLightfvglGetIntegervglXDestroyContextglLoadIdentityglPointSizeglPixelTransferiglPopMatrixglClearColorglDepthFuncglGetStringglMaterialfglLightModeliglPushMatrixglBindTextureglEnableglNormal3fglCullFaceglFrustumglClearglMaterialfvglShadeModelglScalefglTexEnviglXSwapBuffersglTranslatefglXCreateContextglXGetConfigglColor4fglBlendFuncglEndglDeleteListslibSM.so.6libICE.so.6libpng12.so.0png_set_strip_alphapng_get_rowbytespng_create_read_structpng_set_sig_bytespng_set_gray_to_rgbpng_get_gAMApng_set_expandpng_get_PLTEpng_get_IHDRpng_read_infopng_destroy_read_structpng_check_sigpng_read_update_infopng_read_imagepng_create_info_structpng_set_gammapng_init_iopng_read_endlibXt.so.6XRaiseWindowlibX11.so.6XStoreColorXGetRGBColormapsXInstallColormaplibXmu.so.6XmuLookupStandardColormaplibXext.so.6libdl.so.2libm.so.6logsqrtcoshtanhatan2powsinhlog10expatanasinacoslibc.so.6longjmpputcharstrcpyioctl__strtod_internalstdoutungetcstrerror__xpg_basenamememmovegetenv__strtol_internalqsortfscanffgetsdirnamememcpypcloseperrordup2tolowersystemfeofmallocoptargvsnprintfselectpopenpipecfsetispeed__ctype_tolower_loccallocstrcatchdirfseekcfsetospeedoptindstdinstrstrunlockptrandsignalstrncmpstrncpyrealloc__strdup_IO_getcstrtokforksscanfstrncatfreadgettimeofdaygetoptlocaltimecfmakerawgrantpttcgetattr__assert_failptsnamestrcmpgetcwdfgetcsprintffclosestderrsrandomfputc__ctype_b_locisdigitfwriteaccess__xstat__errno_locationsetbuffopenfileno_setjmp__ctype_toupper_loc_IO_stdin_used__libc_start_mainstrchrfputsexecvpsetsidtcsetattrvfprintfraisefree__cxa_atexit_edata__bss_startGLIBC_2.0GLIBC_2.1.3GLIBC_2.3GLIBC_2.1  ii   si  ii  ii  ii   e f     ē ȓ ̓ Г ԓ ؓ ܓ                  $ ( , 0 4 8  < !@ "D #H $L %P &T 'X (\ )` *d +h ,l -p .t /x 0| 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A BĔ CȔ D̔ EД FԔ Gؔ Hܔ I J K L M N O Q R S T U V W X Y Z [$ \( ], ^0 _4 `8 a< b@ cD dH gL hP iT jX k\ l` md nh ol pp qt rx s| t u v w x y z { | } ~       ĕ ȕ ̕ Е ԕ ؕ ܕ                  $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |                  Ė Ȗ ̖ Ж Ԗ ؖ ܖ                  $ ( , 0 4 8 < @ D H L P T X \ ` d h l p t x |                      ė ȗ ̗ З ԗ ؗ ܗ U<5 % % h%ē h%ȓ h%̓ h%Г h %ԓ h(%ؓ h0%ܓ h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`%$ hP%( h@%, h0%0 h %4 h%8 h%< h%@ h%D h%H h%L h%P h %T h(%X h0%\ h8p%` h@`%d hHP%h hP@%l hX0%p h` %t hh%x hp%| hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h%Ĕ h%Ȕ h%̔ h%Д h %Ԕ h(%ؔ h0%ܔ h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`%$ hP%( h@%, h0%0 h %4 h%8 h%< h%@ h%D h%H h%L h%P h %T h(%X h0%\ h8p%` h@`%d hHP%h hP@%l hX0%p h` %t hh%x hp%| hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h%ĕ h%ȕ h%̕ h%Е h %ԕ h(%ؕ h0%ܕ h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`%$ hP%( h@%, h0%0 h %4 h%8 h%< h%@ h%D h%H h%L h%P h %T h(%X h0%\ h8p%` h@`%d hHP%h hP@%l hX0%p h` %t hh%x hp%| hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h%Ė h%Ȗ h%̖ h%Ж h %Ԗ h(%ؖ h0%ܖ h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h% h% hp% h`%$ hP%( h@%, h0%0 h %4 h%8 h%< h%@ h%D h%H h%L h%P h %T h(%X h0%\ h8p%` h@`%d hHP%h hP@%l hX0%p h` %t hh%x hp%| hx% h% h% h% h% h% h% h% hp% h`% hP% h@% h0% h % h% h% h% h%ė h%ȗ h%̗ h%З h %ԗ h(%ؗ h0%ܗ h8p1^PTRhhQVhUS[kP0tЋ]ÐU= u)` t` ҡ` u ÉU tt h ЃÐUWS`` p1҉DžtDžp xڃxp$jjxPh e[_UUw $øۍvUl` ~ 4 DÐ hUSPg @]h` tkl` 9t4 l` ]ÉBh` P54 DF t 4 l` 븃hh.b1ڃ j@h` Px9 t/g @ux9 Ph` Ph5 ڃh떍v S Ph!5 [ vUg @ul` JH!‰l` Ív5 jjh<͍vUg @u jl` 5 jjhR<эvUp` tm t` 9tU8 A t` ÍvAp` P58 JDF t 8  t` 붃hh.bg1ڃ j@p` x9 t/g @ux9 Pp` Ph5 ڃh떍vt` JUH!‰t` ÉUt` ÐU8 t` DUvUjU9ÉUWV,j}عfhx` ut6 hx` _XhxVZYV5,ue^_Ãh|ԃ 5, Ph5 $UVS`` @ dPTx9 g @x9  VYXhVE Pu`` @ dPS\SVXZ5, Vg @u Se[^ÍvPSh5  ֐P`` @ dPh5 8hh.b1ۃ" 5, Ph5 $uUSSXZhSYXuSXZ5,u S]à 5,0 Ph5 $USE PuhS|` uzSh G `` ;H,t+PQ҉uPu9Ph h  S5`9 h]Ív h {qvUSE PuhSXZShAS5`9 h5 ]U u uhUWVS`` @ dP}[x9 g @t P`` @ dPh5 x9 u VW`` @ dPSeXZSh.bg tS5`9 h5 Bg @tPSh5 # SR `` 9  G 1;B,vLHC0P|` 7``  G  |` ;B,wfz{ h$ `` p$ph<XZ`` phg`` B$1H9}.B<  hz|R`` B$CH9|ԃ hU3`` BHBk B$_g t5 jjhX)  X` g t5 jjhl`` =9 d` j`F tP0RPjjrd`` ?B h8tPh}y hl# C0hh.b1ۃ P5`9 h5  VW5 Y[5 j 6$JUuh.bmÍvU 5`9 h5 \` *1ÉUh` ttAhj>$` F 5`9 h5 \` Ðjj$USjhlm\` g 0 ]PSFug PjujULg @uX u0 g uݮjhl&]5 j0jhdJːQuh5 돍vu0 0h5 Lg h S5,vg u=0  tl 0 u80 Ig *5 j"jhP2h5 [50 ,뤺$ 5 jjhDg `5 jjh4#"0 S0hT5 Y50 h9hxm$ $$ \` vU u u=0  t$ P E El6$ ڐUVSd 1ۅt;d jh h 4‹݄d CRBރfB u̡@v 1ۅt9@v jh h 4T‹Dv CRBރfB u̡v 1ۅt9v jh h 4‹v CRBރfB u̍e[^9UuUEh $G @G  ÍvUWVS<h U`` EfEƋy G A,Eu `` `` @`` fUfPUƅ@(@$!J`` @`` k g BBtf}`` -9 Љf}SP9uEȋMPz|:PE$f}PtPh5  g ``  0PAZZu\` `` Bk BHtiE-`` h /g u e[^_ÉP`` -9 ЉPh5 뷋B; t PMzg @u `` p ;Qr h5 Ճ j\` t>\`  u趿_u]\` tcg uH Sg uy\` t넉PSh5 ؐPSh%5 5 j jhA999x1 fB%@ft L.CFރD.t9hNEP; p1ۉE؉ Qx9 t^g @u0x9 UB V`` p `` B BP؉Qh5 뫃hh.b1뗃 h-x9 t=g @ux9 C`` @ Phh5 Ỹhh.bZ1븍vUS 5 j  G 9w19P0gtRP5  G 9vы]UVST` utg @ 5T` 0 h0x9 rg @Gx9 T` >/$hj1nP5T` %g @ SXZh[b5T` Y[V5T` $x9 tsg @uOx9 hWSXZ5T` S$@te[^ÐEce[^~Phh5 떃hh.b1ۃQSh5 VVP"1Phh5 &hh.b$1SPh5 ( h$U 5`9 h@5  hh5 ÉUhhh5`9 h5 iT` uPh5 G5 j>jhhh5 $vUVSjhj T` ue[^ÃPSXZhSY^h SFtPhVj붃5Z0 PSh̐UWVSh]} jDžtHF =LF 1h9 LWS`9 ˞Ph WS<-h VKt~QVhxS$ VWj^l9 Bңl9 a|jhl$`F X$ e[^_V5`9 hs5 V5`9 h@F 01ۃ@F  l9 ؉ Qox9 g @ukx9 ي@\tNAu S jSjg @u SVSh5 kۀ8nu@ P؉Qh5 ;mhh.b91ۃWvWV5 jzP5`9 h45 _v h|US]j Ax9 tEg @u$x9 CC@@]Pj h5 eăhh.bf1밍vUSQ]u]Ð SuUWVS} WZE؋CEg @CuBu9 SdHuGGE؉E܉FEFe[^_PSh5 밐UVSuFg @Xu] 3FPRg @Pu# SHuFFe[^ÐPSh5 .ƐP3h5 UVS ]sj FCpsXu SEBBe[^ÍvUVSE1t1@Xt 3FVh5 [ue[^5 jjhUVS]C9Ëu Mt(tv;ptP19H!u1[^ÉIu1ԍvUSR] ۋEtA9t=SPSg @u]]svPSh5 ڐ]ÍvUMSQ9ʋ] tPXI $ÍvUU1ɄtB1uÐUVS uV`a tV3t [Du1ҍe[^ÉUWVSjHx9 cg @;x9 1} Q{x9 g @x9 uPE K<fCE}CC CfCthECC,C0C,C C$C C8c<C< ЈC< C@u`a SDe[^_Ív[뙍vP}Qh5 !hh.b1 vPjHh5 hh.b1ۃUWVS }E EGU9ljUut;t)suuNtS19H!u1e[^_É1USQ] ۋEtu9tqSPSCtg @u< syg @u ]]aQSh5 ܐRPh5 뭐]ÍvUMSQ9ʋ] tPXI $ÍvUVSc c ut@t/Ct(VstS1c H!u1e[^É1뼉UWVSc 1c pj!x9 %g @x9 1} QOx9 g @u~x9 CuPr  fC t?fFHfCCc Cc 1c Hc e!É[^_ÐfFfx@fCP}1Qh5 Yhh.b1BvPjh5 hh.b1ۃUVS j1fu#1ہx9 tKg @u*x9 c c BZr c e[^ÐPjh5 9뾃hh.b:1뫍vUjc c c c OÐUVSc c 19H!Ћu@ 9}e[^Ã19H!Phc |c 19H!@ 9}čvUSPc 1c H!tDF t @  c 벃hh.b[1ڃ hx9 tBg @ux9 @ c @@OPhh5 ǃhh.b1Uc tq d 9tUD ȋU TA d ÍAc P5D JDF t D  d 벃hh.bg1ڃ j x9 t?g @ux9 D c RPj h5 ʃhh.b1붉Ud ÐU d ÐUWVS d Hd u^c 19ljE}<1d 19}"@  D ;r ;DB9|t"G;}|d c e[^_á@ RDpp0g @u @ tc EP@ th5 þpU= tÍvQhuhUEd ÍvUWVS d E=G d  d Y5d H X G  G P 5T fH =d fP?D 9ÉP )d 'Es'd ~ d 'd D)ĉ%d 6RSQPd )č%d ud p d G \ P 5T ;d DA9P 5G H ` L tm G C=:w`5G  d  L  d y L w 9H  ɉ L 3 L  ` ҉$ ~)Ћ5T  G bwA$- hJ$>j  e[^_X 5T $ )P G )Ӆ5T P up L   5T f3B ƍ=y L H w f9 t 8H  d G 5 jjd h4;P t#PPh;5 !;P u݃5 j P 5T ! h< [T 0 hk u h 뾃h`/h.bߐ hk u h 育 $넃h/h.bbΐ h_k uB h 6 $%$XT 0 _h h/h.b막 ؃ T @h ɱ 5k p9 t9 p j胱ZT p衡-h ~ hdk h^ h QT P@@9Bt h!X빃 h! h|5T   h hσ h h  h 谰XT p袰$ h hd|$ hs$ hZT @ h@$ $ $XhT @  T @ h4[T @ h\AT @ h'= t(5h T p豰h  Zhh.beڀ= t 5h j뿃h t)h  hc Pg$h/h.bv= th  hc 벃hh.bՃhc 5h $衮$蕮T Ph )ЃB$hqXT p߮ hc T 5h p5T F  9 h"T R)ƒ$ 5T V)ЃBVB9Ft h )BVF)ЃBPhc vvv hc T 5h p[5T F   h$uT R)ƒ$\ hc T pp댃 h:T R)ƒ$!T Jh )ȃ Ahc rr hc T 5h p5T F:5T Fh )ƒPF 5T V)ЃBVh )ЃBFȃhc 5h  _Xhc 5h \ hdJ h, hd h,5T FQ h   hv$G   X 5k | T 0nT 05h $<b :h/h.bEU h 3YT p%5T F hx h hl h h h h h h@ h hp h h<~ T h` U$tYT  h@ h<3T  h0T  h5T V)ЃBVh )ЃB h4 hT Ph )Ѓ Bh h hdz j`XZ5h T pk_X5h T p k 7k  h h$, $ܨ^ hɨ$΃ T pPT @  hd j j% lY[5h T pwXZT pj5h pph   j% _X5h T p"^T pj5h ph  뭡j   ET 1҃x¡ % У  h蘧$茧Y[5h T pXZT pp5h pp@t4HP T 0#% 8  t#j H B P %jj h d  諨 Ċ J  5T  T B@  2 D% 8 ,% 5T FF  5T F@U PQh05 ҵ L  f~2P^4h5 C蔵f<^ً L P 4h5 d L X 2H `G =w L rH!1w! 9)Cv FdPjpars@e er@rorP d 4h1эLQ L H!1w$ 98Cw L ܃ Vg @ V蟾X ^X H ` L tAy L wf P  d 9tX@H G -T P t5 jjYh-;P t#PPh;5 `;P u݃5 j 9=d g @uL 5d 蘽g @u 5d ~S5d h5 ߲V5d h5 ò똉 L =tTG u2T pG 5T PL H  d P 95 jjhD蹾뵡d t4g @uN 5d 褼g @u 5d 芼1P5d h5 P5d h5 ͱ=أL ( G e G u G { d 4Rh[5 lSVh5 U%PGPh(01эLQ苽~GvtPVYX4VѸXZhVĸG hH0f<1эt h ɉ L /5G uE G t  G 5T G BX 5T HX 45 G h5  뙁ى L fv45 G h5 ϯ5 jjh + =G  d  G 5 jjh G u$UҸDEE G I5 jjh裻S5H h5 W5d h5  d  hu5d t4g @uQ 5d 9g @u 5d {Q5d h5 {S5d h5 _듉5 jjh1贺U uh4h<ÉU G PB@~Th5Bppp G @@PЃG Љg  ,,9g U`` @ufEPuEÍvUWS`` 8tI1 QpZYá`` 0S' uSfEu]軥e[_ÐUWVS G PBxt h?e[^_Éh0Bppp *X G @@pέƹ1щ $辮_XVS{ ufESu؉]댐UWVS G PBxt h@e[^_Éh0Bppp G @Y@pǹ1щ $"XZVS߹ ufESu؉]s댐UWVS G @@@hj膶tuǹ1 Q训_XVSk uSfEu؉]g @u V޵e[^_ÍvSVh5 >Ґ h 5Cː h5NvU G PBxt h<@Ívh0Bppp & G @Y@pʯtʃKZ0裫 P G @@ph:5뙐US]S$艩 ËuPfEuE٢ CuPfEu؉E辢 CuPfEuȉE裢 C uPfEuE舢C u@PfEuEl CuPfEuEQ CuPfEuE6$]ÐUE4PfEӭ uPuEÍvUEЃ@PEPi EuPfEuEʡM̸MbЃ u)PfEu؉E螡$U G PB@~LhU5Bppp G @@@fE$ uPuE4Ív h\5WU$5 fE9 uPuEÐU G PB@~Lhm5Bppp G @@@fE$ uPuE蔠Ív hu5USt G B@xt h5 G h5B@ppp G @@ XEPSj[QEuPfEuE EuPfEuE؟ EuPfEuE轟 EuPfEuE袟 EuPfEuE臟 uEPfEuEl$]ÃdZ0輧 PSh5ż׍vUWVS(h%ơ G @@@~ h55P5 hVÉ1I~ Dtmщу Q7_XVS uSfEu؉]舞g @u Vge[^_ÍvSVh5 ʥՐCĐUWVS, G PBHh5Bppp ? G B@ph5B@p pp G @@XVا SVPEt{}1у Q3XZuS uSfEu؉]肝g @u u_e[^_Puh5 эv7뾐 h5gUSP G PBX~]h5Bppp + G B@Xh5B@p pp G @@pSԢ]à h5UVS@ G PB@ h6Bppp 7 G B@p~Avh6B@tt4N ~ G ы G RBpX~,vэADf8tVDN uuuuuuuuuSƃ0PuVfEuu藛e[^Ë@먃 h\@̃ h@vUWVSL G PB@ 3h6Bppp Zh6 G @@p pp G B@p ~Bvvh6B@tt4N4 ~ G ы G RBpxX~-vэvADf8tVDN PuuuuuuuuuSW藤ƃ0PuVfEu؉u8e[^_Ë@먃 h@V˃ h@vUWVSL G PB@ 3h 6Bppp h 6 G @@p pp| G B@p ~Bvvh 6B@tt4N ~ G ы G RBpxX~-vэvADf8tVDN PuuuuuuuuuSW跪ƃ0PuVfEu؉uؘe[^_Ë@먃 h@˃ h(AvUWVS< G @PzrrB r P  G B@@EЉ1 h6IBMԋ@p pphh6 G @@p,p(p$J G @@x(XO Kx]9U)@ @P9E@;]Ա }uЊ 3C9 ~RuEfEPu؉E赗e[^_1묃hPAh.b#댉 h6밉UWVS, G PBx2h16Bppp `h16 G @@p ppV h16 G @@p,p(p$5 G @@xWUԋPUЋ@(҉E]ЋE9L[4;]ԉ^7E؋D7E܋D7EE؉E܉BEBC蓖 ;]~Ũ 9UE)‰@Pe[^_1롔h Eءh Eܡh 뜃hxAh.bóQv h;6W뮐UWVS Mщ%=u]]= g$NE UUEE P6ue[^_%u E@e[^_ϣE EE ;ue[^_uVu 衣e[^_ËE EE V6NjE tu VPωEE  뤃Vj[YE ;x/ jVtt4E ;x|G ;x~։u E]0Vj,E ՋE EE [6$E EE l6E EE 6E EE AE EEE 6E EE 6E EE AE EE Au uhBV胛E%tIt!Vj/jh,BΧu E)1tQu h V9كVu [˃ SVE pp0 봍vEEE {Uj5 uu uLÉU j ÐUVS G B@;p> j5 B@tt4 G BF@ ;p~Ǎe[^UWVS, G B@xt h6 G BPB EȋBE̋BUȉEЉ%=t RZYPh\BEЋ01у Q_XVS衧 uSfEu؉]5e[^_ÐUWVS< G EB@;pW B@tt2Rc G B@Eċ|1ыEԍDEFEă ;p~Eԃ @P.ǡ G @@;p) tWǠ G @F@ ;p~SuWfEu؉}Fe[^_ÉUWVS  G EEB@;HE h6B@Utt4 G B@M|GE~* ÍvPt7t747諐 Ku G EE B@M;H~ ue[^_U G @@P~fx t1P褵;v@vUVS G B@Xh6B@ppp g up j5k $ j G @@pjJ$4$̚ǧ uSfEu]苏e[^á G Q@@ph65 ٖi h7 G (UWVS, G B@HB@@E9EЉE̿ {vh7B@t8t848 G @@\8XZh S͡t` jʥ SVj6EƦEЋẼ 9E  G 뉐_VuEfEPu؉Eje[^_ÉPSh'7h۫뫃 hBx G USS G KQz~MB = |B= ~ -w1fzt]à jAp ppC@pw ׃ h87ʼnUWVS}W119H!t1CRuPfEu؉E}S1F9H!uЃ Ve[^_ÍvUVS G B@@eB@fH ى%=t&ft Sj[^PhB艪 G BPB %= rV`a tV3艓tuQVhBh"RuPfEuE{fEC$ uPuEWCt]VufEEPu7C,$tC $i C@uPfEuE$Ze[^ÍvQufEE9h9뙋Z= hO7 G UVS G B@@B@fH ى%=t&ft S[^PhC G BPB %= rV`a tV3tuQVh8Ch肨Ct RufEEPu֊e[^PufEE9h9֋Z뼃 he7 G UWVSL G A@X~fx t hy7 G A@PauBnu ByuBEA@X7lj޹U҉EuK1E`a EЋtEEC9EE̅fC9E[DuEЃ}~v  P EfpEE EЋ`a t5uuԋ}uUC9EtLM̅tqfCu:9Et4[DuEЃ}~P}uWfEu؉}e[^_ÍvRuPfEu؉E؈4$E 蘉 fC딉FfC SEȃvUWVS,1E`a UЋt [DFuEЃ}~v  PؑEfpE UЋ`a Eԍ48QuPfEu؉EfEC$N uPu؉E܇CRufEEPu踇C,$C $ C@uPfEu؉E臇$4$?[D GEЃ}"VuUfERu؉U9e[^_ÐPufEE9h9UUVS1Vh7肖`a t 3蚐[DuF~ʍe[^vUWVS Mщ%=]= >$Ouu hP6SFe[^_f@Qu h;Ru hV6ҋE t"M CtЃ"t!\tACu"C\C\\C"f[E EC;PP vSt0t0401UE у;P\ } f,E CEU ;P~f]PE 0h[6PE 0h7PE 0hl6PE 0h7E EEE 6]e[^_PE 0h6WE 0hAVE 0hAVuh7S轘1 u E%fH\ 7t7R=WE0h{,UWVSU8u e[^_É P)($ jh8PE^_U2PUBh9Urrr 蒤E$Dz}E~9]ȉǾKh9Et0t040TŰD2 KuӋEȋUă DEPz@tOwud 5 vÉ$dw^_SuIYuPwXZuċEp}ƃFte[^_ÃUrh9M 5 vÉ$w_XSu~Yuv ufEVu؉uo뵃 hDUWVS| G @@E@EHh:Urrr Y[jEpxE Px}E~:]ǾKh:Et0t040UD2 KuӃEUDjh : Vt VL EPx@\u0tj uu uVfEu؉uAn uVfEu؉u)n uEPfEu؉En$be[^_x VrjP~ePh:hSS/Wh:hSS}WSXQWjSeu VtXZjSn|^_jSd|$ltY5 sÉ$VtXZSu;|XuBt^_uEpzY[jh!:~XZjS|XUr,t$ ~ Vs$s$DՃ Vs$s$ E뻃 Vs$s$8E롃 Vs$s$dE뇃 Vs$Er Vzs$E] Vcs$.:诉 VFs$E:蒉 V)s$EuT V s$ FX#h :h@F>tZ0t PUrhlFJ hFUVS G B@xt h`:| G hz:B@ppp : G B@@xt h`:5 G hz:B@@ppp hz: G @@@p pp hz: G @@@p,p(p$违 G @@Z@Xp(pq$q4$qe[^ÍvUWVS G B@xt hFi G h:B@ppp ;h: G @@p ppm G JA fx$th:Ap,p(p$ܝ G RBHLHfx$?Dž@@(xH hF 1эh󫍵щ󫍝hщ?rre hF衆@1uHDPTP PSVhLQ@Pq`fDžXPX\he[^_ÉLLhowULLFLLh'h:B@(ppp Kh: G @@@(p pp* G @@@(PH@D fDž@UUWVS G B@xt h: G h:B@ppp 覚h: G @@p pp舚 G @@XpSFq SPV|tk @Pp VWPy ufESu؉]fg @u Wxe[^_ÐSWh5 :nאoY0$o^ZPh:/薬UWS G B@xt h:谿 G h:B@ppp 肙h: G @@p pp G @XS1уyWRsl9t oZ0in[_Ph:te[_ҫUVSP G B@xt h,G G h:B@ppp [ G Y[@@hpvuVS/z VwXZj VQmujj VvuDPVjSmuQuSfEu]de[^É h:;lω h;'l몉 h1;l넉 hL;kSv hTGk#vU G B@xt he;蛽 G hy;B@ppp m G @Z@pakx hxGgkUWVS G B@xt h; G h;B@ppp h; G @@p ppЖ G @@XpSm SPVaxtk @Pl VWPv ufESu؉]>cg @u Wue[^_ÐQWh5 jאl tPh;z멍vר뢐US G B@xt hG G h;B@ppp ` G Z@Y@jpsxPuSfEu]^b]Ð hGi҉UWS G B@xt h;R G h;B@ppp $ G @@X 1xډxP$jjxPCPDžPDžTi <WjhPS`vSh`PfDžXX\HalMbЃ )`PfDžXX\ a$a p`PfDžXX\` r`PfDžXX\` `tPfDžXX\`$վe[_Ív h;gv jϐU G B@xt h<[ G h<B@ppp - G @Z@p!gxإ hG'gUWVS G B@xt h'<ٸ G hD2B@ppp KhD2 G @@p pp- G @@X@@jTPPPjS LjhPjj1@IQ@jL g  HbHKH-HDžDH9DvDhDl)Ƌ@ ǍFPg VWPp `SfDžXX\^DH9Du HSg @u Loe[^_ÐQLh5 -e͋l;藣넃j hH{뙃HhB< jzWlhP@ShDH5 d qPTShHzUWVSj}gx9 g @5x9 9}9| Sfx9 t\g @ug u*nZYP G @@p|x7vP G @@phd<5 [벃 h<C G rUÍvUÍvUÍvUÍvU G @@@t h<ÉfE hP`O $]uuuSU G @@x~ cv h<蓬U G @@x~ /v h<_U G B@HB@fx tmB@p5,R_u#,RufEPuERÐ,0 G @@phJ5 Z肘΃ hJp G x h<藫 G NUWVSH]S2f~EWvvvR} 1щ $[Y[u PFg uWfEu؉}Q}1щ $O[XZuW g uWfEuȉ}Q$F@[@_Pv`DF tlNjG@EG@ED$ PRE ~hF< ЈFt-Ct&VPUtS1g H!u1e[^É1UWVS8j]17щ $Xx9 qg @<x9 SPEcD$ POOũ 32j EEeXx9 g @x9  E@j$1Xx9 teg @uDx9 g Bg zu1g g eH[^!‰_ÉPj$h5 5U뤃hh.b6k1둍vPj h5 UAhh.bj1*P߹Qh5 Thh.bj1UWVS< G APz~B %= h K G A@PBE؋BE܋BEA@@f}K=g g 1 DB ыRAY qAM܋Y$R9ډ ~; <tt4tt4辒 uG ;MODž)9}n$v 4Rtt4Et0t040> u + 9|$)+[ P Tۉ~ ߉@ Ou ++[ P_Tۉ~ ߉@ Ou +9É>[Dž$+9DžvU܃B ppr B ppr /PBt2t-E܋HAttq@r@Ps$G+ 9Z + 9 +U9ljỦU}.1ۋ؋9D G+ 9|ԋ$ +B9ljC9p;XtKV+RT9tv9zR9uv;u+@t9tFV+RT9tv9Z'R9uv;u$G+^ 9lj EȉẺEȋ +9}.1ۋ؋9D G+ 9|ԋu̍E9% j Qx9 4g @  x9 F‹AYVHD ~U 4h<SZS5,`~V밋VR@@tGtBW4h=SoZ SF@@p@vU9$ SXPx9 g @ x9 Dž9}1TTF9Ɖ|ϋ$+ 9‰; Q9Bg @BBu A0PWF0D$+ 9` ~D$\ LQSu苅$+ 9‰R+@D; R[E܍P @ XJ\B`AJY4h<VWXZV5,}D1щ $iMYXW!Y PWfDžHHLC B@RfDž88 B@RfDž88<= 4h=RQىщ $/GXZRWR 0WfDž((,n=$›D$D$ P k >h=\@P rrp I4U܍B ppr ̃ E܍P @ xr|BD@P @ hJlBp~ay|C@@lB;H:B@@C;pmz 4hM=ROQ5,T |C;p~C@DlFFtZtUP+@D4h=P%O Rlp@|CtGtBP4h=VN V|p@|C?)1ى Q4DYXWO PWfDžHHLt: B@RfDž88pBpTT_PSh5 =Hhh.bSDž0vPj h5 =hh.bS1 j ?uȉpxEȉHMȃLB@BB@BOE̍u9tOXUȋ@ j ExEȉAEȉHMȃ j >PxH $ >PpH  j K>xBAJ$ '>AF1AN밃 hHKh.bQfzCTUSP]U t!C9t9Ct؋]Ë j0=x9 t=g @ux9 CCPj0h5 %;̃hh.b&Q뻐UWVS} WuO9x j0k=x9 g @uvx9 {uuC uPc u$u CuPc u0u,C$u(Pc ;~~FC^e[^_ÉCPj0h5 9:ohh.b7P1ۃYPvvv b v vvb v,v(v$buuF uPcu$u FuPc u0u,F$u(Pb 9vUWVS E uE1IM}9My~6j,Vx7tWPWuV?u<7=t;ts@ e[^_))PCPD7Ph@ FDƃ? ԉE0UWVS G A@x~ fx ; htK} G APB E؋BE܋BEAPBEBEdB EAPB$EB(EB,Eh=pppdY[E@d5Xh tXh ҉luXh dl9Zuu܍EuPb E@p@\lPr~Pv\tt4Et8t848v ,N ~ lPpp\ h=t@ =tdl9P!h t[@ = VEDžp;P9Dž` ` 0MȋT0ŰD0f}EZhzVPRQ/ uuu. Epp0. uuu.WSh=VBjV5,<PjjSfE3] uuu{.Whh=V=BjV5,\<PjjSfE3] uuu&.Whh=VAjV5,<6PjjSfE93] uuu-Whh=VAjV5,;RjjSfE2] uuu|-$ЋD$D$ P k .h>:ck  ]p` p;sPEpp0Epp0uuud5Xh Me[^_QVh>hTJPVh>h;JPVh>h"JCPVh>h JDžpP;Z xL|Dfxt0WdqqqqhKV?V5,nplPp ;B~?lPBtt4[lVh h Dh Dh U:h D:h D:Epp0r rr6r Epp0lv,v(v$ r1ۃ @$%=U G B@xB@fx t h+> G B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@p~Ív@4ڍv@(v@먍v h@>{ G UU G B@x~`B@fx tJ@B@fxt1@B@fx$t@( \$\$$~@(v@͍v@봍v hW> G U G B@xB@fx t hr>襂 G B@fxt h>聂 G B@fx$t h>] G PB@p(B@pB@p}Ð hK# G UU G B@xB@fx t hr>݁ G B@fxt h>蹁 G B@fx$t h>蕁 G PB@p(B@pB@pk}Ð hL[ G UU G B@xB@fx t h> G B@fxt hr> G B@fx$t h>̀ G PB@p(B@pB@pK}Ð h0L蓀 G UU G B@xB@fx t hr>M G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@p|É@@׍v@4뾍v@(륍v@댍v h\L G 9U G B@x~dB@fx t hr>m G B@fxt h>I G B@pB@p{à hL G U G B@xB@fx t h>~ G B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@pY{Ív@4ڍv@(v@먍v hLS~ G UU G B@xB@fx t h> ~ G B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@pzÍv@4ڍv@(v@먍v hL} G UU G B@xB@fx t h>E} G B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@pQzÍv@4ڍv@(v@먍v hL| G UU G B@x~dB@fx t h>| G B@fxt h?]| G B@pB@pzà h(?+| G U G B@@~7B@fx t h=?{ G B @pyà hT?{ G U G B@xB@fx t h>{ G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pxÉ@@׍v@4뾍v@(륍v@댍v h Mz G 9U G B@xB@fx t h>z G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pdxÉ@@׍v@4뾍v@(륍v@댍v h8My G 9U G B@xB@fx t h>y G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pwÉ@@׍v@4뾍v@(륍v@댍v hdMy G 9U G B@x~dB@fx t h>x G B@fxt hj?x G B@pB@pfwà hMx G U G B@xB@fx t h?Ax G B@fxtV@B@fx$t=@(B@fx0t$@4\$\$$B@pwÍv@4ڍv@(v@먍v h?w G UU G B@xB@fx t h?yw G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pvÉ@@׍v@4뾍v@(륍v@댍v hMv G 9U G B@xB@fx t h?v G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@puÉ@@׍v@4뾍v@(륍v@댍v hMu G 9U G B@xB@fx t h?u G B@fxtr@B@fx$tY@(B@fx0t@@4B@fx<t'@@,\$\$\$$B@pXuÉ@@׍v@4뾍v@(륍v@댍v hNu G 9U G B@x~dB@fx t h?t G B@fxt h?t G B@pB@ptà h,N{t G U G B@x~dB@fx t h?=t G B@fxt h?t G B@pB@ptà hLNs G U G B@x~TB@fx t h?s G B@fxt@ $B@ptÐ@v hlNcs G U G B@x~dB@fx t h>%s G B@fxt h?s G B@pB@ppà hNr G Ug u%h M $G @G  5 j$jhhO(-vU G  #g u  !}5 jjhX,эvUh"h.bc6ÐUS hHh.b]G6h h Ch C؋]vU h 1ɋUth ;Tt#@\` u4uB  t\` ug աg  ue[^Ë ꠛ ȉȍBPVhO5 빉 2P5 hO5  O ꠛ ȉȍBPVhO5 g Ug VS G  tOA-wAq x:vvPBtt4NF x G ً G Zu,. G P P P G e[^/͐5 jjhS8*NUWVS| G Ѓ }] G Lg  B  B B :j- G ۉXt S.f_- $Tg  G  Bȉ19d7Pʈ PhS5 $5 uuu 5 j _#uuu ]SE  g ZEȉẺBEЉB  w Nt NZu wrg  G  Bȉ197GPȇ PhS5  $B5 ppr~5 j T" = ]P@xB|Bg  EhEP|RxQSUEME E؉x E܉| EE g uxx|BEB  g u e[^_Ív G  BȉȍP7h8P5 봍v5 j jh T&$5 u|x| ꠛ ȉȃ BPxPhXP5  5 j jhTD&$5 u|x#| ꠛ ȉȃBPh%T5 vx P 5 j   G  BȉF9|#5 j jh Tj%$5 uuuO{ ꠛ ȉȃ BPShXP5  +.;5 j 8 G  BȉF9|f_RE E EE EEg u"EEBEB  W\5 j jh TI$$5 uuu.z ꠛ ȉȃ BPEPhXP5 } ` pE E EE EEg u*EEBEB   w=y5 j jh Ti#$5 uuuNy ꠛ ȉȃ BPEPhXP5  X*hE E EE EEg u*EEBEB   w=5 j jh T"$5 uuunx ꠛ ȉȃ BPEPhXP5  XJh7hP+с AЉЍP7hP5 X G  G P7VGP!ZYPhP@+ G UHg   = P@EBEBg  EIEEЉE MU= MȉỦMU P@EȋBE̋Bg  EurUȉU؋EЉUU؉EE‹M= MM|*= ~ -w juuuQq à P ZYPhP+*5 j jhTh $5 uuuMv ꠛ ȉȃBPh%T5 Eȃ PD 5 j jhT$5 uuuu ꠛ ȉȃBPh%T5 CE P /5 jjh7TXUg VSu ]uHVS{V19H!t#jsS19H!uߍe[^j3hQ5 p럍vUVSg ]u uxC=|9= ~N-w(VSx19vE ]e[^ZE 4QE.be[^(vVSRxE 뾉j3hXQ5 lUg VSuN pVS .|tVSe[^ÉPhKT3h'֐5 j,jh|Q뙍vUVS0g / =  P@EȋBE̋Bg  EushSEЋUPMRQM؉U܉MUEE= 0 XZV]ST{tVSe[^PhKT3h&ؐ5 j jhT$5 uuur ꠛ ȉȃBPh%T5  Eȃ P 5 j0jhQ`UVSg h uu8= s0h e[^ÉhhTh.b%h SV~ PhQ5 vh UWVS ]1g uu$G 9tu>s9u =$G j@t)ue[^_%E P‹C)$$G 5 jjhxT:oU$G =M UM sH$G E TE.b$UWVSu ])Wx9 tFg @u& x9 9t9ue[^_PWh5 "Ãhh.b#$1USS] j = sQSu5j j ]ÍvhTh.b#ːUSj ]j )@P(x9 t?g @ux9 SPT]ÍvPj )@Ph5 R ʃhh.bS#1UWVS]Su+]ƍEh zr$Xu Xu <$4$$_u^u$Ee[^_ÐUWVS]Su +] ƍE h q$Xu<${4$s$kXubXu$QE e[^_ÉUWVSHj4_uW[^5h u;CEh  = P@EBEBg  E MUEj MȉỦEЉM؉U܉E+x9 g @v5x9 EfE-@$T1ۋ}ع Q x9 g @uSx9 uPFQuuuXZV5h 5A$<4$Ee[^_P}عQh5  뇃hh.b 1pE܉FwE܋UVFevU܋FRP];{E  V D D D D G]܃ ;{~hRh.b& Pj h5  ohh.b1Y5 j jhT,$5 uuul ꠛ ȉȃBPh%T5 d E P UVSn h\GXu<4$4e[^ÍvUVSvn hԤÉ4$e[^UWVS\E-=$Tjh_U X1IQR[^jhe[^_ÐjhTuu hT]SX1ZIQS뺍vQu h;Ԑjh% u hT]Su^_jSY[jhpjh*bE ;p* Rtt4E ;p|F ;p~ۃjhjh8E ѐhRh.bU  g uEE BEB  Ív5 j jh T$5 uu uui ꠛ ȉȃ BPEPhXP5  cOqUS = ]P@EBEBg  EuEECEC؋]5 j jhT$5 uuuh ꠛ ȉȃBPh%T5 rE P ^UVS]fS= \= C= t8g ue[^3Pjq PhU5 jҐg j K8tQPqH뚐C= = z= x j x9 t>g @ux9 rPZS8TP3htU5 g eP3hU5 j/jhUUVS k g  k k k k 19H!ЃX19H!Phk /C8$lg ud jXE$3uuuS ?k k x=j j  k te[^ÉP3h(V5 ]g tP3hPV5 <5 j0jh|V vUSQg u6 k  k Uh S5, k ]Ív5 jjh;W0 뱍vUg VSu ]uLS< ˆSuh;jPtuSfEu]$E$`Z D$D$ P"h`Z@ E P]ÐUWVS5k k &k ,ƒ t tk  ƀ, ủ޿pZt޿u je[^_É޿t6޿yZu jǃ St j밃 j멃 j뢃 S޿pZt޿ jzã,Vk tl`` xt#k %><$.CtC8uq Sük u j C8u S觼 k jN jsj Jk à j k  jsj ,k W>< $ stC8uH Sk u j E C8& k j/ j k r jsj,hk 냃>< ${tC8uH S臸 k uQ j C8 k j j k  jsju,k 냃>1t$fP%ft B NC؉UBU늁ft&Qho &tUE@CYUCUWVS ĭ EEk k %ĭ k><UƍvfX% ftG  t9k $k ,Bk ãk 볍v J A t k k ƀ,1k Njf4X%f.}f_'$"Mk ,k ãk ,/ue*uTC t k t!k ƀ,k k 5k h,Ǎe[^_/ #u #u|닃$uk fP%ft4k k ,Bk Bk .k t_jj jh, G t 5k tk ƀ,%e[^_Ã5k h,  t =k tƀ,$뼃jh,k ك@tB~fX%fu _k k e[^_[PuuhJ G t k tk ƀ,5k h,@ҍvk k ,Bk "ãk tW\tuh[h.b몋k "k ,Bk lk zUk k ,Bk 1 k t k  k ƀ,ƀ,1h,,I $x9 tcg @u4x9 h,S ]uuhG P,IQh5 릃hh.b1ۃ듐5k h,$vWk @k ,Bk 'ãk tW\tuh[h.b5몋k "k ,Bk k zk k ,Bk c k t k t^k  ƀ,ƀ,h,=,u,EPuuhghZh.b\΃5k h,(ak \e[^_5k h,k k k ,Bk X%k tk >t <] t k tk ƀ,k 믃5k h,:А t k t!k ƀ,k k Y5k h,ǐUVS `` A(Q 9Њ]}'Q(ABQ(`` P@(De[^ÍvA PqVDF t F `` 밃hh.bu1܉USP`` BtuHtNztBB(B$ P?1҃ `` t tP`` @$؋]Ð rt`` 1vB@BUWVS `` {aujCtmf{tncǐfp%@ftDCt0Ht P`` ̃ uƃՉC0@CNjSC(e[^_; Euu`` svUSP`` Pt.Jt؋]Ã@PPÉ$uu1֐@USPk 1>k k =,$,@k -k k E,k =,U,@k k k Ék fPfu_u6k !k ,Bk k 뺉롘k ƀ,=,,}>İ~İE] Eb]UuhcÍvUVS u V]SfЃ }'tt PZ>ZYPhHcyfЁ}'t3 P>ZYPhHc8ff=tf>t1f=tȍe[^Ívf>tFf^ۍvCf[vuf렐8fHU(g uMEPEP=t'=tÐEEPuuuEE]5 jjh]뚍vU(g uQEPEPQ=t+=t{ÐE+E܉EPuuuhEm]5 jjh"](떍vU(g uQEPEP=t+=tÐEEEPuuuEM]5 jjh5]떍vU(g EPEPU=tK=tÐU܅tEљEPuuucڐuhtcUEـE@t E]PuuhcEۉ5 jjhH]CU8g EPEP=tK=t ÐU܅tEљUPuuuڐuhc UE}EfEִ fEm]m֋EP $]륍v5 jjh^]KUg E PEЃ t\(t P>:YZPhc] tufE]Ruuu͉u5 jjhq]dcUg E P%E f=t2f=t, P9 PPh9ZYPh4dE=tE=~=t1EE@fEQuEuufEE5 jjh]CUg E PUE f=t2f=t, P8 PPh8ZYPh`dE=tX=D=t ( ÉEE@fEEPuuuˍv=ufEEϐ5 jjh]/UWVS<g  uVn]SeU؃ fdMfVfwfft3 P7 PESP7ZYPhde[^_fuƋU܋BEċE̋xEą~* ]čvPt2t242 KtU~& PEt0t040 KuEă P"quuuS 6 uuuV51}܈Љˋ}̉эL QZYũ uPP uPu؉E+ 5 jjh]NUWVS\g  uV]SEP hWRuuuM؃fUffwf;ft4 P5 PEWP5[^Phde[^_ÐfuŋEhWRpp0E5E܋XXZUB@؍@ Pr;DF ƅ~/ F@FUt:t:@4:Pw KuE%M=qt MjuA]aC< ЈC<]C@뿃hh.b1ZvuuuS3 uuuV31ҋ}Љˋ}܉Ӎ\ SfEx9 g @x9 u܃ uPE PE Epp0EUEBE BuuurE%=ju ]*C< ЈC<]C@PSh5 :hh.b1#5 jjh]USQ g  u ]É5 jjh]t ӉUS g  uI EP% f}t*h]uuugEt  ]Ív5 jjh ^랍vUS g  uI EP衿 f}t*h^uuuEu  ]Ív5 jjh1^h랍vUS g  uI EP f}thD^uuu_Eu  ]Ív5 jjhZ^랍vUS g  uI EP虾 f}thn^uuuEt  ]Ív5 jjh^`랍vU(g EPEP =t7=t3ÐM1t U܅tRuPuE֐ EPc0PEPR0 PQhC0YZPhdb두5 jjh^SU(g EPEPI=t7=tsÐM1uU܅tRuPuES֐ EP/PEP/ PQh/YZPhe두5 jjh^SU(g EPEP=t'=tÐER#EuPuE袻 EP.PEP. PQh.YZPhPe롐5 jjh^0cU(g EPEP=t'=tÐER EuPuE EPC.PEP2. PQh#.YZPheB롐5 jjh^cUg u% HMPU@PRQEcÐ5 jjh^0vUg uE PÍv5 jjh^֍vUg uP5h 5h 5h Ív5 jjh_ʍvUg u) QufERuU죐 茹É5 jjh)_X뾍vUg u!P pp0H Ív5 jjh@_ ƍvUMUVf9S։tfwtfwhft ff==1=tU +Ue[^É=td=uU EJ;HtҾ9λ 6tt4tt49 uFU ;rE1늃uu ƒrEm E1Ҁ@tEGi9f EfE]E fE] Ug ui B=t#=|!-w1zfBBÍvB P* PPh*ZYPhe͉5 jjhY_{U8g E؃ PѷEPȷUM؃ f9tfwVfwJftCft<uuuuuuufEPuȉE莶5 jjhs_TWU8g E؃ PEP UM؃ f9tfwRfwFft?ft8uuuuuuufEPuȉE׵Ð5 jjh_[U8g E؃ P]EPTUM؃ f9tfwVfwJftCft<uuuuuuЃufEPuȉEÍv 5 jjh_WU8g E؃ P衵EP蘵UM؃ f9tfwVfwJftCft<uuuuuu^ufEPuȉE^O5 jjh_$WU(g uQE؃ PEPXuuuuuuufEPuEܳÉ5 jjh_떍vU(g uQE؃ PmEPdXuuuuuu`ufEPuE`É5 jjh_,떍vUg u`E P  t7pp0uuu t  ɋ B 5 j'jheUWVS PUP8Xp UPuSU裐 $tx;stHE[USC sf{f{8C< ЈC<C@uS:g u e[^_ÉP3h$f5 yPh_3hznUWVSE؃8P螲 hHfuuu PUԋP8pUYP Xuԋ]SU#tw;stHEЉ[ỦSC sf{f{CC< ЈC<C@uSEg u e[^_ÐP3htf5 腸Rh_3hoUSPE%= ]t=t]ËEf@f=t P$EE] EEf] UE%=tÍvEfx u@@ f@@E 8p ERUS4g 8E PEP h`uuui uuu`h_uuuE% to h`Z uuu詯E%=t]Ðju?]_C< ЈC<]C@Ðh`uuuUE܈끍vuuEuPXZEpp00EȋU܉ẺBEЉBAv5 jjh_US$g $h`EP胯Y[uuuE؉$h h`uuuh`uuuE% tq h` uuu;E%=t]Ívjuϴ]C< ЈC<]C@h`uuuQU܊E|Eh`pp0U܋EBY5 jjhftUS$g ,h!`EP/XZuuuE؉$ h!`uuuh$`uuu/E% tq h!` uuuE%=t]Ívju{]C< ЈC<]QC@h!`uuuU܊*EzEh!`pp0U܋B+EBR5 jjhfUS$g E؃ Pج h*`uuuZh7`uuuE% t] h*`\E%=t]ÃjuS]sC< ЈC<])C@ĐEEQufEPEuK덐h*`Epp0_E@ Epp0͐5 jjh=`US$g E؃ P謫 h[`uuu.h7`uuuE% t] h[`0E%=t]Ãju']GC< ЈC<]C@ĐESuPfEuE$E덐h[`Epp03E܃ pp0E@Y5 jjh g踽US$g E؃ Px hi`uuuhv`uuuE% t] hi`E%=t]Ãju]C< ЈC<]C@ĐEERufEPEu덐hi`Epp0EH Epp0͐5 jjh|`茼US$g E؃ PL h`uuuhv`uuugE% t] h`E%=t]ÃjuǮ]C< ЈC<]C@ĐEQuPfEuEħE덐h`Epp0E܃ pp0蔧EHY5 jjh,gXUg u Dp Ð5 jjh` ڍvUg u Dp Ð5 jjh`ڍvUWVS g }u_Dp u e[^_Ð w聎 wwwD$ Puw 3X$WK뭉5 jjh`X눍vUS g  uAf{ t!RSCfEPu]E+]ÉC<tՃ SQ3hLg5 mUWVSEP諦 f}hSuuu=,ƅX=k ]~e5k W_-X k h,V袺XZh{V蕴k WV{v4$g uvf{ tVWSCPfDžHHLPؤ t 5k t e[^_É SC<t SP3hlg5 ojhhVÃJh,Wh{XV胳{;~uCE܃u܍XV[]׍v,US g  u- G R[RSfE Pu]E解]ÉQShg5 뼐UWVSLg rh`EȃP-XZuuu}E؉$] h`uuuU؉%fHt(ShgSuuue[^_ËE܉E=tx=tQSRP4^_Phh뷉~ Mq;^~&F t7}PGpjSU؋w%fE؍[Eljq~Epu1I9v6F 8tʋEVP1IQjS2EU؋p%fE؍D냉5 jjhaеrUg u  0 5 jjh+a茵΍vUWVS,g uuuv C PfEEfp~0}ȉ WEȋU܉ẺDEND Quuue[^_SVhCa5 xqUS$g 8 EP訡 f}hHSuuup9 ]U؉%=%=tV%t:t hHS]ËERufEPEu@ډEQpp0f{ud9 t3hhhnU뀉f{ dC<V Su U< SQ5 jjh^a耳UWVS,g h`E؃P9XZuuuEȉ$]Eȃ =te=t"VSSPZYPhh谼e[^_Ð~3u;^~PvjSuP[tt4뽋uKxLu1I9~P1IQjSu3WufEPEu륋u5 jjhvaXUWg E PE =tR=3=t #}PuEfEju ۉ=u͋EQpp0ߍv}1WIuMfEQ5 jjha蜱XUWVS,g  E؃ PZ huuuEhpp0ExUԋBH Rppp YUԋB;x}2 v3P H AD3AD3UԋBG ;x|HE%=te[^_Ãju芣]誳C< ЈC<]`C@hhh.b5 jjha`UVS g E؃ PEP h^Suuuuh^Svv67F@@PvGDF trËC@Cuu܍@uPE% =^te[^Ãjuk]苲C< ЈC<]AC@ƒhh.b1ۃt5 jjha8UWVS<g xEȃ P hp}EP_Xuuu2E؉$]ě hp}uuuFhp}}ww7 WB@9~VB@PjSWB@PwΩDF ƋN9|"IvB BBIBB 9}uu̍[uPE%F =wte[^_ÃjuȠ]C< ЈC<]螳C@hh.b\1NW5 jjha莭lUWVS,g $heSEȃPEXZuuuE؉$}' heSuuuheSuvv6H ^;{~PsjW!^Ptt4OC9#IBBBBBAC 9~HCE%=^te[^_ÃjuT]tC< ЈC<]*C@^I5 jjha6UWVSg  E؃ P hbuuut}fW= q= 2-$fP7iitfXtXPhw -V19H!t9PC019H:PhbS19H!tVȃ j G7h$bw,趦V19H!t:C90.bt,bP脦S19H!tVˍvQw@7hhXe[^_à Poo7h1b($5 wwwmhZQw7h5bXZ7h>b$5 www*hYby j5 juuj ۞>5 jjh]bUVSuV19H!t7vPCtRh-b5 ,S19H!uE e[^VUWVS uZp S119H!t=Jt6p t.9$R19H!ЅtHt =p u׍v~cg u7ue[^_5 j jh i٨Ep e[^_R6hi5 @g 뫃 j 軞x9 tbg @u6 x9 p Ap qH p [Q6h0iPj h5 țg 묃hh.bñ1ɋg 듉G j x9 g @uY x9 p Ap H1p Hq p ! p 5 j jh>i芧Pj h5 g 뉃hh.b1ɋg mU=p p t$5p hp =p p up p ÉUWVSj p x9 g @5x9 v6vp 19H!tBCBCCtF3C^g @u S}p p e[^_WSh5 ԙPj h5 輙Vhh.b躯1@UWVS g } O19H!t8vsj,uVPV"S19H!u΋O9tvwWO9uE P9H!tU j 膛x9 g @x9 CBzPS19U H!uO19H!tP sj ,x9 tTg @u3x9 EBrPS19H!ue[^_ÉPj h5 1뵃hh.b21뢍vPj h5 hh.b1PE0hKi5 ×Xu R0UWVS E P9H!‰UEp,vExju_ SPS;$ x9 g @x9 EBZPjWVPV$ 萙x9 tXg @u7x9 rPEzP19U H!‰U8e[^_Pj h5 衖뱃hh.b袬1랍vPj h5 m+hh.bk1UWVSu F9Ƌ}tVtAvKQ<Ѓu9Qf=q ut&q tV#t Cf<q uVufq ufEu!e[^_à hjD G QUFwÉUUSM ]t :ERCPt $Åt B % tB @t BBөUUVSu] M:ERCPt [^Éw$kB % 1ۋBBBB @tB٩ɅttC1B tB맸렍vtUWVSECȅɋu uVwEȃ[^_ÍQЃJw jtك91}z0tE@tx뵉GH~륊CuEV t݀}8t׀}9tCLЉGHÊSŠ0t8t9u맍vMuK]ыUCr 0tCLPC0u ~;M ]ȃ7~K1Q2ctlxUCr 01ɄECU0фt 0GHC0u{WC u jw1hAw uF @GUVSMU Z A1t4ŠtvAŠu}tA1,t[^Ê<}tA1tߊŠtAŠu}뵍vUWVS]EE Uz 8t'vEDPЉEC 8u܀}C<}tLEЊ:tMTBЉUC:uE9E}Uy[^_É} }~ MYQy?</A%EE<)Ut@<:t<Ci]iUU~-Uue]<)t<:uċ}E }!ǀ;)t GCEt#e9EtM ]AAM]}EUyvXu @뀁 usts mu˃ ^xu Q I AE7]@EC]DEEM{?MM]B% B<]ۉEuCtmuJtUE}3EGEG]G}t$E@EEUBUEs1EъE1]C]؃uEM/AMŠE-뱐}}뱀FwAt B]M+M1DžlhEjE~ MU ]$)tOPhEuPEMDEAG1AH!ȉAAM]K]Ox_EUDBUt+GBЉU)1҅J!Љ‹uEMAMPhuu~h]OyM)]A)CSЋ})1҅9GCJGKG!։}uFUE+l:0Rh]uCSEUDE]9|)Phuu贆GhE]9|ڋ]ƋMAQ99uE)ȉl!Ey}]]]pEMuTt>Kt*EMEAEAAM] TEUBUE}G}HJt_}AEGEGG}]x-;]tUE+EEEBEBEB뎋}EG돋U<t <uE9UtMA띃U똍vkE]C]"vUr UESuM} ]$HtEtHM1}w}UCU]`Ew{E"]]}G}GEEEE5EUBXU]p^XE}1EDž|[\}-L(EtU(B4D*E|EX]p]t}t4}t1D.ЋMF~E 3}u狅|x‹EtMA|UBU]CC]܍vF$]_]Gpp\t}9p|f;p*xOL(EtM(AT(ȉ|FE;p~F묋]yu(juM 1uEP pVt}8Džp:U zu(juU 2uEP ލFM(QE $o1D@D.F~1D@D.F~1D.F~1D.F~1D.F~1D.F~]Lze]C<:t <.t<=Qu(EPRH]DžtM({:y]x^Eă)PS[xuEt 1H!R1ɍ kx$tt-1D.FB~A~΋]C]E 1vD.FB~ЋEw^vXDžt]M}xzU z)XE]pu(juE 0uEPUU ]ĉ]\MM]]1EtU(B u#\tuE@EGEX]U(pB <y~8MIMUBM ]$;UB]Kz] ]Ȑu(juM 1EuEčEPj \]ĉ]끐]C]pj u?؃ ~%MPM6]CS]4F E!lj}UE u(BP u(uEPEPE@P$}7 ÉEC]p uUWVSUEE}(E,uE$D]EU؉E䐋E xE UBEE BE u E t&E@UBEEBUBEBE u0UREPU RuEPURuV0M)ىCKtUx 9tEU,;}E E8|uE8]CEEE+M9UBEBUBEJU] BۉExB UBEE؈BEEUEUe[^_ÍvEVS(xUJJEzEU1뷉UWVSM} uFw-$o~Yڋ!!9t Eu ͉[^_ÐAAQ98t릍vUVSu ]jjVCPzFYۍC;~~{@WFPu ! WuPPPU Ɖut2@t/Jt#~?FuDž1~?tx@=~ Džw@(@‰ELx ^C߃1.$Lst<)tF@t<)u>FMٲσV֍RB>)xĴ?F<=\CFPt]uKtr!~{]SP-~ SuPPPƉE v`EPju uPU ,t $Cp }WFPfu | WuPP@PƉE uat:t'~~ ܃u믋TFX uEq xzUWVS}GU u G8])O4192Et5K~v8FA8:uK[^_1K~萊FA8uKԐUWVSEE } EtUM]UM]GE~,X~ _G Í4E;p GG$TuvPjuuuuGPue u&GWǀ?8tEEe[^_EEP,tU;P{ { 5{ ЉuEMً  Cu9DT |݋EU<{ { { @{ { e[^_ÃPuIDF t!={ E裤{ G{ 5{ hh.b W1Ɖ jnCx9 tIg @u(x9 E裤{ { 5{ ={ Pjh5 @hh.bV1묃Pu-HDF t${ { { 5{ D{ hh.b3V1á{ {  PBx9 tLg @ux9 { 5{ { @P{ { Ph5 ?뽃hh.bU1UWVS{ H{ { EIU죌{ x5{ ={ K؍[T ƋD  Iy5{ EH{ U{ x4{ ={ KvKT ƋD̀w ̈́w Iy5{ [^_USR]CtS~+Wu )[h{jA]Ãu߃ Cp$[ 륃 svE]vUSQ]]]gvUvUVS uVt e[^à V| ^ZPj.AߐUVu1St; Vat0C=t=t V2 Y^Pj @؍e[^à V ZYPj@USj*ËECC OC{ Cńw C؋]USS]tg @ 3GCtg @uX suGC t{t P)g @u ]]AGPSh5 <ܐRPh5 <두QPh5 ~<YU塈{ VSńw ۋutV3;t[ue[^ÉUWVS uFWt}1tQ{ ńw t vtV3U;t[uOt Oue[^_Ív Fp$Zv G~t6 vZ밐UWVS { ńw 1ۋ}tW3:t ދ[ue[^_ÍvUWVS { {Ph{h pGXZ5,h  { ŀw @EEtkE޿{tv޿{u] h{ Ph{h F^_5,h { E@Eu5,h{X e[^_à S륉 h{뙡w Rj| UWVS E Eu>]t:SSVuVSSSh| h NF,E E 0e[^_ `,{f5,h{ {딉UWVS}7 ËG-wY$x}Su SSh`| h E5,h A SSh.| h E5,h  xw e[^_à W{ tvŀw Xt1w u S@{ TC$[u{ 7P7 Ph| h D[^Tw QSh| h DXZ5,h UAUWVS E -]uw=$}QSh{ h |DXZ5,h  Vh{Sxw e[^_QSh{ h 8DXZ5,h  Vh |PSh{ h  D_X5,h  Vh|PSh{ h C_X5,h f Vh|\PSh{ h C_X5,h 5 Vh*|+PSh{ h zC_X5,h  Vh7|QSh{ h ICXZ5,h  VhB|QSh{ h CXZ5,h  VhK|=`,u޿{tSh`,PDq5,h{TՍvUWVS u] 9C~{usV[ ΃WtE Ee[^_+9]=xw sV9=xw  e[^_4{=xw vu Cp$9XZ=xw s V09=xw  e[^_-(=xw  stQ9pt sZYPjj8wQh`,Vsi$$`,=Ge[^_à shUVS]t=C~su s[ ӃWtjj7e[^+ 5xw s95xw  e[^&5xw u CpY$X5xw s F95xw  e[^5xw v s_xt s\YZPj7F=`,{Ps$ sPs Ph{ h ?5,h c$`, PQv1[ZPva v~ËFV S CEvhDj%. v PSv[ZPvPv v v PQv*UWVS 1҈Ћ=} ]Ή߹эL} 9}S5} )e[^_Ív P.ӐUWVS ]SBK`$L scE e[^_L h|?_s$ *Ys E 뽃 h|^sg$MNj} t: h*bXs>$ Xs )EZ hQă s$[b[ Cu|EPsh;h ,E  hTCXs$X.Xs$_s shT릋Ct=P딸f hXsH$lXs3$F ) h[st4} 1׹эD Ӄ"t%\tF@u͍e[^_\@\\@"١} t+ h*b=Xs$ (XsD hQӸ tЍB $| V_sL1у|([E du\ s s4$ VXs$ sXs$ ^Xs $ IXsp V/Ys$ Zsy$ Xs 뺃 V^sPRh;5 ^_hqj![} t 4$} 4$ Cto= t P$65} t< h*bjY s$6OZs  z hQ¡} t E|E{ t4 s 8!$$$CLf} tS h*bX s $$$Cu   P hQ뫐 h[b sT$HXs Ew h#Xs$ĐUWVS ]t-SBF6$5,S$e[^_Psh;h ([^5,h s shTڋ{tYXPȸSX5,C8 tA*PdXsK_X5,hI^s 0^_5,hwV뽃5,hYsXZ5,hl_sY^5,hF [ 5,h[ } tЍBw$5,VSRh;5 ZYhj sN_X5,Vm5,VAYs(XZ5,h&Xs ^_5,h Ys XZ5,hXs5,VYsXZ5,hXsT5,V<5,VXs}1у|(5,hw^Ctz t P/XZ5,hJ5,h*bXs ^_5,hYs _X5,  hu5,h|= 5,h*bY^5,h XZ5,s $s_X5,hasu5,hDO hYs} XZ5,5}  }  뮃5,hY^5,s $XZ5,h{u5,hH h^s} Y[5,5}  } v볃5,s`XZ5,h5,se=| tQ5,s| XZ5,h_X5,h Y^5,h SJ5| 5 h h ##5,h UWVS u} @Fuwvv  ׃  V$ | 4$j`9jjUE| UB9ЉUE}l9Eu | V<$bC (g @Cu Ee[^_+ P5 h5 Ѝv| S5 h h !YX5,h VXZ5,hTbDY t%XZ5,hɁK";]}| 5,5 Y[5,hTb<$XZ5,hɁ W 5,5 Y[5,h<$yXZ5,h7륉E Ee[^_Wue[^_UWVS u = }t=tjja {t{P4$C 5&CY[5,{t{P"$XZ5,hÁ$} 4$ } ^_5,5} ,E Eȁe[^_cUS]Sx9 tCg @u#x9 t؋]Ãjj^PSh5  ƃhh.b )1ۃUWVS E=, = _   ,,  f  fP D:9É ) 'Es' ~  ' D)ĉ% 6RSWP4 )č% uU H= ,\;   DG9 {=, `5 tl,8=sw, 5  ƁZ 5 w69 5  5 6҉ ~)Ћ T  , w$X   ) ,)Ӆ  u{Ρ  V F5 66 5 f3ƍ=Z w f9t 4 = _5 jj h4; t#PPh;5 ; u݃5 j .   W0h05xw ug bxw ؃5,hh뱃5,hpxw axw M p8i 0 L JY 0BL I,@ pp 0X         x i Z K < -       xXW" Sv$9tjjgE;t7SWa<$Y$QN5,hxÃ5,h룃jjk p#XZ ph<[ p p#^_ ph̃5, pCZY5,h 1g @u pP ph5  ͉P 0pj  j jK   @‚@ ! @Y j    P j!Z   S5 g FV ts3h5 # j4    g PuP1h믐 j)  8 jO  b jP  H jQ jRà jSփ jTϋ A  pjYf pj TP ppj

| ?m @^ AO B@ C1 D" E 6 I " $ 5  , . F \} n G_ *P +A -2 /# 0 0jW V0pj S0jj(ZYPj  L  0jWjjjU: V0p졬 S0pߡ QpjjV Rp0P pP ppӍv6@PVh05 5 6f~2P^4`h5 Ctf<^ً5 P64`h5 D5  I `,=X5 H!ÁEw!39[CvE dPBE parsUBe erBrorP 4`׺h1ȋUЍDP5 H!1w$9VCw5 ܃  u+g @ uh  o  `5 tFZ 5 wf6 = 9tX@ ,-  t5 jjh-_; t#PPh;5 (; u݃5 j 9 t4g @uT 5 d g @u 5 J e[^_P5 h5 R5 h5 됉6 =t],u; ,5,H Xp  =  5 jjhDt 묋= t4g @uN 5 ^ g @u 5 D 1S5 h5 V5 h5 떉=أ ,U,u,k 4`Rh[5 %Puh5  PGPh(0}1ȋUЍDP: ~GvtPu^X4`u|ZYhumG\ hH01<`΋E֍D0E h65 ,uM,t , ˡ,,C  S H 4`5,h5 둁`މ5 4`5,h5 k5 jjh  4, ,5 jjh ,u$Mɸ5EE,5 jjh? V5 h5 9P5 h5 =  h5 t4g @uQ 5 g @u 5 lQ5 h5 S5 h5 듉5 jjh1P !UujÉUSDe 5,  u E4 xS~hSGShn]ÐU4 < @ ÍvUWVS 1>` 1t)Ru^t$~s799~1e[^_Ð{d UM1` v9Lt @>~1Ë` vU8 B < 9t#U4 < B4 < Í8 P54 DF t 4  < 릃hh.b/1UWVS54 =,L ~}k ~tk ~kP ~bk ƅh,Vs_Xh{Vfk tT54 VJZYV54 < 54  ,$"NP e[^_Ãh,뫃54 n=%t9t S븍v=,tk ~D H ϸ54 =,륉UEP߃]w$8NøZhlmY۸WԸK͸XƸf뿸I븸H뱸S몸J룸Q뜸V땸n뎸o뇸p뀸jvqlP ]XUVSu@ 'w4$FuW$P hk@ 'e[^à hk@ @ @ ȉ V@ @ @ 뙃 V@ @ u  @ \@ M@ >@ /@ # @  "@ "ue[^ !@ !@ 3fp%fu9_t4fu V$ V@ w Vs@ _@ &SfpfuŃ_t4 < 1@ {fp%fg.tmEtPetKjj j54 ,$&vw4 < 1@ f V@  j.@ kfp%fu1.t EtetPjj54 ,$'^ Vfp%fu"+t-u V@  V@ ;fp%fuhPjj54 +,$'M4 < HX< @  $ $ VN@ :vfp%f1xy1t}2t_atArt#]fp%f j. jr@  ja@  j2@  j1~@  j h`4 < ] h_ڐfp%fu hcR@ ofp%fuՃ hdrt2 j.4 < @ $aK jr@  gt> j.54 < @ $a$r haat( j.4 < @ 뺃 ja @ dt7 j.4 < @ $r} hbLv"t t  j"^54 ,$$ t t Vc@ O 54 ,$G$k > 5 j\Q  A&t hhЃ hMv|t hj뱃 hL=t hJ땃 hO=t hNv hP=t hSV hTf=t hQ6 hRF/t( hf1@ P b hU  }it5 !v@  @ jtS !v/@  ji@  j @ j<[ǡ !tB!. t4 <  h׃"u҃ h hݍv@ @  tۃ tփ1tD !v @  ji<$- @ j<Y@ P  >t` !v<@  ji$-$1@  @ jt vыFtuFFh h h Vmth h h VQt-h F00V1u=t = nF`h h h VucF=tO= t@F 8 t5>Ft FF h h h Vtth h h VXah h h V8Ah hhV!h hhVShhVPhh V PhhVtPh뫐Qhh VORhh h h hVNh h hV.{h h hV[h h hVhhhV= |= u-vD h h11V  h hF00V h h2hV  h hF0h봍vV-w1h 2hV\h F0hh 22V.h F00F F0h $hhh h hhhV h h hhhV h h hhhV ih h hhhV{qhh hhVh hhh h h Ph h  hhhh hh뾃 hhhhh랃 h hhh V] n h hhh V5 F h hhh V  h chh hVhh hhhh Vohhh \Phch h h V0}h h h V]h h h V=h h 6Ph h Vt Ph GvjE(FPh h Ph hhh ViV= |= -v~ h h 11V[ l h h F00V6 G h h F00V " h h 2 h h 2hV  h h F0hV  h h F0hV  h h  hhhhVO ` hhhhmPh h V( h hhhV  h hhhh h h Ph h h h   ^u hhh'VtڋF 9̓ VX v 8 v  )hhhV= |= U-vh22h2vUSQ]t]Ð st?HuߋCE]&tuă s s s 빐U5,脭XZuh,Ug u Rv5 j@jhލvUSSg ]u5,S0]ÍvQSh5 ҐUg u-,,H/ hÍv5 j@jh4뺍vUWSU tl tg,u:1,t*QPhT]SXZSh,Fe[_à h,ݍv=,t,,v h,UWVS5D,5@,hS 9$}5L,5H,hSS]5T,5P,hSS=L)$& 5(,h'S$ 5,hBS$ f$$#$5x,t<]߹ S󥤉$e[^_ÍvrUWVS4h ] SDžnoneƅ% ƅ(jC(jPf+(< t)< t vt+(< t< tCƄ+((1ۄtMv<#0C+(u1ۀ(t+(v P+(C+(uPPh(VÃK1!uuuV(WPh S!$- PfWHVh(P t h40PVWHPPuhdSS 뽍HPWh(PgÃKt hN WPuhS6S ɍHWPh(VÃKt h$'+ P3^HPuhSS*Y[Ph,g9p1Hى $CXZHPsg uHPPBVHVh5 ȉƄ+( e[^_PShS$ؐUWVS$ hT,E}" 0X4ݝ-Xݝ8_$VS# P$P V840uhMSRSM! 0>Z4ݝ,Xݝ8X$VS9"$P($HP840uhkS}S P'_0uhS4Sw[^0hP0HP},Džt(0su S[ u؋t.g x0h5 +T he0uC1Ƅ.qƄ. 9e[^_PShS $ؐUWS]1у QljŠtv<\t(ABuWS1}e[_\B\эvUWVS = uV1ۃt<#C+u슅<`yVP11ۃDždtFv< ,< $<,ud3dhC+udlhP"h1ۃt%v P+hC+huލh21dXSjjjjjjP VphS $PtVhSS5xVhSSdQVhP$XZVVVVVVVVhS$Sh_3 u"d$ h:h3dRtPhS$@xVhSS%|VhSS dSPVhP$VVVVpVVVVVh$Sy4Sh 4dttPh`S$bxVhSSG|VhSS,dQPVhP$VVVVpVVVVVhS4Sh#4dtPh8S@$xVh`S&Si|VhS SNdOWVhP$#VVVVpVVVVVhS4Sh<4h hh-ued;dF PVhhQPCC;d~h3dU;dghPhQ$ VVpVVh<QhPC;d~h03d;dhKhPhQ$2 VVpVVhQPC;d~hG3 d tPhlS^$xVhSDS|VhS)Sldk PVh5P$AVVVVpVVVVVhS4ShZ3u"d hhRucdZ ;dD P|VhhQ;PCw;d~ho3 d ;dghPh Q$ VVpVVh,QPC;d~h3 u"d h9h3 u"d hh3 u"d hh3u"d h0hYudd;dE PVhhQGPC;d~hT4 u"d hhe4dtPhS$xVhSS|VhSqSdPVh PE$VVVVpVVVVVh@S#4Sfhz4dtPh\S$ xVhSS|VhSSdWVhPg$VVVVpVVVVVhSE4Sh4d@tPhS$.xVh(SS|VhLSSdQVhpS$VVVVpVVVVVhSm4Sh4u"dT hh4u"d hh4u"dP hXh_hm hx hh sh Kh#h3 u"d hh| udt3 hte[^_à hqPphSh$ thSL$PphS*$n th!S$R xh;S$6 0y+*~OV .ztPhS]$XZVpVVhS?SrhtPhS$VY_VpVVhSS7tPh@S$ XZVpVVhdSSnVh hiVh8S h\EVhS h!g tPhS$UxVhSS:|Vh(SSXZVVVpVVVVhHS$S hUo tPhQw$Y[VpVVh4QMPp tPhQ$XxVhQP1|VhQP _XVVVpVVVVhQ$P tPhQk$xVhQEP|Vh<QP[XZVVVpVVVVh\Q$P, tPh,Q$xVhLQP|VhlQoPY[VVVpVVVVhQ@$P} h\  h9 tPhQ$!_XVpVVhQP VhHS hlr h` hK hr6[hShVhPt h PjSVo獝hShVhQƿt h@:PjSV"獝hShWhQySWhPZt hpASPhQ.$lXZVWVVhQ PF/ SSVhhPQY[VWVVhPQVhS hpVhS hLVhXS h(n P;VphQPL|VhS9 hRv1Ƅ+ PƅivƄ+? UWVS(E ]}E]]u WtEXEX Xpe[^_6PVSuuuuW ڐUEU @,D,EUH,L,EUP,T,X,\,?@6UVS ] uu ZYSP pe[^ 6UVS ] uu ZYSP pe[^5UVS,E]E]E$] u]u` EXEXEX pX$e[^5US] u& X,]g5vUVS ] uu. ZYSPPpe[^15UVSE]E] u]u EX EXpXe[^4UVSE]E] u]u EX$EXp X,e[^4UVSE]E] u]uf EX,,,,,,`,d,$@h,l,$@p,t,$@$,qtHdt@l@puP5L h 5 S) hn Ph5 *g  h@ Ph.5 g  h Ph?5 ΋g  h PhP5 蠋g G5 jjhag UH uÍvhr5,H ?TىUWVS H ۋu} u'ۉ5(,=,u [^_Ív [^_ҐUh蠌ېp,]h, E]`,PE]PEP$,j,j]hEP聉j,h]jEPf h,j]jEPH$,uÉ,],PE],PE]PEP[ʉ,],PE],PE]PEP'3vUWVS,1;=L YD hD 1$P $@诏;=L }C|u9t;=L | hD Β$P ’e[^_ÍvVC]ԋEPC ]ԋEPC]ԋEP[{EEEE?EQP@hV9C]C$ E]C,]C4PhV]C<]CD E]CL]CTPhV]C\]Cd E]Cl]CtPhV]軍݃E@Rh?hV ݃]ԃ EPhV$vCT]ԋEPCL]ԋEPCD]ԋEPC<]ԋEP詔jjj+G4$-3PjhV肌 h?hxC]C ]C]E h@Ր h hh@讌 h hh@藌 h( hh@而 h( hh@i h?hh@ҋ$@V h hh@/ h hh@ h( hh@ h( hh@ h?hh@S @PĠ;=L |UhD 謇$P 蠇$蔈h?jjh?jjjc jjh?R jjh?A h=jhL?- jjh? h̽jhL?h?jh?jejjj jh?jօ jh?jŅ jhL?h=豅 jh?j蠅 jhL?h̽茅h?h?jjjjjk h?jjZ h?jjI hL?jh=5 h?jj$ hL?jh̽ǑvUWV EDEELEEE?E?E?E?E?Eu Ep~[p,Hl~6 ChsdClChPh I$ m$D a$eXZEwPEE @&EE@ EE@'C]C ]C]C]C$]C,]C4]C<]CD]CL]CT]C\]CECu Pjw,u t4$U1e[^_PVh?v(Lx̃ VЃ뷃 VЃ뢃 v FuF xt Vp랃 WXv jht u vt[^h) u t͐ u s jh u Gt뭐UWVS@uF PPDžm1DžHV0DžLDžPF4TDžX F8\Dž` F tGC t= t34 t)p t t t ۸H t؅PE@ 0eÃ1t&Ss Ѓ B)@REUbǃ1ue[^_Í>PuVs]1  t @=~ˋU<  hN h= h hw^UVSU 1۾  9tC~e[^Ã4Pk ِUUM ttItPrB p0#`QPB USQ]u]ÐPC 0z[XZC 0jǃːUSQ]t u]ÍvPC 0iǃۍvUSP]ut u]ÃShx@fǃUEP ÍvUE@tÐUEÉUUJt1ttU(UBtt u Ð}fE fE PEPQM B m]mMM0m]mm]m]etUUUBtt uà jjE PQB 0:` UEX ÍvUEÉUU EÍvUE@ ÍvUE@ @UE@ @ÉUE@ ÍvUWVSMɋ} uZE@ P.]Ã1)EPh `XZEPh _YXEPh _XZEPh _YXEPh _XZEPh _YXjh WXZjh WYXjh WXZjh WYXjh WXZjh W ShuVWjjWuh cWY^uh TWXZuh EW_Xuh 6WY^uh 'WXZuh W؍e[^_ÉE vUWVSuuu aǃ~1} h DuEdEuHhb uXY[h0 uXuuh| uXh uX]]SXZVjuuh\ uyX1] 9EVE 1҅;f>PfD>$$$fD>  $ $ Euf>PfD>$$$fD>$$Eu@f>PfD>$$$fD>$$Eu f>PfD>$$$fD>$$Euf>PfD>$$$fD>$$Euf>PfD>$$$fD>$$Euf>PfD>$$$fD>$$Euf>PfD>$$$fD>$$EuPRh u.VE}'EEE9Eh uUujjh Lbuj jh ;b uj jh 'buj#jh b ujjh buj jh a uj-jh auj+jh a ujjh auj jh a ujjh aujjh a uj#jh$ naujjh' ]a uj jh: Iauj jh: 8a ujjhG $aujjhb a uj jh| `ujjh `EEPh ufTuuh uSTjuuh u;T uuh u%Tuj'jhH `uh uTuj jh ``uuu EuQuu5uj jh -`<$5^[u\e[^_Ãuj LZ빍vPPh urSEC}'Nu닃uj ZEh Bh u(SEF<8x{F<8xjF<8xYF<8xHF<8x7F<8x&F<8xF<8vvՍvčv볍v 뢍v@둍v{UWVSE ]EEECEu{ C jp0OC0t/ SQEEEE E}Ee[^_Phr R hs R ht R냉UHE E}$E\$(\$ E\$E\$E \$E$]S[E0EE ]]UÉUh hQt = tPEPh ZRt[ u UVSu 9މ1ɺ9~A~[^UWVS E EEE 9E]}}}{}fE fEMm]m}1};u};V $m]mE8EM U~ UACJuF;u|EE 9E|؃ [^_UWVS u1 хyt=8t%vVSZOu t< tC;u1e[^_ø hW 묉UWVSU U} u}EU}EM9M}mEE 9E}OE~7MUʉUˋM1M1M1ЉGFKuփEE u9E|EUu9U|[^_EM9M}EE 9E}%E~]FGKuEU u9U|܃EMu9M|럃} ~ }} t1늃}~tYEE9EhE ~+U UE~]M1FGKuMuۃEEu9E|"EU9U] ~M MM~ ]FGKuMuEEu9E|tVEEE 9E}0E~]M1FGKuEE u9E|EU9U||EM9MiEE 9E}"E~ ]FGKuEU u9U|EM9M|(UWVS(EEE} uEEE:0U]RtOE$hujVWujh JE(uuSVWu tF~ ~  uhujVWuuh SJE]럋EEe[^_VUWVSh u} W1҅t#WP>Ɖ$Ttu 1ҍe[^_à wlVZwcVۉUWVSu)܍FEЃ9r˃u<$QXu~Xus;ủuu'E1ủÉÉ$H WVPuuuSEXuủ}PUUEPh K^_EPh KY[jh CXZjh C t} x }AEE؃xEẼ u@PUHEËEt E@ E w3$ >FFC CPRQWC܋ FC;uuԃ} }  uhhjuuju h B0 ubOuh BY[uh pBXZuuR EPEPEPNXuOjuhuujF 뀃j>FFC C؋ FC9tC;uu ً 9uڋ 9uڍv>FFC 9CFC~C;uu>FFC 9CFC~C;uu>FFC9 CVUUUCFC;uuM>FFC CɈ9ҍFC~C;uu>FFC CɈ9ҍFC~C;uu>FFC CɈ9ҍFC~C;uuVUUU>FFC CɈ9ҍFC~C;uuHR$E@u}fE fEm]mE؃$JэvE؃$ ]۸t MA } tM} t* uhPjuuRu h ?0juPuuR jMɸtMA 뉃}ut MA EPEPuuHEZtNuhhuhQh @uhhjuuS=t+===x뇻뀻v;E&xuuF?E hE?h]t( u{F uA wh h3 EPvUS EPj]_>YXuh @I Sh(h C Sh(h C u h(h C uh(h CE]USuu uou 1҉Ћ]Ðuuu uGuUSuu u+u 1҉Ћ]Ðuuu uSuUE؋ E ً Eڋ ÍvUEt ܋ Ív܋ dUEEu      @ߐUE ÐUSPEtHPh0 T jk A$I uO jEpj?\6P$A1]ÍvUEtHPh0 SEhN pZ1ÐUEtHPhh kSEhX pi 1ÐUjw[U5h9 B=tjt"5 jjh^ I$*G5 jjh| IZY5LF LF 0pC@u h <$뵃 h UhEtHPh RP5|,Epu EE EUPUEEP@UPDUU$jEjp05@1ÐUWVS }}tE  e[^_ËG8uPjj jw Ajj jwA$Pjjjjjj|,0#HE 901룍vR5|,Pu Djj jw mAjj jwZA$Pjjjjvj6띐US]S:H. S\BH jjh|xh SVDjjhDxhS?Djjhwh8S(Djjh xh2SDjjh$yh SCjjhyh SCjjh0h SCjjhh SCjjh8h SCjjht3h SCjjhh SpCjjhxh SYC1҉Ћ]U=, E 0> e[^_Éh,h FCߐh,h .C뮐 ( K  hh5,S޿޿uj j@71҄t< tvCBt< uPRu Q ju h ;tCx ;{e[^_Ív SGCu:޿t޿yZm j[ jQ jG j=u h tu h "Bu PXZu h yg @u W4x9 Kg @#x9  h4x9 g @x9 CX uv j3x9 tDg @u#x9 \ \ X @X 3Pjh5 0Ńhh.bF1뱍vP5\ 8DF uhPhh5 0)hh.bF1Pj h5 [0hh.bYF1ۃvUUBBÍvUE \ @ÍvUWVS u E1ҋ^E߈щM}ыEL9KPS7DF tMF&M Ee[^_q7hh.bE1͋UU ]АUWVS ] ESE1uыL9ȉE1эL9Ms"EE1эL9Mr3s6DF tUCuU Ee[^_,hh.bD1̋EE UUVSj;]sfX%ft [-4Fљ[^ÍvDUWVSju0x9 g @x9  C 1} Q0x9 t\g @u-x9 u P;C'Ce[^_ÉP} Qh5 -뭃hh.bC1뙐Pjh5 e-5hh.bcC1ۃUWVSuV ۉtV3q,t[ uVWe[^_ÉUSu@!E $9C]ÐUSEPPPPPhH S85,S]ÐUVS] ;,utpSB='tF9t; V!$C0Cp! Ph h,81e[^ø(ru C0M܋CHPB='t49u [;,to V6!$CH@0CH@u(ruŋCH @0U tm 9tU A ÍvA P5 *3DF t  붃hh.bGA1ڃ j -x9 t/g @ux9 P Ph5 *ڃh떍vU ÐUWVSlu]  O%=?$t F( t9RPhRbh` 6Y_5,h` KY_SvHe[^_QPh+ Ńh!vdXZ5,h"vXZh!붃Sv:_X5,h듃5,hY[h!v XZ5,hwjh!vXZ5,h|!tC5,h4 mXZh"v_X5,hLY[h"vHwh!vu_X5,h!t5,h< 둃h!v;Y[5,h5,hI XZh"vY[5,hXZh!\5,h_Xh!vY[5,hQ aSvXZ5,h5,h  "5^t*<\tQ<"t<5, Ch uփ5, "h 15,ChV ǃ5,ChY vvFٽf f٭ە٭P$E@\ tTRh` 3Y[5,h` 5,ha =XZV5,he F0h` 4WF0hl 뙃5,h*bXZh!v+_X5,hY[h!vH ^_5,h5,hq +5,hz XZh"vY[5,hiXZh!FHp_X5,hEY[h!FHpHm5,h*b [_h#vJ}Quh h` T2XZ5,h` Eh$P ^_5,hEmh PY[5,hE'h#PXZ5,hTEh P^_5,h&Eh!PRY[5,hEUh!P$XZ5,hEh!P^_5,hEh!PY[5,hnEh PXZ5,h@Eă=h Pl^_5,hẼh!P>Y[5,hEԃRPh;h` (0^_5,h` Y[5,hE؃Zh!PXZ5,hrEȃh P^_5,hDEh PpY[5,hEЃh PB 5 h h` F/XZ5,h` ^_5,h]؃E?7.M5 SƅR0^_h SE*$P5 5 h| h` .^_5,h` ! 5 h h` m.Y[5,h`  5 h h` C.XZ5,h`  5 h h` .^_5,h`  5 h h` -Y[5,h` y 5 h h` -XZ5,h` O 5 h h` -^_5,h` % 5 h  h` q-Y[5,h`  5 h h` G-XZ5,h`  5 h h` -^_5,h` Y[5,h Q5 h h` ,XZ5,h` m k ƅ5 S.XZh% S($N Q5 h, h` i,XZ5,h` }5 5 hJ h` /,_X5,h`  5 hg h` ,Y^5,h`  Sh h` +XZ5,h` j 5 h0 h` +^_5,h` @Y[5,h .XZ5,h E~5 5 h &PSh h` N+^_5,h`  1҈Wο,)VSSY^h Sp&XZh,L5,h mn5,h U(5,h =5,h %5,h V5,h 5,h 5,h s5,h -5,h 5,h 5,h# j[5,h* R5,h2 :5,h@ "5,hC  C5,h*bXZh!5,hS XZh D5,h[ _Xh vY[5,hXZh Bh vY[5,heXZh 5,hc F_Xh vY[5,hf q5,hV =5,hI _Xh%v8Y[5,hXZ5,h 5,hI _Xh%vY[5,hXZ5,hA 볃5,hI p_Xh%vY[5,hOXZ5,hy m5,hI *_Xh%vcY[5,h XZ5,h'5,hI _Xh%vY[5,hXZ5,hF 5,hI _Xh%vY[5,h}XZ5,hm 5,hI X_Xh%vY[5,h7XZ5,h" U5,hI _Xh%vKY[5,hXZ5,h5,hI _Xh%vY[5,hXZ5,hj 5,hI _Xh%vY[5,heXZ5,hl 5,hI @_Xh%vyY[5,hXZ5,hu{=5,hI _Xh%v3Y[5,hXZ5,ho 5,hI _Xh%vY[5,hXZ5,hE 5,hI n_Xh%vY[5,hMXZ5,hr k5,hI (_Xh%vaY[5,hXZ5,hu %5,hI _Xh%vY[5,hXZ5,h@ 5,hI _Xh%vY[5,h{XZ5,hx 5,h{ V_X5,hDY[h#o5,h ̓5,h 뽃5,h 뭃5,h 띃5,h 덃5,h z5,h g5,h _Xh# 5,h XZh#v_X5,hoY[h#vHXZ5,h 5,h ;_Xh#vtY[5,hXZh#vHS^_5,h E5,h Y[h#vXZ5,h_Xh#vHY[5,h 5,h XZh#v_X5,hpY[h#vHXZ5,h 5,h SjjhS eXZSvSjjhKSFHpSjjh-SFHpHSjjh[ Y_SvSjjhSvHSvaSjjhSjjhc Sjjh"Sv& h hk VSv h~?Sv h ʃSv hi봃Sv hB 랃Sv h% 눃Sv h oSv h VSvf h =SvM h $Sv4 h  Sv h Sv h Sv h Sv h Sv ho Sv h uSv h\Svl h CSvS hW*Sv: h Sv! hSv hSv h/bSv h Sjjh Sj jhSjjhy Sjjh Sjjh Sjjh Sjjh Pvh S]vHuSv1FH8u ɉuSjjh FHSjjhTq XZSvSjjhXW SFHpSjjh_9 SFHpHSjjh vSjjh SvSjjh SvfSjjhSvKSjjhASv0SjjhFSvSjjhTSvSjjhXSvSjjhKhSvSjjhOMSj-vY_SvvSj@]UVS]C='u t>Kt@3P Ph VbXZVsKVjjhɁ e[^É3P Ph V"ؐUWVSl]%=?$( CHtHPC0h 5 4  1эL  YsHe[^_ÃC05 o v 1эL  뿃 sE^_h v s.  & f s  * K s  + 0 s f, @ s  - s f.  s  / Psh v5 C}fE fEmUmUR$E@u9PRh;5  1эL  `sshT s f.r@ + s f.c١ f{ s  f, @XsH l f}  f[ s < f, @X sH f]밡 f[ s  f, @_CHp  f, @^CH pH땡 f(  s f),}s=  󥤋 1׹эD U _$(#  TEXT@ 1эD Mɣ };EE}TEE}mE E}ąMȅ3E̅EЅEԃt> P7 Ph 5  1эL  E؅t3=  f ׹1эL   f }@= * f 1 эL uЉ  (Ph h8 5  1XL ủ  _Rh h8 5  1XL uȉ  Vh h8 5 x 1[эL uĉ  8Ph h8 5 3 XL u  Ph h8 5  XL u  QQh h8 5  эL Zu  QPh h8 5 m XL u  Ph h8 5 + XL u  Qh% h8 5  эL Zu  IjPhB h8 5  XL u  Ph h8 5 e XL u  Qh~?h8 5 # эL Zu  Rh h8 P XL u  F;= G f ARCA IMAGf@E TEXT@BOXUNKN@OWN f< s  f>H subs@tr(  s f, @CH_p e f, @ XCHpH strc@at(  s  f, @ XsH` s  // @ B strl@en(  itosf@(  s h hk  sw h~? sb h ̃ sM hi뷃 s8 hB 뢃 s# h% 덃 s h u s h ] s h E s h - s h  s h  s~ h  sf h  sN h  s6 ho  s h  s hm s h U s hW= s h % s h s h sv h/b s^ h =  f = f ׹1эL   cent@re( 1 эL s   f, @ 1эL   encl@ose(@돡 redu@ce(x appe@nd( 1 эL s    f, @ 1XCHL p   f, @ 1эL  m dele@te(Vsh 5  1эL [H   tP sXCHt, f, @ 1эL  CHËu f) s if  1 эL s  X= f 1эL CHZp  _= f 1XCHL pH   J= f =  f  s  || @3 s  && ߃ s  == ǃ s  != 믃 s  < s}  <= y sb  > sG  >= C f-  s f@UWVSPuMF='^  6P4 Ph 5 (1ۋ عэL  Yv f; @ XL Zh P  _X6P[^h P}ZY5,*$e[^_Ð6P] Ph 5 Q 1[U@,D,H,L,P,T,X,\,`,d,h,l,p,t,x,|,,ÐUWVuP}Tw $@# } }u Ee^_Eu}ڃ PEu} PEu}릃 PEu}댃 PE u} o PE$u}$R PmE(u}(5 PPE,u}, P3E0u}0 PE4u}4 PE8u}8 PE밃h?h@ЃhB뒃h=뢡, Vph 4z PhUD, p0& , 0h]hh! , S0j*, Q0j/x, R0j%wP, 0h^P, 0h_P, 0h`DP, 0hadP, 0hbP, 0hc, W0h\1, V0h]\hd, 0Fj(Nh2[, S0j.h9%h:2h;h<, Qph!Wh", Rph)jP, 0j+P, 0j-.hEhFhGlhHyhIhJEhKRhL_P, ph"4 PhU, h#P, ph*4P, pj4 Ph+P, 0j.ph6, Wpj4 PhMi, VphN, SphOn, QphP4, RphQP, ph#P, 0j,h$h,h4P, pj4 PhR, {P, phSP, 0j&!P, ph$4x PhU몃h%f, PDƹh9 P, W0j.', Vph%, p0D@,ƹh9 L, p0DDС, p0D-뼋, U9 9 .5, u9 9  , E9 9  5, u9 9  , E9 9 5, u9 9 , E9 9 w5, u9 9 X, E9 9 :5, u9 9 , E9 9 5, u9 9 , E9 9 5, u9 9 , E9 9 5, u9 9 d, E9 9 F, S0j>4h&h., Qpj4t PhRR, RphSP, 0j&CP, ph& h( j tPj hV SÃPjjj Ph , p Ph , 4 PhTS j tPj hV S/ÃPjjj Ph!, pl Ph!, 4S Ph(, : PhTSv , PSh05 j$  % f& ~2& ^R4- h5 C,f<^ً$ P/ 4- h5 $ 0 2  6  ,=υ$ }H!1w!F 94Cv FdPpars@e er@ror Q4- h1эLQ$ H!1w$F 9CCw$ ܃ VDg @ V70 j0   6 $ tB$ wfF (  Ď 9tX@  ,-, D( t5 jjYh-;( t#PPh;5 ;( u݃5 j 9 Ў t4g @uT 5Ď 4g @u 5Ȏ e[^_P5Ȏ h5 sR5Ď h5 W됉: $ =t[,u9=, ,DƉ=, $    Ď ( 5 jjhDF뮋=Ў t4g @uN 5Ď 0g @u 5Ȏ 1S5Ȏ h5 uV5Ď h5 Y=أ$ ,Y,u,p 4- Rh[5 PVh5 PGPh(01эLQ~GvtPVmXZ4- V^ZYhVQGu hH0<- 1эt h: ҉$ $55,uO,t ,, D,0 U, H0 4- 5,h5 돁ډ$ '4- 5,h5 S5 jjh  , ,5 jjhri ,u$UҸNEE, 5 jjh(S5  h5 W5̎ h5 } Ď c h5Ў t4g @uQ 5Ď g @u 5Ȏ Q5Ȏ h5 S5Ď h5 듍v5 jjh18U 5, 聠XZuh=W USP,]u]]vQShGW 5 ZڐUWVS 1[ ҹt.Rut~s799~Ĺe[^_Í{ߍvUWVS 1. ҹt.Rut~"s799~ǹe[^_Ív{܍vUWVS 1 ` ҹt.Rut~"s799~ǹe[^_Ív{܍vUh p t ÍvUl B p 9t#Uh p Bh p Íl P5h nDF t h  p 릃hh.b1US5h t+@$  ,( ]Ív 5h *t 4 Ή=,k ~k ~u H9 ~kƅh 8_k tmh,SXZh{Swk t<5h S\YXS5h N 5h ,Zph,Ã5h 됡k qh{Sh k PUSP]t $$X fX%f]_Tf-     ."#&|=tz!titG/t6~t St ]t H9 t t t t  t  t  t  t  t vt gt X St = Snt H9 fXfu+_t&h p t  St vfX%fT.tFPjj5h ,$Hh p t  j.t Ev  -fX%fu j.덃 SEt fX%f.tCPjj5h ,$h p t 3Pjj5h ,$=h p t V St >;fX%f͐fX%f 5h ¡h p X[td PX"t,\t St t  5h {,$>h p W nt S j 1 t )&t j&E h]|t j|) h\=t j= h^=t j! h_=t h` ha=t hb hch/t j/ h1KUVSh th5T` SC^XhX S6ZYh S hX  @&hX Vj0e[^Ðl  Px9 t7g @ux9 h cPl Ph5 ҃hh.b1S5`9 hs5 $`UWVS [ LL)19sאLF9r [^_UVS[ƣLL)ɍqu j[^ÉLNuUS[Ã,1҅tRju+]ÐUSR  t ЋuX[US[/R]UNKNOWNOHDEARINTERNAL%eden%scout%donald%arcaNEWOTHERsystem error: ereallocMALLOC emalloc(%d) 0x%x out of memoryENTSTK pushEntryStack(%s) ENTSTK popEntryStack ENTSTK clearEntryStack errorComplete 1 0 appendErrMALLOC free 0x%x appendHistTcl error (appendHist): %s notice: %saction in %s%s%s: notice: %s %s: warning: %s %s: error: %s called by action %s while executing string near line %d, char %d: ^ DATSTK reset_stack errorf: longjmp while executing file %s while executing stdin in action %s called by %s%s: error: %s: interrupt button pressed FILE_DEVSTRING_DEVPARSER yyparse() returned %d PARSER yylex() returned %d run: setjmp ...%s->TKEDEN_LIB=Failed to putenv TKEDEN_LIBhttp://go.warwick.ac.uk/EDEN/r1081.62tkeden%s: %s version %s (%s) unknownLib directory is %s See %s for more information /eden.eden+vul:eargument p %s systemautocalceden_error_index_rangeeden_notice_undef_referenceinitialisation%s: can't open %s %s: unknown argument %s _fmt{FHHHHFHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH[HHHxHHHH:topEntryStack failed: TopEntryStack <= 0Tcl error (errorComplete): %s Tcl error (errorContentf): %s %s: interrupted using control-c: press again within three seconds to quit checkRunSet: doing Tcl_DoWhenIdle and setprompt checkRunSet: RS->nitems=%d: run action %s checkRunSet: doing Tcl_DoWhenIdle checkRunSet just swopped RS: RS->nitems=%d checkRunSet: swapping RunSets checkRunSet: doing Tcl update checkRunSet start: RS->nitems=%d interrupted: clearing both RunSets (current queue and todo)MCSTAT run start: %s %s%s%s Inp_Dev level: %d MCSTAT run end: Inp_Dev level: %d, errorflag: %d Failed to get current working directoryUsage: %s {-l} {-v|-u} {-e }|{} {-e }|{}... -l name of the directory containing the library files -v output version information and exit -u output this usage information and exit -e execute 'code' if file is '-', standard input will be read See %s for more information Use the -u option for information on usage of command options func cwd { return _eden_internal_cwd(); } proc cd { _eden_internal_cd($1); touch(&cwd); } dirname is _eden_internal_dirname; basename is _eden_internal_basename; PI = 3.14159265358979323846;couldn't open initialisation file %s: %seden_backticks_dependency_hack%%eden include("%s"); /* (invoked from command line) */ %s: Could not find library files location (try using the -l argument) Failed to get current working directory -- we will not be able to restart. Continuing anyway.** printRunSet: %d: %s ** printRunSet: no items in RS *%s %d %d redeclare local variable:local variable is not in this level:compiler error while patching codeused outside definition$$undefined.REALINTEGERMYCHARCONSTANTFORMULABLTINRLIBPROCPMACFUNCTIONPROCEDUREPROCMACROAUTOPARALOCALBREAKCONTINUESWITCHCASEDEFAULTDOFORWHILEELSEAPPENDINSERTDELETERETURNISTILDE_GT',''='PLUS_EQMINUS_EQ'?'LAZY_ORLAZY_ANDBITANDBITOREQ_EQNOT_EQ'>'GT_EQ'<'LT_EQ'+''-'SLASH_SLASH'*''/''%'NEGATENOT'!'PLUS_PLUSMINUS_MINUS'#''&'ASTERISKEVAL'$''['']''`''('')'';'':''{''}'programlvalue@1primarysecondarystmtwhileforexpr1end_expr2end_expr3thenelsecompoundstmtlistcasesexpr@2evaluatecolonlazy_andlazy_ordefndeclare_relation@3tilde_gtdeclare_formula@4declare_action@5def_begindef_endrefer_optid_list_optid_listdeclare_para@6declare_local@7local_listarglistargument_listlocal variablereturnshift'case' used outside switch'default' used outside switch'continue' used outside loop -> %s , encountered `%s'Error: state stack nowShifting error token, Discarding token %d (%s). , expecting ` or `parse errorShifting token %d (%s), Next token is %d (%sNow at end of input. Reading a token: Entering state %d Stack size increased to %d parser stack overflowStarting parse CFJ@GNO>;*<?QP9+7.KLMRS  !"#$%&'(),-/01234568:=ABDEHI !%)-.58;>ACEINSUX[_bfltz~  $(,0158;>AHLPTX\`egikmoqsz{ZjJ'UKlL>X>GUMlMNUOU+lU,lU-lU+UW=lDUUDEUUEUYNlOXNOYKlLrlP&P&lP"P"UP#U*lP$U*l*lP%U*lP QQPPglhZ]^_`abZ\ZNlOP[NlOcZ NlOcZ NlOcZdZePNPlPPlPOlO!RfSfZNOk   VXGUKiLl;ll<ll>ll?ll@ll=ll7ll8ll9ll:ll5ll6l.mU<llFClBll.cloll1ll/llpllqll3ll4lnNlOIQ20vyskuKLPMlMtuKLP)kxlPMlMwxlP({kz~|f}RSQk*kPP*l*l    &')++6789<>?BEIKLNPSTVXZ`fkpy    !"(*-39:;>BCGKRS[agxyz}X9R!U  #*/7:>V DIV IPW^Pehquy; #(,048<@DHLPXR_bjty22J9 68+$.8@JV^kn|TTTUUUUUUUUUVVVWVVVVVXXXYYZZZZZZZZZZZZZZZZZZZZZ[\]^^__`aabcdeffghijjjjkkkkklllllllllllllllllmlllllllllllllnopqrrrstsuvwvxzy{{{|}~~  LGHDEF|}~IJK10]kB/>MN.Cqop&'@%2C_ baO3yu;nm`z$ ^ =? 574Aedhi[\WXYZQRVSTUfg; P;6(vj!#8:l,+9rc<"x*)>--./02345679:;<p=q>?  ###0###Hhr###P) +   k   r388883+ :.51#YDr6 >Mo=rYxn]r @ F|E|gJb81P@RVWno\^ABC`abDlem`abEeFeeg`abcd8fiheecdecdeeon8JLMN TXYZ]   rstuvwxyz{|}~8U{|}~8888 8 yz{|}~ !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*+,   !"#$%&'(G*O !"#$%&'(G*j   !"#$%&'(G* !"#$%&'(G*     'GHI !"#$%&'( G*S'G* 'GHrstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~uvwxyz{|}~wxyz{|}~***P**!"()>?@)*PN F+,-Q4K6+,-PNKNPKPKK+,-FGDE3N3NKKDEOON=?K()Q[DEK`abKFefghLKk*F)ONqQs(u_wxyz{|}~=L;<=>?@ F* RK#$%P!P*LP./0123456789:;<=>?@HF LQS789:;<=>?@`fF  "#$%&'.56789:;<=>?<>FBCDEGIJKMNPR  "#$%&'.<>BCDEGIJKMNPRS  "#$%&'.<>BCDEGIJKMNPRS  "#$%&'.<>BCDEGIJKMNPR  '.<>'.<>BCDEGIJKMNP  '.<>'.<>BCDEGIJKMNO  ' '> .J'MNP<>'>>./0123456789:;<=>?FQ./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FM./0123456789:;<=>?FM./0123456789:;<=>?F*L./0123456789:;<=>?F./0123456789:;<=>?F123456789:;<=>?F3456789:;<=>?F *QLQ&j$FS]j&w,>Xr@th!!!!!&4Kh!*7DQ^kx*Cq~!.^t Rh'x!!can't reference local variable within eval()can't reference local $ variable within eval()'break' used outside loop/switchassignment used inside formulaReducing via rule %d (line %d), or... (%d other possibilities)parse error; also virtual memory exceededexitexecuteincludeinclude_file_eden_internal_cwd_eden_internal_cd_eden_internal_dirname_eden_internal_basenameusbhidopenusbhidreadusbhidcloserawserialopenrawserialcloserawserialreadapplysubstrstrcatsublistlistcatfloat_type_convertwritelnarraynameofformula_listaction_listsymbolssymboldetailsymboltextsymboltableforgetpackget_msgqsend_msgreceive_msgremove_msgqrealranderror_nobackgndpipeipopenipclosefdreadyrawreadrawwriteregmatchregreplacegetenvputenvprinthashtouchgettimeftimefeofgetcharfgetcstatfgetsungetcfscanfsscanfdebugDisp2PSStringRemainDisplayScreenPlotShapetodosasami_vertexsasami_set_bgcoloursasami_poly_geom_vertexsasami_poly_tex_vertexsasami_poly_coloursasami_poly_materialsasami_object_polysasami_object_possasami_object_rotsasami_object_scalesasami_object_visiblesasami_viewportsasami_setshowaxessasami_material_ambientsasami_material_diffusesasami_material_specularsasami_material_texturesasami_light_possasami_light_ambientsasami_light_diffusesasami_light_specularsasami_light_enabledsasami_light_attenuationsasami_light_directionalinpdevlinenoinpdevnameusage: debug()failed to get cwdstring eden_internal_cwd()failed to cd into '%s': %sfeof()int feof(stream)fgetc()int fgetc(stream)stat(filename);stat()failed to stat %s: %sstring gets()fgets()string fgets(n, stream)ungetc()void ungetc(c, stream)fscanf()sscanf()substr()substr(s, from, to)sublist()sublist(L, from, to)%.15g'%c'(%s is variable)(%s is built-in function)(%s is int-valued C function)(type=%d, val=%d)(%s is user-defined function)s = nameof(&var);lcat()execute()execute("%s"); execute(string_expr);include()can't read file apply(function, list);symboldetail(symbol);symboltext(symbol);symbols(type);pointer%d ---------------------- (%s is formula)(%s is C function)(local variable #%d, data pointer: %d)char pointer: %d)edenDefn ,func procmacro proc errorInfo isinternalwinfo exists .view.left.list.view.left.list curselection.view.left.list get wrong # args: should be "cleanup eden.eden.t.text see insert } masteragentsetupViewOptions".view.left.list insert end address=pack(data,...);array()list = array(n, data);user_errorrun-time errortouch()getenv()string = getenv("env_name")putenv()ok = putenv("env_name=value")backgnd()/dev/nullbackgnd: can't execute %s pipe()pipe(): can't execute %s ipopen()/dev/ptmxptemldterm/dev/consoleipopen(): fork failed ipopen(): can't make pipe ipclose([rfd, wfd, efd]);ipclose()fdready()rawread(fd, maxbytes);rawread()rawread(): %srawwrite(fd, string);rawwrite()rawwrite(): %srawserialopen()rawserialopen: tcsetattrrawserialopen: cfsetispeedrawserialopen: cfsetospeedrawserialopen: tcgetattrrawserialclose(fd);rawserialclose()rawserialread(fd, maxbytes);rawserialread()rawread(): %dusbhidopen()usbhidread(fd);usbhidread()usbhidread(): short readusbhidclose(fd);usbhidclose()regmatch(pattern, subject)internal matching error %dtodo()todo called: queuing <%s> todo(string);real realrand()Disp2PS(screen, file);StringRemain(screen, box);string tcl(string)catch {destroy .%s.b%d_%d}canvas .%s.b%d_1b%dscout_show_2Draise .%s.b%d_%dlower .%s.b%d_%d .%s.b%d_%dcanvas .%s.b%d_%dscout_show_canvastext .%s.b%d_%dscout_show_textcatch { destroy .%s.b%d_%d }PlotShape()locustruetransparent%s.%s_xOrigin%s.%s_yOrigin%s.%s_xScale%s.%s_yScaledraw_shapetcl variable not found: n must be an integersasami_vertex(n,x,y,z)sasami_set_bgcolour(r,g,b) must be an integer must be an integer must be an integer must be an integer must be an integer must be an integer must be an integersasami_viewport(x,y) must be an integersasami_setshowaxes(n) must be a string must be an integersasami_light_pos(light,x,y,z) must be an integer must be an integerstring _eden_internal_dirname(string)string _eden_internal_basename(string)void _eden_internal_cd(string)int scanf(format [, pointer ... ])scanf can handle at most 9 variablesint fscanf(stream, format [, pointer ... ])fscanf can handle at most 9 variablesint sscanf(string, format [, pointer ... ])sscanf can handle at most 9 variablessubstr: index out of range (from < 0)sublist: index out of range (from < 1)(%s is real-valued C function)(%s is user-defined procedure)(%s is user-defined procmacro)(local variable #%d, location 0x%x, value oops - internal error - unknown type of pointernameof(): address needed (got %s)include(filename[, filename...]);symboldetail(): address or symbol name needed (got %s)symboldetail(): no such variable symboltext(): address or symbol name needed (got %s)symboltext(): no such variable Tcl errorInfo (from tkdefine): dumpeden notation-option show-not-yet-define".eden.t.text mark set insert 1.0.eden.t.text config -state normal.eden.t.text insert end {AGENT .eden.t.text config -state disabledforget(): pointer or symbol name needed (got %s)listcat: -ve number in 1st argumentpid = backgnd("cmd", "cmd", "arg1", ...);pid = pipe("cmd", "cmd", "arg1", ...);ipopen(): couldn't set terminal attributesipopen(): couldn't get terminal attributesipopen(): ioctl couldn't push ldterm moduleipopen(): ioctl couldn't push ptem moduleipopen(): couldn't open slave pttyipopen(): couldn't get name of slave pttyipopen(): failed to unlock the slave ptty ipopen(): failed to set permissions on slave ptty ipopen(): failed to open master ptty %s ipopen(): can't execute command file %s: %sfileidlist = ipopen("cmd", "cmd", "arg1", ...);fdready(fd, type, [sec, milli]);fdready(): second type argument must be one of 'r', 'w' or 'e'rawserialopen(file - eg /dev/ttyS0);rawserialopen: couldn't open filerawserialclose(): couldn't close fileusbhidopen(file - eg /dev/input/event0);usbhidopen(): couldn't open fileusbhidclose(): couldn't close fileovector overflow: found more than %d matchesregmatch: pcre_exec p='%s' s='%s' rc=%d o[0]=%d o[1]=%d couldn't compile regular expression '%s': failed at offset %d: %snewStringBuf 0x%x s=0x%x l=%d %s reallocStringBuf 0x%x s=0x%x l=%d rl=%d %s %s freeStringBuf 0x%x s=0x%x l=%d %s reference (%d) to subpattern that was not usedreference number greater than the number of subpatterns (reference %d, subpatterns %d in pattern "%s")reference cannot be negative (encountered %d)$ in replacement denotes a reference and must be followed by an integer (found %c)regreplace: p=%s r=%s s=%s o[0]=%d o[1]=%d regreplace(pattern, replacement, subject [, limit])Eden tcl() command, whilst executing `%s`, got Tcl errorInfo: %s Eden tcl() called with @ parameterDisplayScreen(&screen, screen_name);DisplayScreen called with screen undefinedPlotShape(viewport_list, segid, &attr);if [ winfo exists .%s.%s ] { .%s.%s delete t%d }sasami_poly_geom_vertex(,,)sasami_poly_tex_vertex(,,)sasami_object_poly(,,)sasami_poly_colour(poly,r,g,b,a)sasami_poly_material(,)sasami_object_pos(object,x,y,z)sasami_object_rot(object,x,y,z)sasami_object_scale(object,x,y,z)sasami_material_ambient(material,r,g,b,a)sasami_material_diffuse(material,r,g,b,a)sasami_material_specular(material,r,g,b,a)sasami_material_texture(material,texture)sasami_light_ambient(light,r,g,b,a)sasami_light_diffuse(light,r,g,b,a)sasami_light_specular(light,r,g,b,a)sasami_light_specular(light,e)sasami_light_specular(light,d)sasami_light_attenuation(light,attenuation)sasami_object_visible(object,e) +Ux4  444L`tA(%(H(S(^((\))*):)J)J)\)\)\)~)))77778>VMEXEC|MCSTAT reset_compiler_status VMEXEC execute end execute(0x%x) (now %d items on DATSTK) VMEXEC|VMREAD execute: next is pc=0x%x, *pc=%s VMEXEC|VMREAD execute(0x%x) (to start, %d items on DATSTK) CALSTK end call %s (level %d) (datum at 0x%x, pushed to DATSTK %d) func/proc/procmacro '%s' neededCALSTK|DATSTK call %s: frame level %d call to %s %s nested too deeplyfunc/proc/procmacro needed, found %sSYMTBL|DEFNET change_targets %s internal error: change_sources()SYMTBL|DEFNET change_sources %s VMOPER|VMREAD|SYMTBL|DEFNET related_by_code VMREAD|SYMTBL|DEFNET related_by_code_runtimelhs VMWRIT code %s to location progp=0x%x EVAL error : unsuitable usage of eval syntaxmuldividenegatelazy_notconcatconcatoptjmpjptjpfjpntjpnfdduppopdpushUNDEFpushintconstpushcnv_2_booleqswitchcodedefinition_runtimelhsassigninc_asgndec_asgnpre_incpost_incpre_decpost_decnoupdateresetupdatelookup_addresslocaladdrindexcalcmakelistgetvaluesellistsizeappenddeletequerybitandbitoreagerfreeheapevalrelated_by_coderelated_by_code_runtimelhs0x%x (%d)CALSTK|DATSTK ret_call %s %s starting: args %s %s ending: return DATSTK push DATSTK pop (DATSTK now %d) VMOPER|CALSTK eval : CYCLIC DEFINITION: ABORTEDprogram too bigVRWRIT codeswitch no. of 'case' overflowtext buffer overflow@%f%cxxxĪح\ schedule: not scheduling %s %s eval_formula_queue: formula %s not changed: not evaluating it eval_formula_queue: formula %s changed and ready: evaluating it eval_formula_queue: formula %s not ready: not evaluating it MCSTAT|FQUEUE|SYMTBL|AQUEUE eval_formula_queue invoke_action_queue: invoke action %s invoke_action_queue: action %s not invoked MCSTAT|AQUEUE|DATSTK|FQUEUE invoke_action_queue SYMTBL|FQUEUE|VMEXEC change %s->changed = %d) MCSTAT|FQUEUE|AQUEUE reset_eval FQUEUE schedule %s AQUEUE schedule %s MCSTAT resetLock VMOPER|MCSTAT|FQUEUE eager SYMTBL mark_changed(%s) end hptr=0x%x heap overflowstart hptr=0x%x HEAPAL getheap(%d) VMOPER|HEAPAL freeheap input buffer overflowautobreakcontinuecasedefaultprocprocmacrosendClientsendServerpropagateaddAgencyremoveAgencycheckAgencyFALSETRUEOFFMOTIONENTERLEAVEpropagateTypeEveryOneAllowedsynchronizehigherPriorityqueryObsrenewObsOpenDisplayDoNaLDdefaultWincartCARTtransPIintersectparallelperpendbetweencolinearintersectsseparatesincludesdistlargerdistsmallerdistmidpointsqrtasinacosatanlogincidentDD_randomrtosdotxdotydot1dot2dotraddotargpolarvector_addvector_subpt_addpt_subtractscalar_multscalar_divscalar_modsysClock%lf%x%oFloating-point format errorscoutScreenInitOpennotationGetnotationSwitchnotationPushPop%donald0%sasaminotationChar('\'');notationChar('%c');notationChar('\\');notationChar('#');single char expected.agentName config -text {}unexpected end-of-file in /* */ comment%s: Can't find scoutScreenInitOpen: do you have the correct -l setting? notationGet: called when currentNotation != NEWOTHERunexpected end-of-file in string constantunexpected end-of-file in character constantexpecting string, char or integer for virtual agent.agentName config -text {current agent: parameter with illegal type passed to C-lib function (got %s for parameter no %d)parameter with illegal type passed to C-lib function: (got %s for parameter no %d)VMOPER|DATSTK add VMOPER|DATSTK sub VMOPER|DATSTK mul VMOPER|DATSTK divide VMOPER|DATSTK mod VMOPER|DATSTK negate VMOPER|DATSTK lazy_not VMOPER|DATSTK not VMOPER|DATSTK concat VMOPER|DATSTK concatopt VMOPER|DATSTK jmp jpt (loop construct)VMOPER|DATSTK jpt jpf (loop construct)VMOPER|DATSTK jpf jpnt (loop construct)VMOPER|DATSTK jpnt jpnf (loop construct)VMOPER|DATSTK jpnf VMOPER|DATSTK and VMOPER|DATSTK or VMOPER|DATSTK bitand VMOPER|DATSTK bitor VMOPER|DATSTK ddup VMOPER|DATSTK popd VMOPER|DATSTK pushUNDEF VMOPER|DATSTK pushint VMOPER|DATSTK constpush VMOPER|DATSTK cnv_2_bool VMOPER|DATSTK gt VMOPER|DATSTK lt VMOPER|DATSTK ge VMOPER|DATSTK le VMOPER|DATSTK eq VMOPER|DATSTK ne : CYCLIC DEF : ABORTED'=':VMOPER|DATSTK|SYMTBL assign +='+=':-='-=':++ (pre-inc)'++':VMOPER|DATSTK|SYMTBL pre_inc ++ (post-inc)-- (pre-dec)'--':VMOPER|DATSTK|SYMTBL pre_dec -- (post-dec)VMOPER|MCSTAT noupdate VMOPER|MCSTAT resetupdate MCSTAT|VMEXEC|SYMTBL update indexing into list/stringVMOPER|DATSTK indexcalc VMOPER|VMREAD makelist HEAPAL|DATSTK makearr(%d) VMOPER|DATSTK getvalue VMOPER|DATSTK sel VMOPER|DATSTK listsize VMOPER|DATSTK|SYMTBL shift VMOPER|DATSTK|SYMTBL append VMOPER|DATSTK|SYMTBL insert VMOPER|DATSTK|SYMTBL delete query (?)%c %s%s ~> [, %s%s=%s is%s /* current value of %s is */VMOPER|DATSTK query index out of range (%d is outside the range %d...%d)type clash: expecting %s (in %s, got %s)type clash: expecting reference to variable (in %s, got %s)type clash: expecting reference to variable (in %s)type clash: number type required (got %s)division by zero (trying to calculate %d/0)division by zero (trying to calculate %f/0)division by zero (trying to calculate %d%%0)type clash on negation: number type required (got %s)type clash: lazy not: expecting %s (got %s)type clash: logical not: expecting %s (got %s)type clash on concatenation: expecting strings or lists (got %s and %s)type clash: eager logical and: expecting %s (got %s and %s)type clash: eager logical or: expecting %s (got %s and %s)type clash: bitwise and: expecting %s (got %s and %s)type clash: bitwise or: expecting %s (got %s and %s)type clash: convert integer to bool: expecting %s (got %s)VMOPER|DATSTK|VMREAD|VMEXEC switchcode VMOPER|VMREAD|DEFNET definition %s definition_runtimelhs (adding definition)VMOPER|VMREAD|DEFNET definition_runtimelhs %s %s %s is %s, not a read/write variableVMOPER|DATSTK|SYMTBL inc_asgn VMOPER|DATSTK|SYMTBL dec_asgn VMOPER|DATSTK|SYMTBL post_inc VMOPER|DATSTK|SYMTBL post_dec VMOPER|VMREAD|DATSTK addr: %s VMOPER|DATSTK|SYMTBL lookup_address: %s VMOPER|VMREAD|DATSTK localaddr: %d index error: data isn't a list or string (when trying to find item with index %d)index error: list or string required (got %s, when trying to find item with index %d)reference to undefined variable %s (turn these notices off with eden_notice_undef_reference=0;)zero sized list found in 'shift']; /* %s last changed by %s */ IDlist nowaddID: not adding id=%s addID: id=%s addID: id=* refer_to: sp=%s, Q=builtinC-funcReal-funcvar???string neededunknown data types = type(expr);i = int(expr);f = float(expr);c = char(expr);c = str(expr);%&&*&%5&data = _type_convert(data, "type");:;<=>?[\]^_` ``@`  @ ]*k*p*v*|***6/................,/,/,/,/,/,/,/,/,/.,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/.,/,/,/,/,/,/,/,/.,/,/6/6/6/6/h/h/h/h//u.u./,/,//u.,/,/&/&/,/,/..0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0>>> 1049>>9>>>>>>>>>>>>>>>>9>>>>>>>>>>>>>>>>>>>>>>>>>>>9>>?>>>>>>>>>>>>>>>>>>>>>>>>>>>>?023233332333333333333333333333333333333333333333334<x<<<<<BBBBBBBBBBBBlBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB,DDDD-D-DDDDD`DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdDDDDDdDdDDDDDdD/OEEEIL/O/OEE/OEEEEEEEEEEEEEEEE/OEEEEEEEEEEEEEEEEEEEEEEEEEEE#NEE/OEEEEEEEEEEEEEEEEEEEEEEEEEEEE:O P\KjKCJjKjKjKjKJjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjK\KjK(K\K\KjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKLKsLsLsLELsLsLsLsLsLsLsLsLsLsLsLsLKsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLPLsLsL[LsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLKsLsLsLcLsLsLsLsLsLkLsLsLsLsLLQQQQdRRRRRS8S\SpSSSTKTT(U(U(U(U(U(UWWWWWWWWWlZlZZZZZZZZ__ `$`$`$`$`$`$`$`$`2`Jbdeeeef_fi_, &%s ]; _xi_DoNaLDInitDoNaLDViewport(); plot_pointplot_labelplot_lineplot_circleplot_ellipseplot_shapeplot_arcplot_rectanglenSegmentnodesegment%s %d | Symbol Table :- Symbol Table End. variable name too long~.donald.t.text insert end { } } viewport.donald.t.text insert end { {\n".donald.t.text insert end {, } master = }.donald.t.text insert end "cleanup donald.donald.t.text see insert||||||||| }||}||}3~%~%~%~a~~~~%~"S%~%~.donald.t.text insert end { }.donald.t.text insert end {viewport .donald.t.text insert end "within .donald.t.text insert end "}\n".donald.t.text insert end {AGENT .donald.t.text config -state normal.donald.t.text mark set insert 1.0.donald.t.text config -state disabled[ INF ] + - * % dotx(doty(dot1(dot2(dotrad(dotarg(cart(polar(line(rot(scale(vector_add(vector_sub(scalar_mult(scalar_div(scalar_mod(intersect(parallel(perpend(circle( && || ! between(colinear(intersects(separates(includes(distlarger(distsmaller(label(dist(midpoint( == != > >= < <= sqrt(asin(acos(atan(log(exp(float(incident(trans(ellipse(DD_random(arc( // rtos(?1?2?3?4?5?6rectangle(reflect(inf mod div .x.y.1.rad.argpt_betwn_pts(trunc(rand(piitos(xf; free_treecopyTree @ \[if then else false) ? dumpdtree\[]!(I!image( impose print_tree", "("", is open2shape(define = ""; dRYdH`````````````````````````Y````````````````````````YH`````````````````````````````````dH,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@ZkkPӒPPӒ̔"pȕ "YnŖPPPPPPq\dt"..M]]]]]]]]]o]]]]]]]|]]]]]]]Eʞ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]T.ʞ۞xț1ds  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu "(-/269;=?ACEGIKMOQSUZ_dgkmqsuwy{}   #&),/4:>CHOXcjlnprtvxz|~vwv$}x{ymm zwzmr|szr|sw|w~m  LmLmLmImImM()&' pqpmq$PnorMsrXspMqpMMqnMonMonMMonMoYZ[^]ZPONQRUVSTW*no+nMoabefdc$Pno$Pno%no%nononMonMMo=nMMMo!"#./0123456,-@7<>?9CEF;8:ABDGHhh`$JJm~K~K~Km~Km /14@prstuvwxyz{|}~  "#$%&'-./01234578:=>?@ABDFHJLNPRV]_`abcdefghijmopqrstuxz{|}~X9X{{WV Dm  (05:@FLQVKPUZ^bimsyRV ; n4f!)-17CHMT[`e=lpzt_eS !'-93DJM]vvvwwwxwwwwyz{{{||}}~~~~~~~~~~~~~~ *+012345! "./,-mndefghijklpytzxqrso{|u}vw~   (812 9IH UVZYWX ]:"6&()KJLMPQNORCDEGF$%[^S7'#_\=;<B?@cT`>AabLMNOPQRSTUVWXYZ[{|#C Q7ksua7j!#r<W;&EUdoOK3PmKuvkky^\h]j_`ainostpwz}q~ryEEFly y     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@AB CDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHI  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJbc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFxHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJbc defg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFHIJ  EFMMMJ$$JInLLnMnM[n]^LMabcdef$PnmCDoonHIJnqIMqmmKnnnnxhnm\]^_`a``QIrmhNxpqrabcdefo NOQRSTUVWYZ[]^abcdefqYZ[]^abcdefm   !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIPZ`hmnpr  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGH PZ`hmnprs  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnprs  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr  !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hnopr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hnopr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGHPZ`hmnpr !$%&'()*+,-./0123456789:;<=>?@ABCDEFGH"PZ`#hnprNOQRSTUVWYZ[]^abcdefNOQRSTUVWYZ[]^abcdefNOQRSTUVWYZ[]^abcdefNOQRSTUVWsYZ[]^abcdefMNOQRSTUVWsYZ[]^abcdefNOQRSTUVWqYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOoQRSTUVWYZ[]^abcdefNOmQRSTUVWYZ[]^abcdefNOmQRSTUVWYZ[]^abcdefMNOmQRSTUVWXYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefMNOQRSTUVWYZ[]^abcdefNOQRSTUVWYZ[]^abcdefOQRSTUVWYZ[]^abcdefQRSTUVWYZ[]^abcdefSTUVWYZ[]^abcdefWYZ[]^abcdef¦ަ%5Xmͧ,;JYhwl(DP}@Ztϫ 9L_q̬ެ$6HZl~ǭ٭!3ESesخ (7FUdsͯܯ '6ETcrް'4?INFXIFIXI_1FI_1IMAGEBOOLEANLABELGSPECGSPECLISTANYCIRCLEELLIPSEARCRECTANGLEGRAPHOFVIEWPORTWITHINTHENIMGFUNCCSTRINGBOOLINUMBERRNUMBERITOSRTOSTRUNCFLOATSQRTASINACOSATANLOGEXPRANDOMROTSCALETRANSREFLECTPARALLELPERPENDDISTANCEMIDPOINTPT_BETWN_PTSCOLINEARINTERSECTSSEPARATESINCLUDESINCIDENTDISTLARGERDISTSMALLERQUERYSEMICOLONEQUALSCOMMAATSIGNSTARPERCENTDIVMODTILDETILDE_SLASHDOTXDOTYDOTARGDOTRADDOT1DOT2UMINUSLIDAMPERSANDHASHVERTBARNEWLINELPARENRPARENLBRACKRBRACKLCURLYRCURLYLANGLERANGLEprogram_listwithin_idwithin_clausestmt_listdeclarationtype_nameevaluationexpr_listfunc1func2func3local_identifierlocal_idgraph_spec_listgraph_spec%+eden %-eden autocalc = ON; autocalc = OFF; rnumber(%lf) cstring(%s) impossible error occurs in %ssyntax errorundefined id: %sid list expectedredeclared identifier: %sundeclared identifier: %s%sstack overflow%sstack underflownot openshape or graph: %stype mismatched (context was reset)DoNaLD: %sid list and expr list unmatched%s is not declared as a functionbooleanimageitosopenshapept_betwn_ptsrealreflecttruncwithin/donald.edenüʼѼؼ߼ $Q,l\DDd@x< Wz(H00~8T|4dͽٽ "1@O^mcheck.cillegal use of `~'`%`|8aa} **######8|'Mao}Sasami: %sOut:%s Input string too long!sasami_bgcolour_r=%d; sasami_bgcolour_g=%d; sasami_bgcolour_b=%d; sasami_viewport_xsize=%d; sasami_viewport_ysize=%d; sasami_show_axes=1; sasami_show_axes=0; %s newmtlmap_kdksillum kd %s %s %s map_kd %s newmtl %s %s_mat_%s=%d; Unable to open MTL file '%s'!mtllibusemtlvnvt %d/%d/%*d %d//%*d object_poly %s_%s %s_p_%d polygon %s_p_%d vertex %s_vt_%d %s (1-%s) %s vertex %s_v_%d %s %s %s %s_%s=%d; Unable to open obj file '%s'!_sasami_vertex_%d_x is %s; _sasami_vertex_%d_y is %s; _sasami_vertex_%d_z=0; Syntax : material load_objload_full_objpolygon_sasami_poly_%d_colour_a=1; objectlightdump_verticesdump_polysdump_objectsdump_materialsdump_lightsopen_displayclose_displayUnknown commandsasami_viewport_xsize is %s; sasami_viewport_ysize is %s; sasami_bgcolour_r is %s; sasami_bgcolour_g is %s; sasami_bgcolour_b is %s; Syntax : light Syntax : polygon %*s %s "%[^"]%*s %s %s_sasami_vertex_%d_z is %s; -------------------- Sasami closing down! -------------------- -------------------- Sasami initialising! -------------------- proc _sasami_bgcolour_mon : sasami_bgcolour_r,sasami_bgcolour_g,sasami_bgcolour_b { sasami_set_bgcolour(sasami_bgcolour_r,sasami_bgcolour_g,sasami_bgcolour_b); }; sasami_viewport_bpp is int(tcl("winfo depth .")); proc _sasami_viewport_mon : sasami_viewport_xsize,sasami_viewport_ysize { sasami_viewport(sasami_viewport_xsize,sasami_viewport_ysize); }; proc _sasami_showaxes_mon : sasami_show_axes { sasami_setshowaxes(sasami_show_axes); }; MTL file error - unknown command '%s'MTL file error - could not get diffuse colour!material_diffuse %s_mat_%s %s %s %s MTL file error - could not get texture filename!material_texture %s_mat_%s "%s" MTL file error - could not get material name!Got material name '%s', assigned id %d Obj file error - could not get MTL filename!Obj file error - could not get USEMTL material name!Obj file error - could not get object name!Obj file error - could not get vertex co-ordinates!Obj file error - could not get texture vertex co-ordinates!Obj file error - unknown command '%s'Obj file error - polygon data with no object!poly_material %s_p_%d %s_mat_%s Unable to locate texture vertex for face!poly_tex_vertex %s_p_%d %s_vt_%d Unable to locate vertex for face!poly_geom_vertex %s_p_%d %s_v_%d Obj file error - could not get polygon data!Found material name '%s', retrieved id %d Could not find declaration of material!proc _sasami_vertex_mon_%d : _sasami_vertex_%d_x,_sasami_vertex_%d_y,_sasami_vertex_%d_z { sasami_vertex(%d,_sasami_vertex_%d_x,_sasami_vertex_%d_y,_sasami_vertex_%d_z); }; _sasami_material_%d_ambient_r is %s; _sasami_material_%d_ambient_g is %s; _sasami_material_%d_ambient_b is %s; _sasami_material_%d_ambient_a=1; proc _sasami_material_%d_ambient_mon : _sasami_material_%d_ambient_r,_sasami_material_%d_ambient_g,_sasami_material_%d_ambient_b,_sasami_material_%d_ambient_a { sasami_material_ambient(%s,_sasami_material_%d_ambient_r,_sasami_material_%d_ambient_g,_sasami_material_%d_ambient_b,_sasami_material_%d_ambient_a); }; _sasami_material_%d_diffuse_r is %s; _sasami_material_%d_diffuse_g is %s; _sasami_material_%d_diffuse_b is %s; _sasami_material_%d_diffuse_a=1; proc _sasami_material_%d_diffuse_mon : _sasami_material_%d_diffuse_r,_sasami_material_%d_diffuse_g,_sasami_material_%d_diffuse_b,_sasami_material_%d_diffuse_a { sasami_material_diffuse(%s,_sasami_material_%d_diffuse_r,_sasami_material_%d_diffuse_g,_sasami_material_%d_diffuse_b,_sasami_material_%d_diffuse_a); }; _sasami_material_%d_specular_r is %s; _sasami_material_%d_specular_g is %s; _sasami_material_%d_specular_b is %s; _sasami_material_%d_specular_a=1; proc _sasami_material_%d_specular_mon : _sasami_material_%d_specular_r,_sasami_material_%d_specular_g,_sasami_material_%d_specular_b,_sasami_material_%d_specular_a { sasami_material_specular(%s,_sasami_material_%d_specular_r,_sasami_material_%d_specular_g,_sasami_material_%d_specular_b,_sasami_material_%d_specular_a); }; _sasami_poly_geom_vertex_%d is %s; proc _sasami_poly_geom_vertex_%d_mon : _sasami_poly_geom_vertex_%d { sasami_poly_geom_vertex(%s,%d,_sasami_poly_geom_vertex_%d); }; _sasami_poly_tex_vertex_%d is %s; proc _sasami_poly_tex_vertex_%d_mon : _sasami_poly_tex_vertex_%d { sasami_poly_tex_vertex(%s,%d,_sasami_poly_tex_vertex_%d); }; _sasami_poly_%d_colour_r is %s; _sasami_poly_%d_colour_g is %s; _sasami_poly_%d_colour_b is %s; proc _sasami_poly_%d_colour_mon : _sasami_poly_%d_colour_r,_sasami_poly_%d_colour_g,_sasami_poly_%d_colour_b,_sasami_poly_%d_colour_a { sasami_poly_colour(%s,_sasami_poly_%d_colour_r,_sasami_poly_%d_colour_g,_sasami_poly_%d_colour_b,_sasami_poly_%d_colour_a); }; Syntax : poly_material _sasami_object_poly_%d is %s; proc _sasami_object_poly_%d_mon : _sasami_object_poly_%d { sasami_object_poly(%s,%d,_sasami_object_poly_%d); }; Syntax : object_pos Syntax : object_rot Syntax : object_scale Syntax : object_visible (e=0 to make invisible, 1 to make visible) Syntax : light_pos _sasami_light_%d_ambient_r is %s; _sasami_light_%d_ambient_g is %s; _sasami_light_%d_ambient_b is %s; _sasami_light_%d_ambient_a=1; proc _sasami_light_%d_ambient_mon : _sasami_light_%d_ambient_r,_sasami_light_%d_ambient_g,_sasami_light_%d_ambient_b,_sasami_light_%d_ambient_a { sasami_light_ambient(%s,_sasami_light_%d_ambient_r,_sasami_light_%d_ambient_g,_sasami_light_%d_ambient_b,_sasami_light_%d_ambient_a); }; _sasami_light_%d_diffuse_r is %s; _sasami_light_%d_diffuse_g is %s; _sasami_light_%d_diffuse_b is %s; _sasami_light_%d_diffuse_a=1; proc _sasami_light_%d_diffuse_mon : _sasami_light_%d_diffuse_r,_sasami_light_%d_diffuse_g,_sasami_light_%d_diffuse_b,_sasami_light_%d_diffuse_a { sasami_light_diffuse(%s,_sasami_light_%d_diffuse_r,_sasami_light_%d_diffuse_g,_sasami_light_%d_diffuse_b,_sasami_light_%d_diffuse_a); }; _sasami_light_%d_specular_r is %s; _sasami_light_%d_specular_g is %s; _sasami_light_%d_specular_b is %s; _sasami_light_%d_specular_a=1; proc _sasami_light_%d_specular_mon : _sasami_light_%d_specular_r,_sasami_light_%d_specular_g,_sasami_light_%d_specular_b,_sasami_light_%d_specular_a { sasami_light_specular(%s,_sasami_light_%d_specular_r,_sasami_light_%d_specular_g,_sasami_light_%d_specular_b,_sasami_light_%d_specular_a); }; Syntax : light_enabled (e=0 to disable, 1 to enable) Syntax : light_directional (d=0 for positional, 1 for directional) Syntax : light_attenuation Syntax : set_bgcolour Syntax : viewport _sasami_light_%d_attenuation is %s; proc _sasami_light_%d_attenuation_mon : _sasami_light_%d_attenuation { sasami_light_attenuation(%s,_sasami_light_%d_attenuation); }; _sasami_light_%d_directional is %s; proc _sasami_light_%d_directional_mon : _sasami_light_%d_directional { sasami_light_directional(%s,_sasami_light_%d_directional); }; _sasami_light_%d_enabled is %s; proc _sasami_light_%d_enabled_mon : _sasami_light_%d_enabled { sasami_light_enabled(%s,_sasami_light_%d_enabled); }; _sasami_light_%d_specular_a is %s; Syntax : light_specular [a]_sasami_light_%d_diffuse_a is %s; Syntax : light_diffuse [a]_sasami_light_%d_ambient_a is %s; Syntax : light_ambient [a]_sasami_light_%d_pos_x is %s; _sasami_light_%d_pos_y is %s; _sasami_light_%d_pos_z is %s; proc _sasami_light_%d_pos_mon : _sasami_light_%d_pos_x,_sasami_light_%d_pos_y,_sasami_light_%d_pos_z { sasami_light_pos(%s,_sasami_light_%d_pos_x,_sasami_light_%d_pos_y,_sasami_light_%d_pos_z); }; _sasami_object_%d_visible is %s; proc _sasami_object_%d_visible_mon : _sasami_object_%d_visible { sasami_object_visible(%s,_sasami_object_%d_visible); }; _sasami_object_%d_scale_x is %s; _sasami_object_%d_scale_y is %s; _sasami_object_%d_scale_z is %s; proc _sasami_object_%d_scale_mon : _sasami_object_%d_scale_x,_sasami_object_%d_scale_y,_sasami_object_%d_scale_z { sasami_object_scale(%s,_sasami_object_%d_scale_x,_sasami_object_%d_scale_y,_sasami_object_%d_scale_z); }; _sasami_object_%d_rot_x is %s; _sasami_object_%d_rot_y is %s; _sasami_object_%d_rot_z is %s; proc _sasami_object_%d_rot_mon : _sasami_object_%d_rot_x,_sasami_object_%d_rot_y,_sasami_object_%d_rot_z { sasami_object_rot(%s,_sasami_object_%d_rot_x,_sasami_object_%d_rot_y,_sasami_object_%d_rot_z); }; _sasami_object_%d_pos_x is %s; _sasami_object_%d_pos_y is %s; _sasami_object_%d_pos_z is %s; proc _sasami_object_%d_pos_mon : _sasami_object_%d_pos_x,_sasami_object_%d_pos_y,_sasami_object_%d_pos_z { sasami_object_pos(%s,_sasami_object_%d_pos_x,_sasami_object_%d_pos_y,_sasami_object_%d_pos_z); }; Syntax : object_poly Syntax : object _sasami_poly_%d_material is %s; proc _sasami_poly_%d_material_mon : _sasami_poly_%d_material { sasami_poly_material(%s,_sasami_poly_%d_material); }; _sasami_poly_%d_colour_a is %s; Syntax : poly_colour [a]Syntax : poly_tex_vertex Syntax : poly_geom_vertex Syntax : load_full_obj ""Syntax : load_obj ""Syntax : material_texture ("" or )_sasami_material_%d_texture is %s; proc _sasami_material_%d_texture_mon : _sasami_material_%d_texture { sasami_material_texture(%s,_sasami_material_%d_texture); }; _sasami_material_%d_texture is "%s"; _sasami_material_%d_specular_a is %s; Syntax : material_specular [a]_sasami_material_%d_diffuse_a is %s; Syntax : material_diffuse [a]_sasami_material_%d_ambient_a is %s; Syntax : material_ambient [a]Syntax : vertex ڳ$?徱Իڰdz屹ٰܳٳܰ. <= (1900000000-1)vUID >= 1400000000sa_findvertexfoundvuid == vuid--- Vertex list ---Vertex %d : (%g,%g,%g) sa_index_from_pUIDpUID >= 1900000000sa_findpolyfoundpuid == puid--- Poly list ---Poly %d : Geometry : Vertex %d (link UID %d) Texture co-ordinates :--- Object list ---Object %d : Polys : Poly %d (link UID %d) No objects to list.--- Material list ---Material %d : Ambient : %g,%g,%g Diffuse : %g,%g,%g Specular : %g,%g,%g No texture---------------------Texture file : "%s" No materials to list.--- light list ---light %d : DisabledPositionalPosition : %g,%g,%g Attenuation : %g DirectionalEnabledNo lights to list.sa_getUID: exceeded limit for number of identifiers for Sasami general data, presently %d -- please ask for GENUIDEND to be increasedsa_getvertexUID: exceeded limit for number of identifiers for Sasami vertex data, presently %d -- please ask for VERTEXINFOUIDSTART to be modifiedsa_getpolyUID: exceeded limit for number of identifiers for Sasami polygon data, presently %d -- please ask for POLYINFOUIDSTART to be modifiedResizing vertexinfostore from %d items to %d items Resizing polyinfostore from %d items to %d items wrong # args: should be "pathName setXrot pos"wrong # args: should be "pathName setYrot pos"wrong # args: should be "pathName setZrot pos"wrong # args: should be "pathName setXpos pos"wrong # args: should be "pathName setYpos pos"wrong # args: should be "pathName setZpos pos"wrong # args: should be "pathName setXscale pos"wrong # args: should be "pathName setYscale pos"wrong # args: should be "pathName setZscale pos"wrong # args: should be "pathName setRotThenTrans pos"wrong # args: should be "pathName setFrustumLeft pos"wrong # args: should be "pathName setFrustumRight pos"wrong # args: should be "pathName setFrustumTop pos"wrong # args: should be "pathName setFrustumBottom pos"wrong # args: should be "pathName setFrustumNear pos"wrong # args: should be "pathName setFrustumFar pos"%d usec since last render (= effectively %Lf fps) first render -- no timings available Sasami: Unable to generate texture binding! Sasami: unable to load texture file `%s`Successfully loaded %s: size=%i,%i depth=%i alpha=%i setXrotsetYrotsetZrotsasami_getXrotsasami_getYrotsasami_getZrotsetXpossetYpossetZpossasami_getXpossasami_getYpossasami_getZpossetXscalesetYscalesetZscalesasami_getXscalesasami_getYscalesasami_getZscalesetRotThenTranssasami_getRotThenTranssetFrustumLeftsetFrustumRightsetFrustumTopsetFrustumBottomsetFrustumNearsetFrustumFarsasami_getFrustumLeftsasami_getFrustumRightsasami_getFrustumTopsasami_getFrustumBottomsasami_getFrustumNearsasami_getFrustumFar/sasami.edenTogl_Init error %d sasamiWindow %d %dMax lights : %d Extensions : %s Renderer : %s Version : %s Vendor : %s OpenGL driver : sasamiWindowClosesa_r_render: Loading texture file '%s' $@-heightHeight400-widthWidth-setgridsetGridSetGrid-rgbaRgba-redsize-greensize-bluesize-doubleDouble-depthDepth-depthsizeDepthSize-accumAccum-accumredsizeAccumRedSize-accumgreensizeAccumGreenSize-accumbluesizeAccumBlueSize-accumalphasizeAccumAlphaSize-alphaAlpha-alphasize-stencilStencil-stencilsizeStencilSize-auxbuffersAuxBuffers-privatecmapprivateCmapPrivateCmap-overlayOverlay-stereoStereo-cursorCursor-timeTime-sharelistShareList-sharecontextShareContext-identIdent-indirectIndirect-pixelformatpixelFormatPixelFormatMesa_HP_RGB_SMOOTH_MAP_LIST1.7TogltoglSorry, overlay was disabledconfigure-extensionsrenderswapbuffersmakecurrentwrong # argsCould not allocate fontunloadbitmapfontTry: configure or render Togl: Unknown option: ?options?"Togl: couldn't get visualTogl_CreateWindowtogl.cshareWith != ((void *)0)8x139x15fixedTogl_LoadBitmapFont%%!PS-Adobe-2.0 EPSF-1.2 %%%%BoundingBox: 0 0 %d %d %%%%EndComments %02x %%%%EndPreview gsave /bwproc { rgbproc 5 -1 roll { { 2 1 roll } ifelse } forall pop pop pop /colorimage { pop /rgbproc exch def { bwproc } image } def } if /picstr %d string def %d %d scale %d %d %d [%d 0 0 %d 0 0] false %d colorimage grestore %02hx %%Sorry, this instance of Togl was not compiled to work with Tcl/Tk 8.4a2 or higher.or one of the user-defined commands: Couldn't configure togl widget wrong # args: should be "pathName read filename"could not create rendering contextTogl: couldn't choose pixel formatshareWith->GlCtx != ((void *)0)Togl: X server has no OpenGL GLX extensionError: Togl_FreeColor illegal with private colormap Error: Togl_AllocColor illegal in RGBA mode. Error: Togl_SetColor requires a private colormap -adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1-adobe-helvetica-medium-r-normal--10-100-75-75-p-57-iso8859-1-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1%%%%Creator: OpenGL pixmap render output %%%%BeginPreview: %d %d %d %d %% dup length 3 idiv string 0 3 0 add 2 1 roll 1 sub dup 0 eq { pop 3 idiv 3 -1 roll dup 4 -1 roll dup 3 1 roll 5 -1 roll put 1 add 3 0 } systemdict /colorimage known not { {currentfile picstr readhexstring pop} PPPPP QPPPPQ@333333?zG?)\(?_@VIEWING_GAMMArb1.2.2@pppqr;rtrrr&smstmtt|tm|tTcl: eden: wrong # of arguments - expecting 1, got %dTcl: evaluate: wrong # of arguments - expecting 1, got %dTcl: refresh: wrong # of arguments - expecting 1, got %d%s: Tcl error whilst evaluating %s Tcl errorInfo (from EXinit): %s Tcl error (Tcl_GlobalEvalEC): %suserinterfaceinputstopping old EDEN process... starting new EDEN process... can't execcan't forkquitrefreshgotodumpedendumpscoutdumpdonaldsetupViewOptionsinterruptrestarttcl_interactiveTcl_AppInit failed: %s DISPLAY/edenio.tcl_tkeden_version_eden_svnversion_tkeden_variant_tkeden_web_site_tkeden_sasamiAvail0.0_tkeden_win32_version_tkeden_appleTcl error (Tcl_EvalEC): %sTcl_EvalEC("%s") Tcl_GlobalEvalEC("%s") .prompt config -text {set notation {Enter SCOUT statements:):Enter Sasami statements:Enter statements:Enter Enter EDEN statements:%scout %sasami %donald Enter DoNaLD statements (in context can't redeclare %s %s to %s I_%s is pt_add(pt_subtract(dotint() / \"\\%.1frowcolumnI_%sformbox(textbox([%d, , "%s"_change %s_change(); }; proc %s_setText { auto currText; currText = $1; ; proc %s_getText { return %s_TEXT_1; ; proc %s_change {}_click; proc %s_mouseButtonPress : %s_mouse_1, %s_mouseClick { if (%s_mouseClick) { %s(); }%s_mouse, %s_mouseClick { ; proc %s {}click_DFreliefDFfontDFbdcolorDFsensitiveDFalignDFborderDFfgcolorDFbgcolorDFymaxDFxmaxDFyminDFxmin"pict1"[0,0,100,100]""[[0,0,100,100]]substr(strcat((()#)91611121714dotnedotnwdotsedotswdotndotedotsdotwboxshift(boxop(, BOXINTERSECT), BOXCENTRE), BOXENCLOSING), BOXREDUCE)app(del(I_%s_temp%d(int(unknown operatorcleanup scout.scout.t.text see insertproc P_%s : I_%s, %s { ShowImage(&I_%s, &%s); } ; proc %s_textCHANGE : %s_TEXT_1 { tcl("$%s_boxName delete 1.0 end"); if ($1!=@) { tcl("$%s_boxName insert end \""//$1//"\""); %s_TEXT_1 = currText; } } %s_mouseClick = FALSE; .scout.t.text mark set insert 1.05n7wɍUȎh{2QRۚ!g9Ŝ Qݝ#i 0CVuʟtɠ7R(&Hjerror !!!boxframewindowNOADJLEFTRIGHTEXPAND %% & %g.r{ type: TEXT alignment: %s sensitive: ON relief: %s: pictDONALDARCATEXTBOXUNKNOWNstrlen(.%salignmentcentre(enclose(reduce(append(delete(%s( endifUnknown operator!%s %s = %s %s; ī˫|tqtʬ-ttttttttttttt>-ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttH_ltttttttttttttttttttttttttttlllllllll"qnҲ޲*@Vlг4Mfʴ.GVet ttttttԶ %@[Į˱ڱscoutDefnǸH6Qq+qDzzzzzzzzz[Hr,V$B_~/G_w7Og tCZ-E]x»*D^ x#@]zkptuigrhojzq^sxyvw  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_`abcdeflmn  $(,05;@FKQV\aglrw} "&*.26:>BFJNRVZ^bfjmqvz} !%-/37?ADHLPTX\`dhlptx||{|q}~q q q qqqqqq#^q ^q"^q ^q$^q ^q%^q^q&^q^q'^q^q(^q(p^(q^q*^q^qr"#$%&'()*s!qsq"#$%&'()*"32tru1trru5tu7:@ABD?WXYZ mn#ghijkabcdefabcdefabcdef_`htu4tuo;<=>WXYZ$vrwghGHIJKLMNWXYZ%xryxrryo8OtrruPtruQtruRtruStruWXYZr&tu6TtrruUtrupWXYZ'vwoWXYZrzz zzzzzzzzzzzz zzzj(ceTtrruUtrupWXYZ*[tru\trru #%./89BCLMVW`aoxy !#$%),-023456789:;<=>?@BEGJLMOQSWY\X9hU !T T T T #T FU NU T + U U U U U U U U U U U V V U T U U U U U %U ,U [ 4U ;U BU S JU TU \U eU lU sU zU U U U U U U U U U U U U U U U U V  V V  V &V ,V 2V 7V C?@ABcGHpqrstuvw}ghij 9dUVWXYZabOPQRSTJKLMN[\]^_`nof|<emz:Dkx{;~#$F{|}~g /@Qaw| ) ))!&; Hps?@AB'E(H,I,=COPXY[^efoprwxyz@1Ppsl        g{N)Am Wcc111FFFFFF: )::::::*fyM) )x  #: )$Jf4m[\Yhfi&(*,.02Zjklm[\3tu\45]^n_nco[\6dopqrstu7v`a8ffccw9`aHIx yfz:c;f9:;<=Jdffffff>@LYqmN[\]^_`abZP[\eRfGr]^T_DEtVvfXfKIxfffffyMI`abcqdre%')+-/1OIfQI  SIUIWI7f?Af 6NOPQRSTUVWXYZ 5 !c8"kzdu#$HIJKLM%&'()* +,u-|}~./01 luuuusw{Gklm[\opqrstucyzYhiZjklm[\]^n_ !" opqrstuv clm[\w<=>?@ABCDExyzopqrstucdz23BfCghijpF356783X336&'(33Z3753Jq 3N3P6R8T36P8p NRc"#$%&'(^TU(W^*^12Y45rYzcZuuxrr'(6uq^YqtzvqYOPQRSTU^WTU^WIp[\YcopYchY^Z32TUeWqrtjvxppqpc^opp^vYabcdef^oprgh^GHIJKLMN"Ygh^'(Z^oprr129^5rghugh^ !"#^%qqr"*+,-gh^1V#qrTUqWabcdefghBtDcLqoBpDrghijkBmnBqpvrGpbr3 fghiqrtfgovwxytJfghfprtqr6qrqrt3ttijkmnqropYoptabcdefghYpqotabcdefttpqtpqmnghtq(qttqzqq7z:q?@ABDzz7zz:zz?@ABYDzz zzBz&'()zzzz.30"#$%&'(r*rrrrrpYBYuZFGfghijuuuZ!uu%*+,-1$%&'(nqrBabcdefghqsoyOPQRSTUWoc`abcdefghijkmntvx  "#$%&'(GHIJKLMN1245"#$%&'()* OPQRSTUW"#$%&'(*c%&'(h!"#$%&'()*tv x OPQRSTUW_`abcdfghickmnqstvx678:;<=>?@ABD_`abcdefghijkmnYryw_`abcdefghijkmnXw_`abcdefghijkXmn_`abcdefghijkmn_`abcdefghijkmnXu_`abcdefghijkXmn_`abcdefghijkXmn_`abcdefghijkXmn_`abcdefghijkXmn_`abcdefghijkmn_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmnu_`abcdefghijkmn u Y_`abcdefghijkZmn_`abcdefghijkmn_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnr_`abcdefghijkmnq_`abcdefghijkmnq_`abcdefghijkmn678:;<=>?@ABDabcdefghijkmncdefghijkmn5?@@@@U@j@@@(@`x9%9C`y#-Tk - - -?Qcw"/<IVcp}CVi  /S`%Db8Vu )6Zm| ROWCOLUMNCONTENTJUSTINTEGERHONESTWINDOWALLSTRVARINTVARPTVARBOXVARFRAMEVARWINVARDISPVARIMGVARFORMPTFORMBOXFORMFRAMEFORMWINFORMDISPSUBSTRSTRCATCONCATSTRLENTOSTRINGDOTFRAMEDOTSTRDOTBOXDOTTYPEDOTPICTDOTXMINDOTYMINDOTXMAXDOTYMAXDOTFONTDOTBGDOTFGDOTBDCOLORDOTBORDERDOTBDTYPEDOTALIGNDOTSENSITIVEDOTNEDOTNWDOTSEDOTSWDOTNDOTEDOTSDOTWBOXSHIFTBOXINTERSECTBOXCENTREBOXENCLOSINGBOXREDUCEENDIFImageFileImageScaleERRORDOTRDOTC'.'statementvar_listenquiryvar_namestr_exppoint_expbox_expbox_listframe_expwin_expwin_field_listwin_fieldwin_listdisplay_expimage_expSCOUT: %syyerror: %s allbdcolourbordercolorbordercolourcentreenclosefgcolourreducestrlen/scout.edenscreen5("4Tt $Id: main.c,v 1.53 2002/03/01 23:47:43 cssbz Exp $9 $Id: runset.c,v 1.9 2001/12/06 22:48:41 cssbz Exp $$Id: symbol.c,v 1.11 2001/07/27 17:56:37 cssbz Exp $$Id: symptr.q.c,v 1.8 2001/07/27 17:57:16 cssbz Exp $$Id: entry.q.c,v 1.10 2001/07/27 17:28:43 cssbz Exp $c c c c c c $Id: yacc.y,v 1.19 2002/07/10 19:26:05 cssbz Exp $`  {$Id: builtin.c,v 1.47 2002/07/10 19:22:18 cssbz Exp $r04w0p0h0h08 0 0 0 0K0dL0`N 1H1 J'1J51x ;1B1|I1,Q1li@"R"Y1#2t$>1$%_1(>2\m1Du18{11T11$1T!1"1&1t51`8X991Z1Z1Z1Z1Z2;2;2=2 ?#2@C+2LD32F;2 HD2NM2UX2x:_2;f2'p2:v2   ~2 2 2 2 2,2t2`2|22<222 [2T[; [2a2,}2Z22t3)3̅@3\S3@h3{3Ԉ33d33,33(4 454ԎM4h^40s444ܒ44p4t4g g $Id: screen.q.c,v 1.6 2001/07/27 17:54:03 cssbz Exp $$Id: code.c,v 1.24 2002/03/01 23:45:10 cssbz Exp $M YxY5Rl9RY@RGR0LRPRWRaReR$iRmR,rR4wR|RdRRR<RW@V RpRhRRdRR R|RRRS<St0S<S+S 5S ?S HS QSUS<^S4p}\eSlS`rSySdSSSS\SԤ $Id: eval.c,v 1.12 2002/02/18 19:27:11 cssbz Exp $j j k k $Id: heap.c,v 1.10 2001/07/27 17:32:20 cssbz Exp $$Id: lex.c,v 1.30 2002/02/18 19:28:14 cssbz Exp $ Wf$WW 2yWW ^S!p}"eS#ii XX68&,*LR6S:rS.yS/(r0w00S00000050051;1B1I1Q1iRY12>1_1>2m1XX&X0X:XGXSXYX' ^XbXiXoXuXXXXXXu1{11111111X9111112222#2+232;2D2M2X2_2f2p2v2 ~22222222222!222; 2X2X2XX|X|#|P|G|X>1RY1XXY YYY'Y1Y:YEYQYVY_YjYeYoYdYiYnYsY9W wY/|YYYYYYYYYYYYYYYYZ000 11'144+=(++7-=)--8//4==0!=1~>'>=2<=3&&-||+bf n r t $Id: lib.c,v 1.7 2002/02/18 19:29:51 cssbz Exp $$Id: machine.c,v 1.22 2002/07/10 19:24:49 cssbz Exp $8p 8p $Id: refer.c,v 1.8 2001/07/27 17:52:39 cssbz Exp $p p p $Id: type.c,v 1.19 2001/12/06 22:50:22 cssbz Exp $TY1R2~?Z8 iiXX _i gi nixi|i w wwww@w"w(w.w4w:w?w  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~>~~x$Id: custom.c,v 1.8 2001/07/27 16:44:15 cssbz Exp $6{>!2$2<Y{L`{S2Lf{_YleYjYܳoY dYiY nYl{9W sY<r{x{̷|{{|{ܽ$Id: symbol.c,v 1.14 2001/08/02 16:26:11 cssbz Exp $|w SetGraph("%s","%s"); %s_viewport = "%s"; A%s = NullStr; proc P%s:%s, A%s, %s { %s(%s, &%s, &A%s); } A%s = @; forget("A%s"); forget("P%s"); dd_delete(&%s,&%s,&A%s); %s = @; forget("%s"); forget("P%s"); $Id: tree.c,v 1.12 2001/08/02 16:26:11 cssbz Exp $ "R &,28>FNT[af9myjd!)*23417AFKOTX]pciouz  XV ĀǀʀUVW9XYZ̀؀ | af[bjd! )*23417AFKOTX]pciouzJ"{{{0(/U6VF W9XYZ̀؀, )$Id: utility.c,v 1.8 2001/07/27 16:34:39 cssbz Exp $$Id: parser.y,v 1.16 2001/12/06 22:27:37 cssbz Exp $ ` .b5FXs$Id: lex.c,v 1.21 2002/03/01 23:37:56 cssbz Exp $iY1MG|dY0nY2 2 #|Y@jY.eSQY=:YEEYFY[/|!9W 4f%Y1+"w  wYD1YCR X:YA(||sY3VY>Y2X;<|?25 P|96Y)7'YB<|eY-_Y,oY/ X8=%*|"$Id: check.c,v 1.11 2002/07/10 19:20:26 cssbz Exp $NrS?q??$@@333?333??333333L?L?L??fff?fff?fff??333?333?333??  $=0  s 4   8   <" # * f@1 2 8 fD> ? I HS T Z fL` a n P{ |  T   X   \   f`   d   fh    l  $  |/ < H fpT U ] fte f m fx t u | 9   (         9   f      d@$Id: ex.c,v 1.26 2002/02/27 16:31:55 cssbz Exp $$Id: parser.c,v 1.14 2001/09/27 14:07:23 cssbz Exp $ >>$Id: script.c,v 1.15 2002/03/01 23:39:40 cssbz Exp $$Id: symbol.c,v 1.14 2001/08/02 16:26:11 cssbz Exp $$Id: tree.c,v 1.8 2001/07/27 17:03:59 cssbz Exp $$Id: print.c,v 1.8 2001/07/27 16:58:33 cssbz Exp $$Id: store.c,v 1.11 2001/07/27 17:00:29 cssbz Exp $$Id: parser.y,v 1.16 2001/08/02 16:26:11 cssbz Exp $@  $Id: lex.c,v 1.17 2002/02/27 16:55:56 cssbz Exp $N _V G iX oX bX ^X'   S V YV Zo W ^SR W  3 W W   W OeSSWW P X W     U? XN3B |  X Q  MB10~? X 2;1/Vi  %   o C @W @ >3> AW @W @ 6TfJ ?W ? = 4IE FB 8 e B/bKWG D~?5 Hi7 L ;% 9 < :x O u    t |HL̉   @40ooodx ³ҳ"2BRbr´Ҵ"2BRbrµҵ"2BRbr¶Ҷ"2BRbr·ҷ"2BRbr¸Ҹ"2BRbr¹ҹ"2BRbrºҺ"2BRbr»һ"2BRbr¼Ҽ"2BRbr½ҽ"2BRbr¾Ҿ"2BRbr¿ҿ"2BRbr"2BRbr"2BRbr"2BRbr` GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)TZ(`o7<z8̌T4!̹" 9o$!Z)F 8pep_Mx!0-̹5P9h*GEUjd(S"|;<)d0wKX 8,LxE?&t +@12@,? ^? wouldBlock notationTypeToString topEntryStack pushEntryStack popEntryStack% clearEntryStack9 pushMasterStack^ popMasterStackr clearMasterStack topMasterStack errorComplete) errorContentf| appendHist noticef warningfN warning errorf8yyerror^eden_interrupt_handlerControl_CcheckRunSet5queueleden_initterminaterun_initrun0user_traceUsetLibLocationprintUsageprintVersioninit_eden9main~emalloc_perealloc_plibLocationprognamestartstartValidgargvgargcautocalceden_error_index_range"eden_notice_undef_reference4eden_backticks_dependency_hackFinterruptedXstartupargcjstartupargv|startupcwdInput_DevicesInp_DevInp_Dev_Save$TopEntryStack)initRunSetSclearRunSetwgetActionrmActionaddAction,printRunSetemalloc_perealloc_p @SEARCH_symptrDELETE_symptr_ATOMMOVE_symptr_Q(hashindexZlookupinstall!SEARCH_entrylDELETE_entry_ATOMMOVE_entry_Qsearch_local add_local_variableB insert_level_marker init_LocalVarList delete_local_level printlocal local_declare5 lookup_locall dispatch patcha emalloc_ps erealloc_p hashtable break_q cont_q(markGarbage unmarkGarbage;incGarbageLevelNdecGarbageLevelaclearGarbagedefnonly%setyyparseinitLyyparse emalloc_p erealloc_pB yycharT yylvalf yynerrsx yydebugo70C usage debug inpdevlineno) inpdevname' _eden_internal_dirnamee _eden_internal_basename _eden_internal_cwd _eden_internal_cd gettime inttime finetimeSf_eofget_charfget_charfile_statget_stringfget_stringxunget_charscan_f fscan_fgsscan_fsubstr^sublistprintprintstdoutCwritelnWb_write|nameofscat-lcatb_exitexec_string5exec_fileapply2symboldetailsymboltextsymbolssymtbl2listwprinthashtkdefineDatum tkdefineisUserDefinedisNotYetDefineddumpedenviewOptionsforget pack !arrayb!user_errorv!touch!get_environ!put_environ"error_noE"backgnd"pipe_processx#ipopen$ipclose$fdready<&rawread&rawwrite&rawserialopenH'rawserialclosel'rawserialread'usbhidopenW(usbhidread-)usbhidcloseb)regmatch*newStringBuf*reallocStringBufL+freeStringBufr+replaceRefsO,regreplacew-todo-get_msgq-send_message-receive_message-remove_msgq-realrand.E_Disp2PS0.E_StringRemainD.E_tclF1init_ScoutScreenListY1search_ScoutScreenQ1add_ScoutScreen2DisplayScreenU7PlotShape9ed_sasami_vertexC:ed_sasami_set_bgcolour:ed_sasami_poly_geom_vertex:ed_sasami_poly_tex_vertex<;ed_sasami_object_poly;ed_sasami_poly_colour;ed_sasami_poly_material#<ed_sasami_object_posz<ed_sasami_object_rot<ed_sasami_object_scale(=ed_sasami_viewporte=ed_sasami_setshowaxes=ed_sasami_material_ambient=ed_sasami_material_diffuse^>ed_sasami_material_specular>ed_sasami_material_texture?ed_sasami_light_poss?ed_sasami_light_ambient?ed_sasami_light_diffuse9@ed_sasami_light_specular@ed_sasami_light_enabled@ed_sasami_light_directional@ed_sasami_light_attenuation-Aed_sasami_object_visibleADebugAemalloc_pAerealloc_pAblibtblmBInput_DevicesBWidgetMapz-reset_compiler_statusinitcodestack_overflow_errstack_underflow_err[disAssexecuteret_callcall( eval change_targets change_sources` related_by_code related_by_code_runtimelhs= codet codeswitch addentry saveprogT push_text savetext code_definition{ code_definition_runtimelhs'code_evalcode_related_byLcode_related_by_runtimelhsevalDatumpushpopemalloc_perealloc_pUndefDatumprogpprogcompiler_flagentry_ptr3entry_tblVstackhstackpzpcframefpinsttbltextcodetextptř9 schedule_parents_ofGresetLockZeval_formula_queueinvoke_action_queueeagerchange-mark_changedkformula_listaction_list?reset_evalemalloc_perealloc_pformula_queue action_queueVgetheap.freeheapemalloc_perealloc_phptr heap!`changeNotationmakedatumI init_lex builtin_ft_check scoutScreenInitOpene notationGet notationSwitchnotationPushPopyylex*append_linebufOkeyinflushRestOfLinepeekemalloc_perealloc_pcurrentNotationInput_DevicesJnextcmyytextyylenginEVALagentNameagentTypeappAgentNameappend_agentNameappend_NoAgentName*inPrefixGcall_libcall_floateemalloc_pwerealloc_pVfreedatumnewdatum6newhdatout_of_range_errormustintmustchar!muststrRmustlistmustaddraddress_errorget2numaddBsubwmuldividemod negateF lazy_notl not concat concatopt jmp jpt jpf1 jpntc jpnf and or bitand3 bitorh ddup popd pushUNDEF pushint constpush datacmpv cnv_2_bool gt lt geMleeqneswitchcodedefinitiondefinition_runtimelhs"assignfinc_asgndec_asgnpre_incpost_inc:pre_decopost_decnoupdateresetupdateupdateaddr@lookup_addresslocaladdr8indexcalcmakelistmakearrgetvaluesellistsizeshift*appendxinsertdeleteTqueryemalloc_p)erealloc_plprintlistaddIDBclear_IDlistUsave_IDlistrefer_torefer_bycheckok1checkok2/checkoksready emalloc_perealloc_p/IDlistAlastNullInIDlistSautocalc> ,ctosetypenotypenamet_type t_intt_floatVt_charzt_strt_str15t_superemalloc_perealloc_p|Zpcre_versionpcre_info@pcre_fullinfopcre_compile9pcre_execypcre_mallocpcre_free` install_custom_variablespemalloc_perealloc_pilibtblrlibtbl^change_promptchange_context*resume_contextOreset_contextwbackup_contextrestore_contextchange_scope resume_scope symbol_searchYcontext_searchnew_symbolfree_symbollook_up^look_up_treelook_prev0declare_openshapedeclare_actioneden_delete. eden_declare Declare DeclareGraph0 Delete print_symbol_table print_all_symbols donald_full_names eden_full_name expr_to_donald_name expr_to_eden_namedumpdonaldemalloc_perealloc_p>dd_scriptg_changedviewport_name  )initbufNextendbufsis_shapeis_openshapeis_graphdtree4qdtree3dtree2dtree1Rdtree0naryfreeTreecopyTreeJdumpdtreeprint_tree DefineDefineFunc emalloc_p( erealloc_p dumpbuf6MJgetmememalloc_p7erealloc_p! dd_parsedd_error~don_errRemalloc_pqerealloc_p dd_char dd_lval dd_nerrs dd_debug-|dd_restartmap_name_to_token.map_token_to_namedd_lexinit_donaldemalloc_perealloc_pdd_promptdd_appAgentNametranslation*5count_idecount_expr9 sa_error3sa_exit_trapFsa_outputisa_init_sasamisa_inputsa_eden_initZsa_load_mtlstrtodouble@ sa_load_obj sa_addescapes sa_parsestringV sa_scriptn sa_inputstring sa_skipline sa_eden_initialised objmateriallistdG sasami_vertexLsasami_set_bgcoloursasami_poly_geom_vertexsasami_poly_tex_vertexBsasami_poly_coloursasami_poly_materialsasami_object_poly9sasami_object_possasami_object_rotsasami_object_scale5 sasami_object_visibleu sasami_viewport sasami_setshowaxes sasami_material_ambient: sasami_material_diffuse sasami_material_specular sasami_material_textureH sasami_light_pos sasami_light_ambient sasami_light_diffusev sasami_light_specular sasami_light_enabled sasami_light_attenuation] sasami_light_directionalwEUQWsa_structures_initjsa_getUIDsa_getvertexUIDsa_getpolyUIDsa_index_from_vUIDsa_clear_vertexinfostore sa_addvertex|sa_findvertexsa_getvertexsa_dumpverticessa_adduidlistqsa_finduidlistsa_getuidlistsa_index_from_pUID$ sa_clear_polyinfostoreZ sa_addpoly sa_findpoly sa_getpoly) sa_dumppolys^ sa_addobject sa_findobject sa_getobject sa_dumpobjectsJ sa_getfirstobjectb sa_addmaterial sa_findmaterial sa_getmaterial sa_dumpmaterials@ sa_getfirstmaterialX sa_addlight sa_findlight sa_getlight sa_dumplights6 sa_getfirstlightN sa_addlist sa_findlist sa_getlistiemalloc_p{erealloc_pfirstpolyfirstobjectfirstmaterialfirstlightvertexinfostorevertexinfostoresizepolyinfostore polyinfostoresizedAsetXrotgetXrotcsetYrotgetYrot3 setZrot getZrot setXpos getXpos setYposP getYpos setZpos getZposs setXscale getXscaleC setYscale getYscalesetZscalegetZscalesetRotThenTransgetRotThenTrans)setGlFrustum<setFrustumLeftgetFrustumLeftsetFrustumRightgetFrustumRightsetFrustumToprgetFrustumTopsetFrustumBottomLgetFrustumBottomsetFrustumNear&getFrustumNear~setFrustumFargetFrustumFarXsa_r_initsa_togl_destroyfunc%sa_togl_createfuncLsa_r_opendisplaysa_r_closedisplaysa_r_resizeviewportsa_r_setupcamera3sa_r_setuplightingsa_r_render_axessa_get_face_normalsa_get_face_normal_from_uid_listrsa_r_render_object_polysLsa_r_render_objectsysa_r_rendersa_r_updatesa_r_setshowaxessa_getandbindnewtexture/sa_loadtextureemalloc_perealloc_psa_r_xsizesa_r_ysizesa_r_bgcoloursa_r_showaxessa_camera_pos$sa_camera_rot6sa_camera_scaleHsa_camera_rotthentransZsa_camera_frustum_leftlsa_camera_frustum_right~sa_camera_frustum_bottomsa_camera_frustum_topsa_camera_frustum_nearsa_camera_frustum_farsa_def_light_pos1sa_def_light_pos2sa_def_light_ambientsa_def_light_specularsa_def_light_diffuse globTogl2sa_r_initialisedQsa_r_maxlightsclastRenderTimeulastRenderTimeValidD1/Togl_Init/Togl_CreateFunc/Togl_DisplayFunc/Togl_ReshapeFunc 0Togl_DestroyFunc40Togl_TimerFunc[0Togl_ResetDefaultCallbackso0Togl_SetCreateFunc0Togl_SetDisplayFunc0Togl_SetReshapeFunc1Togl_SetDestroyFuncu1Togl_SetTimerFunc1Togl_CreateCommand2Togl_MakeCurrent2Togl_ConfigureI9Togl_PostRedisplayp9Togl_SwapBuffers9Togl_Ident9Togl_Width9Togl_Height:Togl_InterpC:Togl_TkWinM;Togl_AllocColor;Togl_FreeColor<Togl_SetColor~<Togl_LoadBitmapFontN=Togl_UnloadBitmapFont=Togl_UseLayer=Togl_ShowOverlay=Togl_HideOverlay>Togl_PostOverlayRedisplay:>Togl_OverlayDisplayFunca>Togl_ExistsOverlay>Togl_GetOverlayTransparentValue>Togl_IsMappedOverlay>Togl_AllocColorOverlayS?Togl_FreeColorOverlay?Togl_ClientData?Togl_GetClientData?Togl_SetClientData@Togl_Display;@Togl_Screenf@Togl_ScreenNumber@Togl_Colormap`BTogl_DumpToEpsFileCTogl_StereoFrustum># pngLoadRaw`pngLoadRawF{pngLoadpngLoadF pngBind!pngBindF!pngSetStencil!pngSetAlphaCallback<"pngSetViewingGammac"pngSetStandardOrientation0( Tcl_AppInitEXinitTclKEXinitTcl_EvalEC<Tcl_GlobalEvalECemalloc_perealloc_pinterpmainWindow sptrX 0setpromptlevaluateiemalloc_p{erealloc_plinenoprompt_oncurrentAgentNamecurrentAgentTypecurrentAgentNamePtrcurrentAgentTypePtrcurrent_Notation otherNotationcurScriptyunewScript resetScript0deleteScriptUappendEdenappendnEden emalloc_p)erealloc_pH Ehashnew_symlookUp"installIntVarcdeclare_image_actiondeclareappendTreeList clearTreeList translatedefine^listsymdumpscout emalloc_p' erealloc_p9 st_script scoutErrorStrEint_treeinthonest_treestr_treewin_treeQsym_treedef_treetree2tree3]freetreeemalloc_perealloc_pD?&scoutTypejust_nameprintdef4printsym)+PLstoreDefnstoreSym12 initDefaultWindowist_parseQscout_errst_erroremalloc_p erealloc_p@ useOldTreej defaultWindow st_char st_lval st_nerrs st_debugp,? st_restartst_lex init_scout emalloc_p erealloc_p0 st_scriptH st_promptQR0  intmzzraSzz'0 .T, .&C Z#% #T # #  # #2 # # # Z #$ #(a #,2 #0 #4 Z#8 #Z#< %o#@ )>#Da *L#F +#G$ /#H 8#L >_#T ?_#XM AZ#\c C#`Z7 h+l   #  # 8 Z#y  r  3UL # E wHKF M G# *H#{7zjN oKj# zH ;NS& Z S% *# p +Z# 9,#-  ona0Int Z  ' 28)H  __ ##  $S#  %# $ &0# 0. '#d 5#  6# r 6#,  7#8 9#< :#< ;#< B* =#@ ! E'#D B  Y )S#u 4B#  r +i ,Zs -a .sym /'v 3- * # ! #obj '#n ]  3x 1Z#y 2Z# ] V0#& W0# X0#? Y0# Z0# [0# \0#z Ts ] all ^Zt adp b#ip c#% sp '# B #  # # B* # _ __# KR# s # B* # ! #_ _% ? Z# [ #  #%  __# KR#ZJ __ # KR U#UJ1IH_  b8c#e#pmZ# pgZ !EF#HZ#$JZ#L # , !Ok :@N58 9  __# YS#ptr#  # h # # Z# ^Z# # Z# Z#$ Z#( g9 #,  #0% dZHUz~ fdZS~!ZQ ZW 6HU"n6k R#JOZU$ VU"mUk S%-iU%uUU$^ X-U"mR%;0JU%L[U#,\pU& pyU"t ' _|U"t R$ <U X ) $| <U"fmt(rS, ~$   U), ~$  U"fmt( } $N &U"fmt&' }()$ y:4U"s9"t9 $8@4U"fmt@W*tA*B*HC*{D*E+FZ(GZ iGZS(H(HIS(K$^U"sZU)[) )bZ)$jU"sigZ$5  lU)[ a h* !,DZ$leU"cmdd)B*d $;1p U*r isZS st'R$AU)#;Z$E1U"pcP- runZ4U)YSF"ptr_V)__.VGV@YZS+Z*-/ H0}ZZ1Z/Z ZS2o pS nZV 0 $Ud@U pe9 S$n@OU) mV oS cwdpS3PU%N U$#UBV(__K}7 (y ( 94%nZQU)bZS)W op!P6#ZV`%Z^+)+O+Z*.*H./W__0V s1'P/?Z*@*@56TLO%^6#+(^%(^%2#+(\^T(6^Z65@(q%(q%25@(\qT(6qZ2G sVFsS inpsPsQ csR 64c F 27;6 ` 8 8& 8 9_x9 81 Z9=._DF 8L 8 _8 d0 :8 d :8[% 8  %:8g ;fp 9  B6:8U7 Z:8O r!:8g8Q9`T` 9Fd`9 9f`F 9gZX` 9i@F 9ajZl9 9k p9 9 l F 9Xp d9 9nt t9 9 yZ\` 9{ZHF 9|LF 9}h9  v 9@!9 9`` v 9ld` #T ?#X MA3#\ cC#`   # # 83#   " 30M TUrsMSw UrsMS &Urs%MWptr'Sa(X 6 Urs5MVptr7S, C QUrsBMSsB B*BPh STUrsRMPptrTSnU3V x 3;h` 1 3&x9 =.DF  `:   intmz or V'(,.&C O#% #T # #  # #2 # # # Z #$ #(a #,2 h#0 n#4 O#8 #O#< %d#@ )3#Da *A#F +t#G$ /#H 8v#L >(#T ?(#XM AO#\c C#`  h h#  n# 8 O#1  *  3  )H __## $H# %# $&%# 0.'#d5# 6O# r6O#, 7Z#89#<:#< ;#< B*=#@ ! E#D  Y)H#u4# r+i,Os-a.sym/v3kI-  * I# !  I#obj #n] eO3x1O#y2O#0]V%#& W%#X%#? Y%#Z%#[%# \%#@zTs]all^O eUQeSobjVnOQPePV IUQePAZS (LuU< 'eQ 'eS:@N5Z' +OxUs*Ri,OQO7Us6Vsp9SfA HUsBstBOPtBOiBOP If'JOPspKSJLO,M Nv OK PO QO RO v     __ֈ# SH#numH# ۆ  * # !  #obj #C  l| UQWobjhnOVPS qUQPAS (tU< 'Q 'S  U__VASB i sU__ ES FV!  tU"SO ES#0 A!R$H)'U! ) 1(U"S0OV%E2 Q3S!  ;U E<S&5 EO.U"__DS EFP&l  PO0|U"__OV EQS! 1 `|U'p_P'Q_eS( AaZR! 4 f`U" eW'pep'QeeV AgZP iphS  4; ` n&nn1 O) (x9 )= .(DF _ 5   a ) 3f`a  5  `c Mc * [Oc *O \Oc `+ rint  mz,]'Int3   )H __## $V# %# $&%# 0.'# d5# 6e# r6e#, 7p#8 9#< :#< ;#< B*=#@ ! E#D   Y)V# u4# r+i,3s-a.sym/v3 ,.&C 3#%#T ## ##2### Z#$#(a#,2#0#43#8#3#<%k#@)A#Da *O#F+#G$/#H8v#L>#T?#XMA3#\cC#`   # # 83#(3 _-  * _# !  _# obj #(n(] {e3 x13# y23#05] V%# & W%# X%# ? Y%# Z%# [%#  \%#VzTs]all^3{ta dpb# ipc#; 9# dp:# ;{@ ># end?# @  S`TU QRdpRR; gTBUeRendfRd xDOU ~P[U \DUi3Wj3R$3VI DpUsdpsym. funsw V  Lp}U!Y 3P" }W3U!YV3#lex$> y$ R$m $Q I}$ $ P$8 F$! $ !$ Q$  Q%D [3p&IP%[  l'  %DS3V(e%{ t S(y)p}P&h)pP&)pP('x)c d (0)iX3S&g * 3 +%DS3V)msgV)x3S%N3W*O 3 +,3 ( %{  S-2,3 V 2; c .1 3..&./x9 /=.DF .L._5.d. -b 0.d -W . .e.O .e# B3c Z C3c i D @  E D  F3c  G3d t H3d .} I3.J& 3.nK& J 1: [ `9 p p Vv  `  p 1%    p %R 5   %I K   p %3 ](   = p %_ oO ` - e p 1% w  T  p 3%  |  p 1%R  `  p 3%a    p 1y%    + p 1y% =   / 3 G / G / 3G / 3G % 3d % $3H )yyn%3L % & P %8 ' T % (3X % )3 d V% +` :%2 ,* %v . d %q / d % ;3d % <3d % G % K3$ ,C # R0  intmz h 0 0 E& 0e 0 r aZS  @ Z  Z"'0 .4, . &C Z# % # T #  #  #  # 2 #  #  # Z #$  #( a #, 2 #0  ##4  Z#8  #Z#<  %#@ )>#D a *L#F  +)#G $ /9#H  8#L  >#T ?#X M AZ#\ c C?#` 7  "   #  ## 8 Z#49"O"3nUL| |#Ewe3w M x# &y#K F M G# * H#{7 N oK #;N!X% A&o# '># )# 2-# .# /z# 0# 1o# 2>#( j4#, Q8#0 0;#4 .F#8 G#@ (H#H :UE#P DVE#TIntZ7=D OU-)H __## $S# %+# $&0# 0.'#d58# 6# r6#, 7#89"#<:"#< ;"#< B*=#@ ! ED#D8_  Y)S#u4_# r+i,Zs-a.%sym/Dv3-  * # !  #obj D#n] 3x1Z#y2Z#0-,spD# B+# %# # B*#1 __# KR7#:@N5700<  # ! # Y" # # # $# F%# &#4 V'#81IH  b 8c# e# pmZ# p&Zj !E F# HZ# $JZ# Lj # z "!O  VUsU uttU1 Z&  Z! S% * # p +Z# 9,#-, <   __# YS#ptr#  # h "# # Z# ^Z# # Z# Z#$ Z#( g #,  ! #0) tUd-hX 6Ud-htS ^ 9  :Z# a ;Z# ' tm, uZ# Z# Z# Z# sZ# KZ# Z# Z# oZ# #$ #(e   U!8V!Sd-X"  7 U#8V#S$d-X" $8  U$cwd%V$d&-X#'S%(7  U" F  U$secG-h$minG-X#G-H# G-$monG-#NG-#G-#H S#HIZ& TZ " Z  U# [-h#H\Zd"Sjd  U# e-h#:e-X#HfH#gX P& lZ"q  U$dr-h#BPsP)"  U$d-h'  (*Z" +U$d-h#BPP",qU#xS$buf&)retZ$d-*p+,P-H& Z.fZ/d/e "t_U$d-X#S$tS$sV#"ZQ"x`{U$d-X$nZV#BPS#P$tS$sT"Q|U$cZS0BP"9U$d-h$arg$iZV#XS "g<U$d-X$arg$iZV#BPW#XS"7U$d8-X$arg9$i:ZV$str;W#X<S"^)U*U$dV-X#WZS$toWZW$lenWZT$iWZP$sXD$tXP$strXP1Y--"s,U$at%W$iuZS#uZT#uZP$touZL2& Z"$U3d-3fV4 ZS$iZW"C!$BU3d-%D[U"| \U$i ZV"{U$d-X#-H$sS#__V"-t)|jU$d*-X$i+ZV$len,ZT$s-W1.--"e@l4U$iAZp$jAZS#AZl#AZP$aB%W& LZ"Q4mU5ARZ"5[pgU#8\ZS$d]-h$n^V6$run_ZS&kZ"Hwhv U#xV#__yS$dz-X#8{ZT6run|ZS$i}ZP$n}ZL%:x  U72 Q!U3QW#NZV$d-X$AS& Z"T!"U8 9q' Z:$spDS$d-h#__V$iZP:  Z-!!0%0%D;""$U8 9:' Z:N$spDS$d-h#__V$iZP-##0.%0.%D;"(E$&U8 F:GZ$spHDS$dI-X$pJ%T#NK!V$iL!P$anyM!#uM!L#YM!H<N$u$0R%0R%-N$u$#\RR#6RZP-$$0S%0S%D;"lt&'U8 ul9vZ$spwDS$dx-X$py%T#Nz!V$i{!P2& ZwD;"''U8 $spDS$iZVD;" '*U3d-3sS$iZp$tQ"**~-U3sp)D#+z ~#+z |-++$PGS$QGV$sH|=Z--U3spDR= Z-).U3spDR7b,./U#S$sP>K 0%0%28#\P06Z2P&Z?Z/0U4__V$s1S$sP-0)00%0%=X3Z0r3U44  4bZ4 S8#p8 X$spDS$pcl#d%ch#N!d$i!V# "W#Q"c# \:LZ*i00+|@00+++*5i00+|@00+++-110N%0N%cD;D.e~Z/}.J</:/: //;Z=aZt35U4`4`  4b`Z4` 8b#cp8 d$speDS$pfcl#d%gcW#Nh!h$ii!d#jV<330u%0u%<,4;40%0%-|440%0%D;?Z5t5U3s1cP3s2cP)mZ>&Z"$S  ??CU$pid ZS$d -X$p %#b Z$i ZS# #0M#LP#B*ZV#-ZS#_)s)t:c$@FZ:w$HLZ:$ Z-@pB&iZ"$@CIDU)rfdZ$wfdZS$efdZV"6&@LDFU$fdZ|$secZ|#:Z|#!Z|$retZP#Y"|#~#}#:|$tv|$tvp6&P$d-|<%8EJE#Z|# ZW<&JEWE# Z|#  ZW-WEdE# ZQ#  ZW"&% F HU$s& W$t& S$fd' ZV#\' ZS#( OV$d) -X"&G  HHU)fdH Z$sI R#J %P$nJ %W"H'a HJU0Mb $fdc ZS$dd -h$newe $rf ZP"l'L  JJU)fd Z"' JKU$s W$t S$fd ZV#\ ZS# OV$d -X"( KbLU0M $fd ZS$d -hW('( Y)# Y*># #;+># ,0# "-)  dL_NU$fd ZS# ~$tv ~)tvp 6&# %P$ev (~$d -~<(LL# ZQ#  ZW>)h&  Z2&  Z"Q) `NNU)fd ZP\)C"i* NQU$re i*~#. ~# Z~# o*~$rc Z~$i Z~#2  S#D' ~# W# ZV)s $t S$d -~>N*& i Z-,Q1Q& I ZQ)*Z*Us Dst #Dlu Z#Uv *=*%x *QRU4x ZW$resy *V$lz ZS*"L+N R(SU3sb *W4 ZV$l ZS# ZR"r+\ (SSU3sb *S=O, *SUU4n S4D'  42  4  3rc Z$n Zp$i ZQ$rp S#8 *W#f Zl# h# Zd2&D Z"w-k UZU$re i*~#. ~# Z~# o*~$rc ZV)i Z#2  ~#D' ~#n ~# Z~#N Z~0 0 Z)s $t V$d -~$si Z~#{ *~#[ *S"-| ZZU5 % ZZU%~ ZZU% ZZU%g ZZU". Z [U$d -h%  [R[U%d" T[[U".* [W\UAv.y+ $d, -h-[ \09 7M/F X\^U3vE S4__E  3boxE #G -X#G -H$sH W$spI DV$aJ %W:2/ Z Z-]]& P Z7 0Xe ^E_U3vd 4__d  3boxd $df -X$ig ZW$jg ZW$sph DT -X#  Z|#6 Z|#* Z|# ZS$k Z|$l ZW$r Z|# Z|# Z|#3 0|# 0|$new 0Q#s H0H$ref 0V$r2 0R#__ |#@ ZQ$s 5}$t W# 0{#: -}# 0{#y Z{# 0{# 51{$ssq *1}<3dd0 %0 %<4gg&H Z>4$Newp -|$Oldp -|$winp -|#p -|#p -|#p -|2:4  Z& Z<4ll&BZ>4&<4m+n&{ Z>5X& Z<"5op& Z><5x& Z败$$<{8~~0%0%<8%50%0%>w9:8 /Z*89+9@9+9+9*99]c+9@9]c+9+9*K99+9@9+9+9@9 +9@9 +9+9-Y$d-|&Z.9Ly/x.96/5/5 "C:HsU)iZ$x]$y\$z[&K#Z": 'tU)i(Z$r)]$g)\$b)[& FZ":J˅U)iKZ)rL)gL)bL&WZ"<;[̅U)i\Z)r])g])b]&hZ";l[U)imZ)rn)gn)bn&yZ";}\?U)i~Z$r^$g]$b\$a[&Z"#<"@ԈU)iZ&%Z"z<ԈU)iZ$x]$y\$z[&Z"<QcU)iZ$x]$y\$z[&TZ"(= d+U)i Z$x ]$y \$z [&,Z"e=e0,U)x1Z)y1Z&h<Z"=*@(U)nAZ&-IZ"=M( U)iNZ$rO^$gO]$bO\$aO[& xZ"^>| U)i}Z$r~^$g~]$b~\$a~[&Z">sӎU)iZ$r^$g]$b\$a[&vZ"? ԎhU)iZ)r)g)b)a& Z"s?h/U)iZ$x]$y\$z[&Z"?x0U)iZ$r^$g]$b\$a[&{=Z"9@AU)iBZ$rC^$gC]$bC\$aC[&lZ"@vpےU)iqZ$rr^$gr]$br\$ar[&yZ"@ܒpU&Z"@ pU& Z"-AU)iZ$a[&Z"VAU&ZfA"5!;VA@d  #& # #K1 mZg Kx9 K=.DF Q-Lfp AgKUMAd  5 E-=Z nZjoZrpZmB< K@!]B9 #B< B"M#B@ #g #A *1g B"5!B h Nhv6Xh C"O#f C@ ) T  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  3 IntO )H __## $H# %# $&%# 0.'#d5# 6Z# r6Z#, 7e#89#<:#< ;#< B*=#@ ! E#D  Y)H#u4# r+i,Os-a.sym/v3vT-  * T# !  T#obj #n] pZ3x1O#y2O#0*]V%#& W%#X%#? Y%#Z%#[%# \%#KzTs]all^Optadpb#ipc#sp# B# # # B*#pKHYiUZflUpӕUivԕ U[ __# KR#^UdRiOP   `UpVRS Ot\UiOV;Ox\UspW T/ B*S!o"!"iOVdXE-O# O$#O%O&Ι'H$1# 'O%(O&L( ~&gH'~&''&'&ߟ')ԠO*+d,O-( pop.d,O/ N<U0T/Oh0PX&y U( & X]( H1%eO/ km<U2splS3zlpV4 n""p5AopS/` }\U2sp|S3z|pV4Q ~""p6E-O/ \ѤU7 O""p5spS0zpV/= 0Ԥ4U7 O""p5spS0zpV0h#& O8( H9t #;4U2fV0KS/ ,ZU2tblS5ipR0V5tW/ \U2dpR2ipQ9T U3S3V0DSOW5pQ5qR/ _,cU30.)2len)OS9 5dU30.4S5s7P9{ RDoU3YBO2idB 3C3bCS3$C30.C0EV0ES:KF0zGpW;$Gp9'7lpU3YiO3j 3bjS3$k30.k0mV0mS:Kn0zopW;$op9ԬU33b :::K5dpV5dX5sP5iOW# O# O8!&( 9LԬ U2sp;$p0zpV5ipS<} 8U;$p0zpV5ipS/8U2d5s25iOV  O=rU')X>=?tTU( h)̯8>  O 2;?`h n&nn1 O?(x9 ?=.(DF ?h ?L h  @?M ?#* ?*$G  3K ?)#@G  V@?[%E ? Apc!   c?g% Afp& G ˈ 2 =?h  BCd % C &j 5 #3T  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  3 IntO )H __## $H# %# $&%# 0.'#d5# 6Z# r6Z#, 7e#89#<:#< ;#< B*=#@ ! E#D  Y)H#u4# r+i,Os-a.sym/v3vT-  * T# !  T#obj #n] pZ3x1O#y2O#0 ?TUsp>SP@eQQApVWO A{eRGCUvPeSQpV DyU |U9BOQpVspSAU x!BO"QpV"spS"dh8# O$|  b8c#e#pmO#%|& pA'+aU(,OS#6O''CdܵU)spBS*$:BOV+D'(ES'kjܵRU)spiS"PkpS"QkpV'zTU(N{OV"P|eS"Q}pW, O-x"dX'?*U"PeS"QpW(NOV,' O-"dX'p,3U"PeR"QpS  2.;pj /n/&n/n/1 O0(x9 0=.(DF 1pc0 Zj 0 Zk .jO k +'z%ʹ40int7=D OU-)H__##$#%#$&# 0.'# d58#6O# r6O#,7Z#8 9#< :#< ;#<B*=#@! ED#D8_ Y)# u4_#   r+ i,% s- a. sym/D v3k  r      m z  ',.&C %#%#T ## ##2### Z#$#(a#,2#0#4%#8#%#<%#@)#Da *#F+#G$/#H8#L> #T? #XMA%#\cC#`  ##8%#3I-  * I#!  I# obj D#n] eO3 x1%# y2%# 0-, spD#B### B*#.($4UDS#%Vp%{LʹUQ2;A k 1 %& x9 =. DF gfp   \;&̹8.R0  intmz zr a'0.>,.&C Z#% #T # #  # #2 # # # Z #$ #(a #,2 #0 #4 Z#8 #Z#< %o#@ )>#Da *L#F +#G$ /#H 8#L >>#T ?>#XM AZ#\c C#`F   #  # 8 Z#R  K  3 # E w& Z ?S% *# p +Z# 9,#-J Z IntZpv} f)H __## $S# %o# $&0# 0.'#d5q# 6%# r6%#, 70#89#<:#< ;#< B*=#@ ! E}#Dq  Y)S#u4#  r+bi,Zs-a.isym/}v3A-  * # !  #obj }#n] ;%b3x1Z#y2Z#0fe]V0#& W0#X0#? Y0#Z0#[0# \0#zTs]uall^Z;tadpbi#ipco#sp}# Bo# i# # B*#; dp isym } o. Zfun esw   8  b8c#eD#pmZ#D8 pJ_  Z# 0.# BZ#_ b:@N5  __ # Y S#ptr #  # h # # Z# ^ Z#  #  Z# Z#$ Z#( g #,  ?#0̹ٹU P! iܹUU YZP S"piR#3 XU$cZP%ZܺU&-ܺ#U' Z$sU __W 3 __# Z#( k "iZS)DS*%*% !y  ZtU __ƓW<  __ʓ#(Hy l "iZS)*%*% ! 'C &ZٿU"iZd"rbh"mZW"nZ`"eZ\(ZX(XߓW(RZV"uP+C hn,V +c hn,v , , -c e~Z.}@- J<z.:@.:\./;Z/Q VZܿU0 O}0 A }ZZZ0  Z0)  !Z1i"ZS1sp#}P2$S/ qZ U3 u4c1s#4c2s#YtZ#1tabu  2Xu @o l l 5I U5U6e U2}V7F8J  Z)Uy9xZ: =:U1retfh8  Z8 Z8 xZ8 ;Z9Z:.Z<U;sP1dfh1retfX5257575?ܲ>75d8U=0.1iZW1nZV1sS2o   :*Z8?UB-1sS1uh+C ,V +c ,v , , 6O@U;cS:Z\U1cZSC6(\U2)p1c*ZVDd+Z:eZ\U1cfZS2gP>_Z\U04O}1sp}P27{2IR o 1(;_`k EE&EE1 ZF >x9 F= .>DF E_E .F ~k   F@ !9 E #3"bof*Zĭ F+Zk  mGF,\,F-Zk E4VF} 8Zk   F @,  F?A,FE-BZk F CZk F DZk FaEZk (Y\ 2gZo .+_Int0intBHO Z`8)H __# # $# %# $&# 0.' # d5C# 6Z# r6Z#, 7e#8 9#< :#< ;#< B*= #@ ! EO#DCj  Y)# u4j#   r+ i,0 s-  a. sym/O v3vr  mz',.&C 0#% #T  # #  # #2 # # # Z #$ #(a #,2#0#40#8#0#<%#@)#Da *#F+#G$/#H8#L>#T?#XMA0#\cC #`  # # 80#3T-  * T# !  T# obj O#n] pZ3 x10# y20#087 spO# B# #  # B* #)U(7i*0j*0VA+8,%Pwh@0<\dG80 LUK7AQ8R[iS0Sa0{dh8* :0;*o &x9 =.DF fp,R0  intmzzra'0.>,.&C Z#%#T ## ##2### Z#$#(a#,2~#0#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>>#T?>#XMAZ#\cC#` ~  ~# # 8Z#G  @  3 IntZ )H __## $S# %# $&0# 0.'#d5# 6p# r6p#, 7{#89#<:#< ;#< B*=#@ ! E#D  Y)S#u4#3 r+i,Zs-a.sym/v3j-  * j# !  j#obj #3n3] p3x1Z#y2Z#0@]V0#& W0#X0#? Y0#Z0#[0# \0#azTs]all^Zsp# B# # # B*#aGdUdFiIZV6[dUdZ s\Pa]Wi^ZV.wUdv szPa{pi|ZWUiZlowZ upZ$UdS!r$tUdSRtUdS UdS GUdSH]UÓZ`vUdp1ɴSdp2ɴVBaddxUd1hd2XwsubiUd1hd2Xmul#lUd1$hd2$X8Ud19hd29X modSUd1Thd2TXrUF g&l0Udmhl 0Udh notUdh Ud1Xd2HlenZsPiZSlZDiZW JUXHdaVdplenZsiZSZS jmpR"UiSS jpt\$Ui]Sd^h1 jpfn)UioSdphc ;,UiSdh 61UiSdh and4Ud1hd2X orUd1hd2X3 %dUd1hd2Xh  dUd1hd2X TaUdh @dUh U 9Udh #<U!v 1ZU"d10"d20i2ZVr3[#k~$E%$E% WU gtk@Ud1lhd2lXdlH lt}@Ud1~hd2~Xd~HMgeUd1hd2XdHlepUd1hd2XdHeqpUd1hd2XneeUd1hd2XhUdhWUspSzpV$bYW$l0.h%Z&&'&&<Usp Sz!T"V$b"Y#W$$P0.%L%c&Z&&(}'&&(X)WdU*c*cS)"tbU*s(u&&spvP`wp8p fodUdhXtmpHA UdhX{ |UdhX"|Ud#h#X:NRUdShSXoUdhX<UdhX <qU 5tU99U"spW'&@<Usp S#cdh UdXspS+ +E-Z+} Z+aZ~W( &#  dI~  8R  UdShnTS$`  UbXdpbObHicS+ d v  U   U"nVarrXdH, UdhXspS+,VBZ+X#-Zsel<UOXdatHiSE#<Ud$h*\=4U>Xdp>Ti?WxQ4\URhdpRVdSXaSSec\UdXdpdWdeHpeaeVifQposfST'|^U}Xdp}Vp~Ha~iQposW `UXspWPSQV'&&&Z  5.;p //&//1 Z0>x9 0=.>DF /Q/_@/1pc1fpzZDp hB4#!rint  mz,]'Int3   )H __## $V# %# $&%# 0.'# d5# 6Z# r6Z#, 7e#8 9#< :#< ;#< B*=#@ ! E#D   Y)V# u4# r+i,3s-a.sym/v3v ,.&C 3#%#T ## ##2### Z#$#(a#,2#0#43#8#3#<%k#@)A#Da *O#F+#G$/#H8v#L>#T?#XMA3#\cC #`   # # 83#3 T-  * T# !  T# obj #n] pZ3 x13# y23#0$UQ#pVP&eSB0GUid/VPhpRni3W0AseQAbeQHU$pUAeSPpWQpVjUspQp {eSpVYpWAeRAeRlUspպQp id׺W{eppYpS0AeRPAeR3C UspWQpVidQPeS/r3D  UspWQpVidQPeSs!3  U sp S Q pV!8$3WB>3 #!U sp=P@eRQApQ2;`p "1 3""&"#x9 #=.DF #)Zp #app #ep9 :  5)$!  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2s#0y#4O#8#O#<%d#@)3#Da *A#F+#G$/#H8v#L>(#T?(#XMAO#\cC#`0 s  s# y# 8O#<  5  3 )H __## $H# %# $&%# 0.'#d5# 6Z# r6Z#, 7e#89#<:#< ;#< B*=#@ ! E#D  Y)H#u4# r+i,Os-a.sym/v3vT-  * T# !  T#obj #n] pZ3x1O#y2O#0sp# B# # # B*#, YH# __#e3$!!Ud2 ps5PDO!"UCWiEOSR">"UYQOSiSOR s&_@""Ud`hYaHRibOP]u"#Udvh]##p}##}e~O}*J<o:*:/;O #s$Udh H$X$*H$X$=I*Lyx*V65*5zt$#%Udh$%|%Ud֦h$|%(Udbuf$wVOSOwiOwYOwd1w 5 !\()U"d]X"t^H"s_V"i`OS#a$  2;p %y%&y%y%1 O&(x9 &=.(DF 'fp  ,   q "75p)$:"R0  intmzzra'3,.&C Z#%#T ## ##2### Z#$#(a#,2#0#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>>#T?>#XMAZ#\cC#`97 F@W c >   # # 8Z#jc3PrM}%FE#DSG%#3'H3#r"IE# #J>#:!K>#&L#!!M##;N#%Q}%!Nr"T# U# yZ"@7O%V}A'\lcc]A#fcc^A#o%_A# `A# G'at%Hf#gZ#!ht#{$iZ#z"jZ# lcckA# lA#!m#!n#%o# !p#$%q#(%r#,, sA#0$tA#4@'uA#8$vA#< wA#@!xZ#DZ%yXO# *# $A#O#%N@))U*M&mZ)*U#l*R: ltQ&ltSren50;6$Z**U#*R"Sk!ZV>Qre5$rug Z*,U#u#KV$Zr"Z!cd{ptrAScZQiZW+," ApALt ,M-UpAQcd{R4"AP-;.UpAS&tP"tP#Kcd{RminZpmaxZlF!Z<./U#;Pr"Z Zp$ZVccSdZPopZP !//UptrAQuPcd{R! ZVV &Z/<0UptrAlenZV:'ZS `$<0d@Ur"Z%t % #u#KG t"t @%t$cd{( #)2%>:"$>!d4y#8!5n&ZL'ZQ$ZR ZZVZW Z#Z#ZW&Z=%ZcZV#;W$ptrA@a%AD%!H !' Z" Z~5& ZW]  Z~" Z ?2s2tcW setZ*!Z tR!  ZRe iZW&Z~lenZ~ V 36z6[ZP 66ZP  ZPZQbraS 77ket(Q 89y9len{ZR 8__sU> l .;$<dZ~ U ;;ucZP;<"A V<=o%AR K=<>a&l~&mZRimZQo%nAWPD$ZP??%ZRI#Rd@KBUr"OZVG OZ %Ot%O #Pu#PKp!P ] PZP"QtW@%Qt,cdQ{0ptrSAh#;Td#US V`&W\&XZX&YZl"YZphcZQ%ALBBU#;AQr"tW'ZVu%!& BMCU#;% ASr"% tVi%( AQop* ZRB"J PCCU#;I ASi%L AQopM ZR"%n ZCDU#;m ASr"m tWco ZVdq ZPi%r APopt ZR% DZPU2  @r" Z # Kz& t3' 3&#" ;H"$ QO ? Lre S Zw% ZWc ZS" Zw@% Zw$ Zw:! ZwY# Zw?# ZW1% 0wDS %V#; wptr Aw ! LXX% y& wmin Zwmax Zw' ZS" ZwEEN$ A G(Hm"3 ZwG(Hch8 ZP XHHJ% A & ZP A,JLset Zw*! Zw  tRy W!q Zw8#r Zw0!s ZW@chg ZPZ'"O \PPUM ZR$M AVM ZSmdM 'WimsN EpP AQz#$ PjU$ As# AW! Zmd 'ims EA  #'C Z "SU&X&Z$ E" Xop ZPmin ZVmax ZR% Zi Zc ZS# p ZV% ZS*AV$A~ QVR!V{!~ KTTZQ  VVppIA~ .-WWpp)A~ KXHYppA~ hYlZppA~ :\x^ppvA~ 2`Jb'YA~labppA~lenZ JbdZ~Z~c6dpp@ASDrc~~$tV$)j$ZS%%ZR +hh*AV$AS ^ii ZR ii! AS i4j! AQ4jj^! Z$ Z$ Z~9ZO&Zj5pU#*$ D'@PZf#Zr"ZQ t #Z$&Z#ZW&Z!!Z#ZimsEo$z A$ AS@'!A@&"A~re#5&$ %~!&"' ll%ktR ltP8rcZQ%tP tRpARmmppZPsoocZQ!!&"y> %#"q i# Qq F$.$T@jF$$UFjJS$0n`j*@ $T'q KG $"&\j;qq&Z$)" ka7%?$&' q $|Dp8p`'i'  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  30 __# KR# O __ # KR # '8ppU 8 3;(v n&nn(x9 =.(DF   @v   v z%Ep: )R0  intmzzra'3,.&C Z#%#T ## ##2### Z#$#(a#,2s#0y#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>3#T?3#XMAZ#\cC#` s  s# y# 8Z#<  5  3   b8 c# e#p mZ#  p0Zq) YZ#opZ# I9q# 5 q# mid q# & q#)-2w t f ) __# o# B*#  # Y Z# )# ! #)e_   Z# 0. # B Z#_ .c7sym8# X9##(pqU*sStRiZVlenZp)Zl*'qrUsymSO[(rsUcntpSw*ZssUixZP/*svUiZS'vLwUiZQ{*#LwwU."S *@wwU.?Sv(JwwU Yt)Sw/xU__RVsymTS *`0xxU___VsymaS )qxxU__pPsymrS)xyU!symS"R( ^*yyU__VsymS#yy$%$% 'yzU.VsymS%NZW#z*z$%$% 0*zzU__WsymS%(V#zz$%$%b)z{Usp&{D{V{$%$%#Z{g{$%$%){~|U!idSZ_p!vpV. '6|}U!sym4W!vp4 s7Sid8S (^}U!id\SY\Z !vp\V#$%$% '*4UYZV.SsymWdcZW0 (4U.Ssym Vdc ZVt S 7+ՄU.SsymV%(RdcZV )؄\USZW' symViZS(\U c A(lU!id%__c  sStViZplenZW%:(Zl s l*.lDU!id-%__/c  s0St1Vi2Zplen3ZW%:(4Zl  X*XDՇU.VS p *n؇_U.lVeoV%NpZS%__qV'{ *Z`܈U__& ft$%$%& z$%$%& $%$%&2 $%$%&X $%$%#ˈ$%$% *܈ USZS(Z) *(U(Z))(USZ' (Zsymp*E*Z&kdv$%$%&~$%$%+(Z)#‹$*%%(P%(8USZV' symS, )-5)Z-J(&p $%$%#0(Z) *Z8U(Z)  4;@w y&yy.3x9 1 Z.=.3DF .},P,e(-c  .2Zxw  +5|w  p ':w )Mp{ 'OZ{ 'PZ{ j(R   ?.V`,&+Z{ P)Z{ +D{ p)Z{ (Z{ ( {   )%*}{   %I* {   -%( |   %'.|   (%>+`|  7 %' '|  Y %)!I| %(Sc  %>* %K+ %(Z %(Z  %(I+)  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  30) YO# opO# I9# 5 # mid # & #)-2> t f ) __# o# B*#  ## Y O# )# ! #>)>S m >` nO# , o#_  O# 0.# BO#_ N)KUDSJOSs!,XJUDSWOS>,dOL`U.cP+jO`tU.iPG,pOtU.oP+v]UtuRq+,`UopORlRmRrRxRptrP+UopORlRmRrRptrP+ĐUopORlRrRptrPR, UopORlRptrP{++UopORptrP+O,kUR+OPR(lU.S+&Y+AU.@VtBS+CJ+UsS(U.S>`OR+VsVtP+O  g+lU.S>`OR+V+O y+_l̡U+^V+^Wsym`ySaOptopaOliaOSP,̡UFXOW.VsymyS  2;| n&nn (x9 1 O =.(DF }!G  ] ("M  g,#O| +$ +%  +'O| [,(O|  Or+)  2,*O} ,FO}  )G}  .  \S  }  O  \b+?   p +`   +  F*M0t,)rint  mz,]'*,.&C 3#%#T ## ##2### Z#$#(a#,2h#0n#43#8#3#<%k#@)A#Da *O#F+t#G$/#H8v#L>#T?#XMA3#\cC#` h  h# n# 83#1  *  3 m,0UDS3SptrS  4; n&nnx9 1 3=.DF }  +(N˹0,)  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2s#0y#4O#8#O#<%d#@)3#Da *A#F+#G$/#H8v#L>(#T?(#XMAO#\cC#`0 s  s# y# 8O#<  5  3) YO#opO# I9# 5 # mid # & #0)-2(,~,-^-R-,-)-,,- ,  - , 7- _   O# 0. # B O#_ ^sZi[Or\ t] ^j-WO0DUYVOlex> y Rm Q I1  PG8 F! < !P   D [Op([ l DSOV"S{ tS?ަ(Oq@,OVt1Wt3SPرiXOSXDSOdmsg`xOSNOW{ SH,DVU s!b!EF#HO#$JO#Lb# r "!O,X˹Us.P s #-$ O-~errr}r{  w  4%; ` &y&&y&y' (x9 &1 0O'= .(DF &}:&;O%,N   %(O &B-PO 0(s% o   H%v /  E(% V 4 k %R |@ [  *%I `   3     _   ( -   2   LD   " Z (R Rl ` I  a q  q (Z  {  (Z  n  's-O,'-,',O,'rO, O  $O yyn%O  & 8 '  (O  )O  H  +    2 , ` v . q /  ;O  <O  G  KO  n {-^  -RP̹5.)R0  intmzzra'0.>,.&C Z#%#T ## ##2### Z#$#(a#,2#0#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>>#T?>#XMAZ#\cC#`F   # # 8Z#R  K  3) YZ#opZ# I9# 5 # mid # & #0)-2>(qsiZr!t3 D-@̹UI __G# YHZ#.-ZRU__iZSZVendZWcmpZ!%%b*T}UYZQiZP$ UcZR>. rUYZS).}aZPc%%   .Zt8UcZP8BUcZV r!"!"!.!: M4D!`"m4D!!#EZQ#SZS"M!`"m!!$e~Z%}@$GJ<z%:@%:G%/;Z$mLy!%x@$6!%5@%5G'cDPU&__d'Ke'}'Bf7P(Fg(h=)runiZ*S*>*&-j 7  H+ X 1;H &-|q1 Z, >x9 ,= .>DF    E-Z Z,*,-.(4 )Z8 .*Z< \+Z@ -,Z .-ZD ..ZH ,B-/ZL -0ZP   >,-I` /UfP.)int2')Y%#op%#I9#5 # mid #& #90)-92  t f ,L)__,#o,#B*,# # Y %#)L#! L#) G.%PaU p..dU .-Sid0,Vsym1W*2,A(3,,R!.f%<U .eSQ0g%V 'g%P`y.%<gU .RE%PL%.%hU .RE%PL%R%e.%U .RE%PL%M%R%e.%RU .RE%PL%M%R%X%.%TU .VQ.efU.dS23;`   1Wh,/\_ \#0.c#B\#inti'_ %  mzr0.u,.&C \#%c#T c#c# c#c#2c#c#c# Zc#$c#(ac#,2#0#4\#8#\#<%#@)#Da *#F+#G$/#H8#L>u#T?u#XMA\#\cC#`    ##8\#~ i w i 3 "  b8cc#e.#pm\#.c" p04 !EFc#H\#$J\#L# i !OML5Y/x@#y@#z@#/31 r@#g@#b@#a@#. 08n9\#uid>\#! ?#*@# >0A>.10{]3|\#X0}#.~#3# 1\#,/1q7/\n\#pos#rot#5#4\#L9#P! q#T*q#X0"n\#a0\#'u#! # *#3.9hUs8c:Gerr;~;|/KUig0UUsTcST_]U1m\0r\z`UcyiR({v i I81[UoI}/30\[1\/\0\ ZidE/\U__cMcSod}cmdd{F0utldr&0on\Si\Sid\o0r1\S.0do0SML_>0\ x"8\ ui i  \ !@ 0@U"sc#ccV$8@\$.\\$/\X#i\P#d\P$K0\T$0\P%x 0{U&__c&McS&.\#od}#cmdd{#ldy$%/dv$.0dt'u1\$b/\l$q0x l$&0l#n\W#i\V#id\l$0\l$0t$M1\l$E1\l$f1\l$/S$0\S#x@k#y@S#z@[$1\S#arg~ l$Q/\k$.\R$. k$0l$0l$(S] ,?>01\(Hbz/\w c % 0}|U"s|cS#c~cQ#outcW#ocR) "\ \% .U&c#sd}$t/d{#ody#cmddv#i\S#n\P#id\V$1\S#arg~ n$F0 j$Q/\j$.\R >0\ z/@\ " i  &1 \*P#h ,p*/)I,*/*\,*/+\ *0,, `3-^1/  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  31mOL50Y/ x# y# z#/,1  r# g# b# a#. 1x' n(O# ),# *,#$ +,#D 1,#d -#h 1.O#l ! /#p *0#t711708 n9O# uid>O# ! ?# *@# 0AN1q j2rO# poss#1t%.10{ ]3|O# X0}# .~# ,# 1O#,/1Y87/\ nO# pos# rot# 5#4 O#L 9#P ! 8#T *8#X01 nO# pos# ,# ,#< ,#\ O#| # O# ! # *#I1IFK[UnOWxhy`zSvFPN 7\Ur6Pg6Pb6P/8,LUpKOvKOSidKOVMPX0NPBeUpdOvdOSiddOVfPX0gP~bUp}Or}Sg}pb}ha}`P%dUpOmOSP3UoOpOSidOVobj3PP>UoOxɬSyɬpzɬh 23PTBUoOxSypzh 23P5 DUoOxSypzh 23Pu UoOvOS 23P h0Ux/OPy/O  -=Un<O4  JUmIOrISgIpbIhaI`1K4 P ebUmdOrdSgdpbdhad`1f4 P vdUmOrSgpbha`14 PH  UmOtV14 S RUoOxSypzhS2 P {TUmOrSgpbha`S2 Pv UmOrSgpbha`S2 P y BUm Or Sg pb ha `S2  P &DeUm%Oe%OSS2' P] >hUm=Oa=SS2? P  VUmUOdUOSS2W Pn&nM4_&D4/  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  31mOL50Y/ x# y# z#/,1  r# g# b# a#. 1x' n(O# ),# *,#$ +,#D 1,#d -#h 1.O#l ! /#p *0#t711708 n9O# uid>O# ! ?# *@# 0AN1q j2rO# poss#1t%.10{ ]3|O# X0}# .~# ,# 1O#,/1Y87/\ nO# pos# rot# 5#4 O#L 9#P ! 8#T *8#X01 nO# pos# ,# ,#< ,#\ O#| # O# ! # *#I1IF" nO# a0O# '(# ! F# *F#1. U4^O  Ua4lO ' Uz/zO( _ U2O`  U2OP 2  U3OOORv3v  Uj2OWxhy`zXOOS4ON4v : Uj2OVOOPe2OQ2v< p Uj2OSvvPq4p  UOOVk3 I U<kSnOP"2Q4R28L  U<7kPn7OS49QJ3W  U<VkVnVOSrXP$ 4qO  U4pOPZ 3} &U3|OO~OR -2 (KU]3OWOOS4O 3 LU]3OVOOPX3OQ) 4 U]3OSp P^ 2UOOW4S 2 UnOP82 R4 Q> 64. Un-OS4/ Q ~3N UnMOSrO PJ 1aUq0b V4cS2 U 3 UnOP0 R.0 Q Q4 UnOS.0 Q o3 UnOSr P@ 3U.0 S2"  U M2/ jUn.OP40 R31 Q b3a lUn`OS3b Q *4 UnOSr P6 ?26U3 S3 8BU  4 DU< SnOPB3 Qo2 RL  Y2 U< PnOSo2 Q573 &U< VnOSr P n &n n 1 O!(x9 !=.(DF !2  !2  !2  !3  !2v !4 O !3#  !4$O 3TO #3UO {2VO 6b{;(6/  intmzorVSoo'0.I,.&C O#%#T ## ##2### Z#$#(a#,2#0#4O#8#O#<%d#@)3#Da *A#F+#G$/#H8v#L>I#T?I#XMAO#\cC#`Q   # # 8O#]  V  3 N ^@ J%# < K%# : L%# lK M%# ]6 N1IHIY  b8c#ee#pmO#eY p0kK F M G# * H#1mOJ5rL5A7Y/xw#yw#zw#/O1 rw#gw#bw#aw#. 1x'n(O# )O# *O#$ +O#D 1,#d -#h 1.O#l ! /#p *0#tZ11Z708n9O#uid>O# ! ?7# *@7# 0Aq1q j2rO#poss#1tH.10{ ]3|O# X0}# .~# O# 1O#,=/1|[7/\nO#pos#rot# 5#4 O#L 9#P ! [#T *[#X01nO#pos# O# O#< O#\ O#| w# O# ! # *#l1lA^ 9  :O# a ;O#7^O(U9^b^O ^V_~S`o`oLywxK6w5K5ce6nOUmm~PbnOn$6sOU9sbsO sVt~S3 7O-U~PbO m9O0U9bO V~Shwhw 8OU~PbO 57OU9bO V~S O8O5U~PbOP 8O8U9bO V~Spp 7OU~PbOń |6OU9ʾbO ʄV~Ss 7O=U~PbOڄ 9O@U9bO V~SxxC 5OU~PbO 5OU9bO V~S  6O EU~PbO7 OHU9 b O  V ~S8OU~PbOyM6"O'U9"b"O "V#~Sye~O}KJ<o:K:/;O)]92O(GU11~Pb2O279HU9EO$U9EbEO EVF~Sm6VO$IUUU~PbVOV8[OLU9[b[O [V\~S8lOUkk~PblOlr7qO< U9qbqO qVr~S    ?6O< a U~PbOL6Od  U9bO V~S    8O  U~PbO&4O T!U9bO V~S(!8!(!8!~5OT!y!U~PbO7O|!!U9bO V~S!!!!X7O!"U~PbO g7"&U!__K}BP"F"#runOHI8OP  $%%5(&&U9($L,6/&!&U9/P75O$&*U7}.08P%GO&  $8**U'**%O&$9*++U(xOV(yOW(9OS)95,+M,U$u :P,/US2uS*iOW9{X   )6C/1Un8c1r2U(ab (bb$(cb<*rdX+lew\F7t2C3U< *iO*c\5S*vlP l q$Fu9D37U5.FW66V6W*vlS*tvlPz8H9{9{F8{!57S$s6N78UR5OsSa$8u89U9uSwh8x`q7yoP)99:U$7:':U(sO,/5(::U*a|$r9:{;U(fS*o}R&}--&--1 O. Ix9 .= .IDF .0,O(,.[1-O,./.O@,.0/Ox,.82,.93,.94`,.65O$,.79w؆ .5?w .W8@w .5Aw .6D{ .7E{ .8F{ .08G{( .Z5H{8 .=7J ,.9NOH -O~.N9POL .7V,.!7WOP D9hd|;L/R 0  intmzzra'0 .>, .&C Z#% #T # #  # #2 # # # Z #$ #(a #,2 #0 #4 Z#8 #Z#< %o#@ )>#Da *L#F +#G$ /#H 8#L >T#T ?T#XM AZ#\c C#`N 7 \ V   #  # 8 Z#n g 31IHT  b8c#e*#pmZ#* p+BtHN>H~`fKx00K/):DxZ# y#Z#p:=#  E#ZA?%0D@?O=RZ@PA^___#;`#Hd#Mg# Aj# R1Ao^qLT#FT#=DzZ NG#SL#`A## key[#3N4nG#>:#-#3#<Z#BZ#  <Z#$0GZ#( N#,J#0N VV3NRLG SLR#IZ#;;# LGXIDGEIOEIQEiREEejFfj5Aij>Mkj;ljEmjg:^(F %Z# ! (# j=># H;# >Z(.FGCY_X>  L# >K# !Z# <E# pIE# e?E#0@Z#MDZ#DjLe*  OZ#C Z#C * #: r P'L# Ox #7>#TZ# YZ#;Z#HZ#sAZ#m<~ # kEZ#$"L* #([GO#,bB #0 =!E#4"J"E#8@#Z#<,<#Z#@B$Z#DJ%Z#H<&z#LIr 0 LL'< { <F?7#L8E#MN9#H:E# =;Z#M<Z#B=Z#SB>E#>?E# >@Z#$}JAz#(>Bz#,NCZ#0GD#4IE#8{AF   xZ#yZ#TZ#YZ# MZ#y?#MZ#_H l LE#red>#U># R>#'C# pad# C  Ir { <TYGZ#CHE#BIZ# OJ{ # BK#7>L#BM#YN#xOZ# yOZ#$5>PZ#(GPZ#,\Q0#0@ER0#4>SZ#8 -KT t<fYYZ#CZE#B[Z# O\{ # B]#7>^#B_#Y`#xaZ# yaZ#$5>bZ#(GbZ#,\c0#0@d0#4>eZ#8#@f g<xYkZ#ClE#BmZ# On{ # Bo#7>p#Bq#Yr#xsZ# ysZ#$5>tZ#(GtZ#,\u0#0Iv#4>wZ#8CxxDY|Z#C}E#B~Z# O{ # B#7>#B#Y#xZ# yZ#$5>#(#,M#0#4>#88#<\0#@@sYZ#CE#BZ# O{ # B#MZ#Z#Jg4YZ#CE#BZ# O{ # B#Ix #D(YZ#CE#BZ# O{ # B#xZ#yZ#TZ#YZ# NZ#$Bs0YZ#CE#BZ# O{ # E#xZ#yZ#TZ#YZ# NZ#$;Z#(JZ#,LTYZ#CE#BZ# O{ # E#;Z#JZ#n;YZ#CE#BZ# O{ # B#\Z#@`0YZ#CE#BZ# O{ # <#B#xZ#yZ#TZ# YZ#$MZ#(NZ#,;YZ#CE#BZ# O{ # B#B#<yYZ#CE#BZ# O{ # B#B#HZ#VEYZ#CE#BZ# O{ # B#B#NZ#gBh YZ#CE#BZ# O{ # <#B #.J (Y Z#CE#BZ# O{ # B#B#<#xZ#yZ# NZ#$Ct4$YZ#CE#BZ# O{ # B#B#xZ#yZ#T Z# Y Z#$M!Z#(6="#,N#Z#0N$o .Y'Z#C(E#B)Z# O*{ # B+#B,#x-Z#y-Z#H.7Y1Z#C2E#B3Z# O4{ # B5#T6Z#Y6Z#M7{8FY:Z#C;E#B<Z# O={ # <>#B?#x@Z#y@Z#TAZ# YAZ#$MBZ#(6=C#,DZ#0x:EE#4@FFQPYIZ#CJE#BKZ# OL{ # BM#BN#pOZ# DPZYSZ#CTE#BUZ# OV{ # <W#BX#pYZ#};Z]^ eY]Z#C^E#B_Z# O`{ # Ba#j>bu#Yc#\dZ#MeoYhZ#CiE#BjZ# Ok{ # Bl#ROmu#Yn#Ioj(|YrZ#CsE#BtZ# Ou{ # HIv#Mw#ROxu#-yu#V;zu# Y{#$<|&$YZ#CE#BZ# O{ # M#ROu#-u#V;u#Y# L YZ#CE#BZ# O{ # B#G#newZ#\Z#;2bsl S z 0YZ#CE#BZ# O{ # B#Ku#XZ#'#?( YZ#CE#BZ# O{ # B#@Z#:EZ#NZ#EYZ# O{ #Aj#CE# s7#SA7#J7# K4 YZ#CE#BZ# O{ # B#mJ!L`YZC > @t?gNx7K(D=DLT<=KGGy@MGh<><op@@:QkCU;^ILCQO&GEM(JIgpad!!z L ." ES#7FS#TS#AS#A<S# L># A!b"__u#CE#=:"h#PL#fid#$ 0#/H 0# RJ 0#/O 0#YD 0#HZ#vG0# GZ#$Gh##(A."#,M>."#8G##A#<Z#Lb"."Mn"t#XICu##>;m##7BEu##F(O|w= # $Z#ZnH#$<$#Z<$O}$|N %)M&}$#E)$#,## $|N/B$%I 8Y9Z#F<#J>#mF?# B@#BZ#EEZ#Q?H%#$IL$J'kM O{ #G#NZ#'L* # OZ#B#rK#H#<## yK#$K#(CG#,=##0I##4A #8K0#TE{ #XKE#'C0#K#K##?d#WFZ#?Z#!?#)?#1?#dJZ#!BZ#hNZ#9?#A?#I?#C#kM-%l !o> g0 H= j1 mZ> p0J5 r'L5'm'A7u' +A7t N!+# B,# O{ # =## # B<# ;## ^@Z# <Z# \KZ#$ JZ#( cIT#, 8<Z#0 @Z#4 `>Z#8 g@Z#< KEZ#@ DZ#D :Z#H =AZ#L DNZ#P FOZ#T@@Z#XgKZ#\4:Z#`^NZ#dEZ#hDZ#lFZ#p)>Z#t;Z#x]: Z#|bE Z# IZ#o?V#vLV#NV#M#GZ#@`-# A`-#H`-#/;`-# C`-# O,#L:$#;%`-#G&Z#L'#I<(Z#M)Z#E,,#L.'#?/'#AH0'#B1t'#Hw+!+!+'Jx2+L+Z!+Z+(  'L * #>K #> Z#O Z# ! Z#< E#pI E#e? E#D Z# 0@ Z#$EM L+,( *G #J !E#J "E#L #E# = $E#I %E#N &E#8G 'E#>K (# B )j#$A *+H=,,bO+ @,,#qBlF, -#\'C->  JC-# *FI-# >O-#,,,> - +-vM|;;Ut!+R-D;;Ut!+Q*!+Rpos!+P ".PK!+; <U!FVVt!+S";;#%#% X.B !+ <6<U!9 !+Qt !+R /G;8<=Udpy9{ !K:ZV!fG: /W!\O:#SG<uR=ZPN>Zpi?ZQ_F@+/l7>Ah#MBZ$#bBI&/ +,%/O=1Z=>U!0SH2ZlLH2Zp>2ZtE2Zx&/Lq>>U!Hp`-P&/:{>>U!Hz`-P& 0K>>!H-&40>>!H-&0;>>!H-'>7?&0;8??!9!+!H-&0??!9!+!H-&1:??!9!+!H-&18??!9!+!H-1F??!#9!+&1=??!9!+!H-&1?!<!H1R:Z| P'+&*2D$@9@U!9#*2R02 'g2t<t<@w@U!sS#9u!+2Nx@@U!S#9!+%3FZ@AU!V!9!+S!bZ!a!'CZ#5<Z#@Z#]>Z#d@Z#HEZ#DZ#:Z#:AZ#ANZ#COZ#=@Z#dKZ#1:Z#[NZ#EZ#DZ#Z:Z;ZW@ZpYKZl /5cD4ZA~EU!2!2 !b2Z!3#95!+86ZT 7P{)8XX#H91(4HB[B#I%#I%(4_BzBBKVP(4CC=g'P=hUP)/5D&D*B5)O5D&D*b5*n5*z5+O5e~Z,}V+5J<z,:V,:,/;Z A6EZEHU!! !bZ!-.^H#__V# ?#\O#W9!+V$AA6P@G6SU-J' ;8CHAOU!\O#!< !{IV#9!+fG,Sdpy{ _bBWKZRB_B Z_: ;8`M ZS Z_swa{ `j<L8` #CL8 .7=NZW"^KzK>!+PB,R.7  :Z Z_(7LuMDi ZS=l t'_(7N=NOnZP.&88C<+_N=Z_$P>3!+PL8Z/\8Z 8: DOOU!{I 9 !+S8?J O8PU! 9 !+S\O #V 9RH 8PPU! 9 !+SI9J@ P|RU! V!F \'S#9 !+&p9O |RRU!9 !+P&9<> RRU!9 *2P%9N VRRU!9 *2P%9Y@ ZRRU!9 *2P%:< ZS SU!9 *2P%C:G  SSU!9 *2P%n: = #S#SU!9 *2PM;K $STUdpy { !bB  !@ ZV!T V'!wJ PdM V'SH l Xi ZRC ZWK xa$h0dr xdg x[db x\~[ x]%;F ETUU!9~ *2Sred~ ' !U~ '! R~ '"TU*H l hwJ Z`&<D U!VU!9 *2R!L E &~<uF $VWU!9 *2S!O EPred '!U '! R '"\VW*H l h%N=&A 'W\XU!9 *2P!#< VSD ZЋ v> #S< ZV ZRN Zp= 'W__ VP(7=2W`Wi ZP"X,Xio ZP&=$E \XXU!9 *2!= 'Ri ZS&=\L XXU!9 !+R!A ZQ&== X3YU!9 !+S&>Y= 4YuYU!9 !+S&:>: xYYU!9 !+S&a>oD YYU!H `-P%>F ZYYU!9 *2P%>? ZYYU!9 *2P%>NI ZY ZU!9 *2R%S?@ E ZZU!9 *2Rred ' !U '! R '"0ZZ*H l h&? I ZZU!9 *2R!L E &?,I% ZZU!$ P%?=, ZZU!9+ *2P&@L3 ZZU!92 !+P!2 R%;@^C? { Z [U!9> *2P%f@GLE  [([U!9D *2P%@>K Z([6[U!9J *2P%@EQ 8[I[U!9P *2P A= 'L[\U!? Z!T 0W!Y 0V,.&C Z#%#T ## ##2### Z#$#(a#,2#0#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>O#T?O#XMAZ#\cC#`D77 W   # # 8Z#c  \  3 N ^@J0# <K0# :L0# lKM0# ]6NY ^@Q0# <R0# :S0# lKT0# SV0# MWI# ZXI#YYo>g01mZ Xn7L50   # E w pY7,\0RESC[OER ?<B\&&_S @gm~&&OR8 D [ EO# 6Y F# 'Z G# Y IO# [ J# HX K#msg M# \ Nq# QS P1# \ Q\#$ mU R&#( ] TZ#, U U#0 CZ V#4q\ B rZ#U@P W~ & Z S % *# p +Z# 9 ,# -  'TE\zS>X7R%X`TO3TO[WaPQT X0OV3a[6P red #U # R #T ZR mU O #red #U # R #tW #X P red #U # R #tW #T #T y7eR red #U # R #T #PR #\ ~U O7sV __ s#O #QD C#:] # #R UO  X R Z#key s#0. s#IP # V sT    tQ N #BT #day # #p\ #O #Y %  P __  #' O#DS #  #  Q  S   VY  HT J#Y K#fP L#Z M# [ N#[ O#S P#P Q#-S R#=Q T# U U#Z V#jV Y#O Z#X [#cU \# Q i#(O o#,}O {Z#0[ |Z#40. } #8Y  #<V #DS C#LY m#PFV m#ZHT #dvX #h[ #lO #pR #tW #xCU U#|P #Z #xU #7Q #U #U # R #q[ #Q s#Q #O #Y s#LZ #S #Y #SU #QT  #R #0] s#iX s##[ #{R #] #DY #QV #T #Y #\ s#yS s#T !#[ %+#P )+#Z *+#tU ++#3Q ,+#U -+#U .+#R /+#m[ 0+#  jT 3 R 5V T #Z #-S #P # jV # O # 3P X -Q ?M\  #$S _#A\ _#P 7#MW #Y #XS 7#L\ X#W X#Z 7#W #[V #M #'C #W #EW w#?Y C#?S #S Z#\ Z#P Z#!] Z#\ Z#T #Y #xP #O #Z #Z #P #[ #Z C#R C#R !C#R "C#[ #C#fY $C#7P %#>X '#crc (#[ )#[ *#S +#R , #R -#V .#V /# V 0#V 1#-S 2#P 3#P 4#O 5#jV 6#X 7#T 8#rS >#Y C#Q E#FV Gm#S Im#S N#x[ O#T P#\ TZ#Q V#V W#U \C#8W ]C#HU ^C#X _#[ `#R a#V e#\ i#S nC#Y om#W r#gQ s#X u#X v+#1W w#W xC#lP yC#uY zC#Y {C#hW |#'Q }#Q ~#J[ #Q #V #)Y Z#Q Z#T #U #T s#S s#O C#O C#CU U#XZ #UP #YP C#\ U#~\ U#Z U# Z U#7Z s#SU #-V 7#Z[ #Z Z#Z C#P #W #Q #\ #RX #[ +# U #.R #U #VdIWVZPxZpyZlcZSZh (UhiUrOpTWYVXl'>SVZhSZddI`>S ZP]Zi>jUxQ"UZW8ZVfpS!eO Z@jmU"fp #"U Z $Oeh%pngM\$R&`$ISd$'C$aQuW$Z@$TL$YP$OZT$TZX%iVll$VLZ u7 C!VjZmRmU#xjQ#w\jZ #SjZ#"Uj$8kZS%fplV !. RvZTmvU"fpv#w\vZ #SvZ#"Uv$:Sw$8Sw$Oxeh%pngyM\$R&z`$IS{d$'|C$T|C$aQ}uW$Z~@$TL$YP%rwV%rhW$OZT$TZX%iV&m$XP$yW R'oo(jV. &%p(CV$}T(C%q(CS%r)ZW%g)ZQ%b)ZR%a)ZR)%pal$VZ$=TS*1\Z+Z, V0vvU#QZS#SZ #PZ%id0x!![0vvU#xQ#w\Z #SZ#R&#QZ#PZ#SZ %id0S!!Z0v wU#M#w\Z #SZ#R&#QZ#PZ#SZ %id0S-!S w)wU"red7#U7 # R7-"iZ,wLwU#Q6"P6"7777"-c"NQLwwU#C]\-"WwwU#WZP..&(P97؋ V97ً 7U97ڋ oZ:6"܋ W;Z \CZ ZD (XQ TT $ ,>sw9.]  intmzorV]O'3, .&C O#% #T # #  # #2 # # # Z #$ #(a #,2 ~#0 #4 O#8 #O#< %d#@ )3#Da *A#F +#G$ /#H 8v#L >3#T ?3#XM AO#\c C#`;  ~ ~#  # 8 O#G  @  3]d1IH3  b8c#e#pmO# p0XID G:I O:i R:E e3F f3E m3I  Iu~<TYGO#CH:#BIO# OJ~# BKT#7>LT#BMT#YNI#xOO# yOO#$5>#(#,\%#0%#4>#8-<fYYO#CZ:#B[O# O\~# B]T#7>^T#B_T#Y`I#xaO# yaO#$5>#(#,\%#0%#4>#8#<xYkO#Cl:#BmO# On~# BoT#7>pT#BqT#YrI#xsO# ysO#$5>tO#(GtO#,\u%#0Iv#4>wO#8Cx{DY|O#C}:#B~O# O~# BT#7>T#BT#YI#xO# yO#$5>#(#,M#0#4>#88#<\%#@@vYO#C:#BO# O~# BT#MO#O#Jj4YO#C:#BO# O~# BT#I{#D (YO#C:#BO# O~# BT#xO#yO#TO#YO# NO#$Bv 0YO#C:#BO# O~# E_#xO#yO#TO#YO# NO#$;O#(JO#,L W YO#C:#BO# O~# E_#;O#JO#n;  YO#C:#BO# O~# BT#\O#@c  0YO#C:#BO# O~# <T#BT#xO#yO#TO# YO#$MO#(NO#,;  YO#C:#BO# O~# BT#BT#< | YO#C:#BO# O~# BT#BT#HO#VE  YO#C:#BO# O~# BT#BT#NO#gB k  YO#C:#BO# O~# <T#B T#.J  (Y O#C:#BO# O~# BT#BT#<T#xO#yO# NO#$Cw 4$YO#C:#BO# O~# BT#BT#xO#yO#T O# Y O#$M!O#(6="T#,N#O#0N$r .Y'O#C(:#B)O# O*~# B+T#B,T#x-O#y-O#H.7Y1O#C2:#B3O# O4~# B5T#T6O#Y6O#M7~8FY:O#C;:#B<O# O=~# <>T#B?T#x@O#y@O#TAO# YAO#$MBO#(6=CT#,DO#0x:E:#4@FFTPYIO#CJ:#BKO# OL~# BMT#BNT#pOO# DPZYSO#CT:#BUO# OV~# <WT#BXT#pYO#};Z`a eY]O#C^:#B_O# O`~# BaT#j>b>#YcI#\dO#MeoYhO#Ci:#BjO# Ok~# BlT#ROm>#YnI#Iom(|YrO#Cs:#BtO# Ou~# HIvT#MwT#ROx>#-y>#V;z># Y{I#$<|)$YO#C:#BO# O~# MT#RO>#->#V;>#YI# L YO#C:#BO# O~# BT#Gj#newO#\O#;5bsl    H o 0YO#C:#BO# O~# BT#K>#XO#'#?+ YO#C:#BO# O~# BT#@O#:EO#NO#EYO# O~#A3#C:# s,#SA,#J,# K7 YO#C:#BO# O~# BT#mJL`YOC >@w?jN{7K(D =D LW <= K G G| @M Gk <><rp@@:TkCU;aILCQO)GEM+JIjpad o LEuF:@N5ZOw xUYY' bYOPY-P[S]lO xCxUkk' bkOPk-P"9^wODx{xUvv' bvOPv-Pu]O|xxU' bO-E^Ox"yU' bO-O- pidPg]O$yyU' bOP-P\OP e]OywzU˻' bO-W\OV!yy"#yy"""!-yy"#yy"""!a?zHz"#?zHz"""#Rz[z"#Rz[z"""$e~O%}5$J<o%:5%:-%/;O&z^Oxz{U''S(K]^{;|U'b]O']-P(<|U'bO'- )F*__)(^)o])[])]+K}* O+!S*-+]@ +g^D +]H +r^L +]P +[^T +"^X ,~||+]OP      -.'.S/U0V0S-<].'.S/^U0%V00S n 0; ^  &   1 O1 3x9 1= .3DF 1D',1P^E|,1Q,S,@v,,]  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  3   b8c#e#pmO# p07_  O# 0.# BO#_ u:@N5Bc$U^d~^eP*g?h    f^$݃UstrVSf sSQ^WiOR.#O7^Z,UsYSB*YW S[fV!}\f!\f!P^f"`  4;@ n&nn   u1 O#(x9 #=.(DF ##Ox #^O| #(^ #o] #[]! #]" #^# #^& #^(f,qBiwx, _]rint  mz,]'_ 3#0.#B3#_ l,. &C 3# %# T # # # # 2# # # Z#$ #( a#, 2#0 #4 3#8 #3#< %k#@ )A#D a *O#F +#G $/#H 8v#L >#T ?#X MA3#\ cC#`   ##83#s  l  3 7_&,US'S0^AUS@RU^HUSGP,_PUsOpSOV__xUs^pS^Sn^3V  4; &x9 1 3=.DF _L\ _3X ^3\ D CNxx: _R0  intmzzra'3,.&C Z#%#T ## ##2### Z#$#(a#,2s#0y#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>3#T?3#XMAZ#\cC#` s  s# y# 8Z#<  5  3) __# YZ# def# !  "#  opIZ# lQ5# rQ5#H) *D. YZ# g# # box# ` # 1`!# g`"# _## D`$# d_%#$ _&#( _'#, _(#0 =`)#4 A_*#8 `+Z#< _-#@'`.3tDQsKcLiMtvN"tOwP*0S({_   Z# 0. # B Z#_ 1IH3  b8c#e'#pmZ#' p-sZx‡U__rS]uZ_`ćۈUh~ZV__~ vS"6`܈/U__VhZWvS%%cI`0[U__ Z symS_\U__Ps}  ZxUYZV pS +xMUtR `"P_U ,`Ut+VY+ZS w-* s.S arg/S!a0Z! 1"R_3~"`3}#$O>Z%& $OZ% '  ^1UtW"ZV topZp iZS!_Zi_4UsP iZV pS(b H_ZjU9 bZ?!"p iZS"NZV spP pb W"d%b R$Z%) _ZlUs1b Ps2b Po*%*% 4+; ` ,y,&y,y- 3x9 ,1 Z-= .3DF -)K , a +W`*Q `  ss2r   O-q_4 ,  +Xk  "g,Z "+ "+  "+Z "[, Z "r+   *F}q+_  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  3 D. YO# g# #box# ` # 1`!# g`"# _## D`$# d_%#$ _&#( _'#, _(#0 =`)#4 A_*#8 `+O#< _-#@opIO#lQ#rQ#H'`.DQsKcLiMvN_tOwP0_)N __# YO#def# !  _# S) pei+)Ui(St*P~`BtUiAOtCPl`PtUsOPtQRQ`^`Uw]t_Pu`l`ШUsymk{PYkOPtmR`zШHUvy{PdefyPt{R+HUt1PR+OPtR]+4Ut1PR+OPt2PtR`4qUtS  1; n&nn(x9 1 O=.(DF G~t`_  intmzorV'0.3,.&C O#%#T ## ##2### Z#$#(a#,2s#0y#4O#8#O#<%d#@)3#Da *A#F+#G$/#H8v#L>3#T?3#XMAO#\cC#` s  s# y# 8O#<  5  3) __# YO# def# !  "#  opIO# lQ5# rQ5#H) *D. YO# g# # box# ` # 1`!# g`"# _## D`$# d_%#$ _&#( _'#, _(#0 =`)#4 A_*#8 `+O#< _-#@'`.3tDQsKcLiMtvN"tOwP*0S({`0tҫUY/O`MԫU`LOR.`bUtaVfpa.Swc*argdVf`UvSfp.V v 2;f y&yLHS@`_  intmzorV'(,.&C O#%#T ## ##2### Z#$#(a#,2h#0n#4O#8#O#<%d#@)3#Da *A#F+t#G$/#H8v#L>(#T?(#XMAO#\cC#` h  h# n# 8O#1  *  3) __# YO# def# !  #  opIO# lQ*# rQ*#H) D. YO# g# # box# ` # 1`!# g`"# _## D`$# d_%#$ _&#( _'#, _(#0 =`)#4 A_*#8 `+O#< _-#@'`.(iDQsKcLiMivNtOwP0Sp  b8c#e#pmO# p0!EF#HO#$JO#L0# @ !O`BUtASwCargHS`B@UvA{VC@~ WO  3;@ n&n - ` B  J@,_R0  intmzzra'3,.&C Z#%#T ## ##2### Z#$#(a#,2~#0#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>3#T?3#XMAZ#\cC#`; ~  ~# # 8Z#G  @  3) __# YZ#def'# !  -# 'opIZ#lQ2#rQ2#H) 5D. YZ# g'# '#box'# ` '# 1`!'# g`"'# _#'# D`$'# d_%'#$ _&'#( _''#, _('#0 =`)'#4 A_*'#8 `+Z#< _-'#@'`.>Y34'5'dz6'7'18'9'_:'ٸ;'<'_='_>'_?'=`@'A_A'`BZ_D''F 1Z#fE@#aFqDQsKcLiMqvN-tO'wP50S_   Z# 0. # B Z#_ Ua<@U  aR5UwQ5 fQ'VRDsdqiZvRtXw5f'3x  EaWZ\UYVZlex,> y& RGm 3Q I . P8 FK! m !   D [Zpf0 [ El KDSZVa{ tKS*Z%(ZS 2*]%(]S iXZS,H DSZVmsgVxZSNZW?{ KS^S ah\U!sg"+ai# jZ 6avU!suS  4$; %%&%& 3x9 %1 Z&= .3DF %,: &_5Z  ] '%q_7R &?a85@, ;(f$  #  | S$v   %  ($  &   R H  ,  , , 5I aC -   X 3 uj /  H  _   1  o (  2    `6  (R  6   a  / :  E ( W :  4 m (  F  \ &&Z,&Ma^,&"aZ ,&jZ, Z  $Z  yyn%Z$  &K( 8 'E,  (Z0  )Z  Z S  +J @  | ^ 2 ,l  v .KĎ q /EȎ  ;Z̎  <ZЎ  G^9  KZD9  L~a_R0  intmzzra'0.>,.&C Z#%#T ## ##2### Z#$#(a#,2#0#4Z#8#Z#<%o#@)>#Da *L#F+#G$/#H8#L>>#T?>#XMAZ#\cC#`F   # # 8Z#R  K  3) __# YZ#def2# !  8# 2op IZ#l Q=#r Q=#H) @D . Y Z# g 2#  2#box 2# ` 2# 1` !2# g` "2# _ #2# D` $2# d_ %2#$ _ &2#( _ '2#, _ (2#0 =` )2#4 A_ *2#8 ` +Z#< _ -2#@'` .I EY 3Zg 42 52box 62` 721` 82g` 92_ :2D` ;2d_ <2_ =2_ >2_ ?2=` @2A_ A2` BZ_ D22 F  1Z#f EK#a F|D Qs Kc Li M|v N8t O2w P@0 SD sd|iZvtw@f2>  $_   Z# 0. # B Z#_ b 6 __3#val4Z# Y5Z#P __N# YOZ# __# YZ#%aZ-U__iZSZVendZWcmpZ%%aZ0U__ÓiZSZVendZWcmpZUd%%gaZU__ۓiZSZVendZWcmpZ%%+a!UO$$UcZR>.UposZPa}aZ  m A5Uc4ZS!m FV" # FV" " !% m " # " " !T m Qa" # Qa" " posZR$ Ly|%x@$ 6|%5@%5  ? U&__K? }BO VF '2 run!Z(S(>(&-" O  e 1;U  ))&))Mar* >x9 )1 Z*= .>DF  )  )E-Z) Z)"a-ZH9 */B ,$*ta0, j / a6Z   b .aP{    a ` ah Zl aZp \Zt % : ; I$ > $ >  I : ;  : ;I8 &I  : ; : ; I8 I !I/  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ; I: ;I : ;' I : ; ( .? : ;' I@ 4: ;I 4: ;I ! U": ;I #.? : ;' I@ $.? : ;' @ %.? : ;' @ &.: ;' @ '.: ;' I@ (4: ;I): ;I *.? : ;' < +4: ;I? < ,.? : ;I< -.? : ;' I@ . : ;/.? : ;' < 0.? : ;' I< 1.? : ;' I< 2 3.? : ;@ 4!I/5.? : ;< 6 74: ; I 84: ; I? < 94: ; I?  :!;4: ; I? < <4: ; I =4: ;I?  % $ > $ > : ; I I  : ;  : ; I8 : ; I8 : ;I8 : ; I !I/ .? : ; ' @ : ; I .? : ; ' I@ 4: ; I : ; I 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/  : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I 4: ; I .? : ; ' @ : ; I  : ; ( 4: ; I? < 4: ; I .? : ; ' I< .? : ; ' I< I 4: ;I !.? : ;' @ ": ;I # U$.? : ;' @ %4: ;I&.? : ;' I@ ': ;I ( )4: ; I?  *4: ;I?  % $ > $ > : ; I I : ; I   : ; : ; I8 : ; I8 : ; I 8  : ;  : ; I : ;I8 &I: ; I!I/  : ;  : ; .? : ; @ : ; I : ; I .? : ; ' @ .? : ; ' @ 4: ; I 4: ; I  : ;  : ; I .? : ;' @ !: ;I ".? : ;' I@ # : ;$ : ;%4: ;I & U'4: ;I( )4: ;I *.? : ;I< + U,.? : ;I< - .4: ; I? < /4: ; I?  0!1!I/% : ; I$ > $ > I!I/  I : ; : ;I8 &I  : ; : ; I8  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ; ( : ;I : ;' I.? : ; ' @ : ; I 4: ; I? < 4: ; I  : ; !4: ; I ".? : ;' @ #4: ;I $4: ;I %.? : ;' @ &.? : ;I< '1(.? : ; ' I )4: ;I*1+1,1 - ..? : ;' I /: ;I04: ;I1.? : ;' I< 2 U3: ;I 4: ;I 5.? : ;' < 6.? : ;' I< 7.: ;' @ 84: ;I? < 9.? : ;' I< :.? : ;I< ;!< =.? : ;' I@ > U?.: ;' I@ @1A.? : ;' < B.? : ;' < C< D : ;I8 E.? : ; ' @ F.? : ; ' I@ G: ; I H4: ; II4: ; IJ.? : ; I< K4: ; I?  L4: ; I? < M!I/N4: ;I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ;  : ; .? : ; ' @ .? : ; ' < .? : ; ' @ .? : ; ' I@ .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I? < .? : ; I< : ; I !.? : ; ' < "I#.? : ;I< $ U%.? : ;I< &1'1 (41 ) *.? : ; ' +: ; I, -.? : ; ' I .4: ; I/.? : ;' @ 04: ;I 1 U2: ;I 3: ;I 4.? : ;' < 54: ;I 64: ;I? < 7.? : ;' I< 819.? : ;' I@ :4: ;I;.? : ;' I< <.? : ;I@ =.1@ >.1< ?4: ; I?  @!I/A4: ; I?  B!I/C4: ;I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .: ; ' @ : ; I 4: ; I  U.? : ; I<  U.? : ; ' @ .? : ; ' @ .? : ; ' < I.? : ; ' I< .? : ;' < !.? : ;' I< "4: ;I #.? : ;I< $ : ;%' &: ;I'.? : ;' @ (4: ;I ): ;I *: ;I +4: ;I? < ,.? : ;I< - .4: ; I /4: ; I? < 04: ; I?  14: ; I? < % $ > : ; I I : ;  : ; I8 : ; I8 : ; I 8  : ; : ; I $ >   : ;I8 : ; I!I/  : ; .? : ; ' I@ : ; I 4: ; I.? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  !4: ; I? < !I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ;  : ;  : ; I : ;' I: ;I : ; ( .? : ; ' @ : ; I !.? : ; ' I@ "4: ; I #.: ; ' @ $: ; I %.: ; ' I@ &.? : ; ' @ '.: ; ' I@ (4: ; I ) *4: ; I+1,1-.? : ;' I .: ;I/.: ;' I@ 0.? : ;' I< 14: ;I 24: ;I 3 : ;4 : ;I8 5.: ;' @ 6.? : ;' @ 74: ;I? < 8.? : ;I< 9.? : ;I< :.? : ;' I@ ;: ;I <4: ;I=: ;I >.: ;' @ ?.? : ;' I< @.? : ;' < A UB : ;C4: ;ID.? : ;' I< E4: ; I? < F4: ; I?  G!I/% : ; I$ > : ; I I : ; : ; I8 : ; I8 : ; I 8  : ; : ; I$ >   : ;I8 : ; I!I/  : ; .? : ; ' @ : ; I 4: ; I 4: ; I  U.? : ; I<  4: ; I? < 4: ; I?  4: ; I? < % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' @ : ; I 4: ; I .? : ; ' I@ : ; I .? : ; ' @ .? : ;' @ 4: ;I .? : ;' @ 4: ;I4: ;I .? : ;' @ !.? : ;I@ ": ;I # $4: ;I%.? : ;' I< &I'.? : ;' < (.? : ;' < ).: ;' @ *: ;I +4: ;I? < ,.? : ;I< -.? : ;I< .4: ; I /4: ; I? < 04: ; I?  14: ; I? < % $ > $ > : ; I I : ; I   : ; : ; I8 : ; I8 : ; I 8  : ;  : ; I : ;I8 : ; I!I/  : ; .? : ; ' @ : ; I 4: ; I  U U.? : ; ' @ .? : ; ' I@ 4: ; I 4: ; I4: ;I .? : ;' I@ : ;I !4: ;I "4: ; I? < #4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I  U4: ; I : ; I .? : ; ' @ 4: ; I 11.? : ;' I : ;I !I/!.? : ;' @ "4: ;I #.? : ;' < $I%4: ; I? < &4: ; I?  '4: ; I? < % : ; I$ > $ >  I : ;  : ;I8 &I  ' I : ; : ; I8 I!I/ : ;I : ; : ;I8 .? : ;' I@ .? : ;' I@ : ;I 4: ;I4: ;I.: ;' I@ : ;I 4: ;I  4: ;I  U : ; U !4: ; I? < "' I#4: ; I?  $4: ; I %!I/% $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ I.? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/  : ;' I: ;I : ; I8  : ;  : ; I : ; .? : ; ' @ 4: ; I? < 4: ; I 4: ; I : ; I .? : ; ' I@ .? : ;' @ 4: ;I .: ;' @ : ;I .? : ;' @ .? : ;' I@ !: ;I ".? : ;' < # $4: ;I%4: ;I & '.: ;' I@ (.? : ;I< )*.? : ;' I< + U,4: ;I? < -.? : ;' < .4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ; I.? : ; ' @ : ; I .? : ; ' I@ .: ; ' @ : ; I 4: ; I .? : ;' @ : ;I 4: ;I.? : ;' I@ 4: ;I .: ;' @ : ;I 4: ;I 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I  : ;  : ;I8 : ; : ; I8 I !I/ .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ; (  : ;  : ; I.? : ;' I@ : ;I  : ; : ;4: ;I  U4: ;I .? : ; I< 4: ;I  .? : ;' @ : ;I ! : ;": ;I#.? : ;' < $4: ;I< %4: ; I &4: ; I? < '4: ; I?  (!I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ;  : ; I.? : ; ' @  : ; .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I 4: ; I.: ; ' @ : ; I 4: ; I? < .: ; ' I@ .? : ;' @ : ;I 1!1"1#4: ;I $.? : ;' I %: ;I&4: ;I'4: ;I (4: ;I? < ).? : ;' I< *I+!,4: ; I?  % $ >  I$ >  : ;  : ; I8  : ; I8 : ; I  : ; : ; I .: ; ' @ .: ; ' @ : ; I 4: ; I .? : ; ' I< I.? : ; ' I< .? : ; ' I@ 4: ; I .: ; ' I@ : ; I .: ;' @ : ;I I!I/ %  : ;  : ; I8 $ >  I$ > : ; I : ;I8  : ; I !I/  : ;' I: ;I : ; I8 .? : ; ' @ : ; I 4: ; I? < 4: ; I 4: ; I .? : ; ' @ .? : ; @ .? : ; I< .? : ; I< !I/: ; I  .? : ;I< U!.? : ;' I@ ": ;I #4: ;I $4: ;I %.? : ;' @ &: ;I '4: ;I( ).? : ;I< *4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8 .? : ; ' @ : ; I 4: ; I 4: ; I? < 4: ; I .? : ;' @ : ;I 4: ;I % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8 .? : ; ' @ .? : ; ' I@ .? : ; ' I@ : ; I .? : ; ' @ 4: ; I : ; I  U4: ; I4: ; I .? : ;' I@ : ;I : ;I 4: ;I 4: ;I .? : ;' @ 4: ;I.? : ;' I@ 4: ; I? < !4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; : ;I : ;' I<  : ; I8 .? : ; ' I@ : ; I 4: ; I 11.? : ;' I : ;I.? : ;' I@ : ;I 4: ;I .? : ;@ .? : ;@ !4: ;I"4: ;I? < #.? : ;' I< $.? : ;' @ %.? : ;I< &' (: ;I ).? : ;' @ *4: ;I +4: ;I,.? : ;I@ -4: ; I? < .4: ; I?  % : ; I$ > $ >  I : ;  : ;I8 I !I/  &I : ; : ; I8 : ;I : ;' I< ' I : ; : ; : ;I : ;I8 : ; I : ;I : ;: ;I.: ;' @ : ;I 4: ;I 4: ;I .: ;' I@ !: ;I " #4: ;I$ U%.? : ;' I@ &.? : ;' @ '.? : ;' @ ( )1*1+.? : ;' I ,: ;I- : ;. U/!I/04: ;I14: ; I? < % : ; I$ > $ >  I : ;  : ;I8 &I  : ; : ; I8 I !I/  : ; ' II'  : ; I8 : ;I : ; : ;I8  : ;.: ; ' I@ : ; I : ; I .: ; @ 4: ; I 4: ; I .: ; ' @  4: ; I .? : ; ' I@ !.? : ;' I@ ": ;I #: ;I $4: ;I %4: ;I & U' (4: ;I) U*.? : ;I< +,.: ;' I@ -.? : ;' @ .4: ; I? < % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/ : ;I : ;' I: ; I<  : ; : ;I8  : ; : ;I : ; : ;I : ; ( .: ; ' I@ : ; I 4: ; I 4: ; I? < 4: ; I !1"1#1$.? : ;' I %: ;I&.? : ;' I@ ': ;I (.? : ;' @ )4: ;I? < *4: ;I+4: ;I , -.? : ; ' .: ; I/.1@ 01 14: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/  : ;' I: ;I : ; ( .? : ; ' @ 4: ; I 4: ; I? < .: ; ' @ : ; I : ; I 4: ; I  U.? : ;I< .? : ;' @ : ;I : ;I 4: ;I !4: ;I? < ".? : ;' < #4: ; I?  % $ > $ > : ; I I  : ;  : ; I8 : ;I8 : ; I !I/ .? : ; ' I@ 4: ; I .? : ; ' @ : ; I : ; I 4: ; I? < 4: ; I?  % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ;  : ; I: ;I : ;' I.? : ; ' I@ : ; I  4: ; I: ; I 4: ; I .? : ; ' @ .? : ;' @ : ;I .? : ;' @ : ;I 4: ;I !4: ;I? < "4: ;I # U$.? : ;I< %& U'!(.? : ;' I@ ).: ;' I@ *4: ;I+4: ; I ,4: ; I? < -4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/  : ;  : ; I8  : ;  : ; I.? : ; ' I@ : ; I 4: ; I : ; I .? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ;  : ; I.? : ; ' I@ : ; I .? : ; ' @ : ; I 4: ; I .? : ;' @ : ;I 4: ; I 4: ; I? < % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I8  : ;  : ;  : ; I : ;' I: ;I.? : ; ' @ : ; I 4: ; I .? : ;' @ : ;I 4: ;I  U.? : ;I< 4: ; I 4: ; I? < !I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ;  : ;  : ; I : ; I.? : ; ' @ .: ; ' I@ : ; I .? : ;' I@ : ;I  : ; : ;4: ;I  U4: ;I 4: ;I   .? : ;' @ !: ;I ".? : ;' < #4: ;I< $4: ; I %4: ; I? < &4: ; I?  '!(!I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ;  : ;  : ; I : ; I.: ; ' I@ : ; I 4: ; I 4: ; I 4: ; I 4: ; I.? : ;' @ .: ;' @ : ;I 4: ;I 4: ;I 4: ;I? < .? : ;' @ !1"1#1$.? : ;' I %: ;I&4: ;I'.? : ;' I< (I)4: ; I? < *4: ; I?  s /usr/include/sys/usr/include/bits/usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include../Miscmain.cselect.htime.htypes.hnotation.htime.hstdarg.htcl.hrunset.heden.hsymptr.q.hstdio.hlibio.hstddef.hemalloc.hbuiltin.hcustom.hsetjmp.hsetjmp.hsigset.hinput_device.h'.:&F:9kz]y+rrrrdKW;gm:8VA TM (eIP eTV&dP:8VA TM,K:=,H/:dG <,0xq4:XˎHyc˞ƫzU :I,+V;:MVeYd/ s 9 D:=#WKT,edVXJ:Hë7K 6r?\V*VW[z[[gcdr:ed\eWjezVt9$v VV%#U!WUu606f3w)-JUrv9Ge\,Vo!77`3Vo!77`3Vo!77`2d:Y](q5([9#9efgXrs ődXmr<, t+YUX 7VXF,:o?~[4 ʪVpqVp,,,,p'FJ8Vh:X68dԸpF,Ht:YYm=4 '8:{rdxf7eXsNd%";r  xqY%hco+ddmU+K95+K+5UU .HVpN~{gq.cVVX6J;SWY5KDXVVZXVWYVTd8dWae.'Y-"Gc,]Xm[^+u'f6I;Y;INo`LUd~u /usr/include/usr/include/bitsrunset.crunset.hemalloc.hstdio.hlibio.htypes.hTd'drr9eb>fVepz9?::T,,d%;o;::T,,d8V8:Ǝr, )-J8zq /usr/include/usr/include/bitssymptr.q.csymbol.centry.q.csymptr.q.heden.hnotation.hentry.q.hstdio.hlibio.htypes.hemalloc.hRfT,x*:d:p,)rT:,rrW|f)-d:[Y5=H8t, *<8,۲—=pXٳܞǎH6<:JpOr*:2:u8:rs~j bison/usr/include/usr/include/bitsyacc.ybison.simpleeden.hsymptr.q.hemalloc.hstdio.hlibio.htypes.h`drrz+:8VA ,Hdrry+:8VA )G:d=:d=, UuGc;zdyIVUdTq:9Upri{cucd caI7;ae cyG!U_c@9cbd,W;e jyUNy+digL bd3 .|f cbd2c*dh*d,J}V{zU1y+di ++hchcf99ReVǥ]dT:V#}$|G(%}+%P<rt crUVV14(~eX[VY9sr#dHVHV#~UZV8VcU#V8VoBreZV  dqUM,8dV,:+dV,XUU[#Z[UHd /HW1V8rTVVs-ZH8:WHVVa I!VgUTrVH 'zTrVHtX 'H9sZ-QTVTVHZ U(rZrr\Y9bT.^hSekz1S-e?*8,) #bd.bdgyUxz+i.:#7qdT\*Vjuhw d^?rAcןb<s*rP4~ w+ cjzU?z+ipUqco{dh8rwgwZ%dD /usr/include/bits/usr/include/sys/usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/linux../pcre-3.9builtin.cstdio.hstat.hstdlib.hscreen.q.ceden.hsymptr.q.htime.htypes.htime.htime.hstdio.hlibio.hstat.hnotation.hstddef.htcl.htermios.hselect.htypes.hinput.hpcre.hscreen.q.hemalloc.hbuiltin.hinput_device.hsetjmp.hsetjmp.hsigset.hdGcVԝ(f:bVp'fWH*,}m\<6.,, m\Xr Ytd,rsy# qdxUW /8,dh=5=Z>4>,/gV#T}cc}c}q9V=gV#TwWI79I9:9S$H!Q/rH,# VV8ddb:Vrf$ YV8:TeV#TTdb:m)Vxq[rŔeV$TTea::m(Vx[pŔeV$TTea::m(Vx[pœH8,T8:ƪ;7fH:*-<v?HVdd:T:eV/Tz#fe U#UJrJHV1===9pq==9 UwHx+Hy9dVKdV=XsWHF:Vd,rbrV) 7-fVbr,dNf?edVro/e;VuU cs9Wyp+V wU2>T,W f8:dv 9r$Yshqx8 f8:dv 9rojqxU% W28:*:,<pVV<:(p :Ee8:Vxrtyc ,Ʒ:FVV<rr$Yt 9tcF8eF:VtZ:Ԛiۑ=fZ 9wW+..r:Td u+ 9uG:Iq+H:-H: +Wb,bH,VBWXUsUYqlXXH8,*HxcUAV,@:: .dޞ:$auI2VVHz+n- UzVVVV\:V+d ,B) 9d,B9W,X.7V:r,ILV ) `.(X quƀWz tG 9s,;6Uu+U 9vU 9r:p c:p c*Vx%xU ~:8VVvq8:~:Vupnu4 d;%U]Vrbp d:V,bp V,zq:u*,8s:!XIWro G 0"?p,S;, 6NY TV +.HtV]+drdrgXD9;k.1dTb&9urguftE;VzU^dVS ZEuVg.*z q-$V f Uet5,rV:r c:wTeS#qetWp:re7V*,-cs +Pb,UetXp:rm9?@[Grr[Ay xTrԀ`rv+rs+ru+ru+rvUrnqy9x9y9z9cz,UXVrW$x::?Wd;aef "dbdd c$c)tdw+3Ǭ78Ǭ78)8):)'7:8*:8*,&#::7ڸ<(f+!mg. cwq cVTdHTeTdHT cBC </n'3<(fHp 9`f (f:$n %$na-cSc-qS94rp 9-b:r8:,)p';r)pv96,-2G&,$1#$FddV$#,)Nv%x9T:db:;k?~/EU,$1#$Fd#d~/EU,$1#$FdL#4%/uG Gt9qV4)G,$1#$FdB@s/uU/Ci(/H' &/H'9p- Q7-8:m9,q,hq;8;8,);r:x2s9:na-8:b,:g(a-*:Ԏ`MsMrJwqxG%r2b,d):HHbe9uFs=H=:8:/*,-tVWsyr  Wrs.)eeVd,VJ[,8 c,d G,'h^>ڎ;,,dd99dd99dd99dd99պ4$1&d-&#+?(;;<xUxxz!f ;;<,x+xx{qfXVVWv9 fXVVWv9 fXVVWv9 gXW;;;<xGxxxy*f VWx+ qgXW;;<xUxxy"gXW;;<xUxxy"gXW;;<xUxxy"f WWw+ qf.Wz+ qgXW;;;<xGxxxy*gXW;;;<xGxxxy*gXW;;;<xGxxxy*g WWw+ qgXW;;<xUxxy"gXW;;;<xGxxxy*gXW;;;<xGxxxy*gXW;;;<xGxxxy*d WWw+ qd WWw+ qg W<:x9yqd WWw+5 /usr/include/usr/include/bitscode.ceden.hsymptr.q.hstdio.hlibio.htypes.hemalloc.hfVdV,V#d=r:Vd/g=bV "P0PZfEddV+7e,Z 4 }o+}Uc}9}+tc ct99Xy9@Ȝn}q:&:LYb:.1sz(.o--g4y8drr;v9T,Td,,:?HK :d|xuQ=:(@6.:s 8,:s ŕr{R<oc{9{+t(d8ԸoMdycr~1{P:&:0ZV~,rZV~,r!pu+:,zU?:hHwzqdyU:]t$*W,p9Uv 4I V<V7K5!:>d UnWesr+g,g#$4nWe8:Hr,,Vz@XdYfW $ 9wq 08Vd ldW+E+V8VTr yV*r/|" q4oVrJ6XRtVyt3y' cF(' &VCdrdbV,9tbV,Wkf^ZF,#zU1z+1 +xSVT,,)dt.wqvV.vr,Vr.gae"X6tMousuq}q9%,. ^(V~8dqW~SeVdWcӜ+U7eqV9GGqXh$Hno.. [.W8djqSeVdWb+7eV. `%V8d0lUSeVdVe+7e1~/ qXXWQ UXdcV VdxUzbc,< U dr%~I  }sei"(9 %E c&V U -sVh4y+zU ^uKxVh<6WHa7*X6t*VTV28:HXw6WHa7*X6rsRmDPf-*8V1Vl,V.V:K8d ;Ye:rseha-,XX2u qrwt^`4>\=:^::HJdV8:icj99Vf5-;?tG 9>\=:^::HJdV8:i!V:-xzU +>wrrgr#wǸ U, ;2q>,yU:$w U- ;2p@,xUIw U- ;2p@,xqI#wǹ U- ȋ;xq=Vx9Hdwǹ U- ȋ;xq=Vx9H,dwǹ U- ȋ;xq=Vx9Hdwǹ U- ȋ;xq=Vx9H,dddבm=-0tpV, &.r18,ǪR.g&Xy$z)v‰:kV,qupV-(fF8;Vדb:4Je,UGyUV^+$dȇm=/eXR:V:s,H" qɸ +y@ ;yUBzcM qV'#a;V Grjo8 8tƸXqU <s:~:?0ƹI*:,wƸ$a;I*+bsJ;~:,a;I%d:I:,e; +&5ZH Ӝ8WV.Vm|gvUr+q /usr/include/usr/include/bitsrefer.csymptr.q.heden.hemalloc.hstdio.hlibio.htypes.h#:;?0 -dH$NZ{:r4/bHnU?,bd$`d0 GVT/=Xf;8:*:)iV?M8:p:- duV+#7eT:57,y1@yU ctzU?::*:-y9 V|zU?::*:-y9 V| Ꮥ>dV( /usr/include/usr/include/bitstype.cstdlib.heden.hsymptr.q.hstdio.hlibio.htypes.hemalloc.h$!2Vp: +dHwVI8: ᐘ<8}HIdv:+qV^Ӹrs>sr(x+s,::99U-)g9hd[:+; 9$,YZrԸ:, q;7:$v,VT,);ssV"qy9@y92w9 Uy9A=:o9pqrc=w=r c:pV- 8,Ux8rV7n<ctr(X: *:.* ;3U gV~V:7:,b:t:XO~d"UOpV.b:M8HH:yU]:jUW!U4Z/:XzUnqWU E;e'G UVocfd8:rdUT~}rd8H|wy k Wu8V8,88:,r~S?dS++w9d3v9 cs[ GqWH:>&"p,fqW&>.H*:*:ncV8,8e)::87: U;:$Œ `<6::}q7V:@ 4>eV<8V88:d UcryG:r> Gsd8:>s:v 1V?ssIhd:d9Ud8:*:-Ə UW8dsS-1z?;r-:Gq>::#U:`.gWVSq:a-WV9X; Ut!WrBV.jq-+y5='gh0d9q9?  #dUrX rs Ud8:sS- c8ed?:y9?df7I1WQgQKZX[KWdb:9}9:dfs::b-PŎLq7-r|iWVr$|$~rf 0crTd.:|fdwU~gƏ/-:pe)hr:8dd^cVrWec?U:db,z9'U:9-s8VrGUdPdP:sU:X:8UJU:UhdPzcw'e~rjˎV\bd dbdt`R'7w}q,;u-,kR&d[*'de VUS+dq9n99o+9ghV#Awq:A-::7::>-9p9q.>HAZ1 U qx}d8::+jUAU#5&.#y$}Ur;U ԫv,3yUpcGq99z:,d,ro8!(;:, G&'s;*  U8:*dWf<60Ecr,,Fs;1  U)f<60q,::vU+d,ro8!(;:, G&&s;*  U8:*dWf<60EcrFs;1  U)f<60U,::vU+d,ro8!(;:w Gw+ 9G'%;*8:8H8:wUg b:8df<6+U:*,;.g5 # g5 # g5 # g5 # g5 # g5~:XVpVpVpVpVpVp,::uUs+zӎ;Ԫ 9vs;iz+M:tU7;)eVivG qo:,ro8!(;:Uy9@x+k)q(vUԪ 9 s;4zUT:Z#wU$`f6cq(`<6a:rn!*:|e He:8:8-::8:8:<gUT,e:&;S;7g UXhOy+@- G 9w9 9:[]zNa9`9d8::~qs;b::%XU5=@zc[@sU 9y9@dUcWnq'f0wU;w:[t: Urp:r: ,g--9s IH>ӣzEM cF:~cet;e:8V*,=FUVZ?:@,)RT:W) } /usr/include/usr/include/bits../Edencustom.cstdio.hlibio.htypes.hemalloc.hcustom.h8p& c /usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/usr/include/bits../Eden../EXsymbol.csymbol.htree.hstddef.hstdio.hlibio.htypes.hemalloc.htcl.hscript.hpV*:p:Wd7HHmh4xHX~qK ;V8:Imw#*d.` R.(.e*,x=;w:XG#LTs~**8,~-dVua. ,zL$z8:R3* VYVsVzV:X6< tD -V,m quVrrTr,xdrdb,(wŒ#X"u ,zz(8:0;7Vq c+$>Վ|V;,#;#+#3#]#]##]#0)6V8厮W*厮WT,-<d %9I?HUɸ<jqVW8dWmWdWGT,esva8,rrrrrHW)GH!Uɸ<pqVVq+WdWn;ԎT,.d'Q=:eH5x68 d::2ȨV*Wy9jy y yU\: y9Nsqcr+r:bprYӄudVb,VyTzVVV9d:duVd3$epgbɪ3bWa;`0qVW⹪5nVzuVz+0P[zU?:sqqvƎrŎd"œVXVwq /usr/include/usr/include/bits../Eden../EXtree.ctree.hsymbol.hstdio.hlibio.htypes.hemalloc.hscript.hoper.hVp:.:{D GVp:.nD G:/:/:/dQ:8VA TMfsdddd4h;?fsddd5g;[fsdd6f;?fsd7e;Zfs8d;9:'ouxGr)9;]CWo9I-`rduC!-,cK;,ZBHY2qUH$m9 (_ :?WcƎƎ 9I~9!+ ƎrV++ƎrnUdd r+qG~H;-H;<+րَ= UnHl+J +UsIUx rsUdv ,rGd𸝨UvƎs9JYc~+t+3 ~,,U.UcUooy,Uu vU-FdV~d^c-dVrzqFdWd,rxUFdWdUU VrUU  U0I):: GZ6d8,Uk9Z5Vw wUv:x+:<$ n<8,(dd,r /usr/include/usr/include/bits../Edenutility.cstdio.hlibio.htypes.hemalloc.h%oB bison/usr/include/usr/include/bits../Eden../EXbison.simpleparser.ytree.herror.htcl.hstdio.hlibio.htypes.hemalloc.hscript.h0pri{cucd caI7;ae cyG!U_c@9cbd,W;e ŌjyUNy+digL bd3 .nf cbd2c*dh*d,|zU1y+di ++h9fcTVǥ]dT:V#|$9| yUV+~1Vc!Ud~UdXY U.:0U UX6:;;W&amU@ V%(d-:cpbddklbdr:KՒXV~UVVVGBUVV,VVYVVVVWTTVVW@XXZYWe\wR,bT.^hSekz9wS;ei18,) ##bd.bdgyUxz+i.:V#7qdVNB*Vjuw d^ArAcבb>s2P4$~ w+ cj[zU?z+pUqcco{dh8rwgwZ%dDd GXW /usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bits../Edendd_lex.cstdlib.hstddef.hstdio.hlibio.htypes.hparser.htree.hemalloc.h̹?,:U,VYIHv9,Q fbf,)d/TdH&:8VEs1pr, <o s $dqn+swruqopssvrvwq qmvrruq w9ƹ +}q{G+}+n+"+xU| UbU,UYUUќg"UUtmcuV|UXQsU|gJ[)ct*UcJ  G6cHƜ|rᑑXXXXXwUݜݜݜU9KZoKYY)rQU Z rkU UY Zy [Ԝs\wU,  @UkY&Y&]Y&]YPkYPkY€kYƸzU)qXP8,yUU ŜUU8rl+9U>-UZ%X ŜrwU8rw+U Ŝt8r j+yzUWxcPuY8,QL8rK,~[P7d Tre:urc md 1 check.ctree.hsymbol.hP$d\';adHVrwvcdwUVVrc:IVSo-GfK U}z9,dsdtdu2dvBrF.|qY|qr'r:V}+}+b rQrzU}= yA)z #wDA1+r~U 4>~844~qr}~%#u~D"D>d\dX>sŎUy}9 x cvczy /usr/include/usr/include/bits../EXparser.ctcl.hstructures.hstdio.hlibio.htypes.hscript.hh8sV3d%Vp:,drXZg,fq  9 lVdd:;T:*V:TV7drU9VTd tY~p:$};)z+1'e\e\e\P)y+gkyTciWEeW-G~,;rrrszG1esef7eH;s.*Jr*Iv{H*gc04)WU)9quVTd tY~p:$}$e)O-,'-e qJdWtMv +\I\I\I\I\I]8dVFd P>a-.ȁWeT,;<ŏ sW \e%'l'^sWeT,1;A&`k&\~8dVdVpddbV#-L8dVdVpdVdbV#-ZWEeWeVWHeT-ss. b\q,},-p,W G.7L7;so::U"}% `-,QY qJdWtK)y2W-W-H UI ] W)-V-] W)-V-] W)-V-U;!IWE-Wx%xU  UW7-Vv vU]W7-Vv vU] W)-V-]I UIWE-Wx%xU  UW7-Vv vU]I]I]I]I\IWE-Wx%xU  UI] W)-V-] W)-V-] W)-Vǁ]I UI]I]       I  UI Z Gwor:dr::lVuVuVtVtVtVtVhW)-VW_W)-VW^W)-VW\KJIW)-VgZGW)-V[9W)-VrrW9W)-VrrW9W)-Vrrf9eGWGW)-V[9XcGdG]GԆz[ԆzA,rW-VefWE-W,ePKJOWE-Wr\9G,f)u /usr/include/GL/usr/include/usr/include/bitsfunctions.cstructures.hgl.hstdio.hlibio.htypes.hdqddetA;k[z9i<[z9i< dd6f< <[z9i< d7e< d7e< d7e< <>> dd6f< dd6f< dd6f< ru d7e< dd6f< dd6f< dd6f< < Uw9 c f  /usr/include/GL/usr/include/usr/include/bits../Edenstructures.cstructures.hgl.hstdio.hlibio.htypes.hemalloc.h-d,SVW&SVV(rdԹIAdԹIAdԹI9rrV 4<%agMtfW-umYj-7Wrr6r- cxG,d `.DJ1-, exQ X}-W;l :V Gu'=wm[lru-s +w,: <6 `<3E- X6<!W$ʰ»<`:d:p:Wd<`:d:p:Wd<`:d:p:W-Xn\ddd_ddddeddddmŚTd,%%,%%,%%d~H)TW;zYWH~xGV UV[zZuqV 9H ;*r8-2vh;xU;WD.XR.frV8: >dddddddddddd <:VVd6:;rzU1d$ 9xcAWiZbddd>&>t+rrrvrrrrf-HfXW)-,qsgcW$rs& qwc 9)e/9WWWzc;)$:GdS:u<6<dddee:s9qm=.d ycFh /usr/include/usr/include/GL/usr/X11R6/include/X11/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bitstogl.cstdlib.htogl.hglx.hXlib.htk.htcl.hX.hXutil.hgl.hstddef.hstdio.hlibio.htypes.h|;drd\S,.'KHO,v9He- 9Ve(VrU c 8::;j9;wW(9,`k$:Bvi=c>$:,ݷ4440¶10w+:%r$%(Wٳr,+Ӷ9|:>:>:9?,ܛ,*ʴdz,+İ:հ:b:)-#6YR:Ldr0 VwU.R.<6rV) U' :Z:L: U:Y:d/:K:UyUjeTr?g,\*r*zL4>.,-);ۧs8,?;:ճ-;::-;::-;::-;::-;::-;::/;:;+/:::::::::,,,2<yyG8X\ylF}}}}}} qvc 9<<h99GfVw$dḫ2  /usr/include/usr/include/GL/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bitsglpng.cpngconf.hgl.hstddef.hglpng.hstdio.hlibio.htypes.hpng.hsetjmp.hsetjmp.hsigset.hzlib.hzconf.hd4; eS-(>~g,J4:)IV6:-b5` պS-);/7-Vf,(sC;:$**v4Tyx9UVDH8v4Tyx9 qcjH,ƪ8Txy9 ,ƜH8Txy9_Hr8v4T ,H8v4T*;":X.};Vp,-ycK/y+,F:X<KԸ&d<6$8;6%9'<f%Ve:f%dag;f%Vds;f%Vde8'᪎f/::H];q /usr/include/usr/include/bitsprint.ctree.hsymbol.hstdio.hlibio.htypes.ht/:nqn+sssssss  cv Uv+sss '=ger5;}+XLUs+o+++U}U~U-}+~U Vy+~W7;rus8y9bWWWW᪪VU~U~ U9:-:-:-:-:-:W:W:W:W:W:W:W:W:W:W:W:W:W:W:W:W:W:EUWWWWU n:Pc mḝW\ḝWWWWWGUd}U~:,s#z /usr/include/usr/include/bitsstore.ctree.hsymbol.htcl.hstdio.hlibio.htypes.herU?|6PUpUkUUUeU}Uf1G~$ɪrRbdVFrVd}UbdVru+bdVprVFr[c},dbVTVdrVs+H8d8d`VWWW#bdVUqprVqt~U3qq~s UuU,-,-,-,-,-,W,W,W,W,W,W,W,W,W,Wq,W,W,W,W,W,W,W,UV V :8d8dV~]-%U:8d8dVFH8dVec:r8dԪdU8d8eTVdpeTV,FH8eTVHfŪ>UŪ--WWWU8d:|Uco;VTeeV,,w bison/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/usr/include/bits../Eden../EXparser.ybison.simpletree.hsymbol.hstddef.hstdio.hlibio.htypes.hemalloc.hscript.h@;:=:9s:)s:)us:)s:)s:Ss:Ss:Ss:Ss:Ss:Ss:Ss:S:\:Wxs:Spri{cuUd UaI7;ae cy+j+_c@9cbd,We Ōd[yUNy+jgL bd3 .|f cbd2c*dh*,'|G,zc*@y+di +7TVǥ]dT:V#|Ci+*}+}U}NN$N G#,c G G q q qsȜy qG~+9</~Ŝ/dUIZ~Ŝ,':WG~ U:VXV-UV"9`U,VVVV:VV0X*P-V$.VXV(pYVYV-/p bT.^hSekz1S-e?*8,) #bd.bdgyUxz+i.:#7qdVNB*Vjuʜw d^?rAcבb<s*rP4~ w+ cjzqpUqcqomdh8rwgwZ%dEgXW/Wo;.v /usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/bits../Eden../EXst_lex.cstdlib.hstddef.hstdio.hlibio.htypes.hparser.hsymbol.htree.hemalloc.hscript.h,VY-eHv9V,VYeHv9V†,VYeHv9V,:Yd/TdH&:8VE,8djV*r;,m:GI$WWWWWY~UOU*J᎜'uVzU GUc~'KyTU cUk 8:ZXP, UڎzV +WYWP]YWP]YWP]YWP]YPkYPkYűH8rgmd |  AB HH.V. HAAB .AB a.$ AB AQ.. T.EAB x.AAB ^.XAB B.0MC LAB \AM p AB A.|"AB E.$AB EW.X. T.$<KAB HL.. T.$AB GG.N. T.$ AB GS.j.T. PAB GS.R.W.AB N.<4~AB FO..I.N.n..b.R.o.AB K.*AB ^.rAB H.0lmAB DG.C.].E.W.\.O.CAB [.W. AB Bb..AB F.!AB @4AB F. a.G.I.E...y..M.\AB DH.$@AB Bb..X.P6AB T.AB c. b.(AB HI.^.H. O.HAB Ii.a.\.{.e.E.Q..o..m.Q.L.| TAB DK.(AB AT. AB Fj.AB BW. EAB BK.TZAB Bf.| AAB B UAB Al.U.L)AB Dx#AB FAB BG.(AB FB..e. cAB Fh. AB Ar.X.S.t)AB DZAB Bc. wAB FX.tAB BK.#AB Y.(aAB Bz.^AB Ax.BAB DD.0LAB BG.|uAB DE.$lAB Fe.y.| $`AB F.$TAB F.$D AB $P AB  $\AB F.$D,AB _.$p AB <$`AB F.0 .`.w. ^.s. L.U. T.| 8 AB P.8 xAB f.}.8 t%AB [. 8 cAB E[.y. 8 AB FY. 8 AB FY. 8 8 AB F`.$8 AB \.A.H. \.8 AB GD.8 )AB M.8 hAB K.8  sAB f.8 +AB O.8 sAB f.(8 ,EAB DZ..H. O.$8 tAB FE..(8 `AB Fg..P.8 |AB Ad.$8 9AB Ep..0[.(8 <]AB Fp..0[.(8 ]AB Fp..0[. 8 .AB Fb. 8 ,_AB Ff.48 AB F].V.^. P.s. n.,. 8 $AB T. 8 DAB M. 8 \dAB Bw. c.$8 AB FZ.|.M. 8 |AB Fw. 8 lAB FH.8 49AB `.I.$8 pAB Ek.].X.(8 hAB FM.C.x. 8 x vAB AV. R. 8 aAB Fm. 8 T!AB E}.M. 8 " AB E}.M. 8 $AB Fc. 8 &AB Fz. 8 'IAB BL.s. 8 '$AB FH.(8 *zAB I^.[. S.8 -eAB 8 -AAB $8 ,.AB A`.J.H.8 /AH DW.,8 0AB F_.. P.. 8 t3AB FU. 8 5dAB BY.A.$8 t5'AB Fw.M. 8 7AB Fe.8 `8GAB DB.8 8AB Dk.8 9ZAB f. 8 :xAB Bq.r. 8 x:AB j.{.P.8 ;AB Eg.8 ;%AB [.,8 ;AB Fe.y.Z.X.H.(8 =wAB Fl.x.T.88 ?AB Fl..Y.d.I.J.H. T.8 @C AB BZ.(8 LDAB IZ.c. d.,8 F(AB FZ..H.M.E.,8 HAB BZ.{.H.M.N.8 HMAB EZ. 8 JzAB ].C.M.(8 J/AB FZ..U.E.8 KAB DZ.$8 dLAB HZ.. [. 8 `NzAB ].C.M.48 NAB IZ.r. ..Q.A. _.(8 QAB FE.. W.(8 RAB Fc.G. ]. 8 (SAB AZ.t. 8 SAB FY.88 UqAB Io.. l.R. .. l.$8 ZAB j.T.V.I.b.8 ZAB 8 ZAB 8 ZAB 8 ZAB  8 ZTAB ].R.[.8 [2AB e.8 T[2AB e. 8 [AB z.T.O.(8 X\AB FD..e.(8 ^-AB FC..k.8 H_AB 8 d_XAB Ba. 8 _AB FG.8 aAB In.. . . H.. O.#. i.. U.}.G. }.f. ..  .. S.. U.g. O.p. U.g. O..W.8 xzAB Ar. 8 {iAB FG. 8 |AB Fv.@8 ,}~AB If.:. I.. [.0Y.. O.. 8 AB o.X. j.8 tAB V. g.8 AB o.8 ̅AB o.8 AB o. 8 \AB o.m.0q.8 @AB k. 8 ԈAB o.X. j. 8 AB o.X. j. 8 dAB o.X. j.8 ,AB k.8 hAB l. 8 (AB o.m.0q. 8 AB o.m.0q. 8 AB o.m.0q.8 ԎAB k. 8 hAB o.X. j. 8 0AB o.m.0q. 8 AB o.m.0q. 8 AB o.m.0q.8 ܒAB k.8 pAB k.8 AB k.8 AB k.| MAB @.lMAB @.AB M.ԕ9AB DM.NAB v. `6AG G.$AB ID.d.C.\AB FO.. T.[. P.a.P.R. T.d. P.m..}. D.T.[.a. }.. ~.S.V..W.[. A.S.X.t. A.S.X.t. A.S.U.`.M.,8AB . Q.M.v. }.K. }.<uAB IM.$AB Bp.\.h.\uAB IY.$Ԥ`AB Ed.z. }.$4|AB B@.T. T.$AB Fv.[.R.\8AG k. AB FK.KAB A].dAB DT.,AB FG.U.N.|.H.,p~AB FG.U.N.s.H.(AB FB.{. }.Ԭ5AB BO. ,AB BO. 8oAB Fe.$AB L.[. A.U.$tAB D`.[. }.|  TAB B@. T. KAB ADZ.D5AB h.$|?AB BW.L.^.(EAB E\.I.H.I.]AB As.$dxAB I^.h.\.ܵvAB Ir. TjAB Fv. jAB Fv.,AB Aj.|  4AG G[. AB c.|  ̹ AB  ܹyAB BK. XgAB T. AB M. ܺGAB  $OAB F^. tLAB FZ.4 AB F?..W.k..n. ܿ4AB Bj.$ AB j.x.C.J.0 AB L.E._.E.W.E.[.E.n. [AB I.E.h.E.$ AG D[.y. \.$ AB DQ.G. H.L.$ <AB Dl.F. H.L.$ AB DB.p. H.L. AB IL.E.o..P.H.c.X.}.[.Z.o.i..b.N.K.c.X.I..E.N.H.c.X.I..E.\.V..E. dAB F.` 8AB F.Q...Q.x.g.k...c.k.u.[.~.x.n.K.Q. @AB BL. AB Ap.$ \AB FK.M. HAB A`.J., \\AB A0.^. b.o. e.| (%AB Fx.0V.y.M.,%AB FG.M.[.PX.| $%AB B{.h.T. %d}AB FK. %AB FK.%AB Q.%PAB A_.%$PAB A_.%tIAB AR.%IAB AR. % ;AB AY.Y. %HAB K.,%`AB BJ.F.t.M.t.M. %xuAB W.V.X. %yAB W.V.[. %lyAB W.V.\. %AB [.V.d. %AB [.V.d.$%AB W.k.M.G.j. %0AB W.\. O.M.(%AB W.\. O.M.a.s.<%AB FT.I.N. O.M..Q.I.^.[.L%,AB FT.I._.N. O.M..R.H.t..I.g.t.%JAB Aw.%$AB D_.%AB D_.%,AB D_.%AB D_.(%4AB [.V.h.a. O.M.(%AB [.V.h.a. O.M.(%AB [.V.Y.`. O.M.(%dAB [.V.Y.`. O.M.%MAB i.%d9AB S.%EAB _.%QAB l.%<IAB \. %fAB K. j. %AB M. O.M.(%AB W.I.N. `.G.W.(%@AB W.I.N. [.H.W.(%AB W.I.N. ].J.W.(%AB W.I.N. `.G.W. %pyAB S.I.X. `. %yAB S.I.X. `. %hAB S.h. @.$%AB Fk.k.f.(%AB IA.s.f.%\AB Ar.%NAB F.(%dhAB DT.I.V..v.$%TAB DY. P..v.$% \AB DY. P..v.$%|,AB DT.}.D.$%4AB DT.}..$%,AB DT.}.D.$%4AB DT.}..%<5AB h.%t5AB h. %AB Fe.%<xAB Du.$%AB ID..% cAB Dy.0% AB FY. P.}.x.j.P.% AAB ^. % AB Fc.$% hAB DT.%.[.(%(AB FY. P.l.M. %<AB DT.a.`.(%<AB FT..t.,%4(AB ET.I.V..t.,%\AB FT.T. P..t.(%VAB FY. P..~.4%`RAB FT.Z.Q.r. Z.i. o.|  \0bAB Br.f.(\0/AB F.V.S.\0HBAB _. \0AB FB.$\0AB Fv.J.(\0lgAB Fu.J.M.J. \0oAB Cw. \0D oAB Cw. \0 +AB FH.\0 CAB | 1$!nAB A`. 1!rAB F_.1"6AB K1@"AB c.1"AB .1#AB u.1t$AB y.1$%XAB t.$1|%^AB I}.. 1(AB FL.| $3) AB $3)`AB F$3*AB G$3*AB F$3,AB B$3P-AB F $3<.KAB Cz.$3/\AB F $3/XAB F.<$3<0(AB I~.0~.. X.?. .f. $$3d@AB F.0.$3LBiAB C$3BAB BP.$3PCAB AN. $3CAB FT.P$3D AB I. .|.0.. .v. .y. .o. .t. $3\PAB C,$3PAB I. .#. ($3jeAB I.n. l.| 68peAB X.|  @6p#AB F.@6qAB An. @6rAG DB.@6sAB  @6sAB F*.@6vAB F$@6Lw}AB Ao.[.H.b.@6wAB AP.@6w AB $@6w;AB BG.[.J.,@60xhAB AHF.c.J.U.J. @6xLAB DB.Z.$@6xAB A\.R.S.@6y>AB GX.0@6yAB Fq.[.`.H.T.P.G. @6zEAB F].,@6zAB F^.l. S.e. $@6{AB Fh.0^.h.4@6|KAB FE.q. S..J.N. S. @6}AB Ff.D@6hAB Fl.g.E.W.W.c.H.h.X.Y.J.U.H.H@64iAB Bc.h.V.V.b.H.e.[.a.J.h.N.O. S. S.<@65AB Bc.h.P.N.S.H.e.X.}.^.J. @6؄AB Fa.@6\@AB R. @6AB Fs. @6lAB Fm.@6DAB Ac.0@6؇AB BY.S.\.H.T.P.G.@6`|AB C@6܈1AB A[.@6AB N.H@6(AB F}.Y. B._. T. L.K.u. `.L.~. V.K.8@6HAB B[.d. D.^. M.k. H.N.^. O.$@68AB N.S.Z.B.| <AB Ae.<AB Aa.<LAB <`AB <tAB <AB B.<`3AB E.<-AB E.<Đ'AB E.<!AB E.<AB E.<,?AB  <l9AB Aw.X.R.P<pAB AHo.Y.O.N.O. M.K. V.O. M.K.I. M.K.V.P. M. <gAB F{.4<AB Fg.W.M.C.H.F.H.0<dAB Fg.H.X.H..H.4<l`AB F`.i.H..c.W.2.,<̡AB F].p.c.H.c.| >xAB DD.| @?0AB F..i.e.`.w.i.. .J.?DAB H. ?XsAB GX.a.U.| ?̹!AQ  ?bAB F`.?T)AB ?AB R. ? fAB IF.?tAB d?8 AB Bo..j.k.Q.|.t.p.o.].c.m.`.x.n..d..d.l.^.?D AB GU.| @PAB G.@@d_AB Fg.A.J.k.I.J.l.P.V.P.\.J.@xAB Bb.@<+AB @h<AB @MAB @^AB P@T AB AHF..T.. .. .. ~.. D.m. . @vAB AV._.W.| PBh,AB L.PB1AB d.PB?AB AW.PBUAB o.PB`AB E|. PBKAB Ib.HPB\CAB IZ. . U.x. I.\. I.B.O.b. I.E.M. PBRAB F!.PB AB Ig..O.y.[.}.S.{. I.i. I.T.[.i. I.. I.T.T.S. U.{. I.[.T.M. U.{. I.J.O.g. I. PB|iAB BX.~.dPBAB I[.,.U. [.~.0I.o.Z..0I.x.Z..0I.x.Z..0I..K.q.[.l. P.I.[.l. P.@.Z..0I.s.K.q.[.l. P.!.K..Z..0I.x.Z..0I.x.Z.}.0I...^. I.J.Z.^. I.J.Z.^. I.u.Z.X.0I._.Z.j. O.J.Z.|.0O.J.Z.|.0O.J.Z.|.0O.t.Z.j. O.g.U.e. O.G.K.y. k.R.K..| $EcAB FV.e.U. E\PAB  E3AB BL.]. E3AB BL.]. ENAB E[.f. Ed!AB DF.O. E3AB BL.]. EBAB EU.`. EBAB EU.`. EDBAB EU.`. E!AB DF.O.E AB A.E AB A. ENAB E[.f. ENAB E[.f. EdNAB E[.f.$EZAB FF.F. EBAB EU.`. ETNAB E[.f. ENAB E[.f. ENAB E[.f. ED!AB DF.O. Eh0AB BL.Z. E$AB DF.R.| IAB H.I 7AB j.I 7AB j.I( 7AB j.I` MAB o.I 6AB  I AB FV.I VAB BG. I< 4AB DD._. Ip |AB BH._. I ]AB DE.IL FAB DI 2AB BK.I 0AB h.I .AB  I(#AB FD.ILPAB BG.I*AB DD. IAB FE.IAB E.IBAH EI*AB DD.IAG DL.I AB IAB E.IBAH EI*AB DD.$IAB AX.q. U.I AB I ^AB H.IlIAH EI*AB DD.$IRAB AX.h. v.I8 AB IDeAB DE.IFAB DI2AB BK.| |M([AB BI.|M%AB Y.|M[AB BI.|M%AB Y.|M0[AB BI.|M%AB Y.|M[AB BI.|M%AB Y.|M8[AB BI.|M%AB Y.|M[AB BI.|M%AB Y.|M@[AB BI.|M%AB Y.|M[AB BI.|M %AB Y.|MH[AB BI.|M%AB Y.|M[AB BI.|M(AB S.$|MHxAB H.E.M.0M.I.$|MdAB BI.@.M.|M$%AB Y.$|MLdAB BI.@.M.|M%AB Y.$|MdAB BI.@.M.|M< %AB Y.$|Md dAB BI.@.M.|M %AB Y.$|M dAB BI.@.M.|MT!%AB Y.$|M|!dAB BI.@.M.|M!%AB Y.D|M"AB GF.e. J.@. J.@. J.^. R.s. .|M& AB |M& AB H|M$&AB Gd.{. O.s.L.o.z.U. T.Z. T.Z. T.Z. T.|M*6AB i.|M*GAB F |M,+!AB H.E.o.4|MP,AB Fg.h.d.V.H.E.V.|M/AB H.. |M1AB E.$|Mt2AB F].W.P0|MD3hAB F_.A.N.I.[. |M7AB AD..0|M8iAB DP.Q._.M.S.m. m.|M9"AB U.|M:AB |M(:AB I.$|M:AB GX.P. W.| tT|;AB tT;7AG EtT;=AB BY.tT <*AH 4tT8<AB FM.n. U.b. z.y. @.$tT=AB DS.[. [.tT> AB tT> AB tT> AB tT> AB tT> AB tT>KAB tT8?AB tTL?AB tT`?AB tTt?AB tT?7AB AX.tT?/AB A[.tT? AB O.tT@)AB _.tT<@;AB Ad.tTx@MAB Av.$tT@AB Fh. `.@tTAAB FW.k. Q.e. .. Q.k. I.. 0tTEWAB FX.. P.M. }.0tTHiAB If..N.Z.0^. tTDOcAB DL.q. Z.$tTOAB BZ.v.S. tT8PaAB AO.l.I.0tTPAB Bk.I.a.N.r.O.tT|R5AB h.tTR.AB X.N.tTRAB tTR AB tTS AB tT S AB tTS AB  tT$SAB FL. tTTAB Dd.i. tTUaAB c.`. tT$VAB Dd. tTW@AB F.tT\XKAB Bm.tTXCAB i.tTXGAB A].tT4YAAB Ai.tTxYHAB Ap.tTY AB tTY AB tTYAB tTY AB tT ZAB k.tTZ7AB j. tTZ AB tTZAB tTZAB tTZ AB tT [AB tT([AB tT8[AB (tTL[AB Fd.. P.0tT\AB FI.. K.. V.$tTcAB Fe.U.d.tTPdhAB A.0_. | X\d AB X\dHAB H.X\ e0AB BX\hF  N  Vd d d ld q` wd |  d d  d H X P T L $  @d 6 a @ g ,. / 5d 7 X\ '^- .g $> h 6Exz O{i Z| c@ Pr`h 3y j 3T  k  k 3`k 2Xg  ĭ k $O l  ܿ4   @o h )  6[ Lo b w\\ o  d o 1p 6\ 8p  N Dp `p 3p 3q x@jFj`jq 4j- k>q @R* _, qP- <.K /\ /X <0( d@ LBi B PC C \P P %v 4@w 5.|w <w D{ K{ P{ Y e{ v{ { { { { Lw} { * { | ..|  `| )| )| 8 ? F P`| \܈1 c m(    H  | 3| | | } }    }   ! (g 1  : C PL T 5^` 5t @`4$,- ,7`,>,FNV d l q w |` @         g 8s  ~ 24 8 < @ D H P   f t  ` 4P d_ <+  h<  M * ^ 5 v ^I U b p     `  @  D  H  L  P  T ( X : \ C |; M ;7 \ ;= e <* } 8< EW 4 ?7 <@; x@M DOc A O Hi P  ` 0' 03 8Pa @ $S S Ћ _ h r L[ } \  d  ؋  ً  ڋ  ܋      & dH 7 e0 @ : (F:  NF  V d lĎ q@ wȎ |  5̎ Ў   0 ( , $ D9 9 D  2  x `  e 0e e h l  p t $ f H9  ` (# 8[ &y )Z .,=`,@KB YnY L -e GD ;P <u  ] ̳  'HA <Ԉ Q>  bܳ&qt% ~@ x  ([ `9  . |, J V :,t -h0 F$ _l ddx kx tLwK LD d` DB   Q ` [ B h  l)`? =d9 Y,h,r,<gxYH k # l L$ < % , \l` %k ,lm<  H 2 V< \|jxw s G v| P  D  |   dh  F :x 9 l  )  (:̴Mx VtL gt$ n" x} ܴ   6r8[ TZ % 0 k  $!n !y> )Ld 9h DT O( W\u g  o" u|R5  \` \d T` 0[ *G M  Z D  \ $G  ! ) 3,|D<8YLb\n| wl'lI A |%SԬ5 p   d ̵" (ܵp9I,SZ,a:s | ([  Vpy \ ,#,ZDe  <3 LU+p <* J\\,eJ/ sl<|&Ԥ` ,S  : $% R h9  lm #(S 1= H Kl` Yw  f>  u` [  [2 M  q` D H    [ l9 p  D\ * 9 @C FL VH d j {N ̶ ] @ ܶt  j H_ 0xh &  (IA,KZ  Xܵv e`` m 4=  , o  % \ ܹy N ,Y  (4YA 98 N,}~ XD hdL sR <LZw    S    p9   ,+! #\1lD|<^(a q@G @4i t9 t^ ` t5 8o P6 h w; * $& 0xJ 5  ?M  ND S  P|K \9xĐ'  Jz ̷x ܷ { * Z  `   <K D  ** 7E K Y % j qP y܈S  6 , $ N  0ܺG {  d 4#,-8c C,:U< 4 b pԕ9 d! <|, { z LaZ   \y lP t $  + |<  N Y   a h j w }  >   8?    @j TN !, !% !&!̹! 1!̸.C!T S!zE ]!F( e!s s!ܸ!#! d !B !!, !`3 !` ! A!, "؆ ")  ("h 0"D! E"s T"6d"% t"," " w "0 " "\XK "t2 " #<%#LX8#\D#  S#ld#4~ k#[ s#| ~#T!% # #@#% ## #<] #. #8  #k  $!r $w $*$Z =$Шx F$,Q$( l$N u$ H ~$T[2 $K $ $t $l $xu $ܒ $ $>K %} % "% 4%І L%` X%ti%3 |% + % ^ %R  %| %h % %G %̹% % %9" % &T &ܹ  &A3&0 <&L&Uq W&  o& ] &A &c  &G?&x9 & &,M&q &U &c ', 'Ȇ $'p 0'<A'L R'L5d'1 w'Z '\ ' '\+'\C 'k 'l'|'L''HM (($ (r .( >( E( S(k d(@" k(! v(d d (( (L(̺(,_ (Ua (ܺS(d(H ) )8 )I )3 5)8i A)f I)U)0 m) {) ), ) V ) )d ),)T! )c ) )F),6 *<C*/ *t) (*v 0*LFA*Ԏ \*ԫ: f*<| m*\*l*|d*% *: *| *  *h *t  *XG +\P $+.+9  <+4 E+W+,c+# u+Tj ++B +@ + +!% +lg +|i +7 +k + ,,* ,ZT ,=,̻MN,>  ^,ܻtn, ,( , ,q ,L ,, ,؄ --|u -,:&-<5->  F- E P- Z g-Ls-  -\-l- ; -|-9Z -@C  -@) -Hx -'I -.ć .t5' .d . .vD ).*z 2. <. M.t V.D5 `.s.4 {.! .^ .,? .ly .<. ..<x .̼7. + . .,.8pe /` /@F "/= ,/0 ;/ T/, Y/4 b/t f/ܼw/H /(: /d_X /dN /( / /lM /Z /L 0 7 0L 0D  #0 /0<0B N0 S0[0 7 k0*6 }0 A 0[ 0@,D0 0?  0HB 0T) 0; 0-0  10+ 1Z 1,81<E1LFV1\Vi1؇ {1\7 1P 1` 1l1 1`Nz 1 1|11|!d 2$%X 2\2$P '2:24] B2LP N2xzT Z2[ j2x v2 2 c 2 2̡ 22@[ 2K 2$& 2K 2( 2̽:2̅ 3ܽ#3v 33`6 ;3N3,X3,a3s3xL ~3d 3N 3|? 3 3X` 3$V 32 3 +3`  3DF 44X 4,924Y  E4<Q4&  e4`R k4Lw4y 4D, 4| 4\'4lt4T  4a 4Hx 4'$ 4HF 4\@ 5|5L) !5,&5Z7 <54 @5R5`5B p595 5̹  5r5(. 5E 5P, 5,5̾5 6ܾW/6G 76 =6 N6[6 k6! 6d 66ij 6F 6 6,:6c 6 6 6"  6d @7P 7` $7<>07L>7\[L7lZ7Tm c7|;w7Z78 7  777|7̿7ܿ7k 7j 7 ? 7L F 8p~ )8,18p | A8-A Q8,Y8t p8b 8`p 8x# 8R. 8l9 8 8,88@ 8 8] 88r 9  9< 9(9Y  @9{o J9tp S9H[ ]9 e9x l9,~9<9h  9 9L{9k 9j  9R 94 9 9% 949 9\=:l4: :` M 1:=w >:|VU:  ]:t:@ : ::% :Z :,:<:\ :X:( 7 ;1 ;\8 ;D3h 6; ,?;U;? _;Pdh r; s x;;; ;{;k ;4| ;8 ; ;$,;L? <b <N &< 7<LF C<^< i<g o<,|< s <d <8  <<h<4( <,P<L/<W@ < = =,D%=q /= E=\X=% `=lm=||=G ==K=/ =`F =D o =N = =_ = =5>` >$/> 6>` I> U> g>u>mN }>d9 >\ >>>S  >x v >>> > >h, >Xs >0L ? ?;% ?K %? )? :?I C?^V? C \?,m?[ s?XC ?,E ?8 ? ?5 ?d} ?<?; ?x: ?Q ?E ?L-?0 @\@l#@ h ,@@ D@Xh N@|4a@ x@ @q@c  @2@t? @|%^ @p @<5 @(,@,w  A` A@, A)AtI 1A&@AnSAy WA<I aA\4 x kA?/ }A* AA AU A ArAA,B BR B  7B` MB WB gB@v poBp B`,B% BZ  BB8  B B< Bk Bh Bx,Cje C,C<+Ct3 7C IC ]C eC rC- yCLC` C\gC\ C`a CllC|C|C-CDD D )D. 0D G 7DT @DvD HD LDF cDp# qD"6 zD 0 D`8G D&DDx DD D D7 D D0 E E)` call_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____EH_FRAME_BEGIN____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxmain.crcsidentryStackSizeEntryStackmasterStackSizeTopMasterStackMasterStacklastBeepTimesetTimertimedEventsEnabledinerrorfretcalllastControlCTimeRSRS1RS2runset.csymbol.crcsid3rcsid4LocalVarListyacc.cMAXGARBAGEMAXUSABLEnGarbagenUsablegarbageLevelgarbageusableyytranslateyyprhsyyrhsyyrlineyytnameyyr1yyr2yydefactyydefgotoyypactyypgotoyytableyycheckyy_parse_inityychar1yyssyyssayyvsyyvsayystacksizeyyfree_stacksc.0yystateyyerrstatusyysspyyvspyynyylenyyvalbuiltin.cpushlistdefnAcceptTablebuildAcceptTableacceptablesymcmppackparaAppendRemoveScoutScreenListrcsid2searchKeyreplaceKeylookAttrlookAttrResultcode.caddr.0eval.cschedulelockheap.clex.cappend_charbuffer_overflowbofkeywords.0keyword_tokenbuiltinFs.1number_tokenid_tokennew_yytexttab.2table.3multi_symbol_tokenskip_commentskip_one_line_commentscoutScreenInitOpenedskip_percent_commentgetAgentNametranstab.4backslashlib.cmachine.cneed_rwvNullList.0cnv_formula_to_rwvUPDATErefer.ctype.cdatatypepcre.crep_minrep_maxescapesposix_namesposix_name_lengthsposix_class_mapspcre_default_tablescheck_escapeis_counted_repeatread_repeat_countsfind_fixedlengthcheck_posix_syntaxcheck_posix_namecompile_branchcompile_regexfirst_significant_codeis_anchoredis_startlinefind_firstcharmatch_refmatchcustom.cGlobalSymbolscontextNORMALindxbackindxbackcontextMaxBackupContextbackupContextSizebackupContextMaxBackupIndxbackupIndxSizebackupIndxchange_scope2x_default_graphtempx_default_attrx_draw_actx_delete_attrx_delete_actx_delete_openshapex_delete_graphname.0name.1expr_nameisGraphAttrindentinsert_nldumpDonaldDeclarationlastvpneednllasttypedumpDonaldDefinitionlastmastertree.cstagetreeListSizeTopTreeListinPrintTreedumpbufsizeappendTreeListTreeListtransorigCommaRparendump_strglevel.0glevel.1tempnamedefnameutility.cparser.cerrorstringwithinNamedd_lex.cdd_textbufsizedd_lengstateisOpenshapecurlyCountDonaldAppAgentNamesaveaction_Atokenizegtargetcheck.cTypeClashcheck_idsemantic_1semantic_2semantic_3semantic_4check_children_typefunctions.cstructures.csa_uidcountersa_vertexuidcountersa_polyuidcounterrender.ctogl.cconfigSpecsDefaultCreateProcDefaultDisplayProcDefaultReshapeProcDefaultDestroyProcDefaultOverlayDisplayProcDefaultTimerProcDefaultClientDataToglHeadAddToListRemoveFromListFindToglFindToglWithSameContextget_rgb_colormapTogl_CmdCommandTableTogl_TimerTogl_RenderRenderOverlayTogl_WorldChangedTogl_WidgetToglCmdDeletedProcTogl_CreateWindowTogl_EventProcci_depths.0dbl_flags.1Togl_DestroynoFaultXAllocColorFirstTime.2ListBaseListCountgrabPixelsgenerateEPSglpng.cDefaultAlphaCallbackStencilRedStencilGreenStencilBlueAlphaCallbackStandardOrientationPalettedTexturesMaxTextureSizescreenGammagammaExplicitcheckForGammaEnvSafeSizeResizeext.0ExtSupportedHalfSizeBuild2DMipmapsSetParamsex.cedenCmdtodoCmdevaluateCmdquitCmdrestartCmdrefreshCmdgotoCmdversion.0svnversion.1variant.2webSite.3win32version.4sasamiAvail.5apple.6distributescript.cnScriptBufferscriptLevelScriptBuffertablessedenStrsymbolcmpprint.cstore.cstoreScoutDefnsubstst_lex.cconstantstokensfieldssearch_constantsearch_tokensearch_fieldst_textst_lengScoutAppAgentNamenothing.c__dso_handlesa_addpolysetYposnetodolastRenderTimeviewport_namelocal_declareglXQueryServerStringTogl_GetOverlayTransparentValuesa_r_maxlightsisUserDefinedptsname@@GLIBC_2.1expr_to_donald_nameTcl_GetVersionclearTreeListchange_targetsnotationGetsscan_fglPixelStoreinegatenotationTypeToStringed_sasami_object_posTogl_ReshapeFunccos@@GLIBC_2.0inpdevlinenoappend_linebufgetmemprintfgetc@@GLIBC_2.0setXrotprognamesa_clear_polyinfostoremainWindowstack_overflow_errjmpdelete__strtod_internal@@GLIBC_2.0insert_level_markersasami_light_attenuationsasami_light_directionallcatchangecount_idpngSetViewingGammafdreadyInp_Dev_Savesasami_object_scalesasami_viewportnewStringBuffget_stringsetYscalesasami_light_posed_sasami_light_posglTexImage2DTcl_GetStringResultTogl_SetReshapeFunceden_notice_undef_referencesa_inputstringdd_scriptstrncat@@GLIBC_2.0strchr@@GLIBC_2.0Togl_PostOverlayRedisplayappend_NoAgentNamet_floatinthonest_treeglReadPixelsjptgetFrustumTopobjmateriallistpng_set_strip_alphaDefineinEVALfeof@@GLIBC_2.0sa_load_objsa_getuidlistshiftglGenTextures_changedfpunget_chardecGarbageLevelinit_donaldprompt_onXMapWindowdumpdtreeed_sasami_object_rotassignatan@@GLIBC_2.0lookuptouchscan_fpatchinttimewouldBlockTcl_EventuallyFreeungetc@@GLIBC_2.0grantpt@@GLIBC_2.1_DYNAMICbuiltin_ft_checkt_charsa_r_initdumpbufpng_get_rowbytessa_getfirstmaterialcurrent_NotationXGetVisualInfo__ctype_tolower_loc@@GLIBC_2.3Togl_ColormapprintRunSetgetZrotdd_parseaction_queuectoslook_upsetFrustumRightswitchcodeinitRunSett_superrelated_by_codenoticeft_intTogl_PostRedisplayfirstlightinterruptedb_writelibLocationsetZrotsa_r_resizeviewportreset_compiler_statusXRaiseWindowget_msgqwritelndec_asgnentry_ptrglRotatefrun_initdumpscoutwrite@@GLIBC_2.0localtime@@GLIBC_2.0Tcl_InitTcl_Releasewin_treefileno@@GLIBC_2.0sa_findlightSEARCH_symptrstrcmp@@GLIBC_2.0png_create_read_structcode_related_byglXUseXFontlog10@@GLIBC_2.0IDlistglFlushsavetextglColorTableEXTusageclose@@GLIBC_2.0asin@@GLIBC_2.0agentType_fp_hwyytextperror@@GLIBC_2.0ret_callcnv_2_boolTogl_ScreenNumberpng_set_sig_byteseqcallsa_scriptfprintf@@GLIBC_2.0fork@@GLIBC_2.0sa_addlistgetActiongetenv@@GLIBC_2.0sasami_poly_tex_vertexTcl_PreservelastNullInIDlistpcre_fullinfosignal@@GLIBC_2.0dd_debugrawserialreadTcl_PkgProvidepclose@@GLIBC_2.1related_by_code_runtimelhsdd_nerrsreplaceRefsed_sasami_vertexsa_r_setshowaxesgetFrustumLeftstrtodoublestartupcwdglVertex3fcheckRunSetfreeStringBufXRootWindowdefinitionleTopEntryStackresume_scopeTogl_TimerFunc__fini_array_endsetZposE_Disp2PSddupnotationPushPopglXQueryExtensionyyparsedd_errorpeek_eden_internal_cdTogl_Screengargcsetyyparseinitcfsetospeed@@GLIBC_2.0user_tracelookup_addressdtree0queuedd_appAgentNameaddress_errorkeyincurrentAgentNamesasami_light_diffuseTk_CreateEventHandlersa_adduidlistltselect@@GLIBC_2.0tree3sa_dumppolystextptrglPixelMapfvinit_ScoutScreenListcontext_searchsa_togl_createfunc__assert_fail@@GLIBC_2.0curScriptTogl_Displaymark_changedInp_Devvsnprintf@@GLIBC_2.0freetreestrerror@@GLIBC_2.0code_related_by_runtimelhscheckok1getYscaleed_sasami_poly_colourmakedatumsasami_poly_colourdirname@@GLIBC_2.0Togl_IsMappedOverlayTogl_HideOverlaysa_def_light_diffusePlotShape__libc_csu_finiusbhidreadsa_dumplightstcsetattr@@GLIBC_2.0Tcl_DeleteTimerHandlerpngSetStandardOrientationcodeswitchcurrentAgentTypePtrTogl_TkWininit_scoutautocalcsa_addvertexsa_r_setupcameraXResizeWindowputchar@@GLIBC_2.0__cxa_atexit@@GLIBC_2.1.3delete_local_levelpng_set_gray_to_rgbentry_tblDeclareGrapheden_backticks_dependency_hackscoutTypesa_inputresetupdateevalDatumprintUsageglDisableprogpsymbol_searchglDepthMasksa_getpolysymtbl2listhasheden_initprogTogl_Interpeden_delete__errno_location@@GLIBC_2.0dtree2rawserialclosepow@@GLIBC_2.0debugglMatrixModesa_def_light_pos1printsymsa_getlightTogl_GetClientDatafirstpolyget2numvertexinfostoreerrorContentfincGarbageLevelsa_getobjectinvoke_action_queuefirstmaterialgetFrustumBottomconcatmustintlookUpsa_clear_vertexinfostoreconcatoptprintstdoutsasami_material_diffusestackinit_lexsystem@@GLIBC_2.0ed_sasami_material_diffusetolower@@GLIBC_2.0png_get_gAMAst_promptTcl_EvalExinpdevnameaccess@@GLIBC_2.0sa_getvertexerrorCompletestack_underflow_errsasami_poly_materialTk_MainWindowpre_incdeclare_actiondeclare_openshaperandom@@GLIBC_2.0sasami_material_texturestoreDefnputs@@GLIBC_2.0Tcl_Alloc_initnameofpopen@@GLIBC_2.1DELETE_entry_ATOMglViewportmakearrgetvalueadd_local_variablechange_sourcesTogl_DisplayFuncglBeginTogl_SetCreateFuncrmActionsa_addmaterialmalloc@@GLIBC_2.0pngLoadRawFsasami_light_ambientpre_decgetXrotTcl_FindExecutabledd_restartsetsid@@GLIBC_2.0Togl_AllocColorlook_prevrawreadreset_contextglDrawBufferfscanf@@GLIBC_2.0setFrustumNearsasami_object_rotglXMakeCurrentreset_evaldtree4translatescanf@@GLIBC_2.0ed_sasami_viewportsa_camera_frustum_bottompcre_versioninsttblsasami_light_enabledbackup_contextpipe@@GLIBC_2.0getFrustumRightTcl_SetResultsa_camera_frustum_farpngSetStencilsetpromptcurrentAgentTypeTogl_UnloadBitmapFontsa_get_face_normal_from_uid_listed_sasami_material_specularfread@@GLIBC_2.0memmove@@GLIBC_2.0XStoreColorpushEntryStackTcl_SetObjResulterrorfsetYrotTk_SetGridgetFrustumNearsa_dumpobjectsTcl_NextHashEntrygetXscaleTk_DeleteEventHandlerhptrfscan_ftopEntryStack_eden_internal_cwdappAgentNametypenochange_scopeTcl_EvalFileTogl_SetClientDatadef_treesa_r_ysizeed_sasami_material_ambientregmatchrawwriteE_StringRemainschedule_parents_ofmodget_stringeden_full_nameadded_sasami_light_enabledsa_addobjectTogl_ResetDefaultCallbackseden_declarestdout@@GLIBC_2.0stderr@@GLIBC_2.0sa_camera_frustum_righttranslationTcl_CreateInterpsasami_object_polyget_charsa_addlightTogl_Widthscatexec_filetextcodeyynerrsTk_ConfigureWidgetsa_def_light_ambientnewhdatsa_r_updatesa_parsestringunmarkGarbageXSendEvent__xstat@@GLIBC_2.0lazy_notglTexParameteriregreplace_eden_internal_basenameglXChooseVisualclearEntryStackbreak_qvfprintf@@GLIBC_2.0emalloc_psa_structures_initTk_SetInternalBorderpcre_mallocsa_init_sasamisasami_vertexinterpsa_camera_frustum_leftexec_stringfseek@@GLIBC_2.0clearMasterStacksetbuf@@GLIBC_2.0sa_get_face_normalsend_messageflushRestOfLinevertexinfostoresizeXFreesa_load_mtlyylengtime@@GLIBC_2.0cosh@@GLIBC_2.0Tcl_DStringFreeglTexCoord2frawserialopenglGenListssymbolsresume_contextcode_definition_startotherNotationTcl_GlobalEvalECt_typest_restartsetFrustumBottomgetRotThenTransgetopt@@GLIBC_2.0Tcl_InitHashTablesublistTogl_FreeColorfgets@@GLIBC_2.0Tk_ResizeWindowsa_r_initialisedbitanddumpdonalddefinesasami_poly_geom_vertexsa_r_renderdatacmpXFreeColorsed_sasami_light_ambientcompiler_flagappendEdennewScriptsa_findvertexglLightfsetFrustumLeftsa_camera_rotsymboldetailSEARCH_entryappendnEdenTcl_GlobalEvalchdir@@GLIBC_2.0Tcl_SetVaraddIDMOVE_entry_Qrlibtblfputs@@GLIBC_2.0ed_sasami_material_texturejust_nameEXinitTcl_DStringAppendElementstrstr@@GLIBC_2.0longjmp@@GLIBC_2.0getZscalesa_loadtextureint_treesasami_setshowaxesed_sasami_setshowaxesprintdefTogl_ShowOverlaysasami_set_bgcolourglLightfvInput_Devicespost_decTcl_DStringAppendsa_skiplineinit_LocalVarListformula_listglGetIntegervsa_findobjectTogl_Configureed_sasami_poly_geom_vertexgetFrustumFarrefer_bysa_addescapesst_errorinPrefixst_nerrssa_getmaterialrealrand__strtol_internal@@GLIBC_2.0qsort@@GLIBC_2.0Togl_CreateFuncTcl_ResetResultglXDestroyContextsa_def_light_specularsa_camera_frustum_topchange_contextevaluateatan2@@GLIBC_2.0__xpg_basename@@GLIBC_2.0print_symbol_tableglLoadIdentitydispatchTk_MainLooppng_set_expandTogl_DestroyFuncaddActionTogl_AllocColorOverlayglPointSizesa_getfirstobjectXCreateColormapexecvp@@GLIBC_2.0mustaddrglPixelTransferiuser_erroripcloseTogl_MakeCurrenttree2printhashglPopMatrixnew_symforgetbitorfreedatumpngBindFtkdefineinit_edensa_dumpmaterialsis_graphresetLockstrncmp@@GLIBC_2.0getheapdtree1printlocalnarymulTcl_GetVaruseOldTreeTk_CreateWindowFromPathaddrpng_get_PLTEcheckokinitbufdd_promptinstall_custom_variables__fini_array_startgargvTogl_InitpopMasterStacked_sasami_object_visiblejpntpost_incpopfputc@@GLIBC_2.0__libc_csu_initsa_getandbindnewtexturesearch_ScoutScreenQsasami_material_specularselscoutScreenInitOpeninitcodesearch_localstoreSymsa_getUIDis_shapepcre_compile__bss_startTk_UnsetGridsasami_object_posmainTk_Initsa_getvertexUIDsa_r_closedisplaymakelistsetXposdefaultWindowTk_ConfigureInfoTogl_CreateCommandclear_IDlistmap_token_to_nameput_environTcl_AppendResultheapinstallIntVarremove_msgq__libc_start_main@@GLIBC_2.0glClearColorraise@@GLIBC_2.0Tk_SetWindowVisualexpr_to_eden_namedeclare_image_actionlastRenderTimeValid__init_array_endpng_get_IHDRdivideusbhidclosecall_libTcl_PutEnvexp@@GLIBC_2.0setFrustumFart_strTcl_DeleteCommandmustcharTk_MakeWindowExistlistsymsa_findpolyTcl_AppInitsetRotThenTransfree_symbolresetScriptlocaladdrstackpDefineFuncXLoadQueryFontsetXscaleusbhidopensa_r_opendisplaypush_textclearRunSetdup2@@GLIBC_2.0ed_sasami_poly_tex_vertextanh@@GLIBC_2.0restore_contextexecuterealloc@@GLIBC_2.0st_scriptst_debugstrcat@@GLIBC_2.0new_symbolsetFrustumTopdisAsseval_formula_queuecurrentAgentNamePtrstartValidTogl_SetColorsa_getlisttan@@GLIBC_2.0data_starterealloc_pXQueryColorspushMasterStackprintf@@GLIBC_2.0Togl_ExistsOverlayglDepthFuncsa_togl_destroyfuncqueryglGetStringlook_up_treedefnonly_finimemcpy@@GLIBC_2.0sqrt@@GLIBC_2.0count_exprDisplayScreensetGlFrustumtkdefineDatumstartupargcprint_all_symbolsglMaterialfMOVE_symptr_QsptrTogl_FreeColorOverlayrunfclose@@GLIBC_2.1glLightModelisa_findmaterialTcl_FirstHashEntrysaveprogchangeNotation__ctype_toupper_loc@@GLIBC_2.3atexitpushUNDEFsa_r_setuplightingsa_camera_posisdigit@@GLIBC_2.0ed_sasami_light_attenuation__strdup@@GLIBC_2.0yydebugframeTk_DestroyWindowglPushMatrixTk_NameToWindowsasami_object_visibleprint_treeTcl_CreateCommandpngLoadRawsa_findlistorgettimeofday@@GLIBC_2.0Togl_DumpToEpsFilepolyinfostoregtsymboltextblibtblwarningf__preinit_array_endXInternAtompng_read_infoTcl_NewIntObjglBindTexturepngLoadFsnprintf@@GLIBC_2.0XmuLookupStandardColormaparrayindexcalcglEnableglNormal3fopen@@GLIBC_2.0glCullFaceXAllocColorcurrentNotationaction_listipopensa_finduidlistcode_definition_runtimelhsdd_charsa_dumpverticesisNotYetDefineddd_lvaled_sasami_set_bgcolourmap_name_to_tokensym_treehashindexTogl_SwapBuffersfreeTreejpnfst_charglFrustuminitDefaultWindowcall_floateagerexit@@GLIBC_2.0Control_CglClearnotationSwitchXCreateWindowTogl_OverlayDisplayFuncEXinitTclstr_treesetZscalewarningst_lexcalloc@@GLIBC_2.0png_destroy_read_structUndefDatumpcTcl_DoWhenIdlenextcformula_queueTogl_Identandsa_def_light_pos2getYposb_exitpng_check_sigsscanf@@GLIBC_2.0_edatasa_index_from_vUIDpipe_processcfsetispeed@@GLIBC_2.0gettimeTcl_CreateTimerHandlersetLibLocation_GLOBAL_OFFSET_TABLE_free@@GLIBC_2.0getXposreceive_message_endioctl@@GLIBC_2.0clearGarbagepng_read_update_infosa_getpolyUIDsa_exit_trapaddentrysa_r_render_object_polysglobToglXSetWMColormapWindowssa_outputTogl_StereoFrustumf_eofTcl_Evalgetcwd@@GLIBC_2.0polyinfostoresizepng_read_imageTcl_EvalECcodeevalacos@@GLIBC_2.0sa_camera_rotthentransTogl_SetDisplayFuncprintlistsasami_material_ambientstdin@@GLIBC_2.0startupargvTcl_DeleteCommandFromTokenappendHistDebugglMaterialfvfget_chared_sasami_object_scaledd_lexpng_create_info_structappendscoutErrorStrcfmakeraw@@GLIBC_2.0Togl_LoadBitmapFonted_sasami_light_diffusefirstobjectst_lvalpcre_freeed_sasami_object_polystrncpy@@GLIBC_2.0getZposglShadeModelTk_FreeOptionsyylvalglScalefTk_SetClasssa_r_render_axesstartcheckok2sasami_light_specularinstalladd_ScoutScreened_sasami_light_specularfopen@@GLIBC_2.1markGarbage_setjmp@@GLIBC_2.0update__init_array_startsave_IDlistoptarg@@GLIBC_2.0Tk_FreeCursorpngLoadpopdinsertglTexEnviTcl_CancelIdleCallTogl_Heightapply_IO_stdin_usedTcl_LinkVarrefer_tostrtok@@GLIBC_2.0sa_errordon_errlookup_localgeerror_nosa_eden_initjpfdonald_full_namemustlistsrandom@@GLIBC_2.0readyXGetRGBColormapsE_tclTogl_UseLayerfile_statyylexdefinition_runtimelhsDeletenewdatumXWarpPointerbackgndget_environpushintpopEntryStackglXSwapBuffersdumpedenTcl_DStringInitglTranslateffinetimeed_sasami_poly_materialWidgetMapsprintf@@GLIBC_2.0sa_camera_frustum_nearout_of_range_errorfwrite@@GLIBC_2.0cont_qglXCreateContextTogl_SetDestroyFunct_str1copyTreenoupdatesa_r_xsizepngSetAlphaCallback__data_startsa_r_bgcolourglXGetConfigmuststrsin@@GLIBC_2.0Tk_GeometryRequestsubconstpushscout_errTogl_SetTimerFunceden_interrupt_handler_IO_getc@@GLIBC_2.0freeheapDELETE_symptr_ATOM_Jv_RegisterClasses__ctype_b_loc@@GLIBC_2.3glColor4fagentNameterminatereallocStringBuf_eden_internal_dirname__preinit_array_startextendbufrand@@GLIBC_2.0ilibtbled_sasami_light_directionalsa_camera_scalegetYrotTogl_ClientDataglBlendFuncsa_getfirstlightpushlistsizeappend_agentNameDeclaresa_r_showaxespcre_execXUnmapWindowlog@@GLIBC_2.0viewOptionsoptind@@GLIBC_2.0sa_eden_initialiseddeclaredeleteScriptdtree3glEndis_openshapeunlockpt@@GLIBC_2.1topMasterStackhashtablepng_set_gammatcgetattr@@GLIBC_2.0read@@GLIBC_2.0Tcl_VarEvalglDeleteListspng_init_ioprintVersioncode_evalsubstryycharinc_asgnpngBindnoteden_error_index_rangechange_prompttypenamesa_index_from_pUIDpackTcl_Freesinh@@GLIBC_2.0linenoXInstallColormapst_parse__gmon_start__sa_r_render_objectsyyerrorstrcpy@@GLIBC_2.0png_read_endpcre_infoEDEN-1.62/ttyeden-1.620100755000177700001640000106021310256064175013147 0ustar empublicemELF@4 4 (# 444x`"4'44((( Qtd/lib/ld-linux.so.2GNU/(TU;MhzHp.G qg7Z?oj<IY_{3#CibDr&Q1]|R$x6>sk%}W2Nuc[dywF    +4'*): !0-PK,9OJ\VA`EltBXfLe"a^vmS~8@n=5`Gp&(:,kugЛm A4| 8O0'@%P`pp:#iZhU3М&y D 0@P$`Hp#9Н{:$'7 '0a@y58 P`p.#A;]6`ОX$`:A  0G?@$PB`5p"dLSП6,9AF do 50$@QP`<pLgE\?LQxSРmF[$ a0J@:PO`pg+9n`X 'СtuWW} G}0:^@P;J`|4pn4xVj0`k)"<Т5/GI 5V0$@^ P^`Fp4 qe&` r.У%g:|  00libreadline.so.4_DYNAMICreadlinerl_readline_name_initrl_expand_promptadd_history_finirl_bind_key_GLOBAL_OFFSET_TABLE_rl_insert_Jv_RegisterClasses__gmon_start__libncurses.so.5wscrlendwinmvcurwdelchclearokoverwritewerasenocbreakoverlaywrefreshwaddnstrnonlwclrtobotwinsdellnwgetnstrnoechoscrolloknewwinwaddchinitscrwinchwmovedelwinwinschleaveokwgetchstdscrnorawwclearcurscrwclrtoeolwborderlibdl.so.2libm.so.6logsqrtcoshtanhatan2powsinhlog10expatanasinacoslibc.so.6longjmpputcharstrcpyioctl__strtod_internalstdoutungetcstrerror__xpg_basenamememmovegetenv__strtol_internalfscanffgetsdirnamememcpypcloseperrordup2systemfeofmallocoptargvsnprintfselectputenvpopenpipecfsetispeedstrcatchdirfseekcfsetospeedoptindstdinunlockptrandsignalreadstrncmpstrncpyrealloc__strdup_IO_getcforksscanfstrncatgettimeofdaygetoptlocaltimecfmakerawgrantpttcgetattrptsnamestrcmpgetcwdfgetcsprintffclosestderrsrandomfputc__ctype_b_locisdigitfwriteaccess__xstat__errno_locationexit__fxstatsetbuffopenfileno_setjmp_IO_stdin_used__libc_start_mainstrchrfputsexecvpsetsidtcsetattrvfprintfraisefree_edata__bss_start_endGLIBC_2.0GLIBC_2.3GLIBC_2.1 ii ii ii ii t-?@y<@DHLPTX\ ` d h lptx| !"#Ĩ$Ȩ%̨&Ш'Ԩ(ب)ܨ*+,./0134567 89:;< =$>(,048<F@GDHHILJPKTLXM\N`OdPhQlRpStTxU|VWXYZ[\^_`abcdefghĩiȩj̩kЩlԩnةoܩpqrstuvwxz{}  $(,048<@DHLPTX\`dhlpU! | om54%8%<h%@h%Dh%Hh%Lh %Ph(%Th0%Xh8p%\h@`%`hHP%dhP@%hhX0%lh` %phh%thp%xhx%|h%h%h%h%h%h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%Ĩh%Ȩh%̨h %Шh(%Ԩh0%بh8p%ܨh@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h% h%h%h%hp%h`% hP%$h@%(h0%,h %0h%4h%8h%<h%@h%Dh%Hh%Lh %Ph(%Th0%Xh8p%\h@`%`hHP%dhP@%hhX0%lh` %phh%thp%xhx%|h%h%h%h%h%h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%ĩh%ȩh%̩h %Щh(%ԩh0%ةh8p%ܩh@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h% h%h%h%hp%h`% hP%$h@%(h0%,h %0h%4h%8h%<h%@h%Dh%Hh%Lh %Ph(%Th0%Xh8p%\h@`%`hHP%dhP@%hhX0%lh` %phh1^PTRhxh0QVhlUS[PDtЋ]ÐU=u)tҡuÉU,tt h,ЃÐU`@|ÐUSS`H,u 0Pux]5Pؖ@u SIPSh 5"ېUVS`fz]te[^á9Buؖuozt xtYtM~Bt9t+tc 'y'0~Uu1ȅt¾렃 5xBPSh* 5_ `dUWS`p1҉DžtDžp xڃxp$jjxPh e[_UU6 w $ D øM S Z b h ۍvU~ DÐ h USPؖ@]tk9t]ÉBP5Dt 븃hq h(n1ڃ j@<t/ؖ@u<PPh 5ڃh 떍v S Ph 5W vUؖ@uJH!‰Ív5jjh ͍vUؖ@u j5jjh эvUtm 9tUĪA ÍvAP5ĪFDt Ī 붃hq h(n1ڃ j@<t/ؖ@u<PPh 5ڃh 떍vJUH!‰ÉUÐUĪDUvUjoU9ÉUÍvUE Pu5ÉUÍvUP5 h 5 E Pu5 `;P0t0JɉuP u Ph 55j Ð5j fUSE PuhSJS5 h 5c]ÉU u uh UWVS`@ dP}<ؖ@t P`@ dPh 5<P5 h' 5u VW5^ؖ@tPSh 5 S`@ 1;B0vMHC03 P裂`  ;B0wfz hH  `p$ph` XZ`phm`B$1H9}.B<  hc>`B$CH9|ԃ hy `BHBB$hLؖt5jjh|  R " Xؖt5jjh `=@dj`tP4RGPjjrz`9B h tPh u h h C0  h h(n1ۃ/$hjmnP5Tؖ@ SXZhUn5TY[V5T$<tsؖ@uO<hZ SXZ5TSr$@te[^ÐEf e[^ZPhh 5R떃h h(n1ۃQSh 5"VP1Phh 5h h(n1SPh 5( hx$yU 5 h5| h h 5dÉUh h h 5 h 55Tu Ph 55j>jhh h 5$vUVSjhj[Tue[^ÃPS+t,@$`y,XBң,@0@-u ~A-u~nu ~>-u~iu ~>-u~eu ~>-hbVQVhxS$ VWj,Bң,4 h $`n h 5jU$e[^_V5 h 5V5 h @01ۃ@ ,؉ Q+<ؖ@uu<ي@\tXAu S jSjؖ@u S0VSh 5р8nu@ P؉Qh 5ch h(n?1ۃM0@jP腌W0@WV55 hX$TUS]j <tEؖ@u$<CC@@]Pj h 5ăh h(nn1밍vUSQ]u]Ð SuUWVS} WZE؋CEؖ@CuBu9 SXHuGGE؉E܉FEFe[^_PSh 5밐UVSuFؖ@Xu] 3FPRؖ@Pu# SHuFFe[^ÐPSh 5ƐP3h 5yUVS ]sj ?FCpsXu SEBBe[^ÍvUVSE1t1@Xt 3FVh5[ue[^5jjhUVS]C9Ëu Mt(tv;ptP19H!u1[^ÉIu1ԍvUSR] ۋEtA9t=SPSؖ@u]]gvPSh 5Bڐ]ÍvUMSQ9ʋ] tPXI $ÍvUU1ɄtB1uÐUVS uV`tV3it [Du1ҍe[^ÉUWVSjHl<cؖ@;<1} Q/<ؖ@<uPE K<fCE}CC CfCthECC,C0C,C C$C C8c<8C< ЈC< C@u`SDe[^_Ív[뙍vP}Qh 5[!h h(n1 vPjHh 5!h h(n1ۃUWVS }E EGU9ljUut;t)suvuNtS19H!u1e[^_É1USQ] ۋEtu9tqSPSCtؖ@u< smؖ@u ]]UQSh 52ܐRPh 5뭐]ÍvUMSQ9ʋ] tPXI $ÍvUVSut@t/Ct(VsctS1H!u1e[^É1뼉UWVS1pj!><%ؖ@<1} Q<ؖ@u~<CuPR R fC t?fFHfCCC1He!É[^_ÐfFfx@fCP}1Qh 5kYh h(n 1BvPjh 51h h(n1ۃUVS j1fu1ہ<tKؖ@u*<BZr e[^ÐPjh 5뾃h h(nB1뫍vUjOÐUVS19H!Ћu@ 9}e[^Ã19H!Ph|19H!@ 9}čvUSP1H!t j5B@tt4 BF@ ;p~Ǎe[^鸎UWVS, B@xt hL BPB EȋBE̋BUȉEЉ%=t R輻ZYPhS#EЋ01у Qe[^_Ís,9s0t`C= tI= 8= tt1҅ts8R!C8SufEuV-wʺŋtؖ@ 3uCtؖ@uu sWQsss9kXZVSt9CDGDؖ@u S1&VSh 5֋CDUԉ`RPh 5˓qQPh 5豓:B0ZfH UWVS E-w~$\[ jUFE e[^_à j;FU  j*FU ӋE x9 vutt4Fp 9E ݐ uI닍v jEU 량US jEhM @pp0uSfEu] <]ÐUS A@@hMA@ppp el A@XxrAPz~OBEBEB KEt!vPuuuK;u A @p-]áEE멃hTh(ns n hM $U PBH~8hMBppp lX @Z@ph(nÍvhMUVS B@;pM hMB@tt4AlX @@t= BF@ ;p~>e[^}U B@@~WhMB@ppp :k @Y@p蒐tRuPfEuE9+} hM UWS B@H~}hNB@ppp j @@x1щ $BX @Z@pSb$fEԐ uPuE9e[_Ív hN hUfE蛐RuPuE8ÍvUWVS, @@Eԋ@EH]Ѓ S<Pؖ@)<Ũ}~:]Ћ}̾Kh6NEt0t040iUԋD2 KuӋEЋUD踎hbh@N$PXZjS$$Ɠ^_u̡ @@p@t5ؖ@u uDe[^_Quh 5ԡ @@phJN講SufEPu؉EY7PSh 5ɍh h(nkE hT[vUWVS< @@E̋@EH>heNUrrr hE$4@}E~9]ȉǾKheNEt0t040gŰD2 KuӋEȋUă DEP@tOud 5bÉ$舌^_Su]YutXZuċEpdƃFte[^_ÃUrhlN% 5É$$_XSuYu ufEVu؉u5뵃 hUyUWVS| @@E@EHhNUrrr fY[jEp7E P>}E~:]ǾKhNEt0t0400fUD2 KuӃEUDjhN V褊 V耒 EP9@\ 0tj u豊 uVfEu؉uE4 uVfEu؉u-4 uEPfEu؉E4$ҏe[^_m VDjP.ePhNhSS`/WhNhSSD}WS|QWjSe V謉XZjS肎^_jSx$萉Y5TÉ$zXZSuOXuf^_uEpVY[jhNHXZjSXUrP$4 V$$\u4uBZ Z t\uؖաؖZ ue[^ËR "ȉȍBPVh[5n빉 2P5Z h[5mZ OR "ȉȍBPVh \5mؖUؖVS  tOA-wAq x:vvPBtt4NCD x ً Zu,x PZ PR P e[^z͐5jjh_sNUWVS| ЃZ }] LؖZ BR  BZ B :jw ۉXt Sxf_- $`ٖ R Bȉ19d7P6 Ph`5k$5uuu 5j ouuu ]S>CR  RؖZEȉẺBEЉB R w Nt N.Xu wrٖ R Bȉ197GP4 Ph`5jR $B5ppr5j nR ="]P@xB|BؖR EhEP|RxQSUEMcC E؉xR E܉|REE ؖuxx|BEB R ؖu e[^_Ív R BȉȍP7hH\5i봍v5j jh3`hp$5u|xKR "ȉȃ BPxPhh\5iR 5j jh@`o$5u|xR "ȉȃBPhL`5hx P 5j l R BȉF9|#5j jh3`n$5uuuR "ȉȃ BPShh\5gR +.;5j k R BȉF9|f_RE ER EEREEؖu"EEBEB R W\5j jh3`m$5uuuR "ȉȃ BPEPhh\5fR ` pE ER EEREEؖu*EEBEB R  w;y5j jh3`l$5uuuR "ȉȃ BPEPhh\5eR X*hE ER EEREEؖu*EEBEB R  wB;5j jh3`l$5uuuR "ȉȃ BPEPhh\5dR XJh7h\asсR AЉЍP7h\5hd  P7VGP~ZYPh\r UHؖ R ="P@EBEBؖR EIEEЉER MU="MȉỦMU P@EȋBE̋BؖR EurUȉU؋EЉUU؉EE‹M= MM|*= ~ -w juuuQq à Px}ZYPh\q5j jh@`i$5uuuR "ȉȃBPhL`5bEȃ PD 5j jh@`pi$5uuuYR "ȉȃBPhL`5(bCE P /5jjh^`hUؖVSu ]uHVS~xV19H!t#jsS19H!uߍe[^j3h ]5a럍vUVSؖ]u uxC=|9= ~N-w(VSv19vE ]e[^FE D]E(ne[^ovVSuE 뾉j3hh]5`lUؖVSuNZ pVSZ ytVSe[^ÉPhr`3h 6o֐5j,jh]Pg뙍vUVS0ؖ/R =" P@EȋBE̋BؖR Eush_EЋUPMRQM؉U܉MUEE3;Z 0Z XZV]SxtVSe[^Phr`3h ^nؐ5j jh@`xf$5uuuaR "ȉȃBPhL`50_Eȃ P 5j0jh]eUVSؖ uu8="s0 e[^Éh`h(njm SV~ Ph]5^ UWVS ]1ؖuu$9tu>s9u =$j@t)ue[^_%E P‹C)$$5jjh`doU$=UM sH$E `E(nTlUWVSu ])W__<tFؖ@u& <9t9ue[^_PWh 52]Ãh h(nk1USS] 0=R sQSu50nc0]Ívh`h(nkːUS0]0)@P^<t?ؖ@u<SP$d]ÍvP0)@Ph 5b\ʃh h(nk1UWVS]Su+]ƍE o$Xu Xu <$4$$_u^u$Ee[^_ÐUWVS]Su +] ƍE ^o$Xu<${4$s$kXubXu$QE e[^_ÉUWVSHj4_uW[^5 uE R ="P@EBEBؖR E MUEj MȉỦEЉM؉U܉E\<ؖ@v5<EfE-@$a1ۋ}ع Q.\<ؖ@uS<uPaFQuuuXZV5 $ 4$Ee[^_P}عQh 5Y뇃h h(nfh1pE܉FwE܋UVFevU܋FRP];{E  V D D D D G]܃ ;{~h^h(ngPj h 5Yoh h(ng1Y5j jh@`_$5uuu襳R "ȉȃBPhL`5tXE P UVSl h;GXu<4$4e[^ÍvUVSk h8<É4$e[^UWVS\E-=$(ajh;L_U X1IQR[^jh;Le[^_Ðjh`uu h`]SL^X1ZIQS뺍vQu hFPԐjh% u h`]S^^_jSY[jhpjh$nE ;p* Rtt4E ;p|F ;p~ۃjh`jh`E ѐh^h(nFeUR RؖuEE BEB R Ív5j jh3` ]$5uu u R "ȉȃ BPEPhh\5UR cOqUSR ="]P@EBEBؖR EuEECEC؋]5j jh@`<\$5uuu%R "ȉȃBPhL`5TrE P ^UVS]fS= \= C= t8ؖue[^3Pn Ph@a5zTҐؖtK8tQPqH뚐C= = z= x j U<t>ؖ<rPZS8EgUS juhFPjPCuSfEu]d$$C$fJD$D$ Phfd JE P]ÐUWVS5Z)ƒ t tg ƀZ)t5 t0uԃ SUt je[^_à j S)t jpK@v}`xt =%xt =#t{ j+N 'ftM\tCWPhfxSUCVjSjR@w08fx =#t"fxfRxjP `xt R jUWVS ]t€\t#E@CEuUe[^_ÍvCBʉfH%ft>1t$BfP%ft B NC؉UBU늁ft&Qh >:tUE@CYUCUWVS EE%>z<qAƍvfX% ftK  t=B#Z)B ã뮉  R t sƀZ)1lLAfX%f".f_'}"AkZ)B ãZ)/uyt*Lu^8R t t+ƀZ)hLa5hZ)뽍e[^_/#u #ug끃$u?ƋfP%ft9@Z)B t_jj jhZ);R t tƀZ)%e[^_Ã5hZ)R t 5tƀZ)$뼃jhZ)ك@tG~>fX%fu _$e[^_0PuuhR t =tƀZ)5hZ)ҍvpLK?Z)By"ãt\\tuhgh(nZE>"Z)B"p>Z)BR t  ƀZ)ƀZ)1hZ))Z)I $7<tcؖ@u4<hZ)SI= ]uuh/\PZ)IQh 5h5릃h h(n D1ۃ듉5hZ)!vLm=KZ)B'ãt\\tuhgh(n|C="Z)BDp<Z)BR t t^ ƀZ)ƀZ)hZ)V=Z)uZ)EPuuhWhgh(nB΃5hZ);a/$'e[^_5hZ)hl;Z)B%t>t <R t tƀZ)밃5hZ)АG8R t t!ƀZ)5hZ)bǐUVS jA4<ؖ@<=0t)5L`@@PhgS8e[^É 5Lơ`@@PVhgS8 ؖ@u V7PVh 51Pjh 51Yh h(nG@1ۃCUSQt(ؖ@ 5g70@tn P1ؖ@u5 S$7t8u]É P4PSh 50봐 h 2$ '1RPh 501UuA Ҹt":u!  B É Uu! ҸtҸ tÉ ɉ U1҉t1:ÍvUVS `A(Q 9Њ]}'Q(ABQ(`P@(De[^ÍvA PqN4Dt F `밃hq h(n>1܉USP`BHtNztBB(B$ P;1҃ `t tP`@$؋]Ð Zj7;xt" S5Ãt `r1`@,t׍vB@BGUWVS `{aCf{o5ǐfp%@ft`CtLHt P?`̋E;t u5ƃʋC,tK뺍vC0@C뫋SC(e[^_;Egu`SvUSR`PtZJt؋]à XjO6;t SSv4$,u1`@,tv@USQ1>Z),Y5Z)BEZ)Z)5Z)B?3ÐfPfu_u:4 Z)B뵐ƀZ)=Z)j)tn}>İ~İt!Q0h(hh V:RphFPhj)X2܁uƒphj)2Sph`ϐhZ)hj)21}~(32UWVS\= EOQ1;B8 vftiDDFEOQE ;B ~ЃuuuuuuuuuuU,ufEPuEe[^_Ø=tD=| =DPuPG@P{DZYPh\h8= WDDAFD=vUWVSl AP;Z[ 2==PSWA@0PCZYPhhZ8= GCP ;Z~uuuuuuuuuuuuuuuuuuuuU]LuufEue[^_ÍvD2\ݐ끉D2T2TݔDݐjUVSE=t|=t e[^ÉU ;r' Rtt4FU  ;r~ؖ@uUe[^.Pu h 5{(U ֍vU tؖ@tQRUWVS E ==t!E UEBEBe[^_E@@  P)<tmؖ@u==<1U;r%1tt4PlFU ;r~݉}tPE@@ Ph 5'뜃h h(n461뉐}(1۾؉ Q,)<tHؖ@u<uP.EP}؉Qh 5&h h(n51뭍vUWVS E =u=tE EFEFe[^_E@@  PwE1U;z)1ېttM4P}GU ;z~ڋEE눉}{1 Q[_uP-EPUuu uhln4ÐUSPUf]w]à P @E]$?E En]X4USPUf]w]à P?E]$?E En]4USPEf=]t3 Py?E]$g?E En]3]ÍvUSPEf=]t3 P-?E]$?E En]y3]ÍvUSPE]t]Ð P>E] En]53Uuh o!3ÍvUVS u V]SfЃ }'tt PZ>ZYPh@o2fЁ}'t3 P>ZYPh@o2ff=tf>t1f=tȍe[^Ívf>tFf^ۍvCf[vuf렐8fHU(ؖuMEPEP=t'=tÐEEPuuuwEE]5jjhi)뚍vU(ؖuQEPEPQ=t+=t{ÐE+E܉EPuuuEm]5jjhiL)떍vU(ؖuQEPEP=t+=tÐEEEPuuuEM]5jjh)i(떍vU(ؖEPEPU=tK=tÐU܅tEљEPuuuڐuhlo$0UEـE@t E]Puuho/Eۉ5jjh:YZPho. tufE]Ruuu4͉u5jjhei&cUؖE PE f=t2f=t, P9 PPh9ZYPh,p-E=tE=~=t1EE@fEQuEuujfEE5jjh{i%CUؖE PE f=t2f=t, P8 PPh8ZYPhXp%-E=tX=D=t ( ÉEE@fEEPuuuˍv=ufEEϐ5jjhi$/UWVS<ؖ uV]SU؃ fdMfVfwfft3 P7 PESP7ZYPhp,e[^_fuƋU܋BEċE̋xEą~* ]čvPt2t242 KtU~& PEt0t040P KuEă P"quuuS 6 uuuV51}܈Љˋ}̉эL QcZYũ uP#P5! uPu؉E 5jjhi #NUWVS\ؖ uV:]S1EP( hw^uuuM؃fUffwf;ft4 P5 PEWP5[^Php*e[^_ÐfuŋEhw^pp0E5E܋XXZUB@؍@ PrDƅ~/ F@FUt:t:@4:Pw KuE%M=qt Mju] %C< ЈC<]'C@뿃hq h(n)1ZvuuuS3 uuuV31ҋ}Љˋ}܉Ӎ\ SfE<ؖ@<u܃ uPEn!PE Epp0EUEBE BuuuE%=ju]#C< ЈC<]&C@PSh 5*:h h(n'1#5jjhiUSQZ ؖZ uZ ]É5jjhiZ ӉUSZ ؖZ uI EP f}t*hiuuugEt Z ]Ív5jjhi랍vUSZ ؖZ uI EP5 f}t*hjuuuEu Z ]Ív5jjh%j랍vUSZ ؖZ uI EP f}th8juuu_Eu Z ]Ív5jjhNj랍vUSZ ؖZ uI EP- f}thbjuuuEt Z ]Ív5jjhxj랍vU(ؖEPEP =t7=t3ÐM1t U܅tRuPuE觿֐ EPc0PEPR0 PQhC0YZPhp$두5jjhjSU(ؖEPEPI=t7=tsÐM1uU܅tRuPuE֐ EP/PEP/ PQh/YZPh q#두5jjhjSU(ؖEPEP=t'=tÐER#EuPuE6 EP.PEP. PQh.YZPhHq:#롐5jjhjTcU(ؖEPEP=t'=tÐER EuPuE膽 EPC.PEP2. PQh#.YZPhq"롐5jjhjcUؖu%R HMPU@PRQEÐ5jjhjTvUؖuE P艽Ív5jjhj֍vUؖuP555uÍv5jjhkʍvUؖu)Z QufERuU죐Z  É5jjhk|뾍vUؖu!PZ pp0ܻZ Ív5jjh4k0ƍvUMUVf9S։tfwtfwhft ff==1=tU +Ue[^É=td=uU EJ;HtҾ9λ 6tt4tt49 uFU ;rE1늃uu ƒrEm E1Ҁ@tEGi9f EfE]E fE] UؖuiR B=t#=|!-w1zfBBÍvB P* PPh*ZYPhq͉5jjhMk4{U8ؖE؃ PeEP\UM؃ f9tfwVfwJftCft<uuuuuuufEPuȉE"5jjhgkxWU8ؖE؃ P詹EP蠹UM؃ f9tfwRfwFft?ft8uuuuuuufEPuȉEkÐ5jjhyk[U8ؖE؃ PEPUM؃ f9tfwVfwJftCft<uuuuuuЃufEPuȉE豷Ív 5jjhkWU8ؖE؃ P5EP,UM؃ f9tfwVfwJftCft<uuuuuu^ufEPuȉEO5jjhkHWU(ؖuQE؃ P}EPtXuuuuuuufEPuEpÉ5jjhk떍vU(ؖuQE؃ PEPXuuuuuu`ufEPuEÉ5jjhkP떍vUؖu`E P腶 Z t7pp0uuu tZ Z ɋZ BZ 5j'jhqUWVSZ PUP8Xp UPuSU裐Z $tx;stHE[USC sf{f{C< ЈC<C@uSΩؖu e[^_ÉP3hr5 Phk3h nUWVSE؃8P2 h@ruuu Z PUԋP8pUYPZ Xuԋ]SU#tw;stHEЉ[ỦSC sf{f{C< ЈC<C@uS٨ؖu e[^_ÐP3hlr5) Rhk3h oUSPE%= ]t=t]ËEf@f=t P$EE] EEr]hUE%=tÍvEfx u@@ f@@E EUS4ؖ8E P脳EP{ h luuui uuu`hkuuuE% to h lZ uuu=E%=t]Ðju迸]C< ЈC<]C@Ðh luuuUE܈끍vuuEuPXZEpp00EȋU܉ẺBEЉBAv5jjhkUS$ؖ$h lEPY[uuuE؉$ h luuuhluuuE% tq h l uuuϰE%=t]ÍvjuO]C< ЈC<]MC@h luuuQU܊E|Eh lpp0U܋EBY5jjhr US$ؖ,hlEPðXZuuuE؉$訰 hluuuhluuu/E% tq hl uuu{E%=t]Ívju]CC< ЈC<]C@hluuuU܊*EzEhlpp0U܋B+EBR5jjhr< US$ؖE؃ Pl hluuuZh+luuuE% t] hl\E%=t]ÃjuӴ]C< ЈC<]C@ĐEEQufEPEu߭덐hlEpp0_E@ Epp0͐5jjh1l US$ؖE؃ P@ hOluuu.h+luuuE% t] hOl0E%=t]Ãju觳] C< ЈC<]C@ĐESuPfEuE踬E덐hOlEpp03E܃ pp0般E@Y5jjhs US$ؖE؃ P h]luuuhjluuuE% t] h]lE%=t]Ãjus] C< ЈC<]qC@ĐEERufEPEu덐h]lEpp0EH Epp0͐5jjhplUS$ؖE؃ P hluuuhjluuugE% t] hlE%=t]ÃjuG] C< ЈC<]EC@ĐEQuPfEuEXE덐hlEpp0E܃ pp0(EHY5jjh$s|Uؖu ĞÐ5jjhlDڍvUؖu ĞÐ5jjhl ڍvUWVS ؖ}u_Ğu e[^_Ð w wwwD$ P w 3X$W˯뭉5jjhl|눍vUSZ ؖZ uAf{ t!RSCfEPu]E迨]ÉC<tՃ SQ3hDs5UWVSEP? f}h<_uuu=j)ƅX= ]~e5W_-X ,hj)VXZhsfV9,WVv4$P%ؖuvf{ tVWSCPfDžHHLPlR t 5t e[^_É SC<t SP3hds5ojhhV$ÃJhj)WhsfXV'{;~uCE܃u܍XV]׍v,USZ ؖZ u- R[RSfE Pu]E;]ÉQShs5뼐UWVSLؖrhlEȃPXZuuu}E؉$]裦 hluuuU؉%fHt(Shs Suuu营e[^_ËE܉E=tx=tQSRP4^_Pht뷉~ Mq;^~&t7}PGpjSU؋w%fE؍[Eljq~Epu1I9v68tʋEVP1IQjS2EU؋p%fE؍D냉5jjhmrUؖuZ  0Z 5jjhm΍vUWVS,ؖuuuv C PfE{Efp~0}ȉ W诤EȋU܉ẺDEND Quuu貣e[^_SVh7m5qUS$ؖ8 EP< f}hh_uuu4]U؉%=%=tV%t:t hh_]ËERufEPEuԢډEQpp0f{u$t3h`tU뀉f{ dC<V Su U< SQ5jjhRmUWVS,ؖhlE؃P͢XZuuuEȉ$]询Eȃ =te=t"VSSPZYPhte[^_Ð~3u;^~PvjSuP[tt4w뽋uKxLu1I9~P1IQjSu3WufEPEu륋u5jjhjm|UWؖE P謡E =tR=3=t #}PuEfEju蟠ۉ=u͋EQpp0ߍv}1WIuMfEQ5jjh}mXUWVS,ؖ E؃ P huuuEhpp0ExUԋBH Rppp YUԋB;x}2 v3P H AD3AD3UԋBG ;x|HE%=te[^_Ãju ]RC< ЈC<]C@hth(nf5jjhmUVS ؖE؃ P賟EP誟 h~_uuuuh~_vv67F@@PvDtrËC@Cuu܍@uPE% =^te[^Ãju]3C< ЈC<]C@ƒhq h(nG1ۃt5jjhm\UWVS<ؖxEȃ P芞 h_EPv_Xuuu2E؉$]X h_uuuFh_}ww7 WB@9~VB@PjSWB@PwrDƋN9|"IvB BBIBB 9}uu̍[uPE%F =wte[^_ÃjuH]C< ЈC<]FC@hq h(n1NW5jjhmlUWVS,ؖ$h_EȃPٜXZuuuE؉$}軜 h_uuuh_uvv6H ^;{~PsjW!^Ptt4OC9#IBBBBBAC 9~HCE%=^te[^_Ãjuԡ]C< ЈC<]C@^I5jjhmZUWVSؖ E؃ P膛 hnuuut}fW= q= 2-$fP7autf/dt*dPhnw V19H!t9PC019H:PhnS19H!tVȃ j zG7hnw,ZV19H!t:C90(nt&nP(S19H!tVˍvQw@7hte[^_à Po7h+n$5wwwJhgQw7h/nXZ7h8n$5wwwRJhSny j5juu-Jj ?>5jjhWnUVSuV19H!t7vPCtRh'n5S19H!uE e[^UWVS uZ S119H!t=Jt6t.9$R19H!ЅtHt =u׍v~cؖu7ue[^_5j jhuEe[^_R6hu5ؖ뫃 j <tbؖ@u6 <AqH [Q6h(uPj h 5lؖ묃h h(n 1ɋؖ듉G j <ؖ@uY <AH1Hq ! 5j jh6uPj h 5ؖ뉃h h(nE1ɋؖmU=t$5h=u ÉUWVSj <ؖ@5<v6v19H!tBCBCCtF3C^ؖ@u S e[^_WSh 5xPj h 5`Vh h(n1@UWVS ؖ} O19H!t8vsj,uV(PVbS19H!u΋O9tvwW8O9uE P9H!tU j z<ؖ@<CBzPS19U H!uO19H!tP sj ,<tTؖ@u3<EBrPS19H!ue[^_ÉPj h 5뵃h h(nz1뢍vPj h 5h h(nC1PE0hCu5gXu R0UWVS E P9H!‰UEp,vExju_ SAPS{$ <ؖ@<EBZPjWVPV$$ <tXؖ@u7<rPEzP19U H!‰U8e[^_Pj h 5E뱃h h(n1랍vPj h 5+h h(n1UWVSu F9Ƌ}tVtAvKQ<Ѓu9QU@EfE 룉UWVS 1f=}t(vtWt Cf<݀uf<݀t݀e[^_Ãhuh(n{ىU1f=S]t9t Bf<ՀuՄ[ÉU B@@toB@fP uE1f=tf;t @f<ŀuRńufEEPu葎QufEEnMhnMۃ huK/ vU( B@@BPB EJMBUE%=t9I})tX}fE fEEm]mPufEuuÍ͐ujj jQẼ hu{. NU B@@BPB EJMBUE%=t9=})t ÉPufEuu Q$]܁uPjjQm hu- ^U( B@Ht{BPB EJMBEE=H=})=t}fE fEEm]mRufEuuG̐=uEِ hu - jU B@@t'B@H MPU@PRQEÉ hu, UWVS,U%=,= tz $uQuu ure[^_ƅ@ƅuSfEuEP] ZYuu h`SSu hFPE 뤃 h^<Rؖ@'5<h$nV*DžDžE ;PDž vRtt4$#1򮋕эL AA 9~9SVlD6ǁV9E ;P ;Ph`VuVfEEuPu %uu ulؖ@u VWVh 5ۃh`WE bhWxYXWjXZhh;LWPYXWBXZh;Lhq h(n1Phh 5$h h(n1ES0hL4UWVS, A@xAPB E؋BE܋BEA@HMȋPŰ@ WPRQE1>f=ut&tVt Cf<݀uVuf݀ufEu赇e[^_à hv( QULÉUUSM ]t :ERCPt $Åt B % tB @t BBөUUVSu] M:ERCPt [^Éw$wB % 1ۋBBBB @tB٩ɅttC1B tB맸렍vtUWVSECȅɋu u\Eȃ[^_ÍQЃJw vtك91}z0tE@t뵉GH~륊CuEV t݀}8t׀}9tCLЉGHÊSŠ0t8t9u맍vMuK]ыUCr 0tCLPC0u ~;M ]ȃ7~K1Q2ctlxUCr 01ɄECU0фt 0GHC0u{WC u p1hAw uF @GUVSMU Z A1t4ŠtvAŠu}tA1,t[^Ê<}tA1tߊŠtAŠu}뵍vUWVS]EE Uz 8t'vEDPЉEC 8u܀}C<}tLEЊ:tMTBЉUC:uE9E}U[^_É} }~ M@׋E UMEŋEEɐUWVSPEE1XPvƒF~GG$wu SxƐCSÀ;8t뭐e[^_ÉCCFCƍXPCSƃÃ!ƒ-w2$xCS<CS9ǹuF,v}x$9ua8MU1FuCSÀ;8t#C1UMVAS1A^tCUËR tAÊu9t1[^Ày]uE AUWVS v1ۄu t9tCvue[^_ÍvPV4uuUWVSMU EM]] }$EEEEME]E3tM(A uJ#| $yE}];e[^_ËMEAMv]C]돍ZDžx]z?}ZE BM =:]CFCCDžx1AUH!ЉE Pu(EPEPFƒxPuEPEPUE9Hu ‹ER P0BtdE~FYQ?</A%EE<)Ut@<:t<Ci]iUU~-Uue]<)t<:uċ}E }!ǀ;)t GCEt#e9EtM ]AAM]}EUvXu @뀁 usts mu˃ ^xu Q I AE7]@EC]DEEM{?MM]B% B<]ۉEuCtmuJtUE}3EGEG]G}t$E@EEUBUEs1EъE1]C]؃uEM/AMŠE-뱐}}뱀FwAt B]M+M1DžlhEjE~ MU ]$)tOPhEuPEMDEAG1AH!ȉAAM]K]Ox_EUDBUt+GBЉU)1҅J!Љ‹uEMAMPhuuh]OyM)]A)CSЋ})1҅9GCJGKG!։}uFUE+l:0Rh]uCSEUDE]9|)PhuuHGhE]9|ڋ]ƋMAQ99uE)ȉl!E؅}]]]pEMuTt>Kt*EMEAEAAM] TEUBUE}G}HJt_}AEGEGG}]x-;]tUE+EEEBEBEB뎋}EG돋U<t <uE9UtMA띃U똍vkE]C]"vUr UESuM} ]$HtEtHM1}w}UCU]`E{E"]]}G}GEEEE5EUBXU]p^XE}1EDž|[\}-L(EtU(B4D*E|EX]p]t}t4}t1D.ЋMF~E 3}u狅|x‹EtMA|UBU]CC]܍vF$]_]Gpp\t}9p|f;p*xOL(EtM(AT(ȉ|FE;p~F묋]u(juM 1uEP pVt}8Džp:U$u(juU 2uEP ލFM(QE ${1D@D.F~1D@D.F~1D.F~1D.F~1D.F~1D.F~]Pe]C<:t <.t<=Qu(EPRH]DžtM({:y]x^Eă)PS[xuEt 1H!R1ɍ wx$tt-1D.FB~A~΋]C]E 1vD.FB~ЋE^vXDžt]M}|U$)XE]pu(juE 0uEPUU ]ĉ]\MM]]1EtU(B u#\tuE@EGEX]U(pB <y~8MIMUBM ]$;UB]Kz] ]Ȑu(juM 1EuEčEPj \]ĉ]끐]C]pj u?؃ ~%MPM6]CS]4F E!lj}UE u(BP u(uEPEPE@P$}7 ÉEC]p uUWVSUEE}(E,uE$D]EU؉E䐋E xE UBEE BE u E t&E@UBEEBUBEBE u0UREPU RuEPURuV0M)ىCKtUx 9tEU,;}E E8|uE8]CEEE+M9UBEBUBEJU] BۉExB UBEE؈BEEUEUe[^_ÍvEVS(xUJJEEU1뷉UWVSM} uFw-${~Yڋ!!9t Eu ͉[^_ÐAAQ98t릍vUVSu ]jjVCPzFYۍC;~~{@WFPu ! WuPPPU Ɖut2@t/Jt#~?FuDž1~?tx@=~ Džw@(@‰ER ^C߃1.$Lt<)tF@t<)u>FMٲσV֍RB>)Ĵ?F<=\CFPt]uKtr!~{]SP-~ SuPPPƉE v`EPju uPU ,t $Cp }WFPfu | WuPP@PƉE uat:t'~~ ܃u믋TFX uE@ڄzUWVS}GU u G8])O4192Et5K~v8FA8:uK[^_1K~萊FA8uKԐUWVSEE } EtUM]UM]GE~,X~ _G Í4E;p GG$TvPjuuuuGPue u&GWǀ?8tEEe[^_EEP,tU;P ;> "> *> MALLOC free 0x%x p(%d,%d,%d)UNKNOWNOHDEARINTERNAL%eden%scout%donald%arcaNEWOTHERsystem error: ereallocMALLOC emalloc(%d) 0x%x out of memoryENTSTK pushEntryStack(%s) ENTSTK popEntryStack ENTSTK clearEntryStack %s: notice: action in %s%s%s: warning: %s %s: error: called by action %s while executing string near line %d, char %d: ^ DATSTK reset_stack errorf: longjmp while executing file %s while executing stdin in action %s called by %s in %sFILE_DEVSTRING_DEVPARSER yyparse() returned %d PARSER yylex() returned %d run: setjmp ...%s->TKEDEN_LIB=Failed to putenv TKEDEN_LIBhttp://go.warwick.ac.uk/EDEN/r1081.62ttyeden%s: %s version %s (%s) unknownLib directory is %s See %s for more information /eden.eden+vunil:eargument p %s systemautocalceden_error_index_rangeeden_notice_undef_referenceeden_promptinitialisationinput%s: can't open %s %s: unknown argument %s צަ4MtopEntryStack failed: TopEntryStack <= 0%s: interrupted using control-c: press again within three seconds to quit checkRunSet: RS->nitems=%d: run action %s checkRunSet just swopped RS: RS->nitems=%d checkRunSet: swapping RunSets checkRunSet start: RS->nitems=%d interrupted: clearing both RunSets (current queue and todo)MCSTAT run start: %s %s%s%s Inp_Dev level: %d MCSTAT run end: Inp_Dev level: %d, errorflag: %d Failed to get current working directoryUsage: %s [-l] {-v|-u} {-n|-i} {-e |} {{-n|-i} {-e |}}... -l name of the directory containing the library files (optional, but required for some functionality eg the definitive parser) -n non-interactive mode (don't print prompts) -i interactive mode (do print prompts) -v output version information and exit -u output this usage information and exit -e execute 'code' if file is '-', standard input will be read See %s for more information Use the -u option for information on usage of command options func cwd { return _eden_internal_cwd(); } proc cd { _eden_internal_cd($1); touch(&cwd); } dirname is _eden_internal_dirname; basename is _eden_internal_basename; PI = 3.14159265358979323846;couldn't open initialisation file %s: %seden_backticks_dependency_hack%%eden include("%s"); /* (invoked from command line) */ Failed to get current working directory -- we will not be able to restart. Continuing anyway.** printRunSet: %d: %s ** printRunSet: no items in RS *%s %d %d redeclare local variable:local variable is not in this level:compiler error while patching codeused outside definition$$undefined.REALINTEGERMYCHARSTRINGLISTCONSTANTVARFORMULABLTINRLIBFUNCPROCPMACFUNCTIONPROCEDUREPROCMACROAUTOPARALOCALBREAKCONTINUESWITCHCASEDEFAULTDOFORWHILEIFELSESHIFTAPPENDINSERTDELETERETURNARGISTILDE_GT',''='PLUS_EQMINUS_EQ'?'LAZY_ORLAZY_ANDBITANDBITOREQ_EQNOT_EQ'>'GT_EQ'<'LT_EQ'+''-'SLASH_SLASH'*''/''%'NEGATENOT'!'PLUS_PLUSMINUS_MINUS'#''&'ASTERISKEVAL'$''['']''`''('')'';'':''{''}'programlvalue@1primarysecondarystmtwhileforexpr1end_expr2end_expr3thenelsecompoundstmtlistcasesididentifierexpr@2evaluatecolonlazy_andlazy_ordefndeclare_relation@3tilde_gtdeclare_formula@4isdeclare_action@5def_begindef_endrefer_optid_list_optid_listdeclare_para@6declare_local@7local_listarglistargument_listlocal variablereturnshift'case' used outside switch'default' used outside switch'continue' used outside loop -> %s , encountered `%s'Error: state stack nowShifting error token, Discarding token %d (%s). , expecting ` or `parse errorShifting token %d (%s), Next token is %d (%sNow at end of input. Reading a token: Entering state %d Stack size increased to %d parser stack overflowStarting parse CFJ@GNO>;*<?QP9+7.KLMRS  !"#$%&'(),-/01234568:=ABDEHI !%)-.58;>ACEINSUX[_bfltz~  $(,0158;>AHLPTX\`egikmoqsz{ZjJ'UKlL>X>GUMlMNUOU+lU,lU-lU+UW=lDUUDEUUEUYNlOXNOYKlLrlP&P&lP"P"UP#U*lP$U*l*lP%U*lP QQPPglhZ]^_`abZ\ZNlOP[NlOcZ NlOcZ NlOcZdZePNPlPPlPOlO!RfSfZNOk   VXGUKiLl;ll<ll>ll?ll@ll=ll7ll8ll9ll:ll5ll6l.mU<llFClBll.cloll1ll/llpllqll3ll4lnNlOIQ20vyskuKLPMlMtuKLP)kxlPMlMwxlP({kz~|f}RSQk*kPP*l*l    &')++6789<>?BEIKLNPSTVXZ`fkpy    !"(*-39:;>BCGKRS[agxyz}{M}^  (+/58=CJQX_cfosw,!&*.26:>BFJNV_]`hrwJ}A  %(+:3=GOYemz}TTTUUUUUUUUUVVVWVVVVVXXXYYZZZZZZZZZZZZZZZZZZZZZ[\]^^__`aabcdeffghijjjjkkkkklllllllllllllllllmlllllllllllllnopqrrrstsuvwvxzy{{{|}~~  LGHDEF|}~IJK10]kB/>MN.Cqop&'@%2C_ baO3yu;nm`z$ ^ =? 574Aedhi[\WXYZQRVSTUfg; P;6(vj!#8:l,+9rc<"x*)>--./02345679:;<p=q>?  ###0###Hhr###P) +   k   r388883+ :.51#YDr6 >Mo=rYxn]r @ F|E|gJb81P@RVWno\^ABC`abDlem`abEeFeeg`abcd8fiheecdecdeeon8JLMN TXYZ]   rstuvwxyz{|}~8U{|}~8888 8 yz{|}~ !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*+,  !"#$%&'()*+,   !"#$%&'(G*O !"#$%&'(G*j   !"#$%&'(G* !"#$%&'(G*     'GHI !"#$%&'( G*S'G* 'GHrstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~rstuvwxyz{|}~uvwxyz{|}~wxyz{|}~***P**!"()>?@)*PN F+,-Q4K6+,-PNKNPKPKK+,-FGDE3N3NKKDEOON=?K()Q[DEK`abKFefghLKk*F)ONqQs(u_wxyz{|}~=L;<=>?@ F* RK#$%P!P*LP./0123456789:;<=>?@HF LQS789:;<=>?@`fF  "#$%&'.56789:;<=>?<>FBCDEGIJKMNPR  "#$%&'.<>BCDEGIJKMNPRS  "#$%&'.<>BCDEGIJKMNPRS  "#$%&'.<>BCDEGIJKMNPR  '.<>'.<>BCDEGIJKMNP  '.<>'.<>BCDEGIJKMNO  ' '> .J'MNP<>'>>./0123456789:;<=>?FQ./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FP./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FO./0123456789:;<=>?FM./0123456789:;<=>?FM./0123456789:;<=>?F*L./0123456789:;<=>?F./0123456789:;<=>?F123456789:;<=>?F3456789:;<=>?F'':a\a6z4Vcmz'6'<NhPx'1 111)16D[x1'''''''''-:GTan{!:S"1>n'''bx"(7''"1'"1can't reference local variable within eval()can't reference local $ variable within eval()'break' used outside loop/switchassignment used inside formulaReducing via rule %d (line %d), or... (%d other possibilities)parse error; also virtual memory exceededexitexecuteincludeinclude_file_eden_internal_cwd_eden_internal_cd_eden_internal_dirname_eden_internal_basenameusbhidopenusbhidreadusbhidcloserawserialopenrawserialcloserawserialreadapplysubstrstrcatsublistlistcatfloat_type_convertwritelnarraynameofformula_listaction_listsymbolssymboldetailsymboltextsymboltableforgetpackget_msgqsend_msgreceive_msgremove_msgqrealranderror_nobackgndpipeipopenipclosefdreadyrawreadrawwriteregmatchregreplacegetenvputenvprinthashtouchgettimeftimefeofgetcharfgetcstatfgetsungetcfscanfsscanfdebugtodoinpdevlinenoinpdevnameusage: debug()failed to get cwdstring eden_internal_cwd()failed to cd into '%s': %sfeof()int feof(stream)fgetc()int fgetc(stream)stat(filename);stat()failed to stat %s: %sstring gets()fgets()string fgets(n, stream)ungetc()void ungetc(c, stream)fscanf()sscanf()substr()substr(s, from, to)sublist()sublist(L, from, to)%.15g'%c'"%s"(%s is variable)(%s is built-in function)(%s is int-valued C function)(type=%d, val=%d)(%s is user-defined function)&%ss = nameof(&var);lcat()execute()execute("%s"); execute(string_expr);include()can't read file apply(function, list);symboldetail(symbol);symboltext(symbol);symbols(type);pointer%d ---------------------- address=pack(data,...);array()list = array(n, data);user_errorrun-time errortouch()getenv()string = getenv("env_name")putenv()ok = putenv("env_name=value")backgnd()/dev/nullbackgnd: can't execute %s pipe()pipe(): can't execute %s ipopen()/dev/ptmxptemldterm/dev/consoleipopen(): fork failed ipopen(): can't make pipe ipclose([rfd, wfd, efd]);ipclose()fdready()rawread(fd, maxbytes);rawread()rawread(): %srawwrite(fd, string);rawwrite()rawwrite(): %srawserialopen()rawserialopen: tcsetattrrawserialopen: cfsetispeedrawserialopen: cfsetospeedrawserialopen: tcgetattrrawserialclose(fd);rawserialclose()rawserialread(fd, maxbytes);rawserialread()rawread(): %dusbhidopen()usbhidread(fd);usbhidread()usbhidread(): short readusbhidclose(fd);usbhidclose()regmatch(pattern, subject)internal matching error %dYtodo()todo called: queuing <%s> todo(string);real realrand()string _eden_internal_dirname(string)string _eden_internal_basename(string)void _eden_internal_cd(string)int scanf(format [, pointer ... ])scanf can handle at most 9 variablesint fscanf(stream, format [, pointer ... ])fscanf can handle at most 9 variablesint sscanf(string, format [, pointer ... ])sscanf can handle at most 9 variablessubstr: index out of range (from < 0)sublist: index out of range (from < 1)(%s is real-valued C function)(%s is user-defined procedure)(%s is user-defined procmacro)(local variable #%d, location 0x%x, value oops - internal error - unknown type of pointernameof(): address needed (got %s)include(filename[, filename...]);symboldetail(): address or symbol name needed (got %s)symboldetail(): no such variable symboltext(): address or symbol name needed (got %s)symboltext(): no such variable forget(): pointer or symbol name needed (got %s)listcat: -ve number in 1st argumentpid = backgnd("cmd", "cmd", "arg1", ...);pid = pipe("cmd", "cmd", "arg1", ...);ipopen(): couldn't set terminal attributesipopen(): couldn't get terminal attributesipopen(): ioctl couldn't push ldterm moduleipopen(): ioctl couldn't push ptem moduleipopen(): couldn't open slave pttyipopen(): couldn't get name of slave pttyipopen(): failed to unlock the slave ptty ipopen(): failed to set permissions on slave ptty ipopen(): failed to open master ptty %s ipopen(): can't execute command file %s: %sfileidlist = ipopen("cmd", "cmd", "arg1", ...);fdready(fd, type, [sec, milli]);fdready(): second type argument must be one of 'r', 'w' or 'e'rawserialopen(file - eg /dev/ttyS0);rawserialopen: couldn't open filerawserialclose(): couldn't close fileusbhidopen(file - eg /dev/input/event0);usbhidopen(): couldn't open fileusbhidclose(): couldn't close fileovector overflow: found more than %d matchesregmatch: pcre_exec p='%s' s='%s' rc=%d o[0]=%d o[1]=%d couldn't compile regular expression '%s': failed at offset %d: %snewStringBuf 0x%x s=0x%x l=%d %s reallocStringBuf 0x%x s=0x%x l=%d rl=%d %s %s freeStringBuf 0x%x s=0x%x l=%d %s reference (%d) to subpattern that was not usedreference number greater than the number of subpatterns (reference %d, subpatterns %d in pattern "%s")reference cannot be negative (encountered %d)$ in replacement denotes a reference and must be followed by an integer (found %c)regreplace: p=%s r=%s s=%s o[0]=%d o[1]=%d regreplace(pattern, replacement, subject [, limit])#Mp,,,,DXl% P ? P a >VMEXEC|MCSTAT reset_compiler_status VMEXEC execute end execute(0x%x) (now %d items on DATSTK) VMEXEC|VMREAD execute: next is pc=0x%x, *pc=%s VMEXEC|VMREAD execute(0x%x) (to start, %d items on DATSTK) CALSTK end call %s (level %d) (datum at 0x%x, pushed to DATSTK %d) func/proc/procmacro '%s' neededCALSTK|DATSTK call %s: frame level %d call to %s %s nested too deeplyfunc/proc/procmacro needed, found %sSYMTBL|DEFNET change_targets %s internal error: change_sources()SYMTBL|DEFNET change_sources %s VMOPER|VMREAD|SYMTBL|DEFNET related_by_code VMREAD|SYMTBL|DEFNET related_by_code_runtimelhs VMWRIT code %s to location progp=0x%x EVAL error : unsuitable usage of eval syntaxstack underflowmuldividenegatelazy_notconcatconcatoptjmpjptjpfjpntjpnfdduppopdpushUNDEFpushintconstpushcnv_2_booleqswitchcodedefinition_runtimelhsassigninc_asgndec_asgnpre_incpost_incpre_decpost_decnoupdateresetupdatelookup_addresslocaladdrindexcalcmakelistgetvaluesellistsizeappendinsertdeletequerybitandbitoreagerfreeheapevalrelated_by_coderelated_by_code_runtimelhs0x%x (%d)CALSTK|DATSTK ret_call %s %s starting: args %s %s ending: return DATSTK push DATSTK pop (DATSTK now %d) VMOPER|CALSTK eval : CYCLIC DEFINITION: ABORTEDprogram too bigVRWRIT codeswitch no. of 'case' overflowtext buffer overflow@%f%c],D566777T0T0T0BBBB(BCEEchanged = %d) MCSTAT|FQUEUE|AQUEUE reset_eval FQUEUE schedule %s AQUEUE schedule %s MCSTAT resetLock VMOPER|MCSTAT|FQUEUE eager SYMTBL mark_changed(%s) end hptr=0x%x heap overflowstart hptr=0x%x HEAPAL getheap(%d) VMOPER|HEAPAL freeheap input buffer overflowautocontinueifcasedefaultprocprocmacrosendClientsendServerpropagateaddAgencyremoveAgencycheckAgencyFALSETRUEOFFMOTIONENTERLEAVEpropagateTypeEveryOneAllowedsynchronizehigherPriorityqueryObsrenewObscartCARTlabeltranslinecirclerectanglearcPIintersectparallelperpendbetweencolinearintersectsseparatesincludesdistlargerdistsmallerdistmidpointsqrtasinacosatanlogexpincidentellipseDD_randomrtosdotxdotydot1dot2dotraddotargpolarrotscalevector_addvector_subpt_addpt_subtractscalar_multscalar_divscalar_modsysClock%lf%x%oFloating-point format error_scoutScreenInitOpennotationGetnotationSwitchnotationPushPopnotationChar('\'');notationChar('%c');notationChar('\\');notationChar('#');single char expected%s %d%sunexpected end-of-file in /* */ comment%s: Can't find scoutScreenInitOpen: do you have the correct -l setting? notationGet: called when currentNotation != NEWOTHERunexpected end-of-file in string constantunexpected end-of-file in character constantexpecting string, char or integer for virtual agentparameter with illegal type passed to C-lib function (got %s for parameter no %d)parameter with illegal type passed to C-lib function: (got %s for parameter no %d)VMOPER|DATSTK add VMOPER|DATSTK sub VMOPER|DATSTK mul VMOPER|DATSTK divide VMOPER|DATSTK mod VMOPER|DATSTK negate VMOPER|DATSTK lazy_not VMOPER|DATSTK not VMOPER|DATSTK concat VMOPER|DATSTK concatopt VMOPER|DATSTK jmp jpt (loop construct)VMOPER|DATSTK jpt jpf (loop construct)VMOPER|DATSTK jpf jpnt (loop construct)VMOPER|DATSTK jpnt jpnf (loop construct)VMOPER|DATSTK jpnf VMOPER|DATSTK and VMOPER|DATSTK or VMOPER|DATSTK bitand VMOPER|DATSTK bitor VMOPER|DATSTK ddup VMOPER|DATSTK popd VMOPER|DATSTK pushUNDEF VMOPER|DATSTK pushint VMOPER|DATSTK constpush VMOPER|DATSTK cnv_2_bool VMOPER|DATSTK gt VMOPER|DATSTK lt VMOPER|DATSTK ge VMOPER|DATSTK le VMOPER|DATSTK eq VMOPER|DATSTK ne : CYCLIC DEF : ABORTED'=':VMOPER|DATSTK|SYMTBL assign +='+=':-='-=':++ (pre-inc)'++':VMOPER|DATSTK|SYMTBL pre_inc ++ (post-inc)-- (pre-dec)'--':VMOPER|DATSTK|SYMTBL pre_dec -- (post-dec)VMOPER|MCSTAT noupdate VMOPER|MCSTAT resetupdate MCSTAT|VMEXEC|SYMTBL update indexing into list/stringVMOPER|DATSTK indexcalc VMOPER|VMREAD makelist HEAPAL|DATSTK makearr(%d) VMOPER|DATSTK getvalue VMOPER|DATSTK sel VMOPER|DATSTK listsize VMOPER|DATSTK|SYMTBL shift VMOPER|DATSTK|SYMTBL append VMOPER|DATSTK|SYMTBL insert VMOPER|DATSTK|SYMTBL delete query (?)%s %s%c %s%s ~> [, %s%s=%s is%s /* current value of %s is */VMOPER|DATSTK query index out of range (%d is outside the range %d...%d)type clash: expecting %s (in %s, got %s)type clash: expecting reference to variable (in %s, got %s)type clash: expecting reference to variable (in %s)type clash: number type required (got %s)division by zero (trying to calculate %d/0)division by zero (trying to calculate %f/0)division by zero (trying to calculate %d%%0)type clash on negation: number type required (got %s)type clash: lazy not: expecting %s (got %s)type clash: logical not: expecting %s (got %s)type clash on concatenation: expecting strings or lists (got %s and %s)type clash: eager logical and: expecting %s (got %s and %s)type clash: eager logical or: expecting %s (got %s and %s)type clash: bitwise and: expecting %s (got %s and %s)type clash: bitwise or: expecting %s (got %s and %s)type clash: convert integer to bool: expecting %s (got %s)VMOPER|DATSTK|VMREAD|VMEXEC switchcode VMOPER|VMREAD|DEFNET definition %s definition_runtimelhs (adding definition)VMOPER|VMREAD|DEFNET definition_runtimelhs %s %s %s is %s, not a read/write variableVMOPER|DATSTK|SYMTBL inc_asgn VMOPER|DATSTK|SYMTBL dec_asgn VMOPER|DATSTK|SYMTBL post_inc VMOPER|DATSTK|SYMTBL post_dec VMOPER|VMREAD|DATSTK addr: %s VMOPER|DATSTK|SYMTBL lookup_address: %s VMOPER|VMREAD|DATSTK localaddr: %d index error: data isn't a list or string (when trying to find item with index %d)index error: list or string required (got %s, when trying to find item with index %d)reference to undefined variable %s (turn these notices off with eden_notice_undef_reference=0;)zero sized list found in 'shift']; /* %s last changed by %s */ IDlist nowaddID: not adding id=%s addID: id=%s addID: id=* refer_to: sp=%s, Q=builtinC-funcReal-funcvar???string neededunknown data types = type(expr);i = int(expr);f = float(expr);c = char(expr);c = str(expr);Ӻdata = _type_convert(data, "type");:;<=>?[\]^_` ``@`  @ -;@FLl8888QEEQQEhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhthhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh0hhhhhhhhhhhhhhhhhhhhhhhhhhhhhpopppppppppppppppppppppp&\fpppppppppppppppppppy]Ht``hh````````<````````````````````````````````````````````````lll`````04444rb ,:::::T:::::::::::::::::,:,,:::::::::::::::::::YCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC+CCCCCCCCCCCCCCCC{CCC3CCCCC;CCCCQ}4Z,@O<<auuuuuu  0v0,P<w5yTTTTT%alphalowerupperalnumasciicntrlgraphprintpunctspacewordxdigit3.9 02-Jan-2002\ at end of pattern\c at end of patternmissing )invalid condition (?(0)nothing to repeatunknown POSIX class nameunknown option bit(s) setregular expression too largeunmatched parenthesesinternal error: code overflowfailed to get memoryparentheses nested too deeplymissing ) after commentmalformed number after (?(assertion expected after (?((?p must be followed by )erroffset passed as NULLunrecognized character follows \numbers out of order in {} quantifiernumber too big in {} quantifierconditional group contains more than two branchesunrecognized character after (?<unrecognized character after (?internal error: unexpected repeatrange out of order in character classmissing terminating ] for character classinvalid escape sequence in character classPOSIX collating elements are not supportedlookbehind assertion is not fixed lengththis version of PCRE is not compiled with PCRE_UTF8 supportback reference to non-existent subpatterninitscrwaddchwaddstrboxclearokwclearwclrtobotwclrtoeolwdelchwdeletelnwerasewinschwinsertlnwmoveoverlayoverwritewrefreshwstandoutwstandendnoechowgetchwgetstrnorawnewwindelwinendwinwinchleaveokmvcurnonlscrollokscrollnocbreaknocrmodefprintfsprintffopenfclosefseeksetbuftracesrandatan2log10powsinhcoshtanhstdscrcurscrstdoutstderr($Id: main.c,v 1.53 2002/03/01 23:47:43 cssbz Exp $@    $Id: runset.c,v 1.9 2001/12/06 22:48:41 cssbz Exp $$Id: symbol.c,v 1.11 2001/07/27 17:56:37 cssbz Exp $$Id: symptr.q.c,v 1.8 2001/07/27 17:57:16 cssbz Exp $$Id: entry.q.c,v 1.10 2001/07/27 17:28:43 cssbz Exp $$Id: yacc.y,v 1.19 2002/07/10 19:26:05 cssbz Exp ${$Id: builtin.c,v 1.47 2002/07/10 19:22:18 cssbz Exp $rH,wHhH`H`H0HHHH,HH I0I'I5Il;IBItII$QIdu^YIJD><uI {IIMINIIHIIII M I ,I,I,I$,I,,J J< JJ#J+J3JD;JlDJ< MJ&XJ _J` fJpJ` vJJ|~JJJJJ$JlJXJtJJ4JJ Jd+JlJ$Id: code.c,v 1.24 2002/03/01 23:45:10 cssbz Exp $fHy fyU^I_ImI9dDdOdYdcdpd|dddddddddddduI{IIIIIIIIMIIIIIJJJJ#J+J3J;JDJMJXJ_JfJpJvJJ~JJJJJJJJJJJ' JJddddde eee>I^YIe&e/e7e?eHeSe]efeqe}eeeeeeeeeeeeeeeeeeeeeeeeefff"f.f9fDfHHH II'IJJ+=(++7-=)--8//4==0!=1~>'>=2<=3&&-||+bf n r t $Id: lib.c,v 1.7 2002/02/18 19:29:51 cssbz Exp $$Id: machine.c,v 1.22 2002/07/10 19:24:49 cssbz Exp $$Id: refer.c,v 1.8 2001/07/27 17:52:39 cssbz Exp $$Id: type.c,v 1.19 2001/12/06 22:50:22 cssbz Exp $`YI^JY I au*d/d Wu _u fuputu "F(.4:@Ep  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~>~~x$Id: custom.c,v 1.8 2001/07/27 16:44:15 cssbz Exp $:BIQ UD]Td`nlxx‡̇؇և ݇,8P\ht  )20;9BJp' JP$JR X_Pe`l_hLJ0rPeСeepeepeex@e e~PН P$Id: curses.c,v 1.7 2001/07/27 16:42:42 cssbz Exp $ 8 H  0pȖHo ooޔ4fvƛ֛&6FVfvƜ֜&6FVfvƝ֝&6FVfvƞ֞&6FVfvƟ֟&6FVfvƠ֠&6FVfvơ֡&6FVfvƢ֢&6FVfvƣ֣&6GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-49)GCC: (GNU) 3.2.3 20030502 (Red Hat Linux 3.2.3-46)xdZ*p9Eb,8>tG|OQj q Ts9oS|F@ nlstatus print_promptJ print_prompt_if_necessary wouldBlock notationTypeToStringE topEntryStack] pushEntryStack popEntryStack clearEntryStack pushMasterStack popMasterStack clearMasterStack topMasterStackb errorCompletev errorContentf appendHist noticef(warningfmwarningerrorfWyyerror}Control_CcheckRunSetqueueeden_init>terminatefrun_initrun4user_traceYsetLibLocationprintUsageprintVersioninit_eden7initreadlineKmainemalloc_perealloc_p libLocationprogname0startBstartValidTgargvfgargcxautocalceden_error_index_rangeeden_notice_undef_referenceeden_backticks_dependency_hackinterruptedstartupargcstartupargvstartupcwdInput_Devices0Inp_DevHInp_Dev_Saveprompt1promptsemipromptcharpromptcommentprompteden_prompt_sympreprintednlstts4TopEntryStack)initRunSetSclearRunSetwgetActionrmActionaddAction,printRunSetemalloc_perealloc_p @SEARCH_symptrDELETE_symptr_ATOMMOVE_symptr_Q(hashindexZlookupinstall!SEARCH_entrylDELETE_entry_ATOMMOVE_entry_Qsearch_local add_local_variableB insert_level_marker init_LocalVarList delete_local_level printlocal local_declare5 lookup_locall dispatch patcha emalloc_ps erealloc_p hashtable break_q cont_q*markGarbage unmarkGarbage;incGarbageLevelNdecGarbageLevelaclearGarbagedefnonly%setyyparseinitLyyparse emalloc_p erealloc_pB yycharT yylvalf yynerrsx yydebugU9(usagedebug0 inpdevlinenoT inpdevnameR _eden_internal_dirname _eden_internal_basename _eden_internal_cwd _eden_internal_cd( gettime inttime finetime~ f_eof get_char fget_char-file_statget_stringBfget_stringunget_charscan_f:fscan_fsscan_fsubstrsublistprintNprintstdouttwritelnb_writenameofscat^lcatb_exitexec_stringfexec_fileapplycsymboldetail,symboltextsymbolssymtbl2listprinthashforgetGpack{arrayuser_errortouchget_environHput_environzerror_nobackgndEpipe_processipopenipcloseHfdreadyrawread rawwriteN rawserialopen rawserialclose rawserialread4!usbhidopen!usbhidread"usbhidclose"regmatch$newStringBuf_$reallocStringBuf$freeStringBuf$replaceRefs%regreplace&todo 'get_msgq!'send_message5'receive_messageI'remove_msgq]'realrand'Debug'emalloc_p'erealloc_p*(blibtblf(Input_Devicesb-reset_compiler_statusinitcodestack_overflow_errstack_underflow_err[disAssexecuteret_callcall( eval change_targets change_sources` related_by_code related_by_code_runtimelhs= codet codeswitch addentry saveprogT push_text savetext code_definition{ code_definition_runtimelhs'code_evalcode_related_byLcode_related_by_runtimelhsevalDatumpushpopemalloc_perealloc_pUndefDatumprogpprogcompiler_flagentry_ptr3entry_tblVstackhstackpzpcframefpinsttbltextcodetextptr>t schedule_parents_ofGresetLockZeval_formula_queueinvoke_action_queueAeagerhchangemark_changedformula_listfaction_listreset_evalVemalloc_pherealloc_pformula_queueaction_queueV|getheap.freeheapemalloc_perealloc_phptr heapchangeNotationCmakedatuminit_lexl builtin_ft_checku scoutScreenInitOpen notationGetd notationSwitch/notationPushPopyylex5fullPromptmrl_getsrl_getc_wrapperrl_getungetcrl_getc_wouldBlockappend_linebufkeyinUflushRestOfLinepeekemalloc_perealloc_pcurrentNotationInput_Devicesnextc8yytextJyylenginEVALagentNameagentTypeappAgentNameappend_agentName$append_NoAgentName6inPrefixGcall_libcall_floateemalloc_pwerealloc_pVTfreedatumnewdatum6newhdatout_of_range_errormustintmustchar!muststrRmustlistmustaddraddress_errorget2numaddBsubwmuldividemod negateF lazy_notl not concat concatopt jmp jpt jpf1 jpntc jpnf and or bitand3 bitorh ddup popd pushUNDEF pushint constpush datacmpv cnv_2_bool gt lt geMleeqneswitchcodedefinitiondefinition_runtimelhs"assignfinc_asgndec_asgnpre_incpost_inc:pre_decopost_decnoupdateresetupdateupdateaddr@lookup_addresslocaladdr8indexcalcmakelistmakearrgetvaluesellistsizeshift*appendxinsertdeleteTqueryemalloc_p)erealloc_plprintlistaddIDBclear_IDlistUsave_IDlistrefer_torefer_bycheckok1checkok2/checkoksready emalloc_perealloc_p/IDlistAlastNullInIDlistSautocalcS> ,ctosetypenotypenamet_type t_intt_floatVt_charzt_strt_str15t_superemalloc_perealloc_p|pcre_versionpcre_info@pcre_fullinfopcre_compile9pcre_execypcre_mallocpcre_free`@@`install_custom_variablesemalloc_perealloc_pilibtblrlibtbl _eden_initscr"_eden_waddchX_eden_waddstr_eden_box_eden_clearok _eden_wclear4_eden_wclrtobot^_eden_wclrtoeol_eden_wdelch_eden_wdeleteln_eden_werase _eden_winsch< _eden_winsertlnf _eden_wmove _eden_overlay _eden_overwrite _eden_wrefresh> _eden_wstandoutg _eden_wstandend _eden_echo _eden_noecho _eden_wgetch _eden_wgetstr _eden_raw7 _eden_norawN _eden_newwin _eden_delwin _eden_endwin _eden_winch _eden_leaveok@ _eden_mvcur _eden_nl _eden_nonl _eden_scrollok _eden_scroll _eden_cbreak6 _eden_nocbreakM _eden_crmoded _eden_nocrmode emalloc_p erealloc_pd_"035inth;0g0E{ 00"a <  <E .A . Z## #,#  ##?#V ## #$#(.#,#0_#4 Z#8#Z#<%#@w)>#D *L#F;+#G//#H8#L}>#T?#XAZ#\C5#`7 +   # # SZ# /  E 3"Lg g# wE P?w x# y#F G# H#+7N K#  N& ,Z c% *#  +Z# 6 ,w#-n ~, nX %  &o# } '>#  )#  -# M .# /z# # 0#  1o#  2>#( 4#, H 8#0 C ;#4  F#8  G#@ ` H#H c UE#P m VE#TInt Z   H  L ##  $S#  %# M &0#  '#d 5# m 6K# ( 6K#, 7V#8 9#< :#< ;#<  =#@ E#D   # )S#u 4#~ r +i ,Zs -a .sym /v 3gE g E# E#obj #  aK 3x 1Z#y 2Z# ]g V0# W0# X0# Y0# Z0# [0# \0#5 Ts ]all ^ZZt adp b#ip c#  sp # x # # M #  # Z5* L# #  s #  #  # c '  Z#   #   #' , y Z  L#  #n   L #  #  ! #({  R L# #S#ptr# ; # _  #  Z# .Z# Z# l Z# 5 Z#$ Z#( WZ#,  #0 4 c#4UJ sUS tt?U ZS ZV ̥ T Z! L Z" T Z@U#~$fdZS#$~!# ZQ#ZW"E J6U%n6! R&OZ2U' V4AU%mU! S(iDU(uͨU' ШU%mR(H©U(ĩөU&ԩU)4 U%t4 E*b hU%t4 R(fU' ? :U%fmt+b~'  <AU,'DU%fmt+b~#c } ( 'm&2U%fmt&#c '}+b)~'X:4LU%s9%t9 'W4@LU%fmt@W-VA-B-wC-tD-E.FZ+ GZ$iGZS+H+ H#c IS+bK~'}ŮU%s'Ȯ2U%sigZ' 4U$a ! h' eU%cmdd,d '>pU-_r$isZS$stR'fU,oZ'+U%pcP/runZ,U,#S~%ptrV,L0EG#V# ~#ZS.Z-1;2#jH3cZ2Z4J Z142Z# ZS޵#S ~56P6!R7i$pS$nZV  8.sZ9rZ9Nr.'Y(dU$pe S'nU, mV#?oS$cwdpS:_.U(0U'5KU#o V+L#}# &y & 7;(LjU":ZldU,ZS, y W$op!P#4#ZV#x%Z^.). +Z-.-.#X/ W#L0V$s1P<L#O^p+Y^%+^%7+)^+ ^Z +Ye%+e%7 +)e+ eZ!+Yj%+j%7!+)j+ jZH+6+Yq%+q%7+6+)q+ qZ7# sV# sS$inpsP#sQ$csR ;c  2 = =N = > <=P Z>.D= =m _= d S5?= dH k?=! `=  ?= @fp  ?=_.@  ?=  ?= =^! >`T>C d >fc`>gZX>iy @>jZ,>k4>Ql>x p$>ft8>yZ\>{ZH>|y P>)}( , >h!@>B`, >BdARS1c ARS2c ARSc >h>Tl>+ p>vt>L>î0>Zx>. Z|#%IZBJZ#KYZ#Z# Z#y Ī#2E#Z#CE_d int35,"]< s# # #  '   3#  # #' A.  3# # # ,# # # ?# V # # #$ #( .#, #0 _#4 3#8 #3#< %k#@ w)A#D *O#F ;+#G / #H 8v#L }>#T ?#X A3#\ C#`   # # S3#   " 3M- dUrsMSw UrsMS &Urs%MWptr'Sa(X$ 6Urs5MVptr7S, CaUrsBMSsB BPh SdUrsRMPptrTSnU3V x 3hP 3N <.D 9p 35int o" V<(A. O# # #, #   # #? #V # #  #$ #(. #, h#0_ n#4 O#8 #O#< %d#@w )3#D *A#F; +t#G /#H 8v#L} >(#T ?(#X AO#\ C#`  h h#  n# S O#1  *  3    H L## $H# %# M&%# '#d5# m6O# (6O#, 7Z#89#<:#< ;#< =#@ E#D  #)H#u4#~r+i,Os-a.sym/v3kI  g  I#  I#obj # eO3x1O#y2O#]gV%# W%# X%# Y%# Z%#[%# \%#@Ts]all^O eUQeSobjVnOQPeP YUQePAZS8 (\U 'eQv 'eS#({Z +OUs*Ri,OQ 7Us6Vsp9Sf HUsBstBOPtBOiBOP{ Ifq JOPspKSLOMA NvOK` PO: QOR RO v     Lֈ# nH#numH# ۆe  g  #  #obj #  l UQWobjhnOVPS UQPAS" (U 'Qv 'S S  ULVASB   UL ES FV! q U"nO ES#0 A!R$)7U!  18U"n0OV%E2 Q3S! / ;U E<S&5  EO>U"LDS EFP&l  PO@U"LOV EQS!  `U'p_P'Q_eS( AaZR!  fpU"F eW'pep'QeeV AgZP iphS  4 nNnnP O) (<) .(Dm _ 5K   ){ 3f` 5  `*K [O* \OTp int35,"]<Int3     H L## $V# %# M&%# '# d5# m6e# (6e#, 7p#8 9#< :#< ;#< =#@ E#D   #)V# u4#~r+i,3s-a.sym/v3 A. 3## #,#  ##?#V ## #$#(.#,#0_#4 3#8#3#<%k#@w)A#D *O#F;+#G/#H8v#L}>#T?#XA3#\C#`   # # S3#(3 _  g  _#  _# obj #(( {e3 x13# y23#5] gV%# W%# X%#  Y%# Z%# [%# \%#VTs]all^3{ta dpb# ipc#; 9# dp:# ;{@ ># end?#Y @  SpdU QRdpRR; gdRUeRendfR xT_U2~`kUC lTUi3Wj3R !3V TUsdpsymfunsw VM L4U! 3P" W3U!V3#lex$ y$BR$$ I$: $ P$F$} $!($ a$ a%[3p&IP%  l'g  % 3V(e&%t S()p}P&h)pP&)pP(7)c (@)iX3S&g * 3 +% 3V)msgV)x3S%#3W*O 3 +,3 ( % S-B,3 V 2 .P 3..N./ </.D..m _5.d.i-b 0.-W .K .e. .eB3C3 D  E t F3$ G3 H3. I3.J& 3.fK& J 1:[ `9 p p V  `  p 1%$   p %5   % K    p %](  # = p % oO `$- e p 1%P w %T  p 3%  '|  p 1%  `(  p 3%  *  p 1y%*  + + p 1y% =  8 / 3 /m / 3/2 3% 3%$3)yyn%3%, & % ' %U(3%a)3 V% +:% ,*%. % / % ;3%q<3% G%K3į(  ,="035inth;0g0E{ 00"aZ <  Z"<E .4A .  Z#  # # , #  #  # ? # V #  #  #$  #( . #,  #0 _ ##4 Z#8  #Z#<  %#@ w )>#D *L#F ; +)#G  /9#H  8#L } >#T  ?#X  AZ#\  C?#` 7  "   #  ## S Z#49"O"3n"L| |#Ee?w x# y#F G# H#+7 N K #N!X %  &o# } '>#  )#  -# M .# /z# # 0#  1o#  2>#( 4#, H 8#0 C ;#4  F#8  G#@ ` H#H c UE#P m VE#TIntZ 7=D OU- H L## $S# %+# M&0# '#d58# m6# (6#, 7#89"#<:"#< ;"#< =#@ ED#D8_  #)S#u4_#~r+i,Zs-a.%sym/Dv3  g  #  #obj D# 3x1Z#y2Z#-, spD# x+# %# M# # 1* L# 7# #({ =7,0T0<  # a! # " # # # $# %# &&#4 4'#8V UsU4 t lUP Z& Z> % *#  +Z# 6 ,#-I Y  * R L# #S#ptr# ; # _  "#  Z# .Z# Z# l Z# 5 Z#$ Z#( WZ#, * #0 4 > #4T {lUd-h Ud-htS  9 : :Z#  ;Z#R tm, Z# Z# ,Z# RZ# Z# $Z# Z# Z# rZ# _#$ !#(  U VOSd-X /U VOS d-X $0U cwd%V d&-XO'S!{7U F{U secG-h minG-X/G-HUG- monG-'G-G-)H SIZ"TZ  Z|U/[-h\Zd~ dU/e-hbe-XfHg P"lZ *qU dr-hs P) CU d-h# $*Z-B#U d-h P$iUS buf&%retZ d-&}'(P)@"Z*fZ+hd+Ne&BWlWU d-XS tS sVOZQVXsU d-X nZV SP tS sTItU cZS, *1U d-h arg* iZV/S:4U d-X arg* iZV W/S7U d8-X arg9* i:ZV str;W/<SU"U dV-XWZS toWZW lenWZT iWZP sXD tXP strXP-Y-.-s$U at%W iuZSGuZTuZP touZL/"ZNU0d-0f V1ZS iZWtI:U0d-!<SUs TU i ZVsU d-X-H sSLV^)tbU d*-X i+ZV len,ZT s-W-.-.-@d,U iAZp jAZSAZlGAZP aB%W"LZ%Q,eU2R.Zf[h_U \ZS d]-h n^V3Urun_Z.S.."7kZw`jUXx VLyS dz-X {ZT3run|Z.S.. i}ZP n}ZL!lU4cEU0QW#ZV d-X AS"Z!HU5{ !6 Z.77 spDS d-hLV iZP7 Z),Y%,%,D8U5{ 6k Z.77 spDS d-hLV iZP)|,Y.%,.%D8EU5{ F7BGZ spHDS dI-X pJ%T#K!V iL!P anyM!M!L#M!H9Bi,YR%,R%)Bi)RR RZP)t,YS%,S%D8ftU5{ u6D7v.Z spwDS dx-X py%T#z!V i{!P/"ZD8@U5{  spDS iZVD80U5{ 62 Z.55:h.D. d-XiZV sV spDS DW iZT QR)hv,Y%,%D84G  U0d -1t )a   n$!W i$!V{i5  U mem6S d7-h@  U nA!S dB-h"TZ!Y ^ Ug`  U: h.D;i ijZVH6v ` U dw-h sxPz[`  U d-h sS 9 U d-h?< U pidZP d-X p%TZP iZS ?L9$ * f S)}"ZgU pidZV d-X p%LZH iZS ?DP) "Z U pid ZS d -X p % Z i ZS ?,PZV{ZSL%s%t7WFZ7LZ7Z)"iZH|U%rfdZ wfdZS efdZVtCU fdZ| secZ|bZ|EZ| retZP#"|~}|| tv| tvpP d-|9D Z|ZW9p  Z| ZW)  ZQ ZW s% DlU s& W t& S fd' ZV' ZS( OV d) -XN G l.U%fdH Z sI RJ %P nJ %W Za 0}U,b  fdc ZS dd -h newe  rf ZP  U%fd Z4! +U s W t S fd ZV ZS OV d -Xs!h ,U,  fd ZS d -h!( )# #*># o+># 6,0# "/ U fd ZS ~ tv ~%tvp  %P ev s!~ d -~9]".  ZQ ZW$s ?st #?lu Z#@v #AY$Tx Y$"#U1x ZW resy Y$V lz ZS$$ #$U0sb Y$W1 ZV l ZS ZR$ $,%U0sb Y$SA% Y$,%&U1 S1}#  1h 1G %0rc Z n Zp i ZQ rp S  Y$Wn Zl h Zd/h" ZZ& &a+U re #~ ~ Z~G #~ rc ZV%i Zh ~}# ~ ~U Z~# Z~, , Z%s  t V d -~ si Z~ Y$~ Y$S ' d+ ,U2  ..!]  ,,U! ,,U!o ,!,U! $,),U'4 ,,,U d -h'"5'@ #N # #BP mZؖB <B.DQ-Cfp* *(JB_M( 2 nZf(Y Bh!V(@#(Y ) G,35into"V<(A. O## #,#  ##?#V ## #$#(.#,h#0_n#4 O#8#O#<%d#@w)3#D *A#F;+t#G/#H8v#L}>(#T?(#XAO#\C#` h  h# n# SO#1  *  3 IntO   H L## $H# %# M&%# '#d5# m6Z# (6Z#, 7e#89#<:#< ;#< =#@ E#D  #)H#u4#~r+i,Os-a.sym/v3vT  g  T#  T#obj # pZ3x1O#y2O#*]gV%# W%# X%# Y%# Z%#[%# \%#KTs]all^Optadpb#ipc# sp# x# # M# # pKwY,,UZf,-Up -7-Uv8-q-U[ L# #yt--UdRiOPȯ  -.UpVSOV./UiOVHOZ/f8UspW  S!o"!"iOVdX@O# O$#7O%O&021'H$1# 7'O%(O&L11( ~&gY22'~&D55'&6c6'&6C7')88X87O*+d,O-( pop.d,O/ Nh8:U0Oh0lPX&y {88( & 88( H1%7eO/ !m:;U2splS30lpV4 7n""p5AopS/` f};;U2sp|S30|pV4Q ~""p6@O/ ;5<U7 ^O""p5spS00pV/= 8<=U7 ^O""p5spS00pV0h#& O8M<<( H9t o=>U2fV0S/ >>U2tblS5ipR0V5tW/ U>>U2dpR2ipQ9T >|?U3MS3sV0 OW5pQ5qR/ ,|??U3)2len)OS9 5?L@U34S5s7P9{ DL@@U3#BO2idB 3aC3CS3MC3C0MEV0sES:F00GpW;Gp9'l@RAU3#iO3aj 3jS3Mk3k0MmV0smS:n00opW;op9TA8DU3a3 :M:s:5dpV5dX5sP5iOW# O# O8AA( 9LI8DmDU2sp;p00pV5ipS<.pDDU;p00pV5ipS/D FU2d5s25iOV  O= FFU')LFF>=?FGU( h)0GG>  O 2?nNnnP O? (<?.(D??   @??m #*R ?*$ 3K ?)#@ V@?!E"?R Apc!Z   c?%R Afp& Mˈ 2 =?Y@ BC%RCi&0xOG35into"V<(A. O## #,#  ##?#V ## #$#(.#,h#0_n#4 O#8#O#<%d#@w)3#D *A#F;+t#G/#H8v#L}>(#T?(#XAO#\C#` h  h# n# SO#1  *  3 IntO   H L## $H# %# M&%# '#d5# m6Z# (6Z#, 7e#89#<:#< ;#< =#@ E#D  #)H#u4#~r+i,Os-a.sym/v3vT  g  T#  T#obj # pZ3x1O#y2O# ?G\IUsp>SP@eQQApV7WOA{eRG \IIUvPeSQpVIIUIKUvOQpVspSA{ KeLU Z!vO"QpV"spS"dh#O$hu+hLLU%,OS$CL,MU&spBS'v BOV(D% ES$j,MMU&spiS"PkpS"QkpV$fzMNU%#{OV"P|eS"Q}pW)NO*MM"dX$NzNU"PeS"QpW%#OV)O*4NTN"dX$|NOU"PeR"QpS  2+@,n,Nn,n,P O- (<-.(D.pc-Zt- Z+Z OxQOint 7=D OU- HL##$#%#M&# '# d58#m6O# (6O#, 7Z#8 9#< :#< ;#<=#@ ED#D8_ #)# u4_# ~ r+ i,% s- a. sym/D v3k   3   5   "  <A. %## #,#  ##?#V ## #$#(.#,#0_#4 %#8#%#<%#@w)#D *#F;+#G/#H8#L}> #T? #XA%#\C#`  ##S%#3I  g  I#  I# obj D# eO3 x1%# y2%# -,  spD#x##M# # .$OWPU #%Vp%tLXPQUQ2AP %N  <. DfpMZ  xZ 9qQa"035int z" a<E.>A. Z## #,#  ##?#V ## #$#(.#,#0_#4 Z#8#Z#<%o#@w)>#D *L#F;+#G/#H8#L}>>#T?>#XAZ#\C#`F   # # SZ#R  K  3 # E & Z ? %  *#  +Z# 6 ,# -J Z IntZ pv} f H L## $S# %o# M&0# '#d5q# m6%# (6%#, 70#89#<:#< ;#< =#@ E}#Dq  #)S#u4#~~r+bi,Zs-a.isym/}v3A  g  #  #obj }# ;%b3x1Z#y2Z#fe]gV0# W0# X0# Y0# Z0#[0# \0#Ts]uall^Z;tadpbi#ipco# sp}# xo# i# M# # ; dp isym } o Zfun esw  M <#({ R  L # # S#ptr # ; # _ #  Z# . Z# Z # l Z# 5 Z#$  Z#( W Z#,  #0 4 ?#4CDQ)QU<Pi,QQU#ZP6SpiRQRU cZP!ZR,RU",RwRU#\ 6ZxRRULW a L# gZ#$\ @iZS%RR&Y%&% l   ` ZRSULƓW ' Lʓ#$   iZS%RR&Y%&% # ZSVWUiZdrbhmZWnZ`eZ\$QZX$/ߓW$ZZVuP' TT( ' TT( ( ( ) "~Z*}@) <z*:@*:*;Z+ ZXWZU,B  }-,j  }--Z-Z-Z,   Z-,  !Z-.i"ZS.sp#}P/$S+9 qZZ[U0 u1c1s#1c2s#tZ#.tabu9 /0u?  O 2[=\U2@\\U3 .\)]U/}V4C 5 Z%\]6ZZ7d ,]]U.retfh5 Z5+ Z5? ZZ5S HZ6Z7/RZ]n^U8sP.dfh.retfX9t44Z5 Z5 Z5 ZZ5HZ6Z37p^_U:Z.dfh.tS5Z5Z5Z Z6H Z;F_`U9s$/%ZS%_`/J8F~.c9ZP<* =runoZ%p``=runZZ V c;`aU:.iZW.nZV.sS/   75J ZajU>Ba.sS.uh' @dSd( ' @dSd( ( ( ?mt jkU/%uS/uV?kkU/S4}@ZkXlU?lZXllU9cZ@L ZllU3SlBmU8cS7U>ZDmnU.cZS/XS3(nnU/X)p.c*ZVAT +Z7eZnpoU.cfZS/XgS;*DpoqU, }-.sp}P/{/R : 1$*BBNBBP ZC ><C .>DBm _Bm .C~<0 G Ch !@B #Gbof*ZC+Z 8DC7,'Z)C-ZB1B1BT2B+ 2Bv2C 8ZB;Z  CA @j)  CAZ)C@BZ C: CZ$CR DZ(CEZ,$3Y' /oZ/y/bZ/ W"sq|Int0int BHO Z`8 H L# # $# %# M&# ' # d5C# m6Z# (6Z#, 7e#8 9#< :#< ;#< = #@ EO#DCj  #)# u4j# ~ r+ i,0 s-  a. sym/O v3v35"<A. 0# #  #, #   # #? #V  # #  #$ #(. #,#0_#4 0#8#0#<%#@w)#D *#F;+#G/#H8#L}>#T?#XA0#\C #`  # # S0#3T  g  T#  T# obj O# pZ3 x10# y20#87  spO# x# # M #  # )qrU(7i*0j*0VA+ ,%Pw87@0 r,rdG80 LrsUK7AQ R[iS0SP7a0Kspsdh8* :0*@N <.Dfp-+#s"035intz"a<E.>A. Z## #,#  ##?#V ## #$#(.#,~#0_#4 Z#8#Z#<%o#@w)>#D *L#F;+#G/#H8#L}>>#T?>#XAZ#\C#` ~  ~# # SZ#G  @  3 IntZ   H L## $S# %# M&0# '#d5# m6p# (6p#, 7{#89#<:#< ;#< =#@ E#D  #)S#u4#3~r+i,Zs-a.sym/v3j  g  j#  j#obj #33 p3x1Z#y2Z#@]gV0# W0# X0# Y0# Z0#[0# \0#aTs]all^Z sp# x# # M# # aGs4tUdFiIZV6[4tuUdZ s\Pa]Wi^ZVKwuvUdv szPa{pi|ZWvvUiZlowZ upZvvUdS!vDwUdSRDwwUdSwwUdSwxUdSx-xUÓ5Z0xFyUdp1ɴSdp2ɴVBaddHyyUd1hd2Xwsuby9zUd1hd2Xmul#Xdp>Ti?WxQ,URhdpRVdSXaSSc,֩UdXdpdWdeHpeaeVifQposfSTO|ة.U}Xdp}Vp~Ha~iQposW)0UXspWPSQV'&&&Z  5.//N//P Z0 ><0.>D/Q/m _@/1pc1fpzZĞh*int35,"]<Int3     H L## $V# %# M&%# '# d5# m6Z# (6Z#, 7e#8 9#< :#< ;#< =#@ E#D   #)V# u4#~r+i,3s-a.sym/v3v A. 3## #,#  ##?#V ## #$#(.#,#0_#4 3#8#3#<%k#@w)A#D *O#F;+#G/#H8v#L}>#T?#XA3#\C #`   # # S3#3 T  g  T#  T# obj # pZ3 x13# y23#$UQ#pVP&eSB"0Uid/VhPhpRni3W0AseQAbeQZUp\TUAeSPpWQpVT:UspQp eSpVpWAeRAeR7<UspպQp id׺WepppSAeR AeR3UspWQpVidQPeS/3UspWQpVidQPeSs^!3U sp S Q pV! $3Wv>3U sp=P@eRQApQ2"P 3""N"# <#.D#Z#p #e4:  ,z35into"V<(A. O## #,#  ##?#V ## #$#(.#,s#0_y#4 O#8#O#<%d#@w)3#D *A#F;+#G/#H8v#L}>(#T?(#XAO#\C#`0 s  s# y# SO#<  5  3   H L## $H# %# M&%# '#d5# m6Z# (6Z#, 7e#89#<:#< ;#< =#@ E#D  #)H#u4#~r+i,Os-a.sym/v3vT  g  T#  T#obj # pZ3x1O#y2O# sp# x# # M# # , #H# L#e3bUd2 @s5PBDOdֶU7CWiEOS7RضU#QOSiSOR "_Ud`h#aHRibOP]uUdvh]T`p}T`}"~O}*<o:*:;O CUdh (*(=I*#yx*V65*5zEDUdh LUd֦h$LUdbuf$wV(OSOwiOw#Owd1w 5 !\zU"d]X"t^H"s_V"i`OS#a$  2@%y%Ny%y%P O& (<&.(D'fp  ,   " .| k"035intz"a<3A. Z## #,#  ##?#V ## #$#(.#,#0_#4 Z#8#Z#<%o#@w)>#D *L#F;+#G/#H8#L}>>#T?>#XAZ#\C#`97 F@W c >   # # SZ#jc3OPrJM!FE# G%#l#H3#IE#  J>#kK>##L#RM#oN#4"Q}/"!NT#U#%$yZ3@7JO/"V}AK#\lcc]A#fcc^A#!_A#`A# GK#at!HfgZ# ht# iZ#jZ# lcckA#lA#&m#Kn#"o# p#$9!q#(&"r#,bsA#0M tA#4y#uA#8-!vA#<DwA#@xZ#DZ!yX g # A#"N@|U*"mZU l*RpltQ#ltSren50;o ZU *R#SZV>Qre5G ruZ~Uu:KV!ZZcd{ptrAScZQiZW~I ApALUpAQcd{R46A  UpAS"tP.tP:Kcd{RminZpmaxZlwZ WUoPZ Zp: ZVccSXdZPopZP XUptrAQuPcd{RWZVV ?"Z UptrAlenZVs#ZS  4UZA!t S! u:K}tt y!t$cd{(C)![ gdQ"Z#ZQ ZZ3ZVZW.ZZZ"Zv!ZcZVo ptrA@!ADJ! H p;# Z Z~n" ZW Z~ Z CtcW setZ[Z'tR! <ZRe iZW"Z~lenZ~V J[ZP qZP ZPZQbraS ket(Q Ilen{ZR __sU> l dZ~ U YqucZPIA &!AR  "l~!#mZRimZQ!nAW } ZPw!ZRI, R4UOZV}OZ A!OtS!O Pu:PKP PZPQtWy!Qt,cdQ{0ptrSAhoTdSUSV`"W\P"XZX#YZlYZp8cZQ!AUoAQtWX#ZV!& Uo% AS% tVX!( AQop* ZRBJ  UoI ASp!L AQopM ZR[!n ZRUom ASm tWco ZVdq ZP!r APopt ZR" T*Uh @ Z : K" tl# 3_" [  !? re S Zw! ZWc ZS Zwy! Zw! Zwk Zw Zwx ZWj! 0w  %Vo wptr Aw= LX! y" wmin Zwmax Zw;# ZS Zwb  A 3 Zwch8 ZP ([! A& ZP Asset Zw[ Zw' tRyq Zwqr Zwas ZWchg ZPZ'PO ,UM ZR M AVM ZSmdM 'WimsN EpP AQz#3! U  A AW Zmd 'ims Ew # Z  #-#" ! E (op ZPmin ZVmax Z! Zi Zc ZSJ @ ZV! ZSXg AV A~ &V~ ZQ XppIA~ .pp)A~ KppA~ h<ppA~  HppvA~ S#YA~<ppA~lenZ Z~Z~pp@ASDprc~~ !tV!)j$ZS!%ZR g AV AS .v ZR v AS  AQ Z  Z  Z~9ZO"ZU *  }#@PZZZQt Z$"ZZW#ZRZ" ZimsE zA-! ASy#!Ay""A~re#59"$%~&' u!ktRRltP8rcZQ!tPRtRpARppZPCacZQ!!N"y> %#4i#Q8F$g T@vF$!UFvJS$n`v*@ $#KG $["\v;qq&Z$Z wa7%?$_# @<$:]$$35into"V<(A. O## #,#  ##?#V ## #$#(.#,h#0_n#4 O#8#O#<%d#@w)3#D *A#F;+t#G/#H8v#L}>(#T?(#XAO#\C#` h  h# n# SO#1  *  3 L# # O  L #  # $c:$~,#7#Ls$=H#m$=H#W$@H#$@H##AH##AH# CH# #F#/$G#$J #$K #%L #%M ##N #f$O ##P #$Q #$R # $SO#$UT#(5$XH#,L$YH#.F$\O#0$]O#4#^Z#8$f#<$hH#H#N# b$cH#y$cH#=$dH##dH##eH#$eH# *$N+_'U  3snNnn (<.(D  4   #oZ#pZ %;-%$int 7=D OU- HL##$#%#M&# '# d58#m6O# (6O#, 7Z#8 9#< :#< ;#<=#@ ED#D8_ #)# u4_# ~ r+ i,% s- a. sym/D v3k   3   5   "  <A. %## #,#  ##?#V ## #$#(.#,#0_#4 %#8#%#<%#@w)#D *#F;+#G/#H8#L}> #T? #XA%#\C#`  ##S%#3I  g  I#  I# obj D# eO3 x1%# y2%# -, FU$c$~#o#Ls$=#m$=#W$@#$@##A##A# C# #Fo#/$G#$J#$K#%L#%M##N#f$O##P#$Q#$R# $S%#$U#(5$X#,L$Y#.F$\%#0$]%#4#^#8$f{#<$h#H## b$c#y$c#=$d##d##e#$e# *$9%%UspRX%!%Uwin!Pch! `%"%Uwin"str" %$% BUwin#%#R*&#P %%%DTUwin%Pbf% 4G%&%T]Uwin&^%'%`iUwin'$(%luUwin(/')%xUwin)&*%Uwin* &+%Uwin+< n%,%Uwin,Pch, f  '-%Uwin- %.%Uwin.Py.%Px.% K'/%U&/P%/  &1%U&0P%0 > 0&2%Uwin2g [&3%Uwin3P s&4%Uwin4P&5%U%6% )U &7%,5Uwin7 &8%8MUwin8str8 %9%PYUT%:%\eU ,%<hqU#&;%P%;%Pk&;%P&;% ?&=%t}Uwin=&>%U #'?Uwin?@ %@%Uwin@Pbf@  &B%U&A%P'A%P'A%P{%A% &C%U!%D%U %E%UwinEPbfE  %F%UwinF&G%UL&H%U&N%U<'O%-U 3{ N  <. D #o #p% : ; I$ > $ >  I : ;  : ;I8 &I  : ; : ; I8 I !I/  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ; I : ; ( .? : ; ' @ .? : ; ' @ 4: ; I .? : ; I< : ; I   .? : ;I< ! U".? : ;' I@ #4: ;I $4: ;I %: ;I &.? : ;' I@ '.? : ;' @ (.? : ;' @ ).: ;' @ *.: ;' I@ +4: ;I,: ;I -.? : ;' < .4: ;I? < /.? : ;' I@ 0 : ;1.? : ;' < 2I3.? : ;' I< 4.? : ;' I< 5161 7 8.? : ;' I 9: ;I:.? : ;@ ;!I/<.? : ;< =4: ; I? < >4: ; I?  ?!@4: ; I? < A4: ; I B4: ;I?  % $ > $ > : ; I I  : ;  : ; I8 : ; I8 : ;I8 : ; I !I/ .? : ; ' @ : ; I .? : ; ' I@ 4: ; I : ; I 4: ; I 4: ; I? < 4: ; I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/  : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I 4: ; I .? : ; ' @ : ; I  : ; ( 4: ; I? < 4: ; I .? : ; ' I< .? : ; ' I< I 4: ;I !.? : ;' @ ": ;I # U$.? : ;' @ %4: ;I&.? : ;' I@ ': ;I ( )4: ; I?  *4: ;I?  % $ > $ > : ; I I : ; I   : ; : ; I8 : ; I8 : ; I 8  : ;  : ; I : ;I8 &I: ; I!I/  : ;  : ; .? : ; @ : ; I : ; I .? : ; ' @ .? : ; ' @ 4: ; I 4: ; I  : ;  : ; I .? : ;' @ !: ;I ".? : ;' I@ # : ;$ : ;%4: ;I & U'4: ;I( )4: ;I *.? : ;I< + U,.? : ;I< - .4: ; I? < /4: ; I?  0!1!I/% : ; I$ > $ > I!I/  I : ; : ;I8 &I  : ; : ; I8  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ; ( .? : ; ' @ : ; I 4: ; I? < 4: ; I  : ; 4: ; I .? : ;' @ 4: ;I 4: ;I !.? : ;' @ ".? : ;I< #1$.? : ; ' I %4: ;I&1'1(1 ) *.? : ;' I +: ;I,4: ;I-.? : ;' I< .I/ U0: ;I 1: ;I 2.? : ;' < 3.? : ;' I< 4.: ;' @ 54: ;I? < 6.? : ;' I< 7.? : ;I< 8!9 :.? : ;' < ;.? : ;' < < U=< > : ;? : ;I8 @: ;IA.? : ;' I@ B4: ; I?  C4: ; I? < % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ;  : ; .? : ; ' @ .? : ; ' < .? : ; ' @ .? : ; ' I@ .? : ; ' I@ : ; I 4: ; I 4: ; I 4: ; I? < .? : ; I< : ; I !.? : ; ' < "I#.? : ;I< $ U%.? : ;I< &1'1 (41 ) *.? : ; ' +: ; I, -.? : ; ' I .4: ; I/.? : ;' @ 04: ;I 1 U2: ;I 3: ;I 4.? : ;' < 54: ;I 64: ;I? < 7.? : ;' I< 819.? : ;' I@ :4: ;I;.? : ;' I< <.? : ;I@ =.1@ >.1< ?4: ; I?  @!I/A4: ; I?  B!I/C4: ;I?  % $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .: ; ' @ : ; I 4: ; I  U.? : ; I<  U.? : ; ' @ .? : ; ' @ .? : ; ' < I.? : ; ' I< .? : ;' < !.? : ;' I< "4: ;I #.? : ;I< $.? : ;' @ %4: ;I &: ;I ': ;I (4: ;I? < ).? : ;I< * +4: ; I ,4: ; I? < -4: ; I?  .4: ; I? < % $ > : ; I I : ;  : ; I8 : ; I8 : ; I 8  : ; : ; I $ >   : ;I8 : ; I!I/  : ; .? : ; ' I@ : ; I 4: ; I.? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  !4: ; I? < !I/% : ; I$ > $ >  I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; : ; I : ; I8  : ; I 8  : ;  : ; I : ;  : ;  : ; I : ; ( .? : ; ' @ : ; I .? : ; ' I@ 4: ; I .: ; ' @ : ; I !.: ; ' I@ ".? : ; ' @ #.: ; ' I@ $4: ; I % &4: ; I'1(1).? : ;' I *: ;I+.: ;' I@ ,.? : ;' I< -I.4: ;I /4: ;I 0 : ;1 : ;I8 2.: ;' @ 3.? : ;' @ 44: ;I? < 5.? : ;I< 6.? : ;I< 7.? : ;' I@ 8: ;I 94: ;I:: ;I ;.: ;' @ < U=.? : ;I< > : ;?.? : ;I@ @.? : ;I@ A.? : ;' I< B4: ; I? < C4: ; I?  D!I/% : ; I$ > : ; I I : ; : ; I8 : ; I8 : ; I 8  : ; : ; I$ >   : ;I8 : ; I!I/  : ; .? : ; ' @ : ; I 4: ; I 4: ; I  U.? : ; I<  4: ; I? < 4: ; I?  4: ; I? < % : ; I$ > $ >  I : ;  : ;I8  : ; : ; I8 I !I/ : ; I : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' @ : ; I 4: ; I .? : ; ' I@ : ; I .? : ; ' @ .? : ;' @ 4: ;I .? : ;' @ 4: ;I4: ;I .? : ;' @ !.? : ;I@ ": ;I # $4: ;I%.? : ;' I< &I'.? : ;' < (.? : ;' < ).: ;' @ *: ;I +4: ;I? < ,.? : ;I< -.? : ;I< .4: ; I /4: ; I? < 04: ; I?  14: ; I? < % $ > $ > : ; I I : ; I   : ; : ; I8 : ; I8 : ; I 8  : ;  : ; I : ;I8 : ; I!I/  : ; .? : ; ' @ : ; I 4: ; I  U U.? : ; ' @ .? : ; ' I@ 4: ; I 4: ; I4: ;I .? : ;' I@ : ;I !4: ;I "4: ; I? < #4: ; I?  % $ > $ > : ; I I : ;  : ;I8  &I : ; : ; I8 I !I/  : ; I8  : ; I 8  : ;  : ; I : ; .? : ; ' I@ : ; I  U4: ; I : ; I .? : ; ' @ 4: ; I 11.? : ;' I : ;I !I/!.? : ;' @ "4: ;I #.? : ;' < $I%4: ; I? < &4: ; I?  '4: ; I? < % : ; I$ > $ >  I : ;  : ;I8 &I  ' I : ; : ; I8 I!I/ : ;I : ; : ;I8 .? : ;' I@ .? : ;' I@ : ;I 4: ;I4: ;I.: ;' I@ : ;I 4: ;I  4: ;I  U : ; U !4: ; I? < "' I#4: ; I?  $4: ; I %!I/% $ > $ > : ; I I : ;  : ;I8  : ; : ; I8 I !I/ I: ;I : ;< .? : ; ' @ 4: ; I 4: ; I? < 4: ; I?  4: ;I? < % $ > : ; I I : ;  : ; I8 : ; I8 : ; I 8  : ; : ; I $ >   : ;I8 : ; I!I/  : ; : ;I : ;< .? : ; I@ 4: ; I .? : ; ' I@ : ; I : ; I .? : ; ' I@ 4: ; I 4: ; I? < 4: ; I?  4: ;I? < [ /usr/include/sys/usr/include/bits/usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/readline../Miscmain.cstat.hselect.htime.htypes.hnotation.htime.hstdarg.hrunset.heden.hsymptr.q.hstat.hstdio.hlibio.hstddef.hemalloc.hbuiltin.hreadline.hcustom.hsetjmp.hsetjmp.hsigset.hinput_device.h,V=YyUV,V 2X<)+Zd9eVVVtUzs,.'.:&F:9kz]y+rrrrdKW;gm:8VA TM (eIP eTV&dP:8VA TM,K:=,H/:dJ;V<6=H;Ue8:,0:Kiud/ s 9Dd:*WKT,sdVXJ:Hë7K 6r= V*VW[z[[gGdr:edUeVtU$y H⁻V/%L6f,-J8rv9e\,Vo!7:`Vo!77`3Vo!77`2d:QW=](5([9#9efgX6rs ŏWdXmr<, m +x9]xy cY U.X adXF,:o2T[7 ԸVXmVp,,,,zH:z9YA(FJ8Vh:X98ԸpH,Ht:YYm=4 '8:{rdxf,eXsGd%";r  xqY%hnVKhco+ddmU+1 .HVpN~{gqcYVVVX6J;SWY5KfVepz9?::T,,d%;o;::T,,d8V8:Ǝr, )-J8zq /usr/include/usr/include/bitssymptr.q.csymbol.centry.q.csymptr.q.heden.hnotation.hentry.q.hstdio.hlibio.htypes.hemalloc.hRfT,x*:d:p,)rT:,rrW|f)-d:[Y5=H8t, *<8,۲—=pXٳܞǎH6<:JpOr*:2:u8:rs~j bison/usr/include/usr/include/bitsyacc.ybison.simpleeden.hsymptr.q.hemalloc.hstdio.hlibio.htypes.hpdrrz+:8VA ,Hdrry+:8VA )G:d=:d=, UuGc;zdyIVUdTq:9Upri{cucd caI7;ae cyG!U_c@9cbd,W;e jyUNy+digL bd3 .|f cbd2c*dh*d,J}V{zU1y+di ++hchcf99ReVǥ]dT:V#}$|G(%}+%P<rt crUVV14(~eX[VY9sr#dHVHV#~UZV8VcU#V8VoBreZV  dqUM,8dV,:+dV,XUU[#Z[UHd /HW1V8rTVVs-ZH8:WHVVa I!VgUTrVH 'zTrVHtX 'H9sZ-QTVTVHZ U(rZrr\Y9bT.^hSekz1S-e?*8,) #bd.bdgyUxz+i.:#7qdT\*Vjuhw d^?rAcןb<s*rP4~ w+ cjzU?z+ipUqco{dh8rwgwZ%dD;  /usr/include/bits/usr/include/sys/usr/include/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/usr/include/linux../pcre-3.9builtin.cstdio.hstat.heden.hsymptr.q.htime.htypes.htime.htime.hstdio.hlibio.hstat.hnotation.hstddef.htermios.hselect.htypes.hinput.hpcre.hemalloc.hbuiltin.hinput_device.hsetjmp.hsetjmp.hsigset.hdGcV,~'fWH*,}m\<6.,, m\Xr Ytd,rsy# qdxUW /8,dh=5=Z>4>,/gV#T}cc}c}q9V=gV#TwWI79I9:9S$H!Q/rH,# VV8ddb:Vrf$ YV8:TeV#TTdb:m)Vxq[rŔeV$TTea::m(Vx[pŔeV$TTea::m(Vx[pœH8,T8:ƪ;7fH:*-<v?HVdd:T:eV/Tz#fe U#UJrJHV1===9pq==9 UwHx+Hy9dVKdV=XsWHF:Vd,rbrV) 7-fVbr,dNf?edVro/e;VuU cs9yp+V wU2>T,W f8:dv 9r$Yshqx8 f8:dv 9rojqxU% W28:*:,<pVV<:(p :Ee8:Vxrtyc ,Ʒ:FVV<rr$Yt 9tcF8eF:VtZ:Ԛi 0"?p,S;, 6NY TV +.HtV]+drdrgXD9;k.1dTb&9urguftE;VzU^dVS ZEuVg.*z q-$V f Uet5,rV:r c:wTeS#qetWp:re7V*,-cs +Pb,UetXp:rm9?@[Grr[Ay xTrԀ`rv+rs+ru+ru+rvUrnqy9x9y9z9cz,UXVrW$x::?Wd;aef "dbdd c$c)tdw+3Ǭ78Ǭ78Z 4 }o+}Uc}9}+tc ct99Xy9@Ȝn}q:&:LYb:.1sz(.o--g4y8drr;v9T,Td,,:?HK :d|xuQ=:(@6.:s 8,:s ŕr{R<oc{9{+t(d8ԸoMdycr~1{P:&:0ZV~,rZV~,r!pu+:,zU?:hHwzqdyU:]t$*W,p9Uv 4I V<V7K5!:>d UnWesr+g,g#$4nWe8:Hr,,Vz@XdVh # 9wq 08Vd ldW+E+V8VTr yV*r/|" q4oVrJ6XRtVyt3y' cF(' +VFdrdbV,9tbV,Wkf^ZF,#zU1z+1 +xSVT,,)dt.wqvV.vr,Vr.gae"X6tqGz}q= qXXWQcUdcV VdxUzbU,< U dr%~I  }sei"(= %Ek$w6W7W, U"S(sVh9y+zU ^uKƜxVfGEWHa</X6t*VTV28:HXx;WHa</X6rsRmEPf-/8V1Vl,V.X -uV,Vf[ɸVF,VVQ=ny,/dVDwf:uGbF,,[V:K8d ;YGe:rse[7;v0,uXj rqy ^`4>\=:^::HJdV8:icj99Vf5-;?tG 9>\=:^::HJdV8:i!V:-xzU +>wrrgr#wǸ U, ;2q>,yU:$w U- ;2p@,xUIw U- ;2p@,xqI#wǹ U- ȋ;xq=Vx9Hdwǹ U- ȋ;xq=Vx9H,dwǹ U- ȋ;xq=Vx9Hdwǹ U- ȋ;xq=Vx9H,dddבm=-0tpV, &.r18,ǪR.g&Xy$z)v‰:kV,qupV-(fF8;Vדb:4Je,UGyUV^+$dȇm=/eXR:V:s,H" qɸ +y@ ;yUBzcM qV'#a;V Grjo8 8tƸXqU <s:~:?0ƹI*:,wƸ$a;I*+bsJ;~:,a;I%d:I:,e; +&5ZH Ӝ8WV.Vm|gvUr+q /usr/include/usr/include/bitsrefer.csymptr.q.heden.hemalloc.hstdio.hlibio.htypes.h#:;?0 -dH$NZ{:r4/bHnU?,bd$`d0 GVT/=Xf;8:*:)iV?M8:p:- duV+#7eT:57,y1@yU ctzU?::*:-y9 V|zU?::*:-y9 V| Ꮥ>dV( /usr/include/usr/include/bitstype.cstdlib.heden.hsymptr.q.hstdio.hlibio.htypes.hemalloc.h2Vp: +dHwVI8: ᐘ<8}HIdv:+qV^Ӹrs>sr(x+s,::99U-)g9hd[:+; 9$,YZrԸ:, q;7:$v,VT,);ssV"qy9@y92w9 Uy9A=:o9pqrc=w=r c:pV- 8,Ux8rV7n<ctr(X: *:.* ;3U gV~V:7:,b:t:XO~d"UOpV.b:M8HH:yU]:jUW!U4Z/:XzUnqWU E;e'G UVocfd8:rdUT~}rd8H|wy k Wu8V8,88:,r~S?dS++w9d3v9 cs[ GqWH:>&"p,fqW&>.H*:*:ncV8,8e)::87: U;:$Œ `<6::}q7V:@ 4>eV<8V88:d UcryG:r> Gsd8:>s:v 1V?ssIhd:d9Ud8:*:-Ə UW8dsS-1z?;r-:Gq>::#U:`.gWVSq:a-WV9X; Ut!WrBV.jq-+y5='gh0d9q9?  #dUrX rs Ud8:sS- c8ed?:y9?df7I1WQgQKZX[KWdb:9}9:dfs::b-PŎLq7-r|iWVr$|$~rf 0crTd.:|fdwU~gƏ/-:pe)hr:8dd^cVrWec?U:db,z9'U:9-s8VrGUdPdP:sU:X:8UJU:UhdPzcw'e~rjˎV\bd dbdt`R'7w}q,;u-,kR&d[*'de VUS+dq9n99o+9ghV#Awq:A-::7::>-9p9q.>HAZ1 U qx}d8::+jUAU#5&.#y$}Ur;U ԫv,3yUpcGq99z:,d,ro8!(;:, G&'s;*  U8:*dWf<60Ecr,,Fs;1  U)f<60q,::vU+d,ro8!(;:, G&&s;*  U8:*dWf<60EcrFs;1  U)f<60U,::vU+d,ro8!(;:w Gw+ 9G'%;*8:8H8:wUg b:8df<6+U:*,;.g5 # g5 # g5 # g5 # g5 # g5~:XVpVpVpVpVpVp,::uUs+zӎ;Ԫ 9vs;iz+M:tU7;)eVivG qo:,ro8!(;:Uy9@x+k)q(vUԪ 9 s;4zUT:Z#wU$`f6cq(`<6a:rn!*:|e He:8:8-::8:8:<gUT,e:&;S;7g UXhOy+@- G 9w9 9:[]zNa9`9d8::~qs;b::%XU5=@zc[@sU 9y9@dUcWnq'f0wU;w:[t: Urp:r: ,g--9s IH>ӣzEM cF:~cet;e:8V*,=FUVZ?:@,)RT:W)  /usr/include/usr/include/bits../Eden/usr/include/ncursescustom.cstdio.hlibio.htypes.hemalloc.hcustom.hcurses.h&i ../Eden/usr/include/ncurses/usr/include/usr/include/bitscurses.ceden.hsymptr.q.hcurses.hstdio.hlibio.htypes.hemalloc.hfV“ԀIs$𸸸::𸸸r񸸸::| AK sAB Ay. tAB B. @AB HH.V. AAB .AB a.$4 AB AQ.. T.DEAB x.AAB ^.ШAB B.MC ĩAB ԩAM  AB A."AB E.AB  AB P.<AB DAB e.>AB GS.4AB N.<LbAB FO..J.N.n..].R.p.AB K.ȮjAB H.(4AB Dw.H.Y.E.W./AB [. AB Bb..AB F.+AB L,]AB I%. a.d.N.E.].V.t..Q.Z.\..N.\AB DH.$AB Bb..X.6AB T.0AB c. b.(AB HI.^.H. O.LAB T.HlAB Ii.U.\.{.g.E.Q..`..M.f.L.| dAB DK.(AB AT. AB Fj.AB BW.EAB BK.dZAB Bf.| AAB B UAB Al.U.\)AB D#AB FAB BG.(AB FB..e. cAB Fh. AB Ar.X.S.)AB DZAB Bc.  wAB FX.AB BK.#AB Y.8aAB Bz.^AB Ax.BAB DD.@LAB BG.uAB DE.$lAB Fe.y.| DpAB F.DdAB F.DT AB D` AB  DlAB F.DT,AB _.D AB <D`AB F.0 .`.w. ^.s. L.U. T.| X AB P.X `AB f.d.X l%AB [. X cAB E[.y. X AB FY. X AB FY. X 0AB F`.$X AB \.A.H. \.X AB GD.X |)AB M.X hAB K.X sAB f.X +AB O.X sAB f.(X $EAB DZ..H. O.$X lAB FE..(X XAB Fg..P.X tAB Ad.$X 9AB Ep..0[.(X 4]AB Fp..0[.(X ]AB Fp..0[. X .AB Fb. X $_AB Ff.4X AB F].V.^. P.s. n.,. X AB T. X <AB M. X TdAB Bw. c.$X AB FZ.|.M. X tAB Fw. X dAB FH.X ,9AB `.I.$X hAB Ek.].X.(X ` AB FM.C.s. X lvAB AV. R. X aAB Fm. X HAB E}.M. X  AB E}.M. X AB Fc. X AB Fz. X IAB BL.s.$X 'AB Fw.M. X AB Fe.X GAB DB.X  AB Dk.X  ZAB f. X ` xAB Bq.r. X AB j.{.P.X ` AB Eg.X  %AB [.,X < AB Fe.y.Z.X.H.(X wAB Fl.x.T.8X AB Fl..Y.d.I.J.H. T.X  AB BZ.(X AB IZ.c. d.,X D(AB FZ..H.M.E.,X lAB BZ.{.H.M.N.X 0MAB EZ. X zAB ].C.M.(X /AB FZ..U.E.X ,AB DZ.$X AB HZ.. [. X zAB ].C.M.4X < AB IZ.r. ..Q.A. _.(X "AB FE.. W.(X #AB Fc.G. ]. X $AB AZ.t. X ,%AB FY.8X &qAB Io.. l.R. .. l.$X d+AB j.T.V.I.b.X ,AB X ,AB X ,AB X $,AB  X ,,TAB ].R.[.| ,MAB @.,MAB @. -AB M.8-9AB DM.t-NAB v. -6AG G.$.AB ID.d.C./AB FO.. T.[. P.a.P.R. T.d. P.m..}. D.T.[.a. }.. ~.S.V..W.[. A.S.X.t. A.S.X.t. A.S.U.`.M.,h88AB . Q.M.v. }.K. }.:uAB IM.$;AB Bp.\.h.;uAB IY.$8<`AB Ed.z. }.$=|AB B@.T. T.$>AB Fv.[.R.>8AG k. >AB FK.|?KAB A].?AB DT.,L@AB FG.U.N.|.H.,@~AB FG.U.N.s.H.(TAAB FB.{. }.8D5AB BO.pD,AB BO. DoAB Fe.$ FAB L.[. A.U.$FAB D`.[. }.|  tGAB B@. T. t\IKAB ADZ.tI5AB h.$tI?AB BW.L.^.(t KEAB E\.I.H.I.thLIAB A{.$tLxAB I^.h.\.t,MvAB Ir. tMjAB Fv. tNjAB Fv.t|NAB Aj.|  OAG G[.XPAB c.| dQ AB d,QyAB BK.dQgAB T.dRAB M.d,RKAB  dxROAB F^. dRLAB FZ.0dSBAB FK.4.".M. dXW8AB Bn.$dZAB j.W.l.J.0d[AB L.E._.E.W.E.[.E.n. d@\[AB I.E.h.E.$d\AG D[.y. \.$d,]AB DQ.G. H.L.$d]AB Dl.F. H.L.$dp^AB DB.p. H.L.@d_AB IL.E.E.B.@.E.e.V..E. d`AB F.dda{AB F.Q...J.T.e.J...h.J..[..S..K.Q.(d jAB BE.Z.a. U. dkAB A`.^.K.dk\AB dXlFAB dlGF  dlAB BL. dDmAB At..$dnAB FW.t.$dntAB A`.U.J.]. dpoAB AH..| (qAB Fx.0V.y.M.,rAB FG.M.[.PX.| $TsAB B{.h.T. T4t}AB FK. TuAB FK.TvAB Q.TvPAB A_.TvPAB A_.TDwIAB AR.TwIAB AR. Tw;AB AY.Y. TxAB K.,T0xAB BJ.F.t.M.t.M. THyuAB W.V.X. TyyAB W.V.[. T]?b??axl ,5vKh<v,"Xp /FBGJs x3bh}S&hX$X :=I\H[^n 8q]e@T $ C  $ <7 I MXik+D[XMdw,@u#& "kr `"`k###w$##,%g%r%u%b'''$Aq''@$A'('<=;;; <g<<H=z=C5DDEXDDC5D,EJEXDcD.symtab.strtab.shstrtab.interp.note.ABI-tag.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame.data.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_frame.debug_str.debug_ranges#(( 1HH7  ?GoޔBTo  `c Hl Ȗp u88pPP{@@$d  Ĉ4 44'($$(,,(00(H*" *x.0KCKwC&j<044 0dY'+9P/" @?K!(Hޔ Ȗ 8 P @  Ĉ4$,0 !"d *$8ĈK,X\h ~Ĥ  (Ĉ,  3Ī)6  ?" Rbs w {45 6`63`;& & $ #&`$&$%6-'h7`(6>*hF + N 8 Vd lqw|  į@6a  3ȯ@3G 32Qg (R 8<@GxRO U haSB nXW8 w hZ [ @\[ _   ` po 7 @@1F6P\ Y dN wĞ~3@3x@vFv`v4v w@@    + K <X\ OX ` ( o4 }i     ,  44y k\ d+ B x  P  %`G8:u G,] S] [P| bA w p&l% l     - J ةV :, 0D >d CkILx P Xde" rX ~$g  (  Лml ȥ<   t +`  ;h  H4h O _F f` x l9 sl y|) @ 4RL D t  dZ k   n  8  d   # ;u 3 D ;  A \M Td U Ta ,M w ,  < \ $ + | 8 0' A @% 8D5  P* 8 8   G  N ? W  ] `pn p~ Z)  Z) : .  @y / # Z   U   ) М; / I &[ 8<` v | ,% s ( y 4 $     M p^  ` nt   $ ,*   9 DP \ [  j / p w x Dm 0  l @   0 P$ ,Mv ` ` p  pD, ; o D ,Qy N 0^ q xD   > 4  8a @@   8D5 Do '6 2D J V ` Ne9z Н ` 0x  "   T   KE ~   vP |,  "0&,RK /{Ac L:^o }'8-9 L, T   '0a@y8  P ء |h  w $; 3`< EpW  c s, {.D( #  |N ,  A]|  @6 "ОX54  DLb KZ P4] X. f0 y dr $<  l `\IK { l Hyu h   + t #`  -R6>u Fd TAg} p y&q  A  0G?t <4@$h Pĩ +`5=, J  Vn fmp}  0M  L@ @  dL$_ S Xf R +H 8c E  RП6c/ i) vAFd@ ؚ4 XlF # Mj   <g ",+,,T 4 Q0$X@iPu E `pw;    Z   I ' 4 gs  \I5 1Q8O @^ K Q  pE WR  G xĆ 0:/T 2  =XE> Nb@nP;   `|0Nj  @~ #  r hLI pȮj !] 04 8L? JZ MSt a   n r,9 y4xw V   0, `k)<'l 4>8 =Cs IТ[=| `5gh88 l|b P< ؖs ( N /8 l  #`)o 2 : 5Kp W0$j| q\ @49 , lv  T @L ȍ  % x wI P^C $E a{ % ;4t} D<  L  XQ `DE n`Fxh p4v q e L^  5 DwI & yy  I +XP 4U G [rtj)~\   #    tУ F   $$ e . = O gc ԩ r `|  | 0 TA .  T  }  ض6 ! G ! ! '! /!00A!` call_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____EH_FRAME_BEGIN____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_auxmain.crcsidRSentryStackSizeEntryStackmasterStackSizeTopMasterStackMasterStacklastBeepTimesetTimertimedEventsEnabledinerrorfretcalllastControlCTimeRS1RS2runset.csymbol.crcsid3rcsid4LocalVarListyacc.cMAXGARBAGEMAXUSABLEnGarbagenUsablegarbageLevelgarbageusableyytranslateyyprhsyyrhsyyrlineyytnameyyr1yyr2yydefactyydefgotoyypactyypgotoyytableyycheckyy_parse_inityychar1yyssyyssayyvsyyvsayystacksizeyyfree_stacksc.0yystateyyerrstatusyysspyyvspyynyylenyyvalbuiltin.cpushlistpackparacode.caddr.0eval.cschedulelockheap.clex.cappend_charbuffer_overflowbofkeywords.0keyword_tokenbuiltinFs.1number_tokenid_tokennew_yytexttab.2table.3multi_symbol_tokenskip_commentskip_one_line_commentscoutScreenInitOpenedskip_percent_commenttranstab.4backslashgetAgentNameline_readgetc_require_new_readlinegetc_ptrlib.cmachine.cneed_rwvNullList.0cnv_formula_to_rwvUPDATErefer.ctype.cdatatypepcre.crep_minrep_maxescapesposix_namesposix_name_lengthsposix_class_mapspcre_default_tablescheck_escapeis_counted_repeatread_repeat_countsfind_fixedlengthcheck_posix_syntaxcheck_posix_namecompile_branchcompile_regexfirst_significant_codeis_anchoredis_startlinefind_firstcharmatch_refmatchcustom.ccurses.cnothing.cnerl_getc_wrappertodolocal_declare_eden_wdelch_eden_rawptsname@@GLIBC_2.1change_targetsnotationGetsscan_fnegatenotationTypeToString_eden_winsertlncos@@GLIBC_2.0inpdevlinenoappend_linebufprintfgetc@@GLIBC_2.0_eden_scrollokprognamestack_overflow_errjmpdelete__strtod_internal@@GLIBC_2.0insert_level_marker_eden_clearoklcatwscrlchangefdreadyInp_Dev_SavenewStringBuffget_stringeden_notice_undef_referencestrncat@@GLIBC_2.0strchr@@GLIBC_2.0_eden_nocbreakappend_NoAgentNamet_floatjptinEVALfeof@@GLIBC_2.0rl_getc_wouldBlockshiftfpunget_chardecGarbageLevel_eden_newwinassignatan@@GLIBC_2.0lookuptouchscan_fpatchinttimewouldBlockungetc@@GLIBC_2.0grantpt@@GLIBC_2.1_DYNAMICbuiltin_ft_checkt_char_eden_delwinprintRunSetrl_getsaction_queuectosswitchcodeinitRunSett_superrelated_by_codenoticeft_intinterruptedb_writelibLocationreset_compiler_statusget_msgq_eden_crmodewritelndec_asgnentry_ptrrun_initwrite@@GLIBC_2.0localtime@@GLIBC_2.0fileno@@GLIBC_2.0SEARCH_symptrstrcmp@@GLIBC_2.0code_related_bylog10@@GLIBC_2.0_eden_wgetstr_eden_wrefreshIDlistsavetextusageclose@@GLIBC_2.0asin@@GLIBC_2.0agentType_fp_hwyytextperror@@GLIBC_2.0ret_callcnv_2_booleqcallfprintf@@GLIBC_2.0fork@@GLIBC_2.0getActiongetenv@@GLIBC_2.0endwinlastNullInIDlistpcre_fullinfosignal@@GLIBC_2.0rawserialreadpclose@@GLIBC_2.1related_by_code_runtimelhsmvcurreplaceRefsprint_promptstartupcwdreadlinecheckRunSetfreeStringBufdefinitionleTopEntryStack__fini_array_endddupnotationPushPopyyparsepeek_eden_internal_cdgargcsetyyparseinitcfsetospeed@@GLIBC_2.0user_tracelookup_addressqueuewdelchaddress_errorkeyinclearokltpromptsemiselect@@GLIBC_2.0_eden_overwritetextptroverwritemark_changedInp_Devvsnprintf@@GLIBC_2.0strerror@@GLIBC_2.0__dso_handlecode_related_by_runtimelhscheckok1makedatumeden_prompt_symdirname@@GLIBC_2.0__libc_csu_finiusbhidreadtcsetattr@@GLIBC_2.0codeswitchautocalcputchar@@GLIBC_2.0delete_local_levelentry_tbl_eden_weraseeden_backticks_dependency_hackresetupdateevalDatumprintUsageputenv@@GLIBC_2.0progpsymtbl2listeden_initprog__errno_location@@GLIBC_2.0rawserialclosepow@@GLIBC_2.0debugget2numwerase_eden_boxerrorContentfincGarbageLevelinvoke_action_queueconcat_eden_echomustintconcatoptprintstdoutstackinit_lexsystem@@GLIBC_2.0inpdevnameaccess@@GLIBC_2.0rl_readline_nameerrorCompletenlstack_underflow_errpre_inc_eden_wclearechorandom@@GLIBC_2.0puts@@GLIBC_2.0_initnameofpopen@@GLIBC_2.1DELETE_entry_ATOMmakearrgetvalueadd_local_variablechange_sourcesnocbreakrmActionmalloc@@GLIBC_2.0_eden_wmove_eden_wstandoutpre_decsetsid@@GLIBC_2.0rawreadfscanf@@GLIBC_2.0_eden_winchreset_eval_eden_wgetchscanf@@GLIBC_2.0rl_expand_promptpcre_versioninsttblpipe@@GLIBC_2.0_eden_wdeletelnmemmove@@GLIBC_2.0pushEntryStackerrorfhptrfscan_ftopEntryStack_eden_internal_cwdappAgentNametypenooverlayregmatchrawwritewrefreshschedule_parents_ofmodget_stringcbreakaddstdout@@GLIBC_2.0stderr@@GLIBC_2.0prompt1_eden_nonlget_charscatexec_filetextcodeyynerrsnewhdatunmarkGarbage__xstat@@GLIBC_2.0lazy_notwaddnstrregreplace_eden_internal_basenameclearEntryStackbreak_qvfprintf@@GLIBC_2.0print_prompt_if_necessaryemalloc_ppcre_mallocnonlexec_stringfseek@@GLIBC_2.0clearMasterStacksetbuf@@GLIBC_2.0send_message_eden_mvcurflushRestOfLineyylengtime@@GLIBC_2.0cosh@@GLIBC_2.0_eden_overlayrawserialopensymbolscode_definitionwclrtobot_startt_typewinsdellngetopt@@GLIBC_2.0sublistfgets@@GLIBC_2.0bitanddatacmpcompiler_flagsymboldetailSEARCH_entry_eden_endwinchdir@@GLIBC_2.0addIDMOVE_entry_Qwgetnstrrlibtbl__fxstat@@GLIBC_2.0fputs@@GLIBC_2.0longjmp@@GLIBC_2.0Input_Devicespost_decrl_getungetcinit_LocalVarListformula_list_eden_leaveoknlstatusrefer_byinPrefixrealrand__strtol_internal@@GLIBC_2.0noechoatan2@@GLIBC_2.0__xpg_basename@@GLIBC_2.0dispatchaddActionexecvp@@GLIBC_2.0scrollokmustaddr_eden_nluser_erroripcloseprinthashforgetbitoradd_historyfreedatuminit_edennewwinresetLockstrncmp@@GLIBC_2.0waddchgetheapprintlocalmuladdrcheckokinstall_custom_variables__fini_array_startgargvpopMasterStackjpntpost_incpopfputc@@GLIBC_2.0__libc_csu_initselscoutScreenInitOpeninitcodesearch_localpcre_compile__bss_startmaininitscrmakelistclear_IDlistput_environnlstts_eden_nocrmodeheapremove_msgq__libc_start_main@@GLIBC_2.0_eden_waddchraise@@GLIBC_2.0_eden_cbreakwinch__init_array_endinitreadlinerawdivideusbhidclosecall_libexp@@GLIBC_2.0t_strmustcharwmovelocaladdrstackpusbhidopenpush_textclearRunSetdup2@@GLIBC_2.0_eden_wclrtobottanh@@GLIBC_2.0fullPromptexecuterealloc@@GLIBC_2.0strcat@@GLIBC_2.0disAsseval_formula_queuestartValiddelwintan@@GLIBC_2.0data_starterealloc_ppromptcharpushMasterStackprintf@@GLIBC_2.0querywinschdefnonly_finimemcpy@@GLIBC_2.0sqrt@@GLIBC_2.0leaveokstartupargcMOVE_symptr_Qrunfclose@@GLIBC_2.1saveprogchangeNotationpushUNDEFisdigit@@GLIBC_2.0__strdup@@GLIBC_2.0yydebugframewgetchpreprintedorgettimeofday@@GLIBC_2.0gtsymboltextblibtblwarningf__preinit_array_endrl_bind_keysnprintf@@GLIBC_2.0arrayindexcalcopen@@GLIBC_2.0currentNotationaction_liststdscripopencode_definition_runtimelhshashindexjpnfcall_floateagerexit@@GLIBC_2.0Control_CnotationSwitchwarningpromptUndefDatumpcnextcformula_queue_eden_noechoandb_exitsscanf@@GLIBC_2.0_edatapipe_processcfsetispeed@@GLIBC_2.0gettime_eden_waddstrsetLibLocation_GLOBAL_OFFSET_TABLE_free@@GLIBC_2.0receive_message_endioctl@@GLIBC_2.0clearGarbageaddentrynorawf_eofgetcwd@@GLIBC_2.0codewclearevalacos@@GLIBC_2.0printliststdin@@GLIBC_2.0startupargvappendHistDebugfget_charappend_eden_initscrcfmakeraw@@GLIBC_2.0pcre_freestrncpy@@GLIBC_2.0yylval_eden_wclrtoeolcurscrstartcheckok2installfopen@@GLIBC_2.1markGarbage_setjmp@@GLIBC_2.0update__init_array_startsave_IDlistoptarg@@GLIBC_2.0wclrtoeolpopdinsertapply_IO_stdin_usedrefer_tolookup_localgeerror_nojpfmustlistsrandom@@GLIBC_2.0readyfile_statyylexdefinition_runtimelhsnewdatumbackgndget_environpushintpopEntryStackrl_insertfinetimesprintf@@GLIBC_2.0out_of_range_errorfwrite@@GLIBC_2.0cont_qwborder_eden_scrollt_str1noupdate__data_startmuststrsin@@GLIBC_2.0subconstpush_IO_getc@@GLIBC_2.0freeheapDELETE_symptr_ATOM_Jv_RegisterClasses__ctype_b_loc@@GLIBC_2.3agentName_eden_norawterminatereallocStringBuf_eden_internal_dirname_eden_winschpromptcomment__preinit_array_startrand@@GLIBC_2.0ilibtblpushlistsizeappend_agentNamepcre_execlog@@GLIBC_2.0optind@@GLIBC_2.0unlockpt@@GLIBC_2.1topMasterStackhashtabletcgetattr@@GLIBC_2.0read@@GLIBC_2.0printVersioncode_evalsubstryycharinc_asgn_eden_wstandendnoteden_error_index_rangetypenamepacksinh@@GLIBC_2.0__gmon_start__yyerrorstrcpy@@GLIBC_2.0pcre_infoEDEN-1.62/lib-tkeden-1.62/0040755000177700001640000000000010256064526013563 5ustar empublicemEDEN-1.62/lib-tkeden-1.62/donald.txt0100644000177700001640000001002710256057717015566 0ustar empublicem------ DoNaLD (Definitive Notation for Line Drawing) QUICK REFERENCE ------ Warning: this documentation isn't quite finished yet... CONTENTS OF THIS QUICK REFERENCE: 1. Syntax 2. Data types 3. Functions 4. References 5. Pre-defined variables 6. Attributes 7. Viewports 8. More information -- 1. SYNTAX ----------------------------------------------------------------- No semi-colons: line feeds are terminators Line continuation: use \ at the end of a line to continue to the next # UNIX shell style one-line comments Variables must be declared before use (except when using the ! operator) Redeclaration of type is not possible Name space: append ! to an identifier to reference an Eden variable: eg eq!(a, b) Escaping to Eden: ? is a one-line escape to Eden (remember to terminate with a semi-colon) -- 2. DATA TYPES ------------------------------------------------------------- int: 34 real: 10.0 char: "abc" boolean: true, false point: {50, 100} point: {modulo @ angle} ie distance and angle (radians) from the origin line: [{10, 10}, {80, 90}] arc: [point1, point2, angle] -- 'angle' (degrees) portion of a circle, end points are point1, point2: note NOT arc(p, p, a) circle: circle(centre, radius), circle({500, 500}, 400) ellipse: ellipse(centre, major, minor) rectangle: rectangle(point1, point2) label: label(string, point) image: I!ImageFile("gif", "hill.gif") openshape: openshape cross within cross { line l1, l2 l2 = [{300, 300}, {100, 100}] l1 = [{300, 100}, {100, 300}] } shape: shape S S = trans(cross, 100, 200) graph: (see other documentation) -- 3. FUNCTIONS -------------------------------------------------------------- Arithmetic: + - * div mod sqrt log exp trunc float rand Trigonometric: sin cos tan asin acos atan Relational: && || ! < <= == > >= Geometric: point midpoint(line) point intersect(line, line) line perpend(point, line) real dist(point, point) bool intersects(line, line) bool separates(line, point, point) bool includes(circle, point) bool incident(line, point) bool incident(circle, point) bool pt_betwn_pts(point, point, point) bool colinear(point, point, point) bool distlarger(point, point, value) bool distlarger(line, point, value) bool distsmaller(point, point, value) bool distsmaller(line, point, value) Shape transformations (note "entity" can be any Donald type): trans(entity, x, y) scale(entity, ratio) rot(entity, point, angle) reflect(entity, line) String functions: // (string concatenation) itos(int) rtos(real, fprintf-format-string) Image functions: I!functionName denotes a function returning an image -- 4. REFERENCES ------------------------------------------------------------- x: variable x in the immediate context ~/x: variable x in the context one level up /x: variable x in the root (topmost) context x!: the Eden variable x .1, .2: first and second points of a line or first and second coordinates of a point .x, .y: projection of a point onto the x- and y- axes -- 5. PRE-DEFINED VARIABLES -------------------------------------------------- pi: ratio of circle circumference to diameter (note upper case PI in Eden) -- 6. ATTRIBUTES ------------------------------------------------------------- To give an attribute to the DoNaLD variable Obj/line1, use the Eden escape: ?A_Obj_line1 = "attribute1=value1,attribute2=value2..."; color outlinecolor linewidth linestyle: dotted, dashed or solid arrow: first, last, both or none locus: true, false fill: solid or hollow font: a string: "{family size style}"... family = times, courier or helvetica, size = in points (1/72th inch) style = normal, bold, roman, italic, underline, overstrike (multiple styles are possible: "{times 12 {bold italic}}") -- 7. VIEWPORTS -------------------------------------------------------------- viewport VIEW1 The default viewport is DoNaLD. -- 8. MORE INFORMATION ------------------------------------------------------- See http://go.warwick.ac.uk/EDEN/ for more detail. EDEN-1.62/lib-tkeden-1.62/eddi.eden0100644000177700001640000021077110251560574015331 0ustar empublicem%eden /* * $Id$ * Warning: this is a generated file */ ## ## Original file eddipf.e (length 10703, dated Oct 23 2001) follows... ## %eden /* File: eddipf.e Program: EDEN functions for EDDI/P Date: 6/2/96 Author: Son V Truong */ /* Generally messed around with since by Ashley and Meurig */ /* Added some checking to the input of functions - Michael */ /* */ /* Make a version of a table with no repeated rows */ func Makedistinct { para l; auto result, elt, ix; result = []; while (l#!=0) { elt = l[1]; shift l; ix = 1; while ((ix<=result#)&&(elt!=result[ix])) ix++; if (result#" : { for (i=1; i<=keys#; i++) { if (keys[i] > $4) append tlist1,$1[i+1]; } break; } case ">=" : { for (i=1; i<=keys#; i++) { if (keys[i] >= $4) append tlist1,$1[i+1]; } break; } default : writeln("EDDI/P Error: not a comparison."); } return makedistinct(tlist1); } func getkcols { auto i; tlist = []; for (i=1; i<=$1[1][1]#; i++) if ($1[1][1][i] == 1) append tlist, $1[1][i+1]; return tlist; } func rdupcols { auto i,j,k; tlist = [[[]]]; colnos = [2]; delcols = [$1[1][2]]; for (i=3; i<=$1[1]#; i++) if (notin(delcols,$1[1][i])) { append colnos, i; append delcols, $1[1][i]; } for (j=1; j<=colnos#; j++) { append tlist[1][1], $1[1][1][colnos[j]-1]; append tlist[1], $1[1][colnos[j]]; } for (k=2; k<=$1#; k++) { append tlist, []; for (j=1; j<=colnos#; j++) append tlist[k], $1[k][colnos[j]-1]; } return makedistinct(tlist); } func matchcols /* [[mct1],[mct2]] = matchcols(t1,t2) */ { auto i,j; mct1 = []; mct2 = []; for(i=2;i<=$1[1]#;i++) for(j=2;j<=$2[1]#;j++) { if ($1[1][i] == $2[1][j]) { append mct1,i; append mct2,j; } } return [mct1,mct2]; } func njoin { auto i,j,k,x,y,z; if ($#<2) { writeln("EDEN: ERROR: two tables not provided for njoin."); return [[[]]]; } else if (($1==@) || ($2==@)) { writeln("EDEN: ERROR: njoin has received at least one "// "undefined table."); return [[[]]]; } tlist1 = []; vals1 = []; vals2 = []; nvals1 = []; nvals2 = []; append tlist1, $1[1]; matcols = matchcols($1,$2); if (matcols != [[],[]]) { for (i=1; i<=matcols[1]#; i++) append vals1, getcolval($1,matcols[1][i]-1); for (i=1; i<=matcols[2]#; i++) append vals2, getcolval($2,matcols[2][i]-1); for (j=1; j<=vals1[1]#; j++) { append nvals1, []; for (k=1; k<=vals1#; k++) append nvals1[j], vals1[k][j]; } for (j=1; j<=vals2[1]#; j++) { append nvals2, []; for (k=1; k<=vals2#; k++) append nvals2[j], vals2[k][j]; } attr = $1[1]; attr[1] = attr[1] // $2[1][1]; for (i=2; i<=$2[1]#; i++) append attr, $2[1][i]; tlist = [attr]; z = 1; for (x=1; x<=nvals1#; x++) for (y=1; y<=nvals2#; y++) if (nvals1[x] == nvals2[y]) { append tlist, $1[x+1]; z++; for (i=1; i<=$2[y+1]#; i++) append tlist[z], $2[y+1][i]; } return rdupcols(tlist); } else { attr = $1[1]; attr[1] = attr[1] // $2[1][1]; for (i=2; i<=$2[1]#; i++) append attr, $2[1][i]; tlist = [attr]; for (x=2;x<=$1#;x++) for (y=2; y<=$2#; y++) { append tlist, ($1[x] // $2[y]); } return tlist; } } func epipe { auto i; tlist = []; for(i=2;i<=$1#;i++) append tlist,$1[i]; return tlist; } ## ## Original file eddi.e (length 6241, dated Jan 14 16:37) follows... ## %eden /* Modification by Ash */ /* include ("eddi/eddipf.e"); */ /* Removed by Ash Feb 21 2002: will be inserted above */ /* include(getenv("TKEDEN_LIB")//"/eddipf.e"); */ operators = [[':',"select_wrapper"],['%',"project"],['.',"inter"],['*',"njoin"],['+',"union"],['-',"diff"]]; func lookupop { para op; auto i; for (i = 1; i <= operators#; i++) if (char (op) == operators [i][1]) return operators [i][2]; return "unknown"; } func select_wrapper { para tbl, pred; auto var, op, val, i, j; i = 1; while (i <= pred# && (isalphanum (pred[i]) || pred[i] == ' ')) i++; var = stripspace(substr (pred, 1, i - 1)); j = i; while (i <= pred# && pred[i] != ' ' && !isalphanum (pred [i])) i++; op = stripspace (substr (pred, j, i - 1)); val = converttonum (stripspace (substr (pred, i, pred#))); if (type (val) == "string") val = cutquotes (val); return select (tbl, var, op, val); } eddi_tables = []; proc droptable { para tbl; auto i, new_tables; new_tables = []; for (i = 1; i <= eddi_tables#; i++) if (eddi_tables [i] != tbl) new_tables = new_tables // [eddi_tables [i]]; eddi_tables = new_tables; forget (tbl); } proc addtotablelist { para tbl; eddi_tables = eddi_tables // [tbl]; } proc listtables { auto i; writeln ("----------------"); for (i = 1; i <= eddi_tables#; i++) writeln (eddi_tables [i]); writeln ("----------------"); } eddi_notation = [";", "eddi_statement", []]; eddi_statement = ["suffix", ";", "eddi_statement_1", ["fail", "eddi_statement_1"]]; /* eddi_statement_1 = ["prefix", "?", "table_val", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "showrel (%%);", "relname"]], ["fail", "eddi_statement_2"]]; */ /* For reg_exp queries rather than just table name */ eddi_statement_1 = ["prefix", "?", "rel_exp", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "showrel (%%);", "relname"]], ["fail", "eddi_statement_2"]]; eddi_statement_2 = ["prefix", "~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "droptable (%%);", "relname"]], ["fail", "eddi_statement_3"]]; eddi_statement_3 = ["pivot", "<<", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["later", "$$ = addvals ($$, %%);", "relname", "relname", "v_substrs[2]"]], ["fail", "eddi_statement_4"]]; eddi_statement_4 = ["pivot", "!!", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["later", "$$ = delvals ($$, %%);", "relname", "relname", "v_substrs[2]"]], ["fail", "eddi_statement_5"]]; eddi_statement_5 = ["pivot", "is", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["later", "$$ is %%;", "relname", "expr"]], ["fail", "eddi_statement_6"]]; eddi_statement_6 = ["pivot", "(", ["table_name", "create_state"], ["script", ["declare", "relname", "cdata"], ["setparas", ["relname"], ["cdata"]], ["later", "$$ = create ($$); addtotablelist (\"$$\");", "relname", "cdata", "relname"]], ["fail", "eddi_statement_7"]]; eddi_statement_7 = ["literal", "#", ["script", ["execute", "listtables ();"]]]; table_name = ident_ex ([["script", ["execute", "%% = \"%%\";", "v_paras[1]", "v_string"]]]); table_val = ident_ex ([["script", ["execute", "%% is %%;", "v_paras[1]", "v_string"]]]); func op_exp { para op, next; return ["pivot", str (op), ["rel_exp", "rel_exp"], ["script", ["declare", "EDDIp1", "EDDIp2"], ["setparas", ["EDDIp1"], ["EDDIp2"]], ["execute", "%% is " // lookupop (op) // "(%%, %%);", "v_paras[1]", "EDDIp1", "EDDIp2"]], ["ignore", ["bras"]], ["fail", next]]; } rel_exp = op_exp ('+', "rel_exp_1"); rel_exp_1 = op_exp ('-', "rel_exp_2"); rel_exp_2 = op_exp ('*', "rel_exp_3"); rel_exp_3 = op_exp ('.', "rel_exp_4"); rel_exp_4 = ["rev_pivot", "%", ["rel_exp", "attr_list"], ["script", ["declare", "expr_part", "attr_part"], ["setparas", ["expr_part"], ["attr_part"]], ["execute", "%% is " // lookupop ('%') // "(%%, %%);", "v_paras[1]", "expr_part", "attr_part"]], ["ignore", ["bras"]], ["fail", "rel_exp_5"]]; rel_exp_5 = ["rev_pivot", ":", ["rel_exp", "predicate"], ["script", ["declare", "expr_part"], ["setparas", ["expr_part"], []], ["execute", "%% is " // lookupop (':') // "(%%, ##);", "v_paras[1]", "expr_part", "v_substrs[2]"]], ["ignore", ["bras"]], ["fail", "rel_exp_6"]]; rel_exp_6 = ["prefix", "(", "rel_exp_7", ["fail", "table_val"], ["script", ["setparas", ["v_paras[1]"]]]]; rel_exp_7 = ["suffix", ")", "rel_exp", ["script", ["setparas", ["v_paras[1]"]]]]; tuples = ["split", ",", "tuple", ["ignore", ["sq_bras"]]]; tuple = ["prefix", "[", "tuple_1"]; tuple_1 = ["suffix", "]", "tuple_2"]; tuple_2 = ["split", ",", "tuple_3"]; tuple_3 = ["prefix", "\"", "tuple_5", ["fail", "float_num"]]; tuple_5 = ["suffix", "\"", "stringval"]; attr_list = ["split", ",", "col_name", ["script", ["allparas", "attrs"], ["execute", "%% is %%;", "v_paras[1]", "attrs"]]]; col_name = ident_ex ([["script", ["execute", "%% = \"%%\";", "v_paras[1]", "v_string"]]]); predicate = anything; stringval = anything; func convertcols { para inlist; auto outstr, i; if (inlist# < 1) return ""; outstr = "\"" // inlist [1][1] // "\", \"" // inlist [1][2] // "\""; for (i = 2; i <= inlist#; i++) outstr = outstr // ", \"" // inlist [i][1] // "\", \"" // inlist [i][2] // "\""; return outstr; } create_state = ["suffix", ")", "create_state_1", ["script", ["declare", "cdata"], ["setparas", ["cdata"]], ["execute", "%% is convertcols (%%);", "v_paras[1]", "cdata"]]]; create_state_1 = ["split", ",", "col_info", ["script", ["allparas", "cols"], ["execute", "%% is %%;", "v_paras[1]", "cols"]]]; col_info = ["pivot", " ", ["col_name", "col_info_2"], ["script", ["declare", "cname", "cdata"], ["setparas", ["cname"], ["cdata"]], ["execute", "%% is [%%, %%];", "v_paras[1]", "cname", "cdata"]]]; col_info_2 = ["suffix", "key", "anything", ["script", ["execute", "%% = \"#\";", "v_paras[1]"]], ["fail", "col_info_3"]]; col_info_3 = ["read_all", [], ["script", ["execute", "%% = \"X\";", "v_paras[1]"]]]; ##notation ("eddi", "eddi_notation"); ## changed by Ash in the EDDIclean source 14 January 2004 installAOP("%eddi", "eddi_notation"); ## ## Original file neweddipf.e (length 10034, dated Oct 23 2001) follows... ## %eden /* File: eddipf.e Program: EDEN functions for EDDI/P Date: 6/2/96 Author: Son V Truong */ /* Generally messed around with since by Ashley and Meurig */ /* Added some checking to the input of functions - Michael */ /* */ /* Make a version of a table with no repeated rows */ func Makedistinct { para l; auto result, elt, ix; result = []; while (l#!=0) { elt = l[1]; shift l; ix = 1; while ((ix<=result#)&&(elt!=result[ix])) ix++; if (result#" : { for (i=1; i<=keys#; i++) { if (keys[i] > $4) append tlist1,$1[i+1]; } break; } case ">=" : { for (i=1; i<=keys#; i++) { if (keys[i] >= $4) append tlist1,$1[i+1]; } break; } default : writeln("EDDI/P Error: not a comparison."); } return makedistinct(tlist1); } func getkcols { auto i; tlist = []; for (i=1; i<=$1[1][1]#; i++) if ($1[1][1][i] == 1) append tlist, $1[1][i+1]; return tlist; } func rdupcols { auto i,j,k; tlist = [[[]]]; colnos = [2]; delcols = [$1[1][2]]; for (i=3; i<=$1[1]#; i++) if (notin(delcols,$1[1][i])) { append colnos, i; append delcols, $1[1][i]; } for (j=1; j<=colnos#; j++) { append tlist[1][1], $1[1][1][colnos[j]-1]; append tlist[1], $1[1][colnos[j]]; } for (k=2; k<=$1#; k++) { append tlist, []; for (j=1; j<=colnos#; j++) append tlist[k], $1[k][colnos[j]-1]; } return makedistinct(tlist); } func matchcols /* [[mct1],[mct2]] = matchcols(t1,t2) */ { auto i,j; mct1 = []; mct2 = []; for(i=2;i<=$1[1]#;i++) for(j=2;j<=$2[1]#;j++) { if ($1[1][i] == $2[1][j]) { append mct1,i; append mct2,j; } } return [mct1,mct2]; } func njoin { auto i,j,k,x,y,z; if ($#<2) { writeln("EDEN: ERROR: two tables not provided for njoin."); return @; } else if (($1==@) || ($2==@)) { writeln("EDEN: ERROR: njoin has received at least one "// "undefined table."); return @; } tlist1 = []; vals1 = []; vals2 = []; nvals1 = []; nvals2 = []; append tlist1, $1[1]; matcols = matchcols($1,$2); if (matcols != [[],[]]) { for (i=1; i<=matcols[1]#; i++) append vals1, getcolval($1,matcols[1][i]-1); for (i=1; i<=matcols[2]#; i++) append vals2, getcolval($2,matcols[2][i]-1); for (j=1; j<=vals1[1]#; j++) { append nvals1, []; for (k=1; k<=vals1#; k++) append nvals1[j], vals1[k][j]; } for (j=1; j<=vals2[1]#; j++) { append nvals2, []; for (k=1; k<=vals2#; k++) append nvals2[j], vals2[k][j]; } attr = $1[1]; attr[1] = attr[1] // $2[1][1]; for (i=2; i<=$2[1]#; i++) append attr, $2[1][i]; tlist = [attr]; z = 1; for (x=1; x<=nvals1#; x++) for (y=1; y<=nvals2#; y++) if (nvals1[x] == nvals2[y]) { append tlist, $1[x+1]; z++; for (i=1; i<=$2[y+1]#; i++) append tlist[z], $2[y+1][i]; } return rdupcols(tlist); } else { attr = $1[1]; attr[1] = attr[1] // $2[1][1]; for (i=2; i<=$2[1]#; i++) append attr, $2[1][i]; tlist = [attr]; for (x=2;x<=$1#;x++) for (y=2; y<=$2#; y++) { append tlist, ($1[x] // $2[y]); } return tlist; } } func epipe { auto i; tlist = []; for(i=2;i<=$1#;i++) append tlist,$1[i]; return tlist; } ## ## Original file newshowrel2.e (length 4517, dated Oct 9 2001) follows... ## %eden _DUMMY = [[[0],"A"],[0]]; /* a dummy eddi relation _DUMMY (A int); _DUMMY << [1]; */ curr_rel = _DUMMY; /* file derived from newshowrel.dev.e which contains some development stuff */ /* Added check for a defined table to showrel(rel) - Michael */ num_tuple is curr_rel#-1; curr_attr is curr_rel[1][curr_index+1]; curr_attr_value is curr_rel[curr_tuple_num+1][curr_index]; /* curr_attr_str is (curr_rel[1][1][curr_index]==1)?curr_attr_value:ntzstr(curr_attr_value); */ curr_attr_str is ntzstr(curr_attr_value); curr_attr_len is curr_attr_str#; /* curr_attr_len is (curr_rel[1][1][curr_index]==1)?curr_attr_value#:str(curr_attr_value)#; */ func ntzstr { /* no trailing zeros display for real x */ /* this conversion function also passes strings through unmodified */ /* this is because of the boundary problem in the definitive environment */ /* whereby neither curr_tuple_num = 0 / 1 is appropriate */ para x; auto strx, i, j, result; strx = str(x); j = strx#; if (x==int(x)) return(str(int(x))); if (x!=str(x)) { i=1; while (strx[i]!='.') i++; while ((j>i) && (strx[j]=='0')) j--; }; result = ""; for (i=1; i<=j; i++) result = result // strx[i]; return result; }; func normalise_len { para s, n; auto i, result; i = 0; result = ""; while (i display list for $1 above $2 */ auto s,i; s = $1; for (i=1; i<=$2#; i++) { append s, $2[i]; } return s; } func displayrt { /* two display lists $1 and $2 -> display list for $1 to right of $2 */ auto s,i; s = []; for (i=1; i<=$1#; i++) { append s, ($1[i] // $2[i]); } return s; } /* some instances of showrel() in action that can be used to test above in connection with the fruits.eddi database */ /* curr_rel = ALLFRUITS; display_list(mkdisplist_rel()); NEWFRUITS = [ALLFRUITS[1]]; /* empty relation */ curr_rel = NEWFRUITS; display_list(mkdisplist_rel()); curr_rel = CITRUS; display_list(mkdisplist_rel()); MIX = union(APPLE, CITRUS); curr_rel = MIX; display_list(mkdisplist_rel()); */ proc showrel { para rel; if (rel==@) { writeln("EDEN: ERROR: showrel has been given an "// "undefined table."); return [[[]]]; } autocalc = 0; curr_rel = rel; display_list(mkdisplist_rel()); if (rel# == 2) writeln("(1 row)"); else writeln("(" // str(rel#-1) // " rows)"); curr_rel = _DUMMY; autocalc = 1; }; ## ## Original file newselect2.e (length 2709, dated Oct 27 2001) follows... ## autocalc=0; func select /* t2 = select(t1,c,c_op,c_val) */ { auto i,j,k,addcol,compval, constval, constelt; tlist1 = []; /* why isn't tlist auto? */ if ($1==@) { writeln("EDEN: ERROR: select has been given an "// "undefined table."); return @; } else if (!isinlist($2, tail($1[1]))) { writeln("EDEN: ERROR: select has been given an "// "invalid attribute."); return @; } append tlist1, $1[1]; keys = getcolval($1,getcolumn($1,$2)); /* writeln(type($4), " ", $4); indicates types of selection */ constelt =((type($4) == "string") && ($4[1]== '\"')) ? cutquotes($4) : $4; constval = []; for (i=1; i<=$1#-1; i++) constval = constval // [constelt]; compval = constval; /* constval is the list of constant values of type number or string that is appropriate when $4 is a literal value */ if ((type($4) == "string") && ($4[1]!= '\"')) { if (!isinlist($4, tail($1[1]))) { writeln("EDEN: ERROR: select has been given an "// "invalid attribute."); return @; } else compval = getcolval($1,getcolumn($1,$4)); } /* compval is the list of values resulting from column selection where $4 is the name of an attribute in the relation $1 */ switch($3) { case "==" : { for (i=1; i<=keys#; i++) { if (keys[i] == compval[i]) append tlist1,$1[i+1]; } break; } case "!=" : { for (i=1; i<=keys#; i++) { if (keys[i] != compval[i]) append tlist1,$1[i+1]; } break; } case "<" : { for (i=1; i<=keys#; i++) { if (keys[i] < compval[i]) append tlist1,$1[i+1]; } break; } case "<=" : { for (i=1; i<=keys#; i++) { if (keys[i] <= compval[i]) append tlist1,$1[i+1]; } break; } case ">" : { for (i=1; i<=keys#; i++) { if (keys[i] > compval[i]) append tlist1,$1[i+1]; } break; } case ">=" : { for (i=1; i<=keys#; i++) { if (keys[i] >= compval[i]) append tlist1,$1[i+1]; } break; } default : writeln("EDDI/P Error: not a comparison."); return(@); } return makedistinct(tlist1); } func select_wrapper { para tbl, pred; auto var, op, val, i, j; i = 1; while (i <= pred# && (isalphanum (pred[i]) || pred[i] == ' ')) i++; var = stripspace(substr (pred, 1, i - 1)); j = i; while (i <= pred# && pred[i] != ' ' && !isalphanum (pred [i]) && pred[i] != '\"') i++; /* originally the terminating condition pred[i] == '\"' was omitted */ op = stripspace (substr (pred, j, i - 1)); val = converttonum (stripspace (substr (pred, i, pred#))); return select (tbl, var, op, val); } autocalc=1; ## ## Original file curragent.e (length 2560, dated Oct 10 2001) follows... ## %eden /* this resets curr_agent to 0 whenever an sql query is parsed, and so ensures that the vanilla pivot operation is applied in eddi translation phase */ SQL0_statement is ["suffix", ";", "SQL1", ["script", ["execute", "curr_agent = 0;"], ["declare","statement"], ["setparas",["statement"]], ["later","append SQL0_statement_list, %%;","statement"]] ]; SQL_statement is ["suffix", ";", "SQL1", ["script", ["execute", "curr_agent = 0;"], ["declare","statement"], ["setparas",["statement"]], ["later","append SQL_statement_list, %%;","statement"]] ]; SQL_to_eddi_statement is ["suffix", ";", "SQL1", ["script", ["execute", "curr_agent = 0;"], ["declare","statement"], ["setparas",["statement"]], ["later","append SQL_to_eddi_statement_list, %%;","statement"]] ]; /* eddi_statement_1 = ["prefix", "?", "table_val", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "showrel (%%);", "relname"], ["execute", "curr_agent=1;"]], ["fail", "eddi_statement_2"]]; */ /* For reg_exp queries rather than just table name */ eddi_statement_1 = ["prefix", "?", "rel_exp", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "showrel (%%);", "relname"], ["execute", "curr_agent = 1;"] ], ["fail", "eddi_statement_2"]]; eddi_statement_2 = ["prefix", "~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "droptable (%%);", "relname"], ["execute", "curr_agent = 2;"] ], ["fail", "eddi_statement_3"]]; eddi_statement_3 = ["pivot", "<<", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["later", "$$ = addvals ($$, %%);", "relname", "relname", "v_substrs[2]"], ["execute", "curr_agent = 3;"] ], ["fail", "eddi_statement_4"]]; eddi_statement_4 = ["pivot", "!!", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["later", "$$ = delvals ($$, %%);", "relname", "relname", "v_substrs[2]"], ["execute", "curr_agent = 4;"] ], ["fail", "eddi_statement_5"]]; eddi_statement_5 = ["pivot", "is", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["later", "$$ is %%;", "relname", "expr"], ["execute", "curr_agent = 5;"] ], ["fail", "eddi_statement_6"]]; eddi_statement_6 = ["pivot", "(", ["table_name", "create_state"], ["script", ["declare", "relname", "cdata"], ["setparas", ["relname"], ["cdata"]], ["later", "$$ = create ($$); addtotablelist (\"$$\");", "relname", "cdata", "relname"], ["execute", "curr_agent = 6;"] ], ["fail", "eddi_statement_7"]]; ## ## Original file newpivctn.e (length 3229, dated Nov 1 2001) follows... ## %eden autocalc=0; /* func pivot { para instr, piv, ignore; auto i; i = extract (instr, piv, ignore, 1); if ( (i == 0) || ( ((curr_agent==1) || (curr_agent==5) || (curr_agent==8)) && ( (isdigit(instr[i-1])) || (i+piv#==instr#) || (isdigit(instr[i+piv#+1])) ) ) ) return []; else return [substr(instr,1,i-1), substr(instr,i+piv#,instr#)]; } */ /* func pivot { para instr, piv, ignore; auto i; i = extract (instr, piv, ignore, 1); /* consult setting of curr_agent to determine whether there is a possibility that '.' appears a decimal point and a rel op curr_agent is 1 (query), 5 (definition), 6 (assignment) */ if (i!=0) while ( (i!=0) && ((curr_agent==1) || (curr_agent==5) || (curr_agent==6)) && ( (isdigit(instr[i-1])) && (i+piv#<=instr#) &&(isdigit(instr[i+piv#])) ) ) i = extract (instr, piv, ignore, i+piv#); if (i == 0) return []; else return [substr(instr,1,i-1), substr(instr,i+piv#,instr#)]; } */ func pivot { para instr, piv, ignore; auto i; i = extract (instr, piv, ignore, 1); /* consult setting of curr_agent to determine whether there is a possibility that '.' appears a decimal point and a rel op curr_agent is 1 (query), 5 (definition), 6 (assignment) */ if (i!=0) while ( (i!=0) && ( ( ((curr_agent==1)||(curr_agent==5)||(curr_agent==6)) && ( (i>1) && (isdigit(instr[i-1])) && (i+piv#<=instr#) &&(isdigit(instr[i+piv#])) ) ) || ( ((i>1) && (ischar(instr[i-1])) && (ischar(instr[i])) ) ||( (ischar(instr[i+piv#-1])) && (i+piv#<=instr#) && (ischar(instr[i+piv#])) ) ) ) ) i = extract (instr, piv, ignore, i+piv#); if (i == 0) return []; else return [substr(instr,1,i-1), substr(instr,i+piv#,instr#)]; } /* the three versions of pivot above are a flawed pivot that distinguishes decimal point from intersect, but can this overlook intersect, a better version that finds intersect OK in any event, and a version that also detects when a alphabetic pivot occurs in the adjacent context of a letter, as in IN in SINNING */ func converttonum { para instr; auto i, radix, sum; i = instr#; radix = 1; sum = 0; while ((i >= 1) && (isdigit (instr [i]))) { sum += ((instr [i] - '0') * radix); radix = radix * 10; i--; } if (i==0) return sum; if (!isdigit(instr [i]) && (instr[i]!='.')) return instr; if (instr[i]=='.') sum2 = float(sum) / float(radix); radix = 1; i--; /* writeln(sum2); */ sum= 0; while (i >= 1) { if (!isdigit(instr[i])) return instr; if (isdigit (instr [i])) { sum += ((instr [i] - '0') * radix); radix = radix * 10; i--; } } /* writeln(" ", i); */ return sum+sum2; } autocalc=1; ## ## Original file asgn.e (length 957, dated Oct 10 2001) follows... ## /* adding an assignment of relations to eddi, as in X = APPLE : PRICE > 0.25;*/ /* observe assignment before the create table clause which is identified through its use of the round brackets. Otherwise have problems with assignments of the form X = ( ... ); Statement 6 is =, statement 7 is create, statement 8 is # */ %eden eddi_statement_7 = ["pivot", "(", ["table_name", "create_state"], ["script", ["declare", "relname ", "cdata"], ["setparas", ["relname"], ["cdata"]], ["later", "$$ = create ($$); addtotablelist (\"$$\");", "relname", "cdata", "relname"], ["execute", "curr_agent=7;"]], ["fail", "eddi_statement_8"]]; eddi_statement_6 = ["pivot", "=", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["later", "$$ = %%;", "relname", "expr"], ["execute", "curr_agent=6;"]], ["fail", "eddi_statement_7"]]; eddi_statement_8 = ["literal", "#", ["script", ["execute", "listtables ();"]]]; ## ## Original file prec.e (length 1191, dated Oct 9 2001) follows... ## %eden /* this file changes the precedence of the eddi ops - giving higher precedence to * than to % and : and lowest precedence to +, - and . */ rel_exp = op_exp ('+', "rel_exp_1"); rel_exp_1 = op_exp ('-', "rel_exp_2"); rel_exp_5 = op_exp ('*', "rel_exp_6"); rel_exp_2 = op_exp ('.', "rel_exp_3"); rel_exp_3 = ["rev_pivot", "%", ["rel_exp", "attr_list"], ["script", ["declare", "expr_part", "attr_part"], ["setparas", ["expr_part"], ["attr_part"]], ["execute", "%% is " // lookupop ('%') // "(%%, %%);", "v_paras[1]", "expr_part", "attr_part"]], ["ignore", ["bras"]], ["fail", "rel_exp_4"]]; rel_exp_4 = ["rev_pivot", ":", ["rel_exp", "predicate"], ["script", ["declare", "expr_part"], ["setparas", ["expr_part"], []], ["execute", "%% is " // lookupop (':') // "(%%, ##);", "v_paras[1]", "expr_part", "v_substrs[2]"]], ["ignore", ["bras"]], ["fail", "rel_exp_5"]]; /* it overcomes the problems of parsing eddi expressions such as: ?ALLFRUITS * APPLE : BEGIN < 4; and deals with the sql equivalent SELECT * FROM ALLFRUITS, APPLE WHERE BEGIN < 4; well also More complex expressions such as SELECT * FROM ALLFRUITS WHERE (BEGIN < 4 AND END > 8) OR BEGIN = 5; still parse also */ ## ## Original file catalogue.e (length 5792, dated Oct 31 2001) follows... ## %eddi _CATALOGUE ( relname CHAR, reltype CHAR, defn CHAR, ptr POINTER); %eden /* this line was added after type checking: it makes use of redundant fields in the relation table record that had been inappropriately used for key information */ _CATALOGUE[1][1] = ["string", "string", "string", "pointer"]; func search_CAT { para tablename; auto cat, i, result; cat = _CATALOGUE; i= 1; result = 0; shift cat; while (cat!=[]) { i++; if (cat[1][1] == tablename) result = i; shift cat; } return result; } proc delrelvar { para tablename; /* name of table - as string - presumed to be in the catalogue */ *(_CATALOGUE[search_CAT(tablename)][4]) = @; } eddi_statement_8 = ["literal", "#", ["script", ["execute", "curr_agent=8; showrel(CATALOGUE);"]]]; eddi_statement_1 = ["prefix", "?", "rel_exp", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "showrel (%%);", "relname"], ["execute", "curr_agent=1;"]],["fail", "eddi_statement_2"]]; /* handle this checking elsewhere in parsing rel expressions eddi_statement_1 = ["prefix", "?", "rel_exp", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "if (search_CAT(%%)!=0) showrel (%%); else writeln(\"Table not in catalogue\");", "relname", "relname"], ["execute", "curr_agent=1;"]],["fail", "eddi_statement_2"]]; */ eddi_statement_2 = ["prefix", "~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "if ((%%[1]!='_') && (search_CAT(%%)>2)) { delrelvar(%%); delete _CATALOGUE, search_CAT(%%);} else {if (search_CAT(%%)==2) writeln (\"Can't delete the catalogue\"); else writeln(\"Table / view name is not in the catalogue\");}", "relname", "relname", "relname", "relname", "relname"], ["execute", "curr_agent=2;"]], ["fail", "eddi_statement_3"]]; eddi_statement_5 = ["pivot", "is", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["execute", "curr_agent=5; instr = v_string;"], ["later", "if (search_CAT(%%)==0) { $$ is %%; _CATALOGUE = addvals (_CATALOGUE, [\"$$\", \"view\", instr, &$$]); } else writeln(\"Table name already in use\");", "relname", "relname", "expr", "relname", "relname"]], ["fail", "eddi_statement_6"]]; eddi_statement_6 = ["pivot", "=", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["later", "if (search_CAT(%%)==0) { $$ = %%; _CATALOGUE = addvals (_CATALOGUE, [\"$$\", \"table\", \"\", &$$]); } else writeln(\"Table name already in use\");", "relname", "relname", "expr", "relname", "relname"], ["execute", "curr_agent=6;"]], ["fail", "eddi_statement_7"]]; eddi_statement_7 = ["pivot", "(", ["table_name", "create_state"], ["script", ["declare", "relname", "cdata"], ["setparas", ["relname"], ["cdata"]], ["later", "if (search_CAT(%%)==0) { $$ = create ($$); _CATALOGUE = addvals (_CATALOGUE, [\"$$\", \"table\", \"\", &$$]); } else writeln(\"Table name already in use\");", "relname", "relname", "cdata", "relname", "relname"], ["execute", "curr_agent=7;"]], ["fail", "eddi_statement_8"]]; %eddi CATALOGUE is _CATALOGUE % relname, reltype; %eden func size { para tblname; return *(_CATALOGUE[search_CAT(tblname)][4])# -1; } /* writeln(size("CATALOGUE")); */ func typerel { para tblname; return tail((*(_CATALOGUE[search_CAT(tblname)][4]))[1]); } /* writeln(typerel("CATALOGUE")); */ func typedom { para tblname; return (*(_CATALOGUE[search_CAT(tblname)][4]))[1][1]; } /* writeln(typedom("CATALOGUE")); */ func relvartype { para tblname; return _CATALOGUE[search_CAT(tblname)][2]; } /* writeln(relvartype("CATALOGUE")); */ func viewdefn { para tblname; return _CATALOGUE[search_CAT(tblname)][3]; } func searchCAT { para tablename; auto cat, i, result; cat = CATALOGUE; i= 1; result = 0; shift cat; while (cat!=[]) { i++; if (cat[1][1] == tablename) result = i; shift cat; } return result; } proc describe { para tblname; if (searchCAT(tblname)!= 0) { writeln(tblname // " is a " // relvartype(tblname)); if (relvartype(tblname)=="view") writeln("\tdefn: " // viewdefn(tblname)); write("\ttype: "); writeln(typedom(tblname)); write("\tattr: "); writeln(typerel(tblname)); write("\tsize: "); writeln(size(tblname)); } else writeln ("There is no table or view ", tblname); } eddi_statement = ["suffix", ";", "eddi_statement_0", ["fail", "eddi_statement_0"]]; eddi_statement_0 = ["prefix", "??", ["describetbl"], ["fail", "eddi_statement_1"]]; describetbl = ["read_all", [], ["script", ["execute", "if (searchCAT(\"%%\")!=0) describe(\"%%\"); else writeln(\"%%\" // \" is not in the catalogue\");", "v_string", "v_string", "v_string"]]]; eddi_statement_6 = ["pivot", "=", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["later", "if (search_CAT(%%)==0) { if (%%!=@) {$$ = %%; _CATALOGUE = addvals (_CATALOGUE, [\"$$\", \"table\", \"\", &$$]);} else writeln(\"Invalid assignment\"); } else writeln(\"Table name already in use\");", "relname", "expr", "relname", "expr", "relname", "relname"], ["execute", "curr_agent=6;"]], ["fail", "eddi_statement_7"]]; eddi_statement_5 = ["pivot", "is", ["table_name", "rel_exp"], ["script", ["declare", "relname", "expr"], ["setparas", ["relname"], ["expr"]], ["execute", "curr_agent=5; instr = v_string;"], ["later", "if (search_CAT(%%)==0) { if (%%!=@) {$$ is %%; _CATALOGUE = addvals (_CATALOGUE, [\"$$\", \"view\", instr, &$$]);} else writeln(\"Invalid definition\"); } else writeln(\"Table name already in use\");", "relname", "expr", "relname", "expr", "relname", "relname"]], ["fail", "eddi_statement_6"]]; ## ## Original file newproject.e (length 3268, dated Oct 23 2001) follows... ## %eden /* 22/10/01 WMB attempts to prevent serious errors when projection called with invalid arguments. Now check to see whether list of attrs in projection is valid, and whether really have a table value to project from. If invalid, returns @ rather than [[[]]] */ func isinlist { para elt, lst; auto result; result = 0; while(lst!=[]) { if (elt==lst[1]) result = 1; shift lst; } return result; } func inclist { para l1, l2; auto result; result = 1; while (l2!=[]) { if (!isinlist(l2[1], l1)) result = 0; shift l2; } return result; } /* func project /* t2 = project(t1,c_list) */ { auto i,j,k; /* writeln("Project called with pars ", $1, " ", $2); */ if ($#<1) { writeln("EDEN: ERROR: table not provided for project."); return @; } else { if ($1==@) { writeln("EDEN: ERROR: project has received an "// "undefined table."); return @; } else if (!inclist(tail($1[1]), $2)){ writeln("EDEN: ERROR: invalid attribute "// "in projection."); return @; } } tlist = [[[]]]; /* For renaming attrs: c_list can contain [col_name,new_name] - ME*/ for (i=1; i<=$2#; i++) if (type($2[i]) == "list") { append tlist[1],$2[i][2]; $2[i] = $2[i][1]; } else append tlist[1],$2[i]; for (i=2; i<=$1#; i++) append tlist,[]; for (i=1; i<=$2#; i++) { addcol = getcolumn($1,$2[i]); append tlist[1][1], $1[1][1][addcol]; for (j=2; j<=$1#; j++) append tlist[j], $1[j][addcol]; } return makedistinct(tlist); } */ func extractattrs { para attrlist; auto result; result = []; while (attrlist != []) { result = result // [(type(attrlist[1])=="list")?attrlist[1][1]:attrlist[1]]; shift attrlist; } return result; } func project { auto i,j,k,attr; /* project takes as its 2nd argument a single attribute name or an (attribute name, rename) pair */ /* writeln("Project called with pars ", $1, " ", $2); */ if ($#<1) { writeln("EDEN: ERROR: table not provided for project."); return @; } else { if ($1==@) { writeln("EDEN: ERROR: project has received an "// "undefined table."); return @; } else if (!inclist(tail($1[1]), extractattrs($2))) { writeln("EDEN: ERROR: invalid attribute "// "in projection."); return @; } } tlist = [[[]]]; /* For renaming attrs: c_list can contain [col_name,new_name] - ME*/ for (i=1; i<=$2#; i++) if (type($2[i]) == "list") { append tlist[1],$2[i][2]; $2[i] = $2[i][1]; } else append tlist[1],$2[i]; for (i=2; i<=$1#; i++) append tlist,[]; for (i=1; i<=$2#; i++) { addcol = getcolumn($1,$2[i]); append tlist[1][1], $1[1][1][addcol]; for (j=2; j<=$1#; j++) append tlist[j], $1[j][addcol]; } return makedistinct(tlist); } ## ## Original file renameattrs.e (length 445, dated Oct 22 2001) follows... ## attr_list = ["split", ",", "col_naming", ["script", ["allparas", "attrs"], ["execute", "%% is %%;", "v_paras[1]", "attrs"]]]; col_naming = ["pivot", ">>", ["col_name", "col_name"], ["script",["declare", "nameL", "nameR"], ["setparas", ["nameL"], ["nameR"]], ["execute", "%% is [%%, %%];", "v_paras[1]", "nameL", "nameR"]], ["fail", "col_name"]]; col_name = ident_ex ([["script", ["execute", "%% = \"%%\";", "v_paras[1]", "v_string"]]]); ## ## Original file comment.e (length 816, dated Oct 25 2001) follows... ## eddi_statement = ["suffix", ";", "eddi_comment", ["fail", "eddi_comment"]]; eddi_comment = ["prefix", "##", ["anything"], ["fail", "eddi_statement_0"]]; eddi_notation = ["\n", "eddi_statement", []]; /* eddi_comment = ["prefix", "##", ["anyline"], ["fail", "eddi_statement_0"]]; anyline = ["read_line", []]; func read_line { para instr; auto i, result; result = ""; i=1; if (instr#>0) while ((i<=instr#) && (instr[i]!='\n')) { result = result // instr[i]; i++; } return result; } */ /* having problems with this - with read_all comments are eating into lines until terminated by a semi-colon, and above is causing index errors. Previous attempts giving lower precedence to the match with prefix ## interfered with comments with keywords (such as 'is') in them! */ ## ## Original file deps.e (length 3753, dated Nov 20 2001) follows... ## func dependants { para tblname; auto result, symbolinfo, currvar, ddcurrvar; result = [[], []]; symbolinfo = symboldetail(tblname)[4]; /* writeln(symboldetail(tblname)[4]); */ if (symbolinfo!=[]) while (symbolinfo!=[]) { currvar = symbolinfo[1]; if (search_CAT(currvar)!=0) result[1] = result[1] // [currvar]; else result[2] = result[2] // [currvar]; ddcurrvar = dependants(currvar); result[1] = result[1] // ddcurrvar[1]; result[2] = result[2] // ddcurrvar[2]; shift symbolinfo; } result[1] = Makedistinct(result[1]); result[2] = Makedistinct(result[2]); return result; } func dependees { para tblname; auto result, symbolinfo, currvar, ddcurrvar; result = [[], []]; symbolinfo = symboldetail(tblname)[5]; /* writeln(symboldetail(tblname)[4]); */ if (symbolinfo!=[]) while (symbolinfo!=[]) { currvar = symbolinfo[1]; if (search_CAT(currvar)!=0) result[1] = result[1] // [currvar]; else result[2] = result[2] // [currvar]; ddcurrvar = dependees(currvar); result[1] = result[1] // ddcurrvar[1]; result[2] = result[2] // ddcurrvar[2]; shift symbolinfo; } result[1] = Makedistinct(result[1]); result[2] = Makedistinct(result[2]); return result; } /* Makedistinct invocation introduced here by WMB on 20/11/01 */ /* proc garbage_collect { auto i, j, dCAT; for (i=3; i<=CATALOGUE#; i++) { dCAT = dependants(CATALOGUE[i][1]); writeln("i = ", i); writeln(dCAT); writeln((dCAT[2])#); for (j=1; j<=dCAT[2]#; j++) { writeln(dependants(dCAT[2][j])); if ((dependants(dCAT[2][j])[1])==[]) { writeln(dCAT[2][j]); } } } } */ /* idea is to inspect the list of dependants of variables in the CATALOGUE that are of the form var_ ... , and perform x=x; for each one that has no dependant in the CATALOGUE */ proc garbage_collect { auto i, j, dCAT; for (i=2; i<=CATALOGUE#; i++) { dCAT = dependants(CATALOGUE[i][1]); /* writeln("i = ", i); writeln(dCAT); writeln((dCAT[2])#); */ for (j=1; j<=dCAT[2]#; j++) { /* writeln(dependants(dCAT[2][j])); */ if ((dependants(dCAT[2][j])[1])==[]) { /* writeln(dCAT[2][j]); */ self_asgn(dCAT[2][j]); } } } } proc self_asgn { para varname; execute (varname // "=" // varname //";"); } /* this removes all links to var_n variables that aren't used to maintain views - could also execute forget(varname); to delete entirely */ eddi_statement = ["suffix", ";", "eddi_comment", ["script", ["later", "garbage_collect();"]], ["fail", "eddi_comment"]]; /* eliminate inappropriate dependencies after each eddi_statement */ proc describe { para tblname; if (searchCAT(tblname)!= 0) { writeln(); writeln(tblname // " is a " // relvartype(tblname)); if (relvartype(tblname)=="view") writeln("\tdefn: " // viewdefn(tblname)); write("\ttype: "); writeln(typedom(tblname)); write("\t\attr: "); writeln(typerel(tblname)); write("\tsize: "); writeln(size(tblname)); write("The list of views dependent on ", tblname, " is : "); writeln(dependants(tblname)[1]); writeln(); } else writeln ("There is no table or view ", tblname); } eddi_statement_2 = ["prefix", "~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "if ((%%[1]!='_') && (search_CAT(%%)>2) && (dependants(%%)[1]==[])) { delrelvar(%%); delete _CATALOGUE, search_CAT(%%);} else {if (search_CAT(%%)==2) writeln (\"Can't delete the catalogue\"); else {if ((search_CAT(%%)>2) && (dependants(%%)[1]!=[])) writeln(\"Cannot delete table / view with dependants\"); else writeln(\"Table / view name is not in the catalogue\");}}", "relname", "relname", "relname", "relname", "relname", "relname", "relname", "relname"], ["execute", "curr_agent=2;"]], ["fail", "eddi_statement_3"]]; ## ## Original file checktype.e (length 5671, dated Oct 31 2001) follows... ## /* these observation rules need not be changed - include for info: eddi_statement_7 = ["pivot", "(", ["table_name", "create_state"], ["script", ["declare", "relname", "cdata"], ["setparas", ["relname"], ["cdata"]], ["later", "if (search_CAT(%%)==0) { $$ = create ($$); _CATALOGUE = addvals (_CATALOGUE, [\"$$\", \"table\", \"\", &$$]); } else writeln(\"Table name already in use\");", "relname", "relname", "cdata", "relname", "relname"], ["execute", "curr_agent=7;"]], ["fail", "eddi_statement_8"]]; create_state = ["suffix", ")", "create_state_1", ["script", ["declare", "cdata"], ["setparas", ["cdata"]], ["execute", "%% is convertcols (%%);", "v_paras[1]", "cdata"]]]; create_state_1 = ["split", ",", "col_info", ["script", ["allparas", "cols"], ["execute", "%% is %%;", "v_paras[1]", "cols"]]]; col_info = ["pivot", " ", ["col_name", "col_info_2"], ["script", ["declare", "cname", "cdata"], ["setparas", ["cname"], ["cdata"]], ["execute", "%% is [%%, %%];", "v_paras[1]", "cname", "cdata"]]]; col_info_2 = ["suffix", "key", "anything", ["script", ["execute", "%% = \"#\";", "v_paras[1]"]], ["fail", "col_info_3"]]; */ col_info_3 = ["read_all", [], ["script", ["execute", "%% = \"%%\";", "v_paras[1]", "v_string"]]]; /* modifying col_info_3 to return the type of the domain for col */ /* func create { auto i, tlist; tlist = [[[]]]; for (i=1; i<=$#; i+=2) { append tlist[1],$[i]; if (($[i+1] == "CHAR")||($[i+1] == "char")) append tlist[1][1],"string"; else if (($[i+1] == "REAL")||($[i+1] == "real")) append tlist[1][1],"float"; else append tlist[1][1],"int"; } return tlist; } */ /* for type checking in tuple introduction not to pose problems initially, must ensure that _CATALOGUE has typeseq as given by _CATALOGUE[1][1] = ["string", "string", "string", "pointer"]; */ func create { auto i, tlist; /* for (i=1; i<=$#; i++) writeln($[i]); */ tlist = [[[]]]; for (i=1; i<=$#; i+=2) { append tlist[1],$[i]; if (($[i+1] == "CHAR")||($[i+1] == "char")) append tlist[1][1],"string"; else if (($[i+1] == "REAL")||($[i+1] == "real")) append tlist[1][1],"float"; else if (($[i+1] == "INT")||($[i+1] == "int")) append tlist[1][1],"int"; else if (($[i+1] == "POINTER")||($[i+1] == "pointer")) append tlist[1][1],"pointer"; else { writeln("Unrecognised type - defaults to int"); append tlist[1][1], "int";} } return tlist; } /* also need to restrict add and delete tuples to views eddi_statement_3 = ["pivot", "<<", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["later", "$$ = addvals ($$, %%);", "relname", "relname", "v_substrs[2]"]], ["fail", "eddi_statement_4"]]; */ func istablevar { para tblname; return ((search_CAT(tblname)!=0) && (CATALOGUE[search_CAT(tblname)][2]=="table")); } /* writeln(istablevar("allfruits")); writeln(istablevar("allfruit")); writeln(istablevar("FRUITS")); */ eddi_statement_3 = ["pivot", "<<", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["execute", "curr_agent=3;"],["later", "if(istablevar(\"$$\")) $$ = addvals ($$, %%); else writeln(\"Can't add tuples to a view / non-existent table\");", "relname", "relname", "relname", "v_substrs[2]"]], ["fail", "eddi_statement_4"]]; eddi_statement_4 = ["pivot", "!!", ["table_name", "tuples"], ["script", ["declare", "relname"], ["setparas", ["relname"], []], ["execute", "curr_agent=4;"], ["later", "if(istablevar(\"$$\")) $$ = delvals ($$, %%); else writeln(\"Can't delete tuples from a view / non-existent table\");", "relname", "relname", "relname", "v_substrs[2]"]], ["fail", "eddi_statement_5"]]; /* eddi_statement_3 and eddi_statement_4 have been modified to prevent adding to / deleting from a view: require no further modification - only addvals needs to be changed to prevent inappropriately typed tuples from being introduced */ func addvals /* table2 = addvals(t1,tup1,tup2,...,tupN) */ { auto i; if ($#<1) { writeln("EDEN: ERROR: table not provided for addvals."); return [[[]]]; } else if ($1==@) { writeln("EDEN: ERROR: addvals has received an "// "undefined table."); return [[[]]]; } for (i=2; i<=$#; i++) { if ($1[1]#-1 == $[i]#) { if (typeseq($[i])==$1[1][1]) { if (notin($1,$[i])==1) { append $1,$[i]; /* writeln("Tuple added to table"); */ } else writeln("EDDI/EDEN ERROR: tuple exists already."); } else writeln("EDEN: ERROR: Tuple of incorrect datatype"); } else writeln("EDEN: ERROR: incorrect number of values."); } return $1; } /* typeseq returns the list of types of tuple elts in a list */ func typeseq { para tple; auto result; result = []; while (tple!=[]) { result = result // [type(tple[1])]; shift tple; } return result; } func ucompatdom /* bool = ucompat(t1,t2): union compatible on domain */ { return ($1[1][1] == $2[1][1]); } func ucompatrel /* bool = ucompat(t1,t2): union compatible on attrname */ { return (tail($1[1]) == tail($2[1])); } /* propose to define ucompat(x,y) as ucompatdom(x,y) && ucompatdom(x,y); */ func ucompat { para x,y; return ucompatdom(x,y) && ucompatrel(x,y); } ## ## Original file error.e (length 2401, dated Oct 31 2001) follows... ## eddi_statement_8 = ["literal", "#", ["script", ["execute", "curr_agent = 8; showrel (CATALOGUE);"]], ["fail", "error_unrecog"]]; error_unrecog = ["read_all", [], ["script", ["execute", "writeln(\"Unrecognised EDDI statement\");"]]]; table_name = ident_ex ([["script", ["execute", "%% = \"%%\";", "v_paras[1]", "v_string"]], ["fail", "error_tblname"]]); table_val = ident_ex ([["script", ["execute", "if (search_CAT(%%) != 0) %% is %%; else writeln(\"Invalid table\"", "v_string", "v_paras[1]", "v_string"]], ["fail", "error_tblval"]]); /* table_val = ident_ex ([["script", ["execute", "%% is %%;", "v_paras[1]", "v_string"]], ["fail", "error_tblval"]]); */ table_val = ident_ex ([["script", ["execute", "if (search_CAT(\"%%\")!=0) %% is %%; else writeln(\"Invalid table reference\");", "v_string", "v_paras[1]", "v_string"]], ["fail", "error_tblval"]]); error_tblval = ["read_all", [], ["script", ["execute", "writeln(\"Unrecognised table value\");"]]]; error_tblname = ["read_all", [], ["script", ["execute", "writeln(\"Unrecognised table name\");"]]]; /* other error issue addressed 27/10/01 is response to ?select; in eddi: don't invoke showrel(tblname) unless the table name is in the catalogue - modified table_val above is to fix this */ alphanum = ["read_all", [["a", "z"], ["A", "Z"], ["_"], ["0", "9"]], ["fail", "error_ident"]]; error_ident = ["read_all", [], ["script", ["execute", "writeln(\"Unrecognised EDDI identifier\");"]]]; col_name = ident_ex ([["script", ["execute", "%% = \"%%\";", "v_paras[1]", "v_string"]], ["fail", "error_col_name"]]); error_col_name = ["read_all", [], ["script", ["execute", "writeln(\"EDDI: unrecognised column name\");"]]]; col_info = ["pivot", " ", ["col_name", "col_info_2"], ["script", ["declare", "cname", "cdata"], ["setparas", ["cname"], ["cdata"]], ["execute", "%% is [%%, %%];", "v_paras[1]", "cname", "cdata"]], ["fail", "error_col_info"]]; error_col_info = ["read_all", [], ["script", ["execute", "writeln(\"EDDI: unrecognised column for projection\");"]]]; create_state = ["suffix", ")", "create_state_1", ["script", ["declare", "cdata"], ["setparas", ["cdata"]], ["execute", "%% is convertcols (%%);", "v_paras[1]", "cdata"]], ["fail", "error_create_state"]]; error_create_state = ["read_all", [], ["script", ["execute", "writeln(\"EDDI: unrecognised tuple list in table create\");"]]]; ## ## Original file truncate.e (length 1629, dated Oct 29 2001) follows... ## /* this introduces ~~X; for DROP and ~X; for TRUNCATE */ /* eddi_statement_2 = ["prefix", "~~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "if ((%%[1]!='_') && (search_CAT(%%)>2)) { delrelvar(%%); delete _CATALOGUE, search_CAT(%%);} else {if (search_CAT(%%)==2) writeln (\"Can't delete the catalogue\"); else writeln(\"Table / view name is not in the catalogue\");}", "relname", "relname", "relname", "relname", "relname"], ["execute", "curr_agent=2;"]], ["fail", "eddi_statement_2a"]]; */ eddi_statement_2a = ["prefix", "~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "if ((%%[1]!='_') && (search_CAT(%%)!=0)) {if (CATALOGUE[search_CAT(%%)][2]==\"table\") $$ = [$$[1]]; else writeln(\"Can't truncate a view\");} else writeln(\"Table / view name is not in the catalogue\");", "relname", "relname", "relname", "relname", "relname"],["execute", "curr_agent = 2;"]],["fail", "eddi_statement_3"]]; eddi_statement_2 = ["prefix", "~~", "table_name", ["script", ["declare", "relname"], ["setparas", ["relname"]], ["later", "if ((%%[1]!='_') && (search_CAT(%%)>2) && (dependants(%%)[ 1]==[])) { delrelvar(%%); delete _CATALOGUE, search_CAT(%%);} else {if (search_CAT(%%)==2) writeln (\"Can't delete the catalogue\"); else {if ((search_CAT(%%)>2) && (dependants(%%)[1]!=[])) writeln(\"Cannot delete table / view with dependants\"); else writeln(\"Table / view name is not in the catalogue\");}}", "relname", "relname", "relname", "relname", "relname", "relname", "relname", "relname"], ["execute", "curr_agent=2;"]], ["fail", "eddi_statement_2a"]]; ## ## Original file unnjoin.e (length 957, dated Oct 31 2001) follows... ## /* this is the SQL style unnatural join that replaces natural join */ func unnjoin { auto i,j,k,x,y,z; if ($#<2) { writeln("EDEN: ERROR: two tables not provided for njoin."); return @; } else if (($1==@) || ($2==@)) { writeln("EDEN: ERROR: njoin has received at least one "// "undefined table."); return @; } tlist1 = []; vals1 = []; vals2 = []; nvals1 = []; nvals2 = []; append tlist1, $1[1]; matcols = matchcols($1,$2); for (i=1; i<=matcols[1]#; i++) { $1[1][matcols[1][i]] = $1[1][matcols[1][i]] // "_1"; $2[1][matcols[2][i]] = $2[1][matcols[2][i]] // "_2"; } /* writeln($1[1]); */ attr = $1[1]; attr[1] = attr[1] // $2[1][1]; /* writeln($2[1]); */ for (i=2; i<=$2[1]#; i++) append attr, $2[1][i]; tlist = [attr]; /* writeln(tlist); */ for (x=2;x<=$1#;x++) for (y=2; y<=$2#; y++) { append tlist, ($1[x] // $2[y]); } return tlist; } ## ## Original file uneddify.e (length 909, dated Nov 1 2001) follows... ## %eden ## the uneddifying interface func ucompatdomrel { para x,y; return ucompatdom(x,y) && ucompatrel(x,y); } distinctvals = [1,0]; ucompatval = [ucompatdomrel, ucompatdom, ucompatrel]; joinval = ["njoin", "unnjoin"]; /* these descriptive identifiers aren't used except to initialise variables temporarily, but indicate the semantics of the various options for ucompatix etc */ CHECKDOMREL = 1; CHECKDOM = 2; CHECKREL = 3; NODUPROWS = 1; DUPROWS = 2; NATJOIN = 1; UNNATJOIN = 2; ucompatix = CHECKDOMREL; distinctix = NODUPROWS; joinix = NATJOIN; ucompat is ucompatval[ucompatix]; EDDI_distinct is distinctvals[distinctix]; EDDI_join is joinval[joinix]; operators is [[':',"select_wrapper"],['%',"project"],['.',"inter"],['*',EDDI_join],['+',"union"],['-',"diff"]]; rel_exp_5 is op_exp('*', "rel_exp_6"); proc changejoin: joinix { touch(&op_exp); } ## ## Original file ignoreva.e (length 559, dated Nov 29 2001) follows... ## %eden /* Fix by Ash: Ignore virtual agent statements */ eddi_comment = ["prefix", "##", ["anything"], ["fail", "eddi_virtualagent1"]]; eddi_virtualagent1 = ["prefix", ">>", ["anything"], ["fail", "eddi_virtualagent2"]]; eddi_virtualagent2 = ["prefix", "<>", ["anything"], ["fail", "eddi_virtualagent3"]]; eddi_virtualagent3 = ["prefix", "><", ["anything"], ["fail", "eddi_virtualagent4"]]; eddi_virtualagent4 = ["prefix", "<<", ["anything"], ["fail", "eddi_virtualagent5"]]; eddi_virtualagent5 = ["prefix", ">~", ["anything"], ["fail", "eddi_statement_0"]]; ## ## Original file newaddvals.e (length 730, dated Nov 29 2001) follows... ## /* this modified version of addvals allows duplicate tuples to be added to a table when EDDI is working in "allow duplicate tuple" evaluation mode */ func addvals /* table2 = addvals(t1,tup1,tup2,...,tupN) */ { auto i; if ($#<1) { writeln("EDEN: ERROR: table not provided for addvals."); return @; } else if ($1==@) { writeln("EDEN: ERROR: addvals has received an "// "undefined table."); return @; } for (i=2; i<=$#; i++) { if ($1[1]#-1 == $[i]#) { if ((notin($1,$[i])==1) || EDDI_distinct==0) append $1,$[i]; else writeln("EDDI/EDEN ERROR: tuple exists already."); } else writeln("EDEN: ERROR: incorrect number of values."); } return $1; } ## ## Original file commafix.e (length 173, dated Feb 27 2002) follows... ## /* Allows strings to contain commas - fix by Ash 24-2-2002 */ quotes=[["\"", "\""], ["quotes"]]; addblocks("quotes"); tuple_2=["split",",","tuple_3",["ignore",["quotes"]]]; ## ## Original file garbagefix.e (length 472, dated Jan 14 16:34) follows... ## proc garbage_collect { auto i, j, dCAT; for (i=2; i<=CATALOGUE#; i++) { dCAT = dependants(CATALOGUE[i][1]); /* writeln("i = ", i); writeln(dCAT); writeln((dCAT[2])#); */ for (j=1; j<=dCAT[2]#; j++) { /* writeln(dependants(dCAT[2][j])); */ if ((dependants(dCAT[2][j])[1])==[]) { /* writeln(dCAT[2][j]); */ /* this line changed on WMB's request 14 January 2004 [Ash] */ if (substr(dCAT[2][j], 1, 4) == "var_") self_asgn(dCAT[2][j]); } } } } EDEN-1.62/lib-tkeden-1.62/arca.eden0100644000177700001640000005675410251560574015343 0ustar empublicem/*** * - EDEN library routines - * * - edenlib.e - * ****/ /* $Id: arca.lib,v 1.2 2001/08/01 17:58:02 cssbz Exp $ */ /* used the operator `varname` which turns a string into a variable */ setbuf(stdout, 0); NullStr =""; ON = 1; OFF = 0; CART ='C'; LINE ='L'; LABEL ='T'; ABST ='A'; EXPL ='E'; INT ='I'; VERT ='V'; COL ='C'; DIAG ='D'; DEBUG ='N'; ARROW_BEGIN = 0.51; ARROW_END = 0.6; ARROW_FACTOR = 0.05; _ARROW = ON; _LABEL = ON; _line_colour=["red","blue","green","brown","thistle","yellow","lightblue"]; proc debugmsg { if (DEBUG=='Y') writeln($1); } proc _writeln { auto count; for (count = 1; count <= $#; count++) writeln($[count]); } func if_assign { return $1 ? $2 : $3; } proc check_mode { if ($1 == 0) writeln("ERROR LHS IS ABSTRACT OR UNDEFINED"); } func one_int { return [INT,EXPL,0,$1]; } UNDEF = one_int(@); UNDEF_VERT = [VERT, EXPL, 2, [[UNDEF], [UNDEF]]]; UNDEF_COL = [COL, EXPL, @, [[UNDEF]]]; func op_and { return $1 && $2; } func op_or { return $1 || $2; } func check_int{ auto modval, val,value, int; int = ($# == 2) ? $1 : $1[4][$3]; val = int[4]; if (val==@) return [$2[1],$2[2],$2[3],value]; modval = $2[3]; value = (modval==0 || modval==1 ) ? val : val % modval; if (value == 0) value = modval; if (modval==@) return[INT,ABST,int[3],value]; if ($2!=@) if (int[3]!=$2[3] && int[3]) { writeln("ERROR INTS OF INCOMPATIBLE MODULUS"); exit(0); } else return ($2[2]==EXPL) ? [$2[1],$2[2],$2[3],value] : [$2[1],$2[2],int[3],value]; else return[INT,@,@,int[4]]; } func int_mult { /* if ($1==2 || $2==@) return [INT,@,@,@]; */ if ($1[3]!=$2[3] && $1[3] && $2[3]) writeln("ERROR INTEGERS OF INCOMPATIBLE DIM"); else return [$1[1],$1[2],$1[3],$1[4] * $2[4]]; } func int_div { /* if ($1==2 || $2==@) return [INT,@,@,@]; */ if ($1[3]!=$2[3] && $1[3] && $2[3]) writeln("ERROR INTEGERS OF INCOMPATIBLE DIM"); else return [$1[1],$1[2],$1[3],int($1[4] / $2[4])]; } func int_add { /* if ($1==2 || $2==@) return [INT,@,@,@]; */ if ($1[3]!=$2[3] && $1[3] && $2[3]) writeln("ERROR INTEGERS OF INCOMPATIBLE DIM"); else return [$1[1],$1[2],$1[3],$1[4] + $2[4]]; } func int_sub { /* if ($1==2 || $2==@) return UNDEF; */ if ($1[3]!=$2[3] && $1[3] || $2[3]) { writeln("ERROR INTEGERS OF INCOMPATIBLE DIM"); return UNDEF; } else return ($1[3]>$2[3]) ? [$1[1],$1[2],$1[3],$1[4] - $2[4]] : [$1[1],$1[2],$2[3],$1[4] - $2[4]]; } func int_mod { if ($2[3]==0) return [$1[1],$1[2],$1[3],$1[4] % $2[4]]; else { writeln("ERROR ILLEGAL DIM IN MOD INT"); return UNDEF; }; } func int_rup { auto result, sign; if ($1[4] == @ || $2[4] == @) return UNDEF; sign = ($2[4] < 0) ? -1 : 1; result = $1[4] % $2[4]; return one_int((result == 0) ? $1[4] : (result > 0) ? $1[4] - result + sign * $2[4] : $1[4] + result - sign * $2[4]); } func int_smash { auto new_mod, int1, int2, result; int1 = $1[4]; int2 = $2[4]; if (int1 == @ || int2 == @ || $1[3] == @ || $2[3] == @) return UNDEF; new_mod = $1[3] * $2[3]; result = int1+$1[3]; while (result%$1[3] != int1 || result%$2[3] != int2) result = result+$1[3]; return [INT,$1[2],new_mod,result]; } func int_inv { auto u,v,q,r,f,g,h,m,n; n = $1[3]; m = $1[4]; if (n == @ || m == @) return UNDEF; u=m; v=n; r=n; f=1; g=0; h=0; while (r) { q=u/v; h=f-g*q; r=u-v*q; f=g; u=v; g=h; v=r; }; if (u==1) return [INT,EXPL,$1[3],f]; writeln("NO INVERSE - INT INV"); return UNDEF; } func int_prime {return [INT, EXPL, 0,$1[4]];}/*normalises after mod calc*/ func int_size {return [INT,EXPL,0,$1[3]];} func i_eq { return ($1[4]==$2[4]); } func int_lt { if ($1[3] == $2[3]) { return ($1[4] == @ || $2[4] == @) ? 0 : ($1[4] < $2[4]); } else { writeln("ERROR INTS OF INCOMPATIBLE DIM"); return 0; }; } func int_grt { if ($1[3] == $2[3]) { return ($1[4] == @ || $2[4] == @) ? 0 : ($1[4] > $2[4]); } else { writeln("ERROR INTS OF INCOMPATIBLE DIM"); return 0; } } func int_ltoe { if ($1[3] == $2[3]) { return ($1[4] == @ || $2[4] == @) ? 0 : ($1[4] <= $2[4]); } else { writeln("ERROR INTS OF INCOMPATIBLE DIM"); return 0; } } func int_gtoe { if ($1[3] == $2[3]) { return ($1[4] == @ || $2[4] == @) ? 0 : ($1[4] >= $2[4]); } else { writeln("ERROR INTS OF INCOMPATIBLE DIM"); return 0; } } func int_ne { if ($1[3] == $2[3]) { return ($1[4] == @ || $2[4] == @) ? 0 : ($1[4] != $2[4]); } else { writeln("ERROR INTS OF INCOMPATIBLE DIM"); return 0; } } func i_actval {return @;} /*replaces symbolic expressions with values */ func find_min { auto min, count; min = @; for(count=1; count<=$1#; count++) if ($1[count]!=@ && $2[count]) min = (min==@ || $1[count]<$1[min]) ? count : min; return min; } func col_dist{ para start, end; auto count, ncols, at, dists, useable; useable = []; dists = []; ncols = $# ; for(count = 1; count<=$3[3]; count++) { useable = useable//[1]; dists = dists//[@]; } if (start == 0 || end == 0) return UNDEF; if (start > $3[3] || end > $3[3]) { writeln( "START OR END POINT OUT OF RANGE OF PERM"); return UNDEF; } dists[start] = 0; for (at = find_min(dists,useable); at!=end && at!=@; at = find_min(dists,useable)) { for (count=3; count<=ncols; count++){ if ($[count][4][at][4]!=@ && $[count][4][at][4] && (dists[$[count][4][at][4]]==@ || dists[$[count][4][at][4]]>dists[at]+1)) dists[$[count][4][at][4]]=dists[at]+1; }; useable[at]=0; } return(one_int(dists[end])); } func col_mult { auto count, permsize, result; permsize = $1[4]#; result = []; if (($1[4]# != $2[4]#)) { writeln("ERROR INCOMPATIBLE PERMS"); return UNDEF_COL; } for (count = 1; count <= permsize; count= count+1) result = ($2[4][count][4]!=@ && $2[4][count][4] && $1[4][$2[4][count][4]][4]) ? result // [$1[4][$2[4][count][4]]] : result // [UNDEF]; return [COL,EXPL,permsize,result]; } func vert_col { return [COL, $1[2], $1[3], $1[4]]; } func join_cols { auto count, size, result; if ($1[3] == 0 || $2[3] == 0) return UNDEF_COL; if ($1[3] > $2[3]) { size = $1[3]; result = $1[4]; for (count = 1; count <= $2[3]; count++) if (result[count][4] == @) result[count] = $2[4][count]; } else { size = $2[3]; result = $2[4]; for (count = 1; count <= $1[3]; count++) if ($1[4][count][4] != @ && $1[4][count][4]) result[count] = $1[4][count]; }; return [COL, EXPL, size, result]; } func col_size { auto length, count, largest; length = $1#; largest = length; for (count = 1; count <= length; count++) if ($1[count][4] != @ && $1[count][4] > largest) largest = $1[count][4]; return largest; } func list_undef { para length; auto count, result; result = []; for (count = 1; count < length; count ++) append result, UNDEF; return result; } func check_col { auto ERROR, count, undef; ERROR = 0; if ($2[3] != 0){ undef = list_undef($2[3]); if ($1[4]# != $2[3]) { writeln("ERROR COLS OF INCOMPATIBLE SIZE"); ERROR = 1; } else for (count = 1; count <= $1[4]#; count++) { if ($1[4][count][4] != @ && $1[4][count][4] > $2[3]){ writeln("INT OUT OF RANGE IN COL"); ERROR = 1; }; }; } else undef = list_undef($1[4]#); return (ERROR==1) ? [COL,$2[2],$2[3], undef] : [COL,$2[2],$1[3],$1[4]]; } func c_make { auto size, count, result ; result = []; size = col_size($1); for (count = 1; count <= size; count++) append result, UNDEF; for (count = 1; count <= $1# - 1; count++) { if ($1[count][4] != @ && $1[count][4]) result[$1[count][4]] = $1[count+1]; if ($1[count+1][4] == @ && $1[count][4] == 0) result[$1[count][4]]= UNDEF; }; if ($1[$1#][4] != @ && $1[$1#][4]) result[$1[$1#][4]] = $1[1]; return [COL,EXPL,size,result]; } func col_exp { auto count, result, size; size = $2[4]; result = $1; if ($2[4] != @){ if ($2[4] < 0) size = - $2[4]; for (count = 1; count <= size-1; count++) result = col_mult(result ,$1); }; if ($2[4]==0){ result = []; for (count= 1; count<= $1[4]#; count++) append result, one_int(count); result = [COL,EXPL,$1[3]]//[result]; }; return ($2[4] != @) ? (($2[4] > -1) ? result : col_inv(result)) : UNDEF_COL; } func cactval {return @;} func col_inv { /*inverse of a perm*/ auto result, count; result = []; if ($1[3] != $1[4]# || $1[3]==@ || $1[4]==@) return UNDEF_COL; for (count = 1; count<= $1[3]; count++) append result, UNDEF; for (count = 1; count<= $1[3]; count++) if (($1[4][count][4]==@)||($1[4][count][4]==0)); /* writeln("WARNING-PERM NOT COMPLETELY DEFINED - INV");*/ else result[$1[4][count][4]] = one_int(count); return [$1[1], $1[2], $1[3], result]; } func cat_cols { auto count, size, result; size = $1[3] + $2[3]; result = $1[4] // $2[4]; for (count = $1[3]+1; count <= size; count++) if (result[count][4] != @) result[count][4] += $1[3]; return [COL, EXPL, size, result]; } func colisize {return [INT,EXPL,0,$1[3]];} /*degree of the perm*/ proc c_bin_fns { /*works for binary functions*/ auto ERROR, count, undef; ERROR = 0; if ($1[3] != 0){ undef = list_undef($1[3]); if ($2[4]# != $1[3]){ writeln("ERROR COLS OF INCOMPATIBLE SIZE"); ERROR = 1; }; for (count = 1; ERROR == 0 && count <= $1[3]; count++){ if ($2[4][count][4] != @ && $2[4][count][4] > $1[3]){ writeln("INT OUT OF RANGE IN COL"); ERROR = 1; }; }; }; } proc v_make { return [VERT,EXPL,$1#,$1]; } func check_vert { auto vert; vert = ($#==2) ? $1 : $1[$3]; if (vert[3] != $2[3] && $2[3]!=0){ writeln("ERROR VERTS OF INCOMPATIBLE DIM"); return UNDEF_VERT; } else return [vert[1], $2[2], vert[3], vert[4]]; } proc v_bin_fns { /*works for binary functions*/ if ($1[3]!=$2[3] && $1[2]!=ABST) writeln("ERROR VERTS OF INCOMPATIBLE DIM"); } func vert_add { auto result, count; if ($1[4]==@ || $2[4]==@) return UNDEF_VERT; if($1[3]!=$2[3]) writeln("ERROR VERTS INCOMPATIBLE DIM (RHS)"); result =[]; for (count = 1; count <= $1[3]; count++) append result, int_add($1[4][count],$2[4][count]); return [$1[1],$1[2],$1[3],result]; } func vert_sub { auto result, count; if ($1[4]==@ || $2[4]==@) return UNDEF_VERT; if($1[3]!=$2[3]) writeln("ERROR VERTS INCOMPATIBLE DIM (RHS)"); result =[]; for (count = 1; count <= $1[3]; count++) append result, int_sub($1[4][count],$2[4][count]); return [$1[1],$1[2],$1[3],result]; } proc vert_mult { auto result, count; if ($1[4]==@ || $2[4]==@) return UNDEF_VERT; result =[]; for (count = 1; count <= $2[3]; count++) append result, int_mult($1,$2[4][count]); return [$2[1],$2[2],$2[3],result]; } func vert_rot { para vert, other; auto xc, yc, xr, yr, angle, plane1, plane2; angle = other[4][1][4] * PI / 180; plane1 = other[4][2][4]; plane2 = other[4][3][4]; xc = vert[4][plane1][4]; yc = vert[4][plane2][4]; if ((angle * plane1 * plane2 * xc * yc) == @) return UNDEF_VERT; xr = int(xc * cos(angle) - yc * sin(angle)); yr = int(xc * sin(angle) + yc * cos(angle)); vert[4][plane1] = one_int(xr); vert[4][plane2] = one_int(yr); return vert; } func v_ref {return @;} /*reflection*/ func vert_smash { /*cat vertices dim N ,M -> N+M*/ return [$1[1],$2[2],$1[3]+$2[3], $1[4]//$2[4]]; } func v_actval {return @;} func vert_size {return [INT,EXPL,0,$1[3]];} func vneq { auto count, result; result = 0; if ($1[3] != $2[3]) writeln("ERROR VERTS Of INCOMPATIBLE DIM (IF)"); else for (count = 1; count <= $1[3]; count++) if ($1[4][count] == $2[4][count]) result++; return result!=$1[3]; } func veq { auto count, result; if ($1[3] != $2[3]) writeln("ERROR VERTS Of INCOMPATIBLE DIM (IF)"); else for (count = 1; count <= $1[3]; count++) if ($1[4][count] == $2[4][count]) result++; return result==$1[3]; } proc d_bin_fns{ if ($1[3]!=$2[3] && $1[3]!=0) writeln("ERROR DIAGS OF INCOMPATIBLE SIZE"); } func check_diag { if ($2[3]==0 || $1[3]==$2[3]) return $1[4][2]; } func diag_join { return [DIAG, EXPL, $2[3]+$1[3], [EXPL, $1[4][2]//$2[4][2]]]; } func sub_diag { auto subsize, result, count; subsize = $# - 1; result = []; for (count = 1; count <= subsize; count++) { if ($[count+1][4] != @) append result, $1[4][2][$[count+1][4]]; else append result, UNDEF_VERT; } return [DIAG, EXPL, $#-1, [EXPL, result]]; } func diag_mult { auto result, count; result = []; for (count = 1;count <= $2[3]; count++) append result, vert_mult($1,$2[4][2][count]); return [DIAG, EXPL, $2[3], [EXPL, result]]; } func diag_rot { auto result, count; result = []; for (count = 1;count <= $1[3]; count++) append result, vert_rot($1[4][2][count], $2); return [DIAG, EXPL, $1[3], [EXPL, result]]; } func v_trans { auto count, verts, result; result = []; verts = $2[4][2]#; for (count=1; count <= verts; count++) append result, vert_add( $1, $2[4][2][count]); return [$2[1],$2[2],$2[3], [$2[4][1], result], $2[5]]; } func diag_smash { auto count, result; result = []; for (count = 1; count <= $1[3]; count++) result = result//v_trans($1[4][2][count],$2)[4][2]; return [$2[1],$2[2],$2[3]*$1[3], [$1[4][1], result]]; } func diag_size {return [INT,EXPL,0,$1[2][2]];} /*number of verts*/ func nd_2d { para vert; auto count, count2, dim; dim = vert#; for (count = dim; count>=3; count--) for (count2 = dim-1; count2 >= 1; count2--) if (vert[count2][4] > 0) { vert[count2][4] = vert[count2][4] - 0.1*vert[count][4]; if (vert[count2][4] < 0) vert[count2][4] = 0; } else if (vert[count2][4] < 0 ) { vert[count2][4] = vert[count2][4] + 0.1*vert[count][4]; if (vert[count2][4] > 0)vert[count2][4] = 0; }; return [vert[1],vert[2]]; } func inColList { para list, item; auto i; if (list == []) return 0; for (i = 1; i <= list#; i++) if (list[i] == item) return i; return 0; } /*** Functions for manipulating assocative memory ***/ func searchKey { para map, key; auto start, mid, end; start = 1; end = (*map)#; mid = (start + end) / 2; while ( start <= mid && mid <= end ) { if ((*map)[mid][1] > key) end = mid - 1; else if ((*map)[mid][1] < key) start = mid + 1; else /* match */ return [ mid, (*map)[mid][2] ]; mid = (start + end) / 2; } return [mid < start ? start : mid, @]; } func putKey { para map, key, data; auto ans; ans = searchKey(map, key); if (ans[2] == @) { insert *map, ans[1], [key, data]; return ans[1]; } else /* already there */ return 0; /* fail */ } func deleteKey { para map, key; auto ans; ans = searchKey(map, key); if (ans[2] == @) { return 0; /* fail */ } else { /* found */ delete *map, ans[1]; return ans[1]; } } func replaceKey { para map, key, data; auto ans; ans = searchKey(map, key); if (ans[1] > (*map)# || (*map)[ans[1]][1] != key) /* not there */ insert *map, ans[1], [key, data]; else /* found */ (*map)[ans[1]][2] = data; return ans[1]; } proc dispNoLabels { auto diag, dname, oldDiagCols, cols, window, j, vertex; auto collist, pos; diag = *($[$#-1]); dname = nameof($[$#-1]); oldDiagCols = "old_"//dname//"_cols"; if (`oldDiagCols` == @) `oldDiagCols` = []; collist = []; cols = $#-2; window = $[$#]; for (j = cols; j >= 2; j -= 2) { append collist, $[j-1]; if (pos = inColList(`oldDiagCols`, $[j-1])) { delete `oldDiagCols`, pos; } delete_shape(&`$[j-1]//"__"`); draw_col($[j-1],$[j][4],diag[4][2],window); } while (`oldDiagCols` != []) { delete_shape(&``oldDiagCols`[1]//"__"`); shift `oldDiagCols`; } vertex = "L_"//dname; delete_shape(&`vertex`); `oldDiagCols` = collist; } proc dispWithLabels { auto diag, dname, oldDiagCols, cols, window, i, j, vertex; /* auto collist, pos; */ auto collist, pos, _p1, x1, y1, _L_attr; auto var, viewport_name; diag = *($[$#-1]); dname = nameof($[$#-1]); oldDiagCols = "old_"//dname//"_cols"; if (`oldDiagCols` == @) `oldDiagCols` = []; collist = []; cols = $#-2; window = $[$#]; for (j = cols; j >= 2; j -= 2) { append collist, $[j-1]; if (pos = inColList(`oldDiagCols`, $[j-1])) { delete `oldDiagCols`, pos; } delete_shape(&`$[j-1]//"__"`); draw_col($[j-1],$[j][4],diag[4][2],window); } while (`oldDiagCols` != []) { delete_shape(&``oldDiagCols`[1]//"__"`); shift `oldDiagCols`; } vertex = "L_"//dname; delete_shape(&`vertex`); `oldDiagCols` = collist; for(i = 1; i<=diag[4][2]#; i++){ x1 = nd_2d(diag[4][2][i][4])[1][4]; y1 = nd_2d(diag[4][2][i][4])[2][4]; _p1 = cart(x1,y1); _L_attr = "color=gray1"; `vertex` = label(str(i),_p1); PLOT_label(`window`, &`vertex`, &_L_attr); } } proc draw_col { para c_nm,cols,verts,window; auto k1,x1,y1,x2,y2,li,vert; /* auto colour, style, _L_attr; */ auto colour, style, _L_attr, _p1, _p2; auto var, viewport_name; colour = c_nm[c_nm#]-'a'+1; colour = colour ? colour : _line_colour#; style = (displayDepth > 1) ? "solid,color="//_line_colour[colour] : (colour == 1) ? "solid,color=gray1" : "dashed,dash="//str(colour*20+2); _L_attr = "linestyle="//style ; for (k1=1;k1<=cols#;k1++){ vert = nd_2d(verts[k1][4]); x1=vert[1][4]; y1=vert[2][4]; _p1 = cart(x1,y1); if ((cols[k1][4] != @ && cols[k1][4])&& (k1!=cols[cols[k1][4]][4] || k1Restart and File->Quit -- on the Mac, # we put these in the Apple menu... $m add separator $m add command -label "Restart" -command { close $histfile; restart; } -underline 0 $m add separator $m add command -label "Quit" -command { close $histfile; quit; } -underline 0 } # don't use tearoffs on the Apple platform set m [menu .menu.edit -tearoff [expr !$_tkeden_apple]] .menu add cascade -label "Edit" -underline 0 -menu .menu.edit if {$_tkeden_apple} { $m add command -label "Accept" \ -accelerator "Command-Return" \ -command { acccept } $m add separator # copying ordering of options from TextEdit menu... $m add command -label "Cut" \ -accelerator "Command-X" \ -command {event generate .text <>} $m add command -label "Copy" \ -accelerator "Command-C" \ -command {event generate .text <>} $m add command -label "Paste" \ -accelerator "Command-V" \ -command {event generate .text <>} $m add command -label "Select all" \ -accelerator "Command-A" \ -command {.text tag add sel 1.0 end} # $m add command -label "Select none" \ # -accelerator "Control-\\" \ # -command {.text tag add sel} # -command {.text tag delete sel} # -command {event generate .text } $m add separator $m add command -label "Previous" \ -accelerator "Command-Up" \ -command {previous} $m add command \ -label "Next" \ -accelerator "Command-Down" \ -command {next} } else { # (I found the keysym names using xmodmap -pk as I don't know the # virtual event names for select all and select none). $m add command -label "Select all" -underline 7 \ -accelerator "Control-/" \ -command {event generate .text } $m add command -label "Select none" \ -accelerator "Control-\\" \ -command {event generate .text } $m add command -label "Copy" -underline 0 \ -command {event generate .text <>} $m add command -label "Cut" -underline 2 \ -command {event generate .text <>} $m add command -label "Paste" -underline 0 \ -command {event generate .text <>} $m add separator $m add command -label "Previous" \ -accelerator "Control-Alt-Up or Meta-Up" \ -command {previous} -underline 1 $m add command \ -label "Next" \ -accelerator "Control-Alt-Down or Meta-Down" \ -command {next} -underline 0 } $m add separator $m add command -label "Clear" \ -accelerator "Control-Alt-0 or Meta-0" \ -command {clearInputWindow} -underline 1 set m [menu .menu.show -tearoff [expr !$_tkeden_apple]] if {$_tkeden_apple} { .menu add cascade -label "Window" -underline 0 -menu .menu.show # need to figure out how to implement the following... -- disabled for now $m add command -label "Close Window" -accelerator "Command-W" -state disabled $m add command -label "Minimise" -accelerator "Command-M" -state disabled $m add command -label "Zoom" -state disabled $m add separator $m add command -label "Bring All to Front" -command { bringToTop } $m add separator } else { .menu add cascade -label "View" -underline 0 -menu .menu.show } $m add checkbutton -label "View history..." \ -variable showhist -command {show hist $showhist} -underline 5 $m add checkbutton -label "View errors..." \ -variable showerr -command {show err $showerr} -underline 6 $m add checkbutton -label "View Scout definitions..." \ -variable showscout -command {show scout $showscout} -underline 5 $m add checkbutton -label "View DoNaLD definitions..." \ -variable showdonald -command {show donald $showdonald} -underline 5 $m add checkbutton -label "View Eden definitions..." \ -variable showeden -command {show eden $showeden} -underline 5 if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { $m add checkbutton -label "View LSD descriptions..." \ -variable showlsd -command {show lsd $showlsd} -underline 5 $m add checkbutton -label "View client connections..." \ -variable showclient -command {show client $showclient} \ -underline 5 set m2 [menu .menu.type] .menu add cascade -label "Type" -menu .menu.type -underline 0 set proType 0 $m2 add radiobutton -label "Normal mode" \ -variable proType -value 0 $m2 add radiobutton -label "Interference mode" \ -variable proType -value 1 $m2 add radiobutton -label "Broadcast mode" \ -variable proType -value 2 \ -command { appendHist ">>\n"; evaluate ">>\n" } $m2 add radiobutton -label "Private mode" \ -variable proType -value 3 } } set m [menu .menu.help -tearoff 0] .menu add cascade -label "Help" -underline 0 -menu .menu.help # About is in the Apple menu on the Apple platform if {$_tkeden_apple == "0"} { $m add command -label "About $_tkeden_variant..." -command about \ -underline 0 } $m add command -label "Credits..." -command credits \ -underline 0 $m add command -label "Key shortcuts..." -command keys \ -underline 0 $m add command -label "Eden quick reference..." \ -command edenQuickRef -underline 0 $m add command -label "Scout quick reference..." \ -command scoutQuickRef -underline 0 $m add command -label "Donald quick reference..." \ -command donaldQuickRef -underline 0 $m add command -label "Sasami quick reference..." \ -command sasamiQuickRef -underline 4 $m add command -label "Colour names..." \ -command colourNames -underline 7 $m add command -label "ChangeLog..." -command changeLog \ -underline 1 if {$_tkeden_apple} { # the following useful for debugging... #bind . { puts "Key %K" } # seems that Alt/Meta may not be accepted in bindings on the Mac... bind all { exit } bind all { exit } bind .text { .text tag add sel 1.0 end } bind .text { .text tag add sel 1.0 end } bind .text { previous } bind .text { next } bind .text { controlU } bind .text { controlU } bind .text { .text mark set insert {insert linestart} } bind .text { .text mark set insert {insert lineend} } # on the Mac, Command-A is Select All as standard, and I don't want # to conflict with that, so using this for Accept instead... bind .text { accept; # now stop the return from also having effect on the text... break; } bind all {include Open} bind all {include Open} bind all {save all} bind all {save all} # still need to figure out # - command-w for closing current window # - command-h for hiding the application (this is in the app menu) # - alt-command-h for hiding other apps (this is in the app menu) } else { bind .text { accept } bind .text { accept } bind .text { previous } bind .text { previous } bind .text { previous } bind .text { previous } bind .text { next } bind .text { next } bind .text { next } bind .text { next } bind .text { clearInputWindow } bind .text { clearInputWindow } bind .text { controlU } bind .text { controlU } } proc bringToTop {} { set wins "[winfo children .] ."; foreach w $wins { set tlw [winfo toplevel $w]; if {[wm state $tlw] == "iconic"} { wm deiconify $tlw; } if {$w != ".menu"} { raise $w } } } # bring all our windows to the top if this combination of keys is pressed bind all { bringToTop } bindtags .text {all .text Text} update # History window toplevel .hist wm title .hist "$variantversion: Command History" frame .hist.menu -relief raised -borderwidth 2 pack .hist.menu -side top -fill x button .hist.menu.save -text "Save" -underline 0 -command {save hist} \ -relief flat -highlightthickness 0 bind .hist { .hist.menu.save invoke } bind .hist { .hist.menu.save invoke } button .hist.menu.find -text "Find" -underline 0 -command {find hist} \ -relief flat -highlightthickness 0 bind .hist { .hist.menu.find invoke } bind .hist { .hist.menu.find invoke } button .hist.menu.close -text "Close" -underline 0 \ -command {global showhist; set showhist 0; show hist 0} \ -relief flat -highlightthickness 0 bind .hist { .hist.menu.close invoke } bind .hist { .hist.menu.close invoke } pack .hist.menu.save .hist.menu.find .hist.menu.close -side left frame .hist.t pack .hist.t -fill both -expand 1 text .hist.t.text -state disabled -width 80 -height 10 \ -yscrollcommand ".hist.t.scroll set" -font edencode scrollbar .hist.t.scroll -command ".hist.t.text yview" pack .hist.t.scroll -side right -fill y pack .hist.t.text -side right -fill both -expand 1 wm withdraw .hist wm protocol .hist WM_DELETE_WINDOW ".hist.menu.close invoke;" update # Error window toplevel .err wm title .err "$variantversion: Errors" frame .err.menu -relief raised -borderwidth 2 pack .err.menu -side top -fill x button .err.menu.save -text "Save" -underline 0 -command {save err} \ -relief flat -highlightthickness 0 bind .err { .err.menu.save invoke } bind .err { .err.menu.save invoke } button .err.menu.find -text "Find" -underline 0 -command {find err} \ -relief flat -highlightthickness 0 bind .err { .err.menu.find invoke } bind .err { .err.menu.find invoke } button .err.menu.close -text "Close" -underline 0 \ -command {global showerr; set showerr 0; show err 0} \ -relief flat -highlightthickness 0 bind .err { .err.menu.close invoke } bind .err { .err.menu.close invoke } pack .err.menu.save .err.menu.find .err.menu.close -side left frame .err.t pack .err.t -fill both -expand 1 text .err.t.text -state disabled -width 80 -height 10 \ -yscrollcommand ".err.t.scroll set" -font edencode scrollbar .err.t.scroll -command ".err.t.text yview" pack .err.t.scroll -side right -fill y pack .err.t.text -side right -fill both -expand 1 wm withdraw .err wm protocol .err WM_DELETE_WINDOW ".err.menu.close invoke;" update if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { toplevel .client wm title .client "$variantversion: Client Connections" frame .client.menu -relief raised -borderwidth 2 pack .client.menu -side top -fill x button .client.menu.close -text "Close" -underline 0 \ -relief flat -highlightthickness 0 \ -command {global showclient; set showclient 0; show client 0;} bind .client { .client.menu.close invoke } bind .client { .client.menu.close invoke } pack .client.menu.close -side left frame .client.t pack .client.t -fill both -expand 1 text .client.t.text -state disabled -width 80 -height 10 \ -yscrollcommand ".client.t.scroll set" scrollbar .client.t.scroll -command ".client.t.text yview" pack .client.t.scroll -side right -fill y pack .client.t.text -side right -fill both -expand 1 wm withdraw .client wm protocol .client WM_DELETE_WINDOW ".client.menu.close invoke;" update } } toplevel .scout wm title .scout "$variantversion: Scout Definitions" frame .scout.menu -relief raised -borderwidth 2 pack .scout.menu -side top -fill x button .scout.menu.save -text "Save" -underline 0 -command {save scout} \ -relief flat -highlightthickness 0 bind .scout { .scout.menu.save invoke } bind .scout { .scout.menu.save invoke } button .scout.menu.find -text "Find" -underline 0 -command {find scout} \ -relief flat -highlightthickness 0 bind .scout { .scout.menu.find invoke } bind .scout { .scout.menu.find invoke } button .scout.menu.rebuild -text "Rebuild" -underline 0 \ -command {dumpscout} \ -relief flat -highlightthickness 0 bind .scout { .scout.menu.rebuild invoke } bind .scout { .scout.menu.rebuild invoke } button .scout.menu.close -text "Close" -underline 0 \ -command {global showscout; set showscout 0; show scout 0} \ -relief flat -highlightthickness 0 bind .scout { .scout.menu.close invoke } bind .scout { .scout.menu.close invoke } pack .scout.menu.save .scout.menu.find .scout.menu.rebuild .scout.menu.close \ -side left frame .scout.t pack .scout.t -fill both -expand 1 text .scout.t.text -state disabled -width 80 -height 20 \ -yscrollcommand ".scout.t.scroll set" -font edencode scrollbar .scout.t.scroll -command ".scout.t.text yview" pack .scout.t.scroll -side right -fill y pack .scout.t.text -side right -fill both -expand 1 wm withdraw .scout wm protocol .scout WM_DELETE_WINDOW ".scout.menu.close invoke;" update toplevel .donald wm title .donald "$variantversion: DoNaLD Definitions" frame .donald.menu -relief raised -borderwidth 2 pack .donald.menu -side top -fill x button .donald.menu.save -text "Save" -underline 0 -command {save donald} \ -relief flat -highlightthickness 0 bind .donald { .donald.menu.save invoke } bind .donald { .donald.menu.save invoke } button .donald.menu.find -text "Find" -underline 0 -command {find donald} \ -relief flat -highlightthickness 0 bind .donald { .donald.menu.find invoke } bind .donald { .donald.menu.find invoke } button .donald.menu.rebuild -text "Rebuild" -underline 0 \ -command {dumpdonald} \ -relief flat -highlightthickness 0 bind .donald { .donald.menu.rebuild invoke } bind .donald { .donald.menu.rebuild invoke } button .donald.menu.close -text "Close" -underline 0 \ -command {global showdonald; set showdonald 0; show donald 0} \ -relief flat -highlightthickness 0 bind .donald { .donald.menu.close invoke } bind .donald { .donald.menu.close invoke } pack .donald.menu.save .donald.menu.find .donald.menu.rebuild \ .donald.menu.close -side left frame .donald.t pack .donald.t -fill both -expand 1 text .donald.t.text -state disabled -width 80 -height 20 \ -yscrollcommand ".donald.t.scroll set" -font edencode .donald.t.text tag config viewport -background #efd4b4 .donald.t.text tag config master -background #efd4b4 scrollbar .donald.t.scroll -command ".donald.t.text yview" pack .donald.t.scroll -side right -fill y pack .donald.t.text -side right -fill both -expand 1 wm withdraw .donald wm protocol .donald WM_DELETE_WINDOW ".donald.menu.close invoke;" update if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { toplevel .lsd wm title .lsd "$variantversion: LSD Descriptions" frame .lsd.menu -relief raised -borderwidth 2 pack .lsd.menu -side top -fill x button .lsd.menu.save -text "Save" -underline 0 -command {save lsd} \ -relief flat -highlightthickness 0 bind .lsd { .lsd.menu.save invoke } bind .lsd { .lsd.menu.save invoke } button .lsd.menu.find -text "Find" -underline 0 -command {find lsd} \ -relief flat -highlightthickness 0 bind .lsd { .lsd.menu.find invoke } bind .lsd { .lsd.menu.find invoke } button .lsd.menu.rebuild -text "Rebuild" -underline 0 \ -command {dumpLSD} \ -relief flat -highlightthickness 0 bind .lsd { .lsd.menu.rebuild invoke } bind .lsd { .lsd.menu.rebuild invoke } button .lsd.menu.close -text "Close" -underline 0 \ -command {global showlsd; set showlsd 0; show lsd 0} \ -relief flat -highlightthickness 0 bind .lsd { .lsd.menu.close invoke } bind .lsd { .lsd.menu.close invoke } pack .lsd.menu.save .lsd.menu.find .lsd.menu.rebuild .lsd.menu.close \ -side left frame .lsd.t pack .lsd.t -fill both -expand 1 text .lsd.t.text -state disabled -width 80 -height 20 \ -yscrollcommand ".lsd.t.scroll set" scrollbar .lsd.t.scroll -command ".lsd.t.text yview" pack .lsd.t.scroll -side right -fill y pack .lsd.t.text -side right -fill both -expand 1 wm withdraw .lsd wm protocol .lsd WM_DELETE_WINDOW ".lsd.menu.close invoke;" update } } toplevel .eden wm title .eden "$variantversion: Eden Definitions" menu .eden.menu .eden config -menu .eden.menu set m [menu .eden.menu.edit -tearoff [expr !$_tkeden_apple]] .eden.menu add cascade -label "Edit" -underline 0 -menu .eden.menu.edit $m add command -label "Copy" -underline 0 \ -command {event generate .eden.t.text <>} $m add command -label "Cut" -underline 2 \ -command {event generate .eden.t.text <>} $m add command -label "Paste" -underline 0 \ -command {event generate .eden.t.text <>} .eden.menu add command -label "Save" -underline 0 -command {save eden} .eden.menu add command -label "Find" -underline 0 -command {find eden} .eden.menu add command -label "Rebuild" -underline 0 -command {viewOption} .eden.menu add command -label "Update" -underline 0 -command {edenUpdate} .eden.menu add command -label "Close" -underline 0 \ -command {global showeden; set showeden 0; show eden 0} frame .eden.t pack .eden.t -fill both -expand 1 text .eden.t.text -state disabled -width 80 -height 20 \ -yscrollcommand ".eden.t.scroll set" -font edencode .eden.t.text tag config masteragent -background #efd4b4 .eden.t.text tag config scout -foreground red .eden.t.text tag config donald -foreground blue scrollbar .eden.t.scroll -command ".eden.t.text yview" pack .eden.t.scroll -side right -fill y pack .eden.t.text -side right -fill both -expand 1 wm withdraw .eden wm protocol .eden WM_DELETE_WINDOW "set showeden 0; show eden 0" update if {$_tkeden_win32_version == "0.0"} { # we're on UNIX set histfilename $env(HOME)/.tkeden-history } else { # cygwin seems to require filenames in DOS (C:\blah) format set histfilename \ [cygwin_conv_to_full_win32_path "$env(HOME)/.tkeden-history"] } # Keep a few backups around as people don't seem to look for the # history file until they've restarted tkeden once or twice. Ideally # this would preserve file dates to make it easier to find data when # grubbing around in the history files, but there isn't an option for # this in Tcl file copy. We could use file rename, but this causes # problems with multiple concurrent instances of tkeden running in the # same user account with an NFS mounted home directory (machine 1 # shifts history files, starts to use tkeden-history, machine 2 shifts # history files, machine 1 gives stale NFS handle error). [Ash] catch {file copy -force ${histfilename}.2 ${histfilename}.3} catch {file copy -force ${histfilename}.1 ${histfilename}.2} catch {file copy -force $histfilename ${histfilename}.1} set histfile [open $histfilename w] proc appendHist {text} { global histfile .hist.t.text config -state normal .hist.t.text insert end $text puts $histfile $text nonewline flush $histfile .hist.t.text see end .hist.t.text config -state disabled } set errorNo 0 set errorAppendNo 0 set error "" proc appendErr {text} { global errorNo errorAppendNo error .err.t.text config -state normal if {$errorAppendNo == 0} { .err.t.text insert end "## ERROR number [incr errorNo]:\n" } incr errorAppendNo append error $text .err.t.text insert end $text .err.t.text see end .err.t.text config -state disabled } proc errorComplete {beep} { global errorNo errorAppendNo error set errorInitialText [string range $error 0 55] if {[string length $error] > 55} {append errorInitialText "..."} appendHist "## ERROR number $errorNo: $errorInitialText\n" set errorAppendNo 0 set error "" set showerr 1 show err 1 raise .err if {$beep} {bell} # Force .err to refresh, meaning the new error information is # shown on the screen even if we are in a tight loop. This call # causes any events on windows to trigger, which may then # cause some Eden to execute - this was the cause of "bug42". update idletasks } # Previous text set pentries "" # Number of entries of previous text to keep set pmax 20 # Current (per-entry session) position in history set ppos 0 proc accept {} { global pentries pmax ppos set text [.text get 1.0 end] appendHist $text # 1) remove the spurious \n that comes from Tcl's text widget # 2) append this entry to the list we are keeping # 3) remove an old entry from the front of the list if necessary # 3) if {[llength $pentries] >= $pmax} { set pentries [lrange $pentries 1 end] } # 2), 1) lappend pentries [string range $text 0 [expr [string length $text]-2]] evaluate $text clearInputWindow set ppos [llength $pentries]; } proc previous {} { global pentries pmax ppos set text [.text get 1.0 end] clearInputWindow set ppos [expr $ppos - 1] if {$ppos < 0} { set ppos 0 bell } .text insert end [lindex $pentries $ppos] } proc next {} { global pentries pmax ppos set text [.text get 1.0 end] clearInputWindow incr ppos if {$ppos > [llength $pentries]} { set ppos [llength $pentries] bell } .text insert end [lindex $pentries $ppos] } proc clearInputWindow {} { .text delete 1.0 end } proc controlU {} { # delete the text to the left of the cursor .text delete {insert linestart} insert } proc interface {statement} { global _tkeden_variant _dtkeden_isServer appendHist $statement if {$_tkeden_variant == "dtkeden"} { if {! ($_dtkeden_isServer)} { # Patrick's change to client only - dunno why [Ash] set statement "$statement\n" } } todo $statement } # This is used in scout.init.e for TEXTBOX [Ash] proc interfaceTEXT {statement} { todo $statement } proc cleanup {w} { .$w.t.text config -state normal .$w.t.text delete 1.0 end .$w.t.text config -state disabled } proc Review {} { global viewToBeDefined viewOption viewScout viewDoNaLD viewSasami set viewOption 0 if {$viewScout} { set viewOption [expr $viewOption + 1] } if {$viewDoNaLD} { set viewOption [expr $viewOption + 2] } if {$viewSasami} { set viewOption [expr $viewOption + 4] } dumpeden $viewOption $viewToBeDefined } proc edenDefn {v n d} { set r [.eden.t.text tag ranges eden%$v] .eden.t.text config -state normal if [llength $r] { .eden.t.text delete eden%$v.first eden%$v.last .eden.t.text insert [lindex $r 0] $d [list $n eden%$v] } else { .eden.t.text insert end $d [list $n eden%$v] } .eden.t.text config -state disabled } proc scoutDefn {v d} { set r [.scout.t.text tag ranges scout%$v] .scout.t.text config -state normal if [llength $r] { .scout.t.text delete scout%$v.first scout%$v.last .scout.t.text insert [lindex $r 0] $d scout%$v } else { .scout.t.text insert end $d scout%$v } .scout.t.text config -state disabled } # This based on mkDialogue below... [Ash] proc fileDialogue {fileName w winTitle} { global variantversion env catch {destroy $w} toplevel $w -class Dialog wm title $w "$variantversion: $winTitle" wm iconname $w "$winTitle" # Create two frames in the main window. The top frame will hold the # message and the bottom one will hold the buttons. Arrange them # one above the other, with any extra vertical space split between # them. frame $w.top -relief raised -border 1 frame $w.bot -relief raised -border 1 pack $w.top $w.bot -side top -fill both -expand yes text $w.top.text -state disabled -width 78 -height 31 \ -yscrollcommand "$w.top.scroll set" -background white \ -foreground black -font edencode scrollbar $w.top.scroll -command "$w.top.text yview" pack $w.top.scroll -side right -fill y pack $w.top.text -side top -expand yes -padx 3 -pady 3 if [catch {open "$env(TKEDEN_LIB)/$fileName" r} fileId] { puts stderr "Cannot open $env(TKEDEN_LIB)/$fileName: $fileId" } else { $w.top.text config -state normal $w.top.text insert end [read $fileId] close $fileId $w.top.text config -state disabled } # Create as many buttons as needed and arrange them from left to right # in the bottom frame. Embed the left button in an additional sunken # frame to indicate that it is the default button, and arrange for that # button to be invoked as the default action for clicks and returns in # the dialog. set args "OK" if {[llength $args] > 0} { set arg [lindex $args 0] frame $w.bot.0 -relief sunken -border 1 pack $w.bot.0 -side left -expand yes -padx 10 -pady 10 button $w.bot.0.button -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w" pack $w.bot.0.button -expand yes -padx 6 -pady 6 bind $w "[lindex $arg 1]; destroy $w" focus $w set i 1 foreach arg [lrange $args 1 end] { button $w.bot.$i -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w" pack $w.bot.$i -side left -expand yes -padx 10 set i [expr $i+1] } } bind $w [list focus $w] focus $w } # Create the About key shortcuts dialogue box containing info... [Ash] # See the Tcl text(n) man page for some of the information in the file proc keys {} { fileDialogue "keys.txt" .keys "Key shortcuts" } proc changeLog {} { fileDialogue "change.log" .changeLog "ChangeLog" } proc credits {} { fileDialogue "credits.txt" .credits "Credits" } # this from Ousterhout "Tcl and the Tk toolkit" page 219 proc forAllMatches {w pattern script} { scan [$w index end] %d numLines for {set i 1} {$i < $numLines} {incr i} { $w mark set last $i.0 while {[regexp -indices $pattern \ [$w get last "last lineend"] indices]} { $w mark set first \ "last + [lindex $indices 0] chars" $w mark set last "last + 1 chars \ + [lindex $indices 1] chars" uplevel $script } } } # Translate text file markup into formatted text by adding appropriate tags # [Ash] proc setTags {w} { $w.top.text config -state normal # Surround text denoting optional stuff with !@O and !@P. See # Ousterhout "Tcl and the Tk toolkit" page 91 for information # about Tcl regular expressions forAllMatches $w.top.text {!@O[^!@]*!@P} { $w.top.text delete first "first + 3 char" $w.top.text delete "last - 3 char" last $w.top.text tag add optional first last } $w.top.text tag configure optional -foreground blue $w.top.text config -state disabled } proc edenQuickRef {} { fileDialogue "eden.txt" .edenQuickRef "Eden Quick Reference" setTags .edenQuickRef } proc scoutQuickRef {} { fileDialogue "scout.txt" .scoutQuickRef "Scout Quick Reference" } proc donaldQuickRef {} { fileDialogue "donald.txt" .scoutQuickRef "DoNaLD Quick Reference" } proc sasamiQuickRef {} { fileDialogue "sasami.txt" .sasamiQuickRef "Sasami Quick Reference" } proc colourNames {} { fileDialogue "rgb.txt" .colourNames "Colour Names" } proc reinit {} { global env #set wins "[winfo children .] ."; #foreach w $wins { destroy $w; } destroy . # This almost works: $_tkeden_win32_version is undefined tho :( source $env(TKEDEN_LIB)/edenio.tcl } # Create the About dialogue box containing version and other information [Ash] proc about {} { global _tkeden_variant _tkeden_version _eden_svnversion _tkeden_web_site \ _dtkeden_isServer tcl_patchLevel tk_patchLevel \ _tkeden_win32_version env variantversion haveImg toplevel .about -class Dialog wm title .about "$variantversion: About" label .about.variant -text "This is $_tkeden_variant, version $_tkeden_version ($_eden_svnversion)" if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { label .about.isserver -text "Invoked in super-agent (server) mode" } else { label .about.isserver -text "Invoked in agent (client) mode" } } label .about.copyright -text "Copyright (C) The University of ɫƵ. All rights reserved" label .about.separator1 -text "--------------------------------" label .about.usage -text "Invoke $_tkeden_variant with the -u option for details of command line options usage" label .about.website -text "See $_tkeden_web_site for more information" label .about.separator2 -text "--------------------------------" label .about.diagnosis -text "This information may be useful when diagnosing problems:" if {$_tkeden_win32_version != "0.0"} { label .about.win32version -text "Win32 version V$_tkeden_win32_version" } else { label .about.win32version -text "Unix version" } label .about.libfiles -text "Library files are located in \n$env(TKEDEN_LIB)" label .about.tclversion -text "Tcl is version $tcl_patchLevel, Tk is version $tk_patchLevel\nTk Img package (PNG, JPEG...) is [expr {$haveImg ? {available} : {not available}}]" button .about.ok -text OK -command {destroy .about} if {$_tkeden_variant == "dtkeden"} { pack .about.variant .about.isserver .about.copyright \ .about.separator1 .about.usage .about.website \ .about.separator2 .about.diagnosis .about.win32version \ .about.libfiles .about.tclversion \ .about.ok -pady 5 } else { pack .about.variant .about.copyright \ .about.separator1 .about.usage .about.website \ .about.separator2 .about.diagnosis .about.win32version \ .about.libfiles .about.tclversion \ .about.ok -pady 5 } } # These long extensions have been re-thought from the original .e, .d, # .s practice. [Ash] set fileTypes { {{All files} *} {{Eden files} {.eden}} {{DoNaLD files} {.donald}} {{Scout files} {.scout}} {{Sasami files} {.sasami}} {{Eddi files} {.eddi}} {{Script (multi-notation) files} {.script}} } proc include style { global variantversion fileTypes notation _tkeden_win32_version if {$_tkeden_win32_version == "0.0"} { # tk_getOpenFile -multiple true isn't possible until 8.4a2 on UNIX # and I can't find where to download that version (and it's alpha) set fileNames [tk_getOpenFile \ -filetypes $fileTypes -parent . \ -title "$variantversion: $style" ] } else { # we're on Windows: -multiple is possible set fileNames [tk_getOpenFile \ -filetypes $fileTypes -parent . \ -multiple true \ -title "$variantversion: $style"] } foreach file $fileNames { # Change directory so that Eden include(...) is more likely to # work. 'cd [file dirname $file]' is the Tcl version, but # I've rewritten it in Eden so that the cwd() function will be # correctly re-evaluated eden "cd(dirname(\"$file\"));" if {$style == "Open"} { set errCode [catch {set incFile [open $file r]} string] if {$errCode == 0} { while {[gets $incFile line] >= 0} { .text insert end "$line\n" } .text see end close $incFile } else { tk_dialog .message "$variantversion: Warning" \ "Cannot open file \"$file\"" warning 0 OK } } elseif {$style == "Execute"} { appendHist "%eden\n" appendHist "include(\"$file\");\n" # want to do this: todo "include(\"$file\");" # but at evaluation level 0 (so that global variables such as # $radiosBg can be found). $file needs to be evaluated # now, but the rest must not be. # Using todo and not eden, as the Tcl eden command restores # the currently active notation after use, and that isn't the # semantics of include(). set cmd {todo "include(\"} append cmd "$file" append cmd {\");"} uplevel #0 $cmd # now switch back to current notation appendHist "$notation\n" } else { error {internal error: include style unknown} } } } proc save w { global variantversion saveAsReusable fileTypes set fileName [tk_getSaveFile -initialfile untitled.$w -parent . \ -title "$variantversion: Save $w As" -defaultextension $w \ -filetypes $fileTypes] if {$fileName != ""} { SaveToFile $w $fileName $saveAsReusable } } proc SaveToFile {w file executable} { global viewOption viewToBeDefined _tkeden_variant _dtkeden_isServer if {[catch {open $file w} fid]} { mkDialog .error "-aspect 300 -text \{$fid\}" {OK {}} tkwait visibility .error grab .error } else { case $w { all { dumpeden 63 0 dumpscout dumpdonald if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { dumpLSD } } if {$executable} { edenDefn autocalc eden "" puts $fid {autocalc = 0;} eden {tcl("set vp_in_use {"//vp_in_use(DFscreen)//"}");} global vp_in_use foreach vp $vp_in_use { edenDefn $vp eden "" } puts $fid %scout SaveScout $fid $executable if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { puts $fid %lsd Savelsd $fid $executable } } puts $fid %donald SaveDonald $fid $executable puts $fid %eden SaveEden $fid $executable -omit masteragent scout donald system } else { puts $fid %scout SaveScout $fid $executable if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { puts $fid %lsd Savelsd $fid $executable } } puts $fid %donald SaveDonald $fid $executable puts $fid %eden SaveEden $fid $executable } if {$executable} { puts $fid {autocalc = 1;} } dumpeden $viewOption $viewToBeDefined } hist { puts $fid [.hist.t.text get 1.0 end] nonewline } eden { if {$executable} { dumpeden 63 0 edenDefn autocalc eden "" puts $fid {autocalc = 0;} eden {tcl("set vp_in_use {"//vp_in_use(DFscreen)//"}");} global vp_in_use foreach vp $vp_in_use { edenDefn $vp eden "" } SaveEden $fid $executable -omit masteragent system } else { dumpeden $viewOption $viewToBeDefined SaveEden $fid $executable } if {$executable} { puts $fid {autocalc = 1;} dumpeden $viewOption $viewToBeDefined } } scout { dumpscout puts $fid "%scout" SaveScout $fid $executable } lsd { # This code should never happen in client and plain tkeden dumpLSD puts $fid "%lsd" Savelsd $fid $executable } donald { dumpdonald puts $fid "%donald" SaveDonald $fid $executable } } close $fid } } proc SaveEden {fid executable args} { if {[lsearch $args -omit] == 0} { set args [lrange $args 1 end] } set lastline [lindex [split [.eden.t.text index end] "."] 0] for {set i 1} {$i <= $lastline} {incr i} { set in 1 set tags [.eden.t.text tag names $i.0] foreach filter $args { if {[lsearch $tags $filter] != -1} { set in 0 break } } if {$in} { puts $fid [.eden.t.text get $i.0linestart $i.0lineend] } } } proc SaveScout {fid executable} { if $executable { foreach t [.scout.t.text tag names] { if [string match scout%* $t] { set text [.scout.t.text get $t.first $t.last] set eq [string first = $text] if {$eq == -1} { puts $fid $text nonewline } else { puts $fid [string range $text 0 [expr $eq - 2]] nonewline puts $fid {;} } } } foreach t [.scout.t.text tag names] { if [string match scout%* $t] { set text [.scout.t.text get $t.first $t.last] set eq [string first = $text] if {$eq != -1} { puts $fid $text nonewline } } } } else { puts $fid [.scout.t.text get 1.0 end] nonewline } } proc SaveDonald {fid executable} { for {set i 1} {$i <= [.donald.t.text index end]} {incr i} { set line [.donald.t.text get $i.0 "$i.0 lineend"] if {![string match AGENT* $line]} { puts $fid $line } } } if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { proc Savelsd {fid executable} { for {set i 1} {$i <= [.lsd.t.text index end]} {incr i} { set line [.lsd.t.text get $i.0 "$i.0 lineend"] puts $fid $line } } } } proc TextSearch {w direction caseSensitive string} { if {[expr [string compare [.$w.t.text tag nextrange found 1.0] ""] \ && [string compare $direction -forwards] == 0]} { if {[expr [string compare [.$w.t.text index insert] \ [.$w.t.text index found.first]] == 0]} { .$w.t.text mark set insert [.$w.t.text index found.last] } } .$w.t.text tag remove found 1.0 end if {$caseSensitive} { set caseSwitch "-exact" } else { set caseSwitch "-nocase" } set index [.$w.t.text search $direction $caseSwitch -regexp \ -count len -- $string insert] if {[string length $index] > 0} { .$w.t.text mark set insert $index .$w.t.text see $index # This doesn't work on Linux as \c is an escape - rewritten [Ash] #.$w.t.text tag add found $index $index+$len\chars .$w.t.text mark set first $index .$w.t.text mark set last "$index + $len chars" .$w.t.text tag add found first last .$w.t.text tag configure found -background blue } else { bell } } proc find w { global variantversion catch {destroy .find} toplevel .find -class Dialog wm title .find "$variantversion: Find in $w" frame .find.top pack .find.top -fill both entry .find.top.e -relief sunken -textvariable searchString checkbutton .find.top.case -variable caseSensitive -text "case sensitive" pack .find.top.e .find.top.case -side left -padx 5 frame .find.bot pack .find.bot -fill both button .find.bot.forward -text "Forward" -underline 0 -width 8 \ -command "TextSearch $w -forwards \$caseSensitive \$searchString" button .find.bot.backward -text "Backward" -underline 0 -width 8 \ -command "TextSearch $w -backwards \$caseSensitive \$searchString" button .find.bot.cancel -text Cancel -command "destroy .find" -width 8 bind .find { .find.bot.forward invoke } bind .find { .find.bot.forward invoke } bind .find { .find.bot.backward invoke } bind .find { .find.bot.backward invoke } pack .find.bot.forward -side left -expand yes -padx 5 -pady 5 pack .find.bot.backward -side left -expand yes -padx 5 -pady 5 pack .find.bot.cancel -side left -expand yes -padx 5 -pady 5 tkwait visibility .find grab .find } set viewOption 0 set viewToBeDefined 0 set viewScout 0 set viewDoNaLD 0 set viewSasami 0 proc edenUpdate {} { global viewOption viewToBeDefined # save the position of the vertical scrollbar set yscroll [lindex [.eden.t.text yview] 0] # dumpeden is a tkeden Tcl command created in EX/ex.c dumpeden [expr $viewOption + 8] $viewToBeDefined .eden.t.text yview moveto $yscroll } # viewOption is called when the Rebuild button is pressed [Ash] proc viewOption {} { global variantversion _tkeden_sasamiAvail catch {destroy .view} toplevel .view -class Dialog wm title .view "$variantversion: View Options" wm transient .view .eden frame .view.left pack .view.left -fill both -side left -expand yes label .view.left.name -justify left \ -text "Highlight to view:\ncontrol-click: individual items,\nshift-click: a range:" pack .view.left.name -side top -fill none -anchor nw scrollbar .view.left.scroll -command ".view.left.list yview" pack .view.left.scroll -side right -fill y listbox .view.left.list -yscroll ".view.left.scroll set" \ -selectmode extended -relief sunken -width 20 -height 20 -setgrid yes pack .view.left.list -side left -fill both -expand yes frame .view.right pack .view.right -side right checkbutton .view.right.yet \ -text "with yet-to-be-defined variables" \ -variable viewToBeDefined checkbutton .view.right.scout \ -text "with translated Scout definitions" \ -variable viewScout checkbutton .view.right.donald \ -text "with translated DoNaLD definitions" \ -variable viewDoNaLD if {$_tkeden_sasamiAvail == "1"} { checkbutton .view.right.sasami \ -text "with translated Sasami definitions" \ -variable viewSasami } button .view.right.all -text "Select All" -width 12 -underline 0 \ -command { .view.left.list selection set 0 end } button .view.right.none -text "Clear All" -width 12 \ -command { .view.left.list selection clear 0 end } frame .view.right.ok -relief sunken -border 1 button .view.right.ok.button -text OK -width 12 \ -command { Review; destroy .view; raise .eden } pack .view.right.ok.button -padx 10 -pady 10 button .view.right.cancel -text Cancel -command "destroy .view" -width 12 pack .view.right.all .view.right.none -side top -padx 5 -pady 5 pack .view.right.yet .view.right.scout .view.right.donald \ -side top -anchor sw if {$_tkeden_sasamiAvail == "1"} { pack .view.right.yet .view.right.sasami -side top -anchor sw } pack .view.right.ok .view.right.cancel -side top -padx 5 -pady 5 bind .view { .view.right.ok.button invoke } bind .view { .view.right.all invoke } bind .view { .view.right.all invoke } # setupViewOptions is a tkeden Tcl command created in EX/ex.c setupViewOptions tkwait visibility .view grab .view } if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { proc selectClients {} { global clientSock sockName clientName variantversion if {[llength $clientSock] <= 0} { tk_dialog .message "$variantversion: Message" "No connected client" warning -1 OK return } else { catch {destroy .select} toplevel .select -class Dialog wm title .select "$variantversion: Select Clients" frame .select.left pack .select.left -fill both -side left -expand yes label .select.left.name -text "Select clients to receive:" pack .select.left.name -side top -fill none -anchor nw scrollbar .select.left.scroll -command ".select.left.list yview" pack .select.left.scroll -side right -fill y listbox .select.left.list -yscroll ".select.left.scroll set" \ -selectmode multiple -relief sunken -width 20 -height 10 -setgrid yes pack .select.left.list -side left -fill both -expand yes frame .select.right pack .select.right -side right # Something may be wrong here - emacs gets the formatting # wrong [Ash] button .select.right.all -text "Select All" -command { .select.left.list selection set 0 end } -width 12 button .select.right.none -text "Clear All" -command { .select.left.list selection clear 0 end } -width 12 button .select.right.ok -text OK -command { global sockName set text [.text get 1.0 end] set selectedClients {} foreach i [.select.left.list curselection] { set currClient [.select.left.list get $i] lappend selectedClients $sockName($currClient) } sendClientsSock $selectedClients $text .text delete 1.0 end destroy .select } -width 12 button .select.right.cancel -text Cancel -command "destroy .select" -width 12 pack .select.right.all .select.right.none -side top -padx 5 -pady 5 pack .select.right.ok .select.right.cancel -side top -padx 5 -pady 5 .select.left.list insert end "Own" foreach wsock $clientSock { # puts $clientName($wsock) .select.left.list insert end $clientName($wsock) } tkwait visibility .select grab .select } } } } # mkDialog w msgArgs list list ... # # Create a dialog box with a message and any number of buttons at # the bottom. # # Arguments: # w - Name to use for new top-level window. # msgArgs - List of arguments to use when creating the message of the # dialog box (e.g. text, justifcation, etc.) # list - A two-element list that describes one of the buttons that # will appear at the bottom of the dialog. The first element # gives the text to be displayed in the button and the second # gives the command to be invoked when the button is invoked. # # @(#) mkDialog.tcl 1.1 94/08/10 15:35:00 proc mkDialog {w msgArgs args} { global variantversion catch {destroy $w} toplevel $w -class Dialog wm title $w "$variantversion: Dialog Box" wm iconname $w "Dialog" # Create two frames in the main window. The top frame will hold the # message and the bottom one will hold the buttons. Arrange them # one above the other, with any extra vertical space split between # them. frame $w.top -relief raised -border 1 frame $w.bot -relief raised -border 1 pack $w.top $w.bot -side top -fill both -expand yes # Create the message widget and arrange for it to be centered in the # top frame. eval message $w.top.msg -justify center $msgArgs pack $w.top.msg -side top -expand yes -padx 3 -pady 3 # Create as many buttons as needed and arrange them from left to right # in the bottom frame. Embed the left button in an additional sunken # frame to indicate that it is the default button, and arrange for that # button to be invoked as the default action for clicks and returns in # the dialog. if {[llength $args] > 0} { set arg [lindex $args 0] frame $w.bot.0 -relief sunken -border 1 pack $w.bot.0 -side left -expand yes -padx 10 -pady 10 button $w.bot.0.button -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w" pack $w.bot.0.button -expand yes -padx 6 -pady 6 bind $w "[lindex $arg 1]; destroy $w" focus $w set i 1 foreach arg [lrange $args 1 end] { button $w.bot.$i -text [lindex $arg 0] \ -command "[lindex $arg 1]; destroy $w" pack $w.bot.$i -side left -expand yes -padx 10 set i [expr $i+1] } } bind $w [list focus $w] focus $w } proc show {w yes} { if $yes { wm deiconify .$w raise .$w case $w { scout {dumpscout} donald {dumpdonald} eden {viewOption} lsd {dumpLSD} } # the lsd above should never be matched in client # or plain tkeden [Ash] } else { wm withdraw .$w } } # Called when the user does %sasami open_display: called from Sasami render.c proc sasamiWindow {width height} { global variantversion toplevel .sasami -width $width -height $height wm title .sasami "$variantversion: Sasami" frame .sasami.f togl .sasami.f.togl -width $width -height $height -double true \ -privatecmap false -depth true -rgba true pack .sasami.f.togl -fill both -expand t pack .sasami.f -fill both -expand t bind .sasami.f.togl {sasamiB %x %y} bind .sasami.f.togl {sasamiB1Motion %x %y} bind .sasami.f.togl {sasamiB %x %y} bind .sasami.f.togl {sasamiB2Motion %x %y} # also allow control-drag: by default, Apple machines have only # one button bind .sasami.f.togl {sasamiB2Motion %x %y} bind .sasami.f.togl {sasamiB %x %y} bind .sasami.f.togl {sasamiB3Motion %x %y} # also allow Apple-drag (Mod1 seems to be the Apple/Command key) bind .sasami.f.togl {sasamiB3Motion %x %y} eden "~sasami_display_open = 1;" } set sasamiOldX 0 set sasamiOldY 0 proc sasamiB { x y } { global sasamiOldX sasamiOldY set sasamiOldX $x set sasamiOldY $y } # This is called when mouse button 1 is pressed and moved in the Sasami # window: rotate about the X & Y axes. proc sasamiB1Motion { x y } { global sasamiOldX sasamiOldY set diffX [expr $x - $sasamiOldX] set diffY [expr $y - $sasamiOldY] #.sasami.f.togl setXrot [expr [sasami_getXrot] - $diffY] #.sasami.f.togl setYrot [expr [sasami_getYrot] - $diffX] #.sasami.f.togl render eden "~sasami_change_camera_rot(-($diffY), -($diffX), 0);" set sasamiOldX $x set sasamiOldY $y } # This is called when mouse button 3 is pressed and moved in the Sasami # window: zoom in and out on the Z axis. proc sasamiB3Motion { x y } { global sasamiOldY set diffY [expr $y - $sasamiOldY] #.sasami.f.togl setZpos [expr [sasami_getZpos] - $diffY] #.sasami.f.togl render eden "~sasami_change_camera_pos(0, 0, -($diffY));" set sasamiOldX $x set sasamiOldY $y } # This is called when mouse button 2 is pressed and moved in the Sasami # window: move camera position X and Y proc sasamiB2Motion { x y } { global sasamiOldX sasamiOldY set diffX [expr $x - $sasamiOldX] set diffY [expr $y - $sasamiOldY] eden "~sasami_change_camera_pos($diffX * 0.01, -($diffY) * 0.01, 0);" set sasamiOldX $x set sasamiOldY $y } proc sasamiWindowClose {} { eden "~sasami_display_open = 0;" destroy .sasami } # If the Img package (PNG etc) is available then load it set haveImg [expr ! [catch {package require Img}]] if {$_tkeden_variant == "dtkeden"} { if {$_dtkeden_isServer} { source $env(TKEDEN_LIB)/server.tcl } else { source $env(TKEDEN_LIB)/client.tcl } } # This causes the text field in the input window to get focus when the # application is double-clicked on the Mac. Unfortunately I can't seem # to get it to grab focus when the app is run from the Terminal. # other things tried... #wm focusmodel . active #raise . #grab set -global . focus .text EDEN-1.62/lib-tkeden-1.62/edensl.eden0100644000177700001640000001734410247427624015702 0ustar empublicem/* edensl.eden: Eden Symbol Lists */ /* Missing dependency on elements in l Two versions: simulation of Eden 1.x internal, and better... What would performance difference be? Perhaps not much. Range checking? Test cases */ /* Can't use edensl_define("l", 4, a) as the value of a will then be passed to the function, and we need the name. Passing &a allows us to use the nameof() function, but then we can't pass constants in as we can't have pointers to constants eg &2. So we'll have to resort to passing a string in, which is parsed by execute at the time of the function execution. This doesn't make the Eden language look too respectable: this obviously requires an interpreting parser, and will give us problems when attempting static analysis. Other attempts: `str($1)//str(i)` is (reference to the thing pointed to by $2[i]); The RHS of this is not `nameof($2[i])`: this is the current value of the thing pointed to by $2[i]. Need an eval() as don't want dependency for ever more on the value of $2[i], just its current contents. `str($1)//str(i)` is eval(nameof($2[i])); ? ... but can't do this as we can't eval() local variables (see change.log for 1.37 and 1.39). So the execute above will have to do (a shame as this means the language is not expressive enough to solve this case without resorting to a re-parse). */ /* But isn't this all just a band-aid over a fundamentally flawed implementation? +: it is enabling me to see yet more problems with Eden. -: it isn't a realistic solution. +: it should provide thesis material, but -: perhaps it isn't worth explaining within the thesis -- it is rather complex for what it is. -: probably better off concentrating on a new foundation? */ /* But can we write a function for m//n independent of its context? If we have l=m//n, we must be careful (and can possibly optimise) if m or n are l. If we have l is m//n, a change to a single element of m or n should not require a recompute of the entire concatenation. What if a concatenation is used along with other elements? What about the different types that concatenation can take? */ /* !@!@ concat to do */ ## !@!@ what if m or n are l?? proc concattol { auto i; for (i=1; i<=$1#; i++) `"l"//str(i)` = $1[i]; for (i=1; i<=$2#; i++) `"l"//str(i+$1#)` = $2[i]; ll = $1# + $2#; } ## writeln(l); ## -> bl_writeln("l"); proc bl_writeln { auto i; write("["); for (i=1; i<=`str($1)//"l"`; i++) { write(`str($1)//str(i)`); if (i < `str($1)//"l"`) write(","); } writeln("]"); } wholeproc = " %eden0 proc ?1_constructwhole : ?1l { auto i, s; s = \"%eden0\n?1 is [\"; for (i = 1; i <= ?1l; i++) { if (i != 1) s = s // \", \"; s = s // \"?1\" // str(i); } s = s // \"];\"; execute(s); } "; proc edensl_constructwhole { para l; execute(macro(wholeproc, l)); } proc edensl_assignconstruct { para l, v; auto i; `str(l)//"l"` = v#; for (i=1; i<=v#; i++) edensl_assignelement(l, i, v[i]); edensl_constructwhole(l); } proc edensl_defineconstruct { para l, sv; auto i; `str(l)//"l"` = sv#; for (i=1; i<=sv#; i++) edensl_defineelement(l, i, sv[i]); edensl_constructwhole(l); } proc edensl_assignelement { para l, i, v; if (i > `str(l)//"l"`) error("index out of range"); `str(l)//str(i)` = v; } proc edensl_defineelement { para l, i, sv; if (i > `str(l)//"l"`) error("index out of range"); execute("%eden0\n"//str(l)//str(i)//" is "//sv//";"); } proc edensl_append { para l, v; `str(l)//str((++`str(l)//"l"`))` = v; } proc edensl_delete { para l, i; auto j; if ((i < 1) || (i > `str(l)//"l"`)) error("index out of range"); for (j=i; j<=`str(l)//"l"`-1; j++) `str(l)//str(j)` = `str(l)//str(j+1)`; `str(l)//"l"`--; } proc edensl_insert { para l, i, v; auto j; if ((i < 1) || (i > `str(l)//"l"`)) error("index out of range"); for (j=`str(l)//"l"`; j>=i; j--) `str(l)//str(j+1)` = `str(l)//str(j)`; `str(l)//str(i)` = v; `str(l)//"l"`++; } proc edensl_shift { edensl_delete($1, 1); } proc edensl_assign { para l, v; if (type(v) == "list") edensl_assignconstruct(l, v); else `str(l)` = v; } edenslbuf = ""; proc edenslTransSwitch { edenslbuf = ""; } edenSymRE = "([[:alpha:]][[:alnum:]]*)"; listRefRE = "\\[([^]]*)\\]"; func edenslTransStatement { para s; auto q, l; ## l = [a, b, 42]; -> edensl_assignconstruct("l", [a, b, 42...]); s = regreplace(edenSymRE // "\\s*=\\s*" // listRefRE // "\\s*;$", "edensl_assignconstruct(\"$1\", [$2]);", s); ## l is [a, b, 42]; -> edensl_defineconstruct("l", ["a", "b", "42"...]); /* !@!@ need to escape quotes etc inside the string result */ /* !@!@ easier to quote the entire list? "[a, b, 42]" */ q = regmatch(edenSymRE // "\\s*is\\s*" // listRefRE // "\\s*;$", s); if (q != []) { /* place quotes around elements in the list */ l = regmatch(listRefRE, q[1]); /* !@!@ FIXED? "([^,]*)(,|$)" causes a crash here - whoops */ l = regreplace("\\s*([^,]*),", "\"$1\",", l[2]); l = regreplace(",\\s*([^,]*)$", ",\"$1\"", l); /* !@!@ this assumes s is only one statement */ /* now translate to procedure call */ s = "edensl_defineconstruct(\"" // q[2] // "\", [" // l // "]);"; } ## l[4] = a; -> edensl_assignelement("l", 4, a); s = regreplace(edenSymRE // "\\s*" // listRefRE // "\\s*=\\s*(.*);$", "edensl_assignelement(\"$1\", $2, $3);", s); /* note this one can't be done in standard %eden */ /* !@!@ need to escape quotes etc inside the string result */ ## l[4] is a; -> edensl_defineelement("l", 4, "a"); s = regreplace(edenSymRE // "\\s*" // listRefRE // "\\s*is\\s*(.*);$", "edensl_defineelement(\"$1\", $2, \"$3\");", s); ## l# -> ll s = regreplace(edenSymRE // "\\s*#", "$1l", s); ## l[i] on RHS (LHS catered for above) -> li s = regreplace(edenSymRE // "\\s*" // listRefRE, "$1$2", s); ## append l, v; -> edensl_append("l", v); s = regreplace("append\\s+" // edenSymRE // ",\\s*(.*)\\s*;$", "edensl_append(\"$1\", $2);", s); ## delete l, i; -> edensl_delete("l", i); s = regreplace("delete\\s+" // edenSymRE // ",\\s*(.*)\\s*;$", "edensl_delete(\"$1\", $2);", s); ## insert l, i, v; -> -> edensl_insert("l", i, v); s = regreplace("insert\\s+" // edenSymRE // ",\\s*(.*)\\s*;$", "edensl_insert(\"$1\", $2);", s); ## shift l; -> edensl_shift("l"); s = regreplace("shift\\s+" // edenSymRE // "\\s*;$", "edensl_shift(\"$1\");", s); ## l = ... -> edensl_assign("l", ...); ## "..." could be result of a func, an expression involving concatenation s = regreplace(edenSymRE // "\\s*=\\s*(.*);$", "edensl_assign(\"$1\", $2);", s); ## l is ... -> leave unchanged. Expressions involving concatenation ## etc will be handled as normal. return s; } proc edenslParseChar { para c; auto t, q, l; edenslbuf = edenslbuf // c; if (c == ';') { t = edenslTransStatement(edenslbuf); t = "%eden0\n" // t; if (eden_debug_notations) writeln(""); execute(t); edenslbuf = ""; } } /* The notation name can actually be %eden, so that this translator replaces the built-in Eden. The built-in Eden would still be accessible with %eden0. Probably need to make sure that execute, include etc all do a "%eden\n" before they run to make sure this fully works. Leave as %edensl for the time being. */ newNotation("%edensl", &edenslTransSwitch, &edenslParseChar); EDEN-1.62/lib-tkeden-1.62/eden.eden0100644000177700001640000006674510256057717015356 0ustar empublicem/* * $Id: eden.eden,v 1.3 2002/07/10 19:29:38 cssbz Exp $ */ /*--------------------------------------------------------------------------- function macro(macro_str, para_str1, para_str2, .., para_strN) Expands 'macro_str' by substituting 'para_strI' for "?I" and returns the resultant string (ref.: Edward Yung, M.Sc. thesis, `89, vol.2). ---------------------------------------------------------------------------*/ func macro { auto i, j, l, m, n, c, s; s = ""; l = (m = $1)#; shift; i = 1; while (i <= l) { for (j = i; j <= l && m[j] != '?'; j++); if (i != j) s = s // substr(m, i, j - 1); if (j <= l) { j++; n = (c = (j > l) ? '?' : m[j]) - '0'; s = s // ((1 <= n && n <= $#) ? $[n] : c); } i = j + 1; } return s; } proc installeddi { include(getenv("TKEDEN_LIB")//"/eddi.eden"); } /* symboldefinition returns the Eden definition of a symbol s in a form that can be given to the Eden parser (via execute(), todo() etc), whatever the type of symbol s. It will return a blank string when asked for the definition of a builtin function (since there is no meaningful Eden code representation of the function). This function is intended to fix problems with the data returned by symboldetail() etc. Pass symboldefinition a string naming the symbol or a pointer to the symbol. [by Ash] */ func symboldefinition { para s; auto sd, ret; /* need to avoid evaluating s if it is a formula -- if we do, then the definition s is symboldefinition("s"); (and other larger examples that include this dependency) will cause "nested too deeply" evaluation loop as the evaluation will cause Eden to evaluate s on demand when it is already being evaluated. Therefore we use 's' as a string reference throughout and avoid using functions that will initiate evaluation if s is a formula. */ /* convert s to a string if it is not already */ if (type(s) == "pointer") s = nameof(s); else if (type(s) != "string") error("address or symbol name needed (got "//type(s)//")"); sd = symboldetail(s); switch (sd[2]) { case "var": /* the `` evaluation that follows is safe because we have determined that s is a RWV, and Eden does not evaluate RWVs on demand */ if (type(`s`) == "string") ret = s // "=\"" // str(`s`) // "\";"; else ret = s // "=" // str(`s`) // ";"; break; case "formula": ret = s // " is" // sd[3]; break; case "proc": ret = "proc " // s // " " // sd[3] // ";"; break; case "procmacro": ret = "procmacro " // s // " " // sd[3] // ";"; break; case "func": ret = "func " // s // " " // sd[3] // ";"; break; case "builtin": case "Real-func": case "C-func": ret = ""; break; } return ret; } /* this copies a proc to a new name. copyproc("rot", "rotnew"); copies the definition of proc rot to proc rotnew. */ proc copyproc { para old, new; execute("proc " // new // " " // symboltext(old) // ";"); } /* this adjusts the definition of a proc so that, when called, the parameters and, optionally, return result are printed. showpara("rot", 1) causes proc rot to show its parameters when called. */ proc showpara { para p, showret; copyproc(p, p // "_preshowpara"); execute(macro(" proc ?1 { auto ret; write(\"?1: \", $, \"...\"); ret=apply(?1_preshowpara, $); if (?2) writeln(ret); else writeln(); return ret; }; ", str(p), str(showret))); } /* Make a real value into an integer with rounding. (by Chris Roe) */ func round { para r; if (r-int(r)>=0.5) return int(r)+1; else return int(r); } /* The following are some eden primitive functions */ /* Chris Roe - May 2002 */ /* Each function has a header comment to explain its usage and an example */ /* max returns the maximum of the parameters it is passed. e.g max(1,2)=2, max(1,2,3,4,5,6) = 6. */ func max { auto result,i,data; if (type($[1])=="list") {data= $[1];} else {data = $;} result = data[1]; for (i=1; i<=data#; i++) { if (data[i]>result) {result = data[i];} } return result; } /* min returns the minimum of the parameters it is passed. e.g min(1,2)=1, min(3,4,5,6) = 3 */ func min { auto result,i,data; if (type($[1])=="list") {data= $[1];} else {data = $;} result = data[1]; for (i=1; i<=data#; i++) { if (data[i]=0) {return num;} else {return -num;} } /* nthroot returns the nth root of the number it is passed and the root it is asked for. e.g nthroot(4,2)=2, nthroot(81,4)=3 */ /* there may be some problems with this .. e.g nthroot(1028,10) should = 2 but actually comes out as 2.0000789 etc */ func nthroot { para num, root; return pow(num,1.0/root); } /* factorial returns the factorial of the number it is passed. Only works with integers.. e.g factorial(4)=24, */ func factorial { para num; auto i,result; if ((type(num)!="int")||(num<0)) {return @;} if (num==0) {return 1;} result = 1; for (i=1; i<=num; i++) { result = result * i; } return result; } /* product returns the product of the parameters it is passed. Only works with numbers... e.g product(2,3)=6, product(4,7,2)= 56 */ func product { auto i,result,data; if (type($[1])=="list") {data= $[1];} else {data = $;} result = 1; for (i=1; i<=data#; i++) { if ((type(data[i])!="int")&&(type(data[i])!="float")) {return @;} result = result * data[i]; } return result; } /* sign returns -1 if the number passed is -ve, 0 if it is 0 and 1 if it is +ve e.g sign(4)=1, sign(-230.2323)= -1 */ func sign { para num; if (num<0) {return -1;} if (num>0) {return 1;} return 0; } /* even returns the nearest even number to the number given. negative numbers are adjusted away from zero. e.g even(4.5)=4, even(5.5)=6*/ func even { para num; /* e.g 4.5 .. int(4.5) = 4, 4%2=0.. so 4 closest even number */ if (int(num) % 2 == 0) {return int(num);} /* otherwise got to be odd and closer to the next even number which will be +1 */ /* use sign for -ve numbers which will have % result of -1.. try writeln(int(-3.2)%2); */ return int(num)+sign(num); } /* even returns the nearest odd number to the number given. negative numbers are adjusted away from zero. e.g odd(4.5)=5, odd(3.5)=3*/ func odd { para num; /* if its closest to an even number, return num+sign(num), i.e the nearest odd */ if (int(num) % 2 == 0) { return int(num)+sign(num); } /* otherwise int is already odd so return that.. */ return int(num); } /* mround returns the number rounded to the nearest multiple.. e.g mround(62,6)=60 */ func mround { para num,multiple; /* need to force floating point division */ return sign(num)*round(float(abs(num))/multiple)*multiple; } /* sumsq returns the sum of the squares of the parameters passed to it, e.g sumsq(2,3,4) = 29 */ func sumsq { auto i, result,data; if (type($[1])=="list") {data= $[1];} else {data = $;} result = 0; for (i=1; i<=data#; i++) { if ((type(data[i])!="int")&&(type(data[i])!="float")) {return @;} result = result + (data[i]*data[i]); } return result; } /* trunc returns the number with the fractional part removed. this is the same as the int function in eden - included for completeness.. e.g trunc(4.56)=4 */ func trunc { return int($[1]); } /* combin returns the number of ways n items can be picked from a total number of items. the n cannot be more than the total.. e.g combin(4,2)=6 */ func combin { para total,n; if (n>total) {return @;} return factorial(total)/(factorial(n)*factorial(total-n)); } /* ceiling returns the number rounded *up* to the nearest multiple of significance, e.g ceiling(62,6)=66 */ func ceiling { para num, multiple; /* i.e the case that matches mround() */ if (mround(num,multiple)>=((float(num)/multiple)*multiple)) { return mround(num,multiple); } /* otherwise if mround rounds down, add the multiple to it */ return mround(num,multiple)+multiple; } /* floor returns the number rounded *down* to the nearest multiple of significance, e.g floor(64,6)=60 */ func floor { para num, multiple; /* i.e the case that matches mround() */ if (mround(num,multiple)<=((num/multiple)*multiple)) { return mround(num,multiple); } /* otherwise if mround rounds down, add the multiple to it */ return mround(num,multiple)-multiple; } /* degrees takes an angle in radians and converts it to degrees, e.g degrees(PI)=180 */ func degrees { para angleinradians; return (angleinradians * (180/PI)) - (trunc((angleinradians * (180/PI))/360)*360) ; } /* radians takes an angle in degrees and converts it to radians, e.g radians(180)=3.14 etc */ /*NOTE - see degrees for implementational issue */ func radians { para angleindegrees; return (angleindegrees / (180/PI)) - (trunc((angleindegrees / ((180/PI))/(2*PI)))*(2*PI)); } /* rounddigits takes a number and rounds it to the number of digits specified.. e.g round(123,2) = 120, round(123,1) = 100, round(123.232,4)=123.2 */ func rounddigits { para num,digits; auto intpart,fracpart,numdigits; auto negative; negative = sign(num); if (sign(num)==-1) {num = -num;} intpart = int(num); fracpart = num-int(num); numintdigits = ceiling(log10(num),1); /* no fractional part - and more digits specified than in num, e.g round(123,4)=123 */ if ((fracpart==0)&&(pow(10,digits-1)>num)) {return num*negative;} /* if the number has a fractional part but the number of digits required is less than this, i.e rounddigits(123.56767,2) we can ignore the fraction. Note that we cannot ignore the fraction if the same.. e.g rounddigits(123.8,3)=129... */ if (ceiling(log10(num),1)>digits) {num = int(num);} if ((pow(10,digits-1) <= num) ) { /*i.e we are returning an integer */ if ((num % (int(pow(10,numintdigits-digits)))) < (pow(10,numintdigits-digits)/2)) { /* pow and % used to return the values */ return (num - num % (int(pow(10,numintdigits-digits))))*negative; } else { return (num - num % (int(pow(10,numintdigits-digits))) + pow(10,numintdigits-digits))*negative; } } /* otherwise we've got a real number to deal with */ /* sorts out case when e.g rounddigits(123.8,3) or rounddigits(1234.4,4).. */ if (ceiling(log10(num),1)==digits) {return round(num)*negative;} /* otherwise the answer will also be a real number and we have a real number.. */ return (intpart +round(fracpart*pow(10,digits-numintdigits))* (pow(10,-(digits-numintdigits))))*negative; } /* more eden primitive functions - 2nd may 2002, chris roe */ /* gcd takes numeric parameters and returns their greatest common divisor. any number of numbers can be passed.. e.g gcd(2,6)=2, gcd(6,9,24)=3, gcd(3,7,24,28)=1 */ func gcd { auto n1,n2,data,temp; if (type($[1])=="list") {data = $[1];} else {data = $;} while (data#>2) { temp = gcd(data[1],data[2]); data[2] = temp; delete data,1; } n1 = data[1]; n2 = data[2]; /* now have 2 numbers.. n1 & n2.. can compute gcd directly */ /* use euclid's algorithm.. */ r = 1; while (r>0) { /* ensure n1>n2 by swapping if neccessary */ if (n2>n1) {temp = n2; n2 = n1; n1 = temp;} r = n1 % n2; if (r==0) {return n2;} n1 = r; } return min(n1,n2); } /* lcm takes numeric parameters and returns the lowest common multiple of them.. e.g lcm(8,12)=24, lcm(4,6,8)=24. Note - use the fact that gcd(a,b)*lcm(a,b)=a*b for all a and b integers... see maths textbook for a proof!! */ func lcm { auto n1,n2,data,temp; if (type($[1])=="list") {data = $[1];} else {data = $;} while (data#>2) { temp = lcm(data[1],data[2]); data[2] = temp; delete data,1; } n1 = data[1]; n2 = data[2]; /* now assume have 2 numbers, n1 & n2.. can compute lcm directly */ return (n1*n2)/gcd(n1,n2); } /* variance takes and calculates the variance, i.e the sum of the deviations between each element and the mean divided by the number of data points. It can cope with either a number of numeric parameters passed to it, or a list containing numbers... e.g variance(23,34,46,2343) or variance(b) where b=[432,43,56,78] etc */ func variance { auto avg,data,i,result; if (type($[1])=="list") {data = $[1];} else {data = $;} /* data now contains a list of numbers */ avg = average(data); result = 0; for (i=1; i<=data#; i++) { result = result + ((data[i]-avg)*(data[i]-avg)); } return float(result) / data#; } /* stdev takes a list of numbers or numeric parameters and returns the standard deviation, or the square root of the variance... e.g stdev(23,45,67) or stdev(b) where b=[3,4,5,9] */ func stdev { auto data; if (type($[1])=="list") {data = $[1];} else {data = $;} return sqrt(variance(data)); } /* given a list of numbers, sorts them into ascending or descending order... */ /* uses bubble sort! improve sorting algorithm... */ /* 1 = ascending, 2 = descending */ func sort { para l,dir; auto i,j,result,temp,swap,ascending,descending; ascending = 1; descending = 2; swap = 1; while (swap>0) { swap = 0; for (i=1; i<=l#-1; i++) { if ( ((dir==ascending)&&(l[i]>l[i+1])) || ((dir==descending)&&(l[i]255)||(greenval>255)||(blueval>255)) error("colour out of range"); /* round to nearest integer - need to have each component as a strict 2 +character length hex number - can't deal with real numbers directly, and don't need to? */ redval = round(redval); greenval = round(greenval); blueval = round(blueval); /* use the c func to get the string back */ s = ""; sprintf(s,"#%02x%02x%02x",redval,greenval,blueval); return s; } /* English spelling of rgb2color */ func rgb2colour { return apply(rgb2color, $); } /* Install the Arca notation */ proc installarca { include(getenv("TKEDEN_LIB")//"/arca.eden"); /* I haven't decided the best way to set this up to distribute it to the PC platform etc. [Ash, August 2002] */ installIPTrans("%arca", "/dcs/emp/empublic/bin/arca.trans"); } /* Install the Eden Symbol Lists notation */ proc installedensl { include(getenv("TKEDEN_LIB")//"/edensl.eden"); } /* Install the Denota notation */ proc installdenota { auto d; d = cwd(); /* store the current working directory so we can restore it */ cd("/dcs/emp/empublic/projects/denotaMeziani1987/lib"); include("init.e"); cd(d); installIPTrans("%denota", "/dcs/emp/empublic/bin/denota"); } /* notations is a list of lists holding parameters required to implement any notations using translators. notations holds one list per notation. Each sublist contains three elements: 1: name of the notation (including initial '%' character) 2: pointer to the procedure to call when the user switches to this notation. No arguments are provided when this procedure is called, but it may use the value of currentNotation to determine which notation is in effect if this procedure is serving more than one notation, for example. 3: pointer to the procedure to call when the user provides input in this notation. This "parseChar" procedure is called once for each character provided, with the char as the sole argument. This procedure is called one character at a time so that it can implement any necessary form of blocking (eg parse one line at a time, or parse one statement at a time, where statements are ended with a ';'). currentNotation is an index into notations, or -1 meaning that the current notation is implemented in some other way. */ notations = []; eden_debug_notations = 0; /* newNotation: call this with three parameters to install a new notation or redefine an existing one. Parameters are: name: name of the new or existing notation, starting with the '%' character switchProcPtr: a pointer to the procedure to call when the user switches to this notation. transProcPtr: a pointer to the procedure to call when the user provides input in this notation. (see the comment for the "notations" list for more detail). Returns the index into the notations list for this notation. */ proc newNotation { para name, switchProcPtr, transProcPtr; auto i, si; if (name[1] != '%') error("notation names must start with %"); si = -1; /* searching index */ for (i = 1; i <= notations#; i++) { if (name == notations[i][1]) { si = i; break; } } if (si == -1) { /* a new notation: add a dummy entry which will be overwritten below */ append notations, [1, 2, 3]; si = notations#; /* add a radio button for the new notation, but not in ttyeden */ if (tcl != @) tcl("addNotationRadioButton " // substr(name, 2, name#)); } notations[si][1] = name; notations[si][2] = switchProcPtr; notations[si][3] = transProcPtr; return si; } currentNotation = -1; /* notationSwitch: is called when the current notation is changed using the % notation. This is passed the string starting % which describes the new notation. It should return 1 if the new notation is recognised and can be interpreted, 0 otherwise. This is called on every notation change, so the end of a block of script in a certain notation can be detected by the call to notationSwitch into the next notation at the end. */ proc notationSwitch { para name; auto found, i; currentNotation = -1; for (i = 1; i <= notations#; i++) { if (name == notations[i][1]) { currentNotation = i; /* call setup procedure */ (*(notations[i][2]))(); break; } } if (eden_debug_notations) writeln("notationSwitch " // name // " = " // str(currentNotation)); return (currentNotation != -1); } /* notationStack: Eden's execute() and include() commands cause the Eden interpreter to interpret a string. The string may contain a notation switch command, but after the string has been interpreted, the notation context is expected to be restored. I originally thought that the C "entryStack" structure in main.c was handling this, but that code seems to be doing something more complex. So, here, I represent the stack of interpreter notation contexts in an Eden list. Each element is an index into the notations list. The buffers of the current parser are not stored and restored. This means that: 1) a parser cannot reenter itself during a call to its "parseChar" function by using execute("%self\nstuff") or by include()-ing a file which contains code written in the notation implemented by the parser. 2) buffers should not be shared between notations. Note the implementation of the IP translator below, which holds a list of buffers, one for each notation implemented. Note the AOP translator will probably not cope with a reentrant call as it uses only one buffer (meaning that AOP-implemented notations cannot be used within the implementation of another AOP notation). */ notationStack = []; /* notationPushPop: is called just before and just after another instance of the Eden interpreter is started during a call to execute() or include(). The procedure needs to push the current notation context onto the notationStack just before the call, and pop it off just after, and notationPushPop is passed "1" or "-1" to indicate whether we are just before or just after respectively. */ proc notationPushPop { para direction; switch (direction) { case "1": insert notationStack, 1, currentNotation; if (eden_debug_notations) writeln("notationPushPop: PUSH " // str(currentNotation) // " NOW " // str(notationStack)); break; case "-1": if (notationStack# <= 0) error("can't pop an empty notationStack"); currentNotation = notationStack[1]; delete notationStack, 1; if (eden_debug_notations) writeln("notationPushPop: POP " // str(currentNotation) // " NOW " // str(notationStack)); break; default: error("bad direction " // direction // " passed to notationPushPop"); } } /* notationGet: called to obtain the name (including %) of the current notation, for use in the prompt. */ func notationGet { if ((currentNotation == -1) || (currentNotation > notations#)) error("notationGet called when currentNotation is not set sensibly (" // str(currentNotation) // ")"); return notations[currentNotation][1]; } /* notationChar: when a recognised notation is being interpreted (after notationSwitch has returned 1), this is given the script text, one character at a time. It should interpret the text, possibly maintain internal state, and use "execute" to create Eden state. */ proc notationChar { para c; auto i; if (eden_debug_notations) writeln("notationChar " // c // " (currentNotation = " // str(currentNotation) // ")"); if ((currentNotation == -1) || (currentNotation > notations#)) error("notationChar called when currentNotation is not set sensibly (" // str(currentNotation) // ")"); /* call the current notation's parseChar procedure */ (*(notations[currentNotation][3]))(c); } /* IP (Interactive Process) -based translators */ /* the indexes in iptfds and iptbufs should correspond to the notations list, so blank entries will be required if there are non-IP notations present. */ iptfds = []; iptbufs = []; proc ipTransSwitch { /* this should actually be unnecessary as it isn't possible to change notations without using a line feed, and so the previous ipParseChar should have cleared the buffer already. We'll do it for safety anyway. */ iptbufs[currentNotation] = ""; } proc ipTransParseChar { para c; auto l, r, w, e; if ((currentNotation < 1) || (currentNotation > iptfds#)) error("ipParseChar called when a non-IP notation is in effect"); l = iptfds[currentNotation]; if (l# != 3) error("wrong number of fds in iptfds for " // notations[currentNotation] // " notation " // "- was the IP translator opened?"); r = l[1]; w = l[2]; e = l[3]; iptbufs[currentNotation] = iptbufs[currentNotation] // c; if (c == '\n') { rawwrite(w, iptbufs[currentNotation]); out = ""; /* have to pause for a short while even if there appears to be no input as the concurrent translator might just be being slow -- there is no way of telling when the current input has finished (hand shaking) in this simple scheme */ while (fdready(r, 'r', [1, 0])) { out = out // rawread(r, 255); } if (fdready(e, 'r', [0, 0])) { error("<" // rawread(e, 255) // ">"); } if (eden_debug_notations) writeln("<" // notations[currentNotation][1] // ": " // out // ">"); execute(out); iptbufs[currentNotation] = ""; } } /* installIPTrans: call this to install an Interactive Process -based translator. Two arguments are required: name: name of the new notation, starting with the '%' character. This procedure should be able to cope with a change to an existing ip-based translator, but I doubt it does correctly at present. path: complete path to the external translator program which will be started up as a concurrent interactive process. User input in this new notation will be given to stdin of the process. Output from the process on stdout should be Eden code, which will be execute()'d. Output from the process on stderr is assumed to be an error message, which will have the same effect as normal errors. */ proc installIPTrans { para name, path; auto ni; ni = newNotation(name, &ipTransSwitch, &ipTransParseChar); while (ni > iptfds#) append iptfds, ""; while (ni > iptbufs#) append iptbufs, ""; iptfds[ni] = ipopen(path, basename(path)); iptbufs[ni] = ""; } /* Chris Brown's agent-oriented parser (AOP) */ include(getenv("TKEDEN_LIB")//"/trans.eden"); /* this list holds the 'info' information required for AOP translators. The indexes should correspond to the notations list, so blank entries will be required if there are non-AOP notations present. */ aopinfos = []; /* installlAOP: install an agent-oriented parser. This replaces Chris Brown's original 'notation' command. Two arguments are required: name: name of the new notation. This should include the initial '%' character (this is different to Chris Brown's original notation command, for consistency with the generic framework above). info: the name of an Eden list symbol which describes the chunking (or blocking) to be used when parsing this notation and the first agent statement to be used. */ proc installAOP { para name, info; auto ni; ni = newNotation(name, &aopSwitch, &aopParseChar); while (ni > aopinfos#) append aopinfos, ""; aopinfos[ni] = info; } proc aopSwitch { flush_parser(); setup_parser(aopinfos[currentNotation]); } proc aopParseChar { para c; parsechar(c); } /* notation used to be a built-in procedure, written by Chris Brown in C. Really we should fix the models to use the new installAOP proc above, but leave this here for a while... */ proc notation { para namenopercent, info; installAOP("%" // namenopercent, info); } /* remove a radio button for the new notation, but not in ttyeden. Pass the name of a notation, including the initial % character. */ proc removeNotationRadioButton { para name; if (name[1] != '%') error("removeNotationRadioButton should be passed a string starting with %"); if (tcl != @) tcl("removeNotationRadioButton " // substr(name, 2, name#)); } /* these were originally part of donald.eden, but people expect them to be a part of Eden... */ FALSE = 0; TRUE = 1; EDEN-1.62/lib-tkeden-1.62/sasami.eden0100644000177700001640000000652510247427624015704 0ustar empublicem/* * $Id$ */ /* sasami.eden */ sasami_display_open = 0; sasami_camera_rotthentrans = 0; proc sasami_camera_reset { /* stored as lists to enable simultaneous atomic access to all 3 elements */ sasami_camera_pos = [0, 0, -30]; sasami_camera_rot = [0, 0, 0]; sasami_camera_scale = [10, 10, 10]; sasami_camera_frustum_left = -1; sasami_camera_frustum_right = 1; /* hack: I haven't exposed the viewport size as Eden variables yet */ sasami_camera_frustum_bottom = -(640/480); /* don't know why in integer */ sasami_camera_frustum_top = 640/480; /* apparently this mustn't be set too small or the Z buffer resolution starts to go */ sasami_camera_frustum_near = 10.0; sasami_camera_frustum_far = 40000.0; } sasami_camera_reset(); proc sasami_propagate_camera_pos : sasami_camera_pos { if (~sasami_display_open) { tcl(".sasami.f.togl setXpos " // str(sasami_camera_pos[1])); tcl(".sasami.f.togl setYpos " // str(sasami_camera_pos[2])); tcl(".sasami.f.togl setZpos " // str(sasami_camera_pos[3])); } } proc sasami_propagate_camera_rot : sasami_camera_rot { if (~sasami_display_open) { tcl(".sasami.f.togl setXrot " // str(sasami_camera_rot[1])); tcl(".sasami.f.togl setYrot " // str(sasami_camera_rot[2])); tcl(".sasami.f.togl setZrot " // str(sasami_camera_rot[3])); } } proc sasami_progagate_camera_scale : sasami_camera_scale { if (~sasami_display_open) { tcl(".sasami.f.togl setXscale " // str(sasami_camera_scale[1])); tcl(".sasami.f.togl setYscale " // str(sasami_camera_scale[2])); tcl(".sasami.f.togl setZscale " // str(sasami_camera_scale[3])); } } proc sasami_propagate_camera_rotthentrans : sasami_camera_rotthentrans { if (~sasami_display_open) { tcl(".sasami.f.togl setRotThenTrans " // str(sasami_camera_rotthentrans)); } } sasami_camera is [sasami_camera_pos, sasami_camera_rot, sasami_camera_scale, sasami_camera_rotthentrans]; proc sasami_render : sasami_camera { if (~sasami_display_open) tcl(".sasami.f.togl render"); } sasami_camera_frustum is [sasami_camera_frustum_left, sasami_camera_frustum_right, sasami_camera_frustum_bottom, sasami_camera_frustum_top, sasami_camera_frustum_near, sasami_camera_frustum_far]; proc sasami_propagate_camera_frustum : sasami_camera_frustum { if (~sasami_display_open) { tcl(".sasami.f.togl setFrustumLeft " // str(sasami_camera_frustum_left)); tcl(".sasami.f.togl setFrustumRight " // str(sasami_camera_frustum_right)); tcl(".sasami.f.togl setFrustumBottom " // str(sasami_camera_frustum_bottom)); tcl(".sasami.f.togl setFrustumTop " // str(sasami_camera_frustum_top)); tcl(".sasami.f.togl setFrustumNear " // str(sasami_camera_frustum_near)); tcl(".sasami.f.togl setFrustumFar " // str(sasami_camera_frustum_far)); tcl(".sasami.f.togl render"); } } /* Convenience procedures for use by Tcl */ proc sasami_change_camera_pos { ~sasami_camera_pos = [sasami_camera_pos[1] + $1, sasami_camera_pos[2] + $2, sasami_camera_pos[3] + $3]; } proc sasami_change_camera_rot { ~sasami_camera_rot = [sasami_camera_rot[1] + $1, sasami_camera_rot[2] + $2, sasami_camera_rot[3] + $3]; } EDEN-1.62/lib-tkeden-1.62/server.tcl0100644000177700001640000002057510256064150015574 0ustar empublicem# # $Id: server.tcl,v 1.5 2001/08/01 18:00:40 cssbz Exp $ # # Just the server specific bits of tcl. This is sourced when appropriate # from edenio.tcl [Ash] set dtkedendebugtcl 0 # Client-Server & Socket # display the message of client connection on client window proc appendWindows {win text} { $win config -state normal $win insert end $text $win see end $win config -state disabled } # display the scripts sent by client on client window # send scripts to each client proc sendClientsSock {wsock msg} { global EOF clientsReply EOS synchronize dtkedendebugtcl if ($dtkedendebugtcl) { puts "server sendClientsSock msg $msg\n" } foreach sock $wsock { if {$sock == "Own"} { appendHist "$msg\n" evaluate "$msg\n" } else { # puts "test$sock" #if {$synchronize > 0} { # comment it due to the possibility of dead-lock # don't change the name of synchronize which comes from Eden/main.server.c # incr clientsReply -1 # puts $sock "$msg\n$EOS" puts $sock "$msg\n$EOF" #} else {puts $sock "$msg\n$EOF"} } } #if {$synchronize > 0} { # comment it due to the possibility of dead-lock # while {$clientsReply < 0} { # vwait clientsReply # } #} } proc sendOtherClients {exceptUsr msg} { #Don't change procedure's name which is connected to C programs of Eden. global clientSock sockName dtkedendebugtcl if ($dtkedendebugtcl) { puts "server sendOtherClients msg $msg\n" } if {[llength $clientSock] != 0 } { set otherClients $clientSock if {[llength $exceptUsr] != 0 && [info exists sockName($exceptUsr)]} { set exceptClient [lsearch $clientSock $sockName($exceptUsr)] if {$exceptClient >= 0 } { set otherClients [lreplace $clientSock $exceptClient $exceptClient] } } sendClientsSock $otherClients $msg } } proc sendClient {wusr msg} { #Don't change procedure's name which is connected to C programs of Eden. global sockName dtkedendebugtcl if ($dtkedendebugtcl) { puts "server sendClient msg $msg\n" } if {[info exists sockName($wusr)]} { sendClientsSock \{$sockName($wusr)\} $msg } } # read scripts from tkeden input window and send them to each client proc sendScripts {} { global clientSock dtkedendebugtcl set text [.text get 1.0 end] # .menu.accept invoke # puts "send $text" if ($dtkedendebugtcl) { puts "server sendScripts text $text\n" } sendClientsSock $clientSock $text } # read each definition into send window until EOF is found and then # send all to each client proc doService {sock addr msg} { global EOF EOU clientSock proType clientName sockName receivedMessage global oldNotation oldAgentName oldAgentType global EOS clientsReply synchronize ECS serverJobID JOBID set msg [string trimright $msg] if {$msg == "" || $msg == "\n"} return set msg1 [string rang $msg 0 10] if {$msg1 == $EOS} { #if {$synchronize > 0} {incr clientsReply} return } if {$msg1 != $EOF && $msg1 !=$EOU && $msg1 != $ECS} { append receivedMessage($sock) "$msg\n" return } if {$msg1 == $EOU} { ;# agent's name input by a client set loginClientName [string rang $msg 11 end] # getOldNotation # if {[llength $clientSock] == 0} { # evaluate ">>\n%eden\nCLIENT_LIST = \[\];\n$oldAgentType$oldAgentName\n$oldNotation\n" # } CLIENT_LIST has been declared in Scout.init.e */ evaluate ">>\n%eden\nappend CLIENT_LIST, \"$loginClientName\";\n$oldAgentType$oldAgentName\n$oldNotation\n" lappend clientSock $sock set clientName($sock) $loginClientName set sockName($loginClientName) $sock set receivedMessage($sock) "" return } set text $receivedMessage($sock) set sendClientName $clientName($sock) if {$msg1 == $EOF || $msg1 == $ECS} { if {$proType == "2" || $proType == "0"} { # getOldNotation incr JOBID appendHist ">~$sendClientName\n" appendHist $text appendHist "$oldAgentType$oldAgentName\n" appendHist "$oldNotation\n" # cannot change oldNotation, oldAgentType & oldAgentName. it comes from EX/EXinit(). # puts ">~$sendClientName\n$text\n%eden\ntcl(\"setServerJobID $JOBID\");\n$oldAgentType$oldAgentName\n$oldNotation\n" evaluate ">~$sendClientName\n$text\n%eden\ntcl(\"setServerJobID $JOBID\");\n$oldAgentType$oldAgentName\n$oldNotation\n" if {$proType == "2"} { set otherClients $clientSock set delClient [lsearch $clientSock $sock] if {$delClient >= 0 } { set otherClients [lreplace $clientSock $delClient $delClient] } sendClientsSock $otherClients $text } } elseif {$proType == "1" } { set text ">>$sendClientName\n$text\n>>\n" .text insert end $text } elseif {$proType == "3" } { set text ">>$sendClientName\n$text\n>>\n" # puts $text # getOldNotation appendHist $text evaluate "$text\n$oldAgentType$oldAgentName\n$oldNotation\n"; # cannot change oldNotation. it comes from EX/EXinit(). } if {$msg1 == $ECS} { #puts "5000" #after 50000 # slow down client's speed to let server do service #puts "$serverJobID $JOBID" while {$serverJobID != $JOBID} { vwait serverJobID } puts $sockName($sendClientName) $ECS } set receivedMessage($sock) "" return } } # Handles the input from the client and client shutdown proc svcHandler {sock addr} { global clientSock clientName sockName receivedMessage global oldNotation oldAgentName oldAgentType set msg [gets $sock] ;# get the client packet if {[eof $sock]} { ;# client gone or finished appendWindows .client.t.text "[fconfigure $sock -peername] disconnected \ at [clock format [clock seconds]]\n" close $sock ;# release the servers client channel set delClient [lsearch $clientSock $sock] if {$delClient >= 0 } { set clientSock [lreplace $clientSock $delClient $delClient] # getOldNotation evaluate ">>\n%eden\ndelete CLIENT_LIST, $delClient+1;\ \n$oldAgentType$oldAgentName\n$oldNotation\n" unset sockName($clientName($sock)) unset clientName($sock) unset receivedMessage($sock) } } else { doService $sock $addr $msg } } proc setServerJobID { value } { global serverJobID set serverJobID $value } # Accept-Connection handler for Server. # called When client makes a connection to the server # Its passed the channel we're to communicate with the client on, # The address of the client and the port we're using # # Setup a handler for (incoming) communication on # the client channel - send connection Reply and log connection proc connect {sock addr port} { # if {[badConnect $addr]} { # close $sock # return # } # Setup handler for future communication on client socket global clientSock set sockPeerName [fconfigure $sock -peername] # lappend clientSock $sock # evaluate "append CLIENT_LIST, \"$sock\";" fileevent $sock readable [list svcHandler $sock $addr] # Note we've accepted a connection (show how get peer info fm socket) appendWindows .client.t.text "Accept from $sockPeerName\n\ Accepted connection from $addr at [clock format [clock seconds]]\n" # Read client input in lines, disable blocking I/O fconfigure $sock -buffering line -blocking 0 # Send Acceptance string to client # puts $sock "$addr:$port, You are connected to the echo server." # puts $sock "It is now [clock format [clock seconds]]" } # Create a server socket on port $svcPort. # Call proc connect when a client attempts a connection. set clientSock {} set sockName(Own) "Own" set EOF "@#$%EOF%$#@" set EOU "@#$%EOU%$#@" set EOS "@#$%EOS%$#@" set ECS "@#$%ECS%$#@" set clientsReply 0 set JOBID 0 set serverJobID 0 socket -server connect $svcPort ;# cannot change the name of svcPort as it comes from EXinit() in EX/ex.c puts "$variantversion: server socket setup: channel <[expr $svcPort-9000]> on host <$eshost>" #puts "so far so good..." #update #vwait events ;# handle events till variable events is set EDEN-1.62/lib-tkeden-1.62/rgb.txt0100644000177700001640000003704010247427624015101 0ustar empublicemThis is a list of all the colours that are predefined. You can use the colour name as a string to define DoNaLD attributes and SCOUT window properties. The Red, Grn (Green) and Blu (Blue) columns show you the red, green and blue components of the colour, in a range from 0 (none) to 255 (maximum). These values can be used in the rgb2color (or rgb2colour) function if you prefer. This example below shows you how to use the rgb2color (rgb2colour) function. The colour being used in this example has the predefined name of CornflowerBlue. ------------------------------------------------------------------ %donald line l l=[{10,10}, {200,200}] %scout string g; window ash = { type: TEXT string: "Ash" frame: ([{10, 10}, {100, 100}]) bgcolor : g }; screen=; %eden g is rgb2colour(ri,gi,bi); A_l is strcat("linewidth=5,color=", g); ri=100;gi=149;bi=237; ------------------------------------------------------------------- =========== COLOUR LIST =========== Red Grn Blu Colour Name --- --- --- ----------- 255 250 250 snow 248 248 255 GhostWhite 245 245 245 WhiteSmoke 220 220 220 gainsboro 255 250 240 FloralWhite 253 245 230 OldLace 250 240 230 linen 250 235 215 AntiqueWhite 255 239 213 PapayaWhip 255 235 205 BlanchedAlmond 255 228 196 bisque 255 218 185 PeachPuff 255 222 173 NavajoWhite 255 228 181 moccasin 255 248 220 cornsilk 255 255 240 ivory 255 250 205 LemonChiffon 255 245 238 seashell 240 255 240 honeydew 245 255 250 MintCream 240 255 255 azure 240 248 255 AliceBlue 230 230 250 lavender 255 240 245 LavenderBlush 255 228 225 MistyRose 255 255 255 white 0 0 0 black 47 79 79 DarkSlateGray 47 79 79 DarkSlateGrey 105 105 105 DimGray 105 105 105 DimGrey 112 128 144 SlateGray 112 128 144 SlateGrey 119 136 153 LightSlateGray 119 136 153 LightSlateGrey 190 190 190 gray 190 190 190 grey 211 211 211 LightGrey 211 211 211 LightGray 25 25 112 MidnightBlue 0 0 128 navy 0 0 128 NavyBlue 100 149 237 CornflowerBlue 72 61 139 DarkSlateBlue 106 90 205 SlateBlue 123 104 238 MediumSlateBlue 132 112 255 LightSlateBlue 0 0 205 MediumBlue 65 105 225 RoyalBlue 0 0 255 blue 30 144 255 DodgerBlue 0 191 255 DeepSkyBlue 135 206 235 SkyBlue 135 206 250 LightSkyBlue 70 130 180 SteelBlue 176 196 222 LightSteelBlue 173 216 230 LightBlue 176 224 230 PowderBlue 175 238 238 PaleTurquoise 0 206 209 DarkTurquoise 72 209 204 MediumTurquoise 64 224 208 turquoise 0 255 255 cyan 224 255 255 LightCyan 95 158 160 CadetBlue 102 205 170 MediumAquamarine 127 255 212 aquamarine 0 100 0 DarkGreen 85 107 47 DarkOliveGreen 143 188 143 DarkSeaGreen 46 139 87 SeaGreen 60 179 113 MediumSeaGreen 32 178 170 LightSeaGreen 152 251 152 PaleGreen 0 255 127 SpringGreen 124 252 0 LawnGreen 0 255 0 green 127 255 0 chartreuse 0 250 154 MediumSpringGreen 173 255 47 GreenYellow 50 205 50 LimeGreen 154 205 50 YellowGreen 34 139 34 ForestGreen 107 142 35 OliveDrab 189 183 107 DarkKhaki 240 230 140 khaki 238 232 170 PaleGoldenrod 250 250 210 LightGoldenrodYellow 255 255 224 LightYellow 255 255 0 yellow 255 215 0 gold 238 221 130 LightGoldenrod 218 165 32 goldenrod 184 134 11 DarkGoldenrod 188 143 143 RosyBrown 205 92 92 IndianRed 139 69 19 SaddleBrown 160 82 45 sienna 205 133 63 peru 222 184 135 burlywood 245 245 220 beige 245 222 179 wheat 244 164 96 SandyBrown 210 180 140 tan 210 105 30 chocolate 178 34 34 firebrick 165 42 42 brown 233 150 122 DarkSalmon 250 128 114 salmon 255 160 122 LightSalmon 255 165 0 orange 255 140 0 DarkOrange 255 127 80 coral 240 128 128 LightCoral 255 99 71 tomato 255 69 0 OrangeRed 255 0 0 red 255 105 180 HotPink 255 20 147 DeepPink 255 192 203 pink 255 182 193 LightPink 219 112 147 PaleVioletRed 176 48 96 maroon 199 21 133 MediumVioletRed 208 32 144 VioletRed 255 0 255 magenta 238 130 238 violet 221 160 221 plum 218 112 214 orchid 186 85 211 MediumOrchid 153 50 204 DarkOrchid 148 0 211 DarkViolet 138 43 226 BlueViolet 160 32 240 purple 147 112 219 MediumPurple 216 191 216 thistle 255 250 250 snow1 238 233 233 snow2 205 201 201 snow3 139 137 137 snow4 255 245 238 seashell1 238 229 222 seashell2 205 197 191 seashell3 139 134 130 seashell4 255 239 219 AntiqueWhite1 238 223 204 AntiqueWhite2 205 192 176 AntiqueWhite3 139 131 120 AntiqueWhite4 255 228 196 bisque1 238 213 183 bisque2 205 183 158 bisque3 139 125 107 bisque4 255 218 185 PeachPuff1 238 203 173 PeachPuff2 205 175 149 PeachPuff3 139 119 101 PeachPuff4 255 222 173 NavajoWhite1 238 207 161 NavajoWhite2 205 179 139 NavajoWhite3 139 121 94 NavajoWhite4 255 250 205 LemonChiffon1 238 233 191 LemonChiffon2 205 201 165 LemonChiffon3 139 137 112 LemonChiffon4 255 248 220 cornsilk1 238 232 205 cornsilk2 205 200 177 cornsilk3 139 136 120 cornsilk4 255 255 240 ivory1 238 238 224 ivory2 205 205 193 ivory3 139 139 131 ivory4 240 255 240 honeydew1 224 238 224 honeydew2 193 205 193 honeydew3 131 139 131 honeydew4 255 240 245 LavenderBlush1 238 224 229 LavenderBlush2 205 193 197 LavenderBlush3 139 131 134 LavenderBlush4 255 228 225 MistyRose1 238 213 210 MistyRose2 205 183 181 MistyRose3 139 125 123 MistyRose4 240 255 255 azure1 224 238 238 azure2 193 205 205 azure3 131 139 139 azure4 131 111 255 SlateBlue1 122 103 238 SlateBlue2 105 89 205 SlateBlue3 71 60 139 SlateBlue4 72 118 255 RoyalBlue1 67 110 238 RoyalBlue2 58 95 205 RoyalBlue3 39 64 139 RoyalBlue4 0 0 255 blue1 0 0 238 blue2 0 0 205 blue3 0 0 139 blue4 30 144 255 DodgerBlue1 28 134 238 DodgerBlue2 24 116 205 DodgerBlue3 16 78 139 DodgerBlue4 99 184 255 SteelBlue1 92 172 238 SteelBlue2 79 148 205 SteelBlue3 54 100 139 SteelBlue4 0 191 255 DeepSkyBlue1 0 178 238 DeepSkyBlue2 0 154 205 DeepSkyBlue3 0 104 139 DeepSkyBlue4 135 206 255 SkyBlue1 126 192 238 SkyBlue2 108 166 205 SkyBlue3 74 112 139 SkyBlue4 176 226 255 LightSkyBlue1 164 211 238 LightSkyBlue2 141 182 205 LightSkyBlue3 96 123 139 LightSkyBlue4 198 226 255 SlateGray1 185 211 238 SlateGray2 159 182 205 SlateGray3 108 123 139 SlateGray4 202 225 255 LightSteelBlue1 188 210 238 LightSteelBlue2 162 181 205 LightSteelBlue3 110 123 139 LightSteelBlue4 191 239 255 LightBlue1 178 223 238 LightBlue2 154 192 205 LightBlue3 104 131 139 LightBlue4 224 255 255 LightCyan1 209 238 238 LightCyan2 180 205 205 LightCyan3 122 139 139 LightCyan4 187 255 255 PaleTurquoise1 174 238 238 PaleTurquoise2 150 205 205 PaleTurquoise3 102 139 139 PaleTurquoise4 152 245 255 CadetBlue1 142 229 238 CadetBlue2 122 197 205 CadetBlue3 83 134 139 CadetBlue4 0 245 255 turquoise1 0 229 238 turquoise2 0 197 205 turquoise3 0 134 139 turquoise4 0 255 255 cyan1 0 238 238 cyan2 0 205 205 cyan3 0 139 139 cyan4 151 255 255 DarkSlateGray1 141 238 238 DarkSlateGray2 121 205 205 DarkSlateGray3 82 139 139 DarkSlateGray4 127 255 212 aquamarine1 118 238 198 aquamarine2 102 205 170 aquamarine3 69 139 116 aquamarine4 193 255 193 DarkSeaGreen1 180 238 180 DarkSeaGreen2 155 205 155 DarkSeaGreen3 105 139 105 DarkSeaGreen4 84 255 159 SeaGreen1 78 238 148 SeaGreen2 67 205 128 SeaGreen3 46 139 87 SeaGreen4 154 255 154 PaleGreen1 144 238 144 PaleGreen2 124 205 124 PaleGreen3 84 139 84 PaleGreen4 0 255 127 SpringGreen1 0 238 118 SpringGreen2 0 205 102 SpringGreen3 0 139 69 SpringGreen4 0 255 0 green1 0 238 0 green2 0 205 0 green3 0 139 0 green4 127 255 0 chartreuse1 118 238 0 chartreuse2 102 205 0 chartreuse3 69 139 0 chartreuse4 192 255 62 OliveDrab1 179 238 58 OliveDrab2 154 205 50 OliveDrab3 105 139 34 OliveDrab4 202 255 112 DarkOliveGreen1 188 238 104 DarkOliveGreen2 162 205 90 DarkOliveGreen3 110 139 61 DarkOliveGreen4 255 246 143 khaki1 238 230 133 khaki2 205 198 115 khaki3 139 134 78 khaki4 255 236 139 LightGoldenrod1 238 220 130 LightGoldenrod2 205 190 112 LightGoldenrod3 139 129 76 LightGoldenrod4 255 255 224 LightYellow1 238 238 209 LightYellow2 205 205 180 LightYellow3 139 139 122 LightYellow4 255 255 0 yellow1 238 238 0 yellow2 205 205 0 yellow3 139 139 0 yellow4 255 215 0 gold1 238 201 0 gold2 205 173 0 gold3 139 117 0 gold4 255 193 37 goldenrod1 238 180 34 goldenrod2 205 155 29 goldenrod3 139 105 20 goldenrod4 255 185 15 DarkGoldenrod1 238 173 14 DarkGoldenrod2 205 149 12 DarkGoldenrod3 139 101 8 DarkGoldenrod4 255 193 193 RosyBrown1 238 180 180 RosyBrown2 205 155 155 RosyBrown3 139 105 105 RosyBrown4 255 106 106 IndianRed1 238 99 99 IndianRed2 205 85 85 IndianRed3 139 58 58 IndianRed4 255 130 71 sienna1 238 121 66 sienna2 205 104 57 sienna3 139 71 38 sienna4 255 211 155 burlywood1 238 197 145 burlywood2 205 170 125 burlywood3 139 115 85 burlywood4 255 231 186 wheat1 238 216 174 wheat2 205 186 150 wheat3 139 126 102 wheat4 255 165 79 tan1 238 154 73 tan2 205 133 63 tan3 139 90 43 tan4 255 127 36 chocolate1 238 118 33 chocolate2 205 102 29 chocolate3 139 69 19 chocolate4 255 48 48 firebrick1 238 44 44 firebrick2 205 38 38 firebrick3 139 26 26 firebrick4 255 64 64 brown1 238 59 59 brown2 205 51 51 brown3 139 35 35 brown4 255 140 105 salmon1 238 130 98 salmon2 205 112 84 salmon3 139 76 57 salmon4 255 160 122 LightSalmon1 238 149 114 LightSalmon2 205 129 98 LightSalmon3 139 87 66 LightSalmon4 255 165 0 orange1 238 154 0 orange2 205 133 0 orange3 139 90 0 orange4 255 127 0 DarkOrange1 238 118 0 DarkOrange2 205 102 0 DarkOrange3 139 69 0 DarkOrange4 255 114 86 coral1 238 106 80 coral2 205 91 69 coral3 139 62 47 coral4 255 99 71 tomato1 238 92 66 tomato2 205 79 57 tomato3 139 54 38 tomato4 255 69 0 OrangeRed1 238 64 0 OrangeRed2 205 55 0 OrangeRed3 139 37 0 OrangeRed4 255 0 0 red1 238 0 0 red2 205 0 0 red3 139 0 0 red4 255 20 147 DeepPink1 238 18 137 DeepPink2 205 16 118 DeepPink3 139 10 80 DeepPink4 255 110 180 HotPink1 238 106 167 HotPink2 205 96 144 HotPink3 139 58 98 HotPink4 255 181 197 pink1 238 169 184 pink2 205 145 158 pink3 139 99 108 pink4 255 174 185 LightPink1 238 162 173 LightPink2 205 140 149 LightPink3 139 95 101 LightPink4 255 130 171 PaleVioletRed1 238 121 159 PaleVioletRed2 205 104 137 PaleVioletRed3 139 71 93 PaleVioletRed4 255 52 179 maroon1 238 48 167 maroon2 205 41 144 maroon3 139 28 98 maroon4 255 62 150 VioletRed1 238 58 140 VioletRed2 205 50 120 VioletRed3 139 34 82 VioletRed4 255 0 255 magenta1 238 0 238 magenta2 205 0 205 magenta3 139 0 139 magenta4 255 131 250 orchid1 238 122 233 orchid2 205 105 201 orchid3 139 71 137 orchid4 255 187 255 plum1 238 174 238 plum2 205 150 205 plum3 139 102 139 plum4 224 102 255 MediumOrchid1 209 95 238 MediumOrchid2 180 82 205 MediumOrchid3 122 55 139 MediumOrchid4 191 62 255 DarkOrchid1 178 58 238 DarkOrchid2 154 50 205 DarkOrchid3 104 34 139 DarkOrchid4 155 48 255 purple1 145 44 238 purple2 125 38 205 purple3 85 26 139 purple4 171 130 255 MediumPurple1 159 121 238 MediumPurple2 137 104 205 MediumPurple3 93 71 139 MediumPurple4 255 225 255 thistle1 238 210 238 thistle2 205 181 205 thistle3 139 123 139 thistle4 0 0 0 gray0 0 0 0 grey0 3 3 3 gray1 3 3 3 grey1 5 5 5 gray2 5 5 5 grey2 8 8 8 gray3 8 8 8 grey3 10 10 10 gray4 10 10 10 grey4 13 13 13 gray5 13 13 13 grey5 15 15 15 gray6 15 15 15 grey6 18 18 18 gray7 18 18 18 grey7 20 20 20 gray8 20 20 20 grey8 23 23 23 gray9 23 23 23 grey9 26 26 26 gray10 26 26 26 grey10 28 28 28 gray11 28 28 28 grey11 31 31 31 gray12 31 31 31 grey12 33 33 33 gray13 33 33 33 grey13 36 36 36 gray14 36 36 36 grey14 38 38 38 gray15 38 38 38 grey15 41 41 41 gray16 41 41 41 grey16 43 43 43 gray17 43 43 43 grey17 46 46 46 gray18 46 46 46 grey18 48 48 48 gray19 48 48 48 grey19 51 51 51 gray20 51 51 51 grey20 54 54 54 gray21 54 54 54 grey21 56 56 56 gray22 56 56 56 grey22 59 59 59 gray23 59 59 59 grey23 61 61 61 gray24 61 61 61 grey24 64 64 64 gray25 64 64 64 grey25 66 66 66 gray26 66 66 66 grey26 69 69 69 gray27 69 69 69 grey27 71 71 71 gray28 71 71 71 grey28 74 74 74 gray29 74 74 74 grey29 77 77 77 gray30 77 77 77 grey30 79 79 79 gray31 79 79 79 grey31 82 82 82 gray32 82 82 82 grey32 84 84 84 gray33 84 84 84 grey33 87 87 87 gray34 87 87 87 grey34 89 89 89 gray35 89 89 89 grey35 92 92 92 gray36 92 92 92 grey36 94 94 94 gray37 94 94 94 grey37 97 97 97 gray38 97 97 97 grey38 99 99 99 gray39 99 99 99 grey39 102 102 102 gray40 102 102 102 grey40 105 105 105 gray41 105 105 105 grey41 107 107 107 gray42 107 107 107 grey42 110 110 110 gray43 110 110 110 grey43 112 112 112 gray44 112 112 112 grey44 115 115 115 gray45 115 115 115 grey45 117 117 117 gray46 117 117 117 grey46 120 120 120 gray47 120 120 120 grey47 122 122 122 gray48 122 122 122 grey48 125 125 125 gray49 125 125 125 grey49 127 127 127 gray50 127 127 127 grey50 130 130 130 gray51 130 130 130 grey51 133 133 133 gray52 133 133 133 grey52 135 135 135 gray53 135 135 135 grey53 138 138 138 gray54 138 138 138 grey54 140 140 140 gray55 140 140 140 grey55 143 143 143 gray56 143 143 143 grey56 145 145 145 gray57 145 145 145 grey57 148 148 148 gray58 148 148 148 grey58 150 150 150 gray59 150 150 150 grey59 153 153 153 gray60 153 153 153 grey60 156 156 156 gray61 156 156 156 grey61 158 158 158 gray62 158 158 158 grey62 161 161 161 gray63 161 161 161 grey63 163 163 163 gray64 163 163 163 grey64 166 166 166 gray65 166 166 166 grey65 168 168 168 gray66 168 168 168 grey66 171 171 171 gray67 171 171 171 grey67 173 173 173 gray68 173 173 173 grey68 176 176 176 gray69 176 176 176 grey69 179 179 179 gray70 179 179 179 grey70 181 181 181 gray71 181 181 181 grey71 184 184 184 gray72 184 184 184 grey72 186 186 186 gray73 186 186 186 grey73 189 189 189 gray74 189 189 189 grey74 191 191 191 gray75 191 191 191 grey75 194 194 194 gray76 194 194 194 grey76 196 196 196 gray77 196 196 196 grey77 199 199 199 gray78 199 199 199 grey78 201 201 201 gray79 201 201 201 grey79 204 204 204 gray80 204 204 204 grey80 207 207 207 gray81 207 207 207 grey81 209 209 209 gray82 209 209 209 grey82 212 212 212 gray83 212 212 212 grey83 214 214 214 gray84 214 214 214 grey84 217 217 217 gray85 217 217 217 grey85 219 219 219 gray86 219 219 219 grey86 222 222 222 gray87 222 222 222 grey87 224 224 224 gray88 224 224 224 grey88 227 227 227 gray89 227 227 227 grey89 229 229 229 gray90 229 229 229 grey90 232 232 232 gray91 232 232 232 grey91 235 235 235 gray92 235 235 235 grey92 237 237 237 gray93 237 237 237 grey93 240 240 240 gray94 240 240 240 grey94 242 242 242 gray95 242 242 242 grey95 245 245 245 gray96 245 245 245 grey96 247 247 247 gray97 247 247 247 grey97 250 250 250 gray98 250 250 250 grey98 252 252 252 gray99 252 252 252 grey99 255 255 255 gray100 255 255 255 grey100 169 169 169 DarkGrey 169 169 169 DarkGray 0 0 139 DarkBlue 0 139 139 DarkCyan 139 0 139 DarkMagenta 139 0 0 DarkRed 144 238 144 LightGreen (end colours) EDEN-1.62/lib-tkeden-1.62/eden.txt0100644000177700001640000004605510256057717015252 0ustar empublicem---------- EDEN (Evaluator of DEfinitive Notations) QUICK REFERENCE ---------- Parts of syntax which are !@Ooptional are shown like this!@P CONTENTS OF THIS QUICK REFERENCE: 1. C-like syntax 2. Data types 3. Operators 4. Procedural statements 5. User-defined functions, procedures, actions... 6. Pre-defined variables 7. Pre-defined functions and procedures 8. C-library functions and procedures 9. Writing a clock 10. More information -- 1. C-LIKE SYNTAX ---------------------------------------------------------- Statements are followed by the semi-colon; /* Multi-line C-style comments /* ...although note they may nest in Eden */ */ ## one-line comments start with two hash characters Assignment: v = 1; Definition: a is f(b, c); Function: func square { return $1*$1; } Procedure: proc inc_a { a++; } Action: proc print : q { writeln("q is ", q); } Name space: can access Scout variables directly. to access Donald variables, prepend an underscore _ Variable declaration is not required or possible. Redeclaration of type is automatic. -- 2. DATA TYPES ------------------------------------------------------------- Undefined: @ Integer: 123, 018 (octal), 0xAB (hex) Character: 'A', '\n', '\009' Floating point: 1.23e-15 String: s = "this is a string" s[1] is the first character of the string s. Pointer: ip = &int_variable * dereferences a pointer: *ip == int_variable List: L = [ 100, 'a', "string", [1,2,3] ] L[1] is the first item of L. L[4][2] is the second item in the fourth item of L. L# is the length of list L. L // M is the concatenation of L and M. See also append, insert, delete and shift. -- 3. OPERATORS -------------------------------------------------------------- Strict: Returns @ if an operand is @ Lazy: Leaves the second operand unevaluated if it is unnecessary Eager: Always evaluates both operands Arithmetic (strict): + - (difference and unary) * / % (remainder) Relational: < > <= >= Equality: == != Logical (lazy): && || ! Logical (eager): and or not Bitwise (eager): bitand bitor Conditional: cond ? iftrue : iffalseor@ Assignment: = += -= Prefix assignment: ++lvalue --lvalue Postfix assignment: lvalue++ lvalue-- Indirection: a=1; r="a"; v=`r`; Now v == 1 (note: there are problems with use of indirection on the RHS of a definition). Type casting is implemented through functions: see int(), char() etc below. -- 4. PROCEDURAL STATEMENTS -------------------------------------------------- Compound statements: { statement; !@Ostatements...!@P } insert list, position, value; (note: - no brackets - these are not functions append list, value; - they operate only only lists, not delete list, position; strings) shift !@Olist!@P; (shift with no argument deletes the first item from $) if (expression) statement !@Oelse statement!@P while (expression) statement do statement while (expression); for (!@Oinitialisation!@P; !@Opre-iteration-test!@P; !@Opost-statement!@P) statement switch (expression) { case constant: statement; !@Odefault statement;!@P } break; causes termination of the smallest enclosing while, do, for, switch continue; causes continuation of smallest enclosing while, do, for return !@Oexpression!@P; Null statement: ; Dependency link: identifier ~> [ !@Oidentifier_list!@P ]; Query: ?lvalue; Value freezing: eval(sym): takes the value of sym at definition entry time (note this is at proc definition time if eval is used within a proc). -- 5. USER-DEFINED FUNCTIONS, PROCEDURES, ACTIONS... ------------------------- func identifier { !@Opara id_list;!@P !@Oauto id_list;!@P !@Ostatements...!@P } proc identifier !@O: id_list!@P { !@Opara id_list;!@P !@Oauto id_list;!@P !@Ostatements...!@P } procmacro identifier { !@Opara id_list;!@P !@Oauto id_list;!@P !@Ostatements...!@P } $ is the argument list of a function. $3 is the third argument. $[n] is the n-th argument. Function call: four = square(2); -- 6. PRE-DEFINED VARIABLES -------------------------------------------------- stdin: standard input. stdout: standard output. stderr: standard error. autocalc: whether Eden automatically recalculates formula definitions. _tkeden_showxoutput: whether to show info sent to Tcl for debugging purposes (see also debug(128)). eden_error_index_range: whether to generate an error or @ when referencing outside an array. eden_notice_undef_reference: whether to give notices about references to undefined values. eden_debug_notations: whether the notation-handling Eden code should give debugging output tkeden_vbfeatures: whether to implement "VB-like features" in Scout (eg mouseClick observables). These features are not recommended for use in new models. PI: ratio of circle circumference to diameter (note lower case pi in DoNaLD). -- 7. PRE-DEFINED FUNCTIONS AND PROCEDURES ----------------------------------- write(args...): print arguments on stdout. writeln(args...): print arguments on stdout, appending a newline (\n). type(data): returns the type of data as a string: one of "@", "int", "char", "string", "float", "list", "func", "proc", "procmacro", "builtin", "C-func", "Real-func". int(data): returns data after cast to integer type. char(data): returns data after cast to character type. str(data): returns data after cast to character type. float(data): returns data after cast to floating point type. substr(string, from, to): returns a substring of string. strcat(strings...): returns the string concatenation of its arguments. nameof(pointer): returns the name of the symbol to which the pointer points. sublist(list, from, to): returns a sublist of list. listcat(lists...): returns the list concatenation of its arguments. array(size, data): returns a list constructed from data items, of length size. time(): returns the current time in seconds since Jan 1, 1970. ftime(): returns the current time in [second, milli] form. gettime(): returns the current time in [second, minute, hour, day of month, month of year, year, day of week] form. apply(function, list): calls function with list as argument. execute(string): executes string as Eden statements. todo(string): will execute string as Eden statements after current evaluation terminates. include(string!@O, string...!@P): executes the contents of the named file(s) as Eden statements. cd(string): changes the current working directory. cwd(): returns the current working directory. dirname(string): returns the containing directory of a given filepath. basename(string): returns the filename (leafname) of a given filepath. exit(status): terminates the program, returning status as exit status. forget(string): attempts to remove the named variable from the symbol table. Returns 0 for OK, 1 for not found, 2 for failure. forget(pointer): attempts to remove the pointed-to variable from the symbol table. Returns 0 for OK, 2 for failure (1 is not possible). eager(): evaluate all out of date formula variables and actions now, update the screen, whatever the state of autocalc. touch(pointers...): put the targets of the pointed to variables on the evaluation queue. formula_list(): returns list of pointers to queued formula variables. action_list(): returns list of pointers to queued actions. symboltable(): returns the current symbol table as a list of lists. symbols(string): returns a list of symbols from the symbol table which are of the specified type ("@", "int", "char", "string", "float", "list", "var", "formula", "proc", "procmacro", "func", "builtin", "Real-func", "C-func" or "any"). symboldetail(string): returns a list of information about the named symbol: [name, type, text, targets, sources, master] type is one of "var", "formula", "proc", "procmacro", "func", "builtin", "Real-func", "C-func". symboldetail(pointer): returns a list of information about the named symbol. symboltext(string): returns the original text used when defining a symbol. symboltext(pointer): returns the original text used when defining a symbol. symboldefinition(string): returns a symbol in Eden-interpretable form. symboldefinition(pointer): returns a symbol in Eden-interpretable form. getenv(env): returns the string contents of the environment variable env. putenv(env): set environment variable: env should have the form "name=value". error(message): generate an Eden error. error_no(): returns the last system (not Eden) error number. backgnd(path, cmd, arg1, arg2...): executes a process in the background. pipe(path, cmd, arg1, arg2...): pipes stdout to the process given by path. get_msgq(key flag): gets a message queue. remove_msgq(msgqid): removes a message from the message queue msgqid. send_msg(msgid, [msg_type, msg_text], flag): send a message on a message queue. receive_msg(msgqid, msg_type, flag): receive a message from a message queue. installAOP(notation, agentname): install a new Agent-Oriented Parser notation. notation string must include the initial % character. This function replaces the old "notation" built-in: replace notation("eddi", "eddi_notation"); with installAOP("%eddi", "eddi_notation"); newNotation(name, switchProcPtr, transProcPtr): install a new notation. installIPTrans(name, path): install a new Interactive Process -based translator. removeNotationRadioButton(notation): removes a notation radio button from the tkeden interface. Pass the name of a notation, including the initial % character. installeddi(): install the EDDI notation. installarca(): install the ARCA notation. installdenota(): install the DENOTA notation. installedensl(): install the EdenSL notation. macro(s, para1, para2, ..., paraN): substitute ?1 in s with para1, ?2 with para2 etc and return the result. copyproc(oldname, newname): copy a proc to a new name. showpara(procname, showret): adjust the definition of a proc so that, when called, the parameters and, optionally, return result are printed. (Superseded for most purposes by debug(512)). round(r): make a real value into an integer with rounding. max(number, ...) or max([list of numbers]) : returns the maximum of the numbers. min(number, ...) or min([list of numbers]) : returns the minimum of the numbers. sum(number, ...) or sum([list of numbers]) : returns the sum of the numbers. abs(number) : returns number if > 0, otherwise returns -number (e.g abs(-7)=7). average(number, ...) or average([list of numbers]) : returns the average of the numbers. nthroot(number, n) : returns the n'th root of the number given. factorial(number) : returns the factorial of the number given. product(number, ... ) : returns the numbers passed multiplied together. sign(number) : returns -1 if number is < 0, 0 if number = 0, 1 if number > 0. even(number) : returns the nearest even number to the number given. odd(number) : returns the nearest odd number to the number given. mround(number, multiple) : returns the number rounded to the nearest multiple of the given multiple (e.g mround(62,6)=60). sumsq(number, .. ) or sumsq([list of numbers]) : returns the sum of the squares of the numbers passed. trunc(number) : returns the integer part of the number given. combin(total, n) : returns the number of ways n numbers can be picked from total number of items. ceiling(number, multiple) : returns the number rounded to the nearest multiple of the given multiple that is greater than the number. floor(number, multiple) : returns the number rounded to the nearest multiple of the given multiple that is lower than the number. degrees(angle) : returns an angle given in radians with its equivalent in degrees in a range 0-360. radians(angle) : returns an angle given in degrees with its equivalent in radians in a range 0-2*PI. rounddigits(number, digits) : returns the number rounded to the specified number of digits (e.g rounddigits(123.45,2)=120). gcd(number, ...) or gcd([list of numbers]) : returns the largest number which will divide exactly into all the numbers passed. lcm(number, ...) or lcm([list of numbers]) : returns the smallest number that all the numbers passed will divide exactly into it. variance(number, ...) or variance([list of numbers]) : returns the variance of the numbers passed or the list of numbers passed to it. stdev(number, ...) or stdev([list of numbers]) : returns the standard deviation of the numbers passed or the list of numbers passed to it. sort([list of numbers], direction) : returns the list of numbers sorted. the direction parameter should be 1 to return an ascending list, 2 to return a descending list. median([list of numbers]) : returns the median element of a list of elements, those elements do not need to be in any sorted order. randomise() : seeds the random number generator with a random number. rnd(number) : returns a random number between 0 and the number. Note that both 0 and number are included in the range. realrand() : returns a real random number between 0.0 and 1.0, including 0 but excluding 1. rgb2color(r, g, b): takes values in range 0-255 and returns a colour reference (which should be treated as opaque) to be used in SCOUT/DoNaLD. rgb2colour(r, g, b): same as rgb2color. ipopen(path, cmd, arg1, arg2...): creates a concurrent interactive process, returning a list [rfd, wfd, efd] of stdin, stdout, stderr file descriptors. ipclose([rfd, wfd, efd]): terminates the process created with ipopen. fdready(fd, type, [sec, milli]): returns non-zero if the file descriptor can be read from, written to, or has an exception, depending on the second argument, which should be 'r', 'w' or 'e'. Will block for the time stated in third argument (which can be zero), or indefinately until the necessary condition is achieved if the third argument is @. rawread(fd, maxbytes): returns a string, maximum maxbytes long, read from the file descriptor fd, with no file buffering. rawwrite(fd, string): writes string to the file descriptor, with no file buffering. regmatch(pattern, subject): returns a list of subpatterns in the first match found by the (Perl-compatible) regular expression pattern in subject. The first subpattern is the entire match. regreplace(pattern, replacement, subject!@O, limit!@P): replaces the matches found by pattern in subject with replacement. The optional limit sets the number of replacements that are made. replacement can contain references to parenthesised subpatterns in pattern, in the form "$n" (0<=n<=99). A literal $ can be achieved by escaping it: "\\$" (note the need to escape the backslash in an Eden string). usbhidopen(filename): opens a file (eg /dev/input/event0) as a Universal Serial Bus Human Input Device (eg a joystick or steering wheel), returning the fileid. Available on Linux only at present. usbhidread(fileid): returns a packet of information read from the device in the form [time, type, code, value]. time is returned in the same form as the ftime() routine. If there were no packets to read, empty list is returned. usbhidclose(fileid): closes the fileid. rawserialopen(filename): opens a file (eg /dev/ttyS0) and sets it in raw mode, returning the fileid. This is intended to be used for communication with hardware. Use with rawwrite() and rawserialread(). Available on Linux only at present. rawserialread(fd, maxbytes): returns a string, maximum maxbytes long, read from the file descriptor fd, with no file buffering. rawserialclose(fileid): closes the fileid. inpdevlineno(): returns an integer -- the current line number in the Eden (or other?) code. inpdevname(): returns a string -- the name of the current input device. (NB: for the above, use eg eval(inpdevlineno()) to evaluate and obtain values from parse time rather than run time.) -- 8. C-LIBRARY FUNCTIONS AND PROCEDURES ------------------------------------- (see their man pages for more detail) fopen(filename, mode): opens a file, returning the fileid or 0 on error. fclose(fileid): closes a file stream. fgetc(fileid): gets and returns a character from a file stream. fgets(n, fileid): returns a string (max n characters) read from a file stream and @ when end of file has been reached. fscanf(fileid, format, &out1, &out2...): formatted read from the input stream. gets(): returns a string read from stdin. ungetc(c, fileid): pushes the character back onto the input stream fileid. fprintf(fileid, format, args...): prints a formatted string to a file stream. fputc(char, fileid): prints a character to a file stream. pclose(fileid): close a pipe. popen(command, mode): open a pipe, returning fileid. putw(w, fileid): puts a machine word to a file stream. setbuf(fileid, buf): set the buffer size of a file. sprintf(&s, format, args...): formatted print to a string (warning: s must first be initialised to a string of appropriate length). sscanf(&s, format, &out1, &out2...): formatted read from string s. system(string): execute command in a sub-shell. stat(filename): returns a list of information about the named file: UID, GID, size, times of last access, data modification, file status change. srand(seed): seed the random number generator. rand(): return a random number (range is system dependent). sin(float): returns the sine of its (radians) argument. cos(float): returns the cosine of its (radians) argument. tan(float): returns the tangent of its (radians) argument. asin(float): returns the principle arcsine of its (radians) argument. acos(float): returns the principle arccosine of its (radians) argument. atan(float): returns the principle arctangent of its (radians) argument. atan2(y, x): returns the principle value of the arctangent of y/x (floats). sqrt(float): returns the square root of its argument. pow(x, y): returns the value of x raised to the power y (floats). log(float): returns the natural logarithm of its argument (which must be +ve). log10(float): returns the logarithm to base 10 of its argument. exp(float): returns the exponential (pow(e,x)) of its argument. ... the above always return a float, even if all arguments are ints debug(status): sets the interpreter debugging mode. Add these values to form the parameter: 1: various 2: RunSet (inc todo()) debugging 4: Eden parser debugging (=yydebug) 8: Sasami 16: Donald 32: Scout parser debugging (=st_debug) 64: malloc debugging (emalloc macro) 128: Tcl_Eval debugging 256: execute debugging 512: func / proc / procmacro call debugging 1024: VMWRIT debugging (in 1 also) 2048: Donald parser debugging (=dd_debug) 4096: Print errors on stderr as well as the error window. 8192: regular expression debugging 16384: notation debugging trace(): prints a stack trace of proc/func calls made on stderr. pack(data...): stores data in a newly allocated memory space on the heap. ... there may be more built-in functions and procedures depending upon the Eden variant you are using. -- 9. WRITING A CLOCK -------------------------------------------------------- proc clocking : clock { /* a clocking process */ todo("clock++;"); /* increment clock after current evaluation finishes */ } proc device1 : clock { /* action synchronised by the clock */ ... /* action body */ } proc device2 : clock { ... /* action body */ } -- 10. MORE INFORMATION ------------------------------------------------------ See the full manual available at http://go.warwick.ac.uk/EDEN/ for more detail. EDEN-1.62/lib-tkeden-1.62/keys.txt0100644000177700001640000000433610247427624015304 0ustar empublicemSome menus and buttons have key shortcuts. These are shown with an underlined letter, and can be activated by pressing Alt and that letter. For example: Accept the current input: Alt-a View the Eden Definitions window: Alt-v Alt-e Valid throughout Eden: Bring all Eden windows to the front: Shift-Control-Tab (in any window) Using the mouse in the input window: Select text: drag Select word: double-click Select words: drag after a double-click Select line: triple-click Select lines: drag after a triple-click Adjust ends of selection: Shift + drag button 1 Reposition cursor without affecting selection: Control + click Insert text at mouse cursor: click button 2 Scroll view: drag button 2 Using the keyboard in the input window: Move backwards in input history: Meta-Up or Control-Alt-Up or Alt-p Move forwards in input history: Meta-Down or Control-Alt-Down or Alt-n Cursor left: Left or Control-b Cursor right: Right or Control-f Move cursor by words: as above, with Control or Meta Move cursor to start of line: Home or Control-a Move cursor to end of line: End or Control-e Cursor up: Up or Control-p Cursor down: Down or Control-n Move cursor by paragraphs: as above, with Control Move cursor up one screenful: Prior (Page up) Move cursor down one screenful: Next (Page down) or Control-v Move cursor to start of text: Control-Home or Meta-< Move cursor to end of text: Control-End or Meta-> Select text: as above, with Shift Select all text: Control-/ Select no text: Control-\\ Copy selection to clipboard: Copy (F16) or Meta-w Cut selection to clipboard: Cut (F20) or Control-w Insert clipboard at cursor: Paste (F18) or Control-y Delete to left of cursor: Backspace or Control-h Delete to right of cursor: Delete or Control-d Delete word to right of cursor: Meta-d Delete word to left of cursor: Meta-Backspace or Meta-Delete Delete to end of line: Control-k Delete to beginning of line: Control-u Delete selection: Control-x Clear all text in input window: Meta-0 or Control-Alt-0 Open new line (insert newline): Control-o Reverse order of two characters to right of cursor: Control-t Indent: tab stops (use the Tab key) are set to two character widths EDEN-1.62/lib-tkeden-1.62/sasami.txt0100644000177700001640000000552510256057717015611 0ustar empublicem------------------------- Sasami QUICK REFERENCE ----------------------------- CONTENTS OF THIS QUICK REFERENCE: 1. Controlling the Sasami window 2. Syntax 3. Commands 4. Variables 5. More information -- 1. CONTROLLING THE SASAMI WINDOW ------------------------------------------ Hold down a mouse button and drag the contents of the Sasami window: Rotate about X & Y axes: - left (or only) mouse button drag Move camera position in XY plane: - middle mouse button (no 2) drag, or - hold Control key and drag with left (only?) mouse button Zoom in and out on Z axis: - right mouse button (no 3) drag, or - hold Command/Apple/Mod1 key and drag with left (only?) mouse button -- 2. SYNTAX ----------------------------------------------------------------- No semi-colons: line feeds are terminators # UNIX shell style one-line comments Whitespace and commas are command / parameter separators Escaping to Eden: ` (back-tick) is a one-line escape to Eden. -- 3. COMMANDS --------------------------------------------------------------- open_display close_display vertex [z] polygon poly_geom_vertex poly_tex_vertex poly_colour [a] poly_material material material_ambient [a] (ambient = in darkness) material_diffuse [a] (diffuse = in normal light) material_specular [a] (specular = in direct light) material_texture object object_poly object_pos object_rot object_scale light light_pos light_enabled light_directional light_attenuation light_ambient [a] light_diffuse [a] light_specular [a] load_full_obj load_obj (loads only objects and materials into Eden) bgcolour viewport -- 4. VARIABLES -------------------------------------------------------------- sasami_viewport_xsize sasami_viewport_ysize sasami_viewport_bpp sasami_bgcolour_r sasami_bgcolour_g sasami_bgcolour_b sasami_show_axes sasami_camera_scale sasami_camera_rotthentrans sasami_camera_frustum_left sasami_camera_frustum_right sasami_camera_frustum_bottom sasami_camera_frustum_top sasami_camera_frustum_near sasami_camera_frustum_far sasami_camera_reset() -- 5. MORE INFORMATION ------------------------------------------------------- See http://go.warwick.ac.uk/EDEN/ for more detail. EDEN-1.62/lib-tkeden-1.62/client.tcl0100644000177700001640000001636010256057720015546 0ustar empublicem# # $Id: client.tcl,v 1.6 2001/08/01 17:59:47 cssbz Exp $ # # Just the client specific bits of tcl. This is sourced when appropriate # from edenio.tcl [Ash] # Client-Server & Socket # display the message of client connection on client window # read script line-by-line sent by the server from socket and # evoke eden evaluation proc read_sock {sock} { global receiveScripts EOF esvrSock global EOS ECS serverReply variantversion set lineScript [gets $sock] set lineScript [string trimright $lineScript] if {[eof $sock]} { close $sock set esvrSock "" # tk_dialog .message "$variantversion: Network Message" \ # "The dtkeden server has been shut down and the connection has been closed." \ # warning 0 OK set choice [tk_dialog .message "$variantversion: Network Message" \ "The dtkeden server has been shut down and the connection has been closed." \ warning 1 "Stop" "Restart"] if {$choice == 0} { quit } else { if {$choice == 1} { restart } else { puts "Internal error - choice unknown - stopping" quit } } } else { if {$lineScript == $ECS} { incr serverReply return } if {$lineScript == $EOF || $lineScript == $EOS} { appendHist $receiveScripts # set receiveScripts "ScoutWinTrigged = 0;\n$receiveScripts\n" set receiveScripts "$receiveScripts\n" evaluate $receiveScripts if {$lineScript == $EOS} { #puts $esvrSock $EOS sendServer $EOS } set receiveScripts "" } else { set receiveScripts "$receiveScripts\n$lineScript" } } } proc sendUsrName {} { global usrName EOU getUsrName variantversion _tkeden_version set getUsrName 1 sendServer1 "$EOU" set variantversion "dtkeden $_tkeden_version (client:$usrName)" wm title . "$variantversion: Input" } proc loginUsrName {} { global esport eshost variantversion usrName toplevel .login wm title .login "$variantversion: Login" label .login.mess -text "You have connected to the dtkeden server \n\ with channel <[expr $esport-9000]>\ on host <$eshost>.\n\ Please login with your agent name" entry .login.usrName -relief sunken -textvariable usrName pack .login.mess .login.usrName -side top -padx 1m -pady 2m button .login.ok -text "OK" -command { if {[string trim $usrName] != ""} { sendUsrName; destroy .login } else { bell } } # button .login.cancel -text "Cancel" -command { notLogin; destroy .login } button .login.clear -text "Clear" -command { set usrName ""; focus .login.usrName } pack .login.ok .login.clear -side left -expand 1 bind .login.usrName { sendUsrName; destroy .login } focus .login.usrName grab .login } proc setupSocket {} { global usrName getUsrName global esvrSock eshost esport variantversion dtkedenloginname puts "$variantversion: connecting to dtkeden server channel <[expr $esport-9000]> on host <$eshost>..." # this is a synchronous connection: # The command does not return until the server responds to the # connection request set errCode [catch {set esvrSock [socket $eshost $esport]} string] # puts $errCode # Setup monitoring on the socket so that when there is data to be # read the proc "read_sock" is called if {$errCode == 0 } { # puts "You are connected to tkServer in 'gem'...\n" fileevent $esvrSock readable [list read_sock $esvrSock] # configure channel modes # ensure the socket is line buffered so we can get a line of text # at a time (Cos thats what the server expects)... # Depending on your needs you may also want this unbuffered so # you don't block in reading a chunk larger than has been fed # into the socket # i.e fconfigure $esvrSock -blocking off fconfigure $esvrSock -buffering line -translation {crlf crlf} # set up our keyboard read event handler: # Vector stdin data to the socket #fileevent stdin readable [list read_stdin $esvrSock] # message indicating connection accepted and we're ready to go # wait for and handle either socket or stdin events... #vwait eventLoop if {$dtkedenloginname != ""} { # login name was set using an EDEN command line argument set usrName $dtkedenloginname #after 3000 sendUsrName } else { # need to ask the user what the login name should be loginUsrName vwait getUsrName } } else { puts "Fail to connect dtkeden server channel <[expr $esport-9000]> on host <$eshost>." puts "Using dtkeden as a stand-alone environment" .radios.send config -state disabled bell } } # read scripts from tkeden input window and send them to server set sendServerDebug 0 proc sendServer { text } { global EOF ECS synchronize serverReply sendServerDebug # don't change synchronize which comes from ../Eden/main.client.c if ($sendServerDebug) { puts "sendServerDebug: sendServer1" } if {$synchronize > 0} { while {$serverReply < 0} { vwait serverReply } } if ($sendServerDebug) { puts "sendServerDebug: sendServer2" } if {$synchronize > 0} { set text "$text\n$ECS" } else { set text "$text\n$EOF" } if ($sendServerDebug) { puts "sendServerDebug: sendServer3" } sendServer1 $text } proc sendServer1 {text} { global esvrSock usrName EOF currentNotation global synchronize serverReply sendServerDebug if ($sendServerDebug) { puts "sendServerDebug: sendServer4" } set isCancel -1 set text "$text$usrName" if {$esvrSock == "" } { set isCancel [connectServer] } if {$isCancel == "0"} return if {$esvrSock != ""} { # set errCode [catch {.menu.accept invoke} string] ; # may need to handle error control??? # puts "text $text" set errCode -1 while {$errCode !=0} { getCurrentNotation # cannot change currentNotation below. It comes from EX/Exinit() set errCode [catch {puts $esvrSock "$currentNotation\n$text"} string] if {$errCode != 0} { set isCancel [connectServer] if {$isCancel == "0"} break } } if {$synchronize > 0} { incr serverReply -1 while {$serverReply < 0} { vwait serverReply } } } } proc connectServer {} { global esvrSock variantversion set selectButton -1 while { $selectButton != 0 } { set selectButton [tk_dialog .message "$variantversion: Connection Failed" \ "Cannot connect to server" warning 0 Cancel Retry ] if {$selectButton == "1"} { set esvrSock "" setupSocket if {$esvrSock != ""} break } } return $selectButton } set EOF "@#$%EOF%$#@" set EOU "@#$%EOU%$#@" set EOS "@#$%EOS%$#@" set ECS "@#$%ECS%$#@" set serverReply 0 set receiveScripts "" set usrName "" set getUsrName 0 #set eshost "gem" #set esport 7000 #puts "eshost $eshost esport $esport" set esvrSock "" setupSocket EDEN-1.62/lib-tkeden-1.62/trans.eden0100644000177700001640000010317010247427624015550 0ustar empublicem/* * $Id: trans.eden,v 1.1 2002/02/27 16:28:29 cssbz Exp $ */ /* trans.e - this file contains the six scripts utils.e, blocks.e, ops.e, agents.e, parsers.e and program.e collected into one script. It is automatically included from the lib-tkeden directory by the tkeden translator code. Chris Brown, 2000. */ /* utils.e - contains utility functions */ varcount = 0; func makevarname { return "var_" // str (varcount++); } func getvar { para instr; tempvr = "ERROR"; execute ("tempvr = " // instr // ";"); return tempvr; } func isdefined { para x; auto i; if (x == @) return 0; if (type (x) == "list") for (i = 1; i <= x#; i++) if (!isdefined (x [i])) return 0; return 1; } func make_str { para data; auto outstr, i; if (type (data) != "list") return str (data); if (data# < 1) return "[]"; if (type (data [1]) == "string") outstr = "[\"" // str (data [1]) // "\""; else outstr = "[" // make_str (data [1]); for (i = 2; i <= data#; i++) if (type (data [i]) == "string") outstr = outstr // ", \"" // str(data [i]) // "\""; else outstr = outstr // ", " // make_str (data [i]); return outstr // "]"; } func stripspace { para instr; auto begin, end; if (instr == "") return ""; begin = 1; while (begin <= instr# && issp (instr[begin])) begin++; end = instr#; while (end >= 0 && issp (instr[end])) end--; return substr (instr, begin, end); } func isspace { para instr; auto i; for (i = 1; i <= instr#; i++) if (!issp (instr [i])) return 0; return 1; } func issp { para c; return (c == ' ' || c == '\t' || c == '\n' || c == '\r'); } func escapequotes { para instr; auto i, outstr; outstr = ""; for (i = 1; i <= instr#; i++) { if (instr [i] == '"') outstr = outstr // str('\\'); outstr = outstr // str(instr [i]); } return outstr; } func issuffix { para instr, suffix; auto i; if (instr# < suffix#) return 0; for (i = 0; i < suffix#; i++) if (instr [instr# - i] != suffix [suffix# - i]) return 0; return 1; } func tail { para inlist; auto ret, i; ret = []; for (i = 2; i <= inlist#; i++) ret = ret // [inlist [i]]; return ret; } func cutquotes { para instr; auto i, outstr; outstr = ""; for (i = 1; i <= instr#; i++) if (instr [i] != '"') outstr = outstr // str(instr [i]); return outstr; } func applytoeach { para f, l; auto i, result; result = []; for (i = 1; i <= l#; i++) result = result // [f (l [i])]; return result; } func getline { auto result, c; result = ""; while ((c = getchar ()) != 10) result = result // char (c); return result; } func _str { return "\"" // $1 // "\""; } func isdigit { para sym; return ('0' <= sym && sym <= '9'); } func ischar { para sym; return (('A' <= sym && sym <= 'Z') || ('a' <= sym && sym <= 'z')); } func isalphanum { para c; return (ischar (c) || isdigit (c) || (c == '_')); } func converttonum { para instr; auto i, radix, sum; i = instr#; radix = 1; sum = 0; while (i >= 1) { if (!isdigit(instr [i]) && (instr [i] != ' ')) return instr; if (isdigit (instr [i])) { sum += ((instr [i] - '0') * radix); radix = radix * 10; } i--; } return sum; } /* blocks.e - contains functions for string searching while ignoring blocks */ /* list of all registered blocks */ scope_blocks = []; /* function to register blocks */ proc addblocks { scope_blocks = scope_blocks // $; } /* some built-in blocks */ bras = [["(", ")"], ["bras"]]; sq_bras = [["[", "]"], ["sq_bras"]]; addblocks ("bras", "sq_bras"); /* find instr: a string str: a string start: an index into instr returns: the index of the first occurrence of str in instr after start */ func find { para instr, str, start; auto i, j, flag; for (i = start; i <= instr# - str# + 1; i++) { flag = 1; for (j = 1; j <= str# && flag == 1; j++) if (str[j] != instr[i + j - 1]) flag = 0; if (flag == 1) return i; } return 0; } /* findfirst instr: a string strings: a list of strings start: an index into instr returns: the element of strings that first occurs (after index start) in instr together with its index */ func findfirst { para instr, strings, start; auto i, j, string, position; string = ""; position = 0; for (i = 1; i <= strings#; i++) { j = find (instr, strings [i], start); if (j == 0) continue; if (j < position || position == 0) { position = j; string = strings [i]; } } return [string, position]; } /* to search while ignoring blocks, a stack is maintained of the symbols that we are looking for thestack = [";", ["var"]], [..], .. [symbol to find, [symbols to ignore]] */ proc emptystack { thestack = []; pointer = 0; } proc push { para item; pointer++; if (pointer > thestack#) thestack = thestack // [item]; else thestack [pointer] = item; } func pop { if (pointer < 1) return []; pointer--; return thestack [pointer + 1]; } /* getblockfromstartsym instr: the starting symbol of a block returns: the block with this starting symbol */ func getblockfromstartsym { para instr; auto i, b; for (i = 1; i <= scope_blocks#; i++) { b = getvar (scope_blocks [i]); if (b [1][1] == instr) return b; } writeln ("unknown block \"" // instr // "\""); return []; } /* getblockfromname name: the name of a block returns: the block, if it is a block, otherwise [] */ func getblockfromname { para name; auto b; b = getvar (name); if (b# != 2 || b[1]# < 2) { writeln ("unknown block \"" // name // "\""); return []; } else return b; } /* getstartsyms blocks: a list of block names returns: a list containing the start symbol for each block */ func getstartsyms { para blocks; auto i, b, out; out = []; for (i = 1; i <= blocks#; i++) { b = getblockfromname (blocks [i]); if (b != []) out = out // [b [1][1]]; } return out; } /* extract - major export instr: a string match: a string ignore: a list of block names start: an index into instr returns: the first occurrence in instr after start of match that is not within any of the blocks in ignore */ func extract { para instr, match, ignore, start; auto pos, first, new_symbol, old_symbol, cur_match, cur_ignore, i; /* cur_match stores the string we are looking for cur_ignore stores the strings that mark the start of the blocks that we want to ignore */ pos = start; cur_match = match; cur_ignore = getstartsyms (ignore); emptystack (); while (1) { /* search for the string we are looking for and also the symbols to ignore */ first = findfirst (instr, [cur_match] // cur_ignore, pos); /* nothing found */ if (first == ["", 0]) return 0; /* position to start from is set to after that which we have just read */ pos = first [2] + first [1]#; /* if we encountered a block we are ignoring */ if (first [1] != cur_match) { /* save what we were looking for */ push ([cur_match, cur_ignore]); /* find the block's end symbol and start looking for it*/ new_symbol = getblockfromstartsym (first [1]); if (new_symbol == []) return 0; /* might have to match more than 2 symbols, e.g proc ; ; not just proc ; */ cur_match = new_symbol [1][2]; cur_ignore = getstartsyms (new_symbol [2]); /* save the additional symbols to be found later */ for (i = new_symbol[1]#; i > 2; i--) push ([new_symbol [1][i], cur_ignore]); } else { /* we found what we were looking for */ /* find out the last thing we were looking for, before we were interrupted */ old_symbol = pop (); if (old_symbol == []) { /* this is what we started off looking for, and it is found*/ return (first [2]); } else { /* there is more to find, continue looking */ cur_match = old_symbol [1]; cur_ignore = old_symbol [2]; } } } } /* ops.e - implements the string operations that an agent can perform */ /* pivot finds a sub-string, ignoring given blocks, and returns the sub-strings on either side of it */ func pivot { para instr, pivot, ignore; auto i; i = extract (instr, pivot, ignore, 1); if (i == 0) return []; else return [substr (instr, 1, i - 1), substr (instr, i + pivot#, instr#)]; } /* rev_pivot is pivot but searches from the end of the string backwards */ func rev_pivot { para instr, pivot, ignore; auto str, i, j; i = extract (instr, pivot, ignore, 1); if (i == 0) return []; while (i != 0) { j = i; i = extract (instr, pivot, ignore, j + pivot#); } return [substr (instr, 1, j - 1), substr (instr, j + pivot#, instr#)]; } /* charmatch c: a character charset: a list of lists, each representing characters to match returns: whether c matches any of the lists in charset */ func charmatch { para c, charset; /* one element lists simply contain a character to match */ if (charset# == 1 && char (c) == char (charset [1])) return 1; /* two element lists contain an interval of characters */ if (charset# == 2 && char (c) >= char (charset [1]) && char (c) <= char (charset [2])) return 1; return 0; } /* chars_finite_begin instr: a string chars: a list of character matches as accepted by charmatch count: a number returns: the first count characters if they match chars else [] */ func chars_finite_begin { para instr, chars, count; auto i, j, match; if (count > instr#) return []; for (i = 1; i <= count; i++) { match = 0; for (j = 1; j <= chars#; j++) if (charmatch (instr [i], chars [j])) match = 1; if (!match) return []; } return [substr (instr, 1, count), substr (instr, count + 1, instr#)]; } /* chars_finite_end instr: a string chars: a list of character matches as accepted by charmatch count: a number returns: the last count characters if they match chars else [] */ func chars_finite_end { para instr, chars, count; auto i, j, match; if (count > instr#) return []; for (i = instr#; i >= instr# - count; i--) { match = 0; for (j = 1; j <= chars#; j++) if (charmatch (instr [i], chars [j])) match = 1; if (!match) return []; } return [substr (instr, 1, instr# - count), substr (instr, instr# - count + 1, instr#)]; } /* chars_begin instr: a string chars: a list of character matches as accepted by charmatch returns: the biggest prefix of instr s.t. all its character match chars */ func chars_begin { para instr, chars; auto i, j; i = 1; while (i <= instr#) { match = 0; for (j = 1; j <= chars#; j++) if (charmatch (instr [i], chars [j])) match = 1; if (!match) break; i++; } return [substr (instr, 1, i - 1), substr (instr, i, instr#)]; } /* chars_end instr: a string chars: a list of character matches as accepted by charmatch returns: the biggest suffix of instr s.t. all its character match chars */ func chars_end { para instr, chars; auto i, j, match; i = instr#; while (i >= 1) { match = 0; for (j = 1; j <= chars#; j++) if (charmatch (instr [i], chars [j])) match = 1; if (!match) break; i--; } return [substr (instr, 1, i), substr (instr, i + 1, instr#)]; } /* read_prefix matches a prefix to a sort of regular expresion it returns the prefix found and the remainder */ func read_prefix { para instr, chars, count; if (chars == []) { if (count == "*") return [instr, ""]; else if (count <= instr#) return [substr (instr, 1, count), substr (instr, count + 1, instr#)]; else return []; } else { if (count == "*") return chars_begin (instr, chars); else return chars_finite_begin (instr, chars, count); } } /* read_suffix matches a suffix to a sort of regular expresion it returns the suffix found and the remainder */ func read_suffix { para instr, chars, count; if (chars == []) { if (count == "*") return ["", instr]; else if (count <= instr#) return [substr (instr, 1, instr# - count), substr (instr, instr# - count + 1, instr#)]; else return []; } else { if (count == "*") return chars_end (instr, chars); else return chars_finite_end (instr, chars, count); } } /* read_all attempts to match a string to a sort of regular expresion it returns either the string, or [] if it did not match */ func read_all { para instr, chars; auto result; if (chars == []) return [instr]; result = chars_finite_begin (instr, chars, instr#); if (result == []) return []; else return [result [1]]; } /* prefix checks a string for a literal prefix */ func prefix { para instr, prefix; auto i; if (prefix# > instr#) return []; for (i = 1; i <= prefix#; i++) if (prefix [i] != instr [i]) return []; return [substr (instr, prefix# + 1, instr#)]; } /* prefix checks a string for a literal prefix */ func suffix { para instr, suffix; auto i; if (suffix# > instr#) return []; for (i = 0; i < suffix#; i++) if (suffix [suffix# - i] != instr [instr# - i]) return []; return [substr (instr, 1, instr# - suffix#)]; } /* split divides a string into chunks using a separator, ignoring all occurrences of the separator within the given blocks */ func split { para instr, split, ignore; auto i, j, list; i = 1; list = []; while (1) { j = extract (instr, split, ignore, i); if (j == 0) return list // [substr (instr, i, instr#)]; list = list // [substr (instr, i, j - 1)]; i = j + split#; } } /* agents.e - contains functions to perform the actions of an agent */ /* format instr: a string containing format specifiers "%%" and "$$", e.g. "a + %%" plist: a list containing the names of variables returns: a list. first element contains the string with instances of "%%" replaced by EDEN variable names and instances of "$$" replaced by "%%". second element contains the variable names corresponding to instances of "$$" */ func format { para instr, plist; auto pcount, outstr, i, varname, varval, literals; outstr = ""; literals = []; pcount = 1; for(i = 1; i <= instr#; i++) { /* check for "%%" */ if (instr [i] == '%' && instr [i+1] == '%') { if (pcount <= plist#) { /* get the EDEN variable name */ varname = getvar (plist [pcount]); if (varname != @) outstr = outstr // str (varname); else /* undefined */ outstr = outstr // "ERROR"; pcount++; } else /* not enough variables specified */ outstr = outstr // "ERROR"; i++; /* check for "$$" */ } else if (instr [i] == '$' && instr [i+1] == '$') { if (pcount <= plist#) { /* get the EDEN variable name */ varname = getvar (plist [pcount]); /* writeln (varname); writeln (plist [pcount]); */ if (varname != @) /* add to return list */ literals = literals // [str (varname)]; else literals = literals // ["ERROR"]; /* replace with "%%" */ outstr = outstr // "%%"; pcount++; } else outstr = outstr // "ERROR"; i++; /* check for "##" */ } else if (instr [i] == '#' && instr [i+1] == '#') { if (pcount <= plist#) { /* get the EDEN variable name */ varname = getvar (plist [pcount]); if (varname != @) outstr = outstr // "\"" // escapequotes (str (varname)) // "\""; else /* undefined */ outstr = outstr // "ERROR"; pcount++; } else /* not enough variables specified */ outstr = outstr // "ERROR"; i++; } else /* not a "%%" or a "$$" or a "##" */ outstr = outstr // str (instr[i]); } return [outstr, literals]; } /* operation - performs a string operation instr: a string op_name: an operation op_value: its parameter(s) ignore: the blocks to ignore returns: the resulting sub-strings and an optional extra value returned only by read_begin/end operations */ func operation { para instr, op_name, op_value, ignore; auto result, match; match = ""; switch (op_name) { case "prefix": result = prefix (instr, op_value); break; case "suffix": result = suffix (instr, op_value); break; case "pivot": result = pivot (instr, op_value, ignore); break; case "rev_pivot": result = rev_pivot (instr, op_value, ignore); break; case "split": result = split (instr, op_value, ignore); break; case "read_prefix": if (type (op_value) != "list" || op_value# < 2) return ["badop"]; result = read_prefix (instr, op_value [1], op_value [2]); /* store the actual reg exp matched for possible use and remove it from */ /* result without removing the unmatched remainder of the string */ if (result != []) { match = result [1]; result = [result [2]]; } break; case "read_suffix": if (type (op_value) != "list" || op_value# < 2) return ["badop"]; result = read_suffix (instr, op_value [1], op_value [2]); /* store the actual reg exp matched for possible use and remove it from */ /* result without removing the unmatched remainder of the string */ if (result != []) { match = result [2]; result = [result [1]]; } break; case "read_all": result = read_all (instr, op_value); break; case "literal": if (instr != op_value) result = []; else result = [instr]; break; default: return ["badop"]; } return [result, match]; } /* automatically defined script variables */ v_substrs = []; v_string = ""; v_paras = ""; v_match = ""; /* run_agent - perform an agent's actions instr: input string templ_name: agent template varnames: input variables returns: list of lists. for each child: [output string, child template, output variables] */ func run_agent { para instr, templ_name, varnames; auto agent, paracount, result, i, ret, op_name, op_value, success_templ, fail_templ, ignore, pass_paras, extra; /* load data for agent into local variables */ agent = getvar (templ_name); if (!isdefined (agent)) return ["undefined"]; /* check it is a valid agent template */ if (type (agent) != "list" || agent# < 2) return ["badagent"]; /* get the operation name and value, i.e. pivot and "=" */ paracount = 1; op_name = agent [paracount++]; op_value = agent [paracount++]; /* get the agents to create on success */ if (op_name != "literal" && op_name != "read_all") { success_templ = agent [paracount++]; if (type (success_templ) == "string") success_templ = [success_templ]; } else /* literal and read-all operations do not have children */ success_templ = []; ignore = []; script = []; fail_templ = ""; /* get tagged values */ while (paracount <= agent#) { /* check this is a valid tag */ if (type (agent [paracount]) != "list" || agent# < 2) return ["badagent"]; switch (agent [paracount][1]) { case "ignore": /* blocks to ignore */ ignore = agent [paracount][2]; break; case "fail": /* child to create on failure */ fail_templ = agent [paracount][2]; break; case "script": /* script to run */ script = []; for (i = 2; i <= agent [paracount]#; i++) script = script // [agent [paracount][i]]; break; default: } paracount++; } /* strip whitespace from beginning and end of string */ instr = stripspace (instr); /* agent data should now be loaded */ /* perform agent's operation */ result = operation (instr, op_name, op_value, ignore); /* badly formed operation */ if (result == "badop") return ["badagent"]; /* some operations supply additional information for use by script */ v_match = result [2]; result = result [1]; /* did not match */ if (result == []) { if (fail_templ == "") /* if no fail template then parsing has failed */ return ["fail"]; else /* else pass string, and all variables to next agent */ return [[instr, fail_templ, varnames]]; } /* did match */ /* make a child based on success_templ for each of the results from a split operation */ if (op_name == "split") for (i = 1; i < result#; i++) success_templ = success_templ // [success_templ [1]]; /* execute script */ /* set some variables for use by script instructions */ v_string = instr; v_substrs = result; v_paras = varnames; pass_paras = execscript (script, success_templ#); /* make sure there are parameters for every child */ while (success_templ# > pass_paras#) pass_paras = pass_paras // [[]]; /* prepare return value with output strings, child agents and their parameters */ ret = []; for (i = 1; i <= success_templ#; i++) ret = ret // [[result [i], success_templ [i], pass_paras [i]]]; return ret; } /* execscript - runs an agent's script n_scriptlist: the script instructions n_subcount: the number of children returns: the parameters for the children the variables all start with t_ or n_ to reduce the chance that a script variable will share the same name and mess the function up */ laterlist = []; func execscript { para n_scriptlist, n_subcount; auto t_i, t_j, t_s, t_format, t_ret, t_paras, t_later, t_script, t_vname1, t_vname2, t_mkstr; t_later = []; t_ret = []; for (t_s = 1; t_s <= n_scriptlist#; t_s++) { /* each script instruction */ t_script = n_scriptlist [t_s]; switch (t_script [1]) { case "declare": /* for each script variable, a local EDEN string variable is created to hold the name of a persistent, uniquely named EDEN variable */ for (t_i = 2; t_i <= t_script#; t_i++) execute (t_script [t_i] // " = \"" // makevarname () // "\";"); break; case "setparas": for (t_i = 2; t_i <= t_script#; t_i++) { /* ensure the parameters list contains an element for each child */ while (t_ret# < t_i - 1) t_ret = t_ret // [[]]; /* add the EDEN variable names of the script variables indicated to the list of each childs parameters */ for (t_j = 1; t_j <= t_script [t_i]#; t_j++) t_ret [t_i - 1] = t_ret [t_i - 1] // [getvar (t_script [t_i][t_j])]; } break; case "allparas": if (n_subcount < 1) break; /* t_vname1 holds the name of the list of all variables */ t_vname1 = makevarname (); /* t_vname2 holds the name of the first parameter variable */ t_vname2 = makevarname (); /* create a script variable with the given name to the list of all variables */ execute (t_script [2] // " = \"" // t_vname1 // "\";"); /* start to build up the list of variables */ t_mkstr = t_vname1 // " is [" // t_vname2; /* if there is no list of child parameters yet, initialise one */ if (t_ret# < 1) t_ret = [[t_vname2]]; /* for each child */ for (t_i = 2; t_i <= n_subcount; t_i++) { /* make a new EDEN variable and add it to the list of variables*/ t_vname2 = makevarname (); t_mkstr = t_mkstr // ", " // t_vname2; /* ensure the parameters list contains an element for each child */ while (t_ret# < t_i) t_ret = t_ret // [[]]; /* add the new variable to the childs parameter list */ t_ret [t_i] = t_ret [t_i] // [t_vname2]; } /* create the list of variables */ t_mkstr = t_mkstr // "];"; execute (t_mkstr); break; case "execute": /* extract the variable names */ t_paras = []; for (t_i = 3; t_i <= t_script#; t_i++) t_paras = t_paras // [t_script [t_i]]; /* format once to substitute for "%%"s */ t_format = format (t_script [2], t_paras); /* format again to substitute for "$$"s */ t_format = format (t_format [1], t_format [2]); /* execute command */ execute (t_format [1]); break; case "later": /* extract the variable names */ t_paras = []; for (t_i = 3; t_i <= t_script#; t_i++) t_paras = t_paras // [t_script [t_i]]; /* format once to substitute for "%%"s but do not substitute for "$$"s until later, when the variables will have been defined*/ t_format = format (t_script [2], t_paras); /* save command to be executed later */ t_later = t_later // [t_format]; break; default: } } /* add commands for later to the global list of things to do later */ if (t_later != []) laterlist = [t_later] // laterlist; return t_ret; } /* parsers.e - functions that automate the process of creating agents to act on strings in order to parse them */ /* removes the first element of a list */ func removehead { para listptr; auto temp, i, item; if (*listptr == []) return []; temp = []; item = (*listptr) [1]; for (i = 2; i <= (*listptr)#; i++) temp = temp // [(*listptr) [i]]; *listptr = temp; return item; } /* does the parser say what it is doing? 0 - quiet 1 - noisy but fast 2 - noisy and wait for keypresses at each step */ verbose_parser = 0; /* the main parser - depth first agent execution */ proc quiet_dfparse { para instr, start_agent, varnames; auto item, children, list, i, j, fstr, correct; /* initialise the commands that the agents may ask us to run later*/ laterlist = []; /* initialise the list of agents to be run to the first */ list = [[instr, start_agent, varnames]]; /* get the next agent */ while ((item = removehead (&list)) != []) { /* run it */ children = run_agent (item [1], item [2], item [3]); /* make sure it ran ok */ if (children == ["badagent"]) { writeln ("bad agent, \"" // item [2] // "\""); return; } else if (children == ["undefined"]) { writeln ("agent is undefined, \"" // item [2] // "\""); return; /* correct any syntax errors */ } else if (children == ["fail"]) { writeln ("failed to match string \"" // item [1] // "\" with agent \"" // item [2] // "\""); writeln ("enter correct string or q to cancel:"); correct = getline (); writeln (); if (correct == "q") return; list = [[correct, item [2], item [3]]] // list; } else { /* add its children to the list of agents to be run */ list = children // list; } } /* execute the later list */ /*writeln ("laterlist");*/ /* for each agent */ for (i = 1; i <= laterlist#; i++) /* for each command */ for (j = 1; j <= laterlist[i]#; j++) { /* substitute in any variables that have only just been defined */ fstr = format (laterlist [i][j][1], laterlist [i][j][2]); execute (fstr [1]); } /* reset the later list */ laterlist = []; } /* a parser that prints out lots of information about its agents is identical to dfparse except it has writelns and a getchar */ proc verbose_dfparse { para instr, start_agent, varnames; auto item, children, list, i, j, fstr, correct; laterlist = []; list = [[instr, start_agent, varnames]]; while ((item = removehead (&list)) != []) { writeln (); writeln ("waiting to act:"); writeln (list); writeln ("acting this step:"); writeln ("string: " // item[1]); writeln ("variable names: " // str (item[3])); writeln ("agent: " // item[2]); writeln (); children = run_agent (item [1], item [2], item [3]); if (children == ["badagent"]) { writeln ("bad agent, \"" // item [2] // "\""); return; } else if (children == ["fail"]) { writeln ("failed to match string \"" // item [1] // "\" with agent \"" // item [2] // "\""); writeln ("enter correct string or q to cancel:"); correct = getline (); writeln (); if (correct == "q") return; list = [[correct, item [2], item [3]]] // list; } else if (children == ["undefined"]) { writeln ("agent is undefined, \"" // item [2] // "\""); return; } else { writeln ("success, resulting agent(s):"); for (i = 1; i <= children#; i++) writeln (children [i]); list = children // list; } writeln (); /* wait for the user before next agent? */ if (verbose_parser == 2) { a = getchar (); /* has the user had enough? */ if (a == 'q') return; } } for (i = 1; i <= laterlist#; i++) for (j = 1; j <= laterlist[i]#; j++) { fstr = format (laterlist [i][j][1], laterlist [i][j][2]); execute (fstr [1]); } laterlist = []; } dfparse is verbose_parser ? verbose_dfparse : quiet_dfparse; /* a parser with breadth first agent execution - identical to dfparse except that the child agents are added to the end of the "to run" list, not the beginning */ proc bfparse { para instr, start_agent, varnames; auto item, children, list, i, j, fstr, correct; laterlist = []; list = [[instr, start_agent, varnames]]; while ((item = removehead (&list)) != []) { children = run_agent (item [1], item [2], item [3]); if (children == ["badagent"]) { writeln ("bad agent, \"" // item [2] // "\""); return; } else if (children == ["fail"]) { writeln ("failed to match string \"" // item [1] // "\" with agent \"" // item [2] // "\""); writeln ("enter correct string or q to cancel:"); correct = getline (); writeln (); if (correct == "q") return; list = [[correct, item [2], item [3]]] // list; } else if (children == ["undefined"]) { writeln ("agent is undefined, \"" // item [2] // "\""); return; } else { list = list // children; } } for (i = 1; i <= laterlist#; i++) for (j = 1; j <= laterlist[i]#; j++) { fstr = format (laterlist [i][j][1], laterlist [i][j][2]); execute (fstr [1]); } laterlist = []; } splitdata = []; parser_buffer = ""; firstagent = ""; func setup_parser { para datavar; auto data; data = getvar (datavar); if (type (data) != "list" || data# < 2) return 0; if (data# > 2) splitdata = [[data [1], getstartsyms (data [3])]]; else splitdata = [[data [1], []]]; firstagent = data [2]; parser_buffer = ""; } proc parsechar { para inchar; auto i, cur_match, cur_ignore, new_symbol; parser_buffer = parser_buffer // str (inchar); cur_match = splitdata [1][1]; cur_ignore = splitdata [1][2]; for (i = 1; i <= cur_ignore#; i++) if (issuffix (parser_buffer, cur_ignore [i])) { new_symbol = getblockfromstartsym (cur_ignore [i]); if (new_symbol == []) return 0; /* might have to match more than 2 symbols, e.g proc ; ; not just proc ; */ cur_match = new_symbol [1][2]; cur_ignore = getstartsyms (new_symbol [2]); new_data = [[cur_match, cur_ignore]]; for (i = new_symbol[1]#; i > 2; i--) new_data = new_data // [[new_symbol [1][i], cur_ignore]]; splitdata = new_data // splitdata; return; } if (issuffix (parser_buffer, cur_match)) { if (splitdata# == 1) { flush_parser (); } else { splitdata = tail (splitdata); } } } proc flush_parser { if (!isspace (parser_buffer)) dfparse (parser_buffer, firstagent, []); parser_buffer = ""; } /* program.e - contains useful agent templates */ nothing = ["literal", ""]; anything = ["read_all", []]; alphanum = ["read_all", [["a", "z"], ["A", "Z"], ["_"], ["0", "9"]]]; number = ["read_all", [["0", "9"]]]; float_num = ["pivot", ".", ["number", "number"], ["fail", "number"]]; ident = ["read_prefix", [[["a", "z"], ["A", "Z"], ["_"]], 1], "alphanum"]; func ident_fail { para fail; return ident_ex ([["fail", fail]]); } func ident_ex { para extra; return ["read_prefix", [[["a", "z"], ["A", "Z"], ["_"]], 1], "alphanum"] // extra; } func number_fail { para fail; return ["read_all", [["0", "9"]], ["fail", fail]]; } EDEN-1.62/lib-tkeden-1.62/change.log0100644000177700001640000035404310256064150015512 0ustar empublicem-*-text-*- **** EDEN CHANGELOG FILE **** The most recent changes are listed first. Within each version section, most recent changes go at the end. ** 1.62 [Ashley] Tue Jun 21 20:15:43 GMTST 2005 ** dtkeden on Mac OS X (unfortunately requiring use of command line to run it at present). Bug fix: fixed a segmentation fault that could occur in some cases when a func/proc/procmacro was not found. [ant/ashley] Implemented single-line # comments in %lsd. Now (hopefully), the double-hash ## single-line comment facility works in all notations. Added a -w command line argument for dtkeden login name. (w for "who" as the number of single-letter possibilities is short!). Changed EDEN web site location to use the go.warwick redirect. Added a Restart command, available as a menu and also when a dtkeden client shows the "dtkeden server has shut down" message. Bug fix: previously dtkeden didn't work correctly on Windows without cygwin installed due to use of the UNIX 'date' command. Fixed. ** 1.61 [Ashley] Mon Jun 13 14:50:11 BST 2005 ** Fixed small build configuration error. Added builtin 'realrand()'. [ant] Modified eden function 'rnd(int)' to use more random 'realrand()'. [ant] ** 1.60 [Ashley] Wed Jun 8 18:18:42 BST 2005 ** Minor code configuration changes. The full EDEN distribution (tkeden, ttyeden, dtkeden) seems to build OK for Windows. ** 1.59 [Ashley] Wed Jun 8 13:19:39 BST 2005 ** Bug fix: showpara() procedure was not working -- fixed. arca.eden can now be included without a working IPTrans setup. Bug fix: opening two windows using the procedure involving OpenDisplay documented in the EDEN FAQ caused display "corruption" (incorrect aspect ratio etc) in some cases. This is now fixed. Bug fix: EDDI was writing to the Eden global variables p1 and p2, which conflicted with (eg) some people's DoNaLD models -- fixed. ** 1.58 [Ashley] Thu Jun 2 20:06:22 BST 2005 ** Minor code configuration changes to enable experimental Windows build. ** 1.57 [Ashley] Thu Jun 2 11:51:24 BST 2005 ** Automated creation of Mac distribution ("make macdist"). Separated make's Windows targets into "make winapp" and "make windist". Implemented several key shortcuts on Mac OS X. Changed some menu structures for consistency with Mac OS X. Found and fixed possible memory reallocation bug in Eden regular expression facility. Greatly increased Sasami performance by changing data structures used for vertices and polygons. Sasami now prints rendering performance timing information out if "debug(8);" is executed in Eden. ** 1.56 [Ashley] Wed May 25 13:47:36 BST 2005 ** Experimental hack change to Sasami vertex data structure which seems to vastly improve the speed of Sasami rendering. ** 1.55 [Ashley] Tue May 24 12:06:47 BST 2005 ** Sasami now works on the Mac. As part of this, the Togl code (used in Sasami) was updated, which might lead to other minor changes. Source code is now hosted in Subversion. The -v argument and the About tkeden menu show the repository revision number from which the binary was built. Sasami window can now be controlled by dragging with mouse and using keyboard modifier keys (to make control with a single mouse button possible -- multi-button mice operate in the original way on Mac). Added documentation to Sasami Quick Reference. ** 1.54 [Ashley] Thursday January 20 17:35:21 GMT 2005 ** Added new Eden 'inpdevlineno()' built-in function, which returns the current line number in the Eden (or other?) code. Also 'inpdevname()', which returns the name of the current input device. See mentions in eden.txt for usage. Added information about who made each release to this file -- mostly [Ashley] at this point... Updated credits.txt a little. Removed line about reporting bugs at SourceForge at the top of this file. ** 1.53 [Ashley] Tue Mar 9 12:57:13 GMT 2004 ** Added rawserialopen, rawserialread and rawserialclose functions for use with the train system. ** 1.52 [Ashley] Monday March 1 09:28:28 GMT 2004 ** Added Son V Truong, Meurig Beynon to credits.txt. Also added approximate years of contribution to credits.txt and ordered chronologically. Added another curses possibility to configure script required on Mac OS X with Fink. ttyeden would previously not compile if the readline library was not available -- fixed. Added timing instrumentation of scheduling and graph cycle checking. The Eden functions insReset() and insPrint(); are available when compiled with -DINSTRUMENT Remembered and added credit to Carlos Fischer in this file for a bug in 1.13. Added thanks to unnamed contributers in credits.txt. Added symbol types to description of symbols(), type() and symboldetail() functions in eden.txt. Fixed a bug in symboldefinition() function which previously caused a "nested too deeply" evaluation loop if the definition s is symboldefinition("s") (and other larger examples which include this dependency) was created. Improved error message "list or string required ... when trying to find 1th item" to "... item with index 1". Fixed bug in str() function which caused a segmentation fault when given a long list -- for example 'writeln(str(symboltable()));'. ** 1.51 [Ashley] Wednesday January 14 19:42:04 GMT 2004 ** Scout windows background colour now explicitly set to what it used to be in older versions of tkeden. (This will probably appear a bit dark on the Mac). Added WMB's fix for the EDDI garbage collector. Before, eden variables that were dependent upon values in an eddi table would have been automatically removed during garbage collection. Now, a definition is only removed if the definition name starts with "var_". Got compiling on Windows again (the last time was 1.46). Using an up to date cygwin, with Tcl/Tk 8.4 rather than 8.0. This might possibly bring some associated interface improvements. Sasami is unfortunately broken at the moment (an assertion in togl.c fails when the Sasami window is opened), so this won't be a public release. ** 1.50 [Ashley] Mon Mar 31 20:04:30 BST 2003 ** Fixes for Mac OS X 10.2.4 with Tcl/Tk 8.4.2. This latest version of Tcl seems to have fixed the following bugs that were present in 1.43. Many other issues remain on this platform however. - Window close / minimise / max buttons now show indicators on mouse over - Paste from elsewhere in OS now works (Apple-c, Apple-v etc to copy and paste, although it seems you can't currently select text from any tkeden window except the input window). - tkeden -> Hide tkeden now works (although Apple-h key shortcut doesn't seem to) - Apple-q no longer gives a bus error (although it doesn't work) - Open dialogue doesn't seem to give "tkwin == NULL, 224" errors Middle and right mouse buttons now emulated on Mac OS X. Hold down the Option (Alt) key when pressing the mouse button for a middle mouse button click, or Command (Apple) for a right click. This only works for Scout windows (and probably not TEXTBOXES). Fixed background colour for Scout windows to a light grey colour rather than read the system default (which on Mac OS X is white). ** 1.49 [Ashley] Tuesday March 18 16:27:44 GMT 2003 ** Added Eden sasami_camera_scale list variable. Added ability to move the camera position in X and Y by using the middle mouse button (this will probably need rethinking for Windows). Added Eden sasami_reset_camera() proc which can be used if you get lost. Added Eden sasami_camera_rotthentrans variable, initially set to 0, when the Sasami code first translates then rotates the camera, making it easy to view an object centred on the origin. If this flag is set to 1, the rotation is done first, making it easier to simulate an observer in the world, standing at a position and looking in a particular direction. Added Eden sasami_camera_frustum_left, right, bottom, top, near and far variables in order to allow the field of view of the camera to be adjusted. In order to preserve the aspect ratio, top and bottom are initially set to the viewport x size / y size (but integer division for some reason). This is currently a hack: these variables should be linked using dependency to sasami_view_xsize and ysize, but sasami_view_xsize/ysize do not currently update when the Sasami window is resized using the mouse. Eden sasami_reset_camera() proc renamed to sasami_camera_reset() to follow the existing scheme. ** 1.48 [Ashley] Tuesday February 18 17:44:33 GMT 2003 ** Added usbhidopen, usbhidread, usbclose Eden functions (documented in eden.txt) on Linux. The following code implements control of a Sasami axis by a USB steering wheel: %eden wheelfd = usbhidopen("/dev/input/event0"); proc readwheel { auto l; l = usbhidread(wheelfd); if (l != []) wheel = l; todo("readwheel();"); } readwheel(); %sasami open_display %eden sasami_camera_rot is [0, 0, wheel[4]]; The following commands may be required to configure the Linux USB system appropriately: modprobe hid ; modprobe uhci ; modprobe evdev mount -t usbdevfs usbdevfs /proc/bus/usb (to test): cat /dev/input/event0 | od -h If event0 is not there: mknod /dev/input/event0 c 13 64 chown csXYZ /dev/input/event0 ** 1.47 [Ashley] Sunday February 16 17:26:44 GMT 2003 ** The Scout "bordercolour" attribute, although documented, was previously unimplemented as Tk doesn't provide a way to control the border colour. However Tk does provide a way to control the highlight colour, so now this is used instead of the border when a coloured (non-"black") border is requested. Fixed numerous bugs in Scout ImageScale function. Added ImageSized Eden function, which will scale an image to the requested pixel size (preserving the aspect ratio). This function is only currently accessible from Donald (Scout would require further work). Eg: %donald image img char filename int iconSize iconSize = 250 img = I!ImageSized("gif", filename, iconSize) o label lbl lbl = label(img, {500, 250}) Added sasami.eden. Camera position and axes rotation are now defined as Eden variables (sasami_camera_pos and sasami_camera_rot respectively). Each is an Eden list specifying x, y and z. This new facility should allow the Sasami display to be controlled by Eden code. Modified the Tcl mouse button handling code to use this new scheme. FALSE and TRUE now a part of eden.eden, not donald.eden. ** 1.46 [Ashley] Friday October 25 11:34:45 BST 2002 ** File -> Execute caused "notationGet called when currentNotation is not set sensibly" errors when the executed file contained a notation change. (An error introduced around 1.43). Fixed. Notation changes in files introduced by File -> Execute didn't persist, although the interface showed them persisting. This bug has existed since at least 1.30. Fixed. ** 1.45 [Ashley] Thursday October 24 21:33:17 BST 2002 ** DCS Linux now needs -I to compile, as readline libraries #include . Created dcs-linux-i686.configure, dcs-solaris-i386.configure, dcs-solaris-sparc.configure. Notations with names of length multiple 8 characters (including the % and terminating character, eg %sqlzero) previously failed to work. Now fixed. The reason is something I don't quite understand, to do with getheap(). Tcl procedure removeNotationRadioButton now given an Eden procedure, which works also in ttyeden (where it silently does nothing). Now, if you want to hide a notation radio button to hide the notation's existence (note that the notation itself is not actually removed), use the Eden removeNotationRadioButton procedure, passing the name of the notation, including the % character. For example: %eden removeNotationRadioButton("%eden"); 'notation' command reinstated as a quick workaround to get existing models which use AOP to work. This function will be removed in the future once we've fixed the existing models to use the new installAOP procedure. symboltable() and symboldetail() now include the symbol's "master" information, which describes the last agent to change the symbol, as the last item in the list (inner list for symboltable()) returned. This may possibly break existing models which use these functions. Making attempts to debug sqleddi (mainly within the model). Added more output to debug(2), showing when todo() is actually called. The new notations framework now understands the ## comment syntax, so all parsers (including AOP) should now automatically ignore ## single line comments. Fixed bugs in ttyeden's handling of todo(), hopefully now allowing sqleddiBeynon2002 to function correctly in ttyeden. The "currently active notation at the end of an included file doesn't persist" bug (an attempt was made to fix this in version 1.31 below) still persists, but the prompt faithfully reflects the currently active notation. ** 1.44 [Ashley] Fri Aug 30 18:51:19 2002 ** Compiled dtkeden on Windows, fixing minor problems along the way. A major problem remains: the server is killed with signal 11 when a client logs in. When run under a debugger, this problem does not occur. ** 1.43 [Ashley] Monday August 19 20:56:44 BST 2002 ** Implemented ipopen on Mac OS X also (pseudo-terminals on BSD require a different approach to SVR4). Added regmatch() and regreplace() regular expression functions to Eden, using the PCRE (Perl Compatibile Regular Expressions) library. regmatch needs some rethinking to return more than one match. Added documentation to eden.txt. Examples: writeln(regreplace("a", "z", "123a4567a89a0")); writeln(regreplace("(.)\\[(.)\\]", "ashfunc($1,$2)", "l[1] is l[2];")); writeln(regmatch("(?U)(.*)a(.*)$", "hallo chrisababe")); Added PCRE and Chris Roe to credits.txt. Added more detail about authors of libraries. Periods at ends of sentences in eden.txt. Added debug(8192) for debugging the regular expression code (including the string memory allocation code). Generic framework for new notations implemented. Call newNotation(name, switchProcPtr, transProcPtr) to install a new notation, which is implemented in raw Eden. Agent-oriented parsers will be worked into this framework soon. Added %edensl notation: Eden Symbol Lists, where each element in a list resides in its own symbol, and can therefore trigger other items and have its own independent definition. The notation is the same as normal Eden. Call installedensl(); to install it, then use %edensl to switch to it. It is incomplete: at present, list concatenation is not implemented and there is no way to reference the entire contents of a list. Implemented dirname and basename functions when missing (on Mac OS X) in Eden using the new regular expression functions. This will fix an error that occurs when doing File -> Open on Mac OS X. Generic code for Interactive Process -based translators (ones that run in an external concurrent process, eg current arca and denota) implemented. Call installIPTrans(name, path) to install a new IP-based notation. Got edensl working in tkeden (newNotation now adds a radio button etc). Made it possible for new notations to override the built-in ones (eg %donald, %scout). Test with: proc p {} newNotation("%scout", &p, &p); Fitted Chris Brown's agent-oriented parser (AOP) into the new framework. The 'notation' builtin command has been removed, and is replaced by the new installAOP(); Eden command, which has the same arguments as the old notation command, except that the first argument (the notation name) must now start with the '%' character. Example modification required: change notation("eddi", "eddi_notation"); to installAOP("%eddi", "eddi_notation");. No further modification should be necessary. Added %donald0 as an alias for %donald, making it possible to define a new notation overwriting the built-in %donald but still be able to use it. Added eden_debug_notations Eden variable, and documented in eden.txt. Added a notationStack. This is used when a non-builtin notation is active and execute() or include() are called. These commands cause arbitrary text to be interpreted by Eden, and the currently active notation is expected to be restored afterwards. The notationStack handles this. Note that parsers cannot reenter themselves (ie, during a call to their "parseChar" function, invoke a call to execute() or include() which includes a notation switch to their own notation). Parsers can use other non-builtin parsers, but only if buffers are not shared between notations. Note that the IP translators do not share buffers, but AOP translators do currently, and so AOP-implemented notations cannot be used within the implementation of another AOP notation. ipopen() now returns a sensible error message if the command passed cannot be executed or doesn't exist. installarca() now starts Arca as an IP translator (the version in arcaWard2002). So Arca is now "integrated" into tkeden... but it runs slowly due to the one-second delay translator sychronisation problem. %edensl now makes a "whole" definition for each symbol list, which is defined to be the composite of the components, which were previously only accessible individually. A triggered procedure is automatically introduced for each list which updates the "whole" list definition if the list length changes. Concatenation is now handled in the standard Eden domain, using the "whole" value. %edensl has problems remaining when translating procs and with quoted parameters. Merged in Meurig's changes to arca.eden (a few variables were not declared as auto). Integrated Arca and Denota translators with a new empublic installation for these. In the DCS installation, these translators can be installed into ttyeden or tkeden by using installarca(); or installdenota(); Documented the above new commands roughly in eden.txt. ** 1.42 [Ashley] Wed Jul 10 20:34:37 BST 2002 ** Minor coding style improvements in eden.eden. arca.lib moved to arca.eden. Added installarca() function to eden.eden. Models using Arca should call installarca() once, before any Arca code is interpreted (rather like installeddi() and eddi code). The Arca translator will hopefully eventually be integrated into tkeden in a similar fashion to eddi, but for now we only have an external translator (arcaBird1991), which must be used to preprocess files with arca code before tkeden can load it. Improved Donald openshape example in donald.txt. Figured out what arc parameters [p1, p2, a] are and documented in donald.txt. Added information about trace() to eden.txt. Added info about errors from fopen to eden.txt. Added Eden ipopen(), ipclose(), fdready(), rawread() and rawwrite() functions in order to implement external translators in Eden. Documented in eden.txt. Removed traces of (commented out) kbhit() implementation, as fdready() does this job and actually works. Removed "ghost white" from rgb.txt. Checked into CVS. ** 1.41 [Ashley] Friday May 24 16:55:49 BST 2002 ** Fixed Scout image scaling for attributeexplorernnRoe2000: scaling by an integer size is now handled by Tk, which should work on all platforms. Non-integer scaling is handled by the external pnmscale utility, which might not exist on all platforms. Added note to Donald Quick Reference about arc's strange syntax (which doesn't match circle, rectangle etc. Added section numbering and contents information to quick reference guides. Eden modulus operator (%) now works on real numbers as well as integers. Added note to Eden Quick Reference about math functions returning floats. Added 26 new functions defined by Chris Roe to eden.eden. They are: max, min, sum, average, abs, nthroot, factorial, product, sign, even, odd, mround, sumsq, trunc, combin, ceiling, floor, degrees, radians, rounddigits, gcd, lcm, variance, stdev, sort, median. Each is listed below with the parameters that should be passed and some examples of how they can be used. In all the examples the list a = [3,4,5,6]; max(number, ...) or max([list of numbers]) : returns the maximum of the numbers e.g max(1,2)=2, max(a)=6. min(number, ...) or min([list of numbers]) : returns the minimum of the numbers e.g min(1,2)=1, min(a)=3. sum(number, ...) or sum([list of numbers]) : returns the sum of the numbers e.g sum(a)=18, sum(2,3,4)=9. average(number, ...) or average([list of numbers]) : returns the average of the numbers e.g average(a)=4.5, average(7,9,11)=9. abs(number) : returns number if > 0, otherwise returns -number e.g abs(-7)=7, abs(2)=2. nthroot(number,n) : returns the n'th root of the number given e.g nthroot(4,2)=2, nthroot(81,4)=3. **There may be some problems with precision of the answer with large n due to the C library function used. ** factorial(number) : returns the factorial of the number given e.g factorial(4)=24, factorial(-2)=@. product(number, ... ) : returns the numbers passed multiplied together e.g product(2,3)=6, product(a)=360. sign(number) : returns -1 if number is < 0, 0 if number = 0, 1 if number > 0 e.g sign(4)=1, sign(-230.2323)=-1. even(number) : returns the nearest even number to the number given e.g even(4.5)=4, even(5.5)=6. odd(number) : returns the nearest odd number to the number given e.g odd(4.5)=5, odd(3.5)=3. mround(number,multiple) : returns the number rounded to the nearest multiple of the given multiple e.g mround(62,6)=60. sumsq(number, .. ) or sumsq([list of numbers]) : returns the sum of the squares of the numbers passed e.g sumsq(2,3,4)=29, sumsq(a)=86. trunc(number) : returns the integer part of the number given e.g trunc(4.56)=4. combin(total,n) : returns the number of ways n numbers can be picked from total number of items e.g combin(4,2)=6. ceiling(number,multiple) : returns the number rounded to the nearest multiple of the given multiple that is greater than the number e.g ceiling(62,6)=66. floor(number,multiple) : returns the number rounded to the nearest multiple of the given multiple that is lower than the number e.g floor(64,6)=60. degrees(angle) : returns an angle given in radians with its equivalent in degrees in a range 0-360 e.g degrees(PI)=180. radians(angle) : returns an angle given in degrees with its equivalent in radians in a range 0-2*PI e.g radians(180)=3.14... rounddigits(number,digits) : returns the number rounded to the specified number of digits e.g round(123,2)=120, round(123,1)=100, round(123.232,4)=123.2. gcd(number, ...) or gcd([list of numbers]) : returns the largest number which will divide exactly into all the numbers passed e.g gcd(2,6)=2, gcd(6,9,24)=3, gcd(3,7,24,28)=1, gcd(a)=1. lcm(number, ...) or lcm([list of numbers]) : returns the smallest number that all the numbers passed will divide exactly into it e.g lcm(8,12)=24, lcm(4,6,8)=24, lcm(a)=60. variance(number, ...) or variance([list of numbers]) : returns the variance of the numbers passed or the list of numbers passed to it e.g variance(23,34,46,43)=80.5, variance(a) = 1.5. stdev(number, ...) or stdev([list of numbers]) : returns the standard deviation of the numbers passed or the list of numbers passed to it e.g stdev(23,45,67)=17.96..., stdev(a)=1.22... sort([list of numbers], direction) : returns the list of numbers sorted. the direction parameter should be 1 to return an ascending list, 2 to return a descending list e.g sort(a,2)=[6,5,4,3]. median([list of numbers]) : returns the median element of a list of elements, those elements do not need to be in any sorted order e.g median(a)=4.5. These functions have been tested, but there may still be some bugs in some of the routines. Please email croe@dcs if you find any problems with the routines. Most of the functions do not perform any error checking, they assume you are providing a valid list of parameters. Added two more functions from Chris Roe, inspired by functions from complexGardner1999: randomise() : seeds the random number generator with a random number rnd(number) : returns a random number between 0 and the number. Note that both 0 and number are included in the range. e.g rnd(1234)=567, rnd(9)=4. Lack of specification about rand() range documented in eden.txt. Added rgb2color and rgb2colour functions to eden.eden. Examples of use: %donald line l l=[{10,10}, {200,200}] %scout string g; window ash = { type: TEXT string: "Ash" frame: ([{10, 10}, {100, 100}]) bgcolor : g }; screen=; %eden g is rgb2colour(ri,gi,bi); A_l is strcat("linewidth=5,color=", g); ri=0;gi=10;bi=255; Added Help->Colour names, which contains the information from the file /usr/openwin/lib/X11/rgb.txt and some help about how to use colours in Donald and Scout. Added small amount of detail about EOF to Eden fgets file function in eden.txt. ** 1.40 [Ashley] Wed Apr 17 11:47:12 BST 2002 ** A few silly mistakes in the reimplementation of mouseClick observables (in 1.39) fixed. The multiple backups of the ~/.tkeden-history file added in 1.12 caused problems with multiple concurrent instances of tkeden running in the same user account with an NFS mounted home directory: machine 1 shifts history files, starts to use tkeden-history, machine 2 shifts history files, machine 1 gives stale NFS handle error. Changed from renaming files to shift them to copying instead. This means all the tkeden-history files will have the same file date, making it more difficult to find the relevant data when grubbing around in the history files, but it is possible to run multiple tkedens from the same account without problem. ** 1.39 [Ashley] Mon Apr 15 20:19:51 BST 2002 ** Reorganised descriptions of file handling functions in eden.txt slightly. The fix added in 1.37 which gives an error message on an attempt to eval() a local variable is now extended to attempts to reference the local variable $. The new builtin Donald reflect function was not working when given an openshape and a line: the parser was expecting it to return an openshape due to a missing break in Donald/check.c, whereas it actually (and should) return a shape. Fixed. Also added an extra test and error message to open2shape, and fixed donald.txt, which implied that rot, scale, reflect etc only take shapes, whereas in fact they take any Donald type. Optionally reinstated the "VB-like" feature of mouseClick observables removed in scout.init.e 1.11 (Eden version 1.17). To turn this old feature back on again, do "tkeden_vbfeatures=1;" in Eden. This is for use in getting old models to work only: new models should not use mouseClick and other "VB-like" features as they have been found in general to create more problems than they solve currently. ** 1.38 [Ashley] Fri Mar 1 23:31:32 GMT 2002 ** Fixed an inconsistency: query (?) previously ommitted the semi-colon after a procedural variable. Now the output from ?a; will show a semi-colon after both procedural and formulae variables. Added Eden stat() function, which provides access to meta-data about files (modification times etc). Updated fgets() documentation in eden.txt. Changed filenames in lib-tkeden to use the new extension names: .eden etc. Renamed macro.e to eden.eden, which is now loaded at startup (if it can be found). Removed eddipf.e file -- the text of this is now included at the start of eddi.eden. Added Eden symboldefinition function, which is intended to fix problems with the data returned by symboldetail() and relatives, as it returns the definition of an Eden symbol in a form that can be fed back to Eden using execute(), todo() etc. Bug fixed in agent-based parser: characters can now be escaped in strings: TEST << ["oh \"quote\""]; is now valid. Changed occurrances of "definitive parser" in this text to the more correct "observation-oriented parser", as the parser makes little use of definitions. Added copyproc() and showpara() procs to eden.eden. Introduced an optimisation that will allow the use of a particular list append idiom on long lists. The list concatenation operator is limited in the resultant size of list that it can produce, meaning that 'l=l//[q]' would fail with a stack overflow error if l was larger than 1023 items. This particular operation is now optimised (by additions to the parser and virtual machine) to the effect that 'l=l//[q]' is effectively translated internally to 'append l, q'. Note that the value of the expression 'l=l//[q]' is now @, not the value of the new list as previously, due to space limitations. A variation on the problem, 'l=[q]//l', is not optimised as it is a less common idiom. The optimisation also copes with strings, although the concatenation is not done in-place in this case. This change should allow EDDI to cope with much larger results (eg large joins). Added some more possibilities to debug(). debug(256): prints calls to execute, debug(512): prints calls to func / proc / procmacros with their arguments and return results (including indentation to show level of nesting), debug(1024): prints VMWRIT output (when opcodes are created in the VM for later execution). This last is also a part of the debug(1) output, which is generally far too detailed to be useful. Modularised tkeden notation radio button code. Added a Tcl proc named "removeNotationRadioButton" to allow scripts to remove the radio button for a notation in order to hide the notation's existence (note the notation itself is not actually removed). An example of use: %eden tcl("removeNotationRadioButton donald"); Added printstdout C function for use from gdb. Fixed commas within strings in EDDI: T << ["h,w"]; is now possible (previously the comma would have caused this to be recognised as two attributes). Fixed bug in EX/script.c: a textual script store was not being resized correctly when given a large amount of script. A fix was introduced in the last version to cope with the fact that TEXTBOXes are a different kind of Tk widget to the other types (TEXT, DONALD, ARCA, IMAGE). The previous fix was not correct: the code which was enabled was actually handling frames (lists of boxes). The obtuse and lengthy DisplayScreen procedure is now more understood and some comments have been added, as well as a more reasonable fix for this problem. Previously, Eden floating point values that were very close to their integer equivalent would be printed out as integers by query (?), writeln etc. 169.9999 would be shown as 170, for example. Now, floating point values are printed out at the precision available on the machine. Added Chris Brown to credits.txt. dtkeden bug fixed, which was introduced in release 1.21 (builtin.c 1.39) with the introduction of the 'procmacro' facility. When defining a procedure or function on the server, the redefinition sent to the client was corrupted: func definitions had 'proc procmacro' appended, procs had 'procmacro', due to some missing break statements in a switch. PI was previously undefined in ttyeden (as it was part of Donald), and defined to only 7 significant figures. Made PI a standard Eden definition, set from the more precise value available on the system from . Added information to Eden and Donald quick reference guides (eg note that in Donald, it is referred to as lower case pi). Added Chris Roe's round() function to eden.eden. Added documentation for macro, copyproc, showpara, round and eval to the Eden quick reference. Added documentation about ~/x, /x etc to Donald quick reference. Added debug(2048) to debug the Donald parser. Added debug(4096), which causes tkeden to print errors on stderr as well as in the error window. Donald parser was having problems on UNIX when reading files with DOS line feeds. In particular, within x NEWLINE { } was failing, because DOS line feeds are CR (\r), LF (\n), which was being treated as two NEWLINEs. The Donald lexer now ignores a \n which follows a \r. Optionally reinstated some code to do with back-ticks which appears to make the project timetable model work. Enable this hack by setting the Eden variable eden_backticks_dependency_hack to 1. Exactly what the hack does is not yet well understood, so it is optional for the moment. ** 1.37 [Ashley] Tue Feb 19 17:29:00 GMT 2002 ** Sync'd code with CVS. Attempts to eval() a local variable now give an error message instead of a crash. Eg 'func t { auto i; i=2; writeln(eval(i)); }'. eval is defined to give the value of a variable at point of definition. This is at the entry of the function in this case, when the function is not being evaluated, and so any local variables as yet have no value (although we do know that they are local variables). Hence an error is appropriate. Mac OS X tkeden port is progressing. Now automatically locates lib-tkeden, which is situated within the Resources directory of the application bundle. Bug fixed in call_float (which is where real-valued C library functions are called) on Mac OS X. sin(3.14159/2.0) would return 0.909297, not 1. In 1.19, a change was made: all values passed to a C library functions declared as SameReal (which are functions that return a real value, eg sin, cos) are passed double values -- integer parameters are cast to double type before passing. Now a more subtle internal change has been added to this: the C library is now given an array of doubles, not ints. Added debug(128) option for debugging calls to Tcl_EvalEC and Tcl_GlobalEvalEC. Added information about arguments to debug to eden.txt. Added an additional example to scout.txt. Fixed a bug where redefining the Scout screen to one that included TEXTBOXes might fail. When the screen variable is changed, the corresponding Tk widgets are modified in place if possible, not destroyed and recreated from scratch. Scout windows of type TEXT, DONALD, IMAGE and ARCA all seem to use the Tk canvas widget. TEXTBOX however uses the Tk text widget, and so when a window changes type to and from TEXTBOX, the corresponding Tk widget must be destroyed and recreated, else various Tk error messages occur when the widget attributes are changed. DisplayScreen is now nearly unmaintainable, being 400 lines of obtuse C code. It seems to contain some code which appears to try to manage the above situation. It seems to have been failing due to two erronous "+1"s, which are now commented out. Further use may reveal the original intention of these "+1"s and require a different solution. ** 1.36 [Ashley] Thursday November 29 19:26:19 GMT 2001 ** Using the system's close window button on the View Eden Definitions window previously caused a Tcl/Tk error, as I'd changed the menu code for this window, but not the close window code which relies on it. Updated EDDI files from Meurig's current version a little: new version of deps.e and new file newaddvals.e. Also cleaned up my modifications a little. ** 1.35 [Ashley] Tue Nov 20 13:22:19 GMT 2001 ** Merged in Chris Roe's Donald reflect primitive as a new Donald built-in. Added one line giving the syntax to the Donald Quick Reference on the Help menu. Fixed ttyeden on Darwin (Mac OS X). Now compiles and works OK (were problems with header files etc). No dirname and basename functions. Fixed implementation of Eden str() function when dealing with lists. Previously it had the same fault that was corrected in printing (writeln etc) in 1.29: strings and chars in lists were converted by str and were not given surrounding quotes. Now this example functions correctly: 1|> l=["hi",'h',5,[6]]; 2|> writeln(l); ["hi",'h',5,[6]] 3|> writeln(str(l)); ["hi",'h',5,[6]] ** 1.34 [Ashley] Thursday November 15 20:03:13 GMT 2001 ** EDDI in dtkeden server previously printed "Unrecognised EDDI statement" on stdout if the server's notation was set to EDDI and a client started or finished or if broadcast mode was selected. This problem was narrowed down to the EDDI parser not understanding virtual agent commands: a line containing '>>' is executed in the these scenarios. The EDDI parser is now fixed so that it ignores statements that begin with the virtual agent >>, <>, ><, << and >~ prefixes. ** 1.33 [Ashley] Thursday November 15 16:52:38 GMT 2001 ** Improved MAKING.A.RELEASE checklist. The scale function in donald.init.e previously ignored arcs. Chris Roe fixed this for his COG model. This improvement is now merged into tkeden, so Donald should now scale arcs. However, Chris' fix may be a slight fudge as it apparently doesn't scale the arc's "bend". ** 1.32 [Ashley] Fri Nov 2 12:24:37 GMT 2001 ** Typo fix in builtin.h and builtinf.h ** 1.31 [Ashley] Fri Nov 2 11:58:24 GMT 2001 ** Change to Meurig's newpivctn.e EDDI file. The prompt in ttyeden was previously incorrect after including a script file with a change of notation (or providing a -e option with a change of notation). The machine would actually revert to accepting Eden (incorrect) but the prompt would still show the other notation (actually correct). Given the time limitations today, I have made the easier fix, which is to fix the prompt to correctly show the state of the machine. As the semantics of an include() (or mention of a script file on the command line) is direct inclusion of that file in the input stream (rather than a "procedure call"), the machine should actually stay in the new notation (ie notation changes should persist across EOF). This will however require some restructuring of the lexer. This problem does not occur when typing input directly, as stdin never gives EOF. tkeden does not have this problem as notation changes are handled by functions in EX (which is not in ttyeden). ** 1.30 [Ashley] Thu Nov 1 19:31:37 GMT 2001 ** When using eager() in a tight Eden loop to modify a Sasami display, this previously caused a Segmentation fault. The crash no longer occurs, but the Sasami display is corrupted. Improved debug(2) output (RunSet debugging). Test with (eg): writeln(1); todo("writeln(2);"); todo("todo(\"writeln(3);\");"); Eden include() now stores number of parameters (file names) in a C stack variable, rather than relying on being able to read it from the Eden stack after each include. This should stop a few crashes due to nonsense values being read from the Eden stack. tkeden now correctly appends information to the history about the files stated for execution on the command line on UNIX. (On Windows, "cd(dirname(filename))" is done for each file before execution of "include(basename(filename)", which appears in the history). Both platforms now have a comment appended in the history which states the files were invoked from the command line. It was previously possible for the tkeden prompt (eg "Enter Eden Statements") and radio buttons to get out of synch with the actual current notation. Specifically, the Eden include() function, invocation of files mentioned on the command line and observation-oriented parser generator may have had this problem. This problem was not observed on Windows (for some reason). Added installeddi() Eden procedure, which adds the eddi parser to the environment when invoked. Added this info to the Eden Quick Reference. The Update button in the View Eden Definitions window now keeps the vertical scrollbar position instead of resetting it to the top of the document each time it is pressed. Added an Edit menu with Copy, Cut, Paste options to the View Eden Definitions window. This required reworking of the Eden Definitions menubar. Added information about return codes of forget() and type casting to the Eden Quick Reference. Tcl now sets the prompt label using the correct case of "statements" (which is later overwritten by C code anyway..., but which can be observed when running on a slow machine). The Eden forget() function can now take a pointer. However it will never return 1 (for "not found") as use of a pointer reference causes Eden to create the pointed-to item (as @) if it does not already exist. Added slightly more detail to Eden quick ref about nested comments. There was a bug in the one-line comment (##) code, which caused the next line to be ignored if the comment characters were followed immediately by a newline. "Merged in" Meurig's eddi changes by concatenating them into one long eddi.e file. ** 1.29 [Ashley] Tuesday October 16 19:22:15 BST 2001 ** Fixed bug introduced into ttyeden in 1.27. The fix was introduced as ttyeden didn't seem to deal with items in the todo() list correctly. The "fix" caused clearGarbage to be called at incorrect points, meaning Datums that were actually in use were freed: writeln("what the ****"); would print "(type=-14907, val=-976894523)" (as the string Datum was corrupted). checkRunSet and the associated clearGarbage, incGarbageLevel are now only done in one instance of print_prompt_if_necessary. This may reinstate the problems with todo() that the "fix" was introduced to solve, but there was no clean test case for it, and I no longer have Michael's ttyeden model code to test. Changed printing of strings and chars. Strings are now output with surrounding double quotes, chars are output with single quotes, unless their output was caused by writeln (in which case the contents of the string is usually required). This should help debugging (the ? query operator now shows the type more clearly) and reflection (when Eden code observes Eden code, perhaps re-executing it). writeln on a list always shows quotes, as it is also surrounded with list constructors and is therefore a "reflection" type of output. Fixed a bug introduced when improving the Donald error output. If Donald was "within" a context, this was not reset (an oversight introduced when adding this improvement). There was no way to return to the root context (as the Donald parser looks for "within { ... }" and will not accept "}" without the preceeding tokens). The context is now correctly reset and notice is given of this in the Donald error message. For example: %donald openshape ash within ash { error ** 1.28 [Ashley] Monday October 15 16:23:30 BST 2001 ** Fixed 'invalid command name: "tcl_wordBreakAfter"' error on Windows after Michael found how to reproduce it (double click in the input window). The problem was caused by the ommission of the tclIndex file from the Windows distribution (quite a few of the Tcl/Tk files are ommitted in order to save space). Files using DOS line-feeds (CR, LF: \r\n) in non-Eden notations (Donald, Scout, LSD, Sasami, custom) were causing errors when interpreted with the include() function (interpreting the code via the input window: File -> Open was OK as Tcl reads the file and seems to correct the line feeds). This is a very old bug: a problem even in tkeden-dec151997. Now fixed. ** 1.27 [Ashley] Thu Sep 27 18:44:13 2001 ** Now guessing location of library files directory on Windows in ttyeden (previously was only doing this for tkeden). eddi.e now tries to find eddipf.e in TKEDEN_LIB, not the current directory, so the command given below for starting tk/ttyeden with the eddi parser should now work even if eddipf.e is not in the current directory. File -> Execute -> eddi.e now works. Previously any Tcl code which required access to a global Tcl variable would fail when run from File -> Execute (as the Tcl 'eden' command was run within the access scope of the Tcl 'include' procedure). Moved checkRunSet into print_prompt_if_necessary (ttyeden only). This fixes a bug where ttyeden didn't seem to deal with items in the todo() list correctly. ** 1.26 [Ashley] Thursday September 27 12:49:42 BST 2001 ** Chris Brown's fix for strings containing single-quotes ttyeden now shows -l setting on -v. Fixed bug where %eddiarrgh would be a valid notation change. Other built-in notation changes with additional postfixes (eg %lsdarrgh) should still be valid, but notations in the observation-oriented parser now require an exact match. Fixed bug where a notation starting with an uppercase letter would cause an error in tkeden (as Tk doesn't seem to allow window names that start with uppercase letters). Including the eddi observation-oriented parser into the standard distribution. Load it with the Eden code 'include(getenv("TKEDEN_LIB")//"/eddi.e");'. This can be done from the command line: tkeden -l lib-tkeden -e 'include(getenv("TKEDEN_LIB")//"/eddi.e");' (this also works with ttyeden). ** 1.25 [Ashley] Friday September 14 17:11:49 BST 2001 ** Fixed minor bug preventing tkeden compiling without Sasami. Made it possible to use the observation-oriented parser within ttyeden. The observation-oriented parser requires the file trans.e within the library files directory, and so the -l argument now applies to ttyeden. If the -l argument is not given, ttyeden still operates, but the observation-oriented parser is not available (functions defined in trans.e are not available - likely error messages include "...'ident_ex' needed..."). The ttyeden prompt now includes the name of the current notation if this is not Eden, for example: "%eddi 4|>". Fixed many input-reading bugs to allow this to happen correctly (to do with EOF handling, prompt printing, line termination etc). There may still be some more bugs as the code is messy (Eden/lex.c really needs a rewrite in many places) and it is difficult to test all possible conditions. Fixed a memory bug in tkeden's prompt ("Enter xx statements:") setting code. ** 1.24 [Ashley] Wed Aug 15 16:15:34 2001 ** Eden "system" command now defined as a built-in, meaning that it should now work in a non-root virtual agent context (previously, the tilde "root virtual agent" specifier would have needed to be appended, ie "~system"). The cd(dirname(fileToInclude)) hack introduced in 1.17 which makes it possible to drag a model start-up file onto the tkeden icon on Windows (the hack sets the working directory such that the other model files can be found) was causing problems on UNIX when people start the tool with a command line including relative pathnames, so this hack is now only used on Windows. Chris's observation-oriented parser is now not compiled into ttyeden. It could be, but the executable then needs to be able to find trans.e and the -l option would then become mandatory for ttyeden, meaning it wouldn't be just a simple stand-alone executable. Since the current notation development using the parser seems to be proceeding using tkeden functionality, ommitting the parser from ttyeden shouldn't cause too much of a problem for now. ** 1.23 [Ashley] Monday August 13 18:18:58 BST 2001 ** Chris's updates to his observation-oriented parser: some functionality has been moved into Eden - particularly the decision about when to start parsing a complete 'chunk', meaning that a parser for a language with definitions spread across several lines is now possible. ** 1.22 [Ashley] Friday August 3 16:49:31 BST 2001 ** Merged in Chris Brown's observation-oriented parser. This may cause problems with some models as the additional Eden code which implements the observation-oriented parser may use namespace that is already used by some other models. Made installnot create a new radio button on the interface for a newly installed notation. Added 'notation' to eden.txt quick reference guide. ** 1.21 [Ashley] Thursday August 2 18:02:12 BST 2001 ** Fixed CVS/Root files which contained cssbz@127.0.0.1... instead of the correct cssbz@cvs.eden.sourceforge.net... Undoing a change I made in 1.19 which was to rename all upper-case filenames, as this will cause too much hassle with CVS. Compiled Tk Img package at DCS and made edenio.tcl load it if it is available. This gives Scout the ability to load images in the formats BMP, XBM, XPM, GIF (with transparency, but without LZW), PNG, JPEG, TIFF and postscript (previously it could only handle the Tk default of PPM/PGM and GIF). Updated various documentation with credits, installation and usage information. Help -> About tkeden now shows patch level of Tcl and Tk (eg 8.3.3 instead of 8.3), and also whether the Img package is available. Sync'd all the code with CVS again. Added 'setcvstag' target to Makefile to enable recording of releases in CVS. ** 1.20 [Ashley] Wed Jul 18 18:26:59 2001 ** Added ENTSTK to possible debug() output reset_stack and reset_compiler_status now give debug output Fixed "bug42": introducing the screen_width etc definitions in 1.19 caused a segv after an error in some circumstances (in particular, when the user made an error in a file that they included from a file after a %scout line). I had previously worked around this problem by leaving out a Tk "update" after adding text to the error window. If an "update" is not performed at that point, the error window appears to freeze during a series of repeated errors. Adding this update is in fact a new feature, but adding it revealed the above problem - that the error handling code was causing some Eden code to run with the intent of updating the screen_width definitions, and this foobarred the stack state (which is actually above the current stack pointer and so supposedly "discarded", but is still required after an error condition). Now the machine state is reset after the call to the error handling code, meaning the error handling code uses stack space above the state that must be left undisturbed. Limited testing so far seems to show that this fixes the problem. Now error messages should be visible in the error window even if Eden is in a tight loop (which is especially important now that complete error messages are not logged to a file). Added 'tkwait visibility' to OpenDisplay procedure, which means that any Scout screens should be shown even if Eden goes straight into a tight loop when starting up. Added to debug(2) output Fixed bug in error line buffer implementation. The 'rtos' function in donald.init.e had a bug causing memory to be overwritten. The first argument to sprintf must first be initialised to a string of length the same size or longer than the string to be written into it. Added warnings to eden.txt documentation. Proper error message if scoutScreenInitOpen can't be found (ie we are using the wrong -l settings). Character number reported on error now starts at 1, not 0. Donald dashed and dotted lines will now appear solid if your Tk version is less than 8.3 (the old dash_bitmap hack was removed in 1.19, which caused these lines to not appear at all). So we now have a dashed/dotted lines solution which should work reliably on all platforms and fail safe to solid if the platform cannot cope. (Note that the current Windows distribution uses Tk 8.0 and so dotted lines will not appear there). ** 1.19 [Ashley] Sat, 14 Jul 2001 21:35:52 ** Previously, calling touch() with a non-pointer (eg touch(me)) caused a Segmentation Fault and crash. Now it gives an error. Removed code from scout.init.e which fudges heights and widths to work with "buggy Tk" (version 4.0b3? - very old now). Added warningf C function (using varargs) to enable more complex warning output. Made warning use it. Improved error messages in the C-implemented Tcl commands, eg eden, todo, evaluate etc (see EX/ex.c). Scout now 'knows' the size of each display. Implemented some Tcl / Eden which defines Scout integers, named displayname_width and displayname_height which are the width and height of the display window. These observables are redefined when the window is resized by the user. This should make it possible to centre things within Scout windows, etc. This particular interface doesn't fit cleanly with the rest of Scout - perhaps this information should be obtained from Scout using displayname.width etc, but this would require more work. This hack will do for the moment - beware of future changes if you use it. Defined the new functions cd, cwd, dirname, basename as built-in functions so that when we are not in the root VA, the agent name does not get prepended. Unfortunately this means that the user cannot redefine the initial versions of these functions. Added Scout DFwidth and DFheight parameters describing the width and height of the screen to be opened (meaning we can redefine these before screen is opened...) Calling the Eden tcl() function with @ now results in an error message, not a Segmentation Fault. Control-C twice to kill tkeden on Linux now works correctly and doesn't go into a loop. Figured out Donald {distance @ angle} operator and added to (the previously extremely poor) documentation (also documented that Eden sin and cos require radians...) Fixed a bug involving passing strings with " characters in text boxes to Scout (a Tcl problem). Find... didn't work on Linux as \c was being interpreted as an escape sequence there (not sure what it is supposed to be interpreted as). Quickly fixed by using marks instead - not sure if this is a good solution. Made a separate Errors window and separated out history entries from errors. Now no longer a need to surround errors with comment characters. Errors from all notations should now appear in a uniform and more helpful way. Adding the startup stuff provided on the command line (eg -e, filenames...) to the history. Fixed (well, avoiding) a bug which caused tkeden to fail with Seg fault after encountering an error during initial startup (specifically, it seems to appear when the user makes an error in a file that they have included from a file included from a file, after a %scout line, all of which appears to be causing the errorf longjmp to jump to the include() C function (which it shouldn't) which then dereferences paracount and gets a nonsense value since there is nothing on the stack at that point). Somewhat obscurely, removing the Tcl "update" call after the error (which I inserted to get the display of error messages working OK during an error loop) causes this to work OK - eh?! The Tcl "raise" procedure (which brings a window to the front) appears to be causing problems on Linux, so I've redefined it to blank for the moment. Added what was encountered to the information given on a parse error (previously just printed what was expected) from translators using bison.simple (Eden, Donald, Scout). The error location indicator (^) now takes account of tabs in the input line, so points to the correct place if tabs are used. Fixed a bug where the heap was not freed when a empty statement list was used. Eg 'while (f()) {}' would cause heap overflow if f() did not return false fairly quickly, as the arguments to f() (a list of length 0) were added to heap on every call. The heap space would normally be reclaimed after execution of the first statement in the loop, but not in this circumstance. Added debugging output to internal C malloc function. Enable with debug(64); Circle colouring in Donald has been reported previously as not working. It is still working - at some point in the past, the attribute name required changed from 'color' to 'outlinecolor'. The -e command line option didn't work correctly on Linux when it followed a filename (eg ttyeden errortest/args.e -e "writeln('n');"), as getopt on that platform permutes the contents of argv as it scans so that eventually all non-options are at the end. Turned this behaviour off and -e now works correctly on Linux. ttyeden -u output was incorrect. C-lib "illegally typed" error message improved. Stack trace given for error messages now says "in ..." for first func/proc... rather than "called by". This should help to understand where the error occurred, for example in the case where a proc/func etc tries to reference outside the parameter list - the location of the error was likely to be construed as the caller in the old error message style. Code that would have probably caused "called by action " fixed. Error message formatting improved where 'stack pointer was inconsistent' is mixed with an error message. Decided to remove 'stack pointer was inconsistent' notice as most of the time it simply seems to just add more noise to error messages - the pointer was inconsistent because an error occurred, I believe probably in all circumstances. Added an 'error number' identifier which shows up in the history and error windows, allowing us to reconcile the two together if need be, and as a reminder in the history file that the input caused an error. In 1.13 C-lib real-valued functions were modified to give an error when called with non-real parameters (before, they used to silently return strange values). Now any integer values passed to one of these functions (eg sin, sqrt...) are internally cast to floating point before calling the C function, so that meaningful results are now obtained when calling these functions with integer values. Improved 'not read/write variable' error message (which happens in eg 'writeln++' where writeln is not a local variable). Now giving the name and type of the offending variable. arca.lib now uses a modern-style font name declaration, so has more hope of working on multiple platforms. Added '##' as a one-line comment to Eden. The character sequence '##' now causes Eden to ignore input until after the end of the line is encountered. The single '#' character cannot be used as a one-line comment token in Eden as '#' is already used to denote list/string length (and the C++ one-line comment '//' is also already used in Eden for list/string concatenation). '##' comments can already be used in Donald, Scout and Sasami as those notations already implement the '#' one-line comment syntax. '##' can therefore be used in any notation currently built-in to tkeden. 'Error number' identifiers now inserted into history are now commented with '##', so that history can be re-run in tkeden with no modification. Turned filename completion (a function provided by readline when you press Tab) off in ttyeden. Readline now knows that the application name is ttyeden, so conditionals using this information are possible in ~/.inputrc (but this is currently untested). Fixed a bug in and improved the ttyeden prompt. Previously, a comment would cause the prompt to fail to reset from the "waiting" prompt ("+> ") to the usual prompt (":> "). Now the prompt correctly resets, and there are multiple possible "waiting" prompts. The usual prompt has been modified to make the difference between it and the "waiting for semi-colon" prompt clearer. The new prompts are: |> - the usual prompt ;> - prompt when waiting for a semi-colon |> - prompt when waiting for a close-quote *> - prompt when waiting for a close-comment Reworked the tkeden previous/next history implementation added in 1.13, which used a cyclic buffer to represent history. This implementation wasn't the same as other implementations of history (eg in various shells) and caused the history to be overwritten after using Previous to "go back in time" and then continuing to make entries (overwriting history). On inspection, other implementations of history seem to be simpler than this and "go back in time" only for the duration of the current entry. tkeden now follows this scheme, retaining twenty items of history, and beeping if the user attempts to go beyond the recorded limits. Added Alt-p and Alt-n key shortcuts to tkeden for previous / next in history, as some configurations have no Meta key and Alt-Control-Up/Down is used by the window manager. Shift-Control-Tab was causing the entire menu bar to tear itself off. Fixed. Donald dashed and dotted attribute support reworked using the third party Tk "dash patch" which was finally merged into Tk in version 8.3. These attributes will not function if you are using earlier versions of Tk, but if you are, they are likely to function correctly (unlike the previous hack which involved 'stippling' the geometry with a dotty bitmap, which failed to function at certain angles on certain platforms). This version of Tk does not seem to be easily available in cygwin and hence the PC port, but the previously hacked version didn't work on the PC anyway. It seems that the attribute "linestyle=dotted" was not supported at all in the previous version (despite existing in the documentation) - it should work now. Renamed files with all upper-case names as they cause problems when they exist on a vfat (Windows) partition mounted from Linux. Checked out memory leak bug in COMICAL/ROADSYS, which was mostly fixed in 1.1 ("bug5"). There is still a small leak, but it looks like this is probably attributable to Tcl (specifically TclpAlloc). Added eden_prompt variable to ttyeden Eden which specifies whether the prompt will be displayed: 1 (default) means the prompt will be displayed, 0 means don't show the prompt. The value can be modified directly or via the -n and -i command line options (which do correctly trigger any actions triggered by eden_prompt as they should). Had to work around a bug in libreadline4 (reported to Debian as bug #105231) to get this to work. Bug fix: ttyeden previously would quit after two control-C presses, no matter how length a time interval between them. Bug fix: ttyeden does not now use readline if the current input file is a pipe (technically, ISFIFO), meaning that the 'old-style' pipeline translators still behave as they did. Removed some dead code relating to storage about input. Reworked my line buffer (added for error handling) so that it resizes dynamically, meaning Eden once again has no line length limit (I unwittingly introduced one probably around version 1.13). ** 1.18 [Ashley] Fri Jun 29 2001 5:30am :( ** Changed Scout "parse error" to something more informative. The 'sensitive' functionality added for Chris in 1.13 below is still not right, despite some more fixes in 1.17. When 'sensitive' is used in a window in a virtual agent context, the ON, MOTION etc values were being prepended with an agent name, meaning their value was unknown, meaning that the parser moaned. Changed these values back into items in the constants table, meaning that the VA name translation is not done. Had to hack the values of these constants, given that Scout lacks a proper 'integer' type (they are actually 'double' - see below). Now added an 'integerhonest' type, the tree constructor function of which actually takes an integer. The internal value is still stored as a double, as per Simon's original hack (which was added before the start of version control on this source). In summary: 'sensitive' now works in VAs, but Scout still needs un-hacking wrt the integer type. Renamed 'dummy.c' to 'nothing.c' as the configure script seems to keep removing it on Linux. Got dtkeden to compile on Linux (need different headers for MAXHOSTNAMELEN) Bug fixed: previously trying to File -> Open a file without an extension would lead to an attempt to load the filename with a .e extension. Documented font specifications in Help -> About Donald, Scout Updated Eden Quick Reference with a few more of the additions I've made. Changed default file extension in File -> Open etc to *, as none of our existing models use the .eden, .donald... extensions yet. Fixed a bug introduced in 1.17 where Scout windows always seemed to have a border. This was actually due to yet another bug in my 'sensitive' reimplementation, which caused screen[n][14] (the sensitive attribute) to be defined as @ if it wasn't specified by the modeller. Previously it would have been defined as 0 in this case. Now it is defined as DFsensitive, which is zero by default. ** 1.17 [Ashley] Wed Jun 27 2001 4am :( ** The Scout 'integer' type is actually more subtle than described below. Actually Scout has another type, 'real' (which is only mentioned in an example in the documentation). Both 'real' and 'integer' are stored as C doubles, and have the parser identifier INTEGER. When a Scout number is output to Eden, tests are performed to see if the decimal part is zero - if it is, then the number is output (mostly) as an integer. We still need the 'real' type, particularly when scaling images, and replacing this hack with a proper implementation of real and integer separate types would take more time than is available at present, so moving back to the previous (hacked) implementation. This implementation causes problems when feeding numbers from Scout to some Eden functions, but this can be worked around in the models by casting to (int) when required. The 'sensitive' functionality added for Chris in 1.13 below was actually buggy (it was untested until now): the functions in scout.init.e were being passed the value of the pointer to the sensitive attribute, not the actual value. This is now fixed, and the mouse / key Tcl bindings are now set up by one procedure in scout.init.e instead of two. MOTION, ENTER and LEAVE will not work within TEXTBOXes for now, as some more work needs to be done on TEXTBOX first. _mouseClick ("VB-like"?) functionality removed from scout.init.e at the same time as above, as the use of this feature in models seems to cause more problems than it solves. (Note: this will break some existing models). Minor bug fixed: errors from keyboard input in ttyeden would be reported as from file '@': now correctly from file "stdin". Added Eden cwd() function and cd() procedure. The cwd() function is marked as out-of-date whenever cd is called, so the procedure 'proc pcwd : cwd { writeln("cwd now ", cwd()); }', giving a UNIX shell-like prompt is possible. Added Eden dirname() and basename() functions, which give the containing directory and filename of a file path respectively. Now, for each initial file to load specified on the command line, cd-ing into the containing directory of each file before attempting to execute it. This will leave the cwd set to the containing directory of the last file on the command line. This is intended to make Eden include(...) calls in a script more effective if the tool doesn't have a sensible initial cwd (which is true on Windows most of the time). Some of the code for this trick is implemented in Eden, so that the cwd() function will be correctly re-evaluated when the cds are performed. Note that it is possible to make Eden appear in the Send To right-button menu in Windows by setting up a short-cut to it in the C:\WINDOWS\SHORTCUTS folder. This cd hack should make this short-cut trick work in more situations (note that it is also possible to select multiple files to Send To Eden). Note that the include() Eden function does not itself do a cd() - if you are using include(), you may do a cd() in the script yourself. Rewritten the File -> Open / Execute cd trick introduced in 1.15 from Tcl into Eden, meaning the cwd() function will be correctly re-evaluated when including files via this interface-driven route. Removed traces of 'tkusage', which apparently was an external application intended to keep track of the use of tkeden. Now storing the last twenty items of tkeden previous/next history. Deleted some stuff from edenio.tcl that was no longer needed (some comments and the old file browser things). Set the colours for the radio button bar to something other than grey to distinguish it from the menu bar on Windows. Removed code from edenio.tcl which fudges the text search to work with "buggy Tk" (version 4.0b3? - very old now). Added key shortcuts Alt-s and to View Options dialog. Find dialog: added case sensitivity option, "find in...", key short-cuts. Improved display of found text: previously it used the selection (sel) to highlight the text, which was not visible unless the window has focus on windows. It is worth noting that the Find dialog can take regular expressions (eg "ash.ey", '.' meaning any character or "^start", '^' meaning start of line etc etc) as the search string. Added Help -> Scout, DoNaLD and Sasami quick references, but they aren't really finished yet. ** 1.16 [Ashley] Mon Jun 25 2001 10pm ** Eden include() can now take multiple filenames: eg 'include("one.e", "two.e");'. This should assist us with replacing our many 'run' UNIX shell scripts (of the form 'tkeden stuff.e blurb.s') with 'run.e' Eden scripts (of the form 'include("stuff.e", "blurb.s");'). "multiplePossible" trivial Windows bug introduced in 1.15 fixed. File menu now has File -> Open and File -> Execute, as the meaning of Include was a little unclear (although it is technically correct, referring to the Eden function). Changed file types used: now using .eden, .donald, .scout, .sasami and .script. The single character file-types were inadequate in many ways (we now have >1 notation as a candidate for .s, .s is also used for assembler files etc). '.script' is intended to be used for the circumstance where a text file contains a script which uses mixed notations: Eden and Donald, for instance. Hopefully this won't cause problems with Windows 8.3 filename limitations. Adjusted keys.txt slightly - moved previous / next up as they are quite a common need. Eden's IPC functions (send_msg...) are now an optional compile (enable with ./configure --enable-ipc) as I can't get them to compile on Linux. Rewrote Eden gets() function to actually use fgets() as use of gets() results in the compiler warning "the `gets' function is dangerous and should not be used." Reworked the curses stuff a bit to make it compile on Solaris and Linux more easily. Rethought the declaration of the 'rand' function to make it compile on Solaris and Linux more easily. Also 'srand'. Sasami had some source files where the end of the file was missing a newline - the compiler on Linux warns about this, so corrected. (Probably) fixed a bug where Tcl would give 'invalid command name "tcl_wordBreakAfter"' when clicking in the input window after an error. This was introduced in the previous version when the Windows distribution was optimised to fit onto a floppy disk, missing out the file tcl8.0/word.tcl. Previously, the Scout 'integer' type was actually stored internally as a double and passed to Eden as a floating point number. This caused problems in the jugs model as the value was then passed to an Eden function which expected an integer type. Scout now holds 'integer' values as integer, and attempting to define a non-integer Scout value will result in "failed assertion" error at runtime. Previously redefining the type of a variable in Scout would cause a segmentation fault and a crash. It seems that 'extern char *scoutErrorStr' and 'extern char scoutErrorStr[]' are not equivalent and this is where the problem stems from (the area of memory designated for the error message was in read-only memory). So now Scout gives a nicer error message and doesn't crash. ** 1.15 [Ashley] Mon Jun 25 2001 ** Ancient history added to this file. Improved window creation on Windows: hopefully they should mostly be created on top now. Fixed bug in View Eden Definitions that caused some agents not to be displayed (bug due to me forgetting that malloc doesn't zero memory). Now specifying font for input window as courier - so we get fixed width characters on Windows. Tcl_Init was falling over with "couldn't stat "": no such file or directory" - fixed by inserting a call to Tcl_FindExecutable in main.c Changed many #include <...> to #include "..." to denote that they are not system header files. Removed -I., -I.. and -I../Eden from CC Make rule, so the location of all header files should now be explicitly stated. Ported the new Sasami implementation (using Togl) back onto Windows. Changed right mouse button being used to button 3 so it works on Windows (this will cause the button used to be changed on UNIX). now deiconifies and raises windows that were iconified (eg minimised on the Windows taskbar) Changed method of specifying ~/.tkeden-history, meaning this should now work on Windows (but assuming the $HOME variable is set...). Auto-detecting where the Eden library files and Tcl init files (ie the setting of the TCL_LIBRARY environment variable) are from the current working directory on Windows, meaning we can do away with needing the run.bat hack to start tkeden (which previously required some manual user configuration). Things even seem to work when we install into a directory with spaces in the path (eg "My Documents", "Program Files" etc), although I'd guess that not all models will handle this situation well. Updated the make windist implementation. DOS line feed versions of the text files are now created using a unix2dos.sh script I created, so that Windows users attempting to read the documentation with Notepad are not stuck. Previously we needed the binary cygpath to be installed along with tkeden, as we need the functionality to convert from UNIX style paths to Windows style paths in edenio.tcl. Now a new Tcl command cygwin_conv_to_full_win32_path is implemented which calls the CYGWIN DLL to give this functionality instead, so we no longer need the cygpath binary. Updated credits.txt to show libraries used. Rewritten some font and display handling functions (StringWidth, FontWidth, FontHeight, DisplayDepth) that were previously in C in Eden, using Tcl functions. Removed EX/disp.c and EX/disp.h as the functions are no longer needed. Fonts should now work on Windows as they do on UNIX (the jugs demo seems to work correctly, for example). The default Scout font is now specified in a platform- independent manner, and seems to be a good size on Windows at least. Note that now that the font handling is mainly Eden code, some dynamic configuration can be achieved - eg the value of DFfont can be changed (eg 'DFfont = "{courier 18}";') and the screen will update automatically etc. As the DOS tkeden stdout/stderr window now disappears as soon as tkeden exits, which gives the user very little time to view any error messages, tkeden now includes a signal handler which asks for the return key to be pressed in the window before the signal takes effect. This won't work in all potential cases, but it should do some. Reworked the menu bar in order to get the key shortcuts working correctly on Windows. Unfortunately the changes required mean it is no longer possible to show the Accept and Interrupt menu entries differently from the others. To solve this, Accept and Interrupt are now buttons in the radio buttons frame. Reworked the file save / open dialogs, using functionality that Tk provides. The result will look the same on Windows, but a better dialog will be provided on UNIX. Removed win32ex.c, win32ex.h as no longer needed. It is now possible to File -> Include multiple files simultaneously (but on Windows only - this has only recently been implemented in Tk 8.4a2 on UNIX). Use Control or Shift to select multiple files on Windows. Previously, File -> Include always inserted the text of the given file into the input window, and then into the history window when the accept button was pressed. This fills up the history rather quickly. Now we have File -> Open, which gives this behaviour, and File -> Include, which does an Eden include(...) to read the contents of the file into the tool without filling the history too much. Changed default value of undef_reference_notice to 0 as we have too many existing models which reference undefined values as they load. If you are debugging a model and suspect that problems may be being caused by undefined values, try setting undef_reference_notice=1; Checked: I've heard reports previously that running models with intensive continuous computation may cause the tkeden interface to have problems (eg allegedly it was difficult to do File -> Quit whilst the VCCS was running). I've checked this problem again now and it seems to have been fixed. Now cd'ing into the directory containing the file when doing File -> Open or File -> Include, which helps Eden include(...)'s in the model to work. Added code to main.c which makes the library location path an absolute path if it was specified as relative (by prepending the current working directory) to make the Help items work in this circumstance. Decided on size of 10 points for the edencode default font, which seems to give our customary size on UNIX (although it may be a little large on Windows). ** 1.14 [Ashley] Thu Jun 14 2001 ** Added Help -> CHANGELOG Merged Ben's Windows Changelog information into this file. Added Help -> Credits Fixed bug in errorf that caused Tcl errors (eg from Tcl_EvalEC) to come up with no information. Fixed sasami_viewport_bpp (I don't see how it could have worked before). Debugging facility getting still more functionality. Call the Eden function debug() with a sum from these values to set what you want to see: 1: various 2: RunSet debugging 4: Eden parser debugging (=yydebug) 8: Sasami 16: Donald 32: Scout parser debugging (=st_debug) Improved the input window text insert cursor: it is now coloured, bigger and the flashing is hopefully a bit better (it spends little time being off, meaning you shouldn't lose sight of it). Added Help -> Eden Quick Reference, with formatted (blue) "optional" syntax text. Added ellipsis (...) where appropriate on menu entries to show that they lead to dialogue boxes... Added a -e argument, which enables the passing of some code to execute from the command line. Any occurrances of \n are translated to newline characters (as the shell passes them literally) before execution of the string, to enable notations to be switched etc. Examples of use: tkeden one.e -e "writeln(1);" two.e tkeden -e "%sasami\nopen_display" Note this might cause problems if you actually want to use a \n as you normally would (eg in an Eden writeln). Fixed some bugs in command line handling (I think -n, -i would not have worked on ttyeden in combination with files since I changed option handling to use getopt...). Figured out how to work around a bug which causes Sasami to use false colours on a Solaris machine with a cheap graphics card. There is a bug somewhere (Sasami, Togl, Tk, X, OpenGL?) which causes Eden to use the wrong visual and colormap when running using Solaris 8 X and OpenGL on a machine with an 8-bit (old, low end) graphics card. The easiest way to solve this problem currently seems to be to link Eden using Mesa (which is most simply described as an open-source OpenGL)... so I've added the necessary tests and options to configure to allow Mesa to be used instead of the Solaris OpenGL. Sasami seems to work now even on an XDM terminal (albeit extremely slowwwly). ** 1.13 [Ashley] Mon Jun 4 2001 ** Attempting to add a 'procmacro' feature, similar to 'proc' but with a screen update and user input phase (ie tcl "update") - basically, a call to eager() between each statement as they are executed. Eden procs appear to have two optimisations compared to entering statements line by line in the input window: screen update is delayed during RunSet evaluation, and the formula queue is not updated unless it is necessary (eg writeln on a changed variable). This optimisation is useful and necessary as we quite often want state change to be indivisible. 'procmacro' was named thus due to the existing definition of a procedure named 'macro', which does string substitution and is used by Donald and some of the older models I should think. Defined YYERROR_VERBOSE to get more information during parse errors. Added errorf function which operates like printf. This has allowed me to improve many of the error messages, giving extra detail of the problem (typically, I'm printing out the value that causes a problem and what was expected). Added information to the UNDEF (@) Datum which allows me to give an error message stating /which/ func/proc/procmacro could not be found in that event. Made Eden use bison.simple, meaning we should get more helpful parse error messages and possibly fairer input input / calculation balance. Added to debug() functionality - it now controls yydebug as well. Now giving decent location information on errors, in the form: error blah while blah near line x, char x: original line ^ (char indicator) Added %expect definitions to parsers to prevent shift/reduce conflict errors on parsing expect when the number of conflicts changes. Added an Update button to the View Eden Definitions window which rebuilds using the options that the user chose last time (avoiding having to select them again using the View Options window). Fixed a bug which shows when a triggered action combined with an internal formula redefinition use the same triggers, eg proc xx : b { a is b+1; }. In this example, b was previously given the trigger [xx] when it should really be given [xx, a]. The lack of triggering means that the definitions involved suffered from lack of reevaluation and their value could get out of date. Credit is due to Carlos Fischer who created clear test cases that showed this problem. Fixed a bug which occurred when the frame overflowed. For example proc p { p(); }; p(); would give an error with "called by action ^A^CX" or even seg fault. Now not attempting to print out nonsense frame information. Improved information (giving type of item called) given in this error message as well. Internal documentation improved a lot whereever I can. C-lib real-valued functions (eg sin, cos, pow...) used to give strange results when called with non-real parameters. All of these functions seem to require real-valued parameters, so Eden now gives an informative error message when the wrong type is encountered. Put more information into the int-valued C-lib error message as well. Fixed a bug involving use of query which would in some circumstances cause a seg fault. Eg proc p { para q; ?q; }; p(42);. Changed query operator. When it encountered values, previously it would simply display them: 4:> a=42; 5:> ?a; 42 a ~> []; Now the query operator prints "a=42" for consistency with its other outputs. It also now prints out the identity of the agent who changed the symbol last. Improving debug() output a lot. Categorising each output: CALSTK call stack (changes call stack) SYMTBL symbol table modification DEFNET definition network (changes definition network structure in SYMTBL) VMREAD reads data from prog array VMWRIT writes data to prog array VMEXEC virtual machine execute change progp DATSTK data stack operation MCSTAT use of other machine state HEAPAL involves some heap allocation VMOPER virtual machine op (in inst.h + probably invoked via func ptr deref) FQUEUE formula queue AQUEUE action queue PARSER parser use | (bitwise OR) to form combinations, in the order that it occurs procedurally. Added a disassembler function disAss and using this in execute and other places to display the symbolic name of the opcode about to be executed etc. Rewrote push and pop as functions for DEBUG, which will slow performance in DEBUG mode but lets me print out valuable stack debugging information. Added a notice if you attempt to get the value of a variable which is actually undefined (this should be useful as people frequently mis-type variable names, I'm told!). You can turn this on and off with using the variable undef_reference_notice - required as this isn't an error and can be intended behaviour in some models. The default is for these warnings to be on - might need to reconsider this later. Added a Next item to the Edit menu. Now have Previous / Next. The input window now stores ten previous items entered and you can cycle through them with Edit -> Previous and Next. As well as the Alt-E, [r|n] shortcuts for these (can't use Alt-E, p as this might be used in the future for paste), I've implemented Control-Alt-[up|down]: use the cursor keys. Had to use the two modifiers together as CDE uses Alt-[up|down] and Tcl seems to give a simple up/down through the text with Control-[up|down]. Also added Control-Alt-0 key shortcut for clear for completeness. The key shortcuts are marked in the Edit menu. Also added Meta- shortcuts for those with meta keys. Changed Accept into a raised button, to show it is different to File etc which are menus. Giving current value in a comment for formula on ? query to save people having to writeln formulae to get values as well as ? query to find the definition. Previously tkeden beeped every time an error occurred. If you were unlucky and got a series of errors or even a loop, you had an embarrassing stream of beeps. Now tkeden only beeps if it hasn't beeped in the last three seconds. Scout screen window does not now appear when tkeden is initially started (it always used to previously, usually causing the input window to be obscured). The screen window is created on the first occurrance of '%scout', when we can assume that the window is going to be used. Made the default input window a bit bigger. Made tabs in the input window the width of two characters to try and help people format their code there more easily. Control-U in the input window now deletes any text to the left of the cursor on the current line (as per many UNIX shells etc) - an easy way to quickly undo something you just typed which was wrong. Added a few more items to the Edit menu: Select all, Select non, Copy, Cut, Paste. The title of all windows created by tkeden now include the tkeden version number, and for dtkeden, whether dtkeden is running in server or client mode. This should help to identify whether the history window that has just popped up in dtkeden is from the server or the client. Now when you attempt to close the History window, Eden definitions etc using the window manager (clicking on the window's close box), it works. (Hopefully including windows created by scout here). Added help to the Eden Redefinitions window which reminds us that control-click can be used to select individual items. Now, if Shift-Control-Tab is pressed in any tkeden (input window, View Definitions, scout windows...), all the tkeden windows are brought to the top, with the Input window top-most. This should help with window management when there are many windows on the screen. Additions to Eden built-ins specifying behaviour now changed to eden_error_index_range and eden_notice_undef_reference - more sensible and hopefully avoids most clashes with user code. Made it possible to do related by statements with a LHS that is evaluated at run-time, eg r="c";`r`~>[q]; Fixed a bug which prevented the use of related by statements within procs eg proc q : w { a ~> [q]; } (before, note that ?q would have shown the lack of identification of the w trigger). Removed some code added by Patrick to yacc.y 1.8 (Rel1.0) which looks like it was attempting to fix the problem of referential dependency. It actually makes this problem (if indeed it was attempting to fix it) worse. Moved Edit menu next to File menu (so order is now File, Edit, View...) Added source code Makefile dependency checking, using the preprocessor options to get this information. Enable with --enable-depend to ./configure: see INSTALL.TXT. Made dtkeden View -> Client connections window consistent with the other View windows in the interface. Also, the dtkeden client Send button is now raised, whereas on the server it is normal, in an attempt to show whether the button is a menu heading or an action button. Improved usage information (-u) for dtkeden. Made Tcl aware if Sasami is available or not, and hide the relevant options if it is not. Added radio buttons above the tkeden prompt which emphasise the currently selected notation (ie which interpreter we are talking to) and which can be used to set the currently selected notation without needing to type %donald etc at the top of the input text. Gave the text input window a white background to make the interface look less mono coloured and to make text there more readable, both on the screen and in printed screen shots. Added a Help -> About key shortcuts dialogue giving lots of information about possible key presses in the input window and elsewhere. Ported Sasami to UNIX. Replaced Ben's Windows-specific Sasami window-creation code - using an implementation of an OpenGL Tk widget named Togl (http://togl.sourceforge.net/ - had to get the most recent development version from SourceForge CVS) instead. Sasami also uses GLpng for loading PNG images as texture maps (http://www.wyatt100.freeserve.co.uk/download.htm) - luckily this compiles OK on Solaris. Now the Sasami window creation code is mainly Tcl/Tk, in edenio.tcl. The mouse movement code is also now in Tcl. Sasami errors now use the Eden (not Windows) facilities. These changes should allow portability of Sasami across UNIX / PC / Mac (in the future) and should allow extensions: 1) feedback of which polygons the mouse is currently positioned over to Eden, 2) wrapping of (multiple?) Sasami windows in Scout. Sasami is now always included in tkeden, unless you specify not using a configure option. The Sasami window now seems to be resizable (I assume Tcl is passing events through to the togl widget), so if a model is running slowly on your particular machine, you can make the window smaller. Now when Eden changes some Sasami state, the renderer is not immediately invoked - rendering is delayed until the next Tcl update (until a change of RunSet) and so rendering a change to the Rubiks cube etc is now much, much faster. I've changed the default camera position too, to be further away from the origin as most models seem to be quite large. LICENSE files added to Docs for Togl, GLpng. Major re-implementation of the Makefiles as the make 'include' directive seems to be fairly globally available, so all the Makefiles now include ../generic.mk. Control-C now just causes the error message to occur on stderr, as the reentrant call into Tcl when interrupted in Sasami causes Tcl to crash. Also now using a timer (like the beep timer) for control-c: previously, control-c could only be pressed once during a session - the second interrupt killed tkeden. Now tkeden can be killed by interrupting twice within three seconds - if the interval is longer than three seconds, the warning message appears again. main.c: checkRunSet unified multiple TTYEDEN, DISTRIB etc versions into one piece of code. Run time behaviour of the versions may change slightly as a result - hopefully for the better. Pressing the interrupt button now gives a visual indication of the press. The VMEXEC machine now stops executing if the interrupt button was pressed (so it should be easier to stop tkeden if it is stuck in a tight loop). Wrote a Tcl_EvalEC function to evaluate Tcl code and do an error check on the result. Actually uses Tcl_EvalEx which should speed things up slightly. Bug fixed: definition of a TEXTBOX in Scout would show up as UNKNOWN in the View Scout window and in a Scout query ? operation. Added 'bitand' and 'bitor' infix operators to Eden: same syntax as the eager 'and' and 'or' operators, but they give the bitwise result. Added sensitive: ENTER and sensitive: LEAVE functionality for Chris. OFF, ON, MOTION, ENTER and LEAVE are now pre-defined Scout symbols: combine them by adding, eg: 'sensitive: ON + ENTER'. ** 1.12 [Ashley] ** Fixed a bug with back-ticks ``. A change that Patrick introduced made back-ticks evaluate at first definition, even if autocalc was off, causing possible undefined function errors etc (unfortunate as the View Eden Definitions etc show definitions first, then functions). Also the code had a confusing and unnecessary * pointer dereference - fixed. Got Tcl to sort the list given in File -> Include (finally). Added index_range_error Eden integer value. It works in a similar way to `autocalc'. If the value is 1 (as it is by default), then Eden's behaviour is as previously: it gives an error "index error: out of range" when asked to evaluate a reference into a string or list which is out of range. Setting index_range_error to 0 causes Eden to simply return @ and give no error instead. Added an Edit menu with Previous and Clear options. Added key short cuts for windows opened with OpenDisplay (so you can now remove the annoying default scout window using the keyboard only if you don't want it). Now keeping three backups of ~/.tkeden-history (as people don't seem to look at this file after a crash until they've restarted tkeden a few times). ** 1.11 [Ashley] ** Added GPL license and changed existing CHANGES.TXT to add this Removed 'doubling stack allocation' experiment which never should have really found it's way into a release 'cos it didn't work. Added changes required to tkeden/Makefile.in and configure.in in order to be able to build on my Sparc 2 at home (Solaris 7 + some GNU things). Improved build documentation - removed very outdated INSTALL document, replaced with a document describing requirements and build process. ** 1.10 [Ashley] Wed Nov 15 16:40:41 GMT 2000 ** About to create a tarball for import into SourceForge. Will leave the RCS information around in the hope that they can import it into CVS, but remove all generated files and also the stuff in the Windows dir that isn't part of Eden source. Also it looks like it is difficult to rename directories etc in CVS so lib-tkeden1.9 will become lib-tkeden. Reworked this CHANGE.LOG into reverse chronological order. ** 1.9 [Ashley] Wednesday October 11 17:55:40 BST 2000 ** Minor changes to documentation in Windows/run.bat and TODO Had been experimenting to try and get something like cat - | arca.trans | tkeden to work (ie tkeden reads commands from stdin whilst running all other stuff simultaneously). Ran into problems with buffering in pipes, so the kbhit() function I added is now ifdef'd out. ** 1.8 [Ashley] Sunday September 3 21:49:19 BST 2000 ** Added comment to scout.init.e about using Tcl to do trivial ImageScale-ing. Copied $PUBLIC/lib/tkeden/nArca.init.e into the lib directory as arca.lib, and added revision control header as arca seems to be considered more "mainstream" than I thought. Sorted out Docs/TODO a lot. windist target strips the executable now - this makes it all fit onto one floppy :) ** 1.7 [Ashley] Thursday August 31 18:57:44 BST 2000 ** Found a copy of config.guess and config.sub from /dcs/rap/mp3/cdparanoia/cdparanoia-III-alpha9.7/ as the GNU CVS site is down. This seems to be required now that locally, autoconf seems to have been "upgraded" to 2.14a (and the older version has been removed). Directory structure cleaned up a little: Docs and Windows subdirectories introduced, README.TXT in the main directory. (Rel1.7 released, but again in a minute) config.sub wasn't recent enough to work on Cygwin. Found more recent copies in /package/gap4r2/cnf. Copied some of Ben C's support files into the Windows subdirectory... Glpng etc. Fixing bugs to do with configur-ating Sasami Merging in Ben C's changes to the Tcl code Put some of the info from Ben C's Readme into the Windows directory. (Rel1.7 released, but again in a minute) Added a windist target to the main Makefile and wrote a run.bat script that detects whether tkeden is in the current directory or not. Added more directories to the setrcsstate target in main Makefile.in Removed guessLibLocation as it just doesn't work in too many circumstances. We'll have to rely on wrapper scripts etc using the -l argument. Merged in changes from BenC's Sasami version 0.6 (previously I had his version 0.3, and I'd simply left out all of the actual Sasami notation, just keeping the changes necessary to get tkeden to run on Windows. It now looks like Sasami will be considered a "standard" part of tkeden (a nicer solution would be a plug-in style thing, but we don't have the time to do this), and so I've made it optionally compiled when WANT_SASAMI is defined. Sasami only works on Windoz at present). Windows version 0.4 -> 0.6 changes: --Win32-V0.4---------------------------------------------------------------- Added support for materials (which gives full control over lighting parameters and texturing) through the "material" object type. Linked in the glPNG library for loading PNG files as textures. This means that Sasami now needs the glPNG libraries compiled and installed to compile correctly. glPNG can be found in the Sasami distribution (hopefully) or at http://www.wyatt100.freeserve.co.uk/download.htm . Commented out the glBindTexture/glGenTextures calls in glpng.c to avoid needing to link it with the non-existant OpenGL 1.1 library for CygWin. (note : this hack is no longer needed - see below) Added texture-mapping support, with auto-generation of texture co-ordinates if they aren't provided, and support for using texture binding to prevent texture-thrashing. Built the "Rubik's cube" example script. Increased the default ambient lighting a bit so objects no longer appear 100% black when not facing the light source. Built a new libopengl32.a based on MSVCs one, which includes the 1.1 functions - most notably glGenTextures and glBindTexture, which are used by the texture-mapping code. This fixes the problems with OpenGL implementations which don't export these via wglGetProcAddress (such as the MS and SGI software implementations), and means that a custom build of glPNG is no longer required. Packaged up the Sasami examples in a slightly more convienient directory. First "public" release version --Win32-V0.5---------------------------------------------------------------- Rewrote the Sasami parser to cope with variable number of parameters in notations, and altered various functions to take advantage of this - mainly by allowing multiple vertices/polys/etc to be specified in one call. Added commas to the list of things the parser considers seperators, allowing for scripts to use (easier to read in some circumstances) comma seperated notation. Fixed a stupid bug where the whole parsed string was converted to lowercase, including variable names - effectively preventing Sasami from reading Eden variables whose names contained uppercase characters! Fixed a *very* nasty bug where texture loading and rendering could take place before OpenGL was initialised, resulting in an instant crash...! Implemented a parser for Lightwave format .OBJ and .MTL files, converting them to Sasami code on-the-fly (and hence into Sasami objects). Reenginnered billiards model to give a 3D display. --Win32-V0.6---------------------------------------------------------------- Added better Windows message handling - Sasami now responds correctly to window actions when Eden is blocking the main thread (eg : "while (1) eager();"). Built animation sample (animate.s) to demonstation time-delta-based animation loops. Fixed a bug that caused textures to be lost when the viewport was resized. Added support for user-definable lighting. Fixed user-definable lighting to work properly, and added sa_r_maxlights to reflect the number of OpenGL-accelerated lights available. Finished up support for alpha-transparency, and wrote glass.s sample to demonstrate it. Altered default lighting so that models are reasonably evenly lit. Altered "load_obj" command so that by default it only loads the object and material definations as Eden declarations, and added "load_full_obj" command which loads everything (the previous behaviour). Fixed a stupid glFrustrum typo that was causing the far clip plane to be ridiculously close, and objects to appear to be microscopic in size (perspective-wise)! Fixed a bug in the OBJ loader that prevented objects with co-ordinates specified with exponents from being loaded correctly. Edited animate.s sample to use todo() instead of eager() so that it doesn't block Eden from executing user input. Added visible flag to objects. ** 1.6 [Ashley] Monday April 3 20:18:06 BST 2000 Rel1.6: onto new Dell PC, Windoz again, with merged in changes (and again a few mins later) And into $PUBLIC/bin ** Fixed silly bug in Scout/Makefile.in that caused Scout to fail to recover from parse errors. (bug15) Increased size of a buffer that was being overwritten by Patrick's code (bug16) in the SIT! model. Fixes made on the new PC for Windoz: o -X11 doesn't work on Windoz: need -lGDI32 -lUSER32 -lCOMDLG32 -lOPENGL32 -lKERNEL32 instead o Eden/main.c libgen.h not on Windoz. dirname does not exist. Commented out - will have to manually provide the location with -l. o Misc/custom.h needs the __WIN32__ declaration o EX/disp.c different fontHeight etc required on Windoz - replaced Ben's nominal values libLocation error message added if not set. winportextras files (.dlls, run.bat etc) added to the distribution. ** 1.5 [Ashley] Thursday March 23 16:18:11 GMT 2000 Rel1.5: onto new Dell PC, Windoz ** tkeden prompt changed to show the current VA. Installed at DCS. Version number not updated. bug10 (railway accident server seg fault) fixed in my copy scout.init.e updated: Tcl bound events now all redefine symbols with a "~" prepended in an attempt to avoid problems with the current VA setting. Need to update DCS copy bug11 (timetable @ screen seg fault) fixed in my copy Added a new function, symboltext() for Chris. Need to document. Attempted to make stack resize dynamically. Fixed readline prompt problem by making readline print the prompt (previously it was done by Eden and would fail to be reprinted for example on a Ctrl-U). ** 1.4 [Ashley] Fri Jan 14 15:27:40 GMT 2000 Rel1.4: into $PUBLIC ** o A copyright notice in the about dialogue o Get rid of HOSTNAME env variable o Change use of CHAR to something else to prevent clashes with Windoz header files (says Ben) o `@` now gives @, not an "expecting string" error. o Get ttyeden to use GNU readline to enable decent editing. o Merged in Ben's changes, as follows: You need to set up the PUBLIC variable with something like "export PUBLIC=/programs/eden". Also, set TCL_LIBRARY=/cygwin/cygwin-b20/share/tcl8.0. --Win32-V0.1---------------------------------------------------------------- Modified : configure makefile.in eden\builtin.c eden\eden.h ex\disp.c ex\disp.h misc\customlib.h donald\tree.h Initial Win32 port. Not much works! --Win32-V0.2----------------------------------------------------------------- Modified : tkeden\configure tkeden\ex\disp.c tkeden\ex\ex.c tkeden\version.h lib\tkeden\edenio.tcl tkeden\ex\win32ex.c tkeden\ex\win32ex.h tkeden\ex\makefile.in Implemented "hacked" versions of FontWidth & FontHeight. Altered configure script to link in Windows GDI functions. Implemented native DisplayDepth() function. Implemented slightly dodgy version of StringWidth. RoomViewer now works (FontWidth/FontHeight problems), albeit with misaligned text. Added Win32 version numbering to version.h. Added Win32 version number message to Help->About window. Removed the focus-follows-mouse flag when running on Windows, as this is not normal Windows behaviour and will only confuse/annoy users! Added win32ex files to EX to hold Windows GUI functions. Rewrote the File->Include code to use a standard Windows dialog. Rewrote the File->Save code to use a standard Windows dialog. --Win32-V0.3----------------------------------------------------------------- Modified : tkeden\version.h tkeden\ex\parser.c tkeden\eden\notation.h tkeden\ex\lex.c tkeden\ex\script.c tkeden\sasami\* tkeden\makefile.in tkeden\configure tkeden\* , pretty much! :-( Added hooks to allow Sasami code to be entered and parsed. Created modified lexer/parser based on Donald code. Dumped Donald lexer/parser as it's way too complex. Wrote parser for Sasami code. Added Sasami OpenGL rendering code. Added Sasami functions to builtin.c for reading back changes to data. Sasami vertex rendering now works. Fixed up some structural bugs and implemented polygon rendering. Added auto-normal generation so OpenGL lighting works. Fixed crash-on-shutdown bug due to not destroying WGL context correctly. Fixed support for comments in Sasami Added object handling code, and modelview matrix logic for objects Moved variables like background colour to be "true" Eden variables rather than function calls. Fixed lazy-creation of certain objects causing crashes if the object was used before any parameters set. Added "`" notation for passing code to Eden. Added the ability to change viewport resolution from Eden, and to toggle the axes indicators. Created a simple morphing object demo. ** 1.3 [Ashley] Mon Nov 8 21:54:31 GMT 1999 Rel1.3: to take home with me! ** o Investigated with tcl/tk 8.2.0 (was previously using tcl/tk 8.0). Fixed environment variable handling. Now OK. o Makefile should mark lib files with version number o configure: don't stop compilation if we don't have tcl/tk o Error message "unexpected end-of-file in chararcter constant" !! ** 1.2 [Ashley] Wed Nov 3 16:16:12 GMT 1999 Rel1.2: bug fixes to 1.1. Ooops - didn't mean to increment the version no. ** o Bug fix: myttyeden, s=0;s=1l; - seg fault. Not in ttyeden Investigated, and found only in wierd set of circumstances - ignore. o Error message "type clash: expectingint" !! o Error message "no such variable ash ...called by" o Error message "func/proc needed ...while executing" o bug7 at ITS Same as above - found it happened lots at ITS. Worked around. ** 1.1 [Ashley] Wed Nov 3 13:51:59 GMT 1999 Rel1.1: installed at ITS under ~cssbz for CS233 experiments with Eddi ** o $PUBLIC. Could eliminate by using dirname(argv[0]) or similar. However, Eden support code uses it. Could rewrite Eden support code, but other Eden code might assume it. Perhaps could detect with this procedure, then set the variable once the tkeden process has started. However - this looses us flexibility - cannot set PUBLIC to somewhere else deliberately. Perhaps could allow an override with a command line option. Would this solve more problems than it causes (esp wrt the Windoz port?). Perhaps change to EM_PUBLIC whilst about it. Or set EM_PUBLIC in a wrapper around tkeden etc... then users don't need to keep modifying their setup. Or maybe EM_LIB would be more appropriate. Wrapper script should set the variable if it is not already set to allow overriding. Or perhaps lib files should be in a subdirectory of dirname, including the tkeden version number to allow installation of multiple versions. o Provide a way to override the library files detection result o Rewrote emalloc etc as macros and other stuff to enable dmalloc to give sensible reports o Fix the Scout memory leak that Simon found: bug5 o Redid COPYING file. Couldn't reproduce: o Fix the Tcl bug that Simon found: OXO demo "Tcl errors occur when you shut the model down with the clock (animation) still running." o Copy and paste problems on UNIX. A Tcl problem. Don't move the mouse whilst you click the middle button. ** 1.0 [Ashley] Fri Oct 8 20:13:02 1999 (about) Rel1.0: to Ben Carter for OpenGL expts ** o These changes made by Ashley Ward. o Throw away Imake stuff, start again with autoconf. o Merge in Patrick's dtkeden changes o Put unused code in Attic. Also their RCS files o Fix ttyeden on Linux (rethink linking to curses?) o Remove -R and -ldl from linking on Linux. Also need -I/usr/include/ncurses. Also need -lncurses, not -lcurses o Move Attic directories into one directory, possibly out of the source distribution o Fix curses stuff - try with ncurses_g? o Check through error messages etc output from tkeden - fix for good English :) o Check for PUBLIC being set - if unset, crashes with seg fault on ARML. o Check what happens when DISPLAY is not set or xhost problem - falls over nicely? o "...near line " could do with some more description of the line. o Compile with optimisation (gcc -O2, cc -xO2 + change the number) o Move Imakefiles into Attic o Remove unnecessary gunk from start of Makefile.ins - install eg o Can ttyeden do donald and scout? If not, remove the code from the link... o Remove UNIX command dependencies: 'ls' in file handling o dtkeden has a new TEXTBOX functionality - document! o Need a dynamic buf in type.c, t_str to prevent overflow and Seg fault when converting long lists to strings. o Do we have a Y2K problem, with the results from gettime(), time(), ftime()? o Eden gettime() uses C-lib time() and C-lib localtime(), the year result of which is years since 1900. So applications, currently receiving the number 99, will receive the number 100 next year. So OK. o Eden time() is basically a call to C-lib time(), so OK. o Eden ftime() is basically a call to C-lib gettimeofday(), so OK. o A -v option to show the current version (of tk and tty eden) o Help -> About Tkeden to show version number. Perhaps also print it on stdout when started up. (no!). Perhaps also show $tcl_version. o Remove RCS Log header o Make sure all the code has a static RCS Id header so we can use strings on the executable. o Move lib/bison into the source directory. Remove the sym links. o Fixed the Segmentation fault found when running the dtkeden railway demo o Tcl error messages seem to be swallowed and replaced with less helpful ones. See especially the definition of tcl() - whereever that is... o Rewrote curses linkage to remove SunOS dependencies o Added a new hook: _tkeden_showxoutput = 1; shows xoutput tcl output And now some ancient history... ** September 3 1999 [Patrick Sun?] ** o tkeden.S and tkeden.C merged into one dtkeden version with a command argument -s(superagent)|-a(agent). o -h command argument added ** December 15 1997 [?] ** o Unknown changes ** December 9 1997 [Patrick Sun] ** o tkeden.S and tkeden.C (server and client) variants created by Patrick Sun, later to be called dtkeden, created from the tkeden source. o -c command argument added. o This version must be run on gem (as gem is hard-coded as the host). ** September 26 1997 [Richard Cartwright?] ** o Two versions of tkeden compiled for DCS, possibly by Richard Cartwright, it looks like one for 'sun5' (tkeden-sep2619972) and one other (tkeden-sep261997). ** October 28 1996 [Simon Yung?] ** o A version of tkeden compiled for DCS (by Simon Yung?). ** June 20 1996 [Simon Yung?] ** o A version of ttyeden compiled for DCS (by Simon Yung?) on SunOS? ** February 27 1996 [Simon Yung?] ** o Last RCS check-in made by Simon Yung? ** July 7 1995 [Simon Yung?] ** o First RCS check-in made by Simon Yung? EDEN-1.62/lib-tkeden-1.62/scout.eden0100644000177700001640000006153110251560574015557 0ustar empublicem/* * $Id: scout.eden,v 1.2 2002/07/10 19:33:21 cssbz Exp $ */ /**** * * * This file is the function library of the SCOUT system * * It contains definitions of attributes, EDEN version of * * some SCOUT functions, screen updating functions and * * its sub-functions and initialization procedures * * * ****/ /** Initialise EX **/ /* luckily these first two are the same as required by donald in donald.init.e. These must be the same values as are defined in the Scout namespace in Scout/lex.c (init_scout). Also define these in builtinf.h [Ash] */ OFF = 0; ON = 1; MOTION = 2; ENTER = 4; LEAVE = 8; CLIENT_LIST = []; /* declare a list for server end to list all connected clients */ DFfont = "{courier 10}"; DFscreen = "screen"; /* should not change this */ DFalign = 0; /* 0 - no, 1 - left, 2 - right, 3 - centre, 4 - left & right */ ##DFbgcolor = tcl(". cget -background"); ##DFbgcolor = "grey90"; ## the default Scout screen window background colour seemed good on ## Solaris, grey90 seemed good on Mac OS X, but now I think we need to ## set it explicitly to what it used to be in older versions of tkeden ## on Solaris (as some models will assume that the colour will be ## exactly this). This number determined by measurement from such ## versions. [Ash, 14 January 2004] DFbgcolor = "#859397"; DFfgcolor = "black"; DFbdcolor = "black"; DFborder = 0; DFrelief = "raise"; DFxmin = 0; DFymin = 0; DFxmax = 1000; DFymax = 1000; DFhighlight = 1; DFsensitive = OFF; DFwidth = 500; DFheight = 500; proc HandleDisplayResizeEvent { para widget, name, width, height; /* Ignore messages about child widgets */ if (widget == "." // name) { /* Don't redefine if the values haven't changed. This will cause "reference to undefined variable" notices if they are enabled the first time this is done. */ if ((`name//"_width"` != width) || (`name//"_height"` != height)) { execute("%scout\ninteger "//name//"_width="//str(width)// "; integer "//name//"_height="//str(height)//";"); } } } proc OpenDisplay { para name, width, height; if (name[1] >= 'A' && name[1] <= 'Z') name = "_"//name; tcl("toplevel ."//name//" -background "//DFbgcolor// " -width "//str(width)//" -height "//str(height)); tcl("wm protocol ."//name//" WM_DELETE_WINDOW { set show_"//name// " 0; show "//name//" 0;}"); tcl("wm title ."//name//" \""//name//" ($variantversion)\""); tcl("uplevel #0 {set show_"//name//" 1}"); /* the -underline here should really look through the other items in the * menu and find the first unique character to use as a key shortcut * [Ash], April 2001 */ tcl(".menu.show add checkbutton -label "//name// " -variable show_"//name//" -command {show "//name// " $show_"//name//"} -underline 1"); tcl("bind ."//name//" { " // "eden {~HandleDisplayResizeEvent(\"%W\", \""//name//"\", %w, %h);}" // " }"); HandleDisplayResizeEvent("."//name, name, width, height); execute("%scout\ndisplay ~" // name // ";\n%eden\n"); tcl("tkwait visibility ."//name); } proc DestroyDisplay { para name; if (name[1] >= 'A' && name[1] <= 'Z') name = "_"//name; tcl("destroy ."//name); tcl(".menu.show delete "//name); tcl("unset show_"//name); } func StringWidth { para win, font, string; if ((win == @) || (font == @) || (string == @)) return @; return int(tcl("font measure " // font // " -displayof ." // win // " " // "{" // string // "}")); } func FontWidth { para win, font; /* Measuring the width of the (wide) character 'W' */ return StringWidth(win, font, "W"); } func FontHeight { para win, font; return int(tcl("font metrics " // font // " -displayof ." // win // " -linespace")); } func DisplayDepth { para win; return int(tcl("winfo depth ." // win)); } /* This gets called when '%scout' is done for the first time */ proc scoutScreenInitOpen { OpenDisplay(DFscreen, DFwidth, DFheight); fontWidth is FontWidth(DFscreen, DFfont); fontHeight is FontHeight(DFscreen, DFfont); displayDepth is DisplayDepth(DFscreen); } /**** * SCOUT functions * ****/ func pt_add /* ( point, point) */ /* + (point addition) */ { return [$1[1] + $2[1], $1[2] + $2[2]]; } func pt_subtract /* ( point, point) */ /* - (point subtraction) */ { return [$1[1] - $2[1], $1[2] - $2[2]]; } func row { return $1 * fontHeight; } func column { return $1 * fontWidth; } proc update_row : fontHeight { touch(&row); } proc update_column : fontWidth { touch(&column); } func dotint /* ( list, int ) */ /* .1 (i.e. dotint(point, 1)) .2 (i.e. dotint(point, 2)) .type (i.e. dotint(window, 1)) .frame (i.e. dotint(window, 2)) .string (i.e. dotint(window, 3)) .box (i.e. dotint(window, 4)) .pict (i.e. dotint(window, 5)) .xmin (i.e. dotint(window, 6)) .ymin (i.e. dotint(window, 7)) .xmax (i.e. dotint(window, 8)) .ymax (i.e. dotint(window, 9)) .bg (i.e. dotint(window, 10)) .fg (i.e. dotint(window, 11)) .border (i.e. dotint(window, 12)) .align (i.e. dotint(window, 13)) .sensitive (i.e. dotint(window, 14)) .bordercolor (i.e. dotint(window, 15)) .font (i.e. dotint(window, 16)) .relief (i.e. dotint(window, 17)) .(int) (for frame and display) */ { return $1[int($2)]; } func dotne /* ( box ) */ /* .ne */ { return [$1[3], $1[2]]; } func dotnw /* ( box ) */ /* .nw */ { return [$1[1], $1[2]]; } func dotse /* ( box ) */ /* .se */ { return [$1[3], $1[4]]; } func dotsw /* ( box ) */ /* .sw */ { return [$1[1], $1[4]]; } func dotn /* ( box ) */ /* .n */ { return [($1[1] + $1[3]) / 2, $1[2]]; } func dote /* ( box ) */ /* .e */ { return [$1[3], ($1[2] + $1[4]) / 2]; } func dots /* ( box ) */ /* .s */ { return [($1[1] + $1[3]) / 2, $1[4]]; } func dotw /* ( box ) */ /* .w */ { return [$1[1], ($1[2] + $1[4]) / 2]; } func boxshift /* ( box, x, y ) */ { para box, x, y; return [box[1] + x, box[2] + y, box[3] + x, box[4] + y]; } func app /* ( list, position, element ) */ /* append (for both frame and display) */ { insert $1, int($2) + 1, $3; return $1; } func del /* ( list, position ) */ /* delete (for both frame and display) */ { delete $1, $2; return $1; } func list_append /* ( list, list ) */ /* & (for both frame and display) */ { return $1 // $2; } func formbox /* ( point, point ) */ /* constructor of box : < P1, P2 > */ { return [$1[1], $1[2], $2[1], $2[2]]; } proc update_textbox : column, row { touch(&textbox); } func textbox { return [$1[1], $1[2], $1[1] + column($3) + 1, $1[2] + row($2) - 1]; } func box_width /* ( box ) */ /* return the width of the box in pixel */ { return $1[3] - $1[1] + 1; } func box_height /* ( box ) */ /* return the height of the box in pixel */ { return $1[4] - $1[2] + 1; } func capacity /* ( box ) */ /* return [r, c], no of row and no of col the box can hold */ { return [($1[4] - $1[2] - 1) / fontHeight, ($1[3] - $1[1] - 1) / fontWidth]; } /*** * string manipulating functions * ***/ /* this doesn't seem to be used anywhere [Ash] */ func Quote { para s; auto ret, i; if (type(s) != "string") { return str(s); } ret = "\""; for (i = 1; i <= s#; i++) { switch (s[i]) { case '"': ret = ret // "\\\""; break; case '\\': ret = ret // "\\\\"; break; default: ret = ret // s[i]; break; } } return ret // "\""; } /** * image related functions * **/ /* return the height of an image */ func ImageHeight { return tcl("image height "//$1); } /* return the width of an image */ func ImageWidth { return tcl("image width "//$1); } /* read, name and return the image from file image format currently available are ppm and gif */ func ImageFile { para imageName, type, filename; xoutput("image create photo", imageName, "-format", type, "-file", filename); return imageName; } func isInteger { return ($1 == int($1)); } /* scale the srcImage, name and return the scaled image as imageName */ func ImageScale { para imageName, srcImage, xscale, yscale; auto subX, subY; xoutput("image create photo ", imageName); subX = 1 / float(xscale); subY = 1 / float(yscale); if ((xscale > 1) && (yscale > 1) && (isInteger(xscale)) && (isInteger(yscale))) { /* zoom can only handle positive integer non-zero amounts: see man -s n photo */ xoutput(imageName, "copy", srcImage, "-zoom", int(xscale), int(yscale)); } else if (isInteger(subX) && isInteger(subY)) { /* subsample can only handle integer amounts: see man -s n photo */ xoutput(imageName, "copy", srcImage, "-subsample", int(subX), int(subY)); } else { /* can't do requested scaling with Tk built-ins: use pnmscale external utility (not available on Windows) */ xoutput(srcImage, "write /tmp/1"//imageName, "-format ppm"); xoutput("exec pnmscale -xscale", xscale, "-yscale", yscale, "/tmp/1"//imageName, "> /tmp/2"//imageName); xoutput(imageName, "read /tmp/2"//imageName); xoutput("exec rm /tmp/1"//imageName, "/tmp/2"//imageName); } return imageName; } /* ImageSized produces an image where the longest edge is 'size' pixels */ func ImageSized { para imageName, type, filename, size; auto img1, h, w, scale; img1 = ImageFile(imageName, type, filename); h = int(ImageHeight(img1)); w = int(ImageWidth(img1)); /* preserve aspect ratio */ if (h > w) { scale = float(size) / h; } else { scale = float(size) / w; } return ImageScale("s" // img1, img1, scale, scale); } /* cut a rectangle out of the srcImage, name and return result as imageName */ func ImageCut { para imageName, srcImage, x, y, width, height; tcl("image create photo "//imageName); xoutput(srcImage, "write /tmp/1"//imageName); xoutput("exec pnmcut", x, y, width, height, "/tmp/1"//imageName, "> /tmp/2"//imageName); xoutput(imageName, "read /tmp/2"//imageName); xoutput("exec rm /tmp/1"//imageName, "/tmp/2"//imageName); return imageName; } /* create pattern using ppmpat */ /* ppmpat generates ascii PPM which cannot be recognised by Tk */ func ImagePat { para imageName, form, width, height; tcl("image create photo "//imageName); xoutput("exec ppmpat -"//form, width, height, "> /tmp/1"//imageName); xoutput(imageName, "read /tmp/1"//imageName); xoutput("exec rm /tmp/1"//imageName); return imageName; } /* procedure for displaying an image */ proc ShowImage { para I_source, source; auto command, i, width, height; for (i = 1; i <= (*source)#; i++) { command = "."//(*source)[i][1]//"."//(*source)[i][2]; width = int(tcl(command//" cget -width")); height = int(tcl(command//" cget -height")); xoutput(command, "create image", width / 2, height / 2, "-tags image -image", *I_source); } } / screen updating actions / func Position { para bd, width, just; auto x, j, anchor; switch (int(just)) { case 1: x = 0; j = "left"; anchor = "nw"; break; case 2: x = width; j = "right"; anchor = "ne"; break; case 3: x = width / 2; j = "center"; anchor = "n"; break; case 0: case 4: /* not supported by Tk */ default: x = 0; j = "left"; anchor = "nw"; break; } return str(int(bd + x))//" "//str(int(bd))//" -anchor "//anchor //" -justify "//j; } proc scout_show_2D /* display a DoNaLD/ARCA picture */ { para screen, winNo, boxName; /* writeln("scout_show_2D: ", $); */ scout_show_2D_window(`screen`[winNo], "."//screen//"."//boxName//"_1", boxName//"_1"); } proc dobinding { para sensitive, widget, windowName, tclVarNameStart, boxNumber; auto mouseName, keyName, mousePosName, mouseEnterName, mouseLeaveName, xCoord, yCoord, mouseClickName, mouseClickStuff; sensitive = int(sensitive); /* yuk - integerhonest hack [Ash] */ if (boxNumber > 0) { /* TEXT - have the boxNumber within the frame to deal with */ mouseName = "~"//windowName//"_mouse_"//str(boxNumber); keyName = "~"//windowName//"_key_"//str(boxNumber); mousePosName = "~"//windowName//"_mousePos_"//str(boxNumber); mouseEnterName = "~"//windowName//"_mouseEnter_"//str(boxNumber); mouseLeaveName = "~"//windowName//"_mouseLeave_"//str(boxNumber); mouseClickName = "~"//windowName//"_mouseClick"; xCoord = "%x"; yCoord = "%y"; } else { /* not TEXT - no boxNumber but must correct for window coordinate system */ mouseName = "~"//windowName//"_mouse"; keyName = "~"//windowName//"_key"; mousePosName = "~"//windowName//"_mousePos"; mouseEnterName = "~"//windowName//"_mouseEnter"; mouseLeaveName = "~"//windowName//"_mouseLeave"; mouseClickName = "~"//windowName//"_mouseClick"; xCoord = "[expr (%x-${"//tclVarNameStart//"_xOrigin})/${"//tclVarNameStart//"_xScale}]"; yCoord = "[expr (%y-${"//tclVarNameStart//"_yOrigin})/${"//tclVarNameStart//"_yScale}]"; } if (sensitive bitand ON) { /* the window is interested in mouse actions and key strokes */ /* implement some old, deprecated features if required */ if (tkeden_vbfeatures == 1) { mouseClickStuff = mouseClickName // " = TRUE;\\n"; } else { mouseClickStuff = ""; } xoutput("bind", widget, "