mirror of
https://github.com/jcreek/Assassins-Mission-Control.git
synced 2026-07-13 02:53:44 +00:00
0a7943162d
This version works and has been tested in a full game with over 50 players however there isn’t as yet a proper admin backend and many activities require the admin to fiddle with html or SQL at the moment.
801 lines
184 KiB
PHP
801 lines
184 KiB
PHP
<?php
|
||
/** Adminer - Compact database management
|
||
* @link http://www.adminer.org/
|
||
* @author Jakub Vrana, http://www.vrana.cz/
|
||
* @copyright 2007 Jakub Vrana
|
||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
||
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
|
||
* @version 4.0.3
|
||
*/error_reporting(6135);$nc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($nc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$ug=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($ug)$$X=$ug;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
|
||
lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑA�XPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U�'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:�d”ºm>£S8L†J�œt.M¢�Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2�#8Ð�£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:�Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½�sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª�¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&Çï�YP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒ�ŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3�xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒ�nË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[�i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝ�Ý è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ� 浃CQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀ�R„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`�.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb�¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝC�ž-:zYHZIôà5F]¦²YúùCªOêA�ÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ�`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ñ�ªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–v�kõ\n+Eˆ�áÜ•*\0¶~¶Æù@g\"ÌNCI\$�àÉŒƒ€êx@WÃy¼*vuD‚8÷=ëª-v´®4›dÃD’yI‚Ò¤�¼_hÞÀ'z’VͶ• �žÜ6€�YzŽ:íQcž³Ú²”õ�wŒª0ÀÅ]xrÄ!å@¶½/-¡*Ì5©«¤I.±]ÐYxuÁÝé½o&Ö:Pß|CyÖ²wÖûÇÀ@L¯´Õ£Gf؆å¯)^¤�Æ¢+–ÍQ5‚ºÀÆL4\$Mpo‰0i¦\rÛ»Ïkô4*w7•¯S'’—ZÝ„nAb¨!�1‡)ñoÝ–9öc\0bÊïo-~2w4X,,…¶8m'™Ž›˜ìªY•ƒFH–Á3GqQZ-l™\0ãÊwìe‹d5¥¢»ÁðéiÏ.«–™dã)\\çh~\\WÌ€æ™Lá¸ÜÐmgòu«2lbš•àZçCÐ-6Èê�–dœl£¨b\re×Mu�§gra6ZD†ƒUÊ™!K-œŸ0Ó9–beH”\"ê×[JË�'¨¾»Z¼¡oµaº)‹XÉÆƒ&—�tÒ8ºì€GZ.®ÅÚ˜Âë+³lr£Êí̯]kÙ#£Àj-§¹ëúW´ÉP,¡àè>@ä` \rc3\"\\ÒŠq2‰z›âê@Mï¾poà‘ª0pò¤d~OٙǦö…½¸]¡´aï»;IxÆùxh°aÌ͇ò¬0NŽàâ~gâï? €äLŒcuÍäw”£}úŠªt™æ<±…¥Ã�Å·¼qS’vÚ°@�gsW}òL¸(kyȹ/6»CÐ8\rŒ‡°]\\£çLUöÞ^•nqiQÏn™T>A�9\"ô´—kFôÕÚú.*îß¹²¹íŽßT†òóCµ‘r?:ÀÜ„üwžMß,î\$m|‘xîm‘øÿ“¡÷©Bmu ®ð=é[ˆÆ ynÃ'÷½h¾ûÚì@óÞCœv¥S2dSVÑ ¨(‡ñ\">H‰{¾-G˜ºmM¼b+hBb›cp€Ãh_ Á¶}qöþïÖ«¿e¶†_ÂmÁinüæà8€àÃ#çý`·öþÿÀm?õÿ«ü~ˆÿcDþoþþ Æ�Ъ¯úý�Üþoô4@ï�Ü騂é<I\0``f�ˆÌŠº8 €ÉD”OªýôzÀÞþpM\0ê\rð\0üÐþ�\"¤xþh�ð^§ÀØðjþpp¿ptƒ0x§à¿0oPdbi<�+àùïó0j•à`)SpýðLàì)° ýð²1‹0ºÐ,ò¥ìù\n�`ýðjZϽð‡p±P^ÿPÓ0#)Íhð‹�èýçºxd0ÂÐ:++ô·É<úgß �ÐO`ÎûHûƒÙˆ\rbÒ�ÛÑ%àÆ�°ÔüQ'ñ-‘1P_°²\r�¤cß+@®\rqèÑ(˜ÑGð‰ñk1A�wñwoÑ‚nþq2qd®‘\0×G\$� aÍOæ\0Û1ŒJ©Ñ'ñ³CÙ‘“‘�„ŠÔ«ÆL`\$q±s±=‘JŒGHF.‚0Öö©=1÷Ïþ™Àó\0Q‘ ‘„7æÿÒ§h3\nÙ 1à¯þ2f�ª`Â/�ÌÿPq!0Ù!pªò?që\$Ðz,A°WrH§ë÷%p�L\0Ï\$°×%‘?�#&Òq °Ñ&’s Ú�ª&P%²M(²'’ƒ'rF5ÀÆ™rM\$PÙ*R©(rž�ð7\0…,1^üF%ÒËì„&P_)�…-0‚0\"Á¨Ä¬Öžï¹ò¦“±ØH‰B–PÁñ¹#pûÌí° ªØÃ®+#òÕ\rppûBšÓüRS2�&ò�2¯Ñ-Ž®þr±3nhÑö€Å0è§À§Jy%�*°VÁò])²G\r\"5,¾ù°õ]6Q�7Ñ\$ƒ3€üPM8r�Ó�\$s‹3’Gàe0 <8B�8©<,( �¨8²Ùàè Ó&šJÙ;€¦Ï)¤«ÀR6pÖlðGË\"12ð6˾.\"æ¿bï7¡\$: Ü8bêA1Ù:Ã';?;G*\$¼,³À�nõ<`òTÓÊ/3ϨÑf¬");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜�†QIî(.‹Äq¨àöO)ŒÆÌ¢ã‘”á1™E#)œŠx8\nâ‚ñð¸\\9ŠD⹄®d+¡ÑÎgÁ%(R,‰BqH®' ‘Gâq.›,2Ž„õÁÙö‚A�GCyœÏ#L’S±„ä\nŠL†óÖ8n:ŒæS¡G‡:�\$“%æö;—Æ)ÒØ™²Qš´G¢sEèÉØÄö)“Nn¶MN‡S‘¸@t9L¶Û|1›Íæ³LêTi3›…†C æ’{¾ßù�±é¸Êw0±@¤wÓ™œñ�®çƒãíΫ¼Îw{…ÈJ8\\C(÷�ɨÄZ¦j9´a[ÀÞ -òä;!ƒHÌ<ŠÈ`æß…(äš± +‚ḪÂ2\r£K¬9ð@å Áè`…�‹¼è�PPä™0L#�±#jô±Ã+ ¡EÉ’Ù£�pæ9aèØÂ;mø\\8Czèà�Š€^Žò¨]\rðø\\7ŽC8_Dƒp^ÂP é\0̱ w &c4^ŽRãN9DÓ\\Ü™Ãjü3ÃÂ@Êä\r8a;Mïl7�ƒd<3´cpÞГÀæ:)\\;¯C Ðцïå!6HT¥,4Oã=ц!pdÇTøÌSs;Éc}&&Œ¨ˆÂÅ„Á5cYÊíp‹1`ÓI£èbKPRtªf2Xé»›F Ã-!\rŒ–icYú„ŽWL\\PÞ®#r'b–]^2ÝØääCÍŽ1É(4—&ÉôD¥*JÒÄ<†]Ã:¸è/ÀTô:tÜ¿7áèPaH^?ƒ(ÇsÆ�s¦0»ÐPQƒá0³ç„÷ô?á‘*—�\rØb.Å.ðû™…ƒ2ñfO|fÄ<ìk2L¢…07êä®8øÈ!´£c+6fW#~<I+!-ÐQªâ×H÷�:â!\"šèÊ2 5“ø’¶M£m±1+èØÝ-±f᳇»„¶8\\£˜·½nûFÔ<¡ÞÚÚ…ÞÊ�ìò¸èÜ\r#ê…Žavä݃àö>…2’1ÁN(Èð<¶²´ô¨XñtÀ‹†§cŠ•Û:•Úù‚¦®«®'‰ò€¡ÊWÚŒê€RE8ÒØ±›p@š…Ü èÎú5ÚѨÀ·(8/ѧb3ö~\"J;é©Ò)^„=‡dŠv�²JÀ¤þäÌ'\rí:Ûöȧ[ íÆ˜ÅƒY�våüÜ×ä÷ŸYæà¶’CLÐ(7a„ÀΊ z¤a³±ÕÖgƒ2\\\rªô“ÂäBÛ%Q œ.ÂHA¡I \r�±-�%ß|/„ðÆ…ØjEÃL;¥´·=–¦Üo /L½h”…CÙâ� :ÐØe�b‰éœÑ³TZžZ‰eA£U¤NA@/�ö {np•P^ÊÁe+¥p®\"¶\n‡ƒƒ“@èø˜¶|Žš“iåí%½Óý\r<�~oÔ™Èdrd™’{å¡éd&°4§PÒ\$‚ÄŒ7u4šÁ[`…þT¦yj߃K…cÒÕ臖“C˜uHvP,¹<äØÒÇ\$\$Œ20ãƒâê'fLÍ©(L_üB}„€Ž@3\0cÐ%„LQŸ˜€æå¤”Àñ²†×++%ph–É�MÂfôŒê:—ú{˜s>‚ܹ%jLØ3ƒ ;Ô|ÎêfœEuÅÉÚ–³\0fõ\$r\rHS%Ѥ™2l™*4µŽôé�ó®“Îò?<gšê�%£˜+æY:)Q‰=rôém3ä©ëÑ”Fj\r’Ó”:R*HG)0r”)rQ°PÔ�CP<7ºVÊðÕ,I-€I…°Õƒ1þRm04´à]ZQt�:ˆÑ'ø¦¸U T0½Mã!ÍK‘! ȳ½AàÛxfÁ°ñP¢C£Ø¢dkÑvÎìçì³TÞ‚§TY;g:\r³’ÁÔÙÑU'Rƒ”ö‚UÒù^k_UóÚŸ):>Átý…Ô�YÈ:íðd–1ü‚þÞÕ'!Ñ\0®ÄhE¡¸kB×Fg]2UøoV’)¸µÊænåÞBucÄ•C�â2ö|6ÙìRéŒcT¾JÚNŸHs{îÎÕ)ýl‹Íú�%b“‡ÀÂ%¨|uNÕÇÜ\0IÔ£I&ŽÎ Þø-¸Wܹ´ºðl;Ñ\rƒÛcCëð3ÐGÉBÛŠ«}j®M42cã\\èKÄ—H“ë‚A\rˆ ¦`Ïlw¡ýшaö±M¬DÝX)Æt\"tDb凯¹¸‚Èà‚g¬Î¬zç3ÀæiC0t a”<«ÐPr•–Žg8ÐG=�'Ÿ³{‚ŒëBþ±8Öàƒ£pn£ô´˜õ6Hàé~ßd§-ÁI‰4õ©+ÊÑe±YÅ�4C¥RÒuË{[Wg•°–R“EƒÙoCÓ±yÑvågœÀL©–ž•³OÐ:n>M€2Õ™K½[œÌµ4Iˆe=®h\"‹\$¡‰†¼7´emH7&홳2(xƒÞ¡oêjeb¢¤V‹\n+WëÛ`æ•‘-\n¾ëºÇ·eí¤ÓÖ“¬^ñì’F’@™¡ä> M †ŒàÄÀ;R¦Æ^Áˆgá@÷|ÄJìö”q§\n\nØ4®Xfƒ‚¶N·Ø¼c˜»(uaMȨvùHs¸aöâó›�ÔÞá‹Ë@ 4PÌ: Ìy°,r4�GI*÷©¾ŠC0+aÝ' ƒÆ ºJê*ì2‚ÔTZ‹bó^¡¸upÍÇ:4Dš¤Ã‡Pžˆ�ŸK›Á†÷Ëá!¯›¬—x ð±�ø€a6L¶ƒ4R �`:¿ü„R\nêd4ï‹§ñþDÆy°È¦»05‡*…g%´D’8w4aÙcóUÜ·3#ýÙÉòrN³T°oõþÄц&£ùùrn×+´\n+IàF·d`ÑâŒ^&ÜÇv(ÝàŒqZsLûëêcY®Ì§GàÆ¿[ñÄ4X“}‘Z¼è~®‹M>‰j—y\0z¤ ÌÒàΓ€Nn\n¦JªÔ‹T†à«Š`ÕBKª„Ï\$ KhŒÂp'@^` ô ¸hà`^+\0HÀb-�*‡Çm#NêX“ïú»Oþ©ŠœÓ\n ÓI?\0ðEJÑpµëbÕð,FŒŸ„ñ\0Â�7°?0G¢³J„rãê-d×z4a‚ÜþÏ@ôPÊ’†Ži%dÇ\0Pþ\$®æà»¢üa,Ö%f\\ÇØïL]¨8(’4ãD fs.–Ðûãê bV ÃÅe6îo¸¯p²oöjÀéDˆ\r4a.NlOOWé\"®\nÖÆ†ÉÏÃù.>jd 0ÀÜ ¨”<Gf,íp³O\rËCëK0Ó1wËRMp{‘xÔð¥^ñb\r¤Ä¶§§kq »1‘°À% Oã`+Ѭ§2-j\"îq.k±:\r\0P³+ØF#à°*>©‹\n(OÊŠ@[ñ6-ƒ2¨�ÂRXZ\0íå\0*GBtòŠWrmR¶1þ\r ì0R\$Ÿmb}GÁ mêÚ‚±\0Ïn°nbu#QLÆr:#D³-¨ ÂÚÆf—cE!±”SBK\$ÌdÇM\$ƒª&C¿\"R7%ª¯oÚg2€Î²:äd\"PÞ{KÊ7¯Gðð\"Q*ë…Ú#‡k¯È%Ú�Ðêù\"½äö¾R¤y£j?eÚÁ‰\r+2H`Ç\0\0é,@ÂÀÈ0ëï‡\$qâ£2ÊLòȾ'¦ïMc-ƒÀÔæ@Ð\nƒøÁ’\\¬3©1S1ÇV{ Â-¯r ð/*‘’‘`ù³G…{#%02>»Ì1ó4Á\r6¿ó1\"D6ˆ†cÒú.€Ý2S )Hw7â‡ÌvÉm¾âÓs8‹F˜)†ä¬—9¨B0²˜pÒÐ6ÌNÛ‹ŠÐí¹ÒíÌ•DY7.úÑó4\rbÀ3<R¢]\0S-ÌÌÍÔÍ�9¬#0\n˜IˆóZð“_0‚°–¬:‰Ç<ÀNâDñ@ÖR¤\n€Ò#ˆ”zq%8I\r9Ç«0ƒFâ`Y‘*®æÎä¥/+µàÀDÍ‘4@hä13S f)óÝ4CSðnÎjÓôSÓH´Z,c¬unh\$E5`Nåïi´’æÆÿC9±H&t®oô~•©tƒìÝ5Í\"�“âƒ:%ÀÙKT•K‰ý?í �TÄÍÌ`a2:à†üä ÊädäÔ¬ÑÎ*!NÚƒ4撔꒔ñDB\r@)\rOËþœS¬Ék‹;s8]eÚÌä>¬ÚÀC<4HôL¹í4<@䘧Þ]\0¦.‚ƒ0Õ\"fó¹;#nÛrèîoÄ•¢tn ¼ÙFôšæþ»ÍhH0™ À¼îp©¢¹K§FkUl¦IxKƒ�\n‰}-ömMü·õš]àÏZ ~—“ó{YÀÎ Â&Õ\r\\Ödõ\\‹\\žLÆÖbj\r¯„ ‚qåß/²])àSP®×³ò4lâs–E¥_ZõŸZ-x™û`•³Z2.ÖuÁ\\UÔÕ\0|DÖ15Ó\\©ã\\õ¿[!c ^feH\r€à!Ål=Ré ëdo¯V�¸cÅ4Xòv7L'eç*�ÕærìhgO@£Jr¯Ùeƒ½f†È–o^§' ð´E…T>{OËVcþ¯¤›ÏàØŽ:Ïèôöü¬¿Ïô–àzÿÒ©°\0”¥+Q!qŒÔÕó!ééÈ}T6-¶´vV¸ÒBÂhËÑ\rF–Æ�Ú»JRþÖ~û4*srè Õ\\`P6‚*^…Pš\rc–;f8³Bj#tRf»%hŠ€èys\n~ã¬;< —At@Ët‹l tV<X\0‚7Ä\0ž@Ôk·Lwwj —ow7v b„ ¨‚I æóu.\n€ +€u;iüÖ7/s&½zª~ob>q&6,` à¦\n”˜à‹|B¯qˆ<6m—[zÖ‡tw¬OÄ6!‚„‰#F€[[E¬ðæ�†îÖàð¤ªàZšà[q‚>8#N‚Øç—Û{(¥~\n~Dæ(@°¸\$Y\0ȯ7_B±y‡u—\\˜³±„hjFòîRcÒa/ÆûK'e¥_{&&’].õN=4XBÈer…†GXfxK}ÃÄVWÕr†d¸¸}p÷ºŠhªŠ÷Ðk‹qq†jûx|¦X|T#¶æI¼cb\\nB„xX¶?îS€Ë3*�–ÑY¤Z ÷Öû¸œÝPûrgjpú¢=)¦§Š€ðÈDúD…ÀnÉ/‡'8¿r€zg\n½„\0šëH“O�ÖÔµk&¶ÜÝÔÍ\"ÌÈÖâ8}NZ,.\0cÀ_X+î€^\r1¤z“òñ‘Bt÷Ø6rÓRLÆUàC•d\" Œ,\0øEå \ràù: ˆŠÒ\$g�•ùbÂ\rŒ|ÎÌç4íõ8Ó‚f6Is+ø ª\n@’‰ ÛŒähz‰ú*�))œ9Æ\rùÊZ£À4Û610+‡H»Õ’|ÌDYk\$—¦Û¸Á›`Ô\rä<(@MCÝ(®ù쇒’\0¸Ã4 E¡ã@|ees‘*\0xò£oõqŒLœpš\\c—®r™œŸ)+@Ð~«ÿ¤×†ˆÏ@¸à\\P¨+‚ ,drƒ¿‘ÐÅŠx—qsÝŠø_‹8é¡…¿£º ˜ÊW8Î<XÕ}792ÌÎ\$³ÌîÚPTÀèç‰}J; 2ç¡Ú¤\\G;lq�\0™¾+”:šxðc’艔’<égi1àXâü\rͤ³SÍGrÍ>WFÓÞF”Ç5Úý(,q@m6s2Á»#@rðìÌF=°ƒk°ø¦\$uFV\nÚL /õÀC©jã\0äã@˜¡S©s(Õ)ñµ¢@ÉðfrqÜgdjFâ.H%1âÆÁs5I–Ï[É� Ðûø\\“@ËÐôé`{«n—RtƒE`z@o”•+>�뼆3,Ø}G¾Ñ`„n`å\r Ø-d“öƒ¶ Üàîá{|!(ˆdXç8Âc\$_V€žó#ÀFn['\$òt�Ç3²l~Â1'¿D?�[ 1/€&e0ôå7\\E4O7²h€F�Lõ\0b€XQ*\0àÃ1ö¨»D\0<\$šq(Ò„Ä�\nþtbÚcµÝÇÃǽnCF€ê\0`\$OÃ1|ÒÒ0vyg;m§o'�ÄcÍáÃËÅ/÷-…¼Ç&ºIDm%Â\nRŠpÏÆO5â\n€Þäd=0¥ÛÅ#=ÏeF€²ÿ\\1`el<æ–Sø;Ý\n e΄ÎÒå�H\$2ýÒ(¤¥eÏæý8�(VDQÑã½À�2§ÇW“‚Û²{e¶–ç²vöiPØØ€vŠVR\nsøä ‘¬E\0¨.—“ªæSzUì4@e–ç��üIÊí®Œ*yØ4ùÝœ™Íž}\\/yÔ\\x±�å'‹]ÁÃÇj6`æWºªâ�<m½í{n]ÓªýØu|;W£ëÛhˆØgnPµÞ¬ñß xn†õF€ÅmÞ¾ ÝCàÉÏÌZÒÌÜË›/ßÍÌ‘1Í›Œ¼áhåV�\$½B(XXEçª@X©yY8nsÑÜæn—ï”»À˜\rä7‚jQIˆ„ŽC{<®J\$cìÝ_¿¼/îÝè®Üoèî7çå •bíÂJñÕß^6Šr6Ž(NÜy™p6ݘíÚ™ºÚ�<³Ã¸cãͤp©ŠM<\"Ø“ÃèÛöã;ûl=dž�Õ�9Í6ǪOoF‘Ö–ýîGê7ÓðÒî r:B™8žxä¾®þïC\r²AÙ¯N(ÜénÝǰ›§K…•ÞÊäΪXì€WÇG9éÞ鿎6 €è\$}ói¦¦éuN\rõSDìÉRµP\nšè.×T²ß÷ÿ‚Wn×9N*\$ÜöñBr\r€„˜BÂÛFèܱ-×\0á×S¢Š}}¬ŽÆLÂJÔ`Ž=ÝÇ&@b†áý³2]ý8³VÀô®¤6ʤ°û�°~”°m•ÖS::å×oÜ3XÅ6’O·Ü�EI·QÌý‡í×°uüzlC/\0½™%0@žƒÌ¢ûŒLŸ\nÜX3ÕÅ„.ˆÐ+Ã˜Š jÈ\$ëx[Úg™-B°›·“Õ¾!´&š9 ^”³î\rÚ\0f&]˜°|`…@E:K4_LƼ@à†8%C[€V\rû‚PÐÛp==Ì›å‚Á:‚²‚0Í€ë˜�Ig°M€ÕÂÁ:\nÐGƒ; ¬Ws’°X‚RaLD`ðÏ5}1©´¹TÌÕÈA¿¹3h2#ú¡ÉF¹?ÝËi·d»þЂƒGV AþFBJÃUø`@\r?Êšx¨‚f¤VáÙIi%©Ç‘Í8±¥!¿bÊÀÈÚb™žÛ;…Å”p]‹¢É@D,Â\rSÅBÜ!ƒ5U`Ì“—Ç¡4\r4˜ ¸c*и}±5 €eÕ¨Dª>�öÏWÃ%µÝ.‡òZÁ%N^ÇC†dþpîNðw !\08 �¢\0Ð~vJv°6\0É.‰áy¨†ÉF2–l¶…vh6„W“‡Œ�|æÀk\0YÌ%<\rÀkóÃ!G!�5�…]q†ýü+iûù .09â,zî€{™&Z'˜\0TM@ÔÇ£6tÂh�+FàÄú(\0y*Pc¦=Å%wQK!ò¯ÚtÒ Âpàmp@Ø…H¬ŒçFИ‚–4D¿¾� ÑZxâ´&�ÄE‚- /‹<B §¡YD11‚ƈØsâ`�`º¶\"Bˆ¤Mâ÷Bs�ö&¥€£YÌ;\$n’PE\nO(®Ê8Žóx£Åð’H;s5 Tb’œx‰€*Šh€Â°\")úkÀÎ�¤~#\\幉„g’]â}¯¤åèköaðýØš,ê!5+«Ì‹(B#ïŸI�„'af_ÄÿÄc2Qm±¥z®�ŽÔž“uŠJ®Ž°á`{”ü�@%@w�ìÙLS’°�È'Wêú‰”å¦=IƒÜŒy\0äÀÁ™Ðaê æãŒ\0¡#‰ð\rÀDyÞ\0É X_§”¨ëuHÌ‚\0ä`CIŽuÈ‘ )[Ž£D\"6Nš\0P „ʶPð¬´5â(€ÔWŽJXÖÚ@é(‰¦�ð1'´\r�I\0P\0Äü˜\"Ô«†G4�‘hs 2�D©{2ì�¤djà9ÈÉ=Nb‘¸MTžs -™è&@]\r¿°/ó€HÚGOô”‚9%F¿V?òFYZÔMî*ù#%BêLš‚Tµ€ˆHPi,<œ”y4§¸W²Z’qÌdºÊ 2Å Zfý’ÁêÖå'ÉÉBKÒ�ü“e'÷{IRJÊÕ(LÇ´7䟆L§ä!7ƒ†0å·Ñ��ŒÓ–\nž�vçÇ>䪎œ&�ŒƒD,ŽœW¬«\0¢L\"’&-ÁÞÅÿNê¬g@5´œ„ä«P‰ÉVb±»òXE£„‹–P’ œI«)12«\$h�á\0Hò%ˆ@@Za2‘0—xo'ü5�§E.5d�Xã]?ÐË\0zËáò0&c€\0º11ŠŒ\\oDý5ˆË%< t\ruŸqË!@Ë\\Ш>è¤,?ÐÜ¥–¹ƒ¼*r˜ZÜGNk(1ÅŽ(//2,�Îc7€¼ €IX@ø \"¯�\0P•À\nt¦9—L\0004s#™,(ÆäP0¿+ÌŒŠ Hû\n°Û'xÅçX€Ø9‘¹–SìºeØâeÜËél@!o—´¾\0ð1iu�ŒÏe2eð@ìp>=Ãb L@¸òZDJ€Ã‚ í�ñ]3ró1ÃÌÖX‰@¿ók–¤Ð¡ù‡\$Š]Jº˜ŒÂ#\"ÉŠ¯¦i%ÀDÇ€¶%^‰B(sd\rHZÀu1DEÇBˆ•˜„äÉ–Ëì×2Ѧ4»0þLuIšT°Yt’Ô—ÎhUó|„JÙ0ùŒˆx³s��\\é'M;©Ôfwˆ¼/üÒå¬mÒâ‡\rÈäC7C„(éàˆ¢eÀk\"ø ÀBGÖÕ„ 5Ãx8�J]¢\$‘,ʨ–\r;äHUÌ\$ª¡<0¦�>°Ñ„*\0_\nX¦�Úðû\0®~À|˜tþ@Å3€9LéƒÑx_ЈªRs8xn\0P\"¦?È/@f(Åè4‘Í\0•б@À…@0��¨æQÚ´U¨�ýDÞ3Áù]í@ÁI 5?±mÚПé_¤×”Èeh\\Mxæ…<à[OÌÂÏôû£F'äoc}–¼2Bô™L:…Îý•U#H�€´dÞšxÃÆ\"\n/ö_31*l¬Z\0Ò¹\0^‚²¢xBÓZ*+HdB½Ÿí§DàðLYÇ”˜\nè>€®\nôÏ£G¬ÁÌ2��¶ÎÁ&•~œáe¯<0ÌL‘)KYRqö…†-H›éÉI‘KQðW4žV,…þUqA•d¥®¬*ù,ŠN™@°�ø¬æ±Ÿê7§îo£�ò|²ÅŸ<úH®7*PuÊc¥Ù1>€:Ϫ˜Þ¦ ÌuG€ôÍ\0ÃtÐ @wH£�S>��à+\n´\\Ô8ÁÁ ¼ØÔ\rÝ—²iK>ÜZ&>`œp3`f©K¢àvÆ.ð Œ4ùu>€5i¬3bWr4A„Á€a0��ÓØe´“ø¶�\nÔ&?`[¤›'aPçn\0�24Z¬ƒ)âȸc—ôÓƒ¸.Ó¡áØSú!ºF‘£rYvåJÿig#»Õ# \$e�HË6TáB–„ª�9oÒº¦È„hꈫà›8ù`0h@]0„¨¡UC(G™Hו\nªÈ/uleªZÿT‚T탓{�Mª[Sš—Õ… Ä�Aê×Í[0n ô¦–â1ª�*ÔfFâ¨éú>0]\0¾!ç6†Bmˆ\\(Ì �âªq¯«‰oY©-SŠÕv±•{ªÁn/T—ДήUMªxÄj¢¾’5neÊØ�ô¦ÂÏ\0ÈRê�\n)é>*�p’&J²e[“˜Qš‚¢@ðWƒkc[Zô%FʰՎ5üÓ*�PrÊmº§&}:ÅŠÕê çè®9›¤fÉj.‡þR»ÝD¬ p'U8j¢\r”މ•-��}0,XrXZ¸Z×<&UÑu²%›ºìL»Nõ‡@̪0u ˆœpÓà\"ÙpåzýZW8•¡<W€‚)ßQô¿)ƒ?,²è{aà'9‘V¡}\0¶äÔ\"jH%3ÙúO¤ùCÑ>^…~?+©Í_ºyTˆs®&IÄ‘jXR6à‹¤¿¥¹Ø%DD_ÕtYfY§Óx¶• uè•Ceu€´Ô:m¼à’HA%ƒUÒ:¢¦ó% ÚR ²z‰V^AÁ¬Bïd•Ñkm¢1—‡ö_…ø€bmtz¦ðO‹¬Vvq•œìêø†W2ÄÁdþÉLÏvÖc†2Îñ³ÈÒOgCÚ\$]6�s�‰ý(aÓÌâ•îxòÞÛê@&ïZ5?A\0íYË\n9EÙ¤#�PÙõÀç[ºÕ�Òar³µ!OÂ6—ƶ‡‡ê²ÀÒl4OkVVð!TF–:£Y§\\YãÙž�vÀ¢”.[6Èr\nA/䈃PÆ^Ùñ³\0tM8ƒ\ri+E–ÚÐfÅ ýš#²[VAáÉ=´`ß!ÛjFÚÁ°¶Åœ\niað7”AÏ,Êyý·L ‘Ö¨tz1¥+ifïZ¦Üö¬0ÖSG‘�ÛH‚6ò\r5µÌ;Z°ªÔöägAm˜»†Ï”1’�¸�»í¦+ŠOnÞŒ½ ý ®²\0Š,ŒHè¶ ˆAëâJÕ�¢º&]¸”Í\"½Pÿ^Ûa šÛefmYÐ\$v¸1m¬¬5¡ø©ñ\r\nN“ò”EÙCZ].—7=Î``ìK¶ ™´.R¹¬m!mëDJÜ(ÓgÔº›'uE(W¦ë )/ùgéÖö¦µ%ɶ‡m jh\0ª)Ùß´%–8ÙW=Ш]4zsIüÍ였‡ôÌÞ†îɤÙG’Gp\0‰È\0\"�•fœ»ÌDšó“—K~PÒøDŽ„N�k�±=�L-+\0œQÖ:Å:ÏX)kרÜ4b9±íï _ØnÜÚÁW]W\\ÐBRoXVð•Ýp��(¢ÚûÂQRðV™#H¨‡b\0007NñSëMãB«Ñ\0®fô|rZyÖœÞZô!k¼åå[w~°¬^pw¢½a[¯\\-Ýj÷¢�¼%ýìl-;ÙTâhæFðÚgOà‘8nhÐ*4eÛ‰V\0È’((T%`)ú Z×´’¦(;S–ŠY!мÊç¶Ô�ùR°2×3Lµø+“�žÌIq[•—ˆ–ºã¯CO¸:¥0À\r²qX\$ñQ�<U.BB8¢pz“| =ÿ@'&¾\nÒk§\"±ê’À.Ï ªÀªø#Ûóìƒ~+�ÁýÀx]T@‡bý0�H N_ &F¾ÐݶÊå‘�•É®&Z\"�ËÈŽ!dˆp`\"Œ=a—÷á—龺p�éØv‚›ß°2ÖÜ@‹”¯�\n¾îT\"€âD7øƒ ÖCs%’™-Øš5t%7ú’Åjõ(‡uG”µëŠÒù©IÅ™[«j)W)ºB7§CZߪTzs×,¼k†�ù …JêvØ>ì4.Æ\r~ÏÞ]¥«CÌ4ïß @øî¦#ý 6«õ:«Zjfÿ¨Ð 0ÿ–a>ê&+,#ØvóÍ:—¸V\0b‚v…cš«EÞE]UÅÚ�c_n³ÅíêjUùàŠç'ÏÆZà’ˆ«La*\$\$¨”Æ~*±¤¬|Ÿ©k³Ø–N9±·‚xÎTóø–î8ðCÌyVÂ`!Ç=R/ÒÊñÁŠå\nEÂB¢ ÐSirUW˜‰A†=åDƒZ—5®¦b•L¶ì¶J„!c‘ 6hÊeòO�· ‹%ˆ&B³’%a[KL¡‹\"'Ò�‚ÞG;�žãùp tÊE\ngT.e®¼0ª²@L„\0É\nºŽ {Æó=ßÙV2P?ÀÏ“ÃTÆœ`Hü`CPG�5�˜´2Øš¬ÞréW»º¸6Ó7O Ô¶ KF[ìžÃ•\$ ™çÖhƒ�!ŽÄ꺡vQª•/fž¡P ['µ¨õXŒ±¤\0+Ìšbš.eÐŽ¹)�;r¾µ,»æ§,˜ÌÈ:á!ÌÞôŠç+ÓÃÍÂG³t~ŒŠ�v™›!†gP—Ž·�ù§ÁXÍiJ6ÀdÎ#ã,Ö@é05[L@Ip\0Š€\n÷;(ªÉ¦8‘1D°ß¤;\$]Ä>=P^s±½SœÉræÀX±£ÜiÝ’êGù‘¦6‘½—¬Œå´k©\n@R1¥½˜¸dŽŒ¤¹uº¯)¡lçäž^Ù+A&S2_¡\\÷Õm¹6„j\r\r�<=`nU”©òÚòƒ˜Q,jz%áž4k¡œÏ ƒ)ZB®‡å^°…hÎM˜Êr¢q<|X½nÙ ^^r°†ÊaØ™(l,xäßÂæ}xà€yŸ*'©—ªHhy}à«Ò¨_a„€ýºhC?…ÚÍ„•\"(¬:XS0Ð`ˆW>Ñ‚øÀpP&f�ØãO�@núd]>¹Øâ4é>V—Àæ+Ä\\å2ÐvÌ'(9+›ýT¬aQ|�Ff‘‡°3áÅsèaTñT÷Z¡¶¨Ý×Äj \r²4HiR4±¢š±\$\$ÿW½blŽÑ)¢ÒS¤Ó0.bH©P‘ÂEØ‘P'8,Ò@ˆì�WÕ:0æZ�Ò¡ô,gF``ZµªÔ\rl/T0 p\r¦~ó¬8¤êxÞ¸H|û ‘�túë¶»uŠP-xJZö³¤kºyƒÒ=÷Z²Pë,|y@€öCD¤&n»žŒcZ>xèÀ.£F!’ÝI£^ä>R¹„õ�b‚J—SàtØK‰\0Ð'–ƒÐÌèÓnÈÀS!‡XÓdbFØ@TZ“ô€•”'\n®ªä‚ÈS\n\\ó›\nÙvlÔDòއÙ6ÊÍC=‘€·ec/Ù{޶?³#ÊlÐÍ 2Ú8¤6?³´lú¹4q¦¶‰´½®·xÎÿbi@@ÈQÍ^öï™ÖŽF…°íqìDÛ{ؤԶ-~`¬\r€\$É}Ÿu°•Tcg£P~ÀõRžWÝ:q;Øãmqª�blä [H¦¿v@�=ª£k�x6Ïñ&û Þ÷WÝÛÐZ*G_€÷i¡!’ª\0cºp8;'m }ÝVÖ5@gãÊ\0¯h¤{Ù¾ïv‚ª�ÙodâY –áÇi¹âm#u;lfÛ¤©7á™êU܇ٞÈöÓ½«Û“ßU{‰>Íõn}GjAe\"ç\\ûŒ½KÊNP¯ÌÔâiÅÑU0°ë³|µ?2NQQ¿Á�.RJ•¢Õžu\r«g€º„ÓÖ©†\$#¡ÂïkS”Ð-�e·à¹”åO°ý\0V‡Ð¨¨{M–›5è7æ=ìüH‹r’#\0_ÂÇ)@Ã#ÞPMž^ÅR`ü+áo¸a�rp„ �¬âvÃ<‘§®KÈkœÊ1„Û˜bp”4\$ê;e±„;La¡®˜‰ñ\\×î°øfJ@®“œBáôЇþ\"\n\n�O@-\n\\��º°9€°j•øÁq>ô5BÖæ IMx´º=¬OêA^7Ç«`þ ½Gö2ª:;òzS6A�Zæ+\$¹¤ÐÃÅ4VÂÍÀ!Äÿ\"BŽ&k,Í0%ÿ㺧2\"ÌOñ7\rmÄø[1>ú÷»>Å1à;Œ\\pÊÖ{VÜÅ�˜#–'ðý‰wBg)9¤†‰¿\\±ñx�Þå}�7�†Üú* £[äHΉsÆ4,T¢�Äšew+ͧ_ŒH@:å7ȧͱt‘íÆb�ænÐvgͱíGš�§ÿ9tûƒÕØóÛ`8=æêpùÍ„p»'�N4ß8¹‹Xqž÷L��ä’ȸðñ:òw�£¹é„Ûç¦ÈdÀÑðâ‡\"áFÁÊP�„—ü”§@\\^å+šô’w3PùxÖˆÌq;øKån%mæ´¨-…´");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("v0œ�F£©ÌÐ==˜ÎFS ÐÊ_6MƳ˜èèr:™E‡CI´Êo:�C„”Xc‚�\ræØ„J(:=ŸE†�¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS œËUl�(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š�˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡�ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0�DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<�xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ�`Èó¯bè\\š?�`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°øã¢º÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m�6PÔ@ÃEQ�àÄ9\n¨V-‹Áó\"¦.:åJ�Ï8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1�íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼É�Ãà@„}&„�ˆL7U°wuYh�Ô2¸È@ûu Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]lá@MplvÂ)æ ÁÁHW‘‘Ôy>�Y�-øYŸè/«�›ªÁî hC [*‹ûFã#~†!Ð`ô\r#0PïCË�—f ·¶¡îÃ\\î›¶‡É�^Ã%B<�\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF�¨jZ£1«\\:Æ´>�N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p�\"ë�°ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#�§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡Û�ÙÀ)PÓÜØH�gàýUþ„�ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[�(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°�'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠ�Š=¡p)«\0P ˜s€µn…3î�r„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹�ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ�\\—b„ÿé¾’Q„=7�:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉÕ«�ƯÕbBr£ªö„’²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^�<Lóà4U* õ�Bg ëÐæè*n�Ê–è-ÿÜõÓ 9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7 tßšé�-&¢\nj!\r�ÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl 8‡;�¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5- Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾�Ã4ÉDZ©ÕI¢™'\$cL”R�–MpY&ü½�Íiçz3GÍzÒšJ%ÁÌPÜ-„�[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'�\\–’KJa¨ÃMƒ&º°£Ó¾\"à²e�o^Q+h^âÐiT�ð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\Þ�X°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½ûÎ�ß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿�²vDT!è%XK•‡'ñ§‡ò¾[Ëú½ë¼Ó›(¶,üŸ3èÀßÕ×ÿ[ȳ>–á]ÝôN!ã;§ÀërßÈT`Ä\nL\n�)À†‚(Aüað\" žçè Á&„PøÂ@O\n師0† \0Š ‚0à^R†J\0ˆý@‚@‚\n`Š<ïFëÎÀæîÄû¥*Ì|ì¦*ç/XíM*n/\nðâ&Þ¯k�x\"m8È‹’î®(û�xiŽÈdnÌ)�¹p-%(ìÎ³Ž¤ÛP\"øŽÂù®>ùë<ú&ʳϦíïªî.篅OQ�H*Ê‘nÑÐŒÐCë.à÷°Jñ°xø.døn¿\n/�O¬½ìŒ °¹ p½ °ÂûpÇ\nŠç®çŒÊú0ßp-ï²îιÎÃ\nf¶èë€ b¾i¶ÃnüùÐ=l½’ðкñPäûOæ\0NìÏFô¯Oñp<`ÜÐú\rpI1 ð��ÑŒ–@±+QYñ]¤Mà\\©\ng«\0‹  Ø\$OuÑ8úïç¼W(œl£‚Kj¦¿äN&j!ÍH`¦_bh\r1² ºn!ÍÉŽ«ncq5qcí\\«¬\rŠíŠÃ`V_kÚÃ\"]à×1xˆ«@ʾ`AƒúÀ±óŦVÆ`\r%¢’ÂÅì¦\ròƒ‚k@NÀ±�jñÍš™Ó²@€© ©�ÃkFJÂÂP>VÆÂÔ�p¨²\\%2bÂfmÎóØ@ä’G(²?MšM\\ÉÇhb/jÜD’ù¸}(VÌKË ‚K¬L ¾¤!IÄWòr \r’\$Ã̤ʀQRp%’tÔdJ¨¦HÀNxK:\n ¤ †%fn‹ã³(¨¿DÌMü À[%âT\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi4 \$\"@¾[`Â�¢hMý4Ãq5\$’þ\0ÖµÈúys@`ÖDÀæ\$\0äQPH1ƒ&‚\"~0€¸`ø£\nbþG¼) Y<\0[<N¨dBå3’€Ø‰*\r\0c=ÎK�|Ý7t¾`ºÀÀO5Š5?\0å7`C@\0ÂW* >ÀN<g¿8P7S‡8³�@É{=æLÂ.3˜DÄê\rÅš¯Š¹ *¨,rîg±I1@å/Mo�2Î]3Xm‹ôLì4eB”Utm5ËÔ™@e”cGÔiE‰\rFóçG4‰#S÷%QåEà@‚H(‘Óˆ ÃÆ<g,V`R]@úÂÇÉ4ãr7s˜ÅGK³ƒAÀvÂÓ25\rV߬ ¤ ΣPÀÔ\râ\$<bÐ%(‡Ddƒ‹PWÄîÐÌbØfO æx\0è} Üâ”lb &‰vj4ÑN4¼¨Ö´ÔÒ5&ds` Mñ6lÓ\".HËM2“-31Ns<ÂÂ/L óàú§`اµBUF\"UJI5OSm3S´×LD”g ’5…sõjšM|5\$¨s\$ŽÞ*¤pU,´ÕbÔtD7@¶ÂÒ?’Å\" Ñ\"hªµ£}Qã4F‡4•@y”Ú@Ò)õ¸‹Œ0o<> ]Jnš„Æ¿s›LGPŠ›ê™j™M^’ÕVÉ\$µ]‰¥PuÕêÔséE¥@xy’LHêÆ™Md×5Z52f– ð–k!?í`J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0T™DJ£Fxbè¶\rTLTØ“W5õÜ·é‰=õèz`Z�J gÇºÝ CgÍéci\"mñcçÇA”¾ÕrÜÖ*‘T¹l…'mÚq zß� ûl¥lãmL´ÁlvÙmÀö\rµó8¶©êžª úíkR¶ôºÓYS AC€èŽ‹’ç4‘â “p)Jk£Ü-N\n99hvŠY‚BmÍð;uÆ@‚<FþÑ ¾e†j€ÒĦ�Všà+CY\0ð�0ç ¿\\qŽÑ1í=òßkFý9\0KG™*ràhþ—]v˜9ˆ‘ íbÍa•¡(ò’pLž7ÎΗ¸&—¼¼l¬Z-M¬w·|Lr—¸@iU{�¿|¯l¢·¦Ð�ÒSBÀ\r@ h*BD.7Í*‚‘3/a€\\5bp#ÅzW¨?£Ý}¤‡`O}Õ@ÞÀ×é�~Æ\$õéœÉ�úÅökÈ;a€QaD]�µ[Åúp¦f€wÔø\"â3 M�÷Å|*´Õ¿!õÅ\"`¿|\0u¸÷¹\"¸zÓ8\\2Ét²(Ê‚-‡ÒÁ\\Ç,¸¢Ê·Á*…r§€ÊVRO-‚Œ˜Ý8s‚qSwx:-voY£Ý\0ÍQÂtÎøÙŒï¢Ì0AŒØÜÒ°ŽÌ0ÙxõŒW2ÌÍUon€˜Y€ãvE€ÌÈïÀãìŽú=IP˜MP\$…U€µ¼8l—x»�øÁ:ØÎÌ•�1Ís,£‡€Sf6Ì‚tÍ/£–ÐÖÌl³�Œ¾Ê ÚÍyzËŒÜK\0Êθæçìóƒ¬ú,ÿ)ª)�� ‘6^x‘Ø!wë’2 Ï“Y“djŽØY…9a‚6´Èp5\$–D\$ö¼³?†øŒÑ¬Á‡ˆÂ´ÀÂŒ]�dõˆfoŠm3žùòLùÙ{ûVÆ…”÷rÌx�šXW€Ù«�DAeÙ½„µ½“™Ç“øY”B1”š\r‹ê ž8føë�x•– Mšöð@îÇ‚³%£Z!‘º%e Ú]Y3QÀW•“ÙË”8[£¤e‹ÙO¤X‘¤™YˆúN¡ºU�Qk�LöÒ=¡ÙAQ�9¢l÷§¿¢ùÂ^Ú3§õ£‚3¨yM¤:�•L©¤º�žzI¥›•·tÎX.0ƒ•,¢#úeàMzØ\rkRQmšæ’Úë6õÚ[‹�¯õ¤¸¶ �Zâ?·¬Ê ±ö¾|¥œ+G΀f6X-Z™›e˜“{>¹²O;E‡zI´»N!ÛRJÂ\0ÒÃ�p›Khâf ÌmÚðËšõwÌ- \0çŸB+9_¤™ëŸùñ¸:Ÿx‰·û“¸Z “½�;”>yÚ—Ž�¹7Õ}÷Å}×Ù|Wã™Ù¯´Ø£E–ûu`JžÜø7|X•¸ä劸�‰ø…\"¸‹² W½˜tJÙé…‹,8¯Šø\rùý¾;ÿŠØƒ,Ò+Àmû¦Y©¦š³¶»öñѬ\r²™·›ý«¸}£}šzÇ¿ÀØ_È8b³¸i�â5=ˆp+U¶L‡ò€‡:¬Ú²{@É*ÁÕª™¢<#Ç-\r¢¹5«Úy“µ œœ@ÐZÉÅ|l'„Û剨±†œ7„±ÈON?€ËU%†€u�Ç¡6}\$}x!»„¬ÛàùŒ‰U¥š]ª@øðM¿ÎYhÏŒÁ–üó—9ŠÌ™xϹ€Í9†ÎÁ®™ŒçÌñ¡Y”Ìü(Ûň™Ç�SH1ã£ü£Ä\\Á;¯Êù5Ë5#Ëœ¼?œÁÌ@CÌ�ÕÌÜ)ÍD®@›¿Íy•ÍÜæÅú[�«;Öz Ë�oÎùq˜8ý—L¹�ÝÏL£Ð|û¯; Ðìï™,÷™yšéù à€ÒDõÒ‡½-q…„Jí:ÄÐGÛMÎßÖ¼ßXL\\ÆŒÆÈ;UõÊ׌€{+żey·b9ä’×j5·okMk[¥‹ˆ€f(\0æ¾dÄšÓ¿©´\rìMÄኜ¾|«Ôrâ�K#J\0š ÜMÌ7ˆ Û'ƒ=_ž›À1=5ÁèÃÆóÔ>+åÑéä•ãíø¦^5ã“Zk^SâX¡å¼·åþæ2‘æ`·èhãòEäDÉá)²¿à[äþç|©ç¾)˾aé¼^±ã\n+>qu*õ(pM>Óm<´ÒuMŠãþ‡ìn�T¡8ÌT£M>g¨=½ÙqEI7>á~Þ+¾ãmÊS%6\"IT5½€çï\"™ï4‘É\rë^‹±Þç–\rkÞKe—{ˆjÓ“{‰(ôÈrO«óäßT=·÷Åô.|ÿH\"ef›~Ö~íõ\\X¿R‰›·ÕETžËdÔŠ w#q¯Ÿ‚\"Ÿ‡C0T<¿fMÿ8‰ŸÛØ:'�U8ã�ùÃÝöŸ¢àwó° ‹ÍJ @ÚV½í4Åù‰d~…p {>žÝüþd~üS^áúþçú\n7`øøƒ@Iñf¡7â= ÷¥¾AæpR„dþnø¦*my¤—«R§ ¡,¾dB°¨÷g¦'½ïüðýÀÌÀ€‹ý�¡\rHßþ” ¬ñ~b1øyT˜üR÷�|mÏ4yÁÞ–òG…¼5ôïU»Êž&òç«=�Dy¨nŸÆœµ%Æ/zuŸ¨g·ë/Î\ndÀÖû“U?\r¦ø@,†,‹¦Ø é߂ɸ ÍPü¨•I(•ƒ9ؘå7\0«‘ê¯|c䞆ɂ6¼Åé0>Wóžœõ!ÁÝâ/SƒÔ øLÇ¢!ë�ORb“]ØœW¥Bé©„y¾—2ò›ù^ní[rµ[ˆÛÀ7‡ÙU\n¦QK¡aR }ý\nnS‚œ€à¥QHMë>7:–\0P°Âä]FUS\nÕ:8W5í K>JA\rŒ\n �îO¹2aa >ÃRy…{AZˆ v=²_Щ4’¬!ZËÈq´20³) ”Þ§9ŠTîO§w‚ò0V§{‹Ì\"NúHÐ!æˆb&VË!†D:z—8s+æ ÐÝûù!ÀÖØÙìï¶cÂ`u0î£ð\"ož`8•n²4]A’Ј¨–R4ãÀ5Žê„²ßT©\n\\—\0 ¡\r˜TòØ¢\0°k£fÙ±ˆÐµªÄ¹_o(&!FðÂÂ*ÕbdÊwÈ¡ŒLe¬¶.À!‰Á\$fzÀ>š1¯Êól¸U.u‘�÷@tV;¾•œGõB]J†w!‹L^at½J/,^8m]伡\"±r&(Š*’¼š¬µ¥zÅݰNŠ(®XÕ€ñ)E*ÀnØ—Tì§€ä¼å\\æ‚G‰x„¬úâ„Á‰7p@‚\0(0 TOà@št¹ÆmC`-H€¤D“:4Ѩ ´cV�'@\n±¤�”iãS`3Æt àBP@‡ÀÆÎ7ñœhÀžÄþP‘Ë�\\s€˜s÷T\nÑŽœmc˜@!<€YŽäu#‚Ð* àOŽDt£ÍÐ*\"<±Þ�\\|OÓ2gGº>‘ç £æp1´£à-Žqc�Xß\nQ,Ah€˜ð!�,\n U�dl@NÔÈ, - c¡ 'NC o`³d€Ð\"Ǩ ÑÈ‘Ti(aŒH�Ò-Oä�(\"{F²71»�Dm žYǺ?1ò‘¼�q HâG9Ê V\0Ä?pŸÔ ÀUOáûÀ¨�'�:52%\nÐkB¡È×FÂF±¯?¬jFà� 2\"¤Xð)6LÅ7�@@°@ Ÿ )ünÀ©%™9É¢5²d�´˜dÊ)I3Èn@²J�,Žä\\ôèÉ‚P’c“¥cé='òOr–È\0ZÈÜ.SQ©#´ãq©%È\$ò¥0¢äÙJ²=ø<|SAÈ<:p»ÆÁw“‹Ôža0Ô¡Ã#0‡€à2´\n£,'¥H21å�oQ‰¬¼sRÈ ÛbæÅ™]˜Í²àg•òWá-w¸¸Þ \"–bE@é-AÊååf/b#‹%�-Å{Æ,Þ‚+ÏÉ+Óz€žY€#˜eÑ+‰oºq{®–Ère{/KÑÓrë^ì¸e¹/™}Ëö_âÓq ÀL03 LaÒ¾w”°¥œT€ AÀ&–™R\n™,)s\0ì©–Iõ€^2q”Ë©\0\\¨I@‚ ‘K(À#peC*!>€/á�%|Ê…Ì“áÞŽüô\$è‘çÀ§.ð™‚ÀmX@Rò0cЀüô!IH˜UŽÀ³_\0ÄÎ5–±¦Œ)D¹)ý¸\r˜ÔÁÓ#5?�rfgr›IæÖܹv3ö]ÒÛ˜äÜ%”¸&ºn`\$›¨L¦îÝeîͶ]ó}–Ù½g\0Àvps…\ròÍ[ªÎÉÅMòa W›ôË¡ü'È{ÅH*–†fU@9!¾Å Ñ'¬¨÷-òÈøß@_.IÃ3öu�;Üì¡;)¹\0²v¡<—ÐL†iÝθ Êù Ôð§lÀMÈóÆI‰Ãà ã�~zËÿ›”ô'i<ù耾zdè�l4§žð¸Êv3æ~´øÃ�)ö\r4ábpî‚dIäOi³ö\r™£Øˆ¹ØŠ6x _„ñ%õ<éâO�Žó« ìç…@YÛË’�· Q£Ã ý…’`.\"x@‚Ð-‚ta2BÈCçÿ@JO~�4\$säâa¥A\0PJS¸`…¯A‰Û‚|iº¡ÀO'\$«P‹ìÕJŸÙ„(ˆ�cX„ƈ(Ö\$\nSv„öPÉ´\"ð\0 3�²›~á'\\ã3 Ø6q¸\r©ü£6ÀBØ7á™ÑVŠçL›ÂPaáEÑmh\"N\r€Ø‡(N�œF(‚ÃlWÈÎr™ÀQª‹m€—ÎnÉú.f‹Å£\0ÚU6Âä2|Ê\rh%:ÀæÍ½¹“ä6£�\"Ò‚Q±œQôm£”wY™F+š>’BDKÈvH�²ž“e±¢íMŽ´°�\0gJñ¥\"àM�º5Ñd9n¤0¢é\$Éð'\0æ4‰£¥èïI´Ò™£¬¥)é“…6-¸�Ú\0(*¥Yn<QªT�mpQ{¥Ø)ŽÀJdÉyiåÇ{u ¨ØGªbQÁÉB.]\"e©Ò'¢ƒÓ2“Ô��Ë+êS®{@^„�ÅMÒ#Þœ¡rà•kH\n*�>Œ!â¢Ý\$'6ã}ÔJ‘Ôñ9½é@Q¶&<µ¨ÍDê9LfSú’,¤™�),ÂRd ”« +B!Fœ*š.°BijNÀR r�I¨`Îf@\n¢�Ì¥±©e+9Jø©:bœ‘}§==©•Nµ{SX[u(¥UD]Os»”Ú›åÈ\rNÜ_SêEQÖ¨5)ªj�S²4ªV§e\rDMW€ÉVfžv§´�«UPª&ª·D5�ôcXmŽGŠ’Ôn�´ò«µX)óM‚VÂE¨¸+%,èT>ŠkÅ©J\n+0\0006**¥E>\$qhŠ@O\nüd�‹PëYZb”VN¢ò¡\0èœæØ„d€B\0…5E•˜;ÔF¢uŸ¬ƒHþI%\0…h?¤= …â2! (¶¹!^*è&Ÿ\\¼n§ôŒ+QIj&¼A¡´B`S¸âM‚É�ûŠ\r o°@‚À6WB¹B{¯@µ_ ¯)Òº%M©fÍðW 䶘_áΰv@{`P:¤®%[%�{C³\na¼Ø8;AƈðÌTn›\0¸#ÂN°°áŸa‘h�Òé·˜J´6ë›âjìÉFZ57‡VÅuŠŒ€C`\0å»S±0uMÒ%;�½D0\r��žÜaayXô\rôkoÊÆKMd’bI²€ul˜Ue‘p\rë^²¨Õ»dòÿÙ*�f·¬éH_<Ë-ð(¶h²ˆ‘,ØRX†°©°ß{%˜\rf!œDoðSµ˜JµF²4ÙfÄöH³ðul¾i›.ÙŒÝ {™�Õ`q™�ƳÂq³xìÕZ4ٺЖw*Õ¡ì©h[%�lÜããuqé¢] 2°E=ˆ{F·Ï6�µxÎ\n*I*ð€ö¼uåIûv+ºè¥ä5u”MtG^‘ ×â½Ë¨nÅk«F²\0ô‹�®\r€Ö§[gÑ–�ÔÂI#CK]8�’¦Ôû®™#„ J�\rܰ4€,·ˆ¤( 'C¶ÉV¸µ)í�kTÉ[Ü>ж™ƒbjúØ’µåA-<!Mpxjß@t)A\$α!ûÚè>µä\r¯aMkûrÛ;5ȶ5¯í“]Ó�œ=ç¬@k)‚;Ûo[–Ô•À·m¿\\«•‘þÝ#jP5Á+NR+„ÅÂÚ�“¬³\"–\rdK2!âëÆ²�qܧªiÁ�hkYB‚[žÀ�¬[�çîž9ÊÙV–æÅC¹É½@xŠl/4-Áˆ¨Ä®”.‰œÌºf*EÐ\0à\0.†wC#�,ËNT³ 8jã%8S®óvAˆ�fìâ–^ ‘\nF§Z§RºÁâËh„\0P7²;Ák@<ˆHÏF5�`•\$›\$é7JÐJÐÁŠ¥ý¥³èA«j \nÛ¼\$£!éÓÞ»ó€¾L™ÄÐ�»~/†2pµJŠ»²€Ý2m¬ÒVf¶ð´ëEu+¬Þ”\rJ.%áÉh›QBšÝàe·ˆì”µjÖYt¸†é¾Í¨[;PYŽÜ\$Z‹=e/»iË8;¶Ñ‚¿\nM¶zR‹Gßœ\r§µ(C+p-•©Ì6õ‹};êÙ(ÝêÈ·õÿ®¤˜ûùYà*Ë‚&m;€ë+àDÂÓ¾ukJC|›.ß~ù÷áÀ�ª„�ZÚVØ»W÷`Fp1}ìZ„b&¹%Ãà1H|ÖáÎ,œDeH\0ۇŽ6°%„¬a+CîÁ–…5†D°)\0„„„p÷Ãëjë}ÚÛЦ®aßÚ—�6– Eà'|1GîR¹Ú¤hBúHdºž'cL#�à .æÂ`H€L6‡ŒHƒ(Õ†W¤/ð\"¹¨ÇŠN\rD�⢦ž~�M.ÐÞBŒöàØ,«–»¸¨°Ü^¹òF–PAå—0ÁmÄ�…‹ªµ”søW\\DôiÒŸd¹)½�Å©z¢›ŠÎ^eÿ½kpHÜÅp@à€auq #/qZ§\\W’:U˜¦%ÀEþr,- xÅù#±‚/I#\nû˜Gø1¢9\\eã6Ô‹9WË@ràâßXϯaGÀÍ\"P;°<\$,¾N3ë\n�=*@\"G¼†!€\\ÒК,°m’Åp|q„\"À‡L6âŠ\\ÈBÀ[�†R¢ü¦ÁC1M‚{ôYm]˜)¶�¹¯’Šÿ•l\rËm1U€2.3`Ë#€yÁ–GðrŽl“µ‚(·8ŠÓ,Œ*âR#7ô§¾=«rK°ô[´!mدJC«àIa˜†ØbTžLCµ”lKŒ?™?Ï\r”FRãt!aÙ§ºíF„Gð!¹CµŸ»v2Œ\"qW·ÖÑ»ôÃ^À7�áñFâRì\0ÎÑf°*àA\nõÆí®Há㤾)9=Çð—\\+`¬ä=Ê\"ø}Ï>HÑ\\Žp°“¨Öç“;Ð�Nž‰Š)>ˆB'ÞÁê\0€€#%Y+'æ)Ü^{%���£@TʆJzÒ¢à]…šd±Üú#q¸X�&࣋{4)×?™ý@¦só\"O AŽ9ù3€�L\nòp&p�y 0 ™º@pÀ§%€'x)‘ýˆs‰%y,ç\0àw€œP+§R9ùÍ<°iïšIýÏN‰sË{ìni9ÿ3ô¦y±4{}¨)CZ€¾‡Cg\"þf\0[™¬ÎP”9 ºNkZ¥šYèf¢„YªŸ\ng�¡\0gñÄth€€€YüO(^sø ˜Ã&}øû8’@p\$~óø�\né¡û\0Ÿv0¸æK>™”4~lƆ¼Ë€¿39›Ìî‚Æ; Ýæ¾{Óýd;lðШú&FŽ…çŸTI‡Õ|aíÏÈ؉Ÿ½&N'?ô6O4¤!è'3ÓôÍ…‚W¡�)\0²v€2 æ•4@]RL.ºVÖ�4šŠ\0¿J¹óÒ¾Ÿ�Ú%ª„óPyŒÍ}è3?mBDuVããÑî–Hî²Ø,Oˆ5 v°ÐO£] 6€¼AÀ/n§Œ¼ñjß÷¢G’žeäÕê`Ü¢m6§u?<}Q[Tš¦fª/~osG,7 -°È´õ… <P;XÑÞÖì!Ûixß� 8ñn²u¡ £kÆšË`ž¶S9}nÄd¤.°lD¿¬¡_Èg[0û&¸÷RâÃ[šï0˜Â¼¢�yëgYÅ\\Öà,\0ë°à×óÃ5à-yk¤R’O>±Y®†WÖ¶·”ÌÀ9la!E�HÜu«\\�9‹\\Xzà1VÓ\"@º†ïd†s¾Ã†Ž'•ì›`[1Ùn¹ @ˆ‡Ãf…i1 Avw¬—XR›%Ùht!°�˜kpdºà.Ïó\\ÝniÁچ€N4 îíLBÄ?Öã\r„v'��k£c’\n \\MƒµÍ�×´fá6Ƹ\$K”í°íC,P®ÉîXÍpat�ïOŒè0dƒ;\\ထ\nÒÄè‹Ï[‚„–0p@ZŒP•lGa򨯯&— €‰L9O=>\\=ip¼0£ûžüévÈÐÛ‹99ñ�Ý€BU¹ñi€�3›¥Ž´@ó¹\"´„®Ccä2™Gñ�·(ï°!µÝè³¶“µaB LÛ�º¢ã5ˆ�åU+w�Þ6ð\0Nv`È bݽz×\\ò�ïYÞA€¢žÐwC¹Ý×îÓc²ïÙ>ê73º½òd9æÝné7Mµu�îƒ~»éߺ§wõ¾�fª²,[x¹Ž\r¼-ý‹7~œ\0–ú¶È–oû&Lç÷G¿ÍÚÆÔÇ€h°ÜwâXÎn»€;÷9ܸ+¿þð�ƒ '&زMj•ƒƒâÃß6ì÷ïÂÙp¿†2há>ìwgÉ\r´52f!ð³€ÇZK½>½ r×ÞÁ8]uBªìS‰8åâf1µùµmñÊ_ŠœMÖæ©O¢V”Ó¥Œ¼8m%÷¬Ká’ú¢ÑᙸkE>aq\"ÍãVæøz+ýÙqÃ~ûMI‚€B½²àØk€#Ç.ÝÞëÄ…È/ëƒu#\0#Ñ@[rnr.ÛœŽÙÎÙöÉ!aò8`˜%nʹ#\\I…hÀ-äW(93Ê én#”sËäùùBp®�^{˜ÝVæø»<pÛ…tsàˆ`1ÑÆÝù[ë–ß09=Ëž=p¯|sÇÝNæ£;Çp¢ñç~J�ß¿-Îó�üÓã�7™Ã(ók˜\\É�ÈÏyÅÃîr\nPT|çæG77î!²ó³š<à „)ÑaóÈ\rœÒ,gB\$E.:ó?|¼ãçw\nâlû‰ø¬5Jæ‡>ùé½}ìì{œúçà°øãÁ]j�¿nÜK�W·ta1=ol>§_€`8èÞmóôLüðP€óžŒnEh=oG¬7½^‘Ó¤œÏé>ÛyÑÍÁž�¦åé6ÆOmÈâj„s��ì�füúsÓ¾š„¦üx†^n”ô[~ý1WܵÞH¨ô§R ^ó÷•Èé÷õd�\\qé°}z]®=á{vý\rè¯ZøH`î¤q‡�™7ëPr8âÁm–ïOwÛÇܶáŽ@=Äß?çé2“]©UjSO鬃f¦µkÅã/jƒW cÕÙôu}ª`ŠP�c¸ÂSpÜï˜zž‡{1¼!,¦@zäÞÀ‡·9Ã@ö¼tÛ±Ø�ZûuÚí^&¸:ØÉ®¸×Ï• 㞣r¬.Ê6GÛÀ©öûW‰—æ¯p{cÜNGœ§¸äz+NP )È.ëwX}ÆÜw\nÔCžðqºúÃí^€ÚÝ£kǰœûïokwûÝ®òòÛº=Né`@wo\"P3ïÿ¢Ý¿ï¸¢;·ß®Üw÷þ\0Ý}B×þüu7u�û\rßnzƒ¯Ž<x;�¾Ü„»oÆâ´…b½¾î‘ôS/à¯îCx2â\0�E)ÞOv÷©ÍÊñt<Ý?x¿>íÇ�6ÅßNÖx?Þñç¼I×ïs(£üKðÿ0|mâS/&_ž°ÚÇ|— ?sš>Y,?Ž7ï•&w·j�ðÜÏ|»Uä\rù+‰’ó…¼È,ï3x7Í*ÛDzcÇx±QVó^Æ|ÛÞþøí#Ìàsíi%\0ðáHÈ ßb~|ó§¼ÇèùyËОBæSp|›å®}ùs.»£qéM]ªÝIæÏg«\rÕ�O5i©Î×ökT}¯ìþ°:_´?+ùûÔ~oÚ?¤wbdnÖá`àxõç£<Ùë?HwÌ~¸ô§cèŠi¾É1ãGáïÛ¯–u ýaéðÔ’Òˆ·@ÄsðŸŒ\nA†\n´‡dÕžp)€,@sž‰+‚˜-à\"�X²+/¶OÉíÀÉfTç%O¼@Œoy�)žðHÀ�'}C*Òx�w¾½Ú~/w†`[Çá<œ\0“&ûˆ,a˜¨½½€\"�‡õ�Ïì~0&�Cà‘¢:§¼>/î‰{�”�¢÷€À£�3þÇ.ßÈ·‚‘òsòò7\0VxÏÈuAoZMgû÷iüÀ˜�-ÞÿøÒî~0/ÉüàB�ăÀ�ïY�ü>çøþHSóèÓé_\nöìŠ~1îr{�Ü¡¢÷Gº¤V5O°Ÿ«ì`:÷Î>а|¯ë€+7Åc���¸Ièü&û7Ê>Ó÷Ÿs|`P?pþ2—oƒ\0£î?ƒû'¼@�ïŸz�?Þþù÷ßå~*™ ŸØ[ß}gÂ\$ïïP)ç\"Jÿ[üTn\$:�Àý‹Þ „œ\$òŸ½ü�ò?“ûŸÝœoÃü«ñ\"Þ�ï¿~</ØýËÞpñú#CœO€ûÃáŸø‡ÊO)ñO‹~ÿã_øð?iû¯’þWîßÖûÐP?+òï˜\0ÀCù˜>jo›þüü¿;ùïÏþ÷ô,ô\rPý§ïþ_åþ0üËóoŒ>öýrNÏý܃öd\0¿j�x\nOÜ?ÿ\0000¯u€ˆ¢JÈÓ\0’úKé`'¾šúx¯¨À4ú£òà'¾®óë/Ö?ˆúóò/ç\0‚KÛoʾ˜úsáð¾¥êϬ\$!3믂†¨“sÞè#†?õ\0\"³¬üè׳¼ûû< «\0’š9ãõ3±#Ý)@v?È\nïx?Hcïhë\0ªjD0)�ôùjOè×¾<ûÛÝ`#¾0%(0£üôù°3\0°ùÓû ,@„ãçÀ,‰Kô\n¯ÊÀ®ûÛñ‰@„šT\0)€©Ä¬èÀ€ó:¬ë¤²ûÜCõ\0«@5@òû *Ð=ÀDIAø � À‡[ñ@+\$òLª=Üû@�\0Ìø\"Eû�þ@ ÂAO\$I5#Dò;\0'£´äo˜€¤÷Pü°^€VýÓõ/è\0ø@bB(í@Nø(üÌâ\0ô\rÐf¿JÎ;¯�¼@OàA†{8(ã\0—Z4Pn¤\"œppìýä\r€AV@\\£ÿ\0@0�t¬ú´À\"ÁpŽÈþy?Ô?\$ó?´(ÑAŠütϱ½{ç)£D?ZC£ÿîþÀ\"A¸ÿØ\ntÁÖ@cE°wA`\$\"�¶½ÖѬ#°J¾üÏEP�¿ükñãôÙ\0<€#Áë¼CøBL@tð„ÂYLäB 3ø #¿� XýðƒÂi\n\" «?ð»E`,?ž�À�|A@ˆì3ºÑ«8O‹#D?)\0\0&à�Ä&�¸“Ãô¡o#B¬Í\0”|)€%€“šAà ³šöéOÑ�Üøˆ*Ðl=´Ñp ð·>ê@T/½@•Œ/°·€VÀž\0>#tøì \0ÂíÓêÀ)´bÍì1/›�ÀþÐ�Aáz6sC0?¬(Oœ¿œdÃô\$ݹ°»ÃD�Ð=ÔÑ‹:ï@�\r0Ä¿tÑ‹ç�Ÿî�òIPÛ€©9,値øÔO…£v?È\nPÇC‚\n´ÛÂ[4\n�o@i#ÉÙX*Ãÿ³†Î, 7ïl:¨çÃA \$;pê\0VŽrEp‡£v“„:lôëü\"ÐÉÁÛ|2ðãÃÇd'ðÃÕœ У>‡´=°VB3„0ô½Ðt,°ÊøXüƒ÷C‹à*ЩC¥d1PÒÁµh\n�GÄ ?{ÝpsD\n´,p²Ä7 8 /¡#DøôCð�\0ˆ¬*ðD\$ñ¬D°ÕC?ÌQ€‚÷TEPGD>ýÔF±D! ëøñ€®“È ÈÜ\0�Hþï~¾Œ?ºO\0)Cv?ìEÑ\$BƒdFcû?>‘,ôÄ;\ncóé,€øŽÔq)£Eãø#E‹çOm>äà\nà\$BÖüŠ5€˜@r5¡ª?œÑ¤KiÂÖ¢?¯¿?”ü«ü\0ÀwLIpaÀŒ›;ììAŽ,,£ó\0žh ¯‡�ãô\0%Àw‹ö¨Ü4j?sô±H¿ˆ|JBÐûx0 ¤>*\ncë0oÂpœOÐ4ÃP\n´2ãEW8H×ñB4p\n3²öê;IP>´?[Ð:„K¡ª#qr=q1ÅoR<CûE‡dÈ׿Ó\r@€*€ƒ´.±dÄÐøx o?C\0kÝ¥3»P ÐSCÎú7°¤¥0°%¾tÍüU‘@°,\"\0*\0®+Ý`>=ÿ^1yÅë\nd^ðhEÂú(#ûÅüˆü1w€P“´ `*Cè*Ñ„Db \nñl?›ò;PÁtø´]€¥@ùôL\0\$ÃmdcQ�?#\0ý�B”ÑŒdÀ(DåÜdhöAxø°‰8\0øÂN¸\$PÿÔD!ªC“\0kî»ä ñ.�Íô#﨣M<h‰ÆŒÍòO�ÂðúÐüQ£ÆžöÌhðFÆœ�Øq ÄÏÄiq)\0©ÊJñ¦éT])ÁøúÛÝ !¿�·>5<eãð¾�?±°^ý³Ýl뤯\r\\\"õBT�\n>0cÆúÐÿзAÏ\n«û°ëEe¼é�Ì�{E¨ëC¿:9ð-´U �‡Å\r\$H×Å-TNÉ)Ç(t\r¿yð ìëF‡,fP‹Á[s:£ö\0‚Èãü’í”v‘F�ÏJ8É,¾4@Lw(Ü#wŒv`/¿×ðýˆãCA SÛÀ ÄQ CÑÙ¾3Lné½µlH0Að?da1rÂAè Èã�Ý\nD\"ƒöE¥èý#ÿÄÜÑkÝ`!Ç!œO4føÔa\r€Œ?E ##GSß¼€¨¤)°¶€¨Ä)±™Fý\$oÀ\"Ä�\nl.p¦ÅÜ?ôð\\ÁvÎèQ\0ùPà\$\0¾übK§Æ°\n@/Çt?txñ˜HA!xCõÈO!+ãQ#>ƒõð8AëƒÜ8Au\nòD1¼Ç5\r\\RÀÀà R€g!ü€KH ´�:Àè,Í#ï‰À#4j•Q²)¾0“ËEÐ3Ãx p¼H,�x\nò\r’îþ¤`0ÅÈBΰ €/Á€�lv�šA€ûñÑ%>6?T}QF€ˆ\"4QÏDZ…ÝÈXøÜ…0Èþj<HÖ¤×\\Y° @_\0äÏ©¾«^ÑwFb÷¼;Q-D0ÑT±F¾“‹äQC@*’Ì`±€³˜ù̆ñ˜Ç†?,†ò¿Ž4 qCH8@°ÃBQ<%Pÿ»4–èû´ct1É=\0‰\0Ü-Çô?”mmÄÆÑhþHØ4b�œƒûC`Kº8íÄ*“ED»È2Ѭ2À Á]|n²Hû!\$w±˜‘‡pÊ´dÎ#û¿U\$¯ÔÉX“Pcû¾_'’4@,?\$ìKOôD)«åñÉ©\"ƒýG\0Žü4QçÉé#€ü1¬£Ôø¬—ññÃŒù|xÄ?K(\$RƒHÑBO)+È-ìrk€¿<)�ÙÇ®�ÃîO�4RþôŒîB×\"„G�œÄó“âÐn?>ýN±RÄë\rk<ï�AœKÒ(AD`\n°9ÁD”qLï¾s*2(DÓ¬©p•F#õÆh?(#ôÈC\$\"Ep¨>’?tÐ,.ÆN¸‚C4N»\0l¡O‚\$Ëm€>\$‘\$@7¤H`c 9‰(¯„ �\\¬2¼©\\×¼A„¬à˜!§ÿ‚@Ú@[ÂF’Ä^xc êƒj3€»ARèZ'ÿ†`â\rß \\\ryd 2\nâÿá<¸£+0#Á<7Q-˜ <·¡, >¡-KÁ@<ËTµ²³\0ÜËaªËdÈH’µ\$JSâ€ù+°\r ºËk-ä¸\0ºËr’àòá‰<@sRß ©fáµ\nëh\"ò×6ÖÈ“ÀØäbD€<€ÎD·êÉ‚¤Œ‚Á 6ËÄåL»ró�/\r’ïKÁ.£¥ÎM±#Ðj�ïFz”gà/ÂþD]\" €Þ O�€óXþ���“„p`)€ä¨‘5Fù\rB#üÁÂþàþÑý\$:�xüp ƒ\nkã²L ¡ª3‘TsP\$€VýàÉpüŒÄi+ÂItÅ0@ÅÐDųÅ�1@[Ð-@¹„ƳÑ1K8CüLE(ÌÆÓ@I\"¼ €‘2Ä“LNËÞ|¤òûÜ¡X3€9… 7…¢rјì\"2€�)‚评Ì*W8™,ˆ8!žƒ\nÌ 3LÆ\$ÍáÀ†¨9,C<:Y+èJÅÚ],ÏoÌôK+dB�‚ lYÍ ä74+ká+\0î%S¦`>î°I3Af™:¨�ð]4ª`/“pŒÒ®ž€ø2²®°IðÀ‹‰<;P“À×,3ÒD¦{€¾\rxÎ\r·„ó.Y¢Oo,Ñág<\$ Å!;Í(‰´³@ë,6KS=[.â�òð%Ìf+kÀ� á›\rð͘´Ú[Í 0˜SÄç§5Û@Ö\"ÞHÅ%›²f)*›¢ì—|ÜÆËs4ÑvÁOÍtà³TW5Þ†¨mÔLæI}�‚Þ:`c †‚²nø+2 …iÍ© ¤ßÓB¬P`È‚\rlËÁ=M\rDÒ©…š\$ðc¯\0K–<ˆ/\0HaÑ\"˹5©@%ײ%R¹2Í7²\rafå\rÎc+ˆ\"?…?8kÍÀ‰v) Î,û¦l/šÑÍ¡/Ë8£|³òÎ8€Þúî †gij¢÷:,éÁòK;-s… <¥:¸gêõƒ²Dë€3:H\\ì2Ó8¸\"í‘M*š˜`@0µ=;Y& Õ€Ò\0¬\0>'5|ÓÃ9„¾\$ñîÓ¬Ë~8ø63YÍx¬î¨›Á†S˜\"l dz¯�-ùs€4N¶Pàà¶7|,éòÍNé2ó¦\0ø2š¸�Ë¢Z³A¡\0ÆhʲφÃ=Dí£‡É,à|“Õ5=,ä³î(Ï<⌴C>Ops}Ó¨Ov–4öâ°Nð�—ÒÒOY=0Sã*β%P%S_OH%TîOCÏ-ì`>NÇ;ôìaŸÎÌ�“íϺÜDìrÔLÕ:\n¸àˆP8Ì›Íêâ\0Taª9à°`‹aÌæg۞Ηl Ÿa�Ïí8y/JŸa�5³Gv2²CÏôçÅ\0§9îY´þ´\0Ú >\$HL»#Í�@©Ü³Ò•ÆY¹\\r‹?èOSèPÝDÿÀØÍ 4ýÎ{88ì†,M( £ä±9à3µÒù<%4@‹î~ˆS:ˆ„£ƒÍ:\"á3‰T£oA+Pvì\0Çëa–nîð2è„ëX ³Ñ<þý\n3îP«-S|2úK6ÃÒ²s»MŠ´ì€Øø Pc´1'´ U ¡)Í^XÃ40LÂ1}\n/ÐÜ\$£¸…Gp!9™‹¥1ø7kƒØ`hO:2œY¸8!CÍàL¬³@:ѸÎs›:ù3˜ÁPÏÞbæIÎ7D˜�Ïã.Åa+2þ\\è8Ó»:#CäÐóÅÎÿ6à“ÒÑRÔÙ�¦|ȸπøQ\\_ªXÓs<ím׸ٴnø„w9ع 9Ëb8à5½¯9ãA\0Ø7ø\ra\"ƒ\nh[j¾ýF�ÜÁ)”ï+¨¯ÓÐIF£m“i:±-ø[n*°\rM?‚@Ê\0•Tj\0`c´iM`°@“‹2ÿF¼»\0002Ñ´%Uª8Q¿G&“æQÎgdúÁ²ÑÙ?p¡ OE:\0004�,pp 3\n>籘´|ÏLfà<ÐHm!ô_†¨]p;ÄP¯jD þP¼ë·\nK–nt³I\0ˆ¸ïõ\rá§-pJc¦7P3„Ô2×-Ï.ºÁ 3ÌôŸÅ'URq+ŠÞ´œPÞ–Ý\rá,O,Ò‰Ó´O.•(”|¼î–Øc©üRœj[sFþ`µrøNµ, .²ø7~£¦Òù:Èl·.›RÇ.86³Ë|\n--)©ËrÝD¼”µQ•K„½´¹,IÅ.ÒîRëKt·À1\0ÉK 4¼Òü½/`•ÒÊê•,I©Ñ‹-å,ÔÅQ�.È‹ô±Ó-û•4ÉSKƒm”ËK‰L%04ÇKyKÅ3Ô½S: ]2t¿SLÔ@2S9ME+Rù+Í/½tKÔå64¢Sg/®²ñS9.øc´¡Sv^€0®ÀKêOy}Œ·ÍJ%3ï 4Ú3R/i´|#¸i«¹èŽ C¤Ü¢\\ìÝŠJKxí‚î #Šö—vh݇}LËNÔó+n¢,8BÔ;\$HôS4ó»HbbÏ7`;€ðÓåNí>€•%=;mçÌ7½HŒ¿Ôþ)H3�¡›ÓÞëôöYF…?bTHuA2·F:e>4îLž;lÔR¾Ê˜t˜TPÜÐÕ¹ìq0#Œ§ëGÅDsÖ€Ã5ybÅG\"iP�EÅÝ·tKÚAÖ£Ô55yîÀƒB°F“XèI¡ïQe=#4Y5\"»†C΀3˜†°\"ïCÔ9+-Gìs‹ÿO`Há‚ÔŠhQEVâ]DTô2€Êp6†_ÔiP\r²„š+p\$57ÐÁC€7`0Ò>7 ‰N=QûÀ!·QÄû•@8TaJöÔíRµBsAT1P%=@Ô�T}Quå7`íì@3åPÕ+U4Á•FÀ�U Q£ÐÕB\r¸+ÀáE\rGõR“ˆä \"\0®ÕH��‚À…ÐåTó¢5&SæÝQµ#UuOã‚ 64È|ïÎ(œÉQøÈü�;á'Th\r ôÓI=wCME®Õ„v¸çÏ:Uø„ÍdÑ¥F�#‹´L¹h*7ÔASM>uqD½£.;uF”(ÍË}D!+°”…†!€Ù.ûƒaO\nÉNè`™(¡²ö5�\0»Txj€ÖX3À€™(óÐ!Õ‡\0º.U`Õ™‹XUJ´*\0á:Xn 7KÛXM?•@†�7»Ä@ÍVºh«u‰VXQÅÀ•ÇOaNõÏEM¹3\nèГ.Åc\rÈ#!OÈ_æ\nƒ\\¨’Á;ΉXÀàÌ ®ÊióÏÖ1?=Eï\0Ž\rcéÍ}9…cy„\0Uô\rȃͤK)Oå^MÆ�Y½Tþ\0ïCÍ”ˆ2¥aµƒ:YX‘†ÀøV\$LåbBö¸8ýe@‰OÝSõPõ¢„CO�˜µRºYT\roÀ‡Õ)\\o•+U)V´ôõÁ¸3›tü7)Yí?õÉ˱YÕrMƒ²ª»àÂÖ1T\r%Á€…°\ròƒ[i’�V%X„âÁ¥M%X�ét?WF#ýbTM�]uv•ƒo9µwÅV\rB½uUƒ¿]ñ’•cTë^\ru 5‚¥X�£õZ×L çæNÖK6©Ä`…ÔÎ(ùÄÊäÎÈñðÇôPCA3\\€•97D#ÅAK==@uòSÅ;MO.~„ºÞ©fíÖJ½yG]A358nâVó9…y\0.ÍZ%n\rÔ]>ãÌ�Ö\$!LÞãG¼§Zè>S÷`¯§ØVÚ¯µ�8[œÓÔ‡X•€³î8É`€5¤ÊCWx5‰\rñX•bÔ6_[¨9Oˆõ]¨¿õ\",`ã(\r¿ƒ>ãÓe\0€ÙX”ãÓ@�`5`Á¸ÖæX³Ïó>ÏÐ\r̓€úØ’óíˆÓ@€åbHëuƒX 3½x€.Ô�;àœÀ¯Nøä%v¡!P‡`½`ÕæÎ7]@¢„“‰5]ŒJ7ŠÝýbEÆWW8‚FJ68µŒ†àÖSX5�v:XÒílàÝsbøT,tWjpa\0ß×WXÙQß„-P·à‰W˜ÀCËjÖ\$쇀ŽÊË@�‹¡P2%UW–!ƒåd«lÓ’XX5ŠõݬÙ\r!Ö6YX“ŒŠ…=\\õ‰7!;ôÖXÙHXµ�e×–o_‘å/…£aåÙw^]xN‘…›^P+Va€áeUŽæJY[AõŽÀ;Ö\$Þ-„µ†8\nY½J£X•}!NÖ7QˉrÄW!_l²²ØÄàm³N‚PØã|VŽÊ\r\0ÖœK5èTЈ\rÝž³Í-5…˜MrYùZÐI\rלMT¤å³_c!õ ¡¡c\" ŽõÌPÕ3}~'دq\"UïTk�ªËÙN4}P3;˜ïYhˆÖ3]e¤EÆN, XÊ‚÷6ˆ¸Ã‘YP}u–‹\rcèçàO˜+÷3x~Ýí�õ6O¬\r¦µ+Q;`IÄlt<íd+Ï6D\rj °à0½G¥pq‚VæÅ[;`\rU2µ®šäÊ\0Ø|Å´ëT\\Ъø<%[M5ôv¤H\nâÖgÙ^æ`µˆc4E\\ÕÊYñ9±h5µTæ+²Á3§N§kì³ÓáZÿ,’F\nɈN¡óÁØIA5¬ ˆÙClY2ö°×�kè~ó·PLÝè#6²›Yô°îµ×+\\ÔÒ\0Ô aChÌÓ¶ÎßRð ӌԿ,ù‘äÜÔ-+€Nó�5\rµµRÐ3A<Ҩ˓qm¸€¶Ü’Ï^Å|Á1Ë m”6Ö’`…¶ö+ØsO]RE‹QETÝ€†Úšô=·µ—¨LÜIuæbÛ¬MÈQ 5Œæ Ä�—Í?_+™“ÿ[ÇOkÛ¶Öó‚\$ëVHÔ2ÑuÖdÛ¶Üe&`‡‡2\r…½ÓWƒbà½Öýˆ¿oí+VþÔ5p5–þ¹\nõ¼6þ[·Uãgþ¹0äm¾ÕòÙ©W³(þ”AÝ»t\$Y]A3ÆŠ\\:¸>–vŒT%U»wÜSH°<³O†p¤ëvV¸ˆJàˆ Uq•QÍ-ZókM‰¶ÑvÒÕÆbÜqqøJÖ�M]-‰Ó_:ôpBÓ2ÔåqÝU“36Enͯb°¬j…£²R=RÆ}ºüGØ–w\\³T¥�Õ˜‡pe]M’Í/s(Zõ¿ËjÊuËC\\1[ùÞ–áÛ+(+XUQ\\3bsSܪžÐ¦ô! Z…•óYFçý¹Õ\0ÛTh#Êõº]8ýO³ŽË™mû¥×*Íi4íW.ÛbïuÒöt``!éDÑÓju_LtWÁjÜ×÷R\\ µœ÷QÔ´EmN7QNa‹04UÕR]ÖvsÖÉu˜D š]Ak%T¶°Û!RM\\wW=4ÝϵR–µSá9â?Ô]u˜‘ÔÐL…,—]ÕJêaÄÕ@×u%¡@ŠTø7ÅÖwfÌó4%T¡[T̤3`Ö‚§;T¶o]Av5\n¶´8Au�bÕoÝ+E•ÒqTuÙ7|=n˜NõiU'wèJw׬â n¯\nQÓwð%�‹ av DW…Þ\n eÜV±T)vá…ê^°ØÎrÍ5Kx�\n”@°² ¤²‚›Ð(\n•bí-\\³IÛKUqܪs%xeVK«uÝæ7zÛ',¢´ M.íê&ÌxÔÀ‹óAÒA@“º7žÜrìUJ—uOyãbt]Ž\0\$°-Œ†�U‘µÿÞ-wå>7h ReÚ¶t×µ=öpˆô`h@:ƒ«x„ÕÔÜ/YEqµ8U)p½Ì×;¬{…Í ‡ÏUeO²ÞéZ5ííêMs5®w½Öþ½N\0‰b!LÖw‰{e¬‹rÝJµ»”0_W]Ìw>Þ\\D½³hUÖ\rÓÊT‚Þ/h%²·lÕU}‹WlV2&L·¹P9zÝAÁfË\\5õ—Fß\\MÍÓóÙ£Uˆ8µ*OUj5ÂöæŒáxò´ø³dµäÏ6KYNä5Á—MÉ:Ôôé©M³r`%Ž(€¾Ò}ó›¶‘s™˜µo»b£uÂßoN³Ôåy½[Õ^_±~ø!ö¹ÝoW%î¶²_×Põ)•…?RQ2åqƒY8]þw—ñDúVÁߥ~¥ÀsÛ(ñd³æ7QuýR•ö6BéR¾È\\Þ|Æ-�\\¦ëõñxÏO€KÐíÍZÙ{bù¬â±Ö”�[‰+-ìW/¶Ê�V¥F¹™Qˆ’•–‹�M{ šÛÀŧ÷ñÔéFpwÆàÖëBkg“Oe¦Uƒ9¶¸!¤\r€˜ ™([p(ä뇪»‘=Tæ�zì“Pïj‚ŽõÐÀƒ‚Ȕ˹€ÒØ");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0�\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„�©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0�\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„�©Ëí#\naÖFo~yÃ.�_wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0�\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „�©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0�\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „�©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
|
||
connection(){global$e;return$e;}function
|
||
adminer(){global$b;return$b;}function
|
||
idf_unescape($Kc){$dd=substr($Kc,-1);return
|
||
str_replace($dd.$dd,$dd,substr($Kc,1,-1));}function
|
||
escape_string($X){return
|
||
substr(q($X),1,-1);}function
|
||
remove_slashes($Je,$nc=false){if(get_magic_quotes_gpc()){while(list($y,$X)=each($Je)){foreach($X
|
||
as$Xc=>$W){unset($Je[$y][$Xc]);if(is_array($W)){$Je[$y][stripslashes($Xc)]=$W;$Je[]=&$Je[$y][stripslashes($Xc)];}else$Je[$y][stripslashes($Xc)]=($nc?$W:stripslashes($W));}}}}function
|
||
bracket_escape($Kc,$_a=false){static$hg=array(':'=>':1',']'=>':2','['=>':3');return
|
||
strtr($Kc,($_a?array_flip($hg):$hg));}function
|
||
h($Bf){return
|
||
htmlspecialchars(str_replace("\0","",$Bf),ENT_QUOTES);}function
|
||
nbsp($Bf){return(trim($Bf)!=""?h($Bf):" ");}function
|
||
nl_br($Bf){return
|
||
str_replace("\n","<br>",$Bf);}function
|
||
checkbox($E,$Y,$Ma,$bd="",$Vd="",$Pa=""){$K="<input type='checkbox' name='$E' value='".h($Y)."'".($Ma?" checked":"").($Vd?' onclick="'.h($Vd).'"':'').">";return($bd!=""||$Pa?"<label".($Pa?" class='$Pa'":"").">$K".h($bd)."</label>":$K);}function
|
||
optionlist($Zd,$nf=null,$Ag=false){$K="";foreach($Zd
|
||
as$Xc=>$W){$ae=array($Xc=>$W);if(is_array($W)){$K.='<optgroup label="'.h($Xc).'">';$ae=$W;}foreach($ae
|
||
as$y=>$X)$K.='<option'.($Ag||is_string($y)?' value="'.h($y).'"':'').(($Ag||is_string($y)?(string)$y:$X)===$nf?' selected':'').'>'.h($X);if(is_array($W))$K.='</optgroup>';}return$K;}function
|
||
html_select($E,$Zd,$Y="",$Ud=true){if($Ud)return"<select name='".h($E)."'".(is_string($Ud)?' onchange="'.h($Ud).'"':"").">".optionlist($Zd,$Y)."</select>";$K="";foreach($Zd
|
||
as$y=>$X)$K.="<label><input type='radio' name='".h($E)."' value='".h($y)."'".($y==$Y?" checked":"").">".h($X)."</label>";return$K;}function
|
||
select_input($wa,$Zd,$Y="",$xe=""){return($Zd?"<select$wa><option value=''>$xe".optionlist($Zd,$Y,true)."</select>":"<input$wa size='10' value='".h($Y)."' placeholder='$xe'>");}function
|
||
confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function
|
||
print_fieldset($t,$id,$Ig=false,$Vd=""){echo"<fieldset><legend><a href='#fieldset-$t' onclick=\"".h($Vd)."return !toggle('fieldset-$t');\">$id</a></legend><div id='fieldset-$t'".($Ig?"":" class='hidden'").">\n";}function
|
||
bold($Ga,$Pa=""){return($Ga?" class='active $Pa'":($Pa?" class='$Pa'":""));}function
|
||
odd($K=' class="odd"'){static$s=0;if(!$K)$s=-1;return($s++%2?$K:'');}function
|
||
js_escape($Bf){return
|
||
addcslashes($Bf,"\r\n'\\/");}function
|
||
json_row($y,$X=null){static$oc=true;if($oc)echo"{";if($y!=""){echo($oc?"":",")."\n\t\"".addcslashes($y,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$oc=false;}else{echo"\n}\n";$oc=true;}}function
|
||
ini_bool($Oc){$X=ini_get($Oc);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
|
||
sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function
|
||
q($Bf){global$j;return$j->quote($Bf);}function
|
||
get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$c];}return$K;}function
|
||
get_key_vals($I,$f=null,$Xf=0){global$e;if(!is_object($f))$f=$e;$K=array();$f->timeout=$Xf;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function
|
||
get_rows($I,$f=null,$k="<p class='error'>"){global$e;$cb=(is_object($f)?$f:$e);$K=array();$J=$cb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function
|
||
unique_array($L,$v){foreach($v
|
||
as$u){if(preg_match("~PRIMARY|UNIQUE~",$u["type"])){$K=array();foreach($u["columns"]as$y){if(!isset($L[$y]))continue
|
||
2;$K[$y]=$L[$y];}return$K;}}}function
|
||
where($Z,$m=array()){global$x;$K=array();$xc='(^[\w\(]+('.str_replace("_",".*",preg_quote(idf_escape("_"))).')?\)+$)';foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,1);$c=(preg_match($xc,$y)?$y:idf_escape($y));$K[]=$c.(($x=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$x=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$y],q($X)));if($x=="sql"&&preg_match("~[^ -@]~",$X))$K[]="$c = ".q($X)." COLLATE utf8_bin";}foreach((array)$Z["null"]as$y)$K[]=(preg_match($xc,$y)?$y:idf_escape($y))." IS NULL";return
|
||
implode(" AND ",$K);}function
|
||
where_check($X,$m=array()){parse_str($X,$La);remove_slashes(array(&$La));return
|
||
where($La,$m);}function
|
||
where_link($s,$c,$Y,$Wd="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($c)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$Wd:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
|
||
convert_fields($d,$m,$N=array()){$K="";foreach($d
|
||
as$y=>$X){if($N&&!in_array(idf_escape($y),$N))continue;$ua=convert_field($m[$y]);if($ua)$K.=", $ua AS ".idf_escape($y);}return$K;}function
|
||
cookie($E,$Y,$ld=2592000){global$ba;$ne=array($E,(preg_match("~\n~",$Y)?"":$Y),($ld?time()+$ld:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ne[]=true;return
|
||
call_user_func_array('setcookie',$ne);}function
|
||
restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
|
||
stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function
|
||
set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function
|
||
auth_url($Fg,$O,$V,$i=null){global$Cb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($Cb))."|username|".($i!==null?"db|":"").session_name()),$B);return"$B[1]?".(sid()?SID."&":"").($Fg!="server"||$O!=""?urlencode($Fg)."=".urlencode($O)."&":"")."username=".urlencode($V).($i!=""?"&db=".urlencode($i):"").($B[2]?"&$B[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($A,$C=null){if($C!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$C;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function
|
||
query_redirect($I,$A,$C,$Re=true,$bc=true,$hc=false){global$e,$k,$b;$Wf="";if($bc){$yf=microtime(true);$hc=!$e->query($I);$Wf="; -- ".format_time($yf,microtime(true));}$xf="";if($I)$xf=$b->messageQuery($I.$Wf);if($hc){$k=error().$xf;return
|
||
false;}if($Re)redirect($A,$C.$xf);return
|
||
true;}function
|
||
queries($I=null){global$e;static$Me=array();if($I===null)return
|
||
implode("\n",$Me);$yf=microtime(true);$K=$e->query($I);$Me[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I)."; -- ".format_time($yf,microtime(true));return$K;}function
|
||
apply_queries($I,$S,$Wb='table'){foreach($S
|
||
as$Q){if(!queries("$I ".$Wb($Q)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($A,$C,$Re){return
|
||
query_redirect(queries(),$A,$C,$Re,false,!$Re);}function
|
||
format_time($yf,$Qb){return
|
||
sprintf('%.3f s',max(0,$Qb-$yf));}function
|
||
remove_from_uri($me=""){return
|
||
substr(preg_replace("~(?<=[?&])($me".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
|
||
pagination($F,$lb){return" ".($F==$lb?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function
|
||
get_file($y,$sb=false){$lc=$_FILES[$y];if(!$lc)return
|
||
null;foreach($lc
|
||
as$y=>$X)$lc[$y]=(array)$X;$K='';foreach($lc["error"]as$y=>$k){if($k)return$k;$E=$lc["name"][$y];$eg=$lc["tmp_name"][$y];$db=file_get_contents($sb&&preg_match('~\\.gz$~',$E)?"compress.zlib://$eg":$eg);if($sb){$yf=substr($db,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$yf,$Xe))$db=iconv("utf-16","utf-8",$db);elseif($yf=="\xEF\xBB\xBF")$db=substr($db,3);$K.=$db."\n\n";}else$K.=$db;}return$K;}function
|
||
upload_error($k){$vd=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($vd?" ".sprintf('Maximum allowed file size is %sB.',$vd):""):'File does not exist.');}function
|
||
repeat_pattern($ve,$jd){return
|
||
str_repeat("$ve{0,65535}",$jd/65535)."$ve{0,".($jd%65535)."}";}function
|
||
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function
|
||
shorten_utf8($Bf,$jd=80,$Ff=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$jd).")($)?)u",$Bf,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$jd).")($)?)",$Bf,$B);return
|
||
h($B[1]).$Ff.(isset($B[2])?"":"<i>...</i>");}function
|
||
friendly_url($X){return
|
||
preg_replace('~[^a-z0-9_]~i','-',$X);}function
|
||
hidden_fields($Je,$Lc=array()){while(list($y,$X)=each($Je)){if(is_array($X)){foreach($X
|
||
as$Xc=>$W)$Je[$y."[$Xc]"]=$W;}elseif(!in_array($y,$Lc))echo'<input type="hidden" name="'.h($y).'" value="'.h($X).'">';}}function
|
||
hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
|
||
table_status1($Q,$ic=false){$K=table_status($Q,$ic);return($K?$K:array("Name"=>$Q));}function
|
||
column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X)$K[$X][]=$n;}return$K;}function
|
||
enum_input($U,$wa,$l,$Y,$Pb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$qd);$K=($Pb!==null?"<label><input type='$U'$wa value='$Pb'".((is_array($Y)?in_array($Pb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($qd[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ma=(is_int($Y)?$Y==$s+1:(is_array($Y)?in_array($s+1,$Y):$Y===$X));$K.=" <label><input type='$U'$wa value='".($s+1)."'".($Ma?' checked':'').'>'.h($b->editVal($X,$l)).'</label>';}return$K;}function
|
||
input($l,$Y,$p){global$e,$pg,$b,$x;$E=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$p){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ta[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ta);$p="json";}$Ze=($x=="mssql"&&$l["auto_increment"]);if($Ze&&!$_POST["save"])$p=null;$yc=(isset($_GET["select"])||$Ze?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$E]'";if($l["type"]=="enum")echo
|
||
nbsp($yc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y);else{$oc=0;foreach($yc
|
||
as$y=>$X){if($y===""||!$X)break;$oc++;}$Ud=($oc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($oc > f.selectedIndex) f.selectedIndex = $oc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Ud;$Dc=(in_array($p,$yc)||isset($yc[$p]));echo(count($yc)>1?"<select name='function[$E]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($yc,$p===null||$Dc?$p:"")."</select>":nbsp(reset($yc))).'<td>';$Qc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Qc!="")echo$Qc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$qd);foreach($qd[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ma=(is_int($Y)?($Y>>$s)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$E][$s]' value='".(1<<$s)."'".($Ma?' checked':'')."$Ud>".h($b->editVal($X,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$E'$Ud>";elseif(($Uf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Uf&&$x!="sqlite")$wa.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';}elseif($p=="json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$xd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$B)?((preg_match("~binary~",$l["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$l["unsigned"]?1:0)):($pg[$l["type"]]?$pg[$l["type"]]+($l["unsigned"]?0:1):0));if($x=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"]))$xd+=7;echo"<input".((!$Dc||$p==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($xd?" maxlength='$xd'":"").(preg_match('~char|binary~',$l["type"])&&$xd>20?" size='40'":"")."$wa>";}}}function
|
||
process_input($l){global$b;$Kc=bracket_escape($l["field"]);$p=$_POST["function"][$Kc];$Y=$_POST["fields"][$Kc];if($l["type"]=="enum"){if($Y==-1)return
|
||
false;if($Y=="")return"NULL";return+$Y;}if($l["auto_increment"]&&$Y=="")return
|
||
null;if($p=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($p=="NULL")$Y=null;if($l["type"]=="set")return
|
||
array_sum((array)$Y);if($p=="json"){$p="";$Y=json_decode($Y,true);if(!is_array($Y))return
|
||
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$lc=get_file("fields-$Kc");if(!is_string($lc))return
|
||
false;return
|
||
q($lc);}return$b->processInput($l,$Y,$p);}function
|
||
fields_from_edit(){global$j;$K=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$E=bracket_escape($y,1);$K[$E]=array("field"=>$E,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($y==$j->primary),);}return$K;}function
|
||
search_tables(){global$b,$e;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$tc=false;foreach(table_status('',true)as$Q=>$R){$E=$b->tableName($R);if(isset($R["Engine"])&&$E!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$J=$e->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$J||$J->fetch_row()){if(!$tc){echo"<ul>\n";$tc=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$E</a>\n":"$E: <span class='error'>".error()."</span>\n");}}}echo($tc?"</ul>":"<p class='message'>".'No tables.')."\n";}function
|
||
dump_headers($Jc,$Dd=false){global$b;$K=$b->dumpHeaders($Jc,$Dd);$ke=$_POST["output"];if($ke!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Jc).".$K".($ke!="file"&&!preg_match('~[^0-9a-z]~',$ke)?".$ke":""));session_write_close();ob_flush();flush();return$K;}function
|
||
dump_csv($L){foreach($L
|
||
as$y=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$L[$y]='"'.str_replace('"','""',$X).'"';}echo
|
||
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
|
||
apply_sql_function($p,$c){return($p?($p=="unixepoch"?"DATETIME($c, '$p')":($p=="count distinct"?"COUNT(DISTINCT ":strtoupper("$p("))."$c)"):$c);}function
|
||
password_file($g){$zb=ini_get("upload_tmp_dir");if(!$zb){if(function_exists('sys_get_temp_dir'))$zb=sys_get_temp_dir();else{$mc=@tempnam("","");if(!$mc)return
|
||
false;$zb=dirname($mc);unlink($mc);}}$mc="$zb/adminer.key";$K=@file_get_contents($mc);if($K||!$g)return$K;$vc=@fopen($mc,"w");if($vc){$K=rand_string();fwrite($vc,$K);fclose($vc);}return$K;}function
|
||
rand_string(){return
|
||
md5(uniqid(mt_rand(),true));}function
|
||
select_value($X,$_,$l,$Vf){global$b,$ba;if(is_array($X)){$K="";foreach($X
|
||
as$Xc=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".h($Xc):"")."<td>".select_value($W,$_,$l,$Vf);return"<table cellspacing='0'>$K</table>";}if(!$_)$_=$b->selectLink($X,$l);if($_===null){if(is_mail($X))$_="mailto:$X";if($Le=is_url($X))$_=($Le=="http"&&$ba?$X:"$Le://www.adminer.org/redirect/?url=".urlencode($X));}$K=$b->editVal($X,$l);if($K!==null){if($K==="")$K=" ";elseif($Vf!=""&&is_shortable($l)&&is_utf8($K))$K=shorten_utf8($K,max(0,+$Vf));else$K=h($K);}return$b->selectVal($K,$_,$l,$X);}function
|
||
is_mail($Mb){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Bb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ve="$va+(\\.$va+)*@($Bb?\\.)+$Bb";return
|
||
is_string($Mb)&&preg_match("(^$ve(,\\s*$ve)*\$)i",$Mb);}function
|
||
is_url($Bf){$Bb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($Bb?\\.)+$Bb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Bf,$B)?strtolower($B[1]):"");}function
|
||
is_shortable($l){return
|
||
preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$l["type"]);}function
|
||
count_rows($Q,$Z,$Tc,$r){global$x;$I=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($Tc&&($x=="sql"||count($r)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$r).")$I":"SELECT COUNT(*)".($Tc?" FROM (SELECT 1$I$_c) x":$I));}function
|
||
slow_query($I){global$b,$T;$i=$b->database();$Xf=$b->queryTimeout();if(support("kill")&&is_object($f=connect())&&($i==""||$f->select_db($i))){$Zc=$f->result("SELECT CONNECTION_ID()");echo'<script type="text/javascript">
|
||
var timeout = setTimeout(function () {
|
||
ajax(\'',js_escape(ME),'script=kill\', function () {
|
||
}, \'token=',$T,'&kill=',$Zc,'\');
|
||
}, ',1000*$Xf,');
|
||
</script>
|
||
';}else$f=null;ob_flush();flush();$K=@get_key_vals($I,$f,$Xf);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
|
||
array_keys($K);}function
|
||
get_token(){$Pe=rand(1,1e6);return($Pe^$_SESSION["token"]).":$Pe";}function
|
||
verify_token(){list($T,$Pe)=explode(":",$_POST["token"]);return($Pe^$_SESSION["token"])==$T;}function
|
||
lzw_decompress($Da){$yb=256;$Ea=8;$Ra=array();$af=0;$bf=0;for($s=0;$s<strlen($Da);$s++){$af=($af<<8)+ord($Da[$s]);$bf+=8;if($bf>=$Ea){$bf-=$Ea;$Ra[]=$af>>$bf;$af&=(1<<$bf)-1;$yb++;if($yb>>$Ea)$Ea++;}}$xb=range("\0","\xFF");$K="";foreach($Ra
|
||
as$s=>$Qa){$Lb=$xb[$Qa];if(!isset($Lb))$Lb=$Mg.$Mg[0];$K.=$Lb;if($s)$xb[]=$Mg.$Lb[0];$Mg=$Lb;}return$K;}function
|
||
on_help($Xa,$tf=0){return" onmouseover='helpMouseover(this, event, ".h($Xa).", $tf);' onmouseout='helpMouseout(this, event);'";}global$b,$e,$Cb,$Jb,$Tb,$k,$yc,$Ac,$ba,$Pc,$x,$ca,$cd,$Td,$we,$Cf,$Ec,$T,$jg,$pg,$wg,$ga;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ne=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ne[]=true;call_user_func_array('session_set_cookie_params',$ne);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$nc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
|
||
get_lang(){return'en';}function
|
||
lang($ig,$Kd=null){if(is_array($ig)){$ze=($Kd==1?0:1);$ig=$ig[$ze];}$ig=str_replace("%d","%s",$ig);$Kd=number_format($Kd,0,".",',');return
|
||
sprintf($ig,$Kd);}if(extension_loaded('pdo')){class
|
||
Min_PDO
|
||
extends
|
||
PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
|
||
__construct(){global$b;$ze=array_search("SQL",$b->operators);if($ze!==false)unset($b->operators[$ze]);}function
|
||
dsn($Gb,$V,$G){try{parent::__construct($Gb,$V,$G);}catch(Exception$Yb){auth_error($Yb);exit;}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
|
||
query($I,$qg=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return
|
||
false;}$this->store_result($J);return$J;}function
|
||
multi_query($I){return$this->_result=$this->query($I);}function
|
||
store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
|
||
false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
|
||
true;}function
|
||
next_result(){if(!$this->_result)return
|
||
false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
|
||
result($I,$l=0){$J=$this->query($I);if(!$J)return
|
||
false;$L=$J->fetch();return$L[$l];}}class
|
||
Min_PDOStatement
|
||
extends
|
||
PDOStatement{var$_offset=0,$num_rows;function
|
||
fetch_assoc(){return$this->fetch(2);}function
|
||
fetch_row(){return$this->fetch(3);}function
|
||
fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$Cb=array();class
|
||
Min_SQL{var$_conn;function
|
||
Min_SQL($e){$this->_conn=$e;}function
|
||
quote($Y){return($Y===null?"NULL":$this->_conn->quote($Y));}function
|
||
select($Q,$N,$Z,$r,$be=array(),$z=1,$F=0,$Fe=false){global$b,$x;$Tc=(count($r)<count($N));$I=$b->selectQueryBuild($N,$Z,$r,$be,$z,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$z&&$r&&$Tc&&$x=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($r&&$Tc?"\nGROUP BY ".implode(", ",$r):"").($be?"\nORDER BY ".implode(", ",$be):""),($z!=""?+$z:null),($F?$z*$F:0),"\n");if($Fe)echo$b->selectQuery($I);return$this->_conn->query($I);}function
|
||
delete($Q,$Ne,$z=0){$I="FROM ".table($Q);return
|
||
queries("DELETE".($z?limit1($I,$Ne):" $I$Ne"));}function
|
||
update($Q,$P,$Ne,$z=0,$pf="\n"){$Dg=array();foreach($P
|
||
as$y=>$X)$Dg[]="$y = $X";$I=table($Q)." SET$pf".implode(",$pf",$Dg);return
|
||
queries("UPDATE".($z?limit1($I,$Ne):" $I$Ne"));}function
|
||
insert($Q,$P){return
|
||
queries("INSERT INTO ".table($Q).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
|
||
insertUpdate($Q,$M,$Ee){return
|
||
false;}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
commit(){return
|
||
queries("COMMIT");}function
|
||
rollback(){return
|
||
queries("ROLLBACK");}}$Cb=array("server"=>"MySQL")+$Cb;if(!defined("DRIVER")){$Be=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
|
||
Min_DB
|
||
extends
|
||
MySQLi{var$extension="MySQLi";function
|
||
Min_DB(){parent::init();}function
|
||
connect($O,$V,$G){mysqli_report(MYSQLI_REPORT_OFF);list($Hc,$ye)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$Hc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$G!=""?$G:ini_get("mysqli.default_pw")),null,(is_numeric($ye)?$ye:ini_get("mysqli.default_port")),(!is_numeric($ye)?$ye:null));if($K){if(method_exists($this,'set_charset'))$this->set_charset("utf8");else$this->query("SET NAMES utf8");}return$K;}function
|
||
result($I,$l=0){$J=$this->query($I);if(!$J)return
|
||
false;$L=$J->fetch_array();return$L[$l];}function
|
||
quote($Bf){return"'".$this->escape_string($Bf)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
|
||
Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
|
||
connect($O,$V,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link){$this->server_info=mysql_get_server_info($this->_link);if(function_exists('mysql_set_charset'))mysql_set_charset("utf8",$this->_link);else$this->query("SET NAMES utf8");}else$this->error=mysql_error();return(bool)$this->_link;}function
|
||
quote($Bf){return"'".mysql_real_escape_string($Bf,$this->_link)."'";}function
|
||
select_db($ob){return
|
||
mysql_select_db($ob,$this->_link);}function
|
||
query($I,$qg=false){$J=@($qg?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
|
||
false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
|
||
true;}return
|
||
new
|
||
Min_Result($J);}function
|
||
multi_query($I){return$this->_result=$this->query($I);}function
|
||
store_result(){return$this->_result;}function
|
||
next_result(){return
|
||
false;}function
|
||
result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
|
||
false;return
|
||
mysql_result($J->_result,0,$l);}}class
|
||
Min_Result{var$num_rows,$_result,$_offset=0;function
|
||
Min_Result($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function
|
||
fetch_assoc(){return
|
||
mysql_fetch_assoc($this->_result);}function
|
||
fetch_row(){return
|
||
mysql_fetch_row($this->_result);}function
|
||
fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
|
||
__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
Min_DB
|
||
extends
|
||
Min_PDO{var$extension="PDO_MySQL";function
|
||
connect($O,$V,$G){$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$V,$G);$this->query("SET NAMES utf8");return
|
||
true;}function
|
||
select_db($ob){return$this->query("USE ".idf_escape($ob));}function
|
||
query($I,$qg=false){$this->setAttribute(1000,!$qg);return
|
||
parent::query($I,$qg);}}}class
|
||
Min_Driver
|
||
extends
|
||
Min_SQL{function
|
||
insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
|
||
insertUpdate($Q,$M,$Ee){$d=array_keys(reset($M));$Ce="INSERT INTO ".table($Q)." (".implode(", ",$d).") VALUES\n";$Dg=array();foreach($d
|
||
as$y)$Dg[$y]="$y = VALUES($y)";$Ff="\nON DUPLICATE KEY UPDATE ".implode(", ",$Dg);$Dg=array();$jd=0;foreach($M
|
||
as$P){$Y="(".implode(", ",$P).")";if($Dg&&(strlen($Ce)+$jd+strlen($Y)+strlen($Ff)>1e6)){if(!queries($Ce.implode(",\n",$Dg).$Ff))return
|
||
false;$Dg=array();$jd=0;}$Dg[]=$Y;$jd+=strlen($Y)+2;}return
|
||
queries($Ce.implode(",\n",$Dg).$Ff);}}function
|
||
idf_escape($Kc){return"`".str_replace("`","``",$Kc)."`";}function
|
||
table($Kc){return
|
||
idf_escape($Kc);}function
|
||
connect(){global$b;$e=new
|
||
Min_DB;$kb=$b->credentials();if($e->connect($kb[0],$kb[1],$kb[2])){$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($if=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$if;return$K;}function
|
||
get_databases($pc){global$e;$K=get_session("dbs");if($K===null){$I=($e->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($pc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function
|
||
limit($I,$Z,$z,$Md=0,$pf=" "){return" $I$Z".($z!==null?$pf."LIMIT $z".($Md?" OFFSET $Md":""):"");}function
|
||
limit1($I,$Z){return
|
||
limit($I,$Z,1);}function
|
||
db_collation($i,$Va){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$B))$K=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$B))$K=$Va[$B[1]][-1];return$K;}function
|
||
engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function
|
||
logged_user(){global$e;return$e->result("SELECT USER()");}function
|
||
tables_list(){global$e;return
|
||
get_key_vals($e->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
|
||
count_tables($h){$K=array();foreach($h
|
||
as$i)$K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i)));return$K;}function
|
||
table_status($E="",$ic=false){global$e;$K=array();foreach(get_rows($ic&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".q(addcslashes($E,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($E!="")return$L;$K[$L["Name"]]=$L;}return$K;}function
|
||
is_view($R){return$R["Engine"]===null;}function
|
||
fk_support($R){return
|
||
preg_match('~InnoDB|IBMDB2I~i',$R["Engine"]);}function
|
||
fields($Q){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$B);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$B[1],"length"=>$B[2],"unsigned"=>ltrim($B[3].$B[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$B[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$B)?$B[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function
|
||
indexes($Q,$f=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$f)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function
|
||
foreign_keys($Q){global$e,$Td;static$ve='`(?:[^`]|``)+`';$K=array();$ib=$e->result("SHOW CREATE TABLE ".table($Q),1);if($ib){preg_match_all("~CONSTRAINT ($ve) FOREIGN KEY \\(((?:$ve,? ?)+)\\) REFERENCES ($ve)(?:\\.($ve))? \\(((?:$ve,? ?)+)\\)(?: ON DELETE ($Td))?(?: ON UPDATE ($Td))?~",$ib,$qd,PREG_SET_ORDER);foreach($qd
|
||
as$B){preg_match_all("~$ve~",$B[2],$vf);preg_match_all("~$ve~",$B[5],$Qf);$K[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('idf_unescape',$vf[0]),"target"=>array_map('idf_unescape',$Qf[0]),"on_delete"=>($B[6]?$B[6]:"RESTRICT"),"on_update"=>($B[7]?$B[7]:"RESTRICT"),);}}return$K;}function
|
||
view($E){global$e;return
|
||
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$e->result("SHOW CREATE VIEW ".table($E),1)));}function
|
||
collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
|
||
as$y=>$X)asort($K[$y]);return$K;}function
|
||
information_schema($i){global$e;return($e->server_info>=5&&$i=="information_schema")||($e->server_info>=5.5&&$i=="performance_schema");}function
|
||
error(){global$e;return
|
||
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$e->error));}function
|
||
error_line(){global$e;if(preg_match('~ at line ([0-9]+)$~',$e->error,$Xe))return$Xe[1]-1;}function
|
||
create_database($i,$Ua){set_session("dbs",null);return
|
||
queries("CREATE DATABASE ".idf_escape($i).($Ua?" COLLATE ".q($Ua):""));}function
|
||
drop_databases($h){restart_session();set_session("dbs",null);return
|
||
apply_queries("DROP DATABASE",$h,'idf_escape');}function
|
||
rename_database($E,$Ua){if(create_database($E,$Ua)){$Ye=array();foreach(tables_list()as$Q=>$U)$Ye[]=table($Q)." TO ".idf_escape($E).".".table($Q);if(!$Ye||queries("RENAME TABLE ".implode(", ",$Ye))){queries("DROP DATABASE ".idf_escape(DB));return
|
||
true;}}return
|
||
false;}function
|
||
auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$u){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$u["columns"],true)){$za="";break;}if($u["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function
|
||
alter_table($Q,$E,$m,$qc,$Za,$Rb,$Ua,$ya,$re){$sa=array();foreach($m
|
||
as$l)$sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$sa=array_merge($sa,$qc);$zf="COMMENT=".q($Za).($Rb?" ENGINE=".q($Rb):"").($Ua?" COLLATE ".q($Ua):"").($ya!=""?" AUTO_INCREMENT=$ya":"").$re;if($Q=="")return
|
||
queries("CREATE TABLE ".table($E)." (\n".implode(",\n",$sa)."\n) $zf");if($Q!=$E)$sa[]="RENAME TO ".table($E);$sa[]=$zf;return
|
||
queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa));}function
|
||
alter_indexes($Q,$sa){foreach($sa
|
||
as$y=>$X)$sa[$y]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
|
||
queries("ALTER TABLE ".table($Q).implode(",",$sa));}function
|
||
truncate_tables($S){return
|
||
apply_queries("TRUNCATE TABLE",$S);}function
|
||
drop_views($Hg){return
|
||
queries("DROP VIEW ".implode(", ",array_map('table',$Hg)));}function
|
||
drop_tables($S){return
|
||
queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
|
||
move_tables($S,$Hg,$Qf){$Ye=array();foreach(array_merge($S,$Hg)as$Q)$Ye[]=table($Q)." TO ".idf_escape($Qf).".".table($Q);return
|
||
queries("RENAME TABLE ".implode(", ",$Ye));}function
|
||
copy_tables($S,$Hg,$Qf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
|
||
as$Q){$E=($Qf==DB?table("copy_$Q"):idf_escape($Qf).".".table($Q));if(!queries("DROP TABLE IF EXISTS $E")||!queries("CREATE TABLE $E LIKE ".table($Q))||!queries("INSERT INTO $E SELECT * FROM ".table($Q)))return
|
||
false;}foreach($Hg
|
||
as$Q){$E=($Qf==DB?table("copy_$Q"):idf_escape($Qf).".".table($Q));$Gg=view($Q);if(!queries("DROP VIEW IF EXISTS $E")||!queries("CREATE VIEW $E AS $Gg[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($E){if($E=="")return
|
||
array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($E));return
|
||
reset($M);}function
|
||
triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Type"=>array("FOR EACH ROW"),);}function
|
||
routine($E,$U){global$e,$Tb,$Pc,$pg;$qa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$og="((".implode("|",array_merge(array_keys($pg),$qa)).")\\b(?:\\s*\\(((?:[^'\")]*|$Tb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?";$ve="\\s*(".($U=="FUNCTION"?"":$Pc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$og";$g=$e->result("SHOW CREATE $U ".idf_escape($E),2);preg_match("~\\(((?:$ve\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$og\\s+":"")."(.*)~is",$g,$B);$m=array();preg_match_all("~$ve\\s*,?~is",$B[1],$qd,PREG_SET_ORDER);foreach($qd
|
||
as$me){$E=str_replace("``","`",$me[2]).$me[3];$m[]=array("field"=>$E,"type"=>strtolower($me[5]),"length"=>preg_replace_callback("~$Tb~s",'normalize_enum',$me[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$me[8] $me[7]"))),"null"=>1,"full_type"=>$me[4],"inout"=>strtoupper($me[1]),"collation"=>strtolower($me[9]),);}if($U!="FUNCTION")return
|
||
array("fields"=>$m,"definition"=>$B[11]);return
|
||
array("fields"=>$m,"returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",);}function
|
||
routines(){return
|
||
get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
|
||
routine_languages(){return
|
||
array();}function
|
||
last_id(){global$e;return$e->result("SELECT LAST_INSERT_ID()");}function
|
||
explain($e,$I){return$e->query("EXPLAIN ".($e->server_info>=5.1?"PARTITIONS ":"").$I);}function
|
||
found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
|
||
types(){return
|
||
array();}function
|
||
schemas(){return
|
||
array();}function
|
||
get_schema(){return"";}function
|
||
set_schema($kf){return
|
||
true;}function
|
||
create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function
|
||
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
|
||
use_sql($ob){return"USE ".idf_escape($ob);}function
|
||
trigger_sql($Q,$Df){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\n".($Df=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function
|
||
show_variables(){return
|
||
get_key_vals("SHOW VARIABLES");}function
|
||
process_list(){return
|
||
get_rows("SHOW FULL PROCESSLIST");}function
|
||
show_status(){return
|
||
get_key_vals("SHOW STATUS");}function
|
||
convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function
|
||
unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function
|
||
support($jc){global$e;return!preg_match("~scheme|sequence|type|view_trigger".($e->server_info<5.1?"|event|partitioning".($e->server_info<5?"|routine|trigger|view":""):"")."~",$jc);}$x="sql";$pg=array();$Cf=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$y=>$X){$pg+=$X;$Cf[$y]=array_keys($X);}$wg=array("unsigned","zerofill","unsigned zerofill");$Xd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$yc=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$Ac=array("avg","count","count distinct","group_concat","max","min","sum");$Jb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ga="4.0.3";class
|
||
Adminer{var$operators;function
|
||
name(){return"<a href='http://www.adminer.org/' target='_blank' id='h1'>Adminer</a>";}function
|
||
credentials(){return
|
||
array(SERVER,$_GET["username"],get_password());}function
|
||
permanentLogin($g=false){return
|
||
password_file($g);}function
|
||
database(){return
|
||
DB;}function
|
||
databases($pc=true){return
|
||
get_databases($pc);}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
5;}function
|
||
headers(){return
|
||
true;}function
|
||
head(){return
|
||
true;}function
|
||
loginForm(){global$Cb;echo'<table cellspacing="0">
|
||
<tr><th>System<td>',html_select("auth[driver]",$Cb,DRIVER,"loginDriver(this);"),'<tr><th>Server<td><input name="auth[server]" value="',h(SERVER),'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">
|
||
<tr><th>Username<td><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off">
|
||
<tr><th>Password<td><input type="password" name="auth[password]">
|
||
<tr><th>Database<td><input name="auth[db]" value="',h($_GET["db"]);?>" autocapitalize="off">
|
||
</table>
|
||
<script type="text/javascript">
|
||
var username = document.getElementById('username');
|
||
focus(username);
|
||
username.form['auth[driver]'].onchange();
|
||
</script>
|
||
<?php
|
||
|
||
echo"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
|
||
login($od,$G){return
|
||
true;}function
|
||
tableName($Jf){return
|
||
h($Jf["Name"]);}function
|
||
fieldName($l,$be=0){return'<span title="'.h($l["full_type"]).'">'.h($l["field"]).'</span>';}function
|
||
selectLinks($Jf,$P=""){echo'<p class="links">';$nd=array("select"=>'Select data');if(support("table")||support("indexes"))$nd["table"]='Show structure';if(support("table")){if(is_view($Jf))$nd["view"]='Alter view';else$nd["create"]='Alter table';}if($P!==null)$nd["edit"]='New item';foreach($nd
|
||
as$y=>$X)echo" <a href='".h(ME)."$y=".urlencode($Jf["Name"]).($y=="edit"?$P:"")."'".bold(isset($_GET[$y])).">$X</a>";echo"\n";}function
|
||
foreignKeys($Q){return
|
||
foreign_keys($Q);}function
|
||
backwardKeys($Q,$If){return
|
||
array();}function
|
||
backwardKeysPrint($Aa,$L){}function
|
||
selectQuery($I){global$x;return"<p><code class='jush-$x'>".h(str_replace("\n"," ",$I))."</code>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>":"")."</p>";}function
|
||
rowDescription($Q){return"";}function
|
||
rowDescriptions($M,$rc){return$M;}function
|
||
selectLink($X,$l){}function
|
||
selectVal($X,$_,$l,$ie){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X))$K=lang(array('%d byte','%d bytes'),strlen($ie));return($_?"<a href='".h($_)."'>$K</a>":$K);}function
|
||
editVal($X,$l){return$X;}function
|
||
selectColumnsPrint($N,$d){global$yc,$Ac;print_fieldset("select",'Select',$N);$s=0;$N[""]=array();foreach($N
|
||
as$y=>$X){$X=$_GET["columns"][$y];$c=select_input(" name='columns[$s][col]' onchange='".($y!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$d,$X["col"]);echo"<div>".($yc||$Ac?"<select name='columns[$s][fun]' onchange='helpClose();".($y!==""?"":" this.nextSibling.nextSibling.onchange();")."'".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".optionlist(array(-1=>"")+array_filter(array('Functions'=>$yc,'Aggregation'=>$Ac)),$X["fun"])."</select>"."($c)":$c)."</div>\n";$s++;}echo"</div></fieldset>\n";}function
|
||
selectSearchPrint($Z,$d,$v){print_fieldset("search",'Search',$Z);foreach($v
|
||
as$s=>$u){if($u["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('h',$u["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h($_GET["fulltext"][$s])."' onchange='selectFieldChange(this.form);'>",checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"<br>\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Ka="this.nextSibling.onchange();";for($s=0;$s<=count($_GET["where"]);$s++){list(,$X)=each($_GET["where"]);if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$s][col]' onchange='$Ka'",$d,$X["col"],"(".'anywhere'.")"),html_select("where[$s][op]",$this->operators,$X["op"],$Ka),"<input type='search' name='where[$s][val]' value='".h($X["val"])."' onchange='".($X?"selectFieldChange(this.form)":"selectAddRow(this)").";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";}}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint($be,$d,$v){print_fieldset("sort",'Sort',$be);$s=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]' onchange='selectFieldChange(this.form);'",$d,$X),checkbox("desc[$s]",1,isset($_GET["desc"][$y]),'descending')."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]' onchange='selectAddRow(this);'",$d),checkbox("desc[$s]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function
|
||
selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($z)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}function
|
||
selectLengthPrint($Vf){if($Vf!==null){echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Vf)."'>","</div></fieldset>\n";}}function
|
||
selectActionPrint($v){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$d=array();foreach($v
|
||
as$u){if($u["type"]!="FULLTEXT")$d[reset($u["columns"])]=1;}$d[""]=1;foreach($d
|
||
as$y=>$X)json_row($y);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function
|
||
selectCommandPrint(){return!information_schema(DB);}function
|
||
selectImportPrint(){return!information_schema(DB);}function
|
||
selectEmailPrint($Nb,$d){}function
|
||
selectColumnsProcess($d,$v){global$yc,$Ac;$N=array();$r=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$yc)||in_array($X["fun"],$Ac)))){$N[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$Ac))$r[]=$N[$y];}}return
|
||
array($N,$r);}function
|
||
selectSearchProcess($m,$v){global$x;$K=array();foreach($v
|
||
as$s=>$u){if($u["type"]=="FULLTEXT"&&$_GET["fulltext"][$s]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$u["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$bb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Mc=process_length($X["val"]);$bb.=" ".($Mc!=""?$Mc:"(NULL)");}elseif($X["op"]=="SQL")$bb=" $X[val]";elseif($X["op"]=="LIKE %%")$bb=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif(!preg_match('~NULL$~',$X["op"]))$bb.=" ".$this->processInput($m[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=idf_escape($X["col"]).$bb;else{$Wa=array();foreach($m
|
||
as$E=>$l){$Vc=preg_match('~char|text|enum|set~',$l["type"]);if((is_numeric($X["val"])||!preg_match('~(^|[^o])int|float|double|decimal|bit~',$l["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||$Vc)){$E=idf_escape($E);$Wa[]=($x=="sql"&&$Vc&&!preg_match('~^utf8~',$l["collation"])?"CONVERT($E USING utf8)":$E);}}$K[]=($Wa?"(".implode("$bb OR ",$Wa)."$bb)":"0");}}}return$K;}function
|
||
selectOrderProcess($m,$v){$K=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$K;}function
|
||
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
|
||
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
|
||
selectEmailProcess($Z,$rc){return
|
||
false;}function
|
||
selectQueryBuild($N,$Z,$r,$be,$z,$F){return"";}function
|
||
messageQuery($I){global$x;restart_session();$Fc=&get_session("queries");$t="sql-".count($Fc[$_GET["db"]]);if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";$Fc[$_GET["db"]][]=array($I,time());return" <span class='time'>".@date("H:i:s")."</span> <a href='#$t' onclick=\"return !toggle('$t');\">".'SQL command'."</a>"."<div id='$t' class='hidden'><pre><code class='jush-$x'>".shorten_utf8($I,1000).'</code></pre>'.(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Fc[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editFunctions($l){global$Jb;$K=($l["null"]?"NULL/":"");foreach($Jb
|
||
as$y=>$yc){if(!$y||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($yc
|
||
as$ve=>$X){if(!$ve||preg_match("~$ve~",$l["type"]))$K.="/$X";}if($y&&!preg_match('~set|blob|bytea|raw|file~',$l["type"]))$K.="/SQL";}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$K='Auto Increment';return
|
||
explode("/",$K);}function
|
||
editInput($Q,$l,$wa,$Y){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0);return"";}function
|
||
processInput($l,$Y,$p=""){if($p=="SQL")return$Y;$E=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$p))$K="$p()";elseif(preg_match('~^current_(date|timestamp)$~',$p))$K=$p;elseif(preg_match('~^([+-]|\\|\\|)$~',$p))$K=idf_escape($E)." $p $K";elseif(preg_match('~^[+-] interval$~',$p))$K=idf_escape($E)." $p ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$p))$K="$p(".idf_escape($E).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$p))$K="$p($K)";return
|
||
unconvert_field($l,$K);}function
|
||
dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function
|
||
dumpFormat(){return
|
||
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
|
||
dumpDatabase($i){}function
|
||
dumpTable($Q,$Df,$Wc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Df)dump_csv(array_keys(fields($Q)));}elseif($Df){if($Wc==2){$m=array();foreach(fields($Q)as$E=>$l)$m[]=idf_escape($E)." $l[full_type]";$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";}else$g=create_sql($Q,$_POST["auto_increment"]);if($g){if($Df=="DROP+CREATE"||$Wc==1)echo"DROP ".($Wc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Wc==1)$g=remove_definer($g);echo"$g;\n\n";}}}function
|
||
dumpData($Q,$Df,$I){global$e,$x;$sd=($x=="sqlite"?0:1048576);if($Df){if($_POST["format"]=="sql"){if($Df=="TRUNCATE+INSERT")echo
|
||
truncate_sql($Q).";\n";$m=fields($Q);}$J=$e->query($I,1);if($J){$Rc="";$Ia="";$Yc=array();$Ff="";$kc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$kc()){if(!$Yc){$Dg=array();foreach($L
|
||
as$X){$l=$J->fetch_field();$Yc[]=$l->name;$y=idf_escape($l->name);$Dg[]="$y = VALUES($y)";}$Ff=($Df=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Dg):"").";\n";}if($_POST["format"]!="sql"){if($Df=="table"){dump_csv($Yc);$Df="INSERT";}dump_csv($L);}else{if(!$Rc)$Rc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$Yc)).") VALUES";foreach($L
|
||
as$y=>$X){$l=$m[$y];$L[$y]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$if=($sd?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia)$Ia=$Rc.$if;elseif(strlen($Ia)+4+strlen($if)+strlen($Ff)<$sd)$Ia.=",$if";else{echo$Ia.$Ff;$Ia=$Rc.$if;}}}if($Ia)echo$Ia.$Ff;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$e->error)."\n";}}function
|
||
dumpFilename($Jc){return
|
||
friendly_url($Jc!=""?$Jc:(SERVER!=""?SERVER:"localhost"));}function
|
||
dumpHeaders($Jc,$Dd=false){$ke=$_POST["output"];$fc=(preg_match('~sql~',$_POST["format"])?"sql":($Dd?"tar":"csv"));header("Content-Type: ".($ke=="gz"?"application/x-gzip":($fc=="tar"?"application/x-tar":($fc=="sql"||$ke!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($ke=="gz")ob_start('gzencode',1e6);return$fc;}function
|
||
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
|
||
true;}function
|
||
navigation($Cd){global$ga,$x,$Cb,$e;echo'<h1>
|
||
',$this->name(),' <span class="version">',$ga,'</span>
|
||
<a href="http://www.adminer.org/#download" target="_blank" id="version">',(version_compare($ga,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
|
||
</h1>
|
||
';if($Cd=="auth"){$oc=true;foreach((array)$_SESSION["pwds"]as$Fg=>$rf){foreach($rf
|
||
as$O=>$Bg){foreach($Bg
|
||
as$V=>$G){if($G!==null){if($oc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$oc=false;}$rb=$_SESSION["db"][$Fg][$O][$V];foreach(($rb?array_keys($rb):array(""))as$i)echo"<a href='".h(auth_url($Fg,$O,$V,$i))."'>($Cb[$Fg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n";}}}}}else{if($_GET["ns"]!==""&&!$Cd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&version=4.0.3&driver=mysql",'"></script>
|
||
<script type="text/javascript">
|
||
';if($S){$nd=array();foreach($S
|
||
as$Q=>$U)$nd[]=preg_quote($Q,'/');echo"var jushLinks = { $x: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$nd).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$x;\n";}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\');
|
||
</script>
|
||
';}$this->databasesPrint($Cd);if(DB==""||!$Cd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Dump'."</a>\n";}if($_GET["ns"]!==""&&!$Cd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
|
||
databasesPrint($Cd){global$b,$e;$h=$this->databases();echo'<form action="">
|
||
<p id="dbs">
|
||
';hidden_fields_get();$pb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo"<span title='".'database'."'>DB</span>: ".($h?"<select name='db'$pb>".optionlist(array(""=>"")+$h,DB)."</select>":'<input name="db" value="'.h(DB).'" autocapitalize="off">'),"<input type='submit' value='".'Use'."'".($h?" class='hidden'":"").">\n";if($Cd!="db"&&DB!=""&&$e->select_db(DB)){}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"</p></form>\n";}function
|
||
tablesPrint($S){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($S
|
||
as$Q=>$zf){echo'<a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q).">".'select'."</a> ";$E=$this->tableName($zf);echo(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($zf)?"view":""))." title='".'Show structure'."'>$E</a>":"<span>$E</span>")."<br>\n";}}}$b=(function_exists('adminer_object')?adminer_object():new
|
||
Adminer);if($b->operators===null)$b->operators=$Xd;function
|
||
page_header($Zf,$k="",$Ha=array(),$ag=""){global$ca,$ga,$b,$Cb,$x;page_headers();$bg=$Zf.($ag!=""?": $ag":"");$cg=strip_tags($bg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
|
||
<html lang="en" dir="ltr">
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||
<meta name="robots" content="noindex">
|
||
<title>',$cg,'</title>
|
||
<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&version=4.0.3&driver=mysql",'">
|
||
<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&version=4.0.3&driver=mysql",'"></script>
|
||
';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.0.3&driver=mysql",'">
|
||
<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.0.3&driver=mysql",'">
|
||
';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css">
|
||
';}}echo'
|
||
<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"])?"":" onload=\"verifyVersion('$ga');\""),'>
|
||
<script type="text/javascript">
|
||
document.body.className = document.body.className.replace(/ nojs/, \' js\');
|
||
</script>
|
||
|
||
<div id="help" class="jush-',$x,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
|
||
|
||
<div id="content">
|
||
';if($Ha!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?$_:".").'">'.$Cb[DRIVER].'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false)echo"$O\n";else{echo"<a href='".($_?h($_):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ha)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ha
|
||
as$y=>$X){$vb=(is_array($X)?$X[1]:h($X));if($vb!="")echo"<a href='".h(ME."$y=").urlencode(is_array($X)?$X[0]:$X)."'>$vb</a> » ";}}echo"$Zf\n";}}echo"<h2>$bg</h2>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true))$h=null;stop_session();define("PAGE_HEADER",1);}function
|
||
page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function
|
||
page_messages($k){$yg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ad=$_SESSION["messages"][$yg];if($Ad){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Ad)."</div>\n";unset($_SESSION["messages"][$yg]);}if($k)echo"<div class='error'>$k</div>\n";}function
|
||
page_footer($Cd=""){global$b,$T;echo'</div>
|
||
|
||
';if($Cd!="auth"){echo'<form action="" method="post">
|
||
<p class="logout">
|
||
<input type="submit" name="logout" value="Logout" id="logout">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</p>
|
||
</form>
|
||
';}echo'<div id="menu">
|
||
';$b->navigation($Cd);echo'</div>
|
||
<script type="text/javascript">setupSubmitHighlight(document);</script>
|
||
';}function
|
||
int32($D){while($D>=2147483648)$D-=4294967296;while($D<=-2147483649)$D+=4294967296;return(int)$D;}function
|
||
long2str($W,$Jg){$if='';foreach($W
|
||
as$X)$if.=pack('V',$X);if($Jg)return
|
||
substr($if,0,end($W));return$if;}function
|
||
str2long($if,$Jg){$W=array_values(unpack('V*',str_pad($if,4*ceil(strlen($if)/4),"\0")));if($Jg)$W[]=strlen($if);return$W;}function
|
||
xxtea_mx($Og,$Ng,$Gf,$Xc){return
|
||
int32((($Og>>5&0x7FFFFFF)^$Ng<<2)+(($Ng>>3&0x1FFFFFFF)^$Og<<4))^int32(($Gf^$Ng)+($Xc^$Og));}function
|
||
encrypt_string($Af,$y){if($Af=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Af,true);$D=count($W)-1;$Og=$W[$D];$Ng=$W[0];$H=floor(6+52/($D+1));$Gf=0;while($H-->0){$Gf=int32($Gf+0x9E3779B9);$Ib=$Gf>>2&3;for($le=0;$le<$D;$le++){$Ng=$W[$le+1];$Ed=xxtea_mx($Og,$Ng,$Gf,$y[$le&3^$Ib]);$Og=int32($W[$le]+$Ed);$W[$le]=$Og;}$Ng=$W[0];$Ed=xxtea_mx($Og,$Ng,$Gf,$y[$le&3^$Ib]);$Og=int32($W[$D]+$Ed);$W[$D]=$Og;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($Af,$y){if($Af=="")return"";if(!$y)return
|
||
false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Af,false);$D=count($W)-1;$Og=$W[$D];$Ng=$W[0];$H=floor(6+52/($D+1));$Gf=int32($H*0x9E3779B9);while($Gf){$Ib=$Gf>>2&3;for($le=$D;$le>0;$le--){$Og=$W[$le-1];$Ed=xxtea_mx($Og,$Ng,$Gf,$y[$le&3^$Ib]);$Ng=int32($W[$le]-$Ed);$W[$le]=$Ng;}$Og=$W[$D];$Ed=xxtea_mx($Og,$Ng,$Gf,$y[$le&3^$Ib]);$Ng=int32($W[0]-$Ed);$W[0]=$Ng;$Gf=int32($Gf-0x9E3779B9);}return
|
||
long2str($W,true);}$e='';$Ec=$_SESSION["token"];if(!$Ec)$_SESSION["token"]=rand(1,1e6);$T=get_token();$we=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$we[$y]=$X;}}$xa=$_POST["auth"];if($xa){session_regenerate_id();$j=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$G=$xa["password"];$i=$xa["db"];set_password($j,$O,$V,$G);$_SESSION["db"][$j][$O][$V][$i]=true;if($xa["permanent"]){$y=base64_encode($j)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Ge=$b->permanentLogin(true);$we[$y]="$y:".base64_encode($Ge?encrypt_string($G,$Ge):"");cookie("adminer_permanent",implode(" ",$we));}if(count($_POST)==1||DRIVER!=$j||SERVER!=$O||$_GET["username"]!==$V||DB!=$i)redirect(auth_url($j,$O,$V,$i));}elseif($_POST["logout"]){if($Ec&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($we&&!$_SESSION["pwds"]){session_regenerate_id();$Ge=$b->permanentLogin();foreach($we
|
||
as$y=>$X){list(,$Oa)=explode(":",$X);list($Fg,$O,$V,$i)=array_map('base64_decode',explode("-",$y));set_password($Fg,$O,$V,decrypt_string(base64_decode($Oa),$Ge));$_SESSION["db"][$Fg][$O][$V][$i]=true;}}function
|
||
unset_permanent(){global$we;foreach($we
|
||
as$y=>$X){list($Fg,$O,$V,$i)=array_map('base64_decode',explode("-",$y));if($Fg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB)unset($we[$y]);}cookie("adminer_permanent",implode(" ",$we));}function
|
||
auth_error($ac=null){global$e,$b,$Ec;$sf=session_name();$k="";if(!$_COOKIE[$sf]&&$_GET[$sf]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';elseif(isset($_GET["username"])){if(($_COOKIE[$sf]||$_GET[$sf])&&!$Ec)$k='Session expired, please login again.';else{$G=get_password();if($G!==null){$k=h($ac?$ac->getMessage():(is_string($e)?$e:'Invalid credentials.'));if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="http://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}$ne=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ne["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");}function
|
||
set_password($Fg,$O,$V,$G){$_SESSION["pwds"][$Fg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function
|
||
get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Be)),false);page_footer("auth");exit;}$e=connect();}if(!is_object($e)||!$b->login($_GET["username"],get_password())){auth_error();exit;}$j=new
|
||
Min_Driver($e);if($xa&&$_POST["token"])$_POST["token"]=$T;$k='';if($_POST){if(!verify_token()){$Oc="max_input_vars";$wd=ini_get($Oc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$wd||$X<$wd)){$Oc=$y;$wd=$X;}}}$k=(!$_POST["token"]&&$wd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Oc'"):'Invalid CSRF token. Send the form again.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
|
||
connect_error(){global$b,$e,$T,$k,$Cb;$h=array();if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$k)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$y=>$X){if(support($y))echo"<a href='".h(ME)."$y='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Cb[DRIVER],"<b>$e->server_info</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$lf=support("scheme");$Va=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td> ":"")."<th>".'Database'."<td>".'Collation'."<td>".'Tables'."</thead>\n";foreach($h
|
||
as$i){$ef=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$ef'>".h($i)."</a>";$Ua=nbsp(db_collation($i,$Va));echo"<td>".(support("database")?"<a href='$ef".($lf?"&ns=":"")."&database=' title='".'Alter database'."'>$Ua</a>":$Ua),"<td align='right'><a href='$ef&schema=' id='tables-".h($i)."' title='".'Database schema'."'>?</a>","\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}echo"<p><a href='".h(ME)."refresh=1'>".'Refresh'."</a>\n";}page_footer("db");if($h)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=connect');</script>\n";}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}function
|
||
select($J,$f=null,$ee=array()){global$x;$nd=array();$v=array();$d=array();$Fa=array();$pg=array();$K=array();odd('');for($s=0;$L=$J->fetch_row();$s++){if(!$s){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($w=0;$w<count($L);$w++){$l=$J->fetch_field();$E=$l->name;$de=$l->orgtable;$ce=$l->orgname;$K[$l->table]=$de;if($ee&&$x=="sql")$nd[$w]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($de!=""){if(!isset($v[$de])){$v[$de]=array();foreach(indexes($de,$f)as$u){if($u["type"]=="PRIMARY"){$v[$de]=array_flip($u["columns"]);break;}}$d[$de]=$v[$de];}if(isset($d[$de][$ce])){unset($d[$de][$ce]);$v[$de][$ce]=$w;$nd[$w]=$de;}}if($l->charsetnr==63)$Fa[$w]=true;$pg[$w]=$l->type;echo"<th".($de!=""||$l->name!=$ce?" title='".h(($de!=""?"$de.":"").$ce)."'":"").">".h($E).($ee?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L
|
||
as$y=>$X){if($X===null)$X="<i>NULL</i>";elseif($Fa[$y]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";elseif(!strlen($X))$X=" ";else{$X=h($X);if($pg[$y]==254)$X="<code>$X</code>";}if(isset($nd[$y])&&!$d[$nd[$y]]){if($ee&&$x=="sql"){$Q=$L[array_search("table=",$nd)];$_=$nd[$y].urlencode($ee[$Q]!=""?$ee[$Q]:$Q);}else{$_="edit=".urlencode($nd[$y]);foreach($v[$nd[$y]]as$Sa=>$w)$_.="&where".urlencode("[".bracket_escape($Sa)."]")."=".urlencode($L[$w]);}$X="<a href='".h(ME.$_)."'>$X</a>";}echo"<td>$X";}}echo($s?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function
|
||
referencable_primary($of){$K=array();foreach(table_status('',true)as$Kf=>$Q){if($Kf!=$of&&fk_support($Q)){foreach(fields($Kf)as$l){if($l["primary"]){if($K[$Kf]){unset($K[$Kf]);break;}$K[$Kf]=$l;}}}}return$K;}function
|
||
textarea($E,$Y,$M=10,$Wa=80){global$x;echo"<textarea name='$E' rows='$M' cols='$Wa' class='sqlarea jush-$x' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
|
||
as$X)echo
|
||
h($X[0])."\n\n\n";}else
|
||
echo
|
||
h($Y);echo"</textarea>";}function
|
||
edit_type($y,$l,$Va,$o=array()){global$Cf,$pg,$wg,$Td;$U=$l["type"];echo'<td><select name="',$y,'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($pg[$U])&&!isset($o[$U]))array_unshift($Cf,$U);if($o)$Cf['Foreign keys']=$o;echo
|
||
optionlist($Cf,$U),'</select>
|
||
<td><input name="',$y,'[length]" value="',h($l["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$l["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='$y"."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.'collation'.')'.optionlist($Va,$l["collation"]).'</select>',($wg?"<select name='$y"."[unsigned]'".(!$U||preg_match('~((^|[^o])int|float|double|decimal)$~',$U)?"":" class='hidden'").'><option>'.optionlist($wg,$l["unsigned"]).'</select>':''),(isset($l['on_update'])?"<select name='$y"."[on_update]'".($U=="timestamp"?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),$l["on_update"]).'</select>':''),($o?"<select name='$y"."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",$Td),$l["on_delete"])."</select> ":" ");}function
|
||
process_length($jd){global$Tb;return(preg_match("~^\\s*\\(?\\s*$Tb(?:\\s*,\\s*$Tb)*+\\s*\\)?\\s*\$~",$jd)&&preg_match_all("~$Tb~",$jd,$qd)?"(".implode(",",$qd[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$jd)));}function
|
||
process_type($l,$Ta="COLLATE"){global$wg;return" $l[type]".process_length($l["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&in_array($l["unsigned"],$wg)?" $l[unsigned]":"").(preg_match('~char|text|enum|set~',$l["type"])&&$l["collation"]?" $Ta ".q($l["collation"]):"");}function
|
||
process_field($l,$ng){global$x;$tb=$l["default"];return
|
||
array(idf_escape(trim($l["field"])),process_type($ng),($l["null"]?" NULL":" NOT NULL"),(isset($tb)?" DEFAULT ".((preg_match('~time~',$l["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$tb))||($l["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$tb))||($x=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$tb))?$tb:q($tb)):""),($l["type"]=="timestamp"&&$l["on_update"]?" ON UPDATE $l[on_update]":""),(support("comment")&&$l["comment"]!=""?" COMMENT ".q($l["comment"]):""),($l["auto_increment"]?auto_increment():null),);}function
|
||
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$U))return" class='$y'";}}function
|
||
edit_fields($m,$Va,$U="TABLE",$o=array(),$ab=false){global$e,$Pc;echo'<thead><tr class="wrap">
|
||
';if($U=="PROCEDURE"){echo'<td> ';}echo'<th>',($U=="TABLE"?'Column name':'Parameter name'),'<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
|
||
<td>Length
|
||
<td>Options
|
||
';if($U=="TABLE"){echo'<td>NULL
|
||
<td><input type="radio" name="auto_increment_col" value=""><acronym title="Auto Increment">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td>Default values
|
||
',(support("comment")?"<td".($ab?"":" class='hidden'").">".'Comment':"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($m))."]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.0.3&driver=mysql' alt='+' title='".'Add next'."'>",'<script type="text/javascript">row_count = ',count($m),';</script>
|
||
</thead>
|
||
<tbody onkeydown="return editingKeydown(event);">
|
||
';foreach($m
|
||
as$s=>$l){$s++;$fe=$l[($_POST?"orig":"field")];$_b=(isset($_POST["add"][$s-1])||(isset($l["field"])&&!$_POST["drop_col"][$s]))&&(support("drop_col")||$fe=="");echo'<tr',($_b?"":" style='display: none;'"),'>
|
||
',($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",$Pc),$l["inout"]):""),'<th>';if($_b){echo'<input name="fields[',$s,'][field]" value="',h($l["field"]),'" onchange="editingNameChange(this);',($l["field"]!=""||count($m)>1?'':' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'),'" maxlength="64" autocapitalize="off">';}echo'<input type="hidden" name="fields[',$s,'][orig]" value="',h($fe),'">
|
||
';edit_type("fields[$s]",$l,$Va,$o);if($U=="TABLE"){echo'<td>',checkbox("fields[$s][null]",1,$l["null"],"","","block"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$s,'"';if($l["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
|
||
echo
|
||
checkbox("fields[$s][has_default]",1,$l["has_default"]),'<input name="fields[',$s,'][default]" value="',h($l["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
|
||
',(support("comment")?"<td".($ab?"":" class='hidden'")."><input name='fields[$s][comment]' value='".h($l["comment"])."' maxlength='".($e->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.0.3&driver=mysql' alt='+' title='".'Add next'."' onclick='return !editingAddRow(this, 1);'> "."<input type='image' class='icon' name='up[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&version=4.0.3&driver=mysql' alt='^' title='".'Move up'."'> "."<input type='image' class='icon' name='down[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&version=4.0.3&driver=mysql' alt='v' title='".'Move down'."'> ":""),($fe==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.0.3&driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function
|
||
process_fields(&$m){ksort($m);$Md=0;if($_POST["up"]){$dd=0;foreach($m
|
||
as$y=>$l){if(key($_POST["up"])==$y){unset($m[$y]);array_splice($m,$dd,0,array($l));break;}if(isset($l["field"]))$dd=$Md;$Md++;}}elseif($_POST["down"]){$tc=false;foreach($m
|
||
as$y=>$l){if(isset($l["field"])&&$tc){unset($m[key($_POST["down"])]);array_splice($m,$Md,0,array($tc));break;}if(key($_POST["down"])==$y)$tc=$l;$Md++;}}elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
|
||
false;return
|
||
true;}function
|
||
normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
|
||
grant($q,$Ie,$d,$Sd){if(!$Ie)return
|
||
true;if($Ie==array("ALL PRIVILEGES","GRANT OPTION"))return($q=="GRANT"?queries("$q ALL PRIVILEGES$Sd WITH GRANT OPTION"):queries("$q ALL PRIVILEGES$Sd")&&queries("$q GRANT OPTION$Sd"));return
|
||
queries("$q ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$d, ",$Ie).$d).$Sd);}function
|
||
drop_create($Db,$g,$Eb,$Tf,$Fb,$A,$_d,$yd,$zd,$Pd,$Hd){if($_POST["drop"])query_redirect($Db,$A,$_d);elseif($Pd=="")query_redirect($g,$A,$zd);elseif($Pd!=$Hd){$jb=queries($g);queries_redirect($A,$yd,$jb&&queries($Db));if($jb)queries($Eb);}else
|
||
queries_redirect($A,$yd,queries($Tf)&&queries($Fb)&&queries($Db)&&queries($g));}function
|
||
create_trigger($Sd,$L){global$x;$Yf=" $L[Timing] $L[Event]";return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($x=="mssql"?$Sd.$Yf:$Yf.$Sd).rtrim(" $L[Type]\n$L[Statement]",";").";";}function
|
||
create_routine($ff,$L){global$Pc;$P=array();$m=(array)$L["fields"];ksort($m);foreach($m
|
||
as$l){if($l["field"]!="")$P[]=(preg_match("~^($Pc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");}return"CREATE $ff ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function
|
||
remove_definer($I){return
|
||
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$I);}function
|
||
format_foreign_key($n){global$Td;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$n["source"])).") REFERENCES ".table($n["table"])." (".implode(", ",array_map('idf_escape',$n["target"])).")".(preg_match("~^($Td)\$~",$n["on_delete"])?" ON DELETE $n[on_delete]":"").(preg_match("~^($Td)\$~",$n["on_update"])?" ON UPDATE $n[on_update]":"");}function
|
||
tar_file($mc,$dg){$K=pack("a100a8a8a8a12a12",$mc,644,0,0,decoct($dg->size),decoct(time()));$Na=8*32;for($s=0;$s<strlen($K);$s++)$Na+=ord($K[$s]);$K.=sprintf("%06o",$Na)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$dg->send();echo
|
||
str_repeat("\0",511-($dg->size+511)%512);}function
|
||
ini_bytes($Oc){$X=ini_get($Oc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
|
||
doc_link($ue){global$x,$e;$zg=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($e->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($e->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($ue[$x]?"<a href='$zg[$x]$ue[$x]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}$Td="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
|
||
TmpFile{var$handler;var$size;function
|
||
TmpFile(){$this->handler=tmpfile();}function
|
||
write($eb){$this->size+=strlen($eb);fwrite($this->handler,$eb);}function
|
||
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Tb="'(?:''|[^'\\\\]|\\\\.)*+'";$Pc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m)$k=error();$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$Za=$R["Comment"];if($Za!="")echo"<p>".'Comment'.": ".h($Za)."\n";if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m
|
||
as$l){echo"<tr".odd()."><th>".h($l["field"]),"<td title='".h($l["collation"])."'>".h($l["full_type"]).($l["null"]?" <i>NULL</i>":"").($l["auto_increment"]?" <i>".'Auto Increment'."</i>":""),(isset($l["default"])?" [<b>".h($l["default"])."</b>]":""),(support("comment")?"<td>".nbsp($l["comment"]):""),"\n";}echo"</table>\n";}if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$v=indexes($a);if($v){echo"<table cellspacing='0'>\n";foreach($v
|
||
as$E=>$u){ksort($u["columns"]);$Fe=array();foreach($u["columns"]as$y=>$X)$Fe[]="<i>".h($X)."</i>".($u["lengths"][$y]?"(".$u["lengths"][$y].")":"").($u["descs"][$y]?" DESC":"");echo"<tr title='".h($E)."'><th>$u[type]<td>".implode(", ",$Fe)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td> </thead>\n";foreach($o
|
||
as$E=>$n){echo"<tr title='".h($E)."'>","<th><i>".implode("</i>, <i>",array_map('h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$n["target"]))."</i>)","<td>".nbsp($n["on_delete"])."\n","<td>".nbsp($n["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($E)).'">'.'Alter'.'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$mg=triggers($a);if($mg){echo"<table cellspacing='0'>\n";foreach($mg
|
||
as$y=>$X)echo"<tr valign='top'><td>$X[0]<td>$X[1]<th>".h($y)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($y))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Lf=array();$Mf=array();$E="adminer_schema";$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE[($_COOKIE["$E-".DB]?"$E-".DB:$E)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$qd,PREG_SET_ORDER);foreach($qd
|
||
as$s=>$B){$Lf[$B[1]]=array($B[2],$B[3]);$Mf[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$fg=0;$Ca=-1;$kf=array();$Ve=array();$hd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$ze=0;$kf[$Q]["fields"]=array();foreach(fields($Q)as$E=>$l){$ze+=1.25;$l["pos"]=$ze;$kf[$Q]["fields"][$E]=$l;}$kf[$Q]["pos"]=($Lf[$Q]?$Lf[$Q]:array($fg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$fd=$Ca;if($Lf[$Q][1]||$Lf[$X["table"]][1])$fd=min(floatval($Lf[$Q][1]),floatval($Lf[$X["table"]][1]))-1;else$Ca-=.1;while($hd[(string)$fd])$fd-=.0001;$kf[$Q]["references"][$X["table"]][(string)$fd]=array($X["source"],$X["target"]);$Ve[$X["table"]][$Q][(string)$fd]=$X["target"];$hd[(string)$fd]=true;}}$fg=max($fg,$kf[$Q]["pos"][0]+2.5+$ze);}echo'<div id="schema" style="height: ',$fg,'em;" onselectstart="return false;">
|
||
<script type="text/javascript">
|
||
var tablePos = {',implode(",",$Mf)."\n",'};
|
||
var em = document.getElementById(\'schema\').offsetHeight / ',$fg,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = function (ev) {
|
||
schemaMouseup(ev, \'',js_escape(DB),'\');
|
||
};
|
||
</script>
|
||
';foreach($kf
|
||
as$E=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($E).'"><b>'.h($E)."</b></a>";foreach($Q["fields"]as$l){$X='<span'.type_class($l["type"]).' title="'.h($l["full_type"].($l["null"]?" NULL":'')).'">'.h($l["field"]).'</span>';echo"<br>".($l["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Rf=>$We){foreach($We
|
||
as$fd=>$Se){$gd=$fd-$Lf[$E][1];$s=0;foreach($Se[0]as$vf)echo"\n<div class='references' title='".h($Rf)."' id='refs$fd-".($s++)."' style='left: $gd"."em; top: ".$Q["fields"][$vf]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$gd)."em;'></div></div>";}}foreach((array)$Ve[$E]as$Rf=>$We){foreach($We
|
||
as$fd=>$d){$gd=$fd-$Lf[$E][1];$s=0;foreach($d
|
||
as$Qf)echo"\n<div class='references' title='".h($Rf)."' id='refd$fd-".($s++)."' style='left: $gd"."em; top: ".$Q["fields"][$Qf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=4.0.3&driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$gd)."em;'></div></div>";}}echo"\n</div>\n";}foreach($kf
|
||
as$E=>$Q){foreach((array)$Q["references"]as$Rf=>$We){foreach($We
|
||
as$fd=>$Se){$Bd=$fg;$ud=-10;foreach($Se[0]as$y=>$vf){$_e=$Q["pos"][0]+$Q["fields"][$vf]["pos"];$Ae=$kf[$Rf]["pos"][0]+$kf[$Rf]["fields"][$Se[1][$y]]["pos"];$Bd=min($Bd,$_e,$Ae);$ud=max($ud,$_e,$Ae);}echo"<div class='references' id='refl$fd' style='left: $fd"."em; top: $Bd"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($ud-$Bd)."em;'></div></div>\n";}}}echo'</div>
|
||
<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">Permanent link</a>
|
||
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$hb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$y)$hb.="&$y=".urlencode($_POST[$y]);cookie("adminer_export",substr($hb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$fc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Uc=preg_match('~sql~',$_POST["format"]);if($Uc)echo"-- Adminer $ga ".$Cb[DRIVER]." dump
|
||
|
||
".($x!="sql"?"":"SET NAMES utf8;
|
||
".($_POST["data_style"]?"SET foreign_key_checks = 0;
|
||
SET time_zone = ".q(substr(preg_replace('~^[^-]~','+\0',$e->result("SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)")),0,6)).";
|
||
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||
":"")."
|
||
");$Df=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h))$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));}foreach((array)$h
|
||
as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Uc&&preg_match('~CREATE~',$Df)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){if($Df=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";echo"$g;\n";}if($Uc){if($Df)echo
|
||
use_sql($i).";\n\n";$je="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$ff){foreach(get_rows("SHOW $ff STATUS WHERE Db = ".q($i),null,"-- ")as$L)$je.=($Df!='DROP+CREATE'?"DROP $ff IF EXISTS ".idf_escape($L["Name"]).";;\n":"").remove_definer($e->result("SHOW CREATE $ff ".idf_escape($L["Name"]),2)).";;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L)$je.=($Df!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"").remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3)).";;\n\n";}if($je)echo"DELIMITER ;;\n\n$je"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Hg=array();foreach(table_status('',true)as$E=>$R){$Q=(DB==""||in_array($E,(array)$_POST["tables"]));$mb=(DB==""||in_array($E,(array)$_POST["data"]));if($Q||$mb){if($fc=="tar"){$dg=new
|
||
TmpFile;ob_start(array($dg,'write'),1e5);}$b->dumpTable($E,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Hg[]=$E;elseif($mb){$m=fields($E);$b->dumpData($E,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($E));}if($Uc&&$_POST["triggers"]&&$Q&&($mg=trigger_sql($E,$_POST["table_style"])))echo"\nDELIMITER ;;\n$mg\nDELIMITER ;\n";if($fc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$E.csv",$dg);}elseif($Uc)echo"\n";}}foreach($Hg
|
||
as$Gg)$b->dumpTable($Gg,$_POST["table_style"],1);if($fc=="tar")echo
|
||
pack("x512");}}}if($Uc)echo"-- ".$e->result("SELECT NOW()")."\n";exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
|
||
<form action="" method="post">
|
||
<table cellspacing="0">
|
||
';$qb=array('','USE','DROP+CREATE','CREATE');$Nf=array('','DROP+CREATE','CREATE');$nb=array('','TRUNCATE+INSERT','INSERT');if($x=="sql")$nb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($x=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$qb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Nf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$nb,$L["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
|
||
<table cellspacing="0">
|
||
';$De=array();if(DB!=""){$Ma=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Ma onclick='formCheck(this, /^tables\\[/);'>".'Tables'."</label>","<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Ma onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Hg="";$Of=tables_list();foreach($Of
|
||
as$E=>$U){$Ce=preg_replace('~_.*~','',$E);$Ma=($a==""||$a==(substr($a,-1)=="%"?"$Ce%":$E));$Fe="<tr><td>".checkbox("tables[]",$E,$Ma,$E,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U))$Hg.="$Fe\n";else
|
||
echo"$Fe<td align='right'><label class='block'><span id='Rows-".h($E)."'></span>".checkbox("data[]",$E,$Ma,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$De[$Ce]++;}echo$Hg;if($Of)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h
|
||
as$i){if(!information_schema($i)){$Ce=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Ce%",$i,"formUncheck('check-databases');","block")."\n";$De[$Ce]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$oc=true;foreach($De
|
||
as$y=>$X){if($y!=""&&$X>1){echo($oc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$y%")."'>".h($y)."</a>";$oc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$q=$J;if(!$J)$J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($q?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th> </thead>\n";while($L=$J->fetch_assoc())echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n";if(!$q||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";}elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Gc=&get_session("queries");$Fc=&$Gc[DB];if(!$k&&$_POST["clear"]){$Fc=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$vc=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$vc=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($vc?fread($vc,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Fc||reset(end($Fc))!=$H){restart_session();$Fc[]=array($H,time());set_session("queries",$Gc);stop_session();}}$wf="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\r?\n)";$ub=";";$Md=0;$Pb=true;$f=connect();if(is_object($f)&&DB!="")$f->select_db(DB);$Ya=0;$Vb=array();$md=0;$oe='[\'"'.($x=="sql"?'`#':($x=="sqlite"?'`[':($x=="mssql"?'[':''))).']|/\\*|-- |$'.($x=="pgsql"?'|\\$[^$]*\\$':'');$gg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Hb=$b->dumpFormat();unset($Hb["sql"]);while($I!=""){if(!$Md&&preg_match("~^$wf*DELIMITER\\s+(\\S+)~i",$I,$B)){$ub=$B[1];$I=substr($I,strlen($B[0]));}else{preg_match('('.preg_quote($ub)."\\s*|$oe)",$I,$B,PREG_OFFSET_CAPTURE,$Md);list($tc,$ze)=$B[0];if(!$tc&&$vc&&!feof($vc))$I.=fread($vc,1e5);else{if(!$tc&&rtrim($I)=="")break;$Md=$ze+strlen($tc);if($tc&&rtrim($tc)!=$ub){while(preg_match('('.($tc=='/*'?'\\*/':($tc=='['?']':(preg_match('~^-- |^#~',$tc)?"\n":preg_quote($tc)."|\\\\."))).'|$)s',$I,$B,PREG_OFFSET_CAPTURE,$Md)){$if=$B[0][0];if(!$if&&$vc&&!feof($vc))$I.=fread($vc,1e5);else{$Md=$B[0][1]+strlen($if);if($if[0]!="\\")break;}}}else{$Pb=false;$H=substr($I,0,$ze);$Ya++;$Fe="<pre id='sql-$Ya'><code class='jush-$x'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if(!$_POST["only_errors"]){echo$Fe;ob_flush();flush();}$yf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$wf*USE\\b~isU",$H))$f->query($H);do{$J=$e->store_result();$Qb=microtime(true);$Wf=" <span class='time'>(".format_time($yf,$Qb).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Fe:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Vb[]=" <a href='#sql-$Ya'>$Ya</a>";if($_POST["error_stops"])break
|
||
2;}elseif(is_object($J)){$ee=select($J,$f);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n","<p>".($J->num_rows?lang(array('%d row','%d rows'),$J->num_rows):"").$Wf;$t="export-$Ya";$ec=", <a href='#$t' onclick=\"return !toggle('$t');\">".'Export'."</a><span id='$t' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Hb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($wf|\\()*SELECT\\b~isU",$H)&&($dc=explain($f,$H))){$t="explain-$Ya";echo", <a href='#$t' onclick=\"return !toggle('$t');\">EXPLAIN</a>$ec","<div id='$t' class='hidden'>\n";select($dc,$f,$ee);echo"</div>\n";}else
|
||
echo$ec;echo"</form>\n";}}else{if(preg_match("~^$wf*(CREATE|DROP|ALTER)$wf+(DATABASE|SCHEMA)\\b~isU",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$Wf\n";}$yf=$Qb;}while($e->next_result());$md+=substr_count($H.$tc,"\n");$I=substr($I,$Md);$Md=0;}}}}if($Pb)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$Ya-count($Vb))," <span class='time'>(".format_time($gg,microtime(true)).")</span>\n";}elseif($Vb&&$Ya>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Vb)."\n";}else
|
||
echo"<p class='error'>".upload_error($I)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$bc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$Fc;elseif($_GET["history"]!="")$H=$Fc[$_GET["history"]][0];echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$bc\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?'<input type="file" name="sql_file[]" multiple> (< '.ini_get("upload_max_filesize").'B)':'File uploads are disabled.'),"\n$bc","</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo
|
||
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),'Show only errors')."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$Fc){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Fc);$X;$X=prev($Fc)){$y=key($Fc);list($H,$Wf)=$X;echo'<a href="'.h(ME."sql=&history=$y").'">'.'Edit'."</a> <span class='time' title='".@date('Y-m-d',$Wf)."'>".@date("H:i:s",$Wf)."</span> <code class='jush-$x'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
|
||
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$xg=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m
|
||
as$E=>$l){if(!isset($l["privileges"][$xg?"update":"insert"])||$b->fieldName($l)=="")unset($m[$E]);}if($_POST&&!$k&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($xg?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$v=indexes($a);$sg=unique_array($_GET["where"],$v);$Oe="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,'Item has been deleted.',$j->delete($a,$Oe,!$sg));else{$P=array();foreach($m
|
||
as$E=>$l){$X=process_input($l);if($X!==false&&$X!==null)$P[idf_escape($E)]=$X;}if($xg){if(!$P)redirect($A);queries_redirect($A,'Item has been updated.',$j->update($a,$P,$Oe,!$sg));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$j->insert($a,$P);$ed=($J?last_id():0);queries_redirect($A,sprintf('Item%s has been inserted.',($ed?" $ed":"")),$J);}}}$Kf=$b->tableName(table_status1($a,true));page_header(($xg?'Edit':'Insert'),$k,array("select"=>array($a,$Kf)),$Kf);$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($m
|
||
as$E=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$ua="''";if($x=="sql"&&preg_match("~enum|set~",$l["type"]))$ua="1*".idf_escape($E);$N[]=($ua?"$ua AS ":"").idf_escape($E);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($j->primary=>"");}if($L){foreach($L
|
||
as$y=>$X){if(!$Z)$L[$y]=null;$m[$y]=array("field"=>$y,"null"=>($y!=$j->primary),"auto_increment"=>($y==$j->primary));}}}if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'
|
||
<div id="message"></div>
|
||
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
|
||
as$E=>$l){echo"<tr><th>".$b->fieldName($l);$tb=$_GET["set"][bracket_escape($E)];if($tb===null){$tb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$tb,$Xe))$tb=$Xe[1];}$Y=($L!==null?($L[$E]!=""&&$x=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$E])?array_sum($L[$E]):+$L[$E]):$L[$E]):(!$xg&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$tb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$l);$p=($_POST["save"]?(string)$_POST["function"][$E]:($xg&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$p="now";}input($l,$Y,$p);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo'<p>
|
||
';if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($xg?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($xg?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
|
||
<input type="hidden" name="save" value="1">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["create"])){$a=$_GET["create"];$pe=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$pe[$y]=$y;$Ue=referencable_primary($a);$o=array();foreach($Ue
|
||
as$Kf=>$l)$o[str_replace("`","``",$Kf)."`".str_replace("`","``",$l["field"])]=$Kf;$he=array();$R=array();if($a!=""){$he=fields($a);$R=table_status($a);if(!$R)$k='No tables.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$m=array();$ra=array();$_g=false;$qc=array();ksort($L["fields"]);$ge=reset($he);$pa=" FIRST";foreach($L["fields"]as$y=>$l){$n=$o[$l["type"]];$ng=($n!==null?$Ue[$n]:$l);if($l["field"]!=""){if(!$l["has_default"])$l["default"]=null;if($y==$L["auto_increment_col"])$l["auto_increment"]=true;$Ke=process_field($l,$ng);$ra[]=array($l["orig"],$Ke,$pa);if($Ke!=process_field($ge,$ge)){$m[]=array($l["orig"],$Ke,$pa);if($l["orig"]!=""||$pa)$_g=true;}if($n!==null)$qc[idf_escape($l["field"])]=($a!=""&&$x!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($ng["field"]),'on_delete'=>$l["on_delete"],));$pa=" AFTER ".idf_escape($l["field"]);}elseif($l["orig"]!=""){$_g=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ge=next($he);if(!$ge)$pa="";}}$re="";if($pe[$L["partition_by"]]){$se=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$y=>$X){$Y=$L["partition_values"][$y];$se[]="\n PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$re.="\nPARTITION BY $L[partition_by]($L[partition])".($se?" (".implode(",",$se)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$re.="\nREMOVE PARTITIONING";$C='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$C='Table has been created.';}$E=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($E),$C,alter_table($a,$E,($x=="sqlite"&&($_g||$qc)?$ra:$m),$qc,$L["Comment"],($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?+$L["Auto_increment"]:""),$re));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($pg["int"])?"int":(isset($pg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($he
|
||
as$l){$l["has_default"]=isset($l["default"]);$L["fields"][]=$l;}if(support("partitioning")){$wc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$se=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$se[""]="";$L["partition_names"]=array_keys($se);$L["partition_values"]=array_values($se);}}}$Va=collations();$Sb=engines();foreach($Sb
|
||
as$Rb){if(!strcasecmp($Rb,$L["Engine"])){$L["Engine"]=$Rb;break;}}echo'
|
||
<form action="" method="post" id="form">
|
||
<p>
|
||
';if(support("columns")||$a==""){echo'Table name: <input name="name" maxlength="64" value="',h($L["name"]),'" autocapitalize="off">
|
||
';if($a==""&&!$_POST){?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($Sb?"<select name='Engine' onchange='helpClose();'".on_help("getTarget(event).value",1).">".optionlist(array(""=>"(".'engine'.")")+$Sb,$L["Engine"])."</select>":""),' ',($Va&&!preg_match("~sqlite|mssql~",$x)?html_select("Collation",array(""=>"(".'collation'.")")+$Va,$L["Collation"]):""),' <input type="submit" value="Save">
|
||
';}echo'
|
||
';if(support("columns")){echo'<table cellspacing="0" id="edit-fields" class="nowrap">
|
||
';$ab=($_POST?$_POST["comments"]:$L["Comment"]!="");if(!$_POST&&!$ab){foreach($L["fields"]as$l){if($l["comment"]!=""){$ab=true;break;}}}edit_fields($L["fields"],$Va,"TABLE",$o,$ab);echo'</table>
|
||
<p>
|
||
Auto Increment: <input type="number" name="Auto_increment" size="6" value="',h($L["Auto_increment"]),'">
|
||
',checkbox("defaults",1,true,'Default values',"columnShow(this.checked, 5)","jsonly");if(!$_POST["defaults"]){echo'<script type="text/javascript">editingHideDefaults()</script>';}echo(support("comment")?"<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"".($ab?" checked":"").">".'Comment'."</label>".' <input name="Comment" id="Comment" value="'.h($L["Comment"]).'" maxlength="'.($e->server_info>=5.5?2048:60).'"'.($ab?'':' class="hidden"').'>':''),'<p>
|
||
<input type="submit" value="Save">
|
||
';}echo'
|
||
';if($a!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}if(support("partitioning")){$qe=preg_match('~RANGE|LIST~',$L["partition_by"]);print_fieldset("partition",'Partition by',$L["partition_by"]);echo'<p>
|
||
',"<select name='partition_by' onchange='partitionByChange(this);'".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).">".optionlist(array(""=>"")+$pe,$L["partition_by"])."</select>",'(<input name="partition" value="',h($L["partition"]),'">)
|
||
Partitions: <input type="number" name="partitions" class="size',($qe||!$L["partition_by"]?" hidden":""),'" value="',h($L["partitions"]),'">
|
||
<table cellspacing="0" id="partition-table"',($qe?"":" class='hidden'"),'>
|
||
<thead><tr><th>Partition name<th>Values</thead>
|
||
';foreach($L["partition_names"]as$y=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'"'.($y==count($L["partition_names"])-1?' onchange="partitionNameChange(this);"':'').' autocapitalize="off">','<td><input name="partition_values[]" value="'.h($L["partition_values"][$y]).'">';}echo'</table>
|
||
</div></fieldset>
|
||
';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Nc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"]))$Nc[]="FULLTEXT";$v=indexes($a);$Ee=array();if($x=="mongo"){$Ee=$v["_id_"];unset($Nc[0]);unset($v["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$u){$E=$u["name"];if(in_array($u["type"],$Nc)){$d=array();$kd=array();$wb=array();$P=array();ksort($u["columns"]);foreach($u["columns"]as$y=>$c){if($c!=""){$jd=$u["lengths"][$y];$vb=$u["descs"][$y];$P[]=idf_escape($c).($jd?"(".(+$jd).")":"").($vb?" DESC":"");$d[]=$c;$kd[]=($jd?$jd:null);$wb[]=$vb;}}if($d){$cc=$v[$E];if($cc){ksort($cc["columns"]);ksort($cc["lengths"]);ksort($cc["descs"]);if($u["type"]==$cc["type"]&&array_values($cc["columns"])===$d&&(!$cc["lengths"]||array_values($cc["lengths"])===$kd)&&array_values($cc["descs"])===$wb){unset($v[$E]);continue;}}$sa[]=array($u["type"],$E,$P);}}}foreach($v
|
||
as$E=>$cc)$sa[]=array($cc["type"],$E,"DROP");if(!$sa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$y=>$u){if($u["columns"][count($u["columns"])]!="")$L["indexes"][$y]["columns"][]="";}$u=end($L["indexes"]);if($u["type"]||array_filter($u["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($v
|
||
as$y=>$u){$v[$y]["name"]=$y;$v[$y]["columns"][]="";}$v[]=array("columns"=>array(1=>""));$L["indexes"]=$v;}?>
|
||
|
||
<form action="" method="post">
|
||
<table cellspacing="0" class="nowrap">
|
||
<thead><tr>
|
||
<th>Index Type
|
||
<th><input type="submit" style="left: -1000px; position: absolute;">Column (length)
|
||
<th>Name
|
||
<th><noscript><input type='image' class='icon' name='add[0]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&version=4.0.3&driver=mysql' alt='+' title='Add next'></noscript>
|
||
</thead>
|
||
<?php
|
||
if($Ee){echo"<tr><td>PRIMARY<td>";foreach($Ee["columns"]as$y=>$c){echo
|
||
select_input(" disabled",$m,$c),"<label><input disabled type='checkbox'>".'descending'."</label> ";}echo"<td><td>\n";}$w=1;foreach($L["indexes"]as$u){if(!$_POST["drop_col"]||$w!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$w][type]",array(-1=>"")+$Nc,$u["type"],($w==count($L["indexes"])?"indexesAddRow(this);":1)),"<td>";ksort($u["columns"]);$s=1;foreach($u["columns"]as$y=>$c){echo"<span>".select_input(" name='indexes[$w][columns][$s]' onchange=\"".($s==count($u["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".js_escape($x=="sql"?"":$_GET["indexes"]."_")."');\"",($m?array_combine($m,$m):$m),$c),($x=="sql"||$x=="mssql"?"<input type='number' name='indexes[$w][lengths][$s]' class='size' value='".h($u["lengths"][$y])."'>":""),($x!="sql"?checkbox("indexes[$w][descs][$s]",1,$u["descs"][$y],'descending'):"")," </span>";$s++;}echo"<td><input name='indexes[$w][name]' value='".h($u["name"])."' autocapitalize='off'>\n","<td><input type='image' class='icon' name='drop_col[$w]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.0.3&driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";}$w++;}echo'</table>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){restart_session();$E=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$E){if(DB!=""){$_GET["db"]=$E;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($E),'Database has been renamed.',rename_database($E,$L["collation"]));}else{$h=explode("\n",str_replace("\r","",$E));$Ef=true;$dd="";foreach($h
|
||
as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"]))$Ef=false;$dd=$i;}}queries_redirect(ME."db=".urlencode($dd),'Database has been created.',$Ef);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Va=collations();$E=DB;if($_POST)$E=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Va);elseif($x=="sql"){foreach(get_vals("SHOW GRANTS")as$q){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$q,$B)&&$B[1]){$E=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add_x"]||strpos($E,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($E).'</textarea><br>':'<input name="name" id="name" value="'.h($E).'" maxlength="64" autocapitalize="off">')."\n".($Va?html_select("collation",array(""=>"(".'collation'.")")+$Va,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?>
|
||
<script type='text/javascript'>focus(document.getElementById('name'));</script>
|
||
<input type="submit" value="Save">
|
||
<?php
|
||
if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.0.3&driver=mysql' alt='+' title='".'Add next'."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$ff=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Mc=array();$je=array();foreach($ff["fields"]as$s=>$l){if(substr($l["inout"],-3)=="OUT")$je[$s]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);if(!$l["inout"]||substr($l["inout"],0,2)=="IN")$Mc[]=$s;}if(!$k&&$_POST){$Ja=array();foreach($ff["fields"]as$y=>$l){if(in_array($y,$Mc)){$X=process_input($l);if($X===false)$X="''";if(isset($je[$y]))$e->query("SET @".idf_escape($l["field"])." = $X");}$Ja[]=(isset($je[$y])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$x'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I))echo"<p class='error'>".error()."\n";else{$f=connect();if(is_object($f))$f->select_db(DB);do{$J=$e->store_result();if(is_object($J))select($J,$f);else
|
||
echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n";}while($e->next_result());if($je)select($e->query("SELECT ".implode(", ",$je)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Mc){echo"<table cellspacing='0'>\n";foreach($Mc
|
||
as$y){$l=$ff["fields"][$y];$E=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$E];if($Y!=""){if($l["type"]=="enum")$Y=+$Y;if($l["type"]=="set")$Y=array_sum($Y);}input($l,$Y,(string)$_POST["function"][$E]);echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$E=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$C=($_POST["drop"]?'Foreign key has been dropped.':($E!=""?'Foreign key has been altered.':'Foreign key has been created.'));$A=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Qf=array();foreach($L["source"]as$y=>$X)$Qf[$y]=$L["target"][$y];$L["target"]=$Qf;if($x=="sqlite")queries_redirect($A,$C,recreate_table($a,$a,array(),array(),array(" $E"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$sa="ALTER TABLE ".table($a);$Db="\nDROP ".($x=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E);if($_POST["drop"])query_redirect($sa.$Db,$A,$C);else{query_redirect($sa.($E!=""?"$Db,":"")."\nADD".format_foreign_key($L),$A,$C);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($E!=""){$o=foreign_keys($a);$L=$o[$E];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}$vf=array_keys(fields($a));$Qf=($a===$L["table"]?$vf:array_keys(fields($L["table"])));$Te=array_keys(array_filter(table_status('',true),'fk_support'));echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
';if($L["db"]==""&&$L["ns"]==""){echo'Target table:
|
||
',html_select("table",$Te,$L["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value="">
|
||
<noscript><p><input type="submit" name="change" value="Change"></noscript>
|
||
<table cellspacing="0">
|
||
<thead><tr><th>Source<th>Target</thead>
|
||
';$w=0;foreach($L["source"]as$y=>$X){echo"<tr>","<td>".html_select("source[".(+$y)."]",array(-1=>"")+$vf,$X,($w==count($L["source"])-1?"foreignAddRow(this);":1)),"<td>".html_select("target[".(+$y)."]",$Qf,$L["target"][$y]);$w++;}echo'</table>
|
||
<p>
|
||
ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",$Td),$L["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",$Td),$L["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'<p>
|
||
<input type="submit" value="Save">
|
||
<noscript><p><input type="submit" name="add" value="Add column"></noscript>
|
||
';}if($E!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$E=trim($L["name"]);$ua=" AS\n$L[select]";$A=ME."table=".urlencode($E);$C='View has been altered.';if(!$_POST["drop"]&&$a==$E&&$x!="sqlite")query_redirect(($x=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$ua,$A,$C);else{$Sf=$E."_adminer_".uniqid();drop_create("DROP VIEW ".table($a),"CREATE VIEW ".table($E).$ua,"DROP VIEW ".table($E),"CREATE VIEW ".table($Sf).$ua,"DROP VIEW ".table($Sf),($_POST["drop"]?substr(ME,0,-1):$A),'View has been dropped.',$C,'View has been created.',$a,$E);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k)$k=$e->error;}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo'
|
||
<form action="" method="post">
|
||
<p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off">
|
||
<p>';textarea("select",$L["select"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Sc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$_f=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($L["INTERVAL_FIELD"],$Sc)&&isset($_f[$L["STATUS"]])){$jf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$jf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$jf)."\n".$_f[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo'
|
||
<form action="" method="post">
|
||
<table cellspacing="0">
|
||
<tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]),'" maxlength="64" autocapitalize="off">
|
||
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$L[EXECUTE_AT]$L[STARTS]"),'">
|
||
<tr><th title="datetime">End<td><input name="ENDS" value="',h($L["ENDS"]),'">
|
||
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($L["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Sc,$L["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$_f,$L["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($L["EVENT_COMMENT"]),'" maxlength="64">
|
||
<tr><th> <td>',checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
|
||
<p>';textarea("EVENT_DEFINITION",$L["EVENT_DEFINITION"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($aa!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$ff=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Sf="$L[name]_adminer_".uniqid();drop_create("DROP $ff ".idf_escape($da),create_routine($ff,$L),"DROP $ff ".idf_escape($L["name"]),create_routine($ff,array("name"=>$Sf)+$L),"DROP $ff ".idf_escape($Sf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$ff);$L["name"]=$da;}$Va=get_vals("SHOW CHARACTER SET");sort($Va);$gf=routine_languages();echo'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off">
|
||
',($gf?'Language'.": ".html_select("language",$gf,$L["language"]):""),'<input type="submit" value="Save">
|
||
<table cellspacing="0" class="nowrap">
|
||
';edit_fields($L["fields"],$Va,$ff);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$L["returns"],$Va);}echo'</table>
|
||
<p>';textarea("definition",$L["definition"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($da!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$E=$_GET["name"];$lg=trigger_options();$kg=array("INSERT","UPDATE","DELETE");$L=(array)trigger($E)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$lg["Timing"])&&in_array($_POST["Event"],$kg)&&in_array($_POST["Type"],$lg["Type"])){$Sd=" ON ".table($a);$Db="DROP TRIGGER ".idf_escape($E).($x=="pgsql"?$Sd:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Db,$A,'Trigger has been dropped.');else{if($E!="")queries($Db);queries_redirect($A,($E!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Sd,$_POST)));if($E!="")queries(create_trigger($Sd,$L+array("Type"=>reset($lg["Type"]))));}}$L=$_POST;}page_header(($E!=""?'Alter trigger'.": ".h($E):'Create trigger'),$k,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table cellspacing="0">
|
||
<tr><th>Time<td>',html_select("Timing",$lg["Timing"],$L["Timing"],"if (/^".preg_quote($a,"/")."_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '".js_escape($a)."_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"),'<tr><th>Event<td>',html_select("Event",$kg,$L["Event"],"this.form['Timing'].onchange();"),'<tr><th>Type<td>',html_select("Type",$lg["Type"],$L["Type"]),'</table>
|
||
<p>Name: <input name="Trigger" value="',h($L["Trigger"]),'" maxlength="64" autocapitalize="off">
|
||
<p>';textarea("Statement",$L["Statement"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($E!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Ie=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$fb)$Ie[$fb][$L["Privilege"]]=$L["Comment"];}$Ie["Server Admin"]+=$Ie["File access on server"];$Ie["Databases"]["Create routine"]=$Ie["Procedures"]["Create routine"];unset($Ie["Procedures"]["Create routine"]);$Ie["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Ie["Columns"][$X]=$Ie["Tables"][$X];unset($Ie["Server Admin"]["Usage"]);foreach($Ie["Tables"]as$y=>$X)unset($Ie["Databases"][$y]);$Gd=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Gd[$X]=(array)$Gd[$X]+(array)$_POST["grants"][$y];}$zc=array();$Qd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$B[1],$qd,PREG_SET_ORDER)){foreach($qd
|
||
as$X){if($X[1]!="USAGE")$zc["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$zc["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$B))$Qd=$B[1];}}if($_POST&&!$k){$Rd=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Rd",ME."privileges=",'User has been dropped.');else{$Id=q($_POST["user"])."@".q($_POST["host"]);$te=$_POST["pass"];if($te!=''&&!$_POST["hashed"]){$te=$e->result("SELECT PASSWORD(".q($te).")");$k=!$te;}$jb=false;if(!$k){if($Rd!=$Id){$jb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Id IDENTIFIED BY PASSWORD ".q($te));$k=!$jb;}elseif($te!=$Qd)queries("SET PASSWORD FOR $Id = ".q($te));}if(!$k){$cf=array();foreach($Gd
|
||
as$Ld=>$q){if(isset($_GET["grant"]))$q=array_filter($q);$q=array_keys($q);if(isset($_GET["grant"]))$cf=array_diff(array_keys(array_filter($Gd[$Ld],'strlen')),$q);elseif($Rd==$Id){$Od=array_keys((array)$zc[$Ld]);$cf=array_diff($Od,$q);$q=array_diff($q,$Od);unset($zc[$Ld]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Ld,$B)&&(!grant("REVOKE",$cf,$B[2]," ON $B[1] FROM $Id")||!grant("GRANT",$q,$B[2]," ON $B[1] TO $Id"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Rd!=$Id)queries("DROP USER $Rd");elseif(!isset($_GET["grant"])){foreach($zc
|
||
as$Ld=>$cf){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Ld,$B))grant("REVOKE",array_keys($cf),$B[2]," ON $B[1] FROM $Id");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($jb)$e->query("DROP USER $Id");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$zc=$Gd;}else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Qd;if($Qd!="")$L["hashed"]=true;$zc[(DB==""||$zc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
|
||
<table cellspacing="0">
|
||
<tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]),'" autocapitalize="off">
|
||
<tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]),'" autocapitalize="off">
|
||
<tr><th>Password<td><input name="pass" id="pass" value="',h($L["pass"]),'">
|
||
';if(!$L["hashed"]){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo
|
||
checkbox("hashed",1,$L["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);"),'</table>
|
||
|
||
';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($zc
|
||
as$Ld=>$q){echo'<th>'.($Ld!="*.*"?"<input name='objects[$s]' value='".h($Ld)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$s]' value='*.*' size='10'>*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$fb=>$vb){foreach((array)$Ie[$fb]as$He=>$Za){echo"<tr".odd()."><td".($vb?">$vb<td":" colspan='2'").' lang="en" title="'.h($Za).'">'.h($He);$s=0;foreach($zc
|
||
as$Ld=>$q){$E="'grants[$s][".h(strtoupper($He))."]'";$Y=$q[strtoupper($He)];if($fb=="Server Admin"&&$Ld!=(isset($zc["*.*"])?"*.*":".*"))echo"<td> ";elseif(isset($_GET["grant"]))echo"<td><select name=$E><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
|
||
echo"<td align='center'><label class='block'><input type='checkbox' name=$E value='1'".($Y?" checked":"").($He=="All privileges"?" id='grants-$s-all'":($He=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$s-all');\""))."></label>";$s++;}}}echo"</table>\n",'<p>
|
||
<input type="submit" value="Save">
|
||
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$ad=0;foreach((array)$_POST["kill"]as$X){if(queries("KILL ".(+$X)))$ad++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$ad),$ad||!$_POST["kill"]);}page_header('Process list',$k);echo'
|
||
<form action="" method="post">
|
||
<table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">
|
||
';$s=-1;foreach(process_list()as$s=>$L){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th> ":"");foreach($L
|
||
as$y=>$X)echo"<th>$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L["Id"],0):"");foreach($L
|
||
as$y=>$X)echo"<td>".(($x=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($x=="pgsql"&&$y=="current_query"&&$X!="<IDLE>")||($x=="oracle"&&$y=="sql_text"&&$X!="")?"<code class='jush-$x'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X));echo"\n";}echo'</table>
|
||
<script type=\'text/javascript\'>tableCheck();</script>
|
||
<p>
|
||
';if(support("kill")){echo($s+1)."/".sprintf('%d in total',$e->result("SELECT @@max_connections")),"<p><input type='submit' value='".'Kill'."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
|
||
</form>
|
||
';}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$v=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Nd="";if($R["Oid"]){$Nd=($x=="sqlite"?"rowid":"oid");$v[]=array("type"=>"PRIMARY","columns"=>array($Nd));}parse_str($_COOKIE["adminer_import"],$ma);$df=array();$d=array();$Vf=null;foreach($m
|
||
as$y=>$l){$E=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$E!=""){$d[$y]=html_entity_decode(strip_tags($E),ENT_QUOTES);if(is_shortable($l))$Vf=$b->selectLengthProcess();}$df+=$l["privileges"];}list($N,$r)=$b->selectColumnsProcess($d,$v);$Tc=count($r)<count($N);$Z=$b->selectSearchProcess($m,$v);$be=$b->selectOrderProcess($m,$v);$z=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Nd?", $Nd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$_c=($r&&$Tc?"\nGROUP BY ".implode(", ",$r):"").($be?"\nORDER BY ".implode(", ",$be):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$tg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($tg,$m);$K=$j->select($a,$N,$Z,$N);if($K)echo
|
||
reset($K->fetch_row());}exit;}if($_POST&&!$k){$Lg=$Z;if(!$_POST["all"]&&is_array($_POST["check"]))$Lg[]="((".implode(") OR (",array_map('where_check',$_POST["check"]))."))";$Lg=($Lg?"\nWHERE ".implode(" AND ",$Lg):"");$Ee=$vg=null;foreach($v
|
||
as$u){if($u["type"]=="PRIMARY"){$Ee=array_flip($u["columns"]);$vg=($N?$Ee:array());break;}}foreach((array)$vg
|
||
as$y=>$X){if(in_array(idf_escape($y),$N))unset($vg[$y]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$vg===array())$I="SELECT $wc$Lg$_c";else{$rg=array();foreach($_POST["check"]as$X)$rg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$_c,1).")";$I=implode(" UNION ALL ",$rg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d
|
||
as$E=>$X){$X=process_input($m[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($E)]=($X!==false?$X:idf_escape($E));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($vg===array()&&is_array($_POST["check"]))||$Tc){$J=($_POST["delete"]?$j->delete($a,$Lg):($_POST["clone"]?queries("INSERT $I$Lg"):$j->update($a,$P,$Lg)));$na=$e->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Kg="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Kg,1):($_POST["clone"]?queries("INSERT".limit1($I,$Kg)):$j->update($a,$P,$Kg)));if(!$J)break;$na+=$e->affected_rows;}}}$C=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$ed=last_id();if($ed)$C=sprintf('Item%s has been inserted.'," $ed");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$C,$J);}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$na=0;foreach($_POST["val"]as$tg=>$L){$P=array();foreach($L
|
||
as$y=>$X){$y=bracket_escape($y,1);$P[idf_escape($y)]=(preg_match('~char|text~',$m[$y]["type"])||$X!=""?$b->processInput($m[$y],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($tg,$m),!($Tc||$vg===array())," ");if(!$J)break;$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}}elseif(!is_string($lc=get_file("csv_file",true)))$k=upload_error($lc);elseif(!preg_match('~~u',$lc))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Wa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$lc,$qd);$na=count($qd[0]);$j->begin();$pf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($qd[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$pf]*)$pf~",$X.$pf,$rd);if(!$y&&!array_diff($rd[1],$Wa)){$Wa=$rd[1];$na--;}else{$P=array();foreach($rd[1]as$s=>$Sa)$P[idf_escape($Wa[$s])]=($Sa==""&&$m[$Wa[$s]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Sa))));$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$Ee));if($J)$j->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Kf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $Kf",$k);$P=null;if(isset($df["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$P);if(!$d&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$v);$b->selectOrderPrint($be,$d,$v);$b->selectLimitPrint($z);$b->selectLengthPrint($Vf);$b->selectActionPrint($v);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$uc=$e->result(count_rows($a,$Z,$Tc,$r));$F=floor(max(0,$uc-1)/$z);}$mf=$N;if(!$mf){$mf[]="*";if($Nd)$mf[]=$Nd;}$gb=convert_fields($d,$m,$N);if($gb)$mf[]=substr($gb,2);$J=$j->select($a,$mf,$Z,$r,$be,$z,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($x=="mssql"&&$F)$J->seek($z*$F);$Ob=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$x=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$z&&$r&&$Tc&&$x=="sql")$uc=$e->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$Ba=$b->backwardKeys($a,$Kf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$r&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Fd=array();$yc=array();reset($N);$Qe=1;foreach($M[0]as$y=>$X){if($y!=$Nd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$y];$E=($l?$b->fieldName($l,$Qe):($X["fun"]?"*":$y));if($E!=""){$Qe++;$Fd[$y]=$E;$c=idf_escape($y);$Ic=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$vb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Ic.($be[0]==$c||$be[0]==$y||(!$be&&$Tc&&$r[0]==$c)?$vb:'')).'">';echo
|
||
apply_sql_function($X["fun"],$E)."</a>";echo"<span class='column hidden'>","<a href='".h($Ic.$vb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($y)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$yc[$y]=$X["fun"];next($N);}}$kd=array();if($_GET["modify"]){foreach($M
|
||
as$L){foreach($L
|
||
as$y=>$X)$kd[$y]=max($kd[$y],min(40,strlen(utf8_decode($X))));}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($z%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$D=>$L){$sg=unique_array($M[$D],$v);if(!$sg){$sg=array();foreach($M[$D]as$y=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$y))$sg[$y]=$X;}}$tg="";foreach($sg
|
||
as$y=>$X){if(($x=="sql"||$x=="pgsql")&&strlen($X)>64){$y="MD5(".(strpos($y,'(')?$y:idf_escape($y)).")";$X=md5($X);}$tg.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X):"null%5B%5D=".urlencode($y));}echo"<tr".odd().">".(!$r&&$N?"":"<td>".checkbox("check[]",substr($tg,1),in_array(substr($tg,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Tc||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$tg)."'>".'edit'."</a>"));foreach($L
|
||
as$y=>$X){if(isset($Fd[$y])){$l=$m[$y];if($X!=""&&(!isset($Ob[$y])||$Ob[$y]!=""))$Ob[$y]=(is_mail($X)?$Fd[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$tg;if(!$_&&$X!==null){foreach((array)$o[$y]as$n){if(count($o[$y])==1||end($n["source"])==$y){$_="";foreach($n["source"]as$s=>$vf)$_.=where_link($s,$n["target"][$s],$M[$D][$vf]);$_=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$_;if(count($n["source"])==1)break;}}}if($y=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$sg))$_.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($sg
|
||
as$Xc=>$W)$_.=where_link($s++,$Xc,$W);}$X=select_value($X,$_,$l,$Vf);$t=h("val[$tg][".bracket_escape($y)."]");$Y=$_POST["val"][$tg][bracket_escape($y)];$Kb=!is_array($L[$y])&&is_utf8($X)&&$M[$D][$y]==$L[$y]&&!$yc[$y];$Uf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Kb)||$Y!==null){$Bc=h($Y!==null?$Y:$L[$y]);echo"<td>".($Uf?"<textarea name='$t' cols='30' rows='".(substr_count($L[$y],"\n")+1)."'>$Bc</textarea>":"<input name='$t' value='$Bc' size='$kd[$y]'>");}else{$pd=strpos($X,"<i>...</i>");echo"<td id='$t' onclick=\"selectClick(this, event, ".($pd?2:($Uf?1:0)).($Kb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba)echo"<td>";$b->backwardKeysPrint($Ba,$M[$D]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$Zb=true;if($_GET["page"]!="last"){if(!+$z)$uc=count($M);elseif($x!="sql"||!$Tc){$uc=($Tc?false:found_rows($R,$Z));if($uc<max(1e4,2*($F+1)*$z))$uc=reset(slow_query(count_rows($a,$Z,$Tc,$r)));else$Zb=false;}}if(+$z&&($uc===false||$uc>$z||$F)){echo"<p class='pages'>";$td=($uc===false?$F+(count($M)>=$z?2:1):floor(($uc-1)/$z));if($x!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($s=max(1,$F-4);$s<min($td,$F+5);$s++)echo
|
||
pagination($s,$F);if($td>0){echo($F+5<$td?" ...":""),($Zb&&$uc!==false?pagination($td,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$td'>".'last'."</a>");}echo(($uc===false?count($M)+1:$uc-$F*$z)>$z?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$z).', \''.'Loading'.'...\');">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($td>$F?pagination($F+1,$F).($td>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($uc!==false?"(".($Zb?"":"~ ").lang(array('%d row','%d rows'),$uc).") ":"");$Ab=($Zb?"":"~ ").$uc;echo
|
||
checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Ab' : checked); selectCount('selected2', this.checked || !checked ? '$Ab' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
|
||
<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
|
||
</div></fieldset>
|
||
<fieldset><legend>Selected <span id="selected"></span></legend><div>
|
||
<input type="submit" name="edit" value="Edit">
|
||
<input type="submit" name="clone" value="Clone">
|
||
<input type="submit" name="delete" value="Delete"',confirm(),'>
|
||
</div></fieldset>
|
||
';}$sc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($sc['sql']);break;}}if($sc){print_fieldset("export",'Export'." <span id='selected2'></span>");$ke=$b->dumpOutput();echo($ke?html_select("output",$ke,$ma["output"])." ":""),html_select("format",$sc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$r&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Ob,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$zf=isset($_GET["status"]);page_header($zf?'Status':'Variables');$Eg=($zf?show_status():show_variables());if(!$Eg)echo"<p class='message'>".'No rows.'."\n";else{echo"<table cellspacing='0'>\n";foreach($Eg
|
||
as$y=>$X){echo"<tr>","<th><code class='jush-".$x.($zf?"status":"set")."'>".h($y)."</code>","<td>".nbsp($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Hf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$E=>$R){$t=js_escape($E);json_row("Comment-$t",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$y)json_row("$y-$t",nbsp($R[$y]));foreach($Hf+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($R[$y]!=""){$X=number_format($R[$y],0,'.',',');json_row("$y-$t",($y=="Rows"&&$X&&$R["Engine"]==($xf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Hf[$y]))$Hf[$y]+=($R["Engine"]!="InnoDB"||$y!="Data_free"?$R[$y]:0);}elseif(array_key_exists($y,$R))json_row("$y-$t");}}}foreach($Hf
|
||
as$y=>$X)json_row("sum-$y",number_format($X,0,'.',','));json_row("");}elseif($_GET["script"]=="kill")$e->query("KILL ".(+$_POST["kill"]));else{foreach(count_tables($b->databases())as$i=>$X)json_row("tables-".js_escape($i),$X);json_row("");}exit;}else{$Pf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Pf&&!$k&&!$_POST["search"]){$J=true;$C="";if($x=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$C='Tables have been truncated.';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$C='Tables have been moved.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$C='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$C='Tables have been dropped.';}elseif($x!="sql"){$J=($x=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$C='Tables have been optimized.';}elseif(!$_POST["tables"])$C='No tables.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$C.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$C,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Of=tables_list();if(!$Of)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">','<th>'.'Table','<td>'.'Engine','<td>'.'Collation','<td>'.'Data Length','<td>'.'Index Length','<td>'.'Data Free','<td>'.'Auto Increment','<td>'.'Rows',(support("comment")?'<td>'.'Comment':''),"</thead>\n";$S=0;foreach($Of
|
||
as$E=>$U){$Gg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Gg?"views[]":"tables[]"),$E,in_array($E,$Pf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($E).'" title="'.'Show structure'.'">'.h($E).'</a>':h($E));if($Gg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($E).'" title="'.'Alter view'.'">'.'View'.'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($E).'" title="'.'Select data'.'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$y=>$_){$t=" id='$y-".h($E)."'";echo($_?"<td align='right'>".(support("table")||$y=="Rows"||(support("indexes")&&$y!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($E)."'$t title='$_[1]'>?</a>":"<span$t>?</span>"):"<td id='$y-".h($E)."'> ");}$S++;}echo(support("comment")?"<td id='Comment-".h($E)."'> ":"");}echo"<tr><td> <th>".sprintf('%d in total',count($Of)),"<td>".nbsp($x=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"<td align='right' id='sum-$y'> ";echo"</table>\n";if(!information_schema(DB)){$Cg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$Yd="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($x=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($x=="sqlite"?$Cg:($x=="pgsql"?$Cg.$Yd:($x=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$Yd."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($x=="sqlite"?"'DELETE'":"'TRUNCATE".($x=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$x!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$hf=routines();if($hf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td> </thead>\n";odd('');foreach($hf
|
||
as$L){echo'<tr'.odd().'>','<th><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["ROUTINE_NAME"]).'">'.h($L["ROUTINE_NAME"]).'</a>','<td>'.h($L["ROUTINE_TYPE"]),'<td>'.h($L["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["ROUTINE_NAME"]).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$M=get_rows("SHOW EVENTS");if($M){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($M
|
||
as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Xb=$e->result("SELECT @@event_scheduler");if($Xb&&$Xb!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Xb)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Of)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer();
|