From 71c9dffdaa5206697b1c258370247f388f10a7a0 Mon Sep 17 00:00:00 2001 From: Ahyan Z Date: Thu, 25 Jun 2026 17:07:57 +0100 Subject: [PATCH] add adminer --- db_manage.php | 1026 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1026 insertions(+) create mode 100644 db_manage.php diff --git a/db_manage.php b/db_manage.php new file mode 100644 index 0000000..b361e19 --- /dev/null +++ b/db_manage.php @@ -0,0 +1,1026 @@ +credentials();$L=Driver::connect($vb[0],$vb[1],$vb[2]);return(is_object($L)?$L:null);}function +idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$je=substr($v,-1);return +str_replace($je.$je,$je,substr($v,1,-1));}function +q($xh){return +connection()->quote($xh);}function +escape_string($X){return +substr(q($X),1,-1);}function +idx($sa,$z,$k=null){return($sa&&array_key_exists($z,$sa)?$sa[$z]:$k);}function +number($X){return +preg_replace('~[^0-9]+~','',$X);}function +number_type(){return'((?$X)$L[stripslashes($z)]=(is_array($X)?remove_slashes($X,$Kc):($Kc?$X:stripslashes($X)));return$L;}function +bracket_escape($v,$_a=false){static$gi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return +strtr($v,($_a?array_flip($gi):$gi));}function +min_version($Ki,$xe="",$g=null){$g=connection($g);$ch=$g->server_info;if($xe&&preg_match('~([\d.]+)-MariaDB~',$ch,$C)){$ch=$C[1];$Ki=$xe;}return$Ki&&version_compare($ch,$Ki)>=0;}function +charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function +ini_bool($Kd){$X=ini_get($Kd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function +ini_bytes($Kd){$X=ini_get($Kd);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function +sid(){static$L;if($L===null)$L=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$L;}function +set_password($Ji,$P,$V,$H){$_SESSION["pwds"][$Ji][$P][$V]=($_COOKIE["adminer_key"]&&is_string($H)?array(encrypt_string($H,$_COOKIE["adminer_key"])):$H);}function +get_password(){$L=get_session("pwds");if(is_array($L))$L=($_COOKIE["adminer_key"]?decrypt_string($L[0],$_COOKIE["adminer_key"]):false);return$L;}function +get_val($J,$m=0,$lb=null){$lb=connection($lb);$K=$lb->query($J);if(!is_object($K))return +false;$M=$K->fetch_row();return($M?$M[$m]:false);}function +get_vals($J,$c=0){$L=array();$K=connection()->query($J);if(is_object($K)){while($M=$K->fetch_row())$L[]=$M[$c];}return$L;}function +get_key_vals($J,$g=null,$fh=true){$g=connection($g);$L=array();$K=$g->query($J);if(is_object($K)){while($M=$K->fetch_row()){if($fh)$L[$M[0]]=$M[1];else$L[]=$M[0];}}return$L;}function +get_rows($J,$g=null,$l="

"){$lb=connection($g);$L=array();$K=$lb->query($J);if(is_object($K)){while($M=$K->fetch_assoc())$L[]=$M;}elseif(!$K&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$L;}function +unique_array($M,array$x){foreach($x +as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])&&!$w["partial"]){$L=array();foreach($w["columns"]as$z){if(!isset($M[$z]))continue +2;$L[$z]=$M[$z];}return$L;}}}function +escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return +idf_escape($z);}function +where(array$Z,array$n=array()){$L=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,true);$c=escape_key($z);$m=idx($n,$z,array());$Hc=$m["type"];$L[]=$c.(JUSH=="sql"&&$Hc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Hc)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Hc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Hc)&&preg_match("~[^ -@]~",$X))$L[]="$c = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$z)$L[]=escape_key($z)." IS NULL";return +implode(" AND ",$L);}function +where_check($X,array$n=array()){parse_str($X,$Ra);remove_slashes(array(&$Ra));return +where($Ra,$n);}function +where_link($t,$c,$Y,$sf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$sf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function +convert_fields(array$d,array$n,array$O=array()){$L="";foreach($d +as$z=>$X){if($O&&!in_array(idf_escape($z),$O))continue;$ta=convert_field($n[$z]);if($ta)$L +.=", $ta AS ".idf_escape($z);}return$L;}function +cookie($E,$Y,$re=2592000){header("Set-Cookie: $E=".rawurlencode($Y).($re?"; expires=".gmdate("D, d M Y H:i:s",time()+$re)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function +get_settings($rb){parse_str($_COOKIE[$rb],$gh);return$gh;}function +get_setting($z,$rb="adminer_settings",$k=null){return +idx(get_settings($rb),$z,$k);}function +save_settings(array$gh,$rb="adminer_settings"){$Y=http_build_query($gh+get_settings($rb));cookie($rb,$Y);$_COOKIE[$rb]=$Y;}function +restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function +stop_session($Pc=false){$Ci=ini_bool("session.use_cookies");if(!$Ci||$Pc){session_write_close();if($Ci&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function +set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function +auth_url($Ji,$P,$V,$j=null){$zi=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Ji=='mssql'||$Ji=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$zi,$C);return"$C[1]?".(sid()?SID."&":"").($Ji!="server"||$P!=""?urlencode($Ji)."=".urlencode($P)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($C[2]?"&$C[2]":"");}function +is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function +redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function +query_redirect($J,$B,$D,$yg=true,$vc=true,$Dc=false,$Th=""){if($vc){$th=microtime(true);$Dc=!connection()->query($J);$Th=format_time($th);}$oh=($J?adminer()->messageQuery($J,$Th,$Dc):"");if($Dc){adminer()->error +.=error().$oh.script("messagesPrint();")."
";return +false;}if($yg)redirect($B,$D.$oh);return +true;}class +Queries{static$queries=array();static$start=0;}function +queries($J){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$J:(preg_match('~;$~',$J)?"DELIMITER ;;\n$J;\nDELIMITER ":$J).";");return +connection()->query($J);}function +apply_queries($J,array$T,$rc='Adminer\table'){foreach($T +as$R){if(!queries("$J ".$rc($R)))return +false;}return +true;}function +queries_redirect($B,$D,$yg){$tg=implode("\n",Queries::$queries);$Th=format_time(Queries::$start);return +query_redirect($tg,$B,$D,$yg,false,!$yg,$Th);}function +format_time($th){return +lang(0,max(0,microtime(true)-$th));}function +relative_uri(){return +str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function +remove_from_uri($Lf=""){return +substr(preg_replace("~(?<=[?&])($Lf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function +get_file($z,$Gb=false,$Mb=""){$Jc=$_FILES[$z];if(!$Jc)return +null;foreach($Jc +as$z=>$X)$Jc[$z]=(array)$X;$L='';foreach($Jc["error"]as$z=>$l){if($l)return$l;$E=$Jc["name"][$z];$bi=$Jc["tmp_name"][$z];$nb=file_get_contents($Gb&&preg_match('~\.gz$~',$E)?"compress.zlib://$bi":$bi);if($Gb){$th=substr($nb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$th))$nb=iconv("utf-16","utf-8",$nb);elseif($th=="\xEF\xBB\xBF")$nb=substr($nb,3);}$L +.=$nb;if($Mb)$L +.=(preg_match("($Mb\\s*\$)",$nb)?"":$Mb)."\n\n";}return$L;}function +upload_error($l){$Fe=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?lang(1).($Fe?" ".lang(2,$Fe):""):lang(3));}function +repeat_pattern($Yf,$pe){return +str_repeat("$Yf{0,65535}",$pe/65535)."$Yf{0,".($pe%65535)."}";}function +is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function +format_number($X){return +strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function +friendly_url($X){return +preg_replace('~\W~i','-',$X);}function +table_status1($R,$Ec=false){$L=table_status($R,$Ec);return($L?reset($L):array("Name"=>$R));}function +column_foreign_keys($R){$L=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$L[$X][]=$p;}return$L;}function +fields_from_edit(){$L=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$E=bracket_escape($z,true);$L[$E]=array("field"=>$E,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($z==driver()->primary),);}return$L;}function +dump_headers($wd,$Ue=false){$L=adminer()->dumpHeaders($wd,$Ue);$If=$_POST["output"];if($If!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($wd).".$L".($If!="file"&&preg_match('~^[0-9a-z]+$~',$If)?".$If":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$L;}function +dump_csv(array$M){$mi=$_POST["format"]=="tsv";foreach($M +as$z=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($mi?'\t':'[,;]|^$').'~',$X))$M[$z]='"'.str_replace('"','""',$X).'"';}echo +implode(($_POST["format"]=="csv"?",":($mi?"\t":";")),$M)."\r\n";}function +apply_sql_function($r,$c){return($r?($r=="unixepoch"?"DATETIME($c, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$c)"):$c);}function +get_temp_dir(){$L=ini_get("upload_tmp_dir");if(!$L){if(function_exists('sys_get_temp_dir'))$L=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$L=dirname($o);unlink($o);}}return$L;}function +file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;@chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function +file_write_unlock($q,$Ab){rewind($q);fwrite($q,$Ab);ftruncate($q,strlen($Ab));file_unlock($q);}function +file_unlock($q){flock($q,LOCK_UN);fclose($q);}function +first(array$sa){return +reset($sa);}function +password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$L=stream_get_contents($q);if(!$L){$L=rand_string();file_write_unlock($q,$L);}else +file_unlock($q);return$L;}function +rand_string(){return +md5(uniqid(strval(mt_rand()),true));}function +select_value($X,$A,array$m,$Sh){if(is_array($X)){$L="";if(array_filter($X,'is_array')==array_values($X)){$ce=array();foreach($X +as$W)$ce+=array_fill_keys(array_keys($W),null);foreach(array_keys($ce)as$be)$L +.="".h($be);foreach($X +as$W){$L +.="";foreach(array_merge($ce,$W)as$Fi)$L +.="".select_value($Fi,$A,$m,$Sh);}}else{foreach($X +as$be=>$W)$L +.="".($X!=array_values($X)?"".h($be):"")."".select_value($W,$A,$m,$Sh);}return"$L
";}if(!$A)$A=adminer()->selectLink($X,$m);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$L=adminer()->editVal(driver()->value($X,$m),$m);if($L!==null){if(!is_utf8($L))$L="\0";elseif($Sh!=""&&is_shortable($m))$L=shorten_utf8($L,max(0,+$Sh));else$L=h($L);}return +adminer()->selectVal($L,$A,$m,$X);}function +is_blob(array$m){return +preg_match('~blob|bytea|raw|file~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),lang(6),array()));}function +is_mail($fc){$ua='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Ub='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Yf="$ua+(\\.$ua+)*@($Ub?\\.)+$Ub";return +is_string($fc)&&preg_match("(^$Yf(,\\s*$Yf)*\$)i",$fc);}function +is_url($xh){$Ub='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return +preg_match("~^((https?):)?//($Ub?\\.)+$Ub(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$xh);}function +is_shortable(array$m){return!preg_match('~'.number_type().'|date|time|year~',$m["type"]);}function +host_port($P){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$P,$C)?array($C[2].$C[3],$C[4]):array($P,''));}function +count_rows($R,array$Z,$Ud,array$s){$J=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Ud&&(JUSH=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$J":"SELECT COUNT(*)".($Ud?" FROM (SELECT 1$J GROUP BY ".implode(", ",$s).") x":$J));}function +slow_query($J){$j=adminer()->database();$Uh=adminer()->queryTimeout();$kh=driver()->slowQuery($J,$Uh);$g=null;if(!$kh&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$de=get_val(connection_id(),0,$g);echo +script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$de&token=".get_token()."'); }, 1000 * $Uh);");}}ob_flush();flush();$L=@get_key_vals(($kh?:$J),$g,false);if($g){echo +script("clearTimeout(timeout);");ob_flush();flush();}return$L;}function +get_token(){$wg=rand(1,1e6);return($wg^$_SESSION["token"]).":$wg";}function +verify_token(){list($ci,$wg)=explode(":",$_POST["token"]);return($wg^$_SESSION["token"])==$ci;}function +lzw_decompress($Fa){$Rb=256;$Ga=8;$Za=array();$Hg=0;$Ig=0;for($t=0;$t=$Ga){$Ig-=$Ga;$Za[]=$Hg>>$Ig;$Hg&=(1<<$Ig)-1;$Rb++;if($Rb>>$Ga)$Ga++;}}$Qb=range("\0","\xFF");$L="";$Ti="";foreach($Za +as$t=>$Ya){$ec=$Qb[$Ya];if(!isset($ec))$ec=$Ti.$Ti[0];$L +.=$ec;if($t)$Qb[]=$Ti.$ec[0];$Ti=$ec;}return$L;}function +script($mh,$fi="\n"){return"$mh$fi";}function +script_src($_i,$Jb=false){return"\n";}function +nonce(){return' nonce="'.get_nonce().'"';}function +input_hidden($E,$Y=""){return"\n";}function +input_token(){return +input_hidden("token",get_token());}function +target_blank(){return' target="_blank" rel="noreferrer noopener"';}function +h($xh){return +str_replace("\0","�",htmlspecialchars($xh,ENT_QUOTES,'utf-8'));}function +nl_br($xh){return +str_replace("\n","
",$xh);}function +checkbox($E,$Y,$Ta,$fe="",$rf="",$Xa="",$he=""){$L="".($rf?script("qsl('input').onclick = function () { $rf };",""):"");return($fe!=""||$Xa?"$L".h($fe)."":$L);}function +optionlist($vf,$Xg=null,$Di=false){$L="";foreach($vf +as$be=>$W){$wf=array($be=>$W);if(is_array($W)){$L +.='';$wf=$W;}foreach($wf +as$z=>$X)$L +.=''.h($X);if(is_array($W))$L +.='';}return$L;}function +html_select($E,array$vf,$Y="",$qf="",$he=""){static$fe=0;$ge="";if(!$he&&substr($vf[""],0,1)=="("){$fe++;$he="label-$fe";$ge="

","$oe",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","
\n";}function +selectSearchPrint(array$Z,array$d,array$x){print_fieldset("search",lang(48),$Z);foreach($x +as$t=>$w){if($w["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),(JUSH=='sql'?checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"):''),"
\n";}$Oa="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"
".select_input(" name='where[$t][col]'",$d,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(49).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Oa),"",script("mixin(qsl('input'), {oninput: function () { $Oa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function +selectOrderPrint(array$xf,array$d,array$x){print_fieldset("sort",lang(50),$xf);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"
".select_input(" name='order[$t]'",$d,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),lang(51))."
\n";$t++;}}echo"
".select_input(" name='order[$t]'",$d,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(51))."
\n","\n";}function +selectLimitPrint($_){echo"
".lang(52)."
","",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function +selectLengthPrint($Sh){if($Sh!==null)echo"
".lang(53)."
","","
\n";}function +selectActionPrint(array$x){echo"
".lang(54)."
",""," ","\n","const indexColumns = ";$d=array();foreach($x +as$w){$zb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$zb)$d[$zb]=1;}$d[""]=1;foreach($d +as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function +selectCommandPrint(){return!information_schema(DB);}function +selectImportPrint(){return!information_schema(DB);}function +selectEmailPrint(array$gc,array$d){}function +selectColumnsProcess(array$d,array$x){$O=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$O[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$s[]=$O[$z];}}return +array($O,$s);}function +selectSearchProcess(array$n,array$x){$L=array();foreach($x +as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$L[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){$ab=$X["col"];if("$ab$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$kb=array();foreach(($ab!=""?array($ab=>$n[$ab]):$n)as$E=>$m){$kg="";$jb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Ad=process_length($X["val"]);$jb +.=" ".($Ad!=""?$Ad:"(NULL)");}elseif($X["op"]=="SQL")$jb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$C))$jb=" $C[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$kg="$X[op](".q($X["val"]).", ";$jb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$jb +.=" ".adminer()->processInput($m,$X["val"]);if($ab!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$kb[]=$kg.driver()->convertSearch(idf_escape($E),$X,$m).$jb;}$L[]=(count($kb)==1?$kb[0]:($kb?"(".implode(" OR ",$kb).")":"1 = 0"));}}return$L;}function +selectOrderProcess(array$n,array$x){$L=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$L[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$L;}function +selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function +selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function +selectEmailProcess(array$Z,array$Rc){return +false;}function +selectQueryBuild(array$O,array$Z,array$s,array$xf,$_,$G){return"";}function +messageQuery($J,$Th,$Dc=false){restart_session();$pd=&get_session("queries");if(!idx($pd,$_GET["db"]))$pd[$_GET["db"]]=array();if(strlen($J)>1e6)$J=preg_replace('~[\x80-\xFF]+$~','',substr($J,0,1e6))."\n…";$pd[$_GET["db"]][]=array($J,time(),$Th);$qh="sql-".count($pd[$_GET["db"]]);$L="".lang(56)." 🗐\n";if(!$Dc&&($Pi=driver()->warnings())){$u="warnings-".count($pd[$_GET["db"]]);$L="".lang(38).", $L\n";}return" ".@date("H:i:s").""." $L';}function +editRowPrint($R,array$n,$M,$wi){}function +editFunctions(array$m){$L=($m["null"]?"NULL/":"");$wi=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$z=>$Yc){if(!$z||(!isset($_GET["call"])&&$wi)){foreach($Yc +as$Yf=>$X){if(!$Yf||preg_match("~$Yf~",$m["type"]))$L +.="/$X";}}if($z&&$Yc&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$L +.="/SQL";}if($m["auto_increment"]&&!$wi)$L=lang(43);return +explode("/",$L);}function +editInput($R,array$m,$va,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$va,$m,$Y,"NULL");return"";}function +editHint($R,array$m,$Y){return"";}function +processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$E=$m["field"];$L=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$L="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$L=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$L=idf_escape($E)." $r $L";elseif(preg_match('~^[+-] interval$~',$r))$L=idf_escape($E)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$L);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$L="$r(".idf_escape($E).", $L)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$L="$r($L)";return +unconvert_field($m,$L);}function +dumpOutput(){$L=array('text'=>lang(57),'file'=>lang(58));if(function_exists('gzencode'))$L['gz']='gzip';return$L;}function +dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function +dumpDatabase($j){}function +dumpTable($R,$zh,$Yd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($zh)dump_csv(array_keys(fields($R)));}else{if($Yd==2){$n=array();foreach(fields($R)as$E=>$m)$n[]=idf_escape($E)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$zh);set_utf8mb4($h);if($zh&&$h){if($zh=="DROP+CREATE"||$Yd==1)echo"DROP ".($Yd==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Yd==1)$h=remove_definer($h);echo"$h;\n\n";}}}function +dumpData($R,$zh,$J){if($zh){$Ce=(JUSH=="sqlite"?0:1048576);$n=array();$xd=false;if($_POST["format"]=="sql"){if($zh=="TRUNCATE+INSERT")echo +truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n +as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$xd=true;break;}}}}$K=connection()->query($J,1);if($K){$Nd="";$Ka="";$ce=array();$Zc=array();$Ah="";$Gc=($R!=''?'fetch_assoc':'fetch_row');$sb=0;while($M=$K->$Gc()){if(!$ce){$Hi=array();foreach($M +as$X){$m=$K->fetch_field();if(idx($n[$m->name],'generated')){$Zc[$m->name]=true;continue;}$ce[]=$m->name;$z=idf_escape($m->name);$Hi[]="$z = VALUES($z)";}$Ah=($zh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hi):"").";\n";}if($_POST["format"]!="sql"){if($zh=="table"){dump_csv($ce);$zh="INSERT";}dump_csv($M);}else{if(!$Nd)$Nd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$ce)).") VALUES";foreach($M +as$z=>$X){if($Zc[$z]){unset($M[$z]);continue;}$m=$n[$z];$M[$z]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Pg=($Ce?"\n":" ")."(".implode(",\t",$M).")";if(!$Ka)$Ka=$Nd.$Pg;elseif(JUSH=='mssql'?$sb%1000!=0:strlen($Ka)+4+strlen($Pg)+strlen($Ah)<$Ce)$Ka +.=",$Pg";else{echo$Ka.$Ah;$Ka=$Nd.$Pg;}}$sb++;}if($Ka)echo$Ka.$Ah;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($xd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function +dumpFilename($wd){return +friendly_url($wd!=""?$wd:(SERVER?:"localhost"));}function +dumpHeaders($wd,$Ue=false){$If=$_POST["output"];$zc=(preg_match('~sql~',$_POST["format"])?"sql":($Ue?"tar":"csv"));header("Content-Type: ".($If=="gz"?"application/x-gzip":($zc=="tar"?"application/x-tar":($zc=="sql"||$If!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($If=="gz"){ob_start(function($xh){return +gzencode($xh);},1e6);}return$zc;}function +dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function +importServerPath(){return"adminer.sql";}function +homepage(){echo'

".adminer()->name()." ".VERSION;$cf=$_COOKIE["adminer_version"];echo" ".(version_compare(VERSION,$cf)<0?h($cf):"")."","

\n";switch_lang();if($Re=="auth"){$If="";foreach((array)$_SESSION["pwds"]as$Ji=>$dh){foreach($dh +as$P=>$Ei){$E=h(get_setting("vendor-$Ji-$P")?:get_driver($Ji));foreach($Ei +as$V=>$H){if($H!==null){$Fb=$_SESSION["db"][$Ji][$P][$V];foreach(($Fb?array_keys($Fb):array(""))as$j)$If +.="
  • ($E) ".h("$V@".($P!=""?adminer()->serverName($P):"").($j!=""?" - $j":""))."\n";}}}}if($If)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Re&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Re);$ha=array();if(DB==""||!$Re){if(support("sql")){$ha[]="".lang(56)."";$ha[]="".lang(67)."";}$ha[]="".lang(68)."";}$Bd=$_GET["ns"]!==""&&!$Re&&DB!="";if($Bd&&function_exists('Adminer\alter_table'))$ha[]='".lang(69)."";echo($ha?"

    ".lang(11)."

    \n";}}}function +syntaxHighlighting(array$T){echo +script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.4.2",true);if(support("sql")){echo"\n";if($T){$te=array();foreach($T +as$R=>$U)$te[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$te).')\b/g',false);if(support('routine')){foreach(routines()as$M)json_row(js_escape(ME).'function='.urlencode($M["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($M["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Jh=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n +as$m)$Jh[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Jh)."); });\n";}}echo"\n";}echo +script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function +databasesPrint($Re){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"
    \n

    \n";hidden_fields_get();$Db=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"","\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo +input_hidden($X);break;}}echo"

    \n";}function +tablesPrint(array$T){echo"
      ".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T +as$R=>$uh){$R="$R";$E=adminer()->tableName($uh);if($E!=""&&!$uh["partition"])echo'
    • ".lang(71)." ",(support("table")||support("indexes")?'$E":"$E")."\n";}echo"
    \n";}function +showVariables(){return +show_variables();}function +showStatus(){return +show_status();}function +processList(){return +process_list();}function +killProcess($u){return +kill_process($u);}}class +Plugins{private +static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function +__construct($dg){if($dg===null){$dg=array();$Ea="adminer-plugins";if(is_dir($Ea)){foreach(glob("$Ea/*.php")as$o)$this->includeOnce($o);}$od=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ea.php")){$Cd=$this->includeOnce("$Ea.php");if(is_array($Cd)){foreach($Cd +as$cg)$dg[get_class($cg)]=$cg;}else$this->error +.=lang(72,"$Ea.php",$od)."
    ";}foreach(get_declared_classes()as$Xa){if(!$dg[$Xa]&&(preg_match('~^Adminer\w~i',$Xa)||is_subclass_of($Xa,'Adminer\Plugin'))){$Cg=new +\ReflectionClass($Xa);$mb=$Cg->getConstructor();if($mb&&$mb->getNumberOfRequiredParameters())$this->error +.=lang(73,$od,"$Xa","$Ea.php")."
    ";else$dg[$Xa]=new$Xa;}}}$this->plugins=$dg;$ia=new +Adminer;$dg[]=$ia;$Cg=new +\ReflectionObject($ia);foreach($Cg->getMethods()as$Pe){foreach($dg +as$cg){$E=$Pe->getName();if(method_exists($cg,$E))$this->hooks[$E][]=$cg;}}}function +includeOnce($o){return +include_once"./$o";}function +__call($E,array$Mf){$ra=array();foreach($Mf +as$z=>$X)$ra[]=&$Mf[$z];$L=null;foreach($this->hooks[$E]as$cg){$Y=call_user_func_array(array($cg,$E),$ra);if($Y!==null){if(!self::$append[$E])return$Y;$L=$Y+(array)$L;}}return$L;}}abstract +class +Plugin{protected$translations=array();function +description(){return$this->lang('');}function +screenshot(){return"";}protected +function +lang($v,$F=null){$ra=func_get_args();$ra[0]=idx($this->translations[LANG],$v)?:$v;return +call_user_func_array('Adminer\lang_format',$ra);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new +Plugins(null):new +Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class +Db +extends +\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function +__construct(){parent::init();}function +attach($P,$V,$H){mysqli_report(MYSQLI_REPORT_OFF);list($sd,$eg)=host_port($P);$sh=adminer()->connectSsl();if($sh)$this->ssl_set($sh['key'],$sh['cert'],$sh['ca'],'','');$L=@$this->real_connect(($P!=""?$sd:ini_get("mysqli.default_host")),($P.$V!=""?$V:ini_get("mysqli.default_user")),($P.$V.$H!=""?$H:ini_get("mysqli.default_pw")),null,(is_numeric($eg)?intval($eg):ini_get("mysqli.default_port")),(is_numeric($eg)?null:$eg),($sh?($sh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($L?'':$this->error);}function +set_charset($Qa){if(parent::set_charset($Qa))return +true;parent::set_charset('utf8');return$this->query("SET NAMES $Qa");}function +next_result(){return +self::more_results()&&parent::next_result();}function +quote($xh){return"'".$this->escape_string($xh)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class +Db +extends +SqlDb{private$link;function +attach($P,$V,$H){if(ini_bool("mysql.allow_local_infile"))return +lang(74,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($P!=""?$P:ini_get("mysql.default_host")),($P.$V!=""?$V:ini_get("mysql.default_user")),($P.$V.$H!=""?$H:ini_get("mysql.default_password")),true,131072);if(!$this->link)return +mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function +set_charset($Qa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Qa,$this->link))return +true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Qa");}function +quote($xh){return"'".mysql_real_escape_string($xh,$this->link)."'";}function +select_db($Cb){return +mysql_select_db($Cb,$this->link);}function +query($J,$pi=false){$K=@($pi?mysql_unbuffered_query($J,$this->link):mysql_query($J,$this->link));$this->error="";if(!$K){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return +false;}if($K===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return +true;}return +new +Result($K);}}class +Result{var$num_rows;private$result;private$offset=0;function +__construct($K){$this->result=$K;$this->num_rows=mysql_num_rows($K);}function +fetch_assoc(){return +mysql_fetch_assoc($this->result);}function +fetch_row(){return +mysql_fetch_row($this->result);}function +fetch_field(){$L=mysql_fetch_field($this->result,$this->offset++);$L->orgtable=$L->table;$L->charsetnr=($L->blob?63:0);return$L;}function +__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class +Db +extends +PdoDb{var$extension="PDO_MySQL";function +attach($P,$V,$H){$vf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$sh=adminer()->connectSsl();if($sh){if($sh['key'])$vf[\PDO::MYSQL_ATTR_SSL_KEY]=$sh['key'];if($sh['cert'])$vf[\PDO::MYSQL_ATTR_SSL_CERT]=$sh['cert'];if($sh['ca'])$vf[\PDO::MYSQL_ATTR_SSL_CA]=$sh['ca'];if(isset($sh['verify']))$vf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$sh['verify'];}list($sd,$eg)=host_port($P);return$this->dsn("mysql:charset=utf8;host=$sd".($eg?(is_numeric($eg)?";port=":";unix_socket=").$eg:""),$V,$H,$vf);}function +set_charset($Qa){return$this->query("SET NAMES $Qa");}function +select_db($Cb){return$this->query("USE ".idf_escape($Cb));}function +query($J,$pi=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$pi);return +parent::query($J,$pi);}}}class +Driver +extends +SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static +function +connect($P,$V,$H){$f=parent::connect($P,$V,$H);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($Pg=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Pg;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function +__construct(Db$f){parent::__construct($f);$this->types=array(lang(75)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(76)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(77)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(78)=>array("enum"=>65535,"set"=>64),lang(79)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(80)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types[lang(77)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(77)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types[lang(75)]["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function +unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"GeomFromText":"")));}function +insert($R,array$Q){return($Q?parent::insert($R,$Q):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function +insertUpdate($R,array$N,array$mg){$d=array_keys(reset($N));$kg="INSERT INTO ".table($R)." (".implode(", ",$d).") VALUES\n";$Hi=array();foreach($d +as$z)$Hi[$z]="$z = VALUES($z)";$Ah="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hi);$Hi=array();$pe=0;foreach($N +as$Q){$Y="(".implode(", ",$Q).")";if($Hi&&(strlen($kg)+$pe+strlen($Y)+strlen($Ah)>1e6)){if(!queries($kg.implode(",\n",$Hi).$Ah))return +false;$Hi=array();$pe=0;}$Hi[]=$Y;$pe+=strlen($Y)+2;}return +queries($kg.implode(",\n",$Hi).$Ah);}function +slowQuery($J,$Uh){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Uh FOR $J";elseif(preg_match('~^(SELECT\b)(.+)~is',$J,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($Uh*1000).") */ $C[2]";}}function +convertSearch($v,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function +warnings(){$K=$this->conn->query("SHOW WARNINGS");if($K&&$K->num_rows){ob_start();print_select_result($K);return +ob_get_clean();}}function +tableHelp($E,$Yd=false){$we=($this->conn->flavor=='maria');if(information_schema(DB))return +strtolower("information-schema-".($we?"$E-table/":str_replace("_","-",$E)."-table.html"));if(DB=="mysql")return($we?"mysql$E-table/":"system-schema.html");}function +partitionsInfo($R){$Wc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$K=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$L=array();list($L["partition_by"],$L["partition"],$L["partitions"])=$K->fetch_row();$Uf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$L["partition_names"]=array_keys($Uf);$L["partition_values"]=array_values($Uf);return$L;}function +hasCStyleEscapes(){static$La;if($La===null){$rh=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$La=(strpos($rh,'NO_BACKSLASH_ESCAPES')===false);}return$La;}function +engines(){$L=array();foreach(get_rows("SHOW ENGINES")as$M){if(preg_match("~YES|DEFAULT~",$M["Support"]))$L[]=$M["Engine"];}return$L;}function +indexAlgorithms(array$Eh){return(preg_match('~^(MEMORY|NDB)$~',$Eh["Engine"])?array("HASH","BTREE"):array());}}function +idf_escape($v){return"`".str_replace("`","``",$v)."`";}function +table($v){return +idf_escape($v);}function +get_databases($Oc){$L=get_session("dbs");if($L===null){$J="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$L=($Oc?slow_query($J):get_vals($J));restart_session();set_session("dbs",$L);stop_session();}return$L;}function +limit($J,$Z,$_,$if=0,$bh=" "){return" $J$Z".($_?$bh."LIMIT $_".($if?" OFFSET $if":""):"");}function +limit1($R,$J,$Z,$bh="\n"){return +limit($J,$Z,1,0,$bh);}function +db_collation($j,array$b){$L=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$C))$L=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$C))$L=$b[$C[1]][-1];return$L;}function +logged_user(){return +get_val("SELECT USER()");}function +tables_list(){return +get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function +count_tables(array$i){$L=array();foreach($i +as$j)$L[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$L;}function +table_status($E="",$Ec=false){$L=array();foreach(get_rows($Ec?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".q(addcslashes($E,"%_\\")):""))as$M){if($M["Engine"]=="InnoDB")$M["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$M["Comment"]);if(!isset($M["Engine"]))$M["Comment"]="";if($E!="")$M["Name"]=$E;$L[$M["Name"]]=$M;}return$L;}function +is_view(array$S){return$S["Engine"]===null;}function +fk_support(array$S){return +preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function +fields($R){$we=(connection()->flavor=='maria');$L=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$M){$m=$M["COLUMN_NAME"];$U=$M["COLUMN_TYPE"];$ad=$M["GENERATION_EXPRESSION"];$Bc=$M["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Bc,$Zc);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$ye);$k=$M["COLUMN_DEFAULT"];if($k!=""){$Xd=preg_match('~text|json~',$ye[1]);if(!$we&&$Xd)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($we||$Xd){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($C){return +stripslashes(str_replace("''","'",$C[1]));},$k));}if(!$we&&preg_match('~binary~',$ye[1])&&preg_match('~^0x(\w*)$~',$k,$C))$k=pack("H*",$C[1]);}$L[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$ye[1],"length"=>$ye[2],"unsigned"=>ltrim($ye[3].$ye[4]),"default"=>($Zc?($we?$ad:stripslashes($ad)):$k),"null"=>($M["IS_NULLABLE"]=="YES"),"auto_increment"=>($Bc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Bc,$C)?$C[1]:""),"collation"=>$M["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$M[PRIVILEGES],where,order")),"comment"=>$M["COLUMN_COMMENT"],"primary"=>($M["COLUMN_KEY"]=="PRI"),"generated"=>($Zc[1]=="PERSISTENT"?"STORED":$Zc[1]),);}return$L;}function +indexes($R,$g=null){$L=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$M){$E=$M["Key_name"];$L[$E]["type"]=($E=="PRIMARY"?"PRIMARY":($M["Index_type"]=="FULLTEXT"?"FULLTEXT":($M["Non_unique"]?($M["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$L[$E]["columns"][]=$M["Column_name"];$L[$E]["lengths"][]=($M["Index_type"]=="SPATIAL"?null:$M["Sub_part"]);$L[$E]["descs"][]=null;$L[$E]["algorithm"]=$M["Index_type"];}return$L;}function +foreign_keys($R){static$Yf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$L=array();$tb=get_val("SHOW CREATE TABLE ".table($R),1);if($tb){preg_match_all("~CONSTRAINT ($Yf) FOREIGN KEY ?\\(((?:$Yf,? ?)+)\\) REFERENCES ($Yf)(?:\\.($Yf))? \\(((?:$Yf,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$tb,$ze,PREG_SET_ORDER);foreach($ze +as$C){preg_match_all("~$Yf~",$C[2],$mh);preg_match_all("~$Yf~",$C[5],$Nh);$L[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('Adminer\idf_unescape',$mh[0]),"target"=>array_map('Adminer\idf_unescape',$Nh[0]),"on_delete"=>($C[6]?:"RESTRICT"),"on_update"=>($C[7]?:"RESTRICT"),);}}return$L;}function +view($E){return +array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($E),1)));}function +collations(){$L=array();foreach(get_rows("SHOW COLLATION")as$M){if($M["Default"])$L[$M["Charset"]][-1]=$M["Collation"];else$L[$M["Charset"]][]=$M["Collation"];}ksort($L);foreach($L +as$z=>$X)sort($L[$z]);return$L;}function +information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function +error(){return +h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function +create_database($j,$cb){return +queries("CREATE DATABASE ".idf_escape($j).($cb?" COLLATE ".q($cb):""));}function +drop_databases(array$i){$L=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$L;}function +rename_database($E,$cb){$L=false;if(create_database($E,$cb)){$T=array();$Mi=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Mi[]=$R;else$T[]=$R;}$L=(!$T&&!$Mi)||move_tables($T,$Mi,$E);drop_databases($L?array(DB):array());}return$L;}function +auto_increment(){$ya=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$ya="";break;}if($w["type"]=="PRIMARY")$ya=" UNIQUE";}}return" AUTO_INCREMENT$ya";}function +alter_table($R,$E,array$n,array$Qc,$gb,$jc,$cb,$xa,$Tf){$pa=array();foreach($n +as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$pa[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$pa[]="DROP ".idf_escape($m[0]);}$pa=array_merge($pa,$Qc);$uh=($gb!==null?" COMMENT=".q($gb):"").($jc?" ENGINE=".q($jc):"").($cb?" COLLATE ".q($cb):"").($xa!=""?" AUTO_INCREMENT=$xa":"");if($Tf){$Uf=array();if($Tf["partition_by"]=='RANGE'||$Tf["partition_by"]=='LIST'){foreach($Tf["partition_names"]as$z=>$X){$Y=$Tf["partition_values"][$z];$Uf[]="\n PARTITION ".idf_escape($X)." VALUES ".($Tf["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$uh +.="\nPARTITION BY $Tf[partition_by]($Tf[partition])";if($Uf)$uh +.=" (".implode(",",$Uf)."\n)";elseif($Tf["partitions"])$uh +.=" PARTITIONS ".(+$Tf["partitions"]);}elseif($Tf===null)$uh +.="\nREMOVE PARTITIONING";if($R=="")return +queries("CREATE TABLE ".table($E)." (\n".implode(",\n",$pa)."\n)$uh");if($R!=$E)$pa[]="RENAME TO ".table($E);if($uh)$pa[]=ltrim($uh);return($pa?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$pa)):true);}function +alter_indexes($R,$pa){$Pa=array();foreach($pa +as$X)$Pa[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return +queries("ALTER TABLE ".table($R).implode(",",$Pa));}function +truncate_tables(array$T){return +apply_queries("TRUNCATE TABLE",$T);}function +drop_views(array$Mi){return +queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Mi)));}function +drop_tables(array$T){return +queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function +move_tables(array$T,array$Mi,$Nh){$Fg=array();foreach($T +as$R)$Fg[]=table($R)." TO ".idf_escape($Nh).".".table($R);if(!$Fg||queries("RENAME TABLE ".implode(", ",$Fg))){$Lb=array();foreach($Mi +as$R)$Lb[table($R)]=view($R);connection()->select_db($Nh);$j=idf_escape(DB);foreach($Lb +as$E=>$Li){if(!queries("CREATE VIEW $E AS ".str_replace(" $j."," ",$Li["select"]))||!queries("DROP VIEW $j.$E"))return +false;}return +true;}return +false;}function +copy_tables(array$T,array$Mi,$Nh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T +as$R){$E=($Nh==DB?table("copy_$R"):idf_escape($Nh).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $E"))||!queries("CREATE TABLE $E LIKE ".table($R))||!queries("INSERT INTO $E SELECT * FROM ".table($R)))return +false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M){$ji=$M["Trigger"];if(!queries("CREATE TRIGGER ".($Nh==DB?idf_escape("copy_$ji"):idf_escape($Nh).".".idf_escape($ji))." $M[Timing] $M[Event] ON $E FOR EACH ROW\n$M[Statement];"))return +false;}}foreach($Mi +as$R){$E=($Nh==DB?table("copy_$R"):idf_escape($Nh).".".table($R));$Li=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $E"))||!queries("CREATE VIEW $E AS $Li[select]"))return +false;}return +true;}function +trigger($E,$R){if($E=="")return +array();$N=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($E));return +reset($N);}function +triggers($R){$L=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M)$L[$M["Trigger"]]=array($M["Timing"],$M["Event"]);return$L;}function +trigger_options(){return +array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function +routine($E,$U){$n=get_rows("SELECT + PARAMETER_NAME field, + DATA_TYPE type, + CHARACTER_MAXIMUM_LENGTH length, + REGEXP_REPLACE(DTD_IDENTIFIER, '^[^ ]+ ', '') `unsigned`, + 1 `null`, + DTD_IDENTIFIER full_type, + PARAMETER_MODE `inout`, + CHARACTER_SET_NAME collation +FROM information_schema.PARAMETERS +WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($E)." +ORDER BY ORDINAL_POSITION");$L=connection()->query("SELECT ROUTINE_COMMENT comment, ROUTINE_DEFINITION definition, 'SQL' language +FROM information_schema.ROUTINES +WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND ROUTINE_NAME = ".q($E))->fetch_assoc();if($n&&$n[0]['field']=='')$L['returns']=array_shift($n);$L['fields']=$n;return$L;}function +routines(){return +get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function +routine_languages(){return +array();}function +routine_id($E,array$M){return +idf_escape($E);}function +last_id($K){return +get_val("SELECT LAST_INSERT_ID()");}function +explain(Db$f,$J){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$J);}function +found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function +create_sql($R,$xa,$zh){$L=get_val("SHOW CREATE TABLE ".table($R),1);if(!$xa)$L=preg_replace('~ AUTO_INCREMENT=\d+~','',$L);return$L;}function +truncate_sql($R){return"TRUNCATE ".table($R);}function +use_sql($Cb,$zh=""){$E=idf_escape($Cb);$L="";if(preg_match('~CREATE~',$zh)&&($h=get_val("SHOW CREATE DATABASE $E",1))){set_utf8mb4($h);if($zh=="DROP+CREATE")$L="DROP DATABASE IF EXISTS $E;\n";$L +.="$h;\n";}return$L."USE $E";}function +trigger_sql($R){$L="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$M)$L +.="\nCREATE TRIGGER ".idf_escape($M["Trigger"])." $M[Timing] $M[Event] ON ".table($M["Table"])." FOR EACH ROW\n$M[Statement];;\n";return$L;}function +show_variables(){return +get_rows("SHOW VARIABLES");}function +show_status(){return +get_rows("SHOW STATUS");}function +process_list(){return +get_rows("SHOW FULL PROCESSLIST");}function +convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function +unconvert_field(array$m,$L){if(preg_match("~binary~",$m["type"]))$L="UNHEX($L)";if($m["type"]=="bit")$L="CONVERT(b$L, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$kg=(min_version(8)?"ST_":"");$L=$kg."GeomFromText($L, $kg"."SRID($m[field]))";}return$L;}function +support($Fc){return +preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Fc);}function +kill_process($u){return +queries("KILL ".number($u));}function +connection_id(){return"SELECT CONNECTION_ID()";}function +max_connections(){return +get_val("SELECT @@max_connections");}function +types(){return +array();}function +type_values($u){return"";}function +schemas(){return +array();}function +get_schema(){return"";}function +set_schema($Rg,$g=null){return +true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function +page_header($Wh,$l="",$Ja=array(),$Xh=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Yh=$Wh.($Xh!=""?": $Xh":"");$Zh=strip_tags($Yh.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' + + + + +',$Zh,' + +';$xb=adminer()->css();if(is_int(key($xb)))$xb=array_fill_keys($xb,'light');$ld=in_array('light',$xb)||in_array('',$xb);$jd=in_array('dark',$xb)||in_array('',$xb);$_b=($ld?($jd?null:false):($jd?:null));$Ie=" media='(prefers-color-scheme: dark)'";if($_b!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.2");if(adminer()->head($_b))echo"\n","\n";foreach($xb +as$_i=>$Se){$va=($Se=='dark'&&!$_b?$Ie:($Se=='light'&&$jd?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n";$o=get_temp_dir()."/adminer.version";echo +script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."')")."}); +document.body.classList.replace('nojs', 'js'); +const offlineMessage = '".js_escape(lang(82))."'; +const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"
    \n","".icon("move","","menu","")."".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ja!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $Yh

    \n","\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function +page_headers(){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(adminer()->csp(csp())as$wb){$md=array();foreach($wb +as$z=>$X)$md[]="$z $X";header("Content-Security-Policy: ".implode("; ",$md));}adminer()->headers();}function +csp(){return +array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"'none'","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function +get_nonce(){static$ef;if(!$ef)$ef=base64_encode(rand_string());return$ef;}function +page_messages($l){$zi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Oe=idx($_SESSION["messages"],$zi);if($Oe){echo"
    ".implode("
    \n
    ",$Oe)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$zi]);}if($l)echo"
    $l
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function +page_footer($Re=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function +int32($We){while($We>=2147483648)$We-=4294967296;while($We<=-2147483649)$We+=4294967296;return(int)$We;}function +long2str(array$W,$Oi){$Pg='';foreach($W +as$X)$Pg +.=pack('V',$X);if($Oi)return +substr($Pg,0,end($W));return$Pg;}function +str2long($Pg,$Oi){$W=array_values(unpack('V*',str_pad($Pg,4*ceil(strlen($Pg)/4),"\0")));if($Oi)$W[]=strlen($Pg);return$W;}function +xxtea_mx($Vi,$Ui,$Bh,$be){return +int32((($Vi>>5&0x7FFFFFF)^$Ui<<2)+(($Ui>>3&0x1FFFFFFF)^$Vi<<4))^int32(($Bh^$Ui)+($be^$Vi));}function +encrypt_string($wh,$z){if($wh=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($wh,true);$We=count($W)-1;$Vi=$W[$We];$Ui=$W[0];$I=floor(6+52/($We+1));$Bh=0;while($I-->0){$Bh=int32($Bh+0x9E3779B9);$ac=$Bh>>2&3;for($Jf=0;$Jf<$We;$Jf++){$Ui=$W[$Jf+1];$Ve=xxtea_mx($Vi,$Ui,$Bh,$z[$Jf&3^$ac]);$Vi=int32($W[$Jf]+$Ve);$W[$Jf]=$Vi;}$Ui=$W[0];$Ve=xxtea_mx($Vi,$Ui,$Bh,$z[$Jf&3^$ac]);$Vi=int32($W[$We]+$Ve);$W[$We]=$Vi;}return +long2str($W,false);}function +decrypt_string($wh,$z){if($wh=="")return"";if(!$z)return +false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($wh,false);$We=count($W)-1;$Vi=$W[$We];$Ui=$W[0];$I=floor(6+52/($We+1));$Bh=int32($I*0x9E3779B9);while($Bh){$ac=$Bh>>2&3;for($Jf=$We;$Jf>0;$Jf--){$Vi=$W[$Jf-1];$Ve=xxtea_mx($Vi,$Ui,$Bh,$z[$Jf&3^$ac]);$Ui=int32($W[$Jf]-$Ve);$W[$Jf]=$Ui;}$Vi=$W[$We];$Ve=xxtea_mx($Vi,$Ui,$Bh,$z[$Jf&3^$ac]);$Ui=int32($W[0]-$Ve);$W[0]=$Ui;$Bh=int32($Bh-0x9E3779B9);}return +long2str($W,true);}$ag=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ag[$z]=$X;}}function +add_invalid_login(){$Ca=get_temp_dir()."/adminer.invalid";foreach(glob("$Ca*")?:array($Ca)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Ca-".rand_string());if(!$q)return;$Sd=unserialize(stream_get_contents($q));$Th=time();if($Sd){foreach($Sd +as$Td=>$X){if($X[0]<$Th)unset($Sd[$Td]);}}$Rd=&$Sd[adminer()->bruteForceKey()];if(!$Rd)$Rd=array($Th+30*60,0);$Rd[1]++;file_write_unlock($q,serialize($Sd));}function +check_invalid_login(array&$ag){$Sd=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$Sd=unserialize(stream_get_contents($q));file_unlock($q);break;}}$Rd=idx($Sd,adminer()->bruteForceKey(),array());$df=($Rd[1]>29?$Rd[0]-time():0);if($df>0)auth_error(lang(84,ceil($df/60)),$ag);}$wa=$_POST["auth"];if($wa){session_regenerate_id();$Ji=$wa["driver"];$P=$wa["server"];$V=$wa["username"];$H=(string)$wa["password"];$j=$wa["db"];set_password($Ji,$P,$V,$H);$_SESSION["db"][$Ji][$P][$V][$j]=true;if($wa["permanent"]){$z=implode("-",array_map('base64_encode',array($Ji,$P,$V,$j)));$og=adminer()->permanentLogin(true);$ag[$z]="$z:".base64_encode($og?encrypt_string($H,$og):"");cookie("adminer_permanent",implode(" ",$ag));}if(count($_POST)==1||DRIVER!=$Ji||SERVER!=$P||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Ji,$P,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent($ag);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(85).' '.lang(86));}elseif($ag&&!$_SESSION["pwds"]){session_regenerate_id();$og=adminer()->permanentLogin();foreach($ag +as$z=>$X){list(,$Wa)=explode(":",$X);list($Ji,$P,$V,$j)=array_map('base64_decode',explode("-",$z));set_password($Ji,$P,$V,decrypt_string(base64_decode($Wa),$og));$_SESSION["db"][$Ji][$P][$V][$j]=true;}}function +unset_permanent(array&$ag){foreach($ag +as$z=>$X){list($Ji,$P,$V,$j)=array_map('base64_decode',explode("-",$z));if($Ji==DRIVER&&$P==SERVER&&$V==$_GET["username"]&&$j==DB)unset($ag[$z]);}cookie("adminer_permanent",implode(" ",$ag));}function +auth_error($l,array&$ag){$eh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$eh]||$_GET[$eh])&&!$_SESSION["token"])$l=lang(87);else{restart_session();add_invalid_login();$H=get_password();if($H!==null){if($H===false)$l +.=($l?'
    ':'').lang(88,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($ag);}}if(!$_COOKIE[$eh]&&$_GET[$eh]&&ini_bool("session.use_only_cookies"))$l=lang(89);$Mf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Mf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(30),$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(90)."\n";echo"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($ag);page_header(lang(91),lang(92,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list(,$eg)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$eg,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(93),$ag);check_invalid_login($ag);$vb=adminer()->credentials();$f=Driver::connect($vb[0],$vb[1],$vb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new +Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$ue=null;if(!is_object($f)||($ue=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($ue)?$ue:lang(94))).(preg_match('~^ | $~',get_password())?'
    '.lang(95):'');auth_error($l,$ag);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(83),lang(96));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($wa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Kd="max_input_vars";$Ge=ini_get($Kd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Ge||$X<$Ge)){$Kd=$z;$Ge=$X;}}}$l=(!$_POST["token"]&&$Ge?lang(97,"'$Kd'"):lang(96).' '.lang(98));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=lang(99,"'post_max_size'");if(isset($_GET["sql"]))$l +.=' '.lang(100);}function +print_select_result($K,$g=null,array$Af=array(),$_=0){$te=array();$x=array();$d=array();$Ha=array();$oi=array();$L=array();for($t=0;(!$_||$t<$_)&&($M=$K->fetch_row());$t++){if(!$t){echo"
    \n","\n","";for($y=0;$yfetch_field();$E=$m->name;$_f=(isset($m->orgtable)?$m->orgtable:"");$zf=(isset($m->orgname)?$m->orgname:$E);if($Af&&JUSH=="sql")$te[$y]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($_f!=""){if(isset($m->table))$L[$m->table]=$_f;if(!isset($x[$_f])){$x[$_f]=array();foreach(indexes($_f,$g)as$w){if($w["type"]=="PRIMARY"){$x[$_f]=array_flip($w["columns"]);break;}}$d[$_f]=$x[$_f];}if(isset($d[$_f][$zf])){unset($d[$_f][$zf]);$x[$_f][$zf]=$y;$te[$y]=$_f;}}if($m->charsetnr==63)$Ha[$y]=true;$oi[$y]=$m->type;echo"name!=$zf?" title='".h(($_f!=""?"$_f.":"").$zf)."'":"").">".h($E).($Af?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($M +as$z=>$X){$A="";if(isset($te[$z])&&!$d[$te[$z]]){if($Af&&JUSH=="sql"){$R=$M[array_search("table=",$te)];$A=ME.$te[$z].urlencode($Af[$R]!=""?$Af[$R]:$R);}else{$A=ME."edit=".urlencode($te[$z]);foreach($x[$te[$z]]as$ab=>$y){if($M[$y]===null){$A="";break;}$A +.="&where".urlencode("[".bracket_escape($ab)."]")."=".urlencode($M[$y]);}}}$m=array('type'=>($Ha[$z]?'blob':($oi[$z]==254?'char':'')),);$X=select_value($X,$A,$m,null);echo"$X";}}echo($t?"
    \n
    ":"

    ".lang(14))."\n";return$L;}function +referencable_primary($Zg){$L=array();foreach(table_status('',true)as$Fh=>$R){if($Fh!=$Zg&&fk_support($R)){foreach(fields($Fh)as$m){if($m["primary"]){if($L[$Fh]){unset($L[$Fh]);break;}$L[$Fh]=$m;}}}}return$L;}function +textarea($E,$Y,$N=10,$db=80){echo"";}function +select_input($va,array$vf,$Y="",$qf="",$bg=""){$Mh=($vf?"select":"input");return"<$Mh$va".($vf?">

    ".lang(120,get_driver(DRIVER),"".h(connection()->server_info)."","".connection()->extension."")."\n","

    ".lang(121,"".h(logged_user())."")."\n";$i=adminer()->databases();if($i){$Sg=support("scheme");$b=collations();echo"

    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i +as$j=>$T){$Lg=h(ME)."db=".urlencode($j);$u=h("Db-".$j);echo"".(support("database")?"
    ":"")."".lang(29).(get_session("dbs")!==null?" - ".lang(122)."":"")."".lang(123)."".lang(124)."".lang(125)." - ".lang(126)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$u):""),"".h($j)."";$cb=h(db_collation($j,$b));echo"".(support("database")?"$cb":$cb),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"
    \n","

    ".lang(129)."

    \n
      \n";foreach(adminer()->plugins +as$cg){$Ob=(method_exists($cg,'description')?$cg->description():"");if(!$Ob){$Cg=new +\ReflectionObject($cg);if(preg_match('~^/[\s*]+(.+)~',$Cg->getDocComment(),$C))$Ob=$C[1];}$Tg=(method_exists($cg,'screenshot')?$cg->screenshot():"");echo"
    • ".get_class($cg)."".h($Ob?": $Ob":"").($Tg?" (".lang(130).")":"")."\n";}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}adminer()->afterConnect();class +TmpFile{private$handler;var$size;function +__construct(){$this->handler=tmpfile();}function +write($ob){$this->size+=strlen($ob);fwrite($this->handler,$ob);}function +send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$O=array(idf_escape($_GET["field"]));$K=driver()->select($a,$O,array(where($_GET,$n)),$O);$M=($K?$K->fetch_row():array());echo +driver()->value($M[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:lang(11);$S=table_status1($a);$E=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?lang(131):lang(132):lang(133)).": ".($E!=""?$E:h($a)),$l);$Kg=array();foreach($n +as$z=>$m)$Kg+=$m["privileges"];adminer()->selectLinks($S,(isset($Kg["insert"])||!support("table")?"":null));$gb=$S["Comment"];if($gb!="")echo"

    ".lang(42).": ".h($gb)."\n";if($n)adminer()->tableStructurePrint($n,$S);function +tables_links(array$T){echo"

    \n";}$Jd=driver()->inheritsFrom($a);if($Jd){echo"

    ".lang(134)."

    \n";tables_links($Jd);}if(support("indexes")&&driver()->supportsIndex($S)){echo"

    ".lang(135)."

    \n";$x=indexes($a);if($x)adminer()->tableIndexesPrint($x,$S);echo'

    ".lang(101)."

    \n";$Sc=foreign_keys($a);if($Sc){echo"\n","\n";foreach($Sc +as$E=>$p){echo"","
    ".lang(137)."".lang(138)."".lang(104)."".lang(103)."
    ".implode(", ",array_map('Adminer\h',$p["source"]))."";$A=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"".($p["db"]!=""&&$p["db"]!=DB?"".h($p["db"]).".":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('Adminer\h',$p["target"])).")","".h($p["on_delete"]),"".h($p["on_update"]),''.lang(139).'',"\n";}echo"
    \n";}echo'

    ".lang(141)."

    \n";$Sa=driver()->checkConstraints($a);if($Sa){echo"\n";foreach($Sa +as$z=>$X)echo"","
    ".h($X),"".lang(139)."","\n";echo"
    \n";}echo'

    ".lang(143)."

    \n";$li=triggers($a);if($li){echo"\n";foreach($li +as$z=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($z)."".lang(139)."\n";echo"
    \n";}echo'

    ".lang(145)."

    \n";$Pf=driver()->partitionsInfo($a);if($Pf)echo"

    BY ".h("$Pf[partition_by]($Pf[partition])")."\n";tables_links($Id);}}elseif(isset($_GET["schema"])){page_header(lang(62),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Gh=array();$Hh=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$ze,PREG_SET_ORDER);foreach($ze +as$t=>$C){$Gh[$C[1]]=array($C[2],$C[3]);$Hh[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$di=0;$Da=-1;$Rg=array();$Bg=array();$ne=array();$oa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$fg=0;$Rg[$R]["fields"]=array();foreach($oa[$R]as$m){$fg+=1.25;$m["pos"]=$fg;$Rg[$R]["fields"][$m["field"]]=$m;}$Rg[$R]["pos"]=($Gh[$R]?:array($di,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$le=$Da;if(idx($Gh[$R],1)||idx($Gh[$X["table"]],1))$le=min(idx($Gh[$R],1,0),idx($Gh[$X["table"]],1,0))-1;else$Da-=.1;while($ne[(string)$le])$le-=.0001;$Rg[$R]["references"][$X["table"]][(string)$le]=array($X["source"],$X["target"]);$Bg[$X["table"]][$R][(string)$le]=$X["target"];$ne[(string)$le]=true;}}$di=max($di,$Rg[$R]["pos"][0]+2.5+$fg);}echo'

    + +qs(\'#schema\').onselectstart = () => false; +const tablePos = {',implode(",",$Hh)."\n",'}; +const em = qs(\'#schema\').offsetHeight / ',$di,'; +document.onmousemove = schemaMousemove; +document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); + +';foreach($Rg +as$E=>$R){echo"
    ",''.h($E)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$Oh=>$Dg){foreach($Dg +as$le=>$zg){$me=$le-idx($Gh[$E],1);$t=0;foreach($zg[0]as$mh)echo"\n
    "."
    ";}}foreach((array)$Bg[$E]as$Oh=>$Dg){foreach($Dg +as$le=>$d){$me=$le-idx($Gh[$E],1);$t=0;foreach($d +as$Nh)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($Rg +as$E=>$R){foreach((array)$R["references"]as$Oh=>$Dg){foreach($Dg +as$le=>$zg){$Qe=$di;$Ee=-10;foreach($zg[0]as$z=>$mh){$gg=$R["pos"][0]+$R["fields"][$mh]["pos"];$hg=$Rg[$Oh]["pos"][0]+$Rg[$Oh]["fields"][$zg[1][$z]]["pos"];$Qe=min($Qe,$gg,$hg);$Ee=max($Ee,$gg,$hg);}echo"
    \n";}}}echo'
    +
    + +';$Eb=array('','USE','DROP+CREATE','CREATE');$Ih=array('','DROP+CREATE','CREATE');$Bb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Bb[]='INSERT+UPDATE';$M=get_settings("adminer_export");if(!$M)$M=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($M["events"])){$M["routines"]=$M["events"]=($_GET["dump"]=="");$M["triggers"]=$M["table_style"];}echo"
    ".lang(147)."".html_radios("output",adminer()->dumpOutput(),$M["output"])."\n","
    ".lang(148)."".html_radios("format",adminer()->dumpFormat(),$M["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(29)."".html_select('db_style',$Eb,$M["db_style"]).(support("type")?checkbox("types",1,$M["types"],lang(6)):"").(support("routine")?checkbox("routines",1,$M["routines"],lang(64)):"").(support("event")?checkbox("events",1,$M["events"],lang(66)):"")),"
    ".lang(124)."".html_select('table_style',$Ih,$M["table_style"]).checkbox("auto_increment",1,$M["auto_increment"],lang(43)).(support("trigger")?checkbox("triggers",1,$M["triggers"],lang(143)):""),"
    ".lang(149)."".html_select('data_style',$Bb,$M["data_style"]),'
    +

    +',input_token(),' + +',script("qsl('table').onclick = dumpClick;");$lg=array();if(DB!=""){$Ta=($a!=""?"":" checked");echo"","\n";$Mi="";$Kh=tables_list();foreach($Kh +as$E=>$U){$kg=preg_replace('~_.*~','',$E);$Ta=($a==""||$a==(substr($a,-1)=="%"?"$kg%":$E));$ng="\n";$i=adminer()->databases();if($i){foreach($i +as$j){if(!information_schema($j)){$kg=preg_replace('~_.*~','',$j);echo"
    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
    ".checkbox("tables[]",$E,$Ta,$E,"","block");if($U!==null&&!preg_match('~table~i',$U))$Mi +.="$ng\n";else +echo"$ng\n";$lg[$kg]++;}echo$Mi;if($Kh)echo +script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
    ".checkbox("databases[]",$j,$a==""||$a=="$kg%",$j,"","block")."\n";$lg[$kg]++;}}}else +echo"
    ";}echo'
    +

    +';$Lc=true;foreach($lg +as$z=>$X){if($z!=""&&$X>1){echo($Lc?"

    ":" ")."".h($z)."";$Lc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(63));echo'

    \n";hidden_fields_get();echo +input_hidden("db",DB),($bd?"":input_hidden("grant")),"\n","\n";while($M=$K->fetch_assoc())echo'
    ".lang(27)."".lang(25)."
    '.h($M["User"])."".h($M["Host"]).''.lang(12)."\n";if(!$bd||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$qd=&get_session("queries");$pd=&$qd[DB];if(!$l&&$_POST["clear"]){$pd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?lang(67):lang(56)),$l);$se='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$J=$_POST["query"];elseif($_POST["webfile"]){$ph=adminer()->importServerPath();$q=@fopen((file_exists($ph)?$ph:"compress.zlib://$ph.gz"),"rb");$J=($q?fread($q,1e6):false);}else$J=get_file("sql_file",true,";");if(is_string($J)){if(function_exists('memory_get_usage')&&($Je=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Je,strval(2*strlen($J)+memory_get_usage()+8e6)));if($J!=""&&strlen($J)<1e6){$I=$J.(preg_match("~;[ \t\r\n]*\$~",$J)?"":";");if(!$pd||first(end($pd))!=$I){restart_session();$pd[]=array($I,time());set_session("queries",$qd);stop_session();}}$nh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$se)[^\n]*\n?|--\r?\n)";$Mb=driver()->delimiter;$if=0;$ic=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$fb=0;$pc=array();$Nf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$se.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ei=microtime(true);$ja=get_settings("adminer_import");while($J!=""){if(!$if&&preg_match("~^$nh*+DELIMITER\\s+(\\S+)~i",$J,$C)){$Mb=preg_quote($C[1]);$J=substr($J,strlen($C[0]));}elseif(!$if&&JUSH=='pgsql'&&preg_match("~^($nh*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$J,$C)){$Mb="\n\\\\\\.\r?\n";$if=strlen($C[0]);}else{preg_match("($Mb\\s*|$Nf)",$J,$C,PREG_OFFSET_CAPTURE,$if);list($Uc,$fg)=$C[0];if(!$Uc&&$q&&!feof($q))$J +.=fread($q,1e5);else{if(!$Uc&&rtrim($J)=="")break;$if=$fg+strlen($Uc);if($Uc&&!preg_match("(^$Mb)",$Uc)){$Ma=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($fg>0&&strtolower($J[$fg-1])=="e"));$Yf=($Uc=='/*'?'\*/':($Uc=='['?']':(preg_match("~^$se|^#~",$Uc)?"\n":preg_quote($Uc).($Ma?'|\\\\.':''))));while(preg_match("($Yf|\$)s",$J,$C,PREG_OFFSET_CAPTURE,$if)){$Pg=$C[0][0];if(!$Pg&&$q&&!feof($q))$J +.=fread($q,1e5);else{$if=$C[0][1]+strlen($Pg);if(!$Pg||$Pg[0]!="\\")break;}}}else{$ic=false;$I=substr($J,0,$fg+($Mb[0]=="\n"?3:0));$fb++;$ng="
    ".adminer()->sqlCommandQuery($I)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$nh*+ATTACH\\b~i",$I,$C)){echo$ng,"

    ".lang(151)."\n";$pc[]=" $fb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$ng;ob_flush();flush();}$th=microtime(true);if(connection()->multi_query($I)&&$g&&preg_match("~^$nh*+USE\\b~i",$I))$g->query($I);do{$K=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$ng:""),"

    ".lang(152).(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$pc[]=" $fb";if($_POST["error_stops"])break +2;}else{$Th=" (".format_time($th).")".(strlen($I)<1000?" ".lang(12)."":"");$la=connection()->affected_rows;$Pi=($_POST["only_errors"]?"":driver()->warnings());$Qi="warnings-$fb";if($Pi)$Th +.=", ".lang(38)."".script("qsl('a').onclick = partial(toggle, '$Qi');","");$xc=null;$Af=null;$yc="explain-$fb";if(is_object($K)){$_=$_POST["limit"];$Af=print_select_result($K,$g,array(),$_);if(!$_POST["only_errors"]){echo"

    \n";$gf=$K->num_rows;echo"
    \n";}}else{if(preg_match("~^$nh*+(CREATE|DROP|ALTER)$nh++(DATABASE|SCHEMA)\\b~i",$I)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(155,$la)."$Th\n";}echo($Pi?"

    \n":"");if($xc){echo"\n";}}$th=microtime(true);}while(connection()->next_result());}$J=substr($J,$if);$if=0;}}}}if($ic)echo"

    ".lang(156)."\n";elseif($_POST["only_errors"])echo"

    ".lang(157,$fb-count($pc))," (".format_time($ei).")\n";elseif($pc&&$fb>1)echo"

    ".lang(152).": ".implode("",$pc)."\n";}else +echo"

    ".upload_error($J)."\n";}echo' +

    +';$vc="";if(!isset($_GET["import"])){$I=$_GET["sql"];if($_POST)$I=$_POST["query"];elseif($_GET["history"]=="all")$I=$pd;elseif($_GET["history"]!="")$I=idx($pd[$_GET["history"]],0);echo"

    ";textarea("query",$I,20);echo +script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"

    ";adminer()->sqlPrintAfter();echo"$vc\n",lang(159).": \n";}else{$gd=(extension_loaded("zlib")?"[.gz]":"");echo"

    ".lang(160)."
    ",file_input("SQL$gd: \n$vc"),"
    \n";$_d=adminer()->importServerPath();if($_d)echo"
    ".lang(161)."
    ",lang(162,"".h($_d)."$gd"),' ',"
    \n";echo"

    ";}echo +checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(164))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(165))."\n",input_token();if(!isset($_GET["import"])&&$pd){print_fieldset("history",lang(166),$_GET["history"]!="");for($X=end($pd);$X;$X=prev($pd)){$z=key($pd);list($I,$Th,$dc)=$X;echo''.lang(12).""." ".@date("H:i:s",$Th).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$se).*~m",'',$I)))),80,"").($dc?" ($dc)":"")."
    \n";}echo"\n","".lang(168)."\n","\n";}echo'

    +';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$wi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n +as$E=>$m){if((!$wi&&!isset($m["privileges"]["insert"]))||adminer()->fieldName($m)=="")unset($n[$E]);}if($_POST&&!$l&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($wi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$ri=unique_array($_GET["where"],$x);$vg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,lang(169),driver()->delete($a,$vg,$ri?0:1));else{$Q=array();foreach($n +as$E=>$m){$X=process_input($m);if($X!==false&&$X!==null)$Q[idf_escape($E)]=$X;}if($wi){if(!$Q)redirect($B);queries_redirect($B,lang(170),driver()->update($a,$Q,$vg,$ri?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$K=driver()->insert($a,$Q);$ke=($K?last_id($K):0);queries_redirect($B,lang(171,($ke?" $ke":"")),$K);}}}$M=null;if($Z){$O=array();foreach($n +as$E=>$m){if(isset($m["privileges"]["select"])){$ta=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$O[]=($ta?"$ta AS ":"").idf_escape($E);}}$M=array();if(!support("table"))$O=array("*");if($O){$K=driver()->select($a,$O,array($Z),$O,array(),(isset($_GET["select"])?2:1));if(!$K)$l=error();else{$M=$K->fetch_assoc();if(!$M)$M=false;}if(isset($_GET["select"])&&(!$M||$K->fetch_assoc()))$M=null;}}if(!support("table")&&!$n){if(!$Z){$K=driver()->select($a,array("*"),array(),array("*"));$M=($K?$K->fetch_assoc():false);if(!$M)$M=array(driver()->primary=>"");}if($M){foreach($M +as$z=>$X){if(!$Z)$M[$z]=null;$n[$z]=array("field"=>$z,"null"=>($z!=driver()->primary),"auto_increment"=>($z==driver()->primary));}}}if($_POST["save"])$M=(array)$_POST["fields"]+($M?$M:array());edit_form($a,$n,$M,$wi,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Rf=driver()->partitionBy;$Vf=($Rf?driver()->partitionsInfo($a):array());$Ag=referencable_primary($a);$Sc=array();foreach($Ag +as$Fh=>$m)$Sc[str_replace("`","``",$Fh)."`".str_replace("`","``",$m["field"])]=$Fh;$Df=array();$S=array();if($a!=""){$Df=fields($a);$S=table_status1($a);if(count($S)<2)$l=lang(11);}$M=$_POST;$M["fields"]=(array)$M["fields"];if($M["auto_increment_col"])$M["fields"][$M["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($M["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(172),drop_tables(array($a)));else{$n=array();$oa=array();$Bi=false;$Qc=array();$Cf=reset($Df);$na=" FIRST";foreach($M["fields"]as$z=>$m){$p=$Sc[$m["type"]];$ni=($p!==null?$Ag[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$sg=process_field($m,$ni);$oa[]=array($m["orig"],$sg,$na);if(!$Cf||$sg!==process_field($Cf,$Cf)){$n[]=array($m["orig"],$sg,$na);if($m["orig"]!=""||$na)$Bi=true;}if($p!==null)$Qc[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Sc[$m["type"]],'source'=>array($m["field"]),'target'=>array($ni["field"]),'on_delete'=>$m["on_delete"],));$na=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Bi=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Cf=next($Df);if(!$Cf)$na="";}}$Tf=array();if(in_array($M["partition_by"],$Rf)){foreach($M +as$z=>$X){if(preg_match('~^partition~',$z))$Tf[$z]=$X;}foreach($Tf["partition_names"]as$z=>$E){if($E==""){unset($Tf["partition_names"][$z]);unset($Tf["partition_values"][$z]);}}$Tf["partition_names"]=array_values($Tf["partition_names"]);$Tf["partition_values"]=array_values($Tf["partition_values"]);if($Tf==$Vf)$Tf=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$Tf=null;$D=lang(173);if($a==""){cookie("adminer_engine",$M["Engine"]);$D=lang(174);}$E=trim($M["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($E),$D,alter_table($a,$E,(JUSH=="sqlite"&&($Bi||$Qc)?$oa:$n),$Qc,($M["Comment"]!=$S["Comment"]?$M["Comment"]:null),($M["Engine"]&&$M["Engine"]!=$S["Engine"]?$M["Engine"]:""),($M["Collation"]&&$M["Collation"]!=$S["Collation"]?$M["Collation"]:""),($M["Auto_increment"]!=""?number($M["Auto_increment"]):""),$Tf));}}page_header(($a!=""?lang(36):lang(69)),$l,array("table"=>$a),h($a));if(!$_POST){$oi=driver()->types();$M=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($oi["int"])?"int":(isset($oi["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$M=$S;$M["name"]=$a;$M["fields"]=array();if(!$_GET["auto_increment"])$M["Auto_increment"]="";foreach($Df +as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$M["fields"][]=$m;}if($Rf){$M+=$Vf;$M["partition_names"][]="";$M["partition_values"][]="";}}}$b=collations();if(is_array(reset($b)))$b=call_user_func_array('array_merge',array_values($b));$kc=driver()->engines();foreach($kc +as$jc){if(!strcasecmp($jc,$M["Engine"])){$M["Engine"]=$jc;break;}}echo' +
    +

    +';if(support("columns")||$a==""){echo +lang(175).": \n",($kc?html_select("Engine",array(""=>"(".lang(176).")")+$kc,$M["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($b)echo"".optionlist($b)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($M["fields"],$b,"TABLE",$Sc);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(43).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(177),"columnShow(this.checked, 5)","jsonly");$ib=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$ib,lang(42),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$M["Comment"])?"":''):''),'

    + +';}echo' +';if($a!="")echo'',confirm(lang(178,$a));if($Rf&&(JUSH=='sql'||$a=="")){$Sf=preg_match('~RANGE|LIST~',$M["partition_by"]);print_fieldset("partition",lang(179),$M["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$Rf),$M["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"()\n",lang(180).": \n","\n","\n";foreach($M["partition_names"]as$z=>$X)echo'','\n\n";}echo +input_token(),'

    +';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Gd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Ed=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Gd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Gd[]="SPATIAL";$x=indexes($a);$n=fields($a);$mg=array();if(JUSH=="mongo"){$mg=$x["_id_"];unset($Gd[0]);unset($x["_id_"]);}$M=$_POST;if($M)save_settings(array("index_options"=>$M["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$pa=array();foreach($M["indexes"]as$w){$E=$w["name"];if(in_array($w["type"],$Gd)){$d=array();$qe=array();$Pb=array();$Fd=(support("partial_indexes")?$w["partial"]:"");$Dd=(in_array($w["algorithm"],$Ed)?$w["algorithm"]:"");$Q=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$c){if($c!=""){$pe=idx($w["lengths"],$z);$Nb=idx($w["descs"],$z);$Q[]=($n[$c]?idf_escape($c):$c).($pe?"(".(+$pe).")":"").($Nb?" DESC":"");$d[]=$c;$qe[]=($pe?:null);$Pb[]=$Nb;}}$wc=$x[$E];if($wc){ksort($wc["columns"]);ksort($wc["lengths"]);ksort($wc["descs"]);if($w["type"]==$wc["type"]&&array_values($wc["columns"])===$d&&(!$wc["lengths"]||array_values($wc["lengths"])===$qe)&&array_values($wc["descs"])===$Pb&&$wc["partial"]==$Fd&&(!$Ed||$wc["algorithm"]==$Dd)){unset($x[$E]);continue;}}if($d)$pa[]=array($w["type"],$E,$Q,$Dd,$Fd);}}foreach($x +as$E=>$wc)$pa[]=array($wc["type"],$E,"DROP");if(!$pa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(183),alter_indexes($a,$pa));}page_header(lang(135),$l,array("table"=>$a),h($a));$Ic=array_keys($n);if($_POST["add"]){foreach($M["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$M["indexes"][$z]["columns"][]="";}$w=end($M["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$M["indexes"][]=array("columns"=>array(1=>""));}if(!$M){foreach($x +as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$M["indexes"]=$x;}$qe=(JUSH=="sql"||JUSH=="mssql");$hh=($_POST?$_POST["options"]:get_setting("index_options"));echo' +
    +
    + + + +';if($mg){echo"
    ',lang(184);$yd=" class='idxopts".($hh?"":" hidden")."'";if($Ed)echo"".lang(185).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/',));echo'',lang(186).($qe?" (".lang(187).")":"");if($qe||support("descidx"))echo +checkbox("options",1,$hh,lang(108),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(188);if(support("partial_indexes"))echo"".lang(189);echo' +
    PRIMARY";foreach($mg["columns"]as$z=>$c)echo +select_input(" disabled",$Ic,$c)," ";echo"\n";}$y=1;foreach($M["indexes"]as$w){if(!$_POST["drop_col"]||$y!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$y][type]",array(-1=>"")+$Gd,$w["type"],($y==count($M["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($Ed)echo"".html_select("indexes[$y][algorithm]",array_merge(array(""),$Ed),$w['algorithm'],"label-algorithm");echo"";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$c){echo"".select_input(" name='indexes[$y][columns][$t]' title='".lang(40)."'",($n&&($c==""||$n[$c])?array_combine($Ic,$Ic):array()),$c,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"",($qe?"":""),(support("descidx")?checkbox("indexes[$y][descs][$t]",1,idx($w["descs"],$z),lang(51)):"")," ";$t++;}echo"\n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$y]","x",lang(112)).script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$y++;}echo'
    +
    +

    + +',input_token(),'

    +';}elseif(isset($_GET["database"])){$M=$_POST;if($_POST&&!$l&&!$_POST["add"]){$E=trim($M["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(190),drop_databases(array(DB)));}elseif(DB!==$E){if(DB!=""){$_GET["db"]=$E;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($E),lang(191),rename_database($E,$M["collation"]));}else{$i=explode("\n",str_replace("\r","",$E));$_h=true;$je="";foreach($i +as$j){if(count($i)==1||$j!=""){if(!create_database($j,$M["collation"]))$_h=false;$je=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($je),lang(192),$_h);}}else{if(!$M["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$M["collation"])?" COLLATE $M[collation]":""),substr(ME,0,-1),lang(193));}}page_header(DB!=""?lang(59):lang(116),$l,array(),h(DB));$b=collations();$E=DB;if($_POST)$E=$M["name"];elseif(DB!="")$M["collation"]=db_collation(DB,$b);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$bd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$bd,$C)&&$C[1]){$E=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo' +
    +

    +',($_POST["add"]||strpos($E,"\n")?'
    ':'')."\n".($b?html_select("collation",array(""=>"(".lang(102).")")+$b,$M["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",)):""),' +';if(DB!="")echo"".confirm(lang(178,DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo +icon("plus","add[0]","+",lang(109))."\n";echo +input_token(),'

    +';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(194).": ".h($ca),$l);$Mg=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Ad=array();$Hf=array();foreach($Mg["fields"]as$t=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$Hf[$t]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Ad[]=$t;}if(!$l&&$_POST){$Na=array();foreach($Mg["fields"]as$z=>$m){$X="";if(in_array($z,$Ad)){$X=process_input($m);if($X===false)$X="''";if(isset($Hf[$z]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($Hf[$z]))$Na[]="@".idf_escape($m["field"]);elseif(in_array($z,$Ad))$Na[]=$X;}$J=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($Mg["returns"],"type")=="record"?"* FROM ":"").table($ca)."(".implode(", ",$Na).")";$th=microtime(true);$K=connection()->multi_query($J);$la=connection()->affected_rows;echo +adminer()->selectQuery($J,$th,!$K);if(!$K)echo"

    ".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$K=connection()->store_result();if(is_object($K))print_select_result($K,$g);else +echo"

    ".lang(195,$la)." ".@date("H:i:s")."\n";}while(connection()->next_result());if($Hf)print_select_result(connection()->query("SELECT ".implode(", ",$Hf)));}}echo' +

    +';if($Ad){echo"\n";foreach($Ad +as$z){$m=$Mg["fields"][$z];$E=$m["field"];echo"
    ".adminer()->fieldName($m);$Y=idx($_POST["fields"],$E);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$E,""));echo"\n";}echo"
    \n";}echo'

    + +',input_token(),'

    + +
    +';function
    +pre_tr($Pg){return
    +preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Pg))));}$R='(\+--[-+]+\+\n)';$M='(\| .* \|\n)';echo
    +preg_replace_callback("~^$R?$M$R?($M*)$R?~m",function($C){$Mc=pre_tr($C[2]);return"\n".($C[1]?"$Mc\n":$Mc).pre_tr($C[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($Mg['comment']))));echo'
    +';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$E=$_GET["name"];$M=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$M["source"]=array_filter($M["source"],'strlen');ksort($M["source"]);$Nh=array();foreach($M["source"]as$z=>$X)$Nh[$z]=$M["target"][$z];$M["target"]=$Nh;}if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(" $E"=>($M["drop"]?"":" ".format_foreign_key($M))));else{$pa="ALTER TABLE ".table($a);$K=($E==""||queries("$pa DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E)));if(!$M["drop"])$K=queries("$pa ADD".format_foreign_key($M));}queries_redirect(ME."table=".urlencode($a),($M["drop"]?lang(196):($E!=""?lang(197):lang(198))),$K);if(!$M["drop"])$l=lang(199);}page_header(lang(200),$l,array("table"=>$a),h($a));if($_POST){ksort($M["source"]);if($_POST["add"])$M["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$M["target"]=array();}elseif($E!=""){$Sc=foreign_keys($a);$M=$Sc[$E];$M["source"][]="";}else{$M["table"]=$a;$M["source"]=array("");}echo' +
    +';$mh=array_keys(fields($a));if($M["db"]!="")connection()->select_db($M["db"]);if($M["ns"]!=""){$Ef=get_schema();set_schema($M["ns"]);}$_g=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Nh=array_keys(fields(in_array($M["table"],$_g)?$M["table"]:reset($_g)));$qf="this.form['change-js'].value = '1'; this.form.submit();";echo"

    \n";if(JUSH!="sqlite"){$Fb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Fb[]=$j;}echo"";}echo +input_hidden("change-js"),'

    + + +';$y=0;foreach($M["source"]as$z=>$X){echo"","
    ',lang(137),'',lang(138),'
    ".html_select("source[".(+$z)."]",array(-1=>"")+$mh,$X,($y==count($M["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"".html_select("target[".(+$z)."]",$Nh,idx($M["target"],$z),"","label-target");$y++;}echo'
    +

    + + +',(DRIVER==='pgsql'?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$M["deferrable"]).' ':''),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",)),'

    + +

    +';if($E!="")echo'',confirm(lang(178,$E));echo +input_token(),'

    +';}elseif(isset($_GET["view"])){$a=$_GET["view"];$M=$_POST;$Ff="VIEW";if(JUSH=="pgsql"&&$a!=""){$uh=table_status1($a);$Ff=strtoupper($uh["Engine"]);}if($_POST&&!$l){$E=trim($M["name"]);$ta=" AS\n$M[select]";$B=ME."table=".urlencode($E);$D=lang(204);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$E&&JUSH!="sqlite"&&$U=="VIEW"&&$Ff=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$ta,$B,$D);else{$Ph=$E."_adminer_".uniqid();drop_create("DROP $Ff ".table($a),"CREATE $U ".table($E).$ta,"DROP $U ".table($E),"CREATE $U ".table($Ph).$ta,"DROP $U ".table($Ph),($_POST["drop"]?substr(ME,0,-1):$B),lang(205),$D,lang(206),$a,$E);}}if(!$_POST&&$a!=""){$M=view($a);$M["name"]=$a;$M["materialized"]=($Ff!="VIEW");if(!$l)$l=error();}page_header(($a!=""?lang(35):lang(207)),$l,array("table"=>$a),h($a));echo' +
    +

    ',lang(188),': +',(support("materializedview")?" ".checkbox("materialized",1,$M["materialized"],lang(131)):""),'

    ';textarea("select",$M["select"]);echo'

    + +';if($a!="")echo'',confirm(lang(178,$a));echo +input_token(),'

    +';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Qd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$vh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$M=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(208));elseif(in_array($M["INTERVAL_FIELD"],$Qd)&&isset($vh[$M["STATUS"]])){$Qg="\nON SCHEDULE ".($M["INTERVAL_VALUE"]?"EVERY ".q($M["INTERVAL_VALUE"])." $M[INTERVAL_FIELD]".($M["STARTS"]?" STARTS ".q($M["STARTS"]):"").($M["ENDS"]?" ENDS ".q($M["ENDS"]):""):"AT ".q($M["STARTS"]))." ON COMPLETION".($M["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(209):lang(210)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Qg.($aa!=$M["EVENT_NAME"]?"\nRENAME TO ".idf_escape($M["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($M["EVENT_NAME"]).$Qg)."\n".$vh[$M["STATUS"]]." COMMENT ".q($M["EVENT_COMMENT"]).rtrim(" DO\n$M[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(211).": ".h($aa):lang(212)),$l);if(!$M&&$aa!=""){$N=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$M=reset($N);}echo' +
    + +
    ',lang(188),' +
    ',lang(213),' +
    ',lang(214),' +
    ',lang(215),' ',html_select("INTERVAL_FIELD",$Qd,$M["INTERVAL_FIELD"]),'
    ',lang(119),'',html_select("STATUS",$vh,$M["STATUS"]),'
    ',lang(42),' +
    ',checkbox("ON_COMPLETION","PRESERVE",$M["ON_COMPLETION"]=="PRESERVE",lang(216)),'
    +

    ';textarea("EVENT_DEFINITION",$M["EVENT_DEFINITION"]);echo'

    + +';if($aa!="")echo'',confirm(lang(178,$aa));echo +input_token(),'

    +';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Mg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$M=$_POST;$M["fields"]=(array)$M["fields"];if($_POST&&!process_fields($M["fields"])&&!$l){$Bf=routine($_GET["procedure"],$Mg);$Ph="$M[name]_adminer_".uniqid();foreach($M["fields"]as$z=>$m){if($m["field"]=="")unset($M["fields"][$z]);}drop_create("DROP $Mg ".routine_id($ca,$Bf),create_routine($Mg,$M),"DROP $Mg ".routine_id($M["name"],$M),create_routine($Mg,array("name"=>$Ph)+$M),"DROP $Mg ".routine_id($Ph,$M),substr(ME,0,-1),lang(217),lang(218),lang(219),$ca,$M["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(220):lang(221)).": ".h($ca):(isset($_GET["function"])?lang(222):lang(223))),$l);if(!$_POST){if($ca=="")$M["language"]="sql";else{$M=routine($_GET["procedure"],$Mg);$M["name"]=$ca;}}$b=get_vals("SHOW CHARACTER SET");sort($b);$Ng=routine_languages();echo($b?"".optionlist($b)."":""),' +
    +

    ',lang(188),': +',($Ng?"\n":""),' +

    + +';edit_fields($M["fields"],$b,$Mg);if(isset($_GET["function"])){echo"
    ".lang(224);edit_type("returns",(array)$M["returns"],$b,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'
    +',script("editFields();"),'
    +

    ';textarea("definition",$M["definition"],20);echo'

    + +';if($ca!="")echo'',confirm(lang(178,$ca));echo +input_token(),'

    +';}elseif(isset($_GET["check"])){$a=$_GET["check"];$E=$_GET["name"];$M=$_POST;if($M&&!$l){if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(),"",array(),"$E",($M["drop"]?"":$M["clause"]));else{$K=($E==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($E)));if(!$M["drop"])$K=queries("ALTER TABLE ".table($a)." ADD".($M["name"]!=""?" CONSTRAINT ".idf_escape($M["name"]):"")." CHECK ($M[clause])");}queries_redirect(ME."table=".urlencode($a),($M["drop"]?lang(225):($E!=""?lang(226):lang(227))),$K);}page_header(($E!=""?lang(228).": ".h($E):lang(142)),$l,array("table"=>$a));if(!$M){$Ua=driver()->checkConstraints($a);$M=array("name"=>$E,"clause"=>$Ua[$E]);}echo' +
    +

    ';if(JUSH!="sqlite")echo +lang(188).': ';echo +doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",),"?"),'

    ';textarea("clause",$M["clause"]);echo'

    +';if($E!="")echo'',confirm(lang(178,$E));echo +input_token(),'

    +';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$E="$_GET[name]";$ki=trigger_options();$M=(array)trigger($E,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$ki["Timing"])&&in_array($_POST["Event"],$ki["Event"])&&in_array($_POST["Type"],$ki["Type"])){$of=" ON ".table($a);$Wb="DROP TRIGGER ".idf_escape($E).(JUSH=="pgsql"?$of:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Wb,$B,lang(229));else{if($E!="")queries($Wb);queries_redirect($B,($E!=""?lang(230):lang(231)),queries(create_trigger($of,$_POST)));if($E!="")queries(create_trigger($of,$M+array("Type"=>reset($ki["Type"]))));}}$M=$_POST;}page_header(($E!=""?lang(232).": ".h($E):lang(233)),$l,array("table"=>$a));echo' +
    + +
    ',lang(234),'',html_select("Timing",$ki["Timing"],$M["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    ',lang(235),'',html_select("Event",$ki["Event"],$M["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$ki["Event"])?" ":""),'
    ',lang(41),'',html_select("Type",$ki["Type"],$M["Type"]),'
    +

    ',lang(188),': +',script("qs('#form')['Timing'].onchange();"),'

    ';textarea("Statement",$M["Statement"]);echo'

    + +';if($E!="")echo'',confirm(lang(178,$E));echo +input_token(),'

    +';}elseif(isset($_GET["user"])){$ea=$_GET["user"];$qg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$M){foreach(explode(",",($M["Privilege"]=="Grant option"?"":$M["Context"]))as$pb)$qg[$pb][$M["Privilege"]]=$M["Comment"];}$qg["Server Admin"]+=$qg["File access on server"];$qg["Databases"]["Create routine"]=$qg["Procedures"]["Create routine"];unset($qg["Procedures"]["Create routine"]);$qg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$qg["Columns"][$X]=$qg["Tables"][$X];unset($qg["Server Admin"]["Usage"]);foreach($qg["Tables"]as$z=>$X)unset($qg["Databases"][$z]);$Ze=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Ze[$X]=(array)$Ze[$X]+idx($_POST["grants"],$z,array());}$cd=array();$mf="";if(isset($_GET["host"])&&($K=connection()->query("SHOW GRANTS FOR ".q($ea)."@".q($_GET["host"])))){while($M=$K->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$M[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$ze,PREG_SET_ORDER)){foreach($ze +as$X){if($X[1]!="USAGE")$cd["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$M[0]))$cd["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$M[0],$C))$mf=$C[1];}}if($_POST&&!$l){$nf=(isset($_GET["host"])?q($ea)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $nf",ME."privileges=",lang(236));else{$bf=q($_POST["user"])."@".q($_POST["host"]);$Wf=$_POST["pass"];if($Wf!=''&&!$_POST["hashed"]&&!min_version(8)){$Wf=get_val("SELECT PASSWORD(".q($Wf).")");$l=!$Wf;}$ub=false;if(!$l){if($nf!=$bf){$ub=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $bf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Wf));$l=!$ub;}elseif($Wf!=$mf)queries("SET PASSWORD FOR $bf = ".q($Wf));}if(!$l){$Jg=array();foreach($Ze +as$hf=>$bd){if(isset($_GET["grant"]))$bd=array_filter($bd);$bd=array_keys($bd);if(isset($_GET["grant"]))$Jg=array_diff(array_keys(array_filter($Ze[$hf],'strlen')),$bd);elseif($nf==$bf){$kf=array_keys((array)$cd[$hf]);$Jg=array_diff($kf,$bd);$bd=array_diff($bd,$kf);unset($cd[$hf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$hf,$C)&&(!grant("REVOKE",$Jg,$C[2]," ON $C[1] FROM $bf")||!grant("GRANT",$bd,$C[2]," ON $C[1] TO $bf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($nf!=$bf)queries("DROP USER $nf");elseif(!isset($_GET["grant"])){foreach($cd +as$hf=>$Jg){if(preg_match('~^(.+)(\(.*\))?$~U',$hf,$C))grant("REVOKE",array_keys($Jg),$C[2]," ON $C[1] FROM $bf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(237):lang(238)),!$l);if($ub)connection()->query("DROP USER $bf");}}page_header((isset($_GET["host"])?lang(27).": ".h("$ea@$_GET[host]"):lang(150)),$l,array("privileges"=>array('',lang(63))));$M=$_POST;if($M)$cd=$Ze;else{$M=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$M["pass"]=$mf;if($mf!="")$M["hashed"]=true;$cd[(DB==""||$cd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    + +
    ',lang(25),' +
    ',lang(27),' +
    ',lang(28),' +',($M["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$M["hashed"],lang(239),"typePassword(this.form['pass'], this.checked);")),'
    + +',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(25),"Databases"=>lang(29),"Tables"=>lang(133),"Columns"=>lang(40),"Procedures"=>lang(240),)as$pb=>$Nb){foreach((array)$qg[$pb]as$pg=>$gb){echo"$Nb'.h($pg);$t=0;foreach($cd +as$hf=>$bd){$E="'grants[$t][".h(strtoupper($pg))."]'";$Y=$bd[strtoupper($pg)];if($pb=="Server Admin"&&$hf!=(isset($cd["*.*"])?"*.*":".*"))echo"
    ".lang(63).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($cd +as$hf=>$bd){echo''.($hf!="*.*"?"":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else +echo"";$t++;}}}echo"
    \n",'

    + +';if(isset($_GET["host"]))echo'',confirm(lang(178,"$ea@$_GET[host]"));echo +input_token(),'

    +';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$ee=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$ee++;}queries_redirect(ME."processlist=",lang(243,$ee),$ee||!$_POST["kill"]);}}page_header(lang(117),$l);echo' +
    +
    + +',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(adminer()->processList()as$t=>$M){if(!$t){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($M +as$z=>$X)echo"$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),));echo"
    ".checkbox("kill[]",$M[JUSH=="sql"?"Id":"pid"],0):"");foreach($M +as$z=>$X)echo"".((JUSH=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$M["Command"])&&$X!="")||(JUSH=="pgsql"&&$z=="current_query"&&$X!="")||(JUSH=="oracle"&&$z=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(244).'':h($X));echo"\n";}echo'
    +
    +

    +';if(support("kill"))echo($t+1)."/".lang(245,max_connections()),"

    \n";echo +input_token(),'

    +',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$n=fields($a);$Sc=column_foreign_keys($a);$jf=$S["Oid"];$ka=get_settings("adminer_import");$Kg=array();$d=array();$Vg=array();$yf=array();$Sh="";foreach($n +as$z=>$m){$E=adminer()->fieldName($m);$Xe=html_entity_decode(strip_tags($E),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$E!=""){$d[$z]=$Xe;if(is_shortable($m))$Sh=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$E!="")$Vg[$z]=$Xe;if(isset($m["privileges"]["order"])&&$E!="")$yf[$z]=$Xe;$Kg+=$m["privileges"];}list($O,$s)=adminer()->selectColumnsProcess($d,$x);$O=array_unique($O);$s=array_unique($s);$Ud=count($s)selectSearchProcess($n,$x);$xf=adminer()->selectOrderProcess($n,$x);$_=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$si=>$M){$ta=convert_field($n[key($M)]);$O=array($ta?:idf_escape(key($M)));$Z[]=where_check($si,$n);$L=driver()->select($a,$O,$Z,$O);if($L)echo +first($L->fetch_row());}exit;}$mg=$ui=array();foreach($x +as$w){if($w["type"]=="PRIMARY"){$mg=array_flip($w["columns"]);$ui=($O?$mg:array());foreach($ui +as$z=>$X){if(in_array(idf_escape($z),$O))unset($ui[$z]);}break;}}if($jf&&!$mg){$mg=$ui=array($jf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($jf));}if($_POST&&!$l){$Si=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Ua=array();foreach($_POST["check"]as$Ra)$Ua[]=where_check($Ra,$n);$Si[]="((".implode(") OR (",$Ua)."))";}$Si=($Si?"\nWHERE ".implode(" AND ",$Si):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$Wc=($O?implode(", ",$O):"*").convert_fields($d,$n,$O)."\nFROM ".table($a);$ed=($s&&$Ud?"\nGROUP BY ".implode(", ",$s):"").($xf?"\nORDER BY ".implode(", ",$xf):"");$J="SELECT $Wc$Si$ed";if(is_array($_POST["check"])&&!$mg){$qi=array();foreach($_POST["check"]as$X)$qi[]="(SELECT".limit($Wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$ed,1).")";$J=implode(" UNION ALL ",$qi);}adminer()->dumpData($a,"table",$J);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Sc)){if($_POST["save"]||$_POST["delete"]){$K=true;$la=0;$Q=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$E=>$X){$X=process_input($n[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$Q[idf_escape($E)]=($X!==false?$X:idf_escape($E));}}if($_POST["delete"]||$Q){$J=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($Q)).")\nSELECT ".implode(", ",$Q)."\nFROM ".table($a):"");if($_POST["all"]||($mg&&is_array($_POST["check"]))||$Ud){$K=($_POST["delete"]?driver()->delete($a,$Si):($_POST["clone"]?queries("INSERT $J$Si".driver()->insertReturning($a)):driver()->update($a,$Q,$Si)));$la=connection()->affected_rows;if(is_object($K))$la+=$K->num_rows;}else{foreach((array)$_POST["check"]as$X){$Ri="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$K=($_POST["delete"]?driver()->delete($a,$Ri,1):($_POST["clone"]?queries("INSERT".limit1($a,$J,$Ri)):driver()->update($a,$Q,$Ri,1)));if(!$K)break;$la+=connection()->affected_rows;}}}$D=lang(247,$la);if($_POST["clone"]&&$K&&$la==1){$ke=last_id($K);if($ke)$D=lang(171," $ke");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$K);if(!$_POST["delete"]){$ig=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$ig),$ig,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l=lang(248);else{$K=true;$la=0;foreach($_POST["val"]as$si=>$M){$Q=array();foreach($M +as$z=>$X){$z=bracket_escape($z,true);$Q[idf_escape($z)]=(preg_match('~char|text~',$n[$z]["type"])||$X!=""?adminer()->processInput($n[$z],$X):"NULL");}$K=driver()->update($a,$Q," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($si,$n),($Ud||$mg?0:1)," ");if(!$K)break;$la+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(247,$la),$K);}}elseif(!is_string($Jc=get_file("csv_file",true)))$l=upload_error($Jc);elseif(!preg_match('~~u',$Jc))$l=lang(249);else{save_settings(array("output"=>$ka["output"],"format"=>$_POST["separator"]),"adminer_import");$K=true;$db=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Jc,$ze);$la=count($ze[0]);driver()->begin();$bh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$N=array();foreach($ze[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$bh]*)$bh~",$X.$bh,$_e);if(!$z&&!array_diff($_e[1],$db)){$db=$_e[1];$la--;}else{$Q=array();foreach($_e[1]as$t=>$ab)$Q[idf_escape($db[$t])]=($ab==""&&$n[$db[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$ab)?str_replace('""','"',substr($ab,1,-1)):$ab));$N[]=$Q;}}$K=(!$N||driver()->insertUpdate($a,$N,$mg));if($K)driver()->commit();queries_redirect(remove_from_uri("page"),lang(250,$la),$K);driver()->rollback();}}}$Fh=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else +page_header(lang(45).": $Fh",$l);$Q=null;if(isset($Kg["insert"])||!support("table")){$Mf=array();foreach((array)$_GET["where"]as$X){if(isset($Sc[$X["col"]])&&count($Sc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Mf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$Q=$Mf?"&".http_build_query($Mf):"";}adminer()->selectLinks($S,$Q);if(!$d&&support("table"))echo"

    ".lang(251).($n?".":": ".error())."\n";else{echo"

    \n","
    ";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"
    \n";adminer()->selectColumnsPrint($O,$d);adminer()->selectSearchPrint($Z,$Vg,$x);adminer()->selectOrderPrint($xf,$yf,$x);adminer()->selectLimitPrint($_);adminer()->selectLengthPrint($Sh);adminer()->selectActionPrint($x);echo"
    \n";$G=$_GET["page"];$Vc=null;if($G=="last"){$Vc=get_val(count_rows($a,$Z,$Ud,$s));$G=floor(max(0,intval($Vc)-1)/$_);}$Wg=$O;$dd=$s;if(!$Wg){$Wg[]="*";$qb=convert_fields($d,$n,$O);if($qb)$Wg[]=substr($qb,2);}foreach($O +as$z=>$X){$m=$n[idf_unescape($X)];if($m&&($ta=convert_field($m)))$Wg[$z]="$ta AS $X";}if(!$Ud&&$ui){foreach($ui +as$z=>$X){$Wg[]=idf_escape($z);if($dd)$dd[]=idf_escape($z);}}$K=driver()->select($a,$Wg,$Z,$dd,$xf,$_,$G,true);if(!$K)echo"

    ".error()."\n";else{if(JUSH=="mssql"&&$G)$K->seek($_*$G);$hc=array();echo"

    \n";$N=array();while($M=$K->fetch_assoc()){if($G&&JUSH=="oracle")unset($M["RNUM"]);$N[]=$M;}if($_GET["page"]!="last"&&$_&&$s&&$Ud&&JUSH=="sql")$Vc=get_val(" SELECT FOUND_ROWS()");if(!$N)echo"

    ".lang(14)."\n";else{$Ba=adminer()->backwardKeys($a,$Fh);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$s&&$O?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($N,$Sc)as$We=>$M){$ri=unique_array($N[$We],$x);if(!$ri){$ri=array();reset($O);foreach($N[$We]as$z=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($O)))$ri[$z]=$X;next($O);}}$si="";foreach($ri +as$z=>$X){$m=(array)$n[$z];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$z:"CONVERT($z USING ".charset(connection()).")").")";$X=md5($X);}$si +.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($z));}echo"".(!$s&&$O?"":"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(252)."");$Ye=array();$Yc=array();reset($O);$xg=1;foreach($N[0]as$z=>$X){if(!isset($ui[$z])){$X=idx($_GET["columns"],key($O))?:array();$m=$n[$O?($X?$X["col"]:current($O)):$z];$E=($m?adminer()->fieldName($m,$xg):($X["fun"]?"*":h($z)));if($E!=""){$xg++;$Ye[$z]=$E;$c=idf_escape($z);$td=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Nb="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$Xc=apply_sql_function($X["fun"],$E);$lh=isset($m["privileges"]["order"])||$Xc!=$E;echo($lh?"$Xc":$Xc);$Ke=($lh?"":'');if(!$X["fun"]&&isset($m["privileges"]["where"])){$Ke +.=' =';$Ke +.=script("qsl('a').onclick = partial(selectSearch, '".js_escape($z)."');");}echo($Ke?"":"");}$Yc[$z]=$X["fun"];next($O);}}$qe=array();if($_GET["modify"]){foreach($N +as$M){foreach($M +as$z=>$X)$qe[$z]=max($qe[$z],min(40,strlen(utf8_decode($X))));}}echo($Ba?"".lang(253):"")."
    ".checkbox("check[]",substr($si,1),in_array(substr($si,1),(array)$_POST["check"])).($Ud||information_schema(DB)?"":" ".lang(254).""));reset($O);foreach($M +as$z=>$X){if(isset($Ye[$z])){$c=current($O);$m=(array)$n[$z];if($X!=""&&(!isset($hc[$z])||$hc[$z]!=""))$hc[$z]=(is_mail($X)?$Ye[$z]:"");$A="";if(is_blob($m)&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$si;if(!$A&&$X!==null){foreach((array)$Sc[$z]as$p){if(count($Sc[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$t=>$mh)$A +.=where_link($t,$p["target"][$t],$N[$We][$mh]);$A=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$A;if($p["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$A);if(count($p["source"])==1)break;}}}if($c=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$ri))$A +.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($ri +as$be=>$W)$A +.=where_link($t++,$be,$W);}$ud=select_value($X,$A,$m,$Sh);$u=h("val[$si][".bracket_escape($z)."]");$jg=idx(idx($_POST["val"],$si),bracket_escape($z));$cc=!is_array($M[$z])&&is_utf8($ud)&&$N[$We][$z]==$M[$z]&&!$Yc[$z]&&!$m["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$c,$C)?$n[idf_unescape($C[2])]["type"]:$m["type"]);$Rh=preg_match('~text|json|lob~',$U);$Vd=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$c);echo"".($Rh?"":"");}else{$ve=strpos($ud,"");echo" data-text='".($ve?2:($Rh?1:0))."'".($cc?"":" data-warning='".h(lang(255))."'").">$ud";}}next($O);}if($Ba)echo"";adminer()->backwardKeysPrint($Ba,$N[$We]);echo"
    \n","
    \n";}if(!is_ajax()){if($N||$G){$uc=true;if($_GET["page"]!="last"){if(!$_||(count($N)<$_&&($N||!$G)))$Vc=($G?$G*$_:0)+count($N);elseif(JUSH!="sql"||!$Ud){$Vc=($Ud?false:found_rows($S,$Z));if(intval($Vc)$_||$G));if($Kf)echo(($Vc===false?count($N)+1:$Vc-$G*$_)>$_?'

    '.lang(256).''.script("qsl('a').onclick = partial(selectLoadMore, $_, '".lang(257)."…');",""):''),"\n";echo"

    \n";}if(adminer()->selectImportPrint())echo"

    ","".lang(67)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"";echo +input_token(),"

    \n",(!$s&&$O?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$uh=isset($_GET["status"]);page_header($uh?lang(119):lang(118));$Ii=($uh?adminer()->showStatus():adminer()->showVariables());if(!$Ii)echo"

    ".lang(14)."\n";else{echo"\n";foreach($Ii +as$M){echo"";$z=array_shift($M);echo"
    ".h($z)."";foreach($M +as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Ch=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$E=>$S){json_row("Comment-$E",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$z)json_row("$z-$E",h($S[$z]));foreach($Ch+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);if($X>=0)json_row("$z-$E",($z=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Ch[$z]))$Ch[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$E","?");}}}foreach($Ch +as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Lh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Lh&&!$l&&!$_POST["search"]){$K=true;$D="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$K=truncate_tables($_POST["tables"]);$D=lang(261);}elseif($_POST["move"]){$K=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(262);}elseif($_POST["copy"]){$K=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(263);}elseif($_POST["drop"]){if($_POST["views"])$K=drop_views($_POST["views"]);if($K&&$_POST["tables"])$K=drop_tables($_POST["tables"]);$D=lang(264);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$M)$D +.="".h($R).": ".h($M["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$K=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D=lang(265);}elseif(!$_POST["tables"])$D=lang(11);elseif($K=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($M=$K->fetch_assoc())$D +.="".h($M["Table"]).": ".h($M["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$D,$K);}page_header(($_GET["ns"]==""?lang(29).": ".h(DB):lang(266).": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(267)."

    \n";$Kh=tables_list();if(!$Kh)echo"

    ".lang(11)."\n";else{echo"

    \n";if(support("table")){echo"
    ".lang(268)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," ",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($Kh +as$E=>$U){$Li=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$E);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(133);$d=array("Engine"=>array(lang(269).doc_link(array('sql'=>'storage-engines.html'))));if(collations())$d["Collation"]=array(lang(123).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$d["Data_length"]=array(lang(270).doc_link(array('sql'=>'show-table-status.html',)),"create",lang(36));if(support('indexes'))$d["Index_length"]=array(lang(271).doc_link(array('sql'=>'show-table-status.html',)),"indexes",lang(136));$d["Data_free"]=array(lang(272).doc_link(array('sql'=>'show-table-status.html')),"edit",lang(37));if(function_exists('Adminer\alter_table'))$d["Auto_increment"]=array(lang(43).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",lang(36));$d["Rows"]=array(lang(273).doc_link(array('sql'=>'show-table-status.html',)),"select",lang(33));if(support("comment"))$d["Comment"]=array(lang(42).doc_link(array('sql'=>'show-table-status.html',)));foreach($d +as$c)echo"$c[0]";echo"
    '.checkbox(($Li?"views[]":"tables[]"),$E,in_array("$E",$Lh,true),"","","",$u),''.(support("table")||support("indexes")?"".h($E).'':h($E));if($Li&&!preg_match('~materialized~i',$U)){$Wh=lang(132);echo''.(support("view")?"$Wh":$Wh),'?';}else{foreach($d +as$z=>$c){$u=" id='$z-".h($E)."'";echo($c[1]?"?":"");}$T++;}echo"\n";}echo"
    ".lang(245,count($Kh)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo($d[$z]?"":"");echo"\n","
    \n",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"
    \n";if(!information_schema(DB)){$Gi=" ".on_help("'VACUUM'");$uf=" ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");$ng=(JUSH=="sqlite"?$Gi." ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Gi.$uf:(JUSH=="sql"?" ".on_help("'ANALYZE TABLE'").$uf." ".on_help("'CHECK TABLE'")." ".on_help("'REPAIR TABLE'"):""))).(function_exists('Adminer\truncate_tables')?" ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm():"").(function_exists('Adminer\drop_tables')?"".on_help("'DROP TABLE'").confirm():"");echo($ng?"\n";}echo"
    \n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"

    ".lang(64)."

    \n";$Og=routines();if($Og){echo"\n",'\n";foreach($Og +as$M){$E=($M["SPECIFIC_NAME"]==$M["ROUTINE_NAME"]?"":"&name=".urlencode($M["ROUTINE_NAME"]));echo'','
    '.lang(188).''.lang(41).''.lang(224)."
    '.h($M["ROUTINE_NAME"]).'',''.h($M["ROUTINE_TYPE"]),''.h($M["DTD_IDENTIFIER"]),''.lang(139)."";}echo"
    \n";}echo'

    ".lang(66)."

    \n";$N=get_rows("SHOW EVENTS");if($N){echo"\n","\n";foreach($N +as$M)echo"","
    ".lang(188)."".lang(284)."".lang(213)."".lang(214)."
    ".h($M["Name"]),"".($M["Execute at"]?lang(285)."".$M["Execute at"]:lang(215)." ".$M["Interval value"]." ".$M["Interval field"]."$M[Starts]"),"$M[Ends]",''.lang(139).'';echo"
    \n";$sc=get_val("SELECT @@event_scheduler");if($sc&&$sc!="ON")echo"

    event_scheduler: ".h($sc)."\n";}echo'