<?php
/** Adminer Editor - Compact database editor
* @link https://www.adminer.org/
* @author Jakub Vrana, https://www.vrana.cz/
* @copyright 2009 Jakub Vrana
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 6.0.0
*/namespace
Adminer;const
VERSION="6.0.0";error_reporting(24575);set_error_handler(function($Ob,$Qb){return!!preg_match('~^Undefined (array key|offset|index)~',$Qb);},E_WARNING|E_NOTICE);$hc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($hc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$W){$tg=filter_input_array(constant("INPUT$W"),FILTER_UNSAFE_RAW);if($tg)$$W=$tg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection($g=null){return($g?:Db::$instance);}function
adminer(){return
Adminer::$instance;}function
driver(){return
Driver::$instance;}function
connect(){$db=adminer()->credentials();$I=Driver::connect($db[0],$db[1],$db[2]);return(is_object($I)?$I:null);}function
idf_unescape($t){if(!preg_match('~^[`\'"[]~',$t))return$t;$wd=substr($t,-1);return
str_replace($wd.$wd,$wd,substr($t,1,-1));}function
q($P){return
connection()->quote($P);}function
idx($ma,$v,$i=null){return($ma&&array_key_exists($v,$ma)?$ma[$v]:$i);}function
number($W){return
preg_replace('~[^0-9]+~','',$W);}function
int_type(){return'(tiny|small|medium|big)?int(eger|\d)?';}function
number_type(){return'(^('.int_type().'|decimal|numeric|real|(binary_|half_|scaled_)?float\d?|(binary_)?double( precision)?|(small)?money)$)';}function
remove_slashes(array$Fg,$hc=false){$I=array();foreach($Fg
as$v=>$W)$I[stripslashes($v)]=(is_array($W)?remove_slashes($W,$hc):($hc?$W:stripslashes($W)));return$I;}function
bracket_escape($t,$ta=false){static$ig=array(':'=>':1',']'=>':2','['=>':3','"'=>':4','='=>':5');return
strtr($t,($ta?array_flip($ig):$ig));}function
url_escape($P){static$ig=array();if(!$ig){$ig=array(' '=>'+');foreach(str_split("\"'<>#%&+=?".ini_get("arg_separator.input"))as$Da)$ig[$Da]=sprintf('%%%02X',ord($Da));for($r=0;$r<256;$r++){if($r<32||$r>126)$ig[chr($r)]=sprintf('%%%02X',$r);}}return
strtr((string)$P,$ig);}function
min_version($Gg,$Jd="",$g=null){$g=connection($g);$xf=$g->server_info;if($Jd&&preg_match('~([\d.]+)-MariaDB~',$xf,$z)){$xf=$z[1];$Gg=$Jd;}return$Gg&&version_compare($xf,$Gg)>=0;}function
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
ini_set($ve,$X){return(function_exists('ini_set')?\ini_set($ve,$X):false);}function
ini_bool($bd){$W=ini_get($bd);return(preg_match('~^(on|true|yes)$~i',$W)||(int)$W);}function
ini_bytes($bd){$W=ini_get($bd);switch(strtolower(substr($W,-1))){case'g':$W=(int)$W*1024;case'm':$W=(int)$W*1024;case'k':$W=(int)$W*1024;}return$W;}function
max_input_vars($J,$_e){$Md=(int)ini_get("max_input_vars");return($Md?(int)floor(($Md-$_e)/$J):0);}function
max_input_vars_error(){$bd="max_input_vars";return
sprintf('Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s erhöhen.',"<b>$bd = ".ini_get($bd)."</b>");}function
sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function
set_password($Y,$M,$U,$E){$_SESSION["pwds"][$Y][$M][$U]=($_COOKIE["adminer_key"]&&is_string($E)?array(encrypt_string($E,$_COOKIE["adminer_key"])):$E);}function
get_password(){$I=get_session("pwds");if(is_array($I))$I=($_COOKIE["adminer_key"]?decrypt_string($I[0],$_COOKIE["adminer_key"]):false);return$I;}function
get_val($G,$k=0,$Sa=null){$Sa=connection($Sa);$H=$Sa->query($G);if(!is_object($H))return
false;$J=$H->fetch_row();return($J?$J[$k]:false);}function
get_vals($G,$d=0){$I=array();$H=connection()->query($G);if(is_object($H)){while($J=$H->fetch_row())$I[]=$J[$d];}return$I;}function
get_key_vals($G,$g=null,$_f=true){$g=connection($g);$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($_f)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
get_rows($G,$g=null,$j="<p class='error'>"){$Sa=connection($g);$I=array();$H=$Sa->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!$g&&$j&&(defined('Adminer\PAGE_HEADER')||$j=="-- "))echo$j.error()."\n";return$I;}function
unique_array($J,array$u){foreach($u
as$Yc){if(preg_match("~^(PRIMARY|UNIQUE)$~",$Yc["type"])&&!$Yc["partial"]){$I=array();foreach($Yc["columns"]as$v){if(!isset($J[$v]))continue
2;$I[$v]=$J[$v];}return$I;}}}function
escape_key($v){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$v,$z))return$z[1].idf_escape(idf_unescape($z[2])).$z[3];return
idf_escape($v);}function
where(array$Z,array$l=array()){$I=array();foreach((array)$Z["where"]as$v=>$W){$v=bracket_escape($v,true);$d=escape_key($v);$k=idx($l,$v,array());$dc=$k["type"];$jd=$k&&(is_blob($k)||preg_match('~binary~',$dc));$I[]=$d.($jd&&!is_utf8($W)?" = ".driver()->quoteBinary($W):(JUSH=="sql"&&$dc=="json"?" = CAST(".q($W)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$k["full_type"])?"::jsonb = ".q($W)."::jsonb":(JUSH=="sql"&&is_numeric($W)&&preg_match('~\.~',$W)?" LIKE ".q($W):(JUSH=="mssql"&&strpos($dc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$W)):" = ".unconvert_field($k,q($W)))))));if(JUSH=="sql"&&preg_match('~char|text~',$dc)&&preg_match("~[^ -@]~",$W))$I[]="$d = ".q($W)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$v)$I[]=escape_key($v)." IS NULL";return
implode(" AND ",$I);}function
where_columns(array$l){$I=array();foreach((array)$_GET["null"]as$v)$I[$v]=true;foreach((array)$_GET["where"]as$v=>$W){$v=bracket_escape($v,true);foreach($l
as$A=>$k){if($v==$A||strpos($v,idf_escape($A))!==false)$I[$A]=true;}}return$I;}function
where_check($W,array$l=array()){parse_str($W,$Fa);remove_slashes(array(&$Fa));return
where($Fa,$l);}function
where_link($r,$d,$X,$te="="){$se=($X!==null?$te:"IS NULL");return"&where[$r][col]=".url_escape($d).($se!=first(adminer()->operators())?"&where[$r][op]=".url_escape($se):"")."&where[$r][val]=".url_escape($X);}function
convert_fields(array$e,array$l,array$L=array()){$I="";foreach($e
as$v=>$W){if($L&&!in_array(idf_escape($v),$L))continue;$na=convert_field($l[$v]);if($na)$I
.=", $na AS ".idf_escape($v);}return$I;}function
cookie_path(){return
strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),array(";"=>"%3B",","=>"%2C"));}function
cookie($A,$X,$Bd=2592000){header("Set-Cookie: $A=".rawurlencode($X).($Bd?"; expires=".gmdate("D, d M Y H:i:s",time()+$Bd)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"").($A=="adminer_import"?"":"; HttpOnly")."; SameSite=lax",false);}function
get_url($yg,$Va){$http_response_header=null;$Pb=array();set_error_handler(function($Ob,$j)use(&$Pb){$Pb[]=preg_replace('~^file_get_contents\([^)]*\):\s*~','',$j);return
true;});$I=file_get_contents($yg,false,$Va);restore_error_handler();$Kc=(function_exists('http_get_last_response_headers')?http_get_last_response_headers():$http_response_header);return
array($I,(preg_match('~^HTTP/[\d.]+ (\d+)~',idx($Kc,0,''),$z)?$z[1]:''),(array)$Kc,($I===false?implode("\n",$Pb):''),);}function
get_settings($Ya){parse_str($_COOKIE[$Ya],$Af);return$Af;}function
get_setting($v,$Ya="adminer_settings",$i=null){return
idx(get_settings($Ya),$v,$i);}function
save_settings(array$Af,$Ya="adminer_settings"){$X=http_build_query($Af+get_settings($Ya));cookie($Ya,$X);$_COOKIE[$Ya]=$X;}function
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==PHP_SESSION_NONE))session_start();}function
stop_session($mc=false){$zg=ini_bool("session.use_cookies");if(!$zg||$mc){session_write_close();if($zg&&ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($v){return$_SESSION[$v][DRIVER][SERVER][$_GET["username"]];}function
set_session($v,$W){$_SESSION[$v][DRIVER][SERVER][$_GET["username"]]=$W;}function
auth_url($Y,$M,$U,$h=null){$xg=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($h!==null?"db|":"").($Y=='mssql'||$Y=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$xg,$z);return"$z[1]?".(sid()?SID."&":"").($_GET["ext"]?"ext=".url_escape($_GET["ext"])."&":"").($Y!="server"||$M!=""?url_escape($Y)."=".url_escape($M)."&":"")."username=".url_escape($U).($h!=""?"&db=".url_escape($h):"").($z[2]?"&$z[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($Fd,$Xd=null){if($Xd!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Fd!==null?$Fd:$_SERVER["REQUEST_URI"]))][]=$Xd;}if($Fd!==null){if($Fd=="")$Fd=".";header("Location: $Fd");exit;}}function
query_redirect($G,$Fd,$Xd,$ef=true,$Vb=true,$ac=false,$Zf=""){if($Vb){$Kf=microtime(true);$ac=!connection()->query($G);$Zf=format_time($Kf);}$If=($G?adminer()->messageQuery($G,$Zf,$ac):"");if($ac){adminer()->error
.=error().$If.script("messagesPrint();")."<br>";return
false;}if($ef)redirect($Fd,$Xd.$If);return
true;}class
Queries{static$queries=array();static$start=0;}function
queries($G){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$G:(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";");return
connection()->query($G);}function
apply_queries($G,array$Uf,$Rb='Adminer\table'){foreach($Uf
as$Q){if(!queries("$G ".$Rb($Q)))return
false;}return
true;}function
queries_redirect($Fd,$Xd,$ef){$Ze=implode("\n",Queries::$queries);$Zf=format_time(Queries::$start);return
query_redirect($Ze,$Fd,$Xd,$ef,false,!$ef,$Zf);}function
format_time($Kf){return
sprintf('%.3f s',max(0,microtime(true)-$Kf));}function
relative_uri(){return
preg_replace_callback('~^[^?]*~',function($z){return
str_replace(":","%3A",$z[0]);},preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($De=""){return
substr(preg_replace("~(?<=[?&])($De".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_files($v,$mb=false){$m=$_FILES[$v];if(!$m)return
null;foreach($m
as$v=>$W)$m[$v]=(array)$W;$I=array();foreach($m["error"]as$v=>$j){if($j)return$j;$A=$m["name"][$v];$fg=$m["tmp_name"][$v];$Ua=file_get_contents($mb&&preg_match('~\.gz$~',$A)?"compress.zlib://$fg":$fg);if($mb){$Kf=substr($Ua,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Kf))$Ua=iconv("utf-16","utf-8",$Ua);elseif($Kf=="\xEF\xBB\xBF")$Ua=substr($Ua,3);}$I[]=array($A,$Ua);}return$I;}function
get_file($v,$mb=false,$pb=""){$gc=get_files($v,$mb);if(!is_array($gc))return$gc;$I='';foreach($gc
as$m){$Ua=$m[1];$I
.=$Ua;if($pb)$I
.=(preg_match("($pb\\s*\$)",$Ua)?"":$pb)."\n\n";}return$I;}function
upload_error($j){$Rd=($j==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($j?'Hochladen von Datei fehlgeschlagen.'.($Rd?" ".sprintf('Maximal erlaubte Dateigröße ist %sB.',$Rd):""):'Datei existiert nicht.');}function
repeat_pattern($Je,$w){return
str_repeat("$Je{0,65535}",$w/65535)."$Je{0,".($w%65535)."}";}function
is_utf8($W){return(preg_match('~~u',$W)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$W));}function
format_number($W){return
strtr(number_format($W,0,".",' '),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
format_status(array$R,$v){$W=idx($R,$v,'?');if(!is_numeric($W))return
h($W);if($W<0)return'?';$ja=($v=="Rows"&&(JUSH=="sqlite"||$R["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")));return($ja?"~ ":"").format_number($W);}function
friendly_url($W){return
preg_replace('~\W~i','-',$W);}function
table_status1($Q,$bc=false){$I=table_status($Q,$bc);return($I?reset($I):array("Name"=>$Q));}function
column_foreign_keys($Q){$I=array();foreach(adminer()->foreignKeys($Q)as$qc){foreach($qc["source"]as$W)$I[$W][]=$qc;}return$I;}function
fields_from_edit(){$I=array();foreach((array)$_POST["field_keys"]as$v=>$W){if($W!=""){$W=bracket_escape($W);$_POST["function"][$W]=$_POST["field_funs"][$v];$_POST["fields"][$W]=$_POST["field_vals"][$v];}}foreach((array)$_POST["fields"]as$v=>$W){$A=bracket_escape($v,true);$I[$A]=array("field"=>$A,"full_type"=>"","type"=>"","privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>true,"auto_increment"=>($A==driver()->primary),);}return$I;}function
dump_headers($Tc,$ge=false){$I=adminer()->dumpHeaders($Tc,$ge);$Ae=$_POST["output"];if($Ae!="text"||$I=="tar"){$Qa=($Ae!="text"&&$Ae!="file"&&preg_match('~^[0-9a-z]+$~',$Ae)?".$Ae":"");header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Tc).".$I$Qa");}session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$I;}function
dump_csv(array$J){$mg=$_POST["format"]=="tsv";foreach($J
as$v=>$W){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($mg?'\t':'[,;]|^$').'~',$W))$J[$v]='"'.str_replace('"','""',$W).'"';}echo
implode(($_POST["format"]=="csv"?",":($mg?"\t":";")),$J)."\r\n";}function
parse_csv($gb,$wf){$I=array();preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$gb,$Kd);foreach($Kd[0]as$J){preg_match_all("~((?>\"[^\"]*\")+|[^$wf]*)$wf~",$J.$wf,$Ld);$I[]=$Ld[1];}return$I;}function
csv_value($W){return(preg_match('~^".*"$~s',$W)?str_replace('""','"',substr($W,1,-1)):$W);}function
apply_sql_function($p,$d){return($p?($p=="unixepoch"?"DATETIME($d, '$p')":($p=="count distinct"?"COUNT(DISTINCT ":strtoupper("$p("))."$d)"):$d);}function
get_temp_dir(){return
ini_get("upload_tmp_dir")?:sys_get_temp_dir();}function
file_open_lock($n){if(is_link($n))return;$o=@fopen($n,"c+");if(!$o)return;@chmod($n,0660);if(!flock($o,LOCK_EX)){fclose($o);return;}return$o;}function
file_write_unlock($o,$jb){rewind($o);fwrite($o,$jb);ftruncate($o,strlen($jb));file_unlock($o);}function
file_unlock($o){flock($o,LOCK_UN);fclose($o);}function
first(array$ma){return
reset($ma);}function
password_file($bb){$n=get_temp_dir()."/adminer.key";if(!$bb&&!file_exists($n))return'';$o=file_open_lock($n);if(!$o)return'';$I=stream_get_contents($o);if(!$I){$I=rand_string();file_write_unlock($o,$I);}else
file_unlock($o);return$I;}function
rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function
select_value($W,$y,array$k,$Xf){if(is_array($W)){$I="";if(array_filter($W,'is_array')==array_values($W)){$rd=array();foreach($W
as$V)$rd+=array_fill_keys(array_keys($V),null);foreach(array_keys($rd)as$qd)$I
.="<th>".h($qd);foreach($W
as$V){$I
.="<tr>";foreach(array_merge($rd,$V)as$Cg)$I
.="<td>".select_value($Cg,$y,$k,$Xf);}}else{foreach($W
as$qd=>$V)$I
.="<tr>".($W!=array_values($W)?"<th>".h($qd):"")."<td>".select_value($V,$y,$k,$Xf);}return"<table>$I</table>";}if(!$y)$y=adminer()->selectLink($W,$k);if($y===null){if(is_mail($W))$y="mailto:$W";if(is_url($W))$y=$W;}$W=driver()->value($W,$k);$I=adminer()->editVal($W,$k);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Xf!=""&&is_shortable($k))$I=shorten_utf8($I,max(0,+$Xf));else$I=h($I);}return
adminer()->selectVal($I,$y,$k,$W);}function
is_blob(array$k){return
preg_match('~blob|bytea|raw|file'.(JUSH=="mssql"?'|binary|image':'').'~',$k["type"])&&!in_array($k["type"],idx(driver()->structuredTypes(),'Benutzerdefinierte Typen',array()));}function
is_mail($Hb){$oa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Ab='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Je="$oa+(\\.$oa+)*@($Ab?\\.)+$Ab";return
is_string($Hb)&&preg_match("(^$Je(,\\s*$Je)*\$)i",$Hb);}function
is_url($P){$Ab='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^((https?):)?//($Ab?\\.)+$Ab(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$P);}function
is_shortable(array$k){return!preg_match('~'.number_type().'|date|time|year~',$k["type"]);}function
host_port($M){return(preg_match('~^(:([^:].*)|(\[(.+)\]|(([^:]+://)?[^:]+))(:(\d+))?)$~',$M,$z)?array($z[4].$z[5],$z[2].$z[8]):array($M,''));}function
count_rows($Q,array$Z,$kd,array$q){$G=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($kd&&(JUSH=="sql"||count($q)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$q).")$G":"SELECT COUNT(*)".($kd?" FROM (SELECT 1$G GROUP BY ".implode(", ",$q).") x":$G));}function
slow_query($G){$h=adminer()->database();$ag=adminer()->queryTimeout();$Df=driver()->slowQuery($G,$ag);$g=null;if(!$Df&&support("kill")){$g=connect();if($g&&($h==""||$g->select_db($h))){$sd=get_val(connection_id(),0,$g);echo
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$sd&token=".get_token()."'); }, 1000 * $ag);");}}ob_flush();flush();$I=@get_key_vals(($Df?:$G),$g,false);if($g){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
get_token(){$cf=rand(1,1e6);return($cf^$_SESSION["token"]).":$cf";}function
verify_token(){list($gg,$cf)=explode(":",$_POST["token"]);return($cf^$_SESSION["token"])==$gg&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"));}function
compress_alphabet(){return
strtr(implode(range('"','~')),"'\\","!\n");}function
decompress_string($P,$sb=""){$ga=array_flip(str_split(compress_alphabet()));$w=strlen($P);$Eg=($w?13*($w-1)/2-$ga[$P[0]]:0);$c="";$lf=0;$mf=0;for($r=1;$r<$w;$r+=2){$lf=($lf<<13)+$ga[$P[$r]]*93+$ga[$P[$r+1]];$mf+=13;while($mf>=8&&$Eg>=8){$mf-=8;$Eg-=8;$c
.=chr($lf>>$mf);$lf&=(1<<$mf)-1;}}if($c=="")return"";if($sb!=""&&function_exists('inflate_init'))return
inflate_add(inflate_init(ZLIB_ENCODING_RAW,array('dictionary'=>$sb)),$c,ZLIB_FINISH);return($sb==""&&function_exists('gzinflate')?gzinflate($c):inflate($c,$sb));}function
inflate($c,$sb=""){$zd=array(3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258);$_d=array(0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0);$vb=array(1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577);$xb=array(0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13);$I=$sb;$F=0;do{$ic=inflate_bits($c,$F,1);$S=inflate_bits($c,$F,2);if(!$S){$F=($F+7)&~7;$w=inflate_bits($c,$F,16);$F+=16;$I
.=substr($c,$F>>3,$w);$F+=$w<<3;}else{if($S==1){$Dd=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$yb=array_fill(0,30,5);}else{$Cd=inflate_bits($c,$F,5)+257;$wb=inflate_bits($c,$F,5)+1;$C=array(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);$ae=array_fill(0,19,0);$Zd=inflate_bits($c,$F,4)+4;for($r=0;$r<$Zd;$r++)$ae[$C[$r]]=inflate_bits($c,$F,3);$be=inflate_table($ae);$Ad=array();while(count($Ad)<$Cd+$wb){$Qf=inflate_symbol($c,$F,$be);if($Qf==16)$Ad=array_merge($Ad,array_fill(0,inflate_bits($c,$F,2)+3,end($Ad)));elseif($Qf==17)$Ad=array_merge($Ad,array_fill(0,inflate_bits($c,$F,3)+3,0));elseif($Qf==18)$Ad=array_merge($Ad,array_fill(0,inflate_bits($c,$F,7)+11,0));else$Ad[]=$Qf;}$Dd=array_slice($Ad,0,$Cd);$yb=array_slice($Ad,$Cd);}$Ed=inflate_table($Dd);$_b=inflate_table($yb);while(($Qf=inflate_symbol($c,$F,$Ed))!=256){if($Qf<256)$I
.=chr($Qf);else{$w=$zd[$Qf-257]+inflate_bits($c,$F,$_d[$Qf-257]);$zb=inflate_symbol($c,$F,$_b);$pe=strlen($I)-$vb[$zb]-inflate_bits($c,$F,$xb[$zb]);for($r=0;$r<$w;$r++)$I
.=$I[$pe+$r];}}}}while(!$ic);return($sb==""?$I:substr($I,strlen($sb)));}function
inflate_bits($c,&$F,$ab){$I=0;for($r=0;$r<$ab;$r++){$I+=((ord($c[$F>>3])>>($F&7))&1)<<$r;$F++;}return$I;}function
inflate_table(array$Ad){$Q=array();$Ka=0;for($za=1;$za<=max($Ad);$za++){foreach($Ad
as$Qf=>$w){if($w==$za){$Q[$za][$Ka]=$Qf;$Ka++;}}$Ka<<=1;}return$Q;}function
inflate_symbol($c,&$F,array$Q){$Ka=0;$za=0;do{$Ka=($Ka<<1)+inflate_bits($c,$F,1);$za++;}while(!isset($Q[$za][$Ka]));return$Q[$za][$Ka];}function
script($Hf,$hg="\n"){return"<script".nonce().">$Hf</script>$hg";}function
script_src($yg,$nb=false){return"<script src='".h($yg)."'".nonce().($nb?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
on($Sb,$Dc,$ka=null){$la=array();foreach(array_slice(func_get_args(),2)as$W)$la[]=json_encode($W,256);return" data-on$Sb='".str_replace(array('&','<',"'"),array('&amp;','&lt;','&#039;'),"$Dc(".implode(", ",$la).")")."'";}function
input_hidden($A,$X=""){return"<input type='hidden' name='".h($A)."' value='".h($X)."'>\n";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($P){return
str_replace(array('&','<','"',"'","\0"),array('&amp;','&lt;','&quot;','&#039;','&#0;'),$P);}function
nl_br($P){return
str_replace("\n","<br>",$P);}function
checkbox($A,$X,$Ga,$td="",$b="",$Ja="",$vd=""){$I="<input type='checkbox' name='$A' value='".h($X)."'".($Ga?" checked":"").($td==""&&$Ja?" class='$Ja'":"").($vd?" aria-labelledby='$vd'":"").$b.">";return($td!=""?"<label".($Ja?" class='$Ja'":"").">$I".h($td)."</label>":$I);}function
optionlist($B,$uf=null,$_g=false){$I="";foreach($B
as$qd=>$V){$we=array($qd=>$V);if(is_array($V)){$I
.='<optgroup label="'.h($qd).'">';$we=$V;}foreach($we
as$v=>$W)$I
.='<option'.($_g||is_string($v)?' value="'.h($v).'"':'').($uf!==null&&($_g||is_string($v)?(string)$v:$W)===$uf?' selected':'').'>'.h($W);if(is_array($V))$I
.='</optgroup>';}return$I;}function
html_select($A,array$B,$X="",$b="",$vd=""){static$td=0;$ud="";if(!$vd&&substr($B[""],0,1)=="("){$td++;$vd="label-$td";$ud="<option value='' id='$vd'>".h($B[""]);unset($B[""]);}return"<select name='".h($A)."'".($vd?" aria-labelledby='$vd'":"")."$b>".$ud.optionlist($B,$X)."</select>";}function
html_radios($A,array$B,$X="",$wf=""){$I="";foreach($B
as$v=>$W)$I
.="<label><input type='radio' name='".h($A)."' value='".h($v)."'".($v==$X?" checked":"").">".h($W)."</label>$wf";return$I;}function
confirm($Xd=""){return
on('click','confirmClick',$Xd?:'Sind Sie sicher?');}function
print_fieldset($s,$yd,$Jg=false){echo"<fieldset><legend>","<a href='#fieldset-$s' class='toggle'>$yd</a>","</legend>","<div id='fieldset-$s'".($Jg?"":" class='hidden'").">\n";}function
bold($_a,$Ja=""){return($_a?" class='active $Ja'":($Ja?" class='$Ja'":""));}function
js_escape($P){return
str_replace("<","\\x3C",addcslashes($P,"\r\n'\\"));}function
js_escape_re($P){return
addcslashes(preg_quote($P,"/"),"\r\n");}function
pagination_href($D){return
remove_from_uri("page|next").($D?"&page=$D".($_GET["next"]!=""?"&next=".url_escape($_GET["next"]):""):"");}function
pagination($D,$hb){return" ".($D==$hb?($D?"<b>".($D+1)."</b>":$D+1):'<a href="'.h(pagination_href($D)).'">'.($D+1)."</a>");}function
hidden_fields(array$Xe,array$Vc=array(),$Te=''){$I=false;foreach($Xe
as$v=>$W){if(!in_array($v,$Vc)){if(is_array($W))hidden_fields($W,array(),$v);else{$I=true;echo
input_hidden(($Te?$Te."[$v]":$v),$W);}}}return$I;}function
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),($_GET["ext"]?input_hidden("ext",$_GET["ext"]):""),(isset($_GET[DRIVER])?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
file_input($b,$lf=""){$Nd="max_file_uploads";$Od=ini_get($Nd);$Rd="upload_max_filesize";$Sd=ini_bytes($Rd);$Re=ini_bytes("post_max_size");if($Re&&$Re<$Sd){$Rd="post_max_size";$Sd=$Re;}$Td=ini_get($Rd);return(ini_bool("file_uploads")?"<input type='file'$b".on('change','fileChange',(int)$Od,sprintf('Erhöhen Sie %s.',"$Nd = $Od"),$Sd,sprintf('Erhöhen Sie %s.',"$Rd = $Td")).">$lf":'Importieren von Dateien abgeschaltet.');}function
enum_input($S,$b,array$k,$X,$Kb=""){preg_match_all("~'((?:[^']|'')*)'~",$k["length"],$Kd);$Te=($k["type"]=="enum"?"val-":"");$Ga=(is_array($X)?in_array("null",$X):$X===null);$I=($k["null"]&&$Te?"<label><input type='$S'$b value='null'".($Ga?" checked":"")."><i>$Kb</i></label>":"");foreach($Kd[1]as$W){$W=stripcslashes(str_replace("''","'",$W));$Ga=(is_array($X)?in_array($Te.$W,$X):$X===$W);$I
.=" <label><input type='$S'$b value='".h($Te.$W)."'".($Ga?' checked':'').'>'.h(adminer()->editVal($W,$k)).'</label>';}return$I;}function
input(array$k,$X,$p,$sa=false,$T=false){$A=h(bracket_escape($k["field"]));echo"<td class='function'>";if(is_array($X)&&!$p)$p="json";$od=($p=="json"||preg_match('~^jsonb?$~',$k["full_type"]));if($od&&$X!=''&&(JUSH!="pgsql"||$k["type"]!="json"))$X=json_encode(is_array($X)?$X:json_decode($X),128|64|256);$kf=(JUSH=="mssql"&&$T&&$k["auto_increment"]);if($kf&&!$_POST["save"])$p=null;$xc=(isset($_GET["select"])||$kf?array("orig"=>'Original'):array())+adminer()->editFunctions($k);$Nb=driver()->enumLength($k);if($Nb){$k["type"]="enum";$k["length"]=$Nb;}$b=" name='fields[$A]".($k["type"]=="enum"||$k["type"]=="set"?"[]":"")."'".($sa?" autofocus":"");echo
driver()->unconvertFunction($k)." ";$Q=$_GET["edit"]?:$_GET["select"];if($k["type"]=="enum")echo
h($xc[""])."<td>".adminer()->editInput($Q,$k,$b,$X);else{$Gc=(in_array($p,$xc)||isset($xc[$p]));$jc=0;foreach($xc
as$v=>$W){if($v===""||!$W)break;$jc++;}echo(count($xc)>1?"<select name='function[$A]'".on('change','functionChange').on_help_value('^SQL$').">".optionlist($xc,$p===null||$Gc?$p:"")."</select>":h(reset($xc)))."<td".($jc&&count($xc)>1?on('input','skipOriginal',$jc):"").">";$dd=adminer()->editInput($Q,$k,$b,$X);if($dd!="")echo$dd;elseif(preg_match('~bool~',$k["type"]))echo"<input type='hidden'$b value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?" checked":"")."$b value='1'>";elseif($k["type"]=="set")echo
enum_input("checkbox",$b,$k,(is_string($X)?explode(",",$X):$X));elseif(is_blob($k)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$A'>";elseif($od)echo"<textarea$b cols='50' rows='12' class='jush-json'>".h($X).'</textarea>';elseif(($Wf=preg_match('~text|lob|memo~i',$k["type"]))||preg_match("~\n~",$X)){if($Wf&&JUSH!="sqlite")$b
.=" cols='50' rows='12'";else{$K=min(12,substr_count($X,"\n")+1);$b
.=" cols='30' rows='$K'";}echo"<textarea$b>".h($X).'</textarea>';}else{$og=driver()->types();$Ud=(!preg_match('~int~',$k["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$k["length"],$z)?((preg_match("~binary~",$k["type"])?2:1)*$z[1]+($z[3]?1:0)+($z[2]&&!$k["unsigned"]?1:0)):($og[$k["type"]]?$og[$k["type"]]+($k["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$k["type"]))$Ud+=7;echo"<input".((!$Gc||$p==="")&&preg_match('~^'.int_type().'$~',$k["type"])&&!preg_match('~\[]~',$k["full_type"])?" type='number'":"")." value='".h($X)."'".($Ud?" data-maxlength='$Ud'":"").(preg_match('~char|binary~',$k["type"])&&$Ud>20?" size='".($Ud>99?60:40)."'":"")."$b>";}echo
adminer()->editHint($Q,$k,$X),(count($xc)>1?script("fire(qs('select', qsl('td').previousSibling), 'change');",""):"");}}function
process_input(array$k){$t=bracket_escape($k["field"]);$p=idx($_POST["function"],$t);if($p=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$k["on_update"])?idf_escape($k["field"]):false);if($p=="NULL")return"NULL";if(is_blob($k)&&ini_bool("file_uploads")){$m=get_file("fields-$t");if(!is_string($m))return
false;return
driver()->quoteBinary($m);}$X=idx($_POST["fields"],$t);if($X===null)return
false;if($k["type"]=="enum"||driver()->enumLength($k)){$X=idx($X,0);if($X=="orig"||!$X)return
false;if($X=="null")return"NULL";$X=substr($X,4);}if($k["auto_increment"]&&$X=="")return
null;if($k["type"]=="set")$X=implode(",",(array)$X);if($p=="json"){$X=json_decode($X,true);if(!is_array($X))return
false;return$X;}return
adminer()->processInput($k,$X,$p);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$vf="<ul>\n";foreach(table_status('',true)as$Q=>$R){$A=adminer()->tableName($R);if(isset($R["Engine"])&&$A!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$H=connection()->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($Q),array())),1));if(!$H||$H->fetch_row()){$Ve="<a href='".h(ME."select=".url_escape($Q)."&where[0][op]=".url_escape($_GET["where"][0]["op"])."&where[0][val]=".url_escape($_GET["where"][0]["val"]))."'>$A</a>";echo"$vf<li>".($H?$Ve:"<p class='error'>$Ve: ".error())."\n";$vf="";}}}echo($vf?"<p class='message'>".'Keine Tabellen.':"</ul>")."\n";}function
on_help($Wf,$Bf=0){return
on('mouseover','helpMouseover',$Wf,$Bf).on('mouseout','helpMouseout');}function
on_help_value($gf="",$jf=""){return
on('mouseover','helpValueMouseover',$gf,$jf).on('mouseout','helpMouseout');}function
edit_form($Q,array$l,$J,$T,$j=''){$Tf=adminer()->tableName(table_status1($Q,true));page_header(($T?'Bearbeiten':'Einfügen'),$j,array("select"=>array($Q,$Tf)),$Tf);adminer()->editRowPrint($Q,$l,$J,$T);if($J===false){echo"<p class='error'>".'Keine Datensätze.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";$Gb=false;$Ng=($T&&!isset($_GET["select"])?where_columns($l):array());$Wa=(count($Ng)!=count($l));if(!$Wa)$Ng=array();if(!$l)echo"<p class='error'>".'Sie haben keine Rechte, diese Tabelle zu aktualisieren.'."\n";else{echo"<table class='layout nowrap'".on('keydown','editingKeydown').">\n";$sa=!$_POST;foreach($l
as$A=>$k){echo"<tr".($Ng[$A]?on('change','whereChange'):"")."><th>".adminer()->fieldName($k);$i=idx($_GET["set"],bracket_escape($A));if($i===null){$i=$k["default"];if($k["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$i,$hf))$i=$hf[1];if(JUSH=="sql"&&preg_match('~binary~',$k["type"]))$i=bin2hex($i);}$X=($J!==null?($J[$A]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$k["type"])&&is_array($J[$A])?implode(",",$J[$A]):(is_bool($J[$A])?+$J[$A]:$J[$A])):(!$T&&$k["auto_increment"]?"":(isset($_GET["select"])?false:$i)));if(!$_POST["save"]&&is_string($X))$X=adminer()->editVal($X,$k);if(($T&&!isset($k["privileges"]["update"]))||$k["generated"])echo"<td class='function'><td>".select_value($X,'',$k,null);else{$Gb=true;$p=($_POST["save"]?idx($_POST["function"],bracket_escape($A),""):($T&&preg_match('~^CURRENT_TIMESTAMP~i',$k["on_update"])?"now":($X===false?null:($X!==null?'':'NULL'))));if(!$_POST&&!$T&&$X==$k["default"]&&preg_match('~^[\w.]+\(~',$X))$p="SQL";if(preg_match("~time~",$k["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$X)){$X="";$p="now";}if($k["type"]=="uuid"&&$X=="uuid()"){$X="";$p="uuid";}if($sa!==false)$sa=($k["auto_increment"]||$p=="now"||$p=="uuid"?null:true);input($k,$X,$p,$sa,$T);if($sa)$sa=false;}}if(!fields($Q)&&driver()->primary!="")echo"<tr>"."<th><input name='field_keys[]'".on('input','fieldChange').">"."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>";echo"</table>\n";}echo"<p>\n";if($Gb){echo"<input type='submit' value='".'Speichern'."'>\n";if(!isset($_GET["select"])&&$Wa){$tb=($Ng&&($j!=""||adminer()->error!="")?" disabled":"");echo"<input type='submit' name='insert' value='".($T?'Speichern und weiter bearbeiten':'Speichern und nächsten einfügen')."' title='Ctrl+Shift+Enter'$tb".($T?on('click','ajaxForm','Speichere…'):"").">\n";}}echo($T?"<input type='submit' name='delete' value='".'Entfernen'."'".confirm().">\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
shorten_utf8($P,$w=80,$Of=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$w).")($)?)u",$P,$z))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$w).")($)?)",$P,$z);return
h($z[1]).$Of.(isset($z[2])?"":"<i>…</i>");}function
icon($Sc,$A,$Rc,$bg,$b=""){return"<button ".($A?"type='submit' name='$A'":"draggable='true' tabindex='-1'")." title='".h($bg)."' class='icon icon-$Sc".($A?"":" jsonly")."'$b><span>$Rc</span></button>";}function
copy_icon(){$Za='Kopieren';return"<a href='' class='jsonly icon-copy' title='$Za'><span>$Za</span></a>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
decompress_string('"c01e=<Wb2N?hU-XG)-5X.j3aFaIeR2@G19p}9$bRAi!B?LCVu<HO.XAn1nBXh1a+5;Is5?;+?F@1L3w;Sw>JfE`s_3vFuf4K`9Y]j(G)?FN>W[-LOmhRU6Oq1Jpx(h+Zsiqb4vUwV}:)2}TEy&E,7VT=%El:4}-lrM`}XOQEIlHS
CgQ(:<+UaKL)nUHsX-a*
p
[c8REDEN(<vPeYISepv^I$00Gl&SseDBFXDx4;qZXN1F/$_Nl`MV8r;_edL)(U9RL+%egZ"fTf9=SL_iV9^?:FjIWS/M_[@m[%>708PHf2<*,/U?k9$.d-K)^DTidk+zG[YnDPup[9@a()O%@F/?[V.]G1y[WZWWiB"sSg#jYKun<
KjD^@"R*ahh|e/^PJc3&a82-@DahDx:0qKngGpC+gi??*.KfXe;t+H](J(a0$@mDE,NcDh&EFwR(D(=HkjK(h`T?<]$qQoiI-g8N`(;e6b&eDb`JlGI!<K_qlP0_JVJ?*`FwsV"GRZle@C8n6KJLCqMnH~
*Q@2"GuE1S,$"0Us]TORzPI]5uTprXo$24z*?ZyS@A<"qtdGdU%AF-2bnbBHuei8.%)3&h_2ukv1UWKM!(:D}7V7*m2vg8wHM)mlK`5D{fZ%/LuBoHmWap<lL/{-E!jlO)8kB%0.n3gUc5DT(%DMzs4%=0,m[Prp/%IZQ@qs
<h7(Ex,R:w6@0LUL;RBNE%Hx9%i<7NPXfZfPf[61Rp)Imp,jBsK:0_:;Y)P5AN!tdt.cJT#H;tx]42Gz="8.qb$:,rV.:xHBHKbz@MXNP<_:gs:"l`LP.L"iS]lKX8<v4+Jm,&n,rX`dUQpq0u?_LP4/4+N0^jniic`pqN.d!X)gt-d%<0=V=,cU2hQg]EXO*a?
wE[f*C1EAnNyN9?;nFZWF%NjgJ$
-j:2u<l
.32gx+_~=f+iE];USHPq1?:0F@9Rlh=eD
P[?ZmT4L`M?6lNFaz%g")}DH4/DrWF69[THF1T`0/F=<8z?BBuhvTBLu2.EIc]/`.UcOk4UF.oR^.YaAb&-wcwoj!dZKjr*YMKX9:;+|kYCo1J,y$kKJZS"OPAl6s!Xn^_#CwC+mU"*v]0
oplZ[FZ;LBgd*$!
,Jh&.9IY+vx
@vRAj03%PT3"irSTn(>Ttx.k-/Xf_ll/n%?&"H==KhtUj/(gA1+s#ruq"6GBD9W`y&9;MSjOM4m;6oz!
M%s>FeHbQ!o`#l_ZL/?ri0Tx!Wa@`g=9l=HYJESE(k8MBL[OA_bx4n*&eCCi44Di3r2[WC`>,8j[^@P-+??-?6:qD).IA<q@Zy]69EE[kIh2*CZ+U,Fo]pIE_R.7=oWt."(x?&-XhY;Eq,JBFzYQGHwRP6V
4e&RpRa`,6+y:Re{93xaIM1}N8Um/J]0Q)/2)BCoQhfC1SBeLXr.4)"J1:a`6..+LpV0T;*8jg1xOP&IlufEezj}:!^(v;]JKx.wIfimR"_>X/ONGN<BXjC%$}#nKn[A@[!e8T*J#f`p#P47Z-<~l"s;Z+F:Q{mjT%!eW?d?YrF&LjDhb7RDU"J]%k8}_-eB+9[PO:JXIW3~;tqN@ollho:tR:OOuNBG6pT?2&+qCV._1Rk5%l8io3D"kAA#mQ9UH|UoPeA(shRL>@4oB(ZCh&M#a2*X%OoDHnZlKxuQp7M?($g)(Ao.@lVO#K#Isi5E(tCF^^#+&?`sZU:,r;pP96$$/*2bZx>_>5_j&lI=&~ilgw;jO+KFW+$/4pj)j8=Fm7AS,G8qEZ%K:NTkWpZt$eI
i9-pK;iPTTpLV@-$mDk:>gb~PCG*A1P/TYQb*LDB4de/:adI.SBu5ES)(af*&PDsRt:14PlY!Fgg,?g9lfO$c2An[_n}=40MWgkn)_/=#&OGlm!`.bNFBy4m1-?3R2gZYbnbCE4b&*jT4=OQ;m$bxnFIU20QRq8yY_@g*KwAH}b^>7-w=vuotei~BfFI7]PS;^wWDs"~luE;NB)I6i*GP|&AC^aH>QgDaE18N;[emESal>lRKd(!C6b=b$(m)>TBG"<]`P)*[N`[5z(`.G70OY@VL}9dAv,@Vl>wj4ha(pF14L#CNYo5i^k|OqQ1XP/"e@QuhkV~T|R^xp;5XQ^@E(UNdhnMYIyZ7CG%<D"9NwjZ]Dr%.:=x/d#3vj&8^p85f$3Dep4b??gb^~`|[}Z|mGZ]dA$+A4cmkrS;0hyXQi6cDKu,r6Wy%Si~*8WoH
UQ]4@.-+>K#a*wABq~"1XU%@m4e~<SO<-(p7Lo9=eo5
OaS|OJhat/WA@#0At~0t+?"|oGpCwK)wCF1Qs-:lPZmsV
52BQ>mse@^@~J5]DpDHg-C$3[V%4G|$(f8D,!.MMwkLAf_9cLw->Dxe4R.xr6uN%o#nU,Phb7Vb
wo?vq-
ewL?NL#HR5Zo8M>l>C}^JeGxY1-L{:_oj^LugYmx"h2l}TeV{Y$g0
~"zW`i6ufq^tWi&[fuzMA_w+LkXS+ey7VUSElo}WhGBG[4KXG!)@)wNTUhlsSg.3z]SWCvuUD1UB=iPtv+]ua<s8BBzH[B$to2g_m-~])LQt|j&oDynEa(LhRS[?g!>wxpk@N<[RiTruCM
nOh!:%D$7hSzR0qWaa$Rx~%QdYi4V1R,LQi{"4L%dy64n#!%M*d$:Ktfl*rQM@!jR(fu^:p!/`
h3R+x0Mu;dE7YqUS,dEZE&X-R#qH:+yG79SXfBJY,s/-H+7U
*5.51kcnkA_37A"G<8l<8"sbVlwzT_HL6yI)_un#Pua+u^cxs")cjiLB4qv.fWk6nPE!74pEc%<li`WoeF
!^WXcw_.$py?hkN*,tBmiMNh-Mz:_-(ahMbclQusmi&MrjWSd,wuZd#l{e|A>QjI&A&s#%Ik#iX=Lg>c!F<L
QtYl3$R,mDE)p
`UZ?0Ef?l(l!aefX=D39(y0XUE5]pp0VMXx83yyr+10G:%Gl67RxU=cm*)CuTnQc%}EXUgbuN`VQe[jK`M"y010qL{5X%g5ch(f`
W/Oc%Z)wV#6ZfAOsw.Xd7ALMW^4->`m,c.N6fpzWq)@XTbmCWev"`
)Y|n
y
o[
$1rq4<$9PmFu%W:Se1Tc49>uACW,8GO:a>Q.uo!C?WGd5t~VTKeF9nil4<32Jp9MAM2L@L":+_bsusvXXb0*0K-P{J=Rvu?k94M-pTE2sdrR$#Ky<qwX^wf=K>86!7O@"B}O+hf6dW~Tb6S<z8pMu<#X$+{0}8IS3UM+f1#`e.?O8]_J{,IO8:&[!7v_?<Qd^=3sj_yIo#I)*>gR)5BH/YfwB');}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
decompress_string('$OsX)b3V?$d0U7vY9-;!Qq>3cgt$UfPgAljQVK{O:.VPRl*1@6^xaIf[3n=hlcd(Db..),$]BW]<X8*%o<p>`@b<R>H==<<`@/q>O@gwK#>3i?]0#lfy|9$&p%6.Y*e,:SKB;766eRmgF?RO-63UTkW%*l@kY6Z3I)H3!
mj=A$Y`#|M_N!/|lxFG=TuW:1kFeE<Dh%WvDv*"U!u@iQh-#$0Ic_o/6^C)KwjXbb0(=70%][(h)g+r9~P
M/ZR$#%U5h?%Ey;diyOF
Sv,-RBsjp5Ac%.a0Ji<f9(^h)7"etoCfBxp/L+W@
n[JI[4;En&j@$=h]3lx<#CiR1#6eM2MiwxfX6S6
:v%b_hD)At,:e6Ugr?&/9A
;aN:TrU;T=$v9bLNg-U[2ZtlO8[$5&#""qe2x-tUatRa;(-vOqv!|Xa0>aC:QXXS5Wi__DuW1qPY-fW
&Lc3T9m06SQ9!)O*3+u%ce=j}UI.Jpb%y[z3yRL<=7S<m`E>*[PvB)KtgP%)<hFY80;KN:Vjg]f`Asd=C1lh.Mh9Z4I:{"m$?r,)@0K/)<,Mx=i-:[@acN,bmqL!:(9ST%:LcK|h{D*ZS3p/TsHp8fqAYGl4f::48g=p
emRfGVQB(-ju)n^TDuB.M+5&-nM"mdwhn]P1Q1>0b7`PXgyF*`udh.H.DE2mc3qS<acsvdVc)7r][Z=/4FB>(od^3ZVB(mQ+cWC:Qo#k5WJnR$jkNjVFa_[:I^&<-&An6AAyv[@YCy=9v.HKisgB$)G6[-"VqEWw>j:zYk:4v$fmJoO<c`utyTLQe`en3!nXH[6%K*t41+');}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
decompress_string('#X/GfnsWL2O6ulK74$36$>gxJsSD:yLYu_RbXTlp8Xa6fgjsi$sF>YP(FWxM!d!n#5+#E[JneKCA#P,C+d4,C3%>{Fyc/qH?44=@%EulrC|)`tVb@]aE`^;)@Q9Qwm_lx1[vL).&UvEjSUC].>87{xMFkmV-Yn9uotN*f,~MCjs
C9ct/u8t,gg:d8Z8J2Tx|s1@&DWXmw-2[z$x%M|XRJs*#63T
a$ljNl"T=HB-Ec*]JV^jC[<#Vy^96}k=-h+XPg.Pt>OswC)N8G]l

mNMaC$d-LATBryl?
:X:g4LTJLo7E>Kc*H,/g9=or6@#4X/@H]gPj95
kTVq
#4tcZktB[E[y^u@,{UqFOUOn6Fn%2cY@V8O4+hud]kV
_(NW>0#E4B&^<`+e`Duy1Ed0Ut,/uAJ6!V,E5?(yre>?^e$U[`R3EO[].WE[4`bF}O?Z)SLro6J^Nw`CB49=FS,xPL/`tv
nuyrSPs^xScLANufuuLG1ZrPhq,mw@)zk-hMMLug)Pd&xl=kq<Tu@4Wh8^cZ5b!^n_frd/Fyn2ms%d"1Y&wulQL&(}h:m3THT?@n1YHOs2qSDGyJi
,zM#*-%}y$PEtmL<g#V;d0UnS2R@*[t=6[UW0aKT2$.Yff(.`K0.Fv$V%52DA6KgIa)=8&FLVFfuUgjapncY7ARI,6
(cZ$i;S:+dOf`UGfB
4Z}MJW6UxGPRH4_<j8<A|cY7^5L4a@78^WMINXl,SB46}oc=$_nuZTnAC]X@s1KD#E!Ncq%AYP)_I0Cg-f<g2VPrW6v58*1eWgts6KpE78-HGp<E8oE`H#Gp*"`UJM"`~@xVQhlAy^$c/
)SUyp*K
zR)-8b-y>bHj07S@E+H.:Yb
fE6uHJ2ujpP%BbP6;$K9<ju$9`8r1o8Fy
R^4^"^mMkX8Q@m!/54$v:R<v|X8gfb"kAe[gsg7hWR-hm;w"Z96aYe%.y:}#OFTR#n]6iLTUFbYvC]&B7FDFc?aF!?:>?*%.J^Ew*NgLtS`XC;Te]n69X[:_@e17lvU>Fr*?csDOwiG
~-![_(~O84OH1RMu$"^z(M"z$A!b[uHq{-Sm(]qQ+qp!24%*I*ZR|xRhc!Xo(ClDa?),!#2c}DW"4*W`&H$J.%u2yJFaD@[7[)VHFIp$dss8OG2nG0U26QLi9"e0599@au@v<sAE;j}p?6fd@`Ajaa:B5XsPj
[7Z?Mg`=8ZM>Es:IuJa@Vy#oQv(huNl
e3hB
fPXn
@)<J[jhVC;[ee0y7_ZY]{"Wf[iZ(6k}#=VC$2%AOmiCm`?Q>Zv31%&wDMDG2g
Rn<&}hX@X;Tey.6]mU@:}q!4A;uZUT%z"QNKqvcm.4sxct(3[c83S^3?*-X`Uf059m$ToX0s~9"+@(K1Yd^F0dhr!bkm!`a%tRUD(&/BN2H!OM%!(=VTc2~E7*tYm6l>bUth5Kt+#cqJZH()IW?
IQ=-<q+pMGC#ZA@l~r/Fln+l.UKrA=Z$yIGP{&]4.4orrQwp.#T(Mkc?2m[Q:B98)*q
ic=7Fi)n`/~9KA[A,L)iC$Yl9Wb`kuIT4VAFnk%vCI^46^tk+g=(aLU7&xAe0m*LPwKoxHvVVaj7Uo^!!j+XkBW-r"0KhtMdL"?2=sRE~=lep8C^[C#8RgaIb0MR5-^-5%,,8HU@{uYB
9A]k?H<@m5#ZgW(}pEy.V*L_`4M;ae$fZ-xaPw&M@](H+PKoc:n|26s=u8-S+T&KvVq
)IIcPWJ_DS_0z$mjLmr*J~b@ezqj(hI}
SeI$=m-GBqhe34}4sGpnA+4CmA/qgZ1F&a9,V4=4K
1^p>O,~fB0gr5EP#)EEIZK^Z9Q,NyH
:N+"*;>Gb8]X$(pFpc/*Yl`
:@9=Woks3|71P:e&-$tyi/-E.Gjg(i=Ut|j@HO+$DPG?M5.b4&U`0carDza*I96<T!/DOt!BBu6i66oHs6iDQOg.<27$=MdsNld)8$*Z(wVc)]t^*KJ,$Dl7WRD*#g0e!C^
63;j_"I?d]5CEaxmPD=/#wv?q=%]4!-=H@;9J?5:WHA(RE`"@-OOWN&+x4M@]]1.w<GJg!X&J
*%lPfJD]J@u43$M^2ldLPM!^U7d5a>@Sjfmib-iv+6i!i;2*!g,+CI1t3li=hE&ml/i.0SU)$EZYAfKeRD:DS$_NLxL]$I@/c=H*rL28Cq_Fni=36Vk:`<!d[=>&5p.P?Y93Mz6*=6`P+EG2>x>g/R-$_75<&+%--Mj
a&ftm2m*/ccN%sj-&bn9ED+FSS.[_Bl:2*H^$I6W,C;^R#m%5WA{+_P@+liE,s(8cL=1+^iud`aT<j#b<;Q[xg(:ro0]D|"ext;pNnD7b?#a]36mz#pC?u#.!zC=(*U6H,8%hvY~tEyGu5qE,%CmJ]XV*z`
LZV^+=y#.J/Nk?YZc[nlZWhmK7i1h?p^ak/QA^9,Fjl{d,pcj8;]7-Y4kit9>>tODs:IIw/KAa/F$+qVwqZ1.q12@TW]>6i)@a^0$;NVPZ${Y[^1--DgHUcRwf,T,!qI[FI8!IM#1rfd2~rz`Xsz"q8VK^syPepX[}8rXwx$Eh!;7fPfe-Ts&TLT<;J0DP]i(?a$aC:}LN#]5
poK[ptNd6egugT0vOx&e0Lj^(hn=D%5J%ED7)ZN)MYY{p1B[t,)w*|W>FfyYe._x<>kr"77ZS00lP{jxQe20OfSq-7)V"ZwV]?Ncn$HoxJ0<#Om9a`in<eb"M]$reu8xI0s_JuYe.+vD,(:K3MMU]+(u8Yj;;0"|tz6r`Dt46BH&t]51>P<_
`!6tY`aU4J-eB]|&}sS0/
;Y[!+Ui!Dpv%pB(fFyHU"so^2YcIPH7pG^}4s84xL
uXjB$31%$B3E$eq*`kVP`;G1UZ@oDapl`==WeKEK:n`u+[)MfI`w*--K0)efO2;In6;/CRf5^4]bA)7+Xy[J`4e@>mep`
?J*>!F6Bx[1$wK?#dCBW3W,6B4O(J`yRmyEN$#To7=r
fg@YCpP)[o,eFvF.=FsnD3:YT^WlV=7so"];W6#>{9cvfH35`!1%PT2;%CM%M3<(%5{iIL6kdS~:OQ7hJMfZL#oEL1SaQ4nA?+0]6;7&/!EewjZ
#(~D4fIxgM//a=QI
fQO3i(vZ-}_a&4=)`HsCpf"TTYV(iJwI+}KU7v7KRa;-f30Ric04C#llcJt*=3kErs6`Zbo*CUro+3v`@=?E!v%7Rtg*m/o_ZXD%W}Py4sH_6^wAp;ggOOC=CFnGO(?wcwSQ)1%?Vlr.IHX)KH$HaM3/5M)3AFKZ
}Lt*G!t[CBFhc0et5!bG)&<D5?<IX;,inWnYW=a:pDt^h<7ww0u[Kx]K*u(n:YZbY1HBSat5[H?P,#lG%[3M6[@qyg6O-/2+FDa>NeB^Pst+
sA9isqF~Z`+-G"@*b7H.?o(f&_*BDIZLVjK=WXnWaKudG)OwNWWJtOM4*)Mn6%adBia`_3%gM[7ix9v3:[ehEHij2<
qvPYm^El/3>tz_.l9V[`l.r%w78nMGTOe9wqh/0n|+yEm##n)PIt[r~#0r$,Xk}YA+sBX]Vu)+"AT:lc4-n(Lrg!=,U4X@/m<#uKK1@HIg@s
_MD2&!DIFurU<2&YC:y17RU;3cFj_|AEBz3<bDr)h[O,1khS
Kl.LRsS/ya69x]$Jd#)Xs+nI5Fd?B`T1/"@Jr:cFM"VN6b0`9j`QV&s`)M@c=D!!=?u(R1ClQD[>m&6QTw(VM:8mFFa-FbXPkLGE6SlCOs$RICNr(+:)$*pIya$p&No
"3}Lj8qkIL$
Amj`)878.f1CZ9>@.0GK<S7*"fy9NE;K|xFsa:itoXFHSNUysWn;{v!P(:pI4!9@yYnuP^Ut_^SbA)m%Mk6]*2"(w0W<D%k!C)$HV-vqaN#(kk"Q25H0Zj0S<-+6@=P$m/Nrp?6!7#Ad,N,Yz&OpS@o.+BU`g,cQY2p.K
%,8m_Psc,TbAxmi_RYsJA5UF(]0RCE_"Tv%(e`lV%(HC6<=O[v/.&(XCZ/o$Dit*44l)_]cy]-Q_N1_4bt
@<iq#DbX0)E?04dOL>?{aq
M0H%
EH(l.H#40H>i`6gN+w(F3DkWHVQA&sE4H^]$2kUdld5MafF"X0gBB0Pdy*pEf`&S`:dv2-=<L^+V$3""[ch}jf9f5?<gji3m72[5&.hI]a5U+1)Mw][vfKn~+L>l?we0S1)=7H-6/e`|o7%OgJFb_R5Gs^kn#i#<L0`MMuFeIl*nn")
t~j=yZr%nbNp!"h5Mg2kSC"3hB_[R=r<v.NAAr3q*pMH7!HLy"*nNb;`46adRIs{b5%?whjt-s@>BN^%UI>bq!d3>-dhS{N(q`j_!!Q0c_+U/]-cOTnz15o`SVy[1KHyYeZu4`:FelVt"C`W:9-i%I#[PLp$P"rD!KrI(VI2+&*_T[Cz`/`O7T!Uj$v1uOx?M^@%YGr^Rte<eMH{]d65pkH6[[1%67JDsPKNj@q*^haw#,743).>0R!u^5k^"we<VFZU8QkDBwepe]1?I6qX]&SJx1UBKHt%L}Eg5}!LCc/+GK$l]8*x2[<<MWs:g$YSnKo7ov!=+-v-A!l=pd7lNnUx3$p029^D5,S49j<{xZ
MOEyi]?9QcAhyVfkL-y*g)iK|exuu8!"xhj;pajUMg{sYlwDH5tQpwX5uAj:uMbf#mJdGDa8Q55YLskkxH__Z#vQ?E1dIJ_sfGfQ6%yPJ,x8K,:b(k8Ft,w?[sP[!5)nZ?]BVR49SPh,t<Y`R?ST4)0S=jB3PKv.pos8d%0f.yA<<h0&@$Fds?)8Ho*O`-ZyCxcH#<FBy"Di8NVE9WUWH?O<N!HW<d~Wp5U@#vv+P-rk>sZm<ZG*wu%9hux"W!eM&vFIY-R-&+g(7$OE//l(wm7y6B}ulrUtS]$wk7q*;C/:aKhTHME25XRTA]S%d.rs3#O#[%MU%J`C4=Dt42<twZ+$X(+=+
;U>$bMD[NsnZ1$7csj&lb0(A&a{)^xCx"OSJ)8Em&I=OfA<W#69"1arc=CH?!*rbr]<>Y1a^&-!VJ
./V#ZpG1N@A1O3};YUp4^QD
8_feAEY`YGyuiga/VZ`?W(faT<qD)!>=1v@jY!P
#[(8W]W!xi{/=w+X]GEF%M/H(p[lLGMa&rCCZWS1/<f.(L8OBSIJ$F;rCNVep2?fZ*
&.uGR^8=BHJcH;sTB{S$o^QNsxK4>"p.c*Tl)Z[[DCQ}*S!!kXTe@A$OSs6r;JOc.,ZqF.G^bMhY)2Z:cjn3X^(<i&ofriQY,4=dq(*oR9CU)#kg?BR`f*Ac#{mj3BZsYt^cpuJ^&77<!#wIROf!bY`j#Ya4^@Y@O+k5^3K6bo&F]EMb#i*4$P,dw_RXVe)FsUG86
24bvk1.?!Yv2:jgnfQ`.ttgjcCO/=Yrj))w*C&0yN.wl_.x*6*DrU)D1S_ef("0t331msC23?^(7FOd_*d$
#Nl_%
E?[_fF0-)*p1Y@TG+P5<!#;C[fe1s.9#GY^XaUCM7TQ>Z.epWZlgZh"Iy7n%dVd}r{qn2n^X;Fe@uewu
curPN6:rR"e%>+]1bW*Ja#i7Bwu9^mxLQ
gX|AyKm:J^srxK=[hZNML/H_32J.rBy2`GU/nO"Mey/y/yw,o")7:w^,#TtDTM~Kl08n>7CVMd`bxs(;[gr&Je
P9#mdl3y>QlQ2SLd`i`:EG5j.abt(0&#"gd;l"cifDFe"5fTf2/_*Ee*n`*ex%W>TRI<*{atR<5mKun|;ep++@F.@`rMd^>6smgMOjdM&LF*#?qT`*1l@>hbQX)}?k[T=KaMuheLKe#b
@*{-?eUYu&}LB`X0V9rbXEdpFv4gP:$_S:-e]6,en[9=md+re/Lr>oNCUd;+">g9E%d5i7BkNu<r.C4b1rd2I!@pC5!+tK[4sVU%VJje[-eqCvi4RBUT,4E8=a^6TE/,QahP^CdK2+!D-mQC`:!"Zxv^$qs"0/~qB2r/rr#SWVedS5NdD.DR4;qew86YaROsz#Cw0sOS<lBTEXs"t-S>zgenmapL4EdBSyf*b_ANV-=DKI>*I1efpE<EcN.kZv[hTi_4se51>e
W|Tm8Qv]d4>pZY#ZW[(tV1_|3
?Z2RJbf(seJ1B#W-mBl3aOtoR&3/pT9mmj%KN8/wD^0NMZc=3II.!5IZ$us;q+_B/J^A8u_@XWKZy5;~i4jPX`ye@%R&l74<pe(p>(u/n6w(yX7}U>2Ndh?ofgHeFQ3*2RgB)Wdn-vU4F_Ra:zH]sSh`t(I/DY[.nPc#Y%!n2w8f7=.$)^pQ[EAtf(ePQ</|N{Fy3/:O1Vw0L
y{V22(fHgG*(@>FLa:H,Mv`nYmy}T6&)?*i,M|XKs_-VezF-vvt}edEK1yGrj<tPNlA/5BgOLV2`oyq131b<8$ZQ+D30Jc$FY".YFW/_FX2!nS$Q.by2nTo2v))NVM4XK_c_Q*l?QVU=y1JFy+e~+z_#d>XBBf[LC?cg/ouTnHg7)JX;u+j`NRlS7_
Xq89q"Se(ovsLP>>Bp*SW>aMO:)-$9yej5un!9$U0Fw<liG7,0<*]cJRgd@kkK@-|<1=&;|5[EKt&>:&
G-<n,
.lpE)F!9GTc5f|dZdZ=0+4$I678~6<,UtDU-&s7wR,5@/9-i5&ofl]K?@jxH(R5tAT)wejV`r6
;WQdwSgF;Xb/ILrIlBuP!g/-/p/5j-gD+-;,!HFppKOxl/8LZGzs~&`C^SaWG"c,QR$Mqm2U3Sd;8F*%4Jm(R]oF|dKnz6WbFw
vogd*Pv:9cV4S/4.@HprIL7g5&-mAVZ=Kcm)c62;H@Bjx:yF+_#KHwnx^::JPwxb)SIgm(mPn
T_qG&)x_TZn}D|dRCDWUfkIb"Dgtkustt
');}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
decompress_string('');}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo
base64_decode('iVBORw0KGgoAAAANSUhEUgAAADkAAAA5BAMAAAB+Np62AAAAMFBMVEUAAACDl60rTnZZdJNziaOerr60vszI0tr8jZH8c3X8SUr309T8Ly78Bgf8r7H6/PpDBKXXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbRJREFUOI3VlM1OwkAQx/sGG0Xh7GwTz7b1AaRwNhqIRy4kPRKjpcc+geEJDHc1chYPfYJ6N7I+gJFQE+UjJIyzS6FqqzeN/A/dtr/Mzsx/PzRtlYSI0fd0Ju5+wDMhHjCTMIqaXoS9QWYw3iLlvRHtLMrwKqDnNLyM4m+lReizCOjXWCgqWdPzvLgJNgnvUGNPV6IVyc7cim2SrHKDMMN+L6DhTKgBDVhqCyPWFW3KwfpqwEOAXUembeYAtn0W3ssErN+RdbxBOcBYowrU2Di8VrEdWcQrx0QjqGlx3m5LUThK4DFRNhGy5lkwp2CVHZ9Qs2ICUY1cGmiUfj7zOnBTyYAdo6a8otjzR0X1UT3uSc97kiqfFzPrMqM39woVZcoUTOhCin7QL1IoJLAOKcrniyCXwUhRboBplTYPSrYJPJ3XLS6Wd8fJqmrqVm2r6vxtvz9T3kigm3bDzPvxxqmn3QDg1l7VcasbtgEpqg+X2133ixlVuTky0Sw7/8eNF+4ncPi1oyFYy4Pk2tz/TPFELrt0w6aX/S93FMPT5OwXUvcbnQl3rWTT1nIy78akqjRbPb0DRTX3Uyvxl2MAAAAASUVORK5CYII=');}exit;}if(preg_match('~^/[-\w.]~',$_SERVER["HTTP_X_FORWARDED_PREFIX"]))$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));ini_set("session.use_trans_sid",'0');ini_set("arg_separator.output","&");if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,cookie_path(),"",HTTPS,true);session_start();}if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){$_GET=remove_slashes($_GET,$hc);$_POST=remove_slashes($_POST,$hc);$_COOKIE=remove_slashes($_COOKIE,$hc);}if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);if(function_exists('set_time_limit'))set_time_limit(0);ini_set("precision",'16');function
lang($t,$oe=null){$la=func_get_args();$la[0]=$t;return
call_user_func_array('Adminer\lang_format',$la);}function
lang_format($jg,$oe=null){if(is_array($jg)){$F=($oe==1?0:1);$jg=$jg[$F];}$jg=str_replace("'",'’',$jg);$la=func_get_args();array_shift($la);$sc=str_replace("%d","%s",$jg);if($sc!=$jg)$la[0]=format_number($oe);return
vsprintf($sc,$la);}define('Adminer\LANG','de');abstract
class
SqlDb{static$instance;static$untrusted=false;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($M,$U,$E);abstract
function
quote($P);abstract
function
select_db($kb);abstract
function
query($G,$pg=false);function
multi_query($G){return$this->multi=$this->query($G);}function
store_result(){return$this->multi;}function
next_result(){return
false;}function
inTransaction(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($Db,$U,$E,array$B=array()){$B[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$B[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($Db,$U,$E,$B);}catch(\Exception$Tb){return$Tb->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($P){return$this->pdo->quote($P);}function
query($G,$pg=false){$H=$this->pdo->query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unbekannter Fehler.';return
false;}$this->store_result($H);return$H;}function
store_result($H=null){if(!$H){$H=$this->multi;if(!$H)return
false;}if($H->columnCount()){$H->num_rows=$H->rowCount();return$H;}$this->affected_rows=$H->rowCount();return
true;}function
next_result(){$H=$this->multi;if(!is_object($H))return
false;$H->_offset=0;return@$H->nextRowset();}function
inTransaction(){return$this->pdo->inTransaction();}}class
PdoResult
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
function
fetch_array($ee){$I=$this->fetch($ee);return($I?array_map(array($this,'unresource'),$I):$I);}private
function
unresource($W){return(is_resource($W)?stream_get_contents($W):$W);}function
fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$S=$J->pdo_type;$J->type=($S==\PDO::PARAM_INT?0:15);$J->charsetnr=($S==\PDO::PARAM_LOB||(isset($J->flags)&&in_array("blob",(array)$J->flags))?63:0);return$J;}function
seek($pe){for($r=0;$r<$pe;$r++)$this->fetch();}}}function
add_driver($s,$A){SqlDriver::$drivers[$s]=$A;}function
get_driver($s){return
SqlDriver::$drivers[$s];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$delimiter=";";var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();var$primary="";static
function
connect($M,$U,$E){$f=new
Db;return($f->attach($M,$U,$E)?:$f);}function
__construct(Db$f){$this->conn=$f;}function
types(){return
call_user_func_array('array_merge',array_values($this->types));}function
structuredTypes(){return
array_map('array_keys',$this->types);}function
enumLength(array$k){}function
unconvertFunction(array$k){}function
select($Q,array$L,array$Z,array$q,array$C=array(),$x=1,$D=0,$Ve=false){$kd=(count($q)<count($L));$G=adminer()->selectQueryBuild($L,$Z,$q,$C,$x,$D);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$x&&$q&&$kd&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($q&&$kd?"\nGROUP BY ".implode(", ",$q):"").($C?"\nORDER BY ".implode(", ",$C):""),$x,($D?$x*$D:0),"\n");$Kf=microtime(true);$I=$this->conn->query($G,(!$x&&!$Ve?1:0));if($Ve)echo
adminer()->selectQuery($G,$Kf,!$I);return$I;}function
delete($Q,$af,$x=0){$G="FROM ".table($Q);return
queries("DELETE".($x?limit1($Q,$G,$af):" $G$af"));}function
update($Q,array$N,$af,$x=0,$wf="\n"){$Fg=array();foreach($N
as$v=>$W)$Fg[]="$v = $W";$G=table($Q)." SET$wf".implode(",$wf",$Fg);return
queries("UPDATE".($x?limit1($Q,$G,$af,$wf):" $G$af"));}function
insert($Q,array$N){return
queries("INSERT INTO ".table($Q).($N?" (".implode(", ",array_keys($N)).")\nVALUES (".implode(", ",$N).")":" DEFAULT VALUES").$this->insertReturning($Q));}function
insertReturning($Q){return"";}function
insertUpdate($Q,array$K,array$Ue){foreach($K
as$N){$Z=array();foreach($N
as$v=>$W){if(isset($Ue[idf_unescape($v)]))$Z[]="$v = $W";}if(!($Z&&$this->update($Q,$N," WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)&&!$this->insert($Q,$N))return
false;}return
true;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($G,$ag){}function
convertSearch($t,array$W,array$k){return$t;}function
value($W,array$k){return(method_exists($this->conn,'value')?$this->conn->value($W,$k):$W);}function
quoteBinary($of){return
q($of);}function
typeName(\stdClass$k){return(isset($k->native_type)?$k->native_type:"");}function
warnings(){}function
tableHelp($A,$nd=false){}function
inheritsFrom($Q){return
array();}function
inheritedTables($Q){return
array();}function
partitionsInfo($Q){return
array();}function
hasCStyleEscapes(){return
false;}function
lineComment(){return"--";}function
engines(){return
array();}function
supportsIndex(array$R){return!is_view($R);}function
supportsAlterIndex(array$R){return
true;}function
indexAlgorithms(array$Sf){return
array();}function
indexOpclasses(){return
array();}function
checkConstraints($Q){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t
	ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME".($this->conn->flavor=='maria'?" AND c.TABLE_NAME = ".q($Q):"")."
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($Q).(JUSH=="pgsql"?"
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'":""),$this->conn);}function
allFields(){$I=array();if(DB!=""){foreach(get_rows("SELECT c.TABLE_NAME AS tab, c.COLUMN_NAME AS field, c.IS_NULLABLE AS nullable,
	c.DATA_TYPE AS type, c.CHARACTER_MAXIMUM_LENGTH AS length,
	".(JUSH=='sql'?"c.COLUMN_KEY = 'PRI'":"k.COLUMN_NAME")." AS ".idf_escape("primary")."
FROM INFORMATION_SCHEMA.COLUMNS c".(JUSH=='sql'?"":"
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
	ON t.CONSTRAINT_SCHEMA = k.CONSTRAINT_SCHEMA AND t.CONSTRAINT_NAME = k.CONSTRAINT_NAME AND c.TABLE_SCHEMA = k.TABLE_SCHEMA AND c.TABLE_NAME = k.TABLE_NAME AND c.COLUMN_NAME = k.COLUMN_NAME")."
WHERE c.TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY c.TABLE_NAME, c.ORDINAL_POSITION",$this->conn)as$J){$J["null"]=($J["nullable"]=="YES");$I[$J["tab"]][]=$J;}}return$I;}}class
Adminer{static$instance;var$error='';private$values=array();function
name(){return"<a href='https://www.adminer.org/editor/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=6.0.0")."' width='24' height='24' alt='' id='logo'>".'Editor'."</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($bb=false){return
password_file($bb);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($M){return'';}function
database(){if(connection()){$lb=adminer()->databases(false);if(!$lb)return
get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)");foreach($lb
as$h){if(!information_schema($h))return$h;}return$lb[0];}return
null;}function
operators(){return
array("<=",">=");}function
schemas(){return
schemas();}function
databases($lc=true){return
get_databases($lc);}function
pluginsLinks(){}function
queryTimeout(){return
5;}function
afterConnect(){}function
headers(){}function
csp(array$eb){return$eb;}function
verifyVersion(){return
true;}function
head($ib=null){return
true;}function
bodyClass(){echo" editor";}function
css(){$I=array();foreach(array("","-dark")as$ee){$n="adminer$ee.css";if(file_exists($n)){$m=file_get_contents($n);$I["$n?v=".crc32($m)]=($ee?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$m)?'':'light'));}}return$I;}function
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('username','<tr><th>'.'Benutzer'.'<td>',input_hidden("auth[driver]","server").'<input name="auth[username]" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'),adminer()->loginFormField('password','<tr><th>'.'Passwort'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Passwort speichern')."\n";}function
loginFormField($A,$Lc,$X){return$Lc.$X."\n";}function
login($Gd,$E){return
true;}function
tableName(array$Sf){return
h(isset($Sf["Engine"])?($Sf["Comment"]!=""?$Sf["Comment"]:$Sf["Name"]):"");}function
fieldName(array$k,$C=0){return
h(preg_replace('~\s+\[.*\]$~','',($k["comment"]!=""?$k["comment"]:$k["field"])));}function
selectLinks(array$Sf,$N=""){$a=$Sf["Name"];if($N!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.url_escape($a).$N).'">'.'Neuer Datensatz'."</a>\n";}function
foreignKeys($Q){return
foreign_keys($Q);}function
backwardKeys($Q,$Rf){$I=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = ".q(adminer()->database())."
AND REFERENCED_TABLE_SCHEMA = ".q(adminer()->database())."
AND REFERENCED_TABLE_NAME = ".q($Q)."
ORDER BY ORDINAL_POSITION",null,"")as$J)$I[$J["TABLE_NAME"]]["keys"][$J["CONSTRAINT_NAME"]][$J["COLUMN_NAME"]]=$J["REFERENCED_COLUMN_NAME"];foreach($I
as$v=>$W){$A=adminer()->tableName(table_status1($v,true));if($A!=""){$qf=preg_quote($Rf);$wf="(:|\\s*-)?\\s+";$I[$v]["name"]=(preg_match("(^$qf$wf(.+)|^(.+?)$wf$qf\$)iu",$A,$z)?$z[2].$z[3]:$A);}else
unset($I[$v]);}return$I;}function
backwardKeysPrint(array$va,array$J){foreach($va
as$Q=>$ua){foreach($ua["keys"]as$Oa){$y=ME.'select='.url_escape($Q);$r=0;foreach($Oa
as$d=>$W)$y
.=where_link($r++,$d,$J[$W]);echo"<a href='".h($y)."'>".h($ua["name"])."</a>";$y=ME.'edit='.url_escape($Q);foreach($Oa
as$d=>$W)$y
.="&set[".url_escape(bracket_escape($d))."]=".url_escape($J[$W]);echo"<a href='".h($y)."' title='".'Neuer Datensatz'."'>+</a> ";}}}function
selectQuery($G,$Kf,$ac=false){return"<!--\n".str_replace("--","--><!-- ",$G)."\n(".format_time($Kf).")\n-->\n";}function
rowDescription($Q){foreach(fields($Q)as$k){if(preg_match("~varchar|character varying~",$k["type"]))return
idf_escape($k["field"]);}return"";}function
rowDescriptions(array$K,array$pc){$I=$K;foreach($K[0]as$v=>$W){if(list($Q,$s,$A)=$this->_foreignColumn($pc,$v)){$Uc=array();foreach($K
as$J){if(isset($J[$v]))$Uc[$J[$v]]=q($J[$v]);}if(!$Uc)continue;$rb=$this->values[$Q];if(!$rb)$rb=get_key_vals("SELECT $s, $A FROM ".table($Q)." WHERE $s IN (".implode(", ",$Uc).")");foreach($K
as$_=>$J){if(isset($J[$v]))$I[$_][$v]=(string)$rb[$J[$v]];}}}return$I;}function
selectLink($W,array$k){}function
selectVal($W,$y,array$k,$ze){$I="$W";$y=h($y);if(is_blob($k)&&!is_utf8($W)){$I=lang_format(array('%d Byte','%d Bytes'),strlen($ze));$Cf=(function_exists('getimagesizefromstring')?@getimagesizefromstring($ze):array());if($Cf)$I="<img src='$y' alt='$I' $Cf[3] loading='lazy'>";}if(like_bool($k)&&$I!="")$I=(preg_match('~^(1|t|true|y|yes|on)$~i',$W)?'ja':'nein');if($y)$I="<a href='$y'".(is_url($y)?target_blank():"").">$I</a>";if(preg_match('~date~',$k["type"]))$I="<div class='datetime'>$I</div>";return$I;}function
editVal($W,array$k){if(preg_match('~date|timestamp~',$k["type"])&&$W!==null)return
preg_replace('~^(\d{2}(\d+))-(0?(\d+))-(0?(\d+))~','$6.$4.$1',$W);return$W;}function
config(){return
array();}function
selectColumnsPrint(array$L,array$e){}private
function
searchColumns(array$l){$I=array();$r=0;foreach($l
as$A=>$k){if(isset($k["privileges"]["where"])&&$this->fieldName($k)!=""&&($k["type"]=="enum"||like_bool($k)||is_array($this->foreignKeyOptions($_GET["select"],$A))))$I[--$r]=$A;}return$I;}function
selectSearchPrint(array$Z,array$e,array$u){$Z=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Suchen'."</legend><div>\n";$l=fields($_GET["select"]);foreach($this->searchColumns($l)as$r=>$A){$k=$l[$A];$W=idx($Z[$r],"val");echo"<div>".h($e[$A]);if($k["type"]=="enum"||like_bool($k))echo": ",(like_bool($k)?"<select name='where[$r][val]' data-default=''>".optionlist(array(""=>"",'nein','ja'),$W,true)."</select>":enum_input("checkbox"," name='where[$r][val][]'",$k,(array)$W,'leer'));else{$B=$this->foreignKeyOptions($_GET["select"],$A);if($k["null"])$B[0]='('.'leer'.')';echo": <select name='where[$r][val]' data-default=''>".optionlist($B,$W,true)."</select>";}echo"</div>\n";unset($e[$A]);}$r=0;foreach($Z
as$v=>$W){if($v>=0&&($W["col"]==""||$e[$W["col"]])&&"$W[col]$W[val]"!=""){echo"<div><select name='where[$r][col]' data-default=''><option value=''>(".'beliebig'.")".optionlist($e,$W["col"],true)."</select>",html_select("where[$r][op]",array(-1=>"")+adminer()->operators(),$W["op"]," data-default=''"),"<input type='search' name='where[$r][val]' value='".h($W["val"])."' data-default=''".on('keydown','selectSearchKeydown').on('search','selectSearchSearch')."></div>\n";$r++;}}echo"<div><select name='where[$r][col]' data-default=''".on('change','selectAddRow')."><option value=''>(".'beliebig'.")".optionlist($e,null,true)."</select>",html_select("where[$r][op]",array(-1=>"")+adminer()->operators(),null," data-default=''"),"<input type='search' name='where[$r][val]' data-default=''".on('change','selectFirstChange').on('keydown','selectSearchKeydown').on('search','selectSearchSearch')."></div>\n","</div></fieldset>\n";}function
selectOrderPrint(array$C,array$e,array$u){$ye=array();foreach($u
as$v=>$Yc){$C=array();foreach($Yc["columns"]as$W)$C[]=$e[$W];if(count(array_filter($C,'strlen'))>1&&$v!="PRIMARY")$ye[$v]=implode(", ",$C);}if($ye)echo'<fieldset><legend>'.'Ordnen'."</legend><div>","<select name='index_order' data-default=''>".optionlist(array(""=>"")+$ye,(idx($_GET["order"],0)!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";if($_GET["order"])echo"<div hidden>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function
selectLimitPrint($x){echo"<fieldset><legend>".'Begrenzung'."</legend><div>",html_select("limit",array("","50","100"),(string)$x," data-default='50'"),"</div></fieldset>\n";}function
selectLengthPrint($Xf){}function
selectActionPrint(array$u){echo"<fieldset><legend>".'Aktion'."</legend><div>","<input type='submit' value='".'Daten zeigen von'."'>","</div></fieldset>\n";}function
selectCommandPrint(){return
true;}function
selectImportPrint(){return
true;}function
selectEmailPrint(array$Ib,array$e){}function
selectColumnsProcess(array$e,array$u){return
array(array(),array());}function
selectSearchProcess(array$l,array$u){$I=array();$rf=$this->searchColumns($l);if($_GET["select"]!=""&&!$_POST&&!is_ajax()){$rd=array();$y="";foreach((array)$_GET["where"]as$v=>$Z){$Pe=($v>=0?array_search($Z["col"],$rf,true):false);$k=idx($l,$Z["col"],array());if($Pe!==false&&$k["type"]!="enum"&&!is_array($Z["val"])&&$Z["val"]!=""&&$Z["op"]==(like_bool($k)?"":"=")){$rd[]=$v;$y
.="&where[$Pe][val]=".url_escape($Z["val"]);}}if($rd)redirect(remove_from_uri("where(%5B|\[)(".implode("|",$rd).")(%5D|\])[^=]*").$y);}foreach((array)$_GET["where"]as$v=>$Z){if($v<0){$Z["col"]=idx($rf,$v,"");$k=idx($l,$Z["col"],array());$Z["op"]=($k&&($k["type"]=="enum"||like_bool($k))?"":"=");$_GET["where"][$v]=$Z;}$La=$Z["col"];$se=$Z["op"];$W=$Z["val"];if(($v>=0&&$La!="")||$W!=""){$Ra=array();foreach(($La!=""?array($La=>$l[$La]):$l)as$A=>$k){if($La!=""||is_numeric($W)||!preg_match(number_type(),$k["type"])){$A=idf_escape($A);if($La!=""&&$k["type"]=="enum"){$Wc=array();foreach(preg_grep('~^val-~',$W)as$Dg)$Wc[]=q(substr($Dg,4));$Ra[]=(in_array("null",$W)?"$A IS NULL OR ":"").($Wc?"$A IN (".implode(", ",$Wc).")":"0");}else{$Yf=preg_match('~char|text|enum|set~',$k["type"]);$X=adminer()->processInput($k,(!$se&&$Yf&&preg_match('~^[^%]+$~',$W)?"%$W%":$W));$Ra[]=driver()->convertSearch($A,$Z,$k).($X=="NULL"?" IS".($se==">="?" NOT":"")." $X":(in_array($se,adminer()->operators())||$se=="="?" $se $X":($Yf?" LIKE $X":" IN (".($X[0]=="'"?str_replace(",","', '",$X):$X).")")));if($v<0&&$W=="0")$Ra[]="$A IS NULL";}}}$I[]=($Ra?"(".implode(" OR ",$Ra).")":"1 = 0");}}return$I;}function
selectOrderProcess(array$l,array$u){$Zc=$_GET["index_order"];if($Zc!="")unset($_GET["order"][1]);if($_GET["order"])return
array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($Zc!=""?array($u[$Zc]):$u)as$Yc){if($Zc!=""||$Yc["type"]=="INDEX"){$Fc=array_filter($Yc["descs"]);$qb=false;foreach($Yc["columns"]as$W){if(preg_match('~date|timestamp~',$l[$W]["type"])){$qb=true;break;}}$I=array();foreach($Yc["columns"]as$v=>$W)$I[]=idf_escape($W).(($Fc?$Yc["descs"][$v]:$qb)?" DESC":"");return$I;}}return
array();}function
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
selectLengthProcess(){return"100";}function
selectEmailProcess(array$Z,array$pc){return
false;}function
selectQueryBuild(array$L,array$Z,array$q,array$C,$x,$D){return"";}function
messageQuery($G,$Zf,$ac=false){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$G)."\n".($Zf?"($Zf)\n":"")."-->";}function
editRowPrint($Q,array$l,$J,$T){}function
editFunctions(array$k){$I=array();if($k["null"]&&preg_match('~blob~',$k["type"]))$I["NULL"]='leer';$I[""]=($k["null"]||$k["auto_increment"]||like_bool($k)?"":"*");if(preg_match('~date|time~',$k["type"]))$I["now"]='jetzt';if(preg_match('~_(md5|sha1)$~i',$k["field"],$z))$I[]=strtolower($z[1]);return$I;}function
editInput($Q,array$k,$b,$X){if($k["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$b value='orig' checked><i>".'Original'."</i></label> ":"").enum_input("radio",$b,$k,$X,'leer');$B=$this->foreignKeyOptions($Q,$k["field"],$X);if($B!==null){if(!$k["null"]&&is_array($B))unset($B[""]);return(is_array($B)?"<select$b>".optionlist($B,(string)$X,true)."</select>":"<input value='".h($X)."'$b class='hidden'>"."<input value='".h($B)."' class='jsonly'".on('input','whisper',ME."script=complete&source=".url_escape($Q)."&field=".url_escape($k["field"])."&value=").">"."<div".on('click','whisperClick')."></div>");}if(like_bool($k))return'<input type="checkbox" value="1"'.(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?' checked':'')."$b>";$Nc="";if(preg_match('~time~',$k["type"]))$Nc='HH:MM:SS';if(preg_match('~date|timestamp~',$k["type"]))$Nc='t.m.[jjjj]'.($Nc?" [$Nc]":"");if($Nc)return"<input value='".h($X)."'$b> ($Nc)";if(preg_match('~_(md5|sha1)$~i',$k["field"]))return"<input type='password' value='".h($X)."'$b>";return'';}function
editHint($Q,array$k,$X){return(preg_match('~\s+(\[.*\])$~',($k["comment"]!=""?$k["comment"]:$k["field"]),$z)?h(" $z[1]"):'');}function
processInput(array$k,$X,$p=""){if($p=="now")return"$p()";$I=$X;if(preg_match('~date|timestamp~',$k["type"])&&preg_match('(^'.str_replace('\$1','(?P<p1>\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\2>\d{1,2})',preg_quote('$6.$4.$1'))).'(.*))',$X,$z))$I=($z["p1"]!=""?$z["p1"]:($z["p2"]!=""?($z["p2"]<70?20:19).$z["p2"]:gmdate("Y")))."-$z[p3]$z[p4]-$z[p5]$z[p6]".end($z);$I=q($I);if($X==""&&like_bool($k))$I="'0'";elseif($X==""&&($k["null"]||!preg_match('~char|text~',$k["type"])))$I="NULL";elseif(preg_match('~^(md5|sha1)$~',$p))$I="$p($I)";return
unconvert_field($k,$I);}function
dumpOutput(){return
array();}function
dumpFormat(){return
array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($h){}function
dumpTable($Q,$Nf,$nd=0){echo"\xef\xbb\xbf";}function
dumpData($Q,$Nf,$G){$H=connection()->query($G,1);if($H){while($J=$H->fetch_assoc()){if($Nf=="table"){dump_csv(array_keys($J));$Nf="INSERT";}dump_csv($J);}}}function
dumpFilename($Tc){return
friendly_url($Tc);}function
dumpHeaders($Tc,$ge=false){$Wb="csv";header("Content-Type: text/csv; charset=utf-8");return$Wb;}function
dumpFooter(){}function
importServerPath(){return'';}function
homepage(){return
true;}function
navigation($de){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$ke=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/editor/#download'".target_blank()." id='version'>".(version_compare(VERSION,$ke)<0?h($ke):"").version_iframe()."</a>","</span></h1>\n";if($de=="auth"){$jc=true;foreach((array)$_SESSION["pwds"]as$Y=>$yf){foreach($yf[""]as$U=>$E){if($E!==null){if($jc){echo"<ul id='logins'".on('mouseover','menuOver').on('mouseout','menuOut').">";$jc=false;}echo"<li><a href='".h(auth_url($Y,"",$U))."'>".($U!=""?h($U):"<i>".'leer'."</i>")."</a>\n";}}}}else{adminer()->databasesPrint($de);$ba=adminer()->menuActions(array(),$de);echo($ba?"<p class='links'>\n".implode("\n",$ba)."\n":"");if($de!="db"&&$de!="ns"){$R=table_status('',true);if(!$R)echo"<p class='message'>".'Keine Tabellen.'."\n";else
adminer()->tablesPrint($R);}}}function
syntaxHighlighting(array$Uf){}function
databasesPrint($de){}function
menuActions(array$ba,$de){return$ba;}function
tablesPrint(array$Uf){echo"<ul id='tables'".on('mouseover','menuOver').on('mouseout','menuOut').">";foreach($Uf
as$J){echo'<li>';$A=adminer()->tableName($J);if($A!="")echo"<a href='".h(ME).'select='.url_escape($J["Name"])."'".bold($_GET["select"]==$J["Name"]||$_GET["edit"]==$J["Name"],"select")." title='".'Daten auswählen'."'>$A</a>\n";}echo"</ul>\n";}function
_foreignColumn(array$pc,$d){foreach((array)$pc[$d]as$oc){if(count($oc["source"])==1){$A=adminer()->rowDescription($oc["table"]);if($A!=""){$s=idf_escape($oc["target"][0]);return
array($oc["table"],$s,$A);}}}}private
function
foreignKeyOptions($Q,$d,$X=null){if(list($Vf,$s,$A)=$this->_foreignColumn(column_foreign_keys($Q),$d)){$I=&$this->values[$Vf];if($I===null){$R=table_status1($Vf);$I=($R["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $s, $A FROM ".table($Vf)." ORDER BY 2"));}if(!$I&&$X!==null)return
get_val("SELECT $A FROM ".table($Vf)." WHERE $s = ".q($X));return$I;}}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$drivers=array();var$driverFiles=array();var$error='';private$hooks=array();function
__construct($Ne){$Cb=SqlDriver::$drivers;$Mc=" href='https://www.adminer.org/plugins/#use'".target_blank();if($Ne===null){$Ne=array();$ya="adminer-plugins";if(is_dir($ya)){foreach(glob("$ya/*.php")as$n){$ec=SqlDriver::$drivers;$this->includeOnce($n);foreach(array_diff_key(SqlDriver::$drivers,$ec)as$s=>$A)$this->driverFiles[$s]=$n;}}if(file_exists("$ya.php")){$Xc=$this->includeOnce("$ya.php");if(is_array($Xc)){foreach($Xc
as$v=>$Me)$Ne[is_object($Me)?get_class($Me):$v]=$Me;}else$this->error
.=sprintf('%s muss <a%s>ein Array zurückgeben</a>.',"<b>$ya.php</b>",$Mc)."<br>";}foreach(get_declared_classes()as$Ja){if(!$Ne[$Ja]&&(preg_match('~^Adminer\w~i',$Ja)||is_subclass_of($Ja,'Adminer\Plugin'))){$ff=new
\ReflectionClass($Ja);$Ta=$ff->getConstructor();if($Ta&&$Ta->getNumberOfRequiredParameters())$this->error
.=sprintf('<a%s>Konfigurieren</a> Sie %s in %s.',$Mc,"<b>$Ja</b>","<b>$ya.php</b>")."<br>";else$Ne[$Ja]=new$Ja;}}}$gd=array_filter($Ne,function($Me){return!is_object($Me);});if($gd){$this->error
.=sprintf('Jedes Plugin muss <a%s>ein Objekt sein</a>.',$Mc)."<br>";$Ne=array_diff_key($Ne,$gd);}$this->drivers=array_diff_key(SqlDriver::$drivers,$Cb);$this->plugins=$Ne;$ca=new
Adminer;$Ne[]=$ca;$ff=new
\ReflectionObject($ca);foreach($ff->getMethods()as$ce){foreach($Ne
as$Me){$A=$ce->getName();if(method_exists($Me,$A))$this->hooks[$A][]=$Me;}}}function
includeOnce($n){return
include_once"./$n";}static
function
checksum($n){$m=str_replace("\r","",file_get_contents($n));$m=preg_replace('~\n\tprotected \$translations = array\(.*?\n\t\);~s','',$m);return
dechex(crc32($m));}function
checksums(){$fc=array_values($this->driverFiles);foreach($this->plugins
as$Me){$ff=new
\ReflectionObject($Me);$fc[]=$ff->getFileName();}$I=array();foreach($fc
as$n)$I[basename($n,'.php')]=self::checksum($n);return$I;}static
function
officialChecksums(){return
array('adminer.js'=>'a0599090','backward-keys'=>'afce3b7d','before-unload'=>'48618ca0','config'=>'f49cc617','dark-switcher'=>'3d490dea','database-hide'=>'90c6c0dc','designs'=>'56f1c186','dump-alter'=>'d078b2db','dump-bz2'=>'f0d0e336','dump-date'=>'adc7f1c7','dump-json'=>'767dd321','dump-xml'=>'9f039895','dump-zip'=>'93817d96','edit-foreign'=>'8c874a58','edit-textarea'=>'a24c3cc','editor-setup'=>'a7dc3a37','editor-views'=>'5c12b185','enum-option'=>'a2563959','file-upload'=>'235eaa7a','foreign-system'=>'ebb4c654','frames'=>'b0e1d11a','highlight-codemirror'=>'f1a34275','highlight-monaco'=>'6a92cc58','highlight-prism'=>'4c12cf3','import-csv'=>'1d174088','login-ip'=>'b4766b62','login-otp'=>'62c517c0','login-passkey'=>'f69f2f06','login-password-less'=>'97c37010','login-reverse-proxy'=>'7bb63f11','login-servers'=>'f9ac2f28','login-ssl'=>'6ed147bc','login-table'=>'7b15c3cd','menu-links'=>'f1f86a60','remote-color'=>'33a766c2','row-numbers'=>'eec8698c','select-email'=>'ead22272','select-image'=>'f55c0231','slugify'=>'4d5adde6','sql-gemini'=>'fabc3537','sql-log'=>'b4355039','table-indexes-structure'=>'a90cc0c9','table-structure'=>'a8458e02','tables-filter'=>'f8f51976','timeout'=>'90597366','version-github'=>'497af47b','version-noverify'=>'966937e9','clickhouse'=>'5bb80dfb','elastic'=>'f7017c4','firebird'=>'5499d1a','igdb'=>'170d083','imap'=>'ac143217','mongo'=>'c3b8f5a4','redis'=>'12f1a73b','simpledb'=>'79488f8b',);}function
__call($A,array$Ee){$la=array();foreach($Ee
as$v=>$W)$la[]=&$Ee[$v];$I=null;foreach($this->hooks[$A]as$Me){$X=call_user_func_array(array($Me,$A),$la);if($X!==null){if(!self::$append[$A])return$X;$I=$X+(array)$I;}}return$I;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($t,$oe=null){$la=func_get_args();$la[0]=idx($this->translations[LANG],$t)?:$t;return
call_user_func_array('Adminer\lang_format',$la);}}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($M,$U,$E){mysqli_report(MYSQLI_REPORT_OFF);list($Pc,$Oe)=host_port($M);$O=adminer()->connectSsl();$Ag=($O&&($O['key']||$O['cert']||$O['ca']||isset($O['verify'])));if($Ag)$this->ssl_set($O['key'],$O['cert'],$O['ca'],'','');$I=@$this->real_connect(($M!=""?$Pc:ini_get("mysqli.default_host")),($M.$U!=""?$U:ini_get("mysqli.default_user")),($M.$U.$E!=""?$E:ini_get("mysqli.default_pw")),null,(is_numeric($Oe)?intval($Oe):ini_get("mysqli.default_port")),(is_numeric($Oe)?null:$Oe),($Ag?($O['verify']!==false?MYSQLI_CLIENT_SSL:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($I?'':$this->error);}function
set_charset($Ea){if(parent::set_charset($Ea))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ea");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($P){return"'".$this->escape_string($P)."'";}function
inTransaction(){return
false;}}}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($M,$U,$E){if(ini_bool("mysql.allow_local_infile"))return
sprintf('Deaktivieren Sie %s oder aktivieren Sie die Erweiterungen %s oder %s.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($M!=""?$M:ini_get("mysql.default_host")),($M.$U!=""?$U:ini_get("mysql.default_user")),($M.$U.$E!=""?$E: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($Ea){return
mysql_set_charset($Ea,$this->link)||mysql_set_charset('utf8',$this->link);}function
quote($P){return"'".mysql_real_escape_string($P,$this->link)."'";}function
select_db($kb){return
mysql_select_db($kb,$this->link);}function
query($G,$pg=false){$H=@($pg?mysql_unbuffered_query($G,$this->link):mysql_query($G,$this->link));$this->error="";if(!$H){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($H===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($H);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($H){$this->result=$H;$this->num_rows=mysql_num_rows($H);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$I=mysql_fetch_field($this->result,$this->offset++);$I->orgtable=$I->table;$I->charsetnr=($I->blob?63:0);return$I;}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($M,$U,$E){$B=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);if(isset($_GET["select"]))$B[\PDO::MYSQL_ATTR_MULTI_STATEMENTS]=false;$O=adminer()->connectSsl();if($O){if($O['key'])$B[\PDO::MYSQL_ATTR_SSL_KEY]=$O['key'];if($O['cert'])$B[\PDO::MYSQL_ATTR_SSL_CERT]=$O['cert'];if($O['ca'])$B[\PDO::MYSQL_ATTR_SSL_CA]=$O['ca'];if(isset($O['verify']))$B[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$O['verify'];}list($Pc,$Oe)=host_port($M);return$this->dsn("mysql:charset=utf8".($Pc!=""?";host=$Pc":'').($Oe?(is_numeric($Oe)?";port=":";unix_socket=").$Oe:""),$U,$E,$B);}function
set_charset($Ea){return$this->query("SET NAMES $Ea");}function
select_db($kb){return$this->query("USE ".idf_escape($kb));}function
query($G,$pg=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$pg);return
parent::query($G,$pg);}}}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");var$partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");static
function
connect($M,$U,$E){$f=parent::connect($M,$U,$E);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($of=iconv("windows-1252","utf-8//IGNORE",$f))>strlen($f))$f=$of;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('Zahlen'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Datum und Zeit'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Zeichenketten'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Listen'=>array("enum"=>65535,"set"=>64),'Binär'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometrie'=>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['Zeichenketten']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Zeichenketten']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$f)){$this->types['Netzwerk']["inet6"]=39;if(min_version('','10.10',$f))$this->types['Netzwerk']["inet4"]=15;}if(min_version(9,11.7,$f))$this->types['Zahlen']["vector"]=16383;if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$k){return(preg_match("~binary~",$k["type"])?"<code class='jush-sql'>UNHEX</code>":($k["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):($k["type"]=="vector"?"<code class='jush-sql'>".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."</code>":(preg_match("~geometry|point|linestring|polygon~",$k["type"])?"<code class='jush-sql'>GeomFromText</code>":""))));}function
insert($Q,array$N){return($N?parent::insert($Q,$N):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
insertUpdate($Q,array$K,array$Ue){$e=array_keys(reset($K));$Te="INSERT INTO ".table($Q)." (".implode(", ",$e).") VALUES\n";$Fg=array();foreach($e
as$v)$Fg[$v]="$v = VALUES($v)";$Of="\nON DUPLICATE KEY UPDATE ".implode(", ",$Fg);$Fg=array();$w=0;foreach($K
as$N){$X="(".implode(", ",$N).")";if($Fg&&(strlen($Te)+$w+strlen($X)+strlen($Of)>1e6)){if(!queries($Te.implode(",\n",$Fg).$Of))return
false;$Fg=array();$w=0;}$Fg[]=$X;$w+=strlen($X)+2;}return
queries($Te.implode(",\n",$Fg).$Of);}function
slowQuery($G,$ag){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$ag FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$z))return"$z[1] /*+ MAX_EXECUTION_TIME(".($ag*1000).") */ $z[2]";}}function
convertSearch($t,array$W,array$k){return(preg_match('~char|text|enum|set~',$k["type"])&&!preg_match("~^utf8~",$k["collation"])&&preg_match('~[\x80-\xFF]~',$W['val'])?"CONVERT($t USING ".charset($this->conn).")":$t);}function
typeName(\stdClass$k){$og=array("decimal","tinyint","smallint","int","float","double",7=>"timestamp","bigint","mediumint","date","time","datetime","year",15=>"varchar","bit",242=>"vector",245=>"json","decimal","enum","set","tinytext","mediumtext","longtext","text","varchar","char","geometry",);$I=idx($og,$k->type,"");return
parent::typeName($k)?:($k->charsetnr==63?str_replace(array("text","varchar","char"),array("blob","varbinary","binary"),$I):$I);}function
quoteBinary($of){return"X".q(bin2hex($of));}function
warnings(){$H=$this->conn->query("SHOW WARNINGS");if($H&&$H->num_rows){ob_start();print_select_result($H);return
ob_get_clean();}}function
tableHelp($A,$nd=false){$Id=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower(str_replace("_","-",DB)."-".($Id?"$A-table/":str_replace("_","-",$A)."-table.html"));if(DB=="sys")return($Id?"sys-schema/":strtolower("sys-".str_replace("_","-",preg_replace('~^x\$~','',$A)).".html"));if(DB=="mysql")return($Id?"mysql$A-table/":"system-schema.html");}function
partitionsInfo($Q){$uc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($Q);$H=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $uc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=($H?$H->fetch_row():null);if(!$J)return
array();$I=array();list($I["partition_by"],$I["partition"],$I["partitions"])=$J;$He=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $uc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($He);$I["partition_values"]=array_values($He);return$I;}function
hasCStyleEscapes(){static$Ba;if($Ba===null){$Jf=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Ba=(strpos($Jf,'NO_BACKSLASH_ESCAPES')===false);}return$Ba;}function
lineComment(){return"#|-- ";}function
engines(){$I=array();foreach(get_rows("SHOW ENGINES")as$J){if(preg_match("~YES|DEFAULT~",$J["Support"]))$I[]=$J["Engine"];}return$I;}function
indexAlgorithms(array$Sf){return(preg_match('~^(MEMORY|NDB)$~',$Sf["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($t){return"`".str_replace("`","``",$t)."`";}function
table($t){return
idf_escape($t);}function
get_databases($lc){$I=get_session("dbs");if($I===null){$G="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$Kf=microtime(true);$I=($lc?slow_query($G):get_vals($G));if(microtime(true)-$Kf>0.1){restart_session();set_session("dbs",$I);stop_session();}}return$I;}function
limit($G,$Z,$x,$pe=0,$wf=" "){return" $G$Z".($x?$wf."LIMIT $x".($pe?" OFFSET $pe":""):"");}function
limit1($Q,$G,$Z,$wf="\n"){return
limit($G,$Z,1,0,$wf);}function
db_collation($h,array$Na){$I=null;$bb=get_val("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$bb,$z))$I=$z[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$bb,$z))$I=$Na[$z[1]][-1];return$I;}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$lb){$I=array();foreach($lb
as$h)$I[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$I;}function
table_status($A="",$bc=false){$I=array();foreach(get_rows($bc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($A!=""?"AND TABLE_NAME = ".q($A):"ORDER BY Name"):"SHOW TABLE STATUS".($A!=""?" LIKE ".q(addcslashes($A,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($A!="")$J["Name"]=$A;$I[$J["Name"]]=$J;}return$I;}function
is_view(array$R){return$R["Engine"]===null;}function
fk_support(array$R){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$R["Engine"]);}function
parse_type($vc){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$vc,$z);return
array($z[1],$z[2],ltrim($z[3].$z[4]));}function
fields($Q){$Id=(connection()->flavor=='maria');$I=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($Q)." ORDER BY ORDINAL_POSITION")as$J){$k=$J["COLUMN_NAME"];$S=$J["COLUMN_TYPE"];$zc=$J["GENERATION_EXPRESSION"];$Zb=$J["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Zb,$yc);list($ng,$w,$vg)=parse_type($S);$i=$J["COLUMN_DEFAULT"];if($i!=""){$md=preg_match('~text|json~',$ng);if(!$Id&&$md)$i=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($i));if($Id||$md){$i=($i=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($z){return
stripslashes(str_replace("''","'",$z[1]));},$i));}if(!$Id&&preg_match('~binary~',$ng)&&preg_match('~^0x(\w*)$~',$i,$z))$i=pack("H*",$z[1]);}$I[$k]=array("field"=>$k,"full_type"=>$S,"type"=>$ng,"length"=>$w,"unsigned"=>$vg,"default"=>($yc?($Id?$zc:stripslashes($zc)):$i),"null"=>($J["IS_NULLABLE"]=="YES"),"auto_increment"=>($Zb=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Zb,$z)?$z[1]:""),"collation"=>$J["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$J[PRIVILEGES],where,order")),"comment"=>$J["COLUMN_COMMENT"],"primary"=>($J["COLUMN_KEY"]=="PRI"),"generated"=>($yc[1]=="PERSISTENT"?"STORED":$yc[1]),);}return$I;}function
indexes($Q,$g=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$g)as$J){$A=$J["Key_name"];$I[$A]["type"]=($A=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$J["Index_type"])?$J["Index_type"]:"INDEX"):"UNIQUE")));$I[$A]["columns"][]=$J["Column_name"];$I[$A]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$A]["descs"][]=null;$I[$A]["algorithm"]=$J["Index_type"];}return$I;}function
foreign_keys($Q){static$Je='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$cb=get_val("SHOW CREATE TABLE ".table($Q),1);if($cb){preg_match_all("~CONSTRAINT ($Je) FOREIGN KEY ?\\(((?:$Je,? ?)+)\\) REFERENCES ($Je)(?:\\.($Je))? \\(((?:$Je,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$cb,$Kd,PREG_SET_ORDER);foreach($Kd
as$z){preg_match_all("~$Je~",$z[2],$Hf);preg_match_all("~$Je~",$z[5],$Vf);$I[idf_unescape($z[1])]=array("db"=>idf_unescape($z[4]!=""?$z[3]:$z[4]),"table"=>idf_unescape($z[4]!=""?$z[4]:$z[3]),"source"=>array_map('Adminer\idf_unescape',$Hf[0]),"target"=>array_map('Adminer\idf_unescape',$Vf[0]),"on_delete"=>($z[6]?:"RESTRICT"),"on_update"=>($z[7]?:"RESTRICT"),);}}return$I;}function
view($A){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($A),1)));}function
collations(){$I=array();foreach(get_rows("SHOW COLLATION")as$J){if($J["Default"])$I[$J["Charset"]][-1]=$J["Collation"];else$I[$J["Charset"]][]=$J["Collation"];}ksort($I);foreach($I
as$v=>$W)sort($I[$v]);return$I;}function
information_schema($h,$pf=""){return($h=="information_schema")||(min_version(5.5)&&$h=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($h,$Ma){return
queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function
drop_databases(array$lb){$I=apply_queries("DROP DATABASE",$lb,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$I;}function
rename_database($A,$Ma){$I=false;if(create_database($A,$Ma)){$Uf=array();$Ig=array();foreach(tables_list()as$Q=>$S){if($S=='VIEW')$Ig[]=$Q;else$Uf[]=$Q;}$I=(!$Uf&&!$Ig)||move_tables($Uf,$Ig,$A);drop_databases($I?array(DB):array());}return$I;}function
auto_increment(){$ra=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$Yc){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$Yc["columns"],true)){$ra="";break;}if($Yc["type"]=="PRIMARY")$ra=" UNIQUE";}}return" AUTO_INCREMENT$ra";}function
alter_table($Q,$A,array$l,array$nc,$Pa,$Lb,$Ma,$qa,$Ge){$ha=array();foreach($l
as$k){if($k[1]){$i=$k[1][3];if(preg_match('~ GENERATED~',$i)){$k[1][3]=(connection()->flavor=='maria'?"":$k[1][2]);$k[1][2]=$i;}$ha[]=($Q!=""?($k[0]!=""?"CHANGE ".idf_escape($k[0]):"ADD"):" ")." ".implode($k[1]).($Q!=""?$k[2]:"");}else$ha[]="DROP ".idf_escape($k[0]);}$ha=array_merge($ha,$nc);$Lf=($Pa!==null?" COMMENT=".q($Pa):"").($Lb?" ENGINE=".q($Lb):"").($Ma?" COLLATE ".q($Ma):"").($qa!=""?" AUTO_INCREMENT=$qa":"");if($Ge){$He=array();if($Ge["partition_by"]=='RANGE'||$Ge["partition_by"]=='LIST'){foreach($Ge["partition_names"]as$v=>$W){$X=$Ge["partition_values"][$v];$He[]="\n  PARTITION ".idf_escape($W)." VALUES ".($Ge["partition_by"]=='RANGE'?"LESS THAN":"IN").($X!=""?" ($X)":" MAXVALUE");}}$Lf
.="\nPARTITION BY $Ge[partition_by]($Ge[partition])";if($He)$Lf
.=" (".implode(",",$He)."\n)";elseif($Ge["partitions"])$Lf
.=" PARTITIONS ".(+$Ge["partitions"]);}elseif($Ge===null)$Lf
.="\nREMOVE PARTITIONING";if($Q=="")return
queries("CREATE TABLE ".table($A)." (\n".implode(",\n",$ha)."\n)$Lf");if($Q!=$A)$ha[]="RENAME TO ".table($A);if($Lf)$ha[]=ltrim($Lf);return($ha?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$ha)):true);}function
alter_indexes($Q,$ha){$Ca=array();foreach($ha
as$W)$Ca[]=($W[2]=="DROP"?"\nDROP INDEX ".idf_escape($W[1]):"\nADD $W[0] ".($W[0]=="PRIMARY"?"KEY ":"").($W[1]!=""?idf_escape($W[1])." ":"")."(".implode(", ",$W[2]).")");return
queries("ALTER TABLE ".table($Q).implode(",",$Ca));}function
truncate_tables(array$Uf){return
apply_queries("TRUNCATE TABLE",$Uf);}function
drop_views(array$Ig){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Ig)));}function
drop_tables(array$Uf){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$Uf)));}function
move_tables(array$Uf,array$Ig,$Vf){$if=array();foreach($Uf
as$Q)$if[]=table($Q)." TO ".idf_escape($Vf).".".table($Q);if(!$if||queries("RENAME TABLE ".implode(", ",$if))){$ob=array();foreach($Ig
as$Q)$ob[table($Q)]=view($Q);connection()->select_db($Vf);$h=idf_escape(DB);foreach($ob
as$A=>$Hg){if(!queries("CREATE VIEW $A AS ".str_replace(" $h."," ",$Hg["select"]))||!queries("DROP VIEW $h.$A"))return
false;}return
true;}return
false;}function
copy_tables(array$Uf,array$Ig,$Vf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($Uf
as$Q){$A=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $A"))||!queries("CREATE TABLE $A LIKE ".table($Q))||!queries("INSERT INTO $A SELECT * FROM ".table($Q)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J){$lg=$J["Trigger"];if(!queries("CREATE TRIGGER ".($Vf==DB?idf_escape("copy_$lg"):idf_escape($Vf).".".idf_escape($lg))." $J[Timing] $J[Event] ON $A FOR EACH ROW\n$J[Statement];"))return
false;}}foreach($Ig
as$Q){$A=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Hg=view($Q);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $A"))||!queries("CREATE VIEW $A AS $Hg[select]"))return
false;}return
true;}function
trigger($A,$Q){if($A=="")return
array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($A));return
reset($K);}function
triggers($Q){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$J)$I[$J["Trigger"]]=array($J["Timing"],$J["Event"]);return$I;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($A,$S){$K=get_rows("SELECT PARAMETER_NAME, DTD_IDENTIFIER, PARAMETER_MODE, CHARACTER_SET_NAME
FROM information_schema.PARAMETERS
WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$S' AND SPECIFIC_NAME = ".q($A)."
ORDER BY ORDINAL_POSITION");$l=array();foreach($K
as$J){$vc=$J["DTD_IDENTIFIER"];list($ng,$w,$vg)=parse_type($vc);$l[]=array("field"=>$J["PARAMETER_NAME"],"type"=>$ng,"length"=>$w,"unsigned"=>$vg,"null"=>true,"full_type"=>$vc,"inout"=>($S=="FUNCTION"?"":$J["PARAMETER_MODE"]),"collation"=>$J["CHARACTER_SET_NAME"],);}$I=connection()->query("SELECT
	ROUTINE_COMMENT comment,
	CONCAT(IF(IS_DETERMINISTIC = 'YES', 'DETERMINISTIC\\n', ''), IF(SQL_DATA_ACCESS != 'CONTAINS SQL', CONCAT(SQL_DATA_ACCESS, '\\n'), ''), ROUTINE_DEFINITION) definition,
	'SQL' language
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$S' AND ROUTINE_NAME = ".q($A))->fetch_assoc();if($l&&$l[0]['field']=='')$I['returns']=array_shift($l);$I['fields']=$l;return$I;}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($A,array$J){return
idf_escape($A);}function
last_id($H){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$f,$G){return$f->query("EXPLAIN ".(min_version(5.7)?"":"PARTITIONS ").$G);}function
found_rows(array$R,array$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
create_sql($Q,$qa,$Nf){$I=get_val("SHOW CREATE TABLE ".table($Q),1);if(!$qa)$I=preg_replace('~(\n\)[^\n]*?) AUTO_INCREMENT=\d+~','\1',$I);return$I;}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
use_sql($kb,$Nf=""){$A=idf_escape($kb);$I="";if(preg_match('~CREATE~',$Nf)&&($bb=get_val("SHOW CREATE DATABASE $A",1))){set_utf8mb4($bb);if($Nf=="DROP+CREATE")$I="DROP DATABASE IF EXISTS $A;\n";$I
.="$bb;\n";}return$I."USE $A";}function
trigger_sql($Q){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$J)$I
.="\nCREATE TRIGGER ".idf_escape($J["Trigger"])." $J[Timing] $J[Event] ON ".table($J["Table"])." FOR EACH ROW\n$J[Statement];;\n";return$I;}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$k){if(preg_match("~binary~",$k["type"]))return"HEX(".idf_escape($k["field"]).")";if($k["type"]=="bit")return"BIN(".idf_escape($k["field"])." + 0)";if($k["type"]=="vector")return(connection()->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."(".idf_escape($k["field"]).")";if(preg_match("~geometry|point|linestring|polygon~",$k["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($k["field"]).")";}function
unconvert_field(array$k,$I){if(preg_match("~binary~",$k["type"]))$I="UNHEX($I)";if($k["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if($k["type"]=="vector")$I=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($I)";if(preg_match("~geometry|point|linestring|polygon~",$k["type"])){$Te=(min_version(8)?"ST_":"");$I=$Te."GeomFromText($I, $Te"."SRID($k[field]))";}return$I;}function
support($cc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|event|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').(min_version(8,99)?'|fast_status':'').')$~',$cc);}function
kill_process($s){return
queries("KILL ".number($s));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types($Yb=false){return
array();}function
type_values($s){return"";}function
type_definition($s){return
array("kind"=>"","definition"=>"");}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($pf,$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.'&':'').($_GET["ext"]?"ext=".url_escape($_GET["ext"]).'&':'').(isset($_GET[DRIVER])?DRIVER."=".url_escape(SERVER).'&':'').(isset($_GET["username"])?"username=".url_escape($_GET["username"]).'&':'').(DB!=""?'db='.url_escape(DB).'&'.(isset($_GET["ns"])?"ns=".url_escape($_GET["ns"])."&":""):''));function
page_header($bg,$j="",$Aa=array(),$cg=""){page_headers();if(is_ajax()&&$j){page_messages($j);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$dg=$bg.($cg!=""?": $cg":"");$eg=strip_tags($dg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
<html lang=\'de\' dir=\'ltr\' class=\'ltr nojs\'>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>',$eg,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=6.0.0"),'">
';$fb=adminer()->css();if(is_int(key($fb)))$fb=array_fill_keys($fb,'light');$Hc=in_array('light',$fb)||in_array('',$fb);$Ec=in_array('dark',$fb)||in_array('',$fb);$ib=($Hc?($Ec?null:false):($Ec?:null));$Vd=" media='(prefers-color-scheme: dark)'";if($ib!==false)echo"<link rel='stylesheet'".($ib?"":$Vd)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=6.0.0")."'>\n";echo"<meta name='color-scheme' content='".($ib===null?"light dark":($ib?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=6.0.0");if(adminer()->head($ib))echo"<link rel='icon' href='data:image/gif;base64,"."R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=6.0.0")."'>\n";foreach($fb
as$yg=>$ee){$b=($ee=='dark'&&!$ib?$Vd:($ee=='light'&&$Ec?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$b href='".h($yg)."'>\n";}echo"\n<body class='";adminer()->bodyClass();echo"'>\n",script((isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"onload = partial(verifyVersion, '".VERSION."');\n")."
const offlineMessage = '".js_escape('Sie sind offline.')."';
const thousandsSeparator = '".js_escape(' ')."';
const urlSeparators = '".js_escape(ini_get("arg_separator.input"))."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'".on('mouseover','helpKeep').on('mouseout','helpMouseout')."></div>\n","<div id='content'>\n","<span id='menuopen' class='jsonly'".on('click','menuToggle')."><button title='".'Menü'."' class='icon icon-move' aria-expanded='false'></button></span>\n";if($Aa!==null){$y=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($y?:".").'">'.get_driver(DRIVER).'</a> » ';$y=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$M=adminer()->serverName(SERVER);$M=($M!=""?$M:'Server');if($Aa===false)echo"$M\n";else{echo"<a href='".h($y)."' accesskey='1' title='Alt+Shift+1'>$M</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Aa)))echo'<a href="'.h($y."&db=".url_escape(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Aa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Aa
as$v=>$W){$qb=(is_array($W)?$W[1]:h($W));if($qb!="")echo"<a href='".h(ME."$v=").url_escape(is_array($W)?$W[0]:$W)."'>$qb</a> » ";}}echo"$bg\n";}}echo"<h2>$dg</h2>\n","<div id='ajaxstatus' role='status' class='jsonly'></div>\n";restart_session();page_messages($j);$lb=&get_session("dbs");if(DB!=""&&$lb&&!in_array(DB,$lb,true))$lb=null;stop_session();define('Adminer\PAGE_HEADER',1);ob_flush();flush();}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$eb){$Jc=array();foreach($eb
as$v=>$W)$Jc[]="$v $W";header("Content-Security-Policy: ".implode("; ",$Jc));}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"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
design_checksums(){$Bg=array();foreach(array_keys(adminer()->css())as$yg)$Bg[preg_replace('~\?.*~','',$yg)]=true;$I=array();foreach(array("adminer.css","adminer-dark.css")as$n){if($Bg[$n]&&file_exists($n)){preg_match('~^/\* Adminer design ([-\w]+) \*/~',file_get_contents($n),$z);$I[$n]=array((string)$z[1],Plugins::checksum($n));}}return$I;}function
official_design_checksums(){return
array('adminer-border/adminer-dark.css'=>'b2527e3','adminer-border/adminer.css'=>'430977ad','adminer-dark/adminer-dark.css'=>'a26bcd7b','brade/adminer.css'=>'be4161f0','bueltge/adminer.css'=>'1a8f00b4','dracula/adminer-dark.css'=>'cfaf61dd','esterka/adminer.css'=>'1f805f36','flat/adminer.css'=>'49a61af9','galkaev/adminer-dark.css'=>'16c46f94','haeckel/adminer.css'=>'147a3565','hever/adminer.css'=>'78b8cd43','konya/adminer.css'=>'3cc606c5','lavender-light/adminer.css'=>'bf03f5d7','lucas-sandery/adminer.css'=>'6596353','mancave/adminer-dark.css'=>'e1ac813d','mvt/adminer.css'=>'ebd3afdc','nette/adminer.css'=>'5ab360e7','ng9/adminer.css'=>'488583cf','nicu/adminer.css'=>'ecb9bd1e','pappu687/adminer.css'=>'b58d128c','paranoiq/adminer.css'=>'64d27e5','pepa-linha/adminer.css'=>'baf25f0','pokorny/adminer.css'=>'ee9eea6d','price/adminer.css'=>'b3c939b2','rmsoft/adminer.css'=>'391d54ad','rmsoft_blue-dark/adminer.css'=>'17714d77','rmsoft_blue/adminer.css'=>'c0f192ea','win98/adminer.css'=>'e82d63c3',);}function
version_iframe(){return(isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"<noscript><iframe sandbox src='https://www.adminer.org/version/?current=".VERSION."&amp;noscript=1'></iframe></noscript>");}function
get_nonce(){static$me;if(!$me)$me=base64_encode(rand_string());return$me;}function
page_messages($j){$xg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Yd=idx($_SESSION["messages"],$xg);if($Yd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Yd)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$xg]);}if($j)echo"<div class='error'>$j</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
page_footer($de=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($de);echo"</div>\n";if($de!="auth")echo'<form action="" method="post">
<p class="logout">
<span title="Benutzer">',h($_GET["username"])."\n",'</span>
<input type=\'submit\' name=\'logout\' value=\'Abmelden\' id=\'logout\'>
',input_token(),'</form>
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
int32($_){while($_>=2147483648)$_-=4294967296;while($_<=-2147483649)$_+=4294967296;return(int)$_;}function
long2str(array$V,$Kg){$of='';foreach($V
as$W)$of
.=pack('V',$W);if($Kg)return
substr($of,0,end($V));return$of;}function
str2long($of,$Kg){$V=array_values(unpack('V*',str_pad($of,4*ceil(strlen($of)/4),"\0")));if($Kg)$V[]=strlen($of);return$V;}function
xxtea_mx($Qg,$Pg,$Pf,$qd){return
int32((($Qg>>5&0x7FFFFFF)^$Pg<<2)+(($Pg>>3&0x1FFFFFFF)^$Qg<<4))^int32(($Pf^$Pg)+($qd^$Qg));}function
encrypt_string($Mf,$v){if($Mf=="")return"";$v=array_values(unpack("V*",pack("H*",md5($v))));$V=str2long($Mf,true);$_=count($V)-1;$Qg=$V[$_];$Pg=$V[0];$Ye=floor(6+52/($_+1));$Pf=0;while($Ye-->0){$Pf=int32($Pf+0x9E3779B9);$Eb=$Pf>>2&3;for($Be=0;$Be<$_;$Be++){$Pg=$V[$Be+1];$he=xxtea_mx($Qg,$Pg,$Pf,$v[$Be&3^$Eb]);$Qg=int32($V[$Be]+$he);$V[$Be]=$Qg;}$Pg=$V[0];$he=xxtea_mx($Qg,$Pg,$Pf,$v[$Be&3^$Eb]);$Qg=int32($V[$_]+$he);$V[$_]=$Qg;}return
long2str($V,false);}function
decrypt_string($Mf,$v){if($Mf=="")return"";if(!$v)return
false;$v=array_values(unpack("V*",pack("H*",md5($v))));$V=str2long($Mf,false);$_=count($V)-1;$Qg=$V[$_];$Pg=$V[0];$Ye=floor(6+52/($_+1));$Pf=int32($Ye*0x9E3779B9);while($Pf){$Eb=$Pf>>2&3;for($Be=$_;$Be>0;$Be--){$Qg=$V[$Be-1];$he=xxtea_mx($Qg,$Pg,$Pf,$v[$Be&3^$Eb]);$Pg=int32($V[$Be]-$he);$V[$Be]=$Pg;}$Qg=$V[$_];$he=xxtea_mx($Qg,$Pg,$Pf,$v[$Be&3^$Eb]);$Pg=int32($V[0]-$he);$V[0]=$Pg;$Pf=int32($Pf-0x9E3779B9);}return
long2str($V,true);}$Le=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$W){list($v)=explode(":",$W);$Le[$v]=$W;}}function
add_invalid_login(){$xa=get_temp_dir()."/adminer-invalid";foreach(glob("$xa*")?:array($xa)as$n){$o=file_open_lock($n);if($o)break;}if(!$o)$o=file_open_lock("$xa-".rand_string());if(!$o)return;$hd=json_decode(stream_get_contents($o),true);$Zf=time();if($hd){foreach($hd
as$id=>$W){if($W[0]<$Zf)unset($hd[$id]);}}$gd=&$hd[adminer()->bruteForceKey()];if(!$gd)$gd=array($Zf+30*60,0);$gd[1]++;file_write_unlock($o,json_encode($hd));}function
check_invalid_login(array&$Le){$hd=array();foreach(glob(get_temp_dir()."/adminer-invalid*")as$n){$o=file_open_lock($n);if($o){$hd=json_decode(stream_get_contents($o),true);file_unlock($o);break;}}$v=adminer()->bruteForceKey();$gd=idx($hd,$v,array());$le=($gd[1]>29?$gd[0]-time():0);if($le>0){$j=lang_format(array('Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minute noch einmal.','Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minuten noch einmal.'),ceil($le/60));if($_SERVER["HTTP_X_FORWARDED_FOR"]!=""&&$v==$_SERVER["REMOTE_ADDR"])$j
.='<br>'.sprintf('Verwenden Sie das <a%2$s>Plugin</a> %1$s, wenn Adminer hinter einem Reverse Proxy läuft.','<b>login-reverse-proxy</b>'," href='https://www.adminer.org/plugins/?version=".VERSION."'".target_blank());auth_error($j,$Le);}}function
password_required(){static$I;if($I===null){$I=(bool)get_session("password_required");if(!$I){$db=adminer()->credentials();$I=!is_object(Driver::connect($db[0],$db[1],""));if($I)set_session("password_required",true);}}return$I;}$pa=$_POST["auth"];if($pa){session_regenerate_id();$Y=$pa["driver"];$M=$pa["server"];$U=$pa["username"];$E=(string)$pa["password"];$h=$pa["db"];set_password($Y,$M,$U,$E);$_SESSION["db"][$Y][$M][$U][$h]=true;if($pa["permanent"]){$v=implode("-",array_map('base64_encode',array($Y,$M,$U,$h)));$We=adminer()->permanentLogin(true);$Le[$v]="$v:".base64_encode($We?encrypt_string($E,$We):"");cookie("adminer_permanent",implode(" ",$Le));}if(count($_POST)==1||DRIVER!=$Y||SERVER!=$M||$_GET["username"]!==$U||DB!=$h)redirect(auth_url($Y,$M,$U,$h));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$v)set_session($v,null);unset_permanent($Le);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Abmeldung erfolgreich.'.' '.'Danke, dass Sie Adminer genutzt haben. <a href="https://www.adminer.org/de/donation/">Spenden willkommen!</a>.');}elseif($Le&&!$_SESSION["pwds"]){session_regenerate_id();$We=adminer()->permanentLogin();foreach($Le
as$v=>$W){list(,$Ia)=explode(":",$W);list($Y,$M,$U,$h)=array_map('base64_decode',explode("-",$v));set_password($Y,$M,$U,decrypt_string(base64_decode($Ia),$We));$_SESSION["db"][$Y][$M][$U][$h]=true;}}function
unset_permanent(array&$Le){foreach($Le
as$v=>$W){list($Y,$M,$U,$h)=array_map('base64_decode',explode("-",$v));if($Y==DRIVER&&$M==SERVER&&$U==$_GET["username"]&&$h==DB)unset($Le[$v]);}cookie("adminer_permanent",implode(" ",$Le));}function
auth_error($j,array&$Le){$zf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$zf]||$_GET[$zf])&&!$_SESSION["token"])$j='Sitzungsdauer abgelaufen, bitte erneut anmelden.';else{restart_session();add_invalid_login();$E=get_password();if($E!==null){if($E===false)$j
.=($j?'<br>':'').sprintf('Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/"%s>Implementieren</a> Sie die %s Methode, um es permanent zu machen.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Le);}}if(!$_COOKIE[$zf]&&$_GET[$zf]&&ini_bool("session.use_only_cookies"))$j='Unterstüzung für PHP-Sessions muss aktiviert sein.';$Ee=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Ee["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$j,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'Die Aktion wird nach erfolgreicher Anmeldung mit denselben Anmeldedaten ausgeführt.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Le);page_header('Keine Erweiterungen installiert',sprintf('Keine der unterstützten PHP-Erweiterungen (%s) ist vorhanden.',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Pc,$Oe)=host_port(SERVER);if(preg_match('~[^-\w.:/]~',$Pc.$Oe))auth_error('Ungültiger Server.',$Le);if(preg_match('~^-?\d+~',$Oe,$z)&&($z[0]<1024||$z[0]>65535))auth_error('Die Verbindung zu privilegierten Ports ist nicht erlaubt.',$Le);check_invalid_login($Le);$db=adminer()->credentials();$f=Driver::connect($db[0],$db[1],$db[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)));}}$Gd=null;if(!is_object($f)||($Gd=adminer()->login($_GET["username"],get_password()))!==true){$j=(is_string($f)?nl_br(h($f)):(is_string($Gd)?$Gd:'Ungültige Anmelde-Informationen.')).(preg_match('~^ | $~',get_password())?'<br>'.'Es gibt ein Leerzeichen im Eingabepasswort, das die Ursache sein könnte.':'');auth_error($j,$Le);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Abmelden','CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($pa&&$_POST["token"])$_POST["token"]=get_token();$j='';if($_POST){if(!verify_token())$j='CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.'.' '.'Wenn Sie diese Anfrage nicht von Adminer gesendet haben, schließen Sie diese Seite.';}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$j=sprintf('POST-Daten sind zu groß. Reduzieren Sie die Größe oder vergrößern Sie den Wert %s in der Konfiguration.',"<b>post_max_size</b>'");if(isset($_GET["sql"]))$j
.=' '.'Sie können eine große SQL-Datei per FTP hochladen und dann vom Server importieren.';}function
doc_link(array$Ie,$Wf=""){return"";}function
like_bool(array$k){return$k["type"]=="bool"||(preg_match('~bit|tinyint~',$k["type"])&&$k["length"]==1);}connection()->select_db(adminer()->database());adminer()->afterConnect();add_driver(DRIVER,'Login');if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$l=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=array(idf_escape($_GET["field"]));$H=driver()->select($a,$L,array(where($_GET,$l)),$L);$J=($H?$H->fetch_row():array());echo
driver()->value($J[0],$l[$_GET["field"]]);exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$l=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$l):""):where($_GET,$l));$T=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($l
as$A=>$k){if((!$T&&!isset($k["privileges"]["insert"]))||adminer()->fieldName($k)=="")unset($l[$A]);}if($_POST&&!$j&&!isset($_GET["select"])){$Fd=$_POST["referer"];if($_POST["insert"])$Fd=($T?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Fd))$Fd=ME."select=".url_escape($a);$u=indexes($a);$rg=unique_array($_GET["where"],$u);$bf="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Fd,'Datensatz wurde gelöscht.',driver()->delete($a,$bf,$rg?0:1));else{$N=array();foreach($l
as$A=>$k){$W=process_input($k);if($W!==false&&$W!==null)$N[idf_escape($A)]=$W;}if($T){if(!$N)redirect($Fd);queries_redirect($Fd,'Datensatz wurde geändert.',driver()->update($a,$N,$bf,$rg?0:1));if(is_ajax()){page_headers();page_messages($j);exit;}}else{$H=driver()->insert($a,$N);$xd=($H?last_id($H):0);queries_redirect($Fd,sprintf('Datensatz%s wurde eingefügt.',($xd?" $xd":"")),$H);}}}$J=null;if($Z){$L=array();foreach($l
as$A=>$k){if(isset($k["privileges"]["select"])){$na=($_POST["clone"]&&$k["auto_increment"]?"''":convert_field($k));$L[]=($na?"$na AS ":"").idf_escape($A);}}$J=array();if(!support("table"))$L=array("*");if($L){$H=driver()->select($a,$L,array($Z),$L,array(),(isset($_GET["select"])?2:1));if(!$H)$j=error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!$l&&driver()->primary!=""){if(!$Z){$H=driver()->select($a,array("*"),array(),array("*"));$J=($H?$H->fetch_assoc():false);if(!$J)$J=array(driver()->primary=>"");}if($J){foreach($J
as$v=>$W){if(!$Z)$J[$v]=null;$l[$v]=array("field"=>$v,"null"=>($v!=driver()->primary),"auto_increment"=>($v==driver()->primary));}}}if($_POST["save"]){$Qe=array();foreach((array)$_POST["fields"]as$v=>$W)$Qe[bracket_escape($v,true)]=$W;$J=$Qe+($J?$J:array());}edit_form($a,$l,$J,$T,$j);}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$u=indexes($a);$l=fields($a);$rc=column_foreign_keys($a);$qe=$R["Oid"];$da=get_settings("adminer_import");$nf=array();$e=array();$rf=array();$xe=array();$Xf=null;foreach($l
as$v=>$k){$A=adminer()->fieldName($k);$ie=html_entity_decode(strip_tags($A),ENT_QUOTES);if(isset($k["privileges"]["select"])&&$A!=""){$e[$v]=$ie;if(is_shortable($k))$Xf=adminer()->selectLengthProcess();}if(isset($k["privileges"]["where"])&&$A!="")$rf[$v]=$ie;if(isset($k["privileges"]["order"])&&$A!="")$xe[$v]=$ie;$nf+=$k["privileges"];}list($L,$q)=adminer()->selectColumnsProcess($e,$u);$L=array_unique($L);$q=array_unique($q);$kd=count($q)<count($L);$Z=adminer()->selectSearchProcess($l,$u);$C=adminer()->selectOrderProcess($l,$u);$x=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$sg=>$J){$na=convert_field($l[key($J)]);$L=array($na?:idf_escape(key($J)));$Z[]=where_check(bracket_escape($sg,true),$l);$I=driver()->select($a,$L,$Z,$L);if($I)echo
first($I->fetch_row());}exit;}$Ue=$ug=array();foreach($u
as$Yc){if($Yc["type"]=="PRIMARY"){$Ue=array_flip($Yc["columns"]);$ug=($L?$Ue:array());foreach($ug
as$v=>$W){if(in_array(idf_escape($v),$L))unset($ug[$v]);}break;}}if($qe&&!$Ue){$Ue=$ug=array($qe=>0);$u[]=array("type"=>"PRIMARY","columns"=>array($qe));}if($_POST&&!$j){$Mg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Ha=array();foreach($_POST["check"]as$Fa)$Ha[]=where_check($Fa,$l);$Mg[]="((".implode(") OR (",$Ha)."))";}$Og=$Mg;$Mg=($Mg?"\nWHERE ".implode(" AND ",$Mg):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$tf=($L?:array("*"));$Xa=convert_fields($e,$l,$L);if($Xa)$tf[]=substr($Xa,2);$G="";if(is_array($_POST["check"])&&!$Ue){$uc=implode(", ",$tf)."\nFROM ".table($a);$Ac=($q&&$kd?"\nGROUP BY ".implode(", ",$q):"").($C?"\nORDER BY ".implode(", ",$C):"");$qg=array();foreach($_POST["check"]as$W)$qg[]="(SELECT".limit($uc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W,$l).$Ac,1).")";$G=implode(" UNION ALL ",$qg);}adminer()->dumpData($a,"table",$G,$tf,$Og,($kd?$q:array()),$C);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$rc)){if($_POST["save"]||$_POST["delete"]){$H=true;$ea=0;$N=array();if(!$_POST["delete"]){foreach($l
as$A=>$W){$t=bracket_escape($A);if(isset($_POST["fields"][$t])||$_FILES["fields-$t"]){$W=process_input($l[$A]);if($W!==null&&($_POST["clone"]||$W!==false))$N[idf_escape($A)]=($W!==false?$W:idf_escape($A));}}}if($_POST["delete"]||$N){$G=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($N)).")\nSELECT ".implode(", ",$N)."\nFROM ".table($a):"");if($_POST["all"]||($Ue&&is_array($_POST["check"]))||$kd){$H=($_POST["delete"]?driver()->delete($a,$Mg):($_POST["clone"]?queries("INSERT $G$Mg".driver()->insertReturning($a)):driver()->update($a,$N,$Mg)));$ea=connection()->affected_rows;if(is_object($H))$ea+=$H->num_rows;}else{foreach((array)$_POST["check"]as$W){$Lg="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W,$l);$H=($_POST["delete"]?driver()->delete($a,$Lg,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$Lg)):driver()->update($a,$N,$Lg,1)));if(!$H)break;$ea+=connection()->affected_rows;}}}$Xd=sprintf('%d Artikel betroffen.',$ea);if($_POST["clone"]&&$H&&$ea==1){$xd=last_id($H);if($xd)$Xd=sprintf('Datensatz%s wurde eingefügt.'," $xd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page|next":""),$Xd,$H);if(!$_POST["delete"]){$Qe=(array)$_POST["fields"];edit_form($a,array_intersect_key($l,$Qe),$Qe,!$_POST["clone"],$j);page_footer();exit;}}elseif(!$_POST["import"]){$H=true;$ea=0;foreach((array)$_POST["val"]as$sg=>$J){$N=array();foreach($J
as$v=>$W){$v=bracket_escape($v,true);$N[idf_escape($v)]=(preg_match('~char|text~',$l[$v]["type"])||$W!=""?adminer()->processInput($l[$v],$W):"NULL");}$H=driver()->update($a,$N," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check(bracket_escape($sg,true),$l),($kd||$Ue?0:1)," ");if(!$H)break;$ea+=connection()->affected_rows;}queries_redirect(remove_from_uri(),sprintf('%d Artikel betroffen.',$ea),$H);}elseif(!is_string($m=get_file("csv_file",true)))$j=upload_error($m);elseif(!preg_match('~~u',$m))$j='Die Datei muss UTF-8 kodiert sein.';else{save_settings(array("output"=>$da["output"],"format"=>$_POST["separator"]),"adminer_import");$Oa=array_keys($l);$wf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$gb=parse_csv($m,$wf);$ea=count($gb);driver()->begin();$K=array();foreach($gb
as$v=>$Fg){if(!$v&&!array_diff($Fg,$Oa)){$Oa=$Fg;$ea--;}else{$N=array();foreach($Fg
as$r=>$La)$N[idf_escape($Oa[$r])]=($La==""&&$l[$Oa[$r]]["null"]?"NULL":q(csv_value($La)));$K[]=$N;}}$H=(!$K||driver()->insertUpdate($a,$K,$Ue));if($H)driver()->commit();queries_redirect(remove_from_uri("page|next"),lang_format(array('%d Datensatz wurde importiert.','%d Datensätze wurden importiert.'),$ea),$H);driver()->rollback();}}}$Tf=adminer()->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header('Daten zeigen von'.": $Tf",$j);$N=null;if(isset($nf["insert"])||!support("table")){$N="";foreach((array)$_GET["where"]as$W){$X=$W["val"];if(is_array($X))$X=(count($X)==1&&preg_match('~^val-(.*)~s',reset($X),$z)?$z[1]:"");if($W["col"]!=""&&$X!=""&&($W["op"]=="="||(!$W["op"]&&(is_array($W["val"])||!preg_match('~[_%]~',$X)))))$N
.="&set[".url_escape(bracket_escape($W["col"]))."]=".url_escape($X);}}adminer()->selectLinks($R,$N);if(!$e&&support("table"))echo"<p class='error'>".'Auswahl der Tabelle fehlgeschlagen'.($l?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div hidden>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($L,$e);adminer()->selectSearchPrint($Z,$rf,$u);adminer()->selectOrderPrint($C,$xe,$u);adminer()->selectLimitPrint($x);if($Xf!==null)adminer()->selectLengthPrint($Xf);adminer()->selectActionPrint($u);echo"</form>\n";foreach((array)$_GET["where"]as$W){if($W["op"]=="SQL"&&!in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"))){echo"<p class='error'>".'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.'.' '.'Wenn Sie diese Anfrage nicht von Adminer gesendet haben, schließen Sie diese Seite.'."\n";page_footer();exit;}}$D=$_GET["page"];$tc=null;if($D=="last"){$tc=get_val(count_rows($a,$Z,$kd,$q));$D=floor(max(0,intval($tc)-1)/$x);}$sf=$L;$_c=$q;if(!$sf){$sf[]="*";$Xa=convert_fields($e,$l,$L);if($Xa)$sf[]=substr($Xa,2);}foreach($L
as$v=>$W){$k=$l[idf_unescape($W)];if($k&&($na=convert_field($k)))$sf[$v]="$na AS $W";}if(JUSH=="pgsql"||JUSH=="mssql"){foreach((array)$_GET["columns"]as$v=>$W){if(isset($sf[$v])&&$W["fun"])$sf[$v].=" AS ".idf_escape(apply_sql_function($W["fun"],($W["col"]!=""?$W["col"]:"*")));}}if(!$kd&&$ug){foreach($ug
as$v=>$W){$sf[]=idf_escape($v);if($_c)$_c[]=idf_escape($v);}}$H=driver()->select($a,$sf,$Z,$_c,$C,$x,$D,true);if(!is_object($H))echo"<p class='error'>".(error()?:'Unbekannter Fehler.')."\n";else{if(JUSH=="mssql"&&$D)$H->seek($x*$D);$Jb=array();$K=array();while($J=$H->fetch_assoc()){if($D&&JUSH=="oracle")unset($J["RNUM"]);$K[]=$J;}$Ic=($x&&(support("cursor")?$_GET["next"]!="":count($K)>=$x));if(is_ajax()&&$Ic)header("X-Next-Page: ".pagination_href($D+1));if($_GET["modify"]&&$K){$Qd=max_input_vars(count($K[0])+1,20);echo($Qd&&count($K)>$Qd?"<p class='error'>".max_input_vars_error()."\n":"");}echo"<form action='' method='post' enctype='multipart/form-data'>\n";if($_GET["page"]!="last"&&$x&&$q&&$kd&&JUSH=="sql")$tc=get_val(" SELECT FOUND_ROWS()");if(!$K)echo"<p class='message'>".'Keine Datensätze.'."\n";else{$wa=adminer()->backwardKeys($a,$Tf);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'".on('click','tableClick').on('dblclick','tableClick').on('keydown','editingKeydown').">\n","<thead><tr>".(!$q&&$L?"":"<td class='hover check'><input type='checkbox' id='all-page' class='jsonly' title='".'Alle Zeilen auf dieser Seite'."'".on('click','formCheck','^check').">");$je=array();$xc=array();reset($L);$df=1;foreach($K[0]as$v=>$W){if(!isset($ug[$v])){$W=idx($_GET["columns"],key($L))?:array();$k=$l[$L?($W?$W["col"]:current($L)):$v];$A=($k?adminer()->fieldName($k,$df):($W["fun"]?"*":h($v)));if($A!=""){$df++;$je[$v]=$A;$d=idf_escape($v);$Qc=remove_from_uri('(order|desc)[^=]*|page|next').'&order[0]='.url_escape($v);$qb="&desc[0]=1";$Ef=preg_replace('~ DESC( NULLS LAST)?$~','',$C[0]);$Gf=($Ef==$d||$Ef==$v);echo"<th id='th[".h(bracket_escape($v))."]'".($Gf?" aria-sort='".($Ef==$C[0]?"ascending":"descending")."'":"").">";$wc=apply_sql_function($W["fun"],$A);$Ff=isset($k["privileges"]["order"])||$wc!=$A;echo($Ff?"<a href='".h($Qc.($Gf&&$Ef==$C[0]?$qb:''))."'>$wc</a>":$wc);$Wd=($Ff?"<a href='".h($Qc.$qb)."' title='".'absteigend'."' class='text'> ↓</a>":'');if(!$W["fun"]&&isset($k["privileges"]["where"]))$Wd
.="<a href='#fieldset-search' title='".'Suchen'."' class='text jsonly'".on('click','selectSearch',$v)."> =</a>";echo($Wd?"<span class='column'>$Wd</span>":"");}$xc[$v]=$W["fun"];next($L);}}$Ad=array();if($_GET["modify"]){foreach($K
as$J){foreach($J
as$v=>$W)$Ad[$v]=max($Ad[$v],min(40,strlen(utf8_decode($W))));}}echo($wa?"<th>".'Relationen':"")."<tbody>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($K,$rc)as$_=>$J){$rg=unique_array($K[$_],$u);if(!$rg){$rg=array();reset($L);foreach($K[$_]as$v=>$W){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($L)))$rg[$v]=$W;next($L);}}$sg="";foreach($rg
as$v=>$W){$k=(array)$l[$v];$jd=is_blob($k);if((JUSH=="sql"||JUSH=="pgsql")&&($jd||preg_match('~char|text|enum|set~',$k["type"]))&&strlen($W)>64){$v=(strpos($v,'(')?$v:idf_escape($v));$v="MD5(".($jd||JUSH!='sql'||preg_match("~^utf8~",$k["collation"])?$v:"CONVERT($v USING ".charset(connection()).")").")";$W=md5($jd?(string)driver()->value($W,$k):$W);}$sg
.="&".($W!==null?"where[".url_escape(bracket_escape($v))."]=".url_escape($W===false?"f":$W):"null[]=".url_escape($v));}echo"<tr>".(!$q&&$L?"":"<td class='hover check'>".($kd||information_schema(DB)?"":"<a href='".h(ME."edit=".url_escape($a).$sg)."' class='edit'>".'bearbeiten'."</a> ").checkbox("check[]",substr($sg,1),in_array(substr($sg,1),(array)$_POST["check"])));reset($L);foreach($J
as$v=>$W){if(isset($je[$v])){$d=current($L);$k=(array)$l[$v];if($W!=""&&(!isset($Jb[$v])||$Jb[$v]!=""))$Jb[$v]=(is_mail($W)?$je[$v]:"");$y="";if(is_blob($k)&&$W!="")$y=ME.'download='.url_escape($a).'&field='.url_escape($v).$sg;if(!$y&&$W!==null){foreach((array)$rc[$v]as$qc){if(count($rc[$v])==1||end($qc["source"])==$v){$y="";foreach($qc["source"]as$r=>$Hf)$y
.=where_link($r,$qc["target"][$r],$K[$_][$Hf]);$y=($qc["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.url_escape($qc["db"]),ME):ME).'select='.url_escape($qc["table"]).$y;if($qc["ns"])$y=preg_replace('~([?&]ns=)[^&]+~','\1'.url_escape($qc["ns"]),$y);if(count($qc["source"])==1)break;}}}if($d=="COUNT(*)"){$y=ME."select=".url_escape($a);$r=0;foreach((array)$_GET["where"]as$V){if(!array_key_exists($V["col"],$rg))$y
.=where_link($r++,$V["col"],$V["val"],$V["op"]);}foreach($rg
as$qd=>$V)$y
.=where_link($r++,$qd,$V);}$Rc=select_value($W,$y,$k,$Xf);$t=bracket_escape($sg);$s=h("val[$t][".bracket_escape($v)."]");$Se=idx(idx($_POST["val"],$t),bracket_escape($v));$T=idx($k["privileges"],"update");$Gb=!is_array($J[$v])&&!is_blob($k)&&is_utf8($W)&&$K[$_][$v]==$W&&!$xc[$v]&&!$k["generated"]&&$T;$S=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$z)?$l[idf_unescape($z[2])]["type"]:$k["type"]);$Wf=preg_match('~text|json|lob~',$S);$ld=preg_match(number_type(),$S)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$s'".($ld&&($W===null||is_numeric(strip_tags($Rc))||$S=="money")?" class='number'":"");if(($_GET["modify"]&&$Gb&&$W!==null)||$Se!==null){$Cc=h($Se!==null?$Se:$W);echo">".($Wf?"<textarea name='$s' cols='30' rows='".(substr_count($W,"\n")+1)."'>$Cc</textarea>":"<input name='$s' value='$Cc' size='$Ad[$v]'>");}else{$Hd=strpos($Rc,"<i>…</i>");echo($T?" data-text='".($Hd?2:($Wf?1:0))."'".($Gb?"":" data-warning='".'Benutzen Sie den Link zum Bearbeiten dieses Wertes.'."'"):"").">$Rc";}}next($L);}if($wa)echo"<td>";adminer()->backwardKeysPrint($wa,$K[$_]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($K||$D||$Ic){$Ub=true;if($_GET["page"]!="last"){if(!$x||(count($K)<$x&&($K||!$D)))$tc=($D?$D*$x:0)+count($K);elseif(JUSH!="sql"||!$kd){$tc=($kd?false:found_rows($R,$Z));if(intval($tc)<max(1e4,2*($D+1)*$x))$tc=first(slow_query(count_rows($a,$Z,$kd,$q)));elseif(JUSH=='sql'||JUSH=='pgsql')$Ub=false;}}if(!support("cursor"))$Ic=(($tc===false?count($K)+1:$tc-$D*$x)>$x);$Ce=($x&&($Ic||$D));if($Ce)echo($Ic?'<p><a href="'.h(pagination_href($D+1)).'" class="loadmore"'.on('click','selectLoadMore','Lade…').'>'.'Mehr Daten laden'.'</a>':''),"\n";echo"<div class='footer'><div>\n";if($Ce){$Pd=($tc===false?$D+($K?(count($K)>=$x?2:1):0):floor(($tc-1)/$x));echo"<fieldset><legend>".'Seite'."</legend>";if(!support("cursor")){echo
pagination(0,$D).($D>5?" …":"");for($r=max(1,$D-4);$r<min($Pd,$D+5);$r++)echo
pagination($r,$D);if($Pd>0)echo($D+5<$Pd?" …":""),($Ub&&$tc!==false?pagination($Pd,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Pd'>".'letzte'."</a>");}else
echo
pagination(0,$D).($D>1?" …":""),($D?pagination($D,$D):""),($Ic?pagination($D+1,$D)." …":"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Gesamtergebnis'."</legend>";$ub=($Ub?"":"~ ").$tc;$td=($tc!==false?($Ub?"":"~ ").lang_format(array('%d Datensatz','%d Datensätze'),$tc):"");echo
checkbox("all",1,0,$td,on('click','countRows',$ub))."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':" title='".'Ctrl+Klick zum Bearbeiten des Wertes.'."'"),'>
<legend><a href=\'',h($_GET["modify"]?remove_from_uri("modify"):relative_uri()."&modify=1"),'\'>Ändern</a></legend><div>
<input type=\'submit\' id=\'save\' value=\'Speichern\'',($_GET["modify"]?'':" class='jsonly' disabled"),'>
</div></fieldset>

<fieldset><legend>Ausgewählte <span id="selected"></span></legend><div>
<input type=\'submit\' name=\'edit\' value=\'Bearbeiten\'>
<input type=\'submit\' name=\'clone\' value=\'Klonen\'>
<input type=\'submit\' name=\'delete\' value=\'Entfernen\'',confirm(),'>
</div></fieldset>
';$sc=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($sc['sql']);break;}}if($sc){print_fieldset("export",'Exportieren'." <span id='selected2'></span>");$Ae=adminer()->dumpOutput();echo($Ae?html_select("output",$Ae,$da["output"])." ":""),html_select("format",$sc,$da["format"])," <input type='submit' name='export' value='".'Exportieren'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($Jb,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import' class='toggle'>".'Importieren'."</a>","<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input(" name='csv_file'"," ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$da["format"])." <input type='submit' name='import' value='".'Importieren'."'>"),"</span>";echo
input_token(),"</form>\n",(!$q&&$L?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));elseif(list($Q,$s,$A)=adminer()->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$x=11;$H=connection()->query("SELECT $s, $A FROM ".table($Q)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$s = $_GET[value] OR ":"")."$A LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $x");for($r=1;($J=$H->fetch_row())&&$r<$x;$r++)echo"<a href='".h(ME."edit=".url_escape($Q)."&where[".url_escape(bracket_escape(idf_unescape($s)))."]=".url_escape($J[0]))."'>".h($J[1])."</a><br>\n";if($J)echo"...\n";}exit;}else{page_header('Server',"",false);if(adminer()->homepage()){echo"<form action='' method='post'>\n","<p>".'Suche in Tabellen'.": <input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Suchen'."'>\n";if($_POST["query"]!="")search_tables();echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'".on('click','tableClick').on('dblclick','tableClick').">\n",'<thead><tr class="wrap">','<td class="hover"><input id="check-all" type="checkbox" class="jsonly"'.on('click','formCheck','^tables\[').'>','<th>'.'Tabelle','<td>'.'Datensätze',"<tbody>\n";foreach(table_status()as$Q=>$J){$A=adminer()->tableName($J);if($A!="")echo'<tr><td class="hover">'.checkbox("tables[]",$Q,in_array($Q,(array)$_POST["tables"],true)),"<th><a href='".h(ME).'select='.url_escape($Q)."'>$A</a>","<td align='right'><a href='".h(ME."edit=").url_escape($Q)."'>".format_status($J,"Rows")."</a>";}echo"</table>\n","</div>\n","</form>\n",script("tableCheck();");adminer()->pluginsLinks();}}page_footer();