8Xr�;pg���/�\"�1�8����_0�IA�FCȨ�V*a�P�d�������¿½\$�B��<�9o*\$���3��g0��@����P\N�YrL���a��c�0RJ�2�����F� S� �L�^� t���%T�sa4�2�2� ��J-�B��`�WQ�0���w95u�����NJ����� H��\���I�ڢ�!�(n* @license https://www.apache.olH�\$ g/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 5.2.1 */namespace Adminer;const VERSION="5.2.1";error_reporting(24575);set_error_handler(function($Cc,$Ec){return!!preg_match('~^Undefined (array key|offset|index)~',$Ec);},E_WARNING|E_NOTICE);$Zc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Zc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$cj=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($cj)$$X=$cj;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function connection($h=null){return($h?:Db::$he);}function adminer(){return Adminer::$he;}function driver(){return Driver::$he;}function connect(){$Fb=adminer()->credentials();$J=Driver::connect($Fb[0],$Fb[1],$Fb[2]);return(is_object($J)?$J:null);}function idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$Ae=substr($v,-1);return str_replace($Ae.$Ae,$Ae,substr($v,1,-1));}function q($Q){return connection()->quote($Q);}function *'\n�Y�escape_string($X){return substr(q($X),1,-1);}function idx($xa,$y,$l=null){return($xa&&array_key_exists($y,$xa)?$xa[$y]:$l);}function number($X){return preg_replace('~[^0-9]+~','',$X);}function number_type(){return'((?$W){unset($Kg[$y][$se]);if(is_array($W)){$Kg[$y][stripslashes($se)]=$W;$Kg[]=&$Kg[$y][stripslashes($se)];}else$Kg[$y][stripslashes($se)]=($Zc?$W:stripslashes($W));}}}}function bracket_escape($v,$Ea=false){static$Li=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($v,($Ea?array_flip($Li):$Li));}function min_version($tj,$Oe="",$h=null){$h=connection($h);$Eh=$h->server_info;if($Oe&&preg_match('~([\d.]+)-MariaDB~',$Eh,$B)){$Eh=$B[1];$tj=$Oe;}return$tj&&version_compare($Eh,$tj)>=0;}function charset(Db$g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function ini_bool($ce){$X=ini_get($ce);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function set_password($sj,$N,$V,$F){$_SESSION["pwds"][$sj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function get_val($H,$n=0,$tb=null){$tb=connection($tb);$I=$tb->query($H);if(!is_object($I))return false;$K=$I->fetch_row();return($K?$K[$n]:false);}function get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function get_key_vals($H,$h=null,$Hh=true){$h=connection($h);$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($Hh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function get_rows($H,$h=null,$m="

