diff --git a/public/adminer-core.php b/public/adminer-core.php new file mode 100644 index 0000000..4b44645 --- /dev/null +++ b/public/adminer-core.php @@ -0,0 +1,4302 @@ +credentials();$I=Driver::connect($Vb[0],$Vb[1],$Vb[2]);return(is_object($I)?$I:null);}function +idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$Jf=substr($u,-1);return +str_replace($Jf.$Jf,$Jf,substr($u,1,-1));}function +q($Q){return +connection()->quote($Q);}function +idx($Ba,$x,$k=null){return($Ba&&array_key_exists($x,$Ba)?$Ba[$x]:$k);}function +number($X){return +preg_replace('~[^0-9]+~','',$X);}function +int_type(){return'(tiny|small|medium|big)?int(eger|\d)?';}function +number_type(){return'(^('.int_type().'|decimal|numeric|number|real|(binary_|half_|scaled_)?float\d?|(binary_)?double( precision)?|(small)?money)$)';}function +text_type(){return'char|text'.(JUSH=="sql"?'|enum|set':'');}function +is_searchable(array$m,array$X){if(!isset($m["privileges"]["where"]))return +false;$U=$m["type"];$Dj=$X["val"];$Sa='binary$|bytea|raw|image|bfile|^vector$'.(JUSH=="mssql"?'|^timestamp$':'|^bit').(JUSH=="oracle"?'|^blob|^long|rowid':'');if(preg_match("~$Sa~",$U))return +false;if(preg_match(number_type(),$U)){$ih='-?\d+(\.\d+)?';return(bool)preg_match('~^'.$ih.(preg_match('~IN$~',$X["op"])?"( *, *$ih)*":'').'$~',$Dj);}if(preg_match('~^(small)?date|^timestamp~',$U))return(bool)preg_match('~^\d+-\d+-\d+~',$Dj);if(preg_match('~^time~',$U))return(bool)preg_match('~^\d+:\d+~',$Dj);if(preg_match('~^bool~',$U)||(JUSH=="mssql"&&$U=="bit"))return(bool)preg_match('~^(t|f|true|false|[01])$~i',$Dj);return +true;}function +remove_slashes(array$em,$Fd=false){$I=array();foreach($em +as$x=>$X)$I[stripslashes($x)]=(is_array($X)?remove_slashes($X,$Fd):($Fd?$X:stripslashes($X)));return$I;}function +bracket_escape($u,$La=false){static$ol=array(':'=>':1',']'=>':2','['=>':3','"'=>':4','='=>':5');return +strtr($u,($La?array_flip($ol):$ol));}function +url_escape($Q){static$ol=array();if(!$ol){$ol=array(' '=>'+');foreach(str_split("\"'<>#%&+=?".ini_get("arg_separator.input"))as$eb)$ol[$eb]=sprintf('%%%02X',ord($eb));for($s=0;$s<256;$s++){if($s<32||$s>126)$ol[chr($s)]=sprintf('%%%02X',$s);}}return +strtr((string)$Q,$ol);}function +min_version($hm,$eg="",$g=null){$g=connection($g);$Sj=$g->server_info;if($eg&&preg_match('~([\d.]+)-MariaDB~',$Sj,$A)){$Sj=$A[1];$hm=$eg;}return$hm&&version_compare($Sj,$hm)>=0;}function +charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function +ini_set($Fh,$Y){return(function_exists('ini_set')?\ini_set($Fh,$Y):false);}function +ini_bool($df){$X=ini_get($df);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function +ini_bytes($df){$X=ini_get($df);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function +max_input_vars($J,$Uh){$ig=(int)ini_get("max_input_vars");return($ig?(int)floor(($ig-$Uh)/$J):0);}function +max_input_vars_error(){$df="max_input_vars";return +lang(0,"$df = ".ini_get($df)."");}function +sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function +set_password($gm,$N,$V,$E){$_SESSION["pwds"][$gm][$N][$V]=($_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,$m=0,$Gb=null){$Gb=connection($Gb);$H=$Gb->query($G);if(!is_object($H))return +false;$J=$H->fetch_row();return($J?$J[$m]: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,$Vj=true){$g=connection($g);$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($Vj)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function +get_rows($G,$g=null,$l="

"){$Gb=connection($g);$I=array();$H=$Gb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.adminer()->error()."\n";return$I;}function +unique_array($J,array$w){foreach($w +as$v){if(preg_match("~^(PRIMARY|UNIQUE)$~",$v["type"])&&!$v["partial"]){$I=array();foreach($v["columns"]as$x){if(!isset($J[$x]))continue +2;$I[$x]=$J[$x];}return$I;}}}function +escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return +idf_escape($x);}function +where(array$Z,array$n=array()){$I=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$_d=$m["type"];$pf=$m&&(is_blob($m)||preg_match('~binary~',$_d));$I[]=$d.($pf&&!is_utf8($X)?" = ".driver()->quoteBinary($X):(JUSH=="sql"&&$_d=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$m["full_type"])?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($_d,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))))));if(JUSH=="sql"&&preg_match('~char|text~',$_d)&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$I[]=escape_key($x)." IS NULL";return +implode(" AND ",$I);}function +where_columns(array$n){$I=array();foreach((array)$_GET["null"]as$x)$I[$x]=true;foreach((array)$_GET["where"]as$x=>$X){$x=bracket_escape($x,true);foreach($n +as$C=>$m){if($x==$C||strpos($x,idf_escape($C))!==false)$I[$C]=true;}}return$I;}function +where_check($X,array$n=array()){parse_str($X,$hb);remove_slashes(array(&$hb));return +where($hb,$n);}function +where_link($s,$d,$Y,$Ch="="){$_h=($Y!==null?$Ch:"IS NULL");return"&where[$s][col]=".url_escape($d).($_h!=first(adminer()->operators())?"&where[$s][op]=".url_escape($_h):"")."&where[$s][val]=".url_escape($Y);}function +convert_fields(array$e,array$n,array$M=array()){$I="";foreach($e +as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$Ca=convert_field($n[$x]);if($Ca)$I +.=", $Ca AS ".idf_escape($x);}return$I;}function +cookie_path(){return +strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),array(";"=>"%3B",","=>"%2C"));}function +cookie($C,$Y,$Tf=2592000){header("Set-Cookie: $C=".rawurlencode($Y).($Tf?"; expires=".gmdate("D, d M Y H:i:s",time()+$Tf)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"").($C=="adminer_import"?"":"; HttpOnly")."; SameSite=lax",false);}function +get_url($Pl,$Nb){$http_response_header=null;$bd=array();set_error_handler(function($ad,$l)use(&$bd){$bd[]=preg_replace('~^file_get_contents\([^)]*\):\s*~','',$l);return +true;});$I=file_get_contents($Pl,false,$Nb);restore_error_handler();$xe=(function_exists('http_get_last_response_headers')?http_get_last_response_headers():$http_response_header);return +array($I,(preg_match('~^HTTP/[\d.]+ (\d+)~',idx($xe,0,''),$A)?$A[1]:''),(array)$xe,($I===false?implode("\n",$bd):''),);}function +get_settings($Qb){parse_str($_COOKIE[$Qb],$Wj);return$Wj;}function +get_setting($x,$Qb="adminer_settings",$k=null){return +idx(get_settings($Qb),$x,$k);}function +save_settings(array$Wj,$Qb="adminer_settings"){$Y=http_build_query($Wj+get_settings($Qb));cookie($Qb,$Y);$_COOKIE[$Qb]=$Y;}function +restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==PHP_SESSION_NONE))session_start();}function +stop_session($Od=false){$Sl=ini_bool("session.use_cookies");if(!$Sl||$Od){session_write_close();if($Sl&&ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function +set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function +auth_url($gm,$N,$V,$j=null){$Ol=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($gm=='mssql'||$gm=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Ol,$A);return"$A[1]?".(sid()?SID."&":"").($_GET["ext"]?"ext=".url_escape($_GET["ext"])."&":"").($gm!="server"||$N!=""?url_escape($gm)."=".url_escape($N)."&":"")."username=".url_escape($V).($j!=""?"&db=".url_escape($j):"").($A[2]?"&$A[2]":"");}function +is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function +redirect($ag,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($ag!==null?$ag:$_SERVER["REQUEST_URI"]))][]=$B;}if($ag!==null){if($ag=="")$ag=".";header("Location: $ag");exit;}}function +query_redirect($G,$ag,$B,$aj=true,$jd=true,$ud=false,$bl=""){if($jd){$qk=microtime(true);$ud=!connection()->query($G);$bl=format_time($qk);}$jk=($G?adminer()->messageQuery($G,$bl,$ud):"");if($ud){adminer()->error +.=adminer()->error().$jk.script("messagesPrint();")."
";return +false;}if($aj)redirect($ag,$B.$jk);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$T,$dd='Adminer\table'){foreach($T +as$R){if(!queries("$G ".$dd($R)))return +false;}return +true;}function +queries_redirect($ag,$B,$aj){$Ui=implode("\n",Queries::$queries);$bl=format_time(Queries::$start);return +query_redirect($Ui,$ag,$B,$aj,false,!$aj,$bl);}function +format_time($qk){return +lang(1,max(0,microtime(true)-$qk));}function +relative_uri($Ol=''){return +preg_replace_callback('~^[^?]*~',function($A){return +str_replace(":","%3A",$A[0]);},preg_replace('~^[^?]*/([^?]*)~','\1',($Ol?:$_SERVER["REQUEST_URI"])));}function +remove_from_uri($bi=""){return +substr(preg_replace("~(?<=[?&])($bi".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function +get_files($C,$jc=false){$Bd=$_FILES[$C];if(!$Bd)return +null;foreach($Bd +as$x=>$X)$Bd[$x]=(array)$X;$I=array();foreach($Bd["error"]as$x=>$l){if($l)return$l;$o=$Bd["name"][$x];$jl=$Bd["tmp_name"][$x];$Lb=file_get_contents($jc&&preg_match('~\.gz$~',$o)?"compress.zlib://$jl":$jl);if($jc){$qk=substr($Lb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$qk))$Lb=iconv("utf-16","utf-8",$Lb);elseif($qk=="\xEF\xBB\xBF")$Lb=substr($Lb,3);}$I[]=array($o,$Lb);}return$I;}function +get_file($x,$jc=false,$pc=""){$Ed=get_files($x,$jc);if(!is_array($Ed))return$Ed;$I='';foreach($Ed +as$Bd){$Lb=$Bd[1];$I +.=$Lb;if($pc)$I +.=(preg_match("($pc\\s*\$)",$Lb)?"":$pc)."\n\n";}return$I;}function +upload_error($l){$qg=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?lang(2).($qg?" ".lang(3,$qg):""):lang(4));}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(5)),preg_split('~~u',lang(6),-1,PREG_SPLIT_NO_EMPTY));}function +format_status(array$S,$x){$X=idx($S,$x,'?');if(!is_numeric($X))return +h($X);if($X<0)return'?';$za=($x=="Rows"&&(JUSH=="sqlite"||$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")));return($za?"~ ":"").format_number($X);}function +friendly_url($X){return +preg_replace('~\W~i','-',$X);}function +table_status1($R,$vd=false){$I=table_status($R,$vd);return($I?reset($I):array("Name"=>$R));}function +column_foreign_keys($R){$I=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$I[$X][]=$p;}return$I;}function +fields_from_edit(){$I=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$I[$C]=array("field"=>$C,"full_type"=>"","type"=>"","privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>true,"auto_increment"=>($C==driver()->primary),);}return$I;}function +dump_headers($Ie,$Ng=false){$I=adminer()->dumpHeaders($Ie,$Ng);$Wh=$_POST["output"];if($Wh!="text"||$I=="tar"){$Cb=($Wh!="text"&&$Wh!="file"&&preg_match('~^[0-9a-z]+$~',$Wh)?".$Wh":"");header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Ie).".$I$Cb");}session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$I;}function +dump_csv(array$J){$zl=$_POST["format"]=="tsv";foreach($J +as$x=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($zl?'\t':'[,;]|^$').'~',$X))$J[$x]='"'.str_replace('"','""',$X).'"';}echo +implode(($_POST["format"]=="csv"?",":($zl?"\t":";")),$J)."\r\n";}function +parse_csv($Yb,$Lj){$I=array();preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Yb,$gg);foreach($gg[0]as$J){preg_match_all("~((?>\"[^\"]*\")+|[^$Lj]*)$Lj~",$J.$Lj,$hg);$I[]=$hg[1];}return$I;}function +csv_value($X){return(preg_match('~^".*"$~s',$X)?str_replace('""','"',substr($X,1,-1)):$X);}function +apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function +get_temp_dir(){return +ini_get("upload_tmp_dir")?:sys_get_temp_dir();}function +file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;@chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function +file_write_unlock($q,$cc){rewind($q);fwrite($q,$cc);ftruncate($q,strlen($cc));file_unlock($q);}function +file_unlock($q){flock($q,LOCK_UN);fclose($q);}function +first(array$Ba){return +reset($Ba);}function +password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$I=stream_get_contents($q);if(!$I){$I=rand_string();file_write_unlock($q,$I);}else +file_unlock($q);return$I;}function +rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function +select_value($X,$_,array$m,$Zk){if(is_array($X)){$I="";if(array_filter($X,'is_array')==array_values($X)){$Af=array();foreach($X +as$W)$Af+=array_fill_keys(array_keys($W),null);foreach(array_keys($Af)as$zf)$I +.="".h($zf);foreach($X +as$W){$I +.="";foreach(array_merge($Af,$W)as$Zl)$I +.="".select_value($Zl,$_,$m,$Zk);}}else{foreach($X +as$zf=>$W)$I +.="".($X!=array_values($X)?"".h($zf):"")."".select_value($W,$_,$m,$Zk);}return"$I
";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$X=driver()->value($X,$m);$I=adminer()->editVal($X,$m);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Zk!=""&&is_shortable($m))$I=shorten_utf8($I,max(0,+$Zk));else$I=h($I);}return +adminer()->selectVal($I,$_,$m,$X);}function +is_blob(array$m){return +preg_match('~blob|bytea|raw|file'.(JUSH=="mssql"?'|binary|image':'').'~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),lang(7),array()));}function +is_mail($Rc){$Ea='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$si="$Ea+(\\.$Ea+)*@($Ec?\\.)+$Ec";return +is_string($Rc)&&preg_match("(^$si(,\\s*$si)*\$)i",$Rc);}function +is_url($Q){$Ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return +preg_match("~^((https?):)?//($Ec?\\.)+$Ec(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function +is_shortable(array$m){return!preg_match('~'.number_type().'|date|time|year~',$m["type"]);}function +host_port($N){return(preg_match('~^(:([^:].*)|(\[(.+)\]|(([^:]+://)?[^:]+))(:(\d+))?)$~',$N,$A)?array($A[4].$A[5],$A[2].$A[8]):array($N,''));}function +count_rows($R,array$Z,$qf,array$ge){$G=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($qf&&(JUSH=="sql"||count($ge)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$ge).")$G":"SELECT COUNT(*)".($qf?" FROM (SELECT 1$G GROUP BY ".implode(", ",$ge).") x":$G));}function +slow_query($G){$j=adminer()->database();$cl=adminer()->queryTimeout();$bk=driver()->slowQuery($G,$cl);$g=null;if(!$bk&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$Bf=get_val(connection_id(),0,$g);echo +script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Bf&token=".get_token()."'); }, 1000 * $cl);");}}ob_flush();flush();$I=@get_key_vals(($bk?:$G),$g,false);if($g){echo +script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function +get_token(){$Xi=rand(1,1e6);return($Xi^$_SESSION["token"]).":$Xi";}function +verify_token(){list($kl,$Xi)=explode(":",$_POST["token"]);return($Xi^$_SESSION["token"])==$kl&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"));}function +compress_alphabet(){return +strtr(implode(range('"','~')),"'\\","!\n");}function +decompress_string($Q,$vc=""){$xa=array_flip(str_split(compress_alphabet()));$y=strlen($Q);$cm=($y?13*($y-1)/2-$xa[$Q[0]]:0);$Sa="";$nj=0;$oj=0;for($s=1;$s<$y;$s+=2){$nj=($nj<<13)+$xa[$Q[$s]]*93+$xa[$Q[$s+1]];$oj+=13;while($oj>=8&&$cm>=8){$oj-=8;$cm-=8;$Sa +.=chr($nj>>$oj);$nj&=(1<<$oj)-1;}}if($Sa=="")return"";if($vc!=""&&function_exists('inflate_init'))return +inflate_add(inflate_init(ZLIB_ENCODING_RAW,array('dictionary'=>$vc)),$Sa,ZLIB_FINISH);return($vc==""&&function_exists('gzinflate')?gzinflate($Sa):inflate($Sa,$vc));}function +inflate($Sa,$vc=""){$Qf=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);$Rf=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);$zc=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);$Ac=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=$vc;$F=0;do{$Gd=inflate_bits($Sa,$F,1);$U=inflate_bits($Sa,$F,2);if(!$U){$F=($F+7)&~7;$y=inflate_bits($Sa,$F,16);$F+=16;$I +.=substr($Sa,$F>>3,$y);$F+=$y<<3;}else{if($U==1){$Yf=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$Bc=array_fill(0,30,5);}else{$Xf=inflate_bits($Sa,$F,5)+257;$_c=inflate_bits($Sa,$F,5)+1;$Ih=array(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);$Cg=array_fill(0,19,0);$Bg=inflate_bits($Sa,$F,4)+4;for($s=0;$s<$Bg;$s++)$Cg[$Ih[$s]]=inflate_bits($Sa,$F,3);$Dg=inflate_table($Cg);$Sf=array();while(count($Sf)<$Xf+$_c){$Ak=inflate_symbol($Sa,$F,$Dg);if($Ak==16)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,2)+3,end($Sf)));elseif($Ak==17)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,3)+3,0));elseif($Ak==18)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,7)+11,0));else$Sf[]=$Ak;}$Yf=array_slice($Sf,0,$Xf);$Bc=array_slice($Sf,$Xf);}$Zf=inflate_table($Yf);$Dc=inflate_table($Bc);while(($Ak=inflate_symbol($Sa,$F,$Zf))!=256){if($Ak<256)$I +.=chr($Ak);else{$y=$Qf[$Ak-257]+inflate_bits($Sa,$F,$Rf[$Ak-257]);$Cc=inflate_symbol($Sa,$F,$Dc);$ph=strlen($I)-$zc[$Cc]-inflate_bits($Sa,$F,$Ac[$Cc]);for($s=0;$s<$y;$s++)$I +.=$I[$ph+$s];}}}}while(!$Gd);return($vc==""?$I:substr($I,strlen($vc)));}function +inflate_bits($Sa,&$F,$Sb){$I=0;for($s=0;$s<$Sb;$s++){$I+=((ord($Sa[$F>>3])>>($F&7))&1)<<$s;$F++;}return$I;}function +inflate_table(array$Sf){$R=array();$rb=0;for($Ta=1;$Ta<=max($Sf);$Ta++){foreach($Sf +as$Ak=>$y){if($y==$Ta){$R[$Ta][$rb]=$Ak;$rb++;}}$rb<<=1;}return$R;}function +inflate_symbol($Sa,&$F,array$R){$rb=0;$Ta=0;do{$rb=($rb<<1)+inflate_bits($Sa,$F,1);$Ta++;}while(!isset($R[$Ta][$rb]));return$R[$Ta][$rb];}function +script($fk,$nl="\n"){return"$fk$nl";}function +script_src($Pl,$mc=false){return"\n";}function +nonce(){return' nonce="'.get_nonce().'"';}function +on($ed,$oe,$_a=null){$Aa=array();foreach(array_slice(func_get_args(),2)as$X)$Aa[]=json_encode($X,256);return" data-on$ed='".str_replace(array('&','<',"'"),array('&','<','''),"$oe(".implode(", ",$Aa).")")."'";}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(array('&','<','"',"'","\0"),array('&','<','"',''','�'),$Q);}function +nl_br($Q){return +str_replace("\n","
",$Q);}function +checkbox($C,$Y,$kb,$Ff="",$c="",$pb="",$Hf=""){$I="";return($Ff!=""?"$I".h($Ff)."":$I);}function +optionlist($Gh,$Ij=null,$Tl=false){$I="";foreach($Gh +as$zf=>$W){$Hh=array($zf=>$W);if(is_array($W)){$I +.='';$Hh=$W;}foreach($Hh +as$x=>$X)$I +.=''.h($X);if(is_array($W))$I +.='';}return$I;}function +html_select($C,array$Gh,$Y="",$c="",$Hf=""){static$Ff=0;$Gf="";if(!$Hf&&substr($Gh[""],0,1)=="("){$Ff++;$Hf="label-$Ff";$Gf="

","$Pf","","
\n";}function +selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",lang(63),$Z);foreach($w +as$s=>$v){if($v["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$v["columns"])).") AGAINST"," ",(JUSH=='sql'?checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"):''),"
\n";}$Dh=adminer()->operators();foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$Dh)))echo"
".select_input(" name='where[$s][col]' data-default=''".on('change',($X?'selectFieldChange':'selectAddRow')),$e,$X["col"],"(".lang(64).")"),html_select("where[$s][op]",$Dh,$X["op"]," data-default='".h(first($Dh))."'".on('change','selectFirstChange')),"","
\n";}echo"\n";}function +selectOrderPrint(array$Ih,array$e,array$w){print_fieldset("sort",lang(65),$Ih);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"
".select_input(" name='order[$s]' data-default=''".on('change','selectFieldChange'),$e,$X),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),lang(66))."
\n";$s++;}}echo"
".select_input(" name='order[$s]' data-default=''".on('change','selectAddRow'),$e),checkbox("desc[$s]",1,false,lang(66))."
\n","\n";}function +selectLimitPrint($z){echo"
".lang(67)."
","","
\n";}function +selectLengthPrint($Zk){echo"
".lang(68)."
","","
\n";}function +selectActionPrint(array$w){echo"
".lang(69)."
",""," ","\n","const indexColumns = ";$e=array();foreach($w +as$v){$ac=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$ac)$e[$ac]=1;}$e[""]=1;foreach($e +as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function +selectCommandPrint(){return!information_schema(DB);}function +selectImportPrint(){return!information_schema(DB);}function +selectEmailPrint(array$Sc,array$e){}function +selectColumnsProcess(array$e,array$w){$M=array();$ge=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$ge[]=$M[$x];}}return +array($M,$ge);}function +selectSearchProcess(array$n,array$w){$I=array();foreach($w +as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$I[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}$Dh=adminer()->operators();foreach((array)$_GET["where"]as$x=>$X){$X+=array("col"=>"","op"=>first($Dh),"val"=>"");$_GET["where"][$x]=$X;$sb=$X["col"];if("$sb$X[val]"!=""&&in_array($X["op"],$Dh)){if($X["op"]=="SQL"&&(!$_POST||!verify_token()))SqlDb::$untrusted=true;$Eb=array();foreach(($sb!=""?array($sb=>$n[$sb]):$n)as$C=>$m){$Gi="";$Db=" $X[op]";if(preg_match('~IN$~',$X["op"]))$Db +.=" ".($X["val"]!=""?process_in($X["val"]):"(NULL)");elseif($X["op"]=="SQL")$Db=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$Db=" $A[1] ".q("%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Gi="$X[op](".q($X["val"]).", ";$Db=")";}elseif(!preg_match('~NULL$~',$X["op"]))$Db +.=" ".q($X["val"]);if($sb!=""||is_searchable($m,$X))$Eb[]=$Gi.driver()->convertSearch(idf_escape($C),$X,$m).$Db;}$I[]=(count($Eb)==1?$Eb[0]:($Eb?"(".implode(" OR ",$Eb).")":"1 = 0"));}}return$I;}function +selectOrderProcess(array$n,array$w){$I=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC".(JUSH=='pgsql'&&idx($n[$X],"null")?" NULLS LAST":""):"");}return$I;}function +selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function +selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function +selectEmailProcess(array$Z,array$Qd){return +false;}function +selectQueryBuild(array$M,array$Z,array$ge,array$Ih,$z,$D){return"";}function +messageQuery($G,$bl,$ud=false){restart_session();$Be=&get_session("queries");if(!idx($Be,$_GET["db"]))$Be[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$Be[$_GET["db"]][]=array($G,time(),$bl);$lk="sql-".count($Be[$_GET["db"]]);$I="".lang(71)." ".copy_icon()."\n";if(!$ud&&($nm=driver()->warnings())){$t="warnings-".count($Be[$_GET["db"]]);$I="".lang(53).", $I\n";}return" ".@date("H:i:s").""." $I';}function +error(){return +error();}function +editRowPrint($R,array$n,$J,$Ll,$G='',$bl=''){echo($G!=""?"

".h(str_replace("\n"," ",$G))." ($bl)\n":"");}function +editFunctions(array$m){$I=($m["null"]?"NULL/":"");$ue=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$ae){if(!$x||(!isset($_GET["call"])&&$ue)){foreach($ae +as$si=>$X){if(!$si||preg_match("~$si~",$m["type"]))$I +.="/$X";}}if($x&&$ae&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$I +.="/SQL";}if($m["auto_increment"]&&!$ue)$I=lang(58);return +explode("/",$I);}function +editInput($R,array$m,$c,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$c,$m,$Y,"NULL");return"";}function +editHint($R,array$m,$Y){return"";}function +processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$I="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$I=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$I=idf_escape($C)." $r $I";elseif(preg_match('~^[+-] interval$~',$r))$I=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$I="$r(".idf_escape($C).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$I="$r($I)";return +unconvert_field($m,$I);}function +dumpOutput(){$I=array('text'=>lang(72),'file'=>lang(73));if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function +dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function +dumpPrint(){}function +dumpDatabase($j){}function +dumpTable($R,$vk,$uf=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($vk)dump_csv(array_keys(fields($R)));}else{if($uf==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$vk);set_utf8mb4($h);if($vk&&$h){if(($vk=="DROP+CREATE"&&!function_exists('Adminer\drop_sql'))||$uf==1)echo"DROP ".($uf==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($uf==1)$h=remove_definer($h);echo"$h;\n\n";}}}function +dumpData($R,$vk,$G,array$M=array(),array$Z=array(),array$ge=array(),array$Ih=array()){if($vk){$mg=(JUSH=="sqlite"?0:1048576);$n=array();$Ke=false;if($_POST["format"]=="sql"){if($vk=="TRUNCATE+INSERT"&&!function_exists('Adminer\truncate_all_sql'))echo +truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n +as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Ke=true;break;}}}}$H=($G!=""?connection()->query($G,1):driver()->select($R,($M?:array("*")),$Z,$ge,$Ih,0));if($H){$gf="";$Xa="";$Af=array();$be=array();$xk="";$xd=($R!=''?'fetch_assoc':'fetch_row');$Sb=0;while($J=$H->$xd()){if(!$Af){$em=array();foreach($J +as$X){$m=$H->fetch_field();if(idx($n[$m->name],'generated')){$be[$m->name]=true;continue;}$Af[]=$m->name;$x=idf_escape($m->name);$em[]="$x = VALUES($x)";}$xk=($vk=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$em):"").";\n";}if($_POST["format"]!="sql"){if($vk=="table"){dump_csv($Af);$vk="INSERT";}dump_csv($J);}else{if(!$gf)$gf="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Af)).") VALUES";foreach($J +as$x=>$X){if($be[$x]){unset($J[$x]);continue;}$m=$n[$x];$J[$x]=($X===null?"NULL":($X===false?0:unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:(!is_blob($m)||is_utf8($X)?q($X):driver()->quoteBinary($X)))));}$zj=($mg?"\n":" ")."(".implode(",\t",$J).")";if(!$Xa)$Xa=$gf.$zj;elseif(JUSH=='mssql'?$Sb%1000!=0:strlen($Xa)+4+strlen($zj)+strlen($xk)<$mg)$Xa +.=",$zj";else{echo$Xa.$xk;$Xa=$gf.$zj;}}$Sb++;}if($Xa)echo$Xa.$xk;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Ke)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function +dumpFilename($Ie){return +friendly_url($Ie!=""?$Ie:(SERVER?:"localhost"));}function +dumpHeaders($Ie,$Ng=false){$Wh=$_POST["output"];$pd=(preg_match('~sql~',$_POST["format"])?"sql":($Ng?"tar":"csv"));header("Content-Type: ".($Wh=="gz"?"application/x-gzip":($pd=="tar"?"application/x-tar":($pd=="sql"||$Wh!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Wh=="gz"){ob_start(function($Q){return +gzencode($Q);},1e6);}return$pd;}function +dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function +importServerPath(){return"adminer.sql";}function +importPrint(){}function +importProcess(){return +false;}function +homepage(){echo'

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

\n";switch_lang();if($Hg=="auth"){$Wh="";foreach((array)$_SESSION["pwds"]as$gm=>$Tj){foreach($Tj +as$N=>$Yl){$C=h(get_setting("vendor-$gm-$N")?:get_driver($gm));foreach($Yl +as$V=>$E){if($C&&$E!==null){$ic=$_SESSION["db"][$gm][$N][$V];foreach(($ic?array_keys($ic):array(""))as$j)$Wh +.="
  • ($C) ".h("$V@").($N!=""?adminer()->serverName($N):"").h($j!=""?" - $j":"")."\n";}}}}if($Wh)echo"
      \n$Wh
    \n";}else{$T=array();if($_GET["ns"]!==""&&!$Hg&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Hg);$la=array();if(DB==""||!$Hg){if(support("sql")){$la['sql']="".lang(71)."";$la['import']="".lang(82)."";}$la['dump']="".lang(83)."";}$Pe=$_GET["ns"]!==""&&!$Hg&&DB!="";if($Pe&&function_exists('Adminer\alter_table'))$la['create']='".lang(84)."";$la=adminer()->menuActions($la,$Hg);echo($la?"

    ".lang(12)."

    \n";}}}function +syntaxHighlighting(array$T){echo +script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=6.0.1",true);$Jg=preg_replace('~<(?=/script)~i','<\\',Driver::jushModule());echo($Jg?script("addEventListener('DOMContentLoaded', () => {\n$Jg\n});"):"");if(support("sql")){echo"\n";if($T){$Wf=array();foreach($T +as$R=>$U)$Wf[]=js_escape_re($R);echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b(? { autocompleter = $Ia; });\n":"");}}echo"\n";}echo +script("syntaxHighlighting('".(preg_match('~^\d\.?\d~',connection()->server_info,$A)?$A[0]:"")."', '".connection()->flavor."');");}function +databasesPrint($Hg){if(support("single_db"))return;$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"
    \n

    \n";hidden_fields_get();$gc=on('mousedown','dbMouseDown').on('change','dbChange');echo"","\n";if(support("scheme")){if($Hg!="db"&&DB!=""&&connection()->select_db(DB)){echo"
    ";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo +input_hidden($X);break;}}echo"

    \n";}function +menuActions(array$la,$Hg){return$la;}function +tablesPrint(array$T){echo"
      ";foreach($T +as$R=>$P){$R="$R";$C=adminer()->tableName($P);if($C!=""&&!$P["partition"])echo'
    • ".lang(87)." ",(support("table")||support("indexes")?'$C":"$C")."\n";}echo"
    \n";}function +showVariables(){return +show_variables();}function +showStatus(){return +show_status();}function +processList(){return +process_list();}function +killProcess($t){return +kill_process($t);}}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($zi){$Gc=SqlDriver::$drivers;$_e=" href='https://www.adminer.org/plugins/#use'".target_blank();if($zi===null){$zi=array();$Qa="adminer-plugins";if(is_dir($Qa)){foreach(glob("$Qa/*.php")as$o){$Cd=SqlDriver::$drivers;$this->includeOnce($o);foreach(array_diff_key(SqlDriver::$drivers,$Cd)as$t=>$C)$this->driverFiles[$t]=$o;}}if(file_exists("$Qa.php")){$Re=$this->includeOnce("$Qa.php");if(is_array($Re)){foreach($Re +as$x=>$wi)$zi[is_object($wi)?get_class($wi):$x]=$wi;}else$this->error +.=lang(88,"$Qa.php",$_e)."
    ";}foreach(get_declared_classes()as$pb){if(!$zi[$pb]&&(preg_match('~^Adminer\w~i',$pb)||is_subclass_of($pb,'Adminer\Plugin'))){$fj=new +\ReflectionClass($pb);$Kb=$fj->getConstructor();if($Kb&&$Kb->getNumberOfRequiredParameters())$this->error +.=lang(89,$_e,"$pb","$Qa.php")."
    ";else$zi[$pb]=new$pb;}}}$lf=array_filter($zi,function($wi){return!is_object($wi);});if($lf){$this->error +.=lang(90,$_e)."
    ";$zi=array_diff_key($zi,$lf);}$this->drivers=array_diff_key(SqlDriver::$drivers,$Gc);$this->plugins=$zi;$pa=new +Adminer;$zi[]=$pa;$fj=new +\ReflectionObject($pa);foreach($fj->getMethods()as$Eg){foreach($zi +as$wi){$C=$Eg->getName();if(method_exists($wi,$C))$this->hooks[$C][]=$wi;}}}function +includeOnce($o){return +include_once"./$o";}static +function +checksum($o){$Bd=str_replace("\r","",file_get_contents($o));$Bd=preg_replace('~\n\tprotected \$translations = array\(.*?\n\t\);~s','',$Bd);return +dechex(crc32($Bd));}function +checksums(){$Dd=array_values($this->driverFiles);foreach($this->plugins +as$wi){$fj=new +\ReflectionObject($wi);$Dd[]=$fj->getFileName();}$I=array();foreach($Dd +as$o)$I[basename($o,'.php')]=self::checksum($o);return$I;}static +function +officialChecksums(){return +array('adminer.js'=>'a0599090','backward-keys'=>'ed1ef78f','before-unload'=>'2a613523','config'=>'722eb4af','dark-switcher'=>'3d490dea','database-hide'=>'e304a899','designs'=>'d1515f34','dump-alter'=>'896b579e','dump-bz2'=>'f0d0e336','dump-date'=>'adc7f1c7','dump-json'=>'767dd321','dump-xml'=>'4fc3cd60','dump-zip'=>'93817d96','edit-foreign'=>'72ad1562','edit-textarea'=>'a24c3cc','editor-setup'=>'a7dc3a37','editor-views'=>'5c12b185','enum-option'=>'96ee8718','file-upload'=>'10add0e8','foreign-system'=>'ebb4c654','frames'=>'b0e1d11a','highlight-codemirror'=>'f4baf411','highlight-monaco'=>'edd1b0af','highlight-prism'=>'267948e5','import-csv'=>'d429c77','login-ip'=>'4d174fea','login-otp'=>'5b5a68af','login-passkey'=>'f69f2f06','login-password-less'=>'e150daac','login-reverse-proxy'=>'24558ea2','login-servers'=>'19c42e45','login-ssl'=>'6ed147bc','login-table'=>'811f8cef','menu-links'=>'7f3d5020','remote-color'=>'86a39047','row-numbers'=>'eec8698c','select-email'=>'f84fbd2c','select-image'=>'f55c0231','slugify'=>'dec64713','sql-gemini'=>'c60ab309','sql-log'=>'8e435000','table-indexes-structure'=>'a90cc0c9','table-structure'=>'a8458e02','tables-filter'=>'ec2bcd6e','timeout'=>'97321caf','version-github'=>'627cadf9','version-noverify'=>'966937e9','clickhouse'=>'b0f6631c','elastic'=>'27503b8b','firebird'=>'5499d1a','igdb'=>'59055fd3','imap'=>'ac143217','mongo'=>'c3b8f5a4','redis'=>'ba56e72e','simpledb'=>'92f050ad',);}function +__call($C,array$ci){$Aa=array();foreach($ci +as$x=>$X)$Aa[]=&$ci[$x];$I=null;foreach($this->hooks[$C]as$wi){$Y=call_user_func_array(array($wi,$C),$Aa);if($Y!==null){if(!self::$append[$C])return$Y;$I=$Y+(array)$I;}}return$I;}}abstract +class +Plugin{protected$translations=array();function +description(){return$this->lang('');}function +screenshot(){return"";}protected +function +lang($u,$ih=null){$Aa=func_get_args();$Aa[0]=idx($this->translations[LANG],$u)?:$u;return +call_user_func_array('Adminer\lang_format',$Aa);}}class +Password{private$password_hash;private$password_matches=null;function +__construct($oi){$this->password_hash=$oi;}function +description(){return +lang(91);}function +credentials(){$E=get_password();return +array(SERVER,$_GET["username"],($this->passwordMatches($E)&&!password_required()?"":$E));}function +login($bg,$E){if($this->passwordMatches($E))return +true;}protected +function +passwordMatches($E){if($this->password_matches===null)$this->password_matches=(function_exists('password_verify')&&password_verify(strval($E),$this->password_hash));return$this->password_matches;}}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($N,$V,$E){mysqli_report(MYSQLI_REPORT_OFF);list($Ee,$_i)=host_port($N);$pk=adminer()->connectSsl();$Ul=($pk&&($pk['key']||$pk['cert']||$pk['ca']||isset($pk['verify'])));if($Ul)$this->ssl_set($pk['key'],$pk['cert'],$pk['ca'],'','');$I=@$this->real_connect(($N!=""?$Ee:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$E!=""?$E:ini_get("mysqli.default_pw")),null,(is_numeric($_i)?intval($_i):ini_get("mysqli.default_port")),(is_numeric($_i)?null:$_i),($Ul?($pk['verify']!==false?MYSQLI_CLIENT_SSL:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($I?'':$this->error);}function +set_charset($fb){if(parent::set_charset($fb))return +true;parent::set_charset('utf8');return$this->query("SET NAMES $fb");}function +next_result(){return +self::more_results()&&parent::next_result();}function +quote($Q){return"'".$this->escape_string($Q)."'";}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($N,$V,$E){if(ini_bool("mysql.allow_local_infile"))return +lang(92,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),($N.$V!=""?$V:ini_get("mysql.default_user")),($N.$V.$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($fb){return +mysql_set_charset($fb,$this->link)||mysql_set_charset('utf8',$this->link);}function +quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function +select_db($fc){return +mysql_select_db($fc,$this->link);}function +query($G,$Cl=false){$H=@($Cl?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($N,$V,$E){$Gh=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);if(isset($_GET["select"]))$Gh[\PDO::MYSQL_ATTR_MULTI_STATEMENTS]=false;$pk=adminer()->connectSsl();if($pk){if($pk['key'])$Gh[\PDO::MYSQL_ATTR_SSL_KEY]=$pk['key'];if($pk['cert'])$Gh[\PDO::MYSQL_ATTR_SSL_CERT]=$pk['cert'];if($pk['ca'])$Gh[\PDO::MYSQL_ATTR_SSL_CA]=$pk['ca'];if(isset($pk['verify']))$Gh[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$pk['verify'];}list($Ee,$_i)=host_port($N);return$this->dsn("mysql:charset=utf8".($Ee!=""?";host=$Ee":'').($_i?(is_numeric($_i)?";port=":";unix_socket=").$_i:""),$V,$E,$Gh);}function +set_charset($fb){return$this->query("SET NAMES $fb");}function +select_db($fc){return$this->query("USE ".idf_escape($fc));}function +query($G,$Cl=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Cl);return +parent::query($G,$Cl);}}}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($N,$V,$E){$f=parent::connect($N,$V,$E);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($zj=iconv("windows-1252","utf-8//IGNORE",$f))>strlen($f))$f=$zj;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function +__construct(Db$f){parent::__construct($f);$this->types=array(lang(28)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(29)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(30)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(93)=>array("enum"=>65535,"set"=>64),lang(31)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(33)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types[lang(30)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(30)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$f)){$this->types[lang(32)]["inet6"]=39;if(min_version('','10.10',$f))$this->types[lang(32)]["inet4"]=15;}if(min_version(9,11.7,$f))$this->types[lang(28)]["vector"]=16383;if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function +unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):($m["type"]=="vector"?"".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."":(preg_match("~geom|point|linestring|polygon~",$m["type"])?"GeomFromText":""))));}function +insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function +insertUpdate($R,array$K,array$Ki){$e=array_keys(reset($K));$Gi="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$em=array();foreach($e +as$x)$em[$x]="$x = VALUES($x)";$xk="\nON DUPLICATE KEY UPDATE ".implode(", ",$em);$em=array();$y=0;foreach($K +as$O){$Y="(".implode(", ",$O).")";if($em&&(strlen($Gi)+$y+strlen($Y)+strlen($xk)>1e6)){if(!queries($Gi.implode(",\n",$em).$xk))return +false;$em=array();$y=0;}$em[]=$Y;$y+=strlen($Y)+2;}return +queries($Gi.implode(",\n",$em).$xk);}function +slowQuery($G,$cl){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$cl FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($cl*1000).") */ $A[2]";}}function +convertColumn($u,array$m){if(preg_match("~binary~",$m["type"]))return"HEX($u)";if($m["type"]=="bit")return"BIN($u + 0)";if($m["type"]=="vector")return($this->conn->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."($u)";if(preg_match("~geom|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT($u)";return"";}function +convertSearch($u,array$X,array$m){return($this->convertColumn($u,$m)?:(preg_match('~'.text_type().'~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u));}function +typeName(\stdClass$m){$Bl=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($Bl,$m->type,"");return +parent::typeName($m)?:($m->charsetnr==63?str_replace(array("text","varchar","char"),array("blob","varbinary","binary"),$I):$I);}function +quoteBinary($zj){return"X".q(bin2hex($zj));}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($C,$uf=false){$dg=($this->conn->flavor=='maria');if(information_schema(DB))return +strtolower(str_replace("_","-",DB)."-".($dg?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="sys")return($dg?"sys-schema/":strtolower("sys-".str_replace("_","-",preg_replace('~^x\$~','',$C)).".html"));if(DB=="mysql")return($dg?"mysql$C-table/":"system-schema.html");}function +partitionsInfo($R){$Wd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$H=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Wd 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;$li=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Wd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($li);$I["partition_values"]=array_values($li);return$I;}function +hasCStyleEscapes(){static$ab;if($ab===null){$mk=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$ab=(strpos($mk,'NO_BACKSLASH_ESCAPES')===false);}return$ab;}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$Ck){return(preg_match('~^(MEMORY|NDB)$~',$Ck["Engine"])?array("HASH","BTREE"):array());}}function +idf_escape($u){return"`".str_replace("`","``",$u)."`";}function +table($u){return +idf_escape($u);}function +get_databases($Nd){$I=get_session("dbs");if($I===null){$G="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$qk=microtime(true);$I=($Nd?slow_query($G):get_vals($G));if(microtime(true)-$qk>0.1){restart_session();set_session("dbs",$I);stop_session();}}return$I;}function +limit($G,$Z,$z,$ph=0,$Lj=" "){return" $G$Z".($z?$Lj."LIMIT $z".($ph?" OFFSET $ph":""):"");}function +limit1($R,$G,$Z,$Lj="\n"){return +limit($G,$Z,1,0,$Lj);}function +db_collation($j,array$vb){$I=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$I=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$I=$vb[$A[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$i){$I=array();foreach($i +as$j)$I[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$I;}function +table_status($C="",$vd=false){$I=array();foreach(get_rows($vd?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($C!="")$J["Name"]=$C;$I[$J["Name"]]=$J;}return$I;}function +is_view(array$S){return$S["Engine"]===null;}function +fk_support(array$S){return +preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function +parse_type($Yd){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$Yd,$A);return +array($A[1],$A[2],ltrim($A[3].$A[4]));}function +fields($R){$dg=(connection()->flavor=='maria');$I=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$J){$m=$J["COLUMN_NAME"];$U=$J["COLUMN_TYPE"];$ce=$J["GENERATION_EXPRESSION"];$sd=$J["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$sd,$be);list($Al,$y,$Jl)=parse_type($U);$k=$J["COLUMN_DEFAULT"];if($k!=""){$tf=preg_match('~text|json~',$Al);if(!$dg&&$tf)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($dg||$tf){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return +stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$dg&&preg_match('~binary~',$Al)&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$I[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Al,"length"=>$y,"unsigned"=>$Jl,"default"=>($be?($dg?$ce:stripslashes($ce)):$k),"null"=>($J["IS_NULLABLE"]=="YES"),"auto_increment"=>($sd=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$sd,$A)?$A[1]:""),"collation"=>$J["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$J[PRIVILEGES],where,order")),"comment"=>$J["COLUMN_COMMENT"],"primary"=>($J["COLUMN_KEY"]=="PRI"),"generated"=>($be[1]=="PERSISTENT"?"STORED":$be[1]),);}return$I;}function +indexes($R,$g=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$J){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$J["Index_type"])?$J["Index_type"]:"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;$I[$C]["algorithm"]=$J["Index_type"];}return$I;}function +foreign_keys($R){static$si='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$Tb=get_val("SHOW CREATE TABLE ".table($R),1);if($Tb){preg_match_all("~CONSTRAINT ($si) FOREIGN KEY ?\\(((?:$si,? ?)+)\\) REFERENCES ($si)(?:\\.($si))? \\(((?:$si,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Tb,$gg,PREG_SET_ORDER);foreach($gg +as$A){preg_match_all("~$si~",$A[2],$fk);preg_match_all("~$si~",$A[5],$Sk);$I[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$fk[0]),"target"=>array_map('Adminer\idf_unescape',$Sk[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$I;}function +view($C){return +array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),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$x=>$X)sort($I[$x]);return$I;}function +information_schema($j,$L=""){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function +error(){return +h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function +create_database($j,$ub){return +queries("CREATE DATABASE ".idf_escape($j).($ub?" COLLATE ".q($ub):""));}function +drop_databases(array$i){$I=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$I;}function +rename_database($C,$ub){$I=false;if(create_database($C,$ub)){$T=array();$jm=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$jm[]=$R;else$T[]=$R;}$I=(!$T&&!$jm)||move_tables($T,$jm,$C);drop_databases($I?array(DB):array());}return$I;}function +auto_increment(){$Ha=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Ha="";break;}if($v["type"]=="PRIMARY")$Ha=" UNIQUE";}}return" AUTO_INCREMENT$Ha";}function +alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$b=array();foreach($n +as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$Pd);$P=($_b!==null?" COMMENT=".q($_b):"").($Vc?" ENGINE=".q($Vc):"").($ub?" COLLATE ".q($ub):"").($Ga!=""?" AUTO_INCREMENT=$Ga":"");if($ki){$li=array();if($ki["partition_by"]=='RANGE'||$ki["partition_by"]=='LIST'){foreach($ki["partition_names"]as$x=>$X){$Y=$ki["partition_values"][$x];$li[]="\n PARTITION ".idf_escape($X)." VALUES ".($ki["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P +.="\nPARTITION BY $ki[partition_by]($ki[partition])";if($li)$P +.=" (".implode(",",$li)."\n)";elseif($ki["partitions"])$P +.=" PARTITIONS ".(+$ki["partitions"]);}elseif($ki===null)$P +.="\nREMOVE PARTITIONING";if($R=="")return +queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function +alter_indexes($R,$b){$db=array();foreach($b +as$X)$db[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return +queries("ALTER TABLE ".table($R).implode(",",$db));}function +truncate_tables(array$T){return +apply_queries("TRUNCATE TABLE",$T);}function +drop_views(array$jm){return +queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$jm)));}function +drop_tables(array$T){return +queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function +move_tables(array$T,array$jm,$Sk){$kj=array();foreach($T +as$R)$kj[]=table($R)." TO ".idf_escape($Sk).".".table($R);if(!$kj||queries("RENAME TABLE ".implode(", ",$kj))){$oc=array();foreach($jm +as$R)$oc[table($R)]=view($R);connection()->select_db($Sk);$j=idf_escape(DB);foreach($oc +as$C=>$im){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$im["select"]))||!queries("DROP VIEW $j.$C"))return +false;}return +true;}return +false;}function +copy_tables(array$T,array$jm,$Sk){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T +as$R){$C=($Sk==DB?table("copy_$R"):idf_escape($Sk).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return +false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){$tl=$J["Trigger"];list($ed,$lh)=trigger_event($J);if(!queries("CREATE TRIGGER ".($Sk==DB?idf_escape("copy_$tl"):idf_escape($Sk).".".idf_escape($tl))." $J[Timing] $ed".($lh!=""?" $lh":"")." ON $C FOR EACH ROW\n$J[Statement];"))return +false;}}foreach($jm +as$R){$C=($Sk==DB?table("copy_$R"):idf_escape($Sk).".".table($R));$im=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $im[select]"))return +false;}return +true;}function +trigger_event(array$J){$gd=explode(",",$J["Event"]);$I=array();foreach(array("DELETE","INSERT","UPDATE")as$ed){if(in_array($ed,$gd))$I[]=$ed;}$I=implode(" OR ",$I);if(in_array("UPDATE",$gd)&&min_version('','12.0.1')&&preg_match('~\s(?:BEFORE|AFTER)\s+(.+?)\s+ON\s~is',get_val("SHOW CREATE TRIGGER ".idf_escape($J["Trigger"]),2),$A)&&preg_match('~\bOF\s+(.+)~is',$A[1],$lh))return +array("$I OF",$lh[1]);return +array($I,"");}function +trigger($C,$R){if($C=="")return +array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));$I=reset($K);if($I)list($I["Event"],$I["Of"])=trigger_event($I);return$I;}function +triggers($R){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){list($ed)=trigger_event($J);$I[$J["Trigger"]]=array($J["Timing"],$ed);}return$I;}function +trigger_options(){return +array("Timing"=>array("BEFORE","AFTER"),"Event"=>(min_version('','12.0.1')?array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF",):array("INSERT","UPDATE","DELETE")),"Type"=>array("FOR EACH ROW"),);}function +routine($C,$U){$K=get_rows("SELECT PARAMETER_NAME, DTD_IDENTIFIER, PARAMETER_MODE, COLLATION_NAME +FROM information_schema.PARAMETERS +WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($C)." +ORDER BY ORDINAL_POSITION");$n=array();foreach($K +as$J){$Yd=$J["DTD_IDENTIFIER"];list($Al,$y,$Jl)=parse_type($Yd);$n[]=array("field"=>$J["PARAMETER_NAME"],"type"=>$Al,"length"=>$y,"unsigned"=>$Jl,"null"=>true,"full_type"=>$Yd,"inout"=>($U=="FUNCTION"?"":$J["PARAMETER_MODE"]),"collation"=>$J["COLLATION_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 = '$U' AND ROUTINE_NAME = ".q($C))->fetch_assoc();if($n&&$n[0]['field']=='')$I['returns']=array_shift($n);$I['fields']=$n;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($C,array$J){return +idf_escape($C);}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$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function +create_sql($R,$Ga,$vk){$I=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Ga)$I=preg_replace('~(\n\)[^\n]*?) AUTO_INCREMENT=\d+~','\1',$I);return$I;}function +truncate_sql($R){return"TRUNCATE ".table($R);}function +use_sql($fc,$vk=""){$C=idf_escape($fc);$I="";if(preg_match('~CREATE~',$vk)&&($h=get_val("SHOW CREATE DATABASE $C",1))){set_utf8mb4($h);if($vk=="DROP+CREATE")$I="DROP DATABASE IF EXISTS $C;\n";$I +.="$h;\n";}return$I."USE $C";}function +trigger_sql($R){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$J){list($J["Event"],$J["Of"])=trigger_event($J);$I +.="\n".create_trigger(" ON ".table($J["Table"]),$J+array("Type"=>"FOR EACH ROW")).";\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$m){return +driver()->convertColumn(idf_escape($m["field"]),$m);}function +unconvert_field(array$m,$I){if(preg_match("~binary~",$m["type"]))$I="UNHEX($I)";if($m["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if($m["type"]=="vector")$I=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($I)";if(preg_match("~geom|point|linestring|polygon~",$m["type"])){$Gi=(min_version(8)?"ST_":"");$I=$Gi."GeomFromText($I, $Gi"."SRID($m[field]))";}return$I;}function +support($wd){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':'').')$~',$wd);}function +kill_process($t){return +queries("KILL ".number($t));}function +connection_id(){return"SELECT CONNECTION_ID()";}function +max_connections(){return +get_val("SELECT @@max_connections");}function +types($rd=false){return +array();}function +type_values($t){return"";}function +type_definition($t){return +array("kind"=>"","definition"=>"");}function +schemas(){return +array();}function +get_schema(){return"";}function +set_schema($L,$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"]).'&':'').(isset($_GET["db"])?'db='.url_escape(DB).'&'.(isset($_GET["ns"])?"ns=".url_escape($_GET["ns"])."&":""):''));function +page_header($el,$l="",$Wa=array(),$fl=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$gl=$el.($fl!=""?": $fl":"");$hl=strip_tags($gl.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' + + + + +',$hl,' + +';$Xb=adminer()->css();if(is_int(key($Xb)))$Xb=array_fill_keys($Xb,'light');$re=in_array('light',$Xb)||in_array('',$Xb);$pe=in_array('dark',$Xb)||in_array('',$Xb);$bc=($re?($pe?null:false):($pe?:null));$vg=" media='(prefers-color-scheme: dark)'";if($bc!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=6.0.1");if(adminer()->head($bc))echo"\n","\n";foreach($Xb +as$Pl=>$Ig){$c=($Ig=='dark'&&!$bc?$vg:($Ig=='light'&&$pe?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n",script((isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"onload = partial(verifyVersion, '".VERSION."');\n")." +const offlineMessage = '".js_escape(lang(95))."'; +const thousandsSeparator = '".js_escape(lang(5))."'; +const urlSeparators = '".js_escape(ini_get("arg_separator.input"))."';"),"\n","
    \n","\n";if($Wa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $gl

    \n","
    \n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);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$Wb){$we=array();foreach($Wb +as$x=>$X)$we[]="$x $X";header("Content-Security-Policy: ".implode("; ",$we));}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(){$Vl=array();foreach(array_keys(adminer()->css())as$Pl)$Vl[preg_replace('~\?.*~','',$Pl)]=true;$I=array();foreach(array("adminer.css","adminer-dark.css")as$o){if($Vl[$o]&&file_exists($o)){preg_match('~^/\* Adminer design ([-\w]+) \*/~',file_get_contents($o),$A);$I[$o]=array((string)$A[1],Plugins::checksum($o));}}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'=>'1f626deb','konya/adminer.css'=>'2b409696','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'=>'81be9a85','rmsoft/adminer.css'=>'6cd4a237','rmsoft_blue-dark/adminer.css'=>'32102a8','rmsoft_blue/adminer.css'=>'7d8d5b18','win98/adminer.css'=>'e82d63c3',);}function +version_iframe(){return(isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"");}function +get_nonce(){static$eh;if(!$eh)$eh=base64_encode(rand_string());return$eh;}function +page_messages($l){$Ol=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ag=idx($_SESSION["messages"],$Ol);if($Ag){echo"
    ".implode("
    \n
    ",$Ag)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Ol]);}if($l)echo"
    $l
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function +page_footer($Hg=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function +int32($Pg){while($Pg>=2147483648)$Pg-=4294967296;while($Pg<=-2147483649)$Pg+=4294967296;return(int)$Pg;}function +long2str(array$W,$lm){$zj='';foreach($W +as$X)$zj +.=pack('V',$X);if($lm)return +substr($zj,0,end($W));return$zj;}function +str2long($zj,$lm){$W=array_values(unpack('V*',str_pad($zj,4*ceil(strlen($zj)/4),"\0")));if($lm)$W[]=strlen($zj);return$W;}function +xxtea_mx($wm,$vm,$yk,$zf){return +int32((($wm>>5&0x7FFFFFF)^$vm<<2)+(($vm>>3&0x1FFFFFFF)^$wm<<4))^int32(($yk^$vm)+($zf^$wm));}function +encrypt_string($tk,$x){if($tk=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($tk,true);$Pg=count($W)-1;$wm=$W[$Pg];$vm=$W[0];$Ti=floor(6+52/($Pg+1));$yk=0;while($Ti-->0){$yk=int32($yk+0x9E3779B9);$Nc=$yk>>2&3;for($Yh=0;$Yh<$Pg;$Yh++){$vm=$W[$Yh+1];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$wm=int32($W[$Yh]+$Og);$W[$Yh]=$wm;}$vm=$W[0];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$wm=int32($W[$Pg]+$Og);$W[$Pg]=$wm;}return +long2str($W,false);}function +decrypt_string($tk,$x){if($tk=="")return"";if(!$x)return +false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($tk,false);$Pg=count($W)-1;$wm=$W[$Pg];$vm=$W[0];$Ti=floor(6+52/($Pg+1));$yk=int32($Ti*0x9E3779B9);while($yk){$Nc=$yk>>2&3;for($Yh=$Pg;$Yh>0;$Yh--){$wm=$W[$Yh-1];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$vm=int32($W[$Yh]-$Og);$W[$Yh]=$vm;}$wm=$W[$Pg];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$vm=int32($W[0]-$Og);$W[0]=$vm;$yk=int32($yk-0x9E3779B9);}return +long2str($W,true);}$ui=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$ui[$x]=$X;}}function +add_invalid_login(){$Oa=get_temp_dir()."/adminer-invalid";foreach(glob("$Oa*")?:array($Oa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Oa-".rand_string());if(!$q)return;$nf=json_decode(stream_get_contents($q),true);$bl=time();if($nf){foreach($nf +as$of=>$X){if($X[0]<$bl)unset($nf[$of]);}}$lf=&$nf[adminer()->bruteForceKey()];if(!$lf)$lf=array($bl+30*60,0);$lf[1]++;file_write_unlock($q,json_encode($nf));}function +check_invalid_login(array&$ui){$nf=array();foreach(glob(get_temp_dir()."/adminer-invalid*")as$o){$q=file_open_lock($o);if($q){$nf=json_decode(stream_get_contents($q),true);file_unlock($q);break;}}$x=adminer()->bruteForceKey();$lf=idx($nf,$x,array());$dh=($lf[1]>29?$lf[0]-time():0);if($dh>0){$l=lang(98,ceil($dh/60));if($_SERVER["HTTP_X_FORWARDED_FOR"]!=""&&$x==$_SERVER["REMOTE_ADDR"])$l +.='
    '.lang(99,'login-reverse-proxy'," href='https://www.adminer.org/plugins/?version=".VERSION."'".target_blank());auth_error($l,$ui,false);}}function +password_required(){static$I;if($I===null){$I=(bool)get_session("password_required");if(!$I){$Vb=adminer()->credentials();$I=!is_object(Driver::connect($Vb[0],$Vb[1],""));if($I)set_session("password_required",true);}}return$I;}function +require_password_link($E){$Kg="".lang(100)."";if(!function_exists('password_hash'))return" $Kg";$xi=($E!==null?$E:base64_encode(substr(pack("H*",rand_string()),0,12)));$ve=password_hash($xi,PASSWORD_DEFAULT);$o="adminer-plugins.php";$ld=file_exists("adminer-plugins.php");if($ld)$jf=($E!==null?lang(101,"$o"):lang(102,"$o","$xi"));else{$o="";$jf=($E!==null?lang(103,$o):lang(104,$o,"$xi"));}$Uf="\tnew Adminer\\Password('".h($ve)."'),";$I="

    $jf +

    ".($ld?$Uf:"<?php\nreturn array(\n$Uf\n);")."
    +

    $Kg +";return" ".lang(105)." +

    ";}if(preg_match('~^[-\w$./]+$~',$_POST["password_less"])&&verify_token()){header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=adminer-plugins.php");echo"permanentLogin(true);$ui[$x]="$x:".base64_encode($Ni?encrypt_string($E,$Ni):"");cookie("adminer_permanent",implode(" ",$ui));}if(!array_diff(array_keys($_POST),array("auth","token"))||$gm!=DRIVER||$N!=SERVER||$V!==$_GET["username"]||$j!=DB)redirect(auth_url($gm,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($ui);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(106).' '.lang(107));}elseif($ui&&!$_SESSION["pwds"]){session_regenerate_id();$Ni=adminer()->permanentLogin();foreach($ui +as$x=>$X){list(,$ob)=explode(":",$X);list($gm,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($gm,$N,$V,decrypt_string(base64_decode($ob),$Ni));$_SESSION["db"][$gm][$N][$V][$j]=true;}}function +unset_permanent(array&$ui){foreach($ui +as$x=>$X){list($gm,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($gm==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($ui[$x]);}cookie("adminer_permanent",implode(" ",$ui));}function +auth_error($l,array&$ui,$mf=true){$Uj=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Uj]||$_GET[$Uj])&&!$_SESSION["token"])$l=lang(108);elseif($mf&&($E=get_password())!==null){restart_session();add_invalid_login();if($E===false)$l +.=($l?'
    ':'').lang(109,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);unset_permanent($ui);}}if(!$_COOKIE[$Uj]&&$_GET[$Uj]&&ini_bool("session.use_only_cookies"))$l=lang(110);$ci=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$ci["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(43),$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(111)."\n";echo +input_token(),"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($ui);page_header(lang(112),lang(113,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){check_invalid_login($ui);$Vb=adminer()->credentials();$f=Driver::connect($Vb[0],$Vb[1],$Vb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new +Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$bg=null;if(!is_object($f)||($bg=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($bg)?$bg:lang(114))).(preg_match('~^ | $~',get_password())?'
    '.lang(115):'');auth_error($l,$ui);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(97),lang(116));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Fa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){header("HTTP/1.1 403 Forbidden");$l=lang(116).' '.lang(117);}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){header("HTTP/1.1 413 Content Too Large");$l=lang(118,"post_max_size");if(isset($_GET["sql"]))$l +.=' '.lang(119);}function +print_select_result($H,$g=null,array$Mh=array(),&$z=0){$Wf=array();$w=array();$e=array();$Ua=array();$Bl=array();$I=array();for($s=0;(!$z||$s<$z)&&($J=$H->fetch_row());$s++){if(!$s){echo"
    \n","\n","";for($wf=0;$wffetch_field();$C=$m->name;$Lh=(isset($m->orgtable)?$m->orgtable:"");$Kh=(isset($m->orgname)?$m->orgname:$C);if($Mh&&JUSH=="sql")$Wf[$wf]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Lh!=""){if(isset($m->table))$I[$m->table]=$Lh;if(!isset($w[$Lh])){$w[$Lh]=array();foreach(indexes($Lh,$g)as$v){if($v["type"]=="PRIMARY"){$w[$Lh]=array_flip($v["columns"]);break;}}$e[$Lh]=$w[$Lh];}if(isset($e[$Lh][$Kh])){unset($e[$Lh][$Kh]);$w[$Lh][$Kh]=$wf;$Wf[$wf]=$Lh;}}if($m->charsetnr==63)$Ua[$wf]=true;$Bl[$wf]=$m->type;echo"\n";}echo"";foreach($J +as$x=>$X){$_="";if(isset($Wf[$x])&&!$e[$Wf[$x]]){if($Mh&&JUSH=="sql"){$R=$J[array_search("table=",$Wf)];$_=ME.$Wf[$x].url_escape($Mh[$R]!=""?$Mh[$R]:$R);}else{$_=ME."edit=".url_escape($Wf[$x]);foreach($w[$Wf[$x]]as$sb=>$wf){if($J[$wf]===null){$_="";break;}$_ +.="&where[".url_escape(bracket_escape($sb))."]=".url_escape($J[$wf]);}}}$m=array('type'=>($Ua[$x]?'blob':($Bl[$x]==254?'char':'')),);$X=select_value($X,$_,$m,null);echo"$X";}}$z=$s;echo($s?"
    ".h($C).($Mh?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"
    \n
    ":"

    ".lang(15))."\n";return$I;}function +textarea($C,$Y,$K=10,$wb=80){echo"";}function +select_input($c,array$Gh,$Y="",$vi=""){if($Gh&&$Y!=""&&!isset($Gh[$Y]))$Gh=array($Y=>$Y)+$Gh;$Rk=($Gh?"select":"input");return"<$Rk$c".($Gh?">

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

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

    \n","\n","".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i +as$j=>$T){$tj=h(preg_replace('~&db=[^&]*~','',ME))."db=".url_escape($j);$t=h("Db-".$j);echo"".(support("database")?"
    ":"")."".lang(42).(get_session("dbs")!==null?" - ".lang(140)."":"")."".lang(141)."".lang(142)."".lang(143)." - ".lang(144).""."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"".h($j)."";$ub=h(db_collation($j,$vb));echo"".(support("database")?"$ub":$ub),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}$pa=adminer();$zi=($pa +instanceof +Plugins?$pa->plugins:array());$Gc=($pa +instanceof +Plugins?$pa->drivers:array());$uc=design_checksums();if($zi||$Gc||$uc){$nb=($pa +instanceof +Plugins?$pa->checksums():array());$mh=Plugins::officialChecksums();$Ml=function($Pl){return" (".VERSION.")";};$yi=function($Bd)use($nb,$mh,$Ml){return($nb[$Bd]&&$mh[$Bd]&&$nb[$Bd]!==$mh[$Bd]?$Ml("https://www.adminer.org/plugins/?version=".VERSION):"");};echo"
    \n","

    ".lang(147)."

    \n
      \n";foreach($zi +as$wi){$fj=new +\ReflectionObject($wi);$rc=(method_exists($wi,'description')?$wi->description():"");if(!$rc){if(preg_match('~^/[\s*]+(.+)~',$fj->getDocComment(),$A))$rc=$A[1];}$Cj=(method_exists($wi,'screenshot')?$wi->screenshot():"");echo"
    • ".get_class($wi)."".h($rc?": $rc":"").($Cj?" (".lang(148).")":"").$yi(basename((string)$fj->getFileName(),'.php'))."\n";}foreach($Gc +as$t=>$C)echo"
    • ".h($t).": ".h($C).$yi(basename((string)$pa->driverFiles[$t],'.php'))."\n";if($uc){$oh=official_design_checksums();foreach($uc +as$o=>$tc){list($C,$mb)=$tc;$nh=$oh["$C/$o"];echo"
    • ".h($o)."".h($C?": $C":"").($nh&&$nh!==$mb?$Ml("https://www.adminer.org/?version=".VERSION."#extras"):"")."\n";}}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~&db=[^&]+~','\0&ns='.url_escape(get_schema()),relative_uri()));if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(86).h(": $_GET[ns]"),lang(149),true);page_footer("ns");exit;}}}adminer()->afterConnect();class +TmpFile{private$handler;var$size=0;function +__construct(){$this->handler=tmpfile();}function +write($Mb){$this->size+=strlen($Mb);fwrite($this->handler,$Mb);}function +send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if($_GET["select"]!=""&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$H=driver()->select($a,$M,array(where($_GET,$n)),$M);$J=($H?$H->fetch_row():array());echo +driver()->value($J[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=adminer()->error()?:lang(12);$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?lang(150):lang(151):lang(152)).": ".($C!=""?$C:h($a)),$l);$sj=array();foreach($n +as$x=>$m)$sj+=$m["privileges"];adminer()->selectLinks($S,(isset($sj["insert"])||!support("table")?"":null));$_b=$S["Comment"];if($_b!="")echo"

    ".lang(57).": ".adminer()->commentValue('TABLE',$_b)."\n";if($n)adminer()->tableStructurePrint($n,$S);function +tables_links(array$T){echo"

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

    ".lang(153)."

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

    ".lang(154)."

    \n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);if(driver()->supportsAlterIndex($S))echo'
    \n";}if(!is_view($S)){if(fk_support($S)){echo"
    \n","

    ".lang(120)."

    \n";$Rd=foreign_keys($a);if($Rd){echo"\n","\n";foreach($Rd +as$C=>$p){echo"","
    ".lang(156)."".lang(157)."".lang(123)."".lang(122)."
    ".implode(", ",array_map('Adminer\h',$p["source"]))."";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".url_escape($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".url_escape($p["ns"]),ME):ME));echo"".($p["db"]!=""&&$p["db"]!=DB?"".h($p["db"]).".":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('Adminer\h',$p["target"])).")","".h($p["on_delete"]),"".h($p["on_update"]),''.lang(158).'',"\n";}echo"
    \n";}echo'
    \n";}if(support("check")){echo"
    \n","

    ".lang(160)."

    \n";$ib=driver()->checkConstraints($a);if($ib){echo"\n";foreach($ib +as$x=>$X)echo"","
    ".shorten_utf8(preg_replace('~\s+~',' ',ltrim($X)),80,""),"".lang(158)."","\n";echo"
    \n";}echo'
    \n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"
    \n","

    ".lang(162)."

    \n";$xl=triggers($a);if($xl){echo"\n";foreach($xl +as$x=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($x)."".lang(158)."\n";echo"
    \n";}echo'
    \n";}$bf=driver()->inheritedTables($a);if($bf){echo"

    ".lang(164)."

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

    BY ".h("$gi[partition_by]($gi[partition])")."\n";tables_links($bf);}}elseif(isset($_GET["schema"])){page_header(lang(77),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));function +schema_column($R,array$ej,array&$e){if(!isset($e[$R])){$e[$R]=0;foreach((array)idx($ej,$R)as$C=>$gj){if($C!=$R)$e[$R]=max($e[$R],schema_column($C,$ej,$e)+1);}}return$e[$R];}function +type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}$Ik=array();$Kk=array();$Jk=array();$zd=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$gg,PREG_SET_ORDER);foreach($gg +as$s=>$A){$Ik[$A[1]]=array((float)$A[2],(float)$A[3]);$Kk[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$L=array();$ej=array();$Rd=array();$wa=driver()->allFields();$Ae=array();$Lk=array();foreach(table_status('',true)as$R=>$S){if(!is_view($S)){if(adminer()->tableName($S)!="")$Lk[$R]=$S;else$Ae[$R]=true;}}foreach($Lk +as$R=>$S){$F=0;$L[$R]["fields"]=array();foreach($wa[$R]as$m){$F+=1.25;$zd[$R][$m["field"]]=$F;$L[$R]["fields"][$m["field"]]=$m;}foreach(adminer()->foreignKeys($R)as$X){if($X["db"]==""&&$X["ns"]==""&&!$Ae[$X["table"]]){$Rd[$R][]=$X;$ej[$X["table"]][$R]=array();}}}$e=array();$fe=array();$um=array();$le=array();foreach(array_keys($L)as$C)schema_column($C,$ej,$e);arsort($e);foreach($e +as$C=>$d){$Fg=null;foreach((array)idx($Rd,$C)as$X){if($X["table"]!=$C&&$L[$X["table"]])$Fg=($Fg===null?$e[$X["table"]]:min($Fg,$e[$X["table"]]));}$e[$C]=max($d,(int)$Fg-1);}foreach($L +as$C=>$R){$d=$e[$C];$fe[$d][]=$C;$al=.75*strlen($C);foreach($R["fields"]as$m)$al=max($al,.65*strlen($m["field"]));$um[$d]=max(idx($um,$d,0),ceil($al)+1);}foreach($Rd +as$C=>$dm){foreach($dm +as$X){$ke=$e[$C]+(idx($e,$X["table"],$e[$C])>$e[$C]?1:0);$le[$ke]=idx($le,$ke,0)+1;}}ksort($fe);$ze=0;$tm=0;$xb=0;$Ji=null;$Ek=array();$Nk=array();foreach($fe +as$d=>$T){if($Ji!==null){$xb=round($xb+$um[$Ji]+1.7+idx($le,$d,0)*.1,1);$Ih=array();foreach($T +as$C){$yk=0;$Sb=0;$Ug=array_keys((array)idx($ej,$C));foreach((array)idx($Rd,$C)as$X)$Ug[]=$X["table"];foreach($Ug +as$Qg){if($L[$Qg]&&$e[$Qg]<$d){$yk+=$L[$Qg]["pos"][0];$Sb++;}}$Ih[$C]=($Sb?$yk/$Sb:$ze);}asort($Ih);$T=array_keys($Ih);}$ll=0;foreach($T +as$C){$F=1.25*count($L[$C]["fields"]);$L[$C]["pos"]=($Ik[$C]?:array($ll,$xb));$Ek[$C]=$L[$C]["pos"][1];$Nk[$C]=$um[$d];$ll+=2.5+$F;$ze=max($ze,$L[$C]["pos"][0]+2.5+$F);$tm=max($tm,round($L[$C]["pos"][1]+$um[$d],1));if(!$Ik[$C])$Jk[]="\n\t'".js_escape($C)."': [ ".$L[$C]["pos"][0].", ".$L[$C]["pos"][1]." ]";}$Ji=$d;}$Of=array();$Pa=array();foreach($Rd +as$C=>$dm){foreach($dm +as$X){$Tk=idx($Ek,$X["table"],$Ek[$C]);$gk=$Ek[$C]+$Nk[$C];$rj=($Tk-1>$gk);$Mf=($rj?$gk+1:min($Ek[$C],$Tk)-1);$Oa=idx($Pa,(string)$Mf,0);$Pa[(string)$Mf]=$Oa+1;$Mf=round($rj?min($Mf+$Oa*.1,$Tk-1):$Mf-$Oa*.1,1);while($Of[(string)$Mf])$Mf-=.0001;$L[$C]["references"][$X["table"]][(string)$Mf]=array($X["source"],$X["target"]);$ej[$X["table"]][$C][(string)$Mf]=$X["target"];$Of[(string)$Mf]=true;}}echo'

    + +const tablePos = {',implode(",",$Kk)."\n",'}; +const tablePosDefault = {',implode(",",$Jk)."\n",'}; +const em = qs(\'#schema\').offsetHeight / ',$ze,'; +document.onmousemove = schemaMousemove; +document.onmouseup = event => schemaMouseup(event, \'',js_escape(DB),'\'); + +';foreach($L +as$C=>$R){echo"
    ",''.h($C)."";foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$Uk=>$gj){foreach($gj +as$Mf=>$bj){$Nf=$Mf-$R["pos"][1];$vk=($Nf>0?"left: 100%; width: calc($Nf"."em - 100%)":"left: $Nf"."em");$tm=($Nf>0?"100%":(-$Nf)."em");$s=0;foreach($bj[0]as$fk)echo"\n
    "."
    ";}}foreach((array)$ej[$C]as$Uk=>$gj){foreach($gj +as$Mf=>$Vk){$Nf=$Mf-$R["pos"][1];$s=0;foreach($Vk +as$Sk)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($L +as$C=>$R){foreach((array)$R["references"]as$Uk=>$gj){if($L[$Uk]){foreach($gj +as$Mf=>$bj){$Gg=$ze;$og=-10;foreach($bj[0]as$x=>$fk){$Ai=$R["pos"][0]+$zd[$C][$fk];$Bi=$L[$Uk]["pos"][0]+$zd[$Uk][$bj[1][$x]];$Gg=min($Gg,$Ai,$Bi);$og=max($og,$Ai,$Bi);}echo"
    \n";}}}}echo'
    +
    + +';$hc=array('','USE','DROP+CREATE','CREATE');$Mk=array('','DROP+CREATE','CREATE');$dc=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$dc[]='INSERT+UPDATE';$J=get_settings("adminer_export");if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");echo"
    ".lang(166)."".html_radios("output",adminer()->dumpOutput(),$J["output"])."\n","
    ".lang(167)."".html_radios("format",adminer()->dumpFormat(),$J["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(42)."".html_select('db_style',$hc,$J["db_style"]).(support("type")?checkbox("types",1,$J["types"],lang(7)):"").(support("routine")?checkbox("routines",1,$J["routines"],lang(79)):"").(support("event")?checkbox("events",1,$J["events"],lang(81)):"")),"
    ".lang(142)."".html_select('table_style',$Mk,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(58)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(162)):""),"
    ".lang(168)."".html_select('data_style',$dc,$J["data_style"]),'
    +';adminer()->dumpPrint();echo'

    +',input_token(),' + +';$Hi=array();if($_GET["ns"]===""){echo"","","\n";foreach(adminer()->schemas()as$L){if(!information_schema(DB,$L))echo"".checkbox("schemas[]",$L,true,$L,"","block")."\n";}}elseif(DB!=""){$kb=($a!=""?"":" checked");echo"","","","\n";$jm="";$Pk=tables_list();foreach($Pk +as$C=>$U){$Gi=preg_replace('~_.*~','',$C);$kb=($a==""||$a==(substr($a,-1)=="%"?"$Gi%":$C));$Mi="".checkbox("tables[]",$C,$kb,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$jm +.="$Mi\n";else +echo"$Mi\n";$Hi[$Gi]++;}echo$jm;if($Pk)echo +script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{$i=adminer()->databases();echo"","","\n";if($i){foreach($i +as$j){if(!information_schema($j)){$Gi=preg_replace('~_.*~','',$j);echo"".checkbox("databases[]",$j,$a==""||$a=="$Gi%",$j,"","block")."\n";$Hi[$Gi]++;}}}else +echo"";}echo' + +';$Hd=true;foreach($Hi +as$x=>$X){if($x!=""&&$X>1){echo($Hd?"

    ":" ")."".h($x)."";$Hd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(78));echo'

    \n";hidden_fields_get();echo +input_hidden("db",DB),($de?"":input_hidden("grant")),"\n","\n";while($J=$H->fetch_assoc())echo'
    ".lang(40)."".lang(38)."
    '.h($J["User"]),"".h($J["Host"]),''.lang(13)."\n";if(!$de||DB!="")echo"
    ","","\n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Ce=&get_session("queries");$Be=&$Ce[DB];if(!$l&&$_POST["clear"]){$Be=array();redirect(remove_from_uri("history"));}stop_session();$qa=get_settings("adminer_import");if($_POST&&$qa)save_settings($qa,"adminer_import");page_header((isset($_GET["import"])?lang(82):lang(71)),$l);$Vf=driver()->lineComment();if(!$l&&$_POST&&!(isset($_GET["import"])&&adminer()->importProcess())){$pc=driver()->delimiter;$q=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$kk=adminer()->importServerPath();$q=@fopen((file_exists($kk)?$kk:"compress.zlib://$kk.gz"),"rb");$G=($q?fread($q,1e6):false);}else$G=get_file("sql_file",true,$pc);if(is_string($G)){if(($wg=ini_bytes("memory_limit"))!="-1")ini_set("memory_limit",max($wg,strval(2*strlen($G)+memory_get_usage()+8e6)));if($G!=""&&strlen($G)<1e6){$Ti=$G.(preg_match("~$pc\\s*\$~",$G)?"":$pc);if(!$Be||first(end($Be))!=$Ti){restart_session();$Be[]=array($Ti,time());set_session("queries",$Ce);stop_session();}}$hk="(?:\\s|/\\*[\s\S]*?\\*/|(?:$Vf)[^\n]*\n?|--\r?\n)";$ph=0;$Uc=true;$Rb=false;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$zb=0;$bd=array();$di='[\'"'.(JUSH=="sql"?'`':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Vf.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ml=microtime(true);while($G!=""){if(!$ph&&preg_match("~^$hk*+DELIMITER\\s+(\\S+)~i",$G,$A)){$pc=preg_quote($A[1]);$G=substr($G,strlen($A[0]));}elseif(!$ph&&JUSH=='pgsql'&&preg_match("~^($hk*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$G,$A)){$pc="\n\\\\\\.\r?\n";$Rb=true;$ph=strlen($A[0]);}else{preg_match("($pc\\s*|$di)",$G,$A,PREG_OFFSET_CAPTURE,$ph);list($Td,$F)=$A[0];if(!$Td&&$q&&!feof($q))$G +.=fread($q,1e5);else{if(!$Td&&rtrim($G)=="")break;$ph=$F+strlen($Td);if($Td&&!preg_match("(^$pc)",$Td)){$bb=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($F>0&&strtolower($G[$F-1])=="e"));$si=($Td=='/*'?'\*/':($Td=='['?']':(preg_match("~^(?:$Vf)~",$Td)?"\n":preg_quote($Td).($bb?'|\\\\.':''))));while(preg_match("($si|\$)s",$G,$A,PREG_OFFSET_CAPTURE,$ph)){$zj=$A[0][0];if(!$zj&&$q&&!feof($q))$G +.=fread($q,1e5);else{$ph=$A[0][1]+strlen($zj);if(!$zj||$zj[0]!="\\")break;}}}else{$Uc=false;$Ti=substr($G,0,$F+($Rb?3:0));$zb++;$Mi="
    ".adminer()->sqlCommandQuery($Ti)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$hk*+(ATTACH|VACUUM\\b.*\\bINTO)\\b~is",$Ti,$A)!==0){echo$Mi,"

    ".lang(171,preg_match('~ATTACH~i',$A[1])?'ATTACH':'VACUUM INTO')."\n";$bd[]=" $zb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Mi;ob_flush();flush();}$qk=microtime(true);if(connection()->multi_query($Ti)&&$g&&preg_match("~^$hk*+USE\\b~i",$Ti))$g->query($Ti);do{$H=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Mi:""),"

    ".lang(172).(connection()->errno?" (".connection()->errno.")":"").": ".adminer()->error()."\n";$bd[]=" $zb";if($_POST["error_stops"])break +2;}else{$_=ME."sql=".url_escape(trim($Ti));$bl=" (".format_time($qk).")".(strlen($_)<1900?" ".lang(13)."":"");$sa=connection()->affected_rows;$nm=($_POST["only_errors"]?"":driver()->warnings());$om="warnings-$zb";if($nm)$bl +.=", ".lang(53)."";$md=null;$Mh=null;$nd="explain-$zb";if(is_object($H)){$z=$_POST["limit"];$hh=$z;$Mh=print_select_result($H,$g,array(),$hh);if(!$_POST["only_errors"]){echo"

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

    ".lang(175,$sa)."$bl\n";}echo($nm?"

    \n":"");if($md){echo"\n";}}$qk=microtime(true);}while(connection()->next_result());}$G=substr($G,$ph);$ph=0;if($Rb){$pc=driver()->delimiter;$Rb=false;}}}}}if($Uc)echo"

    ".lang(176)."\n";else{$Qe=connection()->inTransaction();driver()->rollback();if($Qe)echo"

    ROLLBACK -- Adminer
    \n";if($_POST["only_errors"])echo"

    ".lang(177,$zb-count($bd))," (".format_time($ml).")\n";elseif($bd&&$zb>1)echo"

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

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

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

    ";textarea("query",$Ti,20);echo($_POST?"":script("qs('textarea').focus();")),"

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

    ".lang(180)."
    ",($Nl?input_hidden(ini_get("session.upload_progress.name"),$Nl):""),"SQL$me: ".file_input(" name='sql_file[]' multiple","\n$jd"),($Nl?" ":""),"
    \n";$Ne=adminer()->importServerPath();if($Ne)echo"
    ".lang(181)."
    ",lang(182,"".h($Ne)."$me")," ","
    \n";adminer()->importPrint();echo"

    ";}echo +checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(184))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(185))."\n",input_token();if(!isset($_GET["import"])&&$Be){print_fieldset("history",lang(186),$_GET["history"]!="");for($X=end($Be);$X;$X=prev($Be)){$x=key($Be);list($Ti,$bl,$Qc)=$X;echo'

    '.lang(13).""." ".@date("H:i:s",$bl).""." ".shorten_utf8(preg_replace('~\s+~',' ',ltrim(preg_replace("~^(?:$Vf).*~m",'',$Ti))),80,"").($Qc?" ($Qc)":"")."
    \n";}echo"\n","".lang(188)."\n","\n";}echo'
    +';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$Ll=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n +as$C=>$m){if((!$Ll&&!isset($m["privileges"]["insert"]))||adminer()->fieldName($m)=="")unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$ag=relative_uri((string)$_POST["referer"]);if($_POST["insert"])$ag=($Ll?null:relative_uri());elseif(!preg_match('~^.+&select=.+$~',$ag))$ag=ME."select=".url_escape($a);$w=indexes($a);$Fl=unique_array($_GET["where"],$w);$Wi="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($ag,lang(189),driver()->delete($a,$Wi,$Fl?0:1));else{$O=array();foreach($n +as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Ll){if(!$O)redirect($ag);queries_redirect($ag,lang(190),driver()->update($a,$O,$Wi,$Fl?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$H=driver()->insert($a,$O);$Lf=($H?last_id($H):0);queries_redirect($ag,lang(191,($Lf?" $Lf":"")),$H);}}}$J=null;$G="";$bl="";if($Z){$M=array();$Hj=array("*");foreach($n +as$C=>$m){if(isset($m["privileges"]["select"])){$Ca=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$d=($Ca?"$Ca AS ":"").idf_escape($C);$M[]=$d;if($Ca)$Hj[]=$d;}}$J=array();if(!support("table")){$M=array("*");$Hj=$M;}if($M){$qk=microtime(true);$H=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));$G=str_replace("SELECT ".implode(", ",$M),"SELECT ".implode(", ",$Hj),driver()->query);$bl=format_time($qk);if(!$H)$l=adminer()->error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!$n&&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$x=>$X){if(!$Z)$J[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}if($_POST["save"]){$Ci=array();foreach((array)$_POST["fields"]as$x=>$X)$Ci[bracket_escape($x,true)]=$X;$J=$Ci+($J?$J:array());}edit_form($a,$n,$J,$Ll,$l,$G,$bl);}elseif(isset($_GET["create"])){function +referencable_primary($Jj){$I=array();foreach(table_status('',true)as$Gk=>$R){if($Gk!=$Jj&&fk_support($R)){foreach(fields($Gk)as$m){if($m["primary"]){if($I[$Gk]){unset($I[$Gk]);break;}$I[$Gk]=$m;}}}}return$I;}$a=$_GET["create"];$ii=driver()->partitionBy;$mi=($ii&&$a!=""?driver()->partitionsInfo($a):array());$dj=referencable_primary($a);$Rd=array();foreach($dj +as$Gk=>$m)$Rd[str_replace("`","``",$Gk)."`".str_replace("`","``",$m["field"])]=$Gk;$Ph=array();$S=array();if($a!=""){$Ph=fields($a);$S=table_status1($a);if(count($S)<2)$l=lang(12);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!$l)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(192),drop_tables(array($a)));else{$n=array();$wa=array();$Rl=false;$Pd=array();$Oh=reset($Ph);$ua=" FIRST";foreach($J["fields"]as$x=>$m){$p=$Rd[$m["type"]];$_l=($p!==null?$dj[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Ri=process_field($m,$_l);$wa[]=array($m["orig"],$Ri,$ua);if(!$Oh||$Ri!==process_field($Oh,$Oh)){$n[]=array($m["orig"],$Ri,$ua);if($m["orig"]!=""||$ua)$Rl=true;}if($p!==null)$Pd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Rd[$m["type"]],'source'=>array($m["field"]),'target'=>array($_l["field"]),'on_delete'=>$m["on_delete"],));$ua=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Rl=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Oh=next($Ph);if(!$Oh)$ua="";}}$ki=array();if(in_array($J["partition_by"],$ii)){foreach($J +as$x=>$X){if(preg_match('~^partition~',$x))$ki[$x]=$X;}foreach($ki["partition_names"]as$x=>$C){if($C==""){unset($ki["partition_names"][$x]);unset($ki["partition_values"][$x]);}}$ki["partition_names"]=array_values($ki["partition_names"]);$ki["partition_values"]=array_values($ki["partition_values"]);if($ki==$mi)$ki=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$ki=null;$B=lang(193);if($a==""){cookie("adminer_engine",$J["Engine"]);$B=lang(194);}$C=trim($J["name"]);$ag=ME.(support("table")?"table=":"select=").url_escape($C);$H=alter_table($a,$C,(JUSH=="sqlite"&&($Rl||$Pd)?$wa:$n),$Pd,($J["Comment"]!=$S["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$ki);if($H&&!Queries::$queries&&$a!=""&&!$n&&!$Pd)redirect($ag);queries_redirect($ag,$B,$H);}}page_header(($a!=""?lang(51):lang(84)),$l,array("table"=>$a),h($a));if(!$_POST){$Bl=driver()->types();$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Bl["int"])?"int":(isset($Bl["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Ph +as$m){if($m["generated"])$m["default"]=ltrim($m["default"]);$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$J["fields"][]=$m;}if($ii){$J+=$mi;$J["partition_names"][]="";$J["partition_values"][]="";}}}$vb=flat_collations();$Wc=driver()->engines();foreach($Wc +as$Vc){if(!strcasecmp($Vc,$J["Engine"])){$J["Engine"]=$Vc;break;}}$jg=max_input_vars(12,20);if($jg){$Ae=(count($J["fields"])>$jg?"":" hidden");echo"".max_input_vars_error()."\n";}echo' +
    +

    +';if(support("columns")||$a==""){echo +lang(195).": \n",($Wc?html_select("Engine",array(""=>"(".lang(196).")")+$Wc,$J["Engine"],on('change','helpClose').on_help_value())."\n":"");if($vb)echo"".optionlist($vb)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($J["fields"],$vb,"TABLE",$Rd);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(58).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(197),on('click','columnShowClick',5),"jsonly");$Bb=($_POST?$_POST["comments"]:get_setting("comments"));if(support("comment")){echo +checkbox("comments",1,$Bb,lang(57),on('click','editingCommentsClick',true),"jsonly").' ';$c=" name='Comment' data-maxlength='".(min_version(5.5)?2048:60)."'".($Bb?"":" class='hidden'");echo +adminer()->commentInput('TABLE',$c,$J["Comment"]);}echo'

    + +';}echo' +';if($a!="")echo' +';if($ii&&(JUSH=='sql'||$a=="")){$ji=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(199),$J["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$ii),$J["partition_by"],on('change','partitionByChange').on_help_value('.','PARTITION BY $&'))."\n","()\n",lang(200).": \n","\n","\n";foreach($J["partition_names"]as$x=>$X)echo'','\n\n";}echo +input_token(),'

    +';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$We=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Te=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$We[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$We[]="SPATIAL";if(min_version('',11.7)&&preg_match('~MyISAM|InnoDB~i',$S["Engine"]))$We[]="VECTOR";$w=indexes($a);$n=fields($a);$Ki=array();if(JUSH=="mongo"){$Ki=$w["_id_"];unset($We[0]);unset($w["_id_"]);}$J=$_POST;if($J)save_settings(array("index_options"=>$J["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($J["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$We)){$e=array();$Sf=array();$sc=array();$Bh=array();$Ue=(support("partial_indexes")?$v["partial"]:"");$Se=(in_array($v["algorithm"],$Te)?$v["algorithm"]:"");$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$qc=idx($v["descs"],$x);$Ah=idx($v["opclasses"],$x);$O[]=($n[$d]?idf_escape($d):$d).($y?"(".(+$y).")":"").($Ah!=""?" ".idf_escape($Ah):"").($qc?" DESC":"");$e[]=$d;$Sf[]=($y?:null);$sc[]=$qc;$Bh[]="$Ah";}}$kd=$w[$C];if($kd){ksort($kd["columns"]);ksort($kd["lengths"]);ksort($kd["descs"]);if($v["type"]==$kd["type"]&&array_values($kd["columns"])===$e&&(!$kd["lengths"]||array_values($kd["lengths"])===$Sf)&&array_values($kd["descs"])===$sc&&(!$kd["opclasses"]||array_values($kd["opclasses"])===$Bh)&&$kd["partial"]==$Ue&&(!$Te||$kd["algorithm"]==$Se)){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O,$Se,$Ue);}}foreach($w +as$C=>$kd)$b[]=array($kd["type"],$C,"DROP");if(!$b)redirect(ME."table=".url_escape($a));queries_redirect(ME."table=".url_escape($a),lang(203),alter_indexes($a,$b));}page_header(lang(154),$l,array("table"=>$a),h($a));$Ad=array_keys($n);if($_POST["add"]){foreach($J["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$x]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w +as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}$Sf=(JUSH=="sql"||JUSH=="mssql");$Bh=driver()->indexOpclasses();$Xj=($_POST?$_POST["options"]:get_setting("index_options"));echo' +
    +
    + + + +';if($Ki){echo"
    ',lang(204);$Le=" class='idxopts".($Xj?"":" hidden")."'";if($Te)echo"".lang(205).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'',lang(206).($Sf?" (".lang(207).")":"");if($Sf||support("descidx"))echo +checkbox("options",1,$Xj,lang(127),on('click','indexOptionsShow'),"jsonly")."\n";echo'',lang(208);if(support("partial_indexes"))echo"".lang(209);echo' +
    PRIMARY";foreach($Ki["columns"]as$x=>$d)echo +select_input(" disabled",array_combine($Ad,$Ad),$d)," ";echo"\n";}$wf=1;foreach($J["indexes"]as$v){if(!$_POST["drop_col"]||$wf!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$wf][type]",array(-1=>"")+$We,$v["type"],($wf==count($J["indexes"])?on('change','indexesAddRow'):""),"label-type");if($Te)echo"".html_select("indexes[$wf][algorithm]",array_merge(array(""),$Te),$v['algorithm'],"","label-algorithm");echo"";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"".select_input(" name='indexes[$wf][columns][$s]' title='".lang(55)."'".on('change','indexesChangeColumn',(JUSH=="sql"?"":$_GET["indexes"]."_")),($n&&($d==""||$n[$d])?array_combine($Ad,$Ad):array()),$d)," ",($Sf?"":"");if($Bh){$Ah=idx($v["opclasses"],$x);echo +html_select("indexes[$wf][opclasses][$s]",array(""=>"(".lang(210).")")+array_combine($Bh,$Bh)+($Ah!=""?array($Ah=>$Ah):array()),$Ah),doc_link(array('pgsql'=>'indexes-opclass.html'));}echo(support("descidx")?checkbox("indexes[$wf][descs][$s]",1,idx($v["descs"],$x),lang(66)):""),"
    ","
    ";$s++;}echo"
    \n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$wf]","x",lang(130),on('click','editingRemoveRow','indexes$1[type]'));}$wf++;}echo'
    +
    +

    + +',input_token(),'

    +';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(211),drop_databases(array(DB)));}elseif($C!==DB){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".url_escape($C),lang(212),rename_database($C,(string)$J["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$wk=true;$Jf="";foreach($i +as$j){if(count($i)==1||$j!=""){if(!create_database($j,(string)$J["collation"]))$wk=false;$Jf=$j;}}restart_session();set_session("dbs",null);queries_redirect(preg_replace('~&db=[^&]*~','',ME)."db=".url_escape($Jf),lang(213),$wk);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(214));}}page_header(DB!=""?lang(74):lang(134),$l,array(),h(DB));$vb=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$vb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$de){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$de,$A)&&$A[1]){$C=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo' +
    +

    +',($_POST["add"]||strpos($C,"\n")?'
    ':'')."\n",($vb?html_select("collation",array(""=>"(".lang(121).")")+$vb,$J["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):"")."\n",' +';if(DB!="")echo"\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo +icon("plus","add[0]","+",lang(128))."\n";echo +input_token(),'

    +';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(215));else{$C=trim($J["name"]);$_ +.=url_escape($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,lang(216));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,lang(217));else +redirect($_);}}page_header($_GET["ns"]!=""?lang(75):lang(76),$l);if(!$J)$J["name"]=$_GET["ns"];echo' +
    +

    + +';if($_GET["ns"]!="")echo"\n";echo +input_token(),'

    +';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(218).": ".h($ca),$l);$wj=(isset($_GET["callf"])?"FUNCTION":"PROCEDURE");$uj=routine($_GET["call"],$wj);$Oe=array();$Vh=array();foreach($uj["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$Vh[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Oe[]=$s;}if(!$l&&$_POST){$cb=array();foreach($uj["fields"]as$x=>$m){$X="";if(in_array($x,$Oe)){$X=process_input($m);if($X===false)$X="''";if(isset($Vh[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($Vh[$x]))$cb[]="@".idf_escape($m["field"]);elseif(in_array($x,$Oe))$cb[]=$X;}$G=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($uj["returns"],"type")=="record"?"* FROM ":"").table($ca)."(".implode(", ",$cb).")";$qk=microtime(true);$H=connection()->multi_query($G);$sa=connection()->affected_rows;echo +adminer()->selectQuery($G,$qk,!$H);if(!$H)echo"

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

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

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

    + +',input_token(),'

    + +',adminer()->commentValue($wj,$uj['comment']);}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Sk=array();foreach($J["source"]as$x=>$X)$Sk[$x]=$J["target"][$x];$J["target"]=$Sk;}if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(" $C"=>($J["drop"]?"":" ".format_foreign_key($J))));else{$b="ALTER TABLE ".table($a);$H=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$J["drop"])$H=queries("$b ADD".format_foreign_key($J));}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(220):($C!=""?lang(221):lang(222))),$H);if(!$J["drop"])$l=lang(223);}page_header(($C!=""?lang(224):lang(159)),$l,array("table"=>$a),h($C!=""?$C:$a));if($_POST){ksort($J["source"]);if($_POST["change"]||$_POST["change-js"])$J["target"]=array();else$J["source"][]="";}elseif($C!=""){$Rd=foreign_keys($a);$J=$Rd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo' +
    +';$fk=array_keys(fields($a));if($J["db"]!="")connection()->select_db($J["db"]);if($J["ns"]!=""){$Qh=get_schema();set_schema($J["ns"]);}$cj=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Sk=array_keys(fields(in_array($J["table"],$cj)?$J["table"]:reset($cj)));$c=on('change','foreignChange');echo"

    \n";if(support("scheme")){$Aj=array_filter(adminer()->schemas(),function($L){return!information_schema(DB,$L);});echo"";if($J["ns"]!="")set_schema($Qh);}elseif(JUSH!="sqlite"){$ic=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$ic[]=$j;}echo"";}echo +input_hidden("change-js"),'

    + + +';$wf=0;foreach($J["source"]as$x=>$X){echo"","
    ',lang(156),'',lang(157),'
    ".html_select("source[".(+$x)."]",array(-1=>"")+$fk,$X,($wf==count($J["source"])-1?on('change','foreignAddRow'):""),"label-source"),"".html_select("target[".(+$x)."]",$Sk,idx($J["target"],$x),"","label-target");$wf++;}echo'
    +

    + + +',(support("deferrable")?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$J["deferrable"]).' ':''),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'

    + +

    +';if($C!="")echo' +';echo +input_token(),'

    +';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Rh="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Rh=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($J["name"]);$Ca=" AS\n$J[select]";$ag=ME."table=".url_escape($C);$B=lang(228);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Rh=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ca,$ag,$B);else{$Wk="adminer_".uniqid();drop_create("DROP $Rh ".table($a),"CREATE $U ".table($C).$Ca,"DROP $U ".table($C),"CREATE $U ".table($Wk).$Ca,"DROP $U ".table($Wk),($_POST["drop"]?substr(ME,0,-1):$ag),lang(229),$B,lang(230),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Rh!="VIEW");if(!$l)$l=adminer()->error();}page_header(($a!=""?lang(50):lang(231)),$l,array("table"=>$a),h($a));echo' +
    +

    ',lang(208),': +',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(150)):""),'

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

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

    +';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$kf=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$sk=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(232));elseif(in_array($J["INTERVAL_FIELD"],$kf)&&isset($sk[$J["STATUS"]])){$_j="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(233):lang(234)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$_j.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$_j)."\n".$sk[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(235).": ".h($aa):lang(236)),$l);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo' +
    + +
    ',lang(208),' +
    ',lang(237),' +
    ',lang(238),' +
    ',lang(239),' ',html_select("INTERVAL_FIELD",$kf,$J["INTERVAL_FIELD"]),'
    ',lang(137),'',html_select("STATUS",$sk,$J["STATUS"]),'
    ',lang(57),' +
    ',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(240)),'
    +

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

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

    +';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$uj=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$l){foreach($J["fields"]as$x=>$m){if($m["field"]=="")unset($J["fields"][$x]);}$th=routine_id($ca,routine($_GET["procedure"],$uj));$Xg=routine_id($J["name"],$J);$h=create_routine($uj,$J);$ag=substr(ME,0,-1);$B=lang(241);if(!$_POST["drop"]&&$th==$Xg&&connection()->flavor!="mysql")query_redirect(substr_replace($h,' OR REPLACE',6,0),$ag,$B);else{$Wk="adminer_".uniqid();drop_create("DROP $uj $th",$h,"DROP $uj $Xg",create_routine($uj,array("name"=>$Wk)+$J),"DROP $uj ".routine_id($Wk,$J),$ag,lang(242),$B,lang(243),$ca,$J["name"]);}}page_header(($ca!=""?(isset($_GET["function"])?lang(244):lang(245)).": ".h($ca):(isset($_GET["function"])?lang(246):lang(247))),$l);if(!$_POST){if($ca=="")$J["language"]="sql";else{$J=routine($_GET["procedure"],$uj);$J["name"]=$ca;}}$vb=(JUSH=="sql"?flat_collations():array());$vj=routine_languages();echo($vb?"".optionlist($vb)."":""),' +
    +

    ',lang(208),': +',($vj?"\n":""),' +

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

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

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

    +';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$J=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(249));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(250));elseif($ea!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($C),$_,lang(251));else +redirect($_);}page_header($ea!=""?lang(252).": ".h($ea):lang(253),$l);if(!$J)$J["name"]=$ea;echo' +
    +

    + +';if($ea!="")echo"\n";echo +input_token(),'

    +';}elseif(isset($_GET["type"])){function +enum_values($nc){$Y="'(?:[^']|'')*'";if(!preg_match('~^AS\s+ENUM\s*\(\s*('.$Y.'(?:\s*,\s*'.$Y.')*)\s*\)$~i',$nc,$A))return +null;preg_match_all('~'.$Y.'~',$A[1],$gg);return$gg[0];}function +add_enum_values($U,$rh,$Vg){$wh=enum_values($rh);$bh=enum_values($Vg);if($wh===null||$bh===null)return +null;$I=array();$s=0;foreach($bh +as$Y){if($Y===idx($wh,$s))$s++;else$I[]="ALTER TYPE ".idf_escape($U)." ADD VALUE $Y".($s +

    +',lang(208).": \n",doc_link(array('pgsql'=>"sql-createtype.html",),"?");textarea("as",$J["as"]);echo"

    \n";if($fa!="")echo"\n";echo +input_token(),' +';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$J=$_POST;if($J&&!$l){if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(),"",array(),"$C",($J["drop"]?"":$J["clause"]));else{$H=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));if(!$J["drop"])$H=queries("ALTER TABLE ".table($a)." ADD".($J["name"]!=""?" CONSTRAINT ".idf_escape($J["name"]):"")." CHECK ($J[clause])");}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(259):($C!=""?lang(260):lang(261))),$H);}page_header(($C!=""?lang(262):lang(161)),$l,array("table"=>$a),h($C!=""?$C:$a));if(!$J){$lb=driver()->checkConstraints($a);$J=array("name"=>$C,"clause"=>$lb[$C]);}echo' +

    +

    ';if(JUSH!="sqlite")echo +lang(208).': ';echo +doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'

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

    +';if($C!="")echo' +';echo +input_token(),'

    +';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$wl=trigger_options();$J=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$wl["Timing"])&&in_array($_POST["Event"],$wl["Event"])&&in_array($_POST["Type"],$wl["Type"])){$xh=" ON ".table($a);$Hc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$xh:"");$ag=ME."table=".url_escape($a);if($_POST["drop"])query_redirect($Hc,$ag,lang(263));else{if($C!="")queries($Hc);queries_redirect($ag,($C!=""?lang(264):lang(265)),queries(create_trigger($xh,$_POST)));if($C!="")queries(create_trigger($xh,$J+array("Type"=>reset($wl["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(266):lang(163)),$l,array("table"=>$a),h($C!=""?$C:$a));$ul=on('change','triggerChange',"^".preg_quote($a,"/")."_[ba][iud]$",$a);echo' +
    + +
    ',lang(267),'',html_select("Timing",$wl["Timing"],$J["Timing"],$ul),'
    ',lang(268),'',html_select("Event",$wl["Event"],$J["Event"],$ul),(in_array("UPDATE OF",$wl["Event"])?" ":""),'
    ',lang(56),'',html_select("Type",$wl["Type"],$J["Type"]),'
    ',lang(208),' +
    +',script("fire(qs('#form')['Timing'], 'change');"),'

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

    + +';if($C!="")echo' +';echo +input_token(),'

    +';}elseif(isset($_GET["user"])){function +grant($de,array$Pi,$e,$xh){if(!$Pi)return +true;if($Pi==array("ALL PRIVILEGES","GRANT OPTION"))return($de=="GRANT"?queries("$de ALL PRIVILEGES$xh WITH GRANT OPTION"):queries("$de ALL PRIVILEGES$xh")&&queries("$de GRANT OPTION$xh"));return +queries("$de ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Pi).$e).$xh);}$ga=$_GET["user"];$Pi=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Nb)$Pi[$Nb=="File access on server"?"Server Admin":$Nb][$J["Privilege"]]=$J["Comment"];}unset($Pi["Server Admin"]["Usage"]);foreach($Pi["Tables"]as$x=>$X)unset($Pi["Databases"][$x]);$Wg=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$Wg[$X]=(array)$Wg[$X]+idx($_POST["grants"],$x,array());}$ee=array();if(isset($_GET["host"])&&($H=connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$gg,PREG_SET_ORDER)){foreach($gg +as$X){if($X[1]!="USAGE")$ee["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$ee["$A[2]$X[2]"]["GRANT OPTION"]=true;}}}}if($_POST&&!$l){$vh=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $vh",ME."privileges=",lang(269));else{$ah=q($_POST["user"])."@".q($_POST["host"]);$ni=$_POST["pass"];$Ub=false;$H=true;if($vh!=$ah){$Ub=queries("CREATE USER $ah IDENTIFIED BY ".($_POST["hashed"]?"PASSWORD ":"").q($ni));$H=$Ub;}elseif($ni!="")$H=queries("SET PASSWORD FOR $ah = ".(min_version(8,99)||$_POST["hashed"]?q($ni):"PASSWORD(".q($ni).")"));if($H){$qj=array();foreach($Wg +as$jh=>$de){if(isset($_GET["grant"]))$de=array_filter($de);$de=array_keys($de);if(isset($_GET["grant"]))$qj=array_diff(array_keys(array_filter($Wg[$jh],'strlen')),$de);elseif($vh==$ah){$sh=array_keys((array)$ee[$jh]);$qj=array_diff($sh,$de);$de=array_diff($de,$sh);unset($ee[$jh]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$jh,$A)&&(!grant("REVOKE",$qj,$A[2]," ON $A[1] FROM $ah")||!grant("GRANT",$de,$A[2]," ON $A[1] TO $ah"))){$H=false;break;}}}if($H&&isset($_GET["host"])){if($vh!=$ah)queries("DROP USER $vh");elseif(!isset($_GET["grant"])){foreach($ee +as$jh=>$qj){if(preg_match('~^(.+)(\(.*\))?$~U',$jh,$A))grant("REVOKE",array_keys($qj),$A[2]," ON $A[1] FROM $ah");}}}if($H&&!Queries::$queries)redirect(ME."privileges=");queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(270):lang(271)),$H);if($Ub)connection()->query("DROP USER $ah");}}page_header((isset($_GET["host"])?lang(40).": ".h("$ga@$_GET[host]"):lang(170)),$l,array("privileges"=>array('',lang(78))));$J=$_POST;if($J)$ee=$Wg;else{$J=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$ee[(DB==""||$ee?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    + +
    ',lang(38),' +
    ',lang(40),' +
    ',lang(41),' +',($J["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8,99)?"":checkbox("hashed",1,$J["hashed"],lang(272),on('click','hashedClick'))),'
    + +',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(38),"Databases"=>lang(42),"Tables"=>lang(152),"Procedures"=>lang(273),)as$Nb=>$qc){foreach((array)$Pi[$Nb]as$Oi=>$_b){echo"$qc'.h($Oi);$s=0;foreach($ee +as$jh=>$de){$C="'grants[$s][".h(strtoupper($Oi))."]'";$Y=$de[strtoupper($Oi)];if($Nb=="Server Admin"&&$jh!=(isset($ee["*.*"])?"*.*":".*"))echo"
    ".lang(78).doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($ee +as$jh=>$de){echo''.($jh!="*.*"?"":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else +echo"";$s++;}}}echo"
    \n",'

    + +';if(isset($_GET["host"]))echo' +';echo +input_token(),'

    +';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$Cf=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Cf++;}queries_redirect(ME."processlist=",lang(276,$Cf),$Cf||!$_POST["kill"]);}}page_header(lang(135),$l);echo' +
    +
    + +';$s=-1;foreach(adminer()->processList()as$s=>$J){if(!$s){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($J +as$x=>$X)echo"$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"
    ".checkbox("kill[]",$J[JUSH=="sql"?"Id":"pid"],0):"");foreach($J +as$x=>$X)echo"".($X!=""&&((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$J["Command"]))||(JUSH=="pgsql"&&$x=="query")||(JUSH=="oracle"&&$x=="sql_text"))?"".shorten_utf8($X,100,"").' '.lang(277).''.' '.copy_icon():h($X));echo"\n";}echo'
    +
    +

    +',script("copyCode(qsl('table'));");if(support("kill"))echo($s+1)."/".lang(278,max_connections()),"

    \n";echo +input_token(),'

    +',script("tableCheck();");}elseif($_GET["select"]!=""){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$Rd=column_foreign_keys($a);$qh=$S["Oid"];$ra=get_settings("adminer_import");$sj=array();$e=array();$Ej=array();$Jh=array();$Zk=null;foreach($n +as$x=>$m){$C=adminer()->fieldName($m);$Rg=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$Rg;if(is_shortable($m))$Zk=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$Ej[$x]=$Rg;if(isset($m["privileges"]["order"])&&$C!="")$Jh[$x]=$Rg;$sj+=$m["privileges"];}list($M,$ge)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$ge=array_unique($ge);$qf=count($ge)selectSearchProcess($n,$w);$Ih=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Gl=>$J){$Ca=convert_field($n[key($J)]);$M=array($Ca?:idf_escape(key($J)));$Z[]=where_check(bracket_escape($Gl,true),$n);$I=driver()->select($a,$M,$Z,$M);if($I)echo +first($I->fetch_row());}exit;}$Ki=$Il=array();foreach($w +as$v){if($v["type"]=="PRIMARY"){$Ki=array_flip($v["columns"]);$Il=($M?$Ki:array());foreach($Il +as$x=>$X){if(in_array(idf_escape($x),$M))unset($Il[$x]);}break;}}if($qh&&!$Ki){$Ki=$Il=array($qh=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($qh));}if($_POST&&!$l){$qm=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$lb=array();foreach($_POST["check"]as$hb)$lb[]=where_check($hb,$n);$qm[]="((".implode(") OR (",$lb)."))";}$sm=$qm;$qm=($qm?"\nWHERE ".implode(" AND ",$qm):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$Gj=($M?:array("*"));$Pb=convert_fields($e,$n,$M);if($Pb)$Gj[]=substr($Pb,2);$G="";if(is_array($_POST["check"])&&!$Ki){$Wd=implode(", ",$Gj)."\nFROM ".table($a);$ie=($ge&&$qf?"\nGROUP BY ".implode(", ",$ge):"").($Ih?"\nORDER BY ".implode(", ",$Ih):"");$El=array();foreach($_POST["check"]as$X)$El[]="(SELECT".limit($Wd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$ie,1).")";$G=implode(" UNION ALL ",$El);}adminer()->dumpData($a,"table",$G,$Gj,$sm,($qf?$ge:array()),$Ih);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Rd)){if($_POST["save"]||$_POST["delete"]){$H=true;$sa=0;$Ra=false;$O=array();if(!$_POST["delete"]){foreach($n +as$C=>$X){$u=bracket_escape($C);if(isset($_POST["fields"][$u])||$_FILES["fields-$u"]){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}}if($_POST["delete"]||$O){$G=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($Ki&&is_array($_POST["check"]))||$qf){$H=($_POST["delete"]?driver()->delete($a,$qm):($_POST["clone"]?queries("INSERT $G$qm".driver()->insertReturning($a)):driver()->update($a,$O,$qm)));$sa=connection()->affected_rows;if(is_object($H))$sa+=$H->num_rows;}else{$Ra=count((array)$_POST["check"])>1&&driver()->begin();foreach((array)$_POST["check"]as$X){$pm="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$H=($_POST["delete"]?driver()->delete($a,$pm,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$pm)):driver()->update($a,$O,$pm,1)));if(!$H)break;$sa+=connection()->affected_rows;}if($Ra&&$H&&!driver()->commit())$H=false;}}$B=lang(280,$sa);if($_POST["clone"]&&$H&&$sa==1){$Lf=last_id($H);if($Lf)$B=lang(191," $Lf");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page|next":""),$B,$H);if($Ra)driver()->rollback();if(!$_POST["delete"]){$Ci=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$Ci),$Ci,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){$H=true;$sa=0;$Ra=count((array)$_POST["val"])>1&&driver()->begin();foreach((array)$_POST["val"]as$Gl=>$J){$O=array();foreach($J +as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$H=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check(bracket_escape($Gl,true),$n),($qf||$Ki?0:1)," ");if(!$H)break;$sa+=connection()->affected_rows;}if($Ra)$H=$H&&driver()->commit();queries_redirect(remove_from_uri(),lang(280,$sa),$H);if($Ra)driver()->rollback();}elseif(!is_string($Bd=get_file("csv_file",true)))$l=upload_error($Bd);elseif(!preg_match('~~u',$Bd))$l=lang(281);else{save_settings(array("output"=>$ra["output"],"format"=>$_POST["separator"]),"adminer_import");$wb=array_keys($n);$Lj=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$Yb=parse_csv($Bd,$Lj);$sa=count($Yb);driver()->begin();$K=array();foreach($Yb +as$x=>$em){if(!$x&&!array_diff($em,$wb)){$wb=$em;$sa--;}else{$O=array();foreach($em +as$s=>$sb)$O[idf_escape($wb[$s])]=($sb==""&&$n[$wb[$s]]["null"]?"NULL":q(csv_value($sb)));$K[]=$O;}}$H=(!$K||driver()->insertUpdate($a,$K,$Ki));if($H)driver()->commit();queries_redirect(remove_from_uri("page|next"),lang(282,$sa),$H);driver()->rollback();}}}$Gk=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else +page_header(lang(60).": $Gk",$l);$O=null;if(isset($sj["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){$Y=$X["val"];if(is_array($Y))$Y=(count($Y)==1&&preg_match('~^val-(.*)~s',reset($Y),$A)?$A[1]:"");if($X["col"]!=""&&$Y!=""&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$Y)))))$O +.="&set[".url_escape(bracket_escape($X["col"]))."]=".url_escape($Y);}}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"

    ".lang(283).($n?".":": ".adminer()->error())."\n";else{echo"

    \n","\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Ej,$w);adminer()->selectOrderPrint($Ih,$Jh,$w);adminer()->selectLimitPrint($z);if($Zk!==null)adminer()->selectLengthPrint($Zk);adminer()->selectActionPrint($w);echo"
    \n";foreach((array)$_GET["where"]as$X){if($X["op"]=="SQL"&&!in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"))){echo"

    ".lang(116).' '.lang(117)."\n";page_footer();exit;}}$D=$_GET["page"];$Ud=null;if($D=="last"){$Ud=get_val(count_rows($a,$Z,$qf,$ge));$D=floor(max(0,intval($Ud)-1)/$z);}$Fj=$M;$he=$ge;if(!$Fj){$Fj[]="*";$Pb=convert_fields($e,$n,$M);if($Pb)$Fj[]=substr($Pb,2);}foreach($M +as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($Ca=convert_field($m)))$Fj[$x]="$Ca AS $X";}if(JUSH=="pgsql"||JUSH=="mssql"){foreach((array)$_GET["columns"]as$x=>$X){if(isset($Fj[$x])&&$X["fun"])$Fj[$x].=" AS ".idf_escape(apply_sql_function($X["fun"],($X["col"]!=""?$X["col"]:"*")));}}if(!$qf&&$Il){foreach($Il +as$x=>$X){$Fj[]=idf_escape($x);if($he)$he[]=idf_escape($x);}}$H=driver()->select($a,$Fj,$Z,$he,$Ih,$z,$D,true);if(!is_object($H))echo"

    ".(adminer()->error()?:lang(25))."\n";else{if(JUSH=="mssql"&&$D)$H->seek($z*$D);$Tc=array();$K=array();while($J=$H->fetch_assoc()){if($D&&JUSH=="oracle")unset($J["RNUM"]);$K[]=$J;}$se=($z&&(support("cursor")?$_GET["next"]!="":count($K)>=$z));if(is_ajax()&&$se)header("X-Next-Page: ".pagination_href($D+1));if($_GET["modify"]&&$K){$pg=max_input_vars(count($K[0])+1,20);echo($pg&&count($K)>$pg?"

    ".max_input_vars_error()."\n":"");}echo"

    \n";if($_GET["page"]!="last"&&$z&&$ge&&$qf&&JUSH=="sql")$Ud=get_val(" SELECT FOUND_ROWS()");if(!$K)echo"

    ".lang(15)."\n";else{$Na=adminer()->backwardKeys($a,$Gk);echo"

    ","\n","".(!$ge&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($K,$Rd)as$Pg=>$J){$Fl=unique_array($K[$Pg],$w);if(!$Fl){$Fl=array();reset($M);foreach($K[$Pg]as$x=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$Fl[$x]=$X;next($M);}}$Gl="";foreach($Fl +as$x=>$X){$m=(array)$n[$x];$pf=is_blob($m);if((JUSH=="sql"||JUSH=="pgsql")&&($pf||preg_match('~'.text_type().'~',$m["type"]))&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($pf||JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($pf?(string)driver()->value($X,$m):$X);}$Gl +.="&".($X!==null?"where[".url_escape(bracket_escape($x))."]=".url_escape($X===false?"f":$X):"null[]=".url_escape($x));}echo"".(!$ge&&$M?"":"\n";}if(is_ajax())exit;echo"
    ");$Sg=array();$ae=array();reset($M);$Zi=1;foreach($K[0]as$x=>$X){if(!isset($Il[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$Zi):($X["fun"]?"*":h($x)));if($C!=""){$Zi++;$Sg[$x]=$C;$d=idf_escape($x);$Fe=remove_from_uri('(order|desc)[^=]*|page|next').'&order[0]='.url_escape($x);$qc="&desc[0]=1";$ck=preg_replace('~ DESC( NULLS LAST)?$~','',$Ih[0]);$ek=($ck==$d||$ck==$x);echo"";$Zd=apply_sql_function($X["fun"],$C);$dk=isset($m["privileges"]["order"])||$Zd!=$C;echo($dk?"$Zd":$Zd);$xg=($dk?"":'');if(!$X["fun"]&&isset($m["privileges"]["where"]))$xg +.=" =";echo($xg?"$xg":"");}$ae[$x]=$X["fun"];next($M);}}$Sf=array();if($_GET["modify"]){foreach($K +as$J){foreach($J +as$x=>$X)$Sf[$x]=max($Sf[$x],min(40,strlen(utf8_decode($X))));}}echo($Na?"".lang(285):"")."
    ".($qf||information_schema(DB)?"":"".lang(286)." ").checkbox("check[]",substr($Gl,1),in_array(substr($Gl,1),(array)$_POST["check"])));reset($M);foreach($J +as$x=>$X){if(isset($Sg[$x])){$d=current($M);$m=(array)$n[$x];if($X!=""&&(!isset($Tc[$x])||$Tc[$x]!=""))$Tc[$x]=(is_mail($X)?$Sg[$x]:"");$_="";if(is_blob($m)&&$X!="")$_=ME.'download='.url_escape($a).'&field='.url_escape($x).$Gl;if(!$_&&$X!==null){foreach((array)$Rd[$x]as$p){if(count($Rd[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$fk)$_ +.=where_link($s,$p["target"][$s],$K[$Pg][$fk]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.url_escape($p["db"]),ME):ME).'select='.url_escape($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.url_escape($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".url_escape($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Fl))$_ +.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Fl +as$zf=>$W)$_ +.=where_link($s++,$zf,$W);}$Ge=select_value($X,$_,$m,$Zk);$u=bracket_escape($Gl);$t=h("val[$u][".bracket_escape($x)."]");$Ei=idx(idx($_POST["val"],$u),bracket_escape($x));$Ll=idx($m["privileges"],"update");$Pc=!is_array($J[$x])&&!is_blob($m)&&is_utf8($X)&&$K[$Pg][$x]==$X&&!$ae[$x]&&!$m["generated"]&&$Ll;$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$n[idf_unescape($A[2])]["type"]:$m["type"]);$Yk=preg_match('~text|json|lob~',$U);$rf=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"".($Yk?"":"");}else{$cg=strpos($Ge,"");echo($Ll?" data-text='".($cg?2:($Yk?1:0))."'".($Pc?"":" data-warning='".lang(287)."'"):"").">$Ge";}}next($M);}if($Na)echo"";adminer()->backwardKeysPrint($Na,$K[$Pg]);echo"
    \n","
    \n";}if(!is_ajax()){if($K||$D||$se){$id=true;if($_GET["page"]!="last"){if(!$z||(count($K)<$z&&($K||!$D)))$Ud=($D?$D*$z:0)+count($K);elseif(JUSH!="sql"||!$qf){$Ud=($qf?false:found_rows($S,$Z));if(intval($Ud)$z);$ai=($z&&($se||$D));if($ai)echo($se?'

    '.lang(289).'':''),"\n";echo"

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

    ","".lang(82)."","";echo +input_token(),"

    \n",(!$ge&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(137):lang(136));$fm=($P?adminer()->showStatus():adminer()->showVariables());if(!$fm)echo"

    ".lang(15)."\n";else{echo"\n";foreach($fm +as$J){echo"";$x=array_shift($J);echo"
    ".h($x)."";foreach($J +as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: application/json; charset=utf-8");if($_GET["script"]=="db"){$zk=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($S[$x]));foreach(array_keys($zk+array("Auto_increment"=>0,"Rows"=>0))as$x){if(array_key_exists($x,$S))json_row("$x-$C",format_status($S,$x));if($S[$x]!=""&&isset($zk[$x]))$zk[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}}}if(function_exists('Adminer\db_status'))$zk=db_status();foreach($zk +as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill"){if(!$l)connection()->query("KILL ".number($_POST["kill"]));}else{foreach(count_tables(adminer()->databases(false))as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{if(!isset($_GET["select"])&&support("single_table")){$T=tables_list();if($T)redirect(ME.(support("table")?"table=":"select=").url_escape(key($T)));}$ug=ME.(isset($_GET["select"])?"select=&":"");$Qk=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Qk&&!$l&&!$_POST["search"]){$H=true;$B="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$B=lang(295);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B=lang(296);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B=lang(297);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$B=lang(298);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$J)$B +.="".h($R).": ".h($J["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$H=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?" ANALYZE":""),(array)$_POST["tables"]));$B=lang(299);}elseif(!$_POST["tables"])$B=lang(12);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$B +.="".h($J["Table"]).": ".h($J["Msg_text"])."
    ";}queries_redirect(relative_uri(),$B,$H);}page_header(($_GET["ns"]==""?lang(42).": ".h(DB):lang(86).": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){$Ih=$_GET["order"];$Xd=($Ih||support("fast_status"));echo"

    \n","

    ".lang(300)."

    \n";$Pk=($Xd?table_status():tables_list());if(!$Pk)echo"

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

    \n";if(support("table")){echo"
    ".lang(301)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," "," \n","
    \n";if(!$l&&$_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"
    \n","\n",'','\n";if($Ih){uasort($Pk,function($ja,$Ka)use($Ih,$Da){$I=($ja[$Ih]<$Ka[$Ih]?-1:($ja[$Ih]>$Ka[$Ih]?1:0));return(in_array($Ih,$Da)?$I:-$I);});}$T=0;$zk=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach($Pk +as$C=>$P){$im=($Xd?is_view($P):$P!==null&&!preg_match('~table|sequence~i',$P));$P=($Xd?$P:array('Engine'=>$P));$t=h("Table-".$C);echo'
    ',''.lang(152).'';$e=array("Engine"=>array(lang(302).doc_link(array('sql'=>'storage-engines.html'))));if(collations())$e["Collation"]=array(lang(141).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$e["Data_length"]=array(lang(303).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),"create",lang(51),);if(support("indexes"))$e["Index_length"]=array(lang(304).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),"indexes",lang(155),);$e["Data_free"]=array(lang(305).doc_link(array('sql'=>'show-table-status.html')),"edit",lang(52));if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=array(lang(58).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",lang(51),);$e["Rows"]=array(lang(306).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),"select",lang(48),);if(support("comment"))$e["Comment"]=array(lang(57).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')));$Da=array('Engine','Collation','Comment');foreach($e +as$x=>$d)echo"$d[0]";echo"
    '.checkbox(($im?"views[]":"tables[]"),$C,in_array("$C",$Qk,true),"","","",$t),''.(support("table")||support("indexes")?"".h($C).'':h($C));if($im&&!preg_match('~materialized~i',$P['Engine'])){$el=lang(151);echo''.(support("view")?"$el":$el),"?";if(support("comment"))echo''.h($P['Comment']);}else{if($Xd){foreach(array_keys($zk)as$x)$zk[$x]+=($P["Engine"]!="InnoDB"||$x!="Data_free"?idx($P,$x):0);}foreach($e +as$x=>$d){$t=" id='$x-".h($C)."'";echo($d[1]?"".format_status($P,$x)."":"".h(idx($P,$x,'?')));}$T++;}echo"\n";}echo"
    ".lang(278,count($Pk)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),(collations()?"".h(db_collation(DB,collations())):'');if($Xd&&function_exists('Adminer\db_status'))$zk=db_status();foreach($zk +as$x=>$yk)echo($e[$x]?"".($Xd?format_number($yk):""):"");echo"\n","
    \n",($Xd?'':script("ajaxSetHtml('".js_escape(ME)."script=db');")),"
    \n";if(!information_schema(DB)){$am=" ";$Eh=" ";$Mi=(JUSH=="sqlite"?$am." ":(JUSH=="pgsql"?$am.$Eh:(JUSH=="sql"?" ".$Eh." "." ":""))).(function_exists('Adminer\truncate_tables')?" ":"").(function_exists('Adminer\drop_tables')?"":"");echo($Mi?"\n";}echo"
    \n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"
    \n";if(support("routine")){echo"
    \n","

    ".lang(79)."

    \n";$xj=routines();if($xj){echo"\n",'\n";foreach($xj +as$J){$C=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".url_escape($J["ROUTINE_NAME"]));echo'','
    '.lang(208).''.lang(56).''.lang(248)."
    '.h($J["ROUTINE_NAME"]).'',''.h($J["ROUTINE_TYPE"]),''.h($J["DTD_IDENTIFIER"]),''.lang(158)."";}echo"
    \n";}echo'
    \n";}if(support("sequence")){echo"
    \n","

    ".lang(80)."

    \n";$Pj=get_vals("SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace = ".driver()->nsOid." ORDER BY relname");if($Pj){echo"\n","\n";foreach($Pj +as$X)echo"
    ".lang(208)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("type")){echo"
    \n","

    ".lang(7)."

    \n";$Xl=types();if($Xl){echo"\n","\n";foreach($Xl +as$X)echo"
    ".lang(208)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("event")){echo"
    \n","

    ".lang(81)."

    \n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","\n";foreach($K +as$J)echo"","
    ".lang(208)."".lang(315)."".lang(237)."".lang(238)."
    ".h($J["Name"]),"".($J["Execute at"]?lang(316)."".h($J["Execute at"]):lang(239)." ".h($J["Interval value"])." ".h($J["Interval field"])."".h($J["Starts"])),"".h($J["Ends"]),''.lang(158).'';echo"
    \n";$fd=get_val("SELECT @@event_scheduler");if($fd&&$fd!="ON")echo"

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

    \n";}}}}page_footer(); \ No newline at end of file diff --git a/public/adminer.php b/public/adminer.php index 4b44645..c2dbab0 100644 --- a/public/adminer.php +++ b/public/adminer.php @@ -1,4302 +1,108 @@ credentials();$I=Driver::connect($Vb[0],$Vb[1],$Vb[2]);return(is_object($I)?$I:null);}function -idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$Jf=substr($u,-1);return -str_replace($Jf.$Jf,$Jf,substr($u,1,-1));}function -q($Q){return -connection()->quote($Q);}function -idx($Ba,$x,$k=null){return($Ba&&array_key_exists($x,$Ba)?$Ba[$x]:$k);}function -number($X){return -preg_replace('~[^0-9]+~','',$X);}function -int_type(){return'(tiny|small|medium|big)?int(eger|\d)?';}function -number_type(){return'(^('.int_type().'|decimal|numeric|number|real|(binary_|half_|scaled_)?float\d?|(binary_)?double( precision)?|(small)?money)$)';}function -text_type(){return'char|text'.(JUSH=="sql"?'|enum|set':'');}function -is_searchable(array$m,array$X){if(!isset($m["privileges"]["where"]))return -false;$U=$m["type"];$Dj=$X["val"];$Sa='binary$|bytea|raw|image|bfile|^vector$'.(JUSH=="mssql"?'|^timestamp$':'|^bit').(JUSH=="oracle"?'|^blob|^long|rowid':'');if(preg_match("~$Sa~",$U))return -false;if(preg_match(number_type(),$U)){$ih='-?\d+(\.\d+)?';return(bool)preg_match('~^'.$ih.(preg_match('~IN$~',$X["op"])?"( *, *$ih)*":'').'$~',$Dj);}if(preg_match('~^(small)?date|^timestamp~',$U))return(bool)preg_match('~^\d+-\d+-\d+~',$Dj);if(preg_match('~^time~',$U))return(bool)preg_match('~^\d+:\d+~',$Dj);if(preg_match('~^bool~',$U)||(JUSH=="mssql"&&$U=="bit"))return(bool)preg_match('~^(t|f|true|false|[01])$~i',$Dj);return -true;}function -remove_slashes(array$em,$Fd=false){$I=array();foreach($em -as$x=>$X)$I[stripslashes($x)]=(is_array($X)?remove_slashes($X,$Fd):($Fd?$X:stripslashes($X)));return$I;}function -bracket_escape($u,$La=false){static$ol=array(':'=>':1',']'=>':2','['=>':3','"'=>':4','='=>':5');return -strtr($u,($La?array_flip($ol):$ol));}function -url_escape($Q){static$ol=array();if(!$ol){$ol=array(' '=>'+');foreach(str_split("\"'<>#%&+=?".ini_get("arg_separator.input"))as$eb)$ol[$eb]=sprintf('%%%02X',ord($eb));for($s=0;$s<256;$s++){if($s<32||$s>126)$ol[chr($s)]=sprintf('%%%02X',$s);}}return -strtr((string)$Q,$ol);}function -min_version($hm,$eg="",$g=null){$g=connection($g);$Sj=$g->server_info;if($eg&&preg_match('~([\d.]+)-MariaDB~',$Sj,$A)){$Sj=$A[1];$hm=$eg;}return$hm&&version_compare($Sj,$hm)>=0;}function -charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function -ini_set($Fh,$Y){return(function_exists('ini_set')?\ini_set($Fh,$Y):false);}function -ini_bool($df){$X=ini_get($df);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function -ini_bytes($df){$X=ini_get($df);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function -max_input_vars($J,$Uh){$ig=(int)ini_get("max_input_vars");return($ig?(int)floor(($ig-$Uh)/$J):0);}function -max_input_vars_error(){$df="max_input_vars";return -lang(0,"$df = ".ini_get($df)."");}function -sid(){static$I;if($I===null)$I=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function -set_password($gm,$N,$V,$E){$_SESSION["pwds"][$gm][$N][$V]=($_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,$m=0,$Gb=null){$Gb=connection($Gb);$H=$Gb->query($G);if(!is_object($H))return -false;$J=$H->fetch_row();return($J?$J[$m]: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,$Vj=true){$g=connection($g);$I=array();$H=$g->query($G);if(is_object($H)){while($J=$H->fetch_row()){if($Vj)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function -get_rows($G,$g=null,$l="

    "){$Gb=connection($g);$I=array();$H=$Gb->query($G);if(is_object($H)){while($J=$H->fetch_assoc())$I[]=$J;}elseif(!$H&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.adminer()->error()."\n";return$I;}function -unique_array($J,array$w){foreach($w -as$v){if(preg_match("~^(PRIMARY|UNIQUE)$~",$v["type"])&&!$v["partial"]){$I=array();foreach($v["columns"]as$x){if(!isset($J[$x]))continue -2;$I[$x]=$J[$x];}return$I;}}}function -escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return -idf_escape($x);}function -where(array$Z,array$n=array()){$I=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$_d=$m["type"];$pf=$m&&(is_blob($m)||preg_match('~binary~',$_d));$I[]=$d.($pf&&!is_utf8($X)?" = ".driver()->quoteBinary($X):(JUSH=="sql"&&$_d=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^jsonb?$~',$m["full_type"])?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($_d,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))))));if(JUSH=="sql"&&preg_match('~char|text~',$_d)&&preg_match("~[^ -@]~",$X))$I[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$I[]=escape_key($x)." IS NULL";return -implode(" AND ",$I);}function -where_columns(array$n){$I=array();foreach((array)$_GET["null"]as$x)$I[$x]=true;foreach((array)$_GET["where"]as$x=>$X){$x=bracket_escape($x,true);foreach($n -as$C=>$m){if($x==$C||strpos($x,idf_escape($C))!==false)$I[$C]=true;}}return$I;}function -where_check($X,array$n=array()){parse_str($X,$hb);remove_slashes(array(&$hb));return -where($hb,$n);}function -where_link($s,$d,$Y,$Ch="="){$_h=($Y!==null?$Ch:"IS NULL");return"&where[$s][col]=".url_escape($d).($_h!=first(adminer()->operators())?"&where[$s][op]=".url_escape($_h):"")."&where[$s][val]=".url_escape($Y);}function -convert_fields(array$e,array$n,array$M=array()){$I="";foreach($e -as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$Ca=convert_field($n[$x]);if($Ca)$I -.=", $Ca AS ".idf_escape($x);}return$I;}function -cookie_path(){return -strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),array(";"=>"%3B",","=>"%2C"));}function -cookie($C,$Y,$Tf=2592000){header("Set-Cookie: $C=".rawurlencode($Y).($Tf?"; expires=".gmdate("D, d M Y H:i:s",time()+$Tf)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"").($C=="adminer_import"?"":"; HttpOnly")."; SameSite=lax",false);}function -get_url($Pl,$Nb){$http_response_header=null;$bd=array();set_error_handler(function($ad,$l)use(&$bd){$bd[]=preg_replace('~^file_get_contents\([^)]*\):\s*~','',$l);return -true;});$I=file_get_contents($Pl,false,$Nb);restore_error_handler();$xe=(function_exists('http_get_last_response_headers')?http_get_last_response_headers():$http_response_header);return -array($I,(preg_match('~^HTTP/[\d.]+ (\d+)~',idx($xe,0,''),$A)?$A[1]:''),(array)$xe,($I===false?implode("\n",$bd):''),);}function -get_settings($Qb){parse_str($_COOKIE[$Qb],$Wj);return$Wj;}function -get_setting($x,$Qb="adminer_settings",$k=null){return -idx(get_settings($Qb),$x,$k);}function -save_settings(array$Wj,$Qb="adminer_settings"){$Y=http_build_query($Wj+get_settings($Qb));cookie($Qb,$Y);$_COOKIE[$Qb]=$Y;}function -restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==PHP_SESSION_NONE))session_start();}function -stop_session($Od=false){$Sl=ini_bool("session.use_cookies");if(!$Sl||$Od){session_write_close();if($Sl&&ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function -set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function -auth_url($gm,$N,$V,$j=null){$Ol=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($gm=='mssql'||$gm=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Ol,$A);return"$A[1]?".(sid()?SID."&":"").($_GET["ext"]?"ext=".url_escape($_GET["ext"])."&":"").($gm!="server"||$N!=""?url_escape($gm)."=".url_escape($N)."&":"")."username=".url_escape($V).($j!=""?"&db=".url_escape($j):"").($A[2]?"&$A[2]":"");}function -is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function -redirect($ag,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($ag!==null?$ag:$_SERVER["REQUEST_URI"]))][]=$B;}if($ag!==null){if($ag=="")$ag=".";header("Location: $ag");exit;}}function -query_redirect($G,$ag,$B,$aj=true,$jd=true,$ud=false,$bl=""){if($jd){$qk=microtime(true);$ud=!connection()->query($G);$bl=format_time($qk);}$jk=($G?adminer()->messageQuery($G,$bl,$ud):"");if($ud){adminer()->error -.=adminer()->error().$jk.script("messagesPrint();")."
    ";return -false;}if($aj)redirect($ag,$B.$jk);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$T,$dd='Adminer\table'){foreach($T -as$R){if(!queries("$G ".$dd($R)))return -false;}return -true;}function -queries_redirect($ag,$B,$aj){$Ui=implode("\n",Queries::$queries);$bl=format_time(Queries::$start);return -query_redirect($Ui,$ag,$B,$aj,false,!$aj,$bl);}function -format_time($qk){return -lang(1,max(0,microtime(true)-$qk));}function -relative_uri($Ol=''){return -preg_replace_callback('~^[^?]*~',function($A){return -str_replace(":","%3A",$A[0]);},preg_replace('~^[^?]*/([^?]*)~','\1',($Ol?:$_SERVER["REQUEST_URI"])));}function -remove_from_uri($bi=""){return -substr(preg_replace("~(?<=[?&])($bi".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function -get_files($C,$jc=false){$Bd=$_FILES[$C];if(!$Bd)return -null;foreach($Bd -as$x=>$X)$Bd[$x]=(array)$X;$I=array();foreach($Bd["error"]as$x=>$l){if($l)return$l;$o=$Bd["name"][$x];$jl=$Bd["tmp_name"][$x];$Lb=file_get_contents($jc&&preg_match('~\.gz$~',$o)?"compress.zlib://$jl":$jl);if($jc){$qk=substr($Lb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$qk))$Lb=iconv("utf-16","utf-8",$Lb);elseif($qk=="\xEF\xBB\xBF")$Lb=substr($Lb,3);}$I[]=array($o,$Lb);}return$I;}function -get_file($x,$jc=false,$pc=""){$Ed=get_files($x,$jc);if(!is_array($Ed))return$Ed;$I='';foreach($Ed -as$Bd){$Lb=$Bd[1];$I -.=$Lb;if($pc)$I -.=(preg_match("($pc\\s*\$)",$Lb)?"":$pc)."\n\n";}return$I;}function -upload_error($l){$qg=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?lang(2).($qg?" ".lang(3,$qg):""):lang(4));}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(5)),preg_split('~~u',lang(6),-1,PREG_SPLIT_NO_EMPTY));}function -format_status(array$S,$x){$X=idx($S,$x,'?');if(!is_numeric($X))return -h($X);if($X<0)return'?';$za=($x=="Rows"&&(JUSH=="sqlite"||$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")));return($za?"~ ":"").format_number($X);}function -friendly_url($X){return -preg_replace('~\W~i','-',$X);}function -table_status1($R,$vd=false){$I=table_status($R,$vd);return($I?reset($I):array("Name"=>$R));}function -column_foreign_keys($R){$I=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$I[$X][]=$p;}return$I;}function -fields_from_edit(){$I=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$I[$C]=array("field"=>$C,"full_type"=>"","type"=>"","privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>true,"auto_increment"=>($C==driver()->primary),);}return$I;}function -dump_headers($Ie,$Ng=false){$I=adminer()->dumpHeaders($Ie,$Ng);$Wh=$_POST["output"];if($Wh!="text"||$I=="tar"){$Cb=($Wh!="text"&&$Wh!="file"&&preg_match('~^[0-9a-z]+$~',$Wh)?".$Wh":"");header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Ie).".$I$Cb");}session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$I;}function -dump_csv(array$J){$zl=$_POST["format"]=="tsv";foreach($J -as$x=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($zl?'\t':'[,;]|^$').'~',$X))$J[$x]='"'.str_replace('"','""',$X).'"';}echo -implode(($_POST["format"]=="csv"?",":($zl?"\t":";")),$J)."\r\n";}function -parse_csv($Yb,$Lj){$I=array();preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Yb,$gg);foreach($gg[0]as$J){preg_match_all("~((?>\"[^\"]*\")+|[^$Lj]*)$Lj~",$J.$Lj,$hg);$I[]=$hg[1];}return$I;}function -csv_value($X){return(preg_match('~^".*"$~s',$X)?str_replace('""','"',substr($X,1,-1)):$X);}function -apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function -get_temp_dir(){return -ini_get("upload_tmp_dir")?:sys_get_temp_dir();}function -file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;@chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function -file_write_unlock($q,$cc){rewind($q);fwrite($q,$cc);ftruncate($q,strlen($cc));file_unlock($q);}function -file_unlock($q){flock($q,LOCK_UN);fclose($q);}function -first(array$Ba){return -reset($Ba);}function -password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$I=stream_get_contents($q);if(!$I){$I=rand_string();file_write_unlock($q,$I);}else -file_unlock($q);return$I;}function -rand_string(){return(function_exists('random_bytes')?bin2hex(random_bytes(16)):md5(uniqid(strval(mt_rand()),true)));}function -select_value($X,$_,array$m,$Zk){if(is_array($X)){$I="";if(array_filter($X,'is_array')==array_values($X)){$Af=array();foreach($X -as$W)$Af+=array_fill_keys(array_keys($W),null);foreach(array_keys($Af)as$zf)$I -.="".h($zf);foreach($X -as$W){$I -.="";foreach(array_merge($Af,$W)as$Zl)$I -.="".select_value($Zl,$_,$m,$Zk);}}else{foreach($X -as$zf=>$W)$I -.="".($X!=array_values($X)?"".h($zf):"")."".select_value($W,$_,$m,$Zk);}return"$I
    ";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$X=driver()->value($X,$m);$I=adminer()->editVal($X,$m);if($I!==null){if(!is_utf8($I))$I="\0";elseif($Zk!=""&&is_shortable($m))$I=shorten_utf8($I,max(0,+$Zk));else$I=h($I);}return -adminer()->selectVal($I,$_,$m,$X);}function -is_blob(array$m){return -preg_match('~blob|bytea|raw|file'.(JUSH=="mssql"?'|binary|image':'').'~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),lang(7),array()));}function -is_mail($Rc){$Ea='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$si="$Ea+(\\.$Ea+)*@($Ec?\\.)+$Ec";return -is_string($Rc)&&preg_match("(^$si(,\\s*$si)*\$)i",$Rc);}function -is_url($Q){$Ec='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return -preg_match("~^((https?):)?//($Ec?\\.)+$Ec(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function -is_shortable(array$m){return!preg_match('~'.number_type().'|date|time|year~',$m["type"]);}function -host_port($N){return(preg_match('~^(:([^:].*)|(\[(.+)\]|(([^:]+://)?[^:]+))(:(\d+))?)$~',$N,$A)?array($A[4].$A[5],$A[2].$A[8]):array($N,''));}function -count_rows($R,array$Z,$qf,array$ge){$G=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($qf&&(JUSH=="sql"||count($ge)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$ge).")$G":"SELECT COUNT(*)".($qf?" FROM (SELECT 1$G GROUP BY ".implode(", ",$ge).") x":$G));}function -slow_query($G){$j=adminer()->database();$cl=adminer()->queryTimeout();$bk=driver()->slowQuery($G,$cl);$g=null;if(!$bk&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$Bf=get_val(connection_id(),0,$g);echo -script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Bf&token=".get_token()."'); }, 1000 * $cl);");}}ob_flush();flush();$I=@get_key_vals(($bk?:$G),$g,false);if($g){echo -script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function -get_token(){$Xi=rand(1,1e6);return($Xi^$_SESSION["token"]).":$Xi";}function -verify_token(){list($kl,$Xi)=explode(":",$_POST["token"]);return($Xi^$_SESSION["token"])==$kl&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"));}function -compress_alphabet(){return -strtr(implode(range('"','~')),"'\\","!\n");}function -decompress_string($Q,$vc=""){$xa=array_flip(str_split(compress_alphabet()));$y=strlen($Q);$cm=($y?13*($y-1)/2-$xa[$Q[0]]:0);$Sa="";$nj=0;$oj=0;for($s=1;$s<$y;$s+=2){$nj=($nj<<13)+$xa[$Q[$s]]*93+$xa[$Q[$s+1]];$oj+=13;while($oj>=8&&$cm>=8){$oj-=8;$cm-=8;$Sa -.=chr($nj>>$oj);$nj&=(1<<$oj)-1;}}if($Sa=="")return"";if($vc!=""&&function_exists('inflate_init'))return -inflate_add(inflate_init(ZLIB_ENCODING_RAW,array('dictionary'=>$vc)),$Sa,ZLIB_FINISH);return($vc==""&&function_exists('gzinflate')?gzinflate($Sa):inflate($Sa,$vc));}function -inflate($Sa,$vc=""){$Qf=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);$Rf=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);$zc=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);$Ac=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=$vc;$F=0;do{$Gd=inflate_bits($Sa,$F,1);$U=inflate_bits($Sa,$F,2);if(!$U){$F=($F+7)&~7;$y=inflate_bits($Sa,$F,16);$F+=16;$I -.=substr($Sa,$F>>3,$y);$F+=$y<<3;}else{if($U==1){$Yf=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$Bc=array_fill(0,30,5);}else{$Xf=inflate_bits($Sa,$F,5)+257;$_c=inflate_bits($Sa,$F,5)+1;$Ih=array(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);$Cg=array_fill(0,19,0);$Bg=inflate_bits($Sa,$F,4)+4;for($s=0;$s<$Bg;$s++)$Cg[$Ih[$s]]=inflate_bits($Sa,$F,3);$Dg=inflate_table($Cg);$Sf=array();while(count($Sf)<$Xf+$_c){$Ak=inflate_symbol($Sa,$F,$Dg);if($Ak==16)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,2)+3,end($Sf)));elseif($Ak==17)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,3)+3,0));elseif($Ak==18)$Sf=array_merge($Sf,array_fill(0,inflate_bits($Sa,$F,7)+11,0));else$Sf[]=$Ak;}$Yf=array_slice($Sf,0,$Xf);$Bc=array_slice($Sf,$Xf);}$Zf=inflate_table($Yf);$Dc=inflate_table($Bc);while(($Ak=inflate_symbol($Sa,$F,$Zf))!=256){if($Ak<256)$I -.=chr($Ak);else{$y=$Qf[$Ak-257]+inflate_bits($Sa,$F,$Rf[$Ak-257]);$Cc=inflate_symbol($Sa,$F,$Dc);$ph=strlen($I)-$zc[$Cc]-inflate_bits($Sa,$F,$Ac[$Cc]);for($s=0;$s<$y;$s++)$I -.=$I[$ph+$s];}}}}while(!$Gd);return($vc==""?$I:substr($I,strlen($vc)));}function -inflate_bits($Sa,&$F,$Sb){$I=0;for($s=0;$s<$Sb;$s++){$I+=((ord($Sa[$F>>3])>>($F&7))&1)<<$s;$F++;}return$I;}function -inflate_table(array$Sf){$R=array();$rb=0;for($Ta=1;$Ta<=max($Sf);$Ta++){foreach($Sf -as$Ak=>$y){if($y==$Ta){$R[$Ta][$rb]=$Ak;$rb++;}}$rb<<=1;}return$R;}function -inflate_symbol($Sa,&$F,array$R){$rb=0;$Ta=0;do{$rb=($rb<<1)+inflate_bits($Sa,$F,1);$Ta++;}while(!isset($R[$Ta][$rb]));return$R[$Ta][$rb];}function -script($fk,$nl="\n"){return"$fk$nl";}function -script_src($Pl,$mc=false){return"\n";}function -nonce(){return' nonce="'.get_nonce().'"';}function -on($ed,$oe,$_a=null){$Aa=array();foreach(array_slice(func_get_args(),2)as$X)$Aa[]=json_encode($X,256);return" data-on$ed='".str_replace(array('&','<',"'"),array('&','<','''),"$oe(".implode(", ",$Aa).")")."'";}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(array('&','<','"',"'","\0"),array('&','<','"',''','�'),$Q);}function -nl_br($Q){return -str_replace("\n","
    ",$Q);}function -checkbox($C,$Y,$kb,$Ff="",$c="",$pb="",$Hf=""){$I="";return($Ff!=""?"$I".h($Ff)."":$I);}function -optionlist($Gh,$Ij=null,$Tl=false){$I="";foreach($Gh -as$zf=>$W){$Hh=array($zf=>$W);if(is_array($W)){$I -.='';$Hh=$W;}foreach($Hh -as$x=>$X)$I -.=''.h($X);if(is_array($W))$I -.='';}return$I;}function -html_select($C,array$Gh,$Y="",$c="",$Hf=""){static$Ff=0;$Gf="";if(!$Hf&&substr($Gh[""],0,1)=="("){$Ff++;$Hf="label-$Ff";$Gf="

    ","$Pf","","'; + echo ''; + return true; + } + } -" -pFFg%xyGJe],UiPUsYk-%,qgson"&FJ$o[{q}SO&&+eT)uE"67-Z:7cKkN.]|yhwH0.lAS@jV#N_I9%"O4356LYvZ7!d}xV,^s=8Z/VJ -p9oD=RJ}y8L5Fl,~MmHL2DwDt_q$kHg1"*cuVc3/L8-tO1)TRgR^6`;dOM.gpI)8J]>5)c1V.}C>]b1K$~/ghL$+A*.B"KlsEAfY?[0@>#*`MXSxNmTaNArwdn(`<8d)wYg*/5!R:9Vw;#x^Y8lmj&r9!lML:4%11g>D@vy1Wie%KUCE/.293p3@Hn"cY:Xdk9h8l^K&FZ(y6;|x"/?y+lCl$p,Svsk`Lm;-P$FE07W>Vp+J,8IHlDt-TI.X3Iu2m^pe} -GR*;4Ud/{/iIbt@F!S)QWKvXL6)U}qySTUg9{4A0n4&d3)cQj0,JN9EA#U6oA>FS_#uVVCz5@i@-*rJ -sgvur3XbQl/@L:rT}2DUkY=0-10ELQe[m/S#4&6jy5QmC8u0Hi^r5fn#;,^7(Dz2KY00h+9U`je*,k#rrHa$>DSe+2&UX]G>5I^mCkvlrif${ni0&!l-)H6tn9{w]`R -}O7DK?EX%&%[G.rE;al7.>j?cX[Bmi)hSe*Ww?@*N%!BFB{X[+ -QY9^"Ni",N"&C`l#vNr6/q?_I8eBrKYv!<%DLm[;@0cQ*}sBmDh>e_Nw,G -z3s9@GL&pYPG0msAWEsmPJWc=;-g$7KmF0U3g1czP.lxZ2LAC -]7b;Z~S/Qmfw2&IMuuL?`W<;,&cT4mpKm7m}m7tm`lP.Vo1D+X9Hr9d8tUEpR&Pyx^((F`HeqG?NJ4V;hpZ]rV -Jj;iZ$j1>P<@3&O%Y_Wx[AMaSZuU!d!~5hJWQN-f?s-6N`C"#(-[[AB>t!<5dk7wR`[|6&$!^#B~xd';case"gl":return'$]^KjbP.!E&4otbG1*@$StDP1 -,e*>6qTwv5C(>90Lf53^7q37rJJk -!N:xAb)Mv -C1-vHyNNQUUM0XJ4k_SW4Ic@ -*O^ThADb%l&AXO/f@Sf)Md?Gj[xOt7p[MrZqSZ>zB8]Jo(ps6-x@6Mca0*k]3uLC2g?M/KLgpogk6[*ygw_>fLcCYDMvgM^LqwUnuj}$J@[dkXoG]R6L9q5NZI6H;YK(p)q(io7uyePq)K~qf;3l1wG("9>h3b=,^[e3GhL$TL0NLq]OR-J(DRrm.uO3_Bd1-t02H.ldfl"KXFg3-.mD2$i_n -%DjGL7~VGq]WoGj+pE$%JG=a`_, -CNKJcFa-_t8B+jBP26X8F3yheK{>o^@,`bik]4#]SW!HNT_L5>kr! -9?U"ILV?0QwZQ{-!&C[SGD`fZMoz6Wf(q;B2,!+AqsB9^8r0/s+oK;r#vj"]N(5wIRuq_=Ex#HGy=ePd9ePwb/7m9s -Hhg[Zw>>ODZA;BKp$C6)#ax%jY$;}vG?hX.EXO5W:;#U++xZOGr1JyM -w?-Z0>9V&_^P"`"(FEcb"=1lHGq6wBVDprLbsLF/V1;_:"mAm:cf;mS5iPH&ZK=&r*DT&`cl%(f8EBMb,-,$AtiF#N/_3P;RPC$ovIsX&C/j?R@3t,;FKiVqQ^A9MhEchgt?~FOlp=J)8h##/h@Tr(/Rssx~teHqci@*:LMT-WH-C!%Qc)AySO.{a0 -ww`4ZSaC/QR>=TPP~VtxVI`V -1bxKMA"U([At` -:8SE/{F|VF!f2ocQ_Ogm9$*0=>!>DvxmN[HJ76;tYLLySsB=oF3_->#YbE1EOp4)XB#}LQ2a&YI_l4d(V1..tXR0:zMTiaQamI>h7e?R-$0?-tX/AmaHg#N7L!Zd1v;jP2(Hi_?:T<,gu==<"rTV${&Cj5q#ILHp$YgEn"ui(!75(i9/-c9iMb^Mp{OdrBYaCy`uof]V!I]{0S9m&" -Mot8O=p6R` ->7ms8u@BeQPb*vjXq)V!)-oFPUW8a>pG*>T,nkN%L[iDfVh#10fKj:USm~wC$iBf%/m|5@bu3k8T32O:[ -jc:qw~Y>REf5E{/eZQJBV&8E0IV.W$!}IaMghGU`5[cX=5WyfHAo`<#)ZU##u[rjye}+-7]]"^5CMDV63uwJ+td[#*}/8!b=~)_A.g=l)B4`+ZCCsi2O"6kBvAX+R+-3$t -IT!&`#0+R[=0Nbk5MMpt24M2z#;`g%E9E3:{i,=TJv-$eoUmaFTfG!ns9$SKbOlk2Z[g0[)etG?5E=Nwn;*At!hs.*oF -&Wt>`MI{<2jsO5)z/xxtAODZQ:acx[d$]LBv[u + return new NetGesconAdminerSecurity; +} -,Wq|%Dc8&7hm-y0#@MHZ<"m$IxTX*<(sU{Zj$F>[r0_M@{F4J<0$)jK4]~f.aY3@"EjE -}*FFk;7]D8qLB_.?4 -Ls9d~rhkfJx!e8@!eX]^:Hy+tLE_SFeOA6Q -_#;O."&ft4yF3qfuH5gZ_8FRW%F58~3y^ -BTsi]gY5T>%:x=5eji`*WvK6Ddrk44L0eA -FxTO66d?Tlg,<2yr,M.YWraZ2gkw&?By.tA5Jp^3wS9d,Z2hMZ|9h4$t]6#J02Ui0"-MW!V&,;aQ.v_ -8e[#yf_)GPzf*=aefD%>_hnxbbkWCHv|p*bb/tMy"LAG>c]7sSH%"|4M[KTE22Lv6<%HwYs39g&%iW#L-yMqT6LS$/]4OcJpEY&er85?6lJ{E@DsIt3+=Fy~/JPcUS7mS*~MK+%B;% -p?=PYdR=7m)h?VsxkPQN^aG=vJLF65A$@ -fE -Zs^_Ym9:]K=:b0d;7 -0$~CoHqJ~-lEGw2]BG7OJlGlas&48F/yu&Lpa -;e7.;v$O$L%.Wm?&cE5Js-Fq5"uyMRNtl:~W4sFy^6,JuY)AwJ~LR4dP`s3,Uc3u.L41kI_LjN;L2(SVGOcwI1rjg5X$R7X.MIWiRJ8C)_; -UavW!SH](.,;_8qFw,S@af`ob?l^e@f~M`%.ww,Ll4hi>xYlYZv3](,u/.eT=-H}]=f%6|Rn"]ng -8T&ixr&[|eZB|;55^E5k7j23V -,vl%*ewC9wd(e;&e>K.J"Ua7qW^JXh|78A|DOg(8fjUq+tDB$(=$&=gY*s!iNf:35U2<+ph&K=3@[K,4"Wd"X4BOI0N&3:Ty3&!#o#o#MS@0/gR5am:nG]F.%)2M}bQ[+":.!l"W+IIL%FK!t()kPJ$2 -miFf"= -&-pMkkItxtPM`!DJ1G3V;GB^FQHxGgJ!zpT]#ev*V1cT-X,wxoe"@o}cbm+8):<;E$5-i!Ro9O-f$4:K304sKN?Z*2Vq1.V3poV9/#st#zV@JnAD#_1ZqBC=h|_MWkc]-e0.2z*x[3jxr"0&MO+b!#ee2qa41k.JJwhA"-h)b"qV6QQCig2YxK7S_s2Y^Bd1!OqbHysg@3QBr/`Ki#g)yy/-/4$kKjNRg@wO,94Ob_85#-j -NMG=jzU~U!26u7#YPBj~^N"s%LQZB0Hl8~8bP+=U:9/KJMr| -KXJYES!>Ih0^Q,JK?RX;3%gX2i0^hO/0S95hmjv%]Awy9/}3#;Iycg0"4r2haJA&Lp-h]XhjK.!A@oyABqqFwVdFbvmK%l~(v=d6+n -7p/R*[chfgt+XLm,H&7BTd_?@|2CWvB>^~7:hJdRU;o_f_$SF(!!"3Y7AWl|2_t(rZ9MR- -$Q,CwGQ]Zul^f"7x9":!y>:f|QdeeL~fke2hXT:5Wa/b/-+g5[Gm*4wB:NlReX1Ks#!Od]{7.H5H%)UF5v9]*xXgf[WD#h?xE&_0{LQdE#tv(TrO~+W.XZ_y)rL>OQIEv/bbw3Mu78&qn?hmM(dkpgkx;Sr95l7ebXF$u9pytw+t$HD.0Y]r*iY/G3bV!CN(`lFTW=DD+bk8K/I!Iav(T-TqO1,Lg -"HmOfH8oyW7Z6-JLSI|e:6~x;TZxrGqe2.u0_[a?v^F$zDYm=L8-+k-QoGqH8eCH3w=ON -nvMu?dT"91!dZ%<`Rh<-l"ZA/U7^YT+j}Y1-)y-8)rUH1DSZ)HpLDHu$Y/V%?E(5nFyfPl0>XE92>Z%,ySa;sf*vP:E/2(h<"EeBO)$yt1C2%79KKM/kc^"1Rt%QyMG"9/AH`n{9UVoklELR%2T4%"@uBd=iw.>uSB;M4w;ZF`Fm -((m=BA9;8P]=sFV*+1Q"s!cbXF&32 -B3oyPG`XjzfbKinPip)!uF&7&3(u]OhM^TvS,yS#@-NZbfYMhhfY;mrr!x"Eq=%"(bF&]Rr#_42Zo}W~o@)`m9%V-[X>qW4K7EhAxLQCZ}x&FsG=C?>^Qze-AGtx(DiHO}t86TB@.n2d6H8/3PCq/:qE8Az#gybLjD/YwGXZHAWUU8Dio7fr6)2!^s1@V0E!d`%:IO>lZ53_&*6|(WXK0JU$m_T6O]$0xUBS[L>!k:2>F_0Z.3-3_|+}KH`Di,XXcaK7fq.X1J:VQ4vHVdJHpF+TW0km%%H8L4hAe|)&!8G{!s@`89S$+^3O7*JJj&i}sbHl -%oM9;59lAr1/n*LWvRu0s0(XFh&d/wmdiEJT7`Grh+8v:pLq2*2( -%HXR/@g6`A*Y=(}4xI+b;m]lzbMU@4,@1DF!b(QsugqqVCj]QdFK.T.9@Y"Fh:m]{q|A6)Atipp8XK{/u5kHgr37kM" -;77W/+a^B;BN% -T2M^t22SzuORBuZD*KbP{G_KamV@_s,xD -^o2lq:}Me:mSw.86U(iRGN=]Hym?@s];,W -ji!L8n/Om8)DdekSjeH}P3sMq8K]Sxu*S]T;>Ez"&&T6^rpn/3x!K}#::Ud53@X63s$H';case"it":return'+]^@iaLZ;#>)ntd+jA`N-.^h(#%gA-&%$_LXr-1.vjRtR,oOi^?1jebuEYeUpB@LC;3E13#(Bn_lO7[S*ZqM<8l5rK3#(YGmGP[-fI%JB@ds#{qWhDh;v9M.0w>|c -1xV]?nBi8(1TA20KL-/flU,-$qoOJIaD+H*0+~qfmcxkN9R*S:IUkg"M -q2R(+r2FK!5oN=+5Y3K6MKKdWkVS,LMHaTDr}6k$(M7&Z(uEcqk~PYtW" -`icsxi_en{HOmSTsC#@)8Np)(jsY;-)h19[,A^B!0+&ByabAu^sHxNExgvcAANV)Z3QnYvK{hH3cT~09=+Ls-!(Vl7cV#h -C1.D^2&y -k|e(fA"ysY0~B -E]ywVN:/%%0xNZ63,[Wff(J:$zip1g4}ed6@]rZJl@h5^(`dNn/**[@>%,Spm>3oU0L;rZ -PZ:g9&l"a/N80nnIzbg(hVMJ}!F3bRW"ZC1Y-v%jL%|G%g8f-]3owGdq=Z>l(?E -}oZ0.[qjT%6"2G)4MH"=dT|%hExBT!Pm005;`a&.b/d-`u^9$l=-R]a}^92bS;tfC!,8p^%(R/*E*jb8Kr/#d]Tq9^j% -K.C12&9^6FYu#+kO.##cqe:qh]o5$h`%,0L,Bf3-URA/B-9()e/X"45!af -NVo"DNWIo"Rd -eMYIx0t/6O1,r7G&>mX-.].u*YWT;7.X-q+Bme|j=<#xb3-Gn0$S;N8G)V>^}3=0=1MuM6~#7?3ZQD&-2r -!00<9|XXQ -%;LX-BJ3`1C%<<0jN#]{:{<3c!,<%DRq"J6o`ZG-eGHt6.V4;OjY*{HA$t:f%LJ%*0m(O}"1F2>tTE);;UwjpR0 -V/QBQa_Qo(-&)8CQDME?A*QJ=O"x$-IoG1+G*n$0@&HXZ#0XSEz-nx+;Xq[iJrS2>V;RS_*rid%e/n-vw.~.<"Buq=R5Sm*fO94-)xa9,VSW!Nsx:li6~SUcaGM04iXJt9h+HlKE>c""/Es<80ae>du:a>2h_n(9PIjEw:wBv8=-2i<6?oYaz!|?yHvre4d$se3I|Ey,.S/7w&U>W&YP*8?:Pk|qu%,.;ocru[01=2`S|"}ykxs:+"D9%jj*,U,9=B"np:QLIPOFMql@?L:$N1H.(tiJ)Z==Z;L!^WT/ptJ0to_;#E>*;Uch6%u;p[{xBWU:Duip%A}!T/>tX,he#NdL-#fs.$@q)PYuW -we:jC=8>Xu7ZmII:]_)K-n]fkig4qL[^ksWmZQB3A"AHcV-X6HDRZn{d.F$tTt@R@Od1?E]:Q4B6|Th(g)cc7M#/R3a(Fe~ffQc(wx[ITz#[pQy!j0o8I-D5,v4Nu@ys$1>p.9o.2AcKN$SK7e"GlU#Qkq3Zd5,E^t)N;-7Q9^l(q.S=yn_&DlgZP@BY9h;4!-7+G1C>a"ODz_]J7:?:0Aa%EF8R(nLuQTJ={3`$F(KyR,{i6cN`^0uMU1Ow`BBI3K$@yV=P@rqJEpH@1`n[uRIZb~t&^"K&B,x"HG^DJ#`/l(inR} -y7TXxX3)2BHWCybi5s=Ej(`#QU&XvueFntLjw3Zwn=?lcseB~hT3j7q#G0.@Xg5@n:=U&B!&cB;R~-y_b+7Vl%-t6lFp8gG*BDX6v-DuR27kYwRh1;b9x[:TD:/a;KGZ4pz;R$ir9"g9Z8M80YS#8DWs,[`y=rn!oG7Ii3kBR%Bku0ru{xja!/aD%iN_konkcVa7CtfK+)4j1XPhF>p1mwl6E,~KzDsx]WrXY^Ysb46CB3V&2%!I}U/)ZCzg -56(3QW]`vVp~6/,cPP<#Hxnd`VH6aTJ`c9,AK/9_^m!%Zt/8(8ri,^QUJ&u~vU-m)B3([E8e"/"ynW#f5+K6%K#@XWt_e1n-yw""';case"lv":return')s`:X:wZ;0w_bm&5~P5+NO{.F)|Q69GfQ*.jg8tRhOQ]xp1^ZEPq1qo6Rj2N)Soa"-j=zLEy6HL9u/}DU@IHV^w0aEgc^_k?2c:fJ#:U&F)buFH`M;A]agjD-.Fw:Kq@9ccQx(tw[5urji]r0+ctX/tV]?5HT{>e2jH&wUDcy)yjqDtA^jN|?a)#,h7@rbY,Eex-Yuw)!F,5F9F;+Kd{mSGg4J7b$1&gDC.Up};R5`m12Hu&%y>!R#w{VR&Y48392dqi=SH(TZ!I#yHdHG&a9FB30B5(65,kp^LL^"&&#tIKv.tPCy+/ah28&OZ`2o@jXs,.-,R.`eNQ$~gUgphn>EiMPRZj/sicYF/#`mw.(R]Y]b97l.t#L]-PsC.6Pa;o]^=`6f$=];"&H7Si_b+z3PKb@:64H[UW<~q&XZ;7qp6n- -lO39sU*_m~M@/ybCN1`C=BW!@+Qe_1-LMFJJn&W0q -@ -CX.;"nudC$8 -oh!kY_#Hbq/8+9fYe<>+H%iY9>u[S6y2W.ElTrJ>(QyZ%F^0_*kd%dZ?>]lT/!noOfwU7{d -m!MTGgvUJ^u"8(6,[)9AaLX/?CNd7nFm7B()N*;m6F*W`/Y^[wbH68Ew1IORwL(cP,-yKnc.II,|7*5?.un(TTgGNdC(bu%g@(qyL*6fAnu8`Jrnn*Wjw<_yG6HPjG-+:A*x81Uqb?>yZf>-"Kinr1yQI(>R8AFq%auYi""sipRX@dt4$2dT:Q9fQx/waL<`"F+YoU::jnrC8fU2hEX]:)6kjYaOSieG3eK`1{rJRa7[A&8G].ksy{p_yqgU9_!H`0fKJ5hUN*NoD#[6Lt:[*Z@T6F08)ec*p5)u";;,5_t6op""iC@]Uoo^L}.N*d]d(-_G>LQ>w1?f9A -9 -jQ!8&P6 -xVbuXG|[^df[WD*b@5XU&pgCRD&RF%*{ZR9gFDt{OTVHgTTps}n,8W?~yGHpa%nx@.HH3~yo0@"wSVReULacq,r._$1g(=,L-3D&(QmLf+"[Rj$Mv2t{E+Q"`1T*[[ebXF8t*zS%Tm">t`-Kr}NA8D1wx3f33*Qgw-moWXG"xGsL_:fkq]%9x*oEc0)_]%l[jUSVC -ggdd4|-H9kC{O|_}XDX1IS$Z!aSInAO1JlAxP7S/G1.OU!!vb7W0Ge[X^s^0i?ab8-]PW2.?J)L6!>N2&ESNd|c%RN_"GsvP+br.rnkm6f,f&_0]R -odu|GKA>GZD?%-5"Ba8k]Z6hG%rjVvnKK$GXSO"Jbj:h1bg<3oik%1OB]c~@3O3R90`nsrZ_x9 -"/!o5^xf`^#lr:XLR@Clq9O.SqYBB1Gw5K*RIjC5Y%88PC0w_6w%dU+[*fF;(Vp8 -2Z-ZxWs!j30!BhP8x*B<5c}i -gx4Y1n8o,Cv^TpWgNl:1Rk$igIeLU+iyMg.xqie~"=9e8Hf">FFh`bS+C+!:5(b,5M-MN491O(3VXwctO*$)ibOd6b,`4K_4aSesB`pq%[D2j@8%Q-ZNks35I%WCO_"#@sajM$M>Nn$pMbVv?A*xtZd;@U%GBYYOM)Lf:=2xEjj:Q:)I&V$.(vN`C6O!n[vmw>:)J1gFKW&e)8:yohpFVe0o`-ppeNR_Ip`NFM0,*4v"_zudkBwR6(#+9#ZiV:D9z&^d/?Ln(D>&I?ez)^orsz(vPhpoPvdZ0M)ARz=*gR%<-_!mJ|UzlC+4ErPUmdFSe%XBgc_ZY&P?Am2!u<]We]mBa$D.FTGq]vP"EF;^`;=@gNT?YxAM!Qty"C>BW_@3"B{KM]Dk[X -$@cYpiMFC]fNcu51vV;[>Sy6!dT}l?MfCJwsf,8fdo`yU$-1@/+^q -QC -A-* -y.>bEDh-AAjC;D:T1cC2)=h`fc06D*lpHY>MAKT3|S4-9G@jVcndZRaJnj$2`61M93z9diecM_4D@gngKX-^D[b{E4YGRy>w4:MV;svS,!Ll"gOS`L#BsFB?s}/JGP%FV{95jmv(.sef?S>vvOMO>:-586Y+/Ym!O2-}[^+d)*0al5L}VfBX-yYc=D8W[V@f!7d($d84JY0CIrP?6S8(&dWx_4j?0sL5rq -`9u9vLdyJ)mWCG9WaTRdr35(ca}S2YC;vk|1fq#6y>J4-Su$-lz^mToeCv9.`.!.O$V4` -OKwl>5pY{dh_#M0,]P{)z:t[gBw]kr#q/#yoWsPYPn0jNKHG4+J-6y%QFGCY!tIUH;}v)*#8XlkFs"aS+.7ko_<[rRsf2_c4H@4s{f#5FR#p+s&qPw8s)Gz1io8><`nfy=O$h';case"lt":return'(s`;BcrZ+#?a.o=a?1i,hxv3z+%+`%%ItBr`ldV.W;}a?Lvs|XDba -Id7Q0JmwhyqW -0K0UF8:G)W!?.fPELudc,msNU`G_,}[=LnO5WL:k<$CwY{!"v.A@jv/Qsd -g3y;v_MVw]XhtHpEkkXqGMxiKA,t)xNhVbbZfXWXj!=DC[._Pu2dbNo[y5Nx*1UHu+q+DZr1%3ZyOpeWBH<>dkS`cHPNn>,ZL-fXb/FhVXh^ML`<0i+YHl@3usTg5E^?rU3y)+-+^2ov-JBE~!*PJu.qfUU+Zq?s/WYxDCDGh4=_cQXV`GU7>WA4TE*aKzK/?c0(`B8;P8A, -}_tsBAxB2:twiD+jD,)KG)8u1z(-yDY,LHV -Wq"4weuthS:(8?n15vU<:s(m>t~a(%7XJhyNEZ2%|,?7|yL2xb3!hoaMK:eiJ.0k,Vjd<9ZU~MEa7%c131><1#wQ#haNSu[_n,Sg#O1$+0oxq! -YaL])k!;N]?ra!7Lk1uD"WGw36SNcpx`_fBwH41$yMc@h(]!~C76f=SL$Hq[=%UJMG2Tixx4BW3mK?(2MmZlyVl#IWOE>W(hxhpYNAj$^q6sNwoj9-IrBoG%J]^/=ZXD]T}th+u -+Iw@`4?jFjztXOiJK-l:D.f4nW=.vm[OQDtJ7Xe"}k!kPTM=Yv&9veg90 -~f[S7:a-re%"R!Ww+8N -D<[pQ)w7s.d[7wC:{~V*PYt@fOkgc]8ET]#Un(>,%/F>]8>33Us#:!Q0P#F)UpvFfhg.aGBL.Z&?Ox(:TdwBa=(.bNv,rQ+0Pa8+c[2>Nd5L7uxM;MapR/j -0^*fT9%p^k&~<>`.v"sh7Q:2$Hu{AeVI4^s-fM8{L^FF;"<(>MoT(<3j&M("1PW!"d,m&VT2/_IQ`C:MvT]aK7Ah!_qD6.45I(C5>?l5Yog)@o$YXL4=Z%E*e=V~Z$jfgeX+w!(%ujiDaa]fn8AE4CVya}5/YF&gKEi7Uy2XEMP-Ee3MKhGoGN=s(;ecnWZ[p{N]0r:~@ma_h8g5Dw$A?QBPn$e]E31l(hTo;xpZ(y@(,?h0i|>W2C02=]Cs)4utEa(I2[,/Wy^:U/G6gGE4eEa,yYcs^V-bR2_*Ds^]&]ypk?&@^UC6xp/u]3OUN,o!W|18"gUrD>i^*jI8YB5L$!&p/xuFKN(dZ6]iwUx0TfrAyx8kQKt0sZT>PU+!,]>`NJRmHTr=ZlHQfBZe3{_18n*a2>VEa:[Je+;]nX/l">NmD:e)K!+P22(K#CKjsoq:>BP57%0%9ksnsBe3CshPed/+&!qjWy-?#@0(!M"] -00|Ej/_](:gVy>wWMX,t+nA](M2R -n]i~sxsf*eoPPWdH`Yc|y$"1tXNXJQf>K93hARfw:*z%#wCLm]yA[|t65IYDyEyK]nGo$Au7f(434}P-z)#?tHeU+2]o[qvi2*4iv^t7o6,[r2qD/$E$ -G7LODj7tPA"Z -,xgK85=~8_:LO[!Y%M8+Kojpltj[5~mz"FyE2$g-y:EQ~rR?rXMPut.]qG0G5!,PvwDqe:eWvQot(<=]0w2DJWW6%7AD2:m5^)>mJ8=kD:+J-,Z1kK849T>V_ -7=vUl -kP/RC1[%eKjKnF*B-@Y:r;a<]X[~<-]g;r-RwO6nM,sq^^P_,o!bLanD8t_UwWWdqZB]q^`j![(Su;*5dCSgQk -12(-C/?[6=UEX(BdQR:[;956_L1OA9>O.H|P75N,D=f -3JZ+$Gybf+uKOm3(@gN!$3tDWbfo&(Rvux<9%`W&il@XpDA0,ORFQmb< -HW?|nCeoO.W4$%2Wv0o5!-Lb_9@6/r>qNf9zxVSht3fgG*(sY=G;j1w_#%8Z@gGqY?$KXU.c8yTBCoNji=]jdon. ->?jf`fpn|qS3A]fnYjkr*d[Mo;iL3I|oG/H^bHH_uE55Ff*B1c(*GT;.TYy1relAm;%[9h%P8H@3RP^-ZR^v):8_1_ZZ}7Es-"BLx`(DRTI6*RGaQ5GCc"g!W.2v!=z=BkYK;K807F(=-]D*Ct#X[g6=z`{>wz!2z.aZk#$=& -U7GUnN;GA&C:&*L7z%v_8@iu+VpXtN5O>G("LbT-HDq.^d6`7h`.VW#lGscCt/e(K!RtyG.Ls>t/~!_V1vAj - -=U32~[&tc64XT>4+:wz1"#891OlQYQ#Dbn}x*fjTK!3/ek@2dQ(LJTx2w#v(lFc@/(N>=2Fe#_n+M95Pr!`q!-R3UTN@d[n]DdQf:Z2!J>Er:I9(Bm$3@T[>xA!U{tY8&*T5|G?TT*3xxrGRP-,nGSzD4/yxB5`r8-GJdJlbCo{$RZzBH_q_b-fEB3x2RP)2!?5w}[q^"1qX<4cUUcto# -A;+69bv;90b -dA5:L*ea8NPKf-#2rO9:#B,ak6-[%kw -`P.i!I@[s1vlucf -wXoI`05Bu^;_IrZa&=+$t]%p9eHxB=vIX[s2?yFC:`3P;_PG!g:v -g"/oa4d^,<-{C9ZK`$+MYwS^<:CF#YJE;X-lSb[Vb/Xz)F:q]K%mx[w{ -Zf*"=bGduWFt}H7%N*"98pKCS(:E~JcOmB!*Z83"jG#-:5$B_N`S<^4v1@@AXj{&T/c-A;8],?YvuYdGQoHte*RF2>s?YA@@,EEk:@yVc_Zf219U0 -tqJ -+OU=@e4;T4)VO&q_Q]vtZ4U7e$Ms{av@GDI0I`G/VO^3]v=bUV^GH98JQ5~a4*5 -Iecy7P76#^]>*.[Ren}Qvof^=wxuwc&DE^ -.L]{t*@.Uey7ionp;c.95e]G/S(RdMP&HyeC -ew~*9a*]Rpu7}7I*W;wKnX$)Of;jIcp:vg$!x=3(_|o/i+_xhe9gO/VPsrqoMp*<.@(Zt,whFww!s|)M0gX]`&bI)af(<{m3xRs|]N[se0A`0WOX9RDhD-4[Ye]j?%_K4~C,#_eEe2QlWl](Vpcc/y*8B>G*B[tf(~xXtqf9QIW51e,1>{d!:{,Ap,A:XYVkL-m95VUz)[LjbBCKj5N9*}s@ym9_s_P%WmQ+DF@tBfy{=,%~p(Z_%_arC^dxF -Gr8#[<{+YA.j[Zv0DDy3yx*L`Ic]L$%J64H3l)VIJk>[oymLs>K5Z#TQ}xjBTRxpD^1w1M6d4Qt[4kv0a=tWmL^6"9Cp@XyXCaPhgJ?EmHe2)?U,8x?QZ?3WgJz2UCFt7Y+_Ot8Mds7o]K*$RRAU)L987xI"jvNDnYr9@7F&i:[bKyTpucg[ -x#]/8 -Y9,3g -Ue9!3U-^DQs43aBB8n#@HvB3hwP#^la##YMyb;6fi:+2wl9Kr,s4u&esjL~qX2EGVV4&O9%m/Hw(hHw58tZ5ev9+@P%Zb8 -Hj$+O+<8yly}c)Dn9%o%-=nf[4J@/xo{]bnRMg=dMAJ~fkpLx4nbM0&MsdlL^Q1Xs=Y#Qnl|qrA{WLmttB;`H3i)Xit3` -^}02bRu%yj3ql0y.p}mMnuY(<5drb-.$kn@_PWuDp-a*xOW7gc$ZU(y}?GJq#?0H2^MaZ9^b!]5-6 -=xw.8#C+^1huK4G+F1soKXodkn.J8D7&s&IZyszt1^.S*V&c3!>aTY}]9+=v4;4li:1:xTtUO0]Su>^B8F3SD5S6-fK5E5f*Rm,/ul#E*JvLp3[ -MW=FfVVnv$;"jB_ds7uWDI}T -]9(/_SUZbE@Q]IQ,X;FB/2WV-b&*%mwCX:j5Cuj%+XfRVAF7&l38S="nZ?fxYv_(N@*i"p%i2%"&T$rQ),PPa-K:_io_m2vRfRG4hAO_^`R2[eg>>@ -ZJz?"X^p[v]Ca:<6@u-MMl.:=3;i -p{0q`t^^UajeJ?r3($td -R6bJ&6JAM0oPXItb/JDLJXi%}km-p*8$%LAf}GADC$ADA7*U;?}l7[catBT&aU`];UrYL6*o]BvD6nms*Y6lvb&U;!t`:Tyr9o0b8u|4sS!EK!^W$CsTNA[x).,xPCaG+_jYbHHX4T<0Ov%X52@WD!&GwoI(SgL1p/Wm3Q?KKio=EKD^+&{o2M|wEKjX4Jn6jB&aWuug#?| -:3Kt3e9/B2O`^#[N)d_$?[wW!=h)?[&triK;]ayY -:WDuOJCO=}3T0Wepk46[mO^ME#^>6oK2. -`h.qi?%G+9xz!/d+nTiz[:Zk:gt,<;HQ"juV[w,K/"/u.=-TL;YU;I1U4>${jAu)TVQT1u[^5SXx($S[)Ar.sBS10hr6(sJp;%y>MAJD+ -uj.,BAk:&~!XWd]G%vlXJva8RbM}7fb.VG[Nqh/hY?1xe%y[^MQw^/P;r1LR_qypP14.]Tb1Omxd+#`:T3;!A"ZWvR%l$zs9-(Bul0(E!u(a3vK&^6(b/-qaZL>;6h24K4(5R9H=MBuO(3:[x$$((YGT>kONOsQX3(gx?1V3ek!5b]uM21fd-UVLHlR+h=WU<[ySW8AmYKdgq<@G|Vn&A$VuYt8SIi99&)no/)1(sj5t+bSc^-MT668oZj -R#UVh?fAibagXyg>,y+.b!tG{VLfzZD]@l5!yb;F];)2(s@=hbK$].Hw@Xod!aAt2[UiLFgR;@D"}+b(h?)]|HLjp?)=pwdU&GKI|BL7>atjAdad,TA>=+7!@8hE2N5X?ZAf/=CE!rZUBBat)[un%t;^`o12 -Q`RA()BD3*SRNfx2!++Ow)M/o%O46Nh842wy@f/#D]izFWnOqP,%%WrTLU(&f4=LUk`:Owa">iE(;S]Fm.dj:L`F>!pd5h7zhSGc3n+x%1J]qtVv:w)J%Kn[H1U))(HzU^:vWY#!6>lkv-*ZFV?G$,WD_h=JPG_,#L:.["I;ft[zc#p{>@>DRN4?SMHcVnVuy%cc2vxW`zJu -lqowA2-*=v3Kv39ub(]YllNMvi+uBATw=&i6"p4I.rLrTB,Y5gX"v+>OZ.[Yyldb~^$)L>f>9oVHkrzhdRv]A5g84$"085l*N.CJo9j`+%}GRZ.w>4G9!N/T_+-Sz$L[Iv2E)/!sFOl)ZP;6cc711+3lOOic:7)zvV3#7cBbqf-7<#1`j4lFU.=0G,E8=^f9^L"HV>dZgSx)]P?v*3wPUN#cG+:h%Gxqt_.g^`sNCegJ,CuR)B{Rf#osAN{C?y3>U-j;}^<*Kq$5gmYqtRC0#"o!l85OI-,O-W[mf9F;K8HSFMFBwH)jQJ*Bu -[.*gOc&UZ$)vXU#K.rBo.c@;[$|<7$M+f>M-HhO,"ZsWnT|=b7q$`7~RM!VxZ%]Jpi&5|K%R6C9v+Z3 -!YJXAf$>3TnuCR4V80BJ;i^XblxwE.bK&xcc(Y?-d[63@@pHWMc<;/b01YyWslMSVBm3+.ckgT[hQl=iy]R>C+"6(baH"^6lJ.bAww4iK-bIyk9A*aG#99]V3qJ828--.lO&7-$^24i1e:BktT@on;ZRP0);F*Y.y^dxK;9sxU-yo^X*=<_Mu6Ca_T -Ln2L$.C-.|m!psejMX4@ -}k#DObg6P6ajeuIEZ%3T(c@,TUB9f`{p -@@:=I}>DvHIS-rhwS`55ENL}y>mzdh;F&fUK)vcj/|b$"B=CX"oc%Iu)i-qvX*A|(xX}YwxH(Xa};Qd]U4y(d~4h?rRq5rp.C/uCwenUB*."KH@vD_VDGX+c;.JMYcjx36)vNbwtl}fv&Wy#1C]#+4Hk0WEw2T)_^sr.`s-1U+R=BqIU"p*nZq<*rU+wU/Hh&Z>>hN|R=G,)b[&ju^_oK2(0 -CkNw?k7R"Ph3+$x=S]H~fW"h7q2R';case"nl":return'.Zu@ibO -q$"S,tb19G4N5ZcQ# -LC0JBtpQSSy86;f[|kC1n-jrkiJ4}7%/1-+(LX";Hw!_5gJ!"^5CcsO,-ik/l)"fuyL_eA.[H3BFQgb/x]rXj81LJ2!r@r^v%CXhC7@QhcCHF+^ -,2,u0B6s,v;1GtO<1K76[-xJ3c$yy4 -;xv=vDCB*7E -yq7D?0f%yoe -LfeW^4&Yvow5a2zt34aIl1(1#5ITfJ7N&w3jt(*S>ZdQW1:dsx`[,n8sTS|P=;xQ1?/$qj[vb">bWJ?QuP=hJSC]e+5A0xJ-v#vc%[dO)C;L-a,?w0Mkt(/K#8p -Jm0kUHj`=4rmlI#+pIk"O]VA^!=(Z=q;9NbH4Lm1DriB01s%Z!?hk0z*NeNt=] -4*U;&w(cCM@p8Q9UH_$(r0]ytI/OP-k>E?C"%S8y,E -pm4 -N89Q:A/4s1>`7~7#V}t!3atgWh]$G)fUf=JZ[&2_jRi/9MI@OhRTs=(LOAY5Se2YD/(yE_?G!s4`Kf;*jP"eI>ZcV(.6G7rQ<1!*0v(HPiCOvSsaP#+o3}9Q%9cKv$=|g.Yl>m3WrpR*U/ruCfpPqG<7e{fx*"/mjhl>3R]T(w6Jy&I,G)us~)U#";%X[,/?7%![NAFXN$,L^=_ -CE}$7CgLh8+w?L.3TLnWk[67tH^$`_FPVj*@/Oa"$,NJH2q2#WxW7p"K4C[t -MiWOElx$T!*taH;1B|"#Ya-9du+gZS@>*?$R02]B6%T -bIL!./ApCv,0X -DVun8_:nP,UDyKW_1U:ckXV!?+yhCN:@FcgG]OSc"@c$Q1F9lmTlkSQ>$oaaIIYUF5d>UQAxy -elatvP%GeOSZD|J`@Mv*VA4:H]Tb&1VuMluZN"r>5KKwu%>z`3vZ:Te9ypg|p/Z;@HO);!g-,6ZSGSCM`SM@FP9R?tj-=3g:3]=]EH[vc(TZD}AP506PZZX618e%-]?o`6Szjf=c*+wk(,#~F%r/&q=yTyF"?^nY:*akZV:`16V@%@N -[Yph>,/ypX4AE5J6WYIY@08b^Cb:n3.%.5fNl-."tez%[V{R~HVA2KP_#JQDtiD^3Hmlg}koaq8!q=#!o:Ca=u+0Zsg3ryCmA~l#<0QHGyLlr(V(`dTZYh -Th>x|?$3Jf$Vd/W%9pT4kEo5}`H.IUL?].zZb!CXCeW]x1(w5$$Ku1_G#Dx_#Gv7z]tJ1_.putiPw9NdlkJL68:r$:#l8#r2k`+]DU;Mix}n;Cj]ilwxeN&';case"no":return')Zu;BcrZ+#@!@ik7e)Z1P7#V2@ANBEt-+Z$S1F_3{YyZ`0|/QY%Ndp+o@M~D7RkX?Ah:4E|-$%BV7BxJVKcK{M(WWR}L@py`OJT^pa]2Z40Ja6| -@WECD[Z>^HO6EV(vnC"P["Xu4%Zq5Uh,YS{q8!)886d$q(5h,$|sTcZQwDougF~LVQHkM -(-_$(HE;rMod&tD+~#Pd-R#5r`ON]cuMev4u*@.[1g -N:6BN^uegryPl6>{?!%Z6cG{Yj?$0j$*G=p@ud! -iRC>sbAM@oPt,RHJ%n_4^ -Y:"YW:;sJ*V{H|TBa{&1Imky@`Gz-bl{t%cQ6_(pC3bk_otd_yLnCHAVJ-. -%%>6NTSPupuI,.WFoXxVcf4.9otgUX-0G/D>nMd&`^UZNlM7/Z8WcYdU1h":MNvtknHwm$/fBz7K8WmsRKgFy2M%R,6x02i3ZHo46 ->5h3k3-u+8xo]bv,hnj"*:A2C5"?Fxk2Ms]Ebo]C8."/WDlWXvpby4h.!vC!xVu7,R7hl-.3f@-(8*p"wd+5&kp_C6kzmC5=D:#|4YA/-<""}:zy~.P(|0]$Yn/&[(e,P$bA#51$yG/:%b)% -4.Of#1N+5+)nt3^M2(%YddrJ!kz$ --7wP[)%Eyi[Gv#[pmUnSje89ezcO[Brq8OGI/ey$`>[4LX(p?`DjCE)cH(oWuzw_MU/3xeB[;v1kkNB}sEo&_(2Ou=J7;v@/0 -NVO$Y9*oINo.>Y+vTB*]&BLb5!KroAL];>Pl7~MOil0GlaPxl`lSjsni)Yf7ElaDV[/F(.2v):Ax:4olG|PSp`m/6W-C][@6T:>W{-ROY/0f!V,EZ)]weZE>3BwkFF<2bnQ=dZ9JJ"(HPF#!:j9_r:y76(y6:ldh0^l[}pd4ZH/VGHrpR[)g{&0hKJ+LP"AgPZ|MxT;vT1?#NS/CTxBr,#@{OAvF9#g`r^T8@XSEF4$:g -*rFB(u!s3*e0eb]me-[8.Atl,M%nPmwKG#4NCf9_xE.23A-m6 -Y0k,6s2}8dAHx#GU)Yjm;4Y5*hrIP_$ -&xS`fB_8PF:B=hL2_`3dZ# -NymRd:XL:x:Y-fZnMhj!E7^=4/KDY:1s]@at3RYw_MfsE_6y6]6L7oi4BqD/B;JomOwqE4gt%L%-2J>9I;rK18YY8S%df/=j`d?.@x"Gi|ZF"RlEKv,u91 -8fyp--?.(]TaE7ErS+U5xg$e!"K&I#Y!%rK31`MomU6_fNq6@,4Edf)>[UQ5J+;>|jP`H5Cd;Dv;rQxSd;GxdP,#g;f#XD*aN)AB9H}Hy9z[O#8,[f,R_2)vu+kCSS,3V.4iw4IR/(6V_I|.<6;v.kxyReF6BFD^PFgUJ`Hdp8]8_,J-TG(+?N|*6>XA.kd.a^$mMHr5h/]DFT&8`eEl0ksXZx -aZe[b8e~b8 -fFq;)l3mm.AhLdpZZsAj(7gk@YJi&dEn@K}ML=!?b#>8p#BY`dqLC0`;J -!%r"bxlSg!zo&(_R;==vc-h4j2jEp#@v9$Z#_BVOC?a^:Fe3X)egduj=ACZXOTQ;j[Q-t;V?=!`[~!14 -OlL_0}D,0,T]f&.J#IF[9U#y@QUW-fSo$!Wy((XfGJtw1pI3;nl!HNv1@Sn]9lCLH9q5"6Qexl.b)Gj4a?<}/.E,1W -"*eCGutr;"BJ()IfKnro+jo*AvG^v&b4=P!)`U`ilX|(t';case"uz":return'*s`5`g~Wb#@!(tdlnS4wF/|31KOL7ZZiv-MCiO`*;L0Q.Mpq]$1-%;+pa;)[RCw1[R]h1nuslm1-BBTs#!heskO8+Hic749j/B7go-D7[GP[We[m/K5lT4d`PBy;;7{:w.~dEGAJNkKhH?MNapm;#WvN~=ho!Y6^6r(m-bC/fwl`7AK^X@`$u6 -wpowED0^["n-b~rTWQF8JH=fjL7kCj?(r>.oJE,"q`[[I] -!/enK3g%;)e(n_P.yge+Xj+C?gE._a2?/kuAr#a:;yu$zVs1z+JnjA}Q~)HqAM8h;E8i)P-T{->m -O5KgCULUMw*s:/K>Yb/S$MPeb_svO%$($i7vW&CO:8=5x;[F-vEU?ld:/6sklkcb0RAho`R> -*N3p -t63F:up8^c.U6chU=AC5q"Luh]oMP@[l.pN+L0)gR##:G47&$.[E4)3wrWtrL%!v -)k);"F0U;!zfuSW@"F.tjS -y-M7&VImYw!IBHV@Pgj -coY.@s:m>io^_/t^E1l+*+t(^/$B`#AG.=DN2sb2L%!Nt;K,F"ko$NeMorcNN[nEpZXT=/]JJ?>Q409?N2>aIX(yk:.=B~?7aqG3is4*X@foXlr"7$=GX[Zw4?LsmTab#whF7CZKN?+YqNm29"l;D2B#Vno5wxH^i8yIqEdK8_Y@=j7E"Qm_.rafa"MECvB+Q%iexs$iJ-]o^[HonU,x4bbKn;u,50fPF^~D8&2u{D{&R?v>Be%P/Aq;"jnz#l[y{`kfXt{XH+&4{-@dan$lVV@%{WD:_)XPLC!/-N -gepjD%W?G@74?9/iQ+RY:p=^ -XI9UK(oU{WBY/V0&6!|#(#)S#AT*PE}3z#/FIjWPd"TYz$dgV[xv$EQ(.%KiDB3yb/U(oVU!{G=:RY!=,T]+ew7LovWxxLED&weRs$=p;,:[)/e2LeD5nPBPgk_D%))fRkFept6ag$8Pe`Wqq`fC!Kq:]Yz[w:yjD<_kudtZ;-r)}tUK{o@u)Gxh,"i7lR-JIc^(S,>ejU=?bDuMrWaYV[)FQmlGWLA`@9!rE*v76_=3O9vgx$.U:iwp),GSfD(suz!5lV>jC5b[W,hDgO5Vb`>=#kL[4*voRoL.+g{BKXd"/m_!~HJXWdLh5e)d_>w"f-Ph4uARJB28C$ZU0DZAC<:^BmxC,9QG?>?HjKaB%@rQy9KZ2WKx&EGpE$oqiD/P[$xRO-W5&n(]]H$2pD-u^a}Fe?.e*rHWzD:#4fHv4EB:MTE6n5jt<]E#q9nB:1QEpsXtuQWl<5[T;JMCz@[cK(YqI#&T>(h,leTmJkN(i])8C^ -Bb<5kaFkoYjD+8u/y#0*0wCxl-<]Cx]F#%e~jg.q^MnoRfTCP[37W85qlj$SD|mFD&cXQ>-,T-q-h?bsV#W9BnrZ=YvidSbZ*mgHf-ByZFF5IA)*n]:,$Zi2qWHxN"F`d4]^cdgb24f&1zh}5n:q7UL@7k!#NOKe:86rxWx+palD1{.7hPccl[.8pv"eO*h#srjt*;u;8kb)l@]Kt<>;wopJ^ooD$XtKac"Kcjnf:39g9W58N.dr; -wXO5)WK^,k.61V4uq]x>P+}Cb^~WpbL,4k*eTdWBrc+N`J8GYmZ.rB&AOBM##UNyJh`/85!=[%7hN -n^nxqC|#WVw^Kmq[%q.fw:Rvk1joy!14wOJ+rO0xf/zGr# - -vp);GHwnMm-7zUuP6sRF -#,xsSHQO!G(Gxp5~;~N!0&78@pP7Hc:<@K&~"YyQ!DYbUF -$1@S[4W/4(12!|-.!hYf8Dsk3`,ZXMJW1W,5?)*ZZ29:7f5Y_KLajmei5w1kDz.Lb{;V[6jl=eHCml=0YaL.Ls95^&aJL`J3"?NVP#_w.>$Ql2R;dEI*NNUuZmYJTaHv45>LxDi$bVZji"d1l2B*9^9a7MUDcu$h';case"pl":return'&]^;C7oA`(na.ik7NGk$igw!a)o!!4^&&_OF&&g_-bw2f]qe3;/*[G4+LD6*y&Ioskct7y^nKI?<-]S_W6E0B2AU`G+v3EGEJ(WcdyTZ!pzv*w`+Fk4/gL;lXQog2ayVv"}6%T -K,X+2ILU0%2FdvCM:%m)m~jrxh_)AaE27,s5h2I9d31>7G`;T, -1qAiSaN[Fw2Z/F|?7lIDp*:==fHy{k:+~Ogh%b,D!7r^93U6Z47&Ma6b@_d]&Qos#sszlB>c81JpL%?a%?F9RU@m>xb%i2fUdp_p?Utm;x~Y_yD?YyphXtxoFpxPFCD2U9Q>C=sHJTIC*xRm}*=HK[!EN:u$u)!YgJjJj[z`N6UqT$,V`zvBLOCcyzj[xbwqR^p$o{NuKI9ha)R?ySDO`%QMD!MbOp=QZSsBVF1em%/w>Hwi85V6AYHiM;v]Q(X[u1rEnd^N118&$c_Ic]q*+>s1wKhT/pw5I&Q@ -;WQlPREM,D%R>=xc]g??94SqF:Nah_-CEM4[M0+e_OD*0<#0#,vX;)&7q&9Q?VSf=87Ve+*_[wTTz#NOpjt&XP.`G*Od-5%v<00?J`xy_IBfyF?U?0oP{A -u -K7p{"LtLN;=N9-?@=SIX^l0=j8]fz)_NstsC8.5+mZY{` -!!Y,&440I>TZx>X9u&I;PYB{83yqPif%udm*y+K|iZYpAO=k.U&[9mkXaBQkVorG:XvV -jp912O_LjC3;HIhr"8wN%jT[,9t94#sl]QyD;;1XCG)ssDUvlUFE2Y-d|$$?72L+g;@GnK]IwDK`3o}[Au8hSEl#hYUpzUayfG*@p -ojt -EW,&OJ]lyhvc_FhbW-(5?PGgYQwi,yD")E{O:JgBaJLXP -ui40oWeO)w7[T?auw4]7E0H:2QqN.SwsHDd1^jbCz`*$D-J$JU:*v4L+lXghY:qTfC6KM85e(/Jc$Z{qC@,OJVV9MwbYlyJ:S^Y -{E;[k1+/ACItn8|i0r>#k:lfkSa#p@sU57Nydvhd(jq6v~*du9Pl2-T+*>LG"|T1w`BC5>`-%[H_AuW3bV3j?Yk|yx#E(Ti92)>Rdmp|Hys_6`mYk_9u4v[T+U$+@G?D&8&!ulQE8PBF>L$Pbf9RPk0Q[+nW=Ee-kYfYSG%Ws.mG6 -*@RT_Z$Ed>[y[44A$utjlWU"mNPwr^orDw3fGgejhEo0XeFCw*%`:!l"O&"JF+e%H&l>R%K9+R,@JcveLz.],Asvv8BVB?;C_VWHKfWZPV01+4?$E79G9W&A-d;l^:o^SVQ6w8I~0t+GY3w)LX0}XG -32bU2##MHZb+$Dl@ggRw-{-FwB4@"5vj5]:rjC.}Y]izH_c;L3$vcR/8X6I%SwA;>lVNgK&|D%g+d -Va:;c*&pj8iAB;vl8qt#:6K}[t.rg3Guk=[z1|QM_ql!O2M)/73i[LTIU!8{IPc@s>T2wYK{-E195)U,29ID]JE6h%]wqEbgLj5T_Z`Jen36nc?#;B/&4;oSD~2fPQ2Rffj?$y+&7N&akF>&,gU+4bIDs|6yJrizhJY~,]Xip,eE@j -,[6o!)iJZ#hdi00g:dPh1k]BTH4)R?<]&-SXJ3}odm-aM8-Kf!j>KV|rKN;t(Iz5k@m8I2FS!lI.JH"6l>{kO5Mf|6$"A,8>cUTv -ggg`q$FSbtnRCUf08M47Zh-P"idthA3Ql7hTG&pGo5?xM+%F#U,FA,k5h##!q@)d*v@ek7d@QB4~#|c`l.+Qtfa#rM$/xv!21Gf{j -`;6&e>nYb@U2t+Xbfm8$9r^1NgEteSD@ihIqft{ZuRXpw4d0L8Q,VHx2U+!.9JU3YPVjO;gxy"Zt$#]04b_T)jq>JL/?XN6';case"pt":return'#]^;BboZ;.A5*lPJs9!!p#<5MwClBqG#0<-CGx?Wskq#H[L;3ao;HpMxu)K7FRi#XS~JUi:wfpws&ooiofJeU:XXWn1]0Lm=qyu^Y#LX[$fH!cBaB3D@{[v./0UmdRI<3`ztEwn6GHT>+xX:)t0+Fw,HkufL"w0[+eGGXrNK~`L>@]ye|$I8J*F>y)Xa%lCKIB-pkqEL?`vdZfW0GdzV(mScx?:T/V6L;T&6znVdYx*?5=A$R)>Vsk2YSTotSKRDY?tHYb_*-MaxB=@b-^t4!]aZzOq3Fa07}-6-G5PR+>7NEI]_>cifOVGdD3.ZYclZH7+%}>E!)ZB]G>vNpH`tDbmyzR#^nl_newjOs/Ti=!]#jqwfL#o3nYm3uL^L@HYX1i-yu.(Xc:{f*WYI$U0PXYuXo)H[p]XP:dewa3Y*Wp9a7<~RQ9y=AdB]g1 -aq&W4o#.^s33"o`_jCrnum_P9MUT,XOl?_x2,7WEtF.xVLE}P|f#U:NQVTs_[+Nq>zI!+m!&KW4h93`uLusbL"_7P)@"<.JJ21Nb@mJV9z_VY!Blv@oqQI(6=s*7^o?I^W:{WIGZsa&N=l*ig26Ax;`^P|2N#_lh$cg::N(^$|^m2xw4Vymp?+)>.1lRdo@%VTozL~vFlVo}0TD -Cnc^27:]"a^})lf%v-,NhW,W4~jo8Z<4h7(]cxy6y/fyqIOj75<+UD5a7vC<95K%Rd,d4UL*l;Ydq6$7B^PH`U1516:+g!c#6eik4%N(:,MTn,#3rB1pYrbzs)[aTb9;sEMzH9@U6l3ae)X%_#ua49jsoevmVueB38 -J[4Km;Av.,*s]u5$F8haZ."og-Jh8y=+FK~XG:lIDXp0}u/JK*2G>l#geUa>]j4&QiGqwhj(fgDw?XxQ7Tx6d9bjvm]vjws@;w;)SF!B6O"-&`YY5gQDv5#AcPV4|57oA}.]DMDm*)Am$/IQ^?8#JbcC;wur^>@OIA+*"M@|I%Ri:j<0J_Aw(CBlH8p1+}.ti^5!lUxxm:2-n;#`[Y*?@ZQ#2eJ#!yU%n9,5ON/m8*i_<1=A[5Q,MU.~Lkw11L@E)Fw@L",94PPL9;Us?n"iqX1dBQ9>v[gRa]6D^%0?N&Z&-"iq;2Q1K,`o/c9MdqvF%PqiHsGQYYd"3voHwY0|?n!4.iKbZ{L/&g^J!f+}")cF17R{,=Q1U,4^bk+ld3_^2T!$04^q/_6Lh`i)S;m -;JVNA_<+~p6,"]$l{1JWi`f!iqdMb%@e& -!v~N"es::yqchMQiEb&uTJ1)7J@a<"pr,pyGmt~!/cvqTIbKI-snrJ"@!e@O!$4Jk]Y(uLY$0G^9+o?:3eh(#!{D -Bs?a -Knu`jFRi92dHUQcZ[YgXV_*w:nFgVC.fWG^]#&a;ov9wI(;D5AgIU+6N%V|$=U~)KS1joe4k7q[QE[fVRU"w[bN#UOaT_b)ciRJVo&)KMNPav%|!U]*fk!HRbf!VTLDuAO"#gdI%}i%=h"4>SLk.jg;:;f -JwESs_^&/tL?"twdQpbT@/TiFjS.(,gR]cjXUNQW#DA^.*D42Y8./c`>CJ4JUC_6UevQ1vL9$]!^3v -QWC9,rf[M:$kEn5YTcK%X,n.0U -N&k%=(dfp`cZ4<$O8o[5a/NujJDclAhLRLW(G -QrEs-s -}7v.:/-b79 -cXH*wzn}G^4m1Byze(gRD,k/Yt/9%2kp?-P`?k,Y2WnzjNss*j<<h$is/<_N=Ek"YkSm_%Ev`IX0%-xZz(1X[dc2=E9A4ZDJ_!%>9R`F?B={*J("`6Z^?27IYw;V`":T/uhEJngcWhZ{1WJ(Dy*lG0i/>$r -b2>SK^YxTH,uqqYDpYI0U^njM0;c`sfbY^9i7.xnI0[).1rH54(cX -bT)s_hG"fzMO=YQT]f.SVO48ex0uCN/slk>ZZ8]$NwILf{1)Kv/[C@M,OgQ>u&J)<PsxPcl=x3kk1uJa!qUK#p5F.:df%osGNU?8h:ZFw/(BDNF(n:Qc}?&D{[!#PhOH.]9S"Js_geuDVM"Kai[3k_mjQkA)ZGHB(hkRmf9g@FY*{ZEii0%^sg*? -8;,PD"hMq,K`s`bO8?99]%X:-Za$LUaK8^Z,UIYy9$rV)"DquI>(mCi2qIFBO"aX73r$s@JkUI2wr4DcT2^@?Wh~sL@ZZmv)eeQ4udgprp -v4-JrD}*4;"0>N:V^4KY;::0d=kEuZQM*:er@RUhdz"te_wm#f.Kw%K(g!*D>?Of5qMMiEvFd6nd1 -hG~i#G?X!pORwU#pxhu@g5t.25(g*GOhr+VLF;C2=N6s=M7UQj|hFa"fZ/mmMT{;{@P>9 -O0#WxSmM.NJX(gi:,?E>f77G[*$Z6^@/k -m0]*yuPP13Z#1"UfaXXb:@lm,g|y]Ml;<.d5Bk`&0t]di3Sj3SUnt`SNl0plme|:=6B:rgW -jL)s^=}6vIidnaYB[y>i?)X!6/<@3V;4s4gA;4odNO4L+_Nsv64M+tV,F< -.}yE49ozYI^Z)<=LC+C8+M.Z?-T^2O1U/ec%4.OVX+:l;Yy]fzle,[pv]];EW"VB>k3lwj]ep(Rbo0)*K5K&Yqon;!K.lb5qB(*S7dO7JX:h,QaM/vt[+Os]"83xmw7BB@?:#tFa*oJ;?f)@5d%ij|]Dgis';case"pt-br":return'!]^@ibPDI?TK,o=BShvj;D{%F9A4+-)f[lQB`U.(IB!lzQX_4PKpPMSq10l#0p2i#UbqJXr7?_{UHVI-Y(?0b_ -k|_jt?c|lHP*q$dgrFw/nU:}khs7;5g5H4kfZKQ~M:Lg=Xh*/h^*RkxYVIy8M%>_[kd -wPjrr`nGgs/p)ZM3_x,_Zo8T8/F}NkO+GLx]=}HuvMqFl6Az!ZTR)9W8M8w6n3LMK:BXiBYb";$e5v[}M.5!/VvR3|9}e}XCI& -~`q`rP!^(yn$Y78R`*5#sx}jyJO`JYglhl~GsYxO`dPbr.~Uv3xD6tZ(xpyP%fwLVOqyeo(,8FR`$2{,nDr-(OdWHuM:yCsVIo%kKSv,qV_M>F6M.ne9!=g?oRQrBT(hZGQsPst]SJ`&9QJd/QM39imF/eyJA/Zd;W}jhvx8~c`^G1+":t^)ePlceMeA6OY+ZDg1]]p.-%rVk1?"Vcb3X722u;06P#x"qBH)cyb3/L,:10j528AaCX;a9HpW~jq2cPH2nDOmH;mxbmK[ -lFu]r7Ud(eX-K_6!F%HST(Fa`69)3KcIp[5QD/-rUQpN#z@0a5h=so"Le03SP3%GY7$Ox|hc*Zjx7P?yK#5[>pJ(Pbx.aKH(QE*]lh"M6Bv:$(3h@x9n!PizE14pRZ1|w?HR#"8A_#S-uRV%6c#2%4U*lnB3(Mzp9Xi.,g: -<6AgGjP8r[l,I;|y)?HK10ACx&>+*+qFW?S$H"br6GOHm+YS-"P}:LM`^&#IZ0sHYa={rNBW#c2,X)X4yRv..s?()=w9x&*x2m=0j]^Kxh/VQr%/Tq-^ -=^zOBqU0rM4]8uj&MlFu+2fQ*!a:uImVeqrFt#W,x_"aXSf2#N9f.@_rBd7qo%4HiT*QPJD)Jd*P|4p1MB4Di90>R%@h|fp[@/E;IR]c_AB:{*1$]xJ]"tF!Y>mF~i1D?#G1M^7>)=4`|rNUz-AGc4=LvI,xd_$*QF9N2^}La5/8)Z8(=Xs]HN.D5.]))r2`$lFWCYVYyUk;@G_+,bX>rE{dtK#T;ghRuL|$*M7`]"H35>,ZfuS"4f7V6!D60,>-}[iP>]hJQq*bV>0XpRc_@KWQ0[Gb*7Ao%j#f -*jEmXhrnT:Vef~SWGNh4v!!cxBt<]KI(IS(XagKde5Hp!cX._ri@Aq%FAk4W9T}O^9@0]Zg9um`.$+G%vban=[!V6hD05q~SN*BD^1O]gi;8qOMdjn/D1y[>H3Ol|+jqv&gC3uc1Lk)x[ -?[TVZTDO-,^n3W^J!@2q(3=F*vg&XA"-ALr8/.~f%V3F?r{("8{Vbv-1rX3"QC$83=d0t;7y$*^s+2=k - -5@N=A,2UThM"5fv.[ei%>D,_b0# -acqIA@hc>g*0&>+a+i9_1x([(6Sk_@?_}8fH2mi4R9DeB5J2SU2b$P8W"m<:j.8O3fLTF2E.&93QvpBA6C$,hw}J2V[Noq$?C0rLnOGD(vvo3E+aYb=`2NLtN8yMFDyrHxZ:6qA_7"QZ,(8{y8`KC~t|!/$NJef[F.fWQnZ8$j%@w@>9(p -_5srv6ukifa-svX2+#9U)k86{KZoRhhmqeq-qKLorwji%#iFaUGQd&W-;Ic.kujySXTsv3}F!H"SIC~f@QG2{p&!#&5?E_eFSl5c6,mnh)dZUT1X14o6UYmG{q#ioMQu2tQ!8yN6Ek`f0 -@F/bDlwK@K~d{]yM}j>=D^SmR$(67J^urMtd&f-]s&30Nq1X2-g[?C(3bYOk|.P*yGFmYwD3HWgIl5bd:UrV"7 -lJXyUtcahwD?SinH@u^RuvjjCI3(VlivgEvs"Ln+77MDp>Bdsve>j=Z8lf^i`&FV7o(GV03|^Vd4$.wS)TbFN[@ILdcASf]|wC9whRiEWhWq;][>RID)n[k".Ph|Mm8,J*eu`QDqBwP: -^*dnPmNMnK#DG=V02W#&gw+$PCGH,d"@}EJwSD3sQyK`gfV=K0kjcQ#8X?5Rc6{ -f,zo1urnYdWHiy1^!^cUx_#K>yNF~?m4{kp]uXJMdoMSolVcoNJaznO)@G%G1]Y1N+;"t=vn/&ut*X]FB*)-Dc0 -RC`6#0),bQ,"}9%;E"85+VJ*alIQ?AxnXs`;5/Ukn^CQQ8+^eJxbB)ke7aF./Mh.hWsG -8AShz&^iu}gM>Kk4dxJVXv#LwRUn$N0ONgidxV*^i]o8"`_l,*(<8)G|m7qA%gUhfzH!OL#?R:rBmK[}v&BhV_AW%;)Y[ -?yn"*&tXaT6)eqI$P=S^_s/,TT.-H*Zf,n(D*.By1x1}N+wL.d4Cw/Q -C& -&JEMY`>P:s5e.azdYXv8cF|=lZ3C9+%p$6tZ{@f;aN;{qF."6Kr:fDKNsDh]H@E@D"s]]e06GbGEtI*Shi&3*PdK+jcZ9>dJJkn^=8Xw)ODWx|EoQQK9UK07^:CqB)n.6aGh2Mew1~D!nNW5WrC4ln;u8dw02/8gy5E+t@:{(_ln/z_4Hc,HLFIk/HA= -?7PZEGKB~xQ"0Q^At]?BK4:3hr"hIgEXv#.bhm+EaXgy%5(DauZ34M#e/6]>58#SJDeR}LI"V@gURY0?K!2XNa2#39)3*%GP>k+Y:MO<"+B&QayGWw-K/`CM78&aguV6>J:">4/:Wk72ReVu/)bkN -XF3N_<4_d&B:3)K#)_/Vk9GFp"Bp)[0Z)xna`rzfU+O"otGj0Wl(:P-C|=yQ_=HW|a+v!BBGuOvUett-#rBB6]ZP,WkN!ZZ$O+>!PP-DLb-qwvx78NDHKKN8.4 -W;9!8HB"LgHdo,nIey.}$0o;Vj"#ao(wgg)jFO]k#k!*FQ%EU]E;Eh+ -/omsSEdADT/Y;}~7q=x5c?3"Ko2[LwA"<-$ZCqBYGTEU{pN$0,IoEbb[AT,-*fPi;GI="JG".+uJ+sX/_Rn"3[ahJnduCnEHml_pLg%={a8D8l,u~[!y4Y(F!x -muGfh"a=SdQmi$p5*D01x[>LQfaD`#$/:W2=08G"6fcC>>!4J#o9wqLV*GE[%$If^>=BJ.Vv4s$PjZj:3yWP>jxH+^Xo&a2?h85o,|)=d)2c`DJ^mf/Hn0ib704g-"5Gp=NXhCx:2`^&bQ -&%b|;0 -Dyk0ybVAtO?4@(I_?kDC3[y[y%-f8;}$|d. -BfrVMk`/]@&pBvHvduX[(R9i*F"&jWD)`+Rgc(.v<)E"g:F-*o_Ww8PA-Bs-|0(,41E0[;vS<2c -IG*+f9Kv5:{BMv5 -"Lv/Hk3ldT3lZ)Vd37XaEgq%@k%*haF859}]:+sXTC)V#lY?7:-G)SJj6#P$/Snq%stm1BHkip_b0v:zxgq?6Q:]D%wYEV^j2tn@k2!PU5>x< -bTX8Zbiv:d%(_mRo:8&M35foNtP~9*mxM)Y%`]!GAYDF1omUw -Fsy=GWG10U]-s{8(d#GgOV"exU,PD80m"iSm19]D -??@k!I|i{+=]KP*.%:,p]/?+KInq$O0/X``F?GOSif=)#qU:~sWU4NM+WlGa^w7b5qG]]E[=A[v6^OIVG6rP.LQ6##k^qtY^r47qL$m.|c34l-~prJKud.+MsQ= -wkdlm7/.%0`a -Z2MHs9QM%tW,Q@1323a;Z3J8_r)UvI9uF5kDK&3cIL+CZD2]wF8A@4$=gG:n[%b:%E -cA@]LlvVIhv4)S!KaQ -`5U~A,[5"J_p[Lly&Fal>mYUx]Jf;&3gQo]vlhc1WHsYG*Eup?n$]t0[TqcO*ajB$9qUIM5h9(E2c.)}2aqjR-o=,@Ra?#EE%]lZ.aYRHfYmFB:N^<4Y_R"#[mqgun.`/&/dPZFq<9&gk?@Qo*$zo|BGM -X>G+B@<3)0EqNg?L[yg044P&m8s:@ES=pwQsnmY)qB[~X)=&/N9/n3@(uYe>o+%z7+0SKo:]mjv(E/E}FSo=SmYMBbGPkewVnU>!:i)&s:x0xNHGL}w*_$0[2O/Q?7Q?o5Hf^/-IvKDOpTXsNj[B.&9tTS>7y!tX';case"sl":return'(]^;:g"p=)Q,S`$nsf5!SBK("=6$zC -gjH^s7BFvDqW9E]r8WPzq/cV%b(SMhkfwQ.7r,R8N<:U]|gpXigzR,D{@RuZ+H>kLsB-X"^C*5qEl{y=]DBw@T -%=JryLWkO8|:8yGLxpqJ4ERJIez]>XD#c?86-cu+BdC7|-}VF<,5v`O]^v:j>(R9lN"uOC*DgH15N-;.ib7H!&oEEtG=(vU&BfNp.R/XDoE4rP[9#KxkX38W,PKlW#6BCe|tQEJne&_Ql@;R|sEoE#~+alGG=1s=jo -R$=F5kHn,$!O -;"VlYM4R[c7OSe%`&N%HT/niJ80c:0CBh/D?E![x{pm*EhDa%Ew-qQF4 -1.qvTwAMd+6UW:veA?W:[la4G["a9l-lTe`R-XfgKO0"`Lk=kE{WB2,"@R}ris=B*b[dAaHcA>aK2A"*;qn>S6mX44tB@M~JM,G[h>$,x7ZUhj:+Wx1Zr7|N`?4@SacBU`Pq]w{sVlS4GV~Q/z#O;&d%6q4.D2~L|neRWA3PoJB@;5;L[jf:sR[BA:g%1VIhWT0 -NcQl3v)F;V*.By(SeYwmhx -*YU8?8HweNl;$j8!d]./D*8g?nFlo5+)=!4kY61pU~r -B*MW%ng,<[E)=#Od<>AmIm!88gIc+$_It13O**,BD{EF0~V)CDAgHbV-$>""xp#PQ=J}ck"Jxhj7hRA/Kl#iZ2(4?PiZ+5hV=?2=6-A;5&c|aAR%w_RPBF^p-xVS -)m2+r}07?:5,Nv-T1A?D;erJ3)JexKx1]sAbULk}-l%>C_"(-.m+HBb&pp5vHYPcw*<"2`0gNp*ke6=,V3RZ~pS^ -H-(qL=p2VQtd,;fav!:U:+AEe9nue" -be+J~P)iYD>eq?s@OB;_=o=?)w*aZexh|:rM#4knQs0`qZB7)v -Oq6)16/^*ff(E#SL#}<4>Db[##,W;yq}.S&99"=+q.0xRFY_4LfV@< -1T>s,e9G|W7%+*d;iJcdKR%)/j:[a)X0-QcBuo+-F.-L/f5eIkPl^85*95GDIKN;}7mOvS|O_e%Pfn!E6IV3]T5U=ryx1N^14N12[2t.0/K*_PHSyYwc7EMYK..B_m%e:U}:aDxds!uFO*J2}=PV{*3y-":"2[}B-4A6YQL2,(OGO.4B:>LnF:c$.fHD#h/Sc$0Es37"Tp$_ -TD)~t#NQ#|NQ=B1m2j?%"*5ih{w8YgW{,e%q59Adj8g:P`iJj|BXl1o>;E!|#IBcu]M1Fh;nVKZKS@c:?97`_b5F+o@sg?^K3DwTp%*Hd2GFXJ.M`P:xxO6Cqq$z!mhUP]lf4lH@X*;@Rz6$B:@NtXEOrHc`c%&b.RG?lA4!8PHTRY:4p"?alM6kJT_d*"u6@Yp>?chOdL0dI^/X,@}yIf8xbpN9ixcqO9BxD*hu~dsYS%]3rxyq0LR4*n -p5_SJI:u-kT,SgN -;:H`v0@v=!/KxoGLB/Ep+.X&tTfgE8WsT?j@m/=;T-TKi9NXV_j/N1#3q!EP#*Is3o(rt47r$ErBKRp_#eOdnaJh/nFCLc2E__F4"rcCDdsL-@Mb=OSlbeQ;2N_#BAe"k00bk`S2@C;kK1HQ0;+q+zn;AxZ+41G$p+^$$AA65>9r>2W[m<7%5>8u@h]>LWAcEcI#7GM~mch=<<$Zk@=u2!AQSUR.#dg -_XbI(s1C22LKj"!lv}fv@;v"5pT]ZcLgw=SUcD]tH$6{[r*`ApO89?mVEWMjepmlAkZfHyrg8LVt_7n8vs$`dGEK<"<,(8*Q!u/adhZ(2pQd-OeeEkJYnzicMJi[LFq{6PXm7?e<:n[aY; -0L:Xw-i37QFoXpS;)k.J%8T5Pcno`$=hQhx.O[iouy1 -J"@uU=Q8[x8{nEu+yi[jT, -:ALDC_nU$fAa48s,j@[ur(PJp/&,63V^4mTtVP~(-0M*Zdg=)c8o_%-T^jUr{I-2V+X+i -Dvx7(:JJ(%(U!#Lph$7#%$N"*[aLvHd&*@Nv7W,$kK=+^!>qyKOLR$:`[Q+j3FI -!Ah,9HF.YEeW2n`4bwZ)FSG-. -+qXcP)fn]Gk(;@f>7k&?|w"R(7Q?g4-qK^Q)O966M%K[DK$[38V$whtG*m-T|-?NIC+F*y8H|u"mK2eNYLUqNtZ4mY]+/ -<,A3~dEbF/lRPP;9G[.?!n?4U/)NZ-+BKR6%E^6E240$&D56f"nPz0tWP0FG@j"$-@4Rey+oEQI/MqvV&-sN/,_( -1.;jyMmcTSNhdZX-m$*0YZS/Ps.2;^[oKSK~&5-8qzoRf$.-U$5QH$Nl,ofVB]YNf9U3Ud6k]Bd%XK5Gx8G8aMKFxN>C:5UCcaN.$1 -,FRa#CMBAhddIEY8Z@0ZSIXS_)37C8R!1GAE>"doc7265orktluuxub|!ZYU-]6$xgwhr~2e!A0@;FVfF>^|XFIc!sJ9hyy7VAW]S:r,4obmd@n1!if-M7+ -@QPZ=WjX_9^XOn+D4hH=9tR=^(v+,%@E7)k`43x*5<#bo_#$R3":pS"TU,#c5`"@I|0h1>X<(r/cH/@LPAW2.V?;%:4^P816]CebO;q>sZ[_*B0=gTWn[el:bC$lRxVR!XUF"4,Xa7E+v=3xUV%@N7C!h[x -Kzb{?oA#o`[s-B!*ht)u^ZMdg+MP>#y$M{>uksxdmUX( -*,He)^B-RY@_=$T")%oI%yUVH2?9N5CLv~x:kv1jIIo39}!^/xJ~V)tgn(M"of+^vw^dtzJ+hHD]ALj}D@7ErW0]91`%f=Ti*`AuW%D2x`9*r5Z@b$[q&V= -t`r#*):(&?h`Lty!]t@TVK_7S&E*$NR#/iX65f[" -7N;>N6iyi@J;^SM9]caMIni[IRasGat%!CT5^)YY6Y~84;P=j/.lk7|E~8?UX?PoC.$Cd^n5R?CH2T+C4i"Sv&kE3([c-%6_UJ[P8",8gBysmB3rjL72L>YFb-1M;h4P@grQ?E>15i=%-a?4Cdt@HsmC#vw39J{2?_cCT([r:GcC~P(:(H7ome+(Hi&HX-Enb[4UVH4^%2aW#s:,Kc-q_w$l*ZVlJZ!*NDCpP}tlN!l@9S=LYI3RZ~#_a`cE1++1YC+;`_h&WWy]miR:"3 -;UXN}t15|K1@`M`,d0O+jP1NOwzK$dw -$y,lF>QyeVPC}5U[M(pr]ymVLNBl&cP6%flIZCavdC#RQ-5s9G)OQqRj,j.G$`s>OLX[Ch]/0)i6b$=[YY2u+RNDGnP^"r-xx/i>&=10j.(0!y]#f/$)#o%!#qw6!eg!$#[OyptB5HVy*9kZN:Z#eyy/tDiaRY"d8(^a{ih9SLs:Vfj4"^T"JM|F{OX^1d99GWJyOmyBr(_J"*BkfGC$]OVnqv4z$Wm(8#F)/J@T7 -v>CnF5s9W(33;DLjnJWd<;"$q_k*>;Z"=ehAfIhrS+QXH.Mo{il`D1DqeyW14^>v"j(ymGR;/Tb-!=3p*pxugW}b9-UU8 -CjOb-^nl&K{`W;% -++}FOh}7ZF/&ROdT-_(kft}?:_QrIOS^THMkI@ ->1lx5/PH@xL71>l5VRCZ -rCOyR?.`v-7RvGnxft -tDCE4VZ6bf@Ih[uv(>ikkhPfN"n8@pX;qAQG4YJv//c$ -qPd~2 -IqQMI[jwUEae3?g0t+.x<<5#SF8g$ -qhDU#S314uoDi0FU!:m -[apjz&=*Oba2d3S)hs<[9ul:04/H|LMlpnncz:1Hl[<_a7g0V:gN*Vp17z#;fmx=]qKalcWB.U)sME20BE@;lsb&:,i8JHi0(ZYVlX:$Tx;aA&r/@Ne$o-ip1f-/buU+!W,DyY-)<+UXaAgDiP[R);h=fNZl()H-FQg|:+BB&@bq,dS1YI_ZSdG` -02pt%),A4Yz5=bV -@i#0?%]hzIK)I58*nsY%f)xX_-[Cw)K0anHA`dE&*vx%9piO7]PwxDHb{jLxK2Xb/DS/[UDOofnNx%~E!8s"-7/!mZWMQ2,&3*?a^h+eZg1sm^dhW,5;aEaFnJI^gI&oJly<].RYr^CA#;D&/fnoc/+ET:7g&pE"7"E>i+_f9,iR0""';case"sv":return'%Zu;:h%WB$",Stf0pEb.oD{;H/@eQE$tNDeXHKD)0Sa%u>:jOm!rq-!v`cu#t)]w,$0(6;"hM -*:jPmv+y^X>X+ogb7R"bU#$:v!TC$y*~k -$*"^]k*_SeHo?|3=T5kQ_S)Hh}y*ZxUL1H*9%HJ`$):z:&@.CZywkaw3Ji4uV71RM}e^0UWC@ql{H(3{@;[ZPNxB);vEklj3Zv -@mckspM9=aW_~qK^!t(n*:!,k$=X|q|=!>{KU?Igj5*61jL-~*N&!0?m{WGfI1mld+<>]cU!=_%eLw~ool3E.b>=T0Gg,cHI2Bmm%+TEBpj:#NS -fnS!iBOT94S`{$r%9FzM6r| -emM)ILp=>rvw{/>Y-1@pNPNQG"Wpxpmy{jjsYNIA5-u-ubTxYkG-*qppMLivK^_QWSq$mF$6.8D"e-JZMP@+qF}57lzJwoSFs1u,i2 -N(:rfQyX9u:W9}eK[qe6S-pj+GAvHTjB_bW*3ND$RZj#Vg#;(]OABNWCMeZIanGnVZsZf+!.>+$UYBwN^NR@DY&h!]ps&2!PA[4Vfj5`1m::,D(SaC&]omJp6RP:qQYw3ik:mfLq$rgeCi!S3jZIA9t-A;-i^^#}d21#%jv5MH19Vic;"VUy^rk!7ZE-9sNmdQZJ;%9jC!E%FS_MKj2V@%"?OllAt~r([JSnk]3BAbE~7M24kixeCuR{n&)LwbQMCwE/sK0yFj]<;2L1QlsT$WHLc)Qfd.0u^$5)%*U|JHZC#2vaJ75.XG_8_.)4$JAf+*?rTZ*Fnv%QN|U}<}MGkpdx?b_I1CBR&)l0fu_">]=86p8Vv"8{A|di;asg&IQMpsW&d19o<XCbk_mKCr]E"?#>$4A+-%N>J,ciRBNaHCO|+E4n1]r;xA>cs0_w@k3x9R[4-nWNYL?~o04[D(*+x_uk"p^y -TS`?Xbclu)kIUQKyfa>6@;3UuJ.niM$Av*xW87)p]RU]LNO+%^2Dj!y8d5f">><6z#^"f4`U`S^Dy$~@l8vP]PIwM7~?Dv -YkQJ?O2fpXg"F3tZlk]K&jBhd9*okaZ>?x<:&/G5e-*5D`"ESw"y[Qp1u:fUgU2q.PkR2;e)SZ)[T],#(/Ak${?Z*-C@I[NPNzZS84va9I;4k2Oq3W.2q03yg7B^odk6x5oNgWB,5fkS];(sSMF<-PVu1h14.AyPV/K7VU5m9w-_kJtiF:$Pct_x`fn$4lx*r8<>mo>n=lvoddP!^VVq1H-PmZSRZX/C$D:9@H-?Ej@c;RyJ9,@2R;$kp-=1@yiF&k/+tH_5:H-qJ4(Y/Hn.jK[1rhw=Y45 -Yo!B%n]EA3D3RG_F`bPE6itO[&Lo"Z!uOL*|`clYKm0#O0Ai^ZL7quM#&;=:;%9Z:H7nx-UrEw5rSSs#`zJ6TNp?TIZ?-rhuuyKh68P]MxS>1?^]t&BD9)E3w-XiytlDH9w$]@h%^AVSu@(lso^6ru)Xi*K:n4 -gX)SekaOyw_Y8C~c?q,0HlLCR=j)icNFI0aZ1;c -2Uf6)L=6";sG^2)J@:T3Q0h8>Ore|J()o90MCo -.vgOxM`osny!k.IGlbo9`(=gp6)^d.+/R6cTM=0C1-M9`m[$Nd3i+b>R>aL8@PsIXr[%,|9TxjFe&)HC^Y^nM_-0VuwL9/53QX_8?&^|?h:97BC6NBl$0q#iKXuY>LOwN}dU4J!q[zK96180ZW-KO%x7;)c(:h_Z2hQP6GI@?L9rBC9!yS/&G44C9u/#]2"z';case"vi":return'&]^;R]@s&/fc -s@r:.R!$Mz_/:;N@A$P$Z[yQ -D&%TBb@vXeZ.gxx:o+?@D-5 -p9Z6/1tiEQ1/LThp#o8y9Mpv7av- -owHM(rkKiMPg:39`qHH:7oV%EGGgSylJ.,e;!,q.VEcCX)3>UabM8|>"To?OZv%<@rP=,Fk-+DwuFw&sMpd3;/H1,w)s7Qldc8-"MGPg#PI6N`=Jp+g`xlQc?7(I)NusW=,9XIpyQ+egN2KPt%j%OA7V5Vivw@sSLO`:vkjJ~t?[Y;{/U[1uTDcm_CDLb]eF$3YvgrjcVulJ|pbKfA*5^_2].esT8Af^zi%7zimx9F)`Z>e.tp;]M][tq&4B[2Deh?9z!M9V^W//!LJ.lZF]&wuy;1fl#mi3BS_&6,I-%f&[f`-^Sn@(y*9QM0nh=wd^UzUe&)R//}DbX|iIxoinBCZ;%BliX+,hWRrae32nhn>[mPm>lFQ>uOX`@Yo+("P|S83qVK[=cc@?iz94V+lGz%:Z!X9=qWCzE5MZ4Da."PWgL1k}eqU -78&p9EoRv.$mtzH&vy?/tCFR!32#&tt6C$vV -`#HO6>`Y>_#4=F#^EH/P{>Jq#gDy+u&f>LdY+i/TP6^qE/-&]<%(kGlJmJ@kN6SO"J&$Eb(T=L-8UVCCZ4&0m)J8)*$I1nR(a!7xYsK^3M2XV2;$iU=5qLn`w.8!?m_}*?PXrA+4]6P -hKK{MN`j4j7c8cBf`Gsn7.*5FiLxDOZ|];+yKPT[G.gR>X+T5#jK5;]Y(g@j7t! -V61lXF-mA!M-r0#ecnw -dW`HiyM>2">7`@"r19(`j7cvw;n/97a4__m~]QFD#nMLUO>&N>b}^g)k=5g$n9nrjS:cJ]M@nJH)4j0f?{%C[*21) -I!1M#>1 -_J0tZZY]2mMw/e- -0@YJk{Jr)wFun,mrHGxic!4A>ndQw-QY#XF5]4wV")y2xzt*,-rbG<.-Q0mr(R -n0]f6F".TC5K/0/mVo*Y>$sV]n}8CsQg6_#Va:y=J%2yJo4vr%Rnr%}4<.KdknL$`Lx4>N:RQ::=XRCVFItA}wu"^pV:__>yTJ,d#HCT(Sy@I{l0W4njamY_OhAaOd?:[WdIBW8#ullzw0TO+2Z,51QZ_k_%R{5C3}#|.O#>-hU/e"bAM9FCc}ot=d=*/RB -sj&>R"Bd%_>vu_=MD>;vm8NoqHw)NyK_%NAbGFH[Bj7F3dKj5-)5fmGx#u=A+"+mgddv^k]_abQL3IC?z]wdr.MU*(Nv{uEX$rMI+N)sNdF3E@expk8[=QoA!W7Fs({[Uv?mGRWQN/=#UuGETg:ik2`;L8:-vCK^vTTp5unTr8(fqU#@Px_:-BJF1-4C`pYd:${9_8jCQqLR8bN+QQGsZfpx)H(8,@#w5NO?uX"ierVK9N~<`=bK5T/3_QT3jv -S -Q|x9F@R}YbxFy^?a.,2|viHrNcNp5sei"`v0%-2T2yre#eiYvq+NlgZ[@d,*5E,8CYTJ:?"MW|Tb5bgn"Q]@Fh(>,`u)ZdO,d+I3.yFgI94=$pa2[2Z"apM[KkITty^_:Gi41BDHd:;7D|19kzJ4gjx(>em$q1%Lhp(aS"RrClq3oFe)-&AZsWQ|lfSIQ0Ld>-/}$WoKq3kP3^m}b"awYmX7k};aJphPgY!`Y$*12ba=imjVH*sGi6>(HWcVIOOg*`UxQM[@*>27Z-v2N#eVMGSixB+<.QjRil,7jDQ]fsP7B]/Y+7cGKkxb&44vNYt<[^;nSOAO9DWp]LApR*O?Y!Cqwg(=*2&qM!-Ci69z+c4L57[A.4ac(w@m&WD)^=GE`2oG;/x0k]^d!o&=,futQMB511&6Sbv>K8JLm$)[R%q#P}u{R8K:<)&$wdnWvutiw$t{N2*irzG_Zy(#aL_h27w -lP.cn3m1B?+zSf%fb;HsDrFUv}(j- -;c;[Ns6gpyN1j]I`:@(oZtmQif%Zd^$M+a6L*dd20/%+=D]NDoA3b,=c-CSDt#7)1^0]@(H%C]U|#RUK`qUJ6),g:Le4ui#]h6=L/EuzM-n:U)G!^dPWU+OUmu6PB?7v?N8$* -C8%UP]NggZ[q0GGBGrj*UoLW4A:RJFru0*`kazeotOJ|b^=inu>W/b+IIOm^l!>LVsG -NIR}EW=rID`MxI(q1a593J&)cmj[f,;m8/B2Nw*rhb>o;P^WkF+Wxr8[5FV3i`Z_^)NGMUpe%X0<`ZXq#BT#V{EFTUi^JYPuc/4y7M4j]K9cZ#M8?P[:4E?h49JP2@Es"R=!?X=}kJrB^bB1KHF(Q?f"9tAU^UNV';case"tr":return'.]^@aaMDY(nXc={uao,2RNVMAEq!+]TC&`0"!!Ui]y:?"/3VY=tM9[|qtxU,nYwc#KRLyz&n^QhFdpL5+CMh)EGYsBge -;-L?6/* -lITxTqU24qJO$kLrgvAGKLkY*AE^ye(7*}eB7hY& -]uq165>[t76L,^|X^PRxB%KKLKh,/MNFd`6W`dlMgt+7@D -H=oYUd5)QEvJGr=j&dR@crjS&nV/7znf_N=HhhdlSFUV&t/1!,0c.,56yM,Uc8`9i!cpCoP_qvx*&sC@Koj6aNIeEMyA]CV0e7ENa|ygR-)2Ar!oa{%8evYU1Q]roV6/$FE3akYaXZ -++Wq.@t`.,5>`uws5#ua)"5/Ttj+]y`lxIq]CSr9D(<(NUnJ]%G_s3QM9&(iH+s^XD{)Fr?eh:%Y0.c-rGs*63w5j!0Lg5;$b@xj#KP>05e5y0|ar_X1AY:0S;{cHg/+]5XrpWZ#$IERoeBlF%{I]7I8]L`/>v~#6NW1_v!@XwXT4lG>j.mo,u[eEJhvf"aGF(UuWUmi{_^!WdqBc3l!uv"/Fa|eCW#PF%RgX#sqKRzsv*k6Rk1CF@rMO]y.ztip1L~G;?.OZh883!,U(29c2>xb34k.:65^d^!URPTvV$/lywox.[k@tERrekdvDM"w7``T44~i!)I_?-dZHvU`-_]1qm9m$Yolia?tzs(e9v4f!8NyC<)-a*JX!>Mwb!I"3-fZYozputf[Rncd*%(kE(./,qeUU3eu8PwyF/z*HO|Hhnv9BX6!f2WX"w,"UObP?l$mA$ZCJw"F4:"h`A2(5a%oUaz&=uiIvx)-=>rC>=`P -mUr6[J:}L_&pl0k"cAnC/fOriO?3F*X/XKi~xdS]e1yh?+!k=~Y3+Yfii=#x$m?~K0: -VI=v?T8-Y0kV$>-N -9FsFWMvxC]y:BLXia!exHnvHe/l[yIn?7ZbQ~Ta$h#.A:!H0Nhg>7VFA!K#y[&vl3s0*)*U/!nj5pI8,#2Os|sz[ziZ,"@yBmT%E*6x6=[Gq[,;#RBp]Kd}QVFs4w7P)UVGP-iFkg5B->nbTD)/#"lK^3,w[lP%(67$,`YZ[gSSMFEo4us$nb3j>9-=cr7%$MC!ITffoQ9Jj57VvM(;KiE*D/24}lD`8;k_qizvtCxkYHs(Ubm&{8q?!TFyc.9TXI`RE-s8ETl+8%,8C}*BSV_dX|!w;+O3*l>U/8pWQ["f^KP=N!c+FS<*OTrP+,*n$2a;PsqD>}P_lUOkR$wMmQ&kRKBnjTm*&O7[QG6,U&h5KvQW&8/(+cKU]@vHW5`Ip9;8pZ^=zg$!//2Yr?Pd.a"Q#mDRKl#T&h/I>ySHgZG_Oj6k&8E63vkvz1s0?><>08;)|xx,"l.-h7?+WOU,B%GwR5X@F+V6@Q,e:f5BE;?nl7j*4As_C9B.BNY:922KRcjXEN_Gz!myrO]7yf;>CZ:G}j`Ks)/--gp?{?$ -&,"h@]> -qXN?9xF6nQPo2cG^$Mi[J`xLH[D:L;1^Uh@bd79CY@d-Y%5Z>"f=qv_ -p@_=q>^aW$v(722x;$m$,u}fv-OgP(P9X_N6?Fm]msXir!M/*2Dp.gY[?&&~q^Ug*yLe^?fh4s(G0(<{o? -vWa[0v&O-0Sea5L6#>w"gx22d -v9a2 -4~g{3I#_AREUp_4o0?Nm$F2FRli=oQtmJ]01lV=[@f0y%CfZrE1x^`DppIHaW7YxGNRW$1l29D76Y{X~hO.6ayLMjhO>Ob)$_y61DZ08$>n`pcwHs^yC;HE,(FHTy]:Zxe8{KHdPP"g2CmxZD`%!kjdlR[Y]@`C8/A3S;FlPZ?g?"3ZsE2g/Xvf9..:{J_C<8iN~01_~RdI5$py&)m&JQ%X%.,Tpm5vNa(Oy7N3l&>5m`G0PnL)4#9nt|q|,Q2D$tv"+;A^nx2;Kk(CYl*@.CC -g6woOOQ4S<)P(,V5r//e`=1>ca){!MD`#zrMhE0DPX$]vl.l]z]%0Q6g=`aa&[V0WokrF|F@0OA;:)7M -2YH -ak1=(UMVreqdnj_YaI{tq(NT%k+QBXQNTEx5AyAT>M[nK%@3*I;&IS6^8`zm=,+;A%S]EbNQmm8++62&H(tLLLg0}1}%S!v/x3A`G^q>_VTmO5JBh*{nZ]-Bo4bCd,5(z,eg)0#6s}l8:>ChABN+f1$5;`s[i^WGPo@4NRh-g(rq7/fByeN#D

    ,0$%?]bS] -#U,+,V]bL1!kkXAG5`gHa+$9!4^V#^hCsTN&';case"bg":return'!ev;Bg~Z+E!a(t[2|+?Ye8P[:?QjES[UMDuCl)p01E]eYk.3(A@#X! -.N.tj1%RL]tF`*t@N0T@ -|pV#exbcty=yB3OmWg~Dy6MAJFlW>l*dot5g~scG57{51c[m}IU)mv1Ef>Q=xBaj9nx^f#PA$JiR/ksv5v9?lB.;)K8Mqj(v[qAI1ivt5i~)S%#m>(UaSLC!>+b*R;sKF:e=P-WS+Xe%tQ+Qp.uPzr[7=mI$.8/x:FVJOd6u)ifQl%,v/,NQ+5m0;y:Ub_q"tPn2XVUH#F5>V5ub":t`s+(%sn9PH.eLB7Z#/]PSS$]?sn$lkJ9t:ACa3bn/;DO -lE"vSin$P!g9bfieREj;.[!0e%bI^3PmNL8&(^cPD7T_7Lj5G?h=*p,J:1tDwHu_:+>2GN)3[+@h<r"2Sh!^q?L"HK$?kYK*;a -CBSy|-GTD5s_/hbOC(>#yRX=vsu!OI}%4xykuHCJu*luX!uJ[p+Psf]8!,EXU3S"XCk>}(e9bKx)eLsAg".p<.?`v;|b!j&%|LArlggocj.vNE=:&E2*1+"m{KVL9lLO%gLwA`gI&#VrT&]M(YRexD+,+_:s=0s1SoIbRZS[!]_A8;!&Np-kH["jr@t;];B.~^F#%_G0Deh{b:x]R_C;C;F7;C#"cUaso-O-1/^>a^/xV0QFPE7N"I`d5CMC./ZOy>rmoSuB,%MM{Y*u0#$jVMRCx?J@"HV_($miZfM9*i&k)L|)*ll+cFj7BNMLZKO%Y9*f;BO0E= --x -d]wJ44uk4(B`5LCL7&$-.b$.!9d0OO?`/-tUVN&PlcQ^/f6]#CEVd^jo<(&W#/;HsRqYK+MRPyGQ2CJS_1[TLDfWr,([iT(_/q"T&-y=X -:N`tc4yZ:)?! -%6I/rG-#iY-;xf+vHh-~=QRXQ<+pm#n=c%U3f&dKfCBF;g>]F)P-5Q:`SH_LJ}$Q0$jP9MJo-2`@VuCQ`usBq6a+BE|/S$<1.+:El98[l9&w@x9$([2>ao!ry+p/n]O:)!XJiDGsS7eHun8l$"(-|%`xL%::kCLyoXTOb!TL$/}[eU#hej-BP4B01g9:w+#yW-GS)@E"3).h|X[ZF"Y)~o)&Wm*v?j"1-7=3FyVC+`f-nVB;h/L+5;dY2r18Oo}@$=D2(v%v>kQMTwtB -npX!La(klg35$on!BrH-wu@tpIQs4n-|7=PS5$ -8[+:lTe,&^C=a-t5_pK]w+doMRT,R=F**6h?%lam=$V[(WwUP8fn(C0Rb`Dg[Tyy1i+EolD#7VB[Sc -g8hloid5T@vhoaSvC+b0;K]k;poEko**Bg5 -dwFH:u"R;7Qr&1= -RyHei;ZW;:QXvTvh>>dh@_Jvp{Mv6.1ZpCH2) -l;5@J6T{E<1Y4:)pSE%t5U-OinbKC9QGRd)j:*9%eLU"R5Sh6E7"E`kg1n(tWVI9M@EaBeR1-e_W1r*K`Nr_#s)R@!;d.JZqi=n{Q2R^RDG%d}FylG?w:ja^G~pa3~l4JPT#wmow[WL{^%<11-1"T-+qyvmObTTQfdq,>rOk+|r0Fm.Jn`r&J"aP@=ea4[P(G}$rb`r-PU`J"DMVK|x<3"X.iOB7&QtI/,2QoQW.pwqDk0xbRQHf>%q{UOhr:*KaLv3vpjWor#`JG%0;p*S*/U -=v,UjBOJ,u&^Y=rlPLXW.. -g&t.Za;0YQ(9i.E?M;-9K,Zm`33y,l8T>DRTL!>~Ww@3P#X2(7B<0ss3eaDkOLb=:uSam4r`aQ]BCJH#RM$Lv}gY8g$i.z=r*L7%X*Q*<"-X=6o;T^%iK^7@Fo3FPhWf$58_^`}Bt*KesI&sT.lq+8wuWEF^d*(%V==IH -58#0-UY.(pnB6yVAuWi,X4Ll#G5^Ww@5j/:2Gb,2g)|s%v/[HwLv3Lei+<7dz30@~B^%2fE9J;Nc&HfT9%o+Psw~(FiTa8O#.0J#o1CS1C+xaT$u@1hy3;,+F2PZC+A}1_F*1!Xmf8ig.?2gate|=:.[r5WnD*P^+NRlcMb0B6[gPb*RU~ZF[Y)B:s7q_nCi+QXu#c9; -/B~v7-o+7IM+3oyLnULkZrh75Ri-#K_)xk4Yckr<2 -NXLeopP56;0Vp[oVaK8qkauc0xv!4|OhoV/[k%;+)W_ppi48imu5St`*rQd~K -67kp0$PQRf[}aS=.g<4$<[(,Z,9daXkV+;bt6j1 -@ -[PZ)]#cbPIM5U-:T]J;Y8Mka8OU8j1]%9>&)#// -.CS_]^tV8o!7SE:RFMF>]{E|[jVhfb^zvJ!Q:ydza8QCeG_UZ93tZ"OV7Y`Q.Y9+2|42a"s~`9(%cZmd3/ -&F>z(h)+$R{"2Ri-5B[).#akee/D@r.5d%-iA]hNhR4M![-EEDtRtR7wx)4&bty:52Jd<5]lt(SAB7HK-V!o[MW"Aa5J_-PN,/>[2gxj}M4"LNqrWZXUK8%94?9y)0fM@,*pg2W:XSNY$!~,[IEo&9 -kO*-WpJnSx]e>$1`QUNuu-2J%USRg8iVI;Jmh`PT7y/*n$A"I$UMIMUt,feOH!zDOD7va*5%cl4`Fn2k"Kg#kH -0{$vYPLv;o^]c>fq.w+6w^Nt7=aE$&n3Xyv,R -` -Z!!R&`[8g4.v?5!FBK+gdo[x*-T48L~!vv17Dv*LpHsX;9:GCLUvCm#7YcndXMqU*wtJ&fU:DlTJ0,9fVbK*fB:i -!bI@y@B&jT[xd.X,A-1+j_:1Sw[[V[#EpxO@sJ"N+eVL>!wG89H8tmD1:d_*ZQc[ -]F&AGJL?3>4@(r6w,q][pr}uh%f4tWqd>qQwoV*r+w:qPn8MP?oKT4Mnhf.iPZP^e`Z* -`BDL+7jN``rHjFr!cT*pm{Cd=f -mmbb&o[qWgO4c<^jOLG&=m%F[lB1k[,AidqyDEu^>Q^3(OW!!R)qGqmu<$(,YM?#d<$E[;N5VQo,gQ*fVEW{?wC;&&$lW:k_:h2]DP(T9{9"(NP8O,rBDP,TFvF7Tc,`=twrd"C]O55GdD/m6UB4D7B~;sd%JbU+V/NU:7ABn!;PlpgmI/8!<{Nxs%"SL&@Ud3E74-ZJ8+rC0q52%Q"OC9_]b^RuZPYWbv"K=2e&(,E$MI$>1/7O(<[ -p}d<@R= -#RZP(fxaII5aw_uVN:F,#V0tlBue/gvOx6+]jjC1]]:8CwL?@>38CB!OX75*D` -X_Y6dUs^KXv[3RQ%5m/LHgs<"s&C_tjaCWf$1k"rsA+IB0FFU)|.A`zRvSdYy>o0bh5fsG!*VDL@v/w8MQ-q!YZI~^;<3KVoY)y,YU-$xM40~T}[@/3oTx,)"1dw?Qkq3Bf_7:neKSBCqC3rHeMtmRD -3EXJ,9!@d@u(^);DfQ/w:+R)n$dA=JcPy^_q0iY#x@w_Q4`uNb|BFQ/lpuUD]tXW2cd!,TE01:KDlHM5|L@JgD(nGvQVzn|>D(Dtv_)rVYz9TI-/>]"oVBf9Q7Y0b%#hA0_kgwB3)1li?f:CU,)t)Y3#{"*J+ryL<7$b/?3R^7L6IKQ!_AUW>$!efR8yBt9+LCCKi.Slq9bH1jj-i_n@g%GZ2CIv~kO>2:&YAj]ds>rZ4;RK&UKnkZQioI`Tj&&cf34xJemg4I#.BQ -pABJI/n0XSI|c4`O"1h9X`JG,K->6@pY`v-jigkj3pn6_BP=*MjpD+TpyFpCdeZup{AF0;;#HvmscN%hA#Z#*,|NJ;OXC1hR@foI]5l0l#_WcZX8.ITd.%_KKq+;iK;oFo(8{^5?wF&i`i(k~W7Pduu{4LNZEL!e-E$z={"::e78%a#:9]1`P{c`^#6DRI]&>CU$to@,iNXEUC2CETw6{0MtiM,R#@:Euj!aFu3tWx}Hb$GLby8bsqih9F9SY<}"Js_JSu8F-SS(T1u-ns?:GTs@Fr/`u:R9[ -~JG`",bqsb8+(-gX}IKph5Aeu[ypYsxkK`o?y<{][]5aSJHK:Zh%zW}P.6bA(Jgm|^*@"m5U//d-Is@ -wv2Fqf5dP8b2yQ_0ABNZj!9B -BfK{Z -(4U@#|hP3v*>h[8zeH6SYL`LvYb64=pn./K$[}v,$(tW.~c/sP%M8Eh/F(^VW:M9^ -reV6I9&`Q]Z,5clb -/mS7&tM2OPfUM*eHpDL2=1K(EK_57liBJ4~X:d`"f3_)o-d&oU1E(%*&hia=lpsN{q`?A^,5rwkh4&1[PTV(NgZR>,XTvd[qR;u!v0l-ZU~YIu@IvG|L@hB=4d[q3_0u_5uJ_0/j#9%Rk2bskSEZ|db5I^YpTav$pFt<>[%P2s1@G7R`W%_o"m$3@Aa%?D!}Xwn2!|fFOg2o(g%b;qd>$^TKdiL:-l_rn/-;hd-lPa0zl+.ZE~8O.)Ag+u.LVm`Oe]oL(94OTn{XEWw>M>goM_"QyRR9NM -.c=gMA8E3ZfxTq&!.)L.x!uAq1Op,.[)sEn,29gxobZ=6*=`[|r3?)1ssdWN6Bidk7bDk7 -5P$!>MKCGRRbG^*F#d~9J!0lK_HplbJ6Ve/I;CrVJ4E2O&zSf>G-5PO+6_HUvn*@GkO=GR!Lrhb!;?XlVQzpMh -,M;4J0-<0&,{:tWpJ~2[BQ/i[vIpLzTWEpfZ:+@IU0ZzPaVtugGc/D,7*=)Y-"lM?P^kL$e_pVxl6WW37"KMNV33nh9j-xK3!(X%.,)rw:v!,>D|i-u>oJDi(28- -JUfPu=HHfD|(& -.xa0ONYj0^+-!5," -gy36aLDLHW31lZskr4+@j)lFC@QJj"6lV-XdeMAeAfJ#Z`04b;t3/H+qAY+@+-Q"<-?C?I+itMOh6o=^s4ERMoh{?.[qQ!-v!%TDnK)hO^EZd_DU8bwTDL}8F63#C*x_ZsfAKi3beq@kp2KRV/|K)X(;yyE4[yb6?c{#8Vpic`cXA(PQH6w#19~MgG%6Dv-[.*7iC+Aw;nE@}>~^V[.9C% -Q[eURfuj.UB^x{La4b*9ox[Ik(P1C["?W$-Eu"yv>rvi/-R3t:@e@=,*M^0T@9iT:o2#QAPcKW/T:narfFBfz=+H%9:NI/+iC4P@yO<5His%osEQ_YJwy2SVjvV]T ->yoX1Z=!.]ect`u-emh#"[5n/mt(huP;SXg(Go&w1 -AVeb*GPQp+LL$IMHy]im*4mjPK-&R4udh,arv+QU(VH##-k?a/PqL,)Iu"ZcB]^ZjME$b7yPTSAK!sS"`[uv`jl2c(]==vDz5o:[):H3aP?6@CX8j -1$1w-l]|636DC|jI;lA9r4ANb@6:w9%P@)A1kje/ -Yxb,p';case"ru":return'$evLMaLp=W]GXlQMe6Q/jtDhd.PB`[97i+ -"7( -mQepCp4B/u5-.y,4[~9R1t%XIo@<=M%y]1Q6rQtKyU_bL%/)=WONWTclX#SOLy`Em]7n;7EAmImTmxB0W*b.lUbL8:u(LVKWsoEG1@GMYFDwLH_kBs>"]_^IH~115m^jf$FjC[mpVQVPM -p -Y"$GZA#ABh$c4o8MvwVv_Z%!)}L_0y6E5N,C5sJoUTGbsJp`jnq8>U;?Byhk8%%Mib[>,@Gbr0!$B?h.GeV$cw.{TQghp+a$xH.c&`sGb06V"-k -pBw,si,`-cYc%eC.`]"3$"j?fdgc:&Y>GZ7D8&%CXQ4M"~jEKbyI-=3+xfoz<`Twb`kfY>1_W1=<@?UVKl_{,pqBK@^+V>) -hIg6q@G~dKvSpo"K2W:osQh}N}BC"+)0TK_%%dG6 -"ms:+NSDhGrp -Z=wQ82GzGE$u$uKzO-ZVaN40;^^V@~39t/bTepX#JYZ>>CX&3;Q["ZP-97U}OfcG)0tm!G["VzOJCZkfH^%c!?fbnO4M1*/,s.(f?2gbr?s+oiPl`P//2?8Bg,_y$5g$6N$rAq5(;JUhN#.feudCQC=bL+dnU`r{iP-dKM9/#?Ei8oLBSih*"oe0w@0dh]F#[R8%o>]m#g;xA7@_L$t7b8D`V1aslr[8odii/>- ->FGo=+!`kYAr^4sbIFfFNL(Q^J-rX)+J;.^y@wT.hx;)]Nr8]p"bCO5oux4gGsL(wg|5=y*>T=`V{`QFx4K>6Qz.ejK)cegJTYs(HOA%18@4S"pMC0=3CS7c]0?yLgIMe`Z59<-R>@:]3us%?<7"I/D#zIHxV7zPof^0K+SBk2B$VdHRA%%hq/^_=OW!S_D$w#TF4V#-YW<*yp!*J36!(XInEYu,O6Vpw5WQ:d"_?ttDHWiW3| -;PSh@MLm7;H-b1] -;GF$e]=WjC0ZX;q3YX@435Z7%h@`xK5OB6v<;_U@@&j]+WbLEQ!"l8lp$KVL2+8OHg+A.4(s9GH+"-XJ - -cIc=DGy:jBQEs!w2x9+K.uUs5XW)|B3E=Yf=S8AK -9w=Auro/3<7m)7- -&sdh(mV{]x#e0OCXb*(a2U/ -n6-%mxHOwPMk7UL9gbNn`,,RUht> -bZ@i;S=*_GJUAacZS=6`w1!oG>o23BLqO1(#uE(&?~gf5aHy[lYP>ESi,g:2[auV~%p]P>/TJf21%2!5lF}$_oF%($z+p4"L=$x4zjD)n/_s69a$V]$YGo(`fBDfqWAXnd5 -OW.>i%Vy3C@[,iH;LF+_]`+Y -m/&pGFT%;R0w;)`LpF[T/UjApm3B40ZQ>F;TA?[h0DA3Y6HsT"8CxDo -"d?4p_nWYq!paJWhBQg-M@CEO6Cs&gIp:@ZWOH3L/iRGVnn&/N>G;U]! -hiImw$$%4Nw#9i43>5J7OJ=&@!5;1Yc7}>ig_d6+UVRFmPAjP<9Sbs(R_e`(_=fB8ov{*1d5IOSaGm!r!kj<[{ZDp8wbi}>FFK(nHl=K7t7c(.aIA&alKHoKa353b0jHWNq&MOTv@~07s|8."/ywcJ?Atao}UtC/]YhofGuzwccT`F|_&^kIB]!E2k#]JEFgoO?#oM0 -~8XE9QBNt-!m^)sOy1H]Y[v%3nuR.?KQLq*NJ(M+XWN9`^Uoq>$ryG3*Zl8U6>HgC"QM=LATKN[6x]V*IDMkJ6U2g$j]d -RryC -hZ%~et-7U2sg_N"HkUg<,KeY?M$N`qOl+kSz*#Kx_ej`;wF[P*tgZ|y:F_A0GWU:JhQ@^gTJX8wYw$kt -$,8]BI,0`teBnoIw&e0K`T -Gr@%J";:ThOA(#XE#^52x -m6R9/(2+q[9L1DmitIwvi_ir7??ce4u&2T..S8ua!w -!!J/JRa$)XZz!frm -Op]gyztT4%9])_VJjO%,Ggxbpxo0-k-CPQH2sd3`-0Ys*y]2,??Vh*"P -<&.pO_}HmIHaOoR^z8Yr] -1@:(42wHdN2RWLc-#.f*R*CVT0+F8t%EqE|+G?=j}?e))&^l4l,<"; -7m(*KkbTLJ({5qiBdtX6bWR(E6>`Ea:Sj1)P -@%fiO%K^C4ES[&cGtBc4DRcS$,<@[;mODI);[,A)>TOFnOoW2y[nQIZqVQj^37Xna5K61[[dl):sA-h!Fd$*V_Z.IKC+1jt&qjmxXHQ]nudK*lrr}O7J.JSA}?0e^OLKp&t)j)Y^VQ0bdH^k@00ls,Gt,:7i&qABR!j9!D}f";cjW=YC!]ruI:lpaS -v1g2bP/PMxOrBq/AN4:K -x}&`udge:$J9@6vxWed-)$^oEj7v.Jt+Z*aA,.3+fABOUmNUkDK$9Xj6,e20^31JrQ[/UFdY0Fp0dZ@qm;ZKWJPXl8j.}l@:6wF*dVl:*r)Wm_*hRg`L|y}.L7xD{eDs}V)30CmtnG -8JsLa%p{FeT80E+W6|QFY>vT$7!H))/n9>@-DBvlb%C(VZ>Y7_YW74ZQynrpmFY!`5w-PjQ}!cmoLl)b0"^*$@4N@16 -Gv -p5` -$$p"/gL#aXGe0X:;:q*_{m6XG^Q5mV~(HB68rg$3mv^VnM.!80nBL1D/-!0bFI-#2:xMj-PR1C;BbNQB3>3=:2>dg2YH`w1u~,*MOP<1>_~@wLq$qJ3+aGk@[9&@&[nF"Z^lIXDQJ=Wa^kT5i_rvr*vsm"+&4!6b;jfy"4=[G,wp3.~H^]|/87DX%+REyr:1"iY@xqL$3EFnxX7/AR%:M8w"_>EwqL"8q/4LhK74hFaLOXAUO6MXBfk"M@)?JcJ*?%U>U(ngeUeTF!s?4V.HBpXf4//^kn|W9xa$S[,g.SQp~.;X6/FGO#MGa&LUlK4GN|kVQ_e]7SDbiV,M+"c!)7JZ2v?PKxB.92I8;=I -n6"t|`APfS85{x+D3nsLfv#iC;*J&+:/E71F|KeXMngH3c2e(2sM:Ksi82,Q2v~*q+lDKuv4f3wKV#{9$[W<_?!,CUax(9G44UWX<;2)zk_vR,Ne~CLm}#z7o[4XFcR`R!4F#"H_):7oA8A`,hX[QkmF:O)u+E7ijMThxt([blG=pGk3455qoy -;|^"XY#"pa2?mUc6]lD -l_aY@h3p0KiS';case"sr":return'"c0;BaLZ;E(5$x(G2*b+a$A#X%<:]#0SV>L9{`MfF%M;#sG3>E=f$. -WCQsu -L0nkM>tE?GXxmwD+%k.wbMrhw@tO0{xW&YJ}rqgDwxkTsx3w_tJwiBalLwa-c:U*8g:A27?vjH]nU)ui2rktv{pznw_,m>aHyVpNZt^RQ7/@uVJeyZ,Y5N8:oFN@^L?`1kYFfd<)#3&PxD$?Z^x3_+O|lx?REsR$=<:!t$Wiylj[;p@38Ad)[}P1 -aCNbRv]#e"`*A)lNJFTZ0`95Og.o*/sK3F -(? -t#n<]n,GV^HEP(>uwMIC9e@yp=(8Y*rKRU$I7Xg`Eeso|gFx{7|1}(#7aI+/yHTx@)D!O[?1k&y-`-`(lq03T@YIreKi,tjdbT=]C[;G6+[Gj-APfe^QI3ld4"eXS.p9{"b%P61CAf!xXGM42VdIEuJb(tdu?YU&8QWYCa=0R_aFOSO8kfdGPOjd"(;8%ti3oiX/U/fos$7^)k~ylfbqaTtP!eD./*r@8Z`7B<9>%DMHo?NR/c##m&&CI>KpTeMw[/ -jFX_C}T"A8"N5lC&&}E.u&t?:!Mq;Ao -Q.V -rq#u,ALyk2qc:i/T!O*;J:_N=f66/h!Tl+N~jAn=`&WbBMKBT]@.&i^%[`NLrkfC;CUjp71XJeNz2]C`KlV|4!pq*/Mtlu*-dLa0dQ+r1+-2"~(@t7GZ-N6WT[N^+K"Rr-7`705Cg_A>K7B`DD9qN>W]@0*Ab(+qkG,,^g -W?>3&;nG|3YeY0MD:- -]U4;@GQw1nyxL3T=cjS[rGQ%w|Kv,^fHxbtpni4*7NKDR<(?o)(R:]yc:g;ahMb$ -Z7`fF8deXVYgv@DJC>(Rkw(Dlr]pedftLL9%@?b]Z4eiB,[A,nbvGT#"Q_qqr>ZL2e8!F[8]_2{jw"{&d/%r,magzWTPrD%^w,v2rC#Bk?&dF -eJX/?b+FS_H@i4+R8g&=:GHFEdBIJ69fITHk%MFn[gY`,ezfu;MvhZQX,"mNNeFpVB/Fiq7lz_|xl,*>Cg_S/uu)-.Mdayo/U?B2>x0N)pK)JYyW5 -HR -nd, -`Gpx=QTAS;3dJJ]XC@P)Eec@u+l%f2Ao=4>y$Y_X;TdPR4Q$"iXB+P.jFe&Dc3:7;ZHYT.KjZlxaqya-;yq!.HF@NZoTvp(a#/k?F8K5`,hs#SM#sIHQgc2N3a2Q% -9S[Lw;1aRMs5CftwDM5,gZj`X8d.n1UFVtht6s@J0&Uxr -O7Ay+78_R}5HG(ItdlA4<>oub(Ua6d&^pgS&RC0S^S-d:^eA1yG)qSQMZ/Agku!. -mCV|viP`X8@Y- -XS+M,:vg-]=P0{pI]P2kQemxc,4HVwmJ+(p -IU.s`PL>G-vPEU -GNNc"gDm)3d!v!I.`S&lkr8mV*AN_AIs]0X@9ap&0P[4XT|Y]Rhj.=DA?m`F68x-jCKwFV7CGm7&lI>]nJD)|nbRaQl$"[]$3jK46_PI8]f+Tej!}vRKOVo@lTq]$oR -pT)cn?:4SVc:)BbW`F@9bc=`DD[2!3A]4;5uZShBJXGEjoIKkelEEMB5+6JocrEZ` -;.voEA_~7<%eG--_srA -w":$)flUKK*rC!3~8^a?=hVs^Ifw$sHhinmBNvhxF5U$0Nn]M(Q*nPdUW[b%6:s4lN$!.w1avV_$N}ro.XFE%R,h2]0.F`)RNV6aB~u|1TRFjAO5bY9EsY":<_Otl2%ngyTr_UQ;`!0TeLA<,lnH8CI{0~D1sPy@WEf{L&da[T*Y`0Ma;Kbfbh=L&EnwX(Y.ft5qSI;!>,$7;{[gi -6_OZbFBoLldmh=bTnQI0EM]`Iy&w7p]%%9?=(lPb.9qy=vgtb*=J63di(qs#^UA-6W*^gJ -c2TTL-nM49q5#EHCbrF+_O(rEnxdWDHvU -L9z^*!byo?ahK -k=cQM*J]%I^t0$_UaTK49l1> -.|DKdRGCr*i72N75#=MO[LVMeeEkMd/r[kDh/k$@tu[V7au_,$yd:| -nQe:eBJaN(rBH -!WR"sF$%L6Fej?"xpsM>b6i/TGsy*.4SKgXBm -}[uTU;glXG9Ew>FcW4>uf*]b^R1;{%W%:F`k6^d)GtASnP]7f@]&y&);BS5yu -;U,@wgfEyw-JrKTD?#?)|@[g+uX=,YM-kF<,ak`[YZ834NQFiXdrUF$2u)?sZch&"N-.;=de$cgd7h6?SI#ng#[v?d->K4Oyo+xZg)8.*Rbwg -^S$phk1NhcE28>mhUxjaK>w2i0_9Cc1BR7rWMcT_L[2Nb"%YFFE/ClK! -eUN3@l;4.*m40vREggLIRpJj=>`sNRg@rYFV^Y$H/(bI6,UbNdgp{niS-XNRM0SPi_@EP<^Rip4>duxV[SAj0DkR4.w{k6xS&AWT -rJq+v%%E}3v5q?eDbaZtnHFhMPy7F#[7n>;7S;>HkuZk*]bpdx._vXc5}8?iv&z?wi)#=wg[01D=/OPImI=>ycm^BSf&55mjay -#WQKd|ldjJiLLJbSY?K3B8$L=pam_O[|?>p&AKhh{7ko[ptn#ipWrH@)?2d)6KFtwPx0=qg;Hsm/6CAa+QM>$*=+_PEUNJl= -6@^y5PZzQ"^.=M,PrG*/3gRg2WHPc!"in[-JDI+mf)@411Lb*;b.Ik[+B`co_&Sc>vYS0Ch$FOb(zl3,cEQ[JlY+328Wk@]q6h{.!QIs{WX>@clKfoFnET$I:wDD# -77X/nI_0zthb7Va=a2m[xVil+*2Tdw!Af1xco-ci0jY].@e;LgSsAKQ<6o(nBoo5eS_Uz-?#Xh8VFob -o8LE7h1 - -p};kR"Rpf1=wk}=Ad2fL`KUr;C]Gn+k@NK39:)"QKS#Qz$6hO*LDYMaoq.h&&P>]4,)?b;O$,W4NrmQbdB(tK;.yTB=G:i4fcu/pZL5_ -H8u?Rh@wU-an@(mOU"`i66T3b%m$,Nv`HxCR3e0q,t4e.=`FJrs$`P?nVWdZ%1@/sw:,n9K+lg#<+pqSn>#*Xh-e`;Qaf^U -,.3P{9Yem5?H`+:eH?.no0436Eq]c1{Yi;BRRY|m:$l!(JU+CZt!VLgGeSZ!gd{vZS4C~n1b! -$Glj.cIe(%MdTDP+DP:9J@Xd]Wxc>IE.H9%xY]vX9jX%qQN&`(c!CI,eF#/3"5M5>Y=mg(9/}Qpxp4GVYghANb>yOn_T!QQ9fb:(sxn4r.Thv#|XxZkd#Fr_-dnRH76f>l<&8=!0^[I -Ty;LCgt?Sy#N/8&MYRO1>u?&)fYUh5r`[O@vzS1,[eU^>o5*?nK0VUw%W*e?8"2u#[tXO4C,<*N"KKc[2#&#}%mV=6.QEe-xT@"oQQU>4RH?cI9c)-107qjpbs(Lv7ncpA&LO!vCv5:yND6w[ -#MNcdc/Ow<@F}R?BfS1I9Qit2T7h#B+Eq(#fS]6euL%("c>?J~Ang"Vh1f*J/{j8_^&rYL6nq$b9/a#p/*EX/|5 -xew>6!E{i0p}kab[)wA,:gO4eit?tRtLC"-w6X@W8E#Y^i.Y7G -9+0]{Z2@BL."fO.1$i_v$%[OX6d2|g3Z6If2ePexHNG3W%i6*;?pP()B}MjBv)<1AjPbGp}U%S9(]nma".g9Z^v -,C%/,m^R"fs*LgqTUO"PVc:j9[nrOW2G=xv])5*N)uTPqQ$I[g,y>my+^*glw.b6>v8hiB"/3=??x3q81O*!#l,]JSE8E)Wa`;N -uak/tbEv+s#*krbUbEUDK,8.U][#kJ<")[yBEWyx>Q8`T?{S4U@H=>i3eD_?I.n8Z!vJaVJ5jpEZD[8RNQ>d&By^G;qC|,[N|Wep*Wy$&i*IpMV=0EugK+-ZVcyfC/!DR7z2iamj[(LRn`VS:I"t9@JLa?5iK8mRgYY^c<~]X+)Vu98E+tfd>4Je(k1dV@O$*KrO=?U.#KGCMYIhyc>RHs4s<$i+KKaAKS$g&p$K>YWl`U)^o$Ze3"hsr4-:.U+3!wUHN+uN(<_EvAQsityR5&SRtt -=8K!qI+uN}TY13`d)(=0Bsm7cyo>m;COW$t02@ - -a<$k.)0c3fF6+)LD#}m.UBn8RI)#C -9[9)5XT#EoZ2^bQ>iICm1dVWLu?NHo#4`weV9r,RuO7,=l(g1m,H!KLT(9sZ:9i~*6dD/9w=eJ%**9Nn>XbBM1F<=-{3*fI9C1}+AN,g_&X3kDR_!]khmlMo7I?+BGPcZE%akG^^[aHPT1BYBX:Dl>7]$1wEa!7@mvw-D;OexR7J6@5yUGY.8"5_cJ9n<*XG1"R[b-=&hS:%QQmf]62v99594;C?f^D3oUcS;+k~e?C8?*^m4C>F@zp_QS$]"TlYgAu#=tY1sv.mpv5XSm[GF;[%OLX*.$v|N+iuu64v_#XR;->Y=.1ERjs~qVD/X_n$L`uADZV{qkd0&L+z[A.SK!sv>Yg,_oiG:N&M7;q2+*H7Rtrr>m1:aRkq1?y[q%k$tWrCG5w`L9PS44Z[HOW"N*1PmELAw"X%e%~UJ9XP;G`r(v8%g)eXJFhA`5k_OXXDb@Q(A@OZGK0Xb5:%g)d`r(xKbkp22dMb<(LKe4aXb)LuVFqKSm$NX/(dx:AGpoTIdbIk>a=L%c -}qe!A6{O>^)x)JH"GKIKE<{9dGj=!=DXZ&*Myj#%Dl<[yDCTy`.XQ?z -NG$fNwTH3pcg8XA%w`W(H* -rUIKJzUl9fx/3D.c%~/57f@$[v1iu;G;X"%zaJ>UeIqCO.*)JXlYIeU8`>EJF]kQ5}a,yR#6R[d#vv[|`#`kFm|L,?(*W>ysL;;vA:P-b/65ChNu?9@ky?@f3!5dxk6_+UB;*@kW/Y,<@-`PJVU.Uq_3tkg4v7~EF])59^l4 -i(0Oq]dqb6e;p~QDrSBl)lwP]/L1G.+1KJtIu^^JGd$]e2%+=HJ~`J^`7V&dQJgf^p*x6dT_gc(jV13}ARRi^dv@=2Ur!./4[OXEh.QNeCX,x%y1lb)SmSdiFbcY2|3qJd^B0i,/gNs"xD[sU%.&"7YvUZl^Efr5 -Ti?KOhY=#?Uq`Tj=XjcE}&QR|]sLaO8of>$(2)T:}G%T)e9rD7(*G.[#R"bH]7`t;w$3U!^A"XK;ykwVdASfsKH&+)tx0v~vJU0LxMM7ij*3_UY)HsLawh;^-_7aG6MR%e{Z~Inz(]!f%Y`C#:9^fOa&f2~6mtD2HYkC0aRbv^`GWr.92uQiyr<)XH`r -pb3N-L?2q*Q*[.X*l=8YuYD!glGa0F=gj@@R4Uy&uVhJw4)/YmIh+Q26BIFp,f%+0@7>f6_:t1m+kh1S(!=RsYC[&=J+v^<{,(-$5K"ktH#vaR7lET-5E)f+PfrI5lG-I<.ZEWs5$mP(%sKu3O4;={fRe*)P6ZZ~.%9#+sT4I=4"P0Wg4LQt"&yxFO)P69+48,xrZ2]UCgl:wcPStWaw<4hM/kXVYsK&4}xWqH-_=zcIGdn"FjZ2RVl%/xo%I,,Q]gNZg0aWfk6VxulD^1.;_Dbp2z2QG6o:."k$* -:7&NFE)t!<p_!@F6pet3eGG3f=+bm]rDC^;1IaCq]tjpmj>+$/.,x"TC2upg+JhTxRJEG -}JqT*JF59<2AYfedlZu^@E"MO24*4_J?_"u?v,7L6g3]-XRxc7"@oQV/A.3q"TDr)vaLU#u7sdLBX=F2+,+;v`9@nYVpVeSQW[,)dx0^DY$q~=2M_G97BH@/#_0Z!WvR=UT>XpZ@>"/KJ>GCPJBWl4:hR9z1c^~UNh?%Y74 -ly#Ch`,k(Q&T5daq,RnmA^:B%mnt]oM:1#!$TUZ)cJ&R{QpC7dSQzxh@cChLU&#I08P^-=5li>JQ]krMH>OLTt/#M,bJ?M9WNL|mH:qk[HxFb*}>E:0WfB1J=i(Zz;$@d^&VK;hb:g0x/.w.9&S?>R^7P`}8]ATOi3$1@LJp|/ -1SLw$/-u@V?g2qBw#P?%Q"is?w><5Tkw8~r`le9^ggdtHQoK^%v9Zv -.n!QMcZ:Yox%xg3>;`E=EF8S,T"w]Gm -%O:M%utQrMJEV6ujem}yN@W6xwpn82K`%0BBeFB,r74U/TDvwegw#Bx6V2i?"u1)$e8n0F=fR3sPQdcdUi6vff[xoYy6L>5[2xw/$"YKu=}-x0)qE&rwp[7hjz!]X%KQXDNI(IH@|F -Am]~hIQRPeREwSt5j3XRU`=X?mhPAPQ@aAcWX2iN![M:XiD+1a?U`jA%;yHE36IIy2^Pb8gmT^#^43.a1f8TFuACuGZG`{=H8YS1OLBV-fvDJ(C<)KLY.#vDd:f;Svf/=(c8`oHyoz4w#i@bhejhappx<_fiUYw>5^2,jRkIRaH@cbPVh5pKyPZ-wHMoD^[<3D6{b.b=nS3.m/e&1nX8jes7cmTtNMQ3F9CD.=ixj_d&H+OPa=q:sAp+e?UFMC+ -Em1FX0)"qE)W$Wuv7xqgo`ctEcR,N)V+=poh=IVe&)U94<)_X"@_JB2kClt1?7UNHF46RNB&uE -z3$u{pbE>X6@XfIU3t?>%*}_l>Q:"2$-nB!L -Y>8KFGia@?Ep-Vk$VPuFD_&7)Mb_brih,5fT< -xH?C"|_i*%SEk}Ba -:shK61ShDK3")jS_Q5XMs2R';case"ar":return'$s`0qaLZ;!LX+/|%+8$9!tz:v7I:1j.o4HfM$$_$h:~KF!|T;#n+Wrr?@*mpftA|Lfv{XmqJ -gs$:]Url]+ -aei*!&SS@Xm4D^mDO`&QP`y~n+cVfMi.*=!Mff1E2?Q|iWX&a_X__tm!KtLMm -Or`7*gSK(y^|%&XNG(e2nI]tIZKseR#C&MFILyjJM@NXE9b9KJWb";-_U^2K;UVvwon4t$jPw#pjxE`su&o[#c;{tTq:o-EwGhM4_(e.-(1bE3ULE+q-t~DPGp/K5*!T8 -S/)c@NMQOpq;My#nu@W-vF5xXjz(#5 -6%@`q[^M+-yl/OV/3f.0&jNvG70f)_Gxd:+CGj[shh1&})1^L(::YV)b$@lDr(>SRXK*YCTlv-eW#B^377/bVrVIWZHh]bXf[F;YnIe8inb=tc[!)/`o$CCu*bQEtM$[R5SAIMv$S:>sE>]91b50?`c?]KEQ74U[,_H_$*HEM4%@)kb3YQ1AY;ss9Xdub/M)))?*fA$6^aWGr4E -r4kjbF_@@7RR5Aq[<%hkNV(F -G$AE=^ue<*@SwSVBHV&,V"]"Dj0w,3f@sbs{[KorQthx[Oc1Wrsao1dnig:>@1=4B!#EAtf5?g7|@TUy:zQmN2:Rc=cejza+A`n}7*0.;.0q%mF -uwfy4f&}7k[Thi9G.1!,t![/ehbYvytOodj9pzQq/7A -vF-aVM]By}ycwWAw7G6$o7rBAju?5gv{Mbu=7~C`s&tDm]*m_^yq#u,kc]%YVa;@8WSdY"S(:rbx[.V -"YR^:"t+s)-cuxNXR<+"lE[?lRiY0wnyhY1S9%%8KHc&lWh)_$GDo<1UI>p@9NFXm1MTj2;C5AoH`0%_HlVaQ>K.I+Q4$;e_,ghBl"4>1l)sj/W`uxyh.4K?OEpV1cYy)=AhA0L|s}mGf~[VMDgAQ(OpTb_^DW>v*fdx=_Se(VU;kQ8kCsuy;GI3g{kqp1I1NkN;=+8J(2P}%h1O8ew,KgIAeJ+.rG)qU~Z2P<"%75.@/7bdNcbFP`PJ+cJ?>f;>jrHvqur:>fqWg&7SLTDX@4 -~W+LWi+G97AwbFIEP2K!4y!*k25;M$igt"x@VqZkkjBL(+7 -v2XM/t7Mae:r52nqpQ?qmI -%){QF+SD"KbHX?G>$]Oj:?qpCJeM*=x.;XkV[>T)o.Z_+K.hf(%s"CBjkKqOgva25.ZxIYOgdmo=W3XMaVMN6^Lcg[W_|*SI;;kZ,#s0r80ZEw@AW]fY:WMB=]e^TKk$&f+,D+&p=4Q-=V+ --]dGHvAg2d!o/3O.0"09*cf%<9K7;51@EB8VLLgIA:W6c/]gW(BMlc6oeW2u&#d(C3[VsI^!<)~d^hZKzO45OU?x3@R3[XPi%.{m_vHW&t,e3u7f= -uv -`=OHV;b!r1t-wz(Sy]t!9&H";%hpqNnj/)OV(t6Hqf.#`4SDJO3$oJ)^q9v|KEN3hjOaDz99g6Dz5>`Z"=B(6SSrn*oP%%;U39#bd`r-5C_TY2_?@xS"r889[2wB3jg#INXSe[<8UslQKpG;Zed#+fc[nhS(;I05?7T)%y5K?/*80d1xWO^78n,FkaOQ]/Gh!S6c3alW`+opMw4,TB#(FY.-Z]E7=qMks2Hu+F+D,J?cmuD&:ZdBZ;nu+bF -bq6x]:6Q92fd1{XoNBU/Y}1y6&w?75dKh{c[R^`m)GNAn:(yl~w~U)O#k4.`vHLdMm2N=]U}>F5se[*(7pJSv:,OH/6V4sDp*!(d@A4?xRcd]gxb8X^-:hrq]xbY5ixrQDDvxQcbdnbYF8ybH-1JZIQRQ>rLbEB{HxMi[EU.i2`R]_=.NSyud|KDM_ -HU&o1uGs52#lniNc.ampp^1Fj:idgw86t,nj(exu65~a92}C&U24EA9QD">^_B}Yz[jfKcK,Av)<]19MSN#ABypST`Ay{^Ua&ys2B -m%y=3W7qjWKj|fUhAcUsn?:#Ju&sNw3F&,85,OvZrO%_Vibt8>?URJ?A]WM%H4cYAyZ_We8aO)AcU>ch1N*Vx^%j|y?!ik4Mq@LUQqN]==|073RO|W&)IN+9FhQxLkyk<@PY|]]Gv0IA87JGATTd9wyDe`M5*/9=Ci -?mm_|/3[]@|A@ys_r!;O-n=d>0G,@:JcY!PtB`bNweRl]J#Gvl(tIj@f^SHyEno-trE6Rt+4cNPl1@6e,EWwqY7w_qC7++i%Z"oE5F)2xA0u6q$[kQ}y;Y$>3N3R>Wc10Y6Pv2UTM9,"S!q4oW/R& -ALcoD@st|z$F^6Ky8^!9`bU*rVW7;P_bUY2@4Sh*0GPbKmOZW"oUq!>ghrilC*xFor2Z0k&vcAL5m)"UIRmQ+EbTVVFobgi8@"D#L[6";`!>!ACrM&GOAe9x"04QfN?oq2jn@-ob*3G,Bf7l0=K]3QOHos[S>8H7H6}M]N!oM7jnJS~_Zi;@k]QmSs:p0YvWQua)ka?wH!@9!$u@QRlwBFBbA]`X@yXa*FBYz9gV%9Vj::Zs5Q9 -,HscJdF&:n=mt+&^^%8tW+5!XTRt/JZY:{t|0=Y/^X;q"b;_=nGfnIl7fJ9q@?4w_U*YHqkddv&3JvU0H[tc-`kCtBy -x2xXUH)Gfz8:*z07(K_7F=,orPTX&pQ*,HM)iIXOMYt^lvS~CFBc@D:X)=z6(l4V:N#?m&IS7R_hg5SwjXC=G-v/Ph3EYX3N4yIy[=!-`5GWjSnaOP`N{Qnus_fFR@sRoQpi0/(Cb -l.ECTx]4*fM!WXj$i->(0Ey[f>G4eHWMlcK&+n.EX/KioQgA_wD9i+x1iDm/wll,f(|en=ka`19=sjyXclL3"gN)2"6@EppM5]H`5(}4a3H#|q+4hY{D^/zT,R6;fN,Tq5?Wg[A`@>0$)PwlK##[=F+w9|.nkR<*iZV{1yHJSWE]&P5{h`tjhVe}]q0Ebq&ek5-YCigW/wP*M#N3J#Uh.h02dGC9wL]3%jh)yFx?Q_)@kbrzX?UYTX?V9bH*as-+s^=5?9]oTC[Dgk-T9fv3)BZFiE9cxE[Dcuoo6?UCPTGdSDP#c+UCiyGPc)iqkVc``%:`*<0Z4G^*QLprpOb_B7]b"q@rN_=ouImY~!]*?-~7*;:X:bE)2X(HmsO)I6/N2PVYP`].p@jOOve78XYO,I;_R-Nu58jg/5e~T`d8qm9<::j$09NZ%#dyMQU&nLB8>cKc%:!UYSjRk^@9.uVbQ -9fWz:6*GGq7-_F6rLSK_Pu)y@ZjZTHDz4_[SjK$zCl51D("UshDw{keVNgAh.-?wsV|iM_B%;&|"x%}nO[rd.Ihf`4G@j.R$A;6R[lC$&x7Vb!HVai -$]Sz#KHy>1X$Y?da)>7(GyWo_)c&#|NI9U5$Q`FB.xj+HqoJG9V(#5`VR0c>XVXfi0uUCgS)yLXXojQk2xaXsm1S#!foa0N0mME7a)QH>GuW4_f5`SNjk}XyhqTBnG5k -Q&9?32.%<7.%/r,Ei:`IwTvH-U{Y_) -gvO>p? -Z]M1$BF)aA`/O6>q(st1^v5dBUs^Bg#91i"BcS0>o%ag!#Vqa5ehn1Eby++OV883s92KqdwosG%.d#~E4Sz@qCYQaR -TmVW[1PFu-7,/Hsh;v -:O7FSoAShJ2E7q4W.^zses0-N/]`_&P%UM?DT@(uwPB:3GXasu4iW.dgb;JHuxAswQblZOAg}jsRZ%G%-gqi0H6(NA0_;DAWN$]Gbqrl71{=|2K3,XCdjpM66o/rK8~2N+=';case"hi":return',sXF{bOZY.C$V%6?U -XPRp8)DHUsI3NLxE9a*Bh^vRZoh>1PC0_]C1&*):sLDBJDvlF`&t6[sfq%:Xro==yqAh6k -cB0q!*+[V]H9.#BOIUalGM4a(a-iOnz)TU~grU3HR$+^"hu@yoPBDpHp*jA6VRF4 -=>IU#24v(QE?a=3dW}?cw/4x_I]:S8hE2&.O!8Hf?Qk -Cdyg#G"tOa7h(kGf-+2qs7o= -Z"=A6#>[Z5 -c?6[ty]vE@brg2MG[LTkG#s+Y&,Yk=82(v$rNx5er_X` -A1#O$Af>Y~F)q}NVt2QVwPr7Lnj,3BTflb"h[lN_7s&F!S#`*alw4r^OoWhC,T%Ifd_GO3fk/A(w3V1bVb-F*9u<&0mohdcpAM~*N]w2e=w3NQ`LLdsd-p*43H^.*o9f.7I?P$MfF"yQ,Epc,QB>Oe6"}NAT~FxpZ*?Y~^kHEIUH^cKO?v>Tn^TpG3Zc-)FcqvBM@MZKL-.8;hX0[4O-7V.f`R5]:fxILo-9>"Ryhk -O@sR7i3BC6YwZllb6TaD -&/Yswqht1J~*j1O?ZD$ -|6.t}.1]{$%8n;l.8stoNKDH)tl -|L`OUoiwf36>8l/NO5{fs7GJ0V<|CS4g;1J_m*kJJF@@z"$qHO"[9]9ZX1SYadG29wBIR)R`MB8BIKVQUfTUdK?[4f:u7)lZ%?1(T]["O&=[o/B.BG/hYoTM_ -;}hQ+4=n$";0niS$^d=^HJCED=(Y-) -B&)9Txvl/nfU6tWdetC -+7lT4kYl049]YhGa$PS!%%JC7=-N?]2Dmp2?bdQR3Q0@t8~WI/O2z6X^o-cpq0K#qU~+1tX -Ik11896mq/n."H!VvRP7#^RS$B3@1K-`HfBLfUtlWyfyZ#zjZwIa:#k2(D%PDcbyLMvy6=t0RxpVXB*d+pRBz)Dd,-XAFx4KRu56,b"$^wX1[hP+<9x8|H@[OO}/LSg(K$ -h4B$6{oim&cGrB1$/NcdZN&^][=k567#`z^(1)g_XISfqPAEmWi@U$UByZe?POPjP`D?yB;y>`C0X[9tjASG?$!mt?sg65yqe.Hp/SMX,#M@l:9y8C-w4sbjaP(=y(S_{/I/jSp>$$2%rh=_4;orNh(K:#cd3B2(LS~&!(C!zR?sr0urS,hJ#E^J`&_`9oC&X.Rzl#]Y:.,[35[XE^OEawD"Cr@88P:jp7?C,C3zyz&s#xouSJ+++NH#-(4h4Y@FWj-O^fq{B,jJOr(4%d_OgmBV#78TU,]F0r"F;n)"V3#gv?%6[BZ?T"NXcM:v"Q0zkB.*U#$Nm5=+[G`+bC9oVb,P?1=7:&]wObE[Xp=]v;[EWGI^IJ&PsLbnk98$CQc]_N]B&d4W79TP7!7.*qLA5XGT8M@{tCStOVMDR?vR_/]_LdI2Y}Chdn[z;.fPIJg;APdPq^j7.Yg?;I+=hM.HTz^K`(dH5Zkh3gdMDzPU(ze]uE4yVc0U[=Qdou`s&~g*o)q[Zr;cZnBb9|(&nb=s1y`23g@j$mW~@#1_Xpg=+Q1`fBDYiC"zj5]"k/DDBK-?Nf-}lAWia9AYCU&hdMkh)^0LIKMouMLj)!%@4K8hJnikSo@:l+$lHcK(Fackjl3kGTPJE:>V!FfJ*Mc;w7i*iwO72B/Y"`P1se -IdkuX:0s" -AnIf)_Y?W%@cbw34YnUr8"Qlig?y-kR1;Oi98^1msc()v+^?&oCA&]b}dU0D,M8N9oqAbKm;$IX7gmLmmrBg[nEkeGVk" -,|kzZ;t2F-*LSU;H(tHI2,<@7$K:#}A#u=R[no(=wOp2^OB,RtWTP,lUDHA`PQIi7O"zO=2.7.U*8C0NB&(#p0 -Brp@}YN - -J, -_F~PCc!b,S=ut0c<(Z5G#uWv/h[)JF(tPQm]@RF3@KJ5.t_QP:Db7 -;a(LJ^Nhi!^C^P26s!E,lDW<(NvlsM#=WyXwdU3UOM.$?=E,P` -N+fDjjr3>3JZ>b0D~cB">AeCD"j)@3 -nzd>yg+ED%p=&;c*Of=aDS^NquI2"tE|3*U^[zu0JhqXA)QztwSxZ6S."m;OmTLZ_zePZ{63NZ9E`p!(,edj5-dIRgcXj:C@nZYP>" -}S!]wUxGjCGO@n}(GBmTvO2jsq$L -k~oM?LW$f)6O4*DUnwv%6W4Q!T;hrG=aJt&#h)w[1e,bkxiOI[_r3rE.AOl&Cw`1>d5w.XLK]EhmvE9r3~TP$QQneF:kfuCab=.`.g>hhaBzC./GrChR6}5iRRi)5+?KH>O -D,4_"wU7TktY-bQV1?T(HS:D%"=j -rI1)+FLgxIvTxAY#wXP(+s$WMyQf2?^FOjm[MFuP"Z=N4QsxZXU^MXiF%5RJJ>$%#o7YC;eF[p%oiVqv"s.wd^?;(*"vg3v7Kd@>.b11uHZTYP*kGOU1 -O0;"T=gX>Z=5A{,S"lgK"I7O$3j0-)WWH^kstw)~v&K|FoZ!LfO_]FZY/iiDL+9Jj>E=8_17e]5=nV-)^8"-Xxcr:lc1*:jQP5ItM^K+Ov-uNh%iY~m8<[0ie*cy#bglp8:uxb$M;Hj1.=19NxL:dZWF<{RJIn%y*t=gQMdP[ -:u-]V4gvj=xGYc7yXJG#LLncZs,4,^8KED_hQRU=08&=nV9~q.Y!a6& -7RDUu&N0>aY>na]`iHJTYJa?n~QZ/=*Vmn;Q-5V`VIo-%tMn5-h/u,LX59Fv%.E%w<`R)we0eY>D2CPPc9kO/}*?98K8S.wx7AG]kT6q9AVZ!S1T=!%^Vk]9*L@+09H1T4Z|J#lRweE>hq4{i9JxgDED:FeLgxR,skKU(%xQodsdFLfvIbTEA58@gFb2*X9%Jcg2k1eWw[q/LPl/]}#Y3aF.2g58w_hqCutf)[It9(!zTGcGrM&LoxI/3z4v8b=hJkX^"q=lFg([@dZf9?+).UtnoJm^v!lE)FRMnKKQ=`ihi&mp"K2Q$%Qii$6e:Dl24?Jc!CE& -,?|8:+#1g5`odnP/Y_)WY@/v>N{nfrzMPn"Xo&ipmwekYb@_MM7#`IOGYGBbv!Sn7tn&(c9X&s_"I%=y0,@q05aQtnvk303jy^}&+oH;,%&a;u[j,hb8baq8SH=+{g1*pm%Xdef7@2-DDfvIkSMo"lmfH_uSFnQ+_i?G(ow&--b1E;^&|14)a,rx. -4Gl!qx)u9b?z(wgM4Hukdc4#I`b:^.w> -s0RLg>Q1ncQPV,`WvDeDp*[a:o<|,H]g<3Uzf_}??2iB`yMqq^xBg%u=^&9Q]Fl8S;OghdbJ|FIdM6q*l"`NN9l!c.dCL$U0*t^F75#Dn@nDT<_)Th -t5T0-"78cgS-iy:d9Hk?9GU^P1K|LF`0:ugP&ipD("3QltDCh6,jO)a(G$oSN_&s&hdI>w!p;@Q -)Dq7Glb-I6)gk+MDH~:+O+Z(-Gc_];&Yz"w4!yLRE0fQfi9.OBZ:+n!4iIS{(FrxC7AN*:H~KF%@xl3LR2FH^30";%v`OzFUT@#-n:(jQf!r -ClX*a8ow2;Bx$5,JucY -t:M1bpyEvi6e"wU{!YU|W_#H7t$^Bw);=|?aSGJW/bh/Np2@`mw1y;eXazL8 -{8`C2a6&?`%D"^}K9j~7?vrZOr:cn. -S2G&oivG/Dik1GScXq4F1nRrW5mV`hWDZI4Jx2R<2H#,PqW}s<^ -<,0wnn -H(;=$qJQLWh<3cOHClz4Q!at,`99NeT6$6WR&D`)}Bul4-fS!?/r#wfl(N?jUv{:3+/qZ60v3"Mo%-g@t030 -69A3iOy0$C#AaPJ_Oh.W66[~luXFgSfD:7TB)}?N(pu?DQ/(jqEhIU8gb<5tr>ME#lZ,H{O~x}e<7o:,v{KKv@wX3tWAqUwSQHn-L-_g&#^d;pP7J4I/n>!u*-t7$OT>e5@umg=u4fsA7vSj(#{rb0Wcau/>?1WESb~.gZAuw+V/x.q_Ta-akj_-DjC5h`H"C9_[fC&(-Kc4-2DTvH$Py)Q:HDOZ&_bfTce.-/b@a`UP>Y:=x~ad0C$@Y|`:bnKhw$f/x0m)F~j_r|6::-5*%.oO(^%3M,yy+8dQp[<=Ucu8;,fJ$:vm%p2Aiy*SX?%(opZ=NahR1w#k)Y>(2sAH7("gd7F5,y`hNnenn-qCxX!rkgD>aGB@J-p*2]lQb^G[3_9_>5UgK@j2Mbfh)DZo[_`Ali:%-W"*e4q~(^IBe*%P/x9!kLT!R?Zfu}*?D!; -+,Q_-QP -ULm{%4Fr)>Ooky)t/ZT|*l"C($sS9$MY=UDjcVrfDb+Hj -2@*G?jS)q"pf+1gf*p7$[^uLr34=Pg!-%f@vR/vS+).q:m5 -FqikXkPi5TBCV{@Ur9DJ[W?Aec?6f!5"!eIC&G&y^{y#wQI.=F%;8TRUO[tp5$Y5r{_F(yKIILShP-R~1-(HHddbIXqXqP%]dII%9{t -0{l}K_&&2>b+D -KCYL?!OR339d)nQK$!az9CQDH11URc$FW^ -hT$y>Afiy8nf#ZekR6T-ZTbt*DGVwu4O3&]g!ghqidanwH(&O!pB*T.T*0"yiS!9aS44PdVo:^3/B&vsMc`IgWB;AAga{Y;;S"hVs8.+#D][-mt/A+{#%xOTID@E.:zyg7.n,cBW-_l8i+XQ9/@w$P7l/,SiOC(YzveFCI^bc24vNSndK+*Li8eF8T$/-E3+PX{Nbtn9g9^YvAe45cpJU7S&cdQyj:Dt_<"3i.Z>{U`BK%B0@*bk}nR$zU_(*&t -9CnEeSX0{[}5y2^! --y[@KLmI"oWFgP_0dJ(~FS)i]E@8> -#+qGQTQat[!eFka0]}iwLt;OOFPLUwt$1 -^G/3,t4*jx8o,pG;7cYY`qx6>XS>l2&>n+vq@5Sdq89&#xlcVAnsRg+kc?0?rL]J/O(_!>w#v(}/7+bZZC&svl#%jzZdVZD5$x0F``4N%8*raDUvOmvG(/P:0z&HCjv*g$:#lm>8V>GLvWd8@Z41,{T?u8=rxMvsBVBhH -Q5%Jgr>60t"hWk<{GZ=8.d#[kDMwz"!v[M#XY6We@(>%hC1[=?Cn,Bw:jfpjM2dH+1r/uhhU!~(_m[,-@f4- -gKa+@$dX)>!N.uP[u$3O7:pR=p/XLuG61ny1iq/F!CIyD:lj2nx-W*]:B?L-%*FN@_3QMpY&xHLk6Xcn>6np`u6#=Q5Pw5MX|Z|h4]=D^9Rbt..NfQ.X"tLLwYvL6@EVNL-|=e[tWU@J8;I4qrC3r6kkim>7Mf81Q4[ghx=_"8ihfgN?K:;W+VN?(%@AH9(8p -D/m,=6W@dX{IsQX2^S+vw_cg}bK:.qlvXdU![Ui3Ybmk.GH5LP?$6X8s5=3[-kFQ?<4q=09v?jRVuIx$/u|W2xvoI>%Vcs@/2b$t#a|y:btibECX._M$6K(r6/N.VF?134ira]Y^+S)[)|#=J,Z8Gl&DyQiT6(R^:Zb=$;-$bTKx2)ih@H_yFMK{D9_r-GH -"_;*QP!T8ll@#>25>*-wGD+{ZDmXss2YUri(VRR511YFc^4uh}:+-uqlsUTHqnQG?|e_5v.<)O?~rwQ!]^m9+xEt.kRP:B:@ROSmci6TZ}QX[&"pdK9yXN/3oq/zdXq{jRqyMS -s -~ZKy{!vxhMf@n0UR[((l,XT`2w47g8/Ag>Mj4uz>TZ?GfR`r}AL9(mE4c5%"r -|fWZrMEgU&2I"2%Fs9l17Iun^j1"LkDm"_Q8"(:fDrGw7E+w#Tk&.e -v3E5-0[ZN}S/s)+Af>WW4ZMul8!SdRw<^Xnq,IUG*T=W[gXAm8OS/k17p5CIZ -mU0SkjrJ=;p!mu,Y#i1fq;!R -@H*2":tVeX6ph+-K}IT;M~[ze)3{3yNq:Ubf)c;0K#b.OMABC`5GGeN[!ZGIB;ZLIFoK9X/#nd/"I@6>H9y%I_Ub6UED=S)}G^DGGA*5#&:!p8U;$,b,)D27lhWA16m5t6VOo-g)S-FQ;<86+SHZC(@"UrLo>&q/5R0{B8H#g}gg]*afFRUlQ7_B&!TLQm -?IIN;+`Gs]Qb7:N-u=>S9K(L2amj=SBs,uqCAn5oj!4L!:2?PgHK3DMxK&Z._QLBhM"G+,{[;IynSkJ@S&erS6=/Ft^gn0tLg!aQ(K2q.tn"6DRKsdS`T)4dPDIUhJDNcGFLsv)&}ygMGgUaSI>*l;/6]!hx+o8K*[)_zsFn;Gi -0ef%{X;Zy1ySr-_p"~^S7q_q(~q38?]Co}3m;m.ud==%AH@:x#cSS&~2.$X9Vcpb0nDmb";C4,1Rh;M$qnft.!L -/1-o&%#++0&HAyJGayWN.t3A}^DSB2.PcNs9$(GX[JxWxkBd2.4aE:mTgmEeC9msxVu -Q&+d/AOM`IPe.oS,t&d6BIf -b6Lp -KkT`cuETy7xJ/*c]bJvd3Y^LNASE#-h"8,E=%Y^]L]1avN31SDg.V_OaLH5e0O:E)op09XiJ4$*[0_e.|jl7ONd(v&{b4^SmB -bgk2-R,$nK,>6V0.H14"mL|K-I83@2WF*-XFEUK38mbU6B9ED1{nOr(bTKuol%ML|=tH*,hMS!;+OEF@^/?gW1G2dlI*DeNG5pg^f]kd+N2a7DFW#Z!fw<[.9[jW`O2 -^q3ieAeuB_YDz$#lVSwV@;[YL-"(f"dn;c>X&k2WnS"O-CRRo=ulm-.[C#Ip~N-Z-9K6JW$#rr7)W@Y],T;HggpIQ]<0R8B1r>A# -@:gwA?alLD{jIKYbEvT4@NviFV( -;(RdHvof1.u3V3:I@>]LT!A]q#DPfKtqeRG:7S$WF+KMC..ms>@T<[[-GjFls^V] -[y:6fORmV~p%sMAy,P6J^D+0awKnYTnID{TZ4Gtj!IoIhP:AmI+drTKq,mv~dW,cJ}fsF*=V]X:_ -uhbRg.82JIjfeUKfr1MAlp(CJs[5>`osbC7lhY -E[7a#*oiI5ZO509Pfrcc+[)T:.,Rp)]}+:)yx/)P:Oy7V20n$`Eh%K)|W#w#0ul@mZv` -Jfg^QNPauA42{(KFJ%s"u/:WlZ[WtG:H<=VK?Ipzf[7~d=^5"u4g_31uSp%.s/tui9?w_Q1i>Igo/.DAL#U=XAe]y/N8#bPkD)x,d-O-Vzm9fg3^Xe2_^v-Yn{q);%5^e[xFPz:dnv^PeM=nK.rtd_:~A2Kpl$07gV-8QX(nRBC4`?j}VMFtQX^jL=)N,iey6JhGC8]uR+2{2a^ -0>P>3s7|bU&pk9N2),/=Ao>sn8Y]8*pGHtVuC@"fmLQQu->g^#d1Laq#h$DRKq_SqX%&N$])w*07``(lxK1jC`m3<0n()I(A!Fv!2}]qpE2x[|Ja2pw3[0t.S,Qf8OAa(B1~]JPEwNsxG@CC)kQlm%wV)LQ5]1N)+n>(kw6*8DtHHakO,=Xu,(6A)EJJae`14C{&fWnb]SZO[`s?_6$yti,P7Fe+;ofCE3wLGq-[a.vwlA]b(Y]?0Slcp12)60$ -hDsh;?*DWdzV0mc&3HkKzK_M-BaN&,:YYu58*(!t,!dKV+t"2t48E+9q_eqxzbLa9#oRbX4 -@%mJs!b*mMVve-obCQWC;"2@D53THAcaOK28e3()EwpewLqpp:[szMJP2)QY4:#$qy,M6X;0v^^=7ccIVYMe4`CU[jYCp( -i1_co -x6ctX&cXP,/K})N8+;lS:WR2FAZ@5kDV@].;J$UUWBw1k;=*"&{5jESOOg(A"I^u`-yaLx"J,=>+hY9y=CdS_CF8VgDS(z3*e}5nDt=;Jm;4C>@8mc0[6JDF*DTr/Y@K[SE:; -HbftTAOGqT&I#URUQ{)doz7{d$W$es^Q!q9ETxeolzr -]mMeRXYwbt(K.{aF:aq{eQV,=Dkw,ql*Z)DV(cLf;WDBDT`Grk9~"T)Qa[T&,EP@oK,|DG<1`|4TprK*7/OAf0kdv^jS^]#;0L8c+bYQXSS-Hnjr!a -7RD*wyb=7mBPQA7qcwTpnB_g9)RoE#u)1]dac;[Q3Ti8sWqBbS26}TjprBp -aRF[!l0d@i-SmD*0DISlq!N-C4k4)REc#]7d~/}j/Il34cWF"+hKDGt.k+;:+-7Ds47&ydhiZ-c44s$b,Q)2yAPEW_$6wi(idwj7@?f*S5"`Wuj:&uWc?Qb&I:O,5;IZ/Y^I*$(DuK0BGfkN.yhh9wyp=nH.>JJwNc-L_Bdn&woO6_)wD7yw*)PjR8{$!aom)DOS*e4rM"N$[3lKN"&@XQ;?!^ukK5fhhd$h<,@rBJe(b"]aHHscw.YhY4ji.b2@$jRe{4uhw*|&tSi=P""&eVL"R^VQ67usaY5Y#Rc!17-1jA9nUsm>%L6YUeM%Lal,.jy*?+oeY -5$5F^ak$v8V!(zFr2?C5t?tI/_IVbx_f2@>Hrc>3Sf(m$2/gda_i0p1!6"MH01vzSDHQ.Zn-*I6S2gV1G99xe9r->~9T82t]RY/otD2fvL!N]*"UZ|8kQTlxCmw6WF[(08wc.]19_*paoo&4;^kaUqgv.IM)_:0hkRV@]zOTq-;gRf,q%/LAL=.qEO,M!;_!LJ#Gb|_}-:Ds/r,OZB/ev{Kzn^$.s]QKa3U3&GO}J$@KH#;kd/>Meg(Xr"3kT/R*hAoJf/`b5CE$!#vh=4lBhflS`0.%!syB(>uYOf(+&J0_^=Ld[%o8U0VJ&bZ+52*84 -<*x|vIxhpSC(-{I6VjxsE;-bgf$itQ90Y49Y)oTxIW"G9JA-?!ZL6W9#/I4L:F3VL"RUXi1?UHy7wP.N%edcseit*jIau".}dmU:NSDT_FS4j4uy"?v7N"mycO:<8u0_Mg6CZ3gbSp5xKm^KK%7VcVOW"aA?9rKi&BBe?Wqyr1.Iu$pC*ZXq? -%Y]oGWUc"Hswtsjr/r2@<2?j;p6W//N,(@:|Tt$PH%@ss9CiDPBE09o:x@0vRBt@SOeNmn:yZg;K>8Wm8Ij?ft8imN1)o2RbMRco9^:q7u"l(JqX%Vy[k%M_Gg;rNmSt7yF6s{Uci8`_!2+sUUX`_Yjmu5.P&t=wgMFtBE&rEsBM:P+M14nI.,.VqWN2ES$N0VcS8NzQ&w~*|Ra,U4CB@w#TZ69sK$AjAi>U"gH)gl*b28|V_?r-DbZ:BZp@W#ABNV/,]v&blO%W%br(_H#E.<2meY<]r$x.#[>bC@h9?*$;o&aBQfQ?e[X:(7(*A? -`HeUr~av(.AhcG+{r+)RJFD;Plgz@cT6$0$LCIKw4eXVS;37W$UcF -D;$(G]j~Qn+TByPWXJ - -hY9{kpny10PkTf9Ty`k%-#x(YN=N5L2|3P<[qL(4[]-r#2H/x,kh -EOu&$+ANbyzJ@FOA.6=3BX`@o_uhc=d`A,d8OI3i[IQO?[PUlh=Xlug#WkUcgvHGCUN7jS]U|b8XD@Q1mr03NNyXn*O`yq1l.4*FdK0GYH@iLZH3cY`-(PH0pDIzh17IHl5cG6RqEL_)A_a)j#!khJt-__2kT!,]K].L4n%oyjZj%M&1m8b$O3"5=p"y,uAp8&4HAbv4kn`nD^.CrhxaZ*+Ny1x3*F]aLi7rOqen?JG;gq=2)+TL526T5Kc,x4# -?t"!@7^mYMWZGvkgjMi=7=DNkHqGGV9w>ub.8]2@#Rm:IK)O*hgEQUj`7GO/dCVnfC@XAi*9+^JtHB@(!LNg0F9f;E*mcB)7OEZ8A.,7nvZr`:>hETPden1-!>%AnuJNr:ZFM?u+n)txv~%wR[D?:C#";^Y,]Ln=l8;/h/^cy?J8v(Wkt0.lmf>auP,wQAt>mx6,+`l3`QFtgtDmlSYM4O^mi(?]tvKh/(*21hk6joIX,(db]b -$]"*IJn#jc9IW_YLn)N4d/.-qI@eHmpsfb[x&OrSHlSugL2XC=Wu3bEQPW>5kLa99U^V2&%ib$SJuYhQ^^w<~+0_zGV.3u,N;7#Bl!~C`H~VSz#fjcH^QBP;gIbN+A?8&IDwyTn2O*lL|qS$@S=Xy[Z!1!w%vQ*bwUgX9uL?+(`90#eVK2*hpLyBYH8s!w;`ETOQoSvdKv$iS_33$k%mbqlk]a-W0|j<$+koY]V-y;&6-UbCR+T7wdHoh@1I]o-Y;e@w3nNX/.I<@/9 -"4EF7exF,{G8Qn+xgzVm%B#=IexB(Sl5tQmPKf1GC]M2N%g3G391FV>I@lK1D0__[`D34E$$0~7Bl84HO66TSNPBZj!y0uAFF4>&mN(FnLy6Bgsplq$4,D%C0%X+npJk,}0>+moYk&uhJw0K5,Aju??d]z53_hM%6B_q1sDu_Ch/k2VGVN>|GAl)0LY_lPEK1+"MO9{q?8:8kHmB%1;bAIZx(>h,?/MQ6w4x$kz%c4hS&p/ky#;-zC[/BI(a"FV,/HgD!!w-_qaA6:&F&j52F2v`O.DyN7Ic^yb+|QkKEp*;M.}06-0#-Y)gGP&XOem"oNx2v,$5$[~Rti>o$g)oNL_WMW -w@4`Jf]-Y76]$zK[^WH:oy3Z&_VRpi%eJub}k*B%Nz?d"&ycBb$0qP:M-J&3i(G?VPRTF>43IOtiiSX2&I=WB2hY2Z(qQ=raO9=-&_H& -lD}VtmARKkaEe2F_=d[yWFH0paFdK^SJROv&/2!c/q-%~Rku-kqN@R6BJm=r2T8d-yp#yUV1I[JOf0FCv"Q.JpvVZqo]Fb?UWZ3)hVw,hP00Q4P@Ib$3_G5Z]cTcG?OS?20$9a -%8IIu2FX)):L0E*#iu*/ -6sU^Sk-.f9@|9X-|N>WJZ7vjRn;x,a`)ikA3-g"IQ-DO1+iW2$8VKP)#h#n7RW0g`Ll]/x@&C+63+ -lCq-KpK/>,8)pb]BFI.+Nt^&7D#_?7aN>QveYt>JQMxO0>oF,) -i-9yIW,D%l;bTIt>j[hGkH/+|2EI4%]oJ6;o%@#"uX};aU#6C{=_hcTYB-*YbZFURAAM;_P1vN[[!jMVp"s^Y(dAa=$~l5Sy@24A[1]prlj_%O#%Sp"`)z4]X:AarQCU`BUTkv6"E|_Sr"v)Y:FTk=7Vi`=0Act^Ih.%9{4AtGj%^G!wb&MlX6o==&a!W4m0kS)Oj5Dn#RY}?T^YmAq`K#Mpf,TrqHcY#_D3#E[cDHM9cw%`%SZN^"TL7[=$MN]^qFn+eCG(kZ+teQlf|_gMCSJ3o/ND@?V!:X)lJhPrffOQ0fo/-KXMssQ}$14!LPU&c&>JaD&x2x&Ze7Sq@4Dw99VHiovPb@_C`]2`3NBHo`3jux+7WK"L3P+K6:2vT8<48(@rJkQ3Ein)GmjP+plOOpX8DWU)f}70buHTa"VD069m+ekfj_K&6)wETSg(/]k?FZ*s0KADTFaoE~psM)lx8u0$l2*bh]oMhp)[I4+ -/i*nZ[#Gx3 -j/dNh)taC)_G@BO+t3ta1kYhUt7d -V!`JEH)EeYSI.k3;4S$d.+v9:HtvE=fDu*e=*yEgd`!rp7@Q/$thLRMB_kXRLfl>N -m"lEel]>]FQGX$aT~C -W[Ri$BD~Y$RdthuXx_yD4p#`V13L?"Cr^J5#PAMV#>K]]U6aJfTp>N#[=?+`os) -/.E`^h4fuUFxHb9|Hk0!h^1(qDcvqU,>L7!~[(IagY^50B0mVncT75d_2O.Ha[Q=x. -KNuA$a%5B!et.BdgY+HL%D_M7.R;`tqN=)qk"u<`Aeo#D_?.8zx|(mA4!9=0(o8VTN;6?0dd<.Q<6U$"az.EA;f9ro$2oHgz/v4W -K@.^r,vKYrm4FuXgo>R"&Y]q;!9n%%:]"B%]Jq&r_@6YUx_YT3431CLDWpgXJB7vLFD -qO)IiI;bORCJqBi$Zs>?Wgn4nxy"r`;c,Ni -H&};[8vGhRpr3.s@{_G:~^zRynt:0*p&2/ERW,G@KxG=IQ=rE`(%ZB9_m.9i#RjOsj2^+?S`KN_+{F[j3%^JS -.k -[&nlc|UyH2i3mkGhs~k&Lb3v51.wRGK|F<=RRF,=Jr<-5O%1;o4ec_*0])Bd%`[<97:i6FHv97M`#xPqp9rm*j-ErC?,1j0eEbDz=e#<:C2;n[[MLDHWjKAg+|TY/ -hqUJ5+prdf=p_2 -n8lkk"rbcP`V/wJM.x.pWBSJ14Fwxl-522=D4@gO-P!g.(-Mq[H@4^AIeAYEX?i_pT94}L@>/7S*?<9sn^(WvgOr/`J -f`X7*pZ_tz:TO)yKLO.9t.%T=|idBpK_>ey>sq1<93junrJ<$u}y^BBbL)v, -D-:%B?%KKZ:ZDC3#iK`zm0x*;]XVZpS6 -;Y@i"j+EXGl^4|VY$RsX9Ibs%iZ:ips9_"_<# -t.$`OIaKMqsJrQNPaGSo%U,h>ah-.f`;Dw0w^Gi1V,IC5wi-_dmZ07?xB7`K6^JCjw,I%HcL#lMrcjqo@8GUyf7PjmVBMXdCz#v]_&@tK*J3lg#NmQ[BRA5fDm*1^vX[>!EzOB:}K7PJo}v/[h;JW/Cnj3$h,!6!8CVoH``, -+J#7,R[rsa4O!a|Mvq1)3`qW23!Y)31/U2PXQ"@x+#T;)r4x -1W>UKe@eNEXRv/q|%u[bSLCY5&a"YUYb@:pu8h6(]WL -tCLaW_rnXpC[e;$/.JUCO*x[ua)?TU+b-lWBN -)s;F=7LI"Jn] -`4*(QdCeu2!/F*oCHy5d.^97%(IukmLf^e3h-c{3(K`ef3I0UZ1J?*eB|o&ZtBgMBg-@Kq#i|(}Z/KeJuf?T4sr7mMxEJ)d0FIkTeXX9AY8%ZymGgc:@!]#vukD[ve#.4l_D~uWcBwi9eyKmN78Ep*UA:miSEc{8Xs;%{y%%nf*!Ka>MdO/Mpa95.#ocoFJk;MUx0RL^U -g5f4el*Yx=#&oo)QgSJUyO#;cqx@Q[.!6]kw+W6+50{3(@)DU)1*;e.Te3Lfx:*PYY-]~*c0AVqB-Mcux$#"%HpsM7_l54|QBJcRz--dBYY.jR+pnvN^/B -#z+$ -#BMT_,_$4YQ&BbB3^+m___j&q(-%43f7]CBh5t+ -~7Y`V,OQW/;V$X -@T)4_5^|#yqLb+_(da9yd=be.BRO5]gn%;b%a_KvnTEYn`otK5mgVkEN!hz)r=Cj*Gc`(`SNHH0~waAJ[1plhWcpl8%9A*`lktq2h{C21Xv7k#ORyG^,Jh:^=n6q#z9R2X"nH7tb9ZwEJk(QH&cZ%9e+Z$Z>n4dROV^XewC%MX+Ff9;ij& -D0#v?3@#iOi?AOyjv#4ZHd5oQy8+G!?>Dg)*P_ZOcu[kz,N,V8/k#Xb^cYgI?9moR:9djuiFk_Tdm.`GB7>dLE-+XHd8/W93Aod%6J{95Pr$H!# -y$NOJ98IQE8*%PY9|0|A8>0P%EH0P)f;h:8YB$%>|pA.$`--`+5B>.#GJY^,B?mmvOvUQ$KC]_h8-Sa&1NvNG/>,F*Io3*P!;(:7ts)USs[EctOo4&>!;=J,/h5W}15AH:#Y!tmXDL(<]e&gbaNQexM@@o,f9wucbOdoHi$QQ_?b0d@Rf6hG@>va4OMi99xyPtbDi>k*Dg}LsXqsuXcM]Mu9fQk.qF -TRK`?M3|v&n2f2yI`o-yr"U3N]RkWmtE30ZXUlF-Rr3x`hS;(uh#t>L32@)Fp@@ -BsIH0xj=l_^Fl;ds>L3%U/^huXS^%X7qZ;3 -*QAJ:tGLU!J#>fekF@D$;]VFv}c?M%J43A;^_E`bKlLIE|wSqx0C -"ShttCWvW42VIr3K>JBAC%lK&tJaDbcG -4b))/Pn9Om_kz$b5lk6/V7C.Zct_/Dr_fG#LWBD(Y0L:GJ")n3`,3o$:vY_ULChDkE%qMHP0GEiG`Uo64*gi[qc/>~k,[RL:+AmNNfYLUXV.<"gtH>?[1snd:ZP~p1KYOu9ZZE_Y(qM`l,6_8F,*!@*cR4o6n7wWYGwlYQL4&(`Q2=dSfsn_&7B[63a.wD';case"zh-tw":return'*UF;2lMWr1jf3)lfL_kxZvu_Ow6Z9K~BV%:N+;~(|o]S{P~0^3y_?=o4298jF.p#+^%SlrRY/0>>kn`[x7b8(N.9V(;[$TVjIUg[XZPR0pVU.P?@6]@;9y4o>%u/EWb@OW -ow,o2&,lK9]s6vOM4wjhsj7D<[`?,M@_lo&QW4pz^$E@_%VnRXy3TNH;)5sz)57VYOVcan.aGRi{@0v1c;srXs8HjHH?O@.EvFRON{$^n%dTTdU*sgr#*#ZD.J_GaFw=ar^Epb8[@i+$1]bgYJkU?F[`nRFm>CtA@zp#Y]ua/SSE7@lP?$V|+`Ww#>raXD7n1sWmHof-l"8n.QheXwV^bj69t7%hs&f19a2w8za -b]sWy$Ky=W@J1)R}9"luW3sG&R{s8h.X~RFO -UF&Rqd+$AfZYhn/Bs**[#tt4X76VFy*|?.@zcgeq)WnBTMqkpvIlTtW?)TWX2`>r]x=9WZXyBNm}w(_grp.^glt>B}[hr8qE?H3AFJ5 -l+yVn}oLk,T#_,dd8[BqJqMEh%sGP_T[cN_d#c1c!Y@__$4zbhm|@eYN?OZ}Wi_$kJ=Ukji1 -:6s;iCM`hSnu36|dQ.{F=Nv=+##gMrXor!U2[bO@dow:QGG6@ -i#OKbG?r&4rmI!S9ECu;mS45m, -h_~t7@Fkey|6_3n;gp<,w/:0.T7:x.P]Aca!OQGZXA7s!&eZwo:-VcocdLwRwAkH}0rMx3}/foaf(WS^`)m+:B|0a"6R?eK[QMv[+T_3(N$TgJ$MYmu4O+,KsPaA)m4E)p"ZS`E*e.q/ZfYtEfES3%f$w_U#vg1?S6:#yI|JFVZ,i-{Wb5bO@YSry!]5NfJO-]wv#B?-ipXFl=.174v]/l[XuHUj81%u!M][Tz(v"]Rxlb0E29D-Xn)ntmg:MCV(f)%*rqq<:o`g24/;8EmeL#ui8d8$JIN=I0e[@]J.bi:?j0mRqc5AoIc~UjR@SRMUDd*kiZSuY(afs9Q($N(^"Df -O2?F33P>2#p:q$UZu}!|^Oo(z(L`44*C5;uK(t#1S^>QEy29R]ZJb~B:q+v#r]adqcjul;A~GCjlPMDL]Vdo$XdRZd;1I2Wva8w/kRd/fwJElSo5&/*[ -ER$hz]AH^b(ko1C6sfJV`UJ5"^oIX)i9pJ*)E1|qYXpL0fiz$PmFei7?sTIU*Y~P2;pJh?w/>vb6s_Ny#2m0+w(mp/xYW1{1]#Z"j*).Xx,Dsbkm_wkr`p$`yGuK)2|N`BQinC&X>*BvEGJtsCOx{MC+u=J -u[IkFr*15B*)@=$^+9+j`h1#vV0aTw,By0@[!sh@`/Mn+mih6&6mpm)$4$75*"eC0iw^jJo& --:8G^dsu0;gX"CBmEs&-^Qq4%FlcsTcuAfa[s)+LMAtXS[C6VE^=BecDPp>n#-%PaJd!JTE#GwS~$~4[5V3?$$RkT*H!pNR5F]Ea8=ISR%Y56c,w9OHnNG6M7^VAUS|3G4#>?bcc:JDda#sIYwxwQ0qSi^r#!,s(qObk]sSgt`Ey5ymBm>iS)$pqH2_` -c^[|k4#Ky|SUk[;UUImybaT@*]dE:x!z^]jCiMUi1W2jO?b(kT"]DT=BX>X@1kw{lY5iIwF:G@`Ve2&w"p&Na1+$X!?9*6]Y:cNem=*(j_wcIDWFVrsFo2=ISrn$"jJ0k%UHCg^"(6e#iUit!ViGn[8S!{*p:;_P%)rIl*F)Ea"e]Fo?k4vDZ,kH(dUpJ4((#oWyHbHa4=68dNc8#C&&M"MbMnT8f-7e9)Z8Jum~1}B/<5rE(}XJns4RY7?3WQu&ZF<|5g<$LKP@/!F~Q+x88#"6k=#Z,mC?]yS91*0IS=?>gUv@Zmx?B%s_5nRQh{N}j:2b;qOs$;:jE"=!ukIm]T]-;52G=ar(SeXa&|Y),6j<)UKwlaEAs:f?>H[mZ_;{V1-#/JwA8;Ez%y"m1#*blNOv4t:F]773Mn/w[qk:Cb@*6uG-:A.9.0qQM*5!Xh-<$)0V9r=%b2NaT4(hCS/UoLy7=0OM6KvgKid=]`o<.XWv3d!qeFz"*:';case"ko":return')Zu1$g~Z+/fR|L`N}5eZoBxw._ug;shU/m{"~N8ZN@SEtI$"*;1"0`PZa;]%3Pl;W -+crN)6[Qmv}R3")JeS;9K2 -F]=LxCJILLPFAHTBi<6l7CeZjd+WX5FNc[or52+FSf(3][%s7UmzEcEOd_Z*6@5Jo=gKF:ooo#"vKfv.^EEh9[Ea0rugN,dSU1:{w>-Tdpq!`]1@q7mmaEvAhL>G:/XKsBa;^HrU,(w&sJo) -}YeNA:Z:5K*R~yqNxI,@Z:1#l7c?[Jh7~=RDxb:LBsYK(ts -|c*JfmCE,n>c+e*s,S2^=VaWQ51vefE6rfI+!]-}UKR% -K2]"%?J3Y?Iwp^^+CE24Q4D@7$)h5Obe$V3kn5j# -Wo*:WmZB)H1M.VWc]H$%dy%CNTH,bi9`:*|"jqa7FRH![/)s>eEFOKdDd_Y(X8;Q5=j:mSocGU[BY=UuJt/dO(G`[(q$:p>/otKLS-CeuJC,!fKe>xih{L"fToY.8DpW%8kAFM4nmSx7Y2360]t-7xZJCnJiFMA=SG%80bp_8+WFkg<@O;YkqqJrs2rJ4^rmwqtTnkRm]-t{:qN9=r -iHk9Zkj3u9*gcXHtZ.Tl.,6)88R[VN$3.c4NT[mcCKTM|5LR.$s)u4uc47sx*IR(f*C.-8bZ+OWa/;,V/=ZZI*L]^Lq8Q26r=5hseN7d-+Z4=K2Z~A{eq(fJ@LtPv=J_[W5Xxf8rh[c5Palh}!fepZ?)D8alc+ZO$Q@q"DND%fP3xD3,#)I@TWj4Htx]8q-AOWE8tA:Yt2%_.N^mdEZAenHRnC11}-t9M=|9F,$dj -CZ>HySXvCR:$l;b1sfAK{+*Ji9c.!x:-P%qK=eY$)Sk1tIfnvz%krFjCl,Wrg}Tr*U`%4M/a^Pt-=)>5YU%UkjL:*V;t9}b9MBenheaxlbgj$>Gy^h#ZBv/@k`G*w7q@C0^wfb&1?a&q+XE+Y38b2NbR-kSxpdG[:P&_vN=-L`$n-t0%;{X&^eF%a245#ig+I,UzyvsN+^oibNNbS0eR(jFOCM/A!|uVnLqsvVH)cS -9lne=-mr-d8eSA.g:#Lil0,8iA(oZGfadn%Z%F7CT(>aAy4c2?Zdc"OT=g9TtY]f+Z4@8==nCX~c{u?huCt5j"e"/:u,QD^1"JbizBJt=KLO-EmY-8dntVn@N3djVdpvu*LG0"M3,/b,]dCKPZMIrSOn+h@s*/Aj/+}> -ad!CWkMKo_AXym6E+lr0B:><32=Ko ->a - -:6_eBg -IUFAugKGP6G%Fo[:N&d]YA{Hwd8V^_fhtS/CCTn*xM6FnplvNKrA:%80@7J{yG$h`jG30A@#E -QxYC6}uy(`YSO}oB7gxo1H7FDop:t*nq=V1xDO>]-3R`@p4n2TT2Wz=13o55$?@?XFw(ZcmA8vl+4l*v3*`3#xl0F-_qr(a>jd4iWW"jeBN@p>_yS6cU?qw/_MERTGJY*2*k=j1PU+IDKRNsdNI[H}[Qr:1]o1xyTmZo+D?7V -BShJH|=nC@X)[1>!0X5!rMQ6LZ4+56&ssU?oNl,&Cf>CAi,E8QtVe$,uAb?)$`[.3~*n!>l*0Lm?An#gGFkCTUsBac03p._j92)]H:R](C5O<*QXRQ{iSA4b=J,:psnxfZ6[d$}^M[nM?Jz)6AB^0K0PZOqHH)g7;H:d$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($Mc,$V,$E,array$Gh=array()){$Gh[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$Gh[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new -\PDO($Mc,$V,$E,$Gh);}catch(\Exception$hd){return$hd->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function -quote($Q){return$this->pdo->quote($Q);}function -query($G,$Cl=false){$H=$this->pdo->query($G);$this->error="";if(!$H){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(25);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($Ig){$I=$this->fetch($Ig);return($I?array_map(array($this,'unresource'),$I):$I);}private -function -unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function -fetch_field(){$J=(object)$this->getColumnMeta($this->_offset++);$U=$J->pdo_type;$J->type=($U==\PDO::PARAM_INT?0:15);$J->charsetnr=($U==\PDO::PARAM_LOB||(isset($J->flags)&&in_array("blob",(array)$J->flags))?63:0);return$J;}function -seek($ph){for($s=0;$s<$ph;$s++)$this->fetch();}}}function -add_driver($t,$C){SqlDriver::$drivers[$t]=$C;}function -get_driver($t){return -SqlDriver::$drivers[$t];}abstract -class -SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;static$passwords=true;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="";var$query="";static -function -jushModule(){return"";}static -function -jushAutocomplete(array$T,$rk){$Ok=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n -as$m)$Ok[$R][]=$m["field"];}return"jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ok).", ".json_encode($rk).")";}static -function -connect($N,$V,$E){list($Ee,$_i)=host_port($N);if(preg_match('~[^-\w.:/]~',$Ee.$_i))return -lang(26);if(preg_match('~^-?\d+~',$_i,$A)&&($A[0]<1024||$A[0]>65535))return -lang(27);$f=new -Db;return($f->attach($N,$V,$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$m){}function -unconvertFunction(array$m){}function -select($R,array$M,array$Z,array$ge,array$Ih=array(),$z=1,$D=0,$Mi=false){$qf=(count($ge)selectQueryBuild($M,$Z,$ge,$Ih,$z,$D);if(!$G)$G="SELECT".limit(($_GET["page"]!="last"&&$z&&$ge&&$qf&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($ge&&$qf?"\nGROUP BY ".implode(", ",$ge):"").($Ih?"\nORDER BY ".implode(", ",$Ih):""),$z,($D?$z*$D:0),"\n");$this->query=$G;$qk=microtime(true);$I=$this->conn->query($G,(!$z&&!$Mi?1:0));if($Mi)echo -adminer()->selectQuery($G,$qk,!$I);return$I;}function -delete($R,$Vi,$z=0){$G="FROM ".table($R);return -queries("DELETE".($z?limit1($R,$G,$Vi):" $G$Vi"));}function -update($R,array$O,$Vi,$z=0,$Lj="\n"){$em=array();foreach($O -as$x=>$X)$em[]="$x = $X";$G=table($R)." SET$Lj".implode(",$Lj",$em);return -queries("UPDATE".($z?limit1($R,$G,$Vi,$Lj):" $G$Vi"));}function -insert($R,array$O){return -queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function -insertReturning($R){return"";}function -insertUpdate($R,array$K,array$Ki){foreach($K -as$O){$Z=array();foreach($O -as$x=>$X){if(isset($Ki[idf_unescape($x)]))$Z[]="$x = $X";}if(!($Z&&$this->update($R,$O," WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)&&!$this->insert($R,$O))return -false;}return -true;}function -begin(){return -queries("BEGIN");}function -commit(){return -queries("COMMIT");}function -rollback(){return -queries("ROLLBACK");}function -slowQuery($G,$cl){}function -convertSearch($u,array$X,array$m){return$u;}function -value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function -quoteBinary($zj){return -q($zj);}function -typeName(\stdClass$m){return(isset($m->native_type)?$m->native_type:"");}function -warnings(){}function -tableHelp($C,$uf=false){}function -inheritsFrom($R){return -array();}function -inheritedTables($R){return -array();}function -partitionsInfo($R){return -array();}function -hasCStyleEscapes(){return -false;}function -lineComment(){return"--";}function -engines(){return -array();}function -supportsIndex(array$S){return!is_view($S);}function -supportsAlterIndex(array$S){return -true;}function -indexAlgorithms(array$Ck){return -array();}function -indexOpclasses(){return -array();}function -checkConstraints($R){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($R):"")." -WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)." -AND t.TABLE_NAME = ".q($R).(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;}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class -PgsqlDb -extends -SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function -_error($ad,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function -attach($N,$V,$E){$j=adminer()->database();set_error_handler(array($this,'_error'));list($Ee,$_i)=host_port($N);$this->string="host='$Ee'".($_i?" port=$_i":"")." user='".addcslashes($V,"'\\")."' password='".addcslashes($E,"'\\")."'";$pk=adminer()->connectSsl();if(isset($pk["mode"]))$this->string -.=" sslmode=$pk[mode]";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function -quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function -value($X,array$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function -select_db($fc){if($fc==adminer()->database())return$this->database;$I=@pg_connect("$this->string dbname='".addcslashes($fc,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->link=$I;return$I;}function -close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function -query($G,$Cl=false){if(self::$untrusted)$H=(@pg_query($this->link,"BEGIN READ ONLY")?@pg_query_params($this->link,$G,array()):false);else$H=@pg_query($this->link,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->link);$I=false;}elseif(!pg_num_fields($H)){$this->affected_rows=pg_affected_rows($H);$I=true;}else$I=new -Result($H);if(self::$untrusted)@pg_query($this->link,"COMMIT");if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function -warnings(){if(PHP_VERSION_ID>=70100){$I=implode("\n",pg_last_notice($this->link,PGSQL_NOTICE_ALL));pg_last_notice($this->link,PGSQL_NOTICE_CLEAR);}else$I=pg_last_notice($this->link);return -nl_br(h($I));}function -inTransaction(){$P=pg_transaction_status($this->link);return$P==PGSQL_TRANSACTION_INTRANS||$P==PGSQL_TRANSACTION_INERROR;}function -copyFrom($R,array$K){$this->error='';set_error_handler(function($ad,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);return -true;});$I=pg_copy_from($this->link,$R,$K);restore_error_handler();return$I;}}class -Result{var$num_rows;private$result,$offset=0;function -__construct($H){$this->result=$H;$this->num_rows=pg_num_rows($H);}function -fetch_assoc(){return -pg_fetch_assoc($this->result);}function -fetch_row(){return -pg_fetch_row($this->result);}function -fetch_field(){$d=$this->offset++;$I=new -\stdClass;$I->orgtable=pg_field_table($this->result,$d);$I->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$I->native_type=$U;$I->type=(preg_match(number_type(),$U)?0:15);$I->charsetnr=($U=="bytea"?63:0);return$I;}}}elseif(extension_loaded("pdo_pgsql")){class -PgsqlDb -extends -PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function -attach($N,$V,$E){$j=adminer()->database();list($Ee,$_i)=host_port($N);$Mc="pgsql:host='$Ee'".($_i?" port=$_i":"")." client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$pk=adminer()->connectSsl();if(isset($pk["mode"]))$Mc -.=" sslmode=$pk[mode]";return$this->dsn($Mc,$V,$E);}function -select_db($fc){return(adminer()->database()==$fc);}function -query($G,$Cl=false){$I=(self::$untrusted?$this->readOnlyQuery($G):parent::query($G,$Cl));if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}private -function -readOnlyQuery($G){$this->error="";if(!$this->pdo->query("BEGIN READ ONLY")){list(,$this->errno,$this->error)=$this->pdo->errorInfo();return -false;}$H=$this->pdo->prepare($G);$I=false;if($H&&$H->execute()){$this->store_result($H);$I=$H;}else{list(,$this->errno,$this->error)=($H?$H->errorInfo():$this->pdo->errorInfo());if(!$this->error)$this->error=lang(25);}$this->pdo->query("COMMIT");return$I;}function -warnings(){}function -copyFrom($R,array$K){$I=$this->pdo->pgsqlCopyFromArray($R,$K);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$I;}function -close(){}}}if(class_exists('Adminer\PgsqlDb')){class -Db -extends -PgsqlDb{function -multi_query($G){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$G),$A)){$K=explode("\n",$A[2]);$this->multi=false;$this->affected_rows=count($K);return$this->copyFrom($A[1],$K);}return -parent::multi_query($G);}}}class -Driver -extends -SqlDriver{static$extensions=array("PgSQL","PDO_PgSQL");static$jush="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","~*","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT ILIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$nsOid="(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";private$userTypes=array();static -function -connect($N,$V,$E){$f=parent::connect($N,$V,$E);if(is_string($f))return$f;$hm=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$hm)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$hm);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function -__construct(Db$f){parent::__construct($f);$this->types=array(lang(28)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(29)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),lang(30)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(31)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(32)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),lang(33)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types[lang(30)]["json"]=4294967295;$this->types[lang(34)]=array("int4range"=>0,"int8range"=>0,"numrange"=>0,"daterange"=>0,"tsrange"=>0,"tstzrange"=>0);if(min_version(9.4,0,$f))$this->types[lang(30)]["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f)){$this->generated[]="STORED";if(min_version(18,0,$f))$this->generated[]="VIRTUAL";}$this->partitionBy=array("RANGE","LIST");if(!$f->flavor)$this->partitionBy[]="HASH";}function -enumLength(array$m){$qh=$this->userTypes[$m["type"]];return($qh?type_values($qh):"");}function -setUserTypes(array$Bl){$this->userTypes=array_flip($Bl);$this->types[lang(7)]=array_fill_keys(array_keys($this->userTypes),0);}function -insertReturning($R){$Ga=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($Ga)==1?" RETURNING ".idf_escape(key($Ga)):"");}function -insertUpdate($R,array$K,array$Ki){$e=array_keys(reset($K));$Fb=array();$Ll=array();foreach($e -as$x){if(isset($Ki[idf_unescape($x)]))$Fb[]=$x;else$Ll[]="$x = EXCLUDED.$x";}if(!$Fb||!min_version(9.5)||count($Fb)!=count($Ki))return -parent::insertUpdate($R,$K,$Ki);$Gi="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$xk="\nON CONFLICT (".implode(", ",$Fb).")".($Ll?" DO UPDATE SET ".implode(", ",$Ll):" DO NOTHING");$em=array();$y=0;foreach($K -as$O){$Y="(".implode(", ",$O).")";if($em&&strlen($Gi)+$y+strlen($Y)+strlen($xk)>1e6){if(!queries($Gi.implode(",\n",$em).$xk))return -false;$em=array();$y=0;}$em[]=$Y;$y+=strlen($Y)+2;}return -queries($Gi.implode(",\n",$em).$xk);}function -slowQuery($G,$cl){$this->conn->query("SET statement_timeout = ".(1000*$cl));$this->conn->timeout=1000*$cl;return$G;}function -convertSearch($u,array$X,array$m){$si=preg_match('(LIKE|^!?~)',$X["op"]);$Tg=preg_match('~^(character( varying)?|text|citext|bpchar|name)$~',$m["type"])||(!$si&&preg_match('~'.number_type().'|^(date|time|timetz|timestamp|timestamptz|boolean)$~',$m["type"]));return($Tg&&!preg_match('~\[]$~',$m["full_type"])?$u:"CAST($u AS text)");}function -quoteBinary($zj){return"'\\x".bin2hex($zj)."'";}function -warnings(){return$this->conn->warnings();}function -tableHelp($C,$uf=false){$Wf=array("information_schema"=>"infoschema","pg_catalog"=>($uf?"view":"catalog"),);$_=$Wf[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}function -inheritsFrom($R){return -get_rows("SELECT relname AS table, nspname AS ns FROM pg_class JOIN pg_inherits ON inhparent = oid JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE inhrelid = ".$this->tableOid($R)." ORDER BY 2, 1");}function -inheritedTables($R){return -get_rows("SELECT relname AS table, nspname AS ns FROM pg_inherits JOIN pg_class ON inhrelid = oid JOIN pg_namespace ON relnamespace = pg_namespace.oid WHERE inhparent = ".$this->tableOid($R)." ORDER BY 2, 1");}function -partitionsInfo($R){$J=(min_version(10)?$this->conn->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($R))->fetch_assoc():null);if($J){$c=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $J[partrelid] AND attnum IN (".str_replace(" ",", ",$J["partattrs"]).")");$Ya=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return -array("partition_by"=>$Ya[$J["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$c)),);}return -array();}function -tableOid($R){return"(SELECT oid FROM pg_class WHERE relnamespace = $this->nsOid AND relname = ".q($R)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function -indexAlgorithms(array$Ck){static$I=array();if(!$I)$I=get_vals("SELECT amname FROM pg_am".(min_version(9.6)?" WHERE amtype = 'i'":"")." ORDER BY amname = '".($this->conn->flavor=='cockroach'?"prefix":"btree")."' DESC, amname");return$I;}function -indexOpclasses(){static$I=array();if(!$I&&$this->conn->flavor!='cockroach')$I=get_vals("SELECT DISTINCT opcname FROM pg_catalog.pg_opclass WHERE NOT opcdefault ORDER BY opcname");return$I;}function -supportsIndex(array$S){return$S["Engine"]!="view";}function -hasCStyleEscapes(){static$ab;if($ab===null)$ab=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$ab;}}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -get_databases($Nd){return -get_vals("SELECT datname FROM pg_database -WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT') -ORDER BY datname");}function -limit($G,$Z,$z,$ph=0,$Lj=" "){return" $G$Z".($z?$Lj."LIMIT $z".($ph?" OFFSET $ph":""):"");}function -limit1($R,$G,$Z,$Lj="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$Lj):" $G".(is_view(table_status1($R))?$Z:$Lj."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Lj."LIMIT 1)"));}function -db_collation($j,array$vb){return -get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}function -logged_user(){return -get_val("SELECT user");}function -tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$G -.=" -UNION ALL -SELECT matviewname, 'MATERIALIZED VIEW' -FROM pg_matviews -WHERE schemaname = current_schema()";$G -.=" -ORDER BY 1";return -get_key_vals($G);}function -count_tables(array$i){$I=array();foreach($i -as$j){if(connection()->select_db($j))$I[$j]=count(tables_list());}return$I;}function -table_status($C="",$vd=false){static$te;if($te===null)$te=get_val("SELECT 'pg_table_size'::regproc");$Pj=(!$vd&&min_version(10));$I=array();foreach(get_rows("SELECT - relname AS \"Name\", - CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($te?", - pg_table_size(c.oid) AS \"Data_length\", - pg_indexes_size(c.oid) AS \"Index_length\"":"").", - obj_description(c.oid, 'pg_class') AS \"Comment\", - ".(min_version(12)?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\", - reltuples AS \"Rows\", - ".($Pj?"seq.last_value":"NULL")." AS \"Auto_increment\", - ".(min_version(10)?"relispartition::int AS partition,":"")." - current_schema() AS nspname -FROM pg_class c -".($Pj?"LEFT JOIN ( - SELECT d.refobjid, max(s.last_value) AS last_value - FROM pg_depend d - JOIN pg_class sc ON sc.oid = d.objid AND sc.relkind = 'S' AND sc.relnamespace = ".driver()->nsOid." - JOIN pg_sequences s ON s.schemaname = current_schema() AND s.sequencename = sc.relname - WHERE d.classid = 'pg_class'::regclass AND d.refclassid = 'pg_class'::regclass AND d.deptype IN ('a', 'i') - ".($C!=""?"AND d.refobjid = ".driver()->tableOid($C):"")." - GROUP BY d.refobjid -) seq ON seq.refobjid = c.oid -":"")."WHERE relkind IN ('r', 'm', 'v', 'f', 'p') -AND relnamespace = ".driver()->nsOid." -".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return$I;}function -is_view(array$S){return -in_array($S["Engine"],array("view","materialized view"));}function -fk_support(array$S){return -true;}function -fields($R){$I=array();$va=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz','time without time zone'=>'time','time with time zone'=>'timetz',);foreach(get_rows("SELECT - a.attname AS field, - format_type(a.atttypid, a.atttypmod) AS full_type, - pg_get_expr(d.adbin, d.adrelid) AS default, - a.attnotnull::int, - i.indrelid AS primary, - t.typcategory, - col_description(a.attrelid, a.attnum) AS comment".(min_version(10)?", - a.attidentity".(min_version(12)?", - a.attgenerated":""):"")." -FROM pg_attribute a -JOIN pg_type t ON t.oid = a.atttypid -LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum -LEFT JOIN pg_index i ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) AND i.indisprimary -WHERE a.attrelid = ".driver()->tableOid($R)." -AND NOT a.attisdropped -AND a.attnum > 0 -ORDER BY a.attnum")as$J){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$J["full_type"],$A);list(,$U,$y,$J["length"],$oa,$Ba)=$A;$J["length"].=$Ba;$jb=$U.$oa;if(isset($va[$jb])){$J["type"]=$va[$jb];$J["full_type"]=$J["type"].$y.$Ba;}else{$J["type"]=$U;$J["full_type"]=$J["type"].$y.$oa.$Ba;}if(in_array($J['attidentity'],array('a','d')))$J['default']='GENERATED '.($J['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$J["generated"]=idx(array("s"=>"STORED","v"=>"VIRTUAL"),$J["attgenerated"],"");$J["composite"]=($J["typcategory"]=="C");$J["null"]=!$J["attnotnull"];$J["auto_increment"]=$J['attidentity']||preg_match('~^nextval\(~i',$J["default"])||preg_match('~^unique_rowid\(~',$J["default"]);$J["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(!$J['generated']&&preg_match('~(.+)::[^,)]+(.*)~',$J["default"],$A))$J["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$I[$J["field"]]=$J;}return$I;}function -indexes($R,$g=null){$g=connection($g);$I=array();$Hk=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Hk AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, amname, - pg_get_expr(indpred, indrelid, true) AS partial, pg_get_expr(indexprs, indrelid) AS indexpr".($g->flavor=='cockroach'?"":", - (SELECT string_agg(CASE WHEN opcdefault THEN '' ELSE opcname END, ' ' ORDER BY s) - FROM generate_subscripts(indclass, 1) AS s JOIN pg_catalog.pg_opclass ON pg_opclass.oid = indclass[s]) AS opclasses")." -FROM pg_index -JOIN pg_class ON indexrelid = oid -JOIN pg_am ON pg_am.oid = pg_class.relam -WHERE indrelid = $Hk -ORDER BY indisprimary DESC, indisunique DESC",$g)as$J){$jj=$J["relname"];$I[$jj]["type"]=($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX"));$I[$jj]["columns"]=array();$I[$jj]["descs"]=array();$I[$jj]["algorithm"]=$J["amname"];$I[$jj]["partial"]=$J["partial"];$Xe=preg_split('~(?<=\)), (?=\()~',$J["indexpr"]);foreach(explode(" ",$J["indkey"])as$Ye)$I[$jj]["columns"][]=($Ye?$e[$Ye]:array_shift($Xe));foreach(explode(" ",$J["indoption"])as$Ze)$I[$jj]["descs"][]=(intval($Ze)&1?'1':null);$I[$jj]["opclasses"]=($J["opclasses"]!=""?explode(" ",$J["opclasses"]):array());$I[$jj]["lengths"]=array();}return$I;}function -foreign_keys($R){$I=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, condeferred::int AS deferred, pg_get_constraintdef(oid) AS definition -FROM pg_constraint -WHERE conrelid = ".driver()->tableOid($R)." -AND contype = 'f'::char -ORDER BY conkey, conname")as$J){$J['deferrable']=($J['deferrable']?'':'NOT ').'DEFERRABLE'.($J['deferred']?' INITIALLY DEFERRED':'');if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$A)){$J['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$fg)){$J['ns']=idf_unescape($fg[2]);$J['table']=idf_unescape($fg[4]);}$J['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$J['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$A[4],$fg)?$fg[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$A[4],$fg)?$fg[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function -view($C){return -array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($C).")")));}function -collations(){return -array();}function -information_schema($j,$L=""){return -in_array($L!=""?$L:get_schema(),array("information_schema","pg_catalog","pg_toast"));}function -error(){$I=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$A))$I=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1\2',$A[2]).$A[4];return -nl_br($I);}function -create_database($j,$ub){return -queries("CREATE DATABASE ".idf_escape($j).($ub?" ENCODING ".idf_escape($ub):""));}function -drop_databases(array$i){connection()->close();return -apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function -rename_database($C,$ub){connection()->close();return!!queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function -auto_increment(){return"";}function -alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$b=array();$Ui=array();if($R!=""&&$R!=$C)$Ui[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);$Mj="";foreach($n -as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$bm=$X[5];unset($X[5]);if($m[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":" ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$Ui[]="ALTER TABLE ".table($C)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Nj=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) (STORED|VIRTUAL)~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($Nj).")":"DROP DEFAULT"));if(isset($X[6]))$Mj="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Nj)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$bm!="")$Ui[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($bm!=""?substr($bm,9):"''");}}$b=array_merge($b,$Pd);if($R==""){$P="";if($ki){$qb=(connection()->flavor=='cockroach');$P=" PARTITION BY $ki[partition_by]($ki[partition])";if($ki["partition_by"]=='HASH'){$li=+$ki["partitions"];for($s=0;$s<$li;$s++)$Ui[]="CREATE TABLE ".idf_escape($C."_$s")." PARTITION OF ".idf_escape($C)." FOR VALUES WITH (MODULUS $li, REMAINDER $s)";}else{$Ii="MINVALUE";foreach($ki["partition_names"]as$s=>$X){$Y=$ki["partition_values"][$s];$gi=" VALUES ".($ki["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Ii) TO ($Y)");if($qb)$P -.=($s?",":" (")."\n PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$gi";else$Ui[]="CREATE TABLE ".idf_escape($C."_$X")." PARTITION OF ".idf_escape($C)." FOR$gi";$Ii=$Y;}$P -.=($qb?"\n)":"");}}array_unshift($Ui,"CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($Ui,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Mj)array_unshift($Ui,$Mj);if($_b!==null)$Ui[]="COMMENT ON TABLE ".table($C)." IS ".q($_b);foreach($Ui -as$G){if(!queries($G))return -false;}if($Ga!=""){foreach(fields($C)as$yd=>$m){if($m["auto_increment"])return!!queries("SELECT setval(pg_get_serial_sequence(".q(table($C)).", ".q($yd)."), $Ga)");}}return -true;}function -alter_indexes($R,$b){$h=array();$Hc=array();$Ui=array();foreach($b -as$X){if($X[0]!="INDEX")$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$Hc[]=idf_escape($X[1]);else$Ui[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R).($X[3]?" USING $X[3]":"")." (".implode(", ",$X[2]).")".($X[4]?" WHERE $X[4]":"");}if($h)array_unshift($Ui,"ALTER TABLE ".table($R).implode(",",$h));if($Hc)array_unshift($Ui,"DROP INDEX ".implode(", ",$Hc));foreach($Ui -as$G){if(!queries($G))return -false;}return -true;}function -truncate_tables(array$T){return!!queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function -drop_kinds(array$T){$I=array("MATERIALIZED VIEW"=>array(),"VIEW"=>array(),"TABLE"=>array());foreach($T -as$C=>$S)$I[strtoupper($S["Engine"])][]=idf_escape($S["nspname"]).".".table($C);return -array_filter($I);}function -drop_views(array$jm){return -drop_tables($jm);}function -drop_tables(array$T){$sk=array();foreach($T -as$R)$sk[$R]=table_status1($R);foreach(drop_kinds($sk)as$Df=>$Sg){if(!queries("DROP $Df ".implode(", ",$Sg)))return -false;}return -true;}function -move_tables(array$T,array$jm,$Sk){foreach(array_merge($T,$jm)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Sk)))return -false;}return -true;}function -trigger($C,$R){if($C=="")return -array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($C);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$J)$e[]=$J["event_object_column"];$I=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" -FROM information_schema.triggers'." -$Z -ORDER BY event_manipulation DESC")as$J){if($e&&$J["Event"]=="UPDATE")$J["Event"].=" OF";$J["Of"]=implode(", ",$e);if($I)$J["Event"].=" OR $I[Event]";$I=$J;}return$I;}function -triggers($R){$I=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$J){$tl=trigger($J["trigger_name"],$R);$I[$tl["Trigger"]]=array($tl["Timing"],$tl["Event"]);}return$I;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF",),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function -routine($C,$U){$K=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, * -FROM information_schema.routines -WHERE routine_schema = current_schema() AND specific_name = '.q($C));$I=idx($K,0,array());$I["returns"]=array("type"=>preg_replace('~^_(.*)~','\1[]',"$I[type_udt_name]"));$I["fields"]=get_rows("SELECT COALESCE(parameter_name, ordinal_position::text) AS field, - CASE data_type WHEN 'USER-DEFINED' THEN udt_name WHEN 'ARRAY' THEN substr(udt_name, 2) || '[]' ELSE data_type END AS type, - character_maximum_length AS length, parameter_mode AS inout -FROM information_schema.parameters -WHERE specific_schema = current_schema() AND specific_name = ".q($C)." -ORDER BY ordinal_position");return$I;}function -routines(){return -get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER" -FROM information_schema.routines -WHERE routine_schema = current_schema()'.(connection()->flavor=='cockroach'?'':" -AND substring(specific_name, '[0-9]+\$')::oid NOT IN (SELECT objid FROM pg_catalog.pg_depend WHERE classid = 'pg_proc'::regclass AND deptype = 'e')").' -ORDER BY SPECIFIC_NAME');}function -routine_languages(){return -get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function -routine_id($C,array$J){$I=array();foreach($J["fields"]as$m){$y=$m["length"];$I[]=$m["type"].($y?"($y)":"");}return -idf_escape($C)."(".implode(", ",$I).")";}function -last_id($H){$J=(is_object($H)?$H->fetch_row():array());return($J?$J[0]:0);}function -explain(Db$f,$G){return$f->query("EXPLAIN $G");}function -found_rows(array$S,array$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$ij))return$ij[1];}function -types($rd=false){$qb=connection()->flavor=='cockroach';$Ef=($qb?"'e'":"'b','c','d','e'".(min_version(9.2)?",'r'":""));return -get_key_vals("SELECT t.oid, t.typname -FROM pg_type t -WHERE t.typnamespace = ".driver()->nsOid." -AND t.typtype IN ($Ef)".($qb?" -AND t.typelem = 0":" -AND (t.typrelid = 0 OR (SELECT c.relkind FROM pg_class c WHERE c.oid = t.typrelid) = 'c')"." -AND NOT EXISTS (SELECT 1 FROM pg_type e WHERE e.typarray = t.oid)".($rd?'':" -AND t.oid NOT IN (SELECT objid FROM pg_catalog.pg_depend WHERE classid = 'pg_type'::regclass AND deptype = 'e')"))." -ORDER BY t.typname");}function -type_values($t){$Zc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($Zc?"'".implode("', '",array_map('addslashes',$Zc))."'":"");}function -collation_name($qh){return(min_version(9.1)?"(SELECT collname FROM pg_collation WHERE oid = $qh AND collname != 'default')":"NULL");}function -type_definition($t){$U=first(get_rows("SELECT typtype, typisdefined::int AS defined, typrelid FROM pg_type WHERE oid = $t"));$I=array("kind"=>($U?$U["typtype"]:""),"definition"=>"");if(!$U||!$U["defined"])return$I;switch($I["kind"]){case'e':$em=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");$I["definition"]="AS ENUM (".implode(", ",array_map('Adminer\q',$em)).")";break;case'c':$e=array();foreach(get_rows("SELECT attname, format_type(atttypid, atttypmod) AS full_type, ".collation_name("attcollation")." AS collation -FROM pg_attribute -WHERE attrelid = $U[typrelid] AND attnum > 0 AND NOT attisdropped -ORDER BY attnum")as$J)$e[]=idf_escape($J["attname"])." $J[full_type]".($J["collation"]?" COLLATE ".idf_escape($J["collation"]):"");$I["definition"]="AS (\n\t".implode(",\n\t",$e)."\n)";break;case'd':$Ec=first(get_rows("SELECT format_type(typbasetype, typtypmod) AS base, typnotnull::int AS notnull, typdefault, ".collation_name("typcollation")." AS collation -FROM pg_type WHERE oid = $t"));$I["definition"]="AS $Ec[base]".($Ec["collation"]?" COLLATE ".idf_escape($Ec["collation"]):"").($Ec["typdefault"]!=""?" DEFAULT $Ec[typdefault]":"").($Ec["notnull"]?" NOT NULL":"");foreach(get_rows("SELECT conname, pg_get_constraintdef(oid) AS definition FROM pg_constraint WHERE contypid = $t AND contype != 'n' ORDER BY conname")as$J)$I["definition"].=" CONSTRAINT ".idf_escape($J["conname"])." $J[definition]";break;case'r':$Yi=first(get_rows("SELECT format_type(rngsubtype, NULL) AS subtype, -(SELECT opcname FROM pg_opclass WHERE oid = rngsubopc) AS subtype_opclass, -".collation_name("rngcollation")." AS collation, -NULLIF(rngcanonical, 0)::regproc::text AS canonical, -NULLIF(rngsubdiff, 0)::regproc::text AS subtype_diff".(min_version(14)?", -(SELECT typname FROM pg_type WHERE oid = rngmultitypid) AS multirange_type_name":"")." -FROM pg_range WHERE rngtypid = $t"));$Gh=array();foreach(array("subtype"=>0,"subtype_opclass"=>1,"collation"=>1,"canonical"=>0,"subtype_diff"=>0,"multirange_type_name"=>1)as$x=>$dd){if($Yi[$x]!="")$Gh[]=strtoupper($x)." = ".($dd?idf_escape($Yi[$x]):$Yi[$x]);}$I["definition"]="AS RANGE (".implode(", ",$Gh).")";}return$I;}function -schemas(){return -get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function -get_schema(){return(string)get_val("SELECT current_schema()");}function -set_schema($L,$g=null){$I=connection($g)->query("SET search_path TO ".idf_escape($L));driver()->setUserTypes(types(true));return!!$I;}function -drop_sql(array$T){$I="";foreach(drop_kinds($T)as$Df=>$Sg)$I -.="DROP $Df IF EXISTS ".implode(", ",$Sg).";\n";return($I?"$I\n":"");}function -foreign_keys_sql($R){$I="";$P=table_status1($R);$fh=idf_escape($P['nspname']);$Ld=foreign_keys($R);ksort($Ld);foreach($Ld -as$Kd=>$Jd)$I -.="ALTER TABLE ONLY $fh.".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($Kd)." ".preg_replace('~( REFERENCES )([^(.]+\()~',"\\1$fh.\\2",$Jd["definition"]).";\n";return($I?"$I\n":$I);}function -indexes_sql($R,$Ki=""){$I="";$G="SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($Ki!=""?" AND indexname != ".q($Ki):"");foreach(get_rows($G,null,"-- ")as$J)$I -.="\n\n$J[indexdef];";return$I;}function -create_sql($R,$Ga,$vk){$pj=array();$Pj=array();$Qj=array();$Oj=array();$P=table_status1($R);$fh=idf_escape($P['nspname']);if(is_view($P)){$im=view($R);$h="CREATE ".strtoupper($P["Engine"])." $fh.".idf_escape($R)." AS ".rtrim($im["select"],";").";";return -rtrim($h.indexes_sql($R),';');}$n=fields($R);if(count($P)<2||empty($n))return"";$I="CREATE TABLE $fh.".idf_escape($P['Name'])." (\n ";$Fk=q("$fh.".idf_escape($P['Name']));foreach($n -as$m){$Rj="";if($m['default']=="nextval('$P[Name]_$m[field]_seq')"){$Rj="$fh.".idf_escape("$P[Name]_$m[field]_seq");$m['default']=null;$m['full_type']=preg_replace('~int(eger)?~','serial',$m['full_type']);}$ei=idf_escape($m['field']).' '.$m['full_type'].preg_replace('~(nextval\(\')([^.\']+\')~','\1'.str_replace("'","''",$P['nspname']).'.\2',default_value($m)).($m['null']?"":" NOT NULL");$pj[]=$ei;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$gg)){$Nj=$gg[1];$ik=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Nj)):"SELECT * FROM $Nj"),null,"-- "));$Pj[]=($vk=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $fh.$Nj;\n":"")."CREATE SEQUENCE $fh.$Nj INCREMENT $ik[increment_by] MINVALUE $ik[min_value] MAXVALUE $ik[max_value]"." CACHE $ik[cache_value];";if(get_val("SELECT pg_get_serial_sequence($Fk, ".q($m['field']).")"))$Qj[]="\n\nALTER SEQUENCE $fh.$Nj OWNED BY $fh.".idf_escape($P['Name']).".".idf_escape($m['field']).";";if($Ga)$Oj[]="$fh.$Nj";}elseif($Ga&&$m['auto_increment'])$Oj[]=($Rj?:get_val("SELECT pg_get_serial_sequence($Fk, ".q($m['field']).")"));}if(!empty($Pj))$I=implode("\n\n",$Pj)."\n\n$I";$Ki="";foreach(indexes($R)as$Ve=>$v){if($v['type']=='PRIMARY'){$Ki=$Ve;$pj[]="CONSTRAINT ".idf_escape($Ve)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$Hb=>$Jb)$pj[]="CONSTRAINT ".idf_escape($Hb)." CHECK ($Jb)";$I -.=implode(",\n ",$pj)."\n)";$gi=driver()->partitionsInfo($P['Name']);if($gi)$I -.="\nPARTITION BY $gi[partition_by]($gi[partition])";$I -.="\nWITH (oids = ".($P['Oid']?'true':'false').");";$I -.=implode($Qj);if($P['Comment'])$I -.="\n\nCOMMENT ON TABLE $fh.".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($n -as$yd=>$m){if($m['comment'])$I -.="\n\nCOMMENT ON COLUMN $fh.".idf_escape($P['Name']).".".idf_escape($yd)." IS ".q($m['comment']).";";}$I -.=indexes_sql($R,$Ki);foreach(array_filter($Oj)as$Mj){$ik=first(get_rows("SELECT last_value, is_called::int FROM $Mj",null,"-- "));if($ik['is_called'])$I -.="\n\nDO \$\$ BEGIN PERFORM setval(".q($Mj).", $ik[last_value]); END \$\$;";}return -rtrim($I,';');}function -truncate_sql($R){return"TRUNCATE ".table($R);}function -truncate_all_sql(array$T){return($T?"TRUNCATE ".implode(", ",array_map('Adminer\table',$T)).";\n\n":"");}function -trigger_sql($R){$P=table_status1($R);$I="";foreach(triggers($R)as$sl=>$rl){$tl=trigger($sl,$P['Name']);$I -.="\nCREATE TRIGGER ".idf_escape($tl['Trigger'])." $tl[Timing] $tl[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $tl[Type] $tl[Statement];;\n";}return$I;}function -use_sql($fc,$vk=""){$C=idf_escape($fc);$I="";if(preg_match('~CREATE~',$vk)){if($vk=="DROP+CREATE")$I="DROP DATABASE IF EXISTS $C;\n";$I -.="CREATE DATABASE $C;\n";}return"$I\\connect $C";}function -show_variables(){return -get_rows("SHOW ALL");}function -process_list(){return -get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function -convert_field(array$m){}function -unconvert_field(array$m,$I){return($m["composite"]?"$I::$m[type]":$I);}function -support($wd){return -preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|fast_status|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table'.'|transaction_ddl|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|deferrable').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$wd);}function -kill_process($t){return -queries("SELECT pg_terminate_backend(".number($t).")");}function -connection_id(){return"SELECT pg_backend_pid()";}function -max_connections(){return -get_val("SHOW max_connections");}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract -class -SqliteDb -extends -SqlDb{var$extension="SQLite3";private$link;function -attach($o,$V,$E){$this->link=new -\SQLite3($o);$hm=\SQLite3::version();$this->server_info=$hm["versionString"];return'';}function -query($G,$Cl=false){$H=@$this->link->query($G);$this->error="";if(!$H){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return -false;}elseif($H->numColumns())return -new -Result($H);$this->affected_rows=$this->link->changes();return -true;}function -quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".bin2hex($Q)."'");}}class -Result{var$num_rows;private$result,$offset=0;function -__construct($H){$this->result=$H;}function -fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function -fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function -fetch_field(){$Bl=array(1=>"integer","real","text","blob","null");$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"native_type"=>$Bl[$U],"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}}}elseif(extension_loaded("pdo_sqlite")){abstract -class -SqliteDb -extends -PdoDb{var$extension="PDO_SQLite";function -attach($o,$V,$E){return$this->dsn(DRIVER.":$o","","");}function -quote($Q){return(is_utf8($Q)?parent::quote($Q):"x'".bin2hex($Q)."'");}}}if(class_exists('Adminer\SqliteDb')){class -Db -extends -SqliteDb{function -attach($o,$V,$E){parent::attach($o,$V,$E);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function -select_db($o){$G="ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a";if(is_readable($o)&&$this->query($G))return!self::attach($o,'','');return -false;}}}class -Driver -extends -SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";static$passwords=false;protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static -function -connect($N,$V,$E){return -parent::connect(":memory:","","");}function -__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");if(min_version(3.37,0,$f))$this->types[0]["any"]=0;}function -structuredTypes(){return -array_keys($this->types[0]);}function -quoteBinary($zj){return"x".q(bin2hex($zj));}function -engines(){$I=array("table");if(min_version("3.8.2")){if(min_version(3.37)){$I[]="STRICT";$I[]="STRICT, WITHOUT ROWID";}$I[]="WITHOUT ROWID";}return$I;}function -insertUpdate($R,array$K,array$Ki){$em=array();foreach($K -as$O)$em[]="(".implode(", ",$O).")";return -queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($K))).") VALUES\n".implode(",\n",$em));}function -tableHelp($C,$uf=false){if(preg_match('~^sqlite_(seq|stat.)~',$C,$A))return"fileformat2.html#$A[1]tab";if(preg_match('~^sqlite(_temp)?_(master|schema)$~',$C))return"schematab.html";}function -checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$gg);return -array_combine($gg[2],$gg[2]);}function -allFields(){$I=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$I[$R][]=$m;}return$I;}}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -get_databases($Nd){return -array();}function -limit($G,$Z,$z,$ph=0,$Lj=" "){return" $G$Z".($z?$Lj."LIMIT $z".($ph?" OFFSET $ph":""):"");}function -limit1($R,$G,$Z,$Lj="\n"){return(preg_match('~^INTO~',$G)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($G,$Z,1,0,$Lj):" $G WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Lj."LIMIT 1)");}function -db_collation($j,array$vb){return -get_val("PRAGMA encoding");}function -logged_user(){return -get_current_user();}function -tables_list(){return -get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name LIKE 'sqlite_%'), name");}function -count_tables(array$i){return -array();}function -db_status(){$Zh=get_val("PRAGMA page_size");$Vd=get_val("PRAGMA freelist_count")*$Zh;return -array("Data_length"=>get_val("PRAGMA page_count")*$Zh-$Vd,"Index_length"=>0,"Data_free"=>$Vd,);}function -table_status($C="",$vd=false){$I=array();$K=array();if(!$vd&&$C==""){connection()->query("PRAGMA optimize = 0x10002");$K=get_key_vals("SELECT tbl, MAX(CAST(stat AS integer)) FROM sqlite_stat1 GROUP BY tbl");}foreach(get_rows("SELECT name AS Name, type AS Engine, sql, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($C!=""?"AND name = ".q($C):"ORDER BY (name LIKE 'sqlite_%'), name"))as$J){if($J["Engine"]=="table"){$xk=preg_replace('~.*\)~s','',$J["sql"]);$J["Engine"]=implode(", ",array_filter(array((preg_match('~\bSTRICT\b~i',$xk)?"STRICT":0),(preg_match('~\bWITHOUT\s+ROWID\b~i',$xk)?"WITHOUT ROWID":0),)))?:"table";}unset($J["sql"]);$J["Rows"]=idx($K,$J["Name"],0);$I[$J["Name"]]=$J;}if(!$vd){foreach(get_rows("SELECT * FROM sqlite_sequence".($C!=""?" WHERE name = ".q($C):""),null,"")as$J)$I[$J["name"]]["Auto_increment"]=$J["seq"];}return$I;}function -is_view(array$S){return$S["Engine"]=="view";}function -fk_support(array$S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function -fields($R){$I=array();$jk=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$Pi=array("select"=>1,"where"=>1,"order"=>1);if(!preg_match('~^sqlite(_temp)?_(master|schema)$~',$R))$Pi+=array("insert"=>1,"update"=>1);foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$J){$C=$J["name"];$U=strtolower($J["type"]);$k=$J["dflt_value"];$I[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":(preg_match('~any~i',$U)?"any":"numeric"))))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$k,$A)?str_replace("''","'",$A[1]):($k=="NULL"?null:$k)),"null"=>!$J["notnull"],"privileges"=>$Pi,"primary"=>$J["pk"],);if($J["pk"]&&preg_match('~\bAUTOINCREMENT\b~i',$jk))$I[$C]["auto_increment"]=true;}$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$jk,$gg,PREG_SET_ORDER);foreach($gg -as$A){$C=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($I[$C])$I[$C]["collation"]=trim($A[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$jk,$gg,PREG_SET_ORDER);foreach($gg -as$A){$C=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$I[$C]["default"]=$A[3];$I[$C]["generated"]=strtoupper($A[4]);}return$I;}function -indexes($R,$g=null){$g=connection($g);$I=array();$jk=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$jk,$A)){$I[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$gg,PREG_SET_ORDER);foreach($gg -as$A){$I[""]["columns"][]=idf_unescape($A[2]).$A[4];$I[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$I){foreach(fields($R)as$C=>$m){if($m["primary"])$I[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$ok=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$J){$C=$J["name"];$v=array("type"=>($J["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$g)as$yj){$v["columns"][]=$yj["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$ok[$C],$ij)){preg_match_all('/("[^"]*+")+( DESC)?/',$ij[2],$gg);foreach($gg[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$I[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$I[""]["columns"]||$v["descs"]!=$I[""]["descs"]||!preg_match("~^sqlite_~",$C))$I[$C]=$v;}return$I;}function -foreign_keys($R){$I=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$J){$p=&$I[$J["id"]];if(!$p)$p=$J;$p["source"][]=$J["from"];$p["target"][]=$J["to"];}return$I;}function -view($C){return -array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($C))));}function -collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function -information_schema($j,$L=""){return -false;}function -error(){return -h(connection()->error);}function -check_sqlite_name($C){$rd="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($rd)\$~",$C)){connection()->error=lang(35,str_replace("|",", ",$rd));return -false;}return -true;}function -create_database($j,$ub){if(file_exists($j)){connection()->error=lang(36);return -false;}if(!check_sqlite_name($j))return -false;try{$_=new -Db();$_->attach($j,'','');}catch(\Exception$hd){connection()->error=$hd->getMessage();return -false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return -true;}function -drop_databases(array$i){connection()->attach(":memory:",'','');foreach($i -as$j){if(!check_sqlite_name($j))return -false;if(!@unlink($j)){connection()->error=lang(36);return -false;}}return -true;}function -rename_database($C,$ub){if(!check_sqlite_name($C))return -false;connection()->attach(":memory:",'','');connection()->error=lang(36);return@rename(DB,$C);}function -auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function -alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$Rl=($R==""||$Pd||$Vc);foreach($n -as$m){if($m[0]!=""||!$m[1]||$m[2]){$Rl=true;break;}}$b=array();$Th=array();foreach($n -as$m){if($m[1]){$b[]=($Rl?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$Th[$m[0]]=$m[1][0];}}if(!$Rl){foreach($b -as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return -false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return -false;}elseif(!recreate_table($R,$C,$b,$Th,$Pd,$Ga,array(),"","",$Vc))return -false;if($Ga){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Ga WHERE name = ".q($C));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $Ga)");queries("COMMIT");}return -true;}function -recreate_table($R,$C,array$n,array$Th,array$Pd,$Ga="",$w=array(),$Ic="",$na="",$Vc=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$Th[$x]=idf_escape($x);}}$Li=false;foreach($n -as$m){if($m[6])$Li=true;}$Kc=array();foreach($w -as$x=>$X){if($X[2]=="DROP"){$Kc[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$_f=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$Th[$d])continue -2;$e[]=$Th[$d].($v["descs"][$x]?" DESC":"");}if(!$Kc[$_f]){if($v["type"]!="PRIMARY"||!$Li)$w[]=array($v["type"],$_f,$e);}}foreach($w -as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$Pd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$_f=>$p){foreach($p["source"]as$x=>$d){if(!$Th[$d])continue -2;$p["source"][$x]=idf_unescape($Th[$d]);}if(!isset($Pd[" $_f"]))$Pd[]=" ".format_foreign_key($p);}queries("BEGIN");}$db=array();foreach($n -as$m){if(preg_match('~GENERATED~',$m[3]))unset($Th[array_search($m[0],$Th)]);$db[]=" ".implode($m);}$db=array_merge($db,array_filter($Pd));foreach(driver()->checkConstraints($R)as$hb){if($hb!=$Ic)$db[]=" CHECK ($hb)";}if($na)$db[]=" CHECK ($na)";$Wk=($R!=""&&$R==$C?"adminer_$C":$C);if(!$Vc&&$R!="")$Vc=idx(table_status1($R),"Engine");if(!queries("CREATE TABLE ".table($Wk)." (\n".implode(",\n",$db)."\n)".($Vc!="table"&&in_array($Vc,driver()->engines())?" $Vc":"")))return -false;if($R!=""){if($Th&&!queries("INSERT INTO ".table($Wk)." (".implode(", ",$Th).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($Th)))." FROM ".table($R)))return -false;$xl=array();foreach(triggers($R)as$vl=>$dl){$tl=trigger($vl,$R);$xl[]="CREATE TRIGGER ".idf_escape($vl)." ".implode(" ",$dl)." ON ".table($C)."\n$tl[Statement]";}$Ga=$Ga?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$C&&!queries("ALTER TABLE ".table($Wk)." RENAME TO ".table($C)))||!alter_indexes($C,$w))return -false;if($Ga)queries("UPDATE sqlite_sequence SET seq = $Ga WHERE name = ".q($C));foreach($xl -as$tl){if(!queries($tl))return -false;}queries("COMMIT");}return -true;}function -index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $e";}function -alter_indexes($R,$b){foreach($b -as$Ki){if($Ki[0]=="PRIMARY")return -recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return -false;}return -true;}function -truncate_tables(array$T){return -apply_queries("DELETE FROM",$T);}function -drop_views(array$jm){return -apply_queries("DROP VIEW",$jm);}function -drop_tables(array$T){return -apply_queries("DROP TABLE",$T);}function -move_tables(array$T,array$jm,$Sk){return -false;}function -trigger($C,$R){if($C=="")return -array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$wl=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$wl["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$A);$lh=$A[3];return -array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($lh?" OF":""),"Of"=>idf_unescape($lh),"Trigger"=>$C,"Statement"=>$A[4],);}function -triggers($R){$I=array();$wl=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$J){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$wl["Timing"]).')\s*(.*?)\s+ON\b~i',$J["sql"],$A);$I[$J["name"]]=array($A[1],$A[2]);}return$I;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function -last_id($H){return -get_val("SELECT LAST_INSERT_ROWID()");}function -explain(Db$f,$G){return$f->query("EXPLAIN QUERY PLAN $G");}function -found_rows(array$S,array$Z){}function -types($rd=false){return -array();}function -create_sql($R,$Ga,$vk){$I=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$I -.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$I;}function -truncate_sql($R){return"DELETE FROM ".table($R);}function -use_sql($fc,$vk=""){return"";}function -trigger_sql($R){return -implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function -show_variables(){$I=array();foreach(get_rows("PRAGMA pragma_list")as$J){$C=$J["name"];if($C!="pragma_list"&&$C!="compile_options"){$I[$C]=array($C,'');foreach(get_rows("PRAGMA $C")as$J)$I[$C][1].=implode(", ",$J)."\n";}}return$I;}function -show_status(){$I=array();foreach(get_vals("PRAGMA compile_options")as$Fh)$I[]=explode("=",$Fh,2)+array('','');return$I;}function -convert_field(array$m){}function -unconvert_field(array$m,$I){return$I;}function -support($wd){return -preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|transaction_ddl|trigger|variables|view|view_trigger)$~',$wd);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class -Db -extends -SqlDb{var$extension="sqlsrv";private$link,$result,$warnings;private -function -get_error(){$this->error="";foreach(sqlsrv_errors()as$l){$this->errno=$l["code"];$this->error -.="$l[message]\n";}$this->error=rtrim($this->error);}function -attach($N,$V,$E){sqlsrv_configure("WarningsReturnAsErrors",0);$Ib=array("UID"=>$V,"PWD"=>$E,"CharacterSet"=>"UTF-8");$pk=adminer()->connectSsl();if(isset($pk["Encrypt"]))$Ib["Encrypt"]=$pk["Encrypt"];if(isset($pk["TrustServerCertificate"]))$Ib["TrustServerCertificate"]=$pk["TrustServerCertificate"];$j=adminer()->database();if($j!="")$Ib["Database"]=$j;list($Ee,$_i)=host_port($N);$this->link=@sqlsrv_connect($Ee.($_i?",$_i":""),$Ib);if($this->link){$af=sqlsrv_server_info($this->link);$this->server_info=$af['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function -quote($Q){$Dl=strlen($Q)!=strlen(utf8_decode($Q));return($Dl?"N":"")."'".str_replace("'","''",$Q)."'";}function -select_db($fc){return$this->query(use_sql($fc));}function -query($G,$Cl=false){$H=sqlsrv_query($this->link,$G);$this->error="";if(!$H){$this->get_error();return -false;}return$this->store_result($H);}function -multi_query($G){$this->result=sqlsrv_query($this->link,$G);$this->error="";if(!$this->result){$this->get_error();return -false;}return -true;}function -store_result($H=null){if(!$H)$H=$this->result;if(!$H)return -false;$this->warnings=sqlsrv_errors(SQLSRV_ERR_WARNINGS);if(sqlsrv_field_metadata($H))return -new -Result($H);$this->affected_rows=sqlsrv_rows_affected($H);return -true;}function -next_result(){if(!$this->result)return -false;$I=sqlsrv_next_result($this->result);if($I===false){$this->get_error();$this->result=null;return -true;}return!!$I;}function -warnings(){$I=array();foreach((array)$this->warnings -as$mm)$I[]=$mm["message"];return$I;}}class -Result{var$num_rows;private$result,$offset=0,$fields;function -__construct($H){$this->result=$H;}private -function -convert($J){foreach((array)$J -as$x=>$X){if(is_a($X,'DateTime'))$J[$x]=$X->format("Y-m-d H:i:s");}return$J;}function -fetch_assoc(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_ASSOC));}function -fetch_row(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_NUMERIC));}function -fetch_field(){if(!$this->fields)$this->fields=sqlsrv_field_metadata($this->result);$m=$this->fields[$this->offset++];$I=new -\stdClass;$I->name=$m["Name"];$I->type=($m["Type"]==1?254:15);$I->charsetnr=(in_array($m["Type"],array(-2,-3,-4))?63:0);return$I;}function -seek($ph){for($s=0;$s<$ph;$s++)sqlsrv_fetch($this->result);}}function -last_id($H){return(string)get_val("SELECT SCOPE_IDENTITY()");}function -explain(Db$f,$G){$f->query("SET SHOWPLAN_ALL ON");$I=$f->query($G);$f->query("SET SHOWPLAN_ALL OFF");return$I;}}else{abstract -class -MssqlDb -extends -PdoDb{function -select_db($fc){return$this->query(use_sql($fc));}function -lastInsertId(){return$this->pdo->lastInsertId();}function -warnings(){$H=$this->multi;if(!is_object($H))return -array();$l=$H->errorInfo();return -array((string)$l[2]);}}function -last_id($H){return -connection()->lastInsertId();}function -explain(Db$f,$G){}if(extension_loaded("pdo_sqlsrv")){class -Db -extends -MssqlDb{var$extension="PDO_SQLSRV";function -attach($N,$V,$E){list($Ee,$_i)=host_port($N);$Mc="sqlsrv:Server=$Ee".($_i?",$_i":"");$pk=adminer()->connectSsl();foreach(array("Encrypt","TrustServerCertificate")as$x){if(isset($pk[$x]))$Mc -.=";$x=".($pk[$x]?1:0);}return$this->dsn($Mc,$V,$E,array(\PDO::SQLSRV_ATTR_DIRECT_QUERY=>true));}}}elseif(extension_loaded("pdo_dblib")){class -Db -extends -MssqlDb{var$extension="PDO_DBLIB";function -attach($N,$V,$E){list($Ee,$_i)=host_port($N);return$this->dsn("dblib:charset=utf8;host=$Ee".($_i?(is_numeric($_i)?";port=":";unix_socket=").$_i:""),$V,$E);}}}}class -Driver -extends -SqlDriver{static$extensions=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$jush="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static -function -connect($N,$V,$E){if($N=="")$N="localhost:1433";return -parent::connect($N,$V,$E);}function -__construct(Db$f){parent::__construct($f);$this->types=array(lang(28)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(29)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(30)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(31)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function -insertUpdate($R,array$K,array$Ki){$n=fields($R);$Ll=array();$Z=array();$O=reset($K);$e="c".implode(", c",range(1,count($O)));$Za=0;$gf=array();foreach($O -as$x=>$X){$Za++;$C=idf_unescape($x);if(!$n[$C]["auto_increment"])$gf[$x]="c$Za";if(isset($Ki[$C]))$Z[]="$x = c$Za";else$Ll[]="$x = c$Za";}$em=array();foreach($K -as$O)$em[]="(".implode(", ",$O).")";if($Z){$Je=queries("SET IDENTITY_INSERT ".table($R)." ON");$I=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$em)."\n) AS source ($e) ON ".implode(" AND ",$Z).($Ll?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$Ll):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Je?$O:$gf)).") VALUES (".($Je?$e:implode(", ",$gf)).");");if($Je)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$I=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$em));return$I;}function -begin(){return -queries("BEGIN TRANSACTION");}function -convertSearch($u,array$X,array$m){return(preg_match('~^(bit|n?text|xml|uniqueidentifier|sql_variant|hierarchyid|geography|geometry)$~',$m["type"])?"CAST($u AS nvarchar(max))":$u);}function -quoteBinary($zj){return"0x".bin2hex($zj);}function -warnings(){$I=array();foreach($this->conn->warnings()as$B){$B=trim(preg_replace('~^(\[[^]]+])+~','',$B));if($B!="")$I[]=$B;}return -nl_br(h(implode("\n",$I)));}function -tableHelp($C,$uf=false){$Wf=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Wf[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($C))."-transact-sql";}}function -idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function -table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function -get_databases($Nd){return -get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function -limit($G,$Z,$z,$ph=0,$Lj=" "){return($z?" TOP (".($z+$ph).")":"")." $G$Z";}function -limit1($R,$G,$Z,$Lj="\n"){return -limit($G,$Z,1,0,$Lj);}function -db_collation($j,array$vb){return -get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function -logged_user(){return -get_val("SELECT SUSER_NAME()");}function -tables_list(){return -get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function -count_tables(array$i){$I=array();foreach($i -as$j){connection()->select_db($j);$I[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$I;}function -table_status($C="",$vd=false){$I=array();$ak=array();foreach(get_rows("SELECT object_id, SUM(CASE WHEN index_id < 2 THEN row_count ELSE 0 END) AS [Rows], -SUM(CASE WHEN index_id < 2 THEN used_page_count ELSE 0 END) * 8192 AS Data_length, -SUM(CASE WHEN index_id > 1 THEN used_page_count ELSE 0 END) * 8192 AS Index_length, -SUM(reserved_page_count - used_page_count) * 8192 AS Data_free -FROM sys.dm_db_partition_stats -GROUP BY object_id",null,"")as$J){$kh=$J["object_id"];unset($J["object_id"]);$ak[$kh]=$J;}foreach(get_rows("SELECT ao.object_id, ao.name AS Name, ao.type_desc AS Engine, - (SELECT cast(value as varchar(max)) FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment -FROM sys.all_objects AS ao -WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$J){$kh=$J["object_id"];unset($J["object_id"]);$I[$J["Name"]]=$J+idx($ak,$kh,array());}return$I;}function -is_view(array$S){return$S["Engine"]=="VIEW";}function -fk_support(array$S){return -true;}function -fields($R){$Bb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$I=array();$Dk=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($R));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, - t.name type, d.definition [default], d.name default_constraint, i.is_primary_key -FROM sys.all_columns c -JOIN sys.types t ON c.user_type_id = t.user_type_id -LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id -LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id -LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id -WHERE c.object_id = ".q($Dk))as$J){$U=$J["type"];$y=(preg_match("~char|binary~",$U)?intval($J["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$J[precision],$J[scale]":""));$I[$J["name"]]=array("field"=>$J["name"],"full_type"=>$U.($y?"($y)":""),"type"=>$U,"length"=>$y,"default"=>(preg_match("~^\('(.*)'\)$~",$J["default"],$A)?str_replace("''","'",$A[1]):$J["default"]),"default_constraint"=>$J["default_constraint"],"null"=>$J["is_nullable"],"auto_increment"=>$J["is_identity"],"collation"=>$J["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$J["is_primary_key"],"comment"=>$Bb[$J["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Dk))as$J){$I[$J["name"]]["generated"]=($J["is_persisted"]?"PERSISTED":"VIRTUAL");$I[$J["name"]]["default"]=$J["definition"];}return$I;}function -indexes($R,$g=null){$I=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key -FROM sys.indexes i -INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id -INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id -WHERE OBJECT_NAME(i.object_id) = ".q($R),$g)as$J){$C=$J["name"];$I[$C]["type"]=($J["is_primary_key"]?"PRIMARY":($J["is_unique"]?"UNIQUE":"INDEX"));$I[$C]["lengths"]=array();$I[$C]["columns"][$J["key_ordinal"]]=$J["column_name"];$I[$C]["descs"][$J["key_ordinal"]]=($J["is_descending_key"]?'1':null);}return$I;}function -view($C){return -array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function -collations(){$I=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$ub)$I[preg_replace('~_.*~','',$ub)][]=$ub;return$I;}function -information_schema($j,$L=""){return -in_array($L!=""?$L:get_schema(),array("INFORMATION_SCHEMA","sys"));}function -error(){return -nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function -create_database($j,$ub){return -queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$ub)?" COLLATE $ub":""));}function -drop_databases(array$i){return!!queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function -rename_database($C,$ub){if(preg_match('~^[a-z0-9_]+$~i',$ub))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $ub");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return -true;}function -auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function -alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$b=array();$Bb=array();$Ph=fields($R);foreach($n -as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$Bb[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($Pd[$X[0]],16+strlen($X[0])):"");else{$k=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$Oh=$Ph[$m[0]];if(default_value($Oh)!=$k){if($Oh["default"]!==null)$b["DROP"][]=" ".idf_escape($Oh["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R==""){$ma=(array)$b["ADD"];foreach($Pd -as$x=>$X){if(!is_string($x))$ma[]="\n$X";}return -queries("CREATE TABLE ".table($C)." (".implode(",",$ma)."\n)");}if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($Pd)$b[""]=$Pd;foreach($b -as$x=>$X){if(!queries("ALTER TABLE ".table($C)." $x".implode(",",$X)))return -false;}foreach($Bb -as$x=>$X){$_b=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty -@name = N'MS_Description', -@value = $_b, -@level0type = N'Schema', -@level0name = ".q(get_schema()).", -@level1type = N'Table', -@level1name = ".q($C).", -@level2type = N'Column', -@level2name = ".q($x));}return -true;}function -alter_indexes($R,$b){$v=array();$Hc=array();foreach($b -as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$Hc[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return -false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$Hc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$Hc)));}function -found_rows(array$S,array$Z){}function -foreign_keys($R){$I=array();$zh=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");$L=get_schema();foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q($L))as$J){$p=&$I[$J["FK_NAME"]];$p["db"]=($J["PKTABLE_QUALIFIER"]==DB?"":$J["PKTABLE_QUALIFIER"]);$p["ns"]=($J["PKTABLE_OWNER"]==$L?"":$J["PKTABLE_OWNER"]);$p["table"]=$J["PKTABLE_NAME"];$p["on_update"]=$zh[$J["UPDATE_RULE"]];$p["on_delete"]=$zh[$J["DELETE_RULE"]];$p["source"][]=$J["FKCOLUMN_NAME"];$p["target"][]=$J["PKCOLUMN_NAME"];}return$I;}function -truncate_tables(array$T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views(array$jm){return -queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$jm)));}function -drop_tables(array$T){return -queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function -move_tables(array$T,array$jm,$Sk){return -apply_queries("ALTER SCHEMA ".idf_escape($Sk)." TRANSFER",array_merge($T,$jm));}function -trigger($C,$R){if($C=="")return -array();$K=get_rows("SELECT s.name [Trigger], -CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' - WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' - WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event], -CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing], -c.text -FROM sysobjects s -JOIN syscomments c ON s.id = c.id -WHERE s.xtype = 'TR' AND s.name = ".q($C));$I=reset($K);if($I)$I["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$I["text"]);return$I;}function -triggers($R){$I=array();foreach(get_rows("SELECT sys1.name, -CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' - WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' - WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event], -CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing] -FROM sysobjects sys1 -JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id -WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$J)$I[$J["name"]]=array($J["Timing"],$J["Event"]);return$I;}function -trigger_options(){return -array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function -schemas(){return -get_vals("SELECT name FROM sys.schemas");}function -get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return -get_val("SELECT SCHEMA_NAME()");}function -set_schema($L,$g=null){$_GET["ns"]=$L;return -true;}function -create_sql($R,$Ga,$vk){if(is_view(table_status1($R))){$im=view($R);return"CREATE VIEW ".table($R)." AS $im[select]";}$n=array();$Ki=false;foreach(fields($R)as$C=>$m){$X=process_field($m,$m);if($X[6])$Ki=true;$n[]=implode("",$X);}foreach(indexes($R)as$C=>$v){if(!$Ki||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$C=idf_escape($C);$n[]=($v["type"]=="INDEX"?"INDEX $C":"CONSTRAINT $C ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$C=>$hb)$n[]="CONSTRAINT ".idf_escape($C)." CHECK ($hb)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function -foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$Pd)$n[]=ltrim(format_foreign_key($Pd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function -truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function -use_sql($fc,$vk=""){return"USE ".idf_escape($fc);}function -trigger_sql($R){$I="";foreach(triggers($R)as$C=>$tl)$I -.=create_trigger(" ON ".table($R),trigger($C,$R)).";";return$I;}function -convert_field(array$m){}function -unconvert_field(array$m,$I){return$I;}function -support($wd){return -preg_match('~^(check|comment|columns|database|drop_col|dump|fast_status|indexes|descidx|scheme|sql|table|transaction_ddl|trigger|view|view_trigger)$~',$wd);}}add_driver("oracle","Oracle beta");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class -Db -extends -SqlDb{var$extension="oci8";var$_current_db;private$link;function -_error($ad,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function -attach($N,$V,$E){$this->link=@oci_new_connect($V,$E,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$l=oci_error();return($l?$l["message"]:lang(25));}function -quote($Q){return"'".str_replace("'","''",$Q)."'";}function -select_db($fc){$this->_current_db=$fc;return -true;}function -query($G,$Cl=false){$H=oci_parse($this->link,$G);$this->error="";if(!$H){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["message"];return -false;}set_error_handler(array($this,'_error'));$I=@oci_execute($H);restore_error_handler();if($I){if(oci_num_fields($H))return -new -Result($H);$this->affected_rows=oci_num_rows($H);oci_free_statement($H);}return$I;}function -timeout($Lg){return(function_exists('oci_set_call_timeout')?oci_set_call_timeout($this->link,$Lg):false);}}class -Result{var$num_rows;private$result,$offset=1;function -__construct($H){$this->result=$H;}private -function -convert($J){foreach((array)$J -as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$J[$x]=$X->load();}return$J;}function -fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function -fetch_row(){return$this->convert(oci_fetch_row($this->result));}function -fetch_field(){$d=$this->offset++;$I=new -\stdClass;$I->name=oci_field_name($this->result,$d);$U=oci_field_type($this->result,$d);$I->native_type=$U;$I->type=$U;$I->charsetnr=(preg_match("~raw|blob|bfile~",$U)?63:0);return$I;}}}elseif(extension_loaded("pdo_oci")){class -Db -extends -PdoDb{var$extension="PDO_OCI";var$_current_db;function -attach($N,$V,$E){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$E);}function -select_db($fc){$this->_current_db=$fc;return -true;}}}class -Driver -extends -SqlDriver{static$extensions=array("OCI8","PDO_OCI");static$jush="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function -__construct(Db$f){parent::__construct($f);$this->types=array(lang(28)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(29)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(30)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(31)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function -begin(){return -true;}function -convertSearch($u,array$X,array$m){$U=$m["type"];$si=strpos($X["op"],"LIKE")!==false;if($U=="xmltype")return"XMLSERIALIZE(CONTENT $u AS VARCHAR2(4000))";if($U=="json")return"JSON_SERIALIZE($u)";if(preg_match('~^(date|timestamp)~',$U))return"TO_CHAR($u, 'YYYY-MM-DD HH24:MI:SS')";if(preg_match('~char~',$U)||(preg_match('~clob~',$U)&&$si))return$u;return(!$si&&preg_match(number_type(),$U)?$u:"TO_CHAR($u)");}function -quoteBinary($zj){return"HEXTORAW(".q(bin2hex($zj)).")";}function -hasCStyleEscapes(){return -true;}}function -idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function -table($u){return -idf_escape($u);}function -get_databases($Nd){return -get_vals("SELECT DISTINCT tablespace_name FROM ( -SELECT tablespace_name FROM user_tablespaces -UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL -) -ORDER BY 1");}function -limit($G,$Z,$z,$ph=0,$Lj=" "){return($ph?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $G$Z) t WHERE rownum <= ".($z+$ph).") WHERE rnum > $ph":($z?" * FROM (SELECT $G$Z) WHERE rownum <= ".($z+$ph):" $G$Z"));}function -limit1($R,$G,$Z,$Lj="\n"){return" $G$Z";}function -db_collation($j,array$vb){return -get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function -logged_user(){return -get_val("SELECT USER FROM DUAL");}function -get_current_db(){$j=connection()->_current_db?:DB;connection()->_current_db=null;return$j;}function -where_owner($Gi,$Xh="owner"){if(!$_GET["ns"])return'';return"$Gi$Xh = sys_context('USERENV', 'CURRENT_SCHEMA')";}function -views_table($e){$Xh=where_owner('');return"(SELECT $e FROM all_views WHERE ".($Xh?:"rownum < 0").")";}function -tables_list(){$im=views_table("view_name");$Xh=where_owner(" AND ");return -get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$Xh -UNION SELECT view_name, 'view' FROM $im -ORDER BY 1");}function -count_tables(array$i){$I=array();foreach($i -as$j)$I[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$I;}function -table_status($C="",$vd=false){$I=array();$Dj=q($C);$j=get_current_db();$im=views_table("view_name");$Xh=where_owner(" AND ","t.owner");foreach(get_rows('SELECT t.table_name "Name", \'table\' "Engine", s.bytes "Data_length", i.bytes "Index_length", t.num_rows "Rows" -FROM all_tables t -LEFT JOIN (SELECT segment_name, SUM(bytes) bytes FROM user_segments WHERE segment_type LIKE \'TABLE%\' GROUP BY segment_name) s ON s.segment_name = t.table_name -LEFT JOIN (SELECT i.table_name, SUM(s.bytes) bytes FROM user_indexes i - JOIN user_segments s ON s.segment_name = i.index_name AND s.segment_type LIKE \'INDEX%\' GROUP BY i.table_name) i ON i.table_name = t.table_name -WHERE t.tablespace_name = '.q($j).$Xh.($C!=""?" AND t.table_name = $Dj":"")." -UNION SELECT view_name, 'view', 0, 0, 0 FROM $im".($C!=""?" WHERE view_name = $Dj":"")." -ORDER BY 1")as$J)$I[$J["Name"]]=$J;return$I;}function -is_view(array$S){return$S["Engine"]=="view";}function -fk_support(array$S){return -true;}function -fields($R){$I=array();$Xh=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$Xh ORDER BY column_id")as$J){$U=$J["DATA_TYPE"];$y="$J[DATA_PRECISION],$J[DATA_SCALE]";if($y==",")$y=$J["CHAR_COL_DECL_LENGTH"];$Pi=array("insert"=>1,"select"=>1,"update"=>1,"order"=>1);if($J["DATA_TYPE_OWNER"]==""||$U=="XMLTYPE")$Pi["where"]=1;$I[$J["COLUMN_NAME"]]=array("field"=>$J["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"default"=>$J["DATA_DEFAULT"],"null"=>($J["NULLABLE"]=="Y"),"privileges"=>$Pi,);}return$I;}function -indexes($R,$g=null){$I=array();$Xh=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default -FROM all_ind_columns aic -LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner -LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner -WHERE aic.table_name = ".q($R)."$Xh -ORDER BY ac.constraint_type, aic.column_position",$g)as$J){$Ve=$J["INDEX_NAME"];$yb=$J["DATA_DEFAULT"];$yb=($yb?trim($yb,'"'):$J["COLUMN_NAME"]);$I[$Ve]["type"]=($J["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($J["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$I[$Ve]["columns"][]=$yb;$I[$Ve]["lengths"][]=($J["CHAR_LENGTH"]&&$J["CHAR_LENGTH"]!=$J["COLUMN_LENGTH"]?$J["CHAR_LENGTH"]:null);$I[$Ve]["descs"][]=($J["DESCEND"]&&$J["DESCEND"]=="DESC"?'1':null);}return$I;}function -view($C){$im=views_table("view_name, text");$K=get_rows('SELECT text "select" FROM '.$im.' WHERE view_name = '.q($C));return -reset($K);}function -collations(){return -array();}function -information_schema($j,$L=""){return($L!=""?$L:get_schema())=="INFORMATION_SCHEMA";}function -error(){return -h(connection()->error);}function -explain(Db$f,$G){$f->query("EXPLAIN PLAN FOR $G");return$f->query("SELECT * FROM plan_table");}function -found_rows(array$S,array$Z){}function -auto_increment(){return"";}function -alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$b=$Hc=array();$Ph=($R?fields($R):array());foreach($n -as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$Oh=$Ph[$m[0]];if($X&&$Oh){$rh=process_field($Oh,$Oh);if($X[2]==$rh[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$Hc[]=idf_escape($m[0]);}if($R=="")return -queries("CREATE TABLE ".table($C)." (\n".implode(",\n",array_merge($b,$Pd))."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$Hc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$Hc).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function -alter_indexes($R,$b){$Hc=array();$Ui=array();foreach($b -as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($Ui,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$Hc[]=idf_escape($X[1]);else$Ui[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($Hc)array_unshift($Ui,"DROP INDEX ".implode(", ",$Hc));foreach($Ui -as$G){if(!queries($G))return -false;}return -true;}function -foreign_keys($R){$I=array();$G="SELECT c_list.CONSTRAINT_NAME as NAME, -c_src.COLUMN_NAME as SRC_COLUMN, -c_dest.OWNER as DEST_DB, -c_dest.TABLE_NAME as DEST_TABLE, -c_dest.COLUMN_NAME as DEST_COLUMN, -c_list.DELETE_RULE as ON_DELETE -FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest -WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME -AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME -AND c_list.CONSTRAINT_TYPE = 'R' -AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($G)as$J)$I[$J['NAME']]=array("db"=>$J['DEST_DB'],"table"=>$J['DEST_TABLE'],"source"=>array($J['SRC_COLUMN']),"target"=>array($J['DEST_COLUMN']),"on_delete"=>$J['ON_DELETE'],"on_update"=>null,);return$I;}function -truncate_tables(array$T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views(array$jm){return -apply_queries("DROP VIEW",$jm);}function -drop_tables(array$T){return -apply_queries("DROP TABLE",$T);}function -last_id($H){return"0";}function -schemas(){$I=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($I?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function -get_schema(){return -get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function -set_schema($L,$g=null){return!!connection($g)->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($L));}function -show_variables(){return -get_rows('SELECT name, display_value FROM v$parameter');}function -show_status(){$I=array();$K=get_rows('SELECT * FROM v$instance');foreach(reset($K)as$x=>$X)$I[]=array($x,$X);return$I;}function -process_list(){return -get_rows('SELECT - sess.process AS "process", - sess.username AS "user", - sess.schemaname AS "schema", - sess.status AS "status", - sess.wait_class AS "wait_class", - sess.seconds_in_wait AS "seconds_in_wait", - sql.sql_text AS "sql_text", - sess.machine AS "machine", - sess.port AS "port" -FROM v$session sess LEFT OUTER JOIN v$sql sql -ON sql.sql_id = sess.sql_id -WHERE sess.type = \'USER\' -ORDER BY PROCESS -');}function -convert_field(array$m){}function -unconvert_field(array$m,$I){return$I;}function -support($wd){return -preg_match('~^(columns|database|drop_col|fast_status|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$wd);}}class -Adminer{static$instance;var$error='';function -name(){return"Adminer";}function -credentials(){return -array(SERVER,$_GET["username"],get_password());}function -connectSsl(){}function -permanentLogin($h=false){return -password_file($h);}function -bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function -serverName($N){return -h($N);}function -database(){return -DB;}function -databases($Nd=true){return -get_databases($Nd);}function -pluginsLinks(){}function -operators(){return -driver()->operators;}function -schemas(){$I=schemas();if($_GET["ns"]!=""&&!in_array($_GET["ns"],$I))array_unshift($I,$_GET["ns"]);return$I;}function -queryTimeout(){return -2;}function -afterConnect(){}function -headers(){}function -csp(array$Wb){return$Wb;}function -verifyVersion(){return -true;}function -head($bc=null){return -true;}function -bodyClass(){echo" adminer";}function -css(){$I=array();foreach(array("","-dark")as$Ig){$o="adminer$Ig.css";if(file_exists($o)){$Bd=file_get_contents($o);$I["$o?v=".crc32($Bd)]=($Ig?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$Bd)?'':'light'));}}return$I;}function -loginForm(){echo"\n",adminer()->loginFormField('driver','
    '.lang(37).'',html_select("auth[driver]",SqlDriver::$drivers,DRIVER,on('change','loginDriver'))),adminer()->loginFormField('server','
    '.lang(38).'',""),adminer()->loginFormField('username','
    '.lang(40).'',''.script("fire(qs('#username').form['auth[driver]'], 'change');")),adminer()->loginFormField('password','
    '.lang(41).'',''),adminer()->loginFormField('db','
    '.lang(42).'',''),"
    \n","

    \n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(44))."\n";}function -loginFormField($C,$ye,$Y){return$ye.$Y."\n";}function -login($bg,$E){if($E=="")return -lang(45).require_password_link(null);if(!Driver::$passwords)return -lang(46).require_password_link($E);if(!password_required())return -lang(47).require_password_link($E);return -true;}function -tableName(array$Ck){return -h($Ck["Name"]);}function -fieldName(array$m,$Ih=0){$U=$m["full_type"].($m["null"]?" NULL":"");$_b=$m["comment"];return''.h($m["field"]).'';}function -commentValue($U,$_b){if($_b==""||$U=='TABLE'||$U=='COLUMN')return -h($_b);$Fi=function($zj){return -preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($zj))));};$R='(\+--[-+]+\+\n)';$J='(\| .* \|\n)';return"

    \n".preg_replace_callback("~^$R?$J$R?($J*)$R?~m",function($A)use($Fi){$Id=$Fi($A[2]);return"\n".($A[1]?"$Id\n":$Id).$Fi($A[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($_b))))."
    \n";}function -commentInput($U,$c,$_b){$Y=h($_b);return(preg_match('~\n~',$Y)?"\n$Y":"");}function -selectLinks(array$Ck,$O=""){$C=$Ck["Name"];echo'\n";}return"

    ".h(str_replace("\n"," ",$G))." (".format_time($qk).")".(support("sql")?" ".lang(13)."":"").$I;}function -sqlCommandQuery($G){return -shorten_utf8(trim($G),1000);}function -sqlPrintAfter(){}function -rowDescription($R){return"";}function -rowDescriptions(array$K,array$Qd){return$K;}function -selectLink($X,array$m){}function -selectVal($X,$_,array$m,$Sh){$I=($X===null?"NULL":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"$X":(preg_match('~^jsonb?$~',$m["full_type"])?"$X":$X)));if(is_blob($m)&&!is_utf8($X))$I="".lang(54,strlen($Sh))."";return($_?"$I":$I);}function -editVal($X,array$m){return$X;}function -config(){return -array();}function -tableStructurePrint(array$n,$Ck=null){echo"

    \n","\n","\n";$uk=driver()->structuredTypes();foreach($n -as$m){echo"
    ".lang(55)."".lang(56).(support("comment")?"".lang(57):"")."
    ".h($m["field"]);$U=h($m["full_type"]);$ub=h($m["collation"]);echo"".(in_array($U,(array)$uk[lang(7)])?"$U":$U.($ub&&isset($Ck["Collation"])&&$ub!=$Ck["Collation"]?" $ub":""))."",($m["null"]?" NULL":""),($m["auto_increment"]?" ".lang(58)."":""),(isset($m["default"])?" [".($m["generated"]?"".shorten_utf8(preg_replace('~\s+~',' ',ltrim($m["default"])),80,""):h($m["default"]))."]":""),(support("comment")?"".adminer()->commentValue('COLUMN',$m["comment"]):""),"\n";}echo"
    \n","
    \n";}function -tableIndexesPrint(array$w,array$Ck){$fi=false;foreach($w -as$C=>$v)$fi|=!!$v["partial"];echo"\n";$kc=first(driver()->indexAlgorithms($Ck));foreach($w -as$C=>$v){ksort($v["columns"]);$Mi=array();foreach($v["columns"]as$x=>$X)$Mi[]="".h($X)."".($v["lengths"][$x]?"(".h($v["lengths"][$x]).")":"").($v["descs"][$x]?" DESC":"");echo"","
    ".h($v["type"]).($kc&&$v['algorithm']!=$kc?" (".h($v['algorithm']).")":""),"".implode(", ",$Mi);if($fi)echo"".($v['partial']?"WHERE ".h($v['partial']):"");echo"\n";}echo"
    \n";}function -selectColumnsPrint(array$M,array$e){print_fieldset("select",lang(60),$M);$s=0;$M[""]=array();foreach($M -as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]' data-default=''".on('change',($x!==""?'selectFieldChange':'selectAddRow')),$e,$X["col"]);echo"
    ".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array(lang(61)=>driver()->functions,lang(62)=>driver()->grouping)),$X["fun"]," data-default=''".on('change',($x!==""?'helpClose':'selectFunAddRow')).on_help_value(' (.*)|$','($1)'))."($d)":$d)."
    \n";$s++;}echo"
    \n";}function -selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",lang(63),$Z);foreach($w -as$s=>$v){if($v["type"]=="FULLTEXT")echo"
    (".implode(", ",array_map('Adminer\h',$v["columns"])).") AGAINST"," ",(JUSH=='sql'?checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"):''),"
    \n";}$Dh=adminer()->operators();foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$Dh)))echo"
    ".select_input(" name='where[$s][col]' data-default=''".on('change',($X?'selectFieldChange':'selectAddRow')),$e,$X["col"],"(".lang(64).")"),html_select("where[$s][op]",$Dh,$X["op"]," data-default='".h(first($Dh))."'".on('change','selectFirstChange')),"","
    \n";}echo"\n";}function -selectOrderPrint(array$Ih,array$e,array$w){print_fieldset("sort",lang(65),$Ih);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"
    ".select_input(" name='order[$s]' data-default=''".on('change','selectFieldChange'),$e,$X),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),lang(66))."
    \n";$s++;}}echo"
    ".select_input(" name='order[$s]' data-default=''".on('change','selectAddRow'),$e),checkbox("desc[$s]",1,false,lang(66))."
    \n","\n";}function -selectLimitPrint($z){echo"
    ".lang(67)."
    ","","
    \n";}function -selectLengthPrint($Zk){echo"
    ".lang(68)."
    ","","
    \n";}function -selectActionPrint(array$w){echo"
    ".lang(69)."
    ",""," ","\n","const indexColumns = ";$e=array();foreach($w -as$v){$ac=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$ac)$e[$ac]=1;}$e[""]=1;foreach($e -as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
    \n";}function -selectCommandPrint(){return!information_schema(DB);}function -selectImportPrint(){return!information_schema(DB);}function -selectEmailPrint(array$Sc,array$e){}function -selectColumnsProcess(array$e,array$w){$M=array();$ge=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$ge[]=$M[$x];}}return -array($M,$ge);}function -selectSearchProcess(array$n,array$w){$I=array();foreach($w -as$s=>$v){if($v["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$s)!="")$I[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}$Dh=adminer()->operators();foreach((array)$_GET["where"]as$x=>$X){$X+=array("col"=>"","op"=>first($Dh),"val"=>"");$_GET["where"][$x]=$X;$sb=$X["col"];if("$sb$X[val]"!=""&&in_array($X["op"],$Dh)){if($X["op"]=="SQL"&&(!$_POST||!verify_token()))SqlDb::$untrusted=true;$Eb=array();foreach(($sb!=""?array($sb=>$n[$sb]):$n)as$C=>$m){$Gi="";$Db=" $X[op]";if(preg_match('~IN$~',$X["op"]))$Db -.=" ".($X["val"]!=""?process_in($X["val"]):"(NULL)");elseif($X["op"]=="SQL")$Db=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$Db=" $A[1] ".q("%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Gi="$X[op](".q($X["val"]).", ";$Db=")";}elseif(!preg_match('~NULL$~',$X["op"]))$Db -.=" ".q($X["val"]);if($sb!=""||is_searchable($m,$X))$Eb[]=$Gi.driver()->convertSearch(idf_escape($C),$X,$m).$Db;}$I[]=(count($Eb)==1?$Eb[0]:($Eb?"(".implode(" OR ",$Eb).")":"1 = 0"));}}return$I;}function -selectOrderProcess(array$n,array$w){$I=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC".(JUSH=='pgsql'&&idx($n[$X],"null")?" NULLS LAST":""):"");}return$I;}function -selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function -selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function -selectEmailProcess(array$Z,array$Qd){return -false;}function -selectQueryBuild(array$M,array$Z,array$ge,array$Ih,$z,$D){return"";}function -messageQuery($G,$bl,$ud=false){restart_session();$Be=&get_session("queries");if(!idx($Be,$_GET["db"]))$Be[$_GET["db"]]=array();if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$Be[$_GET["db"]][]=array($G,time(),$bl);$lk="sql-".count($Be[$_GET["db"]]);$I="".lang(71)." ".copy_icon()."\n";if(!$ud&&($nm=driver()->warnings())){$t="warnings-".count($Be[$_GET["db"]]);$I="".lang(53).", $I\n";}return" ".@date("H:i:s").""." $I';}function -error(){return -error();}function -editRowPrint($R,array$n,$J,$Ll,$G='',$bl=''){echo($G!=""?"

    ".h(str_replace("\n"," ",$G))." ($bl)\n":"");}function -editFunctions(array$m){$I=($m["null"]?"NULL/":"");$ue=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$ae){if(!$x||(!isset($_GET["call"])&&$ue)){foreach($ae -as$si=>$X){if(!$si||preg_match("~$si~",$m["type"]))$I -.="/$X";}}if($x&&$ae&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$I -.="/SQL";}if($m["auto_increment"]&&!$ue)$I=lang(58);return -explode("/",$I);}function -editInput($R,array$m,$c,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$c,$m,$Y,"NULL");return"";}function -editHint($R,array$m,$Y){return"";}function -processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$I=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$I="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$I=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$I=idf_escape($C)." $r $I";elseif(preg_match('~^[+-] interval$~',$r))$I=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$I="$r(".idf_escape($C).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$I="$r($I)";return -unconvert_field($m,$I);}function -dumpOutput(){$I=array('text'=>lang(72),'file'=>lang(73));if(function_exists('gzencode'))$I['gz']='gzip';return$I;}function -dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function -dumpPrint(){}function -dumpDatabase($j){}function -dumpTable($R,$vk,$uf=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($vk)dump_csv(array_keys(fields($R)));}else{if($uf==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$vk);set_utf8mb4($h);if($vk&&$h){if(($vk=="DROP+CREATE"&&!function_exists('Adminer\drop_sql'))||$uf==1)echo"DROP ".($uf==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($uf==1)$h=remove_definer($h);echo"$h;\n\n";}}}function -dumpData($R,$vk,$G,array$M=array(),array$Z=array(),array$ge=array(),array$Ih=array()){if($vk){$mg=(JUSH=="sqlite"?0:1048576);$n=array();$Ke=false;if($_POST["format"]=="sql"){if($vk=="TRUNCATE+INSERT"&&!function_exists('Adminer\truncate_all_sql'))echo -truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n -as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Ke=true;break;}}}}$H=($G!=""?connection()->query($G,1):driver()->select($R,($M?:array("*")),$Z,$ge,$Ih,0));if($H){$gf="";$Xa="";$Af=array();$be=array();$xk="";$xd=($R!=''?'fetch_assoc':'fetch_row');$Sb=0;while($J=$H->$xd()){if(!$Af){$em=array();foreach($J -as$X){$m=$H->fetch_field();if(idx($n[$m->name],'generated')){$be[$m->name]=true;continue;}$Af[]=$m->name;$x=idf_escape($m->name);$em[]="$x = VALUES($x)";}$xk=($vk=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$em):"").";\n";}if($_POST["format"]!="sql"){if($vk=="table"){dump_csv($Af);$vk="INSERT";}dump_csv($J);}else{if(!$gf)$gf="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Af)).") VALUES";foreach($J -as$x=>$X){if($be[$x]){unset($J[$x]);continue;}$m=$n[$x];$J[$x]=($X===null?"NULL":($X===false?0:unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:(!is_blob($m)||is_utf8($X)?q($X):driver()->quoteBinary($X)))));}$zj=($mg?"\n":" ")."(".implode(",\t",$J).")";if(!$Xa)$Xa=$gf.$zj;elseif(JUSH=='mssql'?$Sb%1000!=0:strlen($Xa)+4+strlen($zj)+strlen($xk)<$mg)$Xa -.=",$zj";else{echo$Xa.$xk;$Xa=$gf.$zj;}}$Sb++;}if($Xa)echo$Xa.$xk;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Ke)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function -dumpFilename($Ie){return -friendly_url($Ie!=""?$Ie:(SERVER?:"localhost"));}function -dumpHeaders($Ie,$Ng=false){$Wh=$_POST["output"];$pd=(preg_match('~sql~',$_POST["format"])?"sql":($Ng?"tar":"csv"));header("Content-Type: ".($Wh=="gz"?"application/x-gzip":($pd=="tar"?"application/x-tar":($pd=="sql"||$Wh!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Wh=="gz"){ob_start(function($Q){return -gzencode($Q);},1e6);}return$pd;}function -dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function -importServerPath(){return"adminer.sql";}function -importPrint(){}function -importProcess(){return -false;}function -homepage(){echo'

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

    \n";switch_lang();if($Hg=="auth"){$Wh="";foreach((array)$_SESSION["pwds"]as$gm=>$Tj){foreach($Tj -as$N=>$Yl){$C=h(get_setting("vendor-$gm-$N")?:get_driver($gm));foreach($Yl -as$V=>$E){if($C&&$E!==null){$ic=$_SESSION["db"][$gm][$N][$V];foreach(($ic?array_keys($ic):array(""))as$j)$Wh -.="
  • ($C) ".h("$V@").($N!=""?adminer()->serverName($N):"").h($j!=""?" - $j":"")."\n";}}}}if($Wh)echo"
      \n$Wh
    \n";}else{$T=array();if($_GET["ns"]!==""&&!$Hg&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Hg);$la=array();if(DB==""||!$Hg){if(support("sql")){$la['sql']="".lang(71)."";$la['import']="".lang(82)."";}$la['dump']="".lang(83)."";}$Pe=$_GET["ns"]!==""&&!$Hg&&DB!="";if($Pe&&function_exists('Adminer\alter_table'))$la['create']='".lang(84)."";$la=adminer()->menuActions($la,$Hg);echo($la?"

    ".lang(12)."

    \n";}}}function -syntaxHighlighting(array$T){echo -script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=6.0.1",true);$Jg=preg_replace('~<(?=/script)~i','<\\',Driver::jushModule());echo($Jg?script("addEventListener('DOMContentLoaded', () => {\n$Jg\n});"):"");if(support("sql")){echo"\n";if($T){$Wf=array();foreach($T -as$R=>$U)$Wf[]=js_escape_re($R);echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b(? { autocompleter = $Ia; });\n":"");}}echo"\n";}echo -script("syntaxHighlighting('".(preg_match('~^\d\.?\d~',connection()->server_info,$A)?$A[0]:"")."', '".connection()->flavor."');");}function -databasesPrint($Hg){if(support("single_db"))return;$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"
    \n

    \n";hidden_fields_get();$gc=on('mousedown','dbMouseDown').on('change','dbChange');echo"","\n";if(support("scheme")){if($Hg!="db"&&DB!=""&&connection()->select_db(DB)){echo"
    ";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo -input_hidden($X);break;}}echo"

    \n";}function -menuActions(array$la,$Hg){return$la;}function -tablesPrint(array$T){echo"
      ";foreach($T -as$R=>$P){$R="$R";$C=adminer()->tableName($P);if($C!=""&&!$P["partition"])echo'
    • ".lang(87)." ",(support("table")||support("indexes")?'$C":"$C")."\n";}echo"
    \n";}function -showVariables(){return -show_variables();}function -showStatus(){return -show_status();}function -processList(){return -process_list();}function -killProcess($t){return -kill_process($t);}}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($zi){$Gc=SqlDriver::$drivers;$_e=" href='https://www.adminer.org/plugins/#use'".target_blank();if($zi===null){$zi=array();$Qa="adminer-plugins";if(is_dir($Qa)){foreach(glob("$Qa/*.php")as$o){$Cd=SqlDriver::$drivers;$this->includeOnce($o);foreach(array_diff_key(SqlDriver::$drivers,$Cd)as$t=>$C)$this->driverFiles[$t]=$o;}}if(file_exists("$Qa.php")){$Re=$this->includeOnce("$Qa.php");if(is_array($Re)){foreach($Re -as$x=>$wi)$zi[is_object($wi)?get_class($wi):$x]=$wi;}else$this->error -.=lang(88,"$Qa.php",$_e)."
    ";}foreach(get_declared_classes()as$pb){if(!$zi[$pb]&&(preg_match('~^Adminer\w~i',$pb)||is_subclass_of($pb,'Adminer\Plugin'))){$fj=new -\ReflectionClass($pb);$Kb=$fj->getConstructor();if($Kb&&$Kb->getNumberOfRequiredParameters())$this->error -.=lang(89,$_e,"$pb","$Qa.php")."
    ";else$zi[$pb]=new$pb;}}}$lf=array_filter($zi,function($wi){return!is_object($wi);});if($lf){$this->error -.=lang(90,$_e)."
    ";$zi=array_diff_key($zi,$lf);}$this->drivers=array_diff_key(SqlDriver::$drivers,$Gc);$this->plugins=$zi;$pa=new -Adminer;$zi[]=$pa;$fj=new -\ReflectionObject($pa);foreach($fj->getMethods()as$Eg){foreach($zi -as$wi){$C=$Eg->getName();if(method_exists($wi,$C))$this->hooks[$C][]=$wi;}}}function -includeOnce($o){return -include_once"./$o";}static -function -checksum($o){$Bd=str_replace("\r","",file_get_contents($o));$Bd=preg_replace('~\n\tprotected \$translations = array\(.*?\n\t\);~s','',$Bd);return -dechex(crc32($Bd));}function -checksums(){$Dd=array_values($this->driverFiles);foreach($this->plugins -as$wi){$fj=new -\ReflectionObject($wi);$Dd[]=$fj->getFileName();}$I=array();foreach($Dd -as$o)$I[basename($o,'.php')]=self::checksum($o);return$I;}static -function -officialChecksums(){return -array('adminer.js'=>'a0599090','backward-keys'=>'ed1ef78f','before-unload'=>'2a613523','config'=>'722eb4af','dark-switcher'=>'3d490dea','database-hide'=>'e304a899','designs'=>'d1515f34','dump-alter'=>'896b579e','dump-bz2'=>'f0d0e336','dump-date'=>'adc7f1c7','dump-json'=>'767dd321','dump-xml'=>'4fc3cd60','dump-zip'=>'93817d96','edit-foreign'=>'72ad1562','edit-textarea'=>'a24c3cc','editor-setup'=>'a7dc3a37','editor-views'=>'5c12b185','enum-option'=>'96ee8718','file-upload'=>'10add0e8','foreign-system'=>'ebb4c654','frames'=>'b0e1d11a','highlight-codemirror'=>'f4baf411','highlight-monaco'=>'edd1b0af','highlight-prism'=>'267948e5','import-csv'=>'d429c77','login-ip'=>'4d174fea','login-otp'=>'5b5a68af','login-passkey'=>'f69f2f06','login-password-less'=>'e150daac','login-reverse-proxy'=>'24558ea2','login-servers'=>'19c42e45','login-ssl'=>'6ed147bc','login-table'=>'811f8cef','menu-links'=>'7f3d5020','remote-color'=>'86a39047','row-numbers'=>'eec8698c','select-email'=>'f84fbd2c','select-image'=>'f55c0231','slugify'=>'dec64713','sql-gemini'=>'c60ab309','sql-log'=>'8e435000','table-indexes-structure'=>'a90cc0c9','table-structure'=>'a8458e02','tables-filter'=>'ec2bcd6e','timeout'=>'97321caf','version-github'=>'627cadf9','version-noverify'=>'966937e9','clickhouse'=>'b0f6631c','elastic'=>'27503b8b','firebird'=>'5499d1a','igdb'=>'59055fd3','imap'=>'ac143217','mongo'=>'c3b8f5a4','redis'=>'ba56e72e','simpledb'=>'92f050ad',);}function -__call($C,array$ci){$Aa=array();foreach($ci -as$x=>$X)$Aa[]=&$ci[$x];$I=null;foreach($this->hooks[$C]as$wi){$Y=call_user_func_array(array($wi,$C),$Aa);if($Y!==null){if(!self::$append[$C])return$Y;$I=$Y+(array)$I;}}return$I;}}abstract -class -Plugin{protected$translations=array();function -description(){return$this->lang('');}function -screenshot(){return"";}protected -function -lang($u,$ih=null){$Aa=func_get_args();$Aa[0]=idx($this->translations[LANG],$u)?:$u;return -call_user_func_array('Adminer\lang_format',$Aa);}}class -Password{private$password_hash;private$password_matches=null;function -__construct($oi){$this->password_hash=$oi;}function -description(){return -lang(91);}function -credentials(){$E=get_password();return -array(SERVER,$_GET["username"],($this->passwordMatches($E)&&!password_required()?"":$E));}function -login($bg,$E){if($this->passwordMatches($E))return -true;}protected -function -passwordMatches($E){if($this->password_matches===null)$this->password_matches=(function_exists('password_verify')&&password_verify(strval($E),$this->password_hash));return$this->password_matches;}}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($N,$V,$E){mysqli_report(MYSQLI_REPORT_OFF);list($Ee,$_i)=host_port($N);$pk=adminer()->connectSsl();$Ul=($pk&&($pk['key']||$pk['cert']||$pk['ca']||isset($pk['verify'])));if($Ul)$this->ssl_set($pk['key'],$pk['cert'],$pk['ca'],'','');$I=@$this->real_connect(($N!=""?$Ee:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$E!=""?$E:ini_get("mysqli.default_pw")),null,(is_numeric($_i)?intval($_i):ini_get("mysqli.default_port")),(is_numeric($_i)?null:$_i),($Ul?($pk['verify']!==false?MYSQLI_CLIENT_SSL:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($I?'':$this->error);}function -set_charset($fb){if(parent::set_charset($fb))return -true;parent::set_charset('utf8');return$this->query("SET NAMES $fb");}function -next_result(){return -self::more_results()&&parent::next_result();}function -quote($Q){return"'".$this->escape_string($Q)."'";}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($N,$V,$E){if(ini_bool("mysql.allow_local_infile"))return -lang(92,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),($N.$V!=""?$V:ini_get("mysql.default_user")),($N.$V.$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($fb){return -mysql_set_charset($fb,$this->link)||mysql_set_charset('utf8',$this->link);}function -quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function -select_db($fc){return -mysql_select_db($fc,$this->link);}function -query($G,$Cl=false){$H=@($Cl?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($N,$V,$E){$Gh=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);if(isset($_GET["select"]))$Gh[\PDO::MYSQL_ATTR_MULTI_STATEMENTS]=false;$pk=adminer()->connectSsl();if($pk){if($pk['key'])$Gh[\PDO::MYSQL_ATTR_SSL_KEY]=$pk['key'];if($pk['cert'])$Gh[\PDO::MYSQL_ATTR_SSL_CERT]=$pk['cert'];if($pk['ca'])$Gh[\PDO::MYSQL_ATTR_SSL_CA]=$pk['ca'];if(isset($pk['verify']))$Gh[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$pk['verify'];}list($Ee,$_i)=host_port($N);return$this->dsn("mysql:charset=utf8".($Ee!=""?";host=$Ee":'').($_i?(is_numeric($_i)?";port=":";unix_socket=").$_i:""),$V,$E,$Gh);}function -set_charset($fb){return$this->query("SET NAMES $fb");}function -select_db($fc){return$this->query("USE ".idf_escape($fc));}function -query($G,$Cl=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Cl);return -parent::query($G,$Cl);}}}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($N,$V,$E){$f=parent::connect($N,$V,$E);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($zj=iconv("windows-1252","utf-8//IGNORE",$f))>strlen($f))$f=$zj;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function -__construct(Db$f){parent::__construct($f);$this->types=array(lang(28)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(29)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(30)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(93)=>array("enum"=>65535,"set"=>64),lang(31)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(33)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types[lang(30)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(30)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version('',10.5,$f)){$this->types[lang(32)]["inet6"]=39;if(min_version('','10.10',$f))$this->types[lang(32)]["inet4"]=15;}if(min_version(9,11.7,$f))$this->types[lang(28)]["vector"]=16383;if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function -unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):($m["type"]=="vector"?"".($this->conn->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."":(preg_match("~geom|point|linestring|polygon~",$m["type"])?"GeomFromText":""))));}function -insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function -insertUpdate($R,array$K,array$Ki){$e=array_keys(reset($K));$Gi="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$em=array();foreach($e -as$x)$em[$x]="$x = VALUES($x)";$xk="\nON DUPLICATE KEY UPDATE ".implode(", ",$em);$em=array();$y=0;foreach($K -as$O){$Y="(".implode(", ",$O).")";if($em&&(strlen($Gi)+$y+strlen($Y)+strlen($xk)>1e6)){if(!queries($Gi.implode(",\n",$em).$xk))return -false;$em=array();$y=0;}$em[]=$Y;$y+=strlen($Y)+2;}return -queries($Gi.implode(",\n",$em).$xk);}function -slowQuery($G,$cl){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$cl FOR $G";elseif(preg_match('~^(SELECT\b)(.+)~is',$G,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($cl*1000).") */ $A[2]";}}function -convertColumn($u,array$m){if(preg_match("~binary~",$m["type"]))return"HEX($u)";if($m["type"]=="bit")return"BIN($u + 0)";if($m["type"]=="vector")return($this->conn->flavor=='maria'?"VEC_ToText":"VECTOR_TO_STRING")."($u)";if(preg_match("~geom|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT($u)";return"";}function -convertSearch($u,array$X,array$m){return($this->convertColumn($u,$m)?:(preg_match('~'.text_type().'~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($u USING ".charset($this->conn).")":$u));}function -typeName(\stdClass$m){$Bl=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($Bl,$m->type,"");return -parent::typeName($m)?:($m->charsetnr==63?str_replace(array("text","varchar","char"),array("blob","varbinary","binary"),$I):$I);}function -quoteBinary($zj){return"X".q(bin2hex($zj));}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($C,$uf=false){$dg=($this->conn->flavor=='maria');if(information_schema(DB))return -strtolower(str_replace("_","-",DB)."-".($dg?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="sys")return($dg?"sys-schema/":strtolower("sys-".str_replace("_","-",preg_replace('~^x\$~','',$C)).".html"));if(DB=="mysql")return($dg?"mysql$C-table/":"system-schema.html");}function -partitionsInfo($R){$Wd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$H=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Wd 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;$li=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Wd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$I["partition_names"]=array_keys($li);$I["partition_values"]=array_values($li);return$I;}function -hasCStyleEscapes(){static$ab;if($ab===null){$mk=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$ab=(strpos($mk,'NO_BACKSLASH_ESCAPES')===false);}return$ab;}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$Ck){return(preg_match('~^(MEMORY|NDB)$~',$Ck["Engine"])?array("HASH","BTREE"):array());}}function -idf_escape($u){return"`".str_replace("`","``",$u)."`";}function -table($u){return -idf_escape($u);}function -get_databases($Nd){$I=get_session("dbs");if($I===null){$G="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$qk=microtime(true);$I=($Nd?slow_query($G):get_vals($G));if(microtime(true)-$qk>0.1){restart_session();set_session("dbs",$I);stop_session();}}return$I;}function -limit($G,$Z,$z,$ph=0,$Lj=" "){return" $G$Z".($z?$Lj."LIMIT $z".($ph?" OFFSET $ph":""):"");}function -limit1($R,$G,$Z,$Lj="\n"){return -limit($G,$Z,1,0,$Lj);}function -db_collation($j,array$vb){$I=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$A))$I=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$A))$I=$vb[$A[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$i){$I=array();foreach($i -as$j)$I[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$I;}function -table_status($C="",$vd=false){$I=array();foreach(get_rows($vd?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$J){if($J["Engine"]=="InnoDB")$J["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$J["Comment"]);if(!isset($J["Engine"]))$J["Comment"]="";if($C!="")$J["Name"]=$C;$I[$J["Name"]]=$J;}return$I;}function -is_view(array$S){return$S["Engine"]===null;}function -fk_support(array$S){return -preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function -parse_type($Yd){preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$Yd,$A);return -array($A[1],$A[2],ltrim($A[3].$A[4]));}function -fields($R){$dg=(connection()->flavor=='maria');$I=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$J){$m=$J["COLUMN_NAME"];$U=$J["COLUMN_TYPE"];$ce=$J["GENERATION_EXPRESSION"];$sd=$J["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$sd,$be);list($Al,$y,$Jl)=parse_type($U);$k=$J["COLUMN_DEFAULT"];if($k!=""){$tf=preg_match('~text|json~',$Al);if(!$dg&&$tf)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($dg||$tf){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return -stripslashes(str_replace("''","'",$A[1]));},$k));}if(!$dg&&preg_match('~binary~',$Al)&&preg_match('~^0x(\w*)$~',$k,$A))$k=pack("H*",$A[1]);}$I[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Al,"length"=>$y,"unsigned"=>$Jl,"default"=>($be?($dg?$ce:stripslashes($ce)):$k),"null"=>($J["IS_NULLABLE"]=="YES"),"auto_increment"=>($sd=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$sd,$A)?$A[1]:""),"collation"=>$J["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$J[PRIVILEGES],where,order")),"comment"=>$J["COLUMN_COMMENT"],"primary"=>($J["COLUMN_KEY"]=="PRI"),"generated"=>($be[1]=="PERSISTENT"?"STORED":$be[1]),);}return$I;}function -indexes($R,$g=null){$I=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$J){$C=$J["Key_name"];$I[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($J["Index_type"]=="FULLTEXT"?"FULLTEXT":($J["Non_unique"]?(preg_match('~^(SPATIAL|VECTOR)$~',$J["Index_type"])?$J["Index_type"]:"INDEX"):"UNIQUE")));$I[$C]["columns"][]=$J["Column_name"];$I[$C]["lengths"][]=($J["Index_type"]=="SPATIAL"?null:$J["Sub_part"]);$I[$C]["descs"][]=null;$I[$C]["algorithm"]=$J["Index_type"];}return$I;}function -foreign_keys($R){static$si='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$I=array();$Tb=get_val("SHOW CREATE TABLE ".table($R),1);if($Tb){preg_match_all("~CONSTRAINT ($si) FOREIGN KEY ?\\(((?:$si,? ?)+)\\) REFERENCES ($si)(?:\\.($si))? \\(((?:$si,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Tb,$gg,PREG_SET_ORDER);foreach($gg -as$A){preg_match_all("~$si~",$A[2],$fk);preg_match_all("~$si~",$A[5],$Sk);$I[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$fk[0]),"target"=>array_map('Adminer\idf_unescape',$Sk[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$I;}function -view($C){return -array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),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$x=>$X)sort($I[$x]);return$I;}function -information_schema($j,$L=""){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function -error(){return -h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function -create_database($j,$ub){return -queries("CREATE DATABASE ".idf_escape($j).($ub?" COLLATE ".q($ub):""));}function -drop_databases(array$i){$I=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$I;}function -rename_database($C,$ub){$I=false;if(create_database($C,$ub)){$T=array();$jm=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$jm[]=$R;else$T[]=$R;}$I=(!$T&&!$jm)||move_tables($T,$jm,$C);drop_databases($I?array(DB):array());}return$I;}function -auto_increment(){$Ha=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Ha="";break;}if($v["type"]=="PRIMARY")$Ha=" UNIQUE";}}return" AUTO_INCREMENT$Ha";}function -alter_table($R,$C,array$n,array$Pd,$_b,$Vc,$ub,$Ga,$ki){$b=array();foreach($n -as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$Pd);$P=($_b!==null?" COMMENT=".q($_b):"").($Vc?" ENGINE=".q($Vc):"").($ub?" COLLATE ".q($ub):"").($Ga!=""?" AUTO_INCREMENT=$Ga":"");if($ki){$li=array();if($ki["partition_by"]=='RANGE'||$ki["partition_by"]=='LIST'){foreach($ki["partition_names"]as$x=>$X){$Y=$ki["partition_values"][$x];$li[]="\n PARTITION ".idf_escape($X)." VALUES ".($ki["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P -.="\nPARTITION BY $ki[partition_by]($ki[partition])";if($li)$P -.=" (".implode(",",$li)."\n)";elseif($ki["partitions"])$P -.=" PARTITIONS ".(+$ki["partitions"]);}elseif($ki===null)$P -.="\nREMOVE PARTITIONING";if($R=="")return -queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function -alter_indexes($R,$b){$db=array();foreach($b -as$X)$db[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return -queries("ALTER TABLE ".table($R).implode(",",$db));}function -truncate_tables(array$T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views(array$jm){return -queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$jm)));}function -drop_tables(array$T){return -queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function -move_tables(array$T,array$jm,$Sk){$kj=array();foreach($T -as$R)$kj[]=table($R)." TO ".idf_escape($Sk).".".table($R);if(!$kj||queries("RENAME TABLE ".implode(", ",$kj))){$oc=array();foreach($jm -as$R)$oc[table($R)]=view($R);connection()->select_db($Sk);$j=idf_escape(DB);foreach($oc -as$C=>$im){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$im["select"]))||!queries("DROP VIEW $j.$C"))return -false;}return -true;}return -false;}function -copy_tables(array$T,array$jm,$Sk){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T -as$R){$C=($Sk==DB?table("copy_$R"):idf_escape($Sk).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return -false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){$tl=$J["Trigger"];list($ed,$lh)=trigger_event($J);if(!queries("CREATE TRIGGER ".($Sk==DB?idf_escape("copy_$tl"):idf_escape($Sk).".".idf_escape($tl))." $J[Timing] $ed".($lh!=""?" $lh":"")." ON $C FOR EACH ROW\n$J[Statement];"))return -false;}}foreach($jm -as$R){$C=($Sk==DB?table("copy_$R"):idf_escape($Sk).".".table($R));$im=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $im[select]"))return -false;}return -true;}function -trigger_event(array$J){$gd=explode(",",$J["Event"]);$I=array();foreach(array("DELETE","INSERT","UPDATE")as$ed){if(in_array($ed,$gd))$I[]=$ed;}$I=implode(" OR ",$I);if(in_array("UPDATE",$gd)&&min_version('','12.0.1')&&preg_match('~\s(?:BEFORE|AFTER)\s+(.+?)\s+ON\s~is',get_val("SHOW CREATE TRIGGER ".idf_escape($J["Trigger"]),2),$A)&&preg_match('~\bOF\s+(.+)~is',$A[1],$lh))return -array("$I OF",$lh[1]);return -array($I,"");}function -trigger($C,$R){if($C=="")return -array();$K=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));$I=reset($K);if($I)list($I["Event"],$I["Of"])=trigger_event($I);return$I;}function -triggers($R){$I=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$J){list($ed)=trigger_event($J);$I[$J["Trigger"]]=array($J["Timing"],$ed);}return$I;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER"),"Event"=>(min_version('','12.0.1')?array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF",):array("INSERT","UPDATE","DELETE")),"Type"=>array("FOR EACH ROW"),);}function -routine($C,$U){$K=get_rows("SELECT PARAMETER_NAME, DTD_IDENTIFIER, PARAMETER_MODE, COLLATION_NAME -FROM information_schema.PARAMETERS -WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($C)." -ORDER BY ORDINAL_POSITION");$n=array();foreach($K -as$J){$Yd=$J["DTD_IDENTIFIER"];list($Al,$y,$Jl)=parse_type($Yd);$n[]=array("field"=>$J["PARAMETER_NAME"],"type"=>$Al,"length"=>$y,"unsigned"=>$Jl,"null"=>true,"full_type"=>$Yd,"inout"=>($U=="FUNCTION"?"":$J["PARAMETER_MODE"]),"collation"=>$J["COLLATION_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 = '$U' AND ROUTINE_NAME = ".q($C))->fetch_assoc();if($n&&$n[0]['field']=='')$I['returns']=array_shift($n);$I['fields']=$n;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($C,array$J){return -idf_escape($C);}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$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function -create_sql($R,$Ga,$vk){$I=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Ga)$I=preg_replace('~(\n\)[^\n]*?) AUTO_INCREMENT=\d+~','\1',$I);return$I;}function -truncate_sql($R){return"TRUNCATE ".table($R);}function -use_sql($fc,$vk=""){$C=idf_escape($fc);$I="";if(preg_match('~CREATE~',$vk)&&($h=get_val("SHOW CREATE DATABASE $C",1))){set_utf8mb4($h);if($vk=="DROP+CREATE")$I="DROP DATABASE IF EXISTS $C;\n";$I -.="$h;\n";}return$I."USE $C";}function -trigger_sql($R){$I="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$J){list($J["Event"],$J["Of"])=trigger_event($J);$I -.="\n".create_trigger(" ON ".table($J["Table"]),$J+array("Type"=>"FOR EACH ROW")).";\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$m){return -driver()->convertColumn(idf_escape($m["field"]),$m);}function -unconvert_field(array$m,$I){if(preg_match("~binary~",$m["type"]))$I="UNHEX($I)";if($m["type"]=="bit")$I="CONVERT(b$I, UNSIGNED)";if($m["type"]=="vector")$I=(connection()->flavor=='maria'?"VEC_FromText":"STRING_TO_VECTOR")."($I)";if(preg_match("~geom|point|linestring|polygon~",$m["type"])){$Gi=(min_version(8)?"ST_":"");$I=$Gi."GeomFromText($I, $Gi"."SRID($m[field]))";}return$I;}function -support($wd){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':'').')$~',$wd);}function -kill_process($t){return -queries("KILL ".number($t));}function -connection_id(){return"SELECT CONNECTION_ID()";}function -max_connections(){return -get_val("SELECT @@max_connections");}function -types($rd=false){return -array();}function -type_values($t){return"";}function -type_definition($t){return -array("kind"=>"","definition"=>"");}function -schemas(){return -array();}function -get_schema(){return"";}function -set_schema($L,$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"]).'&':'').(isset($_GET["db"])?'db='.url_escape(DB).'&'.(isset($_GET["ns"])?"ns=".url_escape($_GET["ns"])."&":""):''));function -page_header($el,$l="",$Wa=array(),$fl=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$gl=$el.($fl!=""?": $fl":"");$hl=strip_tags($gl.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' - - - - -',$hl,' - -';$Xb=adminer()->css();if(is_int(key($Xb)))$Xb=array_fill_keys($Xb,'light');$re=in_array('light',$Xb)||in_array('',$Xb);$pe=in_array('dark',$Xb)||in_array('',$Xb);$bc=($re?($pe?null:false):($pe?:null));$vg=" media='(prefers-color-scheme: dark)'";if($bc!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=6.0.1");if(adminer()->head($bc))echo"\n","\n";foreach($Xb -as$Pl=>$Ig){$c=($Ig=='dark'&&!$bc?$vg:($Ig=='light'&&$pe?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n",script((isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"onload = partial(verifyVersion, '".VERSION."');\n")." -const offlineMessage = '".js_escape(lang(95))."'; -const thousandsSeparator = '".js_escape(lang(5))."'; -const urlSeparators = '".js_escape(ini_get("arg_separator.input"))."';"),"\n","
    \n","\n";if($Wa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $gl

    \n","
    \n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);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$Wb){$we=array();foreach($Wb -as$x=>$X)$we[]="$x $X";header("Content-Security-Policy: ".implode("; ",$we));}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(){$Vl=array();foreach(array_keys(adminer()->css())as$Pl)$Vl[preg_replace('~\?.*~','',$Pl)]=true;$I=array();foreach(array("adminer.css","adminer-dark.css")as$o){if($Vl[$o]&&file_exists($o)){preg_match('~^/\* Adminer design ([-\w]+) \*/~',file_get_contents($o),$A);$I[$o]=array((string)$A[1],Plugins::checksum($o));}}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'=>'1f626deb','konya/adminer.css'=>'2b409696','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'=>'81be9a85','rmsoft/adminer.css'=>'6cd4a237','rmsoft_blue-dark/adminer.css'=>'32102a8','rmsoft_blue/adminer.css'=>'7d8d5b18','win98/adminer.css'=>'e82d63c3',);}function -version_iframe(){return(isset($_COOKIE["adminer_version"])||!adminer()->verifyVersion()?"":"");}function -get_nonce(){static$eh;if(!$eh)$eh=base64_encode(rand_string());return$eh;}function -page_messages($l){$Ol=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ag=idx($_SESSION["messages"],$Ol);if($Ag){echo"
    ".implode("
    \n
    ",$Ag)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Ol]);}if($l)echo"
    $l
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function -page_footer($Hg=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function -int32($Pg){while($Pg>=2147483648)$Pg-=4294967296;while($Pg<=-2147483649)$Pg+=4294967296;return(int)$Pg;}function -long2str(array$W,$lm){$zj='';foreach($W -as$X)$zj -.=pack('V',$X);if($lm)return -substr($zj,0,end($W));return$zj;}function -str2long($zj,$lm){$W=array_values(unpack('V*',str_pad($zj,4*ceil(strlen($zj)/4),"\0")));if($lm)$W[]=strlen($zj);return$W;}function -xxtea_mx($wm,$vm,$yk,$zf){return -int32((($wm>>5&0x7FFFFFF)^$vm<<2)+(($vm>>3&0x1FFFFFFF)^$wm<<4))^int32(($yk^$vm)+($zf^$wm));}function -encrypt_string($tk,$x){if($tk=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($tk,true);$Pg=count($W)-1;$wm=$W[$Pg];$vm=$W[0];$Ti=floor(6+52/($Pg+1));$yk=0;while($Ti-->0){$yk=int32($yk+0x9E3779B9);$Nc=$yk>>2&3;for($Yh=0;$Yh<$Pg;$Yh++){$vm=$W[$Yh+1];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$wm=int32($W[$Yh]+$Og);$W[$Yh]=$wm;}$vm=$W[0];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$wm=int32($W[$Pg]+$Og);$W[$Pg]=$wm;}return -long2str($W,false);}function -decrypt_string($tk,$x){if($tk=="")return"";if(!$x)return -false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($tk,false);$Pg=count($W)-1;$wm=$W[$Pg];$vm=$W[0];$Ti=floor(6+52/($Pg+1));$yk=int32($Ti*0x9E3779B9);while($yk){$Nc=$yk>>2&3;for($Yh=$Pg;$Yh>0;$Yh--){$wm=$W[$Yh-1];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$vm=int32($W[$Yh]-$Og);$W[$Yh]=$vm;}$wm=$W[$Pg];$Og=xxtea_mx($wm,$vm,$yk,$x[$Yh&3^$Nc]);$vm=int32($W[0]-$Og);$W[0]=$vm;$yk=int32($yk-0x9E3779B9);}return -long2str($W,true);}$ui=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$ui[$x]=$X;}}function -add_invalid_login(){$Oa=get_temp_dir()."/adminer-invalid";foreach(glob("$Oa*")?:array($Oa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Oa-".rand_string());if(!$q)return;$nf=json_decode(stream_get_contents($q),true);$bl=time();if($nf){foreach($nf -as$of=>$X){if($X[0]<$bl)unset($nf[$of]);}}$lf=&$nf[adminer()->bruteForceKey()];if(!$lf)$lf=array($bl+30*60,0);$lf[1]++;file_write_unlock($q,json_encode($nf));}function -check_invalid_login(array&$ui){$nf=array();foreach(glob(get_temp_dir()."/adminer-invalid*")as$o){$q=file_open_lock($o);if($q){$nf=json_decode(stream_get_contents($q),true);file_unlock($q);break;}}$x=adminer()->bruteForceKey();$lf=idx($nf,$x,array());$dh=($lf[1]>29?$lf[0]-time():0);if($dh>0){$l=lang(98,ceil($dh/60));if($_SERVER["HTTP_X_FORWARDED_FOR"]!=""&&$x==$_SERVER["REMOTE_ADDR"])$l -.='
    '.lang(99,'login-reverse-proxy'," href='https://www.adminer.org/plugins/?version=".VERSION."'".target_blank());auth_error($l,$ui,false);}}function -password_required(){static$I;if($I===null){$I=(bool)get_session("password_required");if(!$I){$Vb=adminer()->credentials();$I=!is_object(Driver::connect($Vb[0],$Vb[1],""));if($I)set_session("password_required",true);}}return$I;}function -require_password_link($E){$Kg="".lang(100)."";if(!function_exists('password_hash'))return" $Kg";$xi=($E!==null?$E:base64_encode(substr(pack("H*",rand_string()),0,12)));$ve=password_hash($xi,PASSWORD_DEFAULT);$o="adminer-plugins.php";$ld=file_exists("adminer-plugins.php");if($ld)$jf=($E!==null?lang(101,"$o"):lang(102,"$o","$xi"));else{$o="";$jf=($E!==null?lang(103,$o):lang(104,$o,"$xi"));}$Uf="\tnew Adminer\\Password('".h($ve)."'),";$I="

    $jf -

    ".($ld?$Uf:"<?php\nreturn array(\n$Uf\n);")."
    -

    $Kg -";return" ".lang(105)." -

    ";}if(preg_match('~^[-\w$./]+$~',$_POST["password_less"])&&verify_token()){header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=adminer-plugins.php");echo"permanentLogin(true);$ui[$x]="$x:".base64_encode($Ni?encrypt_string($E,$Ni):"");cookie("adminer_permanent",implode(" ",$ui));}if(!array_diff(array_keys($_POST),array("auth","token"))||$gm!=DRIVER||$N!=SERVER||$V!==$_GET["username"]||$j!=DB)redirect(auth_url($gm,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($ui);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(106).' '.lang(107));}elseif($ui&&!$_SESSION["pwds"]){session_regenerate_id();$Ni=adminer()->permanentLogin();foreach($ui -as$x=>$X){list(,$ob)=explode(":",$X);list($gm,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($gm,$N,$V,decrypt_string(base64_decode($ob),$Ni));$_SESSION["db"][$gm][$N][$V][$j]=true;}}function -unset_permanent(array&$ui){foreach($ui -as$x=>$X){list($gm,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($gm==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($ui[$x]);}cookie("adminer_permanent",implode(" ",$ui));}function -auth_error($l,array&$ui,$mf=true){$Uj=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Uj]||$_GET[$Uj])&&!$_SESSION["token"])$l=lang(108);elseif($mf&&($E=get_password())!==null){restart_session();add_invalid_login();if($E===false)$l -.=($l?'
    ':'').lang(109,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);unset_permanent($ui);}}if(!$_COOKIE[$Uj]&&$_GET[$Uj]&&ini_bool("session.use_only_cookies"))$l=lang(110);$ci=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$ci["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(43),$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(111)."\n";echo -input_token(),"

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($ui);page_header(lang(112),lang(113,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){check_invalid_login($ui);$Vb=adminer()->credentials();$f=Driver::connect($Vb[0],$Vb[1],$Vb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new -Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$bg=null;if(!is_object($f)||($bg=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($bg)?$bg:lang(114))).(preg_match('~^ | $~',get_password())?'
    '.lang(115):'');auth_error($l,$ui);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(97),lang(116));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Fa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){header("HTTP/1.1 403 Forbidden");$l=lang(116).' '.lang(117);}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){header("HTTP/1.1 413 Content Too Large");$l=lang(118,"post_max_size");if(isset($_GET["sql"]))$l -.=' '.lang(119);}function -print_select_result($H,$g=null,array$Mh=array(),&$z=0){$Wf=array();$w=array();$e=array();$Ua=array();$Bl=array();$I=array();for($s=0;(!$z||$s<$z)&&($J=$H->fetch_row());$s++){if(!$s){echo"
    \n","\n","";for($wf=0;$wffetch_field();$C=$m->name;$Lh=(isset($m->orgtable)?$m->orgtable:"");$Kh=(isset($m->orgname)?$m->orgname:$C);if($Mh&&JUSH=="sql")$Wf[$wf]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Lh!=""){if(isset($m->table))$I[$m->table]=$Lh;if(!isset($w[$Lh])){$w[$Lh]=array();foreach(indexes($Lh,$g)as$v){if($v["type"]=="PRIMARY"){$w[$Lh]=array_flip($v["columns"]);break;}}$e[$Lh]=$w[$Lh];}if(isset($e[$Lh][$Kh])){unset($e[$Lh][$Kh]);$w[$Lh][$Kh]=$wf;$Wf[$wf]=$Lh;}}if($m->charsetnr==63)$Ua[$wf]=true;$Bl[$wf]=$m->type;echo"\n";}echo"";foreach($J -as$x=>$X){$_="";if(isset($Wf[$x])&&!$e[$Wf[$x]]){if($Mh&&JUSH=="sql"){$R=$J[array_search("table=",$Wf)];$_=ME.$Wf[$x].url_escape($Mh[$R]!=""?$Mh[$R]:$R);}else{$_=ME."edit=".url_escape($Wf[$x]);foreach($w[$Wf[$x]]as$sb=>$wf){if($J[$wf]===null){$_="";break;}$_ -.="&where[".url_escape(bracket_escape($sb))."]=".url_escape($J[$wf]);}}}$m=array('type'=>($Ua[$x]?'blob':($Bl[$x]==254?'char':'')),);$X=select_value($X,$_,$m,null);echo"$X";}}$z=$s;echo($s?"
    ".h($C).($Mh?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"
    \n
    ":"

    ".lang(15))."\n";return$I;}function -textarea($C,$Y,$K=10,$wb=80){echo"";}function -select_input($c,array$Gh,$Y="",$vi=""){if($Gh&&$Y!=""&&!isset($Gh[$Y]))$Gh=array($Y=>$Y)+$Gh;$Rk=($Gh?"select":"input");return"<$Rk$c".($Gh?">

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

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

    \n","\n","".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i -as$j=>$T){$tj=h(preg_replace('~&db=[^&]*~','',ME))."db=".url_escape($j);$t=h("Db-".$j);echo"".(support("database")?"
    ":"")."".lang(42).(get_session("dbs")!==null?" - ".lang(140)."":"")."".lang(141)."".lang(142)."".lang(143)." - ".lang(144).""."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"".h($j)."";$ub=h(db_collation($j,$vb));echo"".(support("database")?"$ub":$ub),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}$pa=adminer();$zi=($pa -instanceof -Plugins?$pa->plugins:array());$Gc=($pa -instanceof -Plugins?$pa->drivers:array());$uc=design_checksums();if($zi||$Gc||$uc){$nb=($pa -instanceof -Plugins?$pa->checksums():array());$mh=Plugins::officialChecksums();$Ml=function($Pl){return" (".VERSION.")";};$yi=function($Bd)use($nb,$mh,$Ml){return($nb[$Bd]&&$mh[$Bd]&&$nb[$Bd]!==$mh[$Bd]?$Ml("https://www.adminer.org/plugins/?version=".VERSION):"");};echo"
    \n","

    ".lang(147)."

    \n
      \n";foreach($zi -as$wi){$fj=new -\ReflectionObject($wi);$rc=(method_exists($wi,'description')?$wi->description():"");if(!$rc){if(preg_match('~^/[\s*]+(.+)~',$fj->getDocComment(),$A))$rc=$A[1];}$Cj=(method_exists($wi,'screenshot')?$wi->screenshot():"");echo"
    • ".get_class($wi)."".h($rc?": $rc":"").($Cj?" (".lang(148).")":"").$yi(basename((string)$fj->getFileName(),'.php'))."\n";}foreach($Gc -as$t=>$C)echo"
    • ".h($t).": ".h($C).$yi(basename((string)$pa->driverFiles[$t],'.php'))."\n";if($uc){$oh=official_design_checksums();foreach($uc -as$o=>$tc){list($C,$mb)=$tc;$nh=$oh["$C/$o"];echo"
    • ".h($o)."".h($C?": $C":"").($nh&&$nh!==$mb?$Ml("https://www.adminer.org/?version=".VERSION."#extras"):"")."\n";}}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~&db=[^&]+~','\0&ns='.url_escape(get_schema()),relative_uri()));if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(86).h(": $_GET[ns]"),lang(149),true);page_footer("ns");exit;}}}adminer()->afterConnect();class -TmpFile{private$handler;var$size=0;function -__construct(){$this->handler=tmpfile();}function -write($Mb){$this->size+=strlen($Mb);fwrite($this->handler,$Mb);}function -send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if($_GET["select"]!=""&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$H=driver()->select($a,$M,array(where($_GET,$n)),$M);$J=($H?$H->fetch_row():array());echo -driver()->value($J[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=adminer()->error()?:lang(12);$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?lang(150):lang(151):lang(152)).": ".($C!=""?$C:h($a)),$l);$sj=array();foreach($n -as$x=>$m)$sj+=$m["privileges"];adminer()->selectLinks($S,(isset($sj["insert"])||!support("table")?"":null));$_b=$S["Comment"];if($_b!="")echo"

    ".lang(57).": ".adminer()->commentValue('TABLE',$_b)."\n";if($n)adminer()->tableStructurePrint($n,$S);function -tables_links(array$T){echo"

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

    ".lang(153)."

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

    ".lang(154)."

    \n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w,$S);if(driver()->supportsAlterIndex($S))echo'
    \n";}if(!is_view($S)){if(fk_support($S)){echo"
    \n","

    ".lang(120)."

    \n";$Rd=foreign_keys($a);if($Rd){echo"\n","\n";foreach($Rd -as$C=>$p){echo"","
    ".lang(156)."".lang(157)."".lang(123)."".lang(122)."
    ".implode(", ",array_map('Adminer\h',$p["source"]))."";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".url_escape($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".url_escape($p["ns"]),ME):ME));echo"".($p["db"]!=""&&$p["db"]!=DB?"".h($p["db"]).".":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('Adminer\h',$p["target"])).")","".h($p["on_delete"]),"".h($p["on_update"]),''.lang(158).'',"\n";}echo"
    \n";}echo'
    \n";}if(support("check")){echo"
    \n","

    ".lang(160)."

    \n";$ib=driver()->checkConstraints($a);if($ib){echo"\n";foreach($ib -as$x=>$X)echo"","
    ".shorten_utf8(preg_replace('~\s+~',' ',ltrim($X)),80,""),"".lang(158)."","\n";echo"
    \n";}echo'
    \n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"
    \n","

    ".lang(162)."

    \n";$xl=triggers($a);if($xl){echo"\n";foreach($xl -as$x=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($x)."".lang(158)."\n";echo"
    \n";}echo'
    \n";}$bf=driver()->inheritedTables($a);if($bf){echo"

    ".lang(164)."

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

    BY ".h("$gi[partition_by]($gi[partition])")."\n";tables_links($bf);}}elseif(isset($_GET["schema"])){page_header(lang(77),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));function -schema_column($R,array$ej,array&$e){if(!isset($e[$R])){$e[$R]=0;foreach((array)idx($ej,$R)as$C=>$gj){if($C!=$R)$e[$R]=max($e[$R],schema_column($C,$ej,$e)+1);}}return$e[$R];}function -type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}$Ik=array();$Kk=array();$Jk=array();$zd=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$gg,PREG_SET_ORDER);foreach($gg -as$s=>$A){$Ik[$A[1]]=array((float)$A[2],(float)$A[3]);$Kk[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$L=array();$ej=array();$Rd=array();$wa=driver()->allFields();$Ae=array();$Lk=array();foreach(table_status('',true)as$R=>$S){if(!is_view($S)){if(adminer()->tableName($S)!="")$Lk[$R]=$S;else$Ae[$R]=true;}}foreach($Lk -as$R=>$S){$F=0;$L[$R]["fields"]=array();foreach($wa[$R]as$m){$F+=1.25;$zd[$R][$m["field"]]=$F;$L[$R]["fields"][$m["field"]]=$m;}foreach(adminer()->foreignKeys($R)as$X){if($X["db"]==""&&$X["ns"]==""&&!$Ae[$X["table"]]){$Rd[$R][]=$X;$ej[$X["table"]][$R]=array();}}}$e=array();$fe=array();$um=array();$le=array();foreach(array_keys($L)as$C)schema_column($C,$ej,$e);arsort($e);foreach($e -as$C=>$d){$Fg=null;foreach((array)idx($Rd,$C)as$X){if($X["table"]!=$C&&$L[$X["table"]])$Fg=($Fg===null?$e[$X["table"]]:min($Fg,$e[$X["table"]]));}$e[$C]=max($d,(int)$Fg-1);}foreach($L -as$C=>$R){$d=$e[$C];$fe[$d][]=$C;$al=.75*strlen($C);foreach($R["fields"]as$m)$al=max($al,.65*strlen($m["field"]));$um[$d]=max(idx($um,$d,0),ceil($al)+1);}foreach($Rd -as$C=>$dm){foreach($dm -as$X){$ke=$e[$C]+(idx($e,$X["table"],$e[$C])>$e[$C]?1:0);$le[$ke]=idx($le,$ke,0)+1;}}ksort($fe);$ze=0;$tm=0;$xb=0;$Ji=null;$Ek=array();$Nk=array();foreach($fe -as$d=>$T){if($Ji!==null){$xb=round($xb+$um[$Ji]+1.7+idx($le,$d,0)*.1,1);$Ih=array();foreach($T -as$C){$yk=0;$Sb=0;$Ug=array_keys((array)idx($ej,$C));foreach((array)idx($Rd,$C)as$X)$Ug[]=$X["table"];foreach($Ug -as$Qg){if($L[$Qg]&&$e[$Qg]<$d){$yk+=$L[$Qg]["pos"][0];$Sb++;}}$Ih[$C]=($Sb?$yk/$Sb:$ze);}asort($Ih);$T=array_keys($Ih);}$ll=0;foreach($T -as$C){$F=1.25*count($L[$C]["fields"]);$L[$C]["pos"]=($Ik[$C]?:array($ll,$xb));$Ek[$C]=$L[$C]["pos"][1];$Nk[$C]=$um[$d];$ll+=2.5+$F;$ze=max($ze,$L[$C]["pos"][0]+2.5+$F);$tm=max($tm,round($L[$C]["pos"][1]+$um[$d],1));if(!$Ik[$C])$Jk[]="\n\t'".js_escape($C)."': [ ".$L[$C]["pos"][0].", ".$L[$C]["pos"][1]." ]";}$Ji=$d;}$Of=array();$Pa=array();foreach($Rd -as$C=>$dm){foreach($dm -as$X){$Tk=idx($Ek,$X["table"],$Ek[$C]);$gk=$Ek[$C]+$Nk[$C];$rj=($Tk-1>$gk);$Mf=($rj?$gk+1:min($Ek[$C],$Tk)-1);$Oa=idx($Pa,(string)$Mf,0);$Pa[(string)$Mf]=$Oa+1;$Mf=round($rj?min($Mf+$Oa*.1,$Tk-1):$Mf-$Oa*.1,1);while($Of[(string)$Mf])$Mf-=.0001;$L[$C]["references"][$X["table"]][(string)$Mf]=array($X["source"],$X["target"]);$ej[$X["table"]][$C][(string)$Mf]=$X["target"];$Of[(string)$Mf]=true;}}echo'

    - -const tablePos = {',implode(",",$Kk)."\n",'}; -const tablePosDefault = {',implode(",",$Jk)."\n",'}; -const em = qs(\'#schema\').offsetHeight / ',$ze,'; -document.onmousemove = schemaMousemove; -document.onmouseup = event => schemaMouseup(event, \'',js_escape(DB),'\'); - -';foreach($L -as$C=>$R){echo"
    ",''.h($C)."";foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$Uk=>$gj){foreach($gj -as$Mf=>$bj){$Nf=$Mf-$R["pos"][1];$vk=($Nf>0?"left: 100%; width: calc($Nf"."em - 100%)":"left: $Nf"."em");$tm=($Nf>0?"100%":(-$Nf)."em");$s=0;foreach($bj[0]as$fk)echo"\n
    "."
    ";}}foreach((array)$ej[$C]as$Uk=>$gj){foreach($gj -as$Mf=>$Vk){$Nf=$Mf-$R["pos"][1];$s=0;foreach($Vk -as$Sk)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($L -as$C=>$R){foreach((array)$R["references"]as$Uk=>$gj){if($L[$Uk]){foreach($gj -as$Mf=>$bj){$Gg=$ze;$og=-10;foreach($bj[0]as$x=>$fk){$Ai=$R["pos"][0]+$zd[$C][$fk];$Bi=$L[$Uk]["pos"][0]+$zd[$Uk][$bj[1][$x]];$Gg=min($Gg,$Ai,$Bi);$og=max($og,$Ai,$Bi);}echo"
    \n";}}}}echo'
    -
    - -';$hc=array('','USE','DROP+CREATE','CREATE');$Mk=array('','DROP+CREATE','CREATE');$dc=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$dc[]='INSERT+UPDATE';$J=get_settings("adminer_export");if(!$J)$J=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");echo"
    ".lang(166)."".html_radios("output",adminer()->dumpOutput(),$J["output"])."\n","
    ".lang(167)."".html_radios("format",adminer()->dumpFormat(),$J["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(42)."".html_select('db_style',$hc,$J["db_style"]).(support("type")?checkbox("types",1,$J["types"],lang(7)):"").(support("routine")?checkbox("routines",1,$J["routines"],lang(79)):"").(support("event")?checkbox("events",1,$J["events"],lang(81)):"")),"
    ".lang(142)."".html_select('table_style',$Mk,$J["table_style"]).checkbox("auto_increment",1,$J["auto_increment"],lang(58)).(support("trigger")?checkbox("triggers",1,$J["triggers"],lang(162)):""),"
    ".lang(168)."".html_select('data_style',$dc,$J["data_style"]),'
    -';adminer()->dumpPrint();echo'

    -',input_token(),' - -';$Hi=array();if($_GET["ns"]===""){echo"","","\n";foreach(adminer()->schemas()as$L){if(!information_schema(DB,$L))echo"".checkbox("schemas[]",$L,true,$L,"","block")."\n";}}elseif(DB!=""){$kb=($a!=""?"":" checked");echo"","","","\n";$jm="";$Pk=tables_list();foreach($Pk -as$C=>$U){$Gi=preg_replace('~_.*~','',$C);$kb=($a==""||$a==(substr($a,-1)=="%"?"$Gi%":$C));$Mi="".checkbox("tables[]",$C,$kb,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$jm -.="$Mi\n";else -echo"$Mi\n";$Hi[$Gi]++;}echo$jm;if($Pk)echo -script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{$i=adminer()->databases();echo"","","\n";if($i){foreach($i -as$j){if(!information_schema($j)){$Gi=preg_replace('~_.*~','',$j);echo"".checkbox("databases[]",$j,$a==""||$a=="$Gi%",$j,"","block")."\n";$Hi[$Gi]++;}}}else -echo"";}echo' - -';$Hd=true;foreach($Hi -as$x=>$X){if($x!=""&&$X>1){echo($Hd?"

    ":" ")."".h($x)."";$Hd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(78));echo'

    \n";hidden_fields_get();echo -input_hidden("db",DB),($de?"":input_hidden("grant")),"\n","\n";while($J=$H->fetch_assoc())echo'
    ".lang(40)."".lang(38)."
    '.h($J["User"]),"".h($J["Host"]),''.lang(13)."\n";if(!$de||DB!="")echo"
    ","","\n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$Ce=&get_session("queries");$Be=&$Ce[DB];if(!$l&&$_POST["clear"]){$Be=array();redirect(remove_from_uri("history"));}stop_session();$qa=get_settings("adminer_import");if($_POST&&$qa)save_settings($qa,"adminer_import");page_header((isset($_GET["import"])?lang(82):lang(71)),$l);$Vf=driver()->lineComment();if(!$l&&$_POST&&!(isset($_GET["import"])&&adminer()->importProcess())){$pc=driver()->delimiter;$q=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$kk=adminer()->importServerPath();$q=@fopen((file_exists($kk)?$kk:"compress.zlib://$kk.gz"),"rb");$G=($q?fread($q,1e6):false);}else$G=get_file("sql_file",true,$pc);if(is_string($G)){if(($wg=ini_bytes("memory_limit"))!="-1")ini_set("memory_limit",max($wg,strval(2*strlen($G)+memory_get_usage()+8e6)));if($G!=""&&strlen($G)<1e6){$Ti=$G.(preg_match("~$pc\\s*\$~",$G)?"":$pc);if(!$Be||first(end($Be))!=$Ti){restart_session();$Be[]=array($Ti,time());set_session("queries",$Ce);stop_session();}}$hk="(?:\\s|/\\*[\s\S]*?\\*/|(?:$Vf)[^\n]*\n?|--\r?\n)";$ph=0;$Uc=true;$Rb=false;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$zb=0;$bd=array();$di='[\'"'.(JUSH=="sql"?'`':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Vf.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ml=microtime(true);while($G!=""){if(!$ph&&preg_match("~^$hk*+DELIMITER\\s+(\\S+)~i",$G,$A)){$pc=preg_quote($A[1]);$G=substr($G,strlen($A[0]));}elseif(!$ph&&JUSH=='pgsql'&&preg_match("~^($hk*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$G,$A)){$pc="\n\\\\\\.\r?\n";$Rb=true;$ph=strlen($A[0]);}else{preg_match("($pc\\s*|$di)",$G,$A,PREG_OFFSET_CAPTURE,$ph);list($Td,$F)=$A[0];if(!$Td&&$q&&!feof($q))$G -.=fread($q,1e5);else{if(!$Td&&rtrim($G)=="")break;$ph=$F+strlen($Td);if($Td&&!preg_match("(^$pc)",$Td)){$bb=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($F>0&&strtolower($G[$F-1])=="e"));$si=($Td=='/*'?'\*/':($Td=='['?']':(preg_match("~^(?:$Vf)~",$Td)?"\n":preg_quote($Td).($bb?'|\\\\.':''))));while(preg_match("($si|\$)s",$G,$A,PREG_OFFSET_CAPTURE,$ph)){$zj=$A[0][0];if(!$zj&&$q&&!feof($q))$G -.=fread($q,1e5);else{$ph=$A[0][1]+strlen($zj);if(!$zj||$zj[0]!="\\")break;}}}else{$Uc=false;$Ti=substr($G,0,$F+($Rb?3:0));$zb++;$Mi="
    ".adminer()->sqlCommandQuery($Ti)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$hk*+(ATTACH|VACUUM\\b.*\\bINTO)\\b~is",$Ti,$A)!==0){echo$Mi,"

    ".lang(171,preg_match('~ATTACH~i',$A[1])?'ATTACH':'VACUUM INTO')."\n";$bd[]=" $zb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Mi;ob_flush();flush();}$qk=microtime(true);if(connection()->multi_query($Ti)&&$g&&preg_match("~^$hk*+USE\\b~i",$Ti))$g->query($Ti);do{$H=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Mi:""),"

    ".lang(172).(connection()->errno?" (".connection()->errno.")":"").": ".adminer()->error()."\n";$bd[]=" $zb";if($_POST["error_stops"])break -2;}else{$_=ME."sql=".url_escape(trim($Ti));$bl=" (".format_time($qk).")".(strlen($_)<1900?" ".lang(13)."":"");$sa=connection()->affected_rows;$nm=($_POST["only_errors"]?"":driver()->warnings());$om="warnings-$zb";if($nm)$bl -.=", ".lang(53)."";$md=null;$Mh=null;$nd="explain-$zb";if(is_object($H)){$z=$_POST["limit"];$hh=$z;$Mh=print_select_result($H,$g,array(),$hh);if(!$_POST["only_errors"]){echo"

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

    ".lang(175,$sa)."$bl\n";}echo($nm?"

    \n":"");if($md){echo"\n";}}$qk=microtime(true);}while(connection()->next_result());}$G=substr($G,$ph);$ph=0;if($Rb){$pc=driver()->delimiter;$Rb=false;}}}}}if($Uc)echo"

    ".lang(176)."\n";else{$Qe=connection()->inTransaction();driver()->rollback();if($Qe)echo"

    ROLLBACK -- Adminer
    \n";if($_POST["only_errors"])echo"

    ".lang(177,$zb-count($bd))," (".format_time($ml).")\n";elseif($bd&&$zb>1)echo"

    ".lang(172).": ".implode("",$bd)."\n";}}else -echo"

    ".upload_error($G)."\n";}echo' -

    -';$jd="";if(!isset($_GET["import"])){$Ti=$_GET["sql"];if($_POST)$Ti=$_POST["query"];elseif($_GET["history"]=="all")$Ti=$Be;elseif($_GET["history"]!="")$Ti=idx($Be[$_GET["history"]],0);echo"

    ";textarea("query",$Ti,20);echo($_POST?"":script("qs('textarea').focus();")),"

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

    ".lang(180)."
    ",($Nl?input_hidden(ini_get("session.upload_progress.name"),$Nl):""),"SQL$me: ".file_input(" name='sql_file[]' multiple","\n$jd"),($Nl?" ":""),"
    \n";$Ne=adminer()->importServerPath();if($Ne)echo"
    ".lang(181)."
    ",lang(182,"".h($Ne)."$me")," ","
    \n";adminer()->importPrint();echo"

    ";}echo -checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(184))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(185))."\n",input_token();if(!isset($_GET["import"])&&$Be){print_fieldset("history",lang(186),$_GET["history"]!="");for($X=end($Be);$X;$X=prev($Be)){$x=key($Be);list($Ti,$bl,$Qc)=$X;echo'

    '.lang(13).""." ".@date("H:i:s",$bl).""." ".shorten_utf8(preg_replace('~\s+~',' ',ltrim(preg_replace("~^(?:$Vf).*~m",'',$Ti))),80,"").($Qc?" ($Qc)":"")."
    \n";}echo"\n","".lang(188)."\n","\n";}echo'
    -';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$Ll=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n -as$C=>$m){if((!$Ll&&!isset($m["privileges"]["insert"]))||adminer()->fieldName($m)=="")unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$ag=relative_uri((string)$_POST["referer"]);if($_POST["insert"])$ag=($Ll?null:relative_uri());elseif(!preg_match('~^.+&select=.+$~',$ag))$ag=ME."select=".url_escape($a);$w=indexes($a);$Fl=unique_array($_GET["where"],$w);$Wi="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($ag,lang(189),driver()->delete($a,$Wi,$Fl?0:1));else{$O=array();foreach($n -as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Ll){if(!$O)redirect($ag);queries_redirect($ag,lang(190),driver()->update($a,$O,$Wi,$Fl?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$H=driver()->insert($a,$O);$Lf=($H?last_id($H):0);queries_redirect($ag,lang(191,($Lf?" $Lf":"")),$H);}}}$J=null;$G="";$bl="";if($Z){$M=array();$Hj=array("*");foreach($n -as$C=>$m){if(isset($m["privileges"]["select"])){$Ca=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$d=($Ca?"$Ca AS ":"").idf_escape($C);$M[]=$d;if($Ca)$Hj[]=$d;}}$J=array();if(!support("table")){$M=array("*");$Hj=$M;}if($M){$qk=microtime(true);$H=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));$G=str_replace("SELECT ".implode(", ",$M),"SELECT ".implode(", ",$Hj),driver()->query);$bl=format_time($qk);if(!$H)$l=adminer()->error();else{$J=$H->fetch_assoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetch_assoc()))$J=null;}}if(!$n&&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$x=>$X){if(!$Z)$J[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}if($_POST["save"]){$Ci=array();foreach((array)$_POST["fields"]as$x=>$X)$Ci[bracket_escape($x,true)]=$X;$J=$Ci+($J?$J:array());}edit_form($a,$n,$J,$Ll,$l,$G,$bl);}elseif(isset($_GET["create"])){function -referencable_primary($Jj){$I=array();foreach(table_status('',true)as$Gk=>$R){if($Gk!=$Jj&&fk_support($R)){foreach(fields($Gk)as$m){if($m["primary"]){if($I[$Gk]){unset($I[$Gk]);break;}$I[$Gk]=$m;}}}}return$I;}$a=$_GET["create"];$ii=driver()->partitionBy;$mi=($ii&&$a!=""?driver()->partitionsInfo($a):array());$dj=referencable_primary($a);$Rd=array();foreach($dj -as$Gk=>$m)$Rd[str_replace("`","``",$Gk)."`".str_replace("`","``",$m["field"])]=$Gk;$Ph=array();$S=array();if($a!=""){$Ph=fields($a);$S=table_status1($a);if(count($S)<2)$l=lang(12);}$J=$_POST;$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!$l)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($J["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(192),drop_tables(array($a)));else{$n=array();$wa=array();$Rl=false;$Pd=array();$Oh=reset($Ph);$ua=" FIRST";foreach($J["fields"]as$x=>$m){$p=$Rd[$m["type"]];$_l=($p!==null?$dj[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Ri=process_field($m,$_l);$wa[]=array($m["orig"],$Ri,$ua);if(!$Oh||$Ri!==process_field($Oh,$Oh)){$n[]=array($m["orig"],$Ri,$ua);if($m["orig"]!=""||$ua)$Rl=true;}if($p!==null)$Pd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Rd[$m["type"]],'source'=>array($m["field"]),'target'=>array($_l["field"]),'on_delete'=>$m["on_delete"],));$ua=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Rl=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Oh=next($Ph);if(!$Oh)$ua="";}}$ki=array();if(in_array($J["partition_by"],$ii)){foreach($J -as$x=>$X){if(preg_match('~^partition~',$x))$ki[$x]=$X;}foreach($ki["partition_names"]as$x=>$C){if($C==""){unset($ki["partition_names"][$x]);unset($ki["partition_values"][$x]);}}$ki["partition_names"]=array_values($ki["partition_names"]);$ki["partition_values"]=array_values($ki["partition_values"]);if($ki==$mi)$ki=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$ki=null;$B=lang(193);if($a==""){cookie("adminer_engine",$J["Engine"]);$B=lang(194);}$C=trim($J["name"]);$ag=ME.(support("table")?"table=":"select=").url_escape($C);$H=alter_table($a,$C,(JUSH=="sqlite"&&($Rl||$Pd)?$wa:$n),$Pd,($J["Comment"]!=$S["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$S["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$S["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$ki);if($H&&!Queries::$queries&&$a!=""&&!$n&&!$Pd)redirect($ag);queries_redirect($ag,$B,$H);}}page_header(($a!=""?lang(51):lang(84)),$l,array("table"=>$a),h($a));if(!$_POST){$Bl=driver()->types();$J=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Bl["int"])?"int":(isset($Bl["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$J=$S;$J["name"]=$a;$J["fields"]=array();if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($Ph -as$m){if($m["generated"])$m["default"]=ltrim($m["default"]);$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$J["fields"][]=$m;}if($ii){$J+=$mi;$J["partition_names"][]="";$J["partition_values"][]="";}}}$vb=flat_collations();$Wc=driver()->engines();foreach($Wc -as$Vc){if(!strcasecmp($Vc,$J["Engine"])){$J["Engine"]=$Vc;break;}}$jg=max_input_vars(12,20);if($jg){$Ae=(count($J["fields"])>$jg?"":" hidden");echo"".max_input_vars_error()."\n";}echo' -
    -

    -';if(support("columns")||$a==""){echo -lang(195).": \n",($Wc?html_select("Engine",array(""=>"(".lang(196).")")+$Wc,$J["Engine"],on('change','helpClose').on_help_value())."\n":"");if($vb)echo"".optionlist($vb)."\n",(preg_match("~sqlite|mssql~",JUSH)?"":"\n");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($J["fields"],$vb,"TABLE",$Rd);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(58).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(197),on('click','columnShowClick',5),"jsonly");$Bb=($_POST?$_POST["comments"]:get_setting("comments"));if(support("comment")){echo -checkbox("comments",1,$Bb,lang(57),on('click','editingCommentsClick',true),"jsonly").' ';$c=" name='Comment' data-maxlength='".(min_version(5.5)?2048:60)."'".($Bb?"":" class='hidden'");echo -adminer()->commentInput('TABLE',$c,$J["Comment"]);}echo'

    - -';}echo' -';if($a!="")echo' -';if($ii&&(JUSH=='sql'||$a=="")){$ji=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset("partition",lang(199),$J["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$ii),$J["partition_by"],on('change','partitionByChange').on_help_value('.','PARTITION BY $&'))."\n","()\n",lang(200).": \n","\n","\n";foreach($J["partition_names"]as$x=>$X)echo'','\n\n";}echo -input_token(),'

    -';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$We=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Te=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$We[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$We[]="SPATIAL";if(min_version('',11.7)&&preg_match('~MyISAM|InnoDB~i',$S["Engine"]))$We[]="VECTOR";$w=indexes($a);$n=fields($a);$Ki=array();if(JUSH=="mongo"){$Ki=$w["_id_"];unset($We[0]);unset($w["_id_"]);}$J=$_POST;if($J)save_settings(array("index_options"=>$J["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($J["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$We)){$e=array();$Sf=array();$sc=array();$Bh=array();$Ue=(support("partial_indexes")?$v["partial"]:"");$Se=(in_array($v["algorithm"],$Te)?$v["algorithm"]:"");$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$qc=idx($v["descs"],$x);$Ah=idx($v["opclasses"],$x);$O[]=($n[$d]?idf_escape($d):$d).($y?"(".(+$y).")":"").($Ah!=""?" ".idf_escape($Ah):"").($qc?" DESC":"");$e[]=$d;$Sf[]=($y?:null);$sc[]=$qc;$Bh[]="$Ah";}}$kd=$w[$C];if($kd){ksort($kd["columns"]);ksort($kd["lengths"]);ksort($kd["descs"]);if($v["type"]==$kd["type"]&&array_values($kd["columns"])===$e&&(!$kd["lengths"]||array_values($kd["lengths"])===$Sf)&&array_values($kd["descs"])===$sc&&(!$kd["opclasses"]||array_values($kd["opclasses"])===$Bh)&&$kd["partial"]==$Ue&&(!$Te||$kd["algorithm"]==$Se)){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O,$Se,$Ue);}}foreach($w -as$C=>$kd)$b[]=array($kd["type"],$C,"DROP");if(!$b)redirect(ME."table=".url_escape($a));queries_redirect(ME."table=".url_escape($a),lang(203),alter_indexes($a,$b));}page_header(lang(154),$l,array("table"=>$a),h($a));$Ad=array_keys($n);if($_POST["add"]){foreach($J["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$J["indexes"][$x]["columns"][]="";}$v=end($J["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$J["indexes"][]=array("columns"=>array(1=>""));}if(!$J){foreach($w -as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$J["indexes"]=$w;}$Sf=(JUSH=="sql"||JUSH=="mssql");$Bh=driver()->indexOpclasses();$Xj=($_POST?$_POST["options"]:get_setting("index_options"));echo' -
    -
    - - - -';if($Ki){echo"
    ',lang(204);$Le=" class='idxopts".($Xj?"":" hidden")."'";if($Te)echo"".lang(205).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'',lang(206).($Sf?" (".lang(207).")":"");if($Sf||support("descidx"))echo -checkbox("options",1,$Xj,lang(127),on('click','indexOptionsShow'),"jsonly")."\n";echo'',lang(208);if(support("partial_indexes"))echo"".lang(209);echo' -
    PRIMARY";foreach($Ki["columns"]as$x=>$d)echo -select_input(" disabled",array_combine($Ad,$Ad),$d)," ";echo"\n";}$wf=1;foreach($J["indexes"]as$v){if(!$_POST["drop_col"]||$wf!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$wf][type]",array(-1=>"")+$We,$v["type"],($wf==count($J["indexes"])?on('change','indexesAddRow'):""),"label-type");if($Te)echo"".html_select("indexes[$wf][algorithm]",array_merge(array(""),$Te),$v['algorithm'],"","label-algorithm");echo"";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"".select_input(" name='indexes[$wf][columns][$s]' title='".lang(55)."'".on('change','indexesChangeColumn',(JUSH=="sql"?"":$_GET["indexes"]."_")),($n&&($d==""||$n[$d])?array_combine($Ad,$Ad):array()),$d)," ",($Sf?"":"");if($Bh){$Ah=idx($v["opclasses"],$x);echo -html_select("indexes[$wf][opclasses][$s]",array(""=>"(".lang(210).")")+array_combine($Bh,$Bh)+($Ah!=""?array($Ah=>$Ah):array()),$Ah),doc_link(array('pgsql'=>'indexes-opclass.html'));}echo(support("descidx")?checkbox("indexes[$wf][descs][$s]",1,idx($v["descs"],$x),lang(66)):""),"
    ","
    ";$s++;}echo"
    \n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$wf]","x",lang(130),on('click','editingRemoveRow','indexes$1[type]'));}$wf++;}echo'
    -
    -

    - -',input_token(),'

    -';}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(211),drop_databases(array(DB)));}elseif($C!==DB){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".url_escape($C),lang(212),rename_database($C,(string)$J["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$wk=true;$Jf="";foreach($i -as$j){if(count($i)==1||$j!=""){if(!create_database($j,(string)$J["collation"]))$wk=false;$Jf=$j;}}restart_session();set_session("dbs",null);queries_redirect(preg_replace('~&db=[^&]*~','',ME)."db=".url_escape($Jf),lang(213),$wk);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(214));}}page_header(DB!=""?lang(74):lang(134),$l,array(),h(DB));$vb=collations();$C=DB;if($_POST)$C=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,$vb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$de){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$de,$A)&&$A[1]){$C=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo' -
    -

    -',($_POST["add"]||strpos($C,"\n")?'
    ':'')."\n",($vb?html_select("collation",array(""=>"(".lang(121).")")+$vb,$J["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):"")."\n",' -';if(DB!="")echo"\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo -icon("plus","add[0]","+",lang(128))."\n";echo -input_token(),'

    -';}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(215));else{$C=trim($J["name"]);$_ -.=url_escape($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,lang(216));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,lang(217));else -redirect($_);}}page_header($_GET["ns"]!=""?lang(75):lang(76),$l);if(!$J)$J["name"]=$_GET["ns"];echo' -
    -

    - -';if($_GET["ns"]!="")echo"\n";echo -input_token(),'

    -';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(218).": ".h($ca),$l);$wj=(isset($_GET["callf"])?"FUNCTION":"PROCEDURE");$uj=routine($_GET["call"],$wj);$Oe=array();$Vh=array();foreach($uj["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$Vh[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Oe[]=$s;}if(!$l&&$_POST){$cb=array();foreach($uj["fields"]as$x=>$m){$X="";if(in_array($x,$Oe)){$X=process_input($m);if($X===false)$X="''";if(isset($Vh[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($Vh[$x]))$cb[]="@".idf_escape($m["field"]);elseif(in_array($x,$Oe))$cb[]=$X;}$G=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($uj["returns"],"type")=="record"?"* FROM ":"").table($ca)."(".implode(", ",$cb).")";$qk=microtime(true);$H=connection()->multi_query($G);$sa=connection()->affected_rows;echo -adminer()->selectQuery($G,$qk,!$H);if(!$H)echo"

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

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

    -';if($Oe){echo"\n";foreach($Oe -as$x){$m=$uj["fields"][$x];$C=$m["field"];echo"
    ".adminer()->fieldName($m);$Y=idx($_POST["fields"],$C);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$C,""));echo"\n";}echo"
    \n";}echo'

    - -',input_token(),'

    - -',adminer()->commentValue($wj,$uj['comment']);}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$J=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Sk=array();foreach($J["source"]as$x=>$X)$Sk[$x]=$J["target"][$x];$J["target"]=$Sk;}if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(" $C"=>($J["drop"]?"":" ".format_foreign_key($J))));else{$b="ALTER TABLE ".table($a);$H=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$J["drop"])$H=queries("$b ADD".format_foreign_key($J));}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(220):($C!=""?lang(221):lang(222))),$H);if(!$J["drop"])$l=lang(223);}page_header(($C!=""?lang(224):lang(159)),$l,array("table"=>$a),h($C!=""?$C:$a));if($_POST){ksort($J["source"]);if($_POST["change"]||$_POST["change-js"])$J["target"]=array();else$J["source"][]="";}elseif($C!=""){$Rd=foreign_keys($a);$J=$Rd[$C];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=array("");}echo' -
    -';$fk=array_keys(fields($a));if($J["db"]!="")connection()->select_db($J["db"]);if($J["ns"]!=""){$Qh=get_schema();set_schema($J["ns"]);}$cj=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Sk=array_keys(fields(in_array($J["table"],$cj)?$J["table"]:reset($cj)));$c=on('change','foreignChange');echo"

    \n";if(support("scheme")){$Aj=array_filter(adminer()->schemas(),function($L){return!information_schema(DB,$L);});echo"";if($J["ns"]!="")set_schema($Qh);}elseif(JUSH!="sqlite"){$ic=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$ic[]=$j;}echo"";}echo -input_hidden("change-js"),'

    - - -';$wf=0;foreach($J["source"]as$x=>$X){echo"","
    ',lang(156),'',lang(157),'
    ".html_select("source[".(+$x)."]",array(-1=>"")+$fk,$X,($wf==count($J["source"])-1?on('change','foreignAddRow'):""),"label-source"),"".html_select("target[".(+$x)."]",$Sk,idx($J["target"],$x),"","label-target");$wf++;}echo'
    -

    - - -',(support("deferrable")?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$J["deferrable"]).' ':''),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'

    - -

    -';if($C!="")echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$Rh="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Rh=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($J["name"]);$Ca=" AS\n$J[select]";$ag=ME."table=".url_escape($C);$B=lang(228);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Rh=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ca,$ag,$B);else{$Wk="adminer_".uniqid();drop_create("DROP $Rh ".table($a),"CREATE $U ".table($C).$Ca,"DROP $U ".table($C),"CREATE $U ".table($Wk).$Ca,"DROP $U ".table($Wk),($_POST["drop"]?substr(ME,0,-1):$ag),lang(229),$B,lang(230),$a,$C);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($Rh!="VIEW");if(!$l)$l=adminer()->error();}page_header(($a!=""?lang(50):lang(231)),$l,array("table"=>$a),h($a));echo' -
    -

    ',lang(208),': -',(support("materializedview")?" ".checkbox("materialized",1,$J["materialized"],lang(150)):""),'

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

    - -';if($a!="")echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$kf=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$sk=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$J=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(232));elseif(in_array($J["INTERVAL_FIELD"],$kf)&&isset($sk[$J["STATUS"]])){$_j="\nON SCHEDULE ".($J["INTERVAL_VALUE"]?"EVERY ".q($J["INTERVAL_VALUE"])." $J[INTERVAL_FIELD]".($J["STARTS"]?" STARTS ".q($J["STARTS"]):"").($J["ENDS"]?" ENDS ".q($J["ENDS"]):""):"AT ".q($J["STARTS"]))." ON COMPLETION".($J["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(233):lang(234)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$_j.($aa!=$J["EVENT_NAME"]?"\nRENAME TO ".idf_escape($J["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($J["EVENT_NAME"]).$_j)."\n".$sk[$J["STATUS"]]." COMMENT ".q($J["EVENT_COMMENT"]).rtrim(" DO\n$J[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(235).": ".h($aa):lang(236)),$l);if(!$J&&$aa!=""){$K=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$J=reset($K);}echo' -
    - -
    ',lang(208),' -
    ',lang(237),' -
    ',lang(238),' -
    ',lang(239),' ',html_select("INTERVAL_FIELD",$kf,$J["INTERVAL_FIELD"]),'
    ',lang(137),'',html_select("STATUS",$sk,$J["STATUS"]),'
    ',lang(57),' -
    ',checkbox("ON_COMPLETION","PRESERVE",$J["ON_COMPLETION"]=="PRESERVE",lang(240)),'
    -

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

    - -';if($aa!="")echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$uj=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])&&!$l){foreach($J["fields"]as$x=>$m){if($m["field"]=="")unset($J["fields"][$x]);}$th=routine_id($ca,routine($_GET["procedure"],$uj));$Xg=routine_id($J["name"],$J);$h=create_routine($uj,$J);$ag=substr(ME,0,-1);$B=lang(241);if(!$_POST["drop"]&&$th==$Xg&&connection()->flavor!="mysql")query_redirect(substr_replace($h,' OR REPLACE',6,0),$ag,$B);else{$Wk="adminer_".uniqid();drop_create("DROP $uj $th",$h,"DROP $uj $Xg",create_routine($uj,array("name"=>$Wk)+$J),"DROP $uj ".routine_id($Wk,$J),$ag,lang(242),$B,lang(243),$ca,$J["name"]);}}page_header(($ca!=""?(isset($_GET["function"])?lang(244):lang(245)).": ".h($ca):(isset($_GET["function"])?lang(246):lang(247))),$l);if(!$_POST){if($ca=="")$J["language"]="sql";else{$J=routine($_GET["procedure"],$uj);$J["name"]=$ca;}}$vb=(JUSH=="sql"?flat_collations():array());$vj=routine_languages();echo($vb?"".optionlist($vb)."":""),' -
    -

    ',lang(208),': -',($vj?"\n":""),' -

    - -';edit_fields($J["fields"],$vb,$uj);if(isset($_GET["function"])){echo"
    ".lang(248);edit_type("returns",(array)$J["returns"],$vb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'
    -',script("editFields();"),'
    -

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

    - -';if($ca!="")echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$J=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(249));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(250));elseif($ea!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($C),$_,lang(251));else -redirect($_);}page_header($ea!=""?lang(252).": ".h($ea):lang(253),$l);if(!$J)$J["name"]=$ea;echo' -
    -

    - -';if($ea!="")echo"\n";echo -input_token(),'

    -';}elseif(isset($_GET["type"])){function -enum_values($nc){$Y="'(?:[^']|'')*'";if(!preg_match('~^AS\s+ENUM\s*\(\s*('.$Y.'(?:\s*,\s*'.$Y.')*)\s*\)$~i',$nc,$A))return -null;preg_match_all('~'.$Y.'~',$A[1],$gg);return$gg[0];}function -add_enum_values($U,$rh,$Vg){$wh=enum_values($rh);$bh=enum_values($Vg);if($wh===null||$bh===null)return -null;$I=array();$s=0;foreach($bh -as$Y){if($Y===idx($wh,$s))$s++;else$I[]="ALTER TYPE ".idf_escape($U)." ADD VALUE $Y".($s -

    -',lang(208).": \n",doc_link(array('pgsql'=>"sql-createtype.html",),"?");textarea("as",$J["as"]);echo"

    \n";if($fa!="")echo"\n";echo -input_token(),' -';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$J=$_POST;if($J&&!$l){if(JUSH=="sqlite")$H=recreate_table($a,$a,array(),array(),array(),"",array(),"$C",($J["drop"]?"":$J["clause"]));else{$H=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));if(!$J["drop"])$H=queries("ALTER TABLE ".table($a)." ADD".($J["name"]!=""?" CONSTRAINT ".idf_escape($J["name"]):"")." CHECK ($J[clause])");}queries_redirect(ME."table=".url_escape($a),($J["drop"]?lang(259):($C!=""?lang(260):lang(261))),$H);}page_header(($C!=""?lang(262):lang(161)),$l,array("table"=>$a),h($C!=""?$C:$a));if(!$J){$lb=driver()->checkConstraints($a);$J=array("name"=>$C,"clause"=>$lb[$C]);}echo' -

    -

    ';if(JUSH!="sqlite")echo -lang(208).': ';echo -doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'

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

    -';if($C!="")echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$wl=trigger_options();$J=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$wl["Timing"])&&in_array($_POST["Event"],$wl["Event"])&&in_array($_POST["Type"],$wl["Type"])){$xh=" ON ".table($a);$Hc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$xh:"");$ag=ME."table=".url_escape($a);if($_POST["drop"])query_redirect($Hc,$ag,lang(263));else{if($C!="")queries($Hc);queries_redirect($ag,($C!=""?lang(264):lang(265)),queries(create_trigger($xh,$_POST)));if($C!="")queries(create_trigger($xh,$J+array("Type"=>reset($wl["Type"]))));}}$J=$_POST;}page_header(($C!=""?lang(266):lang(163)),$l,array("table"=>$a),h($C!=""?$C:$a));$ul=on('change','triggerChange',"^".preg_quote($a,"/")."_[ba][iud]$",$a);echo' -
    - -
    ',lang(267),'',html_select("Timing",$wl["Timing"],$J["Timing"],$ul),'
    ',lang(268),'',html_select("Event",$wl["Event"],$J["Event"],$ul),(in_array("UPDATE OF",$wl["Event"])?" ":""),'
    ',lang(56),'',html_select("Type",$wl["Type"],$J["Type"]),'
    ',lang(208),' -
    -',script("fire(qs('#form')['Timing'], 'change');"),'

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

    - -';if($C!="")echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["user"])){function -grant($de,array$Pi,$e,$xh){if(!$Pi)return -true;if($Pi==array("ALL PRIVILEGES","GRANT OPTION"))return($de=="GRANT"?queries("$de ALL PRIVILEGES$xh WITH GRANT OPTION"):queries("$de ALL PRIVILEGES$xh")&&queries("$de GRANT OPTION$xh"));return -queries("$de ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Pi).$e).$xh);}$ga=$_GET["user"];$Pi=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$J){foreach(explode(",",($J["Privilege"]=="Grant option"?"":$J["Context"]))as$Nb)$Pi[$Nb=="File access on server"?"Server Admin":$Nb][$J["Privilege"]]=$J["Comment"];}unset($Pi["Server Admin"]["Usage"]);foreach($Pi["Tables"]as$x=>$X)unset($Pi["Databases"][$x]);$Wg=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$Wg[$X]=(array)$Wg[$X]+idx($_POST["grants"],$x,array());}$ee=array();if(isset($_GET["host"])&&($H=connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])))){while($J=$H->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$J[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$gg,PREG_SET_ORDER)){foreach($gg -as$X){if($X[1]!="USAGE")$ee["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$J[0]))$ee["$A[2]$X[2]"]["GRANT OPTION"]=true;}}}}if($_POST&&!$l){$vh=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $vh",ME."privileges=",lang(269));else{$ah=q($_POST["user"])."@".q($_POST["host"]);$ni=$_POST["pass"];$Ub=false;$H=true;if($vh!=$ah){$Ub=queries("CREATE USER $ah IDENTIFIED BY ".($_POST["hashed"]?"PASSWORD ":"").q($ni));$H=$Ub;}elseif($ni!="")$H=queries("SET PASSWORD FOR $ah = ".(min_version(8,99)||$_POST["hashed"]?q($ni):"PASSWORD(".q($ni).")"));if($H){$qj=array();foreach($Wg -as$jh=>$de){if(isset($_GET["grant"]))$de=array_filter($de);$de=array_keys($de);if(isset($_GET["grant"]))$qj=array_diff(array_keys(array_filter($Wg[$jh],'strlen')),$de);elseif($vh==$ah){$sh=array_keys((array)$ee[$jh]);$qj=array_diff($sh,$de);$de=array_diff($de,$sh);unset($ee[$jh]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$jh,$A)&&(!grant("REVOKE",$qj,$A[2]," ON $A[1] FROM $ah")||!grant("GRANT",$de,$A[2]," ON $A[1] TO $ah"))){$H=false;break;}}}if($H&&isset($_GET["host"])){if($vh!=$ah)queries("DROP USER $vh");elseif(!isset($_GET["grant"])){foreach($ee -as$jh=>$qj){if(preg_match('~^(.+)(\(.*\))?$~U',$jh,$A))grant("REVOKE",array_keys($qj),$A[2]," ON $A[1] FROM $ah");}}}if($H&&!Queries::$queries)redirect(ME."privileges=");queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(270):lang(271)),$H);if($Ub)connection()->query("DROP USER $ah");}}page_header((isset($_GET["host"])?lang(40).": ".h("$ga@$_GET[host]"):lang(170)),$l,array("privileges"=>array('',lang(78))));$J=$_POST;if($J)$ee=$Wg;else{$J=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$ee[(DB==""||$ee?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    - -
    ',lang(38),' -
    ',lang(40),' -
    ',lang(41),' -',($J["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8,99)?"":checkbox("hashed",1,$J["hashed"],lang(272),on('click','hashedClick'))),'
    - -',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(38),"Databases"=>lang(42),"Tables"=>lang(152),"Procedures"=>lang(273),)as$Nb=>$qc){foreach((array)$Pi[$Nb]as$Oi=>$_b){echo"$qc'.h($Oi);$s=0;foreach($ee -as$jh=>$de){$C="'grants[$s][".h(strtoupper($Oi))."]'";$Y=$de[strtoupper($Oi)];if($Nb=="Server Admin"&&$jh!=(isset($ee["*.*"])?"*.*":".*"))echo"
    ".lang(78).doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($ee -as$jh=>$de){echo''.($jh!="*.*"?"":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else -echo"";$s++;}}}echo"
    \n",'

    - -';if(isset($_GET["host"]))echo' -';echo -input_token(),'

    -';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$Cf=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Cf++;}queries_redirect(ME."processlist=",lang(276,$Cf),$Cf||!$_POST["kill"]);}}page_header(lang(135),$l);echo' -
    -
    - -';$s=-1;foreach(adminer()->processList()as$s=>$J){if(!$s){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($J -as$x=>$X)echo"$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"
    ".checkbox("kill[]",$J[JUSH=="sql"?"Id":"pid"],0):"");foreach($J -as$x=>$X)echo"".($X!=""&&((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$J["Command"]))||(JUSH=="pgsql"&&$x=="query")||(JUSH=="oracle"&&$x=="sql_text"))?"".shorten_utf8($X,100,"").' '.lang(277).''.' '.copy_icon():h($X));echo"\n";}echo'
    -
    -

    -',script("copyCode(qsl('table'));");if(support("kill"))echo($s+1)."/".lang(278,max_connections()),"

    \n";echo -input_token(),'

    -',script("tableCheck();");}elseif($_GET["select"]!=""){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$Rd=column_foreign_keys($a);$qh=$S["Oid"];$ra=get_settings("adminer_import");$sj=array();$e=array();$Ej=array();$Jh=array();$Zk=null;foreach($n -as$x=>$m){$C=adminer()->fieldName($m);$Rg=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$Rg;if(is_shortable($m))$Zk=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$Ej[$x]=$Rg;if(isset($m["privileges"]["order"])&&$C!="")$Jh[$x]=$Rg;$sj+=$m["privileges"];}list($M,$ge)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$ge=array_unique($ge);$qf=count($ge)selectSearchProcess($n,$w);$Ih=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Gl=>$J){$Ca=convert_field($n[key($J)]);$M=array($Ca?:idf_escape(key($J)));$Z[]=where_check(bracket_escape($Gl,true),$n);$I=driver()->select($a,$M,$Z,$M);if($I)echo -first($I->fetch_row());}exit;}$Ki=$Il=array();foreach($w -as$v){if($v["type"]=="PRIMARY"){$Ki=array_flip($v["columns"]);$Il=($M?$Ki:array());foreach($Il -as$x=>$X){if(in_array(idf_escape($x),$M))unset($Il[$x]);}break;}}if($qh&&!$Ki){$Ki=$Il=array($qh=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($qh));}if($_POST&&!$l){$qm=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$lb=array();foreach($_POST["check"]as$hb)$lb[]=where_check($hb,$n);$qm[]="((".implode(") OR (",$lb)."))";}$sm=$qm;$qm=($qm?"\nWHERE ".implode(" AND ",$qm):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$Gj=($M?:array("*"));$Pb=convert_fields($e,$n,$M);if($Pb)$Gj[]=substr($Pb,2);$G="";if(is_array($_POST["check"])&&!$Ki){$Wd=implode(", ",$Gj)."\nFROM ".table($a);$ie=($ge&&$qf?"\nGROUP BY ".implode(", ",$ge):"").($Ih?"\nORDER BY ".implode(", ",$Ih):"");$El=array();foreach($_POST["check"]as$X)$El[]="(SELECT".limit($Wd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$ie,1).")";$G=implode(" UNION ALL ",$El);}adminer()->dumpData($a,"table",$G,$Gj,$sm,($qf?$ge:array()),$Ih);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Rd)){if($_POST["save"]||$_POST["delete"]){$H=true;$sa=0;$Ra=false;$O=array();if(!$_POST["delete"]){foreach($n -as$C=>$X){$u=bracket_escape($C);if(isset($_POST["fields"][$u])||$_FILES["fields-$u"]){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}}if($_POST["delete"]||$O){$G=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($Ki&&is_array($_POST["check"]))||$qf){$H=($_POST["delete"]?driver()->delete($a,$qm):($_POST["clone"]?queries("INSERT $G$qm".driver()->insertReturning($a)):driver()->update($a,$O,$qm)));$sa=connection()->affected_rows;if(is_object($H))$sa+=$H->num_rows;}else{$Ra=count((array)$_POST["check"])>1&&driver()->begin();foreach((array)$_POST["check"]as$X){$pm="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$H=($_POST["delete"]?driver()->delete($a,$pm,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$pm)):driver()->update($a,$O,$pm,1)));if(!$H)break;$sa+=connection()->affected_rows;}if($Ra&&$H&&!driver()->commit())$H=false;}}$B=lang(280,$sa);if($_POST["clone"]&&$H&&$sa==1){$Lf=last_id($H);if($Lf)$B=lang(191," $Lf");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page|next":""),$B,$H);if($Ra)driver()->rollback();if(!$_POST["delete"]){$Ci=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$Ci),$Ci,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){$H=true;$sa=0;$Ra=count((array)$_POST["val"])>1&&driver()->begin();foreach((array)$_POST["val"]as$Gl=>$J){$O=array();foreach($J -as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$H=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check(bracket_escape($Gl,true),$n),($qf||$Ki?0:1)," ");if(!$H)break;$sa+=connection()->affected_rows;}if($Ra)$H=$H&&driver()->commit();queries_redirect(remove_from_uri(),lang(280,$sa),$H);if($Ra)driver()->rollback();}elseif(!is_string($Bd=get_file("csv_file",true)))$l=upload_error($Bd);elseif(!preg_match('~~u',$Bd))$l=lang(281);else{save_settings(array("output"=>$ra["output"],"format"=>$_POST["separator"]),"adminer_import");$wb=array_keys($n);$Lj=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$Yb=parse_csv($Bd,$Lj);$sa=count($Yb);driver()->begin();$K=array();foreach($Yb -as$x=>$em){if(!$x&&!array_diff($em,$wb)){$wb=$em;$sa--;}else{$O=array();foreach($em -as$s=>$sb)$O[idf_escape($wb[$s])]=($sb==""&&$n[$wb[$s]]["null"]?"NULL":q(csv_value($sb)));$K[]=$O;}}$H=(!$K||driver()->insertUpdate($a,$K,$Ki));if($H)driver()->commit();queries_redirect(remove_from_uri("page|next"),lang(282,$sa),$H);driver()->rollback();}}}$Gk=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else -page_header(lang(60).": $Gk",$l);$O=null;if(isset($sj["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){$Y=$X["val"];if(is_array($Y))$Y=(count($Y)==1&&preg_match('~^val-(.*)~s',reset($Y),$A)?$A[1]:"");if($X["col"]!=""&&$Y!=""&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$Y)))))$O -.="&set[".url_escape(bracket_escape($X["col"]))."]=".url_escape($Y);}}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"

    ".lang(283).($n?".":": ".adminer()->error())."\n";else{echo"

    \n","\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Ej,$w);adminer()->selectOrderPrint($Ih,$Jh,$w);adminer()->selectLimitPrint($z);if($Zk!==null)adminer()->selectLengthPrint($Zk);adminer()->selectActionPrint($w);echo"
    \n";foreach((array)$_GET["where"]as$X){if($X["op"]=="SQL"&&!in_array($_SERVER["HTTP_SEC_FETCH_SITE"],array("","same-origin"))){echo"

    ".lang(116).' '.lang(117)."\n";page_footer();exit;}}$D=$_GET["page"];$Ud=null;if($D=="last"){$Ud=get_val(count_rows($a,$Z,$qf,$ge));$D=floor(max(0,intval($Ud)-1)/$z);}$Fj=$M;$he=$ge;if(!$Fj){$Fj[]="*";$Pb=convert_fields($e,$n,$M);if($Pb)$Fj[]=substr($Pb,2);}foreach($M -as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($Ca=convert_field($m)))$Fj[$x]="$Ca AS $X";}if(JUSH=="pgsql"||JUSH=="mssql"){foreach((array)$_GET["columns"]as$x=>$X){if(isset($Fj[$x])&&$X["fun"])$Fj[$x].=" AS ".idf_escape(apply_sql_function($X["fun"],($X["col"]!=""?$X["col"]:"*")));}}if(!$qf&&$Il){foreach($Il -as$x=>$X){$Fj[]=idf_escape($x);if($he)$he[]=idf_escape($x);}}$H=driver()->select($a,$Fj,$Z,$he,$Ih,$z,$D,true);if(!is_object($H))echo"

    ".(adminer()->error()?:lang(25))."\n";else{if(JUSH=="mssql"&&$D)$H->seek($z*$D);$Tc=array();$K=array();while($J=$H->fetch_assoc()){if($D&&JUSH=="oracle")unset($J["RNUM"]);$K[]=$J;}$se=($z&&(support("cursor")?$_GET["next"]!="":count($K)>=$z));if(is_ajax()&&$se)header("X-Next-Page: ".pagination_href($D+1));if($_GET["modify"]&&$K){$pg=max_input_vars(count($K[0])+1,20);echo($pg&&count($K)>$pg?"

    ".max_input_vars_error()."\n":"");}echo"

    \n";if($_GET["page"]!="last"&&$z&&$ge&&$qf&&JUSH=="sql")$Ud=get_val(" SELECT FOUND_ROWS()");if(!$K)echo"

    ".lang(15)."\n";else{$Na=adminer()->backwardKeys($a,$Gk);echo"

    ","\n","".(!$ge&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($K,$Rd)as$Pg=>$J){$Fl=unique_array($K[$Pg],$w);if(!$Fl){$Fl=array();reset($M);foreach($K[$Pg]as$x=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$Fl[$x]=$X;next($M);}}$Gl="";foreach($Fl -as$x=>$X){$m=(array)$n[$x];$pf=is_blob($m);if((JUSH=="sql"||JUSH=="pgsql")&&($pf||preg_match('~'.text_type().'~',$m["type"]))&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($pf||JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($pf?(string)driver()->value($X,$m):$X);}$Gl -.="&".($X!==null?"where[".url_escape(bracket_escape($x))."]=".url_escape($X===false?"f":$X):"null[]=".url_escape($x));}echo"".(!$ge&&$M?"":"\n";}if(is_ajax())exit;echo"
    ");$Sg=array();$ae=array();reset($M);$Zi=1;foreach($K[0]as$x=>$X){if(!isset($Il[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$Zi):($X["fun"]?"*":h($x)));if($C!=""){$Zi++;$Sg[$x]=$C;$d=idf_escape($x);$Fe=remove_from_uri('(order|desc)[^=]*|page|next').'&order[0]='.url_escape($x);$qc="&desc[0]=1";$ck=preg_replace('~ DESC( NULLS LAST)?$~','',$Ih[0]);$ek=($ck==$d||$ck==$x);echo"";$Zd=apply_sql_function($X["fun"],$C);$dk=isset($m["privileges"]["order"])||$Zd!=$C;echo($dk?"$Zd":$Zd);$xg=($dk?"":'');if(!$X["fun"]&&isset($m["privileges"]["where"]))$xg -.=" =";echo($xg?"$xg":"");}$ae[$x]=$X["fun"];next($M);}}$Sf=array();if($_GET["modify"]){foreach($K -as$J){foreach($J -as$x=>$X)$Sf[$x]=max($Sf[$x],min(40,strlen(utf8_decode($X))));}}echo($Na?"".lang(285):"")."
    ".($qf||information_schema(DB)?"":"".lang(286)." ").checkbox("check[]",substr($Gl,1),in_array(substr($Gl,1),(array)$_POST["check"])));reset($M);foreach($J -as$x=>$X){if(isset($Sg[$x])){$d=current($M);$m=(array)$n[$x];if($X!=""&&(!isset($Tc[$x])||$Tc[$x]!=""))$Tc[$x]=(is_mail($X)?$Sg[$x]:"");$_="";if(is_blob($m)&&$X!="")$_=ME.'download='.url_escape($a).'&field='.url_escape($x).$Gl;if(!$_&&$X!==null){foreach((array)$Rd[$x]as$p){if(count($Rd[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$fk)$_ -.=where_link($s,$p["target"][$s],$K[$Pg][$fk]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.url_escape($p["db"]),ME):ME).'select='.url_escape($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.url_escape($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".url_escape($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Fl))$_ -.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Fl -as$zf=>$W)$_ -.=where_link($s++,$zf,$W);}$Ge=select_value($X,$_,$m,$Zk);$u=bracket_escape($Gl);$t=h("val[$u][".bracket_escape($x)."]");$Ei=idx(idx($_POST["val"],$u),bracket_escape($x));$Ll=idx($m["privileges"],"update");$Pc=!is_array($J[$x])&&!is_blob($m)&&is_utf8($X)&&$K[$Pg][$x]==$X&&!$ae[$x]&&!$m["generated"]&&$Ll;$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$n[idf_unescape($A[2])]["type"]:$m["type"]);$Yk=preg_match('~text|json|lob~',$U);$rf=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"".($Yk?"":"");}else{$cg=strpos($Ge,"");echo($Ll?" data-text='".($cg?2:($Yk?1:0))."'".($Pc?"":" data-warning='".lang(287)."'"):"").">$Ge";}}next($M);}if($Na)echo"";adminer()->backwardKeysPrint($Na,$K[$Pg]);echo"
    \n","
    \n";}if(!is_ajax()){if($K||$D||$se){$id=true;if($_GET["page"]!="last"){if(!$z||(count($K)<$z&&($K||!$D)))$Ud=($D?$D*$z:0)+count($K);elseif(JUSH!="sql"||!$qf){$Ud=($qf?false:found_rows($S,$Z));if(intval($Ud)$z);$ai=($z&&($se||$D));if($ai)echo($se?'

    '.lang(289).'':''),"\n";echo"

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

    ","".lang(82)."","";echo -input_token(),"

    \n",(!$ge&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(137):lang(136));$fm=($P?adminer()->showStatus():adminer()->showVariables());if(!$fm)echo"

    ".lang(15)."\n";else{echo"\n";foreach($fm -as$J){echo"";$x=array_shift($J);echo"
    ".h($x)."";foreach($J -as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: application/json; charset=utf-8");if($_GET["script"]=="db"){$zk=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($S[$x]));foreach(array_keys($zk+array("Auto_increment"=>0,"Rows"=>0))as$x){if(array_key_exists($x,$S))json_row("$x-$C",format_status($S,$x));if($S[$x]!=""&&isset($zk[$x]))$zk[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}}}if(function_exists('Adminer\db_status'))$zk=db_status();foreach($zk -as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill"){if(!$l)connection()->query("KILL ".number($_POST["kill"]));}else{foreach(count_tables(adminer()->databases(false))as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{if(!isset($_GET["select"])&&support("single_table")){$T=tables_list();if($T)redirect(ME.(support("table")?"table=":"select=").url_escape(key($T)));}$ug=ME.(isset($_GET["select"])?"select=&":"");$Qk=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Qk&&!$l&&!$_POST["search"]){$H=true;$B="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$H=truncate_tables($_POST["tables"]);$B=lang(295);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B=lang(296);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$B=lang(297);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$B=lang(298);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$J)$B -.="".h($R).": ".h($J["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$H=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?" ANALYZE":""),(array)$_POST["tables"]));$B=lang(299);}elseif(!$_POST["tables"])$B=lang(12);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($J=$H->fetch_assoc())$B -.="".h($J["Table"]).": ".h($J["Msg_text"])."
    ";}queries_redirect(relative_uri(),$B,$H);}page_header(($_GET["ns"]==""?lang(42).": ".h(DB):lang(86).": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){$Ih=$_GET["order"];$Xd=($Ih||support("fast_status"));echo"

    \n","

    ".lang(300)."

    \n";$Pk=($Xd?table_status():tables_list());if(!$Pk)echo"

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

    \n";if(support("table")){echo"
    ".lang(301)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," "," \n","
    \n";if(!$l&&$_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"
    \n","\n",'','\n";if($Ih){uasort($Pk,function($ja,$Ka)use($Ih,$Da){$I=($ja[$Ih]<$Ka[$Ih]?-1:($ja[$Ih]>$Ka[$Ih]?1:0));return(in_array($Ih,$Da)?$I:-$I);});}$T=0;$zk=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach($Pk -as$C=>$P){$im=($Xd?is_view($P):$P!==null&&!preg_match('~table|sequence~i',$P));$P=($Xd?$P:array('Engine'=>$P));$t=h("Table-".$C);echo'
    ',''.lang(152).'';$e=array("Engine"=>array(lang(302).doc_link(array('sql'=>'storage-engines.html'))));if(collations())$e["Collation"]=array(lang(141).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$e["Data_length"]=array(lang(303).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),"create",lang(51),);if(support("indexes"))$e["Index_length"]=array(lang(304).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),"indexes",lang(155),);$e["Data_free"]=array(lang(305).doc_link(array('sql'=>'show-table-status.html')),"edit",lang(52));if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=array(lang(58).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",lang(51),);$e["Rows"]=array(lang(306).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),"select",lang(48),);if(support("comment"))$e["Comment"]=array(lang(57).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')));$Da=array('Engine','Collation','Comment');foreach($e -as$x=>$d)echo"$d[0]";echo"
    '.checkbox(($im?"views[]":"tables[]"),$C,in_array("$C",$Qk,true),"","","",$t),''.(support("table")||support("indexes")?"".h($C).'':h($C));if($im&&!preg_match('~materialized~i',$P['Engine'])){$el=lang(151);echo''.(support("view")?"$el":$el),"?";if(support("comment"))echo''.h($P['Comment']);}else{if($Xd){foreach(array_keys($zk)as$x)$zk[$x]+=($P["Engine"]!="InnoDB"||$x!="Data_free"?idx($P,$x):0);}foreach($e -as$x=>$d){$t=" id='$x-".h($C)."'";echo($d[1]?"".format_status($P,$x)."":"".h(idx($P,$x,'?')));}$T++;}echo"\n";}echo"
    ".lang(278,count($Pk)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),(collations()?"".h(db_collation(DB,collations())):'');if($Xd&&function_exists('Adminer\db_status'))$zk=db_status();foreach($zk -as$x=>$yk)echo($e[$x]?"".($Xd?format_number($yk):""):"");echo"\n","
    \n",($Xd?'':script("ajaxSetHtml('".js_escape(ME)."script=db');")),"
    \n";if(!information_schema(DB)){$am=" ";$Eh=" ";$Mi=(JUSH=="sqlite"?$am." ":(JUSH=="pgsql"?$am.$Eh:(JUSH=="sql"?" ".$Eh." "." ":""))).(function_exists('Adminer\truncate_tables')?" ":"").(function_exists('Adminer\drop_tables')?"":"");echo($Mi?"\n";}echo"
    \n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"
    \n";if(support("routine")){echo"
    \n","

    ".lang(79)."

    \n";$xj=routines();if($xj){echo"\n",'\n";foreach($xj -as$J){$C=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".url_escape($J["ROUTINE_NAME"]));echo'','
    '.lang(208).''.lang(56).''.lang(248)."
    '.h($J["ROUTINE_NAME"]).'',''.h($J["ROUTINE_TYPE"]),''.h($J["DTD_IDENTIFIER"]),''.lang(158)."";}echo"
    \n";}echo'
    \n";}if(support("sequence")){echo"
    \n","

    ".lang(80)."

    \n";$Pj=get_vals("SELECT relname FROM pg_class WHERE relkind = 'S' AND relnamespace = ".driver()->nsOid." ORDER BY relname");if($Pj){echo"\n","\n";foreach($Pj -as$X)echo"
    ".lang(208)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("type")){echo"
    \n","

    ".lang(7)."

    \n";$Xl=types();if($Xl){echo"\n","\n";foreach($Xl -as$X)echo"
    ".lang(208)."
    ".h($X)."\n";echo"
    \n";}echo"
    \n";}if(support("event")){echo"
    \n","

    ".lang(81)."

    \n";$K=get_rows("SHOW EVENTS");if($K){echo"\n","\n";foreach($K -as$J)echo"","
    ".lang(208)."".lang(315)."".lang(237)."".lang(238)."
    ".h($J["Name"]),"".($J["Execute at"]?lang(316)."".h($J["Execute at"]):lang(239)." ".h($J["Interval value"])." ".h($J["Interval field"])."".h($J["Starts"])),"".h($J["Ends"]),''.lang(158).'';echo"
    \n";$fd=get_val("SELECT @@event_scheduler");if($fd&&$fd!="ON")echo"

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

    \n";}}}}page_footer(); \ No newline at end of file +// 3. INCLUDE CORE ADMINER +if (file_exists(__DIR__ . '/adminer-core.php')) { + include __DIR__ . '/adminer-core.php'; +} else { + http_response_code(500); + die('Adminer core file missing.'); +} diff --git a/scripts/ops/setup_postgresql.sh b/scripts/ops/setup_postgresql.sh index b7e522c..71cd279 100755 --- a/scripts/ops/setup_postgresql.sh +++ b/scripts/ops/setup_postgresql.sh @@ -17,6 +17,13 @@ sudo -u postgres psql -c "CREATE USER netgescon WITH PASSWORD 'netgescon_pass';" sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE netgescon TO netgescon;" || true sudo -u postgres psql -d netgescon -c "GRANT ALL ON SCHEMA public TO netgescon;" || true +# 3.1 Configurazione pg_hba.conf per consentire password auth sia su socket locale che TCP 127.0.0.1 +PG_HBA=$(find /etc/postgresql/ -name "pg_hba.conf" | head -n 1) +if [ -n "$PG_HBA" ] && [ -f "$PG_HBA" ]; then + sed -i -E 's/local\s+all\s+all\s+peer/local all all scram-sha-256/' "$PG_HBA" || true + systemctl reload postgresql || true +fi + # 4. Riavvio eventuale servizio PHP-FPM / Web server systemctl restart php*-fpm 2>/dev/null || true