· 7 years ago · Sep 07, 2018, 09:46 PM
1<?php
2/** Adminer Editor - Compact database editor
3* @link https://www.adminer.org/
4* @author Jakub Vrana, https://www.vrana.cz/
5* @copyright 2009 Jakub Vrana
6* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
7* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
8* @version 4.6.3
9*/error_reporting(6135);$mc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($mc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$_g=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($_g)$$X=$_g;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
10connection(){global$h;return$h;}function
11adminer(){global$b;return$b;}function
12version(){global$ca;return$ca;}function
13idf_unescape($u){$ud=substr($u,-1);return
14str_replace($ud.$ud,$ud,substr($u,1,-1));}function
15escape_string($X){return
16substr(q($X),1,-1);}function
17number($X){return
18preg_replace('~[^0-9]+~','',$X);}function
19number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
20remove_slashes($Ie,$mc=false){if(get_magic_quotes_gpc()){while(list($y,$X)=each($Ie)){foreach($X
21as$ld=>$W){unset($Ie[$y][$ld]);if(is_array($W)){$Ie[$y][stripslashes($ld)]=$W;$Ie[]=&$Ie[$y][stripslashes($ld)];}else$Ie[$y][stripslashes($ld)]=($mc?$W:stripslashes($W));}}}}function
22bracket_escape($u,$Ga=false){static$lg=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
23strtr($u,($Ga?array_flip($lg):$lg));}function
24min_version($Lg,$Fd="",$i=null){global$h;if(!$i)$i=$h;$tf=$i->server_info;if($Fd&&preg_match('~([\d.]+)-MariaDB~',$tf,$A)){$tf=$A[1];$Lg=$Fd;}return(version_compare($tf,$Lg)>=0);}function
25charset($h){return(min_version("5.5.3",0,$h)?"utf8mb4":"utf8");}function
26script($Bf,$kg="\n"){return"<script".nonce().">$Bf</script>$kg";}function
27script_src($Eg){return"<script src='".h($Eg)."'".nonce()."></script>\n";}function
28nonce(){return' nonce="'.get_nonce().'"';}function
29target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
30h($Q){return
31str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
32nl_br($Q){return
33str_replace("\n","<br>",$Q);}function
34checkbox($B,$Y,$Va,$rd="",$ge="",$d="",$sd=""){$J="<input type='checkbox' name='$B' value='".h($Y)."'".($Va?" checked":"").($sd?" aria-labelledby='$sd'":"").">".($ge?script("qsl('input').onclick = function () { $ge };",""):"");return($rd!=""||$d?"<label".($d?" class='$d'":"").">$J".h($rd)."</label>":$J);}function
35optionlist($C,$nf=null,$Hg=false){$J="";foreach($C
36as$ld=>$W){$le=array($ld=>$W);if(is_array($W)){$J.='<optgroup label="'.h($ld).'">';$le=$W;}foreach($le
37as$y=>$X)$J.='<option'.($Hg||is_string($y)?' value="'.h($y).'"':'').(($Hg||is_string($y)?(string)$y:$X)===$nf?' selected':'').'>'.h($X);if(is_array($W))$J.='</optgroup>';}return$J;}function
38html_select($B,$C,$Y="",$fe=true,$sd=""){if($fe)return"<select name='".h($B)."'".($sd?" aria-labelledby='$sd'":"").">".optionlist($C,$Y)."</select>".(is_string($fe)?script("qsl('select').onchange = function () { $fe };",""):"");$J="";foreach($C
39as$y=>$X)$J.="<label><input type='radio' name='".h($B)."' value='".h($y)."'".($y==$Y?" checked":"").">".h($X)."</label>";return$J;}function
40select_input($Ca,$C,$Y="",$fe="",$_e=""){$Uf=($C?"select":"input");return"<$Uf$Ca".($C?"><option value=''>$_e".optionlist($C,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$_e'>").($fe?script("qsl('$Uf').onchange = $fe;",""):"");}function
41confirm($Nd="",$of="qsl('input')"){return
42script("$of.onclick = function () { return confirm('".($Nd?js_escape($Nd):'Are you sure?')."'); };","");}function
43print_fieldset($t,$wd,$Og=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$wd</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($Og?"":" class='hidden'").">\n";}function
44bold($Oa,$d=""){return($Oa?" class='active $d'":($d?" class='$d'":""));}function
45odd($J=' class="odd"'){static$s=0;if(!$J)$s=-1;return($s++%2?$J:'');}function
46js_escape($Q){return
47addcslashes($Q,"\r\n'\\/");}function
48json_row($y,$X=null){static$nc=true;if($nc)echo"{";if($y!=""){echo($nc?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$nc=false;}else{echo"\n}\n";$nc=true;}}function
49ini_bool($cd){$X=ini_get($cd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
50sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
51set_password($Kg,$O,$V,$G){$_SESSION["pwds"][$Kg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function
52get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
53q($Q){global$h;return$h->quote($Q);}function
54get_vals($H,$f=0){global$h;$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$f];}return$J;}function
55get_key_vals($H,$i=null,$wf=true){global$h;if(!is_object($i))$i=$h;$J=array();$I=$i->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($wf)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
56get_rows($H,$i=null,$n="<p class='error'>"){global$h;$ib=(is_object($i)?$i:$h);$J=array();$I=$ib->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!is_object($i)&&$n&&defined("PAGE_HEADER"))echo$n.error()."\n";return$J;}function
57unique_array($K,$w){foreach($w
58as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$J=array();foreach($v["columns"]as$y){if(!isset($K[$y]))continue
592;$J[$y]=$K[$y];}return$J;}}}function
60escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
61idf_escape($y);}function
62where($Z,$p=array()){global$h,$x;$J=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,1);$f=escape_key($y);$J[]=$f.($x=="sql"&&preg_match('~^[0-9]*\.[0-9]*$~',$X)?" LIKE ".q(addcslashes($X,"%_\\")):($x=="mssql"?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($p[$y],q($X))));if($x=="sql"&&preg_match('~char|text~',$p[$y]["type"])&&preg_match("~[^ -@]~",$X))$J[]="$f = ".q($X)." COLLATE ".charset($h)."_bin";}foreach((array)$Z["null"]as$y)$J[]=escape_key($y)." IS NULL";return
63implode(" AND ",$J);}function
64where_check($X,$p=array()){parse_str($X,$Ta);remove_slashes(array(&$Ta));return
65where($Ta,$p);}function
66where_link($s,$f,$Y,$ie="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($f)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$ie:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
67convert_fields($g,$p,$M=array()){$J="";foreach($g
68as$y=>$X){if($M&&!in_array(idf_escape($y),$M))continue;$za=convert_field($p[$y]);if($za)$J.=", $za AS ".idf_escape($y);}return$J;}function
69cookie($B,$Y,$zd=2592000){global$aa;return
70header("Set-Cookie: $B=".urlencode($Y).($zd?"; expires=".gmdate("D, d M Y H:i:s",time()+$zd)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($aa?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
71restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
72stop_session($sc=false){if(!ini_bool("session.use_cookies")||($sc&&@ini_set("session.use_cookies",false)!==false))session_write_close();}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function
73set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function
74auth_url($Kg,$O,$V,$l=null){global$Fb;preg_match('~([^?]*)\??(.*)~',remove_from_uri(implode("|",array_keys($Fb))."|username|".($l!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($Kg!="server"||$O!=""?urlencode($Kg)."=".urlencode($O)."&":"")."username=".urlencode($V).($l!=""?"&db=".urlencode($l):"").($A[2]?"&$A[2]":"");}function
75is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
76redirect($Ad,$Nd=null){if($Nd!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Ad!==null?$Ad:$_SERVER["REQUEST_URI"]))][]=$Nd;}if($Ad!==null){if($Ad=="")$Ad=".";header("Location: $Ad");exit;}}function
77query_redirect($H,$Ad,$Nd,$Te=true,$Yb=true,$fc=false,$ag=""){global$h,$n,$b;if($Yb){$Hf=microtime(true);$fc=!$h->query($H);$ag=format_time($Hf);}$Ef="";if($H)$Ef=$b->messageQuery($H,$ag,$fc);if($fc){$n=error().$Ef.script("messagesPrint();");return
78false;}if($Te)redirect($Ad,$Nd.$Ef);return
79true;}function
80queries($H){global$h;static$Me=array();static$Hf;if(!$Hf)$Hf=microtime(true);if($H===null)return
81array(implode("\n",$Me),format_time($Hf));$Me[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return$h->query($H);}function
82apply_queries($H,$T,$Vb='table'){foreach($T
83as$R){if(!queries("$H ".$Vb($R)))return
84false;}return
85true;}function
86queries_redirect($Ad,$Nd,$Te){list($Me,$ag)=queries(null);return
87query_redirect($Me,$Ad,$Nd,$Te,false,!$Te,$ag);}function
88format_time($Hf){return
89sprintf('%.3f s',max(0,microtime(true)-$Hf));}function
90remove_from_uri($se=""){return
91substr(preg_replace("~(?<=[?&])($se".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
92pagination($E,$sb){return" ".($E==$sb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
93get_file($y,$wb=false){$kc=$_FILES[$y];if(!$kc)return
94null;foreach($kc
95as$y=>$X)$kc[$y]=(array)$X;$J='';foreach($kc["error"]as$y=>$n){if($n)return$n;$B=$kc["name"][$y];$hg=$kc["tmp_name"][$y];$kb=file_get_contents($wb&&preg_match('~\.gz$~',$B)?"compress.zlib://$hg":$hg);if($wb){$Hf=substr($kb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Hf,$Ue))$kb=iconv("utf-16","utf-8",$kb);elseif($Hf=="\xEF\xBB\xBF")$kb=substr($kb,3);$J.=$kb."\n\n";}else$J.=$kb;}return$J;}function
96upload_error($n){$Kd=($n==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($n?'Unable to upload a file.'.($Kd?" ".sprintf('Maximum allowed file size is %sB.',$Kd):""):'File does not exist.');}function
97repeat_pattern($ye,$xd){return
98str_repeat("$ye{0,65535}",$xd/65535)."$ye{0,".($xd%65535)."}";}function
99is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
100shorten_utf8($Q,$xd=80,$Of=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$xd).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xd).")($)?)",$Q,$A);return
101h($A[1]).$Of.(isset($A[2])?"":"<i>...</i>");}function
102format_number($X){return
103strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
104friendly_url($X){return
105preg_replace('~[^a-z0-9_]~i','-',$X);}function
106hidden_fields($Ie,$Tc=array()){$J=false;while(list($y,$X)=each($Ie)){if(!in_array($y,$Tc)){if(is_array($X)){foreach($X
107as$ld=>$W)$Ie[$y."[$ld]"]=$W;}else{$J=true;echo'<input type="hidden" name="'.h($y).'" value="'.h($X).'">';}}}return$J;}function
108hidden_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
109table_status1($R,$gc=false){$J=table_status($R,$gc);return($J?$J:array("Name"=>$R));}function
110column_foreign_keys($R){global$b;$J=array();foreach($b->foreignKeys($R)as$wc){foreach($wc["source"]as$X)$J[$X][]=$wc;}return$J;}function
111enum_input($U,$Ca,$o,$Y,$Qb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$Hd);$J=($Qb!==null?"<label><input type='$U'$Ca value='$Qb'".((is_array($Y)?in_array($Qb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Hd[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Va=(is_int($Y)?$Y==$s+1:(is_array($Y)?in_array($s+1,$Y):$Y===$X));$J.=" <label><input type='$U'$Ca value='".($s+1)."'".($Va?' checked':'').'>'.h($b->editVal($X,$o)).'</label>';}return$J;}function
112input($o,$Y,$r){global$vg,$b,$x;$B=h(bracket_escape($o["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$xa=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$xa[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$xa);$r="json";}$Ze=($x=="mssql"&&$o["auto_increment"]);if($Ze&&!$_POST["save"])$r=null;$Bc=(isset($_GET["select"])||$Ze?array("orig"=>'original'):array())+$b->editFunctions($o);$Ca=" name='fields[$B]'";if($o["type"]=="enum")echo
113h($Bc[""])."<td>".$b->editInput($_GET["edit"],$o,$Ca,$Y);else{$Ic=(in_array($r,$Bc)||isset($Bc[$r]));echo(count($Bc)>1?"<select name='function[$B]'>".optionlist($Bc,$r===null||$Ic?$r:"")."</select>".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($Bc))).'<td>';$ed=$b->editInput($_GET["edit"],$o,$Ca,$Y);if($ed!="")echo$ed;elseif(preg_match('~bool~',$o["type"]))echo"<input type='hidden'$Ca value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$Ca value='1'>";elseif($o["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$o["length"],$Hd);foreach($Hd[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Va=(is_int($Y)?($Y>>$s)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$B][$s]' value='".(1<<$s)."'".($Va?' checked':'').">".h($b->editVal($X,$o)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$B'>";elseif(($Xf=preg_match('~text|lob~',$o["type"]))||preg_match("~\n~",$Y)){if($Xf&&$x!="sqlite")$Ca.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$Ca.=" cols='30' rows='$L'".($L==1?" style='height: 1.2em;'":"");}echo"<textarea$Ca>".h($Y).'</textarea>';}elseif($r=="json"||preg_match('~^jsonb?$~',$o["type"]))echo"<textarea$Ca cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$Md=(!preg_match('~int~',$o["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$o["length"],$A)?((preg_match("~binary~",$o["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$o["unsigned"]?1:0)):($vg[$o["type"]]?$vg[$o["type"]]+($o["unsigned"]?0:1):0));if($x=='sql'&&min_version(5.6)&&preg_match('~time~',$o["type"]))$Md+=7;echo"<input".((!$Ic||$r==="")&&preg_match('~(?<!o)int(?!er)~',$o["type"])&&!preg_match('~\[\]~',$o["full_type"])?" type='number'":"")." value='".h($Y)."'".($Md?" data-maxlength='$Md'":"").(preg_match('~char|binary~',$o["type"])&&$Md>20?" size='40'":"")."$Ca>";}echo$b->editHint($_GET["edit"],$o,$Y);$nc=0;foreach($Bc
114as$y=>$X){if($y===""||!$X)break;$nc++;}if($nc)echo
115script("mixin(qsl('td'), {onchange: partial(skipOriginal, $nc), oninput: function () { this.onchange(); }});");}}function
116process_input($o){global$b,$m;$u=bracket_escape($o["field"]);$r=$_POST["function"][$u];$Y=$_POST["fields"][$u];if($o["type"]=="enum"){if($Y==-1)return
117false;if($Y=="")return"NULL";return+$Y;}if($o["auto_increment"]&&$Y=="")return
118null;if($r=="orig")return($o["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($o["field"]):false);if($r=="NULL")return"NULL";if($o["type"]=="set")return
119array_sum((array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
120false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$o["type"])&&ini_bool("file_uploads")){$kc=get_file("fields-$u");if(!is_string($kc))return
121false;return$m->quoteBinary($kc);}return$b->processInput($o,$Y,$r);}function
122fields_from_edit(){global$m;$J=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){$B=bracket_escape($y,1);$J[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($y==$m->primary),);}return$J;}function
123search_tables(){global$b,$h;$_GET["where"][0]["val"]=$_POST["query"];$qf="<ul>\n";foreach(table_status('',true)as$R=>$S){$B=$b->tableName($S);if(isset($S["Engine"])&&$B!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=$h->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$Ge="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$B</a>";echo"$qf<li>".($I?$Ge:"<p class='error'>$Ge: ".error())."\n";$qf="";}}}echo($qf?"<p class='message'>".'No tables.':"</ul>")."\n";}function
124dump_headers($Rc,$Sd=false){global$b;$J=$b->dumpHeaders($Rc,$Sd);$pe=$_POST["output"];if($pe!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Rc).".$J".($pe!="file"&&!preg_match('~[^0-9a-z]~',$pe)?".$pe":""));session_write_close();ob_flush();flush();return$J;}function
125dump_csv($K){foreach($K
126as$y=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$K[$y]='"'.str_replace('"','""',$X).'"';}echo
127implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
128apply_sql_function($r,$f){return($r?($r=="unixepoch"?"DATETIME($f, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$f)"):$f);}function
129get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$q=@tempnam("","");if(!$q)return
130false;$J=dirname($q);unlink($q);}}return$J;}function
131file_open_lock($q){$_c=@fopen($q,"r+");if(!$_c){$_c=@fopen($q,"w");if(!$_c)return;chmod($q,0660);}flock($_c,LOCK_EX);return$_c;}function
132file_write_unlock($_c,$tb){rewind($_c);fwrite($_c,$tb);ftruncate($_c,strlen($tb));flock($_c,LOCK_UN);fclose($_c);}function
133password_file($nb){$q=get_temp_dir()."/adminer.key";$J=@file_get_contents($q);if($J||!$nb)return$J;$_c=@fopen($q,"w");if($_c){chmod($q,0660);$J=rand_string();fwrite($_c,$J);fclose($_c);}return$J;}function
134rand_string(){return
135md5(uniqid(mt_rand(),true));}function
136select_value($X,$_,$o,$Yf){global$b;if(is_array($X)){$J="";foreach($X
137as$ld=>$W)$J.="<tr>".($X!=array_values($X)?"<th>".h($ld):"")."<td>".select_value($W,$_,$o,$Yf);return"<table cellspacing='0'>$J</table>";}if(!$_)$_=$b->selectLink($X,$o);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=$b->editVal($X,$o);if($J!==null){if(!is_utf8($J))$J="\0";elseif($Yf!=""&&is_shortable($o))$J=shorten_utf8($J,max(0,+$Yf));else$J=h($J);}return$b->selectVal($J,$_,$o,$X);}function
138is_mail($Nb){$_a='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Eb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ye="$_a+(\\.$_a+)*@($Eb?\\.)+$Eb";return
139is_string($Nb)&&preg_match("(^$ye(,\\s*$ye)*\$)i",$Nb);}function
140is_url($Q){$Eb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
141preg_match("~^(https?)://($Eb?\\.)+$Eb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
142is_shortable($o){return
143preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$o["type"]);}function
144count_rows($R,$Z,$jd,$Cc){global$x;$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($jd&&($x=="sql"||count($Cc)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$Cc).")$H":"SELECT COUNT(*)".($jd?" FROM (SELECT 1$H GROUP BY ".implode(", ",$Cc).") x":$H));}function
145slow_query($H){global$b,$jg,$m;$l=$b->database();$bg=$b->queryTimeout();$zf=$m->slowQuery($H,$bg);if(!$zf&&support("kill")&&is_object($i=connect())&&($l==""||$i->select_db($l))){$qd=$i->result(connection_id());echo'<script',nonce(),'>
146var timeout = setTimeout(function () {
147 ajax(\'',js_escape(ME),'script=kill\', function () {
148 }, \'kill=',$qd,'&token=',$jg,'\');
149}, ',1000*$bg,');
150</script>
151';}else$i=null;ob_flush();flush();$J=@get_key_vals(($zf?$zf:$H),$i,false);if($i){echo
152script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
153get_token(){$Pe=rand(1,1e6);return($Pe^$_SESSION["token"]).":$Pe";}function
154verify_token(){list($jg,$Pe)=explode(":",$_POST["token"]);return($Pe^$_SESSION["token"])==$jg;}function
155lzw_decompress($La){$Cb=256;$Ma=8;$ab=array();$bf=0;$cf=0;for($s=0;$s<strlen($La);$s++){$bf=($bf<<8)+ord($La[$s]);$cf+=8;if($cf>=$Ma){$cf-=$Ma;$ab[]=$bf>>$cf;$bf&=(1<<$cf)-1;$Cb++;if($Cb>>$Ma)$Ma++;}}$Bb=range("\0","\xFF");$J="";foreach($ab
156as$s=>$Za){$Mb=$Bb[$Za];if(!isset($Mb))$Mb=$Xg.$Xg[0];$J.=$Mb;if($s)$Bb[]=$Xg.$Mb[0];$Xg=$Mb;}return$J;}function
157on_help($fb,$xf=0){return
158script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $fb, $xf) }, onmouseout: helpMouseout});","");}function
159edit_form($a,$p,$K,$Cg){global$b,$x,$jg,$n;$Sf=$b->tableName(table_status1($a,true));page_header(($Cg?'Edit':'Insert'),$n,array("select"=>array($a,$Sf)),$Sf);if($K===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
160';if(!$p)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0'>".script("qsl('table').onkeydown = editingKeydown;");foreach($p
161as$B=>$o){echo"<tr><th>".$b->fieldName($o);$xb=$_GET["set"][bracket_escape($B)];if($xb===null){$xb=$o["default"];if($o["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$xb,$Ue))$xb=$Ue[1];}$Y=($K!==null?($K[$B]!=""&&$x=="sql"&&preg_match("~enum|set~",$o["type"])?(is_array($K[$B])?array_sum($K[$B]):+$K[$B]):$K[$B]):(!$Cg&&$o["auto_increment"]?"":(isset($_GET["select"])?false:$xb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$o);$r=($_POST["save"]?(string)$_POST["function"][$B]:($Cg&&$o["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$o["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$r="now";}input($o,$Y,$r);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<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>\n";if($p){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])){echo"<input type='submit' name='insert' value='".($Cg?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($Cg?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."...', this); };"):"");}}echo($Cg?"<input type='submit' name='delete' value='".'Delete'."'>".confirm()."\n":($_POST||!$p?"":script("focus(qsa('td', qs('#form'))[1].firstChild);")));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"]),'">
162<input type="hidden" name="save" value="1">
163<input type="hidden" name="token" value="',$jg,'">
164</form>
165';}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");header("Cache-Control: immutable");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
166lzw_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
167lzw_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Èä·ã`Â8(áÕ3M¨ó\"Ç39é?EÂe=Ò¬ü~ù¾²ôÅîÓ¸7;ÉCÄÛÃE\rd!)Âa*¯5ajo\0ª#`Ê38¶\0ÊÃ]“eŒêˆÆ2¤ mk×øe]…ÃÂAZsÕStZ•Z!)BR¨G+ÃŽ#Jv2(ã öîc…4<¸#sB¯0éú‚6YL\r²=£…¿[×73Æð<Ô:£Šbxâ€ÃŸJ= m_ ¾ÃÃ…fªlÙ×t‹åIªƒHÚ3Âx*€›á6`t6¾Ã%ÂUÔLòeÙ‚˜<´\0ÉAQ<P<:Å¡#u/¤:T\\> Ë-…xJˆÃÂQH\nj¡L+jÃzðó°7£•«`Ãð޳\nkÆ’Æ’'“NÓvX>îC-TË©¶œ¸Â†4*Lâ€%Cj>7ߨŠÞ¨Âõ™`ù®œ;yØûÆqÃrÊ3#¨Ù} :#nÃ\rã½^Ã…=CÃ¥AܸÃÆŽÂs&8Ž£K&»ô*0ÑÒtÃSÉÔÅ=¾[×ó:Â\\]ÃEÃÅ’Â/Oà >^]ØÃ¸Â<ÂèØ÷gZÔV†éqº³ŠŒù ñËx\\ÂÂè•ö¹ßÞº´„\"J \\îˆû##á½D†Îx6êœÚ5xÊÜ€¸¶†¨\rHøl ‹ñø°bú r¼7áÔ6†à öj|Éô¢Û–*ôFAquvyO’½WeM‹Ö÷‰D.Fáö:RÃ\$-¡Þ¶µT!ìDS`°8DËœ~Ÿà A`(Çemƒ¦òý¢T@O1@º†X¦â“\nLpð–‘PäþÃÓÂm«yf¸£) ‰«ÂˆÚGSEI‰ÂÂ¥xC(s(aÂ?\$`tE¨n„ñ±Â,÷Õ \$a‹U>,èÃ’\$ZñkDm,G\0å \\ÂÂiú£%ʹ¢ n¬¥¥±·ìÃÜgÂÉ„b y`’òÔ†ËWì· ä——¡_CÀÄT\niÂÃH%ÕdaÀÖiÃ7ÃAt°,îJ†X4nˆ‘â€Ë†0où»9g\nzm‹M%`É'Iü€ÂÞ-èò©Ã7:pð3pÇÂQ—rEDš¤×ì à b2]…PF ý¥É>eÉú†3j\n€ß°t!Ã?4fÂtK;£Ê\rΞøÂ!à oÅ uÂ?ÓúÂPhžÂÃ’0uIC}'~ÅÈ2‡vþQ¨ÒÎ8)ìÀ†7ìDIù=§éy&•¢eaà s*hÉ•jlAÄ(ê›\"Ä\\Óêm^i‘®M)‚°^Æ’ |~Õl¨¶#!YÃf81RSŽ Ãµ!ࠏ62PÆC‘ôl&Ãûäxd!Å’| è9°`Ö_OYÃ=ðÑGà [EÉ-eLñCvT¬ )Ä@Âj-5¨¶œpSg».’G=Ââ€ÃZEÒö\$\0¢Ñ†KjÃU§µ\$ ‚ÀG'IäP©Â~ûÚÂð ;ÂÚhNÛŽG%*áRjñ‰X[Å“XPf^ñ|æèT!µ*NððƸ\rU¢Œ^q1V!ÃùUz,ÃI|7°7†r,¾¡¬7â€Ã¨ÃžÃ„¾BÖùÈ;é+÷¨©ß•ˆAÚpÃνÇ^€¡~ؼW!3PÅ I8]“½vÓJ’Ãfñq£|,Âêè9Wøf`\0áqâ€ZÃŽp}[Jdhy•NêµY|ï™Cy,ª<s AÂ{eÃQÔŸòhd„ÂìLJ ÃŒB4;ks&ÂÆ’¬ñÄÃÇaÞøÅûéâ€Ã˜;˹}çSŒËJ…ïÃ)÷=dìÔ|ÎÌ®NdÒ·Iç*8µÂ¢dlÃÑ“ÂE6~èÂF¦•ƱX`ËœM\rÊž/Ô%B/VÀIÃ¥N&;êùã0Ã…UC cT&.E+ç•óƒÀ°Š›éÜ@²0`;Åà ËGè5ä±ÃÞ¦j'™›˜öà ÆÂ»Yâ+¶‰QZ-iÂôœyvƒ–Iâ„¢5Úó,O|ÂPÖ]FÛÂáòÓùñ\0ÂüË2â„¢49♢Ân/Ç]س&¦ªI^®=ÓlŽ©qfIÆÊ= Ö]x1GRü&¦e·7©º)Šó'ªÆ:B²B±>a¦z‡-¥‰Ñ2.¯ö¬¸bzø´Ü#„¥¼ñ“ÄUá“ÂÆL7-¼w¿tç3ɵñ’ôe§ŠöDä§\$²#÷±¤jÕ@ÕG—8ÃŽ “7púÜðR YCÃÃ~ÃÈ:À@ÆÖEU‰JÜÙ;67v]–J'ØÜäq1óéElôQÆi¾ÃÃÎñ„/Ãÿ{k<Âà Ö¡MÜpoì}ÃèrâqŒØžìcÕä™_mÃ’wï¾Â^ºu–´ÅùÚüù½«Â¶Çlnþâ€â„¢ Žý_‘~·Gønèæ‹Ö{kÜžßwãÞù\rj~—K“\0ÃÃü¦¾-îúâB€;ψ ݚb`}ÃCC,Ââ€Â¹-¶‹LÂÃ8\r,‡¿klýÇŒòn}-5ÂÅ ÂÂ3u›gm¸òŸÀ*ß/äôÊùÃî×Âô`Ë`½#xä+B?#öÛÂN;OR\r¨èø¯\$÷ÎúöÉkòÿÃâ„¢\01\0kó\0Ã8ôÃaèé/t úû#(&ÃŒl&Âù¥p¸Ãì‚…þâÎiÂMÂ{¯zp*Ö-g¨Âèv‰Å6Å“kë åˆðœd¬Ø‹¬Ü×ÄA`");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
168lzw_decompress("f:›ŒgCI¼Ü\n8ρ3)°Ë7œ…†81ÃÊx:\nOg#)Ãêr7\n\"†è´`ø|2ÃŒgSi–H)N¦S‘ä§\r‡Â\"0¹Ä@ä)Ÿ`(\$s6O!ÓèœV/=ÂÅ’' T4æ=„˜iSËœÂ6IO“ÊerÙxî9Â*ź°ºn3Â\rщvÆ’CÂÃ`õšÃ2G%¨YãæáþŸ1â„¢Ãfô¹ÑÈ‚l¤Ã1‘\ny£*pC\r\$ÃŒnÂTª•3=\\‚r9O\"ã Àà l<Å \rÇ\\€³I,—s\nA¤Æeh+Mâ‹!Âq0™ýf»`(¹N{c–—+wËñÃY£–pÙ§3Å 3ú˜+I¦Ôj¹ºýŽÃk·²n¸q܃Âzi#^rØÀº´‹3èâÂÃ[žèºo;®Ë(‹Ã6Â#ÀÒÂŽÂ\":cz>ߣC2vÑCXÊ<ÂP˜Ãc*5\nº¨è·/üP97ñ|F»°c0ƒ³¨°ä!ÂÆ’æ…!¨œƒ!‰Ã\nZ%Ãć#CHÃŒ!¨Òr8ç\$¥¡ì¯,ÈRÜâ€2…Èã^0·á@¤2Ή(ð88P/‚à ¸Ã„á\\Ã\$La\\Ã¥;cà H„áHX„•\nʃtœ‡á8A<ÃsZô*Æ’;IÃÃŽ3¡Ã@Ã’2<Š¢¬!A8G<Ôj¿-KÆ’({*\r’Åa1‡¡èN4Tc\"\\Ã’!=1^•ðÃM9O³:†;jÅ’Å \rãXÃ’Ã L#HÃŽ7Æ’#Tê/-´‹£pÊ;ÂB ‹\n¿2!Æ’Â¥Ãt]apÎŽÃî\0RÛCËv¬MÂI,\rö§\0Hv°Ã?kTÞ4£Š¼óuÙ±Ø;&’Âò+&ƒ›ð•µ\rÈXÂÂÂbu4ái88Â2Bä/⃖4ƒ¡€N8AÜA)52ÃúøËåÎ2ˆ¨sã8ç“5¤¥¡pçWC@è:Ëœt…ã¾´ÖeÂÅ¡h\"#8_˜æcp^ãˆâI]OHþÔ:zdÈ3g£(„ˆ×Ök¸î“\\6´ÂËœÂ2ÚÚ–÷¹iÃä7²˜Ã]\rÃxO¾nºpè<¡ÃpïQ®UÃn‹ò|@çËó#G3ðÃ8bA¨Ê6ô2Ÿ67%#¸\\8\rýš2Èc\ræÃŸk®‚.(’ Ž’-—J;î›Ñó ÈéLãà ƒ¼žWâøã§“ѥɤâ–÷·žnû Ò§»æýMÎÀ9ZÃÂs]êz®¯¬ëy^[¯ì4-ºU\0ta ¶62^•˜.`¤‚â.Cßjÿ[á„ % Q\0`dëM8¿¦¼ËÛ\$O0`4²êÎ\n\0a\rA„<†@Ÿƒ›Š\r!À:ØBAŸ9Ù?h>¤Çº š~ÌŒ—6ȈhÜ=Ë-Å“A7XäÀÖ‡\\¼\r‘Q<èš§q’'!XΓ2úT °!Å’D\r§Ò,K´\"ç%ËœHÖqR\r„Ì ¢îC =ŽÃ‚ æäŽÈ<câ€\n#<€5ÂMø êEÆ’Å“yŒ¡â€â€œâ€¡Â°Ãºo\"°cJKL2ù&£ØeRœÀWÃAÃŽÂTwÊÑ‘;Ã¥Jˆâá\\`)5¦ÔÞœBòqhT3§à R ¸'\r+\":‚8¤ÀtV“Aß+]΃S72Èð¤YˆFƒ¼Z85à c,æô¶Jñ/+S¸nBpoWÃ…dÂÖ\"§Qû¦aÂZKpèÞ§y\$›’ÃÃõ4ÂI¢@L'@‰xCÑdfé~}Q*â€Ã’ºAµà Q’\"BÛ*2\0Å“.ÑÕkF©\"\râ€â€˜Â° ØoÆ’\\ëԢ™ÚVijY¦¥MÊôO‚\$Šˆ2Ã’ThH´¤ª0XHª5~kL©‰…T*:~P©â€2¦tÒÂà B\0ýY…ÀÈÜŸj†vDÃs.Ã9“s¸¹Ì¤ÆPÂ¥*xžª•b¤o“õÿ¢PÜ\$¹W/“*ÃÉz';¦Ñ\$ž*ùÛÙédâmÃÃÄ'b\rÑn%ÅÄ47Wì-Ÿ’à öÕ ¶K´µ³@<Ã…gæÃ¨bBÑÿ[7§\\’|€VdR£¿6leQÃŒ`(Ô¢,Ñd˜å¹8\rÂ¥]S:?Å¡1¹`îÃYÀ`ÜAåÒ“%¾ÒZkQâ€sMÅ¡*Ñ×È{`¯J*Âw¶×ÓŠ>îÕ¾ôDÃû›>ïeÓ¾·\"Ã¥t+poüü–ö¶ÅW\$ãÂÜÃûQáâ€@ȃ3t`¶†˜¶-k7gæä ]ÓÊlî´EÀ¹^dW>nvÀtölzPH¨—FvWõV\nÕh;¢â€BáD°Ø³/ö:J³Ã\\Ê+ %¥ñ–÷îá]úúÑŠ½£wa×븇ñ=¼X®ò†›Nû/Å’Ãw“Jñ_[át)5ô½ùQR2lž-:›Y9Ó&l R;¯u#S ý ht kÃE!lØúÔ>SH€ÀX<,ðÂO¸YyÃÆ’%L–]\0ž ‚Ó^ßdwÃ3Ã,Sc¡QtËœe=‘M:4üÿÔ2]â€ÃªPîTÃsŽÕn:©ºu>î/Ÿdœ¼ Þôa‹'%è“ÃÃÃqÒ¨&@ÖÂË•ÃH·Gâ@w8pñÀœÃΤZ\n«Ø{¶[²t2„Ãà a–´> ´wÅ’Jî^+u~ÃoøåµXkÕ¦BZk˱ÃX=ÈË0>ªt¯¢lÃ…Æ’)Wb€Ü¦øõ'ÃAÃ’,áÃm†Y—,‹A’ÃñŠeÂï#V¹ñ+Ân1I©ÎÊÃEÂ+[âüïØ[¯û-RÅ¡mK9ǹ~Âã‹÷L€-3O˜ÊÃ`_0súÂËL;›°¸Âà ]Â6õ¥|¤‡hÿVÇT:Š‚ÞžerMÎÉaõ\$~e‘9Â¥>ááãˆÃÃâ€Ã\rÕÊ\\â€ÃôJ1Ú¼ÃÃ%¢=0{ö ŸÌç|Þ—tÚ¼“=¾Âó€Qç|\0?õã[g@u?ÉÂ|Äö4Ã*‚µc-7Ñ4\ri'^ÙÑå¿n;œú»ù‰Š¦(»á¦Ã{KÇhñnfµïÚZÃÂ}l³èêçÅ]\räâ€Ã¾pJ>Ñ,gp{Ÿ;ÃŽ\0µ½u)ÚÕsèN‘'ýÊçãHÙøC9M5ðê*øÂ`êk’㬎 öþ©AhY©*–©ªŠjJ˜Ç…PN+^ D°*¸«Ã€îÀDªÚPäì€LQ`O&–£\0Ø}Â\$Â…Â6ÂZn>²Ë0Û ÜeÀÂ\n€š …trp!ÂhV¤'PyÃ^‰*|r%|\nr\r#ް„@w®»ÃÃT.Rvâ8ìjâ\nmB¥ïÄp¨à úY0¨Ã¢ëm\0è@P\r8ÀY\rGØÃd’ ÀQGÂP%EÃŽ/@]\rÀÊÀ{\0ÃŒQÂÔà ÀbR M\rFÙç|¢è%0SDr§ÂÈ žf/–à ÂÜ\":Ümo²ÞƒÂ%ß@æ3H¦x\0Âl\0ÌÅÚ ‘€W ßåÚ\nç8\r\0}®@žDÉñ`#±t‚ä.€jEoDrÇ¢lbÀØÙåtìf4¸0€À¤%Ñ0’åÒkªz2\rñŸ îW@Â’ç%\r\n~1€‚X ¤ÙñºD2!°ôO‚*‡¤²{0<E¦‹k*më0ıþÖÎ|\r\næ^iÂÀ ¨³!.§r ò §ˆüÂÌöèîfñòĬÀù+:ŽïžÅ‹JúB5\$LÜèòP½ìÒLÄ‚«à ¶ Z@ºìêÌ`^PðL%5%jp‘HâWÀðonøökA#&Âö’8Ùò<K6ÃŒ/–ù²ŽÌ¢ÌÃäúòXWe+&›%ÄѲc&rjÃñ'%Ã’x‚²°¾ÅnKÂ¥2û2Ö¶‹là ê*á.ürŽÃ΢‰‚‚*Ã\r+jpÂBgê{ ²žÂ0ë%1(ªŠîZ‹`Q#±ÔŽân*hò òv¢BâÃðÀ\\F\n‚WÃ…r f\$ó93äG4%d bâ€:JZ!“,€‰_ ûf%2€Ë6s*F€Ñ¨Òº³EQ½q~²Ž`tsÖÒ€‘’‰(Â`Ú\rÀš®#€R©¬°±R®rÂó¶XêÞ:R›)òA*3¿\$lË*ν:\"XlÌÔtbKÃ-„šÒO>Rõ-Â¥d¡Ç=¤ò\$Sô\$Ã¥2ÀŠ}7Sf¹â[Å’}\"@È] [6S|SE_>Â¥q-ä@z`Ã;´0±óÆ»ËÃCÑ*¯¦[ÀÒÀ{D°ÞjC\nfÃ¥s–Pò6'€ŽèÈ• QE“’æN\\%rño÷7oúG+dW4A*€Ã#TqEÃŽf•¾%ùD´Zæ3–§2.ì‰ÅRkâ€z@¶Â@»E³D¢`CÂV!CæäÅ•\0±ÔÛIþ)38ŽŽM3Â@Ù3L‡âZB³1F@Läh~G³1MÄÑÑ6ñ‚Ó4äXÑâ€Ã²}ÆžfŠË¢IN€ó34ðÀXÔBtd³8\nbtNãà Qb;ÃÜ‘D‚ÕLÂ\0Ô¯\"\n‚žßäVÑÃ6ÑÀ]UõcVf㖁D`‡Mñ6ÓO4Â4sJ•‹55Â5“\\x ÃŽ<5[FÜßµy7m÷)@SVÂÈÄž#êx‚Õ8 ոы¬£`·\\`Ã-Å v2²ýÕp¥œ·+v§€ûU«ÂLêxY.¤ž‰›\0005(ž@òð´â°µ[U@#µVJuX4Ãu_ï\"JO(Dtý_ 5s½^ õ¡ƒ ÑÅÄ5·^»^Và ¾Iêæ\rg&] ¨\r\"ZCIÂ¥6µÊ#µÎ\r©¨Ü“‡³]7´Â qÕ0Ùó6}o¾’—`uš€ab(ñXÓD fýMÖN)ýVÕUUFÂþø“=jSWiÃ…\"\\B1ÄžØE0¶ µamPÀÃ&<Â¥O_ŽL–ò‘Â.cÂ1Z* ÀR\$Ã¥h¶ùmvý[v>ÃÂÃp•ˆÂÅ (åË0Â𘰜cP£om\0R´ýp÷&‹w+KQÂs6†}5[söJ£Õô2µù/€úà O òV*)ËRµ.Du33–F\rÂ;Âãv4ÙµþHù _!ôÂ2εkª¦Â»+ª»%ð:É_,ÔeoèÃF¨ÌAJ¶OÈ\"%¬\n‹k5`z %|Ã%ÄΫg|ÀÃ}l¶v2n7Ê~\0ÃŽ ¨YRHúË@ÖÃr’ÂxN-Jp\0ð¼‚å‹f#€Û@Ë€mvÔx…˜\r–ü–2WMO/°\nD¯Û7Ã}2ð’òäVWãWèêwÉ€7å€ñËHÆk„¨ð]¸\$ÔMz\\òeÂ.føRZØa†Bä¹µ QdÃKZ“à vtÀØ€w4¯\0æZ@à ÷ôBc;ÃŽb–ã>ÚBþ 3mÃn\nëo ÃJ3â€Ã¦kÅ’(Ü£‚\"à yG\$:\rØÅ†èÃŽ“ÂG6€É²J¥çyÑñQö\\Qú÷if÷ÂÞø©(ïm)/r“\$ùJÃ…/ÂHÃŒ]*òò½ó‡g¹ZOD÷Ñ¬Šƒ]1ÃŽg22˜¿±—ˆï«fÉ=HT…ˆ]NÂ&¦ÀÄM\0Ö[8x‡È®Eæ–â8&LÖVmÅ“vÀ±ªâ€j„טÇFåÄ\\™– ™šž&sá@Qâ„¢ \\\"òb€° à Ä\rBsÅ¡IwÅ“ Å“YÉœÂN Å¡7ÇC/&Ù«`¨\n\nÙ[k˜¹´*A– ñTÃV*UZtz{Å .‚çyËœS‰ š#É3¢ipzW@yC\nKT»˜1@|„z#äü€_CJz(Bº,VÔ(Kº_¡ºdO—©€Pà @X…ÂtÆ’Ã…¦ºc;úWZzWÂ¥_Ù Â\0ÞŠÂCFøxR  à ¦\n…„à Žº°PÆA¡è&ŽššÂ é›,ÖpfV|@N¨\"¾\$€[…i’ŠÂ•¢à ð¦´à ZÂ¥\0Zd\\\"…|¢W`ºÆ]ºÌtzÃo\$â\0[°èÞ±uÂežçë±É™¬bhU-¡‚,€r ãLk8§ Ö«†V&Úal§Øëà dÃŒ×2;  '-¡¶Jyu—›a©µÃ\0 ÷¨•a£{s¶[9V\0´‡F«‘R ÂVB0S;Dº>L4º&‡ZHO1…\0ÊwgʺSÂ¥tK¤¨R…z¦¨Úi¼Ú+½3õw§z’X¢]¨(G\$°¨¯ªD+°tÕ¹á(#ªâ€Â©â„¢ocâ€: Àà Y6¼\0–è&¹¼ @¦ à œü)ÂÒ!›‡´¦w€»œ# tÃxºNDóÀ•Äš)êõC£ÊFZÂpÀÄa—Ä*FÄb¹ ¯ƒÃ¼ÀŒ£ãÄ£ù¤åçSi/S¼!‡€zéUH*ÃŽ4ºë¤ËÙ0ùKÀ-¸/“ÂÀ-k`°nÜLiÊJë~Âwà Jn¾Ã\"Ã`Ó=ìØV¶3Oį8tä>µûvoëâE.®ƒRz`Þ‹p·P œÔE\\ÙÃɧÎ3LçlïÑ¥s]T‘‡‡oV¯ñ€\n ¤ *‚\r¼@7)¦ÊDümÂ0WÃ5Ó€ßÓǰ¨wÃÔbâ€ÃˆÃ| ǼJV¼èÀœ\"‚ur\rä&N0NöB¨d¦ËdÃ8îDð¨€_ë×^Tö®H#]„dá+úv€~ÀU,ÃPR%ñ‡…ùÉÒßxÔÕÃfAûCÃümÃ€ÂÆ’»Ã¸·¹’ÛcÃÇyÃ…Å“D)ú›ÕuHà ÷ßpþpª^u\0è鈰²Œ}¡{Ñ¡Å\rgäsÇQM¤Y‡2jÂ\r—|0\0X×â@qÃΥI`ö»5FÂ6±NÖþV@Óâ€sEïp’õ¬#\rþP¾T÷–DeW†Ø¼ñ›ÂÂãÛz!ûçž:üDMV(¢©~X¸ÂÂ9£\0å£@˜¿Â40N¬Ü½~â€QÃ[TÂÜÄeþqSv\"Õ\"hã\0R-ühZ³d—ñ…ÀÜF5´PèÓ`³9ÂD&xs9WÖ—5Er@oÃŒwkb“1ðÃPO-OþOxlHöD6/Ö¿ÂméÞ ¾²3Â¥7T¨KÈ~54¬ ñp#µIâ€>YIN\\5€Ø‚NӃ‡—õMûòpr&Å“GÃxMÈsqŒ€—ø.Fÿ–Ã8§Cs±Ž h€e5ÄüÒÃð°±ò*à bø)SÚª¾†ÌÂÙeú0É-Xú {ú5|±i–Ö¢a‚ãÈ•6zâ€šÃžÂ½ÂÆ’/Y‰³ÿÛŽM¦ ƃì Ê\nR*8r oø @7¡8BfÃ¥zùKÃr‚¹øA\$˰ p‘\0?…ÿ d¨kÃ|45}ÀAÿÀØÉ¶óW¿ñJÀ2k Gi\0\"¡€žÀdۏÃ8‘\0 >móÂó `8¯wÙ7Éo4âcGhϱQÃ(À¨Ö8@\$<\0p¤Ò0³÷˜L¦eX+„Ja€{ëÂBÒà ´h¶Ø8èCy„òêP2ºÂÓ®Ÿ*ÓEHê2½ÅÃDqS‡Û˜ïpÅ’0ÙI‚²ƒk½`ÞûSÃ\nâ›:éùBÅ“7Ûà èð{-™ÂôÃ`î€õð…6¸A W¡Ü–\rþp†W#ôä¡?¹þ¢{\0Ãßô¼ØÎcD œ[<„Ãfà --Å¡pÔŒ´*B„]„nW°²^Ž R70\rã+N¨GN³\$(\0±#+yó@Þ@iD(8@\rÀhÊÕHˆHe¢¥ÃÃŒzzÀ{1é…À°h„ÙW1F°Who&aÉœÞd6¡½Ãjw˜èÉü»¥Â`hÂ{v`REÃ\nj†£å`êÜ·¾ÔÇÆ*܈°Ê¸}ªY¡ñ \rY‡H¶6Â¥#\0ð¥å»†êÞa¼à Q¨HEl4ýd¤ÜÃpëÚ#â„¢â€ Â¨ÂÆ’¡¨oÓbr+_)\r`‚Ã!Ã|dQ•>ª¹=QÊ¡€âζ×EOB'‘>ôPì®ôÓ¶Ø A\rnK‚iµä Å Ãô„ ˆ%< Ão;‚S„@ã! ²x’à :ˆ†ÃA‘+\\1d\$ùjOσ7Å¡%Æ Ã¥/Šœ¶’gu„z*°G‚Hê5\"8–‚,Ÿ]raq¨«î/ h‹ø#ÂÃõÂ\$ /tnÃö8yºÃ-®O‚ý˜H±bÂÔÂ<âZ×!©œ…1¡ì`É.(uo›À…Â|`GËÂSèÔBaM Ú‚9ÆžîD@£Âõ1‰B€tDÃøÊ¡@?o©(H–‚qC¯¶8E¼TcncRÂ6©N%¼rHj¾à 2G\0‰a´¤q â„¢rÃÇz9b>(PÂãŸxèÇ<Â÷)ôx#Ã…8ó誹t³ˆÕh„2vÇñWo2UëÎÎt³˜+=Àl#êóÃjþDÂ¥ 0¤å‹›&R£cè\$•*Ì‘-Z`à À\rŠê;Ë|Aùpà =1Ô 1ÕÂÃƈ¨bEv(^€XÂ¥P2=\0}‚W‘ˆ÷G¾<°šÊG¡¹‘øøRÂ#PÆ’HÜ®r9 £ƒYû´!’LB¤‘‘4€NC„ZˆîIC´‘ÔMLm¢Â,Ãf@eY x›BS(Ó+ØÂ<4YÅ’)-Ø\rÂz?\$à €Ü\"\"º 6ªEù\r)z‘’Ä@È‘¢’r„¤*åƒæJÈ윋Àˆ%\$ùeýJû˜‹\0AÃ¥\$Ú°/5ÕÑB0Sô¤œxº“IºQ)ó•<¦¬4YS‘&‘{мbã+IG=>¡\rÂPY`Z¸D•`¦â€U²¢ÂªF1€Šø4d8X(ÃÀ°úC%Ž`ÂãœÂ0ËI\$Æ’7WÂpÇÂ,™œAcÀ–é&ÔŒép\$Â:è–r@ï\"{\0004ÛBà 1‰\rG¢ó\nCÃ1A‹-P.äv%ôÂUXI‘D<)ô¿ÓÂ&Y‚G`éWË\n ÇÂ(0}âÖÂò= æ]ÄÃ1™‹qcTæ*Â@%ÜÊv\\ Äê˜2,Õ0ÃŽt‰\"@ðTé\rP}“/dÃŒ@à Û6‹bKòÌĜ蹉-¢<³‰{Fæi3gÃÜ)ó˜´Ã–ä8äfd·ãÕL\$1¦‚ù§…ÃÂÅ :\"Ù`ÀŠÉ©MÂ35´Ãæ%1¦4MeÂl¡óÂ&Nê¡q#¨o‰Nô@QCŸÂêOÜÂF(Âv'#badV–± –ÂÂ\$‚±‘LgB뜢NÇ‘¬)ä§ÃY»Ž\0§à ¦y]KPrÃâ€Ã°Â¬Â¥@¾¦sï‰ZÇfVI¹\0¼µIdÅ¡b@&Ñ8ÕÅM®umtË¦à Æê·7Ãq3u h\n¦ð 4‚M6k‘<ÔÄ‚=`ŽD\\C“^!ǰ:ð0Ëœy!¡—°½“Š›Š)ZX(Q!äãç(„~Éà ÈN¶ÂDŒ¹ÒÊD{");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
169lzw_decompress('');}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo'';break;case"cross.gif":echo'';break;case"up.gif":echo'';break;case"down.gif":echo'';break;case"arrow.gif":echo'';break;}}exit;}if($_GET["script"]=="version"){$_c=file_open_lock(get_temp_dir()."/adminer.version");if($_c)file_write_unlock($_c,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}global$b,$h,$m,$Fb,$Kb,$Sb,$n,$Bc,$Fc,$aa,$dd,$x,$ba,$td,$ee,$ze,$Lf,$Jc,$jg,$ng,$vg,$Bg,$ca;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]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];$aa=($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure");@ini_set("session.use_trans_sid",false);if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");$F=array(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$F[]=true;call_user_func_array('session_set_cookie_params',$F);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$mc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",15);function
170get_lang(){return'en';}function
171lang($mg,$ae=null){if(is_array($mg)){$Be=($ae==1?0:1);$mg=$mg[$Be];}$mg=str_replace("%d","%s",$mg);$ae=format_number($ae);return
172sprintf($mg,$ae);}if(extension_loaded('pdo')){class
173Min_PDO
174extends
175PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
176__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false)unset($b->operators[$Be]);}function
177dsn($Ib,$V,$G,$C=array()){try{parent::__construct($Ib,$V,$G,$C);}catch(Exception$Wb){auth_error(h($Wb->getMessage()));}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=@$this->getAttribute(4);}function
178query($H,$wg=false){$I=parent::query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->errorInfo();if(!$this->error)$this->error='Unknown error.';return
179false;}$this->store_result($I);return$I;}function
180multi_query($H){return$this->_result=$this->query($H);}function
181store_result($I=null){if(!$I){$I=$this->_result;if(!$I)return
182false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
183true;}function
184next_result(){if(!$this->_result)return
185false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
186result($H,$o=0){$I=$this->query($H);if(!$I)return
187false;$K=$I->fetch();return$K[$o];}}class
188Min_PDOStatement
189extends
190PDOStatement{var$_offset=0,$num_rows;function
191fetch_assoc(){return$this->fetch(2);}function
192fetch_row(){return$this->fetch(3);}function
193fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=(in_array("blob",(array)$K->flags)?63:0);return$K;}}}$Fb=array();class
194Min_SQL{var$_conn;function
195__construct($h){$this->_conn=$h;}function
196select($R,$M,$Z,$Cc,$D=array(),$z=1,$E=0,$Ge=false){global$b,$x;$jd=(count($Cc)<count($M));$H=$b->selectQueryBuild($M,$Z,$Cc,$D,$z,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z!=""&&$Cc&&$jd&&$x=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($Cc&&$jd?"\nGROUP BY ".implode(", ",$Cc):"").($D?"\nORDER BY ".implode(", ",$D):""),($z!=""?+$z:null),($E?$z*$E:0),"\n");$Hf=microtime(true);$J=$this->_conn->query($H);if($Ge)echo$b->selectQuery($H,$Hf,!$J);return$J;}function
197delete($R,$Ne,$z=0){$H="FROM ".table($R);return
198queries("DELETE".($z?limit1($R,$H,$Ne):" $H$Ne"));}function
199update($R,$P,$Ne,$z=0,$N="\n"){$Jg=array();foreach($P
200as$y=>$X)$Jg[]="$y = $X";$H=table($R)." SET$N".implode(",$N",$Jg);return
201queries("UPDATE".($z?limit1($R,$H,$Ne,$N):" $H$Ne"));}function
202insert($R,$P){return
203queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
204insertUpdate($R,$L,$Ee){return
205false;}function
206begin(){return
207queries("BEGIN");}function
208commit(){return
209queries("COMMIT");}function
210rollback(){return
211queries("ROLLBACK");}function
212slowQuery($H,$bg){}function
213convertSearch($u,$X,$o){return$u;}function
214value($X,$o){return(method_exists($this->_conn,'value')?$this->_conn->value($X,$o):(is_resource($X)?stream_get_contents($X):$X));}function
215quoteBinary($hf){return
216q($hf);}function
217warnings(){return'';}function
218tableHelp($B){}}$Fb["sqlite"]="SQLite 3";$Fb["sqlite2"]="SQLite 2";if(isset($_GET["sqlite"])||isset($_GET["sqlite2"])){$Ce=array((isset($_GET["sqlite"])?"SQLite3":"SQLite"),"PDO_SQLite");define("DRIVER",(isset($_GET["sqlite"])?"sqlite":"sqlite2"));if(class_exists(isset($_GET["sqlite"])?"SQLite3":"SQLiteDatabase")){if(isset($_GET["sqlite"])){class
219Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
220__construct($q){$this->_link=new
221SQLite3($q);$Lg=$this->_link->version();$this->server_info=$Lg["versionString"];}function
222query($H){$I=@$this->_link->query($H);$this->error="";if(!$I){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
223false;}elseif($I->numColumns())return
224new
225Min_Result($I);$this->affected_rows=$this->_link->changes();return
226true;}function
227quote($Q){return(is_utf8($Q)?"'".$this->_link->escapeString($Q)."'":"x'".reset(unpack('H*',$Q))."'");}function
228store_result(){return$this->_result;}function
229result($H,$o=0){$I=$this->query($H);if(!is_object($I))return
230false;$K=$I->_result->fetchArray();return$K[$o];}}class
231Min_Result{var$_result,$_offset=0,$num_rows;function
232__construct($I){$this->_result=$I;}function
233fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
234fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
235fetch_field(){$f=$this->_offset++;$U=$this->_result->columnType($f);return(object)array("name"=>$this->_result->columnName($f),"type"=>$U,"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
236__desctruct(){return$this->_result->finalize();}}}else{class
237Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
238__construct($q){$this->server_info=sqlite_libversion();$this->_link=new
239SQLiteDatabase($q);}function
240query($H,$wg=false){$Qd=($wg?"unbufferedQuery":"query");$I=@$this->_link->$Qd($H,SQLITE_BOTH,$n);$this->error="";if(!$I){$this->error=$n;return
241false;}elseif($I===true){$this->affected_rows=$this->changes();return
242true;}return
243new
244Min_Result($I);}function
245quote($Q){return"'".sqlite_escape_string($Q)."'";}function
246store_result(){return$this->_result;}function
247result($H,$o=0){$I=$this->query($H);if(!is_object($I))return
248false;$K=$I->_result->fetch();return$K[$o];}}class
249Min_Result{var$_result,$_offset=0,$num_rows;function
250__construct($I){$this->_result=$I;if(method_exists($I,'numRows'))$this->num_rows=$I->numRows();}function
251fetch_assoc(){$K=$this->_result->fetch(SQLITE_ASSOC);if(!$K)return
252false;$J=array();foreach($K
253as$y=>$X)$J[($y[0]=='"'?idf_unescape($y):$y)]=$X;return$J;}function
254fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
255fetch_field(){$B=$this->_result->fieldName($this->_offset++);$ye='(\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($ye\\.)?$ye\$~",$B,$A)){$R=($A[3]!=""?$A[3]:idf_unescape($A[2]));$B=($A[5]!=""?$A[5]:idf_unescape($A[4]));}return(object)array("name"=>$B,"orgname"=>$B,"orgtable"=>$R,);}}}}elseif(extension_loaded("pdo_sqlite")){class
256Min_SQLite
257extends
258Min_PDO{var$extension="PDO_SQLite";function
259__construct($q){$this->dsn(DRIVER.":$q","","");}}}if(class_exists("Min_SQLite")){class
260Min_DB
261extends
262Min_SQLite{function
263__construct(){parent::__construct(":memory:");$this->query("PRAGMA foreign_keys = 1");}function
264select_db($q){if(is_readable($q)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$q)?$q:dirname($_SERVER["SCRIPT_FILENAME"])."/$q")." AS a")){parent::__construct($q);$this->query("PRAGMA foreign_keys = 1");return
265true;}return
266false;}function
267multi_query($H){return$this->_result=$this->query($H);}function
268next_result(){return
269false;}}}class
270Min_Driver
271extends
272Min_SQL{function
273insertUpdate($R,$L,$Ee){$Jg=array();foreach($L
274as$P)$Jg[]="(".implode(", ",$P).")";return
275queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Jg));}function
276tableHelp($B){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}}function
277idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
278table($u){return
279idf_escape($u);}function
280connect(){global$b;list(,,$G)=$b->credentials();if($G!="")return'Database does not support password.';return
281new
282Min_DB;}function
283get_databases(){return
284array();}function
285limit($H,$Z,$z,$ce=0,$N=" "){return" $H$Z".($z!==null?$N."LIMIT $z".($ce?" OFFSET $ce":""):"");}function
286limit1($R,$H,$Z,$N="\n"){global$h;return(preg_match('~^INTO~',$H)||$h->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$N):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$N."LIMIT 1)");}function
287db_collation($l,$cb){global$h;return$h->result("PRAGMA encoding");}function
288engines(){return
289array();}function
290logged_user(){return
291get_current_user();}function
292tables_list(){return
293get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
294count_tables($k){return
295array();}function
296table_status($B=""){global$h;$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K){$K["Rows"]=$h->result("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return($B!=""?$J[$B]:$J);}function
297is_view($S){return$S["Engine"]=="view";}function
298fk_support($S){global$h;return!$h->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
299fields($R){global$h;$J=array();$Ee="";foreach(get_rows("PRAGMA table_info(".table($R).")")as$K){$B=$K["name"];$U=strtolower($K["type"]);$xb=$K["dflt_value"];$J[$B]=array("field"=>$B,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~'(.*)'~",$xb,$A)?str_replace("''","'",$A[1]):($xb=="NULL"?null:$xb)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($Ee!="")$J[$Ee]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$B]["auto_increment"]=true;$Ee=$B;}}$Ef=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Ef,$Hd,PREG_SET_ORDER);foreach($Hd
300as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($J[$B])$J[$B]["collation"]=trim($A[3],"'");}return$J;}function
301indexes($R,$i=null){global$h;if(!is_object($i))$i=$h;$J=array();$Ef=$i->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Ef,$A)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$Hd,PREG_SET_ORDER);foreach($Hd
302as$A){$J[""]["columns"][]=idf_unescape($A[2]).$A[4];$J[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$J){foreach(fields($R)as$B=>$o){if($o["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$Ff=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$i);foreach(get_rows("PRAGMA index_list(".table($R).")",$i)as$K){$B=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$i)as$gf){$v["columns"][]=$gf["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Ff[$B],$Ue)){preg_match_all('/("[^"]*+")+( DESC)?/',$Ue[2],$Hd);foreach($Hd[2]as$y=>$X){if($X)$v["descs"][$y]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$B))$J[$B]=$v;}return$J;}function
303foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$wc=&$J[$K["id"]];if(!$wc)$wc=$K;$wc["source"][]=$K["from"];$wc["target"][]=$K["to"];}return$J;}function
304view($B){global$h;return
305array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',$h->result("SELECT sql FROM sqlite_master WHERE name = ".q($B))));}function
306collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
307information_schema($l){return
308false;}function
309error(){global$h;return
310h($h->error);}function
311check_sqlite_name($B){global$h;$dc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($dc)\$~",$B)){$h->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$dc));return
312false;}return
313true;}function
314create_database($l,$e){global$h;if(file_exists($l)){$h->error='File exists.';return
315false;}if(!check_sqlite_name($l))return
316false;try{$_=new
317Min_SQLite($l);}catch(Exception$Wb){$h->error=$Wb->getMessage();return
318false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
319true;}function
320drop_databases($k){global$h;$h->__construct(":memory:");foreach($k
321as$l){if(!@unlink($l)){$h->error='File exists.';return
322false;}}return
323true;}function
324rename_database($B,$e){global$h;if(!check_sqlite_name($B))return
325false;$h->__construct(":memory:");$h->error='File exists.';return@rename(DB,$B);}function
326auto_increment(){return" PRIMARY KEY".(DRIVER=="sqlite"?" AUTOINCREMENT":"");}function
327alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){$Gg=($R==""||$tc);foreach($p
328as$o){if($o[0]!=""||!$o[1]||$o[2]){$Gg=true;break;}}$c=array();$oe=array();foreach($p
329as$o){if($o[1]){$c[]=($Gg?$o[1]:"ADD ".implode($o[1]));if($o[0]!="")$oe[$o[0]]=$o[1][0];}}if(!$Gg){foreach($c
330as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
331false;}if($R!=$B&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)))return
332false;}elseif(!recreate_table($R,$B,$c,$oe,$tc))return
333false;if($Ea)queries("UPDATE sqlite_sequence SET seq = $Ea WHERE name = ".q($B));return
334true;}function
335recreate_table($R,$B,$p,$oe,$tc,$w=array()){if($R!=""){if(!$p){foreach(fields($R)as$y=>$o){if($w)$o["auto_increment"]=0;$p[]=process_field($o,$o);$oe[$y]=idf_escape($y);}}$Fe=false;foreach($p
336as$o){if($o[6])$Fe=true;}$Hb=array();foreach($w
337as$y=>$X){if($X[2]=="DROP"){$Hb[$X[1]]=true;unset($w[$y]);}}foreach(indexes($R)as$od=>$v){$g=array();foreach($v["columns"]as$y=>$f){if(!$oe[$f])continue
3382;$g[]=$oe[$f].($v["descs"][$y]?" DESC":"");}if(!$Hb[$od]){if($v["type"]!="PRIMARY"||!$Fe)$w[]=array($v["type"],$od,$g);}}foreach($w
339as$y=>$X){if($X[0]=="PRIMARY"){unset($w[$y]);$tc[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$od=>$wc){foreach($wc["source"]as$y=>$f){if(!$oe[$f])continue
3402;$wc["source"][$y]=idf_unescape($oe[$f]);}if(!isset($tc[" $od"]))$tc[]=" ".format_foreign_key($wc);}queries("BEGIN");}foreach($p
341as$y=>$o)$p[$y]=" ".implode($o);$p=array_merge($p,array_filter($tc));if(!queries("CREATE TABLE ".table($R!=""?"adminer_$B":$B)." (\n".implode(",\n",$p)."\n)"))return
342false;if($R!=""){if($oe&&!queries("INSERT INTO ".table("adminer_$B")." (".implode(", ",$oe).") SELECT ".implode(", ",array_map('idf_escape',array_keys($oe)))." FROM ".table($R)))return
343false;$tg=array();foreach(triggers($R)as$rg=>$cg){$qg=trigger($rg);$tg[]="CREATE TRIGGER ".idf_escape($rg)." ".implode(" ",$cg)." ON ".table($B)."\n$qg[Statement]";}if(!queries("DROP TABLE ".table($R)))return
344false;queries("ALTER TABLE ".table("adminer_$B")." RENAME TO ".table($B));if(!alter_indexes($B,$w))return
345false;foreach($tg
346as$qg){if(!queries($qg))return
347false;}queries("COMMIT");}return
348true;}function
349index_sql($R,$U,$B,$g){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($R."_"))." ON ".table($R)." $g";}function
350alter_indexes($R,$c){foreach($c
351as$Ee){if($Ee[0]=="PRIMARY")return
352recreate_table($R,$R,array(),array(),array(),$c);}foreach(array_reverse($c)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
353false;}return
354true;}function
355truncate_tables($T){return
356apply_queries("DELETE FROM",$T);}function
357drop_views($Ng){return
358apply_queries("DROP VIEW",$Ng);}function
359drop_tables($T){return
360apply_queries("DROP TABLE",$T);}function
361move_tables($T,$Ng,$Vf){return
362false;}function
363trigger($B){global$h;if($B=="")return
364array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$sg=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$sg["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$h->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($B)),$A);$be=$A[3];return
365array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($be?" OF":""),"Of"=>($be[0]=='`'||$be[0]=='"'?idf_unescape($be):$be),"Trigger"=>$B,"Statement"=>$A[4],);}function
366triggers($R){$J=array();$sg=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$sg["Timing"]).')\s*(.*)\s+ON\b~iU',$K["sql"],$A);$J[$K["name"]]=array($A[1],$A[2]);}return$J;}function
367trigger_options(){return
368array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
369begin(){return
370queries("BEGIN");}function
371last_id(){global$h;return$h->result("SELECT LAST_INSERT_ROWID()");}function
372explain($h,$H){return$h->query("EXPLAIN QUERY PLAN $H");}function
373found_rows($S,$Z){}function
374types(){return
375array();}function
376schemas(){return
377array();}function
378get_schema(){return"";}function
379set_schema($jf){return
380true;}function
381create_sql($R,$Ea,$Mf){global$h;$J=$h->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$B=>$v){if($B=='')continue;$J.=";\n\n".index_sql($R,$v['type'],$B,"(".implode(", ",array_map('idf_escape',$v['columns'])).")");}return$J;}function
382truncate_sql($R){return"DELETE FROM ".table($R);}function
383use_sql($j){}function
384trigger_sql($R){return
385implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
386show_variables(){global$h;$J=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$y)$J[$y]=$h->result("PRAGMA $y");return$J;}function
387show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$ke){list($y,$X)=explode("=",$ke,2);$J[$y]=$X;}return$J;}function
388convert_field($o){}function
389unconvert_field($o,$J){return$J;}function
390support($hc){return
391preg_match('~^(columns|database|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$hc);}$x="sqlite";$vg=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$Lf=array_keys($vg);$Bg=array();$je=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");$Bc=array("hex","length","lower","round","unixepoch","upper");$Fc=array("avg","count","count distinct","group_concat","max","min","sum");$Kb=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}$Fb["pgsql"]="PostgreSQL";if(isset($_GET["pgsql"])){$Ce=array("PgSQL","PDO_PgSQL");define("DRIVER","pgsql");if(extension_loaded("pgsql")){class
392Min_DB{var$extension="PgSQL",$_link,$_result,$_string,$_database=true,$server_info,$affected_rows,$error,$timeout;function
393_error($Ub,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
394connect($O,$V,$G){global$b;$l=$b->database();set_error_handler(array($this,'_error'));$this->_string="host='".str_replace(":","' port='",addcslashes($O,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($G,"'\\")."'";$this->_link=@pg_connect("$this->_string dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->_link&&$l!=""){$this->_database=false;$this->_link=@pg_connect("$this->_string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->_link){$Lg=pg_version($this->_link);$this->server_info=$Lg["server"];pg_set_client_encoding($this->_link,"UTF8");}return(bool)$this->_link;}function
395quote($Q){return"'".pg_escape_string($this->_link,$Q)."'";}function
396value($X,$o){return($o["type"]=="bytea"?pg_unescape_bytea($X):$X);}function
397quoteBinary($Q){return"'".pg_escape_bytea($this->_link,$Q)."'";}function
398select_db($j){global$b;if($j==$b->database())return$this->_database;$J=@pg_connect("$this->_string dbname='".addcslashes($j,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->_link=$J;return$J;}function
399close(){$this->_link=@pg_connect("$this->_string dbname='postgres'");}function
400query($H,$wg=false){$I=@pg_query($this->_link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->_link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
401Min_Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
402multi_query($H){return$this->_result=$this->query($H);}function
403store_result(){return$this->_result;}function
404next_result(){return
405false;}function
406result($H,$o=0){$I=$this->query($H);if(!$I||!$I->num_rows)return
407false;return
408pg_fetch_result($I->_result,0,$o);}function
409warnings(){return
410h(pg_last_notice($this->_link));}}class
411Min_Result{var$_result,$_offset=0,$num_rows;function
412__construct($I){$this->_result=$I;$this->num_rows=pg_num_rows($I);}function
413fetch_assoc(){return
414pg_fetch_assoc($this->_result);}function
415fetch_row(){return
416pg_fetch_row($this->_result);}function
417fetch_field(){$f=$this->_offset++;$J=new
418stdClass;if(function_exists('pg_field_table'))$J->orgtable=pg_field_table($this->_result,$f);$J->name=pg_field_name($this->_result,$f);$J->orgname=$J->name;$J->type=pg_field_type($this->_result,$f);$J->charsetnr=($J->type=="bytea"?63:0);return$J;}function
419__destruct(){pg_free_result($this->_result);}}}elseif(extension_loaded("pdo_pgsql")){class
420Min_DB
421extends
422Min_PDO{var$extension="PDO_PgSQL",$timeout;function
423connect($O,$V,$G){global$b;$l=$b->database();$Q="pgsql:host='".str_replace(":","' port='",addcslashes($O,"'\\"))."' options='-c client_encoding=utf8'";$this->dsn("$Q dbname='".($l!=""?addcslashes($l,"'\\"):"postgres")."'",$V,$G);return
424true;}function
425select_db($j){global$b;return($b->database()==$j);}function
426quoteBinary($hf){return
427q($hf);}function
428query($H,$wg=false){$J=parent::query($H,$wg);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
429warnings(){return'';}function
430close(){}}}class
431Min_Driver
432extends
433Min_SQL{function
434insertUpdate($R,$L,$Ee){global$h;foreach($L
435as$P){$Cg=array();$Z=array();foreach($P
436as$y=>$X){$Cg[]="$y = $X";if(isset($Ee[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$Cg)." WHERE ".implode(" AND ",$Z))&&$h->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($P)).") VALUES (".implode(", ",$P).")")))return
437false;}return
438true;}function
439slowQuery($H,$bg){$this->_conn->query("SET statement_timeout = ".(1000*$bg));$this->_conn->timeout=1000*$bg;return$H;}function
440convertSearch($u,$X,$o){return(preg_match('~char|text'.(!preg_match('~LIKE~',$X["op"])?'|date|time(stamp)?|boolean|uuid|'.number_type():'').'~',$o["type"])?$u:"CAST($u AS text)");}function
441quoteBinary($hf){return$this->_conn->quoteBinary($hf);}function
442warnings(){return$this->_conn->warnings();}function
443tableHelp($B){$_d=array("information_schema"=>"infoschema","pg_catalog"=>"catalog",);$_=$_d[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".html";}}function
444idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
445table($u){return
446idf_escape($u);}function
447connect(){global$b,$vg,$Lf;$h=new
448Min_DB;$pb=$b->credentials();if($h->connect($pb[0],$pb[1],$pb[2])){if(min_version(9,0,$h)){$h->query("SET application_name = 'Adminer'");if(min_version(9.2,0,$h)){$Lf['Strings'][]="json";$vg["json"]=4294967295;if(min_version(9.4,0,$h)){$Lf['Strings'][]="jsonb";$vg["jsonb"]=4294967295;}}}return$h;}return$h->error;}function
449get_databases(){return
450get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");}function
451limit($H,$Z,$z,$ce=0,$N=" "){return" $H$Z".($z!==null?$N."LIMIT $z".($ce?" OFFSET $ce":""):"");}function
452limit1($R,$H,$Z,$N="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$N):" $H".(is_view(table_status1($R))?$Z:" WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$N."LIMIT 1)"));}function
453db_collation($l,$cb){global$h;return$h->result("SHOW LC_COLLATE");}function
454engines(){return
455array();}function
456logged_user(){global$h;return$h->result("SELECT user");}function
457tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support('materializedview'))$H.="
458UNION ALL
459SELECT matviewname, 'MATERIALIZED VIEW'
460FROM pg_matviews
461WHERE schemaname = current_schema()";$H.="
462ORDER BY 1";return
463get_key_vals($H);}function
464count_tables($k){return
465array();}function
466table_status($B=""){$J=array();foreach(get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", CASE WHEN c.relhasoids THEN 'oid' ELSE '' END AS \"Oid\", c.reltuples as \"Rows\", n.nspname
467FROM pg_class c
468JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
469WHERE relkind IN ('r', 'm', 'v', 'f')
470".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return($B!=""?$J[$B]:$J);}function
471is_view($S){return
472in_array($S["Engine"],array("view","materialized view"));}function
473fk_support($S){return
474true;}function
475fields($R){$J=array();$wa=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment
476FROM pg_class c
477JOIN pg_namespace n ON c.relnamespace = n.oid
478JOIN pg_attribute a ON c.oid = a.attrelid
479LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
480WHERE c.relname = ".q($R)."
481AND n.nspname = current_schema()
482AND NOT a.attisdropped
483AND a.attnum > 0
484ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$A);list(,$U,$xd,$K["length"],$ra,$ya)=$A;$K["length"].=$ya;$Ua=$U.$ra;if(isset($wa[$Ua])){$K["type"]=$wa[$Ua];$K["full_type"]=$K["type"].$xd.$ya;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$xd.$ra.$ya;}$K["null"]=!$K["attnotnull"];$K["auto_increment"]=preg_match('~^nextval\(~i',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1);if(preg_match('~(.+)::[^)]+(.*)~',$K["default"],$A))$K["default"]=($A[1]=="NULL"?null:(($A[1][0]=="'"?idf_unescape($A[1]):$A[1]).$A[2]));$J[$K["field"]]=$K;}return$J;}function
485indexes($R,$i=null){global$h;if(!is_object($i))$i=$h;$J=array();$Tf=$i->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R));$g=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Tf AND attnum > 0",$i);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $Tf AND ci.oid = i.indexrelid",$i)as$K){$Ve=$K["relname"];$J[$Ve]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Ve]["columns"]=array();foreach(explode(" ",$K["indkey"])as$Zc)$J[$Ve]["columns"][]=$g[$Zc];$J[$Ve]["descs"]=array();foreach(explode(" ",$K["indoption"])as$ad)$J[$Ve]["descs"][]=($ad&1?'1':null);$J[$Ve]["lengths"]=array();}return$J;}function
486foreign_keys($R){global$ee;$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
487FROM pg_constraint
488WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema())
489AND contype = 'f'::char
490ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$A)){$K['source']=array_map('trim',explode(',',$A[1]));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$Gd)){$K['ns']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Gd[2]));$K['table']=str_replace('""','"',preg_replace('~^"(.+)"$~','\1',$Gd[4]));}$K['target']=array_map('trim',explode(',',$A[3]));$K['on_delete']=(preg_match("~ON DELETE ($ee)~",$A[4],$Gd)?$Gd[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE ($ee)~",$A[4],$Gd)?$Gd[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
491view($B){global$h;return
492array("select"=>trim($h->result("SELECT view_definition
493FROM information_schema.views
494WHERE table_schema = current_schema() AND table_name = ".q($B))));}function
495collations(){return
496array();}function
497information_schema($l){return($l=="information_schema");}function
498error(){global$h;$J=h($h->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$A))$J=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
499nl_br($J);}function
500create_database($l,$e){return
501queries("CREATE DATABASE ".idf_escape($l).($e?" ENCODING ".idf_escape($e):""));}function
502drop_databases($k){global$h;$h->close();return
503apply_queries("DROP DATABASE",$k,'idf_escape');}function
504rename_database($B,$e){return
505queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
506auto_increment(){return"";}function
507alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){$c=array();$Me=array();foreach($p
508as$o){$f=idf_escape($o[0]);$X=$o[1];if(!$X)$c[]="DROP $f";else{$Ig=$X[5];unset($X[5]);if(isset($X[6])&&$o[0]=="")$X[1]=($X[1]=="bigint"?" big":" ")."serial";if($o[0]=="")$c[]=($R!=""?"ADD ":" ").implode($X);else{if($f!=$X[0])$Me[]="ALTER TABLE ".table($R)." RENAME $f TO $X[0]";$c[]="ALTER $f TYPE$X[1]";if(!$X[6]){$c[]="ALTER $f ".($X[3]?"SET$X[3]":"DROP DEFAULT");$c[]="ALTER $f ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}}if($o[0]!=""||$Ig!="")$Me[]="COMMENT ON COLUMN ".table($R).".$X[0] IS ".($Ig!=""?substr($Ig,9):"''");}}$c=array_merge($c,$tc);if($R=="")array_unshift($Me,"CREATE TABLE ".table($B)." (\n".implode(",\n",$c)."\n)");elseif($c)array_unshift($Me,"ALTER TABLE ".table($R)."\n".implode(",\n",$c));if($R!=""&&$R!=$B)$Me[]="ALTER TABLE ".table($R)." RENAME TO ".table($B);if($R!=""||$gb!="")$Me[]="COMMENT ON TABLE ".table($B)." IS ".q($gb);if($Ea!=""){}foreach($Me
509as$H){if(!queries($H))return
510false;}return
511true;}function
512alter_indexes($R,$c){$nb=array();$Gb=array();$Me=array();foreach($c
513as$X){if($X[0]!="INDEX")$nb[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$Gb[]=idf_escape($X[1]);else$Me[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($nb)array_unshift($Me,"ALTER TABLE ".table($R).implode(",",$nb));if($Gb)array_unshift($Me,"DROP INDEX ".implode(", ",$Gb));foreach($Me
514as$H){if(!queries($H))return
515false;}return
516true;}function
517truncate_tables($T){return
518queries("TRUNCATE ".implode(", ",array_map('table',$T)));return
519true;}function
520drop_views($Ng){return
521drop_tables($Ng);}function
522drop_tables($T){foreach($T
523as$R){$Jf=table_status($R);if(!queries("DROP ".strtoupper($Jf["Engine"])." ".table($R)))return
524false;}return
525true;}function
526move_tables($T,$Ng,$Vf){foreach(array_merge($T,$Ng)as$R){$Jf=table_status($R);if(!queries("ALTER ".strtoupper($Jf["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Vf)))return
527false;}return
528true;}function
529trigger($B,$R=null){if($B=="")return
530array("Statement"=>"EXECUTE PROCEDURE ()");if($R===null)$R=$_GET['trigger'];$L=get_rows('SELECT t.trigger_name AS "Trigger", t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') FROM information_schema.triggers WHERE event_object_table = t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS "Type", t.action_statement AS "Statement" FROM information_schema.triggers t WHERE t.event_object_table = '.q($R).' AND t.trigger_name = '.q($B));return
531reset($L);}function
532triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = ".q($R))as$K)$J[$K["trigger_name"]]=array($K["action_timing"],$K["event_manipulation"]);return$J;}function
533trigger_options(){return
534array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
535routine($B,$U){$L=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
536FROM information_schema.routines
537WHERE routine_schema = current_schema() AND specific_name = '.q($B));$J=$L[0];$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
538FROM information_schema.parameters
539WHERE specific_schema = current_schema() AND specific_name = '.q($B).'
540ORDER BY ordinal_position');return$J;}function
541routines(){return
542get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
543FROM information_schema.routines
544WHERE routine_schema = current_schema()
545ORDER BY SPECIFIC_NAME');}function
546routine_languages(){return
547get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
548routine_id($B,$K){$J=array();foreach($K["fields"]as$o)$J[]=$o["type"];return
549idf_escape($B)."(".implode(", ",$J).")";}function
550last_id(){return
5510;}function
552explain($h,$H){return$h->query("EXPLAIN $H");}function
553found_rows($S,$Z){global$h;if(preg_match("~ rows=([0-9]+)~",$h->result("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Ue))return$Ue[1];return
554false;}function
555types(){return
556get_vals("SELECT typname
557FROM pg_type
558WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
559AND typtype IN ('b','d','e')
560AND typelem = 0");}function
561schemas(){return
562get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
563get_schema(){global$h;return$h->result("SELECT current_schema()");}function
564set_schema($if){global$h,$vg,$Lf;$J=$h->query("SET search_path TO ".idf_escape($if));foreach(types()as$U){if(!isset($vg[$U])){$vg[$U]=0;$Lf['User types'][]=$U;}}return$J;}function
565create_sql($R,$Ea,$Mf){global$h;$J='';$ef=array();$sf=array();$Jf=table_status($R);$p=fields($R);$w=indexes($R);ksort($w);$qc=foreign_keys($R);ksort($qc);if(!$Jf||empty($p))return
566false;$J="CREATE TABLE ".idf_escape($Jf['nspname']).".".idf_escape($Jf['Name'])." (\n ";foreach($p
567as$ic=>$o){$ue=idf_escape($o['field']).' '.$o['full_type'].default_value($o).($o['attnotnull']?" NOT NULL":"");$ef[]=$ue;if(preg_match('~nextval\(\'([^\']+)\'\)~',$o['default'],$Hd)){$rf=$Hd[1];$Df=reset(get_rows(min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q($rf):"SELECT * FROM $rf"));$sf[]=($Mf=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $rf;\n":"")."CREATE SEQUENCE $rf INCREMENT $Df[increment_by] MINVALUE $Df[min_value] MAXVALUE $Df[max_value] START ".($Ea?$Df['last_value']:1)." CACHE $Df[cache_value];";}}if(!empty($sf))$J=implode("\n\n",$sf)."\n\n$J";foreach($w
568as$Uc=>$v){switch($v['type']){case'UNIQUE':$ef[]="CONSTRAINT ".idf_escape($Uc)." UNIQUE (".implode(', ',array_map('idf_escape',$v['columns'])).")";break;case'PRIMARY':$ef[]="CONSTRAINT ".idf_escape($Uc)." PRIMARY KEY (".implode(', ',array_map('idf_escape',$v['columns'])).")";break;}}foreach($qc
569as$pc=>$oc)$ef[]="CONSTRAINT ".idf_escape($pc)." $oc[definition] ".($oc['deferrable']?'DEFERRABLE':'NOT DEFERRABLE');$J.=implode(",\n ",$ef)."\n) WITH (oids = ".($Jf['Oid']?'true':'false').");";foreach($w
570as$Uc=>$v){if($v['type']=='INDEX')$J.="\n\nCREATE INDEX ".idf_escape($Uc)." ON ".idf_escape($Jf['nspname']).".".idf_escape($Jf['Name'])." USING btree (".implode(', ',array_map('idf_escape',$v['columns'])).");";}if($Jf['Comment'])$J.="\n\nCOMMENT ON TABLE ".idf_escape($Jf['nspname']).".".idf_escape($Jf['Name'])." IS ".q($Jf['Comment']).";";foreach($p
571as$ic=>$o){if($o['comment'])$J.="\n\nCOMMENT ON COLUMN ".idf_escape($Jf['nspname']).".".idf_escape($Jf['Name']).".".idf_escape($ic)." IS ".q($o['comment']).";";}return
572rtrim($J,';');}function
573truncate_sql($R){return"TRUNCATE ".table($R);}function
574trigger_sql($R){$Jf=table_status($R);$J="";foreach(triggers($R)as$pg=>$og){$qg=trigger($pg,$Jf['Name']);$J.="\nCREATE TRIGGER ".idf_escape($qg['Trigger'])." $qg[Timing] $qg[Events] ON ".idf_escape($Jf["nspname"]).".".idf_escape($Jf['Name'])." $qg[Type] $qg[Statement];;\n";}return$J;}function
575use_sql($j){return"\connect ".idf_escape($j);}function
576show_variables(){return
577get_key_vals("SHOW ALL");}function
578process_list(){return
579get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
580show_status(){}function
581convert_field($o){}function
582unconvert_field($o,$J){return$J;}function
583support($hc){return
584preg_match('~^(database|table|columns|sql|indexes|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~',$hc);}function
585kill_process($X){return
586queries("SELECT pg_terminate_backend(".number($X).")");}function
587connection_id(){return"SELECT pg_backend_pid()";}function
588max_connections(){global$h;return$h->result("SHOW max_connections");}$x="pgsql";$vg=array();$Lf=array();foreach(array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),)as$y=>$X){$vg+=$X;$Lf[$y]=array_keys($X);}$Bg=array();$je=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$Bc=array("char_length","lower","round","to_hex","to_timestamp","upper");$Fc=array("avg","count","count distinct","max","min","sum");$Kb=array(array("char"=>"md5","date|time"=>"now",),array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",));}$Fb["oracle"]="Oracle (beta)";if(isset($_GET["oracle"])){$Ce=array("OCI8","PDO_OCI");define("DRIVER","oracle");if(extension_loaded("oci8")){class
589Min_DB{var$extension="oci8",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
590_error($Ub,$n){if(ini_bool("html_errors"))$n=html_entity_decode(strip_tags($n));$n=preg_replace('~^[^:]*: ~','',$n);$this->error=$n;}function
591connect($O,$V,$G){$this->_link=@oci_new_connect($V,$G,$O,"AL32UTF8");if($this->_link){$this->server_info=oci_server_version($this->_link);return
592true;}$n=oci_error();$this->error=$n["message"];return
593false;}function
594quote($Q){return"'".str_replace("'","''",$Q)."'";}function
595select_db($j){return
596true;}function
597query($H,$wg=false){$I=oci_parse($this->_link,$H);$this->error="";if(!$I){$n=oci_error($this->_link);$this->errno=$n["code"];$this->error=$n["message"];return
598false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
599new
600Min_Result($I);$this->affected_rows=oci_num_rows($I);}return$J;}function
601multi_query($H){return$this->_result=$this->query($H);}function
602store_result(){return$this->_result;}function
603next_result(){return
604false;}function
605result($H,$o=1){$I=$this->query($H);if(!is_object($I)||!oci_fetch($I->_result))return
606false;return
607oci_result($I->_result,$o);}}class
608Min_Result{var$_result,$_offset=1,$num_rows;function
609__construct($I){$this->_result=$I;}function
610_convert($K){foreach((array)$K
611as$y=>$X){if(is_a($X,'OCI-Lob'))$K[$y]=$X->load();}return$K;}function
612fetch_assoc(){return$this->_convert(oci_fetch_assoc($this->_result));}function
613fetch_row(){return$this->_convert(oci_fetch_row($this->_result));}function
614fetch_field(){$f=$this->_offset++;$J=new
615stdClass;$J->name=oci_field_name($this->_result,$f);$J->orgname=$J->name;$J->type=oci_field_type($this->_result,$f);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
616__destruct(){oci_free_statement($this->_result);}}}elseif(extension_loaded("pdo_oci")){class
617Min_DB
618extends
619Min_PDO{var$extension="PDO_OCI";function
620connect($O,$V,$G){$this->dsn("oci:dbname=//$O;charset=AL32UTF8",$V,$G);return
621true;}function
622select_db($j){return
623true;}}}class
624Min_Driver
625extends
626Min_SQL{function
627begin(){return
628true;}}function
629idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
630table($u){return
631idf_escape($u);}function
632connect(){global$b;$h=new
633Min_DB;$pb=$b->credentials();if($h->connect($pb[0],$pb[1],$pb[2]))return$h;return$h->error;}function
634get_databases(){return
635get_vals("SELECT tablespace_name FROM user_tablespaces");}function
636limit($H,$Z,$z,$ce=0,$N=" "){return($ce?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$ce).") WHERE rnum > $ce":($z!==null?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$ce):" $H$Z"));}function
637limit1($R,$H,$Z,$N="\n"){return" $H$Z";}function
638db_collation($l,$cb){global$h;return$h->result("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
639engines(){return
640array();}function
641logged_user(){global$h;return$h->result("SELECT USER FROM DUAL");}function
642tables_list(){return
643get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."
644UNION SELECT view_name, 'view' FROM user_views
645ORDER BY 1");}function
646count_tables($k){return
647array();}function
648table_status($B=""){$J=array();$kf=q($B);foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q(DB).($B!=""?" AND table_name = $kf":"")."
649UNION SELECT view_name, 'view', 0, 0 FROM user_views".($B!=""?" WHERE view_name = $kf":"")."
650ORDER BY 1")as$K){if($B!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
651is_view($S){return$S["Engine"]=="view";}function
652fk_support($S){return
653true;}function
654fields($R){$J=array();foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)." ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$xd="$K[DATA_PRECISION],$K[DATA_SCALE]";if($xd==",")$xd=$K["DATA_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($xd?"($xd)":""),"type"=>strtolower($U),"length"=>$xd,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);}return$J;}function
655indexes($R,$i=null){$J=array();foreach(get_rows("SELECT uic.*, uc.constraint_type
656FROM user_ind_columns uic
657LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name
658WHERE uic.table_name = ".q($R)."
659ORDER BY uc.constraint_type, uic.column_position",$i)as$K){$Uc=$K["INDEX_NAME"];$J[$Uc]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$Uc]["columns"][]=$K["COLUMN_NAME"];$J[$Uc]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$Uc]["descs"][]=($K["DESCEND"]?'1':null);}return$J;}function
660view($B){$L=get_rows('SELECT text "select" FROM user_views WHERE view_name = '.q($B));return
661reset($L);}function
662collations(){return
663array();}function
664information_schema($l){return
665false;}function
666error(){global$h;return
667h($h->error);}function
668explain($h,$H){$h->query("EXPLAIN PLAN FOR $H");return$h->query("SELECT * FROM plan_table");}function
669found_rows($S,$Z){}function
670alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){$c=$Gb=array();foreach($p
671as$o){$X=$o[1];if($X&&$o[0]!=""&&idf_escape($o[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($o[0])." TO $X[0]");if($X)$c[]=($R!=""?($o[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$Gb[]=idf_escape($o[0]);}if($R=="")return
672queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$c)."\n)");return(!$c||queries("ALTER TABLE ".table($R)."\n".implode("\n",$c)))&&(!$Gb||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$Gb).")"))&&($R==$B||queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)));}function
673foreign_keys($R){$J=array();$H="SELECT c_list.CONSTRAINT_NAME as NAME,
674c_src.COLUMN_NAME as SRC_COLUMN,
675c_dest.OWNER as DEST_DB,
676c_dest.TABLE_NAME as DEST_TABLE,
677c_dest.COLUMN_NAME as DEST_COLUMN,
678c_list.DELETE_RULE as ON_DELETE
679FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
680WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
681AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
682AND c_list.CONSTRAINT_TYPE = 'R'
683AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
684truncate_tables($T){return
685apply_queries("TRUNCATE TABLE",$T);}function
686drop_views($Ng){return
687apply_queries("DROP VIEW",$Ng);}function
688drop_tables($T){return
689apply_queries("DROP TABLE",$T);}function
690last_id(){return
6910;}function
692schemas(){return
693get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))");}function
694get_schema(){global$h;return$h->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
695set_schema($jf){global$h;return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($jf));}function
696show_variables(){return
697get_key_vals('SELECT name, display_value FROM v$parameter');}function
698process_list(){return
699get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
700FROM v$session sess LEFT OUTER JOIN v$sql sql
701ON sql.sql_id = sess.sql_id
702WHERE sess.type = \'USER\'
703ORDER BY PROCESS
704');}function
705show_status(){$L=get_rows('SELECT * FROM v$instance');return
706reset($L);}function
707convert_field($o){}function
708unconvert_field($o,$J){return$J;}function
709support($hc){return
710preg_match('~^(columns|database|drop_col|indexes|processlist|scheme|sql|status|table|variables|view|view_trigger)$~',$hc);}$x="oracle";$vg=array();$Lf=array();foreach(array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),)as$y=>$X){$vg+=$X;$Lf[$y]=array_keys($X);}$Bg=array();$je=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$Bc=array("length","lower","round","upper");$Fc=array("avg","count","count distinct","max","min","sum");$Kb=array(array("date"=>"current_date","timestamp"=>"current_timestamp",),array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",));}$Fb["mssql"]="MS SQL (beta)";if(isset($_GET["mssql"])){$Ce=array("SQLSRV","MSSQL","PDO_DBLIB");define("DRIVER","mssql");if(extension_loaded("sqlsrv")){class
711Min_DB{var$extension="sqlsrv",$_link,$_result,$server_info,$affected_rows,$errno,$error;function
712_get_error(){$this->error="";foreach(sqlsrv_errors()as$n){$this->errno=$n["code"];$this->error.="$n[message]\n";}$this->error=rtrim($this->error);}function
713connect($O,$V,$G){$this->_link=@sqlsrv_connect(preg_replace('~:~',',',$O),array("UID"=>$V,"PWD"=>$G,"CharacterSet"=>"UTF-8"));if($this->_link){$bd=sqlsrv_server_info($this->_link);$this->server_info=$bd['SQLServerVersion'];}else$this->_get_error();return(bool)$this->_link;}function
714quote($Q){return"'".str_replace("'","''",$Q)."'";}function
715select_db($j){return$this->query("USE ".idf_escape($j));}function
716query($H,$wg=false){$I=sqlsrv_query($this->_link,$H);$this->error="";if(!$I){$this->_get_error();return
717false;}return$this->store_result($I);}function
718multi_query($H){$this->_result=sqlsrv_query($this->_link,$H);$this->error="";if(!$this->_result){$this->_get_error();return
719false;}return
720true;}function
721store_result($I=null){if(!$I)$I=$this->_result;if(!$I)return
722false;if(sqlsrv_field_metadata($I))return
723new
724Min_Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
725true;}function
726next_result(){return$this->_result?sqlsrv_next_result($this->_result):null;}function
727result($H,$o=0){$I=$this->query($H);if(!is_object($I))return
728false;$K=$I->fetch_row();return$K[$o];}}class
729Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
730__construct($I){$this->_result=$I;}function
731_convert($K){foreach((array)$K
732as$y=>$X){if(is_a($X,'DateTime'))$K[$y]=$X->format("Y-m-d H:i:s");}return$K;}function
733fetch_assoc(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_ASSOC));}function
734fetch_row(){return$this->_convert(sqlsrv_fetch_array($this->_result,SQLSRV_FETCH_NUMERIC));}function
735fetch_field(){if(!$this->_fields)$this->_fields=sqlsrv_field_metadata($this->_result);$o=$this->_fields[$this->_offset++];$J=new
736stdClass;$J->name=$o["Name"];$J->orgname=$o["Name"];$J->type=($o["Type"]==1?254:0);return$J;}function
737seek($ce){for($s=0;$s<$ce;$s++)sqlsrv_fetch($this->_result);}function
738__destruct(){sqlsrv_free_stmt($this->_result);}}}elseif(extension_loaded("mssql")){class
739Min_DB{var$extension="MSSQL",$_link,$_result,$server_info,$affected_rows,$error;function
740connect($O,$V,$G){$this->_link=@mssql_connect($O,$V,$G);if($this->_link){$I=$this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");if($I){$K=$I->fetch_row();$this->server_info=$this->result("sp_server_info 2",2)." [$K[0]] $K[1]";}}else$this->error=mssql_get_last_message();return(bool)$this->_link;}function
741quote($Q){return"'".str_replace("'","''",$Q)."'";}function
742select_db($j){return
743mssql_select_db($j);}function
744query($H,$wg=false){$I=@mssql_query($H,$this->_link);$this->error="";if(!$I){$this->error=mssql_get_last_message();return
745false;}if($I===true){$this->affected_rows=mssql_rows_affected($this->_link);return
746true;}return
747new
748Min_Result($I);}function
749multi_query($H){return$this->_result=$this->query($H);}function
750store_result(){return$this->_result;}function
751next_result(){return
752mssql_next_result($this->_result->_result);}function
753result($H,$o=0){$I=$this->query($H);if(!is_object($I))return
754false;return
755mssql_result($I->_result,0,$o);}}class
756Min_Result{var$_result,$_offset=0,$_fields,$num_rows;function
757__construct($I){$this->_result=$I;$this->num_rows=mssql_num_rows($I);}function
758fetch_assoc(){return
759mssql_fetch_assoc($this->_result);}function
760fetch_row(){return
761mssql_fetch_row($this->_result);}function
762num_rows(){return
763mssql_num_rows($this->_result);}function
764fetch_field(){$J=mssql_fetch_field($this->_result);$J->orgtable=$J->table;$J->orgname=$J->name;return$J;}function
765seek($ce){mssql_data_seek($this->_result,$ce);}function
766__destruct(){mssql_free_result($this->_result);}}}elseif(extension_loaded("pdo_dblib")){class
767Min_DB
768extends
769Min_PDO{var$extension="PDO_DBLIB";function
770connect($O,$V,$G){$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$O)),$V,$G);return
771true;}function
772select_db($j){return$this->query("USE ".idf_escape($j));}}}class
773Min_Driver
774extends
775Min_SQL{function
776insertUpdate($R,$L,$Ee){foreach($L
777as$P){$Cg=array();$Z=array();foreach($P
778as$y=>$X){$Cg[]="$y = $X";if(isset($Ee[idf_unescape($y)]))$Z[]="$y = $X";}if(!queries("MERGE ".table($R)." USING (VALUES(".implode(", ",$P).")) AS source (c".implode(", c",range(1,count($P))).") ON ".implode(" AND ",$Z)." WHEN MATCHED THEN UPDATE SET ".implode(", ",$Cg)." WHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($P)).") VALUES (".implode(", ",$P).");"))return
779false;}return
780true;}function
781begin(){return
782queries("BEGIN TRANSACTION");}}function
783idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
784table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
785connect(){global$b;$h=new
786Min_DB;$pb=$b->credentials();if($h->connect($pb[0],$pb[1],$pb[2]))return$h;return$h->error;}function
787get_databases(){return
788get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
789limit($H,$Z,$z,$ce=0,$N=" "){return($z!==null?" TOP (".($z+$ce).")":"")." $H$Z";}function
790limit1($R,$H,$Z,$N="\n"){return
791limit($H,$Z,1,0,$N);}function
792db_collation($l,$cb){global$h;return$h->result("SELECT collation_name FROM sys.databases WHERE name = ".q($l));}function
793engines(){return
794array();}function
795logged_user(){global$h;return$h->result("SELECT SUSER_NAME()");}function
796tables_list(){return
797get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
798count_tables($k){global$h;$J=array();foreach($k
799as$l){$h->select_db($l);$J[$l]=$h->result("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
800table_status($B=""){$J=array();foreach(get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K){if($B!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
801is_view($S){return$S["Engine"]=="VIEW";}function
802fk_support($S){return
803true;}function
804fields($R){$J=array();foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default]
805FROM sys.all_columns c
806JOIN sys.all_objects o ON c.object_id = o.object_id
807JOIN sys.types t ON c.user_type_id = t.user_type_id
808LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
809WHERE o.schema_id = SCHEMA_ID(".q(get_schema()).") AND o.type IN ('S', 'U', 'V') AND o.name = ".q($R))as$K){$U=$K["type"];$xd=(preg_match("~char|binary~",$U)?$K["max_length"]:($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($xd?"($xd)":""),"type"=>$U,"length"=>$xd,"default"=>$K["default"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"primary"=>$K["is_identity"],);}return$J;}function
810indexes($R,$i=null){$J=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
811FROM sys.indexes i
812INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
813INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
814WHERE OBJECT_NAME(i.object_id) = ".q($R),$i)as$K){$B=$K["name"];$J[$B]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$B]["lengths"]=array();$J[$B]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$B]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
815view($B){global$h;return
816array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',$h->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($B))));}function
817collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$e)$J[preg_replace('~_.*~','',$e)][]=$e;return$J;}function
818information_schema($l){return
819false;}function
820error(){global$h;return
821nl_br(h(preg_replace('~^(\[[^]]*])+~m','',$h->error)));}function
822create_database($l,$e){return
823queries("CREATE DATABASE ".idf_escape($l).(preg_match('~^[a-z0-9_]+$~i',$e)?" COLLATE $e":""));}function
824drop_databases($k){return
825queries("DROP DATABASE ".implode(", ",array_map('idf_escape',$k)));}function
826rename_database($B,$e){if(preg_match('~^[a-z0-9_]+$~i',$e))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $e");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($B));return
827true;}function
828auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
829alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){$c=array();foreach($p
830as$o){$f=idf_escape($o[0]);$X=$o[1];if(!$X)$c["DROP"][]=" COLUMN $f";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);if($o[0]=="")$c["ADD"][]="\n ".implode("",$X).($R==""?substr($tc[$X[0]],16+strlen($X[0])):"");else{unset($X[6]);if($f!=$X[0])queries("EXEC sp_rename ".q(table($R).".$f").", ".q(idf_unescape($X[0])).", 'COLUMN'");$c["ALTER COLUMN ".implode("",$X)][]="";}}}if($R=="")return
831queries("CREATE TABLE ".table($B)." (".implode(",",(array)$c["ADD"])."\n)");if($R!=$B)queries("EXEC sp_rename ".q(table($R)).", ".q($B));if($tc)$c[""]=$tc;foreach($c
832as$y=>$X){if(!queries("ALTER TABLE ".idf_escape($B)." $y".implode(",",$X)))return
833false;}return
834true;}function
835alter_indexes($R,$c){$v=array();$Gb=array();foreach($c
836as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$Gb[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
837false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$Gb||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$Gb)));}function
838last_id(){global$h;return$h->result("SELECT SCOPE_IDENTITY()");}function
839explain($h,$H){$h->query("SET SHOWPLAN_ALL ON");$J=$h->query($H);$h->query("SET SHOWPLAN_ALL OFF");return$J;}function
840found_rows($S,$Z){}function
841foreign_keys($R){$J=array();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R))as$K){$wc=&$J[$K["FK_NAME"]];$wc["table"]=$K["PKTABLE_NAME"];$wc["source"][]=$K["FKCOLUMN_NAME"];$wc["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
842truncate_tables($T){return
843apply_queries("TRUNCATE TABLE",$T);}function
844drop_views($Ng){return
845queries("DROP VIEW ".implode(", ",array_map('table',$Ng)));}function
846drop_tables($T){return
847queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function
848move_tables($T,$Ng,$Vf){return
849apply_queries("ALTER SCHEMA ".idf_escape($Vf)." TRANSFER",array_merge($T,$Ng));}function
850trigger($B){if($B=="")return
851array();$L=get_rows("SELECT s.name [Trigger],
852CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
853CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
854c.text
855FROM sysobjects s
856JOIN syscomments c ON s.id = c.id
857WHERE s.xtype = 'TR' AND s.name = ".q($B));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
858triggers($R){$J=array();foreach(get_rows("SELECT sys1.name,
859CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
860CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
861FROM sysobjects sys1
862JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
863WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}function
864trigger_options(){return
865array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
866schemas(){return
867get_vals("SELECT name FROM sys.schemas");}function
868get_schema(){global$h;if($_GET["ns"]!="")return$_GET["ns"];return$h->result("SELECT SCHEMA_NAME()");}function
869set_schema($if){return
870true;}function
871use_sql($j){return"USE ".idf_escape($j);}function
872show_variables(){return
873array();}function
874show_status(){return
875array();}function
876convert_field($o){}function
877unconvert_field($o,$J){return$J;}function
878support($hc){return
879preg_match('~^(columns|database|drop_col|indexes|scheme|sql|table|trigger|view|view_trigger)$~',$hc);}$x="mssql";$vg=array();$Lf=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),)as$y=>$X){$vg+=$X;$Lf[$y]=array_keys($X);}$Bg=array();$je=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");$Bc=array("len","lower","round","upper");$Fc=array("avg","count","count distinct","max","min","sum");$Kb=array(array("date|time"=>"getdate",),array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",));}$Fb['firebird']='Firebird (alpha)';if(isset($_GET["firebird"])){$Ce=array("interbase");define("DRIVER","firebird");if(extension_loaded("interbase")){class
880Min_DB{var$extension="Firebird",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
881connect($O,$V,$G){$this->_link=ibase_connect($O,$V,$G);if($this->_link){$Fg=explode(':',$O);$this->service_link=ibase_service_attach($Fg[0],$V,$G);$this->server_info=ibase_server_info($this->service_link,IBASE_SVC_SERVER_VERSION);}else{$this->errno=ibase_errcode();$this->error=ibase_errmsg();}return(bool)$this->_link;}function
882quote($Q){return"'".str_replace("'","''",$Q)."'";}function
883select_db($j){return($j=="domain");}function
884query($H,$wg=false){$I=ibase_query($H,$this->_link);if(!$I){$this->errno=ibase_errcode();$this->error=ibase_errmsg();return
885false;}$this->error="";if($I===true){$this->affected_rows=ibase_affected_rows($this->_link);return
886true;}return
887new
888Min_Result($I);}function
889multi_query($H){return$this->_result=$this->query($H);}function
890store_result(){return$this->_result;}function
891next_result(){return
892false;}function
893result($H,$o=0){$I=$this->query($H);if(!$I||!$I->num_rows)return
894false;$K=$I->fetch_row();return$K[$o];}}class
895Min_Result{var$num_rows,$_result,$_offset=0;function
896__construct($I){$this->_result=$I;}function
897fetch_assoc(){return
898ibase_fetch_assoc($this->_result);}function
899fetch_row(){return
900ibase_fetch_row($this->_result);}function
901fetch_field(){$o=ibase_field_info($this->_result,$this->_offset++);return(object)array('name'=>$o['name'],'orgname'=>$o['name'],'type'=>$o['type'],'charsetnr'=>$o['length'],);}function
902__destruct(){ibase_free_result($this->_result);}}}class
903Min_Driver
904extends
905Min_SQL{}function
906idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
907table($u){return
908idf_escape($u);}function
909connect(){global$b;$h=new
910Min_DB;$pb=$b->credentials();if($h->connect($pb[0],$pb[1],$pb[2]))return$h;return$h->error;}function
911get_databases($rc){return
912array("domain");}function
913limit($H,$Z,$z,$ce=0,$N=" "){$J='';$J.=($z!==null?$N."FIRST $z".($ce?" SKIP $ce":""):"");$J.=" $H$Z";return$J;}function
914limit1($R,$H,$Z,$N="\n"){return
915limit($H,$Z,1,0,$N);}function
916db_collation($l,$cb){}function
917engines(){return
918array();}function
919logged_user(){global$b;$pb=$b->credentials();return$pb[1];}function
920tables_list(){global$h;$H='SELECT RDB$RELATION_NAME FROM rdb$relations WHERE rdb$system_flag = 0';$I=ibase_query($h->_link,$H);$J=array();while($K=ibase_fetch_assoc($I))$J[$K['RDB$RELATION_NAME']]='table';ksort($J);return$J;}function
921count_tables($k){return
922array();}function
923table_status($B="",$gc=false){global$h;$J=array();$tb=tables_list();foreach($tb
924as$v=>$X){$v=trim($v);$J[$v]=array('Name'=>$v,'Engine'=>'standard',);if($B==$v)return$J[$v];}return$J;}function
925is_view($S){return
926false;}function
927fk_support($S){return
928preg_match('~InnoDB|IBMDB2I~i',$S["Engine"]);}function
929fields($R){global$h;$J=array();$H='SELECT r.RDB$FIELD_NAME AS field_name,
930r.RDB$DESCRIPTION AS field_description,
931r.RDB$DEFAULT_VALUE AS field_default_value,
932r.RDB$NULL_FLAG AS field_not_null_constraint,
933f.RDB$FIELD_LENGTH AS field_length,
934f.RDB$FIELD_PRECISION AS field_precision,
935f.RDB$FIELD_SCALE AS field_scale,
936CASE f.RDB$FIELD_TYPE
937WHEN 261 THEN \'BLOB\'
938WHEN 14 THEN \'CHAR\'
939WHEN 40 THEN \'CSTRING\'
940WHEN 11 THEN \'D_FLOAT\'
941WHEN 27 THEN \'DOUBLE\'
942WHEN 10 THEN \'FLOAT\'
943WHEN 16 THEN \'INT64\'
944WHEN 8 THEN \'INTEGER\'
945WHEN 9 THEN \'QUAD\'
946WHEN 7 THEN \'SMALLINT\'
947WHEN 12 THEN \'DATE\'
948WHEN 13 THEN \'TIME\'
949WHEN 35 THEN \'TIMESTAMP\'
950WHEN 37 THEN \'VARCHAR\'
951ELSE \'UNKNOWN\'
952END AS field_type,
953f.RDB$FIELD_SUB_TYPE AS field_subtype,
954coll.RDB$COLLATION_NAME AS field_collation,
955cset.RDB$CHARACTER_SET_NAME AS field_charset
956FROM RDB$RELATION_FIELDS r
957LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
958LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
959LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
960WHERE r.RDB$RELATION_NAME = '.q($R).'
961ORDER BY r.RDB$FIELD_POSITION';$I=ibase_query($h->_link,$H);while($K=ibase_fetch_assoc($I))$J[trim($K['FIELD_NAME'])]=array("field"=>trim($K["FIELD_NAME"]),"full_type"=>trim($K["FIELD_TYPE"]),"type"=>trim($K["FIELD_SUB_TYPE"]),"default"=>trim($K['FIELD_DEFAULT_VALUE']),"null"=>(trim($K["FIELD_NOT_NULL_CONSTRAINT"])=="YES"),"auto_increment"=>'0',"collation"=>trim($K["FIELD_COLLATION"]),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),"comment"=>trim($K["FIELD_DESCRIPTION"]),);return$J;}function
962indexes($R,$i=null){$J=array();return$J;}function
963foreign_keys($R){return
964array();}function
965collations(){return
966array();}function
967information_schema($l){return
968false;}function
969error(){global$h;return
970h($h->error);}function
971types(){return
972array();}function
973schemas(){return
974array();}function
975get_schema(){return"";}function
976set_schema($if){return
977true;}function
978support($hc){return
979preg_match("~^(columns|sql|status|table)$~",$hc);}$x="firebird";$je=array("=");$Bc=array();$Fc=array();$Kb=array();}$Fb["simpledb"]="SimpleDB";if(isset($_GET["simpledb"])){$Ce=array("SimpleXML + allow_url_fopen");define("DRIVER","simpledb");if(class_exists('SimpleXMLElement')&&ini_bool('allow_url_fopen')){class
980Min_DB{var$extension="SimpleXML",$server_info='2009-04-15',$error,$timeout,$next,$affected_rows,$_result;function
981select_db($j){return($j=="domain");}function
982query($H,$wg=false){$F=array('SelectExpression'=>$H,'ConsistentRead'=>'true');if($this->next)$F['NextToken']=$this->next;$I=sdb_request_all('Select','Item',$F,$this->timeout);$this->timeout=0;if($I===false)return$I;if(preg_match('~^\s*SELECT\s+COUNT\(~i',$H)){$Pf=0;foreach($I
983as$kd)$Pf+=$kd->Attribute->Value;$I=array((object)array('Attribute'=>array((object)array('Name'=>'Count','Value'=>$Pf,))));}return
984new
985Min_Result($I);}function
986multi_query($H){return$this->_result=$this->query($H);}function
987store_result(){return$this->_result;}function
988next_result(){return
989false;}function
990quote($Q){return"'".str_replace("'","''",$Q)."'";}}class
991Min_Result{var$num_rows,$_rows=array(),$_offset=0;function
992__construct($I){foreach($I
993as$kd){$K=array();if($kd->Name!='')$K['itemName()']=(string)$kd->Name;foreach($kd->Attribute
994as$Ba){$B=$this->_processValue($Ba->Name);$Y=$this->_processValue($Ba->Value);if(isset($K[$B])){$K[$B]=(array)$K[$B];$K[$B][]=$Y;}else$K[$B]=$Y;}$this->_rows[]=$K;foreach($K
995as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=count($this->_rows);}function
996_processValue($Mb){return(is_object($Mb)&&$Mb['encoding']=='base64'?base64_decode($Mb):(string)$Mb);}function
997fetch_assoc(){$K=current($this->_rows);if(!$K)return$K;$J=array();foreach($this->_rows[0]as$y=>$X)$J[$y]=$K[$y];next($this->_rows);return$J;}function
998fetch_row(){$J=$this->fetch_assoc();if(!$J)return$J;return
999array_values($J);}function
1000fetch_field(){$pd=array_keys($this->_rows[0]);return(object)array('name'=>$pd[$this->_offset++]);}}}class
1001Min_Driver
1002extends
1003Min_SQL{public$Ee="itemName()";function
1004_chunkRequest($Sc,$qa,$F,$Zb=array()){global$h;foreach(array_chunk($Sc,25)as$Xa){$te=$F;foreach($Xa
1005as$s=>$t){$te["Item.$s.ItemName"]=$t;foreach($Zb
1006as$y=>$X)$te["Item.$s.$y"]=$X;}if(!sdb_request($qa,$te))return
1007false;}$h->affected_rows=count($Sc);return
1008true;}function
1009_extractIds($R,$Ne,$z){$J=array();if(preg_match_all("~itemName\(\) = (('[^']*+')+)~",$Ne,$Hd))$J=array_map('idf_unescape',$Hd[1]);else{foreach(sdb_request_all('Select','Item',array('SelectExpression'=>'SELECT itemName() FROM '.table($R).$Ne.($z?" LIMIT 1":"")))as$kd)$J[]=$kd->Name;}return$J;}function
1010select($R,$M,$Z,$Cc,$D=array(),$z=1,$E=0,$Ge=false){global$h;$h->next=$_GET["next"];$J=parent::select($R,$M,$Z,$Cc,$D,$z,$E,$Ge);$h->next=0;return$J;}function
1011delete($R,$Ne,$z=0){return$this->_chunkRequest($this->_extractIds($R,$Ne,$z),'BatchDeleteAttributes',array('DomainName'=>$R));}function
1012update($R,$P,$Ne,$z=0,$N="\n"){$yb=array();$fd=array();$s=0;$Sc=$this->_extractIds($R,$Ne,$z);$t=idf_unescape($P["`itemName()`"]);unset($P["`itemName()`"]);foreach($P
1013as$y=>$X){$y=idf_unescape($y);if($X=="NULL"||($t!=""&&array($t)!=$Sc))$yb["Attribute.".count($yb).".Name"]=$y;if($X!="NULL"){foreach((array)$X
1014as$ld=>$W){$fd["Attribute.$s.Name"]=$y;$fd["Attribute.$s.Value"]=(is_array($X)?$W:idf_unescape($W));if(!$ld)$fd["Attribute.$s.Replace"]="true";$s++;}}}$F=array('DomainName'=>$R);return(!$fd||$this->_chunkRequest(($t!=""?array($t):$Sc),'BatchPutAttributes',$F,$fd))&&(!$yb||$this->_chunkRequest($Sc,'BatchDeleteAttributes',$F,$yb));}function
1015insert($R,$P){$F=array("DomainName"=>$R);$s=0;foreach($P
1016as$B=>$Y){if($Y!="NULL"){$B=idf_unescape($B);if($B=="itemName()")$F["ItemName"]=idf_unescape($Y);else{foreach((array)$Y
1017as$X){$F["Attribute.$s.Name"]=$B;$F["Attribute.$s.Value"]=(is_array($Y)?$X:idf_unescape($Y));$s++;}}}}return
1018sdb_request('PutAttributes',$F);}function
1019insertUpdate($R,$L,$Ee){foreach($L
1020as$P){if(!$this->update($R,$P,"WHERE `itemName()` = ".q($P["`itemName()`"])))return
1021false;}return
1022true;}function
1023begin(){return
1024false;}function
1025commit(){return
1026false;}function
1027rollback(){return
1028false;}function
1029slowQuery($H,$bg){$this->_conn->timeout=$bg;return$H;}}function
1030connect(){global$b;list(,,$G)=$b->credentials();if($G!="")return'Database does not support password.';return
1031new
1032Min_DB;}function
1033support($hc){return
1034preg_match('~sql~',$hc);}function
1035logged_user(){global$b;$pb=$b->credentials();return$pb[1];}function
1036get_databases(){return
1037array("domain");}function
1038collations(){return
1039array();}function
1040db_collation($l,$cb){}function
1041tables_list(){global$h;$J=array();foreach(sdb_request_all('ListDomains','DomainName')as$R)$J[(string)$R]='table';if($h->error&&defined("PAGE_HEADER"))echo"<p class='error'>".error()."\n";return$J;}function
1042table_status($B="",$gc=false){$J=array();foreach(($B!=""?array($B=>true):tables_list())as$R=>$U){$K=array("Name"=>$R,"Auto_increment"=>"");if(!$gc){$Pd=sdb_request('DomainMetadata',array('DomainName'=>$R));if($Pd){foreach(array("Rows"=>"ItemCount","Data_length"=>"ItemNamesSizeBytes","Index_length"=>"AttributeValuesSizeBytes","Data_free"=>"AttributeNamesSizeBytes",)as$y=>$X)$K[$y]=(string)$Pd->$X;}}if($B!="")return$K;$J[$R]=$K;}return$J;}function
1043explain($h,$H){}function
1044error(){global$h;return
1045h($h->error);}function
1046information_schema(){}function
1047is_view($S){}function
1048indexes($R,$i=null){return
1049array(array("type"=>"PRIMARY","columns"=>array("itemName()")),);}function
1050fields($R){return
1051fields_from_edit();}function
1052foreign_keys($R){return
1053array();}function
1054table($u){return
1055idf_escape($u);}function
1056idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
1057limit($H,$Z,$z,$ce=0,$N=" "){return" $H$Z".($z!==null?$N."LIMIT $z":"");}function
1058unconvert_field($o,$J){return$J;}function
1059fk_support($S){}function
1060engines(){return
1061array();}function
1062alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){return($R==""&&sdb_request('CreateDomain',array('DomainName'=>$B)));}function
1063drop_tables($T){foreach($T
1064as$R){if(!sdb_request('DeleteDomain',array('DomainName'=>$R)))return
1065false;}return
1066true;}function
1067count_tables($k){foreach($k
1068as$l)return
1069array($l=>count(tables_list()));}function
1070found_rows($S,$Z){return($Z?null:$S["Rows"]);}function
1071last_id(){}function
1072hmac($va,$tb,$y,$Re=false){$Na=64;if(strlen($y)>$Na)$y=pack("H*",$va($y));$y=str_pad($y,$Na,"\0");$md=$y^str_repeat("\x36",$Na);$nd=$y^str_repeat("\x5C",$Na);$J=$va($nd.pack("H*",$va($md.$tb)));if($Re)$J=pack("H*",$J);return$J;}function
1073sdb_request($qa,$F=array()){global$b,$h;list($Pc,$F['AWSAccessKeyId'],$lf)=$b->credentials();$F['Action']=$qa;$F['Timestamp']=gmdate('Y-m-d\TH:i:s+00:00');$F['Version']='2009-04-15';$F['SignatureVersion']=2;$F['SignatureMethod']='HmacSHA1';ksort($F);$H='';foreach($F
1074as$y=>$X)$H.='&'.rawurlencode($y).'='.rawurlencode($X);$H=str_replace('%7E','~',substr($H,1));$H.="&Signature=".urlencode(base64_encode(hmac('sha1',"POST\n".preg_replace('~^https?://~','',$Pc)."\n/\n$H",$lf,true)));@ini_set('track_errors',1);$kc=@file_get_contents((preg_match('~^https?://~',$Pc)?$Pc:"http://$Pc"),false,stream_context_create(array('http'=>array('method'=>'POST','content'=>$H,'ignore_errors'=>1,))));if(!$kc){$h->error=$php_errormsg;return
1075false;}libxml_use_internal_errors(true);$Yg=simplexml_load_string($kc);if(!$Yg){$n=libxml_get_last_error();$h->error=$n->message;return
1076false;}if($Yg->Errors){$n=$Yg->Errors->Error;$h->error="$n->Message ($n->Code)";return
1077false;}$h->error='';$Uf=$qa."Result";return($Yg->$Uf?$Yg->$Uf:true);}function
1078sdb_request_all($qa,$Uf,$F=array(),$bg=0){$J=array();$Hf=($bg?microtime(true):0);$z=(preg_match('~LIMIT\s+(\d+)\s*$~i',$F['SelectExpression'],$A)?$A[1]:0);do{$Yg=sdb_request($qa,$F);if(!$Yg)break;foreach($Yg->$Uf
1079as$Mb)$J[]=$Mb;if($z&&count($J)>=$z){$_GET["next"]=$Yg->NextToken;break;}if($bg&µtime(true)-$Hf>$bg)return
1080false;$F['NextToken']=$Yg->NextToken;if($z)$F['SelectExpression']=preg_replace('~\d+\s*$~',$z-count($J),$F['SelectExpression']);}while($Yg->NextToken);return$J;}$x="simpledb";$je=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","IS NOT NULL");$Bc=array();$Fc=array("count");$Kb=array(array("json"));}$Fb["mongo"]="MongoDB";if(isset($_GET["mongo"])){$Ce=array("mongo","mongodb");define("DRIVER","mongo");if(class_exists('MongoDB')){class
1081Min_DB{var$extension="Mongo",$server_info=MongoClient::VERSION,$error,$last_id,$_link,$_db;function
1082connect($Dg,$C){return@new
1083MongoClient($Dg,$C);}function
1084query($H){return
1085false;}function
1086select_db($j){try{$this->_db=$this->_link->selectDB($j);return
1087true;}catch(Exception$Wb){$this->error=$Wb->getMessage();return
1088false;}}function
1089quote($Q){return$Q;}}class
1090Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
1091__construct($I){foreach($I
1092as$kd){$K=array();foreach($kd
1093as$y=>$X){if(is_a($X,'MongoBinData'))$this->_charset[$y]=63;$K[$y]=(is_a($X,'MongoId')?'ObjectId("'.strval($X).'")':(is_a($X,'MongoDate')?gmdate("Y-m-d H:i:s",$X->sec)." GMT":(is_a($X,'MongoBinData')?$X->bin:(is_a($X,'MongoRegex')?strval($X):(is_object($X)?get_class($X):$X)))));}$this->_rows[]=$K;foreach($K
1094as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=count($this->_rows);}function
1095fetch_assoc(){$K=current($this->_rows);if(!$K)return$K;$J=array();foreach($this->_rows[0]as$y=>$X)$J[$y]=$K[$y];next($this->_rows);return$J;}function
1096fetch_row(){$J=$this->fetch_assoc();if(!$J)return$J;return
1097array_values($J);}function
1098fetch_field(){$pd=array_keys($this->_rows[0]);$B=$pd[$this->_offset++];return(object)array('name'=>$B,'charsetnr'=>$this->_charset[$B],);}}class
1099Min_Driver
1100extends
1101Min_SQL{public$Ee="_id";function
1102select($R,$M,$Z,$Cc,$D=array(),$z=1,$E=0,$Ge=false){$M=($M==array("*")?array():array_fill_keys($M,true));$Af=array();foreach($D
1103as$X){$X=preg_replace('~ DESC$~','',$X,1,$mb);$Af[$X]=($mb?-1:1);}return
1104new
1105Min_Result($this->_conn->_db->selectCollection($R)->find(array(),$M)->sort($Af)->limit($z!=""?+$z:0)->skip($E*$z));}function
1106insert($R,$P){try{$J=$this->_conn->_db->selectCollection($R)->insert($P);$this->_conn->errno=$J['code'];$this->_conn->error=$J['err'];$this->_conn->last_id=$P['_id'];return!$J['err'];}catch(Exception$Wb){$this->_conn->error=$Wb->getMessage();return
1107false;}}}function
1108get_databases($rc){global$h;$J=array();$vb=$h->_link->listDBs();foreach($vb['databases']as$l)$J[]=$l['name'];return$J;}function
1109count_tables($k){global$h;$J=array();foreach($k
1110as$l)$J[$l]=count($h->_link->selectDB($l)->getCollectionNames(true));return$J;}function
1111tables_list(){global$h;return
1112array_fill_keys($h->_db->getCollectionNames(true),'table');}function
1113drop_databases($k){global$h;foreach($k
1114as$l){$af=$h->_link->selectDB($l)->drop();if(!$af['ok'])return
1115false;}return
1116true;}function
1117indexes($R,$i=null){global$h;$J=array();foreach($h->_db->selectCollection($R)->getIndexInfo()as$v){$Ab=array();foreach($v["key"]as$f=>$U)$Ab[]=($U==-1?'1':null);$J[$v["name"]]=array("type"=>($v["name"]=="_id_"?"PRIMARY":($v["unique"]?"UNIQUE":"INDEX")),"columns"=>array_keys($v["key"]),"lengths"=>array(),"descs"=>$Ab,);}return$J;}function
1118fields($R){return
1119fields_from_edit();}function
1120found_rows($S,$Z){global$h;return$h->_db->selectCollection($_GET["select"])->count($Z);}$je=array("=");}elseif(class_exists('MongoDB\Driver\Manager')){class
1121Min_DB{var$extension="MongoDB",$server_info=MONGODB_VERSION,$error,$last_id;var$_link;var$_db,$_db_name;function
1122connect($Dg,$C){$d='MongoDB\Driver\Manager';return
1123new$d($Dg,$C);}function
1124query($H){return
1125false;}function
1126select_db($j){$this->_db_name=$j;return
1127true;}function
1128quote($Q){return$Q;}}class
1129Min_Result{var$num_rows,$_rows=array(),$_offset=0,$_charset=array();function
1130__construct($I){foreach($I
1131as$kd){$K=array();foreach($kd
1132as$y=>$X){if(is_a($X,'MongoDB\BSON\Binary'))$this->_charset[$y]=63;$K[$y]=(is_a($X,'MongoDB\BSON\ObjectID')?'MongoDB\BSON\ObjectID("'.strval($X).'")':(is_a($X,'MongoDB\BSON\UTCDatetime')?$X->toDateTime()->format('Y-m-d H:i:s'):(is_a($X,'MongoDB\BSON\Binary')?$X->bin:(is_a($X,'MongoDB\BSON\Regex')?strval($X):(is_object($X)?json_encode($X,256):$X)))));}$this->_rows[]=$K;foreach($K
1133as$y=>$X){if(!isset($this->_rows[0][$y]))$this->_rows[0][$y]=null;}}$this->num_rows=$I->count;}function
1134fetch_assoc(){$K=current($this->_rows);if(!$K)return$K;$J=array();foreach($this->_rows[0]as$y=>$X)$J[$y]=$K[$y];next($this->_rows);return$J;}function
1135fetch_row(){$J=$this->fetch_assoc();if(!$J)return$J;return
1136array_values($J);}function
1137fetch_field(){$pd=array_keys($this->_rows[0]);$B=$pd[$this->_offset++];return(object)array('name'=>$B,'charsetnr'=>$this->_charset[$B],);}}class
1138Min_Driver
1139extends
1140Min_SQL{public$Ee="_id";function
1141select($R,$M,$Z,$Cc,$D=array(),$z=1,$E=0,$Ge=false){global$h;$M=($M==array("*")?array():array_fill_keys($M,1));if(count($M)&&!isset($M['_id']))$M['_id']=0;$Z=where_to_query($Z);$Af=array();foreach($D
1142as$X){$X=preg_replace('~ DESC$~','',$X,1,$mb);$Af[$X]=($mb?-1:1);}if(isset($_GET['limit'])&&is_numeric($_GET['limit'])&&$_GET['limit']>0)$z=$_GET['limit'];$z=min(200,max(1,(int)$z));$yf=$E*$z;$d='MongoDB\Driver\Query';$H=new$d($Z,array('projection'=>$M,'limit'=>$z,'skip'=>$yf,'sort'=>$Af));$df=$h->_link->executeQuery("$h->_db_name.$R",$H);return
1143new
1144Min_Result($df);}function
1145update($R,$P,$Ne,$z=0,$N="\n"){global$h;$l=$h->_db_name;$Z=sql_query_where_parser($Ne);$d='MongoDB\Driver\BulkWrite';$Ra=new$d(array());if(isset($P['_id']))unset($P['_id']);$We=array();foreach($P
1146as$y=>$Y){if($Y=='NULL'){$We[$y]=1;unset($P[$y]);}}$Cg=array('$set'=>$P);if(count($We))$Cg['$unset']=$We;$Ra->update($Z,$Cg,array('upsert'=>false));$df=$h->_link->executeBulkWrite("$l.$R",$Ra);$h->affected_rows=$df->getModifiedCount();return
1147true;}function
1148delete($R,$Ne,$z=0){global$h;$l=$h->_db_name;$Z=sql_query_where_parser($Ne);$d='MongoDB\Driver\BulkWrite';$Ra=new$d(array());$Ra->delete($Z,array('limit'=>$z));$df=$h->_link->executeBulkWrite("$l.$R",$Ra);$h->affected_rows=$df->getDeletedCount();return
1149true;}function
1150insert($R,$P){global$h;$l=$h->_db_name;$d='MongoDB\Driver\BulkWrite';$Ra=new$d(array());if(isset($P['_id'])&&empty($P['_id']))unset($P['_id']);$Ra->insert($P);$df=$h->_link->executeBulkWrite("$l.$R",$Ra);$h->affected_rows=$df->getInsertedCount();return
1151true;}}function
1152get_databases($rc){global$h;$J=array();$d='MongoDB\Driver\Command';$fb=new$d(array('listDatabases'=>1));$df=$h->_link->executeCommand('admin',$fb);foreach($df
1153as$vb){foreach($vb->databases
1154as$l)$J[]=$l->name;}return$J;}function
1155count_tables($k){$J=array();return$J;}function
1156tables_list(){global$h;$d='MongoDB\Driver\Command';$fb=new$d(array('listCollections'=>1));$df=$h->_link->executeCommand($h->_db_name,$fb);$db=array();foreach($df
1157as$I)$db[$I->name]='table';return$db;}function
1158drop_databases($k){return
1159false;}function
1160indexes($R,$i=null){global$h;$J=array();$d='MongoDB\Driver\Command';$fb=new$d(array('listIndexes'=>$R));$df=$h->_link->executeCommand($h->_db_name,$fb);foreach($df
1161as$v){$Ab=array();$g=array();foreach(get_object_vars($v->key)as$f=>$U){$Ab[]=($U==-1?'1':null);$g[]=$f;}$J[$v->name]=array("type"=>($v->name=="_id_"?"PRIMARY":(isset($v->unique)?"UNIQUE":"INDEX")),"columns"=>$g,"lengths"=>array(),"descs"=>$Ab,);}return$J;}function
1162fields($R){$p=fields_from_edit();if(!count($p)){global$m;$I=$m->select($R,array("*"),null,null,array(),10);while($K=$I->fetch_assoc()){foreach($K
1163as$y=>$X){$K[$y]=null;$p[$y]=array("field"=>$y,"type"=>"string","null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,),);}}}return$p;}function
1164found_rows($S,$Z){global$h;$Z=where_to_query($Z);$d='MongoDB\Driver\Command';$fb=new$d(array('count'=>$S['Name'],'query'=>$Z));$df=$h->_link->executeCommand($h->_db_name,$fb);$ig=$df->toArray();return$ig[0]->n;}function
1165sql_query_where_parser($Ne){$Ne=trim(preg_replace('/WHERE[\s]?[(]?\(?/','',$Ne));$Ne=preg_replace('/\)\)\)$/',')',$Ne);$Vg=explode(' AND ',$Ne);$Wg=explode(') OR (',$Ne);$Z=array();foreach($Vg
1166as$Tg)$Z[]=trim($Tg);if(count($Wg)==1)$Wg=array();elseif(count($Wg)>1)$Z=array();return
1167where_to_query($Z,$Wg);}function
1168where_to_query($Rg=array(),$Sg=array()){global$b;$tb=array();foreach(array('and'=>$Rg,'or'=>$Sg)as$U=>$Z){if(is_array($Z)){foreach($Z
1169as$ac){list($bb,$he,$X)=explode(" ",$ac,3);if($bb=="_id"){$X=str_replace('MongoDB\BSON\ObjectID("',"",$X);$X=str_replace('")',"",$X);$d='MongoDB\BSON\ObjectID';$X=new$d($X);}if(!in_array($he,$b->operators))continue;if(preg_match('~^\(f\)(.+)~',$he,$A)){$X=(float)$X;$he=$A[1];}elseif(preg_match('~^\(date\)(.+)~',$he,$A)){$ub=new
1170DateTime($X);$d='MongoDB\BSON\UTCDatetime';$X=new$d($ub->getTimestamp()*1000);$he=$A[1];}switch($he){case'=':$he='$eq';break;case'!=':$he='$ne';break;case'>':$he='$gt';break;case'<':$he='$lt';break;case'>=':$he='$gte';break;case'<=':$he='$lte';break;case'regex':$he='$regex';break;default:continue;}if($U=='and')$tb['$and'][]=array($bb=>array($he=>$X));elseif($U=='or')$tb['$or'][]=array($bb=>array($he=>$X));}}}return$tb;}$je=array("=","!=",">","<",">=","<=","regex","(f)=","(f)!=","(f)>","(f)<","(f)>=","(f)<=","(date)=","(date)!=","(date)>","(date)<","(date)>=","(date)<=",);}function
1171table($u){return$u;}function
1172idf_escape($u){return$u;}function
1173table_status($B="",$gc=false){$J=array();foreach(tables_list()as$R=>$U){$J[$R]=array("Name"=>$R);if($B==$R)return$J[$R];}return$J;}function
1174create_database($l,$e){return
1175true;}function
1176last_id(){global$h;return$h->last_id;}function
1177error(){global$h;return
1178h($h->error);}function
1179collations(){return
1180array();}function
1181logged_user(){global$b;$pb=$b->credentials();return$pb[1];}function
1182connect(){global$b;$h=new
1183Min_DB;list($O,$V,$G)=$b->credentials();$C=array();if($V.$G!=""){$C["username"]=$V;$C["password"]=$G;}$l=$b->database();if($l!="")$C["db"]=$l;try{$h->_link=$h->connect("mongodb://$O",$C);if($G!=""){$C["password"]="";try{$h->connect("mongodb://$O",$C);return'Database does not support password.';}catch(Exception$Wb){}}return$h;}catch(Exception$Wb){return$Wb->getMessage();}}function
1184alter_indexes($R,$c){global$h;foreach($c
1185as$X){list($U,$B,$P)=$X;if($P=="DROP")$J=$h->_db->command(array("deleteIndexes"=>$R,"index"=>$B));else{$g=array();foreach($P
1186as$f){$f=preg_replace('~ DESC$~','',$f,1,$mb);$g[$f]=($mb?-1:1);}$J=$h->_db->selectCollection($R)->ensureIndex($g,array("unique"=>($U=="UNIQUE"),"name"=>$B,));}if($J['errmsg']){$h->error=$J['errmsg'];return
1187false;}}return
1188true;}function
1189support($hc){return
1190preg_match("~database|indexes~",$hc);}function
1191db_collation($l,$cb){}function
1192information_schema(){}function
1193is_view($S){}function
1194convert_field($o){}function
1195unconvert_field($o,$J){return$J;}function
1196foreign_keys($R){return
1197array();}function
1198fk_support($S){}function
1199engines(){return
1200array();}function
1201alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){global$h;if($R==""){$h->_db->createCollection($B);return
1202true;}}function
1203drop_tables($T){global$h;foreach($T
1204as$R){$af=$h->_db->selectCollection($R)->drop();if(!$af['ok'])return
1205false;}return
1206true;}function
1207truncate_tables($T){global$h;foreach($T
1208as$R){$af=$h->_db->selectCollection($R)->remove();if(!$af['ok'])return
1209false;}return
1210true;}$x="mongo";$Bc=array();$Fc=array();$Kb=array(array("json"));}$Fb["elastic"]="Elasticsearch (beta)";if(isset($_GET["elastic"])){$Ce=array("json + allow_url_fopen");define("DRIVER","elastic");if(function_exists('json_decode')&&ini_bool('allow_url_fopen')){class
1211Min_DB{var$extension="JSON",$server_info,$errno,$error,$_url;function
1212rootQuery($xe,$kb=array(),$Qd='GET'){@ini_set('track_errors',1);$kc=@file_get_contents("$this->_url/".ltrim($xe,'/'),false,stream_context_create(array('http'=>array('method'=>$Qd,'content'=>$kb===null?$kb:json_encode($kb),'header'=>'Content-Type: application/json','ignore_errors'=>1,))));if(!$kc){$this->error=$php_errormsg;return$kc;}if(!preg_match('~^HTTP/[0-9.]+ 2~i',$http_response_header[0])){$this->error=$kc;return
1213false;}$J=json_decode($kc,true);if($J===null){$this->errno=json_last_error();if(function_exists('json_last_error_msg'))$this->error=json_last_error_msg();else{$jb=get_defined_constants(true);foreach($jb['json']as$B=>$Y){if($Y==$this->errno&&preg_match('~^JSON_ERROR_~',$B)){$this->error=$B;break;}}}}return$J;}function
1214query($xe,$kb=array(),$Qd='GET'){return$this->rootQuery(($this->_db!=""?"$this->_db/":"/").ltrim($xe,'/'),$kb,$Qd);}function
1215connect($O,$V,$G){preg_match('~^(https?://)?(.*)~',$O,$A);$this->_url=($A[1]?$A[1]:"http://")."$V:$G@$A[2]";$J=$this->query('');if($J)$this->server_info=$J['version']['number'];return(bool)$J;}function
1216select_db($j){$this->_db=$j;return
1217true;}function
1218quote($Q){return$Q;}}class
1219Min_Result{var$num_rows,$_rows;function
1220__construct($L){$this->num_rows=count($this->_rows);$this->_rows=$L;reset($this->_rows);}function
1221fetch_assoc(){$J=current($this->_rows);next($this->_rows);return$J;}function
1222fetch_row(){return
1223array_values($this->fetch_assoc());}}}class
1224Min_Driver
1225extends
1226Min_SQL{function
1227select($R,$M,$Z,$Cc,$D=array(),$z=1,$E=0,$Ge=false){global$b;$tb=array();$H="$R/_search";if($M!=array("*"))$tb["fields"]=$M;if($D){$Af=array();foreach($D
1228as$bb){$bb=preg_replace('~ DESC$~','',$bb,1,$mb);$Af[]=($mb?array($bb=>"desc"):$bb);}$tb["sort"]=$Af;}if($z){$tb["size"]=+$z;if($E)$tb["from"]=($E*$z);}foreach($Z
1229as$X){list($bb,$he,$X)=explode(" ",$X,3);if($bb=="_id")$tb["query"]["ids"]["values"][]=$X;elseif($bb.$X!=""){$Wf=array("term"=>array(($bb!=""?$bb:"_all")=>$X));if($he=="=")$tb["query"]["filtered"]["filter"]["and"][]=$Wf;else$tb["query"]["filtered"]["query"]["bool"]["must"][]=$Wf;}}if($tb["query"]&&!$tb["query"]["filtered"]["query"]&&!$tb["query"]["ids"])$tb["query"]["filtered"]["query"]=array("match_all"=>array());$Hf=microtime(true);$kf=$this->_conn->query($H,$tb);if($Ge)echo$b->selectQuery("$H: ".print_r($tb,true),$Hf,!$kf);if(!$kf)return
1230false;$J=array();foreach($kf['hits']['hits']as$Oc){$K=array();if($M==array("*"))$K["_id"]=$Oc["_id"];$p=$Oc['_source'];if($M!=array("*")){$p=array();foreach($M
1231as$y)$p[$y]=$Oc['fields'][$y];}foreach($p
1232as$y=>$X){if($tb["fields"])$X=$X[0];$K[$y]=(is_array($X)?json_encode($X):$X);}$J[]=$K;}return
1233new
1234Min_Result($J);}function
1235update($U,$Se,$Ne,$z=0,$N="\n"){$we=preg_split('~ *= *~',$Ne);if(count($we)==2){$t=trim($we[1]);$H="$U/$t";return$this->_conn->query($H,$Se,'POST');}return
1236false;}function
1237insert($U,$Se){$t="";$H="$U/$t";$af=$this->_conn->query($H,$Se,'POST');$this->_conn->last_id=$af['_id'];return$af['created'];}function
1238delete($U,$Ne,$z=0){$Sc=array();if(is_array($_GET["where"])&&$_GET["where"]["_id"])$Sc[]=$_GET["where"]["_id"];if(is_array($_POST['check'])){foreach($_POST['check']as$Ta){$we=preg_split('~ *= *~',$Ta);if(count($we)==2)$Sc[]=trim($we[1]);}}$this->_conn->affected_rows=0;foreach($Sc
1239as$t){$H="{$U}/{$t}";$af=$this->_conn->query($H,'{}','DELETE');if(is_array($af)&&$af['found']==true)$this->_conn->affected_rows++;}return$this->_conn->affected_rows;}}function
1240connect(){global$b;$h=new
1241Min_DB;list($O,$V,$G)=$b->credentials();if($G!=""&&$h->connect($O,$V,""))return'Database does not support password.';if($h->connect($O,$V,$G))return$h;return$h->error;}function
1242support($hc){return
1243preg_match("~database|table|columns~",$hc);}function
1244logged_user(){global$b;$pb=$b->credentials();return$pb[1];}function
1245get_databases(){global$h;$J=$h->rootQuery('_aliases');if($J){$J=array_keys($J);sort($J,SORT_STRING);}return$J;}function
1246collations(){return
1247array();}function
1248db_collation($l,$cb){}function
1249engines(){return
1250array();}function
1251count_tables($k){global$h;$J=array();$I=$h->query('_stats');if($I&&$I['indices']){$Yc=$I['indices'];foreach($Yc
1252as$Xc=>$If){$Wc=$If['total']['indexing'];$J[$Xc]=$Wc['index_total'];}}return$J;}function
1253tables_list(){global$h;$J=$h->query('_mapping');if($J)$J=array_fill_keys(array_keys($J[$h->_db]["mappings"]),'table');return$J;}function
1254table_status($B="",$gc=false){global$h;$kf=$h->query("_search",array("size"=>0,"aggregations"=>array("count_by_type"=>array("terms"=>array("field"=>"_type")))),"POST");$J=array();if($kf){$T=$kf["aggregations"]["count_by_type"]["buckets"];foreach($T
1255as$R){$J[$R["key"]]=array("Name"=>$R["key"],"Engine"=>"table","Rows"=>$R["doc_count"],);if($B!=""&&$B==$R["key"])return$J[$B];}}return$J;}function
1256error(){global$h;return
1257h($h->error);}function
1258information_schema(){}function
1259is_view($S){}function
1260indexes($R,$i=null){return
1261array(array("type"=>"PRIMARY","columns"=>array("_id")),);}function
1262fields($R){global$h;$I=$h->query("$R/_mapping");$J=array();if($I){$Dd=$I[$R]['properties'];if(!$Dd)$Dd=$I[$h->_db]['mappings'][$R]['properties'];if($Dd){foreach($Dd
1263as$B=>$o){$J[$B]=array("field"=>$B,"full_type"=>$o["type"],"type"=>$o["type"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1),);if($o["properties"]){unset($J[$B]["privileges"]["insert"]);unset($J[$B]["privileges"]["update"]);}}}}return$J;}function
1264foreign_keys($R){return
1265array();}function
1266table($u){return$u;}function
1267idf_escape($u){return$u;}function
1268convert_field($o){}function
1269unconvert_field($o,$J){return$J;}function
1270fk_support($S){}function
1271found_rows($S,$Z){return
1272null;}function
1273create_database($l){global$h;return$h->rootQuery(urlencode($l),null,'PUT');}function
1274drop_databases($k){global$h;return$h->rootQuery(urlencode(implode(',',$k)),array(),'DELETE');}function
1275alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){global$h;$Je=array();foreach($p
1276as$ec){$ic=trim($ec[1][0]);$jc=trim($ec[1][1]?$ec[1][1]:"text");$Je[$ic]=array('type'=>$jc);}if(!empty($Je))$Je=array('properties'=>$Je);return$h->query("_mapping/{$B}",$Je,'PUT');}function
1277drop_tables($T){global$h;$J=true;foreach($T
1278as$R)$J=$J&&$h->query(urlencode($R),array(),'DELETE');return$J;}function
1279last_id(){global$h;return$h->last_id;}$x="elastic";$je=array("=","query");$Bc=array();$Fc=array();$Kb=array(array("json"));$vg=array();$Lf=array();foreach(array('Numbers'=>array("long"=>3,"integer"=>5,"short"=>8,"byte"=>10,"double"=>20,"float"=>66,"half_float"=>12,"scaled_float"=>21),'Date and time'=>array("date"=>10),'Strings'=>array("string"=>65535,"text"=>65535),'Binary'=>array("binary"=>255),)as$y=>$X){$vg+=$X;$Lf[$y]=array_keys($X);}}$Fb=array("server"=>"MySQL")+$Fb;if(!defined("DRIVER")){$Ce=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
1280Min_DB
1281extends
1282MySQLi{var$extension="MySQLi";function
1283__construct(){parent::init();}function
1284connect($O="",$V="",$G="",$j=null,$Ae=null,$_f=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Pc,$Ae)=explode(":",$O,2);$Gf=$b->connectSsl();if($Gf)$this->ssl_set($Gf['key'],$Gf['cert'],$Gf['ca'],'','');$J=@$this->real_connect(($O!=""?$Pc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$G!=""?$G:ini_get("mysqli.default_pw")),$j,(is_numeric($Ae)?$Ae:ini_get("mysqli.default_port")),(!is_numeric($Ae)?$Ae:$_f),($Gf?64:0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$J;}function
1285set_charset($Sa){if(parent::set_charset($Sa))return
1286true;parent::set_charset('utf8');return$this->query("SET NAMES $Sa");}function
1287result($H,$o=0){$I=$this->query($H);if(!$I)return
1288false;$K=$I->fetch_array();return$K[$o];}function
1289quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
1290Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
1291connect($O,$V,$G){if(ini_bool("mysql.allow_local_infile")){$this->error=sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return
1292false;}$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);else$this->error=mysql_error();return(bool)$this->_link;}function
1293set_charset($Sa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Sa,$this->_link))return
1294true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Sa");}function
1295quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function
1296select_db($j){return
1297mysql_select_db($j,$this->_link);}function
1298query($H,$wg=false){$I=@($wg?mysql_unbuffered_query($H,$this->_link):mysql_query($H,$this->_link));$this->error="";if(!$I){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
1299false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
1300true;}return
1301new
1302Min_Result($I);}function
1303multi_query($H){return$this->_result=$this->query($H);}function
1304store_result(){return$this->_result;}function
1305next_result(){return
1306false;}function
1307result($H,$o=0){$I=$this->query($H);if(!$I||!$I->num_rows)return
1308false;return
1309mysql_result($I->_result,0,$o);}}class
1310Min_Result{var$num_rows,$_result,$_offset=0;function
1311__construct($I){$this->_result=$I;$this->num_rows=mysql_num_rows($I);}function
1312fetch_assoc(){return
1313mysql_fetch_assoc($this->_result);}function
1314fetch_row(){return
1315mysql_fetch_row($this->_result);}function
1316fetch_field(){$J=mysql_fetch_field($this->_result,$this->_offset++);$J->orgtable=$J->table;$J->orgname=$J->name;$J->charsetnr=($J->blob?63:0);return$J;}function
1317__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
1318Min_DB
1319extends
1320Min_PDO{var$extension="PDO_MySQL";function
1321connect($O,$V,$G){global$b;$C=array(PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Gf=$b->connectSsl();if($Gf)$C+=array(PDO::MYSQL_ATTR_SSL_KEY=>$Gf['key'],PDO::MYSQL_ATTR_SSL_CERT=>$Gf['cert'],PDO::MYSQL_ATTR_SSL_CA=>$Gf['ca'],);$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$O)),$V,$G,$C);return
1322true;}function
1323set_charset($Sa){$this->query("SET NAMES $Sa");}function
1324select_db($j){return$this->query("USE ".idf_escape($j));}function
1325query($H,$wg=false){$this->setAttribute(1000,!$wg);return
1326parent::query($H,$wg);}}}class
1327Min_Driver
1328extends
1329Min_SQL{function
1330insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
1331insertUpdate($R,$L,$Ee){$g=array_keys(reset($L));$De="INSERT INTO ".table($R)." (".implode(", ",$g).") VALUES\n";$Jg=array();foreach($g
1332as$y)$Jg[$y]="$y = VALUES($y)";$Of="\nON DUPLICATE KEY UPDATE ".implode(", ",$Jg);$Jg=array();$xd=0;foreach($L
1333as$P){$Y="(".implode(", ",$P).")";if($Jg&&(strlen($De)+$xd+strlen($Y)+strlen($Of)>1e6)){if(!queries($De.implode(",\n",$Jg).$Of))return
1334false;$Jg=array();$xd=0;}$Jg[]=$Y;$xd+=strlen($Y)+2;}return
1335queries($De.implode(",\n",$Jg).$Of);}function
1336slowQuery($H,$bg){if(min_version('5.7.8','10.1.2')){if(preg_match('~MariaDB~',$this->_conn->server_info))return"SET STATEMENT max_statement_time=$bg FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($bg*1000).") */ $A[2]";}}function
1337convertSearch($u,$X,$o){return(preg_match('~char|text|enum|set~',$o["type"])&&!preg_match("~^utf8~",$o["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->_conn).")":$u);}function
1338warnings(){$I=$this->_conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();select($I);return
1339ob_get_clean();}}function
1340tableHelp($B){$Ed=preg_match('~MariaDB~',$this->_conn->server_info);if(information_schema(DB))return
1341strtolower(($Ed?"information-schema-$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ed?"mysql$B-table/":"system-database.html");}}function
1342idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
1343table($u){return
1344idf_escape($u);}function
1345connect(){global$b,$vg,$Lf;$h=new
1346Min_DB;$pb=$b->credentials();if($h->connect($pb[0],$pb[1],$pb[2])){$h->set_charset(charset($h));$h->query("SET sql_quote_show_create = 1, autocommit = 1");if(min_version('5.7.8',10.2,$h)){$Lf['Strings'][]="json";$vg["json"]=4294967295;}return$h;}$J=$h->error;if(function_exists('iconv')&&!is_utf8($J)&&strlen($hf=iconv("windows-1250","utf-8",$J))>strlen($J))$J=$hf;return$J;}function
1347get_databases($rc){$J=get_session("dbs");if($J===null){$H=(min_version(5)?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME":"SHOW DATABASES");$J=($rc?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
1348limit($H,$Z,$z,$ce=0,$N=" "){return" $H$Z".($z!==null?$N."LIMIT $z".($ce?" OFFSET $ce":""):"");}function
1349limit1($R,$H,$Z,$N="\n"){return
1350limit($H,$Z,1,0,$N);}function
1351db_collation($l,$cb){global$h;$J=null;$nb=$h->result("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match('~ COLLATE ([^ ]+)~',$nb,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$nb,$A))$J=$cb[$A[1]][-1];return$J;}function
1352engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
1353logged_user(){global$h;return$h->result("SELECT USER()");}function
1354tables_list(){return
1355get_key_vals(min_version(5)?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
1356count_tables($k){$J=array();foreach($k
1357as$l)$J[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$J;}function
1358table_status($B="",$gc=false){$J=array();foreach(get_rows($gc&&min_version(5)?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")return$K;$J[$K["Name"]]=$K;}return$J;}function
1359is_view($S){return$S["Engine"]===null;}function
1360fk_support($S){return
1361preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function
1362fields($R){$J=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$K){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$K["Type"],$A);$J[$K["Field"]]=array("field"=>$K["Field"],"full_type"=>$K["Type"],"type"=>$A[1],"length"=>$A[2],"unsigned"=>ltrim($A[3].$A[4]),"default"=>($K["Default"]!=""||preg_match("~char|set~",$A[1])?$K["Default"]:null),"null"=>($K["Null"]=="YES"),"auto_increment"=>($K["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$K["Extra"],$A)?$A[1]:""),"collation"=>$K["Collation"],"privileges"=>array_flip(preg_split('~, *~',$K["Privileges"])),"comment"=>$K["Comment"],"primary"=>($K["Key"]=="PRI"),);}return$J;}function
1363indexes($R,$i=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$i)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;}return$J;}function
1364foreign_keys($R){global$h,$ee;static$ye='`(?:[^`]|``)+`';$J=array();$ob=$h->result("SHOW CREATE TABLE ".table($R),1);if($ob){preg_match_all("~CONSTRAINT ($ye) FOREIGN KEY ?\\(((?:$ye,? ?)+)\\) REFERENCES ($ye)(?:\\.($ye))? \\(((?:$ye,? ?)+)\\)(?: ON DELETE ($ee))?(?: ON UPDATE ($ee))?~",$ob,$Hd,PREG_SET_ORDER);foreach($Hd
1365as$A){preg_match_all("~$ye~",$A[2],$Bf);preg_match_all("~$ye~",$A[5],$Vf);$J[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Bf[0]),"target"=>array_map('idf_unescape',$Vf[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$J;}function
1366view($B){global$h;return
1367array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',$h->result("SHOW CREATE VIEW ".table($B),1)));}function
1368collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
1369as$y=>$X)asort($J[$y]);return$J;}function
1370information_schema($l){return(min_version(5)&&$l=="information_schema")||(min_version(5.5)&&$l=="performance_schema");}function
1371error(){global$h;return
1372h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$h->error));}function
1373create_database($l,$e){return
1374queries("CREATE DATABASE ".idf_escape($l).($e?" COLLATE ".q($e):""));}function
1375drop_databases($k){$J=apply_queries("DROP DATABASE",$k,'idf_escape');restart_session();set_session("dbs",null);return$J;}function
1376rename_database($B,$e){$J=false;if(create_database($B,$e)){$Xe=array();foreach(tables_list()as$R=>$U)$Xe[]=table($R)." TO ".idf_escape($B).".".table($R);$J=(!$Xe||queries("RENAME TABLE ".implode(", ",$Xe)));if($J)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$J;}function
1377auto_increment(){$Fa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Fa="";break;}if($v["type"]=="PRIMARY")$Fa=" UNIQUE";}}return" AUTO_INCREMENT$Fa";}function
1378alter_table($R,$B,$p,$tc,$gb,$Rb,$e,$Ea,$ve){$c=array();foreach($p
1379as$o)$c[]=($o[1]?($R!=""?($o[0]!=""?"CHANGE ".idf_escape($o[0]):"ADD"):" ")." ".implode($o[1]).($R!=""?$o[2]:""):"DROP ".idf_escape($o[0]));$c=array_merge($c,$tc);$Jf=($gb!==null?" COMMENT=".q($gb):"").($Rb?" ENGINE=".q($Rb):"").($e?" COLLATE ".q($e):"").($Ea!=""?" AUTO_INCREMENT=$Ea":"");if($R=="")return
1380queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$c)."\n)$Jf$ve");if($R!=$B)$c[]="RENAME TO ".table($B);if($Jf)$c[]=ltrim($Jf);return($c||$ve?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$ve):true);}function
1381alter_indexes($R,$c){foreach($c
1382as$y=>$X)$c[$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
1383queries("ALTER TABLE ".table($R).implode(",",$c));}function
1384truncate_tables($T){return
1385apply_queries("TRUNCATE TABLE",$T);}function
1386drop_views($Ng){return
1387queries("DROP VIEW ".implode(", ",array_map('table',$Ng)));}function
1388drop_tables($T){return
1389queries("DROP TABLE ".implode(", ",array_map('table',$T)));}function
1390move_tables($T,$Ng,$Vf){$Xe=array();foreach(array_merge($T,$Ng)as$R)$Xe[]=table($R)." TO ".idf_escape($Vf).".".table($R);return
1391queries("RENAME TABLE ".implode(", ",$Xe));}function
1392copy_tables($T,$Ng,$Vf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
1393as$R){$B=($Vf==DB?table("copy_$R"):idf_escape($Vf).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $B")||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return
1394false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$qg=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Vf==DB?idf_escape("copy_$qg"):idf_escape($Vf).".".idf_escape($qg))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return
1395false;}}foreach($Ng
1396as$R){$B=($Vf==DB?table("copy_$R"):idf_escape($Vf).".".table($R));$Mg=view($R);if(!queries("DROP VIEW IF EXISTS $B")||!queries("CREATE VIEW $B AS $Mg[select]"))return
1397false;}return
1398true;}function
1399trigger($B){if($B=="")return
1400array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
1401reset($L);}function
1402triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
1403trigger_options(){return
1404array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
1405routine($B,$U){global$h,$Sb,$dd,$vg;$wa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Cf="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$ug="((".implode("|",array_merge(array_keys($vg),$wa)).")\\b(?:\\s*\\(((?:[^'\")]|$Sb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ye="$Cf*(".($U=="FUNCTION"?"":$dd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ug";$nb=$h->result("SHOW CREATE $U ".idf_escape($B),2);preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$ug\\s+":"")."(.*)~is",$nb,$A);$p=array();preg_match_all("~$ye\\s*,?~is",$A[1],$Hd,PREG_SET_ORDER);foreach($Hd
1406as$se){$B=str_replace("``","`",$se[2]).$se[3];$p[]=array("field"=>$B,"type"=>strtolower($se[5]),"length"=>preg_replace_callback("~$Sb~s",'normalize_enum',$se[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$se[8] $se[7]"))),"null"=>1,"full_type"=>$se[4],"inout"=>strtoupper($se[1]),"collation"=>strtolower($se[9]),);}if($U!="FUNCTION")return
1407array("fields"=>$p,"definition"=>$A[11]);return
1408array("fields"=>$p,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function
1409routines(){return
1410get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
1411routine_languages(){return
1412array();}function
1413routine_id($B,$K){return
1414idf_escape($B);}function
1415last_id(){global$h;return$h->result("SELECT LAST_INSERT_ID()");}function
1416explain($h,$H){return$h->query("EXPLAIN ".(min_version(5.1)?"PARTITIONS ":"").$H);}function
1417found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
1418types(){return
1419array();}function
1420schemas(){return
1421array();}function
1422get_schema(){return"";}function
1423set_schema($if){return
1424true;}function
1425create_sql($R,$Ea,$Mf){global$h;$J=$h->result("SHOW CREATE TABLE ".table($R),1);if(!$Ea)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
1426truncate_sql($R){return"TRUNCATE ".table($R);}function
1427use_sql($j){return"USE ".idf_escape($j);}function
1428trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
1429show_variables(){return
1430get_key_vals("SHOW VARIABLES");}function
1431process_list(){return
1432get_rows("SHOW FULL PROCESSLIST");}function
1433show_status(){return
1434get_key_vals("SHOW STATUS");}function
1435convert_field($o){if(preg_match("~binary~",$o["type"]))return"HEX(".idf_escape($o["field"]).")";if($o["type"]=="bit")return"BIN(".idf_escape($o["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($o["field"]).")";}function
1436unconvert_field($o,$J){if(preg_match("~binary~",$o["type"]))$J="UNHEX($J)";if($o["type"]=="bit")$J="CONV($J, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$o["type"]))$J=(min_version(8)?"ST_":"")."GeomFromText($J)";return$J;}function
1437support($hc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(5.1)?"":"|event|partitioning".(min_version(5)?"":"|routine|trigger|view"))."~",$hc);}function
1438kill_process($X){return
1439queries("KILL ".number($X));}function
1440connection_id(){return"SELECT CONNECTION_ID()";}function
1441max_connections(){global$h;return$h->result("SELECT @@max_connections");}$x="sql";$vg=array();$Lf=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){$vg+=$X;$Lf[$y]=array_keys($X);}$Bg=array("unsigned","zerofill","unsigned zerofill");$je=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$Bc=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");$Fc=array("avg","count","count distinct","group_concat","max","min","sum");$Kb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","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"])."&":""):''));$ca="4.6.3";class
1442Adminer{var$operators=array("<=",">=");var$_values=array();function
1443name(){return"<a href='https://www.adminer.org/editor/'".target_blank()." id='h1'>".'Editor'."</a>";}function
1444credentials(){return
1445array(SERVER,$_GET["username"],get_password());}function
1446connectSsl(){}function
1447permanentLogin($nb=false){return
1448password_file($nb);}function
1449bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
1450serverName($O){}function
1451database(){global$h;if($h){$k=$this->databases(false);return(!$k?$h->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)"):$k[(information_schema($k[0])?1:0)]);}}function
1452schemas(){return
1453schemas();}function
1454databases($rc=true){return
1455get_databases($rc);}function
1456queryTimeout(){return
14575;}function
1458headers(){}function
1459csp(){return
1460csp();}function
1461head(){return
1462true;}function
1463css(){$J=array();$q="adminer.css";if(file_exists($q))$J[]=$q;return$J;}function
1464loginForm(){echo"<table cellspacing='0'>\n",$this->loginFormField('username','<tr><th>'.'Username'.'<td>','<input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="'.h($_GET["username"]).'" autocapitalize="off">'.script("focus(qs('#username'));")),$this->loginFormField('password','<tr><th>'.'Password'.'<td>','<input type="password" name="auth[password]">'."\n"),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
1465loginFormField($B,$Mc,$Y){return$Mc.$Y;}function
1466login($Bd,$G){return
1467true;}function
1468tableName($Rf){return
1469h($Rf["Comment"]!=""?$Rf["Comment"]:$Rf["Name"]);}function
1470fieldName($o,$D=0){return
1471h(preg_replace('~\s+\[.*\]$~','',($o["comment"]!=""?$o["comment"]:$o["field"])));}function
1472selectLinks($Rf,$P=""){$a=$Rf["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function
1473foreignKeys($R){return
1474foreign_keys($R);}function
1475backwardKeys($R,$Qf){$J=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
1476FROM information_schema.KEY_COLUMN_USAGE
1477WHERE TABLE_SCHEMA = ".q($this->database())."
1478AND REFERENCED_TABLE_SCHEMA = ".q($this->database())."
1479AND REFERENCED_TABLE_NAME = ".q($R)."
1480ORDER BY ORDINAL_POSITION",null,"")as$K)$J[$K["TABLE_NAME"]]["keys"][$K["CONSTRAINT_NAME"]][$K["COLUMN_NAME"]]=$K["REFERENCED_COLUMN_NAME"];foreach($J
1481as$y=>$X){$B=$this->tableName(table_status($y,true));if($B!=""){$kf=preg_quote($Qf);$N="(:|\\s*-)?\\s+";$J[$y]["name"]=(preg_match("(^$kf$N(.+)|^(.+?)$N$kf\$)iu",$B,$A)?$A[2].$A[3]:$B);}else
1482unset($J[$y]);}return$J;}function
1483backwardKeysPrint($Ia,$K){foreach($Ia
1484as$R=>$Ha){foreach($Ha["keys"]as$eb){$_=ME.'select='.urlencode($R);$s=0;foreach($eb
1485as$f=>$X)$_.=where_link($s++,$f,$K[$X]);echo"<a href='".h($_)."'>".h($Ha["name"])."</a>";$_=ME.'edit='.urlencode($R);foreach($eb
1486as$f=>$X)$_.="&set".urlencode("[".bracket_escape($f)."]")."=".urlencode($K[$X]);echo"<a href='".h($_)."' title='".'New item'."'>+</a> ";}}}function
1487selectQuery($H,$Hf,$fc=false){return"<!--\n".str_replace("--","--><!-- ",$H)."\n(".format_time($Hf).")\n-->\n";}function
1488rowDescription($R){foreach(fields($R)as$o){if(preg_match("~varchar|character varying~",$o["type"]))return
1489idf_escape($o["field"]);}return"";}function
1490rowDescriptions($L,$vc){$J=$L;foreach($L[0]as$y=>$X){if(list($R,$t,$B)=$this->_foreignColumn($vc,$y)){$Sc=array();foreach($L
1491as$K)$Sc[$K[$y]]=q($K[$y]);$_b=$this->_values[$R];if(!$_b)$_b=get_key_vals("SELECT $t, $B FROM ".table($R)." WHERE $t IN (".implode(", ",$Sc).")");foreach($L
1492as$Ud=>$K){if(isset($K[$y]))$J[$Ud][$y]=(string)$_b[$K[$y]];}}}return$J;}function
1493selectLink($X,$o){}function
1494selectVal($X,$_,$o,$ne){$J=$X;$_=h($_);if(preg_match('~blob|bytea~',$o["type"])&&!is_utf8($X)){$J=lang(array('%d byte','%d bytes'),strlen($ne));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ne))$J="<img src='$_' alt='$J'>";}if(like_bool($o)&&$J!="")$J=(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?'yes':'no');if($_)$J="<a href='$_'".(is_url($_)?target_blank():"").">$J</a>";if(!$_&&!like_bool($o)&&preg_match(number_type(),$o["type"]))$J="<div class='number'>$J</div>";elseif(preg_match('~date~',$o["type"]))$J="<div class='datetime'>$J</div>";return$J;}function
1495editVal($X,$o){if(preg_match('~date|timestamp~',$o["type"])&&$X!==null)return
1496preg_replace('~^(\d{2}(\d+))-(0?(\d+))-(0?(\d+))~','$1-$3-$5',$X);return$X;}function
1497selectColumnsPrint($M,$g){}function
1498selectSearchPrint($Z,$g,$w){$Z=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$pd=array();foreach($Z
1499as$y=>$X)$pd[$X["col"]]=$y;$s=0;$p=fields($_GET["select"]);foreach($g
1500as$B=>$zb){$o=$p[$B];if(preg_match("~enum~",$o["type"])||like_bool($o)){$y=$pd[$B];$s--;echo"<div>".h($zb)."<input type='hidden' name='where[$s][col]' value='".h($B)."'>:",(like_bool($o)?" <select name='where[$s][val]'>".optionlist(array(""=>"",'no','yes'),$Z[$y]["val"],true)."</select>":enum_input("checkbox"," name='where[$s][val][]'",$o,(array)$Z[$y]["val"],($o["null"]?0:null))),"</div>\n";unset($g[$B]);}elseif(is_array($C=$this->_foreignKeyOptions($_GET["select"],$B))){if($p[$B]["null"])$C[0]='('.'empty'.')';$y=$pd[$B];$s--;echo"<div>".h($zb)."<input type='hidden' name='where[$s][col]' value='".h($B)."'><input type='hidden' name='where[$s][op]' value='='>: <select name='where[$s][val]'>".optionlist($C,$Z[$y]["val"],true)."</select></div>\n";unset($g[$B]);}}$s=0;foreach($Z
1501as$X){if(($X["col"]==""||$g[$X["col"]])&&"$X[col]$X[val]"!=""){echo"<div><select name='where[$s][col]'><option value=''>(".'anywhere'.")".optionlist($g,$X["col"],true)."</select>",html_select("where[$s][op]",array(-1=>"")+$this->operators,$X["op"]),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>".script("mixin(qsl('input'), {onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});","")."</div>\n";$s++;}}echo"<div><select name='where[$s][col]'><option value=''>(".'anywhere'.")".optionlist($g,null,true)."</select>",script("qsl('select').onchange = selectAddRow;",""),html_select("where[$s][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$s][val]'></div>",script("mixin(qsl('input'), {onchange: function () { this.parentNode.firstChild.onchange(); }, onsearch: selectSearchSearch});"),"</div></fieldset>\n";}function
1502selectOrderPrint($D,$g,$w){$me=array();foreach($w
1503as$y=>$v){$D=array();foreach($v["columns"]as$X)$D[]=$g[$X];if(count(array_filter($D,'strlen'))>1&&$y!="PRIMARY")$me[$y]=implode(", ",$D);}if($me){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$me,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function
1504selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>";echo
1505html_select("limit",array("","50","100"),$z),"</div></fieldset>\n";}function
1506selectLengthPrint($Yf){}function
1507selectActionPrint($w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>","</div></fieldset>\n";}function
1508selectCommandPrint(){return
1509true;}function
1510selectImportPrint(){return
1511true;}function
1512selectEmailPrint($Ob,$g){if($Ob){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div>",script("qsl('div').onkeydown = partialArg(bodyKeydown, 'email');"),"<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p>".script("qsl('p').onkeydown = partialArg(bodyKeydown, 'email_append');","").html_select("email_addition",$g,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]'>".script("qsl('input').onchange = emailFileChange;"),"<p>".(count($Ob)==1?'<input type="hidden" name="email_field" value="'.h(key($Ob)).'">':html_select("email_field",$Ob)),"<input type='submit' name='email' value='".'Send'."'>".confirm(),"</div>\n","</div></fieldset>\n";}}function
1513selectColumnsProcess($g,$w){return
1514array(array(),array());}function
1515selectSearchProcess($p,$w){$J=array();foreach((array)$_GET["where"]as$y=>$Z){$bb=$Z["col"];$he=$Z["op"];$X=$Z["val"];if(($y<0?"":$bb).$X!=""){$hb=array();foreach(($bb!=""?array($bb=>$p[$bb]):$p)as$B=>$o){if($bb!=""||is_numeric($X)||!preg_match(number_type(),$o["type"])){$B=idf_escape($B);if($bb!=""&&$o["type"]=="enum")$hb[]=(in_array(0,$X)?"$B IS NULL OR ":"")."$B IN (".implode(", ",array_map('intval',$X)).")";else{$Zf=preg_match('~char|text|enum|set~',$o["type"]);$Y=$this->processInput($o,(!$he&&$Zf&&preg_match('~^[^%]+$~',$X)?"%$X%":$X));$hb[]=$B.($Y=="NULL"?" IS".($he==">="?" NOT":"")." $Y":(in_array($he,$this->operators)||$he=="="?" $he $Y":($Zf?" LIKE $Y":" IN (".str_replace(",","', '",$Y).")")));if($y<0&&$X=="0")$hb[]="$B IS NULL";}}}$J[]=($hb?"(".implode(" OR ",$hb).")":"1 = 0");}}return$J;}function
1516selectOrderProcess($p,$w){$Vc=$_GET["index_order"];if($Vc!="")unset($_GET["order"][1]);if($_GET["order"])return
1517array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($Vc!=""?array($w[$Vc]):$w)as$v){if($Vc!=""||$v["type"]=="INDEX"){$Hc=array_filter($v["descs"]);$zb=false;foreach($v["columns"]as$X){if(preg_match('~date|timestamp~',$p[$X]["type"])){$zb=true;break;}}$J=array();foreach($v["columns"]as$y=>$X)$J[]=idf_escape($X).(($Hc?$v["descs"][$y]:$zb)?" DESC":"");return$J;}}return
1518array();}function
1519selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
1520selectLengthProcess(){return"100";}function
1521selectEmailProcess($Z,$vc){if($_POST["email_append"])return
1522true;if($_POST["email"]){$pf=0;if($_POST["all"]||$_POST["check"]){$o=idf_escape($_POST["email_field"]);$Nf=$_POST["email_subject"];$Nd=$_POST["email_message"];preg_match_all('~\{\$([a-z0-9_]+)\}~i',"$Nf.$Nd",$Hd);$L=get_rows("SELECT DISTINCT $o".($Hd[1]?", ".implode(", ",array_map('idf_escape',array_unique($Hd[1]))):"")." FROM ".table($_GET["select"])." WHERE $o IS NOT NULL AND $o != ''".($Z?" AND ".implode(" AND ",$Z):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$p=fields($_GET["select"]);foreach($this->rowDescriptions($L,$vc)as$K){$Ye=array('{\\'=>'{');foreach($Hd[1]as$X)$Ye['{$'."$X}"]=$this->editVal($K[$X],$p[$X]);$Nb=$K[$_POST["email_field"]];if(is_mail($Nb)&&send_mail($Nb,strtr($Nf,$Ye),strtr($Nd,$Ye),$_POST["email_from"],$_FILES["email_files"]))$pf++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$pf));}return
1523false;}function
1524selectQueryBuild($M,$Z,$Cc,$D,$z,$E){return"";}function
1525messageQuery($H,$ag,$fc=false){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$H)."\n".($ag?"($ag)\n":"")."-->";}function
1526editFunctions($o){$J=array();if($o["null"]&&preg_match('~blob~',$o["type"]))$J["NULL"]='empty';$J[""]=($o["null"]||$o["auto_increment"]||like_bool($o)?"":"*");if(preg_match('~date|time~',$o["type"]))$J["now"]='now';if(preg_match('~_(md5|sha1)$~i',$o["field"],$A))$J[]=strtolower($A[1]);return$J;}function
1527editInput($R,$o,$Ca,$Y){if($o["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$Ca value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$Ca,$o,($Y||isset($_GET["select"])?$Y:0),($o["null"]?"":null));$C=$this->_foreignKeyOptions($R,$o["field"],$Y);if($C!==null)return(is_array($C)?"<select$Ca>".optionlist($C,$Y,true)."</select>":"<input value='".h($Y)."'$Ca class='hidden'>"."<input value='".h($C)."' class='jsonly'>"."<div></div>".script("qsl('input').oninput = partial(whisper, '".ME."script=complete&source=".urlencode($R)."&field=".urlencode($o["field"])."&value=');
1528qsl('div').onclick = whisperClick;",""));if(like_bool($o))return'<input type="checkbox" value="'.h($Y?$Y:1).'"'.(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?' checked':'')."$Ca>";$Nc="";if(preg_match('~time~',$o["type"]))$Nc='HH:MM:SS';if(preg_match('~date|timestamp~',$o["type"]))$Nc='[yyyy]-mm-dd'.($Nc?" [$Nc]":"");if($Nc)return"<input value='".h($Y)."'$Ca> ($Nc)";if(preg_match('~_(md5|sha1)$~i',$o["field"]))return"<input type='password' value='".h($Y)."'$Ca>";return'';}function
1529editHint($R,$o,$Y){return(preg_match('~\s+(\[.*\])$~',($o["comment"]!=""?$o["comment"]:$o["field"]),$A)?h(" $A[1]"):'');}function
1530processInput($o,$Y,$r=""){if($r=="now")return"$r()";$J=$Y;if(preg_match('~date|timestamp~',$o["type"])&&preg_match('(^'.str_replace('\$1','(?P<p1>\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\2>\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$Y,$A))$J=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$J=($o["type"]=="bit"&&preg_match('~^[0-9]+$~',$Y)?$J:q($J));if($Y==""&&like_bool($o))$J="0";elseif($Y==""&&($o["null"]||!preg_match('~char|text~',$o["type"])))$J="NULL";elseif(preg_match('~^(md5|sha1)$~',$r))$J="$r($J)";return
1531unconvert_field($o,$J);}function
1532dumpOutput(){return
1533array();}function
1534dumpFormat(){return
1535array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
1536dumpDatabase($l){}function
1537dumpTable(){echo"\xef\xbb\xbf";}function
1538dumpData($R,$Mf,$H){global$h;$I=$h->query($H,1);if($I){while($K=$I->fetch_assoc()){if($Mf=="table"){dump_csv(array_keys($K));$Mf="INSERT";}dump_csv($K);}}}function
1539dumpFilename($Rc){return
1540friendly_url($Rc);}function
1541dumpHeaders($Rc,$Sd=false){$bc="csv";header("Content-Type: text/csv; charset=utf-8");return$bc;}function
1542importServerPath(){}function
1543homepage(){return
1544true;}function
1545navigation($Rd){global$ca;echo'<h1>
1546',$this->name(),' <span class="version">',$ca,'</span>
1547<a href="https://www.adminer.org/editor/#download"',target_blank(),' id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
1548</h1>
1549';if($Rd=="auth"){$nc=true;foreach((array)$_SESSION["pwds"]as$Kg=>$uf){foreach($uf[""]as$V=>$G){if($G!==null){if($nc){echo"<p id='logins'>",script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");$nc=false;}echo"<a href='".h(auth_url($Kg,"",$V))."'>".($V!=""?h($V):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Rd);if($Rd!="db"&&$Rd!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
1550databasesPrint($Rd){}function
1551tablesPrint($T){echo"<ul id='tables'>",script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
1552as$K){echo'<li>';$B=$this->tableName($K);if(isset($K["Engine"])&&$B!="")echo"<a href='".h(ME).'select='.urlencode($K["Name"])."'".bold($_GET["select"]==$K["Name"]||$_GET["edit"]==$K["Name"],"select")." title='".'Select data'."'>$B</a>\n";}echo"</ul>\n";}function
1553_foreignColumn($vc,$f){foreach((array)$vc[$f]as$uc){if(count($uc["source"])==1){$B=$this->rowDescription($uc["table"]);if($B!=""){$t=idf_escape($uc["target"][0]);return
1554array($uc["table"],$t,$B);}}}}function
1555_foreignKeyOptions($R,$f,$Y=null){global$h;if(list($Vf,$t,$B)=$this->_foreignColumn(column_foreign_keys($R),$f)){$J=&$this->_values[$Vf];if($J===null){$S=table_status($Vf);$J=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $t, $B FROM ".table($Vf)." ORDER BY 2"));}if(!$J&&$Y!==null)return$h->result("SELECT $B FROM ".table($Vf)." WHERE $t = ".q($Y));return$J;}}}$b=(function_exists('adminer_object')?adminer_object():new
1556Adminer);function
1557page_header($dg,$n="",$Qa=array(),$eg=""){global$ba,$ca,$b,$Fb,$x;page_headers();if(is_ajax()&&$n){page_messages($n);exit;}$fg=$dg.($eg!=""?": $eg":"");$gg=strip_tags($fg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
1558<html lang="en" dir="ltr">
1559<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
1560<meta name="robots" content="noindex">
1561<title>',$gg,'</title>
1562<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=4.6.3"),'">
1563',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.6.3");if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.6.3"),'">
1564<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME)."?file=favicon.ico&version=4.6.3"),'">
1565';foreach($b->css()as$rb){echo'<link rel="stylesheet" type="text/css" href="',h($rb),'">
1566';}}echo'
1567<body class="ltr nojs">
1568';$q=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($q)&&filemtime($q)+86400>time()){$Lg=unserialize(file_get_contents($q));$Ke="-----BEGIN PUBLIC KEY-----
1569MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
1570RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
1571DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
1572h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
1573jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
1574nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
1575fQIDAQAB
1576-----END PUBLIC KEY-----
1577";if(openssl_verify($Lg["version"],base64_decode($Lg["signature"]),$Ke)==1)$_COOKIE["adminer_version"]=$Lg["version"];}echo'<script',nonce(),'>
1578mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ca', '".js_escape(ME)."', '".get_token()."')");?>});
1579document.body.className = document.body.className.replace(/ nojs/, ' js');
1580var offlineMessage = '<?php echo
1581js_escape('You are offline.'),'\';
1582var thousandsSeparator = \'',js_escape(','),'\';
1583</script>
1584
1585<div id="help" class="jush-',$x,' jsonly hidden"></div>
1586',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
1587<div id="content">
1588';if($Qa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?$_:".").'">'.$Fb[DRIVER].'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=$b->serverName(SERVER);$O=($O!=""?$O:'Server');if($Qa===false)echo"$O\n";else{echo"<a href='".($_?h($_):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Qa)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Qa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Qa
1589as$y=>$X){$zb=(is_array($X)?$X[1]:h($X));if($zb!="")echo"<a href='".h(ME."$y=").urlencode(is_array($X)?$X[0]:$X)."'>$zb</a> » ";}}echo"$dg\n";}}echo"<h2>$fg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($n);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define("PAGE_HEADER",1);}function
1590page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach($b->csp()as$qb){$Kc=array();foreach($qb
1591as$y=>$X)$Kc[]="$y $X";header("Content-Security-Policy: ".implode("; ",$Kc));}$b->headers();}function
1592csp(){return
1593array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
1594get_nonce(){static$Yd;if(!$Yd)$Yd=base64_encode(rand_string());return$Yd;}function
1595page_messages($n){$Dg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Od=$_SESSION["messages"][$Dg];if($Od){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Od)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Dg]);}if($n)echo"<div class='error'>$n</div>\n";}function
1596page_footer($Rd=""){global$b,$jg;echo'</div>
1597
1598';if($Rd!="auth"){echo'<form action="" method="post">
1599<p class="logout">
1600<input type="submit" name="logout" value="Logout" id="logout">
1601<input type="hidden" name="token" value="',$jg,'">
1602</p>
1603</form>
1604';}echo'<div id="menu">
1605';$b->navigation($Rd);echo'</div>
1606',script("setupSubmitHighlight(document);");}function
1607int32($Ud){while($Ud>=2147483648)$Ud-=4294967296;while($Ud<=-2147483649)$Ud+=4294967296;return(int)$Ud;}function
1608long2str($W,$Pg){$hf='';foreach($W
1609as$X)$hf.=pack('V',$X);if($Pg)return
1610substr($hf,0,end($W));return$hf;}function
1611str2long($hf,$Pg){$W=array_values(unpack('V*',str_pad($hf,4*ceil(strlen($hf)/4),"\0")));if($Pg)$W[]=strlen($hf);return$W;}function
1612xxtea_mx($ah,$Zg,$Pf,$ld){return
1613int32((($ah>>5&0x7FFFFFF)^$Zg<<2)+(($Zg>>3&0x1FFFFFFF)^$ah<<4))^int32(($Pf^$Zg)+($ld^$ah));}function
1614encrypt_string($Kf,$y){if($Kf=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Kf,true);$Ud=count($W)-1;$ah=$W[$Ud];$Zg=$W[0];$Le=floor(6+52/($Ud+1));$Pf=0;while($Le-->0){$Pf=int32($Pf+0x9E3779B9);$Jb=$Pf>>2&3;for($qe=0;$qe<$Ud;$qe++){$Zg=$W[$qe+1];$Td=xxtea_mx($ah,$Zg,$Pf,$y[$qe&3^$Jb]);$ah=int32($W[$qe]+$Td);$W[$qe]=$ah;}$Zg=$W[0];$Td=xxtea_mx($ah,$Zg,$Pf,$y[$qe&3^$Jb]);$ah=int32($W[$Ud]+$Td);$W[$Ud]=$ah;}return
1615long2str($W,false);}function
1616decrypt_string($Kf,$y){if($Kf=="")return"";if(!$y)return
1617false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($Kf,false);$Ud=count($W)-1;$ah=$W[$Ud];$Zg=$W[0];$Le=floor(6+52/($Ud+1));$Pf=int32($Le*0x9E3779B9);while($Pf){$Jb=$Pf>>2&3;for($qe=$Ud;$qe>0;$qe--){$ah=$W[$qe-1];$Td=xxtea_mx($ah,$Zg,$Pf,$y[$qe&3^$Jb]);$Zg=int32($W[$qe]-$Td);$W[$qe]=$Zg;}$ah=$W[$Ud];$Td=xxtea_mx($ah,$Zg,$Pf,$y[$qe&3^$Jb]);$Zg=int32($W[0]-$Td);$W[0]=$Zg;$Pf=int32($Pf-0x9E3779B9);}return
1618long2str($W,true);}$h='';$Jc=$_SESSION["token"];if(!$Jc)$_SESSION["token"]=rand(1,1e6);$jg=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$ze[$y]=$X;}}function
1619add_invalid_login(){global$b;$_c=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$_c)return;$hd=unserialize(stream_get_contents($_c));$ag=time();if($hd){foreach($hd
1620as$id=>$X){if($X[0]<$ag)unset($hd[$id]);}}$gd=&$hd[$b->bruteForceKey()];if(!$gd)$gd=array($ag+30*60,0);$gd[1]++;file_write_unlock($_c,serialize($hd));}function
1621check_invalid_login(){global$b;$hd=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$gd=$hd[$b->bruteForceKey()];$Xd=($gd[1]>29?$gd[0]-time():0);if($Xd>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Xd/60)));}$Da=$_POST["auth"];if($Da){session_regenerate_id();$Kg=$Da["driver"];$O=$Da["server"];$V=$Da["username"];$G=(string)$Da["password"];$l=$Da["db"];set_password($Kg,$O,$V,$G);$_SESSION["db"][$Kg][$O][$V][$l]=true;if($Da["permanent"]){$y=base64_encode($Kg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($l);$He=$b->permanentLogin(true);$ze[$y]="$y:".base64_encode($He?encrypt_string($G,$He):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Kg||SERVER!=$O||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($Kg,$O,$V,$l));}elseif($_POST["logout"]){if($Jc&&!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.'.' '.sprintf('Thanks for using Adminer, consider <a href="%s">donating</a>.','https://sourceforge.net/donate/index.php?group_id=264133'));}}elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$He=$b->permanentLogin();foreach($ze
1622as$y=>$X){list(,$Ya)=explode(":",$X);list($Kg,$O,$V,$l)=array_map('base64_decode',explode("-",$y));set_password($Kg,$O,$V,decrypt_string(base64_decode($Ya),$He));$_SESSION["db"][$Kg][$O][$V][$l]=true;}}function
1623unset_permanent(){global$ze;foreach($ze
1624as$y=>$X){list($Kg,$O,$V,$l)=array_map('base64_decode',explode("-",$y));if($Kg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$l==DB)unset($ze[$y]);}cookie("adminer_permanent",implode(" ",$ze));}function
1625auth_error($n){global$b,$Jc;$vf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$vf]||$_GET[$vf])&&!$Jc)$n='Session expired, please login again.';else{restart_session();add_invalid_login();$G=get_password();if($G!==null){if($G===false)$n.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$vf]&&$_GET[$vf]&&ini_bool("session.use_only_cookies"))$n='Session support must be enabled.';$F=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$F["lifetime"]);page_header('Login',$n,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'The action will be performed after successful login with the same credentials.'."\n";echo"</div>\n";$b->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!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(", ",$Ce)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])){list($Pc,$Ae)=explode(":",SERVER,2);if(is_numeric($Ae)&&$Ae<1024)auth_error('Connecting to privileged ports is not allowed.');check_invalid_login();$h=connect();$m=new
1626Min_Driver($h);}$Bd=null;if(!is_object($h)||($Bd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($h)?h($h):(is_string($Bd)?$Bd:'Invalid credentials.')));if($Da&&$_POST["token"])$_POST["token"]=$jg;$n='';if($_POST){if(!verify_token()){$cd="max_input_vars";$Ld=ini_get($cd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$Ld||$X<$Ld)){$cd=$y;$Ld=$X;}}}$n=(!$_POST["token"]&&$Ld?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$cd'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
1627email_header($Kc){return"=?UTF-8?B?".base64_encode($Kc)."?=";}function
1628send_mail($Nb,$Nf,$Nd,$Ac="",$lc=array()){$Tb=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$Nd=str_replace("\n",$Tb,wordwrap(str_replace("\r","","$Nd\n")));$Pa=uniqid("boundary");$Aa="";foreach((array)$lc["error"]as$y=>$X){if(!$X)$Aa.="--$Pa$Tb"."Content-Type: ".str_replace("\n","",$lc["type"][$y]).$Tb."Content-Disposition: attachment; filename=\"".preg_replace('~["\n]~','',$lc["name"][$y])."\"$Tb"."Content-Transfer-Encoding: base64$Tb$Tb".chunk_split(base64_encode(file_get_contents($lc["tmp_name"][$y])),76,$Tb).$Tb;}$Ka="";$Lc="Content-Type: text/plain; charset=utf-8$Tb"."Content-Transfer-Encoding: 8bit";if($Aa){$Aa.="--$Pa--$Tb";$Ka="--$Pa$Tb$Lc$Tb$Tb";$Lc="Content-Type: multipart/mixed; boundary=\"$Pa\"";}$Lc.=$Tb."MIME-Version: 1.0$Tb"."X-Mailer: Adminer Editor".($Ac?$Tb."From: ".str_replace("\n","",$Ac):"");return
1629mail($Nb,email_header($Nf),$Ka.$Nd.$Aa,$Lc);}function
1630like_bool($o){return
1631preg_match("~bool|(tinyint|bit)\\(1\\)~",$o["full_type"]);}$h->select_db($b->database());$ee="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$Fb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$p=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=$m->select($a,$M,array(where($_GET,$p)),$M);$K=($I?$I->fetch_row():array());echo$m->value($K[0],$p[$_GET["field"]]);exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Cg=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p
1632as$B=>$o){if(!isset($o["privileges"][$Cg?"update":"insert"])||$b->fieldName($o)=="")unset($p[$B]);}if($_POST&&!$n&&!isset($_GET["select"])){$Ad=$_POST["referer"];if($_POST["insert"])$Ad=($Cg?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Ad))$Ad=ME."select=".urlencode($a);$w=indexes($a);$yg=unique_array($_GET["where"],$w);$Oe="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Ad,'Item has been deleted.',$m->delete($a,$Oe,!$yg));else{$P=array();foreach($p
1633as$B=>$o){$X=process_input($o);if($X!==false&&$X!==null)$P[idf_escape($B)]=$X;}if($Cg){if(!$P)redirect($Ad);queries_redirect($Ad,'Item has been updated.',$m->update($a,$P,$Oe,!$yg));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$I=$m->insert($a,$P);$vd=($I?last_id():0);queries_redirect($Ad,sprintf('Item%s has been inserted.',($vd?" $vd":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($p
1634as$B=>$o){if(isset($o["privileges"]["select"])){$za=convert_field($o);if($_POST["clone"]&&$o["auto_increment"])$za="''";if($x=="sql"&&preg_match("~enum|set~",$o["type"]))$za="1*".idf_escape($B);$M[]=($za?"$za AS ":"").idf_escape($B);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=$m->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$n=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$p){if(!$Z){$I=$m->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array($m->primary=>"");}if($K){foreach($K
1635as$y=>$X){if(!$Z)$K[$y]=null;$p[$y]=array("field"=>$y,"null"=>($y!=$m->primary),"auto_increment"=>($y==$m->primary));}}}edit_form($a,$p,$K,$Cg);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$p=fields($a);$xc=column_foreign_keys($a);$de=$S["Oid"];parse_str($_COOKIE["adminer_import"],$sa);$ff=array();$g=array();$Yf=null;foreach($p
1636as$y=>$o){$B=$b->fieldName($o);if(isset($o["privileges"]["select"])&&$B!=""){$g[$y]=html_entity_decode(strip_tags($B),ENT_QUOTES);if(is_shortable($o))$Yf=$b->selectLengthProcess();}$ff+=$o["privileges"];}list($M,$Cc)=$b->selectColumnsProcess($g,$w);$jd=count($Cc)<count($M);$Z=$b->selectSearchProcess($p,$w);$D=$b->selectOrderProcess($p,$w);$z=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$zg=>$K){$za=convert_field($p[key($K)]);$M=array($za?$za:idf_escape(key($K)));$Z[]=where_check($zg,$p);$J=$m->select($a,$M,$Z,$M);if($J)echo
1637reset($J->fetch_row());}exit;}$Ee=$Ag=null;foreach($w
1638as$v){if($v["type"]=="PRIMARY"){$Ee=array_flip($v["columns"]);$Ag=($M?$Ee:array());foreach($Ag
1639as$y=>$X){if(in_array(idf_escape($y),$M))unset($Ag[$y]);}break;}}if($de&&!$Ee){$Ee=$Ag=array($de=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($de));}if($_POST&&!$n){$Ug=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Wa=array();foreach($_POST["check"]as$Ta)$Wa[]=where_check($Ta,$p);$Ug[]="((".implode(") OR (",$Wa)."))";}$Ug=($Ug?"\nWHERE ".implode(" AND ",$Ug):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$Ac=($M?implode(", ",$M):"*").convert_fields($g,$p,$M)."\nFROM ".table($a);$Ec=($Cc&&$jd?"\nGROUP BY ".implode(", ",$Cc):"").($D?"\nORDER BY ".implode(", ",$D):"");if(!is_array($_POST["check"])||$Ee)$H="SELECT $Ac$Ug$Ec";else{$xg=array();foreach($_POST["check"]as$X)$xg[]="(SELECT".limit($Ac,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$Ec,1).")";$H=implode(" UNION ALL ",$xg);}$b->dumpData($a,"table",$H);exit;}if(!$b->selectEmailProcess($Z,$xc)){if($_POST["save"]||$_POST["delete"]){$I=true;$ta=0;$P=array();if(!$_POST["delete"]){foreach($g
1640as$B=>$X){$X=process_input($p[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$P){if($_POST["clone"])$H="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Ee&&is_array($_POST["check"]))||$jd){$I=($_POST["delete"]?$m->delete($a,$Ug):($_POST["clone"]?queries("INSERT $H$Ug"):$m->update($a,$P,$Ug)));$ta=$h->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Qg="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$I=($_POST["delete"]?$m->delete($a,$Qg,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Qg)):$m->update($a,$P,$Qg,1)));if(!$I)break;$ta+=$h->affected_rows;}}}$Nd=lang(array('%d item has been affected.','%d items have been affected.'),$ta);if($_POST["clone"]&&$I&&$ta==1){$vd=last_id();if($vd)$Nd=sprintf('Item%s has been inserted.'," $vd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Nd,$I);if(!$_POST["delete"]){edit_form($a,$p,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n='Ctrl+click on a value to modify it.';else{$I=true;$ta=0;foreach($_POST["val"]as$zg=>$K){$P=array();foreach($K
1641as$y=>$X){$y=bracket_escape($y,1);$P[idf_escape($y)]=(preg_match('~char|text~',$p[$y]["type"])||$X!=""?$b->processInput($p[$y],$X):"NULL");}$I=$m->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($zg,$p),!$jd&&!$Ee," ");if(!$I)break;$ta+=$h->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ta),$I);}}elseif(!is_string($kc=get_file("csv_file",true)))$n=upload_error($kc);elseif(!preg_match('~~u',$kc))$n='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($sa["output"])."&format=".urlencode($_POST["separator"]));$I=true;$eb=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$kc,$Hd);$ta=count($Hd[0]);$m->begin();$N=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Hd[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$N]*)$N~",$X.$N,$Id);if(!$y&&!array_diff($Id[1],$eb)){$eb=$Id[1];$ta--;}else{$P=array();foreach($Id[1]as$s=>$bb)$P[idf_escape($eb[$s])]=($bb==""&&$p[$eb[$s]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$bb))));$L[]=$P;}}$I=(!$L||$m->insertUpdate($a,$L,$Ee));if($I)$I=$m->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ta),$I);$m->rollback();}}}$Sf=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
1642page_header('Select'.": $Sf",$n);$P=null;if(isset($ff["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if($xc[$X["col"]]&&count($xc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$P);if(!$g&&support("table"))echo"<p class='error'>".'Unable to select the table'.($p?".":": ".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($M,$g);$b->selectSearchPrint($Z,$g,$w);$b->selectOrderPrint($D,$g,$w);$b->selectLimitPrint($z);$b->selectLengthPrint($Yf);$b->selectActionPrint($w);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$zc=$h->result(count_rows($a,$Z,$jd,$Cc));$E=floor(max(0,$zc-1)/$z);}$mf=$M;$Dc=$Cc;if(!$mf){$mf[]="*";$lb=convert_fields($g,$p,$M);if($lb)$mf[]=substr($lb,2);}foreach($M
1643as$y=>$X){$o=$p[idf_unescape($X)];if($o&&($za=convert_field($o)))$mf[$y]="$za AS $X";}if(!$jd&&$Ag){foreach($Ag
1644as$y=>$X){$mf[]=idf_escape($y);if($Dc)$Dc[]=idf_escape($y);}}$I=$m->select($a,$mf,$Z,$Dc,$D,$z,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if($x=="mssql"&&$E)$I->seek($z*$E);$Pb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&$x=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z!=""&&$Cc&&$jd&&$x=="sql")$zc=$h->result(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ja=$b->backwardKeys($a,$Sf);echo"<table id='table' cellspacing='0' class='nowrap checkable'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$Cc&&$M?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Vd=array();$Bc=array();reset($M);$Qe=1;foreach($L[0]as$y=>$X){if(!isset($Ag[$y])){$X=$_GET["columns"][key($M)];$o=$p[$M?($X?$X["col"]:current($M)):$y];$B=($o?$b->fieldName($o,$Qe):($X["fun"]?"*":$y));if($B!=""){$Qe++;$Vd[$y]=$B;$f=idf_escape($y);$Qc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$zb="&desc%5B0%5D=1";echo"<th>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'<a href="'.h($Qc.($D[0]==$f||$D[0]==$y||(!$D&&$jd&&$Cc[0]==$f)?$zb:'')).'">';echo
1645apply_sql_function($X["fun"],$B)."</a>";echo"<span class='column hidden'>","<a href='".h($Qc.$zb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]){echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($y)."');");}echo"</span>";}$Bc[$y]=$X["fun"];next($M);}}$yd=array();if($_GET["modify"]){foreach($L
1646as$K){foreach($K
1647as$y=>$X)$yd[$y]=max($yd[$y],min(40,strlen(utf8_decode($X))));}}echo($Ja?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($z%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($L,$xc)as$Ud=>$K){$yg=unique_array($L[$Ud],$w);if(!$yg){$yg=array();foreach($L[$Ud]as$y=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$y))$yg[$y]=$X;}}$zg="";foreach($yg
1648as$y=>$X){if(($x=="sql"||$x=="pgsql")&&preg_match('~char|text|enum|set~',$p[$y]["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".($x!='sql'||preg_match("~^utf8~",$p[$y]["collation"])?$y:"CONVERT($y USING ".charset($h).")").")";$X=md5($X);}$zg.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X):"null%5B%5D=".urlencode($y));}echo"<tr".odd().">".(!$Cc&&$M?"":"<td>".checkbox("check[]",substr($zg,1),in_array(substr($zg,1),(array)$_POST["check"])).($jd||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$zg)."' class='edit'>".'edit'."</a>"));foreach($K
1649as$y=>$X){if(isset($Vd[$y])){$o=$p[$y];$X=$m->value($X,$o);if($X!=""&&(!isset($Pb[$y])||$Pb[$y]!=""))$Pb[$y]=(is_mail($X)?$Vd[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$o["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$zg;if(!$_&&$X!==null){foreach((array)$xc[$y]as$wc){if(count($xc[$y])==1||end($wc["source"])==$y){$_="";foreach($wc["source"]as$s=>$Bf)$_.=where_link($s,$wc["target"][$s],$L[$Ud][$Bf]);$_=($wc["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($wc["db"]),ME):ME).'select='.urlencode($wc["table"]).$_;if($wc["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($wc["ns"]),$_);if(count($wc["source"])==1)break;}}}if($y=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$yg))$_.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($yg
1650as$ld=>$W)$_.=where_link($s++,$ld,$W);}$X=select_value($X,$_,$o,$Yf);$t=h("val[$zg][".bracket_escape($y)."]");$Y=$_POST["val"][$zg][bracket_escape($y)];$Lb=!is_array($K[$y])&&is_utf8($X)&&$L[$Ud][$y]==$K[$y]&&!$Bc[$y];$Xf=preg_match('~text|lob~',$o["type"]);if(($_GET["modify"]&&$Lb)||$Y!==null){$Gc=h($Y!==null?$Y:$K[$y]);echo"<td>".($Xf?"<textarea name='$t' cols='30' rows='".(substr_count($K[$y],"\n")+1)."'>$Gc</textarea>":"<input name='$t' value='$Gc' size='$yd[$y]'>");}else{$Cd=strpos($X,"<i>...</i>");echo"<td id='$t' data-text='".($Cd?2:($Xf?1:0))."'".($Lb?"":" data-warning='".h('Use edit link to modify this value.')."'").">$X</td>";}}}if($Ja)echo"<td>";$b->backwardKeysPrint($Ja,$L[$Ud]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(!is_ajax()){if($L||$E){$Xb=true;if($_GET["page"]!="last"){if($z==""||(count($L)<$z&&($L||!$E)))$zc=($E?$E*$z:0)+count($L);elseif($x!="sql"||!$jd){$zc=($jd?false:found_rows($S,$Z));if($zc<max(1e4,2*($E+1)*$z))$zc=reset(slow_query(count_rows($a,$Z,$jd,$Cc)));else$Xb=false;}}$re=($z!=""&&($zc===false||$zc>$z||$E));if($re){echo(($zc===false?count($L)+1:$zc-$E*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.'Load more data'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, ".(+$z).", '".'Loading'."...');",""):''),"\n";}}echo"<div class='footer'><div>\n";if($L||$E){if($re){$Jd=($zc===false?$E+(count($L)>=$z?2:1):floor(($zc-1)/$z));echo"<fieldset>";if($x!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Page'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Page'."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" ...":"");for($s=max(1,$E-4);$s<min($Jd,$E+5);$s++)echo
1651pagination($s,$E);if($Jd>0){echo($E+5<$Jd?" ...":""),($Xb&&$zc!==false?pagination($Jd,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Jd'>".'last'."</a>");}}else{echo"<legend>".'Page'."</legend>",pagination(0,$E).($E>1?" ...":""),($E?pagination($E,$E):""),($Jd>$E?pagination($E+1,$E).($Jd>$E+1?" ...":""):"");}echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$Db=($Xb?"":"~ ").$zc;echo
1652checkbox("all",1,0,($zc!==false?($Xb?"":"~ ").lang(array('%d row','%d rows'),$zc):""),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Db' : checked); selectCount('selected2', this.checked || !checked ? '$Db' : checked);")."\n","</fieldset>\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
1653<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
1654</div></fieldset>
1655<fieldset><legend>Selected <span id="selected"></span></legend><div>
1656<input type="submit" name="edit" value="Edit">
1657<input type="submit" name="clone" value="Clone">
1658<input type="submit" name="delete" value="Delete">',confirm(),'</div></fieldset>
1659';}$yc=$b->dumpFormat();foreach((array)$_GET["columns"]as$f){if($f["fun"]){unset($yc['sql']);break;}}if($yc){print_fieldset("export",'Export'." <span id='selected2'></span>");$pe=$b->dumpOutput();echo($pe?html_select("output",$pe,$sa["output"])." ":""),html_select("format",$yc,$sa["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Pb,'strlen'),$g);}echo"</div></div>\n";if($b->selectImportPrint()){echo"<div>","<a href='#import'>".'Import'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import' class='hidden'>: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$sa["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</span>","</div>";}echo"<input type='hidden' name='token' value='$jg'>\n","</form>\n",(!$Cc&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$h->query("KILL ".number($_POST["kill"]));elseif(list($R,$t,$B)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$z=11;$I=$h->query("SELECT $t, $B FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$t = $_GET[value] OR ":"")."$B LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $z");for($s=1;($K=$I->fetch_row())&&$s<$z;$s++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($t))."]")."=".urlencode($K[0]))."'>".h($K[1])."</a><br>\n";if($K)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^tables\[/);",""),'<th>'.'Table','<td>'.'Rows',"</thead>\n";foreach(table_status()as$R=>$K){$B=$b->tableName($K);if(isset($K["Engine"])&&$B!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true)),"<th><a href='".h(ME).'select='.urlencode($R)."'>$B</a>";$X=format_number($K["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($K["Engine"]=="InnoDB"&&$X?"~ $X":$X)."</a>";}}echo"</table>\n","</form>\n",script("tableCheck();");}}page_footer();