"){$tb=connection($h);$J=array();$I=$tb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$h&&$m&&(defined('Adminer\PAGE_HEADER')||$m=="-- "))echo$m.error()."\n";return$J;}function unique_array($K,array$x){foreach($x as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$J=array();foreach($w["columns"]as$y){if(!isset($K[$y]))continue 2;$J[$y]=$K[$y];}return$J;}}}function escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return idf_escape($y);}function where(array$Z,array$o=array()){$J=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,true);$d=escape_key($y);$n=idx($o,$y,array());$Xc=$n["type"];$J[]=$d.(JUSH=="sql"&&$Xc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Xc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($n,q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Xc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$y)$J[]=escape_key($y)." IS NULL";return implode(" AND ",$J);}function where_check($X,array$o=array()){parse_str($X,$Xa);remove_slashes(array(&$Xa));return where($Xa,$o);}function where_link($t,$d,$Y,$Lf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$Lf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function convert_fields(array$e,array$o,array$M=array()){$J="";foreach($e as$y=>$X){if($M&&!in_array(idf_escape($y),$M))continue;$ya=convert_field($o[$y]);if($ya)$J .=", $ya AS ".idf_escape($y);}return$J;}function cookie($C,$Y,$He=2592000){header("Set-Cookie: $C=".urlencode($Y).($He?"; expires=".gmdate("D, d M Y H:i:s",time()+$He)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function get_settings($Bb){parse_str($_COOKIE[$Bb],$Ih);return$Ih;}function get_setting($y,$Bb="adminer_settings"){$Ih=get_settings($Bb);return$Ih[$y];}function save_settings(array$Ih,$Bb="adminer_settings"){$Y=http_build_query($Ih+get_settings($Bb));cookie($Bb,$Y);$_COOKIE[$Bb]=$Y;}function restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function stop_session($hd=false){$kj=ini_bool("session.use_cookies");if(!$kj||$hd){session_write_close();if($kj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function auth_url($sj,$N,$V,$k=null){$gj=remove_from_uri(implode("|",array_keys(SqlDriver::$gc))."|username|ext|".($k!==null?"db|":"").($sj=='mssql'||$sj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$gj,$B);return"$B[1]?".(sid()?SID."&":"").($sj!="server"||$N!=""?urlencode($sj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($B[2]?"&$B[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($Ke,$bf=null){if($bf!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Ke!==null?$Ke:$_SERVER["REQUEST_URI"]))][]=$bf;}if($Ke!==null){if($Ke=="")$Ke=".";header("Location: $Ke");exit;}}function query_redirect($H,$Ke,$bf,$Tg=true,$Jc=true,$Sc=false,$zi=""){if($Jc){$Xh=microtime(true);$Sc=!connection()->query($H);$zi=format_time($Xh);}$Rh=($H?adminer()->messageQuery($H,$zi,$Sc):"");if($Sc){adminer()->error .=error().$Rh.script("messagesPrint();")."
";return false;}if($Tg)redirect($Ke,$bf.$Rh);return true;}class Queries{static$Og=array();static$Xh=0;}function queries($H){if(!Queries::$Xh)Queries::$Xh=microtime(true);Queries::$Og[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return connection()->query($H);}function apply_queries($H,array$T,$Fc='Adminer\table'){foreach($T as$R){if(!queries("$H ".$Fc($R)))return false;}return true;}function queries_redirect($Ke,$bf,$Tg){$Og=implode("\n",Queries::$Og);$zi=format_time(Queries::$Xh);return query_redirect($Og,$Ke,$bf,$Tg,false,!$Tg,$zi);}function format_time($Xh){return lang(0,max(0,microtime(true)-$Xh));}function relative_uri(){return str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function remove_from_uri($ig=""){return substr(preg_replace("~(?<=[?&])($ig".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function get_file($y,$Rb=false,$Wb=""){$Yc=$_FILES[$y];if(!$Yc)return null;foreach($Yc as$y=>$X)$Yc[$y]=(array)$X;$J='';foreach($Yc["error"]as$y=>$m){if($m)return$m;$C=$Yc["name"][$y];$Gi=$Yc["tmp_name"][$y];$yb=file_get_contents($Rb&&preg_match('~\.gz$~',$C)?"compress.zlib://$Gi":$Gi);if($Rb){$Xh=substr($yb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Xh))$yb=iconv("utf-16","utf-8",$yb);elseif($Xh=="\xEF\xBB\xBF")$yb=substr($yb,3);}$J .=$yb;if($Wb)$J .=(preg_match("($Wb\\s*\$)",$yb)?"":$Wb)."\n\n";}return$J;}function upload_error($m){$We=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(1).($We?" ".lang(2,$We):""):lang(3));}function repeat_pattern($sg,$z){return str_repeat("$sg{0,65535}",$z/65535)."$sg{0,".($z%65535)."}";}function is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function format_number($X){return strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function friendly_url($X){return preg_replace('~\W~i','-',$X);}function table_status1($R,$Tc=false){$J=table_status($R,$Tc);return($J?reset($J):array("Name"=>$R));}function column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$q){foreach($q["source"]as$X)$J[$X][]=$q;}return$J;}function fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$C=bracket_escape($y,true);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($y==driver()->primary),);}return$J;}function dump_headers($Pd,$lf=false){$J=adminer()->dumpHeaders($Pd,$lf);$eg=$_POST["output"];if($eg!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Pd).".$J".($eg!="file"&&preg_match('~^[0-9a-z]+$~',$eg)?".$eg":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function dump_csv(array$K){foreach($K as$y=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$y]='"'.str_replace('"','""',$X).'"';}echo implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function apply_sql_function($s,$d){return($s?($s=="unixepoch"?"DATETIME($d, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$d)"):$d);}function get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$p=@tempnam("","");if(!$p)return'';$J=dirname($p);unlink($p);}}return$J;}function file_open_lock($p){if(is_link($p))return;$r=@fopen($p,"c+");if(!$r)return;chmod($p,0660);if(!flock($r,LOCK_EX)){fclose($r);return;}return$r;}function file_write_unlock($r,$Lb){rewind($r);fwrite($r,$Lb);ftruncate($r,strlen($Lb));file_unlock($r);}function file_unlock($r){flock($r,LOCK_UN);fclose($r);}function first(array$xa){return reset($xa);}function password_file($i){$p=get_temp_dir()."/adminer.key";if(!$i&&!file_exists($p))return'';$r=file_open_lock($p);if(!$r)return'';$J=stream_get_contents($r);if(!$J){$J=rand_string();file_write_unlock($r,$J);}else file_unlock($r);return$J;}function rand_string(){return md5(uniqid(strval(mt_rand()),true));}function select_value($X,$A,array$n,$yi){if(is_array($X)){$J="";foreach($X as$se=>$W)$J .="".($X!=array_values($X)?"".h($se):"")."".select_value($W,$A,$n,$yi);return"$J
";}if(!$A)$A=adminer()->selectLink($X,$n);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$J=adminer()->editVal($X,$n);if($J!==null){if(!is_utf8($J))$J="\0";elseif($yi!=""&&is_shortable($n))$J=shorten_utf8($J,max(0,+$yi));else$J=h($J);}return adminer()->selectVal($J,$A,$n,$X);}function is_mail($tc){$za='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$fc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$sg="$za+(\\.$za+)*@($fc?\\.)+$fc";return is_string($tc)&&preg_match("(^$sg(,\\s*$sg)*\$)i",$tc);}function is_url($Q){$fc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return preg_match("~^(https?)://($fc?\\.)+$fc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function is_shortable(array$n){return preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$n["type"]);}function count_rows($R,array$Z,$me,array$vd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($me&&(JUSH=="sql"||count($vd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$vd).")$H":"SELECT COUNT(*)".($me?" FROM (SELECT 1$H GROUP BY ".implode(", ",$vd).") x":$H));}function slow_query($H){$k=adminer()->database();$_i=adminer()->queryTimeout();$Mh=driver()->slowQuery($H,$_i);$h=null;if(!$Mh&&support("kill")){$h=connect();if($h&&($k==""||$h->select_db($k))){$ve=get_val(connection_id(),0,$h);echo script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$ve&token=".get_token()."'); }, 1000 * $_i);");}}ob_flush();flush();$J=@get_key_vals(($Mh?:$H),$h,false);if($h){echo script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function get_token(){$Rg=rand(1,1e6);return($Rg^$_SESSION["token"]).":$Rg";}function verify_token(){list($Hi,$Rg)=explode(":",$_POST["token"]);return($Rg^$_SESSION["token"])==$Hi;}function lzw_decompress($Ka){$bc=256;$La=8;$gb=array();$eh=0;$fh=0;for($t=0;$t=$La){$fh-=$La;$gb[]=$eh>>$fh;$eh&=(1<<$fh)-1;$bc++;if($bc>>$La)$La++;}}$ac=range("\0","\xFF");$J="";$Bj="";foreach($gb as$t=>$fb){$sc=$ac[$fb];if(!isset($sc))$sc=$Bj.$Bj[0];$J .=$sc;if($t)$ac[]=$Bj.$sc[0];$Bj=$sc;}return$J;}function script($Oh,$Ki="\n"){return"$Oh$Ki";}function script_src($hj,$Tb=false){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function input_hidden($C,$Y=""){return"\n";}function input_token(){return input_hidden("token",get_token());}function target_blank(){return' target="_blank" rel="noreferrer noopener"';}function h($Q){return str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function nl_br($Q){return str_replace("\n","
",$Q);}function checkbox($C,$Y,$ab,$xe="",$Kf="",$eb="",$ze=""){$J="".($Kf?script("qsl('input').onclick = function () { $Kf };",""):"");return($xe!=""||$eb?"$J".h($xe)."":$J);}function optionlist($Pf,$xh=null,$lj=false){$J="";foreach($Pf as$se=>$W){$Qf=array($se=>$W);if(is_array($W)){$J .='';$Qf=$W;}foreach($Qf as$y=>$X)$J .=''.h($X);if(is_array($W))$J .='';}return$J;}function html_select($C,array$Pf,$Y="",$Jf="",$ze=""){static$xe=0;$ye="";if(!$ze&&substr($Pf[""],0,1)=="("){$xe++;$ze="label-$xe";$ye="

","$Fe",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","