<?php
/** Adminer - Compact database management
* @link https://www.adminer.org/
* @author Jakub Vrana, https://www.vrana.cz/
* @copyright 2007 Jakub Vrana
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 5.4.2
*/namespace
Adminer;const
VERSION="5.4.2";error_reporting(24575);set_error_handler(function($Dc,$Fc){return!!preg_match('~^Undefined (array key|offset|index)~',$Fc);},E_WARNING|E_NOTICE);$bd=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($bd||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$xj=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($xj)$$X=$xj;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection($h=null){return($h?:Db::$instance);}function
adminer(){return
Adminer::$instance;}function
driver(){return
Driver::$instance;}function
connect(){$Hb=adminer()->credentials();$J=Driver::connect($Hb[0],$Hb[1],$Hb[2]);return(is_object($J)?$J:null);}function
idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$Le=substr($v,-1);return
str_replace($Le.$Le,$Le,substr($v,1,-1));}function
q($Q){return
connection()->quote($Q);}function
escape_string($X){return
substr(q($X),1,-1);}function
idx($xa,$y,$l=null){return($xa&&array_key_exists($y,$xa)?$xa[$y]:$l);}function
number($X){return
preg_replace('~[^0-9]+~','',$X);}function
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
remove_slashes(array$Nj,$bd=false){$J=array();foreach($Nj
as$y=>$X)$J[stripslashes($y)]=(is_array($X)?remove_slashes($X,$bd):($bd?$X:stripslashes($X)));return$J;}function
bracket_escape($v,$Ea=false){static$gj=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($v,($Ea?array_flip($gj):$gj));}function
min_version($Qj,$af="",$h=null){$h=connection($h);$Zh=$h->server_info;if($af&&preg_match('~([\d.]+)-MariaDB~',$Zh,$A)){$Zh=$A[1];$Qj=$af;}return$Qj&&version_compare($Zh,$Qj)>=0;}function
charset(Db$g){return(min_version("5.5.3",0,$g)?"utf8mb4":"utf8");}function
ini_bool($le){$X=ini_get($le);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
ini_bytes($le){$X=ini_get($le);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
set_password($Pj,$N,$V,$F){$_SESSION["pwds"][$Pj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
get_val($H,$n=0,$vb=null){$vb=connection($vb);$I=$vb->query($H);if(!is_object($I))return
false;$K=$I->fetch_row();return($K?$K[$n]:false);}function
get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
get_key_vals($H,$h=null,$ci=true){$h=connection($h);$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($ci)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
get_rows($H,$h=null,$m="<p class='error'>"){$vb=connection($h);$J=array();$I=$vb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$h&&$m&&(defined('Adminer\PAGE_HEADER')||$m=="-- "))echo$m.error()."\n";return$J;}function
unique_array($K,array$x){foreach($x
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])&&!$w["partial"]){$J=array();foreach($w["columns"]as$y){if(!isset($K[$y]))continue
2;$J[$y]=$K[$y];}return$J;}}}function
escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$y,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
idf_escape($y);}function
where(array$Z,array$o=array()){$J=array();foreach((array)$Z["where"]as$y=>$X){$y=bracket_escape($y,true);$d=escape_key($y);$n=idx($o,$y,array());$Yc=$n["type"];$J[]=$d.(JUSH=="sql"&&$Yc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Yc)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Yc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($n,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Yc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$y)$J[]=escape_key($y)." IS NULL";return
implode(" AND ",$J);}function
where_check($X,array$o=array()){parse_str($X,$Ya);remove_slashes(array(&$Ya));return
where($Ya,$o);}function
where_link($t,$d,$Y,$cg="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$cg:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
convert_fields(array$e,array$o,array$M=array()){$J="";foreach($e
as$y=>$X){if($M&&!in_array(idf_escape($y),$M))continue;$ya=convert_field($o[$y]);if($ya)$J
.=", $ya AS ".idf_escape($y);}return$J;}function
cookie($B,$Y,$Te=2592000){header("Set-Cookie: $B=".rawurlencode($Y).($Te?"; expires=".gmdate("D, d M Y H:i:s",time()+$Te)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
get_settings($Db){parse_str($_COOKIE[$Db],$di);return$di;}function
get_setting($y,$Db="adminer_settings",$l=null){return
idx(get_settings($Db),$y,$l);}function
save_settings(array$di,$Db="adminer_settings"){$Y=http_build_query($di+get_settings($Db));cookie($Db,$Y);$_COOKIE[$Db]=$Y;}function
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
stop_session($jd=false){$Gj=ini_bool("session.use_cookies");if(!$Gj||$jd){session_write_close();if($Gj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($y){return$_SESSION[$y][DRIVER][SERVER][$_GET["username"]];}function
set_session($y,$X){$_SESSION[$y][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Pj,$N,$V,$k=null){$Cj=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($k!==null?"db|":"").($Pj=='mssql'||$Pj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Cj,$A);return"$A[1]?".(sid()?SID."&":"").($Pj!="server"||$N!=""?urlencode($Pj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($k!=""?"&db=".urlencode($k):"").($A[2]?"&$A[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($We,$qf=null){if($qf!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($We!==null?$We:$_SERVER["REQUEST_URI"]))][]=$qf;}if($We!==null){if($We=="")$We=".";header("Location: $We");exit;}}function
query_redirect($H,$We,$qf,$nh=true,$Kc=true,$Tc=false,$Ti=""){if($Kc){$si=microtime(true);$Tc=!connection()->query($H);$Ti=format_time($si);}$mi=($H?adminer()->messageQuery($H,$Ti,$Tc):"");if($Tc){adminer()->error
.=error().$mi.script("messagesPrint();")."<br>";return
false;}if($nh)redirect($We,$qf.$mi);return
true;}class
Queries{static$queries=array();static$start=0;}function
queries($H){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$H:(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";");return
connection()->query($H);}function
apply_queries($H,array$T,$Gc='Adminer\table'){foreach($T
as$R){if(!queries("$H ".$Gc($R)))return
false;}return
true;}function
queries_redirect($We,$qf,$nh){$ih=implode("\n",Queries::$queries);$Ti=format_time(Queries::$start);return
query_redirect($ih,$We,$qf,$nh,false,!$nh,$Ti);}function
format_time($si){return
lang(0,max(0,microtime(true)-$si));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($zg=""){return
substr(preg_replace("~(?<=[?&])($zg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_file($y,$Tb=false,$Zb=""){$ad=$_FILES[$y];if(!$ad)return
null;foreach($ad
as$y=>$X)$ad[$y]=(array)$X;$J='';foreach($ad["error"]as$y=>$m){if($m)return$m;$B=$ad["name"][$y];$bj=$ad["tmp_name"][$y];$_b=file_get_contents($Tb&&preg_match('~\.gz$~',$B)?"compress.zlib://$bj":$bj);if($Tb){$si=substr($_b,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$si))$_b=iconv("utf-16","utf-8",$_b);elseif($si=="\xEF\xBB\xBF")$_b=substr($_b,3);}$J
.=$_b;if($Zb)$J
.=(preg_match("($Zb\\s*\$)",$_b)?"":$Zb)."\n\n";}return$J;}function
upload_error($m){$kf=($m==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($m?lang(1).($kf?" ".lang(2,$kf):""):lang(3));}function
repeat_pattern($Lg,$Re){return
str_repeat("$Lg{0,65535}",$Re/65535)."$Lg{0,".($Re%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
format_number($X){return
strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace('~\W~i','-',$X);}function
table_status1($R,$Uc=false){$J=table_status($R,$Uc);return($J?reset($J):array("Name"=>$R));}function
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$q){foreach($q["source"]as$X)$J[$X][]=$q;}return$J;}function
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$y=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$y];$_POST["fields"][$X]=$_POST["field_vals"][$y];}}foreach((array)$_POST["fields"]as$y=>$X){$B=bracket_escape($y,true);$J[$B]=array("field"=>$B,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($y==driver()->primary),);}return$J;}function
dump_headers($Rd,$Af=false){$J=adminer()->dumpHeaders($Rd,$Af);$vg=$_POST["output"];if($vg!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Rd).".$J".($vg!="file"&&preg_match('~^[0-9a-z]+$~',$vg)?".$vg":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
dump_csv(array$K){$pj=$_POST["format"]=="tsv";foreach($K
as$y=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($pj?'\t':'[,;]|^$').'~',$X))$K[$y]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($pj?"\t":";")),$K)."\r\n";}function
apply_sql_function($s,$d){return($s?($s=="unixepoch"?"DATETIME($d, '$s')":($s=="count distinct"?"COUNT(DISTINCT ":strtoupper("$s("))."$d)"):$d);}function
get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$p=@tempnam("","");if(!$p)return'';$J=dirname($p);unlink($p);}}return$J;}function
file_open_lock($p){if(is_link($p))return;$r=@fopen($p,"c+");if(!$r)return;@chmod($p,0660);if(!flock($r,LOCK_EX)){fclose($r);return;}return$r;}function
file_write_unlock($r,$Nb){rewind($r);fwrite($r,$Nb);ftruncate($r,strlen($Nb));file_unlock($r);}function
file_unlock($r){flock($r,LOCK_UN);fclose($r);}function
first(array$xa){return
reset($xa);}function
password_file($i){$p=get_temp_dir()."/adminer.key";if(!$i&&!file_exists($p))return'';$r=file_open_lock($p);if(!$r)return'';$J=stream_get_contents($r);if(!$J){$J=rand_string();file_write_unlock($r,$J);}else
file_unlock($r);return$J;}function
rand_string(){return
md5(uniqid(strval(mt_rand()),true));}function
select_value($X,$_,array$n,$Si){if(is_array($X)){$J="";if(array_filter($X,'is_array')==array_values($X)){$Ee=array();foreach($X
as$W)$Ee+=array_fill_keys(array_keys($W),null);foreach(array_keys($Ee)as$Ce)$J
.="<th>".h($Ce);foreach($X
as$W){$J
.="<tr>";foreach(array_merge($Ee,$W)as$Kj)$J
.="<td>".select_value($Kj,$_,$n,$Si);}}else{foreach($X
as$Ce=>$W)$J
.="<tr>".($X!=array_values($X)?"<th>".h($Ce):"")."<td>".select_value($W,$_,$n,$Si);}return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$n);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal(driver()->value($X,$n),$n);if($J!==null){if(!is_utf8($J))$J="\0";elseif($Si!=""&&is_shortable($n))$J=shorten_utf8($J,max(0,+$Si));else$J=h($J);}return
adminer()->selectVal($J,$_,$n,$X);}function
is_blob(array$n){return
preg_match('~blob|bytea|raw|file~',$n["type"])&&!in_array($n["type"],idx(driver()->structuredTypes(),lang(6),array()));}function
is_mail($uc){$za='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$hc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Lg="$za+(\\.$za+)*@($hc?\\.)+$hc";return
is_string($uc)&&preg_match("(^$Lg(,\\s*$Lg)*\$)i",$uc);}function
is_url($Q){$hc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^((https?):)?//($hc?\\.)+$hc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
is_shortable(array$n){return!preg_match('~'.number_type().'|date|time|year~',$n["type"]);}function
host_port($N){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$N,$A)?array($A[2].$A[3],$A[4]):array($N,''));}function
count_rows($R,array$Z,$ve,array$xd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($ve&&(JUSH=="sql"||count($xd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$xd).")$H":"SELECT COUNT(*)".($ve?" FROM (SELECT 1$H GROUP BY ".implode(", ",$xd).") x":$H));}function
slow_query($H){$k=adminer()->database();$Ui=adminer()->queryTimeout();$hi=driver()->slowQuery($H,$Ui);$h=null;if(!$hi&&support("kill")){$h=connect();if($h&&($k==""||$h->select_db($k))){$Fe=get_val(connection_id(),0,$h);echo
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$Fe&token=".get_token()."'); }, 1000 * $Ui);");}}ob_flush();flush();$J=@get_key_vals(($hi?:$H),$h,false);if($h){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
get_token(){$lh=rand(1,1e6);return($lh^$_SESSION["token"]).":$lh";}function
verify_token(){list($cj,$lh)=explode(":",$_POST["token"]);return($lh^$_SESSION["token"])==$cj;}function
lzw_decompress($Ka){$ec=256;$La=8;$ib=array();$yh=0;$zh=0;for($t=0;$t<strlen($Ka);$t++){$yh=($yh<<8)+ord($Ka[$t]);$zh+=8;if($zh>=$La){$zh-=$La;$ib[]=$yh>>$zh;$yh&=(1<<$zh)-1;$ec++;if($ec>>$La)$La++;}}$dc=range("\0","\xFF");$J="";$Zj="";foreach($ib
as$t=>$hb){$tc=$dc[$hb];if(!isset($tc))$tc=$Zj.$Zj[0];$J
.=$tc;if($t)$dc[]=$Zj.$tc[0];$Zj=$tc;}return$J;}function
script($ji,$fj="\n"){return"<script".nonce().">$ji</script>$fj";}function
script_src($Dj,$Wb=false){return"<script src='".h($Dj)."'".nonce().($Wb?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
input_hidden($B,$Y=""){return"<input type='hidden' name='".h($B)."' value='".h($Y)."'>\n";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($Q){return
str_replace("\0","&#0;",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
nl_br($Q){return
str_replace("\n","<br>",$Q);}function
checkbox($B,$Y,$bb,$He="",$bg="",$fb="",$Je=""){$J="<input type='checkbox' name='$B' value='".h($Y)."'".($bb?" checked":"").($Je?" aria-labelledby='$Je'":"").">".($bg?script("qsl('input').onclick = function () { $bg };",""):"");return($He!=""||$fb?"<label".($fb?" class='$fb'":"").">$J".h($He)."</label>":$J);}function
optionlist($gg,$Rh=null,$Hj=false){$J="";foreach($gg
as$Ce=>$W){$hg=array($Ce=>$W);if(is_array($W)){$J
.='<optgroup label="'.h($Ce).'">';$hg=$W;}foreach($hg
as$y=>$X)$J
.='<option'.($Hj||is_string($y)?' value="'.h($y).'"':'').($Rh!==null&&($Hj||is_string($y)?(string)$y:$X)===$Rh?' selected':'').'>'.h($X);if(is_array($W))$J
.='</optgroup>';}return$J;}function
html_select($B,array$gg,$Y="",$ag="",$Je=""){static$He=0;$Ie="";if(!$Je&&substr($gg[""],0,1)=="("){$He++;$Je="label-$He";$Ie="<option value='' id='$Je'>".h($gg[""]);unset($gg[""]);}return"<select name='".h($B)."'".($Je?" aria-labelledby='$Je'":"").">".$Ie.optionlist($gg,$Y)."</select>".($ag?script("qsl('select').onchange = function () { $ag };",""):"");}function
html_radios($B,array$gg,$Y="",$Vh=""){$J="";foreach($gg
as$y=>$X)$J
.="<label><input type='radio' name='".h($B)."' value='".h($y)."'".($y==$Y?" checked":"").">".h($X)."</label>$Vh";return$J;}function
confirm($qf="",$Sh="qsl('input')"){return
script("$Sh.onclick = () => confirm('".($qf?js_escape($qf):lang(7))."');","");}function
print_fieldset($u,$Qe,$Tj=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$Qe</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($Tj?"":" class='hidden'").">\n";}function
bold($Na,$fb=""){return($Na?" class='active $fb'":($fb?" class='$fb'":""));}function
js_escape($Q){return
addcslashes($Q,"\r\n'\\/");}function
pagination($D,$Kb){return" ".($D==$Kb?$D+1:'<a href="'.h(remove_from_uri("page").($D?"&page=$D".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($D+1)."</a>");}function
hidden_fields(array$fh,array$Vd=array(),$Xg=''){$J=false;foreach($fh
as$y=>$X){if(!in_array($y,$Vd)){if(is_array($X))hidden_fields($X,array(),$y);else{$J=true;echo
input_hidden(($Xg?$Xg."[$y]":$y),$X);}}}return$J;}function
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
file_input($ne){$ff="max_file_uploads";$gf=ini_get($ff);$Aj="upload_max_filesize";$Bj=ini_get($Aj);return(ini_bool("file_uploads")?$ne.script("qsl('input[type=\"file\"]').onchange = partialArg(fileChange, "."$gf, '".lang(8,"$ff = $gf")."', ".ini_bytes("upload_max_filesize").", '".lang(8,"$Aj = $Bj")."')"):lang(9));}function
enum_input($U,$_a,array$n,$Y,$xc=""){preg_match_all("~'((?:[^']|'')*)'~",$n["length"],$df);$Xg=($n["type"]=="enum"?"val-":"");$bb=(is_array($Y)?in_array("null",$Y):$Y===null);$J=($n["null"]&&$Xg?"<label><input type='$U'$_a value='null'".($bb?" checked":"")."><i>$xc</i></label>":"");foreach($df[1]as$X){$X=stripcslashes(str_replace("''","'",$X));$bb=(is_array($Y)?in_array($Xg.$X,$Y):$Y===$X);$J
.=" <label><input type='$U'$_a value='".h($Xg.$X)."'".($bb?' checked':'').'>'.h(adminer()->editVal($X,$n)).'</label>';}return$J;}function
input(array$n,$Y,$s,$Da=false){$B=h(bracket_escape($n["field"]));echo"<td class='function'>";if(is_array($Y)&&!$s)$s="json";$Ae=($s=="json"||preg_match('~^jsonb?$~',$n["type"]));if($Ae&&$Y!=''&&(JUSH!="pgsql"||$n["type"]!="json"))$Y=json_encode(is_array($Y)?$Y:json_decode($Y),128|64|256);$xh=(JUSH=="mssql"&&$n["auto_increment"]);if($xh&&!$_POST["save"])$s=null;$sd=(isset($_GET["select"])||$xh?array("orig"=>lang(10)):array())+adminer()->editFunctions($n);$Cc=driver()->enumLength($n);if($Cc){$n["type"]="enum";$n["length"]=$Cc;}$_a=" name='fields[$B]".($n["type"]=="enum"||$n["type"]=="set"?"[]":"")."'".($Da?" autofocus":"");echo
driver()->unconvertFunction($n)." ";$R=$_GET["edit"]?:$_GET["select"];if($n["type"]=="enum")echo
h($sd[""])."<td>".adminer()->editInput($R,$n,$_a,$Y);else{$Ed=(in_array($s,$sd)||isset($sd[$s]));echo(count($sd)>1?"<select name='function[$B]'>".optionlist($sd,$s===null||$Ed?$s:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($sd))).'<td>';$ne=adminer()->editInput($R,$n,$_a,$Y);if($ne!="")echo$ne;elseif(preg_match('~bool~',$n["type"]))echo"<input type='hidden'$_a value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$_a value='1'>";elseif($n["type"]=="set")echo
enum_input("checkbox",$_a,$n,(is_string($Y)?explode(",",$Y):$Y));elseif(is_blob($n)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$B'>";elseif($Ae)echo"<textarea$_a cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($Qi=preg_match('~text|lob|memo~i',$n["type"]))||preg_match("~\n~",$Y)){if($Qi&&JUSH!="sqlite")$_a
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$_a
.=" cols='30' rows='$L'";}echo"<textarea$_a>".h($Y).'</textarea>';}else{$rj=driver()->types();$mf=(!preg_match('~int~',$n["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$n["length"],$A)?((preg_match("~binary~",$n["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$n["unsigned"]?1:0)):($rj[$n["type"]]?$rj[$n["type"]]+($n["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$n["type"]))$mf+=7;echo"<input".((!$Ed||$s==="")&&preg_match('~(?<!o)int(?!er)~',$n["type"])&&!preg_match('~\[\]~',$n["full_type"])?" type='number'":"")." value='".h($Y)."'".($mf?" data-maxlength='$mf'":"").(preg_match('~char|binary~',$n["type"])&&$mf>20?" size='".($mf>99?60:40)."'":"")."$_a>";}echo
adminer()->editHint($R,$n,$Y);$cd=0;foreach($sd
as$y=>$X){if($y===""||!$X)break;$cd++;}if($cd&&count($sd)>1)echo
script("qsl('td').oninput = partial(skipOriginal, $cd);");}}function
process_input(array$n){$v=bracket_escape($n["field"]);$s=idx($_POST["function"],$v);$Y=idx($_POST["fields"],$v);if($Y===null)return
false;if($n["type"]=="enum"||driver()->enumLength($n)){$Y=idx($Y,0);if($Y=="orig"||!$Y)return
false;if($Y=="null")return"NULL";$Y=substr($Y,4);}if($n["auto_increment"]&&$Y=="")return
null;if($s=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?idf_escape($n["field"]):false);if($s=="NULL")return"NULL";if($n["type"]=="set")$Y=implode(",",(array)$Y);if($s=="json"){$s="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(is_blob($n)&&ini_bool("file_uploads")){$ad=get_file("fields-$v");if(!is_string($ad))return
false;return
driver()->quoteBinary($ad);}return
adminer()->processInput($n,$Y,$s);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Uh="<ul>\n";foreach(table_status('',true)as$R=>$S){$B=adminer()->tableName($S);if(isset($S["Engine"])&&$B!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$bh="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$B</a>";echo"$Uh<li>".($I?$bh:"<p class='error'>$bh: ".error())."\n";$Uh="";}}}echo($Uh?"<p class='message'>".lang(11):"</ul>")."\n";}function
on_help($ob,$fi=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $ob, $fi) }, onmouseout: helpMouseout});","");}function
edit_form($R,array$o,$K,$_j,$m=''){$Di=adminer()->tableName(table_status1($R,true));page_header(($_j?lang(12):lang(13)),$m,array("select"=>array($R,$Di)),$Di);adminer()->editRowPrint($R,$o,$K,$_j);if($K===false){echo"<p class='error'>".lang(14)."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";$rc=false;if(!$o)echo"<p class='error'>".lang(15)."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Da=!$_POST;foreach($o
as$B=>$n){echo"<tr><th>".adminer()->fieldName($n);$l=idx($_GET["set"],bracket_escape($B));if($l===null){$l=$n["default"];if($n["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$l,$uh))$l=$uh[1];if(JUSH=="sql"&&preg_match('~binary~',$n["type"]))$l=bin2hex($l);}$Y=($K!==null?($K[$B]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$n["type"])&&is_array($K[$B])?implode(",",$K[$B]):(is_bool($K[$B])?+$K[$B]:$K[$B])):(!$_j&&$n["auto_increment"]?"":(isset($_GET["select"])?false:$l)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$n);if(($_j&&!isset($n["privileges"]["update"]))||$n["generated"])echo"<td class='function'><td>".select_value($Y,'',$n,null);else{$rc=true;$s=($_POST["save"]?idx($_POST["function"],$B,""):($_j&&preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$_j&&$Y==$n["default"]&&preg_match('~^[\w.]+\(~',$Y))$s="SQL";if(preg_match("~time~",$n["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$s="now";}if($n["type"]=="uuid"&&$Y=="uuid()"){$Y="";$s="uuid";}if($Da!==false)$Da=($n["auto_increment"]||$s=="now"||$s=="uuid"?null:true);input($n,$Y,$s,$Da);if($Da)$Da=false;}echo"\n";}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($rc){echo"<input type='submit' value='".lang(16)."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($_j?lang(17):lang(18))."' title='Ctrl+Shift+Enter'>\n",($_j?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".lang(19)."…', this); };"):"");}echo($_j?"<input type='submit' name='delete' value='".lang(20)."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
shorten_utf8($Q,$Re=80,$yi=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$Re).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$Re).")($)?)",$Q,$A);return
h($A[1]).$yi.(isset($A[2])?"":"<i>…</i>");}function
icon($Qd,$B,$Pd,$Wi){return"<button type='submit' name='$B' title='".h($Wi)."' class='icon icon-$Qd'><span>$Pd</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}@ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgб\"PimcQCa	2ód<fa:;NBqR;1Lf9u7&)l;3J/CQXr2Mai0)e:LuÝh-923li7mZw4њ<-̴!U,Févt2S,a҇FVXaNq)-ǜh:n59Y;j-_9krٓ;.tTqo0{y\rHnGSZh;i^uxWΒC@k=b/A0+(l\\x:\rb8\00!\0F\nB͎(3\r\\Ȅa'I|(i\n\r4Og@4C@@!QB	°c¯q,\r1Eh&2PZiGH9G\"v4rDR\npJ-A|/.cDu:,=R]U5mVkLLQ@-\\@9%SrMPDIa\r(YY\\@Xp:plLC O,\r2]7?m06pTaҥC;_˗yȴd>bnnܣ3X8\r[ˀ-)i>V[Yy&L3#X|	X\\ù`C#H22.#Z`<sÒ\0uh־M_\niZeO/CӒ_`31>=k3R/;/d\0ڵm7/AXq.sL :\$Fw8߾~Hj\"Գ7gSFLίQ_O'W]c=51X~7;i\r*\nJS1ZctAV86fdy;Y]zIpc3Y]}@\$.+1'>ZcpdGL#k8PzYAuv]s9_Aq:\nKhB;XbAHq,CI`jS[ˌ1Vr;pB)#鐉;4H/*<3L;lf\ns\$K`}Ք7jx`d%j]4YHbYJ`GG.KfI)2MfָXRC̱V,~g\0g6:[j1H:AlIqu3\"q|8<9s'Q]J|\0`pjfObq\$1J>RH(ǔq\n#r@e(yVJ0Q҈6P[C:G伞4^PZ\\(\n)~9R%Sj{70_s	z|8H	\"@#9DVL\$H5WJ@zaJ ^	)2\nQv]ՇQp.˵&h2dM1#[[kf,ոΆWq'fLkgn6G;eהECVY{\0D5Rx\"h\"ݟ7W,ňuc31Cxp<If]ѱ^{/H&sρi9\$֒b0َIK\0]IDG}EDVNýmQ31KT3zq|#!\"	҃k/phy-.! 0dmK~au0>\$:\$VMf٨k6:3L@d1zlg֩iX97<׭#a}s\0\\mZXQ'n.9KC9?lXq깗\$M2FqЎKB:bo#KXnMzȤ\r=fm%fi.q;-7x(@#9F)/M-6.V^*g\n!\$(7GxwDWba{1-ԐGw\r9њ (:'%?0Ά)tjHV8}f\$f^wlKl=1ZZEigֺ1Xثbe&,2rk>޲O{-A]mMDȁ>G;ЗgQo:0.7lLשl|:nD탉-K*NY3x.dt>Ў)\$\$9BeeRGwir[62Ǳ9Xk0̱5^PO>C `XOk7\0Klx;48L\$09*9 hNF>\0rPQo<	\\Fd'L:b.4,29@Hnb- #2`Z%.L\rPP\"^.Fh\0\r\0\n`	  no\0\r\r1`0	 	1\n G\0` V\0\n\r\0\nz\n@\0\r\n	 \n@@\r\0'  @ z1\"*P#ApH\r\r%+Q7>\rCqK\r@@ ~\r \0\rd@3QёQ\n píh>\r01qqq#q81<\rQIQ  l@':	\0 	#iE\n\"f.Q\$RQU\r ]crim2sw}1(2\0)1z Q\\\r\r@\nh\n @\0`	@'q)@Z.RGq%p_2e	Q&	ox1'11%f`\0f\0j\nf`	 \n`@\$n=`\0Ҍ nI=\0@d'8./2Y8@q.	42E(\r:\n6	H*@	`\n  	l\rɠ\rHlh\0(d4\0]IL^\\K\0\\}JC\n}EKIB>͈IJtdfht/FbxYEM4oj\"mN@tخ~dJ2U4I`\\AuQU.uh\\MQ؉\"G!TnMtPX#]Q-KTh\$cCDƊ-IbO`Pv^W@tdSS0Sܙ<)gMhF<\rj*\$4'\rH[ɪW-Fh:,\\/ɾJ^ODٍj'\rT-&[DĪN[E B\"`euj_\r`hF\rJV%!MZlP^:o>֯XxC):mei/\n8I2\rp2)oC[mViugh6Zf|DUw\\WC45U\rW6mzؖhcKog6Nd6P`Veo<%t?uf!YU,+e.W%\\\0v8쭖XnUBcfv@iN=u;NlKqwqKQ!v[\\7TO0{yj.`ȡiz%bH\"\"\"h_\$b|j\0f\"tĮ*}\$ZW\"@r(\r` CȂ(0&.`Nk9B\n&#(j@䂯fX^֮ @`I-}C0\nB}B5]|W{ʩb|}\"˅)}gň,=cڪ{&bP/C \0V\r׊틈=BN\\=Kr\$xՌWь8dH'ζ8}==\0\0]\n(7zy+卨\r`DYgŉ~|k3ڠE9CCёe@w,@5|fx࿖JlY%xE=Aj@OG ٚeė֖L\n%/y`ߜ?oyae`tG HJ5׃MY(6_ehtDz&x9jZ*/K:,j5U>ǡߓ\"eqףY<ZuZ{!ezV %,|mxSw㦺=# @:X	+ڻC:5Zt \0rZ!={ 2ñìyǤXfð%csx+8A{/ U9y#1y,.5uke_y\r~{[Z:\0\\83mA9'8:i|Y/+9R ˺ÁX7σ:\r	+^;MAΫ0Y*2<7Y\$ES[Zţ5vp\\iFr1:\">`ɝWϔ<uħx<\\֥fƙۙ`ej?ec(<㣂fCZSDv\r#٦U ");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgh0LЁd91S!	F!\"-6NbdGg:;Nr)c7\r(Hb81s9k\rc)m8OVAc1c34Of*-P1r416d2ցo#3Bf#	g9Φ،fc\rIb6EC&,bum7aVs#m!hrv\\3\rL:SAdk5naF3e6fSyr!L-K,3L@J˲*J쵣	bc99@H8\\6>`Ŏ;A<T'p&qqE4\rlh<5#pR #I%fBIܲ>ʫ29<Cj27j8jc(n?(a\0@5*3:δ60-AlLP4@ɰ\$H4n311t0͙9WO!rH9Q96F<7\r-xC\n @:\$iضm4Kid{\n6\rxhˋ#^'4V@a<#h0S-c9+pa2cyhBO\$9wiXɔVY9*rHtm	@b|@/l\$z+%p2l.7;&{mXC<l96x9m7R0\\4P)AoxqO#f[;6~P\raTGT0uޟ\n3\\ \\ʎJudCGPZ>d8ҨC?VdLL.(ti>,֜R+9iޞC\$#\"AChVb\n6T2ew\nf6m	!1'c;*eLRn\rG\$2S\$0a'l6&~Ad\$J\$s ȃB4j.RC̔Qj\"7\nXs!6=BȀ}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("':̢i11	4Q6a&:OAIe:NFD|!Cym2\"r<̱/C#:DbqSeJ˦Cܺ\n\nǱS\rZH\$RAܞS+XKvtdg:6EvXŞjmҩej2MB&ʮLC3Q0L-x\nDyNaPn:s͐(cL/(5{Qy4g-i4ڃf(bUko7&ä*ACb`.\r\nCh<\r)`إ`7CʒZX<Q1X@0dp9EQfF\r!(h)\np'#ČH(i*r&<#7K~# A:N6l,\rJP3!@2>CrhN](a0M326UE2'!<#3R<XCH7#n+a\$!2P0.wdr:YE!]<j@\\pl_\rZғTͩZs3\"~9j>WeQ:X/\"\$8X硉@4H:tL܌j~#8_Ax\$x{LEJ4'00<8>c(zX^5Dt;#K_v꩕u1\n`jn'\"Ir7U*!Ynjk@Ì+5)̄3CZB2HV`qæk]<{\r9|gr\\襜:B2781͍d=HLU}^NߔC*/|􊾓V`)8z:Rb8WA:\$2\r/BE~8iYtzX6ǰICQ7 3)6\00N\r갦 \r0ѯ 9~'%Dw'cdi'ta&r11?\\CmSɞ\$ж o&R,!.AHG\"tPv-&	30.	裃!iĕkJ7	:sO\0^'7^(`B(0nL9(\0\n[Uec)Fʛq2R5\r܀e}ܱh.iZ:AYED2@s1d<)H`تI1I\rZGRϔ/\$Oc\"*p'7`]@\\4BXzgABTQ3wc-sr_:բS@2 #Ė\nuP!Te6TaM)\0v(sVAZS<av(A%#&: `C)\r]MIC'/	PHXb\r\nYMzJFJP?JdBllDCS+-r1<w]v!)IKP4EslkV-kj,c,fRdC!&n0RJ2[3x3TB-Glls`hsV)W4SvC:nd-x` ®\$AP-kr^sASV?3E2X,KtSAq7\n^+%skG<aw	DdYڇQgbn\0A{濡9ùl.Hg(0TJ\$h-Bzm\nWY`!lc\0ϪÄՆMLxyk*Z3EU L-~?ii4[ iDZP)hZ\n5\"1tŦd/BrJcN[FժxK߭nDQS?Q\rL'!\nͅII%2萵Q;ǘ8mX-zIFF]t.H	r/[!#\r{̫pH\n4&3r*L臜{Ae\0L(*{kؘDJ_C:U2\0I0,\n;|xef0`1N`6>C){)3(t8dèO_DT^`H:c\0f<Y`f\\&x \nd+5U݇Oz{n-iFYb7vo%)Xh '7UIVwSR}dK_4 Wjnτ\0l\r\0.p@\0@Ȅ[PZIXكcbqtg2 \\i9< Z@i,`^N'uGBr'&\$F(/җ*uɄYiO	`ʑn:paPhnrM	\0кML,\$Nw)\0*l7GrlrQ	Os\"46 bXbӄoXbbeg\r `BВRhJ\"g\rTcj>I-zGolvu\rz\r	D9BK\r^\rY@,BЖL`^#\rwHpDJMXQ&lg&I\01 	P5&n0?gTs٠O!)`v X ͐QЂ\r y!'v.\r	fK! {#*/ඡ\0H\0r(Ȉ`SpcmI)8.s#G\"`Ƈx'ŔE)Qo)&\\VRZ@2bʒf'dZ&,U\r\"*4! \rD'G\\VHi1Rpc\$L2\nbToB8Fk\\\rB\r\0-l\n1354\04SHM4Qr2O%6p5/O5:pL5)Pľ%E361\r4I:S\"LeGs\\Q627=C	,	&D)<;\\~2ˮr076.'?52K6sa6R23SVLM@Fr9pț3j@NSӂk:@)B\0N`!e\n'PX\\YqLV&r+c.]锏h2]4 z`q8c6q4 ӓPg>#.)7Ne\$nB`\" 4L~΂\nu.OBN@R&N(uN@:h\n]6*hPXΠ@,P3S6U:鮟H5L-6T6SC0FsRRB~r:TnA/OP2-H:1e]P-'''8;8WUbYe!\r ^)Ȗp]	j.`</\"Uw3ʸb brA`fF_u^McTB	_Se65`\ra)ec]cAa_oa2>B\$@Q<OHJtx\"gZ\$nW@	D#S\0002#VΕB;N1NKPnv1wEl*YnB4IqZ`z\0\rR'\"픚iO	ps|)=fs1s72i-Gf `P%H\nhI\re\0X'\"\$z͉Yex@|~k yse`\$ZRz \\Wx[v`{\"Rwn'to#r*\0D3~^@xB~Ħ@}BUCx| YPXN`	\n\0Rmz+X:qy*X(No^8[fG\$LZ[vr#Xυe׍\$':\0[\nr\0Z}	b\$S|BcrQH)xРNDeMb ewzXswxAd苂LYC`{}q}Ό  4j4bFO7MN.'WS/uL	|\")IՁU%VUՌ^q'K4=c\"PvV7HI!\n`	㛓firH	tXn\$wFHĂP@rBa@W9`~bu>wbw3M~zw\$J<@\r&IX<_,[,eDuWL%\06\r?bLeKe*l;cXkY\0BL@\n@o\0h%lx=RB's2tpDϧ\"Z=\rBcQ2vBr4lv ^g(% \$\rvС\nP\\~U.R%ٯvГzx_e{3!e,{ewco|0EW!8wѶuitNef:\r(DV@\n{}cAâ׃|*!X¶\r\$LL/ELlU-/WƬc\$l\nUTPNŵt羣SY<,44.s	kv۠R+bdFN!rgs\$?BB2?P\$dtU`U\rāT\"搖EJ@oUx:<3SSIxGzD(7~M|Q~b5+Irzv@wf6#E\"-	(җhS*7\$QlvB%+]2Ohˢrod\rw'!C`biH8ώ(\0 @DdB>,4qHү츠Hbd\0`]e\"b w6;I?uMNj\rbS_!޷wdK\\O}{=ttZ\0DxaN 3Re#w^NPzU=!zLy͸@˸c]l٬[p՞XMspq5*W4Xs^\"@r~|>B5g2	N\$gFu\rzTjB2Anyc^vҸv\nOv:v}\0P[A%3@@Ǌ=cXGy)~u>zĜQXW\"wEwt;mJnfa@Oo;O hVVc^\06,#2s*y2{tXo;lث\n\nZc?`(%4\$&GrT!AݡCmj0ԀC\0D[H/{!Ak!N:5q\0MKC.B7/ @`Ip;PGr`+D<C]ǆ+<,%Hl`09-GsV]J\nu^Vi5/	6\r%T肊:\n!@ nS\"&)mt1f%RVXJtX%@=bU\$`z@X2dD^Pqő4p@\\,B~6??2OP6\0U0@	XKpf6 RR,e8񶁄Z\nk.BfB:7]\"I6JU\$Mpa:4_gpǐ/0@K;pÅTI<AD =!C\nj	忉S<e-a?XRA]@r4ӢӁOD%9n9x'O4-ZtpFK&1f^biB\rPKƢ)%'*Age\r.o@,`[	`}+C24.(\nƄlfan*\0Ok!l%Y݄EttƬ(	|@J0\0D4!J\0pe@O.>;Mfk~N2K!h@ 5\06iwzgURXہ 8A[ƧѸ2&8Hf9]r\$j81AY<をx\n/\$h	\0p(Qw@@ZDE`ik#ޯ%G	Ad>B@H=m\$q t\0X@u\0HY<x*F@!<l\rg@U>	ڷP 9B#\nԜ0g.iNIH.=TdGL ܓH3S\0^0F-E\$\$ /\\q)\n@t# qF2od胢uG|Hc9#<~:*;,BMd@t\0j5M펤!uku(|8%'ȀFЦc[C8!1	JAT\$|6vX\\:nlr@#\$2!nC-H62B\0=@>H0>SA&h|u\$C\\`tk\0|r ;\$zGq\"o&C;-[Q zLx	:~6mE0͇̮#r0 <iXKxu#IYH@V[*ǍQG®TiP8*%<\njM\r.AZ&5s3<y:0!%RW**YyUFrHU0Fa,]Ä\"I9pGZ\$L!u3{Y8v	g%Cvw8HY!K7i!3gc=]p7s@nHp2(<ő4d+0!M\\\$8\"\"`dOcyH/bmYǛFK&M,\$3	]C>.F&70`>kSOэNN؟B\0l䀤ADdX:XcD4tJ!B\0%(ԧь2IOrtI=@O\0<ib#Kz&S(:@@21^?W_(bQQ<b,G9=J}މݧEќQհ؈NJ-LHFdz)u\0`zkhDQZt'hO!R Z!F5oI(,d5Fvb'\0&3HCC8<0)l_`53&\\٬QҌ@P@)#94F\n?6b)EOHj&x	Fdm@ce-5M*lct輇JeD4\"u<OAy%/G60] @s5%R+	р(hQ%\r\r3P\0ԴV\"ƍ!94U˅@QOtr\"~&t@`3#nP^D*\0|\0<x؈ZqЪ0B,j}'tU?/\$\nz52*6GPO#bWuNQ t\$\n7d@@9UPtyZmPSRDФR~o	pu1:\"ب:*Z*bI F-&yTLbsWaMh	'e܍hP\$\"kqc5`ԑ\"@S4u3uvk*6ʤț_v\$ևZb&C(%ExEFĎ@;#HtM7Hd.U+8J2fd'aG\\Q7<sW[b8+L.)\0\".Ès|#7jgX,\rY	!\",{bG`ĺԏd7>f剀X56	-%[+VeNbŀ}ddj+^Mϳ(CȦZԀBYppflCdb;YVapIlK,=fE,IdPNҀ.3c (ؕF046+ SZIp -\\H/\"*֍Q']3LKUa[\rŲ8P2\$ÅW*3(\n/EOHض\$}\0.Q((iTa	^C֟Bw4:L`!|_m,-\n\"	DOţf,@XM;J`@P[I!i	Eb&:	O%+Ѯ\n!Kc\"9.ۂr=up`#-D9KAр06i(QBbm'nH`T@QgnN,Hd`~l^<Z>\nu\r0w	f58|&v4搔>צ޷y\0B^@ٞ\0W_Ϊ\\\0x_\$J˥siOIքi>f|'L-ltxP W3e[*(9!\\bn uXjH\"Reы=Z_*`!w\0w|T~8\0ڼ8]/\0d,u)6?/'VڜT)\$j*rUppD|jll~9G<\rZtOq0}XeC2Ȃ-!BJp=P9)!\08tPu4tI'6CeºA@-qʔSkЀP-['8FP{\n0a: I#τ1/AĆsBfr4\0@=x\0=a\rki5Q~@Mhgb^p~Oyb	xy=\$ AdZ7	m!\0x 3	U.y㚰SuԬL\rV3q㦸U|;3NQ[^'4nv`gAVe1TNF{@Цat%L(H<^CGcdL뵬}ip,lXquK)FJZG;@y1vxCuP3)Gβz)\n(>Zˏu=eJ9s=X46^YrqmURa!?ȱ@ ' 6b.*-MZ@R(elI2W6iIUP8V2P*WcE,/@TO<!k /*%clZmJƭgZ&Eh6N+s}o1\$BR\$'uƨmfeAO\0*+X[ WlL3J`Kpl_:iyIz0p>+P!EZ`tM3C;9ɯh\nr	2`@|@S7I`|Oz	\nSp155[?qu\$\rIPDjhAl=F,K@p	p'4&&,(KDTT4kIB٦%\0hA{CJ3#hK6Ά[%`P7Ҭz\n\"{ZЃ/Ht/n].5+cg=^\"\r0 'mB'v]15\"xrc[3.gtyCÓi.G\r_p\"?ѯ+00\0`*\$ \n4ZrQ@L.<@T묓B3d>9%A-\r?@.\nÐ\\9KghIXM^©X9,	:I-\0N؈J2||qY°:82o_k`uzdCtpmE>L\rIPayj92jO`R\rMIH=^Y'0z C(9.6 \nřk/ZǫvuNYɖK|)'e::߰9KKP (iN+Г)t(5|. ),,@'>{?l\rN /:_}?I\"[`v[\0*!頦`?Xz)NvF\\nr\"~N(\rh?|Rޙi]eb=n!.ʗG~N7N@iw`wj\n\\fP%Az@0䫂OeQƮ]R\0A1k]dfd E?ҿvBLַ]FQASKnbv6^-RSo3̯7SimZ@TF \r~(x/>U̝gi\0rX7	%f>kgc<RzV59gvT0oE\rÃ2 Y6rpĹ\\FXxCp?@R%&xU\0ᷓ7Юd\0P[PGHGNN=4V&w;k83y ni!pwb>ksNŵ(@XAJ|ņcntx;%=OL.ZUW}\nZ5	/?v81L|bBYۊq\\zȇWmE?3lMyRbGg8%䘊:\\M\\myI\nC7I\0D'XN98QtHK=̜tXV穩Y%2@.fl<-Cr@Ryt'Up!\n4 9ܿނuHGp__(\0soɾW7ޒe\nY_YftBc-9bjWm?CKNv\0'/gWR􇰛Q#496DVgUdaZ6#MSkCVLַ\r^(P*A\\6\n1(}?wyAp\n:Uqhǋ2=8Dz=<_ڄq~^ne]Rqᗏ/7tzcja(Ӽ[	YcjFX7&Hv0OxHkc\0[p׍,e\0(\rmpc+)/xr@:4\"7{M66 !|ɶ\"qB`/>M\"l,85t6rv9Q_/yMz0HWޔrT]AL>{2ӯRJ}#=Q^2	\0w`-zr9}^@#OЮ`-\0yp3ň-X\"*1*iMlqa/b\"l#A0c޺PtyBhlPд\n\"%H2Ȅdi=aʀwmj\r(\repPL˕Hq(Ą2/U;;At\rHN&:qRɜ`li;MwNS]W1`4.ST*w.T|=tR\r>M{`/s8/\0 -쁹Gt -Ni5b\r1)!;ܟ!`ȡawB\r\$;%uZ420~~S\0g*ÚQ|(?*ˁ_GD|(}ڵGVHٶ\rm&(2bJW}]2p?R?rI/#~\\{׆_upK`?x4@kj0\0VCŒ#\0kpDu{ɺ@.[Ϙ(\0Oc	\0O\0P\0pDp\"F9\$ť>Kߏ(<OZ\rK	D\\6A@%	:(Xp)D\n6Re{)_+,\0@# V\0^A<VҘFcbPj\r0pVr\"r@:y({n5jD#.S[T'2<Ɜ{p]axnkz\"\\@1\\X<@H+;7b	ࡀHWxBDcLY!	31&E7=Z)%tк?Fр	B\"tP[w s;A&~;LsX砭v\\:% xk;)\"?	8!+.P@,P8e0I<^ pu@2i&t\0A(t> 2;/bv-	%P \$vnԀQm=Ӱ<`u>u\r\0BDZ\$|9p	l&7\n {8PjByHŇ\n'  @<R(\"pS~цB74\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS	_6MƳr:ECIo:CXc\r؄J(:=Ea28x?'iSANNxsNBVl0S	Ul(D|҄P>E㩶yHch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0<d4E'\n#\r.C!^t(bqH.s2Nq٤9#{c3nӸ2r:<+9CȨ\n<\r`/b\\!H2SڙF#8ЈI78K*ں!鎑+:+&2|:9:NpA/# 0D\\'12a@+J.c,1@^.Bь`OK=`BP6>(eK%! ^!ϬBHSs8^93O1.Xj+M	#+F:7S\$0V(FQ\r!I*X/̊67=۪X3݆؇^gf#Wg8ߋh7Ek\rŹG)tWe4Vו\rC+8\r\0aRؾ70^v6nxP\\@yAR o`K~f\n{f9ť~!`@C.A޺.9z\nl빨w~\${XHpɉح/Ԥg=ѤcHfd%jc5^cH{\$\n\r!4n6cH[.6`ӥλ\\7Wޔ>}hW^Lژ rY_WV:@v\nøi40BE*`z|ڑ\"C(mΈQ\$XawK- M0՚^?\"\rt\rh }yzɃI? bwA?щAhd6A^2a˃ZR иհ(,>)ޑK2!Cl\"\$!@[fzXHytA'XSʒ%H\n4&4VSZ_3RlMM}\$R:NiՁ@崿,cY2cgp::؁ HhPZ`F8AW^|CH+g\"8G\0t\nt&\n#sԖu'N0ب\$')/`	\$\0\\D056K㲿=A~BEZʖ٤@Y;'nS=D2l'/jxi&{WнY;q\"DA8a^1\r1lx)傄*R:p *P{0ri2fvM3ק!dQ3<\n9No4Sjo6\0D		hKYj=IxU-u\$ܹBn{a\0ra\\ N-\0ᆃCwZ9+T!ª\0Ԡ`!.Z\nrP?lhe>w0A)_!7[0J>TR)x8p牱DM-Epq\"\r\$qTdUzVL|P2§s鉰)=C'pٔE`ʉ\"\\[/N|Foy&Y\"YJ4v{;b>:]9:H	[Cv4hA1?&3ҖgjLI`7ʀZ^:k\05|ՠh'2\$`C!Dm]-@R}< 1uy\r؅`ehcN\r=̴p6.l夘6EDp}ǹURaqւy;Ӽ	p=7A=T^69#6![E\\@:oo#3/^);{K. v8<bm)W\n2sθ]a'o%C{x\\\nYuhG\0hp;|*[8+vj~ȟ|rS˷xLwtwʻ=>v\nL1E\nA! }|H'\0pA	>0¹n*L!B	`l\0B!L\"ͿwE[sf8oPݞAw)E|#\\SsU3&>^{_ϖj/bR//L\nΰδE\$ N@<vzom\0\0p4P.vƬ\$MN:0o6O!.0p̔!\0\rop^c	Z0k\nPPf|b	%m	?P\nPB6.Эn\rP<p pXR`\\_\$M('NA(~jÂL&`Bh\r,O`ck٢)1*eld\0р~fڻƖ`K\rn'qt`¶VWD: ؐ6\r\rҀZq۱xI|FbR%k͆ @*r%\"+!bXrzifIP>\$E&X%>Bm`r^%RbBdm#a!V!d\rˎRO'Χo&S&R@Q9&gqLLcGb{j{g+l@\\<B|b-\"kD&\n\0DΚ(qL8ՒoNv\n	 %fP \rnKt[)Vg\n\"ԽN\$Wd4'r\r#`\0ǲ6@v(\rrb\$@[fk9r7`\\	8 D\"b`E@\$\0RT&\"~0`\nbG)	=@[AJi8ge`dk;`7\"z4F\$n42z7I E)^ь8䝀\rŨNsq0ȎbPA+I:`WNJmIW4<nPJTJLbTJOCJfٔXN=Q9`7LfOOzS5 P\r\$=%4dnX\nXdɋO橧\r)F*hn B5\$jLbsM;+P\"nSw7QӃ8#j\"QDnfgrweW%)dXHWQ\$TK`5qH\"ukVURCH7@1\"\r'SUӒfW4 K0n;=		cTDFfX]澵eLqFE\"xx\r(\$4S\$)F	JtDʕDE(EF&Tv\"*`>|U/QdRv\\ZS\rOaҍ6n.ֱ\remx҃vqPS]\0weOt_Pcw&mjozf@o#omO%g`=3mD?A/]5erk':uj|@wH3s;vtv#k&c_#m^cĲ)nj\\wbဿ_BQR҆==/R+MYx9T\$z9aҲȡ2 7\0&yB\0(l\"*>MX@)xVW}.K`T\r@ Z'-IkH75b?ςl>wdܺ`>\r뀔}xZ8`ɂg]QdgO_FndLv54\"2xwW1[22KuL%8(\r-Ӎw×eA5hW>xf(wzx-v	V'LvR!vV0y-0\rWK]b̖O\\0NjS义Dج\rg3lQYEwdĘLX'LbNǹJȬf2ļ{8Ƞ#xsIdEwtɗ/Ȱ=UTYvGG+uY#RJ\$JP)8د̬JK顅x0z5 c\0n7YT9`Du_Yy#n:%Q9Y8@BiU^9TODڥTz#\$oj󨹛O\n'YFMN*ؗ몶z٧:c:ٖÚz),u0Ă?!ĵ~2	{ %;ȏwV6yk]~Fe|G`ShխZOXշXYKw;L\$p@k*`߳,Z?8˺+ɣ\$ۡ9{zA7-n{١]~x_j۠Vd׎;\rz9l\\WcwexK();{gϟdqJmZ<:`85BK+U#LZIzM|KTZagsTZG]=3X˺%\0ZUZnJ\"X\rX;Ӑ@YȌQ#LV9\0ۛcLp#U=1x)Tu9`Sڀ!@\\߫%c:FU[<<>T;x`O]}9yę?Y3=%2)ls]@KQ`ecէYXE&g\r@例6%=iQ|g|:9*5n~9k+af(\0+5I5޷õq]ietN݌M-5v3sa?e|R>zu駦^qQNۏ{Ξgd\0rȇ~{4~M>>勥_>iwIW>dub?ʬAP\n'r ?@TQpՆKDKMI6@ZMIIa3X	&U\0`VqGvzNO?f+Tn\r<P?cs<?S0\$S'b}`-`!`:OjF~=TڡlL0Ҿ^T5閨.OᩘP-YXK\$9+6	˷\0Љ.MO\0ƿ|l/1V׬:KzS\$F\"?{kjow_PgDLkQ	\$	kLޱ5/Ѻ2ڼ_}B\08\\n\n8Vk\\`?\nEZb-VtS6r_%IiddH^sCI-b̄)[	X6rTj\")`{qB7VYHɆ˙JUA|\\YEj'L*kF	\\#C	OV,!Hហ\"f(Z̀\\gܜ\0pQƎT=.!G8^ltk\nkxZG|І\r_ @X<<\"j#E:=\ng \"OR\0\"~*\0eVIT)az\\?4>xܦ焨е/}Kh@K4xy\nƘ9\rA\n{<`PD-=o7{Ѝr\njT5|dg9͑RGyf3\$x84ag<@b/\r\"~^!5#.pHhsp dq'7їXc595<hF0ƚ.QcTDFz3\0 {F|qmrݸ`@Q+&/4b\nF,я8*@D	=u	(@at\01i\ncB,h<3%b0\nhFw )(*XV\"\0}4Nuq׎Lp[2(1H/.yu54	չ:Ab~vHRD\r#yG\nIjFx*rߏLSJ 8@aJ\$rcX0H_hC\$Yɬ'Rm41smBd0I'cUd\$\0P\"}Ba(/T\$B\n(ND'{|B~\0IT		P,Pth]%+ɓdܜ)ҟ,Y1&_Ihe;Օed@\0@AhA&)]:P!\\k,M\\Lq\0E,PKDBޖO\0*RWHg\$sLav@m4C(LFx=lbh@Pݛ<9U|_@\"@	\\0	E6p\$8R&b@'̼\nP>9f^@\"̬  1\02\"`\n\0LT)/M&isMqZyLe4fg3YLNy馟5ٙf.\\-S5d\nǟ@2'T;bhPP,Yz|ٮzp-M`[82ms{N&hB@Ɓrq)(	1L0	D@P)|:NFo3:6x[k3-\n~)Rf3-a9ȀtGg;\0SisL\0B\0+Oe\0?Y4	 Tz!>0Mr31qc;0'Le`F즜)Nu𰞔f>Ϫws)iPTTgO{\\B)ТXhJPrt2<Ѩ9ɫ¡>P\0O}gC:'P֊3hAO\\U(D>|4Zx9(E\$zӑ&2T)*@&\0AQL`N9B̰O\\l|gkc0>LfR)AR\0/\$XE)`ȅ\\kȮ˸p)GTքGd4E2rp ϪZ6N<]3sґ@l`(P'd!qD	bm8wN Ɯ#<J(\0S\\CuVkZc\n@N*x2\0Xw@aEP.iJ!%D@Pz΢&l=BiP-Ԋc|ZjAS*xi|*2pTcqz@!5/I7ӲƬF,t?U|\04jH6ѩNHtD3p'qS<(,鷗\0[媻jMw<?ux\nY<b\0ꨴE^G)|8Io;-e0\\\n=L'p\0{XU07`,,S9yP|iOh	-DͲLSY[:Ӊv%&v94=OANt1\n\0}TU{^MSR*کBtVR׌Qgkz~@	\0nl脵^Y/YWaQsaʱXĴ]c,E`ZX00mRkX8#[RwP\$HKu\rkB銂uNQP6cF\0\0n r!;/=De4YA5]O*`:Z`fs,~+<\"dU3e\0f%Pw^Hמ1` yYq⚰,^j\nhK#4p1veZb)2l1mUK\$\0nt/nxZ8mEjJp#6F~E(yR凰%B7\nV6eTΈ-jbYj䇐e^B{6U\n@cWnyC`u}yiVt%0bJ,p)g1\rVX@R4;\$V@=sx ƊP̐HH*IȡX1ui;ᕦؐpQq[|(`+G]rǅ\$O9dZlE	NKz5u5_!Wp'Lw|=¬.IlvNOPZ\n]o+?O~'DZ#Sǜ}ڮv*l\$Bi2E]ck]ER\nt)d7fLZ.xiU/`z`/^b5yNvĕ+R%U66TCU;W./lQ`XŮ]|t1\"G6b+W/We\0k{ԍ`e?d@(Nt)\n)a¬R>_!;}Ff3\"\0\$%Ea,R%DgKo!4!gY20_	XX	8rͣXFH `*	Ax#EԝX:S=#)iCL(9T)̙\\a#hP(5T.#q_ZM>Td=\0}	fF12BJC+X#5É2-JP\\+,6aYb3]o@`c}a6Jb\\F&c\$0x1+.Oq_\$W5%M0W7b\rxƆ,,BalX._q8?-X+G,d`q16q<C\$e)VWca 02E'{0:bTG20\$h̝՚a.8,Cdǀ@ZV<#X_1U%ƈ1x\\X72yɰGDY<\$0HӒiVYN(rwX+YFTgPe\\~pX-Ld++3,qK:BYOH`Ox\rŴ2rpx<&]Udb*\0I09x1\"\0.,7D3}bh[2^jьG*.Sx!Ċ0:	(?	^\0x2`ͫ7\$I\"H򴒴ėIq?*PT\0T[c8'RLa\\ Bc\n,\\>g(Ҫ\\[6jނ@0R?uSl:K)͆&%h@\$ Q@DՏU&%uRz*'/	+<04\0L`3wRmPR`Qq5%X\"lY|ɥG:U\"\"Pp!p\n&-f*dil tN,JR2Qp\"\\^\0?m}4mbj@b01N!\rQRN/sOEfQdp\r_/D\nG?'P:j\"5@-E[TN\0VU:½>DFZs\0Yڿ])ȆjK#(mkB(Yct.<s\\'p)Եknīݓfׅ\\^~;tX]yZ\rn=~lQGt؅#~ċkRu=F!x\"#\$C7-׫=`\nfF<D\\	\$\$p)~+g&J]y-h\rҀ+i^#5;9Tsف|\$,pl\n4c\09/&m%٫\nnA,;EGp	+(f{&=n8ۑ(XȚnh;JܠAk8\"wf1ҋ5)WKaP4ne#ƪQj7E-scJ-M;[/ Ŵ\\dV7`tw6=]:x	19[,HP<OZ=3O<@e+y魡xOXߎ\0w4i)\"ap^QpKY K:ujn[S\n.Tyȅˀ%~4\0>@5^Daɀ=p06yJe,RUα7E8k`ykSo)bֱiY\"o\r;ЅK5m@~gm\raW*\rH0/qb^Օ:j/).<޸ʸ2b5JLз{݈DZ3q24rܻ#Xykc德 E}=7u1>3\\m`<Z?7C/s<彿&>gntc&do4\";0t_5FrHr0O1kkiNbvit^pumEoVOF\rZ4_u8	܌ޢ\"\n+nxF=9+؏n槒&~\rt7r9N(^'J0W/*7~\rYG+pRnXˣڞWJMM-sC5K tD\\t8,sE͡W pz]ݎJV\r}3cו0=On}pDw_w@1鈷zh(=O4%m4P7,sl'|7}JO`.}Ϣ\\~3\r?~y޹+=C;=PO\\BV)\0'Bq:xDRvbyK}y.cXrG3&\rC0>|MJ#@ܿLS=\nqב{_\rV\rP}|\0Ds<6-#I6fŪ߭l%@Fb)/FBe4+yzNbaEgT|L7\\ r\n4).!n/ƔըB@ðiL5}G?71F/Wc>|~+\0\0qL]qdANF04N\nsՃ\0`g1:	\n>0n	A*OwN\"Ee]҅G]o,e\"*v7&i{\\4o<_bbI1^ys6U?\$mXf+9I^PA~-{oͼrB.ǕÂ\$d9.n\\+Oa#\0TH7lo~Wx+.YW+K=~}|= tW&dtJ(<ݶ㚑<#T}oJz\\1<%M1mdv=߉\\#~_79a\\R<k9LifI0K8'pz/-D͍wf&&~+~!UdRҋDi\r@cnqB|M(ZB/׏!н#Jp[|	+cMRb*MjwNǲ \"F?#HU`\"hlÄa\0(<Tn?\0c5w\0ژ&\0Ӹ;&5fhZ(k#-\0ae\0a\"?\0[00<lo\0005{`\rB@<7>`	@p(>DT@+|\n5zC.pպkɎTYJr	{,\nVB`^[3^@\$⠴ۮ(dxw@9 4@bqj-	Ļx˷*\\5?,X(iE\$)I30\0R`\$ؔ`'O\r2N&OGTA*R\0=	펤*.\\zk	? f2%j^i@^M%xH%<(.NA.V[N\0B3\0006 (.!;1ʦ>\$k@F#@֓N\$!a\$N`!]X\\䄂RPi^8.L2a}/ 	At#ALc-\\AڮBU	\n\"«|PnAy\n!\"A| AƖtsJ^ЈA~ &\$N`\$;:T\n[w	થ\n\nEJ4_ÉhAʑ\\/IW%pAB:S'bN7i2PB/p]BS	\\%	&PYXB)d\n(p=HP82 Õ:\rzO@%	2pݎUiP(e'\rVBPЋ4vL8\"R0|CT5\0:BxRp%ALpAT>,\0B)Yiy	j60D\":\nÁ&pB4pvD/D@C\\c\"qA`\$`0J\rT-Q	\$>?14COSՂ3IX(@>>0t]\n: C	0\"l;9D%\n(>hxx5׶;@7+\rxB>\"'NxB%nl2;B\0=;g0,	AF0'a&h`6?|ORc5A\0ZP)` )^yQ\0ښ^fS/bLMEY	\n {a\r\r1eE8h],ZtQKE:#ȫoE|\\iL_\0Ec]pF`Qj	X\",l6qś\\ZQsExdؙQ0ź<Q&`;SCdqE\"rFT[1v5{FOM1TQEI0	TRz-*qyF3Z7Ų[`2Hg11\\Ưk`<ObqFZAET`1Em񬀌nхFdoQE8F\0`9GL^1ƩpjơpƭqPExL;Elf4BA	k51=x\r3Ȕ@8\0^/B@T\raFLwQBeVHM48Cq2`3jrd䋀0(>BPov8'Pi8L#ɍQ1&32}*AǈBe6=PO\r\n߀0M&\0`'HX	#e lh	#ڀ(6H<Y`H+2\0 RH\0v\09	!Hz-;AR\$\$\"ii ^#pT	(!G`\0+h2FfH@a/Ⱥ1[#ŀjqиPH0\r@*D0ߪwz@2H\"̊ȰL΅!\$|@)J5D\0\$:<~RQ>4gE04rULM4JM!>4r\$+\0ژ!^f0f!nd6PR\"G h􆦓\\Hn8r ;Z\0#A,J;,(0&\0D/#/@3!2\0vywBKhFhc,\"JNGa霄O+@;H8GZ~;bJ:*<P24a\r)&/)\$fBi)@LRC(83ؘgLɛ!r?DGT)9*\0ҥo!&\"B.q7c2:\0Hy?Tr̙\0ԜdTi>63_+2!`2O|ï+e\$4\r@蕒\$`\0|DZCKx|Gr\$oK}L`-5+>CѩO\"+P2l\n+{@@T\0;#(\"!;<2\$ :?+qqɄ[I|Jv6\r؆\"⻊\nb(ߒbI04J305&.g!+xJ`>9NΞW11UwJ4Jp\r <aH@ TdaT|\$!\$\$FG\"hMRȚ!l:%пF]._/b2Mʬß` Ӄ+ZLܻRK=*:0\ns9+Z!*=,!_ČL0ѳ<43G˻4l 22%_\"7\0HQBB\"3a40\n%3.]4Y3_4հC̴f56\$<|U3|ՁM^teMi(ҺL\rlٲPH/!ӄE0?65Ͳ@,ͳ3`p!D#a`d@<ʩ6547\$U7'>7fp\n͸t\0002DVJ݀ĺpU!Xj\06s8'+*ŧ( IH8UM,\04i	jpC6awҢ'tܟ-.~+Ӑn\n~S%tή^+?	9P醄Da){Aɣ#RY|4j*?,A%\08\0V@;ϵ/+4\r0@[H\n͢\n#L	0<3	Gaiڢ&*\nsY!RB(O@().#)jrhR\nr5W\0t܀x[	\$#/#\0;.Rrk,sӃZ`\n/=I2RO>(\rGϷ=+@)H>z\0+R49\$1v%(\0!BU%\"DPw3i.2ǐeLIOT\n2kjqO)@lIyt6g b%\0ۍ(̅A\0S&Ξ(N(4H~s@-5`3(_ L`FSЁ2SPzdɪ*sw2mjY\r&JRM@s` 3\")B1\0CӮ\"H5B@i\rFz_T-N\"	P2p+Ig )	%\09\nb(AɎ\r|ԧ2!RqY!Z;3aʈO8toʈ1U;!LDma\n\0Gd%BBKO@838Me6S_6C%+FJ.4cDPRZ`)P\$2\$fGN\r]2\0 sp8i05\0<*I DloE3жlsHM\r\\ƑP=)[,l &\$q9ivd~震-J\"(HVi\$*Ԗ+3or\0dAOa K&)YI?Tr1[4ŭh9ғt.Jb:JJIԮ{ItRv%'R,A=K],#RJ68+J,4K lT\".J%04RK9Q0@lTRKtRiK+LĀRLmRK}3!ҍB2R+n\$9t2[#6l2\"(5UD}7!SK8T\0\\\n@E6J0 (	RY8Ĭ2\\}\$0%Sx0TCӴ  %JӇ0w/R@82T!C͎4 ZxQԃ</J7\r6\$eP;tB5A+Q\$9M!\$TL2P -!KD2\$\$\0+eB1͠D<JI\$\rA?rR62_<K#15\rx82Q;A+r[zQӓ^)#7O\\LLn&#=SX`4-&j4Й!U?c&h/H9Xh p\0r/lM& D/a@bN<\$RP	d*B2PzP{0>\$0\n:5\n\0WP?؏f\"cހ)EH\n倦8	'`\\ڦ\no!r\0)zZ4>\08(1 1d,#WD]d.X)%J[TS!eT0|TioJS0R`!\05%@2cϢ* ׀\$E;H2U7\r5RLU5W܅u~Q^9*8%XUU%YlWtJM^WeuNVZ;=e.d6 VqXdLVFi5dr!2PUkUD-V2uxg@< \rE\0x\rM@\rHEi[DuIum;V[v	V[\rV/ekKmW\"E\rrqW,r@9\0Z^BhW\"-`Gt-tAM\\dùO]Y+u^ %WVXQUWi\\YV.p]uuu\n1]ug[]WtsdgY]M^\0(vg]slQ0<`Wd0֬]u~\0;״'w_z]BAHL;WC}M`M~ꃢuvCl\"{a]p?\nu`Vׂъ ^\0006^xj6iR¹e@h\rvWaQ@W5>h9\0qOH xhxuETz焀=UTM !,؃\0<AjebcX`dЯ 7\0b\nJ\rOX\\\r;c͆+\0NS`9Yt\0d-@XT܈\0c5T/}\0v0X5c-@7Y60A9VY<'uP5eh[VW)cVl4YacUU\0e`LSeMaObIfSVZمf afeUG8!CУj4euѓbsŖ7Y֑i^iT),*W^eYwL>\$œ'Z\nmWe[Ge@`(gy=xf \"QOit6͂_6iy%E^E5H8\"\0ZJd1iZwj+U*j֤\0lѡ}ڙi9`\rڍjY6y^E3Xfm65WfݝXť}f%RXkeVOhCGY{kY6ܙ}vYlW|6f U6lPS@1l652n}1ce mV=+\"\rm=VX= 'l6Ofw@7w,xl`6.pP7B[Hmlb*_m%VߵmOn*`:[e5PZly!ۧdUi:P[:\0۵fj[Mub8nv{dSv)7nmVҠv\0E~\rЅd05ٵdb4C\r.uV#5bHftZlc\\\0IWOÌM[nŏ!\\txQ9z`Uڂ+76N[:bZ 115q\\EcE7%YfbWMu\\	MrcAZ<Mpf\r7+\\c/ܟi1),\rBrw9@u\"Usݢ7>sg\0006?bVW\\6V\\tΆl6]ob\\i=cVZt7I@Bܟtu\0=uU̗K}w];eؤ3^mSWu[]|#N\\uUuOuWfj\r \\<\\Wduv]֧Mv7p]wWNNLDMEtY6]Muַݿ\\ytmH]e\0UajE!Xwߡ\r]`x>X^f~CXb]wvArvT\nKqj7g\\\$O\\qqW+\\yWtZ]//藅'C}総ؾ0mUu&K_H6WHiZ~G< )\nh\0#&cU\0A%\0)rb\$<=\0WVo{\ne\$ƛ->){<鲨@	^; 3\0*rfBh\n\0|U^|wD3{`(\0V\n5fvd*\03=f +\0\nCʟ܃\n,-ɲ\03Ѐ!&cVJxarՒ|MKX_}}m7׃E{u:o_{@,7_X&ZJo7MW_|;x`\"]C{eԀt-@\$w{\n\$X)_|0i\0W^}\n	vw_Xe7|93#C~.`6\nlrL\r_e7)}q\0_5_Bp9-\0R^}q~k{2_~0*_@c(u{=x&.(`g)`qfWQXZҀWߢ}wꀋ~a wV.!mW_~xO߱R=w\$dU<c\0VHUxZ\0\0*{\0'V`&W{	l=ac&\0jfXkn\riUy}\ru\0{8\0W@a\r9i\08qa}XYnia}V^5g{#'& *GvQ~d>!X\0X3{xz>Hcx='I~􂷳&V*靧})^=񘒀W^h>P`%wEUz=Ac'pr=e%⑅*X+镏I*>Ub~0Cb^&b勺fxF,Un/8JR(\$=QXbOf%Xb[^2_ˀ^!.bh4؜N08	`iER+bf >\0+pF*`\"&V=&\\Jfb4oa֭%Y  { rǊw)\\׏c,i\$=}=b}~#e)R=3XV5U.H0f0'5=Y	'':iV4\nlx`d%6A8M%J4(*`V\"|}*ۀ4rE.d^\n\n<GCUW_b|Fa~YdRo1QJl ^/xn@d-䝒K8<>Ly-bא-ؖ{ryd=\n~\n*O|@\nd{chPiO`J)Cn-ɽ㟓!Jd34/@e9LenJX#Eh\n]J=iTڦq\ryMzfWcN;X:*%VMc)sWԧ?@\$\"	eUcu~G	X[V)cӨ=~&b^P`j^@	െ-arX\npaݐ*diK	䋓{2oiK.ɖP!\0pC\08=P5^`ښby*O\0ar>= V!w{cg0*Ub8eF1*\0-b6F毚8f\nf7ŀGi*,f.ggxk(pj\0hi@\$\0.pM}\niUgYxܫwAN	\0_>fH<=\n/=&tw߮0!Ruu[}\$a1 vb+*v\0n!j#&皝W'<Jb{秉4`!Xx)d5xH	(\$Uu*U]կ+IVMb%޸ʀy&W~gvF/xu=VMu䷇,=3h,XʷZ\n	Ԫc g\ne'{(8V<c=17H4hy&짷Uӏ{b\0ɻ_XY0x〞=@ch\nXh.Vx.8'E@\$\0}W'\nZ@=fZhLZSƐ:B-|XyXߦb\nĦeCIr	f\0\n0o*{P3@\"J	]n/uLUdO\0孡NyZc`ʠhػiMG_=oH>ZO߈vfYa;߷&泄\$筧w~ehb~0ބ1I'nQaN= >a\0jj3\"i=H-acYgV/u`>J}N@٘{(YbXط'^Bh?M网-X9hYZ8` e`,`}.I6b=N\rVxx6i8	hegzqc)jǈWU]Z<JAZ&bUz7N7yqiگ8d8jIfoZ>g8dxx\0\0ޯ|XS,Oek~xa?\0<͢l8`RO50:^4!6!Ę j\\!!^Ӎ.Pa@ӠT~5gY?(?Nɯ|9:kn`E>NFAN#;%Hz\r\r1lX\r6\nT>l&H~ʂKh!(Xe~0]@AS<6\n:lW/W0;HWb*:_@0JDt/}\\\0`<=cߦ˟8\n`+'N X_?i\0(	hGUZ&*{XhdmIlџZ9fc[7ճHxggel*~lϫ{=W{@Fim]ZߋbP:g%%mkUEtHg\0(Mn!.AO% _Y<`Frc&hfU&`DԲ`K1SN\$bH62\$JrP 0\rvz@H\$(fk @mv^\"\nR#Hg%`aȝINm2@#pZRۇ~	h3Pn`zKj3h.>\05{kD@h\0ƿF!A2H]!tU!ǒ>!@1g 5N˻!HB!T]!e܂`ȃ)eȆ@: D܈MII<@8ș'f\0⍝'ɼz1ykv2®Yduoûɓ(]KǼfҏfMż <QܺzI\"	b%\n93ܖ嶊1AoOmh̉L%1҆g&ҷobEL3	ga;HDn.j\rvYdA);xj[o(0{:EnZk;2&ӱN;o(j}\0%[f.2;̄017[>ovS#3_A＋GHhތ\n9?&l\$k/,/3(ɧ ))yi6F%n6N|>Zy_\0A8p/|\0m7I0\rMa\$bw!lT<([T]@5YOfXf\n@fu|ʵ[@/͹2nT\"\0\rKHWS4@mA\$<:\r\\XiOUR m0*fN.ŧnDIA>`+GDTK}ezG\rFa7%-=<HS>\$0>dMO>\rT\$rM}]\09(XM'qph7o:cI6B7NR0LqN\n5<v	\r6PF3qD:BA7Of4ӗ\"1 oչk:c=9׀C[_r'o Q*%Rl8\rI\0007D\\\0)QijQ@*r8cTo<g׉[rQ(>[WG|KD\rHD%W*HV+j!D8`	m |%[[n;P(rW({/\\{7/2)/\\s	_-ܵܖ̀\r{rE2<̥Qw/|A%|o2<s\rN74sE2l?#a#DPd\r<Ǳn\\li4~sRB'+\$C5=mC7eb=ԮY;]mT>	rA};1R<1}KE)x&_a5CU\\Ϻ%q}]s 7|e0#\nШtAAs8>	<2CNt=1\0>*=!fU#HX|tb	m!C7gG{r8A	E8H7'\0ì:=H7Ijl x!a<!..#'aUsGvaB`N\"V]a҄>BCc!N15=wФZ\\t\r/P!t1_<F`/;@2'P0-*zmtA9{twx=O \nT9I\rOMA=Ot}vMnv0l7UNO`X@\$a>é}5tʨ@}ishSH2u)KI>}%`16rrn_\r0iyGװ}~Yw	5~G׷O}GĜ݆u7cb/d\$\nW5L't3]\0M</qa<K]x,^cegah@4g\0`0T=e}uX׀7=%q0fa7eRwDehnb+ع+}%OO=Avl/Q\\\\wP<֧nVuyifve	<<<p]w\nK^a	kZݡؿ`a`#wbQ6o=~p]gr/u_r~	^orހؽI;OcȆqX1)@\"|KX_ҴjUWhv/@vB+5[P{8}vTǶ%}veݰ/wv. #,]pP/ܽEr.]!\n2Q\\ˍu6bp\"lƱ8v4\rO3u 6v/2[_xlI׭Fwܷ~xH7>YFJ1;2<χZ\" .عtHT?}KudwOt!P}=@1=\0uwqK u?ܵm7xnw`^7P ׎ ș_bWؿ\n)y61]0D/_ݷ	w\nㅩMow~Z-5N-.wHxODٌMؿz!QS\rpȳڪa=T6g\rim5yaJ	yitro\"m\r>mf\r	]/ՆLwr%K/=ucwP]w]-,mw\0!	#k*ϘGwe5]^rs>i5	'ux+JJ@}vͬqa-@\\=ɇ[d\r_\\&o%dP1m97g#}Xyݗ>)87nTف2w\r-t@e[ow-ke;₲ퟭNn⩏{ب\$vOޫ\r﾿muV\\[tx%OPr{4NQ5v	P	:?]!?d2L~K͎J\r;ceV=?,?ѷhH#U{KA6j=7n)į? /O^BU\0齯>m~|l\\Hv<=^/4C?^];KLf,_\$D|Flh^ywy۱`e~|F!>ۏ}%pMU\"S4Tn=}uךv!i~k߷Mc7TR=|{Gn]Me.wsǷ̀{n^}D4tjJ	]^+w󗣥U|_XTWƫT;G vo)0}#w|41'L,6<\rm	ymߧ3{ͯf(Q[K!z7үa.u?]t8e{%?cr	g׿Y\n<ܐ\\}e<C\"T\0*T|Ϩ>^V<b=wxxEjY ]`}b_IRJ^>ɡ1XQ/}ۈpanLnnaFSU* 53f{z{\rY}[=8V?Ns˛ğyYf~[ۀ6\$_R#䝸9ׅp0D߇obf\r7r~OTđ\">LMK\$g쪁~(X8'x'IqݾUVtP?b(vxN	gT֧=j#ƫkQ}Z\$8Js潼?D^uSo\0ɹeLVĩ7?V.jvޠ7uU/ݸy޵)]*ش\n'^T(r~\r~eU)hyi Ril1Ν7?\nDe˺BSsuk@B&`I U@ZE(v\"SBr%^ʧLD\0^\0p6\$ vXw(W2 DK菀V.6]\nb ]\n'T\0{hB]\nY/ Ll\0 :\$;v\0,Ħ`FVP\0\0)@h`\"a\$Nt5k\$#dB\nhЌH\0tm:*dQɁ?u\\z,CV܍5i%OUOJ^\\@rb%~Ώ+U!c]HH,BOL-eE[|4-b;|V]me}*k]ڔ=)-[]rxkFQlX*Iv\nd_ `[.<cp'pݡ\"1`_;MtZ5i	FRXӪhIOq@Y H\$zQ;@aޮ)/{3}E|;\0/0h 5Sd,\0Tr\$@(	/hxK\06J!#a\r%\"	ܷLY6EA&]8v\"\nie۴e:,\rxt_} 7:<ҀȫV ĕ/XV\0aV&PlUgV'&ݡ A^Oq{DdVw\0azf_XU0QU4*_r>I4͞Y`d,\nD7Aulm AU\"[Ve qcJy3V'#3*832X&#vc\0\n	bfRIb|fGi\"jM\$=I6N/Ǒ|@.U@(+byQ\\vP /cKՋl|ڳ4^S7WlB\0MjM@Cϴ`<Q`jM?X6jU}9ZVIm`A'WH=!F\"P`2mjq>c3p ݱ}cCl!x&}8D+WdՊ8DVZB'Xk݃A'2@2cA+;?	ll4Oh<̞Y	x>vL%`րE\0%=,aXdN\n@fUl4\"|&XTAg	+=N`A&ǵ(h;pwa? +Lhlb\nI(+P{0_	7|Z|@h!1BƪxB ٳV\n(CpCݲxH+PÄR\n\\+,`Ic\ns	ܡ_9bVF	Bc\$+PBEH8O:D8\$ϰcжstW2-c\"\n&XLbBj'X_M9:x90!=at=0P0t\n|QJ!FC]3 byBᤔ/S|!|B\n&e0Z`B<uKUo!Wy\n;_a`-\r/Co!uG\r1l3vWU&l,7ȡ~co\rv6X[p!RaQ\\37\"A܅V4\nl/8,%/RMI![֋m44(՗T(¾c̮5<-.\0Kl=2CLؚeljX! 	z/\n)>L/o_Y/v`\$*^	Q;\"eY`4dÌt+l@C+z\$:fvbG;fHda1=3hyjDB5T<\"@.7okgB&6mO}!T3h	({![8;p36bL	f`\0VpL4.f\0͐:ְmiZ&iOj\$ES>6<+6Sʳh'Oqc+F[ 4(g]|0	ɤ'dL4	&O*%&^0lg/l*5\0\0@-\r3lΩ,& ΪDF+gu+;vwl^-6CcaVNRX4A+LU6C4hh\n@Fk0hؼ)WxdY'P1<Fp~TN'+9wRib]C/63^2F֝0DHHOF Bji@P'5M{51<p={WYe'6BcO +K`\nq\nٲRj=Lf7_X&XRMb_Mk#1<LH 4g2v\"m,D,3r`60t!xۢSn!P-SUDTf^%^IA%mt&r􆀛R -HWy!C@an 7`=*⭶kE^Pm%%ҷn@u8wv-?!	%+:6}<ۭ*Sn䇮	!Kba'a<)D\$PPQXГ_M|QnN\\Zv2=JCE?[Xiߕ378tkzqd|jq/o`&aֿMз%l,>>_|_(2#whݖvzD`@7o(tX?Ð%\09/UzA3o=Do,Ow/\"P\nRwGJv\"\nA\"t6kLw\0S~;!Nc\$e!\" FOq=꺹7^\$y<7ߘJEOz-X?u@~Ÿ41kκ`#to`7ԣ;0/0S~V1Sk7n;0k*S\nI 	b*R4%!	ĉ3q'\0,61cQn):~*1ӎ/	H!vhfE\01`RDn8ph]R2t3j^RKp\0k>W<mM8&*xчP⧻p\rg1-\\	MgG1S^/E\\\r5α =.{f&[B >YQt/ ѭƟzLpTѩPƨ\$jY-Fg21FFL;z*tRǗKB:j42آcd!Y.68Fn6#`?[Z6bѷntTz`ю:^DoP=4ϔm6@`>I9hQ\0rY&8\"huc\\}fbɪҢ->QEڇ\rBBF'Or]:|O?\r0dJcC&P7sS1㜡\r\rYOQBu۝<tH{ѐVW%tHN#įƌ赽tBOm+boMj;0@؂8ab(Q\rF޷;1O+~9_q	Fy;Hڝ6?gTlwՋQJǈ~)'qݺQ-÷HǙ\n.<<y>/+AP:\0	逴u)~h\"'R:dz=UJ[oX	cדU*f馴E#Gȏ!C7*1#WHkcq,MGiǹa](61G3]u\0R5G叝!D=}jKGޏG=M%i;9Xܔ%cҤnŵ1(趎ߨ;tvѯ!B1	H~AXXbwR5q\n\n)ΖĢ;JMN<OϚC*zJOބ+J!Pno|5m@ ~G#?}z%wߵEKN't O6\$52lr\rbE#\"Jl8^j'T#F<WK*\"&\0?SN㑭U\"M8Uc@\\Y3BS&w(m7w]/|i<wwIWt.|YsN'ɑK'O\$hEf	DM#Je|!bG mu(G ?29	:| %QWs;Uy\rUtiH\$}E*8n]G@5m0_CB\0Hfg`.SO׏=T8ZEɬp0MۥS_6<~QЂ	\0EQKt\$'K%3\$krϯ^`!aOX:IZFd~7	I꽏\0K;UIcCFMnT 6=\\{1U[9`],.dm#JO%iSnV㘧|JۙUCŕ1 ;tSUnNSIvF:k̈%2NWߗɢ	X\$-~^-rK942Ɇbsxϒ_lutMui7mSҺw=&:8f\rz_%:l*ewRrЎrBR+o5{צ-90^*4	,QgO>m^tu¿z]@>@?%m%5SoPf*,z}<@1oBBN*UR-QRM(Q\"	\0(\\2SQ?LJ\n{I\"P|S%=8P|\rEω	QҪI&(P(G#^Q]MPxcJGL)D(3qe	KW-!`ӪQvIs\r(2JDO%?ǀd\0Er^uĐrެG}{nQj u%Gu'%nFHymFCdd	I#1eV>9U\\.WJ!(*UoT a۪IXS_vLl5A!:L&Qq+h_ܤ]a~J(n+pv߼IYPI4tP\"wef=\n(^9@%\0Jƕm\\Z}<TH6-,p\\N@,e\"a%O%W)5.\"e˹UWY.%gкB)4;%\$,D%X*hJ@9<D\0!%(cn\"\0S3v%\n\0@T\$JZj \$K=Z\0HJe<q_haV^['e^\\B>N؉qbE1AۨQ/,lS4a\$PK\0;W].^Ks+F,.eR+W.f]DĤ*ջKڲ<pa`s\0˸X.]gX4w](ŗy\\j+m4PWW=K^p:^y\"c%˅\\z(XR~,OuK~/aa)׬)\0{;0K_dg0'&@7alA oraBc&+I&AcgOi[x a᳚O䙣D\\aa'3yD_\n5|5,؟a^фks	<`i0bt,1L:aхDĖ=/RQ\"a	<F\n\nB>J.!DBgC߱gψ#><LC3gWJ!@`g}\"E1(\"k4_L\0zذDjбKM%3M&#G9\":MJFtqTAX2}ٴ*ԭHF1D/eu#*JNcҭxD*R%,J\"T[+z\n%52@#j Q%3\0Zx']AmJZLzM땍L}\$]cYWe^>'Bfl=;]Gq@U>?ڲgݖՋwV異Y\nDGR&鳠a*&Ha!2C8>r2ܘsh[n*9ҝƻb	ב	\\d>b)n Rv\$*XVk:*Ix5!G#\rr|t % J\0\\`eG/̬>NfL,3rP睸Q;/pۃrX)'べ? `=ZETY`\nrJq 0dmEs,)<,)GBxr&k\r\$S|r\rҬԄ85t'=[ȇNnaZ=\"{wя:cUthSH\$%+*h(thFkύѷyp*nlטa|\0bڪa&,PVU֤nC?q_i;8I7 !~;|&;i27_	`0!V+ZT1D\"Ӗ!n=%-	ZUjӅPVvZ pJg\nː:d!ΦN?AV\0UDؐCA64:d \r/p\0P\0sr\0rKF#s\0j\0Y \r\0006\0k9Jr\0Y'!8\0o9HH93\0\00049Jr̳\0I8rlʳ\r2\0s9)s\0NH\0m9r0p\rND8 '839qG\08:ۜ@,I\0g9^t)'7\0r\0t9`gFN;\0uLCm3PNu8u`\r(\0\0Y'Nw|\0t)֩`\0000a;ugA\0004{;Fs9π\069ֳ'\$N\0tɠg':(y'`X\0o9>ul\0\rgq΍n:Btt9ϳyNM;t<3'TN;\0 s\0NxiSgWC:xۓg<NI:\nvDiӷ\0Н:\nsys'{h8xxseNl7;r<gSO@;y9nOw;@\r@N;y3g*Χ8Iߓ'Sd*<y8Isʧi\0i<s#sS|r;V΃<s'GNx<&{|gΓa;tDitOl<st\0i<V{YӟgA\\\0d\0q3ާ@ΨLy|skOw=FtiS'mΟG:N9:N{319{sgϸ:zI'SO7; g'Ϭw=zB\0SN<}>*xL'Kc84'Nj?=.}yﳧN|\0c=F)T\0gLȜ>rl\n꧉>w	's9vxYӚggNX@u4	̓NjO>/NG;\"~Is'?3?]}YⳲ'ύ:|)3!O:	3%3k9}	gO~\0a@rJ	t1TG9z3N6=:{tYاO>NrSgR;}S'v]?SBhWAisʹΗPqA&v \$O;ށ֧oP+>SoIA΅Ք'P>mvޓ֨J3A,M)Ӕ'Oi[AvrMtN\\?=r{sO9V	&hNS;怕	hU[sJ3gψB}\\gTP`CVvlY\rNsA\nr'PΨ7;iӘPV5;6|Zs(_:s\nS=Q@͠\rgNmBBx*%*O;>ryT7gYm>y<IГ\0N֠a@ӭp=9ItDNA2{IS\0a:7gȜ?}-Y\n'<u>nsms(\r<͹Y+lBuZhZ7B|\n\"'O9zr'tZDAZsgQDbt-:4R'h?=΀*gP4%>Nt%ϔKhV<v-	n'Oj<&t\$!SN@}IQnN@Btt*60~QYE>rsΨ~ѾG\nVaG*\rRhR8\$@=B}4R(\rPzD*-.'xѓ9>.%*&4M6΃u=yz'g_OGwe\nJAS(ό[A6I4Z[NEu\0'Gt	TE'眑@yY'!Qo<JZ7L9''6AiG~*\rTSQݝFEs\0N>y:IΧPL:vp(DOu?rj3kѯOIR%?;cpIC g<\nv!LTc{@w(ѴH=%Tpg\$Oh<tU(ST=N?--IBZ-\0h%uAu|B\0ϟQ?V]2ґF.vS'ҘFⓌ\0IhNvD]\$IՔ<?>:(<2}3iPb:b=):ZiN靉J*[TX[J\\*\0<aPCz]Sh|PKu='ZTj>ҧFz3O\n!9<zAS(%?>UtC\"ΐB}cQOB\\t{'\"ADq,vz+ݎ#/^1N_͝o3)2iOi{4ELأ|ce5F(X71:@ݦ+l,!33eYM40EZ͝؟g30l2yh\0L=\0)!JMpiiCf\0(:Sil0/DCq0z@S.JlPZy6pt1&p.RM6ӷ86+z_	~<%*⠸LYO}#BjxZm0Y%^m{\nOd.׬GZjfsGhsB.@3'G05\0000\"CeTeX	%bXR9[1n!ZjmHLƉviPU C0d*CuH=A\nEӣ!5`0rԎHqA)M\ra_\"L⡫vcL^[5E/\n\rp|\0(\0MhTS&Lҝ ܢ6\0EEj@)(\$4V;Dk`3I9Jk5CX`BSw\03	&l\$\0sk10_\0׸TeWP5׫_%K3f/a@WK2:R6v`aZ{2}M<)!gg2Q-JE*0bvٜL42'\rJ̈Sf`S\n6Vn4T:00YvA,lwk.4ôaP!{1UG\0WŮDI;z4>:{@\n]EEGR;kSc*ZfOZT|\0\n\nԃE+RʚPdmY1ā4\n\0:[5lVFJfS\nU	(+LBf&l;)AuP>`@*ԧsS&Hy/ă\$mMSjJr\rUL/	3O <\0CR2xz*M굴bťF\rB9䪬ݠ'\naU8]ᡈz\nL%!U_R4Vrb;V.KG:/ܪVI,Æ_3R(=kgJ\0~^0ل+K)Uw\0\\)Yeᳫ)JЪBStdTL3k3?&UiS5/򩳲6`]	n *c9aW!E]zUtYBz5F\\j:bUZ6uU*ibM,r{P̩QUETJI3glWqM`O`B@\n9Uw\0KPꚝ\\@hl4VjAXnT6꧍٧Xq{pkFWc+ʩ؟4|`XŒU:\$QXRz\rRk2Ja 1ʬYud%@*q`OWa`[VGM=XUSk2ku{+-BҾ&%d\r{VuY=sk;=VL=+UWUUhJ~iXuZ}+VOpfmU\n,yimUqQ2T}]Pl(XBJvuW& ޮkx25wBU{W^JyUYbUd5XIfc[2YEUVªMmZ\n'tmmք[~m`O'zް;JPmkUfTbM@!]R:`1 \rc:̊ZaV7^Pmk!U]_\\=WUAY:z5aDLk[MW6jYp\nDՉ+lU\0V-rJ5a؎VquZhMQ?Vitjfk@ա+[imXyPbV\rh5˘VisӕV]-iB\r'R%vqMTṶUZu	tV_\"#9B4ֲfN2S%d\\%^2uܫ(UҶMy\nX˫_MmjkVބq[nZP̘=갃<zufVb[ư\0<䦁<qb(qٖ/w_=5pw@/_H+}UC`zvi٤SN=_l}rmU͗TP=|XjjN:s'T_ѱ23_I	\0.}:Wv\0\\|g5_:,L7/4}S*x4+482yiL?YD@&d	}e`#.]fvko4 s>zu2/O5<zhWUa\0&+te- f~OfuQXRga^6ZXDUniOnpy\n4X.\\X:uf>Ua`r zz62\0aҾu-,2U\0la+کBO?H@k0,f\$,F(N#EGX\0V͉v'WғdTBt!3bKV7X/F ];\"2=b/laX«\n%M,-03c1[63:a>5XT1UFNĞu{&. ,uiUՖ6L]새^ǕB,3T+ec,s0W^]qQJ+VެD<A[ e\0l}@\0W̓BՕ\n쎪(*{\$uIRVNZ*^k4'b:f(#hh5-<(m |\nu-Z,\"0TS`=-fuATV`__r;,,S3S'ЎUV Zk'evX6'PdBQ8\nl߃PdAޫYfQ&gYآAm\0\n1\0˸z3Б3׸5j\0[\0\n\ng&&:iŉާT\$EBw[I_X)eA{e)5mMYRe6TbN	**ONPƥbDi+5=aC[<lj\0SU`LcY9Z&ZŔ{1>Wҳ˽KHB!XCQ@HKp3	|+VQU^Laf6s6UXeǊUe2g}\\9v.*]xI&M^h[-kCa)__́l@B}ګ	!bY\0a&9I2'TM C\\baihÀklYcllNF9v6U\0_ia~;>LwavP\0f]k4\0eT{\rhE̔W1ù[Q6QX3ifkL`\nviSi8vv5Lgoj^6ZbƥV:T(+qSupe1(QFyvaɜZgYj`:XiA\r`k908Mj3=> \nW\0i!GlAT^\0\\A\0002Z[R(+^ QcW+Z\0hCcԹӛDtilhKUKpi* w_ 61\0ɀ.#43\0f\0yY`3=HKl1Gq(d\0^1Ĳm<\0\\SNЀ0ⲉ`oNz@L[hs\0\\h6ӂ6&/SH\nr\0;kI@amfvlk=e+mIH5[pmeKn-Jmvۜm`Vmp-`m[qЁ\$m\nܭhmP/m:ܪ)rvЧ`ܷ?m\"-[svOMnuuHm[]n]u\r-Ӆ]mB݅uۀ\0nU[q[ʶnܕumހ_njݥ[nͼi-oޕI-ۈoV{=}'ѷozޥ[zӷ-[ݷnzKum\\nr܅+|ҽp\nE{p\0\\p\nM+Ud;nZ\r˃\rp~%Knq;VӮ\$p]hWn39k-@spu@#q0.!ߕ-[Uq\rAy7#|?Wgb3qvq+!IVkx2{?qUK;oruZnC_qE\rˏ\$n[r\rˊw&hM܊rzirZKӷ.IxMq.mkS\\i;r5+wnT[1=qEǋANn ܍rBK.b\\us坸-i%mfK'-[mpW6T%s~ os\0OsfK#.wܸsf]j7<.g\\s=k7=urIڮls竟w7']>ϙݗFnNP9t:tUcs\0L`]]Otu7KnNDptNsfP圓u\n-7OgL!sr~\r˧T.~PuB-ϚWS.tM6h]`sw7B-]`szЗ\\uk>g+]rt:vE+Bo]=yvϙWa݊t*wkHA]t:u5Wf\nuvjmC ݚ'tr٫H͹=6v7kݲGt%Nt]WtymӠ7pbYl%Rc`I.ہwKk*\0]rmܻ7M\r6(8cwjr\\hwI۷p컬r͹7C.pԹw=+󑮊Ew\n׀9k{/ứ9MP5	A}ԻSo\r߻uFIڮObKwFỽW]a[xzr4WYow<+w@IV\rk[Ab=|WQFAr]份\\n]sxv.Oyx˷Tw{Ӣ]x=wgAmw.ru.w\nwr*ހw:}՗pފ=e;tgpތ.ӣ7BDvA'xޚw˿ghoKޝsd%[/M\\'WwAJ*ݻz3E\$*ޭusW^wt7oh{siW)#GM\nDK,ol~[JS\"%y]J4Jy֕~( jpˠ£\0&ft^F3ٱ\0^j-mYjWrage|u⯍ҩfja`לdV>M3]Wb+-zwתk[_ Cφ[M|]eZtj6X%YRxU_CT]c]hĢ;7f57!;)Ua5\0)WrUuz㫹{Z1B~SPxY|WBUܾ|B4#uBf67o\\+Wrzf4	_s|z|7*W%f]&[r;,.3Z~ua*̍Z0=>2tUk0`E_!4!~LZ\n0:Ť/LhKݗB_i	}C搾/^U}bhKVO[VP6 /V`~F'Sb&hKCNY[j}lo^[bmhKpa_\0aznWb&f}ByR*ic1P/al\$<Ժ=fR:5 ɴ_ը-BԻASg.\0ʜ֪s7& 0\n]=Uٗ;CR|m`CE.N(/\nV+6Y8v֗e\"vS\\ɂ\nUTX`.7u[5)P(`r.NvHbN	gc\rIyH1%OF~*S&Gx<BD>YS\$ SO\n^Qc5qc.=xp7OcX)\$\\+~@I QdwB-gpr\0@.p,j;`i|P]jQl)V	w?ENX\"JRM=Bv`\0=6 -	VCvaaR>twvvv\r\$LE,G72a.Xt|JMp+3L6t6'*D))UBF\\C,ʑ\0[;]m-A n \0a7p5[].⟺!Vp\$8DP@]L;t1J/Mǣ4C0sOL0ukx EH	PeaIu0\"E38Sam(P0,\n.ɰ_+W*⹝ÀG:cl<\rjrXr.8Y\\6Xqὂhx\rY}.=)P;Hp%M?#,\0007.T,Ȭ,?8!z	i hȵ!`H=2BWU7\\@Lb(f\"MpnF!nԕ%Wq![EnS D\"x|[nS!Vv1CE;#	 %b;#D`u.lH'rbMz/pMq,M=F%lK\"f?~&;i)b;)wdVe|7)OS0JH)\rX=c-:<=N1ܟUTY' ZEv)WjX>5nS0\n	RIJQbS_PU+1Tb᡿X8WvbB (\n]4é׊tٔ>[򉒋?=,|U0ʶߗpVɄE~Ŏ	Hfà1hڑf{,a Oi\"oX]\rcqr@J;+d*M@q4\r>`b8S\0H!L<XBp`EɊ~\n`ws.*ux@cppGiO 7\0t6i.מ2(J^U3|bc32BCvqFF57j|fQJ bYՔnO\nGw\0Rp}^AvբuVӍ04|?+Tf\$+\0q7lu<`\0iuC@\0\"et_\nh[<oEX:R;ϐP@*K:qf^\"enS\r*z1q-]Hb/!\"ʲN)ڤ`hB<?[i2KMN\01EI>9It)'iVGQ\"5Ob-V!\"\n@p!AEG\\9%}.\\T	ZHg+\0[yWeYL'ҟz!J%K[%xLyz0i/");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6\0\0\0000PLTE\0\0\0+NvYtssuIJ/.C\0\0\0tRNS\0@f\0\0\0	pHYs\0\0\0\0\0\0\0IDAT8ՔN@El϶p6G.\$=>	w5r}z7>P#\$Kj7ݶ?4mt&~3!00^Af0\",*4oEX(*Y	6	PcOW܊mr0~/L\rXj#mjC]Gm\0}ߑuA9X\n8VY+D#iqnKQ8J1Q6Y0`PbQ\\h~>:pSɀGEQ=I{*327\neLB~/R(\$) HQni6J	<-.wɪjVmm?SHvƩ\0^q)]U92,;Ǎ'p!X˃LD.tæ/wR	wdr2Ƥ4[=E5S+c\0\0\0\0IENDB`";}exit;}if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){$_GET=remove_slashes($_GET,$bd);$_POST=remove_slashes($_POST,$bd);$_COOKIE=remove_slashes($_COOKIE,$bd);}if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'15');function
lang($v,$Of=null){if(is_string($v)){$Sg=array_search($v,get_translations("en"));if($Sg!==false)$v=$Sg;}$wa=func_get_args();$wa[0]=Lang::$translations[$v]?:$v;return
call_user_func_array('Adminer\lang_format',$wa);}function
lang_format($hj,$Of=null){if(is_array($hj)){$Sg=($Of==1?0:(LANG=='cs'||LANG=='sk'?($Of&&$Of<5?1:2):(LANG=='fr'?(!$Of?0:1):(LANG=='pl'?($Of%10>1&&$Of%10<5&&$Of/10%10!=1?1:2):(LANG=='sl'?($Of%100==1?0:($Of%100==2?1:($Of%100==3||$Of%100==4?2:3))):(LANG=='lt'?($Of%10==1&&$Of%100!=11?0:($Of%10>1&&$Of/10%10!=1?1:2)):(LANG=='lv'?($Of%10==1&&$Of%100!=11?0:($Of?1:2)):(in_array(LANG,array('bs','ru','sr','uk'))?($Of%10==1&&$Of%100!=11?0:($Of%10>1&&$Of%10<5&&$Of/10%10!=1?1:2)):1))))))));$hj=$hj[$Sg];}$hj=str_replace("'",'’',$hj);$wa=func_get_args();array_shift($wa);$nd=str_replace("%d","%s",$hj);if($nd!=$hj)$wa[0]=format_number($Of);return
vsprintf($nd,$wa);}function
langs(){return
array('en'=>'English','ar'=>'العربية','bg'=>'Български','bn'=>'বাংলা','bs'=>'Bosanski','ca'=>'Català','cs'=>'Čeština','da'=>'Dansk','de'=>'Deutsch','el'=>'Ελληνικά','es'=>'Español','et'=>'Eesti','fa'=>'فارسی','fi'=>'Suomi','fr'=>'Français','gl'=>'Galego','he'=>'עברית','hi'=>'हिन्दी','hu'=>'Magyar','id'=>'Bahasa Indonesia','it'=>'Italiano','ja'=>'日本語','ka'=>'ქართული','ko'=>'한국어','lt'=>'Lietuvių','lv'=>'Latviešu','ms'=>'Bahasa Melayu','nl'=>'Nederlands','no'=>'Norsk','pl'=>'Polski','pt'=>'Português','pt-br'=>'Português (Brazil)','ro'=>'Limba Română','ru'=>'Русский','sk'=>'Slovenčina','sl'=>'Slovenski','sr'=>'Српски','sv'=>'Svenska','ta'=>'த‌மிழ்','th'=>'ภาษาไทย','tr'=>'Türkçe','uk'=>'Українська','uz'=>'Oʻzbekcha','vi'=>'Tiếng Việt','zh'=>'简体中文','zh-tw'=>'繁體中文',);}function
switch_lang(){echo"<form action='' method='post'>\n<div id='lang'>","<label>".lang(21).": ".html_select("lang",langs(),LANG,"this.form.submit();")."</label>"," <input type='submit' value='".lang(22)."' class='hidden'>\n",input_token(),"</div>\n</form>\n";}if(isset($_POST["lang"])&&verify_token()){cookie("adminer_lang",$_POST["lang"]);$_SESSION["lang"]=$_POST["lang"];redirect(remove_from_uri());}$ba="en";if(idx(langs(),$_COOKIE["adminer_lang"])){cookie("adminer_lang",$_COOKIE["adminer_lang"]);$ba=$_COOKIE["adminer_lang"];}elseif(idx(langs(),$_SESSION["lang"]))$ba=$_SESSION["lang"];else{$ja=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$df,PREG_SET_ORDER);foreach($df
as$A)$ja[$A[1]]=(isset($A[3])?$A[3]:1);arsort($ja);foreach($ja
as$y=>$hh){if(idx(langs(),$y)){$ba=$y;break;}$y=preg_replace('~-.*~','',$y);if(!isset($ja[$y])&&idx(langs(),$y)){$ba=$y;break;}}}define('Adminer\LANG',$ba);class
Lang{static$translations;}Lang::$translations=(array)$_SESSION["translations"];if($_SESSION["translations_version"]!=LANG.
3158064504){Lang::$translations=array();$_SESSION["translations_version"]=LANG.
3158064504;}if(!Lang::$translations){Lang::$translations=get_translations(LANG);$_SESSION["translations"]=Lang::$translations;}function
get_translations($Ke){switch($Ke){case"en":$f="%(n0Q :\r	@a0p(a<MSl\\;bѨ\\zNb)̅#FCyfn7Y	h5\r1rNQ<ΰC|~\n\$u\rZhsN(fa(L,7&sL \n'CΗt{:Z\rcG 9\0Qf 4N\0;Nl>\"d0!CDFPVG7Efq\nuJ90ar#uDC,/d\n&sSsu9GHMw=l8-PȂ!z9#dɍ.\"f)jJ\nN,\r:0Cp΂L*<(CX#|SFkzc4\r2aʋC1q9I\0#O7txڮk\nO@(C#)C1ÛSD;r`B\$04+0z\r8a^H\\N|j\r\nb78^0˺2j`ŷ`E+\rH;šMo-+s<@M^m\n!bI7\ny~\rKhzҵȳ\"mEV]êb2j3;c\nʼc@#ЫO2'C	\n9f&66*1&\nz7mnQ\$ml[\" PD6g8ݷm3P+:.T8R\"n*\n\$ \"Vוķ\"Mϸ*^6	L5ھ:,kcY5]ߖlu轰öi9:ӝ#d8rS<h3\rߓ6oz\0އ#p2v[؜6:TĀ/p\"m&2HAPO!Pr~KvYbdt*ɚ+E\"@S{J`FpVѠS}P5JHwUpW`p/'!+}:.v)[2CI_`2\0]3\rtBUr\"8DT*yP*%HBU%b*8]v&\"wR49Xj?J\\\nq\$I!'R\$5@ZJadAAY	P \n (Dt'\"	(&,Fj8UAi5dYB3l	1(I=S,,\rrJlF\0Q;ԪLdڲ:`1A9i\") kRSOY@ <S#ĀD&j`]:%Q~a aXb	wA\$^ȴ*Tړ2	BdZٙdLCl\r\\ £a1)lj#	^ʛ+\\%#G92y0^H4duWNDHQP36FK#*LVt\\L9dfDU¾0g.0p=nM<'\0 A\nY@(Li/{S\n/'b#F	XANN\r#~O`\nЉVIV>J83Bo\ns/FdN6Tu`m&JuC(+h[t3!31&3ƈ59[o2fY@14}=Y3KȬ\"W\0W2L2%rЦ[\nei[Ir&f`GIȥp) 0nK!%[3d=!4#U*,dDդӏ\\^i9=zRxa,#b[K6\$2ePC	\0#XSqSYnF\0w^[PPr \$GY̋5\"O\rʻ(\r]5!.f3.՞(12:֪ٺW?]13ٚ_yIjV8\\uc4\$(bݩǬEmi+Ү|8]i|B09q\$bع	+9vޜ|M\"RgvOih8hxeGH(yG=)8 \$rqNqn1cbLRrGwygLfTl5]Q'i{NȚe٧\$8%0`v@\r	nYpN4H}Kw1\\ѭsk܈gG>.X	OL_ Pߓz=yGBM=(	9*cYJ0ͭK	oJO}oYB6XO]8_`o6UYgeR'ØPv~eb+%mcs9Nؓ	VKShpB,P\08@k*0i&ˣ[,jE\\0J]@sD,@Dnqg\n(PZ\npҰv*b:ʂf 	V/\"Mr㼈N'o:\rNtІ@\$	Gc	CN\0[2c.Mn2Q+FJf2p|YQo p1%nP*\"p,7\rz`P0mYϯRqbKSVlK̈́j+0lk1\\r1\nD7`2i;r@Q1-fL\0\rk#bl50l\"c	(&.@\"K\rF]\$쫰|`Ej\r1x0f{/`{C/}\np#/d\\0\$I-b\nRґ̒BZ2jx	Z\r2_سB\n9C#B2iW\\{Ꜿ .:Wʴ|;D<Ҷ(IZ+[n E-Q:K'1C0L)0/(kDPƮ_0el}\$pd\\pEƌ-,5\0@Pc6\r\$J|&b08J@pk%dBO#9hbEF'&\"0\n!";break;case"ar":$f="%)l*C(Xl\"qd+aN.6d^\"(<elV&,lS\nA#RNd|X\nFC1l7`jR[-sa_Nvf|I7FS	;918+[x]š'\$g)EAxDt\n\"3?C,̅Jٷdj=v=I ,΢A7i6LS:h4NF~.5/LZuJ-xk莿bĔ*xB4:I(FSR2P7\rnH7(9\r@\";\"{9#,d8/i,PB̚R:6rޞG:\n̟h\\ArٰhA\\0b%\\\"BUm	Plp-\"<Aqp*+@7c0(F.(@cx5)7IL,=>GJ0rb&MU	\"3-͙TKJ>lWMSc>If4֓S-6Af8S11n\0o#VK\\\\sC XxнD49Ax^;pm۱4J3(ux\r*(\r#x|[@U`͒m>SAD%bKZ2湾YGf%vZ	\$P0Cu؂%z!K:ҮK%Ξ&:Ae4(JS\\2\"0:0\n,~R\\i*0nSԔU\nJJ`i=XY@V[ٵZ%.6m\r蠃7Tޓ\nbάejB?Z~uY>ՀMOd)nlsv6Ar/[ȧ{WmVS^oF?\\RYIt'8@J-! 6yw&ЈQ}o浴O\0mEF^àul+6\0C0fD0˃0i2à|`0\n!OBn]lKB\r(6_xfn*Rډ,V\0S+\rXWB@s_9GJMwA@s&,K\"^@li \nVRA m-܈c2-q#a)0 ؓX914j }4Yb	bQ%2l!7%\"4;<YKMf\0_Nc}~I{G`8X[\raEdDcq^,ŹHmEJB^©\"J7DQFh'cz\"Yڔ{44r:1zl3Og XwD\"wε= P/hiquD\$+ȉF!4J2_JB冀A<*̎FiحE!%H!ni:Jsq:U|cxQo\\CzO߼@Sj֓DZ\$b\"&NuWxsG\$pp/\0c\rT3AQj]pedS\nAVP}%M|H!;flXMxExᖎdԐ7B9Jn+}	2&ؔS e,CL<K.<%/,2/^Ëi2DCfӽu\0\0P	L*bΙ4dxl\0Z1hR\"Hܵũ`{gu=c`bAs吣eWH\n<\$@vd3]!Ax=w`!f\r4iRH\"\"8EQl\$(DĐ8A<'\0 A\nIPB`EjN[S	U(>5n}\$+1ǻz텱@\"G2l	#FU.V	kY79cz&l.Y\$RHŁ.Nw=LEhXīxem|\r=)UW\\n01+Wo\$q-ň(PCkxrC1RV,|VJ	1<i4tZJ\rP),)Sc*!LT:ƃTЋ?u؞qV(1ݪlHZ/I]a	[=֒ns2׸I|,45#Q1-n\ntQP^ AQX+\$]?Y˸n HuFIl(Lu>Є!	N/aj\nP 00]E5gJuOE7RpxlI@^\0TٜSWCpWb\"bU@It>2 UN2X68oIFo,f\r!>BIObܔDoN@=j6'S(^@D \$T(m\neQU#hP%N'\\VcL!\r%V\$,\"Yl>儲oF=apO}όBdL}M&YIM(Lj#{jgopDI.0Ac#c#Nj	% 2Q\$}10F\$f,\0005VxI!&Hx\n&EPh\$MPQ#*D*M.车0Xr\0\rD\r\0@q ڋG\"(MQ+욑3o>1Gl!%%Q\\'ڢ\\%2}Ǯg-Χq2{ї ̫w!Qr7\0-!n1#h !J@38YHq`_PG\0BvG\$UCт-Y'ZrOR2yiQ)M)K֯,\$\n4P-`74'gd+(,>,I1Ѧ1JO M+!,\0l4\nhOBZc=.zW)2Ҫ1:,K\0-OO{\rN)=#(f|f#'R~\"6@+6Q8ih@HW(;.)1%-954)38sCI5Gr yFCvI\"n]%cӑ:)RY>S7\$>	:p>g\0SM9M4\rl657u@1w;8v\r\$n1mw(>47ECb]C(<Q\0SqtG7\"4E@Sn3qATn!tV&!tanO&8cE*'Tt:I/J48IlF'6kŔ>sM'T)GCMD@cNCMMB4dӗ:=MY5UsF3D,o8m6\r\nrp|*B3%BX,aCCW,8l\\&\n\0rº|,N4`%\0001&&r&'uU\$lH\r4%p;\r^@\$(VFK@\npD\"Z.1&dx K˦1D	[x^x.(S1/d\0EEB-sI!VqNߢ@d^讏\$\"h\"Vr\$քOt@VDQ_8P,H'\"qBe6n,~4#L2v%Ȝ:8I	[Jeh͕0*f8&\$pVh+HOCNF1vmVIMw&/@\\}S\$ghy.3dMgnMgψ#K H*5v\rqk\nWU*s>MT.k	\0t	@\n`";break;case"bg":$f="%)h-Z(6Q\rA| P\rAtX4P)	EVLh.du\r4eܞ/-O!AH#8:ʥ4lcZ2͠.(\nY(\$\$1`(`1ƃQp9\$+JlYhmrF @#e&a9kG:~drUIzay2ƁѢ^ЦGeS2uJ\\nEW&oI\\qՎ=rBz~̲7Fp0bv%6ڰÈk;\rlJK=/\0X+ĺL=\$\n\r\r63L[ʏ;qlq*oYσhA9sr] ˈƹ\0*X7p@2C9&b :#Px9x+P9ȯ&G\$N\\K菸;=J&;GmZ7t\$IBҲ-S<oSƩ`\"%C ˈ>FRJF̦Yl Ě'm^qskR6YYP7c0(Mc.@cx5O1ƽ,h]\n7>\"FN׆\$hii\rA4~ h7J1̣|960c9c8@0ܻ/:Zc>MÜ9O!P440z\r8a^H\\08J8^2~kC ^+a+X+7^0jt_ۖPD֠X#\"	1S|Ұ(*(B9\r*\nެOI%M)#9XyzH1 7]'eBrUtmǂ9kJ73D4fZ{}V\"⊦:yrJ( 9Uh-nEnb[=O0̣k\"\nEO&[\0)ƹӖgOy{GÕ#NuL(0'<71uxtt	/\\%P0W2Ä g`<O_-'StMUq|\"B)?\r=ӜCCuV\0_K^\rd#Ӝ		I Bn+sc\n	f\raygȭ\0V gMt@:Rs0	`!C<@Ԕ\r!.U'WT2.):CtjŒqd|(6@ҟPUS\rW483A\"x'h,eq(8Dz2Zu?i#@B-\nӥ*Hˡ \\Wn	<M1v\nKO\na\$zJ#<<)!HMXx}\"|L h)5260%%A1@C\r!@+>h\r	4fҚeUiETµãgjV<+QO\"Va*#ӄu1%(\0r|\\bRȕ*StmO!*҉~ZEh\$;UrjMQ\\]s/%P6 r0yI`BA!ΉV77Qi _6*b>4\\uZ#9BԀjqm4	R-JC4ҩq0ol\r`2`dPWuq!ksϱAilzoX]rF\"P!@\$Cq3'\\\nK=B(&jc5hHv3vh\$c,~%.\nzC.בb!|7SforTl)4ȥR983&hӋYe40'A=0(.`(وXm6#^A#Lk@T{U\nw8p	8#cc,nSzbu:Ded~2w	4)xWmL4u-ꝯJ(Y\\DzO ۫ʒmyyy#!NIlZQˋ;q@.n>)lHB&5_ݹAz!x!d.*T]0Tʳ\nA41xˇPCr400iZ{yIvtd\r8eeb~~v:O<,'\nD5,Ls\rMpVsԡ\$fC?:xAeT{Rsq\0kp2`Ű=ZFr)'uCx|SD%[x2`;q\"z}bwJ:N&C HrWmэ1*6B\n4 F}s2S+d \n>Bw8\$aXNnƝ\"FCD/t8<\$/@{`	i\0\r\nl,e]OD*;\$2Eb(OGglG<RXFJڧ*0OAH%	v-Wd LA 4Ķ5M~#)PA+B0D\rЈe@ϴW\r.'xR/=Ȩ(Hi\0 @\n 	\0@ Jc>5DMMX-\"m\$S\0BuV@GVDTtLAKBLMl(%KݤmԱ%Q!)p\ry	nCj&gVd#1 kEq_!\r!{\"jbr'e⑱V6o2xZ^%Y,rXr4Jnb%c|.@ͣ,hBlq\$v)\"#fJvC YB1\$D(B1F	g4wqr)H(-V*P\"u.wGJ=#+\"Bp/`H\0 %/!3HQ3*)	rB03MYySX{V4!<i55T9HG.,Yp}	S@/bhqr\"0Gjn5\nT\rJ^\rF\rL \\)~:Ce S\$Y.s*xOo½@.42s>&34\$T(,3RdO5tEAs(r~3()4C(㶯pcFD5TNiGE.3CHZ9)I@P0)À^z@q#Q(_tsJeKQp\$HUQL#))1_AoA/IP1H44FuP\rQ	Q6BMEG\0N*q2Ucևæq.GjO5R;(\n^),@4HF\nTS&+\04*_зO9*؃[yU/Mk1R\"(AGUG]r23kE}DA9w_0|'ˆ75#aPIU]i~\"V6bԇ`Uu'[;Icr9_ҜSbej26~u#~}@hnpR)\"oB<3^?^GiTiqE]SjK+^U1e6]S3iGT|dP|lСmNNC6\\mGEVSn4nv9.\"BI]]YmLQQBȁ#w G%_5trl77#_tce5lsqO;Q-e,vwJwovi=a{GqBKSVF9VKvNCowv\r֫Pfbӆd{p{L|,6Qw\rw{|L+{쮍7Ub)j7rh}c5+xtSs𢑮{aofvX=deҮAP	MT2yyumSPtW K5F\"pT_2\\#oJnִm(DxmA'\"a1tx-B1_Kާ x! 6zuLM3C/x_O&`b=B>AdxW=NSUkk2.1&,'5qUn @\nZ\r:rJmr>(/U㌓A!5\n:3uB,v~؝*(2Q<RQ2z{h'P@O6E@O4azPWQ9fWS5\$20W荄I\"9FÕLQ&ժy<UBoCY4k<8j<Yz+pTޥلzA:z7a_O6:9\nA	@HZOORS_G~L_gt+i8zY\$:Yi/m30s=P	Y%pf꣰WCu'N\0NS-ϨS7\0~:j}nӢFIۏO\"9&zT4u*1PDZ@ĨNU%VH4Oj~";break;case"bn":$f="%)Ut<d sNb\nda\n 6#k:jKMŐD)RA%4}O&S+&e<Jаy#Fj4IjhjV\0B`ULcqؽ2`S4C- dOTSTLZ(JyBHWβt|,G8rgu\$)k2~\n\$g#)eӫf\nVUN(]>uL]	q:jtZut*#w=vp=L˨\r?JtH;:B6cz*\n(:O-*X#ps{BPB/j{BZ-INJGED!QY\$IMV.<SPw@H<ٗxm^&Hۼ4Ě6ش|/\"AjU<#'˒*Io>)2,p,6IQI4ϻAQU8\$XGKp\n[+l\\OjxIH<OJK,ƒ9uhCVx3x+u	,7b5VIuk\\9\\;MSB/vBK[ܻe>SzAT\n4Қ\$[cBa*Adި7	F4dNu`7c0(x:|C1c(+JWOyj'a !O^j*BWQjPju4t!E{CݴU2\rH2Vea81c̱ġ(v;`ajQ2\0x0C3:xׅov|3(0; ^,#(QMgA^03-m3+iPZB~[]Fӑ;-+աD֐zpKm;>.3BKM\\7ʔLQ(dlI#ioa\" WV(DֲB[!ae\0e_[;&\"j;4eOH./B\nD\\ix:d/:AkMk\"Je>0 !,\rNR(|0U8\"̼X4OBly>PLYf+X<V*IS'%^R`Wn1Fx;EvPIǉXݕZY+)WnKF\\'j\rrS^a\"t6q6AZ0\$m0NO90Ǖ''/\$vǉ:\$B#e`dGl2*K/d4Q[7N@9RG.2c}Y-3@s0n~-fVM;tDR|rV0tB\$s4kxS#iة\"y\"ſ9'5,j-ƝD`_x >E+3N-}%fҨMe3QR7[۪x=)D6X:\nӝmRiGEjbĠ5 y9fBmnu¹CE<ݼ^[]h΀,S87:tԺZûvv'pxd\r:1S*EcۜJ頍K\0*+-ar#tNT۝&vj7!\nWobht[l1W3d8(gpet:X띃ۻvCtwA;]&.<2u+qzDY#XMEމh'i6UPchqڪDf5i./'Ml&^@xi>ł#s;6E`\r᪙֐'`Sͨ̍3,R`'~oA	|DQ*HNu:~a<%T/5rω[@c7Wa&W=pd) atbdg^190gwtGF_a~88Pe\nB26M\r(]NUMGU݇!a)4ɞ۴!W&YmcUM&I27x0`*j+{utrΒVGD-p@xS\nmmWn:Gu{tu\nxiyqYSDs;f#M3tS%f3A)RVj_>j\">}Q⁜ћ+\r܄^gTuO	Vg6(SVvxiD@Js#Y48ڽ2Q⻃'Q<GDjӐK'MqLm(z'J mb<LFR`S6Sml>ʊJl]F)_.茏蛥0*\"+8D0Ll,ʈ50WJb,4#Jwdȥ(-86DpC>BC@0\r6+7Rx4R	0H>.𨎎)-ЬN.+JC{e(d(T,S0ɦM~Lb픠)-(DFОBɤ07;'Otâ6BBJ&THsNa¶H\nS\n03h7T\nH]\0\",.3/l2oPQ04u 9J.\nzb{H֦,_EB/	8 oH\$@l@FLDpH>1jvL\nEΆETbЕ\r#\n 	*Pg!\r4ʍ8*͌cp%@'5I,Zm^jSj@^K^4,C,.q=b1lɇ\nЪKR&K,k)aq=.0jBp2OĘM4LLkph>,/Rs<.,ؤldFt//\0l\"pP?23&E0\r3rG5ҠGR6P!-rKk=7`Eb7s\r1V/1җR'Hز|me^:D#bpюJA'F=R'<e,ϒ#L+a&`\nTZsЈ*TbdgB	K6(CAFN!;Bx>M3ӰƣQl>0Y\\S}7_4Z`\"Z1q?G5:^#>w13r >5F64OK'+1yS@H>C'făM3LPjj\"EIvG\rȂaTR):r7\rA+&C̖힊u(^/,9Fo҄O4kQ4s9LMKF5T4Ksb@DQ1DOʏ܅T@`#{&Pn)LK\0p_?04Z6NVLpm0NEe'Dջ70ʠYNԯIDv%3H/nr~7g^3&V3b	}.LtUNdc_57Tg?6)^2-2IP^-O/s*Ke0tV9`e1,(e;f(<S-g31`%i`nZudeC֘ggj5jvJI]Vapmd9Sl?\rW5n3QF+h2KPﶄ6f[\nrz`^1\r%s\"pҖ}ip8t;kVdF~9MX\"̳gJAmH1z}4a5aTVWbSh6uk%y{+5C2g[6Fק]t+%Mce3?lO}pn:nWܪD:jBE{4GEhdQ	Ed.l,Ҳdd|Egʉk3k/dw]'_WyXcgPmVvH%EluORr}(e?lRx:FX|wxHbBO+T6Eya5Rv-x2;d,yxGXE+34;()CNcj38y); cĐYK_ِuxG4!zz5kM7Mȏu{<2C̵V\$ Lkl~adXwrwOx4kwyqwi45z]7n\$!	mY\"*g͕O9Ԇ9ٛyן)Y?8xmpT)&}Xa`,8Ú9π\$&S?n/WI-t&7ד\ndɞt dt:Uh'i3i6k/ow7_f	qV3o|IL7Nw*/#b/	%o@yIgrd{U:Y\0mA\n/Me\npѣf_pfWϮD{=6cfvn7Aib7ςTLR/%OՋhFY1\nLQc@yݛQj42;(h%B\$<GpB:{c@+O.EHQ}\"I;vpVN	t%< j*#6295<M3|kpcW*DcTo5;U[tsby֕\\Sz{e@A=P1WZFu}AX6o)sbʤ[@N9g.tDGcƑt/nT˴\nēr'\\ bX96(yMϡ2Ea=!DÝ*7siJ@ C\$";break;case"bs":$f="%(l0FQt7aNg).&0M磱7JdKia20%9IH)7C@iCf4(o9Nqi :igcH* A\"PCIrDqe0	>m7ݤSqA9!PtBaX.	B2w1{=biTe:Eo;i&a1l2̧;F8pȐ3c{1cMYd2wT/cg̒d9\r;P1,&)BM5Қ֍[;\09K(7n\"9X:8;\"@&H\rprҹht*7:8\n0rO㈦)ʃ? :k8찡mx*\"jk>/x&)|0B87㤱4\nk\$6кJ9CDu@7h+jFƯ,&%iό#R(M̶9\$iˊ P25JHD,lP9īP0c98@ӣ<KVHš`@%#B3:xo\rXBr3`^8EQ`217\0ڇ#x|	4Jl(TX3?p5cUL˸R\rRX}c;RԸ0\nǶ:9AHjj6JAx O=IH3#7:##ռ[/}@T<1\r(@3r\$`Pv!P5\",1 '*3U\r{88\rk-#89\r0&FboâZH8ÒC{NCco\$2}c}Cb)A%=w<JV\"r\$#H-#)ZMGȐ.+ӓhpy^`l=bx*m0k*HJC<Hk3SD9	2iDPjAs#x 	5n0!3bhRL+yU!P7\\֋'g&[V\n)\$TTNQ7\$*\"sʯ#J*ZpcoZemվ\nU˘9.mɉi_H` \n<Py,O10I,ƒ^кY*.qǥ\\7)	!r鄆2Isg!H!jzGA\$)4r0:\"Cᙈ1Bcu83j\nhIrAW)\nPJBףVeyG<XLOMx /n;\nM6uK\0Q		@@P%Tp\nN%E4琒AqIe\0ӈqɖ)-3\rX\0Mf?|<9v+Cdn\r>U.zΠcƨ3yX(Y0U:0|8C\naH#:Yd\na4G2R? mߡR0Z_a3J/5\\4Fgt4>y76:\"%fc&98S2Fqr*c(gLÕb3Ae(KR2A!O.n \\K]f1+ʑ),i8)W*zW캂\0\r%`J:P[M\$Mm\nj;OO	*\0BE\0SG4Ù%LR &\\SjMZ\\nHt6ђC)TR/8H=A,\$(&V	gol33а*\n\nqڞXVyeMiyP2-W5;WvOi^?Q-OۣV}?M %6fsIr`\rI(Tl2~AXl0XP11`a<nL[tⶋ@%10]j\\U\rZ	mELHxƜ&gvj=-;?,vQ!7O#E߇ȻdX8	\0۩wlS\\6%FH(C/q1&u1O҅FRJ/dl\06~l!͜JHP 0-bD0\"@*k!Ӟ:3lύ=2+A#RYݚp.!WI3;8}t<pepǃc1/roŒc<i6wzcI4NiӖy64C;νw=c||Ow<q|7l%mjY dx0zwq)!}0	(b(]O,Y̩<m@(-W\$[)uH3^?(lc01	3G&Q`d55\$lMQ4H82&2bbP@%'2tMJ#Lǵb`4uXH\r?0\r̠Tmm+-\"C B	Vt)p?	\n\"/?{>&\n^M\0\rNɍ0_0Sml,Êd1Um\r)0|M#S\r:\$\r\r0;ǖTJ~[&rBV{%:,#l*̱x'\"19NЯLx,QQcGpϤԎ2F6&O9pp1%1{o|J\$\"f!\$czn<1\"-Q\"^'&hS nK%\"qy\"\r1	,g k\"\r!@ԇ:%04p-[b{Qrd|12É({cE{<y)+	EdN(co)},+8 r,\\JG)i8>zс(1\$3+CO0q+an&w:\"/1Eu, < r3%3I2s1'p*- {#E*rǴSa55'A2J\"\$RҦ'5̊\$Us71cT-Ʈ'\05`|0)o8E<:433<7i;.K=Lp8d0R<3(1?@5FJ&cVKR*+As?e,N0kC+(	D1\"	{b,D.,i~GFWOV3G4xC4}&'GsF&9fngFY1nK)DyJK0,P\rV4'+G0/0Dʂ4EJ\npBGz\$'opJ.􀴊o\rRUJ7~xb\n\r`0)YCB7_&C7q	I\nV 1@ ҵx&|N)cNG&'lknpЭԮHU##\$պ5\"ɵQue]uH-#UFB^>b'LƦ!\$C{%_q̬qs\"k\"N<Dx8qRख.ܒ`U{@2vb&.,-.v}@6K5u_S,.vURf!p\"5bN\nCD\n/	) ";break;case"ca":$f="%(m8g3IeLa9t<NBQ0 6Lsk\r@x4d	s#q2T\0Bc@n7Ʀ3xCf4(i8hTC`uADZs2Χ!c9L7)I&ZMQ)B>MΒc:N!i3M`(Q4D9pEΦ\r\$0߯Q5M]YbscL<7N	]WcEY!,\nNxmoF[7n絆^4C8)llމ-ޙB26#r*Z;93(0h7\n;hH;\"H)KS`@:pNȏ\n4\niŪCJ810((<܈hBDB0<7\"8> )NN9CB:4iEà3\0t9:jk>rlr!D3 H4cJN ap=d4֌Jj0#\"S^1<R7tD#[:#SČ Rq2GN40#0z\r8a^\\Xi\\|ۑjJ0|6ȃD33ɓ3&xFgIN m9U;\$9M<H;d~MVU;d7f\$>1U((J29:̴-TMS\0002X As2166Elޖ2~)&\"2+Vɨ(3qZi\\\$6/ގ\re\"	xܝ>aV5&#'H\$hm+b0h#\\7q\nb\rьe~QXU*\0VJ4ok#!þ8cT}U\0P麫̬\nRE4Oa4z-T.OGf܈J4bPZZ`F\$:!冰I>SA?	<%gPCqn(RJ!áDA[\"9G0\02W4L\n%BTVA٤`hO>N䈆phFXi\0002\nb s^s\"*2PA-H,k!茮#VW:]kw\$k}^IFa\$sTic-,UZ#\0^jU#+o4a*L\n6rU̺R]y/I\$Ò_p%C968p!fB\"l@403֌ڽ\"đ2ǐF\"Z*\nmGERMcYA2h-wL\$٠.dR!qQEx\")sMVoY5B\n (\"\0((b>N3fh\n\$%b\r2e9GQ;(#u:Q\rť#){AMHc\r.D+Ike:&BS\nAUAWp p8tu#\$ٗn	\n2pd~i/&*k\$@@˧+wqyP-CIS0aT \"IۢJ򮑮bQڶSOL	3I5FUͭP!ӶሒF;\"y\n, RƀLVeX#H<	^XBXnΌ'@BD!P\"<(LJSZcNKFT#K\$hXvcPSGl;7 8 ޚ^;UnYH*\$vK[ج\rnio.[fsL]SeU\"P\n\nX±\"VbDRFc%LFjQ9\"3ȎWsTȃJk\n*67ChS\"2f1UP:	&9]˦jF(%~] ĨFHPJlfUV\"?-\nb52˞#0?	P.'rr!׻#&pC*K9<\\kt&dͧOY0@hE78P0:_ wJk	Dg7ċzlaP 0A;ZIC	lߛF4hq+Eh>g&,q!i\0iZ>{C.0mLN+פ'U:Ol0&e:w/7GKu4^'J]ֻu0a1;\"&Es1䋎Y#vFJDf9TO/V\ru;;[#ĉ Ph{<PC(0Œw9W]Њ|-PGe_+- |BLzm,\r_/Fdk.8&p\n5\r0Ţ\0k*Fe\0gB*ȍn=@6/;lkbV n'#Qg#X03\n`Eb6݁Zj'M c>\0jFips>se*cbtrwBok|#<Dğj<zP#]\0PTzG&PG\r\$yQpd24nFP3㺼,Mq2K:ZWy+θidn	4N3@@#w\$ILL7lh%\r2- G΍-4mVcX##E	5L1PD@)d`iT\rĤʫf,ТipzVq%\0\"\rR\"\\yT2'c2'!prK#\$xgJ^yfd\r5zS|1N1\$0̢OGQo2|R\"q\r`E`trevŞ6&<# LRĪv>Q3)_)Eb|x}\n%//e)V\0|0m01%],12/\$P60/%\"ٲ32N%3`9B&N5JHNSQ6Xn\r70RR\0-\$kO	9D2O9*cOH9\0\n]&s/)/#?9qE2ӣ#-%=\0\$0j*\0WpE'\"dFddVh@(T\nd@Y!QmψYHX\$Ak\$0urhI@NkUFQ9%	fpR{`\np#B~M<q69EAC~\$_I4d┧R/2V1`'#f~d\$::6@Rto)2+vlI:\rzhu74@6%hcY(DGC_'O;gu(2N>SM] STcTC0V6u8գ(CX9jC2%-b[VJڈi&'+SmK\n4s!Z6z0z\$c(/fDC.zHMXFBBr.'MTuFi^,l_4TE8Rvm\0Le6'Ʋ(fW	\0t	@\n`";break;case"cs":$f="%(e8̆*dl7qraNCyo9D	m\r5hv7e6MflTLJs!Ht	PeONY0cAn8Ua:Nf@t< ya;Qhybƨ9:-P2l= bqa27GɌ1Wa1M̈vNBɲ:[t7Ie!;ɲZ-SDκfUFcga;da1l^ߐB͘e64\$\nch=-\0P#[h<KfIcD 0B\"##&7!R(\02hD(IX6n5-*#7(c@,2a)ڨʑbY T=&Ə#0)02X1P4@))J(62cz 9&4'+:aN:r>I5n#`\$EQ(!H\0#9̢\0000s8T6<7j8GA!\02\\ȋ0z\r8a^(\\0uBx9ㄸ9\0J8| A41^0n믣|#c5ɪ(\rS;Եc@HK5ʢE@p9}:z1g#\"2`PB\\晎2.\"\$#6{dT38pA\"07\rs&3C;2y&\rc\$t7e`P\"ռHQLў̕O5 &XY@P޴+f\rgcŇwFBC3j<K\r4	05K`7̋<a\0͹s֛3(2%4+\$X\"r79p{z)TfQ\0m͵-ed#l2fHps `ê(-0X\$`M1\"ADs\"%i\rWU!,\r3HHxdV*GT+IɁ&eBXdN+Tʡ[ŨI-E\ndzyG4\0K\"5\rp#ꥊqFxҎN 7f{<Űc_2RZFAC4\$zh:B)IvKb9joC jRI:E[yp.%ȹD]av^yl|Hs-AV	H6l5X6..vOµ'KVKd+Q;ln{(e\n%uiOi]Uk̕V\\k;u҉&^@~'@ܓg,\$)2\rCॅ(It<\"V[T%^3,LU\$Aͬ7pS.05O\\e'I\rD^>	`fI\"4Fm!Ѡ Rl8LY+G؆A\0P	B1\0&ex((R:mIbC=lՔ9h33h_k15ɵWf~ܱV(6D`tZBB\"*SM:\"\"piچlѭJ@RN(SLP*2	)hB!ԤDbz		\$f.	9\0\n&_.D8vjTDq|DW{&\"OLCt;75h(j+trtl/C>0[,ς bp[ \nnqE}G\$T^jRBNSkDMV(	HiV߀chQ1g+,rs[TgD+H2=.f\r:&\r1EB~A͹7	.ȳVCLZ]bhM=}U	]ޢ%|\nA||P261m@\\;D8:+)_L9P:\rP7Frh5e+vOP&0G.e2aa3ČB\"Aq[@Ĉ3ժ,FLߚ\nh2sl<jFNhϢ#x/\n*]L|s-?5Yŉy)#ΌCc.U|3I׎~ƕqg@d:/V8\n3)FŕLzP*\nv#U`BQilp˚/*\n\\8 с5m'jKwU.f.ǾT<u`%7'QzTg:!DO?w|g9E~EdkѺ7/lFVoiboO\n\0Poo{\0Ϩ@֖+fRW6(&\\LOe֝ HF\"EVI\"cbmC\$  (Дe6#N#\np5v)>df<<ѣCv|f<XIpKB\"^&0fl;g\rt̾cF,نAN\$Q;1> 0\r=`ȍ\nmml.6(\nF:r&N6}.q4DC!Qp%6m^.n*dB_\\ ص\$i*n'(16dv%J-.\rTP⾠ԥQ/qz 9\nne#1b o.ki HzO1!2{gɑA/\reKoF26.:/c\$-9|P%#C#%P\"BG\"2oώ89'L)E*NaZ=&hT®b 1N`i,mBP|-*ֻff.\0Z*t/J҆>(.*l6pH<Θ|/\n@T&&*=R)0&rtq(nic)3_\$R\r*n~!ndI.}*13}{#I\r9B71/S\" ~z#j:=fD	bldnH2mDm1rW㳑'G?\r'Q:Le\"6|f>4xm'f5;#A'A\$ڬ%f]H --'&e8 	Dgu}K@s:θ'ĉFBUUAYi8+fE:kFD\07'I̥?k9\nӚ\$TJtY@\\ǔHDITDtWҳ\$%L74Tj-teTPDK8n ,o(-q)9\\R(P3NHV\rtAS> J82pbwK\0TEUUI2kC\$XUP\"5h9UY(\\{Y) \"	JA&t%(OUcqU>M&P5eZ\"r9/(Nձ(C-[g[f,\rV?tq<e)vZ0OLC(\$\"s11*i\nZEZ޵[լ\rb~6\$k(Wv2\\l !\"\$n4j6:4Fp	uB-ڧB:Fs2d}g00e1e`r.U-@!\$ZGcbpc{q&rbR3'I0VmhmlYm(8Xgnn+Q`om#d'0c%o烜Fa>;T35\"5bp'JotBi`&*.bz\rBuq=BLw@\"qd.t6fmn<mX3-lMLwTmV֣fBvwV1chYJ H";break;case"da":$f="%(u7I:\r	f4is4N2l\"ц9Ü,r	Nd(2e7Lo7C\0(`1ƃQp9GS<y8MDYCQ\$cf2 )RN17&sIl36Me#)bl51#lg6rY&331@a\rI-	rɺ6G2A]	!τĝ4z]Nw?t\"3ob)t3˭YESq7\nn5P2˒2\r(?戎@8.CČڴ61ij(0ɢn.1	9@\0:0\ncdGs;I[70\"*3)x4\rka*9ȜC14>Lp7 z-GT	,j\n	b\r&O6DB|%\nB1\$߸@:L069`@UBd3ێt㽄\"ֱ#8^\rCxDk3ؤx| 댐@+(\$:cd3H;Wɜp<n\nƌ(J228~#Xމ\0PI8ܠ2x Qܸ:9\$260c:7)MsB2x60cvb:\rdC@kt>nŘ:-@\$5><LkbCd2D}ce\"\n\"`Z5ʔ<~_S{b	ĺ#\nU̱UR15Crk	[ӭlΕG*?s`B \"rZ'AEVmyBb07č|!yp|<ьϸ\n<%]6#bbYx,>0JZ<!@ޏ8y/:: Qf49\$g&5e((`TRLy)AЍ@l'Oukxbpf\n]Ez\nX,z1v( }{Dm.,Pxm˘0Z	t4jC#97tP)V^+倰Q2',IZKP\$2{I7{H('\0r^qH,!CH_yS	ĘBY~0<toTTW({E.Y@\r(*TY~!en[D_.\$	ȴĴsvH\n\0qNA:1fWcdz\"`JϨisa^j71\06C8yk&~	(#yYi)!CzhaN=PppUJg @iaw1ffD֋њ6C\naH#yAB\"&A@Dx\"Hlͤ&RFv\ntlD荄_ƞU	UyIqg¥@A\r\rA(!5PP]p(	!`,pӄ9 k[a0&H1^qeYY/HNK_ Snҫ0T\n	\0:*#ItLd=B3@A7iA<'\0 A\n^ЈB`Ei(̞\n.;'iV1d]P=60J@p35\"Qpɪ2j\n@b3(	\"UZISmf\\Is)\"CقStFUy0Z_x:{VO=g!tA>rQ:<UUPiAQ^`CIz.i!.\n찠4i(Iշas&ib}Y7F(Ct`,N]4Yka4\r8Bļ5ic2oF8P\\IP a81\n;Z餯Q*bIB(cd JFq	CV@W8~K\n!A`RuY_Ee\rFJ\$%=\0ƬX,j1JbCc؄d𖬷!\\/Ap		|\"1piøE#|\n^-\r<`oF`T,Zc<ӎs~>KqH3)>7A.<\n1:tsZDÄ(.A(\$?3CX/:V32Xi\n`Zެp^_Q}XR4;^0mm-j;\n@S+3`.\0O,QC*/wg^=?	ê6X@PA\\T';lM\$y#m㒃ƫ0'`S]vއor%\0Pj@r0\00nk sLQ#Rn(@0,R/P8N˾:/-\0'p _aO\rBk ʌʴJ\r 樂rhdj7X8b䧄Ԩ	VCʵTn(dA{b(0}I	gp&M\rհ[]OCPj`fj_Eu/0&lN1 4h1#qBBuQ8I'\\HJ>l4Kɠ=fy0KAa ?ǂbqh۩T>9d3M@Ht;HϰpћkgMN̼d5 B7 mh\rpA.C\"2&f#R ג\$(evנ˻ђdHI.&#N!G_'o&HqO+g <q&qU7CMcD.sB~sy&#V\$2Tbx\nUO&rǅ)S-*	f9-J/-s/+.1.S'K`d\rV\rdI\"PČ3@8ʴg~(',к[\n\nOF#n\".&)B.PT)dN6v+('fJ;:NZm2\$C~82u3F.\r/l\$P]CBˣĒ	f!pfl0OE8&p@ŋToO>?/69_>?'o\0> k>k]@RL6,|)Bюik8t.#,1'&kPIkkb^&?GC(\n:J@1*u8CM/4(l,0`Aĳn(	bP\0FB\r@";break;case"de":$f="%(o1\r! ;C	i9	MQ4x4L&:Xg904@i9S\nI5eLn4NA\0(`1ƃQp9S]\r3jPpv >9M(n1\$\$NқbqX8@a1Gc\\Z\n'X(7[sSa\$NF(X\n\"ڌ5MR\r6e]ͤ<#(@dDM^|z:gCܮvܧDSuﵗ6-l\"䇾*,7m+\râ50 P:c.\"\rc\n\"26J:2<T5q`䠷*A\0D,c>!?ɛh{,?KJB02lr!(H-1#nlrM6s:?DR@P25B87D216IpC@ޠ\r\n-L[.`@hD4!r+D\\	xεUe\\o\$ۈ# ڵ?/-!x:H́#8Up7\rL\"0@*Nx0lCD8a^\\XmLbz2PDbT\"Hpx!DRLː9'EK2nh8;t=h\n7*!(B,\r5	B­<\rj5Z\nW?(H҂7A\$H\$ϣ46\0Μ:+5/p1&\02p S1dQ\r\036e={+[f;\r769X.BzT2\rw*X!i=ϊUɾJS3Q62@S{Czb=(w&[D1476gޜ!.^PqJ0@99!a&I\$`܆eeP:Y0m;?BҠoIB\\eQ'Ϝ\\Gc.H̼UBb\$1(PسSyƸ&8lRZpBpe4ԒOoq܇<O{L	BA--D6ȁM/#)jԐ#rP;@d\\rA	⩬FKNGTH^O\n?\$,j](2ڻ׊^{%Ò_L\0Ae<;Zڹ0,ØdZ`Fqqb.e4=\$Rdj\\&4.fMb՞spt^z/e3r_^H`6'׆>)buI-9P\0 %N\"e#&'\0hS#ԀӨ\rL6#)p&iqkH[+Љ3+N9.(s#5N<?˙bPI\\Q)C5T\"CAAD4g&VٗG_NPQؤ'2]t*zId+ֽso\$\"enL,8B~˗5lV0uT@*^ Pk'H@F;aK`/-gѾÃql`IQh	k2U2f^:6h*NX\n::8tvfCnYR%rh҄sq3vC<vIJĐ(kn֜O#iҕaNcr|;'9q+4a3}ۤrжEh.dlj]Ax@\0ː/. YjےjA+\\w	 Fl!ƀ']@TPPtjHM(]HhmBhT@OXxi%PWQUղ%1ש#ig7\\!X!Df+q\nh*آ!\r&cn1*#pBZtG5c򈇫O\\6/J!/1HR]~nV6Bڈ`ۨ,CP\rBGԳc\noqQ79,}Ecpy*Mqd?(B}CNcr_uUM(1ѢGne	^tAP7)	IIt>.<uefX@(_St-*qwrݺd* XbA칉v\rDS1SѹʫLgVxqN:XWo+H՞Tz5'|M(~|K܇Mreڻ	_o_cd3L_I`/ϲ8hrۢ%-~E\$R6C\nІvmKM,B0EHd3. dlP#n1\n	tzfc6cg@'\"blp`eϘgĩ\"\03싐!Z؍\$'Тt#\rC>\nv\0=\0hQʚ&-2#6oͦآ/V1ɬW#ePq?\0hn;\nPdC1\r j0V6pf=b\$;q\r0d+	GQxM#EQ~٧\rp0\0fy63{%vq摭\rfl3>E. {[y\0pI?ChĐ{	p}¡n{\r\$\r0YP@c>RnqE\0(\r!R5(zH\$gCZ\0Ezju#\"PV5*-5URI̹%Y%^\"!)HeԎ-&@&R)!29\"cX뮾yEnrAne.=\$0\$er!?.15eRF-|}R3}\"0\nkx}\00ѕ/J7%02|314AU!	@4v(fC	X^{E06Q6!7\n2I\"fάf\r̕d3f8m3o8Ӡft!\nH\$|G	s	%\"|b<Q8#<1yj=+8>:>0'S0P'S?s'0ēJxTE1GB3t q@T/\"1I10C@1Q9q~[0-6S3\n(,S4@HSG'>0,O.UT/2>	/`7S3Z. \r\$d	F:J\nj\rf\"KK\rq4SFƬpT?昁9Y ϣ!\0c`4<60|`̼i5~\np	J5I QyD'stT1G5;pb8#@*pPH,:'̸ͱPWL>#H	6I`!NB5|QgX!GP!ܸjx0(0,6C\\r9TNFu1\r\0P4_g_1Ňuj'ă\\p@Mr٢p{clQ(1\0-T\n8\"VmubVQ6:F	2ԯ]8'4eiM|w cx}\r}F!tiT#*MR-@";break;case"el":$f="%)g-Vrg/x\"ZАzgcLK=[QeDXŢJr͜F1z#@Cf+Y.SD,ZO.DS\nlΜ/*	D+9YXfad3\rFqnFWBWPckx2V'\\Is4ADqe0̶3/tfOj,Q#rDIjI\rQe^DAJuC\"\nΕӗMs7>|w2U:RJ.(E,Z7O\" (b<K42LNpR8:8<,rZ\$39q!j|RbʒZ\rCMrGnS1˔>̂j ĚdڨQo(!r{Lqvg%|<B5x7(9\rl\"#15-X7AD 8B85#H9@)/=k%\rsA.	Y(	\\JZȳ.bڭnZjvĺϢ庞Xs>N14h2\n!Nvi8Vk|23BdX]HgNSŢJ2p7c0(T.@cx5\r0Ċ0N}RIȴAx^)b38☇WQF\$ h7Q7N}B9yMB0c:98@0T/L:cUUV\0y\r\r8C@:t<;.GԈp_cK |6-^3R#m*4px!κeٜ\nCăAext2ϱM)\\9n0gzl_5%<8g<'ϭbsy 2\0Ce0@:zPlľ3qL/9]g嬙.'#%|	kgYY m-<{H.4z*dɥe\0QP C֜ڂa\"O\ndLA沔ʪJ&Hjy>?WrJO'[%tCcDB-J7'Q	@uߙ-M*҆Q{g4(QUP`XB4RA)x2XQPt~bDybKx˩`Dh:l(h%lIvG⬘`DMNY\"\r\n͛(\0Y.Ӈ@\0ڌ0~IvA\rކ`ekij\\6˝MyOP Hnoó.@lɣIҡDK0sVJ\n*bp:YnȔ0Dui}q`-A.'\\Yk=M+љJ\\au)ezUjFk&*vvmfz6jtEt(*jFbߨڃRK𰑝CɰT\rCpo 6fhc26ernU˹6\\Α:TtwpgeKSQH򾤇^XVسlŁ\$DA%Ԓoh&\$%PC_\n}\\\$sNqw@NԺPi]vR%xiD\\ChRXhRXE\$8Fd*/q@&,U芋qĦ(9Z..zy/mh5m;C`lƬ8(n`(a&70uA7z.  pP@i-\rh0Z3\"Sbxt\$_JI\">*Q-bxS@V \n (\0PYK6zcD\nW+Pڼ:7ChDLmnyEh\"!xb1Y\$|L {:X|jQepp!T\\C@ia{P-b|RiCbXS\nALdusg\0Q'jUVQйJ9(BEEɠ1,jIϯӉ%CDtБa{Ϋ<z[1#Z \$;Ʈ.|O\naS\niyXő#@Q)KĹBhp:Y{\$uN&x!Ґ35kdr\"BaD`RIB-G1X_&u'nN)C*fvW-'H&a/HA8?g^V(3LEތd#0F){Fp{&'fF&.{Jrx紅-FJP GNx!bϐVG⋊8nnI,wč\$L],92H*`bǮXd)\"]2GyP.N\$0~T.|-2F|(D\"Y0(m.Lc.nҬdփXjlj4G\$ <H\$ࡏ̠	M.xDadNf9Axؒ`B8	t-\0@m>f	-Id` Jr0NCʂHigT4 \r\0+0C֔pL\$lԛF\"a	.Q1i6\n#JV~rd*@Ff 4*5nf>#aN#z8,8IWpmBƺ4,kҨ#kةI܌Vˇ.*gԀ \n`\0Rm5e@TEHTͼjhp62h^	耭`?rZ\r,b\\O\\&'rJ-	4ԢbRKP.E/\n~bu0-!001w\nB1cJvk,[P/b0#.22\nBh&16-I3!0S',\$[S6E8 M1'+ F^I)L6(#\r(nH8GDzVO\0h>[-JP~SC:蓓@\"#.-(2Rv~ǰv!(cUBn~a36_`>LzRH))eׇN}?d	\n\"0	bK̔JTԘN\\sJ\$\"&Ѷ#a	CI\"BBF4GTE4L(~ԥNo\0)sObh6\nЪ*J++.R\05~\$o\"IQEf'DS9jf.1\";rWG4\nI@h`g\rR'\r\rx\"7H͌t~\\IJk㰔\\l%4ZuAcOJ2C]T1䀝L[5^T%\\з(VZ\0Ug]{VJ\r\nk{y83/8d33-cS<2ܴ*bi1bb?c3#8}IcZ3GdSL<uG/2(nHL_egB]g-~vNd;^V^8'ioh'OvO`	+?\nE:(G2Fcce0-H\\Ntް,ȏ-EBvU*.\0|i7/Zgvni<Osskv\\U3M=rQ@!	NÕ\$Lqڂ'pQa1^\\o7~|ԝ_\nwxc6l6}Gw}\rcs:!>5h|4D3]ׇatzԚWاצ׵xN56Ět	kab-.6),c C{F%s]yK(Gqn?bbh}77bjUlT{~xVؓ]zTuLz<hj{X\nҏaIxh\$v{OK]טS^x΂J	'ۇ7f*xXaXUv&U9Cw׋ӹɜagM{7T8Xmz	`C&}as!0\rk5,u&RU\"le<@˗MΒg+F\"3jMK\$yPyNYKji_OI RH12;Exx҅%SH.`|m)(_7^t٠beT\"Y7{8qjA0 Ɉ3Z,\"81|!	!9⊤#ak!d'ض\n'oEjoflo7懧Z>OFjYSⴉU=CD%3310*QaK=\\D.ZH'Uu/2jf\rV`Yl?ƫ*.fHm6ujPo@ncȫ֫,YO @\nZlI<B׈K-oÕKss5\\+!UکU# P6~by\r}F{MZ')%ޱK&Ȅۡ9rF?bK=)8B-,{5?(7Gz9/&/d2fM&P/h&qb(U~J6t^hW]O*[Ԛ0M{J\\3B7KŜ!Peç6E̛iuå1{bdN28Ҁi\\;n{O%\"aQ0]Yk\0inyƣ˯m@6:Ħ&sN\\%/w,Wkcav*ߩxF'J;LJD6E({KRuZy\r](*{J|@@|zʯWqP+{񞶴P\"ED\0\$` ";break;case"es":$f="%(oNbi1gBMi;,la6XkA<M\$N;abS\nFE9͎Q 2NgC,@\nFC1l7AECL653MƓ\$:o9FS,i7K_2Χ#xI7FS\rA<MӔia	r8MNfDl4̆gMjE*p2iiN@	:.O~ir2,dQCO&p9H3,0gKvIyfG{[ <\rℶ8ܲJӪP0Β4kR݉-ޔNj,KoǬL*&ʴcc{;;\"F(-\0\n-bsʽZסùi#¤\nbF'e2@P24-!)P\nN{2(9el:'Ѡ \n8GbA\"Q5Q\nڷ\"AI\\!FLgGP7t\n#1K9U 4:(Ds#1H̛V4u ,H;PxC@:tN4-8^ x\nBj|C4M|׬jHt;l\r-A\nxnܣ-ڃ*s>Jb[kǰPJCʘaz P:tT/3@:qBE P2:dmVZbcv#I|ZPB2@Rj'N,G8VɓCsP:<F埼W[f\n;+]UIL\nb3vWk(aFtяJ8\0=(SYhVkZ*5bh6ZCZ9ȋnj+f7b(N~ӕU\$NN>dAtLZRi77Hs԰0>K\$ɘO #/իAY~LUBbag-ݜҘtKL,sD/<ȫԸ ,FkU 0St3X!čIC\$IN_*I6\$aPB2E-X,ER!Դ@[\\ˡu.ׂ,Kzpڏ.C<)DJ1\$;`-i\n#2&q\"A@¯	I/8_\\QsֻWzazyܤ%k2\$\ndiRx#M&DlQ:8d-(ùBqGIgHHjMb- i_A823* \"qvvJHY9dB++ȝn%pGEP@\n	)'EPCCK\$m068Ci,`=YHZ8?st9!h>%ܦ<Q \$RSa'\$a 0Bn}\$䒦5Up@{dl=P7C&R7b^h%VeH+ҁS['C^ONeHsxбS!iH䄴z\"iY5Zk94=rF+sY,W'(Iro|>@j\$䤕'wIڰk1*h_o(Y8ɺP/|=\0@)A)fAJPSHrIB!*\\RBA\nF 251;;INDc++ [C \n	Bsxo#6Joa\rEĒUZx3{WZŘ2ST\$rfjP /#?XStLEd)Zb{RZ4Eŀ*:<*\n|T%^\$E\$L,y\rSDmzҶ{SbE/ChndO8JwXaCb%S\r\$by\nD[&A6#[Hv(]\\8\\&,n9eUBC@F%iq)]#Tn}\$\rؘ8!m%eOI7Rq!*LV-˥T\\,{Do/)(0UM<ٱ>jJqX[.=sO&bx E0|RLOUw_dXݻ3X3}\n^px?7^OT7pw XepF].'\0wS_C w\nM\"oFu9Rmh!!0ts8|ejλե\0\"3'SFz~J	G4j.ȪBfQ-5O;`kXIʐk/̐k##b-lzO\rln+Zx\r4\r\rhƐ4,i:hL 8>ǯ	Я0	&@cx-\rP\re	n뤾fbZp2.bd.\nqN(l/\0	\r4E\"~*4Ή3C	2dVB6f~IBjcL)lhıJ-N\n0or]֝\r=HD\nFdF{HUM/a֢Q&&H܇zU&F@G_*we!B0. ,Dpn?C\"OVtC^M	VzlzpgA	'c\$A%1 rHs&E!mnR^qG.v2?܇{fqpg*2 Z=h\"*\$r )\$ hFSR}r@ᒩ\rR/KR.*ǋ~\"N(\$\$n&s-2XiU2/\0nf\$\r.B38LsA2pbxf!LrT惲%`dJ3dkS	#vh2vхdb8@G*98cl`/##GQN;Ide\rVBPB-RH2@	#d'#:@1bE/ʮf\npf&E94OTj.'B!:/ʫ\"mq' L2F\nh#c䇐N2sxbBPVF&lLN,b^mF&BOnr04.1Dsڌ>gBB&&d*M\nK16QFܪG-gLĮ3h@ʉt:4C?1g -E\nQ:qr'̝\rVB\"*4Bѥ@NMd7mz/bDFo3#v+~吞EXy0#ULv\rjqzp&ί<+	f@	\0t	@\n`";break;case"et":$f="%(a4\r\"e9&!i7D|<@vabQ\\\n&Mg92 3B!G3u92	apIdCf4(a&	\r1Lj:e2\rq!?M3ϦV(6byeWhsygD̀nZhB\n%( i4sYm4'SRNY7D	4n7hI8'S:4ܜ>NSozZW<,5!Z 6N~ޓ0~3?r3̾!Ϋ'\n3R%b52C, 8#<8+ƳH:lD<\r#+_\0	!/1>#*V91\$p6Lrf@c2ϓ6\"CHNL9BB9\ra\0P<B87@4b_:\n,7T)\r4\r0΢u97cX:,B7\"HBH=&{ 5oؔ<:mOT3\r0>8R\01hXX- 4\0<ăM\0xQ8a^h\\?C\\ƌ|l62v\rj4hڮ,(x!N+\"o]T P(j2mQ	ڢ+	\"(8d*;2R	;jBcLc@ * (NiD+1(:Nr1鈴d<&Ѵ*b:HVmF#EY@Tt@P:%Sj4d1.pַkTcH94b#cH5;sH1 &?v0I\nq# )Eu=Y9gkeOxXMhan\0f\"SN89=P+p)HڈH\n\0*'	9f#H6Npڀvz\n+`arB!<If3=	:a!FvK91Xre<77xI^,m2toY E\0z\rpy:anxC90ѥ5ACa.H~`\rd퓂Ni+&;\0@UKt1RX[T7kr.eкb^\ny/EzQm8¯}*A]e0\nYEn@؋#Q8!`)'%'m_/fpreA6ڤt\\u^gSh2_8!2ND73DhA-Զo\$lRY9G(Ȃ4aZn@Cu-!3(M#2ڍ`EtNK 0BЍq\$Gp#<gB6(WpF:0FG7C\0P	B#To3j'`¹CNY83q͋''Ma@üԀI\0005݋Cb5XfNX\$Y0#D=i AFM0RPθo,,\0FļVv`Jc%j-G~zj~a!u5p@ɹC%,#NkI.d\$d|R:δND\0 -bs̍0{-Pi\$[8G#sHep8M;%:s+;>%3\0Ɂ#`S3&}A)L3jz(3S^0\0U\n @߱D0\"MҠ\"16c*r.mαJQ;<b7ֱA̎|X9ÄWI\rEW%TV	:^\\Cvk[kj&RHBg1~g4䤄p6Q)9PtQva*051;5S\"bABmOvbenK=V=!e(7hk%62DPˬQ\np)\"Ge^`^KIC!m˕u('Bk_yĶ%*RÚ+VdsIdxZ,LӀPCpd2Wio\rjDH(N<\$}5@B8GIs8yE^6jd1\\Y'fBAa \\r\"P+\rHV]K\"\nQFx Ťgca!9Hz:>i6Evz|0q4!iF=YjgBH|T(y	r\nOٖcK&	^.tUwL(c<˴<Yod@m[u7c%W6uTa;	T[9({ {\$}_ܤ'*MyoiЦUP1{ahA#(6o-\0/P\nvfLTMUdP#ϴ=DD{B@GBTp\nTPHpN|HTn>@J-9&j\"j9&j\0Zi~\rL J\"\"-O#>M,D<!W-zWO2_Oǔz'ʴv5	f0\$g&r4gP#NqBsN,N'C>LjĢBsPqWp-^LC>	9ZJXFC|Bz}-򙄌#kwJE#\0HB̝H>ߩhl8ĩ6*ćlGD4djwB>j#bJdReq#@PeT1O+!3ME#/!~eRq};rX=%vЧP)dB	&gnľr' P~\nCR	(g2<5)K 1,|%&q-%-E).Fm&'.Hю0C\n)'3\r.&n`|.9O3/4'\"#C\"rxM85F#qp\$SJ6I22j\"Cv,.F33\$8B\n9e38bs8p&W99nVi3k-Txҁms2S<q(St=RoS>>P`NhT'rzS4rs?\rT+C.\0SRB=жO	<:Jn\0+./2x`[Q-Ds&lwF}\0jGHQ-O3.s\0cd\rV\rbJz!'%&<h\nZx.iv|e(in)\0QNEQ\$Gl!KX'-RV=|}&Ý5(vr?䟣\n0N@9&{0=Gt=7`grt|jrO-I!Uy\rH<!UPU=#YH|'#x7Ӟ0ՠi.f+<FH՞\rzڝܦSb5\n\rp%3\n-H\0@&T@Mbj{@j/0#zbHjT&rW9\"&p,&Z&p\r9N+Z,hSC&	\0@	t\n`";break;case"fa":$f="%)l)\n@T6PD&چ,\"0@@c\$}\rl,\nB\\\n	Nd(z	m*[\nl=NCMK(~B%	2ID6MB\0Sm`ێ,k6ѶmkvᶹBhHA9!d+anپ<W-l'Dqe0̳\nXvC-*UeKY\$v⬅5NWf+PdFZ\\aT綷Jė\\VLã#u\r#He)nZ4Į>N(N죂ͺ猪j(l4{\\)#7lX\$d˨)SCB5x7(9\r^\"#12,7A 8lz82#YC:ȱdKd.J	TBL!E2Z)j:[nӥmT댾λEtl(~C..!hl)N98r\"NrYIJQ2 P7c0(H#.h@cx5*7H8FTy\"s\"Ӧ̪3Iܶ187h0TȂ2\r|TFv7ǣTǣ1#3\rq@;#>:!9@XǌD49Ax^;pn[tZ3(2d\rk'h#x|9LS CL!NA1x#bD\$DL;S0Cuނ\$%`N˳ֳPPҙ/򦄦8/LgD:`rB³)aC\$1/2(:̪gU6PunUCIM=ƶL6ޞbJϣX\r߼RfKz\rh4s^h70h'6z-KYOx)!%	\0ֱC	tUyvmqM*IP~..\nL\0mNcàul+6\0C4fĽp̃0i2à|eM\0(\"a\nEt(:1̌w/\0Td!∐B`Qy\0,mV*0+	\"RnGYDA=ָfrId).+N=h\\lDBB'C\$CfR2G?B{\$h2`ݙtl;B+zk*-@@nEL1\02X{blUTcQFb>DbPTJ?tSɅ6,t]#>8/LraOv\nHKpmsbLP;f14rcyȽ;+'YDVFWt5x`X[)F)2Ah`U+mhBi	%S&s2^6@pES)R`\\˭v`[`o)|/@OTYpa\r)FrNn\$	WU\\R\\ϴ#@\$	TC(	F0PLL*&Ih,T/i9܄,8o_4rHH'.5[Q5NFsdWp_Y|IGK9EQE~/䊑\r1Seo2w1VnS\nADQf\\WXThK%B;Jx'E/QJ)I(eD+D~\$QRI{CP@okbǛ2<8TrC2,\r>2Vt6*vh!q!@Y(d6c@ܢ\nߐg>[Co'DRQ/>tlJ/?S+	đ=iBA*Z`fHc|9&Dj)d\0004T04V-Z_K°)0P*] E	fy@{4j엗vމ\r HEa\"vI8HwO\"Ʉ3m:zU!/~S8	K]ΓY>sԮYh%/V@j9,he.6ӜJqE\0<|74P<tDY8-.d</-y\$1m KqE*ҸL\r^\0ln >{@E}=O-Igk1a4\"2rREJ(floKS&҂EK<	E>≴ϤkҤkVd!bdeVnM_K!W)nd]l<E\$[1\0k\$fЯ8|`T!\$`2h\$vK\r]AM;frDrmIT:Q~:`/^K`'\"2&nVn !P:ܷ7f\0\0LgZjog.#43.Cw(%J@SQ0* }pvw6;nikʣt	r/l#N~\"PrgLn'='jưkN	\r	w\rE|.^|kfVPȗ(2<%\rkfj%1F,Y\$0Z'.Rq@E2~Pm.M@Jpq0m;&'O+q%n.B\rE\r\0H~B/TsdI΅ƴ۱~CwH϶C1\r'ʻր';qQz1!.Er&\"c\00004G\"G\r\"#P'hhC -rk7M2\rb&!w'(6k B7\$?B!6CxheK_(fbJO:4/P-֌)/|P.ro 2(ik.{.	k0<.?/R-1L9NtJQATQ\nMfCPJ\r\$+2\nC/sa16h@M66e+/3-8%/z9W?\$nh		1+ Ӽisjn)鑇;=;39K{Q@֛c\"F<\\@D?u?GJ@k\$/4@o@\r&f6D!>sy>3|mV/TT8d,L2GX%y8#>G!S<	n0WR@m!CHH3C\$2mnRe%%dnF'AW,XAR)'K!opے>!R_pOOQ'i_IL;'/p@lʞq|GL\np̩W!B(]O\r% _IQ\nkP\$Ih<PDWWYS.pk\"Z/WJ#MR=!Bdwi;/c[MNADL~se*}%PEr_#*Ujpc(z2Q}*+V_eWb<G`_R>06ģa\rxq1Vq_\"܊O5,۰}y<4-YQflJ'GNǠ\rSЮCDe`Vö\"@TnOÝOv84 ";break;case"fi":$f="%(i2\r3 2Dcy6bHyl;MlegSnGgC@tB\\ 72	aR,#!j6 [\rHyWUy8N|=NFI7FS	 ѧ4y0&~AHk!22p2p(MSQRM:\rf(i9׫hCcRJJrTf!7Y4֣I7uz^\r2ÛO 6ybkOd{%zMs24*6Z݊::cД B[P:>/7{\09<è9n!`+TêJ9FPBC.cj&/5(2tҊz(ޒsj%+Ó\rkv(#\nFҍ\nKĒa7CA\0t9\r ҕEqS)ZAӰ:\$#ZǏ#\rcML+ڈ##Qbjd'H&LWH<f:R	捵@!B3Кt#UBQ8^Å9@J|+c|Կj'BQ(9xܯ\rcX[MU\\\nQ@T|-a(mègX.jJ7.|& @ʫbݗ.Hg[Ѝ\riĢ :3LVcMZ4,Sbvp-)\\\"j2cBZ}lBp\n\"`Zh0m8<2N1FdvccEQD9w Nxҗ\nޞ#<͏6+!lP%kro8I^@#%7!#0he~l`Ree1lCFS-q672C3(`6%љ(3'IIeq[PMQ6W҂*L,sB@?Zrjc.,@R-RzsVq%A*:63Ƭ*\\Mi(|9 \ry1IXOʋa.&w10q\"32J㺧)#DRjIJ-D.+!eN WȗES2E̺R]x+r^&226G8EHJBLFB>VT	9/`9բ9LIAB&RQRW.pWZ][˙w0(xC5LTF8@4nSoHW\nMÅeXКD4TSH1XIzEf) uc\0l9Nz}%b֛j-EOX-Q8BNe&MDA(j=50Rqih`Cp\n+2D	9>PQ(bãb#G t\$CXwWVUT(r*IVbں+e'D40jsV|5`F\$\0L+}BRsf2vc3&23pө\$@e\rt#rRInj.Bv##VE-AZ6k~=%1h]YxS\n^Hh\rd{'1'X]sD>OCsէ,BV\"H\"	pSs`PR*I2`H&	\0 !\0̙k'\$\0U\n @\0D0\"e80S&1)4DsSaA8q,Z\0CS% \\k\ry!;I/:>v6 ]vveP?uqSZZ9|X\$AjJ)RE\\Aݗhdٕk^\\l})B|mFaDmsgaՆr^ACzWO5@GiIS5gs dF\nFB.Xа@mnB8	/\0\\ #B'WK&!\$AB{=e1I7gAf@4VvRCejd{&FCsR2@CMɆYV\$<XrE׆Jx |I7a/y+L xK?o4w o<á0>%-?+%?,pj6\ndǨn̑%u5HQƔrϢ~zHX||>r}2M8nJ(;\\ (+=/pT&uj资)ÆJ6d6fnhP1g\r30OXgk\"'4TV0E\\ܰL\"l2VFTE4H|F%͔k\"AMFY(b	~\"Kة\"	\n\n0n0~J\"@#-j&\r4-Fi@\r\r\$V\rG%\n	n-J\nR'MZ漫r	Q\0uO0pdH|'sЇ+\"'h=%129fgyJ&f\$'\$3űo0I.`CB'rF,C1-1qC@\$Q60AH ZJz\$T\"r5Et)EJfB,-)M(h\"\$Fj\$*.2B\$=,<ZP/EZ,T%@xpPv&쎉cN\n}Y.ok/oK\$G.\r#þz(Dz\0zQ#Re\\zqC^ue'j6V2WJf\n	\nf%CF\$8#Qg#\$y!',%3'nlևd\r`!,rRS..BZdVWe6y@yB8G0\$|%Sy?qr/1&dS3Hb%&0!Sj u7rSFSnZ\$nRMb\$i\"%3g66rnC776ĭ7NfSk6n.R'.q;1&K.-E-BF3Ȧ.';ƠKR[&^B\$bc4D-?>5i5EXd>2ckph\$vh&^A'.1y1)r(J('`K6A3vhZE	o#EFFbWO\0N c])\$Đ6%@b\n\n 6\"tq_@!CYS&TDNgSV\nC\0M6r%@\rkIMb5?Jn#\$õ<4gxJ4.CeDxc`2\0f23PhOm\"B9N'N=1g\$2Ϝ'|fNCҝ0%V\"(	OLꮮq UqB\na8f\rt\nP.7m\"j	V*;Ҡ<N\\'\$TS\$\r!2<uZ%G/Shb8X\$Zb̴REj\" ";break;case"fr":$f="%(m8g3IeAt2c4c\"Q0 :M&xcC);fSF %9ȄzA\"Oqo:0,X\nFC1l7AECj :%f0u9hZvMqM0Pecqe0:N+MޏR5Mj;g*L'S\$yy=W3Rt\"pv2LndNhM@m2)@jF~-N\$\"s93N78-L?O\n77eKzT7@<o0½)03 P\rcr\"L;?t\0Ѥ\0Ģ	\"ɍlנhъ(ꕡҵH2A̦F'\rhà\"܈ACDÁB0es^M@:BPN,✑BeCJ.\rP7/\0H\"\0t9B;{IP!GGR=)>Xd-J5,Ò\\ש+T2\rc1 8,Hɴtl0m&ՇG 2U!^`@\$C3t68^2}z; ^(6&7Ȳ]^0 đޅJjflX:.h7Ժ.egCmN\n6CCT\"c(V3m÷>dym,66T\$S`8#J+&S܌3eL<Һ̍z#2|&#>3tO'=Y梕J 7e9)\0W\r	m	IQ0#\rW5\n\nckJ 6\$pUr\nb*=>kciJ6UbgH/5A35'H]y>vv%jd3T;\nfq1AF4\"׶Bc7Ғ[A\")WKQ!|I\0d&#(\n-!3I>fL\"CAf&2)@p3ب8(\"#P1ggJ^gT!sc_15BzL	GBQ&<yqP:rl\0#\0 ԂC	fH\\CǔI%%S,)8,`@a\0ɳ)iD1\0ĜF\$0\0e`0Ãv2֛ӀxIL8(sDT7%Ԭ-Yv&i}D0N~|њl:0X{3p91f0fL}vFQA\$Q6\$x#8aq_dekҋ!03sB!\$grS&A䴚'&c\$33^^0x	DLu\$1KFt@PH+PPP	3E{)'v.Rw L&NRs-&5=֓,k\"JftIKX.Bjuܰ\\A|fJk~43Q=c«'MT\r02*HdFʎ+zFBH#wy@Nϩ3]jqviuv-Pog?9@Y1w*\\|6L9/dE\r4)}  \n<)BQ^*^\n*:Pݒ}Xg\01vʒ\\@䜳C#\rEG<B9#Od&8@zAQ)DW&@jOl2:Q7\n	8PTB@.IR[N\$EKT\$\0c=:!b`\n⥑0-pZ@	n}(q\"~`.9a醛IK;:V\rP\"t9'.}{)(PD7GƬo !52\n;J1uҒl\n\$n2ֳ)YeUJJm@**Wp	G.-tTŌ]Lhlr\"A@s*U!mr4l\n<fT-y@vxVld[\r\nMҸ7Hv	O\rmg_A}uJl;F\r\$jCkk6t祴~!r3e-!0j!oF8b;ZjRakeY7+:[\\Bec@BH9AXq3W@IjK\$DqFemmu>\nL0:Tc]5I6ϚSH\r&NzV*]}W%\$Yigb<ϦHB\$\nʺ/1T\$#Z/7'r[fgj</F(̴@͍rK,@MKӌ @\nDXPv E)#(yFL#\$\\.#h#01C\nBPOb\n	4*؍l.+-)P<X\"\$\$jv\r@#kP'0-\rKLkTRAdjBد(Uohz&09-(1\$*_\$Gq\"0`\"0f-4ҧ\$=L#Æ\$G&N쀂\r4hdAnDFԢ҆#dj-Q)\r\rQ^]p\rq\"dg0S^qKN G ] !\" h\$j<\$J\"\r,_o,F:2\r\0000*JNDjʶRN!P@3\$:C'\ru~\"!(db_Ln?Xjy\n*炤T<P,H%dv;@@cvF)H++1Pe'PDffx,)MrRzIh|̪Ҵ5ir(I%]2\$S*(LiJ	ăh;\n21p3u\n4S\rS8g6/S3vCsfKZs/\0%yhbdOdS0pV1% |sZ!>24>?r4sKBNe#\ne6(b@f3>#3@ӫA5O2x=1A*0K7CD63D-D326oj4YDN\">QO\riGE3FS8ԈO:<.Bl@ʸcOEeJDmJ~82JOL\n0L\rrvogý7\"r48OqSFoGNS3PO.H5:Swp#R86K;OoTDE/MPEBH	? >DkR/f*ih8GWDUцc&7&ؒ%.U5/\r7T8mlX4E?Ijb\rV҂8p#;FF	H.3'O\n6*`\nq\0M?D\n%O__aFJGD*j(U@CoRzi)rD\$C(P@Nýf*!^S\"O+H݄(1Vd#+\r2^8-p-P<,T&ՓE\rǪFojqk5jMmj'??)k+UEAljm e֓[:D*v'H RtLȆojGq~;]@ oJ3&ŴEH%H\r.7,^rִ@\"vigh&ww\r|7(r+K 	,BIG\0- ";break;case"gl":$f="%(o7js4Q9'!@f4SI.iXjZ<dH\$RI44r6N\$z 2U:c@59\0(`1ƃQp9\r0  7Q!y<u9cfx(Ys~\n\$g#)	1s|dc4pMBysB02jn0 SvݣF]ɨ9b\rga8ɲ5EA5iÊvUXلA:^Z:n<oU,KVƍPQ<\r/!26	0B	p֪J~I@0C(*ڪ 8#c*2%*#~\"n5Kj8l6)J>);Jʶ9#j~Q:4C+mKPC*p(/V-%P\n+3+--Q7cX:C+hDM͐DQ0Sp1NPƟU2(5R9|bƌbc ڻ4SR:lq>A`@;C3:xuMz̨|oe[ ^)aCpʥ|Ph!+T:L\r\rt:Ռ,0&t8dI-0J'/A+讍-\n\0<@Nyhu8k`k;UŌ<0ړfP3WU\r#H4BL!/&),|M&oi	ڃ!	Þ\\]apܿ{TVȺ'TZh\")\"`8\089@ӑRse<Èd91⥵,U۩=\n(:k0\nV܂c~\r,r;p'b(8\"et!xL0jۗxC	A|9! Q(*@ad(8(\"pQHc`DmG%B B(BtmVʨz1ADA/fvz@i0r(U)L^\\B\$?{!D@E\"<53q*!P#IV)\n@R\$A\",v啩U!n8Fk#vÒچd@ŸV\\ksj@ky/@)`|B%	21s[M3\$~H!P6\$4n-\$W\\ˡu.&,^&_3p	Bأ	\$f]@A-|E)1h5	\$BFwa|!+D6L<d^g3tHsd`t\rLa8A/t6G`\nxI͐d,I4Р\r\nO3,)	\"DYVE\rf:NȺ*V=\r\r9JRmaO_\n/O Rv&f.PRFcm;2*t:Qk/vhJ4uψ\"\r`PޥHC\naH#Xz(k'7WZ%14\n\"#Gy(|ߚ_Л*Ve(E|G%B#aB.{%r|#*)\$zC͈<zL>\$Ibfkb.a@'0[l@r-ei#wLYP.cͺ|hQd\$ @bL0^GqR#(e\"x(S+*ITȟ\nxg\r	*~bJC\nT R<'\0 A\n'TxR\nYg-ЈB`Ey8{}KKζf	2q:00pP+'ЍTUEFSNPϏ:ëh\n\r\"dwk6]wB.wN>AoB1r`k\r4bZ?\$8zz8kE)A)mhN!dDr3\$PٓvN\nLJK6/k{a&pCl}9	2/ W\\@V؇ySbO!k܌Å_\$1~Fwl'p\\1d2v5'\r\0SA#RҴzkL50mmzZICr\nV?m=6g#0ENuU<j2H7.3F@Rw]#@)@Йo0TI,V\rHa[MΝ)\rTWU'51NsTS8EYiqU4as;=/#d^׸:X}*jlK'E	Wy}i|k%C?0A6݇.Dr((/\nc\"oE&TFWF.<3B\n	\r3CkF\"bJ|efBӭ>ifPvLj2DOA[ejJ.n=\r&BvbCb)F7E} E}bkރNE.C`\$\02\$-p#0\"6		;\rJk\n\0 9~ըPb~Y*\niKrn CNhS\$iHZg,܃BbMvPN\"KБ%H\"}p\$e%m51/z~P1g}w\r}#F_0 z`o84\\pQ	rQuB\"J_q6M.yFiOxc4*!#)bE%f[Bp(l6!AZ	-Ί*ȶh縈\" *b؂Kf	L!Ό@ڠ'\r\"QPd5Wu1ORHi |Q)Rbw*&Ҳ|#NT'8N\"RV*-{-m*Q\$jҧ*x{z/pjz1m-1s/+!J-Ą9E-P1紭/r41dq4D7OO5!6C\$\")0h(b47H5!g8&\$@8F ʊCbӝ::pxN%ΰUn7l7o0j<=0\r53n=-&8RfWs=TSCAP	\$`G!8\$HMhrfp(cF.i*NV.h<%e6(}-Nt^SGtz.t~W(d\rVcNjK\0ú?P.|âz#V\\fZ\"_o>4ب:\"!ة(~_Cx2 83'N)5\n%L&2KRJiV#g^jyFAt9mPiLRs6\"y\r^X@M]bVj25ourߑgaWDe(.W7Vd(\"\no2bL\nUfP@q\nmxЇ\"Vg0F&\r꜄\0,OBM]YMV<-LEC#`<d&N/806''V(?'gtuW \"/L?f^#´2B\r";break;case"he":$f="%)kƺAAvUkb*m(]'mu]2וC!ɘ2\nAB)̅E\"ш6\\׎%b1I|:\nh5\r4-\$L#@'b0T#LIRQ\$c9L'3,.N(	\\aMGXk1UPtfOn1[	SVqClql{Q/CQD#) g+n^U¤VnBi'̱k\"1hDAb;9QӉuvGJ]/)\$Q)\n*fy7L\00Ľ 2a: 8@ཎc20D\$C:ziJ\$k/3\$)j:αFMv!DDIz82ۡܬKHS(3(Ǎx:\r2a09A7cX::K#бHL9kތI,DNBåI|a*# 4AB\np\n#u\05A\04(V`@VB3:xk\r=P@!t3(V 2z\r\"P \r#x}EMf2tL#\naHë2l>R0Ŕ0Cud\$ThSЪI0-\r\n\$:l,.4\r/HT18_yQI[Ɍ:0+:CNE̖L4OK!cƴ\$Ph(B%0\"dhMb{&nts:m\rj<P&%}82ȷO\\i+>(TvR\"'ckR@h3\rּCZ?\007YX{H|\r#6/q~\"eq+_ҙc%8ǧ\0ZsA&Mta>Zi-߻g6Xy',&ֻ#iT&#x7eQz%dZH'2JIE ه!U6%,j\0TZL3\$@ YAf,場[An UWM!z0D	mI\"ubbNQ*5FեmtURj>y-%Ffϑ\$9f-՞VZl\\KXںW\\=\"MF8Eh&vab\rB\"{Ɓ0@y1%@_Ull^4}x\$ɃfMT`\r3%vA/5C\"⍁6@f&21c+h \n (\0POALl]B`nVa7C|,2_UXτBQHꜜ@+P{?ʡ~P\\4Y`@^eD0\"\"\\NBZ{%>B\$Q\"\r!BI2L\"04\$v\\Pb`bJX0v(\"%N/#Zo{v	).rN(5\$rc%c\"pP	L*W\$E&nȰ7v3yFC\"D(i%!ZZ#E!1:T|9ImvQ)!FX;6fh'btl1-гƔ!a׵\\B(7nHR©*fcr5;>m7llA\".v04	m!#sq.,<\"3'oB0L*DDS .Jۭ%%?gٴ(b8oah&ICl7P=*eO)\"jlIs\\vxdFsih0D]}D3 0k<:yH퉢c.G5Q-١0EעZCzy S*y=FuiKdj)(b(9U,ˑs!>yNH`x䲢X̻\"*@C80w&X*7hpdǩHQQ00\"GƇ2 \",H6a\$7󒧂EH2UОS(a7nMKB\"!	Ja()k&sf@ݩntwyH6g\".Bet:<bl[wO'2V޾vAh\r(|;Gcm_KT(vHb)hx̏xŞ~\$̯xǵ\n&~hHaQ|p/бE\"2xPpK2%I+46tF|6VhN )T2+{q{g3܆*.u\r[I_Ό(90Byf(vCjѯm`g'c\0V2'dJ\$@nмvp\0)\n?N\"PDXeBJ勎2-<h<\"v^lƭԅk\r`DUlt0v4 J+İdr)zbo	,o̰V>e&sI%bҋP\$c0p\$Q\"Q\"q0\0Ɣկw,q)z#BJ`n'C` pF\\1\"Pa1\r(l8\"bO'^0Y>qmZҋ\0=\"GhfQc\0QʱfqM#!CG+;M ֋BToRdA ) ij]! #! i!/h>mĂڐJ1v@-KBڂ.=,'r~E1H\rgf1:Dh6BBOZnà#*Fkl*4rDj =4\0V\\k< h#j(*ꃎul)P~ZダzFVа/cȘESΊh\"jj!&8v\r#@5OgdGvɂ\$PIJNo,Ӯ֐*PM9I:Q9!8K)F9Q͓f\"I#]\r<9jGlh/-rLJ(2;4l R(ƼpkNXF\$m\"%9>gry.Rb`\r@ @RlFj\$oE";break;case"hi":$f="%pRX*\n\nAUpUYAX*\n\"baTBtA4!RO_IQ@q*`j:\n	Nd(O)!\"5)RW	|`Rő*?RTDyKR!\nDJ\"cU|\nԳu%g\$I-=a<fHQHAԴ%[M._Dqe0̵GYHsz.K`RC3ue\"#IrU쒮IB#RE#ɿ҆>+Iڧ5)\\/bHhjڥOMh\n+;Ⱥ)HP4J*\rj-O4@#M-H!&1|H\",LD'H?Dz1Ӹ20c+2s50!H(Rj-ȓH K;\n}'4'2/GSmIC55?DL(+sXK4'!5Uh+\$I/E@H/R\$-&OķK2[rɉ5X2{94OXI޲Vrx\"MKyGoh3_i-T4\r7#h-C9A7cX:P3}ohyT&:YTy6Zs;nTbԵbêR/樂[Lv;h:5Na:cQXrePF=`GP|\r8C@:t4# 4(ec8^2xcV2LJʐ\"\0x=7ӭcv(n64m惠JMwHصO|6Q̉27nn5jxH6;2\n@A(XH\$Zd5,h&'ۚ(Й</xE䞰Ws[=Hmh!\r\"Ҕ~}ф.۲0Fr\0.7HȞ.!q%Gn4[f?jXSZ2A(2h/Yna[O\n~1	B;0tW@9U)O{iqZڏ.,Qp)7HW!ۚ̑jHmDPe<9lDGeMv4b	\r&5ΰs&\"XLǟ0d}*}YG%#S\r?\\S.NO T;dy==txsviX^)!XN|sRa9o,*\"(CUt5!\0FT<R,[3=[*lǜP\"\r9\\l,?PiC\\;I	Zm!=]%55\n8G?N)5B\n d',ZXD@6)fTjB⒤'*Hߒl5}VE#ԭ˵7crI9g0惻s΁:@@/@kJE>v\nbEY^ϼ6JjڢK%q]SMXM+EiZVuۦC}?P8VnJsVtX2\";aƆW\\re͹>]t2u.}-g/\"l=jړ|; 	KvPb+6ove)vZfɭAΚ),\\k^롗Q=JnErzVv>]3,C')\$A(-tؼXP	C,ź?(+@ MVqy'MlAlM	iEԝbU|4y%ejg5QʧA.bҺoU7N9E@w)W1G_a%pMd\0C\naH#F1Mb̑tr1&q	Tș\",zLjyU39tg(PiztmW\n\"@ruw񮒛fiKDYG\"L.Q-Da#{˕L\r|\0T#SJC[Ӑ&y8RQjgl'ܼl/zt	'7ͼ#82F[d#L}10޴RNg׭]-!,1.͔cj_Qe\$9r;+Xiѹ.cP2cP4F	e9Uf[{M|)v^0G_^̸<.OJzhz]~+irP\r3xNx=F=rٙVGO{huk-hk&)lGI+yGrc]_奆[#ppn vǮU~	b#pkkx}p	0\0ޥ\0j=-ox~O/:MRHV*P>*t\r^N˵]z[KzθiMJ'lK.p\$+hii:	jOCGl~#RC䆏'*ԠNz`'\nD0,yC\rD\r,~)'k+BaԯMH>Wg>k)(`8zвF\r8.nLH2Ԣ~AuG~E,G\n&qz\n0(>\"6RN:?1\$ ȐP\"*/ hKg9΀ +1EQ^ƭ1@\0R6 	\"\0)hď*b\$n\n=!ԮqP텟!I\"-\"uoz*\0U\"8\$R\$&?@(\r;&(oA?%VȞDcrxj%\n'KEc+C)\$):R?.3Ir2}M0OJi0P#nOD8cb2Kǣ-*BźOi1ߓc6}	ܒړж&sk5bf)NfGɔ56	176.L::F:r7:*4ד<)8JRlH@HRPGV!8GĮ5 )RNC@H֗-\rɜ{oʊM0%BY14f\0JT EH+.@\$iGbs_,S39TxoGhܓDӵ71f?Sc;HZ\nBJ/Jm0)sǤ̓	HATNI';2ߔHbx3IduEHSQ2ҴFE)(ptFHEyNQR5)h#Ҭ[POzMOC1V][WP3]:81;\rS^4TzhQInB/.D0PdZ\rZOZTFTA[\\D^?i,t\\%^uNUUrm0#rO\n!	pwO?9~\\cH3'HsY6N@tL QK30 |4؉t%~~ChVvO{<UduhIiv1hR6ckOTLH:c/ZU\rӐ0{ie3TAdnu5nOWQVkiƱeSb#06-5Vo縅 q{RhGkOc\n+M{rsk wnep4pvVse6W]cv)-C7ao6ehwIr	w=oskuׅt4vkDXpV[jWEKPJ׽snd|P45x6EL׳L~wgw6ky:_6	zw7fElLHSQߎՀ~e/́w,D(ẉ)hx\"rQ_-mWzf\\ZhgX2߇˱6fX?U6TkgBCFc8H|w?B>li5(v`)CPaBCR62~'Q+6>ܕR>NCiCJ6x+i~ʸ+ʻ\r!%\$%`rv>\0\np)J 6эm4ǌ21T>5nghWxpiRXjC5=LegmMXpbc>.5|J454)vַQ\0I^++dQ9AΦuLSuV-'ɡ\rW[8+A@O9)\0bl۸4a%T89D~?Z/#|QN8V00zx9C9CK}eRWCzWeDB4KȁI2387êZf`-3ڥլ(:BObB(9BAT1q+).n-[yɶ5#*%UtPmPaF<NMթHQ<ىacToS\" &}FW7r|i	[煎jV";break;case"hu":$f="%k\rBs7SN2DC3MF6e7DjD!iMNlNFSK5!Je@n\r5Iz4B\0Pb2ar\n#FQis'jbRI;g:ڊlƣjl&虦7CIiMc*)-q֞kC2Q\rZt4Oh97eEyAc;`i;e:؟Pp2i3D&aҙeD67{ɭWăc>O]\rO@,j).3B:9)lr<C\$,2\np9\rT\"<OC\"㦞n9hȕD*ΙA)P=,@5*pݵϠ¨42*\nԠh\" Ȣ%\r##/E\n.R;	AYO#xB:H25(cڍ7#h-Q:ZH@5رӱf	HSO\nP28>P6-`=\rGQF1mhiQ(ѣzGÜ!\0x\r	C@:t6\nE8^9xDlZ46CH7x%BK#b//5')Rzh4p*4&QeaCR&)`+&\$NNWMxC^r݌e\r6/kz0\"0:a\$6(%DCL13֕:v3>ep^9Qڵ@kǕ[X7Mc\\Z-|77.zf)c?H@9l(.`U\$32ufkjB hKizM	徾(:23#\rV@7|Y<9*c_j4nP\0y4)=pDOhTzJ(BOW'dP9C&HÐr!刱2UC>l<3I-84^MAIlDT \n	\06mNab7`LA*o\nZ@ua\rŜJ\r'.:Ig0hey)1RƉ\nk=	׺qA45s2]Kw/ע!|Ȳ:W },XjG\"H	J)uńWJ p\nYdJNo\$\0q`8i'i\rq.IBWZ]yY1*jq6'V`	RG\$\$pI%%C#I0^S8e\r`AhI\0g3e0ш\$!S]٠BÓ\nRM0iVjގj9ծp!@*H6{CK!89tVۛFc8GѰh]WX \n (TrRO('5UqHrJSNhdnHݘol1ȩ9,5\$qԒ4|g8 7zF1	\rU&4_\r7P!0za90\\X24cg3 aWvY-%ęU\$\r,tS\$u-B:IGX˞CNËud3\"%%r&P1{>LT٘B P	L*XcA\0Csx:X\n'0.\$[=ۥ8=ȋ64Vb)JvA*U&щ^*ᜢFQǃS=*FVs6-Lzj2)\$:pMݴtpR \"2bm؍`~ypW&	AqmoFaic J|*Hw^}?aH'h.Y1 ]X*?\\5l(lp:;'<+]\$2HKvp@yZބ\")fΫt@ivGLnR\$4cCd@_N	Fg\nA겛hPFE:(޷@\$Qyd!>\\<vt2*u)ډ_S[1(P<N7ra0\n-&)ĈR9i/>j0C	\0CR\nt*(UQsмxсyTid 94;E5\"y'oX\rQ2Kh\nr\$&wus.C'0O=)L)/ח>>Tʍ鼃Q,dpYThIW{gpx_?b>E\"a?`w.\ncvQ96|(b>߰b~X?,p]grZڋLL\$,9 ^.BAż5C5@51%gwB:\r0J#BJYmx4Fy6ChӐHH#MFv*eFwMNlHf&\$<#L.#K5X/`bfpq\"j)TgRMjL1%ex4 K\"dcK-]\nELHfnډǄ'bd\0\r=\rm2cO2J<j,\r*|)w	PAGG\"R4Ӈ#gp=cr\r|C⭋ZTφ@hzxq|occ)Q/q+	,сUJINCLmJdbjj(SF\rvD+geau## k\re\$\$#.\"0#\$\$8)I\"<\$XPe!&0j,0CXvq !\r\"cFf-`H\"B	Mb,S+q+pRey\0#GRެ+(R	krQv\$0Rf:{ ))n@627g2K8`*cѩ,qJ%E2+L~C)/{\n\\ؘB͞ϳbp/6n8S| #\$JDEASH5;SS:O s\r:s'B:S1ӓlg!1i>XTL\"Hp\r@C,\n>jA/\nnhH{>4'D{CxXs\\\0D?gEVS{1MsѫHDBdNEzKH/EGΰT!d,21V&rPC2B0҃?CճM#N4ՆL71MMWLMS-#;p24v)\\QfQ5O_	ck*BHnfF\r̏%@\nkD\np8!%1\$x-I5r&UwV}u \"B(\"\$doc&\$BI)H5VF@C@p@.?Idu?\r'95T):0/\r Ǿ%@ƌ`vZh^Z\0?cg\rVT3O֛rdZBHFNWN>gJ8*+>:Kc\$&\"V.V3:*j:B)\"fP*@'%1@գcpZZ6_uP6|GnO%23p` fc\"Dsl3=Ksl\"4	D\"e`σv:@H*1r@ZnT\rn\r=\"ʲM#0m`t\r";break;case"id":$f="%(i2MbItL9(g0#)a9D#)rc1M'I>na&ȀJs!H\0Na2)b2ar\n%D2ÄL7ADt&[\nDqegQBe\$i63yiR!s\r6Hqj<PSN|L'f1Ir\"ɼ 4N#q@p9NƓa%kIt4V-K7eLxn5b#q)53򍼈e_Kb)\0AuR`Q-\nmipCx{{p֢v8@H9c2\$Oh\$485mjTJ4\$K Ώz6;Dزj+\r((މHlC1k.c4\rJa 9A7cX:.<˥F8M&OrL܉c ښL7|\"cJlЎk4\r2 p.4-0z\r8a^\\Qt<z&԰2~\r䚌px!D(6J5=BeBB?7R{v\0P7J(N:BN7;(J2#u%d+H.]5	㤞  3#؈:4B2c:ތf)}H?C:|Wj\n(%TtD*V4c,xڢ8ȗj4)\"`1O7]3ss&*NO;pضm:\nNjc|\"nHWQ1%q/CV'UV_'O\r6t|!ڣ0Ҋp|	[+l{kMt3GB2Sj(͈YҴ:73CB^BP@Aԭ.3dA3Q!C\n1w\"MNejN<M̜ jI,Z\$@TRJ1UQUX5jwWpe_倰p/T-Ua2\"J\rHb+jr\r\$@PP yxRVJ[+t .KaǜavN<8V PK3PPL: D^?5\$\0ph.A1D|m5v	&^}Y\n?ߤ8EE\\pe4bQDg(()`[T\n (r`_\$&\0fg\"vC-M6U\"K'!yTQA( GV| 9K;ppxn=H*ediEubJe\$d*vNS\nAc\0K\r&6dTLTd,B[6 @ϊ)EK0_ə50\r!`ɻ	\$<bb&ҝ,M@4V+<	caJvP\"@'0<d䤓 :\"БTODvuG+)1-ᬣ0]hES^\n'Dц(Ƅ`/Sr	<TA|\$X1De<f<'\0 A\nZ@@(LcmגyOIGVZojdP`3BgWm\r!t=;ûvO6U[}]T7˰X5NPh{\nkb;^իi,&%ܽ'>ݺBx:.i\\C-ƿ!RJFʣ{\rj(H(s8.'\0ޮԦ2'J!WlF:A*Z+MmʴPe!Nڏ)m`9H(C->Tft]Xc_6WJ#j ]Pa'MB{`K-ZD=6c>*@@ =APTdՓ.BvnAѱa̠ؗC4:ʰԖϱ3BV~&-(MaO_V&q( C?e2WuIdY8OlŻd!0O<;#SiG83_YN꽗#b_Zҁ\$ƷW59Olչ#/u7y`il<[SxrD@!\"wI8ur:5K9^\r<\"	al6tBVv6;pFS,zu-ےzcvwǤ9<_ۂEׁpURbr\n,](ua.f8-<itOUӳWuдa6]gUse6\\'\$8kj])\r[֐jiz|:*r O2bLLeJsÞjo.|J`+H9'\"pAq@Ebpcq^	DF\$\ndޕ./MD\0nƭ	Cg|<\$P0tp\rL0~^B4~(fԾdF`6\$4#)нPlq\$Q\rJޕg(Mk28P}D+o\0bCN\"SLFd!hc}\0deqvN,nl\0Prљ>萀_,__xN-\$,1/%Bq+\\	U*ݣbG#jB^\$@N4]8	9'j_lvd\rVQ!eJd~}\0/}E@\$@N,)\$w\npB#\$Mt4QUb8  G޽Pe\$'f`A&2,*r6trk\0\":*mF\0'`D	V`-\"Bt=c'H!CKPd#h#bk1.@sƠr'Zdjem0P@\r(\r`]T9&l֪+( iid\nsDiB`L4\$8NdKJH d9\n>0kC\0pKF[(+SBʢ239 K ɆR G8iG4ED5";break;case"it":$f="%(a9Lfit7S`i6DyA	:fL0č0qL'9t%F#L5@Js!I1Xf7e3M&FC1l7AECI7!li((\n:Q\$c9fq	\"1s0Co&5:bb14߆,&DiG3R>i3dx_!'iH@p҈&|C)yNȃ2bclD8&uLrs<Ix(l̙\nC9.NBD:7Hj:< 	;\"M\0-jRӘ%꾾\"tjh@ef:H\"1 @</{4-\nC*(ކOKsJ;4P-P:C1rT\0b5C\$wK HsIxܶ{\$8eA6n\n9	.#բ1p)2\0xC@:tt4}\"9̀}K\ráxD]&TT|\n;U\$ƵX\r7\nRKP踺@%-xKBR:\"=u @1*h\rb:+j!4+\n3 7C*&8Z@/-jm+ER'ί\$Hr'F&5<u9f )p\\L9_dXȈb-P;p^Wr\$!7_<:m3Рݷ@7T\r,!@6L9;G\nlc\"Kw<j'\0ڐPf/7x>06ŴUvf@7\"I0ñ,[ӬSc|*NCJL)k9J#ӍӉ0ӫk*#xC2Vl\0@Ɣ:bn	<y)\0܂p	\n5̀K(\n7,\\2dAg*93\$ޏNH5il[Zi@UJ>&X UX+%hº(U:l\\3Lɣp\nRS!ab6T]TǰAsJ.5jʻWZ3,%xe唳p#&\n	=HkIF|>Ӎ+7EI(\"89{/|rPp Ka`O\"OΩmqgMxe)t?g&b)?TM7DV>@@P Uң POI*tM`;PgߡvXɒJIUCIp̆I'Hi\"s)ZD] aZl4;%3CКL\"HNT\r鴏050]\rL&o	L04ʣ\n+d(XG		=TI\r!\rwrSX*9͑)8p`XSdZX(8O\naR\"_Sa;2*6Q`Pgl/C{;d\rL,\$h#J˖\r)1Ef/ՒNilt'@BD!P\" E	<X:^\\T]Sj|d-  +75>\\NX,#4PJ{gN{>8Hj-f) K{0/I`\rǤ\0W~˪kQԖܨ>% %ge?,qBۑ, s%8bpI2lt#pˍFT:\rѤB\"Qr\r6W%ѸaLkbi`Z=fw_aH2DM7ɰgO`Y. I̘kj)l\"kq`jl6j5iN@A9d\$RD3Х\r2xѥP\0abl8ȤGFCu(a4`A\0O	jxRتe)30e)pMl#%lfj3V{2Kj\"%oI֢D 	{;(_0MSpŕaM{Vh\"QKj<	],ztkr/ɜ6pD);غ3?mB `=?ެ>+`w1,1>nC{<Ǡh*zE;+n<T|ap*ho嵔>y,nOˢrLk0\0յ:d!EӼID+jhl6#Zm1pnn5Px>c#R='ￇBpSuo圼z?޷rg*gh.-Cd0;\r\0Dz΂.)LقԠ@å\rHL\0PQPHO	c@ܣdԍ	;B&)`ʙߊp)b9<;C\"dkn#&ѩлKtP,ȗz/*Z\00UpXm@fF>!(8\\Û[:P%0hGN^D80o~\"0hoL/B#FrFt\"Ɣ(\$)LL\$&R'l{gQ3x\"pam8H.E6\"Rъ&і^ IB##rs#\n'0\\QD|:Q:oMQ4.FoD0b,q,b-	FQ7M;	\"R,#!!	h\rTClzc!\$\\m#fa\$L\n<2NRS\$\"=JOc8-^\rmb8(6\$\0002-fL)\"~Ҁﲯ1Ҷ-&dNrPo^34F(7	p6.N2L`CK.~ pvb 3\"24fBE^mB:F('f`2(s z)2in\0=`?C؝-̗ҌF4Az4\n2\nZP%j.\nKLB`I鄟B@&GR@Z\"*?r5x9)#5N ΈTYC=C\0!@NK\$S0%c.\"#M3\rQ\rAɒ@̪ ^dt @T\"㩑@#7@t0r;9A	*FCRDb5hLC<DbNjĆNk:\rt:tXsG&]'4+<4C=o/d6D͍45\0_dk'@9`8";break;case"ja":$f="%:\$\nqҮ4(b*JqTl}!Mn4N I*ADq\$]HU)̄ )dt'*0N*\$1)AJ堡`(`1ƃQp9 b:W&K<^\n2&(z>\n\$g#)eu@xn胐 Qt\"ʊ\\q4\nqCi\"VηT:Shiz1~BAXMWe[WPqI9kG2YaA\"ʅK2zė:\0T9S3P41y_yA	A\$#L+DOHU1z_QiL	T+DR\$MA_*cƆ6-RHI^ӵ%YW)~NCD8hBHc|E%qEjs,^g\$fi@G%Br;:4aK+\n+bsKJs)sC)P!/rDT0AW\\!WIU^2L%ɲQrsqP(b}'o\rx:\r2a7C]\0t92eHA6\$l6L&rr=.(f sS\$A؂u# 4(4wKD@\\ٶ\\`4'1R	A^KKS)@x0C(3:x﭅Edu3(; ^(Tg9hXx85_[e,I&dKZ7\rxНAZMGǥqSPXr&s9΃t1H@PJ2)ʤDp8܆AvGH؝-p\$FsQs)\$	psQKTa9{	4^REeBlwteT[{PV.\0\$0Q%Sr+`!JӂN@ LwOHIHb\"줌 ]!ߘ[aIU9g0Dp&	q=\\U<S\\XpXt,`Pp\$'<'pT4|AAb~,@/D@@>xI#P[q\"F4z1-彥\nR7pd	iɂz\$snPؼ|D\n*@DX53Y,):t:ٙM%xO)5DT;FH4;XD-!F\")c\"Аq&bN?:oIm)dIP%#[:UJ\\m\r4S{\n,lPIUBc~D\n7\"Ev!B%9\"֞ZUjevbMt\r5AqwH &>}I\"\"Ǣʗ箆M	[4<L!+oIg>7Kfa%)tVԚVk\ri5:[el<Fgn((,bkl\rh0bH٣O  򶊤&̉-TusEDo!{9jmiL	8MB躙6rd䒤\0q_\"\n)5&Et+@\"N.\$\\%g	ɝvE^ƋL0f,c݋:^Jq)'L8CL'-^^HY/#>9DܬN4LO8GWe04WuVl PjQHu.^K}s`LO!T1=@;4XQ,\\`gs%y.ˑ˖1EbD }lHwM.\0'ji{Jʆ3DK>YeĘOI(.hXJ*s	ʹr6nϕZvTjXəJAgW!*-MX	+r5:+zZƜjbAc[?1,:DN:5Xk\n	8PT@/*w\$%݊R4xA+j,F\"pqaE\\[1b}Y	Y}}:6 +L3oՅ}kvH\$s.<UpRh7vAVXE]/ܾeΟQK!<xVta|FBD\\	>Uhw*\"8TE\\X+Q:)(/\ns\$`k:_=0Ks/(B`EȆ#%8<Ǘ 29I6n,/;b]B|ވYaLw\00G討@	\0`~0'hDICEd!D./D\"pCc\"\rL\r+<v#atFo0!cb^Ĕ.( 0\"V\$dK;lT)#	[gf\0^dvp0&0AJgsNqf7h:cPvTHk!:aBHX:tq6\".#X;-rQf\"c8&(0PA\\Mh\rl!Z|l*@!~(V%F lvG\0NaX89btaxFZot\"'cq=`DqgR:0	<H74w.H⦆ qrCNS)  KEp\$bgyi>q,14rEB%%bǒ\\kf秜EiGr%1GYOr/Chwg6.~P_\n{aBl펰rO K.N4.o-KCRҒ.ҍ	ܨo/!;0SpU0+~1r!!xz+h44B11R8rN2%\$3M/7h(88P70&0S0\0@Gt!)XW Iezb_}ɨ??!+Gx!(J#;5DR<k\n3̱83\n% 'n!h;a%b8H577:?9&sC/7HQDSC6T\\s6ҫDtko\"HEt*T^BTvЗDzN0\rAC^̰F\"Qj\n@^75s# 4*tƋ4qE4ĊTG)E+rsJao&4TbTaWOZNRR'tC2Tg2\nU\$t#MU))sRS56JRU.IP_<4cRq4B^_3KV/.YTďWVbVUb	5%{E1-%sFP9%Cu%ջZSu\\6{'\\QPQCrLO7TXFPS_u_H_YVb,vǷHTmV5{[5YM3n3YeI4\"2\\SM(,e	jrŁ%egv;3\rgk(ԣJud+~`s:bmjdggO7=#Ri\rWs)EQ̑ʜ^*1Z\"`\np)4A.ݬ]6\"Lꍞ\0^|C\\bylNpg\"Dh7*?PU1:aT#n.-wOB^&46T <O\\,w\\!NhQw\"(6PyoRz\"-z\"_{R2\$\$D|̖9MR?|`p0QŊ~sA6P\n`o7Ǝ!?w@1r/(+rХs/\n-y7pX8!7=Fp\$ѣUTUQ\0";break;case"ka":$f="%)RAt5BPt2'K¢:R>5-%A(:<PSsE,I5AdNi=	  2i?cXM\")v@\nFC1l7fT+U	]MJH^x894\${]&?M3s2Ԏuiz3`̞*Z%\"xܢoJitҵTA=D+I? y12EQ~\rux.ue}2T?rNSzhĬ	ZԸH:\0'i.o.ķIă[2Hָ3Ђ\0[W-o:\rp\$H<C'or.+(dɒ.׽\\3)VD+&Ji01Vn\n4-c+(V@OPS-P2D.:2ֶL\n-KaB<ʺe+Ҡbdq-ULC:zExLSk9=~\\t\rx:\r2a7C\\\0t926(,\rKZDύDȯ:r3,d0k&:sY K{ҊILÃ\\ut8٤V:\02\rH2T)btն+.mxV*!\rC@:t㾴9f]\0p^83pxDb'^0O*8*NdHvMnՇ?;FRnO%rL.e/ji>VzA-+q+Kh5ӹbWNx.JMkkbENOvgG_9o\n'yom\\Ҹo/5}O' wY>ceqt\0W &].LR<#9sK(wCnX9LH6D(0lEMwRbIQso5FR~sfi}xE\nʊ#a\r`D\rY2/S0 e:gZ\ns ;s]F!\"ZY,hD|j{o\0V iM·@p 20 CvoQ0|xn3p,'|MѠN\"NVIE%38'),y<ҀEQ4%/&g,FO2u,&'&1Xi:NLIN\$?rƩcW2KiLhΟ&&,^14*\"hD095^iUaZf>W	xӚRjY5)`lMIrCi-35;L	ɻEDTC2	'B4\rS*1^\$^uő;y?DQ2@7TqsFQ42ګWk-mnCcl<FfmڢFSP\nAS/-	B!\$BKenR@SqR])=JtH&І~*%,N[![:ZA!\\`4f(IQ/5]ǽGyʪT^\n'NgX971\0PTI^!FB9כ[*'(偅9c5\r酤2|-=t&̔2	1Q'N4N\n4#/\"#V+z']?taK28uޕTR3;F(Ǒ\r@wX)JPV<²C\$U۞W7kZ_]In4Z+J囚Qq=:ZuI%'RY]fGNP9CO1\n<)K\$&w2{.wߎ,,^ybgJܻnKCE)[-n\"b\"L탅V7mq(#@̍EA+:|h	E3Y(N`g]ȃJB`m4>Sx\nDPcjĭcZK\"-Wx(WScoI46I1̦orn/\\(GQ\"xؼ@i4IE᤬_į8\\f'\0x{,pxwH՝74@a\0#W5%Y1*gT W*s˥3*EA Y9EY4!C+:v\\ACjOiDլ܃ƅC4\r`\r `@\rڏ\$R~i\ni`NO\"-\$(LGS+¼dhĂPp]B\nc:Bpj\rbd뢀x &p`Β3 \0\0(D8kc-M*\nXn6&x}d_	GOJnk,I 8@\n 	dקXGMgXÂhL(1DQw|OL ^-2-ZU'ֽ\0ނo):a>%nL~w,McTYQp,Cp6#V+oJ^o,H7Np\$tHYNsm0vd暇Sg/#l `dψ+7X+ΫG~ǙZXhG*d++*OJ*9O1pN4:F2HtJ\\/{kLrm\0qvI*TXY(\r&򘑇v&ǱI%'Q.NBg~'\"3\nR9dRN-#.\r!n&wLK)3EKI\r.q@\r\\\r\r F1m*\0(/JL0Ҧt)o :q#2k(27%Q\$R/.xZgS~xScW/><?1Gӂ~'ա 37vDQ_\$I|&\\@{>eI>Zsvr҅9S?*3@692 &uP-d1h>/9+.+,ITR|++ԇn646~\$H5p0Tg0*U-ĀFV\0Pi?K?/A%I\"EuDu\0R^pS+wHx31SsL'NS9\r4TAgOOpTGTY(+(ikNu5BeQ' +&o's\$u\"O~59RU;;葥U9!+Uso-3:>DBhYPY%-!љ%D?M*`ab<[=SY,YCYȇM6NkZjyJ)+<|#03UP6̾ruRruY\"cRP<[=	e_UsK55/wBlQNբяFT8(D%,['a]dQ^^(I65C\rTEabrL!3CcsfEUÌ**h\rf]F3iR\0\"cj\rVIfV\rvVl@Ptc1lV?QuMY>/5/S5%3_64p]Ph'Pi,U56wKU'ʐRjg3SoмuYngWS3;ul_CH\n\rE=r(_B|gR=bᵸ04UujbsXsG=[{n4/#Gn2:lx%i\rVW5H\0 R3P987COj\$)\0\nHaNhD_p(K.I}iF\\K>᱋vWrUVraGw?+MB~\riw!}SF+ W;~a~XVIm4\rpY2Jx72n^{SWF{u\"=\"Mx4SKa\"h8&Y\0\rb2=q%(Tu.`˼wT&ώo@/O3M8-l~SULb\$ȭ?G6H(+g9H52&X0twÆe-Y2Bo%f^7Yهu&m|AOT-BekP\rf\0	m;险,Φh";break;case"ko":$f="%b\nv%Ю\nq֓NU)ЈT2;db4V:\0BapbZ;aا;O)Cf4(s2Cs;jGjYJӑiRAU\"K`I7FS\rzsaV/|XTSɇZvHS^+v&kCi=#qA/iHXElKȤ;Fv(=v!ȉVWj)qss])Kq{fv!松i<Ro@Y.H (u3 P0H3kN.\$zKXvEJ7\rcp;9\rV\"#11(@2\rxA\0:c h;#\"LsLJ^ G4T(izO4[M3AVQV7 D**>d\"5/\"p\nm!InӸBZCE%.S7c0(HÐ.@cx5E3æSQu4v\ru2m9O/zFROȩ[]2'Qk	N3w[\\ l,q\"\01kxw@;#V:#A\$r\\,41c0z\r8a^h\\0޷ex749xDlcB4b6ƣH7x%v7Nh!P;0s3Rw9Pi\"/sfZR9f@/^غvYnHZΕ09NF\"%)I@\$X:q\rIBTG(!LN\0\"0:0SkJ07/iDQPY*ubKDD9\r[@|'W\r\n\0\r\\n6GC0А&@R&P>]\ns5jPۊGhStP_qldRgF*h{bpvڨNqJ,:֛+@A&\rb\0:-7\0\$ᐰta\n]YTXah,:P_CA0[h\r`e)cHs|h&+oҚ<FnYx\"*WRfQeEpa^6 PT\r&nHlgP`oX9a7FP9ab}uN%Xܦp@k_mD\rť9C\"c:VFY;)el;c6٘rf^S8@{4/@7|:4'\"eT˙r]y5ƽIXM13pxŤ9d̡2\\&iћ3g\0\$n)\$Pt!`\"KHu\n2bT\rJ:u/6RDoB'2W3\r-C:-j+C5HAR1LeLEAU:1Ap \$J󜩘J@PP	@Y4\n	)8(v9Bo4@3n na|!r'r\r(U{:+Wc\rA3|HQ2%g./,Kȵ4@IT}pCh\naS-\$@FBS\nAf N؞\"u\nJ\$ۍ5r9*0|0u%H2&؍0G\\ Yɕky><LDx52&bVHy\rIŇ]20\rbwC1Jᤛ|JO\naQx&,\nV/hp.˰Ik6Rp1v\"玡bRSPa!^2LX;\0#FH`q\$XeqL\"_KP~^ff]:GV(5d\\m y(5%w14^~D)\"ͽlCd{JgDDA=EKw+p!U/fհ060E\0ڨHhPBA-Ck6\nuAm񈚼Jnkl5E@퐂RGˈ-eD<~'rY\$PlEP=!u̇`%ZQQKs:fC\0}Rb'MG[-?>cZ7.H,4jXCտB;sK7]6#4W!<s܏\reÃ :.ţ[CY;UqDxhy+.l#'[a@{ܚY}aTĢ\n!P*F-!+\0V ۠1[@\"#/wqYI{)G{.7B.#@L*}rT 3oA\0/{ߧM\\ 0b@\r<PeO50&TNdB%ɋB-𠧰oH'JtO@ly2Cgxa\"A?rvfEnCp@&oBb.F9\r08pأiι#0:mL6Ppp*nO6NO5 GFF\01(HB;jMJObحwro\rF&\"\r\0HuڔMq+\"/\n[op\rѤzqz4p+H(\r%0M-qlpNވP1߱53K	\r8@IZz'\0Qj44m߭#B#R@ղDo!NT5p>&\"\")!:&6\"\\<jeFa:P@*J\n!*P(0b t\\Ry).&)\"\n\n2S\$en!o r/ftCXWRZ9'rf\r&j!n'0Q \n%<Ohp\\L<7B&30TE.!2?\"4c~\"HC(SZ/2?601La\"  6vQ-<2ٳ93a`\$\$)N6v5;Q3#!Su.yE8%<G:-R03~ۓ;R3.JӮpo@~fwIш\$_jBXA\"=Bn%`u%4 'M;OV,.G\"GoZjE<Fty1h3c1͊gPTm6+@TX4԰30t@1=\"dB<C,t!nvׇ*]7BD J- @)0&5kAE&54U.a+0\"\ri^\rV+\rer\0@ugZGJ\r ̓\"%`tȠ\nZ\\15nBWS48ʶ@26n(#p~&-9,#Rahn7c{m\\)aR:JOlk7(1\r^OdP!	#\n)\"3Vx:xa&<!dKq:`DK,Ж5\"ZH:~\\/fRd8Ud1\n_iuCZ\r45g2sf(z&G|x.PS&Bd{6ӅpjD5O&cu!&\\V5:aj1Te4f.l\\s)rU%@)'q\rH TO";break;case"lt":$f="%(e8NǓY@W̦á@f0Mp(a5&	scb!iDS\n:Fe)zQ: #!j6 t7\rLU+	4Y2?M3te>\"K\$s5Ms:o9LtuY),#)gALEuy&C\\MQp7Cj|eVS{/^4L+R:I'S=fPkʼLnx\nO4DXi:zE?FĲC\n錎*[r;\09LB:\",,\n9K7#DDc\rﻎ޲Rؼ\"s2h(֌hҌP\nh̖*B  2C+\n&5x2lĨڂ2'/((7Ll-Q*.@@cxƉ+Lx4)_\r|rK(O#KBt<sRZH# Bi`1ADC1	53=rEQ`X`жD49Ax^;p[W\\{*2h\rBBHpx!: \0+2Tabc<\n,;##ɏDɲvL㪊>c\nǊ|(@t2:&\r1,\r1@%͹jǈ6-[(\"L2Xf13>8#*M:@P\r9RԑæH9I`PRĴ!*9`V6\r[c7?bCPO;/teN#@jċuD\nx>\"b^NPG:ԃKz1cVRQL9\n4[(	#mǈ^W\"P7oI:XI \r-[JrB.d!@X;	#X9C1p_P4BH^5.ECAn\$Lkpb0f/DBDMT\r8puXk36s&\\BZ6/2La3g7-\n)#)3gGࡐDb(T640I`g\n:!5#W+dڭż\\ˠ;Or^A%`\"ҹ8ZNu%BJ|! i_Ƴ\"8GZ^{ qmY>W\\uYR!Qb2ж\$Ht'YlԄU^pX11D\",OId9`HөE)a\\88Ɗc+#qOs\nn\r22Ԟ\")I#Cyf20e\\8Y6P9Gb]PM#\nḞQi\"WѼ7ΣLJR\$l;͢t\"*i	c2%!	X\0V);Rh{\\I*.FHƗ @y-FN̼.yy)UQ\nӥ\$H	\$\$Ġ;.iuHDSUD̓I&̖;@VH!'\$N\"T69NldmBk!\n\nITJtgXȄ@N`CCt)aKAFb&S88qY\r\0`gdEiI#JjKD/!2H\n4&k1X\ncz\nmAKզ.NUE{!\\#	!ϐl@(BP|c~۔\"t<W _vy\"DP)t]fLٵycyb]>_(!&5d~LCK<0kzYMLYXDvl(LxK1[9PE<Ep}BS݄IVvFaG]3I	>d'Q;J,gU\$uYQ1֖*ڍ ^iQ\$t3hw3qZZCu}?6qjHR4pqAF(\$UAytfa!%ABmC6[bO,<:Yh˴\\!Lcy	+'ɩ~T\n!AyJ}85~pKylI#lh4VjÛJ5ɤ^kpUv iD[-	^\"\rAFސoOwn\na轙(&5Pt:Nl6?zJ7~DO}F_;Z?=Ty\"\$**!Cv1x\"x*\n%\"4z@OB\"À+lnBb\"2bsmG|#pBN4cJJ/2\$4PZo<PW 'BN*eZmn-KȪdG\nB|t&,D\rb\r	xgB.\"IC<F.J?c@GġGu	t8,.<sl!0^\"\rLr&kȉ\r\rL\rwLT\r\n%`J-J{vd*y\r.|rN.<zl>`I(NX!0{QpYauOOG8	q	0GczeP*XQonʮn9Ntx\rC@Gj\$.VL:;(h9Kˣ*,8B\">+ލgG!bu\"`L*1&\"@F.K;Z2\$'dL&1h	A.1c·\$\$vBQ\n%)M*1zKtd'nRf+C~,#!@χ\"	, EH]k@T\$@b-Q%\\x=qmѕ*Kq2Q:	oJ\"A?S<&s1<=rB.nSG55cVƬ~DD763}s,yj,!6R9,dQ8#+:sSJ¿;Qcj/62YFEʘzb(Bj<S6=s3;rQn*\$\n2iA\$+;p'A5&rĬ1t+\"/3*D2gk+4NR2	\n\0ҽcB15Dz	4f44F7g:BvZ\"H1Hs0:B,:sN4HJ':#hAF\0 IU2~%U(MB3MM.f\rV`<\nfԽ\nE3F?n(&<K&\npBBP#O%N\",;N\"MXFpP\"@<5#/<Ve.F<bAC3% A+WXc=d*d\n#_X	TbNRE\rT储l\nK-V'h\0ʒϚvг\"	UD`2\r_BP6ľs\r*s[%*oBp\rYܤ8QMGs-Q\n/&2u%h+Mp,\"`	2VAEU\0004@1i4L`w_\$zU\$'Su>#UBj0\r27\nD,Lu5hTC<@";break;case"lv":$f="%(e4SsLq:I :SHaa@m0fl:ZiBf3AĀJ2WYCf4(:T|i8AEh2q1M~\n\$g#)e\$:bq[8zLL4r4wa:LP\\@n0=))L\\逆X,Pm@n2e6Sm'2	i ǛfS0ƁM3{q[ܾH=q#\n2\rc7;0\0P֒c~\rx02M!Y^\\&KV@LBC%À9\rR\$I7K:s	k\r9Ĩb &pr#J^-Q(N8-cH5H(\r4(*XF!D2h:4\"郾\$\n4\rsa;aώ@τ7c\\\n5 gRO\0 H\"H`7-B6I#^l^.hPOXpD49Ax^;pY֣\\όx79J|;#5#pϦ\n\"z:xFIZBmM;j3C:D8W-H&㸓P0IN/PyDRD AØhϟYίe\0 \\qiN:7Nvb'\rx9pAJyWx>)S5l5N3:jf#P1\ronp%\n7u#µb*Jm4f𠠎;ltR\nb^Mb\nl?FGcP5Tqcؘ>9[ԗ~9'?TMc+ϰͱm;UC&2H߸2m֌\0E(~p\r##6HO%*P{_#+%wCRZ2ׇL`!C9\\Q8;)\nDR 2ɜ1G׳*D)=30ݺ|lS9B[|!ʸ&lHsJa#D 	\\3|]c(LZC\rP	4B\"/ȳȂ2f01'Uw.d^54.E(E\"Vn?)9Q2Fi\$ll/RA璐PdUR\"d?)Dal7kt\n=\n6EKc\"d?.RYAi-E[)o.ĹѰ,yv2n䜄)ҿu'1y`9vᭅäRy8DIlT␶ht,2՞VZem\n\\Pػ`I}&S\$%dݘM|\"IqNńIYLE%}Gl\$͠\$H.}r~~XbLGH\$Q䔄R(aHm?wP	@םYT1	-\"\$aCP Cdt%18@K1FY`lBerfB3%) Cd,[6CEұ\r^Da`U2mmM01fQz>^,M&Ȑn#aIUęolLJ1E@`	LFJ%ɖH\n|j)uI2;l˨]Cb!@'P76Tu0'^0\\:%}Z q3Nĉa<aCx3B%E	#R#䄑RNL:&0JF 0>UӲxF'HA1loJyԷ_a]s (#Ãgvբ˫2d5G_2,RAxߐ{Z&zU]\"*b0oib ^(xL?3j\npŜ+\$4ԉ8ß)\$&vءM(,>Pϧ<7| \$q8{@dML\rl2=\"(s0e.(MjnS ;Qq	7C3H(T\$IF#&/\\9N[\rN\\|ic#)|JPa\rA}p5@ƛ8+~`y<Xn0ݍݎjPF_4wNSEC	G\"bQWIKDu[fʓ@8Mnaoe1;#yt)}XmƀD>;%h85Y罚>q\r	-3^PאAM}73,gԴKy_ܭ?2W܎	kp-\",c\nN#rB\n1N2(2`̥BEL̃^co\02\"<T=\rCBBb r9\nF\"w-<X-b.#f~7#vL?o.\"F\"Pp8\r(o%́kYF%en\rf:d'0\"Zm`k#m/Bb(wPM4ц| 'cJ	p0.FTn\rx<\r\0G.b H:9AG~Tc'fb.jzQ~hפS]J\nnHP\"%yHbi.ڇm!1/ q{oqPRuQ,lCPh :2/ {\"L\"!/1 1~2J겯*IE06lƃlBZbj#.J\rf6Β=!FanPwozN#2jp\$!0xvOa\r1m\$\"d&R}H\nr2bHw-/\$\r+0֓R,;`55/@'n>O+v{2#bS!q2\rj\rRG.s0cQ?4-_5#u2eN\"@#0|)SF\rQ)BR|ӆ1*c.c8m839-FZs{\ns'36&.pe3]7NȣcX%ah\07BR`R\"Ђ(\$\r@n>s젨:wA(@SAAr;gAS/OB\$i S+jS+%07B.tOE;S* .{sc(UTjN!#23n6T\\;,ڂgIs3MԦp\"/b0p.g-`43*\r	\$xrT\nSDRc>vkCd\r@b\"c*M&nI:@@A'\n\nZC͂0%T}7̤gOV3U43T_A+0@D)M#&C	c{Khdlj)@i~cO	̰SmrVidHR|>R^	B[;P2]#3\rƻKE].:KVUT'd	ͧLC4Sh5#,hQ4J4'ffd!D)CnB T\nEEN6_:6\rR\$ԓJ>fO΍L)!\$҇^ɤk\$&p\"";break;case"ms":$f="%(u0	 3CM9*lpB\$ 6Mg3ImL&8i1a#\\@a2M@Js!FHs;MGS\$dX\nFC1l7AD 8Ls0A7Nl~\n\$g#->9`\\64Ԭ\r pa(bAS\\݌Z*fjSi*4\rfZe;fSsW,[\rfv\$d8NJpƹiɺa6Ӯ`&s=2#*L=<Cm(5x=c9#\"\"02\r*O(8AhS9cI)\0:z9#i~#J	{H5@#CH?.\$|ŊL2j38=-#P2iS>4\rjۋa89A7m	 \"%v6!ºzZ3UEh{f86Z]\n|2:pn1pH&t:L;F 4.0z\r8a^H\\SsAc8^l9xDl4x| &\rm;]\"ɧKԔ4c+*X @1/Px,	c}\0+*/ɰY\r+vNċ.ψrXh`ZڲY(3Bq%ԑ\$/<,\nb;I<,=(P9iC<)ZYзNڤtϊUi-hܮ\rl:9RV` pPw;@Uո_NmmCu#=w04/SB\"\rm6e͝<=CrIs/(Q1cd,\$ꥣx31Vr3GR¡ODXXc;M?(yHz^%THQf!ؓvJ!c5Wl>bg3\0M!!6EwC\rc@ u2aMvW@^U|X!e,~ZP.Pܶ2󚅍EIP+(,j2;1'YC(\\z\nXdurZ+N/7x>E|J*3ֹBD%\0Kr\r!B]cW&LeF݉zS`Db8W`]a1ăI15>Fф@\$Ra\0('\\&^\rLF1v#;e,\n	<m \$<g/Z쳢E/Z+*WDҐE\"%1@idLu\nAw'2\\L\0C\naH#QUG!D\$BĂRĝ2Ii.0#nC6&P* F@yޠJ!@8C=LPF!,MZ45bT0´s}\n<)J%\0BB2p`O:V،9PXge<`kSnꠘɣWɱR{\$#6%.Yl7T6<N\n	8PTj@-N1OzaGod4@ڳX)iA\rBS@cz9&&Ԥ7'|!(}uYUQ扝z>|u \$oCEfռ6]L8Ūf\nl+Qi\nǮZtnHu63i=0#0ECNG!L2YLO&cҹRl48[Q=n͚QebA@A˘e&A0'7pj5'y#CY)6&W3KR_@W2\n?1)iGd\r߿턞laHr8P]M:ׁO2dMk<l\\vU錯'4uKg\0Mo;\$Bu=aeh^۰ZPqA<0bF\0Ӻl-22VHZc\0L45ѵTA)w\rEvp AA1\\*\\r.Fa\"gp4AK\n!)T``aK(ێB,7*(y=rsU^K󆮯w\\2\\w\"Hw:\$\${/y'!vY/p\0呞]ĹRt51.'l5xq}φ9>\n\\FS2lu>}TfYţ [ϴCr+%?Тݟ@Ni<WxJ_Ԟ쳆΂̄?;a?\$c\"6^8Sp_qWT.7{*?W 4Gq/&ﰃ*rN\$:Vع\08[\0/3*\0,f8P<X\$E|&Ȅn5^f.dL^bZ W)qli֕>:jq	p=)9\rr\$'P0&\0\rkζ_\0000:\rjuC\rts0T=g!\r\rQ\0s)k,ac vF-T=#\"V{\"IcO\0K6J\0PQ\r[parL,i䒇jr܂Qv_fB+@\nCi>\n2g9K1\rN_Mpb~+o1V䱎e\n¢|k+b\0AD6B2`N1j'I	:\$H'SJgmNѤt.Q#K<1dٲ?<R	s#tT8rf3\$Rs\$XjMQNr>Q\0?\$R1*5\0.(<#>c\$&\$Pة(&Bͦ%(,} H`1R\0C 8p萔Y>6<UQ8O	P\nZ2nnM\n\nSj&6\"l:NF#>8V#VY.`bJE50E:\"D%rҶ:02Pipvg#8E9/&/'\0l\$j:&oðufr0@@A=)f= s\nɂ	:?`t+/?Ӏ&\n]<oO.þ#g@=>z^BԄ0(\\`";break;case"nl":$f="%(n6Sak3do0p(a<MSlde1tF'#yNb)̅%!MуqtBK%FC1l7ADs)u4̧)іDf4Xj\\2y8DEs->8 4_F[Q~\n\$g#))UYv?!hv,c4mF\$r47e5čʰ*wEI}Na#fuVlnSoгi@t\r2a1hl -湓6FG5!uYq|P+-c1\"̴7H:\$0:(r6A:;@;C-t@;;h9Øtl(:f1t\"\r`@̺Pݰl#Kh܂{,Th)oh\rz(7#h-CN:NC1Cd+XBPSŲ1CPP#!!R9d kV9Qʪ؍D,%:,3ʀT@=D|Pō810zECxq\rl7-asN3^cYPzNk2x\$\"l{h1PKvφ+)û^v!ݎr:CJ5=\ne\09#BXޏB8ne407rYC5p=8ED	r#DfJ.\0`P?-hEn\03#..\rh@jHM/[fM1☢&QÀ9SV\r#9YE>A<0=5.D|? P2\0kv,O(3(6CǛY\0ّu=nh5/\\:ֵJjji/9(ܸH\njd^4o(p!G @q\$0\"#8Ij+sU\$X)ǵ+%j#Z#NS(\"%t?0ت!R2RapC A\r|6Wᓱ:В0(s?'h3+HIB\r(́\\j2BZl\nZubPAPA?JXuHl#rJ ,69rƏQuڒtDz*Z(O)@I#in\0\"˭vڏD<<I-ogġ.MsaP(d'HIO3\$,]VY<A2iS[m#h#Me9T&bjRFftMzW	jLC#@\$\n5I4R5p@\n\n()\$9Er/IW.M/\"hfj0?xbJA\"Jb,,B3P-%\n^4ͳN(U>CRS\nA0\\)bJ\$SrRJiJ2yUR\$cJ@CaTOּrV1+z1dl6ljxS\ncZP	=T5BCL54|k8KK\0w('ZD9#xPP0TfJ7\r6'8e5\$Ե'p*'\0 A\n\n\0B`Emq58WP	gpA<8/\n;#aެm 5:hF?W:cO)\$\\l]wQe IwjLԼ6NR\nHs\\RKFDThChs7-r4\\\"pRLci,+-4;q>20 }&uXfZ\r0dbPΉ! 7PaA<OF\$=N	yT\0p]06`Tf3WF\r٨,nS6׺3PkD*7kӶB%fLAa <-aJh9EAfFE.C-΁x L᳒0p\0Qx|}?D9Skۆr~UvϋC2\\30p3jι.ܠ>.;J\rY5診K)pIܪ&F>d_I\$\\Roxi9TmC\0(\"Ƹ><ٔHPBc)2\$;+WT?\$%,xV	O_*iZϰ鑡sHh!cV\n[.#\rfw!/9L4wW:kZ[|=yCTӲО1,L)c\$	\\G#gbzKLˤ#m|\r^\ru\06HtVtup=F0DutPt w|Lnnr\"ݐJgz~NEΎcl\0\nPMP9\nmF ZJjb\rlJ\ru^p&\n0`آhC/)\r@Zޝ*3\"੢js+!p0l\r030\r1dJˍc-\nNM6-v|h?c\rmb(f3\nQTcm>*ƞ\"KdJ>\"1Zi1xmQ\nb*y-oP%F~ǀ\r&degQ1l&¬^'u0f<lEP\nm'n}#`Gxc#qx9\"\"LT:(-#r:@4w\\ƅ&RS\"hj!V8[\$ 4/L'&\$wv1lH0n/u(e(0j1cޫ@a'Mc%hMϓ+\nW&#v%DE,Aʩ+o\n/u.N-S2Д,x0\$\nO0x0Fc#m&tL(s(20e2jCC,\r'z-nV#Ǌmx4b2Heb, kF/cT<@/0Pb\nZȎQG\"3d?bK#a^y3<Q(B!+d!d\"҆هof8F/ .\"\0O?77v#rFŮ.\"dBtDDghɄ\"`g;6a%Es?#>F)>d&	oGtYF`C3G2Tm<Uc\"\nl&-obpMp\$L 8glD9*OLh:!4G&~eLPN8<5`@\niFf(jt;EuN5<ǒĔSC@8d6,#\$E\$`";break;case"no":$f="%(u7I6NgHYp&p(a5&ө@tNHn&\\FSae92t2Y	'8C!X0cAn8G#<t<'\0,uCkQ\$cġsn,p&=&%GHi3&m'0te2b,e3,	hG#	*\n\"Z\rRs3\r,o&wÜg ahf\$A29:ta3\\TϾͳ3}u8h韡B>\n)%˂kW?Sq7p900+zꋰ8c2#7\rB&Oӆ#Z8l'C%Ld	(ڱ<82>\r҂+KنS:Bs::#:þʎ6	Ģz&71ض '!n1 7B1\rD:o#pաCs6< jl70ү\$KP;#:Ap6\\4&c0z\r	X9Ax^;؁sKI!C\\z2v\r23V\rpx!::\$\n2+#;\r#(^S\$G˺ҁB9\r΂\$H<N(7юH*,#*GtV5`޽iC9(0c;1c=\r8#!	ps.CJ&;0͸٦\nvBKXj\"'0\$5\$C!h1&^AS8!@R\"ߎ*uA55zH 5X'#®C)\n=1+VRo{85#rmzu(\$\\\$=[&Z]czDu^jY&Cqܨ9ы?3\"{m~c)\r7n&(ݟRak	to- `b]V1ޏC!IO*\0A1.Zt	{{Md*\n)#T:A6u҉%,1'!Pu 	´o!l.Wj:+*t,9,՞S\"\rTEb`5uX	p<:@Z=\n!\rHG@hli0[Xc)t[%µV/4縉>4aCp8j&!ek\$bѷB`JXm;%g4W#Cfb U\r*q!@U\reF%P<i1'CIFX\r15cӰǢm(g|EHS9q9:Hc%\n*<PBw!P`a<2\$.aJh&~)8˹W4.[a8*^әA40gWLv HU\0FAg\$ssN0*Ni\$cX[Pf& ޗqF_m at(/aʩw0͑f@Yc&Ӆw!z7rF\\Ud3r\"	d-CNl/&\$΁CN۫1Η?#2L(iJ0Ԃ\0,.ikW`v-RV%MRHMMp\n6|0\0U\n @}\0D0\">TMuO,r:bGlAXų#MAQ)\"g\0UR~اqr01\"<ϑtRϫ9Ĩ	:d|AΗwxٲwPelYwEF/P#6Cz.*&!	ҙ^ TUTTUʑ?^x}.l1TÛ&cM1!,n\"T{YlA4Xǰ0\$f.\nYf8P\\IeFxRe[!a<^TYAk]	3\$hrX\"CT!\$}Ps!v%M5D8)!aL2bMc9@Ęw,a,͵XY	-ZpKorN F |wRs0/!fǷ`ڢI;'s8tǍI\\З*\$j\nOa7#B	zOxWեOh\"4ëSncC0卓Mu3D犱ॡP9	>Հr(AwpRgP:O1|n9\$(k賷.K+0pȗ<(Ķ'QyI/F{(Ϋס妾]~EܜLGKv\"luG7\$ǂv\nf-nP\$G\\|C#'Go)/Vs)/6:\ng6\rw	pP\"L1Fp+X`i8.d`e&ytLX\r.Dqi\"|נK}i	P.@ʍAJmO pd,VZ	vn(BK}\rP0\rhH+H6\$r)f7w~1ig\nwmn-P\\&]<=: `@0=fuqJX`t#n(gZ%:>\r>`Kɴ\rNE2Fh=`Q*rI-1oh.?p#>c!2gmC2+t?+YBe6\n|w\"luc?\"OrE\$Gs؀.8@m\$ho\$fBXNH0T2d'-ـ&٭JoO(R6ڭ=<3ҤI\0HfќNbҊ+d0,R\nql6df<P>٢\$cTƸbqTPpUr\n,b)\$S01J	f2F&GN@0NN=ncNG0%3hjct\rV\rdB!1p	L;f	xI pM?ޤ#.FvO(mBs8/g%rhCr;0`Zl	G559,+9FGb]sv`|f,36,jU%Z쾏O?dT3ZmAO,BaQJY\"<,%V3? '\$Ӏ Hq	0la<ITpůĊ&\0'oDM2ucqQԐ2.=@*RCYb.'\009+ Ȧ\"P1)pHD!@";break;case"pl":$f="%(g9MƓ(l4΢劂7!fSi̢Q4k9Ma ;\rmD\"BdJs!I\n0@i9#f(@\nFC1l7AEC :'Ik0geň\$y;¨\rfwS)3	1iz=M0Q\nkr!c:DCyêI#,d	CA2eӘFաњd	B7N^ qR yW~Xzqu&p7v\nBBR\rh01!	`?(.ǌ=%s1\n*7C.:J4110Cě.C(3+d==,2a9J ԰:p6OT&藹ZHޑ3J\\92P&P293`PÎx\rb@PC-C9AE7cX:@1P{;\rî@\r|RcKq3-Ճ(5=2EGı=Vϱ28\"n2)>84B/Qd\\0\0x\rC@:t5!XZ9XI|#5CHx!74s5H !x(U㇌\r`1l2Bz!*%5Nsyu=%d+j8#zl*߭4bk8j,MMP:[(@3;=bmx3\rk5QxTs1B`S%ÊK`7sRW-v땲09P4\nb\rjpY3=Q<\rۄq9-@xyGL\n~ve\00073qx>(FWɋ+`͸nJdڤCv+-tPI\r)FIDqOE݋4`B=RH>`(\0Uj+=pas&2I\$Z)QHr50\$r`qLG tE\0\$RNlNh[9&xf@DR\";&6^: !МYxΘ #΢apxՋ.'R6C#ΎqGwZf֫!8Q#?EH#C>GY*72N''ləFi`]Bql䴆@)AdW\n=#Ö [!mվW\\i%z8ĸ:&KgLH/-5#9UO>2Hir^ȹt2~][yp.%ȹ]sw/\0(xsAVrd<5v!w7<j5'T@˱8)h ktd(r(\$-gbpdtgKil٢-%S6K\"&*1b\$M桞CގU՛>lbAbe\$=\n#ͫ!`TTI2/13d^%>(RP2 bRF^	\rR6q+I2iD>b	\"a66Ch!5ERl%ԻMjLQ4/iGȞCIeOc6) E<ill%ꂑc[2NrR)腒Ȇ*a  .ȼHkևtҬNfLH\rz oڇaEjfwRzW\nX\$CŦd9}\ro!5b\\bA'\$D;P!܄p[HRԗ,égHrbCi\$	m*Ѭ%lCA	]ԄN7e\nKHNCf4v%%(tjܽ87X|b?mD@gwfd\"gKxaqjdB˻(2'ǌc֞b㚔VV ة\n\$td\"#Q/щ\$ῇPtۆ#(((5%ΝhP12	6Kۈ_TdYAՏF!A\\Ӂ._z\\鵄fȁu2#`y']6|FZf9p8\"a?O	wPv(Q625iBi8lLu˷p\\hR+#.b\r%ӱ\$Sg;~BT\n!	Owd(4ЅYшwȅ~{?e١3jf߂_QYa\\y_yaWܐob|gO4+1!\$\0O\0rHoBm\nOÆ~oNJ<@B0M/H*5G\$r^>ϩ0\$.B䂈	@tD0部Nb%c1\n`'`B2}8mx\"f#01;`NNqB`=).6֩.,\rVIHNmd8b%C\$\\e!aG\$c\"^F%1BE/Q0tQl7rք: `֡ÌlK>0dM\$nG~.`l&gX?I~rq`'%1TݱZ|适\rx/\ri@? Pt1fpTqDխVqpb^ܲ\nTW QXjA!RL\\*;2	\$G{rJ,k#%G\"2c\n\0\nQ}}/\$\n%3OA9\"'2l!E\0% '),N2(m),Ǳ1r''/O&?&S,-2i\"lǂH.\$EU-hp@xDG2n2GYQBb#`IMpL©c\$_Qd6#feHFl,)224s-.\n/p9N*\ndmi+*B9.)M9\0d.?/azO -HȠ0#2N*&RJG=>S%.b8->?󾁨s#p82#sDbd<#r!@P@gPHg4+R'g:qJF2{+O9!D}Q\"_y`@~f➏\0dE`=Tt~<GH/*.n2<`~#FQVE4J+FԻ6EyL@MgfKeg.N[L2GJO\0o'KEC'PEBii5\r tk\"ֵ\",0/03=/;7R[QGSg?R&.8/U`%d-d<A\0SG\"4BS'b..{X~4Z>Q&;PgZ?`G84Nd}[P\"--Ack)H\\&Ou,7t~1cHHoP\r42<-6?,p')K*ea0\$R0N``'L&s\n\"'&'g\nX3b-\np\$(e-lG[+v(Ƕ|mZho0(GKD,!\"T(ҠH!3c\"bf2v0~JՖ͌Fn\"&=&d,{\0\$pj01_9\n}`fݓ:AM@7]hfQ`4isu\"6kr|\r㬖\"s/FmXMq?\$q#t+qc;)ACow,HD6^WBP撲8\rG?\$Ģ_AP͉v1 oT#tj\\(K؈rcTڢ6vL(OE߷8A6i㬀\\~S#@ϱ	缼\$U#`";break;case"pt":$f="%(Q5Ho9jӱ 2Ɠ	A\n3Lf)oihXj\n2H\$RI4* R4K',t2D\0d3\rFqTiC,i؎hQi6OFTe6\"PDqe0̴m,5=.ǋo;]2yg4&6ZiC	-MCNf;7bh<&1N^p|BRY7DV\n8if)b:[NL,hlI]bo7[2XOԸI2>\$P#8\"#kR߉-ޖB<\np7\r܌I8䔈jıi˾뎈 821ĎcJ2%\"Jά:A\0ꖬlK8&k*\"Rf\nRCjQkh&kK5MJf\rP\rM5O\n<`ɫL#k)T-QȺ7c\\OBܸ.KKEB<PK4+#. ܿ,c|gFoC+ԚT84jh}\0x8C@:t.48^{&8@Ԍ*Z^0H>l)1ì7M|#j}\0ݷ>'\r;+83(Cʠ̓x:JO牸2!\0Ci1΢\"0djsbX#i׃N\n	8Ǐ76o\0N5`P-ɫk<<ij^!J0\nnb/h; Ɨj	rr\nb63Adt-W.CÂ~\$\"#Д4VwV4hcQ2o4k&eS\n **̌|r߈޻x=h6(	xrd( 6jyCyaL0\$.0|c'J\0NSRsbgLA[1v:H1qW*|}LQ@AP7\\RQ(0A5nC8a503|[((`ES,TG<ܼe!DE䐳UKuа\\Ks.Իpw^\nԯ5p/'&IDٟB0z6ģSC&4KtȤD11hr<[lTcksֻWz񒨮K`Fa_Ƣ  LKUZ:ĹXInf\\X}e1,:h,(a;GxEcZgS<,qHPhKs=(R[Iru#06}琱\nXtKf9ECa)!_3͙;EiCb=+:\$K/-Rq<^a/t[H|G\r:t4źtTIPoSȜ!0\rX5h^Fϩ `͔3hfx\n'*L6zԖh340H	I a2ЍnwS!'/2eDNI<TYl%L:jED'pK=NX kz7)Y|0WNѻ.81wX%D `J]S2\"p6EiR.ޕD:)D~0NT(@.!\"xu&aXP#QMIq0pCxMQ;#YRnMEe\r!:roSҖJ\$UzZ\raF0P,\\Ģ~B\r:;/x@cI68B>͇-IIANF0M0,իfsk\n˒y&B4(T\"vV&ÃKdƘyLyV3m(gl2}l֏CMRppmCFۢD\"{ecLwSb):T]H>\n0KD5yK\$S{呉u~T\rAzӍ_jCZ2b:gq棱8T!\$i=TQI\n5Wc6dAySh\0Fz?53\"[\\e`P\$p	}sNuVS;vms5 /:;[ٴmBH^&d{OmNqq,MO Ǚ.E#RN+̓QQ#2#=71dڈ/5'萟/OL!.L56L-wELk~*\04_D67/ɚwC#'x=MjMbnPM5cJFcODN0Ok4&2\0<pc ބf&tNip1m j<ԃ&\rO<\$t?lzgx,D%,ͣ80HLP	l*#\0L\np3\\xy	\$%0yę\0.P/p7X7\0.c/@O&0pNìv(pNc.Jb1=\ricT͈|2>dHd8E&f,\0[cAD!a[0\"fƱX3),|\r,'Q(\$+1v^7lhiK0`1dQ'qBgk0\"Q ' qM -x+\rr|#\"ftlMDzRQ!MN.{P}R%2I!>)Md߱>%RJMp@R!'b}dQHe9pRSe|bQ/\$|`|+*[s'b<1RҀ~q,  .,q~y-#-e::d6^*-d00Hlʻ0\rsq^j0p4`㇅3N\rDI.=4,Wls\\㨊r)\0J.7%Hr\\%3L#T	\r\rMjv:}Ǿ.Ƌ(\n6kA7\"FУ;zG hf<#h57rbd\rV\0p,Fe6F!RN# Zpdt\nl\nq7v%.,bQ>DW*0!b,(dpΆY5`-Sx\$;7T\nH2T'5h#jtB'&hMaF&̺;7\$mFZe\n<WbL4X7T(ޕ*MI4փO#1s#--@Nd*gwIv.TKPjGc(!G\"Ú odp  4FWcU9N7;L~7LZ̧Otf\"㼷TNC/,MhN@";break;case"pt-br":$f="%(Q5Ho9jӱ 2Ɠ	A\nN\\\n*MqmaOl( 9Hm4\r3x\\4Js!I3@nB3'h5\rAscIEGSbr4EcyUz0Dqe0̢\n<miiQb4(&!Nod?S4L<ي-L,ݒq`S 쪧(o:\r>yxs-s8kjFI{Ct6}c3ܡ\rê:8lܛɭ@ҏ;cp͸K7`P85x7#9\$ ޲,nâ:t82#83\$.ꕭ,8k2R)Rb*NCj|C;MKh΂KjBʵB8Ck)-#i*rT2a|.t9\\7.).!F+9>`E~#*2(r|S.a#\nA4(íH22\0y5xC@:t5|68^#kxDɫ-3`Ox!\rk5@&CY-\rX#hcؼ%bpާON\$\n (CʬtB6rʇ4O8swZB\r&*-c뎄2f+;+h(x6v6/'iÛ\nbh	JV̚<<ϑb.޼H Ɩi<Z)\"`ӹ SL:@u#%Sb3GUctk/l:7]FdѷJM\0002;\nDRC/>(8870!]ylO죄j[w:cQbYeEI'~4 [;\0B[`r17'ɿ߃y4ps\$:qN#L7`j(<^K hcP o\n9%Cgh3r((`3Z\r;0֒pv9h`Dx,Ի?v\\Ks.b-x0ɺ`ӔadD۽k\n3)%%kE'38BNLZ\".[Kr8ƹW:]k= }/Ƕxt9\\;*i#|թGАH|Aj;NjMY7І9{9F4fPc3L!-GDm`hK6RzJT06@@PGop֖PQI*|2T\$]Ne2C5'=BYNYJ@lsnLLMT]%I*E(1몆(,aL)f\0FAoJ2;ڞ;qZpPb&L\"h*,%PsboT]\$\$JG\$0vICG3Yc۱UI'Pyk?Q`co}y0O\naQ(@JV rd K*IeZI,A?!TH\"MdE˪j8 t1\$6G\0F\nh3rhmDX9T`N-rIAO떑8'@BD!P\"(LP(v#FeT\0Qr:0fe䠕\\Ãlm'\r=LF&dՉvl>=(1C0^5ʍRWc뀡&-4b\re[y 5a[&V\$neT[KLK>MXbEM鄨 +DB8:VTqS6S]3bpQD?Ah\ri1<I\rEBЌPl9D*584Ht%=;Qrbh̟P]5MHeܕYy1Z0j\r+:<DoְUKizv{y[G2n!`#\0ea z\rd؞@A[V㍴k>ABgCo>qY7f2B^7PT\n!@݋8v`|Qq\nQh㵳6/+,E:iV;CZRAlCщ\0fCo\0ϺR3fDj1<#Nc_N؋>\$..vkޒ|9=Vttu{k\r\"wRA(`a;#C]%GEƢ&Sk&qxj=NͨOhc\$3@FN/z`Yq_A7s2ZMo֠\"8LFx\0&8o-0:\n:jަËDB\0?B6`h\0-\r\$pbTo:Ɔu@6Ƅh83k/Pi-l/̇_\n+\0cE\$\n.1\nʐLVUGx\0`\n\r~x0PO}P\0ţyǠo((ϼ.\$gΧnO#o\nhAތ\nY\rOJ@AXW0)B&JLKER4*0cbj0\"\r岛C&7\rЌm%V41rhqv1@'2ajWe7\0'`ǣGRƐ?F\0٣Z)@AM#3ld\0/P{	P\$&jXu2(\0bd>h.I%8&Ơhh) KBmjlo%u+y#\"G\n r#](\$0#Ȁ*\r>R!Obi%I&*rT|r#\"\nTƼIJ~`E,TG)o\n]..QE\nz()h.r@0!1@˒mci(S872-00'3B;sFJ5-SDJi͉5320@s&Რ(p3#p889mD:\0:@7f%F.N/3##S2NK<Q/`2 O2hn{r8z	2fN,3EX7\0Qh&af<66D}9@g8@CTd\$\rV@n\r_-,nd5`ZoO&G2~KT7Z018d,9@Q*\r3LLc>!lR\"\$0>MpO#+8DBXOFi\$&Jsgj=t``޼x~TB&%`MF:&<DA''\"\"\00047h6p#N7.~&V(c-a4b\rN)S͡T\",pTCT;T#(BSR!fTbO֧\$R{Y	,bGtdD3p1Vn\$ou|CϢ%5DIL8SCbNbЬxNh@L|@/l1~5%V-F<\$";break;case"ro":$f="%(uM0r1DcK!2i2a	!;HE4v?!\ra2M'1\0@%9dtˤ!eұ`(`1ƃQp9\r0ӑ@dC&It7AE3ed&3IrE#Q&(r2NrjEDj9M 4ݤ'LqL&V< 1my1&A.Ś2ȦCMeyS\"Dbg3BiMASM7,kYF\\S>t4N;g竔sgA@1B:޲IйlKp9<P6 P\"5xפ#╈{|6{8.*@c2%b0̺ͯN#^8CJƥR`*	P.F)CJD(0pʰmT9BM P2h::˜2PC@ޣP-R\0:8cx5h0IORط.@Ic!6Rj۹4&\r<I2@)\n't8TE\0k4bńO\"ԇpÐ4410z\r8a^(\\'Vx.#8_h|#\rLЌˊf:\r0(x!V)-iK|T\n_	{\"81աQn4/~6\$mk :C?b(74#:\nVT::ƴP%,CH:LB=A#C\nH؈2۰ؤXAT%'\r10YLFċ!NB Fg5D83KҨ!GI˭#\$i#z1>\"27.b<<\\CzӜA-f\\z4SA/L9\rʳzu(<o/Qp2/43q\\b~ l1^C(`(\"gRh(m[ \"^cF3I!7LQpdJ:,\\k1	L<6JJ׳la\r?'!#Bv}a<3B\$D%TS!3Z2V:o 0f-<GܐT\rgrc\\C6RR0	!0RPq}1+\nu:S!CUMh)/`,\rvSD<7ȁK{!KuB@Iؘ]R*=范9A!\0ʠCJM<bD^-feT_203Z-F✺b\\\$#ꤋ@H3c\n4	~3ojJPI@p*f]!*].I\r̒I8\$|s;E|M\"yJv~M\\VVFv,_3ĘT\0ZKTe\$Io 	rϤ3yC!!޷aY)'rm-qa`ȴ 	!cd4QM>l7ԅ8:>/l	5OР05V;)SdQJQV멒&\$̚DQ)ol*aSz`E`A7Qq%\"RNg\r-emO1dB+AB|IC<tLBO\naRxꉙPu9gZ݉#R%(Le=fi9ݣI	J_Qu?%0fD)O!P(h AwHpJX[b{)B,\nN4&2˒ɩw\$q:2\r6g]R:d4Q3/N`Mg/\\4[n(MιĉAPUPk\0m싁-hDtFcPKzk\r=2tew#%f\n\n͸R5VN|Kh(jP44*Pm|FV9+<גKKPaP,ϛ\\jjt8\n!Yb|ޅ!\r=jx:A縛nrjmj<;vrQYC\$ٳh\$]s|=&~֛vќC{zpoA63jZ4#9u˻YOi4\rEhHÒIK4˴-yW @BHxXƝwQA	3᯼5^;Y\r0̵tAEF5ܨt^{ހ'<DY86G@\r\"}-v<_ZF\\!PX# AMvQh\\NdIq@L&a1T'4j*ܷ2J9{(Ah2.\r5 LZi,l1.24<Yp+E!\0`KV\$(\$&MiIbҮ3&0P&N\"@5>)\nznd)#GodlPcBjF@C*zv&egNJ\$KWfZf0,,rP&eN\"D5S&i\09@iRE|,@i\nAitW#2%m'\\&)-xޑl1-3_\r44\r+QHO\$2-0c\r1,.>1o\"A&x~e&Q41E`]E\rL~gˆ!\"і}k^A0_0\n\$.Q\"LQq@_˥./qȵ(t>,Є- .1L_#\rd N\rl [#-,\$NmJ8ZLlP\0mrpgtuQ#VQRrRwA&w(PhZupV'3Rj\\'(YPg&3\"2g0 -2@3\r%ryc,yG\$~q[Qps+1[+2jg/Fi3Ff\n(ÓPб1?f&(Z/P,C/ R2#M7I}8sw877w2?'<h7b,SZA39Ӷb,r2W)I-N=S<E^\$;x75e?\rs@`ʽ8N`\rb,zCS-t9B3a3c=t,ӻET:SĂR*Ҽ@dn?3+tn-jW4w{-tG4D	{2sLC\n\n80>4DCئ5#T5C?Lq3eq\\z\$,4&BA/(841ðlE(\rV&AO<-l\"\$EȍI#ʄR(\nZ:\"\"COlk No{U'd&5cÞ!L!ze\$\"X{QM8-(ʶQOHI#`nu@QE<(lc&=|dCev|\$f@@U-΅-qJ7ѽ__U#`D\r\rV`]T';5]?Nb*5g\$lFC\rvL@DuRP`lAeB⩮3Hgb^S]mpV`	c|qvRT%nҐ2sbǚ!!&z3f'kSaB\0ޚiK\$I_	\0@	t\n`";break;case"ru":$f="%)h-D\rAhX4mEFxAf@C#mE#i{a2fAZH^GWqh.ahhh)-IhyL%0q )̅9h(HRDLD)Cf4Ըh/	4&Y9ڡLQcQ\$c9L'3-hKclqu0hʮsizxr#^3KB!A%X֡PTB/G\n>#=Ii\\\"\"\$=i9*JQI`=I3(@n:4<){)h4@F:PD0\r\",fƨIo#4cA%!1c)x%\$*J)G1ۧF딿Ɓ^\00Ŀ̂8@+hڢ-*IO2=L9R+!',' A02!\r5=!q+HNȹ&삔\"]hlK-<.H1(Ռ(ғ-qg3lJCDP2<(3bhHhFT@C@9p6t8\r.H@cx5LZ\"Tkd%5\"VODTcp\rS?(1=>˯1\0N2|h h7#HzJ-!O~OŕJc3Ž%MxX@46#0z\r8a^\\0:a#8^2xَc2kAl\"b	p|4sdke\rK뵰?ywliԲ*z@lZe+LV	Nv7]lZj]wJ2j˂Lʓ{ƹ/*\rPr~_ؠi[ Ăp_pXZx΂Bex4\rIzVk\$G'4Th\$D ƃ7fxY<ș\"'2J]@gOfˡPRzW@MV* z4\nbCi}F-`()PS?dXROIN2WfþV\nWRNɠç]KM2E˽\"R\rҤ2^Rc!\"D\0&Ṳ\\di.00\\'ȁ!gfa㒯^#AC\rЙLC4Wl#Cָ|#\nI.A3Jܲ<Nd.,B;@\$K<N[,!LʴF'>6DgpєJv_CI#Ub̆P4TQupl6@<dME\"zӠ*%)R|Tl\\\nY驹i\$@SbuTE\$Bkt\"I.3fV%ľD'R{[}JjέV-*x*%_GʴEխVڃklHV&m|D.;'jŅq4ؓXVc{`]3Vj-#M4ZNjѥO`ǏBhɱdPcsTuؖh)lۋsnݻ~p\02Mq.1+w\"\n%fU^b3	9TMWduD\\\"ah't5Ц1UmG	U[+jm7&ݛomw\"1)R=Bj;F{Gk.NY%\\^\"+XChMk,JQ+Q\rtya[nn/JapX&'s%~lY;LZBΐrMK4xމY+JDl[iDz4;-\0(,UrFtx\$V>MYEG!hhWDSa@sIJ\$]r,f\nk2a(wl'\r6wuUvvۓT|7M;) m55ThP&D&VTVuKWPϾrnuтR(.k[H(_Df+I}Ar\\	\$ʴ(OoWSKDanuRpJ؃*j9AuPDT@'0kZ䐥AY!JԅbTǉG4Y2Ԏ5c'}aN=j!J<&)s']\rC3WǼ\rGY<=Y\n#@#=9}/Eg\$/˫ٞ9J 5͚ۜį2rKfFTJ<dOOfW\0\rFoLC L3[8fzLgJfK*3ee2v6Jn ΠIOMO4RƓbe	.Ӫ\$PT:d\\iEIJ鶇i,hP@F\nRH)jd|BZ~jwf\\4낤fd(\n\0\n@֊@v͘\"ʦttClfF]שNL6F-\":xia>@Nj8PV]Bڨ\"7\"\"7bDWjC*Jc`_,@6z3\r*PlJ]:OI'Hw\n(1mģ܌2#\\\r\r `@\rv^z(	p:rLS\"'ɀMMnP\"l-V*\$ ј?[Ph'1-KQg\"hK\"#'@ мP*&P\$у*Rd trk#5	/G˘c \n`j詭viBj6\$ġ@k*{^0Gj%\"r-GM;,N*zdB.j)#\nԁ.n*/1/mpDB5/n|SAq0A\n21\"3.(i.qeMzs4nʍs6,z\rB(Si3E7	=6%T6?8)0lc\\st-Ӑ2Cu5s%ЈNH.s\r(n7-%&o=Ȣt8ex\$&E׈3-i8SҘKPO&P-GPVbIfj''HIДKp1@#0y7HyLy*t:-Q<X8:d|XZ4l.SGHc\nF1y\0i|H jtE+<f4DbGfq9H*,YCSi\rԳK	.\rJl#(Q*4/}T3ȟ\ra1\r`\r\r ȉCOPgyT@ȅ+N&@n{Eukneo7I:m;BڏpZ5pRuIХ(msX/W	HiF,'Z0%Cl\n4/\0Q:5=pn ls\n\".GյR5Z5Oen*z92Ԅ[C;aje_3bbv*28\rc~tVVWRst\n72ke/Vu egiZ1ZzئD\\/&iq>=&M)LiaY\nt\"D2B.672g71I7iv,pB5X)jDXH\r?֋f*jMTkdlå%IQt1Dv ǟVkcu8^zuHl/HwtWtU:iNG(1vSt(7xEtw_\\dmu49:w\0Ոs\\K<zRx4|Ho8\"'&tYyRMOFQ3PF6\"uԫcCvs׀6'tu{ _1\\y@ifx1rd\\wBj6K<]\\Ŧ3\\V\\q~toxKyEU.P8z2ICƢ'8z񘢗?b1JHpq+\r%׎8ۊx߈(28HGD\\gS׿p\\\\\\%}!i+ov1y \\t68KY29Dג!\"Q#iY2(vV-iX~9j-29Ah5	OJ[o#{#y_4pdWQ\$\"؃sXuzbυ%*Qb5bJ\0<G6R(X0e91egY:_z?z:\n'4GńIc}&3DDU;g]\rIv6DHn|o2sZie-6\n:!@a1\\\n3qbF	̪`˷IW/562QjV@@\nqOrCzl{^1{KU-*-\n9:In)#@2cinkxۑt:حSD_;SExcl,h/¾[@AxGE<:#[3;\$r][ik>xDLE!=L}TLηXmUJ[ǳF5BgPTVo;I7(ͺuOݿLۙ9{{پ\nx	xG\nTurtBi81O\0\rkHMRKdJBmj!\\%!yC\$\\hw,]:~è\"G@Fw6M50e^tILʤ7=lЖUΐRM|;kZ'SA4'#q/mB@";break;case"sk":$f="%(](!@n2\rC	l7&P\rl25q\$\"r:\rFQ\0B0y%990cAn8U\rZv0&㙭'(a7&(n1!%iAD9ϡf?BKe|i3fRSzi0\"	75d%Stiы&KuqmNemB~Q%b	a6ORj5#'MnqoI{<q\"7)RPcC(p7G)B,CXԦcCh½7\"T6<m1#Ȝ2M4@1KZ/Jj\$2\"J\r(\$\",jiJ',(Ǎj(椲Hb4*ʐb\"PHsBʏcMP9\"3܈(6*6Jj9CBt:%t\0G#!7c]\nx,BԛBD|Q1F4bP90*KEl6lP kE\$Ȝs/q[.@U1EV0\0x#(C@:t56R 9Xxc264C2仫0x!B+.sk7ĐPC(\0'Л9Rc0:̢f=C\\.+\" @1/cHC á](]`P?#c@.FP0C\"\\4q&7\r\$D8cMȌ:[9#;3DEK\rc ʜCLxTx8O\"bL4ngˊ>HZNI5͂)\"e9,nr,܎Csi#qPY]s\00:x^ޡSuqB;:d9GoǦ*¢4m*<f@^Bٌ7Q\0mEq`x:\":X\$+01\n CTCe!KDnrzAŘ_a2c0U(3cD	O[ĄY&u6eHU[HAQ(p@Zbl\0+clFc(sV7u;h)@Md!ѢDƵclq9qѺIHїf-9NfLVdʣPAgT#R\$)g1d/dW\nG	sֻWz^keX/NAmdXZF5|!:G68.	K-ZwiVi&R+SLJ[ɒ})tkt.ػdc`ӓ+	/2;gz<AekCѡD\\|tݶD 5\r<z;:@Ģqk(9\$h- !h/VT01P~\rK(i~pCǗc.ԪDBHX`H ,DFJۓ\0d<IIDvf8U\n\\C/*E+-&bPL:,qhYU?+H%El*z05GÃXd2Ki4\"I	1(%UU}Qc\$#C%BA7 ƓzQ.J@&vc vB\\#%E\nd`@xS\np\"@rBaM7RaHga;7.`9g0+}úSaԟs:Dm4 P(FAKHBu\\5rU}.eUfuu;i¿PB9HrÀcBquGitB3|/uVdPL0`b>o#=-rެ?363Q2>|չk'^Fb'iHdl=^yo-ʑi3WD7I\$=U2zrI@\$gX`! S_] FA<1Jؼd[ѩ*Wmͅ7Ny\rOxE`L\rT hCqm(BiBHQ;.d+˙dT3*I/@2CQI|2\$0U66ۭZס:%\0x{WdX3t?.W¤j:\$.wy-@zgUun41\$T%VT?T!\$Zz.8km0Ћ< 4^UaĜaV~l~o'.?.3h4{IimP86}> C~4hdTک\$el\rhȉ28#Tz㦫:+\$AiChAV8P@3k'\0JpDDqg<Y@Êj#2\"e&> e\"̨ :`HzH\nW8`W\$b?N\"XBޢx\r&dF.Kec~r6lA A'.gڤ\$4/CFH\"^KM :AC@.3Wn,/!ͮPM\$%\04m1<Hӣ*cBA\rrm6^n`X?\"//',aG..H胘@nf.)%m\$ .h`p ش\r͊\rbQՎ.TNrZk.ů%\\yj- d'ǅ!1I!q@{Ww]!*#qO\"-#P\$ ?<ָQ\$m4%ڲJ.\0Z}t#*d4rkRnʉ'_(rcҌ0'['PR0b+,Ġx\02,m\"i-2r>ʁC.\$0\rFt.oo/&%p!4'%l٧PB%g`A|gJ>k\rD(\$2*'\\ˬ諴B4Ck\$.ǳd*,\$-R\"gI|fQzmS\nknj/\${,2T3&!bĀ,9~5(s#q4~<	.#=G';!xS'c~>#%+-#k`#|}z@.ZI,@#t\$S](2I<9(=M46}>r.? oVg^t:e3A4bo/Le(&pԀ#\"&Q ~*<38~cIY;OITtM+P/''It;K<LGgZmDk:.fhkrFk4?I4OҥDCPd!t>5FQ4!P/Ex4',N2)NTNj'Lu\$MNJ-\":,T5dUk-vT{TU/RR\r<3^mG%m%\"y\0J4*Ƙ68J\nd(HhոݐQ5\\p'UGb	b0v'%\n[q7*Øh'\0\0P@d\$\r 1Ö:l'%¹gx.NCN>K142i5\n\nZ.LRQ+Rx\r?)f3Q)pf#fQA]g`&fY(\"քǏKAJ#bsp%ecɑpD75k7>>cmlB6&n.<Ȓt\nr4o.\"D~ΌLpqG(vŠCiI \rJDv3sj,+\nd5{tl#93cv@hfø@Tq<xBs?)YD|<Do\r7Z\$&\nu\"7 %q{Wk.w\$5H0W2׍#%\rt&ME60VBX`ܷЮMb\n: ";break;case"sl":$f="%(eM#)@n0\rUi'Cyk2QF\"	1k7Αv?5B25fA2dB\0Pb2ar\n*!fPsSYPaDqa9Ύr\"tDgNfoBAoB&sL@Vdk1:0v9L&9du2hyr4\rS9 դh4Ε܈h9\\,xAcFQ =ptgtfYyS=bX,ģ)^+Nĳ\npǎ`9HZ|2\rjn;c\"D(A6\"C%cxȌH`;	#IP#';z\n?Pʌ#	b)+(6J⛒<D_+X4&#!0a6.X@cxƐmT9R=H ҕ4%*:#R m k+ƐCHZf0c}\r8@:kT=C\$R%n3:xiDAr3p_pBI|!X̅x\$BK\nӊBޡ\"3# 7Z_#x݌J0:XpaU\nX,f1\$@y>R49nS8*\r#%s9>HP2M1D8:6M틷\0P:'DC :2*%0֜I\\CM2CH87\r6FZ9@1\nbFKh93.#@\n}>\rn*ZqvOBTLH7ΏˮF^0;\rJ=38\"]\r7#dX2%J՛*#y_Hl@Ɏgɿ;\$+\0Sr:D(x#s,e`J(fĸ /,7eV2Q(b_	؀hk\n)DfJ\$AP c~S>P-tC\r-.,CbCBY9h-%[kt7(D\\;bs0 R\$&(7cñRrDKKq,)ϡbƅjZ+L;UCVr[z8+W+	!8(L\\IC.dFJ%e.xE_y6)3by=696.Z\\XL0i4A!\\0ãN90\0@]+K\r\\pC\n_l1s1Wk\"Pp\$HH\n\0RCzp\0\$gy@KRFS9ý/Bm!,fA=sꢆX;EgYlr5B ٘H`C\naH#J5X-%P@Xr:!оFJHA`H#JFNJ+GpHB^H2%8e%z0kcBX7#3Q`qk3 cL=+{No齉t͒C7R\$'0(/\rEqC`*Fn0sHHA\\Q;U':+!`F˂3DneW;\\&[,wqGݽ9LSGpV<:]ftst3CH4Y;~;*2T`X:-\"Gv2SKo0dw<(卲5FfT{vW(:0ͺ~7ֱ3\\C-@+ J:(QTlJPP)ca03AiRrѻ,Dy94A0B`o;T^XvA\\1ΐlO]\\#0YH؛qseZXkoLkJ/%ا\n˹i7eKan(F|9nר3F&U7/dCX9g-.6n4ڧ T!\$T hd8!tHB%fY`/)0yil 9sI3,QPHtSr.SfsSVRJliӅz]OTb!QG:ǧ6`]CSߟu%#iXge\$=uYZ}0}(L윸Tx%A0\ržC{?>_+5,Ǔ!#g3[uoOf/>1/_XY&h4;#6&&.	{(ԃvoMigдrf9M4!,R	?M-šCH\"n#T@4V`))\rvcf0B\"\"g0@4p0%c@Ɍ0Bbtz,3e+C\r̎-#PŬNI.E: ib\\'	P\"LI+pQ 3\0b\$L.f=pSƅt<kڂLD\$cL1]xLIE1Q	 .D!bvhpXQ'!}ǽqq89wO%	b\\s0Drp*#x\roΡNB?:b5`ybx.mV\\Qi\r/;!\r,Ɉ%I!-dKǠJ0;;z!)Q.:T*,b`G!\r\nSQ>;)U#o@\na:ˤ1 W'PT&RBgjbgqq_ґf)@?̗)|y(++\0**LLs+?*q-rң(&1w̒6\0txqg+PK+(\n0PW+1'^RgX2\$zǰf\rfo41``\$h@ys\rG\rgS'	63q6n1Ȳ(U6BRR9&+s*h7q2u48ۍ6\"mGgE<<C~b\")4۲6S̠\r[= k%HdbMMFLzjq_,A-At	:3@c40M*e-0@3VP1KJ@T'ң2&@:_<\nF,O,Ɖ%ѹܞQ4SqDQwIO=Jc}`Hޱ1pO\$QT1\n\0/:;M.MTcL#oD8o%tN×ObCmO%KccbDd\rVPN+D|Μ\nZ9#@V#:zMNsCU4neKĤ_l5nW/w!F&]({Eă@\nC6U&gS@PDU0<(!\n1c+[ʺu*5BD+]&B\0]R>s/H3rVQQZ2`#wGNNm`-aՙQ4E(7c~6Ci=.TL=6c)	&p2 FЫYu\r\rj1V`|bFj%n&m>\"Ҁ) UIld?,2M'-c,`B\$]pfluTz,q.\$0@3G41 @I	bH";break;case"sr":$f="%)h.i4	|Ez\\4S֊\rh/PHPnv0G h\r\n)EȄ:%9>/M}H`(`1ƃQp9C\nD?!G: 'a%e|Dqe0̢\nm=c/\"mF:D\"Uj8k:]\nHƖHr9a (h_(әHY7D	Fn7#Il2̧1: :4c41?\n+ʆ4I(k+<F\$70)pE0k/쒎x)H3Σ˩ChH2xKʾ\$1*[;\09Cxдc @5\r;\"N5hS^\"((9\"))96[xQj)R1)-)HȋM\$P(#R|NHNUFlĚ4Fr\"BU\0;qQk\"R\04\r7#h-Sp:C1c('O:Q풖 ɲu%m'm4Ԉ]*F׆E\"B3X l}-45M5#q81L\04N8NS2\0yC@:t㾌8'/8^2|9s^+/4q/\r7^0Κw:\\Lh`+]U/	H,@\$r÷ۈ<|ݱڄ&`&¸9\r\n\n\"OA&(at.RaƂJZCLH2ʀZKDw26Mc6,m?Ci9Z_*qVKRf\n0b\"\"e'<(A*9ȑdt4]cERڳr!~Fc`!idO8IqAL(jR_\0綺&.(8GP	+pQyQFI;nDR?TH^2/1(^9PF?mf}DB'a@N+&9CI!F׌qLIm@AѲAV\0mIgàus,Cfm0ih2 |i>	 ,rKKQ9 e726X#zY![3&iaP7 :@x \r3Cr!3e,;\r\nJG%ebf%P%Sԓd@OC\r!3sΙ>h\r	4`PnK`tlmD`ؑ+q#5Բ̛6een^\"P% #hj͉%(&	.Ufih<\0gӴ2+Gi4Y&|j5CZ:Jpk?D0P@[@:'wM5fPaˀHϘaѱdQ\r10t!3Ut9svV TљG+izs 濫EѭAȔB-\nH\n=~:*AX**Лrޟ:ST??S~n9M1:ý+d(v}dZ4O%iŏtn5FdCaHʦ}k-o8`5ʨaL)h^q}ř#f*>0'RTS(5C0d!H!ӄ(%\"|px\\ ʽ	\$<\0FHoMf7X\$qzP3%E)K	d1γEpPC0?Y=\\SP	L*]AT!\$:.B6uRjae\r0h(ȣ0Բ8ErH(gfPi,JA!tْ`x}7tסC~4A%,ߟ\\od\n;eDRp \n@\"oEI)iv`X\0D0\"~YKjX\"Q8_YkXj#)|^1wѰHCs0&?#oJvGvT/;ܨ%(;{{W?od7=`O9-J桵/]?b2'&\"{cO\$TJayz쑰[o߉0RC7\$DԸ	xodXI`jS\r4}J@A 5R.E,FPC֔~=`O.S{I5:\n5sZhH{]\\jUT.PE3H>z>,Hqh|0HHlY(xG++.m@ 3L\rot)P6n\"b#6\re@U@\$jH//HT.DL~_\n`\rK`M6=c&6EzULBO6t ^<(zuP(õ\r,bh.zohjt080D`\0\"ʠ]4(1t(g+\$C)q3861\r6GTBq1\"j<)h.Ep16QiQ1'+g+cQ:QU1q:Q1@\r&\$Md\n }kRh(qo:(_z,\"p(4+>/VC?!h0b(+̐.~D\r6}I\$<oI%\$K%n,]%\"t)\"0:FBs*6\"C F풕71Y(њ7*cU(o)*,1,*8(0qh)NdI-NweS\0BcPU0,1@K4(,K.SSG:3NMp,Ҁ7b\$2E3+p5nNae\rH\r\r E\"C>UN\ro첒,q-E\rR1l/;NԼӼEs.e/3:\r[;7I-ï//̋2,=?3OցB?@3^Yr@EA)pL\$=1.|D^t#@&ByC]CqW@+CQ%)TF0.4I1'QA0tނL)|~)40Cr@B}-03\n0(>7HFB50SXCFj\"CLBL,TxQ:P1EBHS3COr\ndT:&:NLtJ;T -N6#.\0᮴r4\\p{IIUIkVoK,l9\nQUNT8Cs:W(~H:aJUXҧK.J5Gu\n2H<s1'Ŗ\$TQ#1(/\"2|̍\$ҧ?<DV-`C[5{`-[̖{0q##1\nT/\$HbdZ{-bd5Cn#<fUWFhw.TmYlmgQɖU=eg\"waC2q'pX2H/gvP]fy.Էi(}f\$Ym|dqqZ=cBb(l\\?[mg\rvmMD	mz(vnZ/,4EvJ6rqV#VY:'W\"BRHDmrV HqeZ)Z\nV)v6vw'AbOdW3KU| KvWFmY&1^_t10e\$2uIz_!ʹ6Y{nAeh|4zKOUo@<ҩ~6SGw\r1GWC侉\rV7hG\rrDPw%\"dֵ<@Z	v,G]z#CDZt(|x`sd[xs\\nQ\r,%rOD<	4'>LvGd;]8Oruw[e*3\nb0΋'Ѽe*=SEq	!6Es1Avwc-2qoM)STbIUj\ne//\rde?Bvv钨UV},y[->Vifp_bIVi0K{w`%=i5P㠈q>9A\n:7تxgC,BT2H C.	Hps]y}S\"F\"qDcYMR_m@|N;CT/|\rz>;83	ɍ[L`";break;case"sv":$f="%(e:5)@i7	 6ELp&)\\\n\$0s8t!CtrZo9I\rb%9iC7,X\nFC1l7ADqzn\na!CzkDqe0t\n<pō9=N7'L	n%#)HrL×3|+f-5/2p9N\\C*ĝ!7K\\ 2Qч9g6fs+ϦuCS7OenTޝ0֭	Zb0kʌ \"0/Crp2\$Ⲿ64r)\0\0@1J:e#b9&(\$D\rH@)0'hڳ dlcưP1~3#|'\r/H򖌣kҳK+87-C.(pt9K+c\r7\rP\$܋cT̢\0P\rJe\n6\r`&p16tD/(]&E3\r\0x\rCC8a^H\\Ӄs`zJ;axDmDԎT`7^0z6\rNDӊHIè::Ұ8^3<+O\$8A\"H(7m*,V7!RrTe䝯yH5;Y#\$99 T<R]7^M\"#8λ)OU4d)@ǹȄ2瘁B<[1d(腧:Ռ\n9q)\"`Z5Ԋ7>]@<2̮qG#C!Hv78Tӫ82rʓ\"T\$drC)30m<\0:n.a\\<BO]ۂȑђ|NƢsR<COz3A^Cpg6D\$)R!`)Ŭcn\$fL0,79lN	\rȋRHF!	,\"jUK1Р\$1U&Әj6!%o\nt/\"HY8< `5HwYqgp/.E}/UБ!80)dq\"NvZvpB#Y\\tXd,AtZm 0	Ig_\r^ EHB9\$\$\$DN;dH\$\r4c)'m-D\$ZVS4qi\$V0	HRp7E6bCB_=hư\"8@PDR?D!Z(\0Ssmb3NW:f*6pni4qۛSHH:pdڑP?Ba#!ule<=ꈧ1G23Q0) Fyp\$)x'Q,UQBxBfb<!'26BPnfgtlQOqrJ` F'S\nj\"+4KY-1Nd#h(jDG2zGh\0M\"\riJCw\$4vj,M\nЍ@?>Io\rSSvG0T\n	 q!3t9&|u7C2YYiE3\0U\n@\"BI	a\0T\n#5G!#XE6:}\"(;z˥3ЀfM0!%+2#i1s\\*M\\UሼY9Lĺe9\nM@|ц\r'8ϳ4A^*i>y6E}С2¦D7*dI:JEFM?EA^E\0u2e\$2I(sMi[(W\"\$5`*_YV\neܱ˶/s8d8Cg%F@PM!Y}#ODA\nnZ\rP] rhd>˺[`7t!1\"(]`q9\$,2DBHֆrqsU#)dHڻeLXfEpdbזxe	-g10bHDŹ6!8a×A}jBE+3}k+ghIKYV}t^W%pp4]DK*FK5|[Zg^!+ǾeCLHDӚ\"MUdZ>¥M)9pj;I;H.ZSEm-rxeYg~bA7Yx10Dsf'gߊH3IvscuH!lLǴB\nlZ{Bs9Cj%Xs0!ȂmnP`KA\"6v'F0ǀ%yVP%\"Jx/oz	fqgI+pN`tbaF﮵	&r̵dЮܐ\"m.xFx\rZ\$wm)6R'AȄJ)m)\rH(F#Gh,͂UBʨʯ\rP5Uŭp<Wb˰gF1OJuρdvRqXzux8u.rRlԀUaBd\r#89pĖ !	{/|C0mI`-iQF#p͢tr~h00cF_\"mD@J\$u-c#gO\"DuY\"T)Q/R0 rI#,RO%f@\$4%C\$p\r6Z\\͂>4bO'~V#8E)e)RM_)c-M\"qa\"+no+Bq,9+-n\0㠨Iq\"\$\0,jD@7b d@N8'h1\$,10/#h@pQT\nGP4-rZπ1Jb%lP|SYX	e,p%Ƥ5LQ28.03A9D\rV\rd@#\"k;2F!Ĝғ\"\nF\$\r+vrs6ck>n4z(vTg\rF&3\n<D4\$D <&%̯I<蜯޼-\"*7^DtĖ4%QA\$פ!-8o5`PYF!\nu-/|)H\r+>\0t|3_ĈiOj	A7@`,]Ě'6@HqH-+*Lc4C=GL̊UMEVUB \rHMIЯ<'ls5e\"&Y";break;case"ta":$f="%)J::u>8@#\"\0p6&ALQ\\!_ FKh3Xҽ.B!Pt9_`\$RTmq?5MN%urι@WDS\n4;(pP0cAn8UUɼ_ArªZ.(qg+S\\+5~\n\$g#)eGKN@r|,F,u]FdXGiSTrP+_5ȕʙa^i6OCq)Jj^E.Q@+W@J,W(I{\$#x\r\rx@8CH4(2a\0\$ :74#1EH%!p#%9nҗ@P#x;j\"r\\K<<2Jj2t81Pd2Nx)CH3(Q*ڒŢ2(7L(\npp@2C9)\$o7J: 8Ql9\04xq\$Қ~Bp7bJ29#xܖIp,37k,)u*L@dr2R\n8㘨934NE_Xa(P)M\n2	Q>a>\\ʻ+OekԼ87.*<2\\&Ճc\r03AX7cpÚaf9AQ7c^lWR2X\$*}e3*\r\$Ml2c=,G(,2L0KWa&۳# ATWV1=N1U!\04PS2\0y؍\rC@:t㿤%|Pp_[utK`|6m3Tclol^0ܨY*]XJQ&PX]9.++K2&L`d|'5`9G~3BSZe˹d&8WxW!7( AA(d%2b)̆%6y{d	DiAIm3`\\/ >x{3v!:R\0¨g\$3shzh\\sK_0-?M1v,ZS%.'N\"ԡseHCREz,#2co\rnOD&\"QܭJC/XRhHD^fm26r,Su1s\nRӒdcF	J4d-g9U%k?4:7xB1ׂG%QHPǪ0D`P\r+Mc,2\0?Km S\"\"J-TBHmu\r2N\\<ۢ6PQ>\nݖǚ BO.ԛ1QH\0\rա t)vy~OФ<7f\r![ PFRɊn`{^ȶ[F&{ۅ!?o6:vZe*@މpn @0hfu7vB88y}=3a>q4ًMXD@TD*iqpgu*iSyAw{Oq* Y;+#VF|U_T@,/1Z	ܴKxW0ɛB4l/|NOM6`^{zoWZv=I%c5w1	٬TLA\0>\"2,*۱t&~Wyh'pFJ\rê\nyۆɆpTٚ BL;dݺ:FZ`5spl.9FXi2T%zzܔd0@Pг\rYTND͔rOV 7=p ~uE\"rբ1G7<þHLr}\"V2irt;*Ԍ]sVβ)tpp.c\rżA5ܤ01.<e2\nep=e%V4AЮ\\|uYdN	bwd%X]FkFHoi98z.uۤ+<ҘInu#|ļhil@,>֗R=WK'\\a\nYxI a:,\rhcuʈ6߼ S}gղ/7i9\ro(;\n=S|/O	U[|,B˻fiit\0UoMΊ.ʞЋ|[[fB:dSr{*c\"bI@ҩEh/i簋Kx唭F(va`p	@\n\nP:\0HM*4j\0+N7mV,O*\$ml\r)nea)tCɲfRňNp <q)Tெ83Pq\ntqȧO<-'O-/XLyHŉ8mecڎ̪ϔn^	qecbB~ɻ\n.upw(.ϑ;c\nY*FD\n.	<ǎ씯JPۀmxH`hD(qd*F&G1*(8\0t\$tT@F\r؅~ret-`^q(\"J\nH6\r.&9PĊq\n`H\n(\n`E0	Q+@j`iŀߑ\0:\"z5P6(䶨\nnD̀»̐׋k!HE`ԃKr\n'6-0E 辯Hi%N\$b`%*+O6ZԓÎR^J-R	,HZ`Y*p  6n\rj-n@S!	JO`\rҞw\r@qMEY\r_\nʖD(d)!IV\\\$F'1-vY([`e\r.`` 	\0@@\r%Z0tPPM\$232\nCK^\nA/*>1U,*jM	}0Κ炉?I#V<yA0^_)f`4)@pI@-BZ@>Ȫ?Nh\\qCӍD7	UH	Bo(ΐOTN?\0Qw\n@K@TOH3C&RCuJ衴D4q)MM_\$	\nw\0@T@x]i/(:BPGQGAiC9zh;SKE.Th]AUi<w@M*r\\MQrrEJ㈞N,sjdOLcEvhΔQ@K\$QJnT2-Btk RƩk[\0.SY\\4\rK4^RNa&&XW粒457_5a}).\\QF\\\n<aURJaD%c#cU芳\\h4 <_=	HsbJhڍJ\$`@@T@7#^IRM4\r6>oi1VYhvehV2&s,ےZbXUK)t\\O?c,\0-Dc\0\rTgp\r\0`ގZ+ܥpGilpp~QtKIrU6\\v?o\rm4@ڐv`NnT\"Oc6^5]DGhFeLe!sxwvtuwRHJJp^wSz\$\$9j9׹]4Kwz+|	czv'.)%tLIF st׺M\\AeywEk*k~t%l0qͨ2WC.,xQeǁw)3Icby<x1^^,GG/LROdϟxs8{yWm	xkS7mw]%9/Q*c_S78,h.׀JCXvO^W5VLTdE:m4J`~ڕ!/#_2H8W[.-i}K͈3;Vxt,xA`p@\n\0Mry|r94kXCH`Qa\$U+FRR2<mYLs<XĽ(gvvg׿3G	tI\\ٿX)x*	xe~أB\\7鎱]b5\nSo1\0DlXMCՠl,y)Rqz4azh_xZCcwU-OQ\0z=ѡrgK9[_!JZ3~5,h͎-Hdq`Qu+XooMVATwyNeW/9fe8M0k9]X^\0QB<ԩwnb>[Z;J¡,z}{Yg0j͚3oi	坚a%[k;W7`{K,I{8nye:k3{09ǲuk_S;Cg.pӷXϤvpv7۽TKϲY.Y[FQS\nDl{EiDWm1F-A<D<1W1Dq2nlX)+#5Q%z#3YW]A{\\WEC!S2sp352[sT)yq8:N	tѱwwl[;54ǜ9ܒN|k@.[}Ɩ	l\0ɯ&G:-\nRq4A8G{}5c/xCYK7{צcv(fY:dh=y4SאI\rx&gywTø}Ϳݷ-Hm\rboX\r<c&hFK\r8ˆwVP`\npSeH|)Gt«r\0ƸT&zi#ەmǻEieXUewseܡ9SqKJz'\$4q \\{@bQ\r\"Z'[HZ¡w]͉Kղ-'zA\\[埌_0%l}'dG8P|5ʥ^R{mO&J`PbK'Xk{]Qwk1/V^!\r,(gğX4+ERzu\n.F\$BD|\0	sԓ2dX_=NyoƟ7sK\"w6joUgEt0lquAm	eLG@h7Q0:q\"{\"\\+={HPёv`pqaL5j\0{hvy7\"|kn@P@9>U1cFzf5t_MZVU2\nj`vi>@oҠ_c,O)h^Bр\0\$ @Mh0";break;case"th":$f="%OZAS0U/Z\$CDAUPȴqp*\n*\nW	lM1\"T!R4\\K3umpPUq\\-c8UR\n%bh9\\EY*uq2[S\ny8\\E1BH#'\0Pb2as=G\nASZg\\Zsf{2q4\rvuTq,..+h(n1s6t9K'vK֗!AvyOS.lUشt.}pTkp+nC퓴>>Bi\"X *~-h+#\0,@4#7\r\09\r#689R: :8à4ƃ1FK=\n[;I쎷+c:lִp,,C셗\$450=9s?B.jQ@o뚑B`P#pΞϓ.(cOs̅B57In#2\rA\0%b88RKf-Z-R66\$9#O=ր@ldsg ٫	3ֶ7(00	wڨ,s{j3F+m\$L+A\rY'CCgH:j KoC>,lľcݥ{cj~VJk(8Nx)`P7c0(V. @cx5zSC44.3y:Oꂕ=r벤cܡMTqp&\nYϰs={{QB65AVUՅeZV\01qD/TUP@;1CX1Us]C XD49Ax^;p-H3(u^\r#D #x}\0+w6{w/%forNjسQcEF):eO\0ؼ^Ƹr؆\nBf2W˃+ۑaA0	C!>至\nLIE2Ʈ['-nc;.H>/v\"IB) @(f!6+C`u}FQωlK1.bi?G4\nNZ	ad\\lactܕpb\r)\"LG\rTPͲ49@((}p҃F4`a\rҎ(TA\0S\n!2'b^\\JBfT mi8HHM8<\r\0f@ssv9;[n+'\0)%0KbG`Cj8͏Ăw5t\$4?ڑLP6x\\?ƒDHNFFw5 \rՠt)Ty};0f\r!Z8 Q+/	|qNzU~rC<\r΍!Q9!BM69S#ĳCz)|a<\0ZëtA2\0:n:+C8aunSQ(`{l fg)#{KM}Ax\"F9XFrPp[CHdr|x ;sprzHƆ+@>EUzץlC^lG [4Ka3\$/aOiGwjp\r'	^nxo㼗r.yE֊[/S	!8#W-CmNTJPطm HeY.|έq̈́ݒzR^Y{2b>F\\9CpC-4V*u?K-\0&r-w5k\\\\b}\0 qC|dڋE'`*뙖]\"5E(cQRFW`,w'&rP	|ٞ8{؇5pjҟG|7P잳!;L\0 ;3!dlt@S\nAlދgBJJ<t!,292|-ŵo:J)LCԖzZA[_?t:VHWI52]zN(n*\"ՈfTa-c9p%/FP;GP/)׸>XBɨK{QCO\05Ij\"q1pq|]-V<D`qe[UNd̰AT.v!*iCN4sdQ2vy2_taxrmX<('@BD!P\"O(L2!f,_S0x~6ߎS&i/d>.<\\([x	)Kc\\BQjc&6pm\n0I9)I.nBb`䕃gJ\0	0?>/7.8crHZBήEP	H^F^Aa2O\n,'ڑ,[5P.'p@z?SΣ#c\r jƋPjF0>@\rjޅ8Gf~j䞉>\00ٮC\"l\$\\'P7En#k\")Ă)Qؒ:BP(x,dJMXf8Dv\rbz+MVgo\"jEFJBup@-+0gF+*\nJEX>KPJh'k%03on3L\\` 	\0@XUTD|s`i\$xW[Ɏ0-N^ ^0Je\0ѥaF:bd	Zk`E]2l	dj-@2jpodI	!Bfc\"o(%y'm)f-6*<Җ Ó,k\nB2#J	RF\\gd\"0\nAnpf h|\nCObm.I31#o5&\r:- 9	9Jc\"<a\nI6\"F2 !>&I1ރd#d'PnQFi.O. o2V5] 3<#[2phш6N9%qoZsd9ISPL`n;?463N#kZC	*p \$~r,dNpqO=LFz3\$\\'TO.+VMoAd1F`ZQ)*đџA3B*I\"\"\rTZ\r\0Հލ ڭiFm2AKumi)*3AT!I<gpY :ԙ.gB*3r:tH-BPC>:IQ4RR~GU5N8|u=gu=S7#@:r+=klue#mR\"Cg'.OÓx)eorsS3Ump7WWQ{U+U;/gY\rZFM!1GI7\r2!3Xs7Qm(r5GMO\$̕Al.-If.fu\$bIPFwro:oUoU4Yx_5\rɖ__Q9	9q_6RM쇱Pm\\ѡ\\591R>uPՏ^?^iJ+6)l}m0mueviYmӽ#nvd_n֝\\hoVv:H#smuTGo%Vp5\0N@[M*.Kc#G\rb/> 90\nG^rNO>lqnynqtwnr	rq@CIQwz	zDVjL&C`|TTgBFpc0 0v-.vTf'y4k5j\$ytmzX	pqj5Wz5l57xo!\0P!cC%(_+:(7AO\nOH9NK3}~|姅s	#C;##jdF8rF2`qωdh&xDI1%x(rj`\nZߍ-q{x#tQra^3y{0)퇙Bc̐w+mbjk#ufpy58xWD	F'8Эp\r:nFL(fa:O)앆O?N-:u+akyy =g'%`3ӟtbR<e*iiYY'[f]`n\r8uCg9\"Bx6jzj\nZ@8\0-2J0W+-Cgrԧk0UsBd@	\r \rLN)ȠN\nm?@&XQMCAX?B|qO)Y;{=N%''\$tH@Qce%b<)F-/S`oxFK;|ʵgRS\0ҸBPձ5w*FHD؛rF_6?kqUCWB<bIJuvB/#L#RޔaH&ZU44+4b/~Љ\n\n>Kyl#;~\"Ѕ&0V\r<f/1/CffEC'P\$Pu#M[\0҈\rb`dp(3OmZb4 _6|-Ȅ	\0@	t\n`";break;case"tr":$f="%(o9L\";\rln2NFai<BS`z4hP\"2B!Bu:`Ehr2r	LcAb'\0(`1ƃQp9Φal1N5+b(Bi=Dqe0̳U18t5hZM,4&`(a1\rɮ}d=Iⶓ^a<~xB3|2u2\"SXS8|Ii1gQ̑̚\r;Mno+\$#ӆҙAE>yFqH7ҵ\\Y;H'd1/.2aՎc8#MX༎c42#@:J+j2+`҉\0֭ܿ(B:\$&Ԗ1+,0cC;OȈR<čH  P2\ncH\rX7(4!u\nC#A\0t9ë1,%(Hz\n(@\n&)>פ8&82-hz		N\rX1pb7@H@;#У!pa`@!cB3:xg\r8Ar438_]WI|6KB3#Cl4A^0+#H\rm/R96 ڲ1lm\$:Er2&JB+5\rSDJ2%@,W4:\"x,m8D92S`\"SB35!	x3ro\$ߔV\"H֛ P4hñB \$,Ad]Ch\"d],0[o=c'8\"OiO\"o'΃`녎o3bR\\A#0۵!Ii	!# {RR\"sxTfCsB@W7uK\r_7IS\"<x#!C03#//DfӪNߪuC<#[}lIy;pؖPG'ɣ+A\"h`t|Wbq-q}\"H,,As\$dxOG(`CoQ3!iᥕnGڝȼhRI7\0#R[,0\0@*X!e,ŜZZl-Ra\\\0Fbp]K\$En~dq:Xb<6@ꯃad8C!Kń\nPf.I&pؠ	ʆo\$#Y+-fV1#k]lI<˄9{|L'e%\"i`4W:m,A_E͑(֬9&\"n>RRXAO\r\$K\"dUTVG!\rȍә\"\$(z)S,䄈 PNLojYz#jpl3)!)(ƒ Zl,a!rOBˁ\$lr-}\r\$p*\$lSB7jF[io+0CF\"cF{AVND ) NCQ<R4`[d[V-*0ĊBe=ujIQpdIQjDeaJej OMW\"Eq b&L<eᐽ\$J\"K!\n<)CDrd`s)xG!hx\$C8CMUg:H2D<%EboHF\n`XSy6Gxd(5By[>%.ZH	+jϘY7z<'\0 A\nb9FK܎3/@dPB`Ey7'l/YKDV ˗[)|PAऴ]vt)9v\"Et! ÏқŐΓHf1dnFEI\\]Qt6>Y9zN-#\0[;\nײЉC\0R^t_D4y6A\$DT5H1]!L1]\"ϵ畵\r{kY9У\$JZX&{Rfh9:wRM@Ĕ\rL<@[l@q.a0eYmI;r=3raןq9!88#hrz A`C*z2͠Щ).uZNtP5*&oa\nbb{X0C	>:I'p#zk̔J#d4!\n.,1;I1`'w_%A⏕_qoɇPzMc\rYC<zj\rB(W>Ct>+#{3~r1-dVHthSLi<(bTx11_*=G:yBgy\"*R`Z.RN\"P=@` (uH!\"U#tB8ab=0P#7^VB(hB6c6ZF\\ftFvgbr\$v/Ќb-4`\nfpجol)0`.N\".JS`@QfX, V}<\rDpE6=\rQM\\ Zt&|c2oom:git禊qG(uP|zQNUApo(\$)eb[ô,)/\\&`o@ML1nEa?b5okBn+vnԱs\$0y\0-cw^HF3H'-6,b6\".Wڎ1<DJuX+dƞ蠭Вj|(Ʉlṱ8PZN`N*Pk,`ѳ)#%QS!W%I&&Zw#Q%p_'\0\$yw	(wQ>Nm(2l5TȌD%vdoxesOo+!2(QU&?]'*q^ie.-,ǞJ:b,͈>A'Onv&҉1)1j2ʳ/ΜR0.,51>ؓ.esA)n#zRN\0%Bc#ROO5^U85br77h7:,Q)3Ρ16f;}3@DxbS#<(=:pR:V	*dbΒ_j?CC(mdn>v<Ob5t/A\r\r!Efm&>飯ϺbOQD^숌#=7\$CEd\rVJg\nZ+MIoq\nAHqADtJV\$˨64b<J%\$JC:QSF(8\"QLv늘('(=T~bRlF4`*T>/5LzU3㶊^DX\r犁)R6LD~a,.-9aRr\"*3P02S\nSpj@\rf>pPƀPґ@H@<`PcZԂBPôjZ*M\"<&!f2 5JPޫ`\r`쟄q+U*Hk.H\0";break;case"uk":$f="%)h-ZƂh. h-mhĆ& h#˘.(.<h#v_Ps94R\\h%p	NmcL4PҒ\0(`1ƃQp9(;Au\r*u`Cd-|EX~\n\$g#)exZ9 G\"HESXj8R9ֽ|_b#rk:-HB!PńRDiyA	ǖx]5KOcJvf[5{ftk,TIjh0'\rz~8ȋ\$\ry*.#΋4nNƃ4ê*0(r}48죎'plA\rDn<@#)یF^ƭs	X ?V	/傼Hʹ,)\nZ\$,\n\$÷H,,F#M!d|#eEMj)Dm+)Z+;QH1(1;Eҟ/!Y&X⢪z_\r(hn?!T1CW\"6N`P7c0(x:C1c(MͰFn%	v+gKKJ8^t&P2\rH2SQ1O/>O˃ `_#\r8>hq3?4G@430z\r8a^\\0VX^C8^2xc2KmO,R@8*[\$x!ܚ2(2,g\n\n`͞g'G|,9,\r<\$2z}&ApJ2gZB\n 5㰏f\0M+ߟgx{JCR/';Y\r\"[]b\rm#8,֑\\EIK|DRRL\0 xFaJ\$.AJ3PUSe\0Gcuh-'XIsjj;r:dBNq(mSqL(		( ^)\$FTJα\$ψBM}fA(\$(I1o Hl9dm\$V\nWOLY.W\nw;vC?NU&m{P!r*_1\$+Z8(PIp\")YSq)0Mnpґ4?n\rۡJGJEhD`>4\$*GMO*9!TEEx\$ޚ},YލAU+r`N/\\9HofxƄЎĦ3I(;\"?\$%.PB+	nV^v8%U\r|S{EI26QG tRV0|)?^i5:LJSm'i`j-PʁkړHj%M0=:geV6S:B(@t>e>tڪvdIj~8hxOуfآ(NYXrQ:LHL\r5ZYkmt;h[ rl͠@޺àiź\$6Mp%yk%Y|QEYGIT:8qXYF\nbbx*T;jXޤTsEp23[&PZAkejMQ5`\rvCtm64!IHO*}Z\$Z)eiQaGCũąˏ|%3wYA%r6\\3XRPK;Jd)S6\$FyEd`[)5%%3(_r\$H0Ѡl@h@\$\0[{* SP18#Ke#2dNLhP2+E`ZEKMG\$57F9q嚐WFtF߇SYjR_/Ne\"R7MPC֤*Rbѳ\0C\naH#!KTғUA^2rl#Ų&OKCjs:}bPY;Ұꭎ{*R[O7h}0[wNB+F(t:Oժ\n7g#rѢȡsX	!Um^,,X( NU*.=9i'I!sX;'T␝.eTS~!N`ytI8%M!ƮcLkNz-\ntRAU82'WCK0T\nJU5%;,4uTz\\C(&qei_XQbmq:`Ba(@CC\r&lhJrO+?0cVA@^Ec쥢d?FA'\"J\"3f:ʨvioUiAo7<WrhMƄ\\[dǤf:\"2+X<׉ZoFqZݢC\"y̾R\"fIG+@t^ό@bibPkKJ%D~H\":bBr)*\$Kkvޣ*Nmp4lx'N<3`e_2%R)nc#b&'#fÃf#MPƍgF@KGDthzB3 e\rړv'ֱGL6tHM@NT' LL싐JfS/2HHU/LbPM=^L#0\$Hw%C\"gFG%}ot%4G@d%䫨i%+o0{\\H0`h~ \n`XőN'Z2LLM+Zyx^-ZgLaty#\$gLrP!dF9#gB\nA&oΧm\$%vr\n4b<Rfg'HyMfrX=B'(gg(&HnN'ge*(Z1C<~2gr@\":yR2zE)L'Bǋ#LXR/2',/M0=&K)r/hhXͤN=R&h5FšvD\nYeM4eKfB0/B{s<(2(\\*HD\nv<k:F8PPgEZzLq:A<8K,4b\$d0jUAKJ\nn|<,'O=Sv\"Х2p0u3Кs?*:o>Ϧ)½\n\rAHnњ\0\$4ȏB(G4&.Fޥ4rH! -@ PB@+C.0ۤ\"#Tp\"t4HnP4|Hv}Æb	@,V4X\n/B(+IñJ6 ` \r\r\nh#T\rl*aӔP<h<=\$\0tL6h]	rPOh.M\0005OJRC	pص=R\n5GUbyJ}/(W\$ێ1BgTh7vQUzR~5ĸQ.Y{YS+YҲ55U.]Sċ,UF+oRHuM^(^ru^9\"5VT[u0h)*+UU#Mv>s'&6KU8h(BxRv(ӡ+,w\rE1UKU-\rG!b26[c\rzU\"9ca%aV\0lnuIdO7Dd&16:=K`?VlWu@l_VB#T#4kmF@T_9p.qpu`\0U7S tPڬdYoQ8w.u(|&&>'\0d|L@6gD谑0c6e\\\"sVP4	T4p]@~0W[Kn%T)kHuעsv!xH76*ws5/uy'4z`Cv\"qDi_WVӐ7_*Qr,)ŀu^{,X-~Lo7ro~i	}uv?t/v|1?%#(ѣiPWw\rvzrՂՆ#R_[rC\nIwE\$G_fQy\rرsK3xUq9\rNRHu<Awf#ǯCy3\r0yUq6S!xOO!skr{UuW^Yc'甩&u_v?*2PLY[v\nbٕ yUs	t(awdE	׋,u(k]\"]ylVv\rY=% v6i-TKIMvlSW*7uEJ66)fj3v\nZ],.VQvPrW\$Rh7!MWk/c1/T궎Rf5sCVvDnF:4t;VkvRN>QԠ5ám9DʠL@5SDyy?o3'd o\n1[BfBH80O`dY\r&zyv)CYVFwċ3!@%I%kaPrbh[?Z>\$ㅅOde	#NfqJdc֦G:(RW2%Ğ#\"0y1pH,ً줆Kӳ#&<\n<oBj h\roKŉ'!%}]sG\\HP1o";break;case"uz":$f="%(a<\rƑk6LBNl6Lp(a51`u<'Ai6&%4MF`B\"u2Kc'80cAn8!\"n:far Io7X&9 5瑃Hq9L'3(}Aap-rLfqJ֘lX*MF\n%mRp(+7NY>|B:\rY.3\r4Asҙuzah@ti8[-:KZaO7;|kul7*'֊+ɜӉh@<6`5(0L8#ޅ!,6\"#ZB0*8\r{9\$R'ɪ8ȎNp)3C%ct\$o45M P2Ir<3j쑻#(;OR9tp2a؎هC1it(&k\n\r(E1\\gĩP ޑ#V4Ȟ\rAECcBcd+RQ\$LVoXEȼc1#rx4c(CC8a^(\\W\\،x7@9I|T8 }6L<3M6a?mF,b,=&CXSˀ`63BgQH1::)\"K=g P;zEن@8(h5#;\r(ݕAGu'.\\pA,sȆ4;L+=8\$l^4\r\$\\`&\":IjTXN9eYhd973a]Lx*Z\${=KU\"ϵ	r2ұ7.	z6LmB*Cl>y)^H&^:2iI]}DDE(<4F|[gN(Kˀ)'p spU bgOJ*F-F6:T)]pf\"!7ӒG\\[d(\n!a!6bgcW[\0q#D̂hOD.r|Q3QP6]Z9Df&4HfRX@\\	.u[.g1jI	9ex8ѿĵ[kuoƹCVu.ܼ!pE|0S_bePBHW3@ʼm)tL &7	xL*I+BIfdk8UY64cN)&4:0ꆍ9n-\\ˢZ%j]:.E/pfHΚ	ᯢ!ԘIEd\$PCTɃvbU8,6<'k\"nC#;K]mMu&\"KAԼFpP	A!UD'XjXG^\raҲ'- VE0#2|	mr#,K̑4WPNcCQ[p #rJܲE~uTZȐFNH́F(İJ襱j8M\r\$M\\J=\$sv/AKG3Rd.2̷o\rd:VRxzH34ZbhI68H\\\n<)Jt`]yw(\\7`Xƒ4}/\0\0ɩ7wa*VCcq\"J\$oaZ\$]敯.f6W\\/!8I	<#P'a \$,BvWM(E:O\0Ro:<Z«LlhLR>eެ-Gi68^'YО>[IC,;T0)OUEh6]eGv ;`x6O*%s*Td}5\0Q\"PV*3٘\$Qdd2v[;>t@PH@1'YѦ,.90`hoLzViw#j~Hs[t5jfE[\$W?\$%貗nDi8ɖ]4%#8\$4Kn4S}&ӹ!YZ8gOp*tl˱4wE\nUYD@PNF&Fo`ҽlBT\n-TTJ-HʔUܵSb<äW0/)15PJO6)s^h4B9#6|a6l8|w.;(iGHϱ#{	{Q';fΫfR=W1{w<|YZ?&}Zkw\$!ƝIq\nicQ7bMYа6(a.C,!cHM4D	D<#T;\0fFh\rXr6ffj7&pEj.dvKd.Lg\rMLG>Њ*2kV@lDIJ2LBx/scf\rns`K-l*i:>nwg>jBb`dVB \"rB,Ȋ?@.\rN\r`wMG\$v\rRE\rbhQ\nyo\rP\\:>e'HqhnT{rlLhWt1b{h>]O\$6Qzdq0`欑\nԍMѠL0wRDcXZ#Cimn\nr&\r%jbR\"H\"3-#.p\$*^d\rq͈3>a14d qOfMn\\7FLx8JcN\"p;L8qGXn`cn%&mh5}qEq'@z2'r1(T䲈nr4d3N5M\$*芌f;g0g,,S'r\rO{ro.XlnRO-25YQ|*|\\Mr12S23 |\r-g227/<731r}`,GsbSLSe3\$i2q74H/'7Vnw7Ѫu8Q:O&99f9WSt4LR'.A,K[%e3=F=#~I;=7310	gon#ZG6,zdn&<xä߃\"A\rpdp'^\n-A)&c=/TK7:M0L)\n2Dl\rV\"왯(`\npj4;\n[*1xe@4j{J!tAD^#\"6v%hK*Cr;jmV4jo!nܔ\nk@1Lf,f\0@C,l@ -cp̥8dDsC3jzёL3d15E@1S\nz}S%URܪz;&DU9qEn~Fc-^9znDr'u%SU\\}D\$abF8\"t2A&'2I0W\"DqFB	T	zk&";break;case"vi":$f="%(ha\rq]Ҍ]c\rTnAjhc,\"	b5H؉q	Nd)	R!/5!PäA&n&0cAn810Lthb*L QCH1b	,Q^cM3s2Nr=v8]&-.c\rF 1XE)C	nz477JqmU`-M@daH9[׵\rH!y i=Yd\$IXWxmmtWjYoqwD:<6\nc4`P7e'@@#hߢ,*X7@9Cx䐈0K2\r(	:M;#@\\j LäJޔ)l\")qvOƎc0I~lK&B#%\0A:0 K P5\rhA98*\rs)'BB~MPvSC@9p6uCD\0t92Z<!iJ NFE	[((Rf1B\"]cC! ŵAZ8B;&vHܵ(Ry<\r## DmcU1q!Ep@;(p:z9XоD49Ax^;py^<L3(x2t\r30\r#x|,g6\$Zk8JFt6ojɆV]j\"mۿP0Cv#0<(P93Zj@N]į3(1\r0iLD'qQh*ư*lp\0@R TD6e^<:|n/\$-*P\"㵱44n}(S(wh\nbc@;E*ESۿ!%iط [~B&K`OCC3bmâ 's`u6EAI	R|RqQA! Hߣ'@6U@;/:@\$m!2F3P!2Sb\r%d#jU,2F0qw`@\nrLoiOT\rV!-H a\"Лri|+,!;/,+Չtq\$k&&\0xhL.֌r9rbAȽX cnI2D3(쩖M\\ً3F\nfrD!qɰ@e@G!!-`E;	<A'VNY\\Ds93dc2,͝0|mйqJ(HZm98Hs@#h=JC\r护n37֮ޞj\r\$8H]\rХH3NPYsJ),ԺT%(t-ѰP	@a \"\\ta4pƇHi@3VQpF\\Oe( )03&R+A#[\$222\nIcLF\03/Ȋ\0JD\0 (CMN>rA]PUY0[qXBLS.лhڡ<s\$ \"vҚBdM2ѵ+y'\nII aGIlnn:ӬfDk۰\\+qPqN9?k4^xS\nv&H\\A*<Edqw\nN&C}\$,Ps]\$H!JBK1*YC{)6e,Ķ*F۩3+;)`*!D,nȽtAa	s2nC!x\nZ<UsSB5wrOzOth@q+ <k\"pKAZ>@ z4Ugkv.^Akͷ,@iN\0YH5^ih0I%%e#|\0&єj߆rn-B7=\"\$hX+K+\"i]bNfP_-2S)vocDfFVzH2svWl!jC|]|\$C%5GBC/vBzfʬ(C/p%h|J/%8LL5ʈ\$j7)	~X6Xq\$i#EW9u%BT!\$J0_hw<\\倻PeD?)\0pˤXFvdbfcK)E.hDVT!\$2wIu)RԄ>bL.\" j\r%FJ\n̣\"XWk#&P0e6t2ê20N0NTc vc(-B7ςPϮ,\0,k>Zljϧhn<inMMD#mH. ڳ*20\"BP\"tf!F̈& ѯ8?DBʰ\r- D6'@~By\"bA)wBq-TH-4q0YppbC)\r;MB0C\" .\rt'2\r\0P-jzl#h\\\rqE\nP2	H2m			\0ѫqϯSb.!eeo\$Jbb'&7mPqQ5\"B !q#6RqE\r,9o4ZX]o1+.c+!QV521##\$F+-\$)F(ːr pp*g\n:V#!2'!,э NlF*l]FM.-u..ܸp/hi-/K,l!N<6=䢗X/P\",?ƶbȄFⴉ/34%/\r5	,Lǖ5B0Sk5P\";(ܡ_ ,,jh_pt`Ӑ4]I7-\$4<CdSS<NVI/fCJHS\rsF`\"s\n\n>bo\$1\\VS?2Bق:N%\$)SU4,1#CCgJp]B.O%N2(L&WBt^ִc<ewFPD素BM36::;EUIeޗR@M\n!Q@\$8V\"^I\nKB	ĐCMJJfmO0M%:dxA\rx\"\nZԑ֯=RlZ:L&RLZ`:s^&'iDBci7\n8jN]-ŸdmP%{mO+1T9M§\0M/Gky(\"K6>K \"ZӲ -QZC[*ն&.<mM',VXu`x\"jR^:m*%Ypc8!^K!ԝ&;1a%YK_k1PPD'V@\0+BHrC4	.A-b0YcY2M,s؂&eK3KFsmf	]%E\rҧ:\"";break;case"zh":$f="%:\$\nr.r/dȻ[8 S8rNT*Ю\\9HHZ1!SVJ@%9Ql]m	FU*qQ;Cf4)ΔT9w:vO\"%CBrixM3s2bV}\n%[L`*9>S؜%yP⣎uYоHQ)\":VdjdK:tRd(t/0Vc5_hIG*\\?M[h9ͣQpCqH\nt+ծB_cS>R\$2{T-&ġ^s	W9@@nr?JHkIRr\$M'\rz哸@łK*<OĹltV9XS!%]	6r^.88J|rYn(\$QBr%@4\r7#h-C9A=7cX:*´[Bi*ʾ^l SS: h7]	9IAN_sdBp.%I`x0B3:xi\rKS!t3(;c ^'S\nt3t^0A@6YRsW0_!tg1<B9(\\4_an ̯v]`\r[Z1H@PJ2E#p\n:YJtQE)DO^xUեqHr~^7B:H9i1\"B&sr:G4քܨ;SFr섖árHJvTCHT8)VB&dhqvĤ^>#~;R2\\D^hR=QSGC܆HAKV]%h ^4CO_N]8Ԧ=_'rp\rXwJ:?9C^a703#/|/AN^1a,Ey K@TLHe46@X(L_At!@T/!L)VSTpD9!K\rvP0F<HB|1ei?5O`(+\nS*\rx\0A2\$IZV,5JY=h0VV[An-^a.p|k\rجŸD,Ih\"tD[K_&,r0Gq`[H!%}Hq&EGd3,`ʲRYAi-EV[|2跃|[JLY1*I8cX.D(Z	\"%bJtЉs	1I(bG8\n4F+ǎ+PDS4G\"QNfa2Zc;BͤS\0\rE#G1Q!	ĐD(bPpD(\"]WFkC\0gܐRe?\ny\r1	j+8t!1?r]Ԉ@RJ_BHY\"16!-|#ĀRRNJIZ7¸ZւN>P\$P6shEtT[ʎWq\0I\"\nNAf(R2GT*H)Yx<	Xd[,?![eq3:E\0Ҥ#@`0,-zK΍M5&*Y\0a(X ('@BD!P\"(L!{-Tj	%E,Dȫx%;撡p\"(/aN.q\$bh/tÕd/۹wb K8&	VGzӲ`AHn[XB	R	UQyp9noBw'[dЉ8JqdI=x޵+(:uOCt8(JfszpͶ\"πbIx1Hi\\3 J[rju0rօ#Ha6\0st[(	\r!BuE1רYvM!D.!T-UA\0b&0M&HԨTot9<Q[6!C	Dkh/!\0Lx \"(5-\"0sDpKb9gu\n6b&ME#c+܇>s[}F@DU^ոe]Z^-9\nָ.+w`C#IC\\MtU\"=aoMYb3Kr-#Bo)XhD<E_Ҏ1Jbi\r+[^?s6L8[٘c~pYzalU``m\rٴ6-AQX\0&_hLi}?qG?)XA[_,tGH\0AozP1hc(GpwGx1.Ne\n\\+-\r\0'xeI,Hh)	%kX\",`&\\!hBk>ʩO!!(iyFc\r|yk\$~\rA}ͼF&OJjH<x\"2pb}u0Obocqb@2\"fJH.*&\"wfFw%))Vҕ,6xnv80a=p\0h|ɑ_/Arw]mqQmm\nX-&|`\r/ `ȂSo[@M)~R\nѺN\rM&q\"2,M24DR+\$\$HQMBRX2`1`.PoܥL6A>.P8Nn:l(\$1\n!\\(m2LRO0[nba!z;Kk>dEΝ	)\nZRNyUj4F!b#f1ra!(r*!^42,4\rjW\r!^MzjzK1O5-iLK:!\0002/\n5X3aI)m89\r2x(=9P]8ʎk\rq5f54-r!tp~IN\0 \r !A,#G7#&׭j\$%7Ӏy32ԚO>{8^1o*td \"\$ĂAL";break;case"zh-tw":$f="%:\$\ns.eUȸE9PK72(Ph)ʅ@:i	aJe R)ܫ{	Nd(vQDCѮUjaʜTOABPb2ar\nr/WtЀBT)*yX^%ӕ\\r|I7FS	99STB\$rNuMТUP)&9G'ܪ{;ds'.̖L9ho^^+ieD:=.RFR%F{A,\\{Xs&֚u\0rzM6U!TDǇEtl6N_'zV~NZRZRGATO\$DЭ8UJt|R)N|rEZsiZy	V+Lr>[!kg1')T'9jB0,1/:8Dp.R\$LGI,Ii.JJő[e|kzDYYrQbB%@4\r7#h-C9AK7cX:#ft+[E*LhJ\\=i[B6#p9% GEEDU7u\\``x0B3:xy\rbu.3(; ^'AT\nt[Ԕex!t%ĄC9H]ID@EtP\\ K;n_odפ]1H@PJ2:@ea	7dkʳESpijd86f;5v9d:<C)xGdrCHreBq^1IDZP@lg1pM	j^B<J!Ll*8߸qs(^aDsJY(\\3uSeQ\r_y1/ιT|j<]ĲrOv[#r9tzG?u|GYzGhꣁa%:P\0a9 X0P(9pf\r!X2\0 X\0qL L) K-Q?I bZ\$2>BJ)3P8M#\\&@)JZ%f.&s	Q.sZVc8	:9iC Q\"FLpA/P_#!tAP\"Qf!Eq6P H\"*]+vú^)}%xd:@V\"@XCdD	t00Ü	F1ģԊإj\"9.0*]Kw/_+~>tɕ\"ƄK3:p-\\\nŘe(%T\nHk&bX9c܅2Mq |	0E!	G,q|[eI#nN8p<-h- \n (Cw)aMUG	#:\nTp,8f>B[HZ\"N+QJҭG*T0< !b,T-&58V`@R:Dk<+xu	XW\"lXfX953a\\-b踎d֔\0L	F\$r{@(iAa<'>S=\"r{ab xq1E\0\0  y\"jz3m|)[*,3Cb\0MF0+0!pJMCUcfXr#E\0U\n @ &\\|Z(b@FrFG{J&FEӧmlٛSn~@\$.^e!,	NkNu4JQ\nn\0ײ*ߣ;y@**9Ă/|6\"\0tb\0sRk4\"	ru|cU2\$JW2KNVu+XWw&4TV\\fҺ@#= װei6PαC\ne2&pX<jʌS\"32%fBhhX:@@xm!Q7\$9.x~oⱋ0!\$vE8˷;_BT;D!X_\rh4S]P~Su]v[e4ҼlAnMѐ\$6=|zC	\r0eָ	8Rh)۬`@Zt壡z,GH\nk!\"ؤΚbKwm=\\NDD?XN(/#PޗySm믥dDy2FM\$G@@. \"Ƀ7_\\c\"\rE0~(J&<Ƞő:fўRKktS:ߕ]*beٹ]lWeapĄYaP؄0\0~Aj5̩\0<B<.eߡxR,B \rR\r\r\rdgHt=\0MnV#\"1LЗ6vʌTP	xaH\n\rz'ºA\"A|'j\$N8.	`Ō\\,aJx\nQ2,\"^G!CP;4Œ>vLCƮ\\*:|5J pL!(F\$ǓH(:+c>à:N&6\$J0f&f;ѴݑP<f}AmN#Q}iasgFe^n:-b^C(Gg^(!\".#R8.~n&ye%\$.FrJrZbE<X\"qY1حG2=%'бRzG#2('aI'0*x&2 T%/ڨ \0C+R\rR(XR\rr_@ڎ>&RRƶ2E#~;s1\r\nSs\"LL'dBdk4b1D+R2/qM49D j\0ơ`PRC IKDB@az!pn!\n/HnHAGA6Ch\r<?n%m\$ئIV\nZF}l!cdkBjFbm2bVČCG\$,?0a҃Dy\"g,W\0z,G:!99*7H\nZf\0GarQ\"o#S0}LL, 6)n\n`ژTR+#INn !RTl~tuGثvlAvT9b&3b<)8-m3~";break;}$ij=array();foreach(explode("\n",lzw_decompress($f))as$X)$ij[]=(strpos($X,"\t")?explode("\t",$X):$X);return$ij;}abstract
class
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($N,$V,$F);abstract
function
quote($Q);abstract
function
select_db($Pb);abstract
function
query($H,$sj=false);function
multi_query($H){return$this->multi=$this->query($H);}function
store_result(){return$this->multi;}function
next_result(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($oc,$V,$F,array$gg=array()){$gg[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$gg[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($oc,$V,$F,$gg);}catch(\Exception$Ic){return$Ic->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($Q){return$this->pdo->quote($Q);}function
query($H,$sj=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(23);return
false;}$this->store_result($I);return$I;}function
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
true;}function
next_result(){$I=$this->multi;if(!is_object($I))return
false;$I->_offset=0;return@$I->nextRowset();}}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($yf){$J=$this->fetch($yf);return($J?array_map(array($this,'unresource'),$J):$J);}private
function
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
seek($C){for($t=0;$t<$C;$t++)$this->fetch();}}}function
add_driver($u,$B){SqlDriver::$drivers[$u]=$B;}function
get_driver($u){return
SqlDriver::$drivers[$u];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$delimiter=";";var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
function
connect($N,$V,$F){$g=new
Db;return($g->attach($N,$V,$F)?:$g);}function
__construct(Db$g){$this->conn=$g;}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$n){}function
unconvertFunction(array$n){}function
select($R,array$M,array$Z,array$xd,array$ig=array(),$z=1,$D=0,$bh=false){$ve=(count($xd)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$xd,$ig,$z,$D);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$xd&&$ve&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($xd&&$ve?"\nGROUP BY ".implode(", ",$xd):"").($ig?"\nORDER BY ".implode(", ",$ig):""),$z,($D?$z*$D:0),"\n");$si=microtime(true);$J=$this->conn->query($H);if($bh)echo
adminer()->selectQuery($H,$si,!$J);return$J;}function
delete($R,$jh,$z=0){$H="FROM ".table($R);return
queries("DELETE".($z?limit1($R,$H,$jh):" $H$jh"));}function
update($R,array$O,$jh,$z=0,$Vh="\n"){$Nj=array();foreach($O
as$y=>$X)$Nj[]="$y = $X";$H=table($R)." SET$Vh".implode(",$Vh",$Nj);return
queries("UPDATE".($z?limit1($R,$H,$jh,$Vh):" $H$jh"));}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$L,array$G){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($H,$Ui){}function
convertSearch($v,array$X,array$n){return$v;}function
value($X,array$n){return(method_exists($this->conn,'value')?$this->conn->value($X,$n):$X);}function
quoteBinary($Hh){return
q($Hh);}function
warnings(){}function
tableHelp($B,$ze=false){}function
inheritsFrom($R){return
array();}function
inheritedTables($R){return
array();}function
partitionsInfo($R){return
array();}function
hasCStyleEscapes(){return
false;}function
engines(){return
array();}function
supportsIndex(array$S){return!is_view($S);}function
indexAlgorithms(array$Bi){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 = t.TABLE_NAME":"")."
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(){$J=array();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}}return$J;}}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($p,$V,$F){$this->link=new
\SQLite3($p);$Qj=$this->link->version();$this->server_info=$Qj["versionString"];return'';}function
query($H,$sj=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
false;}elseif($I->numColumns())return
new
Result($I);$this->affected_rows=$this->link->changes();return
true;}function
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;}function
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
__destruct(){$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){abstract
class
SqliteDb
extends
PdoDb{var$extension="PDO_SQLite";function
attach($p,$V,$F){return$this->dsn(DRIVER.":$p","","");}}}if(class_exists('Adminer\SqliteDb')){class
Db
extends
SqliteDb{function
attach($p,$V,$F){parent::attach($p,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
select_db($p){if(is_readable($p)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$p)?$p:dirname($_SERVER["SCRIPT_FILENAME"])."/$p")." AS a"))return!self::attach($p,'','');return
false;}}}class
Driver
extends
SqlDriver{static$extensions=array("SQLite3","PDO_SQLite");static$jush="sqlite";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,$F){if($F!="")return
lang(24);return
parent::connect(":memory:","","");}function
__construct(Db$g){parent::__construct($g);if(min_version(3.31,0,$g))$this->generated=array("STORED","VIRTUAL");}function
structuredTypes(){return
array_keys($this->types[0]);}function
insertUpdate($R,array$L,array$G){$Nj=array();foreach($L
as$O)$Nj[]="(".implode(", ",$O).")";return
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$Nj));}function
tableHelp($B,$ze=false){if($B=="sqlite_sequence")return"fileformat2.html#seqtab";if($B=="sqlite_master")return"fileformat2.html#$B";}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),$df);return
array_combine($df[2],$df[2]);}function
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$n)$J[$R][]=$n;}return$J;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
get_databases($id){return
array();}function
limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Vh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$Vh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$Vh."LIMIT 1)");}function
db_collation($k,$lb){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 = 'sqlite_sequence'), name");}function
count_tables($j){return
array();}function
table_status($B=""){$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K){$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($B!=""?" WHERE name = ".q($B):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$B=$K["name"];$U=strtolower($K["type"]);$l=$K["dflt_value"];$J[$B]=array("field"=>$B,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$l,$A)?str_replace("''","'",$A[1]):($l=="NULL"?null:$l)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($G!="")$J[$G]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$B]["auto_increment"]=true;$G=$B;}}$mi=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$v='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$v.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$mi,$df,PREG_SET_ORDER);foreach($df
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));if($J[$B])$J[$B]["collation"]=trim($A[3],"'");}preg_match_all('~'.$v.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$mi,$df,PREG_SET_ORDER);foreach($df
as$A){$B=str_replace('""','"',preg_replace('~^"|"$~','',$A[1]));$J[$B]["default"]=$A[3];$J[$B]["generated"]=strtoupper($A[4]);}return$J;}function
indexes($R,$h=null){$h=connection($h);$J=array();$mi=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$h);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$mi,$A)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$A[1],$df,PREG_SET_ORDER);foreach($df
as$A){$J[""]["columns"][]=idf_unescape($A[2]).$A[4];$J[""]["descs"][]=(preg_match('~DESC~i',$A[5])?'1':null);}}if(!$J){foreach(fields($R)as$B=>$n){if($n["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($B),"lengths"=>array(),"descs"=>array(null));}}$qi=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$h);foreach(get_rows("PRAGMA index_list(".table($R).")",$h)as$K){$B=$K["name"];$w=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$w["lengths"]=array();$w["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($B).")",$h)as$Gh){$w["columns"][]=$Gh["name"];$w["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($B).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$qi[$B],$uh)){preg_match_all('/("[^"]*+")+( DESC)?/',$uh[2],$df);foreach($df[2]as$y=>$X){if($X)$w["descs"][$y]='1';}}if(!$J[""]||$w["type"]!="UNIQUE"||$w["columns"]!=$J[""]["columns"]||$w["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$B))$J[$B]=$w;}return$J;}function
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$q=&$J[$K["id"]];if(!$q)$q=$K;$q["source"][]=$K["from"];$q["target"][]=$K["to"];}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($B))));}function
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
information_schema($k){return
false;}function
error(){return
h(connection()->error);}function
check_sqlite_name($B){$Qc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Qc)\$~",$B)){connection()->error=lang(25,str_replace("|",", ",$Qc));return
false;}return
true;}function
create_database($k,$c){if(file_exists($k)){connection()->error=lang(26);return
false;}if(!check_sqlite_name($k))return
false;try{$_=new
Db();$_->attach($k,'','');}catch(\Exception$Ic){connection()->error=$Ic->getMessage();return
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
true;}function
drop_databases($j){connection()->attach(":memory:",'','');foreach($j
as$k){if(!@unlink($k)){connection()->error=lang(26);return
false;}}return
true;}function
rename_database($B,$c){if(!check_sqlite_name($B))return
false;connection()->attach(":memory:",'','');connection()->error=lang(26);return@rename(DB,$B);}function
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
alter_table($R,$B,$o,$kd,$qb,$yc,$c,$Ba,$E){$Fj=($R==""||$kd);foreach($o
as$n){if($n[0]!=""||!$n[1]||$n[2]){$Fj=true;break;}}$b=array();$tg=array();foreach($o
as$n){if($n[1]){$b[]=($Fj?$n[1]:"ADD ".implode($n[1]));if($n[0]!="")$tg[$n[0]]=$n[1][0];}}if(!$Fj){foreach($b
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
false;}if($R!=$B&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)))return
false;}elseif(!recreate_table($R,$B,$b,$tg,$kd,$Ba))return
false;if($Ba){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($B));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($B).", $Ba)");queries("COMMIT");}return
true;}function
recreate_table($R,$B,array$o,array$tg,array$kd,$Ba="",$x=array(),$kc="",$la=""){if($R!=""){if(!$o){foreach(fields($R)as$y=>$n){if($x)$n["auto_increment"]=0;$o[]=process_field($n,$n);$tg[$y]=idf_escape($y);}}$ah=false;foreach($o
as$n){if($n[6])$ah=true;}$mc=array();foreach($x
as$y=>$X){if($X[2]=="DROP"){$mc[$X[1]]=true;unset($x[$y]);}}foreach(indexes($R)as$De=>$w){$e=array();foreach($w["columns"]as$y=>$d){if(!$tg[$d])continue
2;$e[]=$tg[$d].($w["descs"][$y]?" DESC":"");}if(!$mc[$De]){if($w["type"]!="PRIMARY"||!$ah)$x[]=array($w["type"],$De,$e);}}foreach($x
as$y=>$X){if($X[0]=="PRIMARY"){unset($x[$y]);$kd[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$De=>$q){foreach($q["source"]as$y=>$d){if(!$tg[$d])continue
2;$q["source"][$y]=idf_unescape($tg[$d]);}if(!isset($kd[" $De"]))$kd[]=" ".format_foreign_key($q);}queries("BEGIN");}$Wa=array();foreach($o
as$n){if(preg_match('~GENERATED~',$n[3]))unset($tg[array_search($n[0],$tg)]);$Wa[]="  ".implode($n);}$Wa=array_merge($Wa,array_filter($kd));foreach(driver()->checkConstraints($R)as$Ya){if($Ya!=$kc)$Wa[]="  CHECK ($Ya)";}if($la)$Wa[]="  CHECK ($la)";$Oi=($R==$B?"adminer_$B":$B);if(!queries("CREATE TABLE ".table($Oi)." (\n".implode(",\n",$Wa)."\n)"))return
false;if($R!=""){if($tg&&!queries("INSERT INTO ".table($Oi)." (".implode(", ",$tg).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($tg)))." FROM ".table($R)))return
false;$oj=array();foreach(triggers($R)as$mj=>$Vi){$lj=trigger($mj,$R);$oj[]="CREATE TRIGGER ".idf_escape($mj)." ".implode(" ",$Vi)." ON ".table($B)."\n$lj[Statement]";}$Ba=$Ba?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$B&&!queries("ALTER TABLE ".table($Oi)." RENAME TO ".table($B)))||!alter_indexes($B,$x))return
false;if($Ba)queries("UPDATE sqlite_sequence SET seq = $Ba WHERE name = ".q($B));foreach($oj
as$lj){if(!queries($lj))return
false;}queries("COMMIT");}return
true;}function
index_sql($R,$U,$B,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($B!=""?$B:uniqid($R."_"))." ON ".table($R)." $e";}function
alter_indexes($R,$b){foreach($b
as$G){if($G[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($T){return
apply_queries("DELETE FROM",$T);}function
drop_views($Sj){return
apply_queries("DROP VIEW",$Sj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
move_tables($T,$Sj,$Mi){return
false;}function
trigger($B,$R){if($B=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$v='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$nj=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$v\\s*(".implode("|",$nj["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($v))?\\s+ON\\s*$v\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($B)),$A);$Qf=$A[3];return
array("Timing"=>strtoupper($A[1]),"Event"=>strtoupper($A[2]).($Qf?" OF":""),"Of"=>idf_unescape($Qf),"Trigger"=>$B,"Statement"=>$A[4],);}function
triggers($R){$J=array();$nj=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$nj["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$A);$J[$K["name"]]=array($A[1],$A[2]);}return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
begin(){return
queries("BEGIN");}function
last_id($I){return
get_val("SELECT LAST_INSERT_ROWID()");}function
explain($g,$H){return$g->query("EXPLAIN QUERY PLAN $H");}function
found_rows($S,$Z){}function
types(){return
array();}function
create_sql($R,$Ba,$wi){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$B=>$w){if($B=='')continue;$J
.=";\n\n".index_sql($R,$w['type'],$B,"(".implode(", ",array_map('Adminer\idf_escape',$w['columns'])).")");}return$J;}function
truncate_sql($R){return"DELETE FROM ".table($R);}function
use_sql($Pb,$wi=""){}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(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$B=$K["name"];if($B!="pragma_list"&&$B!="compile_options"){$J[$B]=array($B,'');foreach(get_rows("PRAGMA $B")as$K)$J[$B][1].=implode(", ",$K)."\n";}}return$J;}function
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$fg)$J[]=explode("=",$fg,2)+array('','');return$J;}function
convert_field($n){}function
unconvert_field($n,$J){return$J;}function
support($Vc){return
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Vc);}}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($Dc,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
attach($N,$V,$F){$k=adminer()->database();set_error_handler(array($this,'_error'));list($Nd,$Rg)=host_port(addcslashes($N,"'\\"));$this->string="host='$Nd'".($Rg?" port='$Rg'":"")." user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$ri=adminer()->connectSsl();if(isset($ri["mode"]))$this->string
.=" sslmode='".$ri["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$k!=""){$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$n){return($n["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
select_db($Pb){if($Pb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Pb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
query($H,$sj=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
warnings(){return
h(pg_last_notice($this->link));}function
copyFrom($R,array$L){$this->error='';set_error_handler(function($Dc,$m){$this->error=(ini_bool('html_errors')?html_entity_decode($m):$m);return
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
Result{var$num_rows;private$result,$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
fetch_assoc(){return
pg_fetch_assoc($this->result);}function
fetch_row(){return
pg_fetch_row($this->result);}function
fetch_field(){$d=$this->offset++;$J=new
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$U=pg_field_type($this->result,$d);$J->type=(preg_match(number_type(),$U)?0:15);$J->charsetnr=($U=="bytea"?63:0);return$J;}function
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
PgsqlDb
extends
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
attach($N,$V,$F){$k=adminer()->database();list($Nd,$Rg)=host_port(addcslashes($N,"'\\"));$oc="pgsql:host='$Nd'".($Rg?" port='$Rg'":"")." client_encoding=utf8 dbname='".($k!=""?addcslashes($k,"'\\"):"postgres")."'";$ri=adminer()->connectSsl();if(isset($ri["mode"]))$oc
.=" sslmode='".$ri["mode"]."'";return$this->dsn($oc,$V,$F);}function
select_db($Pb){return(adminer()->database()==$Pb);}function
query($H,$sj=false){$J=parent::query($H,$sj);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
warnings(){}function
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
Db
extends
PgsqlDb{function
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$A)){$L=explode("\n",$A[2]);$this->affected_rows=count($L);return$this->copyFrom($A[1],$L);}return
parent::multi_query($H);}}}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())";static
function
connect($N,$V,$F){$g=parent::connect($N,$V,$F);if(is_string($g))return$g;$Qj=get_val("SELECT version()",0,$g);$g->flavor=(preg_match('~CockroachDB~',$Qj)?'cockroach':'');$g->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$Qj);if(min_version(9,0,$g))$g->query("SET application_name = 'Adminer'");if($g->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$g;}function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),lang(28)=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),lang(29)=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),lang(30)=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),lang(31)=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),lang(32)=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$g)){$this->types[lang(29)]["json"]=4294967295;if(min_version(9.4,0,$g))$this->types[lang(29)]["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,$g))$this->generated=array("STORED");$this->partitionBy=array("RANGE","LIST");if(!$g->flavor)$this->partitionBy[]="HASH";}function
enumLength(array$n){$_c=$this->types[lang(6)][$n["type"]];return($_c?type_values($_c):"");}function
setUserTypes($rj){$this->types[lang(6)]=array_flip($rj);}function
insertReturning($R){$Ba=array_filter(fields($R),function($n){return$n['auto_increment'];});return(count($Ba)==1?" RETURNING ".idf_escape(key($Ba)):"");}function
insertUpdate($R,array$L,array$G){foreach($L
as$O){$_j=array();$Z=array();foreach($O
as$y=>$X){$_j[]="$y = $X";if(isset($G[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_j)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
slowQuery($H,$Ui){$this->conn->query("SET statement_timeout = ".(1000*$Ui));$this->conn->timeout=1000*$Ui;return$H;}function
convertSearch($v,array$X,array$n){$Ri="char|text";if(strpos($X["op"],"LIKE")===false)$Ri
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Ri~",$n["type"])?$v:"CAST($v AS text)");}function
quoteBinary($Hh){return"'\\x".bin2hex($Hh)."'";}function
warnings(){return$this->conn->warnings();}function
tableHelp($B,$ze=false){$Ve=array("information_schema"=>"infoschema","pg_catalog"=>($ze?"view":"catalog"),);$_=$Ve[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$B).".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){$K=(min_version(10)?$this->conn->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($R))->fetch_assoc():null);if($K){$_a=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = $K[partrelid] AND attnum IN (".str_replace(" ",", ",$K["partattrs"]).")");$Qa=array('h'=>'HASH','l'=>'LIST','r'=>'RANGE');return
array("partition_by"=>$Qa[$K["partstrat"]],"partition"=>implode(", ",array_map('Adminer\idf_escape',$_a)),);}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$Bi){static$J=array();if(!$J)$J=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$J;}function
supportsIndex(array$S){return$S["Engine"]!="view";}function
hasCStyleEscapes(){static$Sa;if($Sa===null)$Sa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Sa;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
get_databases($id){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Vh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$Vh):" $H".(is_view(table_status1($R))?$Z:$Vh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$Vh."LIMIT 1)"));}function
db_collation($k,$lb){return
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($k));}function
logged_user(){return
get_val("SELECT user");}function
tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$H
.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$H
.="
ORDER BY 1";return
get_key_vals($H);}function
count_tables($j){$J=array();foreach($j
as$k){if(connection()->select_db($k))$J[$k]=count(tables_list());}return$J;}function
table_status($B=""){static$Gd;if($Gd===null)$Gd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
	relname AS \"Name\",
	CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\"".($Gd?",
	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\",
	".(min_version(10)?"relispartition::int AS partition,":"")."
	current_schema() AS nspname
FROM pg_class c
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
AND relnamespace = ".driver()->nsOid."
".($B!=""?"AND relname = ".q($B):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return
in_array($S["Engine"],array("view","materialized view"));}function
fk_support($S){return
true;}function
fields($R){$J=array();$ta=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
	a.attname AS field,
	format_type(a.atttypid, a.atttypmod) AS full_type,
	pg_get_expr(d.adbin, d.adrelid) AS default,
	a.attnotnull::int,
	i.indrelid AS primary,
	col_description(a.attrelid, a.attnum) AS comment".(min_version(10)?",
	a.attidentity".(min_version(12)?",
	a.attgenerated":""):"")."
FROM pg_attribute a
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$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$A);list(,$U,$Re,$K["length"],$ma,$xa)=$A;$K["length"].=$xa;$ab=$U.$ma;if(isset($ta[$ab])){$K["type"]=$ta[$ab];$K["full_type"]=$K["type"].$Re.$xa;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$Re.$ma.$xa;}if(in_array($K['attidentity'],array('a','d')))$K['default']='GENERATED '.($K['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$K["generated"]=($K["attgenerated"]=="s"?"STORED":"");$K["null"]=!$K["attnotnull"];$K["auto_increment"]=$K['attidentity']||preg_match('~^nextval\(~i',$K["default"])||preg_match('~^unique_rowid\(~',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(!$K['generated']&&preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$A))$K["default"]=($A[1]=="NULL"?null:idf_unescape($A[1]).$A[2]);$J[$K["field"]]=$K;}return$J;}function
indexes($R,$h=null){$h=connection($h);$J=array();$Ei=driver()->tableOid($R);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ei AND attnum > 0",$h);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
FROM pg_index
JOIN pg_class ON indexrelid = oid
JOIN pg_am ON pg_am.oid = pg_class.relam
WHERE indrelid = $Ei
ORDER BY indisprimary DESC, indisunique DESC",$h)as$K){$vh=$K["relname"];$J[$vh]["type"]=($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX"));$J[$vh]["columns"]=array();$J[$vh]["descs"]=array();$J[$vh]["algorithm"]=$K["amname"];$J[$vh]["partial"]=$K["partial"];$fe=preg_split('~(?<=\)), (?=\()~',$K["indexpr"]);foreach(explode(" ",$K["indkey"])as$ge)$J[$vh]["columns"][]=($ge?$e[$ge]:array_shift($fe));foreach(explode(" ",$K["indoption"])as$he)$J[$vh]["descs"][]=(intval($he)&1?'1':null);$J[$vh]["lengths"]=array();}return$J;}function
foreign_keys($R){$J=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$K){$K['deferrable']=($K['deferrable']?'':'NOT ').'DEFERRABLE'.($K['deferred']?' INITIALLY DEFERRED':'');if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$A)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$A[2],$bf)){$K['ns']=idf_unescape($bf[2]);$K['table']=idf_unescape($bf[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$A[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$A[4],$bf)?$bf[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$A[4],$bf)?$bf[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
view($B){return
array("select"=>trim(get_val("SELECT pg_get_viewdef(".driver()->tableOid($B).")")));}function
collations(){return
array();}function
information_schema($k){return
get_schema()=="information_schema";}function
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$A))$J=$A[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($A[3]).'})(.*)~','\1<b>\2</b>',$A[2]).$A[4];return
nl_br($J);}function
create_database($k,$c){return
queries("CREATE DATABASE ".idf_escape($k).($c?" ENCODING ".idf_escape($c):""));}function
drop_databases($j){connection()->close();return
apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');}function
rename_database($B,$c){connection()->close();return
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($B));}function
auto_increment(){return"";}function
alter_table($R,$B,$o,$kd,$qb,$yc,$c,$Ba,$E){$b=array();$ih=array();if($R!=""&&$R!=$B)$ih[]="ALTER TABLE ".table($R)." RENAME TO ".table($B);$Wh="";foreach($o
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$b[]="DROP $d";else{$Mj=$X[5];unset($X[5]);if($n[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])$ih[]="ALTER TABLE ".table($B)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$Xh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($Xh).")":"DROP DEFAULT"));if(isset($X[6]))$Wh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($Xh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($n[0]!=""||$Mj!="")$ih[]="COMMENT ON COLUMN ".table($B).".$X[0] IS ".($Mj!=""?substr($Mj,9):"''");}}$b=array_merge($b,$kd);if($R==""){$P="";if($E){$gb=(connection()->flavor=='cockroach');$P=" PARTITION BY $E[partition_by]($E[partition])";if($E["partition_by"]=='HASH'){$Hg=+$E["partitions"];for($t=0;$t<$Hg;$t++)$ih[]="CREATE TABLE ".idf_escape($B."_$t")." PARTITION OF ".idf_escape($B)." FOR VALUES WITH (MODULUS $Hg, REMAINDER $t)";}else{$Zg="MINVALUE";foreach($E["partition_names"]as$t=>$X){$Y=$E["partition_values"][$t];$Dg=" VALUES ".($E["partition_by"]=='LIST'?"IN ($Y)":"FROM ($Zg) TO ($Y)");if($gb)$P
.=($t?",":" (")."\n  PARTITION ".(preg_match('~^DEFAULT$~i',$X)?$X:idf_escape($X))."$Dg";else$ih[]="CREATE TABLE ".idf_escape($B."_$X")." PARTITION OF ".idf_escape($B)." FOR$Dg";$Zg=$Y;}$P
.=($gb?"\n)":"");}}array_unshift($ih,"CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");}elseif($b)array_unshift($ih,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($Wh)array_unshift($ih,$Wh);if($qb!==null)$ih[]="COMMENT ON TABLE ".table($B)." IS ".q($qb);foreach($ih
as$H){if(!queries($H))return
false;}return
true;}function
alter_indexes($R,$b){$i=array();$jc=array();$ih=array();foreach($b
as$X){if($X[0]!="INDEX")$i[]=($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")$jc[]=idf_escape($X[1]);else$ih[]="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($i)array_unshift($ih,"ALTER TABLE ".table($R).implode(",",$i));if($jc)array_unshift($ih,"DROP INDEX ".implode(", ",$jc));foreach($ih
as$H){if(!queries($H))return
false;}return
true;}function
truncate_tables($T){return
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function
drop_views($Sj){return
drop_tables($Sj);}function
drop_tables($T){foreach($T
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
false;}return
true;}function
move_tables($T,$Sj,$Mi){foreach(array_merge($T,$Sj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($Mi)))return
false;}return
true;}function
trigger($B,$R){if($B=="")return
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($B);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=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$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$lj=trigger($K["trigger_name"],$R);$J[$lj["Trigger"]]=array($lj["Timing"],$lj["Event"]);}return$J;}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($B,$U){$L=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($B));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT COALESCE(parameter_name, ordinal_position::text) AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = '.q($B).'
ORDER BY ordinal_position');return$J;}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()
ORDER BY SPECIFIC_NAME');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($B,$K){$J=array();foreach($K["fields"]as$n){$Re=$n["length"];$J[]=$n["type"].($Re?"($Re)":"");}return
idf_escape($B)."(".implode(", ",$J).")";}function
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
explain($g,$H){return$g->query("EXPLAIN $H");}function
found_rows($S,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$uh))return$uh[1];}function
types(){return
get_key_vals("SELECT oid, typname
FROM pg_type
WHERE typnamespace = ".driver()->nsOid."
AND typtype IN ('b','d','e')
AND typelem = 0");}function
type_values($u){$Cc=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $u ORDER BY enumsortorder");return($Cc?"'".implode("', '",array_map('addslashes',$Cc))."'":"");}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){return
get_val("SELECT current_schema()");}function
set_schema($Jh,$h=null){if(!$h)$h=connection();$J=$h->query("SET search_path TO ".idf_escape($Jh));driver()->setUserTypes(types());return$J;}function
foreign_keys_sql($R){$J="";$P=table_status1($R);$gd=foreign_keys($R);ksort($gd);foreach($gd
as$fd=>$ed)$J
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($fd)." $ed[definition];\n";return($J?"$J\n":$J);}function
create_sql($R,$Ba,$wi){$_h=array();$Yh=array();$P=table_status1($R);$Lf=idf_escape($P['nspname']);if(is_view($P)){$Rj=view($R);return
rtrim("CREATE VIEW $Lf.".idf_escape($R)." AS $Rj[select]",";");}$o=fields($R);if(count($P)<2||empty($o))return
false;$J="CREATE TABLE $Lf.".idf_escape($P['Name'])." (\n    ";foreach($o
as$n){$Bg=idf_escape($n['field']).' '.$n['full_type'].default_value($n).($n['null']?"":" NOT NULL");$_h[]=$Bg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$n['default'],$df)){$Xh=$df[1];$li=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($Xh)):"SELECT * FROM $Xh"),null,"-- "));$Yh[]=($wi=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Lf.$Xh;\n":"")."CREATE SEQUENCE $Lf.$Xh INCREMENT $li[increment_by] MINVALUE $li[min_value] MAXVALUE $li[max_value]".($Ba&&$li['last_value']?" START ".($li["last_value"]+1):"")." CACHE $li[cache_value];";}}if(!empty($Yh))$J=implode("\n\n",$Yh)."\n\n$J";$G="";foreach(indexes($R)as$de=>$w){if($w['type']=='PRIMARY'){$G=$de;$_h[]="CONSTRAINT ".idf_escape($de)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$w['columns'])).")";}}foreach(driver()->checkConstraints($R)as$wb=>$yb)$_h[]="CONSTRAINT ".idf_escape($wb)." CHECK ($yb)";$J
.=implode(",\n    ",$_h)."\n)";$Dg=driver()->partitionsInfo($P['Name']);if($Dg)$J
.="\nPARTITION BY $Dg[partition_by]($Dg[partition])";$J
.="\nWITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J
.="\n\nCOMMENT ON TABLE $Lf.".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($o
as$Xc=>$n){if($n['comment'])$J
.="\n\nCOMMENT ON COLUMN $Lf.".idf_escape($P['Name']).".".idf_escape($Xc)." IS ".q($n['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($G?" AND indexname != ".q($G):""),null,"-- ")as$K)$J
.="\n\n$K[indexdef];";return
rtrim($J,';');}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$kj=>$jj){$lj=trigger($kj,$P['Name']);$J
.="\nCREATE TRIGGER ".idf_escape($lj['Trigger'])." $lj[Timing] $lj[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $lj[Type] $lj[Statement];;\n";}return$J;}function
use_sql($Pb,$wi=""){$B=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$wi)){if($wi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J
.="CREATE DATABASE $B;\n";}return"$J\\connect $B";}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($n){}function
unconvert_field($n,$J){return$J;}function
support($Vc){return
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view'.(min_version(9.3)?'|materializedview':'').(min_version(11)?'|procedure':'').(connection()->flavor=='cockroach'?'':'|processlist').')$~',$Vc);}function
kill_process($X){return
queries("SELECT pg_terminate_backend(".number($X).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){return
get_val("SHOW max_connections");}}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($Dc,$m){if(ini_bool("html_errors"))$m=html_entity_decode(strip_tags($m));$m=preg_replace('~^[^:]*: ~','',$m);$this->error=$m;}function
attach($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$m=oci_error();return$m["message"];}function
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
select_db($Pb){$this->_current_db=$Pb;return
true;}function
query($H,$sj=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$m=oci_error($this->link);$this->errno=$m["code"];$this->error=$m["message"];return
false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
new
Result($I);$this->affected_rows=oci_num_rows($I);oci_free_statement($I);}return$J;}function
timeout($zf){return
oci_set_call_timeout($this->link,$zf);}}class
Result{var$num_rows;private$result,$offset=1;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$y=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$y]=$X->load();}return$K;}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++;$J=new
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
Db
extends
PdoDb{var$extension="PDO_OCI";var$_current_db;function
attach($N,$V,$F){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);}function
select_db($Pb){$this->_current_db=$Pb;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$g){parent::__construct($g);$this->types=array(lang(27)=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),lang(28)=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),lang(29)=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),lang(30)=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
begin(){return
true;}function
insertUpdate($R,array$L,array$G){foreach($L
as$O){$_j=array();$Z=array();foreach($O
as$y=>$X){$_j[]="$y = $X";if(isset($G[idf_unescape($y)]))$Z[]="$y = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$_j)." WHERE ".implode(" AND ",$Z))&&$this->conn->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
false;}return
true;}function
hasCStyleEscapes(){return
true;}}function
idf_escape($v){return'"'.str_replace('"','""',$v).'"';}function
table($v){return
idf_escape($v);}function
get_databases($id){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($H,$Z,$z,$C=0,$Vh=" "){return($C?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$C).") WHERE rnum > $C":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$C):" $H$Z"));}function
limit1($R,$H,$Z,$Vh="\n"){return" $H$Z";}function
db_collation($k,$lb){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(){$k=connection()->_current_db?:DB;unset(connection()->_current_db);return$k;}function
where_owner($Xg,$wg="owner"){if(!$_GET["ns"])return'';return"$Xg$wg = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
views_table($e){$wg=where_owner('');return"(SELECT $e FROM all_views WHERE ".($wg?:"rownum < 0").")";}function
tables_list(){$Rj=views_table("view_name");$wg=where_owner(" AND ");return
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$wg
UNION SELECT view_name, 'view' FROM $Rj
ORDER BY 1");}function
count_tables($j){$J=array();foreach($j
as$k)$J[$k]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($k));return$J;}function
table_status($B=""){$J=array();$Oh=q($B);$k=get_current_db();$Rj=views_table("view_name");$wg=where_owner(" AND ");foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q($k).$wg.($B!=""?" AND table_name = $Oh":"")."
UNION SELECT view_name, 'view', 0, 0 FROM $Rj".($B!=""?" WHERE view_name = $Oh":"")."
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="view";}function
fk_support($S){return
true;}function
fields($R){$J=array();$wg=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$wg ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$Re="$K[DATA_PRECISION],$K[DATA_SCALE]";if($Re==",")$Re=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($Re?"($Re)":""),"type"=>strtolower($U),"length"=>$Re,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$J;}function
indexes($R,$h=null){$J=array();$wg=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)."$wg
ORDER BY ac.constraint_type, aic.column_position",$h)as$K){$de=$K["INDEX_NAME"];$nb=$K["DATA_DEFAULT"];$nb=($nb?trim($nb,'"'):$K["COLUMN_NAME"]);$J[$de]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$de]["columns"][]=$nb;$J[$de]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$de]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
view($B){$Rj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$Rj.' WHERE view_name = '.q($B));return
reset($L);}function
collations(){return
array();}function
information_schema($k){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
h(connection()->error);}function
explain($g,$H){$g->query("EXPLAIN PLAN FOR $H");return$g->query("SELECT * FROM plan_table");}function
found_rows($S,$Z){}function
auto_increment(){return"";}function
alter_table($R,$B,$o,$kd,$qb,$yc,$c,$Ba,$E){$b=$jc=array();$pg=($R?fields($R):array());foreach($o
as$n){$X=$n[1];if($X&&$n[0]!=""&&idf_escape($n[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($n[0])." TO $X[0]");$og=$pg[$n[0]];if($X&&$og){$Sf=process_field($og,$og);if($X[2]==$Sf[2])$X[2]="";}if($X)$b[]=($R!=""?($n[0]!=""?"MODIFY (":"ADD ("):"  ").implode($X).($R!=""?")":"");else$jc[]=idf_escape($n[0]);}if($R=="")return
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$jc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$jc).")"))&&($R==$B||queries("ALTER TABLE ".table($R)." RENAME TO ".table($B)));}function
alter_indexes($R,$b){$jc=array();$ih=array();foreach($b
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$i=($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($ih,"ALTER TABLE ".table($R).$i);}elseif($X[2]=="DROP")$jc[]=idf_escape($X[1]);else$ih[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($jc)array_unshift($ih,"DROP INDEX ".implode(", ",$jc));foreach($ih
as$H){if(!queries($H))return
false;}return
true;}function
foreign_keys($R){$J=array();$H="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($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Sj){return
apply_queries("DROP VIEW",$Sj);}function
drop_tables($T){return
apply_queries("DROP TABLE",$T);}function
last_id($I){return
0;}function
schemas(){$J=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($J?: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($Lh,$h=null){if(!$h)$h=connection();return$h->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($Lh));}function
show_variables(){return
get_rows('SELECT name, display_value FROM v$parameter');}function
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$y=>$X)$J[]=array($y,$X);return$J;}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($n){}function
unconvert_field($n,$J){return$J;}function
support($Vc){return
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Vc);}}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;private
function
get_error(){$this->error="";foreach(sqlsrv_errors()as$m){$this->errno=$m["code"];$this->error
.="$m[message]\n";}$this->error=rtrim($this->error);}function
attach($N,$V,$F){$xb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$ri=adminer()->connectSsl();if(isset($ri["Encrypt"]))$xb["Encrypt"]=$ri["Encrypt"];if(isset($ri["TrustServerCertificate"]))$xb["TrustServerCertificate"]=$ri["TrustServerCertificate"];$k=adminer()->database();if($k!="")$xb["Database"]=$k;list($Nd,$Rg)=host_port($N);$this->link=@sqlsrv_connect($Nd.($Rg?",$Rg":""),$xb);if($this->link){$ie=sqlsrv_server_info($this->link);$this->server_info=$ie['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
quote($Q){$tj=strlen($Q)!=strlen(utf8_decode($Q));return($tj?"N":"")."'".str_replace("'","''",$Q)."'";}function
select_db($Pb){return$this->query(use_sql($Pb));}function
query($H,$sj=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
false;}return$this->store_result($I);}function
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
false;}return
true;}function
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
false;if(sqlsrv_field_metadata($I))return
new
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
true;}function
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
Result{var$num_rows;private$result,$offset=0,$fields;function
__construct($I){$this->result=$I;}private
function
convert($K){foreach((array)$K
as$y=>$X){if(is_a($X,'DateTime'))$K[$y]=$X->format("Y-m-d H:i:s");}return$K;}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);$n=$this->fields[$this->offset++];$J=new
\stdClass;$J->name=$n["Name"];$J->type=($n["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
seek($C){for($t=0;$t<$C;$t++)sqlsrv_fetch($this->result);}function
__destruct(){sqlsrv_free_stmt($this->result);}}function
last_id($I){return
get_val("SELECT SCOPE_IDENTITY()");}function
explain($g,$H){$g->query("SET SHOWPLAN_ALL ON");$J=$g->query($H);$g->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
class
MssqlDb
extends
PdoDb{function
select_db($Pb){return$this->query(use_sql($Pb));}function
lastInsertId(){return$this->pdo->lastInsertId();}}function
last_id($I){return
connection()->lastInsertId();}function
explain($g,$H){}if(extension_loaded("pdo_sqlsrv")){class
Db
extends
MssqlDb{var$extension="PDO_SQLSRV";function
attach($N,$V,$F){list($Nd,$Rg)=host_port($N);return$this->dsn("sqlsrv:Server=$Nd".($Rg?",$Rg":""),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
Db
extends
MssqlDb{var$extension="PDO_DBLIB";function
attach($N,$V,$F){list($Nd,$Rg)=host_port($N);return$this->dsn("dblib:charset=utf8;host=$Nd".($Rg?(is_numeric($Rg)?";port=":";unix_socket=").$Rg:""),$V,$F);}}}}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,$F){if($N=="")$N="localhost:1433";return
parent::connect($N,$V,$F);}function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),lang(28)=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),lang(29)=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),lang(30)=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
insertUpdate($R,array$L,array$G){$o=fields($R);$_j=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Ra=0;$oe=array();foreach($O
as$y=>$X){$Ra++;$B=idf_unescape($y);if(!$o[$B]["auto_increment"])$oe[$y]="c$Ra";if(isset($G[$B]))$Z[]="$y = c$Ra";else$_j[]="$y = c$Ra";}$Nj=array();foreach($L
as$O)$Nj[]="(".implode(", ",$O).")";if($Z){$Sd=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$Nj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($_j?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$_j):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Sd?$O:$oe)).") VALUES (".($Sd?$e:implode(", ",$oe)).");");if($Sd)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$Nj));return$J;}function
begin(){return
queries("BEGIN TRANSACTION");}function
tableHelp($B,$ze=false){$Ve=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Ve[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($B))."-transact-sql";}}function
idf_escape($v){return"[".str_replace("]","]]",$v)."]";}function
table($v){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($v);}function
get_databases($id){return
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
limit($H,$Z,$z,$C=0,$Vh=" "){return($z?" TOP (".($z+$C).")":"")." $H$Z";}function
limit1($R,$H,$Z,$Vh="\n"){return
limit($H,$Z,1,0,$Vh);}function
db_collation($k,$lb){return
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($k));}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($j){$J=array();foreach($j
as$k){connection()->select_db($k);$J[$k]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
table_status($B=""){$J=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value 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') ".($B!=""?"AND name = ".q($B):"ORDER BY name"))as$K)$J[$K["Name"]]=$K;return$J;}function
is_view($S){return$S["Engine"]=="VIEW";}function
fk_support($S){return
true;}function
fields($R){$sb=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$Ci=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($Ci))as$K){$U=$K["type"];$Re=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($Re?"($Re)":""),"type"=>$U,"length"=>$Re,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$A)?str_replace("''","'",$A[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$sb[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($Ci))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
indexes($R,$h=null){$J=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),$h)as$K){$B=$K["name"];$J[$B]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$B]["lengths"]=array();$J[$B]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$B]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
view($B){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($B))));}function
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
information_schema($k){return
get_schema()=="INFORMATION_SCHEMA";}function
error(){return
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
create_database($k,$c){return
queries("CREATE DATABASE ".idf_escape($k).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
drop_databases($j){return
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$j)));}function
rename_database($B,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($B));return
true;}function
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
alter_table($R,$B,$o,$kd,$qb,$yc,$c,$Ba,$E){$b=array();$sb=array();$pg=fields($R);foreach($o
as$n){$d=idf_escape($n[0]);$X=$n[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$sb[$n[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($n[0]=="")$b["ADD"][]="\n  ".implode("",$X).($R==""?substr($kd[$X[0]],16+strlen($X[0])):"");else{$l=$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)][]="";$og=$pg[$n[0]];if(default_value($og)!=$l){if($og["default"]!==null)$b["DROP"][]=" ".idf_escape($og["default_constraint"]);if($l)$b["ADD"][]="\n $l FOR $d";}}}}if($R=="")return
queries("CREATE TABLE ".table($B)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$B)queries("EXEC sp_rename ".q(table($R)).", ".q($B));if($kd)$b[""]=$kd;foreach($b
as$y=>$X){if(!queries("ALTER TABLE ".table($B)." $y".implode(",",$X)))return
false;}foreach($sb
as$y=>$X){$qb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($B).", @level2type = N'Column', @level2name = ".q($y));queries("EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = $qb,
@level0type = N'Schema',
@level0name = ".q(get_schema()).",
@level1type = N'Table',
@level1name = ".q($B).",
@level2type = N'Column',
@level2name = ".q($y));}return
true;}function
alter_indexes($R,$b){$w=array();$jc=array();foreach($b
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$jc[]=idf_escape($X[1]);else$w[]=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(!$w||queries("DROP INDEX ".implode(", ",$w)))&&(!$jc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$jc)));}function
found_rows($S,$Z){}function
foreign_keys($R){$J=array();$Zf=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q(get_schema()))as$K){$q=&$J[$K["FK_NAME"]];$q["db"]=$K["PKTABLE_QUALIFIER"];$q["ns"]=$K["PKTABLE_OWNER"];$q["table"]=$K["PKTABLE_NAME"];$q["on_update"]=$Zf[$K["UPDATE_RULE"]];$q["on_delete"]=$Zf[$K["DELETE_RULE"]];$q["source"][]=$K["FKCOLUMN_NAME"];$q["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
truncate_tables($T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views($Sj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Sj)));}function
drop_tables($T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables($T,$Sj,$Mi){return
apply_queries("ALTER SCHEMA ".idf_escape($Mi)." TRANSFER",array_merge($T,$Sj));}function
trigger($B,$R){if($B=="")return
array();$L=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($B));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
triggers($R){$J=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$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}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($Jh){$_GET["ns"]=$Jh;return
true;}function
create_sql($R,$Ba,$wi){if(is_view(table_status1($R))){$Rj=view($R);return"CREATE VIEW ".table($R)." AS $Rj[select]";}$o=array();$G=false;foreach(fields($R)as$B=>$n){$X=process_field($n,$n);if($X[6])$G=true;$o[]=implode("",$X);}foreach(indexes($R)as$B=>$w){if(!$G||$w["type"]!="PRIMARY"){$e=array();foreach($w["columns"]as$y=>$X)$e[]=idf_escape($X).($w["descs"][$y]?" DESC":"");$B=idf_escape($B);$o[]=($w["type"]=="INDEX"?"INDEX $B":"CONSTRAINT $B ".($w["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$B=>$Ya)$o[]="CONSTRAINT ".idf_escape($B)." CHECK ($Ya)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$o)."\n)";}function
foreign_keys_sql($R){$o=array();foreach(foreign_keys($R)as$kd)$o[]=ltrim(format_foreign_key($kd));return($o?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$o).";\n\n":"");}function
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
use_sql($Pb,$wi=""){return"USE ".idf_escape($Pb);}function
trigger_sql($R){$J="";foreach(triggers($R)as$B=>$lj)$J
.=create_trigger(" ON ".table($R),trigger($B,$R)).";";return$J;}function
convert_field($n){}function
unconvert_field($n,$J){return$J;}function
support($Vc){return
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Vc);}}class
Adminer{static$instance;var$error='';function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.2")."' width='24' height='24' alt='' id='logo'>Adminer</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($i=false){return
password_file($i);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($N){return
h($N);}function
database(){return
DB;}function
databases($id=true){return
get_databases($id);}function
pluginsLinks(){}function
operators(){return
driver()->operators;}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
afterConnect(){}function
headers(){}function
csp(array$Ib){return$Ib;}function
head($Mb=null){return
true;}function
bodyClass(){echo" adminer";}function
css(){$J=array();foreach(array("","-dark")as$yf){$p="adminer$yf.css";if(file_exists($p)){$ad=file_get_contents($p);$J["$p?v=".crc32($ad)]=($yf?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$ad)?'':'light'));}}return$J;}function
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.lang(33).'<td>',html_select("auth[driver]",SqlDriver::$drivers,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.lang(34).'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="'.lang(35).'" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.lang(36).'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password','<tr><th>'.lang(37).'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.lang(38).'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".lang(39)."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(40))."\n";}function
loginFormField($B,$Id,$Y){return$Id.$Y."\n";}function
login($Xe,$F){if($F=="")return
lang(41,target_blank());return
true;}function
tableName(array$Bi){return
h($Bi["Name"]);}function
fieldName(array$n,$ig=0){$U=$n["full_type"];$qb=$n["comment"];return'<span title="'.h($U.($qb!=""?($U?": ":"").$qb:'')).'">'.h($n["field"]).'</span>';}function
selectLinks(array$Bi,$O=""){$B=$Bi["Name"];echo'<p class="links">';$Ve=array("select"=>lang(42));if(support("table")||support("indexes"))$Ve["table"]=lang(43);$ze=false;if(support("table")){$ze=is_view($Bi);if($ze){if(support("view"))$Ve["view"]=lang(44);}elseif(function_exists('Adminer\alter_table'))$Ve["create"]=lang(45);}if($O!==null)$Ve["edit"]=lang(46);foreach($Ve
as$y=>$X)echo" <a href='".h(ME)."$y=".urlencode($B).($y=="edit"?$O:"")."'".bold(isset($_GET[$y])).">$X</a>";echo
doc_link(array(JUSH=>driver()->tableHelp($B,$ze)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Ai){return
array();}function
backwardKeysPrint(array$Fa,array$K){}function
selectQuery($H,$si,$Tc=false){$J="</p>\n";if(!$Tc&&($Vj=driver()->warnings())){$u="warnings";$J=", <a href='#$u'>".lang(47)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."$J<div id='$u' class='hidden'>\n$Vj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($si).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".lang(12)."</a>":"").$J;}function
sqlCommandQuery($H){return
shorten_utf8(trim($H),1000);}function
sqlPrintAfter(){}function
rowDescription($R){return"";}function
rowDescriptions(array$L,array$ld){return$L;}function
selectLink($X,array$n){}function
selectVal($X,$_,array$n,$sg){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$n["type"])&&!preg_match("~var~",$n["type"])?"<code>$X</code>":(preg_match('~json~',$n["type"])?"<code class='jush-js'>$X</code>":$X)));if(is_blob($n)&&!is_utf8($X))$J="<i>".lang(48,strlen($sg))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
editVal($X,array$n){return$X;}function
config(){return
array();}function
tableStructurePrint(array$o,$Bi=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".lang(49)."<td>".lang(50).(support("comment")?"<td>".lang(51):"")."</thead>\n";$vi=driver()->structuredTypes();foreach($o
as$n){echo"<tr><th>".h($n["field"]);$U=h($n["full_type"]);$c=h($n["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$vi[lang(6)])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($Bi["Collation"])&&$c!=$Bi["Collation"]?" $c":""))."</span>",($n["null"]?" <i>NULL</i>":""),($n["auto_increment"]?" <i>".lang(52)."</i>":"");$l=h($n["default"]);echo(isset($n["default"])?" <span title='".lang(53)."'>[<b>".($n["generated"]?"<code class='jush-".JUSH."'>$l</code>":$l)."</b>]</span>":""),(support("comment")?"<td>".h($n["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint(array$x,array$Bi){$Cg=false;foreach($x
as$B=>$w)$Cg|=!!$w["partial"];echo"<table>\n";$Ub=first(driver()->indexAlgorithms($Bi));foreach($x
as$B=>$w){ksort($w["columns"]);$bh=array();foreach($w["columns"]as$y=>$X)$bh[]="<i>".h($X)."</i>".($w["lengths"][$y]?"(".$w["lengths"][$y].")":"").($w["descs"][$y]?" DESC":"");echo"<tr title='".h($B)."'>","<th>$w[type]".($Ub&&$w['algorithm']!=$Ub?" ($w[algorithm])":""),"<td>".implode(", ",$bh);if($Cg)echo"<td>".($w['partial']?"<code class='jush-".JUSH."'>WHERE ".h($w['partial']):"");echo"\n";}echo"</table>\n";}function
selectColumnsPrint(array$M,array$e){print_fieldset("select",lang(54),$M);$t=0;$M[""]=array();foreach($M
as$y=>$X){$X=idx($_GET["columns"],$y,array());$d=select_input(" name='columns[$t][col]'",$e,$X["col"],($y!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$t][fun]",array(-1=>"")+array_filter(array(lang(55)=>driver()->functions,lang(56)=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($y!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
selectSearchPrint(array$Z,array$e,array$x){print_fieldset("search",lang(57),$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$w["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h(idx($_GET["fulltext"],$t))."'>",script("qsl('input').oninput = selectFieldChange;",""),(JUSH=='sql'?checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"):''),"</div>\n";}$Va="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(58).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Va),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Va }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
selectOrderPrint(array$ig,array$e,array$x){print_fieldset("sort",lang(59),$ig);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),lang(60))."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(60))."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($z){echo"<fieldset><legend>".lang(61)."</legend><div>","<input type='number' name='limit' class='size' value='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($Si){if($Si!==null)echo"<fieldset><legend>".lang(62)."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Si)."'>","</div></fieldset>\n";}function
selectActionPrint(array$x){echo"<fieldset><legend>".lang(63)."</legend><div>","<input type='submit' value='".lang(54)."'>"," <span id='noindex' title='".lang(64)."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($x
as$w){$Lb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$Lb)$e[$Lb]=1;}$e[""]=1;foreach($e
as$y=>$X)json_row($y);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint(array$vc,array$e){}function
selectColumnsProcess(array$e,array$x){$M=array();$xd=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$xd[]=$M[$y];}}return
array($M,$xd);}function
selectSearchProcess(array$o,array$x){$J=array();foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$y=>$X){$jb=$X["col"];if("$jb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$ub=array();foreach(($jb!=""?array($jb=>$o[$jb]):$o)as$B=>$n){$Xg="";$tb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Xd=process_length($X["val"]);$tb
.=" ".($Xd!=""?$Xd:"(NULL)");}elseif($X["op"]=="SQL")$tb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$A))$tb=" $A[1] ".adminer()->processInput($n,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Xg="$X[op](".q($X["val"]).", ";$tb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$tb
.=" ".adminer()->processInput($n,$X["val"]);if($jb!=""||(isset($n["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$n["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$n["type"]))&&(!preg_match('~date|timestamp~',$n["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$ub[]=$Xg.driver()->convertSearch(idf_escape($B),$X,$n).$tb;}$J[]=(count($ub)==1?$ub[0]:($ub?"(".implode(" OR ",$ub).")":"1 = 0"));}}return$J;}function
selectOrderProcess(array$o,array$x){$J=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$J;}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$ld){return
false;}function
selectQueryBuild(array$M,array$Z,array$xd,array$ig,$z,$D){return"";}function
messageQuery($H,$Ti,$Tc=false){restart_session();$Kd=&get_session("queries");if(!idx($Kd,$_GET["db"]))$Kd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Kd[$_GET["db"]][]=array($H,time(),$Ti);$oi="sql-".count($Kd[$_GET["db"]]);$J="<a href='#$oi' class='toggle'>".lang(65)."</a> <a href='' class='jsonly copy'>🗐</a>\n";if(!$Tc&&($Vj=driver()->warnings())){$u="warnings-".count($Kd[$_GET["db"]]);$J="<a href='#$u' class='toggle'>".lang(47)."</a>, $J<div id='$u' class='hidden'>\n$Vj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$oi' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1e4)."</code></pre>".($Ti?" <span class='time'>($Ti)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Kd[$_GET["db"]])-1)).'">'.lang(12).'</a>':'').'</div>';}function
editRowPrint($R,array$o,$K,$_j){}function
editFunctions(array$n){$J=($n["null"]?"NULL/":"");$_j=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$y=>$sd){if(!$y||(!isset($_GET["call"])&&$_j)){foreach($sd
as$Lg=>$X){if(!$Lg||preg_match("~$Lg~",$n["type"]))$J
.="/$X";}}if($y&&$sd&&!preg_match('~set|bool~',$n["type"])&&!is_blob($n))$J
.="/SQL";}if($n["auto_increment"]&&!$_j)$J=lang(52);return
explode("/",$J);}function
editInput($R,array$n,$_a,$Y){if($n["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$_a value='orig' checked><i>".lang(10)."</i></label> ":"").enum_input("radio",$_a,$n,$Y,"NULL");return"";}function
editHint($R,array$n,$Y){return"";}function
processInput(array$n,$Y,$s=""){if($s=="SQL")return$Y;$B=$n["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$J="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$J=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$J=idf_escape($B)." $s $J";elseif(preg_match('~^[+-] interval$~',$s))$J=idf_escape($B)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$J="$s(".idf_escape($B).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$J="$s($J)";return
unconvert_field($n,$J);}function
dumpOutput(){$J=array('text'=>lang(66),'file'=>lang(67));if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($k){}function
dumpTable($R,$wi,$ze=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($wi)dump_csv(array_keys(fields($R)));}else{if($ze==2){$o=array();foreach(fields($R)as$B=>$n)$o[]=idf_escape($B)." $n[full_type]";$i="CREATE TABLE ".table($R)." (".implode(", ",$o).")";}else$i=create_sql($R,$_POST["auto_increment"],$wi);set_utf8mb4($i);if($wi&&$i){if($wi=="DROP+CREATE"||$ze==1)echo"DROP ".($ze==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($ze==1)$i=remove_definer($i);echo"$i;\n\n";}}}function
dumpData($R,$wi,$H){if($wi){$hf=(JUSH=="sqlite"?0:1048576);$o=array();$Td=false;if($_POST["format"]=="sql"){if($wi=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$o=fields($R);if(JUSH=="mssql"){foreach($o
as$n){if($n["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Td=true;break;}}}}$I=connection()->query($H,1);if($I){$oe="";$Pa="";$Ee=array();$td=array();$yi="";$Wc=($R!=''?'fetch_assoc':'fetch_row');$Eb=0;while($K=$I->$Wc()){if(!$Ee){$Nj=array();foreach($K
as$X){$n=$I->fetch_field();if(idx($o[$n->name],'generated')){$td[$n->name]=true;continue;}$Ee[]=$n->name;$y=idf_escape($n->name);$Nj[]="$y = VALUES($y)";}$yi=($wi=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Nj):"").";\n";}if($_POST["format"]!="sql"){if($wi=="table"){dump_csv($Ee);$wi="INSERT";}dump_csv($K);}else{if(!$oe)$oe="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Ee)).") VALUES";foreach($K
as$y=>$X){if($td[$y]){unset($K[$y]);continue;}$n=$o[$y];$K[$y]=($X!==null?unconvert_field($n,preg_match(number_type(),$n["type"])&&!preg_match('~\[~',$n["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Hh=($hf?"\n":" ")."(".implode(",\t",$K).")";if(!$Pa)$Pa=$oe.$Hh;elseif(JUSH=='mssql'?$Eb%1000!=0:strlen($Pa)+4+strlen($Hh)+strlen($yi)<$hf)$Pa
.=",$Hh";else{echo$Pa.$yi;$Pa=$oe.$Hh;}}$Eb++;}if($Pa)echo$Pa.$yi;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Td)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($Rd){return
friendly_url($Rd!=""?$Rd:(SERVER?:"localhost"));}function
dumpHeaders($Rd,$Af=false){$vg=$_POST["output"];$Oc=(preg_match('~sql~',$_POST["format"])?"sql":($Af?"tar":"csv"));header("Content-Type: ".($vg=="gz"?"application/x-gzip":($Oc=="tar"?"application/x-tar":($Oc=="sql"||$vg!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($vg=="gz"){ob_start(function($Q){return
gzencode($Q);},1e6);}return$Oc;}function
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
importServerPath(){return"adminer.sql";}function
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.lang(68)."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?lang(69):lang(70))."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.lang(71)."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".lang(72)."</a>\n":"");if($_GET["ns"]!=="")echo(support("routine")?"<a href='#routines'>".lang(73)."</a>\n":""),(support("sequence")?"<a href='#sequences'>".lang(74)."</a>\n":""),(support("type")?"<a href='#user-types'>".lang(6)."</a>\n":""),(support("event")?"<a href='#events'>".lang(75)."</a>\n":"");return
true;}function
navigation($xf){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$If=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$If)<0?h($If):"")."</a>","</span></h1>\n";switch_lang();if($xf=="auth"){$vg="";foreach((array)$_SESSION["pwds"]as$Pj=>$ai){foreach($ai
as$N=>$Jj){$B=h(get_setting("vendor-$Pj-$N")?:get_driver($Pj));foreach($Jj
as$V=>$F){if($F!==null){$Sb=$_SESSION["db"][$Pj][$N][$V];foreach(($Sb?array_keys($Sb):array(""))as$k)$vg
.="<li><a href='".h(auth_url($Pj,$N,$V,$k))."'>($B) ".h("$V@".($N!=""?adminer()->serverName($N):"").($k!=""?" - $k":""))."</a>\n";}}}}if($vg)echo"<ul id='logins'>\n$vg</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$xf&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($xf);$ka=array();if(DB==""||!$xf){if(support("sql")){$ka[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".lang(65)."</a>";$ka[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".lang(76)."</a>";}$ka[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".lang(77)."</a>";}$Yd=$_GET["ns"]!==""&&!$xf&&DB!="";if($Yd&&function_exists('Adminer\alter_table'))$ka[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".lang(78)."</a>";echo($ka?"<p class='links'>\n".implode("\n",$ka)."\n":"");if($Yd){if($T)adminer()->tablesPrint($T);else
echo"<p class='message'>".lang(11)."</p>\n";}}}function
syntaxHighlighting(array$T){echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.4.2",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Ve=array();foreach($T
as$R=>$U)$Ve[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$Ve).')\b/g',false);if(support('routine')){foreach(routines()as$K)json_row(js_escape(ME).'function='.urlencode($K["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($K["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Ii=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$o){foreach($o
as$n)$Ii[$R][]=$n["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Ii)."); });\n";}}echo"</script>\n";}echo
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
databasesPrint($xf){$j=adminer()->databases();if(DB&&$j&&!in_array(DB,$j))array_unshift($j,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Qb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".lang(38)."'>".lang(79).": ".($j?html_select("db",array(""=>"")+$j,DB).$Qb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".lang(22)."'".($j?" class='hidden'":"").">\n";if(support("scheme")){if($xf!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".lang(80).": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Qb</label>";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"</p></form>\n";}function
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$P){$R="$R";$B=adminer()->tableName($P);if($B!=""&&!$P["partition"])echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".lang(42)."'>".lang(81)."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($P)?"view":"structure"))." title='".lang(43)."'>$B</a>":"<span>$B</span>")."\n";}echo"</ul>\n";}function
showVariables(){return
show_variables();}function
showStatus(){return
show_status();}function
processList(){return
process_list();}function
killProcess($u){return
kill_process($u);}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
__construct($Qg){if($Qg===null){$Qg=array();$Ja="adminer-plugins";if(is_dir($Ja)){foreach(glob("$Ja/*.php")as$p)$this->includeOnce($p);}$Jd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ja.php")){$Zd=$this->includeOnce("$Ja.php");if(is_array($Zd)){foreach($Zd
as$Pg)$Qg[get_class($Pg)]=$Pg;}else$this->error
.=lang(82,"<b>$Ja.php</b>",$Jd)."<br>";}foreach(get_declared_classes()as$fb){if(!$Qg[$fb]&&(preg_match('~^Adminer\w~i',$fb)||is_subclass_of($fb,'Adminer\Plugin'))){$sh=new
\ReflectionClass($fb);$zb=$sh->getConstructor();if($zb&&$zb->getNumberOfRequiredParameters())$this->error
.=lang(83,$Jd,"<b>$fb</b>","<b>$Ja.php</b>")."<br>";else$Qg[$fb]=new$fb;}}}$this->plugins=$Qg;$na=new
Adminer;$Qg[]=$na;$sh=new
\ReflectionObject($na);foreach($sh->getMethods()as$vf){foreach($Qg
as$Pg){$B=$vf->getName();if(method_exists($Pg,$B))$this->hooks[$B][]=$Pg;}}}function
includeOnce($p){return
include_once"./$p";}function
__call($B,array$_g){$wa=array();foreach($_g
as$y=>$X)$wa[]=&$_g[$y];$J=null;foreach($this->hooks[$B]as$Pg){$Y=call_user_func_array(array($Pg,$B),$wa);if($Y!==null){if(!self::$append[$B])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($v,$Of=null){$wa=func_get_args();$wa[0]=idx($this->translations[LANG],$v)?:$v;return
call_user_func_array('Adminer\lang_format',$wa);}}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,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Nd,$Rg)=host_port($N);$ri=adminer()->connectSsl();if($ri)$this->ssl_set($ri['key'],$ri['cert'],$ri['ca'],'','');$J=@$this->real_connect(($N!=""?$Nd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($Rg)?intval($Rg):ini_get("mysqli.default_port")),(is_numeric($Rg)?null:$Rg),($ri?($ri['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($J?'':$this->error);}function
set_charset($Xa){if(parent::set_charset($Xa))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Xa");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db
extends
SqlDb{private$link;function
attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return
lang(84,"'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.$F!=""?$F: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($Xa){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Xa,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Xa");}function
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
select_db($Pb){return
mysql_select_db($Pb,$this->link);}function
query($H,$sj=false){$I=@($sj?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($I);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($N,$V,$F){$gg=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$ri=adminer()->connectSsl();if($ri){if($ri['key'])$gg[\PDO::MYSQL_ATTR_SSL_KEY]=$ri['key'];if($ri['cert'])$gg[\PDO::MYSQL_ATTR_SSL_CERT]=$ri['cert'];if($ri['ca'])$gg[\PDO::MYSQL_ATTR_SSL_CA]=$ri['ca'];if(isset($ri['verify']))$gg[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$ri['verify'];}list($Nd,$Rg)=host_port($N);return$this->dsn("mysql:charset=utf8;host=$Nd".($Rg?(is_numeric($Rg)?";port=":";unix_socket=").$Rg:""),$V,$F,$gg);}function
set_charset($Xa){return$this->query("SET NAMES $Xa");}function
select_db($Pb){return$this->query("USE ".idf_escape($Pb));}function
query($H,$sj=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$sj);return
parent::query($H,$sj);}}}class
Driver
extends
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($N,$V,$F){$g=parent::connect($N,$V,$F);if(is_string($g)){if(function_exists('iconv')&&!is_utf8($g)&&strlen($Hh=iconv("windows-1250","utf-8",$g))>strlen($g))$g=$Hh;return$g;}$g->set_charset(charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");$g->flavor=(preg_match('~MariaDB~',$g->server_info)?'maria':'mysql');add_driver(DRIVER,($g->flavor=='maria'?"MariaDB":"MySQL"));return$g;}function
__construct(Db$g){parent::__construct($g);$this->types=array(lang(27)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(28)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(29)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(85)=>array("enum"=>65535,"set"=>64),lang(30)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(32)=>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,$g))$this->types[lang(29)]["json"]=4294967295;if(min_version('',10.7,$g)){$this->types[lang(29)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$g)){$this->types[lang(27)]["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$g))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$g))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$n){return(preg_match("~binary~",$n["type"])?"<code class='jush-sql'>UNHEX</code>":($n["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$n["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$Xg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Nj=array();foreach($e
as$y)$Nj[$y]="$y = VALUES($y)";$yi="\nON DUPLICATE KEY UPDATE ".implode(", ",$Nj);$Nj=array();$Re=0;foreach($L
as$O){$Y="(".implode(", ",$O).")";if($Nj&&(strlen($Xg)+$Re+strlen($Y)+strlen($yi)>1e6)){if(!queries($Xg.implode(",\n",$Nj).$yi))return
false;$Nj=array();$Re=0;}$Nj[]=$Y;$Re+=strlen($Y)+2;}return
queries($Xg.implode(",\n",$Nj).$yi);}function
slowQuery($H,$Ui){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Ui FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$A))return"$A[1] /*+ MAX_EXECUTION_TIME(".($Ui*1000).") */ $A[2]";}}function
convertSearch($v,array$X,array$n){return(preg_match('~char|text|enum|set~',$n["type"])&&!preg_match("~^utf8~",$n["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
ob_get_clean();}}function
tableHelp($B,$ze=false){$Ze=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($Ze?"$B-table/":str_replace("_","-",$B)."-table.html"));if(DB=="mysql")return($Ze?"mysql$B-table/":"system-schema.html");}function
partitionsInfo($R){$qd="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $qd ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$Hg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $qd AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($Hg);$J["partition_values"]=array_values($Hg);return$J;}function
hasCStyleEscapes(){static$Sa;if($Sa===null){$pi=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Sa=(strpos($pi,'NO_BACKSLASH_ESCAPES')===false);}return$Sa;}function
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}function
indexAlgorithms(array$Bi){return(preg_match('~^(MEMORY|NDB)$~',$Bi["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
get_databases($id){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($id?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
limit($H,$Z,$z,$C=0,$Vh=" "){return" $H$Z".($z?$Vh."LIMIT $z".($C?" OFFSET $C":""):"");}function
limit1($R,$H,$Z,$Vh="\n"){return
limit($H,$Z,1,0,$Vh);}function
db_collation($k,array$lb){$J=null;$i=get_val("SHOW CREATE DATABASE ".idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$A))$J=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$A))$J=$lb[$A[1]][-1];return$J;}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$j){$J=array();foreach($j
as$k)$J[$k]=count(get_vals("SHOW TABLES IN ".idf_escape($k)));return$J;}function
table_status($B="",$Uc=false){$J=array();foreach(get_rows($Uc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($B!=""?"AND TABLE_NAME = ".q($B):"ORDER BY Name"):"SHOW TABLE STATUS".($B!=""?" LIKE ".q(addcslashes($B,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($B!="")$K["Name"]=$B;$J[$K["Name"]]=$K;}return$J;}function
is_view(array$S){return$S["Engine"]===null;}function
fk_support(array$S){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
fields($R){$Ze=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$n=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$ud=$K["GENERATION_EXPRESSION"];$Rc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Rc,$td);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$cf);$l=$K["COLUMN_DEFAULT"];if($l!=""){$ye=preg_match('~text|json~',$cf[1]);if(!$Ze&&$ye)$l=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($l));if($Ze||$ye){$l=($l=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($A){return
stripslashes(str_replace("''","'",$A[1]));},$l));}if(!$Ze&&preg_match('~binary~',$cf[1])&&preg_match('~^0x(\w*)$~',$l,$A))$l=pack("H*",$A[1]);}$J[$n]=array("field"=>$n,"full_type"=>$U,"type"=>$cf[1],"length"=>$cf[2],"unsigned"=>ltrim($cf[3].$cf[4]),"default"=>($td?($Ze?$ud:stripslashes($ud)):$l),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Rc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Rc,$A)?$A[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($td[1]=="PERSISTENT"?"STORED":$td[1]),);}return$J;}function
indexes($R,$h=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$h)as$K){$B=$K["Key_name"];$J[$B]["type"]=($B=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$B]["columns"][]=$K["Column_name"];$J[$B]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$B]["descs"][]=null;$J[$B]["algorithm"]=$K["Index_type"];}return$J;}function
foreign_keys($R){static$Lg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Fb=get_val("SHOW CREATE TABLE ".table($R),1);if($Fb){preg_match_all("~CONSTRAINT ($Lg) FOREIGN KEY ?\\(((?:$Lg,? ?)+)\\) REFERENCES ($Lg)(?:\\.($Lg))? \\(((?:$Lg,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Fb,$df,PREG_SET_ORDER);foreach($df
as$A){preg_match_all("~$Lg~",$A[2],$ji);preg_match_all("~$Lg~",$A[5],$Mi);$J[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('Adminer\idf_unescape',$ji[0]),"target"=>array_map('Adminer\idf_unescape',$Mi[0]),"on_delete"=>($A[6]?:"RESTRICT"),"on_update"=>($A[7]?:"RESTRICT"),);}}return$J;}function
view($B){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($B),1)));}function
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
as$y=>$X)sort($J[$y]);return$J;}function
information_schema($k){return($k=="information_schema")||(min_version(5.5)&&$k=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($k,$c){return
queries("CREATE DATABASE ".idf_escape($k).($c?" COLLATE ".q($c):""));}function
drop_databases(array$j){$J=apply_queries("DROP DATABASE",$j,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
rename_database($B,$c){$J=false;if(create_database($B,$c)){$T=array();$Sj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Sj[]=$R;else$T[]=$R;}$J=(!$T&&!$Sj)||move_tables($T,$Sj,$B);drop_databases($J?array(DB):array());}return$J;}function
auto_increment(){$Ca=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$Ca="";break;}if($w["type"]=="PRIMARY")$Ca=" UNIQUE";}}return" AUTO_INCREMENT$Ca";}function
alter_table($R,$B,array$o,array$kd,$qb,$yc,$c,$Ba,$E){$b=array();foreach($o
as$n){if($n[1]){$l=$n[1][3];if(preg_match('~ GENERATED~',$l)){$n[1][3]=(connection()->flavor=='maria'?"":$n[1][2]);$n[1][2]=$l;}$b[]=($R!=""?($n[0]!=""?"CHANGE ".idf_escape($n[0]):"ADD"):" ")." ".implode($n[1]).($R!=""?$n[2]:"");}else$b[]="DROP ".idf_escape($n[0]);}$b=array_merge($b,$kd);$P=($qb!==null?" COMMENT=".q($qb):"").($yc?" ENGINE=".q($yc):"").($c?" COLLATE ".q($c):"").($Ba!=""?" AUTO_INCREMENT=$Ba":"");if($E){$Hg=array();if($E["partition_by"]=='RANGE'||$E["partition_by"]=='LIST'){foreach($E["partition_names"]as$y=>$X){$Y=$E["partition_values"][$y];$Hg[]="\n  PARTITION ".idf_escape($X)." VALUES ".($E["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$P
.="\nPARTITION BY $E[partition_by]($E[partition])";if($Hg)$P
.=" (".implode(",",$Hg)."\n)";elseif($E["partitions"])$P
.=" PARTITIONS ".(+$E["partitions"]);}elseif($E===null)$P
.="\nREMOVE PARTITIONING";if($R=="")return
queries("CREATE TABLE ".table($B)." (\n".implode(",\n",$b)."\n)$P");if($R!=$B)$b[]="RENAME TO ".table($B);if($P)$b[]=ltrim($P);return($b?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b)):true);}function
alter_indexes($R,$b){$Wa=array();foreach($b
as$X)$Wa[]=($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(",",$Wa));}function
truncate_tables(array$T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views(array$Sj){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Sj)));}function
drop_tables(array$T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables(array$T,array$Sj,$Mi){$wh=array();foreach($T
as$R)$wh[]=table($R)." TO ".idf_escape($Mi).".".table($R);if(!$wh||queries("RENAME TABLE ".implode(", ",$wh))){$Yb=array();foreach($Sj
as$R)$Yb[table($R)]=view($R);connection()->select_db($Mi);$k=idf_escape(DB);foreach($Yb
as$B=>$Rj){if(!queries("CREATE VIEW $B AS ".str_replace(" $k."," ",$Rj["select"]))||!queries("DROP VIEW $k.$B"))return
false;}return
true;}return
false;}function
copy_tables(array$T,array$Sj,$Mi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$B=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $B"))||!queries("CREATE TABLE $B LIKE ".table($R))||!queries("INSERT INTO $B SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$lj=$K["Trigger"];if(!queries("CREATE TRIGGER ".($Mi==DB?idf_escape("copy_$lj"):idf_escape($Mi).".".idf_escape($lj))." $K[Timing] $K[Event] ON $B FOR EACH ROW\n$K[Statement];"))return
false;}}foreach($Sj
as$R){$B=($Mi==DB?table("copy_$R"):idf_escape($Mi).".".table($R));$Rj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $B"))||!queries("CREATE VIEW $B AS $Rj[select]"))return
false;}return
true;}function
trigger($B,$R){if($B=="")return
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($B));return
reset($L);}function
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($B,$U){$o=get_rows("SELECT
	PARAMETER_NAME field,
	DATA_TYPE type,
	CHARACTER_MAXIMUM_LENGTH length,
	REGEXP_REPLACE(DTD_IDENTIFIER, '^[^ ]+ ', '') `unsigned`,
	1 `null`,
	DTD_IDENTIFIER full_type,
	PARAMETER_MODE `inout`,
	CHARACTER_SET_NAME collation
FROM information_schema.PARAMETERS
WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($B)."
ORDER BY ORDINAL_POSITION");$J=connection()->query("SELECT ROUTINE_COMMENT comment, ROUTINE_DEFINITION definition, 'SQL' language
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND ROUTINE_NAME = ".q($B))->fetch_assoc();if($o&&$o[0]['field']=='')$J['returns']=array_shift($o);$J['fields']=$o;return$J;}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($B,array$K){return
idf_escape($B);}function
last_id($I){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$g,$H){return$g->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$Ba,$wi){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Ba)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($Pb,$wi=""){$B=idf_escape($Pb);$J="";if(preg_match('~CREATE~',$wi)&&($i=get_val("SHOW CREATE DATABASE $B",1))){set_utf8mb4($i);if($wi=="DROP+CREATE")$J="DROP DATABASE IF EXISTS $B;\n";$J
.="$i;\n";}return$J."USE $B";}function
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
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$n){if(preg_match("~binary~",$n["type"]))return"HEX(".idf_escape($n["field"]).")";if($n["type"]=="bit")return"BIN(".idf_escape($n["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($n["field"]).")";}function
unconvert_field(array$n,$J){if(preg_match("~binary~",$n["type"]))$J="UNHEX($J)";if($n["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$n["type"])){$Xg=(min_version(8)?"ST_":"");$J=$Xg."GeomFromText($J, $Xg"."SRID($n[field]))";}return$J;}function
support($Vc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Vc);}function
kill_process($u){return
queries("KILL ".number($u));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types(){return
array();}function
type_values($u){return"";}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($Jh,$h=null){return
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
page_header($Wi,$m="",$Oa=array(),$Xi=""){page_headers();if(is_ajax()&&$m){page_messages($m);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Yi=$Wi.($Xi!=""?": $Xi":"");$Zi=strip_tags($Yi.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
<html lang="',LANG,'" dir="',lang(86),'">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>',$Zi,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.4.2"),'">
';$Jb=adminer()->css();if(is_int(key($Jb)))$Jb=array_fill_keys($Jb,'light');$Fd=in_array('light',$Jb)||in_array('',$Jb);$Dd=in_array('dark',$Jb)||in_array('',$Jb);$Mb=($Fd?($Dd?null:false):($Dd?:null));$nf=" media='(prefers-color-scheme: dark)'";if($Mb!==false)echo"<link rel='stylesheet'".($Mb?"":$nf)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.4.2")."'>\n";echo"<meta name='color-scheme' content='".($Mb===null?"light dark":($Mb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.2");if(adminer()->head($Mb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.2")."'>\n";foreach($Jb
as$Dj=>$yf){$_a=($yf=='dark'&&!$Mb?$nf:($yf=='light'&&$Dd?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$_a href='".h($Dj)."'>\n";}echo"\n<body class='".lang(86)." nojs";adminer()->bodyClass();echo"'>\n";$p=get_temp_dir()."/adminer.version";echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."')")."});
document.body.classList.replace('nojs', 'js');
const offlineMessage = '".js_escape(lang(87))."';
const thousandsSeparator = '".js_escape(lang(4))."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Oa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.get_driver(DRIVER).'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:lang(34));if($Oa===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Oa)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Oa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Oa
as$y=>$X){$ac=(is_array($X)?$X[1]:h($X));if($ac!="")echo"<a href='".h(ME."$y=").urlencode(is_array($X)?$X[0]:$X)."'>$ac</a> » ";}}echo"$Wi\n";}}echo"<h2>$Yi</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($m);$j=&get_session("dbs");if(DB!=""&&$j&&!in_array(DB,$j,true))$j=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Ib){$Hd=array();foreach($Ib
as$y=>$X)$Hd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$Hd));}adminer()->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"'none'","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$Kf;if(!$Kf)$Kf=base64_encode(rand_string());return$Kf;}function
page_messages($m){$Cj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$uf=idx($_SESSION["messages"],$Cj);if($uf){echo"<div class='message'>".implode("</div>\n<div class='message'>",$uf)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$Cj]);}if($m)echo"<div class='error'>$m</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
page_footer($xf=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($xf);echo"</div>\n";if($xf!="auth")echo'<form action="" method="post">
<p class="logout">
<span>',h($_GET["username"])."\n",'</span>
<input type="submit" name="logout" value="',lang(88),'" id="logout">
',input_token(),'</form>
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
int32($Cf){while($Cf>=2147483648)$Cf-=4294967296;while($Cf<=-2147483649)$Cf+=4294967296;return(int)$Cf;}function
long2str(array$W,$Uj){$Hh='';foreach($W
as$X)$Hh
.=pack('V',$X);if($Uj)return
substr($Hh,0,end($W));return$Hh;}function
str2long($Hh,$Uj){$W=array_values(unpack('V*',str_pad($Hh,4*ceil(strlen($Hh)/4),"\0")));if($Uj)$W[]=strlen($Hh);return$W;}function
xxtea_mx($bk,$ak,$zi,$Ce){return
int32((($bk>>5&0x7FFFFFF)^$ak<<2)+(($ak>>3&0x1FFFFFFF)^$bk<<4))^int32(($zi^$ak)+($Ce^$bk));}function
encrypt_string($ui,$y){if($ui=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($ui,true);$Cf=count($W)-1;$bk=$W[$Cf];$ak=$W[0];$hh=floor(6+52/($Cf+1));$zi=0;while($hh-->0){$zi=int32($zi+0x9E3779B9);$pc=$zi>>2&3;for($xg=0;$xg<$Cf;$xg++){$ak=$W[$xg+1];$Bf=xxtea_mx($bk,$ak,$zi,$y[$xg&3^$pc]);$bk=int32($W[$xg]+$Bf);$W[$xg]=$bk;}$ak=$W[0];$Bf=xxtea_mx($bk,$ak,$zi,$y[$xg&3^$pc]);$bk=int32($W[$Cf]+$Bf);$W[$Cf]=$bk;}return
long2str($W,false);}function
decrypt_string($ui,$y){if($ui=="")return"";if(!$y)return
false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($ui,false);$Cf=count($W)-1;$bk=$W[$Cf];$ak=$W[0];$hh=floor(6+52/($Cf+1));$zi=int32($hh*0x9E3779B9);while($zi){$pc=$zi>>2&3;for($xg=$Cf;$xg>0;$xg--){$bk=$W[$xg-1];$Bf=xxtea_mx($bk,$ak,$zi,$y[$xg&3^$pc]);$ak=int32($W[$xg]-$Bf);$W[$xg]=$ak;}$bk=$W[$Cf];$Bf=xxtea_mx($bk,$ak,$zi,$y[$xg&3^$pc]);$ak=int32($W[0]-$Bf);$W[0]=$ak;$zi=int32($zi-0x9E3779B9);}return
long2str($W,true);}$Ng=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Ng[$y]=$X;}}function
add_invalid_login(){$Ha=get_temp_dir()."/adminer.invalid";foreach(glob("$Ha*")?:array($Ha)as$p){$r=file_open_lock($p);if($r)break;}if(!$r)$r=file_open_lock("$Ha-".rand_string());if(!$r)return;$te=unserialize(stream_get_contents($r));$Ti=time();if($te){foreach($te
as$ue=>$X){if($X[0]<$Ti)unset($te[$ue]);}}$se=&$te[adminer()->bruteForceKey()];if(!$se)$se=array($Ti+30*60,0);$se[1]++;file_write_unlock($r,serialize($te));}function
check_invalid_login(array&$Ng){$te=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$p){$r=file_open_lock($p);if($r){$te=unserialize(stream_get_contents($r));file_unlock($r);break;}}$se=idx($te,adminer()->bruteForceKey(),array());$Jf=($se[1]>29?$se[0]-time():0);if($Jf>0)auth_error(lang(89,ceil($Jf/60)),$Ng);}$Aa=$_POST["auth"];if($Aa){session_regenerate_id();$Pj=$Aa["driver"];$N=$Aa["server"];$V=$Aa["username"];$F=(string)$Aa["password"];$k=$Aa["db"];set_password($Pj,$N,$V,$F);$_SESSION["db"][$Pj][$N][$V][$k]=true;if($Aa["permanent"]){$y=implode("-",array_map('base64_encode',array($Pj,$N,$V,$k)));$ch=adminer()->permanentLogin(true);$Ng[$y]="$y:".base64_encode($ch?encrypt_string($F,$ch):"");cookie("adminer_permanent",implode(" ",$Ng));}if(count($_POST)==1||DRIVER!=$Pj||SERVER!=$N||$_GET["username"]!==$V||DB!=$k)redirect(auth_url($Pj,$N,$V,$k));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$y)set_session($y,null);unset_permanent($Ng);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(90).' '.lang(91));}elseif($Ng&&!$_SESSION["pwds"]){session_regenerate_id();$ch=adminer()->permanentLogin();foreach($Ng
as$y=>$X){list(,$eb)=explode(":",$X);list($Pj,$N,$V,$k)=array_map('base64_decode',explode("-",$y));set_password($Pj,$N,$V,decrypt_string(base64_decode($eb),$ch));$_SESSION["db"][$Pj][$N][$V][$k]=true;}}function
unset_permanent(array&$Ng){foreach($Ng
as$y=>$X){list($Pj,$N,$V,$k)=array_map('base64_decode',explode("-",$y));if($Pj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$k==DB)unset($Ng[$y]);}cookie("adminer_permanent",implode(" ",$Ng));}function
auth_error($m,array&$Ng){$bi=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$bi]||$_GET[$bi])&&!$_SESSION["token"])$m=lang(92);else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$m
.=($m?'<br>':'').lang(93,target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Ng);}}if(!$_COOKIE[$bi]&&$_GET[$bi]&&ini_bool("session.use_only_cookies"))$m=lang(94);$_g=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$_g["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(39),$m,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".lang(95)."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Ng);page_header(lang(96),lang(97,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$g='';if(isset($_GET["username"])&&is_string(get_password())){list(,$Rg)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$Rg,$A)&&($A[1]<1024||$A[1]>65535))auth_error(lang(98),$Ng);check_invalid_login($Ng);$Hb=adminer()->credentials();$g=Driver::connect($Hb[0],$Hb[1],$Hb[2]);if(is_object($g)){Db::$instance=$g;Driver::$instance=new
Driver($g);if($g->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$Xe=null;if(!is_object($g)||($Xe=adminer()->login($_GET["username"],get_password()))!==true){$m=(is_string($g)?nl_br(h($g)):(is_string($Xe)?$Xe:lang(99))).(preg_match('~^ | $~',get_password())?'<br>'.lang(100):'');auth_error($m,$Ng);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(88),lang(101));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Aa&&$_POST["token"])$_POST["token"]=get_token();$m='';if($_POST){if(!verify_token()){$le="max_input_vars";$lf=ini_get($le);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$lf||$X<$lf)){$le=$y;$lf=$X;}}}$m=(!$_POST["token"]&&$lf?lang(102,"'$le'"):lang(101).' '.lang(103));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$m=lang(104,"'post_max_size'");if(isset($_GET["sql"]))$m
.=' '.lang(105);}function
print_select_result($I,$h=null,array$mg=array(),$z=0){$Ve=array();$x=array();$e=array();$Ma=array();$rj=array();$J=array();for($t=0;(!$z||$t<$z)&&($K=$I->fetch_row());$t++){if(!$t){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($_e=0;$_e<count($K);$_e++){$n=$I->fetch_field();$B=$n->name;$lg=(isset($n->orgtable)?$n->orgtable:"");$kg=(isset($n->orgname)?$n->orgname:$B);if($mg&&JUSH=="sql")$Ve[$_e]=($B=="table"?"table=":($B=="possible_keys"?"indexes=":null));elseif($lg!=""){if(isset($n->table))$J[$n->table]=$lg;if(!isset($x[$lg])){$x[$lg]=array();foreach(indexes($lg,$h)as$w){if($w["type"]=="PRIMARY"){$x[$lg]=array_flip($w["columns"]);break;}}$e[$lg]=$x[$lg];}if(isset($e[$lg][$kg])){unset($e[$lg][$kg]);$x[$lg][$kg]=$_e;$Ve[$_e]=$lg;}}if($n->charsetnr==63)$Ma[$_e]=true;$rj[$_e]=$n->type;echo"<th".($lg!=""||$n->name!=$kg?" title='".h(($lg!=""?"$lg.":"").$kg)."'":"").">".h($B).($mg?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($B),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
as$y=>$X){$_="";if(isset($Ve[$y])&&!$e[$Ve[$y]]){if($mg&&JUSH=="sql"){$R=$K[array_search("table=",$Ve)];$_=ME.$Ve[$y].urlencode($mg[$R]!=""?$mg[$R]:$R);}else{$_=ME."edit=".urlencode($Ve[$y]);foreach($x[$Ve[$y]]as$jb=>$_e){if($K[$_e]===null){$_="";break;}$_
.="&where".urlencode("[".bracket_escape($jb)."]")."=".urlencode($K[$_e]);}}}$n=array('type'=>($Ma[$y]?'blob':($rj[$y]==254?'char':'')),);$X=select_value($X,$_,$n,null);echo"<td".($rj[$y]<=9||$rj[$y]==246?" class='number'":"").">$X";}}echo($t?"</table>\n</div>":"<p class='message'>".lang(14))."\n";return$J;}function
referencable_primary($Th){$J=array();foreach(table_status('',true)as$Di=>$R){if($Di!=$Th&&fk_support($R)){foreach(fields($Di)as$n){if($n["primary"]){if($J[$Di]){unset($J[$Di]);break;}$J[$Di]=$n;}}}}return$J;}function
textarea($B,$Y,$L=10,$mb=80){echo"<textarea name='".h($B)."' rows='$L' cols='$mb' class='sqlarea jush-".JUSH."' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
as$X)echo
h($X[0])."\n\n\n";}else
echo
h($Y);echo"</textarea>";}function
select_input($_a,array$gg,$Y="",$ag="",$Og=""){$Li=($gg?"select":"input");return"<$Li$_a".($gg?"><option value=''>$Og".optionlist($gg,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Og'>").($ag?script("qsl('$Li').onchange = $ag;",""):"");}function
json_row($y,$X=null,$Gc=true){static$cd=true;if($cd)echo"{";if($y!=""){echo($cd?"":",")."\n\t\"".addcslashes($y,"\r\n\t\"\\/").'": '.($X!==null?($Gc?'"'.addcslashes($X,"\r\n\"\\/").'"':$X):'null');$cd=false;}else{echo"\n}\n";$cd=true;}}function
edit_type($y,array$n,array$lb,array$md=array(),array$Sc=array()){$U=$n["type"];echo"<td><select name='".h($y)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($md[$U])&&!in_array($U,$Sc))$Sc[]=$U;$vi=driver()->structuredTypes();if($md)$vi[lang(106)]=$md;echo
optionlist(array_merge($Sc,$vi),$U),"</select><td>","<input name='".h($y)."[length]' value='".h($n["length"])."' size='3'".(!$n["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($lb?"<input list='collations' name='".h($y)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($n["collation"])."' placeholder='(".lang(107).")'>":''),(driver()->unsigned?"<select name='".h($y)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$n["unsigned"]).'</select>':''),(isset($n['on_update'])?"<select name='".h($y)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(108).")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$n["on_update"])?"CURRENT_TIMESTAMP":$n["on_update"])).'</select>':''),($md?"<select name='".h($y)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".lang(109).")".optionlist(explode("|",driver()->onActions),$n["on_delete"])."</select> ":" ");}function
process_length($Re){$Bc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$Bc(?:\\s*,\\s*$Bc)*+\\s*\\)?\\s*\$~",$Re)&&preg_match_all("~$Bc~",$Re,$df)?"(".implode(",",$df[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$Re)));}function
process_type(array$n,$kb="COLLATE"){return" $n[type]".process_length($n["length"]).(preg_match(number_type(),$n["type"])&&in_array($n["unsigned"],driver()->unsigned)?" $n[unsigned]":"").(preg_match('~char|text|enum|set~',$n["type"])&&$n["collation"]?" $kb ".(JUSH=="mssql"?$n["collation"]:q($n["collation"])):"");}function
process_field(array$n,array$qj){if($n["on_update"])$n["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$n["on_update"]);return
array(idf_escape(trim($n["field"])),process_type($qj),($n["null"]?" NULL":" NOT NULL"),default_value($n),(preg_match('~timestamp|datetime~',$n["type"])&&$n["on_update"]?" ON UPDATE $n[on_update]":""),(support("comment")&&$n["comment"]!=""?" COMMENT ".q($n["comment"]):""),($n["auto_increment"]?auto_increment():null),);}function
default_value(array$n){if($n["default"]===null)return"";$l=str_replace("\r","",$n["default"]);$td=$n["generated"];return(in_array($td,driver()->generated)?(JUSH=="mssql"?" AS ($l)".($td=="VIRTUAL"?"":" $td"):" GENERATED ALWAYS AS ($l) $td"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$l)&&(preg_match('~char|binary|text|json|enum|set~',$n["type"])||preg_match('~^(?![a-z])~i',$l))?(JUSH=="sql"&&preg_match('~text|json~',$n["type"])?"(".q($l).")":q($l)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($l)":$l))));}function
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$U))return" class='$y'";}}function
edit_fields(array$o,array$lb,$U="TABLE",array$md=array()){$o=array_values($o);$Vb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$rb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?lang(110):lang(111)),"<td id='label-type'>".lang(50)."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".lang(112),"<td>".lang(113);if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".lang(52)."'>AI</abbr>",doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",'mssql'=>"t-sql/statements/create-table-transact-sql-identity-property",)),"<td id='label-default'$Vb>".lang(53),(support("comment")?"<td id='label-comment'$rb>".lang(51):"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($o))."]","+",lang(114)),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($o
as$t=>$n){$t++;$ng=$n[($_POST?"orig":"field")];$fc=(isset($_POST["add"][$t-1])||(isset($n["field"])&&!idx($_POST["drop_col"],$t)))&&(support("drop_col")||$ng=="");echo"<tr".($fc?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",driver()->inout),$n["inout"]):"")."<th>";if($fc)echo"<input name='fields[$t][field]' value='".h($n["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'".(isset($_POST["add"][$t-1])?" autofocus":"").">";echo
input_hidden("fields[$t][orig]",$ng);edit_type("fields[$t]",$n,$lb,$md);if($U=="TABLE"){echo"<td>".checkbox("fields[$t][null]",1,$n["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$t'".($n["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Vb>".(driver()->generated?html_select("fields[$t][generated]",array_merge(array("","DEFAULT"),driver()->generated),$n["generated"])." ":checkbox("fields[$t][generated]",1,$n["generated"],"","","","label-default"));$_a=" name='fields[$t][default]' aria-labelledby='label-default'";$Y=h($n["default"]);echo(preg_match('~\n~',$n["default"])?"<textarea$_a rows='2' cols='30' style='vertical-align: bottom;'>\n$Y</textarea>":"<input$_a value='$Y'>"),(support("comment")?"<td$rb><input name='fields[$t][comment]' value='".h($n["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(support("move_col")?icon("plus","add[$t]","+",lang(114))." ".icon("up","up[$t]","↑",lang(115))." ".icon("down","down[$t]","↓",lang(116))." ":""),($ng==""||support("drop_col")?icon("cross","drop_col[$t]","x",lang(117)):"");}}function
process_fields(array&$o){$C=0;if($_POST["up"]){$Le=0;foreach($o
as$y=>$n){if(key($_POST["up"])==$y){unset($o[$y]);array_splice($o,$Le,0,array($n));break;}if(isset($n["field"]))$Le=$C;$C++;}}elseif($_POST["down"]){$od=false;foreach($o
as$y=>$n){if(isset($n["field"])&&$od){unset($o[key($_POST["down"])]);array_splice($o,$C,0,array($od));break;}if(key($_POST["down"])==$y)$od=$n;$C++;}}elseif($_POST["add"]){$o=array_values($o);array_splice($o,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum(array$A){$X=$A[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
grant($vd,array$eh,$e,$Xf){if(!$eh)return
true;if($eh==array("ALL PRIVILEGES","GRANT OPTION"))return($vd=="GRANT"?queries("$vd ALL PRIVILEGES$Xf WITH GRANT OPTION"):queries("$vd ALL PRIVILEGES$Xf")&&queries("$vd GRANT OPTION$Xf"));return
queries("$vd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$eh).$e).$Xf);}function
drop_create($jc,$i,$lc,$Pi,$nc,$We,$tf,$rf,$sf,$Uf,$Gf){if($_POST["drop"])query_redirect($jc,$We,$tf);elseif($Uf=="")query_redirect($i,$We,$sf);elseif($Uf!=$Gf){$Gb=queries($i);queries_redirect($We,$rf,$Gb&&queries($jc));if($Gb)queries($lc);}else
queries_redirect($We,$rf,queries($Pi)&&queries($nc)&&queries($jc)&&queries($i));}function
create_trigger($Xf,array$K){$Vi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Xf.$Vi:$Vi.$Xf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
create_routine($Dh,array$K){$O=array();$o=(array)$K["fields"];ksort($o);foreach($o
as$n){if($n["field"]!="")$O[]=(preg_match("~^(".driver()->inout.")\$~",$n["inout"])?"$n[inout] ":"").idf_escape($n["field"]).process_type($n,"CHARACTER SET");}$Xb=rtrim($K["definition"],";");return"CREATE $Dh ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($Dh=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Xb):"\n$Xb;");}function
remove_definer($H){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
format_foreign_key(array$q){$k=$q["db"];$Lf=$q["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$q["source"])).") REFERENCES ".($k!=""&&$k!=$_GET["db"]?idf_escape($k).".":"").($Lf!=""&&$Lf!=$_GET["ns"]?idf_escape($Lf).".":"").idf_escape($q["table"])." (".implode(", ",array_map('Adminer\idf_escape',$q["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"").($q["deferrable"]?" $q[deferrable]":"");}function
tar_file($p,$aj){$J=pack("a100a8a8a8a12a12",$p,644,0,0,decoct($aj->size),decoct(time()));$db=8*32;for($t=0;$t<strlen($J);$t++)$db+=ord($J[$t]);$J
.=sprintf("%06o",$db)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$aj->send();echo
str_repeat("\0",511-($aj->size+511)%512);}function
doc_link(array$Kg,$Qi="<sup>?</sup>"){$Zh=connection()->server_info;$Qj=preg_replace('~^(\d\.?\d).*~s','\1',$Zh);$Ej=array('sql'=>"https://dev.mysql.com/doc/refman/$Qj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$Qj)."/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$Zh)."&id=",);if(connection()->flavor=='maria'){$Ej['sql']="https://mariadb.com/kb/en/";$Kg['sql']=(isset($Kg['mariadb'])?$Kg['mariadb']:str_replace(".html","/",$Kg['sql']));}return($Kg[JUSH]?"<a href='".h($Ej[JUSH].$Kg[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Qj":""))."'".target_blank().">$Qi</a>":"");}function
db_size($k){if(!connection()->select_db($k))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
format_number($J);}function
set_utf8mb4($i){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$i)){$O=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(38).": ".h(DB),lang(118),true);}else{if($_POST["db"]&&!$m)queries_redirect(substr(ME,0,-1),lang(119),drop_databases($_POST["db"]));page_header(lang(120),$m,false);echo"<p class='links'>\n";foreach(array('database'=>lang(121),'privileges'=>lang(72),'processlist'=>lang(122),'variables'=>lang(123),'status'=>lang(124),)as$y=>$X){if(support($y))echo"<a href='".h(ME)."$y='>$X</a>\n";}echo"<p>".lang(125,get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".lang(126,"<b>".h(logged_user())."</b>")."\n";$j=adminer()->databases();if($j){$Lh=support("scheme");$lb=collations();echo"<form action='' method='post'>\n","<table class='checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".lang(38).(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".lang(127)."</a>":"")."<td>".lang(128)."<td>".lang(129)."<td>".lang(130)." - <a href='".h(ME)."dbsize=1'>".lang(131)."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$j=($_GET["dbsize"]?count_tables($j):array_flip($j));foreach($j
as$k=>$T){$Ch=h(ME)."db=".urlencode($k);$u=h("Db-".$k);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$k,in_array($k,(array)$_POST["db"]),"","","",$u):""),"<th><a href='$Ch' id='$u'>".h($k)."</a>";$c=h(db_collation($k,$lb));echo"<td>".(support("database")?"<a href='$Ch".($Lh?"&amp;ns=":"")."&amp;database=' title='".lang(68)."'>$c</a>":$c),"<td align='right'><a href='$Ch&amp;schema=' id='tables-".h($k)."' title='".lang(71)."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($k)."'>".($_GET["dbsize"]?db_size($k):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".lang(132)." <span id='selected'></span></legend><div>\n".input_hidden("all").script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".lang(133)."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".lang(134)."</h3>\n<ul>\n";foreach(adminer()->plugins
as$Pg){$bc=(method_exists($Pg,'description')?$Pg->description():"");if(!$bc){$sh=new
\ReflectionObject($Pg);if(preg_match('~^/[\s*]+(.+)~',$sh->getDocComment(),$A))$bc=$A[1];}$Mh=(method_exists($Pg,'screenshot')?$Pg->screenshot():"");echo"<li><b>".get_class($Pg)."</b>".h($bc?": $bc":"").($Mh?" (<a href='".h($Mh)."'".target_blank().">".lang(135)."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(80).": ".h($_GET["ns"]),lang(136),true);page_footer("ns");exit;}}}adminer()->afterConnect();class
TmpFile{private$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($Ab){$this->size+=strlen($Ab);fwrite($this->handler,$Ab);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$o=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$o)),$M);$K=($I?$I->fetch_row():array());echo
driver()->value($K[0],$o[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$o=fields($a);if(!$o)$m=error()?:lang(11);$S=table_status1($a);$B=adminer()->tableName($S);page_header(($o&&is_view($S)?$S['Engine']=='materialized view'?lang(137):lang(138):lang(139)).": ".($B!=""?$B:h($a)),$m);$Bh=array();foreach($o
as$y=>$n)$Bh+=$n["privileges"];adminer()->selectLinks($S,(isset($Bh["insert"])||!support("table")?"":null));$qb=$S["Comment"];if($qb!="")echo"<p class='nowrap'>".lang(51).": ".h($qb)."\n";if($o)adminer()->tableStructurePrint($o,$S);function
tables_links(array$T){echo"<ul>\n";foreach($T
as$K){$_=preg_replace('~ns=[^&]*~',"ns=".urlencode($K["ns"]),ME);echo"<li><a href='".h($_."table=".urlencode($K["table"]))."'>".($K["ns"]!=$_GET["ns"]?"<b>".h($K["ns"])."</b>.":"").h($K["table"])."</a>";}echo"</ul>\n";}$ke=driver()->inheritsFrom($a);if($ke){echo"<h3>".lang(140)."</h3>\n";tables_links($ke);}if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".lang(141)."</h3>\n";$x=indexes($a);if($x)adminer()->tableIndexesPrint($x,$S);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(142)."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".lang(106)."</h3>\n";$md=foreign_keys($a);if($md){echo"<table>\n","<thead><tr><th>".lang(143)."<td>".lang(144)."<td>".lang(109)."<td>".lang(108)."<td></thead>\n";foreach($md
as$B=>$q){echo"<tr title='".h($B)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$q["source"]))."</i>";$_=($q["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($q["db"]),ME):($q["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($q["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($q["table"]))."'>".($q["db"]!=""&&$q["db"]!=DB?"<b>".h($q["db"])."</b>.":"").($q["ns"]!=""&&$q["ns"]!=$_GET["ns"]?"<b>".h($q["ns"])."</b>.":"").h($q["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$q["target"]))."</i>)","<td>".h($q["on_delete"]),"<td>".h($q["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($B)).'">'.lang(145).'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(146)."</a>\n";}if(support("check")){echo"<h3 id='checks'>".lang(147)."</h3>\n";$Za=driver()->checkConstraints($a);if($Za){echo"<table>\n";foreach($Za
as$y=>$X)echo"<tr title='".h($y)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($y))."'>".lang(145)."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.lang(148)."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(149)."</h3>\n";$oj=triggers($a);if($oj){echo"<table>\n";foreach($oj
as$y=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($y)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($y))."'>".lang(145)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(150)."</a>\n";}$je=driver()->inheritedTables($a);if($je){echo"<h3 id='partitions'>".lang(151)."</h3>\n";$Dg=driver()->partitionsInfo($a);if($Dg)echo"<p><code class='jush-".JUSH."'>BY ".h("$Dg[partition_by]($Dg[partition])")."</code>\n";tables_links($je);}}elseif(isset($_GET["schema"])){page_header(lang(71),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Fi=array();$Gi=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$df,PREG_SET_ORDER);foreach($df
as$t=>$A){$Fi[$A[1]]=array($A[2],$A[3]);$Gi[]="\n\t'".js_escape($A[1])."': [ $A[2], $A[3] ]";}$dj=0;$Ia=-1;$Jh=array();$rh=array();$Pe=array();$ua=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$Sg=0;$Jh[$R]["fields"]=array();foreach($ua[$R]as$n){$Sg+=1.25;$n["pos"]=$Sg;$Jh[$R]["fields"][$n["field"]]=$n;}$Jh[$R]["pos"]=($Fi[$R]?:array($dj,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$Ne=$Ia;if(idx($Fi[$R],1)||idx($Fi[$X["table"]],1))$Ne=min(idx($Fi[$R],1,0),idx($Fi[$X["table"]],1,0))-1;else$Ia-=.1;while($Pe[(string)$Ne])$Ne-=.0001;$Jh[$R]["references"][$X["table"]][(string)$Ne]=array($X["source"],$X["target"]);$rh[$X["table"]][$R][(string)$Ne]=$X["target"];$Pe[(string)$Ne]=true;}}$dj=max($dj,$Jh[$R]["pos"][0]+2.5+$Sg);}echo'<div id="schema" style="height: ',$dj,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = () => false;
const tablePos = {',implode(",",$Gi)."\n",'};
const em = qs(\'#schema\').offsetHeight / ',$dj,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($Jh
as$B=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($B).'"><b>'.h($B)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$n){$X='<span'.type_class($n["type"]).' title="'.h($n["type"].($n["length"]?"($n[length])":"").($n["null"]?" NULL":'')).'">'.h($n["field"]).'</span>';echo"<br>".($n["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$Ni=>$th){foreach($th
as$Ne=>$oh){$Oe=$Ne-idx($Fi[$B],1);$t=0;foreach($oh[0]as$ji)echo"\n<div class='references' title='".h($Ni)."' id='refs$Ne-".($t++)."' style='left: $Oe"."em; top: ".$R["fields"][$ji]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$Oe)."em;'></div></div>";}}foreach((array)$rh[$B]as$Ni=>$th){foreach($th
as$Ne=>$e){$Oe=$Ne-idx($Fi[$B],1);$t=0;foreach($e
as$Mi)echo"\n<div class='references arrow' title='".h($Ni)."' id='refd$Ne-".($t++)."' style='left: $Oe"."em; top: ".$R["fields"][$Mi]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$Oe)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Jh
as$B=>$R){foreach((array)$R["references"]as$Ni=>$th){foreach($th
as$Ne=>$oh){$wf=$dj;$jf=-10;foreach($oh[0]as$y=>$ji){$Tg=$R["pos"][0]+$R["fields"][$ji]["pos"];$Ug=$Jh[$Ni]["pos"][0]+$Jh[$Ni]["fields"][$oh[1][$y]]["pos"];$wf=min($wf,$Tg,$Ug);$jf=max($jf,$Tg,$Ug);}echo"<div class='references' id='refl$Ne' style='left: $Ne"."em; top: $wf"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($jf-$wf)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($da)),'" id="schema-link">',lang(152),'</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$m){save_settings(array_intersect_key($_POST,array_flip(array("output","format","db_style","types","routines","events","table_style","auto_increment","triggers","data_style"))),"adminer_export");$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Oc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$xe=preg_match('~sql~',$_POST["format"]);if($xe){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->server_info)." dump\n\n";if(JUSH=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$wi=$_POST["db_style"];$j=array(DB);if(DB==""){$j=$_POST["databases"];if(is_string($j))$j=explode("\n",rtrim(str_replace("\r","",$j),"\n"));}foreach((array)$j
as$k){adminer()->dumpDatabase($k);if(connection()->select_db($k)){if($xe){if($wi)echo
use_sql($k,$wi).";\n\n";$ug="";if($_POST["types"]){foreach(types()as$u=>$U){$Cc=type_values($u);if($Cc)$ug
.=($wi!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($Cc);\n\n";else$ug
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$B=$K["ROUTINE_NAME"];$Dh=$K["ROUTINE_TYPE"];$i=create_routine($Dh,array("name"=>$B)+routine($K["SPECIFIC_NAME"],$Dh));set_utf8mb4($i);$ug
.=($wi!='DROP+CREATE'?"DROP $Dh IF EXISTS ".idf_escape($B).";;\n":"")."$i;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$i=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($i);$ug
.=($wi!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$i;;\n\n";}}echo($ug&&JUSH=='sql'?"DELIMITER ;;\n\n$ug"."DELIMITER ;\n\n":$ug);}if($_POST["table_style"]||$_POST["data_style"]){$Sj=array();foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));$Nb=(DB==""||in_array($B,(array)$_POST["data"]));if($R||$Nb){$aj=null;if($Oc=="tar"){$aj=new
TmpFile;ob_start(array($aj,'write'),1e5);}adminer()->dumpTable($B,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Sj[]=$B;elseif($Nb){$o=fields($B);adminer()->dumpData($B,$_POST["data_style"],"SELECT *".convert_fields($o,$o)." FROM ".table($B));}if($xe&&$_POST["triggers"]&&$R&&($oj=trigger_sql($B)))echo"\nDELIMITER ;;\n$oj\nDELIMITER ;\n";if($Oc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$k/")."$B.csv",$aj);}elseif($xe)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$B=>$S){$R=(DB==""||in_array($B,(array)$_POST["tables"]));if($R&&!is_view($S))echo
foreign_keys_sql($B);}}foreach($Sj
as$Rj)adminer()->dumpTable($Rj,$_POST["table_style"],1);if($Oc=="tar")echo
pack("x512");}}}adminer()->dumpFooter();exit;}page_header(lang(77),$m,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table class="layout">
';$Rb=array('','USE','DROP+CREATE','CREATE');$Hi=array('','DROP+CREATE','CREATE');$Ob=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Ob[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"<tr><th>".lang(153)."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".lang(154)."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".lang(38)."<td>".html_select('db_style',$Rb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],lang(6)):"").(support("routine")?checkbox("routines",1,$K["routines"],lang(73)):"").(support("event")?checkbox("events",1,$K["events"],lang(75)):"")),"<tr><th>".lang(129)."<td>".html_select('table_style',$Hi,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(52)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(149)):""),"<tr><th>".lang(155)."<td>".html_select('data_style',$Ob,$K["data_style"]),'</table>
<p><input type="submit" value="',lang(77),'">
',input_token(),'
<table>
',script("qsl('table').onclick = dumpClick;");$Yg=array();if(DB!=""){$bb=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$bb>".lang(129)."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".lang(155)."<input type='checkbox' id='check-data'$bb></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Sj="";$Ji=tables_list();foreach($Ji
as$B=>$U){$Xg=preg_replace('~_.*~','',$B);$bb=($a==""||$a==(substr($a,-1)=="%"?"$Xg%":$B));$bh="<tr><td>".checkbox("tables[]",$B,$bb,$B,"","block");if($U!==null&&!preg_match('~table~i',$U))$Sj
.="$bh\n";else
echo"$bh<td align='right'><label class='block'><span id='Rows-".h($B)."'></span>".checkbox("data[]",$B,$bb)."</label>\n";$Yg[$Xg]++;}echo$Sj;if($Ji)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"").">".lang(38)."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$j=adminer()->databases();if($j){foreach($j
as$k){if(!information_schema($k)){$Xg=preg_replace('~_.*~','',$k);echo"<tr><td>".checkbox("databases[]",$k,$a==""||$a=="$Xg%",$k,"","block")."\n";$Yg[$Xg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$cd=true;foreach($Yg
as$y=>$X){if($y!=""&&$X>1){echo($cd?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$y%")."'>".h($y)."</a>";$cd=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(72));echo'<p class="links"><a href="'.h(ME).'user=">'.lang(156)."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$vd=$I;if(!$I)$I=connection()->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo
input_hidden("db",DB),($vd?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".lang(36)."<th>".lang(34)."<th></thead>\n";while($K=$I->fetch_assoc())echo'<tr><td>'.h($K["User"])."<td>".h($K["Host"]).'<td><a href="'.h(ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.lang(12)."</a>\n";if(!$vd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".lang(12)."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$m&&$_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();$Ld=&get_session("queries");$Kd=&$Ld[DB];if(!$m&&$_POST["clear"]){$Kd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?lang(76):lang(65)),$m);$Ue='--'.(JUSH=='sql'?' ':'');if(!$m&&$_POST){$r=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$ni=adminer()->importServerPath();$r=@fopen((file_exists($ni)?$ni:"compress.zlib://$ni.gz"),"rb");$H=($r?fread($r,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($of=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($of,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$hh=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Kd||first(end($Kd))!=$hh){restart_session();$Kd[]=array($hh,time());set_session("queries",$Ld);stop_session();}}$ki="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Ue)[^\n]*\n?|--\r?\n)";$Zb=driver()->delimiter;$C=0;$xc=true;$h=connect();if($h&&DB!=""){$h->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$h);}$pb=0;$Ec=array();$Ag='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Ue.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ej=microtime(true);$oa=get_settings("adminer_import");while($H!=""){if(!$C&&preg_match("~^$ki*+DELIMITER\\s+(\\S+)~i",$H,$A)){$Zb=preg_quote($A[1]);$H=substr($H,strlen($A[0]));}elseif(!$C&&JUSH=='pgsql'&&preg_match("~^($ki*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$A)){$Zb="\n\\\\\\.\r?\n";$C=strlen($A[0]);}else{preg_match("($Zb\\s*|$Ag)",$H,$A,PREG_OFFSET_CAPTURE,$C);list($od,$Sg)=$A[0];if(!$od&&$r&&!feof($r))$H
.=fread($r,1e5);else{if(!$od&&rtrim($H)=="")break;$C=$Sg+strlen($od);if($od&&!preg_match("(^$Zb)",$od)){$Ta=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($Sg>0&&strtolower($H[$Sg-1])=="e"));$Lg=($od=='/*'?'\*/':($od=='['?']':(preg_match("~^$Ue|^#~",$od)?"\n":preg_quote($od).($Ta?'|\\\\.':''))));while(preg_match("($Lg|\$)s",$H,$A,PREG_OFFSET_CAPTURE,$C)){$Hh=$A[0][0];if(!$Hh&&$r&&!feof($r))$H
.=fread($r,1e5);else{$C=$A[0][1]+strlen($Hh);if(!$Hh||$Hh[0]!="\\")break;}}}else{$xc=false;$hh=substr($H,0,$Sg+($Zb[0]=="\n"?3:0));$pb++;$bh="<pre id='sql-$pb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($hh)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$ki*+ATTACH\\b~i",$hh,$A)){echo$bh,"<p class='error'>".lang(157)."\n";$Ec[]=" <a href='#sql-$pb'>$pb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$bh;ob_flush();flush();}$si=microtime(true);if(connection()->multi_query($hh)&&$h&&preg_match("~^$ki*+USE\\b~i",$hh))$h->query($hh);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$bh:""),"<p class='error'>".lang(158).(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Ec[]=" <a href='#sql-$pb'>$pb</a>";if($_POST["error_stops"])break
2;}else{$Ti=" <span class='time'>(".format_time($si).")</span>".(strlen($hh)<1000?" <a href='".h(ME)."sql=".urlencode(trim($hh))."'>".lang(12)."</a>":"");$qa=connection()->affected_rows;$Vj=($_POST["only_errors"]?"":driver()->warnings());$Wj="warnings-$pb";if($Vj)$Ti
.=", <a href='#$Wj'>".lang(47)."</a>".script("qsl('a').onclick = partial(toggle, '$Wj');","");$Mc=null;$mg=null;$Nc="explain-$pb";if(is_object($I)){$z=$_POST["limit"];$mg=print_select_result($I,$h,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Nf=$I->num_rows;echo"<p class='sql-footer'>".($Nf?($z&&$Nf>$z?lang(159,$z):"").lang(160,$Nf):""),$Ti;if($h&&preg_match("~^($ki|\\()*+SELECT\\b~i",$hh)&&($Mc=explain($h,$hh)))echo", <a href='#$Nc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Nc');","");$u="export-$pb";echo", <a href='#$u'>".lang(77)."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."<span id='$u' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$oa["output"])." ".html_select("format",adminer()->dumpFormat(),$oa["format"]).input_hidden("query",$hh)."<input type='submit' name='export' value='".lang(77)."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$ki*+(CREATE|DROP|ALTER)$ki++(DATABASE|SCHEMA)\\b~i",$hh)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang(161,$qa)."$Ti\n";}echo($Vj?"<div id='$Wj' class='hidden'>\n$Vj</div>\n":"");if($Mc){echo"<div id='$Nc' class='hidden explain'>\n";print_select_result($Mc,$h,$mg);echo"</div>\n";}}$si=microtime(true);}while(connection()->next_result());}$H=substr($H,$C);$C=0;}}}}if($xc)echo"<p class='message'>".lang(162)."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang(163,$pb-count($Ec))," <span class='time'>(".format_time($ej).")</span>\n";elseif($Ec&&$pb>1)echo"<p class='error'>".lang(158).": ".implode("",$Ec)."\n";}else
echo"<p class='error'>".upload_error($H)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$Kc="<input type='submit' value='".lang(164)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$hh=$_GET["sql"];if($_POST)$hh=$_POST["query"];elseif($_GET["history"]=="all")$hh=$Kd;elseif($_GET["history"]!="")$hh=idx($Kd[$_GET["history"]],0);echo"<p>";textarea("query",$hh,20);echo
script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"<p>";adminer()->sqlPrintAfter();echo"$Kc\n",lang(165).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{$Ad=(extension_loaded("zlib")?"[.gz]":"");echo"<fieldset><legend>".lang(166)."</legend><div>",file_input("SQL$Ad: <input type='file' name='sql_file[]' multiple>\n$Kc"),"</div></fieldset>\n";$Wd=adminer()->importServerPath();if($Wd)echo"<fieldset><legend>".lang(167)."</legend><div>",lang(168,"<code>".h($Wd)."$Ad</code>"),' <input type="submit" name="webfile" value="'.lang(169).'">',"</div></fieldset>\n";echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(170))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(171))."\n",input_token();if(!isset($_GET["import"])&&$Kd){print_fieldset("history",lang(172),$_GET["history"]!="");for($X=end($Kd);$X;$X=prev($Kd)){$y=key($Kd);list($hh,$Ti,$sc)=$X;echo'<a href="'.h(ME."sql=&history=$y").'">'.lang(12)."</a>"." <span class='time' title='".@date('Y-m-d',$Ti)."'>".@date("H:i:s",$Ti)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Ue).*~m",'',$hh)))),80,"</code>").($sc?" <span class='time'>($sc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(173)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(174)."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$o=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$o):""):where($_GET,$o));$_j=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($o
as$B=>$n){if((!$_j&&!isset($n["privileges"]["insert"]))||adminer()->fieldName($n)=="")unset($o[$B]);}if($_POST&&!$m&&!isset($_GET["select"])){$We=$_POST["referer"];if($_POST["insert"])$We=($_j?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$We))$We=ME."select=".urlencode($a);$x=indexes($a);$vj=unique_array($_GET["where"],$x);$kh="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($We,lang(175),driver()->delete($a,$kh,$vj?0:1));else{$O=array();foreach($o
as$B=>$n){$X=process_input($n);if($X!==false&&$X!==null)$O[idf_escape($B)]=$X;}if($_j){if(!$O)redirect($We);queries_redirect($We,lang(176),driver()->update($a,$O,$kh,$vj?0:1));if(is_ajax()){page_headers();page_messages($m);exit;}}else{$I=driver()->insert($a,$O);$Me=($I?last_id($I):0);queries_redirect($We,lang(177,($Me?" $Me":"")),$I);}}}$K=null;if($Z){$M=array();foreach($o
as$B=>$n){if(isset($n["privileges"]["select"])){$ya=($_POST["clone"]&&$n["auto_increment"]?"''":convert_field($n));$M[]=($ya?"$ya AS ":"").idf_escape($B);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$m=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$o){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K
as$y=>$X){if(!$Z)$K[$y]=null;$o[$y]=array("field"=>$y,"null"=>($y!=driver()->primary),"auto_increment"=>($y==driver()->primary));}}}if($_POST["save"])$K=(array)$_POST["fields"]+($K?$K:array());edit_form($a,$o,$K,$_j,$m);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Fg=driver()->partitionBy;$Ig=($Fg?driver()->partitionsInfo($a):array());$qh=referencable_primary($a);$md=array();foreach($qh
as$Di=>$n)$md[str_replace("`","``",$Di)."`".str_replace("`","``",$n["field"])]=$Di;$pg=array();$S=array();if($a!=""){$pg=fields($a);$S=table_status1($a);if(count($S)<2)$m=lang(11);}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$m){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(178),drop_tables(array($a)));else{$o=array();$ua=array();$Fj=false;$kd=array();$og=reset($pg);$sa=" FIRST";foreach($K["fields"]as$y=>$n){$q=$md[$n["type"]];$qj=($q!==null?$qh[$q]:$n);if($n["field"]!=""){if(!$n["generated"])$n["default"]=null;$gh=process_field($n,$qj);$ua[]=array($n["orig"],$gh,$sa);if(!$og||$gh!==process_field($og,$og)){$o[]=array($n["orig"],$gh,$sa);if($n["orig"]!=""||$sa)$Fj=true;}if($q!==null)$kd[idf_escape($n["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$md[$n["type"]],'source'=>array($n["field"]),'target'=>array($qj["field"]),'on_delete'=>$n["on_delete"],));$sa=" AFTER ".idf_escape($n["field"]);}elseif($n["orig"]!=""){$Fj=true;$o[]=array($n["orig"]);}if($n["orig"]!=""){$og=next($pg);if(!$og)$sa="";}}$E=array();if(in_array($K["partition_by"],$Fg)){foreach($K
as$y=>$X){if(preg_match('~^partition~',$y))$E[$y]=$X;}foreach($E["partition_names"]as$y=>$B){if($B==""){unset($E["partition_names"][$y]);unset($E["partition_values"][$y]);}}$E["partition_names"]=array_values($E["partition_names"]);$E["partition_values"]=array_values($E["partition_values"]);if($E==$Ig)$E=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$E=null;$qf=lang(179);if($a==""){cookie("adminer_engine",$K["Engine"]);$qf=lang(180);}$B=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($B),$qf,alter_table($a,$B,(JUSH=="sqlite"&&($Fj||$kd)?$ua:$o),$kd,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$E));}}page_header(($a!=""?lang(45):lang(78)),$m,array("table"=>$a),h($a));if(!$_POST){$rj=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($rj["int"])?"int":(isset($rj["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($pg
as$n){$n["generated"]=$n["generated"]?:(isset($n["default"])?"DEFAULT":"");$K["fields"][]=$n;}if($Fg){$K+=$Ig;$K["partition_names"][]="";$K["partition_values"][]="";}}}$lb=collations();if(is_array(reset($lb)))$lb=call_user_func_array('array_merge',array_values($lb));$zc=driver()->engines();foreach($zc
as$yc){if(!strcasecmp($yc,$K["Engine"])){$K["Engine"]=$yc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo
lang(181).": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($zc?html_select("Engine",array(""=>"(".lang(182).")")+$zc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($lb)echo"<datalist id='collations'>".optionlist($lb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".lang(107).")'>\n");echo"<input type='submit' value='".lang(16)."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$lb,"TABLE",$md);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",lang(52).": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(183),"columnShow(this.checked, 5)","jsonly");$sb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$sb,lang(51),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($sb?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($sb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="',lang(16),'">
';}echo'
';if($a!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$a));if($Fg&&(JUSH=='sql'||$a=="")){$Gg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(185),$K["partition_by"]);echo"<p>".html_select("partition_by",array_merge(array(""),$Fg),$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",lang(186).": <input type='number' name='partitions' class='size".($Gg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($Gg?"":" class='hidden'").">\n","<thead><tr><th>".lang(187)."<th>".lang(188)."</thead>\n";foreach($K["partition_names"]as$y=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($y==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$y)).'">';echo"</table>\n</div></fieldset>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$ee=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$be=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$ee[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$ee[]="SPATIAL";$x=indexes($a);$o=fields($a);$G=array();if(JUSH=="mongo"){$G=$x["_id_"];unset($ee[0]);unset($x["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$m&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$w){$B=$w["name"];if(in_array($w["type"],$ee)){$e=array();$Se=array();$cc=array();$ce=(support("partial_indexes")?$w["partial"]:"");$ae=(in_array($w["algorithm"],$be)?$w["algorithm"]:"");$O=array();ksort($w["columns"]);foreach($w["columns"]as$y=>$d){if($d!=""){$Re=idx($w["lengths"],$y);$ac=idx($w["descs"],$y);$O[]=($o[$d]?idf_escape($d):$d).($Re?"(".(+$Re).")":"").($ac?" DESC":"");$e[]=$d;$Se[]=($Re?:null);$cc[]=$ac;}}$Lc=$x[$B];if($Lc){ksort($Lc["columns"]);ksort($Lc["lengths"]);ksort($Lc["descs"]);if($w["type"]==$Lc["type"]&&array_values($Lc["columns"])===$e&&(!$Lc["lengths"]||array_values($Lc["lengths"])===$Se)&&array_values($Lc["descs"])===$cc&&$Lc["partial"]==$ce&&(!$be||$Lc["algorithm"]==$ae)){unset($x[$B]);continue;}}if($e)$b[]=array($w["type"],$B,$O,$ae,$ce);}}foreach($x
as$B=>$Lc)$b[]=array($Lc["type"],$B,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(189),alter_indexes($a,$b));}page_header(lang(141),$m,array("table"=>$a),h($a));$Zc=array_keys($o);if($_POST["add"]){foreach($K["indexes"]as$y=>$w){if($w["columns"][count($w["columns"])]!="")$K["indexes"][$y]["columns"][]="";}$w=end($K["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($x
as$y=>$w){$x[$y]["name"]=$y;$x[$y]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$K["indexes"]=$x;}$Se=(JUSH=="sql"||JUSH=="mssql");$ei=($_POST?$_POST["options"]:get_setting("index_options"));echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap">
<thead><tr>
<th id="label-type">',lang(190);$Ud=" class='idxopts".($ei?"":" hidden")."'";if($be)echo"<th id='label-algorithm'$Ud>".lang(191).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/','pgsql'=>'indexes-types.html',));echo'<th><input type="submit" class="wayoff">',lang(192).($Se?"<span$Ud> (".lang(193).")</span>":"");if($Se||support("descidx"))echo
checkbox("options",1,$ei,lang(113),"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">',lang(194);if(support("partial_indexes"))echo"<th id='label-condition'$Ud>".lang(195);echo'<th><noscript>',icon("plus","add[0]","+",lang(114)),'</noscript>
</thead>
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$y=>$d)echo
select_input(" disabled",$Zc,$d),"<label><input disabled type='checkbox'>".lang(60)."</label> ";echo"<td><td>\n";}$_e=1;foreach($K["indexes"]as$w){if(!$_POST["drop_col"]||$_e!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$_e][type]",array(-1=>"")+$ee,$w["type"],($_e==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($be)echo"<td$Ud>".html_select("indexes[$_e][algorithm]",array_merge(array(""),$be),$w['algorithm'],"label-algorithm");echo"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$y=>$d){echo"<span>".select_input(" name='indexes[$_e][columns][$t]' title='".lang(49)."'",($o&&($d==""||$o[$d])?array_combine($Zc,$Zc):array()),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span$Ud>",($Se?"<input type='number' name='indexes[$_e][lengths][$t]' class='size' value='".h(idx($w["lengths"],$y))."' title='".lang(112)."'>":""),(support("descidx")?checkbox("indexes[$_e][descs][$t]",1,idx($w["descs"],$y),lang(60)):""),"</span> </span>";$t++;}echo"<td><input name='indexes[$_e][name]' value='".h($w["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n";if(support("partial_indexes"))echo"<td$Ud><input name='indexes[$_e][partial]' value='".h($w["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>".icon("cross","drop_col[$_e]","x",lang(117)).script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$_e++;}echo'</table>
</div>
<p>
<input type="submit" value="',lang(16),'">
',input_token(),'</form>
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$m&&!$_POST["add"]){$B=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(196),drop_databases(array(DB)));}elseif(DB!==$B){if(DB!=""){$_GET["db"]=$B;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($B),lang(197),rename_database($B,$K["collation"]));}else{$j=explode("\n",str_replace("\r","",$B));$xi=true;$Le="";foreach($j
as$k){if(count($j)==1||$k!=""){if(!create_database($k,$K["collation"]))$xi=false;$Le=$k;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Le),lang(198),$xi);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($B).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(199));}}page_header(DB!=""?lang(68):lang(121),$m,array(),h(DB));$lb=collations();$B=DB;if($_POST)$B=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$lb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$vd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$vd,$A)&&$A[1]){$B=stripcslashes(idf_unescape("`$A[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add"]||strpos($B,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($B).'</textarea><br>':'<input name="name" autofocus value="'.h($B).'" data-maxlength="64" autocapitalize="off">')."\n".($lb?html_select("collation",array(""=>"(".lang(107).")")+$lb,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),'<input type="submit" value="',lang(16),'">
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(133)."'>".confirm(lang(184,DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
icon("plus","add[0]","+",lang(114))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$m){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(200));else{$B=trim($K["name"]);$_
.=urlencode($B);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($B),$_,lang(201));elseif($_GET["ns"]!=$B)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($B),$_,lang(202));else
redirect($_);}}page_header($_GET["ns"]!=""?lang(69):lang(70),$m);if(!$K)$K["name"]=$_GET["ns"];echo'
<form action="" method="post">
<p><input name="name" autofocus value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(16),'">
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".lang(133)."'>".confirm(lang(184,$_GET["ns"]))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(203).": ".h($ca),$m);$Dh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Xd=array();$ug=array();foreach($Dh["fields"]as$t=>$n){if(substr($n["inout"],-3)=="OUT"&&JUSH=='sql')$ug[$t]="@".idf_escape($n["field"])." AS ".idf_escape($n["field"]);if(!$n["inout"]||substr($n["inout"],0,2)=="IN")$Xd[]=$t;}if(!$m&&$_POST){$Ua=array();foreach($Dh["fields"]as$y=>$n){$X="";if(in_array($y,$Xd)){$X=process_input($n);if($X===false)$X="''";if(isset($ug[$y]))connection()->query("SET @".idf_escape($n["field"])." = $X");}if(isset($ug[$y]))$Ua[]="@".idf_escape($n["field"]);elseif(in_array($y,$Xd))$Ua[]=$X;}$H=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($Dh["returns"],"type")=="record"?"* FROM ":"").table($ca)."(".implode(", ",$Ua).")";$si=microtime(true);$I=connection()->multi_query($H);$qa=connection()->affected_rows;echo
adminer()->selectQuery($H,$si,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$h=connect();if($h)$h->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$h);else
echo"<p class='message'>".lang(204,$qa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($ug)print_select_result(connection()->query("SELECT ".implode(", ",$ug)));}}echo'
<form action="" method="post">
';if($Xd){echo"<table class='layout'>\n";foreach($Xd
as$y){$n=$Dh["fields"][$y];$B=$n["field"];echo"<tr><th>".adminer()->fieldName($n);$Y=idx($_POST["fields"],$B);if($Y!=""){if($n["type"]=="set")$Y=implode(",",$Y);}input($n,$Y,idx($_POST["function"],$B,""));echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(203),'">
',input_token(),'</form>

<pre>
';function
pre_tr($Hh){return
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Hh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($A){$dd=pre_tr($A[2]);return"<table>\n".($A[1]?"<thead>$dd</thead>\n":$dd).pre_tr($A[4])."\n</table>";},preg_replace('~(\n(    -|mysql)&gt; )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Dh['comment']))));echo'</pre>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$B=$_GET["name"];$K=$_POST;if($_POST&&!$m&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$Mi=array();foreach($K["source"]as$y=>$X)$Mi[$y]=$K["target"][$y];$K["target"]=$Mi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $B"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($B==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($B)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(205):($B!=""?lang(206):lang(207))),$I);if(!$K["drop"])$m=lang(208);}page_header(lang(209),$m,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($B!=""){$md=foreign_keys($a);$K=$md[$B];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
<form action="" method="post">
';$ji=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$qg=get_schema();set_schema($K["ns"]);}$ph=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Mi=array_keys(fields(in_array($K["table"],$ph)?$K["table"]:reset($ph)));$ag="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".lang(210).": ".html_select("table",$ph,$K["table"],$ag)."</label>\n";if(support("scheme")){$Kh=array_filter(adminer()->schemas(),function($Jh){return!preg_match('~^information_schema$~i',$Jh);});echo"<label>".lang(80).": ".html_select("ns",$Kh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$ag)."</label>";if($K["ns"]!="")set_schema($qg);}elseif(JUSH!="sqlite"){$Sb=array();foreach(adminer()->databases()as$k){if(!information_schema($k))$Sb[]=$k;}echo"<label>".lang(79).": ".html_select("db",$Sb,$K["db"]!=""?$K["db"]:$_GET["db"],$ag)."</label>";}echo
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="',lang(211),'"></noscript>
<table>
<thead><tr><th id="label-source">',lang(143),'<th id="label-target">',lang(144),'</thead>
';$_e=0;foreach($K["source"]as$y=>$X){echo"<tr>","<td>".html_select("source[".(+$y)."]",array(-1=>"")+$ji,$X,($_e==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$y)."]",$Mi,idx($K["target"],$y),"","label-target");$_e++;}echo'</table>
<p>
<label>',lang(109),': ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),'</label>
<label>',lang(108),': ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),'</label>
',(DRIVER==='pgsql'?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$K["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",)),'<p>
<input type="submit" value="',lang(16),'">
<noscript><p><input type="submit" name="add" value="',lang(212),'"></noscript>
';if($B!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$B));echo
input_token(),'</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$rg="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$rg=strtoupper($P["Engine"]);}if($_POST&&!$m){$B=trim($K["name"]);$ya=" AS\n$K[select]";$We=ME."table=".urlencode($B);$qf=lang(213);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$B&&JUSH!="sqlite"&&$U=="VIEW"&&$rg=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($B).$ya,$We,$qf);else{$Oi=$B."_adminer_".uniqid();drop_create("DROP $rg ".table($a),"CREATE $U ".table($B).$ya,"DROP $U ".table($B),"CREATE $U ".table($Oi).$ya,"DROP $U ".table($Oi),($_POST["drop"]?substr(ME,0,-1):$We),lang(214),$qf,lang(215),$a,$B);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($rg!="VIEW");if(!$m)$m=error();}page_header(($a!=""?lang(44):lang(216)),$m,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>',lang(194),': <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],lang(137)):""),'<p>';textarea("select",$K["select"]);echo'<p>
<input type="submit" value="',lang(16),'">
';if($a!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$a));echo
input_token(),'</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$re=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$ti=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$m){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(217));elseif(in_array($K["INTERVAL_FIELD"],$re)&&isset($ti[$K["STATUS"]])){$Ih="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(218):lang(219)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Ih.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$Ih)."\n".$ti[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(220).": ".h($aa):lang(221)),$m);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
<form action="" method="post">
<table class="layout">
<tr><th>',lang(194),'<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(222),'<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
<tr><th title="datetime">',lang(223),'<td><input name="ENDS" value="',h($K["ENDS"]),'">
<tr><th>',lang(224),'<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$re,$K["INTERVAL_FIELD"]),'<tr><th>',lang(124),'<td>',html_select("STATUS",$ti,$K["STATUS"]),'<tr><th>',lang(51),'<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",lang(225)),'</table>
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',lang(16),'">
';if($aa!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$aa));echo
input_token(),'</form>
';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Dh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$m){$ng=routine($_GET["procedure"],$Dh);$Oi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$y=>$n){if($n["field"]=="")unset($K["fields"][$y]);}drop_create("DROP $Dh ".routine_id($ca,$ng),create_routine($Dh,$K),"DROP $Dh ".routine_id($K["name"],$K),create_routine($Dh,array("name"=>$Oi)+$K),"DROP $Dh ".routine_id($Oi,$K),substr(ME,0,-1),lang(226),lang(227),lang(228),$ca,$K["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(229):lang(230)).": ".h($ca):(isset($_GET["function"])?lang(231):lang(232))),$m);if(!$_POST){if($ca=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$Dh);$K["name"]=$ca;}}$lb=get_vals("SHOW CHARACTER SET");sort($lb);$Eh=routine_languages();echo($lb?"<datalist id='collations'>".optionlist($lb)."</datalist>":""),'
<form action="" method="post" id="form">
<p>',lang(194),': <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
',($Eh?"<label>".lang(21).": ".html_select("language",$Eh,$K["language"])."</label>\n":""),'<input type="submit" value="',lang(16),'">
<div class="scrollable">
<table class="nowrap">
';edit_fields($K["fields"],$lb,$Dh);if(isset($_GET["function"])){echo"<tr><td>".lang(233);edit_type("returns",(array)$K["returns"],$lb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$K["definition"],20);echo'<p>
<input type="submit" value="',lang(16),'">
';if($ca!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$ca));echo
input_token(),'</form>
';}elseif(isset($_GET["sequence"])){$ea=$_GET["sequence"];$K=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);$B=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($ea),$_,lang(234));elseif($ea=="")query_redirect("CREATE SEQUENCE ".idf_escape($B),$_,lang(235));elseif($ea!=$B)query_redirect("ALTER SEQUENCE ".idf_escape($ea)." RENAME TO ".idf_escape($B),$_,lang(236));else
redirect($_);}page_header($ea!=""?lang(237).": ".h($ea):lang(238),$m);if(!$K)$K["name"]=$ea;echo'
<form action="" method="post">
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(16),'">
';if($ea!="")echo"<input type='submit' name='drop' value='".lang(133)."'>".confirm(lang(184,$ea))."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["type"])){$fa=$_GET["type"];$K=$_POST;if($_POST&&!$m){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($fa),$_,lang(239));else
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,lang(240));}page_header($fa!=""?lang(241).": ".h($fa):lang(242),$m);if(!$K)$K["as"]="AS ";echo'
<form action="" method="post">
<p>
';if($fa!=""){$rj=driver()->types();$Cc=type_values($rj[$fa]);if($Cc)echo"<code class='jush-".JUSH."'>ENUM (".h($Cc).")</code>\n<p>";echo"<input type='submit' name='drop' value='".lang(133)."'>".confirm(lang(184,$fa))."\n";}else{echo
lang(194).": <input name='name' value='".h($K['name'])."' autocapitalize='off'>\n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"<p><input type='submit' value='".lang(16)."'>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$B=$_GET["name"];$K=$_POST;if($K&&!$m){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$B",($K["drop"]?"":$K["clause"]));else{$I=($B==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($B)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(243):($B!=""?lang(244):lang(245))),$I);}page_header(($B!=""?lang(246).": ".h($B):lang(148)),$m,array("table"=>$a));if(!$K){$cb=driver()->checkConstraints($a);$K=array("name"=>$B,"clause"=>$cb[$B]);}echo'
<form action="" method="post">
<p>';if(JUSH!="sqlite")echo
lang(194).': <input name="name" value="'.h($K["name"]).'" data-maxlength="64" autocapitalize="off"> ';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",),"?"),'<p>';textarea("clause",$K["clause"]);echo'<p><input type="submit" value="',lang(16),'">
';if($B!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$B));echo
input_token(),'</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$B="$_GET[name]";$nj=trigger_options();$K=(array)trigger($B,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$m&&in_array($_POST["Timing"],$nj["Timing"])&&in_array($_POST["Event"],$nj["Event"])&&in_array($_POST["Type"],$nj["Type"])){$Xf=" ON ".table($a);$jc="DROP TRIGGER ".idf_escape($B).(JUSH=="pgsql"?$Xf:"");$We=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($jc,$We,lang(247));else{if($B!="")queries($jc);queries_redirect($We,($B!=""?lang(248):lang(249)),queries(create_trigger($Xf,$_POST)));if($B!="")queries(create_trigger($Xf,$K+array("Type"=>reset($nj["Type"]))));}}$K=$_POST;}page_header(($B!=""?lang(250).": ".h($B):lang(251)),$m,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table class="layout">
<tr><th>',lang(252),'<td>',html_select("Timing",$nj["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>',lang(253),'<td>',html_select("Event",$nj["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$nj["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>',lang(50),'<td>',html_select("Type",$nj["Type"],$K["Type"]),'</table>
<p>',lang(194),': <input name="Trigger" value="',h($K["Trigger"]),'" data-maxlength="64" autocapitalize="off">
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$K["Statement"]);echo'<p>
<input type="submit" value="',lang(16),'">
';if($B!="")echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,$B));echo
input_token(),'</form>
';}elseif(isset($_GET["user"])){$ga=$_GET["user"];$eh=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$Bb)$eh[$Bb][$K["Privilege"]]=$K["Comment"];}$eh["Server Admin"]+=$eh["File access on server"];$eh["Databases"]["Create routine"]=$eh["Procedures"]["Create routine"];unset($eh["Procedures"]["Create routine"]);$eh["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$eh["Columns"][$X]=$eh["Tables"][$X];unset($eh["Server Admin"]["Usage"]);foreach($eh["Tables"]as$y=>$X)unset($eh["Databases"][$y]);$Ff=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Ff[$X]=(array)$Ff[$X]+idx($_POST["grants"],$y,array());}$wd=array();$Vf="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($ga)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$A)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$A[1],$df,PREG_SET_ORDER)){foreach($df
as$X){if($X[1]!="USAGE")$wd["$A[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$wd["$A[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$A))$Vf=$A[1];}}if($_POST&&!$m){$Wf=(isset($_GET["host"])?q($ga)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Wf",ME."privileges=",lang(254));else{$Hf=q($_POST["user"])."@".q($_POST["host"]);$Jg=$_POST["pass"];if($Jg!=''&&!$_POST["hashed"]&&!min_version(8)){$Jg=get_val("SELECT PASSWORD(".q($Jg).")");$m=!$Jg;}$Gb=false;if(!$m){if($Wf!=$Hf){$Gb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Hf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Jg));$m=!$Gb;}elseif($Jg!=$Vf)queries("SET PASSWORD FOR $Hf = ".q($Jg));}if(!$m){$Ah=array();foreach($Ff
as$Pf=>$vd){if(isset($_GET["grant"]))$vd=array_filter($vd);$vd=array_keys($vd);if(isset($_GET["grant"]))$Ah=array_diff(array_keys(array_filter($Ff[$Pf],'strlen')),$vd);elseif($Wf==$Hf){$Tf=array_keys((array)$wd[$Pf]);$Ah=array_diff($Tf,$vd);$vd=array_diff($vd,$Tf);unset($wd[$Pf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$Pf,$A)&&(!grant("REVOKE",$Ah,$A[2]," ON $A[1] FROM $Hf")||!grant("GRANT",$vd,$A[2]," ON $A[1] TO $Hf"))){$m=true;break;}}}if(!$m&&isset($_GET["host"])){if($Wf!=$Hf)queries("DROP USER $Wf");elseif(!isset($_GET["grant"])){foreach($wd
as$Pf=>$Ah){if(preg_match('~^(.+)(\(.*\))?$~U',$Pf,$A))grant("REVOKE",array_keys($Ah),$A[2]," ON $A[1] FROM $Hf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(255):lang(256)),!$m);if($Gb)connection()->query("DROP USER $Hf");}}page_header((isset($_GET["host"])?lang(36).": ".h("$ga@$_GET[host]"):lang(156)),$m,array("privileges"=>array('',lang(72))));$K=$_POST;if($K)$wd=$Ff;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Vf;if($Vf!="")$K["hashed"]=true;$wd[(DB==""||$wd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table class="layout">
<tr><th>',lang(34),'<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
<tr><th>',lang(36),'<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
<tr><th>',lang(37),'<td><input name="pass" id="pass" value="',h($K["pass"]),'" autocomplete="new-password">
',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["hashed"],lang(257),"typePassword(this.form['pass'], this.checked);")),'</table>

',"<table class='odds'>\n","<thead><tr><th colspan='2'>".lang(72).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($wd
as$Pf=>$vd){echo'<th>'.($Pf!="*.*"?"<input name='objects[$t]' value='".h($Pf)."' size='10' autocapitalize='off'>":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(34),"Databases"=>lang(38),"Tables"=>lang(139),"Columns"=>lang(49),"Procedures"=>lang(258),)as$Bb=>$ac){foreach((array)$eh[$Bb]as$dh=>$qb){echo"<tr><td".($ac?">$ac<td":" colspan='2'").' lang="en" title="'.h($qb).'">'.h($dh);$t=0;foreach($wd
as$Pf=>$vd){$B="'grants[$t][".h(strtoupper($dh))."]'";$Y=$vd[strtoupper($dh)];if($Bb=="Server Admin"&&$Pf!=(isset($wd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$B><option><option value='1'".($Y?" selected":"").">".lang(259)."<option value='0'".($Y=="0"?" selected":"").">".lang(260)."</select>";else
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$B value='1'".($Y?" checked":"").($dh=="All privileges"?" id='grants-$t-all'>":">".($dh=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$t-all'); };"))),"</label>";$t++;}}}echo"</table>\n",'<p>
<input type="submit" value="',lang(16),'">
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="',lang(133),'">',confirm(lang(184,"$ga@$_GET[host]"));echo
input_token(),'</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$m){$Ge=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$Ge++;}queries_redirect(ME."processlist=",lang(261,$Ge),$Ge||!$_POST["kill"]);}}page_header(lang(122),$m);echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap checkable odds">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(adminer()->processList()as$t=>$K){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
as$y=>$X)echo"<th>$y".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($y),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K
as$y=>$X)echo"<td>".((JUSH=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$y=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$y=="sql_text"&&$X!="")?"<code class='jush-".JUSH."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.lang(262).'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill"))echo($t+1)."/".lang(263,max_connections()),"<p><input type='submit' value='".lang(264)."'>\n";echo
input_token(),'</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$o=fields($a);$md=column_foreign_keys($a);$Rf=$S["Oid"];$pa=get_settings("adminer_import");$Bh=array();$e=array();$Ph=array();$jg=array();$Si="";foreach($o
as$y=>$n){$B=adminer()->fieldName($n);$Df=html_entity_decode(strip_tags($B),ENT_QUOTES);if(isset($n["privileges"]["select"])&&$B!=""){$e[$y]=$Df;if(is_shortable($n))$Si=adminer()->selectLengthProcess();}if(isset($n["privileges"]["where"])&&$B!="")$Ph[$y]=$Df;if(isset($n["privileges"]["order"])&&$B!="")$jg[$y]=$Df;$Bh+=$n["privileges"];}list($M,$xd)=adminer()->selectColumnsProcess($e,$x);$M=array_unique($M);$xd=array_unique($xd);$ve=count($xd)<count($M);$Z=adminer()->selectSearchProcess($o,$x);$ig=adminer()->selectOrderProcess($o,$x);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$wj=>$K){$ya=convert_field($o[key($K)]);$M=array($ya?:idf_escape(key($K)));$Z[]=where_check($wj,$o);$J=driver()->select($a,$M,$Z,$M);if($J)echo
first($J->fetch_row());}exit;}$G=$yj=array();foreach($x
as$w){if($w["type"]=="PRIMARY"){$G=array_flip($w["columns"]);$yj=($M?$G:array());foreach($yj
as$y=>$X){if(in_array(idf_escape($y),$M))unset($yj[$y]);}break;}}if($Rf&&!$G){$G=$yj=array($Rf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($Rf));}if($_POST&&!$m){$Yj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$cb=array();foreach($_POST["check"]as$Ya)$cb[]=where_check($Ya,$o);$Yj[]="((".implode(") OR (",$cb)."))";}$Yj=($Yj?"\nWHERE ".implode(" AND ",$Yj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$qd=($M?implode(", ",$M):"*").convert_fields($e,$o,$M)."\nFROM ".table($a);$zd=($xd&&$ve?"\nGROUP BY ".implode(", ",$xd):"").($ig?"\nORDER BY ".implode(", ",$ig):"");$H="SELECT $qd$Yj$zd";if(is_array($_POST["check"])&&!$G){$uj=array();foreach($_POST["check"]as$X)$uj[]="(SELECT".limit($qd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o).$zd,1).")";$H=implode(" UNION ALL ",$uj);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$md)){if($_POST["save"]||$_POST["delete"]){$I=true;$qa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$B=>$X){$X=process_input($o[$B]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($B)]=($X!==false?$X:idf_escape($B));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$ve){$I=($_POST["delete"]?driver()->delete($a,$Yj):($_POST["clone"]?queries("INSERT $H$Yj".driver()->insertReturning($a)):driver()->update($a,$O,$Yj)));$qa=connection()->affected_rows;if(is_object($I))$qa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$Xj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$o);$I=($_POST["delete"]?driver()->delete($a,$Xj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$Xj)):driver()->update($a,$O,$Xj,1)));if(!$I)break;$qa+=connection()->affected_rows;}}}$qf=lang(265,$qa);if($_POST["clone"]&&$I&&$qa==1){$Me=last_id($I);if($Me)$qf=lang(177," $Me");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$qf,$I);if(!$_POST["delete"]){$Vg=(array)$_POST["fields"];edit_form($a,array_intersect_key($o,$Vg),$Vg,!$_POST["clone"],$m);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$m=lang(266);else{$I=true;$qa=0;foreach($_POST["val"]as$wj=>$K){$O=array();foreach($K
as$y=>$X){$y=bracket_escape($y,true);$O[idf_escape($y)]=(preg_match('~char|text~',$o[$y]["type"])||$X!=""?adminer()->processInput($o[$y],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($wj,$o),($ve||$G?0:1)," ");if(!$I)break;$qa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(265,$qa),$I);}}elseif(!is_string($ad=get_file("csv_file",true)))$m=upload_error($ad);elseif(!preg_match('~~u',$ad))$m=lang(267);else{save_settings(array("output"=>$pa["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$mb=array_keys($o);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$ad,$df);$qa=count($df[0]);driver()->begin();$Vh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($df[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Vh]*)$Vh~",$X.$Vh,$ef);if(!$y&&!array_diff($ef[1],$mb)){$mb=$ef[1];$qa--;}else{$O=array();foreach($ef[1]as$t=>$jb)$O[idf_escape($mb[$t])]=($jb==""&&$o[$mb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$jb)?str_replace('""','"',substr($jb,1,-1)):$jb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang(268,$qa),$I);driver()->rollback();}}}$Di=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(54).": $Di",$m);$O=null;if(isset($Bh["insert"])||!support("table")){$_g=array();foreach((array)$_GET["where"]as$X){if(isset($md[$X["col"]])&&count($md[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$_g["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$_g?"&".http_build_query($_g):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".lang(269).($o?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$Ph,$x);adminer()->selectOrderPrint($ig,$jg,$x);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($Si);adminer()->selectActionPrint($x);echo"</form>\n";$D=$_GET["page"];$pd=null;if($D=="last"){$pd=get_val(count_rows($a,$Z,$ve,$xd));$D=floor(max(0,intval($pd)-1)/$z);}$Qh=$M;$yd=$xd;if(!$Qh){$Qh[]="*";$Cb=convert_fields($e,$o,$M);if($Cb)$Qh[]=substr($Cb,2);}foreach($M
as$y=>$X){$n=$o[idf_unescape($X)];if($n&&($ya=convert_field($n)))$Qh[$y]="$ya AS $X";}if(!$ve&&$yj){foreach($yj
as$y=>$X){$Qh[]=idf_escape($y);if($yd)$yd[]=idf_escape($y);}}$I=driver()->select($a,$Qh,$Z,$yd,$ig,$z,$D,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$D)$I->seek($z*$D);$wc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($D&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$xd&&$ve&&JUSH=="sql")$pd=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".lang(14)."\n";else{$Ga=adminer()->backwardKeys($a,$Di);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$xd&&$M?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".lang(270)."</a>");$Ef=array();$sd=array();reset($M);$mh=1;foreach($L[0]as$y=>$X){if(!isset($yj[$y])){$X=idx($_GET["columns"],key($M))?:array();$n=$o[$M?($X?$X["col"]:current($M)):$y];$B=($n?adminer()->fieldName($n,$mh):($X["fun"]?"*":h($y)));if($B!=""){$mh++;$Ef[$y]=$B;$d=idf_escape($y);$Od=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$ac="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($y))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$rd=apply_sql_function($X["fun"],$B);$ii=isset($n["privileges"]["order"])||$rd!=$B;echo($ii?"<a href='".h($Od.($ig[0]==$d||$ig[0]==$y?$ac:''))."'>$rd</a>":$rd);$pf=($ii?"<a href='".h($Od.$ac)."' title='".lang(60)."' class='text'> ↓</a>":'');if(!$X["fun"]&&isset($n["privileges"]["where"])){$pf
.='<a href="#fieldset-search" title="'.lang(57).'" class="text jsonly"> =</a>';$pf
.=script("qsl('a').onclick = partial(selectSearch, '".js_escape($y)."');");}echo($pf?"<span class='column hidden'>$pf</span>":"");}$sd[$y]=$X["fun"];next($M);}}$Se=array();if($_GET["modify"]){foreach($L
as$K){foreach($K
as$y=>$X)$Se[$y]=max($Se[$y],min(40,strlen(utf8_decode($X))));}}echo($Ga?"<th>".lang(271):"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$md)as$Cf=>$K){$vj=unique_array($L[$Cf],$x);if(!$vj){$vj=array();reset($M);foreach($L[$Cf]as$y=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($M)))$vj[$y]=$X;next($M);}}$wj="";foreach($vj
as$y=>$X){$n=(array)$o[$y];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$n["type"])&&strlen($X)>64){$y=(strpos($y,'(')?$y:idf_escape($y));$y="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$n["collation"])?$y:"CONVERT($y USING ".charset(connection()).")").")";$X=md5($X);}$wj
.="&".($X!==null?urlencode("where[".bracket_escape($y)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($y));}echo"<tr>".(!$xd&&$M?"":"<td>".checkbox("check[]",substr($wj,1),in_array(substr($wj,1),(array)$_POST["check"])).($ve||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$wj)."' class='edit'>".lang(272)."</a>"));reset($M);foreach($K
as$y=>$X){if(isset($Ef[$y])){$d=current($M);$n=(array)$o[$y];if($X!=""&&(!isset($wc[$y])||$wc[$y]!=""))$wc[$y]=(is_mail($X)?$Ef[$y]:"");$_="";if(is_blob($n)&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($y).$wj;if(!$_&&$X!==null){foreach((array)$md[$y]as$q){if(count($md[$y])==1||end($q["source"])==$y){$_="";foreach($q["source"]as$t=>$ji)$_
.=where_link($t,$q["target"][$t],$L[$Cf][$ji]);$_=($q["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($q["db"]),ME):ME).'select='.urlencode($q["table"]).$_;if($q["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($q["ns"]),$_);if(count($q["source"])==1)break;}}}if($d=="COUNT(*)"){$_=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$vj))$_
.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($vj
as$Ce=>$W)$_
.=where_link($t++,$Ce,$W);}$Pd=select_value($X,$_,$n,$Si);$u=h("val[$wj][".bracket_escape($y)."]");$Wg=idx(idx($_POST["val"],$wj),bracket_escape($y));$rc=!is_array($K[$y])&&is_utf8($Pd)&&$L[$Cf][$y]==$K[$y]&&!$sd[$y]&&!$n["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$A)?$o[idf_unescape($A[2])]["type"]:$n["type"]);$Qi=preg_match('~text|json|lob~',$U);$we=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$u'".($we&&($X===null||is_numeric(strip_tags($Pd))||$U=="money")?" class='number'":"");if(($_GET["modify"]&&$rc&&$X!==null)||$Wg!==null){$Bd=h($Wg!==null?$Wg:$K[$y]);echo">".($Qi?"<textarea name='$u' cols='30' rows='".(substr_count($K[$y],"\n")+1)."'>$Bd</textarea>":"<input name='$u' value='$Bd' size='$Se[$y]'>");}else{$Ye=strpos($Pd,"<i>…</i>");echo" data-text='".($Ye?2:($Qi?1:0))."'".($rc?"":" data-warning='".h(lang(273))."'").">$Pd";}}next($M);}if($Ga)echo"<td>";adminer()->backwardKeysPrint($Ga,$L[$Cf]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$D){$Jc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$D)))$pd=($D?$D*$z:0)+count($L);elseif(JUSH!="sql"||!$ve){$pd=($ve?false:found_rows($S,$Z));if(intval($pd)<max(1e4,2*($D+1)*$z))$pd=first(slow_query(count_rows($a,$Z,$ve,$xd)));elseif(JUSH=='sql'||JUSH=='pgsql')$Jc=false;}}$yg=($z&&($pd===false||$pd>$z||$D));if($yg)echo(($pd===false?count($L)+1:$pd-$D*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($D+1)).'" class="loadmore">'.lang(274).'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".lang(275)."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($yg){$if=($pd===false?$D+(count($L)>=$z?2:1):floor(($pd-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".lang(276)."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".lang(276)."', '".($D+1)."')); return false; };"),pagination(0,$D).($D>5?" …":"");for($t=max(1,$D-4);$t<min($if,$D+5);$t++)echo
pagination($t,$D);if($if>0)echo($D+5<$if?" …":""),($Jc&&$pd!==false?pagination($if,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$if'>".lang(277)."</a>");}else
echo"<legend>".lang(276)."</legend>",pagination(0,$D).($D>1?" …":""),($D?pagination($D,$D):""),($if>$D?pagination($D+1,$D).($if>$D+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(278)."</legend>";$gc=($Jc?"":"~ ").$pd;$bg="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$gc' : checked); selectCount('selected2', this.checked || !checked ? '$gc' : checked);";echo
checkbox("all",1,0,($pd!==false?($Jc?"":"~ ").lang(160,$pd):""),$bg)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(270),'</legend><div>
<input type="submit" value="',lang(16),'"',($_GET["modify"]?'':' title="'.lang(266).'"'),'>
</div></fieldset>
<fieldset><legend>',lang(132),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',lang(12),'">
<input type="submit" name="clone" value="',lang(262),'">
<input type="submit" name="delete" value="',lang(20),'">',confirm(),'</div></fieldset>
';$nd=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($nd['sql']);break;}}if($nd){print_fieldset("export",lang(77)." <span id='selected2'></span>");$vg=adminer()->dumpOutput();echo($vg?html_select("output",$vg,$pa["output"])." ":""),html_select("format",$nd,$pa["format"])," <input type='submit' name='export' value='".lang(77)."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($wc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import'>".lang(76)."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input("<input type='file' name='csv_file'> ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$pa["format"])." <input type='submit' name='import' value='".lang(76)."'>"),"</span>";echo
input_token(),"</form>\n",(!$xd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(124):lang(123));$Oj=($P?adminer()->showStatus():adminer()->showVariables());if(!$Oj)echo"<p class='message'>".lang(14)."\n";else{echo"<table>\n";foreach($Oj
as$K){echo"<tr>";$y=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($y)."</code>";foreach($K
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$_i=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$B=>$S){json_row("Comment-$B",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$y)json_row("$y-$B",h($S[$y]));foreach($_i+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=format_number($S[$y]);if($X>=0)json_row("$y-$B",($y=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($_i[$y]))$_i[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))json_row("$y-$B","?");}}}foreach($_i
as$y=>$X)json_row("sum-$y",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$k=>$X){json_row("tables-$k",$X);json_row("size-$k",db_size($k));}json_row("");}exit;}else{$Ki=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Ki&&!$m&&!$_POST["search"]){$I=true;$qf="";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"])$I=truncate_tables($_POST["tables"]);$qf=lang(279);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$qf=lang(280);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$qf=lang(281);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$qf=lang(282);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$qf
.="<b>".h($R)."</b>: ".h($K["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$qf=lang(283);}elseif(!$_POST["tables"])$qf=lang(11);elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$qf
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$qf,$I);}page_header(($_GET["ns"]==""?lang(38).": ".h(DB):lang(80).": ".h($_GET["ns"])),$m,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(284)."</h3>\n";$Ji=tables_list();if(!$Ji)echo"<p class='message'>".lang(11)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(285)." <span id='selected2'></span></legend><div>",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," <input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".lang(57)."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),'<th>'.lang(139);$e=array("Engine"=>array(lang(286).doc_link(array('sql'=>'storage-engines.html'))));if(collations())$e["Collation"]=array(lang(128).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$e["Data_length"]=array(lang(287).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),"create",lang(45));if(support('indexes'))$e["Index_length"]=array(lang(288).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),"indexes",lang(142));$e["Data_free"]=array(lang(289).doc_link(array('sql'=>'show-table-status.html')),"edit",lang(46));if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=array(lang(52).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",lang(45));$e["Rows"]=array(lang(290).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),"select",lang(42));if(support("comment"))$e["Comment"]=array(lang(51).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')));foreach($e
as$d)echo"<td>$d[0]";echo"</thead>\n";$T=0;foreach($Ji
as$B=>$U){$Rj=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$B);echo'<tr><td>'.checkbox(($Rj?"views[]":"tables[]"),$B,in_array("$B",$Ki,true),"","","",$u),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($B)."' title='".lang(43)."' id='$u'>".h($B).'</a>':h($B));if($Rj&&!preg_match('~materialized~i',$U)){$Wi=lang(138);echo'<td colspan="6">'.(support("view")?"<a href='".h(ME)."view=".urlencode($B)."' title='".lang(44)."'>$Wi</a>":$Wi),'<td align="right"><a href="'.h(ME)."select=".urlencode($B).'" title="'.lang(42).'">?</a>';}else{foreach($e
as$y=>$d){$u=" id='$y-".h($B)."'";echo($d[1]?"<td align='right'><a href='".h(ME."$d[1]=").urlencode($B)."'$u title='$d[2]'>?</a>":"<td id='$y-".h($B)."'>");}$T++;}echo"\n";}echo"<tr><td><th>".lang(263,count($Ji)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo($e[$y]?"<td align='right' id='sum-$y'>":"");echo"\n","</table>\n",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"</div>\n";if(!information_schema(DB)){$Lj="<input type='submit' value='".lang(291)."'> ".on_help("'VACUUM'");$eg="<input type='submit' name='optimize' value='".lang(292)."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");$bh=(JUSH=="sqlite"?$Lj."<input type='submit' name='check' value='".lang(293)."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Lj.$eg:(JUSH=="sql"?"<input type='submit' value='".lang(294)."'> ".on_help("'ANALYZE TABLE'").$eg."<input type='submit' name='check' value='".lang(293)."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".lang(295)."'> ".on_help("'REPAIR TABLE'"):""))).(function_exists('Adminer\truncate_tables')?"<input type='submit' name='truncate' value='".lang(296)."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm():"").(function_exists('Adminer\drop_tables')?"<input type='submit' name='drop' value='".lang(133)."'>".on_help("'DROP TABLE'").confirm():"");echo($bh?"<div class='footer'><div>\n<fieldset><legend>".lang(132)." <span id='selected'></span></legend><div>$bh\n</div></fieldset>\n":"");$j=(support("scheme")?adminer()->schemas():adminer()->databases());$Nh="";if(count($j)!=1&&JUSH!="sqlite"){echo"<fieldset><legend>".lang(297)." <span id='selected3'></span></legend><div>";$k=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo($j?html_select("target",$j,$k):'<input name="target" value="'.h($k).'" autocapitalize="off">'),"</label> <input type='submit' name='move' value='".lang(298)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(299)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(300)):""),"</div></fieldset>\n";$Nh=" selectCount('selected3', formChecked(this, /^(tables|views)\[/));";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")."$Nh }"),input_token(),"</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"<p class='links'><a href='".h(ME)."create='>".lang(78)."</a>\n":''),(support("view")?"<a href='".h(ME)."view='>".lang(216)."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".lang(73)."</h3>\n";$Fh=routines();if($Fh){echo"<table class='odds'>\n",'<thead><tr><th>'.lang(194).'<td>'.lang(50).'<td>'.lang(233)."<td></thead>\n";foreach($Fh
as$K){$B=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["SPECIFIC_NAME"]).$B).'">'.lang(145)."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(232).'</a>':'').'<a href="'.h(ME).'function=">'.lang(231)."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".lang(74)."</h3>\n";$Yh=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Yh){echo"<table class='odds'>\n","<thead><tr><th>".lang(194)."</thead>\n";foreach($Yh
as$X)echo"<tr><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".lang(238)."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".lang(6)."</h3>\n";$Ij=types();if($Ij){echo"<table class='odds'>\n","<thead><tr><th>".lang(194)."</thead>\n";foreach($Ij
as$X)echo"<tr><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".lang(242)."</a>\n";}if(support("event")){echo"<h3 id='events'>".lang(75)."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".lang(194)."<td>".lang(301)."<td>".lang(222)."<td>".lang(223)."<td></thead>\n";foreach($L
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?lang(302)."<td>".$K["Execute at"]:lang(224)." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.lang(145).'</a>';echo"</table>\n";$Hc=get_val("SELECT @@event_scheduler");if($Hc&&$Hc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Hc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.lang(221)."</a>\n";}}}}page_footer();