jspmyadmin-devs Mailing List for jspMyAdmin
Brought to you by:
zsolyfree
You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(23) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2003 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: vijayalakshmi <vij...@gm...> - 2012-03-20 05:02:39
|
Hello, I want to have a GUI for mysql. I want to use it along with tomcat. Is that possible?? When i go into JSPMyAdmin, its asking for a username, password, server and post number. What should I give in all these?? Is there any proper documentation available for configuring and using JSPMyAdmin?? Also, can phpmyadmin be used with tomcat?? If so, how?? |
|
From: Chan H. G. <hg...@us...> - 2003-02-24 15:00:51
|
Update of /cvsroot/jspmyadmin/jspdbadmin In directory sc8-pr-cvs1:/tmp/cvs-serv25250 Log Message: Initial import. Status: Vendor Tag: vendor Release Tags: start No conflicts created by this import ***** Bogus filespec: - Imported sources |
|
From: Chan H. G. <hg...@si...> - 2003-02-17 23:09:27
|
Hi Mali, I would like to suggest a new module in the jspmyadmin cvs repository called "jspdbadmin". I think it will be good to create a separate module to manage new code as well as solve some of our problem with jspmyadmin, as well as to support multiple dbms. Hope you will approve this. Actually the reason why I joined jspmyadmin was because I am using it but I am not satisfied with it. That's why I am here, suggesting changes. I really hope I am not offending anyone. I know I am new in jspmyadmin. -- Regards, Hong Guan This e-mail is intended only for the named addressee(s) and may contain confidential and/or privileged information. If you are not the named addressee (or have received this e-mail in error), please notify the sender immediately and destroy this e-mail. The unauthorised use, disclosure, distribution or copying of the contents in this e-mail is strictly prohibited. |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:42:05
|
Update of /cvsroot/jspmyadmin/jspmyadmin In directory usw-pr-cvs1:/tmp/cvs-serv4127 Modified Files: ToDo Log Message: Changes Index: ToDo =================================================================== RCS file: /cvsroot/jspmyadmin/jspmyadmin/ToDo,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ToDo 26 Jul 2002 03:37:55 -0000 1.3 --- ToDo 26 Jul 2002 04:42:02 -0000 1.4 *************** *** 1,8 **** TO DO TASKS ----------- - Make the project build with Jakarta-ANT ! - Remove the .class files from CVS - Remove the JAR files from cvs ! - Make ant download task to download dependencies ! - Clean up and modularize the code ! - Make an API to some repeating tasks \ No newline at end of file --- 1,16 ---- TO DO TASKS ----------- + + ANT and Related: - Make the project build with Jakarta-ANT ! - Make "ant download" task to download JAR and other dependencies ! ! Code: ! - Clean up, Simplify and Modularize the code ! - Make an API to make easy repeating tasks ! - Use Log4J or something like that instead of System.out.println ! or FileWriter's ! ! Administration: - Remove the JAR files from cvs ! |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:12:16
|
Update of /cvsroot/jspmyadmin/jspmyadmin/images In directory usw-pr-cvs1:/tmp/cvs-serv31007/images Removed Files: bkg.gif browse.gif minus.gif plus.gif spacer.gif Log Message: I think this is the final change --- bkg.gif DELETED --- --- browse.gif DELETED --- --- minus.gif DELETED --- --- plus.gif DELETED --- --- spacer.gif DELETED --- |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:12:16
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web/images
In directory usw-pr-cvs1:/tmp/cvs-serv31007/web/images
Added Files:
bkg.gif browse.gif minus.gif plus.gif spacer.gif
Log Message:
I think this is the final change
--- NEW FILE: bkg.gif ---
GIF89a
Ä¢ñL*̦ó J§ÔªõÍj·Ü¡Çä²ùN«×ì¶û
ËçôºýÏë÷ü¾ÿ(hó5hx¨¸ÈØèø)9IYiy©¹ÉÙéùÉY:JZjzªºÊÚêú
+;K[k{ë'ËÛëû,<L\l|¬¼ÌÜì»û,=M]m}½ÍÝíý
.^]
--- NEW FILE: browse.gif ---
GIF89a
--- NEW FILE: minus.gif ---
GIF89a
--- NEW FILE: plus.gif ---
GIF89a
--- NEW FILE: spacer.gif ---
GIF89a
©Ëí£T
|
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:11:17
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web/images In directory usw-pr-cvs1:/tmp/cvs-serv30807/web/images Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/web/images added to the repository |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:08:08
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web/WEB-INF/lib
In directory usw-pr-cvs1:/tmp/cvs-serv30053/web/WEB-INF/lib
Added Files:
dbtags.jar i18n.jar jakarta-oro-2.0.jar mysql.jar regexp.jar
Log Message:
Some more changes
--- NEW FILE: dbtags.jar ---
PK
íí1Ú0ÿåÂdZN¬Òlo8ÊCäF¬ÐÌÞJ?ñª°ÌLx&4ÑßÖÖ$8^Ò°÷ee5X5ò
# PXøîGÒæO´¥LdÆ-rR´¸¯¤9³ª2£?è<g¿6¾·¸[¥-+ùX<¥-ÂAǯÀ¯æ ?©Ù]TÃBfìúòøp˪RÞW¢1ÒúÂ8A(ºäUZÖ~ù×'<v+¥oRçæCKºàèZ×¢L#¥ÇÎ`|¨*ûèäp$~`d7AUƪqkx¦JËeI<bÆÑVK1
Øâ³*bÆË0ÌKod nÂOCnIPrêDÕêøÇÅHàã#§)×50§AåR¸¸ ¥C¼Â7ãrá|ØAê|Jï`TVpcÁèÁþÞöÉ]>Ì9]rT
ÒÔsrNýàH§¡Êgè¨CXióBF};à)Þ´
Ì<.»3ômïEmï±½ùf1×8<EvôæAÂ-Çcc~íJK+yög°ß3reÞ0;¯ì`Û|m÷^ù&ÎÅ:méP¿H¾wñ
ÓÁ»ÑcÉãk]øªt*ò#6n¹B®T¯B±¾í)<uý<WPÏÊFÞ/XOÎ>4æ@
-x>Ïò"ÚGËïç):1"DbDÒâHÐçËÎ {kæ
g°àÊ4³.G7Ë϶£20öQËY9&'áÉ_>&ÑÁâh]cÏÇ"T'vöh32
]ô.ñIÜN/Hv@x)Õð>
Ú6ûÁ~ÇÓço¥¤
ßXá1ØZÝbödß_]Í5Y2NÆbÆ¿×&mÈS5ÛiC÷г,~Sf¥#ñAdÔÇÓÞb¡qÿÒGZ<£ý¤o ~ÖÐëLÂd|"÷+ö¯óxè;lÔ¼^IÁ3
~Yoö qô í-¡
¤ÛæXÉãæm/ÁåoÈëÝ9¼eö¤ý-
Mϳ9"Á{ïçæsª9Ôªèú®»¡C¨$ïÎÔ°ìse7õC`ñ¥\1ÆÃòûp
LáHUëWH~³ÒöBË|àN±Dãx-\@åVNÜ)ÕºñºZ44V<ZMÝ+]¥Û3ª0Á5¤uý¹ªXbåÒ
;з]'wtàRW%xH¦±vùü ¼·QN/é¹hê*«¼®Sèîè
ü´+±·³a ¶<RE5^±û^A`´a a¹Rê.£u%L¶ô笹Õ
ó®ÚÛ~´ÜkÐjqËâ#Ì<ó~³kº 'äÂÕ[³OêdºVJéâ³
BliÓL,Ø
¥&øL«êæÞyM¢§ËïG#ìªu8ßxôòñ*
0¡ÏéóSðfvï»[`Æ×!³ºo¦»_¡^hf~ìQÉðøv;d(ð¬¿ADØDôtÍî¡)§ùÊâ©Uã®?R
Â[·Ëèg¥u ®Ó¤}ÆÚÄâC41ûïÙiCþï^
Öé»ÇÀaƸ6ÀLw,©UÁÔThbàó»ma±%Ìa1ý P÷®yê7êû±Ó)!1,\1±óq²Ç¼øø
Ưâ#lA>+Ä]_^öÏÞÅ~o ¾è_õϯb_½ê_ÆËê*ã
XTï
«R¸Ü¡
pOà)na]PôX55|`_ÞTÁz¾ºFdʵäУ3J\îÆïãd®êÉÞ^(ÉÙJÍþ]Y\4·
;6ÄãûD
zzOACýç¾
ð÷è?A{éx0óF&>
4t«É>('Æô7ð9G8ÄTàvvÒ÷×?;XØÁÂ5oø?"ñPKÇkÞÃ
jìo!&!iÜ(ØJ"\Íneew§¤?o$ÑèðGÏìV ÷âÌì÷<ç=ùþãó7ñË<¨à¡G6æm,ØXt`ÁqPÂ$Õ*Æq×Ñ*æp¡¸ÖØgX]s{âLðPDoëDEÁFãz¡ñáõÌAË@Ý\;à©LÎB©y/=åZr yG/
Ã5û"QÂe+:©uySEJ?g°¶â®d¨mÅQ$}⨳Ýjè«"ùºâɤcjn7A,7öEø«á°ò'§Â?¦$T^Ê{]Ïçþeg~ÅvÜO|¹£ÁêèÔ/4]××2¿"rJÉ?'d(¨.Cݸm¦Âæo2ÃÂm30¬üK²=ÐȻܬ»êfý§qõ±J±2½9óÀÌs£X£?N+£µôøöÇìxb9K¾ÂÅj.À¦iÇ}
O0Bz`ÖúÒûâ
OjìFj«tJûü¸JR`À{pðmBtPÇ;:ß#ô.fð&k8C
ÍnÏWÿ PK½
¾
o=B1«ÎJ1úIâÖ&;& ̺§\Âʲüz¿X®¡ÅÇ(5\røÈIæï9¢ÑG<Ë0
g©3;5SäËöF+×mPKéÔM¾ÙpAwIJ#+Øî³ÒvL_¤ ²Óë
ê
ÐëµáE2£i+lcT·#19ÅHÐʱ éÝ©÷¦·êözm0Aú,SÃvÍGis©"z-gh¹8¨ÎOÌõeÖ>³àï;¿»¦Á°©m5d:ì(kîÁ½nQ<²ÑGúë(ýD[¦-l¢ËÝimÈFx»qb·eGµ¤Û¢K%ÁTt$>ÆòK´íD
e1W0}
|éQâî(¨1ãFÖ[=ä¦n·ì8Ïs m'$0ÍutÑÔIÝsÆ8Oç\:MMÜZ6Ä+AR^AUÜZiÆÉOY}f;n#ã¢pÈÔ!Ã/sxpiGYvlÚ°îÝ¥£°nSئ¸ÎÖG
+Zf`5Y)(8ÚGZóf¯0nYÒD&ÓÚRåñ¨ý¯·cýÛÚ=ë¼³)Ó£TÃë}uÊËÛO¥
=ÈÝÅü6´D¾÷¸Ã)XAïåΣ*sX+$׿·©eÃ\u´LÒN&-»°,HhÞáºó 3üRÚ-dI0aY¤
&[¿mr2+Å;UUÈ9ÕÖ:/XþP§t§( ¦²Y̦ZÚ^ÒÔ°¾&ONZëòA¶6HË
^"W:[ê¹Ê±r"d¹íf|0ðS¶K. Ï¢
§ºÇ(ÊÝmïÈ`ñÞ#=ÞÆº¨î¯«ØceÉÌ«Sh$EßÉ@·|1Nâ«9ÿàn¨Cõä´Òþ§ùMPÏð`£(çÈø½HQü/å8ÿ¹x«ñ
6²ìÇ«<çy@¯a¯cÞà½],o¿±þ»ð_ÏoóPß᱿¿à¿í-<ÿá%¼G>O³ç}¼ÈìC|*|¬LgÙO]a\Df<hOe&~H óÚ'¿1l!÷fòÞAäÆ=rÎó|ïºRù-¬
£þìØby]z["àÀ½ù
º?%IÀãTñ@>K/ô²´|3SÔ_ð¯Î<³¯ _c>+ov>)Âfo¥DÄ ¶µsbÈõî$â¥Eéô¤v)oYå¯ý±æbÝ@¬]e°~äaýÆ«±k7±n/uµÇ+Rõ±-u¿õ[¬¦R¬«ue¬ß{X¿óÇj.ÅzXÁzÔÃJºc´ÿPK(Ö
¾R°¨`IÁ×
J
î(XVpWÁ{
î+XU°¦BÅ
Nf0Th8¥b
å§K[æi4M§nCßvêsy×,§i
F9®Z»!!ùÈVà¡Yç¶qËýA %ÕºÀÙ|/S7y±iÑç^ë$9~DwóÿتYëáìsH_·;¼!*º5KàØm34+f`Ý/QîêünÕòBÛu£%Û±[ÛË_5+M:Mä]v÷åÔ:ndÊvÐSä·Âüö+¹U³¹nú¶äJ/\¿nYmXò<M»[µJÕ¨ºcU%¥QìLã£^y§ýǧZv[~ÕZ°%oêûßP¤·jî¼S¦ûã¶S»éT tývتAM×_6·©[aFiXdVLÐò²4í¥@FÚ¢ª±ªMQ¿ªþä9X}özÏ´ÚðÝãÚè÷uLö6l)ðX.®}*pæu¾.ó}a¤,·<ÏõÃ÷«\àt¿íNYʣˣȣ åQØGa¦b7¡À¥7¡À¯»zOJ%â[MHö7èÑQ¦5©×Tذ©¡Ðý¯õ)Ûä¼ y×râ÷/ßW¸ºN»à¨êOqT¿!û«|Ä÷ÿÀ=ñ*ßÀ5®´ÇôQ¿À4Ñ2Ò¢8~¦çÄ3{Ü.é¿"û²ºÞÆXo·ñ>)f¤µwÆhé(gÚxï)F_¦ÂëLo0IBÒßäÓ y-áLa{Dº(Àcr~ ÎtDà0&ð9æµ@ïø³kÛ>LÊ¡ðÙèäjRôr¨Ññvøku"Ý)ÅCÌ&Rätô6Ï<Çø
·>/0÷ÌÐî7ìȬÄï¢çFö^DH¡²úfdÕ¹l^ójß·¡®j]à\¡©¼Ø°Âèégà:"Çèzáÿ
YõùÎ>xôã:ÑTÑ«Ùêâ^Õö#ÇsCc%ǵW;v°fm4¸<uaÕ¼¦[ëlcÎüQG:}2ì=_òªVcÝ
É^,yAÝ´|«ºeKå
g#4·kU³ê¹®]f±35÷<ÊT¿ëµxK¶kjH¥,EÅkU{É:2wý È,Ä Õ¼E·Ö
Æ7·vÕÚaä·h«]"nØôUkѺu9¼,³e+ ²C=Izk]9ÔzúYM!ÏáßmÞn\ðýþ½]\ }V ëTßN}?Àù¾0RV¾ïQæ&8Óo¹d1bÏgécß3Æ£Å[^ÈÆ9S`Øï.]Æ>½¤vöB²a*w¶úd(òþk~ïLòVÞмl9JqÌÏ·9[`\ðêpL¿#÷+gxÏQ~À7
»¼Ëïàδo0ßÎú1f~!zïõ¼xãÿ#%ý7äþAN×[káå^'Ŭ¶ðêOÈþr{¶
× û8þ¹^§¼ÁDÄ4©{ü5øq1S¹GTM\Æn[N©Á>â[BÙWñ.G7]JJ¡ð÷U§r¤BmíG~Ã~è*CºSÛK2¬$eÈë<ä+-ýã8"[9l¶³w$Ùäè[Åg{PK¶Y
¶à¨r*Nâ¸|¨¸s*®á<t¿ã1*Æ1¬â:4s8¯â¡t~,·O 1tæ&zsC
%sÅ4ª¦S1g;QþX½jø·Rµ£yáÖj@.¹%ß5³Bfã(¿]éJ¥æçZ+5ÏWMß'ï#ßñk4Ù·#ºûvc3fe´¥fHäE۱˼([ÊØjÉr[8>öíXSµåyË1ç«dÜXaJã¢æa3»ÙlÒÉ4u²{¶ JfuÎôlY+.x² ¼aºfiÑWíyßX*Ïp«$KùJÿ Yêd¢(EQóJÖ¸-Kö4,ºl?«
d<ºÊbÌ)"£¾Û)_uJï,àPÀð¦ÌeµbMÜaHb°6=r,!CªõldHI]"ÝÇðÍß»ª³ñ2¶¯©f=ñGõ¾vÃ@ëýMú.!ÐTkÛ;f8ô#ÃѶnT²Xs]á-=¯§7ÃÁvæFb±EÙ¢K¶èklÑ×Q,
ù)V2ûN2luK¹%¸gU-Ó')í·P(EªÙ`Ñ&tâëÅ'h]Æ
2X³í"âlRºG×E®HÆ\úPKKLÐq
QxôM×s£[©¢_úòAU¶"×÷BlÉ«¹kξ$ÖRN]O®µ÷wd°áì4é1wtÍVü¶WëE"Mþ¤*ÏÜ:;<|Ù¯:ÍM'pWBxìuÛi9ÕTÅ4ÝÐÞ«íTíªïy²ª(íbo×¹ø$N}åÒE¯øí *W\Eùz/ÙÐ1c5Ù«u§Ó»®W»ãUeùÁ5ºý îĮuõ)-¦a'°îD2ÈÑtT¤W¶nßxÇúMM?îÈs¼ÿ§MÀÿ.îîÙaÀìàÂ;ÐÇunè±
\|KàÊP)+íVË¢\à°í^E
Äb%±@¬CXGT»<¬§¡Àx«¿uÒI"Ã@6¥r
D4NS©§ØTÔp©±ÈÿïðS÷1Ë;Z xCó²å,Å9/`¾_åê&í£n>Ä)SüÜ®Fð:ßü5
ÜPPTpSÁU%ë*TUÇ9 ëór¸ c£*H«aLE.ªèÇxÅ^O'T(Ðð&å×0÷4|·4|+®A×°)
Èiø
â}
_â2Ã`ºêp?m;"Í÷L_0ÎLw]C·»¦gÚµiaÿ¥¯yÜ5<^- Cð:·%ôf&7b%yÈtb´ÂÎ[ïSÑ¥òVË;¼"Ñs'$¡Bck{>Ü-xñ=ÝçÞ®Å
¾ã»º0j|OèëFmºâäñùñ«¦mYáó{§zæe)I2ïT9º°Wá®0Ûg`K$}Ñ´ùJ£^æÞºQ¶(åbûò+XtvµYJ¦ºÉêfÙhîkÄ}Þ±m (s*µax¦$±):^M7\£²Íå^-³ìë;ÕrEw#ÛýÛõ=èµÿQßÑHKu×
aÔÓð*|Ñî¶Un¾bÔ)Ðw×u|SJB®Ëí*4Òým®á-Ó®ÎÙîÇ»mí@eeËñÂ,ÆÅÜA!½ô·#Y׿Cú$ç¨Aºw+ÃÐáõmÏù&´a¬Ó¼eß%mZ Ïk0Ãå#7²«Ôp]Ç£ÌñãÚ¼³âNÐwr::ÎK§óNçraú9Ú-¤ðÍÆt[UK¶âqÓ¢4ó¹[$I³µÃ_ÔE
æ}ûbÖfà°ª_ÿy0ïË~±ÿ¶-da>ð
Ò¬EY2+ý«Rê]ß^Câ¬åXò¼Ì ¢Rø\É+7{È-
©%áIËuØ@õ<1bÛ¢bÚéWªªAg@H§jÛ£%·J(jÌZNÙ8g#_Æ,GLTfTüQ·7iÀ¡FÝ+ݪS^FÐ`(DÔ5Fn±Z[kiÖÙL3vîY§W]MJ<ɹdÃnÉ´¯¾¥³?=æúé¥9¡Zb[3Aa¾<S*x1û%öêZÃþ
ïªwidÁ³£0©¢[õKbØRx:¦MÉtgªRLT´M{n`©R%¦ç §Le#CÃMy
G@ô¼SuÀag¤ë_·äÜPtè³®Y¤+B,ÑäcXVîHqÄᩲª4좺xËVG˰ë¯lÚQìx
"56âXIsñÄZ_Øü8Ðй²05ç»w"Bì^b®&Øhà±5í_<×;UÏs}Zµ:a
nø6h$ÏòÏò1ÏògùU<˯Å3
§þ#Ñ£íÿ'Í5´{µuH®Z÷
-¸!%^{Ú)M®XrAAZåEæ$¥µDzQRJB.á oäm
]8fèrCÆyåR¯ïÐ
:×4=TÈÛØÌï ý]ÇbßxîOÐqã ÚodZaµOe4a<ÂÎßr÷ö[à^.?<dûQÌx?%YL@7æqÞ/8øêqäWBæ.ýZ8we3ÇØû{~çIH
:úúG§#]0¬ÉtÆsLkr¯MÓî¥Bú¤#J#òÏðDQX
º¢§
[.x!zÃ
¹´+ðÒÓn)}Ì-sLO8´è«kábÎK²ólËXãY}#²ÛÖ·4ÒhðcÙi^»7\.Îz.äÜ^g~)¥´í3-Ó;Àhì¼`
ÅEÓ¶f>9e¸IËöY!¬¤+¼AÚð\N¤«@á^´8Q.f
3ndé¸L;=2Vµf¸këíYg-Å7ç{VN½»¶95eé³M'¹MþþÌy~vÎ(5SÆ}xÔv&ÓFÉÈM ¹3릧óÙ\ºÒ»ôK)
ãLgãrk2*/c8bJNu"ÇGò
'{vÈ.[M&ªL
rÛ¥i£´ä~-8$òöÁT¦TxÞ¶òd¡wÞ&µãù
º¹²'N
CÓÕáðL)O.O
ï ÇÝÈå°
Ã
§«Éµ×QfãFÏÅJYðô§Æ§X`ÛÚë¨GÁúåµCÅÕUeQ¯o®ûU`q#Wÿ廡 ¹¢¿ÛÿÍ$S.l`=ËZú@[VZ®úÿGBÁàr 5çªï(E×rEö¤µDEPdFîâ¸c䨦K¸UG!ÏK«#ö(;^;aºûæUüãç[xNÚÜ%Úmô¦L~ôâ½ ÉFöEÒÏJÙb3ïÖPH¼äE°ç5è÷¼Ùë\çeÉöG'8¯°ïHÝG{J¹NÙt§î¡ëïumo[ðêlÄ/nÓhçøLG\ÃYö
&°^Ûó£
¶U°ý&ÚF
v~ Gî£ã÷¶Ø-e
qBÎõ¼õ|¾áü
®|N|Çoú¼]vÈÛÉ8²#Ê(Gì5>¯3 O×ÇzSwd,+ØÂ×îy¬Se(a$HÕxÆ&þ
¶ÖøÖ²À@°xBlô£àó&Ä*o¼ØWqÞÑÍùäµáäõóú|¼®ðk"ózÑ÷9÷PK'z
³y7µûÛ¢ccUzö+ÙI±ANFgåÁ)ÜOô
Õ ØÁ-õ
,Ò¹Û¸>-`ø@ÓùÊÛòW
ì3æ%§|Zðñ·àQ}~$ñ$ÞP.ÀMÂ(·ÃÅBtjhoMâØ>'zK¿
,)XVUpßftùáEw3zäp^b½~(è«~øÐßBbýhÀ1\èiLªAXÅ-¨Ãe·1¤âU¬`XÅ<¡ñ5ÎÐx,§ïêZ^73ZB80Âî¼öØá¶îðtBè¸)ªö4;»y.´kkBÏð=¡-[éwQË*9Úbèu$
£¡cð:èQ2ÇSR§ë8" øæ
ÓQ+Íü+{)nÃ2]F9¶ÆoIîlêÉ<QÚ˹ÿô{jæÄØ_©f¥ôüîR½êb.f9M·õT˺䤫åÒÉfWÅÝCq-ÁEÔÊæ¦.i«ßOI¯TÂ*:)¾jHíÀ.(êdQð
½@@óm¹¡)mi:IÉIÍp±tȦ£´»z
qf¸D,yø'õÍÑp m1ĹÐ.XB{|a Ðú,>AëÀä'tx°`ü¼Ï&Kè<ú-è{OÂ^r0Æj7È1ðÐmú_PG{
(:èCW&WÊjh¯»«#Xkdµ}4ìPÛ-ØN=tÝ¢íl¬® ì¶W|ûäk¿}y+D¬±û5LaXÄõ"î¥áÇ"ã
wâ» køRîÁ
~ë4Ü#Nà¨_à°û1®áiø%F5üJ¿ÆA
¿ERÃCÐð"Æ4¼4¼A¾Ö^µ-)ýKëTlÐÎT§úlÝ
V!mv§ã5¢ ®¥·ª[c5|{abÂÈS]ÔJÔnÝ6*À!sZÀu eëÓ9jüÔH~½Õ3h§ÂŶ%²I=mtz¦¶1c;ûödóÓºseKoe¯à¿¹å«ì¶©¥l³þ±)#iw¶VBr¾U*¸¢
þuBz
6UÃ+kú
:*øÆgÉH~Tɲ%ÅÐd>{³ÛõËKjTò¼*kËÝ£U°j $
xùj«x 4§si£\¹¦Û
66³ü±4¹9eåb{¬ Y¡"ï2²µË¿&Ãľg/e!JÓK%W`!þ¼%'¦,Õ¦Yv¾ a~-W_ËkrØ*Ö~{ÒWí´ ²±uÛ
UêÔÀ¸òË<ÁÏ
CE4~vd¿¨ËÂ+@Edƹ¢ª\4E¹&£%rC^¯¸eȰåÒÍOÄFD
Ý
ÊrYEN¹w½cÁê¤+´?]æá9K
%á©
Ãà)úùÐH³LÒøWÉÒ® Īÿ^3ðÿtMV·Cºyd°Éõh45b=ôDOXt墳L3N=£>ÿÌÇøõUj»cpרµÛ¸ëÔ3ÜÂPgñªNRÿ ±(Lg8÷©äât6ÑFö00ºÞO°³ì½}BöÛHW$~ï{½Ô>¥Ù3b~N³5ôá%íö
ÃxqÇÌ`wñx¶cù¶Îh4QRÚE7(Hë1ÑÏ+ÞóÒ/PKñgí-m
(µÒV«UÇç¿>zã¿êïλÍÇÉÙoî|ßw¿çﻹóúÕèÀ¯}ðá>>åç}øÏûð~âÃ'T<£âY'U|GÅs*¾«bBÅ)ßSñ}§UQWq^Å~4a¸Õ $óðNI6×a¶HÒ-ÉVInd$Û%yÜÖãGnd4óÃõ W]~êíöîðc6öÔcú$d!öÊÕ>¹·_;ëhà.?4ì÷c>Hòn)x$ïÞîVîÖ0!ILIrÑðÕð$ÅÇ4|N®>jxX®Á'5<Q
_Æ!
ÇÑð8îÑðR¾¾a
_Çû4<A
ß®á[Hhø6â¡á¸Ça
/âã^¯¯!+¥ámiàm$5ü
º
Vì4l}«në]%sv2 =e½l3;Õ3zbÄÚúp*·¢ãhÖ1cvÑà^]FÁû=cTÈï¡öT[K¸»âÝÕv ïiËR¬ªÄ/au§tË¢Ýö+蹬-¹¡!#KõÕ3«O-QŸúgàOç÷ÈDÖTT(M·^¦Sæ®JµrW¨Dó
^.»w»w,jÙ#)¢é@3Æì¨ÄÓ´V¶]^_ öd:iolÑ-c»aÛFN¹øë6
æn3¥M;4Lf*7¥õQc0$à¿m,ad줶»ÓK¦ÞÜh\Ú§hayyd½¦½ÍÌ¥[˲%w÷63;ªÛ¥:é
Ê,ÌFó帩(î»#VꢥBÍv³fÝfÚfáÐýz6)³óR\wÃ?¥Æ4´öÚË&mIé³mïZ1¤}MH·}<g¡ÑeâFHOiûfvI44zÙ<u å̦@ÝÀ¨W´#¸d@°fLeò]Ïdô @=©dBwÕf9¨K¤ín.ïµÆá"Nf»á´5ºY*cGDØæt°l3{gÒqàÂH̬k²aØðLi>W¡±øî E#g«1¤³/1/k)ØiXÛËLqßvÒ×øVè뢴1L.ɺ1¶kò2¸®4
#ÁBcÇfåZ`nQ°w$kÞã"70}PÍ<=lRÅÙ¹KÉÏ¡>L·[¬dÛËÀËb}¹LÆÌRK
æ:´z¬ÖÜ ±]Ìqq`¡:ÞrÑÈ2½ÌÔª.ü¼j`-~褫È/¯ãQRÅgWø4V]@}ÄØi,»@üIvëÏa
6ÓK¿ÐsVÚv~y.z¼!l^Y2gå9fy¾ÄASüôóñJÞÔEø,Ú^ÆÂXdbJa;ü«÷¼-B-éoùû=½ü³ðJÿÈOÙ?9CN4ÍçYÜõ
Oþ3s*úá²þ¸pæÄ½tCaÅ;oZÜC§ì¼)5K1D5b>ü¢ ] XEb:¯¤!/
°=/8
8¶³ç{Î=¯ß9··¿ÿýÓÏhF7ÞVPTpB¥ÀVà(()TpRÁS
N+8£à¬\Pp1
¢ãiУ_E»Uä°SÅKØ®"*&°EEÛTØ¥âUqûT¼*^Ã^o
î-Jh¬!
EÖÄsú¤®eMí ¡§
«WB{U×-áXÙBâ
U±}"ÏÃv)ï$
C£ïÔ:+¦4Û°&ó£å좶×.±²Ù GER\%ªÉE ¼¤pAäÞ§X¤ÞA½Ï¥ãÇÝðÓÍæòYdÎH9½m»"÷äÚ°&_¶uúYû6$vM¥¢5¶ù{gÀÌ&
£zf° ¶x¶`&5ª'ó4[\Á«ÉH׺ÙQS
ÔS>¯¾ñ¡F.¾?lmuÝho<!Ë<î¨â³ìl07ûõ1`cÊqs6Szþ°ne8ÖÇM+£éE=5nhÉg¶K'Så·éj6¶ôH%+eìÎ
û¹Çt¥&K1¬OPà?f§Ì¢`ôbÑ(¤y>I<ä(Mº°)â ÁÇÅÝL G·`ç(eu\·ôçhúE]»9ZR§D´`æNÂÝHÉñÄûM;+@ rWCUB+·^xeOoM`ÙU©w/«öu¯Ú»ÑqË<éÁ>ç®q`µõ]°äþ£Àam8ÕÌ\
æ<Sð\ÁEK
¬(XU°¦¢×Uq£*nJÓ-}=*BèUéØ×ôËÝJEo©¨Ã QÜfDÃ$&4LIów5Ìâ¶9ixûÖÑÀ°
0ÔGFãÑDÁ80ô¢QÊë)á¥ü,ÃÀûHw¹sPäB/¸¶¾îÚ¯SpgÖo3tEâñ:#½0SÃÁÌxVÌÖÆæÌ)æKV3¨+GYnÓ*¹-k\,§ü¸D30j¯%aøfy?ô)¨Ó¯mZz<y'Âí5e¨!ÂçKVIð#áÁ¬¬QÜ6S?»c<a9yݰì×
/W/ä2YÝán¹(\*õ.UQSVÙÉòUS¢¯ídÊoûäíºY˦M GÊÎY)a8°Ô%9Zò~±×gNò$Ë¡6[kÊ.Â5z§«^¸Õ4Oôcú]ùi~os|°æB¬.Ôî»R@ÞËqBº×ÝðUáTÙ¶-Lÿ]îEÃåÞæ>'é
|¨¾þoÈØÿô·/vÛ`B£Ì
êi´bÏ$IUaðPNh¢üÕÉÿ:Ù(tZÁè)´^xlÈs®àYÍOÀK<¤á1(K"@`-ZAû\´§õM±ïN¢qíÂQ¹ÆÈ´TÐq~Ú
+hUÐuÖÄgwÆ*è<Eó×ÀwÑ$]ÀÎhL¡lu" SmØB)t#Z£Ø&LP¯1"ýÖ£=OMµ3ÚA²qú2ª1iLÐ
3ÔÚ§À
ü¨ÜùÑ1BȤç'Lì7PK/åßï
Ê«ü§¨eY¿ýcYåñëÙ#Q,·j{úõë÷u¿îïͼÏþúàCLÁ)x;#DØ¢âªxHÅÃ*Qñ¨ÇT<®b»'T<©â)O«xFų*S±SÅ!TáÌÊqV8«Ã³KQE¢-ÑB)ZC%"Î)6ÑÎ-CÎóE[*Z{k;d¶30vL\(¢«X.Ú
±BèAEOA¬ÞJpa\,bk`i¸VÄu"®q3®Ôp+E\¡á6\¦ávÄ5ÜK5Ü5îÂå¶b»1¤á½«5lí>ôi¸^BFÃËíUèÞ@¿AD~hxkLiXÐ¥ ²aAlDߨGz*íwm3hUP7;Ñ>ÃÉ$Ý~ÃåÄßnÃÕ;tW§C]ÎasÔ1ìIÃ8éèr'}±mºÝê^íÉKT5tøÆ4t-èÈ>º²åâ¼Ü×¹ªauåÐw[ü¤#½s
í«úú:{ÚY·vkØ`Údf4Uo:õ)Ë×ëm#n%RæÕÆp}ÊC©w·¤é¨°ä¡ÎÍq#íVÊQPqáfãèfM'6Da7ÊcfÊÈO%¹¼*iE»VPZدiþü:þØì11ÝQlrG/Mدçu>,íÕF»oø®ÖmS¶ÛãÂe'¢zZ¯7¢®HCNtdx(µ½tBM.t¦gU÷ÒÎ>jog_{gÏ
b¯åÒ=G
v3M±NyköM¢`úòéO0e3þoêåÑ=ÓÀzÛÚmløHÞ)ut2î¾TÌç v):2cFÜÕùºUûsVÁ\ßW(û=)Ní1 Ì£tä< +±<ÞÌ?Öt&¶l(I$äËdÔ]GÿÿKuÇàp½ ùÿr#=yÁt&ªm$
3ÛþhççÉËa¾¥[¨fk}À]o²!A×ÊAݤ;=$wY¼Ih
¹üÞW ³|¤©Sç×rGKPD
Eö`FDy³ß⨣Óx?Þ~¶KùÜÈõÆnlòPoD½Tôý4µDÆÑ£8©¢±Mi 4Õ¾¹EüËïàáÃÿä¾üêgÿò_ûçýòãD_ÅÅïãt¶ô9\y³`êÌâ½8µ%0«Ä¡8~'ìÅÉ-j:³xu2Ù#
ñu²/ÀLá¬ç.¶K·Àáír7mÏ#IÛ¡íµ1¶`CatÑRÔÝæi^4Oó¢yÍÓ²È&s0»
ÖÎû?fnÂñ¶HXÇí(kÜyÝchCÚHxJÁÐ@¶å<43»Þ,fÞ¯yZ¾áéùÑa¾Eóðñ=òy:~àÉûÑ«c/Ô"wy§S´à2?9}R"®ÎkÛ¬¦ÈíØç47ûæ_X
_ßϾ§ù5¬Í!µqÙHã?PBu++zPõÊ!&ûàW{kFþPKÊ
í¯
¨\/RY¼ r·X.I Ù²Mé®»§>`L4ÑMü¼ðbbJ¢¾iâ_ð¿çìR$¡Am²3çÌÌ7gæÓóã×§/¨Ä,Éq[Æ;2îÊ1%cZÆYs
ªqFg«¡àÂÖ¦ v
¶Õ¨B§Xu)ô¼
t«èÃ%!zUaPŰ£¸¬â.ªCy\UCXET,¢WBe¸/&¡)ÜÏê[ºÓó-Ám#ÐuhÞÑfoåײ¥-8ÖÛàÌsá«Z±XÙÍáV-c?fYNeYÇÆ¼Á'$ø¦Íu&AÝI3fÞg<il²¤h µy¶TØL1;©§rjör¦[>ÂSÁei(CÂaÓf³îÂÌ´[ÕmC¤?<c nÚM·ôôÓ¸É)GË®§ÒÍB;êO¹EI;Íæ®[Ó9*p¶¤o!°æ¤MK4¼n&¸nsQ{dfÑ9t¼),Ë.¡+¦cö$Ê4M'¬ÞTKa.É
ÛÜöÚñÂÇ9-ùÄbÄuwÙ«AUËÝq*sÚOú)rinwNs'
eÚäæßyÒ&(dç\\ʯýò"ú?3%þãÝVYG£P)r²4`ºË|Ãp2Ĩ«¸Y¤[ݨ¡G@ü* ÿ:Éí4Òiä
² r·X.ILˤ,)Ýuw
øæÆDÑÄÀ/&¦$è&þÿñÌ."
j=gæ\¾9ç;ÓùñëÓáU©¸b\ÅwUL¨T1¥bZÅY
¥8¯!¥ÐpQikÔP&¶Í¥(A\µjzIÃ9´éèÂ):u¢OÇ#¸ªã.ëE»9ôë"¬#èTPî*¨
wÅ6Ø32,6âÂ1³éQæÃåÎVcõy×~à;£^úúp4Z .|Ú*F
ØOX<%FçYS+LYk\6³â¶0¬KÌq07¹+ئ`é^ ¡@¡+cf/æ6ÜI°d2ëüLË.PÕ5¹(ÀÄ2Kó)++øðҬˬ0ÇðgÄ,'m0¥Ö¹!X:c&]cc-2îæ2Â%¨?j&(-nå5%DÅ*TE2'ø"Û$Cñª²lÙúÌD=¡2ÍÅ4|Âõë¦X²,å2Z,[®){T*Ð9tdõç{æXw¬m¿'?Ì}1OlN¬·¼$TÕ ìæ3éSÐtÚOtËðºë8ËÏÙ¶åÈÍ¿=É\.)ñBÞÂ7þ-óDFÿ`l¹Ä>NáGS¦«-ÖMW*SλDXGãnËÉ
eô&Èß9(ò¯O2B;´B:9þÁs÷,öOq¤î`¤2´SLþ
åQÝGýªb|ØGÝÊ¿ö½1LÚ/cå$wé{F<§ÝTã%Bx
¼F'éÞPÎ.e½¥çëfðÞ+{ Ò˼Gï©Bݸ>:aZö¡ï+ßÛMY²é»áÓóPKqH
xà¤\F£&TÊx1üj}aeÕí3Áú¼¥cúkõë)ú×3Mu3í'2>¤æ½äkáËæmá¿Z¬ÕnÖìX /ÍðSDÖÅ×*Tú
õ6êJ«B¹Õ?ñdÜ62å»ýjnÔÁ_öðæ+7}.NEçX+òÞëzˤèh{éª%u{£IêÕ}Ã38¨wä{eVÉÏz]Ó»x}-³÷¡Ú)yµ=êÖ`Éç q gX¼«)g·I6:ÉͺiÜï5¨W}¬,¡H¿Íùhk´ã43ÏÏaMR,¦ÉxL± ° «Áøðò FHL[?Q8Èÿ ð¢Æ¾a¤³òç(µ¾\WH
¸Þ-BlbÎvñrt6
©áDÕ4iLS)oòPK+äU¼
ºÐ®à(^U â nt*
>ìT c~¼¤àv)£AÁ
Þo§ï`¯xQÁ{Bå2$äûk9ûkÃýê «ÞPmêÞm*§ÄÖñxèf¥âvfsc¥»1²4s0®Ù¡~+Úk%;LÝÖLjøsjØj¯6dv±áF#ak á)tÆN X¬ó?NvqÕ²hZKö59äYæî~-j;ÍþÙÓlWgX¥ÎKèÂqÁv=¡Ûõ\71Mo÷PTKÚº°$H¬yIXOhÔ@·f¶«ÝqªT¤éF¨©9£M«L"bØ{T"Tû¤MÛZó´Ùª
¤Oce|-Äç×Ð(Q5~P5u¶ûưaöÔ¤íÓD=âz·êuGC¦EW¼Ò
ÝÄÊg:³´ÉlA(Ûf¤Ì¨¶GiHäPQihd}l Þ.%wY}F*F&]
¹þ¨½ÇòXð
1cw"æ(øb32ÓÚ5mH¦l5¥TèѱDT³lÃìÐí>ç¸$È=Qh0¿W³³èÏ4ÅÒ-¦6¨)«9Å
\¢â2Íd sð¦¤é&$à U"ÒoG¥½
LoÙÃä"ÚÔPó¯5ËÒY>'Ë$¬}?ЬjÎ1Õ<J¥-L&-«³%¬k;ãÄpòÛÁ4·.·ÛÁóÙÜNüþà w÷ÕÉì$É%2Jk7Õ(ÏX6µ¸¦
þÚ1¨5Øä[7ÙM22~ÖRæ2ÝJ¥|k7l5~ Ós¾ìVóØ}:WhSäõôD5¯Ðy
=Ú·¤ Þêæ#
8Å0±òCÜUÒñ.sôÑnñÎã ¡2ÿ*
JFùZ1jb¼ÚÀá1{¸cX̧|OäÁ;þ Eë&PsïÎØ£Æ(Æ&þ
Ý,\ßpý-ßnñùa5ÆÂ5ï`3&Q±¿8YW¦3s³ÞL½x¹òp.â£eüC$ÎÌcu`+&°ÓòûðsZyÕb ¬ÿ:J#ÂÂ
(×±<|Þº»ûÓ%X"á:
#ÔXs3O ÊgÞ50"?°ÑvñäZ2(ëù1|ÂÝ>b >£þ->G¾ Í-®ñùv×hùí¾&ªtà¦z£
ºÎA}²V¢øógàïÂ/pOòb P&ÝÁ²;XzH8ITI4r#
}¢·÷ù1ø½}ø~gUí¢[µ§jmô~2'kØév[³è
¯Àÿ]¦©
ápVóx3Ís>ÓªÜVz6¢Oà7úùÈ(¢"÷²¢Te¢\@ØRO¢¥ô=íÑçHSôhgµKëA¼]âßwıyå?PK5`Wû
ñ``[º§;ß;Y÷þñúç8pà0D;
t#ì"0DOÀ¦þè¡Ý^k{Íü¦\(A¬×*qªfVqI©Ò
ÿ/ã²*$=Q¾TÒRatVËÕ"Ëe¥jgl¬¼£:)mâQq%Þ®ÊÕT·©¿^/VôLò¡gÛø±÷XHÉ8þoºÆ ×ÓÁ;bMX<Ãñ¼±·
¿aÖÁc+æðqÏsDÌ¢/7°ßfõ[÷àPKÞûxþù
f\V0«àkW|£`^E7U(êÆaËåQpL
UîqÈbä0rÕð)NÈáÏ0©á|¢áKÔðk¸5ÜÄ@¦8~]` 8n®YáZ^ݨDãÕ§Þm]ã¶6ݨbGÓqÔR<Þ8]ÜÚ6ïZaÈÁN~Dù>Ùß4B;ØpíÈXFdÕíÍÈX´êÓû ÆöÈïJàüã9Ñ,×ó~ÍP¯nVíFäø^(Ðg:]n®¯ØÁ¢µâòøäÞDe?Zð^FèÎzïnWníÓ¯Zî82Kê¼éuÃjXÕU[RwÐX«T
y«|r'ýܱÂrÓu
æÄK\-½@ï¯Èe·2[æk(Ë =þkAà(L<F>ePb& âÛ$ï
fÿøCø~?ãÓû ïó4f7E/2HÙåЫ K
²!NÊJësâJ
¤uV¾YÎ
ÏÙ@Óû9K^
RAìàô½
jòßö(äÉC1¡$*åÐCÐÛ²dø~ÛÒ*Õ?¿G{5Fù
ÑÏÚtÏ·tÿ÷NfSùÒHªm¼Þ!HëaGÀù8æÂ?PKFÄÑM
gÖ!À°4sï¹÷Î=gÖóúÿ7À4nøÉÄ%?¸lâWLäMüjbÞÄ«úñûµwÀBZHáõòÈ
K[Ñlg¸á£¡;Òcÿ&ÉÆ,×U\6¨¸ÍU7òôñ=.QÍqC·RZ¦Wn9j¹â´«är¶³ck9hG¹àéü¾RUy¿Ê]2%6XjÀÜ'¯»HÑ]j Ó%Ç$O`o->Tâ}`Ô£àQÇhOuØÒ¶bwPï¨À/ùÆwcCËí0"Fùdd¬äñ¶·¤Ò¯©ºÀÌ×Ý#3¶
õMì
·ÓLÖPu÷Õ¯÷´}W¨ò·üø^1]| ô¯Bÿ×9OpåÐ
ÚääØÏãíiΩ¼
ï9ÛÝ
S¨øJ¤ØEÅ/
(TPH!%EüÙ¶K»¤Ý»S_ä/¾ÔDM|óGïî¬7Ù¹3sÏ=sï=ùñóÓ4a+,pÜã¸Ï1ÍçáåãxÀñc#ÁñHB+z%p\Ð|¸äì]@_BèÐ+ü¸Ä®9ÃpS¸ÄmqAÜE$EÇñÄ-#ÂÐ]fè&·ÕU)ªF^I K7òqhm{W±5k§¨ eÛ.+BÍk»BY0s{ Ó!â.Oa8z¦9QTmÐáÓpÿ4ú÷óÖÕ|üUü<CËnèbÁ0s´¸ÕÊB7
¡#©Új¥Ñ¬u5S$÷àñVM±dVÜQqöz ûMQI%ë=]I3«Óª¥;t5Îñ¤i嵬f\QÏØÊv.Ul¡
D
TÖ*µçe<yxêpæ
Ãe'1*2eV¬¬¶¤;Çræ¢#'£exK7róFV³
imè¢àÉÀ·LkU-¢=¯:qZiÃZv¬?ÿêCçq±ºo,óתð©eTyÅ.SMu¡³ÜT0¢LUÊeÓ"d_£«ÅpûD&1eOL¹&¦ì))×É;ûeñØÿãªÐe°5áà¶(y~QÐIÈ0Õñ-! ½2Îçs£´RÈ2²Í±}´pÝ1[ÜÍ=l @ÇÉ2ÜÄ
Óxí&:EIR2µDCèÆ[Sû-ÑLvgã4¦Ó<ï(aýd9ý7ÜLþPKãÙBÕ
[
£ÂUQP1§b^ÅK*^WqYÅ*ÞTq%VôFÐÍhGBv}²{Dv»ZÐþ4")gÊî±"Ø-Í =röD-x²Ë§"hÀ^©²OvOËåþê1!ÅA
Çðì5Ã)
¯ÈîUhx
§5LHi5Lá
Ó8¢ÁÀóf0¤áÑÃ!
³rvg4¼%-Þxïᨥà#Ù}a«zw²ïêÝÑçôdN7§£®mSût¶¹ä)árî¨p«£®îYaJÁæ@°t=nrÆÉ':ùqÛp
MÞ®>%Üä!+{iÈ2]ÜÎ(¨ïC¬w9CI}{ýÐÖHzFd\ÏñÕáÕôE;jì/w%5Ópý<FeRhXfÜÈÆ§u'nZn<-wÛ¯ rx!#òRÁQ 0°hÊ0ÅñÂlZØcz:Gï˰Ã#emÒí¨»X%´oî÷w2éZ!¥5Òuéòò´àzþ;£Ûäݲ쩤×3ÓB¦7g¤äL6I:%ðáÙ|nL´#£VÁÎ#pµB¿¤¢@È0¤á,ÏyâbAØ4OØÖüU0]bL](hÈä,XõÒ%ËhÆTh¶d,RY
²Öa3KÄËZT³]o¡K"SpÅIßwk°<ÏëIÃÌttA®Û¦ªlrâä 'l1gXg¤@A37ü*hç|ÌrõÜ©r`5òOÒ®ÇhY]%Kokl'å稳FðÔkÓ¼¼<l©yÛyR!Ã÷- ÛþÏ÷@Aü¾j^rvüÊh!·lmXQÓÚz?qd÷¸þ0òZòáÃæQ¹0fëf±!¸ª-rBµµÅ¬5'B%ØT¹¿7!Êåw58*ºÝYV{õî´Á/Skjªã,ÝÏ˲þP°OY|«
XoX7pxÖú}|¬«Äº²Ö5~d$ÖYÏæå
(â
1£La!½Tn0,.9mq,¸/×t¤oµ|?ÄP~
¢Ú»Fþîêzÿ3Î ¶ÚÚ¨g»qF3 ³DRTÚlê=[%Ú¦oŲ-'P£¬AEX!æì?L" ¼ú/ +®À¡Ò^ÖPK>P0L
â!!!Ãëµ¼Úw×ðE5rwëÕ)Oñ&¶£§iIsa<·ÖSt&÷n¶÷½(ZÑç{à·ëáñåjýw¨z=cað¾zÈÐuÎ`>>¨ñ2o´(¾7«<¬xU ã©îZéMT×O«¯KUqPïMõ0ôåe È!Ʋæù^(´\[ÓýØûyk7âÖù{w±ÁÑ6©e5^ÚYt"ÔÛT]mÔ5)n µ<6±-Ãu¯IÁW¥XQ)è#5ÊT¤òü*Ãå
eédÓI\§êÌ`ÿWåIîô
êÈ%©ÊN(÷ÓRO÷üUå.²É3È0qÖc¸qÖv9nµdH$5ÐIè´èè:Ç
tNVtñ\w$8Ç
a¸Ðê~ÈlxܸåNhÝ#eW¹G¼n unËÐö¶©{¶goð(öU'`ÁNj¦Q¿ÚÔܬ{óÒ6ÃÀ¾¾¦NúÓÿ4º´rif4̽Åèk
ú°Dã`|;4Z)
R¥Jy@{ãl´ÞµvÇI*/ ðP@@Z@xàG!Îx7ÆMª@díÌÜ{ν÷Üñüõ÷/¿!YÜ,b¶ë^5ð×
\5pÍÀ¼º7LqÆDgG`bLçL0i>y#xÊDO[¸gôP±p
1eaÏZx®`ÜÂ&²Õég«Óm¹#_mgEE^о&pÛaÔvdW6·\GɶïmÄÎvk£éÄJ*·ãîéjUj×.VÇXðeÓ{ìq~Äìï9±íø®r¶ã®NÀÝSsjúh\õ&.Ì{§ê´Â+`.î5Ý®ò Ôb´áîr¯³áF«rçËùÁCµöÖ
Wy®ùÊp|Ö<÷g³ö
XGò
ZÇ4-+ñÆ"fú¬/aÞéOzç4#N5f~Æië{(ýÂzY<õ{®>ñ-òÙúdíî!»½ßÐÇ3?¡¬úì¹4+(qTüzÌ|ñ÷pwõcLâÖ÷)«ùÙ|Îgø"¿d_õs#BWäG
oó£ DÜÀó02Þ%&K
˨òô"}s<ç£V÷>ççÑZ9ó£qò4f¾; VH)wû K i%ZýöCèïÍA+æÒV´Áì³|þjAaзp>e¨§Ijãah¡9×>^½Cø4àÅ>ÆþPKGÁÙå{
sÍfNÉûPÔe¬îuã0øý}¹¢gÿÉögIàê¿gt*eJk¾Á6K]á-¨ysbtMöº;ÚÂY¯°_µpÄØå6x#ÇÌûÆ
--- NEW FILE: i18n.jar ---
PK
?zèF×aW ¦jA§ëÏ=Ûy5RsÒëð®_=ÛiÆ#aG
BO¨£ÍY:³Òj!ZK6ÎuiÒÌZ¢ènÙþ3IÃ9NÎuþ]}K7HD@åê#¨Eýf
¦7¼"INKæÞlhÆa9û2öØÃ\*Eâu2pR÷"e,Âi º\÷]þÅDäHHG0Ùø°oÔ`çÐùJ§ë¡æéOÈXíÎQÊx³ÓDÁ<ÅCZÿ"üW,Ä´bç5NÍ:ù"çö`ÈXÒhÍhõÌkBþòMBÈ_míÓ^»It
X6S\}Ðn÷`I ï©`«}j
¾/Ð¥ß
B:"£RO÷í46icæ´ÂãI¥µ@ä\Ëi;pNk uE$#\·fzAH§9?G£0ÇìeÍ
½J[?.þ¥ôpCwnUÜêCè<ÑðéïA¹pQÛ¹D>nÛ½fIb \[J-îªWBé1@Þ§8µR@fëv¨ÜöÀqÍ×óu?æDLÎsåÚÓÖ1³!SxÁªùd!ÍTsQ
=<OÃG·%1ªÐh¬X/ש<`Ä/;¤³<S¹èS!Éé4HâVoQsÊ*å9/Üç2toÕ%·Ïع:
¨¤$$JJk
¹L³í«jó]ÉXDËìl¨)GØ+gùõë©àj}¦àùzÊÔ3æ¤33zjV÷§L=4ìÕó®å¸ºïèáÑ
ýéy4gW)h8ìdLñÁ3i3/1ò¸Ó]×q{u£½02ÝcFʦlG:#ce5ZÝ^híµ²¼)ܸ$#kwÆ
¶åáØ¼Rà;W-UCvÖð)AëÌl º7\K"
cç¨ãfFÞHO¢f[)/ií¿>¬Z¨¬t×¼§`¹¦Çd4g
Öª-ÌÁxàæ%W¬¯YÃõF&CJpì·íhâfeÏ9iسG
õy9màÈ7óQ¡[(xi-©»Ü¦ 1m« )ãæ2´æeqßpý`¡P&6$ÀYÓÛ9Ì¥mG¾g(ÉÍ[ÍÙP2¬?âqÅ +k'ój
Db\jÕSûuQM¹Îé0m.E>\~ z &ö»®1ÆmÉ.cºv1ù¨l±< HÊU¦o¼Ñl]æ,ÿUÐ[Vø»P°mÅ!É?K
ðkE±,{V/äóë/ó¸J2
ð*°óE!oð§,
«¾påç;%â72ì6O=çøú¤C¢ptåÒKéÓZ®d´@#ê¤á¬NzàÉVÏvik';%>ظ°£âxW94pìëÇÖ.åöËÐ+îO´+óè<k¹hÇsØùvîsìd«d1Í&ð$ÖÂf»ç@GÝÜÿ6OµÂ}¦éûÈDwßD:è:ÝÐëp¢Îbú`³!pdöC"á. â8
+VƵ+Xüܰ&#¬Î®îù$iBÁܱ(à·M#?mÖòËf=^ä'ÕKØÆ/Êå;;q÷w~7ÀøÎÿPKV
¶Û
(NBJxÔ¬¤µ¼Éz%´« <Z ´
ð~
÷;<§t&uâR Ói>fú§ý×vú§üèL§3ôGg:Óiû]IqlÙ>{ï¹ç|÷ïs}õÿþø#´`ïEPàþ^ÔðCÔð5<¢áQ
ix\ÃÔð§5¼¤áå(:ñ
(ZñÅ(:D´âB_jÇr|90¾
&b.AÇW£`DÄŲ°AÄ×dº1JKbâR1Þ$bTÄfÅдn¡Ëtk;7ß& WDÇ1Äír1¸Fĸ¸VÄ
:n
£ã\§ãN\¯ã.ßÂ7D:¾«tÜ-âdEäuÜ]:¾«uÜ=:¾Ý:¾¯ëø>öêxeÏË/`§Wàéx7ê8SÇÈ(èxW)´ôlS8£ ³Ï8`¤lÃ)¦väöyïâ¹ê¬W±"Õ=uuÕ³ìTÚ©NóJÎl-SʶIu¢¦>rÍÊÛôRÙ໹äxæAo1]æMUÓ5¸åãÊNkçÙLz^9µ"kºnpJF½Ç×*¬ïúü°G«f
®+¦¯>UMI]¿áý6÷)fè¥j%oVOõfö¼&ú&¡ÐòÒ-g'õ3âB§ûç$g[Ní4f½¶QO[>?Nómøl@Í¢÷¶
cyVmJä×3¦ÌÄTÕõ93áͼ5a
a
eÓn£8,
áÍ¥©ÐÁ}\Ïp¼=]å<>7ËÒL.-³có¦Lz<Îf·í¿2½w|ç®ôm×(±s¬:3+»M×x³^í^°SãÍxí],©g/ÙÂKwÞê%èsÉaöKªŶ.SªSFÙÈO)Ï(ÚVÎMY\䤼Ò5õ¼Å6£\6B»á\Õ£2RO×s¾§/U¯rý¥¬gT<¢q×a3SØtC/Þ¬i;§£5¨hQ訡Å8É0U4fÁØ
&µ+.ð©_f
Ë9;äÀ¼F'`Òp·*fÚ6§LÇ#Z2¨f!aûû$ ñ-|$:çBWóKÝÜ´ê³*HaåBõ£pÖbÕ³ÐrU^ü,ÎÅKoÞn¹ÑnóvSó(ë¬D.¥üzY·Ør¶Z.*iÙo²4"v£.ÚìsÁ Np¼·Ø%ÇÔ2¬0ÀFa¸ÖÃóáLþ¿\²iX0ÙÔÓ·Õ´ËR±òl2BnãÖÉÕÝSz"Æéh£ÓÚÝ"ãzÄãY®aÏOwØ´Xί"ÖðÕ ðeØöqâ<$/(Ì¿×øÎ¢´8KS¯ø=-y§'Õ°RÄÀ})Ê8_@Òâ3ÎæË.*5zàwp_
Û±õÑV£ªWeG±ò:>@ÇÞ¸:S1pñ$¿ëeñ8Ör7ÑþZ*dxWéü\l¦qÎÖ)l?ëg0¨ðShKÝvlhk¦ Õ#2ÕiôFdh×ÓDOx=¦«{Zý©o<Aô;÷´õ´}Ö½ñÐ18tMã$CàYúùßbA$«2õ¨¹ýq/ÓÁãàÎíRÌÉ»
vÄ:Êç9{ì¾Óù
íÅ[À{8?À~/Á428F~gp=~ñ!
üNâ#ÜÞ_ðû+¾nCø-ÃïßÓóxÄQü¡÷_ñ3|?ëüÃ?ð)þÉ4þKEðoµÿñ3;Á=³WËlúÛ¸â»Ä³NÂÃÛÔµðo?ay
y¾ÉQ+÷èÅ«¨ð½ÿ)ë#°Q`'£Àn?ÑÃÄí`ä|·×
R¬¥âÖøÌ·yòÖMÚ·'§qÞØ?+$Eð~ÄetÒ°\EÑ¥b~É
éÃ
ÐůÁ¥¯Â¯m¿+!~Ûì
mõµ]ññ»«I2
ðüh50ëvbݶ
þí?Øé8~pÁý 3º0cÇÖ?ÄñÜì«.й÷æÜó<ç¹çäþù÷£_À
¦pEÁÜR0k
æqIÁ]*XÀã
Ð0ÄV°Áw7qY@ Ò;)àT¤wz]ßÒ5S·ÒÚçVzD@gѼ¹ÌÙ2§»YmÊÍ.;Ǿ$ )R@¶VÜáÖÿsV
ÓÿL±ÜÚ³¹;ÅT;¯§Ù¸mylÛ+qæ<ÃÔî2×Î9IËY)k×±h
!á ¸yCMøHu3çzj©)¶fX,¥&vT/ÃÔï¢V³a;ªg«9ªº:¹F¾´sQ@í¸bäøve=ö\ÕCSãc;×U%ê°÷sÃ\"Ù`;¯/sqíNNÙÜf9zÂ$êære&çÊQè¸Õ
qú¨u*x<¶=-f§v|GËóÛIÝ\Ò,*í¶´¦gõdqi$\͸4li¥CR^ðEÝ28BÔ³Yf¥ôd.TF@(eÇ ²<Ýñüº4óbEFZǤióâÈxí3ÌuéX!UÔ÷M¦*¹ÐðßÌ
h©ÞÌ%c1ãØ÷©8(Ãáre¥jTi=¬V:ª~´ØóÏR(ên~.{sYÈe³¶CdgõôºÚ.6xYDYi/CkjÊÃ\JI`f"=hf5Ù$æåkI7s¼ÝÜbW Å|¥s1èË
yv©àÁ&t·Ô\ÎÃ9ú× jþK¦HkúÓ8Bo£dh£{h
?£ýGz«Á
OЬ¢)ºVqÞ7Ö1á³Î@#oÎô Ý54_þ§äòhÍCÝ¥ù1äÇWköÐÔG[ÍytîáÔñ{¸®¾î$`G´ú
ööi÷ Úðð»/§¥²(§
íXDFéfٲĿè@µ4O®ö?PÏ5x|2ÝÇó3ý%«ÀÂl?÷Ìãôì.Äeavà)ä<Î<D(0º`p´ëî¥t^A¨¨;F)>&Í÷é~ýT}³ø=ø<ÐóüâK\ÅWÆ×To§yßÒ½ú¶!J(i-í2oR^tÃ$D¤ñ2)"{aUyò×0X,³F3Ïoçr
EßèVT6X®lÄÀcäÍÓ,FûþÕ²oÝ QQ±ÈÀW¼ãx`ºý\·\áhß:ª6ÜDøPA.±Fçæ¤>îÕ
è*wTÙÛsÕ
'§N;¹[w=êÁ4G}´n©Ån½ý?gÕ0Oåϯ¯{1[ª¹S¼Ñh±ZMX¦ËvÜgÞÕ
õ.s¬¼bñ¼6±v¦¡1ÝÔÝqJÒC*[yÇULI³uÝdi%¹«¸Y¦ø¼KZFÉÙºe+®¥äRªhÊÔºIδuI@íf¤ÄNå\Ý2DW¶mÙ7íeb³÷òºÍ¢Ùd»DÐpÈÆå85C2æò[If/iIÈ[ÊÅ/Ç¡7U«ÅãrÔuB¨æU<\òØqÕ¸ÞõM×n¥4cY³u.²¨´gƲ3ªÓRYÆatTýò©OIPiÑSuKçË13- <ä'³_á´0Ó$\ÚZt5ÛõuæÆ>M4O)ÃâòÈxí&³Ìqè>ÌÏõ¾n¥¹Jr4þ7µZ«7tÁÛXÊÚÖ=?ÝuÕ®¬T0mGK@gÕ·{ái*%@9ÖÍËeïI.ù\βììQÏqÛeÀ&/KÈ`fÆÍ
8bÏP[åSÊÚ$3r¼Üa;¨É¥Èd37oËçýæÛ¢&εnV§¯7ìZ¥·}Løï©ù¼óô^¨ùï2ÍB4§_rzÒjìRlM1ágtüH«Ü¤w];Àj¦ëa
·i%ûÞØÀ¤Ç:¼9ÓÇtqÔÐx=öZ`ü)
ðød8wggJV[
¹îYÀ¹=V¹Á'8û
ÅèCB@/i²û³Ê¿¡bUy~ü<?+òNEeåÊfI'oæP¬ÿ_ý!yÖMÂèÅøwL\·\Xÿ>:«6ÜDø!¿_A)F°Nçæ¤Sîå
-®(©mÞÄ¥ð7¹}Ó
O%eß´VÞÝAºAæN2Ñ%ÛµÃeHÆ+ýåQ^ø¡í¹¡3k»b£\Ê`çÚ7'Ã0rÝIâY/ÏmØJ¥.ÊzAÑâ>Ïï Ewì´ì¹×ZRRøjP,Ö4&®£×h[ÍÁf©,C3'LWÈPLÛvAÜü2Ã=[+ÌO\6Þýlú¬;syhrÇeèoÖUŤFlzå /^ÙªVQ^(E9¾/ÜC¯Gls§LXQÕcÐÈÝà%ÛÉ{ËbQ/Fa¨Ép^t¡«±Ó}/æx-ýKbãͲï{éë¥Ò1$ÿ}<Æ®*_EÕIq^ºj!¡W;FÑN¿ºZÀÔçOv,ZmÉÜ8®nß';"kÔXEVÄRÁgFh]IV_O}GÇ)´xË :¾¦¾Aßø±÷
:Et'ÎN`¤*èªàVt+ÚÌt7Iµ$µÚûôÿò¤_ Äwi÷îqåa±2^àC5ÇybRõ÷¤Ú4q¤:@¿À%L]¤ÓÕ¼{ÄK£Ûª}öPKÖ³·
²¢nû]ã·Ä^ÇâTði;FUøÀkRà;xvoë¾¹YÇwm×Ï2¥ÆÁJù¨Z~ß(×êGoÊ¢{cÁ0AX¾ä®<äN@çtÅvÅAðÉ^e2×Í2,Ò½|Û¼Wnñ¥H;MîrÏV"úJrg¼Ë-aHn9¶éöÎS÷\Â+át
Gý3W3ÅǬ
¹¶B¡^Ýò¹$gf é c©ÿ*iËfþÄs7MaqÔFNa¬zV}«eµ0dl@·ö£aHu/ÓhÞ@î_1
¨lÙ>V§;0Ìcçè4F1BÝ<ZïQÆ È(Æ6¾CûÌÓu,Óª÷
ð+x~ókªV$ÓߨlfØÆÇð/ç@ɰS»Íö°
¥T§Æ"Á%HÉ>l4F(¦ìþVm!Á
ºÉðõGjwiß
³½>°Ú=À}E¡¬¯Ù¿PKèQqU=
¡4ÛgO¢þþ$æ¿/À`ýÍ%N7lµh¨&ØÃM*Y46Å*U2£\l½B{NÛ«K)x
E3#`uÊ0rñI..·^PzCñéþfF_ÎõôRÖÊ7PKÉaß@H
¥æå{oVÄ£ýcÍqt«ÄÐÖPj±2òÎS÷fÕÖ*CoÃ7¶*¦t¨7áÅå«JÙ"lúßáÁP±RëP´tS×l>»1É¡Ùö;fÙÞu6
ôb£
°L¼Gµ1Òd/÷qÖ(ÿø¤q$+_Ñ®ì¢å¤Ïuàú>²Ï`¸ó>cÛPѼÂȹì/b*Ù]$vÐÝGBæ8íyPã~$7H½6èÁKôÁÄ ÊîÉ]Ý?Y&?
=$þókP]>y¸Wbõ!ÐÏÏO!øÈZOaâaÈÇ@- ÂwµZfë·³àÏ4I·Ó¦0Þ3dãRîe¯|JWô®ìI Âd}ÄsHûÈiÊäJp
äZmêÊ
'ÔËèsòF3Ëa¬äaÖ;b½=Uku¡Îõ¯^r¯ºõÀèñ>Pï<©ÎèÓöx×Üì_PK¨_GÖ
Ñ¢h)AßÙ¼ÜÛÌÏ2(-$Ù³t{B:£³æÆ²_ù1îǼà<Ù
ÎÃb×÷;¨Rk¿»róÈêhSZ6³ ¯Äaðæ¹ò^ïåxós?PKmãcpô
F%,Æd?.ºYG±kgÛIôÒ+ÿ&F/%ñGßÓv[áæ=§ïÇó>Ï9}Ïß¿~£7ðHÀ]î ¸/`QD7Î`HàBQ¤EÊìç>¹âfGGx`TÂÆ¹¹ÊÍu 71-aná²Û0î`BÂr`!Éæ·ÔmU1T³¬\[7Ë!·«}rUË®¨.¹G¹_Ô*EÍn55W7¼UR
Ü]ì:ÃtædS°úÛ¥Ì|åVÒ+ªáÃv*EËp¼ºÑL§^araâg w,`bKº©»ËÑÇÖ;įð«×Ôò¯bHæuS«;%¦Ú]ÁPg)¯éºjë¼>
aÄG¯ót(Î%DþnæqêÒóâno!
ñzrNÀÅ;m ʪ øåqéC°Ü!"ÅâZ±¾$¥,¾ó%1þì¨O)W$éNúdÆL²y;)"¼&û ¼E/^
&*q-\ö~¢"ç®$zÞsCôb
z1ïçáôVp¥V²ëa}îUªx5ÙÿPKÅüÔ
>c0ÎÃ[ÉÐÈ:×2òd {Â?H¤5W2ÓöÄ`DÌzjÞJêl»aäs1ÞPr-üL¹:<ø¼/ͶºaLeG%ʪ/uÆÉÎÙÕisÕE0Õ"ðlþþç¿ãÿ¤§O&aD®ª)vQ U%_¶E«¢X£SfKíOi{
b9/Q§hglc²¬\|+íg^Q~ÓßÌè+¹þµüPKZotC
d1$0
ó
Ò¸ bû.eÄlÂ.+H¡
dÇ.æ¤_ýÉw®Ð8BÔUâØBóë´Sw|7 :Ì*µÊõ;ø3&;8U-v0¾Qþ£´ÈE2'mÊ<û=ÒÕb©±ä#ï.KÀz8
ÅÒSHA¦éÖßD2Mv3Mú/ý`0V¾ë+Âúò_°îX7ýWÿPK®esé
¤·$15UÔÉîdwÂdf;3Z¼AÁrónT¬¨)¥I úK9rôèÑsü;ü<>ßÌdwºÚw¾ïýÞïyï_Þ¼û¿7ÞB;áÍ$>ÄÃI,$QKâ$~ÄR¿ObUÆ?ñ/ÈxQÆOeüLÆÏe¼$ã2~)ãe¯Èø2þ ãilÇÓØ£it
Òã¯FÒØ»R$wr,ø¾GÜFîK#Q±=.È4nÆ M£Kcƹ_ '^±7a"E¼ÒèÅ'òBï¤8R0Ï
¢)xªÇQVp'°¨àëSð
è
¾Ó
§ßÂç<O)x3
ßFUÁwï»xHÁ÷ðßǧü§üSðkUð[¡èUðªX]ʯkB]$´ìÐ3°¿0¯.ªyC5+ùÙyä´²'][7+a¶«uóc½ ^']wu#_°Jª¡
Øgóf/ô¿£)
c$liQÑYÐMX_Õì)uÖ Lod¹HèHÈÞV^ÑrǬºY_ÌD5R&ªÌ2QMJÆ®÷(ý=ç0öÍËxXÓª·ßsË®äÕZªj"W>ëäõÃGÌ|k8pë
}3ý$§'º]ÒÆt<gºUÍÕK̾Z«if\¿ÛýQû}Ôþ
ö^ò®!ÝÊñxЧæ÷Ü)¾8ÞÀ=haPEJ·ñÉaßrá*¶ÌXÁÁUì|Û»ç%@NxIqHÞÞܹÄt á¿Ôç·[Á
¹×0¼C'¥âkØKÖþ£±±w°å*zf2í«Øýö-¸½xI]C÷ÁC+øÐE¤
9îJ,yÜQzèÛ6nÒ*tjç ü0fp:]`¨Mì
JæÉ¢¥wÒî<B*QÅqz5/y¾£?´7V{"þzÅXÆ9jìÄ0^'B;±wàiâÄÇ×`SÎôËnçÏWq8Ȱº-¶ÔÈÑr(GmÖ&FLÌÆAâÏÙ:{}×"½%\Cvæ2úÖÐÿgÜ\`dSnÙöà,7Tf:´o¢oaþJèá@ý.*þ
Ã!Læ,¨Ï.Ä ¼w¹ÅB^Ä}XLÌð^=<ßða,(Þ½Ãfo»!±mbúUüÈñ;q!Ýãi)À<Ï[ÂüÁLßzñÄRFñ¥L"XÆ2ñ`Ù¾hæaR¤%}]ò7êø;òìÁ?¤!3ÿ j0°B¬ÖX "0üc$"PGZõÔÆ@ÑþA®P1ì§/3¶Uì¢å{Vpçëø`D»x±æh®´q ;ù§PÓìáÙÃÅz¹ñÂLIêåsGÌAZßm^g?NóÝÌÚz,ä`o PÂkÐðcA¶¹×¡ù&¿BÌC&'&'¼§QDö
*QXCX/ë
`çV``6
ëH+Ö³ÄzæXþû áËÞëÿPK.N
%XlR+*EDÝ8êÝ$ÜAÙDߪJA,x
qÆcU©Êm3ç2ÿùæ·u~üüöM<AÏÅ.ºØôÑïSÿ9¸Ë,q¬â
Ç:9îá*Ç}¬ptq¡ôÄGiùIG»y1z{®=Ó*ùX¤ÚÍ ·Ï°ô/^ÎcÞ-ÏP«½IED±.Tl÷úè½µ£2¥_28¯ó÷aÅj""yjfÚɽÙd$¡¥FzhÆà¾(ÕÊî /HLÅø@FZ$©zö"νFã~ϱÜUfÌK¤¶ÛogàÇú0ÖrJCèg¥Ù:ßýÇwa¤ä"M§yAòà¦ç¤ÿõ}eía¡´ÑѪ¤qh@;Ô0BYrÚ#:רڡ>£è_°¶>Ã;¦ªt.Ø#Â[xoQÅnStpíô¼&ñð^xÖW,±ZÕÝ»9¯Ð©¯èÅFå&Ü:
{Î_ÝÉI\QÖ¬²¦¬Äa¸SÍ\ûPKçyÇ
®)xEÁu¯¥ à`
<ÌâP»p8Eâ«íi
î`µw¤°]i<Ê~GYcõxPºªmygpÅ,TQÀóÐT¼ÈbÅ%Vq'T\ÁIWѯbýn`XÅ«èSñ:Uq¡f0$°£»ç@¦»§8§/è©[íòÔ,{QsÉs«BæÜº¹æ¦6jÕæ¥£{m5øgE»¬Ì¡yQs¥³`JO+ëUùVMº*ðå¤@¶{s^>=c÷ø_ñ±ëÙ[`{÷ö=ÄvÞ<dX7,Ð4bOKÔèbYV-W µhXòRm~J:ãúIÇmqïßGDu{ÄaÎjWô±-O.z>.MèÁe
µµÆõÊ è*ÚNEÓ«zyVj^1)W3N±´º'a¥JvÍ)ËÁͺå¾-¥l×,ÏyG@-;R÷dBîÓvÉÓ4Ií"½uVÎɽfziRDVÊH²âdêûcÏÍÑÙ
ûNü-RZguwÌvä¨)ç¥åo6v{¢8´ÿ4Íì_t«õ{!pxÛñlÂçsb4´®íKµjÕvdY§ÙO[ä¶,ÐùÀéRDµ±0ŦÔ]éïÖiufvï»1.v«³ßäÍD¹²ÐI/ PzÊhàwÍ_á:㯻éé¤ä
ù_YÃiZÔ5¤%·ÜïH\ç¶²ié%´5ZWZ¦uÿ
Úî`Ïr=ûAÊÜB¾D_¡_ã,íñMCE
°"È#áWÔ¶hºé¥Ò#Ïúýÿw¾WQJ¨ÄåÌG1c3Ñà÷cÇê|ÈÏì=¤óùìþYV7°Zè£ÔhÜhÅbf&Äô?s!æ-ZÙ Tiï=h´}ò.!ÓwûþD¢Ø»æ%¨dØ+ðÅ¿r´ÞÄy¤H~K¿CßÓh~@;n£?âéñ8~¦Ô+~QAbºFÏЪ £t3ééÄQ\ÀÓ~³/Å22÷i,s7ë×øZÈ\®ñ¼`ÎHdX¨,rW;¸\oÒÐM$1OtZØ0×$WO¢SOAaBHpIù^Ý@LùÖO¨°}}WÀ;þrwSñX(ÿ±>Øk2Ä*ã©8¬lë=Âzw¬þ<¦ãëÊE±>'¬Ï¶À ë:çÇ<ÿPK{h%#c
--- NEW FILE: jakarta-oro-2.0.jar ---
PK
ÂÀÔMdÊ(R¡o³w'3#T=u3ÌkÉaÒJþÓÙr:ÿ¹Gr5ÛÙM~+aý+×Kv»ë»Ñ+Ýt·%0ÿÎ:o)Ó}E¸ÛÜU`²éújÿºßQá±ìx»ò°6ÆßËÐë°Ë}©¼æ8öýþ@ÑqZ{Ç´l¬sëþÖï§µ¹çhÞó¬ÓqÁá
¬>¤²Ù>ØøLz/SX¦Aè¯ò<ЪÊÃA6j¨Pü)í^Ó¿Ú
Ûë8½¸óÌF»ç¸NðZ`j#>kgÝMb¸²¯Èf« ¤mï®;®Ú=í·([=ò,þ»5êí»Ð¼S¿Íå)½ÖlÚ5{ë@¶Ùܩұ!°HçxÖÈ,²\2ÉKfé ÞxKu¹òp®4¿°â±@[2Ð[âe S7lQ ø3º½¡;?å&BhÈ: M·©¹Kß(.ðp&bïAÇ;ÌbsØ¥Èül+´¥l®zãù+±}Pìq$*Æ"rÄE«!²IÕgä "ÕãXU¡Dl~¨*Ð2 ɳMâéoPKDöuß
³Ä tKvÕ½ÀVSÚåM]ø[ììGÏiêFw¡}ÎésÎs>Ó?׿~#
·Ø5P6P1°m`Ç$Ê2fÃ"ÃC>'ËÖ±ÂPdXexfá%6,¼Â¦@ªZû,P¬¶.äi{ÒØg¡výAùÕþ#N«@lù]ö¾);ЪQh·e*í7m$fh5P£Û¼cRPGäVL^§ûÈ=¢OÙïy®ïïöc'ÝúJ ßr}ur9ì*}.»1åûØûÿÖÚJ{õ®§|9Td)ü'0ÏKÝc:Ó<h
dçøàÜÀÎL'7°ê%æuxÙ¼Ê}ëµ:vïØ»ÇÛÑÅ
ºnÐSâë%¯Ä§L6Ö°Bñ½Õ£, x
ô)&È]!EÞüæO
<'\¢ß8
6
8!výo×ds{ccä¦0þ ͨþY7=EU#V,z3EfV¥C?RbU
óÑ ·ª)²³²¯°àó"ZëPK¨ m¹
ÊC´t*>@Fø
@bøÞë,ÙÚÙ³_Müð¿ÐÄ_LD2ÐDó2Û
ARCÐ.=÷ö<>÷Óîüøùù"G>³*®©¸®â¦)Ó*n%Év: ]RtKÑB)Τ ¢WºôiÅ9)F4L`L¬+04Lb@n`HÃÎ3!¢=`ѶùKnZ¹hE¾ùTævÉ\ó\Ë.åÇ2Léú%Ç-¼ÊÏ
é¸éºgº¢$êæ*÷<áÚy H:w:@;2úf¢,pEtl¹ÌKmÔ2÷ÈèúòJnbá?áw56kÙ7Ç Ì;[!¹P/ªg9v!½dÙâÎN¥ Üu^(yøäè«õ¢ð¹3ôÞzù
Û¼"h%ó¬2^svÜ¢ÔQ~±Í¢ä1Ä7+Í`¹6qdæEY·z Íýò:{¶RØE
TXjÎè±ô)> IÉ 2yùãVÄß³V&¿[Ï0xRô°ícèª ¯ÎB½êZÎPh°DhR´*
¥ÙB2F÷(Éë¿S|ßÍu²}$>@d0
¬Ê{-û¥mulϱÂÀõÛ£ËçñRUyVIóLùÒÿjUåw\Ï
ï
,ß?i?¶ÃFó©ìõ;áMegÙþ¡,Ýs=ù¤ßËà]ïPÍÍëdøý !¹ÊªÕ:Òs¦^«uUyÆ¢Óé¸ÞþÑQOºúÆ%ÕÿU5é
¤øýcÎ=âÀâßöë-Ù§¤ñX´ÿcÇË>¶Miùo
ò4´ì¶5ýóótä©5åK
þ¸ nñ=¹*ÄÉ1õ
Ø"à<[eâ|é] ½KïBéýDÀE^,½K\*èeÒ»\¼BÀvÅOE«XÈm®k\Äg»Nè®t»ÌÞ ½eâgÒûyürÔì°S&npCñK;Rp«rÌ6º[&ö8ð4îp¿6<"à18"à ÞÆ¯xGÀ»xÓ¿Hï=¼èÀû~ èþUФ÷±ô>Áþgø÷8ðL|C|!+þ.è"ÆWþvàk<êÀ7"ÐQ´;ðOüÎ É·Âï;ÿ¦ßø/;ÐÁ=îs1?RømòeYpxsJÄÝZ<à +ð¤l¸×A'ã!Ä~¹ð+4
wº<aW} äû~aP<^À鮪rùa×&OØ[ëª6zj
O̦º|~þ?l7{êz°àò
x'|U±:#r
k=2=43«tg³'¿Îã¯É/}þÓãy8¬É÷Ô{¼µF~ ÈMá|OãÆüòsýaOSY Ê`B-3k%Áµ¦H¢,nÒ¹9é¼êj#xZhe¤YMHÈ,*É*!dJÛ¿-Í%Ì!%³¤WÙÓ{ÛÞ\Yb¶ÜädËë8l¦÷JÞüA£ÆhÊ_æ óõøO±{YÉëeÜìÔ^'úµ×^@ÉËaʳ(³?×ÑÏ;Ð?f+ÅúCiÞÝâ~öã5E':©9M_¤=/ A(£ÌûygLÚßçr5lZo]jWÀëm~/ûFOÈ2®pÀµÅòØÎgúü¾ðl^ظ±(°©ÞWgóÄ8Äo6¥¨°¼¸²¤¬¼¸¬¼dyÉÊâÊ%
åù¹ñVì þPØã¯ôÔ50î_¼ pEéò(½¸ÉkÔÇ 1;¶ÙÁ¥>¿m¹g}¯Û¿#ºÌ.#\å
õF°º®!Ðêòo¡zÃë«öU=<ÝnK½uFê=¬pb·×è×¢_+Poø»Qtç7²¿¨qSLê"ÈÍèSÊ ÝÖø6A×µYÔÚrt7Ê¿ÑÄ,ÃÌÐ[ë z¸d¢©}ùcvQå«ñ
{Î^hz>¹bG¬Ä¬,._¹t²ËÙj*+=áÀ&¶ÊÊõïÆP'T»<°Ñðmåz£Æç/ô{kAq>º·cwÏ
¡39>±-TVz=!£ÜðËî
[ìEÌÆÁCrcËä:L¿ªu2cMõA[,|©á¯ ×>ѱl|¡%FØ#üM6±@I°VVwoËåG7VYY/Z\ÁÖøª¾â#h.¨÷^ØÎ½¨òI4E&ù CÌ^C'XÕ(hÔáØROUUTbý3ÅbDÛ¬?wWzù
6ºº@ã²èÎ!Ñe'4/^íe¤¸KWV@i 5Â: +êë;QÑU`ULoì¢*ëê°Ü©#$<ýF£)Yùúm¬¨
ÞF"½Áô¤ÐûIÀÍmM¢Q@Å\ú鬡¿!@¢Ç·ÐgØFãFú;n§à×ô5î§oð0Å<ö}Wé;¼Mßãú¾åþ÷ìÌQR4>£q*òN%Ü/UÃéJª4ºL¥Ó6å¤í*nR.zE¦ÔúR¥¯Õ8ú§ ¨L5Te©áÊÒTÊS¹j:ù*_¨j¤ÊÕdµR¢6¨©*¤¦©Lq©:UmS3Ôµª@mW3ÕíjºKÍVÕuWQ
êi5O=§ÔªX½§¨OÔéêKµPý9w¨EZ¢Z¬%©RÍ¡hj6NwsOåìäé<ÇyáóùeIDàPÀ{1÷;0â~ã\®¹`ë.8¤¬5GÈípWeç´be7ƺÙ5þöNÎîÂXöA¬yÎRs·í¹]a`3ÇEp¼LàX:ãp*>A:ÇÑø¹O1
_`!ÇÞEø
Ë9ÖVà(;¡yßñCÿ7¶ p$½Ûñ~FRØOî¡D<HV!~oð
è¦ë:ungÃ.îvëkÄùZZ1Ï<áZÓ®í5XZh]o/µ
J:#ªW"jI`©âùÜÇ1~Ææ>ñqÎÌTK:¿<&µFálÆ[° 2
4öÃSmXµI©î9-V'vw|Ôwd#f ½QN#xY·Û>bn'zN3òëÏ5÷léyN¯2ÊÌ"eÇìbp¯v1«sOgú|b>±ejiDî!&¾åv²/Ùed?ÜéÖÏá5¾TK5}|#Q]ê2U#M]Á ÅePüÅjªk8¸+ÕuX§nDú'?Gú¶ªp)]¡nÆ5jnP͸EíÆîßîÀ½êNN*öãQuTwã%uÞPà=õ >VñzߪÙS=B êQ²«Çh¨zÒÕÃíxõ[r«'h·
êw´@=EeêY*WÏÑ*õ<màÖ¯~Oêº@ý.W/ÒUÜ^£¶Q³ú#Ý®^¥;ÕkqÖkßî£fí3Ót÷.LOÓçì¤4={²Óô5»0.M82MÏÜ
Ô4=k¤ÉÛ¦çíUkŲ?¦Ë43ØîF2ö`,öb"öñKÜË!v7ïó)î¼ìg:%á7]n§yr·üîA@©XÐLóYÌ<¥ó[x6Y3;Sb61m"]rFk$g4óÇÄcòÇ®´y2|6Áü5qn<ÁR>)x§Qg°3÷³¹ä1/ëöî?Ç¡¨å¬@à:mZÈcmGNAbF¤&F
YÕiË$ôøzÙ(R2vw¼àÜmö÷ÅÙyò±vÎ'ªæUÓ,-»*F©wQ&s^%OáÛ öt>Ôµ{%RXÞQÐhÒè4ÊÂhrcãÓ)EÓi"Vs{åa-Mæo
|ÜÖÑ)ØÄiÓ+¹ÝFSq5tÓËþ;Ìêð±+8µ´+[MçÜüDS9ùæðWÀßyüåÖ³M9ªÛÉÜú-èFÝ&:FÐS¸.9W,BÉH ¡8
RøPÃp&
F Ò» üe¬È:ÝÆD<Û¶i}â¿fFÑÄÄ»l)Ù<ËHb¦C¸rÍ¡¿ëja1Ï+i;N+D¼fsë[͸*²¥kÇ´xùIM×¾Îí
Åÿ`ñrG#[$L`:;× K©ÀêÖÏߦÛ-ÉÎñgY²Kâ&wIÄßÜúùâYwbLÌqf4 ËúÙ± _`+°¦Ú²%c|vª¥
ËJSm]Á:ÕÖ¶Õ%ªÃiÙÛñ'ÆLbîj)GN³
¸õÎ0Âb5ÅÄrÄ®VöwÄÌàÿ"Æ/;^ækÒ3sSä®fG¶ÏpîÁÄZ±Z2D'ëJ©ì¥0Íèw¢6#r¨
Ç¥s°ô¿:ÖÑS·TäÌhÆYÿ·åfÔ¬þ0L¢$çî×ÌFõ?¥4ÃY5-)%IÔbÒñ.M?¥Oê`{;^ë&~ï¿2عL7?<NXR]µÊøÃBöóD0NÇZ-B"«)´ýç\¯¥Ü?¢óï³hûÒU¨¦³Ø®æf
6Ó9¸Ö²ÿ¬ÄvÛIëq󺼸ªÐNÕxjñ$mà|s#^¦Møùñ.Õã3úþÁåìQ
ã?´¨P¥R\tM¦jJÐú1ÓOh]L«è½©/bêKêr½ÿ\I¿àþNºn¦«hm£}t5ÝE×Òt¡ëé)º¥é%ú9½ÅÔÑMô9¥¹ºJYèD¿TèV®¤¹jÚÍÕÒ^®ö©Î9N¥5îPylçk~-Ý£6ÐUO÷©Ít¿:ZÕÔ¦n vµÇöÐê
vbfÔIåJe×+â²§ûOìc\E®ÄÈvL]ÂõàQZ),2Ó3rº±¯êo°«O1X}ÆåÂç\.|êKU_!G}©ê¨£§¾åá;.þ
CýpFئi¸Z³`··i ¸çZ5+ÐlxÛ§5;×ñ+ÿâ%z½ó£äLãÝ!ãZ·}yT1²¿GNÑÎWxÓß8§xOðÛ£ÉÊÈhÊfugkmðènÇ/NYöptÙVæ#w=WîÎi¹`GÔp[1ËÝ£
«Ë#½"kÇI8[Qa8ÓìðÒòøl4[´ù°kÅHÕ`´v:rµ
¢`¦¶ÅZi~ÛëQÖ÷<ÊêË.»"G)=îQ"ç8µ§ÿ·ÇËÇÇÇÚLÒ21]ËÂ\Í-'^.Îúä/ù_PKZpåð
¥"é;¶¯ÓIìq4Ó¸ÀOðEE "Q âAâ
øÎÄmùÎ=çå;çÞû÷?¿ý?Îâ¢èåÿõæCX!Â
r1ADè÷h«1Çâ ¤À©zðx¤Ð1'ÆÒ:^ÂñWðiQgfÎãWñ<Æ
þôø%75Ò
ñôâ¶ù±eV3#.'þc-Ùèk¦½Y.m«²;Søç<ú óªëXö;¾Ê!ÊÇ¡gÖ²-wdæ¯íÐSõ½Ûr'%L³ÒÍ6ì¦kÚî%³Ö¢ÉíÕ®kѪAcEËVKzI9kf©FÁ»`Ôj£åUÞ}sð]Îj/äòóëkÅ
õ|>·R,,eWroäÖØG±XjU«Ê)ØeGÕí®þb±©L§|õ1êújwµ\6]ûºúªu]I`¹å8Ìso{¤¨ìÊrõ0¯ªQÕeÓePØt³]nì¶¹ó;£ïõXX¾?9Þ9gñð13¶®b²±³1w
B¦á42®Ús3æµÌñá¡pMi©ªÓ¨§,ÙH5=§£Üc«Jj*Uj»ª9gy¥·q/b
&©ù(}r½5o4äÇ»ëÉ®>ݳ]ÉûNìáÇ'Ág¹2¼\@Ä8@¯áï`ð65u~¾8Àâ+ÚFRcÜénÜiîù(ÃÆÄP/>
xòû^ÈX7dHBÃ+5Ñn$:è3wD
Ãðo²<¿ú
ÊÐQÎS°G*mR¹Njocïài¼qÚ9®}^¿XGFV7ö1ô9Kícà@¼r>AÙwånp:À
xúK~¸`Íä
DcØwȱûè_V$Å
f´=Ða!±ÎT0µ
eÕC¸Øì`Îi»Þi&µ½&ݪfè
%jÍÎH´&îéѲ"ÚúìÑh$z»»§âG{{Rñs»»;Ö+4 +ím*nj¡ÙáX4(Båè%[fG§Ó)k3½sÁÆ(íºñYgÓ¤&
²p³RG_5ì\[³ÎwWZùrß+Cc¤³tɾáTà'ÐÇãUØH´a&3øÙâ_(àbño\.þÅâS\%>CøkÅØ ÎÂÒÉÝíBBfñgJY¤R6vÉ\ìÓp@Nǽ2Ë<A=,5VÛl¼j|ë9*±ãÔS8¶pjïñ@èn£1¾ê|®£
~*çj^-·3ç»0GìÆeb
'êD1ÈÁÂÍÜs±NLGÈIÝ%
y8ÍyÌP±%×bwpùºà=À¦§µ@Ù3]29² 0Ù¹Ïã_Áâ)2¯×ÖðâMÞaoÁ·qÞAÞå÷øû5ǽǿA~ÇWßp>àöý#ßjæ¶ûoÈóC¾?Â.ê;hß¿j0Rc£í/;/tG´w·íý¡sQ÷È
çÿG¨bM¨
çfñ:ÏYÃë$RÅ U¢×M TO"OâBÔ>ôc>nÅÙKn%É|@×P_ÇÔWð½{Ø^ßG°yÚíç;H02r~RGÿPK¬øâþæ
yY?&²ºINÙào?7.ë*Q¦Öݳ7%S;C«1æ¢ð«d(SŰUV.Dú yY\ÉWÅÅxÄßİùè,êÆz
Ø
ZVY¾¸µVYµû²[åµûìV¹Ùsþ!'«IÍw.ÿùÏ9}ÎéþÿïþûÅWða%¾ô|ãô§à|¤àcgSð©Q9yc
>Áõ!rO¼1n
"
73ÜÂÐȰ¡¡9k bC·2ÜBZ»á^mcîNö v°n3Ã]A¶
b,nå\º8»9µ{Bd·uÛY×Íp//ÜÇÜýÌÅÛÁ&s;UìAaCVÅSxDųxHÅACاâ0sÏãAGð¤£èQñTÃc*3¼CÅËÌÀã*Nâ ¯ðÞW^cxáUqý
s 7ð°7yá-dT¼¤w°[ÅzU¼>ï±ø>ÒOàªø¶/8çóH¨¸
¸Ñ0
w9»6k®«Ûæ*6¥¢5YI]¬&Ët\Ít»´td
8§Í0õölÿNÝîÔv¦I[Yª¥Ú¤¼Msz]v0͸*aÙ¤\úÞN)Y(feíÞbp*¿Û<¿»Tü)ÚjºgÔ¦k=
8e<rJ¼Ùµ5Ó0;ÞÚÞÕØÖÚu6vn 2³¥³(Å·Râ [×\½]¹D%ãzÆÝKéðÝLn¶Ã5,EaFî+âú`ÆÖG,Ç{4ǽSËpÜÃvÜÉÛz¬tÚ.gÇSº+|4Ú¶¶3èÕzÊ0ÍD¯eSOY³ÉLåòx¿æÒSÐÊ"ÛM§½NrÆ& ÍpÈ}@ð5³ýÅ\ËãVsqØ83)±"Oþ¸mYÂã"ä1ß 'T=Þ0²ÓÉMi½_7ÉÎH[&m®HX4éÜ¡Ó3ÎòÜR,QP÷ì9¾;«¥)_ë"ì(&ËBaìé#ð¢1Ý6´´±Ïí¹Ó_Ò¢jÒ`Ñ\ë)Þ¬ÑT0\5Ó´M¼ÌdÔÜÒX¥MSûBM¼BhÄ W2²õ>½³/åϽÃ%cmó
Z6VÓ©èGfCF%áiì½tÔÑÿ"<3Iéxÿ*ÐW:Aé$4A2,P: =\éLNCAéÌôXA>.¨~{àP&Ð,ÊY¡;Ids"¾®`XYÃ¥úQÔÊÉ1wyÕó(ß6ÊÂì
bÄÎÍ¡J°¼mósXÅêòXGÃ< Bëü¤WùóX5ÁÈ9,c[ú-ÊãºM\ýåqÃy¶ñbѯ`å.Y P
EC=éê«£TòøËÝ$®`nÕ³vÉ;&¢³uSs]¡ô¾Dy5¾
#h&£êÂ3Æ|
òíÒ°¼¦úhWÀ|a±¦ ¤ C²Ùßðø?|R5ù?©ÏcuEødz¸®:Ç·@< F Ð &¤h|ú1Tc7Q®õÈ¢ØJÍJÐôÑ.Úý Ä~<JßOWÇpè22¿ÒÈüÚþO¢Óàýg% ¥
æâ°Tç¥Ö਴øvÒßcÒÒðLo4¤gh0ÊVr/ËcÍ×ãú×,¦Ç]Û OªåV{aYVâê¿èIØ/::¯`]öÓî°<$¿6þ7nçãØ?Õܵí¢mÜqE´SñúZ_¥p¿B¿Ãb¶¼%²0kO"²r1ì2\MÅá4^#¸våâ²/ÂÞyÊ
ÂE!Åë©£XÙ1Ñ¿T¾N·ßSô¢¦nc9½kénÙBWËNï¥;e])¢åºKÆ8éù¾ÁYü@ÝûÉ?âSüD¶ÿA¿ _þϤyÔaàEÑ,@åçöúâ;{1£øÄ\ ü&ÆÛQMµüê-?3Íô{Â3ÐK^:Ýë·ûÅglàPK@ÈÜ
Æ1È0`JgÎ¥c5%÷¬U.Ë®\b
ý00hæ¶:fu»PÁåÔÚ©k@XÒ½suno|é\ï#²ÌêOÓj'¹ª¾Ì}.W¨ðQÙõz{ÂWyeËÐ[â¾»Ó¼8t=çÐ#Qßo]$Ë¢ÔÜ
®º]#Údìc4ä®hpÉ
Onö±ð<qõŤmÏù®HØ~Óó>*¥ìzÄSz]{]Ù¿ýÖÃÌÿßY ñA¢N ÓG»Ehá]®ØBWñ¬¢µ ?¸(fBU®!K+0Þ(}ìc´v?#ViA»ûÌÒCÛa=zVÅv`´K7£TàC:Jß}ß&Û"ä;sÜ$!Ió4¦Ý¶éÖ)©ô¿PK±ªuQ
VÔí¬Eù#Ä&5mÅÔ
Âæ FlN°9ÉæTR¢:uqÞé ÄaÓ-!8^ K¸³2HH`tý®âAF×p^Â0.HÁE cè ÊÈ/¨ËªÒ°uC×íf8Sàs<aG3¯ËñÆùð>NåÙ\"oZ5E}ªVæ5Å´LÅÖVmE]y¢×muµh>ÖèyöpÙ£ìå|£z]·ÇHªÍÑ~®E<'hÍëuØXÓ¬ûêAÞ£±
ÌUѲ:ïñ+Y'.WukÉ4t[7ëT¿\5
Ã\Ù´
u·lhU[@ \oÆ_ÙÒkókÙ°s}C×jÏh;¨e.ª«LK@÷¿.à* þÿ+BKúÚF¤u¸]À¿AÇûhP{QÇ¥ ÅÈä½ÉMø>¨¥9ã4¨ÿÜÔ,ÉÇ· NoÂ[H'¿@Jm ù+$ÆáNÚÓîxf¼B¯Ñ74§vvk6h3nq©
´¬!³y.H¾°
¦i*ܦñ
mðûëK±ùä¦ï§Ã;¢@ÇÑ»¤çs^J C¢uzL.
·t)Ö$ëÜ*«¸j=.aoÔC,ÆÖzbh]C(ËD½Ä$öNÜþ°ýkOÂ$1
·#y¿)CaÔ
ÎÀE®
~4 ¼E}7®+$Ê´¿Ô¦VF»¥ªL¨Â
ô5"
ïÐ'ú0¾Æ0GqâV±Þ!uª0=T¿~{ýíÃJøSé@û¼}èVQ9õ1öìôâÕ=·$±K¿KêELݳÄ8ÝGL»¸ü/RÞS§ÂãPKÛÒ®
Î8˸h`YW1c`9¼Y²wùnyÜïX«]áÈ»q³Rz©ji}pÐ-aV£«inVKvv,þ;;Â
ÂÀâ@ZüíÕxçK~PÚt÷\ß÷f+;<äaÅãÝ®z^V}I¼B9
i»¾¨÷ö["\ã-*¹Á`=ézÖCW6,Ýz¡#V\
H5y»½ì çÏÈ =N5ÿ-J£4/ðéa¢¹Ï%Ý%GÃÖQìh?ò8§í0ÇmÁ_
ZWHiE@Ú Å}´"ª§ì6â
½pô -µ}Bß%äð;Ãòï#RaîÃßß'ÌÔY§æ5jjÓý
ÎU@TGmÜÔ¶7ãÛ«}$jKJó?ÁÈÁÒçëÈâ9ýé1RF,<¥X 3ÙPKÜ@î
¼²7¡àvôÌkHvþ¦úâEk¡ØÂ¡à¡ØäAB6k¯ëñdÜyfº~èÙÉÞ÷ùN@¨¹?¬;Qïz÷|u[ö]wýv¯Óê¹ýÍ0åÚ×GÃ0íüx(6¢¡/ü(¤4î
èàÄStþ3¢àîqA?2hnÁ¨ÍÝ@Éb(®¡ú·Nýø5ÃÊ¿I³zB©ÒNè0%+Cºå_lE>EÒìIçéÐ>ÐË"Ýî#G( j#gV yRQ#ù
ÊGhï!nä"16Å{
ÍX&K«Jt+*mïL¿@ͼ"^EìáG#lÒA{¨JÙtÿ·N8 *èÿPK×
æ]ÂËT°Àì¦\Ç98#TSya5Uxm¼3´oÙÚmË/~N.>øL ¤æù!¬æó1¢àõeµàz5ÍxkTê¦æz®æM_3¶Þh¥÷o4î+3×ÍΦªå|ªÍ9µ|XQ¹ÛBE˱ü[Ôær ô,Ç,66ÖMoÕX·É3ÝÞû³Y"/¹
¯b.Y!¢Wl×!Ы·é?p7-ßrª¦W]Ûv·:>Ý6þÞÖm³êÄt§aÛ-Eݳjur&dß¶áԴï$½Ä
£)p=ñ£iIüw§tPÖ4!<hàkAÚÝ44°i¹ @zátfJzf¯äÈÊ4w Ã=$ç¹`aYdtÁµô7(ôM°ÝEôË~¦YÀ1íè2ååüGî VàH²+{¬Qº¿£bx2aè$ý<D!¦°
é~J~úØöûÊ>¤DÊtzMÈ-5ê³N}WÏ¥´·´÷?>'¥/H©NJ_:VÈOÿv¡y²|PcB}1Ð*E,üPèó#]&ï:ûPK¢É£x
R Â6®6ÖÿäAA,(øüQâl[=jfæí7oÝ÷7(XGÑÀ¢%Ë&&LddRÍ2-LÁ²0
yL3(vùaÍnFñï¸×NGN"zÃo/ö]ð^+:[åÛ>nÇ3èÛ~è';j|ÓE+½ìxwbVÇ3ÊíéµÄçü3í(=Q÷¥îzAÐÜ@&Y7L`xÀÊoþ_HÚ Òÿ·Ä&=vr)ôÈ´Ï*+y½RíC{$ÄP lØ4ìR¥ÿém¨Náì°ò£ú½õá{R§
4(09*RlF¹ÿ¡«SÌ|PK`nò3
Ç*»K;WNYC¹áØjm+¦jñ3£Të¯6í|-Ì_DS;ý¿g(í¡@ÍN
.¢uòv 3¾|ðâ39<)#û%ÀÃ@ØF9Ç
ÔrÜü·PÍUM²´>PKýeb$
¬NZºF
O)83<½¦4SVËeùĺüý6&CÇE32t]¼ãø¶érEz ?VðéKnºÑnî#kÞ´/tW(|@Fë¼ï¢$YWJ%9JÌÃK¶¿räq~à÷1Å"j^al@G^cw
ûhïBH
Þ£ZeáeR|W`²P˰wümWd²H^ïÞñ3
}ÔHP$it"C¾5=M¾¨£ Lë9íÃA:âå>Ãqª²é<@5·&öÑ@ºÊÿ e½èßeÇo¿Ó¯û8Ó"<g\ºPAòª°D\e´c
:/Ó¾à>ÿa'<îÒzø~[iÀ#!ÆÛ ³¯Êpÿ!*ÂoÿZ¶EP
-Ø"O0Â?PKó*¸Ý
k#¨
ì´·¨|¬¥ö a
zM
iEa
æÔê<î+ºJøfÌÞñ·m uÌ87%ãÈ ]íD|¡ÀðÀJ¥óRÐkF·ä¸¢#¬9x,ø¢É±)(%}þ¨8kRjIiൣÅjý¿DÍ=éÕÚ;¢%;>Å2Ìí7X¦Åµþp$
WW¯O'i&»ÀÒõUL5U¬Kͦ«±øBsÖvlGü23ª?<ec!M®Â¤{ärI®çõ£7/áQÖæ¦ÎhÀM£Q
YÊ6Kʬýduâª`O`LU0x
ÞÖzw,óµ|Þ¯^ªw7úÚÙé°à§&°ÓÛêoÊóí&®pf*óä É̤ÌdRiµþoeGÛ6_hw[+iËJÕdzR3ÿÚFm`ÔçÛ´Qu¹«&kr°ºJ?UùÒ:ßÜ~¤"ë4c!`_»º¶f]ÃÚZÊÊÚ`G¨Ñ·ÜÏ|@g644ÛÚ³=lÒd®Kmhðs¥-õµø«Ã¾%/F¬4
ÒZ½áé¹RªãË1ZL#øBzCC £µ5;J{CC0ä'ÞV³Îéôhhh÷¾)mOH)ët´%<³
òPõ6æè³ÅÛÄeK°ºÕ׿.«·½Ý ªÝ
y÷4Û÷ÐnØÆ G·%FÂÖÈùðGÁÚ¸ÝZB4-X
"^?[ Dô
E,½ÅUªh
âvÐ0nÎ/CrÌ
cgo/ú³¥%ìh'ûLLgøÃµ>\ZF1¦uÆí6ÀÛáLJ RnÃUßøî¦"¾&Öt"þ6_jþÁ4KýÌ»'ñµ%Ù¸n{(¸+Ú
ÒÏ¡AÉC2Æ
Yhòí^ÕLahõZ"1WÛb÷æº"÷Ìâ¢Í³ÜümáÝ[(^mÑjÑâ¤å]«Ps¸Kíõtâ¦âj§}K¦µ9jó5»8&¼ëF\Í»¢)±Þ«ÕcþÈ"B`öÕºß IWXS0ª)0õºà§:ð¨a_£iVE7å}Æè:±@ɧèÃGæÆÔ±MÓqÎ,{{0ÞC³âcÞK¸Ñ§Æ7Øc Óp{+ohG¼ÇN»ùÝqi`âj`tßa]®ÓèhÇOiü
T_)ð! |<¢Àç¯x~?¢@íØ©ükSL 0o<Nfob*ÿ5ÂÚTDÃWI@ÁÑ@~lmôî!Ãø#ño¼ÿ$ñg¡?ºO_1·¦£¸6à¶lÆO;)!s$9l!Wø\Þ"â^ÌïAÍ¢ÜQÛ5ÝSL«ÞÔyWtc6ãÕÝTóCj&S§øÒÅ9dóÈP .¢T¼9âÒ0õçbêý1õsLÍuF|d[ êçSGhUx-i74aðÁ-ÉÌ;ã±H¿FñáÈÝFzæ½k8Í1WÌYsx2ïl1Gça[ã8nNõcL½'Èå9M½¸.Æ:æ ò¢¬cúJ9ÊØïiz¿N²l 4u)ê2¸Ôå0Ô1IÁµ3ÕU(WWc®º7ªkqºõêFxÕMhR· n%¦ãDÌ¥÷¨iZï+¢NYûdIpÉs©RÍ1Tr*:GÞ,Ê=kYa¨9%÷ªº(ê®Å\[iº B¥&Í£ô`¥gÈÅ
u¨O@ª'`WBÚ
qêILT!7O§Q¦¾
V¦¹úwzµ4·Jí#wÏ»çáW/àVõUDÔïâNõur» !2YÍ^IÎd~B&OÀêXhf¨³sòǰ1ZeLIererer"e2\Ì%ó(Ó)ÉBT«nrujÔë(×S&çK3â|\âÝÑye&c>¥ÊäÊR.ÎÒ
ÙfVxàQ<f&+âÎyâ,5ÔÆhXÎðd®¡#jy%3DÉP2wR2w§{ÈÓÛÉÓ½äé>òô.Ü vR"÷·wS"ï¡D~yyû
ñGå¢ß'6jdò-ÃåHûk>ÝMé³Qi:&-tÔÝýȪwf÷¢°Ò&*íf3ªLëGN½§JRAµÛ<øAa7ljØ£¡z Ú5ìf¯¯°Pµ_¯VX»P`Ø]±
óó%ËÐ(ÐÓgG;ÂeuY_~Û\¶i
Ú©\¦ÉF]ùÐå{Mu\QUÅ#'$í4eÒF¤+-p)~LQv _iEÒJ³v, ¼D¹
«Ö+alU"hS:¡÷;=¸ø(·ãr'^Tö¥ÝùXÂ
beJÁòRä}¯*`SaY»ûÄûólO<Ø¥±`[º°#ìR%!Ö}X$Q·Â]®Vh](¤pkÑpÛÛ%d63ܺùeÅBüJõøå·â·tª]êðuFÆü
äí ?"?CþÙò/ÿòL£z,TÊÏS$+
juM"®`âÀ>âT§'¾-?H
}ÑP©»ée]ï&|
5Æ^Â<cìy«ÌìV×óÈ42_ÆBñ0\p[+õÃÔÐOÓÞÚVadhÇ1ÅÈPÊácgd¨ågPw:¥ÇFþªf
§¥Â.ë+Ò*Ê"óUnd¸,åÎÍÇàÈU÷Ó'pIp9!=÷.K
Ú?·ÆóAYÍ8~ù
CÅÞÔ¦«(V©*O£ËAçîJR·²öÖ¸öù¼:i©uYÔÄùòºÕ4¥¢Äå4õôàf&ÅtskÅÍàj`kÓº0ÙTi1'{°¤nÈê\iòj¶R]Vh.§³ð(ìJ
VYas¥E}Ñ\ðsKá^ó{,z«¸3ö~s>Þ¾{ýÖaïüt¸¬ê^n?5.+]Nx´FNs4Fyæ¨Dò)PÙ¶)q7,|[yseÈçZ¾´ðIvÃeçoîp|IïÇäzc ¹l½(ÌêǸz#ÝÈri½(«Ì^q2Í+Yª4åqi)*v@&Ýso?b'¶PýÏ.Ë)çÓS säL1E.F©¼³ ÏKQ%a¹¼ö÷çÐ,? ¬EX®À]¿"Wâ>¹
ÊÕxDÞÇä:ëqRnÀsOË:ÈqQÖã5¹ßðCâyKÞweÞ[ñ'Ù >aÍ"[¶\¹]J¿(AQ-ÛE2,¶ÈÑ*wv¹KåÑ!¿ vË/»Hæ~¹WûÄcr¿xð)Ù)wå=¢O~U%|NÞ+.ÊûÅäÒ-¿.gÊä,ù°\ Èjù
¹J>"×ËGå&yP6ÈC2Lx¼_îG #ΣÄq\>Fø|àò9ù|^½ò)ÙGx@~K¾!?'åÏ¿-¿Ï%õ£ø×°[J~Ríÿü3Ç/þPKo!,
-gÚQr(gN[h-_ÿ"Õø´¹¡öt¤½À¯7l²áù>#ÄÏ$Poy¾¼&®T]á¹{ðÝê¿ÖöÚB
r°Ü½ðµz:GAÈvHõå¥g{~4Yftoúµë
K3BÁH8cá;w$ûPûÎÜm9?Ø@3!SÉæp,ÊÉ0i×5¾5çZ¶_³÷çÛÇs$í£9Ïva¡`¼bæ52¸á-øM(s¥OPKï¢>
IÓ²°YË([¨!Ï´7®Êv³ïÞ»ï]§¥ºõ¨oÛM©º;p½w¤æÚ9sµ×;ð´ÁiÐ14³'¡÷Rò3TxÇ
}ý»i0ä"àçá]«+·í¶ü¥.¤sIÒúF ÍU¡8êÁlÉPy¼!"fi¡ðC»h÷¹§ÉO¢ëãÆuÊPûcnµü}õ $Æ rèÑ(éñá0Æb ý¤
7M3´E¢ã·õ;ºVÔÍ6íØYª:gG6ù&çoó3m41ôºº@²/Òø\cç*Ü&âS®á]Ðô»Å5˶4/9Í|IÒÛ&!ÛÝÀ =ýaéÈÖ°cµPÞϲKFÊiøN¦áaRV3ìLYfÙÑMgF/VHo9?:6ru<;I¥³³ÊèRö]à&·Ü·x·_FÃcMwô¢ó¥ÍËe%ÃÍãÉ3Åyngõù"½ÿ¼:ÞÑ
Úë@Ià'¦Sä¦Ta'k°2ÁHÇ~Ek|
û<È$aoâORHZÃ'àIËw®a¯I©/ü»½ _ý¹ZøÀ×´Ä¿A3¾E;¾C÷qßã~ 4~ÜJ«ØÚµô©*z
{n)â5¥Ù¦â¿¬?ã¯Â6*þê`X¼Zù±¤ôþÙÇh
zWÑ_A{ÐCGHZAä
ö¯¢åÄ2Ñy¨ÿ*å¾þX?U
üEÖ'ôÿ7ù÷)Íç:ðð}$5Òð捻ZÅo{íµ¿¢3Uýt>ÿPKZØz²
Ô·îm+)íòxÓhfüÇÄ£#1E³?Ô·ñá4Æ`$ÆH4Q#&F_Á þaLLÐsß뺷äsÏ=ç÷;ç{{ܼ߮0
Ö"j
qÈ÷two,Q¼Ò½%ãUåÕ«Èòw¤ª²&ä¦"ÈÐÜ «ÝݹE.¡ÈPѹuÏ\HJD.<\´1·&ÓIÕÇàø£Áx(
£¡Xh_0Þáî¦N2}2Ã@&}TÒê>)5L¶}{p¿«=²Gò¤ ò©Lo sd(^.1µ'ÓrxøH¯¬Ä¤Þ±ÜµdYIma¡Âëöv£±P$L)c]Áhü@°3tÆ#áb+£1g<à#1=,îjo)2Vò$OíÇGy¡²*%EJPóu-÷m²x|¨°$ê44$§û, }aþ
첷زý¶=%4ç|ôм¬Fd¤qeâEîð*ÞäOÚHjÏàMbøe¤müqÊ¡[´J fát mY,r ÝY,p ³°Æa4¾ç2kÑ/G0Ïq2Çq@ãèÒ8".ÁEHc
hL.ÁÅFPEK8
Ç%Êb¥KXEKhÐò×ò?ªåï¹3ÿBÚð<jð¶bûiÎè9õR
¼e´×Ò6Ñ3a÷¹µvÖJ8úÐÜ®!<²ª²û6dSYËi=ÅzoÏÁ|ãq|UÆc°TóçPᩳzKÎܺmVV+[
;«+`Ç?%úa£5Å|aÛo§'Q¾Ùlh´<ëg±Ò7|Ó8Só«ü ¶H£¯à nOÒè¡q#·öMÕJfAãqæ¨ÖÌ
æ ,&ÓLS6Åß¹À6-×F=Ò¢»¯«Aw]5¶:ͼn:LÆÄéqIä3½Â³¹/{vlz4qxqà&6Q²æCñ8äìÑsÓÆ¾ÓZy=º¯CO7
cXD ÂçqM³a«ªNÁÁ§°hóg
YT~éæi'u¥röP?¦«
äc×øB_nÙýºil0µþÁN/¥ó,é¼A/ü?]¬ÑZ|¸Òn¤9½ºTÙOúKD¯tØ Í &q·Â[ßøùüöÿòHpOÎæ*¦ýPK¨w¸ô
ÛZZg¥×^:ÝÒòLù°}¥ïÈríå¥òT8&ÕÖÿ*¾ÛâåaèOâ¦ÝI(ÔlâB}lR÷»À`ØV.ÀXÓè¨QÓ=åY !2q/3q/ñ¥oïõ¥ùF|¶}ÍäÝ´¸@Ðí÷CkýGTÏ&ë½¾ì"CO¤<AZ Ìaq
e§1ʸãÊ'¿1Æe3ÎÐm)ô¿Ph·Ä{ ·õì§(æ<¥8AÁøPKù²x
Rð´g<«à9Ï+xAÁ«
^S0¤àuo(xSÁ[
ÞVðw¼§¢UT
ñ ©R-d¶6©(ÇÅ*¼Ø¬BÃ!BÚl²MÈvQÙ!¤]@wúï*ÌÄ®*ÌÂnÙè=B.ø.ïݽ"Û'¤GÈ~!ô
9XDù2ñq¹@]¡b"*\©!~!¦#Bl
·ánÇîÀ
îÄ¿5Ü
4Ü-÷ !ÄÒp/®ÒpnÕp¿@=A
ÂÑðú4<,fÅ£²ût
#ªá \§áEüCÃK8ªáeüKÃ+ÿ>®×pWkø5£ ¥aÁhh'Ì
4tѯÑÃq=Ñîvl3ÑßLh`±e÷õ¤0Âm
㨶~ãhxîDºT:î4»@=o áP+¡&Ð^Øyø¥Ú@VjZáöD2í°'ClËåÅ·òÂδ3ÙÀ8ýÞ½.C¶+ Ó)òÜáE¾®¼ýLÙ£;a'ø ó2æEÅ6BºéÝuL+áF³¶eIÀtjí>ËU=P\uÒéZÁ¤çN¯êºÈ%?Uô¸~ ).rcYQÚ1ãá¾ZËn³j-á ¡b0M\ÃV;CÝz4j$%=)qÌì0ÆîôàaÃÞ«³Jm¾ÊZÒ}}mÄrÕÆ5ßÚÃÑ9ûmÓqå³õÙìb¡×M{¹úÛsIIeú®,ýF¹]"ßc[Q#²ìårnNu·¶£Æ6SZ&/Ñ£¹Ü«H4ç/!}:*EôF<Öm$u[çܹÖYÇ®u2CùôXlÜNåõÖ¸1h$Bet@·å~ åѸb®äʦptÓ0²[ØfÆT·®µÊûâéÔ
â',ÿvæ³Xä·¨ßpy
XA1r榾DÙêÔ&wHÜÍ/8[ù`ö`J>ó«¶ìåaÑ4
ÎÕ[ÂÆÍ>V¾ì«ÏÔ7ñ>Ë4b¹.È~Ý´õÎÿ%wÐi.Ö?ÜégP5ìø Ð¢i/ÐÌC.<½â>¾m®gËý_%hÉlærµ;£ðÓàz¯ä2e»§:e8Û¦ô
7e^'JÆMF«r¬Vî¶-¶ÃJ¤*
6f°x~1àÌË3g¶¹<²-âa-ÈÓX¯âBÞ#ôâ¸]ÂN% %ò`éÔ8â¤üky%G;Ë5MäLëY&WCÃ8oçO5ÿùwSÌy˼̡¯PËöKø·(´à<<^0ĸ,$^2_¸ùú|÷¾>cûÏ1¹_ _¢LñÌy[¶ÏÙX$Òßy|þuíÈÚÒ< W1ï·wÞÐ(æbASùÊ{GqNSŪøVÎnRü
»85î¢.F¿â/Ï`%³Öú¾Ûer´4mò+VágÞU±j2¨÷¬õáÑ©ñ ÔTé¯ü
vþû3Ìhò1©÷ûN èÁx$ëúVOØÛ^âàg·åÃuõ³,̪Mª_õ+'pQ°Í
ôÿC¹ÅK5Þs_<¹.²î`«¾>y¶¿bËE¸
ø@+1V VáZ¥´Ë¨ k©iÚh#vÒ&tÑf ¢VP´Çh;n ¸Úñ<íÄ;t F©Ò.|O»ñ3uâÖùºðuã?´¼´üÔCõ´VP§ÚNS]ARc¾Êø7|Y?¥¨4cR!
ç;¦%WóC_Ãçöøñ`AÕËwmð7[_ʸÌÿ|ûÝü_PKpTKä´
|>BØQ lÏxfwl¿¼¾AáAAÁ}v0F8ïGSñ$x&òO¬Qy:DÚ¤\Ì
|$®æ
Ë
¥Tð;a-|pÑàÿÏtBËBÒÜ*/v#ÓÍr¹qæ{aäø^Î2ÑK#éJyAG$I¥AX¾«²ÏOÉÖ|÷+äm<%iN2^ìA%e»Ê^D8j2}Opö÷Ýëê¿õB¡û@ð#¶!tháÀAɰfÖp÷CÛ*¶ÂxÛo¹¹PK´ápÜ
uê`VÙKîr)Z
ögª1Ç1|ÎÙø;scd
êEê iV»a^/f²b4eX#U
ÞÃÛH@ÔN²"Ú° >ùHàeeB¬HXbª8ÖÈÐ,NrHâaÄ-ÜQj'N÷;QI@G2ë4 ÷PK\«c
JJ64«öÈ [-«ÕeÏq®÷ÂPNÄG#y7¸a |.¨[KÀ0¾ÓTËÆ^ésè®ß9C¡-~=ìw¹¼w»>eJSLY¶oê¯îË`Þ
CéñK¡ÎÎ+zÅ.
÷g¨Î;9Sa_ò.ý³é*pJcPC§H½#-Ѫä
»Xþ )éj50Bï
ݦB¥ÅħÐÄ/Éx©8×
Úqµ1èÚ z ÌÔáÏôñt`¨îý8ÞݤÖ=&õË"Nùâñ ñîRñ»wÝG«Ýí4b§Ñîoæs6òzh5<~K] É\£ÌǹFï·¨"A2W(ó.e®ÐË¿»JfAk»Gä²oÁ^ æ±}£Íب
-`íe_×Ѧ½í5zÁYbþ,/Í}8.¾w{¦½îêGÉå^öÙy$mqN
ëæ¹8©t¬2d}zèYRÝÄ×
møÊß o±ßñEûñ²øÒÍü¼4=nÖáRêÏ˸z^2RV«ÍÈaÿYÝ¿³º?(ÿ'ºñÖáý#ßÅÿ-©4Y¦oq/)/X/~â]GLûÞ"v*â.î
´´>)ë§J>cÉæóäõ¸Wu¿«qÒØI
IÞ³üH&©dÐqìG\@«qªûØ¥êî¦S½M
Þ±y8įþPKöɦôÞ
xõ*O²¨f1ÅlñCyôc44çÆÄ="æ¨7Äc9.æðN
z³2Îcð®ð>N9[À¤ IAS¦Mãí>ÂÅnà©ÒxUÛy£¥ñ
Îc§Òr¼fe)\¯9¥_ÞÑö®ti^øùØ*¯Éí/Ý«Ê3çdhv=7¼fÀ`±êtoù®ªàeªßP«¾×/¼ã´6èlrhÁõÔâÆúª
Õ£ù%#¨«9W¾{¬[´ggìÚ½´|{~ñ&Um''äÚ
UÔºòBq*\P^3\ÚmÅ79q"ÑáßV-'t¤ízqÛmßg½÷iûQ
¢ýÈo3=±N`ÞÛ¥ÞÞ-úA8Ô¬ÌÇ©s.ö¢µÕª¾êæý Yq9õ5Uñ¿ªÍ°¨¦Ú¬ì5;ïâ"¯ï'×QLà]¨ÐëãrY ?^.Úa®2J|sè3úøÌZåÔ²Ï
\¢Íëð-dPÓ ãQÂÆEhÈÚAÆ*¿@Î:þýÄ~
À§´!!w:*p2ê*c¥·q`+ÎËèè7{6âÎDݲVcØlPÈ"øVªsâOl%Ô7Ùþîô+ákúWq:V7"uæ¾Lª;\ÄÜ·_4Ô:×d¼©ÓѦrp·1¤/kzw_WI}1u hþ¼`sbkÄè%õ¬¿À V0»ÄÆEºGw@k÷÷QýkjÿÉ%¹Û-^ëLþ¾L{å¹ëé³Ï}`hñ
l¥0MÿÜLÎêêÿHõ¯ÿfqoæ·Ìüßs»Ö§f¾vÍ;ý).þ
Ç*Íýé}zsfcO?ÓÎá=GÚÆHûíeý9ÿPKm5Qd
á Xà
?É϶ýñùö>®1à|KB?/Óx¾ÜéW
]µö./Í-!:ü+ßÙ
ÆË¼äÇú%a÷¬B*íÓ쫺ð7Í áhmkò}ÞèaÂ&/ Ç-WÛmÅ^¬p¹!$ÿTBãl½'D-+Yüëbì8¨àÒøpeQz¯ÓuVy>xåØðAý±Czû}ADèÐÄ03áIÇÓgÇZNä
/:NȹPr£/PK¥<´Qñ
Ä#;#ÎXº^ΧänÕ´f²¥êGëæ4(ïɦ¤
×Öya®¤Kì½ß)?À©uTU>´ÎJO*jä¿ÝÑÃïN¨¼gί×ÀÁ
Ñ+_¶8sÖ1nÖzë[?`~ÒÁÑ
ñ_ÿ îl¯Ç´¿
Èxé.ÝVènçÚЮl±9ÚqWÆ B"áh4Qa|DÅÀ$øÁhÆÆÆ~2&Æ£ønËv>Øeÿßù?}Î9Oï=çÜ{û·(ÖÒl>áâ°ä±ä³XX¬,,6;Kaþ]|¸å`)bq²¸XYJXK)KK9KK%KK5K
K-ÅÃâe©c©gYÆÒÀ²¥ÑF36:æ U´ÖAP[!ÄÇÒβe½§'MÒ&'Ôå¤iËQRÊojTÈÒ¤6ïUÈÖ¤îSܲ4
4±Wï5±wL§Æ3ÛëÌ5$XÔô¨®KM§¦3ÉTf09y^AÐxJ×> ÑäIDÂSÞ6I*ä¤#z÷8·Oeá¹þëÃÐ ¿7½w+dMtùÕÝï
8Þi;Q}¢kÀ¯©½RCáHÀlÄBqþÎlqhg°'åîîð(öD`ȯF9×èéÊÝ}þ(hMô!Ð̶%úZ_ØTËÖb!Zn{BG{ZôûUåLh±P(îîãÊÚþpPxp@cöb.p `þêyÀ\)@öççE êà9#1U
vr3¦
YÝÞ`(ÐÇÁ1=ã7ÆÖ-5×ç>Q¨ø^3|ðà´XLéF26p9dÚÔh.¡ßÐgñé`ÊoÉãüýøô´1ªJÉnðEHO
ôÔXæP8
Û^²hƸ>ͧ§¢Ç§t®'(áxÝø&©1_øÀ>ÒÆ/99¤ûÒFÚAµ>CÓg}ÙµFíØ
«°k©Â´
Úʬ¡^ÉçÁG%@òø~É[ác/¼
> y;|Rò
ðÝwÀ$ïï¼~äá{$_ÿäü^ÉÂë/OH¾~§ä+à÷H¾>(ù*ø!ÉWÃJ¾û$_¯IÞ
¼~Xò^ø§$_¿[òõð_? ùøäÃI¾þ äWÀüJx|Bó±ir:G#Çý´m1¿þÉÿ¬¯"ÜóÍÔV'*-XAüÙ%V|ê5E,nÄÃⵯÑ|o[,±¸ÿø·Ùbq;þEM°ÚM-
Pp@Lu
'Ô%\ÐbQ-%P| ¥¢Z&Ê å¢Z!* ¢Z%ª Õ¢Z#j µ¢ên¨Gx ^á
Ö:h=jËÌ Lm±kÔ*ìøù±pVºg¶qvQÄ?ÅÓfvh
fw°sBîPÆÊ¹CÙ¡ÚìPcþøZtkþ/'m|;Ct{ÎÀ5?BüÈs¥U`5è½`ÍàT8F«Á°l}àz°|Ün;Á`Ø
ö!PÀ(8D³Øo3X³³XÇ3سX_34NS γÐg §ÀÓàð9:N///¯¯çÀóàø&x|¯tn·ÀÏÀÏÁ/ÀÛàWà7à·àwà÷àààOt~F%¿¿¿wÀßÁ?À?Á¿À¿é¤BtJÉ@;èÁ2zV©¡Ó¬àJp5Ø®ÛÀu`¸Ün·*
ÏH¢³H>ÝøPgñ9ÁÐÜ`ûsÓ¶»Eò"ºÅK´Ê-üf{ï%ªuv³½ù¹Ü"qoâWÈbYÅ"®ãßÀÈ8·?Á^À^¾¿yïøPKbgn_
Â0Eÿh±Z]xwíBs
!w2_ÐF¦
¡q+9_ßÓ¾®8A¸Ò|¢ª+6¥*?Jâ'Çè°;Ì\íjîÛ7g=Ѹ:oYo¦_!HKEzyYeû^µó@tmrº)[ä$×e©ö6,;!üÜ]¶¡üm×Är-
½}UßY
Ю±p
@§ÇNNì·¸|àòËÎþø¾í0¶û
H;"Pª´1*"âÆ¶e(%¥%Ó©aáÞø|DÔ¸D-Qkb5ÆðÔã?Pc;ã¹Ó¡P¨&¶éùfîwî9gf¾Îúïk0£4ØÑcÇA;Ùqت°¢Z@Z¡ÎÅ=õ¼n´`hw£S@
ÒªÃïµ,¡IöZáýP)~9Ê_^Í#å¤\1F.â
Ƹɷã6çë§iGpC¸3¸³Xâ0û
X-¬|ópªDªÍ˲é«×½En«ÁuY·³¯ûÑTT6Êæ<*r¥\I(íã m
ïûØ4x×Çòàm¯øØfùX>üäcðÍd£|l12ð±ÙÌW}¬¾ö±£ ×ÇæGÝJ¨Ç|øÌÇ&°
*-¡Á²[ßûX%_?øØ
øÈÇ!r%Vß*øÐÇ%pÇQ©
Þð±j£ÀjøÀÇji
u$>D¡R=µD6XGàx6ÚÇ©¡ä5S]YêN ²
>ö±vxÀ'¾ô±0üècëá5Û@ªm¢ÑN$p FûعðoúØùð]@Ý.·¬1E6,a5fÁº
5ãkëÇWÛë§ÛËlx5fe¡¢1.Â~i~Öqöú5kBmÓ¦eB*«Èõ¬¢X²E82K¨ÝBt8eÒW3-TeØØÊú¹>êpõmìob?å°ì-mõãkZkjׯ·´µ6
Ç·
êCÆ/¬ CmÍÓASÁÔÃÔü6ZÖ1+mSÌZyõAÑvÃo¥sÉ\Y-ØËåp,»ð5sÜ #P§¢½h»ä¨ãÚe0 ''gLfsK8³-TÛRßÜpR¨Á° ';98eê´Õµu¡5}táì¢9ÅGmÂñf447yfv sMKccËÆv´íÙÐÚÔÚjoohiÆ¡pRVQaEqUIYEqYEÉeÅU¥
G£{µÔ
ĵ4·kÃËj×#íÃa
.XârÅ/_R\6§xK§·µµ´õ'³&ÉÀ[¼©6ÔFºÁ â¾ÖöÌpKKfcM[}(uB-iÞPÓØP¹òØÌ6\ÆPÈ5(±º¦öø¶ºd¨¹6¹Ar¤©¡×
K¬()» 8F|\Eèõ4Ó̬ÄPG ÇØ554×Éa¼-ëÛjCG5ÐýKÚjÉVýÌS6#ª%ÕkmjH÷Ì5Øc}[('3sac¨¦=DójiÃAÖâª^_?ÁʮͶÑëÚpÍCÿÅî9ÎeóGý#³ õª©ÇÕd0xióñÍ-ûi"CÓ6c?\*ÛQÓÀ¾ÖÖtðÚP{¨6·
jìZ\ÓT½4Ô\Ù²&VÊÿ7Ã=Íé|à+Ñcã³2kÌfÜtäUUî*\ªªÈfÁhPU5wAùìÂØµªj^ñòª9%sKàþª:º¸x!n´ªªÒâ%
UEó
WØ\Q_øQUUV^V¶tÓ?ê8¶àÒ
m }d÷©XX±¤pñ[%WÎ-,)³T/®XB*Û
Ô¶´qkWU
Â
mõev$ð:tQ,á´ g}(\[
öÆ·ªªæÖõ(#Kíäæ¡M£[¢¼WZ*¨¥CbUUSK]ÃôÆzfU:Ö¾5´
kÚ*l¤0k{
=§2ÜÒd+eS³1Ô®Å8çÒE%/j¬iGQIn}qÌöôºuóBl3ÚDym¸¦±¿OkÛ´m-õm58î h¹°®®¼5ÔVnÁÓÐhO¤¯É©JV4·ÚÂþNKF{Êí5gÇ;»{{(ÜJ³Âδ°¥4Æ´.d
®UÕ´µÕNPq]¨¶-Ô&&CÆÆ*½`"qaqA¨¹>¼Ö§E§¹Å>õmÖò5kP Hµ5×µr¤hyqv÷Û·£ºè&
ábêL¾,ÕÜÞà0û°*ܾí%Í
ÎäL$*[Úê¢ö¡vÄU5o;1$µ412|"ùá¡Nç«jiuº7!B.«ik kØm X²gÛg¬ÈÙPÕû«$vQçñÒ¢E¬T
o[Ø^ÔHÏ©èì©
·DÊZM+í¤;±¬Æ-u)V74×
6¯AÎú¦öMTÕ>§¡¾V¨¡}AËFô ´¯M-Ea.åC+®mÚñXDr@ß¹cؤ¾Ú<ë©nh_Ýa=®PGùêuxô«Ìlàá/¡ýTY²¶e£s²k®Ñ³ÿ9#»´¦Î´P{¯Aæ/÷*oubå_½'F.xMý¼±W¼×ÿ
§+ÝËW%äiÖ·ÑëÂxÛ·ÜTÌú}^
1®À¶ÀDÌG
±Zf8xU~ºÕ3{á8sfL"BqDì8µ*?=ÙÛ tsLWïn]ewï]X)rÍÌ» ?½%ôµ^þKR¼ý¤´§õÍk1¤`ñV0Ø`²=pÛXÉîÂyõÀ\ö(gûa1»c÷AÝMìheÂöÈSÏKÙ£p{
¼ô°åÚbµíò
ã:§Çv4û4÷ìÑãÏG£
ñµÃ¿üÛLý#KH;)> ÐAÙ-ÜZÓ®ÕÜÚtK%?ïj¸M91]f¤oj@wKñ±}].·3îÓaësò
]Cü3²¡±ÿ ÖßãÈ~T¾Øu¼D¿9¨X¸Êq7¢
ò0qÛ:Sil+ç7ï1+öèÉèEvrý/÷ÂÆ½°cy1%'PÉÕÄ^*à_"
ö?þ½%D<Ñý¹etq®'»8èâ).êâi..DyRf#>ñÄ ë®mâ»WÚàÄã׸z¬FF\ëÒuAré5.nvqÛ] »ôFÄG!Þäн½4_×9Èj[¹$x `9Lõ;ô«f?Ìähµ~?`8LõÓ3å0BöLë0Õ]sàa0SSÝ0¦zeÀô¦zÌïf3ÉmLï>§ Faix¾tCª_ÏØë+wh¬¯:£NîèýЯ£SõÀ6Ãò¨ÿá8üÆ^8±Ïí0Ìy®£ BfíG
¿F¨ôhO4á$bÛ- ÷àMÇli;÷ÁTGwº»Q¦ïÐtUúº_`ÇxîÐ5¸OlÇO%¡4viÌ<±O{ÔtD£=ÂïGkµî3#¬$i3}\0F&º»õd]ÐpAO·xØ2^Ûhc Ð÷î¢xW½.s±ÏÅñ.Ît1ÆUêÄUq¿Wm<ÆÅ9.^éb°Ã6½0©³Ã`1ñpL,¨ucÁ¥N,°ñ$éâ\OvqÐÅS\<ÕÅÓ\¸¸¸¸¸¸òÜXÀÝX°ÎÜÜX0ÊÝXÀÝXîÆîÆ9n,¨Ýaôvó1¦7¨¡UºÙýf¼[ÚkzÜÒͦÏ-]k¦¹¥+LÝ-]@'¢íPwÂbÛ²Ê×GíÄ£ßðÇê ÑÍÖbã X@ÓÓ½ 6ï¢AN¤9k;öéfù"èqsBh2R%«íJôþ]pRß6N@O·9â©öq³ãY_ud'¸û8öqbÿ}Øûð6eäY׺³ ÏòíQ±³¶¦<·ßa=¶Ë³;v?ö7Cÿ½9÷mCËs-$E@»ò6òìÐQzUaDd2ë×¼§^$1U¸òwA¥_^ÒvÔ,õÓºa°SÀK7O¹Yh?åºKP¹YZúUîÄÙÆ"inȲt¼y#qÝÎèZbÉXié;:¡Ã».?J%
8BHJ·¹}1
Çÿ£&òoÕtþ½ºTO ÐB{^Hí¡i¯]{]Ú[«½'â´OûX$hDí0µ¯E²ö ý(R´b ÎEª®Ä ÝuHÓEº,è©b¨>VdêÅ0}ª8B.Fè%b¤¾HÒÑzµÈÒkE¶¾FÕ[E¾A×OôÓÅ$ý<«_çíbþ1M¿Aäé·éúíb~7Òø7K
ñ3¢PNÌÖ_Eúbþ1?sõyGX`ÄRc¨(3²Î±È(*©b¹1C¬0
Ï«
âX£B¬6ªD±ZÔ!Ä'µÆ¢Á8[¬3ÎÇãj6në[ÅcØd<%N4'/ ~Yl6^[wÄ)Æûb»ñ ÿÚøIåÑÅÙ8×$ÎóXâ|O*â4q'S\è-.ò{rÅNÏtqg¸ÔS&®è¤E4-ÝIÒÄ?D¾(
,OtP®I®RÍ-p1³±¯N÷r$]0X:Ó iÒãÇ;
Ö)
î¥Sú¡Ä[ÉQ$ ¤¾>ÓgÃ'>ÉHÎtEuY±îôj÷#ïRíÓkìÆØÖÃn³[,0ãµ}0ãa©.Ñ©³´k@Ï8/}f%º¥]ÙQ£d*ÉqhVK§Rf¿åÆ>Í9áU5æ/K²Vmönróìl3#¢
ÅpxNóÅÓì~ñ{D<Ëþ&c/cù}ñ<ûHü}*^`Äì;ñWâ$^æx
¯ñÌÙF7øD,ç7y!æosÄ;¼D¼Ë÷ø±Xnïó&ñ/Þ*>Äó#Ì%?ä`~·S|ùág~¹ßgüvñï_òG?+ð¯øK¾*¾áooùÛâ;þøùàÇâ¿ü3q)ÿ[2þ)ø÷Rò¤Æ{¥Qß#¤W@<HÆÒ'FË1^&b5Åt$
e²#-±DWÉT±N O±Q'Ë¡bâSe¦8
ëÏÃÅÙr¸T7ÈQb-îYâ>9F<(sÄ3r¼xUNïÊâS9I@üµÌ?ÊqÉ)RGQÊc2SæÉ±rºâqºÙï$)¯o 0ùã<¨è²''yhw,Þ©Òv1¼ÏE~.¢{Ðýoâ-+
Òy
ÙÒáßγ'ýdy.OøpOÂöï¨ö¯±#n:0ê¦c
iDS%}"è÷¸öï÷fì
xWï»¶¸ÌèeÐÂË ½®%ûbnýG
§'³èÄ0ÓÜmÕíàǶ0¨[:æcßl)ÞIg§²t¼
â©jéAå÷`ÀÀH7²´[Ë S¥ó«c¾s<DRDÆÿìYͽ÷XN?Á(ç Ø.Ó¯®3Ü5ïÚ~¢kûùÎͲfº;3¤2æ0»!2f7x®!µºd+ÊV0!9ßG=°Ü@ïÇ4óél¥×c½wÃlùkÀÌüY«%wAf4|ÑwÓû\ ݹBwÀ¸(Çée²K6»êiëèIÍ£)qC¢Ò`2 Uy`°òÂ(9ÊÓTԩШR EY°ñij Rá|5.D|òÃj0\Ò Se@··¨¡p»QÃáA,?®2á95^R#á55
þFTôª1©±LWãXÊaéÊ`CÕD6\Éj2 lʦªilâ"5ÍUùl¡*`ËÕ,V§f³zUÄÕVG±Ô\¶Y°êhv¾ZÀ.Uel7òüI-bo©
ö¡ZÂ>QËØT%û^ÃZÉ=j÷©*>@Õò4âÃU=¨5|2§«>[ãóÕñ|W¨F^øZÕÌÃê~jã©vþæ·©õ|¿ÚÄïS'ò?¢¶ÄÄ/ýo÷S°NC\gèY?éèEÃRfâÖmAL&Ø8z{.·¿bð§ïà½×@rr| -·ñ B{Êù¸ @¿¼`I0t6&óÃ`62XÀº,f±!Ø67ªÌé¨mâ¨2Ã0ѳ¡Ï#&Ô6¼÷
RÓ¯Á@Cí»éó\sÊu½OƪCÑ@uF¡:£qÈ1¨N
Íp5LF<uB>Û
óØù¨Þø«Þ®ÓE3{»@ÇA¥p|/döWQª¶¿°
Ø_ÅVÙ9&dwÞ²×y}p¦±4#ý÷öÏ'%¸'ó ÄÒnç.°ÔÕ{uï¾Íd,
ûs6Ñb7âZ$®tñxè¹âjÜ7á;WGÑì´ov¦Ýd}á_½qBµKWº8ò׿âCê7BÓߪ¢ê·QAE
z¤`Ñ-eRé9±\XÎ&C
Â:6ÚÙTØÂ¦Á,.fG"g8÷0äw>Ñó²÷Âv¼noº5*ËþJ{(&ÊRÏÇôÑééùî!=ÿãöꩲ7àtûÑéfÜ:n^PÛñ²X&^ÁÄÀ~ÈZ½&ïér«}m)Òw.
ú<@ÒJËz`{pOã-cZ@ÛÅ<rvßåJ£??vÕÑ%ûaÜ}0!OóÓKGÉhõkûa$
»ìG;A£ø?Ʋ® ´åM1½L÷@_ã{ ͯ¡Ev¹Â¯¥ïf¿ú·Û°åé,Ïη70¦iËs;dVà ôØÕÜ`
^¾¬3©<2×
çvh²RrªéɹcX/¼rEÐÛ'`éëÂ+XdU½w¼ÎÞetöþbG¢Äß²«{/ÁÝðÐ#ÈrN¬î>+s÷A0o×Y)·Ã:HÝ.¼ZkíÑ
`ïú !Å´ºbê78ÃË.ȵRúüqF
&GWÁñÿÀ¸âëxXÛçÂÇFTuÛ\×HX¿mÔ
AÛGÆÀ¡_Õ"fy,uû+¿Ê]Léøï7vר#ææ¢ºVså%DäuCÔ«|vÛ5ô3ÉcNÄ<ÝJ¾
4LÆÑ¯i,¶¤,/fVÛg¬Û
Ø¸ÖøõG!ůѷ[Û1Æ ßcãZ¿ñ(m6újk»¢[G0"_
Rý¼êzW7_ý`B4Jý ²Õaº&«[!OÝ3Õ0Gá^Ál¹ºjÔ=p¼ºÖ«`«zÎTÃïÔ£pzv«¿Âõê ø£úܪÂçxXýV/ÂÛê%ø@½©WàßêUø^½ÉÎëL©7¡Þdqêm ÞÁdç_lú
â<-ÏÒø\-Ï×L^ª%ñ%Z2_
àuë Y|6¢¥òíÚ ~ºú£¥ó+µ~½6ߢxÍ÷kcù½Ú8þÃÖÆóÇ´ü íHþ¬ËßÓ&ó´ ÿT¿ÕBh¹BÓ¦x-OZ¾HÕ
Dº6SÖfV$&jGÉÚ\1U+3jóD9âÅÚÑ¢F+MZ¹Ø¨-giÄ9/Ö+´
Ñ©-7aÛ´¥â>mxH[.þ®/!~C«oiÇ÷´âmøò|¯WØ")´*¨UËF¦jµrV'³´«µurv¼<Jkó/ÔdÖ-ÓeÖ"´VyâÚ òtsÖ&§µË˵°ìÐÖË«µ
ò&m£ü³¶IÞ®$÷k[ä£ÚDù¶M¾®* þJÛ.¿ÅòÚiò ¶CqmRÚ*A;K¥ig«áÚ9j´v®
hç©X«]¦¦hjv¥ªÐ®RÇhר*S5h]ªUû½Z¯]§NÑ®¹ÁøÙ¹ð
{ÌÄz,1¸zàÔCn>ð±ÍýË]ì¯fi««À½k÷ÁÄRz÷b§Z¡ð5WÑ/¿cí¬u}¥íî}g,F>áöÿtgÁÏA<á0þÊ=à%äÊ PØ ÿPK?ªåP'
»ÛY¦`=¡[sïF*C*CÝÁU\×ÜÙôµRáÂ~Vß×Ýèqonfm¾d¿AUm«ÛºÂ¯æûu »]¯+À}l«3Ó¶·µ´7ué°sñî3Ì®HߨÚ3n¶öÌòÂö¶`{H'Iº0K-8³=êjm®ÖªpGYÚBþ ÀÒPÊ0#VÒtÇÓîiD±D|Ñ_ëv·DF¬ÝÆXÊ4Òéx2áò×rmG ;ÌÌ2}YeôÄjuy N¿.S8S5[8[§ÜᮦN¦îöùü~fç'G̨Ñ×g²wþpXg¿¶µ-à'·Þ§A£7&MëÕÍÊöÆ«É-eΰAÎ
÷Ç#³æô¤lç{úÌþ¹¸7E«2132,pUoÚo(NÒc;³º\¼¢lrF?_µÂH*e$ú©§âѸE¥kvúB}¨õU.Léåg§çIÍÑÇpFF
w
çÊ/o0bft$y2Å}eïP*;ÿÏé´À¢·ö¢²Y©¡4ÓvfÊÛ+©=S=÷)mEua5/d6c,á}ZýËG¾3!ð Jø|TOaÅ12&fú̺æ=Ï¥6:\A¯h_[]Vÿh&¦xÙ_éi/é é0ééÄÏ)ÒwHÓçZÈ?EÒ¶3¤³ÔÑ_ÐçI/þEºH]IIóH&éÒã
Æ%tlÆgUqpB´¨ùÄÔbb*%Ö«2bC¬TÊI,W.b©z;Ñ¥ÜDzѦJxU9ÿVÿTsÔ5ÄU%ñyu-ñ÷jñ×ê]ÄyÒ5òVDÓ$k½.ï$nÌ*³mZ1^uõ[õõª÷¼Öw}^Uñz{tÕëu
ªÕ«
ÄZUN¬Tï V(±\½Xªª.å%:¼êÝ:FÍ4¼53q:Äa:"þæ_è<ÆN?Î.a`²»Çè{ý.»ü=NÇ÷ÙÙ°³?dg§ÙÙ±³?fgÂÎ>ÉÎþñpãi±?5ø
x~)ZqFð+ÑgD~#¢ø°pVlÅïÄvüAìijbàâþ$¦ðgNÅ_8ç8/p2^äTüUÅß8çp^Çñ2^¯àeñ~ áöð-u¬>Ö m¹í4÷L¡105%¶ú.,yÏI¬æã$|ËJlÇÑR^»a¹Í£¨Â)¬,) £²³êBÛòÊ]EP4nsM`Y¹«ø
×Ó[ÌnKm[Þ~Ì÷¨ë2Õ²ÎÝqÒænß
GÕäd{V^]2«¨Qø§q]vë÷ÎníÙõi§x>}ÞlYÿ:úÓ¸ÆÌarF>þoÎÃKñîÙÈÛhæ`W#R$QoͨB
Å¡[ÐèãÓÀ-\µ+¶c·Ñ:N¼=wáNÜÇ]Àì£ÇAìä'áÝx÷à쳸/ÐãîÇ+ôºEv'öR<$`¯XE#ö>»°_læÇ§ÀCÌ9÷ýPKKLG
n s»°7®l£ÎkÈÆ_Àx·ÏJåðå·ü¸;±ÏkYBãPKÙx²~'
øúeM-
,ᯮ)g^4GÃy*5m~9iBóx(.æ"©yªK"÷O=Q_UÍó+y¿BÒR·eU,ùM+
ý¬àìÔS3jGøyU5ÁÓñrýò¡Qní§A§Í>?'/lôïí¢C4{©óst
iUÀOðòÊâ¢reqÍ
ház¤B¢ÏW^TÔzèÉ6±U6máéÞLFFVhÙ\YSR⯺¹5ßRêPVNïóUÔ,ÕüÕþjí Ê@ù²¨</¬¨Ó竪¬¢Ä R8ªüUÖTç,*
h/T*jáU5Õ"¬/@YQD":û|¤ùöJZÕzÔ``ùÄe$»ºÛ*JUØßÅ'!ãs5UÁÓ´h5®}p;pàëálJo¡?8>°pp+:$æS³"hA?Pdub¤«¥iäV¾²ê¢j^Eµ¿¢æÄE~V´¬ÌcÂEÚñeÕçUJÙE%ulJeIQP; ®·Î+Z¢AL#Ú®¶LeÚ{TL,euÖP&èµÕàÚlp9»¶BËi§×p´OËWY5kykeë£Ù¢©2¡fÁ¿vO³ÜòJö£55_uIQ«N9d[uk5-ª£Ã¬Ry1¢QùvQ P´¼¤²wTVÊXajÄ7Q´Í±ÊªÏ&=yUOmMªÍ®¢¸q´H
É¢² ¿V9ª¦¶®¤ãyмRÿ²¯*k*J)%þªp`:µ²¶ h|ûú8RÔÚ¶¤åÕA?ùªC»å:ʤ)sHûÖ,÷W,ÁÎQl£t\PF¹ÐëäkvAUxWI=Ý
aàï: 8ÅCK2m$Ùsú[N¥1¢4í̧½µÑVBd¼ÊQT(¹rÚ7ÕìkÙ;\LiM9ª-#XÉÉ¢sK×t¢s*Â`º
8ÒºBwø>$ücºw
PTÿ>i©ÓÊwÆù¶ KºèîºtK¾è:]#týHy4Rþ)|µÐõc:FJ#ÂGW]þ.ùÚ¡Kº¿PÙ¾i£'ýåË
áD£»Á¨6.Ф(ái.Ù2<» fntmal'~M#¤m#FOµpà$rG>9i =zs¡Ñ|_BâóLé5B0 ɳg=rsJF¸ô$eg¤d×3Zk`-bD·áVë÷«Í-õ§[À
$ÈGÀB°®ÅÐJ 'Boji`º×E~¶¨éÙ³äÍe¶×Á8·Ic®¡I^CzU:
t«lMr×*Ö )¹n5pÏúæOÜÆ(õÑmëOjUl¥ ÀÁ
a:IMáÎ{0^éÒ@^&jbbÌB¯QT9g5¤·ëW:äNéHé«; VÔÙkE¿ÅÒÃëÀV<üð°-]¶°zÄ;VÖ=ÜÖÝ`»-Uêu;¥:=R6Â8«*ÕC©fÂ<6ªG6§GÄîp{ÒmPí¸¤ùùÚE]ð°.Ã#[¤á14í!ïvF=J3-çQ+ÂzFLm©DOhéívÖ7nϰ¾¹!¤ µ¾v%ßê~/
¶óçzmQ/÷D·dòºNtòÆ3Ývö&
bÓ?é¶ÖÒ²['njeWhöKO[£¼6þ5\aB'úE¸OTjoD©Õøc+;~Áìøñqq áu'q8îþ-ïáöN:BÒI;¡ô¤údü½!tµr2]àãßÏ´R|2]`Ý)¤\ÞVÊIuw
)#~ek/£KÅ»½éq|Üá3ÛlÙÙe1íŽÁÄ~ÀïZã¨LÀÐS¡;¤}7R1²pÇÁ0³a
*gà0ÃÁgA%
gcð|LĹØçc*^CðB>
8+¦¿%è'záq).#l%VâµX
7a
35üêL+}ãE:6ÀÍr~dÿVOO8ð
R÷VõÚ¨CedÇ»ê!(¯)]o|44Lnch:¿(g(¨u6SòÄohþ:5»r+Q¯½h¸ê·ÉÍtWá£)¼ÑvKÆÐµ+.üÎ/5%>~t^»£409AG@g.aÖpU=Zz!¡Yp´í$áäqÕÁetpqÛwCæ¶`(o"³xÒ#ÝùPÃAoÙ|åMKe_PEÜ gdØ;$ÔAÇZ[¨!=i$·yÛÉÉUn{móú\Êc:©©o»
Pò ÌXmYáE¨Qæ:ïvòË¿C=
ëâd]Âj<MÄHï4½L©1êI7Ù2p5¤È_£7:ãê¶Öÿ0J¶ÜÂÔ
Hg6ñâEp Y¼âU,^áâ
)þ ¹â-øT_Ä!ì$ÞÆÞT!bªx=â}'c!%â\ >ÄEâ¼D|+Ätù¯_Ó}äº|ïpø¦»È>q_ðº|*?
þ$M+-ÑS:D#¼Ò%ËX1YÆ?È¢Pve'Q-Ýb¥ì".]Ų¸Yv÷Ê$±I¦m²x\ö¯Ë^âMÙW¼#ÏÊþâ?2U
&TÚTº¤GÆÉ,Ê2KdÁ\-'Ë¡rªôÊYr#Ë2y¼T+åhy£#ocårü/7É r7õ|LNÏRÏW©|zòS9]9äåsT7yê.ÏW½å\ÕWÎS^9_+/Pe¡&ÔY¬æÊ5_ª
éWËê*Y¦nÕrªåj\ª¶Ë*õü£zJÔ?dµzQÕ{²F}#/RßËåÈK[®0:È? ò2#Y^nôWyµ1T^c...
[truncated message content] |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:08:07
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web/WEB-INF In directory usw-pr-cvs1:/tmp/cvs-serv30053/web/WEB-INF Added Files: dbtags.tld i18n.tld regexp.tld web.xml Log Message: Some more changes --- NEW FILE: dbtags.tld --- <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <!-- a tag library descriptor --> <taglib> <!-- after this the default space is "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd" --> <!-- The version number of this tag library --> <tlibversion>1.0</tlibversion> <!-- The JSP specification version required to function --> <jspversion>1.1</jspversion> <!-- The short name of this tag library --> <shortname>DBTags</shortname> <!-- Public URI that uniquely identifies this version of the tag library --> <uri>http://jakarta.apache.org/taglibs/dbtags</uri> <!-- General information about this tag library --> <info> The DBTags custom tag library contains tags that can retrieve data from and insert data into databases. </info> <!-- ******************** Defined Custom Tags *************************** --> <!-- connection tags --> <tag> <name>connection</name> <tagclass>org.apache.taglibs.jdbc.connection.ConnectionTag</tagclass> <teiclass>org.apache.taglibs.jdbc.connection.ConnectionTEI</teiclass> <bodycontent>JSP</bodycontent> <info>Opens a connection based on either a url in the body of the tag or by using the "datasource" tag attribute to reference to a javax.sql.DataSource page attribute. driver (optional), userid (optional), and password (optional) are also set in the body of the tag.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>jndiName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>dataSource</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>url</name> <tagclass>org.apache.taglibs.jdbc.connection.DatabaseURLTag</tagclass> <bodycontent>JSP</bodycontent> <info>Sets the database URL of the enclosing connection tag according to the initParameter, if specified, or from the body of the tag.</info> <attribute> <name>initParameter</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>driver</name> <tagclass>org.apache.taglibs.jdbc.connection.DriverTag</tagclass> <bodycontent>JSP</bodycontent> <info>Sets the java.sql.Driver class name for the enclosing connection tag according to the initParameter, if specified, or the body of the tag. The tag body will be trimmed.</info> <attribute> <name>initParameter</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>jndiName</name> <tagclass>org.apache.taglibs.jdbc.connection.JndiNameTag</tagclass> <bodycontent>JSP</bodycontent> <info>Sets the jndi named javax.sql.DataSource for the enclosing connection tag according to the initParameter, if specified, or the body of the tag. The tag body will be trimmed.</info> <attribute> <name>initParameter</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>userId</name> <tagclass>org.apache.taglibs.jdbc.connection.UserIdTag</tagclass> <bodycontent>JSP</bodycontent> <info>JSP tag userid, sets the database user id for the enclosing connection tag. This tag is optional if the user name has been encoded inside the database URL, or if the database does not require a user name. The user name is read from the indicated initParameter, if the attribute is set, or from the body of the tag if it is not. The tag body will be trimmed.</info> <attribute> <name>initParameter</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>password</name> <tagclass>org.apache.taglibs.jdbc.connection.PasswordTag</tagclass> <bodycontent>JSP</bodycontent> <info>JSP tag password, sets the password for the enclosing connection tag. This tag is optional if the password has been encoded inside the database URL, or if the database does not require a password. The password is read from the indicated initParameter, if the parameter is set, or from the body of the tag if it is not. The tag body will be trimmed.</info> <attribute> <name>initParameter</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>closeConnection</name> <tagclass>org.apache.taglibs.jdbc.connection.CloseConnectionTag</tagclass> <bodycontent>empty</bodycontent> <info>Close the specified connection. The "conn" attribute is the name of a connection object in the page context.</info> <attribute> <name>conn</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <!-- statement only tags --> <tag> <name>statement</name> <tagclass>org.apache.taglibs.jdbc.statement.StatementImplTag</tagclass> <teiclass>org.apache.taglibs.jdbc.statement.StatementTEI</teiclass> <bodycontent>JSP</bodycontent> <info>JSP tag statement, uses the enclosed query, resultset or execute tags to perform a database operation.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>conn</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>escapeSql</name> <tagclass>org.apache.taglibs.jdbc.statement.EscapeSQLTag</tagclass> <bodycontent>JSP</bodycontent> <info>Replaces each single quote in the tag body with a pair of single quotes. Body content will not be trimmed.</info> </tag> <!-- statement and prepared statement tags --> <tag> <name>query</name> <tagclass>org.apache.taglibs.jdbc.statement.QueryTag</tagclass> <bodycontent>JSP</bodycontent> <info>Sets the SQL query for the enclosing statement or preparedstatement tag.</info> </tag> <tag> <name>execute</name> <tagclass>org.apache.taglibs.jdbc.statement.ExecuteTag</tagclass> <bodycontent>JSP</bodycontent> <info>Executes the query for the enclosing statement or preparedstatement tag.</info> <attribute> <name>ignoreErrors</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>wasEmpty</name> <tagclass>org.apache.taglibs.jdbc.statement.WasEmptyTag</tagclass> <bodycontent>JSP</bodycontent> <info> Executes its body if the last ResultSet tag received 0 rows from the database. You must be after a ResultSet tag and inside a StatementTag or PreparedStatementTag, or an error will be generated. </info> </tag> <tag> <name>wasNotEmpty</name> <tagclass>org.apache.taglibs.jdbc.statement.WasNotEmptyTag</tagclass> <bodycontent>JSP</bodycontent> <info> Executes its body if the last ResultSet tag received more than 0 rows from the database. You must be after a ResultSet tag and inside a StatementTag or PreparedStatementTag, or an error will be generated. </info> </tag> <tag> <name>rowCount</name> <tagclass>org.apache.taglibs.jdbc.statement.RowCountTag</tagclass> <bodycontent>empty</bodycontent> <info>Prints out the number of rows retrieved from the database. It can be used inside a ResultSet tag to provide a running count of rows retreived, or after the ResultSet tag to display the total number. Using the tag before the ResultSet or outside of a Statement or PreparedStatement will produce an error.</info> </tag> <!-- prepared statement only tags --> <tag> <name>preparedStatement</name> <tagclass>org.apache.taglibs.jdbc.preparedstatement.PreparedStatementImplTag</tagclass> <teiclass>org.apache.taglibs.jdbc.preparedstatement.PreparedStatementTEI</teiclass> <bodycontent>JSP</bodycontent> <info>JSP tag preparedstatement, used the enclosed query, resultset/execute, and set* tags to perform a database operation.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>conn</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>setColumn</name> <tagclass>org.apache.taglibs.jdbc.preparedstatement.SetColumnTag</tagclass> <bodycontent>JSP</bodycontent> <info>Setter for the enclosing preparedstatement tag. Set the String inside the tag body. Body content will not be trimmed.</info> <attribute> <name>position</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <!-- resultset tags --> <tag> <name>resultSet</name> <tagclass>org.apache.taglibs.jdbc.resultset.ResultSetTag</tagclass> <teiclass>org.apache.taglibs.jdbc.resultset.ResultSetTEI</teiclass> <bodycontent>JSP</bodycontent> <info>JSP tag resulset, executes the query and loops through the results for the enclosing statement or preparedstatement tag. The body of this tag is executed once per row in the resultset. The optional "loop" attribute, which default to true, specifies whether to execute the tag body once per row "true", or to simply assign the ResultSet to the page attribute specified by "id".</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>loop</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>wasNull</name> <tagclass>org.apache.taglibs.jdbc.resultset.WasNullTag</tagclass> <bodycontent>JSP</bodycontent> <info>Executes its body if the last getColumn tag received a null value from the database. You must be inside a resultset tag and there must be a previous getColumn tag, or an error will be generated.</info> </tag> <tag> <name>wasNotNull</name> <tagclass>org.apache.taglibs.jdbc.resultset.WasNotNullTag</tagclass> <bodycontent>JSP</bodycontent> <info>Executes its body if the last getColumn tag did not receive a null value from the database. You must be inside a resultset tag and there must be a previous getColumn tag, or an error will be generated.</info> </tag> <tag> <name>getColumn</name> <tagclass>org.apache.taglibs.jdbc.resultset.GetColumnTag</tagclass> <teiclass>org.apache.taglibs.jdbc.resultset.BaseGetterTEI</teiclass> <bodycontent>empty</bodycontent> <info>Gets the value, as a String, of a coulmn in the enclosing resultset. Either set the column number via the "position" attribute, or set the column name with the "colName" attribute. You can optionally set the value, as a String, to a serlvet attribute instead of the tag body with the "to" attribute. The scope of the servlet attribute is specified by the "scope" XML attribute (default = page). Dates, times, timestamps and numbers are output according to the JVM's defaults.</info> <attribute> <name>position</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>colName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>to</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>getNumber</name> <tagclass>org.apache.taglibs.jdbc.resultset.GetNumberTag</tagclass> <teiclass>org.apache.taglibs.jdbc.resultset.BaseGetterTEI</teiclass> <bodycontent>empty</bodycontent> <info> Similar to getColumn, but provides more precise control over number formatting. The "format" attribute can be either a pattern as accepted by the DecimalFormat constructor or a style: "CURRENCY", "PERCENT" or "NUMBER". The "locale" attribute can have one to three components as accepted by the Locale constructor: language, country and variant. They are separated by "_". If neither the format nor locale attribute is set, output should be identical to getColumn. </info> <attribute> <name>position</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>colName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>to</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>format</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>getTime</name> <tagclass>org.apache.taglibs.jdbc.resultset.GetTimeTag</tagclass> <teiclass>org.apache.taglibs.jdbc.resultset.BaseGetterTEI</teiclass> <bodycontent>empty</bodycontent> <info> Similar to getColumn, but provides more precise control over java.sql.Time formatting. The "format" attribute can be either a pattern as accepted by SimpleDateFormat or a style: "FULL", "LONG", "MEDIUM" or "SHORT". The "locale" attribute can have one to three components as accepted by the Locale constructor: language, country and variant. They are separated by "_". If neither the format nor locale attribute is set, output should be identical to getColumn. </info> <attribute> <name>position</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>colName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>to</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>format</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>getDate</name> <tagclass>org.apache.taglibs.jdbc.resultset.GetDateTag</tagclass> <teiclass>org.apache.taglibs.jdbc.resultset.BaseGetterTEI</teiclass> <bodycontent>empty</bodycontent> <info> Similar to getColumn, but provides more precise control over java.sql.Date formatting. The "format" attribute can be either a pattern as accepted by SimpleDateFormat or a style: "FULL", "LONG", "MEDIUM" or "SHORT". The "locale" attribute can have one to three components as accepted by the Locale constructor: language, country and variant. They are separated by "_". If neither the format nor locale attribute is set, output should be identical to getColumn. </info> <attribute> <name>position</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>colName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>to</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>format</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>getTimestamp</name> <tagclass>org.apache.taglibs.jdbc.resultset.GetTimestampTag</tagclass> <teiclass>org.apache.taglibs.jdbc.resultset.BaseGetterTEI</teiclass> <bodycontent>empty</bodycontent> <info> Similar to getColumn, but provides more precise control over java.sql.Timestamp formatting. The required "format" attribute can be either a pattern as accepted by SimpleDateFormat or a style: "FULL", "LONG", "MEDIUM" or "SHORT". It can also can be a comma separated list of two styles, one for date and one for time. The "locale" attribute can have one to three components as accepted by the Locale constructor: language, country and variant. They are separated by "_". </info> <attribute> <name>position</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>colName</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>to</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>scope</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>format</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib> --- NEW FILE: i18n.tld --- <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>i18n</shortname> <info> These are WAM!NET internationalization tags. </info> <tag> <name>bundle</name> <tagclass>org.apache.taglibs.i18n.BundleTag</tagclass> <info>Must be placed in a JSP before any other i18n tags.</info> <attribute> <name>baseName</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>localeAttribute</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>message</name> <tagclass>org.apache.taglibs.i18n.MessageTag</tagclass> <bodycontent>JSP</bodycontent> <info>Must occur after a localize tag.</info> <attribute> <name>key</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>args</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>messageArg</name> <tagclass>org.apache.taglibs.i18n.MessageArgumentTag</tagclass> <info>Must be nested inside a message tag.</info> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>ifdef</name> <tagclass>org.apache.taglibs.i18n.IfdefTag</tagclass> <bodycontent>JSP</bodycontent> <info>Must occur after a localize tag.</info> <attribute> <name>key</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>ifndef</name> <tagclass>org.apache.taglibs.i18n.IfndefTag</tagclass> <bodycontent>JSP</bodycontent> <info>Must occur after a localize tag.</info> <attribute> <name>key</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <!-- new formatting tags --> <tag> <name>locale</name> <tagclass>org.apache.taglibs.i18n.LocaleTag</tagclass> <bodycontent>JSP</bodycontent> <info> Defines a locale context. This is either sepecified using the locale property, the combination of 'language', 'country' and the optional 'variant' property or the current HTTP request is used. If no other locale can be found then the default JVM locale is used. Other sub-tags will use this locale if no other locale is specified. </info> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>language</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>country</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>variant</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatString</name> <tagclass>org.apache.taglibs.i18n.FormatStringTag</tagclass> <bodycontent>JSP</bodycontent> <info> Outputs a String value or displays the defaultText property if the String is null. The defaultText defaults to "". </info> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatNumber</name> <tagclass>org.apache.taglibs.i18n.FormatNumberTag</tagclass> <bodycontent>JSP</bodycontent> <info> Formats a number using a locale. A pattern can be specified such as '##,###.##'. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. </info> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>pattern</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatCurrency</name> <tagclass>org.apache.taglibs.i18n.FormatCurrencyTag</tagclass> <bodycontent>JSP</bodycontent> <info> Formats a number as a currency using a locale. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. </info> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatPercent</name> <tagclass>org.apache.taglibs.i18n.FormatPercentTag</tagclass> <bodycontent>JSP</bodycontent> <info> Formats a number as a percentage using a locale. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. </info> <attribute> <name>value</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatDate</name> <tagclass>org.apache.taglibs.i18n.FormatDateTag</tagclass> <bodycontent>JSP</bodycontent> <info> Formats a Date value as a time using a locale. A style (short/medium/long/full) can be specified or a pattern such as 'YYYY MMM ddd'. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. </info> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>style</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>pattern</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatDateTime</name> <tagclass>org.apache.taglibs.i18n.FormatDateTimeTag</tagclass> <bodycontent>JSP</bodycontent> <info> Formats a Date value as a date-time using a locale. A dateStyle and a timeStyle (short/medium/long/full) can be specified. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. </info> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>dateStyle</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>timeStyle</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>formatTime</name> <tagclass>org.apache.taglibs.i18n.FormatTimeTag</tagclass> <bodycontent>JSP</bodycontent> <info> Formats a Date value as a time using a locale. A style (short/medium/long/full) can be specified. If the value is null then the default text is used. If no locale is specified then the parent <i18n:locale> tag is used. If no parent <i18n:locale> tag exists then the locale is taken from the current request. If still no locale could be found then the current JVM locale is used. </info> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>style</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>locale</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>defaultText</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib> --- NEW FILE: regexp.tld --- <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <!-- a tag library descriptor --> <taglib> <!-- after this the default space is "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd" --> <!-- The version number of this tag library --> <tlibversion>1.0</tlibversion> <!-- The JSP specification version required to function --> <jspversion>1.1</jspversion> <!-- The short name of this tag library --> <shortname>regexp</shortname> <!-- Public URI that uniquely identifies this version of the tag library --> <uri>http://jakarta.apache.org/taglibs/regexp</uri> <!-- General information about this tag library --> <info> A tag library that implements perl syntax regular expressions. </info> <!-- ******************** Defined Custom Tags *************************** --> <tag> <name>regexp</name> <tagclass>org.apache.taglibs.regexp.RegexpTag</tagclass> <bodycontent>JSP</bodycontent> <info>Create a regular expression script variable.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>text</name> <tagclass>org.apache.taglibs.regexp.TextTag</tagclass> <bodycontent>JSP</bodycontent> <info>Create a text string script variable for use with a regexp.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>existsmatch</name> <tagclass>org.apache.taglibs.regexp.ExistsMatchTag</tagclass> <bodycontent>JSP</bodycontent> <info>Uses a regexp to determine if a match exists in the text.</info> <attribute> <name>regexp</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>text</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>value</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>substitute</name> <tagclass>org.apache.taglibs.regexp.SubstituteTag</tagclass> <bodycontent>empty</bodycontent> <info>Performs a string substitution on text using a regexp.</info> <attribute> <name>regexp</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>text</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>split</name> <tagclass>org.apache.taglibs.regexp.SplitTag</tagclass> <teiclass>org.apache.taglibs.regexp.SplitTEI</teiclass> <bodycontent>JSP</bodycontent> <info>Implements a perl style split on the text.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>text</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>regexp</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>limit</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>match</name> <tagclass>org.apache.taglibs.regexp.MatchTag</tagclass> <teiclass>org.apache.taglibs.regexp.MatchTEI</teiclass> <bodycontent>JSP</bodycontent> <info>Loops through each match found in text by a regexp.</info> <attribute> <name>id</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>regexp</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>text</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>group</name> <tagclass>org.apache.taglibs.regexp.GroupTag</tagclass> <bodycontent>empty</bodycontent> <info>Get the value of a single parenthesized group within a single match.</info> <attribute> <name>number</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib> --- NEW FILE: web.xml --- <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <display-name>jspMyAdmin</display-name> <description>phpMyAdmin equivalent writted in jsp. Hope is usefull.</description> <context-param> <param-name>bug</param-name> <param-value>bu...@js...</param-value> <description> The EMAIL address of the administrator to whom bug errors that have been found and questions and comments about this application should be addressed. </description> </context-param> <taglib> <taglib-uri>http://jakarta.apache.org/taglibs/dbtags</taglib-uri> <taglib-location>/WEB-INF/dbtags.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://jakarta.apache.org/taglibs/i18n-1.0</taglib-uri> <taglib-location>/WEB-INF/i18n.tld</taglib-location> </taglib> <taglib> <taglib-uri>http://jakarta.apache.org/taglibs/regexp-1.0</taglib-uri> <taglib-location>/WEB-INF/regexp.tld</taglib-location> </taglib> </web-app> |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:08:07
|
Update of /cvsroot/jspmyadmin/jspmyadmin/WEB-INF/lib In directory usw-pr-cvs1:/tmp/cvs-serv30053/WEB-INF/lib Removed Files: dbtags.jar i18n.jar jakarta-oro-2.0.jar mysql.jar regexp.jar Log Message: Some more changes --- dbtags.jar DELETED --- --- i18n.jar DELETED --- --- jakarta-oro-2.0.jar DELETED --- --- mysql.jar DELETED --- --- regexp.jar DELETED --- |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:08:07
|
Update of /cvsroot/jspmyadmin/jspmyadmin/WEB-INF In directory usw-pr-cvs1:/tmp/cvs-serv30053/WEB-INF Removed Files: dbtags.tld i18n.tld regexp.tld web.xml Log Message: Some more changes --- dbtags.tld DELETED --- --- i18n.tld DELETED --- --- regexp.tld DELETED --- --- web.xml DELETED --- |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:01:29
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web/WEB-INF/lib In directory usw-pr-cvs1:/tmp/cvs-serv29074/WEB-INF/lib Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/web/WEB-INF/lib added to the repository |
|
From: Adrian A. <aal...@us...> - 2002-07-26 04:01:15
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web/WEB-INF In directory usw-pr-cvs1:/tmp/cvs-serv29040/WEB-INF Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/web/WEB-INF added to the repository |
Update of /cvsroot/jspmyadmin/jspmyadmin/WEB-INF/classes/com/jspmyadmin In directory usw-pr-cvs1:/tmp/cvs-serv28740/classes/com/jspmyadmin Removed Files: ConnectionObject.class ConnectionPoolManager.class ConnectionPoolManager.java config.properties jspMyAdminConfig.class jspMyAdminConfig.java jspMyAdminLogWriter.class jspMyAdminLogWriter.java jspMyAdminUtil.class jspMyAdminUtil.java jspMyAdminVar.class jspMyAdminVar.java Log Message: --- ConnectionObject.class DELETED --- --- ConnectionPoolManager.class DELETED --- --- ConnectionPoolManager.java DELETED --- --- config.properties DELETED --- --- jspMyAdminConfig.class DELETED --- --- jspMyAdminConfig.java DELETED --- --- jspMyAdminLogWriter.class DELETED --- --- jspMyAdminLogWriter.java DELETED --- --- jspMyAdminUtil.class DELETED --- --- jspMyAdminUtil.java DELETED --- --- jspMyAdminVar.class DELETED --- --- jspMyAdminVar.java DELETED --- |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:59:54
|
Update of /cvsroot/jspmyadmin/jspmyadmin/WEB-INF/classes/com/jspmyadmin/languages In directory usw-pr-cvs1:/tmp/cvs-serv28740/classes/com/jspmyadmin/languages Removed Files: english.properties romanian.properties spanish.properties Log Message: --- english.properties DELETED --- --- romanian.properties DELETED --- --- spanish.properties DELETED --- |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:56:14
|
Update of /cvsroot/jspmyadmin/jspmyadmin In directory usw-pr-cvs1:/tmp/cvs-serv28277 Removed Files: functions.js Log Message: A file escaped from the remove --- functions.js DELETED --- |
Update of /cvsroot/jspmyadmin/jspmyadmin/web
In directory usw-pr-cvs1:/tmp/cvs-serv27090/web
Added Files:
application_parse_log.jsp config.inc.jsp database.inc.jsp
db_create.jsp db_details.jsp db_dump.jsp db_printview.jsp
db_readdump.jsp db_readfile.jsp error.jsp footer.inc.jsp
functions.js header.inc.jsp index.jsp left.jsp lib.inc.jsp
main.jsp newtest.jsp sql.jsp tbl_addfield.jsp tbl_alter.jsp
tbl_change.jsp tbl_copy.jsp tbl_create.jsp tbl_dump.jsp
tbl_printview.jsp tbl_properties.inc.jsp tbl_properties.jsp
tbl_rename.jsp tbl_replace.jsp tbl_select.jsp test.jsp
Log Message:
Some re order to the CVS to make it build with ANT im preparing the build.xml and properties now, so in a week it maybe ready to workr
--- NEW FILE: application_parse_log.jsp ---
<%
cm.releaseConnection(ds_conn);
//mzsdb_conn.disconnect();
/*if ((STORE_PAGE_PARSE_TIME.equals("1")) && (EXIT_AFTER_REDIRECT.equals("0")))
{*/
jspMyAdminLogWriter parse_log=new jspMyAdminLogWriter(request.getRealPath("logs/parse_time_log"),request.getRemoteAddr());
parse_log.writeln(request.getRequestURI()+request.getQueryString()+" - "+request.getHeader("user-agent")+" - "+request.getHeader("referer")+" - "+((float)((new java.util.Date()).getTime()-parsed)/1000)+"ms");
parse_log.close();
//}
//appProperties.close();
//appLanguage.close();
%>
--- NEW FILE: config.inc.jsp ---
/* $Id: config.inc.jsp,v 1.1 2002/07/26 03:51:47 aalmenar Exp $ */
/*
* phpMyAdmin Configuration File
* All directives are explained in Documentation.html
*/
// You can disable a server config entry by setting host to ''.
// MySQL hostname
host=localhost
// MySQL port - leave blank for default port
port=
// Use advanced authentication?
adv_auth=false
// MySQL standard user (only needed with advanced auth)
stduser=root
// MySQL standard password (only needed with advanced auth)
stpass=
// MySQL user (only needed with basic auth)
user=root
// MySQL password (only needed with basic auth)
password=
// If set to a db-name, only this db is accessible
only_db=
// Verbose name for this host - leave blank to show the hostname
verbose=
host1=
port1=
adv_auth1=false
stduser1=
stpass1=
user1=
password1=
only_db1=
verbose1=
//You can put any {host,port...verbose} as you want but don't forget to
//numerate them correctly
cfgManualBase = http://www.mysql.com/documentation/mysql/bychapter/
cfgConfirm = true
cfgBorder = 0
cfgThBgcolor = #D3DCE3
cfgBgcolorOne = #CCCCCC
cfgBgcolorTwo = #DDDDDD
cfgMaxRows = 30
cfgMaxInputsize = 300px
cfgOrder = ASC
cfgShowBlob = true
cfgShowSQL = true
--- NEW FILE: database.inc.jsp ---
<%
public void mysql_query(HttpServletRequest localrequest, String query) {
Connection conn = (Connection)localrequest.getAttribute("ds_conn");
PreparedStatement pstm = conn.prepareStatement(query);
ResultSet rst = pstm.executeQuery();
}
public int mysql_num_rows(ResultSet rset) {
int number_of_rows=0;
while (rset.next()) {
number_of_rows++;
}
return number_of_rows;
}
%*>
--- NEW FILE: db_create.jsp ---
<%@ include file="lib.inc.jsp"%>
<%
String db_to_create= (var.existKey("db_to_create"))
? (String)var.get((Object)"db_to_create")
: "";
ResultSet tst = mysql_query (pageContext, "CREATE DATABASE "+ db_to_create);
tst.close();
String themessage = geti18nMessage(request,"strDatabase") +" "+ db_to_create
+" "+geti18nMessage(request,"strHasBeenCreated");
//var.setRequestAttribute("message",themessage);
//var.setRequestAttribute("db",db_to_create);
%>
<%@ include file="header.inc.jsp"%>
<jsp:include page="db_details.jsp" flush="true">
<jsp:param name="db" value="<%=db_to_create%>"/>
<jsp:param name="message" value="<%=themessage%>"/>
</jsp:include>
--- NEW FILE: db_details.jsp ---
<%@ include file="lib.inc.jsp"%>
<%
if ( (var.notEmpty( "message" )) ) {
out.println(show_message(cfg, var));
}
else {
%>
<%@ include file="header.inc.jsp"%>
<%
}
%>
<%
int num_tables=0;
Vector tablelist= new Vector();
String query="";
ResultSet rset = mysql_query(pageContext, "SHOW TABLES FROM "+db);
while (rset.next()) {
tablelist.add(rset.getString(1));
num_tables++;
}
if (rset != null) {
rset.close();
}
if (num_tables==0) {
%>
<i18n:message key="strNoTablesFound"/>
<%
}
else {
int i=0;
%>
<table border="<%=cfg.get( "cfgBorder" )%>">
<th><i18n:message key="strTable"/></th>
<th colspan=6><i18n:message key="strAction"/></th>
<th><i18n:message key="strRecords"/></th>
<%
while(i < num_tables) {
table = (String)tablelist.get( i );
query = "?server=" + server + "&db=" + db + "&table=" + table + "&goto=db_details.jsp";
String bgcolor = ((i % 2)==0 ) ? (String)cfg.get( "cfgBgcolorOne" ) : (String)cfg.get( "cfgBgcolorTwo" );
%>
<tr bgcolor="<%=bgcolor%>">
<td class=data><b><%=table%></b></td>
<td><a href="sql.jsp<%=query%>&sql_query=<%= URLEncoder.encode("SELECT * FROM " + table)%>&pos=0"><i18n:message key="strBrowse"/></a></td>
<td><a href="tbl_select.jsp<%=query%>"><i18n:message key="strSelect"/></a></td>
<td><a href="tbl_change.jsp<%=query%>"><i18n:message key="strInsert"/></a></td>
<td><a href="tbl_properties.jsp<%=query%>"><i18n:message key="strProperties"/></a></td>
<td><a href="sql.jsp<%=query%>&reload=true&sql_query=<%= URLEncoder.encode("DROP TABLE " + table)%>&zero_rows=<%= URLEncoder.encode("Table " +table +" "+ geti18nMessage(request,"strHasBeenDropped"))%>"><i18n:message key="strDrop"/></a></td>
<td><a href="sql.jsp<%=query%>&sql_query=<%= URLEncoder.encode ("DELETE FROM " + table )%>&zero_rows=<%= URLEncoder.encode("Table " +table +" "+ geti18nMessage(request,"strHasBeenDropped"))%>"><i18n:message key="strEmpty"/></a></td>
<td align="right">
<%
rset = mysql_query(pageContext, "select count(*) from "+table);
rset.next();
out.println(rset.getString(1));
if (rset != null) {
rset.close();
}
%>
</td>
</tr>
<%
i++;
}
%>
</table>
<%
}
query = "?server="+Integer.toString(server)+"&db="+db+"&goto=db_details.jsp";
%>
<hr>
<div align="left">
<ul>
<li><a href="db_printview.jsp<%=query%>"><i18n:message key="strPrintView"/></a>
<li>
<form method="post" action="db_readdump.jsp">
<input type="hidden" name="server" value="<%=server%>">
<input type="hidden" name="pos" value="0">
<input type="hidden" name="db" value="<%=var.get( "db" )%>">
<input type="hidden" name="goto" value="db_details.jsp">
<input type="hidden" name="zero_rows" value="<i18n:message key="strSuccess"/>">
<i18n:message key="strRunSQLQuery"/><%=db%> [<%=show_docu("manual_Reference.html#Select", cfg)%><i18n:message key="strDocu"/></a>]:<br>
<textarea name="sql_query" cols="40" rows="3" wrap="VIRTUAL" style="width: <%=cfg.get( "cfgMaxInputsize" )%>"></textarea><br>
<input type="submit" name="SQL" value="<i18n:message key="strGo"/>">
</form>
<form method="post" action="db_readfile.jsp" enctype="multipart/form-data">
<input type="hidden" name="server" value="<%=server%>">
<input type="hidden" name="pos" value="0">
<input type="hidden" name="db" value="<%=var.get( "db" )%>">
<input type="hidden" name="goto" value="db_details.jsp">
<input type="hidden" name="zero_rows" value="<i18n:message key="strSuccess"/>">
<i><i18n:message key="strOr"/></i> <i18n:message key="strLocationTextfile"/>:<br>
<input type="file" name="sql_file"><br>
<input type="submit" name="SQL" value="<i18n:message key="strGo"/>">
</form>
<!--<li><a href="tbl_qbe.jsp<%=query%>"><i18n:message key="strQBE"/></a>-->
<li><form method="post" action="db_dump.jsp"><i18n:message key="strViewDumpDB"/><br>
<table>
<tr>
<td>
<input type="radio" name="what" value="structure" checked><i18n:message key="strStrucOnly"/>
</td>
<td>
<input type="checkbox" name="drop" value="1"><i18n:message key="strStrucDrop"/>
</td>
<td colspan="2">
<input type="submit" value="<i18n:message key="strGo"/>">
</td>
</tr>
<tr>
<td>
<input type="radio" name="what" value="data"><i18n:message key="strStrucData"/>
</td>
<td>
<input type="checkbox" name="asfile" value="sendit"><i18n:message key="strSend"/>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input type="checkbox" name="showcolumns" value="yes"><i18n:message key="strCompleteInserts"/>
</td>
</tr>
</table>
<input type="hidden" name="server" value="<%=server%>">
<input type="hidden" name="db" value="<%=db%>">
</form>
<li>
<form method="post" action="tbl_create.jsp">
<input type="hidden" name="server" value="<%=server%>">
<input type="hidden" name="db" value="<%=db%>">
<i18n:message key="strCreateNewTable"/><%=db%>:<br>
<i18n:message key="strName"/>: <input type="text" name="table_to_create"><br>
<i18n:message key="strFields"/>: <input type="text" name="num_fields" size=2>
<input type="submit" value="<i18n:message key="strGo"/>">
</form>
<li>
<a href="sql.jsp?server=<%=server%>&db=<%=db%>&sql_query=<%= URLEncoder.encode("DROP DATABASE " + db)%>&zero_rows=<i18n:message key="strDatabase"/><%=db%> <i18n:message key="strHasBeenDropped"/>&goto=main.jsp&reload=true"><i18n:message key="strDropDB"/><%=db%></a> [<%=show_docu("manual_Reference.html#Drop_database",cfg)%><i18n:message key="strDocu"/></a>]
</ul>
</div>
<%@ include file="footer.inc.jsp"%>
--- NEW FILE: db_dump.jsp ---
<%@ include file="lib.inc.jsp"%>
<%
String crlf = "\n";
if ( (var.notEmpty( "asfile" )) ) {
response.setHeader("Content-disposition","filename="+db+".sql");
response.setHeader("Content-type","application/octetstream");
response.setHeader("Pragma","no-cache");
response.setHeader("Expires","0");
String client = request.getHeader("USER-AGENT");
if (client.indexOf("(")>0 && client.indexOf(")")>0) {
client = client.substring(client.indexOf("(")+1, client.indexOf(")"));
client=client.toLowerCase();
if (client.indexOf("win")>-1) {
crlf="\r\n";
}
}
}
else {
%>
<%@ include file="header.inc.jsp"%>
<div align=left><pre>
<%
}
%>
<%
ResultSet rst = mysql_query(pageContext, "SHOW TABLES FROM "+db);
if(mysql_num_rows(rst) == 0)
{
out.println(geti18nMessage(request,"strNoTablesFound"));
}
else
{
out.print("# jspMyAdmin MySQL-Dump"+crlf);
out.print("# http://sourceforge.net/projects/jspMyAdmin/"+crlf);
out.print("#"+crlf);
out.print("# "+geti18nMessage(request,"strHost")+": "+cfg.get4Server( "host", server ));
if (!cfg.get4Server( "port", server ).equals("")) {
out.print(":"+cfg.get4Server( "port", server ));
}
out.print(" "+geti18nMessage(request,"strDatabase")+": "+db+crlf);
while (rst.next()) {
String dbtable = rst.getString(1);
out.print(crlf);
out.print("# --------------------------------------------------------"+crlf);
out.print("#"+crlf);
out.print("# "+geti18nMessage(request,"strTableStructure")+" '"+dbtable+"'"+crlf);
out.print("#"+crlf);
out.print(crlf);
out.print(get_table_def(pageContext, cfg, var, dbtable,crlf)+";"+crlf+crlf);
if ((var.notEmpty("what")) && (var.get("what").equals("data"))) {
out.print("#"+crlf);
out.print("# "+geti18nMessage(request,"strDumpingData")+" '"+dbtable+"'"+crlf);
out.print("#"+crlf);
out.print(crlf);
String[] sql_inserts = (get_table_content(pageContext, cfg, var, dbtable,";"));
for (int i=0;i<sql_inserts.length ;i++ ) {
if ( !var.notEmpty( "asfile" ) ) {
out.print(jspMyAdminUtil.htmlSpecialChars(sql_inserts[i]+crlf));
}
else {
out.print(sql_inserts[i]+crlf);
}
}
}
}
}
rst.close();
if ( !var.notEmpty( "asfile" ) ) {
%>
</pre></div>
<%@ include file="footer.inc.jsp"%>
<%
}
%>
--- NEW FILE: db_printview.jsp ---
<%@ include file="lib.inc.jsp"%>
<%
if ( (var.notEmpty( "message" )) ) {
out.println(show_message(cfg, var));
}
else {
%>
<%@ include file="header.inc.jsp"%>
<%
}
ResultSet rst = mysql_query(pageContext, "SHOW TABLES FROM "+db);
if (mysql_num_rows(rst)>0) {
%>
<table border="<%=cfg.get( "cfgBorder" )%>">
<th><i18n:message key="strTable"/></th>
<th><i18n:message key="strRecords"/></th>
<%
int i = 0;
while (rst.next()) {
String name = rst.getString(1);
ResultSet count = mysql_query(pageContext, "SELECT COUNT(*) FROM "+name);
count.next();
String bgcolor = ((i % 2)==0 ) ? (String)cfg.get( "cfgBgcolorOne" ) : (String)cfg.get( "cfgBgcolorTwo" );
out.println("<tr bgcolor=\""+bgcolor+"\">");
out.println("<td class=data><b>"+name+"</b></td>");
out.println("<td align=\"right\"> "+count.getString(1)+"</td>");
out.println("</tr>");
i++;
}
out.println("</table>");
}
else {
out.println(geti18nMessage(request,"strNoTablesFound"));
}
if (rst!=null) {
rst.close();
}
%>
<%@ include file="footer.inc.jsp"%>
--- NEW FILE: db_readdump.jsp ---
<%@ include file="lib.inc.jsp"%>
<%!
/**
* Eliminate comments a String into pices
*
* @author Zsolt Mali
* @param local_sql_query
*/
public String split(String local_sql_query) {
if ((local_sql_query == null) || (local_sql_query.equals("")) ) {
return "";
}
Vector local_str = new Vector();
String toreturn = "";
int exist = 0;
do {
exist =0;
if (!(local_sql_query.indexOf('\n')<0)) {
int i = local_sql_query.indexOf('\n');
String toadd = local_sql_query.substring(0, i+1);
//toadd = toadd.trim();
//System.out.println(toadd.length());
if ((toadd.length()!=0) && (toadd.charAt(0)!='\n') && (toadd.charAt(0) != '#') ) {
local_str.addElement(toadd);
}
/* if ( (toadd.length()!=0) () ) {
local_str.addElement(toadd);
System.out.println(toadd.charAt(0));
}*/
local_sql_query = local_sql_query.substring(i + 1, local_sql_query.length());
exist = 1;
}
}
while (exist ==1);
if (local_sql_query.length()>0) {
local_str.addElement(local_sql_query);
}
for (int i=0;i<local_str.size() ;i++ ) {
toreturn += (String)local_str.elementAt(i);
}
return toreturn;
}
/**
* Splits a String into pices
*
* @author Zsolt Mali
* @param local_sql_query
*/
public String[] split_sql(String local_sql_query) {
Vector local_str = new Vector();
//local_sql_query = jspMyAdminUtil.replaceFromStrToStr(local_sql_query, "#" ,"\r\n" ,"");
local_sql_query = local_sql_query.trim();
local_sql_query = replaceFromStrToChar(local_sql_query, "#" ,'\n' ,"");
char[] buffer = new char[2];
char in_string = '\u0000';
boolean in_str = false;
for(int i=0; i<local_sql_query.length(); i++) {
char ch = local_sql_query.charAt(i);
if (ch==';' && in_str==false)
{
local_str.addElement(local_sql_query.substring(0, i));
local_sql_query = local_sql_query.substring(i + 1, local_sql_query.length());
i = 0;
}
if((in_str==true) && (ch == in_string) && buffer[0] != '\\') {
in_str = false;
}
else if ( (in_str==false) && (ch == '\"' || ch == '\'') && (buffer[0]!='\u0000' || buffer[0] != '\\') ){
in_string = ch;
}
if(buffer[1]!='\u0000') {
buffer[0] = buffer[1];
}
buffer[1] = ch;
}
String[] toreturn = (local_sql_query.length()>0)
? new String[local_str.size()+1]
: new String[local_str.size()];
for (int j=0;j<local_str.size() ;j++ ) {
toreturn[j] = (String)local_str.get(j);
}
if (local_sql_query.length()>0) {
toreturn[toreturn.length-1] = local_sql_query;
}
return toreturn;
}
/**
* Replace in a String a Substring with a replacement
* starting from a specified Substring or char (begin)
* until other specified char (end).
*
* @author Zsolt Mali
* @param source the source string
* @param begin the begin substring
* @param end the end substring
* @param replacement the replacement string
*/
public static String replaceFromStrToChar(String source, String begin, char end, String replacement) {
int bsource = source.indexOf(begin);
int esource = source.indexOf(end, source.indexOf(begin));
while ( (bsource!=-1) && bsource==0 && (esource!=-1))
{
source = source.substring(0,bsource) + replacement +source.substring(esource+1, source.length());
bsource = source.indexOf(begin);
esource = source.indexOf(end, source.indexOf(begin));
}
return source;
}//end method --> public static String replaceFromStrToChar(String source, String begin, char end, String replacement)
%>
<%
String sql_query= (var.existKey("sql_query"))
? jspMyAdminUtil.stripSlashes((String)var.get((Object)"sql_query"))
: "";
sql_query = split(sql_query);
String[] query = split_sql(sql_query);
if ( (query.length==1) && (!query[0].equals("")) ) {
sql_query = query[0].trim();
%>
<jsp:include page="sql.jsp" flush="true">
<jsp:param name="sql_query" value="<%=sql_query%>"/>
<jsp:param name="db" value="<%=db%>"/>
<jsp:param name="server" value="<%=server%>"/>
</jsp:include>
<%
}
else {
ResultSet result = null;
for (int j=0;j<query.length ;j++ ) {
result = mysql_query(pageContext,query[j]);
}
if (result != null) {
result.close();
}
String message = geti18nMessage(request,"strSuccess");
sql_query = jspMyAdminUtil.stripSlashes(sql_query.trim());
%>
<%@ include file="header.inc.jsp"%>
<jsp:include page="db_details.jsp" flush="true">
<jsp:param name="message" value="<%=message%>"/>
<jsp:param name="sql_query" value="<%=sql_query%>"/>
<jsp:param name="db" value="<%=db%>"/>
<jsp:param name="server" value="<%=server%>"/>
</jsp:include>
<%
}//end else if ( (query.length==1) && (!query[0].equals("")) )
%>
--- NEW FILE: db_readfile.jsp ---
<%@ include file="lib.inc.jsp"%>
<%!
/**
* Eliminate comments a String into pices
*
* @author Zsolt Mali
* @param local_sql_query
*/
public String split(String local_sql_query) {
if ((local_sql_query == null) || (local_sql_query.equals("")) ) {
return "";
}
Vector local_str = new Vector();
String toreturn = "";
int exist = 0;
do {
exist =0;
if (!(local_sql_query.indexOf('\n')<0)) {
int i = local_sql_query.indexOf('\n');
String toadd = local_sql_query.substring(0, i+1);
//toadd = toadd.trim();
//System.out.println(toadd.length());
if ((toadd.length()!=0) && (toadd.charAt(0)!='\n') && (toadd.charAt(0) != '#') ) {
local_str.addElement(toadd);
}
local_sql_query = local_sql_query.substring(i + 1, local_sql_query.length());
exist = 1;
}
}
while (exist ==1);
if (local_sql_query.length()>0) {
local_str.addElement(local_sql_query);
}
for (int i=0;i<local_str.size() ;i++ ) {
toreturn += (String)local_str.elementAt(i);
}
return toreturn;
}
/**
* Splits a String into pices
*
* @author Zsolt Mali
* @param local_sql_query
*/
public String[] split_sql(String local_sql_query) {
Vector local_str = new Vector();
//local_sql_query = jspMyAdminUtil.replaceFromStrToStr(local_sql_query, "#" ,"\r\n" ,"");
local_sql_query = local_sql_query.trim();
local_sql_query = replaceFromStrToChar(local_sql_query, "#" ,'\n' ,"");
char[] buffer = new char[2];
char in_string = '\u0000';
boolean in_str = false;
for(int i=0; i<local_sql_query.length(); i++) {
char ch = local_sql_query.charAt(i);
if (ch==';' && in_str==false)
{
local_str.addElement(local_sql_query.substring(0, i));
local_sql_query = local_sql_query.substring(i + 1, local_sql_query.length());
i = 0;
}
if((in_str==true) && (ch == in_string) && buffer[0] != '\\') {
in_str = false;
}
else if ( (in_str==false) && (ch == '\"' || ch == '\'') && (buffer[0]!='\u0000' || buffer[0] != '\\') ){
in_string = ch;
}
if(buffer[1]!='\u0000') {
buffer[0] = buffer[1];
}
buffer[1] = ch;
}
String[] toreturn = (local_sql_query.length()>0)
? new String[local_str.size()+1]
: new String[local_str.size()];
for (int j=0;j<local_str.size() ;j++ ) {
toreturn[j] = (String)local_str.get(j);
}
if (local_sql_query.length()>0) {
toreturn[toreturn.length-1] = local_sql_query;
}
return toreturn;
}
/**
* Replace in a String a Substring with a replacement
* starting from a specified Substring or char (begin)
* until other specified char (end).
*
* @author Zsolt Mali
* @param source the source string
* @param begin the begin substring
* @param end the end substring
* @param replacement the replacement string
*/
public static String replaceFromStrToChar(String source, String begin, char end, String replacement) {
int bsource = source.indexOf(begin);
int esource = source.indexOf(end, source.indexOf(begin));
while ( (bsource!=-1) && bsource==0 && (esource!=-1))
{
source = source.substring(0,bsource) + replacement +source.substring(esource+1, source.length());
bsource = source.indexOf(begin);
esource = source.indexOf(end, source.indexOf(begin));
}
return source;
}//end method --> public static String replaceFromStrToChar(String source, String begin, char end, String replacement)
/**
* Reads the uploaded file into a String
* and the other parameters that was send with the request into a Hashtable
*
* @author Zsolt Mali
* @param request the source request
* @param disp the hashtable that will contains the parameters
*/
public String readUploadFile(HttpServletRequest request,Hashtable disp) throws IOException {
ServletInputStream stream = request.getInputStream();
byte[] b = new byte[8 * 1024];
String toreturn = "";
Vector v = new Vector();
String type = null;
String type1 = request.getHeader("Content-Type");
String type2 = request.getContentType();
// If one value is null, choose the other value
if (type1 == null && type2 != null) {
type = type2;
}
else if (type2 == null && type1 != null) {
type = type1;
}
// If neither value is null, choose the longer value
else if (type1 != null && type2 != null) {
type = (type1.length() > type2.length() ? type1 : type2);
}
if (type == null ||
!type.toLowerCase().startsWith("multipart/form-data")) {
throw new IOException("Posted content type isn't multipart/form-data");
}
int index = type.lastIndexOf("boundary=");
if (index == -1) {
throw new IOException("No boundary");
}
String boundary = type.substring(index + 9); // 9 for "boundary="
if (boundary.charAt(0) == '"') {
// The boundary is enclosed in quotes, strip them
index = boundary.lastIndexOf('"');
boundary = boundary.substring(1, index);
}
// The real boundary is always preceeded by an extra "--"
boundary = "--" + boundary;
int read = 0;
int file = 0;
int eof = 0;
while (read!=-1) {
int donotappend = 0;
byte[] bb = new byte[8 * 1024];
read = stream.readLine(bb, 0 , bb.length);
if (read!=-1) {
String unmodifline = new String(bb, 0 , read);
String line = unmodifline.toLowerCase();
if (line.indexOf("content-disposition: ")>=0) {
int start = line.indexOf("content-disposition: ");
int end = line.indexOf(";");
if (start == -1 || end == -1) {
throw new IOException("Invalid Content disposition: " + unmodifline);
}
String disposition = line.substring(start + 21, end);
if (!disposition.equals("form-data")) {
throw new IOException("Invalid content disposition: " + disposition);
}
start = line.indexOf("name=\"", end); // start at last semicolon
end = line.indexOf("\"", start + 7); // skip name=\"
if (start == -1 || end == -1) {
throw new IOException("Invalid Content disposition: " + unmodifline);
}
String name = line.substring(start + 6, end);
read = stream.readLine(bb, 0 , bb.length);
read = stream.readLine(bb, 0 , bb.length);
String value = new String(bb, 0 , read);
disp.put(name,value);
}
if (line.indexOf("filename")>=0) {
int start = line.indexOf("filename=\"");
int end = line.indexOf("\"", start + 10);
if (start != -1 && end != -1) {
String filename = unmodifline.substring(start + 10, end);
if (filename.length()>0) {
file = 1;
}
}
donotappend = 1;
}
if (line.indexOf("Content-Type")>-1) {
donotappend = 1;
}
if (file == 1 && eof == 0 && donotappend == 0) {
if (line.indexOf(boundary)>-1) {
//out.println("We end");
eof = 1;
}
else {
if (line.equals("\n") || line.equals("\r\n") || line.length()==0 ) {
}
else {
//out.println(line+"<br><hr>");
v.add(unmodifline);
}
}
}
}
}
if (v.size()>0 && file == 1) {
toreturn = "";
for (int j=0;j<v.size() ;j++ ) {
toreturn += (String)v.elementAt(j);
}
}
return toreturn;
}//end public readUploadFile
%>
<%
Hashtable dis = new Hashtable();
String sql_query = readUploadFile(request, dis);
//out.println(dis.size());
//out.println(sql_query+"<br><BR>");
Enumeration en = dis.keys();
while (en.hasMoreElements()) {
String key = (String)en.nextElement();
String value = (String)dis.get(key);
var.set(key.trim(), value.trim());
}
db = var.get("db");
server = var.getInt("server");
sql_query = split(sql_query);
String[] query = split_sql(sql_query);
if ( (query.length==1) && (!query[0].equals("")) ) {
sql_query = query[0].trim();
%>
<jsp:include page="sql.jsp" flush="true">
<jsp:param name="sql_query" value="<%=sql_query%>"/>
<jsp:param name="db" value="<%=db%>"/>
<jsp:param name="server" value="<%=server%>"/>
</jsp:include>
<%
}
else {
mysql_select_db(pageContext, cfg, server, db);
ResultSet result = null;
for (int j=0;j<query.length ;j++ ) {
result = mysql_query(pageContext,query[j]);
}
if (result != null) {
result.close();
}
String message = geti18nMessage(request,"strSuccess");
sql_query = jspMyAdminUtil.stripSlashes(sql_query.trim());
%>
<%@ include file="header.inc.jsp"%>
<jsp:include page="db_details.jsp" flush="true">
<jsp:param name="message" value="<%=message%>"/>
<jsp:param name="sql_query" value="<%=sql_query%>"/>
<jsp:param name="db" value="<%=db%>"/>
<jsp:param name="server" value="<%=server%>"/>
</jsp:include>
<%
}//end else if ( (query.length==1) && (!query[0].equals("")) )
%>
--- NEW FILE: error.jsp ---
<%@ page isErrorPage="true" import="java.util.*,java.io.*,com.jspmyadmin.*" %>
<html>
<head>
<title><app:dsmessage key="SITE_TITLE"/>-Error</title></head>
<body bgcolor="#F5F5F5" text="#000000" background="images/bkg.gif">
<table border="0" cellspacing="0" cellpadding="5" width="100%" align="center" valign="middle">
<tr>
<td width="150" align="right"> </td>
<td align="center"> <b>Oops! an exception occurred.</b> </td>
</tr>
<tr>
<td width="150" align="right"> </td>
<td align="center">The exception was: <font color="red"><b><%=exception.toString()%></b></font></td>
</tr>
<tr>
<td width="150" align="right"> </td>
<td align="center">The exception class was : <font color="red"><b><%=exception.getClass()%></b></font></td>
</tr>
</table>
</body>
</html>
<%
/*PrintWriter tr = new PrintWriter(out);
exception.printStackTrace(tr);*/
application.log(request.getRequestURI()+request.getQueryString(), exception);
%>
--- NEW FILE: footer.inc.jsp ---
</td>
</tr>
</table>
</body>
</html>
<%@ include file="application_parse_log.jsp"%>
--- NEW FILE: functions.js ---
<!--
var isFormElementInRange;
function checkFormElementInRange (form, name, min, max ) {
isFormElementInRange = true;
var val = parseInt( eval( "form." + name + ".value" ));
if(isNaN(val)) {
isFormElementInRange = false;
return false;
}
if (val < min || val > max ) {
alert( val +" is not a valid row number!" );
isFormElementInRange = false;
eval( "form."+ name + ".focus()");
eval( "form."+ name + ".select()");
}else {
eval( "form."+ name + ".value = val" );
}
return true;
}
//-->
--- NEW FILE: header.inc.jsp ---
<html>
<head>
<title>jspMyAdmin</title>
<style type="text/css">
//<!--
body { font-family: Arial, Helvetica, sans-serif; font-size: 10pt}
th { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; background-color: <%=cfg.get( "cfgThBgcolor" )%>;}
td { font-family: Arial, Helvetica, sans-serif; font-size: 10pt;}
form { font-family: Arial, Helvetica, sans-serif; font-size: 10pt}
h1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold}
A:link { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; text-decoration: none; color: blue}
A:visited { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; text-decoration: none; color: blue}
A:hover { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; text-decoration: underline; color: red}
A:link.nav { font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000}
A:visited.nav { font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000}
A:hover.nav { font-family: Verdana, Arial, Helvetica, sans-serif; color: red;}
.nav { font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000}
//-->
</style>
<!--
<META HTTP-EQUIV="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
-->
</head>
<body bgcolor="#F5F5F5" text="#000000" background="images/bkg.gif">
<%
if (var.notEmpty("db_to_create")) {
var.set("db", var.get("db_to_create"));
}
if ( var.notEmpty( "db" ) ) {
%>
<h1> <i18n:message key="strDatabase"/><%=var.get( "db" )%>
<%
if ( (var.get( "table" )!=null) && (!var.get( "table" ).equals("")) ) {
%>
- <i18n:message key="strTable"/><%=var.get( "table")%>
<%
}
out.println("</h1>");
}
%>
--- NEW FILE: index.jsp ---
<%
/*
* index.jsp 0.6 2001/08/25
* Copyright (c) 2001 zso...@ya... under the GPL (www.gnu.org/copyleft/)
*
* TERMS OF USAGE:
* This file was written and developed by Zsolt Mali (zso...@ya...)
* for educational and demonstration purposes only. You have all rights to use,
* modify, and redistribute this file as you like. The only
* requirement is that you must retain this notice, without modifications, at
* the top of your source code. No warranties or guarantees are expressed or
* implied. DO NOT use this code in a production environment without
* understanding the limitations and weaknesses pretaining to or caused by the
* use of these scripts, directly or indirectly. USE AT YOUR OWN RISK!
*/
%>
<%@ include file="lib.inc.jsp"%>
<html>
<head>
<title>jspMyAdmin</title>
</head>
<%
//sendMyFile();
out.println(load_javascript());
//show_table_navigation(0,0,0,out,pageContext);
%>
<frameset cols="150,*" rows="*" border="0" frameborder="0">
<frame src="left.jsp?server=<%=server%>" name="nav">
<frame src="main.jsp?server=<%=server%>" name="jspmain">
</frameset>
<noframes>
<body bgcolor="#FFFFFF">
</body>
</noframes>
</html>
--- NEW FILE: left.jsp ---
<%@ include file="lib.inc.jsp"%>
<html>
<head>
<title>jspMyAdmin</title>
<script LANGUAGE="JavaScript" type="text/javascript">
<!--
// These scripts were originally found on cooltype.com.
// Modified 01/01/1999 by Tobias Ratschiller for linuxapps.com
// Modified 7th June 2000 by Brian Birtles for Mozilla 5.0
// compatibility for phpMyAdmin
document.onmouseover = doDocumentOnMouseOver ;
document.onmouseout = doDocumentOnMouseOut ;
function doDocumentOnMouseOver() {
var eSrc = window.event.srcElement ;
if (eSrc.className == "item") {
window.event.srcElement.className = "highlight";
}
}
function doDocumentOnMouseOut() {
var eSrc = window.event.srcElement ;
if (eSrc.className == "highlight") {
window.event.srcElement.className = "item";
}
}
var bV=parseInt(navigator.appVersion);
NS4=(document.layers) ? true : false;
IE4=((document.all)&&(bV>=4)) ? true : false;
DOM=(!document.layers && !document.all && bV>=4) ? true : false; // A hack to guess if the browser supports the DOM
capable = (NS4 || IE4 || DOM) ? true : false;
function expandIt(){return}
function expandAll(){return}
//-->
</script>
<script language="JavaScript1.2" type="text/javascript">
<!--
isExpanded = false;
function getIndex(el) {
ind = null;
for (i=0; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id == el) {
ind = i;
break;
}
}
return ind;
}
function arrange() {
nextY = document.layers[firstInd].pageY + document.layers[firstInd].document.height;
for (i=firstInd+1; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.visibility != "hide") {
whichEl.pageY = nextY;
nextY += whichEl.document.height;
}
}
}
function initIt(){
if (NS4) {
for (i=0; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id.indexOf("Child") != -1) whichEl.visibility = "hide";
}
arrange();
} else if(IE4) {
tempColl = document.all.tags("DIV");
for (i=0; i<tempColl.length; i++) {
if (tempColl(i).className == "child") tempColl(i).style.display = "none";
}
} else if(DOM) {
tempColl = document.getElementsByTagName("DIV");
for (i=0; i<tempColl.length; i++) {
if (tempColl(i).className == "child") tempColl(i).style.visibility = "hidden";
}
}
}
function expandIt(el) {
if (!capable) return;
if (IE4) {
expandIE(el);
} else if(NS4) {
expandNS(el);
} else if(DOM) {
expandDOM(el);
}
}
function expandIE(el) {
whichEl = eval(el + "Child");
// Modified Tobias Ratschiller 01-01-99:
// event.srcElement obviously only works when clicking directly
// on the image. Changed that to use the images's ID instead (so
// you've to provide a valid ID!).
//whichIm = event.srcElement;
whichIm = eval(el+"Img");
if (whichEl.style.display == "none") {
whichEl.style.display = "block";
whichIm.src = "images/minus.gif";
}
else {
whichEl.style.display = "none";
whichIm.src = "images/plus.gif";
}
window.event.cancelBubble = true ;
}
function expandNS(el) {
whichEl = eval("document." + el + "Child");
whichIm = eval("document." + el + "Parent.document.images['imEx']");
if (whichEl.visibility == "hide") {
whichEl.visibility = "show";
whichIm.src = "images/minus.gif";
}
else {
whichEl.visibility = "hide";
whichIm.src = "images/plus.gif";
}
arrange();
}
function expandDOM(el) {
whichEl = document.getElementById(el + "Child");
whichIm = document.getElementById(el + "Img");
if (whichEl.style.visibility != "visible") {
whichEl.style.visibility = "visible";
whichIm.src = "images/minus.gif";
} else {
whichEl.style.visibility = "hidden";
whichIm.src = "images/plus.gif";
}
}
function showAll() {
for (i=firstInd; i<document.layers.length; i++) {
whichEl = document.layers[i];
whichEl.visibility = "show";
}
}
function expandAll(isBot) {
// Brian Birtles 7-Jun-00 : This fn might be unnecessary (for phpMyAdmin).
// My changes are certainly untested.
newSrc = (isExpanded) ? "images/plus.gif" : "images/minus.gif";
if (NS4) {
// TR-02-01-99: Don't need that
// document.images["imEx"].src = newSrc;
for (i=firstInd; i<document.layers.length; i++) {
whichEl = document.layers[i];
if (whichEl.id.indexOf("Parent") != -1) {
whichEl.document.images["imEx"].src = newSrc;
}
if (whichEl.id.indexOf("Child") != -1) {
whichEl.visibility = (isExpanded) ? "hide" : "show";
}
}
arrange();
if (isBot && isExpanded) scrollTo(0,document.layers[firstInd].pageY);
} else if(IE4) {
divColl = document.all.tags("DIV");
for (i=0; i<divColl.length; i++) {
if (divColl(i).className == "child") {
divColl(i).style.display = (isExpanded) ? "none" : "block";
}
}
imColl = document.images.item("imEx");
for (i=0; i<imColl.length; i++) {
imColl(i).src = newSrc;
}
} else if(DOM) {
divColl = document.getElementsByTagName("DIV");
for (i=0; i<divColl.length; i++) {
if (divColl(i).className == "child") {
divColl(i).style.visibility = (isExpanded) ? "hidden" : "visible";
}
}
imColl = document.getElementsByName("imEx");
for (i=0; i<imColl.length; i++) {
imColl(i).src = newSrc;
}
}
isExpanded = !isExpanded;
}
with (document) {
if(DOM) {
// Brian Birtles : This is not the ideal method of doing this
// but under the 7th June '00 Mozilla build (and many before
// it) Mozilla did not treat text between <style> tags as
// style information unless it was written with the one call
// to write().
var lstyle = "<style type='text/css'>";
lstyle += ".child {font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; text-decoration:none; visibility:hidden}";
lstyle += ".parent {font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; text-decoration:none;}";
lstyle += ".item { color: darkblue; text-decoration:none; font-size: 8pt;}";
lstyle += ".highlight { color: red; font-size: 8pt;}";
lstyle += ".heada { font: 12px/13px; Times}";
lstyle += "DIV { color:black; }";
lstyle += "</style>";
write(lstyle);
} else {
write("<style type='text/css'>");
if (NS4) {
write(".parent {font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; text-decoration:none; position:absolute; visibility:hidden; color: black;}");
write(".child {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt;color: #000000; position:absolute; visibility:hidden}");
write(".item { color: darkblue; text-decoration:none;}");
write(".regular {font-family: Arial,Helvetica,sans-serif; position:absolute; visibility:hidden}");
write("DIV { color:black; }");
} else if(IE4) {
write(".child {font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; text-decoration:none; display:none}");
write(".parent {font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; text-decoration:none;}");
write(".item { color: darkblue; text-decoration:none; font-size: 8pt;}");
write(".highlight { color: red; font-size: 8pt;}");
write(".heada { font: 12px/13px; Times}");
write("DIV { color:black; }");
}
write("</style>");
}
}
onload = initIt;
//-->
</script>
<base target="jspmain">
<style type="text/css">
//<!--
body { font-family: Arial, Helvetica, sans-serif; font-size: 10pt}
//-->
</style>
</head>
<body bgcolor="#D0DCE0">
<DIV ID="el1Parent" CLASS="parent">
<A class="item" HREF="main.jsp?server=<%=server%>">
<FONT color="black" class="heada">
<i18n:message key="strHome"/> </FONT></A>
</DIV>
<%
String[] dblist= null;
if ((cfg.get4Server( "only_db" , server ) != null) && (!cfg.get4Server( "only_db" , server ).equals("")) ) {
dblist = new String[1];
dblist[0] = cfg.get4Server( "only_db" , server );
}
String[] tablelist= null;
ResultSet rst = null;
String tmpdbname="";
int num_dbs=0;
int num_tables=0;
// Don't display database info if $server==0 (no server selected)
// This is the case when there are multiple servers and
// '$cfgServerDefault = 0' is set. In that case, we want the welcome
// to appear with no database info displayed.
if(cfg.getNumberOfServers()>=1)
{
if( dblist == null )
{
rst = mysql_query(pageContext, "SHOW DATABASES");
dblist= new String[mysql_num_rows(rst)];
//rst.beforeFirst();
while (rst.next()) {
dblist[num_dbs]=rst.getString(1);
num_dbs++;
}
rst.close();
}
else
{
num_dbs = dblist.length;
}
for(int i=0; i<num_dbs; i++)
{
String localdb = dblist[i];
int j = i + 2;
%>
<div ID="el<%=j%>Parent" CLASS="parent">
<a class="item" HREF="db_details.jsp?server=<%=server%>&db=<%=localdb%>" onClick="expandIt('el<%=j%>'); return false;">
<img NAME="imEx" SRC="images/plus.gif" BORDER="0" ALT="+" width="9" height="9" ID="el<%=j%>Img"></a>
<a class="item" HREF="db_details.jsp?server=<%=server%>&db=<%=localdb%>" onClick="expandIt('el<%=j%>');">
<font color="black" class="heada">
<%=localdb%>
</font></a>
</div>
<div ID="el<%=j%>Child" CLASS="child">
<%
rst = mysql_query(pageContext, "SHOW TABLES FROM "+localdb);
tablelist= new String[mysql_num_rows(rst)];
num_tables=0;
while (rst.next()) {
tablelist[num_tables]=rst.getString(1);
num_tables++;
}
for(int m=0; m<num_tables; m++)
{
String localtable = tablelist[m];
%>
<nobr> <a target="jspmain" href="sql.jsp?server=<%=server%>&db=<%=localdb%>&table=<%=URLEncoder.encode(localtable)%>&sql_query=<%=URLEncoder.encode("SELECT * FROM "+ localtable)%>&pos=0&goto=tbl_properties.jsp"><img src="images/browse.gif" border="0" alt="<i18n:message key="strBrowse"/>": "<%=localtable%>"></a> <a class="item" target="jspmain" HREF="tbl_properties.jsp?server=<%=server%>&db=<%=localdb%>&table=<%=URLEncoder.encode(localtable)%>"><%=localtable%></a></nobr><br>
<%
}
out.println( "</div>\n");
}
%>
<script LANGUAGE="JavaScript1.2">
<!--
if (NS4) {
firstEl = "el1Parent";
firstInd = getIndex(firstEl);
showAll();
arrange();
}
//-->
</script>
<%
}
%>
</body>
</html>
--- NEW FILE: lib.inc.jsp ---
<%
/*
* lib.inc.jsp 0.6 2001/08/25
* Copyright (c) 2001 zso...@ya... under the GPL (www.gnu.org/copyleft/)
*
* TERMS OF USAGE:
* This file was written and developed by Zsolt Mali (zso...@ya...)
* for educational and demonstration purposes only. You have all rights to use,
* modify, and redistribute this file as you like. The only
* requirement is that you must retain this notice, without modifications, at
* the top of your source code. No warranties or guarantees are expressed or
* implied. DO NOT use this code in a production environment without
* understanding the limitations and weaknesses pretaining to or caused by the
* use of these scripts, directly or indirectly. USE AT YOUR OWN RISK!
*/
%>
<%@ page language="java" import="java.text.*,java.sql.*,java.util.*,java.io.*,java.net.*,com.jspmyadmin.*" errorPage="error.jsp" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/i18n-1.0" prefix="i18n" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/regexp-1.0" prefix="rx" %>
<%
long parsed=(new java.util.Date()).getTime();
//pageContext.getRequest().setAttribute("parsed", String.valueOf(parsed));
int num_of_dbs=0;
String PROPERTIES_REQUEST_KEY =
"com.distribsoft.taglibs.PropertiesTag";
Properties myproperties = new Properties();
if (pageContext.getAttribute(PROPERTIES_REQUEST_KEY) != null) {
myproperties = (Properties) pageContext.getAttribute(PROPERTIES_REQUEST_KEY);
}
else {
try {
FileInputStream in = new FileInputStream(pageContext.getServletContext().getRealPath("/config.inc.jsp"));
myproperties.load(in);
in.close();
}
catch (IOException e) {
throw new javax.servlet.jsp.JspException(e.getMessage());
}
//set the properties to be available to the messageTag
pageContext.setAttribute(PROPERTIES_REQUEST_KEY,myproperties, pageContext.SESSION_SCOPE);
}
Hashtable all = new Hashtable();
Enumeration enum = myproperties.propertyNames();
while (enum.hasMoreElements()) {
String key= (String)enum.nextElement();
String value= myproperties.getProperty( key );
all.put( key, value );
}
jspMyAdminConfig cfg = new jspMyAdminConfig( all );
pageContext.removeAttribute("all", pageContext.SESSION_SCOPE);
jspMyAdminVar var = new jspMyAdminVar( pageContext );
int server= (var.existKey("server"))
? Integer.parseInt((String)var.get((Object)"server"))
: 0;
int pos= (var.existKey("pos2"))
? var.getInt("pos2")
: ( (var.existKey("pos")) ? var.getInt("pos") : 0);
String db= ( (var.existKey("db")) && (pageContext.getRequest().getAttribute("db")==null) )
? (String)var.get((Object)"db")
: "mysql";
if ((cfg.get4Server( "only_db" , server ) != null) && (!cfg.get4Server( "only_db" , server ).equals("")) ) {
db = cfg.get4Server( "only_db" , server );
}
String table= (var.existKey("table"))
? (String)var.get((Object)"table")
: "";
table= (var.existKey("table_to_create"))
? (String)var.get((Object)"table_to_create")
: table;
var.set("server", String.valueOf(server));
var.set("db", db);
var.set("table", table);
var.set("pos", String.valueOf(pos));
request.setAttribute("var", var);
request.setAttribute("cfg", cfg);
Connection ds_conn = null;
ConnectionPoolManager cm = null;
if (application.getAttribute("cm") == null) {
cm = new ConnectionPoolManager();
System.out.println("Creating ConnectionPoolMAnager");
cm.setDriver("org.gjt.mm.mysql.Driver");
if (cfg.get4Server("port", server) != null && !(cfg.get4Server("port", server).equals(""))) {
cm.setDbURL("jdbc:mysql://"+cfg.get4Server("host",server)+":"+cfg.get4Server("port",server)+"/"+db+"?user="+cfg.get4Server("user",server)+"&password="+cfg.get4Server("password",server));
}
else {
cm.setDbURL("jdbc:mysql://"+cfg.get4Server("host",server)+"/"+db+"?user="+cfg.get4Server("user",server)+"&password="+cfg.get4Server("password",server));
}
cm.setUser("root");
cm.setPassword("");
cm.setEnableTrace(true);
cm.setOpenConnectionCount(2);
application.setAttribute("cm", cm);
ds_conn = cm.getConnection();
pageContext.setAttribute("ds_conn", ds_conn);
}
else {
cm = (ConnectionPoolManager)application.getAttribute("cm");
if (cfg.get4Server("port", server) != null && !(cfg.get4Server("port", server).equals(""))) {
cm.setDbURL("jdbc:mysql://"+cfg.get4Server("host",server)+":"+cfg.get4Server("port",server)+"/"+db+"?user="+cfg.get4Server("user",server)+"&password="+cfg.get4Server("password",server));
}
else {
cm.setDbURL("jdbc:mysql://"+cfg.get4Server("host",server)+"/"+db+"?user="+cfg.get4Server("user",server)+"&password="+cfg.get4Server("password",server));
}
ds_conn = cm.getConnection();
pageContext.setAttribute("ds_conn", ds_conn);
}
String ds_language="";
if (request.getParameter("language")!=null) {
ds_language=request.getParameter("language");
request.getSession().setAttribute("language",ds_language);
}
else {
try {
if (request.getSession().getAttribute("language")!=null) {
ds_language=(String)request.getSession().getAttribute("language");
}
else {
ds_language="english";
request.getSession().setAttribute("language",ds_language);
}
}
catch (IllegalStateException E) {
System.out.println(E.getMessage());
}
}
String h="com.jspmyadmin.languages."+ds_language;
%>
<i18n:bundle baseName="<%=h%>" />
<%
String[] cfgColumnTypes = {
"TINYINT",
"SMALLINT",
"MEDIUMINT",
"INT",
"BIGINT",
"FLOAT",
"DOUBLE",
"DECIMAL",
"DATE",
"DATETIME",
"TIMESTAMP",
"TIME",
"YEAR",
"CHAR",
"VARCHAR",
"TINYBLOB",
"TINYTEXT",
"TEXT",
"BLOB",
"MEDIUMBLOB",
"MEDIUMTEXT",
"LONGBLOB",
"LONGTEXT",
"ENUM",
"SET"};
String[] cfgFunctions = {
"ASCII",
"CHAR",
"SOUNDEX",
"CURDATE",
"CURTIME",
"FROM_DAYS",
"FROM_UNIXTIME",
"NOW",
"PASSWORD",
"PERIOD_ADD",
"PERIOD_DIFF",
"TO_DAYS",
"USER",
"WEEKDAY",
"RAND"};
String[] cfgAttributeTypes = {
"",
"BINARY",
"UNSIGNED",
"UNSIGNED ZEROFILL"};
%>
<%!
public Connection mysql_connect(PageContext localpagectx, jspMyAdminConfig localcfg, int localserver, String localdb) throws SQLException,ClassNotFoundException {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://" +localcfg.get4Server("host", localserver)+ "/" +localdb+ "?user=" +localcfg.get4Server("user", localserver)+ "&password=" +localcfg.get4Server("password", localserver));
return conn;
}
public Connection mysql_connect(String _url) throws SQLException,ClassNotFoundException {
Class.forName("org.gjt.mm.mysql.Driver");
Connection conn = DriverManager.getConnection(_url);
return conn;
}
public void mysql_select_db(PageContext localpagectx, jspMyAdminConfig localcfg, int localserver, String localdb) throws SQLException,ClassNotFoundException {
Connection conn = (Connection)localpagectx.getAttribute("ds_conn");
conn.close();
Class.forName("org.gjt.mm.mysql.Driver");
String conn_url = (localcfg.get4Server("port", localserver) != null && !localcfg.get4Server("port", localserver).equals("") )
? "jdbc:mysql://" +localcfg.get4Server("host", localserver)+":"+localcfg.get4Server("port", localserver)+"/" +localdb+ "?user=" +localcfg.get4Server("user", localserver)+ "&password=" +localcfg.get4Server("password", localserver)
: "jdbc:mysql://" +localcfg.get4Server("host", localserver)+ "/" +localdb+ "?user=" +localcfg.get4Server("user", localserver)+ "&password=" +localcfg.get4Server("password", localserver);
Connection newconn = DriverManager.getConnection(conn_url);
localpagectx.setAttribute("ds_conn",newconn);
}
public ResultSet mysql_query(PageContext localpagectx, String query) throws SQLException {
Connection conn = (Connection)localpagectx.getAttribute("ds_conn");
PreparedStatement pstm = conn.prepareStatement(query);
ResultSet rst = pstm.executeQuery();
return rst;
}
public ResultSet mysql_query(Connection localconn, String query) throws SQLException {
Connection conn = localconn;
PreparedStatement pstm = conn.prepareStatement(query);
ResultSet rst = pstm.executeQuery();
return rst;
}
public String[] mysql_fetch_array(ResultSet rset) throws SQLException {
if (rset.next()) {
ResultSetMetaData rsdt = rset.getMetaData();
String[] fetch = new String[rsdt.getColumnCount()];
for (int i=1; i<=rsdt.getColumnCount(); i++ ) {
fetch[i-1] = rset.getString( i );
}
return fetch;
}
return null;
}
public Hashtable mysql_fetch_hashtable(ResultSet rset) throws SQLException {
if (rset.next() ) {
ResultSetMetaData rsdt = rset.getMetaData();
Hashtable fetch = new Hashtable();
for (int i=1; i<=rsdt.getColumnCount(); i++ ) {
String content = rset.getString( i );
if (content!=null) {
fetch.put(rsdt.getColumnName(i), content);
}
else {
fetch.put(rsdt.getColumnName(i), "");
}
}
return fetch;
}
return null;
}
public int mysql_num_rows(ResultSet rset) throws SQLException {
int current = 0;
try {
if (!rset.isBeforeFirst()) {
current = rset.getRow();
rset.beforeFirst();
}
}
catch (Exception e) {
return -1;
}
int number_of_rows=0;
while (rset.next()) {
number_of_rows++;
}
if (current!=0) {
rset.absolute(current);
}
else {
rset.beforeFirst();
}
return number_of_rows;
}
public String load_javascript () {
return "\n<script language=\"javascript\" src=\"functions.js\" > </script>";
}
public String geti18nMessage( ServletRequest pagesource, String key) {
ResourceBundle bundle =(ResourceBundle)pagesource.getAttribute("org.apache.taglibs.i18n.ResourceHelper.Bundle");
return bundle.getString(key);
}
public String get_table_def(PageContext localpage, jspMyAdminConfig localcfg, jspMyAdminVar localvar, String localtbl, String crlf) throws SQLException {
String schema_create = "";
Hashtable myrow = null;
Hashtable index = new Hashtable();
if(localvar.notEmpty("drop")) {
schema_create += "DROP TABLE IF EXISTS "+localtbl+";"+crlf;
}
schema_create += "CREATE TABLE "+localtbl+" ("+crlf;
ResultSet tbl_prop_rst = mysql_query(localpage, "SHOW FIELDS FROM " +localtbl);
while ( (myrow = mysql_fetch_hashtable(tbl_prop_rst))!=null ) {
schema_create += " "+myrow.get("Field")+" "+myrow.get("Type");
if (!myrow.get("Default").equals("")) {
schema_create += " DEFAULT '"+myrow.get("Default")+"'";
}
if (!myrow.get("Null").equals("YES")) {
schema_create += " NOT NULL";
}
if (!myrow.get("Extra").equals("")) {
schema_create += " "+myrow.get("Extra");
}
schema_create += ","+crlf;
}
schema_create = jspMyAdminUtil.replaceLast(schema_create,","+crlf,"");
tbl_prop_rst = mysql_query(localpage, "SHOW KEYS FROM " +localtbl);
while ((myrow=mysql_fetch_hashtable(tbl_prop_rst))!=null ) {
String keyname = (String)myrow.get("Key_name");
if ( (!keyname.equals("PRIMARY") ) && (myrow.get("Non_unique").equals("0"))) {
keyname="UNIQUE|"+keyname;
}
if (index.containsKey(keyname)==true) {
index.put(keyname,(String)index.get(keyname)+","+(String)myrow.get("Column_name"));
}
else {
index.put(keyname,myrow.get("Column_name"));
}
}
tbl_prop_rst.close();
Enumeration en = index.keys();
while (en.hasMoreElements()) {
schema_create += ","+crlf;
String key = (String)en.nextElement();
if (key.equals("PRIMARY")) {
schema_create += " PRIMARY KEY (" + index.get(key)+ ")";
}
else if ((key.length()>7) && ((key.substring(0,6)).equals("UNIQUE"))) {
schema_create += " UNIQUE "+key.substring(7)+" (" +index.get(key)+")";
}
else {
schema_create += " KEY "+key+" (" + index.get(key) + ")";
}
}
schema_create += crlf+")";
return (jspMyAdminUtil.stripSlashes(schema_create));
}
public String[] get_table_content(PageContext localpage, jspMyAdminConfig localcfg, jspMyAdminVar localvar, String localtbl, String sep) throws SQLException {
ResultSet localrst = mysql_query(localpage, "SELECT * FROM " +localtbl);
String[] insert = new String[mysql_num_rows(localrst)];
ResultSetMetaData rsmd = localrst.getMetaData();
String table_list="(";
for(int i=1; i<=rsmd.getColumnCount(); i++) {
table_list += rsmd.getColumnName(i)+", ";
}
table_list = jspMyAdminUtil.replaceLast(table_list,", ","");
table_list += ")";
if (localvar.get( "showcolumns" ) != null) {
table_list = "INSERT INTO "+localtbl+ " " +table_list+ " VALUES (";
}
else {
table_list = "INSERT INTO "+localtbl+" VALUES (";
}
int count = 0;
while (localrst.next()) {
String schema_insert = "";
for(int i=1; i<=rsmd.getColumnCount(); i++) {
String row = localrst.getStri...
[truncated message content] |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:51:50
|
Update of /cvsroot/jspmyadmin/jspmyadmin/src/com/jspmyadmin/languages In directory usw-pr-cvs1:/tmp/cvs-serv27090/src/com/jspmyadmin/languages Added Files: english.properties romanian.properties spanish.properties Log Message: Some re order to the CVS to make it build with ANT im preparing the build.xml and properties now, so in a week it maybe ready to workr --- NEW FILE: english.properties --- # $Id: english.properties,v 1.1 2002/07/26 03:51:47 aalmenar Exp $ */ strAPrimaryKey = A primary key has been added on strAccessDenied = Access denied strAction = Action strAddNewField = Add new field strAddSearchConditions = Add search conditions (body of the \"where\" clause): strAfter = After strAnIndex = An index has been added on strAtBeginningOfTable = At Beginning of Table strAtEndOfTable = At End of Table strAttr = Attributes strBrowse = Browse strCarriage = Carriage return: \\r strChange = Change strColumnNames = Column names strCopyTable = Copy table to: strCopyTableOK = Table \$table has been copied to \$new_name. strCreate = Create strCreateNewDatabase = Create new database strCreateNewTable = Create new table on database strDatabase = Database strDatabases = databases strDefault = Default strDelete = Delete strDeleted = The row has been deleted strDoAQuery = Do a \"query by example\" (wildcard: \"%\") strDoYouReally = Do you really want to strDocu = Documentation strDrop = Drop strDropDB = Drop database strDumpingData = Dumping data for table strEdit = Edit strEmpty = Empty strEmptyResultSet = MySQL returned an empty result set (i.e. zero rows). strEnclosedBy = enclosed by strEnd = End strError = Error strEscapedBy = escaped by strExtra = Extra strField = Field strFields = Fields strFunction = Function strGo = Go strHasBeenAltered = has been altered. strHasBeenCreated = has been created. strHasBeenDropped = has been dropped. strHasBeenEmptied = has been emptied. strHome = Home strHost = Host strIfYouWish = If you wish to load only some of a table's columns, specify a comma separated field list. strIndex = Index strInsert = Insert strInsertIntoTable = Insert into table strInsertNewRow = Insert new row strInsertTextfiles = Insert textfiles into table strKeyname = Keyname strLengthSet = Length/Set strLineFeed = Linefeed: \\n strLines = Lines strLocationTextfile = Location of the textfile strModifications = Modifications have been saved strMySQLReloaded = MySQL reloaded. strMySQLSaid = MySQL said: strMySQLShowStatus = Show MySQL runtime information strMySQLShowVars = Show MySQL system variables strName = Name strNext = Next strNo = No strNoTablesFound = No tables found in database. strNull = Null strOftenQuotation = Often quotation marks. OPTIONALLY means that only char and varchar fields are enclosed by the \"enclosed by\"-character. strOptionalControls = Optional. Controls how to write or read special characters. strOptionally = OPTIONALLY strPos1 = Begin strPrevious = Previous strPrimary = Primary strPrimaryKey = Primary key strPrinterFriendly = Printer friendly version of above table strProducedAnError = produced an error. strProperties = Properties strReadTheDocs = Read the docs strRecords = Records strReloadFailed = MySQL reload failed. strReloadMySQL = Reload MySQL strRenameTable = Rename table to strRenameTableOK = Table \$table has been renamed to \$new_name strReplace = Replace strReplaceTable = Replace table data with file strReset = Reset strRunSQLQuery = Run SQL query/queries on database strRunning = running on strSQLQuery = SQL-query strSave = Save strSelect = Select strSelectFields = Select fields (at least one): strSend = Send strShowingRecords = Showing records strStrucCSV = CSV data strStrucData = Structure and data strStrucDrop = Add 'drop table' strStrucOnly = Structure only strSubmit = Submit strSuccess = Your SQL-query has been executed successfully strTable = table strTableStructure = Table structure for table strTerminatedBy = terminated by strTheContent = The content of your file has been inserted. strTheContents = The contents of the file replaces the contents of the selected table for rows with identical primary or unique key. strTheTerminator = The terminator of the fields. strTotal = total strType = Type strUnique = Unique strValue = Value strViewDump = View dump (schema) of table strViewDumpDB = View dump (schema) of database strWelcome = Welcome to strWrongUser = Wrong username/password. Access denied. strYes = Yes strMySQLShowProcess = Show processes strLogout = Log out strQBE = Query by Example strBack = Back strTableComments = Table comments strOr = or strSelectNumRows = in query strCompleteInserts = Complete inserts strLimitNumRows = records per page strDisplay = Display strShow = Show strRowsFrom = rows starting from strEnableMagicQuotes = <b>Warning:</b> You haven't enabled magic_quotes_gpc in your PHP configuration. PhpMyAdmin needs this to work properly. Please have a look at the configuration section of the PHP manual for information on how to enable it. strPrintView = Print view Browse=Browse --- NEW FILE: romanian.properties --- # $Id: romanian.properties,v 1.1 2002/07/26 03:51:47 aalmenar Exp $ */ strAPrimaryKey = A primary key has been added on strAccessDenied = Access denied strAction = Action strAddNewField = Add new field strAddSearchConditions = Add search conditions (body of the \"where\" clause): strAfter = After strAnIndex = An index has been added on strAtBeginningOfTable = At Beginning of Table strAtEndOfTable = At End of Table strAttr = Attributes strBrowse = Navigheaza strCarriage = Carriage return: \\r strChange = Change strColumnNames = Column names strCopyTable = Copy table to: strCopyTableOK = Table \$table has been copied to \$new_name. strCreate = Create strCreateNewDatabase = Create new database strCreateNewTable = Create new table on database strDatabase = Database strDatabases = databases strDefault = Default strDelete = Delete strDeleted = The row has been deleted strDoAQuery = Do a \"query by example\" (wildcard: \"%\") strDoYouReally = Do you really want to strDocu = Documentation strDrop = Drop strDropDB = Drop database strDumpingData = Dumping data for table strEdit = Editeaza strEmpty = Gol strEmptyResultSet = MySQL returned an empty result set (i.e. zero rows). strEnclosedBy = enclosed by strEnd = Sfarsit strError = Eroare strEscapedBy = escaped by strExtra = Extra strField = Field strFields = Fields strFunction = Function strGo = Go strHasBeenAltered = has been altered. strHasBeenCreated = has been created. strHasBeenDropped = has been dropped. strHasBeenEmptied = has been emptied. strHome = Home strHost = Host strIfYouWish = If you wish to load only some of a table's columns, specify a comma separated field list. strIndex = Index strInsert = Insert strInsertIntoTable = Insert into table strInsertNewRow = Insert new row strInsertTextfiles = Insert textfiles into table strKeyname = Keyname strLengthSet = Length/Set strLineFeed = Linefeed: \\n strLines = Lines strLocationTextfile = Location of the textfile strModifications = Modifications have been saved strMySQLReloaded = MySQL reloaded. strMySQLSaid = MySQL said: strMySQLShowStatus = Show MySQL runtime information strMySQLShowVars = Show MySQL system variables strName = Name strNext = Next strNo = No strNoTablesFound = No tables found in database. strNull = Null strOftenQuotation = Often quotation marks. OPTIONALLY means that only char and varchar fields are enclosed by the \"enclosed by\"-character. strOptionalControls = Optional. Controls how to write or read special characters. strOptionally = OPTIONALLY strPos1 = Begin strPrevious = Previous strPrimary = Primary strPrimaryKey = Primary key strPrinterFriendly = Printer friendly version of above table strProducedAnError = produced an error. strProperties = Properties strReadTheDocs = Read the docs strRecords = Records strReloadFailed = MySQL reload failed. strReloadMySQL = Reload MySQL strRenameTable = Rename table to strRenameTableOK = Table \$table has been renamed to \$new_name strReplace = Replace strReplaceTable = Replace table data with file strReset = Reset strRunSQLQuery = Run SQL query/queries on database strRunning = running on strSQLQuery = SQL-query strSave = Save strSelect = Select strSelectFields = Select fields (at least one): strSend = Send strShowingRecords = Showing records strStrucCSV = CSV data strStrucData = Structure and data strStrucDrop = Add 'drop table' strStrucOnly = Structure only strSubmit = Submit strSuccess = Your SQL-query has been executed successfully strTable = table strTableStructure = Table structure for table strTerminatedBy = terminated by strTheContent = The content of your file has been inserted. strTheContents = The contents of the file replaces the contents of the selected table for rows with identical primary or unique key. strTheTerminator = The terminator of the fields. strTotal = total strType = Type strUnique = Unique strValue = Value strViewDump = View dump (schema) of table strViewDumpDB = View dump (schema) of database strWelcome = Welcome to strWrongUser = Wrong username/password. Access denied. strYes = Yes strMySQLShowProcess = Show processes strLogout = Log out strQBE = Query by Example strBack = Back strTableComments = Table comments strOr = or strSelectNumRows = in query strCompleteInserts = Complete inserts strLimitNumRows = records per page strDisplay = Display strShow = Show strRowsFrom = rows starting from strEnableMagicQuotes = <b>Warning:</b> You haven't enabled magic_quotes_gpc in your PHP configuration. PhpMyAdmin needs this to work properly. Please have a look at the configuration section of the PHP manual for information on how to enable it. strPrintView = Print view Browse=Browse --- NEW FILE: spanish.properties --- # $Id: spanish.properties,v 1.1 2002/07/26 03:51:47 aalmenar Exp $ */ strAPrimaryKey = Una clave primaria ha sido agregada a strAccessDenied = Acceso Denegado strAction = Accion strAddNewField = Agregar nuevo campo strAddSearchConditions = Add search conditions (body of the \"where\" clause): strAfter = Despues strAnIndex = Un Indice fue agregado en strAtBeginningOfTable = Al Pricipio de la Tabla strAtEndOfTable = Al Final de la Tabla strAttr = Atributos strBrowse = Browse strCarriage = Carriage return: \\r strChange = Cambiar strColumnNames = Nombre de las Columnas strCopyTable = Copiar La Tabla a: strCopyTableOK = La Tabla \$table a sido copiada a \$new_name. strCreate = Crear strCreateNewDatabase = Crear nueva base de datos strCreateNewTable = Crear nueva tabla en la base de datos strDatabase = Base de Datos strDatabases = Bases de Datos strDefault = Predefinido strDelete = Borrar strDeleted = La fila ha sido borrada strDoAQuery = Do a \"query by example\" (wildcard: \"%\") strDoYouReally = Estas seguro de que strDocu = Documentacion strDrop = Eliminar strDropDB = Eliminar base de datos strDumpingData = Dumping data for table strEdit = Editar strEmpty = Vacio strEmptyResultSet = MySQL devolvio un result set vacio (i.e. zero rows). strEnclosedBy = enclosed by strEnd = Fin strError = Error strEscapedBy = escaped by strExtra = Extra strField = Campo strFields = Campos strFunction = Funcion strGo = Go strHasBeenAltered = a sido cambiada. strHasBeenCreated = a sido creada. strHasBeenDropped = a sido eliminada. strHasBeenEmptied = a sido vaciada. strHome = Home strHost = Host strIfYouWish = If you wish to load only some of a table's columns, specify a comma separated field list. strIndex = Indice strInsert = Insertar strInsertIntoTable = Insertar en la tabla strInsertNewRow = Insertar nueva fila strInsertTextfiles = Insertar archivo de texto en la tabla strKeyname = Keyname strLengthSet = Length/Set strLineFeed = Linefeed: \\n strLines = Lines strLocationTextfile = Ubicacion del archivo de texto strModifications = Las modificaciones fueron guardadas strMySQLReloaded = MySQL fue recargada. strMySQLSaid = MySQL dijo: strMySQLShowStatus = Mostrar informacion del runtime de MySQL strMySQLShowVars = Mostrar variables de sistema de MySQL strName = nombre strNext = Siguiente strNo = No strNoTablesFound = No se encontraron tablas en la base de datos. strNull = Null strOftenQuotation = Often quotation marks. OPTIONALLY means that only char and varchar fields are enclosed by the \"enclosed by\"-character. strOptionalControls = Optional. Controls how to write or read special characters. strOptionally = OPTIONALLY strPos1 = Inicio strPrevious = Anterior strPrimary = Primario strPrimaryKey = Clave Primaria strPrinterFriendly = Printer friendly version of above table strProducedAnError = produjo un error. strProperties = Propiedades strReadTheDocs = Read the docs strRecords = Registros strReloadFailed = Recarga de MySQL fallida. strReloadMySQL = Recarga MySQL strRenameTable = Renombrar tabla a strRenameTableOK = La tabla \$table a sido renombrada a \$new_name strReplace = Remplazar strReplaceTable = Remplazar informacionde la tabla con archivo strReset = Reset strRunSQLQuery = Run SQL query/queries on database strRunning = Ejecutandose en strSQLQuery = SQL-query strSave = Guardar strSelect = Selecionar strSelectFields = Seleccione los campos (al menos uno): strSend = Enviar strShowingRecords = Mostrando registros strStrucCSV = CSV data strStrucData = Estructura y Datos strStrucDrop = Add 'drop table' strStrucOnly = Solo Estructura strSubmit = Enviar strSuccess = Your SQL-query has been executed successfully strTable = tabla strTableStructure = Meta-Estructura de la tabla strTerminatedBy = terminated by strTheContent = El contenido de su archivo ha sido insertado. strTheContents = The contents of the file replaces the contents of the selected table for rows with identical primary or unique key. strTheTerminator = The terminator of the fields. strTotal = total strType = Type strUnique = Unique strValue = Value strViewDump = View dump (schema) of table strViewDumpDB = View dump (schema) of database strWelcome = Bienvenido a strWrongUser = username/password Incorrecto. Acceso Denegado. strYes = Si strMySQLShowProcess = Mostrar Procesos strLogout = Salir strQBE = Query by Example strBack = Atras strTableComments = Table comments strOr = or strSelectNumRows = in query strCompleteInserts = Complete inserts strLimitNumRows = records per page strDisplay = Mostrar strShow = Mostrar strRowsFrom = rows starting from strEnableMagicQuotes = <b>Warning:</b> You haven't enabled magic_quotes_gpc in your PHP configuration. PhpMyAdmin needs this to work properly. Please have a look at the configuration section of the PHP manual for information on how to enable it. strPrintView = Vista para imprimir Browse = Browse |
Update of /cvsroot/jspmyadmin/jspmyadmin/src/com/jspmyadmin In directory usw-pr-cvs1:/tmp/cvs-serv27090/src/com/jspmyadmin Added Files: ConnectionPoolManager.java config.properties jspMyAdminConfig.java jspMyAdminLogWriter.java jspMyAdminUtil.java jspMyAdminVar.java Log Message: Some re order to the CVS to make it build with ANT im preparing the build.xml and properties now, so in a week it maybe ready to workr --- NEW FILE: ConnectionPoolManager.java --- /** * Copyright(c) 2001 iSavvix Corporation (http://www.isavvix.com/) * * All rights reserved * * Permission to use, copy, modify and distribute this material for * any purpose and without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies, and that the name of iSavvix Corporation not be used in * advertising or publicity pertaining to this material without the * specific, prior written permission of an authorized representative of * iSavvix Corporation. * * ISAVVIX CORPORATION MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES, * EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR ANY PARTICULAR PURPOSE, AND THE WARRANTY AGAINST * INFRINGEMENT OF PATENTS OR OTHER INTELLECTUAL PROPERTY RIGHTS. THE * SOFTWARE IS PROVIDED "AS IS", AND IN NO EVENT SHALL ISAVVIX CORPORATION OR * ANY OF ITS AFFILIATES BE LIABLE FOR ANY DAMAGES, INCLUDING ANY * LOST PROFITS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES RELATING * TO THE SOFTWARE. * */ package com.jspmyadmin; import java.util.*; import java.sql.*; /** * Manages a java.sql.Connection pool. * * @author Anil Hemrajani */ public class ConnectionPoolManager { private Vector connections = new Vector(10); private Vector urls = new Vector(10); private String _driver = null, _url = null, _user = null, _password = null; private boolean _traceOn = false; private boolean initialized = false; private int _openConnections = 10; public ConnectionPoolManager() {} public void setDriver(String driver) { _driver = driver; } public void setDbURL(String url) { _url = url; } public void setUser(String user) { _user = user; } public void setPassword(String password) { _password = password; } /** Use this method to set the maximum number of open connections before unused connections are closed. */ public void setOpenConnectionCount(int count) { _openConnections = count; } public void setEnableTrace(boolean enable) { _traceOn = enable; } /** Returns a Vector of java.sql.Connection objects */ public Vector getConnectionList() { return connections; } public Vector getUrlList() { return urls; } /** Opens specified "count" of connections and adds them to the existing pool */ public synchronized void setInitOpenConnections(int count) throws SQLException { Connection c = null; ConnectionObject co = null; for (int i=0; i < count; i++) { c = createConnection(); co = new ConnectionObject(c, false); connections.addElement(co); urls.addElement(this._url); trace("ConnectionPoolManager: Adding new DB connection to pool (" + connections.size() + ")"); } } /** Returns a count of open connections */ public int getConnectionCount() { return connections.size(); } /** Returns an unused existing or new connection. */ public synchronized Connection getConnection() throws Exception { if (!initialized) { Class c = Class.forName(_driver); DriverManager.registerDriver((Driver)c.newInstance()); initialized = true; } Connection c = null; ConnectionObject co = null; boolean badConnection = false; for (int i=0; i < connections.size(); i++) { co = (ConnectionObject)connections.elementAt(i); // If connection is not in use, test to ensure it's still valid! if (!co.inUse) { try { badConnection = co.connection.isClosed(); if (!badConnection) badConnection = (co.connection.getWarnings() != null); } catch (Exception e) { badConnection = true; e.printStackTrace(); } // Connection is bad, remove from pool if (badConnection) { connections.removeElementAt(i); trace("ConnectionPoolManager: Remove disconnected DB connection #" + i); continue; } c = co.connection; co.inUse = true; trace("ConnectionPoolManager: Using existing DB connection #" + (i+1)); break; } } if (c == null) { c = createConnection(); co = new ConnectionObject(c, true); connections.addElement(co); urls.addElement(_url); trace("ConnectionPoolManager: Creating new DB connection #" + connections.size()); } return c; } /** Marks a flag in the ConnectionObject to indicate this connection is no longer in use */ public synchronized void releaseConnection(Connection c) { if (c == null) return; ConnectionObject co = null; for (int i=0; i < connections.size(); i++) { co = (ConnectionObject)connections.elementAt(i); if (c == co.connection) { co.inUse = false; break; } } for (int i=0; i < connections.size(); i++) { co = (ConnectionObject)connections.elementAt(i); if ((i+1) > _openConnections && !co.inUse) removeConnection(co.connection); } } /** Marks a flag in the ConnectionObject to indicate this connection is no longer in use */ public synchronized void removeConnection(Connection c) { if (c == null) return; ConnectionObject co = null; for (int i=0; i < connections.size(); i++) { co = (ConnectionObject)connections.elementAt(i); if (c == co.connection) { try { c.close(); connections.removeElementAt(i); trace("Removed " + c.toString()); } catch (Exception e) { e.printStackTrace(); } break; } } } private Connection createConnection() throws SQLException { Connection con = null; try { if (_user == null) _user = ""; if (_password == null) _password =""; Properties props = new Properties(); props.put("user", _user); props.put("password", _password); con = DriverManager.getConnection(_url, props); } catch (Throwable t) { throw new SQLException(t.getMessage()); } return con; } /** Closes all connections and clears out the connection pool */ public void releaseFreeConnections() { trace("ConnectionPoolManager.releaseFreeConnections()"); Connection c = null; ConnectionObject co = null; for (int i=0; i < connections.size(); i++) { co = (ConnectionObject)connections.elementAt(i); if (!co.inUse) removeConnection(co.connection); } } /** Closes all connections and clears out the connection pool */ public void finalize() { trace("ConnectionPoolManager.finalize()"); Connection c = null; ConnectionObject co = null; for (int i=0; i < connections.size(); i++) { co = (ConnectionObject)connections.elementAt(i); try { co.connection.close(); } catch (Exception e) { e.printStackTrace(); } co = null; } connections.removeAllElements(); } private void trace(String s) { if (_traceOn) System.err.println(s); } /** Test driver. */ /* public static void main(String args[]) throws Exception { String dbDriver = "org.gjt.mm.mysql.Driver", dbURL = "jdbc:mysql://localhost/test", dbUser = "root", dbPassword = ""; ConnectionPoolManager cm = new ConnectionPoolManager(); cm.setDriver(dbDriver); cm.setDbURL(dbURL); cm.setUser(dbUser); cm.setPassword(dbPassword); cm.setEnableTrace(true); cm.setOpenConnectionCount(2); Connection c = cm.getConnection(), c2 = cm.getConnection(), c3 = cm.getConnection(), c4 = cm.getConnection(); cm.releaseConnection(c2); cm.releaseConnection(c3); cm.releaseConnection(c4); System.out.println("Connection count = " + cm.getConnectionCount()); Statement s = c.createStatement(); ResultSet rs = s.executeQuery("SHOW DATABASES"); while(rs.next()) System.out.println(rs.getString(1)); rs.close(); s.close(); cm.releaseConnection(c); }*/ } class ConnectionObject { public java.sql.Connection connection = null; public boolean inUse = false; public ConnectionObject(Connection c, boolean useFlag) { connection = c; inUse = useFlag; } } --- NEW FILE: config.properties --- /* $Id: config.properties,v 1.1 2002/07/26 03:51:47 aalmenar Exp $ */ /* * phpMyAdmin Configuration File * All directives are explained in Documentation.html */ // You can disable a server config entry by setting host to ''. // MySQL hostname host=localhost // MySQL port - leave blank for default port port= // Use advanced authentication? adv_auth=false // MySQL standard user (only needed with advanced auth) stduser=cox // MySQL standard password (only needed with advanced auth) stpass=root // MySQL user (only needed with basic auth) user=root // MySQL password (only needed with basic auth) password= // If set to a db-name, only this db is accessible only_db=test // Verbose name for this host - leave blank to show the hostname verbose=myserver host1=cox port1= adv_auth1=false stduser1=root stpass1= user1=root password1= only_db1= verbose1=second //You can put any {host,port...verbose} as you want but don't forget to //numerate them correctly cfgManualBase = http://www.mysql.com/documentation/mysql/bychapter/ cfgConfirm = true cfgBorder = 0 cfgThBgcolor = #D3DCE3 cfgBgcolorOne = #CCCCCC cfgBgcolorTwo = #DDDDDD cfgMaxRows = 30 cfgMaxInputsize = 300px cfgOrder = ASC cfgShowBlob = true cfgShowSQL = true --- NEW FILE: jspMyAdminConfig.java --- /* * jspMyAdminConfig.java 0.6 2001/08/25 * Copyright (c) 2001 zso...@ya... under the GPL (www.gnu.org/copyleft/) * * TERMS OF USAGE: * This file was written and developed by Zsolt Mali (zso...@ya...) * for educational and demonstration purposes only. You have all rights to use, * modify, and redistribute this file as you like. The only * requirement is that you must retain this notice, without modifications, at * the top of your source code. No warranties or guarantees are expressed or * implied. DO NOT use this code in a production environment without * understanding the limitations and weaknesses pretaining to or caused by the * use of these scripts, directly or indirectly. USE AT YOUR OWN RISK! */ package com.jspmyadmin; import java.util.*; public class jspMyAdminConfig { /** * Class description goes here. * * @version 0.9 2001/07/09 21:01:36 PM * @author Zsolt Mali */ Hashtable servers = new Hashtable(); int nofservers = 0; /** * constructor DSJspUtils * * @author Zsolt Mali * @param source the Hashtable with the config file key, value pairs */ public jspMyAdminConfig ( Hashtable source) { this.servers = source; init(); }//end constructor --> jspMyAdminConfig /** * Makes the initializations and set the static variables * * * @author Zsolt Mali */ public void init() { int i = 1; this.nofservers = ( (this.servers.containsKey("host")) && (!this.servers.get("host").equals("")) ) ? (this.nofservers+1) : this.nofservers; while ( this.servers.containsKey("host"+i) ) { this.nofservers = ( (this.servers.containsKey("host"+i)) && (!this.servers.get("host"+i).equals("")) ) ? (this.nofservers+1) : this.nofservers; i++; } }//end method --> public void init() /** * Makes the initializations and set the static variables * * * @author Zsolt Mali */ public int getNumberOfServers() { return this.nofservers; }//end method --> public void getNumberOfServers() /** * Getting the value for the specified key for the specified server * (default we getting the first key) * * @author Zsolt Mali * @param localkey the key from config * @param number the number from config */ public String get4Server( String localkey, int number) { if ( number>0 ) { return (String)this.servers.get(localkey+number); } else if ( number == 0) { return (String)this.servers.get(localkey); } else { return ""; } }//end method --> public String get4Server( String localkey, int number ) /** * Getting the value for the specified key * * @author Zsolt Mali * @param key the key which value we are looking for */ public Object get( Object key ) { return this.servers.get( key ); }//end method --> public Object get( Object key ) /** * Returning the value for the specified key as String * * @author Zsolt Mali * @param key the key which value we are looking for */ public String get( String key ) { return (String)this.servers.get( key ); }//end method --> public Object get( Object key ) /** * Returns the value for the specified key as Integer * * @author Zsolt Mali * @param key the key which value we are looking for */ public int getInt( Object key ) throws NumberFormatException { return Integer.parseInt((String)this.servers.get( key )); }//end method --> public int get( Object key ) /** * Appends a new key value pair to hashtable * * * @author Zsolt Mali * @param key the key * @param value */ public void set( Object key, Object value ) { this.servers.put( key, value); }//end method --> public void set( Object key, Object value) /** * Appends a new key value pair to hashtable * * * @author Zsolt Mali * @param key the key * @param value */ public void set( String key, String value ) { this.servers.put( key, value); }//end method --> public void set( Object key, Object value) }//end class --> jspMyAdminConfig --- NEW FILE: jspMyAdminLogWriter.java --- /* * jspMyAdminLogWriter 0.6 2001/08/25 * Copyright (c) 2001 zso...@ya... under the GPL (www.gnu.org/copyleft/) * * TERMS OF USAGE: * This file was written and developed by Zsolt Mali (zso...@ya...) * for educational and demonstration purposes only. You have all rights to use, * modify, and redistribute this file as you like. The only * requirement is that you must retain this notice, without modifications, at * the top of your source code. No warranties or guarantees are expressed or * implied. DO NOT use this code in a production environment without * understanding the limitations and weaknesses pretaining to or caused by the * use of these scripts, directly or indirectly. USE AT YOUR OWN RISK! */ package com.jspmyadmin; import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; import java.net.InetAddress; public class jspMyAdminLogWriter { PrintWriter out; String IPAdress; public jspMyAdminLogWriter(String log_FileName) { try { out = new PrintWriter(new FileWriter(log_FileName,true)); } catch (IOException e) { System.out.println("File not found"+log_FileName); } try { InetAddress me = InetAddress.getLocalHost(); this.IPAdress=me.getHostAddress(); } catch (Exception e) { e.printStackTrace(); } }//end method jspMyAdminLogWriter public jspMyAdminLogWriter(String log_FileName, String ipAddress) { try { out = new PrintWriter(new FileWriter(log_FileName,true)); } catch (IOException e) { System.out.println("File not found"+log_FileName); } this.IPAdress=ipAddress; }//end method jspMyAdminLogWriter public void writeln(String line) { Calendar rightNow = Calendar.getInstance(); SimpleDateFormat df = new SimpleDateFormat("(E dd MMM yyyy HH:mm:ss a)"); out.println(df.format(rightNow.getTime())+" - "+IPAdress+" - "+line); out.flush(); } //end method writeln public void close() { out.flush(); out.close(); } //end method close }//end class jspMyAdminLogWriter --- NEW FILE: jspMyAdminUtil.java --- /* * jspMyAdminUtil.java 0.6 2001/08/25 * Copyright (c) 2001 zso...@ya... under the GPL (www.gnu.org/copyleft/) * * TERMS OF USAGE: * This file was written and developed by Zsolt Mali (zso...@ya...) * for educational and demonstration purposes only. You have all rights to use, * modify, and redistribute this file as you like. The only * requirement is that you must retain this notice, without modifications, at * the top of your source code. No warranties or guarantees are expressed or * implied. DO NOT use this code in a production environment without * understanding the limitations and weaknesses pretaining to or caused by the * use of these scripts, directly or indirectly. USE AT YOUR OWN RISK! */ package com.jspmyadmin; public class jspMyAdminUtil { /** * Class description goes here. * * @version 0.9 2001/06/29 * @author Zsolt Mali */ /** * constructor jspMyAdminUtil */ public jspMyAdminUtil() { }//end constructor --> jspMyAdminUtil() /** * Converts > < & " into html equivalents > < & " from a source * string and returns it. * * @author Zsolt Mali * @param source the source string */ public static String htmlSpecialChars(String source) { if (source == null) { return ""; } StringBuffer dest= new StringBuffer(source.length()); for (int i=0;i<source.length() ;i++ ) { char c; c=source.charAt(i); if (c=='>') { dest.append(">"); } else if (c=='<') { dest.append("<"); } else if (c=='&') { dest.append("&"); } else if (c=='"') { dest.append("""); } else { dest.append(c); } } return dest.toString(); }//end method --> public String htmlSpecialChars(String source) /** * Converts \n into html equivalents <br> from a source * string and returns it. * (new line to break) * * @author Zsolt Mali * @param source the source string */ public static String nl2Br(String source) { if (source == null) { return ""; } StringBuffer dest= new StringBuffer(source.length()); for (int i=0;i<source.length() ;i++ ) { char c; c=source.charAt(i); if (c=='\n') { dest.append("<br>"); } else { dest.append(c); } } return dest.toString(); }//end method --> public String nl2Br(String source) /** * Converts ',",\,NUL into sql equivalents \',\",\\,\NUL from a source * string and returns it. * (new line to break) * * @author Zsolt Mali * @param source the source string */ public static String addSlashes(String source) { if (source == null) { return ""; } StringBuffer dest= new StringBuffer(source.length()); for (int i=0;i<source.length() ;i++ ) { char c; c=source.charAt(i); if (c=='"') { dest.append("\\\""); } else if (c=='\'') { dest.append("\\\'"); } else if (c=='\\') { dest.append("\\\\"); } else if ((c=='N') && ((i+2)<source.length()) && (source.charAt(i+1) == 'U') && (source.charAt(i+2) == 'L')) { dest.append("\\N"); } else { dest.append(c); } } return dest.toString(); }//end method --> public String addSlashes(String source) /** * Converts sql \',\",\\,\NUL into ',",\,NUL from a source * string and returns it. * (new line to break) * * @author Zsolt Mali * @param source the source string */ public static String stripSlashes(String source) { if (source == null) { return ""; } StringBuffer dest= new StringBuffer(source.length()); for (int i=0;i<source.length() ;i++ ) { char c; c=source.charAt(i); if ( (c=='\\') && (i+1<source.length()) && ( source.charAt(i+1)=='\'') ) { dest.append("\'"); i++; } else if ( (c=='\\') && (i+1<source.length()) && ( source.charAt(i+1)=='\"') ) { dest.append("\""); i++; } else if ( (c=='\\') && ((i+3)<source.length()) && (source.charAt(i+1) == 'N') && (source.charAt(i+2) == 'U') && (source.charAt(i+3) == 'L') ) { dest.append("N"); i++; } else if ( (c=='\\') && (i+1<source.length()) && ( source.charAt(i+1)=='\\') ) { dest.append("\\"); i++; } else { dest.append(c); } } return dest.toString(); }//end method --> public String nl2Br(String source) /** * Converts a string to integer. If fails is not throwing a * NumberFormatException, instead return 0. * * @author Zsolt Mali * @param source the source string */ public static int toInt(String source) { try { return Integer.parseInt(source); } catch(NumberFormatException notint) { return 0; } }//end method --> public int toInt(String source) /** * Replace in a String the last occurence of another String with a replacement * string. * This occurence must to be at the end of the source. * * @author Zsolt Mali * @param source the source string * @param occurence the occurence string * @param replacement the replacement string */ public static String replaceLast(String source, String occurence, String replacement) { if (source.lastIndexOf(occurence)==source.length()-occurence.length()) { return source.substring(0,source.lastIndexOf(occurence)) + replacement; } else { return source; } }//end method --> public static String replaceLast(String source, String occurence, String replacement) /** * Replace in a String all occurence of another String with a replacement * string. * * @author Zsolt Mali * @param source the source string * @param occurence the occurence string * @param replacement the replacement string */ public static String replaceAll(String source, String occurence, String replacement) { while (source.indexOf(occurence)!=-1) { source = source.substring(0,source.indexOf(occurence)) + replacement +source.substring(source.indexOf(occurence)+occurence.length(), source.length()); } return source; }//end method --> public static String replaceAll(String source, String occurence, String replacement) /** * Replace in a String a Substring with a replacement * starting from a specified Substring or char (begin) * until other specified Substring or char (end). * * @author Zsolt Mali * @param source the source string * @param begin the begin substring * @param end the end substring * @param replacement the replacement string */ public static String replaceFromStrToStr(String source, String begin, String end, String replacement) { while ( (source.indexOf(begin)!=-1) && (source.indexOf(end)!=-1) && (source.indexOf(begin)<source.indexOf(end)) ) { source = source.substring(0,source.indexOf(begin)) + replacement +source.substring(source.indexOf(end)+end.length(), source.length()); } return source; }//end method --> public static String replaceFromStrToStr(String source, String begin, String end, String replacement) }//end class --> public class jspMyAdminUtil --- NEW FILE: jspMyAdminVar.java --- /* * jspMyAdminVar.java 0.6 2001/08/25 * Copyright (c) 2001 zso...@ya... under the GPL (www.gnu.org/copyleft/) * * TERMS OF USAGE: * This file was written and developed by Zsolt Mali (zso...@ya...) * for educational and demonstration purposes only. You have all rights to use, * modify, and redistribute this file as you like. The only * requirement is that you must retain this notice, without modifications, at * the top of your source code. No warranties or guarantees are expressed or * implied. DO NOT use this code in a production environment without * understanding the limitations and weaknesses pretaining to or caused by the * use of these scripts, directly or indirectly. USE AT YOUR OWN RISK! */ package com.jspmyadmin; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.jsp.*; import javax.servlet.http.*; public class jspMyAdminVar { /** * Class description goes here. * * @version 0.9 2001/07/02 23:22:28 * @author Zsolt Mali */ Hashtable parameters = new Hashtable(); PageContext page ; /** * constructor jspMyAdminVar * * @author Zsolt Mali * @param page the PageContext object of the current page */ public jspMyAdminVar ( PageContext pagesource) { this.page=pagesource; reLoad(); }//end constructor --> jspMyAdminVar /** * ReLoad all the existent parameters from a page * * * @author Zsolt Mali */ public void reLoad() { this.parameters.clear(); parseParameters( this.page, this.page.SESSION_SCOPE ); parseParameters( this.page); parseParameters( this.page.getRequest() ); }//end method --> public void reLoad() /** * this is for testing scope only * * * @author Zsolt Mali */ public void test() { Enumeration e=retKeys(); while ( e.hasMoreElements() ) { try { Object key = e.nextElement(); this.page.getOut().println((String)key + "=" + get( key ).toString() + "<br>"); } catch (IOException ex) { System.out.println("Unable to write"); } } }//end method --> public void test() /** * Return all the keys from the Hashtable * * * @author Zsolt Mali */ public Enumeration retKeys() { return this.parameters.keys(); }//end method --> public Enumeration retKeys() /** * Return all the values from the Hashtable * * * @author Zsolt Mali */ public Enumeration retValues() { return this.parameters.elements(); }//end method --> public Enumeration retValues() /** * Return true if the specified key exist in the parameters * else return false * * * @author Zsolt Mali * @param key the searched key */ public boolean existKey( Object key ) { return this.parameters.containsKey( key ); }//end method --> public boolean existKey() /** * Return true if the specified value exist in the parameters * else return false * * * @author Zsolt Mali * @param value the searched value */ public boolean existValue( Object value ) { return this.parameters.contains( value ); }//end method --> public boolean existValue() /** * Return true if the specified key exist in the parameters and his value is not "" or null * else return false * * * @author Zsolt Mali * @param value the searched value */ public boolean notEmpty( Object key ) { if ( (this.parameters.containsKey( key )) && (get(key)!=null) && (!((Object)get(key)).toString().equals(""))) { return true; } return false; }//end method --> public boolean existValue() /** * If exist the specified key in the list returns his value, else returns null * * * @author Zsolt Mali * @param key the searched key */ public Object get( Object key ) { if ( this.parameters.containsKey( key ) != false ) { return this.parameters.get( key ); } else { return null; } }//end method --> public Object get() /** * If exist the specified key in the list returns his String value, else returns null * * * @author Zsolt Mali * @param key the searched key */ public String get( String key ) { if ( this.parameters.containsKey( key ) != false ) { return (String)this.parameters.get( key ); } else { return null; } }//end method --> public Object get() /** * If exist the specified key in the list returns his int value, else returns null * * * @author Zsolt Mali * @param key the searched key */ public int getInt( String key ) throws NumberFormatException { if ( this.parameters.containsKey( key ) != false ) { return Integer.parseInt((String)this.parameters.get( key )); } else { return 0; } }//end method --> public Object get() /** * Append a new key --> value pair to hashtable * * * @author Zsolt Mali * @param key the key * @param value the value of the key */ public void set( Object key, Object value ) { this.parameters.put( key, value); }//end method --> public void set( Object key, Object value) /** * Append a new key --> value pair to hashtable and to request object * * * @author Zsolt Mali * @param key the key * @param value the value of the key */ public void setRequestAttribute( String key, Object value ) { this.parameters.put( key, value); this.page.getRequest().setAttribute(key , value); }//end method --> public void setRequestAttribute( Object key, Object value) /** * Parse the request object of the PageContext and makes/adds keys and * value pairs to a Hashtable * * @author Zsolt Mali * @param request the request object */ public void parseParameters(ServletRequest request) { Enumeration en = request.getAttributeNames(); while ( en.hasMoreElements() ) { String name = (String)en.nextElement(); Object value = request.getAttribute(name); if ( value != null ) { parameters.put(name,value); } } Enumeration enum = request.getParameterNames(); while ( enum.hasMoreElements() ) { String name = (String)enum.nextElement(); String value = request.getParameter(name); if ( !value.equals("") ) { parameters.put(name,value); } } }//end method --> public void parseParameters(ServletRequest request) /** * Parse the session object of a PageContext and makes/adds keys and * to a Hashtable * * @author Zsolt Mali * @param session the session object */ public void parseParameters( HttpSession session ) { String[] enum = session.getValueNames(); for (int i=0 ; i<enum.length ; i++ ) { String name = enum[i]; Object value = session.getValue(name); if ( value != null ) { parameters.put(name,value); } } }//end method --> public void parseParameters( HttpSession session ) /** * Parse the PageContext and makes/adds attributenames and values * to a Hashtable * * @author Zsolt Mali * @param page the PageContext object */ public void parseParameters( PageContext page ) { Enumeration enum = page.getAttributeNamesInScope(page.PAGE_SCOPE); while ( enum.hasMoreElements() ) { String name = (String)enum.nextElement(); Object value = page.getAttribute(name); if ( value != null ) { parameters.put(name,value); } } }//end method --> public void parseParameters( page session ) /** * Parse the PageContext and makes/adds attributenames and values * to a Hashtable * * @author Zsolt Mali * @param page the PageContext object */ public void parseParameters( PageContext page, int scope ) { Enumeration enum = page.getAttributeNamesInScope(scope); while ( enum.hasMoreElements() ) { String name = (String)enum.nextElement(); Object value = page.getAttribute(name , scope); if ( value != null ) { parameters.put(name,value); } } }//end method --> public void parseParameters( page session ) }//end class jspMyAdminVar |
Update of /cvsroot/jspmyadmin/jspmyadmin In directory usw-pr-cvs1:/tmp/cvs-serv27090 Removed Files: application_parse_log.jsp config.inc.jsp database.inc.jsp db_create.jsp db_details.jsp db_dump.jsp db_printview.jsp db_readdump.jsp db_readfile.jsp error.jsp footer.inc.jsp header.inc.jsp index.jsp left.jsp lib.inc.jsp main.jsp newtest.jsp sql.jsp tbl_addfield.jsp tbl_alter.jsp tbl_change.jsp tbl_copy.jsp tbl_create.jsp tbl_dump.jsp tbl_printview.jsp tbl_properties.inc.jsp tbl_properties.jsp tbl_rename.jsp tbl_replace.jsp tbl_select.jsp test.jsp Log Message: Some re order to the CVS to make it build with ANT im preparing the build.xml and properties now, so in a week it maybe ready to workr --- application_parse_log.jsp DELETED --- --- config.inc.jsp DELETED --- --- database.inc.jsp DELETED --- --- db_create.jsp DELETED --- --- db_details.jsp DELETED --- --- db_dump.jsp DELETED --- --- db_printview.jsp DELETED --- --- db_readdump.jsp DELETED --- --- db_readfile.jsp DELETED --- --- error.jsp DELETED --- --- footer.inc.jsp DELETED --- --- header.inc.jsp DELETED --- --- index.jsp DELETED --- --- left.jsp DELETED --- --- lib.inc.jsp DELETED --- --- main.jsp DELETED --- --- newtest.jsp DELETED --- --- sql.jsp DELETED --- --- tbl_addfield.jsp DELETED --- --- tbl_alter.jsp DELETED --- --- tbl_change.jsp DELETED --- --- tbl_copy.jsp DELETED --- --- tbl_create.jsp DELETED --- --- tbl_dump.jsp DELETED --- --- tbl_printview.jsp DELETED --- --- tbl_properties.inc.jsp DELETED --- --- tbl_properties.jsp DELETED --- --- tbl_rename.jsp DELETED --- --- tbl_replace.jsp DELETED --- --- tbl_select.jsp DELETED --- --- test.jsp DELETED --- |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:45:59
|
Update of /cvsroot/jspmyadmin/jspmyadmin/src/com/jspmyadmin/languages In directory usw-pr-cvs1:/tmp/cvs-serv26382/src/com/jspmyadmin/languages Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/src/com/jspmyadmin/languages added to the repository |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:44:50
|
Update of /cvsroot/jspmyadmin/jspmyadmin/src/com/jspmyadmin In directory usw-pr-cvs1:/tmp/cvs-serv26225/src/com/jspmyadmin Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/src/com/jspmyadmin added to the repository |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:44:31
|
Update of /cvsroot/jspmyadmin/jspmyadmin/src/com In directory usw-pr-cvs1:/tmp/cvs-serv26191/src/com Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/src/com added to the repository |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:43:47
|
Update of /cvsroot/jspmyadmin/jspmyadmin/web In directory usw-pr-cvs1:/tmp/cvs-serv26049/web Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/web added to the repository |
|
From: Adrian A. <aal...@us...> - 2002-07-26 03:43:47
|
Update of /cvsroot/jspmyadmin/jspmyadmin/src In directory usw-pr-cvs1:/tmp/cvs-serv26049/src Log Message: Directory /cvsroot/jspmyadmin/jspmyadmin/src added to the repository |